@abp/ng.identity 7.2.2 → 7.3.0-rc.2

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.
Files changed (107) hide show
  1. package/README.md +129 -2
  2. package/config/enums/index.d.ts +2 -2
  3. package/config/enums/policy-names.d.ts +5 -5
  4. package/config/enums/route-names.d.ts +5 -5
  5. package/config/identity-config.module.d.ts +8 -8
  6. package/config/index.d.ts +5 -5
  7. package/config/providers/index.d.ts +1 -1
  8. package/config/providers/route.provider.d.ts +8 -8
  9. package/config/public-api.d.ts +3 -3
  10. package/{esm2020 → esm2022}/abp-ng.identity.mjs +4 -4
  11. package/{esm2020 → esm2022}/config/abp-ng.identity-config.mjs +4 -4
  12. package/{esm2020 → esm2022}/config/enums/index.mjs +2 -2
  13. package/{esm2020 → esm2022}/config/enums/policy-names.mjs +1 -1
  14. package/{esm2020 → esm2022}/config/enums/route-names.mjs +1 -1
  15. package/esm2022/config/identity-config.module.mjs +19 -0
  16. package/{esm2020 → esm2022}/config/providers/index.mjs +1 -1
  17. package/{esm2020 → esm2022}/config/providers/route.provider.mjs +34 -34
  18. package/{esm2020 → esm2022}/config/public-api.mjs +3 -3
  19. package/{esm2020 → esm2022}/lib/components/index.mjs +2 -2
  20. package/esm2022/lib/components/roles/roles.component.mjs +112 -0
  21. package/esm2022/lib/components/users/users.component.mjs +151 -0
  22. package/{esm2020 → esm2022}/lib/defaults/default-roles-entity-actions.mjs +29 -29
  23. package/{esm2020 → esm2022}/lib/defaults/default-roles-entity-props.mjs +23 -23
  24. package/{esm2020 → esm2022}/lib/defaults/default-roles-form-props.mjs +27 -27
  25. package/{esm2020 → esm2022}/lib/defaults/default-roles-toolbar-actions.mjs +13 -13
  26. package/{esm2020 → esm2022}/lib/defaults/default-users-entity-actions.mjs +35 -35
  27. package/{esm2020 → esm2022}/lib/defaults/default-users-entity-props.mjs +33 -33
  28. package/{esm2020 → esm2022}/lib/defaults/default-users-form-props.mjs +71 -71
  29. package/{esm2020 → esm2022}/lib/defaults/default-users-toolbar-actions.mjs +13 -13
  30. package/{esm2020 → esm2022}/lib/enums/components.mjs +1 -1
  31. package/{esm2020 → esm2022}/lib/enums/index.mjs +1 -1
  32. package/esm2022/lib/guards/extensions.guard.mjs +37 -0
  33. package/{esm2020 → esm2022}/lib/guards/index.mjs +1 -1
  34. package/esm2022/lib/identity-routing.module.mjs +54 -0
  35. package/esm2022/lib/identity.module.mjs +86 -0
  36. package/{esm2020 → esm2022}/lib/models/config-options.mjs +1 -1
  37. package/{esm2020 → esm2022}/lib/models/index.mjs +1 -1
  38. package/{esm2020 → esm2022}/lib/tokens/extensions.token.mjs +34 -34
  39. package/{esm2020 → esm2022}/lib/tokens/index.mjs +1 -1
  40. package/{esm2020 → esm2022}/proxy/abp-ng.identity-proxy.mjs +4 -4
  41. package/{esm2020 → esm2022}/proxy/lib/index.mjs +2 -2
  42. package/esm2022/proxy/lib/proxy/identity/identity-role.service.mjs +47 -0
  43. package/esm2022/proxy/lib/proxy/identity/identity-user-lookup.service.mjs +38 -0
  44. package/esm2022/proxy/lib/proxy/identity/identity-user.service.mjs +64 -0
  45. package/{esm2020 → esm2022}/proxy/lib/proxy/identity/index.mjs +4 -4
  46. package/{esm2020 → esm2022}/proxy/lib/proxy/identity/models.mjs +1 -1
  47. package/{esm2020 → esm2022}/proxy/lib/proxy/users/index.mjs +1 -1
  48. package/{esm2020 → esm2022}/proxy/lib/proxy/users/models.mjs +1 -1
  49. package/{esm2020 → esm2022}/proxy/public-api.mjs +1 -1
  50. package/{esm2020 → esm2022}/public-api.mjs +6 -6
  51. package/{fesm2015 → fesm2022}/abp-ng.identity-config.mjs +46 -46
  52. package/{fesm2020 → fesm2022}/abp-ng.identity-config.mjs.map +1 -1
  53. package/{fesm2020 → fesm2022}/abp-ng.identity-proxy.mjs +130 -130
  54. package/{fesm2015 → fesm2022}/abp-ng.identity-proxy.mjs.map +1 -1
  55. package/{fesm2020 → fesm2022}/abp-ng.identity.mjs +609 -609
  56. package/fesm2022/abp-ng.identity.mjs.map +1 -0
  57. package/index.d.ts +5 -5
  58. package/lib/components/index.d.ts +2 -2
  59. package/lib/components/roles/roles.component.d.ts +36 -36
  60. package/lib/components/users/users.component.d.ts +44 -44
  61. package/lib/defaults/default-roles-entity-actions.d.ts +3 -3
  62. package/lib/defaults/default-roles-entity-props.d.ts +3 -3
  63. package/lib/defaults/default-roles-form-props.d.ts +4 -4
  64. package/lib/defaults/default-roles-toolbar-actions.d.ts +3 -3
  65. package/lib/defaults/default-users-entity-actions.d.ts +3 -3
  66. package/lib/defaults/default-users-entity-props.d.ts +3 -3
  67. package/lib/defaults/default-users-form-props.d.ts +4 -4
  68. package/lib/defaults/default-users-toolbar-actions.d.ts +3 -3
  69. package/lib/enums/components.d.ts +4 -4
  70. package/lib/enums/index.d.ts +1 -1
  71. package/lib/guards/extensions.guard.d.ts +11 -11
  72. package/lib/guards/index.d.ts +1 -1
  73. package/lib/identity-routing.module.d.ts +7 -7
  74. package/lib/identity.module.d.ts +20 -20
  75. package/lib/models/config-options.d.ts +30 -30
  76. package/lib/models/index.d.ts +1 -1
  77. package/lib/tokens/extensions.token.d.ts +43 -43
  78. package/lib/tokens/index.d.ts +1 -1
  79. package/package.json +15 -25
  80. package/proxy/index.d.ts +5 -5
  81. package/proxy/lib/index.d.ts +2 -2
  82. package/proxy/lib/proxy/identity/identity-role.service.d.ts +17 -17
  83. package/proxy/lib/proxy/identity/identity-user-lookup.service.d.ts +16 -16
  84. package/proxy/lib/proxy/identity/identity-user.service.d.ts +21 -21
  85. package/proxy/lib/proxy/identity/index.d.ts +4 -4
  86. package/proxy/lib/proxy/identity/models.d.ts +64 -64
  87. package/proxy/lib/proxy/users/index.d.ts +1 -1
  88. package/proxy/lib/proxy/users/models.d.ts +11 -11
  89. package/proxy/public-api.d.ts +1 -1
  90. package/public-api.d.ts +6 -6
  91. package/esm2020/config/identity-config.module.mjs +0 -18
  92. package/esm2020/lib/components/roles/roles.component.mjs +0 -111
  93. package/esm2020/lib/components/users/users.component.mjs +0 -150
  94. package/esm2020/lib/guards/extensions.guard.mjs +0 -36
  95. package/esm2020/lib/identity-routing.module.mjs +0 -53
  96. package/esm2020/lib/identity.module.mjs +0 -85
  97. package/esm2020/proxy/lib/proxy/identity/identity-role.service.mjs +0 -46
  98. package/esm2020/proxy/lib/proxy/identity/identity-user-lookup.service.mjs +0 -37
  99. package/esm2020/proxy/lib/proxy/identity/identity-user.service.mjs +0 -63
  100. package/fesm2015/abp-ng.identity-config.mjs.map +0 -1
  101. package/fesm2015/abp-ng.identity-proxy.mjs +0 -144
  102. package/fesm2015/abp-ng.identity.mjs +0 -661
  103. package/fesm2015/abp-ng.identity.mjs.map +0 -1
  104. package/fesm2020/abp-ng.identity-config.mjs +0 -58
  105. package/fesm2020/abp-ng.identity-proxy.mjs.map +0 -1
  106. package/fesm2020/abp-ng.identity.mjs.map +0 -1
  107. package/proxy/src/lib/proxy/README.md +0 -17
