@keycloakify/keycloak-account-ui 25.0.1-rc.4 → 25.0.1-rc.5

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.
@@ -0,0 +1,41 @@
1
+ import type { MenuItem } from "./root/PageNav";
2
+ export type KcContextLike = {
3
+ serverBaseUrl: string;
4
+ authUrl: string;
5
+ authServerUrl: string;
6
+ realm: {
7
+ name: string;
8
+ registrationEmailAsUsername: boolean;
9
+ editUsernameAllowed: boolean;
10
+ isInternationalizationEnabled: boolean;
11
+ identityFederationEnabled: boolean;
12
+ userManagedAccessAllowed: boolean;
13
+ };
14
+ clientId: string;
15
+ resourceUrl: string;
16
+ baseUrl: {
17
+ rawSchemeSpecificPart: string;
18
+ scheme: string;
19
+ };
20
+ locale: string;
21
+ referrerName?: string;
22
+ referrer_uri?: string;
23
+ isAuthorizationEnabled: boolean;
24
+ deleteAccountAllowed: boolean;
25
+ updateEmailFeatureEnabled: boolean;
26
+ updateEmailActionEnabled: boolean;
27
+ isViewGroupsEnabled: boolean;
28
+ isOid4VciEnabled: boolean;
29
+ };
30
+ type LazyExoticComponentLike = {
31
+ _result: unknown;
32
+ };
33
+ export type KeycloakifyAccountUiProviderProps = {
34
+ kcContext: KcContextLike;
35
+ KcAccountUi: LazyExoticComponentLike;
36
+ content?: MenuItem[];
37
+ logoUrl?: string;
38
+ loadingFallback?: JSX.Element;
39
+ };
40
+ export declare function KeycloakifyAccountUiProvider(props: KeycloakifyAccountUiProviderProps): import("react/jsx-runtime").JSX.Element;
41
+ export {};
@@ -0,0 +1,100 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { Suspense, useMemo } from "react";
14
+ import { assert } from "tsafe/assert";
15
+ import { is } from "tsafe/is";
16
+ import { joinPath } from "./utils/joinPath";
17
+ import defaultContent from "./public/content";
18
+ import defaultLogoSvgUrl from "@keycloakify/keycloak-account-ui/public/logo.svg";
19
+ export function KeycloakifyAccountUiProvider(props) {
20
+ const { KcAccountUi, loadingFallback } = props, paramsOfInit = __rest(props, ["KcAccountUi", "loadingFallback"]);
21
+ assert(is(KcAccountUi));
22
+ useMemo(() => init(paramsOfInit), []);
23
+ return (_jsx(Suspense, { fallback: loadingFallback, children: (() => {
24
+ const node = _jsx(KcAccountUi, {});
25
+ if (node === null) {
26
+ return loadingFallback;
27
+ }
28
+ return node;
29
+ })() }));
30
+ }
31
+ let previousRunParamsFingerprint = undefined;
32
+ function init(params) {
33
+ var _a, _b;
34
+ exit_condition: {
35
+ const paramsFingerprint = JSON.stringify(params);
36
+ if (paramsFingerprint === undefined) {
37
+ previousRunParamsFingerprint = paramsFingerprint;
38
+ break exit_condition;
39
+ }
40
+ if (paramsFingerprint !== previousRunParamsFingerprint) {
41
+ window.location.reload();
42
+ return;
43
+ }
44
+ return;
45
+ }
46
+ const { content = defaultContent, kcContext, logoUrl = defaultLogoSvgUrl, } = params;
47
+ {
48
+ const url = new URL(window.location.href);
49
+ url.searchParams.delete("referrer");
50
+ url.searchParams.delete("referrer_uri");
51
+ window.history.replaceState({}, "", url.toString());
52
+ }
53
+ const environment = {
54
+ serverBaseUrl: kcContext.serverBaseUrl,
55
+ authUrl: kcContext.authUrl,
56
+ authServerUrl: kcContext.authServerUrl,
57
+ realm: kcContext.realm.name,
58
+ clientId: kcContext.clientId,
59
+ resourceUrl: kcContext.resourceUrl,
60
+ logo: "",
61
+ logoUrl: logoUrl,
62
+ baseUrl: `${kcContext.baseUrl.scheme}:${kcContext.baseUrl.rawSchemeSpecificPart}`,
63
+ locale: kcContext.locale,
64
+ referrerName: (_a = kcContext.referrerName) !== null && _a !== void 0 ? _a : "",
65
+ referrerUrl: (_b = kcContext.referrer_uri) !== null && _b !== void 0 ? _b : "",
66
+ features: {
67
+ isRegistrationEmailAsUsername: kcContext.realm.registrationEmailAsUsername,
68
+ isEditUserNameAllowed: kcContext.realm.editUsernameAllowed,
69
+ isInternationalizationEnabled: kcContext.realm.isInternationalizationEnabled,
70
+ isLinkedAccountsEnabled: kcContext.realm.identityFederationEnabled,
71
+ isMyResourcesEnabled: kcContext.realm.userManagedAccessAllowed &&
72
+ kcContext.isAuthorizationEnabled,
73
+ deleteAccountAllowed: kcContext.deleteAccountAllowed,
74
+ updateEmailFeatureEnabled: kcContext.updateEmailFeatureEnabled,
75
+ updateEmailActionEnabled: kcContext.updateEmailActionEnabled,
76
+ isViewGroupsEnabled: kcContext.isViewGroupsEnabled,
77
+ isOid4VciEnabled: kcContext.isOid4VciEnabled,
78
+ },
79
+ };
80
+ {
81
+ assert();
82
+ const script = document.createElement("script");
83
+ script.id = "environment";
84
+ script.type = "application/json";
85
+ script.textContent = JSON.stringify(environment, null, 1);
86
+ document.body.appendChild(script);
87
+ }
88
+ const realFetch = window.fetch;
89
+ window.fetch = async function fetch(...args) {
90
+ const [url] = args;
91
+ if (url === joinPath(environment.resourceUrl, "/content.json")) {
92
+ window.fetch = realFetch;
93
+ return {
94
+ json: () => Promise.resolve(content),
95
+ };
96
+ }
97
+ return realFetch(...args);
98
+ };
99
+ }
100
+ //# sourceMappingURL=KeycloakifyAccountUiProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeycloakifyAccountUiProvider.js","sourceRoot":"","sources":["src/KeycloakifyAccountUiProvider.tsx"],"names":[],"mappings":"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"}
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  <a href="https://github.com/keycloakify/keycloak-account-ui/actions">
9
9
  <img src="https://github.com/keycloakify/keycloak-account-ui/actions/workflows/ci.yaml/badge.svg?branch=main">
10
10
  </a>
11
- <a href="https://www.npmjs.com/package/@keycloakify/keycloak-account-ui/v/25.0.1-rc.4">
11
+ <a href="https://www.npmjs.com/package/@keycloakify/keycloak-account-ui/v/25.0.1-rc.5">
12
12
  <img src="https://img.shields.io/npm/dm/@keycloakify/keycloak-account-ui">
13
13
  </a>
14
14
  <p align="center">
