@agent-network-protocol/dsh-anp-identity 0.1.2 → 0.1.3-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/BOUNDARY.md +14 -2
  2. package/README.md +33 -4
  3. package/README.zh.md +10 -2
  4. package/V7-MANAGEMENT.md +90 -0
  5. package/cordis.patch.yml +4 -0
  6. package/lib/authorization-types.d.ts +150 -0
  7. package/lib/authorization-types.d.ts.map +1 -0
  8. package/lib/authorization-types.js +2 -0
  9. package/lib/authorization-types.js.map +1 -0
  10. package/lib/authorization.d.ts +45 -0
  11. package/lib/authorization.d.ts.map +1 -0
  12. package/lib/authorization.js +718 -0
  13. package/lib/authorization.js.map +1 -0
  14. package/lib/catalog.d.ts +7 -2
  15. package/lib/catalog.d.ts.map +1 -1
  16. package/lib/catalog.js +45 -23
  17. package/lib/catalog.js.map +1 -1
  18. package/lib/client/controller.d.ts +78 -0
  19. package/lib/client/controller.d.ts.map +1 -0
  20. package/lib/client/controller.js +365 -0
  21. package/lib/client/controller.js.map +1 -0
  22. package/lib/client/identity-icon.d.ts +3 -0
  23. package/lib/client/identity-icon.d.ts.map +1 -0
  24. package/lib/client/identity-icon.js +6 -0
  25. package/lib/client/identity-icon.js.map +1 -0
  26. package/lib/client/index.d.ts +7 -0
  27. package/lib/client/index.d.ts.map +1 -0
  28. package/lib/client/index.js +51 -0
  29. package/lib/client/index.js.map +1 -0
  30. package/lib/client/settings-icon-slot.d.ts +13 -0
  31. package/lib/client/settings-icon-slot.d.ts.map +1 -0
  32. package/lib/client/settings-icon-slot.js +2 -0
  33. package/lib/client/settings-icon-slot.js.map +1 -0
  34. package/lib/client/styles.d.ts +4 -0
  35. package/lib/client/styles.d.ts.map +1 -0
  36. package/lib/client/styles.js +39 -0
  37. package/lib/client/styles.js.map +1 -0
  38. package/lib/client/views.d.ts +11 -0
  39. package/lib/client/views.d.ts.map +1 -0
  40. package/lib/client/views.js +287 -0
  41. package/lib/client/views.js.map +1 -0
  42. package/lib/client.js +21008 -0
  43. package/lib/client.js.map +7 -0
  44. package/lib/index.d.ts +26 -0
  45. package/lib/index.d.ts.map +1 -1
  46. package/lib/index.js +413 -58
  47. package/lib/index.js.map +1 -1
  48. package/lib/management-remote.d.ts +23 -0
  49. package/lib/management-remote.d.ts.map +1 -0
  50. package/lib/management-remote.js +126 -0
  51. package/lib/management-remote.js.map +1 -0
  52. package/lib/management-types.d.ts +50 -0
  53. package/lib/management-types.d.ts.map +1 -0
  54. package/lib/management-types.js +2 -0
  55. package/lib/management-types.js.map +1 -0
  56. package/lib/provider-api.d.ts +3 -0
  57. package/lib/provider-api.d.ts.map +1 -1
  58. package/lib/provider-api.js.map +1 -1
  59. package/lib/remote.d.ts +4 -0
  60. package/lib/remote.d.ts.map +1 -0
  61. package/lib/remote.js +86 -0
  62. package/lib/remote.js.map +1 -0
  63. package/lib/user-client.d.ts +41 -0
  64. package/lib/user-client.d.ts.map +1 -0
  65. package/lib/user-client.js +6 -0
  66. package/lib/user-client.js.map +1 -0
  67. package/lib/user-operation.d.ts +7 -0
  68. package/lib/user-operation.d.ts.map +1 -0
  69. package/lib/user-operation.js +87 -0
  70. package/lib/user-operation.js.map +1 -0
  71. package/lib/user-service.d.ts +26 -0
  72. package/lib/user-service.d.ts.map +1 -0
  73. package/lib/user-service.js +140 -0
  74. package/lib/user-service.js.map +1 -0
  75. package/package.json +113 -10
