diff --git a/control-plane/client_isolation_test.go b/control-plane/client_isolation_test.go new file mode 100644 index 0000000..99fd2bf --- /dev/null +++ b/control-plane/client_isolation_test.go @@ -0,0 +1,176 @@ +package controlplane + +import ( + "encoding/json" + "net/http" + "net/http/httptest" + "path/filepath" + "testing" + "time" +) + +func TestClientsRemainIsolatedWhenOneDisconnects(t *testing.T) { + server, err := NewServer(ServerConfig{ + DataFile: filepath.Join(t.TempDir(), "control-plane.json"), + NodeTokens: map[string]string{"client-a": "secret-a", "client-b": "secret-b"}, + WebUsers: map[string]string{"admin": "web-secret"}, + HeartbeatTimeout: time.Minute, + LeaseTTL: time.Minute, + }) + if err != nil { + t.Fatal(err) + } + defer server.Close() + httpServer := httptest.NewServer(server.Handler()) + defer httpServer.Close() + client := httpServer.Client() + + login := doJSON(t, client, http.MethodPost, httpServer.URL+"/v1/auth/login", "", map[string]string{"username": "admin", "password": "web-secret"}) + var session struct { + AccessToken string `json:"access_token"` + } + decodeBody(t, login, &session) + webAuth := "Bearer " + session.AccessToken + + register := func(nodeID, token, connectionID string) { + response := doJSON(t, client, http.MethodPost, httpServer.URL+"/v1/nodes/register", "Bearer "+token, NodeRegistration{ + NodeID: nodeID, ConnectionID: connectionID, AgentVersion: "test", ProtocolVersion: ProtocolVersion, + Capabilities: []string{"heartbeat", "poll-tasks", "send-text"}, + Accounts: []AccountSummary{{AccountID: "account-a", Active: true, Verified: true}}, + }) + if response.Code != http.StatusOK { + t.Fatalf("register %s status = %d: %s", nodeID, response.Code, response.Body.String()) + } + } + register("client-a", "secret-a", "connection-a-1") + register("client-b", "secret-b", "connection-b-1") + + create := func(nodeID, key string) TaskSubmissionResponse { + response := doJSON(t, client, http.MethodPost, httpServer.URL+"/v1/tasks", webAuth, TaskSubmission{ + NodeID: nodeID, AccountID: "account-a", Kind: "send-text", IdempotencyKey: key, + Payload: json.RawMessage(`{"target_id":"target","text":"text","confirmed":true}`), + }) + if response.Code != http.StatusAccepted { + t.Fatalf("create %s status = %d: %s", nodeID, response.Code, response.Body.String()) + } + var result TaskSubmissionResponse + decodeBody(t, response, &result) + return result + } + + taskA := create("client-a", "a-1") + taskB := create("client-b", "b-1") + + stale := time.Now().UTC().Add(-time.Hour) + if err := server.store.Mutate(func(state *PersistedState) error { + node := state.Nodes["client-a"] + node.LastHeartbeatAt = &stale + state.Nodes["client-a"] = node + return nil + }); err != nil { + t.Fatal(err) + } + + nodesResponse := doJSON(t, client, http.MethodGet, httpServer.URL+"/v1/nodes", webAuth, nil) + if nodesResponse.Code != http.StatusOK { + t.Fatalf("node list status = %d: %s", nodesResponse.Code, nodesResponse.Body.String()) + } + var nodesBody struct { + Nodes []Node `json:"nodes"` + } + decodeBody(t, nodesResponse, &nodesBody) + statuses := map[string]NodeStatus{} + for _, node := range nodesBody.Nodes { + statuses[node.NodeID] = node.Status + } + if statuses["client-a"] != NodeOffline || statuses["client-b"] != NodeOnline { + t.Fatalf("unexpected client statuses: %+v", statuses) + } + + getTask := func(taskID string) Task { + response := doJSON(t, client, http.MethodGet, httpServer.URL+"/v1/tasks/"+taskID, webAuth, nil) + if response.Code != http.StatusOK { + t.Fatalf("get task %s status = %d: %s", taskID, response.Code, response.Body.String()) + } + var task Task + decodeBody(t, response, &task) + return task + } + if task := getTask(taskA.TaskID); task.Status != TaskWaitingForClient { + t.Fatalf("client A task status = %s, want %s", task.Status, TaskWaitingForClient) + } + if task := getTask(taskB.TaskID); task.Status != TaskPending { + t.Fatalf("client B task status = %s, want %s", task.Status, TaskPending) + } + + bPoll := doJSON(t, client, http.MethodGet, httpServer.URL+"/v1/nodes/client-b/tasks?account_id=account-a", "Bearer secret-b", nil) + var bBatch TaskBatch + decodeBody(t, bPoll, &bBatch) + if len(bBatch.Tasks) != 1 || bBatch.Tasks[0].TaskID != taskB.TaskID { + t.Fatalf("client B received the wrong tasks: %+v", bBatch.Tasks) + } + bLease := bBatch.Tasks[0] + bAck := TaskAck{TaskID: bLease.TaskID, AccountID: bLease.AccountID, LeaseGeneration: bLease.LeaseGeneration} + for _, phase := range []string{"ack", "start"} { + response := doJSON(t, client, http.MethodPost, httpServer.URL+"/v1/nodes/client-b/tasks/"+bLease.TaskID+"/"+phase, "Bearer secret-b", bAck) + if response.Code != http.StatusOK { + t.Fatalf("client B %s status = %d: %s", phase, response.Code, response.Body.String()) + } + } + result := doJSON(t, client, http.MethodPost, httpServer.URL+"/v1/nodes/client-b/tasks/"+bLease.TaskID+"/result", "Bearer secret-b", TaskResult{ + TaskID: bLease.TaskID, AccountID: bLease.AccountID, LeaseGeneration: bLease.LeaseGeneration, + Status: TaskSucceeded, HasSideEffect: true, CorrelationID: "client-b-result", + }) + if result.Code != http.StatusOK { + t.Fatalf("client B result status = %d: %s", result.Code, result.Body.String()) + } + bEvent := MessageEvent{NodeID: "client-b", AccountID: "account-a", ChatID: "client-b-chat", ChatType: ChatPrivate, + EventSeq: 1, EventType: "message", OccurredAt: time.Now().UTC(), Content: "client-b-content", ConfigVersion: 1, AuthorizationVersion: 1, Authorized: true} + bEventResponse := doJSON(t, client, http.MethodPost, httpServer.URL+"/v1/nodes/client-b/events", "Bearer secret-b", bEvent) + if bEventResponse.Code != http.StatusAccepted { + t.Fatalf("client B event status = %d: %s", bEventResponse.Code, bEventResponse.Body.String()) + } + bEvents := doJSON(t, client, http.MethodGet, httpServer.URL+"/v1/events?node_id=client-b", webAuth, nil) + var bEventList struct { + Events []StoredEvent `json:"events"` + } + decodeBody(t, bEvents, &bEventList) + if len(bEventList.Events) != 1 || bEventList.Events[0].NodeID != "client-b" { + t.Fatalf("client B event isolation failed: %+v", bEventList.Events) + } + aPoll := doJSON(t, client, http.MethodGet, httpServer.URL+"/v1/nodes/client-a/tasks?account_id=account-a", "Bearer secret-a", nil) + var aBatch TaskBatch + decodeBody(t, aPoll, &aBatch) + if len(aBatch.Tasks) != 0 { + t.Fatalf("offline client A received tasks: %+v", aBatch.Tasks) + } + + register("client-a", "secret-a", "connection-a-2") + staleHeartbeat := doJSON(t, client, http.MethodPost, httpServer.URL+"/v1/nodes/client-a/heartbeat", "Bearer secret-a", Heartbeat{ + NodeID: "client-a", ConnectionID: "connection-a-1", AgentVersion: "test", ProtocolVersion: ProtocolVersion, + NodeStatus: NodeOnline, CorrelationID: "stale-heartbeat", + }) + if staleHeartbeat.Code != http.StatusConflict { + t.Fatalf("stale heartbeat status = %d: %s", staleHeartbeat.Code, staleHeartbeat.Body.String()) + } + freshHeartbeat := doJSON(t, client, http.MethodPost, httpServer.URL+"/v1/nodes/client-a/heartbeat", "Bearer secret-a", Heartbeat{ + NodeID: "client-a", ConnectionID: "connection-a-2", AgentVersion: "test", ProtocolVersion: ProtocolVersion, + NodeStatus: NodeOnline, CorrelationID: "fresh-heartbeat", + }) + if freshHeartbeat.Code != http.StatusOK { + t.Fatalf("fresh heartbeat status = %d: %s", freshHeartbeat.Code, freshHeartbeat.Body.String()) + } + + resume := doJSON(t, client, http.MethodPost, httpServer.URL+"/v1/tasks/"+taskA.TaskID+"/resume", webAuth, nil) + var resumed Task + decodeBody(t, resume, &resumed) + if resume.Code != http.StatusOK || resumed.Status != TaskPending { + t.Fatalf("resume status = %d task=%+v", resume.Code, resumed) + } + aPoll = doJSON(t, client, http.MethodGet, httpServer.URL+"/v1/nodes/client-a/tasks?account_id=account-a", "Bearer secret-a", nil) + aBatch = TaskBatch{} + decodeBody(t, aPoll, &aBatch) + if len(aBatch.Tasks) != 1 || aBatch.Tasks[0].TaskID != taskA.TaskID { + t.Fatalf("resumed client A received the wrong tasks: %+v", aBatch.Tasks) + } +} diff --git a/control-plane/protocol.go b/control-plane/protocol.go index 8a305ec..63e3546 100644 --- a/control-plane/protocol.go +++ b/control-plane/protocol.go @@ -12,6 +12,7 @@ type TaskStatus string const ( TaskPending TaskStatus = "Pending" + TaskWaitingForClient TaskStatus = "WaitingForClient" TaskAccepted TaskStatus = "Accepted" TaskRunning TaskStatus = "Running" TaskSucceeded TaskStatus = "Succeeded" @@ -42,6 +43,7 @@ const ( type NodeRegistration struct { NodeID string `json:"node_id"` + ConnectionID string `json:"connection_id,omitempty"` AgentVersion string `json:"agent_version"` ProtocolVersion string `json:"protocol_version"` Capabilities []string `json:"capabilities"` @@ -59,6 +61,7 @@ type AccountSummary struct { type Heartbeat struct { NodeID string `json:"node_id"` + ConnectionID string `json:"connection_id,omitempty"` AgentVersion string `json:"agent_version"` ProtocolVersion string `json:"protocol_version"` NodeStatus NodeStatus `json:"node_status"` @@ -169,6 +172,7 @@ type AuditEntry struct { type Node struct { NodeID string `json:"node_id"` + ConnectionID string `json:"connection_id,omitempty"` AgentVersion string `json:"agent_version"` ProtocolVersion string `json:"protocol_version"` Capabilities []string `json:"capabilities"` @@ -327,6 +331,7 @@ type PersistedAIConfig struct { type NodeResponse struct { NodeID string `json:"node_id"` + ConnectionID string `json:"connection_id,omitempty"` Status NodeStatus `json:"status"` Authenticated bool `json:"authenticated,omitempty"` LastHeartbeatAt *time.Time `json:"last_heartbeat_at,omitempty"` diff --git a/control-plane/server.go b/control-plane/server.go index 68bb773..6982f8f 100644 --- a/control-plane/server.go +++ b/control-plane/server.go @@ -328,13 +328,17 @@ func (s *Server) registerNode(w http.ResponseWriter, r *http.Request, correlatio if request.NodeID != nodeID { return requestError{status: http.StatusForbidden, code: "NodeIdentityMismatch", message: "The token is not assigned to this node."} } - if !validIdentifier(request.AgentVersion, 80) || request.ProtocolVersion != ProtocolVersion || len(request.Capabilities) > 100 || !validCapabilities(request.Capabilities) || !validAccountSummaries(request.Accounts) { + if (request.ConnectionID != "" && !validIdentifier(request.ConnectionID, 200)) || !validIdentifier(request.AgentVersion, 80) || request.ProtocolVersion != ProtocolVersion || len(request.Capabilities) > 100 || !validCapabilities(request.Capabilities) || !validAccountSummaries(request.Accounts) { return requestError{status: http.StatusBadRequest, code: "InvalidRegistration", message: "Node registration is invalid."} } now := time.Now().UTC() if err := s.store.Mutate(func(state *PersistedState) error { node := state.Nodes[nodeID] + if node.NodeID != "" && node.ConnectionID != request.ConnectionID { + quarantineNodeTasks(state, nodeID, now) + } node.NodeID = nodeID + node.ConnectionID = request.ConnectionID node.AgentVersion = request.AgentVersion node.ProtocolVersion = request.ProtocolVersion node.Capabilities = append([]string(nil), request.Capabilities...) @@ -349,7 +353,7 @@ func (s *Server) registerNode(w http.ResponseWriter, r *http.Request, correlatio }); err != nil { return requestError{status: http.StatusInternalServerError, code: "PersistenceFailed", message: "The control plane could not persist the node registration."} } - writeJSON(w, http.StatusOK, NodeResponse{NodeID: nodeID, Status: NodeOnline, Authenticated: true, CorrelationID: correlationID}) + writeJSON(w, http.StatusOK, NodeResponse{NodeID: nodeID, ConnectionID: request.ConnectionID, Status: NodeOnline, Authenticated: true, CorrelationID: correlationID}) return nil } @@ -406,6 +410,8 @@ func (s *Server) listNodes(w http.ResponseWriter, r *http.Request) error { } } if nodeChanged { + quarantineNodeTasks(state, nodeID, now) + state.Audit = appendAudit(state.Audit, "node:"+nodeID, "node.offline", nodeID, "", "success", now) state.Nodes[nodeID] = node } nodes = append(nodes, node) @@ -440,7 +446,7 @@ func (s *Server) heartbeat(w http.ResponseWriter, r *http.Request, nodeID, corre if err := decodeJSON(r, &request, 32*1024); err != nil { return err } - if request.NodeID != nodeID || request.ProtocolVersion != ProtocolVersion || !validIdentifier(request.AgentVersion, 80) || !validNodeStatus(request.NodeStatus) || request.QueueLength < 0 || request.QueueLength > 100000 { + if request.NodeID != nodeID || (request.ConnectionID != "" && !validIdentifier(request.ConnectionID, 200)) || request.ProtocolVersion != ProtocolVersion || !validIdentifier(request.AgentVersion, 80) || !validNodeStatus(request.NodeStatus) || request.QueueLength < 0 || request.QueueLength > 100000 { return requestError{status: http.StatusBadRequest, code: "InvalidHeartbeat", message: "Heartbeat is invalid."} } now := time.Now().UTC() @@ -449,6 +455,9 @@ func (s *Server) heartbeat(w http.ResponseWriter, r *http.Request, nodeID, corre if node.NodeID == "" { return requestError{status: http.StatusConflict, code: "NodeNotRegistered", message: "Register the node before sending a heartbeat."} } + if node.ConnectionID != request.ConnectionID { + return requestError{status: http.StatusConflict, code: "StaleConnection", message: "The heartbeat belongs to an older Client connection."} + } node.AgentVersion = request.AgentVersion node.ProtocolVersion = request.ProtocolVersion node.Status = request.NodeStatus @@ -467,7 +476,7 @@ func (s *Server) heartbeat(w http.ResponseWriter, r *http.Request, nodeID, corre }); err != nil { return err } - writeJSON(w, http.StatusOK, NodeResponse{NodeID: nodeID, Status: request.NodeStatus, LastHeartbeatAt: &now, CorrelationID: correlationID}) + writeJSON(w, http.StatusOK, NodeResponse{NodeID: nodeID, ConnectionID: request.ConnectionID, Status: request.NodeStatus, LastHeartbeatAt: &now, CorrelationID: correlationID}) return nil } @@ -951,6 +960,9 @@ func (s *Server) taskRoute(w http.ResponseWriter, r *http.Request, correlationID if len(parts) == 4 && parts[3] == "cancel" && r.Method == http.MethodPost { return s.cancelTask(w, parts[2], username, correlationID) } + if len(parts) == 4 && parts[3] == "resume" && r.Method == http.MethodPost { + return s.resumeTask(w, parts[2], username, correlationID) + } return requestError{status: http.StatusNotFound, code: "NotFound", message: "Resource was not found."} } @@ -993,10 +1005,14 @@ func (s *Server) createTaskSubmission(w http.ResponseWriter, request TaskSubmiss return nil } now := time.Now().UTC() + status := TaskPending + if !nodeAvailable(node, now, s.config.HeartbeatTimeout) { + status = TaskWaitingForClient + } task := Task{ TaskID: randomID(), NodeID: request.NodeID, AccountID: request.AccountID, Kind: request.Kind, IdempotencyKey: request.IdempotencyKey, Payload: append(jsonRaw(nil), request.Payload...), NotAfter: request.NotAfter, - Status: TaskPending, StateVersion: 1, CreatedAt: now, UpdatedAt: now, LastCorrelationID: correlationID, + Status: status, StateVersion: 1, CreatedAt: now, UpdatedAt: now, LastCorrelationID: correlationID, } state.Tasks[task.TaskID] = task state.Audit = appendAudit(state.Audit, "user:"+username, "task.create", task.TaskID, correlationID, "success", now) @@ -1068,7 +1084,7 @@ func (s *Server) cancelTask(w http.ResponseWriter, taskID, username, correlation if task.CancelRequestedAt == nil { task.CancelRequestedAt = &now task.StateVersion++ - if task.Status == TaskPending && !leaseActive(task, now) { + if (task.Status == TaskPending || task.Status == TaskWaitingForClient) && !leaseActive(task, now) { task.Status = TaskCancelled task.LeaseOwner = "" task.LeaseExpiresAt = nil @@ -1086,6 +1102,49 @@ func (s *Server) cancelTask(w http.ResponseWriter, taskID, username, correlation return nil } +func (s *Server) resumeTask(w http.ResponseWriter, taskID, username, correlationID string) error { + var task Task + err := s.store.Mutate(func(state *PersistedState) error { + value, ok := state.Tasks[taskID] + if !ok { + return requestError{status: http.StatusNotFound, code: "TaskNotFound", message: "Task was not found."} + } + task = value + if terminal(task.Status) { + return requestError{status: http.StatusConflict, code: "TerminalState", message: "The task cannot be resumed after it reached a terminal state."} + } + if task.Status != TaskWaitingForClient { + return requestError{status: http.StatusConflict, code: "InvalidTaskState", message: "Only tasks waiting for a Client can be resumed."} + } + if task.CancelRequestedAt != nil { + return requestError{status: http.StatusConflict, code: "CancelRequested", message: "The task was cancelled and cannot be resumed."} + } + node, exists := state.Nodes[task.NodeID] + now := time.Now().UTC() + if !exists || !nodeAvailable(node, now, s.config.HeartbeatTimeout) || !nodeHasAccount(node, task.AccountID) { + return requestError{status: http.StatusConflict, code: "ClientNotReady", message: "The target Client is not connected with the requested account."} + } + if task.NotAfter != nil && !now.Before(*task.NotAfter) { + task.Status = TaskExpired + task.StateVersion++ + task.UpdatedAt = now + } else { + task.Status = TaskPending + task.StateVersion++ + task.UpdatedAt = now + task.LastCorrelationID = correlationID + } + state.Tasks[taskID] = task + state.Audit = appendAudit(state.Audit, "user:"+username, "task.resume", taskID, correlationID, "success", now) + return nil + }) + if err != nil { + return err + } + writeJSON(w, http.StatusOK, task) + return nil +} + func (s *Server) eventRoute(w http.ResponseWriter, r *http.Request, _ string) error { if r.Method != http.MethodGet { return requestError{status: http.StatusMethodNotAllowed, code: "MethodNotAllowed", message: "Method is not allowed."} @@ -1332,6 +1391,31 @@ func markUnconfirmed(task *Task, reason string, now time.Time) { task.Result = &TaskResult{TaskID: task.TaskID, AccountID: task.AccountID, LeaseGeneration: task.LeaseGeneration, Status: TaskResultUnconfirmed, ErrorCode: reason, Message: "The control plane could not prove that the previous executor stopped before the lease expired.", CorrelationID: task.LastCorrelationID} } +func quarantineNodeTasks(state *PersistedState, nodeID string, now time.Time) { + for taskID, value := range state.Tasks { + if value.NodeID != nodeID || terminal(value.Status) { + continue + } + task := value + switch task.Status { + case TaskPending, TaskWaitingForClient: + if task.Status == TaskWaitingForClient && task.LeaseOwner == "" && task.LeaseExpiresAt == nil { + continue + } + task.Status = TaskWaitingForClient + task.StateVersion++ + task.UpdatedAt = now + task.LeaseOwner = "" + task.LeaseExpiresAt = nil + case TaskAccepted, TaskRunning: + markUnconfirmed(&task, "ClientDisconnected", now) + default: + continue + } + state.Tasks[taskID] = task + } +} + func validCapabilities(capabilities []string) bool { for _, capability := range capabilities { if !validIdentifier(capability, 80) { @@ -1373,6 +1457,10 @@ func nodeHasAccount(node Node, accountID string) bool { return false } +func nodeAvailable(node Node, now time.Time, heartbeatTimeout time.Duration) bool { + return node.Status != NodeOffline && node.LastHeartbeatAt != nil && now.Sub(*node.LastHeartbeatAt) <= heartbeatTimeout +} + func validSendTextPayload(payload jsonRaw) bool { if len(payload) == 0 || len(payload) > 64*1024 || !json.Valid(payload) { return false diff --git a/control-plane/web/dist/assets/index-BkrtfWai.css b/control-plane/web/dist/assets/index-BkrtfWai.css new file mode 100644 index 0000000..83a071c --- /dev/null +++ b/control-plane/web/dist/assets/index-BkrtfWai.css @@ -0,0 +1 @@ +:root{font-family:Inter,Noto Sans SC,Segoe UI,sans-serif;color:#172033;background:#f6f7fb;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #172033;--muted: #738096;--subtle: #9aa5b6;--line: #e5e9f0;--line-strong: #d6dce6;--panel: #ffffff;--surface: #f6f7fb;--blue: #315ee8;--blue-soft: #edf2ff;--green: #168568;--green-soft: #e9f8f2;--amber: #a8681b;--amber-soft: #fff5e5;--red: #be4e5c;--red-soft: #fff0f2;--navy: #202b43;--shadow: 0 12px 30px rgba(25, 39, 68, .08)}*{box-sizing:border-box}::selection{color:#fff;background:var(--blue)}html{min-width:320px;background:var(--surface)}body{min-width:320px;min-height:100vh;margin:0;background:var(--surface)}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.52}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid rgba(49,94,232,.22);outline-offset:2px}svg{display:block;flex:0 0 auto}.login-page{display:grid;place-items:center;min-height:100vh;padding:24px;background:#f6f7fb}.login-panel{width:min(430px,100%);padding:42px;border:1px solid var(--line);border-radius:18px;background:var(--panel);box-shadow:var(--shadow)}.brand-mark{display:grid;place-items:center;width:46px;height:46px;border-radius:13px;color:#fff;background:var(--navy);font-size:21px;font-weight:800;letter-spacing:-.04em}.brand-mark.small{width:36px;height:36px;border-radius:10px;font-size:17px}.eyebrow{margin:0;color:var(--subtle);font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.login-panel .eyebrow{margin-top:28px}.login-panel h1{margin:11px 0 8px;font-size:32px;letter-spacing:-.045em}.login-intro{max-width:36ch;margin:0;color:var(--muted);font-size:14px;line-height:1.7}.login-form{display:grid;gap:16px;margin-top:30px}label{display:grid;gap:7px;color:#5b687d;font-size:12px;font-weight:700}input,textarea,select{width:100%;border:1px solid var(--line-strong);border-radius:9px;color:var(--ink);background:#fff;transition:border-color .16s ease,box-shadow .16s ease}input,select{height:42px;padding:0 12px}textarea{padding:11px 12px;resize:vertical}input::placeholder,textarea::placeholder{color:#a3adbc}input:focus,textarea:focus,select:focus{border-color:#7d9af0;box-shadow:0 0 0 3px #315ee81a;outline:0}.form-error,.global-error,.inline-error{display:flex;gap:9px;align-items:center;border:1px solid #f0cbd1;border-radius:9px;color:var(--red);background:var(--red-soft)}.form-error{padding:10px 12px;font-size:12px}.login-footnote{display:flex;gap:9px;align-items:center;margin:24px 0 0;color:var(--subtle);font-size:11px}.secure-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#28a77d;box-shadow:0 0 0 4px #28a77d1f}.app-shell{display:flex;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;z-index:3;display:flex;flex-direction:column;width:248px;padding:26px 16px 17px;border-right:1px solid var(--line);background:#fff}.sidebar-brand{display:flex;gap:11px;align-items:center;padding:0 9px 40px}.sidebar-brand strong,.sidebar-brand span{display:block}.sidebar-brand strong{color:var(--ink);font-size:15px;letter-spacing:-.02em}.sidebar-brand span{margin-top:4px;color:var(--subtle);font-size:10px}.nav-caption{margin:0;padding:0 12px 10px;color:var(--subtle);font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.sidebar nav{display:grid;gap:4px}.nav-item{display:flex;gap:12px;align-items:center;width:100%;min-height:44px;padding:0 12px;border:0;border-radius:9px;color:#77849a;text-align:left;background:transparent;font-size:13px;font-weight:700}.nav-item:hover{color:var(--ink);background:#f4f6fa}.nav-item.active{color:var(--blue);background:var(--blue-soft)}.nav-item.active svg{color:var(--blue)}.nav-item svg{color:#98a4b7}.sidebar-spacer{flex:1}.connection-hint{display:flex;gap:10px;align-items:center;margin:14px 4px 17px;padding:12px 11px;border:1px solid #e6ecf3;border-radius:10px;background:#fbfcfe}.connection-hint strong,.connection-hint small,.user-name strong,.user-name small{display:block}.connection-hint strong{color:#4c5c72;font-size:11px}.connection-hint small{margin-top:4px;color:var(--subtle);font-size:10px}.user-menu{display:flex;gap:9px;align-items:center;padding:14px 7px 0;border-top:1px solid var(--line)}.avatar,.node-avatar,.session-avatar,.contact-avatar,.message-avatar{display:grid;place-items:center;flex:0 0 auto;width:32px;height:32px;border-radius:10px;color:#3157bf;background:#e8efff;font-size:11px;font-weight:800}.user-name{flex:1;min-width:0}.user-name strong{overflow:hidden;color:#415069;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.user-name small{margin-top:3px;color:var(--subtle);font-size:10px}.user-menu button{display:grid;place-items:center;width:30px;height:30px;padding:0;border:0;border-radius:7px;color:#8d99aa;background:transparent}.user-menu button:hover{color:var(--red);background:var(--red-soft)}.main-area{width:calc(100% - 248px);min-width:0;margin-left:248px}.topbar{display:flex;gap:24px;align-items:flex-end;justify-content:space-between;min-height:126px;padding:32px 48px 28px;border-bottom:1px solid var(--line);background:#fff}.topbar-copy h1{margin:0;color:var(--ink);font-size:28px;letter-spacing:-.045em}.topbar-copy p{margin:7px 0 0;color:var(--muted);font-size:12px}.topbar-actions,.heading-actions,.toolbar{display:flex;gap:9px;align-items:center}.client-switcher{display:flex;gap:7px;align-items:center}.client-switcher span{color:var(--subtle);font-size:10px;font-weight:800;white-space:nowrap}.client-switcher select{width:190px;height:37px;color:#46556b;font-size:11px;font-weight:700}.refresh-button,.secondary-button,.primary-button,.danger-button{min-height:37px;padding:0 13px;border-radius:8px;font-size:11px;font-weight:800}.refresh-button,.secondary-button{border:1px solid var(--line-strong);color:#5e6c81;background:#fff}.refresh-button{display:flex;gap:7px;align-items:center;white-space:nowrap}.refresh-button:hover,.secondary-button:hover:not(:disabled){border-color:#9eb4ed;color:var(--blue);background:#fbfcff}.primary-button{border:1px solid var(--blue);color:#fff;background:var(--blue);box-shadow:0 5px 12px #315ee82e}.primary-button:hover:not(:disabled){background:#234bc7}.full{width:100%;height:44px;margin-top:4px;font-size:12px}.text-button{display:inline-flex;gap:5px;align-items:center;padding:0;border:0;color:var(--blue);background:transparent;font-size:11px;font-weight:800}.text-button:hover:not(:disabled){color:#1f45bb}.global-error{margin:17px 48px 0;padding:10px 13px;font-size:12px}.global-error span{flex:1}.global-error button{display:grid;place-items:center;padding:0;border:0;color:inherit;background:transparent}.connection-banner{display:flex;gap:11px;align-items:center;margin:20px 48px 0;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fff}.connection-banner.warning{border-color:#f1dfba;color:var(--amber);background:var(--amber-soft)}.connection-banner.negative{border-color:#f0cbd1;color:var(--red);background:var(--red-soft)}.connection-banner>div{display:grid;gap:3px;flex:1;min-width:0}.connection-banner strong{color:#4a5363;font-size:12px}.connection-banner span{color:#7c8799;font-size:11px}.page-content{max-width:1500px;padding:28px 48px 24px}.footer{display:flex;justify-content:space-between;gap:20px;padding:0 48px 28px;color:#a0aabb;font-size:10px}.status-badge{display:inline-flex;gap:6px;align-items:center;min-height:24px;padding:0 8px;border-radius:999px;font-size:10px;font-weight:800;white-space:nowrap}.status-badge i{width:5px;height:5px;border-radius:50%;background:currentColor}.status-badge.positive{color:var(--green);background:var(--green-soft)}.status-badge.warning{color:var(--amber);background:var(--amber-soft)}.status-badge.negative{color:var(--red);background:var(--red-soft)}.status-badge.neutral{color:#718096;background:#eef1f5}.workspace-panel,.session-panel,.conversation-panel{min-width:0;border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:0 4px 14px #19274406}.workspace-panel{padding:24px}.section-heading{display:flex;gap:18px;align-items:flex-start;justify-content:space-between;margin-bottom:20px}.section-heading.compact{margin-bottom:15px}.section-heading h2,.section-heading h3,.conversation-head h2,.context-empty h3,.gated-panel h2{margin:0;color:var(--ink);letter-spacing:-.03em}.section-heading h2,.conversation-head h2,.gated-panel h2{font-size:18px}.section-heading h3{font-size:15px}.section-heading p,.conversation-head span,.gated-panel p{margin:6px 0 0;color:var(--muted);font-size:11px;line-height:1.6}.icon-button{display:grid;place-items:center;width:31px;height:31px;padding:0;border:1px solid var(--line-strong);border-radius:8px;color:var(--muted);background:#fff}.icon-button:hover:not(:disabled){color:var(--blue);border-color:#9eb4ed}.message-workspace{display:grid;grid-template-columns:minmax(260px,320px) minmax(0,1fr);min-height:590px;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:0 4px 14px #19274406}.session-panel{border:0;border-right:1px solid var(--line);border-radius:12px 0 0 12px;box-shadow:none}.conversation-panel{display:flex;flex-direction:column;border:0;border-radius:0 12px 12px 0;box-shadow:none}.session-panel,.conversation-panel{padding:21px}.search-box{display:flex;gap:8px;align-items:center;height:36px;padding:0 10px;border:1px solid var(--line);border-radius:8px;color:#96a2b3;background:#fbfcfe}.search-box:focus-within{border-color:#9eb4ed;box-shadow:0 0 0 3px #315ee814}.search-box input{height:100%;padding:0;border:0;background:transparent;box-shadow:none;font-size:11px}.search-box input:focus{outline:0}.search-box.wide{flex:1;min-width:200px}.session-list,.contact-list,.diagnostic-list,.task-list{display:grid}.session-list{margin:12px -21px 0}.session-row{display:flex;gap:10px;align-items:center;width:100%;min-width:0;padding:12px 21px;border:0;border-top:1px solid #f0f2f6;color:inherit;text-align:left;background:transparent}.session-row:hover,.session-row.selected{background:#f7f9ff}.session-row.selected{box-shadow:inset 3px 0 var(--blue)}.session-row b{display:grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:999px;color:#fff;background:var(--blue);font-size:10px}.session-copy{flex:1;min-width:0}.session-copy strong,.session-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-copy strong{color:#334259;font-size:12px}.session-copy small{margin-top:4px;color:var(--subtle);font-size:10px}.conversation-head{display:flex;gap:18px;align-items:flex-start;justify-content:space-between;padding-bottom:19px;border-bottom:1px solid var(--line)}.conversation-head h2{margin-top:6px}.message-list{display:grid;gap:18px;flex:1;align-content:start;min-height:300px;max-height:430px;padding:22px 4px;overflow:auto}.message-row{display:flex;gap:10px;align-items:flex-start}.message-row>div:last-child{min-width:0}.message-avatar{width:28px;height:28px;border-radius:8px;color:#61718b;background:#eef1f6}.message-meta{display:flex;gap:10px;align-items:baseline}.message-meta strong{color:#405069;font-size:11px}.message-meta span{color:var(--subtle);font-size:10px}.message-row p{max-width:65ch;margin:5px 0 0;color:#59677b;font-size:12px;line-height:1.7;white-space:pre-wrap;word-break:break-word}.composer{display:flex;gap:9px;align-items:flex-end;padding-top:15px;border-top:1px solid var(--line)}.composer textarea{flex:1;min-height:54px;color:var(--muted);background:#f8f9fb;resize:none}.composer .primary-button{min-width:66px}.gated-panel{display:grid;grid-template-columns:54px minmax(0,600px);gap:18px;align-items:flex-start;min-height:300px;padding:38px}.gated-mark{display:grid;place-items:center;width:54px;height:54px;border-radius:14px;color:var(--amber);background:var(--amber-soft)}.gated-panel h2{margin-top:4px}.gated-panel p{max-width:62ch;margin-top:12px;font-size:13px}.gated-panel .primary-button{margin-top:25px}.gated-panel .text-button{margin-left:13px}.step-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}.step-list span{display:inline-flex;gap:7px;align-items:center;padding:7px 10px;border:1px solid var(--line);border-radius:7px;color:#68768a;background:#fbfcfe;font-size:11px;font-weight:700}.step-list b{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;color:var(--blue);background:var(--blue-soft);font-size:10px}.toolbar{margin:-3px 0 19px}.check-filter{display:flex;grid-template-columns:none;gap:7px;align-items:center;color:#68768a;font-size:11px;white-space:nowrap}.check-filter input,.checkbox-label input{width:15px;height:15px;margin:0;accent-color:var(--blue)}.contact-list{margin:0 -24px}.contact-row,.diagnostic-row,.task-row{display:flex;gap:12px;align-items:center;min-width:0;padding:14px 24px;border-top:1px solid #eff2f6}.contact-row>div,.diagnostic-row>div,.task-main{flex:1;min-width:0}.contact-row strong,.contact-row small,.diagnostic-row strong,.diagnostic-row small,.task-main p,.task-main small{display:block}.contact-row strong,.diagnostic-row strong{color:#3a4960;font-size:12px}.contact-row small,.diagnostic-row small,.task-main p,.task-main small{margin-top:4px;color:var(--subtle);font-size:10px}.contact-row .text-button{flex:0 0 auto}.task-list{margin:0 -24px}.task-row{align-items:flex-start}.task-title{display:flex;gap:9px;align-items:center}.task-title strong{color:#3a4960;font-size:12px}.task-main p{margin-bottom:0}.task-main small{max-width:70ch;line-height:1.55}.task-meta{display:grid;gap:5px;flex:0 0 auto;color:var(--subtle);font-size:10px;text-align:right}.task-meta time{white-space:nowrap}.read-only-note{display:inline-flex;gap:5px;align-items:center;color:var(--green);font-size:10px;font-weight:800}.workspace-panel select{width:auto;height:34px;color:#68768a;font-size:11px}.settings-layout{display:grid;grid-template-columns:205px minmax(0,1fr);gap:17px;align-items:start}.settings-nav{display:grid;gap:5px}.settings-tab{display:grid;gap:5px;padding:13px 14px;border:1px solid transparent;border-radius:9px;color:#6f7d91;text-align:left;background:transparent}.settings-tab strong{color:inherit;font-size:12px}.settings-tab span{color:#9ca7b7;font-size:10px}.settings-tab:hover,.settings-tab.active{border-color:#dce5fb;color:var(--blue);background:var(--blue-soft)}.settings-content{display:grid;gap:17px;min-width:0}.boundary-list{display:grid;gap:12px;margin:0;padding:0;list-style:none}.boundary-list li{display:flex;gap:8px;align-items:flex-start;color:#627087;font-size:12px;line-height:1.55}.boundary-list li svg{margin-top:2px;color:var(--green)}.client-pills{display:grid;gap:8px}.client-pill{display:flex;gap:12px;align-items:center;justify-content:space-between;padding:11px 12px;border:1px solid var(--line);border-radius:8px;color:#5e6b80;text-align:left;background:#fff}.client-pill:hover,.client-pill.active{border-color:#a8bbed;background:#f8faff}.client-pill>span{overflow:hidden;font-size:11px;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.empty-state,.context-empty,.loading-state{display:grid;justify-items:center;min-height:160px;padding:35px 15px;color:var(--subtle);text-align:center}.empty-state{align-content:center}.empty-state p,.context-empty p{max-width:38ch;margin:11px 0 0;color:var(--muted);font-size:12px;line-height:1.65}.context-empty{align-content:center;flex:1;min-height:350px}.context-empty h3{margin-top:13px;font-size:16px}.context-empty .secondary-button{margin-top:17px}.empty-icon{color:#a2aec0}.loading-state{display:flex;gap:9px;align-items:center;justify-content:center;min-height:130px;font-size:12px}.loader{width:15px;height:15px;border:2px solid #d9e2f8;border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}.inline-error{justify-content:center;min-height:120px;padding:14px;font-size:12px}.inline-error .text-button{margin-left:4px}.event-preview{max-width:34ch;overflow:hidden;color:#68768a;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.spin{display:inline-flex;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 1080px){.topbar,.page-content{padding-right:30px;padding-left:30px}.global-error,.connection-banner{margin-right:30px;margin-left:30px}.footer{padding-right:30px;padding-left:30px}.topbar-actions{flex-wrap:wrap;justify-content:flex-end}.message-workspace{grid-template-columns:minmax(230px,285px) minmax(0,1fr)}}@media (max-width: 780px){.sidebar{position:static;width:100%;padding:15px;border-right:0;border-bottom:1px solid var(--line)}.sidebar-brand{padding-bottom:18px}.sidebar-spacer,.connection-hint{display:none}.sidebar>.nav-item{margin-top:9px}.sidebar nav{grid-template-columns:repeat(4,1fr)}.nav-item{justify-content:center;min-height:38px;padding:0 6px;font-size:11px}.nav-item.active{box-shadow:inset 0 -2px var(--blue)}.nav-item svg{display:none}.app-shell{display:block}.main-area{width:100%;margin-left:0}.topbar{display:block;min-height:auto;padding:23px 18px}.topbar-copy h1{font-size:24px}.topbar-actions{justify-content:flex-start;margin-top:17px}.client-switcher{flex:1}.client-switcher select{flex:1;width:auto}.page-content{padding:20px 18px}.global-error,.connection-banner{margin-right:18px;margin-left:18px}.connection-banner{align-items:flex-start;flex-wrap:wrap}.connection-banner .text-button{margin-left:29px}.message-workspace{display:block;min-height:0}.session-panel{border-right:0;border-bottom:1px solid var(--line);border-radius:12px 12px 0 0}.conversation-panel{min-height:460px;border-radius:0 0 12px 12px}.session-list{max-height:280px;overflow:auto}.session-row{padding-right:21px;padding-left:21px}.workspace-panel,.session-panel,.conversation-panel{padding:17px}.session-list,.contact-list,.diagnostic-list,.task-list{margin-right:-17px;margin-left:-17px}.contact-row,.diagnostic-row,.task-row{padding-right:17px;padding-left:17px}.section-heading{display:block}.section-heading>.heading-actions,.section-heading>.status-badge{margin-top:13px}.heading-actions,.toolbar{align-items:stretch;flex-wrap:wrap}.toolbar .secondary-button{flex:0 0 auto}.gated-panel{display:block;padding:25px}.gated-mark{margin-bottom:19px}.gated-panel .text-button{margin:18px 0 0}.settings-layout{display:block}.settings-nav{grid-template-columns:repeat(2,1fr);margin-bottom:17px}.settings-tab{padding:11px}.task-meta{display:none}.footer{display:block;padding:0 18px 20px;line-height:1.8}.footer span{display:block}}@media (max-width: 470px){.login-panel{padding:28px 22px}.topbar-actions{display:grid;grid-template-columns:1fr auto}.client-switcher{grid-column:1 / -1}.client-switcher select{min-width:0}.status-badge{justify-self:start}.refresh-button{justify-self:end}.composer{display:block}.composer .primary-button{width:100%;margin-top:8px}.step-list{display:grid}} diff --git a/control-plane/web/dist/assets/index-Ub8kdaer.css b/control-plane/web/dist/assets/index-Ub8kdaer.css deleted file mode 100644 index 7e905fd..0000000 --- a/control-plane/web/dist/assets/index-Ub8kdaer.css +++ /dev/null @@ -1 +0,0 @@ -:root{font-family:Manrope,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#182334;background:#f3f6fa;font-synthesis:none;text-rendering:optimizeLegibility;--navy: #0e1a2d;--ink: #182334;--muted: #7c899b;--line: #e7ecf2;--panel: #ffffff;--blue: #2e6df6;--green: #20a477;--orange: #e09235;--red: #d85c65;--purple: #8967e8}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:#f3f6fa}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 10%,#dce8ff 0,transparent 34%),linear-gradient(135deg,#f3f6fa,#eef2f7)}.login-panel{width:min(440px,100%);padding:42px;border:1px solid rgba(255,255,255,.7);border-radius:22px;background:#ffffffdb;box-shadow:0 26px 80px #192c4e24;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.brand-mark{display:grid;place-items:center;width:46px;height:46px;border-radius:13px;color:#fff;background:linear-gradient(140deg,#3c7cff,#6041d8);font-size:21px;font-weight:800;box-shadow:0 9px 18px #3d67ec47}.brand-mark.small{width:36px;height:36px;border-radius:10px;font-size:17px;box-shadow:none}.eyebrow{color:#8a96a7;font:500 10px/1.4 DM Mono,monospace;letter-spacing:.14em}.login-panel h1{margin:19px 0 9px;font-size:32px;letter-spacing:-.04em}.muted{margin:0;color:var(--muted);font-size:14px;line-height:1.7}.login-form{display:grid;gap:16px;margin-top:30px}label{display:grid;gap:7px;color:#647287;font-size:12px;font-weight:700}input,textarea,select{width:100%;border:1px solid #dce3eb;border-radius:9px;outline:none;color:var(--ink);background:#fff;transition:border-color .15s,box-shadow .15s}input,select{height:42px;padding:0 12px}textarea{padding:11px 12px;resize:vertical}input:focus,textarea:focus,select:focus{border-color:#7da2ff;box-shadow:0 0 0 3px #2e6df61a}.form-error,.global-error{color:#a73b49;border:1px solid #f1cbd0;border-radius:8px;background:#fff4f5}.form-error{padding:10px 12px;font-size:12px}.login-footnote{display:flex;gap:8px;align-items:center;margin-top:24px;color:#9aa5b4;font-size:11px}.secure-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#31b887;box-shadow:0 0 0 4px #31b8871f}.app-shell{display:flex;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;z-index:2;display:flex;flex-direction:column;width:240px;padding:24px 16px 16px;color:#c2ccda;background:var(--navy)}.sidebar-brand{display:flex;align-items:center;gap:11px;padding:0 10px 38px;color:#fff}.sidebar-brand strong{display:block;font-size:15px;letter-spacing:-.02em}.sidebar-brand span{display:block;margin-top:2px;color:#71819b;font:10px DM Mono,monospace}.nav-caption{padding:0 12px 10px;color:#667690;font:500 10px DM Mono,monospace;letter-spacing:.14em;text-transform:uppercase}nav{display:grid;gap:4px}.nav-item{display:flex;gap:12px;align-items:center;height:44px;padding:0 12px;border:0;border-radius:9px;color:#8e9bb0;text-align:left;background:transparent;font-size:13px;font-weight:600}.nav-item:hover{color:#fff;background:#ffffff0f}.nav-item.active{color:#fff;background:#273b60;box-shadow:inset 3px 0 #608cff}.nav-icon{width:17px;color:#6885b9;font-size:17px;text-align:center}.nav-item.active .nav-icon{color:#94b1ff}.sidebar-spacer{flex:1}.connection-hint{display:flex;gap:11px;align-items:center;margin:12px 4px 16px;padding:13px 11px;border:1px solid rgba(125,154,204,.16);border-radius:10px;background:#ffffff09}.connection-hint strong,.connection-hint small,.user-name strong,.user-name small{display:block}.connection-hint strong{color:#d2dbeb;font-size:11px}.connection-hint small{margin-top:4px;color:#70809a;font-size:10px}.user-menu{display:flex;gap:9px;align-items:center;padding:14px 7px 0;border-top:1px solid rgba(255,255,255,.08)}.avatar,.node-avatar{display:grid;place-items:center;flex:0 0 auto;width:30px;height:30px;border-radius:9px;color:#315ac3;background:#dfe9ff;font-size:11px;font-weight:800}.user-name{flex:1;min-width:0}.user-name strong{overflow:hidden;color:#e0e7f3;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.user-name small{margin-top:3px;color:#70809a;font-size:10px}.user-menu button{border:0;color:#71809a;background:transparent;font-size:19px}.main-area{width:calc(100% - 240px);min-width:0;margin-left:240px}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:43px 52px 32px;background:#fff;border-bottom:1px solid var(--line)}.topbar h2{margin:8px 0 5px;color:var(--ink);font-size:26px;letter-spacing:-.04em}.topbar p{margin:0;color:#8a96a7;font-size:12px}.refresh-button{display:flex;gap:8px;align-items:center;height:37px;padding:0 14px;border:1px solid #dce3ec;border-radius:8px;color:#506078;background:#fff;font-size:12px;font-weight:700}.refresh-button:hover{border-color:#a9bfe9;color:#2e6df6;background:#f8faff}.refresh-button span{font-size:18px;line-height:1}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.page-content{max-width:1500px;padding:33px 52px 24px}.global-error{display:flex;gap:9px;align-items:center;margin:18px 52px 0;padding:11px 14px;font-size:12px}.global-error span{display:grid;place-items:center;width:17px;height:17px;border-radius:50%;color:#fff;background:#cf5b66;font-weight:800}.global-error button{margin-left:auto;border:0;color:inherit;background:transparent;font-size:18px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.metric-card{position:relative;overflow:hidden;min-height:135px;padding:20px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.metric-card:after{position:absolute;right:-25px;bottom:-38px;width:110px;height:110px;border-radius:50%;content:"";opacity:.1}.metric-card.blue:after{background:#2e6df6}.metric-card.purple:after{background:#8967e8}.metric-card.green:after{background:#20a477}.metric-card.orange:after{background:#e09235}.metric-card.slate:after{background:#7c899b}.metric-label{color:#8b97a7;font-size:12px;font-weight:700}.metric-value{margin-top:16px;color:var(--ink);font-size:29px;font-weight:800;letter-spacing:-.05em}.metric-detail{margin-top:9px;color:#9aa5b4;font-size:11px}.content-grid{display:grid;gap:16px;margin-top:16px}.two-col{grid-template-columns:repeat(2,1fr)}.panel{min-width:0;padding:22px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}.full-panel{padding:24px}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:19px}.panel-heading h3{margin:0;color:var(--ink);font-size:15px;letter-spacing:-.02em}.panel-heading p{margin:6px 0 0;color:#9aa5b4;font-size:11px}.heading-actions{display:flex;gap:8px;align-items:center}.heading-actions select{width:auto;height:36px;color:#667489;font-size:11px}.table-count{color:#8f9aac;font-size:11px}.text-button{padding:0;border:0;color:#4b76e7;background:transparent;font-size:11px;font-weight:700}.text-button:hover{color:#1e4bc5}.compact-list{display:grid}.compact-row{display:flex;gap:11px;align-items:center;min-width:0;padding:12px 0;border-top:1px solid #eff2f5}.compact-row:first-child{border-top:0}.row-main{flex:1;min-width:0}.row-main strong,.row-main span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row-main strong{color:#334156;font-size:12px}.row-main span{margin-top:4px;color:#9aa5b4;font-size:10px}.event-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;color:#269b79;background:#e5f7f0}.event-preview{max-width:34%;overflow:hidden;color:#788598;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.status-badge{display:inline-flex;gap:6px;align-items:center;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:700;white-space:nowrap}.status-badge i{width:5px;height:5px;border-radius:50%;background:currentColor}.status-badge.positive{color:#168a68;background:#e7f8f2}.status-badge.warning{color:#b26e1c;background:#fff4e3}.status-badge.negative{color:#c24d5d;background:#fff0f1}.status-badge.neutral{color:#6f7d90;background:#edf1f5}.table-wrap{overflow-x:auto}.table-wrap table{width:100%;border-collapse:collapse;min-width:760px}.table-wrap th{padding:0 11px 12px;color:#99a4b2;font:500 10px DM Mono,monospace;text-align:left;text-transform:uppercase;white-space:nowrap}.table-wrap td{padding:14px 11px;border-top:1px solid #eef1f4;color:#617086;font-size:11px;vertical-align:middle}.table-wrap tr:hover td{background:#fafcff}.cell-primary{display:flex;gap:9px;align-items:center;min-width:150px}.cell-primary strong,.cell-primary small,.cell-note{display:block}.cell-primary strong{color:#344156;font-size:11px}.cell-primary small{margin-top:4px;color:#a1aab7;font-size:10px}.cell-note{margin-top:5px;color:#a1aab7;font-size:10px}.inline-positive{color:#218e70;font-weight:700}.inline-muted{color:#929ead}.capability-count{color:#4b76e7;font-weight:800}.task-symbol{display:grid;place-items:center;width:29px;height:29px;border-radius:8px;color:#7454d6;background:#eeeaff;font-size:16px}.danger-button{padding:5px 9px;border:1px solid #f2c8ce;border-radius:6px;color:#c24d5d;background:#fff8f8;font-size:10px;font-weight:700}.danger-button:hover{color:#fff;background:#d85c65}.error-code{color:#be5360;font-family:DM Mono,monospace;font-size:10px}.cancel-note{color:#b87723}.seq-pill{padding:4px 7px;border-radius:5px;color:#5574b6;background:#edf2ff;font:10px DM Mono,monospace}.event-content{display:block;max-width:270px;overflow:hidden;color:#425168;text-overflow:ellipsis;white-space:nowrap}.search-input{width:240px;height:35px;font-size:11px}.task-id{min-width:175px}.primary-button,.secondary-button{height:37px;padding:0 14px;border-radius:8px;font-size:11px;font-weight:800}.primary-button{border:1px solid #2e6df6;color:#fff;background:#2e6df6;box-shadow:0 5px 12px #2e6df62e}.primary-button:hover{background:#205bdc}.secondary-button{border:1px solid #dce3eb;color:#647287;background:#fff}.full{width:100%;height:44px;margin-top:4px;font-size:12px}.empty-state{display:grid;justify-items:center;padding:47px 15px;color:#a0aab8;text-align:center}.empty-icon{color:#c2ccd9;font-size:30px}.empty-state p{margin:12px 0 0;font-size:12px}.timeline{display:grid}.timeline-row{display:flex;gap:13px;align-items:center;min-height:64px;border-bottom:1px solid #eef1f4}.timeline-dot{width:8px;height:8px;border:2px solid #7294ef;border-radius:50%;background:#fff}.timeline-main{flex:1}.timeline-main strong,.timeline-main span{display:block}.timeline-main strong{color:#44526a;font-size:11px}.timeline-main span{margin-top:5px;color:#a0a9b6;font-size:10px}.timeline-meta{display:flex;gap:13px;align-items:center;color:#9aa5b4;font-size:10px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;display:grid;place-items:center;padding:20px;background:#0e1a2d7a}.modal{width:min(540px,100%);padding:25px;border-radius:14px;background:#fff;box-shadow:0 25px 70px #06122847}.modal-heading{display:flex;justify-content:space-between;gap:16px;margin-bottom:21px}.modal-heading h3{margin:8px 0 5px;font-size:19px}.modal-heading p{margin:0;color:#96a0af;font-size:11px}.close-button{align-self:flex-start;border:0;color:#99a3b0;background:transparent;font-size:24px}.task-form{display:grid;gap:14px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:5px}.footer{display:flex;justify-content:space-between;gap:20px;padding:0 52px 30px;color:#a7b0bc;font:10px DM Mono,monospace}.provider-ok,.provider-off,.flow-state,.trigger-pill{display:inline-flex;align-items:center;border-radius:999px;font-size:10px;font-weight:700;white-space:nowrap}.provider-ok,.flow-state.enabled{color:#168a68;background:#e7f8f2}.provider-off,.flow-state.disabled{color:#9b6b27;background:#fff4e3}.provider-ok,.provider-off{min-height:30px;padding:0 10px}.ai-symbol{display:grid;place-items:center;width:29px;height:29px;border-radius:8px;color:#7454d6;background:#eeeaff;font-size:16px}.trigger-pill,.flow-state{padding:5px 8px}.trigger-pill{color:#5574b6;background:#edf2ff}.tool-list{color:#68778d;font-size:10px}.row-actions{display:flex;gap:9px;align-items:center;justify-content:flex-end}.compact-button{height:30px;padding:0 9px;font-size:10px}.ai-table{min-width:980px}.ai-runs-panel{margin-top:16px}.ai-run-list{display:grid;gap:10px}.ai-run-card{padding:15px;border:1px solid #edf0f4;border-radius:10px;background:#fbfcfe}.ai-run-head{display:flex;gap:15px;align-items:center;justify-content:space-between}.ai-run-head strong,.ai-run-head span{display:block}.ai-run-head strong{color:#344156;font-size:12px}.ai-run-head span{margin-top:5px;color:#9aa5b4;font-size:10px}.ai-run-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;margin-top:14px}.ai-run-content>div{min-width:0;padding:11px;border-radius:8px;background:#fff}.ai-run-content small{color:#9aa5b4;font-size:10px;font-weight:700}.ai-run-content p{margin:8px 0 0;color:#55647a;font-size:11px;line-height:1.6}.ai-run-content pre{max-height:170px;margin:8px 0 0;overflow:auto;color:#52617a;font:10px/1.55 DM Mono,monospace;white-space:pre-wrap;word-break:break-word}.ai-tool-trace{margin-top:10px;color:#8068c7;font-size:10px}.ai-modal{width:min(700px,100%);max-height:calc(100vh - 40px);overflow:auto}.form-grid{display:grid;gap:14px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.json-editor{min-height:180px;color:#52617a;background:#fbfcfe;font:11px/1.55 DM Mono,monospace}.checkbox-label{display:flex;grid-template-columns:none;gap:8px;align-items:center;color:#55647a;font-size:11px}.checkbox-label input{width:15px;height:15px;margin:0}@media (max-width: 1100px){.metric-grid{grid-template-columns:repeat(2,1fr)}.two-col{grid-template-columns:1fr}.topbar,.page-content{padding-left:30px;padding-right:30px}.global-error{margin-left:30px;margin-right:30px}.footer{padding-left:30px;padding-right:30px}}@media (max-width: 720px){.sidebar{position:static;width:100%;min-height:auto;padding:15px}.sidebar-brand{padding-bottom:18px}.sidebar-spacer,.connection-hint{display:none}nav{grid-template-columns:repeat(6,1fr)}.nav-item{justify-content:center;height:36px;padding:0 4px;font-size:0}.nav-icon{font-size:17px}.user-menu{margin-top:13px}.app-shell{display:block}.main-area{width:100%;margin-left:0}.topbar{padding:24px 18px}.topbar h2{font-size:22px}.page-content{padding:20px 18px}.global-error{margin:15px 18px 0}.metric-grid{gap:9px}.metric-card{min-height:116px;padding:14px}.metric-value{margin-top:12px;font-size:23px}.ai-run-content,.form-grid.two{grid-template-columns:1fr}.panel,.full-panel{padding:16px}.panel-heading{display:block}.heading-actions{margin-top:13px}.heading-actions select{flex:1}.search-input{width:100%;margin-top:14px}.footer{display:block;padding:0 18px 20px;line-height:1.8}.footer span{display:block}} diff --git a/control-plane/web/dist/assets/index-Y-WkDYNQ.js b/control-plane/web/dist/assets/index-Y-WkDYNQ.js deleted file mode 100644 index 730f0c3..0000000 --- a/control-plane/web/dist/assets/index-Y-WkDYNQ.js +++ /dev/null @@ -1,10547 +0,0 @@ -(function () { - const t = document.createElement("link").relList; - if (t && t.supports && t.supports("modulepreload")) return; - for (const l of document.querySelectorAll('link[rel="modulepreload"]')) r(l); - new MutationObserver((l) => { - for (const i of l) - if (i.type === "childList") - for (const u of i.addedNodes) - u.tagName === "LINK" && u.rel === "modulepreload" && r(u); - }).observe(document, { childList: !0, subtree: !0 }); - function n(l) { - const i = {}; - return ( - l.integrity && (i.integrity = l.integrity), - l.referrerPolicy && (i.referrerPolicy = l.referrerPolicy), - l.crossOrigin === "use-credentials" - ? (i.credentials = "include") - : l.crossOrigin === "anonymous" - ? (i.credentials = "omit") - : (i.credentials = "same-origin"), - i - ); - } - function r(l) { - if (l.ep) return; - l.ep = !0; - const i = n(l); - fetch(l.href, i); - } -})(); -var Zo = { exports: {} }, - cl = {}, - Jo = { exports: {} }, - R = {}; /** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -var nr = Symbol.for("react.element"), - cc = Symbol.for("react.portal"), - dc = Symbol.for("react.fragment"), - fc = Symbol.for("react.strict_mode"), - pc = Symbol.for("react.profiler"), - hc = Symbol.for("react.provider"), - mc = Symbol.for("react.context"), - vc = Symbol.for("react.forward_ref"), - gc = Symbol.for("react.suspense"), - yc = Symbol.for("react.memo"), - xc = Symbol.for("react.lazy"), - Au = Symbol.iterator; -function wc(e) { - return e === null || typeof e != "object" - ? null - : ((e = (Au && e[Au]) || e["@@iterator"]), typeof e == "function" ? e : null); -} -var qo = { - isMounted: function () { - return !1; - }, - enqueueForceUpdate: function () {}, - enqueueReplaceState: function () {}, - enqueueSetState: function () {}, - }, - bo = Object.assign, - es = {}; -function mn(e, t, n) { - (this.props = e), - (this.context = t), - (this.refs = es), - (this.updater = n || qo); -} -mn.prototype.isReactComponent = {}; -mn.prototype.setState = function (e, t) { - if (typeof e != "object" && typeof e != "function" && e != null) - throw Error( - "setState(...): takes an object of state variables to update or a function which returns an object of state variables.", - ); - this.updater.enqueueSetState(this, e, t, "setState"); -}; -mn.prototype.forceUpdate = function (e) { - this.updater.enqueueForceUpdate(this, e, "forceUpdate"); -}; -function ts() {} -ts.prototype = mn.prototype; -function Qi(e, t, n) { - (this.props = e), - (this.context = t), - (this.refs = es), - (this.updater = n || qo); -} -var Ki = (Qi.prototype = new ts()); -Ki.constructor = Qi; -bo(Ki, mn.prototype); -Ki.isPureReactComponent = !0; -var $u = Array.isArray, - ns = Object.prototype.hasOwnProperty, - Yi = { current: null }, - rs = { key: !0, ref: !0, __self: !0, __source: !0 }; -function ls(e, t, n) { - var r, - l = {}, - i = null, - u = null; - if (t != null) - for (r in (t.ref !== void 0 && (u = t.ref), - t.key !== void 0 && (i = "" + t.key), - t)) - ns.call(t, r) && !rs.hasOwnProperty(r) && (l[r] = t[r]); - var s = arguments.length - 2; - if (s === 1) l.children = n; - else if (1 < s) { - for (var a = Array(s), f = 0; f < s; f++) a[f] = arguments[f + 2]; - l.children = a; - } - if (e && e.defaultProps) - for (r in ((s = e.defaultProps), s)) l[r] === void 0 && (l[r] = s[r]); - return { $$typeof: nr, type: e, key: i, ref: u, props: l, _owner: Yi.current }; -} -function Sc(e, t) { - return { - $$typeof: nr, - type: e.type, - key: t, - ref: e.ref, - props: e.props, - _owner: e._owner, - }; -} -function Xi(e) { - return typeof e == "object" && e !== null && e.$$typeof === nr; -} -function kc(e) { - var t = { "=": "=0", ":": "=2" }; - return ( - "$" + - e.replace(/[=:]/g, function (n) { - return t[n]; - }) - ); -} -var Vu = /\/+/g; -function Cl(e, t) { - return typeof e == "object" && e !== null && e.key != null - ? kc("" + e.key) - : t.toString(36); -} -function Pr(e, t, n, r, l) { - var i = typeof e; - (i === "undefined" || i === "boolean") && (e = null); - var u = !1; - if (e === null) u = !0; - else - switch (i) { - case "string": - case "number": - u = !0; - break; - case "object": - switch (e.$$typeof) { - case nr: - case cc: - u = !0; - } - } - if (u) - return ( - (u = e), - (l = l(u)), - (e = r === "" ? "." + Cl(u, 0) : r), - $u(l) - ? ((n = ""), - e != null && (n = e.replace(Vu, "$&/") + "/"), - Pr(l, t, n, "", function (f) { - return f; - })) - : l != null && - (Xi(l) && - (l = Sc( - l, - n + - (!l.key || (u && u.key === l.key) - ? "" - : ("" + l.key).replace(Vu, "$&/") + "/") + - e, - )), - t.push(l)), - 1 - ); - if (((u = 0), (r = r === "" ? "." : r + ":"), $u(e))) - for (var s = 0; s < e.length; s++) { - i = e[s]; - var a = r + Cl(i, s); - u += Pr(i, t, n, a, l); - } - else if (((a = wc(e)), typeof a == "function")) - for (e = a.call(e), s = 0; !(i = e.next()).done; ) - (i = i.value), (a = r + Cl(i, s++)), (u += Pr(i, t, n, a, l)); - else if (i === "object") - throw ( - ((t = String(e)), - Error( - "Objects are not valid as a React child (found: " + - (t === "[object Object]" - ? "object with keys {" + Object.keys(e).join(", ") + "}" - : t) + - "). If you meant to render a collection of children, use an array instead.", - )) - ); - return u; -} -function cr(e, t, n) { - if (e == null) return e; - var r = [], - l = 0; - return ( - Pr(e, r, "", "", function (i) { - return t.call(n, i, l++); - }), - r - ); -} -function jc(e) { - if (e._status === -1) { - var t = e._result; - (t = t()), - t.then( - function (n) { - (e._status === 0 || e._status === -1) && - ((e._status = 1), (e._result = n)); - }, - function (n) { - (e._status === 0 || e._status === -1) && - ((e._status = 2), (e._result = n)); - }, - ), - e._status === -1 && ((e._status = 0), (e._result = t)); - } - if (e._status === 1) return e._result.default; - throw e._result; -} -var de = { current: null }, - Tr = { transition: null }, - _c = { - ReactCurrentDispatcher: de, - ReactCurrentBatchConfig: Tr, - ReactCurrentOwner: Yi, - }; -function is() { - throw Error("act(...) is not supported in production builds of React."); -} -R.Children = { - map: cr, - forEach: function (e, t, n) { - cr( - e, - function () { - t.apply(this, arguments); - }, - n, - ); - }, - count: function (e) { - var t = 0; - return ( - cr(e, function () { - t++; - }), - t - ); - }, - toArray: function (e) { - return ( - cr(e, function (t) { - return t; - }) || [] - ); - }, - only: function (e) { - if (!Xi(e)) - throw Error( - "React.Children.only expected to receive a single React element child.", - ); - return e; - }, -}; -R.Component = mn; -R.Fragment = dc; -R.Profiler = pc; -R.PureComponent = Qi; -R.StrictMode = fc; -R.Suspense = gc; -R.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = _c; -R.act = is; -R.cloneElement = function (e, t, n) { - if (e == null) - throw Error( - "React.cloneElement(...): The argument must be a React element, but you passed " + - e + - ".", - ); - var r = bo({}, e.props), - l = e.key, - i = e.ref, - u = e._owner; - if (t != null) { - if ( - (t.ref !== void 0 && ((i = t.ref), (u = Yi.current)), - t.key !== void 0 && (l = "" + t.key), - e.type && e.type.defaultProps) - ) - var s = e.type.defaultProps; - for (a in t) - ns.call(t, a) && - !rs.hasOwnProperty(a) && - (r[a] = t[a] === void 0 && s !== void 0 ? s[a] : t[a]); - } - var a = arguments.length - 2; - if (a === 1) r.children = n; - else if (1 < a) { - s = Array(a); - for (var f = 0; f < a; f++) s[f] = arguments[f + 2]; - r.children = s; - } - return { $$typeof: nr, type: e.type, key: l, ref: i, props: r, _owner: u }; -}; -R.createContext = function (e) { - return ( - (e = { - $$typeof: mc, - _currentValue: e, - _currentValue2: e, - _threadCount: 0, - Provider: null, - Consumer: null, - _defaultValue: null, - _globalName: null, - }), - (e.Provider = { $$typeof: hc, _context: e }), - (e.Consumer = e) - ); -}; -R.createElement = ls; -R.createFactory = function (e) { - var t = ls.bind(null, e); - return (t.type = e), t; -}; -R.createRef = function () { - return { current: null }; -}; -R.forwardRef = function (e) { - return { $$typeof: vc, render: e }; -}; -R.isValidElement = Xi; -R.lazy = function (e) { - return { $$typeof: xc, _payload: { _status: -1, _result: e }, _init: jc }; -}; -R.memo = function (e, t) { - return { $$typeof: yc, type: e, compare: t === void 0 ? null : t }; -}; -R.startTransition = function (e) { - var t = Tr.transition; - Tr.transition = {}; - try { - e(); - } finally { - Tr.transition = t; - } -}; -R.unstable_act = is; -R.useCallback = function (e, t) { - return de.current.useCallback(e, t); -}; -R.useContext = function (e) { - return de.current.useContext(e); -}; -R.useDebugValue = function () {}; -R.useDeferredValue = function (e) { - return de.current.useDeferredValue(e); -}; -R.useEffect = function (e, t) { - return de.current.useEffect(e, t); -}; -R.useId = function () { - return de.current.useId(); -}; -R.useImperativeHandle = function (e, t, n) { - return de.current.useImperativeHandle(e, t, n); -}; -R.useInsertionEffect = function (e, t) { - return de.current.useInsertionEffect(e, t); -}; -R.useLayoutEffect = function (e, t) { - return de.current.useLayoutEffect(e, t); -}; -R.useMemo = function (e, t) { - return de.current.useMemo(e, t); -}; -R.useReducer = function (e, t, n) { - return de.current.useReducer(e, t, n); -}; -R.useRef = function (e) { - return de.current.useRef(e); -}; -R.useState = function (e) { - return de.current.useState(e); -}; -R.useSyncExternalStore = function (e, t, n) { - return de.current.useSyncExternalStore(e, t, n); -}; -R.useTransition = function () { - return de.current.useTransition(); -}; -R.version = "18.3.1"; -Jo.exports = R; -var P = Jo.exports; /** - * @license React - * react-jsx-runtime.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -var Nc = P, - Ec = Symbol.for("react.element"), - Cc = Symbol.for("react.fragment"), - Pc = Object.prototype.hasOwnProperty, - Tc = Nc.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, - zc = { key: !0, ref: !0, __self: !0, __source: !0 }; -function us(e, t, n) { - var r, - l = {}, - i = null, - u = null; - n !== void 0 && (i = "" + n), - t.key !== void 0 && (i = "" + t.key), - t.ref !== void 0 && (u = t.ref); - for (r in t) Pc.call(t, r) && !zc.hasOwnProperty(r) && (l[r] = t[r]); - if (e && e.defaultProps) - for (r in ((t = e.defaultProps), t)) l[r] === void 0 && (l[r] = t[r]); - return { $$typeof: Ec, type: e, key: i, ref: u, props: l, _owner: Tc.current }; -} -cl.Fragment = Cc; -cl.jsx = us; -cl.jsxs = us; -Zo.exports = cl; -var o = Zo.exports, - os = { exports: {} }, - je = {}, - ss = { exports: {} }, - as = {}; /** - * @license React - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -(function (e) { - function t(j, T) { - var I = j.length; - j.push(T); - e: for (; 0 < I; ) { - var K = (I - 1) >>> 1, - J = j[K]; - if (0 < l(J, T)) (j[K] = T), (j[I] = J), (I = K); - else break e; - } - } - function n(j) { - return j.length === 0 ? null : j[0]; - } - function r(j) { - if (j.length === 0) return null; - var T = j[0], - I = j.pop(); - if (I !== T) { - j[0] = I; - e: for (var K = 0, J = j.length, sr = J >>> 1; K < sr; ) { - var Nt = 2 * (K + 1) - 1, - El = j[Nt], - Et = Nt + 1, - ar = j[Et]; - if (0 > l(El, I)) - Et < J && 0 > l(ar, El) - ? ((j[K] = ar), (j[Et] = I), (K = Et)) - : ((j[K] = El), (j[Nt] = I), (K = Nt)); - else if (Et < J && 0 > l(ar, I)) (j[K] = ar), (j[Et] = I), (K = Et); - else break e; - } - } - return T; - } - function l(j, T) { - var I = j.sortIndex - T.sortIndex; - return I !== 0 ? I : j.id - T.id; - } - if (typeof performance == "object" && typeof performance.now == "function") { - var i = performance; - e.unstable_now = function () { - return i.now(); - }; - } else { - var u = Date, - s = u.now(); - e.unstable_now = function () { - return u.now() - s; - }; - } - var a = [], - f = [], - v = 1, - g = null, - h = 3, - m = !1, - x = !1, - S = !1, - L = typeof setTimeout == "function" ? setTimeout : null, - p = typeof clearTimeout == "function" ? clearTimeout : null, - c = typeof setImmediate < "u" ? setImmediate : null; - typeof navigator < "u" && - navigator.scheduling !== void 0 && - navigator.scheduling.isInputPending !== void 0 && - navigator.scheduling.isInputPending.bind(navigator.scheduling); - function d(j) { - for (var T = n(f); T !== null; ) { - if (T.callback === null) r(f); - else if (T.startTime <= j) r(f), (T.sortIndex = T.expirationTime), t(a, T); - else break; - T = n(f); - } - } - function y(j) { - if (((S = !1), d(j), !x)) - if (n(a) !== null) (x = !0), ye(k); - else { - var T = n(f); - T !== null && Ke(y, T.startTime - j); - } - } - function k(j, T) { - (x = !1), S && ((S = !1), p(C), (C = -1)), (m = !0); - var I = h; - try { - for ( - d(T), g = n(a); - g !== null && (!(g.expirationTime > T) || (j && !le())); - ) { - var K = g.callback; - if (typeof K == "function") { - (g.callback = null), (h = g.priorityLevel); - var J = K(g.expirationTime <= T); - (T = e.unstable_now()), - typeof J == "function" ? (g.callback = J) : g === n(a) && r(a), - d(T); - } else r(a); - g = n(a); - } - if (g !== null) var sr = !0; - else { - var Nt = n(f); - Nt !== null && Ke(y, Nt.startTime - T), (sr = !1); - } - return sr; - } finally { - (g = null), (h = I), (m = !1); - } - } - var N = !1, - E = null, - C = -1, - D = 5, - z = -1; - function le() { - return !(e.unstable_now() - z < D); - } - function Qe() { - if (E !== null) { - var j = e.unstable_now(); - z = j; - var T = !0; - try { - T = E(!0, j); - } finally { - T ? Ie() : ((N = !1), (E = null)); - } - } else N = !1; - } - var Ie; - if (typeof c == "function") - Ie = function () { - c(Qe); - }; - else if (typeof MessageChannel < "u") { - var ee = new MessageChannel(), - O = ee.port2; - (ee.port1.onmessage = Qe), - (Ie = function () { - O.postMessage(null); - }); - } else - Ie = function () { - L(Qe, 0); - }; - function ye(j) { - (E = j), N || ((N = !0), Ie()); - } - function Ke(j, T) { - C = L(function () { - j(e.unstable_now()); - }, T); - } - (e.unstable_IdlePriority = 5), - (e.unstable_ImmediatePriority = 1), - (e.unstable_LowPriority = 4), - (e.unstable_NormalPriority = 3), - (e.unstable_Profiling = null), - (e.unstable_UserBlockingPriority = 2), - (e.unstable_cancelCallback = function (j) { - j.callback = null; - }), - (e.unstable_continueExecution = function () { - x || m || ((x = !0), ye(k)); - }), - (e.unstable_forceFrameRate = function (j) { - 0 > j || 125 < j - ? console.error( - "forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported", - ) - : (D = 0 < j ? Math.floor(1e3 / j) : 5); - }), - (e.unstable_getCurrentPriorityLevel = function () { - return h; - }), - (e.unstable_getFirstCallbackNode = function () { - return n(a); - }), - (e.unstable_next = function (j) { - switch (h) { - case 1: - case 2: - case 3: - var T = 3; - break; - default: - T = h; - } - var I = h; - h = T; - try { - return j(); - } finally { - h = I; - } - }), - (e.unstable_pauseExecution = function () {}), - (e.unstable_requestPaint = function () {}), - (e.unstable_runWithPriority = function (j, T) { - switch (j) { - case 1: - case 2: - case 3: - case 4: - case 5: - break; - default: - j = 3; - } - var I = h; - h = j; - try { - return T(); - } finally { - h = I; - } - }), - (e.unstable_scheduleCallback = function (j, T, I) { - var K = e.unstable_now(); - switch ( - (typeof I == "object" && I !== null - ? ((I = I.delay), (I = typeof I == "number" && 0 < I ? K + I : K)) - : (I = K), - j) - ) { - case 1: - var J = -1; - break; - case 2: - J = 250; - break; - case 5: - J = 1073741823; - break; - case 4: - J = 1e4; - break; - default: - J = 5e3; - } - return ( - (J = I + J), - (j = { - id: v++, - callback: T, - priorityLevel: j, - startTime: I, - expirationTime: J, - sortIndex: -1, - }), - I > K - ? ((j.sortIndex = I), - t(f, j), - n(a) === null && - j === n(f) && - (S ? (p(C), (C = -1)) : (S = !0), Ke(y, I - K))) - : ((j.sortIndex = J), t(a, j), x || m || ((x = !0), ye(k))), - j - ); - }), - (e.unstable_shouldYield = le), - (e.unstable_wrapCallback = function (j) { - var T = h; - return function () { - var I = h; - h = T; - try { - return j.apply(this, arguments); - } finally { - h = I; - } - }; - }); -})(as); -ss.exports = as; -var Lc = ss.exports; /** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -var Ic = P, - ke = Lc; -function w(e) { - for ( - var t = "https://reactjs.org/docs/error-decoder.html?invariant=" + e, n = 1; - n < arguments.length; - n++ - ) - t += "&args[]=" + encodeURIComponent(arguments[n]); - return ( - "Minified React error #" + - e + - "; visit " + - t + - " for the full message or use the non-minified dev environment for full errors and additional helpful warnings." - ); -} -var cs = new Set(), - An = {}; -function $t(e, t) { - sn(e, t), sn(e + "Capture", t); -} -function sn(e, t) { - for (An[e] = t, e = 0; e < t.length; e++) cs.add(t[e]); -} -var be = !( - typeof window > "u" || - typeof window.document > "u" || - typeof window.document.createElement > "u" - ), - bl = Object.prototype.hasOwnProperty, - Rc = - /^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/, - Bu = {}, - Wu = {}; -function Oc(e) { - return bl.call(Wu, e) - ? !0 - : bl.call(Bu, e) - ? !1 - : Rc.test(e) - ? (Wu[e] = !0) - : ((Bu[e] = !0), !1); -} -function Dc(e, t, n, r) { - if (n !== null && n.type === 0) return !1; - switch (typeof t) { - case "function": - case "symbol": - return !0; - case "boolean": - return r - ? !1 - : n !== null - ? !n.acceptsBooleans - : ((e = e.toLowerCase().slice(0, 5)), e !== "data-" && e !== "aria-"); - default: - return !1; - } -} -function Mc(e, t, n, r) { - if (t === null || typeof t > "u" || Dc(e, t, n, r)) return !0; - if (r) return !1; - if (n !== null) - switch (n.type) { - case 3: - return !t; - case 4: - return t === !1; - case 5: - return isNaN(t); - case 6: - return isNaN(t) || 1 > t; - } - return !1; -} -function fe(e, t, n, r, l, i, u) { - (this.acceptsBooleans = t === 2 || t === 3 || t === 4), - (this.attributeName = r), - (this.attributeNamespace = l), - (this.mustUseProperty = n), - (this.propertyName = e), - (this.type = t), - (this.sanitizeURL = i), - (this.removeEmptyString = u); -} -var re = {}; -"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style" - .split(" ") - .forEach(function (e) { - re[e] = new fe(e, 0, !1, e, null, !1, !1); - }); -[ - ["acceptCharset", "accept-charset"], - ["className", "class"], - ["htmlFor", "for"], - ["httpEquiv", "http-equiv"], -].forEach(function (e) { - var t = e[0]; - re[t] = new fe(t, 1, !1, e[1], null, !1, !1); -}); -["contentEditable", "draggable", "spellCheck", "value"].forEach(function (e) { - re[e] = new fe(e, 2, !1, e.toLowerCase(), null, !1, !1); -}); -[ - "autoReverse", - "externalResourcesRequired", - "focusable", - "preserveAlpha", -].forEach(function (e) { - re[e] = new fe(e, 2, !1, e, null, !1, !1); -}); -"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope" - .split(" ") - .forEach(function (e) { - re[e] = new fe(e, 3, !1, e.toLowerCase(), null, !1, !1); - }); -["checked", "multiple", "muted", "selected"].forEach(function (e) { - re[e] = new fe(e, 3, !0, e, null, !1, !1); -}); -["capture", "download"].forEach(function (e) { - re[e] = new fe(e, 4, !1, e, null, !1, !1); -}); -["cols", "rows", "size", "span"].forEach(function (e) { - re[e] = new fe(e, 6, !1, e, null, !1, !1); -}); -["rowSpan", "start"].forEach(function (e) { - re[e] = new fe(e, 5, !1, e.toLowerCase(), null, !1, !1); -}); -var Gi = /[\-:]([a-z])/g; -function Zi(e) { - return e[1].toUpperCase(); -} -"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height" - .split(" ") - .forEach(function (e) { - var t = e.replace(Gi, Zi); - re[t] = new fe(t, 1, !1, e, null, !1, !1); - }); -"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type" - .split(" ") - .forEach(function (e) { - var t = e.replace(Gi, Zi); - re[t] = new fe(t, 1, !1, e, "http://www.w3.org/1999/xlink", !1, !1); - }); -["xml:base", "xml:lang", "xml:space"].forEach(function (e) { - var t = e.replace(Gi, Zi); - re[t] = new fe(t, 1, !1, e, "http://www.w3.org/XML/1998/namespace", !1, !1); -}); -["tabIndex", "crossOrigin"].forEach(function (e) { - re[e] = new fe(e, 1, !1, e.toLowerCase(), null, !1, !1); -}); -re.xlinkHref = new fe( - "xlinkHref", - 1, - !1, - "xlink:href", - "http://www.w3.org/1999/xlink", - !0, - !1, -); -["src", "href", "action", "formAction"].forEach(function (e) { - re[e] = new fe(e, 1, !1, e.toLowerCase(), null, !0, !0); -}); -function Ji(e, t, n, r) { - var l = re.hasOwnProperty(t) ? re[t] : null; - (l !== null - ? l.type !== 0 - : r || - !(2 < t.length) || - (t[0] !== "o" && t[0] !== "O") || - (t[1] !== "n" && t[1] !== "N")) && - (Mc(t, n, l, r) && (n = null), - r || l === null - ? Oc(t) && (n === null ? e.removeAttribute(t) : e.setAttribute(t, "" + n)) - : l.mustUseProperty - ? (e[l.propertyName] = n === null ? (l.type === 3 ? !1 : "") : n) - : ((t = l.attributeName), - (r = l.attributeNamespace), - n === null - ? e.removeAttribute(t) - : ((l = l.type), - (n = l === 3 || (l === 4 && n === !0) ? "" : "" + n), - r ? e.setAttributeNS(r, t, n) : e.setAttribute(t, n)))); -} -var rt = Ic.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, - dr = Symbol.for("react.element"), - Wt = Symbol.for("react.portal"), - Ht = Symbol.for("react.fragment"), - qi = Symbol.for("react.strict_mode"), - ei = Symbol.for("react.profiler"), - ds = Symbol.for("react.provider"), - fs = Symbol.for("react.context"), - bi = Symbol.for("react.forward_ref"), - ti = Symbol.for("react.suspense"), - ni = Symbol.for("react.suspense_list"), - eu = Symbol.for("react.memo"), - it = Symbol.for("react.lazy"), - ps = Symbol.for("react.offscreen"), - Hu = Symbol.iterator; -function yn(e) { - return e === null || typeof e != "object" - ? null - : ((e = (Hu && e[Hu]) || e["@@iterator"]), typeof e == "function" ? e : null); -} -var H = Object.assign, - Pl; -function En(e) { - if (Pl === void 0) - try { - throw Error(); - } catch (n) { - var t = n.stack.trim().match(/\n( *(at )?)/); - Pl = (t && t[1]) || ""; - } - return ( - ` -` + - Pl + - e - ); -} -var Tl = !1; -function zl(e, t) { - if (!e || Tl) return ""; - Tl = !0; - var n = Error.prepareStackTrace; - Error.prepareStackTrace = void 0; - try { - if (t) - if ( - ((t = function () { - throw Error(); - }), - Object.defineProperty(t.prototype, "props", { - set: function () { - throw Error(); - }, - }), - typeof Reflect == "object" && Reflect.construct) - ) { - try { - Reflect.construct(t, []); - } catch (f) { - var r = f; - } - Reflect.construct(e, [], t); - } else { - try { - t.call(); - } catch (f) { - r = f; - } - e.call(t.prototype); - } - else { - try { - throw Error(); - } catch (f) { - r = f; - } - e(); - } - } catch (f) { - if (f && r && typeof f.stack == "string") { - for ( - var l = f.stack.split(` -`), - i = r.stack.split(` -`), - u = l.length - 1, - s = i.length - 1; - 1 <= u && 0 <= s && l[u] !== i[s]; - ) - s--; - for (; 1 <= u && 0 <= s; u--, s--) - if (l[u] !== i[s]) { - if (u !== 1 || s !== 1) - do - if ((u--, s--, 0 > s || l[u] !== i[s])) { - var a = - ` -` + l[u].replace(" at new ", " at "); - return ( - e.displayName && - a.includes("") && - (a = a.replace("", e.displayName)), - a - ); - } - while (1 <= u && 0 <= s); - break; - } - } - } finally { - (Tl = !1), (Error.prepareStackTrace = n); - } - return (e = e ? e.displayName || e.name : "") ? En(e) : ""; -} -function Fc(e) { - switch (e.tag) { - case 5: - return En(e.type); - case 16: - return En("Lazy"); - case 13: - return En("Suspense"); - case 19: - return En("SuspenseList"); - case 0: - case 2: - case 15: - return (e = zl(e.type, !1)), e; - case 11: - return (e = zl(e.type.render, !1)), e; - case 1: - return (e = zl(e.type, !0)), e; - default: - return ""; - } -} -function ri(e) { - if (e == null) return null; - if (typeof e == "function") return e.displayName || e.name || null; - if (typeof e == "string") return e; - switch (e) { - case Ht: - return "Fragment"; - case Wt: - return "Portal"; - case ei: - return "Profiler"; - case qi: - return "StrictMode"; - case ti: - return "Suspense"; - case ni: - return "SuspenseList"; - } - if (typeof e == "object") - switch (e.$$typeof) { - case fs: - return (e.displayName || "Context") + ".Consumer"; - case ds: - return (e._context.displayName || "Context") + ".Provider"; - case bi: - var t = e.render; - return ( - (e = e.displayName), - e || - ((e = t.displayName || t.name || ""), - (e = e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef")), - e - ); - case eu: - return (t = e.displayName || null), t !== null ? t : ri(e.type) || "Memo"; - case it: - (t = e._payload), (e = e._init); - try { - return ri(e(t)); - } catch {} - } - return null; -} -function Uc(e) { - var t = e.type; - switch (e.tag) { - case 24: - return "Cache"; - case 9: - return (t.displayName || "Context") + ".Consumer"; - case 10: - return (t._context.displayName || "Context") + ".Provider"; - case 18: - return "DehydratedFragment"; - case 11: - return ( - (e = t.render), - (e = e.displayName || e.name || ""), - t.displayName || (e !== "" ? "ForwardRef(" + e + ")" : "ForwardRef") - ); - case 7: - return "Fragment"; - case 5: - return t; - case 4: - return "Portal"; - case 3: - return "Root"; - case 6: - return "Text"; - case 16: - return ri(t); - case 8: - return t === qi ? "StrictMode" : "Mode"; - case 22: - return "Offscreen"; - case 12: - return "Profiler"; - case 21: - return "Scope"; - case 13: - return "Suspense"; - case 19: - return "SuspenseList"; - case 25: - return "TracingMarker"; - case 1: - case 0: - case 17: - case 2: - case 14: - case 15: - if (typeof t == "function") return t.displayName || t.name || null; - if (typeof t == "string") return t; - } - return null; -} -function xt(e) { - switch (typeof e) { - case "boolean": - case "number": - case "string": - case "undefined": - return e; - case "object": - return e; - default: - return ""; - } -} -function hs(e) { - var t = e.type; - return ( - (e = e.nodeName) && - e.toLowerCase() === "input" && - (t === "checkbox" || t === "radio") - ); -} -function Ac(e) { - var t = hs(e) ? "checked" : "value", - n = Object.getOwnPropertyDescriptor(e.constructor.prototype, t), - r = "" + e[t]; - if ( - !e.hasOwnProperty(t) && - typeof n < "u" && - typeof n.get == "function" && - typeof n.set == "function" - ) { - var l = n.get, - i = n.set; - return ( - Object.defineProperty(e, t, { - configurable: !0, - get: function () { - return l.call(this); - }, - set: function (u) { - (r = "" + u), i.call(this, u); - }, - }), - Object.defineProperty(e, t, { enumerable: n.enumerable }), - { - getValue: function () { - return r; - }, - setValue: function (u) { - r = "" + u; - }, - stopTracking: function () { - (e._valueTracker = null), delete e[t]; - }, - } - ); - } -} -function fr(e) { - e._valueTracker || (e._valueTracker = Ac(e)); -} -function ms(e) { - if (!e) return !1; - var t = e._valueTracker; - if (!t) return !0; - var n = t.getValue(), - r = ""; - return ( - e && (r = hs(e) ? (e.checked ? "true" : "false") : e.value), - (e = r), - e !== n ? (t.setValue(e), !0) : !1 - ); -} -function $r(e) { - if (((e = e || (typeof document < "u" ? document : void 0)), typeof e > "u")) - return null; - try { - return e.activeElement || e.body; - } catch { - return e.body; - } -} -function li(e, t) { - var n = t.checked; - return H({}, t, { - defaultChecked: void 0, - defaultValue: void 0, - value: void 0, - checked: n ?? e._wrapperState.initialChecked, - }); -} -function Qu(e, t) { - var n = t.defaultValue == null ? "" : t.defaultValue, - r = t.checked != null ? t.checked : t.defaultChecked; - (n = xt(t.value != null ? t.value : n)), - (e._wrapperState = { - initialChecked: r, - initialValue: n, - controlled: - t.type === "checkbox" || t.type === "radio" - ? t.checked != null - : t.value != null, - }); -} -function vs(e, t) { - (t = t.checked), t != null && Ji(e, "checked", t, !1); -} -function ii(e, t) { - vs(e, t); - var n = xt(t.value), - r = t.type; - if (n != null) - r === "number" - ? ((n === 0 && e.value === "") || e.value != n) && (e.value = "" + n) - : e.value !== "" + n && (e.value = "" + n); - else if (r === "submit" || r === "reset") { - e.removeAttribute("value"); - return; - } - t.hasOwnProperty("value") - ? ui(e, t.type, n) - : t.hasOwnProperty("defaultValue") && ui(e, t.type, xt(t.defaultValue)), - t.checked == null && - t.defaultChecked != null && - (e.defaultChecked = !!t.defaultChecked); -} -function Ku(e, t, n) { - if (t.hasOwnProperty("value") || t.hasOwnProperty("defaultValue")) { - var r = t.type; - if ( - !( - (r !== "submit" && r !== "reset") || - (t.value !== void 0 && t.value !== null) - ) - ) - return; - (t = "" + e._wrapperState.initialValue), - n || t === e.value || (e.value = t), - (e.defaultValue = t); - } - (n = e.name), - n !== "" && (e.name = ""), - (e.defaultChecked = !!e._wrapperState.initialChecked), - n !== "" && (e.name = n); -} -function ui(e, t, n) { - (t !== "number" || $r(e.ownerDocument) !== e) && - (n == null - ? (e.defaultValue = "" + e._wrapperState.initialValue) - : e.defaultValue !== "" + n && (e.defaultValue = "" + n)); -} -var Cn = Array.isArray; -function tn(e, t, n, r) { - if (((e = e.options), t)) { - t = {}; - for (var l = 0; l < n.length; l++) t["$" + n[l]] = !0; - for (n = 0; n < e.length; n++) - (l = t.hasOwnProperty("$" + e[n].value)), - e[n].selected !== l && (e[n].selected = l), - l && r && (e[n].defaultSelected = !0); - } else { - for (n = "" + xt(n), t = null, l = 0; l < e.length; l++) { - if (e[l].value === n) { - (e[l].selected = !0), r && (e[l].defaultSelected = !0); - return; - } - t !== null || e[l].disabled || (t = e[l]); - } - t !== null && (t.selected = !0); - } -} -function oi(e, t) { - if (t.dangerouslySetInnerHTML != null) throw Error(w(91)); - return H({}, t, { - value: void 0, - defaultValue: void 0, - children: "" + e._wrapperState.initialValue, - }); -} -function Yu(e, t) { - var n = t.value; - if (n == null) { - if (((n = t.children), (t = t.defaultValue), n != null)) { - if (t != null) throw Error(w(92)); - if (Cn(n)) { - if (1 < n.length) throw Error(w(93)); - n = n[0]; - } - t = n; - } - t == null && (t = ""), (n = t); - } - e._wrapperState = { initialValue: xt(n) }; -} -function gs(e, t) { - var n = xt(t.value), - r = xt(t.defaultValue); - n != null && - ((n = "" + n), - n !== e.value && (e.value = n), - t.defaultValue == null && e.defaultValue !== n && (e.defaultValue = n)), - r != null && (e.defaultValue = "" + r); -} -function Xu(e) { - var t = e.textContent; - t === e._wrapperState.initialValue && t !== "" && t !== null && (e.value = t); -} -function ys(e) { - switch (e) { - case "svg": - return "http://www.w3.org/2000/svg"; - case "math": - return "http://www.w3.org/1998/Math/MathML"; - default: - return "http://www.w3.org/1999/xhtml"; - } -} -function si(e, t) { - return e == null || e === "http://www.w3.org/1999/xhtml" - ? ys(t) - : e === "http://www.w3.org/2000/svg" && t === "foreignObject" - ? "http://www.w3.org/1999/xhtml" - : e; -} -var pr, - xs = (function (e) { - return typeof MSApp < "u" && MSApp.execUnsafeLocalFunction - ? function (t, n, r, l) { - MSApp.execUnsafeLocalFunction(function () { - return e(t, n, r, l); - }); - } - : e; - })(function (e, t) { - if (e.namespaceURI !== "http://www.w3.org/2000/svg" || "innerHTML" in e) - e.innerHTML = t; - else { - for ( - pr = pr || document.createElement("div"), - pr.innerHTML = "" + t.valueOf().toString() + "", - t = pr.firstChild; - e.firstChild; - ) - e.removeChild(e.firstChild); - for (; t.firstChild; ) e.appendChild(t.firstChild); - } - }); -function $n(e, t) { - if (t) { - var n = e.firstChild; - if (n && n === e.lastChild && n.nodeType === 3) { - n.nodeValue = t; - return; - } - } - e.textContent = t; -} -var zn = { - animationIterationCount: !0, - aspectRatio: !0, - borderImageOutset: !0, - borderImageSlice: !0, - borderImageWidth: !0, - boxFlex: !0, - boxFlexGroup: !0, - boxOrdinalGroup: !0, - columnCount: !0, - columns: !0, - flex: !0, - flexGrow: !0, - flexPositive: !0, - flexShrink: !0, - flexNegative: !0, - flexOrder: !0, - gridArea: !0, - gridRow: !0, - gridRowEnd: !0, - gridRowSpan: !0, - gridRowStart: !0, - gridColumn: !0, - gridColumnEnd: !0, - gridColumnSpan: !0, - gridColumnStart: !0, - fontWeight: !0, - lineClamp: !0, - lineHeight: !0, - opacity: !0, - order: !0, - orphans: !0, - tabSize: !0, - widows: !0, - zIndex: !0, - zoom: !0, - fillOpacity: !0, - floodOpacity: !0, - stopOpacity: !0, - strokeDasharray: !0, - strokeDashoffset: !0, - strokeMiterlimit: !0, - strokeOpacity: !0, - strokeWidth: !0, - }, - $c = ["Webkit", "ms", "Moz", "O"]; -Object.keys(zn).forEach(function (e) { - $c.forEach(function (t) { - (t = t + e.charAt(0).toUpperCase() + e.substring(1)), (zn[t] = zn[e]); - }); -}); -function ws(e, t, n) { - return t == null || typeof t == "boolean" || t === "" - ? "" - : n || typeof t != "number" || t === 0 || (zn.hasOwnProperty(e) && zn[e]) - ? ("" + t).trim() - : t + "px"; -} -function Ss(e, t) { - e = e.style; - for (var n in t) - if (t.hasOwnProperty(n)) { - var r = n.indexOf("--") === 0, - l = ws(n, t[n], r); - n === "float" && (n = "cssFloat"), r ? e.setProperty(n, l) : (e[n] = l); - } -} -var Vc = H( - { menuitem: !0 }, - { - area: !0, - base: !0, - br: !0, - col: !0, - embed: !0, - hr: !0, - img: !0, - input: !0, - keygen: !0, - link: !0, - meta: !0, - param: !0, - source: !0, - track: !0, - wbr: !0, - }, -); -function ai(e, t) { - if (t) { - if (Vc[e] && (t.children != null || t.dangerouslySetInnerHTML != null)) - throw Error(w(137, e)); - if (t.dangerouslySetInnerHTML != null) { - if (t.children != null) throw Error(w(60)); - if ( - typeof t.dangerouslySetInnerHTML != "object" || - !("__html" in t.dangerouslySetInnerHTML) - ) - throw Error(w(61)); - } - if (t.style != null && typeof t.style != "object") throw Error(w(62)); - } -} -function ci(e, t) { - if (e.indexOf("-") === -1) return typeof t.is == "string"; - switch (e) { - case "annotation-xml": - case "color-profile": - case "font-face": - case "font-face-src": - case "font-face-uri": - case "font-face-format": - case "font-face-name": - case "missing-glyph": - return !1; - default: - return !0; - } -} -var di = null; -function tu(e) { - return ( - (e = e.target || e.srcElement || window), - e.correspondingUseElement && (e = e.correspondingUseElement), - e.nodeType === 3 ? e.parentNode : e - ); -} -var fi = null, - nn = null, - rn = null; -function Gu(e) { - if ((e = ir(e))) { - if (typeof fi != "function") throw Error(w(280)); - var t = e.stateNode; - t && ((t = ml(t)), fi(e.stateNode, e.type, t)); - } -} -function ks(e) { - nn ? (rn ? rn.push(e) : (rn = [e])) : (nn = e); -} -function js() { - if (nn) { - var e = nn, - t = rn; - if (((rn = nn = null), Gu(e), t)) for (e = 0; e < t.length; e++) Gu(t[e]); - } -} -function _s(e, t) { - return e(t); -} -function Ns() {} -var Ll = !1; -function Es(e, t, n) { - if (Ll) return e(t, n); - Ll = !0; - try { - return _s(e, t, n); - } finally { - (Ll = !1), (nn !== null || rn !== null) && (Ns(), js()); - } -} -function Vn(e, t) { - var n = e.stateNode; - if (n === null) return null; - var r = ml(n); - if (r === null) return null; - n = r[t]; - e: switch (t) { - case "onClick": - case "onClickCapture": - case "onDoubleClick": - case "onDoubleClickCapture": - case "onMouseDown": - case "onMouseDownCapture": - case "onMouseMove": - case "onMouseMoveCapture": - case "onMouseUp": - case "onMouseUpCapture": - case "onMouseEnter": - (r = !r.disabled) || - ((e = e.type), - (r = !( - e === "button" || - e === "input" || - e === "select" || - e === "textarea" - ))), - (e = !r); - break e; - default: - e = !1; - } - if (e) return null; - if (n && typeof n != "function") throw Error(w(231, t, typeof n)); - return n; -} -var pi = !1; -if (be) - try { - var xn = {}; - Object.defineProperty(xn, "passive", { - get: function () { - pi = !0; - }, - }), - window.addEventListener("test", xn, xn), - window.removeEventListener("test", xn, xn); - } catch { - pi = !1; - } -function Bc(e, t, n, r, l, i, u, s, a) { - var f = Array.prototype.slice.call(arguments, 3); - try { - t.apply(n, f); - } catch (v) { - this.onError(v); - } -} -var Ln = !1, - Vr = null, - Br = !1, - hi = null, - Wc = { - onError: function (e) { - (Ln = !0), (Vr = e); - }, - }; -function Hc(e, t, n, r, l, i, u, s, a) { - (Ln = !1), (Vr = null), Bc.apply(Wc, arguments); -} -function Qc(e, t, n, r, l, i, u, s, a) { - if ((Hc.apply(this, arguments), Ln)) { - if (Ln) { - var f = Vr; - (Ln = !1), (Vr = null); - } else throw Error(w(198)); - Br || ((Br = !0), (hi = f)); - } -} -function Vt(e) { - var t = e, - n = e; - if (e.alternate) for (; t.return; ) t = t.return; - else { - e = t; - do (t = e), t.flags & 4098 && (n = t.return), (e = t.return); - while (e); - } - return t.tag === 3 ? n : null; -} -function Cs(e) { - if (e.tag === 13) { - var t = e.memoizedState; - if ( - (t === null && ((e = e.alternate), e !== null && (t = e.memoizedState)), - t !== null) - ) - return t.dehydrated; - } - return null; -} -function Zu(e) { - if (Vt(e) !== e) throw Error(w(188)); -} -function Kc(e) { - var t = e.alternate; - if (!t) { - if (((t = Vt(e)), t === null)) throw Error(w(188)); - return t !== e ? null : e; - } - for (var n = e, r = t; ; ) { - var l = n.return; - if (l === null) break; - var i = l.alternate; - if (i === null) { - if (((r = l.return), r !== null)) { - n = r; - continue; - } - break; - } - if (l.child === i.child) { - for (i = l.child; i; ) { - if (i === n) return Zu(l), e; - if (i === r) return Zu(l), t; - i = i.sibling; - } - throw Error(w(188)); - } - if (n.return !== r.return) (n = l), (r = i); - else { - for (var u = !1, s = l.child; s; ) { - if (s === n) { - (u = !0), (n = l), (r = i); - break; - } - if (s === r) { - (u = !0), (r = l), (n = i); - break; - } - s = s.sibling; - } - if (!u) { - for (s = i.child; s; ) { - if (s === n) { - (u = !0), (n = i), (r = l); - break; - } - if (s === r) { - (u = !0), (r = i), (n = l); - break; - } - s = s.sibling; - } - if (!u) throw Error(w(189)); - } - } - if (n.alternate !== r) throw Error(w(190)); - } - if (n.tag !== 3) throw Error(w(188)); - return n.stateNode.current === n ? e : t; -} -function Ps(e) { - return (e = Kc(e)), e !== null ? Ts(e) : null; -} -function Ts(e) { - if (e.tag === 5 || e.tag === 6) return e; - for (e = e.child; e !== null; ) { - var t = Ts(e); - if (t !== null) return t; - e = e.sibling; - } - return null; -} -var zs = ke.unstable_scheduleCallback, - Ju = ke.unstable_cancelCallback, - Yc = ke.unstable_shouldYield, - Xc = ke.unstable_requestPaint, - Y = ke.unstable_now, - Gc = ke.unstable_getCurrentPriorityLevel, - nu = ke.unstable_ImmediatePriority, - Ls = ke.unstable_UserBlockingPriority, - Wr = ke.unstable_NormalPriority, - Zc = ke.unstable_LowPriority, - Is = ke.unstable_IdlePriority, - dl = null, - We = null; -function Jc(e) { - if (We && typeof We.onCommitFiberRoot == "function") - try { - We.onCommitFiberRoot(dl, e, void 0, (e.current.flags & 128) === 128); - } catch {} -} -var Fe = Math.clz32 ? Math.clz32 : ed, - qc = Math.log, - bc = Math.LN2; -function ed(e) { - return (e >>>= 0), e === 0 ? 32 : (31 - ((qc(e) / bc) | 0)) | 0; -} -var hr = 64, - mr = 4194304; -function Pn(e) { - switch (e & -e) { - case 1: - return 1; - case 2: - return 2; - case 4: - return 4; - case 8: - return 8; - case 16: - return 16; - case 32: - return 32; - case 64: - case 128: - case 256: - case 512: - case 1024: - case 2048: - case 4096: - case 8192: - case 16384: - case 32768: - case 65536: - case 131072: - case 262144: - case 524288: - case 1048576: - case 2097152: - return e & 4194240; - case 4194304: - case 8388608: - case 16777216: - case 33554432: - case 67108864: - return e & 130023424; - case 134217728: - return 134217728; - case 268435456: - return 268435456; - case 536870912: - return 536870912; - case 1073741824: - return 1073741824; - default: - return e; - } -} -function Hr(e, t) { - var n = e.pendingLanes; - if (n === 0) return 0; - var r = 0, - l = e.suspendedLanes, - i = e.pingedLanes, - u = n & 268435455; - if (u !== 0) { - var s = u & ~l; - s !== 0 ? (r = Pn(s)) : ((i &= u), i !== 0 && (r = Pn(i))); - } else (u = n & ~l), u !== 0 ? (r = Pn(u)) : i !== 0 && (r = Pn(i)); - if (r === 0) return 0; - if ( - t !== 0 && - t !== r && - !(t & l) && - ((l = r & -r), (i = t & -t), l >= i || (l === 16 && (i & 4194240) !== 0)) - ) - return t; - if ((r & 4 && (r |= n & 16), (t = e.entangledLanes), t !== 0)) - for (e = e.entanglements, t &= r; 0 < t; ) - (n = 31 - Fe(t)), (l = 1 << n), (r |= e[n]), (t &= ~l); - return r; -} -function td(e, t) { - switch (e) { - case 1: - case 2: - case 4: - return t + 250; - case 8: - case 16: - case 32: - case 64: - case 128: - case 256: - case 512: - case 1024: - case 2048: - case 4096: - case 8192: - case 16384: - case 32768: - case 65536: - case 131072: - case 262144: - case 524288: - case 1048576: - case 2097152: - return t + 5e3; - case 4194304: - case 8388608: - case 16777216: - case 33554432: - case 67108864: - return -1; - case 134217728: - case 268435456: - case 536870912: - case 1073741824: - return -1; - default: - return -1; - } -} -function nd(e, t) { - for ( - var n = e.suspendedLanes, - r = e.pingedLanes, - l = e.expirationTimes, - i = e.pendingLanes; - 0 < i; - ) { - var u = 31 - Fe(i), - s = 1 << u, - a = l[u]; - a === -1 - ? (!(s & n) || s & r) && (l[u] = td(s, t)) - : a <= t && (e.expiredLanes |= s), - (i &= ~s); - } -} -function mi(e) { - return ( - (e = e.pendingLanes & -1073741825), - e !== 0 ? e : e & 1073741824 ? 1073741824 : 0 - ); -} -function Rs() { - var e = hr; - return (hr <<= 1), !(hr & 4194240) && (hr = 64), e; -} -function Il(e) { - for (var t = [], n = 0; 31 > n; n++) t.push(e); - return t; -} -function rr(e, t, n) { - (e.pendingLanes |= t), - t !== 536870912 && ((e.suspendedLanes = 0), (e.pingedLanes = 0)), - (e = e.eventTimes), - (t = 31 - Fe(t)), - (e[t] = n); -} -function rd(e, t) { - var n = e.pendingLanes & ~t; - (e.pendingLanes = t), - (e.suspendedLanes = 0), - (e.pingedLanes = 0), - (e.expiredLanes &= t), - (e.mutableReadLanes &= t), - (e.entangledLanes &= t), - (t = e.entanglements); - var r = e.eventTimes; - for (e = e.expirationTimes; 0 < n; ) { - var l = 31 - Fe(n), - i = 1 << l; - (t[l] = 0), (r[l] = -1), (e[l] = -1), (n &= ~i); - } -} -function ru(e, t) { - var n = (e.entangledLanes |= t); - for (e = e.entanglements; n; ) { - var r = 31 - Fe(n), - l = 1 << r; - (l & t) | (e[r] & t) && (e[r] |= t), (n &= ~l); - } -} -var F = 0; -function Os(e) { - return (e &= -e), 1 < e ? (4 < e ? (e & 268435455 ? 16 : 536870912) : 4) : 1; -} -var Ds, - lu, - Ms, - Fs, - Us, - vi = !1, - vr = [], - dt = null, - ft = null, - pt = null, - Bn = new Map(), - Wn = new Map(), - ot = [], - ld = - "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split( - " ", - ); -function qu(e, t) { - switch (e) { - case "focusin": - case "focusout": - dt = null; - break; - case "dragenter": - case "dragleave": - ft = null; - break; - case "mouseover": - case "mouseout": - pt = null; - break; - case "pointerover": - case "pointerout": - Bn.delete(t.pointerId); - break; - case "gotpointercapture": - case "lostpointercapture": - Wn.delete(t.pointerId); - } -} -function wn(e, t, n, r, l, i) { - return e === null || e.nativeEvent !== i - ? ((e = { - blockedOn: t, - domEventName: n, - eventSystemFlags: r, - nativeEvent: i, - targetContainers: [l], - }), - t !== null && ((t = ir(t)), t !== null && lu(t)), - e) - : ((e.eventSystemFlags |= r), - (t = e.targetContainers), - l !== null && t.indexOf(l) === -1 && t.push(l), - e); -} -function id(e, t, n, r, l) { - switch (t) { - case "focusin": - return (dt = wn(dt, e, t, n, r, l)), !0; - case "dragenter": - return (ft = wn(ft, e, t, n, r, l)), !0; - case "mouseover": - return (pt = wn(pt, e, t, n, r, l)), !0; - case "pointerover": - var i = l.pointerId; - return Bn.set(i, wn(Bn.get(i) || null, e, t, n, r, l)), !0; - case "gotpointercapture": - return ( - (i = l.pointerId), Wn.set(i, wn(Wn.get(i) || null, e, t, n, r, l)), !0 - ); - } - return !1; -} -function As(e) { - var t = Tt(e.target); - if (t !== null) { - var n = Vt(t); - if (n !== null) { - if (((t = n.tag), t === 13)) { - if (((t = Cs(n)), t !== null)) { - (e.blockedOn = t), - Us(e.priority, function () { - Ms(n); - }); - return; - } - } else if (t === 3 && n.stateNode.current.memoizedState.isDehydrated) { - e.blockedOn = n.tag === 3 ? n.stateNode.containerInfo : null; - return; - } - } - } - e.blockedOn = null; -} -function zr(e) { - if (e.blockedOn !== null) return !1; - for (var t = e.targetContainers; 0 < t.length; ) { - var n = gi(e.domEventName, e.eventSystemFlags, t[0], e.nativeEvent); - if (n === null) { - n = e.nativeEvent; - var r = new n.constructor(n.type, n); - (di = r), n.target.dispatchEvent(r), (di = null); - } else return (t = ir(n)), t !== null && lu(t), (e.blockedOn = n), !1; - t.shift(); - } - return !0; -} -function bu(e, t, n) { - zr(e) && n.delete(t); -} -function ud() { - (vi = !1), - dt !== null && zr(dt) && (dt = null), - ft !== null && zr(ft) && (ft = null), - pt !== null && zr(pt) && (pt = null), - Bn.forEach(bu), - Wn.forEach(bu); -} -function Sn(e, t) { - e.blockedOn === t && - ((e.blockedOn = null), - vi || - ((vi = !0), ke.unstable_scheduleCallback(ke.unstable_NormalPriority, ud))); -} -function Hn(e) { - function t(l) { - return Sn(l, e); - } - if (0 < vr.length) { - Sn(vr[0], e); - for (var n = 1; n < vr.length; n++) { - var r = vr[n]; - r.blockedOn === e && (r.blockedOn = null); - } - } - for ( - dt !== null && Sn(dt, e), - ft !== null && Sn(ft, e), - pt !== null && Sn(pt, e), - Bn.forEach(t), - Wn.forEach(t), - n = 0; - n < ot.length; - n++ - ) - (r = ot[n]), r.blockedOn === e && (r.blockedOn = null); - for (; 0 < ot.length && ((n = ot[0]), n.blockedOn === null); ) - As(n), n.blockedOn === null && ot.shift(); -} -var ln = rt.ReactCurrentBatchConfig, - Qr = !0; -function od(e, t, n, r) { - var l = F, - i = ln.transition; - ln.transition = null; - try { - (F = 1), iu(e, t, n, r); - } finally { - (F = l), (ln.transition = i); - } -} -function sd(e, t, n, r) { - var l = F, - i = ln.transition; - ln.transition = null; - try { - (F = 4), iu(e, t, n, r); - } finally { - (F = l), (ln.transition = i); - } -} -function iu(e, t, n, r) { - if (Qr) { - var l = gi(e, t, n, r); - if (l === null) Bl(e, t, r, Kr, n), qu(e, r); - else if (id(l, e, t, n, r)) r.stopPropagation(); - else if ((qu(e, r), t & 4 && -1 < ld.indexOf(e))) { - for (; l !== null; ) { - var i = ir(l); - if ( - (i !== null && Ds(i), - (i = gi(e, t, n, r)), - i === null && Bl(e, t, r, Kr, n), - i === l) - ) - break; - l = i; - } - l !== null && r.stopPropagation(); - } else Bl(e, t, r, null, n); - } -} -var Kr = null; -function gi(e, t, n, r) { - if (((Kr = null), (e = tu(r)), (e = Tt(e)), e !== null)) - if (((t = Vt(e)), t === null)) e = null; - else if (((n = t.tag), n === 13)) { - if (((e = Cs(t)), e !== null)) return e; - e = null; - } else if (n === 3) { - if (t.stateNode.current.memoizedState.isDehydrated) - return t.tag === 3 ? t.stateNode.containerInfo : null; - e = null; - } else t !== e && (e = null); - return (Kr = e), null; -} -function $s(e) { - switch (e) { - case "cancel": - case "click": - case "close": - case "contextmenu": - case "copy": - case "cut": - case "auxclick": - case "dblclick": - case "dragend": - case "dragstart": - case "drop": - case "focusin": - case "focusout": - case "input": - case "invalid": - case "keydown": - case "keypress": - case "keyup": - case "mousedown": - case "mouseup": - case "paste": - case "pause": - case "play": - case "pointercancel": - case "pointerdown": - case "pointerup": - case "ratechange": - case "reset": - case "resize": - case "seeked": - case "submit": - case "touchcancel": - case "touchend": - case "touchstart": - case "volumechange": - case "change": - case "selectionchange": - case "textInput": - case "compositionstart": - case "compositionend": - case "compositionupdate": - case "beforeblur": - case "afterblur": - case "beforeinput": - case "blur": - case "fullscreenchange": - case "focus": - case "hashchange": - case "popstate": - case "select": - case "selectstart": - return 1; - case "drag": - case "dragenter": - case "dragexit": - case "dragleave": - case "dragover": - case "mousemove": - case "mouseout": - case "mouseover": - case "pointermove": - case "pointerout": - case "pointerover": - case "scroll": - case "toggle": - case "touchmove": - case "wheel": - case "mouseenter": - case "mouseleave": - case "pointerenter": - case "pointerleave": - return 4; - case "message": - switch (Gc()) { - case nu: - return 1; - case Ls: - return 4; - case Wr: - case Zc: - return 16; - case Is: - return 536870912; - default: - return 16; - } - default: - return 16; - } -} -var at = null, - uu = null, - Lr = null; -function Vs() { - if (Lr) return Lr; - var e, - t = uu, - n = t.length, - r, - l = "value" in at ? at.value : at.textContent, - i = l.length; - for (e = 0; e < n && t[e] === l[e]; e++); - var u = n - e; - for (r = 1; r <= u && t[n - r] === l[i - r]; r++); - return (Lr = l.slice(e, 1 < r ? 1 - r : void 0)); -} -function Ir(e) { - var t = e.keyCode; - return ( - "charCode" in e - ? ((e = e.charCode), e === 0 && t === 13 && (e = 13)) - : (e = t), - e === 10 && (e = 13), - 32 <= e || e === 13 ? e : 0 - ); -} -function gr() { - return !0; -} -function eo() { - return !1; -} -function _e(e) { - function t(n, r, l, i, u) { - (this._reactName = n), - (this._targetInst = l), - (this.type = r), - (this.nativeEvent = i), - (this.target = u), - (this.currentTarget = null); - for (var s in e) - e.hasOwnProperty(s) && ((n = e[s]), (this[s] = n ? n(i) : i[s])); - return ( - (this.isDefaultPrevented = ( - i.defaultPrevented != null - ? i.defaultPrevented - : i.returnValue === !1 - ) - ? gr - : eo), - (this.isPropagationStopped = eo), - this - ); - } - return ( - H(t.prototype, { - preventDefault: function () { - this.defaultPrevented = !0; - var n = this.nativeEvent; - n && - (n.preventDefault - ? n.preventDefault() - : typeof n.returnValue != "unknown" && (n.returnValue = !1), - (this.isDefaultPrevented = gr)); - }, - stopPropagation: function () { - var n = this.nativeEvent; - n && - (n.stopPropagation - ? n.stopPropagation() - : typeof n.cancelBubble != "unknown" && (n.cancelBubble = !0), - (this.isPropagationStopped = gr)); - }, - persist: function () {}, - isPersistent: gr, - }), - t - ); -} -var vn = { - eventPhase: 0, - bubbles: 0, - cancelable: 0, - timeStamp: function (e) { - return e.timeStamp || Date.now(); - }, - defaultPrevented: 0, - isTrusted: 0, - }, - ou = _e(vn), - lr = H({}, vn, { view: 0, detail: 0 }), - ad = _e(lr), - Rl, - Ol, - kn, - fl = H({}, lr, { - screenX: 0, - screenY: 0, - clientX: 0, - clientY: 0, - pageX: 0, - pageY: 0, - ctrlKey: 0, - shiftKey: 0, - altKey: 0, - metaKey: 0, - getModifierState: su, - button: 0, - buttons: 0, - relatedTarget: function (e) { - return e.relatedTarget === void 0 - ? e.fromElement === e.srcElement - ? e.toElement - : e.fromElement - : e.relatedTarget; - }, - movementX: function (e) { - return "movementX" in e - ? e.movementX - : (e !== kn && - (kn && e.type === "mousemove" - ? ((Rl = e.screenX - kn.screenX), (Ol = e.screenY - kn.screenY)) - : (Ol = Rl = 0), - (kn = e)), - Rl); - }, - movementY: function (e) { - return "movementY" in e ? e.movementY : Ol; - }, - }), - to = _e(fl), - cd = H({}, fl, { dataTransfer: 0 }), - dd = _e(cd), - fd = H({}, lr, { relatedTarget: 0 }), - Dl = _e(fd), - pd = H({}, vn, { animationName: 0, elapsedTime: 0, pseudoElement: 0 }), - hd = _e(pd), - md = H({}, vn, { - clipboardData: function (e) { - return "clipboardData" in e ? e.clipboardData : window.clipboardData; - }, - }), - vd = _e(md), - gd = H({}, vn, { data: 0 }), - no = _e(gd), - yd = { - Esc: "Escape", - Spacebar: " ", - Left: "ArrowLeft", - Up: "ArrowUp", - Right: "ArrowRight", - Down: "ArrowDown", - Del: "Delete", - Win: "OS", - Menu: "ContextMenu", - Apps: "ContextMenu", - Scroll: "ScrollLock", - MozPrintableKey: "Unidentified", - }, - xd = { - 8: "Backspace", - 9: "Tab", - 12: "Clear", - 13: "Enter", - 16: "Shift", - 17: "Control", - 18: "Alt", - 19: "Pause", - 20: "CapsLock", - 27: "Escape", - 32: " ", - 33: "PageUp", - 34: "PageDown", - 35: "End", - 36: "Home", - 37: "ArrowLeft", - 38: "ArrowUp", - 39: "ArrowRight", - 40: "ArrowDown", - 45: "Insert", - 46: "Delete", - 112: "F1", - 113: "F2", - 114: "F3", - 115: "F4", - 116: "F5", - 117: "F6", - 118: "F7", - 119: "F8", - 120: "F9", - 121: "F10", - 122: "F11", - 123: "F12", - 144: "NumLock", - 145: "ScrollLock", - 224: "Meta", - }, - wd = { Alt: "altKey", Control: "ctrlKey", Meta: "metaKey", Shift: "shiftKey" }; -function Sd(e) { - var t = this.nativeEvent; - return t.getModifierState ? t.getModifierState(e) : (e = wd[e]) ? !!t[e] : !1; -} -function su() { - return Sd; -} -var kd = H({}, lr, { - key: function (e) { - if (e.key) { - var t = yd[e.key] || e.key; - if (t !== "Unidentified") return t; - } - return e.type === "keypress" - ? ((e = Ir(e)), e === 13 ? "Enter" : String.fromCharCode(e)) - : e.type === "keydown" || e.type === "keyup" - ? xd[e.keyCode] || "Unidentified" - : ""; - }, - code: 0, - location: 0, - ctrlKey: 0, - shiftKey: 0, - altKey: 0, - metaKey: 0, - repeat: 0, - locale: 0, - getModifierState: su, - charCode: function (e) { - return e.type === "keypress" ? Ir(e) : 0; - }, - keyCode: function (e) { - return e.type === "keydown" || e.type === "keyup" ? e.keyCode : 0; - }, - which: function (e) { - return e.type === "keypress" - ? Ir(e) - : e.type === "keydown" || e.type === "keyup" - ? e.keyCode - : 0; - }, - }), - jd = _e(kd), - _d = H({}, fl, { - pointerId: 0, - width: 0, - height: 0, - pressure: 0, - tangentialPressure: 0, - tiltX: 0, - tiltY: 0, - twist: 0, - pointerType: 0, - isPrimary: 0, - }), - ro = _e(_d), - Nd = H({}, lr, { - touches: 0, - targetTouches: 0, - changedTouches: 0, - altKey: 0, - metaKey: 0, - ctrlKey: 0, - shiftKey: 0, - getModifierState: su, - }), - Ed = _e(Nd), - Cd = H({}, vn, { propertyName: 0, elapsedTime: 0, pseudoElement: 0 }), - Pd = _e(Cd), - Td = H({}, fl, { - deltaX: function (e) { - return "deltaX" in e ? e.deltaX : "wheelDeltaX" in e ? -e.wheelDeltaX : 0; - }, - deltaY: function (e) { - return "deltaY" in e - ? e.deltaY - : "wheelDeltaY" in e - ? -e.wheelDeltaY - : "wheelDelta" in e - ? -e.wheelDelta - : 0; - }, - deltaZ: 0, - deltaMode: 0, - }), - zd = _e(Td), - Ld = [9, 13, 27, 32], - au = be && "CompositionEvent" in window, - In = null; -be && "documentMode" in document && (In = document.documentMode); -var Id = be && "TextEvent" in window && !In, - Bs = be && (!au || (In && 8 < In && 11 >= In)), - lo = " ", - io = !1; -function Ws(e, t) { - switch (e) { - case "keyup": - return Ld.indexOf(t.keyCode) !== -1; - case "keydown": - return t.keyCode !== 229; - case "keypress": - case "mousedown": - case "focusout": - return !0; - default: - return !1; - } -} -function Hs(e) { - return (e = e.detail), typeof e == "object" && "data" in e ? e.data : null; -} -var Qt = !1; -function Rd(e, t) { - switch (e) { - case "compositionend": - return Hs(t); - case "keypress": - return t.which !== 32 ? null : ((io = !0), lo); - case "textInput": - return (e = t.data), e === lo && io ? null : e; - default: - return null; - } -} -function Od(e, t) { - if (Qt) - return e === "compositionend" || (!au && Ws(e, t)) - ? ((e = Vs()), (Lr = uu = at = null), (Qt = !1), e) - : null; - switch (e) { - case "paste": - return null; - case "keypress": - if (!(t.ctrlKey || t.altKey || t.metaKey) || (t.ctrlKey && t.altKey)) { - if (t.char && 1 < t.char.length) return t.char; - if (t.which) return String.fromCharCode(t.which); - } - return null; - case "compositionend": - return Bs && t.locale !== "ko" ? null : t.data; - default: - return null; - } -} -var Dd = { - color: !0, - date: !0, - datetime: !0, - "datetime-local": !0, - email: !0, - month: !0, - number: !0, - password: !0, - range: !0, - search: !0, - tel: !0, - text: !0, - time: !0, - url: !0, - week: !0, -}; -function uo(e) { - var t = e && e.nodeName && e.nodeName.toLowerCase(); - return t === "input" ? !!Dd[e.type] : t === "textarea"; -} -function Qs(e, t, n, r) { - ks(r), - (t = Yr(t, "onChange")), - 0 < t.length && - ((n = new ou("onChange", "change", null, n, r)), - e.push({ event: n, listeners: t })); -} -var Rn = null, - Qn = null; -function Md(e) { - na(e, 0); -} -function pl(e) { - var t = Xt(e); - if (ms(t)) return e; -} -function Fd(e, t) { - if (e === "change") return t; -} -var Ks = !1; -if (be) { - var Ml; - if (be) { - var Fl = "oninput" in document; - if (!Fl) { - var oo = document.createElement("div"); - oo.setAttribute("oninput", "return;"), - (Fl = typeof oo.oninput == "function"); - } - Ml = Fl; - } else Ml = !1; - Ks = Ml && (!document.documentMode || 9 < document.documentMode); -} -function so() { - Rn && (Rn.detachEvent("onpropertychange", Ys), (Qn = Rn = null)); -} -function Ys(e) { - if (e.propertyName === "value" && pl(Qn)) { - var t = []; - Qs(t, Qn, e, tu(e)), Es(Md, t); - } -} -function Ud(e, t, n) { - e === "focusin" - ? (so(), (Rn = t), (Qn = n), Rn.attachEvent("onpropertychange", Ys)) - : e === "focusout" && so(); -} -function Ad(e) { - if (e === "selectionchange" || e === "keyup" || e === "keydown") return pl(Qn); -} -function $d(e, t) { - if (e === "click") return pl(t); -} -function Vd(e, t) { - if (e === "input" || e === "change") return pl(t); -} -function Bd(e, t) { - return (e === t && (e !== 0 || 1 / e === 1 / t)) || (e !== e && t !== t); -} -var Ae = typeof Object.is == "function" ? Object.is : Bd; -function Kn(e, t) { - if (Ae(e, t)) return !0; - if (typeof e != "object" || e === null || typeof t != "object" || t === null) - return !1; - var n = Object.keys(e), - r = Object.keys(t); - if (n.length !== r.length) return !1; - for (r = 0; r < n.length; r++) { - var l = n[r]; - if (!bl.call(t, l) || !Ae(e[l], t[l])) return !1; - } - return !0; -} -function ao(e) { - for (; e && e.firstChild; ) e = e.firstChild; - return e; -} -function co(e, t) { - var n = ao(e); - e = 0; - for (var r; n; ) { - if (n.nodeType === 3) { - if (((r = e + n.textContent.length), e <= t && r >= t)) - return { node: n, offset: t - e }; - e = r; - } - e: { - for (; n; ) { - if (n.nextSibling) { - n = n.nextSibling; - break e; - } - n = n.parentNode; - } - n = void 0; - } - n = ao(n); - } -} -function Xs(e, t) { - return e && t - ? e === t - ? !0 - : e && e.nodeType === 3 - ? !1 - : t && t.nodeType === 3 - ? Xs(e, t.parentNode) - : "contains" in e - ? e.contains(t) - : e.compareDocumentPosition - ? !!(e.compareDocumentPosition(t) & 16) - : !1 - : !1; -} -function Gs() { - for (var e = window, t = $r(); t instanceof e.HTMLIFrameElement; ) { - try { - var n = typeof t.contentWindow.location.href == "string"; - } catch { - n = !1; - } - if (n) e = t.contentWindow; - else break; - t = $r(e.document); - } - return t; -} -function cu(e) { - var t = e && e.nodeName && e.nodeName.toLowerCase(); - return ( - t && - ((t === "input" && - (e.type === "text" || - e.type === "search" || - e.type === "tel" || - e.type === "url" || - e.type === "password")) || - t === "textarea" || - e.contentEditable === "true") - ); -} -function Wd(e) { - var t = Gs(), - n = e.focusedElem, - r = e.selectionRange; - if ( - t !== n && - n && - n.ownerDocument && - Xs(n.ownerDocument.documentElement, n) - ) { - if (r !== null && cu(n)) { - if ( - ((t = r.start), (e = r.end), e === void 0 && (e = t), "selectionStart" in n) - ) - (n.selectionStart = t), (n.selectionEnd = Math.min(e, n.value.length)); - else if ( - ((e = ((t = n.ownerDocument || document) && t.defaultView) || window), - e.getSelection) - ) { - e = e.getSelection(); - var l = n.textContent.length, - i = Math.min(r.start, l); - (r = r.end === void 0 ? i : Math.min(r.end, l)), - !e.extend && i > r && ((l = r), (r = i), (i = l)), - (l = co(n, i)); - var u = co(n, r); - l && - u && - (e.rangeCount !== 1 || - e.anchorNode !== l.node || - e.anchorOffset !== l.offset || - e.focusNode !== u.node || - e.focusOffset !== u.offset) && - ((t = t.createRange()), - t.setStart(l.node, l.offset), - e.removeAllRanges(), - i > r - ? (e.addRange(t), e.extend(u.node, u.offset)) - : (t.setEnd(u.node, u.offset), e.addRange(t))); - } - } - for (t = [], e = n; (e = e.parentNode); ) - e.nodeType === 1 && - t.push({ element: e, left: e.scrollLeft, top: e.scrollTop }); - for (typeof n.focus == "function" && n.focus(), n = 0; n < t.length; n++) - (e = t[n]), (e.element.scrollLeft = e.left), (e.element.scrollTop = e.top); - } -} -var Hd = be && "documentMode" in document && 11 >= document.documentMode, - Kt = null, - yi = null, - On = null, - xi = !1; -function fo(e, t, n) { - var r = n.window === n ? n.document : n.nodeType === 9 ? n : n.ownerDocument; - xi || - Kt == null || - Kt !== $r(r) || - ((r = Kt), - "selectionStart" in r && cu(r) - ? (r = { start: r.selectionStart, end: r.selectionEnd }) - : ((r = ( - (r.ownerDocument && r.ownerDocument.defaultView) || - window - ).getSelection()), - (r = { - anchorNode: r.anchorNode, - anchorOffset: r.anchorOffset, - focusNode: r.focusNode, - focusOffset: r.focusOffset, - })), - (On && Kn(On, r)) || - ((On = r), - (r = Yr(yi, "onSelect")), - 0 < r.length && - ((t = new ou("onSelect", "select", null, t, n)), - e.push({ event: t, listeners: r }), - (t.target = Kt)))); -} -function yr(e, t) { - var n = {}; - return ( - (n[e.toLowerCase()] = t.toLowerCase()), - (n["Webkit" + e] = "webkit" + t), - (n["Moz" + e] = "moz" + t), - n - ); -} -var Yt = { - animationend: yr("Animation", "AnimationEnd"), - animationiteration: yr("Animation", "AnimationIteration"), - animationstart: yr("Animation", "AnimationStart"), - transitionend: yr("Transition", "TransitionEnd"), - }, - Ul = {}, - Zs = {}; -be && - ((Zs = document.createElement("div").style), - "AnimationEvent" in window || - (delete Yt.animationend.animation, - delete Yt.animationiteration.animation, - delete Yt.animationstart.animation), - "TransitionEvent" in window || delete Yt.transitionend.transition); -function hl(e) { - if (Ul[e]) return Ul[e]; - if (!Yt[e]) return e; - var t = Yt[e], - n; - for (n in t) if (t.hasOwnProperty(n) && n in Zs) return (Ul[e] = t[n]); - return e; -} -var Js = hl("animationend"), - qs = hl("animationiteration"), - bs = hl("animationstart"), - ea = hl("transitionend"), - ta = new Map(), - po = - "abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split( - " ", - ); -function kt(e, t) { - ta.set(e, t), $t(t, [e]); -} -for (var Al = 0; Al < po.length; Al++) { - var $l = po[Al], - Qd = $l.toLowerCase(), - Kd = $l[0].toUpperCase() + $l.slice(1); - kt(Qd, "on" + Kd); -} -kt(Js, "onAnimationEnd"); -kt(qs, "onAnimationIteration"); -kt(bs, "onAnimationStart"); -kt("dblclick", "onDoubleClick"); -kt("focusin", "onFocus"); -kt("focusout", "onBlur"); -kt(ea, "onTransitionEnd"); -sn("onMouseEnter", ["mouseout", "mouseover"]); -sn("onMouseLeave", ["mouseout", "mouseover"]); -sn("onPointerEnter", ["pointerout", "pointerover"]); -sn("onPointerLeave", ["pointerout", "pointerover"]); -$t( - "onChange", - "change click focusin focusout input keydown keyup selectionchange".split(" "), -); -$t( - "onSelect", - "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split( - " ", - ), -); -$t("onBeforeInput", ["compositionend", "keypress", "textInput", "paste"]); -$t( - "onCompositionEnd", - "compositionend focusout keydown keypress keyup mousedown".split(" "), -); -$t( - "onCompositionStart", - "compositionstart focusout keydown keypress keyup mousedown".split(" "), -); -$t( - "onCompositionUpdate", - "compositionupdate focusout keydown keypress keyup mousedown".split(" "), -); -var Tn = - "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split( - " ", - ), - Yd = new Set("cancel close invalid load scroll toggle".split(" ").concat(Tn)); -function ho(e, t, n) { - var r = e.type || "unknown-event"; - (e.currentTarget = n), Qc(r, t, void 0, e), (e.currentTarget = null); -} -function na(e, t) { - t = (t & 4) !== 0; - for (var n = 0; n < e.length; n++) { - var r = e[n], - l = r.event; - r = r.listeners; - e: { - var i = void 0; - if (t) - for (var u = r.length - 1; 0 <= u; u--) { - var s = r[u], - a = s.instance, - f = s.currentTarget; - if (((s = s.listener), a !== i && l.isPropagationStopped())) break e; - ho(l, s, f), (i = a); - } - else - for (u = 0; u < r.length; u++) { - if ( - ((s = r[u]), - (a = s.instance), - (f = s.currentTarget), - (s = s.listener), - a !== i && l.isPropagationStopped()) - ) - break e; - ho(l, s, f), (i = a); - } - } - } - if (Br) throw ((e = hi), (Br = !1), (hi = null), e); -} -function A(e, t) { - var n = t[_i]; - n === void 0 && (n = t[_i] = new Set()); - var r = e + "__bubble"; - n.has(r) || (ra(t, e, 2, !1), n.add(r)); -} -function Vl(e, t, n) { - var r = 0; - t && (r |= 4), ra(n, e, r, t); -} -var xr = "_reactListening" + Math.random().toString(36).slice(2); -function Yn(e) { - if (!e[xr]) { - (e[xr] = !0), - cs.forEach(function (n) { - n !== "selectionchange" && (Yd.has(n) || Vl(n, !1, e), Vl(n, !0, e)); - }); - var t = e.nodeType === 9 ? e : e.ownerDocument; - t === null || t[xr] || ((t[xr] = !0), Vl("selectionchange", !1, t)); - } -} -function ra(e, t, n, r) { - switch ($s(t)) { - case 1: - var l = od; - break; - case 4: - l = sd; - break; - default: - l = iu; - } - (n = l.bind(null, t, n, e)), - (l = void 0), - !pi || (t !== "touchstart" && t !== "touchmove" && t !== "wheel") || (l = !0), - r - ? l !== void 0 - ? e.addEventListener(t, n, { capture: !0, passive: l }) - : e.addEventListener(t, n, !0) - : l !== void 0 - ? e.addEventListener(t, n, { passive: l }) - : e.addEventListener(t, n, !1); -} -function Bl(e, t, n, r, l) { - var i = r; - if (!(t & 1) && !(t & 2) && r !== null) - e: for (;;) { - if (r === null) return; - var u = r.tag; - if (u === 3 || u === 4) { - var s = r.stateNode.containerInfo; - if (s === l || (s.nodeType === 8 && s.parentNode === l)) break; - if (u === 4) - for (u = r.return; u !== null; ) { - var a = u.tag; - if ( - (a === 3 || a === 4) && - ((a = u.stateNode.containerInfo), - a === l || (a.nodeType === 8 && a.parentNode === l)) - ) - return; - u = u.return; - } - for (; s !== null; ) { - if (((u = Tt(s)), u === null)) return; - if (((a = u.tag), a === 5 || a === 6)) { - r = i = u; - continue e; - } - s = s.parentNode; - } - } - r = r.return; - } - Es(function () { - var f = i, - v = tu(n), - g = []; - e: { - var h = ta.get(e); - if (h !== void 0) { - var m = ou, - x = e; - switch (e) { - case "keypress": - if (Ir(n) === 0) break e; - case "keydown": - case "keyup": - m = jd; - break; - case "focusin": - (x = "focus"), (m = Dl); - break; - case "focusout": - (x = "blur"), (m = Dl); - break; - case "beforeblur": - case "afterblur": - m = Dl; - break; - case "click": - if (n.button === 2) break e; - case "auxclick": - case "dblclick": - case "mousedown": - case "mousemove": - case "mouseup": - case "mouseout": - case "mouseover": - case "contextmenu": - m = to; - break; - case "drag": - case "dragend": - case "dragenter": - case "dragexit": - case "dragleave": - case "dragover": - case "dragstart": - case "drop": - m = dd; - break; - case "touchcancel": - case "touchend": - case "touchmove": - case "touchstart": - m = Ed; - break; - case Js: - case qs: - case bs: - m = hd; - break; - case ea: - m = Pd; - break; - case "scroll": - m = ad; - break; - case "wheel": - m = zd; - break; - case "copy": - case "cut": - case "paste": - m = vd; - break; - case "gotpointercapture": - case "lostpointercapture": - case "pointercancel": - case "pointerdown": - case "pointermove": - case "pointerout": - case "pointerover": - case "pointerup": - m = ro; - } - var S = (t & 4) !== 0, - L = !S && e === "scroll", - p = S ? (h !== null ? h + "Capture" : null) : h; - S = []; - for (var c = f, d; c !== null; ) { - d = c; - var y = d.stateNode; - if ( - (d.tag === 5 && - y !== null && - ((d = y), - p !== null && ((y = Vn(c, p)), y != null && S.push(Xn(c, y, d)))), - L) - ) - break; - c = c.return; - } - 0 < S.length && - ((h = new m(h, x, null, n, v)), g.push({ event: h, listeners: S })); - } - } - if (!(t & 7)) { - e: { - if ( - ((h = e === "mouseover" || e === "pointerover"), - (m = e === "mouseout" || e === "pointerout"), - h && - n !== di && - (x = n.relatedTarget || n.fromElement) && - (Tt(x) || x[et])) - ) - break e; - if ( - (m || h) && - ((h = - v.window === v - ? v - : (h = v.ownerDocument) - ? h.defaultView || h.parentWindow - : window), - m - ? ((x = n.relatedTarget || n.toElement), - (m = f), - (x = x ? Tt(x) : null), - x !== null && - ((L = Vt(x)), x !== L || (x.tag !== 5 && x.tag !== 6)) && - (x = null)) - : ((m = null), (x = f)), - m !== x) - ) { - if ( - ((S = to), - (y = "onMouseLeave"), - (p = "onMouseEnter"), - (c = "mouse"), - (e === "pointerout" || e === "pointerover") && - ((S = ro), - (y = "onPointerLeave"), - (p = "onPointerEnter"), - (c = "pointer")), - (L = m == null ? h : Xt(m)), - (d = x == null ? h : Xt(x)), - (h = new S(y, c + "leave", m, n, v)), - (h.target = L), - (h.relatedTarget = d), - (y = null), - Tt(v) === f && - ((S = new S(p, c + "enter", x, n, v)), - (S.target = d), - (S.relatedTarget = L), - (y = S)), - (L = y), - m && x) - ) - t: { - for (S = m, p = x, c = 0, d = S; d; d = Bt(d)) c++; - for (d = 0, y = p; y; y = Bt(y)) d++; - for (; 0 < c - d; ) (S = Bt(S)), c--; - for (; 0 < d - c; ) (p = Bt(p)), d--; - for (; c--; ) { - if (S === p || (p !== null && S === p.alternate)) break t; - (S = Bt(S)), (p = Bt(p)); - } - S = null; - } - else S = null; - m !== null && mo(g, h, m, S, !1), - x !== null && L !== null && mo(g, L, x, S, !0); - } - } - e: { - if ( - ((h = f ? Xt(f) : window), - (m = h.nodeName && h.nodeName.toLowerCase()), - m === "select" || (m === "input" && h.type === "file")) - ) - var k = Fd; - else if (uo(h)) - if (Ks) k = Vd; - else { - k = Ad; - var N = Ud; - } - else - (m = h.nodeName) && - m.toLowerCase() === "input" && - (h.type === "checkbox" || h.type === "radio") && - (k = $d); - if (k && (k = k(e, f))) { - Qs(g, k, n, v); - break e; - } - N && N(e, h, f), - e === "focusout" && - (N = h._wrapperState) && - N.controlled && - h.type === "number" && - ui(h, "number", h.value); - } - switch (((N = f ? Xt(f) : window), e)) { - case "focusin": - (uo(N) || N.contentEditable === "true") && - ((Kt = N), (yi = f), (On = null)); - break; - case "focusout": - On = yi = Kt = null; - break; - case "mousedown": - xi = !0; - break; - case "contextmenu": - case "mouseup": - case "dragend": - (xi = !1), fo(g, n, v); - break; - case "selectionchange": - if (Hd) break; - case "keydown": - case "keyup": - fo(g, n, v); - } - var E; - if (au) - e: { - switch (e) { - case "compositionstart": - var C = "onCompositionStart"; - break e; - case "compositionend": - C = "onCompositionEnd"; - break e; - case "compositionupdate": - C = "onCompositionUpdate"; - break e; - } - C = void 0; - } - else - Qt - ? Ws(e, n) && (C = "onCompositionEnd") - : e === "keydown" && n.keyCode === 229 && (C = "onCompositionStart"); - C && - (Bs && - n.locale !== "ko" && - (Qt || C !== "onCompositionStart" - ? C === "onCompositionEnd" && Qt && (E = Vs()) - : ((at = v), - (uu = "value" in at ? at.value : at.textContent), - (Qt = !0))), - (N = Yr(f, C)), - 0 < N.length && - ((C = new no(C, e, null, n, v)), - g.push({ event: C, listeners: N }), - E ? (C.data = E) : ((E = Hs(n)), E !== null && (C.data = E)))), - (E = Id ? Rd(e, n) : Od(e, n)) && - ((f = Yr(f, "onBeforeInput")), - 0 < f.length && - ((v = new no("onBeforeInput", "beforeinput", null, n, v)), - g.push({ event: v, listeners: f }), - (v.data = E))); - } - na(g, t); - }); -} -function Xn(e, t, n) { - return { instance: e, listener: t, currentTarget: n }; -} -function Yr(e, t) { - for (var n = t + "Capture", r = []; e !== null; ) { - var l = e, - i = l.stateNode; - l.tag === 5 && - i !== null && - ((l = i), - (i = Vn(e, n)), - i != null && r.unshift(Xn(e, i, l)), - (i = Vn(e, t)), - i != null && r.push(Xn(e, i, l))), - (e = e.return); - } - return r; -} -function Bt(e) { - if (e === null) return null; - do e = e.return; - while (e && e.tag !== 5); - return e || null; -} -function mo(e, t, n, r, l) { - for (var i = t._reactName, u = []; n !== null && n !== r; ) { - var s = n, - a = s.alternate, - f = s.stateNode; - if (a !== null && a === r) break; - s.tag === 5 && - f !== null && - ((s = f), - l - ? ((a = Vn(n, i)), a != null && u.unshift(Xn(n, a, s))) - : l || ((a = Vn(n, i)), a != null && u.push(Xn(n, a, s)))), - (n = n.return); - } - u.length !== 0 && e.push({ event: t, listeners: u }); -} -var Xd = /\r\n?/g, - Gd = /\u0000|\uFFFD/g; -function vo(e) { - return (typeof e == "string" ? e : "" + e) - .replace( - Xd, - ` -`, - ) - .replace(Gd, ""); -} -function wr(e, t, n) { - if (((t = vo(t)), vo(e) !== t && n)) throw Error(w(425)); -} -function Xr() {} -var wi = null, - Si = null; -function ki(e, t) { - return ( - e === "textarea" || - e === "noscript" || - typeof t.children == "string" || - typeof t.children == "number" || - (typeof t.dangerouslySetInnerHTML == "object" && - t.dangerouslySetInnerHTML !== null && - t.dangerouslySetInnerHTML.__html != null) - ); -} -var ji = typeof setTimeout == "function" ? setTimeout : void 0, - Zd = typeof clearTimeout == "function" ? clearTimeout : void 0, - go = typeof Promise == "function" ? Promise : void 0, - Jd = - typeof queueMicrotask == "function" - ? queueMicrotask - : typeof go < "u" - ? function (e) { - return go.resolve(null).then(e).catch(qd); - } - : ji; -function qd(e) { - setTimeout(function () { - throw e; - }); -} -function Wl(e, t) { - var n = t, - r = 0; - do { - var l = n.nextSibling; - if ((e.removeChild(n), l && l.nodeType === 8)) - if (((n = l.data), n === "/$")) { - if (r === 0) { - e.removeChild(l), Hn(t); - return; - } - r--; - } else (n !== "$" && n !== "$?" && n !== "$!") || r++; - n = l; - } while (n); - Hn(t); -} -function ht(e) { - for (; e != null; e = e.nextSibling) { - var t = e.nodeType; - if (t === 1 || t === 3) break; - if (t === 8) { - if (((t = e.data), t === "$" || t === "$!" || t === "$?")) break; - if (t === "/$") return null; - } - } - return e; -} -function yo(e) { - e = e.previousSibling; - for (var t = 0; e; ) { - if (e.nodeType === 8) { - var n = e.data; - if (n === "$" || n === "$!" || n === "$?") { - if (t === 0) return e; - t--; - } else n === "/$" && t++; - } - e = e.previousSibling; - } - return null; -} -var gn = Math.random().toString(36).slice(2), - Be = "__reactFiber$" + gn, - Gn = "__reactProps$" + gn, - et = "__reactContainer$" + gn, - _i = "__reactEvents$" + gn, - bd = "__reactListeners$" + gn, - ef = "__reactHandles$" + gn; -function Tt(e) { - var t = e[Be]; - if (t) return t; - for (var n = e.parentNode; n; ) { - if ((t = n[et] || n[Be])) { - if ( - ((n = t.alternate), t.child !== null || (n !== null && n.child !== null)) - ) - for (e = yo(e); e !== null; ) { - if ((n = e[Be])) return n; - e = yo(e); - } - return t; - } - (e = n), (n = e.parentNode); - } - return null; -} -function ir(e) { - return ( - (e = e[Be] || e[et]), - !e || (e.tag !== 5 && e.tag !== 6 && e.tag !== 13 && e.tag !== 3) ? null : e - ); -} -function Xt(e) { - if (e.tag === 5 || e.tag === 6) return e.stateNode; - throw Error(w(33)); -} -function ml(e) { - return e[Gn] || null; -} -var Ni = [], - Gt = -1; -function jt(e) { - return { current: e }; -} -function $(e) { - 0 > Gt || ((e.current = Ni[Gt]), (Ni[Gt] = null), Gt--); -} -function U(e, t) { - Gt++, (Ni[Gt] = e.current), (e.current = t); -} -var wt = {}, - se = jt(wt), - me = jt(!1), - Ot = wt; -function an(e, t) { - var n = e.type.contextTypes; - if (!n) return wt; - var r = e.stateNode; - if (r && r.__reactInternalMemoizedUnmaskedChildContext === t) - return r.__reactInternalMemoizedMaskedChildContext; - var l = {}, - i; - for (i in n) l[i] = t[i]; - return ( - r && - ((e = e.stateNode), - (e.__reactInternalMemoizedUnmaskedChildContext = t), - (e.__reactInternalMemoizedMaskedChildContext = l)), - l - ); -} -function ve(e) { - return (e = e.childContextTypes), e != null; -} -function Gr() { - $(me), $(se); -} -function xo(e, t, n) { - if (se.current !== wt) throw Error(w(168)); - U(se, t), U(me, n); -} -function la(e, t, n) { - var r = e.stateNode; - if (((t = t.childContextTypes), typeof r.getChildContext != "function")) - return n; - r = r.getChildContext(); - for (var l in r) if (!(l in t)) throw Error(w(108, Uc(e) || "Unknown", l)); - return H({}, n, r); -} -function Zr(e) { - return ( - (e = - ((e = e.stateNode) && e.__reactInternalMemoizedMergedChildContext) || wt), - (Ot = se.current), - U(se, e), - U(me, me.current), - !0 - ); -} -function wo(e, t, n) { - var r = e.stateNode; - if (!r) throw Error(w(169)); - n - ? ((e = la(e, t, Ot)), - (r.__reactInternalMemoizedMergedChildContext = e), - $(me), - $(se), - U(se, e)) - : $(me), - U(me, n); -} -var Xe = null, - vl = !1, - Hl = !1; -function ia(e) { - Xe === null ? (Xe = [e]) : Xe.push(e); -} -function tf(e) { - (vl = !0), ia(e); -} -function _t() { - if (!Hl && Xe !== null) { - Hl = !0; - var e = 0, - t = F; - try { - var n = Xe; - for (F = 1; e < n.length; e++) { - var r = n[e]; - do r = r(!0); - while (r !== null); - } - (Xe = null), (vl = !1); - } catch (l) { - throw (Xe !== null && (Xe = Xe.slice(e + 1)), zs(nu, _t), l); - } finally { - (F = t), (Hl = !1); - } - } - return null; -} -var Zt = [], - Jt = 0, - Jr = null, - qr = 0, - Ne = [], - Ee = 0, - Dt = null, - Ge = 1, - Ze = ""; -function Ct(e, t) { - (Zt[Jt++] = qr), (Zt[Jt++] = Jr), (Jr = e), (qr = t); -} -function ua(e, t, n) { - (Ne[Ee++] = Ge), (Ne[Ee++] = Ze), (Ne[Ee++] = Dt), (Dt = e); - var r = Ge; - e = Ze; - var l = 32 - Fe(r) - 1; - (r &= ~(1 << l)), (n += 1); - var i = 32 - Fe(t) + l; - if (30 < i) { - var u = l - (l % 5); - (i = (r & ((1 << u) - 1)).toString(32)), - (r >>= u), - (l -= u), - (Ge = (1 << (32 - Fe(t) + l)) | (n << l) | r), - (Ze = i + e); - } else (Ge = (1 << i) | (n << l) | r), (Ze = e); -} -function du(e) { - e.return !== null && (Ct(e, 1), ua(e, 1, 0)); -} -function fu(e) { - for (; e === Jr; ) - (Jr = Zt[--Jt]), (Zt[Jt] = null), (qr = Zt[--Jt]), (Zt[Jt] = null); - for (; e === Dt; ) - (Dt = Ne[--Ee]), - (Ne[Ee] = null), - (Ze = Ne[--Ee]), - (Ne[Ee] = null), - (Ge = Ne[--Ee]), - (Ne[Ee] = null); -} -var Se = null, - we = null, - V = !1, - Me = null; -function oa(e, t) { - var n = Pe(5, null, null, 0); - (n.elementType = "DELETED"), - (n.stateNode = t), - (n.return = e), - (t = e.deletions), - t === null ? ((e.deletions = [n]), (e.flags |= 16)) : t.push(n); -} -function So(e, t) { - switch (e.tag) { - case 5: - var n = e.type; - return ( - (t = - t.nodeType !== 1 || n.toLowerCase() !== t.nodeName.toLowerCase() - ? null - : t), - t !== null ? ((e.stateNode = t), (Se = e), (we = ht(t.firstChild)), !0) : !1 - ); - case 6: - return ( - (t = e.pendingProps === "" || t.nodeType !== 3 ? null : t), - t !== null ? ((e.stateNode = t), (Se = e), (we = null), !0) : !1 - ); - case 13: - return ( - (t = t.nodeType !== 8 ? null : t), - t !== null - ? ((n = Dt !== null ? { id: Ge, overflow: Ze } : null), - (e.memoizedState = { - dehydrated: t, - treeContext: n, - retryLane: 1073741824, - }), - (n = Pe(18, null, null, 0)), - (n.stateNode = t), - (n.return = e), - (e.child = n), - (Se = e), - (we = null), - !0) - : !1 - ); - default: - return !1; - } -} -function Ei(e) { - return (e.mode & 1) !== 0 && (e.flags & 128) === 0; -} -function Ci(e) { - if (V) { - var t = we; - if (t) { - var n = t; - if (!So(e, t)) { - if (Ei(e)) throw Error(w(418)); - t = ht(n.nextSibling); - var r = Se; - t && So(e, t) - ? oa(r, n) - : ((e.flags = (e.flags & -4097) | 2), (V = !1), (Se = e)); - } - } else { - if (Ei(e)) throw Error(w(418)); - (e.flags = (e.flags & -4097) | 2), (V = !1), (Se = e); - } - } -} -function ko(e) { - for (e = e.return; e !== null && e.tag !== 5 && e.tag !== 3 && e.tag !== 13; ) - e = e.return; - Se = e; -} -function Sr(e) { - if (e !== Se) return !1; - if (!V) return ko(e), (V = !0), !1; - var t; - if ( - ((t = e.tag !== 3) && - !(t = e.tag !== 5) && - ((t = e.type), - (t = t !== "head" && t !== "body" && !ki(e.type, e.memoizedProps))), - t && (t = we)) - ) { - if (Ei(e)) throw (sa(), Error(w(418))); - for (; t; ) oa(e, t), (t = ht(t.nextSibling)); - } - if ((ko(e), e.tag === 13)) { - if (((e = e.memoizedState), (e = e !== null ? e.dehydrated : null), !e)) - throw Error(w(317)); - e: { - for (e = e.nextSibling, t = 0; e; ) { - if (e.nodeType === 8) { - var n = e.data; - if (n === "/$") { - if (t === 0) { - we = ht(e.nextSibling); - break e; - } - t--; - } else (n !== "$" && n !== "$!" && n !== "$?") || t++; - } - e = e.nextSibling; - } - we = null; - } - } else we = Se ? ht(e.stateNode.nextSibling) : null; - return !0; -} -function sa() { - for (var e = we; e; ) e = ht(e.nextSibling); -} -function cn() { - (we = Se = null), (V = !1); -} -function pu(e) { - Me === null ? (Me = [e]) : Me.push(e); -} -var nf = rt.ReactCurrentBatchConfig; -function jn(e, t, n) { - if ( - ((e = n.ref), e !== null && typeof e != "function" && typeof e != "object") - ) { - if (n._owner) { - if (((n = n._owner), n)) { - if (n.tag !== 1) throw Error(w(309)); - var r = n.stateNode; - } - if (!r) throw Error(w(147, e)); - var l = r, - i = "" + e; - return t !== null && - t.ref !== null && - typeof t.ref == "function" && - t.ref._stringRef === i - ? t.ref - : ((t = function (u) { - var s = l.refs; - u === null ? delete s[i] : (s[i] = u); - }), - (t._stringRef = i), - t); - } - if (typeof e != "string") throw Error(w(284)); - if (!n._owner) throw Error(w(290, e)); - } - return e; -} -function kr(e, t) { - throw ( - ((e = Object.prototype.toString.call(t)), - Error( - w( - 31, - e === "[object Object]" - ? "object with keys {" + Object.keys(t).join(", ") + "}" - : e, - ), - )) - ); -} -function jo(e) { - var t = e._init; - return t(e._payload); -} -function aa(e) { - function t(p, c) { - if (e) { - var d = p.deletions; - d === null ? ((p.deletions = [c]), (p.flags |= 16)) : d.push(c); - } - } - function n(p, c) { - if (!e) return null; - for (; c !== null; ) t(p, c), (c = c.sibling); - return null; - } - function r(p, c) { - for (p = new Map(); c !== null; ) - c.key !== null ? p.set(c.key, c) : p.set(c.index, c), (c = c.sibling); - return p; - } - function l(p, c) { - return (p = yt(p, c)), (p.index = 0), (p.sibling = null), p; - } - function i(p, c, d) { - return ( - (p.index = d), - e - ? ((d = p.alternate), - d !== null - ? ((d = d.index), d < c ? ((p.flags |= 2), c) : d) - : ((p.flags |= 2), c)) - : ((p.flags |= 1048576), c) - ); - } - function u(p) { - return e && p.alternate === null && (p.flags |= 2), p; - } - function s(p, c, d, y) { - return c === null || c.tag !== 6 - ? ((c = Jl(d, p.mode, y)), (c.return = p), c) - : ((c = l(c, d)), (c.return = p), c); - } - function a(p, c, d, y) { - var k = d.type; - return k === Ht - ? v(p, c, d.props.children, y, d.key) - : c !== null && - (c.elementType === k || - (typeof k == "object" && - k !== null && - k.$$typeof === it && - jo(k) === c.type)) - ? ((y = l(c, d.props)), (y.ref = jn(p, c, d)), (y.return = p), y) - : ((y = Ar(d.type, d.key, d.props, null, p.mode, y)), - (y.ref = jn(p, c, d)), - (y.return = p), - y); - } - function f(p, c, d, y) { - return c === null || - c.tag !== 4 || - c.stateNode.containerInfo !== d.containerInfo || - c.stateNode.implementation !== d.implementation - ? ((c = ql(d, p.mode, y)), (c.return = p), c) - : ((c = l(c, d.children || [])), (c.return = p), c); - } - function v(p, c, d, y, k) { - return c === null || c.tag !== 7 - ? ((c = Rt(d, p.mode, y, k)), (c.return = p), c) - : ((c = l(c, d)), (c.return = p), c); - } - function g(p, c, d) { - if ((typeof c == "string" && c !== "") || typeof c == "number") - return (c = Jl("" + c, p.mode, d)), (c.return = p), c; - if (typeof c == "object" && c !== null) { - switch (c.$$typeof) { - case dr: - return ( - (d = Ar(c.type, c.key, c.props, null, p.mode, d)), - (d.ref = jn(p, null, c)), - (d.return = p), - d - ); - case Wt: - return (c = ql(c, p.mode, d)), (c.return = p), c; - case it: - var y = c._init; - return g(p, y(c._payload), d); - } - if (Cn(c) || yn(c)) return (c = Rt(c, p.mode, d, null)), (c.return = p), c; - kr(p, c); - } - return null; - } - function h(p, c, d, y) { - var k = c !== null ? c.key : null; - if ((typeof d == "string" && d !== "") || typeof d == "number") - return k !== null ? null : s(p, c, "" + d, y); - if (typeof d == "object" && d !== null) { - switch (d.$$typeof) { - case dr: - return d.key === k ? a(p, c, d, y) : null; - case Wt: - return d.key === k ? f(p, c, d, y) : null; - case it: - return (k = d._init), h(p, c, k(d._payload), y); - } - if (Cn(d) || yn(d)) return k !== null ? null : v(p, c, d, y, null); - kr(p, d); - } - return null; - } - function m(p, c, d, y, k) { - if ((typeof y == "string" && y !== "") || typeof y == "number") - return (p = p.get(d) || null), s(c, p, "" + y, k); - if (typeof y == "object" && y !== null) { - switch (y.$$typeof) { - case dr: - return (p = p.get(y.key === null ? d : y.key) || null), a(c, p, y, k); - case Wt: - return (p = p.get(y.key === null ? d : y.key) || null), f(c, p, y, k); - case it: - var N = y._init; - return m(p, c, d, N(y._payload), k); - } - if (Cn(y) || yn(y)) return (p = p.get(d) || null), v(c, p, y, k, null); - kr(c, y); - } - return null; - } - function x(p, c, d, y) { - for ( - var k = null, N = null, E = c, C = (c = 0), D = null; - E !== null && C < d.length; - C++ - ) { - E.index > C ? ((D = E), (E = null)) : (D = E.sibling); - var z = h(p, E, d[C], y); - if (z === null) { - E === null && (E = D); - break; - } - e && E && z.alternate === null && t(p, E), - (c = i(z, c, C)), - N === null ? (k = z) : (N.sibling = z), - (N = z), - (E = D); - } - if (C === d.length) return n(p, E), V && Ct(p, C), k; - if (E === null) { - for (; C < d.length; C++) - (E = g(p, d[C], y)), - E !== null && - ((c = i(E, c, C)), N === null ? (k = E) : (N.sibling = E), (N = E)); - return V && Ct(p, C), k; - } - for (E = r(p, E); C < d.length; C++) - (D = m(E, p, C, d[C], y)), - D !== null && - (e && D.alternate !== null && E.delete(D.key === null ? C : D.key), - (c = i(D, c, C)), - N === null ? (k = D) : (N.sibling = D), - (N = D)); - return ( - e && - E.forEach(function (le) { - return t(p, le); - }), - V && Ct(p, C), - k - ); - } - function S(p, c, d, y) { - var k = yn(d); - if (typeof k != "function") throw Error(w(150)); - if (((d = k.call(d)), d == null)) throw Error(w(151)); - for ( - var N = (k = null), E = c, C = (c = 0), D = null, z = d.next(); - E !== null && !z.done; - C++, z = d.next() - ) { - E.index > C ? ((D = E), (E = null)) : (D = E.sibling); - var le = h(p, E, z.value, y); - if (le === null) { - E === null && (E = D); - break; - } - e && E && le.alternate === null && t(p, E), - (c = i(le, c, C)), - N === null ? (k = le) : (N.sibling = le), - (N = le), - (E = D); - } - if (z.done) return n(p, E), V && Ct(p, C), k; - if (E === null) { - for (; !z.done; C++, z = d.next()) - (z = g(p, z.value, y)), - z !== null && - ((c = i(z, c, C)), N === null ? (k = z) : (N.sibling = z), (N = z)); - return V && Ct(p, C), k; - } - for (E = r(p, E); !z.done; C++, z = d.next()) - (z = m(E, p, C, z.value, y)), - z !== null && - (e && z.alternate !== null && E.delete(z.key === null ? C : z.key), - (c = i(z, c, C)), - N === null ? (k = z) : (N.sibling = z), - (N = z)); - return ( - e && - E.forEach(function (Qe) { - return t(p, Qe); - }), - V && Ct(p, C), - k - ); - } - function L(p, c, d, y) { - if ( - (typeof d == "object" && - d !== null && - d.type === Ht && - d.key === null && - (d = d.props.children), - typeof d == "object" && d !== null) - ) { - switch (d.$$typeof) { - case dr: - e: { - for (var k = d.key, N = c; N !== null; ) { - if (N.key === k) { - if (((k = d.type), k === Ht)) { - if (N.tag === 7) { - n(p, N.sibling), - (c = l(N, d.props.children)), - (c.return = p), - (p = c); - break e; - } - } else if ( - N.elementType === k || - (typeof k == "object" && - k !== null && - k.$$typeof === it && - jo(k) === N.type) - ) { - n(p, N.sibling), - (c = l(N, d.props)), - (c.ref = jn(p, N, d)), - (c.return = p), - (p = c); - break e; - } - n(p, N); - break; - } else t(p, N); - N = N.sibling; - } - d.type === Ht - ? ((c = Rt(d.props.children, p.mode, y, d.key)), (c.return = p), (p = c)) - : ((y = Ar(d.type, d.key, d.props, null, p.mode, y)), - (y.ref = jn(p, c, d)), - (y.return = p), - (p = y)); - } - return u(p); - case Wt: - e: { - for (N = d.key; c !== null; ) { - if (c.key === N) - if ( - c.tag === 4 && - c.stateNode.containerInfo === d.containerInfo && - c.stateNode.implementation === d.implementation - ) { - n(p, c.sibling), (c = l(c, d.children || [])), (c.return = p), (p = c); - break e; - } else { - n(p, c); - break; - } - else t(p, c); - c = c.sibling; - } - (c = ql(d, p.mode, y)), (c.return = p), (p = c); - } - return u(p); - case it: - return (N = d._init), L(p, c, N(d._payload), y); - } - if (Cn(d)) return x(p, c, d, y); - if (yn(d)) return S(p, c, d, y); - kr(p, d); - } - return (typeof d == "string" && d !== "") || typeof d == "number" - ? ((d = "" + d), - c !== null && c.tag === 6 - ? (n(p, c.sibling), (c = l(c, d)), (c.return = p), (p = c)) - : (n(p, c), (c = Jl(d, p.mode, y)), (c.return = p), (p = c)), - u(p)) - : n(p, c); - } - return L; -} -var dn = aa(!0), - ca = aa(!1), - br = jt(null), - el = null, - qt = null, - hu = null; -function mu() { - hu = qt = el = null; -} -function vu(e) { - var t = br.current; - $(br), (e._currentValue = t); -} -function Pi(e, t, n) { - for (; e !== null; ) { - var r = e.alternate; - if ( - ((e.childLanes & t) !== t - ? ((e.childLanes |= t), r !== null && (r.childLanes |= t)) - : r !== null && (r.childLanes & t) !== t && (r.childLanes |= t), - e === n) - ) - break; - e = e.return; - } -} -function un(e, t) { - (el = e), - (hu = qt = null), - (e = e.dependencies), - e !== null && - e.firstContext !== null && - (e.lanes & t && (he = !0), (e.firstContext = null)); -} -function ze(e) { - var t = e._currentValue; - if (hu !== e) - if (((e = { context: e, memoizedValue: t, next: null }), qt === null)) { - if (el === null) throw Error(w(308)); - (qt = e), (el.dependencies = { lanes: 0, firstContext: e }); - } else qt = qt.next = e; - return t; -} -var zt = null; -function gu(e) { - zt === null ? (zt = [e]) : zt.push(e); -} -function da(e, t, n, r) { - var l = t.interleaved; - return ( - l === null ? ((n.next = n), gu(t)) : ((n.next = l.next), (l.next = n)), - (t.interleaved = n), - tt(e, r) - ); -} -function tt(e, t) { - e.lanes |= t; - var n = e.alternate; - for (n !== null && (n.lanes |= t), n = e, e = e.return; e !== null; ) - (e.childLanes |= t), - (n = e.alternate), - n !== null && (n.childLanes |= t), - (n = e), - (e = e.return); - return n.tag === 3 ? n.stateNode : null; -} -var ut = !1; -function yu(e) { - e.updateQueue = { - baseState: e.memoizedState, - firstBaseUpdate: null, - lastBaseUpdate: null, - shared: { pending: null, interleaved: null, lanes: 0 }, - effects: null, - }; -} -function fa(e, t) { - (e = e.updateQueue), - t.updateQueue === e && - (t.updateQueue = { - baseState: e.baseState, - firstBaseUpdate: e.firstBaseUpdate, - lastBaseUpdate: e.lastBaseUpdate, - shared: e.shared, - effects: e.effects, - }); -} -function Je(e, t) { - return { - eventTime: e, - lane: t, - tag: 0, - payload: null, - callback: null, - next: null, - }; -} -function mt(e, t, n) { - var r = e.updateQueue; - if (r === null) return null; - if (((r = r.shared), M & 2)) { - var l = r.pending; - return ( - l === null ? (t.next = t) : ((t.next = l.next), (l.next = t)), - (r.pending = t), - tt(e, n) - ); - } - return ( - (l = r.interleaved), - l === null ? ((t.next = t), gu(r)) : ((t.next = l.next), (l.next = t)), - (r.interleaved = t), - tt(e, n) - ); -} -function Rr(e, t, n) { - if ( - ((t = t.updateQueue), t !== null && ((t = t.shared), (n & 4194240) !== 0)) - ) { - var r = t.lanes; - (r &= e.pendingLanes), (n |= r), (t.lanes = n), ru(e, n); - } -} -function _o(e, t) { - var n = e.updateQueue, - r = e.alternate; - if (r !== null && ((r = r.updateQueue), n === r)) { - var l = null, - i = null; - if (((n = n.firstBaseUpdate), n !== null)) { - do { - var u = { - eventTime: n.eventTime, - lane: n.lane, - tag: n.tag, - payload: n.payload, - callback: n.callback, - next: null, - }; - i === null ? (l = i = u) : (i = i.next = u), (n = n.next); - } while (n !== null); - i === null ? (l = i = t) : (i = i.next = t); - } else l = i = t; - (n = { - baseState: r.baseState, - firstBaseUpdate: l, - lastBaseUpdate: i, - shared: r.shared, - effects: r.effects, - }), - (e.updateQueue = n); - return; - } - (e = n.lastBaseUpdate), - e === null ? (n.firstBaseUpdate = t) : (e.next = t), - (n.lastBaseUpdate = t); -} -function tl(e, t, n, r) { - var l = e.updateQueue; - ut = !1; - var i = l.firstBaseUpdate, - u = l.lastBaseUpdate, - s = l.shared.pending; - if (s !== null) { - l.shared.pending = null; - var a = s, - f = a.next; - (a.next = null), u === null ? (i = f) : (u.next = f), (u = a); - var v = e.alternate; - v !== null && - ((v = v.updateQueue), - (s = v.lastBaseUpdate), - s !== u && - (s === null ? (v.firstBaseUpdate = f) : (s.next = f), - (v.lastBaseUpdate = a))); - } - if (i !== null) { - var g = l.baseState; - (u = 0), (v = f = a = null), (s = i); - do { - var h = s.lane, - m = s.eventTime; - if ((r & h) === h) { - v !== null && - (v = v.next = - { - eventTime: m, - lane: 0, - tag: s.tag, - payload: s.payload, - callback: s.callback, - next: null, - }); - e: { - var x = e, - S = s; - switch (((h = t), (m = n), S.tag)) { - case 1: - if (((x = S.payload), typeof x == "function")) { - g = x.call(m, g, h); - break e; - } - g = x; - break e; - case 3: - x.flags = (x.flags & -65537) | 128; - case 0: - if ( - ((x = S.payload), - (h = typeof x == "function" ? x.call(m, g, h) : x), - h == null) - ) - break e; - g = H({}, g, h); - break e; - case 2: - ut = !0; - } - } - s.callback !== null && - s.lane !== 0 && - ((e.flags |= 64), - (h = l.effects), - h === null ? (l.effects = [s]) : h.push(s)); - } else - (m = { - eventTime: m, - lane: h, - tag: s.tag, - payload: s.payload, - callback: s.callback, - next: null, - }), - v === null ? ((f = v = m), (a = g)) : (v = v.next = m), - (u |= h); - if (((s = s.next), s === null)) { - if (((s = l.shared.pending), s === null)) break; - (h = s), - (s = h.next), - (h.next = null), - (l.lastBaseUpdate = h), - (l.shared.pending = null); - } - } while (!0); - if ( - (v === null && (a = g), - (l.baseState = a), - (l.firstBaseUpdate = f), - (l.lastBaseUpdate = v), - (t = l.shared.interleaved), - t !== null) - ) { - l = t; - do (u |= l.lane), (l = l.next); - while (l !== t); - } else i === null && (l.shared.lanes = 0); - (Ft |= u), (e.lanes = u), (e.memoizedState = g); - } -} -function No(e, t, n) { - if (((e = t.effects), (t.effects = null), e !== null)) - for (t = 0; t < e.length; t++) { - var r = e[t], - l = r.callback; - if (l !== null) { - if (((r.callback = null), (r = n), typeof l != "function")) - throw Error(w(191, l)); - l.call(r); - } - } -} -var ur = {}, - He = jt(ur), - Zn = jt(ur), - Jn = jt(ur); -function Lt(e) { - if (e === ur) throw Error(w(174)); - return e; -} -function xu(e, t) { - switch ((U(Jn, t), U(Zn, e), U(He, ur), (e = t.nodeType), e)) { - case 9: - case 11: - t = (t = t.documentElement) ? t.namespaceURI : si(null, ""); - break; - default: - (e = e === 8 ? t.parentNode : t), - (t = e.namespaceURI || null), - (e = e.tagName), - (t = si(t, e)); - } - $(He), U(He, t); -} -function fn() { - $(He), $(Zn), $(Jn); -} -function pa(e) { - Lt(Jn.current); - var t = Lt(He.current), - n = si(t, e.type); - t !== n && (U(Zn, e), U(He, n)); -} -function wu(e) { - Zn.current === e && ($(He), $(Zn)); -} -var B = jt(0); -function nl(e) { - for (var t = e; t !== null; ) { - if (t.tag === 13) { - var n = t.memoizedState; - if ( - n !== null && - ((n = n.dehydrated), n === null || n.data === "$?" || n.data === "$!") - ) - return t; - } else if (t.tag === 19 && t.memoizedProps.revealOrder !== void 0) { - if (t.flags & 128) return t; - } else if (t.child !== null) { - (t.child.return = t), (t = t.child); - continue; - } - if (t === e) break; - for (; t.sibling === null; ) { - if (t.return === null || t.return === e) return null; - t = t.return; - } - (t.sibling.return = t.return), (t = t.sibling); - } - return null; -} -var Ql = []; -function Su() { - for (var e = 0; e < Ql.length; e++) Ql[e]._workInProgressVersionPrimary = null; - Ql.length = 0; -} -var Or = rt.ReactCurrentDispatcher, - Kl = rt.ReactCurrentBatchConfig, - Mt = 0, - W = null, - G = null, - q = null, - rl = !1, - Dn = !1, - qn = 0, - rf = 0; -function ie() { - throw Error(w(321)); -} -function ku(e, t) { - if (t === null) return !1; - for (var n = 0; n < t.length && n < e.length; n++) - if (!Ae(e[n], t[n])) return !1; - return !0; -} -function ju(e, t, n, r, l, i) { - if ( - ((Mt = i), - (W = t), - (t.memoizedState = null), - (t.updateQueue = null), - (t.lanes = 0), - (Or.current = e === null || e.memoizedState === null ? sf : af), - (e = n(r, l)), - Dn) - ) { - i = 0; - do { - if (((Dn = !1), (qn = 0), 25 <= i)) throw Error(w(301)); - (i += 1), - (q = G = null), - (t.updateQueue = null), - (Or.current = cf), - (e = n(r, l)); - } while (Dn); - } - if ( - ((Or.current = ll), - (t = G !== null && G.next !== null), - (Mt = 0), - (q = G = W = null), - (rl = !1), - t) - ) - throw Error(w(300)); - return e; -} -function _u() { - var e = qn !== 0; - return (qn = 0), e; -} -function Ve() { - var e = { - memoizedState: null, - baseState: null, - baseQueue: null, - queue: null, - next: null, - }; - return q === null ? (W.memoizedState = q = e) : (q = q.next = e), q; -} -function Le() { - if (G === null) { - var e = W.alternate; - e = e !== null ? e.memoizedState : null; - } else e = G.next; - var t = q === null ? W.memoizedState : q.next; - if (t !== null) (q = t), (G = e); - else { - if (e === null) throw Error(w(310)); - (G = e), - (e = { - memoizedState: G.memoizedState, - baseState: G.baseState, - baseQueue: G.baseQueue, - queue: G.queue, - next: null, - }), - q === null ? (W.memoizedState = q = e) : (q = q.next = e); - } - return q; -} -function bn(e, t) { - return typeof t == "function" ? t(e) : t; -} -function Yl(e) { - var t = Le(), - n = t.queue; - if (n === null) throw Error(w(311)); - n.lastRenderedReducer = e; - var r = G, - l = r.baseQueue, - i = n.pending; - if (i !== null) { - if (l !== null) { - var u = l.next; - (l.next = i.next), (i.next = u); - } - (r.baseQueue = l = i), (n.pending = null); - } - if (l !== null) { - (i = l.next), (r = r.baseState); - var s = (u = null), - a = null, - f = i; - do { - var v = f.lane; - if ((Mt & v) === v) - a !== null && - (a = a.next = - { - lane: 0, - action: f.action, - hasEagerState: f.hasEagerState, - eagerState: f.eagerState, - next: null, - }), - (r = f.hasEagerState ? f.eagerState : e(r, f.action)); - else { - var g = { - lane: v, - action: f.action, - hasEagerState: f.hasEagerState, - eagerState: f.eagerState, - next: null, - }; - a === null ? ((s = a = g), (u = r)) : (a = a.next = g), - (W.lanes |= v), - (Ft |= v); - } - f = f.next; - } while (f !== null && f !== i); - a === null ? (u = r) : (a.next = s), - Ae(r, t.memoizedState) || (he = !0), - (t.memoizedState = r), - (t.baseState = u), - (t.baseQueue = a), - (n.lastRenderedState = r); - } - if (((e = n.interleaved), e !== null)) { - l = e; - do (i = l.lane), (W.lanes |= i), (Ft |= i), (l = l.next); - while (l !== e); - } else l === null && (n.lanes = 0); - return [t.memoizedState, n.dispatch]; -} -function Xl(e) { - var t = Le(), - n = t.queue; - if (n === null) throw Error(w(311)); - n.lastRenderedReducer = e; - var r = n.dispatch, - l = n.pending, - i = t.memoizedState; - if (l !== null) { - n.pending = null; - var u = (l = l.next); - do (i = e(i, u.action)), (u = u.next); - while (u !== l); - Ae(i, t.memoizedState) || (he = !0), - (t.memoizedState = i), - t.baseQueue === null && (t.baseState = i), - (n.lastRenderedState = i); - } - return [i, r]; -} -function ha() {} -function ma(e, t) { - var n = W, - r = Le(), - l = t(), - i = !Ae(r.memoizedState, l); - if ( - (i && ((r.memoizedState = l), (he = !0)), - (r = r.queue), - Nu(ya.bind(null, n, r, e), [e]), - r.getSnapshot !== t || i || (q !== null && q.memoizedState.tag & 1)) - ) { - if ( - ((n.flags |= 2048), - er(9, ga.bind(null, n, r, l, t), void 0, null), - b === null) - ) - throw Error(w(349)); - Mt & 30 || va(n, t, l); - } - return l; -} -function va(e, t, n) { - (e.flags |= 16384), - (e = { getSnapshot: t, value: n }), - (t = W.updateQueue), - t === null - ? ((t = { lastEffect: null, stores: null }), - (W.updateQueue = t), - (t.stores = [e])) - : ((n = t.stores), n === null ? (t.stores = [e]) : n.push(e)); -} -function ga(e, t, n, r) { - (t.value = n), (t.getSnapshot = r), xa(t) && wa(e); -} -function ya(e, t, n) { - return n(function () { - xa(t) && wa(e); - }); -} -function xa(e) { - var t = e.getSnapshot; - e = e.value; - try { - var n = t(); - return !Ae(e, n); - } catch { - return !0; - } -} -function wa(e) { - var t = tt(e, 1); - t !== null && Ue(t, e, 1, -1); -} -function Eo(e) { - var t = Ve(); - return ( - typeof e == "function" && (e = e()), - (t.memoizedState = t.baseState = e), - (e = { - pending: null, - interleaved: null, - lanes: 0, - dispatch: null, - lastRenderedReducer: bn, - lastRenderedState: e, - }), - (t.queue = e), - (e = e.dispatch = of.bind(null, W, e)), - [t.memoizedState, e] - ); -} -function er(e, t, n, r) { - return ( - (e = { tag: e, create: t, destroy: n, deps: r, next: null }), - (t = W.updateQueue), - t === null - ? ((t = { lastEffect: null, stores: null }), - (W.updateQueue = t), - (t.lastEffect = e.next = e)) - : ((n = t.lastEffect), - n === null - ? (t.lastEffect = e.next = e) - : ((r = n.next), (n.next = e), (e.next = r), (t.lastEffect = e))), - e - ); -} -function Sa() { - return Le().memoizedState; -} -function Dr(e, t, n, r) { - var l = Ve(); - (W.flags |= e), - (l.memoizedState = er(1 | t, n, void 0, r === void 0 ? null : r)); -} -function gl(e, t, n, r) { - var l = Le(); - r = r === void 0 ? null : r; - var i = void 0; - if (G !== null) { - var u = G.memoizedState; - if (((i = u.destroy), r !== null && ku(r, u.deps))) { - l.memoizedState = er(t, n, i, r); - return; - } - } - (W.flags |= e), (l.memoizedState = er(1 | t, n, i, r)); -} -function Co(e, t) { - return Dr(8390656, 8, e, t); -} -function Nu(e, t) { - return gl(2048, 8, e, t); -} -function ka(e, t) { - return gl(4, 2, e, t); -} -function ja(e, t) { - return gl(4, 4, e, t); -} -function _a(e, t) { - if (typeof t == "function") - return ( - (e = e()), - t(e), - function () { - t(null); - } - ); - if (t != null) - return ( - (e = e()), - (t.current = e), - function () { - t.current = null; - } - ); -} -function Na(e, t, n) { - return ( - (n = n != null ? n.concat([e]) : null), gl(4, 4, _a.bind(null, t, e), n) - ); -} -function Eu() {} -function Ea(e, t) { - var n = Le(); - t = t === void 0 ? null : t; - var r = n.memoizedState; - return r !== null && t !== null && ku(t, r[1]) - ? r[0] - : ((n.memoizedState = [e, t]), e); -} -function Ca(e, t) { - var n = Le(); - t = t === void 0 ? null : t; - var r = n.memoizedState; - return r !== null && t !== null && ku(t, r[1]) - ? r[0] - : ((e = e()), (n.memoizedState = [e, t]), e); -} -function Pa(e, t, n) { - return Mt & 21 - ? (Ae(n, t) || ((n = Rs()), (W.lanes |= n), (Ft |= n), (e.baseState = !0)), t) - : (e.baseState && ((e.baseState = !1), (he = !0)), (e.memoizedState = n)); -} -function lf(e, t) { - var n = F; - (F = n !== 0 && 4 > n ? n : 4), e(!0); - var r = Kl.transition; - Kl.transition = {}; - try { - e(!1), t(); - } finally { - (F = n), (Kl.transition = r); - } -} -function Ta() { - return Le().memoizedState; -} -function uf(e, t, n) { - var r = gt(e); - if ( - ((n = { - lane: r, - action: n, - hasEagerState: !1, - eagerState: null, - next: null, - }), - za(e)) - ) - La(t, n); - else if (((n = da(e, t, n, r)), n !== null)) { - var l = ce(); - Ue(n, e, r, l), Ia(n, t, r); - } -} -function of(e, t, n) { - var r = gt(e), - l = { lane: r, action: n, hasEagerState: !1, eagerState: null, next: null }; - if (za(e)) La(t, l); - else { - var i = e.alternate; - if ( - e.lanes === 0 && - (i === null || i.lanes === 0) && - ((i = t.lastRenderedReducer), i !== null) - ) - try { - var u = t.lastRenderedState, - s = i(u, n); - if (((l.hasEagerState = !0), (l.eagerState = s), Ae(s, u))) { - var a = t.interleaved; - a === null ? ((l.next = l), gu(t)) : ((l.next = a.next), (a.next = l)), - (t.interleaved = l); - return; - } - } catch { - } finally { - } - (n = da(e, t, l, r)), n !== null && ((l = ce()), Ue(n, e, r, l), Ia(n, t, r)); - } -} -function za(e) { - var t = e.alternate; - return e === W || (t !== null && t === W); -} -function La(e, t) { - Dn = rl = !0; - var n = e.pending; - n === null ? (t.next = t) : ((t.next = n.next), (n.next = t)), (e.pending = t); -} -function Ia(e, t, n) { - if (n & 4194240) { - var r = t.lanes; - (r &= e.pendingLanes), (n |= r), (t.lanes = n), ru(e, n); - } -} -var ll = { - readContext: ze, - useCallback: ie, - useContext: ie, - useEffect: ie, - useImperativeHandle: ie, - useInsertionEffect: ie, - useLayoutEffect: ie, - useMemo: ie, - useReducer: ie, - useRef: ie, - useState: ie, - useDebugValue: ie, - useDeferredValue: ie, - useTransition: ie, - useMutableSource: ie, - useSyncExternalStore: ie, - useId: ie, - unstable_isNewReconciler: !1, - }, - sf = { - readContext: ze, - useCallback: function (e, t) { - return (Ve().memoizedState = [e, t === void 0 ? null : t]), e; - }, - useContext: ze, - useEffect: Co, - useImperativeHandle: function (e, t, n) { - return ( - (n = n != null ? n.concat([e]) : null), - Dr(4194308, 4, _a.bind(null, t, e), n) - ); - }, - useLayoutEffect: function (e, t) { - return Dr(4194308, 4, e, t); - }, - useInsertionEffect: function (e, t) { - return Dr(4, 2, e, t); - }, - useMemo: function (e, t) { - var n = Ve(); - return ( - (t = t === void 0 ? null : t), (e = e()), (n.memoizedState = [e, t]), e - ); - }, - useReducer: function (e, t, n) { - var r = Ve(); - return ( - (t = n !== void 0 ? n(t) : t), - (r.memoizedState = r.baseState = t), - (e = { - pending: null, - interleaved: null, - lanes: 0, - dispatch: null, - lastRenderedReducer: e, - lastRenderedState: t, - }), - (r.queue = e), - (e = e.dispatch = uf.bind(null, W, e)), - [r.memoizedState, e] - ); - }, - useRef: function (e) { - var t = Ve(); - return (e = { current: e }), (t.memoizedState = e); - }, - useState: Eo, - useDebugValue: Eu, - useDeferredValue: function (e) { - return (Ve().memoizedState = e); - }, - useTransition: function () { - var e = Eo(!1), - t = e[0]; - return (e = lf.bind(null, e[1])), (Ve().memoizedState = e), [t, e]; - }, - useMutableSource: function () {}, - useSyncExternalStore: function (e, t, n) { - var r = W, - l = Ve(); - if (V) { - if (n === void 0) throw Error(w(407)); - n = n(); - } else { - if (((n = t()), b === null)) throw Error(w(349)); - Mt & 30 || va(r, t, n); - } - l.memoizedState = n; - var i = { value: n, getSnapshot: t }; - return ( - (l.queue = i), - Co(ya.bind(null, r, i, e), [e]), - (r.flags |= 2048), - er(9, ga.bind(null, r, i, n, t), void 0, null), - n - ); - }, - useId: function () { - var e = Ve(), - t = b.identifierPrefix; - if (V) { - var n = Ze, - r = Ge; - (n = (r & ~(1 << (32 - Fe(r) - 1))).toString(32) + n), - (t = ":" + t + "R" + n), - (n = qn++), - 0 < n && (t += "H" + n.toString(32)), - (t += ":"); - } else (n = rf++), (t = ":" + t + "r" + n.toString(32) + ":"); - return (e.memoizedState = t); - }, - unstable_isNewReconciler: !1, - }, - af = { - readContext: ze, - useCallback: Ea, - useContext: ze, - useEffect: Nu, - useImperativeHandle: Na, - useInsertionEffect: ka, - useLayoutEffect: ja, - useMemo: Ca, - useReducer: Yl, - useRef: Sa, - useState: function () { - return Yl(bn); - }, - useDebugValue: Eu, - useDeferredValue: function (e) { - var t = Le(); - return Pa(t, G.memoizedState, e); - }, - useTransition: function () { - var e = Yl(bn)[0], - t = Le().memoizedState; - return [e, t]; - }, - useMutableSource: ha, - useSyncExternalStore: ma, - useId: Ta, - unstable_isNewReconciler: !1, - }, - cf = { - readContext: ze, - useCallback: Ea, - useContext: ze, - useEffect: Nu, - useImperativeHandle: Na, - useInsertionEffect: ka, - useLayoutEffect: ja, - useMemo: Ca, - useReducer: Xl, - useRef: Sa, - useState: function () { - return Xl(bn); - }, - useDebugValue: Eu, - useDeferredValue: function (e) { - var t = Le(); - return G === null ? (t.memoizedState = e) : Pa(t, G.memoizedState, e); - }, - useTransition: function () { - var e = Xl(bn)[0], - t = Le().memoizedState; - return [e, t]; - }, - useMutableSource: ha, - useSyncExternalStore: ma, - useId: Ta, - unstable_isNewReconciler: !1, - }; -function Oe(e, t) { - if (e && e.defaultProps) { - (t = H({}, t)), (e = e.defaultProps); - for (var n in e) t[n] === void 0 && (t[n] = e[n]); - return t; - } - return t; -} -function Ti(e, t, n, r) { - (t = e.memoizedState), - (n = n(r, t)), - (n = n == null ? t : H({}, t, n)), - (e.memoizedState = n), - e.lanes === 0 && (e.updateQueue.baseState = n); -} -var yl = { - isMounted: function (e) { - return (e = e._reactInternals) ? Vt(e) === e : !1; - }, - enqueueSetState: function (e, t, n) { - e = e._reactInternals; - var r = ce(), - l = gt(e), - i = Je(r, l); - (i.payload = t), - n != null && (i.callback = n), - (t = mt(e, i, l)), - t !== null && (Ue(t, e, l, r), Rr(t, e, l)); - }, - enqueueReplaceState: function (e, t, n) { - e = e._reactInternals; - var r = ce(), - l = gt(e), - i = Je(r, l); - (i.tag = 1), - (i.payload = t), - n != null && (i.callback = n), - (t = mt(e, i, l)), - t !== null && (Ue(t, e, l, r), Rr(t, e, l)); - }, - enqueueForceUpdate: function (e, t) { - e = e._reactInternals; - var n = ce(), - r = gt(e), - l = Je(n, r); - (l.tag = 2), - t != null && (l.callback = t), - (t = mt(e, l, r)), - t !== null && (Ue(t, e, r, n), Rr(t, e, r)); - }, -}; -function Po(e, t, n, r, l, i, u) { - return ( - (e = e.stateNode), - typeof e.shouldComponentUpdate == "function" - ? e.shouldComponentUpdate(r, i, u) - : t.prototype && t.prototype.isPureReactComponent - ? !Kn(n, r) || !Kn(l, i) - : !0 - ); -} -function Ra(e, t, n) { - var r = !1, - l = wt, - i = t.contextType; - return ( - typeof i == "object" && i !== null - ? (i = ze(i)) - : ((l = ve(t) ? Ot : se.current), - (r = t.contextTypes), - (i = (r = r != null) ? an(e, l) : wt)), - (t = new t(n, i)), - (e.memoizedState = t.state !== null && t.state !== void 0 ? t.state : null), - (t.updater = yl), - (e.stateNode = t), - (t._reactInternals = e), - r && - ((e = e.stateNode), - (e.__reactInternalMemoizedUnmaskedChildContext = l), - (e.__reactInternalMemoizedMaskedChildContext = i)), - t - ); -} -function To(e, t, n, r) { - (e = t.state), - typeof t.componentWillReceiveProps == "function" && - t.componentWillReceiveProps(n, r), - typeof t.UNSAFE_componentWillReceiveProps == "function" && - t.UNSAFE_componentWillReceiveProps(n, r), - t.state !== e && yl.enqueueReplaceState(t, t.state, null); -} -function zi(e, t, n, r) { - var l = e.stateNode; - (l.props = n), (l.state = e.memoizedState), (l.refs = {}), yu(e); - var i = t.contextType; - typeof i == "object" && i !== null - ? (l.context = ze(i)) - : ((i = ve(t) ? Ot : se.current), (l.context = an(e, i))), - (l.state = e.memoizedState), - (i = t.getDerivedStateFromProps), - typeof i == "function" && (Ti(e, t, i, n), (l.state = e.memoizedState)), - typeof t.getDerivedStateFromProps == "function" || - typeof l.getSnapshotBeforeUpdate == "function" || - (typeof l.UNSAFE_componentWillMount != "function" && - typeof l.componentWillMount != "function") || - ((t = l.state), - typeof l.componentWillMount == "function" && l.componentWillMount(), - typeof l.UNSAFE_componentWillMount == "function" && - l.UNSAFE_componentWillMount(), - t !== l.state && yl.enqueueReplaceState(l, l.state, null), - tl(e, n, l, r), - (l.state = e.memoizedState)), - typeof l.componentDidMount == "function" && (e.flags |= 4194308); -} -function pn(e, t) { - try { - var n = "", - r = t; - do (n += Fc(r)), (r = r.return); - while (r); - var l = n; - } catch (i) { - l = - ` -Error generating stack: ` + - i.message + - ` -` + - i.stack; - } - return { value: e, source: t, stack: l, digest: null }; -} -function Gl(e, t, n) { - return { value: e, source: null, stack: n ?? null, digest: t ?? null }; -} -function Li(e, t) { - try { - console.error(t.value); - } catch (n) { - setTimeout(function () { - throw n; - }); - } -} -var df = typeof WeakMap == "function" ? WeakMap : Map; -function Oa(e, t, n) { - (n = Je(-1, n)), (n.tag = 3), (n.payload = { element: null }); - var r = t.value; - return ( - (n.callback = function () { - ul || ((ul = !0), (Vi = r)), Li(e, t); - }), - n - ); -} -function Da(e, t, n) { - (n = Je(-1, n)), (n.tag = 3); - var r = e.type.getDerivedStateFromError; - if (typeof r == "function") { - var l = t.value; - (n.payload = function () { - return r(l); - }), - (n.callback = function () { - Li(e, t); - }); - } - var i = e.stateNode; - return ( - i !== null && - typeof i.componentDidCatch == "function" && - (n.callback = function () { - Li(e, t), - typeof r != "function" && - (vt === null ? (vt = new Set([this])) : vt.add(this)); - var u = t.stack; - this.componentDidCatch(t.value, { componentStack: u !== null ? u : "" }); - }), - n - ); -} -function zo(e, t, n) { - var r = e.pingCache; - if (r === null) { - r = e.pingCache = new df(); - var l = new Set(); - r.set(t, l); - } else (l = r.get(t)), l === void 0 && ((l = new Set()), r.set(t, l)); - l.has(n) || (l.add(n), (e = Nf.bind(null, e, t, n)), t.then(e, e)); -} -function Lo(e) { - do { - var t; - if ( - ((t = e.tag === 13) && - ((t = e.memoizedState), (t = t !== null ? t.dehydrated !== null : !0)), - t) - ) - return e; - e = e.return; - } while (e !== null); - return null; -} -function Io(e, t, n, r, l) { - return e.mode & 1 - ? ((e.flags |= 65536), (e.lanes = l), e) - : (e === t - ? (e.flags |= 65536) - : ((e.flags |= 128), - (n.flags |= 131072), - (n.flags &= -52805), - n.tag === 1 && - (n.alternate === null - ? (n.tag = 17) - : ((t = Je(-1, 1)), (t.tag = 2), mt(n, t, 1))), - (n.lanes |= 1)), - e); -} -var ff = rt.ReactCurrentOwner, - he = !1; -function ae(e, t, n, r) { - t.child = e === null ? ca(t, null, n, r) : dn(t, e.child, n, r); -} -function Ro(e, t, n, r, l) { - n = n.render; - var i = t.ref; - return ( - un(t, l), - (r = ju(e, t, n, r, i, l)), - (n = _u()), - e !== null && !he - ? ((t.updateQueue = e.updateQueue), - (t.flags &= -2053), - (e.lanes &= ~l), - nt(e, t, l)) - : (V && n && du(t), (t.flags |= 1), ae(e, t, r, l), t.child) - ); -} -function Oo(e, t, n, r, l) { - if (e === null) { - var i = n.type; - return typeof i == "function" && - !Ou(i) && - i.defaultProps === void 0 && - n.compare === null && - n.defaultProps === void 0 - ? ((t.tag = 15), (t.type = i), Ma(e, t, i, r, l)) - : ((e = Ar(n.type, null, r, t, t.mode, l)), - (e.ref = t.ref), - (e.return = t), - (t.child = e)); - } - if (((i = e.child), !(e.lanes & l))) { - var u = i.memoizedProps; - if (((n = n.compare), (n = n !== null ? n : Kn), n(u, r) && e.ref === t.ref)) - return nt(e, t, l); - } - return ( - (t.flags |= 1), (e = yt(i, r)), (e.ref = t.ref), (e.return = t), (t.child = e) - ); -} -function Ma(e, t, n, r, l) { - if (e !== null) { - var i = e.memoizedProps; - if (Kn(i, r) && e.ref === t.ref) - if (((he = !1), (t.pendingProps = r = i), (e.lanes & l) !== 0)) - e.flags & 131072 && (he = !0); - else return (t.lanes = e.lanes), nt(e, t, l); - } - return Ii(e, t, n, r, l); -} -function Fa(e, t, n) { - var r = t.pendingProps, - l = r.children, - i = e !== null ? e.memoizedState : null; - if (r.mode === "hidden") - if (!(t.mode & 1)) - (t.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }), - U(en, xe), - (xe |= n); - else { - if (!(n & 1073741824)) - return ( - (e = i !== null ? i.baseLanes | n : n), - (t.lanes = t.childLanes = 1073741824), - (t.memoizedState = { baseLanes: e, cachePool: null, transitions: null }), - (t.updateQueue = null), - U(en, xe), - (xe |= e), - null - ); - (t.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }), - (r = i !== null ? i.baseLanes : n), - U(en, xe), - (xe |= r); - } - else - i !== null ? ((r = i.baseLanes | n), (t.memoizedState = null)) : (r = n), - U(en, xe), - (xe |= r); - return ae(e, t, l, n), t.child; -} -function Ua(e, t) { - var n = t.ref; - ((e === null && n !== null) || (e !== null && e.ref !== n)) && - ((t.flags |= 512), (t.flags |= 2097152)); -} -function Ii(e, t, n, r, l) { - var i = ve(n) ? Ot : se.current; - return ( - (i = an(t, i)), - un(t, l), - (n = ju(e, t, n, r, i, l)), - (r = _u()), - e !== null && !he - ? ((t.updateQueue = e.updateQueue), - (t.flags &= -2053), - (e.lanes &= ~l), - nt(e, t, l)) - : (V && r && du(t), (t.flags |= 1), ae(e, t, n, l), t.child) - ); -} -function Do(e, t, n, r, l) { - if (ve(n)) { - var i = !0; - Zr(t); - } else i = !1; - if ((un(t, l), t.stateNode === null)) - Mr(e, t), Ra(t, n, r), zi(t, n, r, l), (r = !0); - else if (e === null) { - var u = t.stateNode, - s = t.memoizedProps; - u.props = s; - var a = u.context, - f = n.contextType; - typeof f == "object" && f !== null - ? (f = ze(f)) - : ((f = ve(n) ? Ot : se.current), (f = an(t, f))); - var v = n.getDerivedStateFromProps, - g = typeof v == "function" || typeof u.getSnapshotBeforeUpdate == "function"; - g || - (typeof u.UNSAFE_componentWillReceiveProps != "function" && - typeof u.componentWillReceiveProps != "function") || - ((s !== r || a !== f) && To(t, u, r, f)), - (ut = !1); - var h = t.memoizedState; - (u.state = h), - tl(t, r, u, l), - (a = t.memoizedState), - s !== r || h !== a || me.current || ut - ? (typeof v == "function" && (Ti(t, n, v, r), (a = t.memoizedState)), - (s = ut || Po(t, n, s, r, h, a, f)) - ? (g || - (typeof u.UNSAFE_componentWillMount != "function" && - typeof u.componentWillMount != "function") || - (typeof u.componentWillMount == "function" && u.componentWillMount(), - typeof u.UNSAFE_componentWillMount == "function" && - u.UNSAFE_componentWillMount()), - typeof u.componentDidMount == "function" && (t.flags |= 4194308)) - : (typeof u.componentDidMount == "function" && (t.flags |= 4194308), - (t.memoizedProps = r), - (t.memoizedState = a)), - (u.props = r), - (u.state = a), - (u.context = f), - (r = s)) - : (typeof u.componentDidMount == "function" && (t.flags |= 4194308), - (r = !1)); - } else { - (u = t.stateNode), - fa(e, t), - (s = t.memoizedProps), - (f = t.type === t.elementType ? s : Oe(t.type, s)), - (u.props = f), - (g = t.pendingProps), - (h = u.context), - (a = n.contextType), - typeof a == "object" && a !== null - ? (a = ze(a)) - : ((a = ve(n) ? Ot : se.current), (a = an(t, a))); - var m = n.getDerivedStateFromProps; - (v = - typeof m == "function" || typeof u.getSnapshotBeforeUpdate == "function") || - (typeof u.UNSAFE_componentWillReceiveProps != "function" && - typeof u.componentWillReceiveProps != "function") || - ((s !== g || h !== a) && To(t, u, r, a)), - (ut = !1), - (h = t.memoizedState), - (u.state = h), - tl(t, r, u, l); - var x = t.memoizedState; - s !== g || h !== x || me.current || ut - ? (typeof m == "function" && (Ti(t, n, m, r), (x = t.memoizedState)), - (f = ut || Po(t, n, f, r, h, x, a) || !1) - ? (v || - (typeof u.UNSAFE_componentWillUpdate != "function" && - typeof u.componentWillUpdate != "function") || - (typeof u.componentWillUpdate == "function" && - u.componentWillUpdate(r, x, a), - typeof u.UNSAFE_componentWillUpdate == "function" && - u.UNSAFE_componentWillUpdate(r, x, a)), - typeof u.componentDidUpdate == "function" && (t.flags |= 4), - typeof u.getSnapshotBeforeUpdate == "function" && (t.flags |= 1024)) - : (typeof u.componentDidUpdate != "function" || - (s === e.memoizedProps && h === e.memoizedState) || - (t.flags |= 4), - typeof u.getSnapshotBeforeUpdate != "function" || - (s === e.memoizedProps && h === e.memoizedState) || - (t.flags |= 1024), - (t.memoizedProps = r), - (t.memoizedState = x)), - (u.props = r), - (u.state = x), - (u.context = a), - (r = f)) - : (typeof u.componentDidUpdate != "function" || - (s === e.memoizedProps && h === e.memoizedState) || - (t.flags |= 4), - typeof u.getSnapshotBeforeUpdate != "function" || - (s === e.memoizedProps && h === e.memoizedState) || - (t.flags |= 1024), - (r = !1)); - } - return Ri(e, t, n, r, i, l); -} -function Ri(e, t, n, r, l, i) { - Ua(e, t); - var u = (t.flags & 128) !== 0; - if (!r && !u) return l && wo(t, n, !1), nt(e, t, i); - (r = t.stateNode), (ff.current = t); - var s = - u && typeof n.getDerivedStateFromError != "function" ? null : r.render(); - return ( - (t.flags |= 1), - e !== null && u - ? ((t.child = dn(t, e.child, null, i)), (t.child = dn(t, null, s, i))) - : ae(e, t, s, i), - (t.memoizedState = r.state), - l && wo(t, n, !0), - t.child - ); -} -function Aa(e) { - var t = e.stateNode; - t.pendingContext - ? xo(e, t.pendingContext, t.pendingContext !== t.context) - : t.context && xo(e, t.context, !1), - xu(e, t.containerInfo); -} -function Mo(e, t, n, r, l) { - return cn(), pu(l), (t.flags |= 256), ae(e, t, n, r), t.child; -} -var Oi = { dehydrated: null, treeContext: null, retryLane: 0 }; -function Di(e) { - return { baseLanes: e, cachePool: null, transitions: null }; -} -function $a(e, t, n) { - var r = t.pendingProps, - l = B.current, - i = !1, - u = (t.flags & 128) !== 0, - s; - if ( - ((s = u) || (s = e !== null && e.memoizedState === null ? !1 : (l & 2) !== 0), - s - ? ((i = !0), (t.flags &= -129)) - : (e === null || e.memoizedState !== null) && (l |= 1), - U(B, l & 1), - e === null) - ) - return ( - Ci(t), - (e = t.memoizedState), - e !== null && ((e = e.dehydrated), e !== null) - ? (t.mode & 1 - ? e.data === "$!" - ? (t.lanes = 8) - : (t.lanes = 1073741824) - : (t.lanes = 1), - null) - : ((u = r.children), - (e = r.fallback), - i - ? ((r = t.mode), - (i = t.child), - (u = { mode: "hidden", children: u }), - !(r & 1) && i !== null - ? ((i.childLanes = 0), (i.pendingProps = u)) - : (i = Sl(u, r, 0, null)), - (e = Rt(e, r, n, null)), - (i.return = t), - (e.return = t), - (i.sibling = e), - (t.child = i), - (t.child.memoizedState = Di(n)), - (t.memoizedState = Oi), - e) - : Cu(t, u)) - ); - if (((l = e.memoizedState), l !== null && ((s = l.dehydrated), s !== null))) - return pf(e, t, u, r, s, l, n); - if (i) { - (i = r.fallback), (u = t.mode), (l = e.child), (s = l.sibling); - var a = { mode: "hidden", children: r.children }; - return ( - !(u & 1) && t.child !== l - ? ((r = t.child), - (r.childLanes = 0), - (r.pendingProps = a), - (t.deletions = null)) - : ((r = yt(l, a)), (r.subtreeFlags = l.subtreeFlags & 14680064)), - s !== null ? (i = yt(s, i)) : ((i = Rt(i, u, n, null)), (i.flags |= 2)), - (i.return = t), - (r.return = t), - (r.sibling = i), - (t.child = r), - (r = i), - (i = t.child), - (u = e.child.memoizedState), - (u = - u === null - ? Di(n) - : { - baseLanes: u.baseLanes | n, - cachePool: null, - transitions: u.transitions, - }), - (i.memoizedState = u), - (i.childLanes = e.childLanes & ~n), - (t.memoizedState = Oi), - r - ); - } - return ( - (i = e.child), - (e = i.sibling), - (r = yt(i, { mode: "visible", children: r.children })), - !(t.mode & 1) && (r.lanes = n), - (r.return = t), - (r.sibling = null), - e !== null && - ((n = t.deletions), - n === null ? ((t.deletions = [e]), (t.flags |= 16)) : n.push(e)), - (t.child = r), - (t.memoizedState = null), - r - ); -} -function Cu(e, t) { - return ( - (t = Sl({ mode: "visible", children: t }, e.mode, 0, null)), - (t.return = e), - (e.child = t) - ); -} -function jr(e, t, n, r) { - return ( - r !== null && pu(r), - dn(t, e.child, null, n), - (e = Cu(t, t.pendingProps.children)), - (e.flags |= 2), - (t.memoizedState = null), - e - ); -} -function pf(e, t, n, r, l, i, u) { - if (n) - return t.flags & 256 - ? ((t.flags &= -257), (r = Gl(Error(w(422)))), jr(e, t, u, r)) - : t.memoizedState !== null - ? ((t.child = e.child), (t.flags |= 128), null) - : ((i = r.fallback), - (l = t.mode), - (r = Sl({ mode: "visible", children: r.children }, l, 0, null)), - (i = Rt(i, l, u, null)), - (i.flags |= 2), - (r.return = t), - (i.return = t), - (r.sibling = i), - (t.child = r), - t.mode & 1 && dn(t, e.child, null, u), - (t.child.memoizedState = Di(u)), - (t.memoizedState = Oi), - i); - if (!(t.mode & 1)) return jr(e, t, u, null); - if (l.data === "$!") { - if (((r = l.nextSibling && l.nextSibling.dataset), r)) var s = r.dgst; - return (r = s), (i = Error(w(419))), (r = Gl(i, r, void 0)), jr(e, t, u, r); - } - if (((s = (u & e.childLanes) !== 0), he || s)) { - if (((r = b), r !== null)) { - switch (u & -u) { - case 4: - l = 2; - break; - case 16: - l = 8; - break; - case 64: - case 128: - case 256: - case 512: - case 1024: - case 2048: - case 4096: - case 8192: - case 16384: - case 32768: - case 65536: - case 131072: - case 262144: - case 524288: - case 1048576: - case 2097152: - case 4194304: - case 8388608: - case 16777216: - case 33554432: - case 67108864: - l = 32; - break; - case 536870912: - l = 268435456; - break; - default: - l = 0; - } - (l = l & (r.suspendedLanes | u) ? 0 : l), - l !== 0 && - l !== i.retryLane && - ((i.retryLane = l), tt(e, l), Ue(r, e, l, -1)); - } - return Ru(), (r = Gl(Error(w(421)))), jr(e, t, u, r); - } - return l.data === "$?" - ? ((t.flags |= 128), - (t.child = e.child), - (t = Ef.bind(null, e)), - (l._reactRetry = t), - null) - : ((e = i.treeContext), - (we = ht(l.nextSibling)), - (Se = t), - (V = !0), - (Me = null), - e !== null && - ((Ne[Ee++] = Ge), - (Ne[Ee++] = Ze), - (Ne[Ee++] = Dt), - (Ge = e.id), - (Ze = e.overflow), - (Dt = t)), - (t = Cu(t, r.children)), - (t.flags |= 4096), - t); -} -function Fo(e, t, n) { - e.lanes |= t; - var r = e.alternate; - r !== null && (r.lanes |= t), Pi(e.return, t, n); -} -function Zl(e, t, n, r, l) { - var i = e.memoizedState; - i === null - ? (e.memoizedState = { - isBackwards: t, - rendering: null, - renderingStartTime: 0, - last: r, - tail: n, - tailMode: l, - }) - : ((i.isBackwards = t), - (i.rendering = null), - (i.renderingStartTime = 0), - (i.last = r), - (i.tail = n), - (i.tailMode = l)); -} -function Va(e, t, n) { - var r = t.pendingProps, - l = r.revealOrder, - i = r.tail; - if ((ae(e, t, r.children, n), (r = B.current), r & 2)) - (r = (r & 1) | 2), (t.flags |= 128); - else { - if (e !== null && e.flags & 128) - e: for (e = t.child; e !== null; ) { - if (e.tag === 13) e.memoizedState !== null && Fo(e, n, t); - else if (e.tag === 19) Fo(e, n, t); - else if (e.child !== null) { - (e.child.return = e), (e = e.child); - continue; - } - if (e === t) break e; - for (; e.sibling === null; ) { - if (e.return === null || e.return === t) break e; - e = e.return; - } - (e.sibling.return = e.return), (e = e.sibling); - } - r &= 1; - } - if ((U(B, r), !(t.mode & 1))) t.memoizedState = null; - else - switch (l) { - case "forwards": - for (n = t.child, l = null; n !== null; ) - (e = n.alternate), - e !== null && nl(e) === null && (l = n), - (n = n.sibling); - (n = l), - n === null - ? ((l = t.child), (t.child = null)) - : ((l = n.sibling), (n.sibling = null)), - Zl(t, !1, l, n, i); - break; - case "backwards": - for (n = null, l = t.child, t.child = null; l !== null; ) { - if (((e = l.alternate), e !== null && nl(e) === null)) { - t.child = l; - break; - } - (e = l.sibling), (l.sibling = n), (n = l), (l = e); - } - Zl(t, !0, n, null, i); - break; - case "together": - Zl(t, !1, null, null, void 0); - break; - default: - t.memoizedState = null; - } - return t.child; -} -function Mr(e, t) { - !(t.mode & 1) && - e !== null && - ((e.alternate = null), (t.alternate = null), (t.flags |= 2)); -} -function nt(e, t, n) { - if ( - (e !== null && (t.dependencies = e.dependencies), - (Ft |= t.lanes), - !(n & t.childLanes)) - ) - return null; - if (e !== null && t.child !== e.child) throw Error(w(153)); - if (t.child !== null) { - for ( - e = t.child, n = yt(e, e.pendingProps), t.child = n, n.return = t; - e.sibling !== null; - ) - (e = e.sibling), (n = n.sibling = yt(e, e.pendingProps)), (n.return = t); - n.sibling = null; - } - return t.child; -} -function hf(e, t, n) { - switch (t.tag) { - case 3: - Aa(t), cn(); - break; - case 5: - pa(t); - break; - case 1: - ve(t.type) && Zr(t); - break; - case 4: - xu(t, t.stateNode.containerInfo); - break; - case 10: - var r = t.type._context, - l = t.memoizedProps.value; - U(br, r._currentValue), (r._currentValue = l); - break; - case 13: - if (((r = t.memoizedState), r !== null)) - return r.dehydrated !== null - ? (U(B, B.current & 1), (t.flags |= 128), null) - : n & t.child.childLanes - ? $a(e, t, n) - : (U(B, B.current & 1), - (e = nt(e, t, n)), - e !== null ? e.sibling : null); - U(B, B.current & 1); - break; - case 19: - if (((r = (n & t.childLanes) !== 0), e.flags & 128)) { - if (r) return Va(e, t, n); - t.flags |= 128; - } - if ( - ((l = t.memoizedState), - l !== null && - ((l.rendering = null), (l.tail = null), (l.lastEffect = null)), - U(B, B.current), - r) - ) - break; - return null; - case 22: - case 23: - return (t.lanes = 0), Fa(e, t, n); - } - return nt(e, t, n); -} -var Ba, Mi, Wa, Ha; -Ba = function (e, t) { - for (var n = t.child; n !== null; ) { - if (n.tag === 5 || n.tag === 6) e.appendChild(n.stateNode); - else if (n.tag !== 4 && n.child !== null) { - (n.child.return = n), (n = n.child); - continue; - } - if (n === t) break; - for (; n.sibling === null; ) { - if (n.return === null || n.return === t) return; - n = n.return; - } - (n.sibling.return = n.return), (n = n.sibling); - } -}; -Mi = function () {}; -Wa = function (e, t, n, r) { - var l = e.memoizedProps; - if (l !== r) { - (e = t.stateNode), Lt(He.current); - var i = null; - switch (n) { - case "input": - (l = li(e, l)), (r = li(e, r)), (i = []); - break; - case "select": - (l = H({}, l, { value: void 0 })), - (r = H({}, r, { value: void 0 })), - (i = []); - break; - case "textarea": - (l = oi(e, l)), (r = oi(e, r)), (i = []); - break; - default: - typeof l.onClick != "function" && - typeof r.onClick == "function" && - (e.onclick = Xr); - } - ai(n, r); - var u; - n = null; - for (f in l) - if (!r.hasOwnProperty(f) && l.hasOwnProperty(f) && l[f] != null) - if (f === "style") { - var s = l[f]; - for (u in s) s.hasOwnProperty(u) && (n || (n = {}), (n[u] = "")); - } else - f !== "dangerouslySetInnerHTML" && - f !== "children" && - f !== "suppressContentEditableWarning" && - f !== "suppressHydrationWarning" && - f !== "autoFocus" && - (An.hasOwnProperty(f) ? i || (i = []) : (i = i || []).push(f, null)); - for (f in r) { - var a = r[f]; - if ( - ((s = l != null ? l[f] : void 0), - r.hasOwnProperty(f) && a !== s && (a != null || s != null)) - ) - if (f === "style") - if (s) { - for (u in s) - !s.hasOwnProperty(u) || - (a && a.hasOwnProperty(u)) || - (n || (n = {}), (n[u] = "")); - for (u in a) - a.hasOwnProperty(u) && s[u] !== a[u] && (n || (n = {}), (n[u] = a[u])); - } else n || (i || (i = []), i.push(f, n)), (n = a); - else - f === "dangerouslySetInnerHTML" - ? ((a = a ? a.__html : void 0), - (s = s ? s.__html : void 0), - a != null && s !== a && (i = i || []).push(f, a)) - : f === "children" - ? (typeof a != "string" && typeof a != "number") || - (i = i || []).push(f, "" + a) - : f !== "suppressContentEditableWarning" && - f !== "suppressHydrationWarning" && - (An.hasOwnProperty(f) - ? (a != null && f === "onScroll" && A("scroll", e), - i || s === a || (i = [])) - : (i = i || []).push(f, a)); - } - n && (i = i || []).push("style", n); - var f = i; - (t.updateQueue = f) && (t.flags |= 4); - } -}; -Ha = function (e, t, n, r) { - n !== r && (t.flags |= 4); -}; -function _n(e, t) { - if (!V) - switch (e.tailMode) { - case "hidden": - t = e.tail; - for (var n = null; t !== null; ) - t.alternate !== null && (n = t), (t = t.sibling); - n === null ? (e.tail = null) : (n.sibling = null); - break; - case "collapsed": - n = e.tail; - for (var r = null; n !== null; ) - n.alternate !== null && (r = n), (n = n.sibling); - r === null - ? t || e.tail === null - ? (e.tail = null) - : (e.tail.sibling = null) - : (r.sibling = null); - } -} -function ue(e) { - var t = e.alternate !== null && e.alternate.child === e.child, - n = 0, - r = 0; - if (t) - for (var l = e.child; l !== null; ) - (n |= l.lanes | l.childLanes), - (r |= l.subtreeFlags & 14680064), - (r |= l.flags & 14680064), - (l.return = e), - (l = l.sibling); - else - for (l = e.child; l !== null; ) - (n |= l.lanes | l.childLanes), - (r |= l.subtreeFlags), - (r |= l.flags), - (l.return = e), - (l = l.sibling); - return (e.subtreeFlags |= r), (e.childLanes = n), t; -} -function mf(e, t, n) { - var r = t.pendingProps; - switch ((fu(t), t.tag)) { - case 2: - case 16: - case 15: - case 0: - case 11: - case 7: - case 8: - case 12: - case 9: - case 14: - return ue(t), null; - case 1: - return ve(t.type) && Gr(), ue(t), null; - case 3: - return ( - (r = t.stateNode), - fn(), - $(me), - $(se), - Su(), - r.pendingContext && - ((r.context = r.pendingContext), (r.pendingContext = null)), - (e === null || e.child === null) && - (Sr(t) - ? (t.flags |= 4) - : e === null || - (e.memoizedState.isDehydrated && !(t.flags & 256)) || - ((t.flags |= 1024), Me !== null && (Hi(Me), (Me = null)))), - Mi(e, t), - ue(t), - null - ); - case 5: - wu(t); - var l = Lt(Jn.current); - if (((n = t.type), e !== null && t.stateNode != null)) - Wa(e, t, n, r, l), - e.ref !== t.ref && ((t.flags |= 512), (t.flags |= 2097152)); - else { - if (!r) { - if (t.stateNode === null) throw Error(w(166)); - return ue(t), null; - } - if (((e = Lt(He.current)), Sr(t))) { - (r = t.stateNode), (n = t.type); - var i = t.memoizedProps; - switch (((r[Be] = t), (r[Gn] = i), (e = (t.mode & 1) !== 0), n)) { - case "dialog": - A("cancel", r), A("close", r); - break; - case "iframe": - case "object": - case "embed": - A("load", r); - break; - case "video": - case "audio": - for (l = 0; l < Tn.length; l++) A(Tn[l], r); - break; - case "source": - A("error", r); - break; - case "img": - case "image": - case "link": - A("error", r), A("load", r); - break; - case "details": - A("toggle", r); - break; - case "input": - Qu(r, i), A("invalid", r); - break; - case "select": - (r._wrapperState = { wasMultiple: !!i.multiple }), A("invalid", r); - break; - case "textarea": - Yu(r, i), A("invalid", r); - } - ai(n, i), (l = null); - for (var u in i) - if (i.hasOwnProperty(u)) { - var s = i[u]; - u === "children" - ? typeof s == "string" - ? r.textContent !== s && - (i.suppressHydrationWarning !== !0 && wr(r.textContent, s, e), - (l = ["children", s])) - : typeof s == "number" && - r.textContent !== "" + s && - (i.suppressHydrationWarning !== !0 && wr(r.textContent, s, e), - (l = ["children", "" + s])) - : An.hasOwnProperty(u) && - s != null && - u === "onScroll" && - A("scroll", r); - } - switch (n) { - case "input": - fr(r), Ku(r, i, !0); - break; - case "textarea": - fr(r), Xu(r); - break; - case "select": - case "option": - break; - default: - typeof i.onClick == "function" && (r.onclick = Xr); - } - (r = l), (t.updateQueue = r), r !== null && (t.flags |= 4); - } else { - (u = l.nodeType === 9 ? l : l.ownerDocument), - e === "http://www.w3.org/1999/xhtml" && (e = ys(n)), - e === "http://www.w3.org/1999/xhtml" - ? n === "script" - ? ((e = u.createElement("div")), - (e.innerHTML = " - + + + WxAgent 工作台 + +
diff --git a/control-plane/web/index.html b/control-plane/web/index.html index 54c30c8..a887e2a 100644 --- a/control-plane/web/index.html +++ b/control-plane/web/index.html @@ -3,8 +3,9 @@ - - WxAgent 控制面 + + + WxAgent 工作台
diff --git a/control-plane/web/src/main.jsx b/control-plane/web/src/main.jsx index 65b7811..0fbf715 100644 --- a/control-plane/web/src/main.jsx +++ b/control-plane/web/src/main.jsx @@ -1,20 +1,46 @@ -import { useCallback, useEffect, useState } from "react"; +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import { createRoot } from "react-dom/client"; import "./styles.css"; -const navItems = [ - { id: "overview", label: "总览", icon: "⌂" }, - { id: "nodes", label: "节点", icon: "◈" }, - { id: "tasks", label: "任务", icon: "↗" }, - { id: "events", label: "白名单事件", icon: "◉" }, - { id: "ai", label: "AI 处理", icon: "✦" }, - { id: "audit", label: "操作审计", icon: "≡" }, +const NAV_ITEMS = [ + { id: "messages", label: "消息", description: "查找会话、阅读并回复", icon: "message" }, + { id: "broadcast", label: "群发", description: "创建受控群发任务", icon: "send" }, + { id: "contacts", label: "通讯录", description: "查找联系人和群聊", icon: "contacts" }, + { id: "tasks", label: "任务", description: "查看执行结果", icon: "tasks" }, ]; +const STATUS_LABELS = { + Online: "在线", + Degraded: "需要注意", + Offline: "已离线", + Registered: "已注册", + SessionLocked: "桌面已锁定", + WechatNotRunning: "微信未运行", + WechatNotLoggedIn: "微信未登录", + Pending: "待处理", + WaitingForClient: "等待 Client", + Accepted: "已接收", + Running: "执行中", + Succeeded: "已完成", + Failed: "失败", + Cancelled: "已取消", + Expired: "已过期", + ResultUnconfirmed: "待核对", +}; + +const TERMINAL_TASKS = new Set([ + "Succeeded", + "Failed", + "Cancelled", + "Expired", + "ResultUnconfirmed", +]); + class ApiError extends Error { - constructor(message, status) { + constructor(message, status, code = "RequestFailed") { super(message); this.status = status; + this.code = code; } } @@ -28,14 +54,55 @@ async function api(path, { token, method = "GET", body } = {}) { body: body === undefined ? undefined : JSON.stringify(body), }); const payload = await response.json().catch(() => ({})); - if (!response.ok) + if (!response.ok) { throw new ApiError( - payload.error?.message || `请求失败 (${response.status})`, + payload.error?.message || `请求失败(${response.status})`, response.status, + payload.error?.code, ); + } return payload; } +const wait = (duration) => new Promise((resolve) => window.setTimeout(resolve, duration)); + +async function waitForTask(token, taskId) { + const deadline = Date.now() + 30000; + let delay = 250; + while (Date.now() < deadline) { + const task = await api(`/v1/tasks/${encodeURIComponent(taskId)}`, { token }); + if (task.status === "Succeeded") return task.result?.content || {}; + if (task.status === "WaitingForClient") { + throw new ApiError("当前 Client 暂不可用,请切换 Client 后重试。", 409, "ClientNotReady"); + } + if (TERMINAL_TASKS.has(task.status)) { + throw new ApiError( + task.result?.message || `读取任务${STATUS_LABELS[task.status] || "未完成"}。`, + 409, + task.result?.error_code || task.status, + ); + } + await wait(delay); + delay = Math.min(1000, delay + 150); + } + throw new ApiError("读取超时,请稍后重试。", 408, "ReadTimeout"); +} + +async function readWithTask(path, body, token) { + const created = await api(path, { + token, + method: "POST", + body: { + ...body, + idempotency_key: `${path}-${Date.now()}-${Math.random().toString(36).slice(2)}`, + }, + }); + if (created.status === "WaitingForClient") { + throw new ApiError("当前 Client 暂不可用,请切换 Client 后重试。", 409, "ClientNotReady"); + } + return waitForTask(token, created.task_id); +} + function formatTime(value) { if (!value) return "—"; const date = new Date(value); @@ -44,14 +111,14 @@ function formatTime(value) { : date.toLocaleString("zh-CN", { hour12: false }); } -function shortId(value, length = 12) { +function shortId(value, length = 16) { if (!value) return "—"; return value.length > length ? `${value.slice(0, length)}…` : value; } function statusTone(status) { if (["Online", "Succeeded", "Accepted"].includes(status)) return "positive"; - if (["Running", "Pending", "Degraded"].includes(status)) return "warning"; + if (["Running", "Pending", "WaitingForClient", "Degraded"].includes(status)) return "warning"; if ( [ "Failed", @@ -68,25 +135,89 @@ function statusTone(status) { return "neutral"; } +function statusLabel(status) { + return STATUS_LABELS[status] || status || "未知"; +} + +function isClientAvailable(node) { + return Boolean(node && ["Online", "Degraded", "Registered"].includes(node.status)); +} + +function activeAccount(node) { + if (!node) return ""; + if (node.active_account_id) return node.active_account_id; + return node.accounts?.find((account) => account.active && account.verified)?.account_id || ""; +} + +function extractItems(content, keys) { + if (Array.isArray(content)) return content; + for (const key of keys) { + if (Array.isArray(content?.[key])) return content[key]; + } + return []; +} + +function normalizeSessions(content) { + return extractItems(content, ["items", "sessions", "chats"]).map((item, index) => ({ + id: String(item.chat_id ?? item.chatId ?? item.session_id ?? item.id ?? index), + title: String(item.name ?? item.display_name ?? item.displayName ?? item.nickname ?? item.chat_id ?? item.id ?? "未命名会话"), + preview: String(item.last_message ?? item.lastMessage ?? item.preview ?? "暂无最近消息"), + unread: Number(item.unread_count ?? item.unreadCount ?? 0), + type: item.chat_type ?? item.chatType ?? "Private", + })); +} + +function normalizeMessages(content) { + return extractItems(content, ["items", "messages"]).map((item, index) => ({ + id: String(item.message_id ?? item.messageId ?? item.id ?? index), + sender: String(item.sender ?? item.sender_name ?? item.senderName ?? "对方"), + text: typeof item === "string" ? item : String(item.content ?? item.text ?? item.message ?? ""), + at: item.occurred_at ?? item.occurredAt ?? item.created_at ?? item.createdAt, + })); +} + +function normalizeContacts(content) { + return extractItems(content, ["items", "contacts", "sessions"]).map((item, index) => ({ + id: String(item.contact_id ?? item.contactId ?? item.chat_id ?? item.chatId ?? item.id ?? index), + title: String(item.name ?? item.display_name ?? item.displayName ?? item.nickname ?? item.contact_id ?? item.id ?? "未命名联系人"), + type: item.chat_type ?? item.chatType ?? (item.is_group ? "Group" : "Private"), + detail: String(item.remark ?? item.alias ?? item.account_id ?? item.accountId ?? ""), + })); +} + +function Icon({ name, size = 18 }) { + const paths = { + message: <>, + send: <>, + contacts: <>, + tasks: <>, + settings: <>, + refresh: <>, + chevron: , + search: <>, + shield: <>, + alert: <>, + close: <>, + logout: <>, + arrow: <>, + check: , + }; + return ( + + ); +} + function StatusBadge({ value }) { return ( - {value || "Unknown"} + {statusLabel(value)} ); } -function Metric({ label, value, detail, tone = "blue" }) { - return ( -
-
{label}
-
{value}
-
{detail}
-
- ); -} - function Login({ onLogin }) { const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); @@ -97,10 +228,7 @@ function Login({ onLogin }) { setError(""); setBusy(true); try { - const result = await api("/v1/auth/login", { - method: "POST", - body: { username, password }, - }); + const result = await api("/v1/auth/login", { method: "POST", body: { username, password } }); onLogin(result.access_token, username); } catch (reason) { setError(reason.message); @@ -110,44 +238,19 @@ function Login({ onLogin }) { }; return (
-
+
W
-
WXAGENT CONTROL PLANE
-

欢迎回来

-

- 登录远程节点控制中心,查看连接状态并管理已授权任务。 -

+

WXAGENT WORKSPACE

+

进入工作台

+

连接已授权的 Client,处理消息、通讯录和任务结果。

- - - {error &&
{error}
} - + + + {error &&
{error}
} +
-
- 会话仅保存在当前浏览器标签页 -
-
+

会话只保存在当前浏览器标签页

+
); } @@ -157,1248 +260,281 @@ function Sidebar({ view, setView, onLogout, username }) { ); } -function Topbar({ title, subtitle, onRefresh, loading }) { +function Topbar({ title, subtitle, nodes, selectedClientId, onClientChange, onRefresh, loading }) { + const selected = nodes.find((node) => node.node_id === selectedClientId); return (
-
-
CONTROL PLANE / {title.toUpperCase()}
-

{title}

-

{subtitle}

+

{title}

{subtitle}

+
+ + {selected && } +
-
); } -function Overview({ nodes, tasks, events, onView }) { - const online = nodes.filter((node) => node.status === "Online").length; - const activeTasks = tasks.filter((task) => - ["Pending", "Accepted", "Running"].includes(task.status), - ).length; - const uncertain = tasks.filter( - (task) => task.status === "ResultUnconfirmed", - ).length; - const latestEvents = events.slice(0, 5); - return ( - <> -
- - - - -
-
-
-
-
-

节点健康

-

最近心跳与微信会话状态

-
- -
- {nodes.length === 0 ? ( - - ) : ( -
- {nodes.slice(0, 5).map((node) => ( -
-
- {node.node_id.slice(0, 1).toUpperCase()} -
-
- {node.node_id} - - {node.wechat_logged_in ? "微信已登录" : "微信未登录"} ·{" "} - {formatTime(node.last_heartbeat_at)} - -
- -
- ))} -
- )} -
-
-
-
-

最近白名单事件

-

中心已持久化的数据

-
- -
- {latestEvents.length === 0 ? ( - - ) : ( -
- {latestEvents.map((event) => ( -
-
-
- {shortId(event.chat_id)} - - {event.chat_type} · {formatTime(event.received_at)} - -
- - {event.content || "无正文"} - -
- ))} -
- )} -
-
- - ); +function ConnectionBanner({ nodes, selectedNode, onSettings }) { + if (!nodes.length) { + return
还没有可用 Client请启动已配置的 Desktop Agent;浏览器不会模拟连接状态。
; + } + if (!isClientAvailable(selectedNode)) { + const other = nodes.some(isClientAvailable); + return
当前 Client 不可用{other ? "其它 Client 不受影响,请从顶部切换。" : "所有 Client 当前都不可用,请先恢复连接。"}
; + } + if (!activeAccount(selectedNode)) { + return
当前 Client 尚未确认微信账号只读数据需要已验证的活动账号,先完成账号绑定后再操作。
; + } + return null; } -function NodesView({ nodes }) { - return ( -
-
-
-

节点管理

-

节点主动出站连接,状态来自最近一次心跳。

-
- {nodes.length} 个节点 -
- {nodes.length === 0 ? ( - - ) : ( -
- - - - - - - - - - - - - - {nodes.map((node) => ( - - - - - - - - - - ))} - -
节点状态微信状态活动账号能力最近心跳上报配置
-
-
- {node.node_id.slice(0, 1).toUpperCase()} -
-
- {node.node_id} - - {node.agent_version || "—"} ·{" "} - {node.protocol_version || "—"} - -
-
-
- - - - {node.wechat_running - ? node.wechat_logged_in - ? "已登录" - : "未登录" - : "未运行"} - - {node.session_locked && ( - 桌面已锁定 - )} - {node.active_account_id || "—"} - - {node.capabilities?.length || 0} - {" "} - 项 - {formatTime(node.last_heartbeat_at)}v{node.reporting_config_version ?? 0}
-
- )} -
- ); +function ContextEmpty({ title = "没有选中的 Client", text = "请先连接并选择一个可用 Client。", onSettings }) { + return

{title}

{text}

{onSettings && }
; } -function TasksView({ nodes, tasks, token, onChanged }) { - const [showCreate, setShowCreate] = useState(false); - const [busyId, setBusyId] = useState(""); - const [filter, setFilter] = useState("all"); - const visible = tasks.filter( - (task) => filter === "all" || task.status === filter, - ); - const cancel = async (task) => { - setBusyId(task.task_id); - try { - await api(`/v1/tasks/${encodeURIComponent(task.task_id)}/cancel`, { - token, - method: "POST", - }); - onChanged(); - } catch (error) { - window.alert(error.message); - } finally { - setBusyId(""); - } - }; - return ( - <> -
-
-
-

任务队列

-

任务按节点与账号路由,取消请求需等待节点确认。

-
-
- - -
-
- {visible.length === 0 ? ( - - ) : ( -
- - - - - - - - - - - - - {visible.map((task) => ( - - - - - - - - - - ))} - -
任务路由状态租约更新时间结果 -
-
- -
- {shortId(task.task_id, 16)} - - {task.kind} · {shortId(task.idempotency_key, 16)} - -
-
-
- {task.node_id} - - 账号 {task.account_id} - - - - {task.cancel_requested_at && - ![ - "Succeeded", - "Failed", - "Cancelled", - "Expired", - "ResultUnconfirmed", - ].includes(task.status) && ( - - 取消待确认 - - )} - - {task.lease_generation - ? `第 ${task.lease_generation} 代` - : "未分配"} - {formatTime(task.updated_at)} - {task.result?.error_code ? ( - - {task.result.error_code} - - ) : ( - task.result?.message || "—" - )} - - {![ - "Succeeded", - "Failed", - "Cancelled", - "Expired", - "ResultUnconfirmed", - ].includes(task.status) && ( - - )} -
-
- )} -
- {showCreate && ( - setShowCreate(false)} - onCreated={() => { - setShowCreate(false); - onChanged(); - }} - /> - )} - - ); +function LoadingState({ text = "正在读取…" }) { + return
{text}
; } -function TaskModal({ nodes, token, onClose, onCreated }) { - const [nodeId, setNodeId] = useState(nodes[0]?.node_id || ""); - const [accountId, setAccountId] = useState(nodes[0]?.active_account_id || ""); - const [targetId, setTargetId] = useState(""); - const [text, setText] = useState(""); - const [error, setError] = useState(""); - const [busy, setBusy] = useState(false); - const submit = async (event) => { - event.preventDefault(); - setBusy(true); - setError(""); - try { - await api("/v1/tasks", { - token, - method: "POST", - body: { - node_id: nodeId, - account_id: accountId, - kind: "send-text", - idempotency_key: crypto.randomUUID(), - payload: { target_id: targetId, text, confirmed: true }, - }, - }); - onCreated(); - } catch (reason) { - setError(reason.message); - } finally { - setBusy(false); - } - }; - return ( -
event.target === event.currentTarget && onClose()} - > -
-
-
-
NEW REMOTE TASK
-

发送文本消息

-

仅允许经过节点命令白名单校验的 send-text 操作。

-
- -
-
- - - -