@mediusinc/mng-commons 5.3.0-rc.0 → 5.3.0-rc.1
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/core/components/pages/error/error.page.component.d.ts +3 -0
- package/core/components/pages/not-found/not-found.page.component.d.ts +3 -0
- package/core/enum/enum-helpers.d.ts +5 -0
- package/core/index.d.ts +1 -1
- package/core/services/{local-storage-config.service.d.ts → commons-storage.service.d.ts} +4 -3
- package/core/services/commons.service.d.ts +24 -0
- package/core/services/tokens/module-config.token.d.ts +23 -2
- package/esm2022/core/components/pages/error/error.page.component.mjs +4 -1
- package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +4 -1
- package/esm2022/core/enum/enum-helpers.mjs +10 -1
- package/esm2022/core/index.mjs +2 -2
- package/esm2022/core/pipes/enum.pipe.mjs +16 -5
- package/esm2022/core/provide.mjs +3 -3
- package/esm2022/core/router/route-builder.mjs +8 -1
- package/esm2022/core/security/permission.guard.mjs +2 -2
- package/esm2022/core/security/permission.service.mjs +2 -2
- package/esm2022/core/services/commons-storage.service.mjs +31 -0
- package/esm2022/core/services/commons.service.mjs +25 -1
- package/esm2022/core/services/tokens/module-config.token.mjs +1 -1
- package/esm2022/table/components/table/table.component.mjs +6 -6
- package/fesm2022/mediusinc-mng-commons-core.mjs +72 -14
- package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
- package/fesm2022/mediusinc-mng-commons-table.mjs +5 -5
- package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
- package/i18n/en.json +8 -0
- package/i18n/sl.json +8 -0
- package/package.json +1 -1
- package/table/components/table/table.component.d.ts +1 -1
- package/version-info.json +5 -5
- package/esm2022/core/services/local-storage-config.service.mjs +0 -29
|
@@ -315,6 +315,13 @@ export class RouteBuilder {
|
|
|
315
315
|
if (finalChild.routerLink) {
|
|
316
316
|
finalChild.routerLink = removeRouteEmptyPathSegments(finalChild.routerLink);
|
|
317
317
|
}
|
|
318
|
+
// Propagate permissions to children
|
|
319
|
+
if (!finalChild.permissions && this.routeData.permissions) {
|
|
320
|
+
finalChild.permissions = this.routeData.permissions;
|
|
321
|
+
}
|
|
322
|
+
if (!finalChild.permissions && this.permissions) {
|
|
323
|
+
finalChild.permissions = this.permissions;
|
|
324
|
+
}
|
|
318
325
|
return finalChild;
|
|
319
326
|
};
|
|
320
327
|
this.menuItemChildren.forEach(child => menuItemChildren.push(processMenuItemChild(child)));
|
|
@@ -421,4 +428,4 @@ export function createLazyRoute(path, loadComponent, canMatch) {
|
|
|
421
428
|
}
|
|
422
429
|
return new RouteBuilder(route);
|
|
423
430
|
}
|
|
424
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3JvdXRlci9yb3V0ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRTlELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQU83RCxNQUFNLE9BQU8sWUFBWTtJQWNyQixZQUFtQixLQUFZO1FBWnZCLGNBQVMsR0FBa0IsRUFBRSxDQUFDO1FBQzVCLGNBQVMsR0FBcUIsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFHbkQsYUFBUSxHQUF3QixFQUFFLENBQUM7UUFHbkMscUJBQWdCLEdBQTJCLEVBQUUsQ0FBQztRQUM5QywwQkFBcUIsR0FBMkIsRUFBRSxDQUFDLENBQUMsOEJBQThCO1FBS3RGLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxhQUE0QjtRQUN4QyxJQUFJLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxNQUFvQjtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLDRCQUE0QixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFB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Q0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQUMsSUFBWSxFQUFFLFlBQTBCLEVBQUUsUUFBcUI7SUFDbkcsTUFBTSxLQUFLLEdBQVUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUMsQ0FBQztJQUM5RCxJQUFJLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUNuQixLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDO0lBQ0QsT0FBTyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQzNCLElBQVksRUFDWixhQUFxSixFQUNySixRQUFxQjtJQUVyQixNQUFNLEtBQUssR0FBVSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBQyxDQUFDO0lBQ2hFLElBQUksUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ25CLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFDRCxPQUFPLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Vudmlyb25tZW50UHJvdmlkZXJzLCBQcm92aWRlciwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NhbkFjdGl2YXRlRm4sIENhbkRlYWN0aXZhdGVGbiwgRGVmYXVsdEV4cG9ydCwgTG9hZENoaWxkcmVuLCBSZXNvbHZlRm4sIFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge3JlbW92ZVJvdXRlRW1wdHlQYXRoU2VnbWVudHN9IGZyb20gJy4uL2hlbHBlcnMvcm91dGUnO1xuaW1wb3J0IHtDb21tb25zTWVudUl0ZW19IGZyb20gJy4uL21vZGVscy9tZW51Lm1vZGVsJztcbmltcG9ydCB7cGVybWlzc2lvbkd1YXJkfSBmcm9tICcuLi9zZWN1cml0eS9wZXJtaXNzaW9uLmd1YXJkJztcbmltcG9ydCB7QVBlcm1pc3Npb25zfSBmcm9tICcuLi9zZWN1cml0eS9wZXJtaXNzaW9ucy5tb2RlbCc7XG5pbXBvcnQge0JyZWFkY3J1bWJUeXBlLCBDb21tb25zUm91dGVEYXRhfSBmcm9tICcuL3JvdXRlci5tb2RlbCc7XG5pbXBvcnQge1JvdXRlc0J1aWxkZXJ9IGZyb20gJy4vcm91dGVzLWJ1aWxkZXInO1xuXG5leHBvcnQgdHlwZSBSb3V0ZUJ1aWxkZXJBZGp1c3RGblR5cGUgPSAoYnVpbGRlcjogUm91dGVCdWlsZGVyKSA9PiB2b2lkO1xuXG5leHBvcnQgY2xhc3MgUm91dGVCdWlsZGVyIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcm91dGU6IFJvdXRlO1xuICAgIHByaXZhdGUgcm91dGVQYXRoOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgcHJvdGVjdGVkIHJvdXRlRGF0YTogQ29tbW9uc1JvdXRlRGF0YSA9IHticmVhZGNydW1iOiBudWxsfTtcbiAgICBwcml2YXRlIHJvb3Q/OiBSb3V0ZXNCdWlsZGVyO1xuICAgIHByaXZhdGUgcGFyZW50PzogUm91dGVCdWlsZGVyO1xuICAgIHByaXZhdGUgY2hpbGRyZW46IEFycmF5PFJvdXRlQnVpbGRlcj4gPSBbXTtcblxuICAgIHByaXZhdGUgbWVudUl0ZW0/OiBDb21tb25zTWVudUl0ZW07XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNoaWxkcmVuOiBBcnJheTxDb21tb25zTWVudUl0ZW0+ID0gW107XG4gICAgcHJpdmF0ZSBtZW51SXRlbUNoaWxkcmVuQWZ0ZXI6IEFycmF5PENvbW1vbnNNZW51SXRlbT4gPSBbXTsgLy8gYXBwZW5kIGFmdGVyIHJvdXRlIGNoaWxkcmVuXG5cbiAgICBwcml2YXRlIHBlcm1pc3Npb25zPzogQVBlcm1pc3Npb25zO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHJvdXRlOiBSb3V0ZSkge1xuICAgICAgICB0aGlzLnJvdXRlID0gcm91dGU7XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnBhdGggJiYgdGhpcy5yb3V0ZS5wYXRoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMucm91dGVQYXRoID0gW3RoaXMucm91dGUucGF0aF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBsaW5rIHRvIHJvb3QgUm91dGVzIGJ1aWxkZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JvdXRlc0J1aWxkZXJ9IHJvdXRlc0J1aWxkZXIgLSBUaGUgcm91dGVzIGJ1aWxkZXIgdG8gc2V0IGFzIHRoZSByb290LlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoUm9vdChyb3V0ZXNCdWlsZGVyOiBSb3V0ZXNCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMucm9vdCA9IHJvdXRlc0J1aWxkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGxpbmsgdG8gcGFyZW50IFJvdXRlIGJ1aWxkZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JvdXRlQnVpbGRlcn0gcGFyZW50IC0gVGhlIHBhcmVudCByb3V0ZSBidWlsZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoUGFyZW50KHBhcmVudDogUm91dGVCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLnJvdXRlUGF0aCA9IHJlbW92ZVJvdXRlRW1wdHlQYXRoU2VnbWVudHMoWy4uLnRoaXMucGFyZW50LnJvdXRlUGF0aCwgdGhpcy5yb3V0ZS5wYXRoID8/ICcnXSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGJyZWFkY3J1bWIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0JyZWFkY3J1bWJUeXBlfSBicmVhZGNydW1iIC0gQnJlYWRjcnVtYiBjb25maWd1cmF0aW9uLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQnJlYWRjcnVtYihicmVhZGNydW1iOiBCcmVhZGNydW1iVHlwZSk6IHRoaXMge1xuICAgICAgICB0aGlzLnJvdXRlRGF0YS5icmVhZGNydW1iID0gYnJlYWRjcnVtYjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcGFnZSB0aXRsZSBmb3IgdGhlIGN1cnJlbnQgcm91dGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGFnZVRpdGxlIC0gVGhlIHRpdGxlIG9mIHRoZSBwYWdlLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoUGFnZVRpdGxlKHBhZ2VUaXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMucm91dGVEYXRhLnBhZ2VUaXRsZSA9IHBhZ2VUaXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcGFnZSB0aXRsZSBhbmQgdGhlIGJyZWFkY3J1bWIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGl0bGUgLSBUaGUgdGl0bGUgb2YgdGhlIHBhZ2UgYW5kIGJyZWFkY3J1bWIuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhUaXRsZSh0aXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMud2l0aFBhZ2VUaXRsZSh0aXRsZSk7XG4gICAgICAgIHRoaXMud2l0aEJyZWFkY3J1bWIodGl0bGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgY2FuIGFjdGl2YXRlIGd1YXJkIHRvIHJvdXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtDYW5BY3RpdmF0ZUZufSBmbiAtIFRoZSBDYW5BY3RpdmF0ZSBmdW5jdGlvbiB0byBiZSBhZGRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aENhbkFjdGl2YXRlKGZuOiBDYW5BY3RpdmF0ZUZuKTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGUuY2FuQWN0aXZhdGUucHVzaChmbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBjYW4gZGVhY3RpdmF0ZSBndWFyZCB0byByb3V0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Q2FuRGVhY3RpdmF0ZUZufSBmbiAtIFRoZSBDYW5BY3RpdmF0ZSBmdW5jdGlvbiB0byBiZSBhZGRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aENhbkRlYWN0aXZhdGUoZm46IENhbkRlYWN0aXZhdGVGbjxhbnk+KTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy5yb3V0ZS5jYW5EZWFjdGl2YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGUgPSBbXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGUucHVzaChmbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSByZXNvbHZlciB0byByb3V0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gTmFtZSBvZiB0aGUgcmVzb2x2ZXIuXG4gICAgICogQHBhcmFtIHtDYW5EZWFjdGl2YXRlRm59IGZuIC0gVGhlIENhbkFjdGl2YXRlIGZ1bmN0aW9uIHRvIGJlIGFkZGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoUmVzb2x2ZXIobmFtZTogc3RyaW5nLCBmbjogUmVzb2x2ZUZuPGFueT4pOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlLnJlc29sdmUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGUucmVzb2x2ZSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGUucmVzb2x2ZVtuYW1lXSA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgcHJvdmlkZXIgdG8gdGhlIHJvdXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzfSBwcm92aWRlciAtIFRoZSBwcm92aWRlciB0byBhZGQuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhQcm92aWRlcihwcm92aWRlcjogUHJvdmlkZXIgfCBFbnZpcm9ubWVudFByb3ZpZGVycyk6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMucm91dGUucHJvdmlkZXJzKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLnByb3ZpZGVycyA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGUucHJvdmlkZXJzLnB1c2gocHJvdmlkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBkYXRhIGZvciB0aGUgcm91dGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0NvbW1vbnNSb3V0ZURhdGF9IGRhdGEgLSBUaGUgZGF0YSB0byBzZXQgZm9yIHRoZSByb3V0ZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFttZXJnZT10cnVlXSAtIElmIHRoZSBkYXRhIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBjdXJyZW50IGRhdGEgc2V0dXAgKHRydWUgYnkgZGVmYXVsdCkgLSBwYWdlIHRpdGxlIGFuZCBicmVhZGNydW1iIGNvbmZpZyBhcmUgY2FycmllZCBvdmVyLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoRGF0YShkYXRhOiBDb21tb25zUm91dGVEYXRhLCBtZXJnZSA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5yb3V0ZURhdGEgPSBtZXJnZVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAuLi50aGlzLnJvdXRlRGF0YSxcbiAgICAgICAgICAgICAgICAgIC4uLmRhdGFcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICBicmVhZGNydW1iOiBudWxsLFxuICAgICAgICAgICAgICAgICAgLi4uZGF0YVxuICAgICAgICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBVcGRhdGVzIHRoZSBtZW51IGl0ZW0gb2Ygcm91dGUuIE1lcmdpbmcgd2l0aCBjdXJyZW50IGNvbmZpZ3VyYXRpb24gKHNldCB3aXRoIHt3aXRoTWVudUl0ZW19KSB0YWtlcyBwbGFjZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Q29tbW9uc01lbnVJdGVtfSBvcHRzIC0gVGhlIG9wdHMgcHJvcGVydGllcyB0byBiZSBtZXJnZWQgb24gZXhpc3RpbmcgbWVudSBpdGVtIGZvciByb3V0ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aE1lbnVJdGVtT3B0cyhvcHRzOiBDb21tb25zTWVudUl0ZW0pOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLm1lbnVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tZW51SXRlbSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMubWVudUl0ZW0sXG4gICAgICAgICAgICAuLi5vcHRzXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIG1lbnUgaXRlbSAoYmFzaWMpLiBGb3IgbW9yZSBvcHRpb25zLCBzZWUgdGhlIHt3aXRoTWVudUl0ZW1Gcm9tT3B0c30uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2ljb25dIC0gVGhlIGljb24gZm9yIHRoZSBtZW51IGl0ZW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtsYWJlbF0gLSBUaGUgbGFiZWwgZm9yIHRoZSBtZW51IGl0ZW0uXG4gICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBbcm91dGVyTGlua10gLSBUaGUgcm91dGVyIGxpbmsgZm9yIHRoZSBtZW51IGl0ZW0uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbYnJlYWRjcnVtYj1mYWxzZV0gLSBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNwbGF5IGJyZWFkY3J1bWIgZm9yIHRoZSBtZW51IGl0ZW0uXG4gICAgICovXG4gICAgcHVibGljIHdpdGhNZW51SXRlbShpY29uPzogc3RyaW5nLCBsYWJlbD86IHN0cmluZywgcm91dGVyTGluaz86IEFycmF5PHN0cmluZz4sIGJyZWFkY3J1bWIgPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICB0aGlzLm1lbnVJdGVtID0gY3JlYXRlTWVudUl0ZW0oaWNvbiwgbGFiZWwsIHJvdXRlckxpbmspO1xuICAgICAgICBpZiAoYnJlYWRjcnVtYiAmJiBsYWJlbCkge1xuICAgICAgICAgICAgdGhpcy53aXRoQnJlYWRjcnVtYih7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIG1lbnUgaXRlbSBjaGlsZCB0byByb3V0ZSdzIG1lbnUgaXRlbS4gSWYgbm8gbWVudSBpdGVtIGlzIHByZXNlbnQsIGNoaWxkcmVuIHdpbGwgYmUgYXBwZW5kZWQgZGlyZWN0bHkgdG8gcGFyZW50L3Jvb3QgbWVudSBpdGVtLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtpY29uXSAtIFRoZSBpY29uIGZvciB0aGUgbWVudSBpdGVtLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGFiZWxdIC0gVGhlIGxhYmVsIGZvciB0aGUgbWVudSBpdGVtLlxuICAgICAqIEBwYXJhbSB7QXJyYXk8c3RyaW5nPn0gW3JvdXRlckxpbmtdIC0gVGhlIHJvdXRlciBsaW5rIGZvciB0aGUgbWVudSBpdGVtLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2FmdGVyUm91dGVDaGlsZHJlbj1mYWxzZV0gSWYgZmFsc2UsIG1lbnUgaXRlbSBjaGlsZCB3aWxsIGJlIGFwcGVuZGVkIGJlZm9yZSByb3V0ZSdzIGNoaWxkcmVuIG1lbnUgaXRlbXMsIGF0IHRoZSBlbmQgb3RoZXJ3aXNlLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoTWVudUl0ZW1DaGlsZChpY29uPzogc3RyaW5nLCBsYWJlbD86IHN0cmluZywgcm91dGVyTGluaz86IEFycmF5PHN0cmluZz4sIGFmdGVyUm91dGVDaGlsZHJlbiA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIGlmIChhZnRlclJvdXRlQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DaGlsZHJlbkFmdGVyLnB1c2goY3JlYXRlTWVudUl0ZW0oaWNvbiwgbGFiZWwsIHJvdXRlckxpbmspKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DaGlsZHJlbi5wdXNoKGNyZWF0ZU1lbnVJdGVtKGljb24sIGxhYmVsLCByb3V0ZXJMaW5rKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBtZW51IGl0ZW0gY2hpbGQgZnJvbSBvcHRzIHRvIHJvdXRlJ3MgbWVudSBpdGVtLiBJZiBubyBtZW51IGl0ZW0gaXMgcHJlc2VudCwgY2hpbGRyZW4gd2lsbCBiZSBhcHBlbmRlZCBkaXJlY3RseSB0byBwYXJlbnQvcm9vdCBtZW51IGl0ZW0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0NvbW1vbnNNZW51SXRlbX0gb3B0cyAtIFRoZSBvcHRzIHByb3BlcnRpZXMgdG8gYmUgbWVyZ2VkIG9uIGV4aXN0aW5nIG1lbnUgaXRlbSBmb3Igcm91dGUuXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbYWZ0ZXJSb3V0ZUNoaWxkcmVuPWZhbHNlXSBJZiBmYWxzZSwgbWVudSBpdGVtIGNoaWxkIHdpbGwgYmUgYXBwZW5kZWQgYmVmb3JlIHJvdXRlJ3MgY2hpbGRyZW4gbWVudSBpdGVtcywgYXQgdGhlIGVuZCBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhNZW51SXRlbUNoaWxkRnJvbU9wdHMob3B0czogQ29tbW9uc01lbnVJdGVtLCBhZnRlclJvdXRlQ2hpbGRyZW4gPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICBpZiAoYWZ0ZXJSb3V0ZUNoaWxkcmVuKSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ2hpbGRyZW5BZnRlci5wdXNoKG9wdHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNoaWxkcmVuLnB1c2gob3B0cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWVudSBpdGVtJ3MgY2hpbGRyZW4gdG8gYmUgZ2VuZXJhdGVkIGxhemlseSBmcm9tIHJvdXRlJ3MgbGF6eSBsb2FkZWQgcm91dGVzIGFmdGVyIHRoZSBjaHVuayBpcyBsb2FkZWQgdG8gcnVudGltZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aE1lbnVJdGVtTGF6eUNoaWxkcmVuKCk6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMubWVudUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lbnVJdGVtLmxhenlDaGlsZHJlbiA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHBlcm1pc3Npb25zIG9uIHRoZSByb3V0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QVBlcm1pc3Npb25zfSBwZXJtaXNzaW9ucyAtIFRoZSBwZXJtaXNzaW9ucyB0byBiZSBzZXQgb24gdGhlIHJvdXRlLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoUGVybWlzc2lvbnMocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucyk6IHRoaXMge1xuICAgICAgICB0aGlzLnBlcm1pc3Npb25zID0gcGVybWlzc2lvbnM7XG4gICAgICAgIHRoaXMud2l0aENhbkFjdGl2YXRlKHBlcm1pc3Npb25HdWFyZCk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBjaGlsZCByb3V0ZSB0byB0aGUgY3VycmVudCByb3V0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGNoaWxkIHJvdXRlLlxuICAgICAqIEBwYXJhbSB7VHlwZTxhbnk+fSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgY2hpbGQgcm91dGUuXG4gICAgICogQHBhcmFtIHtSb3V0ZUJ1aWxkZXJBZGp1c3RGblR5cGV9IFthZGp1c3RGbl0gLSBBbiBvcHRpb25hbCBmdW5jdGlvbiB0byBhZGp1c3QgdGhlIGNoaWxkIHJvdXRlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgcHVibGljIGFkZENoaWxkKHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPGFueT4sIGFkanVzdEZuPzogUm91dGVCdWlsZGVyQWRqdXN0Rm5UeXBlKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGNoaWxkUm91dGVCdWlsZGVyID0gY3JlYXRlUm91dGUocGF0aCwgY29tcG9uZW50KTtcbiAgICAgICAgYWRqdXN0Rm4/LihjaGlsZFJvdXRlQnVpbGRlcik7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZENoaWxkQnVpbGRlcihjaGlsZFJvdXRlQnVpbGRlcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGNoaWxkIGJ1aWxkZXIgdG8gdGhlIGN1cnJlbnQgcm91dGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JvdXRlQnVpbGRlcn0gYnVpbGRlciAtIFRoZSBjaGlsZCBidWlsZGVyIHRvIGJlIGFkZGVkLlxuICAgICAqIEByZXR1cm4ge3RoaXN9IC0gVGhlIGN1cnJlbnQgYnVpbGRlciB3aXRoIHRoZSBhZGRlZCBjaGlsZCBidWlsZGVyLlxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRDaGlsZEJ1aWxkZXIoYnVpbGRlcjogUm91dGVCdWlsZGVyKTogdGhpcyB7XG4gICAgICAgIGJ1aWxkZXIud2l0aFBhcmVudCh0aGlzKTtcbiAgICAgICAgaWYgKHRoaXMucm9vdCkge1xuICAgICAgICAgICAgYnVpbGRlci53aXRoUm9vdCh0aGlzLnJvb3QpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaChidWlsZGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnVpbGRzIGFuIEFuZ3VsYXIgcm91dGUgYmFzZWQgb24gY29uZmlndXJhdGlvbnMuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7Um91dGV9IFRoZSBidWlsdCBBbmd1bGFyIHJvdXRlLlxuICAgICAqL1xuICAgIHB1YmxpYyBidWlsZCgpOiBSb3V0ZSB7XG4gICAgICAgIGNvbnN0IGFuZ3VsYXJSb3V0ZTogUm91dGUgPSB7XG4gICAgICAgICAgICAuLi50aGlzLnJvdXRlXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGFuZ3VsYXJSb3V0ZS5kYXRhKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAuLi5hbmd1bGFyUm91dGUuZGF0YSxcbiAgICAgICAgICAgICAgICAuLi50aGlzLnJvdXRlRGF0YVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5kYXRhID0gey4uLnRoaXMucm91dGVEYXRhfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGFwcGVuZCBwZXJtaXNzaW9ucyBpZiBub3QgYWxyZWFkeSBpbiByb3V0ZSBkYXRhXG4gICAgICAgIGlmICh0aGlzLnBlcm1pc3Npb25zICYmICEoYW5ndWxhclJvdXRlLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YSkucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIChhbmd1bGFyUm91dGUuZGF0YSBhcyBDb21tb25zUm91dGVEYXRhKS5wZXJtaXNzaW9ucyA9IHRoaXMucGVybWlzc2lvbnM7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZW51ID0gdGhpcy5idWlsZE1lbnUoKTtcbiAgICAgICAgaWYgKG1lbnUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgKGFuZ3VsYXJSb3V0ZS5kYXRhIGFzIENvbW1vbnNSb3V0ZURhdGEpLm1lbnVJdGVtcyA9IG1lbnU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKHRoaXMucm91dGUuY2hpbGRyZW4/Lmxlbmd0aCA/PyAwKSA+IDAgfHwgdGhpcy5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAvLyByb3V0ZSBoYXMgY2hpbGRyZW5cbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jaGlsZHJlbiA9IFtdO1xuICAgICAgICAgICAgaWYgKHRoaXMucm91dGUuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jaGlsZHJlbi5wdXNoKC4uLnRoaXMucm91dGUuY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjaGlsZFJvdXRlIG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNoaWxkcmVuLnB1c2goY2hpbGRSb3V0ZS5idWlsZCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZSkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNhbkFjdGl2YXRlID0gWy4uLnRoaXMucm91dGUuY2FuQWN0aXZhdGVdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkFjdGl2YXRlQ2hpbGQpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jYW5BY3RpdmF0ZUNoaWxkID0gWy4uLnRoaXMucm91dGUuY2FuQWN0aXZhdGVDaGlsZF07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGUuY2FuTG9hZCkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNhbkxvYWQgPSBbLi4udGhpcy5yb3V0ZS5jYW5Mb2FkXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5jYW5EZWFjdGl2YXRlKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2FuRGVhY3RpdmF0ZSA9IFsuLi50aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGVdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLnJlc29sdmUpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5yZXNvbHZlID0gey4uLnRoaXMucm91dGUucmVzb2x2ZX07XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYW5ndWxhclJvdXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEJ1aWxkcyB0aGUgbWVudSBpdGVtcy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtBcnJheTxDb21tb25zTWVudUl0ZW0+fSAtIFRoZSBidWlsdCBtZW51IGl0ZW1zLlxuICAgICAqL1xuICAgIHByaXZhdGUgYnVpbGRNZW51KCk6IEFycmF5PENvbW1vbnNNZW51SXRlbT4ge1xuICAgICAgICBjb25zdCBtZW51SXRlbUJ1aWxkOiBDb21tb25zTWVudUl0ZW0gfCBudWxsID0gdGhpcy5tZW51SXRlbSA/IHsuLi50aGlzLm1lbnVJdGVtfSA6IG51bGw7XG4gICAgICAgIGNvbnN0IHJvdXRlQ2hpbGRyZW5NZW51SXRlbXM6IEFycmF5PENvbW1vbnNNZW51SXRlbT4gPSB0aGlzLmNoaWxkcmVuLmZsYXRNYXAoY2hpbGQgPT4gY2hpbGQuYnVpbGRNZW51KCkpO1xuICAgICAgICBjb25zdCBtZW51SXRlbUNoaWxkcmVuOiBBcnJheTxDb21tb25zTWVudUl0ZW0+ID0gW107XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtQ2hpbGRyZW5CdWlsZDogQXJyYXk8Q29tbW9uc01lbnVJdGVtPiA9IFtdO1xuXG4gICAgICAgIGlmIChtZW51SXRlbUJ1aWxkPy5pdGVtcykge1xuICAgICAgICAgICAgbWVudUl0ZW1DaGlsZHJlbkJ1aWxkLnB1c2goLi4ubWVudUl0ZW1CdWlsZC5pdGVtcyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwcm9jZXNzTWVudUl0ZW1DaGlsZCA9IChjaGlsZDogQ29tbW9uc01lbnVJdGVtKTogQ29tbW9uc01lbnVJdGVtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpbmFsQ2hpbGQ6IENvbW1vbnNNZW51SXRlbSA9IHsuLi5jaGlsZH07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpbmFsQ2hpbGQucm91dGVyTGluayA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICBmaW5hbENoaWxkLnJvdXRlckxpbmsgPSB0aGlzLnJvdXRlUGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmluYWxDaGlsZC5yb3V0ZXJMaW5rID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGZpbmFsQ2hpbGQucm91dGVyTGluayA9IFtmaW5hbENoaWxkLnJvdXRlckxpbmtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGZpbmFsQ2hpbGQucm91dGVyTGluaykge1xuICAgICAgICAgICAgICAgIGZpbmFsQ2hpbGQucm91dGVyTGluayA9IHJlbW92ZVJvdXRlRW1wdHlQYXRoU2VnbWVudHMoZmluYWxDaGlsZC5yb3V0ZXJMaW5rKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaW5hbENoaWxkO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMubWVudUl0ZW1DaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IG1lbnVJdGVtQ2hpbGRyZW4ucHVzaChwcm9jZXNzTWVudUl0ZW1DaGlsZChjaGlsZCkpKTtcblxuICAgICAgICBjb25zdCBtZW51SXRlbUNoaWxkcmVuQWZ0ZXJCdWlsZDogQXJyYXk8Q29tbW9uc01lbnVJdGVtPiA9IHRoaXMubWVudUl0ZW1DaGlsZHJlbkFmdGVyLm1hcChjaGlsZCA9PiBwcm9jZXNzTWVudUl0ZW1DaGlsZChjaGlsZCkpO1xuXG4gICAgICAgIG1lbnVJdGVtQ2hpbGRyZW5CdWlsZC5wdXNoKC4uLm1lbnVJdGVtQ2hpbGRyZW4sIC4uLnJvdXRlQ2hpbGRyZW5NZW51SXRlbXMsIC4uLm1lbnVJdGVtQ2hpbGRyZW5BZnRlckJ1aWxkKTtcblxuICAgICAgICBpZiAoIW1lbnVJdGVtQnVpbGQpIHtcbiAgICAgICAgICAgIHJldHVybiBtZW51SXRlbUNoaWxkcmVuQnVpbGQ7XG4gICAgICAgIH1cblxuICAgICAgICBtZW51SXRlbUJ1aWxkLmxhYmVsID0gbWVudUl0ZW1CdWlsZC5sYWJlbCA/PyB0aGlzLnJvdXRlRGF0YS5wYWdlVGl0bGU7XG4gICAgICAgIGlmICh0eXBlb2YgbWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgbWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rID0gW21lbnVJdGVtQnVpbGQucm91dGVyTGlua107XG4gICAgICAgIH1cbiAgICAgICAgbWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rID0gcmVtb3ZlUm91dGVFbXB0eVBhdGhTZWdtZW50cyhtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPz8gdGhpcy5yb3V0ZVBhdGgpO1xuICAgICAgICBpZiAobWVudUl0ZW1DaGlsZHJlbkJ1aWxkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIG1lbnVJdGVtQnVpbGQuaXRlbXMgPSBtZW51SXRlbUNoaWxkcmVuQnVpbGQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW1lbnVJdGVtQnVpbGQucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIG1lbnVJdGVtQnVpbGQucGVybWlzc2lvbnMgPSB0aGlzLmZpbmRNZW51SXRlbVBlcm1pc3Npb25zKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW21lbnVJdGVtQnVpbGRdO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaW5kTWVudUl0ZW1QZXJtaXNzaW9ucygpIHtcbiAgICAgICAgaWYgKHRoaXMubWVudUl0ZW0/LnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tZW51SXRlbS5wZXJtaXNzaW9ucztcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZURhdGEucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgaXMgYWxyZWFkeSBidWlsdFxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucm91dGVEYXRhLnBlcm1pc3Npb25zO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZXJtaXNzaW9ucztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlTWVudUl0ZW0oaWNvbj86IHN0cmluZywgbGFiZWw/OiBzdHJpbmcsIHJvdXRlckxpbms/OiBBcnJheTxzdHJpbmc+KSB7XG4gICAgY29uc3QgbWVudUl0ZW06IENvbW1vbnNNZW51SXRlbSA9IHt9O1xuICAgIGlmIChpY29uKSB7XG4gICAgICAgIG1lbnVJdGVtLmljb24gPSBpY29uO1xuICAgIH1cbiAgICBpZiAobGFiZWwpIHtcbiAgICAgICAgbWVudUl0ZW0ubGFiZWwgPSBsYWJlbDtcbiAgICB9XG4gICAgaWYgKHJvdXRlckxpbmspIHtcbiAgICAgICAgbWVudUl0ZW0ucm91dGVyTGluayA9IHJvdXRlckxpbms7XG4gICAgfVxuICAgIHJldHVybiBtZW51SXRlbTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFJvdXRlQnVpbGRlciB3aXRoIHRoZSBnaXZlbiBwYXRoIGFuZCBjb21wb25lbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBmb3IgdGhlIHJvdXRlLlxuICogQHBhcmFtIHtUeXBlPGFueT59IGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgZm9yIHRoZSByb3V0ZS5cbiAqIEByZXR1cm4ge1JvdXRlQnVpbGRlcn0gLSBBIG5ldyBpbnN0YW5jZSBvZiBSb3V0ZUJ1aWxkZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSb3V0ZShwYXRoOiBzdHJpbmcsIGNvbXBvbmVudDogVHlwZTxhbnk+KTogUm91dGVCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFJvdXRlQnVpbGRlcih7XG4gICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgIGNvbXBvbmVudDogY29tcG9uZW50XG4gICAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJlZGlyZWN0IHJvdXRlIGZvciB0aGUgZ2l2ZW4gcGF0aC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIHRvIG1hdGNoIGFnYWluc3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVkaXJlY3RUbyAtIFRoZSBVUkwgcGF0aCB0byByZWRpcmVjdCB0by5cbiAqIEBwYXJhbSB7J2Z1bGwnIHwgJ3ByZWZpeCd9IFtwYXRoTWF0Y2g9J3ByZWZpeCddIC0gVGhlIHBhdGggbWF0Y2hpbmcgc3RyYXRlZ3kgKCdmdWxsJyBvciAncHJlZml4JykuXG4gKiBAcmV0dXJuIHtSb3V0ZUJ1aWxkZXJ9IC0gQSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFJvdXRlQnVpbGRlciBjbGFzcyB3aXRoIHRoZSByZWRpcmVjdCByb3V0ZSBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUm91dGVSZWRpcmVjdChwYXRoOiBzdHJpbmcsIHJlZGlyZWN0VG86IHN0cmluZywgcGF0aE1hdGNoOiAnZnVsbCcgfCAncHJlZml4JyA9ICdwcmVmaXgnKTogUm91dGVCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFJvdXRlQnVpbGRlcih7XG4gICAgICAgIHBhdGg6IHBhdGgsXG4gICAgICAgIHJlZGlyZWN0VG86IHJlZGlyZWN0VG8sXG4gICAgICAgIHBhdGhNYXRjaDogcGF0aE1hdGNoXG4gICAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGxhenkgcm91dGUgbW9kdWxlIChvciByb3V0ZXMpLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggZm9yIHRoZSByb3V0ZS5cbiAqIEBwYXJhbSB7TG9hZENoaWxkcmVufSBsb2FkQ2hpbGRyZW4gLSBUaGUgZnVuY3Rpb24gdGhhdCBsb2FkcyB0aGUgbGF6eSBtb2R1bGUgKG9yIHJvdXRlcykuXG4gKiBAcGFyYW0ge0FycmF5PGFueT59IFtjYW5NYXRjaF0gLSBBbiBvcHRpb25hbCBhcnJheSBvZiBvYmplY3RzIHRoYXQgY2FuIG1hdGNoIHRoZSByb3V0ZS5cbiAqIEByZXR1cm5zIHtSb3V0ZUJ1aWxkZXJ9IC0gQSBuZXcgaW5zdGFuY2Ugb2YgUm91dGVCdWlsZGVyIGNsYXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGF6eUNoaWxkcmVuUm91dGUocGF0aDogc3RyaW5nLCBsb2FkQ2hpbGRyZW46IExvYWRDaGlsZHJlbiwgY2FuTWF0Y2g/OiBBcnJheTxhbnk+KTogUm91dGVCdWlsZGVyIHtcbiAgICBjb25zdCByb3V0ZTogUm91dGUgPSB7cGF0aDogcGF0aCwgbG9hZENoaWxkcmVuOiBsb2FkQ2hpbGRyZW59O1xuICAgIGlmIChjYW5NYXRjaD8ubGVuZ3RoKSB7XG4gICAgICAgIHJvdXRlLmNhbk1hdGNoID0gY2FuTWF0Y2g7XG4gICAgfVxuICAgIHJldHVybiBuZXcgUm91dGVCdWlsZGVyKHJvdXRlKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbGF6eSByb3V0ZSBjb21wb25lbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBmb3IgdGhlIHJvdXRlLlxuICogQHBhcmFtIHsoKSA9PiBUeXBlPHVua25vd24+IHwgT2JzZXJ2YWJsZTxUeXBlPHVua25vd24+IHwgRGVmYXVsdEV4cG9ydDxUeXBlPHVua25vd24+Pj4gfCBQcm9taXNlPFR5cGU8dW5rbm93bj4gfCBEZWZhdWx0RXhwb3J0PFR5cGU8dW5rbm93bj4+Pn0gbG9hZENvbXBvbmVudCAtIFRoZSBmdW5jdGlvbiB0aGF0IGxvYWRzIHRoZSBjb21wb25lbnQgZm9yIHRoZSByb3V0ZS5cbiAqIEBwYXJhbSB7QXJyYXk8YW55Pn0gW2Nhbk1hdGNoXSAtIFRoZSBhcnJheSBvZiB2YWx1ZXMgdGhhdCBkZXRlcm1pbmUgaWYgdGhlIHJvdXRlIGNhbiBtYXRjaC5cbiAqIEByZXR1cm5zIHtSb3V0ZUJ1aWxkZXJ9IC0gQW4gaW5zdGFuY2Ugb2YgUm91dGVCdWlsZGVyIHdpdGggdGhlIGNyZWF0ZWQgcm91dGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMYXp5Um91dGUoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGxvYWRDb21wb25lbnQ6ICgpID0+IFR5cGU8dW5rbm93bj4gfCBPYnNlcnZhYmxlPFR5cGU8dW5rbm93bj4gfCBEZWZhdWx0RXhwb3J0PFR5cGU8dW5rbm93bj4+PiB8IFByb21pc2U8VHlwZTx1bmtub3duPiB8IERlZmF1bHRFeHBvcnQ8VHlwZTx1bmtub3duPj4+LFxuICAgIGNhbk1hdGNoPzogQXJyYXk8YW55PlxuKTogUm91dGVCdWlsZGVyIHtcbiAgICBjb25zdCByb3V0ZTogUm91dGUgPSB7cGF0aDogcGF0aCwgbG9hZENvbXBvbmVudDogbG9hZENvbXBvbmVudH07XG4gICAgaWYgKGNhbk1hdGNoPy5sZW5ndGgpIHtcbiAgICAgICAgcm91dGUuY2FuTWF0Y2ggPSBjYW5NYXRjaDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBSb3V0ZUJ1aWxkZXIocm91dGUpO1xufVxuIl19
|
|
431
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3JvdXRlci9yb3V0ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBRTlELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQU83RCxNQUFNLE9BQU8sWUFBWTtJQWNyQixZQUFtQixLQUFZO1FBWnZCLGNBQVMsR0FBa0IsRUFBRSxDQUFDO1FBQzVCLGNBQVMsR0FBcUIsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFDLENBQUM7UUFHbkQsYUFBUSxHQUF3QixFQUFFLENBQUM7UUFHbkMscUJBQWdCLEdBQTJCLEVBQUUsQ0FBQztRQUM5QywwQkFBcUIsR0FBMkIsRUFBRSxDQUFDLENBQUMsOEJBQThCO1FBS3RGLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2hELElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxhQUE0QjtRQUN4QyxJQUFJLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxNQUFvQjtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLDRCQUE0QixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFB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QU8sSUFBSSxZQUFZLENBQUM7UUFDcEIsSUFBSSxFQUFFLElBQUk7UUFDVixTQUFTLEVBQUUsU0FBUztLQUN2QixDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxJQUFZLEVBQUUsVUFBa0IsRUFBRSxZQUErQixRQUFRO0lBQ3pHLE9BQU8sSUFBSSxZQUFZLENBQUM7UUFDcEIsSUFBSSxFQUFFLElBQUk7UUFDVixVQUFVLEVBQUUsVUFBVTtRQUN0QixTQUFTLEVBQUUsU0FBUztLQUN2QixDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSx1QkFBdUIsQ0FBQyxJQUFZLEVBQUUsWUFBMEIsRUFBRSxRQUFxQjtJQUNuRyxNQUFNLEtBQUssR0FBVSxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBQyxDQUFDO0lBQzlELElBQUksUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ25CLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFDRCxPQUFPLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDM0IsSUFBWSxFQUNaLGFBQXFKLEVBQ3JKLFFBQXFCO0lBRXJCLE1BQU0sS0FBSyxHQUFVLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFDLENBQUM7SUFDaEUsSUFBSSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbkIsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDOUIsQ0FBQztJQUNELE9BQU8sSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RW52aXJvbm1lbnRQcm92aWRlcnMsIFByb3ZpZGVyLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2FuQWN0aXZhdGVGbiwgQ2FuRGVhY3RpdmF0ZUZuLCBEZWZhdWx0RXhwb3J0LCBMb2FkQ2hpbGRyZW4sIFJlc29sdmVGbiwgUm91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7cmVtb3ZlUm91dGVFbXB0eVBhdGhTZWdtZW50c30gZnJvbSAnLi4vaGVscGVycy9yb3V0ZSc7XG5pbXBvcnQge0NvbW1vbnNNZW51SXRlbX0gZnJvbSAnLi4vbW9kZWxzL21lbnUubW9kZWwnO1xuaW1wb3J0IHtwZXJtaXNzaW9uR3VhcmR9IGZyb20gJy4uL3NlY3VyaXR5L3Blcm1pc3Npb24uZ3VhcmQnO1xuaW1wb3J0IHtBUGVybWlzc2lvbnN9IGZyb20gJy4uL3NlY3VyaXR5L3Blcm1pc3Npb25zLm1vZGVsJztcbmltcG9ydCB7QnJlYWRjcnVtYlR5cGUsIENvbW1vbnNSb3V0ZURhdGF9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcbmltcG9ydCB7Um91dGVzQnVpbGRlcn0gZnJvbSAnLi9yb3V0ZXMtYnVpbGRlcic7XG5cbmV4cG9ydCB0eXBlIFJvdXRlQnVpbGRlckFkanVzdEZuVHlwZSA9IChidWlsZGVyOiBSb3V0ZUJ1aWxkZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBSb3V0ZUJ1aWxkZXIge1xuICAgIHByb3RlY3RlZCByZWFkb25seSByb3V0ZTogUm91dGU7XG4gICAgcHJpdmF0ZSByb3V0ZVBhdGg6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgICBwcm90ZWN0ZWQgcm91dGVEYXRhOiBDb21tb25zUm91dGVEYXRhID0ge2JyZWFkY3J1bWI6IG51bGx9O1xuICAgIHByaXZhdGUgcm9vdD86IFJvdXRlc0J1aWxkZXI7XG4gICAgcHJpdmF0ZSBwYXJlbnQ/OiBSb3V0ZUJ1aWxkZXI7XG4gICAgcHJpdmF0ZSBjaGlsZHJlbjogQXJyYXk8Um91dGVCdWlsZGVyPiA9IFtdO1xuXG4gICAgcHJpdmF0ZSBtZW51SXRlbT86IENvbW1vbnNNZW51SXRlbTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ2hpbGRyZW46IEFycmF5PENvbW1vbnNNZW51SXRlbT4gPSBbXTtcbiAgICBwcml2YXRlIG1lbnVJdGVtQ2hpbGRyZW5BZnRlcjogQXJyYXk8Q29tbW9uc01lbnVJdGVtPiA9IFtdOyAvLyBhcHBlbmQgYWZ0ZXIgcm91dGUgY2hpbGRyZW5cblxuICAgIHByaXZhdGUgcGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnM7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3Iocm91dGU6IFJvdXRlKSB7XG4gICAgICAgIHRoaXMucm91dGUgPSByb3V0ZTtcbiAgICAgICAgaWYgKHRoaXMucm91dGUucGF0aCAmJiB0aGlzLnJvdXRlLnBhdGgubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZVBhdGggPSBbdGhpcy5yb3V0ZS5wYXRoXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGxpbmsgdG8gcm9vdCBSb3V0ZXMgYnVpbGRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Um91dGVzQnVpbGRlcn0gcm91dGVzQnVpbGRlciAtIFRoZSByb3V0ZXMgYnVpbGRlciB0byBzZXQgYXMgdGhlIHJvb3QuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhSb290KHJvdXRlc0J1aWxkZXI6IFJvdXRlc0J1aWxkZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5yb290ID0gcm91dGVzQnVpbGRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbGluayB0byBwYXJlbnQgUm91dGUgYnVpbGRlci5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Um91dGVCdWlsZGVyfSBwYXJlbnQgLSBUaGUgcGFyZW50IHJvdXRlIGJ1aWxkZXIuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhQYXJlbnQocGFyZW50OiBSb3V0ZUJ1aWxkZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgICAgIHRoaXMucm91dGVQYXRoID0gcmVtb3ZlUm91dGVFbXB0eVBhdGhTZWdtZW50cyhbLi4udGhpcy5wYXJlbnQucm91dGVQYXRoLCB0aGlzLnJvdXRlLnBhdGggPz8gJyddKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYnJlYWRjcnVtYi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QnJlYWRjcnVtYlR5cGV9IGJyZWFkY3J1bWIgLSBCcmVhZGNydW1iIGNvbmZpZ3VyYXRpb24uXG4gICAgICovXG4gICAgcHVibGljIHdpdGhCcmVhZGNydW1iKGJyZWFkY3J1bWI6IEJyZWFkY3J1bWJUeXBlKTogdGhpcyB7XG4gICAgICAgIHRoaXMucm91dGVEYXRhLmJyZWFkY3J1bWIgPSBicmVhZGNydW1iO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBwYWdlIHRpdGxlIGZvciB0aGUgY3VycmVudCByb3V0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYWdlVGl0bGUgLSBUaGUgdGl0bGUgb2YgdGhlIHBhZ2UuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhQYWdlVGl0bGUocGFnZVRpdGxlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5yb3V0ZURhdGEucGFnZVRpdGxlID0gcGFnZVRpdGxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBwYWdlIHRpdGxlIGFuZCB0aGUgYnJlYWRjcnVtYi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0aXRsZSAtIFRoZSB0aXRsZSBvZiB0aGUgcGFnZSBhbmQgYnJlYWRjcnVtYi5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFRpdGxlKHRpdGxlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy53aXRoUGFnZVRpdGxlKHRpdGxlKTtcbiAgICAgICAgdGhpcy53aXRoQnJlYWRjcnVtYih0aXRsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBjYW4gYWN0aXZhdGUgZ3VhcmQgdG8gcm91dGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0NhbkFjdGl2YXRlRm59IGZuIC0gVGhlIENhbkFjdGl2YXRlIGZ1bmN0aW9uIHRvIGJlIGFkZGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ2FuQWN0aXZhdGUoZm46IENhbkFjdGl2YXRlRm4pOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlLmNhbkFjdGl2YXRlKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlLmNhbkFjdGl2YXRlID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZS5wdXNoKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGNhbiBkZWFjdGl2YXRlIGd1YXJkIHRvIHJvdXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtDYW5EZWFjdGl2YXRlRm59IGZuIC0gVGhlIENhbkFjdGl2YXRlIGZ1bmN0aW9uIHRvIGJlIGFkZGVkLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ2FuRGVhY3RpdmF0ZShmbjogQ2FuRGVhY3RpdmF0ZUZuPGFueT4pOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGUpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZS5wdXNoKGZuKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIHJlc29sdmVyIHRvIHJvdXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBOYW1lIG9mIHRoZSByZXNvbHZlci5cbiAgICAgKiBAcGFyYW0ge0NhbkRlYWN0aXZhdGVGbn0gZm4gLSBUaGUgQ2FuQWN0aXZhdGUgZnVuY3Rpb24gdG8gYmUgYWRkZWQuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhSZXNvbHZlcihuYW1lOiBzdHJpbmcsIGZuOiBSZXNvbHZlRm48YW55Pik6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMucm91dGUucmVzb2x2ZSkge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZS5yZXNvbHZlID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZS5yZXNvbHZlW25hbWVdID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgYSBwcm92aWRlciB0byB0aGUgcm91dGUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1Byb3ZpZGVyIHwgRW52aXJvbm1lbnRQcm92aWRlcnN9IHByb3ZpZGVyIC0gVGhlIHByb3ZpZGVyIHRvIGFkZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFByb3ZpZGVyKHByb3ZpZGVyOiBQcm92aWRlciB8IEVudmlyb25tZW50UHJvdmlkZXJzKTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy5yb3V0ZS5wcm92aWRlcnMpIHtcbiAgICAgICAgICAgIHRoaXMucm91dGUucHJvdmlkZXJzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yb3V0ZS5wcm92aWRlcnMucHVzaChwcm92aWRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGRhdGEgZm9yIHRoZSByb3V0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Q29tbW9uc1JvdXRlRGF0YX0gZGF0YSAtIFRoZSBkYXRhIHRvIHNldCBmb3IgdGhlIHJvdXRlLlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW21lcmdlPXRydWVdIC0gSWYgdGhlIGRhdGEgc2hvdWxkIGJlIG1lcmdlZCB3aXRoIGN1cnJlbnQgZGF0YSBzZXR1cCAodHJ1ZSBieSBkZWZhdWx0KSAtIHBhZ2UgdGl0bGUgYW5kIGJyZWFkY3J1bWIgY29uZmlnIGFyZSBjYXJyaWVkIG92ZXIuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhEYXRhKGRhdGE6IENvbW1vbnNSb3V0ZURhdGEsIG1lcmdlID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLnJvdXRlRGF0YSA9IG1lcmdlXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIC4uLnRoaXMucm91dGVEYXRhLFxuICAgICAgICAgICAgICAgICAgLi4uZGF0YVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWI6IG51bGwsXG4gICAgICAgICAgICAgICAgICAuLi5kYXRhXG4gICAgICAgICAgICAgIH07XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFVwZGF0ZXMgdGhlIG1lbnUgaXRlbSBvZiByb3V0ZS4gTWVyZ2luZyB3aXRoIGN1cnJlbnQgY29uZmlndXJhdGlvbiAoc2V0IHdpdGgge3dpdGhNZW51SXRlbX0pIHRha2VzIHBsYWNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtDb21tb25zTWVudUl0ZW19IG9wdHMgLSBUaGUgb3B0cyBwcm9wZXJ0aWVzIHRvIGJlIG1lcmdlZCBvbiBleGlzdGluZyBtZW51IGl0ZW0gZm9yIHJvdXRlLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoTWVudUl0ZW1PcHRzKG9wdHM6IENvbW1vbnNNZW51SXRlbSk6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMubWVudUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1lbnVJdGVtID0ge1xuICAgICAgICAgICAgLi4udGhpcy5tZW51SXRlbSxcbiAgICAgICAgICAgIC4uLm9wdHNcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgbWVudSBpdGVtIChiYXNpYykuIEZvciBtb3JlIG9wdGlvbnMsIHNlZSB0aGUge3dpdGhNZW51SXRlbUZyb21PcHRzfS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbaWNvbl0gLSBUaGUgaWNvbiBmb3IgdGhlIG1lbnUgaXRlbS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xhYmVsXSAtIFRoZSBsYWJlbCBmb3IgdGhlIG1lbnUgaXRlbS5cbiAgICAgKiBAcGFyYW0ge0FycmF5PHN0cmluZz59IFtyb3V0ZXJMaW5rXSAtIFRoZSByb3V0ZXIgbGluayBmb3IgdGhlIG1lbnUgaXRlbS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFticmVhZGNydW1iPWZhbHNlXSAtIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgYnJlYWRjcnVtYiBmb3IgdGhlIG1lbnUgaXRlbS5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aE1lbnVJdGVtKGljb24/OiBzdHJpbmcsIGxhYmVsPzogc3RyaW5nLCByb3V0ZXJMaW5rPzogQXJyYXk8c3RyaW5nPiwgYnJlYWRjcnVtYiA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMubWVudUl0ZW0gPSBjcmVhdGVNZW51SXRlbShpY29uLCBsYWJlbCwgcm91dGVyTGluayk7XG4gICAgICAgIGlmIChicmVhZGNydW1iICYmIGxhYmVsKSB7XG4gICAgICAgICAgICB0aGlzLndpdGhCcmVhZGNydW1iKHtcbiAgICAgICAgICAgICAgICBsYWJlbDogbGFiZWxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgbWVudSBpdGVtIGNoaWxkIHRvIHJvdXRlJ3MgbWVudSBpdGVtLiBJZiBubyBtZW51IGl0ZW0gaXMgcHJlc2VudCwgY2hpbGRyZW4gd2lsbCBiZSBhcHBlbmRlZCBkaXJlY3RseSB0byBwYXJlbnQvcm9vdCBtZW51IGl0ZW0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2ljb25dIC0gVGhlIGljb24gZm9yIHRoZSBtZW51IGl0ZW0uXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtsYWJlbF0gLSBUaGUgbGFiZWwgZm9yIHRoZSBtZW51IGl0ZW0uXG4gICAgICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBbcm91dGVyTGlua10gLSBUaGUgcm91dGVyIGxpbmsgZm9yIHRoZSBtZW51IGl0ZW0uXG4gICAgICogQHBhcmFtIHtib29sZWFufSBbYWZ0ZXJSb3V0ZUNoaWxkcmVuPWZhbHNlXSBJZiBmYWxzZSwgbWVudSBpdGVtIGNoaWxkIHdpbGwgYmUgYXBwZW5kZWQgYmVmb3JlIHJvdXRlJ3MgY2hpbGRyZW4gbWVudSBpdGVtcywgYXQgdGhlIGVuZCBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhNZW51SXRlbUNoaWxkKGljb24/OiBzdHJpbmcsIGxhYmVsPzogc3RyaW5nLCByb3V0ZXJMaW5rPzogQXJyYXk8c3RyaW5nPiwgYWZ0ZXJSb3V0ZUNoaWxkcmVuID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgaWYgKGFmdGVyUm91dGVDaGlsZHJlbikge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNoaWxkcmVuQWZ0ZXIucHVzaChjcmVhdGVNZW51SXRlbShpY29uLCBsYWJlbCwgcm91dGVyTGluaykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbUNoaWxkcmVuLnB1c2goY3JlYXRlTWVudUl0ZW0oaWNvbiwgbGFiZWwsIHJvdXRlckxpbmspKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIG1lbnUgaXRlbSBjaGlsZCBmcm9tIG9wdHMgdG8gcm91dGUncyBtZW51IGl0ZW0uIElmIG5vIG1lbnUgaXRlbSBpcyBwcmVzZW50LCBjaGlsZHJlbiB3aWxsIGJlIGFwcGVuZGVkIGRpcmVjdGx5IHRvIHBhcmVudC9yb290IG1lbnUgaXRlbS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Q29tbW9uc01lbnVJdGVtfSBvcHRzIC0gVGhlIG9wdHMgcHJvcGVydGllcyB0byBiZSBtZXJnZWQgb24gZXhpc3RpbmcgbWVudSBpdGVtIGZvciByb3V0ZS5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFthZnRlclJvdXRlQ2hpbGRyZW49ZmFsc2VdIElmIGZhbHNlLCBtZW51IGl0ZW0gY2hpbGQgd2lsbCBiZSBhcHBlbmRlZCBiZWZvcmUgcm91dGUncyBjaGlsZHJlbiBtZW51IGl0ZW1zLCBhdCB0aGUgZW5kIG90aGVyd2lzZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aE1lbnVJdGVtQ2hpbGRGcm9tT3B0cyhvcHRzOiBDb21tb25zTWVudUl0ZW0sIGFmdGVyUm91dGVDaGlsZHJlbiA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIGlmIChhZnRlclJvdXRlQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1DaGlsZHJlbkFmdGVyLnB1c2gob3B0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1lbnVJdGVtQ2hpbGRyZW4ucHVzaChvcHRzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBtZW51IGl0ZW0ncyBjaGlsZHJlbiB0byBiZSBnZW5lcmF0ZWQgbGF6aWx5IGZyb20gcm91dGUncyBsYXp5IGxvYWRlZCByb3V0ZXMgYWZ0ZXIgdGhlIGNodW5rIGlzIGxvYWRlZCB0byBydW50aW1lLlxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoTWVudUl0ZW1MYXp5Q2hpbGRyZW4oKTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy5tZW51SXRlbSkge1xuICAgICAgICAgICAgdGhpcy5tZW51SXRlbSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWVudUl0ZW0ubGF6eUNoaWxkcmVuID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcGVybWlzc2lvbnMgb24gdGhlIHJvdXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtBUGVybWlzc2lvbnN9IHBlcm1pc3Npb25zIC0gVGhlIHBlcm1pc3Npb25zIHRvIGJlIHNldCBvbiB0aGUgcm91dGUuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhQZXJtaXNzaW9ucyhwZXJtaXNzaW9uczogQVBlcm1pc3Npb25zKTogdGhpcyB7XG4gICAgICAgIHRoaXMucGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucztcbiAgICAgICAgdGhpcy53aXRoQ2FuQWN0aXZhdGUocGVybWlzc2lvbkd1YXJkKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIGNoaWxkIHJvdXRlIHRvIHRoZSBjdXJyZW50IHJvdXRlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBvZiB0aGUgY2hpbGQgcm91dGUuXG4gICAgICogQHBhcmFtIHtUeXBlPGFueT59IGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjaGlsZCByb3V0ZS5cbiAgICAgKiBAcGFyYW0ge1JvdXRlQnVpbGRlckFkanVzdEZuVHlwZX0gW2FkanVzdEZuXSAtIEFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRvIGFkanVzdCB0aGUgY2hpbGQgcm91dGUgYnVpbGRlci5cbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkQ2hpbGQocGF0aDogc3RyaW5nLCBjb21wb25lbnQ6IFR5cGU8YW55PiwgYWRqdXN0Rm4/OiBSb3V0ZUJ1aWxkZXJBZGp1c3RGblR5cGUpOiB0aGlzIHtcbiAgICAgICAgY29uc3QgY2hpbGRSb3V0ZUJ1aWxkZXIgPSBjcmVhdGVSb3V0ZShwYXRoLCBjb21wb25lbnQpO1xuICAgICAgICBhZGp1c3RGbj8uKGNoaWxkUm91dGVCdWlsZGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkQ2hpbGRCdWlsZGVyKGNoaWxkUm91dGVCdWlsZGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgY2hpbGQgYnVpbGRlciB0byB0aGUgY3VycmVudCByb3V0ZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Um91dGVCdWlsZGVyfSBidWlsZGVyIC0gVGhlIGNoaWxkIGJ1aWxkZXIgdG8gYmUgYWRkZWQuXG4gICAgICogQHJldHVybiB7dGhpc30gLSBUaGUgY3VycmVudCBidWlsZGVyIHdpdGggdGhlIGFkZGVkIGNoaWxkIGJ1aWxkZXIuXG4gICAgICovXG4gICAgcHVibGljIGFkZENoaWxkQnVpbGRlcihidWlsZGVyOiBSb3V0ZUJ1aWxkZXIpOiB0aGlzIHtcbiAgICAgICAgYnVpbGRlci53aXRoUGFyZW50KHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5yb290KSB7XG4gICAgICAgICAgICBidWlsZGVyLndpdGhSb290KHRoaXMucm9vdCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGJ1aWxkZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBCdWlsZHMgYW4gQW5ndWxhciByb3V0ZSBiYXNlZCBvbiBjb25maWd1cmF0aW9ucy5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtSb3V0ZX0gVGhlIGJ1aWx0IEFuZ3VsYXIgcm91dGUuXG4gICAgICovXG4gICAgcHVibGljIGJ1aWxkKCk6IFJvdXRlIHtcbiAgICAgICAgY29uc3QgYW5ndWxhclJvdXRlOiBSb3V0ZSA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMucm91dGVcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoYW5ndWxhclJvdXRlLmRhdGEpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5kYXRhID0ge1xuICAgICAgICAgICAgICAgIC4uLmFuZ3VsYXJSb3V0ZS5kYXRhLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMucm91dGVEYXRhXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmRhdGEgPSB7Li4udGhpcy5yb3V0ZURhdGF9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gYXBwZW5kIHBlcm1pc3Npb25zIGlmIG5vdCBhbHJlYWR5IGluIHJvdXRlIGRhdGFcbiAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnMgJiYgIShhbmd1bGFyUm91dGUuZGF0YSBhcyBDb21tb25zUm91dGVEYXRhKS5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgKGFuZ3VsYXJSb3V0ZS5kYXRhIGFzIENvbW1vbnNSb3V0ZURhdGEpLnBlcm1pc3Npb25zID0gdGhpcy5wZXJtaXNzaW9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1lbnUgPSB0aGlzLmJ1aWxkTWVudSgpO1xuICAgICAgICBpZiAobWVudS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAoYW5ndWxhclJvdXRlLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YSkubWVudUl0ZW1zID0gbWVudTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgodGhpcy5yb3V0ZS5jaGlsZHJlbj8ubGVuZ3RoID8/IDApID4gMCB8fCB0aGlzLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIHJvdXRlIGhhcyBjaGlsZHJlblxuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNoaWxkcmVuID0gW107XG4gICAgICAgICAgICBpZiAodGhpcy5yb3V0ZS5jaGlsZHJlbj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNoaWxkcmVuLnB1c2goLi4udGhpcy5yb3V0ZS5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNoaWxkUm91dGUgb2YgdGhpcy5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICBhbmd1bGFyUm91dGUuY2hpbGRyZW4ucHVzaChjaGlsZFJvdXRlLmJ1aWxkKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkFjdGl2YXRlKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2FuQWN0aXZhdGUgPSBbLi4udGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGUuY2FuQWN0aXZhdGVDaGlsZCkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLmNhbkFjdGl2YXRlQ2hpbGQgPSBbLi4udGhpcy5yb3V0ZS5jYW5BY3RpdmF0ZUNoaWxkXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yb3V0ZS5jYW5Mb2FkKSB7XG4gICAgICAgICAgICBhbmd1bGFyUm91dGUuY2FuTG9hZCA9IFsuLi50aGlzLnJvdXRlLmNhbkxvYWRdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlLmNhbkRlYWN0aXZhdGUpIHtcbiAgICAgICAgICAgIGFuZ3VsYXJSb3V0ZS5jYW5EZWFjdGl2YXRlID0gWy4uLnRoaXMucm91dGUuY2FuRGVhY3RpdmF0ZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucm91dGUucmVzb2x2ZSkge1xuICAgICAgICAgICAgYW5ndWxhclJvdXRlLnJlc29sdmUgPSB7Li4udGhpcy5yb3V0ZS5yZXNvbHZlfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbmd1bGFyUm91dGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQnVpbGRzIHRoZSBtZW51IGl0ZW1zLlxuICAgICAqXG4gICAgICogQHJldHVybnMge0FycmF5PENvbW1vbnNNZW51SXRlbT59IC0gVGhlIGJ1aWx0IG1lbnUgaXRlbXMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBidWlsZE1lbnUoKTogQXJyYXk8Q29tbW9uc01lbnVJdGVtPiB7XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtQnVpbGQ6IENvbW1vbnNNZW51SXRlbSB8IG51bGwgPSB0aGlzLm1lbnVJdGVtID8gey4uLnRoaXMubWVudUl0ZW19IDogbnVsbDtcbiAgICAgICAgY29uc3Qgcm91dGVDaGlsZHJlbk1lbnVJdGVtczogQXJyYXk8Q29tbW9uc01lbnVJdGVtPiA9IHRoaXMuY2hpbGRyZW4uZmxhdE1hcChjaGlsZCA9PiBjaGlsZC5idWlsZE1lbnUoKSk7XG4gICAgICAgIGNvbnN0IG1lbnVJdGVtQ2hpbGRyZW46IEFycmF5PENvbW1vbnNNZW51SXRlbT4gPSBbXTtcbiAgICAgICAgY29uc3QgbWVudUl0ZW1DaGlsZHJlbkJ1aWxkOiBBcnJheTxDb21tb25zTWVudUl0ZW0+ID0gW107XG5cbiAgICAgICAgaWYgKG1lbnVJdGVtQnVpbGQ/Lml0ZW1zKSB7XG4gICAgICAgICAgICBtZW51SXRlbUNoaWxkcmVuQnVpbGQucHVzaCguLi5tZW51SXRlbUJ1aWxkLml0ZW1zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHByb2Nlc3NNZW51SXRlbUNoaWxkID0gKGNoaWxkOiBDb21tb25zTWVudUl0ZW0pOiBDb21tb25zTWVudUl0ZW0gPT4ge1xuICAgICAgICAgICAgY29uc3QgZmluYWxDaGlsZDogQ29tbW9uc01lbnVJdGVtID0gey4uLmNoaWxkfTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZmluYWxDaGlsZC5yb3V0ZXJMaW5rID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIGZpbmFsQ2hpbGQucm91dGVyTGluayA9IHRoaXMucm91dGVQYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiBmaW5hbENoaWxkLnJvdXRlckxpbmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZmluYWxDaGlsZC5yb3V0ZXJMaW5rID0gW2ZpbmFsQ2hpbGQucm91dGVyTGlua107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZmluYWxDaGlsZC5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICAgICAgZmluYWxDaGlsZC5yb3V0ZXJMaW5rID0gcmVtb3ZlUm91dGVFbXB0eVBhdGhTZWdtZW50cyhmaW5hbENoaWxkLnJvdXRlckxpbmspO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gUHJvcGFnYXRlIHBlcm1pc3Npb25zIHRvIGNoaWxkcmVuXG4gICAgICAgICAgICBpZiAoIWZpbmFsQ2hpbGQucGVybWlzc2lvbnMgJiYgdGhpcy5yb3V0ZURhdGEucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgICAgICBmaW5hbENoaWxkLnBlcm1pc3Npb25zID0gdGhpcy5yb3V0ZURhdGEucGVybWlzc2lvbnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWZpbmFsQ2hpbGQucGVybWlzc2lvbnMgJiYgdGhpcy5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgICAgIGZpbmFsQ2hpbGQucGVybWlzc2lvbnMgPSB0aGlzLnBlcm1pc3Npb25zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpbmFsQ2hpbGQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5tZW51SXRlbUNoaWxkcmVuLmZvckVhY2goY2hpbGQgPT4gbWVudUl0ZW1DaGlsZHJlbi5wdXNoKHByb2Nlc3NNZW51SXRlbUNoaWxkKGNoaWxkKSkpO1xuXG4gICAgICAgIGNvbnN0IG1lbnVJdGVtQ2hpbGRyZW5BZnRlckJ1aWxkOiBBcnJheTxDb21tb25zTWVudUl0ZW0+ID0gdGhpcy5tZW51SXRlbUNoaWxkcmVuQWZ0ZXIubWFwKGNoaWxkID0+IHByb2Nlc3NNZW51SXRlbUNoaWxkKGNoaWxkKSk7XG5cbiAgICAgICAgbWVudUl0ZW1DaGlsZHJlbkJ1aWxkLnB1c2goLi4ubWVudUl0ZW1DaGlsZHJlbiwgLi4ucm91dGVDaGlsZHJlbk1lbnVJdGVtcywgLi4ubWVudUl0ZW1DaGlsZHJlbkFmdGVyQnVpbGQpO1xuXG4gICAgICAgIGlmICghbWVudUl0ZW1CdWlsZCkge1xuICAgICAgICAgICAgcmV0dXJuIG1lbnVJdGVtQ2hpbGRyZW5CdWlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIG1lbnVJdGVtQnVpbGQubGFiZWwgPSBtZW51SXRlbUJ1aWxkLmxhYmVsID8/IHRoaXMucm91dGVEYXRhLnBhZ2VUaXRsZTtcbiAgICAgICAgaWYgKHR5cGVvZiBtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPSBbbWVudUl0ZW1CdWlsZC5yb3V0ZXJMaW5rXTtcbiAgICAgICAgfVxuICAgICAgICBtZW51SXRlbUJ1aWxkLnJvdXRlckxpbmsgPSByZW1vdmVSb3V0ZUVtcHR5UGF0aFNlZ21lbnRzKG1lbnVJdGVtQnVpbGQucm91dGVyTGluayA/PyB0aGlzLnJvdXRlUGF0aCk7XG4gICAgICAgIGlmIChtZW51SXRlbUNoaWxkcmVuQnVpbGQubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgbWVudUl0ZW1CdWlsZC5pdGVtcyA9IG1lbnVJdGVtQ2hpbGRyZW5CdWlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbWVudUl0ZW1CdWlsZC5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgbWVudUl0ZW1CdWlsZC5wZXJtaXNzaW9ucyA9IHRoaXMuZmluZE1lbnVJdGVtUGVybWlzc2lvbnMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbbWVudUl0ZW1CdWlsZF07XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZpbmRNZW51SXRlbVBlcm1pc3Npb25zKCkge1xuICAgICAgICBpZiAodGhpcy5tZW51SXRlbT8ucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm1lbnVJdGVtLnBlcm1pc3Npb25zO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnJvdXRlRGF0YS5wZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgLy8gdGhpcyBpcyBhbHJlYWR5IGJ1aWx0XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZURhdGEucGVybWlzc2lvbnM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBlcm1pc3Npb25zO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVNZW51SXRlbShpY29uPzogc3RyaW5nLCBsYWJlbD86IHN0cmluZywgcm91dGVyTGluaz86IEFycmF5PHN0cmluZz4pIHtcbiAgICBjb25zdCBtZW51SXRlbTogQ29tbW9uc01lbnVJdGVtID0ge307XG4gICAgaWYgKGljb24pIHtcbiAgICAgICAgbWVudUl0ZW0uaWNvbiA9IGljb247XG4gICAgfVxuICAgIGlmIChsYWJlbCkge1xuICAgICAgICBtZW51SXRlbS5sYWJlbCA9IGxhYmVsO1xuICAgIH1cbiAgICBpZiAocm91dGVyTGluaykge1xuICAgICAgICBtZW51SXRlbS5yb3V0ZXJMaW5rID0gcm91dGVyTGluaztcbiAgICB9XG4gICAgcmV0dXJuIG1lbnVJdGVtO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgUm91dGVCdWlsZGVyIHdpdGggdGhlIGdpdmVuIHBhdGggYW5kIGNvbXBvbmVudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIGZvciB0aGUgcm91dGUuXG4gKiBAcGFyYW0ge1R5cGU8YW55Pn0gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCBmb3IgdGhlIHJvdXRlLlxuICogQHJldHVybiB7Um91dGVCdWlsZGVyfSAtIEEgbmV3IGluc3RhbmNlIG9mIFJvdXRlQnVpbGRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJvdXRlKHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPGFueT4pOiBSb3V0ZUJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgUm91dGVCdWlsZGVyKHtcbiAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgY29tcG9uZW50OiBjb21wb25lbnRcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcmVkaXJlY3Qgcm91dGUgZm9yIHRoZSBnaXZlbiBwYXRoLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggdG8gbWF0Y2ggYWdhaW5zdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSByZWRpcmVjdFRvIC0gVGhlIFVSTCBwYXRoIHRvIHJlZGlyZWN0IHRvLlxuICogQHBhcmFtIHsnZnVsbCcgfCAncHJlZml4J30gW3BhdGhNYXRjaD0ncHJlZml4J10gLSBUaGUgcGF0aCBtYXRjaGluZyBzdHJhdGVneSAoJ2Z1bGwnIG9yICdwcmVmaXgnKS5cbiAqIEByZXR1cm4ge1JvdXRlQnVpbGRlcn0gLSBBIG5ldyBpbnN0YW5jZSBvZiB0aGUgUm91dGVCdWlsZGVyIGNsYXNzIHdpdGggdGhlIHJlZGlyZWN0IHJvdXRlIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSb3V0ZVJlZGlyZWN0KHBhdGg6IHN0cmluZywgcmVkaXJlY3RUbzogc3RyaW5nLCBwYXRoTWF0Y2g6ICdmdWxsJyB8ICdwcmVmaXgnID0gJ3ByZWZpeCcpOiBSb3V0ZUJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgUm91dGVCdWlsZGVyKHtcbiAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgcmVkaXJlY3RUbzogcmVkaXJlY3RUbyxcbiAgICAgICAgcGF0aE1hdGNoOiBwYXRoTWF0Y2hcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbGF6eSByb3V0ZSBtb2R1bGUgKG9yIHJvdXRlcykuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBUaGUgcGF0aCBmb3IgdGhlIHJvdXRlLlxuICogQHBhcmFtIHtMb2FkQ2hpbGRyZW59IGxvYWRDaGlsZHJlbiAtIFRoZSBmdW5jdGlvbiB0aGF0IGxvYWRzIHRoZSBsYXp5IG1vZHVsZSAob3Igcm91dGVzKS5cbiAqIEBwYXJhbSB7QXJyYXk8YW55Pn0gW2Nhbk1hdGNoXSAtIEFuIG9wdGlvbmFsIGFycmF5IG9mIG9iamVjdHMgdGhhdCBjYW4gbWF0Y2ggdGhlIHJvdXRlLlxuICogQHJldHVybnMge1JvdXRlQnVpbGRlcn0gLSBBIG5ldyBpbnN0YW5jZSBvZiBSb3V0ZUJ1aWxkZXIgY2xhc3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMYXp5Q2hpbGRyZW5Sb3V0ZShwYXRoOiBzdHJpbmcsIGxvYWRDaGlsZHJlbjogTG9hZENoaWxkcmVuLCBjYW5NYXRjaD86IEFycmF5PGFueT4pOiBSb3V0ZUJ1aWxkZXIge1xuICAgIGNvbnN0IHJvdXRlOiBSb3V0ZSA9IHtwYXRoOiBwYXRoLCBsb2FkQ2hpbGRyZW46IGxvYWRDaGlsZHJlbn07XG4gICAgaWYgKGNhbk1hdGNoPy5sZW5ndGgpIHtcbiAgICAgICAgcm91dGUuY2FuTWF0Y2ggPSBjYW5NYXRjaDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBSb3V0ZUJ1aWxkZXIocm91dGUpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBsYXp5IHJvdXRlIGNvbXBvbmVudC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIFRoZSBwYXRoIGZvciB0aGUgcm91dGUuXG4gKiBAcGFyYW0geygpID0+IFR5cGU8dW5rbm93bj4gfCBPYnNlcnZhYmxlPFR5cGU8dW5rbm93bj4gfCBEZWZhdWx0RXhwb3J0PFR5cGU8dW5rbm93bj4+PiB8IFByb21pc2U8VHlwZTx1bmtub3duPiB8IERlZmF1bHRFeHBvcnQ8VHlwZTx1bmtub3duPj4+fSBsb2FkQ29tcG9uZW50IC0gVGhlIGZ1bmN0aW9uIHRoYXQgbG9hZHMgdGhlIGNvbXBvbmVudCBmb3IgdGhlIHJvdXRlLlxuICogQHBhcmFtIHtBcnJheTxhbnk+fSBbY2FuTWF0Y2hdIC0gVGhlIGFycmF5IG9mIHZhbHVlcyB0aGF0IGRldGVybWluZSBpZiB0aGUgcm91dGUgY2FuIG1hdGNoLlxuICogQHJldHVybnMge1JvdXRlQnVpbGRlcn0gLSBBbiBpbnN0YW5jZSBvZiBSb3V0ZUJ1aWxkZXIgd2l0aCB0aGUgY3JlYXRlZCByb3V0ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxhenlSb3V0ZShcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgbG9hZENvbXBvbmVudDogKCkgPT4gVHlwZTx1bmtub3duPiB8IE9ic2VydmFibGU8VHlwZTx1bmtub3duPiB8IERlZmF1bHRFeHBvcnQ8VHlwZTx1bmtub3duPj4+IHwgUHJvbWlzZTxUeXBlPHVua25vd24+IHwgRGVmYXVsdEV4cG9ydDxUeXBlPHVua25vd24+Pj4sXG4gICAgY2FuTWF0Y2g/OiBBcnJheTxhbnk+XG4pOiBSb3V0ZUJ1aWxkZXIge1xuICAgIGNvbnN0IHJvdXRlOiBSb3V0ZSA9IHtwYXRoOiBwYXRoLCBsb2FkQ29tcG9uZW50OiBsb2FkQ29tcG9uZW50fTtcbiAgICBpZiAoY2FuTWF0Y2g/Lmxlbmd0aCkge1xuICAgICAgICByb3V0ZS5jYW5NYXRjaCA9IGNhbk1hdGNoO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFJvdXRlQnVpbGRlcihyb3V0ZSk7XG59XG4iXX0=
|
|
@@ -6,10 +6,10 @@ export const permissionGuard = (route) => {
|
|
|
6
6
|
const permission = inject(PermissionService);
|
|
7
7
|
const data = route.data;
|
|
8
8
|
if (data.permissions) {
|
|
9
|
-
return permission.canActivateRoute(data.permissions).pipe(first());
|
|
9
|
+
return permission.canActivateRoute(data.permissions, route).pipe(first());
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
12
|
return of(true);
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvc3JjL3NlY3VyaXR5L3Blcm1pc3Npb24uZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdyQyxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQWtCLENBQUMsS0FBNkIsRUFBa0YsRUFBRTtJQUM1SixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUU3QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBd0IsQ0FBQztJQUU1QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixPQUFPLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEIsQ0FBQztBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGVGbiwgVXJsVHJlZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpcnN0fSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7Q29tbW9uc1JvdXRlRGF0YX0gZnJvbSAnLi4vcm91dGVyL3JvdXRlci5tb2RlbCc7XG5pbXBvcnQge1Blcm1pc3Npb25TZXJ2aWNlfSBmcm9tICcuL3Blcm1pc3Npb24uc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBwZXJtaXNzaW9uR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IFByb21pc2U8Ym9vbGVhbiB8IFVybFRyZWU+IHwgYm9vbGVhbiB8IFVybFRyZWUgPT4ge1xuICAgIGNvbnN0IHBlcm1pc3Npb24gPSBpbmplY3QoUGVybWlzc2lvblNlcnZpY2UpO1xuXG4gICAgY29uc3QgZGF0YSA9IHJvdXRlLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YTtcblxuICAgIGlmIChkYXRhLnBlcm1pc3Npb25zKSB7XG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9uLmNhbkFjdGl2YXRlUm91dGUoZGF0YS5wZXJtaXNzaW9ucywgcm91dGUpLnBpcGUoZmlyc3QoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG9mKHRydWUpO1xuICAgIH1cbn07XG4iXX0=
|
|
@@ -35,7 +35,7 @@ export class PermissionService {
|
|
|
35
35
|
canActivateRouteService(permission, route) {
|
|
36
36
|
const serviceInstance = this.injector.get(permission.service);
|
|
37
37
|
if (!serviceInstance) {
|
|
38
|
-
this.logger.debug(`WARNING: Service instance could not be
|
|
38
|
+
this.logger.debug(`WARNING: Service instance could not be retrieved for type ${permission.service}`);
|
|
39
39
|
return of(false);
|
|
40
40
|
}
|
|
41
41
|
return serviceInstance.canActivateRoute(route);
|
|
@@ -98,4 +98,4 @@ export class PermissionService {
|
|
|
98
98
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: PermissionService, decorators: [{
|
|
99
99
|
type: Injectable
|
|
100
100
|
}] });
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvc2VjdXJpdHkvcGVybWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFHeEQsT0FBTyxFQUFhLGFBQWEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBeUMsa0JBQWtCLEVBQWMsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHNUcsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVxQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUV2RSxlQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7S0EyRjdEO0lBekZVLGdCQUFnQixDQUFDLFdBQXlCLEVBQUUsS0FBOEI7UUFDN0UsUUFBUSxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNwQyxLQUFLLGtCQUFrQixDQUFDLEdBQUc7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixD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QUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25KLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxVQUErQixFQUFFLFNBQTZDLEVBQUUsS0FBOEI7UUFDekksTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw2REFBNkQsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDckcsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs4R0EvRlEsaUJBQWlCO2tIQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdG9yLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b09ic2VydmFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uL2xvZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbnNNZW51SXRlbX0gZnJvbSAnLi4vbW9kZWxzL21lbnUubW9kZWwnO1xuaW1wb3J0IHtDb21tb25zU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvY29tbW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7aXNQZXJtaXR0ZWR9IGZyb20gJy4vcGVybWlzc2lvbi1oZWxwZXJzJztcbmltcG9ydCB7QVBlcm1pc3Npb25zLCBJQWN0aW9uQ29udGV4dFZhbGlkYXRpb24sIFBlcm1pc3Npb25UeXBlRW51bSwgUGVybWlzc2lvbnN9IGZyb20gJy4vcGVybWlzc2lvbnMubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbW9ucyA9IGluamVjdChDb21tb25zU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBpbmplY3QoTG9nZ2VyU2VydmljZSkuY3JlYXRlKCdBdXRob3JpemF0aW9uU2VydmljZScpO1xuXG4gICAgcHJpdmF0ZSB1c2VyUm9sZXMkID0gdG9PYnNlcnZhYmxlKHRoaXMuY29tbW9ucy51c2VyUm9sZXMpO1xuXG4gICAgcHVibGljIGNhbkFjdGl2YXRlUm91dGUocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucywgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHN3aXRjaCAocGVybWlzc2lvbnMuYXV0aG9yaXphdGlvblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUGVybWlzc2lvblR5cGVFbnVtLkFsbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZVJvdXRlQWxsKHBlcm1pc3Npb25zIGFzIFBlcm1pc3Npb25zLkFsbCwgcm91dGUpO1xuICAgICAgICAgICAgY2FzZSBQZXJtaXNzaW9uVHlwZUVudW0uQW55OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlUm91dGVBbnkocGVybWlzc2lvbnMgYXMgUGVybWlzc2lvbnMuQW55LCByb3V0ZSk7XG4gICAgICAgICAgICBjYXNlIFBlcm1pc3Npb25UeXBlRW51bS5TZXJ2aWNlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlUm91dGVTZXJ2aWNlKHBlcm1pc3Npb25zIGFzIFBlcm1pc3Npb25zLlNlcnZpY2UsIHJvdXRlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlclJvbGVzJC5waXBlKG1hcCh1ciA9PiBpc1Blcm1pdHRlZChwZXJtaXNzaW9ucywgdXIpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbkFjdGl2YXRlUm91dGVBbGwocGVybWlzc2lvbjogUGVybWlzc2lvbnMuQWxsLCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QocGVybWlzc2lvbi5wZXJtaXNzaW9ucy5tYXAocCA9PiB0aGlzLmNhbkFjdGl2YXRlUm91dGUocCwgcm91dGUpKSkucGlwZShtYXAocmVzID0+IHJlcy5ldmVyeShpcCA9PiBpcCA9PT0gdHJ1ZSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbkFjdGl2YXRlUm91dGVBbnkocGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLkFueSwgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHBlcm1pc3Npb25zLnBlcm1pc3Npb25zLm1hcChwID0+IHRoaXMuY2FuQWN0aXZhdGVSb3V0ZShwLCByb3V0ZSkpKS5waXBlKG1hcChyZXMgPT4gcmVzLnNvbWUoaXAgPT4gaXAgPT09IHRydWUpKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYW5BY3RpdmF0ZVJvdXRlU2VydmljZShwZXJtaXNzaW9uOiBQZXJtaXNzaW9ucy5TZXJ2aWNlLCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gdGhpcy5pbmplY3Rvci5nZXQocGVybWlzc2lvbi5zZXJ2aWNlKTtcbiAgICAgICAgaWYgKCFzZXJ2aWNlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBXQVJOSU5HOiBTZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBiZSByZXRyZWl2ZWQgZm9yIHR5cGUgJHtwZXJtaXNzaW9uLnNlcnZpY2V9YCk7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJ2aWNlSW5zdGFuY2UuY2FuQWN0aXZhdGVSb3V0ZShyb3V0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzTWVudUl0ZW1WaXNpYmxlKHBlcm1pc3Npb25zOiBBUGVybWlzc2lvbnMsIG1lbnVJdGVtOiBDb21tb25zTWVudUl0ZW0pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgc3dpdGNoIChwZXJtaXNzaW9ucy5hdXRob3JpemF0aW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBQZXJtaXNzaW9uVHlwZUVudW0uQWxsOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzTWVudUl0ZW1WaXNpYmxlQWxsKHBlcm1pc3Npb25zIGFzIFBlcm1pc3Npb25zLkFsbCwgbWVudUl0ZW0pO1xuICAgICAgICAgICAgY2FzZSBQZXJtaXNzaW9uVHlwZUVudW0uQW55OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzTWVudUl0ZW1WaXNpYmxlQW55KHBlcm1pc3Npb25zIGFzIFBlcm1pc3Npb25zLkFueSwgbWVudUl0ZW0pO1xuICAgICAgICAgICAgY2FzZSBQZXJtaXNzaW9uVHlwZUVudW0uU2VydmljZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc01lbnVJdGVtVmlzaWJsZVNlcnZpY2UocGVybWlzc2lvbnMgYXMgUGVybWlzc2lvbnMuU2VydmljZSwgbWVudUl0ZW0pO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51c2VyUm9sZXMkLnBpcGUobWFwKHJvbGUgPT4gaXNQZXJtaXR0ZWQocGVybWlzc2lvbnMsIHJvbGUpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTWVudUl0ZW1WaXNpYmxlQWxsKHBlcm1pc3Npb246IFBlcm1pc3Npb25zLkFsbCwgbWVudUl0ZW06IENvbW1vbnNNZW51SXRlbSkge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChwZXJtaXNzaW9uLnBlcm1pc3Npb25zLm1hcChwID0+IHRoaXMuaXNNZW51SXRlbVZpc2libGUocCwgbWVudUl0ZW0pKSkucGlwZShtYXAocmVzID0+IHJlcy5ldmVyeShpcCA9PiBpcCA9PT0gdHJ1ZSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTWVudUl0ZW1WaXNpYmxlQW55KHBlcm1pc3Npb246IFBlcm1pc3Npb25zLkFueSwgbWVudUl0ZW06IENvbW1vbnNNZW51SXRlbSkge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChwZXJtaXNzaW9uLnBlcm1pc3Npb25zLm1hcChwID0+IHRoaXMuaXNNZW51SXRlbVZpc2libGUocCwgbWVudUl0ZW0pKSkucGlwZShtYXAocmVzID0+IHJlcy5zb21lKGlwID0+IGlwID09PSB0cnVlKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNNZW51SXRlbVZpc2libGVTZXJ2aWNlKHBlcm1pc3Npb246IFBlcm1pc3Npb25zLlNlcnZpY2UsIG1lbnVJdGVtOiBDb21tb25zTWVudUl0ZW0pIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gdGhpcy5pbmplY3Rvci5nZXQocGVybWlzc2lvbi5zZXJ2aWNlKTtcbiAgICAgICAgaWYgKCFzZXJ2aWNlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBXQVJOSU5HOiBTZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBiZSByZXRyZWl2ZWQgZm9yIHR5cGUgJHtwZXJtaXNzaW9uLnNlcnZpY2V9YCk7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJ2aWNlSW5zdGFuY2UuaXNNZW51aXRlbVZpc2libGUobWVudUl0ZW0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0FjdGlvblZpc2libGUocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucywgYWN0aW9uQ3R4PzogSUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPGFueSwgYW55Piwgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHN3aXRjaCAocGVybWlzc2lvbnMuYXV0aG9yaXphdGlvblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUGVybWlzc2lvblR5cGVFbnVtLkFsbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0FjdGlvblZpc2libGVBbGwocGVybWlzc2lvbnMgYXMgUGVybWlzc2lvbnMuQWxsLCBhY3Rpb25DdHgsIHJvdXRlKTtcbiAgICAgICAgICAgIGNhc2UgUGVybWlzc2lvblR5cGVFbnVtLkFueTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0FjdGlvblZpc2libGVBbnkocGVybWlzc2lvbnMgYXMgUGVybWlzc2lvbnMuQW55LCBhY3Rpb25DdHgsIHJvdXRlKTtcbiAgICAgICAgICAgIGNhc2UgUGVybWlzc2lvblR5cGVFbnVtLlNlcnZpY2U6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNBY3Rpb25WaXNpYmxlU2VydmljZShwZXJtaXNzaW9ucyBhcyBQZXJtaXNzaW9ucy5TZXJ2aWNlLCBhY3Rpb25DdHgsIHJvdXRlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlclJvbGVzJC5waXBlKG1hcCh1ciA9PiBpc1Blcm1pdHRlZChwZXJtaXNzaW9ucywgdXIpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWN0aW9uVmlzaWJsZUFsbChwZXJtaXNzaW9uOiBQZXJtaXNzaW9ucy5BbGwsIGFjdGlvbkN0eD86IElBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjx1bmtub3duLCB1bmtub3duPiwgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHBlcm1pc3Npb24ucGVybWlzc2lvbnMubWFwKHAgPT4gdGhpcy5pc0FjdGlvblZpc2libGUocCwgYWN0aW9uQ3R4LCByb3V0ZSkpKS5waXBlKG1hcChyZXMgPT4gcmVzLmV2ZXJ5KGlwID0+IGlwID09PSB0cnVlKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBY3Rpb25WaXNpYmxlQW55KHBlcm1pc3Npb246IFBlcm1pc3Npb25zLkFueSwgYWN0aW9uQ3R4PzogSUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPHVua25vd24+LCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QocGVybWlzc2lvbi5wZXJtaXNzaW9ucy5tYXAocCA9PiB0aGlzLmlzQWN0aW9uVmlzaWJsZShwLCBhY3Rpb25DdHgsIHJvdXRlKSkpLnBpcGUobWFwKHJlcyA9PiByZXMuc29tZShpcCA9PiBpcCA9PT0gdHJ1ZSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWN0aW9uVmlzaWJsZVNlcnZpY2UocGVybWlzc2lvbjogUGVybWlzc2lvbnMuU2VydmljZSwgYWN0aW9uQ3R4PzogSUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPHVua25vd24+LCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gdGhpcy5pbmplY3Rvci5nZXQocGVybWlzc2lvbi5zZXJ2aWNlKTtcbiAgICAgICAgaWYgKCFzZXJ2aWNlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBXQVJOSU5HOiBTZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBiZSByZXRyZWl2ZWQgZm9yIHR5cGUgJHtwZXJtaXNzaW9uLnNlcnZpY2V9YCk7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJ2aWNlSW5zdGFuY2UuaXNBY3Rpb25WaXNpYmxlKGFjdGlvbkN0eCwgcm91dGUpO1xuICAgIH1cbn1cbiJdfQ==
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvc2VjdXJpdHkvcGVybWlzc2lvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFHeEQsT0FBTyxFQUFhLGFBQWEsRUFBRSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRW5DLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2pELE9BQU8sRUFBeUMsa0JBQWtCLEVBQWMsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHNUcsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVxQixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLFlBQU8sR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDakMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUV2RSxlQUFVLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7S0EyRjdEO0lBekZVLGdCQUFnQixDQUFDLFdBQXlCLEVBQUUsS0FBOEI7UUFDN0UsUUFBUSxXQUFXLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNwQyxLQUFLLGtCQUFrQixDQUFDLEdBQUc7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixD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QUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25KLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxVQUErQixFQUFFLFNBQTZDLEVBQUUsS0FBOEI7UUFDekksTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw2REFBNkQsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDckcsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELE9BQU8sZUFBZSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs4R0EvRlEsaUJBQWlCO2tIQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIEluamVjdG9yLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0b09ic2VydmFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uL2xvZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbnNNZW51SXRlbX0gZnJvbSAnLi4vbW9kZWxzL21lbnUubW9kZWwnO1xuaW1wb3J0IHtDb21tb25zU2VydmljZX0gZnJvbSAnLi4vc2VydmljZXMvY29tbW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7aXNQZXJtaXR0ZWR9IGZyb20gJy4vcGVybWlzc2lvbi1oZWxwZXJzJztcbmltcG9ydCB7QVBlcm1pc3Npb25zLCBJQWN0aW9uQ29udGV4dFZhbGlkYXRpb24sIFBlcm1pc3Npb25UeXBlRW51bSwgUGVybWlzc2lvbnN9IGZyb20gJy4vcGVybWlzc2lvbnMubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUGVybWlzc2lvblNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29tbW9ucyA9IGluamVjdChDb21tb25zU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBpbmplY3QoTG9nZ2VyU2VydmljZSkuY3JlYXRlKCdBdXRob3JpemF0aW9uU2VydmljZScpO1xuXG4gICAgcHJpdmF0ZSB1c2VyUm9sZXMkID0gdG9PYnNlcnZhYmxlKHRoaXMuY29tbW9ucy51c2VyUm9sZXMpO1xuXG4gICAgcHVibGljIGNhbkFjdGl2YXRlUm91dGUocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucywgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHN3aXRjaCAocGVybWlzc2lvbnMuYXV0aG9yaXphdGlvblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUGVybWlzc2lvblR5cGVFbnVtLkFsbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYW5BY3RpdmF0ZVJvdXRlQWxsKHBlcm1pc3Npb25zIGFzIFBlcm1pc3Npb25zLkFsbCwgcm91dGUpO1xuICAgICAgICAgICAgY2FzZSBQZXJtaXNzaW9uVHlwZUVudW0uQW55OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlUm91dGVBbnkocGVybWlzc2lvbnMgYXMgUGVybWlzc2lvbnMuQW55LCByb3V0ZSk7XG4gICAgICAgICAgICBjYXNlIFBlcm1pc3Npb25UeXBlRW51bS5TZXJ2aWNlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbkFjdGl2YXRlUm91dGVTZXJ2aWNlKHBlcm1pc3Npb25zIGFzIFBlcm1pc3Npb25zLlNlcnZpY2UsIHJvdXRlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlclJvbGVzJC5waXBlKG1hcCh1ciA9PiBpc1Blcm1pdHRlZChwZXJtaXNzaW9ucywgdXIpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbkFjdGl2YXRlUm91dGVBbGwocGVybWlzc2lvbjogUGVybWlzc2lvbnMuQWxsLCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QocGVybWlzc2lvbi5wZXJtaXNzaW9ucy5tYXAocCA9PiB0aGlzLmNhbkFjdGl2YXRlUm91dGUocCwgcm91dGUpKSkucGlwZShtYXAocmVzID0+IHJlcy5ldmVyeShpcCA9PiBpcCA9PT0gdHJ1ZSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbkFjdGl2YXRlUm91dGVBbnkocGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLkFueSwgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHBlcm1pc3Npb25zLnBlcm1pc3Npb25zLm1hcChwID0+IHRoaXMuY2FuQWN0aXZhdGVSb3V0ZShwLCByb3V0ZSkpKS5waXBlKG1hcChyZXMgPT4gcmVzLnNvbWUoaXAgPT4gaXAgPT09IHRydWUpKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjYW5BY3RpdmF0ZVJvdXRlU2VydmljZShwZXJtaXNzaW9uOiBQZXJtaXNzaW9ucy5TZXJ2aWNlLCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gdGhpcy5pbmplY3Rvci5nZXQocGVybWlzc2lvbi5zZXJ2aWNlKTtcbiAgICAgICAgaWYgKCFzZXJ2aWNlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBXQVJOSU5HOiBTZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWQgZm9yIHR5cGUgJHtwZXJtaXNzaW9uLnNlcnZpY2V9YCk7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJ2aWNlSW5zdGFuY2UuY2FuQWN0aXZhdGVSb3V0ZShyb3V0ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGlzTWVudUl0ZW1WaXNpYmxlKHBlcm1pc3Npb25zOiBBUGVybWlzc2lvbnMsIG1lbnVJdGVtOiBDb21tb25zTWVudUl0ZW0pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgc3dpdGNoIChwZXJtaXNzaW9ucy5hdXRob3JpemF0aW9uVHlwZSkge1xuICAgICAgICAgICAgY2FzZSBQZXJtaXNzaW9uVHlwZUVudW0uQWxsOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzTWVudUl0ZW1WaXNpYmxlQWxsKHBlcm1pc3Npb25zIGFzIFBlcm1pc3Npb25zLkFsbCwgbWVudUl0ZW0pO1xuICAgICAgICAgICAgY2FzZSBQZXJtaXNzaW9uVHlwZUVudW0uQW55OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzTWVudUl0ZW1WaXNpYmxlQW55KHBlcm1pc3Npb25zIGFzIFBlcm1pc3Npb25zLkFueSwgbWVudUl0ZW0pO1xuICAgICAgICAgICAgY2FzZSBQZXJtaXNzaW9uVHlwZUVudW0uU2VydmljZTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc01lbnVJdGVtVmlzaWJsZVNlcnZpY2UocGVybWlzc2lvbnMgYXMgUGVybWlzc2lvbnMuU2VydmljZSwgbWVudUl0ZW0pO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy51c2VyUm9sZXMkLnBpcGUobWFwKHJvbGUgPT4gaXNQZXJtaXR0ZWQocGVybWlzc2lvbnMsIHJvbGUpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTWVudUl0ZW1WaXNpYmxlQWxsKHBlcm1pc3Npb246IFBlcm1pc3Npb25zLkFsbCwgbWVudUl0ZW06IENvbW1vbnNNZW51SXRlbSkge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChwZXJtaXNzaW9uLnBlcm1pc3Npb25zLm1hcChwID0+IHRoaXMuaXNNZW51SXRlbVZpc2libGUocCwgbWVudUl0ZW0pKSkucGlwZShtYXAocmVzID0+IHJlcy5ldmVyeShpcCA9PiBpcCA9PT0gdHJ1ZSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTWVudUl0ZW1WaXNpYmxlQW55KHBlcm1pc3Npb246IFBlcm1pc3Npb25zLkFueSwgbWVudUl0ZW06IENvbW1vbnNNZW51SXRlbSkge1xuICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChwZXJtaXNzaW9uLnBlcm1pc3Npb25zLm1hcChwID0+IHRoaXMuaXNNZW51SXRlbVZpc2libGUocCwgbWVudUl0ZW0pKSkucGlwZShtYXAocmVzID0+IHJlcy5zb21lKGlwID0+IGlwID09PSB0cnVlKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNNZW51SXRlbVZpc2libGVTZXJ2aWNlKHBlcm1pc3Npb246IFBlcm1pc3Npb25zLlNlcnZpY2UsIG1lbnVJdGVtOiBDb21tb25zTWVudUl0ZW0pIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gdGhpcy5pbmplY3Rvci5nZXQocGVybWlzc2lvbi5zZXJ2aWNlKTtcbiAgICAgICAgaWYgKCFzZXJ2aWNlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBXQVJOSU5HOiBTZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBiZSByZXRyZWl2ZWQgZm9yIHR5cGUgJHtwZXJtaXNzaW9uLnNlcnZpY2V9YCk7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJ2aWNlSW5zdGFuY2UuaXNNZW51aXRlbVZpc2libGUobWVudUl0ZW0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0FjdGlvblZpc2libGUocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucywgYWN0aW9uQ3R4PzogSUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPGFueSwgYW55Piwgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHN3aXRjaCAocGVybWlzc2lvbnMuYXV0aG9yaXphdGlvblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgUGVybWlzc2lvblR5cGVFbnVtLkFsbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0FjdGlvblZpc2libGVBbGwocGVybWlzc2lvbnMgYXMgUGVybWlzc2lvbnMuQWxsLCBhY3Rpb25DdHgsIHJvdXRlKTtcbiAgICAgICAgICAgIGNhc2UgUGVybWlzc2lvblR5cGVFbnVtLkFueTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc0FjdGlvblZpc2libGVBbnkocGVybWlzc2lvbnMgYXMgUGVybWlzc2lvbnMuQW55LCBhY3Rpb25DdHgsIHJvdXRlKTtcbiAgICAgICAgICAgIGNhc2UgUGVybWlzc2lvblR5cGVFbnVtLlNlcnZpY2U6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNBY3Rpb25WaXNpYmxlU2VydmljZShwZXJtaXNzaW9ucyBhcyBQZXJtaXNzaW9ucy5TZXJ2aWNlLCBhY3Rpb25DdHgsIHJvdXRlKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXNlclJvbGVzJC5waXBlKG1hcCh1ciA9PiBpc1Blcm1pdHRlZChwZXJtaXNzaW9ucywgdXIpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWN0aW9uVmlzaWJsZUFsbChwZXJtaXNzaW9uOiBQZXJtaXNzaW9ucy5BbGwsIGFjdGlvbkN0eD86IElBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjx1bmtub3duLCB1bmtub3duPiwgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHBlcm1pc3Npb24ucGVybWlzc2lvbnMubWFwKHAgPT4gdGhpcy5pc0FjdGlvblZpc2libGUocCwgYWN0aW9uQ3R4LCByb3V0ZSkpKS5waXBlKG1hcChyZXMgPT4gcmVzLmV2ZXJ5KGlwID0+IGlwID09PSB0cnVlKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNBY3Rpb25WaXNpYmxlQW55KHBlcm1pc3Npb246IFBlcm1pc3Npb25zLkFueSwgYWN0aW9uQ3R4PzogSUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPHVua25vd24+LCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QocGVybWlzc2lvbi5wZXJtaXNzaW9ucy5tYXAocCA9PiB0aGlzLmlzQWN0aW9uVmlzaWJsZShwLCBhY3Rpb25DdHgsIHJvdXRlKSkpLnBpcGUobWFwKHJlcyA9PiByZXMuc29tZShpcCA9PiBpcCA9PT0gdHJ1ZSkpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQWN0aW9uVmlzaWJsZVNlcnZpY2UocGVybWlzc2lvbjogUGVybWlzc2lvbnMuU2VydmljZSwgYWN0aW9uQ3R4PzogSUFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPHVua25vd24+LCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gdGhpcy5pbmplY3Rvci5nZXQocGVybWlzc2lvbi5zZXJ2aWNlKTtcbiAgICAgICAgaWYgKCFzZXJ2aWNlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBXQVJOSU5HOiBTZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBiZSByZXRyZWl2ZWQgZm9yIHR5cGUgJHtwZXJtaXNzaW9uLnNlcnZpY2V9YCk7XG4gICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzZXJ2aWNlSW5zdGFuY2UuaXNBY3Rpb25WaXNpYmxlKGFjdGlvbkN0eCwgcm91dGUpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { BROWSER_STORAGE_IT } from './tokens/browser-storage.token';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class CommonsStorageService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.localStorage = inject(BROWSER_STORAGE_IT);
|
|
7
|
+
this._configKey = 'CommonsUserPrefs';
|
|
8
|
+
}
|
|
9
|
+
buildLocalStorageKey(type, key) {
|
|
10
|
+
return `${this._configKey}_${type}_${key}`;
|
|
11
|
+
}
|
|
12
|
+
getItem(type, key) {
|
|
13
|
+
const localstorageData = this.localStorage.getItem(this.buildLocalStorageKey(type, key));
|
|
14
|
+
if (localstorageData) {
|
|
15
|
+
return JSON.parse(localstorageData);
|
|
16
|
+
}
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
setItem(type, key, value) {
|
|
20
|
+
this.localStorage.setItem(this.buildLocalStorageKey(type, key), JSON.stringify(value));
|
|
21
|
+
}
|
|
22
|
+
removeItem(type, key) {
|
|
23
|
+
this.localStorage.removeItem(this.buildLocalStorageKey(type, key));
|
|
24
|
+
}
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: CommonsStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
26
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: CommonsStorageService }); }
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: CommonsStorageService, decorators: [{
|
|
29
|
+
type: Injectable
|
|
30
|
+
}] });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3NyYy9zZXJ2aWNlcy9jb21tb25zLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFLbEUsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUVxQixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzFDLGVBQVUsR0FBRyxrQkFBa0IsQ0FBQztLQXFCcEQ7SUFuQlcsb0JBQW9CLENBQUMsSUFBWSxFQUFFLEdBQVc7UUFDbEQsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFTSxPQUFPLENBQWtDLElBQVksRUFBRSxHQUFXO1FBQ3JFLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVNLE9BQU8sQ0FBa0MsSUFBWSxFQUFFLEdBQVcsRUFBRSxLQUFRO1FBQy9FLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFTSxVQUFVLENBQUMsSUFBWSxFQUFFLEdBQVc7UUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7OEdBdEJRLHFCQUFxQjtrSEFBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0JST1dTRVJfU1RPUkFHRV9JVH0gZnJvbSAnLi90b2tlbnMvYnJvd3Nlci1zdG9yYWdlLnRva2VuJztcblxuZXhwb3J0IHR5cGUgTG9jYWxzdG9yYWdlQ29uZmlnVmFsdWVUeXBlID0gc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSB8IG9iamVjdCB8IGJvb2xlYW47XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb21tb25zU3RvcmFnZVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxTdG9yYWdlID0gaW5qZWN0KEJST1dTRVJfU1RPUkFHRV9JVCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfY29uZmlnS2V5ID0gJ0NvbW1vbnNVc2VyUHJlZnMnO1xuXG4gICAgcHJpdmF0ZSBidWlsZExvY2FsU3RvcmFnZUtleSh0eXBlOiBzdHJpbmcsIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuX2NvbmZpZ0tleX1fJHt0eXBlfV8ke2tleX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJdGVtPFQgPSBMb2NhbHN0b3JhZ2VDb25maWdWYWx1ZVR5cGU+KHR5cGU6IHN0cmluZywga2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgbG9jYWxzdG9yYWdlRGF0YSA9IHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5idWlsZExvY2FsU3RvcmFnZUtleSh0eXBlLCBrZXkpKTtcbiAgICAgICAgaWYgKGxvY2Fsc3RvcmFnZURhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2Fsc3RvcmFnZURhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEl0ZW08VCA9IExvY2Fsc3RvcmFnZUNvbmZpZ1ZhbHVlVHlwZT4odHlwZTogc3RyaW5nLCBrZXk6IHN0cmluZywgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLmJ1aWxkTG9jYWxTdG9yYWdlS2V5KHR5cGUsIGtleSksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUl0ZW0odHlwZTogc3RyaW5nLCBrZXk6IHN0cmluZykge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuYnVpbGRMb2NhbFN0b3JhZ2VLZXkodHlwZSwga2V5KSk7XG4gICAgfVxufVxuIl19
|
|
@@ -75,7 +75,13 @@ export class CommonsService {
|
|
|
75
75
|
});
|
|
76
76
|
this.breadcrumbs = signal([]);
|
|
77
77
|
// visual
|
|
78
|
+
/**
|
|
79
|
+
* @deprecated Use layout colorScheme instead.
|
|
80
|
+
*/
|
|
78
81
|
this.colorScheme = signal(this.moduleConfig?.app?.colorScheme ?? 'light');
|
|
82
|
+
/**
|
|
83
|
+
* @deprecated Use layout colorScheme instead.
|
|
84
|
+
*/
|
|
79
85
|
this.colorSchemeIsLight = computed(() => this.colorScheme() === 'light');
|
|
80
86
|
// user
|
|
81
87
|
this.user = signal(undefined);
|
|
@@ -83,11 +89,29 @@ export class CommonsService {
|
|
|
83
89
|
// APP section
|
|
84
90
|
this.appName = signal(this.moduleConfig?.app?.name ?? 'app.name');
|
|
85
91
|
this.appOwner = signal(this.moduleConfig?.app?.owner ?? 'app.owner');
|
|
92
|
+
/**
|
|
93
|
+
* @deprecated Use layout app logo instead.
|
|
94
|
+
*/
|
|
86
95
|
this.appLogoLight = signal(this.moduleConfig?.app?.logoPathLight ? this.moduleConfig.app.logoPathLight : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png');
|
|
96
|
+
/**
|
|
97
|
+
* @deprecated Use layout app logo instead.
|
|
98
|
+
*/
|
|
87
99
|
this.appLogoDark = signal(this.moduleConfig?.app?.logoPathDark ? this.moduleConfig.app.logoPathDark : this.moduleConfig?.app?.logoPath ?? 'assets/layout/images/logo.png');
|
|
100
|
+
/**
|
|
101
|
+
* @deprecated Use layout app logo instead.
|
|
102
|
+
*/
|
|
88
103
|
this.appLogo = computed(() => (this.colorSchemeIsLight() ? this.appLogoLight() : this.appLogoDark()));
|
|
104
|
+
/**
|
|
105
|
+
* @deprecated Use layout app logo instead.
|
|
106
|
+
*/
|
|
89
107
|
this.appLogoNameLight = signal(this.moduleConfig?.app?.logoNamePathLight ? this.moduleConfig.app.logoNamePathLight : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png');
|
|
108
|
+
/**
|
|
109
|
+
* @deprecated Use layout app logo instead.
|
|
110
|
+
*/
|
|
90
111
|
this.appLogoNameDark = signal(this.moduleConfig?.app?.logoNamePathDark ? this.moduleConfig.app.logoNamePathDark : this.moduleConfig?.app?.logoNamePath ?? 'assets/layout/images/logo-appname.png');
|
|
112
|
+
/**
|
|
113
|
+
* @deprecated Use layout app logo instead.
|
|
114
|
+
*/
|
|
91
115
|
this.appLogoName = computed(() => (this.colorSchemeIsLight() ? this.appLogoNameLight() : this.appLogoNameDark()));
|
|
92
116
|
this.appLocales = signal(this.moduleConfig?.app?.locales ?? ['en']);
|
|
93
117
|
this._appLocale = signal(this.initAppLocale());
|
|
@@ -330,4 +354,4 @@ export class CommonsService {
|
|
|
330
354
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImport: i0, type: CommonsService, decorators: [{
|
|
331
355
|
type: Injectable
|
|
332
356
|
}], ctorParameters: () => [] });
|
|
333
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvc2VydmljZXMvY29tbW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEQsT0FBTyxFQUF5QixhQUFhLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFOUUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBSXBELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDOztBQUd0RSxNQUFNLE9BQU8sY0FBYztJQThDaEIsZ0JBQWdCO1FBQ25CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEQsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2hFLE9BQU8sV0FBVyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFB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QUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLGVBQWUsQ0FBQyxXQUFvQjtRQUN4QyxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFFdkIsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNkLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBRUQsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRXJELE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQXRXUSxjQUFjO2tIQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Rlc3Ryb3lSZWYsIEluamVjdGFibGUsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1RpdGxlfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7QWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkVuZCwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtQcmltZU5HQ29uZmlnfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0xvZ2dlclNlcnZpY2V9IGZyb20gJy4uL2xvZy9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQge0NvbW1vbnNNZW51SXRlbX0gZnJvbSAnLi4vbW9kZWxzL21lbnUubW9kZWwnO1xuaW1wb3J0IHtJVXNlcn0gZnJvbSAnLi4vbW9kZWxzL3VzZXIubW9kZWwnO1xuaW1wb3J0IHtCcmVhZGNydW1iTWVudUl0ZW0sIENvbW1vbnNSb3V0ZURhdGF9IGZyb20gJy4uL3JvdXRlci9yb3V0ZXIubW9kZWwnO1xuaW1wb3J0IHtCUk9XU0VSX1NUT1JBR0VfSVR9IGZyb20gJy4vdG9rZW5zL2Jyb3dzZXItc3RvcmFnZS50b2tlbic7XG5pbXBvcnQge0NPTU1PTlNfTU9EVUxFX0NPTkZJR19JVH0gZnJvbSAnLi90b2tlbnMvbW9kdWxlLWNvbmZpZy50b2tlbic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb21tb25zU2VydmljZSB7XG4gICAgLy8gaW50ZXJuYWxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlciA9IGluamVjdChMb2dnZXJTZXJ2aWNlKS5jcmVhdGUoJ0NvbW1vbnNTZXJ2aWNlJyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByaW1lbmdDb25maWcgPSBpbmplY3QoUHJpbWVOR0NvbmZpZyk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0aXRsZVNlcnZpY2UgPSBpbmplY3QoVGl0bGUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbW9kdWxlQ29uZmlnID0gaW5qZWN0KENPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCwge29wdGlvbmFsOiB0cnVlfSk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2NhbFN0b3JhZ2UgPSBpbmplY3QoQlJPV1NFUl9TVE9SQUdFX0lUKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvLyBicmVhZGNydW1ic1xuICAgIHB1YmxpYyByZWFkb25seSBicmVhZGNydW1iSG9tZSA9IHNpZ25hbDxDb21tb25zTWVudUl0ZW0gfCBudWxsPih7XG4gICAgICAgIGljb246ICdwaSBwaS1ob21lJyxcbiAgICAgICAgcm91dGVyTGluazogJy8nXG4gICAgfSk7XG4gICAgcHVibGljIHJlYWRvbmx5IGJyZWFkY3J1bWJzID0gc2lnbmFsPENvbW1vbnNNZW51SXRlbVtdPihbXSk7XG4gICAgcHJpdmF0ZSBicmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIGJyZWFkY3J1bWJIb21lVHJhbnNsYXRlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gICAgLy8gdmlzdWFsXG4gICAgcHVibGljIGNvbG9yU2NoZW1lID0gc2lnbmFsKHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmNvbG9yU2NoZW1lID8/ICdsaWdodCcpO1xuICAgIHB1YmxpYyBjb2xvclNjaGVtZUlzTGlnaHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbG9yU2NoZW1lKCkgPT09ICdsaWdodCcpO1xuXG4gICAgLy8gdXNlclxuICAgIHB1YmxpYyB1c2VyID0gc2lnbmFsPElVc2VyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIHB1YmxpYyB1c2VyUm9sZXMgPSBzaWduYWw8QXJyYXk8c3RyaW5nPj4oW10pO1xuXG4gICAgLy8gQVBQIHNlY3Rpb25cbiAgICBwdWJsaWMgYXBwTmFtZSA9IHNpZ25hbCh0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5uYW1lID8/ICdhcHAubmFtZScpO1xuICAgIHB1YmxpYyBhcHBPd25lciA9IHNpZ25hbCh0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5vd25lciA/PyAnYXBwLm93bmVyJyk7XG5cbiAgICBwcml2YXRlIGFwcExvZ29MaWdodCA9IHNpZ25hbChcbiAgICAgICAgdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb1BhdGhMaWdodCA/IHRoaXMubW9kdWxlQ29uZmlnLmFwcC5sb2dvUGF0aExpZ2h0IDogdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb1BhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28ucG5nJ1xuICAgICk7XG4gICAgcHJpdmF0ZSBhcHBMb2dvRGFyayA9IHNpZ25hbCh0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvUGF0aERhcmsgPyB0aGlzLm1vZHVsZUNvbmZpZy5hcHAubG9nb1BhdGhEYXJrIDogdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb1BhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28ucG5nJyk7XG4gICAgcHVibGljIGFwcExvZ28gPSBjb21wdXRlZCgoKSA9PiAodGhpcy5jb2xvclNjaGVtZUlzTGlnaHQoKSA/IHRoaXMuYXBwTG9nb0xpZ2h0KCkgOiB0aGlzLmFwcExvZ29EYXJrKCkpKTtcblxuICAgIHByaXZhdGUgYXBwTG9nb05hbWVMaWdodCA9IHNpZ25hbChcbiAgICAgICAgdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb05hbWVQYXRoTGlnaHQgPyB0aGlzLm1vZHVsZUNvbmZpZy5hcHAubG9nb05hbWVQYXRoTGlnaHQgOiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvTmFtZVBhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28tYXBwbmFtZS5wbmcnXG4gICAgKTtcbiAgICBwcml2YXRlIGFwcExvZ29OYW1lRGFyayA9IHNpZ25hbChcbiAgICAgICAgdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb05hbWVQYXRoRGFyayA/IHRoaXMubW9kdWxlQ29uZmlnLmFwcC5sb2dvTmFtZVBhdGhEYXJrIDogdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb05hbWVQYXRoID8/ICdhc3NldHMvbGF5b3V0L2ltYWdlcy9sb2dvLWFwcG5hbWUucG5nJ1xuICAgICk7XG4gICAgcHVibGljIGFwcExvZ29OYW1lID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuY29sb3JTY2hlbWVJc0xpZ2h0KCkgPyB0aGlzLmFwcExvZ29OYW1lTGlnaHQoKSA6IHRoaXMuYXBwTG9nb05hbWVEYXJrKCkpKTtcblxuICAgIHB1YmxpYyBnZXREZWZhdWx0TG9jYWxlKCkge1xuICAgICAgICBjb25zdCBicm93c2VyTGFuZyA9IHRoaXMudHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XG4gICAgICAgIGlmIChicm93c2VyTGFuZyAmJiB0aGlzLmFwcExvY2FsZXMoKS5zb21lKGwgPT4gbCA9PT0gYnJvd3NlckxhbmcpKSB7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3Nlckxhbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwTG9jYWxlcygpPy5sZW5ndGggPiAwID8gdGhpcy5hcHBMb2NhbGVzKClbMF0gOiAnZW4nO1xuICAgIH1cblxuICAgIHB1YmxpYyBhcHBMb2NhbGVzID0gc2lnbmFsKHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvY2FsZXMgPz8gWydlbiddKTtcbiAgICBwcml2YXRlIF9hcHBMb2NhbGUgPSBzaWduYWw8c3RyaW5nPih0aGlzLmluaXRBcHBMb2NhbGUoKSk7XG4gICAgcHVibGljIGFwcExvY2FsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2FwcExvY2FsZSgpKTtcblxuICAgIHByaXZhdGUgaW5pdEFwcExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBsc0xhbmcgPSB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5nJyk7XG4gICAgICAgIGlmIChsc0xhbmcgJiYgdGhpcy5hcHBMb2NhbGVzKCkuc29tZShsID0+IGwgPT09IGxzTGFuZykpIHtcbiAgICAgICAgICAgIHJldHVybiBsc0xhbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGVmYXVsdExvY2FsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBcHBMb2NhbGUobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5hcHBMb2NhbGVzKCkuc29tZShsID0+IGwgPT09IGxhbmd1YWdlKSkge1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKGxhbmd1YWdlKTtcbiAgICAgICAgICAgIHRoaXMuX2FwcExvY2FsZS5zZXQobGFuZ3VhZ2UpO1xuICAgICAgICAgICAgaWYgKGxhbmd1YWdlICE9PSB0aGlzLmdldERlZmF1bHRMb2NhbGUoKSkgdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFuZycsIGxhbmd1YWdlKTtcbiAgICAgICAgICAgIGVsc2UgdGhpcy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbGFuZycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyQXBwTG9jYWxlKCkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdsYW5nJyk7XG4gICAgICAgIHRoaXMuX2FwcExvY2FsZS5zZXQodGhpcy5nZXREZWZhdWx0TG9jYWxlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhcHBEYXRhTG9jYWxlcyA9IHNpZ25hbCh0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5kYXRhTG9jYWxlcyA/PyBbJ2VuJ10pO1xuICAgIHByaXZhdGUgX2FwcERhdGFMb2NhbGUgPSBzaWduYWw8c3RyaW5nPih0aGlzLmluaXRBcHBEYXRhTG9jYWxlKCkpO1xuICAgIHB1YmxpYyBhcHBEYXRhTG9jYWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fYXBwRGF0YUxvY2FsZSgpKTtcblxuICAgIHByaXZhdGUgaW5pdEFwcERhdGFMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF0YUxhbmcgPSB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRhTGFuZycpO1xuICAgICAgICBpZiAoZGF0YUxhbmcgJiYgdGhpcy5hcHBEYXRhTG9jYWxlcygpLnNvbWUoZGwgPT4gZGwgPT09IGRhdGFMYW5nKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGFMYW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmFwcERhdGFMb2NhbGVzKCk/Lmxlbmd0aCA+IDAgPyB0aGlzLmdldERlZmF1bHRMb2NhbGUoKSA6ICdlbic7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEFwcERhdGFMb2NhbGUoZGF0YUxvY2FsZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcERhdGFMb2NhbGVzKCkuc29tZShkbCA9PiBkbCA9PT0gZGF0YUxvY2FsZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2FwcERhdGFMb2NhbGUuc2V0KGRhdGFMb2NhbGUpO1xuXG4gICAgICAgICAgICBpZiAoZGF0YUxvY2FsZSAhPT0gdGhpcy5nZXREZWZhdWx0TG9jYWxlKCkpIHRoaXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RhdGFMYW5nJywgZGF0YUxvY2FsZSk7XG4gICAgICAgICAgICBlbHNlIHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2RhdGFMYW5nJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJBcHBEYXRhTG9jYWxlKCkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdsYW5nJyk7XG4gICAgICAgIHRoaXMuX2FwcERhdGFMb2NhbGUuc2V0KHRoaXMuZ2V0RGVmYXVsdExvY2FsZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXBwVmVyc2lvbiA9IHNpZ25hbCh0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy52ZXJzaW9uKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvLyByaXBwbGVcbiAgICAgICAgdGhpcy5wcmltZW5nQ29uZmlnLnJpcHBsZSA9IHRydWU7XG5cbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFwcExvY2FsZXMgPSB0aGlzLmFwcExvY2FsZXMoKTtcbiAgICAgICAgICAgICAgICBpZiAoYXBwTG9jYWxlcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEFwcExvY2FsZSh0aGlzLmluaXRBcHBMb2NhbGUoKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmxhbmdzID0gdGhpcy5hcHBMb2NhbGVzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgYXBwRGF0YUxvY2FsZXMgPSB0aGlzLmFwcERhdGFMb2NhbGVzKCk7XG4gICAgICAgICAgICAgICAgaWYgKGFwcERhdGFMb2NhbGVzKSB0aGlzLnNldEFwcERhdGFMb2NhbGUodGhpcy5pbml0QXBwRGF0YUxvY2FsZSgpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7YWxsb3dTaWduYWxXcml0ZXM6IHRydWV9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAvLyBGaWx0ZXIgdGhlIE5hdmlnYXRpb25FbmQgZXZlbnRzIGFzIHRoZSBicmVhZGNydW1iIGlzIHVwZGF0ZWQgb25seSB3aGVuIHRoZSByb3V0ZSByZWFjaGVzIGl0cyBlbmRcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVCcmVhZGNydW1icygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFnZVRpdGxlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUJyZWFkY3J1bWJzKCk7XG4gICAgICAgICAgICB0aGlzLnNldFBhZ2VUaXRsZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVxuICAgICAgICAgICAgLnN0cmVhbSgnbW5nUHJpbWUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMucHJpbWVuZ0NvbmZpZy5zZXRUcmFuc2xhdGlvbih2YWx1ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0aWFsaXplKCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnSW5pdGlhbGl6ZScpO1xuICAgIH1cblxuICAgIC8vIEJSRUFEQ1JVTUIgYWN0aW9uc1xuICAgIHB1YmxpYyBmaW5kQnJlYWRjcnVtYkl0ZW0oaXRlbTogQ29tbW9uc01lbnVJdGVtKTogQ29tbW9uc01lbnVJdGVtIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5icmVhZGNydW1icygpO1xuICAgICAgICBpZiAoaXRlbS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmQoaSA9PiBpLmlkICYmIGkuaWQgPT09IGl0ZW0uaWQpID8/IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZXJMaW5rU3RyID0gQXJyYXkuaXNBcnJheShpdGVtLnJvdXRlckxpbmspID8gaXRlbS5yb3V0ZXJMaW5rLmpvaW4oJy8nKSA6IGl0ZW0ucm91dGVyTGluaztcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5maW5kKGkgPT4gaS5yb3V0ZXJMaW5rICYmIChBcnJheS5pc0FycmF5KGkucm91dGVyTGluaykgPyBpLnJvdXRlckxpbmsuam9pbignLycpIDogaS5yb3V0ZXJMaW5rKSA9PT0gcm91dGVyTGlua1N0cikgPz8gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnBvc2l0aW9uSW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5maW5kKGkgPT4gaS5wb3NpdGlvbkluZGV4ICYmIGkucG9zaXRpb25JbmRleCA9PT0gaS5wb3NpdGlvbkluZGV4KSA/PyBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ubGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5maW5kKGkgPT4gaS5sYWJlbCAmJiBpLmxhYmVsID09PSBpLmxhYmVsKSA/PyBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmQoaSA9PiBpLmljb24gJiYgaS5pY29uID09PSBpLmljb24pID8/IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZUJyZWFkY3J1bWJJdGVtKGl0ZW06IENvbW1vbnNNZW51SXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpdGVtcyA9IFsuLi50aGlzLmJyZWFkY3J1bWJzKCldO1xuICAgICAgICBsZXQgcG9zSWR4ID0gLTE7XG4gICAgICAgIGlmIChpdGVtLmlkKSB7XG4gICAgICAgICAgICBwb3NJZHggPSBpdGVtcy5maW5kSW5kZXgoaSA9PiBpLmlkICYmIGkuaWQgPT09IGl0ZW0uaWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ucm91dGVyTGluaykge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVyTGlua1N0ciA9IEFycmF5LmlzQXJyYXkoaXRlbS5yb3V0ZXJMaW5rKSA/IGl0ZW0ucm91dGVyTGluay5qb2luKCcvJykgOiBpdGVtLnJvdXRlckxpbms7XG4gICAgICAgICAgICBwb3NJZHggPSBpdGVtcy5maW5kSW5kZXgoaSA9PiBpLnJvdXRlckxpbmsgJiYgKEFycmF5LmlzQXJyYXkoaS5yb3V0ZXJMaW5rKSA/IGkucm91dGVyTGluay5qb2luKCcvJykgOiBpLnJvdXRlckxpbmspID09PSByb3V0ZXJMaW5rU3RyKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnBvc2l0aW9uSW5kZXgpIHtcbiAgICAgICAgICAgIHBvc0lkeCA9IGl0ZW1zLmZpbmRJbmRleChpID0+IGkucG9zaXRpb25JbmRleCAmJiBpLnBvc2l0aW9uSW5kZXggPT09IGkucG9zaXRpb25JbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5sYWJlbCkge1xuICAgICAgICAgICAgcG9zSWR4ID0gaXRlbXMuZmluZEluZGV4KGkgPT4gaS5sYWJlbCAmJiBpLmxhYmVsID09PSBpLmxhYmVsKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmljb24pIHtcbiAgICAgICAgICAgIHBvc0lkeCA9IGl0ZW1zLmZpbmRJbmRleChpID0+IGkuaWNvbiAmJiBpLmljb24gPT09IGkuaWNvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zSWR4IDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbXNbcG9zSWR4XSA9IHtcbiAgICAgICAgICAgIC4uLml0ZW1zW3Bvc0lkeF0sXG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgdXBkYXRlZDogdHJ1ZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuYnJlYWRjcnVtYnMuc2V0KGl0ZW1zKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUJyZWFkY3J1bWJzKCkge1xuICAgICAgICBpZiAodGhpcy5icmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5icmVhZGNydW1iSG9tZVRyYW5zbGF0ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iSG9tZVRyYW5zbGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iSG9tZVRyYW5zbGF0ZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvb3RSb3V0ZSA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3Q7XG5cbiAgICAgICAgY29uc3QgaG9tZUJyZWFkY3J1bWIgPSB0aGlzLmdlbmVyYXRlSG9tZUJyZWFkY3J1bWIocm9vdFJvdXRlKTtcbiAgICAgICAgaWYgKGhvbWVCcmVhZGNydW1iKSB7XG4gICAgICAgICAgICBpZiAoaG9tZUJyZWFkY3J1bWIubGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJIb21lVHJhbnNsYXRlU3Vic2NyaXB0aW9uID0gdGhpcy50cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgLmdldChob21lQnJlYWRjcnVtYi5sYWJlbClcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoaTE4biA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBob21lQnJlYWRjcnVtYi5sYWJlbCA9IGkxOG47XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJIb21lLnNldChob21lQnJlYWRjcnVtYik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJIb21lLnNldChob21lQnJlYWRjcnVtYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBicmVhZGNydW1iczogQ29tbW9uc01lbnVJdGVtW10gPSBbXTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHJvb3RSb3V0ZSwgW10sIGJyZWFkY3J1bWJzKTtcblxuICAgICAgICBicmVhZGNydW1icy5mb3JFYWNoKChiLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGIucG9zaXRpb25JbmRleCA9IGlkeDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgaTE4bktleXM6IEFycmF5PHN0cmluZz4gPSBicmVhZGNydW1icy5maWx0ZXIoYiA9PiB0eXBlb2YgYi5sYWJlbCA9PT0gJ3N0cmluZycpLm1hcChiID0+IGIubGFiZWwhKTtcbiAgICAgICAgaWYgKGkxOG5LZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNUcmFuc2xhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgIC5nZXQoaTE4bktleXMpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShpMThuID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBicmVhZGNydW1iIGhpZXJhcmNoeVxuICAgICAgICAgICAgICAgICAgICBicmVhZGNydW1icy5mb3JFYWNoKGIgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIubGFiZWwgJiYgaTE4bltiLmxhYmVsXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIubGFiZWwgPSBpMThuW2IubGFiZWxdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBFbWl0IHRoZSBuZXcgYnJlYWRjcnVtYnNcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icmVhZGNydW1icy5zZXQoYnJlYWRjcnVtYnMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1icy5zZXQoYnJlYWRjcnVtYnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUhvbWVCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCk6IENvbW1vbnNNZW51SXRlbSB8IG51bGwge1xuICAgICAgICBpZiAoIXJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IHJvdXRlLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YTtcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYlJvdXRlRGF0YSA9IHJvdXRlRGF0YT8uYnJlYWRjcnVtYjtcbiAgICAgICAgaWYgKGJyZWFkY3J1bWJSb3V0ZURhdGEgJiYgdHlwZW9mIGJyZWFkY3J1bWJSb3V0ZURhdGEgPT09ICdvYmplY3QnICYmICdpc0hvbWUnIGluIGJyZWFkY3J1bWJSb3V0ZURhdGEpIHtcbiAgICAgICAgICAgIGlmIChicmVhZGNydW1iUm91dGVEYXRhLmlzSG9tZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWIgPSB0aGlzLmNyZWF0ZUJyZWFkY3J1bWIoJy8nLCBicmVhZGNydW1iUm91dGVEYXRhLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChicmVhZGNydW1iKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBicmVhZGNydW1iLmljb24gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWIuaWNvbiA9ICdwaSBwaS1ob21lJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJyZWFkY3J1bWI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUhvbWVCcmVhZGNydW1iKHJvdXRlLmZpcnN0Q2hpbGQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVCcmVhZGNydW1icyhyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwsIHBhcmVudFVybFNlZ21lbnRzOiBzdHJpbmdbXSwgYnJlYWRjcnVtYnM6IENvbW1vbnNNZW51SXRlbVtdKSB7XG4gICAgICAgIGlmICghcm91dGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IHJvdXRlLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YTtcbiAgICAgICAgY29uc3Qgcm91dGVVcmxTZWdtZW50cyA9IHBhcmVudFVybFNlZ21lbnRzLmNvbmNhdChyb3V0ZS51cmwubWFwKHVybCA9PiB1cmwucGF0aCkpO1xuICAgICAgICBjb25zdCByb3V0ZVVybCA9IGAvJHtyb3V0ZVVybFNlZ21lbnRzLmpvaW4oJy8nKX1gO1xuICAgICAgICBpZiAocm91dGVEYXRhPy5icmVhZGNydW1iKSB7XG4gICAgICAgICAgICBjb25zdCBicmVhZGNydW1iUm91dGVEYXRhID0gcm91dGVEYXRhLmJyZWFkY3J1bWI7XG5cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJyZWFkY3J1bWJSb3V0ZURhdGEpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBicmVhZGNydW1iUm91dGVEYXRhSXRlbSBvZiBicmVhZGNydW1iUm91dGVEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWIgPSB0aGlzLmNyZWF0ZUJyZWFkY3J1bWIocm91dGVVcmwsIGJyZWFkY3J1bWJSb3V0ZURhdGFJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJyZWFkY3J1bWIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJzLnB1c2goYnJlYWRjcnVtYik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBicmVhZGNydW1iUm91dGVEYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgYnJlYWRjcnVtYnMucHVzaCguLi5icmVhZGNydW1iUm91dGVEYXRhKHJvdXRlVXJsLCByb3V0ZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBicmVhZGNydW1iID0gdGhpcy5jcmVhdGVCcmVhZGNydW1iKHJvdXRlVXJsLCBicmVhZGNydW1iUm91dGVEYXRhKTtcbiAgICAgICAgICAgICAgICBpZiAoYnJlYWRjcnVtYikge1xuICAgICAgICAgICAgICAgICAgICBicmVhZGNydW1icy5wdXNoKGJyZWFkY3J1bWIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdlbmVyYXRlQnJlYWRjcnVtYnMocm91dGUuZmlyc3RDaGlsZCwgcm91dGVVcmxTZWdtZW50cywgYnJlYWRjcnVtYnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQnJlYWRjcnVtYihyb3V0ZVVybDogc3RyaW5nLCByb3V0ZUJyZWFkY3J1bWI6IHN0cmluZyB8IEJyZWFkY3J1bWJNZW51SXRlbSwgaW5jbHVkZUhvbWUgPSBmYWxzZSk6IENvbW1vbnNNZW51SXRlbSB8IG51bGwge1xuICAgICAgICBjb25zdCBleGlzdGluZ0JyZWFkY3J1bWIgPSB0aGlzLmZpbmRCcmVhZGNydW1iSXRlbSh7cm91dGVyTGluazogcm91dGVVcmx9KTtcbiAgICAgICAgaWYgKGV4aXN0aW5nQnJlYWRjcnVtYj8udXBkYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQnJlYWRjcnVtYjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHJvdXRlQnJlYWRjcnVtYiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIC8vIGNoZWNrIGZvciB1cGRhdGVkIGV4aXN0aW5nIGJyZWFkY3J1bWJcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaWQ6IHJvdXRlVXJsLFxuICAgICAgICAgICAgICAgIGxhYmVsOiByb3V0ZUJyZWFkY3J1bWIsXG4gICAgICAgICAgICAgICAgcm91dGVyTGluazogcm91dGVVcmxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWluY2x1ZGVIb21lICYmIHR5cGVvZiByb3V0ZUJyZWFkY3J1bWIuaXNIb21lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIC8vIGhvbWUgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZFxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiByb3V0ZUJyZWFkY3J1bWIucm91dGVyTGluayA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICByb3V0ZUJyZWFkY3J1bWIucm91dGVyTGluayA9IHJvdXRlVXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm91dGVCcmVhZGNydW1iLmlkID0gcm91dGVVcmw7XG4gICAgICAgICAgICByZXR1cm4gcm91dGVCcmVhZGNydW1iO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVElUTEUgc2VjdGlvblxuXG4gICAgcHVibGljIHNldFBhZ2VUaXRsZSh0aXRsZT86IHN0cmluZykge1xuICAgICAgICBsZXQgY3VycmVudFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdDtcbiAgICAgICAgd2hpbGUgKGN1cnJlbnRSb3V0ZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICBjdXJyZW50Um91dGUgPSBjdXJyZW50Um91dGUuZmlyc3RDaGlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IGN1cnJlbnRSb3V0ZS5kYXRhIGFzIENvbW1vbnNSb3V0ZURhdGE7XG4gICAgICAgIGNvbnN0IHBhZ2VUaXRsZSA9IHRpdGxlID8/IHJvdXRlRGF0YS5wYWdlVGl0bGU7XG5cbiAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGhpcy5mb3JtYXRQYWdlVGl0bGUocGFnZVRpdGxlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRQYWdlVGl0bGUodGl0bGVQcmVmaXg/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgdGl0bGVQaWVjZXMgPSBbXTtcblxuICAgICAgICBpZiAodGl0bGVQcmVmaXgpIHtcbiAgICAgICAgICAgIHRpdGxlUGllY2VzLnB1c2godGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aXRsZVByZWZpeCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGl0bGVQaWVjZXMucHVzaCh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhcHAubmFtZScpKTtcblxuICAgICAgICByZXR1cm4gdGl0bGVQaWVjZXMuam9pbignIC0gJyk7XG4gICAgfVxufVxuIl19
|
|
357
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9zcmMvc2VydmljZXMvY29tbW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEQsT0FBTyxFQUF5QixhQUFhLEVBQUUsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFOUUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEMsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBSXBELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDOztBQUd0RSxNQUFNLE9BQU8sY0FBYztJQXNFaEIsZ0JBQWdCO1FBQ25CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEQsSUFBSSxXQUFXLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ2hFLE9BQU8sV0FBVyxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFB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QUFTLEdBQUcsWUFBWSxDQUFDLElBQXdCLENBQUM7UUFDeEQsTUFBTSxTQUFTLEdBQUcsS0FBSyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFFL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxlQUFlLENBQUMsV0FBb0I7UUFDeEMsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBRXZCLElBQUksV0FBVyxFQUFFLENBQUM7WUFDZCxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDMUQsQ0FBQztRQUVELFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUVyRCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs4R0E5WFEsY0FBYztrSEFBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZXN0cm95UmVmLCBJbmplY3RhYmxlLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtUaXRsZX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25FbmQsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7UHJpbWVOR0NvbmZpZ30gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtMb2dnZXJTZXJ2aWNlfSBmcm9tICcuLi9sb2cvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHtDb21tb25zTWVudUl0ZW19IGZyb20gJy4uL21vZGVscy9tZW51Lm1vZGVsJztcbmltcG9ydCB7SVVzZXJ9IGZyb20gJy4uL21vZGVscy91c2VyLm1vZGVsJztcbmltcG9ydCB7QnJlYWRjcnVtYk1lbnVJdGVtLCBDb21tb25zUm91dGVEYXRhfSBmcm9tICcuLi9yb3V0ZXIvcm91dGVyLm1vZGVsJztcbmltcG9ydCB7QlJPV1NFUl9TVE9SQUdFX0lUfSBmcm9tICcuL3Rva2Vucy9icm93c2VyLXN0b3JhZ2UudG9rZW4nO1xuaW1wb3J0IHtDT01NT05TX01PRFVMRV9DT05GSUdfSVR9IGZyb20gJy4vdG9rZW5zL21vZHVsZS1jb25maWcudG9rZW4nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29tbW9uc1NlcnZpY2Uge1xuICAgIC8vIGludGVybmFsXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXIgPSBpbmplY3QoTG9nZ2VyU2VydmljZSkuY3JlYXRlKCdDb21tb25zU2VydmljZScpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwcmltZW5nQ29uZmlnID0gaW5qZWN0KFByaW1lTkdDb25maWcpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlID0gaW5qZWN0KFRyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdGl0bGVTZXJ2aWNlID0gaW5qZWN0KFRpdGxlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1vZHVsZUNvbmZpZyA9IGluamVjdChDT01NT05TX01PRFVMRV9DT05GSUdfSVQsIHtvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9jYWxTdG9yYWdlID0gaW5qZWN0KEJST1dTRVJfU1RPUkFHRV9JVCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgLy8gYnJlYWRjcnVtYnNcbiAgICBwdWJsaWMgcmVhZG9ubHkgYnJlYWRjcnVtYkhvbWUgPSBzaWduYWw8Q29tbW9uc01lbnVJdGVtIHwgbnVsbD4oe1xuICAgICAgICBpY29uOiAncGkgcGktaG9tZScsXG4gICAgICAgIHJvdXRlckxpbms6ICcvJ1xuICAgIH0pO1xuICAgIHB1YmxpYyByZWFkb25seSBicmVhZGNydW1icyA9IHNpZ25hbDxDb21tb25zTWVudUl0ZW1bXT4oW10pO1xuICAgIHByaXZhdGUgYnJlYWRjcnVtYnNUcmFuc2xhdGVTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBicmVhZGNydW1iSG9tZVRyYW5zbGF0ZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcblxuICAgIC8vIHZpc3VhbFxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBsYXlvdXQgY29sb3JTY2hlbWUgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgY29sb3JTY2hlbWUgPSBzaWduYWwodGhpcy5tb2R1bGVDb25maWc/LmFwcD8uY29sb3JTY2hlbWUgPz8gJ2xpZ2h0Jyk7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIGxheW91dCBjb2xvclNjaGVtZSBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb2xvclNjaGVtZUlzTGlnaHQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbG9yU2NoZW1lKCkgPT09ICdsaWdodCcpO1xuXG4gICAgLy8gdXNlclxuICAgIHB1YmxpYyB1c2VyID0gc2lnbmFsPElVc2VyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAgIHB1YmxpYyB1c2VyUm9sZXMgPSBzaWduYWw8QXJyYXk8c3RyaW5nPj4oW10pO1xuXG4gICAgLy8gQVBQIHNlY3Rpb25cbiAgICBwdWJsaWMgYXBwTmFtZSA9IHNpZ25hbCh0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5uYW1lID8/ICdhcHAubmFtZScpO1xuICAgIHB1YmxpYyBhcHBPd25lciA9IHNpZ25hbCh0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5vd25lciA/PyAnYXBwLm93bmVyJyk7XG5cbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGFwcCBsb2dvIGluc3RlYWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBhcHBMb2dvTGlnaHQgPSBzaWduYWwoXG4gICAgICAgIHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29QYXRoTGlnaHQgPyB0aGlzLm1vZHVsZUNvbmZpZy5hcHAubG9nb1BhdGhMaWdodCA6IHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29QYXRoID8/ICdhc3NldHMvbGF5b3V0L2ltYWdlcy9sb2dvLnBuZydcbiAgICApO1xuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBsYXlvdXQgYXBwIGxvZ28gaW5zdGVhZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGFwcExvZ29EYXJrID0gc2lnbmFsKHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29QYXRoRGFyayA/IHRoaXMubW9kdWxlQ29uZmlnLmFwcC5sb2dvUGF0aERhcmsgOiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvUGF0aCA/PyAnYXNzZXRzL2xheW91dC9pbWFnZXMvbG9nby5wbmcnKTtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGFwcCBsb2dvIGluc3RlYWQuXG4gICAgICovXG4gICAgcHVibGljIGFwcExvZ28gPSBjb21wdXRlZCgoKSA9PiAodGhpcy5jb2xvclNjaGVtZUlzTGlnaHQoKSA/IHRoaXMuYXBwTG9nb0xpZ2h0KCkgOiB0aGlzLmFwcExvZ29EYXJrKCkpKTtcblxuICAgIC8qKlxuICAgICAqIEBkZXByZWNhdGVkIFVzZSBsYXlvdXQgYXBwIGxvZ28gaW5zdGVhZC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGFwcExvZ29OYW1lTGlnaHQgPSBzaWduYWwoXG4gICAgICAgIHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvZ29OYW1lUGF0aExpZ2h0ID8gdGhpcy5tb2R1bGVDb25maWcuYXBwLmxvZ29OYW1lUGF0aExpZ2h0IDogdGhpcy5tb2R1bGVDb25maWc/LmFwcD8ubG9nb05hbWVQYXRoID8/ICdhc3NldHMvbGF5b3V0L2ltYWdlcy9sb2dvLWFwcG5hbWUucG5nJ1xuICAgICk7XG4gICAgLyoqXG4gICAgICogQGRlcHJlY2F0ZWQgVXNlIGxheW91dCBhcHAgbG9nbyBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHByaXZhdGUgYXBwTG9nb05hbWVEYXJrID0gc2lnbmFsKFxuICAgICAgICB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvTmFtZVBhdGhEYXJrID8gdGhpcy5tb2R1bGVDb25maWcuYXBwLmxvZ29OYW1lUGF0aERhcmsgOiB0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5sb2dvTmFtZVBhdGggPz8gJ2Fzc2V0cy9sYXlvdXQvaW1hZ2VzL2xvZ28tYXBwbmFtZS5wbmcnXG4gICAgKTtcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGFwcCBsb2dvIGluc3RlYWQuXG4gICAgICovXG4gICAgcHVibGljIGFwcExvZ29OYW1lID0gY29tcHV0ZWQoKCkgPT4gKHRoaXMuY29sb3JTY2hlbWVJc0xpZ2h0KCkgPyB0aGlzLmFwcExvZ29OYW1lTGlnaHQoKSA6IHRoaXMuYXBwTG9nb05hbWVEYXJrKCkpKTtcblxuICAgIHB1YmxpYyBnZXREZWZhdWx0TG9jYWxlKCkge1xuICAgICAgICBjb25zdCBicm93c2VyTGFuZyA9IHRoaXMudHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XG4gICAgICAgIGlmIChicm93c2VyTGFuZyAmJiB0aGlzLmFwcExvY2FsZXMoKS5zb21lKGwgPT4gbCA9PT0gYnJvd3NlckxhbmcpKSB7XG4gICAgICAgICAgICByZXR1cm4gYnJvd3Nlckxhbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwTG9jYWxlcygpPy5sZW5ndGggPiAwID8gdGhpcy5hcHBMb2NhbGVzKClbMF0gOiAnZW4nO1xuICAgIH1cblxuICAgIHB1YmxpYyBhcHBMb2NhbGVzID0gc2lnbmFsKHRoaXMubW9kdWxlQ29uZmlnPy5hcHA/LmxvY2FsZXMgPz8gWydlbiddKTtcbiAgICBwcml2YXRlIF9hcHBMb2NhbGUgPSBzaWduYWw8c3RyaW5nPih0aGlzLmluaXRBcHBMb2NhbGUoKSk7XG4gICAgcHVibGljIGFwcExvY2FsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2FwcExvY2FsZSgpKTtcblxuICAgIHByaXZhdGUgaW5pdEFwcExvY2FsZSgpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBsc0xhbmcgPSB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5nJyk7XG4gICAgICAgIGlmIChsc0xhbmcgJiYgdGhpcy5hcHBMb2NhbGVzKCkuc29tZShsID0+IGwgPT09IGxzTGFuZykpIHtcbiAgICAgICAgICAgIHJldHVybiBsc0xhbmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGVmYXVsdExvY2FsZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRBcHBMb2NhbGUobGFuZ3VhZ2U6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5hcHBMb2NhbGVzKCkuc29tZShsID0+IGwgPT09IGxhbmd1YWdlKSkge1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUudXNlKGxhbmd1YWdlKTtcbiAgICAgICAgICAgIHRoaXMuX2FwcExvY2FsZS5zZXQobGFuZ3VhZ2UpO1xuICAgICAgICAgICAgaWYgKGxhbmd1YWdlICE9PSB0aGlzLmdldERlZmF1bHRMb2NhbGUoKSkgdGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFuZycsIGxhbmd1YWdlKTtcbiAgICAgICAgICAgIGVsc2UgdGhpcy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbGFuZycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyQXBwTG9jYWxlKCkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdsYW5nJyk7XG4gICAgICAgIHRoaXMuX2FwcExvY2FsZS5zZXQodGhpcy5nZXREZWZhdWx0TG9jYWxlKCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhcHBEYXRhTG9jYWxlcyA9IHNpZ25hbCh0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy5kYXRhTG9jYWxlcyA/PyBbJ2VuJ10pO1xuICAgIHByaXZhdGUgX2FwcERhdGFMb2NhbGUgPSBzaWduYWw8c3RyaW5nPih0aGlzLmluaXRBcHBEYXRhTG9jYWxlKCkpO1xuICAgIHB1YmxpYyBhcHBEYXRhTG9jYWxlID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fYXBwRGF0YUxvY2FsZSgpKTtcblxuICAgIHByaXZhdGUgaW5pdEFwcERhdGFMb2NhbGUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF0YUxhbmcgPSB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdkYXRhTGFuZycpO1xuICAgICAgICBpZiAoZGF0YUxhbmcgJiYgdGhpcy5hcHBEYXRhTG9jYWxlcygpLnNvbWUoZGwgPT4gZGwgPT09IGRhdGFMYW5nKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGFMYW5nO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmFwcERhdGFMb2NhbGVzKCk/Lmxlbmd0aCA+IDAgPyB0aGlzLmdldERlZmF1bHRMb2NhbGUoKSA6ICdlbic7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEFwcERhdGFMb2NhbGUoZGF0YUxvY2FsZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcERhdGFMb2NhbGVzKCkuc29tZShkbCA9PiBkbCA9PT0gZGF0YUxvY2FsZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2FwcERhdGFMb2NhbGUuc2V0KGRhdGFMb2NhbGUpO1xuXG4gICAgICAgICAgICBpZiAoZGF0YUxvY2FsZSAhPT0gdGhpcy5nZXREZWZhdWx0TG9jYWxlKCkpIHRoaXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RhdGFMYW5nJywgZGF0YUxvY2FsZSk7XG4gICAgICAgICAgICBlbHNlIHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2RhdGFMYW5nJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJBcHBEYXRhTG9jYWxlKCkge1xuICAgICAgICB0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdsYW5nJyk7XG4gICAgICAgIHRoaXMuX2FwcERhdGFMb2NhbGUuc2V0KHRoaXMuZ2V0RGVmYXVsdExvY2FsZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXBwVmVyc2lvbiA9IHNpZ25hbCh0aGlzLm1vZHVsZUNvbmZpZz8uYXBwPy52ZXJzaW9uKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvLyByaXBwbGVcbiAgICAgICAgdGhpcy5wcmltZW5nQ29uZmlnLnJpcHBsZSA9IHRydWU7XG5cbiAgICAgICAgZWZmZWN0KFxuICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFwcExvY2FsZXMgPSB0aGlzLmFwcExvY2FsZXMoKTtcbiAgICAgICAgICAgICAgICBpZiAoYXBwTG9jYWxlcykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEFwcExvY2FsZSh0aGlzLmluaXRBcHBMb2NhbGUoKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmxhbmdzID0gdGhpcy5hcHBMb2NhbGVzKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgYXBwRGF0YUxvY2FsZXMgPSB0aGlzLmFwcERhdGFMb2NhbGVzKCk7XG4gICAgICAgICAgICAgICAgaWYgKGFwcERhdGFMb2NhbGVzKSB0aGlzLnNldEFwcERhdGFMb2NhbGUodGhpcy5pbml0QXBwRGF0YUxvY2FsZSgpKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7YWxsb3dTaWduYWxXcml0ZXM6IHRydWV9XG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAvLyBGaWx0ZXIgdGhlIE5hdmlnYXRpb25FbmQgZXZlbnRzIGFzIHRoZSBicmVhZGNydW1iIGlzIHVwZGF0ZWQgb25seSB3aGVuIHRoZSByb3V0ZSByZWFjaGVzIGl0cyBlbmRcbiAgICAgICAgICAgICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVCcmVhZGNydW1icygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFnZVRpdGxlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUub25MYW5nQ2hhbmdlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUJyZWFkY3J1bWJzKCk7XG4gICAgICAgICAgICB0aGlzLnNldFBhZ2VUaXRsZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnRyYW5zbGF0ZVxuICAgICAgICAgICAgLnN0cmVhbSgnbW5nUHJpbWUnKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMucHJpbWVuZ0NvbmZpZy5zZXRUcmFuc2xhdGlvbih2YWx1ZSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0aWFsaXplKCkge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnSW5pdGlhbGl6ZScpO1xuICAgIH1cblxuICAgIC8vIEJSRUFEQ1JVTUIgYWN0aW9uc1xuICAgIHB1YmxpYyBmaW5kQnJlYWRjcnVtYkl0ZW0oaXRlbTogQ29tbW9uc01lbnVJdGVtKTogQ29tbW9uc01lbnVJdGVtIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5icmVhZGNydW1icygpO1xuICAgICAgICBpZiAoaXRlbS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmQoaSA9PiBpLmlkICYmIGkuaWQgPT09IGl0ZW0uaWQpID8/IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5yb3V0ZXJMaW5rKSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZXJMaW5rU3RyID0gQXJyYXkuaXNBcnJheShpdGVtLnJvdXRlckxpbmspID8gaXRlbS5yb3V0ZXJMaW5rLmpvaW4oJy8nKSA6IGl0ZW0ucm91dGVyTGluaztcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5maW5kKGkgPT4gaS5yb3V0ZXJMaW5rICYmIChBcnJheS5pc0FycmF5KGkucm91dGVyTGluaykgPyBpLnJvdXRlckxpbmsuam9pbignLycpIDogaS5yb3V0ZXJMaW5rKSA9PT0gcm91dGVyTGlua1N0cikgPz8gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnBvc2l0aW9uSW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5maW5kKGkgPT4gaS5wb3NpdGlvbkluZGV4ICYmIGkucG9zaXRpb25JbmRleCA9PT0gaS5wb3NpdGlvbkluZGV4KSA/PyBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ubGFiZWwpIHtcbiAgICAgICAgICAgIHJldHVybiBpdGVtcy5maW5kKGkgPT4gaS5sYWJlbCAmJiBpLmxhYmVsID09PSBpLmxhYmVsKSA/PyBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uaWNvbikge1xuICAgICAgICAgICAgcmV0dXJuIGl0ZW1zLmZpbmQoaSA9PiBpLmljb24gJiYgaS5pY29uID09PSBpLmljb24pID8/IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZUJyZWFkY3J1bWJJdGVtKGl0ZW06IENvbW1vbnNNZW51SXRlbSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpdGVtcyA9IFsuLi50aGlzLmJyZWFkY3J1bWJzKCldO1xuICAgICAgICBsZXQgcG9zSWR4ID0gLTE7XG4gICAgICAgIGlmIChpdGVtLmlkKSB7XG4gICAgICAgICAgICBwb3NJZHggPSBpdGVtcy5maW5kSW5kZXgoaSA9PiBpLmlkICYmIGkuaWQgPT09IGl0ZW0uaWQpO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0ucm91dGVyTGluaykge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVyTGlua1N0ciA9IEFycmF5LmlzQXJyYXkoaXRlbS5yb3V0ZXJMaW5rKSA/IGl0ZW0ucm91dGVyTGluay5qb2luKCcvJykgOiBpdGVtLnJvdXRlckxpbms7XG4gICAgICAgICAgICBwb3NJZHggPSBpdGVtcy5maW5kSW5kZXgoaSA9PiBpLnJvdXRlckxpbmsgJiYgKEFycmF5LmlzQXJyYXkoaS5yb3V0ZXJMaW5rKSA/IGkucm91dGVyTGluay5qb2luKCcvJykgOiBpLnJvdXRlckxpbmspID09PSByb3V0ZXJMaW5rU3RyKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLnBvc2l0aW9uSW5kZXgpIHtcbiAgICAgICAgICAgIHBvc0lkeCA9IGl0ZW1zLmZpbmRJbmRleChpID0+IGkucG9zaXRpb25JbmRleCAmJiBpLnBvc2l0aW9uSW5kZXggPT09IGkucG9zaXRpb25JbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5sYWJlbCkge1xuICAgICAgICAgICAgcG9zSWR4ID0gaXRlbXMuZmluZEluZGV4KGkgPT4gaS5sYWJlbCAmJiBpLmxhYmVsID09PSBpLmxhYmVsKTtcbiAgICAgICAgfSBlbHNlIGlmIChpdGVtLmljb24pIHtcbiAgICAgICAgICAgIHBvc0lkeCA9IGl0ZW1zLmZpbmRJbmRleChpID0+IGkuaWNvbiAmJiBpLmljb24gPT09IGkuaWNvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocG9zSWR4IDwgMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbXNbcG9zSWR4XSA9IHtcbiAgICAgICAgICAgIC4uLml0ZW1zW3Bvc0lkeF0sXG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgdXBkYXRlZDogdHJ1ZVxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuYnJlYWRjcnVtYnMuc2V0KGl0ZW1zKTtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUJyZWFkY3J1bWJzKCkge1xuICAgICAgICBpZiAodGhpcy5icmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1ic1RyYW5zbGF0ZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5icmVhZGNydW1iSG9tZVRyYW5zbGF0ZVN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iSG9tZVRyYW5zbGF0ZVN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iSG9tZVRyYW5zbGF0ZVN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvb3RSb3V0ZSA9IHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnNuYXBzaG90LnJvb3Q7XG5cbiAgICAgICAgY29uc3QgaG9tZUJyZWFkY3J1bWIgPSB0aGlzLmdlbmVyYXRlSG9tZUJyZWFkY3J1bWIocm9vdFJvdXRlKTtcbiAgICAgICAgaWYgKGhvbWVCcmVhZGNydW1iKSB7XG4gICAgICAgICAgICBpZiAoaG9tZUJyZWFkY3J1bWIubGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJIb21lVHJhbnNsYXRlU3Vic2NyaXB0aW9uID0gdGhpcy50cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgLmdldChob21lQnJlYWRjcnVtYi5sYWJlbClcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoaTE4biA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBob21lQnJlYWRjcnVtYi5sYWJlbCA9IGkxOG47XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJIb21lLnNldChob21lQnJlYWRjcnVtYik7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmJyZWFkY3J1bWJIb21lLnNldChob21lQnJlYWRjcnVtYik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBicmVhZGNydW1iczogQ29tbW9uc01lbnVJdGVtW10gPSBbXTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZUJyZWFkY3J1bWJzKHJvb3RSb3V0ZSwgW10sIGJyZWFkY3J1bWJzKTtcblxuICAgICAgICBicmVhZGNydW1icy5mb3JFYWNoKChiLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGIucG9zaXRpb25JbmRleCA9IGlkeDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgaTE4bktleXM6IEFycmF5PHN0cmluZz4gPSBicmVhZGNydW1icy5maWx0ZXIoYiA9PiB0eXBlb2YgYi5sYWJlbCA9PT0gJ3N0cmluZycpLm1hcChiID0+IGIubGFiZWwhKTtcbiAgICAgICAgaWYgKGkxOG5LZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYnNUcmFuc2xhdGVTdWJzY3JpcHRpb24gPSB0aGlzLnRyYW5zbGF0ZVxuICAgICAgICAgICAgICAgIC5nZXQoaTE4bktleXMpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShpMThuID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBicmVhZGNydW1iIGhpZXJhcmNoeVxuICAgICAgICAgICAgICAgICAgICBicmVhZGNydW1icy5mb3JFYWNoKGIgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIubGFiZWwgJiYgaTE4bltiLmxhYmVsXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIubGFiZWwgPSBpMThuW2IubGFiZWxdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBFbWl0IHRoZSBuZXcgYnJlYWRjcnVtYnNcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5icmVhZGNydW1icy5zZXQoYnJlYWRjcnVtYnMpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1icy5zZXQoYnJlYWRjcnVtYnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZW5lcmF0ZUhvbWVCcmVhZGNydW1iKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IHwgbnVsbCk6IENvbW1vbnNNZW51SXRlbSB8IG51bGwge1xuICAgICAgICBpZiAoIXJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IHJvdXRlLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YTtcbiAgICAgICAgY29uc3QgYnJlYWRjcnVtYlJvdXRlRGF0YSA9IHJvdXRlRGF0YT8uYnJlYWRjcnVtYjtcbiAgICAgICAgaWYgKGJyZWFkY3J1bWJSb3V0ZURhdGEgJiYgdHlwZW9mIGJyZWFkY3J1bWJSb3V0ZURhdGEgPT09ICdvYmplY3QnICYmICdpc0hvbWUnIGluIGJyZWFkY3J1bWJSb3V0ZURhdGEpIHtcbiAgICAgICAgICAgIGlmIChicmVhZGNydW1iUm91dGVEYXRhLmlzSG9tZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWIgPSB0aGlzLmNyZWF0ZUJyZWFkY3J1bWIoJy8nLCBicmVhZGNydW1iUm91dGVEYXRhLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChicmVhZGNydW1iKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBicmVhZGNydW1iLmljb24gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWIuaWNvbiA9ICdwaSBwaS1ob21lJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJyZWFkY3J1bWI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZUhvbWVCcmVhZGNydW1iKHJvdXRlLmZpcnN0Q2hpbGQpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2VuZXJhdGVCcmVhZGNydW1icyhyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IG51bGwsIHBhcmVudFVybFNlZ21lbnRzOiBzdHJpbmdbXSwgYnJlYWRjcnVtYnM6IENvbW1vbnNNZW51SXRlbVtdKSB7XG4gICAgICAgIGlmICghcm91dGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IHJvdXRlLmRhdGEgYXMgQ29tbW9uc1JvdXRlRGF0YTtcbiAgICAgICAgY29uc3Qgcm91dGVVcmxTZWdtZW50cyA9IHBhcmVudFVybFNlZ21lbnRzLmNvbmNhdChyb3V0ZS51cmwubWFwKHVybCA9PiB1cmwucGF0aCkpO1xuICAgICAgICBjb25zdCByb3V0ZVVybCA9IGAvJHtyb3V0ZVVybFNlZ21lbnRzLmpvaW4oJy8nKX1gO1xuICAgICAgICBpZiAocm91dGVEYXRhPy5icmVhZGNydW1iKSB7XG4gICAgICAgICAgICBjb25zdCBicmVhZGNydW1iUm91dGVEYXRhID0gcm91dGVEYXRhLmJyZWFkY3J1bWI7XG5cbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGJyZWFkY3J1bWJSb3V0ZURhdGEpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBicmVhZGNydW1iUm91dGVEYXRhSXRlbSBvZiBicmVhZGNydW1iUm91dGVEYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJyZWFkY3J1bWIgPSB0aGlzLmNyZWF0ZUJyZWFkY3J1bWIocm91dGVVcmwsIGJyZWFkY3J1bWJSb3V0ZURhdGFJdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJyZWFkY3J1bWIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFkY3J1bWJzLnB1c2goYnJlYWRjcnVtYik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBicmVhZGNydW1iUm91dGVEYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgYnJlYWRjcnVtYnMucHVzaCguLi5icmVhZGNydW1iUm91dGVEYXRhKHJvdXRlVXJsLCByb3V0ZSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBicmVhZGNydW1iID0gdGhpcy5jcmVhdGVCcmVhZGNydW1iKHJvdXRlVXJsLCBicmVhZGNydW1iUm91dGVEYXRhKTtcbiAgICAgICAgICAgICAgICBpZiAoYnJlYWRjcnVtYikge1xuICAgICAgICAgICAgICAgICAgICBicmVhZGNydW1icy5wdXNoKGJyZWFkY3J1bWIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdlbmVyYXRlQnJlYWRjcnVtYnMocm91dGUuZmlyc3RDaGlsZCwgcm91dGVVcmxTZWdtZW50cywgYnJlYWRjcnVtYnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlQnJlYWRjcnVtYihyb3V0ZVVybDogc3RyaW5nLCByb3V0ZUJyZWFkY3J1bWI6IHN0cmluZyB8IEJyZWFkY3J1bWJNZW51SXRlbSwgaW5jbHVkZUhvbWUgPSBmYWxzZSk6IENvbW1vbnNNZW51SXRlbSB8IG51bGwge1xuICAgICAgICBjb25zdCBleGlzdGluZ0JyZWFkY3J1bWIgPSB0aGlzLmZpbmRCcmVhZGNydW1iSXRlbSh7cm91dGVyTGluazogcm91dGVVcmx9KTtcbiAgICAgICAgaWYgKGV4aXN0aW5nQnJlYWRjcnVtYj8udXBkYXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nQnJlYWRjcnVtYjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHJvdXRlQnJlYWRjcnVtYiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIC8vIGNoZWNrIGZvciB1cGRhdGVkIGV4aXN0aW5nIGJyZWFkY3J1bWJcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgaWQ6IHJvdXRlVXJsLFxuICAgICAgICAgICAgICAgIGxhYmVsOiByb3V0ZUJyZWFkY3J1bWIsXG4gICAgICAgICAgICAgICAgcm91dGVyTGluazogcm91dGVVcmxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIWluY2x1ZGVIb21lICYmIHR5cGVvZiByb3V0ZUJyZWFkY3J1bWIuaXNIb21lICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIC8vIGhvbWUgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZFxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGVvZiByb3V0ZUJyZWFkY3J1bWIucm91dGVyTGluayA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICByb3V0ZUJyZWFkY3J1bWIucm91dGVyTGluayA9IHJvdXRlVXJsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcm91dGVCcmVhZGNydW1iLmlkID0gcm91dGVVcmw7XG4gICAgICAgICAgICByZXR1cm4gcm91dGVCcmVhZGNydW1iO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVElUTEUgc2VjdGlvblxuXG4gICAgcHVibGljIHNldFBhZ2VUaXRsZSh0aXRsZT86IHN0cmluZykge1xuICAgICAgICBsZXQgY3VycmVudFJvdXRlID0gdGhpcy5yb3V0ZXIucm91dGVyU3RhdGUuc25hcHNob3Qucm9vdDtcbiAgICAgICAgd2hpbGUgKGN1cnJlbnRSb3V0ZS5maXJzdENoaWxkKSB7XG4gICAgICAgICAgICBjdXJyZW50Um91dGUgPSBjdXJyZW50Um91dGUuZmlyc3RDaGlsZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJvdXRlRGF0YSA9IGN1cnJlbnRSb3V0ZS5kYXRhIGFzIENvbW1vbnNSb3V0ZURhdGE7XG4gICAgICAgIGNvbnN0IHBhZ2VUaXRsZSA9IHRpdGxlID8/IHJvdXRlRGF0YS5wYWdlVGl0bGU7XG5cbiAgICAgICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0VGl0bGUodGhpcy5mb3JtYXRQYWdlVGl0bGUocGFnZVRpdGxlKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRQYWdlVGl0bGUodGl0bGVQcmVmaXg/OiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgdGl0bGVQaWVjZXMgPSBbXTtcblxuICAgICAgICBpZiAodGl0bGVQcmVmaXgpIHtcbiAgICAgICAgICAgIHRpdGxlUGllY2VzLnB1c2godGhpcy50cmFuc2xhdGUuaW5zdGFudCh0aXRsZVByZWZpeCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGl0bGVQaWVjZXMucHVzaCh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdhcHAubmFtZScpKTtcblxuICAgICAgICByZXR1cm4gdGl0bGVQaWVjZXMuam9pbignIC0gJyk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
export const COMMONS_MODULE_CONFIG_IT = new InjectionToken('COMMONS_MODULE_CONFIG');
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWNvbmZpZy50b2tlbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2NvcmUvc3JjL3NlcnZpY2VzL3Rva2Vucy9tb2R1bGUtY29uZmlnLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxlQUFlLENBQUM7QUEwRDdDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUFzQix1QkFBdUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7TG9nQ29uZmlnfSBmcm9tICcuLi8uLi9sb2cvbG9nLm1vZGVsJztcbmltcG9ydCB7VmVyc2lvbkNvbmZpZ1R5cGV9IGZyb20gJy4uLy4uL21vZGVscy92ZXJzaW9uLm1vZGVsJztcblxuZXhwb3J0IHR5cGUgQ29sb3JTY2hlbWUgPSAnbGlnaHQnIHwgJ2RhcmsnIHwgJ2F1dG8nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbnNNb2R1bGVDb25maWcge1xuICAgIGFwcD86IHtcbiAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgb3duZXI/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGNvbmZpZyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBsb2dvUGF0aD86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIFVzZSBsYXlvdXQgY29uZmlnIGluc3RlYWRcbiAgICAgICAgICovXG4gICAgICAgIGxvZ29QYXRoTGlnaHQ/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGNvbmZpZyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBsb2dvUGF0aERhcms/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGNvbmZpZyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBsb2dvTmFtZVBhdGg/OiBzdHJpbmc7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAZGVwcmVjYXRlZCBVc2UgbGF5b3V0IGNvbmZpZyBpbnN0ZWFkXG4gICAgICAgICAqL1xuICAgICAgICBsb2dvTmFtZVBhdGhMaWdodD86IHN0cmluZztcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBkZXByZWNhdGVkIFVzZSBsYXlvdXQgY29uZmlnIGluc3RlYWRcbiAgICAgICAgICovXG4gICAgICAgIGxvZ29OYW1lUGF0aERhcms/OiBzdHJpbmc7XG4gICAgICAgIGxvY2FsZXM/OiBzdHJpbmdbXTtcbiAgICAgICAgZGF0YUxvY2FsZXM/OiBzdHJpbmdbXTtcbiAgICAgICAgdmVyc2lvbj86IFZlcnNpb25Db25maWdUeXBlO1xuICAgICAgICAvKipcbiAgICAgICAgICogQGRlcHJlY2F0ZWQgVXNlIGxheW91dCBjb25maWcgaW5zdGVhZFxuICAgICAgICAgKi9cbiAgICAgICAgY29sb3JTY2hlbWU/OiBDb2xvclNjaGVtZTtcbiAgICB9O1xuICAgIGNvbmZpZ3VyYXRpb24/OiB7XG4gICAgICAgIHByb2plY3RFbnZpcm9ubWVudD86IGFueTtcbiAgICAgICAganNvblNvdXJjZT86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XG4gICAgICAgIHNraXBKc29uU291cmNlSW5pdD86IGJvb2xlYW47XG4gICAgICAgIGpzb25Tb3VyY2VFbmFibGVFbnZQcm9kPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIHNlcmlhbGl6YXRpb24/OiB7XG4gICAgICAgIGRhdGVUaW1lSW5VdGM/OiBib29sZWFuO1xuICAgICAgICBkYXRlVGltZVdpdGhUaW1lem9uZT86IGJvb2xlYW47XG4gICAgICAgIGRhdGVUaW1lV2l0aE1pbGxpcz86IGJvb2xlYW47XG4gICAgICAgIGZpbHRlcnNEYXRlT25seURpc2FibGVkPzogYm9vbGVhbjtcbiAgICB9O1xuICAgIGxvZz86IExvZ0NvbmZpZztcbn1cblxuZXhwb3J0IGNvbnN0IENPTU1PTlNfTU9EVUxFX0NPTkZJR19JVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21tb25zTW9kdWxlQ29uZmlnPignQ09NTU9OU19NT0RVTEVfQ09ORklHJyk7XG4iXX0=
|