@@ -0,0 +1,287 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState, useSyncExternalStore, } from "react";
3
+ import { Button, Modal } from "@deepseek-ai/dsh-client-ui-primitives";
4
+ import { IdentityController, identityKey, identityReference, } from "./controller.js";
5
+ export const FULL_PERMISSION_NOTICE = "当前默认授予该身份的全部使用权限,暂不支持逐项选择。";
6
+ const modeLabel = (mode) => mode === "once" ? "单次授权" : "永久授权";
7
+ const identityLabel = (identity) => identity.label || identity.reference.did;
8
+ const capabilityNames = {
9
+ "identity:read": "公开身份信息",
10
+ "identity:sign": "签名",
11
+ "identity:http-auth": "网站认证",
12
+ };
13
+ function CopyRow({ label, value, controller, }) {
14
+ return (_jsxs("div", { className: `anpi-copy${label === "DID" ? " anpi-copy-did" : ""}`, children: [_jsx("span", { className: "anpi-field-label", children: label }), _jsx("span", { className: `anpi-break anpi-field-value${value ? "" : " anpi-muted"}`, children: value || "未设置" }), value && (_jsx(Button, { size: "sm", "aria-label": `复制 ${label}`, onClick: () => {
15
+ void controller.copy(value);
16
+ }, children: "\u590D\u5236" }))] }));
17
+ }
18
+ function Scope({ snapshot, }) {
19
+ return (_jsxs(_Fragment, { children: [_jsx("h3", { children: "\u5168\u90E8\u4F7F\u7528\u6743\u9650" }), snapshot ? (_jsxs(_Fragment, { children: [_jsx("ul", { children: snapshot.capabilities.map((capability) => (_jsx("li", { children: capabilityNames[capability] ?? capability }, capability))) }), _jsxs("p", { children: ["\u7B7E\u540D\u7528\u9014\uFF1A", snapshot.signingPurposes.join("、") || "无"] }), _jsxs("p", { className: "anpi-break", children: ["\u7F51\u7AD9\uFF1A", snapshot.httpOrigins.join("、") || "无"] })] })) : (_jsx("p", { children: "\u65E0\u6CD5\u8BFB\u53D6\u6743\u9650\u8303\u56F4\uFF0C\u6682\u4E0D\u80FD\u6388\u6743\u3002" })), _jsx("p", { className: "anpi-small", children: FULL_PERMISSION_NOTICE }), _jsx("p", { className: "anpi-small", children: "\u7B7E\u540D\u53EF\u5728\u5916\u90E8\u4F7F\u7528\uFF0C\u4E0D\u53D7\u7F51\u7AD9\u5217\u8868\u9650\u5236\u3002" })] }));
20
+ }
21
+ /** Actual settings-section contribution, not a stand-alone preview. */
22
+ export function IdentitySettings({ controller, }) {
23
+ const view = useSyncExternalStore(controller.subscribe, controller.getSnapshot);
24
+ const [tab, setTab] = useState("identities");
25
+ const [history, setHistory] = useState(false);
26
+ const identity = controller.selected();
27
+ const blocked = identity?.deleteBlockedReason ||
28
+ (view.grants.length || identity?.integrations.length
29
+ ? "请先解除插件和集成关联"
30
+ : "");
31
+ return (_jsxs("section", { className: "anpi", children: [_jsx("h2", { children: "\u8EAB\u4EFD" }), _jsx("p", { className: "anpi-muted", children: "\u7BA1\u7406\u6B64 DSH \u4E2D\u4FDD\u5B58\u7684\u8EAB\u4EFD" }), _jsxs("div", { className: "anpi-tabs", role: "tablist", "aria-label": "\u8EAB\u4EFD\u7BA1\u7406", children: [_jsx("button", { role: "tab", "aria-selected": tab === "identities", onClick: () => {
32
+ setTab("identities");
33
+ }, children: "\u6211\u7684\u8EAB\u4EFD" }), _jsxs("button", { role: "tab", "aria-selected": tab === "requests", onClick: () => {
34
+ setTab("requests");
35
+ }, children: ["\u6388\u6743\u8BF7\u6C42", view.requests.length > 0 && (_jsx("span", { className: "anpi-count", children: view.requests.length }))] })] }), view.error && !view.modal && (_jsxs("div", { role: "alert", className: "anpi-error", children: [view.error, _jsx(Button, { onClick: () => {
36
+ void controller.refresh();
37
+ }, children: "\u91CD\u8BD5" })] })), view.notice && (_jsx("p", { role: "status", className: "anpi-small", children: view.notice })), view.loading ? (_jsx("p", { role: "status", children: "\u6B63\u5728\u8BFB\u53D6\u8EAB\u4EFD\u2026" })) : tab === "requests" ? (_jsxs(_Fragment, { children: [_jsxs("div", { className: "anpi-row", children: [_jsx("h3", { children: history ? "已处理" : "待处理请求" }), _jsx(Button, { onClick: () => {
38
+ setHistory(!history);
39
+ if (!history)
40
+ void controller.loadHistory();
41
+ }, children: history ? "待处理" : "已处理" })] }), _jsx("p", { className: "anpi-small", children: history ? "历史记录不会恢复权限。" : "查看请求后,在弹窗中确认。" }), _jsx(RequestList, { controller: controller, requests: history ? view.history : view.requests, history: history })] })) : view.identities.length === 0 ? (_jsx("p", { children: "\u8EAB\u4EFD\u7531\u63D2\u4EF6\u7533\u8BF7\u521B\u5EFA" })) : (_jsxs("div", { className: "anpi-columns", children: [_jsx("nav", { className: "anpi-identities", "aria-label": "\u6211\u7684\u8EAB\u4EFD", children: view.identities.map((item) => (_jsx("button", { "aria-current": identityKey(identityReference(item)) === view.selectedKey
42
+ ? "true"
43
+ : undefined, onClick: () => {
44
+ void controller.selectIdentity(identityKey(identityReference(item)));
45
+ }, children: _jsxs("span", { className: "anpi-identity-label", children: [_jsx("strong", { title: item.handle || identityLabel(item), children: item.handle || identityLabel(item) }), _jsx("small", { title: item.reference.did, children: item.reference.did })] }) }, identityKey(identityReference(item))))) }), identity && (_jsxs("div", { className: "anpi-detail", children: [_jsx("h3", { children: identity.handle || identityLabel(identity) }), _jsxs("div", { className: "anpi-fields", children: [_jsx(CopyRow, { label: "Handle", value: identity.handle, controller: controller }), _jsx(CopyRow, { label: "DID", value: identity.reference.did, controller: controller })] }), _jsxs("div", { className: "anpi-section", children: [_jsx("h3", { children: "\u4F60\u6388\u6743\u7684\u63D2\u4EF6" }), view.grants.length === 0 && (_jsx("p", { className: "anpi-muted", children: "\u6682\u65E0\u6388\u6743\u7684\u63D2\u4EF6" })), view.grants.map((grant) => (_jsxs("div", { className: "anpi-row", children: [_jsxs("div", { children: [_jsx("strong", { children: grant.caller.displayName }), _jsxs("p", { className: "anpi-small", children: ["\u5168\u90E8\u6743\u9650 \u00B7 ", modeLabel(grant.mode)] })] }), _jsxs("div", { className: "anpi-actions", children: [_jsx(Button, { variant: "outline", onClick: () => {
46
+ void controller.openPermissions(grant.id);
47
+ }, children: "\u6743\u9650\u8BE6\u60C5" }), _jsx(Button, { disabled: view.pending, onClick: () => {
48
+ void controller.openRevoke(grant.id);
49
+ }, children: "\u64A4\u9500" })] })] }, grant.id))), _jsx("p", { className: "anpi-small", children: FULL_PERMISSION_NOTICE })] }), identity.integrations.length > 0 && (_jsxs("div", { className: "anpi-section", children: [_jsx("h3", { children: "\u73B0\u6709\u96C6\u6210" }), identity.integrations.map((item) => (_jsxs("div", { children: [_jsx("strong", { children: item.displayName }), _jsx("p", { className: "anpi-small", children: item.kind === "provider"
50
+ ? "由宿主管理"
51
+ : "旧版集成,由宿主管理" })] }, `${item.kind}:${item.consumer}`)))] })), _jsxs("div", { className: "anpi-section", children: [_jsxs(Button, { "aria-expanded": view.documentOpen, onClick: () => {
52
+ void controller.toggleDocument();
53
+ }, children: [view.documentOpen ? "⌄" : "›", " \u67E5\u770B DID \u6587\u6863"] }), view.documentOpen && (_jsxs(_Fragment, { children: [_jsx("pre", { className: "anpi-document", children: view.document }), _jsx(Button, { onClick: () => {
54
+ if (view.document)
55
+ void controller.copy(view.document);
56
+ }, children: "\u590D\u5236 JSON" })] }))] }), _jsxs("div", { className: "anpi-section anpi-actions", children: [_jsx(Button, { variant: "outline", disabled: Boolean(blocked) || view.pending, onClick: () => {
57
+ controller.openDelete();
58
+ }, children: "\u5220\u9664\u8EAB\u4EFD" }), blocked && _jsx("span", { className: "anpi-small", children: blocked })] })] }, view.selectedKey))] }))] }));
59
+ }
60
+ function RequestList({ controller, requests, history, }) {
61
+ if (!requests.length)
62
+ return _jsx("p", { children: history ? "暂无已处理记录" : "暂无待处理的授权请求" });
63
+ const statusLabels = {
64
+ pending: "待处理",
65
+ approved: "已允许",
66
+ denied: "已拒绝",
67
+ cancelled: "已取消",
68
+ expired: "已过期",
69
+ };
70
+ return (_jsx("div", { className: "anpi-request-list", children: requests.map((request) => (_jsxs("article", { className: "anpi-row", children: [_jsxs("div", { className: "anpi-break", children: [_jsx("strong", { children: request.caller.displayName }), _jsx("p", { className: "anpi-small", children: request.caller.consumer }), _jsx("p", { children: request.kind === "create" ? "申请创建身份" : "申请使用身份" }), _jsx("p", { className: "anpi-small", children: request.purpose }), _jsx("p", { className: "anpi-small", children: request.kind === "create"
71
+ ? `${request.parameters.label} · ${request.parameters.domain}${request.parameters.path}`
72
+ : `全部使用权限${request.operation?.httpOrigin ? ` · ${request.operation.httpOrigin}` : ""}` }), history && (_jsxs("p", { children: [statusLabels[request.status], request.kind === "create" && request.executionStatus
73
+ ? ` · ${request.executionStatus === "succeeded" ? "身份已创建" : request.executionStatus === "running" ? "创建中" : request.executionStatus === "deleted" ? "身份已删除" : "创建结果待核对"}`
74
+ : request.kind === "access" && request.mode
75
+ ? ` · ${modeLabel(request.mode)}`
76
+ : ""] }))] }), _jsxs("div", { className: "anpi-request-action", children: [_jsx("time", { dateTime: new Date(request.createdAt).toISOString(), children: new Date(request.createdAt).toLocaleString() }), history ? (request.status !== "pending" && (_jsxs(_Fragment, { children: [_jsx(Button, { onClick: () => {
77
+ void controller.openResult(request.id);
78
+ }, children: request.kind === "create" &&
79
+ request.status === "approved" &&
80
+ (request.executionStatus === "unknown" ||
81
+ request.executionStatus === "running")
82
+ ? "核对结果"
83
+ : "查看结果" }), !(request.kind === "create" && request.status === "approved") && (_jsx(Button, { onClick: () => {
84
+ void controller.reauthorize(request);
85
+ }, children: "\u91CD\u65B0\u7533\u8BF7" }))] }))) : (_jsx(Button, { variant: "outline", onClick: () => {
86
+ void controller.openRequest(request.id);
87
+ }, children: "\u67E5\u770B\u8BF7\u6C42" }))] })] }, request.id))) }));
88
+ }
89
+ /** Complement the DSH primitive with focus containment and background inertness. */
90
+ function useModalFocus(root, controller) {
91
+ useEffect(() => {
92
+ const node = root.current;
93
+ if (!node)
94
+ return;
95
+ const dialog = node.closest('[role="dialog"]');
96
+ if (!dialog)
97
+ return;
98
+ const previous = [];
99
+ let branch = dialog;
100
+ while (branch && branch !== document.body) {
101
+ const parent = branch.parentElement;
102
+ if (!parent)
103
+ break;
104
+ for (const child of parent.children)
105
+ if (child !== branch && child instanceof HTMLElement) {
106
+ previous.push([child, child.inert]);
107
+ child.inert = true;
108
+ }
109
+ branch = parent;
110
+ }
111
+ const focusable = () => [
112
+ ...dialog.querySelectorAll('button:not(:disabled), input:not(:disabled), select:not(:disabled), [tabindex="0"]'),
113
+ ];
114
+ (focusable()[0] ?? dialog).focus();
115
+ const key = (event) => {
116
+ if (event.key === "Escape") {
117
+ event.preventDefault();
118
+ event.stopImmediatePropagation();
119
+ controller.closeModal();
120
+ }
121
+ else if (event.key === "Tab") {
122
+ const items = focusable();
123
+ const first = items[0];
124
+ const last = items.at(-1);
125
+ if (!first || !last) {
126
+ event.preventDefault();
127
+ return;
128
+ }
129
+ if (event.shiftKey &&
130
+ (document.activeElement === first ||
131
+ !dialog.contains(document.activeElement))) {
132
+ event.preventDefault();
133
+ last.focus();
134
+ }
135
+ else if (!event.shiftKey &&
136
+ (document.activeElement === last ||
137
+ !dialog.contains(document.activeElement))) {
138
+ event.preventDefault();
139
+ first.focus();
140
+ }
141
+ }
142
+ };
143
+ document.addEventListener("keydown", key, true);
144
+ return () => {
145
+ document.removeEventListener("keydown", key, true);
146
+ for (const [element, inert] of previous)
147
+ element.inert = inert;
148
+ };
149
+ }, [controller, root]);
150
+ }
151
+ export function IdentityOverlay({ controller, }) {
152
+ const view = useSyncExternalStore(controller.subscribe, controller.getSnapshot);
153
+ if (!view.modal)
154
+ return null;
155
+ const modal = view.modal;
156
+ const key = modal.kind === "request" || modal.kind === "result"
157
+ ? `${modal.review.request.id}:${modal.review.request.version}`
158
+ : modal.kind === "permissions" || modal.kind === "revoke"
159
+ ? `${modal.kind}:${modal.grant.id}`
160
+ : identityKey(identityReference(modal.identity));
161
+ return _jsx(IdentityModal, { controller: controller }, key);
162
+ }
163
+ function IdentityModal({ controller, }) {
164
+ const view = useSyncExternalStore(controller.subscribe, controller.getSnapshot);
165
+ const root = useRef(null);
166
+ useModalFocus(root, controller);
167
+ const modal = view.modal;
168
+ const [confirmation, setConfirmation] = useState("");
169
+ if (!modal)
170
+ return null;
171
+ let title;
172
+ let content;
173
+ if (modal.kind === "result") {
174
+ title = "请求结果";
175
+ const request = modal.review.request;
176
+ const grant = modal.review.grant;
177
+ content = (_jsxs(_Fragment, { children: [_jsx("h3", { children: request.caller.displayName }), _jsx("p", { className: "anpi-small", children: request.caller.consumer }), _jsx("p", { children: request.purpose }), request.kind === "create" ? (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["\u521B\u5EFA\u7ED3\u679C\uFF1A", request.executionStatus === "succeeded"
178
+ ? "身份已创建"
179
+ : request.executionStatus === "deleted"
180
+ ? "身份已删除"
181
+ : request.executionStatus === "running"
182
+ ? "创建仍在处理中"
183
+ : request.status === "approved"
184
+ ? "结果尚不能确定,请稍后核对;不要重复创建。"
185
+ : request.status === "denied"
186
+ ? "已拒绝"
187
+ : request.status === "cancelled"
188
+ ? "已取消"
189
+ : "已过期"] }), request.result && (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["\u8EAB\u4EFD\u540D\u79F0\uFF1A", request.result.label] }), _jsx(CopyRow, { label: "DID", value: request.result.reference.did, controller: controller })] })), request.executionStatus === "succeeded" && (_jsx("p", { className: "anpi-small", children: "\u4EC5\u521B\u5EFA\u8EAB\u4EFD\uFF0C\u4E0D\u4EE3\u8868\u8EAB\u4EFD\u6587\u6863\u5DF2\u53D1\u5E03\u6216\u5DF2\u6388\u4E88\u4F7F\u7528\u6743\u9650\u3002" })), request.executionStatus === "deleted" && (_jsx("p", { className: "anpi-small", children: "\u6B64\u5904\u53EA\u5C55\u793A\u5386\u53F2\u516C\u5F00\u5F15\u7528\uFF0C\u4E0D\u4F1A\u6062\u590D\u8EAB\u4EFD\u6216\u91CD\u65B0\u521B\u5EFA\u3002" }))] })) : (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["\u7533\u8BF7\u51B3\u5B9A\uFF1A", request.status === "approved"
190
+ ? "已允许"
191
+ : request.status === "denied"
192
+ ? "已拒绝"
193
+ : request.status === "cancelled"
194
+ ? "已取消"
195
+ : "已过期"] }), request.status === "approved" && (_jsxs("p", { children: ["\u5F53\u524D\u6388\u6743\uFF1A", grant
196
+ ? {
197
+ active: "有效",
198
+ consumed: "已使用",
199
+ expired: "已过期",
200
+ revoked: "已撤销",
201
+ }[grant.status]
202
+ : "无法读取当前授权状态"] })), grant && (_jsxs(_Fragment, { children: [_jsxs("p", { children: ["\u6388\u6743\u65B9\u5F0F\uFF1A", modeLabel(grant.mode)] }), _jsx(CopyRow, { label: "DID", value: grant.identity.did, controller: controller })] })), _jsx("p", { className: "anpi-small", children: "\u67E5\u770B\u5386\u53F2\u8BB0\u5F55\u4E0D\u4F1A\u6062\u590D\u4F7F\u7528\u6743\u9650\u3002" })] })), _jsx("div", { className: "anpi-footer", children: _jsx(Button, { onClick: () => {
203
+ controller.closeModal();
204
+ }, children: "\u5173\u95ED" }) })] }));
205
+ }
206
+ else if (modal.kind === "request") {
207
+ const request = modal.review.request;
208
+ title = `允许${request.caller.displayName}${request.kind === "create" ? "创建" : "使用"}身份?`;
209
+ content = (_jsxs(_Fragment, { children: [_jsx("p", { className: "anpi-small", children: request.caller.consumer }), _jsx("p", { children: request.purpose }), request.kind === "create" ? (_jsxs(_Fragment, { children: [_jsxs("dl", { className: "anpi-parameters", children: [_jsx("dt", { children: "\u8EAB\u4EFD\u540D\u79F0" }), _jsx("dd", { children: request.parameters.label }), _jsx("dt", { children: "Handle" }), _jsx("dd", { children: request.parameters.handle ?? "未提供" }), _jsx("dt", { children: "DID \u57DF\u540D" }), _jsx("dd", { children: request.parameters.domain }), _jsx("dt", { children: "\u8EAB\u4EFD\u8DEF\u5F84" }), _jsx("dd", { children: request.parameters.path })] }), _jsx("p", { children: "\u53C2\u6570\u7531\u63D2\u4EF6\u63D0\u4F9B\uFF0C\u8BF7\u786E\u8BA4\u540E\u7EE7\u7EED\u3002" }), _jsx("p", { className: "anpi-small", children: "Handle \u7531\u7533\u8BF7\u63D2\u4EF6\u63D0\u4F9B\uFF0C\u4FDD\u5B58\u4E0D\u4EE3\u8868\u5DF2\u5728\u670D\u52A1\u7AEF\u6CE8\u518C\u6216\u9A8C\u8BC1\u3002" }), _jsx("p", { className: "anpi-small", children: "\u7528\u4E8E\u751F\u6210\u8EAB\u4EFD\u6807\u8BC6\u548C\u786E\u5B9A\u6587\u6863\u5730\u5740\uFF0C\u521B\u5EFA\u65F6\u4E0D\u4F1A\u81EA\u52A8\u53D1\u5E03\u3002" }), _jsx("p", { className: "anpi-small", children: "\u8EAB\u4EFD\u4E0E\u79C1\u94A5\u4FDD\u5B58\u5728\u5F53\u524D DSH \u5BBF\u4E3B\u3002" }), _jsx("p", { className: "anpi-small", children: "\u4EC5\u521B\u5EFA\u8EAB\u4EFD\uFF0C\u4E0D\u4F1A\u540C\u65F6\u6388\u4E88\u4F7F\u7528\u6743\u9650\u3002" }), modal.review.unavailableReason && (_jsx("p", { role: "alert", children: modal.review.unavailableReason })), _jsx(DecisionActions, { controller: controller, disabled: Boolean(modal.review.unavailableReason), approve: () => {
210
+ void controller.decide({ decision: "approve" });
211
+ }, label: "\u5141\u8BB8\u521B\u5EFA" })] })) : (_jsx(AccessForm, { controller: controller, review: modal.review }))] }));
212
+ }
213
+ else if (modal.kind === "permissions") {
214
+ title = "权限详情";
215
+ content = (_jsxs(_Fragment, { children: [_jsx("h3", { children: modal.grant.caller.displayName }), _jsx("p", { className: "anpi-small", children: modal.grant.caller.consumer }), _jsxs("p", { children: [identityLabel(modal.identity), modal.identity.handle ? ` · ${modal.identity.handle}` : ""] }), _jsx("p", { className: "anpi-small anpi-break", children: modal.identity.reference.did }), _jsxs("p", { children: ["\u6388\u6743\u65B9\u5F0F\uFF1A", modeLabel(modal.grant.mode), modal.grant.mode === "permanent"
216
+ ? ",直到你撤销"
217
+ : ",仅本次操作有效"] }), modal.grant.mode === "once" && (_jsxs(_Fragment, { children: [_jsxs("p", { className: "anpi-break", children: ["\u672C\u6B21\u64CD\u4F5C\uFF1A", modal.grant.operation?.summary] }), _jsxs("p", { children: ["\u5230\u671F\u65F6\u95F4\uFF1A", modal.grant.expiresAt
218
+ ? new Date(modal.grant.expiresAt).toLocaleString()
219
+ : "未设置"] })] })), _jsx(Scope, { snapshot: modal.grant.snapshot }), _jsx("p", { className: "anpi-small", children: "\u4E0D\u5305\u542B\u79C1\u94A5\u5BFC\u51FA\u3001\u8EAB\u4EFD\u5220\u9664\u548C\u8BBE\u5907\u6062\u590D\u7B49\u7BA1\u7406\u64CD\u4F5C\u3002" }), _jsx("div", { className: "anpi-footer", children: _jsx(Button, { variant: "outline", onClick: () => {
220
+ controller.closeModal();
221
+ }, children: "\u5173\u95ED" }) })] }));
222
+ }
223
+ else if (modal.kind === "revoke") {
224
+ title = "撤销授权";
225
+ content = (_jsxs(_Fragment, { children: [_jsx("h3", { children: modal.grant.caller.displayName }), _jsx("p", { className: "anpi-small", children: modal.grant.caller.consumer }), _jsxs("p", { children: [identityLabel(modal.identity), modal.identity.handle ? ` · ${modal.identity.handle}` : ""] }), _jsx("p", { className: "anpi-small anpi-break", children: modal.identity.reference.did }), _jsxs("p", { children: ["\u5C06\u64A4\u9500\u6B64\u63D2\u4EF6\u7684", modeLabel(modal.grant.mode), "\u3002\u5DF2\u53D1\u51FA\u7684\u8BF7\u6C42\u53EF\u80FD\u4ECD\u4F1A\u5B8C\u6210\uFF0C\u4E5F\u4E0D\u4F1A\u6CE8\u9500\u8FDC\u7AEF\u767B\u5F55\u3002"] }), _jsx("p", { className: "anpi-small", children: "\u64A4\u9500\u540E\u4E0D\u4F1A\u81EA\u52A8\u518D\u6B21\u5F39\u7A97\uFF1B\u5982\u9700\u6062\u590D\uFF0C\u53EF\u5728\u6388\u6743\u8BF7\u6C42\u5386\u53F2\u4E2D\u91CD\u65B0\u7533\u8BF7\u3002" }), _jsxs("div", { className: "anpi-footer", children: [_jsx(Button, { disabled: view.pending, onClick: () => controller.closeModal(), children: "\u53D6\u6D88" }), _jsx(Button, { variant: "primary", disabled: view.pending, onClick: () => { void controller.revoke(); }, children: "\u786E\u8BA4\u64A4\u9500" })] })] }));
226
+ }
227
+ else {
228
+ title = "删除身份";
229
+ content = (_jsxs(_Fragment, { children: [_jsx("p", { children: "\u5C06\u5220\u9664\u5F53\u524D DSH \u5BBF\u4E3B\u4E0A\u7684\u6B64\u8EAB\u4EFD\u4E0E\u5BC6\u94A5\u3002\u6B64\u64CD\u4F5C\u4E0D\u4F1A\u6CE8\u9500\u8FDC\u7AEF\u767B\u5F55\u6216\u64A4\u9500\u5DF2\u53D1\u5E03\u7684 DID\u3002" }), _jsxs("label", { htmlFor: "anpi-delete-confirm", children: ["\u8F93\u5165\u8EAB\u4EFD\u540D\u79F0\u300C", identityLabel(modal.identity), "\u300D\u786E\u8BA4"] }), _jsx("input", { id: "anpi-delete-confirm", value: confirmation, onChange: (event) => {
230
+ setConfirmation(event.target.value);
231
+ } }), _jsxs("div", { className: "anpi-footer", children: [_jsx(Button, { disabled: view.pending, onClick: () => {
232
+ controller.closeModal();
233
+ }, children: "\u53D6\u6D88" }), _jsx(Button, { variant: "primary", disabled: view.pending || confirmation !== identityLabel(modal.identity), onClick: () => {
234
+ void controller.deleteIdentity(confirmation);
235
+ }, children: "\u5220\u9664\u8EAB\u4EFD" })] })] }));
236
+ }
237
+ return (_jsx(Modal, { open: true, title: title, closeLabel: "\u7A0D\u540E\u5173\u95ED", onClose: () => {
238
+ controller.closeModal();
239
+ }, className: "anpi-modal", contentClassName: "anpi-modal-content", children: _jsxs("div", { ref: root, className: "anpi", children: [content, view.pending && _jsx("p", { role: "status", children: "\u6B63\u5728\u5904\u7406\uFF0C\u8BF7\u52FF\u91CD\u590D\u63D0\u4EA4\u2026" }), view.error && (_jsx("p", { role: "alert", className: "anpi-error", children: view.error }))] }) }));
240
+ }
241
+ function AccessForm({ controller, review, }) {
242
+ const request = review.request;
243
+ const [mode, setMode] = useState("once");
244
+ const [key, setKey] = useState(request.kind === "access" && request.identity
245
+ ? identityKey(request.identity)
246
+ : review.identities[0]
247
+ ? identityKey(identityReference(review.identities[0]))
248
+ : "");
249
+ if (request.kind !== "access")
250
+ return null;
251
+ const identity = review.identities.find((i) => identityKey(identityReference(i)) === key);
252
+ const snapshot = review.snapshots?.find((item) => identityKey(item.identity) === key)
253
+ ?.snapshot ??
254
+ (request.identity && identityKey(request.identity) === key
255
+ ? review.snapshot
256
+ : undefined);
257
+ return (_jsxs(_Fragment, { children: [_jsx("label", { htmlFor: "anpi-identity-choice", children: "\u4F7F\u7528\u54EA\u4E2A\u8EAB\u4EFD" }), _jsx("select", { id: "anpi-identity-choice", value: key, onChange: (event) => {
258
+ setKey(event.target.value);
259
+ }, disabled: request.identity !== undefined, children: review.identities.map((item) => (_jsxs("option", { value: identityKey(identityReference(item)), children: [identityLabel(item), item.handle ? ` · ${item.handle}` : "", " \u00B7 ", item.reference.did] }, identityKey(identityReference(item))))) }), !identity && _jsx("p", { children: "\u6CA1\u6709\u517C\u5BB9\u8EAB\u4EFD\uFF0C\u8BF7\u56DE\u5230\u539F\u63D2\u4EF6\u7533\u8BF7\u521B\u5EFA\u8EAB\u4EFD\u3002" }), _jsxs("fieldset", { children: [_jsx("legend", { children: "\u6388\u6743\u65B9\u5F0F" }), _jsxs("div", { className: "anpi-mode", children: [_jsxs("label", { children: [_jsx("input", { type: "radio", name: "anpi-mode", checked: mode === "once", onChange: () => {
260
+ setMode("once");
261
+ } }), "\u5355\u6B21\u6388\u6743", _jsx("small", { children: "\u4EC5\u672C\u6B21\u64CD\u4F5C\u6709\u6548" })] }), _jsxs("label", { children: [_jsx("input", { type: "radio", name: "anpi-mode", checked: mode === "permanent", onChange: () => {
262
+ setMode("permanent");
263
+ } }), "\u6C38\u4E45\u6388\u6743", _jsx("small", { children: "\u6301\u7EED\u6709\u6548\uFF0C\u76F4\u5230\u4F60\u64A4\u9500" })] })] })] }), mode === "permanent" ? (_jsx("p", { className: "anpi-operation", children: "\u6301\u7EED\u6388\u6743\uFF1A\u53EF\u8BFB\u53D6\u516C\u5F00\u8EAB\u4EFD\u3001\u7B7E\u540D\uFF0C\u5E76\u8BF7\u6C42\u4E0B\u5217\u5168\u90E8\u7F51\u7AD9\uFF0C\u76F4\u5230\u4F60\u64A4\u9500\u3002\u4E0D\u4EC5\u9650\u4E8E\u5F53\u524D\u64CD\u4F5C\u3002" })) : request.operation ? (_jsxs("p", { className: "anpi-operation", children: ["\u672C\u6B21\u64CD\u4F5C\uFF1A", request.operation.summary] })) : (mode === "once" && (_jsx("p", { role: "alert", children: "\u539F\u63D2\u4EF6\u672A\u63D0\u4F9B\u660E\u786E\u64CD\u4F5C\uFF0C\u6682\u4E0D\u80FD\u6279\u51C6\u5355\u6B21\u6388\u6743\uFF0C\u8BF7\u539F\u63D2\u4EF6\u8865\u9F50\u3002" }))), mode === "once" &&
264
+ review.permanentIdentities?.some((reference) => identityKey(reference) === key) && (_jsx("p", { className: "anpi-small", children: "\u6B64\u63D2\u4EF6\u5DF2\u6709\u6C38\u4E45\u6388\u6743\uFF0C\u4ECD\u7136\u6709\u6548\uFF1B\u672C\u6B21\u9009\u62E9\u5355\u6B21\u6388\u6743\u4E0D\u4F1A\u64A4\u9500\u5B83\u3002\u9700\u8981\u53D6\u6D88\u65F6\uFF0C\u8BF7\u5728\u8EAB\u4EFD\u8BE6\u60C5\u4E2D\u64A4\u9500\u3002" })), review.unavailableReason && (_jsx("p", { role: "alert", children: review.unavailableReason })), _jsxs("div", { className: "anpi-access-scope", children: [_jsx("p", { className: "anpi-small", children: FULL_PERMISSION_NOTICE }), _jsx("p", { className: "anpi-small", children: "\u7B7E\u540D\u53EF\u5728\u5916\u90E8\u4F7F\u7528\uFF0C\u4E0D\u53D7\u7F51\u7AD9\u5217\u8868\u9650\u5236\u3002" }), _jsxs("details", { children: [_jsx("summary", { children: "\u5168\u90E8\u4F7F\u7528\u6743\u9650 \u00B7 \u67E5\u770B\u8303\u56F4" }), snapshot ? (_jsxs(_Fragment, { children: [_jsx("p", { children: snapshot.capabilities
265
+ .map((capability) => capabilityNames[capability] ?? capability)
266
+ .join("、") }), _jsxs("p", { className: "anpi-small", children: ["\u7B7E\u540D\u7528\u9014\uFF1A", snapshot.signingPurposes.join("、") || "无"] })] })) : (_jsx("p", { children: "\u65E0\u6CD5\u8BFB\u53D6\u6743\u9650\u8303\u56F4\uFF0C\u6682\u4E0D\u80FD\u6388\u6743\u3002" }))] }), _jsxs("p", { className: "anpi-small anpi-break", children: ["\u7F51\u7AD9\uFF1A", snapshot?.httpOrigins.join("、") || "无"] })] }), _jsx(DecisionActions, { controller: controller, disabled: !identity ||
267
+ !snapshot ||
268
+ Boolean(review.unavailableReason) ||
269
+ (mode === "once" && !request.operation), approve: () => {
270
+ if (identity)
271
+ void controller.decide({
272
+ decision: "approve",
273
+ identity: identityReference(identity),
274
+ mode,
275
+ ...(snapshot ? { reviewedSnapshot: snapshot } : {}),
276
+ });
277
+ }, label: "\u5141\u8BB8\u6388\u6743" })] }));
278
+ }
279
+ function DecisionActions({ controller, disabled, approve, label, }) {
280
+ const view = useSyncExternalStore(controller.subscribe, controller.getSnapshot);
281
+ return (_jsxs("div", { className: "anpi-footer", children: [_jsx(Button, { disabled: view.pending, onClick: () => {
282
+ controller.closeModal();
283
+ }, children: "\u7A0D\u540E" }), _jsx("span", { className: "anpi-spacer" }), _jsx(Button, { variant: "outline", disabled: view.pending, onClick: () => {
284
+ void controller.decide({ decision: "deny" });
285
+ }, children: "\u62D2\u7EDD" }), _jsx(Button, { variant: "primary", disabled: disabled || view.pending, onClick: approve, children: label })] }));
286
+ }
287
+ //# sourceMappingURL=views.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"views.js","sourceRoot":"","sources":["../../src/client/views.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,SAAS,EACT,MAAM,EACN,QAAQ,EACR,oBAAoB,GAErB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,uCAAuC,CAAC;AAMtE,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AAMzB,MAAM,CAAC,MAAM,sBAAsB,GACjC,4BAA4B,CAAC;AAC/B,MAAM,SAAS,GAAG,CAAC,IAAuB,EAAU,EAAE,CACpD,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;AACpC,MAAM,aAAa,GAAG,CAAC,QAAgC,EAAU,EAAE,CACjE,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC;AAC3C,MAAM,eAAe,GAA2B;IAC9C,eAAe,EAAE,QAAQ;IACzB,eAAe,EAAE,IAAI;IACrB,oBAAoB,EAAE,MAAM;CAC7B,CAAC;AACF,SAAS,OAAO,CAAC,EACf,KAAK,EACL,KAAK,EACL,UAAU,GAKX;IACC,OAAO,CACL,eAAK,SAAS,EAAE,YAAY,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,aACnE,eAAM,SAAS,EAAC,kBAAkB,YAAE,KAAK,GAAQ,EACjD,eAAM,SAAS,EAAE,8BAA8B,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,YAAG,KAAK,IAAI,KAAK,GAAQ,EACnG,KAAK,IAAI,CACR,KAAC,MAAM,IACL,IAAI,EAAC,IAAI,gBACG,MAAM,KAAK,EAAE,EACzB,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9B,CAAC,6BAGM,CACV,IACG,CACP,CAAC;AACJ,CAAC;AACD,SAAS,KAAK,CAAC,EACb,QAAQ,GAGT;IACC,OAAO,CACL,8BACE,gEAAe,EACd,QAAQ,CAAC,CAAC,CAAC,CACV,8BACE,uBACG,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CACzC,uBACG,eAAe,CAAC,UAAU,CAAC,IAAI,UAAU,IADnC,UAAU,CAEd,CACN,CAAC,GACC,EACL,0DAAS,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAK,EACvD,aAAG,SAAS,EAAC,YAAY,mCACnB,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IACvC,IACH,CACJ,CAAC,CAAC,CAAC,CACF,qHAAsB,CACvB,EACD,YAAG,SAAS,EAAC,YAAY,YAAE,sBAAsB,GAAK,EACtD,YAAG,SAAS,EAAC,YAAY,6HAAuB,IAC/C,CACJ,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAAC,EAC/B,UAAU,GAGX;IACC,MAAM,IAAI,GAAG,oBAAoB,CAC/B,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,WAAW,CACvB,CAAC;IACF,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAA4B,YAAY,CAAC,CAAC;IACxE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;IACvC,MAAM,OAAO,GACX,QAAQ,EAAE,mBAAmB;QAC7B,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,EAAE,YAAY,CAAC,MAAM;YAClD,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,EAAE,CAAC,CAAC;IACV,OAAO,CACL,mBAAS,SAAS,EAAC,MAAM,aACvB,wCAAW,EACX,YAAG,SAAS,EAAC,YAAY,4EAAmB,EAC5C,eAAK,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,SAAS,gBAAY,0BAAM,aACzD,iBACE,IAAI,EAAC,KAAK,mBACK,GAAG,KAAK,YAAY,EACnC,OAAO,EAAE,GAAG,EAAE;4BACZ,MAAM,CAAC,YAAY,CAAC,CAAC;wBACvB,CAAC,yCAGM,EACT,kBACE,IAAI,EAAC,KAAK,mBACK,GAAG,KAAK,UAAU,EACjC,OAAO,EAAE,GAAG,EAAE;4BACZ,MAAM,CAAC,UAAU,CAAC,CAAC;wBACrB,CAAC,yCAGA,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAC3B,eAAM,SAAS,EAAC,YAAY,YAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAQ,CAC3D,IACM,IACL,EACL,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAC5B,eAAK,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,YAAY,aACrC,IAAI,CAAC,KAAK,EACX,KAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;4BACZ,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;wBAC5B,CAAC,6BAGM,IACL,CACP,EACA,IAAI,CAAC,MAAM,IAAI,CACd,YAAG,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,YAAY,YACpC,IAAI,CAAC,MAAM,GACV,CACL,EACA,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACd,YAAG,IAAI,EAAC,QAAQ,2DAAY,CAC7B,CAAC,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,CACvB,8BACE,eAAK,SAAS,EAAC,UAAU,aACvB,uBAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAM,EACpC,KAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;oCACZ,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;oCACrB,IAAI,CAAC,OAAO;wCAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC;gCAC9C,CAAC,YAEA,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GACjB,IACL,EACN,YAAG,SAAS,EAAC,YAAY,YACtB,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,GACxC,EACJ,KAAC,WAAW,IACV,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAChD,OAAO,EAAE,OAAO,GAChB,IACD,CACJ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACjC,iFAAgB,CACjB,CAAC,CAAC,CAAC,CACF,eAAK,SAAS,EAAC,cAAc,aAC3B,cAAK,SAAS,EAAC,iBAAiB,gBAAY,0BAAM,YAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC7B,iCAGI,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,WAAW;gCACvD,CAAC,CAAC,MAAM;gCACR,CAAC,CAAC,SAAS,EAEf,OAAO,EAAE,GAAG,EAAE;gCACZ,KAAK,UAAU,CAAC,cAAc,CAC5B,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CACrC,CAAC;4BACJ,CAAC,YAED,gBAAM,SAAS,EAAC,qBAAqB,aACnC,iBAAQ,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,YAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,GAAU,EAChG,gBAAO,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,YAAG,IAAI,CAAC,SAAS,CAAC,GAAG,GAAS,IACzD,IAfF,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAgBlC,CACV,CAAC,GACE,EACL,QAAQ,IAAI,CACX,eAAK,SAAS,EAAC,aAAa,aAC1B,uBAAK,QAAQ,CAAC,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,GAAM,EACrD,eAAK,SAAS,EAAC,aAAa,aAC5B,KAAC,OAAO,IACN,KAAK,EAAC,QAAQ,EACd,KAAK,EAAE,QAAQ,CAAC,MAAM,EACtB,UAAU,EAAE,UAAU,GACtB,EACF,KAAC,OAAO,IACN,KAAK,EAAC,KAAK,EACX,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,GAAG,EAC7B,UAAU,EAAE,UAAU,GACtB,IACI,EACN,eAAK,SAAS,EAAC,cAAc,aAC3B,gEAAe,EACd,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAC3B,YAAG,SAAS,EAAC,YAAY,2DAAY,CACtC,EACA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC1B,eAAK,SAAS,EAAC,UAAU,aACvB,0BACE,2BAAS,KAAK,CAAC,MAAM,CAAC,WAAW,GAAU,EAC3C,aAAG,SAAS,EAAC,YAAY,iDACf,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAC3B,IACA,EACN,eAAK,SAAS,EAAC,cAAc,aAC3B,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,GAAG,EAAE;4DACZ,KAAK,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wDAC5C,CAAC,yCAGM,EACT,KAAC,MAAM,IACL,QAAQ,EAAE,IAAI,CAAC,OAAO,EACtB,OAAO,EAAE,GAAG,EAAE;4DACZ,KAAK,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wDACvC,CAAC,6BAGM,IACL,KAxBuB,KAAK,CAAC,EAAE,CAyBjC,CACP,CAAC,EACF,YAAG,SAAS,EAAC,YAAY,YAAE,sBAAsB,GAAK,IAClD,EACL,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CACnC,eAAK,SAAS,EAAC,cAAc,aAC3B,oDAAa,EACZ,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnC,0BACE,2BAAS,IAAI,CAAC,WAAW,GAAU,EACnC,YAAG,SAAS,EAAC,YAAY,YACtB,IAAI,CAAC,IAAI,KAAK,UAAU;oDACvB,CAAC,CAAC,OAAO;oDACT,CAAC,CAAC,YAAY,GACd,KANI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAOnC,CACP,CAAC,IACE,CACP,EACD,eAAK,SAAS,EAAC,cAAc,aAC3B,MAAC,MAAM,qBACU,IAAI,CAAC,YAAY,EAChC,OAAO,EAAE,GAAG,EAAE;4CACZ,KAAK,UAAU,CAAC,cAAc,EAAE,CAAC;wCACnC,CAAC,aAEA,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,sCACvB,EACR,IAAI,CAAC,YAAY,IAAI,CACpB,8BACE,cAAK,SAAS,EAAC,eAAe,YAAE,IAAI,CAAC,QAAQ,GAAO,EACpD,KAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;oDACZ,IAAI,IAAI,CAAC,QAAQ;wDAAE,KAAK,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gDACzD,CAAC,kCAGM,IACR,CACJ,IACG,EACN,eAAK,SAAS,EAAC,2BAA2B,aACxC,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,EAC1C,OAAO,EAAE,GAAG,EAAE;4CACZ,UAAU,CAAC,UAAU,EAAE,CAAC;wCAC1B,CAAC,yCAGM,EACR,OAAO,IAAI,eAAM,SAAS,EAAC,YAAY,YAAE,OAAO,GAAQ,IACrD,KAjG0B,IAAI,CAAC,WAAW,CAkG5C,CACP,IACG,CACP,IACO,CACX,CAAC;AACJ,CAAC;AACD,SAAS,WAAW,CAAC,EACnB,UAAU,EACV,QAAQ,EACR,OAAO,GAKR;IACC,IAAI,CAAC,QAAQ,CAAC,MAAM;QAClB,OAAO,sBAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,GAAK,CAAC;IACrD,MAAM,YAAY,GAAG;QACnB,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK;KACf,CAAC;IACF,OAAO,CACL,cAAK,SAAS,EAAC,mBAAmB,YAC/B,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACzB,mBAAS,SAAS,EAAC,UAAU,aAC3B,eAAK,SAAS,EAAC,YAAY,aACzB,2BAAS,OAAO,CAAC,MAAM,CAAC,WAAW,GAAU,EAC7C,YAAG,SAAS,EAAC,YAAY,YAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAK,EACvD,sBAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAK,EACxD,YAAG,SAAS,EAAC,YAAY,YAAE,OAAO,CAAC,OAAO,GAAK,EAC/C,YAAG,SAAS,EAAC,YAAY,YACtB,OAAO,CAAC,IAAI,KAAK,QAAQ;gCACxB,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,MAAM,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE;gCACxF,CAAC,CAAC,SAAS,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GACtF,EACH,OAAO,IAAI,CACV,wBACG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAC5B,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,eAAe;oCACnD,CAAC,CAAC,MAAM,OAAO,CAAC,eAAe,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE;oCACzK,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI;wCACzC,CAAC,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wCACjC,CAAC,CAAC,EAAE,IACN,CACL,IACG,EACN,eAAK,SAAS,EAAC,qBAAqB,aAClC,eAAM,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,YACtD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,GACxC,EACN,OAAO,CAAC,CAAC,CAAC,CACT,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,CAC9B,8BACE,KAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;wCACZ,KAAK,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oCACzC,CAAC,YAEA,OAAO,CAAC,IAAI,KAAK,QAAQ;wCAC1B,OAAO,CAAC,MAAM,KAAK,UAAU;wCAC7B,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;4CACpC,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC;wCACtC,CAAC,CAAC,MAAM;wCACR,CAAC,CAAC,MAAM,GACH,EACR,CAAC,CACA,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,CAC3D,IAAI,CACH,KAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;wCACZ,KAAK,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;oCACvC,CAAC,yCAGM,CACV,IACA,CACJ,CACF,CAAC,CAAC,CAAC,CACF,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,GAAG,EAAE;gCACZ,KAAK,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;4BAC1C,CAAC,yCAGM,CACV,IACG,KAhE2B,OAAO,CAAC,EAAE,CAiEnC,CACX,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,SAAS,aAAa,CACpB,IAAqC,EACrC,UAA8B;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;QAC1B,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAuB,CAAC;QACrE,IAAI,CAAC,MAAM;YAAE,OAAO;QACpB,MAAM,QAAQ,GAA6B,EAAE,CAAC;QAC9C,IAAI,MAAM,GAAuB,MAAM,CAAC;QACxC,OAAO,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAuB,MAAM,CAAC,aAAa,CAAC;YACxD,IAAI,CAAC,MAAM;gBAAE,MAAM;YACnB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,QAAQ;gBACjC,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;oBACrD,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;oBACpC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;gBACrB,CAAC;YACH,MAAM,GAAG,MAAM,CAAC;QAClB,CAAC;QACD,MAAM,SAAS,GAAG,GAAkB,EAAE,CAAC;YACrC,GAAG,MAAM,CAAC,gBAAgB,CACxB,oFAAoF,CACrF;SACF,CAAC;QACF,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,CAAC,KAAoB,EAAQ,EAAE;YACzC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;gBACjC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC1B,CAAC;iBAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACvB,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;oBACpB,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,OAAO;gBACT,CAAC;gBACD,IACE,KAAK,CAAC,QAAQ;oBACd,CAAC,QAAQ,CAAC,aAAa,KAAK,KAAK;wBAC/B,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAC3C,CAAC;oBACD,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,CAAC;qBAAM,IACL,CAAC,KAAK,CAAC,QAAQ;oBACf,CAAC,QAAQ,CAAC,aAAa,KAAK,IAAI;wBAC9B,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAC3C,CAAC;oBACD,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAChD,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACnD,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,QAAQ;gBAAE,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACjE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AACzB,CAAC;AACD,MAAM,UAAU,eAAe,CAAC,EAC9B,UAAU,GAGX;IACC,MAAM,IAAI,GAAG,oBAAoB,CAC/B,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,WAAW,CACvB,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,GAAG,GACP,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;QACjD,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE;QAC9D,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YACvD,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE;YACnC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,OAAO,KAAC,aAAa,IAAW,UAAU,EAAE,UAAU,IAA3B,GAAG,CAA4B,CAAC;AAC7D,CAAC;AACD,SAAS,aAAa,CAAC,EACrB,UAAU,GAGX;IACC,MAAM,IAAI,GAAG,oBAAoB,CAC/B,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,WAAW,CACvB,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC1C,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,KAAa,CAAC;IAClB,IAAI,OAAkB,CAAC;IACvB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,KAAK,GAAG,MAAM,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACjC,OAAO,GAAG,CACR,8BACE,uBAAK,OAAO,CAAC,MAAM,CAAC,WAAW,GAAM,EACrC,YAAG,SAAS,EAAC,YAAY,YAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAK,EACvD,sBAAI,OAAO,CAAC,OAAO,GAAK,EACvB,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC3B,8BACE,0DAEG,OAAO,CAAC,eAAe,KAAK,WAAW;oCACtC,CAAC,CAAC,OAAO;oCACT,CAAC,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;wCACrC,CAAC,CAAC,OAAO;wCACT,CAAC,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;4CACrC,CAAC,CAAC,SAAS;4CACX,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU;gDAC7B,CAAC,CAAC,uBAAuB;gDACzB,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ;oDAC3B,CAAC,CAAC,KAAK;oDACP,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,WAAW;wDAC9B,CAAC,CAAC,KAAK;wDACP,CAAC,CAAC,KAAK,IACjB,EACH,OAAO,CAAC,MAAM,IAAI,CACjB,8BACE,0DAAS,OAAO,CAAC,MAAM,CAAC,KAAK,IAAK,EAClC,KAAC,OAAO,IACN,KAAK,EAAC,KAAK,EACX,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EACnC,UAAU,EAAE,UAAU,GACtB,IACD,CACJ,EACA,OAAO,CAAC,eAAe,KAAK,WAAW,IAAI,CAC1C,YAAG,SAAS,EAAC,YAAY,uKAErB,CACL,EACA,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,CACxC,YAAG,SAAS,EAAC,YAAY,iKAErB,CACL,IACA,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,0DAEG,OAAO,CAAC,MAAM,KAAK,UAAU;oCAC5B,CAAC,CAAC,KAAK;oCACP,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ;wCAC3B,CAAC,CAAC,KAAK;wCACP,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,WAAW;4CAC9B,CAAC,CAAC,KAAK;4CACP,CAAC,CAAC,KAAK,IACX,EACH,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,CAChC,0DAEG,KAAK;oCACJ,CAAC,CACG;wCACE,MAAM,EAAE,IAAI;wCACZ,QAAQ,EAAE,KAAK;wCACf,OAAO,EAAE,KAAK;wCACd,OAAO,EAAE,KAAK;qCAEjB,CAAC,KAAK,CAAC,MAAM,CAAC;oCACjB,CAAC,CAAC,YAAY,IACd,CACL,EACA,KAAK,IAAI,CACR,8BACE,0DAAS,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAK,EACnC,KAAC,OAAO,IACN,KAAK,EAAC,KAAK,EACX,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,EACzB,UAAU,EAAE,UAAU,GACtB,IACD,CACJ,EACD,YAAG,SAAS,EAAC,YAAY,2GAAoB,IAC5C,CACJ,EACD,cAAK,SAAS,EAAC,aAAa,YAC1B,KAAC,MAAM,IACL,OAAO,EAAE,GAAG,EAAE;4BACZ,UAAU,CAAC,UAAU,EAAE,CAAC;wBAC1B,CAAC,6BAGM,GACL,IACL,CACJ,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;QACrC,KAAK,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;QACvF,OAAO,GAAG,CACR,8BACE,YAAG,SAAS,EAAC,YAAY,YAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,GAAK,EACvD,sBAAI,OAAO,CAAC,OAAO,GAAK,EACvB,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC3B,8BACE,cAAI,SAAS,EAAC,iBAAiB,aAC7B,oDAAa,EACb,uBAAK,OAAO,CAAC,UAAU,CAAC,KAAK,GAAM,EACnC,kCAAe,EACf,uBAAK,OAAO,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,GAAM,EAC7C,4CAAe,EACf,uBAAK,OAAO,CAAC,UAAU,CAAC,MAAM,GAAM,EACpC,oDAAa,EACb,uBAAK,OAAO,CAAC,UAAU,CAAC,IAAI,GAAM,IAC/B,EACL,qHAAsB,EACtB,YAAG,SAAS,EAAC,YAAY,wKAAoC,EAC7D,YAAG,SAAS,EAAC,YAAY,6KAErB,EACJ,YAAG,SAAS,EAAC,YAAY,oGAAuB,EAChD,YAAG,SAAS,EAAC,YAAY,uHAAsB,EAC9C,KAAK,CAAC,MAAM,CAAC,iBAAiB,IAAI,CACjC,YAAG,IAAI,EAAC,OAAO,YAAE,KAAK,CAAC,MAAM,CAAC,iBAAiB,GAAK,CACrD,EACD,KAAC,eAAe,IACd,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,EACjD,OAAO,EAAE,GAAG,EAAE;gCACZ,KAAK,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;4BAClD,CAAC,EACD,KAAK,EAAC,0BAAM,GACZ,IACD,CACJ,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IAAC,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAI,CAC7D,IACA,CACJ,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACxC,KAAK,GAAG,MAAM,CAAC;QACf,OAAO,GAAG,CACR,8BACE,uBAAK,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,GAAM,EACzC,YAAG,SAAS,EAAC,YAAY,YAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAK,EAC3D,wBACG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAC7B,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IACzD,EACJ,YAAG,SAAS,EAAC,uBAAuB,YAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAK,EACvE,0DACQ,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAChC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW;4BAC/B,CAAC,CAAC,QAAQ;4BACV,CAAC,CAAC,UAAU,IACZ,EACH,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAC9B,8BACE,aAAG,SAAS,EAAC,YAAY,+CACjB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,IAClC,EACJ,0DAEG,KAAK,CAAC,KAAK,CAAC,SAAS;oCACpB,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;oCAClD,CAAC,CAAC,KAAK,IACP,IACH,CACJ,EACD,KAAC,KAAK,IAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAI,EACzC,YAAG,SAAS,EAAC,YAAY,2JAErB,EACJ,cAAK,SAAS,EAAC,aAAa,YAC1B,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,GAAG,EAAE;4BACZ,UAAU,CAAC,UAAU,EAAE,CAAC;wBAC1B,CAAC,6BAGM,GACL,IACL,CACJ,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACnC,KAAK,GAAG,MAAM,CAAC;QACf,OAAO,GAAG,CACR,8BACE,uBAAK,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,GAAM,EACzC,YAAG,SAAS,EAAC,YAAY,YAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAK,EAC3D,wBAAI,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAK,EAClG,YAAG,SAAS,EAAC,uBAAuB,YAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAK,EACvE,sEAAW,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,wJAA6B,EACnE,YAAG,SAAS,EAAC,YAAY,2MAAoC,EAC7D,eAAK,SAAS,EAAC,aAAa,aAC1B,KAAC,MAAM,IAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,6BAAa,EACnF,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,yCAAe,IACzG,IACL,CACJ,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,MAAM,CAAC;QACf,OAAO,GAAG,CACR,8BACE,sPAGI,EACJ,iBAAO,OAAO,EAAC,qBAAqB,2DAC1B,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,0BAC/B,EACR,gBACE,EAAE,EAAC,qBAAqB,EACxB,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACtC,CAAC,GACD,EACF,eAAK,SAAS,EAAC,aAAa,aAC1B,KAAC,MAAM,IACL,QAAQ,EAAE,IAAI,CAAC,OAAO,EACtB,OAAO,EAAE,GAAG,EAAE;gCACZ,UAAU,CAAC,UAAU,EAAE,CAAC;4BAC1B,CAAC,6BAGM,EACT,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,QAAQ,EACN,IAAI,CAAC,OAAO,IAAI,YAAY,KAAK,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAEhE,OAAO,EAAE,GAAG,EAAE;gCACZ,KAAK,UAAU,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;4BAC/C,CAAC,yCAGM,IACL,IACL,CACJ,CAAC;IACJ,CAAC;IACD,OAAO,CACL,KAAC,KAAK,IACJ,IAAI,QACJ,KAAK,EAAE,KAAK,EACZ,UAAU,EAAC,0BAAM,EACjB,OAAO,EAAE,GAAG,EAAE;YACZ,UAAU,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC,EACD,SAAS,EAAC,YAAY,EACtB,gBAAgB,EAAC,oBAAoB,YAErC,eAAK,GAAG,EAAE,IAAI,EAAE,SAAS,EAAC,MAAM,aAC7B,OAAO,EACP,IAAI,CAAC,OAAO,IAAI,YAAG,IAAI,EAAC,QAAQ,yFAAiB,EACjD,IAAI,CAAC,KAAK,IAAI,CACb,YAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,YAAY,YACnC,IAAI,CAAC,KAAK,GACT,CACL,IACG,GACA,CACT,CAAC;AACJ,CAAC;AACD,SAAS,UAAU,CAAC,EAClB,UAAU,EACV,MAAM,GAIP;IACC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAoB,MAAM,CAAC,CAAC;IAC5D,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAC5B,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ;QAC3C,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC/B,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YACpB,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,CAAC,CAAC,EAAE,CACT,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CACjD,CAAC;IACF,MAAM,QAAQ,GACZ,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC;QAClE,EAAE,QAAQ;QACZ,CAAC,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG;YACxD,CAAC,CAAC,MAAM,CAAC,QAAQ;YACjB,CAAC,CAAC,SAAS,CAAC,CAAC;IACjB,OAAO,CACL,8BACE,gBAAO,OAAO,EAAC,sBAAsB,qDAAe,EACpD,iBACE,EAAE,EAAC,sBAAsB,EACzB,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC7B,CAAC,EACD,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,SAAS,YAEvC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC/B,kBAEE,KAAK,EAAE,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,aAE1C,aAAa,CAAC,IAAI,CAAC,EACnB,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,cAAK,IAAI,CAAC,SAAS,CAAC,GAAG,KAJzD,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAKlC,CACV,CAAC,GACK,EACR,CAAC,QAAQ,IAAI,mJAA2B,EACzC,+BACE,wDAAqB,EACrB,eAAK,SAAS,EAAC,WAAW,aACxB,4BACE,gBACE,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,WAAW,EAChB,OAAO,EAAE,IAAI,KAAK,MAAM,EACxB,QAAQ,EAAE,GAAG,EAAE;4CACb,OAAO,CAAC,MAAM,CAAC,CAAC;wCAClB,CAAC,GACD,8BACE,yEAAsB,IACpB,EACR,4BACE,gBACE,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,WAAW,EAChB,OAAO,EAAE,IAAI,KAAK,WAAW,EAC7B,QAAQ,EAAE,GAAG,EAAE;4CACb,OAAO,CAAC,WAAW,CAAC,CAAC;wCACvB,CAAC,GACD,8BACE,2FAAyB,IACvB,IACJ,IACG,EACV,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CACtB,YAAG,SAAS,EAAC,gBAAgB,uQAA8C,CAC5E,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CACtB,aAAG,SAAS,EAAC,gBAAgB,+CAAO,OAAO,CAAC,SAAS,CAAC,OAAO,IAAK,CACnE,CAAC,CAAC,CAAC,CACF,IAAI,KAAK,MAAM,IAAI,CACjB,YAAG,IAAI,EAAC,OAAO,yLAEX,CACL,CACF,EACA,IAAI,KAAK,MAAM;gBACd,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAC9B,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,GAAG,CAC9C,IAAI,CACH,YAAG,SAAS,EAAC,YAAY,+RAErB,CACL,EACF,MAAM,CAAC,iBAAiB,IAAI,CAC3B,YAAG,IAAI,EAAC,OAAO,YAAE,MAAM,CAAC,iBAAiB,GAAK,CAC/C,EACD,eAAK,SAAS,EAAC,mBAAmB,aAChC,YAAG,SAAS,EAAC,YAAY,YAAE,sBAAsB,GAAK,EACtD,YAAG,SAAS,EAAC,YAAY,6HAAuB,EAChD,8BACE,qGAAgC,EAC/B,QAAQ,CAAC,CAAC,CAAC,CACV,8BACE,sBACG,QAAQ,CAAC,YAAY;6CACnB,GAAG,CACF,CAAC,UAAU,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,UAAU,CAC1D;6CACA,IAAI,CAAC,GAAG,CAAC,GACV,EACJ,aAAG,SAAS,EAAC,YAAY,+CACjB,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAC7C,IACH,CACJ,CAAC,CAAC,CAAC,CACF,qHAAsB,CACvB,IACO,EACV,aAAG,SAAS,EAAC,uBAAuB,mCAC9B,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IACxC,IACA,EACN,KAAC,eAAe,IACd,UAAU,EAAE,UAAU,EACtB,QAAQ,EACN,CAAC,QAAQ;oBACT,CAAC,QAAQ;oBACT,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;oBACjC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAEzC,OAAO,EAAE,GAAG,EAAE;oBACZ,IAAI,QAAQ;wBACV,KAAK,UAAU,CAAC,MAAM,CAAC;4BACrB,QAAQ,EAAE,SAAS;4BACnB,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,CAAC;4BACrC,IAAI;4BACJ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACpD,CAAC,CAAC;gBACP,CAAC,EACD,KAAK,EAAC,0BAAM,GACZ,IACD,CACJ,CAAC;AACJ,CAAC;AACD,SAAS,eAAe,CAAC,EACvB,UAAU,EACV,QAAQ,EACR,OAAO,EACP,KAAK,GAMN;IACC,MAAM,IAAI,GAAG,oBAAoB,CAC/B,UAAU,CAAC,SAAS,EACpB,UAAU,CAAC,WAAW,CACvB,CAAC;IACF,OAAO,CACL,eAAK,SAAS,EAAC,aAAa,aAC1B,KAAC,MAAM,IACL,QAAQ,EAAE,IAAI,CAAC,OAAO,EACtB,OAAO,EAAE,GAAG,EAAE;oBACZ,UAAU,CAAC,UAAU,EAAE,CAAC;gBAC1B,CAAC,6BAGM,EACT,eAAM,SAAS,EAAC,aAAa,GAAG,EAChC,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,QAAQ,EAAE,IAAI,CAAC,OAAO,EACtB,OAAO,EAAE,GAAG,EAAE;oBACZ,KAAK,UAAU,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC/C,CAAC,6BAGM,EACT,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC,OAAO,EAClC,OAAO,EAAE,OAAO,YAEf,KAAK,GACC,IACL,CACP,CAAC;AACJ,CAAC"}