twcpt 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +189 -0
  3. package/dist/charts-CKv8I1ye.js +879 -0
  4. package/dist/charts-DIdINgA4.cjs +1 -0
  5. package/dist/charts.cjs.js +1 -0
  6. package/dist/charts.css +1 -0
  7. package/dist/charts.d.ts +7 -0
  8. package/dist/charts.es.js +9 -0
  9. package/dist/components/j-ch-bar/index.d.ts +50 -0
  10. package/dist/components/j-ch-bar/types.d.ts +42 -0
  11. package/dist/components/j-ch-bar-line/index.d.ts +49 -0
  12. package/dist/components/j-ch-bar-line/types.d.ts +42 -0
  13. package/dist/components/j-ch-bubble/index.d.ts +54 -0
  14. package/dist/components/j-ch-bubble/types.d.ts +51 -0
  15. package/dist/components/j-ch-line/index.d.ts +57 -0
  16. package/dist/components/j-ch-line/types.d.ts +42 -0
  17. package/dist/components/j-ch-pie-doughnut/index.d.ts +60 -0
  18. package/dist/components/j-ch-pie-doughnut/types.d.ts +55 -0
  19. package/dist/components/j-ch-radar/index.d.ts +49 -0
  20. package/dist/components/j-ch-radar/types.d.ts +42 -0
  21. package/dist/components/j-tw-btn/index.d.ts +606 -0
  22. package/dist/components/j-tw-btn/types.d.ts +104 -0
  23. package/dist/composables/useI18n.d.ts +12 -0
  24. package/dist/global.d.ts +75 -0
  25. package/dist/i18n/en-US/index.d.ts +90 -0
  26. package/dist/i18n/index.d.ts +10 -0
  27. package/dist/i18n/zh-CN/index.d.ts +90 -0
  28. package/dist/index-BrYPwI7i.cjs +1 -0
  29. package/dist/index-C5mRo5Yi.cjs +1 -0
  30. package/dist/index-DsQ7r9Ci.js +76 -0
  31. package/dist/index-s5XCGtM9.js +76 -0
  32. package/dist/index.css +1 -0
  33. package/dist/index.d.ts +68 -0
  34. package/dist/resolver.cjs +1 -0
  35. package/dist/resolver.d.ts +2 -0
  36. package/dist/resolver.mjs +36 -0
  37. package/dist/twcpt-styles.css +1 -0
  38. package/dist/twcpt-styles.d.ts +1 -0
  39. package/dist/twcpt-styles.js +1 -0
  40. package/dist/twcpt.cjs.js +1 -0
  41. package/dist/twcpt.es.js +2003 -0
  42. package/dist/types.d.ts +27 -0
  43. package/dist/utils/chart.d.ts +28 -0
  44. package/dist/utils/custom-svg.d.ts +3 -0
  45. package/dist/utils/helper/array.d.ts +289 -0
  46. package/dist/utils/helper/dom.d.ts +281 -0
  47. package/dist/utils/helper/index.d.ts +11 -0
  48. package/dist/utils/helper/number.d.ts +250 -0
  49. package/dist/utils/helper/object.d.ts +240 -0
  50. package/dist/utils/helper/perf.d.ts +231 -0
  51. package/dist/utils/helper/regex.d.ts +265 -0
  52. package/dist/utils/helper/string.d.ts +248 -0
  53. package/dist/utils/helper/url.d.ts +259 -0
  54. package/dist/utils/icon-map.d.ts +19 -0
  55. package/dist/utils/init.d.ts +35 -0
  56. package/dist/utils/resolver.d.ts +34 -0
  57. package/dist/utils/storage.d.ts +3 -0
  58. package/dist/utils/storageSync.d.ts +20 -0
  59. package/dist/utils/tool.d.ts +103 -0
  60. package/dist/utils/website-config.d.ts +15 -0
  61. package/package.json +90 -0
