react-toolkits 2.13.0 → 2.13.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.
package/lib/index.js CHANGED
@@ -1,23 +1,23 @@
1
1
  import axios, { AxiosHeaders, isAxiosError } from 'axios';
2
2
  import { jwtDecode } from 'jwt-decode';
3
- import { create, useStore, createStore } from 'zustand';
3
+ import { useStore, create, createStore } from 'zustand';
4
4
  import { persist, createJSONStorage } from 'zustand/middleware';
5
5
  import * as Antd2 from 'antd';
6
- import { Spin, Menu, Typography, Select, Card, Form, Input, theme, Space, Tag, Result, Table, Button, Divider, Dropdown, Empty, Alert, Modal, App, Tooltip, Popconfirm, Switch, InputNumber, Row, Col, Breadcrumb, Skeleton, Descriptions, Collapse, Checkbox } from 'antd';
7
- import { createContext, memo, useMemo, useCallback, useEffect, forwardRef, lazy, useContext, useState, useRef, Suspense, Fragment as Fragment$1, useImperativeHandle, cloneElement } from 'react';
8
- import useSWR6, { mutate, SWRConfig, unstable_serialize } from 'swr';
6
+ import { Modal, Form, Card, Input, Select, theme, Space, Tag, Typography, Spin, Result, Table, Button, Alert, Divider, Menu, App, Switch, InputNumber, Row, Col, Breadcrumb, Descriptions, Skeleton, Empty, Dropdown, Tooltip, Popconfirm, Collapse, Checkbox } from 'antd';
7
+ import { lazy, useContext, useMemo, useState, useRef, useEffect, createContext, memo, useCallback, forwardRef, Fragment as Fragment$1, Suspense, useImperativeHandle, cloneElement } from 'react';
9
8
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
- import { isEqual, has, template, get } from 'lodash-es';
9
+ import { has, template, get, isEqual, last, first } from 'lodash-es';
11
10
  import { flushSync } from 'react-dom';
12
11
  import { createRoot } from 'react-dom/client';
12
+ import useSWR5, { mutate, unstable_serialize } from 'swr';
13
+ import logoUrl from './logo-L6MFCL6M.png';
14
+ import { Routes, Route, Navigate, useNavigate, useLocation, useParams, Link } from 'react-router-dom';
15
+ import { PlusOutlined, UserAddOutlined, UsergroupAddOutlined, LogoutOutlined, UserOutlined, MenuUnfoldOutlined, MenuFoldOutlined, MinusCircleOutlined } from '@ant-design/icons';
13
16
  import useSWRMutation2 from 'swr/mutation';
14
- import { useLocation, Link, useNavigate, Navigate, Routes, Route, useParams } from 'react-router-dom';
15
17
  import { Editor } from '@monaco-editor/react';
16
- import { PlusOutlined, MenuUnfoldOutlined, MenuFoldOutlined, LogoutOutlined, UserOutlined, UserAddOutlined, UsergroupAddOutlined } from '@ant-design/icons';
17
18
  import { produce } from 'immer';
18
19
  import qs from 'query-string';
19
20
  import useSWRInfinite from 'swr/infinite';
20
- import logoUrl from './logo-L6MFCL6M.png';
21
21
  import dayjs from 'dayjs';
22
22
  import useSWRImmutable from 'swr/immutable';
23
23
 
@@ -31,10 +31,10 @@ var __export = (target, all) => {
31
31
  __defProp(target, name, { get: all[name], enumerable: true });
32
32
  };
33
33
 
34
- // src/utils/storage.ts
34
+ // src/utils/index.ts
35
35
  var mixedStorage;