@@ -26,16 +26,16 @@ All credits goes to the keycloak team for the original work. Mainly [@jonkoops
26
26
  This re-packaged distribution exists to make it possible to take ownership of
27
27
  some specific part of the Account UI to create your own custom version of it.
28
28
  In straight forward therms it make the Account UI ejectable, you can copy
29
- past [the source files](https://unpkg.com/browse/@keycloakify/keycloak-account-ui@25.0.1-rc.4/src/) that you want to modify into your codebase.
29
+ past [the source files](https://unpkg.com/browse/@keycloakify/keycloak-account-ui@25.0.1-rc.5/src/) that you want to modify into your codebase.
30
30
 
31
31
  For more details on integrating this package into your project, refer to the [Keycloakify documentation](https://keycloakify.dev).
32
32
 
33
33
  > **Note:** This package's GitHub repository does not contain any code as it is automatically generated at build time by [scripts/prepare.ts](/scripts/prepare.ts).
34
- > You can browse the sources includes int the NPM package [here](https://unpkg.com/browse/@keycloakify/keycloak-account-ui@25.0.1-rc.4/src/).
34
+ > You can browse the sources includes int the NPM package [here](https://unpkg.com/browse/@keycloakify/keycloak-account-ui@25.0.1-rc.5/src/).
35
35
 
36
36
  ## Installation
37
37
 
38
- > You are currently viewing the README of [`@keycloakify/keycloak-account-ui@25.0.1-rc.4`](https://www.npmjs.com/package/@keycloakify/keycloak-account-ui/v/25.0.1-rc.4) that
38
+ > You are currently viewing the README of [`@keycloakify/keycloak-account-ui@25.0.1-rc.5`](https://www.npmjs.com/package/@keycloakify/keycloak-account-ui/v/25.0.1-rc.5) that
39
39
  > mirrors [`@keycloak/keycloak-account-ui@25.0.1`](https://www.npmjs.com/package/@keycloak/keycloak-account-ui/v/25.0.1).
40
40
  > It is the version of the Account UI that ships with [**Keycloak 25.0.1**](https://github.com/keycloak/keycloak/tree/25.0.1/js/apps/account-ui).
41
41
 
@@ -47,7 +47,7 @@ It's important to respect the exact version range listed here to avoid any compa
47
47
  ```json
48
48
  {
49
49
  "dependencies": {
50
- "@keycloakify/keycloak-account-ui": "25.0.1-rc.4",
50
+ "@keycloakify/keycloak-account-ui": "25.0.1-rc.5",
51
51
  "@patternfly/patternfly": "^5.3.1",
52
52
  "@patternfly/react-core": "^5.3.3",
53
53
  "@patternfly/react-icons": "^5.3.2",
@@ -71,4 +71,4 @@ It's important to respect the exact version range listed here to avoid any compa
71
71
  ## Ejecting
72
72
 
73
73
  You can take partial ownership of some parts of the Account UI by copy pasting the sources files you want to modify into your codebase.
74
- You can browse the sources files **[here](https://unpkg.com/browse/@keycloakify/keycloak-account-ui@25.0.1-rc.4/src/)**.
74
+ You can browse the sources files **[here](https://unpkg.com/browse/@keycloakify/keycloak-account-ui@25.0.1-rc.5/src/)**.
package/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./KeycloakifyAccountUiProvider";
package/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./KeycloakifyAccountUiProvider";
2
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@keycloakify/keycloak-account-ui",
3
- "version": "25.0.1-rc.4",
3
+ "version": "25.0.1-rc.5",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git://github.com/keycloakify/keycloak-account-ui.git"
8
8
  },
9
- "main": "./KcAccountUi.js",
10
- "types": "./KcAccountUi.d.ts",
9
+ "main": "./index.js",
10
+ "types": "./index.d.ts",
11
11
  "lint-staged": {
12
12
  "*.{ts,tsx,json,md}": [
13
13
  "prettier --write"
@@ -22,6 +22,7 @@
22
22
  "license": "Apache-2.0",
23
23
  "files": [
24
24
  "src/KcAccountUi.tsx",
25
+ "src/KeycloakifyAccountUiProvider.tsx",
25
26
  "src/account-security/AccountRow.tsx",
26
27
  "src/account-security/DeviceActivity.tsx",
27
28
  "src/account-security/LinkedAccounts.tsx",
@@ -43,8 +44,11 @@
43
44
  "src/groups/Groups.tsx",
44
45
  "src/i18n.ts",
45
46
  "src/i18next.d.ts",
47
+ "src/index.ts",
46
48
  "src/oid4vci/Oid4Vci.tsx",
47
49
  "src/personal-info/PersonalInfo.tsx",
50
+ "src/public/content.ts",
51
+ "src/public/logo.svg",
48
52
  "src/resources/EditTheResource.tsx",
49
53
  "src/resources/PermissionRequest.tsx",
50
54
  "src/resources/ResourceToolbar.tsx",
@@ -114,6 +118,9 @@
114
118
  "KcAccountUi.d.ts",
115
119
  "KcAccountUi.js",
116
120
  "KcAccountUi.js.map",
121
+ "KeycloakifyAccountUiProvider.d.ts",
122
+ "KeycloakifyAccountUiProvider.js",
123
+ "KeycloakifyAccountUiProvider.js.map",
117
124
  "account-security/AccountRow.d.ts",
118
125
  "account-security/AccountRow.js",
119
126
  "account-security/AccountRow.js.map",
@@ -171,12 +178,19 @@
171
178
  "i18n.d.ts",
172
179
  "i18n.js",
173
180
  "i18n.js.map",
181
+ "index.d.ts",
182
+ "index.js",
183
+ "index.js.map",
174
184
  "oid4vci/Oid4Vci.d.ts",
175
185
  "oid4vci/Oid4Vci.js",
176
186
  "oid4vci/Oid4Vci.js.map",
177
187
  "personal-info/PersonalInfo.d.ts",
178
188
  "personal-info/PersonalInfo.js",
179
189
  "personal-info/PersonalInfo.js.map",
190
+ "public/content.d.ts",
191
+ "public/content.js",
192
+ "public/content.js.map",
193
+ "public/logo.svg",
180
194
  "resources/EditTheResource.d.ts",
181
195
  "resources/EditTheResource.js",
182
196
  "resources/EditTheResource.js.map",
@@ -0,0 +1,33 @@
1
+ declare const content: readonly [{
2
+ readonly label: "personalInfo";
3
+ readonly path: "/";
4
+ }, {
5
+ readonly label: "accountSecurity";
6
+ readonly children: readonly [{
7
+ readonly label: "signingIn";
8
+ readonly path: "account-security/signing-in";
9
+ }, {
10
+ readonly label: "deviceActivity";
11
+ readonly path: "account-security/device-activity";
12
+ }, {
13
+ readonly label: "linkedAccounts";
14
+ readonly path: "account-security/linked-accounts";
15
+ readonly isVisible: "isLinkedAccountsEnabled";
16
+ }];
17
+ }, {
18
+ readonly label: "applications";
19
+ readonly path: "applications";
20
+ }, {
21
+ readonly label: "groups";
22
+ readonly path: "groups";
23
+ readonly isVisible: "isViewGroupsEnabled";
24
+ }, {
25
+ readonly label: "resources";
26
+ readonly path: "resources";
27
+ readonly isVisible: "isMyResourcesEnabled";
28
+ }, {
29
+ readonly label: "oid4vci";
30
+ readonly path: "oid4vci";
31
+ readonly isVisible: "isOid4VciEnabled";
32
+ }];
33
+ export default content;
@@ -0,0 +1,45 @@
1
+ const content = [
2
+ {
3
+ "label": "personalInfo",
4
+ "path": "/"
5
+ },
6
+ {
7
+ "label": "accountSecurity",
8
+ "children": [
9
+ {
10
+ "label": "signingIn",
11
+ "path": "account-security/signing-in"
12
+ },
13
+ {
14
+ "label": "deviceActivity",
15
+ "path": "account-security/device-activity"
16
+ },
17
+ {
18
+ "label": "linkedAccounts",
19
+ "path": "account-security/linked-accounts",
20
+ "isVisible": "isLinkedAccountsEnabled"
21
+ }
22
+ ]
23
+ },
24
+ {
25
+ "label": "applications",
26
+ "path": "applications"
27
+ },
28
+ {
29
+ "label": "groups",
30
+ "path": "groups",
31
+ "isVisible": "isViewGroupsEnabled"
32
+ },
33
+ {
34
+ "label": "resources",
35
+ "path": "resources",
36
+ "isVisible": "isMyResourcesEnabled"
37
+ },
38
+ {
39
+ "label": "oid4vci",
40
+ "path": "oid4vci",
41
+ "isVisible": "isOid4VciEnabled"
42
+ }
43
+ ];
44
+ export default content;
45
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../src/public/content.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;IACd;QACE,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,GAAG;KACZ;IACD;QACE,OAAO,EAAE,iBAAiB;QAC1B,UAAU,EAAE;YACV;gBACE,OAAO,EAAE,WAAW;gBACpB,MAAM,EAAE,6BAA6B;aACtC;YACD;gBACE,OAAO,EAAE,gBAAgB;gBACzB,MAAM,EAAE,kCAAkC;aAC3C;YACD;gBACE,OAAO,EAAE,gBAAgB;gBACzB,MAAM,EAAE,kCAAkC;gBAC1C,WAAW,EAAE,yBAAyB;aACvC;SACF;KACF;IACD;QACE,OAAO,EAAE,cAAc;QACvB,MAAM,EAAE,cAAc;KACvB;IACD;QACE,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,qBAAqB;KACnC;IACD;QACE,OAAO,EAAE,WAAW;QACpB,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,sBAAsB;KACpC;IACD;QACE,OAAO,EAAE,SAAS;QAClB,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,kBAAkB;KAChC;CACO,CAAC;AACX,eAAe,OAAO,CAAC"}
@@ -0,0 +1 @@
1
+ <svg id="Guides" xmlns="http://www.w3.org/2000/svg" viewBox="0 230 600 130"><defs><style>.cls-1{fill:none;}.cls-2{fill:#4d4d4d;}.cls-3{clip-path:url(#clip-path);}.cls-4{fill:url(#linear-gradient);}.cls-5{fill:#e1e1e1;}.cls-6{fill:#585858;}.cls-7{fill:#696969;}.cls-8{fill:#5e5e5e;}.cls-9{fill:#6d6d6d;}.cls-10{fill:#636363;}.cls-11{fill:#737373;}.cls-12{fill:#757575;}.cls-13{fill:#646464;}.cls-14{fill:#6c6c6c;}.cls-15{fill:#606060;}.cls-16{fill:#707070;}.cls-17{fill:#767676;}.cls-18{fill:#797979;}.cls-19{fill:#7f7f7f;}.cls-20{fill:#868686;}.cls-21{fill:#8a8a8a;}.cls-22{fill:#7d7d7d;}.cls-23{fill:#919191;}.cls-24{fill:#858585;}.cls-25{fill:#929292;}.cls-26{fill:#898989;}.cls-27{fill:#8f8f8f;}.cls-28{fill:#999;}.cls-29{fill:#979797;}.cls-30{fill:#9f9f9f;}.cls-31{fill:#a6a6a6;}.cls-32{fill:#a0a0a0;}.cls-33{fill:#9b9b9b;}.cls-34{fill:#9d9d9d;}.cls-35{fill:#a3a3a3;}.cls-36{fill:#aaa;}.cls-37{fill:#a9a9a9;}.cls-38{fill:#989898;}.cls-39{fill:#b1b1b1;}.cls-40{fill:#9e9e9e;}.cls-41{fill:#a4a4a4;}.cls-42{fill:#aeaeae;}.cls-43{fill:#ababab;}.cls-44{fill:#b4b4b4;}.cls-45{fill:#a2a2a2;}.cls-46{fill:#bcbcbc;}.cls-47{fill:#b8b8b8;}.cls-48{fill:#b0b0b0;}.cls-49{fill:#b9b9b9;}.cls-50{fill:#bfbfbf;}.cls-51{fill:#b5b5b5;}.cls-52{fill:#bdbdbd;}.cls-53{fill:#b6b6b6;}.cls-54{fill:#c3c3c3;}.cls-55{fill:#c9c9c9;}.cls-56{fill:#bbb;}.cls-57{fill:#c1c1c1;}.cls-58{fill:#c6c6c6;}.cls-59{fill:#cdcdcd;}.cls-60{fill:#ccc;}.cls-61{fill:#c2c2c2;}.cls-62{fill:#c8c8c8;}.cls-63{fill:#c7c7c7;}.cls-64{fill:#cecece;}.cls-65{fill:#d3d3d3;}.cls-66{fill:#d5d5d5;}.cls-67{fill:#d0d0d0;}.cls-68{fill:#d9d9d9;}.cls-69{fill:#d4d4d4;}.cls-70{fill:#d8d8d8;}.cls-71{fill:#e2e2e2;}.cls-72{fill:#e4e4e4;}.cls-73{fill:#dedede;}.cls-74{fill:#c5c5c5;}.cls-75{fill:#d1d1d1;}.cls-76{fill:#cbcbcb;}.cls-77{fill:#d7d7d7;}.cls-78{fill:#ddd;}.cls-79{fill:#e3e3e3;}.cls-80{fill:#00b8e3;}.cls-81{fill:#33c6e9;}.cls-82{fill:#008aaa;}</style><clipPath id="clip-path"><path class="cls-1" d="M580.49,328.6H567a0.58,0.58,0,0,1-.46-0.23l-1.05-1.43-2.88-3.87-7.86-10.58-4.39-5.92a0.56,0.56,0,0,0-.86,0l-4.6,5.12-0.52.59a0.55,0.55,0,0,0-.14.37V328a0.57,0.57,0,0,1-.56.56H532a0.56,0.56,0,0,1-.56-0.56V272a0.56,0.56,0,0,1,.56-0.56h11.63a0.56,0.56,0,0,1,.56.56v21.47a0.56,0.56,0,0,0,1,.38l6.42-7,9.55-10.39,4.48-4.87a0.56,0.56,0,0,1,.41-0.18h14.28a0.56,0.56,0,0,1,.56.58,0.63,0.63,0,0,1-.14.35l-6.43,7.15-10.7,11.9-4.46,5a0.55,0.55,0,0,0,0,.69l5.56,7.77,5.06,7.13,0.62,0.87,3.83,5.36,4,5.62,2.79,3.9A0.57,0.57,0,0,1,580.49,328.6ZM527,327.81a0.57,0.57,0,0,1-.51.79H514.11a0.55,0.55,0,0,1-.51-0.34l-0.25-.55h0l-4.78-11.11a0.55,0.55,0,0,0-.51-0.34H484.84a0.57,0.57,0,0,0-.52.34l-0.71,1.65-4.31,10v0a0.56,0.56,0,0,1-.5.32H466.43a0.56,0.56,0,0,1-.51-0.79l0.86-2,5.83-13.49h0l0.21-.48,0.25-.56,0.11-.28,1.94-4.5v0l0,0h0l15-34.67a0.57,0.57,0,0,1,.51-0.34h11.61a0.55,0.55,0,0,1,.51.34l7.79,18,3.85,8.91,4.31,10,8.15,18.87Zm-23.71-23.55-0.82-1.91-2.74-6.4L497,289.63a0.57,0.57,0,0,0-1,0l-4.86,11.21-1.48,3.42a0.56,0.56,0,0,0,.51.78h12.61A0.56,0.56,0,0,0,503.26,304.26Zm-36.64,6.44a24.47,24.47,0,0,1-1.14,2.55,28.69,28.69,0,0,1-5.52,7.42l0,0a30.51,30.51,0,0,1-3.13,2.68,29,29,0,0,1-16.14,5.72c-0.68,0-1.38.07-2.08,0.07a29.86,29.86,0,0,1-16.72-4.73,30.35,30.35,0,0,1-4.62-3.74c-0.57-.56-1.12-1.13-1.63-1.72a28.24,28.24,0,0,1-7-19.33,32.44,32.44,0,0,1,.37-5h0l-0.26-.38,0.42-.63a27.71,27.71,0,0,1,8.14-15.07,30.43,30.43,0,0,1,4.31-3.52,28.1,28.1,0,0,1,10.22-4.28h0a32.86,32.86,0,0,1,6.8-.67,29.36,29.36,0,0,1,21.35,8.47,28,28,0,0,1,8.53,17.89v0c0.1,1,.14,2.08.14,3.16A30.07,30.07,0,0,1,466.63,310.7Zm-11-11a18.72,18.72,0,0,0-4.4-12.46,7.21,7.21,0,0,0-.5-0.59,15.67,15.67,0,0,0-12.06-5.39,17.27,17.27,0,0,0-3.69.39,15.75,15.75,0,0,0-8.37,5,18.58,18.58,0,0,0-4.9,12.6c0,0.15,0,.29,0,0.45a18.54,18.54,0,0,0,4.91,13,16.28,16.28,0,0,0,1.48,1.44,15.69,15.69,0,0,0,3.22,2.21,16.71,16.71,0,0,0,14.94-.12,16.26,16.26,0,0,0,4-3c0.17-.17.34-0.34,0.5-0.52a18.55,18.55,0,0,0,2.77-3.92A19.13,19.13,0,0,0,455.6,299.69Zm-47.7,17.53H384.65a0.55,0.55,0,0,1-.56-0.55V272a0.55,0.55,0,0,0-.32-0.5,0.49,0.49,0,0,0-.24-0.06H371.9a0.56,0.56,0,0,0-.56.56v56a0.56,0.56,0,0,0,.56.56h36a0.56,0.56,0,0,0,.56-0.56V317.78A0.56,0.56,0,0,0,407.9,317.22Zm-63.24-47c-0.92-.08-1.85-0.11-2.8-0.11a29.36,29.36,0,0,0-21.31,8.51,30.65,30.65,0,0,0-2.88,3.25h0a28.57,28.57,0,0,0-5.83,18,30.78,30.78,0,0,0,1.86,10.9,26.61,26.61,0,0,0,2.87,5.6h0a28.23,28.23,0,0,0,3.79,4.53,28.92,28.92,0,0,0,5.7,4.34h0c0.51,0.29,1,.58,1.57.85q0.57,0.29,1.17.54h0a32.63,32.63,0,0,0,13.27,2.59,29.57,29.57,0,0,0,4.24-.3h0c0.88-.12,1.76-0.29,2.62-0.5a29.64,29.64,0,0,0,13.31-7.35c0.81-.74,1.61-1.55,2.39-2.4a0.57,0.57,0,0,0,0-.78l-7.38-7.59a0.54,0.54,0,0,0-.49-0.16,0.61,0.61,0,0,0-.33.2,18.73,18.73,0,0,1-15,7,16.65,16.65,0,0,1-5.78-1,16.21,16.21,0,0,1-5.91-3.85,15.61,15.61,0,0,1-3.74-5.94,20.28,20.28,0,0,1-1.09-6.85q0-7.43,4.44-12c0.22-.22.44-0.44,0.67-0.66a17.52,17.52,0,0,1,12.31-4.7,18.45,18.45,0,0,1,14.64,7,0.55,0.55,0,0,0,.84,0l7.18-8.14a0.58,0.58,0,0,0,0-.76A30,30,0,0,0,344.66,270.24Zm-32.26,5.82,2.17-3.78a0.56,0.56,0,0,0-.48-0.84H301.55a0.57,0.57,0,0,0-.48.28l-11.36,19.55h0l-0.61.45-0.46.35a0.58,0.58,0,0,1-.24-0.22l-0.19-.32-0.29-.48L276.7,271.71a0.57,0.57,0,0,0-.48-0.28H263.68a0.56,0.56,0,0,0-.48.84l5.44,9.5L278.47,299l4,6.93a0.57,0.57,0,0,1,.08.28V328a0.56,0.56,0,0,0,.56.56H294.7a0.56,0.56,0,0,0,.56-0.56V306.17a0.57,0.57,0,0,1,.08-0.28l2.8-4.9,10.64-18.61,2.18-3.79,1.44-2.53h0Zm-53.69,41.26H230.48a0.56,0.56,0,0,1-.56-0.56V306a0.57,0.57,0,0,1,.56-0.56H255a0.56,0.56,0,0,0,.56-0.56v-9.75a0.56,0.56,0,0,0-.56-0.56H230.48a0.56,0.56,0,0,1-.56-0.56V283.36a0.56,0.56,0,0,1,.56-0.56h27.34a0.56,0.56,0,0,0,.56-0.56V272a0.56,0.56,0,0,0-.56-0.56h-40.1a0.56,0.56,0,0,0-.56.56v56a0.56,0.56,0,0,0,.56.56h41a0.56,0.56,0,0,0,.56-0.56V317.87A0.56,0.56,0,0,0,258.72,317.31ZM210.59,327q-2.18-3-5.3-7.43-2.44-3.41-5.43-7.62l-0.2-.29q-7.44-10.46-10.43-14.62a0.56,0.56,0,0,1,0-.69l5.09-5.65h0l4.19-4.66,4-4.48,8.28-9.2a0.56,0.56,0,0,0-.42-0.93H196.18a0.57,0.57,0,0,0-.42.18l-8.85,9.61-11.6,12.62a0.56,0.56,0,0,1-1-.38V272a0.55,0.55,0,0,0-.56-0.55H162.15a0.56,0.56,0,0,0-.56.56v56a0.56,0.56,0,0,0,.56.56h11.63a0.56,0.56,0,0,0,.56-0.56V312.61a0.55,0.55,0,0,1,.14-0.37l2.42-2.71,2.7-3a0.56,0.56,0,0,1,.86,0l8.07,10.85,5.8,7.8,2.33,3.14a0.55,0.55,0,0,0,.45.23h13.51a0.57,0.57,0,0,0,.46-0.89Zm-55.66-55.65h-119a1.08,1.08,0,0,0-.91.51s0,0,0,0l-0.59,1-7.28,12.62-8,13.94a1,1,0,0,0,0,1.05l1.75,3L35,328.11a1.06,1.06,0,0,0,.92.53h119a1.18,1.18,0,0,0,1.17-1.18v-54.9A1.19,1.19,0,0,0,154.93,271.37Z"/></clipPath><linearGradient id="linear-gradient" x1="17.66" y1="300.84" x2="584.47" y2="300.84" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#e6e6e6"/><stop offset="1" stop-color="#595959"/></linearGradient></defs><title>keycloak_deliverables</title><path class="cls-2" d="M135.1,271.36a1,1,0,0,1-.91-0.52l-15.91-27.58a1.08,1.08,0,0,0-.93-0.52H52.45a1,1,0,0,0-.91.52L35,271.88a0,0,0,0,0,0,0L19.08,299.47a1.07,1.07,0,0,0,0,1.05L35,328.1l16.53,28.65a1,1,0,0,0,.91.52h64.91a1.08,1.08,0,0,0,.93-0.52l15.92-27.58a1,1,0,0,1,.91-0.52h19.81a1.19,1.19,0,0,0,1.19-1.19v-54.9a1.19,1.19,0,0,0-1.19-1.19H135.1Z"/><g class="cls-3"><rect class="cls-4" x="17.66" y="262.56" width="566.81" height="76.56"/></g><path class="cls-5" d="M38.62,297.11l-17.78,6.45-1.75-3a1,1,0,0,1,0-1.05l8-13.94Z"/><path class="cls-6" d="M580.49,328.6h-7.34l-6.7-4.2,11.71-.59,2.79,3.9A0.57,0.57,0,0,1,580.49,328.6Z"/><path class="cls-6" d="M573.15,328.6H567a0.58,0.58,0,0,1-.46-0.23l-1.05-1.43,1-2.55Z"/><path class="cls-7" d="M580.89,272a0.63,0.63,0,0,1-.14.35l-6.43,7.15-0.4-4Z"/><path class="cls-8" d="M578.16,323.81l-11.71.59,7.72-6.21Z"/><path class="cls-9" d="M580.89,272l-7,3.49,1.19-4.07h5.23A0.56,0.56,0,0,1,580.89,272Z"/><path class="cls-10" d="M574.17,318.19l-7.72,6.21,3.89-11.57Z"/><polygon class="cls-11" points="575.1 271.43 573.91 275.5 567.14 271.43 575.1 271.43"/><path class="cls-12" d="M544.21,272v5.79l-12.75,1V272a0.56,0.56,0,0,1,.56-0.56h11.63A0.56,0.56,0,0,1,544.21,272Z"/><path class="cls-12" d="M573.91,275.5l-12.75,1,4.48-4.87a0.56,0.56,0,0,1,.41-0.18h1.09Z"/><path class="cls-13" d="M570.34,312.83l-3.89,11.57-3.86-1.32-7.86-10.58,9.93-7.67,5.06,7.13Z"/><polygon class="cls-9" points="544.22 277.78 544.22 284.06 531.46 279.23 531.46 278.77 544.22 277.78"/><polygon class="cls-9" points="574.31 279.51 563.61 291.41 551.61 286.86 561.16 276.48 573.91 275.5 574.31 279.51"/><path class="cls-14" d="M564.67,304.83l-9.93,7.67-4.39-5.92a0.56,0.56,0,0,0-.86,0l-4.6,5.12-13.42-30.46v-2l12.75,4.83v9.4a0.56,0.56,0,0,0,1,.38l6.42-7,12,4.54-4.46,5a0.55,0.55,0,0,0,0,.69Z"/><polygon class="cls-15" points="566.45 324.39 565.48 326.94 562.6 323.07 566.45 324.39"/><path class="cls-16" d="M544.88,311.65l-0.52.59a0.55,0.55,0,0,0-.14.37V315l-12.75-10.82v-23Z"/><path class="cls-10" d="M527,327.81a0.57,0.57,0,0,1-.51.79H524.6l2.26-1Z"/><path class="cls-10" d="M544.21,319.55V328a0.57,0.57,0,0,1-.56.56H532a0.56,0.56,0,0,1-.56-0.56v-2.6Z"/><path class="cls-9" d="M526.86,327.55l-2.26,1H514.11a0.55,0.55,0,0,1-.51-0.34l-0.25-.55h0l5.36-19Z"/><polygon class="cls-9" points="544.22 315.03 544.22 319.55 531.46 325.43 531.46 304.21 544.22 315.03"/><path class="cls-17" d="M518.71,308.68l-5.36,19-4.78-11.11a0.55,0.55,0,0,0-.51-0.34H484.83a0.57,0.57,0,0,0-.52.34l-0.71,1.65-10.8-6.39,0.25-.56L493.6,305h9.15a0.56,0.56,0,0,0,.51-0.78l-0.82-1.91,12-3.64Z"/><path class="cls-18" d="M493.6,305L473,311.29l0.11-.28,17.94-10.18-1.48,3.42a0.56,0.56,0,0,0,.51.78h3.46Z"/><polygon class="cls-18" points="514.4 298.71 502.44 302.35 499.71 295.95 510.55 289.8 514.4 298.71"/><path class="cls-12" d="M483.6,318.24l-4.31,10v0l-6.69-15.94h0l0.21-.48Z"/><path class="cls-19" d="M510.55,289.8l-10.84,6.15L497,289.63a0.57,0.57,0,0,0-1,0l-4.86,11.21L473.16,311l1.94-4.5v0l0,0h0l19.84-35h7.26a0.55,0.55,0,0,1,.51.34Z"/><path class="cls-20" d="M466.21,287.57a28.28,28.28,0,0,1,2.25,8.91Z"/><path class="cls-20" d="M495,271.43l-19.84,35,15-34.67a0.57,0.57,0,0,1,.51-0.34H495Z"/><path class="cls-21" d="M468.6,299.65a30.07,30.07,0,0,1-2,11.05l-13.16-1.93a19.13,19.13,0,0,0,2.14-9.09,18.72,18.72,0,0,0-4.4-12.46l5.14-11.66a29.67,29.67,0,0,1,3.59,3,28.15,28.15,0,0,1,6.27,9l2.25,8.91v0C468.55,297.52,468.6,298.57,468.6,299.65Z"/><path class="cls-22" d="M454,316.16l11.5-2.91a28.69,28.69,0,0,1-5.52,7.42Z"/><path class="cls-22" d="M479.28,328.27a0.56,0.56,0,0,1-.5.32h-8.34l-3.67-2.78,5.83-13.49Z"/><path class="cls-18" d="M454,316.16l6,4.51,0,0a30.51,30.51,0,0,1-3.13,2.68Z"/><path class="cls-18" d="M470.44,328.6h-4a0.56,0.56,0,0,1-.51-0.79l0.86-2Z"/><path class="cls-20" d="M466.62,310.7a24.47,24.47,0,0,1-1.14,2.55L454,316.16l-3.79-2.95c0.17-.17.34-0.34,0.5-0.52a18.55,18.55,0,0,0,2.77-3.92Z"/><path class="cls-22" d="M456.81,323.38a29,29,0,0,1-16.14,5.72L454,316.16Z"/><path class="cls-23" d="M456.34,275.56l-5.14,11.66a7.21,7.21,0,0,0-.5-0.59,15.67,15.67,0,0,0-12.06-5.39,17.27,17.27,0,0,0-3.69.39l-3.16-10.84a32.86,32.86,0,0,1,6.8-.67A29.62,29.62,0,0,1,456.34,275.56Z"/><path class="cls-24" d="M454,316.16L440.67,329.1c-0.68,0-1.38.07-2.08,0.07a29.86,29.86,0,0,1-16.72-4.73l1.49-8,7.92-.07a16.71,16.71,0,0,0,14.94-.12Z"/><path class="cls-25" d="M434.95,281.64a15.75,15.75,0,0,0-8.37,5,18.58,18.58,0,0,0-4.9,12.6L409,294.4l-0.29-.11,0.42-.63,12.44-18.59a28.1,28.1,0,0,1,10.22-4.28h0Z"/><path class="cls-26" d="M428.06,314.13a15.69,15.69,0,0,0,3.22,2.21l-7.92.07Z"/><path class="cls-26" d="M454,316.16l-7.76.07a16.26,16.26,0,0,0,4-3Z"/><path class="cls-27" d="M428.06,314.13l-4.69,2.28L409,294.68h0l-0.26-.38L409,294.4l12.68,4.84c0,0.15,0,.29,0,0.45a18.54,18.54,0,0,0,4.91,13A16.28,16.28,0,0,0,428.06,314.13Z"/><path class="cls-28" d="M421.56,275.07l-12.44,18.59a27.71,27.71,0,0,1,8.14-15.07A30.43,30.43,0,0,1,421.56,275.07Z"/><path class="cls-26" d="M386.64,328.6l21.82-7.24V328a0.56,0.56,0,0,1-.56.56H386.64Z"/><path class="cls-26" d="M423.36,316.41l-1.49,8a30.35,30.35,0,0,1-4.62-3.74c-0.57-.56-1.12-1.13-1.63-1.72Z"/><path class="cls-23" d="M408.46,317.78v3.57l-21.82,7.24H374.82l11.23-11.38H407.9A0.56,0.56,0,0,1,408.46,317.78Z"/><path class="cls-23" d="M423.36,316.41L415.63,319a28.24,28.24,0,0,1-7-19.33,32.44,32.44,0,0,1,.37-5Z"/><path class="cls-29" d="M386.05,317.22L374.82,328.6H371.9a0.56,0.56,0,0,1-.56-0.56v0l12.75-36v24.72a0.55,0.55,0,0,0,.56.55h1.4Z"/><path class="cls-30" d="M384.09,272v3.18l-0.32-3.69A0.55,0.55,0,0,1,384.09,272Z"/><path class="cls-31" d="M365.07,280.45a0.58,0.58,0,0,1,0,.76l-7.18,8.14a0.55,0.55,0,0,1-.84,0,19,19,0,0,0-9.61-6.37l-2.79-12.73A30,30,0,0,1,365.07,280.45Z"/><path class="cls-31" d="M377.09,271.43l-5.75,5.84V272a0.56,0.56,0,0,1,.56-0.56h5.19Z"/><path class="cls-32" d="M384.09,275.17v13.77l-12.75,3.53v-15.2l5.75-5.84h6.44a0.49,0.49,0,0,1,.24.06Z"/><path class="cls-33" d="M364.7,317.9a0.57,0.57,0,0,1,0,.78c-0.78.86-1.58,1.66-2.39,2.4l-5.5-10.94a0.54,0.54,0,0,1,.49.16Z"/><polygon class="cls-33" points="384.09 288.94 384.09 291.95 371.34 327.99 371.34 292.47 384.09 288.94"/><path class="cls-28" d="M362.34,321.09A29.64,29.64,0,0,1,349,328.43l0.75-12.85a19.5,19.5,0,0,0,6.72-5.24,0.61,0.61,0,0,1,.33-0.2Z"/><path class="cls-34" d="M349.78,315.59L349,328.43c-0.86.21-1.74,0.38-2.62,0.5h0l-17.51-2.29h0q-0.6-.26-1.17-0.54l8.08-9.77a16.65,16.65,0,0,0,5.78,1A19.47,19.47,0,0,0,349.78,315.59Z"/><path class="cls-35" d="M335.75,316.33l-8.08,9.77c-0.53-.27-1.05-0.55-1.57-0.85h0l-9.49-8.88h0a26.61,26.61,0,0,1-2.87-5.6l12.39-4.21a15.61,15.61,0,0,0,3.74,5.94A16.21,16.21,0,0,0,335.75,316.33Z"/><polygon class="cls-36" points="308.33 277.29 312.4 276.06 310.96 278.59 308.33 277.29"/><path class="cls-36" d="M347.46,283a18.89,18.89,0,0,0-5-.66,17.52,17.52,0,0,0-12.31,4.7c-0.24.22-.46,0.44-0.67,0.66l-11.78-5.78h0a30.65,30.65,0,0,1,2.88-3.25,29.36,29.36,0,0,1,21.31-8.51c1,0,1.88,0,2.8.11Z"/><polygon class="cls-37" points="308.33 277.29 310.96 278.59 308.78 282.38 308.33 277.29"/><path class="cls-37" d="M325,299.68a20.28,20.28,0,0,0,1.09,6.85l-12.39,4.21a30.78,30.78,0,0,1-1.86-10.9,28.57,28.57,0,0,1,5.83-18l11.78,5.78Q325,292.25,325,299.68Z"/><path class="cls-38" d="M328.86,326.64h0Z"/><path class="cls-38" d="M346.38,328.94a29.57,29.57,0,0,1-4.24.3,32.63,32.63,0,0,1-13.27-2.59Z"/><path class="cls-39" d="M314.57,272.27L312.4,276l-4.08,1.25-2.05-5.86h7.81A0.56,0.56,0,0,1,314.57,272.27Z"/><polygon class="cls-40" points="295.26 321.73 295.26 323.23 292.37 321.31 295.26 321.73"/><path class="cls-34" d="M295.26,323.23V328a0.56,0.56,0,0,1-.56.56H292l0.39-7.29Z"/><polygon class="cls-41" points="292.37 321.31 295.26 319.82 295.26 321.73 292.37 321.31"/><path class="cls-41" d="M326.09,325.25a28.92,28.92,0,0,1-5.7-4.34,28.23,28.23,0,0,1-3.79-4.53Z"/><polygon class="cls-42" points="308.78 282.38 298.14 300.99 287.74 292.74 288.63 292.07 289.09 291.72 289.7 291.27 289.7 291.26 289.71 291.25 308.33 277.29 308.78 282.38"/><path class="cls-43" d="M298.14,301l-2.8,4.9a0.57,0.57,0,0,0-.08.28v13.66l-2.89,1.48-4.63-28.57Z"/><path class="cls-44" d="M288.4,291.85a0.58,0.58,0,0,0,.24.22l-0.89.67,0.47-1.21Z"/><path class="cls-44" d="M308.33,277.29l-18.62,14,11.36-19.55a0.57,0.57,0,0,1,.48-0.28h4.72Z"/><polygon class="cls-45" points="292.37 321.31 291.98 328.6 283.15 328.6 292.37 321.31"/><path class="cls-46" d="M258.38,272v3.9l-7.76-4.46h7.2A0.56,0.56,0,0,1,258.38,272Z"/><path class="cls-46" d="M287.92,291l-0.18,1.69-19.11-11-5.44-9.5a0.56,0.56,0,0,1,.48-0.84h12.54a0.57,0.57,0,0,1,.48.28Z"/><polygon class="cls-47" points="288.21 291.53 287.74 292.74 287.92 291.05 288.21 291.53"/><path class="cls-37" d="M292.37,321.31l-9.22,7.29h-0.09a0.56,0.56,0,0,1-.56-0.56V323.7Z"/><path class="cls-48" d="M282.51,316.14v-10a0.57,0.57,0,0,0-.08-0.28l-4-6.93,9.28-6.23,4.63,28.57Z"/><path class="cls-42" d="M256.1,328.6l3.17-6.88V328a0.56,0.56,0,0,1-.56.56H256.1Z"/><polygon class="cls-42" points="292.37 321.31 282.5 323.7 282.5 316.14 292.37 321.31"/><path class="cls-49" d="M258.38,275.89v6.35a0.56,0.56,0,0,1-.56.56h-5.39l-6.2-11.37h4.38Z"/><polygon class="cls-49" points="287.74 292.74 278.47 298.96 268.63 281.77 287.74 292.74"/><polygon class="cls-50" points="252.44 282.8 246.77 282.8 238.32 271.89 238.99 271.43 246.24 271.43 252.44 282.8"/><path class="cls-51" d="M259.28,317.87v3.85l-3.17,6.88h-4.35l-33.24-16,11.41-1.24v5.43a0.56,0.56,0,0,0,.56.56h28.24A0.56,0.56,0,0,1,259.28,317.87Z"/><polygon class="cls-52" points="246.77 282.8 233.01 282.8 238.32 271.89 246.77 282.8"/><path class="cls-52" d="M255.52,295.13v9.75a0.56,0.56,0,0,1-.56.56H230.48a0.57,0.57,0,0,0-.56.56v5.31l-11.41,1.24,11.41-23.42V294a0.56,0.56,0,0,0,.56.56H255A0.56,0.56,0,0,1,255.52,295.13Z"/><polygon class="cls-53" points="251.75 328.6 223.55 328.6 218.51 312.55 251.75 328.6"/><path class="cls-54" d="M238.32,271.9L233,282.8h-2.53a0.56,0.56,0,0,0-.56.56v5.78l-11.41,23.42-1.34-2.2V281.77Z"/><path class="cls-55" d="M210.87,272.36l-8.28,9.2-1.53-10.13h9.39A0.56,0.56,0,0,1,210.87,272.36Z"/><path class="cls-55" d="M238.32,271.9l-21.16,9.87V272a0.56,0.56,0,0,1,.56-0.56h17.6Z"/><path class="cls-56" d="M205.29,319.58q3.12,4.39,5.3,7.43l-12.93-3.38Z"/><path class="cls-56" d="M223.55,328.6h-5.83a0.56,0.56,0,0,1-.56-0.56V313.27l1.34-.71Z"/><path class="cls-53" d="M210.63,328.6H199.16l-1.49-5L210.59,327l0.49,0.69A0.57,0.57,0,0,1,210.63,328.6Z"/><path class="cls-57" d="M199.86,312q3,4.22,5.43,7.62l-7.62,4,2-12Z"/><polygon class="cls-57" points="218.51 312.55 217.17 313.27 217.17 310.36 218.51 312.55"/><path class="cls-58" d="M199.66,311.67l-2,12-9.12-6.2-8.07-10.85a0.56,0.56,0,0,0-.86,0l-2.7,3-14.5-9.85,32-9-5.09,5.65a0.56,0.56,0,0,0,0,.69Q192.21,301.2,199.66,311.67Z"/><path class="cls-47" d="M199.16,328.6h-2a0.55,0.55,0,0,1-.45-0.23l-2.33-3.14,3.33-1.61Z"/><polygon class="cls-59" points="168.07 273.44 174.34 271.98 174.34 276.03 168.07 273.44"/><path class="cls-59" d="M202.6,281.56l-4,4.48-11.65-4.82,8.85-9.61a0.57,0.57,0,0,1,.42-0.18h4.89Z"/><path class="cls-60" d="M198.57,286l-4.19,4.66h0l-32,9,5.66-26.25,6.27,2.59v17.43a0.56,0.56,0,0,0,1,.38l11.61-12.62Z"/><path class="cls-61" d="M162.4,299.68l14.5,9.85-2.42,2.71a0.55,0.55,0,0,0-.14.37V328a0.56,0.56,0,0,1-.56.56h-0.16Z"/><polygon class="cls-61" points="197.66 323.63 194.34 325.23 188.54 317.43 197.66 323.63"/><polygon class="cls-62" points="144.39 302.26 156.11 300.59 156.11 314.18 144.39 302.26"/><polygon class="cls-62" points="173.62 328.6 170.3 328.6 161.59 319.74 161.59 299.8 162.4 299.69 173.62 328.6"/><path class="cls-61" d="M144.39,302.26l11.72,11.92v13.28a1.18,1.18,0,0,1-1.17,1.18H141.31Z"/><path class="cls-61" d="M170.3,328.6h-8.15a0.56,0.56,0,0,1-.56-0.56v-8.3Z"/><polygon class="cls-63" points="144.39 302.26 141.31 328.63 124.91 328.63 119.94 316.67 144.39 302.26"/><polygon class="cls-64" points="144.39 302.26 156.11 288 156.11 300.59 144.39 302.26"/><polygon class="cls-64" points="168.07 273.44 162.4 299.69 161.59 299.8 161.59 281.32 168.07 273.44"/><path class="cls-65" d="M156.11,272.55V288l-11.72,14.27-8.84-30.9h19.37A1.19,1.19,0,0,1,156.11,272.55Z"/><polygon class="cls-65" points="168.07 273.44 161.59 281.32 161.59 272.06 168.07 273.44"/><polygon class="cls-58" points="124.91 328.63 116.26 328.63 114.02 325.42 119.94 316.67 124.91 328.63"/><polygon class="cls-66" points="144.39 302.26 111.96 288.55 129.02 271.36 135.56 271.36 144.39 302.26"/><path class="cls-67" d="M112,288.55l8,28.12,24.45-14.41Z"/><polygon class="cls-50" points="116.26 328.63 113.92 328.63 114.02 325.42 116.26 328.63"/><polygon class="cls-68" points="129.02 271.36 111.96 288.55 108.88 273.18 115.46 271.36 129.02 271.36"/><path class="cls-69" d="M112,288.55l-39.37,9.08L114,325.42Z"/><path class="cls-67" d="M112,288.55L114,325.42l5.92-8.75Z"/><path class="cls-68" d="M108.88,273.18L72.59,297.63,112,288.55Z"/><polygon class="cls-70" points="72.59 297.63 55.52 328.63 45.8 328.63 38.62 297.11 72.59 297.63"/><path class="cls-71" d="M55.09,271.36L38.62,297.11l-4.2-24.2,0.59-1s0,0,0,0a1.08,1.08,0,0,1,.91-0.51H55.09Z"/><path class="cls-70" d="M45.8,328.63H35.93A1.06,1.06,0,0,1,35,328.1L20.83,303.56l17.78-6.45Z"/><polygon class="cls-72" points="38.62 297.11 27.13 285.53 34.41 272.91 38.62 297.11"/><polygon class="cls-73" points="90.57 271.36 79.22 271.36 61.83 271.36 72.59 297.63 108.88 273.18 97.94 271.36 90.57 271.36"/><polygon class="cls-73" points="57.34 271.36 55.09 271.36 38.62 297.11 72.59 297.63 61.83 271.36 57.34 271.36"/><polygon class="cls-74" points="106.12 328.63 112.45 328.63 113.92 328.63 114.02 325.42 106.12 328.63"/><polygon class="cls-67" points="114.02 325.42 72.59 297.63 80.05 328.63 90.57 328.63 106.12 328.63 114.02 325.42"/><polygon class="cls-75" points="55.52 328.63 57.34 328.63 79.22 328.63 80.05 328.63 72.59 297.63 55.52 328.63"/><polygon class="cls-62" points="238.99 271.43 238.32 271.89 238 271.43 238.99 271.43"/><polygon class="cls-76" points="238.32 271.89 235.33 271.43 238 271.43 238.32 271.89"/><path class="cls-75" d="M174.34,272l-6.27,1.45,1.72-2h4A0.55,0.55,0,0,1,174.34,272Z"/><polygon class="cls-77" points="169.79 271.43 168.07 273.44 167.72 271.43 169.79 271.43"/><path class="cls-68" d="M168.07,273.44l-6.48-1.38V272a0.56,0.56,0,0,1,.56-0.56h5.57Z"/><polygon class="cls-78" points="108.99 271.36 108.88 273.18 115.46 271.36 112.45 271.36 108.99 271.36"/><polygon class="cls-79" points="97.94 271.36 108.88 273.18 107.87 271.36 97.94 271.36"/><polygon class="cls-71" points="107.87 271.36 108.88 273.18 108.99 271.36 107.87 271.36"/><path class="cls-80" d="M79.11,271.86l-16,27.72A0.93,0.93,0,0,0,63,300H51.83l22-38.05a0.86,0.86,0,0,1,.33.32l0,0,5,8.65A1,1,0,0,1,79.11,271.86Z"/><path class="cls-81" d="M79.09,329.16l-5,8.61a1,1,0,0,1-.34.32L51.82,300H63a0.85,0.85,0,0,0,.11.43,0.1,0.1,0,0,0,0,0l16,27.7A0.94,0.94,0,0,1,79.09,329.16Z"/><path class="cls-82" d="M73.78,262L51.83,300h0l-5.51,9.54L41,300.46a0.85,0.85,0,0,1-.11-0.43,0.93,0.93,0,0,1,.12-0.45l5.33-9.23,16.18-28a0.94,0.94,0,0,1,.82-0.48h9.93A1,1,0,0,1,73.78,262Z"/><path class="cls-80" d="M73.78,338.09a1,1,0,0,1-.47.13H63.38a0.94,0.94,0,0,1-.82-0.48L47.77,312.12l-1.46-2.54L51.82,300Z"/><path class="cls-82" d="M118,300L96,338.09a1,1,0,0,1-.33-0.32l0,0-5-8.63a1,1,0,0,1,0-.89l16-27.72a0.93,0.93,0,0,0,.13-0.48H118Z"/><path class="cls-80" d="M128.83,300a0.93,0.93,0,0,1-.13.48l-21.52,37.26a0.94,0.94,0,0,1-.8.44H96.46a1,1,0,0,1-.48-0.13L118,300l5.51-9.53,5.23,9.06A0.92,0.92,0,0,1,128.83,300Z"/><path class="cls-80" d="M118,300H106.78a0.92,0.92,0,0,0-.13-0.47l-16-27.69a0.94,0.94,0,0,1,0-1l5-8.62A1,1,0,0,1,96,262Z"/><path class="cls-81" d="M123.46,290.48h0L118,300,96,262a1,1,0,0,1,.48-0.13h9.92a0.94,0.94,0,0,1,.8.44Z"/></svg>
@@ -0,0 +1,170 @@
1
+ import { Suspense, useMemo, type LazyExoticComponent } from "react";
2
+ import { assert } from "tsafe/assert";
3
+ import { is } from "tsafe/is";
4
+ import type { Environment } from "@keycloakify/keycloak-account-ui/environment";
5
+ import type { MenuItem } from "@keycloakify/keycloak-account-ui/root/PageNav";
6
+ import { joinPath } from "@keycloakify/keycloak-account-ui/utils/joinPath";
7
+ import defaultContent from "@keycloakify/keycloak-account-ui/public/content";
8
+ import defaultLogoSvgUrl from "@keycloakify/keycloak-account-ui/public/logo.svg";
9
+
10
+ export type KcContextLike = {
11
+ serverBaseUrl: string;
12
+ authUrl: string;
13
+ authServerUrl: string;
14
+ realm: {
15
+ name: string;
16
+ registrationEmailAsUsername: boolean;
17
+ editUsernameAllowed: boolean;
18
+ isInternationalizationEnabled: boolean;
19
+ identityFederationEnabled: boolean;
20
+ userManagedAccessAllowed: boolean;
21
+ };
22
+ clientId: string;
23
+ resourceUrl: string;
24
+ baseUrl: {
25
+ rawSchemeSpecificPart: string;
26
+ scheme: string;
27
+ };
28
+ locale: string;
29
+ referrerName?: string;
30
+ referrer_uri?: string;
31
+ isAuthorizationEnabled: boolean;
32
+ deleteAccountAllowed: boolean;
33
+ updateEmailFeatureEnabled: boolean;
34
+ updateEmailActionEnabled: boolean;
35
+ isViewGroupsEnabled: boolean;
36
+ isOid4VciEnabled: boolean;
37
+ };
38
+
39
+ type LazyExoticComponentLike = {
40
+ _result: unknown;
41
+ };
42
+
43
+ export type KeycloakifyAccountUiProviderProps = {
44
+ kcContext: KcContextLike;
45
+ KcAccountUi: LazyExoticComponentLike;
46
+ content?: MenuItem[];
47
+ logoUrl?: string;
48
+ loadingFallback?: JSX.Element;
49
+ };
50
+
51
+ export function KeycloakifyAccountUiProvider(
52
+ props: KeycloakifyAccountUiProviderProps,
53
+ ) {
54
+ const { KcAccountUi, loadingFallback, ...paramsOfInit } = props;
55
+
56
+ assert(is<LazyExoticComponent<() => JSX.Element | null>>(KcAccountUi));
57
+
58
+ useMemo(() => init(paramsOfInit), []);
59
+
60
+ return (
61
+ <Suspense fallback={loadingFallback}>
62
+ {(() => {
63
+ const node = <KcAccountUi />;
64
+
65
+ if (node === null) {
66
+ return loadingFallback;
67
+ }
68
+
69
+ return node;
70
+ })()}
71
+ </Suspense>
72
+ );
73
+ }
74
+
75
+ let previousRunParamsFingerprint: string | undefined = undefined;
76
+
77
+ function init(
78
+ params: Pick<
79
+ KeycloakifyAccountUiProviderProps,
80
+ "kcContext" | "content" | "logoUrl"
81
+ >,
82
+ ) {
83
+ exit_condition: {
84
+ const paramsFingerprint = JSON.stringify(params);
85
+
86
+ if (paramsFingerprint === undefined) {
87
+ previousRunParamsFingerprint = paramsFingerprint;
88
+ break exit_condition;
89
+ }
90
+
91
+ if (paramsFingerprint !== previousRunParamsFingerprint) {
92
+ window.location.reload();
93
+ return;
94
+ }
95
+
96
+ return;
97
+ }
98
+
99
+ const {
100
+ content = defaultContent,
101
+ kcContext,
102
+ logoUrl = defaultLogoSvgUrl,
103
+ } = params;
104
+
105
+ {
106
+ const url = new URL(window.location.href);
107
+
108
+ url.searchParams.delete("referrer");
109
+ url.searchParams.delete("referrer_uri");
110
+
111
+ window.history.replaceState({}, "", url.toString());
112
+ }
113
+
114
+ const environment = {
115
+ serverBaseUrl: kcContext.serverBaseUrl,
116
+ authUrl: kcContext.authUrl,
117
+ authServerUrl: kcContext.authServerUrl,
118
+ realm: kcContext.realm.name,
119
+ clientId: kcContext.clientId,
120
+ resourceUrl: kcContext.resourceUrl,
121
+ logo: "",
122
+ logoUrl: logoUrl,
123
+ baseUrl: `${kcContext.baseUrl.scheme}:${kcContext.baseUrl.rawSchemeSpecificPart}`,
124
+ locale: kcContext.locale,
125
+ referrerName: kcContext.referrerName ?? "",
126
+ referrerUrl: kcContext.referrer_uri ?? "",
127
+ features: {
128
+ isRegistrationEmailAsUsername:
129
+ kcContext.realm.registrationEmailAsUsername,
130
+ isEditUserNameAllowed: kcContext.realm.editUsernameAllowed,
131
+ isInternationalizationEnabled:
132
+ kcContext.realm.isInternationalizationEnabled,
133
+ isLinkedAccountsEnabled: kcContext.realm.identityFederationEnabled,
134
+ isMyResourcesEnabled:
135
+ kcContext.realm.userManagedAccessAllowed &&
136
+ kcContext.isAuthorizationEnabled,
137
+ deleteAccountAllowed: kcContext.deleteAccountAllowed,
138
+ updateEmailFeatureEnabled: kcContext.updateEmailFeatureEnabled,
139
+ updateEmailActionEnabled: kcContext.updateEmailActionEnabled,
140
+ isViewGroupsEnabled: kcContext.isViewGroupsEnabled,
141
+ isOid4VciEnabled: kcContext.isOid4VciEnabled,
142
+ },
143
+ };
144
+
145
+ {
146
+ assert<typeof environment extends Environment ? true : false>();
147
+
148
+ const script = document.createElement("script");
149
+ script.id = "environment";
150
+ script.type = "application/json";
151
+ script.textContent = JSON.stringify(environment, null, 1);
152
+
153
+ document.body.appendChild(script);
154
+ }
155
+
156
+ const realFetch = window.fetch;
157
+
158
+ window.fetch = async function fetch(...args) {
159
+ const [url] = args;
160
+
161
+ if (url === joinPath(environment.resourceUrl, "/content.json")) {
162
+ window.fetch = realFetch;
163
+ return {
164
+ json: () => Promise.resolve(content),
165
+ } as Response;
166
+ }
167
+
168
+ return realFetch(...args);
169
+ };
170
+ }
package/src/global.d.ts CHANGED
@@ -2,3 +2,8 @@ declare module "*.module.css" {
2
2
  const classes: { [key: string]: string };
3
3
  export default classes;
4
4
  }
5
+
6
+ declare module "*.svg" {
7
+ const content: string;
8
+ export default content;
9
+ }
package/src/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./KeycloakifyAccountUiProvider";
@@ -0,0 +1,44 @@
1
+ const content = [
2
+ {
3
+ "label": "personalInfo",
4
+ "path": "/"
5
+ },
6
+ {
7
+ "label": "accountSecurity",
8
+ "children": [
9
+ {
10
+ "label": "signingIn",
11
+ "path": "account-security/signing-in"
12
+ },
13
+ {
14
+ "label": "deviceActivity",
15
+ "path": "account-security/device-activity"
16
+ },
17
+ {
18
+ "label": "linkedAccounts",
19
+ "path": "account-security/linked-accounts",
20
+ "isVisible": "isLinkedAccountsEnabled"
21
+ }
22
+ ]
23
+ },
24
+ {
25
+ "label": "applications",
26
+ "path": "applications"
27
+ },
28
+ {
29
+ "label": "groups",
30
+ "path": "groups",
31
+ "isVisible": "isViewGroupsEnabled"
32
+ },
33
+ {
34
+ "label": "resources",
35
+ "path": "resources",
36
+ "isVisible": "isMyResourcesEnabled"
37
+ },
38
+ {
39
+ "label": "oid4vci",
40
+ "path": "oid4vci",
41
+ "isVisible": "isOid4VciEnabled"
42
+ }
43
+ ] as const;
44
+ export default content;
@@ -0,0 +1 @@
1
+ <svg id="Guides" xmlns="http://www.w3.org/2000/svg" viewBox="0 230 600 130"><defs><style>.cls-1{fill:none;}.cls-2{fill:#4d4d4d;}.cls-3{clip-path:url(#clip-path);}.cls-4{fill:url(#linear-gradient);}.cls-5{fill:#e1e1e1;}.cls-6{fill:#585858;}.cls-7{fill:#696969;}.cls-8{fill:#5e5e5e;}.cls-9{fill:#6d6d6d;}.cls-10{fill:#636363;}.cls-11{fill:#737373;}.cls-12{fill:#757575;}.cls-13{fill:#646464;}.cls-14{fill:#6c6c6c;}.cls-15{fill:#606060;}.cls-16{fill:#707070;}.cls-17{fill:#767676;}.cls-18{fill:#797979;}.cls-19{fill:#7f7f7f;}.cls-20{fill:#868686;}.cls-21{fill:#8a8a8a;}.cls-22{fill:#7d7d7d;}.cls-23{fill:#919191;}.cls-24{fill:#858585;}.cls-25{fill:#929292;}.cls-26{fill:#898989;}.cls-27{fill:#8f8f8f;}.cls-28{fill:#999;}.cls-29{fill:#979797;}.cls-30{fill:#9f9f9f;}.cls-31{fill:#a6a6a6;}.cls-32{fill:#a0a0a0;}.cls-33{fill:#9b9b9b;}.cls-34{fill:#9d9d9d;}.cls-35{fill:#a3a3a3;}.cls-36{fill:#aaa;}.cls-37{fill:#a9a9a9;}.cls-38{fill:#989898;}.cls-39{fill:#b1b1b1;}.cls-40{fill:#9e9e9e;}.cls-41{fill:#a4a4a4;}.cls-42{fill:#aeaeae;}.cls-43{fill:#ababab;}.cls-44{fill:#b4b4b4;}.cls-45{fill:#a2a2a2;}.cls-46{fill:#bcbcbc;}.cls-47{fill:#b8b8b8;}.cls-48{fill:#b0b0b0;}.cls-49{fill:#b9b9b9;}.cls-50{fill:#bfbfbf;}.cls-51{fill:#b5b5b5;}.cls-52{fill:#bdbdbd;}.cls-53{fill:#b6b6b6;}.cls-54{fill:#c3c3c3;}.cls-55{fill:#c9c9c9;}.cls-56{fill:#bbb;}.cls-57{fill:#c1c1c1;}.cls-58{fill:#c6c6c6;}.cls-59{fill:#cdcdcd;}.cls-60{fill:#ccc;}.cls-61{fill:#c2c2c2;}.cls-62{fill:#c8c8c8;}.cls-63{fill:#c7c7c7;}.cls-64{fill:#cecece;}.cls-65{fill:#d3d3d3;}.cls-66{fill:#d5d5d5;}.cls-67{fill:#d0d0d0;}.cls-68{fill:#d9d9d9;}.cls-69{fill:#d4d4d4;}.cls-70{fill:#d8d8d8;}.cls-71{fill:#e2e2e2;}.cls-72{fill:#e4e4e4;}.cls-73{fill:#dedede;}.cls-74{fill:#c5c5c5;}.cls-75{fill:#d1d1d1;}.cls-76{fill:#cbcbcb;}.cls-77{fill:#d7d7d7;}.cls-78{fill:#ddd;}.cls-79{fill:#e3e3e3;}.cls-80{fill:#00b8e3;}.cls-81{fill:#33c6e9;}.cls-82{fill:#008aaa;}</style><clipPath id="clip-path"><path class="cls-1" d="M580.49,328.6H567a0.58,0.58,0,0,1-.46-0.23l-1.05-1.43-2.88-3.87-7.86-10.58-4.39-5.92a0.56,0.56,0,0,0-.86,0l-4.6,5.12-0.52.59a0.55,0.55,0,0,0-.14.37V328a0.57,0.57,0,0,1-.56.56H532a0.56,0.56,0,0,1-.56-0.56V272a0.56,0.56,0,0,1,.56-0.56h11.63a0.56,0.56,0,0,1,.56.56v21.47a0.56,0.56,0,0,0,1,.38l6.42-7,9.55-10.39,4.48-4.87a0.56,0.56,0,0,1,.41-0.18h14.28a0.56,0.56,0,0,1,.56.58,0.63,0.63,0,0,1-.14.35l-6.43,7.15-10.7,11.9-4.46,5a0.55,0.55,0,0,0,0,.69l5.56,7.77,5.06,7.13,0.62,0.87,3.83,5.36,4,5.62,2.79,3.9A0.57,0.57,0,0,1,580.49,328.6ZM527,327.81a0.57,0.57,0,0,1-.51.79H514.11a0.55,0.55,0,0,1-.51-0.34l-0.25-.55h0l-4.78-11.11a0.55,0.55,0,0,0-.51-0.34H484.84a0.57,0.57,0,0,0-.52.34l-0.71,1.65-4.31,10v0a0.56,0.56,0,0,1-.5.32H466.43a0.56,0.56,0,0,1-.51-0.79l0.86-2,5.83-13.49h0l0.21-.48,0.25-.56,0.11-.28,1.94-4.5v0l0,0h0l15-34.67a0.57,0.57,0,0,1,.51-0.34h11.61a0.55,0.55,0,0,1,.51.34l7.79,18,3.85,8.91,4.31,10,8.15,18.87Zm-23.71-23.55-0.82-1.91-2.74-6.4L497,289.63a0.57,0.57,0,0,0-1,0l-4.86,11.21-1.48,3.42a0.56,0.56,0,0,0,.51.78h12.61A0.56,0.56,0,0,0,503.26,304.26Zm-36.64,6.44a24.47,24.47,0,0,1-1.14,2.55,28.69,28.69,0,0,1-5.52,7.42l0,0a30.51,30.51,0,0,1-3.13,2.68,29,29,0,0,1-16.14,5.72c-0.68,0-1.38.07-2.08,0.07a29.86,29.86,0,0,1-16.72-4.73,30.35,30.35,0,0,1-4.62-3.74c-0.57-.56-1.12-1.13-1.63-1.72a28.24,28.24,0,0,1-7-19.33,32.44,32.44,0,0,1,.37-5h0l-0.26-.38,0.42-.63a27.71,27.71,0,0,1,8.14-15.07,30.43,30.43,0,0,1,4.31-3.52,28.1,28.1,0,0,1,10.22-4.28h0a32.86,32.86,0,0,1,6.8-.67,29.36,29.36,0,0,1,21.35,8.47,28,28,0,0,1,8.53,17.89v0c0.1,1,.14,2.08.14,3.16A30.07,30.07,0,0,1,466.63,310.7Zm-11-11a18.72,18.72,0,0,0-4.4-12.46,7.21,7.21,0,0,0-.5-0.59,15.67,15.67,0,0,0-12.06-5.39,17.27,17.27,0,0,0-3.69.39,15.75,15.75,0,0,0-8.37,5,18.58,18.58,0,0,0-4.9,12.6c0,0.15,0,.29,0,0.45a18.54,18.54,0,0,0,4.91,13,16.28,16.28,0,0,0,1.48,1.44,15.69,15.69,0,0,0,3.22,2.21,16.71,16.71,0,0,0,14.94-.12,16.26,16.26,0,0,0,4-3c0.17-.17.34-0.34,0.5-0.52a18.55,18.55,0,0,0,2.77-3.92A19.13,19.13,0,0,0,455.6,299.69Zm-47.7,17.53H384.65a0.55,0.55,0,0,1-.56-0.55V272a0.55,0.55,0,0,0-.32-0.5,0.49,0.49,0,0,0-.24-0.06H371.9a0.56,0.56,0,0,0-.56.56v56a0.56,0.56,0,0,0,.56.56h36a0.56,0.56,0,0,0,.56-0.56V317.78A0.56,0.56,0,0,0,407.9,317.22Zm-63.24-47c-0.92-.08-1.85-0.11-2.8-0.11a29.36,29.36,0,0,0-21.31,8.51,30.65,30.65,0,0,0-2.88,3.25h0a28.57,28.57,0,0,0-5.83,18,30.78,30.78,0,0,0,1.86,10.9,26.61,26.61,0,0,0,2.87,5.6h0a28.23,28.23,0,0,0,3.79,4.53,28.92,28.92,0,0,0,5.7,4.34h0c0.51,0.29,1,.58,1.57.85q0.57,0.29,1.17.54h0a32.63,32.63,0,0,0,13.27,2.59,29.57,29.57,0,0,0,4.24-.3h0c0.88-.12,1.76-0.29,2.62-0.5a29.64,29.64,0,0,0,13.31-7.35c0.81-.74,1.61-1.55,2.39-2.4a0.57,0.57,0,0,0,0-.78l-7.38-7.59a0.54,0.54,0,0,0-.49-0.16,0.61,0.61,0,0,0-.33.2,18.73,18.73,0,0,1-15,7,16.65,16.65,0,0,1-5.78-1,16.21,16.21,0,0,1-5.91-3.85,15.61,15.61,0,0,1-3.74-5.94,20.28,20.28,0,0,1-1.09-6.85q0-7.43,4.44-12c0.22-.22.44-0.44,0.67-0.66a17.52,17.52,0,0,1,12.31-4.7,18.45,18.45,0,0,1,14.64,7,0.55,0.55,0,0,0,.84,0l7.18-8.14a0.58,0.58,0,0,0,0-.76A30,30,0,0,0,344.66,270.24Zm-32.26,5.82,2.17-3.78a0.56,0.56,0,0,0-.48-0.84H301.55a0.57,0.57,0,0,0-.48.28l-11.36,19.55h0l-0.61.45-0.46.35a0.58,0.58,0,0,1-.24-0.22l-0.19-.32-0.29-.48L276.7,271.71a0.57,0.57,0,0,0-.48-0.28H263.68a0.56,0.56,0,0,0-.48.84l5.44,9.5L278.47,299l4,6.93a0.57,0.57,0,0,1,.08.28V328a0.56,0.56,0,0,0,.56.56H294.7a0.56,0.56,0,0,0,.56-0.56V306.17a0.57,0.57,0,0,1,.08-0.28l2.8-4.9,10.64-18.61,2.18-3.79,1.44-2.53h0Zm-53.69,41.26H230.48a0.56,0.56,0,0,1-.56-0.56V306a0.57,0.57,0,0,1,.56-0.56H255a0.56,0.56,0,0,0,.56-0.56v-9.75a0.56,0.56,0,0,0-.56-0.56H230.48a0.56,0.56,0,0,1-.56-0.56V283.36a0.56,0.56,0,0,1,.56-0.56h27.34a0.56,0.56,0,0,0,.56-0.56V272a0.56,0.56,0,0,0-.56-0.56h-40.1a0.56,0.56,0,0,0-.56.56v56a0.56,0.56,0,0,0,.56.56h41a0.56,0.56,0,0,0,.56-0.56V317.87A0.56,0.56,0,0,0,258.72,317.31ZM210.59,327q-2.18-3-5.3-7.43-2.44-3.41-5.43-7.62l-0.2-.29q-7.44-10.46-10.43-14.62a0.56,0.56,0,0,1,0-.69l5.09-5.65h0l4.19-4.66,4-4.48,8.28-9.2a0.56,0.56,0,0,0-.42-0.93H196.18a0.57,0.57,0,0,0-.42.18l-8.85,9.61-11.6,12.62a0.56,0.56,0,0,1-1-.38V272a0.55,0.55,0,0,0-.56-0.55H162.15a0.56,0.56,0,0,0-.56.56v56a0.56,0.56,0,0,0,.56.56h11.63a0.56,0.56,0,0,0,.56-0.56V312.61a0.55,0.55,0,0,1,.14-0.37l2.42-2.71,2.7-3a0.56,0.56,0,0,1,.86,0l8.07,10.85,5.8,7.8,2.33,3.14a0.55,0.55,0,0,0,.45.23h13.51a0.57,0.57,0,0,0,.46-0.89Zm-55.66-55.65h-119a1.08,1.08,0,0,0-.91.51s0,0,0,0l-0.59,1-7.28,12.62-8,13.94a1,1,0,0,0,0,1.05l1.75,3L35,328.11a1.06,1.06,0,0,0,.92.53h119a1.18,1.18,0,0,0,1.17-1.18v-54.9A1.19,1.19,0,0,0,154.93,271.37Z"/></clipPath><linearGradient id="linear-gradient" x1="17.66" y1="300.84" x2="584.47" y2="300.84" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#e6e6e6"/><stop offset="1" stop-color="#595959"/></linearGradient></defs><title>keycloak_deliverables</title><path class="cls-2" d="M135.1,271.36a1,1,0,0,1-.91-0.52l-15.91-27.58a1.08,1.08,0,0,0-.93-0.52H52.45a1,1,0,0,0-.91.52L35,271.88a0,0,0,0,0,0,0L19.08,299.47a1.07,1.07,0,0,0,0,1.05L35,328.1l16.53,28.65a1,1,0,0,0,.91.52h64.91a1.08,1.08,0,0,0,.93-0.52l15.92-27.58a1,1,0,0,1,.91-0.52h19.81a1.19,1.19,0,0,0,1.19-1.19v-54.9a1.19,1.19,0,0,0-1.19-1.19H135.1Z"/><g class="cls-3"><rect class="cls-4" x="17.66" y="262.56" width="566.81" height="76.56"/></g><path class="cls-5" d="M38.62,297.11l-17.78,6.45-1.75-3a1,1,0,0,1,0-1.05l8-13.94Z"/><path class="cls-6" d="M580.49,328.6h-7.34l-6.7-4.2,11.71-.59,2.79,3.9A0.57,0.57,0,0,1,580.49,328.6Z"/><path class="cls-6" d="M573.15,328.6H567a0.58,0.58,0,0,1-.46-0.23l-1.05-1.43,1-2.55Z"/><path class="cls-7" d="M580.89,272a0.63,0.63,0,0,1-.14.35l-6.43,7.15-0.4-4Z"/><path class="cls-8" d="M578.16,323.81l-11.71.59,7.72-6.21Z"/><path class="cls-9" d="M580.89,272l-7,3.49,1.19-4.07h5.23A0.56,0.56,0,0,1,580.89,272Z"/><path class="cls-10" d="M574.17,318.19l-7.72,6.21,3.89-11.57Z"/><polygon class="cls-11" points="575.1 271.43 573.91 275.5 567.14 271.43 575.1 271.43"/><path class="cls-12" d="M544.21,272v5.79l-12.75,1V272a0.56,0.56,0,0,1,.56-0.56h11.63A0.56,0.56,0,0,1,544.21,272Z"/><path class="cls-12" d="M573.91,275.5l-12.75,1,4.48-4.87a0.56,0.56,0,0,1,.41-0.18h1.09Z"/><path class="cls-13" d="M570.34,312.83l-3.89,11.57-3.86-1.32-7.86-10.58,9.93-7.67,5.06,7.13Z"/><polygon class="cls-9" points="544.22 277.78 544.22 284.06 531.46 279.23 531.46 278.77 544.22 277.78"/><polygon class="cls-9" points="574.31 279.51 563.61 291.41 551.61 286.86 561.16 276.48 573.91 275.5 574.31 279.51"/><path class="cls-14" d="M564.67,304.83l-9.93,7.67-4.39-5.92a0.56,0.56,0,0,0-.86,0l-4.6,5.12-13.42-30.46v-2l12.75,4.83v9.4a0.56,0.56,0,0,0,1,.38l6.42-7,12,4.54-4.46,5a0.55,0.55,0,0,0,0,.69Z"/><polygon class="cls-15" points="566.45 324.39 565.48 326.94 562.6 323.07 566.45 324.39"/><path class="cls-16" d="M544.88,311.65l-0.52.59a0.55,0.55,0,0,0-.14.37V315l-12.75-10.82v-23Z"/><path class="cls-10" d="M527,327.81a0.57,0.57,0,0,1-.51.79H524.6l2.26-1Z"/><path class="cls-10" d="M544.21,319.55V328a0.57,0.57,0,0,1-.56.56H532a0.56,0.56,0,0,1-.56-0.56v-2.6Z"/><path class="cls-9" d="M526.86,327.55l-2.26,1H514.11a0.55,0.55,0,0,1-.51-0.34l-0.25-.55h0l5.36-19Z"/><polygon class="cls-9" points="544.22 315.03 544.22 319.55 531.46 325.43 531.46 304.21 544.22 315.03"/><path class="cls-17" d="M518.71,308.68l-5.36,19-4.78-11.11a0.55,0.55,0,0,0-.51-0.34H484.83a0.57,0.57,0,0,0-.52.34l-0.71,1.65-10.8-6.39,0.25-.56L493.6,305h9.15a0.56,0.56,0,0,0,.51-0.78l-0.82-1.91,12-3.64Z"/><path class="cls-18" d="M493.6,305L473,311.29l0.11-.28,17.94-10.18-1.48,3.42a0.56,0.56,0,0,0,.51.78h3.46Z"/><polygon class="cls-18" points="514.4 298.71 502.44 302.35 499.71 295.95 510.55 289.8 514.4 298.71"/><path class="cls-12" d="M483.6,318.24l-4.31,10v0l-6.69-15.94h0l0.21-.48Z"/><path class="cls-19" d="M510.55,289.8l-10.84,6.15L497,289.63a0.57,0.57,0,0,0-1,0l-4.86,11.21L473.16,311l1.94-4.5v0l0,0h0l19.84-35h7.26a0.55,0.55,0,0,1,.51.34Z"/><path class="cls-20" d="M466.21,287.57a28.28,28.28,0,0,1,2.25,8.91Z"/><path class="cls-20" d="M495,271.43l-19.84,35,15-34.67a0.57,0.57,0,0,1,.51-0.34H495Z"/><path class="cls-21" d="M468.6,299.65a30.07,30.07,0,0,1-2,11.05l-13.16-1.93a19.13,19.13,0,0,0,2.14-9.09,18.72,18.72,0,0,0-4.4-12.46l5.14-11.66a29.67,29.67,0,0,1,3.59,3,28.15,28.15,0,0,1,6.27,9l2.25,8.91v0C468.55,297.52,468.6,298.57,468.6,299.65Z"/><path class="cls-22" d="M454,316.16l11.5-2.91a28.69,28.69,0,0,1-5.52,7.42Z"/><path class="cls-22" d="M479.28,328.27a0.56,0.56,0,0,1-.5.32h-8.34l-3.67-2.78,5.83-13.49Z"/><path class="cls-18" d="M454,316.16l6,4.51,0,0a30.51,30.51,0,0,1-3.13,2.68Z"/><path class="cls-18" d="M470.44,328.6h-4a0.56,0.56,0,0,1-.51-0.79l0.86-2Z"/><path class="cls-20" d="M466.62,310.7a24.47,24.47,0,0,1-1.14,2.55L454,316.16l-3.79-2.95c0.17-.17.34-0.34,0.5-0.52a18.55,18.55,0,0,0,2.77-3.92Z"/><path class="cls-22" d="M456.81,323.38a29,29,0,0,1-16.14,5.72L454,316.16Z"/><path class="cls-23" d="M456.34,275.56l-5.14,11.66a7.21,7.21,0,0,0-.5-0.59,15.67,15.67,0,0,0-12.06-5.39,17.27,17.27,0,0,0-3.69.39l-3.16-10.84a32.86,32.86,0,0,1,6.8-.67A29.62,29.62,0,0,1,456.34,275.56Z"/><path class="cls-24" d="M454,316.16L440.67,329.1c-0.68,0-1.38.07-2.08,0.07a29.86,29.86,0,0,1-16.72-4.73l1.49-8,7.92-.07a16.71,16.71,0,0,0,14.94-.12Z"/><path class="cls-25" d="M434.95,281.64a15.75,15.75,0,0,0-8.37,5,18.58,18.58,0,0,0-4.9,12.6L409,294.4l-0.29-.11,0.42-.63,12.44-18.59a28.1,28.1,0,0,1,10.22-4.28h0Z"/><path class="cls-26" d="M428.06,314.13a15.69,15.69,0,0,0,3.22,2.21l-7.92.07Z"/><path class="cls-26" d="M454,316.16l-7.76.07a16.26,16.26,0,0,0,4-3Z"/><path class="cls-27" d="M428.06,314.13l-4.69,2.28L409,294.68h0l-0.26-.38L409,294.4l12.68,4.84c0,0.15,0,.29,0,0.45a18.54,18.54,0,0,0,4.91,13A16.28,16.28,0,0,0,428.06,314.13Z"/><path class="cls-28" d="M421.56,275.07l-12.44,18.59a27.71,27.71,0,0,1,8.14-15.07A30.43,30.43,0,0,1,421.56,275.07Z"/><path class="cls-26" d="M386.64,328.6l21.82-7.24V328a0.56,0.56,0,0,1-.56.56H386.64Z"/><path class="cls-26" d="M423.36,316.41l-1.49,8a30.35,30.35,0,0,1-4.62-3.74c-0.57-.56-1.12-1.13-1.63-1.72Z"/><path class="cls-23" d="M408.46,317.78v3.57l-21.82,7.24H374.82l11.23-11.38H407.9A0.56,0.56,0,0,1,408.46,317.78Z"/><path class="cls-23" d="M423.36,316.41L415.63,319a28.24,28.24,0,0,1-7-19.33,32.44,32.44,0,0,1,.37-5Z"/><path class="cls-29" d="M386.05,317.22L374.82,328.6H371.9a0.56,0.56,0,0,1-.56-0.56v0l12.75-36v24.72a0.55,0.55,0,0,0,.56.55h1.4Z"/><path class="cls-30" d="M384.09,272v3.18l-0.32-3.69A0.55,0.55,0,0,1,384.09,272Z"/><path class="cls-31" d="M365.07,280.45a0.58,0.58,0,0,1,0,.76l-7.18,8.14a0.55,0.55,0,0,1-.84,0,19,19,0,0,0-9.61-6.37l-2.79-12.73A30,30,0,0,1,365.07,280.45Z"/><path class="cls-31" d="M377.09,271.43l-5.75,5.84V272a0.56,0.56,0,0,1,.56-0.56h5.19Z"/><path class="cls-32" d="M384.09,275.17v13.77l-12.75,3.53v-15.2l5.75-5.84h6.44a0.49,0.49,0,0,1,.24.06Z"/><path class="cls-33" d="M364.7,317.9a0.57,0.57,0,0,1,0,.78c-0.78.86-1.58,1.66-2.39,2.4l-5.5-10.94a0.54,0.54,0,0,1,.49.16Z"/><polygon class="cls-33" points="384.09 288.94 384.09 291.95 371.34 327.99 371.34 292.47 384.09 288.94"/><path class="cls-28" d="M362.34,321.09A29.64,29.64,0,0,1,349,328.43l0.75-12.85a19.5,19.5,0,0,0,6.72-5.24,0.61,0.61,0,0,1,.33-0.2Z"/><path class="cls-34" d="M349.78,315.59L349,328.43c-0.86.21-1.74,0.38-2.62,0.5h0l-17.51-2.29h0q-0.6-.26-1.17-0.54l8.08-9.77a16.65,16.65,0,0,0,5.78,1A19.47,19.47,0,0,0,349.78,315.59Z"/><path class="cls-35" d="M335.75,316.33l-8.08,9.77c-0.53-.27-1.05-0.55-1.57-0.85h0l-9.49-8.88h0a26.61,26.61,0,0,1-2.87-5.6l12.39-4.21a15.61,15.61,0,0,0,3.74,5.94A16.21,16.21,0,0,0,335.75,316.33Z"/><polygon class="cls-36" points="308.33 277.29 312.4 276.06 310.96 278.59 308.33 277.29"/><path class="cls-36" d="M347.46,283a18.89,18.89,0,0,0-5-.66,17.52,17.52,0,0,0-12.31,4.7c-0.24.22-.46,0.44-0.67,0.66l-11.78-5.78h0a30.65,30.65,0,0,1,2.88-3.25,29.36,29.36,0,0,1,21.31-8.51c1,0,1.88,0,2.8.11Z"/><polygon class="cls-37" points="308.33 277.29 310.96 278.59 308.78 282.38 308.33 277.29"/><path class="cls-37" d="M325,299.68a20.28,20.28,0,0,0,1.09,6.85l-12.39,4.21a30.78,30.78,0,0,1-1.86-10.9,28.57,28.57,0,0,1,5.83-18l11.78,5.78Q325,292.25,325,299.68Z"/><path class="cls-38" d="M328.86,326.64h0Z"/><path class="cls-38" d="M346.38,328.94a29.57,29.57,0,0,1-4.24.3,32.63,32.63,0,0,1-13.27-2.59Z"/><path class="cls-39" d="M314.57,272.27L312.4,276l-4.08,1.25-2.05-5.86h7.81A0.56,0.56,0,0,1,314.57,272.27Z"/><polygon class="cls-40" points="295.26 321.73 295.26 323.23 292.37 321.31 295.26 321.73"/><path class="cls-34" d="M295.26,323.23V328a0.56,0.56,0,0,1-.56.56H292l0.39-7.29Z"/><polygon class="cls-41" points="292.37 321.31 295.26 319.82 295.26 321.73 292.37 321.31"/><path class="cls-41" d="M326.09,325.25a28.92,28.92,0,0,1-5.7-4.34,28.23,28.23,0,0,1-3.79-4.53Z"/><polygon class="cls-42" points="308.78 282.38 298.14 300.99 287.74 292.74 288.63 292.07 289.09 291.72 289.7 291.27 289.7 291.26 289.71 291.25 308.33 277.29 308.78 282.38"/><path class="cls-43" d="M298.14,301l-2.8,4.9a0.57,0.57,0,0,0-.08.28v13.66l-2.89,1.48-4.63-28.57Z"/><path class="cls-44" d="M288.4,291.85a0.58,0.58,0,0,0,.24.22l-0.89.67,0.47-1.21Z"/><path class="cls-44" d="M308.33,277.29l-18.62,14,11.36-19.55a0.57,0.57,0,0,1,.48-0.28h4.72Z"/><polygon class="cls-45" points="292.37 321.31 291.98 328.6 283.15 328.6 292.37 321.31"/><path class="cls-46" d="M258.38,272v3.9l-7.76-4.46h7.2A0.56,0.56,0,0,1,258.38,272Z"/><path class="cls-46" d="M287.92,291l-0.18,1.69-19.11-11-5.44-9.5a0.56,0.56,0,0,1,.48-0.84h12.54a0.57,0.57,0,0,1,.48.28Z"/><polygon class="cls-47" points="288.21 291.53 287.74 292.74 287.92 291.05 288.21 291.53"/><path class="cls-37" d="M292.37,321.31l-9.22,7.29h-0.09a0.56,0.56,0,0,1-.56-0.56V323.7Z"/><path class="cls-48" d="M282.51,316.14v-10a0.57,0.57,0,0,0-.08-0.28l-4-6.93,9.28-6.23,4.63,28.57Z"/><path class="cls-42" d="M256.1,328.6l3.17-6.88V328a0.56,0.56,0,0,1-.56.56H256.1Z"/><polygon class="cls-42" points="292.37 321.31 282.5 323.7 282.5 316.14 292.37 321.31"/><path class="cls-49" d="M258.38,275.89v6.35a0.56,0.56,0,0,1-.56.56h-5.39l-6.2-11.37h4.38Z"/><polygon class="cls-49" points="287.74 292.74 278.47 298.96 268.63 281.77 287.74 292.74"/><polygon class="cls-50" points="252.44 282.8 246.77 282.8 238.32 271.89 238.99 271.43 246.24 271.43 252.44 282.8"/><path class="cls-51" d="M259.28,317.87v3.85l-3.17,6.88h-4.35l-33.24-16,11.41-1.24v5.43a0.56,0.56,0,0,0,.56.56h28.24A0.56,0.56,0,0,1,259.28,317.87Z"/><polygon class="cls-52" points="246.77 282.8 233.01 282.8 238.32 271.89 246.77 282.8"/><path class="cls-52" d="M255.52,295.13v9.75a0.56,0.56,0,0,1-.56.56H230.48a0.57,0.57,0,0,0-.56.56v5.31l-11.41,1.24,11.41-23.42V294a0.56,0.56,0,0,0,.56.56H255A0.56,0.56,0,0,1,255.52,295.13Z"/><polygon class="cls-53" points="251.75 328.6 223.55 328.6 218.51 312.55 251.75 328.6"/><path class="cls-54" d="M238.32,271.9L233,282.8h-2.53a0.56,0.56,0,0,0-.56.56v5.78l-11.41,23.42-1.34-2.2V281.77Z"/><path class="cls-55" d="M210.87,272.36l-8.28,9.2-1.53-10.13h9.39A0.56,0.56,0,0,1,210.87,272.36Z"/><path class="cls-55" d="M238.32,271.9l-21.16,9.87V272a0.56,0.56,0,0,1,.56-0.56h17.6Z"/><path class="cls-56" d="M205.29,319.58q3.12,4.39,5.3,7.43l-12.93-3.38Z"/><path class="cls-56" d="M223.55,328.6h-5.83a0.56,0.56,0,0,1-.56-0.56V313.27l1.34-.71Z"/><path class="cls-53" d="M210.63,328.6H199.16l-1.49-5L210.59,327l0.49,0.69A0.57,0.57,0,0,1,210.63,328.6Z"/><path class="cls-57" d="M199.86,312q3,4.22,5.43,7.62l-7.62,4,2-12Z"/><polygon class="cls-57" points="218.51 312.55 217.17 313.27 217.17 310.36 218.51 312.55"/><path class="cls-58" d="M199.66,311.67l-2,12-9.12-6.2-8.07-10.85a0.56,0.56,0,0,0-.86,0l-2.7,3-14.5-9.85,32-9-5.09,5.65a0.56,0.56,0,0,0,0,.69Q192.21,301.2,199.66,311.67Z"/><path class="cls-47" d="M199.16,328.6h-2a0.55,0.55,0,0,1-.45-0.23l-2.33-3.14,3.33-1.61Z"/><polygon class="cls-59" points="168.07 273.44 174.34 271.98 174.34 276.03 168.07 273.44"/><path class="cls-59" d="M202.6,281.56l-4,4.48-11.65-4.82,8.85-9.61a0.57,0.57,0,0,1,.42-0.18h4.89Z"/><path class="cls-60" d="M198.57,286l-4.19,4.66h0l-32,9,5.66-26.25,6.27,2.59v17.43a0.56,0.56,0,0,0,1,.38l11.61-12.62Z"/><path class="cls-61" d="M162.4,299.68l14.5,9.85-2.42,2.71a0.55,0.55,0,0,0-.14.37V328a0.56,0.56,0,0,1-.56.56h-0.16Z"/><polygon class="cls-61" points="197.66 323.63 194.34 325.23 188.54 317.43 197.66 323.63"/><polygon class="cls-62" points="144.39 302.26 156.11 300.59 156.11 314.18 144.39 302.26"/><polygon class="cls-62" points="173.62 328.6 170.3 328.6 161.59 319.74 161.59 299.8 162.4 299.69 173.62 328.6"/><path class="cls-61" d="M144.39,302.26l11.72,11.92v13.28a1.18,1.18,0,0,1-1.17,1.18H141.31Z"/><path class="cls-61" d="M170.3,328.6h-8.15a0.56,0.56,0,0,1-.56-0.56v-8.3Z"/><polygon class="cls-63" points="144.39 302.26 141.31 328.63 124.91 328.63 119.94 316.67 144.39 302.26"/><polygon class="cls-64" points="144.39 302.26 156.11 288 156.11 300.59 144.39 302.26"/><polygon class="cls-64" points="168.07 273.44 162.4 299.69 161.59 299.8 161.59 281.32 168.07 273.44"/><path class="cls-65" d="M156.11,272.55V288l-11.72,14.27-8.84-30.9h19.37A1.19,1.19,0,0,1,156.11,272.55Z"/><polygon class="cls-65" points="168.07 273.44 161.59 281.32 161.59 272.06 168.07 273.44"/><polygon class="cls-58" points="124.91 328.63 116.26 328.63 114.02 325.42 119.94 316.67 124.91 328.63"/><polygon class="cls-66" points="144.39 302.26 111.96 288.55 129.02 271.36 135.56 271.36 144.39 302.26"/><path class="cls-67" d="M112,288.55l8,28.12,24.45-14.41Z"/><polygon class="cls-50" points="116.26 328.63 113.92 328.63 114.02 325.42 116.26 328.63"/><polygon class="cls-68" points="129.02 271.36 111.96 288.55 108.88 273.18 115.46 271.36 129.02 271.36"/><path class="cls-69" d="M112,288.55l-39.37,9.08L114,325.42Z"/><path class="cls-67" d="M112,288.55L114,325.42l5.92-8.75Z"/><path class="cls-68" d="M108.88,273.18L72.59,297.63,112,288.55Z"/><polygon class="cls-70" points="72.59 297.63 55.52 328.63 45.8 328.63 38.62 297.11 72.59 297.63"/><path class="cls-71" d="M55.09,271.36L38.62,297.11l-4.2-24.2,0.59-1s0,0,0,0a1.08,1.08,0,0,1,.91-0.51H55.09Z"/><path class="cls-70" d="M45.8,328.63H35.93A1.06,1.06,0,0,1,35,328.1L20.83,303.56l17.78-6.45Z"/><polygon class="cls-72" points="38.62 297.11 27.13 285.53 34.41 272.91 38.62 297.11"/><polygon class="cls-73" points="90.57 271.36 79.22 271.36 61.83 271.36 72.59 297.63 108.88 273.18 97.94 271.36 90.57 271.36"/><polygon class="cls-73" points="57.34 271.36 55.09 271.36 38.62 297.11 72.59 297.63 61.83 271.36 57.34 271.36"/><polygon class="cls-74" points="106.12 328.63 112.45 328.63 113.92 328.63 114.02 325.42 106.12 328.63"/><polygon class="cls-67" points="114.02 325.42 72.59 297.63 80.05 328.63 90.57 328.63 106.12 328.63 114.02 325.42"/><polygon class="cls-75" points="55.52 328.63 57.34 328.63 79.22 328.63 80.05 328.63 72.59 297.63 55.52 328.63"/><polygon class="cls-62" points="238.99 271.43 238.32 271.89 238 271.43 238.99 271.43"/><polygon class="cls-76" points="238.32 271.89 235.33 271.43 238 271.43 238.32 271.89"/><path class="cls-75" d="M174.34,272l-6.27,1.45,1.72-2h4A0.55,0.55,0,0,1,174.34,272Z"/><polygon class="cls-77" points="169.79 271.43 168.07 273.44 167.72 271.43 169.79 271.43"/><path class="cls-68" d="M168.07,273.44l-6.48-1.38V272a0.56,0.56,0,0,1,.56-0.56h5.57Z"/><polygon class="cls-78" points="108.99 271.36 108.88 273.18 115.46 271.36 112.45 271.36 108.99 271.36"/><polygon class="cls-79" points="97.94 271.36 108.88 273.18 107.87 271.36 97.94 271.36"/><polygon class="cls-71" points="107.87 271.36 108.88 273.18 108.99 271.36 107.87 271.36"/><path class="cls-80" d="M79.11,271.86l-16,27.72A0.93,0.93,0,0,0,63,300H51.83l22-38.05a0.86,0.86,0,0,1,.33.32l0,0,5,8.65A1,1,0,0,1,79.11,271.86Z"/><path class="cls-81" d="M79.09,329.16l-5,8.61a1,1,0,0,1-.34.32L51.82,300H63a0.85,0.85,0,0,0,.11.43,0.1,0.1,0,0,0,0,0l16,27.7A0.94,0.94,0,0,1,79.09,329.16Z"/><path class="cls-82" d="M73.78,262L51.83,300h0l-5.51,9.54L41,300.46a0.85,0.85,0,0,1-.11-0.43,0.93,0.93,0,0,1,.12-0.45l5.33-9.23,16.18-28a0.94,0.94,0,0,1,.82-0.48h9.93A1,1,0,0,1,73.78,262Z"/><path class="cls-80" d="M73.78,338.09a1,1,0,0,1-.47.13H63.38a0.94,0.94,0,0,1-.82-0.48L47.77,312.12l-1.46-2.54L51.82,300Z"/><path class="cls-82" d="M118,300L96,338.09a1,1,0,0,1-.33-0.32l0,0-5-8.63a1,1,0,0,1,0-.89l16-27.72a0.93,0.93,0,0,0,.13-0.48H118Z"/><path class="cls-80" d="M128.83,300a0.93,0.93,0,0,1-.13.48l-21.52,37.26a0.94,0.94,0,0,1-.8.44H96.46a1,1,0,0,1-.48-0.13L118,300l5.51-9.53,5.23,9.06A0.92,0.92,0,0,1,128.83,300Z"/><path class="cls-80" d="M118,300H106.78a0.92,0.92,0,0,0-.13-0.47l-16-27.69a0.94,0.94,0,0,1,0-1l5-8.62A1,1,0,0,1,96,262Z"/><path class="cls-81" d="M123.46,290.48h0L118,300,96,262a1,1,0,0,1,.48-0.13h9.92a0.94,0.94,0,0,1,.8.44Z"/></svg>