@@ -0,0 +1,2003 @@
1
+ import { _ as lt } from "./charts-CKv8I1ye.js";
2
+ import { i as Wi, a as Hi, b as Ji, c as Fi, d as Vi, e as $i } from "./charts-CKv8I1ye.js";
3
+ import { defineComponent as zt, ref as D, computed as T, resolveComponent as P, openBlock as jt, createBlock as yt, withCtx as y, createVNode as Ct, mergeProps as ft, createSlots as Tt, renderSlot as d, createTextVNode as dt, toDisplayString as wt, isRef as v, watch as Lt } from "vue";
4
+ import { ElTooltip as mt, ElButton as xt } from "element-plus";
5
+ import { twcptResolver as Ki, twcptResolverWithOptions as _i } from "./resolver.mjs";
6
+ const z = {
7
+ LARGE: "large",
8
+ NORMAL: "normal",
9
+ SMALL: "small"
10
+ }, j = {
11
+ PRIMARY: "primary",
12
+ SECONDARY: "secondary",
13
+ TEXT: "text"
14
+ }, St = zt({
15
+ name: "JTWBtn",
16
+ components: {
17
+ ElButton: xt,
18
+ ElTooltip: mt
19
+ },
20
+ inheritAttrs: !1,
21
+ props: {
22
+ size: {
23
+ type: String,
24
+ default: z.LARGE,
25
+ validator: (t) => Object.values(z).includes(t)
26
+ },
27
+ type: {
28
+ type: String,
29
+ default: j.PRIMARY,
30
+ validator: (t) => Object.values(j).includes(t)
31
+ },
32
+ label: {
33
+ type: String,
34
+ default: ""
35
+ },
36
+ loading: {
37
+ type: Boolean,
38
+ default: !1
39
+ },
40
+ tips: {
41
+ type: [String, Number],
42
+ default: ""
43
+ },
44
+ tooltipConfig: {
45
+ type: Object,
46
+ default: void 0
47
+ }
48
+ },
49
+ emits: {
50
+ click: (t) => !0
51
+ },
52
+ setup(t, { emit: e, expose: n }) {
53
+ const M = D(null), i = T(() => t.tips != null ? String(t.tips) : ""), r = T(() => ({
54
+ "j-tw-btn": !0,
55
+ "j-tw-btn--large": t.size === z.LARGE,
56
+ "j-tw-btn--normal": t.size === z.NORMAL,
57
+ "j-tw-btn--small": t.size === z.SMALL,
58
+ "j-tw-btn--primary": t.type === j.PRIMARY,
59
+ "j-tw-btn--secondary": t.type === j.SECONDARY,
60
+ "j-tw-btn--text": t.type === j.TEXT
61
+ })), u = {
62
+ placement: "top",
63
+ effect: "dark",
64
+ trigger: "hover",
65
+ showArrow: !0,
66
+ openDelay: 0,
67
+ closeDelay: 200,
68
+ offset: 5
69
+ }, o = T(() => ({
70
+ ...u,
71
+ ...t.tooltipConfig
72
+ })), g = (I) => {
73
+ e("click", I);
74
+ };
75
+ return n({
76
+ get $el() {
77
+ var I;
78
+ return (I = M.value) == null ? void 0 : I.$el;
79
+ },
80
+ click: () => {
81
+ var I, s;
82
+ (s = (I = M.value) == null ? void 0 : I.$el) == null || s.click();
83
+ }
84
+ }), {
85
+ elBtnRef: M,
86
+ tooltipContent: i,
87
+ computedClass: r,
88
+ mergedTooltipConfig: o,
89
+ handleClick: g
90
+ };
91
+ }
92
+ });
93
+ function Et(t, e, n, M, i, r) {
94
+ const u = P("el-button"), o = P("el-tooltip");
95
+ return jt(), yt(o, {
96
+ disabled: !t.tips,
97
+ content: t.tooltipContent,
98
+ placement: t.mergedTooltipConfig.placement,
99
+ effect: t.mergedTooltipConfig.effect,
100
+ trigger: t.mergedTooltipConfig.trigger,
101
+ "show-arrow": t.mergedTooltipConfig.showArrow,
102
+ "show-after": t.mergedTooltipConfig.openDelay,
103
+ "hide-after": t.mergedTooltipConfig.closeDelay,
104
+ offset: t.mergedTooltipConfig.offset
105
+ }, {
106
+ default: y(() => [
107
+ Ct(u, ft({
108
+ ref: "elBtnRef",
109
+ class: t.computedClass,
110
+ loading: t.loading
111
+ }, t.$attrs, { onClick: t.handleClick }), Tt({
112
+ default: y(() => [
113
+ d(t.$slots, "default", {}, () => [
114
+ dt(wt(t.label), 1)
115
+ ], !0)
116
+ ]),
117
+ _: 2
118
+ }, [
119
+ t.$slots.icon ? {
120
+ name: "icon",
121
+ fn: y(() => [
122
+ d(t.$slots, "icon", {}, void 0, !0)
123
+ ]),
124
+ key: "0"
125
+ } : void 0,
126
+ t.$slots.loading ? {
127
+ name: "loading",
128
+ fn: y(() => [
129
+ d(t.$slots, "loading", {}, void 0, !0)
130
+ ]),
131
+ key: "1"
132
+ } : void 0
133
+ ]), 1040, ["class", "loading", "onClick"])
134
+ ]),
135
+ _: 3
136
+ }, 8, ["disabled", "content", "placement", "effect", "trigger", "show-arrow", "show-after", "hide-after", "offset"]);
137
+ }
138
+ const Qi = /* @__PURE__ */ lt(St, [["render", Et], ["__scopeId", "data-v-5a2d1e3c"]]), pt = "#0B5CFF", Ot = "#0B5CFF", ht = "#323232", Yt = "#2da641", Qt = "#E93030", bt = "#E93030", kt = "#f2c037", Ut = "#969799", Zt = "#ffffff", Pt = {
139
+ primary: pt,
140
+ blue: Ot,
141
+ dark: ht,
142
+ green: Yt,
143
+ red: Qt,
144
+ negative: bt,
145
+ yellow: kt,
146
+ grey: Ut,
147
+ white: Zt,
148
+ "blue-light": "#f0f4ff",
149
+ "dark-lighter": "#f7f7f7",
150
+ "green-light": "#c0e4c6",
151
+ "red-light": "#fff0f0",
152
+ "yellow-light": "#fff9e9",
153
+ "grey-strong": "#969799",
154
+ "grey-medium": "#aaaaaa",
155
+ "grey-light": "#eeeeee",
156
+ "grey-lighter": "#f5f6fa",
157
+ "dark-strong": "#131523"
158
+ }, vt = async (t) => (await {
159
+ "zh-CN": () => import("./index-s5XCGtM9.js"),
160
+ "en-US": () => import("./index-DsQ7r9Ci.js")
161
+ }[t]()).default, w = {}, Gt = async (t) => (w[t] || (w[t] = await vt(t)), w[t]), O = D("zh-CN"), m = D(null);
162
+ function Bt(t, e) {
163
+ const n = e.split(".");
164
+ let M = t;
165
+ for (const i of n)
166
+ if (M && typeof M == "object" && i in M)
167
+ M = M[i];
168
+ else
169
+ return e;
170
+ return typeof M == "string" ? M : e;
171
+ }
172
+ function Rt(t, e) {
173
+ return e ? t.replace(/\{(\w+)\}/g, (n, M) => e[M] !== void 0 ? String(e[M]) : n) : t;
174
+ }
175
+ function Wt(t, e) {
176
+ if (!m.value)
177
+ return console.warn("[twcpt] i18n messages not loaded yet, please call setLocale first"), t;
178
+ const n = Bt(m.value, t);
179
+ return Rt(n, e);
180
+ }
181
+ async function x(t) {
182
+ O.value = t;
183
+ try {
184
+ m.value = await Gt(t);
185
+ } catch (e) {
186
+ console.error(`[twcpt] Failed to load locale messages for ${t}:`, e);
187
+ }
188
+ }
189
+ function Ht() {
190
+ return O.value;
191
+ }
192
+ function bi() {
193
+ return {
194
+ t: Wt,
195
+ locale: O,
196
+ setLocale: x,
197
+ getLocale: Ht
198
+ };
199
+ }
200
+ const Jt = Symbol("pagePermissionIds"), Ft = Symbol("pageActionPermissionIds");
201
+ function ki(t) {
202
+ const { app: e, pagePermissionIds: n, pageActionPermissionIds: M, defaultLanguage: i, colors: r, disableBFCache: u } = t;
203
+ u && window.addEventListener("pageshow", (c) => {
204
+ c.persisted && window.location.reload();
205
+ }), i ? x(i).catch((c) => {
206
+ console.error("[twcpt] Failed to set default language:", c);
207
+ }) : x("zh-CN").catch((c) => {
208
+ console.error("[twcpt] Failed to load default locale:", c);
209
+ });
210
+ const o = n ? v(n) ? n : D(n) : void 0, g = M ? v(M) ? M : D(M) : void 0;
211
+ o && (console.log("[twcpt] Permission IDs provided:", o.value), e.provide(Jt, o)), g && (console.log("[twcpt] Action Permission IDs provided:", g.value), e.provide(Ft, g)), r && Vt(r), console.log("[twcpt] Initialization completed successfully.");
212
+ }
213
+ function Vt(t) {
214
+ const e = { ...Pt, ...t }, n = document.documentElement;
215
+ Object.entries(e).forEach(([M, i]) => {
216
+ n.style.setProperty(`--j-color-${M}`, i);
217
+ }), console.log("[twcpt] Custom colors applied:", t);
218
+ }
219
+ const G = {
220
+ "app:clear": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgd2lkdGg9IjIwcHgiIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDIwIDIwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINCiAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+DQoNCiAgICA8ZyBpZD0icXVhc2FyLWN1c3RvbS1zdmciIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPg0KICAgICAgICA8ZyBpZD0iZVNJTS1Hcm91cC1BZGQtZmlyc3QtbGV2ZWwtZ3JvdXBzIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNzE5LjAwMDAwMCwgLTMwOS4wMDAwMDApIj4NCiAgICAgICAgICAgIDxnIGlkPSLnvJbnu4QtMTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDM2MS4wMDAwMDAsIDIwMy4wMDAwMDApIj4NCiAgICAgICAgICAgICAgICA8ZyBpZD0i57yW57uELTEyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg5MC4wMDAwMDAsIDcyLjAwMDAwMCkiPg0KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0i57yW57uELTflpIfku70tOCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDI2LjAwMDAwMCkiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Iue8lue7hCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjY4LjAwMDAwMCwgOC4wMDAwMDApIj4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2iIiB4PSIwIiB5PSIwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiPjwvcmVjdD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPSJNMTAsMS42NjY2NjY2NyBDNS40MDUsMS42NjY2NjY2NyAxLjY2NjY2NjY3LDUuNDA1IDEuNjY2NjY2NjcsMTAgQzEuNjY2NjY2NjcsMTQuNTk1IDUuNDA1LDE4LjMzMzMzMzMgMTAsMTguMzMzMzMzMyBDMTQuNTk1LDE4LjMzMzMzMzMgMTguMzMzMzMzMywxNC41OTUgMTguMzMzMzMzMywxMCBDMTguMzMzMzMzMyw1LjQwNSAxNC41OTUsMS42NjY2NjY2NyAxMCwxLjY2NjY2NjY3Ig0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD0iUGF0aCIgZmlsbD0iI0VCRUNGMCIgZmlsbC1ydWxlPSJub256ZXJvIj48L3BhdGg+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTEyLjI1NTgzMzMsNy43NDQxNjY2NyBDMTEuOTMsNy40MTgzMzMzMyAxMS40MDMzMzMzLDcuNDE4MzMzMzMgMTEuMDc3NSw3Ljc0NDE2NjY3IEwxMCw4LjgyMTY2NjY3IEw4LjkyMjUsNy43NDQxNjY2NyBDOC41OTY2NjY2Nyw3LjQxODMzMzMzIDguMDcsNy40MTgzMzMzMyA3Ljc0NDE2NjY3LDcuNzQ0MTY2NjcgQzcuNDE4MzMzMzMsOC4wNyA3LjQxODMzMzMzLDguNTk2NjY2NjcgNy43NDQxNjY2Nyw4LjkyMjUgTDguODIxNjY2NjcsMTAgTDcuNzQ0MTY2NjcsMTEuMDc3NSBDNy40MTgzMzMzMywxMS40MDMzMzMzIDcuNDE4MzMzMzMsMTEuOTMgNy43NDQxNjY2NywxMi4yNTU4MzMzIEM3LjkwNjY2NjY3LDEyLjQxODMzMzMgOC4xMiwxMi41IDguMzMzMzMzMzMsMTIuNSBDOC41NDY2NjY2NywxMi41IDguNzYsMTIuNDE4MzMzMyA4LjkyMjUsMTIuMjU1ODMzMyBMMTAsMTEuMTc4MzMzMyBMMTEuMDc3NSwxMi4yNTU4MzMzIEMxMS4yNCwxMi40MTgzMzMzIDExLjQ1MzMzMzMsMTIuNSAxMS42NjY2NjY3LDEyLjUgQzExLjg4LDEyLjUgMTIuMDkzMzMzMywxMi40MTgzMzMzIDEyLjI1NTgzMzMsMTIuMjU1ODMzMyBDMTIuNTgxNjY2NywxMS45MyAxMi41ODE2NjY3LDExLjQwMzMzMzMgMTIuMjU1ODMzMywxMS4wNzc1IEwxMS4xNzgzMzMzLDEwIEwxMi4yNTU4MzMzLDguOTIyNSBDMTIuNTgxNjY2Nyw4LjU5NjY2NjY3IDEyLjU4MTY2NjcsOC4wNyAxMi4yNTU4MzMzLDcuNzQ0MTY2NjciDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPSJQYXRoIiBmaWxsPSIjOTk5REI0IiBmaWxsLXJ1bGU9Im5vbnplcm8iPjwvcGF0aD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZz4NCiAgICAgICAgICAgICAgICAgICAgPC9nPg0KICAgICAgICAgICAgICAgIDwvZz4NCiAgICAgICAgICAgIDwvZz4NCiAgICAgICAgPC9nPg0KICAgIDwvZz4NCjwvc3ZnPg==",
221
+ "app:delete-confirm": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGNpcmNsZSBmaWxsPSIjRTIxQTFBIiByPSIxMCIgY3k9IjEyIiBjeD0iMTIiLz48cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJNMTUuMDQxIDcuODdhLjc1Ljc1IDAgMCAxIDEuMDYgMS4wNmwtMy4wNDEgMy4wNCAzLjA0MiAzLjA0M2EuNzUuNzUgMCAwIDEtMS4wNiAxLjA2bC0zLjA0My0zLjA0Mi0zLjA0IDMuMDQyYS43NS43NSAwIDAgMS0xLjA2MS0xLjA2bDMuMDQtMy4wNDItMy4wNC0zLjA0MWEuNzUuNzUgMCAwIDEgMS4wNi0xLjA2TDEyIDEwLjkxbDMuMDQyLTMuMDRaIi8+PC9zdmc+",
222
+ "app:dialog-close": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGlkPSJpY29uL2NvbW1vbi9jbG9zZSI+DQo8ZyBpZD0iR3JvdXAgMTAwMDAwNDc0OCI+DQo8cGF0aCBpZD0iVmVjdG9yIChTdHJva2UpIiBkPSJNMTQuMDAwMSAyLjgzNzM1TDguODM3MjIgNy45OTk0N0wxNC4wMDAxIDEzLjE2MjRMMTMuNTgxNiAxMy41ODE3TDEzLjE2MjIgMTQuMDAwMkw3Ljk5OTM1IDguODM3MzVMMi44MzcyMiAxNC4wMDAyTDIuMDAwMTIgMTMuMTYyNEw3LjE2MjI1IDcuOTk5NDdMMi4wMDAxMiAyLjgzNzM1TDIuODM3MjIgMi4wMDAyNEw3Ljk5OTM1IDcuMTYyMzdMMTMuMTYyMiAyLjAwMDI0TDE0LjAwMDEgMi44MzczNVoiIGZpbGw9IiM1QTYwN0YiLz4NCjwvZz4NCjwvZz4NCjwvc3ZnPg0K",
223
+ "app:dropdown-btn-white": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBpZD0iR3JvdXAgMTI0NTAwMCI+DQogICAgICAgIDxnIGlkPSJjaGV2cm9uLWRvd24iPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlZlY3RvciIgZD0iTTYgOUwxMiAxNUwxOCA5IiBzdHJva2U9IiNmZmZmZmYiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPg0KICAgICAgICA8L2c+DQogICAgPC9nPg0KPC9zdmc+",
224
+ "app:dropdown-btn": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgICA8ZyBpZD0iR3JvdXAgMTI0NTAwMCI+DQogICAgICAgIDxnIGlkPSJjaGV2cm9uLWRvd24iPg0KICAgICAgICAgICAgPHBhdGggaWQ9IlZlY3RvciIgZD0iTTYgOUwxMiAxNUwxOCA5IiBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPg0KICAgICAgICA8L2c+DQogICAgPC9nPg0KPC9zdmc+",
225
+ "app:edit": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZmlsbD0iIzVBNjA3RiIgZD0iTTE5Ljk5OCAyMC4yNWEuNzUuNzUgMCAwIDEgMCAxLjVoLTE2YS43NS43NSAwIDAgMSAwLTEuNWgxNlpNMTMuOSAzLjg4NWEyLjc1IDIuNzUgMCAwIDEgMy44OTEgMGwuODI0LjgyNWEyLjc1IDIuNzUgMCAwIDEgMCAzLjg4OEw5Ljk4IDE3LjIzN2ExLjc1MSAxLjc1MSAwIDAgMS0xLjIzOC41MTNINS40OThhLjc1Ljc1IDAgMCAxLS43NS0uNzV2LTMuMjI3YzAtLjQ2My4xODQtLjkwOC41MTItMS4yMzZsOC42NC04LjY1MlptMi44MyAxLjA2YTEuMjUgMS4yNSAwIDAgMC0xLjc2OCAwbC04LjY0IDguNjUxYS4yNTIuMjUyIDAgMCAwLS4wNzQuMTc3djIuNDc3aDIuNDk0YS4yNS4yNSAwIDAgMCAuMTc3LS4wNzRsOC42MzYtOC42MzhhMS4yNSAxLjI1IDAgMCAwIDAtMS43NjhsLS44MjUtLjgyNFoiIGRhdGEtZm9sbG93LWZpbGw9IiM1QTYwN0YiLz48L3N2Zz4=",
226
+ "app:more-horizontal": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNzY3NjY5NzY1ODg1IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjMyNDEiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PHBhdGggZD0iTTE2OC40NSA0MDcuNTU5QzExMC43NjYgNDA3LjU1OSA2NCA0NTQuMzA1IDY0IDUxMi4wMWMwIDU3LjY4NiA0Ni43NjYgMTA0LjQzMSAxMDQuNDUgMTA0LjQzMVMyNzIuOSA1NjkuNjk1IDI3Mi45IDUxMi4wMWMwLjAwMS01Ny43MDUtNDYuNzY2LTEwNC40NTEtMTA0LjQ1LTEwNC40NTF6IG0zMzMuMTM5IDBjLTU3LjY4NSAwLTEwNC40NSA0Ni43NDYtMTA0LjQ1IDEwNC40NSAwIDU3LjY4NiA0Ni43NjcgMTA0LjQzMSAxMDQuNDUgMTA0LjQzMXMxMDQuNDUtNDYuNzQ2IDEwNC40NS0xMDQuNDMxYzAtNTcuNzA0LTQ2Ljc2NS0xMDQuNDUtMTA0LjQ1LTEwNC40NXogbTM1My45NjEgMGMtNTcuNjg2IDAtMTA0LjQ1MiA0Ni43NDYtMTA0LjQ1MiAxMDQuNDUgMCA1Ny42ODYgNDYuNzY3IDEwNC40MzEgMTA0LjQ1MiAxMDQuNDMxIDU3LjY4NiAwIDEwNC40NS00Ni43NDYgMTA0LjQ1LTEwNC40MzEtMC4wMDEtNTcuNzA0LTQ2Ljc2Ni0xMDQuNDUtMTA0LjQ1LTEwNC40NXoiIHAtaWQ9IjMyNDIiIGZpbGw9IiMzMjMyMzIiPjwvcGF0aD48L3N2Zz4=",
227
+ "app:navigation-arrow-left": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINCiAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+DQogICAgPHRpdGxlPue8lue7hCA0PC90aXRsZT4NCiAgICA8ZGVmcz4NCiAgICAgICAgPHBhdGgNCiAgICAgICAgICAgIGQ9Ik0xMC41LDE3IEMxMC4yNDQsMTcgOS45ODgsMTYuOTAyIDkuNzkzLDE2LjcwNyBDOS40MDIsMTYuMzE2IDkuNDAyLDE1LjY4NCA5Ljc5MywxNS4yOTMgTDEzLjA5OCwxMS45ODggTDkuOTE4LDguNjk1IEM5LjUzNSw4LjI5NyA5LjU0Niw3LjY2NCA5Ljk0Myw3LjI4MSBDMTAuMzQxLDYuODk4IDEwLjk3NCw2LjkwOSAxMS4zNTcsNy4zMDUgTDE1LjIxOSwxMS4zMDUgQzE1LjU5OCwxMS42OTggMTUuNTkzLDEyLjMyMSAxNS4yMDcsMTIuNzA3IEwxMS4yMDcsMTYuNzA3IEMxMS4wMTIsMTYuOTAyIDEwLjc1NiwxNyAxMC41LDE3Ig0KICAgICAgICAgICAgaWQ9InBhdGgtMSI+PC9wYXRoPg0KICAgIDwvZGVmcz4NCiAgICA8ZyBpZD0icXVhc2FyLWN1c3RvbS1zdmciIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPg0KICAgICAgICA8ZyBpZD0iY29uc29sZeiuvuiuoeinhOiMgyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTQ1Ny4wMDAwMDAsIC00ODguMDAwMDAwKSI+DQogICAgICAgICAgICA8ZyBpZD0i566t5aS0LeWPsyINCiAgICAgICAgICAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0NjkuMDAwMDAwLCA1MDAuMDAwMDAwKSBzY2FsZSgtMSwgMSkgcm90YXRlKC05MC4wMDAwMDApIHRyYW5zbGF0ZSgtNDY5LjAwMDAwMCwgLTUwMC4wMDAwMDApIHRyYW5zbGF0ZSg0NTcuMDAwMDAwLCA0ODguMDAwMDAwKSI+DQogICAgICAgICAgICAgICAgPGcgaWQ9Iue8lue7hCINCiAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIuMDAwMDAwLCAxMi4wMDAwMDApIHNjYWxlKDEsIC0xKSByb3RhdGUoLTkwLjAwMDAwMCkgdHJhbnNsYXRlKC0xMi4wMDAwMDAsIC0xMi4wMDAwMDApIHRyYW5zbGF0ZSgwLjAwMDAwMCwgMC4wMDAwMDApIj4NCiAgICAgICAgICAgICAgICAgICAgPHJlY3QgaWQ9IuefqeW9ouWkh+S7vS0yIiB4PSIwIiB5PSIwIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPjwvcmVjdD4NCiAgICAgICAgICAgICAgICAgICAgPG1hc2sgaWQ9Im1hc2stMiIgZmlsbD0id2hpdGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPSIjcGF0aC0xIj48L3VzZT4NCiAgICAgICAgICAgICAgICAgICAgPC9tYXNrPg0KICAgICAgICAgICAgICAgICAgICA8dXNlIGlkPSLwn46oLUljb24t0KFvbG9yIiBmaWxsPSIjM0I0MTcwIiBmaWxsLXJ1bGU9Im5vbnplcm8iIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPg0KICAgICAgICAgICAgICAgIDwvZz4NCiAgICAgICAgICAgIDwvZz4NCiAgICAgICAgPC9nPg0KICAgIDwvZz4NCjwvc3ZnPg==",
228
+ "app:navigation-arrow-right": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINCiAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+DQogICAgPHRpdGxlPue8lue7hCA0PC90aXRsZT4NCiAgICA8ZGVmcz4NCiAgICAgICAgPHBhdGgNCiAgICAgICAgICAgIGQ9Ik0xMC41LDE3IEMxMC4yNDQsMTcgOS45ODgsMTYuOTAyIDkuNzkzLDE2LjcwNyBDOS40MDIsMTYuMzE2IDkuNDAyLDE1LjY4NCA5Ljc5MywxNS4yOTMgTDEzLjA5OCwxMS45ODggTDkuOTE4LDguNjk1IEM5LjUzNSw4LjI5NyA5LjU0Niw3LjY2NCA5Ljk0Myw3LjI4MSBDMTAuMzQxLDYuODk4IDEwLjk3NCw2LjkwOSAxMS4zNTcsNy4zMDUgTDE1LjIxOSwxMS4zMDUgQzE1LjU5OCwxMS42OTggMTUuNTkzLDEyLjMyMSAxNS4yMDcsMTIuNzA3IEwxMS4yMDcsMTYuNzA3IEMxMS4wMTIsMTYuOTAyIDEwLjc1NiwxNyAxMC41LDE3Ig0KICAgICAgICAgICAgaWQ9InBhdGgtMSI+PC9wYXRoPg0KICAgIDwvZGVmcz4NCiAgICA8ZyBpZD0icXVhc2FyLWN1c3RvbS1zdmciIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPg0KICAgICAgICA8ZyBpZD0iY29uc29sZeiuvuiuoeinhOiMgyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTQyNS4wMDAwMDAsIC00ODguMDAwMDAwKSI+DQogICAgICAgICAgICA8ZyBpZD0i566t5aS0LeW3piINCiAgICAgICAgICAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0MzcuMDAwMDAwLCA1MDAuMDAwMDAwKSByb3RhdGUoLTkwLjAwMDAwMCkgdHJhbnNsYXRlKC00MzcuMDAwMDAwLCAtNTAwLjAwMDAwMCkgdHJhbnNsYXRlKDQyNS4wMDAwMDAsIDQ4OC4wMDAwMDApIj4NCiAgICAgICAgICAgICAgICA8ZyBpZD0i57yW57uEIg0KICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMi4wMDAwMDAsIDEyLjAwMDAwMCkgc2NhbGUoMSwgLTEpIHJvdGF0ZSgtOTAuMDAwMDAwKSB0cmFuc2xhdGUoLTEyLjAwMDAwMCwgLTEyLjAwMDAwMCkgdHJhbnNsYXRlKDAuMDAwMDAwLCAwLjAwMDAwMCkiPg0KICAgICAgICAgICAgICAgICAgICA8cmVjdCBpZD0i55+p5b2i5aSH5Lu9LTIiIHg9IjAiIHk9IjAiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCI+PC9yZWN0Pg0KICAgICAgICAgICAgICAgICAgICA8bWFzayBpZD0ibWFzay0yIiBmaWxsPSJ3aGl0ZSI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPg0KICAgICAgICAgICAgICAgICAgICA8L21hc2s+DQogICAgICAgICAgICAgICAgICAgIDx1c2UgaWQ9IvCfjqgtSWNvbi3QoW9sb3IiIGZpbGw9IiMzQjQxNzAiIGZpbGwtcnVsZT0ibm9uemVybyIgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+DQogICAgICAgICAgICAgICAgPC9nPg0KICAgICAgICAgICAgPC9nPg0KICAgICAgICA8L2c+DQogICAgPC9nPg0KPC9zdmc+",
229
+ "app:question": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGcgaWQ9Imljb25fcXVlc3Rpb25fZmlsbCI+DQogICAgPGcgaWQ9IiYjMjI5OyYjMTU1OyYjMTkwOyYjMjI5OyYjMTc3OyYjMTMwOyAxIj4NCiAgICAgIDxwYXRoIGlkPSJWZWN0b3IiIGQ9Ik0xMS45OTgxIDAuOTk5MzlDOS44MjI0NiAwLjk5OTM5IDcuNjk1NzIgMS42NDQ1MyA1Ljg4Njc4IDIuODUzMjJDNC4wNzc4NCA0LjA2MTkyIDIuNjY3OTQgNS43Nzk4OCAxLjgzNTM4IDcuNzg5ODdDMS4wMDI4MSA5Ljc5OTg2IDAuNzg0OTc2IDEyLjAxMTYgMS4yMDk0MSAxNC4xNDU0QzEuNjMzODUgMTYuMjc5MiAyLjY4MTUgMTguMjM5MiA0LjIxOTg4IDE5Ljc3NzZDNS43NTgyNiAyMS4zMTU5IDcuNzE4MjcgMjIuMzYzNiA5Ljg1MjA2IDIyLjc4OEMxMS45ODU4IDIzLjIxMjUgMTQuMTk3NiAyMi45OTQ2IDE2LjIwNzYgMjIuMTYyMUMxOC4yMTc2IDIxLjMyOTUgMTkuOTM1NSAxOS45MTk2IDIxLjE0NDIgMTguMTEwN0MyMi4zNTI5IDE2LjMwMTcgMjIuOTk4MSAxNC4xNzUgMjIuOTk4MSAxMS45OTk0QzIyLjk5ODEgOS4wODIwMSAyMS44MzkxIDYuMjg0MTEgMTkuNzc2MiA0LjIyMTIyQzE3LjcxMzMgMi4xNTgzMiAxNC45MTU0IDAuOTk5MzkgMTEuOTk4MSAwLjk5OTM5Wk0xMS45OTgxIDIwLjk5OTRDLTE4LjMxNzkgMjAuOTk5NCA0MS40MzEgMjAuOTk5NCAxMS45OTgxIDIwLjk5OTRWMjAuOTk5NFoiIGZpbGw9IiNFNkU5RjQiLz4NCiAgICAgIDxwYXRoIGlkPSJWZWN0b3JfMiIgZD0iTTExLjk5ODQgNS41MTk3MUMxMC44ODg4IDUuNTIyMzUgOS44MjU2NiA1Ljk2NDk3IDkuMDQyMDQgNi43NTA0NkM4LjI1ODQzIDcuNTM1OTUgNy44MTgzNiA4LjYwMDE4IDcuODE4MzYgOS43MDk3SDkuNjI4MzZDOS42MjYzOCA5LjI0MDU0IDkuNzYzNjkgOC43ODEzNSAxMC4wMjI5IDguMzkwMjlDMTAuMjgyMSA3Ljk5OTIzIDEwLjY1MTYgNy42OTM5MSAxMS4wODQ0IDcuNTEyOTlDMTEuNTE3MyA3LjMzMjA4IDExLjk5NDIgNy4yODM3MiAxMi40NTQ2IDcuMzc0MDNDMTIuOTE1IDcuNDY0MzUgMTMuMzM4MiA3LjY4OTI3IDEzLjY3MDYgOC4wMjAzMkMxNC4wMDMxIDguMzUxMzcgMTQuMjI5OCA4Ljc3MzY1IDE0LjMyMjEgOS4yMzM2NUMxNC40MTQzIDkuNjkzNjYgMTQuMzY4IDEwLjE3MDcgMTQuMTg4OSAxMC42MDQzQzE0LjAwOTggMTEuMDM4IDEzLjcwNjEgMTEuNDA4NyAxMy4zMTYxIDExLjY2OTZDMTIuOTI2MSAxMS45MzA0IDEyLjQ2NzUgMTIuMDY5NyAxMS45OTg0IDEyLjA2OTdDMTEuNzU2MSAxMi4wNjk3IDExLjUyMzYgMTIuMTY1MiAxMS4zNTEzIDEyLjMzNTZDMTEuMTc5MSAxMi41MDYgMTEuMDgxIDEyLjczNzQgMTEuMDc4NCAxMi45Nzk3VjE1LjEzOTdIMTIuODk4NFYxMy43ODk3QzEzLjkxMjkgMTMuNTc1OSAxNC44MTE5IDEyLjk5MjYgMTUuNDIwNSAxMi4xNTMyQzE2LjAyOTIgMTEuMzEzOCAxNi4zMDQxIDEwLjI3ODEgMTYuMTkxOSA5LjI0NzNDMTYuMDc5NyA4LjIxNjUyIDE1LjU4ODUgNy4yNjQyMiAxNC44MTM1IDYuNTc1MzZDMTQuMDM4NSA1Ljg4NjUgMTMuMDM1MiA1LjUxMDI2IDExLjk5ODQgNS41MTk3MVoiIGZpbGw9IiM3RTg0QTMiLz4NCiAgICAgIDxwYXRoIGlkPSJWZWN0b3JfMyIgZD0iTTEyLjAwMTMgMTYuMTJDMTEuNzc1OSAxNi4xMiAxMS41NTU1IDE2LjE4NjkgMTEuMzY4IDE2LjMxMjJDMTEuMTgwNSAxNi40Mzc0IDExLjAzNDQgMTYuNjE1NSAxMC45NDgxIDE2LjgyMzhDMTAuODYxOCAxNy4wMzIxIDEwLjgzOTIgMTcuMjYxMyAxMC44ODMyIDE3LjQ4MjRDMTAuOTI3MiAxNy43MDM2IDExLjAzNTggMTcuOTA2NyAxMS4xOTUyIDE4LjA2NjFDMTEuMzU0NyAxOC4yMjU2IDExLjU1NzggMTguMzM0MSAxMS43Nzg5IDE4LjM3ODFDMTIuMDAwMSAxOC40MjIxIDEyLjIyOTMgMTguMzk5NSAxMi40Mzc2IDE4LjMxMzNDMTIuNjQ1OSAxOC4yMjcgMTIuODIzOSAxOC4wODA5IDEyLjk0OTIgMTcuODkzNEMxMy4wNzQ1IDE3LjcwNTkgMTMuMTQxMyAxNy40ODU1IDEzLjE0MTMgMTcuMjZDMTMuMTQyNyAxNy4xMSAxMy4xMTQxIDE2Ljk2MTEgMTMuMDU3MyAxNi44MjIyQzEzLjAwMDUgMTYuNjgzMyAxMi45MTY1IDE2LjU1NzEgMTIuODEwNCAxNi40NTFDMTIuNzA0MyAxNi4zNDQ4IDEyLjU3ODEgMTYuMjYwOSAxMi40MzkyIDE2LjIwNDFDMTIuMzAwMiAxNi4xNDczIDEyLjE1MTQgMTYuMTE4NyAxMi4wMDEzIDE2LjEyWiIgZmlsbD0iIzdFODRBMyIvPg0KICAgIDwvZz4NCiAgPC9nPg0KPC9zdmc+",
230
+ "app:radio-checked": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGlkPSJHcm91cCAxMjQ1MzY0Ij4NCjxnIGlkPSJHcm91cCAxMjQ1MzY1Ij4NCjxwYXRoIGlkPSJTdWJ0cmFjdCIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC42NjY3IDguMDAwMDRDMTQuNjY2NyAxMS42ODE5IDExLjY4MTkgMTQuNjY2NyA4LjAwMDA0IDE0LjY2NjdDNC4zMTgxNCAxNC42NjY3IDEuMzMzMzcgMTEuNjgxOSAxLjMzMzM3IDguMDAwMDRDMS4zMzMzNyA0LjMxODE0IDQuMzE4MTQgMS4zMzMzNyA4LjAwMDA0IDEuMzMzMzdDMTEuNjgxOSAxLjMzMzM3IDE0LjY2NjcgNC4zMTgxNCAxNC42NjY3IDguMDAwMDRaTTExLjMzMzQgOC4wMDAwOEMxMS4zMzM0IDkuODQxMDMgOS44NDEwMyAxMS4zMzM0IDguMDAwMDggMTEuMzMzNEM2LjE1OTEzIDExLjMzMzQgNC42NjY3NSA5Ljg0MTAzIDQuNjY2NzUgOC4wMDAwOEM0LjY2Njc1IDYuMTU5MTMgNi4xNTkxMyA0LjY2Njc1IDguMDAwMDggNC42NjY3NUM5Ljg0MTAzIDQuNjY2NzUgMTEuMzMzNCA2LjE1OTEzIDExLjMzMzQgOC4wMDAwOFoiIGZpbGw9IiMwQjVDRkYiLz4NCjwvZz4NCjwvZz4NCjwvc3ZnPg==",
231
+ "app:radio-unchecked": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGlkPSJHcm91cCAxMjQ1MzYxIj4NCjxwYXRoIGlkPSJWZWN0b3IgKFN0cm9rZSkiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNOC4wMDAwNCAxMy42NjY3QzExLjEyOTcgMTMuNjY2NyAxMy42NjY3IDExLjEyOTcgMTMuNjY2NyA4LjAwMDA0QzEzLjY2NjcgNC44NzA0MyAxMS4xMjk3IDIuMzMzMzcgOC4wMDAwNCAyLjMzMzM3QzQuODcwNDMgMi4zMzMzNyAyLjMzMzM3IDQuODcwNDMgMi4zMzMzNyA4LjAwMDA0QzIuMzMzMzcgMTEuMTI5NyA0Ljg3MDQzIDEzLjY2NjcgOC4wMDAwNCAxMy42NjY3Wk0xNC42NjY3IDguMDAwMDRDMTQuNjY2NyAxMS42ODE5IDExLjY4MTkgMTQuNjY2NyA4LjAwMDA0IDE0LjY2NjdDNC4zMTgxNCAxNC42NjY3IDEuMzMzMzcgMTEuNjgxOSAxLjMzMzM3IDguMDAwMDRDMS4zMzMzNyA0LjMxODE0IDQuMzE4MTQgMS4zMzMzNyA4LjAwMDA0IDEuMzMzMzdDMTEuNjgxOSAxLjMzMzM3IDE0LjY2NjcgNC4zMTgxNCAxNC42NjY3IDguMDAwMDRaIiBmaWxsPSIjRENERUUwIi8+DQo8L2c+DQo8L3N2Zz4NCg==",
232
+ "app:rt-copy": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGlkPSJpY29uL2xpbmUvY29weSI+DQo8cGF0aCBpZD0iVW5pb24iIGQ9Ik0xMS41NDE3IDIuMDAzMjZDMTIuMTkxOCAyLjAxMzQ3IDEyLjU4NzMgMi4wNTQ2IDEyLjkwODIgMi4yMTgxQzEzLjI4NDQgMi40MDk4MiAxMy41OTAyIDIuNzE1NjUgMTMuNzgxOSAzLjA5MThDMTMuOTk5OSAzLjUxOTYgMTQgNC4wNzk4NSAxNCA1LjE5OTg3VjguODAwMTNMMTMuOTk2NyA5LjU0MTY3QzEzLjk4NjUgMTAuMTkxOCAxMy45NDU0IDEwLjU4NzMgMTMuNzgxOSAxMC45MDgyTDEzLjcwNTEgMTEuMDQ1NkMxMy41MTMgMTEuMzU4OSAxMy4yMzc1IDExLjYxNDEgMTIuOTA4MiAxMS43ODE5TDEyLjgyNjIgMTEuODIwM0MxMi42MDI2IDExLjkxNjQgMTIuMzM5MSAxMS45NjAzIDExLjk4MTggMTEuOTgxMUMxMS45NTgzIDEyLjM4MzQgMTEuOTA0OSAxMi42NjY5IDExLjc4MTkgMTIuOTA4MkwxMS43MDUxIDEzLjA0NTZDMTEuNTEzIDEzLjM1ODkgMTEuMjM3NSAxMy42MTQxIDEwLjkwODIgMTMuNzgxOUwxMC44MjYyIDEzLjgyMDNDMTAuNTE5NSAxMy45NTIxIDEwLjEzNzcgMTMuOTg3NCA5LjU0MTY3IDEzLjk5NjdMOC44MDAxMyAxNEg1LjE5OTg3QzQuMDc5ODUgMTQgMy41MTk2IDEzLjk5OTkgMy4wOTE4IDEzLjc4MTlDMi43NjI1NCAxMy42MTQxIDIuNDg3MDUgMTMuMzU4OSAyLjI5NDkyIDEzLjA0NTZMMi4yMTgxIDEyLjkwODJDMi4wNTQ2IDEyLjU4NzMgMi4wMTM0NyAxMi4xOTE4IDIuMDAzMjYgMTEuNTQxN0wyIDEwLjgwMDFWNy4xOTk4N0MyIDYuMTQ5NzkgMi4wMDAwNSA1LjU5MTk3IDIuMTc5NjkgNS4xNzM4M0wyLjIxODEgNS4wOTE4QzIuMzg1OTIgNC43NjI1NCAyLjY0MTExIDQuNDg3MDUgMi45NTQ0MyA0LjI5NDkyTDMuMDkxOCA0LjIxODFDMy4zMzMxIDQuMDk1MTUgMy42MTY2MiA0LjA0MjkzIDQuMDE4ODggNC4wMTk1M0M0LjAzOTQxIDMuNjYxNTUgNC4wODM1MiAzLjM5NzY3IDQuMTc5NjkgMy4xNzM4M0w0LjIxODEgMy4wOTE4QzQuMzg1OTIgMi43NjI1NCA0LjY0MTExIDIuNDg3MDUgNC45NTQ0MyAyLjI5NDkyTDUuMDkxOCAyLjIxODFDNS41MTk2IDIuMDAwMTIgNi4wNzk4NSAyIDcuMTk5ODcgMkgxMC44MDAxTDExLjU0MTcgMi4wMDMyNlpNNS4xOTk4NyA1QzQuNjIzNTYgNSA0LjI1MTM4IDUuMDAwOTYgMy45NjgxIDUuMDI0MDlDMy42OTY5NSA1LjA0NjI0IDMuNTk1NzcgNS4wODM1MyAzLjU0NjIyIDUuMTA4NzJDMy4zNTgwNiA1LjIwNDYgMy4yMDQ2IDUuMzU4MDYgMy4xMDg3MiA1LjU0NjIyQzMuMDgzNTMgNS41OTU3NyAzLjA0NjI0IDUuNjk2OTUgMy4wMjQwOSA1Ljk2ODFDMy4wMTI1MyA2LjEwOTcxIDMuMDA2MzQgNi4yNzM1MiAzLjAwMzI2IDYuNDczOTZMMyA3LjE5OTg3VjEwLjgwMDFDMyAxMS4zNzY0IDMuMDAwOTYgMTEuNzQ4NiAzLjAyNDA5IDEyLjAzMTlDMy4wNDYyNCAxMi4zMDMxIDMuMDgzNTMgMTIuNDA0MiAzLjEwODcyIDEyLjQ1MzhDMy4yMDQ2IDEyLjY0MTkgMy4zNTgwNiAxMi43OTU0IDMuNTQ2MjIgMTIuODkxM0MzLjU5NTc3IDEyLjkxNjUgMy42OTY5NSAxMi45NTM4IDMuOTY4MSAxMi45NzU5QzQuMjUxMzggMTIuOTk5IDQuNjIzNTYgMTMgNS4xOTk4NyAxM0g4LjgwMDEzQzkuMzc2NDQgMTMgOS43NDg2MiAxMi45OTkgMTAuMDMxOSAxMi45NzU5QzEwLjMwMzEgMTIuOTUzOCAxMC40MDQyIDEyLjkxNjUgMTAuNDUzOCAxMi44OTEzQzEwLjY0MTkgMTIuNzk1NCAxMC43OTU0IDEyLjY0MTkgMTAuODkxMyAxMi40NTM4QzEwLjkxNjUgMTIuNDA0MiAxMC45NTM4IDEyLjMwMzEgMTAuOTc1OSAxMi4wMzE5QzEwLjk5OSAxMS43NDg2IDExIDExLjM3NjQgMTEgMTAuODAwMVY3LjE5OTg3QzExIDYuNjIzNTYgMTAuOTk5IDYuMjUxMzggMTAuOTc1OSA1Ljk2ODFDMTAuOTUzOCA1LjY5Njk1IDEwLjkxNjUgNS41OTU3NyAxMC44OTEzIDUuNTQ2MjJDMTAuNzk1NCA1LjM1ODA2IDEwLjY0MTkgNS4yMDQ2IDEwLjQ1MzggNS4xMDg3MkMxMC40MDQyIDUuMDgzNTMgMTAuMzAzMSA1LjA0NjI0IDEwLjAzMTkgNS4wMjQwOUM5Ljg5MDI5IDUuMDEyNTMgOS43MjY0OCA1LjAwNjM0IDkuNTI2MDQgNS4wMDMyNkw4LjgwMDEzIDVINS4xOTk4N1pNNy4xOTk4NyAzQzYuNjIzNTYgMyA2LjI1MTM4IDMuMDAwOTYgNS45NjgxIDMuMDI0MDlDNS42OTY5NSAzLjA0NjI0IDUuNTk1NzcgMy4wODM1MyA1LjU0NjIyIDMuMTA4NzJDNS4zNTgwNiAzLjIwNDYgNS4yMDQ2IDMuMzU4MDYgNS4xMDg3MiAzLjU0NjIyQzUuMDgzNTMgMy41OTU3NyA1LjA0NjI0IDMuNjk2OTUgNS4wMjQwOSAzLjk2ODFDNS4wMjMyMSAzLjk3ODgxIDUuMDIyOTUgMy45ODk2OCA1LjAyMjE0IDQuMDAwNjVDNS4wNzk3NyA0LjAwMDYyIDUuMTM4OTkgNCA1LjE5OTg3IDRIOC44MDAxM0w5LjU0MTY3IDQuMDAzMjZDMTAuMTkxOCA0LjAxMzQ3IDEwLjU4NzMgNC4wNTQ2IDEwLjkwODIgNC4yMTgxQzExLjI4NDQgNC40MDk4MiAxMS41OTAyIDQuNzE1NjUgMTEuNzgxOSA1LjA5MThDMTEuOTk5OSA1LjUxOTYgMTIgNi4wNzk4NSAxMiA3LjE5OTg3VjEwLjgwMDFMMTEuOTk4NyAxMC45NzcyQzEyLjAwOTkgMTAuOTc2NCAxMi4wMjEgMTAuOTc2OCAxMi4wMzE5IDEwLjk3NTlDMTIuMzAzMSAxMC45NTM4IDEyLjQwNDIgMTAuOTE2NSAxMi40NTM4IDEwLjg5MTNDMTIuNjQxOSAxMC43OTU0IDEyLjc5NTQgMTAuNjQxOSAxMi44OTEzIDEwLjQ1MzhDMTIuOTE2NSAxMC40MDQyIDEyLjk1MzggMTAuMzAzMSAxMi45NzU5IDEwLjAzMTlDMTIuOTk5IDkuNzQ4NjIgMTMgOS4zNzY0NCAxMyA4LjgwMDEzVjUuMTk5ODdDMTMgNC42MjM1NiAxMi45OTkgNC4yNTEzOCAxMi45NzU5IDMuOTY4MUMxMi45NTM4IDMuNjk2OTUgMTIuOTE2NSAzLjU5NTc3IDEyLjg5MTMgMy41NDYyMkMxMi43OTU0IDMuMzU4MDYgMTIuNjQxOSAzLjIwNDYgMTIuNDUzOCAzLjEwODcyQzEyLjQwNDIgMy4wODM1MyAxMi4zMDMxIDMuMDQ2MjQgMTIuMDMxOSAzLjAyNDA5QzExLjg5MDMgMy4wMTI1MyAxMS43MjY1IDMuMDA2MzQgMTEuNTI2IDMuMDAzMjZMMTAuODAwMSAzSDcuMTk5ODdaIiBmaWxsPSIjOTY5Nzk5Ii8+DQo8L2c+DQo8L3N2Zz4=",
233
+ "app:table-check": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGlkPSJHcm91cCAxMjQ1MDIyIj4NCjxnIGlkPSJHcm91cCAxMjQ0OTc3Ij4NCjxnIGlkPSImIzIzMzsmIzEyODsmIzEzNzsmIzIyODsmIzE4NDsmIzE3MzsiPg0KPHBhdGggaWQ9IlJlY3RhbmdsZS02MS1Db3B5IiBkPSJNMTkuNSAySDQuNUMzLjExOTI5IDIgMiAzLjExOTI5IDIgNC41VjE5LjVDMiAyMC44ODA3IDMuMTE5MjkgMjIgNC41IDIySDE5LjVDMjAuODgwNyAyMiAyMiAyMC44ODA3IDIyIDE5LjVWNC41QzIyIDMuMTE5MjkgMjAuODgwNyAyIDE5LjUgMloiIGZpbGw9IiMwQjVDRkYiLz4NCjxwYXRoIGlkPSJQYWdlLTEiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNS45MTYyIDEyLjU1MTlDNS42OTQ2IDEyLjMxNjkgNS42OTQ2IDExLjkzNDQgNS45MTYyIDExLjY5NjhMNi43MTk2NSAxMC44NDNDNi45NDEyNSAxMC42MDggNy4zMDE0OSAxMC42MDggNy41MjMwOSAxMC44NDNMMTAuMjk1OSAxMy44MzM0TDE2LjQ3NjkgNy4xNzYyN0MxNi42OTg1IDYuOTQxMjQgMTcuMDU4OCA2Ljk0MTI0IDE3LjI4MDQgNy4xNzYyN0wxOC4wODM4IDguMDMxMzhDMTguMzA1NCA4LjI2NjQxIDE4LjMwNTQgOC42NTAyMSAxOC4wODM4IDguODgzOTlMMTAuNjk3MSAxNi44MjM3QzEwLjQ3NTUgMTcuMDU4OCAxMC4xMTUzIDE3LjA1ODggOS44OTM2NSAxNi44MjM3TDUuOTE2MiAxMi41NTE5WiIgZmlsbD0id2hpdGUiLz4NCjwvZz4NCjwvZz4NCjwvZz4NCjwvc3ZnPg==",
234
+ "app:table-not-check": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGlkPSJHcm91cCAxMjQ1MDIwIj4NCjxnIGlkPSJHcm91cCAxMjQ0OTc2Ij4NCjxnIGlkPSImIzIzMTsmIzE1OTsmIzE2OTsmIzIyOTsmIzE4OTsmIzE2MjsiPg0KPHBhdGggZD0iTTE5LjMzMzMgMkg0LjY2NjY3QzMuMTkzOTEgMiAyIDMuMTkzOTEgMiA0LjY2NjY3VjE5LjMzMzNDMiAyMC44MDYxIDMuMTkzOTEgMjIgNC42NjY2NyAyMkgxOS4zMzMzQzIwLjgwNjEgMjIgMjIgMjAuODA2MSAyMiAxOS4zMzMzVjQuNjY2NjdDMjIgMy4xOTM5MSAyMC44MDYxIDIgMTkuMzMzMyAyWiIgZmlsbD0id2hpdGUiLz4NCjxwYXRoIGQ9Ik00LjY2NjY3IDIuNjY2NjdIMTkuMzMzM0MyMC40Mzc5IDIuNjY2NjcgMjEuMzMzMyAzLjU2MjEgMjEuMzMzMyA0LjY2NjY3VjE5LjMzMzNDMjEuMzMzMyAyMC40Mzc5IDIwLjQzNzkgMjEuMzMzMyAxOS4zMzMzIDIxLjMzMzNINC42NjY2N0MzLjU2MjEgMjEuMzMzMyAyLjY2NjY3IDIwLjQzNzkgMi42NjY2NyAxOS4zMzMzVjQuNjY2NjdDMi42NjY2NyAzLjU2MjEgMy41NjIxIDIuNjY2NjcgNC42NjY2NyAyLjY2NjY3WiIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLW9wYWNpdHk9IjAuMjUiIHN0cm9rZS13aWR0aD0iMS4zMzMzMyIvPg0KPC9nPg0KPC9nPg0KPC9nPg0KPC9zdmc+",
235
+ "app:table-not-full-check": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCjxnIGlkPSJHcm91cCAxMjQ1MDIxIj4NCjxnIGlkPSJHcm91cCAxMjQ0OTc1Ij4NCjxnIGlkPSImIzIzMDsmIzE1NjsmIzE3MDsmIzIyOTsmIzEzMzsmIzE2ODsmIzIzMzsmIzEyODsmIzEzNzsiPg0KPHBhdGggaWQ9IlJlY3RhbmdsZS02MS1Db3B5IiBkPSJNNC42NjY2NyAyLjY2NjY3SDE5LjMzMzNDMjAuNDM3OSAyLjY2NjY3IDIxLjMzMzMgMy41NjIxIDIxLjMzMzMgNC42NjY2N1YxOS4zMzMzQzIxLjMzMzMgMjAuNDM3OSAyMC40Mzc5IDIxLjMzMzMgMTkuMzMzMyAyMS4zMzMzSDQuNjY2NjdDMy41NjIxIDIxLjMzMzMgMi42NjY2NyAyMC40Mzc5IDIuNjY2NjcgMTkuMzMzM1Y0LjY2NjY3QzIuNjY2NjcgMy41NjIxIDMuNTYyMSAyLjY2NjY3IDQuNjY2NjcgMi42NjY2N1oiIGZpbGw9IndoaXRlIiBzdHJva2U9IiMwQjVDRkYiIHN0cm9rZS13aWR0aD0iMS4zMzMzMyIvPg0KPHBhdGggaWQ9IlJlY3RhbmdsZS03IiBkPSJNMTYuMzc1IDExLjM3NUg3LjYyNVYxMi42MjVIMTYuMzc1VjExLjM3NVoiIHN0cm9rZT0iIzBCNUNGRiIgc3Ryb2tlLXdpZHRoPSIxLjI1Ii8+DQo8L2c+DQo8L2c+DQo8L2c+DQo8L3N2Zz4=",
236
+ "app:upload": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgd2lkdGg9IjQwcHgiIGhlaWdodD0iNDBweCIgdmlld0JveD0iMCAwIDQwIDQwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyINCiAgICB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+DQogICAgPHRpdGxlPue8lue7hCA5PC90aXRsZT4NCiAgICA8ZGVmcz4NCiAgICAgICAgPHBhdGgNCiAgICAgICAgICAgIGQ9Ik0xOC44NDE2NjY3LDE4LjggQzE5LjQ5ODMzMzMsMTguMTczMzMzMyAyMC41MzY2NjY3LDE4LjE3ODMzMzMgMjEuMTc4MzMzMywxOC44MjE2NjY3IEwyMS4xNzgzMzMzLDE4LjgyMTY2NjcgTDI2LjE3ODMzMzMsMjMuODIxNjY2NyBDMjYuODMsMjQuNDczMzMzMyAyNi44MywyNS41MjY2NjY3IDI2LjE3ODMzMzMsMjYuMTc4MzMzMyBDMjUuODUzMzMzMywyNi41MDMzMzMzIDI1LjQyNjY2NjcsMjYuNjY2NjY2NyAyNSwyNi42NjY2NjY3IEMyNC41NzMzMzMzLDI2LjY2NjY2NjcgMjQuMTQ2NjY2NywyNi41MDMzMzMzIDIzLjgyMTY2NjcsMjYuMTc4MzMzMyBMMjMuODIxNjY2NywyNi4xNzgzMzMzIEwyMS42NjY2NjY3LDI0LjAyMzMzMzMgTDIxLjY2NjY2NjcsMzMuMzMzMzMzMyBDMjEuNjY2NjY2NywzNC4yNTUgMjAuOTIsMzUgMjAsMzUgQzE5LjA4LDM1IDE4LjMzMzMzMzMsMzQuMjU1IDE4LjMzMzMzMzMsMzMuMzMzMzMzMyBMMTguMzMzMzMzMywzMy4zMzMzMzMzIEwxOC4zMzMzMzMzLDIzLjkyNjY2NjcgTDE2LjE1ODMzMzMsMjYuMDI2NjY2NyBDMTUuNDk2NjY2NywyNi42NjgzMzMzIDE0LjQ0MTY2NjcsMjYuNjQ2NjY2NyAxMy44MDE2NjY3LDI1Ljk4NSBDMTMuMTYxNjY2NywyNS4zMjE2NjY3IDEzLjE4LDI0LjI2ODMzMzMgMTMuODQxNjY2NywyMy42MjgzMzMzIEwxMy44NDE2NjY3LDIzLjYyODMzMzMgWiBNMTkuOTk5NjY2Nyw0Ljk5OTgzMzMzIEMyNC4zMDEzMzMzLDQuOTk5ODMzMzMgMjguMDkxMzMzMyw3Ljc2ODE2NjY3IDI5LjQ1OCwxMS43NDE1IEMzMy41MjMsMTIuMjkzMTY2NyAzNi42NjYzMzMzLDE1Ljc4NjUgMzYuNjY2MzMzMywxOS45OTk4MzMzIEMzNi42NjYzMzMzLDIyLjAzNDgzMzMgMzUuOTI2MzMzMywyMy45OTMxNjY3IDM0LjU4MywyNS41MTQ4MzMzIEMzNC4yNTMsMjUuODg2NSAzMy43OTQ2NjY3LDI2LjA3ODM3NTQgMzMuMzMzLDI2LjA3ODM3NTQgQzMyLjk0MTMzMzMsMjYuMDc4Mzc1NCAzMi41NDgsMjUuOTQxNSAzMi4yMjk2NjY3LDI1LjY2MTUgQzMxLjU0MTMzMzMsMjUuMDQ5ODMzMyAzMS40NzQ2NjY3LDIzLjk5ODE2NjcgMzIuMDg0NjY2NywyMy4zMDY1IEMzMi44ODk2NjY3LDIyLjM5NjUgMzMuMzMzLDIxLjIxOTgzMzMgMzMuMzMzLDE5Ljk5OTgzMzMgQzMzLjMzMywxNy4yNDMxNjY3IDMxLjA4OTY2NjcsMTQuOTk5ODMzMyAyOC4zMzMsMTQuOTk5ODMzMyBMMjguMzMzLDE0Ljk5OTgzMzMgTDI4LjE2NjMzMzMsMTQuOTk5ODMzMyBDMjcuMzczLDE0Ljk5OTgzMzMgMjYuNjg5NjY2NywxNC40Mzk4MzMzIDI2LjUzMywxMy42NjE1IEMyNS45MDk2NjY3LDEwLjU3NDgzMzMgMjMuMTYzLDguMzMzMTY2NjcgMTkuOTk5NjY2Nyw4LjMzMzE2NjY3IEMxNi44MzgsOC4zMzMxNjY2NyAxNC4wODk2NjY3LDEwLjU3NDgzMzMgMTMuNDY4LDEzLjY2MTUgQzEzLjMxMTMzMzMsMTQuNDM5ODMzMyAxMi42MjYzMzMzLDE0Ljk5OTgzMzMgMTEuODMzLDE0Ljk5OTgzMzMgTDExLjgzMywxNC45OTk4MzMzIEwxMS42NjYzMzMzLDE0Ljk5OTgzMzMgQzguOTA5NjY2NjcsMTQuOTk5ODMzMyA2LjY2NjMzMzMzLDE3LjI0MzE2NjcgNi42NjYzMzMzMywxOS45OTk4MzMzIEM2LjY2NjMzMzMzLDIxLjIxOTgzMzMgNy4xMDk2NjY2NywyMi4zOTY1IDcuOTE2MzMzMzMsMjMuMzA2NSBDOC41MjQ2NjY2NywyMy45OTgxNjY3IDguNDU5NjY2NjcsMjUuMDQ5ODMzMyA3Ljc2OTY2NjY3LDI1LjY2MTUgQzcuMDc5NjY2NjcsMjYuMjcxNSA2LjAyNjMzMzMzLDI2LjIwMzE2NjcgNS40MTgsMjUuNTE0ODMzMyBDNC4wNzMsMjMuOTkzMTY2NyAzLjMzMywyMi4wMzQ4MzMzIDMuMzMzLDE5Ljk5OTgzMzMgQzMuMzMzLDE1Ljc4NjUgNi40NzYzMzMzMywxMi4yOTMxNjY3IDEwLjU0MTMzMzMsMTEuNzQxNSBDMTEuOTA5NjY2Nyw3Ljc2ODE2NjY3IDE1LjY5OTY2NjcsNC45OTk4MzMzMyAxOS45OTk2NjY3LDQuOTk5ODMzMzMgWiINCiAgICAgICAgICAgIGlkPSJwYXRoLTEiPjwvcGF0aD4NCiAgICA8L2RlZnM+DQogICAgPGcgaWQ9InF1YXNhci1jdXN0b20tc3ZnIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4NCiAgICAgICAgPGcgaWQ9ImVTSU0tTGlzdO+8iENTVi1pbXBvcnTvvIkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC04MjcuMDAwMDAwLCAtMzE4LjAwMDAwMCkiPg0KICAgICAgICAgICAgPGcgaWQ9Iue8lue7hC0xMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjcwLjAwMDAwMCwgMTI0LjAwMDAwMCkiPg0KICAgICAgICAgICAgICAgIDxnIGlkPSLnvJbnu4QtOSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTg3LjAwMDAwMCwgMTQ0LjAwMDAwMCkiPg0KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0i57yW57uEIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzNzAuMDAwMDAwLCA1MC4wMDAwMDApIj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IGlkPSLnn6nlvaIiIHg9IjAiIHk9IjAiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCI+PC9yZWN0Pg0KICAgICAgICAgICAgICAgICAgICAgICAgPG1hc2sgaWQ9Im1hc2stMiIgZmlsbD0id2hpdGUiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj0iI3BhdGgtMSI+PC91c2U+DQogICAgICAgICAgICAgICAgICAgICAgICA8L21hc2s+DQogICAgICAgICAgICAgICAgICAgICAgICA8dXNlIGlkPSLwn46oLUljb24tY29sb3IiIGZpbGw9IiM1NTY5RDQiIHhsaW5rOmhyZWY9IiNwYXRoLTEiPjwvdXNlPg0KICAgICAgICAgICAgICAgICAgICA8L2c+DQogICAgICAgICAgICAgICAgPC9nPg0KICAgICAgICAgICAgPC9nPg0KICAgICAgICA8L2c+DQogICAgPC9nPg0KPC9zdmc+"
237
+ }, Ui = (t) => {
238
+ const e = "img:", n = [t, t.toLowerCase()];
239
+ if (t.startsWith("app:")) {
240
+ const i = t.slice(4);
241
+ n.push(i, i.toLowerCase());
242
+ } else
243
+ n.push(`app:${t}`, `app:${t.toLowerCase()}`);
244
+ const M = n.find((i) => G[i] !== void 0);
245
+ if (M)
246
+ return { icon: e + G[M] };
247
+ };
248
+ function Zi(...t) {
249
+ return (e) => {
250
+ for (const n of t) {
251
+ if (!n) continue;
252
+ const M = n(e);
253
+ if (M !== void 0) return M;
254
+ }
255
+ };
256
+ }
257
+ function B(t, e, n = (i) => JSON.stringify(i), M = (i) => JSON.parse(i)) {
258
+ const i = t, u = D((() => {
259
+ try {
260
+ const g = localStorage.getItem(i), c = g ? M(g) : e;
261
+ return console.log(`[storageSync] 初始化 ${i}:`, c), c;
262
+ } catch (g) {
263
+ return console.warn(`[storageSync] Failed to read ${i}:`, g), e;
264
+ }
265
+ })());
266
+ Lt(
267
+ u,
268
+ (g, c) => {
269
+ try {
270
+ console.log(`[storageSync] ${i} 更新:`, {
271
+ oldValue: c,
272
+ newValue: g,
273
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
274
+ }), localStorage.setItem(i, n(g)), console.log(`[storageSync] ${i} 已写入 localStorage`);
275
+ } catch (I) {
276
+ console.error(`[storageSync] Failed to write ${i}:`, I);
277
+ }
278
+ },
279
+ { deep: !0 }
280
+ );
281
+ const o = (g) => {
282
+ if (g.key === i && g.newValue !== null)
283
+ try {
284
+ const c = M(g.newValue);
285
+ console.log(`[storageSync] 监听到 storage 事件 ${i}:`, {
286
+ oldValue: g.oldValue,
287
+ newValue: g.newValue,
288
+ url: g.url,
289
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
290
+ }), JSON.stringify(u.value) !== JSON.stringify(c) ? (console.log(`[storageSync] ${i} 从其他标签页同步更新:`, c), u.value = c) : console.log(`[storageSync] ${i} 值未改变,跳过更新`);
291
+ } catch (c) {
292
+ console.warn(`[storageSync] Failed to parse storage event for ${i}:`, c);
293
+ }
294
+ else g.key === i && g.newValue === null && (console.log(`[storageSync] ${i} 被清空,重置为初始值`), u.value = e);
295
+ };
296
+ return window.addEventListener("storage", o), u;
297
+ }
298
+ const R = (t) => t.join(","), W = (t) => t ? t.split(",").filter(Boolean) : [];
299
+ function Pi(t) {
300
+ return B(t, [], R, W);
301
+ }
302
+ function vi(t) {
303
+ return B(t, [], R, W);
304
+ }
305
+ const L = {
306
+ simlessly: {
307
+ title: "IoT simlessly",
308
+ logo: "/login/favicon.ico",
309
+ navLogo: "/login/logo.png",
310
+ titleZh: {
311
+ login: "IoT simlessly",
312
+ eim: "IoT eSIM 管理平台",
313
+ cmp: "连接管理平台",
314
+ dataOps: "全球流量运营平台",
315
+ hub: "资源管理"
316
+ },
317
+ titleEn: {
318
+ login: "IoT simlessly",
319
+ eim: "IoT eSIM Orchestration",
320
+ cmp: "Connection Management",
321
+ dataOps: "Global Data Operations",
322
+ hub: "Resource"
323
+ }
324
+ },
325
+ iot: {
326
+ title: "IoT eSIM 管理平台",
327
+ logo: "/login/redtea.ico",
328
+ navLogo: "/login/redtea.png",
329
+ titleZh: {
330
+ login: "IoT eSIM 管理平台",
331
+ eim: "IoT eSIM 管理平台",
332
+ cmp: "连接管理平台",
333
+ dataOps: "全球流量运营平台",
334
+ hub: "资源管理"
335
+ },
336
+ titleEn: {
337
+ login: "IoT eSIM Management",
338
+ eim: "IoT eSIM Management",
339
+ cmp: "Connection Management",
340
+ dataOps: "Global Data Operations",
341
+ hub: "Resource"
342
+ }
343
+ },
344
+ sunmi: {
345
+ title: "IoT eSIM 管理平台",
346
+ logo: "/login/sunmi.ico",
347
+ navLogo: "/login/sunmi.png",
348
+ titleZh: {
349
+ login: "IoT eSIM 管理平台",
350
+ eim: "IoT eSIM 管理平台",
351
+ cmp: "连接管理平台",
352
+ dataOps: "全球流量运营平台",
353
+ hub: "资源管理"
354
+ },
355
+ titleEn: {
356
+ login: "IoT eSIM Management",
357
+ eim: "IoT eSIM Management",
358
+ cmp: "Connection Management",
359
+ dataOps: "Global Data Operations",
360
+ hub: "Resource"
361
+ }
362
+ }
363
+ };
364
+ function h() {
365
+ var e;
366
+ const t = ((e = document.querySelector('meta[name="host"]')) == null ? void 0 : e.getAttribute("content")) || "";
367
+ return ["auto.redteamobile.com", "iot.redteaready.com", "eim-eu.esim.plus"].includes(t) ? L.iot : ["sunmi.redteaready.com"].includes(t) ? L.sunmi : L.simlessly;
368
+ }
369
+ function $t() {
370
+ const t = h();
371
+ document.title = t.title;
372
+ const e = document.getElementById("favicon-link");
373
+ e.href = t.logo;
374
+ }
375
+ function Xt(t) {
376
+ const e = h();
377
+ return t === "zh-CN" ? e.titleZh : e.titleEn;
378
+ }
379
+ function Kt() {
380
+ return h().navLogo;
381
+ }
382
+ function C(t) {
383
+ return t === !1 ? !1 : t === 0 || String(t) === "0" || t ? t : "-";
384
+ }
385
+ function H(t) {
386
+ const { size: e, unit: n = "B", maxUnit: M, numberFormatOptions: i } = t, { size: r, unit: u } = Y({ size: e, unit: n }, { maxUnit: M });
387
+ return `${r.toLocaleString(void 0, i)} ${u}`;
388
+ }
389
+ function Y(t, e) {
390
+ const n = ["B", "KB", "MB", "GB", "TB"], { size: M, unit: i = "B" } = t, r = n.indexOf(i);
391
+ if (r === -1 || r === n.length - 1) return { size: M, unit: i };
392
+ const u = (e == null ? void 0 : e.maxUnit) || "TB", o = n.indexOf(u);
393
+ return r === o ? { size: M, unit: i } : M < 1024 ? { size: M, unit: i } : Y({ size: M / 1024, unit: n[r + 1] }, e);
394
+ }
395
+ function Q(t, e = "-") {
396
+ return (n, M) => n === 0 || n === "0" ? t ? t(n, M) : n : n ? t ? t(n, M) : n.toString() : e;
397
+ }
398
+ function J(t, e) {
399
+ const n = t.getFullYear(), M = t.getMonth() + 1, i = t.getDate(), r = t.getHours(), u = r % 12 || 12, o = t.getMinutes(), g = t.getSeconds(), c = t.getMilliseconds(), I = r < 12 ? "AM" : "PM", s = {
400
+ YYYY: String(n).padStart(4, "0"),
401
+ YY: String(n % 100).padStart(2, "0"),
402
+ MM: String(M).padStart(2, "0"),
403
+ M: String(M),
404
+ DD: String(i).padStart(2, "0"),
405
+ D: String(i),
406
+ HH: String(r).padStart(2, "0"),
407
+ H: String(r),
408
+ hh: String(u).padStart(2, "0"),
409
+ h: String(u),
410
+ mm: String(o).padStart(2, "0"),
411
+ m: String(o),
412
+ ss: String(g).padStart(2, "0"),
413
+ s: String(g),
414
+ SSS: String(c).padStart(3, "0"),
415
+ SS: String(c).padStart(3, "0").slice(0, 2),
416
+ S: String(c).padStart(3, "0").charAt(0),
417
+ A: I,
418
+ a: I.toLowerCase()
419
+ };
420
+ return e.replace(/YYYY|YY|MM|M|DD|D|HH|H|hh|h|mm|m|ss|s|SSS|SS|S|A|a/g, (l) => s[l] ?? l);
421
+ }
422
+ function F(t) {
423
+ if (t == null) return null;
424
+ if (t instanceof Date) return isNaN(t.getTime()) ? null : t;
425
+ if (typeof t == "number") {
426
+ const n = new Date(t);
427
+ return isNaN(n.getTime()) ? null : n;
428
+ }
429
+ let e = new Date(t);
430
+ return isNaN(e.getTime()) ? (e = new Date(t.replace(" ", "T")), isNaN(e.getTime()) ? null : e) : e;
431
+ }
432
+ function V(t) {
433
+ if (t == null)
434
+ return null;
435
+ if (t instanceof Date)
436
+ return t;
437
+ const e = Number(t);
438
+ if (Number.isFinite(e)) {
439
+ const n = String(Math.floor(e)).length;
440
+ if (n === 10)
441
+ return e * 1e3;
442
+ if (n === 13)
443
+ return e;
444
+ if (e === 0)
445
+ return 0;
446
+ }
447
+ return t;
448
+ }
449
+ function _t(t, e = "YYYY-MM-DD HH:mm:ss") {
450
+ const n = V(t);
451
+ if (!n && n !== 0) return C(t);
452
+ const M = F(n);
453
+ return C(M ? J(M, e) : t);
454
+ }
455
+ function qt(t = "YYYY-MM-DD HH:mm:ss", e = "-") {
456
+ return (n, M) => {
457
+ if (n === 0 || n === "0")
458
+ return String(n);
459
+ const i = V(n);
460
+ if (!n || n === "Invalid Date")
461
+ return e;
462
+ try {
463
+ const r = F(i);
464
+ if (!r) return e;
465
+ const u = J(r, t);
466
+ return !u || u === "Invalid Date" ? e : u;
467
+ } catch (r) {
468
+ return console.error("Date formatting failed:", r), e;
469
+ }
470
+ };
471
+ }
472
+ function te(t = "-", e) {
473
+ return Q((M) => {
474
+ const i = typeof M == "string" ? Number(M) : M;
475
+ return Number.isFinite(i) ? H({
476
+ size: i,
477
+ unit: (e == null ? void 0 : e.unit) || "B",
478
+ numberFormatOptions: {
479
+ maximumFractionDigits: e == null ? void 0 : e.digits,
480
+ minimumFractionDigits: e == null ? void 0 : e.digits
481
+ }
482
+ }) : M;
483
+ }, t);
484
+ }
485
+ function ee(t = "-", e) {
486
+ return Q((M) => {
487
+ const i = ["B", "KB", "MB", "GB", "TB"];
488
+ let r = typeof M == "string" ? Number(M) : M, u = (e == null ? void 0 : e.unit) || "B";
489
+ const o = (e == null ? void 0 : e.digits) ?? 2;
490
+ if (r === 0)
491
+ return `${r.toFixed(o)} ${u}`;
492
+ let g = i.indexOf(u);
493
+ for (g === -1 && (g = 0, u = "B"); g < i.length - 1 && r % 1024 === 0; )
494
+ r = r / 1024, g++, u = i[g];
495
+ return `${r.toFixed(o)} ${u}`;
496
+ }, t);
497
+ }
498
+ function ne(t, e, n, M) {
499
+ const i = ["B", "KB", "MB", "GB", "TB"], r = (M == null ? void 0 : M.digits) ?? 2, u = (M == null ? void 0 : M.showUnit) ?? !0, o = typeof t == "string" ? Number(t) : t;
500
+ if (!Number.isFinite(o))
501
+ return t;
502
+ const g = i.indexOf(e), c = i.indexOf(n);
503
+ if (g === -1 || c === -1)
504
+ return t;
505
+ const I = g - c, l = (o * Math.pow(1024, I)).toFixed(r);
506
+ return u ? `${l} ${n}` : Number(l);
507
+ }
508
+ const Me = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
509
+ __proto__: null,
510
+ convertDataUnit: ne,
511
+ defaultAutoDataFormat: ee,
512
+ defaultDataFormat: te,
513
+ defaultDateFormat: qt,
514
+ defaultFill: C,
515
+ defaultFormat: Q,
516
+ formatDate: _t,
517
+ formatSize: H,
518
+ getNavLogo: Kt,
519
+ getTitle: Xt,
520
+ getUpperSize: Y,
521
+ setTitleAndLogo: $t
522
+ }, Symbol.toStringTag, { value: "Module" }));
523
+ function ie(t) {
524
+ return Array.isArray(t) ? [...new Set(t)] : t;
525
+ }
526
+ function re(t, e) {
527
+ if (!Array.isArray(t)) return t;
528
+ const n = /* @__PURE__ */ new Map();
529
+ return t.filter((M) => {
530
+ const i = M[e];
531
+ return n.has(i) ? !1 : (n.set(i, !0), !0);
532
+ });
533
+ }
534
+ function ue(t, e) {
535
+ if (!Array.isArray(t)) return t;
536
+ const n = /* @__PURE__ */ new Set();
537
+ return t.filter((M) => {
538
+ const i = e.map((r) => M[r]).join("|");
539
+ return n.has(i) ? !1 : (n.add(i), !0);
540
+ });
541
+ }
542
+ function oe(t, e) {
543
+ if (!Array.isArray(t)) return t;
544
+ const {
545
+ idKey: n = "id",
546
+ parentKey: M = "parentId",
547
+ childrenKey: i = "children",
548
+ rootParentValue: r = null
549
+ } = e || {}, u = /* @__PURE__ */ new Map(), o = [];
550
+ return t.forEach((g) => {
551
+ u.set(g[n], { ...g, [i]: [] });
552
+ }), t.forEach((g) => {
553
+ const c = u.get(g[n]);
554
+ if (!c) return;
555
+ const I = g[M];
556
+ if (I === r || I === void 0)
557
+ o.push(c);
558
+ else {
559
+ const s = u.get(I);
560
+ s ? (s[i] || (s[i] = []), s[i].push(c)) : o.push(c);
561
+ }
562
+ }), o;
563
+ }
564
+ function ge(t, e = "children") {
565
+ if (!Array.isArray(t)) return t;
566
+ const n = [], M = (i) => {
567
+ i.forEach((r) => {
568
+ const u = r[e], o = { ...r };
569
+ delete o[e], n.push(o), Array.isArray(u) && u.length > 0 && M(u);
570
+ });
571
+ };
572
+ return M(t), n;
573
+ }
574
+ function $(t, e, n = "children") {
575
+ if (!Array.isArray(t)) return null;
576
+ for (const M of t) {
577
+ if (e(M)) return M;
578
+ if (Array.isArray(M[n]) && M[n].length > 0) {
579
+ const i = $(M[n], e, n);
580
+ if (i) return i;
581
+ }
582
+ }
583
+ return null;
584
+ }
585
+ function ce(t, e, n = "children") {
586
+ if (!Array.isArray(t)) return;
587
+ const M = (i, r, u) => {
588
+ i.forEach((o) => {
589
+ e(o, r, u), Array.isArray(o[n]) && o[n].length > 0 && M(o[n], o, u + 1);
590
+ });
591
+ };
592
+ M(t, null, 0);
593
+ }
594
+ function Ie(t, e) {
595
+ return Array.isArray(t) ? t.reduce((n, M) => {
596
+ const i = String(M[e]);
597
+ return n[i] || (n[i] = []), n[i].push(M), n;
598
+ }, {}) : {};
599
+ }
600
+ function se(t, e) {
601
+ return Array.isArray(t) ? t.reduce((n, M) => {
602
+ const i = e(M);
603
+ return n[i] || (n[i] = []), n[i].push(M), n;
604
+ }, {}) : {};
605
+ }
606
+ function Ae(t, e, n = "asc") {
607
+ return Array.isArray(t) ? [...t].sort((M, i) => {
608
+ const r = M[e], u = i[e];
609
+ return r < u ? n === "asc" ? -1 : 1 : r > u ? n === "asc" ? 1 : -1 : 0;
610
+ }) : t;
611
+ }
612
+ function ae(t, e) {
613
+ return Array.isArray(t) ? [...t].sort((n, M) => {
614
+ for (const { key: i, order: r = "asc" } of e) {
615
+ const u = n[i], o = M[i];
616
+ if (u < o) return r === "asc" ? -1 : 1;
617
+ if (u > o) return r === "asc" ? 1 : -1;
618
+ }
619
+ return 0;
620
+ }) : t;
621
+ }
622
+ function X(t, e) {
623
+ return Array.isArray(t) ? t.reduce((n, M) => {
624
+ const i = e ? M[e] : M;
625
+ return n + (Number(i) || 0);
626
+ }, 0) : 0;
627
+ }
628
+ function De(t, e) {
629
+ return !Array.isArray(t) || t.length === 0 ? 0 : X(t, e) / t.length;
630
+ }
631
+ function Ne(t, e) {
632
+ if (!Array.isArray(t) || t.length === 0) return 0;
633
+ const n = t.map((M) => {
634
+ const i = e ? M[e] : M;
635
+ return Number(i) || 0;
636
+ });
637
+ return Math.max(...n);
638
+ }
639
+ function le(t, e) {
640
+ if (!Array.isArray(t) || t.length === 0) return 0;
641
+ const n = t.map((M) => {
642
+ const i = e ? M[e] : M;
643
+ return Number(i) || 0;
644
+ });
645
+ return Math.min(...n);
646
+ }
647
+ function ze(t, e) {
648
+ if (!Array.isArray(t) || e <= 0) return [t];
649
+ const n = [];
650
+ for (let M = 0; M < t.length; M += e)
651
+ n.push(t.slice(M, M + e));
652
+ return n;
653
+ }
654
+ function je(t, e) {
655
+ if (!Array.isArray(t) || !Array.isArray(e)) return [];
656
+ const n = new Set(e);
657
+ return t.filter((M) => n.has(M));
658
+ }
659
+ function ye(t, e) {
660
+ return Array.isArray(t) ? Array.isArray(e) ? [.../* @__PURE__ */ new Set([...t, ...e])] : t || [] : e || [];
661
+ }
662
+ function Ce(t, e) {
663
+ if (!Array.isArray(t)) return [];
664
+ if (!Array.isArray(e)) return t;
665
+ const n = new Set(e);
666
+ return t.filter((M) => !n.has(M));
667
+ }
668
+ function K(t) {
669
+ if (!Array.isArray(t)) return t;
670
+ const e = [...t];
671
+ for (let n = e.length - 1; n > 0; n--) {
672
+ const M = Math.floor(Math.random() * (n + 1));
673
+ [e[n], e[M]] = [e[M], e[n]];
674
+ }
675
+ return e;
676
+ }
677
+ function fe(t, e = 1) {
678
+ return !Array.isArray(t) || e <= 0 ? [] : K(t).slice(0, Math.min(e, t.length));
679
+ }
680
+ function _(t, e = 1 / 0) {
681
+ return !Array.isArray(t) || e <= 0 ? t : t.reduce((n, M) => (Array.isArray(M) ? n.push(..._(M, e - 1)) : n.push(M), n), []);
682
+ }
683
+ function Te(t, e, n) {
684
+ if (!Array.isArray(t))
685
+ return { data: [], page: e, pageSize: n, total: 0, totalPages: 0 };
686
+ const M = t.length, i = Math.ceil(M / n), r = (e - 1) * n, u = r + n;
687
+ return {
688
+ data: t.slice(r, u),
689
+ page: e,
690
+ pageSize: n,
691
+ total: M,
692
+ totalPages: i
693
+ };
694
+ }
695
+ function de(t, e, n) {
696
+ if (!Array.isArray(t) || e < 0 || e >= t.length || n < 0 || n >= t.length) return t;
697
+ const M = [...t], [i] = M.splice(e, 1);
698
+ return M.splice(n, 0, i), M;
699
+ }
700
+ function we(t) {
701
+ return Array.isArray(t) ? t.reduce((e, n) => (e[n] = (e[n] || 0) + 1, e), {}) : {};
702
+ }
703
+ const Le = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
704
+ __proto__: null,
705
+ arrayToTree: oe,
706
+ average: De,
707
+ chunkArray: ze,
708
+ countBy: we,
709
+ difference: Ce,
710
+ findNodeInTree: $,
711
+ flatten: _,
712
+ forEachTree: ce,
713
+ groupBy: Ie,
714
+ groupByFn: se,
715
+ intersection: je,
716
+ max: Ne,
717
+ min: le,
718
+ move: de,
719
+ paginate: Te,
720
+ sample: fe,
721
+ shuffle: K,
722
+ sortBy: Ae,
723
+ sortByMultiple: ae,
724
+ sum: X,
725
+ treeToArray: ge,
726
+ union: ye,
727
+ uniqueArray: ie,
728
+ uniqueArrayByKey: re,
729
+ uniqueArrayByKeys: ue
730
+ }, Symbol.toStringTag, { value: "Module" }));
731
+ async function me(t) {
732
+ if (!t) return !1;
733
+ if (navigator.clipboard && window.isSecureContext)
734
+ try {
735
+ return await navigator.clipboard.writeText(t), !0;
736
+ } catch (e) {
737
+ console.error("Clipboard API 失败:", e);
738
+ }
739
+ try {
740
+ const e = document.createElement("textarea");
741
+ e.value = t, e.style.position = "fixed", e.style.left = "-9999px", e.style.top = "-9999px", document.body.appendChild(e), e.select(), e.setSelectionRange(0, t.length);
742
+ const n = document.execCommand("copy");
743
+ return document.body.removeChild(e), n;
744
+ } catch (e) {
745
+ return console.error("复制失败:", e), !1;
746
+ }
747
+ }
748
+ async function xe() {
749
+ if (navigator.clipboard && window.isSecureContext)
750
+ try {
751
+ return await navigator.clipboard.readText();
752
+ } catch (t) {
753
+ return console.error("读取剪贴板失败:", t), "";
754
+ }
755
+ return "";
756
+ }
757
+ function b(t, e) {
758
+ const n = document.createElement("a");
759
+ typeof t == "string" ? n.href = t : n.href = URL.createObjectURL(t), n.download = e, n.style.display = "none", document.body.appendChild(n), n.click(), document.body.removeChild(n), typeof t != "string" && setTimeout(() => URL.revokeObjectURL(n.href), 100);
760
+ }
761
+ function Se(t, e) {
762
+ const n = JSON.stringify(t, null, 2), M = new Blob([n], { type: "application/json" });
763
+ b(M, e);
764
+ }
765
+ function Ee(t, e) {
766
+ const n = new Blob([t], { type: "text/plain" });
767
+ b(n, e);
768
+ }
769
+ function k(t) {
770
+ window.scrollTo(t);
771
+ }
772
+ function pe(t, e) {
773
+ const n = typeof t == "string" ? document.querySelector(t) : t;
774
+ n && n.scrollIntoView({
775
+ behavior: "smooth",
776
+ block: "start",
777
+ ...e
778
+ });
779
+ }
780
+ function Oe(t = !0) {
781
+ k({
782
+ top: 0,
783
+ behavior: t ? "smooth" : "auto"
784
+ });
785
+ }
786
+ function he(t = !0) {
787
+ k({
788
+ top: document.documentElement.scrollHeight,
789
+ behavior: t ? "smooth" : "auto"
790
+ });
791
+ }
792
+ function q() {
793
+ return {
794
+ x: window.pageXOffset || document.documentElement.scrollLeft,
795
+ y: window.pageYOffset || document.documentElement.scrollTop
796
+ };
797
+ }
798
+ function Ye(t) {
799
+ let e = 0;
800
+ for (; t; )
801
+ e += t.offsetTop, t = t.offsetParent;
802
+ return e;
803
+ }
804
+ function Qe(t, e = 0) {
805
+ if (!t) return !1;
806
+ const n = t.getBoundingClientRect(), M = window.innerHeight || document.documentElement.clientHeight, i = window.innerWidth || document.documentElement.clientWidth;
807
+ return n.top >= 0 - e && n.left >= 0 - e && n.bottom <= M + e && n.right <= i + e;
808
+ }
809
+ function be(t) {
810
+ if (!t) return !1;
811
+ const e = t.getBoundingClientRect(), n = window.innerHeight || document.documentElement.clientHeight, M = window.innerWidth || document.documentElement.clientWidth, i = e.top <= n && e.top + e.height >= 0, r = e.left <= M && e.left + e.width >= 0;
812
+ return i && r;
813
+ }
814
+ function ke(t = document.documentElement) {
815
+ document.fullscreenElement ? document.exitFullscreen() : t.requestFullscreen().catch((e) => {
816
+ console.error("进入全屏失败:", e);
817
+ });
818
+ }
819
+ function Ue(t = document.documentElement) {
820
+ document.fullscreenElement || t.requestFullscreen().catch((e) => {
821
+ console.error("进入全屏失败:", e);
822
+ });
823
+ }
824
+ function Ze() {
825
+ document.fullscreenElement && document.exitFullscreen();
826
+ }
827
+ function Pe() {
828
+ return !!document.fullscreenElement;
829
+ }
830
+ function ve(t, e) {
831
+ t && t.classList.add(e);
832
+ }
833
+ function Ge(t, e) {
834
+ t && t.classList.remove(e);
835
+ }
836
+ function Be(t, e) {
837
+ t && t.classList.toggle(e);
838
+ }
839
+ function Re(t, e) {
840
+ return t ? t.classList.contains(e) : !1;
841
+ }
842
+ function We(t) {
843
+ return t ? Array.from(t.classList) : [];
844
+ }
845
+ function He(t) {
846
+ return t ? t.getBoundingClientRect() : null;
847
+ }
848
+ function Je(t) {
849
+ return t ? t.offsetWidth : 0;
850
+ }
851
+ function Fe(t) {
852
+ return t ? t.offsetHeight : 0;
853
+ }
854
+ function Ve(t, e = document) {
855
+ return e.querySelector(t);
856
+ }
857
+ function $e(t, e = document) {
858
+ return Array.from(e.querySelectorAll(t));
859
+ }
860
+ function Xe(t, e) {
861
+ return t ? t.getAttribute(e) : null;
862
+ }
863
+ function Ke(t, e, n) {
864
+ t && t.setAttribute(e, n);
865
+ }
866
+ function _e(t, e) {
867
+ t && t.removeAttribute(e);
868
+ }
869
+ function qe(t, e) {
870
+ return t ? t.hasAttribute(e) : !1;
871
+ }
872
+ function tn(t, e) {
873
+ return t && window.getComputedStyle(t)[e] || "";
874
+ }
875
+ function en(t, e) {
876
+ t && Object.keys(e).forEach((n) => {
877
+ t.style[n] = e[n];
878
+ });
879
+ }
880
+ function nn() {
881
+ return {
882
+ width: window.innerWidth || document.documentElement.clientWidth,
883
+ height: window.innerHeight || document.documentElement.clientHeight
884
+ };
885
+ }
886
+ function tt() {
887
+ return Math.max(
888
+ document.body.scrollHeight,
889
+ document.documentElement.scrollHeight,
890
+ document.body.offsetHeight,
891
+ document.documentElement.offsetHeight,
892
+ document.body.clientHeight,
893
+ document.documentElement.clientHeight
894
+ );
895
+ }
896
+ function Mn() {
897
+ return Math.max(
898
+ document.body.scrollWidth,
899
+ document.documentElement.scrollWidth,
900
+ document.body.offsetWidth,
901
+ document.documentElement.offsetWidth,
902
+ document.body.clientWidth,
903
+ document.documentElement.clientWidth
904
+ );
905
+ }
906
+ function rn(t = 0) {
907
+ const { y: e } = q(), n = window.innerHeight || document.documentElement.clientHeight, M = tt();
908
+ return e + n >= M - t;
909
+ }
910
+ const un = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
911
+ __proto__: null,
912
+ addClass: ve,
913
+ copyToClipboard: me,
914
+ downloadFile: b,
915
+ downloadJSON: Se,
916
+ downloadText: Ee,
917
+ enterFullscreen: Ue,
918
+ exitFullscreen: Ze,
919
+ getAttribute: Xe,
920
+ getClasses: We,
921
+ getElementHeight: Fe,
922
+ getElementRect: He,
923
+ getElementWidth: Je,
924
+ getOffsetTop: Ye,
925
+ getPageHeight: tt,
926
+ getPageWidth: Mn,
927
+ getScrollPosition: q,
928
+ getStyle: tn,
929
+ getWindowSize: nn,
930
+ hasAttribute: qe,
931
+ hasClass: Re,
932
+ isFullscreen: Pe,
933
+ isInViewport: Qe,
934
+ isPartiallyVisible: be,
935
+ isScrolledToBottom: rn,
936
+ querySelector: Ve,
937
+ querySelectorAll: $e,
938
+ readFromClipboard: xe,
939
+ removeAttribute: _e,
940
+ removeClass: Ge,
941
+ scrollTo: k,
942
+ scrollToBottom: he,
943
+ scrollToElement: pe,
944
+ scrollToTop: Oe,
945
+ setAttribute: Ke,
946
+ setStyle: en,
947
+ toggleClass: Be,
948
+ toggleFullscreen: ke
949
+ }, Symbol.toStringTag, { value: "Module" }));
950
+ function on(t, e) {
951
+ return Math.floor(Math.random() * (e - t + 1)) + t;
952
+ }
953
+ function gn(t, e, n = 2) {
954
+ const M = Math.random() * (e - t) + t;
955
+ return Number(M.toFixed(n));
956
+ }
957
+ function cn(t, e, n = 1) {
958
+ const M = [];
959
+ if (n === 0) return M;
960
+ if (n > 0)
961
+ for (let i = t; i <= e; i += n)
962
+ M.push(i);
963
+ else
964
+ for (let i = t; i >= e; i += n)
965
+ M.push(i);
966
+ return M;
967
+ }
968
+ function In(t, e, n) {
969
+ return Math.min(Math.max(t, e), n);
970
+ }
971
+ function sn(t, e) {
972
+ const n = (t.toString().split(".")[1] || "").length, M = (e.toString().split(".")[1] || "").length, i = Math.pow(10, Math.max(n, M));
973
+ return (t * i + e * i) / i;
974
+ }
975
+ function An(t, e) {
976
+ const n = (t.toString().split(".")[1] || "").length, M = (e.toString().split(".")[1] || "").length, i = Math.pow(10, Math.max(n, M));
977
+ return (t * i - e * i) / i;
978
+ }
979
+ function an(t, e) {
980
+ const n = (t.toString().split(".")[1] || "").length, M = (e.toString().split(".")[1] || "").length, i = Math.pow(10, n + M);
981
+ return t * Math.pow(10, n) * e * Math.pow(10, M) / i;
982
+ }
983
+ function Dn(t, e) {
984
+ if (e === 0)
985
+ return console.warn("Division by zero"), 1 / 0;
986
+ const n = (t.toString().split(".")[1] || "").length, M = (e.toString().split(".")[1] || "").length;
987
+ return t * Math.pow(10, M) / (e * Math.pow(10, n)) * Math.pow(10, n - M);
988
+ }
989
+ function U(t, e = 0) {
990
+ return Math.round(t * Math.pow(10, e)) / Math.pow(10, e);
991
+ }
992
+ function Nn(t, e = 0) {
993
+ return Math.ceil(t * Math.pow(10, e)) / Math.pow(10, e);
994
+ }
995
+ function ln(t, e = 0) {
996
+ return Math.floor(t * Math.pow(10, e)) / Math.pow(10, e);
997
+ }
998
+ function zn(t, e = 0) {
999
+ return U(t, e).toFixed(e);
1000
+ }
1001
+ function jn(t, e, n = 2) {
1002
+ return e === 0 ? 0 : U(t / e * 100, n);
1003
+ }
1004
+ function yn(t) {
1005
+ return t / 100;
1006
+ }
1007
+ function Cn(t) {
1008
+ return t * 100;
1009
+ }
1010
+ function fn(t, e = 2) {
1011
+ return String(t).padStart(e, "0");
1012
+ }
1013
+ function Tn(t) {
1014
+ const e = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"], n = ["", "十", "百", "千", "万"];
1015
+ if (t === 0) return "零";
1016
+ if (t < 0 || t > 99999) return String(t);
1017
+ const M = String(t);
1018
+ let i = "", r = 0;
1019
+ for (let u = 0; u < M.length; u++) {
1020
+ const o = parseInt(M[u]), g = n[M.length - 1 - u];
1021
+ o === 0 ? r++ : (r > 0 && (i += "零"), i += e[o] + g, r = 0);
1022
+ }
1023
+ return t >= 10 && t < 20 && (i = i.replace("一十", "十")), i;
1024
+ }
1025
+ function dn(t) {
1026
+ const e = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"], n = ["", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿"], M = ["角", "分"];
1027
+ if (t === 0) return "零元整";
1028
+ const [i, r = ""] = t.toFixed(2).split(".");
1029
+ let u = "";
1030
+ for (let o = 0; o < i.length; o++) {
1031
+ const g = parseInt(i[o]), c = n[i.length - 1 - o];
1032
+ g !== 0 ? u += e[g] + c : u && !u.endsWith("零") && (u += "零");
1033
+ }
1034
+ if (u = u.replace(/零+$/, "") + "元", r && r !== "00")
1035
+ for (let o = 0; o < Math.min(r.length, 2); o++) {
1036
+ const g = parseInt(r[o]);
1037
+ g !== 0 && (u += e[g] + M[o]);
1038
+ }
1039
+ else
1040
+ u += "整";
1041
+ return u;
1042
+ }
1043
+ function wn(t) {
1044
+ return t % 2 === 0;
1045
+ }
1046
+ function Ln(t) {
1047
+ return t % 2 !== 0;
1048
+ }
1049
+ function mn(t) {
1050
+ if (t < 2) return !1;
1051
+ if (t === 2) return !0;
1052
+ if (t % 2 === 0) return !1;
1053
+ for (let e = 3; e <= Math.sqrt(t); e += 2)
1054
+ if (t % e === 0) return !1;
1055
+ return !0;
1056
+ }
1057
+ function xn(t, e, n) {
1058
+ return t >= e && t <= n;
1059
+ }
1060
+ function Sn(t) {
1061
+ return Math.abs(t);
1062
+ }
1063
+ function En(t) {
1064
+ return Math.sqrt(t);
1065
+ }
1066
+ function pn(t, e) {
1067
+ return Math.pow(t, e);
1068
+ }
1069
+ function et(t) {
1070
+ return t < 0 ? NaN : t === 0 || t === 1 ? 1 : t * et(t - 1);
1071
+ }
1072
+ function Z(t, e) {
1073
+ return e === 0 ? t : Z(e, t % e);
1074
+ }
1075
+ function On(t, e) {
1076
+ return t * e / Z(t, e);
1077
+ }
1078
+ const hn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1079
+ __proto__: null,
1080
+ abs: Sn,
1081
+ add: sn,
1082
+ ceil: Nn,
1083
+ clamp: In,
1084
+ decimalToPercent: Cn,
1085
+ divide: Dn,
1086
+ factorial: et,
1087
+ floor: ln,
1088
+ gcd: Z,
1089
+ inRange: xn,
1090
+ isEven: wn,
1091
+ isOdd: Ln,
1092
+ isPrime: mn,
1093
+ lcm: On,
1094
+ multiply: an,
1095
+ padZero: fn,
1096
+ percentToDecimal: yn,
1097
+ percentage: jn,
1098
+ pow: pn,
1099
+ random: on,
1100
+ randomFloat: gn,
1101
+ range: cn,
1102
+ round: U,
1103
+ sqrt: En,
1104
+ subtract: An,
1105
+ toChineseMoney: dn,
1106
+ toChineseNumber: Tn,
1107
+ toFixed: zn
1108
+ }, Symbol.toStringTag, { value: "Module" }));
1109
+ function f(t) {
1110
+ if (t === null || typeof t != "object") return t;
1111
+ if (t instanceof Date)
1112
+ return new Date(t.getTime());
1113
+ if (t instanceof RegExp)
1114
+ return new RegExp(t.source, t.flags);
1115
+ if (Array.isArray(t))
1116
+ return t.map((n) => f(n));
1117
+ const e = {};
1118
+ for (const n in t)
1119
+ Object.prototype.hasOwnProperty.call(t, n) && (e[n] = f(t[n]));
1120
+ return e;
1121
+ }
1122
+ function Yn(t) {
1123
+ return t === null || typeof t != "object" ? t : Array.isArray(t) ? [...t] : { ...t };
1124
+ }
1125
+ function nt(...t) {
1126
+ if (t.length === 0) return {};
1127
+ if (t.length === 1) return t[0];
1128
+ const e = {};
1129
+ return t.forEach((n) => {
1130
+ !n || typeof n != "object" || Object.keys(n).forEach((M) => {
1131
+ const i = n[M], r = e[M];
1132
+ i && typeof i == "object" && !Array.isArray(i) && r && typeof r == "object" && !Array.isArray(r) ? e[M] = nt(r, i) : e[M] = f(i);
1133
+ });
1134
+ }), e;
1135
+ }
1136
+ function Qn(...t) {
1137
+ return Object.assign({}, ...t);
1138
+ }
1139
+ function bn(t, e) {
1140
+ if (!t || typeof t != "object") return {};
1141
+ const n = {};
1142
+ return e.forEach((M) => {
1143
+ M in t && (n[M] = t[M]);
1144
+ }), n;
1145
+ }
1146
+ function kn(t, e) {
1147
+ if (!t || typeof t != "object") return {};
1148
+ const n = { ...t };
1149
+ return e.forEach((M) => {
1150
+ delete n[M];
1151
+ }), n;
1152
+ }
1153
+ function Un(t, e, n) {
1154
+ if (!t || typeof t != "object") return n;
1155
+ const M = e.split(".");
1156
+ let i = t;
1157
+ for (const r of M)
1158
+ if (i && typeof i == "object" && r in i)
1159
+ i = i[r];
1160
+ else
1161
+ return n;
1162
+ return i !== void 0 ? i : n;
1163
+ }
1164
+ function Mt(t, e, n) {
1165
+ if (!t || typeof t != "object") return;
1166
+ const M = e.split("."), i = M.pop();
1167
+ if (!i) return;
1168
+ let r = t;
1169
+ for (const u of M)
1170
+ (!(u in r) || typeof r[u] != "object") && (r[u] = {}), r = r[u];
1171
+ r[i] = n;
1172
+ }
1173
+ function Zn(t, e) {
1174
+ if (!t || typeof t != "object") return !1;
1175
+ const n = e.split(".");
1176
+ let M = t;
1177
+ for (const i of n)
1178
+ if (M && typeof M == "object" && i in M)
1179
+ M = M[i];
1180
+ else
1181
+ return !1;
1182
+ return !0;
1183
+ }
1184
+ function Pn(t) {
1185
+ return t == null ? !0 : Array.isArray(t) ? t.length === 0 : typeof t == "object" ? Object.keys(t).length === 0 : !1;
1186
+ }
1187
+ function vn(t) {
1188
+ if (typeof t != "object" || t === null) return !1;
1189
+ const e = Object.getPrototypeOf(t);
1190
+ return e === Object.prototype || e === null;
1191
+ }
1192
+ function S(t, e) {
1193
+ if (t === e) return !0;
1194
+ if (typeof t != "object" || typeof e != "object" || t === null || e === null)
1195
+ return !1;
1196
+ if (t instanceof Date && e instanceof Date)
1197
+ return t.getTime() === e.getTime();
1198
+ if (t instanceof RegExp && e instanceof RegExp)
1199
+ return t.toString() === e.toString();
1200
+ if (Array.isArray(t) && Array.isArray(e))
1201
+ return t.length !== e.length ? !1 : t.every((i, r) => S(i, e[r]));
1202
+ const n = Object.keys(t), M = Object.keys(e);
1203
+ return n.length !== M.length ? !1 : n.every((i) => S(t[i], e[i]));
1204
+ }
1205
+ function E(t) {
1206
+ if (!t || typeof t != "object") return t;
1207
+ if (Array.isArray(t))
1208
+ return t.map((n) => E(n));
1209
+ const e = {};
1210
+ return Object.keys(t).forEach((n) => {
1211
+ const M = n.replace(/_([a-z])/g, (r, u) => u.toUpperCase()), i = t[n];
1212
+ e[M] = typeof i == "object" ? E(i) : i;
1213
+ }), e;
1214
+ }
1215
+ function p(t) {
1216
+ if (!t || typeof t != "object") return t;
1217
+ if (Array.isArray(t))
1218
+ return t.map((n) => p(n));
1219
+ const e = {};
1220
+ return Object.keys(t).forEach((n) => {
1221
+ const M = n.replace(/([A-Z])/g, "_$1").toLowerCase(), i = t[n];
1222
+ e[M] = typeof i == "object" ? p(i) : i;
1223
+ }), e;
1224
+ }
1225
+ function Gn(t) {
1226
+ return !t || typeof t != "object" ? "" : Object.keys(t).filter((e) => t[e] !== void 0 && t[e] !== null).map((e) => {
1227
+ const n = t[e];
1228
+ return Array.isArray(n) ? n.map((M) => `${encodeURIComponent(e)}=${encodeURIComponent(M)}`).join("&") : `${encodeURIComponent(e)}=${encodeURIComponent(n)}`;
1229
+ }).join("&");
1230
+ }
1231
+ function Bn(t) {
1232
+ if (!t) return {};
1233
+ const e = t.startsWith("?") ? t.slice(1) : t, n = {};
1234
+ return e.split("&").forEach((M) => {
1235
+ const [i, r] = M.split("=").map(decodeURIComponent);
1236
+ i && (i in n ? Array.isArray(n[i]) ? n[i].push(r) : n[i] = [n[i], r] : n[i] = r);
1237
+ }), n;
1238
+ }
1239
+ function it(t, e) {
1240
+ if (!t || typeof t != "object") return {};
1241
+ const n = {};
1242
+ return Object.keys(t).forEach((M) => {
1243
+ e(t[M], M) && (n[M] = t[M]);
1244
+ }), n;
1245
+ }
1246
+ function Rn(t, e = !0) {
1247
+ return it(t, (n) => !(n == null || e && n === ""));
1248
+ }
1249
+ function rt(t, e = "") {
1250
+ if (!t || typeof t != "object") return {};
1251
+ const n = {};
1252
+ return Object.keys(t).forEach((M) => {
1253
+ const i = e ? `${e}.${M}` : M, r = t[M];
1254
+ r && typeof r == "object" && !Array.isArray(r) ? Object.assign(n, rt(r, i)) : n[i] = r;
1255
+ }), n;
1256
+ }
1257
+ function Wn(t) {
1258
+ if (!t || typeof t != "object") return {};
1259
+ const e = {};
1260
+ return Object.keys(t).forEach((n) => {
1261
+ Mt(e, n, t[n]);
1262
+ }), e;
1263
+ }
1264
+ function Hn(t) {
1265
+ if (!t || typeof t != "object") return {};
1266
+ const e = {};
1267
+ return Object.keys(t).forEach((n) => {
1268
+ const M = t[n];
1269
+ e[String(M)] = n;
1270
+ }), e;
1271
+ }
1272
+ function Jn(t) {
1273
+ return !t || typeof t != "object" ? [] : Object.values(t);
1274
+ }
1275
+ function Fn(t) {
1276
+ return !t || typeof t != "object" ? [] : Object.keys(t);
1277
+ }
1278
+ function Vn(t) {
1279
+ return !t || typeof t != "object" ? [] : Object.entries(t);
1280
+ }
1281
+ const $n = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1282
+ __proto__: null,
1283
+ deepClone: f,
1284
+ deepMerge: nt,
1285
+ entries: Vn,
1286
+ filterValues: it,
1287
+ flattenObject: rt,
1288
+ fromQueryString: Bn,
1289
+ get: Un,
1290
+ has: Zn,
1291
+ invert: Hn,
1292
+ isEmpty: Pn,
1293
+ isEqual: S,
1294
+ isPlainObject: vn,
1295
+ keys: Fn,
1296
+ keysToCamelCase: E,
1297
+ keysToUnderlineCase: p,
1298
+ omit: kn,
1299
+ pick: bn,
1300
+ removeEmpty: Rn,
1301
+ set: Mt,
1302
+ shallowClone: Yn,
1303
+ shallowMerge: Qn,
1304
+ toQueryString: Gn,
1305
+ unflattenObject: Wn,
1306
+ values: Jn
1307
+ }, Symbol.toStringTag, { value: "Module" }));
1308
+ function Xn(t, e = 300, n = !1) {
1309
+ let M = null, i = !1;
1310
+ const r = function(...u) {
1311
+ M && clearTimeout(M), n && !i ? (t.apply(this, u), i = !0) : M = setTimeout(() => {
1312
+ t.apply(this, u), i = !1, M = null;
1313
+ }, e);
1314
+ };
1315
+ return r.cancel = () => {
1316
+ M && (clearTimeout(M), M = null), i = !1;
1317
+ }, r;
1318
+ }
1319
+ function Kn(t, e = 300, n) {
1320
+ const { leading: M = !0, trailing: i = !0 } = n || {};
1321
+ let r = null, u = 0, o = null;
1322
+ const g = function(...c) {
1323
+ const I = Date.now();
1324
+ !u && !M && (u = I);
1325
+ const s = e - (I - u);
1326
+ o = c, s <= 0 || s > e ? (r && (clearTimeout(r), r = null), u = I, t.apply(this, c), o = null) : !r && i && (r = setTimeout(() => {
1327
+ u = M ? Date.now() : 0, r = null, o && (t.apply(this, o), o = null);
1328
+ }, s));
1329
+ };
1330
+ return g.cancel = () => {
1331
+ r && (clearTimeout(r), r = null), u = 0, o = null;
1332
+ }, g;
1333
+ }
1334
+ function _n(t) {
1335
+ let e = !1, n;
1336
+ return function(...M) {
1337
+ return e || (e = !0, n = t.apply(this, M)), n;
1338
+ };
1339
+ }
1340
+ function ut(t) {
1341
+ return new Promise((e) => setTimeout(e, t));
1342
+ }
1343
+ function ot(t) {
1344
+ return ut(t);
1345
+ }
1346
+ async function qn(t, e) {
1347
+ const { times: n = 3, delay: M = 1e3, onRetry: i } = e || {};
1348
+ let r;
1349
+ for (let u = 0; u < n; u++)
1350
+ try {
1351
+ return await t();
1352
+ } catch (o) {
1353
+ r = o, i && i(o, u + 1), u < n - 1 && await ot(M);
1354
+ }
1355
+ throw r;
1356
+ }
1357
+ function tM(t, e) {
1358
+ return Promise.race([
1359
+ t,
1360
+ new Promise(
1361
+ (n, M) => setTimeout(() => M(new Error("Timeout")), e)
1362
+ )
1363
+ ]);
1364
+ }
1365
+ function eM(t, e) {
1366
+ const n = /* @__PURE__ */ new Map(), M = function(...i) {
1367
+ const r = e ? e(...i) : JSON.stringify(i);
1368
+ if (n.has(r))
1369
+ return n.get(r);
1370
+ const u = t.apply(this, i);
1371
+ return n.set(r, u), u;
1372
+ };
1373
+ return M.cache = n, M;
1374
+ }
1375
+ function nM(t) {
1376
+ t.cache && t.cache.clear();
1377
+ }
1378
+ function MM(t, e = 100) {
1379
+ let n = [], M = null;
1380
+ return function(i) {
1381
+ n.push(i), M && clearTimeout(M), M = setTimeout(() => {
1382
+ t(n), n = [], M = null;
1383
+ }, e);
1384
+ };
1385
+ }
1386
+ async function iM(t, e) {
1387
+ const n = [], M = [];
1388
+ for (const i of t) {
1389
+ const r = i().then((u) => {
1390
+ n.push(u), M.splice(M.indexOf(r), 1);
1391
+ });
1392
+ M.push(r), M.length >= e && await Promise.race(M);
1393
+ }
1394
+ return await Promise.all(M), n;
1395
+ }
1396
+ async function rM(t) {
1397
+ const e = [];
1398
+ for (const n of t) {
1399
+ const M = await n();
1400
+ e.push(M);
1401
+ }
1402
+ return e;
1403
+ }
1404
+ function uM(t, e) {
1405
+ return function(...n) {
1406
+ const M = performance.now(), i = t.apply(this, n), u = (performance.now() - M).toFixed(2);
1407
+ return console.log(`${e || t.name || "Function"}: ${u}ms`), i;
1408
+ };
1409
+ }
1410
+ function oM(t, e) {
1411
+ return async function(...n) {
1412
+ const M = performance.now(), i = await t.apply(this, n), u = (performance.now() - M).toFixed(2);
1413
+ return console.log(`${e || t.name || "Function"}: ${u}ms`), i;
1414
+ };
1415
+ }
1416
+ function gM(t) {
1417
+ const e = /* @__PURE__ */ new Map();
1418
+ return async function(...n) {
1419
+ const M = JSON.stringify(n);
1420
+ if (e.has(M))
1421
+ return e.get(M);
1422
+ const i = t.apply(this, n).finally(() => {
1423
+ e.delete(M);
1424
+ });
1425
+ return e.set(M, i), i;
1426
+ };
1427
+ }
1428
+ function cM(t) {
1429
+ let e = null;
1430
+ const n = function(...M) {
1431
+ e === null && (e = requestAnimationFrame(() => {
1432
+ t.apply(this, M), e = null;
1433
+ }));
1434
+ };
1435
+ return n.cancel = () => {
1436
+ e !== null && (cancelAnimationFrame(e), e = null);
1437
+ }, n;
1438
+ }
1439
+ const IM = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1440
+ __proto__: null,
1441
+ batch: MM,
1442
+ clearCache: nM,
1443
+ debounce: Xn,
1444
+ dedupe: gM,
1445
+ delay: ut,
1446
+ measureTime: uM,
1447
+ measureTimeAsync: oM,
1448
+ memoize: eM,
1449
+ once: _n,
1450
+ promiseLimit: iM,
1451
+ promiseSerial: rM,
1452
+ rafThrottle: cM,
1453
+ retry: qn,
1454
+ sleep: ot,
1455
+ throttle: Kn,
1456
+ withTimeout: tM
1457
+ }, Symbol.toStringTag, { value: "Module" }));
1458
+ function a(t, e) {
1459
+ return (n) => {
1460
+ const M = String(n || "").trim();
1461
+ return !M || t(M) ? !0 : typeof e == "function" ? e() : e;
1462
+ };
1463
+ }
1464
+ function gt(t) {
1465
+ return t ? /^1[3-9]\d{9}$/.test(t) : !1;
1466
+ }
1467
+ function ct(t) {
1468
+ return t ? /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(t) : !1;
1469
+ }
1470
+ function It(t) {
1471
+ return t ? /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(t) : !1;
1472
+ }
1473
+ function st(t) {
1474
+ return t ? /^\d{16,19}$/.test(t) : !1;
1475
+ }
1476
+ function At(t) {
1477
+ return t ? /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/.test(t) : !1;
1478
+ }
1479
+ function at(t) {
1480
+ return t ? /^(https?:\/\/)([a-zA-Z0-9.-]+)(:[0-9]+)?(\/.*)?$/.test(t) : !1;
1481
+ }
1482
+ function Dt(t) {
1483
+ return t ? /^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/.test(t) : !1;
1484
+ }
1485
+ function sM(t) {
1486
+ return t ? /^[\u4e00-\u9fa5]+$/.test(t) : !1;
1487
+ }
1488
+ function AM(t) {
1489
+ return t ? /[\u4e00-\u9fa5]/.test(t) : !1;
1490
+ }
1491
+ function aM(t) {
1492
+ return t ? /^\d+$/.test(t) : !1;
1493
+ }
1494
+ function DM(t) {
1495
+ return t ? /^-?\d+\.?\d*$/.test(t) : !1;
1496
+ }
1497
+ function NM(t) {
1498
+ return t ? /^[1-9]\d*$/.test(t) : !1;
1499
+ }
1500
+ function lM(t) {
1501
+ return !t && t !== "0" ? !1 : /^(0|[1-9]\d*)$/.test(t);
1502
+ }
1503
+ function zM(t) {
1504
+ return t ? /^[1-9]\d{4,10}$/.test(t) : !1;
1505
+ }
1506
+ function jM(t) {
1507
+ return t ? /^[a-zA-Z][a-zA-Z0-9_-]{5,19}$/.test(t) : !1;
1508
+ }
1509
+ function yM(t) {
1510
+ return t ? /^[1-9]\d{5}$/.test(t) : !1;
1511
+ }
1512
+ function CM(t) {
1513
+ return t ? /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/.test(t) : !1;
1514
+ }
1515
+ function fM(t) {
1516
+ return t ? /^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d@$!%*?&]{6,}$/.test(t) : !1;
1517
+ }
1518
+ function TM(t) {
1519
+ return t ? /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/.test(t) : !1;
1520
+ }
1521
+ function dM(t) {
1522
+ if (!t) return !1;
1523
+ const e = Number(t);
1524
+ return /^\d+$/.test(t) && e >= 1 && e <= 65535;
1525
+ }
1526
+ function wM(t) {
1527
+ return t ? /^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}$|^::$|^([\da-fA-F]{1,4}:){1,6}:$|^:((:[\da-fA-F]{1,4}){1,6})$/.test(t) : !1;
1528
+ }
1529
+ function LM(t) {
1530
+ return t ? /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(t) : !1;
1531
+ }
1532
+ function mM(t = "请输入有效的手机号") {
1533
+ return a(gt, t);
1534
+ }
1535
+ function xM(t = "请输入有效的邮箱地址") {
1536
+ return a(ct, t);
1537
+ }
1538
+ function SM(t = "请输入有效的身份证号") {
1539
+ return a(It, t);
1540
+ }
1541
+ function EM(t = "请输入有效的银行卡号") {
1542
+ return a(st, t);
1543
+ }
1544
+ function pM(t = "请输入有效的车牌号") {
1545
+ return a(At, t);
1546
+ }
1547
+ function OM(t = "请输入有效的 URL 地址") {
1548
+ return a(at, t);
1549
+ }
1550
+ function hM(t = "请输入有效的 IP 地址") {
1551
+ return a(Dt, t);
1552
+ }
1553
+ const YM = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1554
+ __proto__: null,
1555
+ bankCardRule: EM,
1556
+ carNumberRule: pM,
1557
+ createFormRule: a,
1558
+ emailRule: xM,
1559
+ hasChinese: AM,
1560
+ idCardRule: SM,
1561
+ ipRule: hM,
1562
+ isBankCard: st,
1563
+ isCarNumber: At,
1564
+ isChinese: sM,
1565
+ isEmail: ct,
1566
+ isHexColor: LM,
1567
+ isIP: Dt,
1568
+ isIPv6: wM,
1569
+ isIdCard: It,
1570
+ isMac: TM,
1571
+ isMediumPassword: fM,
1572
+ isNonNegativeInteger: lM,
1573
+ isNumber: aM,
1574
+ isNumeric: DM,
1575
+ isPhone: gt,
1576
+ isPort: dM,
1577
+ isPositiveInteger: NM,
1578
+ isPostcode: yM,
1579
+ isQQ: zM,
1580
+ isStrongPassword: CM,
1581
+ isUrl: at,
1582
+ isWechat: jM,
1583
+ phoneRule: mM,
1584
+ urlRule: OM
1585
+ }, Symbol.toStringTag, { value: "Module" }));
1586
+ function QM(t) {
1587
+ return !t || t.length !== 11 ? t : t.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
1588
+ }
1589
+ function bM(t) {
1590
+ if (!t || t.length < 8) return t;
1591
+ const e = t.length;
1592
+ return t.substring(0, 3) + "*".repeat(e - 7) + t.substring(e - 4);
1593
+ }
1594
+ function kM(t) {
1595
+ return !t || t.length === 0 || t.length === 1 ? t : t.length === 2 ? t[0] + "*" : t.substring(0, t.length - 1) + "*";
1596
+ }
1597
+ function UM(t) {
1598
+ if (!t || t.length < 8) return t;
1599
+ const e = t.length, n = t.substring(0, 4), M = t.substring(e - 4);
1600
+ return `${n} **** **** ${M}`;
1601
+ }
1602
+ function ZM(t) {
1603
+ if (!t || !t.includes("@")) return t;
1604
+ const [e, n] = t.split("@");
1605
+ return e.length <= 1 ? t : e[0] + "***@" + n;
1606
+ }
1607
+ function PM(t, e = 6) {
1608
+ return !t || t.length <= e ? t : t.substring(0, e) + "***";
1609
+ }
1610
+ function vM(t) {
1611
+ return t && t.charAt(0).toUpperCase() + t.slice(1);
1612
+ }
1613
+ function GM(t) {
1614
+ return t && t.replace(/\b\w/g, (e) => e.toUpperCase());
1615
+ }
1616
+ function BM(t) {
1617
+ return t && t.replace(/_([a-z])/g, (e, n) => n.toUpperCase());
1618
+ }
1619
+ function RM(t) {
1620
+ return t && t.replace(/([A-Z])/g, "_$1").toLowerCase();
1621
+ }
1622
+ function WM(t) {
1623
+ return t && t.replace(/([A-Z])/g, "-$1").toLowerCase();
1624
+ }
1625
+ function HM(t) {
1626
+ if (t == null || t === "") return "";
1627
+ const n = String(t).split(".");
1628
+ return n[0] = n[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","), n.join(".");
1629
+ }
1630
+ function JM(t, e) {
1631
+ const {
1632
+ currency: n = "¥",
1633
+ decimals: M = 2,
1634
+ thousandsSeparator: i = ",",
1635
+ decimalSeparator: r = "."
1636
+ } = e || {}, u = typeof t == "string" ? parseFloat(t) : t;
1637
+ if (isNaN(u)) return t.toString();
1638
+ const o = u.toFixed(M), [g, c] = o.split(".");
1639
+ let s = g.replace(/\B(?=(\d{3})+(?!\d))/g, i);
1640
+ return M > 0 && c && (s += r + c), n + s;
1641
+ }
1642
+ function FM(t, e = 2) {
1643
+ if (t === 0) return "0 B";
1644
+ if (!t) return "";
1645
+ const n = 1024, M = ["B", "KB", "MB", "GB", "TB"], i = Math.floor(Math.log(t) / Math.log(n));
1646
+ return parseFloat((t / Math.pow(n, i)).toFixed(e)) + " " + M[i];
1647
+ }
1648
+ function VM(t) {
1649
+ return t && t.replace(/\s/g, "").replace(/(\d{4})(?=\d)/g, "$1 ");
1650
+ }
1651
+ function $M(t) {
1652
+ return t && t.replace(/\s/g, "").replace(/(\d{3})(\d{4})(\d{4})/, "$1 $2 $3");
1653
+ }
1654
+ function XM(t = 8, e = "alphanumeric") {
1655
+ const n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", M = "0123456789";
1656
+ let r = n + M;
1657
+ e === "alpha" && (r = n), e === "number" && (r = M);
1658
+ let u = "";
1659
+ for (let o = 0; o < t; o++)
1660
+ u += r.charAt(Math.floor(Math.random() * r.length));
1661
+ return u;
1662
+ }
1663
+ function KM(t) {
1664
+ const e = Date.now(), n = Math.random().toString(36).substring(2, 8);
1665
+ return t ? `${t}_${e}_${n}` : `${e}_${n}`;
1666
+ }
1667
+ function _M(t, e, n = "...") {
1668
+ return !t || t.length <= e ? t : t.substring(0, e) + n;
1669
+ }
1670
+ function qM(t) {
1671
+ return t && t.replace(/<[^>]*>/g, "");
1672
+ }
1673
+ function ti(t) {
1674
+ if (!t) return t;
1675
+ const e = {
1676
+ "&": "&amp;",
1677
+ "<": "&lt;",
1678
+ ">": "&gt;",
1679
+ '"': "&quot;",
1680
+ "'": "&#x27;",
1681
+ "/": "&#x2F;"
1682
+ };
1683
+ return t.replace(/[&<>"'/]/g, (n) => e[n]);
1684
+ }
1685
+ function ei(t) {
1686
+ if (!t) return t;
1687
+ const e = {
1688
+ "&amp;": "&",
1689
+ "&lt;": "<",
1690
+ "&gt;": ">",
1691
+ "&quot;": '"',
1692
+ "&#x27;": "'",
1693
+ "&#x2F;": "/"
1694
+ };
1695
+ return t.replace(/&(amp|lt|gt|quot|#x27|#x2F);/g, (n) => e[n]);
1696
+ }
1697
+ function ni(t) {
1698
+ return t == null || t.trim() === "";
1699
+ }
1700
+ function Mi(t) {
1701
+ return t && t.split("").reverse().join("");
1702
+ }
1703
+ function ii(t, e) {
1704
+ return !t || e <= 0 ? "" : t.repeat(e);
1705
+ }
1706
+ function ri(t, e, n = " ") {
1707
+ return t || (t = ""), t.padStart(e, n);
1708
+ }
1709
+ function ui(t, e, n = " ") {
1710
+ return t || (t = ""), t.padEnd(e, n);
1711
+ }
1712
+ const oi = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1713
+ __proto__: null,
1714
+ addressDesensitize: PM,
1715
+ bankCardDesensitize: UM,
1716
+ capitalize: vM,
1717
+ capitalizeWords: GM,
1718
+ emailDesensitize: ZM,
1719
+ escapeHtml: ti,
1720
+ formatBankCard: VM,
1721
+ formatFileSize: FM,
1722
+ formatMoney: JM,
1723
+ formatNumber: HM,
1724
+ formatPhone: $M,
1725
+ generateUUID: KM,
1726
+ idCardDesensitize: bM,
1727
+ isEmpty: ni,
1728
+ nameDesensitize: kM,
1729
+ padEnd: ui,
1730
+ padStart: ri,
1731
+ phoneDesensitize: QM,
1732
+ randomString: XM,
1733
+ removeHtmlTags: qM,
1734
+ repeat: ii,
1735
+ reverse: Mi,
1736
+ toCamelCase: BM,
1737
+ toKebabCase: WM,
1738
+ toUnderlineCase: RM,
1739
+ truncate: _M,
1740
+ unescapeHtml: ei
1741
+ }, Symbol.toStringTag, { value: "Module" }));
1742
+ function A(t) {
1743
+ const e = t || (typeof window < "u" ? window.location.href : "");
1744
+ if (!e) return {};
1745
+ const n = e.includes("?") ? e.split("?")[1].split("#")[0] : "";
1746
+ if (!n) return {};
1747
+ const M = {};
1748
+ return n.split("&").forEach((i) => {
1749
+ if (!i) return;
1750
+ const [r, u = ""] = i.split("=").map(decodeURIComponent);
1751
+ r && (r in M ? Array.isArray(M[r]) ? M[r].push(u) : M[r] = [M[r], u] : M[r] = u);
1752
+ }), M;
1753
+ }
1754
+ function N(t) {
1755
+ return !t || typeof t != "object" ? "" : Object.keys(t).filter((e) => t[e] !== void 0 && t[e] !== null).map((e) => {
1756
+ const n = t[e];
1757
+ return Array.isArray(n) ? n.map((M) => `${encodeURIComponent(e)}=${encodeURIComponent(M)}`).join("&") : `${encodeURIComponent(e)}=${encodeURIComponent(n)}`;
1758
+ }).join("&");
1759
+ }
1760
+ function gi(t, e) {
1761
+ const M = A(e)[t];
1762
+ return M === void 0 ? null : Array.isArray(M) ? M[0] || null : M;
1763
+ }
1764
+ function ci(t, e) {
1765
+ const M = A(e)[t];
1766
+ return M === void 0 ? [] : Array.isArray(M) ? M : [M];
1767
+ }
1768
+ function Ii(t, e = "push") {
1769
+ if (typeof window > "u" || !window.history) return;
1770
+ const M = { ...A(), ...t };
1771
+ Object.keys(M).forEach((u) => {
1772
+ (M[u] === null || M[u] === void 0) && delete M[u];
1773
+ });
1774
+ const i = N(M), r = i ? `${window.location.pathname}?${i}` : window.location.pathname;
1775
+ e === "push" ? window.history.pushState(null, "", r) : window.history.replaceState(null, "", r);
1776
+ }
1777
+ function si(t, e = "push") {
1778
+ if (typeof window > "u" || !window.history) return;
1779
+ const n = A();
1780
+ t.forEach((r) => {
1781
+ delete n[r];
1782
+ });
1783
+ const M = N(n), i = M ? `${window.location.pathname}?${M}` : window.location.pathname;
1784
+ e === "push" ? window.history.pushState(null, "", i) : window.history.replaceState(null, "", i);
1785
+ }
1786
+ function Ai(t = "push") {
1787
+ if (typeof window > "u" || !window.history) return;
1788
+ const e = window.location.pathname;
1789
+ t === "push" ? window.history.pushState(null, "", e) : window.history.replaceState(null, "", e);
1790
+ }
1791
+ function ai(...t) {
1792
+ return t.length === 0 ? "" : t.map((e, n) => n === 0 ? e.replace(/\/+$/, "") : n === t.length - 1 ? e.replace(/^\/+/, "") : e.replace(/^\/+|\/+$/g, "")).filter(Boolean).join("/");
1793
+ }
1794
+ function Di(t) {
1795
+ if (!t)
1796
+ return {
1797
+ protocol: "",
1798
+ username: "",
1799
+ password: "",
1800
+ hostname: "",
1801
+ port: "",
1802
+ pathname: "",
1803
+ search: "",
1804
+ hash: "",
1805
+ host: "",
1806
+ origin: "",
1807
+ href: "",
1808
+ params: {}
1809
+ };
1810
+ try {
1811
+ const e = new URL(t);
1812
+ return {
1813
+ protocol: e.protocol,
1814
+ username: e.username,
1815
+ password: e.password,
1816
+ hostname: e.hostname,
1817
+ port: e.port,
1818
+ pathname: e.pathname,
1819
+ search: e.search,
1820
+ hash: e.hash,
1821
+ host: e.host,
1822
+ origin: e.origin,
1823
+ href: e.href,
1824
+ params: A(t)
1825
+ };
1826
+ } catch {
1827
+ return {
1828
+ protocol: "",
1829
+ username: "",
1830
+ password: "",
1831
+ hostname: "",
1832
+ port: "",
1833
+ pathname: t.split("?")[0].split("#")[0],
1834
+ search: t.includes("?") ? "?" + t.split("?")[1].split("#")[0] : "",
1835
+ hash: t.includes("#") ? "#" + t.split("#")[1] : "",
1836
+ host: "",
1837
+ origin: "",
1838
+ href: t,
1839
+ params: A(t)
1840
+ };
1841
+ }
1842
+ }
1843
+ function Ni(t) {
1844
+ const {
1845
+ protocol: e = "https",
1846
+ hostname: n = "",
1847
+ port: M = "",
1848
+ pathname: i = "",
1849
+ params: r = {},
1850
+ hash: u = ""
1851
+ } = t;
1852
+ if (!n) return i;
1853
+ let o = `${e}://${n}`;
1854
+ M && (o += `:${M}`), i && (o += i.startsWith("/") ? i : `/${i}`);
1855
+ const g = N(r);
1856
+ return g && (o += `?${g}`), u && (o += u.startsWith("#") ? u : `#${u}`), o;
1857
+ }
1858
+ function li(t) {
1859
+ return t ? /^(https?:)?\/\//.test(t) : !1;
1860
+ }
1861
+ function zi(t) {
1862
+ return t ? t.startsWith("/") : !1;
1863
+ }
1864
+ function ji(t, e) {
1865
+ try {
1866
+ const n = new URL(t), M = new URL(e);
1867
+ return n.origin === M.origin;
1868
+ } catch {
1869
+ return !1;
1870
+ }
1871
+ }
1872
+ function yi(t) {
1873
+ return encodeURIComponent(t);
1874
+ }
1875
+ function Ci(t) {
1876
+ try {
1877
+ return decodeURIComponent(t);
1878
+ } catch {
1879
+ return t;
1880
+ }
1881
+ }
1882
+ function fi(t) {
1883
+ if (!t) return "";
1884
+ try {
1885
+ return encodeURI(decodeURI(t));
1886
+ } catch {
1887
+ return encodeURI(t);
1888
+ }
1889
+ }
1890
+ function Ti(t) {
1891
+ if (!t) return "";
1892
+ try {
1893
+ return decodeURI(t);
1894
+ } catch {
1895
+ return t;
1896
+ }
1897
+ }
1898
+ function di(t, e) {
1899
+ if (!t) return "";
1900
+ if (!e || Object.keys(e).length === 0) return t;
1901
+ const [n, M] = t.split("#"), [i, r] = n.split("?"), o = { ...r ? A("?" + r) : {}, ...e }, g = N(o);
1902
+ let c = i;
1903
+ return g && (c += `?${g}`), M && (c += `#${M}`), c;
1904
+ }
1905
+ function wi(t, e) {
1906
+ if (!t) return "";
1907
+ if (!e || e.length === 0) return t;
1908
+ const [n, M] = t.split("#"), [i, r] = n.split("?");
1909
+ if (!r) return t;
1910
+ const u = A("?" + r);
1911
+ e.forEach((c) => {
1912
+ delete u[c];
1913
+ });
1914
+ const o = N(u);
1915
+ let g = i;
1916
+ return o && (g += `?${o}`), M && (g += `#${M}`), g;
1917
+ }
1918
+ function Nt(t) {
1919
+ try {
1920
+ return new URL(t).hostname;
1921
+ } catch {
1922
+ return "";
1923
+ }
1924
+ }
1925
+ function Li(t) {
1926
+ const e = Nt(t);
1927
+ if (!e) return "";
1928
+ const n = e.split(".");
1929
+ return n.length <= 2 ? e : n.slice(-2).join(".");
1930
+ }
1931
+ function mi() {
1932
+ return typeof window > "u" ? "" : window.location.href;
1933
+ }
1934
+ function xi() {
1935
+ return typeof window > "u" ? "" : window.location.pathname;
1936
+ }
1937
+ function Si() {
1938
+ return typeof window > "u" ? {} : A(window.location.search);
1939
+ }
1940
+ function Ei() {
1941
+ return typeof window > "u" ? "" : window.location.hash.replace(/^#/, "");
1942
+ }
1943
+ const pi = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1944
+ __proto__: null,
1945
+ addQueryParams: di,
1946
+ buildUrl: Ni,
1947
+ clearQueryParams: Ai,
1948
+ decodeParam: Ci,
1949
+ encodeParam: yi,
1950
+ getCurrentHash: Ei,
1951
+ getCurrentPath: xi,
1952
+ getCurrentQuery: Si,
1953
+ getCurrentUrl: mi,
1954
+ getDomain: Nt,
1955
+ getQueryParam: gi,
1956
+ getQueryParams: ci,
1957
+ getRootDomain: Li,
1958
+ isAbsolutePath: zi,
1959
+ isExternalLink: li,
1960
+ isSameOrigin: ji,
1961
+ joinUrl: ai,
1962
+ parseQuery: A,
1963
+ parseUrl: Di,
1964
+ removeQueryParams: si,
1965
+ removeQueryParamsFromUrl: wi,
1966
+ safeDecodeUrl: Ti,
1967
+ safeEncodeUrl: fi,
1968
+ stringifyQuery: N,
1969
+ updateQueryParams: Ii
1970
+ }, Symbol.toStringTag, { value: "Module" })), Gi = {
1971
+ ...Me,
1972
+ array: Le,
1973
+ dom: un,
1974
+ number: hn,
1975
+ object: $n,
1976
+ perf: IM,
1977
+ regex: YM,
1978
+ string: oi,
1979
+ url: pi
1980
+ };
1981
+ export {
1982
+ Wi as JChBar,
1983
+ Hi as JChBarLine,
1984
+ Ji as JChBubble,
1985
+ Fi as JChLine,
1986
+ Vi as JChPieDoughnut,
1987
+ $i as JChRadar,
1988
+ Qi as JTWBtn,
1989
+ Ft as PAGE_ACTION_PERMISSION_KEY,
1990
+ Jt as PAGE_PERMISSION_KEY,
1991
+ Zi as composeIconMapFn,
1992
+ Ht as getLocale,
1993
+ Gi as jqTool,
1994
+ x as setLocale,
1995
+ Wt as t,
1996
+ Ui as twcptIconMapFn,
1997
+ ki as twcptInit,
1998
+ Ki as twcptResolver,
1999
+ _i as twcptResolverWithOptions,
2000
+ bi as useI18n,
2001
+ vi as usePageActionPermissionSync,
2002
+ Pi as usePagePermissionSync
2003
+ };