36
- var init_storage = __esm({
37
- "src/utils/storage.ts"() {
36
+ var init_utils = __esm({
37
+ "src/utils/index.ts"() {
38
38
  mixedStorage = {
39
39
  getItem: (name) => {
40
40
  return sessionStorage.getItem(name) || localStorage.getItem(name);
@@ -84,7 +84,9 @@ var init_en_GB = __esm({
84
84
  request: "Request",
85
85
  response: "Response",
86
86
  add: "Add",
87
- signIn: "Sign In"
87
+ signIn: "Sign In",
88
+ projectGroup: "Project Group",
89
+ view: "View"
88
90
  },
89
91
  SignIn: {
90
92
  title: "Sign In Method",
@@ -155,6 +157,23 @@ var init_en_GB = __esm({
155
157
  }
156
158
  });
157
159
 
160
+ // src/constants/index.ts
161
+ var SSO_URL, APP_ID_HEADER, FRONTEND_ROUTE_PREFIX, PermissionVersion, WILDCARD;
162
+ var init_constants = __esm({
163
+ "src/constants/index.ts"() {
164
+ SSO_URL = "https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1";
165
+ APP_ID_HEADER = "App-ID";
166
+ FRONTEND_ROUTE_PREFIX = "/console/";
167
+ PermissionVersion = /* @__PURE__ */ ((PermissionVersion2) => {
168
+ PermissionVersion2["V1"] = "v1";
169
+ PermissionVersion2["V2"] = "v2";
170
+ PermissionVersion2["V3"] = "v3";
171
+ return PermissionVersion2;
172
+ })(PermissionVersion || {});
173
+ WILDCARD = "*";
174
+ }
175
+ });
176
+
158
177
  // src/stores/context.ts
159
178
  var createContextSlice;
160
179
  var init_context = __esm({
@@ -162,11 +181,10 @@ var init_context = __esm({
162
181
  init_en_GB();
163
182
  createContextSlice = () => ({
164
183
  locale: en_GB_default,
165
- isPermissionApiV2: false,
166
184
  gameApiV2: false,
167
185
  isGlobal: false,
168
186
  signInPath: "/",
169
- hideGameSelect: false
187
+ permissionVersion: "v1" /* V1 */
170
188
  });
171
189
  }
172
190
  });
@@ -176,22 +194,11 @@ var createGameSlice;
176
194
  var init_game = __esm({
177
195
  "src/stores/game.ts"() {
178
196
  createGameSlice = (set, get2) => ({
179
- games: [],
180
- isGamesLoading: false,
181
- setGame(value) {
182
- if (value) {
183
- const game = get2().games.find((item) => String(get2().gameApiV2 ? item.game_id : item.id) === String(value));
184
- set({ game });
185
- }
186
- },
187
- setGames(games) {
188
- set({ games });
189
- },
190
- setSelectedGame(value) {
191
- set({ selectedGame: value });
197
+ setGame(game) {
198
+ set({ game });
192
199
  },
193
- setIsGamesLoading(loading) {
194
- set({ isGamesLoading: loading });
200
+ getGameId() {
201
+ return get2().gameApiV2 ? get2().game?.game_id : get2().game?.id;
195
202
  }
196
203
  });
197
204
  }
@@ -218,7 +225,7 @@ var init_token = __esm({
218
225
  var createToolkitsStore;
219
226
  var init_stores = __esm({
220
227
  "src/stores/index.ts"() {
221
- init_storage();
228
+ init_utils();
222
229
  init_axios();
223
230
  init_context();
224
231
  init_game();
@@ -234,6 +241,7 @@ var init_stores = __esm({
234
241
  ...createContextSlice(...args),
235
242
  ...createAxiosSlice(...args),
236
243
  ...initProps,
244
+ unregistered: false,
237
245
  clearToken() {
238
246
  get2().setToken("");
239
247
  store.persist.clearStorage();
@@ -248,8 +256,7 @@ var init_stores = __esm({
248
256
  storage: createJSONStorage(() => mixedStorage),
249
257
  partialize: (state) => ({
250
258
  token: state.token,
251
- game: state.game,
252
- selectedGame: state.selectedGame
259
+ game: state.game
253
260
  })
254
261
  }
255
262
  )
@@ -257,35 +264,24 @@ var init_stores = __esm({
257
264
  };
258
265
  }
259
266
  });
260
-
261
- // src/constants.ts
262
- var SSO_URL, APP_ID_HEADER, FRONTEND_ROUTE_PREFIX;
263
- var init_constants = __esm({
264
- "src/constants.ts"() {
265
- SSO_URL = "https://idaas.ifunplus.cn/enduser/api/application/plugin_FunPlus/sso/v1";
266
- APP_ID_HEADER = "App-ID";
267
- FRONTEND_ROUTE_PREFIX = "/console/";
268
- }
269
- });
270
267
  var Interceptors, Interceptors_default;
271
268
  var init_Interceptors = __esm({
272
269
  "src/components/interceptors/Interceptors.tsx"() {
273
270
  init_constants();
274
- init_contextProvider();
271
+ init_toolkitsProvider();
275
272
  Interceptors = ({ children }) => {
276
273
  const { notification } = App.useApp();
277
274
  const {
278
275
  axios: axios2,
279
276
  interceptors,
280
277
  token,
281
- isPermissionApiV2,
282
278
  isGlobal,
283
- selectedGame,
284
- gameApiV2,
285
279
  signInPath,
286
280
  clearToken,
287
- setUnregistered
288
- } = useContextStore((s) => s);
281
+ setUnregistered,
282
+ getGameId,
283
+ permissionVersion
284
+ } = useToolkitsStore((s) => s);
289
285
  let requestInterceptorId;
290
286
  let responseInterceptorId;
291
287
  if (interceptors?.request) {
@@ -297,11 +293,12 @@ var init_Interceptors = __esm({
297
293
  if (token) {
298
294
  headers.setAuthorization(`Bearer ${token}`);
299
295
  }
300
- if (!headers.has(APP_ID_HEADER) && isPermissionApiV2) {
301
- if (isGlobal || !selectedGame) {
296
+ if (!headers.has(APP_ID_HEADER) && permissionVersion !== "v1" /* V1 */) {
297
+ const gameId = getGameId();
298
+ if (isGlobal || !gameId) {
302
299
  headers.set(APP_ID_HEADER, "global");
303
300
  } else {
304
- headers.set(APP_ID_HEADER, selectedGame);
301
+ headers.set(APP_ID_HEADER, gameId);
305
302
  }
306
303
  }
307
304
  headers.set("Accept", config.responseType === "blob" ? "application/octet-stream" : "application/json");
@@ -376,18 +373,18 @@ var init_interceptors = __esm({
376
373
  init_Interceptors();
377
374
  }
378
375
  });
379
- function useContextStore(selector) {
380
- const store = useContext(Context);
376
+ function useToolkitsStore(selector) {
377
+ const store = useContext(ToolkitsContext);
381
378
  if (!store) throw new Error("Missing ToolkitsProvider in the tree");
382
379
  return useStore(store, selector);
383
380
  }
384
- var Context, globalState, Contextrovider, withContext, ContextProvider_default;
385
- var init_ContextProvider = __esm({
386
- "src/components/contextProvider/ContextProvider.tsx"() {
381
+ var ToolkitsContext, globalState, ToolkitsProvider, withContext, ToolkitsProvider_default;
382
+ var init_ToolkitsProvider = __esm({
383
+ "src/components/toolkitsProvider/ToolkitsProvider.tsx"() {
387
384
  init_stores();
388
385
  init_interceptors();
389
- Context = createContext(null);
390
- Contextrovider = (props) => {
386
+ ToolkitsContext = createContext(null);
387
+ ToolkitsProvider = (props) => {
391
388
  const { children, ...restProps } = props;
392
389
  const storeRef = useRef();
393
390
  if (!storeRef.current) {
@@ -400,40 +397,28 @@ var init_ContextProvider = __esm({
400
397
  if (!globalState.signInPath) {
401
398
  throw new Error('ToolkitsProvider: \u8BF7\u914D\u7F6E "signInPath"');
402
399
  }
403
- const { axios: axios2 } = globalState;
404
- return /* @__PURE__ */ jsx(Context.Provider, { value: storeRef.current, children: /* @__PURE__ */ jsx(App, { children: /* @__PURE__ */ jsx(Interceptors_default, { children: /* @__PURE__ */ jsx(
405
- SWRConfig,
406
- {
407
- value: {
408
- fetcher: async (arg) => {
409
- const response = typeof arg === "string" ? await axios2.get(arg) : await axios2.request(arg);
410
- return response.data.data;
411
- }
412
- },
413
- children
414
- }
415
- ) }) }) });
400
+ return /* @__PURE__ */ jsx(ToolkitsContext.Provider, { value: storeRef.current, children: /* @__PURE__ */ jsx(App, { children: /* @__PURE__ */ jsx(Interceptors_default, { children }) }) });
416
401
  };
417
402
  withContext = (Component, providerProps) => {
418
403
  return (props) => {
419
- return /* @__PURE__ */ jsx(Contextrovider, { ...providerProps, children: /* @__PURE__ */ jsx(Component, { ...props }) });
404
+ return /* @__PURE__ */ jsx(ToolkitsProvider, { ...providerProps, children: /* @__PURE__ */ jsx(Component, { ...props }) });
420
405
  };
421
406
  };
422
407
  if (process.env.NODE_ENV !== "production") {
423
- Contextrovider.displayName = "Contextrovider";
408
+ ToolkitsProvider.displayName = "ToolkitsProvider";
424
409
  }
425
- ContextProvider_default = Contextrovider;
410
+ ToolkitsProvider_default = ToolkitsProvider;
426
411
  }
427
412
  });
428
413
 
429
- // src/components/contextProvider/index.ts
430
- var init_contextProvider = __esm({
431
- "src/components/contextProvider/index.ts"() {
432
- init_ContextProvider();
414
+ // src/components/toolkitsProvider/index.ts
415
+ var init_toolkitsProvider = __esm({
416
+ "src/components/toolkitsProvider/index.ts"() {
417
+ init_ToolkitsProvider();
433
418
  }
434
419
  });
435
420
  function useTranslation() {
436
- const locale2 = useContextStore((state) => state.locale);
421
+ const locale2 = useToolkitsStore((state) => state.locale);
437
422
  const t = useMemo(
438
423
  () => (key, data) => has(locale2, key) ? template(get(locale2, key))(data) : key,
439
424
  [locale2]
@@ -442,7 +427,7 @@ function useTranslation() {
442
427
  }
443
428
  var init_hooks = __esm({
444
429
  "src/components/locale/hooks.ts"() {
445
- init_contextProvider();
430
+ init_toolkitsProvider();
446
431
  }
447
432
  });
448
433
 
@@ -536,15 +521,27 @@ var init_highlight = __esm({
536
521
  init_Highlight();
537
522
  }
538
523
  });
524
+ function useMenuList() {
525
+ const { getGameId, signInPath, axios: axios2 } = useToolkitsStore((s) => s);
526
+ const gameId = getGameId();
527
+ return useSWR5(
528
+ window.location.pathname !== signInPath ? ["/api/usystem/menu/navbar", gameId] : null,
529
+ ([url4]) => axios2(url4).then((response) => response.data.data)
530
+ );
531
+ }
539
532
  var usePermissions, usePermission;
540
- var init_permission = __esm({
541
- "src/hooks/permission.ts"() {
542
- init_contextProvider();
533
+ var init_hooks2 = __esm({
534
+ "src/hooks/index.ts"() {
535
+ init_toolkitsProvider();
543
536
  usePermissions = (codes = []) => {
544
- const isPermissionApiV2 = useContextStore((state) => state.isPermissionApiV2);
545
- const url4 = isPermissionApiV2 ? "/api/usystem/user/checkV2" : "/api/usystem/user/check";
546
- const key = codes.length ? { method: "POST", url: url4, data: { permissions: codes } } : null;
547
- const { data, ...rest } = useSWR6(key);
537
+ const { axios: axios2, permissionVersion } = useToolkitsStore((s) => s);
538
+ const { data, ...rest } = useSWR5(
539
+ codes.length ? [
540
+ permissionVersion !== "v1" /* V1 */ ? "/api/usystem/user/checkV2" : "/api/usystem/user/check",
541
+ { permissions: codes }
542
+ ] : null,
543
+ ([url4, body]) => axios2.post(url4, body).then((response) => response.data.data)
544
+ );
548
545
  const newData = codes.reduce((acc, curr) => {
549
546
  acc[curr] = data?.has_all ? true : data?.[curr] ?? false;
550
547
  return acc;
@@ -553,23 +550,478 @@ var init_permission = __esm({
553
550
  };
554
551
  usePermission = (code) => {
555
552
  const { data, isValidating, isLoading } = usePermissions(code ? [code] : void 0);
556
- if (code === void 0) {
557
- return {
558
- accessible: true,
559
- isValidating: false,
560
- isLoading: false
561
- };
562
- }
563
553
  return {
564
- accessible: data?.[code] ?? false,
554
+ accessible: code ? data?.[code] : true,
565
555
  isValidating,
566
556
  isLoading
567
557
  };
568
558
  };
569
559
  }
570
560
  });
571
- var useModalStore;
561
+ var useGames, useFindGame;
562
+ var init_hooks3 = __esm({
563
+ "src/components/layout/hooks.ts"() {
564
+ init_constants();
565
+ init_toolkitsProvider();
566
+ useGames = () => {
567
+ const { axios: axios2, gameApiV2 } = useToolkitsStore((s) => s);
568
+ return useSWR5("/api/game/list", async () => {
569
+ const headers = new AxiosHeaders({ [APP_ID_HEADER]: "global" });
570
+ const games = gameApiV2 ? await axios2({
571
+ url: "/api/game/list",
572
+ headers
573
+ }).then((response) => response.data.data.list ?? []) : await axios2({
574
+ url: "/api/usystem/game/all",
575
+ headers
576
+ }).then((response) => response.data.data ?? []);
577
+ return games;
578
+ });
579
+ };
580
+ useFindGame = (id2) => {
581
+ const { data } = useGames();
582
+ const { gameApiV2 } = useToolkitsStore((s) => s);
583
+ return data?.find((item) => String(gameApiV2 ? item.game_id : item.id) === String(id2));
584
+ };
585
+ }
586
+ });
587
+ var Logo, Logo_default;
588
+ var init_Logo = __esm({
589
+ "src/components/logo/Logo.tsx"() {
590
+ Logo = (props) => {
591
+ return /* @__PURE__ */ jsx("img", { src: logoUrl, alt: "logo", ...props });
592
+ };
593
+ Logo_default = Logo;
594
+ }
595
+ });
596
+
597
+ // src/components/logo/index.ts
598
+ var init_logo = __esm({
599
+ "src/components/logo/index.ts"() {
600
+ init_Logo();
601
+ }
602
+ });
603
+ var useNavStore;
572
604
  var init_stores2 = __esm({
605
+ "src/components/navMenu/stores.ts"() {
606
+ useNavStore = create()(
607
+ persist(
608
+ (set) => ({
609
+ openKeys: [],
610
+ setOpenKeys: (keys) => set({ openKeys: keys }),
611
+ selectedKeys: [],
612
+ setSelectedKeys: (keys) => set({ selectedKeys: keys })
613
+ }),
614
+ {
615
+ name: "nav",
616
+ storage: createJSONStorage(() => localStorage),
617
+ partialize: (state) => ({
618
+ openKeys: state.openKeys,
619
+ selectedKeys: state.selectedKeys
620
+ })
621
+ }
622
+ )
623
+ );
624
+ }
625
+ });
626
+ function transformItems(items) {
627
+ const result = [];
628
+ if (items) {
629
+ for (let i = 0; i < items.length; i++) {
630
+ if (items[i] === null || items[i].type === "divider") {
631
+ result[i] = items[i];
632
+ } else if (items[i].children) {
633
+ const { children, ...rest } = items[i];
634
+ result[i] = {
635
+ ...rest,
636
+ children: transformItems(children)
637
+ };
638
+ } else {
639
+ const { route, label, ...rest } = items[i];
640
+ const labelNode = route ? /* @__PURE__ */ jsx(Link, { to: route, children: label }) : label;
641
+ result[i] = {
642
+ ...rest,
643
+ label: labelNode
644
+ };
645
+ }
646
+ }
647
+ }
648
+ return result;
649
+ }
650
+ function flatItems(items, result = [], keypath = []) {
651
+ for (const item of items) {
652
+ const children = item?.children;
653
+ if (Array.isArray(children)) {
654
+ const keys = item.type !== "group" && item.key ? [...keypath, item.key] : keypath;
655
+ flatItems(children, result, keys);
656
+ } else if (item) {
657
+ result.push(Object.assign(item, { keypath }));
658
+ }
659
+ }
660
+ return result;
661
+ }
662
+ var init_utils2 = __esm({
663
+ "src/components/navMenu/utils.tsx"() {
664
+ }
665
+ });
666
+ var NavMenu, NavMenu_default;
667
+ var init_NavMenu = __esm({
668
+ "src/components/navMenu/NavMenu.tsx"() {
669
+ init_stores2();
670
+ init_utils2();
671
+ NavMenu = memo(function NavMenu2(props) {
672
+ const { items, theme: theme4, loading } = props;
673
+ const location = useLocation();
674
+ const flattenItems = useMemo(() => flatItems(items ?? []), [items]);
675
+ const internalItems = useMemo(() => transformItems(items ?? []), [items]);
676
+ const { openKeys, selectedKeys, setOpenKeys, setSelectedKeys } = useNavStore();
677
+ const onOpenChange = useCallback(
678
+ (keys) => {
679
+ const lastOpenKey = keys?.find((key) => openKeys?.indexOf(key) === -1);
680
+ const match = flattenItems.find((item) => lastOpenKey === item.key);
681
+ setOpenKeys(match?.keypath ?? [lastOpenKey]);
682
+ },
683
+ [flattenItems, openKeys, setOpenKeys]
684
+ );
685
+ useEffect(() => {
686
+ const match = flattenItems.find((item) => location.pathname === item.route);
687
+ if (match) {
688
+ const key = match.key;
689
+ const keypath = match.keypath;
690
+ setSelectedKeys([key]);
691
+ setOpenKeys(keypath);
692
+ }
693
+ }, [flattenItems, location]);
694
+ if (loading) {
695
+ return /* @__PURE__ */ jsx("div", { className: "flex justify-center items-center", style: { height: "calc(100vh - 64px)" }, children: /* @__PURE__ */ jsx(Spin, {}) });
696
+ }
697
+ return /* @__PURE__ */ jsx(
698
+ Menu,
699
+ {
700
+ theme: theme4,
701
+ style: { borderRight: "none" },
702
+ items: internalItems,
703
+ mode: "inline",
704
+ openKeys,
705
+ selectedKeys,
706
+ onOpenChange
707
+ }
708
+ );
709
+ });
710
+ if (process.env.NODE_ENV === "development") {
711
+ NavMenu.displayName = "NavMenu";
712
+ }
713
+ NavMenu_default = NavMenu;
714
+ }
715
+ });
716
+
717
+ // src/components/navMenu/index.ts
718
+ var init_navMenu = __esm({
719
+ "src/components/navMenu/index.ts"() {
720
+ init_NavMenu();
721
+ }
722
+ });
723
+ var Spin3, RequireGame, RequireGame_default;
724
+ var init_RequireGame = __esm({
725
+ "src/components/requireGame/RequireGame.tsx"() {
726
+ init_layout();
727
+ init_locale();
728
+ init_toolkitsProvider();
729
+ ({ Spin: Spin3 } = Antd2);
730
+ RequireGame = ({ children }) => {
731
+ const { permissionVersion, game, getGameId, isGlobal } = useToolkitsStore((s) => s);
732
+ const { isLoading } = useGames();
733
+ const { t } = useTranslation();
734
+ if (isLoading) {
735
+ return /* @__PURE__ */ jsx(
736
+ "div",
737
+ {
738
+ style: {
739
+ display: "flex",
740
+ justifyContent: "center",
741
+ alignItems: "center",
742
+ height: 400
743
+ },
744
+ children: /* @__PURE__ */ jsx(Spin3, {})
745
+ }
746
+ );
747
+ }
748
+ if (permissionVersion === "v1" /* V1 */ || isGlobal) {
749
+ return children;
750
+ }
751
+ if (!game) {
752
+ return /* @__PURE__ */ jsx(Empty, { image: Empty.PRESENTED_IMAGE_SIMPLE, description: t("RequireGame.description") });
753
+ }
754
+ const gameId = getGameId();
755
+ return /* @__PURE__ */ jsx(Fragment$1, { children }, gameId);
756
+ };
757
+ RequireGame_default = RequireGame;
758
+ }
759
+ });
760
+
761
+ // src/components/requireGame/index.ts
762
+ var init_requireGame = __esm({
763
+ "src/components/requireGame/index.ts"() {
764
+ init_RequireGame();
765
+ }
766
+ });
767
+ var UserWidget, UserWidget_default;
768
+ var init_UserWidget = __esm({
769
+ "src/components/userWidget/UserWidget.tsx"() {
770
+ init_locale();
771
+ init_toolkitsProvider();
772
+ UserWidget = () => {
773
+ const { t } = useTranslation();
774
+ const navigate = useNavigate();
775
+ const { clearToken, getUser, signInPath } = useToolkitsStore((s) => s);
776
+ const user = getUser();
777
+ const items = [
778
+ {
779
+ key: "1",
780
+ icon: /* @__PURE__ */ jsx(LogoutOutlined, {}),
781
+ label: /* @__PURE__ */ jsx(
782
+ "a",
783
+ {
784
+ onClick: () => {
785
+ clearToken();
786
+ navigate(signInPath);
787
+ },
788
+ children: t("UserWidget.signOutText")
789
+ }
790
+ )
791
+ }
792
+ ];
793
+ return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
794
+ Dropdown,
795
+ {
796
+ menu: {
797
+ selectable: true,
798
+ items
799
+ },
800
+ placement: "bottomRight",
801
+ children: /* @__PURE__ */ jsx(
802
+ "a",
803
+ {
804
+ onClick: (e) => {
805
+ e.preventDefault();
806
+ },
807
+ children: /* @__PURE__ */ jsxs(Space, { align: "center", children: [
808
+ /* @__PURE__ */ jsx("span", { children: user?.authorityId }),
809
+ /* @__PURE__ */ jsx(UserOutlined, { style: { fontSize: "16px" } })
810
+ ] })
811
+ }
812
+ )
813
+ }
814
+ ) });
815
+ };
816
+ UserWidget_default = UserWidget;
817
+ }
818
+ });
819
+
820
+ // src/components/userWidget/index.ts
821
+ var init_userWidget = __esm({
822
+ "src/components/userWidget/index.ts"() {
823
+ init_UserWidget();
824
+ }
825
+ });
826
+ var Text, GameSelect, GameSelect_default;
827
+ var init_GameSelect = __esm({
828
+ "src/components/layout/GameSelect.tsx"() {
829
+ init_locale();
830
+ init_toolkitsProvider();
831
+ init_hooks3();
832
+ ({ Text } = Typography);
833
+ GameSelect = (props) => {
834
+ const { filter } = props;
835
+ const { t } = useTranslation();
836
+ const { gameApiV2, setGame, getGameId } = useToolkitsStore((s) => s);
837
+ const { data, isLoading } = useGames();
838
+ const options = data?.filter((item) => filter?.(item) ?? true)?.map((item) => ({
839
+ label: item.name,
840
+ value: gameApiV2 ? item.game_id : item.id
841
+ }));
842
+ const onChange = async (value2) => {
843
+ const game = data?.find((item) => String(gameApiV2 ? item.game_id : item.id) === String(value2));
844
+ setGame(game);
845
+ };
846
+ const value = getGameId();
847
+ return /* @__PURE__ */ jsxs(Space, { children: [
848
+ /* @__PURE__ */ jsx(Text, { children: t("GameSelect.label") }),
849
+ /* @__PURE__ */ jsx(
850
+ Select,
851
+ {
852
+ showSearch: true,
853
+ optionFilterProp: "label",
854
+ value,
855
+ placeholder: t("GameSelect.placeholder"),
856
+ loading: isLoading,
857
+ style: { width: "200px" },
858
+ options,
859
+ onChange
860
+ }
861
+ )
862
+ ] });
863
+ };
864
+ GameSelect_default = GameSelect;
865
+ }
866
+ });
867
+ var useLayoutStore;
868
+ var init_stores3 = __esm({
869
+ "src/components/layout/stores.ts"() {
870
+ useLayoutStore = create()(
871
+ persist(
872
+ (set) => ({
873
+ collapsed: false,
874
+ setCollapsed: (collapsed) => set({ collapsed })
875
+ }),
876
+ {
877
+ name: "layout",
878
+ storage: createJSONStorage(() => localStorage),
879
+ partialize: (state) => ({ collapsed: state.collapsed })
880
+ }
881
+ )
882
+ );
883
+ }
884
+ });
885
+
886
+ // src/components/layout/style.css
887
+ var init_style = __esm({
888
+ "src/components/layout/style.css"() {
889
+ }
890
+ });
891
+ var Spin4, theme3, Header, Sider, Content, Layout2, Layout_default;
892
+ var init_Layout = __esm({
893
+ "src/components/layout/Layout.tsx"() {
894
+ init_logo();
895
+ init_navMenu();
896
+ init_requireGame();
897
+ init_toolkitsProvider();
898
+ init_userWidget();
899
+ init_GameSelect();
900
+ init_stores3();
901
+ init_style();
902
+ ({ Spin: Spin4, theme: theme3 } = Antd2);
903
+ ({ Header, Sider, Content } = Antd2.Layout);
904
+ Layout2 = (props) => {
905
+ const { menuCollapsible, isMenuLoading, title, items, headerExtra, children, navWidth, hideGameSelect, filter } = props;
906
+ const {
907
+ token: { colorBgContainer, colorBorder }
908
+ } = theme3.useToken();
909
+ const {
910
+ permissionVersion,
911
+ layoutTitle,
912
+ navWidth: globalNavWidth,
913
+ menuCollapsible: globalMenuCollapsible
914
+ } = useToolkitsStore((s) => s);
915
+ const { collapsed, setCollapsed } = useLayoutStore();
916
+ const onCollapse = async () => {
917
+ setCollapsed(!collapsed);
918
+ };
919
+ const collapsible = menuCollapsible ?? globalMenuCollapsible ?? false;
920
+ return /* @__PURE__ */ jsxs(Antd2.Layout, { children: [
921
+ /* @__PURE__ */ jsxs(
922
+ Sider,
923
+ {
924
+ collapsible,
925
+ theme: "light",
926
+ trigger: null,
927
+ collapsed,
928
+ width: navWidth ?? globalNavWidth,
929
+ style: {
930
+ height: "100vh",
931
+ overflow: "auto",
932
+ borderRightWidth: 1,
933
+ borderRightStyle: "solid",
934
+ borderRightColor: colorBorder
935
+ },
936
+ children: [
937
+ /* @__PURE__ */ jsxs("div", { className: "flex gap-2 px-6 py-4 overflow-hidden", children: [
938
+ /* @__PURE__ */ jsx(Logo_default, { width: 32, height: 32 }),
939
+ (!collapsible || !collapsed) && /* @__PURE__ */ jsx("div", { className: "h-8 flex items-center expand", children: title ?? layoutTitle })
940
+ ] }),
941
+ /* @__PURE__ */ jsx(NavMenu_default, { items, loading: isMenuLoading })
942
+ ]
943
+ }
944
+ ),
945
+ /* @__PURE__ */ jsxs(Antd2.Layout, { children: [
946
+ /* @__PURE__ */ jsx(
947
+ Header,
948
+ {
949
+ style: {
950
+ padding: "0 24px",
951
+ background: colorBgContainer
952
+ },
953
+ children: /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center h-full", children: [
954
+ /* @__PURE__ */ jsxs(Space, { size: "small", split: /* @__PURE__ */ jsx(Divider, { type: "vertical" }), className: "mr-6", children: [
955
+ collapsible && /* @__PURE__ */ jsx(
956
+ Button,
957
+ {
958
+ type: "text",
959
+ icon: collapsed ? /* @__PURE__ */ jsx(MenuUnfoldOutlined, {}) : /* @__PURE__ */ jsx(MenuFoldOutlined, {}),
960
+ style: { fontSize: "16px" },
961
+ onClick: onCollapse
962
+ }
963
+ ),
964
+ permissionVersion !== "v1" /* V1 */ && !hideGameSelect && /* @__PURE__ */ jsx(GameSelect_default, { filter }),
965
+ headerExtra?.left?.map((extra) => /* @__PURE__ */ jsx("span", { children: extra.children }, extra.key))
966
+ ] }),
967
+ /* @__PURE__ */ jsxs(Space, { size: "small", split: /* @__PURE__ */ jsx(Divider, { type: "vertical" }), children: [
968
+ headerExtra?.right?.map((extra) => /* @__PURE__ */ jsx("span", { children: extra.children }, extra.key)),
969
+ /* @__PURE__ */ jsx(UserWidget_default, {})
970
+ ] })
971
+ ] })
972
+ }
973
+ ),
974
+ /* @__PURE__ */ jsx(
975
+ Content,
976
+ {
977
+ style: {
978
+ overflow: "auto",
979
+ padding: "24px 16px",
980
+ maxHeight: "calc(100vh - 64px)"
981
+ },
982
+ children: /* @__PURE__ */ jsx(
983
+ Suspense,
984
+ {
985
+ fallback: /* @__PURE__ */ jsx(
986
+ Spin4,
987
+ {
988
+ style: {
989
+ display: "flex",
990
+ justifyContent: "center",
991
+ alignItems: "center",
992
+ height: "200px"
993
+ }
994
+ }
995
+ ),
996
+ children: /* @__PURE__ */ jsx(RequireGame_default, { children })
997
+ }
998
+ )
999
+ }
1000
+ )
1001
+ ] })
1002
+ ] });
1003
+ };
1004
+ Layout_default = Layout2;
1005
+ }
1006
+ });
1007
+
1008
+ // src/components/layout/types.ts
1009
+ var init_types = __esm({
1010
+ "src/components/layout/types.ts"() {
1011
+ }
1012
+ });
1013
+
1014
+ // src/components/layout/index.ts
1015
+ var init_layout = __esm({
1016
+ "src/components/layout/index.ts"() {
1017
+ init_hooks3();
1018
+ init_Layout();
1019
+ init_stores3();
1020
+ init_types();
1021
+ }
1022
+ });
1023
+ var useModalStore;
1024
+ var init_stores4 = __esm({
573
1025
  "src/components/modal/stores.ts"() {
574
1026
  useModalStore = create((set, get2) => ({
575
1027
  open: /* @__PURE__ */ new Map(),
@@ -622,7 +1074,7 @@ function useModal(props) {
622
1074
  var id;
623
1075
  var init_modal = __esm({
624
1076
  "src/components/modal/modal.tsx"() {
625
- init_stores2();
1077
+ init_stores4();
626
1078
  id = 0;
627
1079
  }
628
1080
  });
@@ -676,12 +1128,13 @@ var init_modal2 = __esm({
676
1128
  "src/components/modal/index.ts"() {
677
1129
  init_formModal();
678
1130
  init_modal();
1131
+ init_stores4();
679
1132
  }
680
1133
  });
681
1134
  var PermissionButton, PermissionButton_default;
682
1135
  var init_PermissionButton = __esm({
683
1136
  "src/components/permissionButton/PermissionButton.tsx"() {
684
- init_permission();
1137
+ init_hooks2();
685
1138
  init_locale();
686
1139
  PermissionButton = (props) => {
687
1140
  const { children, code, showLoading, disabled, ...restProps } = props;
@@ -707,7 +1160,7 @@ var init_permissionButton = __esm({
707
1160
  }
708
1161
  });
709
1162
  var useQueryListStore;
710
- var init_stores3 = __esm({
1163
+ var init_stores5 = __esm({
711
1164
  "src/components/queryList/stores.ts"() {
712
1165
  useQueryListStore = create((set, get2) => ({
713
1166
  keyMap: /* @__PURE__ */ new Map(),
@@ -739,11 +1192,11 @@ var init_stores3 = __esm({
739
1192
  var QueryListAction, InternalQueryList, QueryList, QueryList_default;
740
1193
  var init_QueryList = __esm({
741
1194
  "src/components/queryList/QueryList.tsx"() {
742
- init_permission();
743
- init_contextProvider();
1195
+ init_hooks2();
744
1196
  init_filterFormWrapper();
745
1197
  init_locale();
746
- init_stores3();
1198
+ init_toolkitsProvider();
1199
+ init_stores5();
747
1200
  QueryListAction = /* @__PURE__ */ ((QueryListAction2) => {
748
1201
  QueryListAction2[QueryListAction2["Confirm"] = 0] = "Confirm";
749
1202
  QueryListAction2[QueryListAction2["Reset"] = 1] = "Reset";
@@ -819,8 +1272,8 @@ var init_QueryList = __esm({
819
1272
  keyMap.set(url4, serializedKey);
820
1273
  return serializedKey;
821
1274
  }, [accessible, isValid, url4, requestConfig]);
822
- const { axios: axios2 } = useContextStore((s) => s);
823
- const { data, isValidating } = useSWR6(
1275
+ const { axios: axios2 } = useToolkitsStore((s) => s);
1276
+ const { data, isValidating } = useSWR5(
824
1277
  key,
825
1278
  async () => {
826
1279
  const response = await axios2.request(requestConfig);
@@ -966,7 +1419,7 @@ var init_QueryList = __esm({
966
1419
  var init_queryList = __esm({
967
1420
  "src/components/queryList/index.ts"() {
968
1421
  init_QueryList();
969
- init_stores3();
1422
+ init_stores5();
970
1423
  }
971
1424
  });
972
1425
 
@@ -978,42 +1431,29 @@ var init_constants2 = __esm({
978
1431
  }
979
1432
  });
980
1433
  function useCreateMenu() {
981
- const { axios: axios2 } = useContextStore((s) => s);
1434
+ const { axios: axios2 } = useToolkitsStore((s) => s);
982
1435
  return useSWRMutation2(
983
1436
  "/api/usystem/menu/set",
984
1437
  (url4, { arg }) => axios2.post(url4, { ...arg, id: 0, is_model: true })
985
1438
  );
986
1439
  }
987
1440
  function useUpdateMenu() {
988
- const { axios: axios2 } = useContextStore((s) => s);
1441
+ const { axios: axios2 } = useToolkitsStore((s) => s);
989
1442
  return useSWRMutation2(
990
1443
  "/api/usystem/menu/set",
991
1444
  (url4, { arg }) => axios2.post(url4, { ...arg, is_model: true })
992
1445
  );
993
1446
  }
994
- function useMenuList() {
995
- const { selectedGame, signInPath, axios: axios2 } = useContextStore((s) => s);
996
- return useSWR6(
997
- window.location.pathname !== signInPath ? ["/api/usystem/menu/navbar", selectedGame] : null,
998
- ([url4]) => axios2(url4).then((response) => response.data.data)
999
- );
1000
- }
1001
1447
  function useRemoveMenu() {
1002
- const { axios: axios2 } = useContextStore((s) => s);
1448
+ const { axios: axios2 } = useToolkitsStore((s) => s);
1003
1449
  return useSWRMutation2(
1004
1450
  "/api/usystem/menu/delete",
1005
1451
  (url4, { arg }) => axios2.post(url4, null, { params: { id: arg } })
1006
1452
  );
1007
1453
  }
1008
- var init_hooks2 = __esm({
1454
+ var init_hooks4 = __esm({
1009
1455
  "src/features/menu/hooks/index.ts"() {
1010
- init_contextProvider();
1011
- }
1012
- });
1013
-
1014
- // src/features/menu/types/index.ts
1015
- var init_types = __esm({
1016
- "src/features/menu/types/index.ts"() {
1456
+ init_toolkitsProvider();
1017
1457
  }
1018
1458
  });
1019
1459
 
@@ -1021,8 +1461,7 @@ var init_types = __esm({
1021
1461
  var init_menu = __esm({
1022
1462
  "src/features/menu/index.ts"() {
1023
1463
  init_constants2();
1024
- init_hooks2();
1025
- init_types();
1464
+ init_hooks4();
1026
1465
  }
1027
1466
  });
1028
1467
 
@@ -1038,6 +1477,7 @@ var init_menuItemList = __esm({
1038
1477
  init_locale();
1039
1478
  init_queryList();
1040
1479
  init_menu();
1480
+ init_hooks4();
1041
1481
  init_hooks2();
1042
1482
  MenuItemList = () => {
1043
1483
  const { t } = useTranslation();
@@ -1137,7 +1577,6 @@ var init_menuItemList = __esm({
1137
1577
  children: /* @__PURE__ */ jsx(
1138
1578
  QueryList_default,
1139
1579
  {
1140
- isGlobal: true,
1141
1580
  onePage: true,
1142
1581
  code: "9900001",
1143
1582
  rowKey: "id",
@@ -1163,6 +1602,7 @@ var init_createMenuItem = __esm({
1163
1602
  "src/pages/menu/createMenuItem/index.tsx"() {
1164
1603
  init_constants();
1165
1604
  init_menu();
1605
+ init_hooks2();
1166
1606
  CreateMenuItem = () => {
1167
1607
  const { message } = App.useApp();
1168
1608
  const [form] = Form.useForm();
@@ -1248,9 +1688,10 @@ __export(updateMenuItem_exports, {
1248
1688
  var EditMenuItem, updateMenuItem_default;
1249
1689
  var init_updateMenuItem = __esm({
1250
1690
  "src/pages/menu/updateMenuItem/index.tsx"() {
1251
- init_contextProvider();
1691
+ init_toolkitsProvider();
1252
1692
  init_constants();
1253
1693
  init_menu();
1694
+ init_hooks2();
1254
1695
  EditMenuItem = () => {
1255
1696
  const { message } = App.useApp();
1256
1697
  const [form] = Form.useForm();
@@ -1258,8 +1699,8 @@ var init_updateMenuItem = __esm({
1258
1699
  const { trigger } = useUpdateMenu();
1259
1700
  const params = useParams();
1260
1701
  const { mutate: mutate2 } = useMenuList();
1261
- const { axios: axios2 } = useContextStore((s) => s);
1262
- const { data, isLoading } = useSWR6(
1702
+ const { axios: axios2 } = useToolkitsStore((s) => s);
1703
+ const { data, isLoading } = useSWR5(
1263
1704
  `/api/usystem/menu/info?id=${params.id}`,
1264
1705
  (url4) => axios2(url4).then((response) => response.data.data)
1265
1706
  );
@@ -1345,49 +1786,55 @@ var init_updateMenuItem = __esm({
1345
1786
  }
1346
1787
  });
1347
1788
  function useAllPermissions() {
1348
- return useSWR6({
1349
- url: "/api/usystem/user/allPermssions"
1350
- });
1789
+ const { axios: axios2 } = useToolkitsStore((s) => s);
1790
+ return useSWR5(
1791
+ "/api/usystem/user/allPermssions",
1792
+ (url4) => axios2.get(url4).then((response) => response.data.data)
1793
+ );
1351
1794
  }
1352
1795
  function useAllPermissionsV2() {
1353
- return useSWR6({
1354
- url: "/api/usystem/user/allPermissionsV2"
1355
- });
1796
+ const { axios: axios2 } = useToolkitsStore((s) => s);
1797
+ return useSWR5(
1798
+ "/api/usystem/user/allPermissionsV2",
1799
+ (url4) => axios2.get(url4).then((response) => response.data.data)
1800
+ );
1356
1801
  }
1357
1802
  function useAllRoles() {
1803
+ const { axios: axios2 } = useToolkitsStore((s) => s);
1358
1804
  const { accessible } = usePermission("200005");
1359
- return useSWR6(
1360
- accessible ? {
1361
- url: "/api/usystem/role/all"
1362
- } : null
1805
+ return useSWR5(
1806
+ accessible ? "/api/usystem/role/all" : null,
1807
+ (url4) => axios2.get(url4).then((response) => response.data.data)
1363
1808
  );
1364
1809
  }
1365
1810
  function useRole(name) {
1366
- const isPermissionApiV2 = useContextStore((state) => state.isPermissionApiV2);
1367
- return useSWR6({
1368
- url: `/api/usystem/role/${isPermissionApiV2 ? "infoV2" : "info"}?name=${name}`
1369
- });
1811
+ const { axios: axios2 } = useToolkitsStore((s) => s);
1812
+ const permissionVersion = useToolkitsStore((state) => state.permissionVersion);
1813
+ return useSWR5(
1814
+ `/api/usystem/role/${permissionVersion === "v2" /* V2 */ ? "infoV2" : "info"}?name=${name}`,
1815
+ (url4) => axios2.get(url4).then((response) => response.data.data)
1816
+ );
1370
1817
  }
1371
1818
  function useCreateRole() {
1372
- const { axios: axios2, isPermissionApiV2 } = useContextStore((s) => s);
1819
+ const { axios: axios2, permissionVersion } = useToolkitsStore((s) => s);
1373
1820
  return useSWRMutation2(
1374
- isPermissionApiV2 ? "/api/usystem/role/createV2" : "/api/usystem/role/create",
1821
+ permissionVersion === "v2" /* V2 */ ? "/api/usystem/role/createV2" : "/api/usystem/role/create",
1375
1822
  (url4, {
1376
1823
  arg
1377
1824
  }) => axios2.post(url4, arg)
1378
1825
  );
1379
1826
  }
1380
1827
  function useUpdateRole() {
1381
- const { axios: axios2, isPermissionApiV2 } = useContextStore((s) => s);
1828
+ const { axios: axios2, permissionVersion } = useToolkitsStore((s) => s);
1382
1829
  return useSWRMutation2(
1383
- isPermissionApiV2 ? "/api/usystem/role/updateV2" : "/api/usystem/role/update",
1830
+ permissionVersion === "v2" /* V2 */ ? "/api/usystem/role/updateV2" : "/api/usystem/role/update",
1384
1831
  (url4, {
1385
1832
  arg
1386
1833
  }) => axios2.post(url4, arg)
1387
1834
  );
1388
1835
  }
1389
1836
  function useRemoveRole() {
1390
- const { axios: axios2 } = useContextStore((s) => s);
1837
+ const { axios: axios2 } = useToolkitsStore((s) => s);
1391
1838
  return useSWRMutation2(
1392
1839
  "/api/usystem/role/delete",
1393
1840
  (url4, {
@@ -1396,7 +1843,7 @@ function useRemoveRole() {
1396
1843
  );
1397
1844
  }
1398
1845
  function useCreateUser() {
1399
- const { axios: axios2 } = useContextStore((s) => s);
1846
+ const { axios: axios2 } = useToolkitsStore((s) => s);
1400
1847
  return useSWRMutation2(
1401
1848
  "/api/usystem/user/create",
1402
1849
  (url4, {
@@ -1405,7 +1852,7 @@ function useCreateUser() {
1405
1852
  );
1406
1853
  }
1407
1854
  function useUpdateUser() {
1408
- const { axios: axios2 } = useContextStore((s) => s);
1855
+ const { axios: axios2 } = useToolkitsStore((s) => s);
1409
1856
  return useSWRMutation2(
1410
1857
  "/api/usystem/user/update",
1411
1858
  (url4, {
@@ -1414,7 +1861,7 @@ function useUpdateUser() {
1414
1861
  );
1415
1862
  }
1416
1863
  function useRemoveUser() {
1417
- const { axios: axios2 } = useContextStore((s) => s);
1864
+ const { axios: axios2 } = useToolkitsStore((s) => s);
1418
1865
  return useSWRMutation2(
1419
1866
  "/api/usystem/user/delete",
1420
1867
  (url4, {
@@ -1422,19 +1869,74 @@ function useRemoveUser() {
1422
1869
  }) => axios2.post(url4, arg)
1423
1870
  );
1424
1871
  }
1425
- var init_hooks3 = __esm({
1426
- "src/features/permission/hooks/index.ts"() {
1427
- init_contextProvider();
1428
- init_permission();
1429
- }
1430
- });
1431
- var PermissionCollapse, permissionCollapse_default;
1432
- var init_permissionCollapse = __esm({
1433
- "src/features/permission/components/permissionCollapse/index.tsx"() {
1872
+ var useRoleModal;
1873
+ var init_hooks5 = __esm({
1874
+ "src/features/permission/hooks/index.tsx"() {
1434
1875
  init_locale();
1435
- PermissionCollapse = (props) => {
1436
- const { permissions, readonly, expand, value, onChange } = props;
1437
- const [activeKey, setActiveKey] = useState([]);
1876
+ init_modal2();
1877
+ init_queryList();
1878
+ init_toolkitsProvider();
1879
+ init_hooks2();
1880
+ init_components();
1881
+ useRoleModal = (isCreate) => {
1882
+ const { message } = App.useApp();
1883
+ const { t } = useTranslation();
1884
+ const { refetch, mutate: mutate2 } = useQueryListStore();
1885
+ const create5 = useCreateRole();
1886
+ const update = useUpdateRole();
1887
+ const title = isCreate ? t("RoleList.createTitle") : t("RoleList.updateTitle");
1888
+ const formProps = {
1889
+ layout: "vertical"
1890
+ };
1891
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
1892
+ /* @__PURE__ */ jsx(Form.Item, { label: t("global.name"), name: "name", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, { disabled: !isCreate, addonBefore: "role_" }) }),
1893
+ /* @__PURE__ */ jsx(Form.Item, { name: "permissions", children: /* @__PURE__ */ jsx(permissionList_default, {}) })
1894
+ ] });
1895
+ const url4 = "/api/usystem/role/list";
1896
+ const onConfirm = async (values, extraValues) => {
1897
+ if (isCreate) {
1898
+ await create5.trigger({
1899
+ name: `role_${values.name}`,
1900
+ permissions: values.permissions
1901
+ });
1902
+ refetch(url4, { page: 1 });
1903
+ message.success(t("RoleList.createSuccessfully"));
1904
+ } else {
1905
+ await update.trigger({
1906
+ id: extraValues?.id,
1907
+ name: `role_${values.name}`,
1908
+ permissions: values.permissions
1909
+ });
1910
+ mutate2(
1911
+ url4,
1912
+ (prev) => produce(prev, (draft) => {
1913
+ const match = draft?.List?.find((item) => item.id === extraValues?.id);
1914
+ if (match) {
1915
+ match.permissions = values.permissions;
1916
+ }
1917
+ }),
1918
+ { revalidate: false }
1919
+ );
1920
+ message.success(t("RoleList.updateSuccessfully"));
1921
+ }
1922
+ };
1923
+ return useFormModal({
1924
+ title,
1925
+ width: "50vw",
1926
+ formProps,
1927
+ content,
1928
+ onConfirm
1929
+ });
1930
+ };
1931
+ }
1932
+ });
1933
+ var PermissionCollapse, permissionCollapse_default;
1934
+ var init_permissionCollapse = __esm({
1935
+ "src/features/permission/components/permissionCollapse/index.tsx"() {
1936
+ init_locale();
1937
+ PermissionCollapse = (props) => {
1938
+ const { permissions, readonly, expand, value, onChange } = props;
1939
+ const [activeKey, setActiveKey] = useState([]);
1438
1940
  const [checkedMap, setCheckedMap] = useState({});
1439
1941
  const [internalValue, setInternalValue] = useState(value ?? []);
1440
1942
  const { t } = useTranslation();
@@ -1519,43 +2021,15 @@ var init_permissionCollapse = __esm({
1519
2021
  permissionCollapse_default = PermissionCollapse;
1520
2022
  }
1521
2023
  });
1522
- var Text2, PermissionListV1, permissionListV1_default;
1523
- var init_permissionListV1 = __esm({
1524
- "src/features/permission/components/permissionListV1/index.tsx"() {
2024
+ var Text2, Option2, PermissionWithGame, PermissionWithGame_default;
2025
+ var init_PermissionWithGame = __esm({
2026
+ "src/features/permission/components/permissionList/PermissionWithGame.tsx"() {
1525
2027
  init_locale();
1526
- init_hooks3();
2028
+ init_hooks5();
1527
2029
  init_permissionCollapse();
1528
2030
  ({ Text: Text2 } = Typography);
1529
- PermissionListV1 = (props) => {
1530
- const { expand = true, value, readonly, onChange } = props;
1531
- const { data: permissions, isLoading, error } = useAllPermissions();
1532
- const { t } = useTranslation();
1533
- if (error) {
1534
- return /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx(Text2, { type: "danger", children: t("PermissionList.failedDescription") }) });
1535
- }
1536
- return /* @__PURE__ */ jsx(Skeleton, { active: true, loading: isLoading, children: /* @__PURE__ */ jsx(
1537
- permissionCollapse_default,
1538
- {
1539
- value,
1540
- permissions,
1541
- readonly,
1542
- expand,
1543
- onChange
1544
- }
1545
- ) });
1546
- };
1547
- permissionListV1_default = PermissionListV1;
1548
- }
1549
- });
1550
- var Text3, Option2, PermissionListV2, permissionListV2_default;
1551
- var init_permissionListV2 = __esm({
1552
- "src/features/permission/components/permissionListV2/index.tsx"() {
1553
- init_locale();
1554
- init_hooks3();
1555
- init_permissionCollapse();
1556
- ({ Text: Text3 } = Typography);
1557
2031
  ({ Option: Option2 } = Select);
1558
- PermissionListV2 = (props) => {
2032
+ PermissionWithGame = (props) => {
1559
2033
  const { expand = true, value, readonly, onChange } = props;
1560
2034
  const { data: { permission, game: games } = {}, isLoading, error } = useAllPermissionsV2();
1561
2035
  const [gameList, setGameList] = useState([]);
@@ -1572,7 +2046,7 @@ var init_permissionListV2 = __esm({
1572
2046
  setGameList(list);
1573
2047
  }, [value]);
1574
2048
  if (error) {
1575
- return /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx(Text3, { type: "danger", children: t("PermissionList.failedDescription") }) });
2049
+ return /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx(Text2, { type: "danger", children: t("PermissionList.failedDescription") }) });
1576
2050
  }
1577
2051
  const addGame = () => {
1578
2052
  setGameList((prev) => [...prev, { gameId: "", permissions: [] }]);
@@ -1602,8 +2076,8 @@ var init_permissionListV2 = __esm({
1602
2076
  Card,
1603
2077
  {
1604
2078
  title: /* @__PURE__ */ jsxs(Space, { children: [
1605
- /* @__PURE__ */ jsx(Text3, { children: t("global.game") }),
1606
- readonly ? /* @__PURE__ */ jsx(Text3, { children: games?.find((game) => String(game.id) === item.gameId)?.name }) : /* @__PURE__ */ jsx(
2079
+ /* @__PURE__ */ jsx(Text2, { children: t("global.game") }),
2080
+ readonly ? /* @__PURE__ */ jsx(Text2, { children: games?.find((game) => String(game.id) === item.gameId)?.name }) : /* @__PURE__ */ jsx(
1607
2081
  Select,
1608
2082
  {
1609
2083
  disabled: readonly,
@@ -1661,24 +2135,59 @@ var init_permissionListV2 = __esm({
1661
2135
  !readonly && /* @__PURE__ */ jsx(Button, { block: true, type: "dashed", onClick: addGame, children: t("PermissionList.addText") })
1662
2136
  ] });
1663
2137
  };
1664
- permissionListV2_default = PermissionListV2;
2138
+ PermissionWithGame_default = PermissionWithGame;
2139
+ }
2140
+ });
2141
+ var Text3, PermissionWithoutGame, PermissionWithoutGame_default;
2142
+ var init_PermissionWithoutGame = __esm({
2143
+ "src/features/permission/components/permissionList/PermissionWithoutGame.tsx"() {
2144
+ init_locale();
2145
+ init_hooks5();
2146
+ init_permissionCollapse();
2147
+ ({ Text: Text3 } = Typography);
2148
+ PermissionWithoutGame = (props) => {
2149
+ const { expand = true, value, readonly, onChange } = props;
2150
+ const { data: permissions, isLoading, error } = useAllPermissions();
2151
+ const { t } = useTranslation();
2152
+ if (error) {
2153
+ return /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsx(Text3, { type: "danger", children: t("PermissionList.failedDescription") }) });
2154
+ }
2155
+ return /* @__PURE__ */ jsx(Skeleton, { active: true, loading: isLoading, children: /* @__PURE__ */ jsx(
2156
+ permissionCollapse_default,
2157
+ {
2158
+ value,
2159
+ permissions,
2160
+ readonly,
2161
+ expand,
2162
+ onChange
2163
+ }
2164
+ ) });
2165
+ };
2166
+ PermissionWithoutGame_default = PermissionWithoutGame;
1665
2167
  }
1666
2168
  });
1667
2169
  var PermissionList, permissionList_default;
1668
2170
  var init_permissionList = __esm({
1669
2171
  "src/features/permission/components/permissionList/index.tsx"() {
1670
- init_contextProvider();
1671
- init_permissionListV1();
1672
- init_permissionListV2();
2172
+ init_toolkitsProvider();
2173
+ init_PermissionWithGame();
2174
+ init_PermissionWithoutGame();
1673
2175
  PermissionList = (props) => {
1674
2176
  const { value } = props;
1675
- const isPermissionApiV2 = useContextStore((state) => state.isPermissionApiV2);
1676
- return /* @__PURE__ */ jsx(Fragment, { children: isPermissionApiV2 ? /* @__PURE__ */ jsx(permissionListV2_default, { ...props, value }) : /* @__PURE__ */ jsx(permissionListV1_default, { ...props, value }) });
2177
+ const version = useToolkitsStore((state) => state.permissionVersion);
2178
+ return /* @__PURE__ */ jsx(Fragment, { children: version === "v2" /* V2 */ ? /* @__PURE__ */ jsx(PermissionWithGame_default, { ...props, value }) : /* @__PURE__ */ jsx(PermissionWithoutGame_default, { ...props, value }) });
1677
2179
  };
1678
2180
  permissionList_default = PermissionList;
1679
2181
  }
1680
2182
  });
1681
2183
 
2184
+ // src/features/permission/components/index.ts
2185
+ var init_components = __esm({
2186
+ "src/features/permission/components/index.ts"() {
2187
+ init_permissionList();
2188
+ }
2189
+ });
2190
+
1682
2191
  // src/features/permission/types/index.ts
1683
2192
  var init_types2 = __esm({
1684
2193
  "src/features/permission/types/index.ts"() {
@@ -1686,10 +2195,10 @@ var init_types2 = __esm({
1686
2195
  });
1687
2196
 
1688
2197
  // src/features/permission/index.ts
1689
- var init_permission2 = __esm({
2198
+ var init_permission = __esm({
1690
2199
  "src/features/permission/index.ts"() {
1691
- init_permissionList();
1692
- init_hooks3();
2200
+ init_components();
2201
+ init_hooks5();
1693
2202
  init_types2();
1694
2203
  }
1695
2204
  });
@@ -1697,20 +2206,20 @@ var init_permission2 = __esm({
1697
2206
  // src/pages/permission/userList/index.tsx
1698
2207
  var userList_exports = {};
1699
2208
  __export(userList_exports, {
1700
- default: () => userList_default,
1701
- url: () => url2
2209
+ default: () => userList_default
1702
2210
  });
1703
- var Option3, url2, useModal2, UserList, userList_default;
2211
+ var Text4, url2, useModal2, GameSelect2, useModalWithGroup, UserList, userList_default;
1704
2212
  var init_userList = __esm({
1705
2213
  "src/pages/permission/userList/index.tsx"() {
1706
- init_contextProvider();
1707
2214
  init_highlight();
1708
2215
  init_locale();
1709
2216
  init_modal2();
1710
2217
  init_permissionButton();
1711
2218
  init_queryList();
1712
- init_permission2();
1713
- ({ Option: Option3 } = Select);
2219
+ init_toolkitsProvider();
2220
+ init_constants();
2221
+ init_permission();
2222
+ ({ Text: Text4 } = Typography);
1714
2223
  url2 = "/api/usystem/user/list";
1715
2224
  useModal2 = (isCreate) => {
1716
2225
  const { message } = App.useApp();
@@ -1722,7 +2231,17 @@ var init_userList = __esm({
1722
2231
  const title = isCreate ? t("UserList.createTitle") : t("UserList.updateTitle");
1723
2232
  const content = /* @__PURE__ */ jsxs(Fragment, { children: [
1724
2233
  /* @__PURE__ */ jsx(Form.Item, { label: t("global.name"), name: "name", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, { disabled: !isCreate }) }),
1725
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.role"), name: "roles", children: /* @__PURE__ */ jsx(Select, { allowClear: true, mode: "multiple", loading: isLoading, children: (roles ?? []).map((role) => /* @__PURE__ */ jsx(Option3, { value: role.name, children: role.name }, role.id)) }) })
2234
+ /* @__PURE__ */ jsx(Form.Item, { label: t("global.role"), name: "roles", children: /* @__PURE__ */ jsx(
2235
+ Select,
2236
+ {
2237
+ allowClear: true,
2238
+ showSearch: true,
2239
+ mode: "multiple",
2240
+ loading: isLoading,
2241
+ optionFilterProp: "label",
2242
+ options: roles?.map((role) => ({ label: role.name, value: role.name }))
2243
+ }
2244
+ ) })
1726
2245
  ] });
1727
2246
  const onConfirm = async (values, extraValues) => {
1728
2247
  if (isCreate) {
@@ -1730,7 +2249,7 @@ var init_userList = __esm({
1730
2249
  refetch(url2, { page: 1 });
1731
2250
  message.success(t("UserList.createSuccessfully"));
1732
2251
  } else {
1733
- await update.trigger(values);
2252
+ await update.trigger({ ...values, id: extraValues?.id });
1734
2253
  mutate2(
1735
2254
  url2,
1736
2255
  (prev) => {
@@ -1750,7 +2269,159 @@ var init_userList = __esm({
1750
2269
  };
1751
2270
  return useFormModal({
1752
2271
  title,
2272
+ width: 600,
1753
2273
  formProps: {
2274
+ autoComplete: "off",
2275
+ labelCol: { flex: "80px" }
2276
+ },
2277
+ content,
2278
+ onConfirm
2279
+ });
2280
+ };
2281
+ GameSelect2 = (props) => {
2282
+ const { groups, onChange, ...rest } = props;
2283
+ const { axios: axios2 } = useToolkitsStore((s) => s);
2284
+ const { data, isLoading } = useSWR5(
2285
+ groups?.length ? `/api/enum/game_group/get_game_ids?game_groups=${groups.join(",")}` : null,
2286
+ (path) => axios2.get(path).then((response) => response.data.data.list)
2287
+ );
2288
+ const options = data?.map((group) => ({ label: group.name, value: group.id }));
2289
+ const onValueChange = (value) => {
2290
+ if (last(value) === WILDCARD) {
2291
+ onChange?.([WILDCARD]);
2292
+ } else if (first(value) === WILDCARD) {
2293
+ onChange?.(value.slice(1));
2294
+ } else {
2295
+ onChange?.(value);
2296
+ }
2297
+ };
2298
+ return /* @__PURE__ */ jsx(
2299
+ Select,
2300
+ {
2301
+ ...rest,
2302
+ allowClear: true,
2303
+ showSearch: true,
2304
+ optionFilterProp: "label",
2305
+ mode: "tags",
2306
+ loading: isLoading,
2307
+ options,
2308
+ onChange: onValueChange
2309
+ }
2310
+ );
2311
+ };
2312
+ useModalWithGroup = (isCreate) => {
2313
+ const { message } = App.useApp();
2314
+ const { t } = useTranslation();
2315
+ const { axios: axios2 } = useToolkitsStore((s) => s);
2316
+ const { refetch, mutate: mutate2 } = useQueryListStore();
2317
+ const { data: roles, isLoading: isRolesLoading } = useAllRoles();
2318
+ const create5 = useCreateUser();
2319
+ const update = useUpdateUser();
2320
+ const title = isCreate ? t("UserList.createTitle") : t("UserList.updateTitle");
2321
+ const { data: groups, isLoading: isGroupsLoading } = useSWR5(
2322
+ "/api/enum/get?enum=game_group",
2323
+ (path) => axios2.get(path).then((response) => response.data.data)
2324
+ );
2325
+ const content = /* @__PURE__ */ jsxs(Fragment, { children: [
2326
+ /* @__PURE__ */ jsx(Form.Item, { label: t("global.name"), name: "name", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, { disabled: !isCreate }) }),
2327
+ /* @__PURE__ */ jsx(Form.List, { name: "permissions", children: (fields, { add, remove }) => /* @__PURE__ */ jsxs(Row, { gutter: 8, children: [
2328
+ /* @__PURE__ */ jsx(Col, { span: 8, className: "text-center mb-4", children: /* @__PURE__ */ jsx(Text4, { strong: true, children: t("global.projectGroup") }) }),
2329
+ /* @__PURE__ */ jsx(Col, { span: 10, className: "text-center mb-4", children: /* @__PURE__ */ jsx(Text4, { strong: true, children: t("global.game") }) }),
2330
+ /* @__PURE__ */ jsx(Col, { span: 6, className: "text-center mb-4", children: /* @__PURE__ */ jsx(Text4, { strong: true, children: t("global.role") }) }),
2331
+ fields.map((field) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
2332
+ /* @__PURE__ */ jsx(Col, { span: 8, children: /* @__PURE__ */ jsx(Form.Item, { noStyle: true, shouldUpdate: true, children: ({ setFieldValue }) => /* @__PURE__ */ jsx(Form.Item, { name: [field.name, "game_group"], children: /* @__PURE__ */ jsx(
2333
+ Select,
2334
+ {
2335
+ allowClear: true,
2336
+ showSearch: true,
2337
+ mode: "tags",
2338
+ optionFilterProp: "label",
2339
+ loading: isGroupsLoading,
2340
+ options: groups?.map((group) => ({ label: group, value: group })),
2341
+ onChange: () => {
2342
+ setFieldValue(["permissions", field.name, "game_ids"], []);
2343
+ }
2344
+ }
2345
+ ) }) }) }),
2346
+ /* @__PURE__ */ jsx(Col, { span: 10, children: /* @__PURE__ */ jsx(
2347
+ Form.Item,
2348
+ {
2349
+ noStyle: true,
2350
+ shouldUpdate: (prevValues, nextValues) => prevValues.permissions[field.name]?.game_group !== nextValues.permissions[field.name]?.game_group,
2351
+ children: ({ getFieldValue }) => {
2352
+ const _groups = getFieldValue(["permissions", field.name, "game_group"]);
2353
+ return /* @__PURE__ */ jsx(
2354
+ Form.Item,
2355
+ {
2356
+ name: [field.name, "game_ids"],
2357
+ dependencies: [["permissions", field.name, "game_group"]],
2358
+ rules: [{ required: _groups?.length, message: "\u8BF7\u9009\u62E9\u6E38\u620F" }],
2359
+ children: /* @__PURE__ */ jsx(GameSelect2, { groups: _groups })
2360
+ }
2361
+ );
2362
+ }
2363
+ }
2364
+ ) }),
2365
+ /* @__PURE__ */ jsx(Col, { span: 6, children: /* @__PURE__ */ jsxs("div", { className: "flex", children: [
2366
+ /* @__PURE__ */ jsx("div", { className: "flex-1", children: /* @__PURE__ */ jsx(
2367
+ Form.Item,
2368
+ {
2369
+ name: [field.name, "role"],
2370
+ rules: [
2371
+ { required: true, message: "\u8BF7\u9009\u62E9\u89D2\u8272" },
2372
+ ({ getFieldValue }) => ({
2373
+ validator(_rule, value) {
2374
+ const items = getFieldValue("permissions");
2375
+ const otherItems = items.filter((item, index) => !!item && index !== field.name);
2376
+ if (otherItems.some((item) => item.role === value)) {
2377
+ return Promise.reject(new Error("\u8BF7\u52FF\u91CD\u590D\u9009\u62E9\u89D2\u8272"));
2378
+ }
2379
+ return Promise.resolve();
2380
+ }
2381
+ })
2382
+ ],
2383
+ children: /* @__PURE__ */ jsx(
2384
+ Select,
2385
+ {
2386
+ allowClear: true,
2387
+ showSearch: true,
2388
+ optionFilterProp: "label",
2389
+ loading: isRolesLoading,
2390
+ options: roles?.map((role) => ({ label: role.name, value: role.name }))
2391
+ }
2392
+ )
2393
+ }
2394
+ ) }),
2395
+ /* @__PURE__ */ jsx("div", { className: "w-8 text-center", children: /* @__PURE__ */ jsx(Form.Item, { children: /* @__PURE__ */ jsx(
2396
+ MinusCircleOutlined,
2397
+ {
2398
+ onClick: () => {
2399
+ remove(field.name);
2400
+ }
2401
+ }
2402
+ ) }) })
2403
+ ] }) })
2404
+ ] }, field.key)),
2405
+ fields.length === 0 && /* @__PURE__ */ jsx(Col, { span: 24, children: /* @__PURE__ */ jsx(Empty, { className: "mb-6" }) }),
2406
+ /* @__PURE__ */ jsx(Col, { span: 24, children: /* @__PURE__ */ jsx(Button, { block: true, type: "dashed", onClick: () => add(), children: t("global.add") }) })
2407
+ ] }) })
2408
+ ] });
2409
+ const onConfirm = async (values, extraValues) => {
2410
+ if (isCreate) {
2411
+ await create5.trigger(values);
2412
+ refetch(url2, { page: 1 });
2413
+ message.success(t("UserList.createSuccessfully"));
2414
+ } else {
2415
+ await update.trigger({ ...values, id: extraValues?.id });
2416
+ mutate2(url2);
2417
+ message.success(t("UserList.updateSuccessfully"));
2418
+ }
2419
+ };
2420
+ return useFormModal({
2421
+ title,
2422
+ width: "50vw",
2423
+ formProps: {
2424
+ autoComplete: "off",
1754
2425
  labelCol: { flex: "80px" }
1755
2426
  },
1756
2427
  content,
@@ -1761,9 +2432,13 @@ var init_userList = __esm({
1761
2432
  const { modal, message } = App.useApp();
1762
2433
  const remove = useRemoveUser();
1763
2434
  const { mutate: mutate2 } = useQueryListStore();
2435
+ const { permissionVersion } = useToolkitsStore((s) => s);
1764
2436
  const { show: showCreateModal, modal: createModal } = useModal2(true);
1765
2437
  const { show: showUpdateModal, modal: updateModal } = useModal2();
2438
+ const { show: showCreateModalWithGroup, modal: createModalWithGroup } = useModalWithGroup(true);
2439
+ const { show: showUpdateModalWithGroup, modal: updateModalWithGroup } = useModalWithGroup();
1766
2440
  const { t } = useTranslation();
2441
+ const navigate = useNavigate();
1767
2442
  const columns = [
1768
2443
  {
1769
2444
  title: t("global.name"),
@@ -1775,7 +2450,7 @@ var init_userList = __esm({
1775
2450
  dataIndex: "id",
1776
2451
  key: "id"
1777
2452
  },
1778
- {
2453
+ permissionVersion !== "v3" /* V3 */ && {
1779
2454
  title: t("global.role"),
1780
2455
  dataIndex: "roles",
1781
2456
  key: "roles",
@@ -1793,61 +2468,86 @@ var init_userList = __esm({
1793
2468
  title: t("global.operation"),
1794
2469
  width: 150,
1795
2470
  align: "center",
1796
- render: (value) => /* @__PURE__ */ jsxs(Space, { children: [
1797
- /* @__PURE__ */ jsx(
1798
- PermissionButton_default,
1799
- {
1800
- size: "small",
1801
- type: "link",
1802
- code: "100003",
1803
- onClick: () => {
1804
- showUpdateModal({
1805
- initialValues: {
1806
- name: value.name,
1807
- roles: value.roles
1808
- },
1809
- extraValues: {
1810
- id: value.id
1811
- }
1812
- });
1813
- },
1814
- children: t("global.update")
1815
- }
1816
- ),
1817
- /* @__PURE__ */ jsx(
1818
- PermissionButton_default,
1819
- {
1820
- danger: true,
1821
- size: "small",
1822
- code: "100004",
1823
- type: "link",
1824
- onClick: () => {
1825
- modal.confirm({
1826
- title: t("UserList.deleteTitle"),
1827
- content: /* @__PURE__ */ jsx(Highlight_default, { texts: [value.name], children: t("UserList.deleteContent", { user: value.name }) }),
1828
- async onOk() {
1829
- await remove.trigger({
1830
- id: value.id,
1831
- name: value.name
2471
+ render: (_, record) => {
2472
+ const { name, permissions, roles, id: id2 } = record;
2473
+ return /* @__PURE__ */ jsxs(Space, { children: [
2474
+ permissionVersion === "v3" /* V3 */ && /* @__PURE__ */ jsx(
2475
+ Button,
2476
+ {
2477
+ type: "link",
2478
+ onClick: () => {
2479
+ navigate(`./${id2}}`);
2480
+ },
2481
+ children: t("global.view")
2482
+ }
2483
+ ),
2484
+ /* @__PURE__ */ jsx(
2485
+ PermissionButton_default,
2486
+ {
2487
+ size: "small",
2488
+ type: "link",
2489
+ code: "100003",
2490
+ onClick: () => {
2491
+ if (permissionVersion === "v3" /* V3 */) {
2492
+ showUpdateModalWithGroup({
2493
+ initialValues: {
2494
+ name,
2495
+ permissions
2496
+ },
2497
+ extraValues: {
2498
+ id: id2
2499
+ }
1832
2500
  });
1833
- mutate2(url2, (prev) => {
1834
- return produce(prev, (draft) => {
1835
- const index = draft?.List?.findIndex((item) => item.id === value.id);
1836
- if (index) {
1837
- draft?.List?.splice(index, 1);
1838
- }
1839
- });
2501
+ } else {
2502
+ showUpdateModal({
2503
+ initialValues: {
2504
+ name,
2505
+ roles
2506
+ },
2507
+ extraValues: {
2508
+ id: id2
2509
+ }
1840
2510
  });
1841
- message.success(t("UserList.deleteSuccessfully"));
1842
2511
  }
1843
- });
1844
- },
1845
- children: t("global.delete")
1846
- }
1847
- )
1848
- ] })
2512
+ },
2513
+ children: t("global.update")
2514
+ }
2515
+ ),
2516
+ /* @__PURE__ */ jsx(
2517
+ PermissionButton_default,
2518
+ {
2519
+ danger: true,
2520
+ size: "small",
2521
+ code: "100004",
2522
+ type: "link",
2523
+ onClick: () => {
2524
+ modal.confirm({
2525
+ title: t("UserList.deleteTitle"),
2526
+ content: /* @__PURE__ */ jsx(Highlight_default, { texts: [name], children: t("UserList.deleteContent", { user: name }) }),
2527
+ async onOk() {
2528
+ await remove.trigger({
2529
+ id: id2,
2530
+ name
2531
+ });
2532
+ mutate2(url2, (prev) => {
2533
+ return produce(prev, (draft) => {
2534
+ const index = draft?.List?.findIndex((item) => item.id === id2);
2535
+ if (index) {
2536
+ draft?.List?.splice(index, 1);
2537
+ }
2538
+ });
2539
+ });
2540
+ message.success(t("UserList.deleteSuccessfully"));
2541
+ }
2542
+ });
2543
+ },
2544
+ children: t("global.delete")
2545
+ }
2546
+ )
2547
+ ] });
2548
+ }
1849
2549
  }
1850
- ];
2550
+ ].filter(Boolean);
1851
2551
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1852
2552
  /* @__PURE__ */ jsx(
1853
2553
  Card,
@@ -1860,7 +2560,11 @@ var init_userList = __esm({
1860
2560
  icon: /* @__PURE__ */ jsx(UserAddOutlined, {}),
1861
2561
  code: "100002",
1862
2562
  onClick: () => {
1863
- showCreateModal();
2563
+ if (permissionVersion === "v3" /* V3 */) {
2564
+ showCreateModalWithGroup();
2565
+ } else {
2566
+ showCreateModal();
2567
+ }
1864
2568
  },
1865
2569
  children: t("UserList.createTitle")
1866
2570
  }
@@ -1873,98 +2577,129 @@ var init_userList = __esm({
1873
2577
  rowKey: "id",
1874
2578
  columns,
1875
2579
  getTotal: (response) => response?.Total,
1876
- getDataSource: (response) => response?.List
2580
+ getDataSource: (response) => response?.List,
2581
+ renderForm: (form) => /* @__PURE__ */ jsx(Form, { form, children: /* @__PURE__ */ jsx(Form.Item, { label: "\u540D\u79F0", name: "name", children: /* @__PURE__ */ jsx(Input, {}) }) })
1877
2582
  }
1878
2583
  )
1879
2584
  }
1880
2585
  ),
1881
2586
  createModal,
1882
- updateModal
2587
+ updateModal,
2588
+ createModalWithGroup,
2589
+ updateModalWithGroup
1883
2590
  ] });
1884
2591
  };
1885
2592
  userList_default = withContext(UserList, { isGlobal: true });
1886
2593
  }
1887
2594
  });
1888
2595
 
2596
+ // src/pages/permission/userDetail/index.tsx
2597
+ var userDetail_exports = {};
2598
+ __export(userDetail_exports, {
2599
+ default: () => userDetail_default
2600
+ });
2601
+ var UserDetail, userDetail_default;
2602
+ var init_userDetail = __esm({
2603
+ "src/pages/permission/userDetail/index.tsx"() {
2604
+ init_layout();
2605
+ init_locale();
2606
+ init_toolkitsProvider();
2607
+ init_constants();
2608
+ UserDetail = () => {
2609
+ const params = useParams();
2610
+ const { t } = useTranslation();
2611
+ const { axios: axios2, gameApiV2 } = useToolkitsStore((s) => s);
2612
+ const { data, isLoading } = useSWR5(
2613
+ params.id ? `/api/usystem/user/info?id=${params.id}` : null,
2614
+ (url4) => axios2.get(url4).then((res) => res.data.data)
2615
+ );
2616
+ const { data: games } = useGames();
2617
+ const columns = [
2618
+ {
2619
+ key: "group",
2620
+ title: t("global.projectGroup"),
2621
+ dataIndex: "game_group",
2622
+ render(value) {
2623
+ return value.map((item) => /* @__PURE__ */ jsx(Tag, { children: item }, item));
2624
+ }
2625
+ },
2626
+ {
2627
+ key: "game",
2628
+ title: t("global.game"),
2629
+ dataIndex: "game_ids",
2630
+ render(value) {
2631
+ return value.map((item) => {
2632
+ const matchedGame = games?.find((game) => String(gameApiV2 ? game.game_id : game.id) === item);
2633
+ return /* @__PURE__ */ jsx(Tag, { children: matchedGame?.name ?? (item === WILDCARD ? "\u901A\u7528" : item) }, item);
2634
+ });
2635
+ }
2636
+ },
2637
+ {
2638
+ key: "role",
2639
+ title: t("global.role"),
2640
+ dataIndex: "role",
2641
+ render(value) {
2642
+ return /* @__PURE__ */ jsx(Link, { to: `../../role/${value}`, relative: "path", children: value });
2643
+ }
2644
+ }
2645
+ ];
2646
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
2647
+ /* @__PURE__ */ jsx(
2648
+ Breadcrumb,
2649
+ {
2650
+ className: "mb-6",
2651
+ items: [
2652
+ {
2653
+ key: "1",
2654
+ title: /* @__PURE__ */ jsx(Link, { to: "..", relative: "path", children: t("global.user") })
2655
+ },
2656
+ {
2657
+ key: "2",
2658
+ title: "\u7528\u6237\u8BE6\u60C5"
2659
+ }
2660
+ ]
2661
+ }
2662
+ ),
2663
+ /* @__PURE__ */ jsx(Card, { title: "\u7528\u6237\u8BE6\u60C5", loading: isLoading, children: /* @__PURE__ */ jsxs(Descriptions, { bordered: true, column: 1, children: [
2664
+ /* @__PURE__ */ jsx(Descriptions.Item, { label: t("global.name"), children: data?.name }),
2665
+ /* @__PURE__ */ jsx(Descriptions.Item, { label: "ID", children: data?.id }),
2666
+ /* @__PURE__ */ jsx(Descriptions.Item, { label: t("global.role"), children: /* @__PURE__ */ jsx(Table, { rowKey: "role", columns, dataSource: data?.permissions, pagination: false }) })
2667
+ ] }) })
2668
+ ] });
2669
+ };
2670
+ userDetail_default = UserDetail;
2671
+ }
2672
+ });
2673
+
1889
2674
  // src/pages/permission/roleList/index.tsx
1890
2675
  var roleList_exports = {};
1891
2676
  __export(roleList_exports, {
1892
2677
  default: () => roleList_default
1893
2678
  });
1894
- var url3, useModal3, RoleList, roleList_default;
2679
+ var url3, RoleList, roleList_default;
1895
2680
  var init_roleList = __esm({
1896
2681
  "src/pages/permission/roleList/index.tsx"() {
1897
- init_contextProvider();
1898
2682
  init_highlight();
1899
2683
  init_locale();
1900
- init_modal2();
1901
2684
  init_permissionButton();
1902
2685
  init_queryList();
1903
- init_stores3();
1904
- init_permission2();
2686
+ init_stores5();
2687
+ init_toolkitsProvider();
1905
2688
  init_permission();
2689
+ init_hooks2();
1906
2690
  url3 = "/api/usystem/role/list";
1907
- useModal3 = (isCreate) => {
1908
- const { message } = App.useApp();
1909
- const { t } = useTranslation();
1910
- const { refetch, mutate: mutate2 } = useQueryListStore();
1911
- const create5 = useCreateRole();
1912
- const update = useUpdateRole();
1913
- const title = isCreate ? t("RoleList.createTitle") : t("RoleList.updateTitle");
1914
- const formProps = {
1915
- layout: "vertical"
1916
- };
1917
- const content = /* @__PURE__ */ jsxs(Fragment, { children: [
1918
- /* @__PURE__ */ jsx(Form.Item, { label: t("global.name"), name: "name", rules: [{ required: true }], children: /* @__PURE__ */ jsx(Input, { disabled: !isCreate, addonBefore: "role_" }) }),
1919
- /* @__PURE__ */ jsx(Form.Item, { name: "permissions", children: /* @__PURE__ */ jsx(permissionList_default, {}) })
1920
- ] });
1921
- const onConfirm = async (values, extraValues) => {
1922
- if (isCreate) {
1923
- await create5.trigger({
1924
- name: `role_${values.name}`,
1925
- permissions: values.permissions
1926
- });
1927
- refetch(url3, { page: 1 });
1928
- message.success(t("RoleList.createSuccessfully"));
1929
- } else {
1930
- await update.trigger({
1931
- id: extraValues?.id,
1932
- name: `role_${values.name}`,
1933
- permissions: values.permissions
1934
- });
1935
- mutate2(
1936
- url3,
1937
- (prev) => produce(prev, (draft) => {
1938
- const match = draft?.List?.find((item) => item.id === extraValues?.id);
1939
- if (match) {
1940
- match.permissions = values.permissions;
1941
- }
1942
- }),
1943
- { revalidate: false }
1944
- );
1945
- message.success(t("RoleList.updateSuccessfully"));
1946
- }
1947
- };
1948
- return useFormModal({
1949
- title,
1950
- width: "50vw",
1951
- formProps,
1952
- content,
1953
- onConfirm
1954
- });
1955
- };
1956
2691
  RoleList = () => {
1957
2692
  const { accessible: viewable } = usePermission("200005");
1958
2693
  const { modal, message } = App.useApp();
1959
2694
  const { t } = useTranslation();
1960
- const { axios: axios2, isPermissionApiV2 } = useContextStore((s) => s);
2695
+ const { axios: axios2, permissionVersion } = useToolkitsStore((s) => s);
1961
2696
  const { mutate: mutate2 } = useQueryListStore();
1962
- const { show: showCreateModal, modal: createModal } = useModal3(true);
1963
- const { show: showUpdateModal, modal: updateModal } = useModal3();
2697
+ const { show: showCreateModal, modal: createModal } = useRoleModal(true);
2698
+ const { show: showUpdateModal, modal: updateModal } = useRoleModal();
1964
2699
  const remove = useRemoveRole();
1965
2700
  const handleUpdateBtnClick = async (record) => {
1966
2701
  const response = await axios2.get(
1967
- `/api/usystem/role/info${isPermissionApiV2 ? "V2" : ""}?name=${record.name}`
2702
+ `/api/usystem/role/info${permissionVersion === "v2" /* V2 */ ? "V2" : ""}?name=${record.name}`
1968
2703
  );
1969
2704
  const data = response.data.data;
1970
2705
  showUpdateModal({
@@ -2100,13 +2835,31 @@ __export(roleDetail_exports, {
2100
2835
  var RoleDetail, roleDetail_default;
2101
2836
  var init_roleDetail = __esm({
2102
2837
  "src/pages/permission/roleDetail/index.tsx"() {
2103
- init_contextProvider();
2104
2838
  init_locale();
2105
- init_permission2();
2839
+ init_toolkitsProvider();
2840
+ init_permission();
2106
2841
  RoleDetail = () => {
2107
2842
  const params = useParams();
2108
- const { data, isLoading } = useRole(params.name);
2109
2843
  const { t } = useTranslation();
2844
+ const { axios: axios2, permissionVersion } = useToolkitsStore((s) => s);
2845
+ const { data: role, isLoading } = useRole(params.name);
2846
+ const { show, modal } = useRoleModal(false);
2847
+ const handleUpdateBtnClick = async () => {
2848
+ const {
2849
+ data: { data }
2850
+ } = await axios2.get(
2851
+ `/api/usystem/role/info${permissionVersion === "v2" /* V2 */ ? "V2" : ""}?name=${role.name}`
2852
+ );
2853
+ show({
2854
+ initialValues: {
2855
+ permissions: data?.permissions,
2856
+ name: data?.name.replace(/^role_/, "")
2857
+ },
2858
+ extraValues: {
2859
+ id: data?.id
2860
+ }
2861
+ });
2862
+ };
2110
2863
  return /* @__PURE__ */ jsxs(Fragment, { children: [
2111
2864
  /* @__PURE__ */ jsx(
2112
2865
  Breadcrumb,
@@ -2119,28 +2872,26 @@ var init_roleDetail = __esm({
2119
2872
  },
2120
2873
  {
2121
2874
  key: "2",
2122
- title: params.name
2875
+ title: t("RoleDetail.title")
2123
2876
  }
2124
2877
  ]
2125
2878
  }
2126
2879
  ),
2127
- /* @__PURE__ */ jsx(Card, { title: t("RoleDetail.title"), children: /* @__PURE__ */ jsxs(Skeleton, { loading: isLoading, children: [
2128
- /* @__PURE__ */ jsxs(Descriptions, { column: 3, layout: "vertical", children: [
2129
- /* @__PURE__ */ jsx(Descriptions.Item, { label: t("global.name"), children: data?.name }),
2130
- /* @__PURE__ */ jsx(Descriptions.Item, { label: "ID", children: data?.id }),
2131
- /* @__PURE__ */ jsx(Descriptions.Item, { label: t("global.creationTime"), children: data?.ctime })
2880
+ /* @__PURE__ */ jsx(Card, { title: t("RoleDetail.title"), extra: /* @__PURE__ */ jsx(Button, { onClick: handleUpdateBtnClick, children: t("global.edit") }), children: /* @__PURE__ */ jsxs(Skeleton, { loading: isLoading, children: [
2881
+ /* @__PURE__ */ jsxs(Descriptions, { column: 2, layout: "vertical", className: "mb-6", children: [
2882
+ /* @__PURE__ */ jsx(Descriptions.Item, { label: t("global.name"), children: role?.name }),
2883
+ /* @__PURE__ */ jsx(Descriptions.Item, { label: "ID", children: role?.id }),
2884
+ /* @__PURE__ */ jsx(Descriptions.Item, { label: t("global.creationTime"), children: role?.ctime })
2132
2885
  ] }),
2133
- /* @__PURE__ */ jsx(permissionList_default, { readonly: true, value: data?.permissions })
2134
- ] }) })
2886
+ /* @__PURE__ */ jsx(permissionList_default, { readonly: true, value: role?.permissions })
2887
+ ] }) }),
2888
+ modal
2135
2889
  ] });
2136
2890
  };
2137
2891
  roleDetail_default = withContext(RoleDetail, { isGlobal: true });
2138
2892
  }
2139
2893
  });
2140
2894
 
2141
- // src/index.ts
2142
- init_contextProvider();
2143
-
2144
2895
  // src/components/dynamicTags/DynamicTags.tsx
2145
2896
  init_locale();
2146
2897
  var DynamicTags = (props) => {
@@ -2296,17 +3047,17 @@ init_filterFormWrapper();
2296
3047
  init_highlight();
2297
3048
 
2298
3049
  // src/components/infiniteList/InfiniteList.tsx
2299
- init_permission();
2300
- init_contextProvider();
3050
+ init_hooks2();
2301
3051
  init_filterFormWrapper();
2302
3052
  init_locale();
3053
+ init_toolkitsProvider();
2303
3054
  var InfiniteList = (props) => {
2304
3055
  const { code, url: url4, extras, headers, getRowKey, getDataSource, hasMore, renderForm, transformArg, ...tableProps } = props;
2305
3056
  const { t } = useTranslation();
2306
3057
  const [form] = Form.useForm();
2307
3058
  const [isValid, setIsValid] = useState(false);
2308
3059
  const [formValues, setFormValues] = useState();
2309
- const { axios: axios2 } = useContextStore((s) => s);
3060
+ const { axios: axios2 } = useToolkitsStore((s) => s);
2310
3061
  const getKey = (pageIndex, previousPageData) => {
2311
3062
  if (!isValid) return null;
2312
3063
  const rowKey = pageIndex !== 0 ? getRowKey(previousPageData) : void 0;
@@ -2417,363 +3168,16 @@ var InfiniteList = (props) => {
2417
3168
  };
2418
3169
  var InfiniteList_default = InfiniteList;
2419
3170
 
2420
- // src/components/layout/Layout.tsx
2421
- init_contextProvider();
2422
- var Logo = (props) => {
2423
- return /* @__PURE__ */ jsx("img", { src: logoUrl, alt: "logo", ...props });
2424
- };
2425
- var Logo_default = Logo;
2426
- var useNavStore = create()(
2427
- persist(
2428
- (set) => ({
2429
- openKeys: [],
2430
- setOpenKeys: (keys) => set({ openKeys: keys }),
2431
- selectedKeys: [],
2432
- setSelectedKeys: (keys) => set({ selectedKeys: keys })
2433
- }),
2434
- {
2435
- name: "nav",
2436
- storage: createJSONStorage(() => localStorage),
2437
- partialize: (state) => ({
2438
- openKeys: state.openKeys,
2439
- selectedKeys: state.selectedKeys
2440
- })
2441
- }
2442
- )
2443
- );
2444
- function transformItems(items) {
2445
- const result = [];
2446
- if (items) {
2447
- for (let i = 0; i < items.length; i++) {
2448
- if (items[i] === null || items[i].type === "divider") {
2449
- result[i] = items[i];
2450
- } else if (items[i].children) {
2451
- const { children, ...rest } = items[i];
2452
- result[i] = {
2453
- ...rest,
2454
- children: transformItems(children)
2455
- };
2456
- } else {
2457
- const { route, label, ...rest } = items[i];
2458
- const labelNode = route ? /* @__PURE__ */ jsx(Link, { to: route, children: label }) : label;
2459
- result[i] = {
2460
- ...rest,
2461
- label: labelNode
2462
- };
2463
- }
2464
- }
2465
- }
2466
- return result;
2467
- }
2468
- function flatItems(items, result = [], keypath = []) {
2469
- for (const item of items) {
2470
- const children = item?.children;
2471
- if (Array.isArray(children)) {
2472
- const keys = item.type !== "group" && item.key ? [...keypath, item.key] : keypath;
2473
- flatItems(children, result, keys);
2474
- } else if (item) {
2475
- result.push(Object.assign(item, { keypath }));
2476
- }
2477
- }
2478
- return result;
2479
- }
2480
- var NavMenu = memo(function NavMenu2(props) {
2481
- const { items, theme: theme4, loading } = props;
2482
- const location = useLocation();
2483
- const flattenItems = useMemo(() => flatItems(items ?? []), [items]);
2484
- const internalItems = useMemo(() => transformItems(items ?? []), [items]);
2485
- const { openKeys, selectedKeys, setOpenKeys, setSelectedKeys } = useNavStore();
2486
- const onOpenChange = useCallback(
2487
- (keys) => {
2488
- const lastOpenKey = keys?.find((key) => openKeys?.indexOf(key) === -1);
2489
- const match = flattenItems.find((item) => lastOpenKey === item.key);
2490
- setOpenKeys(match?.keypath ?? [lastOpenKey]);
2491
- },
2492
- [flattenItems, openKeys, setOpenKeys]
2493
- );
2494
- useEffect(() => {
2495
- const match = flattenItems.find((item) => location.pathname === item.route);
2496
- if (match) {
2497
- const key = match.key;
2498
- const keypath = match.keypath;
2499
- setSelectedKeys([key]);
2500
- setOpenKeys(keypath);
2501
- }
2502
- }, [flattenItems, location]);
2503
- if (loading) {
2504
- return /* @__PURE__ */ jsx("div", { className: "flex justify-center items-center", style: { height: "calc(100vh - 64px)" }, children: /* @__PURE__ */ jsx(Spin, {}) });
2505
- }
2506
- return /* @__PURE__ */ jsx(
2507
- Menu,
2508
- {
2509
- theme: theme4,
2510
- style: { borderRight: "none" },
2511
- items: internalItems,
2512
- mode: "inline",
2513
- openKeys,
2514
- selectedKeys,
2515
- onOpenChange
2516
- }
2517
- );
2518
- });
2519
- if (process.env.NODE_ENV === "development") {
2520
- NavMenu.displayName = "NavMenu";
2521
- }
2522
- var NavMenu_default = NavMenu;
2523
-
2524
- // src/components/requireGame/RequireGame.tsx
2525
- init_contextProvider();
2526
- init_locale();
2527
- var { Spin: Spin3 } = Antd2;
2528
- var RequireGame = ({ children }) => {
2529
- const { isPermissionApiV2, game, isGamesLoading, isGlobal } = useContextStore((s) => s);
2530
- const { t } = useTranslation();
2531
- if (isGamesLoading) {
2532
- return /* @__PURE__ */ jsx(
2533
- "div",
2534
- {
2535
- style: {
2536
- display: "flex",
2537
- justifyContent: "center",
2538
- alignItems: "center",
2539
- height: 400
2540
- },
2541
- children: /* @__PURE__ */ jsx(Spin3, {})
2542
- }
2543
- );
2544
- }
2545
- if (isPermissionApiV2) {
2546
- if (isGlobal) {
2547
- return children;
2548
- } else if (!game) {
2549
- return /* @__PURE__ */ jsx(Empty, { image: Empty.PRESENTED_IMAGE_SIMPLE, description: t("RequireGame.description") });
2550
- } else {
2551
- return /* @__PURE__ */ jsx(Fragment$1, { children }, game.id ?? game.game_id);
2552
- }
2553
- }
2554
- return children;
2555
- };
2556
- var RequireGame_default = RequireGame;
2557
-
2558
- // src/components/userWidget/UserWidget.tsx
2559
- init_contextProvider();
2560
- init_locale();
2561
- var UserWidget = () => {
2562
- const { t } = useTranslation();
2563
- const navigate = useNavigate();
2564
- const { clearToken, getUser, signInPath } = useContextStore((s) => s);
2565
- const user = getUser();
2566
- const items = [
2567
- {
2568
- key: "1",
2569
- icon: /* @__PURE__ */ jsx(LogoutOutlined, {}),
2570
- label: /* @__PURE__ */ jsx(
2571
- "a",
2572
- {
2573
- onClick: () => {
2574
- clearToken();
2575
- navigate(signInPath);
2576
- },
2577
- children: t("UserWidget.signOutText")
2578
- }
2579
- )
2580
- }
2581
- ];
2582
- return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
2583
- Dropdown,
2584
- {
2585
- menu: {
2586
- selectable: true,
2587
- items
2588
- },
2589
- placement: "bottomRight",
2590
- children: /* @__PURE__ */ jsx(
2591
- "a",
2592
- {
2593
- onClick: (e) => {
2594
- e.preventDefault();
2595
- },
2596
- children: /* @__PURE__ */ jsxs(Space, { align: "center", children: [
2597
- /* @__PURE__ */ jsx("span", { children: user?.authorityId }),
2598
- /* @__PURE__ */ jsx(UserOutlined, { style: { fontSize: "16px" } })
2599
- ] })
2600
- }
2601
- )
2602
- }
2603
- ) });
2604
- };
2605
- var UserWidget_default = UserWidget;
2606
-
2607
- // src/components/layout/GameSelect.tsx
2608
- init_constants();
2609
- init_contextProvider();
2610
- init_locale();
2611
- var { Text } = Typography;
2612
- var GameSelect = (props) => {
2613
- const { filter } = props;
2614
- const { t } = useTranslation();
2615
- const { axios: axios2, gameApiV2, setGame, setGames, selectedGame, setSelectedGame, setIsGamesLoading } = useContextStore(
2616
- (s) => s
2617
- );
2618
- const apiV2 = useContextStore((state) => state.gameApiV2);
2619
- const { data, isLoading } = useSWR6("/api/game/list", async () => {
2620
- setIsGamesLoading(true);
2621
- const headers = new AxiosHeaders({ [APP_ID_HEADER]: "global" });
2622
- const games = gameApiV2 ? await axios2({
2623
- url: "/api/game/list",
2624
- headers
2625
- }).then((response) => response.data.data.list ?? []) : await axios2({
2626
- url: "/api/usystem/game/all",
2627
- headers
2628
- }).then((response) => response.data.data ?? []);
2629
- setGames(games);
2630
- setIsGamesLoading(false);
2631
- return games;
2632
- });
2633
- const options = data?.filter((item) => filter?.(item) ?? true)?.map((item) => ({
2634
- label: item.name,
2635
- value: apiV2 ? item.game_id : item.id
2636
- }));
2637
- const onChange = async (value) => {
2638
- setGame(value);
2639
- setSelectedGame(value);
2640
- };
2641
- return /* @__PURE__ */ jsxs(Space, { children: [
2642
- /* @__PURE__ */ jsx(Text, { children: t("GameSelect.label") }),
2643
- /* @__PURE__ */ jsx(
2644
- Select,
2645
- {
2646
- showSearch: true,
2647
- optionFilterProp: "label",
2648
- value: selectedGame,
2649
- placeholder: t("GameSelect.placeholder"),
2650
- loading: isLoading,
2651
- style: { width: "200px" },
2652
- options,
2653
- onChange
2654
- }
2655
- )
2656
- ] });
2657
- };
2658
- var GameSelect_default = GameSelect;
2659
- var useLayoutStore = create()(
2660
- persist(
2661
- (set) => ({
2662
- collapsed: false,
2663
- setCollapsed: (collapsed) => set({ collapsed })
2664
- }),
2665
- {
2666
- name: "layout",
2667
- storage: createJSONStorage(() => localStorage),
2668
- partialize: (state) => ({ collapsed: state.collapsed })
2669
- }
2670
- )
2671
- );
2672
- var { Spin: Spin4, theme: theme3 } = Antd2;
2673
- var { Header, Sider, Content } = Antd2.Layout;
2674
- var Layout2 = (props) => {
2675
- const { menuCollapsible, isMenuLoading, title, items, headerExtra, children, navWidth, filter } = props;
2676
- const {
2677
- token: { colorBgContainer, colorBorder }
2678
- } = theme3.useToken();
2679
- const { isPermissionApiV2, layoutTitle, hideGameSelect } = useContextStore((s) => s);
2680
- const { collapsed, setCollapsed } = useLayoutStore();
2681
- const onCollapse = async () => {
2682
- setCollapsed(!collapsed);
2683
- };
2684
- return /* @__PURE__ */ jsxs(Antd2.Layout, { children: [
2685
- /* @__PURE__ */ jsxs(
2686
- Sider,
2687
- {
2688
- collapsible: true,
2689
- theme: "light",
2690
- trigger: null,
2691
- collapsed,
2692
- width: navWidth,
2693
- style: {
2694
- height: "100vh",
2695
- overflow: "auto",
2696
- borderRightWidth: 1,
2697
- borderRightStyle: "solid",
2698
- borderRightColor: colorBorder
2699
- },
2700
- children: [
2701
- /* @__PURE__ */ jsxs("div", { className: "flex gap-2 px-6 py-4 overflow-hidden", children: [
2702
- /* @__PURE__ */ jsx(Logo_default, { width: 32, height: 32 }),
2703
- (!menuCollapsible || !collapsed) && /* @__PURE__ */ jsx("div", { className: `h-8 flex items-center ${menuCollapsible ? "expand" : ""} `, children: title ?? layoutTitle })
2704
- ] }),
2705
- /* @__PURE__ */ jsx(NavMenu_default, { items, loading: isMenuLoading })
2706
- ]
2707
- }
2708
- ),
2709
- /* @__PURE__ */ jsxs(Antd2.Layout, { children: [
2710
- /* @__PURE__ */ jsx(
2711
- Header,
2712
- {
2713
- style: {
2714
- padding: "0 24px",
2715
- background: colorBgContainer
2716
- },
2717
- children: /* @__PURE__ */ jsxs("div", { className: "flex justify-between items-center h-full", children: [
2718
- /* @__PURE__ */ jsxs(Space, { size: "small", split: /* @__PURE__ */ jsx(Divider, { type: "vertical" }), className: "mr-6", children: [
2719
- menuCollapsible && /* @__PURE__ */ jsx(
2720
- Button,
2721
- {
2722
- type: "text",
2723
- icon: collapsed ? /* @__PURE__ */ jsx(MenuUnfoldOutlined, {}) : /* @__PURE__ */ jsx(MenuFoldOutlined, {}),
2724
- style: { fontSize: "16px" },
2725
- onClick: onCollapse
2726
- }
2727
- ),
2728
- isPermissionApiV2 && !hideGameSelect && /* @__PURE__ */ jsx(GameSelect_default, { filter }),
2729
- headerExtra?.left?.map((extra) => /* @__PURE__ */ jsx("span", { children: extra.children }, extra.key))
2730
- ] }),
2731
- /* @__PURE__ */ jsxs(Space, { size: "small", split: /* @__PURE__ */ jsx(Divider, { type: "vertical" }), children: [
2732
- headerExtra?.right?.map((extra) => /* @__PURE__ */ jsx("span", { children: extra.children }, extra.key)),
2733
- /* @__PURE__ */ jsx(UserWidget_default, {})
2734
- ] })
2735
- ] })
2736
- }
2737
- ),
2738
- /* @__PURE__ */ jsx(
2739
- Content,
2740
- {
2741
- style: {
2742
- overflow: "auto",
2743
- padding: "24px 16px",
2744
- maxHeight: "calc(100vh - 64px)"
2745
- },
2746
- children: /* @__PURE__ */ jsx(
2747
- Suspense,
2748
- {
2749
- fallback: /* @__PURE__ */ jsx(
2750
- Spin4,
2751
- {
2752
- style: {
2753
- display: "flex",
2754
- justifyContent: "center",
2755
- alignItems: "center",
2756
- height: "200px"
2757
- }
2758
- }
2759
- ),
2760
- children: /* @__PURE__ */ jsx(RequireGame_default, { children })
2761
- }
2762
- )
2763
- }
2764
- )
2765
- ] })
2766
- ] });
2767
- };
2768
- var Layout_default = Layout2;
2769
-
2770
3171
  // src/index.ts
3172
+ init_layout();
2771
3173
  init_modal2();
3174
+ init_navMenu();
2772
3175
  init_permissionButton();
2773
3176
  init_queryList();
3177
+ init_requireGame();
2774
3178
 
2775
3179
  // src/components/requirePermission/RequirePermission.tsx
2776
- init_permission();
3180
+ init_hooks2();
2777
3181
  init_locale();
2778
3182
  var RequirePermission = (props) => {
2779
3183
  const { code, children } = props;
@@ -2800,9 +3204,10 @@ var RequirePermission = (props) => {
2800
3204
  var RequirePermission_default = RequirePermission;
2801
3205
 
2802
3206
  // src/index.ts
3207
+ init_toolkitsProvider();
3208
+ init_userWidget();
2803
3209
  init_constants();
2804
- init_menu();
2805
- init_permission();
3210
+ init_hooks2();
2806
3211
  var MenuItemList2 = lazy(() => Promise.resolve().then(() => (init_menuItemList(), menuItemList_exports)));
2807
3212
  var CreateMenuItem2 = lazy(() => Promise.resolve().then(() => (init_createMenuItem(), createMenuItem_exports)));
2808
3213
  var UpdateMenuItem = lazy(() => Promise.resolve().then(() => (init_updateMenuItem(), updateMenuItem_exports)));
@@ -2838,11 +3243,9 @@ var NotFound = (props) => {
2838
3243
  ) });
2839
3244
  };
2840
3245
  var notFound_default = NotFound;
2841
-
2842
- // src/pages/operationLogList/index.tsx
2843
- init_contextProvider();
2844
3246
  init_locale();
2845
3247
  init_queryList();
3248
+ init_toolkitsProvider();
2846
3249
  var { Option } = Select;
2847
3250
  var OperationLogList = () => {
2848
3251
  const { t } = useTranslation();
@@ -2921,27 +3324,30 @@ var OperationLogList = () => {
2921
3324
  };
2922
3325
  var operationLogList_default = withContext(OperationLogList, { isGlobal: true });
2923
3326
  var UserList2 = lazy(() => Promise.resolve().then(() => (init_userList(), userList_exports)));
3327
+ var UserDetail2 = lazy(() => Promise.resolve().then(() => (init_userDetail(), userDetail_exports)));
2924
3328
  var RoleList2 = lazy(() => Promise.resolve().then(() => (init_roleList(), roleList_exports)));
2925
3329
  var RoleDetail2 = lazy(() => Promise.resolve().then(() => (init_roleDetail(), roleDetail_exports)));
2926
3330
  var permission_default = /* @__PURE__ */ jsxs(Routes, { children: [
2927
3331
  /* @__PURE__ */ jsx(Route, { index: true, element: /* @__PURE__ */ jsx(Navigate, { to: "user" }) }),
2928
3332
  /* @__PURE__ */ jsx(Route, { path: "user", element: /* @__PURE__ */ jsx(UserList2, {}) }),
3333
+ /* @__PURE__ */ jsx(Route, { path: "user/:id", element: /* @__PURE__ */ jsx(UserDetail2, {}) }),
2929
3334
  /* @__PURE__ */ jsx(Route, { path: "role", element: /* @__PURE__ */ jsx(RoleList2, {}) }),
2930
3335
  /* @__PURE__ */ jsx(Route, { path: "role/:name", element: /* @__PURE__ */ jsx(RoleDetail2, {}) })
2931
3336
  ] });
2932
3337
 
2933
3338
  // src/pages/signIn/index.tsx
2934
- init_contextProvider();
2935
3339
  init_locale();
3340
+ init_logo();
3341
+ init_toolkitsProvider();
2936
3342
  init_constants();
2937
3343
 
2938
3344
  // src/pages/signIn/background.svg
2939
3345
  var background_default = 'data:image/svg+xml,<svg xml:space="preserve" style="enable-background:new 0 0 6000 4000;" viewBox="0 0 6000 4000" y="0px" x="0px" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" id="Layer_1" version="1.1">%0A<style type="text/css">%0A%09.Graphic_x0020_Style_x0020_100{fill:%23FFFFFF;}%0A%09.Graphic_x0020_Style_x0020_101{fill:url(%23SVGID_1_);}%0A%09.Graphic_x0020_Style_x0020_102{fill:url(%23SVGID_2_);}%0A%09.Graphic_x0020_Style_x0020_104{fill:%23DB6767;}%0A%09.Graphic_x0020_Style_x0020_105{fill:%23FFDE70;}%0A%09.Graphic_x0020_Style_x0020_106{fill:%23FFB114;}%0A%09.Graphic_x0020_Style_x0020_107{fill:%236584C6;}%0A%09.Graphic_x0020_Style_x0020_108{fill:%23102140;}%0A%09.Graphic_x0020_Style_x0020_109{fill:%233B546B;}%0A%09.Graphic_x0020_Style_x0020_110{fill:%23152A52;}%0A%09.Graphic_x0020_Style_x0020_111{fill:%23E8766F;}%0A%09.Graphic_x0020_Style_x0020_112{fill:%23EF5668;}%0A%09.Graphic_x0020_Style_x0020_113{fill:%23FC9590;}%0A%09.Graphic_x0020_Style_x0020_114{fill:%23912433;}%0A%09.Graphic_x0020_Style_x0020_115{opacity:0.5;fill:%23FFFFFF;}%0A%09.Graphic_x0020_Style_x0020_116{fill:%231A1A1A;}%0A%09.Graphic_x0020_Style_x0020_117{fill:%23535353;}%0A%09.Graphic_x0020_Style_x0020_118{fill:%23DBD2DB;}%0A%09.Graphic_x0020_Style_x0020_119{fill:%234D73C6;}%0A%09.Graphic_x0020_Style_x0020_120{fill:%23D1334A;}%0A%09.Graphic_x0020_Style_x0020_123{fill:url(%23SVGID_3_);}%0A%09.st0{fill:url(%23SVGID_4_);}%0A%09.st1{fill:url(%23SVGID_5_);}%0A%09.st2{fill:url(%23SVGID_6_);}%0A%09.st3{fill:%239D8A9D;}%0A%09.st4{fill:url(%23SVGID_7_);}%0A%09.st5{fill:url(%23SVGID_8_);}%0A%09.st6{fill:%233B546B;}%0A%09.st7{fill:%23A8A1A8;}%0A%09.st8{fill:%23DBD2DB;}%0A%09.st9{fill:%23FFFFFF;stroke:%231A1A1A;stroke-width:5.3432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st10{fill:%23339E7E;}%0A%09.st11{fill:none;stroke:%2310663F;stroke-width:5.3432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st12{fill:%2300593B;}%0A%09.st13{fill:none;stroke:%233DBE88;stroke-width:5.3432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st14{fill:none;stroke:%23134411;stroke-width:8.0149;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st15{fill:%23EF5668;}%0A%09.st16{fill:%23FC9590;}%0A%09.st17{fill:%23102140;}%0A%09.st18{fill:%23DB6767;}%0A%09.st19{fill:%231A1A1A;stroke:%231A1A1A;stroke-width:5.3432;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}%0A%09.st20{fill:%23FFFFFF;}%0A%09.st21{fill:%23535353;}%0A%09.st22{fill:%23F9EBF9;}%0A%09.st23{fill:%23D896D8;}%0A%09.st24{fill:%238E3D8E;}%0A%09.st25{fill:%23CA74CA;}%0A%09.st26{fill:%23D590D5;}%0A%09.st27{fill:%23160A16;}%0A%09.st28{fill:%23384A6E;}%0A%09.st29{fill:%23B7C0D4;}%0A%09.st30{fill:%23E8766F;}%0A%09.st31{fill:%23FFB114;}%0A%09.st32{fill:%23FFDE70;}%0A%09.st33{fill:%23434343;}%0A%09.st34{fill:%23664708;}%0A%09.st35{fill:%23D9D9D9;}%0A%09.st36{fill:url(%23SVGID_9_);}%0A%09.st37{fill:url(%23SVGID_10_);}%0A%09.st38{fill:url(%23SVGID_11_);}%0A%09.st39{fill:url(%23SVGID_12_);}%0A</style>%0A<linearGradient y2="0" x2="1" y1="0" x1="0" gradientUnits="userSpaceOnUse" id="SVGID_1_">%0A%09<stop style="stop-color:%234085F0" offset="0"></stop>%0A%09<stop style="stop-color:%23275DC9" offset="1"></stop>%0A</linearGradient>%0A<linearGradient y2="0" x2="1" y1="0" x1="0" gradientUnits="userSpaceOnUse" id="SVGID_2_">%0A%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09<stop style="stop-color:%23529BF7" offset="1"></stop>%0A</linearGradient>%0A<linearGradient y2="0" x2="1" y1="0" x1="0" gradientUnits="userSpaceOnUse" id="SVGID_3_">%0A%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09<stop style="stop-color:%23EBF0F7" offset="1"></stop>%0A</linearGradient>%0A<g>%0A%09<linearGradient y2="3014.9536" x2="4941.2124" y1="3014.9536" x1="1288.5804" gradientUnits="userSpaceOnUse" id="SVGID_4_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23EBF0F7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M1288.6,2793.9c55.3,134.1,186.5,387.6,453.7,503.3c220.8,95.6,442.9,57.4,694.7,14.2%0A%09%09c343.1-59,344.3-140.4,552.9-134.7c282.5,7.8,357.3,159.3,673.4,219.7c66.5,12.7,309.6,47.5,574.2-28.4%0A%09%09c360.6-103.4,734.8-407.2,701.8-560C4895.4,2605.9,4103.5,2505.3,1288.6,2793.9z" class="st0"></path>%0A%09<linearGradient y2="1994.5433" x2="5456.5684" y1="1994.5433" x1="686.3356" gradientUnits="userSpaceOnUse" id="SVGID_5_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23529BF7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M5428.3,1649.1c-131.4-612.4-697.6-977.3-1155.4-1020.7c-232.1-22-245.1,56.7-616.7,117%0A%09%09c-821.7,133.2-1081-199.5-1850.1-85.1c-341.2,50.8-687.6,102.3-914.4,382.8C519.9,1502.7,718.2,2270,973.9,2621.3%0A%09%09c165.2,227,392.7,363.9,392.7,363.9c68.9,41.5,168.6,100.4,304.8,131.1c237.9,53.7,359.9-29.9,560-42.5%0A%09%09c342.7-21.6,401.6,197.2,772.6,276.4c190.7,40.7,257.4,0.5,1084.5-212.6c811.7-209.1,858.2-198.9,974.7-297.7%0A%09%09C5379.4,2571.8,5521.7,2084.7,5428.3,1649.1z M2709.5,2042.7v-2.7V2042.7z" class="st1"></path>%0A%09<linearGradient y2="1859.5726" x2="5227.9292" y1="1859.5726" x1="1116.5316" gradientUnits="userSpaceOnUse" id="SVGID_6_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23EBF0F7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M5148.1,1664.4c-146.3-421.8-552.5-838.3-943.2-819c-297.4,14.6-412.5,273.3-678.4,215.1%0A%09%09c-227.7-49.8-217.9-255.8-471.6-405.4c-401.7-236.8-1083-107.4-1265.9,223.4c-99.3,179.7-11.7,346.7-173.7,521.2%0A%09%09c-113.5,122.3-192.5,78.9-314.4,198.6c-154.9,152-219.8,410.7-165.5,645.3c73.8,318.7,366.8,477.2,388.9,488.1%0A%09%09c827.4,146.2,1654.7,292.3,2482.1,438.5c80.8,13.1,529.4,77.9,879.7-216.7C5295.8,2609,5272.6,2023.2,5148.1,1664.4z%0A%09%09 M2709.5,2042.7v-2.7V2042.7z" class="st2"></path>%0A%09<path d="M5224.3,2042.5c-143.7-88.6-413.9-68.2-740.1-95.9c-488.7-41.5-1188.7,312.8-1437,221.4%0A%09%09c-95.1-35-167.4-141.7-220.4-260v1053.6c291.4,51.5,582.8,103,874.2,154.4l1292.2-269.1C5190,2615.6,5243.4,2314,5224.3,2042.5z" class="st3"></path>%0A%09<linearGradient y2="1741.7239" x2="2757.678" y1="1741.7239" x1="1116.5317" gradientUnits="userSpaceOnUse" id="SVGID_7_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23529BF7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M1789.1,878.4c-99.3,179.7-11.7,346.7-173.7,521.2c-113.5,122.3-192.5,78.9-314.4,198.6%0A%09%09c-154.9,152-219.8,410.7-165.5,645.3c73.8,318.7,366.8,477.2,388.9,488.1c411.1,72.6,822.2,145.3,1233.4,217.9V550.2%0A%09%09C2377.7,484.9,1931.7,620.4,1789.1,878.4z M2709.5,2042.7v-2.7V2042.7z" class="st4"></path>%0A%09<linearGradient y2="1215.4698" x2="2649.5779" y1="1215.4698" x1="1137.9542" gradientUnits="userSpaceOnUse" id="SVGID_8_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23EBF0F7" offset="1"></stop>%0A%09</linearGradient>%0A%09<path d="M1789.1,878.4c-99.4,179.7-11.7,346.7-173.7,521.2c-113.6,122.3-192.5,78.9-314.4,198.6%0A%09%09c-79.1,77.6-134.7,183-163,298.8c82.9-108.4,187.6-189.5,319.3-210.4c445.6-70.8,892.8,45.1,1192.3-113.7V537.1%0A%09%09C2296.9,511.3,1918.4,644.5,1789.1,878.4z" class="st5"></path>%0A%09<polygon points="1937.1,644.5 1937.1,2265.3 1979.7,2269.9 1983,640.9" class="st6"></polygon>%0A%09<path d="M2757.7,550.2c-35.6-6.1-71.7-10.5-108.1-13.1v1035.7c38.6-20.4,74.7-45.4,108.1-76V550.2z" class="st7"></path>%0A%09<path d="M1117.4,850.5c-15.5,9-30.8,18.5-45.8,28.5v1689.5l42.6,5.1L1117.4,850.5z" class="st6"></path>%0A%09<path d="M2826.8,564.5c-22.7-5.5-45.8-10.3-69.1-14.3v2399.3c23,4.1,46.1,8.1,69.1,12.2V564.5z" class="st8"></path>%0A%09<g>%0A%09%09<path d="M1121,2361c0,0-98.3-110.7,84.2-222.1c-25.3,43.4-118,92.3-52.4,202.9%0A%09%09%09c27.1,62.9-12.8,89.7-12.8,89.7S1080.6,2436.5,1121,2361z" class="Graphic_x0020_Style_x0020_116"></path>%0A%09%09<g>%0A%09%09%09<path d="M1282.2,2470.4c-15.5,28.9-215.1,26.5-315.7,23.4c-1.1-4.4-2.1-8.7-3.1-13c-1.8-7.8-3.5-15.5-5-23.2%0A%09%09%09%09C1035.2,2452.4,1299.9,2437.2,1282.2,2470.4z" class="st9"></path>%0A%09%09%09<path d="M1282.2,2470.4l-16.7,216.9c-25.9,39.1-25.5,89.5-36,137.5c-4.3,22.7-20.4,30.2-38.6,29.2%0A%09%09%09%09c-39.4-34.1-82.1-74.2-124.2-119.9c-50-80.3-81.3-162.6-100.3-240.3C1067.1,2496.9,1266.7,2499.4,1282.2,2470.4z" class="st9"></path>%0A%09%09</g>%0A%09%09<g>%0A%09%09%09<path d="M1331.3,2151c12.7,12.2,30.7,16,43,17c5.5-2.7,11.1-5.7,16.6-8.9c24.3-13.9,39.8-38.8,49.7-66.7%0A%09%09%09%09c-16.1,5.8-51.8,17.4-67.4,11.2c-20.4-8.1-12.5-17.1-3-14.1c11.7,6,55.7-6.5,75.3-12.5c4.1-14.9,6.8-30.2,8.6-44.8%0A%09%09%09%09c-13.9,8.3-34.9,15.8-44.4,12.6c-12.3-4.2-7.4-14.4,2.7-13.2c7.4,0.8,31.4-12,43.6-18.8c2.2-29.7,0.8-53.4,0.4-59.6%0A%09%09%09%09c-0.1-1-0.1-1.6-0.1-1.6s-29-8.6-66.9-14.1c-8,8.1-19.9,20.8-24.9,29.3c-8,13.3-11.7,24.3-18.1,22.2%0A%09%09%09%09c-12.7-6.6,13.3-37.6,27.8-53.4c-16.5-1.8-34.1-2.9-51.4-2.3c-51.5,40.6-24.5,76.1-44.7,71.8c-17.5-3.7,13.5-51.5,26.6-70.5%0A%09%09%09%09c-16.3,1.8-31.9,5.4-45.3,11.6c-12.1,6.2-22.8,12.2-32.4,18.1c-14.5,34.4,20,53.7,1.7,57.9c-14.3,3.3-16.2-30.4-16.2-48.5%0A%09%09%09%09c-124.9,86.7,2.8,144.8,2.8,144.8c0.1,0.5,0.2,1,0.3,1.6c11.4,70.5,70.1,82,134.6,58.3c-10-8-28.1-22.8-31-26.1%0A%09%09%09%09C1315,2147.7,1321.1,2139.9,1331.3,2151z" class="st10"></path>%0A%09%09%09<path d="M1433.5,1969.4c0,0-146,112.4-218.2,149.3" class="st11"></path>%0A%09%09%09<path d="M1396.4,2051c0,0-33.9,4.5-68.8-3.9" class="st11"></path>%0A%09%09%09<path d="M1316.2,1996.6c0,0-20.5,49.4-10.8,65.9" class="st11"></path>%0A%09%09%09<path d="M1352,2122.6c0,0-59.6-20.8-79-38.4" class="st11"></path>%0A%09%09%09<path d="M1216.4,2052.4c0,0-4.7,37.9,18.4,55.6" class="st11"></path>%0A%09%09</g>%0A%09%09<g>%0A%09%09%09<path d="M882.7,2066.4c10.6,1.3,21,2.9,31.1,4.8c13.6,13.1,30.4,35.2,30.3,62.7c-1.8,23.8,15.4,19.7,16.3,10%0A%09%09%09%09c0.7-7-2.6-43-4.5-62.6c108.1,32.2,164.1,103.7,86.8,204.4c0,0,80.5,195.4-178.5,184.8c22.7-22.7,62.8-66.9,41.4-76.4%0A%09%09%09%09c-27.3-12.2-10,45.1-70.7,74.5c-19-1.7-39.5-4.4-61.7-8.2c-24-5.1-47.2-15.4-69.1-28.8c39.7-11.4,137-41.9,120.6-63.3%0A%09%09%09%09c-18.9-24.6-31,45.8-143.9,47.6c-21.5-15.8-41.4-33.9-58.9-52.1c37.3-6,107.4-20.1,100.5-40.6c-5.2-8.8-23.3,1.5-49.6,10.6%0A%09%09%09%09c-16.7,5.7-46.9,10.3-66.7,12.9c-38.7-43.2-62.7-81.8-62.7-81.8s30.7-35.6,77.3-76.8c23.3,3.1,68.1,9.9,76,18.1%0A%09%09%09%09c10.7,11.2,29.3,3.1,19.9-14.1c-7.3-13.2-42.1-23.8-69.1-26.7c20.4-16.6,42.9-33.2,66.6-48c31,11.1,99.6,37.5,106.2,56.3%0A%09%09%09%09c7.6,12.8,28.5,9,14.2-20.6c-10.9-22.7-68.4-42.4-95-50.5C786.1,2077.1,836.1,2060.7,882.7,2066.4z" class="st12"></path>%0A%09%09%09<path d="M593.2,2264.5c0,0,316.6-1.6,449.7,21.1" class="st13"></path>%0A%09%09%09<path d="M740.2,2197.3c0,0,46.4,26.9,77.7,70.8" class="st13"></path>%0A%09%09%09<path d="M768.3,2342.5c0,0,86.7-42.5,95.7-72.6" class="st13"></path>%0A%09%09%09<path d="M883.4,2149.7c0,0,45.4,83.2,46.7,123.9" class="st13"></path>%0A%09%09%09<path d="M958.3,2368c0,0,53.3-43.2,47.7-87.5" class="st13"></path>%0A%09%09</g>%0A%09%09<g>%0A%09%09%09<path d="M924,1810c7.6,5.4,14.9,11,21.8,16.7c4.5,17.1,7.4,43.4-5.2,67.8c-12.3,20.5,2.9,23.7,8,15.4%0A%09%09%09%09c3.7-5.9,17.7-39.3,25.2-57.5c68.8,71.8,79.4,157.7-26.4,216.5c0,0-27.1,205.9-222.4,93.1c27.9-11.1,79.1-34.4,67-51.4%0A%09%09%09%09c-15.5-21.8-28.3,36.1-88.6,38c-13.9-9.1-28.5-19.7-43.9-32c-16.2-14.1-29.4-32.6-40.2-53.2c35.9,5.7,125,17.5,122.1-8.1%0A%09%09%09%09c-3.3-29.5-44.9,28.3-132.9-15.1c-9.4-22.6-16.5-46.7-21.7-69.8c31.6,9.6,92.2,25,96.2,4c0-9.9-18.7-8-43.2-10.4%0A%09%09%09%09c-15.5-1.6-41-9.5-57.5-15.1c-10.2-53.9-11.1-97.8-11.1-97.8s40-19.4,94.8-37.4c16.6,12,48.1,36,50.4,46.4%0A%09%09%09%09c3.2,14.2,21.3,14.5,21.8-4.6c0.4-14.7-21.6-38-41.2-51.3c23.4-6.6,48.4-12.4,73.4-16.1c18.9,22.3,59.8,73.1,56.3,92.5%0A%09%09%09%09c0,14.5,17.9,19.4,20.4-12.7c1.9-24.5-33.5-65-50.3-82.8C844.5,1781,890.6,1786.3,924,1810z" class="st10"></path>%0A%09%09%09<path d="M609.7,1870.6c0,0,245.3,125,337.8,198.4" class="st11"></path>%0A%09%09%09<path d="M754.1,1869.5c0,0,23.6,42.4,27.7,94" class="st11"></path>%0A%09%09%09<path d="M709.4,2009.9c0,0,86.4-3.2,107.1-26.3" class="st11"></path>%0A%09%09%09<path d="M886.5,1884.4c0,0-2.9,92.1-20.5,128.9" class="st11"></path>%0A%09%09%09<path d="M844.5,2108.4c0,0,60.9-17.2,76.8-58.8" class="st11"></path>%0A%09%09</g>%0A%09%09<g>%0A%09%09%09<path d="M1245.1,1794.2c20.8-5.3,34.8-21,42.5-32.8c-0.2-7.2-0.7-14.6-1.4-22.1c-3.2-32.9-23.8-63.7-50.7-90.6%0A%09%09%09%09c-1.8,19.7-7.4,62.7-22.8,74.5c-20.1,15.5-26.4,2-17.9-5.6c13.2-8.1,22.1-59.9,25.4-83.2c-15-13.2-31.3-25.3-47.2-36%0A%09%09%09%09c2.2,19-0.2,44.7-9,52.2c-11.4,9.8-20.6-1.3-13.9-10.8c4.9-7,2.8-38.8,1.4-55.2c-33.1-20.3-61.3-33.5-68.7-36.8%0A%09%09%09%09c-1.2-0.6-1.9-0.9-1.9-0.9s-25.3,23.8-51.7,58.6c5.2,13,13.5,32.7,20.6,42.9c11.1,16.1,21.9,26.5,16,31.7%0A%09%09%09%09c-14.4,8.7-36.4-36.3-47-60.5c-10.9,15.5-21.4,32.5-29.9,50.2c19.7,76.5,74.9,71.1,59.3,88.7c-13.5,15.3-52.4-45-67.4-69.8%0A%09%09%09%09c-6.6,17.5-10.6,35.3-10.6,52.6c0.7,15.9,2,30.4,3.8,43.6c32.1,35.6,72.7,12.7,67.8,33.6c-3.8,16.4-43.7-2.3-64.6-13.4%0A%09%09%09%09c33.9,178.4,168.8,85.6,168.8,85.6c0.7,0.2,1.3,0.5,2,0.7c87.5,31.6,132-20.3,138.8-99.5c-14.6,5.1-41.3,14.3-46.7,15.2%0A%09%09%09%09C1232.6,1808.5,1226.7,1797.5,1245.1,1794.2z" class="st10"></path>%0A%09%09%09<path d="M1089.2,1580.6c0,0,52.5,215.2,56.8,310.2" class="st11"></path>%0A%09%09%09<path d="M1164,1667.7c0,0-12.8,36.8-41,66.6" class="st11"></path>%0A%09%09%09<path d="M1058.6,1715c0,0,46.2,50.8,70.4,51.1" class="st11"></path>%0A%09%09%09<path d="M1223.1,1755.9c0,0-55.6,47.1-86.3,55.9" class="st11"></path>%0A%09%09%09<path d="M1070,1849.3c0,0,41.4,27.9,74,15.4" class="st11"></path>%0A%09%09</g>%0A%09%09<path d="M1146.1,1890.8c0,0,14.8,158.8-25,350.6" class="st14"></path>%0A%09%09<path d="M937.7,2061.4c0,0,170.2,50.3,183.3,183.5" class="st14"></path>%0A%09%09<path d="M1029.4,2285.6c13.6-4.9,80.6-4.6,99.5,8.8" class="st14"></path>%0A%09%09<path d="M1223.3,2114.4c0,0-98.3,30.9-77.3,232.1" class="st14"></path>%0A%09</g>%0A%09<g>%0A%09%09<path d="M2812.2,2216.6c0,0,60.8,180.6,68.3,350.2c-193.8,44.1-832.8-6.2-832.8-6.2%0A%09%09%09s14-297.1,80.4-332.6C2416.5,2250.4,2812.2,2216.6,2812.2,2216.6z" class="Graphic_x0020_Style_x0020_110"></path>%0A%09%09<path d="M2880.5,2566.9c-7.5-169.6-68.3-350.2-68.3-350.2s-395.8,33.8-684.1,11.4%0A%09%09%09c-17.2,9.2-30.9,36-41.7,70.6c61.5,25.5,298.6,104,672.8-9.3c-4.1,90.6,73.5,94.8,73.5,94.8c12.1,42.2,11.5,131.9,9.7,189.5%0A%09%09%09C2856.4,2571.7,2869.2,2569.4,2880.5,2566.9z" class="Graphic_x0020_Style_x0020_116"></path>%0A%09%09<path d="M2025.5,1497.7c-85.5,55.5-169,100.9-241.9,164.1c7.6,4.2,13.3,9.3,16.2,15.7%0A%09%09%09c0,0,180.9-97,314-235c-1,0.6-1.9,1.2-2.9,1.8C2081.6,1463,2054.9,1479,2025.5,1497.7z" class="Graphic_x0020_Style_x0020_120"></path>%0A%09%09<path d="M2229.4,1095.4c-25.7-0.9-176.5,78.1-272.1,168.2c-95.6,90.1-340.3,323.9-337.5,369.2%0A%09%09%09c19.6,10.4,121.7,5.7,163.9,29c72.9-63.1,156.4-108.6,241.9-164.1c29.4-18.7,56.1-34.7,85.5-53.4c0.9-0.7,1.9-1.2,2.9-1.8%0A%09%09%09c13.7-14.2,26.8-28.8,39.2-43.8C2153.1,1398.7,2255.2,1096.3,2229.4,1095.4z" class="st15"></path>%0A%09%09<path d="M2771.6,1674.1c-70.5,28.9-142.4,50.7-222.4,50.7c-37.4,0-80.1,18.7-104.2,53.4%0A%09%09%09c-61.4,98.9-133.6,184.3-232.4,229.8c-32.1,14.6-74.5,15.6-110.7,1.8c-16.7,87.9-31.4,153-31.4,153s68.3,148.9,349.6,142.7%0A%09%09%09c281.3-6.2,397.1-37.2,407.5-93.1C2841.2,2157.3,2787.4,1837.7,2771.6,1674.1z M2709.5,2042.7v-2.7V2042.7z" class="Graphic_x0020_Style_x0020_120"></path>%0A%09%09<path d="M2767.4,1598.2c4.1-101.3,24.8-260.6-97.2-366.1c-122-105.5-384.9-173.4-473.5-126.7l-76.5,292.8%0A%09%09%09c11.8,55.4,25.9,140.8,27.6,239.6c1.7,97.6-23.8,254.9-46,372c36.3,13.8,78.6,12.7,110.7-1.8c98.9-45.4,171-130.9,232.4-229.8%0A%09%09%09c24-34.7,66.8-53.4,104.2-53.4c80,0,151.9-21.8,222.4-50.7C2768.4,1641.5,2766.7,1615.1,2767.4,1598.2z" class="st15"></path>%0A%09%09<path d="M2357.9,1064.1c0,0-9-52.4-22.1-33.8c-13.1,18.6-10.3,92.4,9,98.6" class="st16"></path>%0A%09%09<path d="M2626.6,1195.8c5.3-16-5.3-34.7-24-34.7c-74.8,5.3-155,13.4-224.4-18.7c-23.9-11-31.4-34.7-32.8-58.9%0A%09%09%09c-12.4,46.4-71.3,284.2,13.2,332.7c71.4,40.9,184.3-8.4,256.1-105.5C2581,1285.5,2613.8,1234.5,2626.6,1195.8z" class="st16"></path>%0A%09%09<path d="M2517.2,949.8c-125.5-23.1-169.6,125.8-169.6,125.8s-0.8,2.8-2.2,7.9%0A%09%09%09c1.4,24.2,8.9,47.9,32.8,58.9c69.5,32.1,149.6,24,224.4,18.7c18.7,0,29.4,18.7,24,34.7c-12.9,38.6-45.6,89.7-12,114.9%0A%09%09%09c22.5-30.4,41-65.6,52.8-104.1C2717.1,1045.3,2621.6,969,2517.2,949.8z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M2650.9,1208c2.1-1.4,41.5-29.8,53.8,4.1c10.6,31.7-40.8,91.7-77.6,80.7l-7.2-3.4" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M2641.7,1253.5c0,0,22.4-60.7,39.3-38c16.9,22.7-50.4,66.6-53,66.6C2625.5,1282,2641.7,1253.5,2641.7,1253.5%0A%09%09%09z" class="st16"></path>%0A%09%09<path d="M2695.3,1256.7L2573,1608.5c0,0-4.1,73.6,8.3,89.5c-74.5,98.7-223.4,363.4-223.4,363.4%0A%09%09%09c93.1,24.8,111.9,120,92.1,155.1c108.5-97.2,400.1-407.5,406.4-575C2879.1,1534.1,2854.6,1361.8,2695.3,1256.7z" class="st15"></path>%0A%09%09<path d="M2837.6,1430.3c30.9,169.9,7.7,183.1-75,353.6%0A%09%09%09c-61.7,127.1-230.6,287.4-312.6,360.9c9.9,28.2,8.9,56.1,0,71.9c108.5-97.2,400.1-407.5,406.4-575%0A%09%09%09C2868.7,1583.2,2867.1,1505.7,2837.6,1430.3z" class="Graphic_x0020_Style_x0020_114"></path>%0A%09%09<path d="M2680.8,1197.5c-6.7,0-12.5,1.5-17.3,3.9c-21.5,10.5-26.4,38.8-26.4,38.8s-8.9,23.1-16.3,12.6%0A%09%09%09c-0.8-1.2-1.6-2.7-2.3-4.8c18.6-24.8,18.6-85.5,11.7-103.4c-6.9-17.9-99.3,26.2-212.3-13.8c-68.9-29.9-68.1-84.2-59.4-118%0A%09%09%09c4.5-17.6,11.1-29.6,11.1-29.6c8.7-20.6,14.7-76,34.2-70.3c40.6,11.7,106.8-29.1,164.9-24.4c49.8,4.1,97.3,36.1,128.3,67.6%0A%09%09%09c18.2,18.5,30.7,36.8,34.4,49.1C2741.5,1038.4,2700.5,1163.4,2680.8,1197.5z" class="st17"></path>%0A%09%09<path d="M2759.2,2289.4c0,0-18.6,62.6,23.2,86c41.8,23.4,50.2,8.7,50.2,8.7S2751.6,2373.8,2759.2,2289.4z" class="st9"></path>%0A%09%09<path d="M1712.9,1890.5c-52.6-85.2-72.3-184.5-63.6-284.7c-5.7,3.2-11.6,6.9-17.5,11%0A%09%09%09c0,0-40.7,64.1,46.2,255.8c-60.7,57.2-63.2,76.8-57.8,148.5c3.8,6,7.7,11.4,11.8,16.3C1628.4,1981.4,1663.8,1922.1,1712.9,1890.5z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M1827.7,1946.4c-2.8-88.2-44.1-69.6-38.6-133.1c5.5-63.4,12.4-109.6,15.9-150.3%0A%09%09%09c3.3-38.4-60.9-110.4-155.6-57.2c-8.8,100.2,10.9,199.5,63.6,284.7c-49.2,31.6-84.5,91-80.9,146.9c42.1,50.6,95,40.7,95,40.7%0A%09%09%09s40.7-51,44.8-68.3c11.7,0.7-32.4,71-32.4,71s7.6,14.2,24.1,13C1780.1,2092.5,1830.4,2034.6,1827.7,1946.4z" class="st16"></path>%0A%09%09<path d="M1679.1,1995l-15.9,55.8c0,0,23.8-50.3,29.3-72C1698.1,1957.1,1679.1,1995,1679.1,1995z" class="st18"></path>%0A%09%09<path d="M1719.7,2081.7c0.5-1.4,56.1-102.4,65.3-88.7c9.2,13.7-42,92.4-42,92.4s-5.3,3.1-3.5-4.7%0A%09%09%09c1.8-7.8,42.7-68.9,35.4-68.5c-7.4,0.5-44.1,60.7-47.8,65.7S1719.7,2081.7,1719.7,2081.7z" class="st18"></path>%0A%09%09<path d="M1686.9,2067.8c0,0,33.5-83.7,43.3-79.9c9.8,3.9-39.4,83.3-39.4,83.3L1686.9,2067.8z" class="st18"></path>%0A%09%09<path d="M1653.4,1961.3c0,0-15.7,62.3-15.2,75C1645.6,2045.3,1657.7,1960.6,1653.4,1961.3z" class="st18"></path>%0A%09%09<path d="M1761.8,2227.6c-54.2-19.3-110.3-23.2-166.4-38.7c-0.1,0-0.2-0.1-0.3-0.1c8.4,8.6,16.7,17.2,25.1,25.7%0A%09%09%09c53.2,60.7,288.8,91.2,288.8,91.2s-10.9-9.9-72.5-89.2c-8.1,3.7-16.2,7.5-24.4,11.1C1796.6,2235.3,1777.3,2233.4,1761.8,2227.6z" class="st19"></path>%0A%09%09<path d="M1267.8,1860.2c0,0,164.6,162.1,327.3,328.6c0.1,0,0.2,0.1,0.3,0.1c56.1,15.5,112.2,19.3,166.4,38.7%0A%09%09%09c15.5,5.8,34.8,7.7,50.3,0c8.2-3.6,16.4-7.4,24.4-11.1c-33.8-43.5-82.8-108-153.6-203.3%0A%09%09%09C1514.7,2038.1,1267.8,1860.2,1267.8,1860.2z" class="st20"></path>%0A%09%09<path d="M1894.6,2339.3c-53.4,8-106.9,10.7-163-2.7c-19-4.7-34.6-13.9-48.5-25.2%0A%09%09%09c15.8,36.7,102.7,87.4,133.9,82.8c31.7-4.6,303.8-96.5,339.7-99.3c35.9-2.8,272.6-59.4,293.2-78.4c6.2-5.7,10.6-21.4,10.5-40.6%0A%09%09%09c-161,58-322,87.3-483.1,141.9C1950.7,2325.9,1921.3,2334,1894.6,2339.3z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M2357.9,2061.5c-149.6,34-453,200.5-549.1,192.3c0,0-60.2,7.5-96.1-8.3c-35.9-15.8-83.7-37.4-96.5-28.9%0A%09%09%09c-10.2,6.8,29.5,56.4,52.7,80.6c6,6.2,10.8,10.8,13.5,12.5c0.2,0.6,0.5,1.1,0.7,1.7c13.9,11.3,29.5,20.5,48.5,25.2%0A%09%09%09c56.1,13.4,109.5,10.7,163,2.7c26.7-5.3,56.1-13.4,82.8-21.4c161-54.5,322-83.8,483.1-141.9%0A%09%09%09C2460.3,2131.9,2436.5,2068.5,2357.9,2061.5z" class="st16"></path>%0A%09</g>%0A%09<path d="M5147.8,2758.7c3.3,42.6-104.8,129-220.1,160.2c-111.1,40.4-316.5,84.1-839.1,218.8%0A%09%09c-356.5,91.9-571.8,151.6-716.6,186.6c-191.1,46.2-259.5,49.2-368,26c-51.4-11-96.9-24.7-137.9-40%0A%09%09c-255-95.3-339.6-255.1-634.7-236.4c-200.1,12.7-322,96.2-560,42.5c-136.3-30.7-235.9-89.6-304.8-131.1%0A%09%09c0,0-186.3-112.1-344.2-301.7c-39.9-42.2-73.3-85.6-94.5-130.9l1061.8-81.6L5147.8,2758.7z" class="Graphic_x0020_Style_x0020_118"></path>%0A%09<polygon points="1909,2627.9 2329.7,2696.9 2880.5,2648.9 2839.9,2636 1902.2,2607.7 1873.4,2616.7" class="st21"></polygon>%0A%09<path d="M2902.4,2554.2c0,0,128.1,29.9,198.1,36.5c16.9,26,103.7,26.1,139.2,31.4c35.5,5.3,64.9,60.1,137.9,65%0A%09%09c73,4.9,88.9,32.2,118.2,30.1c29.2-2.1,39.1-54.7,49.7-59.9c10.6-5.2-32-38.9-10.7-45.5C3396.5,2597.2,2902.4,2554.2,2902.4,2554.2%0A%09%09z" class="st21"></path>%0A%09<path d="M3668.6,2761.4c39.6,3,90.3-36.8,169.2-23.5c88.5,14.9,307.2,32.5,354.3-1.4%0A%09%09c61.3,3.3,696.2,65.4,749.1,44.1c52.9-21.3,68-34.5,68-34.5l-1182-107.2c0,0-299.4,44.5-286.7,84.2%0A%09%09C3547.2,2749,3629,2758.4,3668.6,2761.4z" class="Graphic_x0020_Style_x0020_117"></path>%0A%09<path d="M3779.6,3218.3c-115.9-48.9-340.1-136.6-484.1-148c-201.1-15.9-340.3-109.9-337.2-157.7%0A%09%09c3.1-47.8-605.8-113-946.8-126.3c-204.7-8-676.2-112.3-330.9-291.5l-79,6.1c-81.3,57.9-200.4,165.5-77.3,230.8%0A%09%09c174.8,92.7,1373.9,95.9,1387.8,212c13.2,110.3,575.5,195.9,765.9,301.5C3710,3236.7,3743.7,3227.7,3779.6,3218.3z" class="st22"></path>%0A%09<g>%0A%09%09<path d="M4484.2,1461.7v1181h488.7v-1181H4484.2z M4939.2,2561.4h-421.4v-539.8h421.4%0A%09%09%09V2561.4z M4939.2,1982.4h-421.4v-485.5h421.4V1982.4z" class="Graphic_x0020_Style_x0020_107"></path>%0A%09%09<rect height="485.5" width="355.8" class="Graphic_x0020_Style_x0020_118" y="1496.9" x="4583.5"></rect>%0A%09%09<rect height="485.5" width="65.6" class="Graphic_x0020_Style_x0020_119" y="1496.9" x="4517.8"></rect>%0A%09%09<rect height="539.8" width="80.1" class="Graphic_x0020_Style_x0020_119" y="2021.5" x="4517.8"></rect>%0A%09%09<rect height="539.8" width="341.3" class="Graphic_x0020_Style_x0020_118" y="2021.5" x="4597.9"></rect>%0A%09%09<polygon points="5067.7,1559.5 4972.9,1461.7 4975.8,2765.4 5070.3,2765.4" class="Graphic_x0020_Style_x0020_110"></polygon>%0A%09</g>%0A%09<g>%0A%09%09<polyline points="2442.7,2752.3 2386.8,2825.9 2352.6,2827.7 2416.8,2743.1 2832.6,2738.3 %0A%09%09%092839.9,2747.7" class="Graphic_x0020_Style_x0020_117"></polyline>%0A%09%09<polygon points="2832.6,2738.3 2416.8,2743.1 2352.6,2827.7 2134.5,2839.2 2105.5,2724.6 %0A%09%09%092798.5,2694.4" class="Graphic_x0020_Style_x0020_117"></polygon>%0A%09%09<polygon points="3202.8,2854.8 2364.9,2854.8 2386.8,2825.9 2442.7,2752.3 2839.9,2747.7 %0A%09%09%093134.1,2744.3" class="Graphic_x0020_Style_x0020_117"></polygon>%0A%09%09<polygon points="2839.5,2730.9 2805.3,2687.1 2112.4,2717.2 2141.4,2831.8 2359.4,2820.3 %0A%09%09%092393.7,2818.5 2449.6,2745 2846.8,2740.3" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09%09<polygon points="3202.8,2848.8 2364.9,2848.8 2386.8,2819.9 2442.7,2746.3 2839.9,2741.7 %0A%09%09%093134.1,2738.3" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09</g>%0A%09<g>%0A%09%09<path d="M3326.7,2053.5c67.2,11.8,127,45.4,188.5,75.5c-25.6-21.6-54.4-38-66.9-44.7c-69.9-65-238.4-55.8-331.3-54.5%0A%09%09%09c-56.7,0.8-107.4,28.8-147.4,65.5C3076.9,2034.1,3204.5,2033.1,3326.7,2053.5z" class="st23"></path>%0A%09%09<path d="M3390.7,2125.6c29.4,10.7,40.1,48.1,64.1,69.5c33.5,30.3,76.4,36.8,117.6,27.5c-4-13-8.3-25.7-12.8-37.7%0A%09%09%09c-7.5-20.2-25.1-39.4-44.4-55.7c-61.4-30.2-121.3-63.8-188.5-75.5c-6.7-1.1-13.5-2.2-20.2-3.1c2.5,4.5,4.8,9.1,6.8,13.8%0A%09%09%09c6.9,18.8,10.9,38,12.4,57.2C3347.5,2119.7,3369.7,2120.3,3390.7,2125.6z" class="st23"></path>%0A%09%09<path d="M3454.8,2195c-24-21.4-34.7-58.8-64.1-69.5c-21.1-5.3-43.3-5.9-65.1-4.2c6.4,84.5-36.4,169.9-95.2,228.6%0A%09%09%09c-29.4,32.1-61.4,58.8-101.5,82.8c-32.1,21.4-66.8,37.4-101.5,53.4c-41.6,14.5-81.5,4.8-119.8-10.2c3.7,32.6,11.1,70.7,27.1,85.4%0A%09%09%09c2.2,2,149.9,56.5,246.1,29.3c130.3-36.9,227.4-163.5,314.2-210.2c10.9-5.9,21.4-12.4,31.4-19.5l-0.4-14l53.6-33.2%0A%09%09%09c3.8-4.2,7.6-8.5,11.2-12.9c-4.1-26.8-10.7-53.3-18.4-78.3C3531.3,2231.8,3488.3,2225.3,3454.8,2195z" class="st24"></path>%0A%09%09<path d="M2963.9,2113.7l-74.4,244.3c3.2,19.6,7.7,41,13.7,64.4c0.8-0.5,1.1,24.3,4.3,53.6%0A%09%09%09c38.3,15.1,78.3,24.8,119.8,10.2c34.7-16,69.5-32.1,101.5-53.4c40.1-24,72.1-50.8,101.5-82.8c65-65,110.5-162.6,91.4-255.6%0A%09%09%09C3210,2135.2,3083,2108.6,2963.9,2113.7z" class="st25"></path>%0A%09%09<path d="M3321.8,2094.4c-2.1-10.2-4.9-20.2-8.6-30.2c-2-4.6-4.2-9.2-6.8-13.8c-116-16.9-235.4-12.9-336.9,44.9%0A%09%09%09l-5.6,18.4C3083,2108.6,3210,2135.2,3321.8,2094.4z" class="st26"></path>%0A%09%09<path d="M3590.8,2300.8c-3.6,4.4-7.4,8.7-11.2,12.9l12-7.5C3591.4,2304.4,3591.1,2302.6,3590.8,2300.8z" class="st9"></path>%0A%09%09<g>%0A%09%09%09<path d="M3452.4,2090.3c-50.3-112.2-85.1-243.7-193.4-309.5c-17.4-9.7-50.3-13.5-71.6,3.9%0A%09%09%09%09c-34.5,27-36.4,68-35.6,109.5c51.1,42.2,96.7,74.2,118.4,75.2c65,3,117,150.1,192.8,215.4c35.5,30.6,78.2,23.7,113.6,7.7%0A%09%09%09%09c-19.8-3.7-39.3-11.4-54.6-19C3487.2,2158,3467.9,2123.1,3452.4,2090.3z" class="Graphic_x0020_Style_x0020_116"></path>%0A%09%09%09<path d="M3489,1994.5c-13.8-96.5-49-197.2-111.1-242.1c-62.1-44.9-38.1-160-114.8-199.7%0A%09%09%09%09c-190.3-102-287.5,4.8-333,55.2c-45.5,50.3-4.1,77.2-4.1,77.2s123.9,124.8,225.9,209c-0.9-41.4,1-82.4,35.6-109.5%0A%09%09%09%09c21.3-17.4,54.2-13.5,71.6-3.9c108.3,65.8,143.1,197.3,193.4,309.5c15.5,32.9,34.8,67.7,69.6,83.2c15.3,7.7,34.8,15.3,54.6,19%0A%09%09%09%09c40.3-18.2,71.2-48.2,71.2-48.2S3502.8,2091.1,3489,1994.5z" class="Graphic_x0020_Style_x0020_108"></path>%0A%09%09%09<path d="M3182.3,2144.3c-13.4-74.8,34.7-189.7-58.8-221.7c-16-61.4,5.3-128.2-37.4-184.3%0A%09%09%09%09c-33.7-46.4-75.8-81.1-127.5-97.6c-15.4,4-42.2,14-46.3,24.6c-13.8,35.6-24.4,108.3-3.6,195.1c19.9,94,53.6,191.2,151.7,162.7%0A%09%09%09%09c51,68.9,51,103.4,48.3,128.2c25.3,30.5,60,37.2,94.1,32.1C3192.8,2173.6,3185.5,2160.8,3182.3,2144.3z" class="st16"></path>%0A%09%09%09<path d="M3314.2,2124.9c-5.5-129.6-75.8-207-93.8-211.7c30.3-46.1,33.1-82-6.9-106.8%0A%09%09%09%09c-40-24.8-57.9,67.6-57.9,67.6s-19.3,18-16-3.3c17.7-114.7-62.5-214-170.5-231.9c-1.2-0.2-5.1,0.5-10.4,1.9%0A%09%09%09%09c51.7,16.5,93.8,51.2,127.5,97.6c42.7,56.1,21.4,122.9,37.4,184.3c93.5,32.1,45.4,146.9,58.8,221.7c3.1,16.5,10.5,29.3,20.4,38.9%0A%09%09%09%09C3250.3,2176,3296.5,2145.8,3314.2,2124.9z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09%09<path d="M2969,1635.8c0,0,75.2,27.2,72.4,70.7c-2.8,43.5-9.8,77.5,56.3,98.1c-31.6-35.6-34.2-44-26.9-86.3%0A%09%09%09%09S3035.8,1587.8,2969,1635.8z" class="st17"></path>%0A%09%09%09<path d="M2789.6,2288.5c-77.5,101.5-203,106.9-323.3,128.2c-27.7,5.9-43.7,28.1-64.3,43.4%0A%09%09%09%09c7.2,13.8,19.1,27.9,28,39.8c0.5-0.1,1.1-0.3,1.6-0.4c159.5-16.7,359.4-29.1,470.9-150.7l-0.1-16l61-218.3%0A%09%09%09%09c-27.4,9-56.1,12.8-77.6,32.4C2837.7,2184.3,2824.3,2243.1,2789.6,2288.5z" class="st25"></path>%0A%09%09%09<path d="M3017.4,2050.7c-17.9,4.3-35.5,9.7-52.8,16.1c-58.6,21.8-113.1,55-149.7,106.6%0A%09%09%09%09c-16.4,23.2-29.7,48.3-42.2,73.7c-5.8,11.7-11.7,21.5-19.5,31.9c-8.1,10.8-17.8,20.2-27.8,29.2c-21.9,19.5-47.7,34.4-75.4,44.1%0A%09%09%09%09c-33.1,11.6-67.9,16.1-101.5,25.4c-82.7,23-147.1,41.1-152.6,60.5c-0.2,7,2.3,14.5,6.2,22c20.6-15.4,36.6-37.5,64.3-43.4%0A%09%09%09%09c120.2-21.4,245.8-26.7,323.3-128.2c34.7-45.4,48.1-104.2,96.2-141.6c21.5-19.6,50.2-23.4,77.6-32.4l5.1-18.3%0A%09%09%09%09c11-10.8,16.7-15,29.5-24.1c14.7-10.5,30.5-19.7,47.1-26.7c0.1-0.2,0.2-0.4,0.3-0.6C3036,2046.5,3026.6,2048.4,3017.4,2050.7z" class="st23"></path>%0A%09%09%09<path d="M3045.4,2044.9c-0.1,0.2-0.2,0.4-0.3,0.6c0.7-0.3,1.4-0.6,2.1-0.9%0A%09%09%09%09C3046.6,2044.7,3046,2044.8,3045.4,2044.9z" class="Graphic_x0020_Style_x0020_100"></path>%0A%09%09%09<path d="M2431.6,2499.6c-0.5,0.1-1.1,0.3-1.6,0.4c0.9,1.2,1.8,2.4,2.6,3.6c10.8,15.3,7.8,45,49.1,42.6%0A%09%09%09%09c30.8-6,230-18.7,273.3-29.7c32-8.2,82.2-26.3,148.2-94.1l-0.7-73.5C2791,2470.5,2591.1,2482.9,2431.6,2499.6z" class="st24"></path>%0A%09%09%09<path d="M2398.2,2439.8c0,0,40.7-31.7,69.6,4.1c29,35.9,49.3,96,29,100.7c-20.4,4.6-65.8,2.1-87-35.2%0A%09%09%09%09C2388.5,2472.2,2387.5,2454.3,2398.2,2439.8z" class="st27"></path>%0A%09%09%09<path d="M3350.7,1877.1c18.7-58.6,71.9-104,69.5-165.2c-4.1,1.2-8.2,5.1-10.8,12.5c-7.6,21.4-71.4,103.8-71.4,103.8%0A%09%09%09%09s0,0,3.8-22.1s1.4-35.5-9.7-36.9c-11-1.4-18.3,10.3-18.3,10.3c1-31-13.4-29.3-23.4-27.6c-10,1.7-9.3,51.4-10,64.8%0A%09%09%09%09c-0.7,13.4-15.2,26.9-20-4.1c-2.8-35.9-40.7-71.7-51.7-66.9c-11,4.8,14.8,62,13.1,94.5c-1.7,32.4-20,100.7-5.5,148.2%0A%09%09%09%09c14.5,47.6-3.4,102-3.4,102l85.3,21.2c4.2-67.5,4.5-134.6,44.5-197.1C3350.7,1903.8,3348,1890.5,3350.7,1877.1z" class="st16"></path>%0A%09%09%09<path d="M3420.1,1711.9c2.4,61.2-50.8,106.6-69.5,165.2c-2.7,13.4,0,26.7-8,37.4%0A%09%09%09%09c-40,62.5-40.2,129.7-44.5,197.1l22.9,5.7c0,0-3.5-115.8,17.2-141.3c20.7-25.5,15.2-80,25.3-108.9c10.1-29,71.3-117.9,72-137.2%0A%09%09%09%09C3436,1717.3,3427.9,1709.7,3420.1,1711.9z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09%09<path d="M3305.2,1839.7c-0.4,0.9,11-56.8,9-67.2c4.3,1.6,4.3,1.6,4.3,1.6S3312.8,1824.1,3305.2,1839.7z" class="st9"></path>%0A%09%09%09<g>%0A%09%09%09%09<polygon points="2369.1,2558.8 2880.5,2623.2 2325,2668.2 1891.1,2604.1" class="Graphic_x0020_Style_x0020_115"></polygon>%0A%09%09%09%09<polygon points="2264.3,2566.5 2626.8,2624.8 2334.4,2648.9 2170.4,2611.3" class="Graphic_x0020_Style_x0020_109"></polygon>%0A%09%09%09%09<path d="M2421.8,2452.1c-5.6-0.2-22.6,8.6-22.6,8.6s-13.8-44.1-80.7-43.4s-64.8,65.5-64.8,65.5s5.5,77.2,26.9,93.1%0A%09%09%09%09%09c21.4,15.9,99.3,4.1,102.4,0c3.1-4.1,45.3-6.9,66.9-30.3c21.6-23.4,33.5-24.4,33.5-24.4S2463.5,2453.5,2421.8,2452.1z" class="st16"></path>%0A%09%09%09%09<path d="M2319.3,2460c0,0-45.5,32.4-15.2,90.3c-6.8,0.6-6.8,0.6-6.8,0.6%0A%09%09%09%09%09S2262.7,2493.1,2319.3,2460z" class="Graphic_x0020_Style_x0020_104"></path>%0A%09%09%09%09<path d="M2376.8,2552.2c0,0-56.9-11.2-43.1-33.6c13.8-22.4,45.5-15.9,46.9-24.5%0A%09%09%09%09%09c1.4-8.6-15.9-23.8-21.7-14.5c-5.9,9.3-15.5,25.2-15.5,25.2s-24.1,6.2-17.9,23.1c6.2,16.9,33.8,15.5,6.2,16.9%0A%09%09%09%09%09c-27.6,1.4-39.6,0-39.6,0s-7.4,36.2,7.3,37.5c14.7,1.4,61.6,6.9,105-10.3c43.4-17.2,43.8-24.7,43.8-24.7%0A%09%09%09%09%09S2401.3,2559.2,2376.8,2552.2z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09%09%09<polygon points="2331,2682 2848.1,2642 2880.5,2623.2 2322,2668.2 1885.6,2604.1 %0A%09%09%09%09%091893.9,2613.5" class="Graphic_x0020_Style_x0020_109"></polygon>%0A%09%09%09%09<path d="M1784.9,2001.5l427.1,0.5l15.9,3c18.3,3.5,31.9,18.7,33.5,37.3c9.9,120.2,38.5,538.8,42.7,616.9%0A%09%09%09%09%09c0.3,6.5-11.2,15-17.7,14.2l-444.6-65.8L1784.9,2001.5z" class="st28"></path>%0A%09%09%09%09<path d="M1794.6,1993.3l411.5,8.2c15.8,0.3,28.8,12.5,30.1,28.3c10.4,126.7,52.8,644.5,49.2,643.3%0A%09%09%09%09%09c-3.6-1.2-348.6-51.6-443.5-65.4c-14.1-2.1-24.9-13.4-26.2-27.6l-52.4-553C1761.5,2008.7,1776.2,1992.9,1794.6,1993.3z" class="st29"></path>%0A%09%09%09</g>%0A%09%09%09<path d="M3465.5,2285.9c-5.8-29.1-28.6-54-57-68.5c9.3,57-21.2,85.5-21.2,85.5c-6.8,3.4-40.2,78.1-48.3,71.7%0A%09%09%09%09c-4.1-3.3-5.8-14.7-6.3-29.4c-17.3-67.3-4-136.5-11.5-203.5c-2.3-18.1-0.7-36.2-6.7-52.6c-6.5-5.5-15.7-10.3-27.9-14.4%0A%09%09%09%09c0.8,120.3-17.7,240.4,10.5,355.6c8,37.4,77.5,16,112.2-8C3452.2,2392.7,3478.9,2339.3,3465.5,2285.9z" class="st24"></path>%0A%09%09%09<path d="M3332.7,2345.1c-0.9-27.1,2.3-65.1,1.7-83.5c-0.9-28.4,4.6-84.2-6.4-147.7c-0.5-9.3-4.6-17.6-13.4-24.9%0A%09%09%09%09c5.9,16.5,4.4,34.5,6.7,52.6C3328.7,2208.5,3315.4,2277.8,3332.7,2345.1z" class="st27"></path>%0A%09%09%09<path d="M3591.6,2306.2l-189.3-113.8c2.9,8.8,4.9,17.1,6.2,24.9c28.4,14.5,51.2,39.4,57,68.5%0A%09%09%09%09c4.9,19.6,4.4,39.1-0.3,57.5c36.8,33.3,76.9,62.3,118.5,89.3C3596.9,2393.5,3597.6,2349.6,3591.6,2306.2z" class="st24"></path>%0A%09%09%09<path d="M3226.7,2062.8c-4.2-0.5-8.6-0.9-13.2-1.3c-89.6,102-96.5,485.4-63.4,524c10.1,11.8,36.5,17.9,71.6,18.6%0A%09%09%09%09c-2.7-1.6-5.1-3.5-7.3-5.6C3080,2450.9,3137.9,2222.8,3226.7,2062.8z" class="st23"></path>%0A%09%09%09<path d="M3465.3,2343.4c-8.1,31.8-28.7,60.1-55.8,78.8c-34.7,24-104.2,45.4-112.2,8%0A%09%09%09%09c-28.2-115.2-9.7-235.3-10.5-355.6c-15.1-5.1-34.8-9.1-60-11.8c-88.8,160-146.7,388.1-12.3,535.7c2.1,2.1,4.6,4,7.3,5.6%0A%09%09%09%09c79.8,1.5,205-25.2,288.3-77.9c38.4-24.3,61.5-56.9,73.7-93.5C3542.2,2405.6,3502.1,2376.6,3465.3,2343.4z" class="st25"></path>%0A%09%09</g>%0A%09%09<path d="M3123.6,1922.5c3.2,5.9-36.5,92.1-63.1,100.4c35,56.6,28,41.3,37.6,63.1c63.2-44,78.1-61.9,78.3-92.2%0A%09%09%09C3177.1,1914.4,3123.6,1922.5,3123.6,1922.5z" class="st30"></path>%0A%09</g>%0A%09<g>%0A%09%09<path d="M3972.8,2436.5c-19.3-100.6-1.9-197.3,30.9-292.1c1.9-7.7,9.7-13.5,11.6-23.2%0A%09%09%09c13.5-58,34.8-108.3,58-160.5c1.9-7.7,1.9-15.5,3.9-23.2c1.5-4.4,6.3-7.7,9.3-11.5c-108.6,18.8-247.9,49.9-313.3,64.9%0A%09%09%09c22.2,33.7,40.9,69.3,52.5,109.1c3.9,7.7,13.5,13.5,17.4,21.3c3.9,5.8,0,11.6,3.9,17.4c11.6,15.5,21.3,29,25.1,48.4%0A%09%09%09c1.9,3.9,7.7,5.8,7.7,9.7c0,94.8,7.7,189.6,0,284.3c-6.7,72.9-22.6,143.8-37.3,214.7c84.9-0.2,183-1.6,281.4-2.7%0A%09%09%09c-52.2-58.4-91.1-128-129.9-198.4C3984.4,2475.2,3976.6,2455.8,3972.8,2436.5z" class="Graphic_x0020_Style_x0020_114"></path>%0A%09%09<path d="M4194.9,2483.6c82.8-18.7,163-5.3,237.8,48.1c8,8,26.7,5.3,37.4,0%0A%09%09%09c58.6-34.6,128.4-61.3,198-68.7c-150.8-225.4-393-546.7-446.5-551.9c-23.2-2.2-74.3,4.4-135,14.8c-3.1,3.9-7.9,7.1-9.3,11.5%0A%09%09%09c-1.9,7.7-1.9,15.5-3.9,23.2c-23.2,52.2-44.5,102.5-58,160.5c-1.9,9.7-9.7,15.5-11.6,23.2c-32.9,94.8-50.3,191.5-30.9,292.1%0A%09%09%09c3.3,16.6,9.5,33.3,17.3,49.9C4050.6,2508.5,4130.6,2499.3,4194.9,2483.6z" class="Graphic_x0020_Style_x0020_105"></path>%0A%09%09<path d="M4470.1,2531.7c-10.7,5.3-29.4,8-37.4,0c-74.8-53.4-155-66.8-237.8-48.1%0A%09%09%09c-64.3,15.7-144.3,24.9-204.8,2.8c1.3,2.7,2.6,5.4,3.9,8.1c38.9,70.4,77.7,140.1,129.9,198.4c233-2.6,467.2-3.9,529.1,13.9%0A%09%09%09c110.3,31.7,131,20.7,137.9-30.3c2.3-16.7-49.5-103.7-123-213.5C4598.5,2470.4,4528.6,2497,4470.1,2531.7z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09%09<path d="M3879.9,2196.6c0-3.9-5.8-5.8-7.7-9.7c-3.9-19.3-13.5-32.9-25.1-48.4c-3.9-5.8,0-11.6-3.9-17.4%0A%09%09%09c-3.9-7.7-13.5-13.5-17.4-21.3c-11.6-39.8-30.4-75.4-52.5-109.1c-23.2,5.3-37.1,8.6-37.1,8.6s-76.6,50.8-73.5,108.1%0A%09%09%09c3.1,57.3,7.7,545.5-0.1,585.4c44.9,2.2,107.7,2.8,180,2.6c14.8-70.9,30.6-141.8,37.3-214.7%0A%09%09%09C3887.6,2386.2,3879.9,2291.4,3879.9,2196.6z" class="st31"></path>%0A%09%09<path d="M3622.6,2308.8c7.7-30.9,11.6-63.8,40.6-85.1c3.9-3.9,1.9-9.7,5.8-13.5c21.7-17.1,39.8-41.6,63-53.7%0A%09%09%09c-6.4-58.7-17.6-101.8-29.1-95c-30.3,17.9-474.3,322.7-497.1,369.5s-42.1,123.7,13.1,152.8c0,0-20.7-133.5,59.3-157%0A%09%09%09c80-23.4,155.8,45.5,157.2,51c0.7,2.8,16.3,25.9,31.7,46.8c24.5-12.2,48.8-24.7,72.3-41.8%0A%09%09%09C3593.6,2440.4,3609.1,2376.5,3622.6,2308.8z" class="st32"></path>%0A%09%09<path d="M3669.1,2210.2c-3.9,3.9-1.9,9.7-5.8,13.5c-29,21.3-32.9,54.2-40.6,85.1c-13.5,67.7-29,131.5-83.2,174.1%0A%09%09%09c-23.4,17.1-47.7,29.6-72.3,41.8c14.9,20.3,29.7,38.6,30.4,34.1c1.4-9.2,146.2-90.6,205.5-136.8c36.9-28.8,39.6-168.5,29.1-265.5%0A%09%09%09C3708.8,2168.5,3690.8,2193.1,3669.1,2210.2z" class="st31"></path>%0A%09%09<path d="M3252.8,2424.8c-14.7,6.4-25.2,15.5-32.7,25.8c33.5,31.1,84.8,42,119.8,22.2c22.9-10.4,45.8-17.6,64.9-32.9%0A%09%09%09c-0.9-0.6-1.9-1.3-3.1-2.1C3385.9,2421.4,3321.1,2395.2,3252.8,2424.8z" class="st16"></path>%0A%09%09<path d="M3220.1,2450.6c-5.4,7.5-9.3,15.6-11.9,23.8c11.3,29.8,34.2,55.9,59.6,75.9%0A%09%09%09c39.9,36.8,89.5,48.9,140.2,47.1l4-152.6c0,0,0,0-7.2-4.8c-19.1,15.3-42,22.5-64.9,32.9%0A%09%09%09C3304.9,2492.6,3253.6,2481.7,3220.1,2450.6z" class="Graphic_x0020_Style_x0020_113"></path>%0A%09%09<path d="M3267.8,2550.4c-25.4-20-48.3-46.1-59.6-75.9c-0.6,1.9-1.2,3.9-1.7,5.8%0A%09%09%09c-3.2,12.6-4,25-3.7,35.5c0.4,15.7,3.1,26.9,3.1,26.9s73.1,121.3,186.1,122.7c14.5-13.8,14.5-13.8,14.5-13.8l0.5-17.8l0.7-24.6%0A%09%09%09l0.3-11.9C3357.3,2599.3,3307.7,2587.2,3267.8,2550.4z" class="Graphic_x0020_Style_x0020_104"></path>%0A%09%09<path d="M3235.6,2602c0,0,20.6,1.7,15.5-3.8c-16.6-18-47.6-98.2-21.8-124.8c29.7-30.7,122.5-41.5,160.6-26.4%0A%09%09%09c-3.3-14.6-3.3-14.6-3.3-14.6s-76.5-31-120-13.1c-43.4,17.9-62.2,9.2-63.8,77c-1.7,67.8,9.5,101.6,23.2,107.8%0A%09%09%09C3239.7,2610.3,3235.6,2602,3235.6,2602z" class="st33"></path>%0A%09%09<path d="M3226,2604.1c0,0-34.8-98.6-3.2-143.2s183.6-37.2,209.7,22.5c15.9-4.6,15.9-4.6,15.9-4.6%0A%09%09%09s51.4-54.7-36.3-81.6c-87.8-26.9-216.5,9.7-228.4,92.5S3199.4,2597,3226,2604.1z" class="st20"></path>%0A%09%09<path d="M3340,2529c32.1-10.7,40.1-29.4,53.4-58.8c2.7-5.3,21.4,2.7,32.1-5.3%0A%09%09%09c34.7-32.1,80.1-48.1,120.2-32.1c9,3,17.6,7.1,26,11.5c-6.3-16.9-12.8-29.1-12.8-29.1s-3-1.5-7.6-3.6%0A%09%09%09c-11.7-5.4-33.9-14.8-44.8-14.3c-15.2,0.7-29.9,22.1-29.9,22.1s-32.8-9-49.4,0c-16.5,9-18.5,35.5-18.5,35.5s-15.9-1.7-33.9,7.3%0A%09%09%09s-6.2,37.2-6.2,37.2s-15.2-12.4-42.1,6.2c-20.5,12.6-13.4,51.1-1.3,85.4C3326.1,2565.1,3319.5,2533.5,3340,2529z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M3545.7,2432.8c-40.1-16-85.5,0-120.2,32.1c-10.7,8-29.4,0-32.1,5.3c-13.4,29.4-21.4,48.1-53.4,58.8%0A%09%09%09c-20.4,4.5-13.9,36.1-14.7,61.9c4.6,13,9.9,25.4,14.7,35.5c6.7,14.3,12.4,24,13.6,24.5c32.4,14.5,39.8-12.1,39.8-12.1%0A%09%09%09s7.4,27.2,34.4,26.6c27-0.6,13.8-43.4,13.8-43.4s36.8,33.1,54,29c17.2-4.1,4.1-42.1,4.1-42.1s23.4,27.6,48.3,21.4%0A%09%09%09c24.8-6.2-10.3-94-10.3-94s24.1,13.3,41.4-12.2c10.5-21.9,1.8-55.6-7.2-79.8C3563.2,2439.9,3554.7,2435.8,3545.7,2432.8z" class="st16"></path>%0A%09%09<path d="M3855.6,1746.2c-34.7-66.8-53.4-157.6-120.2-181.7c-70.3-26.7-149.3,8.2-227.2-3%0A%09%09%09c-21.3,43.8-31,95-34.5,140.3c-7.9,103.1,20.2,204.3,82.4,287.5c9.2,12.3,20.1,15.4,35.2,15.3c13.5-0.1,92.2-26.6,94.3-24.1%0A%09%09%09c0,0,89.2,104.8,138.8,155.4c3.9,4,7.6,7.6,11.1,10.9c41,38.7,55.1,33.2,55.1,33.2s66.2-16.5,80-60.7c13.8-44.1,68-261.3,68-261.3%0A%09%09%09s-2.5-6.5-5.6-15.8C3959.1,1845.2,3889.3,1813.7,3855.6,1746.2z" class="st16"></path>%0A%09%09<path d="M4022,1797.7c-2.8-24.8,81.8-357.6-168.2-366.8c-89.9-3.3-189,3.2-269.9,46.9%0A%09%09%09c-34.4,18.6-58.8,48.8-75.7,83.7c77.9,11.2,156.9-23.7,227.2,3c66.8,24,85.5,114.9,120.2,181.7c33.8,67.5,103.5,99,177.4,96.1%0A%09%09%09c-1.2-3.7-2.5-7.7-3.8-12.1C4026.1,1819.7,4023.1,1807.8,4022,1797.7z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M4069.8,1569.7c-23-40.4-27.6-96.5-46-109.4c-0.8-25.3-12.8-44.3-33.2-58.9%0A%09%09%09c-26.3-18.9-66.6-30.6-114.7-39.4c-85.5-15.6-326.4,68.3-388.9,41.2c-46.2-20-44.1,85.7-44.1,85.7s-0.6,8.6,2.7,18.9%0A%09%09%09c0.8,2.6,1.9,5.3,3.4,8c6.8,13.1,21.3,26,51.9,25.5c61.6-0.9,148-35.8,156.3-17.5c8.3,18.4,0.9,143.8,12.9,163.8%0A%09%09%09c4.5,0.7,8.3,1.3,11.5,1.8c16,2.6,16,2.6,16,2.6s1.8-85.5,55.2-84.1c18.2,0.5,37.2,5.3,55.1,14.9c34.5,18.6,64.6,55.2,75.4,113.4%0A%09%09%09c16.6,88.2,147.1,77.2,147.1,77.2s2.3-7.5,5.9-19.9c5.1-17.8,12.8-45.6,20-75.9C4070,1659,4082.1,1591.2,4069.8,1569.7z" class="Graphic_x0020_Style_x0020_108"></path>%0A%09%09<polygon points="3720.5,1573.4 3453,1652.4 3452.3,1641 3736.1,1563.3" class="Graphic_x0020_Style_x0020_110"></polygon>%0A%09%09<path d="M3661.3,2544.8c-2.7-1-5.3-2.4-7.9-4.1c4.4,48.9,8.2,80.7,8.2,80.7l146.2-7.8%0A%09%09%09c0,0,5.8-43,13.8-101.1c-7.6,1.5-15.3,3.9-23,7.2C3756.1,2539,3707.8,2556.4,3661.3,2544.8z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09%09<path d="M3847.5,2157.6c-42.9-65.3-126-117.2-122.4-138.8c-110.1-35.4-87.2,349.7-71.6,521.9%0A%09%09%09c2.6,1.7,5.2,3.1,7.9,4.1c46.4,11.6,94.8-5.8,137.3-25.1c7.7-3.3,15.3-5.7,23-7.2c11.1-80.9,26.4-191.1,35.8-255.6%0A%09%09%09C3859.9,2240.5,3857.5,2172.8,3847.5,2157.6z" class="st32"></path>%0A%09%09<path d="M4242.6,2242.6c0,0,36.8,108.5,119.5,116.7c-13.8,52.4,206.2,183.4,206.2,183.4l9.8-23.8l-239.8-248.8%0A%09%09%09L4242.6,2242.6z" class="st34"></path>%0A%09%09<path d="M3298.6,2799c-8.5,5.6-14.3,9.3-14.8,9.1c-2.1-0.7-22.1,19.3-22.1,19.3%0A%09%09%09s33.8,2.8,36.5,0c0.5-0.5,4.9-3.2,11.4-7C3308.5,2811.6,3304.6,2802.8,3298.6,2799z" class="Graphic_x0020_Style_x0020_108"></path>%0A%09%09<path d="M3379,2744c0,0-53.6,37.3-80.3,55c3.9,2.5,6.9,7,8.8,12.3l95.8-56.5%0A%09%09%09C3402.9,2747.5,3396.9,2742.8,3379,2744z" class="Graphic_x0020_Style_x0020_112"></path>%0A%09%09<path d="M3307.5,2811.4c1.1,2.9,1.8,6,2.3,9.1c26.5-15.5,89.9-50.9,89.9-50.9%0A%09%09%09c2.2-5.4,3.8-10.5,3.6-14.7L3307.5,2811.4z" class="Graphic_x0020_Style_x0020_110"></path>%0A%09%09<path d="M4750.6,2686.6c-104.2,18.7-203,5.3-304.6,0c-109.5-2.7-227.1-26.7-334,16%0A%09%09%09c-80.1,29.4-171-21.4-261.8-2.7c-64.6,14.9-126.9,34.4-189.1,52.1c1.8,0.1,3.8,0.2,6,0.2c37.2,0,155.8-45.5,257.9-29%0A%09%09%09s212.4,30.3,251-6.9c96.5,5.5,601.2,41.4,650.9,26.2c10.9-23.2,13.8-50.2,10.6-77.7C4808.9,2673.1,4780.3,2680.7,4750.6,2686.6z" class="Graphic_x0020_Style_x0020_111"></path>%0A%09%09<path d="M4112.1,2702.6c106.9-42.7,224.4-18.7,334-16c101.5,5.3,200.4,18.7,304.6,0c29.7-5.9,58.4-13.5,86.9-21.6%0A%09%09%09c-9.7-83.3-75.3-171.2-141.6-173.3c-45.6,12.2-90.4,22.8-134.1,31.9c-331.1,69.3-596.5,55.3-657.4,37%0A%09%09%09c-68.9-20.7-170.7,19.4-243.8,51.1c-73.1,31.7-122,56.6-95.8,74.6c-0.8,1.2-5,6.1-5.1,9.5c-0.1,3.5-5.8,5.5-8.7,8.7%0A%09%09%09c-8.6,9.5-7.7,26.2,7.4,27.1c1.8,0.1,3.6,0.3,5.3,0.6c20,3.4,31.7,17.6,60.9,4.9c30.3-4.1,30.3-4.1,30.3-4.1s-21.9,17.1,6.4,19.1%0A%09%09%09c62.2-17.7,124.5-37.2,189.1-52.1C3941.1,2681.3,4031.9,2732,4112.1,2702.6z" class="st16"></path>%0A%09%09<path d="M5017.7,2587.8c-2.7-5.3,2.7-13.4,0-18.7c-37.4-72.1-72.1-141.6-130.9-195%0A%09%09%09c-45.4-42.7-96.2-77.5-141.6-120.2c-64.1-53.4-101.5-125.6-173.7-165.6c-80.1-45.4-157.6-88.2-243.1-120.2%0A%09%09%09c-56.1-18.7-114.9-8-173.7-10.7c-8,0-13.4-8-18.7-8c-26.9-3.6-52.7-12-77.2-22.8l-4.1,6.3l-47.1,153.2l241.3,154.8%0A%09%09%09c0.7,4.9,2.5,10,5.3,15.1c70.7-21.4,153.8-12.5,210.4,35.3c58.8,50.8,77.5,133.6,138.9,176.3c50.8,37.4,117.6,48.1,155,101.5%0A%09%09%09c26.3,32.9,23.8,78.3-4.4,111.2c16.3,20,31.9,41.7,46.4,65.4c43.6,17.7,172.5,20.1,226.6-52.4%0A%09%09%09C5038.9,2660.1,5036.7,2621.8,5017.7,2587.8z" class="Graphic_x0020_Style_x0020_105"></path>%0A%09%09<path d="M4666.9,2134.6c-215.1-230.3-311.2-220.2-404.5-226.6%0A%09%09%09c-58.4-29.4-93.8-48.3-120.4-4.6c-12.4-21.6-57-17.5-57-17.5l-26.1,40.5c24.5,10.8,50.2,19.2,77.2,22.8c5.3,0,10.7,8,18.7,8%0A%09%09%09c58.8,2.7,117.6-8,173.7,10.7c85.5,32.1,163,74.8,243.1,120.2c72.1,40.1,109.5,112.2,173.7,165.6c45.4,42.7,96.2,77.5,141.6,120.2%0A%09%09%09c58.8,53.4,93.5,122.9,130.9,195c2.7,5.3-2.7,13.4,0,18.7c18.9,34.1,21.2,72.4,9.5,105.5c14.4-19.2,23.5-43.8,24.4-74.7%0A%09%09%09C5055.7,2471,4882,2364.8,4666.9,2134.6z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09%09<path d="M4758.6,2569.1c-37.4-53.4-104.2-64.1-155-101.5%0A%09%09%09c-61.4-42.7-80.1-125.6-138.9-176.3c-56.5-47.8-139.6-56.7-210.4-35.3c25.1,47.2,127.1,102.1,127.1,102.1s20.7,44.1,55.2,84.1%0A%09%09%09c30.5,35.4,193.5,85.8,317.6,238.2C4782.4,2647.3,4784.9,2601.9,4758.6,2569.1z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09%09<path d="M3715.8,2015.7l-33.4,5.8c0,0,86.9,194.9,81.4,227c99.3-46.4,98.4-56.1,98.4-56.1%0A%09%09%09l-7.4-38.1C3852.2,2113.2,3774.4,2063.6,3715.8,2015.7z" class="Graphic_x0020_Style_x0020_100"></path>%0A%09%09<path d="M4035.3,1825.7c0,0-127.3,345.2-108.9,400.3c60.7-14.7,108.9,4.6,108.9,4.6%0A%09%09%09s-11.5-222.5,55.6-345.6C4061.5,1845.5,4035.3,1825.7,4035.3,1825.7z" class="Graphic_x0020_Style_x0020_100"></path>%0A%09%09<path d="M3654.8,2733l130-51c-71.4,10.3-156.4,53.6-160.3,55.2C3633.4,2740.2,3654.8,2733,3654.8,2733z" class="st18"></path>%0A%09%09<path d="M3576.1,2735.8c0,0,55.9-47.6,182.8-76.5c-16.5-5.5-133.9,28.9-190.4,74.1%0A%09%09%09C3573.4,2738.5,3576.1,2735.8,3576.1,2735.8z" class="st18"></path>%0A%09%09<path d="M3558,2699.3c0,0,110.1-70.4,179-82.8c-35.9-12.4-176.2,71.6-176.2,71.6L3558,2699.3z" class="st18"></path>%0A%09%09<path d="M3834.5,1885.6c0,0-102,90.4-148.9,95c48.7,53.3,78.2,78.6,99.3,89.2%0A%09%09%09c0-99.3,91.9-168.2,83.7-237.2c-8.3-68.9-6.4-64.3-6.4-64.3S3863,1851.2,3834.5,1885.6z" class="Graphic_x0020_Style_x0020_104"></path>%0A%09%09<path d="M4897.2,2712.3c-24.8-45.5-111.6-233-210.3-220.6c0,0-65.2,9.2-99.4,20.8c-1.1,12.9,9.7,22,21.7,26.5%0A%09%09%09c104.1,32,201.6,111.9,214.5,216.4c41.8,6.1,86.6,20.3,88.3-2.4C4912.3,2747.3,4901.4,2720.1,4897.2,2712.3z" class="st20"></path>%0A%09%09<path d="M4609.1,2539c-12-4.5-22.8-13.6-21.7-26.5c-9.2,3.1-16.2,6.4-19,9.7c149.6,89.2,160.1,153.2,228.5,227.8%0A%09%09%09c9,2.3,18,4.1,26.7,5.4C4810.8,2650.9,4713.3,2571,4609.1,2539z" class="st35"></path>%0A%09%09<path d="M3389.9,2642.1c0,0-40.9-81.4-37.1-99.3c3.8-17.9-3.1-35.9,15.9-43.4c-6.2,13.8-11,29-10,45.5%0A%09%09%09c1,16.5,34.6,94,34.6,94L3389.9,2642.1z" class="st18"></path>%0A%09%09<path d="M3407,2460.9c0,0-9.2,34.9-1.9,66.6c7.4,31.7,30.8,93.9,37,97.1c6.2,3.2,6.2,3.2,6.2,3.2%0A%09%09%09S3398.3,2507.3,3407,2460.9z" class="st18"></path>%0A%09%09<path d="M3472.9,2418.4c0,0-17,55.4-15.2,76c1.8,20.7,41.7,120.8,41.7,120.8l2.9-3.5%0A%09%09%09c0,0-42.5-108.1-31.7-146c10.9-37.9,9.3-50.7,9.3-50.7L3472.9,2418.4z" class="Graphic_x0020_Style_x0020_104"></path>%0A%09%09<path d="M3537.6,2454.9c0,0-9.2,72.2,0,81.4s20.4,7.3,20.4,7.3S3539.9,2483.9,3537.6,2454.9z" class="st18"></path>%0A%09%09<path d="M3543.3,2484.1c0,0-7.6,38.4-5.8,52.2c0.7,5.4,2.5,11.2,5.6,16.5c7.7,6.5,16.6,9.4,25.4,1.7%0A%09%09%09c15.6-12.5,17.4-32.6,17.5-52.1c-0.7-2.3-1.4-4.6-2.2-7" class="st16"></path>%0A%09%09<g>%0A%09%09%09<polygon points="3466.8,1624.2 3466.8,1624.2 3466.8,1624.2" class="st9"></polygon>%0A%09%09%09<path d="M3516.4,1675.9c-7.1-21.6-14.1-34.6-21-42.6c-3.4-4-6.9-6.7-10.3-8.4%0A%09%09%09%09c-3.4-1.7-6.8-2.3-9.8-2.3c-3.4,0-6.3,0.8-8.6,1.5c-4.1,1.3-8,4.5-10.7,9.6c-2.7,5.1-4.4,12.1-4.4,21.5%0A%09%09%09%09c0,12.2,2.8,28.6,10.1,50.4c6.4,19,13.3,30.6,20.3,37.6c3.5,3.5,7.1,5.8,10.5,7.3c3.4,1.4,6.8,2,9.7,2c2.7,0,5.1-0.4,7.1-0.9%0A%09%09%09%09c2-0.5,3.5-1.1,4.4-1.4l0,0c2.9-0.9,6.2-3.2,8.5-7.4c2.3-4.2,3.8-10.1,3.8-18.4C3526.2,1713.3,3523.6,1697.9,3516.4,1675.9z%0A%09%09%09%09 M3515.7,1738.9c-1.5,2.6-3.1,3.5-4.1,3.8c-1.2,0.4-2.5,0.9-4,1.3c-1.5,0.4-3.3,0.7-5.1,0.7c-2,0-4.3-0.3-6.7-1.4%0A%09%09%09%09c-3.7-1.5-7.9-4.6-12.5-10.9c-4.6-6.2-9.4-15.6-14-29.3c-7.1-21.2-9.7-36.9-9.7-47.9c0-8.5,1.5-14.2,3.5-17.9%0A%09%09%09%09c2-3.6,4.2-5.2,6.2-5.8l0,0c2-0.6,4.1-1.1,6.3-1.1c2,0,4,0.4,6.3,1.5c3.5,1.7,7.7,5.3,12.4,12.6c4.7,7.2,9.7,18.1,14.9,33.8%0A%09%09%09%09c7.1,21.4,9.4,36.2,9.4,46C3518.5,1731.7,3517.1,1736.3,3515.7,1738.9z" class="Graphic_x0020_Style_x0020_110"></path>%0A%09%09</g>%0A%09</g>%0A%09<polygon points="4535.9,1753.6 4677.9,1982.4 4774.4,1982.4 4597.9,1697.5" class="Graphic_x0020_Style_x0020_109"></polygon>%0A%09<polygon points="4616.6,1659.7 4815.1,1982.4 4916.5,1982.4 4705.5,1586.9" class="Graphic_x0020_Style_x0020_105"></polygon>%0A%09<polygon points="4597.9,1697.5 4644.4,1704.9 4815.1,1982.4 4774.4,1982.4" class="Graphic_x0020_Style_x0020_108"></polygon>%0A%09<polygon points="4791.1,1650.6 4705.5,1586.9 4916.5,1982.4 4939.2,1982.4 4939.2,1925.9" class="Graphic_x0020_Style_x0020_107"></polygon>%0A%09<path d="M4590.7,1773.7c0,0,19.3-16,39,11c19.6,27-20.3,47.3-33.4,30.1%0A%09%09C4583.1,1797.4,4579.5,1778.2,4590.7,1773.7z" class="Graphic_x0020_Style_x0020_100"></path>%0A%09<path d="M4596.3,1780.1c0,0,13.5-11.2,27.3,7.7s-14.2,33.1-23.4,21.1%0A%09%09C4591,1796.7,4588.5,1783.2,4596.3,1780.1z" class="Graphic_x0020_Style_x0020_106"></path>%0A%09<polygon points="4609.5,1841.2 4648,1821.1 4757.4,1982.4 4699.5,1982.4" class="Graphic_x0020_Style_x0020_105"></polygon>%0A%09<ellipse ry="38.6" rx="31.7" cy="1701" cx="4703.2" class="Graphic_x0020_Style_x0020_104"></ellipse>%0A%09<polygon points="4705.5,1762.7 4757.4,1724.1 4766.2,1734.7 4712.4,1768.9" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09<polygon points="4718.4,1793 4770.3,1754.3 4779,1764.9 4725.3,1799.2" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09<polygon points="4731.2,1823.2 4783.2,1784.6 4791.9,1795.1 4738.1,1829.4" class="Graphic_x0020_Style_x0020_100"></polygon>%0A%09<g>%0A%09%09<path d="M973.4,2494.7c-1.1-7.7-1.9-15.4-2.3-22.9c9.5-13.4,26.8-31.8,52.9-40.2c23.1-6.1,15.4-16.7,6-14.3%0A%09%09%09c-6.8,1.7-40.3,15-58.6,22.4c6.9-84.5,62.6-145.2,175.4-122.9c0,0,168.2-115.8,215,66.2c-26.6-8.7-77.4-22.7-81.8-5%0A%09%09%09c-5.6,22.6,45.1-7,86.4,25.8c2.5,13.6,4.5,28.6,5.7,45.1c0.4,18.1-4.3,37.3-12.2,56.6c-19.6-23.9-69.9-81.6-86.6-63.7%0A%09%09%09c-19.3,20.6,50.3,7.3,76.9,84.6c-10.3,19.7-23.2,39-36.6,56.7c-13.9-23.9-42.7-67.9-60.7-56.8c-7.2,6.3,6.6,15.6,21,31%0A%09%09%09c9.1,9.8,20.1,29.2,27,42.1c-32.6,40-64,68.5-64,68.5s-40.6-10.2-90-29.6c-2.2-17-5.6-50,0.5-58c8.3-10.9-3.5-21.2-17.7-9.4%0A%09%09%09c-11,9.1-13.4,36.4-10.2,55.9c-20.3-9-41-19.4-60.3-31.1c3.7-24.8,13.8-80.3,30.3-90.6c10.5-9.2,2.3-22.4-22.7-3.4%0A%09%09%09c-19.2,14.5-25.3,60.3-27.2,81.1C1004.8,2558,978.2,2528.6,973.4,2494.7z" class="st10"></path>%0A%09%09<path d="M1225.4,2633.4c0,0-71-217.9-78.6-316.8" class="st11"></path>%0A%09%09<path d="M1129.2,2552.6c0,0,15.4-40.3,50.3-75.4" class="st11"></path>%0A%09%09<path d="M1261.1,2488.4c0,0-59.5-46.7-90-43.7" class="st11"></path>%0A%09%09<path d="M1052.5,2468.5c0,0,69.2-57,107.6-70.5" class="st11"></path>%0A%09%09<path d="M1243.7,2349.5c0,0-52.8-23.4-93.7-5.9" class="st11"></path>%0A%09</g>%0A%09<path d="M3360.2,3327.1c-71.4-58-182.9-129.1-345.1-184.1c-329.3-111.6-176.9-187.3-303.6-225.2%0A%09%09s-430.3-22.5-784.9-68.8s-643.1-33.1-556-162c60.4-89.4,145-152.7,191.1-183.1l-109.7,8.4c-108.3,81.3-312.5,270.2,66.8,308.2%0A%09%09c486.5,48.7,1181.1,101.9,1192.6,208.2c9.2,84.8,440.1,200.1,610.2,307.3C3334,3333.3,3346.8,3330.3,3360.2,3327.1z" class="st22"></path>%0A%09<linearGradient y2="608.8419" x2="3633.9429" y1="608.8419" x1="3431.6741" gradientUnits="userSpaceOnUse" id="SVGID_9_">%0A%09%09<stop style="stop-color:%234085F0" offset="0"></stop>%0A%09%09<stop style="stop-color:%23275DC9" offset="1"></stop>%0A%09</linearGradient>%0A%09<ellipse ry="101.1" rx="101.1" cy="608.8" cx="3532.8" class="st36"></ellipse>%0A%09<linearGradient y2="3174.8586" x2="1457.2415" y1="3174.8586" x1="1136.8959" gradientUnits="userSpaceOnUse" id="SVGID_10_">%0A%09%09<stop style="stop-color:%2368B2FC" offset="0"></stop>%0A%09%09<stop style="stop-color:%23529BF7" offset="1"></stop>%0A%09</linearGradient>%0A%09<ellipse ry="106.3" rx="160.2" cy="3174.9" cx="1297.1" class="st37"></ellipse>%0A%09<linearGradient y2="2968.6479" x2="1266.5088" y1="2968.6479" x1="1085.6805" gradientUnits="userSpaceOnUse" id="SVGID_11_">%0A%09%09<stop style="stop-color:%234085F0" offset="0"></stop>%0A%09%09<stop style="stop-color:%23275DC9" offset="1"></stop>%0A%09</linearGradient>%0A%09<ellipse ry="60" rx="90.4" cy="2968.6" cx="1176.1" class="st38"></ellipse>%0A%09<linearGradient y2="3078.0559" x2="5051.6841" y1="3078.0559" x1="4866.0625" gradientUnits="userSpaceOnUse" id="SVGID_12_">%0A%09%09<stop style="stop-color:%234085F0" offset="0"></stop>%0A%09%09<stop style="stop-color:%23275DC9" offset="1"></stop>%0A%09</linearGradient>%0A%09<ellipse ry="92.8" rx="92.8" cy="3078.1" cx="4958.9" class="st39"></ellipse>%0A%09<path d="M2285.6,3438c0,0,206.8,24.5,420.7-87.7c42.5-28.4,62.6,33.1,35.4,53.2%0A%09%09c-27.2,20.1-168.9,100.4-399.3,87.4C2216,3486.1,2239.4,3435.8,2285.6,3438z" class="Graphic_x0020_Style_x0020_100"></path>%0A</g>%0A</svg>%0A';
2940
3346
  var SignIn = (props) => {
2941
3347
  const { title, successRedirectUrl, extra } = props;
2942
- const unregistered = useContextStore((s) => s.unregistered);
3348
+ const unregistered = useToolkitsStore((s) => s.unregistered);
2943
3349
  const queryParams = new URLSearchParams(window.location.search);
2944
- const { token, setToken } = useContextStore((state) => state);
3350
+ const { token, setToken } = useToolkitsStore((state) => state);
2945
3351
  const { t } = useTranslation();
2946
3352
  const { isLoading } = useSWRImmutable(
2947
3353
  queryParams.has("ticket") ? `/api/usystem/user/login?ticket=${queryParams.get("ticket")}` : null,
@@ -3000,8 +3406,8 @@ var SignIn = (props) => {
3000
3406
  var signIn_default = SignIn;
3001
3407
 
3002
3408
  // src/index.ts
3003
- init_storage();
3409
+ init_utils();
3004
3410
 
3005
- export { APP_ID_HEADER, ContextProvider_default as ContextProvider, DynamicTags_default as DynamicTags, ExpandableParagraph_default as ExpandableParagraph, FRONTEND_ROUTE_PREFIX, FilterFormWrapper_default as FilterFormWrapper, Highlight_default as Highlight, InfiniteList_default as InfiniteList, Layout_default as Layout, NavMenu_default as NavMenu, notFound_default as NotFound, operationLogList_default as OperationLogList, PermissionButton_default as PermissionButton, QueryList_default as QueryList, QueryListAction, RequireGame_default as RequireGame, RequirePermission_default as RequirePermission, SSO_URL, signIn_default as SignIn, UserWidget_default as UserWidget, menu_default as menuRoutes, mixedStorage, permission_default as permissionRoutes, useContextStore, useFormModal, useLayoutStore, useMenuList, useModal, usePermission, usePermissions, useQueryListStore, withContext };
3411
+ export { APP_ID_HEADER, DynamicTags_default as DynamicTags, ExpandableParagraph_default as ExpandableParagraph, FRONTEND_ROUTE_PREFIX, FilterFormWrapper_default as FilterFormWrapper, Highlight_default as Highlight, InfiniteList_default as InfiniteList, Layout_default as Layout, NavMenu_default as NavMenu, notFound_default as NotFound, operationLogList_default as OperationLogList, PermissionButton_default as PermissionButton, PermissionVersion, QueryList_default as QueryList, QueryListAction, RequireGame_default as RequireGame, RequirePermission_default as RequirePermission, SSO_URL, signIn_default as SignIn, ToolkitsProvider_default as ToolkitsProvider, UserWidget_default as UserWidget, WILDCARD, menu_default as menuRoutes, mixedStorage, permission_default as permissionRoutes, useFindGame, useFormModal, useGames, useLayoutStore, useMenuList, useModal, useModalStore, usePermission, usePermissions, useQueryListStore, useToolkitsStore, withContext };
3006
3412
  //# sourceMappingURL=index.js.map
3007
3413
  //# sourceMappingURL=index.js.map