package/README.md CHANGED
@@ -1,3 +1,130 @@
1
- <h1> @abp/ng.identity </h1>
1
+ ## ℹ️ Description
2
2
 
3
- [docs.abp.io](https://docs.abp.io)
3
+ ABP Framework is a complete open-source infrastructure to create modern web applications by following the best practices and conventions of software development. This package is a part of the [ABP Framework](https://abp.io) and contains client-side files.
4
+ For more information, check out the below links:
5
+
6
+ 🔗Official Website: https://abp.io
7
+
8
+ 🔗Commercial Website: https://commercial.abp.io
9
+
10
+ 🔗Commercial Demo: https://commercial.abp.io/demo
11
+
12
+ 🔗GitHub Repository: https://github.com/abpframework/abp
13
+
14
+ 🔗Official Theme: https://www.LeptonTheme.com
15
+
16
+ 🔗Documentation: https://docs.abp.io
17
+
18
+ 🔗Community: https://community.abp.io
19
+
20
+ 🔗Blog: https://blog.abp.io
21
+
22
+ 🔗Books: https://abp.io/books
23
+
24
+ 🔗Twitter: https://twitter.com/abpframework
25
+
26
+ 🔗Discord: https://community.abp.io/discord
27
+
28
+ 🔗Stackoverflow: https://stackoverflow.com/questions/tagged/abp
29
+
30
+ 🔗YouTube: https://www.youtube.com/@Volosoft
31
+
32
+
33
+ ## 🤔 Why ABP Platform?
34
+
35
+ Why should you use the ABP.IO Platform instead of creating a new solution from scratch?
36
+
37
+ You can find the answer here 👉🏻 [Why ABP Platform?](https://docs.abp.io/en/commercial/latest/why-abp-io-platform)
38
+
39
+
40
+ ## 🚀 Key Features of the ABP Framework
41
+
42
+ 🟡 Modularity
43
+
44
+ 🟡 Multi-Tenancy
45
+
46
+ 🟡 Bootstrap Tag Helpers
47
+
48
+ 🟡 Dynamic Forms
49
+
50
+ 🟡 Authentication
51
+
52
+ 🟡 Authorization
53
+
54
+ 🟡 Distributed Event Bus
55
+
56
+ 🟡 BLOB Storing
57
+
58
+ 🟡 Text Templating
59
+
60
+ 🟡 Tooling: ABP CLI
61
+
62
+ 🟡 Cross-Cutting Concerns
63
+
64
+ 🟡 Bundling & Minification
65
+
66
+ 🟡 Virtual File System
67
+
68
+ 🟡 Theming
69
+
70
+ 🟡 Background Jobs
71
+
72
+ 🟡 DDD Infrastructure
73
+
74
+ 🟡 Auto REST APIs
75
+
76
+ 🟡 Dynamic Client Proxies
77
+
78
+ 🟡 Multiple Database Providers
79
+
80
+ 🟡 Data filtering
81
+
82
+ 🟡 Test Infrastructure
83
+
84
+ 🟡 Audit Logging
85
+
86
+ 🟡 Object to Object Mapping
87
+
88
+ 🟡 Email & SMS Abstractions
89
+
90
+ 🟡 Localization
91
+
92
+ 🟡 Setting Management
93
+
94
+ 🟡 Extension Methods
95
+
96
+ 🟡 Aspect Oriented Programming
97
+
98
+ 🟡 Dependency Injection
99
+
100
+
101
+ ## 🧐 How It Works?
102
+
103
+ The following page explains how you use the ABP.IO Platform as a .NET developer 👉 [How it works?](https://commercial.abp.io/how-it-works)
104
+
105
+
106
+ ### 📘 Supported Database Providers
107
+
108
+ 🔵 Entity Framework Core
109
+
110
+ 🔵 MongoDB
111
+
112
+ 🔵 Dapper
113
+
114
+
115
+ ### 🎴 Supported UI Frameworks
116
+
117
+ 🔵 Angular
118
+
119
+ 🔵 Razor Pages
120
+
121
+ 🔵 Blazor Web Assembly
122
+
123
+ 🔵 Blazor Server
124
+
125
+ 🔵 MAUI with Blazor Hybrid
126
+
127
+
128
+ ## 📫 Bug & Support
129
+
130
+ Support for open-source ABP Framework client-side packages is available at [GitHub Issues](https://github.com/abpframework/abp/issues), and the commercial support is available at [support.abp.io](https://support.abp.io).
@@ -1,2 +1,2 @@
1
- export * from './policy-names';
2
- export * from './route-names';
1
+ export * from './policy-names';
2
+ export * from './route-names';
@@ -1,5 +1,5 @@
1
- export declare const enum eIdentityPolicyNames {
2
- IdentityManagement = "AbpIdentity.Roles || AbpIdentity.Users",
3
- Roles = "AbpIdentity.Roles",
4
- Users = "AbpIdentity.Users"
5
- }
1
+ export declare const enum eIdentityPolicyNames {
2
+ IdentityManagement = "AbpIdentity.Roles || AbpIdentity.Users",
3
+ Roles = "AbpIdentity.Roles",
4
+ Users = "AbpIdentity.Users"
5
+ }
@@ -1,5 +1,5 @@
1
- export declare const enum eIdentityRouteNames {
2
- IdentityManagement = "AbpIdentity::Menu:IdentityManagement",
3
- Roles = "AbpIdentity::Roles",
4
- Users = "AbpIdentity::Users"
5
- }
1
+ export declare const enum eIdentityRouteNames {
2
+ IdentityManagement = "AbpIdentity::Menu:IdentityManagement",
3
+ Roles = "AbpIdentity::Roles",
4
+ Users = "AbpIdentity::Users"
5
+ }
@@ -1,8 +1,8 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class IdentityConfigModule {
4
- static forRoot(): ModuleWithProviders<IdentityConfigModule>;
5
- static ɵfac: i0.ɵɵFactoryDeclaration<IdentityConfigModule, never>;
6
- static ɵmod: i0.ɵɵNgModuleDeclaration<IdentityConfigModule, never, never, never>;
7
- static ɵinj: i0.ɵɵInjectorDeclaration<IdentityConfigModule>;
8
- }
1
+ import { ModuleWithProviders } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class IdentityConfigModule {
4
+ static forRoot(): ModuleWithProviders<IdentityConfigModule>;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<IdentityConfigModule, never>;
6
+ static ɵmod: i0.ɵɵNgModuleDeclaration<IdentityConfigModule, never, never, never>;
7
+ static ɵinj: i0.ɵɵInjectorDeclaration<IdentityConfigModule>;
8
+ }
package/config/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- /// <amd-module name="@abp/ng.identity/config" />
5
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@abp/ng.identity/config" />
5
+ export * from './public-api';
@@ -1 +1 @@
1
- export * from './route.provider';
1
+ export * from './route.provider';
@@ -1,8 +1,8 @@
1
- import { RoutesService } from '@abp/ng.core';
2
- export declare const IDENTITY_ROUTE_PROVIDERS: {
3
- provide: import("@angular/core").InjectionToken<readonly (() => void | import("rxjs").Observable<unknown> | Promise<unknown>)[]>;
4
- useFactory: typeof configureRoutes;
5
- deps: (typeof RoutesService)[];
6
- multi: boolean;
7
- }[];
8
- export declare function configureRoutes(routesService: RoutesService): () => void;
1
+ import { RoutesService } from '@abp/ng.core';
2
+ export declare const IDENTITY_ROUTE_PROVIDERS: {
3
+ provide: import("@angular/core").InjectionToken<readonly (() => void | import("rxjs").Observable<unknown> | Promise<unknown>)[]>;
4
+ useFactory: typeof configureRoutes;
5
+ deps: (typeof RoutesService)[];
6
+ multi: boolean;
7
+ }[];
8
+ export declare function configureRoutes(routesService: RoutesService): () => void;
@@ -1,3 +1,3 @@
1
- export * from './enums';
2
- export * from './identity-config.module';
3
- export * from './providers';
1
+ export * from './enums';
2
+ export * from './identity-config.module';
3
+ export * from './providers';
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLmlkZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvaWRlbnRpdHkvc3JjL2FicC1uZy5pZGVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,5 +1,5 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
5
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJwLW5nLmlkZW50aXR5LWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lkZW50aXR5L2NvbmZpZy9zcmMvYWJwLW5nLmlkZW50aXR5LWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
@@ -1,3 +1,3 @@
1
- export * from './policy-names';
2
- export * from './route-names';
1
+ export * from './policy-names';
2
+ export * from './route-names';
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pZGVudGl0eS9jb25maWcvc3JjL2VudW1zL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BvbGljeS1uYW1lcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcm91dGUtbmFtZXMnO1xyXG4iXX0=
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9saWN5LW5hbWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaWRlbnRpdHkvY29uZmlnL3NyYy9lbnVtcy9wb2xpY3ktbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBlbnVtIGVJZGVudGl0eVBvbGljeU5hbWVzIHtcclxuICBJZGVudGl0eU1hbmFnZW1lbnQgPSAnQWJwSWRlbnRpdHkuUm9sZXMgfHwgQWJwSWRlbnRpdHkuVXNlcnMnLFxyXG4gIFJvbGVzID0gJ0FicElkZW50aXR5LlJvbGVzJyxcclxuICBVc2VycyA9ICdBYnBJZGVudGl0eS5Vc2VycycsXHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtbmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pZGVudGl0eS9jb25maWcvc3JjL2VudW1zL3JvdXRlLW5hbWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZW51bSBlSWRlbnRpdHlSb3V0ZU5hbWVzIHtcclxuICBJZGVudGl0eU1hbmFnZW1lbnQgPSAnQWJwSWRlbnRpdHk6Ok1lbnU6SWRlbnRpdHlNYW5hZ2VtZW50JyxcclxuICBSb2xlcyA9ICdBYnBJZGVudGl0eTo6Um9sZXMnLFxyXG4gIFVzZXJzID0gJ0FicElkZW50aXR5OjpVc2VycycsXHJcbn1cclxuIl19
@@ -0,0 +1,19 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { IDENTITY_ROUTE_PROVIDERS } from './providers/route.provider';
3
+ import * as i0 from "@angular/core";
4
+ class IdentityConfigModule {
5
+ static forRoot() {
6
+ return {
7
+ ngModule: IdentityConfigModule,
8
+ providers: [IDENTITY_ROUTE_PROVIDERS],
9
+ };
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: IdentityConfigModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.0.1", ngImport: i0, type: IdentityConfigModule }); }
13
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: IdentityConfigModule }); }
14
+ }
15
+ export { IdentityConfigModule };
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: IdentityConfigModule, decorators: [{
17
+ type: NgModule
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRlbnRpdHktY29uZmlnLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lkZW50aXR5L2NvbmZpZy9zcmMvaWRlbnRpdHktY29uZmlnLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFdEUsTUFDYSxvQkFBb0I7SUFDL0IsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztTQUN0QyxDQUFDO0lBQ0osQ0FBQzs4R0FOVSxvQkFBb0I7K0dBQXBCLG9CQUFvQjsrR0FBcEIsb0JBQW9COztTQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElERU5USVRZX1JPVVRFX1BST1ZJREVSUyB9IGZyb20gJy4vcHJvdmlkZXJzL3JvdXRlLnByb3ZpZGVyJztcclxuXHJcbkBOZ01vZHVsZSgpXHJcbmV4cG9ydCBjbGFzcyBJZGVudGl0eUNvbmZpZ01vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxJZGVudGl0eUNvbmZpZ01vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IElkZW50aXR5Q29uZmlnTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtJREVOVElUWV9ST1VURV9QUk9WSURFUlNdLFxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,2 +1,2 @@
1
- export * from './route.provider';
1
+ export * from './route.provider';
2
2
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pZGVudGl0eS9jb25maWcvc3JjL3Byb3ZpZGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yb3V0ZS5wcm92aWRlcic7XHJcbiJdfQ==
@@ -1,35 +1,35 @@
1
- import { RoutesService } from '@abp/ng.core';
2
- import { APP_INITIALIZER } from '@angular/core';
3
- export const IDENTITY_ROUTE_PROVIDERS = [
4
- { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },
5
- ];
6
- export function configureRoutes(routesService) {
7
- return () => {
8
- routesService.add([
9
- {
10
- path: undefined,
11
- name: "AbpIdentity::Menu:IdentityManagement" /* eIdentityRouteNames.IdentityManagement */,
12
- parentName: "AbpUiNavigation::Menu:Administration" /* eThemeSharedRouteNames.Administration */,
13
- requiredPolicy: "AbpIdentity.Roles || AbpIdentity.Users" /* eIdentityPolicyNames.IdentityManagement */,
14
- iconClass: 'fa fa-id-card-o',
15
- layout: "application" /* eLayoutType.application */,
16
- order: 1,
17
- },
18
- {
19
- path: '/identity/roles',
20
- name: "AbpIdentity::Roles" /* eIdentityRouteNames.Roles */,
21
- parentName: "AbpIdentity::Menu:IdentityManagement" /* eIdentityRouteNames.IdentityManagement */,
22
- requiredPolicy: "AbpIdentity.Roles" /* eIdentityPolicyNames.Roles */,
23
- order: 1,
24
- },
25
- {
26
- path: '/identity/users',
27
- name: "AbpIdentity::Users" /* eIdentityRouteNames.Users */,
28
- parentName: "AbpIdentity::Menu:IdentityManagement" /* eIdentityRouteNames.IdentityManagement */,
29
- requiredPolicy: "AbpIdentity.Users" /* eIdentityPolicyNames.Users */,
30
- order: 2,
31
- },
32
- ]);
33
- };
34
- }
1
+ import { RoutesService } from '@abp/ng.core';
2
+ import { APP_INITIALIZER } from '@angular/core';
3
+ export const IDENTITY_ROUTE_PROVIDERS = [
4
+ { provide: APP_INITIALIZER, useFactory: configureRoutes, deps: [RoutesService], multi: true },
5
+ ];
6
+ export function configureRoutes(routesService) {
7
+ return () => {
8
+ routesService.add([
9
+ {
10
+ path: undefined,
11
+ name: "AbpIdentity::Menu:IdentityManagement" /* eIdentityRouteNames.IdentityManagement */,
12
+ parentName: "AbpUiNavigation::Menu:Administration" /* eThemeSharedRouteNames.Administration */,
13
+ requiredPolicy: "AbpIdentity.Roles || AbpIdentity.Users" /* eIdentityPolicyNames.IdentityManagement */,
14
+ iconClass: 'fa fa-id-card-o',
15
+ layout: "application" /* eLayoutType.application */,
16
+ order: 1,
17
+ },
18
+ {
19
+ path: '/identity/roles',
20
+ name: "AbpIdentity::Roles" /* eIdentityRouteNames.Roles */,
21
+ parentName: "AbpIdentity::Menu:IdentityManagement" /* eIdentityRouteNames.IdentityManagement */,
22
+ requiredPolicy: "AbpIdentity.Roles" /* eIdentityPolicyNames.Roles */,
23
+ order: 1,
24
+ },
25
+ {
26
+ path: '/identity/users',
27
+ name: "AbpIdentity::Users" /* eIdentityRouteNames.Users */,
28
+ parentName: "AbpIdentity::Menu:IdentityManagement" /* eIdentityRouteNames.IdentityManagement */,
29
+ requiredPolicy: "AbpIdentity.Users" /* eIdentityPolicyNames.Users */,
30
+ order: 2,
31
+ },
32
+ ]);
33
+ };
34
+ }
35
35
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUucHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pZGVudGl0eS9jb25maWcvc3JjL3Byb3ZpZGVycy9yb3V0ZS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsYUFBYSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTFELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJaEQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUc7SUFDdEMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtDQUM5RixDQUFDO0FBRUYsTUFBTSxVQUFVLGVBQWUsQ0FBQyxhQUE0QjtJQUMxRCxPQUFPLEdBQUcsRUFBRTtRQUNWLGFBQWEsQ0FBQyxHQUFHLENBQUM7WUFDaEI7Z0JBQ0UsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsSUFBSSxxRkFBd0M7Z0JBQzVDLFVBQVUsb0ZBQXVDO2dCQUNqRCxjQUFjLHdGQUF5QztnQkFDdkQsU0FBUyxFQUFFLGlCQUFpQjtnQkFDNUIsTUFBTSw2Q0FBeUI7Z0JBQy9CLEtBQUssRUFBRSxDQUFDO2FBQ1Q7WUFDRDtnQkFDRSxJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixJQUFJLHNEQUEyQjtnQkFDL0IsVUFBVSxxRkFBd0M7Z0JBQ2xELGNBQWMsc0RBQTRCO2dCQUMxQyxLQUFLLEVBQUUsQ0FBQzthQUNUO1lBQ0Q7Z0JBQ0UsSUFBSSxFQUFFLGlCQUFpQjtnQkFDdkIsSUFBSSxzREFBMkI7Z0JBQy9CLFVBQVUscUZBQXdDO2dCQUNsRCxjQUFjLHNEQUE0QjtnQkFDMUMsS0FBSyxFQUFFLENBQUM7YUFDVDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlTGF5b3V0VHlwZSwgUm91dGVzU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IGVUaGVtZVNoYXJlZFJvdXRlTmFtZXMgfSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZCc7XHJcbmltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBlSWRlbnRpdHlQb2xpY3lOYW1lcyB9IGZyb20gJy4uL2VudW1zL3BvbGljeS1uYW1lcyc7XHJcbmltcG9ydCB7IGVJZGVudGl0eVJvdXRlTmFtZXMgfSBmcm9tICcuLi9lbnVtcy9yb3V0ZS1uYW1lcyc7XHJcblxyXG5leHBvcnQgY29uc3QgSURFTlRJVFlfUk9VVEVfUFJPVklERVJTID0gW1xyXG4gIHsgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLCB1c2VGYWN0b3J5OiBjb25maWd1cmVSb3V0ZXMsIGRlcHM6IFtSb3V0ZXNTZXJ2aWNlXSwgbXVsdGk6IHRydWUgfSxcclxuXTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjb25maWd1cmVSb3V0ZXMocm91dGVzU2VydmljZTogUm91dGVzU2VydmljZSkge1xyXG4gIHJldHVybiAoKSA9PiB7XHJcbiAgICByb3V0ZXNTZXJ2aWNlLmFkZChbXHJcbiAgICAgIHtcclxuICAgICAgICBwYXRoOiB1bmRlZmluZWQsXHJcbiAgICAgICAgbmFtZTogZUlkZW50aXR5Um91dGVOYW1lcy5JZGVudGl0eU1hbmFnZW1lbnQsXHJcbiAgICAgICAgcGFyZW50TmFtZTogZVRoZW1lU2hhcmVkUm91dGVOYW1lcy5BZG1pbmlzdHJhdGlvbixcclxuICAgICAgICByZXF1aXJlZFBvbGljeTogZUlkZW50aXR5UG9saWN5TmFtZXMuSWRlbnRpdHlNYW5hZ2VtZW50LFxyXG4gICAgICAgIGljb25DbGFzczogJ2ZhIGZhLWlkLWNhcmQtbycsXHJcbiAgICAgICAgbGF5b3V0OiBlTGF5b3V0VHlwZS5hcHBsaWNhdGlvbixcclxuICAgICAgICBvcmRlcjogMSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHBhdGg6ICcvaWRlbnRpdHkvcm9sZXMnLFxyXG4gICAgICAgIG5hbWU6IGVJZGVudGl0eVJvdXRlTmFtZXMuUm9sZXMsXHJcbiAgICAgICAgcGFyZW50TmFtZTogZUlkZW50aXR5Um91dGVOYW1lcy5JZGVudGl0eU1hbmFnZW1lbnQsXHJcbiAgICAgICAgcmVxdWlyZWRQb2xpY3k6IGVJZGVudGl0eVBvbGljeU5hbWVzLlJvbGVzLFxyXG4gICAgICAgIG9yZGVyOiAxLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgcGF0aDogJy9pZGVudGl0eS91c2VycycsXHJcbiAgICAgICAgbmFtZTogZUlkZW50aXR5Um91dGVOYW1lcy5Vc2VycyxcclxuICAgICAgICBwYXJlbnROYW1lOiBlSWRlbnRpdHlSb3V0ZU5hbWVzLklkZW50aXR5TWFuYWdlbWVudCxcclxuICAgICAgICByZXF1aXJlZFBvbGljeTogZUlkZW50aXR5UG9saWN5TmFtZXMuVXNlcnMsXHJcbiAgICAgICAgb3JkZXI6IDIsXHJcbiAgICAgIH0sXHJcbiAgICBdKTtcclxuICB9O1xyXG59XHJcbiJdfQ==
@@ -1,4 +1,4 @@
1
- export * from './enums';
2
- export * from './identity-config.module';
3
- export * from './providers';
1
+ export * from './enums';
2
+ export * from './identity-config.module';
3
+ export * from './providers';
4
4
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lkZW50aXR5L2NvbmZpZy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9lbnVtcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaWRlbnRpdHktY29uZmlnLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZXJzJztcclxuIl19
@@ -1,3 +1,3 @@
1
- export * from './roles/roles.component';
2
- export * from './users/users.component';
1
+ export * from './roles/roles.component';
2
+ export * from './users/users.component';
3
3
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9pZGVudGl0eS9zcmMvbGliL2NvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yb2xlcy9yb2xlcy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3VzZXJzL3VzZXJzLmNvbXBvbmVudCc7XHJcbiJdfQ==
@@ -0,0 +1,112 @@
1
+ import { ListService } from '@abp/ng.core';
2
+ import { IdentityRoleService } from '@abp/ng.identity/proxy';
3
+ import { Confirmation, ConfirmationService, ToasterService } from '@abp/ng.theme.shared';
4
+ import { EXTENSIONS_IDENTIFIER, FormPropData, generateFormFromProps, } from '@abp/ng.theme.shared/extensions';
5
+ import { Component, Injector } from '@angular/core';
6
+ import { finalize } from 'rxjs/operators';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@abp/ng.core";
9
+ import * as i2 from "@abp/ng.theme.shared";
10
+ import * as i3 from "@abp/ng.identity/proxy";
11
+ import * as i4 from "@angular/forms";
12
+ import * as i5 from "@ngx-validate/core";
13
+ import * as i6 from "@abp/ng.theme.shared/extensions";
14
+ import * as i7 from "@abp/ng.permission-management";
15
+ import * as i8 from "@abp/ng.components/page";
16
+ class RolesComponent {
17
+ constructor(list, confirmationService, toasterService, injector, service) {
18
+ this.list = list;
19
+ this.confirmationService = confirmationService;
20
+ this.toasterService = toasterService;
21
+ this.injector = injector;
22
+ this.service = service;
23
+ this.data = { items: [], totalCount: 0 };
24
+ this.visiblePermissions = false;
25
+ this.modalBusy = false;
26
+ this.permissionManagementKey = "PermissionManagement.PermissionManagementComponent" /* ePermissionManagementComponents.PermissionManagement */;
27
+ this.onVisiblePermissionChange = (event) => {
28
+ this.visiblePermissions = event;
29
+ };
30
+ }
31
+ ngOnInit() {
32
+ this.hookToQuery();
33
+ }
34
+ buildForm() {
35
+ const data = new FormPropData(this.injector, this.selected);
36
+ this.form = generateFormFromProps(data);
37
+ }
38
+ openModal() {
39
+ this.buildForm();
40
+ this.isModalVisible = true;
41
+ }
42
+ add() {
43
+ this.selected = {};
44
+ this.openModal();
45
+ }
46
+ edit(id) {
47
+ this.service.get(id).subscribe(res => {
48
+ this.selected = res;
49
+ this.openModal();
50
+ });
51
+ }
52
+ save() {
53
+ if (!this.form.valid)
54
+ return;
55
+ this.modalBusy = true;
56
+ const { id } = this.selected || {};
57
+ (id
58
+ ? this.service.update(id, { ...this.selected, ...this.form.value })
59
+ : this.service.create(this.form.value))
60
+ .pipe(finalize(() => (this.modalBusy = false)))
61
+ .subscribe(() => {
62
+ this.isModalVisible = false;
63
+ this.list.get();
64
+ });
65
+ }
66
+ delete(id, name) {
67
+ this.confirmationService
68
+ .warn('AbpIdentity::RoleDeletionConfirmationMessage', 'AbpIdentity::AreYouSure', {
69
+ messageLocalizationParams: [name],
70
+ })
71
+ .subscribe((status) => {
72
+ if (status === Confirmation.Status.confirm) {
73
+ this.toasterService.success('AbpUi::SuccessfullyDeleted');
74
+ this.service.delete(id).subscribe(() => this.list.get());
75
+ }
76
+ });
77
+ }
78
+ hookToQuery() {
79
+ this.list.hookToQuery(query => this.service.getList(query)).subscribe(res => (this.data = res));
80
+ }
81
+ openPermissionsModal(providerKey) {
82
+ this.providerKey = providerKey;
83
+ setTimeout(() => {
84
+ this.visiblePermissions = true;
85
+ }, 0);
86
+ }
87
+ sort(data) {
88
+ const { prop, dir } = data.sorts[0];
89
+ this.list.sortKey = prop;
90
+ this.list.sortOrder = dir;
91
+ }
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RolesComponent, deps: [{ token: i1.ListService }, { token: i2.ConfirmationService }, { token: i2.ToasterService }, { token: i0.Injector }, { token: i3.IdentityRoleService }], target: i0.ɵɵFactoryTarget.Component }); }
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.1", type: RolesComponent, selector: "abp-roles", providers: [
94
+ ListService,
95
+ {
96
+ provide: EXTENSIONS_IDENTIFIER,
97
+ useValue: "Identity.RolesComponent" /* eIdentityComponents.Roles */,
98
+ },
99
+ ], ngImport: i0, template: "<abp-page [title]=\"'AbpIdentity::Roles' | abpLocalization\" [toolbar]=\"data.items\">\r\n <div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-body\">\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n </div>\r\n\r\n <abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n </abp-modal>\r\n\r\n <abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'R' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true },\r\n hideBadges: { value: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n >\r\n </abp-permission-management>\r\n</abp-page>\r\n", dependencies: [{ kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormSubmitDirective, selector: "form[ngSubmit][formGroup]", inputs: ["debounce", "notValidateOnSubmit", "markAsDirtyWhenSubmit"], outputs: ["ngSubmit"] }, { kind: "directive", type: i1.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i1.ReplaceableTemplateDirective, selector: "[abpReplaceableTemplate]", inputs: ["abpReplaceableTemplate"] }, { kind: "directive", type: i5.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "component", type: i2.ButtonComponent, selector: "abp-button", inputs: ["buttonId", "buttonClass", "buttonType", "formName", "iconClass", "loading", "disabled", "attributes"], outputs: ["click", "focus", "blur", "abpClick", "abpFocus", "abpBlur"] }, { kind: "component", type: i2.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i2.ModalCloseDirective, selector: "[abpClose]" }, { kind: "component", type: i6.ExtensibleFormComponent, selector: "abp-extensible-form", inputs: ["selectedRecord"], exportAs: ["abpExtensibleForm"] }, { kind: "component", type: i6.ExtensibleTableComponent, selector: "abp-extensible-table", inputs: ["actionsText", "data", "list", "recordsTotal", "actionsColumnWidth", "actionsTemplate"], outputs: ["tableActivate"], exportAs: ["abpExtensibleTable"] }, { kind: "component", type: i7.PermissionManagementComponent, selector: "abp-permission-management", inputs: ["providerName", "providerKey", "hideBadges", "entityDisplayName", "visible"], outputs: ["visibleChange"], exportAs: ["abpPermissionManagement"] }, { kind: "component", type: i8.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "pipe", type: i1.LocalizationPipe, name: "abpLocalization" }] }); }
100
+ }
101
+ export { RolesComponent };
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.1", ngImport: i0, type: RolesComponent, decorators: [{
103
+ type: Component,
104
+ args: [{ selector: 'abp-roles', providers: [
105
+ ListService,
106
+ {
107
+ provide: EXTENSIONS_IDENTIFIER,
108
+ useValue: "Identity.RolesComponent" /* eIdentityComponents.Roles */,
109
+ },
110
+ ], template: "<abp-page [title]=\"'AbpIdentity::Roles' | abpLocalization\" [toolbar]=\"data.items\">\r\n <div id=\"identity-roles-wrapper\" class=\"card\">\r\n <div class=\"card-body\">\r\n <abp-extensible-table\r\n [data]=\"data.items\"\r\n [recordsTotal]=\"data.totalCount\"\r\n [list]=\"list\"\r\n ></abp-extensible-table>\r\n </div>\r\n </div>\r\n\r\n <abp-modal [(visible)]=\"isModalVisible\" [busy]=\"modalBusy\">\r\n <ng-template #abpHeader>\r\n <h3>{{ (selected?.id ? 'AbpIdentity::Edit' : 'AbpIdentity::NewRole') | abpLocalization }}</h3>\r\n </ng-template>\r\n\r\n <ng-template #abpBody>\r\n <form [formGroup]=\"form\" (ngSubmit)=\"save()\" validateOnSubmit>\r\n <abp-extensible-form [selectedRecord]=\"selected\"></abp-extensible-form>\r\n </form>\r\n </ng-template>\r\n\r\n <ng-template #abpFooter>\r\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>\r\n {{ 'AbpIdentity::Cancel' | abpLocalization }}\r\n </button>\r\n <abp-button iconClass=\"fa fa-check\" [disabled]=\"form?.invalid\" (click)=\"save()\">{{\r\n 'AbpIdentity::Save' | abpLocalization\r\n }}</abp-button>\r\n </ng-template>\r\n </abp-modal>\r\n\r\n <abp-permission-management\r\n #abpPermissionManagement=\"abpPermissionManagement\"\r\n *abpReplaceableTemplate=\"\r\n {\r\n inputs: {\r\n providerName: { value: 'R' },\r\n providerKey: { value: providerKey },\r\n visible: { value: visiblePermissions, twoWay: true },\r\n hideBadges: { value: true }\r\n },\r\n outputs: { visibleChange: onVisiblePermissionChange },\r\n componentKey: permissionManagementKey\r\n };\r\n let init = initTemplate\r\n \"\r\n (abpInit)=\"init(abpPermissionManagement)\"\r\n >\r\n </abp-permission-management>\r\n</abp-page>\r\n" }]
111
+ }], ctorParameters: function () { return [{ type: i1.ListService }, { type: i2.ConfirmationService }, { type: i2.ToasterService }, { type: i0.Injector }, { type: i3.IdentityRoleService }]; } });
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvaWRlbnRpdHkvc3JjL2xpYi9jb21wb25lbnRzL3JvbGVzL3JvbGVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2lkZW50aXR5L3NyYy9saWIvY29tcG9uZW50cy9yb2xlcy9yb2xlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFrRCxNQUFNLGNBQWMsQ0FBQztBQUMzRixPQUFPLEVBQW1CLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUUsT0FBTyxFQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLFlBQVksRUFDWixxQkFBcUIsR0FDdEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUU1RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFHMUMsTUFXYSxjQUFjO0lBcUJ6QixZQUNrQixJQUFpRCxFQUN2RCxtQkFBd0MsRUFDMUMsY0FBOEIsRUFDNUIsUUFBa0IsRUFDbEIsT0FBNEI7UUFKdEIsU0FBSSxHQUFKLElBQUksQ0FBNkM7UUFDdkQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUMxQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDNUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQXpCeEMsU0FBSSxHQUFvQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBUXJFLHVCQUFrQixHQUFHLEtB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QUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNsRyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsV0FBbUI7UUFDdEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDakMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FBQyxJQUFTO1FBQ1osTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7SUFDNUIsQ0FBQzs4R0FuR1UsY0FBYztrR0FBZCxjQUFjLG9DQVJkO1lBQ1QsV0FBVztZQUNYO2dCQUNFLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLFFBQVEsMkRBQTJCO2FBQ3BDO1NBQ0YsMEJDdkJILDgwREFtREE7O1NEMUJhLGNBQWM7MkZBQWQsY0FBYztrQkFYMUIsU0FBUzsrQkFDRSxXQUFXLGFBRVY7d0JBQ1QsV0FBVzt3QkFDWDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixRQUFRLDJEQUEyQjt5QkFDcEM7cUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMaXN0U2VydmljZSwgUGFnZWRBbmRTb3J0ZWRSZXN1bHRSZXF1ZXN0RHRvLCBQYWdlZFJlc3VsdER0byB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XHJcbmltcG9ydCB7IElkZW50aXR5Um9sZUR0bywgSWRlbnRpdHlSb2xlU2VydmljZSB9IGZyb20gJ0BhYnAvbmcuaWRlbnRpdHkvcHJveHknO1xyXG5pbXBvcnQgeyBlUGVybWlzc2lvbk1hbmFnZW1lbnRDb21wb25lbnRzIH0gZnJvbSAnQGFicC9uZy5wZXJtaXNzaW9uLW1hbmFnZW1lbnQnO1xyXG5pbXBvcnQge0NvbmZpcm1hdGlvbiwgQ29uZmlybWF0aW9uU2VydmljZSwgVG9hc3RlclNlcnZpY2V9IGZyb20gJ0BhYnAvbmcudGhlbWUuc2hhcmVkJztcclxuaW1wb3J0IHtcclxuICBFWFRFTlNJT05TX0lERU5USUZJRVIsXHJcbiAgRm9ybVByb3BEYXRhLFxyXG4gIGdlbmVyYXRlRm9ybUZyb21Qcm9wcyxcclxufSBmcm9tICdAYWJwL25nLnRoZW1lLnNoYXJlZC9leHRlbnNpb25zJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGZpbmFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBlSWRlbnRpdHlDb21wb25lbnRzIH0gZnJvbSAnLi4vLi4vZW51bXMvY29tcG9uZW50cyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FicC1yb2xlcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3JvbGVzLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIExpc3RTZXJ2aWNlLFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBFWFRFTlNJT05TX0lERU5USUZJRVIsXHJcbiAgICAgIHVzZVZhbHVlOiBlSWRlbnRpdHlDb21wb25lbnRzLlJvbGVzLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUm9sZXNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGRhdGE6IFBhZ2VkUmVzdWx0RHRvPElkZW50aXR5Um9sZUR0bz4gPSB7IGl0ZW1zOiBbXSwgdG90YWxDb3VudDogMCB9O1xyXG5cclxuICBmb3JtITogVW50eXBlZEZvcm1Hcm91cDtcclxuXHJcbiAgc2VsZWN0ZWQ/OiBJZGVudGl0eVJvbGVEdG87XHJcblxyXG4gIGlzTW9kYWxWaXNpYmxlITogYm9vbGVhbjtcclxuXHJcbiAgdmlzaWJsZVBlcm1pc3Npb25zID0gZmFsc2U7XHJcblxyXG4gIHByb3ZpZGVyS2V5Pzogc3RyaW5nO1xyXG5cclxuICBtb2RhbEJ1c3kgPSBmYWxzZTtcclxuXHJcbiAgcGVybWlzc2lvbk1hbmFnZW1lbnRLZXkgPSBlUGVybWlzc2lvbk1hbmFnZW1lbnRDb21wb25lbnRzLlBlcm1pc3Npb25NYW5hZ2VtZW50O1xyXG5cclxuICBvblZpc2libGVQZXJtaXNzaW9uQ2hhbmdlID0gKGV2ZW50OiBib29sZWFuKSA9PiB7XHJcbiAgICB0aGlzLnZpc2libGVQZXJtaXNzaW9ucyA9IGV2ZW50O1xyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGxpc3Q6IExpc3RTZXJ2aWNlPFBhZ2VkQW5kU29ydGVkUmVzdWx0UmVxdWVzdER0bz4sXHJcbiAgICBwcm90ZWN0ZWQgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgdG9hc3RlclNlcnZpY2U6IFRvYXN0ZXJTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByb3RlY3RlZCBzZXJ2aWNlOiBJZGVudGl0eVJvbGVTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmhvb2tUb1F1ZXJ5KCk7XHJcbiAgfVxyXG5cclxuICBidWlsZEZvcm0oKSB7XHJcbiAgICBjb25zdCBkYXRhID0gbmV3IEZvcm1Qcm9wRGF0YSh0aGlzLmluamVjdG9yLCB0aGlzLnNlbGVjdGVkKTtcclxuICAgIHRoaXMuZm9ybSA9IGdlbmVyYXRlRm9ybUZyb21Qcm9wcyhkYXRhKTtcclxuICB9XHJcblxyXG4gIG9wZW5Nb2RhbCgpIHtcclxuICAgIHRoaXMuYnVpbGRGb3JtKCk7XHJcbiAgICB0aGlzLmlzTW9kYWxWaXNpYmxlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIGFkZCgpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWQgPSB7fSBhcyBJZGVudGl0eVJvbGVEdG87XHJcbiAgICB0aGlzLm9wZW5Nb2RhbCgpO1xyXG4gIH1cclxuXHJcbiAgZWRpdChpZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnNlcnZpY2UuZ2V0KGlkKS5zdWJzY3JpYmUocmVzID0+IHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IHJlcztcclxuICAgICAgdGhpcy5vcGVuTW9kYWwoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSByZXR1cm47XHJcbiAgICB0aGlzLm1vZGFsQnVzeSA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgeyBpZCB9ID0gdGhpcy5zZWxlY3RlZCB8fCB7fTtcclxuICAgIChpZFxyXG4gICAgICA/IHRoaXMuc2VydmljZS51cGRhdGUoaWQsIHsgLi4udGhpcy5zZWxlY3RlZCwgLi4udGhpcy5mb3JtLnZhbHVlIH0pXHJcbiAgICAgIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZSh0aGlzLmZvcm0udmFsdWUpXHJcbiAgICApXHJcbiAgICAgIC5waXBlKGZpbmFsaXplKCgpID0+ICh0aGlzLm1vZGFsQnVzeSA9IGZhbHNlKSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNNb2RhbFZpc2libGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmxpc3QuZ2V0KCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlKGlkOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlXHJcbiAgICAgIC53YXJuKCdBYnBJZGVudGl0eTo6Um9sZURlbGV0aW9uQ29uZmlybWF0aW9uTWVzc2FnZScsICdBYnBJZGVudGl0eTo6QXJlWW91U3VyZScsIHtcclxuICAgICAgICBtZXNzYWdlTG9jYWxpemF0aW9uUGFyYW1zOiBbbmFtZV0sXHJcbiAgICAgIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHN0YXR1czogQ29uZmlybWF0aW9uLlN0YXR1cykgPT4ge1xyXG4gICAgICAgIGlmIChzdGF0dXMgPT09IENvbmZpcm1hdGlvbi5TdGF0dXMuY29uZmlybSkge1xyXG4gICAgICAgICAgdGhpcy50b2FzdGVyU2VydmljZS5zdWNjZXNzKCdBYnBVaTo6U3VjY2Vzc2Z1bGx5RGVsZXRlZCcpO1xyXG4gICAgICAgICAgdGhpcy5zZXJ2aWNlLmRlbGV0ZShpZCkuc3Vic2NyaWJlKCgpID0+IHRoaXMubGlzdC5nZXQoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaG9va1RvUXVlcnkoKSB7XHJcbiAgICB0aGlzLmxpc3QuaG9va1RvUXVlcnkocXVlcnkgPT4gdGhpcy5zZXJ2aWNlLmdldExpc3QocXVlcnkpKS5zdWJzY3JpYmUocmVzID0+ICh0aGlzLmRhdGEgPSByZXMpKTtcclxuICB9XHJcblxyXG4gIG9wZW5QZXJtaXNzaW9uc01vZGFsKHByb3ZpZGVyS2V5OiBzdHJpbmcpIHtcclxuICAgIHRoaXMucHJvdmlkZXJLZXkgPSBwcm92aWRlcktleTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLnZpc2libGVQZXJtaXNzaW9ucyA9IHRydWU7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIHNvcnQoZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCB7IHByb3AsIGRpciB9ID0gZGF0YS5zb3J0c1swXTtcclxuICAgIHRoaXMubGlzdC5zb3J0S2V5ID0gcHJvcDtcclxuICAgIHRoaXMubGlzdC5zb3J0T3JkZXIgPSBkaXI7XHJcbiAgfVxyXG59XHJcbiIsIjxhYnAtcGFnZSBbdGl0bGVdPVwiJ0FicElkZW50aXR5OjpSb2xlcycgfCBhYnBMb2NhbGl6YXRpb25cIiBbdG9vbGJhcl09XCJkYXRhLml0ZW1zXCI+XHJcbiAgPGRpdiBpZD1cImlkZW50aXR5LXJvbGVzLXdyYXBwZXJcIiBjbGFzcz1cImNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgPGFicC1leHRlbnNpYmxlLXRhYmxlXHJcbiAgICAgICAgW2RhdGFdPVwiZGF0YS5pdGVtc1wiXHJcbiAgICAgICAgW3JlY29yZHNUb3RhbF09XCJkYXRhLnRvdGFsQ291bnRcIlxyXG4gICAgICAgIFtsaXN0XT1cImxpc3RcIlxyXG4gICAgICA+PC9hYnAtZXh0ZW5zaWJsZS10YWJsZT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YWJwLW1vZGFsIFsodmlzaWJsZSldPVwiaXNNb2RhbFZpc2libGVcIiBbYnVzeV09XCJtb2RhbEJ1c3lcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxyXG4gICAgICA8aDM+e3sgKHNlbGVjdGVkPy5pZCA/ICdBYnBJZGVudGl0eTo6RWRpdCcgOiAnQWJwSWRlbnRpdHk6Ok5ld1JvbGUnKSB8IGFicExvY2FsaXphdGlvbiB9fTwvaDM+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cclxuICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKG5nU3VibWl0KT1cInNhdmUoKVwiIHZhbGlkYXRlT25TdWJtaXQ+XHJcbiAgICAgICAgPGFicC1leHRlbnNpYmxlLWZvcm0gW3NlbGVjdGVkUmVjb3JkXT1cInNlbGVjdGVkXCI+PC9hYnAtZXh0ZW5zaWJsZS1mb3JtPlxyXG4gICAgICA8L2Zvcm0+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+XHJcbiAgICAgICAge3sgJ0FicElkZW50aXR5OjpDYW5jZWwnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8YWJwLWJ1dHRvbiBpY29uQ2xhc3M9XCJmYSBmYS1jaGVja1wiIFtkaXNhYmxlZF09XCJmb3JtPy5pbnZhbGlkXCIgKGNsaWNrKT1cInNhdmUoKVwiPnt7XHJcbiAgICAgICAgJ0FicElkZW50aXR5OjpTYXZlJyB8IGFicExvY2FsaXphdGlvblxyXG4gICAgICAgIH19PC9hYnAtYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2FicC1tb2RhbD5cclxuXHJcbiAgPGFicC1wZXJtaXNzaW9uLW1hbmFnZW1lbnRcclxuICAgICNhYnBQZXJtaXNzaW9uTWFuYWdlbWVudD1cImFicFBlcm1pc3Npb25NYW5hZ2VtZW50XCJcclxuICAgICphYnBSZXBsYWNlYWJsZVRlbXBsYXRlPVwiXHJcbiAgICB7XHJcbiAgICAgIGlucHV0czoge1xyXG4gICAgICAgIHByb3ZpZGVyTmFtZTogeyB2YWx1ZTogJ1InIH0sXHJcbiAgICAgICAgcHJvdmlkZXJLZXk6IHsgdmFsdWU6IHByb3ZpZGVyS2V5IH0sXHJcbiAgICAgICAgdmlzaWJsZTogeyB2YWx1ZTogdmlzaWJsZVBlcm1pc3Npb25zLCB0d29XYXk6IHRydWUgfSxcclxuICAgICAgICBoaWRlQmFkZ2VzOiB7IHZhbHVlOiB0cnVlIH1cclxuICAgICAgfSxcclxuICAgICAgb3V0cHV0czogeyB2aXNpYmxlQ2hhbmdlOiBvblZpc2libGVQZXJtaXNzaW9uQ2hhbmdlIH0sXHJcbiAgICAgIGNvbXBvbmVudEtleTogcGVybWlzc2lvbk1hbmFnZW1lbnRLZXlcclxuICAgIH07XHJcbiAgICBsZXQgaW5pdCA9IGluaXRUZW1wbGF0ZVxyXG4gIFwiXHJcbiAgICAoYWJwSW5pdCk9XCJpbml0KGFicFBlcm1pc3Npb25NYW5hZ2VtZW50KVwiXHJcbiAgPlxyXG4gIDwvYWJwLXBlcm1pc3Npb24tbWFuYWdlbWVudD5cclxuPC9hYnAtcGFnZT5cclxuIl19