From 71059834e7034d5b2dfac239f9dc640243094061 Mon Sep 17 00:00:00 2001 From: Julian Sommer <115516918+juliansommer@users.noreply.github.com> Date: Wed, 23 Sep 2026 09:02:09 +1000 Subject: [PATCH] feat(gpu): multi-GPU instance types (#1099) --- docs/compute/gpu-passthrough/README.md | 15 + spinifex/daemon/capacityreservation.go | 19 +- spinifex/daemon/daemon.go | 46 ++- spinifex/daemon/daemon_gpu_handlers_test.go | 49 +-- spinifex/daemon/daemon_handlers.go | 24 +- spinifex/daemon/gpu_adapter.go | 52 +++- spinifex/daemon/gpu_adapter_test.go | 55 ++++ spinifex/daemon/gpu_admission_test.go | 234 +++++++++++++++ spinifex/daemon/resource_test.go | 12 +- spinifex/gpu/manager.go | 45 ++- spinifex/gpu/manager_available_test.go | 104 +++++++ spinifex/gpu/manager_release_scope_test.go | 70 +++++ spinifex/handlers/ec2/instance/service.go | 9 +- .../handlers/ec2/instance/service_impl.go | 83 ++++-- .../ec2/instance/service_impl_test.go | 184 +++++++++++- spinifex/handlers/ecs/capacity.go | 9 +- spinifex/handlers/eks/nodegroup.go | 8 + spinifex/instancetypes/definitions.go | 140 +++++++-- spinifex/instancetypes/generate.go | 140 ++++++--- spinifex/instancetypes/generate_test.go | 10 +- spinifex/instancetypes/gpu_type_name_test.go | 9 + spinifex/instancetypes/multi_gpu_test.go | 279 ++++++++++++++++++ .../frontend/dist/assets/_id-BnUjyn0E.js | 1 + .../{_id-DHGMf_p-.js => _id-U4BZhcdn.js} | 4 +- .../frontend/dist/assets/_id-x-YmyORB.js | 1 - .../{index-CJ3qP1oV.js => index-BrcYJ9RS.js} | 6 +- .../{nodes-CWh9D30I.js => nodes-DExo87Po.js} | 2 +- .../spinifexui/frontend/dist/index.html | 4 +- .../spinifexui/frontend/src/queries/admin.ts | 2 +- .../(instances)/describe-instances/$id.tsx | 2 +- .../ec2/-components/gpu-detail-card.test.tsx | 34 ++- .../_auth/ec2/-components/gpu-detail-card.tsx | 48 ++- .../frontend/src/routes/_auth/nodes.tsx | 17 +- spinifex/types/node.go | 6 +- 34 files changed, 1532 insertions(+), 191 deletions(-) create mode 100644 spinifex/daemon/gpu_adapter_test.go create mode 100644 spinifex/daemon/gpu_admission_test.go create mode 100644 spinifex/gpu/manager_available_test.go create mode 100644 spinifex/gpu/manager_release_scope_test.go create mode 100644 spinifex/instancetypes/multi_gpu_test.go create mode 100644 spinifex/services/spinifexui/frontend/dist/assets/_id-BnUjyn0E.js rename spinifex/services/spinifexui/frontend/dist/assets/{_id-DHGMf_p-.js => _id-U4BZhcdn.js} (95%) delete mode 100644 spinifex/services/spinifexui/frontend/dist/assets/_id-x-YmyORB.js rename spinifex/services/spinifexui/frontend/dist/assets/{index-CJ3qP1oV.js => index-BrcYJ9RS.js} (99%) rename spinifex/services/spinifexui/frontend/dist/assets/{nodes-CWh9D30I.js => nodes-DExo87Po.js} (67%) diff --git a/docs/compute/gpu-passthrough/README.md b/docs/compute/gpu-passthrough/README.md index 91f5f8f4f..4f8b469f7 100644 --- a/docs/compute/gpu-passthrough/README.md +++ b/docs/compute/gpu-passthrough/README.md @@ -136,6 +136,21 @@ aws ec2 run-instances \ --key-name spinifex-key ``` +### Multi-GPU Instances + +The GPU count comes from the instance type, exactly as it does in EC2. AWS multi-GPU types pair eight GPUs with a very large host — `p4d.24xlarge` is 96 vCPU and 1152 GiB, — so an edge rig with eight cards and 256 GiB cannot admit them even though it has the GPUs. For those hosts Spinifex offers its own `gpu.*` family, which is not an EC2 family: + +```bash +aws ec2 run-instances \ + --image-id $GPU_AMI \ + --instance-type gpu.8x4c \ + --key-name spinifex-key +``` + +`gpu.xc` is that many GPUs at that many vCPU each, so `gpu.8x4c` is eight GPUs on 32 vCPU and 128 GiB. Counts run in three tiers — `2c`, `4c` and `8c` — all at 4 GiB of memory per vCPU. The GPU model and VRAM reported in `DescribeInstanceTypes` are whatever the node discovered, so a `gpu.8x4c` on an 8×RTX 3090 box advertises eight RTX 3090s at 24 GiB each. + +A node holding more than one distinct GPU model offers single-GPU types only, and logs each withheld type by name. Two devices count as the same model when their reported name and VRAM match, which keeps a mixed-SKU H100 node fully usable. + To verify the GPU is visible from inside the instance, SSH in and run: ```bash diff --git a/spinifex/daemon/capacityreservation.go b/spinifex/daemon/capacityreservation.go index 720ba47ab..893f5d216 100644 --- a/spinifex/daemon/capacityreservation.go +++ b/spinifex/daemon/capacityreservation.go @@ -7,6 +7,7 @@ import ( "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" "github.com/mulgadc/spinifex/spinifex/awserrors" + "github.com/mulgadc/spinifex/spinifex/instancetypes" ) // capacityReservation is an in-memory On-Demand Capacity Reservation pinned to @@ -83,7 +84,8 @@ func (rm *ResourceManager) CancelReservation(id, accountID string) (*capacityRes // at create moves to allocated* and ConsumedCount bumps, so schedulable capacity // is unchanged by construction. Errors: unknown/foreign id -> // InvalidCapacityReservationId.NotFound; type mismatch -> InvalidParameterValue; -// already full -> ReservationCapacityExceeded. +// already full -> ReservationCapacityExceeded; no free GPU -> +// InsufficientInstanceCapacity. func (rm *ResourceManager) AllocateFromReservation(crID, accountID string, it *ec2.InstanceTypeInfo) error { rm.mu.Lock() rec, ok := rm.reservations[crID] @@ -99,6 +101,13 @@ func (rm *ResourceManager) AllocateFromReservation(crID, accountID string, it *e rm.mu.Unlock() return errors.New(awserrors.ErrorReservationCapacityExceeded) } + // Re-checked under the write lock, as the general path does: two targeted + // launches can both clear ReservationAvailable and only one find a GPU. + if instancetypes.IsGPUType(it) && + rm.admissibleGPUInstances(aws.StringValue(it.InstanceType)) < 1 { + rm.mu.Unlock() + return errors.New(awserrors.ErrorInsufficientInstanceCapacity) + } rm.reservedCRVCPU -= rec.VCPUPerInstance rm.reservedCRMem -= rec.MemGBPerInstance rm.allocatedVCPU += rec.VCPUPerInstance @@ -136,6 +145,8 @@ func (rm *ResourceManager) ReleaseToReservation(crID string, it *ec2.InstanceTyp // (Total - Consumed), or 0 when the reservation is unknown, owned by another // account, or for a different instance type. The daemon handler's up-front check // turns those zero cases into precise errors before the launch loop. +// A GPU type is additionally gated on free GPUs: a reservation reserves no pool +// entry, so its free slots say nothing about whether a GPU is there to claim. func (rm *ResourceManager) ReservationAvailable(crID, accountID string, it *ec2.InstanceTypeInfo) int { rm.mu.RLock() defer rm.mu.RUnlock() @@ -143,7 +154,11 @@ func (rm *ResourceManager) ReservationAvailable(crID, accountID string, it *ec2. if !ok || rec.AccountID != accountID || rec.InstanceType != aws.StringValue(it.InstanceType) { return 0 } - return rec.TotalInstanceCount - rec.ConsumedCount + free := rec.TotalInstanceCount - rec.ConsumedCount + if instancetypes.IsGPUType(it) { + free = min(free, rm.admissibleGPUInstances(aws.StringValue(it.InstanceType))) + } + return free } // ValidateReservationTarget is the owning daemon's up-front semantic check for a diff --git a/spinifex/daemon/daemon.go b/spinifex/daemon/daemon.go index 49a914756..1c523324c 100644 --- a/spinifex/daemon/daemon.go +++ b/spinifex/daemon/daemon.go @@ -597,15 +597,7 @@ func (rm *ResourceManager) GetAvailableInstanceTypeInfos(showCapacity bool) []*e // GPU types are capacity-gated by GPU pool size, not host CPU/memory. // The GPU is the scarce resource; CPU/memory on GPU-class hardware is abundant. if instancetypes.IsGPUType(it) { - availGPU := 0 - if rm.gpuManager != nil { - availGPU = rm.gpuManager.Available() - } - gpusNeeded := instancetypes.GPUCountForType(name) - count := 0 - if gpusNeeded > 0 { - count = availGPU / gpusNeeded - } + count := rm.admissibleGPUInstances(name) if showCapacity { for range count { infos = append(infos, it) @@ -696,6 +688,12 @@ func (rm *ResourceManager) GetResourceStats() (totalVCPU int, totalMemGB float64 if typeCap.VCPU == 0 || typeCap.MemoryGB == 0 { continue } + // CPU and memory never bind first on a gpu.* shape, so without this the + // census calls a GPU type schedulable on a node with no free GPU. EKS + // host selection and reservation creation both read this figure. + if instancetypes.IsGPUType(it) { + typeCap.Available = min(typeCap.Available, rm.admissibleGPUInstances(name)) + } caps = append(caps, typeCap) } return totalVCPU, totalMemGB, reservedVCPU, reservedMemGB, allocVCPU, allocMemGB, caps @@ -2757,8 +2755,11 @@ func (d *Daemon) applyGPUConfig(enabled bool) { } mgr, models, migProfiles := buildGPUPool(probe.Devices, d.config.Daemon) d.gpuManager = mgr - d.resourceMgr.reloadGPUTypes(models, migProfiles, mgr) + // Claimer before types: reloadGPUTypes starts advertising GPU types and + // admitting against them, and a launch landing before the claimer is + // wired would otherwise boot without the GPUs it was admitted for. d.instanceService.SetGPUClaimer(&daemonGPUClaimer{d: d}) + d.resourceMgr.reloadGPUTypes(models, migProfiles, mgr) slog.Info("GPU passthrough enabled via config reload", "gpus", len(probe.Devices)) return } @@ -2914,11 +2915,8 @@ func (rm *ResourceManager) admitLocked(instanceType *ec2.InstanceTypeInfo, count requiresGPU := instancetypes.IsGPUType(instanceType) availGPU := 0 - if requiresGPU && rm.gpuManager != nil { - gpusNeeded := instancetypes.GPUCountForType(instanceTypeName) - if gpusNeeded > 0 { - availGPU = rm.gpuManager.Available() / gpusNeeded - } + if requiresGPU { + availGPU = rm.admissibleGPUInstances(instanceTypeName) } budget := canAllocateCount( @@ -2936,6 +2934,24 @@ func (rm *ResourceManager) admitLocked(instanceType *ec2.InstanceTypeInfo, count return n, "budget" } +// admissibleGPUInstances returns how many instances of a GPU type the free pool +// can back. Whole GPUs and MIG slices count separately, so a node with free +// slices and no free whole GPU refuses a whole-GPU type rather than failing it. +func (rm *ResourceManager) admissibleGPUInstances(instanceTypeName string) int { + if rm.gpuManager == nil { + return 0 + } + gpusNeeded := instancetypes.GPUCountForType(instanceTypeName) + if gpusNeeded <= 0 { + return 0 + } + if instancetypes.IsMIGType(instanceTypeName) { + profile := instancetypes.MIGProfileFromType(instanceTypeName) + return rm.gpuManager.AvailableSlices(profile) / gpusNeeded + } + return rm.gpuManager.AvailableWhole() / gpusNeeded +} + // liveMemGate clamps n by current MemAvailable, catching overcommit that the // static -m budget misses. Returns n unchanged when disabled or on read error. func (rm *ResourceManager) liveMemGate(n int, instanceType *ec2.InstanceTypeInfo) int { diff --git a/spinifex/daemon/daemon_gpu_handlers_test.go b/spinifex/daemon/daemon_gpu_handlers_test.go index b292908e7..a1f37ddb7 100644 --- a/spinifex/daemon/daemon_gpu_handlers_test.go +++ b/spinifex/daemon/daemon_gpu_handlers_test.go @@ -133,31 +133,37 @@ func TestHandleNodeStatus_MIG(t *testing.T) { assert.Empty(t, byGI[2].InstanceID, "unclaimed slice is free") } -func TestHandleNodeVMs_GPUAttachment_WholeGPU(t *testing.T) { +func TestHandleNodeVMs_GPUAttachments_WholeGPU(t *testing.T) { daemon := createTestDaemon(t, sharedNATSURL) instanceType := getTestInstanceType(t) - dev := gpu.GPUDevice{PCIAddress: "0000:01:00.0", Model: "NVIDIA A10", MemoryMiB: 23028, IOMMUGroup: -1} - mgr := gpu.NewManager([]gpu.GPUDevice{dev}) - require.NoError(t, mgr.ReclaimByAddress(dev.PCIAddress, "i-gpu-vm")) + first := gpu.GPUDevice{PCIAddress: "0000:01:00.0", Model: "NVIDIA A10", MemoryMiB: 23028, IOMMUGroup: -1} + second := gpu.GPUDevice{PCIAddress: "0000:02:00.0", Model: "NVIDIA A10", MemoryMiB: 23028, IOMMUGroup: -1} + mgr := gpu.NewManager([]gpu.GPUDevice{first, second}) + require.NoError(t, mgr.ReclaimByAddress(first.PCIAddress, "i-gpu-vm")) + require.NoError(t, mgr.ReclaimByAddress(second.PCIAddress, "i-gpu-vm")) daemon.gpuManager = mgr daemon.vmMgr.Insert(&vm.VM{ - ID: "i-gpu-vm", - Status: vm.StateRunning, - InstanceType: instanceType, - GPUAttachments: []gpu.GPUAttachment{{PCIAddress: dev.PCIAddress}}, + ID: "i-gpu-vm", + Status: vm.StateRunning, + InstanceType: instanceType, + GPUAttachments: []gpu.GPUAttachment{ + {PCIAddress: first.PCIAddress}, + {PCIAddress: second.PCIAddress}, + }, }) resp := gpuVMsRequest(t, daemon, "spinifex.node.vms.gpuwhole") require.Len(t, resp.VMs, 1) - require.NotNil(t, resp.VMs[0].GPU) - assert.Equal(t, "NVIDIA A10", resp.VMs[0].GPU.Model) - assert.Equal(t, int64(23028), resp.VMs[0].GPU.VRAMMiB) - assert.Equal(t, dev.PCIAddress, resp.VMs[0].GPU.PCIAddress) - assert.Empty(t, resp.VMs[0].GPU.Profile) - assert.Empty(t, resp.VMs[0].GPU.MdevPath) + require.Len(t, resp.VMs[0].GPUs, 2) + assert.Equal(t, "NVIDIA A10", resp.VMs[0].GPUs[0].Model) + assert.Equal(t, int64(23028), resp.VMs[0].GPUs[0].VRAMMiB) + assert.Equal(t, first.PCIAddress, resp.VMs[0].GPUs[0].PCIAddress) + assert.Equal(t, second.PCIAddress, resp.VMs[0].GPUs[1].PCIAddress) + assert.Empty(t, resp.VMs[0].GPUs[0].Profile) + assert.Empty(t, resp.VMs[0].GPUs[0].MdevPath) } func TestHandleNodeVMs_GPUAttachment_MIG(t *testing.T) { @@ -185,13 +191,12 @@ func TestHandleNodeVMs_GPUAttachment_MIG(t *testing.T) { resp := gpuVMsRequest(t, daemon, "spinifex.node.vms.gpumig") - require.Len(t, resp.VMs, 1) - require.NotNil(t, resp.VMs[0].GPU) - assert.Equal(t, dev.Model, resp.VMs[0].GPU.Model) - assert.Equal(t, int64(24576), resp.VMs[0].GPU.VRAMMiB) - assert.Equal(t, "1g.24gb", resp.VMs[0].GPU.Profile) - assert.Equal(t, mdevPath, resp.VMs[0].GPU.MdevPath) - assert.Empty(t, resp.VMs[0].GPU.PCIAddress) + require.Len(t, resp.VMs[0].GPUs, 1) + assert.Equal(t, dev.Model, resp.VMs[0].GPUs[0].Model) + assert.Equal(t, int64(24576), resp.VMs[0].GPUs[0].VRAMMiB) + assert.Equal(t, "1g.24gb", resp.VMs[0].GPUs[0].Profile) + assert.Equal(t, mdevPath, resp.VMs[0].GPUs[0].MdevPath) + assert.Empty(t, resp.VMs[0].GPUs[0].PCIAddress) } func TestHandleNodeVMs_GPUAttachment_Absent(t *testing.T) { @@ -207,5 +212,5 @@ func TestHandleNodeVMs_GPUAttachment_Absent(t *testing.T) { resp := gpuVMsRequest(t, daemon, "spinifex.node.vms.nogpu") require.Len(t, resp.VMs, 1) - assert.Nil(t, resp.VMs[0].GPU) + assert.Empty(t, resp.VMs[0].GPUs) } diff --git a/spinifex/daemon/daemon_handlers.go b/spinifex/daemon/daemon_handlers.go index df77e7035..004ec06d5 100644 --- a/spinifex/daemon/daemon_handlers.go +++ b/spinifex/daemon/daemon_handlers.go @@ -600,6 +600,26 @@ func resolveVMGPU(att gpu.GPUAttachment, byMdev, byPCI map[string]gpu.PoolEntry) return nil } +// resolveVMGPUs resolves every attachment it can, reporting a short list rather +// than passing it off as complete. One unresolved attachment used to read as no +// GPU at all; eight make a shortened list a plausible wrong answer. +func resolveVMGPUs(instanceID string, attachments []gpu.GPUAttachment, byMdev, byPCI map[string]gpu.PoolEntry) []types.VMGPUInfo { + gpus := make([]types.VMGPUInfo, 0, len(attachments)) + for _, attachment := range attachments { + if info := resolveVMGPU(attachment, byMdev, byPCI); info != nil { + gpus = append(gpus, *info) + continue + } + slog.Warn("VM GPU attachment has no pool entry", + "instanceId", instanceID, "pci", attachment.PCIAddress, "mdev", attachment.MdevPath) + } + if len(gpus) != len(attachments) { + slog.Warn("VM holds GPU attachments that did not resolve", + "instanceId", instanceID, "attached", len(attachments), "resolved", len(gpus)) + } + return gpus +} + // handleNodeVMs responds with the list of VMs running on this node. // Used by the CLI: spx get vms. func (d *Daemon) handleNodeVMs(msg *nats.Msg) string { @@ -622,9 +642,7 @@ func (d *Daemon) handleNodeVMs(msg *nats.Msg) string { if v.Instance != nil && v.Instance.LaunchTime != nil { info.LaunchTime = v.Instance.LaunchTime.Unix() } - if len(v.GPUAttachments) > 0 { - info.GPU = resolveVMGPU(v.GPUAttachments[0], poolByMdev, poolByPCI) - } + info.GPUs = resolveVMGPUs(v.ID, v.GPUAttachments, poolByMdev, poolByPCI) vms = append(vms, info) }) diff --git a/spinifex/daemon/gpu_adapter.go b/spinifex/daemon/gpu_adapter.go index db5e19203..ff2e9bfa3 100644 --- a/spinifex/daemon/gpu_adapter.go +++ b/spinifex/daemon/gpu_adapter.go @@ -1,6 +1,9 @@ package daemon import ( + "errors" + "fmt" + "github.com/mulgadc/spinifex/spinifex/gpu" handlers_ec2_instance "github.com/mulgadc/spinifex/spinifex/handlers/ec2/instance" ) @@ -14,20 +17,47 @@ type daemonGPUClaimer struct { var _ handlers_ec2_instance.GPUClaimer = (*daemonGPUClaimer)(nil) -func (g *daemonGPUClaimer) Claim(instanceID, profileName string) (*gpu.GPUAttachment, error) { - dev, mig, err := g.d.gpuManager.Claim(instanceID, profileName) - if err != nil { - return nil, err +func (g *daemonGPUClaimer) manager() *gpu.Manager { + g.d.mu.Lock() + defer g.d.mu.Unlock() + return g.d.gpuManager +} + +func (g *daemonGPUClaimer) Claim(instanceID, profileName string, count int) ([]gpu.GPUAttachment, error) { + if count < 1 { + return nil, fmt.Errorf("GPU claim count must be positive: %d", count) } - if mig != nil { - return &gpu.GPUAttachment{MdevPath: mig.MdevPath}, nil + mgr := g.manager() + if mgr == nil { + return nil, errors.New("GPU manager is unavailable") } - return &gpu.GPUAttachment{ - PCIAddress: dev.PCIAddress, - XVGAEnabled: gpuXVGAEnabled(dev, g.d.config.Daemon.GPUModelOverrides), - }, nil + + attachments := make([]gpu.GPUAttachment, 0, count) + for range count { + dev, mig, err := mgr.Claim(instanceID, profileName) + if err != nil { + if rollbackErr := mgr.Release(instanceID); rollbackErr != nil && + !errors.Is(rollbackErr, gpu.ErrNoGPUClaimed) { + return nil, errors.Join(err, fmt.Errorf("roll back GPU claims: %w", rollbackErr)) + } + return nil, err + } + if mig != nil { + attachments = append(attachments, gpu.GPUAttachment{MdevPath: mig.MdevPath}) + continue + } + attachments = append(attachments, gpu.GPUAttachment{ + PCIAddress: dev.PCIAddress, + XVGAEnabled: gpuXVGAEnabled(dev, g.d.config.Daemon.GPUModelOverrides), + }) + } + return attachments, nil } func (g *daemonGPUClaimer) Release(instanceID string) error { - return g.d.gpuManager.Release(instanceID) + mgr := g.manager() + if mgr == nil { + return gpu.ErrNoGPUClaimed + } + return mgr.Release(instanceID) } diff --git a/spinifex/daemon/gpu_adapter_test.go b/spinifex/daemon/gpu_adapter_test.go new file mode 100644 index 000000000..7e5ee3dbb --- /dev/null +++ b/spinifex/daemon/gpu_adapter_test.go @@ -0,0 +1,55 @@ +//test:in-package — daemonGPUClaimer and its Daemon field are unexported; +package daemon + +import ( + "os" + "path/filepath" + "testing" + + "github.com/mulgadc/spinifex/spinifex/gpu" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func newMIGClaimManager(t *testing.T, count int) *gpu.Manager { + t.Helper() + + dev := gpu.GPUDevice{PCIAddress: "0000:03:00.0", Model: "NVIDIA A10"} + instances := make([]gpu.MIGInstance, 0, count) + for i := range count { + mdevPath := filepath.Join(t.TempDir(), "mdev") + require.NoError(t, os.WriteFile(mdevPath, []byte("mdev"), 0o600)) + instances = append(instances, gpu.MIGInstance{ + GIID: i + 1, + MdevPath: mdevPath, + Profile: gpu.MIGProfile{Name: "1g.10gb", MemoryMiB: 10 * 1024}, + }) + } + mgr := gpu.NewManager(nil) + mgr.AddMIGInstances(dev, instances) + return mgr +} + +func TestDaemonGPUClaimerClaimsRequestedCount(t *testing.T) { + mgr := newMIGClaimManager(t, 2) + claimer := &daemonGPUClaimer{d: &Daemon{gpuManager: mgr}} + + attachments, err := claimer.Claim("i-two-gpu", "1g.10gb", 2) + require.NoError(t, err) + require.Len(t, attachments, 2) + assert.NotEqual(t, attachments[0].MdevPath, attachments[1].MdevPath) + assert.Zero(t, mgr.AvailableSlices("1g.10gb")) + + require.NoError(t, claimer.Release("i-two-gpu")) + assert.Equal(t, 2, mgr.AvailableSlices("1g.10gb")) +} + +func TestDaemonGPUClaimerRollsBackPartialClaim(t *testing.T) { + mgr := newMIGClaimManager(t, 1) + claimer := &daemonGPUClaimer{d: &Daemon{gpuManager: mgr}} + + attachments, err := claimer.Claim("i-too-many", "1g.10gb", 2) + require.Error(t, err) + assert.Nil(t, attachments) + assert.Equal(t, 1, mgr.AvailableSlices("1g.10gb")) +} diff --git a/spinifex/daemon/gpu_admission_test.go b/spinifex/daemon/gpu_admission_test.go new file mode 100644 index 000000000..724b3be33 --- /dev/null +++ b/spinifex/daemon/gpu_admission_test.go @@ -0,0 +1,234 @@ +//test:in-package — drives ResourceManager.canAllocateLocked and builds +package daemon + +import ( + "os" + "path/filepath" + "testing" + "time" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/ec2" + "github.com/mulgadc/spinifex/spinifex/awserrors" + "github.com/mulgadc/spinifex/spinifex/gpu" + "github.com/mulgadc/spinifex/spinifex/types" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// gpuTypeForTest builds an InstanceTypeInfo whose cpu/mem fit the test node +// comfortably, so only the GPU gate can bind the admission count. +func gpuTypeForTest(name string, gpus int64) *ec2.InstanceTypeInfo { + return &ec2.InstanceTypeInfo{ + InstanceType: aws.String(name), + VCpuInfo: &ec2.VCpuInfo{DefaultVCpus: aws.Int64(2)}, + MemoryInfo: &ec2.MemoryInfo{SizeInMiB: aws.Int64(1024)}, + GpuInfo: &ec2.GpuInfo{ + Gpus: []*ec2.GpuDeviceInfo{{ + Count: aws.Int64(gpus), + Manufacturer: aws.String("NVIDIA"), + Name: aws.String("A10G"), + MemoryInfo: &ec2.GpuDeviceMemoryInfo{SizeInMiB: aws.Int64(24576)}, + }}, + TotalGpuMemoryInMiB: aws.Int64(24576 * gpus), + }, + } +} + +// carvedMIGManager returns a manager holding only carved MIG slices — no whole +// GPU is free. +func carvedMIGManager(t *testing.T, slices int) *gpu.Manager { + t.Helper() + root := t.TempDir() + dev := gpu.GPUDevice{ + PCIAddress: "0000:01:00.0", VendorID: "10de", DeviceID: "20b5", + MIGCapable: true, MIGEnabled: true, IOMMUGroup: -1, + } + instances := make([]gpu.MIGInstance, slices) + for i := range instances { + path := filepath.Join(root, string(rune('a'+i))) + require.NoError(t, os.MkdirAll(path, 0755)) + instances[i] = gpu.MIGInstance{ + GIID: i + 1, + MdevPath: path, + Profile: gpu.MIGProfile{Name: "1g.10gb", MemoryMiB: 10240}, + } + } + m := gpu.NewManager(nil) + m.AddMIGInstances(dev, instances) + return m +} + +// A node with free slices and no free whole GPU must refuse a whole-GPU type at +// admission, not fail it later at Claim. +func TestAdmission_FreeSlicesDoNotBackAWholeGPUType(t *testing.T) { + rm := &ResourceManager{ + hostVCPU: 64, + hostMemGB: 256.0, + gpuManager: carvedMIGManager(t, 7), + } + + assert.Zero(t, rm.canAllocateLocked(gpuTypeForTest("g5.xlarge", 1), 10), + "seven slices are not one whole GPU") + assert.Equal(t, 7, rm.canAllocateLocked(gpuTypeForTest("mig.1g.10gb", 1), 10), + "the same seven slices back seven MIG instances") + assert.Zero(t, rm.canAllocateLocked(gpuTypeForTest("mig.3g.40gb", 1), 10), + "a profile with no slices carved is not available") +} + +// A multi-GPU type divides the free whole GPUs by its own count. +func TestAdmission_MultiGPUTypeDividesTheWholePool(t *testing.T) { + devices := make([]gpu.GPUDevice, 8) + for i := range devices { + devices[i] = gpu.GPUDevice{PCIAddress: string(rune('a' + i)), IOMMUGroup: i} + } + rm := &ResourceManager{ + hostVCPU: 256, + hostMemGB: 1024.0, + gpuManager: gpu.NewManager(devices), + } + + assert.Equal(t, 8, rm.canAllocateLocked(gpuTypeForTest("gpu.1x4c", 1), 10)) + assert.Equal(t, 2, rm.canAllocateLocked(gpuTypeForTest("gpu.4x4c", 4), 10)) + assert.Equal(t, 1, rm.canAllocateLocked(gpuTypeForTest("g5.48xlarge", 8), 10)) +} + +// A reservation is a counter over vCPU and memory slots and reserves no pool +// entry, so its free slots say nothing about whether a GPU is there to claim. +func TestReservationAvailable_GatesOnFreeGPUs(t *testing.T) { + gpuType := gpuTypeForTest("gpu.4x4c", 4) + devices := make([]gpu.GPUDevice, 4) + for i := range devices { + devices[i] = gpu.GPUDevice{PCIAddress: string(rune('a' + i)), IOMMUGroup: i} + } + mgr := gpu.NewManager(devices) + + rm := &ResourceManager{ + hostVCPU: 64, + hostMemGB: 256.0, + gpuManager: mgr, + instanceTypes: map[string]*ec2.InstanceTypeInfo{"gpu.4x4c": gpuType}, + reservations: make(map[string]*capacityReservation), + } + + // Three slots reserved, but only four GPUs on the node — one instance. + require.NoError(t, rm.CreateReservation(&capacityReservation{ + ID: "cr-gpu", + AccountID: "acct-a", + InstanceType: "gpu.4x4c", + AvailabilityZone: "ap-southeast-2a", + TotalInstanceCount: 3, + VCPUPerInstance: 2, + MemGBPerInstance: 1.0, + InstanceMatchCriteria: "open", + Tenancy: "default", + InstancePlatform: "Linux/UNIX", + CreateDate: time.Now(), + })) + + assert.Equal(t, 1, rm.ReservationAvailable("cr-gpu", "acct-a", gpuType), + "three reserved slots cannot outrun four GPUs at four per instance") + + // With the GPUs gone from the pool the reservation backs nothing at all. + for i := range devices { + mgr.MarkFailed(devices[i].PCIAddress) + } + assert.Zero(t, rm.ReservationAvailable("cr-gpu", "acct-a", gpuType)) +} + +// ReservationAvailable reserves nothing, so two targeted launches can both +// clear it. Without the write-lock re-check the loser consumes a reservation +// slot and then dies at claim time with no GPU to take. +func TestAllocateFromReservation_RechecksFreeGPUs(t *testing.T) { + gpuType := gpuTypeForTest("gpu.4x4c", 4) + devices := make([]gpu.GPUDevice, 4) + for i := range devices { + devices[i] = gpu.GPUDevice{PCIAddress: string(rune('a' + i)), IOMMUGroup: i} + } + mgr := gpu.NewManager(devices) + + rm := &ResourceManager{ + hostVCPU: 64, + hostMemGB: 256.0, + gpuManager: mgr, + instanceTypes: map[string]*ec2.InstanceTypeInfo{"gpu.4x4c": gpuType}, + reservations: make(map[string]*capacityReservation), + } + require.NoError(t, rm.CreateReservation(&capacityReservation{ + ID: "cr-gpu", + AccountID: "acct-a", + InstanceType: "gpu.4x4c", + AvailabilityZone: "ap-southeast-2a", + TotalInstanceCount: 3, + VCPUPerInstance: 2, + MemGBPerInstance: 1.0, + InstanceMatchCriteria: "open", + Tenancy: "default", + InstancePlatform: "Linux/UNIX", + CreateDate: time.Now(), + })) + + require.NoError(t, rm.AllocateFromReservation("cr-gpu", "acct-a", gpuType), + "the first launch takes the node's only four GPUs") + + // The GPUs leave the pool between the two calls — claimed by the winner of + // the race, failed, or dropped by a SIGHUP rebuild. Two slots still remain. + for i := range devices { + mgr.MarkFailed(devices[i].PCIAddress) + } + + err := rm.AllocateFromReservation("cr-gpu", "acct-a", gpuType) + require.Error(t, err, "free slots do not conjure a GPU") + assert.Equal(t, awserrors.ErrorInsufficientInstanceCapacity, err.Error(), + "the reservation is not what ran out") +} + +// The node census sized GPU types on host CPU and memory alone, which for the +// gpu.* shapes is never the binding constraint. EKS host selection and +// CreateCapacityReservation both size themselves from this figure. +func TestGetResourceStats_GPUTypesAreGatedOnGPUs(t *testing.T) { + gpuType := gpuTypeForTest("gpu.4x4c", 4) + devices := []gpu.GPUDevice{ + {PCIAddress: "a", IOMMUGroup: 0}, + {PCIAddress: "b", IOMMUGroup: 1}, + {PCIAddress: "c", IOMMUGroup: 2}, + {PCIAddress: "d", IOMMUGroup: 3}, + } + mgr := gpu.NewManager(devices) + rm := &ResourceManager{ + hostVCPU: 64, + hostMemGB: 256.0, + gpuManager: mgr, + instanceTypes: map[string]*ec2.InstanceTypeInfo{"gpu.4x4c": gpuType}, + reservations: make(map[string]*capacityReservation), + } + + capFor := func() types.InstanceTypeCap { + t.Helper() + _, _, _, _, _, _, caps := rm.GetResourceStats() + for _, c := range caps { + if c.Name == "gpu.4x4c" { + return c + } + } + t.Fatal("gpu.4x4c missing from the census") + return types.InstanceTypeCap{} + } + + assert.Equal(t, 1, capFor().Available, "four GPUs back one four-GPU instance") + + for i := range devices { + mgr.MarkFailed(devices[i].PCIAddress) + } + assert.Zero(t, capFor().Available, + "a node with no free GPU must not advertise a GPU type as schedulable") +} + +// A non-GPU reservation keeps answering on slots alone. +func TestReservationAvailable_NonGPUTypeIsUngated(t *testing.T) { + rm := newReservationTestRM() + rm.gpuManager = gpu.NewManager(nil) + require.NoError(t, rm.CreateReservation(microReservation("cr-1", "acct-a", 2))) + + assert.Equal(t, 2, rm.ReservationAvailable("cr-1", "acct-a", microType())) +} diff --git a/spinifex/daemon/resource_test.go b/spinifex/daemon/resource_test.go index d720026ee..c5d167369 100644 --- a/spinifex/daemon/resource_test.go +++ b/spinifex/daemon/resource_test.go @@ -1,6 +1,7 @@ package daemon import ( + "fmt" "testing" "github.com/aws/aws-sdk-go/aws" @@ -388,14 +389,19 @@ func TestCanAllocateLocked_MIGvsWholeGPU(t *testing.T) { } // Host with 8 schedulable vCPUs and 32 GiB schedulable memory (after - // reserve), and a GPU pool with 5 free slots — plenty for the GPU-slot - // gate so these assertions exercise the cpu/mem gate in isolation. + // reserve), and a GPU pool with 5 free whole GPUs and 5 MIG-capable ones — + // plenty for either GPU gate, so these assertions exercise the cpu/mem gate + // in isolation. + mgr := gpu.NewManager(make([]gpu.GPUDevice, 5)) + for i := range 5 { + mgr.AddMIGGPU(gpu.GPUDevice{PCIAddress: fmt.Sprintf("0000:8%d:00.0", i)}) + } rm := &ResourceManager{ hostVCPU: 10, hostMemGB: 34.0, reservedVCPU: 2, reservedMem: 2.0, - gpuManager: gpu.NewManager(make([]gpu.GPUDevice, 5)), + gpuManager: mgr, } migType := &ec2.InstanceTypeInfo{ diff --git a/spinifex/gpu/manager.go b/spinifex/gpu/manager.go index f44006585..260464805 100644 --- a/spinifex/gpu/manager.go +++ b/spinifex/gpu/manager.go @@ -245,6 +245,11 @@ func (m *Manager) Release(instanceID string) error { continue } + // Scoped to this entry, not the whole release: an instance can hold + // several GPUs, and one that unbound cleanly stays available however + // its siblings fared. + var entryErr error + for _, member := range entry.groupMembers { orig := entry.memberDrivers[member.PCIAddress] if orig == "vfio-pci" { @@ -258,6 +263,9 @@ func (m *Manager) Release(instanceID string) error { if err := unbindVFIO(m.sysfsRoot, member.PCIAddress, orig); err != nil { slog.Error("GPU release failed for IOMMU group member", "instance", instanceID, "pci", member.PCIAddress, "err", err) + if entryErr == nil { + entryErr = err + } if firstErr == nil { firstErr = err } @@ -268,7 +276,7 @@ func (m *Manager) Release(instanceID string) error { entry.groupMembers = nil entry.memberDrivers = nil - if firstErr != nil { + if entryErr != nil { entry.Available = false slog.Error("GPU marked unavailable after failed release — operator action required", "gpu", entry.Device.PCIAddress) @@ -387,7 +395,9 @@ func (m *Manager) AddMIGInstances(device GPUDevice, instances []MIGInstance) { } } -// Available returns the count of GPUs that can be claimed right now. +// Available counts free whole GPUs and free MIG slices alike. Admission must +// use AvailableWhole or AvailableSlices instead: two whole GPUs and fourteen +// carved slices answer 16, which would admit two 8-GPU instances against two. func (m *Manager) Available() int { m.mu.Lock() defer m.mu.Unlock() @@ -400,6 +410,37 @@ func (m *Manager) Available() int { return n } +// AvailableWhole returns the count of whole GPUs that can be claimed right now. +// A GPU carved into MIG slices is not one of them, and neither is an un-carved +// MIG-capable GPU held in freeMIGGPUs. +func (m *Manager) AvailableWhole() int { + m.mu.Lock() + defer m.mu.Unlock() + n := 0 + for _, e := range m.pool { + if e.Available && e.InstanceID == "" && e.MIGInstance == nil { + n++ + } + } + return n +} + +// AvailableSlices counts free slices of this profile plus one per un-carved +// GPU in a single snapshot. The un-carved budget is shared across profiles: +// this answers for one type in isolation, not a sum across different types. +func (m *Manager) AvailableSlices(profileName string) int { + m.mu.Lock() + defer m.mu.Unlock() + n := len(m.freeMIGGPUs) + for _, e := range m.pool { + if e.Available && e.InstanceID == "" && e.MIGInstance != nil && + e.MIGInstance.Profile.Name == profileName { + n++ + } + } + return n +} + // AllocatedCount returns the number of GPUs currently claimed by instances. func (m *Manager) AllocatedCount() int { m.mu.Lock() diff --git a/spinifex/gpu/manager_available_test.go b/spinifex/gpu/manager_available_test.go new file mode 100644 index 000000000..56088b2f3 --- /dev/null +++ b/spinifex/gpu/manager_available_test.go @@ -0,0 +1,104 @@ +//test:in-package — reuses the in-package sysfs and MIG fixtures +package gpu + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +// A pool holding whole GPUs and carved slices together must not report one kind +// as the other. Available counts both, which is why admission uses neither it +// nor a division of it. +func TestAvailableWholeAndSlicesCountSeparately(t *testing.T) { + root := t.TempDir() + + m := NewManager([]GPUDevice{ + {PCIAddress: "0000:01:00.0", IOMMUGroup: 1}, + {PCIAddress: "0000:02:00.0", IOMMUGroup: 2}, + }) + carved := newMIGDevice("0000:03:00.0") + m.AddMIGInstances(carved, []MIGInstance{ + {GIID: 1, MdevPath: makeMdevDir(t, root, "uuid-gi1"), Profile: MIGProfile{Name: "1g.10gb", MemoryMiB: 10240}}, + {GIID: 2, MdevPath: makeMdevDir(t, root, "uuid-gi2"), Profile: MIGProfile{Name: "1g.10gb", MemoryMiB: 10240}}, + {GIID: 3, MdevPath: makeMdevDir(t, root, "uuid-gi3"), Profile: MIGProfile{Name: "3g.40gb", MemoryMiB: 40960}}, + }) + + assert.Equal(t, 5, m.Available(), "Available counts every free entry") + assert.Equal(t, 2, m.AvailableWhole(), "a carved GPU is not a whole GPU") + assert.Equal(t, 2, m.AvailableSlices("1g.10gb")) + assert.Equal(t, 1, m.AvailableSlices("3g.40gb")) + assert.Zero(t, m.AvailableSlices("7g.80gb"), "a profile with no slices carved is not available") +} + +// Each un-carved GPU contributes one conservative slot to a single profile's +// admission decision. Counts for different profiles must not be added together. +func TestFreeMIGGPUsAreSharedAcrossProfiles(t *testing.T) { + m := NewManager(nil) + m.AddMIGGPU(newMIGDevice("0000:01:00.0")) + m.AddMIGGPU(newMIGDevice("0000:02:00.0")) + + assert.Equal(t, 2, m.AvailableSlices("1g.10gb"), "both GPUs are carvable, once each") + assert.Equal(t, 2, m.AvailableSlices("7g.80gb"), "the same budget backs either profile, not both") + assert.Zero(t, m.AvailableWhole(), "a MIG-capable GPU held for carving is not offerable whole") + assert.Zero(t, m.Available(), "freeMIGGPUs are not pool entries yet") +} + +func TestAvailableSlicesIncludesCarvableGPUsOnce(t *testing.T) { + m := NewManager(nil) + m.pool = []gpuEntry{ + {Available: true, MIGInstance: &MIGInstance{Profile: MIGProfile{Name: "1g.10gb"}}}, + {Available: true, InstanceID: "i-busy", MIGInstance: &MIGInstance{Profile: MIGProfile{Name: "1g.10gb"}}}, + {Available: false, MIGInstance: &MIGInstance{Profile: MIGProfile{Name: "1g.10gb"}}}, + {Available: true, MIGInstance: &MIGInstance{Profile: MIGProfile{Name: "7g.80gb"}}}, + {Available: true}, + } + m.AddMIGGPU(newMIGDevice("0000:01:00.0")) + assert.Equal(t, 2, m.AvailableSlices("1g.10gb")) + assert.Equal(t, 2, m.AvailableSlices("7g.80gb")) + assert.Equal(t, 1, m.AvailableSlices("3g.40gb")) +} + +func TestAvailableSlicesSnapshotsPoolTransitions(t *testing.T) { + dev := newMIGDevice("0000:01:00.0") + m := NewManager(nil) + m.AddMIGGPU(dev) + done := make(chan struct{}) + go func() { + defer close(done) + for range 1000 { + m.mu.Lock() + m.freeMIGGPUs = nil + m.pool = []gpuEntry{{Device: dev, Available: true, + MIGInstance: &MIGInstance{Profile: MIGProfile{Name: "7g.80gb"}}, + }} + m.mu.Unlock() + m.mu.Lock() + m.pool = nil + m.freeMIGGPUs = []GPUDevice{dev} + m.mu.Unlock() + } + }() + for range 1000 { + assert.Equal(t, 1, m.AvailableSlices("7g.80gb"), "a GPU must not be counted in both pools") + } + <-done +} + +// The whole-GPU claim path already skips slices; only the arithmetic was wrong. +func TestAvailableWholeDropsAClaimedGPU(t *testing.T) { + root, dev := buildManagerSysfs(t) + m := newManagerForTest([]GPUDevice{dev}, root) + + assert.Equal(t, 1, m.AvailableWhole()) + + if _, _, err := m.Claim("i-1", ""); err != nil { + t.Fatalf("claim: %v", err) + } + assert.Zero(t, m.AvailableWhole()) + + if err := m.Release("i-1"); err != nil { + t.Fatalf("release: %v", err) + } + assert.Equal(t, 1, m.AvailableWhole()) +} diff --git a/spinifex/gpu/manager_release_scope_test.go b/spinifex/gpu/manager_release_scope_test.go new file mode 100644 index 000000000..074026868 --- /dev/null +++ b/spinifex/gpu/manager_release_scope_test.go @@ -0,0 +1,70 @@ +// asserts on unexported pool state that no exported accessor distinguishes. +// +//test:in-package — drives Release against the in-package sysfs fixtures and +package gpu + +import ( + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// A multi-GPU instance releasing with one bad device must lose only that one. +// firstErr was scoped to the whole release, so the first failure condemned +// every GPU after it — harmless at one GPU per instance, node-emptying at eight. +func TestManagerRelease_FailureIsScopedToTheFailingGPU(t *testing.T) { + root := t.TempDir() + buildSysfsDevice(t, root, "0000:03:00.0", "0x030200", "0x10de", "0x2236", "nvidia", 7) + buildSysfsDevice(t, root, "0000:04:00.0", "0x030200", "0x10de", "0x2236", "nvidia", 8) + makeSysfsDriverDir(t, root, "vfio-pci") + makeSysfsDriverDir(t, root, "nvidia") + + m := newManagerForTest([]GPUDevice{ + {PCIAddress: "0000:03:00.0", Vendor: VendorNVIDIA, VendorID: "10de", DeviceID: "2236", + IOMMUGroup: 7, OriginalDriver: "nvidia"}, + {PCIAddress: "0000:04:00.0", Vendor: VendorNVIDIA, VendorID: "10de", DeviceID: "2236", + IOMMUGroup: 8, OriginalDriver: "nvidia"}, + }, root) + + for range 2 { + _, _, err := m.Claim("i-001", "") + require.NoError(t, err) + } + require.Zero(t, m.AvailableWhole(), "both GPUs are claimed") + + // The fixture does not move the driver symlink the way the kernel does on + // bind, and Release skips a device that is not vfio-pci bound. + vfioDriverPath := filepath.Join(root, "bus/pci/drivers/vfio-pci") + for _, addr := range []string{"0000:03:00.0", "0000:04:00.0"} { + devPath := filepath.Join(root, "bus/pci/devices", addr) + require.NoError(t, os.Remove(filepath.Join(devPath, "driver"))) + require.NoError(t, os.Symlink(vfioDriverPath, filepath.Join(devPath, "driver"))) + } + + // Break only the first GPU's unbind, by way of its own driver_override. + // A directory in the file's place fails the write whatever the test uid, + // where a read-only mode would not stop root. + override := filepath.Join(root, "bus/pci/devices/0000:03:00.0/driver_override") + require.NoError(t, os.Remove(override)) + require.NoError(t, os.Mkdir(override, 0o755)) + + err := m.Release("i-001") + require.Error(t, err, "a failed unbind is still reported") + + assert.Equal(t, 1, m.AvailableWhole(), + "the GPU that unbound cleanly must return to the pool") + assert.Equal(t, 2, m.TotalCount(), "both GPUs are still physically present") + + for _, e := range m.pool { + switch e.Device.PCIAddress { + case "0000:03:00.0": + assert.False(t, e.Available, "the GPU that failed to unbind is held back") + case "0000:04:00.0": + assert.True(t, e.Available, "its sibling was never touched by the failure") + } + assert.Empty(t, e.InstanceID, "every entry is unbound from the instance either way") + } +} diff --git a/spinifex/handlers/ec2/instance/service.go b/spinifex/handlers/ec2/instance/service.go index 83b4c3366..f2f6bc676 100644 --- a/spinifex/handlers/ec2/instance/service.go +++ b/spinifex/handlers/ec2/instance/service.go @@ -68,11 +68,12 @@ type InstanceTypeAllocator interface { InstanceTypes() map[string]*ec2.InstanceTypeInfo } -// GPUClaimer binds a GPU for a starting instance and returns an attachment -// descriptor. For whole-GPU passthrough the descriptor carries the PCI address; -// for MIG slices it carries the mdev path. nil claimer means no GPU passthrough. +// GPUClaimer binds GPUs for a starting instance and returns their attachment +// descriptors. For whole-GPU passthrough each descriptor carries a PCI address; +// for MIG slices it carries an mdev path. Claims are all-or-nothing. A nil +// claimer means no GPU passthrough. type GPUClaimer interface { - Claim(instanceID, profileName string) (*gpu.GPUAttachment, error) + Claim(instanceID, profileName string, count int) ([]gpu.GPUAttachment, error) Release(instanceID string) error } diff --git a/spinifex/handlers/ec2/instance/service_impl.go b/spinifex/handlers/ec2/instance/service_impl.go index d4e8c6f2c..76f86afaa 100644 --- a/spinifex/handlers/ec2/instance/service_impl.go +++ b/spinifex/handlers/ec2/instance/service_impl.go @@ -22,7 +22,6 @@ import ( "github.com/mulgadc/spinifex/spinifex/ebsmetadata" "github.com/mulgadc/spinifex/spinifex/ebsprovider" "github.com/mulgadc/spinifex/spinifex/filterutil" - "github.com/mulgadc/spinifex/spinifex/gpu" handlers_dns "github.com/mulgadc/spinifex/spinifex/handlers/dns" handlers_ec2_vpc "github.com/mulgadc/spinifex/spinifex/handlers/ec2/vpc" "github.com/mulgadc/spinifex/spinifex/instancetypes" @@ -1092,17 +1091,37 @@ func (s *InstanceServiceImpl) LaunchRunInstances(ctx context.Context, instances instance.Instance.BlockDeviceMappings = append(instance.Instance.BlockDeviceMappings, mapping) } - if s.gpuClaimer != nil && instancetypes.IsGPUType(instanceType) { - profileName := instancetypes.MIGProfileFromType(aws.StringValue(instanceType.InstanceType)) - att, gpuErr := s.gpuClaimer.Claim(instance.ID, profileName) - if gpuErr != nil { - slog.ErrorContext(ctx, "LaunchRunInstances: GPU claim failed", "instanceId", instance.ID, "err", gpuErr) + if instancetypes.IsGPUType(instanceType) { + // Admission gates on the daemon's GPU manager, which is a different + // field wired at a different moment. Booting a GPU type without a + // claimer would hand the customer a running, GPU-less instance. + if s.gpuClaimer == nil { + slog.ErrorContext(ctx, "LaunchRunInstances: GPU type admitted with no GPU claimer wired", + "instanceId", instance.ID, "instanceType", aws.StringValue(instanceType.InstanceType)) s.vmMgr.MarkFailed(ctx, instance, "gpu_claim_failed") continue } - instance.GPUAttachments = []gpu.GPUAttachment{*att} - slog.InfoContext(ctx, "LaunchRunInstances: GPU claimed for instance", "instanceId", instance.ID, - "pci", att.PCIAddress, "mdev", att.MdevPath) + profileName := instancetypes.MIGProfileFromType(aws.StringValue(instanceType.InstanceType)) + gpuCount := instancetypes.GPUCountForType(aws.StringValue(instanceType.InstanceType)) + attachments, gpuErr := s.gpuClaimer.Claim(instance.ID, profileName, gpuCount) + if gpuErr != nil { + slog.ErrorContext(ctx, "LaunchRunInstances: GPU claim failed", "instanceId", instance.ID, "count", gpuCount, "err", gpuErr) + s.vmMgr.MarkFailed(ctx, instance, "gpu_claim_failed") + continue + } + if len(attachments) != gpuCount { + slog.ErrorContext(ctx, "LaunchRunInstances: GPU claim returned the wrong count", + "instanceId", instance.ID, "requested", gpuCount, "got", len(attachments)) + if releaseErr := s.gpuClaimer.Release(instance.ID); releaseErr != nil { + slog.ErrorContext(ctx, "LaunchRunInstances: GPU release after short claim failed", + "instanceId", instance.ID, "err", releaseErr) + } + s.vmMgr.MarkFailed(ctx, instance, "gpu_claim_failed") + continue + } + instance.GPUAttachments = attachments + slog.InfoContext(ctx, "LaunchRunInstances: GPUs claimed for instance", "instanceId", instance.ID, + "count", len(attachments), "attachments", attachments) } if err := s.vmMgr.Run(ctx, instance); err != nil { @@ -2593,22 +2612,50 @@ func (s *InstanceServiceImpl) StartStoppedInstance(ctx context.Context, input *S instance.DesiredState = vm.DesiredRunning s.vmMgr.Insert(instance) - // Claim GPU for GPU instance types. + // Reclaim the GPU count the instance type advertises, which is what the + // instance was admitted against. A record holding a different number was + // written by a build that took the count from somewhere else. gpuClaimed := false - if s.gpuClaimer != nil && instancetypes.IsGPUType(instanceType) { - profileName := instancetypes.MIGProfileFromType(aws.StringValue(instanceType.InstanceType)) - att, gpuErr := s.gpuClaimer.Claim(instance.ID, profileName) - if gpuErr != nil { - slog.ErrorContext(ctx, "StartStoppedInstance: GPU claim failed", "instanceId", input.InstanceID, "err", gpuErr) + if instancetypes.IsGPUType(instanceType) { + // Admission gates on the daemon's GPU manager, which is a different + // field wired at a different moment. Starting a GPU type without a + // claimer would hand the customer a running, GPU-less instance. + if s.gpuClaimer == nil { + slog.ErrorContext(ctx, "StartStoppedInstance: GPU type admitted with no GPU claimer wired", + "instanceId", input.InstanceID, "instanceType", instance.InstanceType) s.resourceMgr.Deallocate(instanceType) s.vmMgr.Delete(instance.ID) s.restoreClaimedStoppedInstance(ctx, instance) return nil, errors.New(awserrors.ErrorInsufficientInstanceCapacity) } - instance.GPUAttachments = []gpu.GPUAttachment{*att} + profileName := instancetypes.MIGProfileFromType(aws.StringValue(instanceType.InstanceType)) + gpuCount := instancetypes.GPUCountForType(instance.InstanceType) + if recorded := len(instance.GPUAttachments); recorded > 0 && recorded != gpuCount { + slog.WarnContext(ctx, "StartStoppedInstance: recorded GPU count differs from the instance type", + "instanceId", input.InstanceID, "instanceType", instance.InstanceType, + "recorded", recorded, "reclaiming", gpuCount) + } + attachments, gpuErr := s.gpuClaimer.Claim(instance.ID, profileName, gpuCount) + if gpuErr == nil && len(attachments) != gpuCount { + slog.ErrorContext(ctx, "StartStoppedInstance: GPU claim returned the wrong count", + "instanceId", input.InstanceID, "requested", gpuCount, "got", len(attachments)) + if relErr := s.gpuClaimer.Release(instance.ID); relErr != nil { + slog.ErrorContext(ctx, "StartStoppedInstance: GPU release after short claim failed", + "instanceId", input.InstanceID, "err", relErr) + } + gpuErr = errors.New("GPU claim returned fewer GPUs than the instance type requires") + } + if gpuErr != nil { + slog.ErrorContext(ctx, "StartStoppedInstance: GPU claim failed", "instanceId", input.InstanceID, "count", gpuCount, "err", gpuErr) + s.resourceMgr.Deallocate(instanceType) + s.vmMgr.Delete(instance.ID) + s.restoreClaimedStoppedInstance(ctx, instance) + return nil, errors.New(awserrors.ErrorInsufficientInstanceCapacity) + } + instance.GPUAttachments = attachments gpuClaimed = true - slog.InfoContext(ctx, "GPU claimed for instance", "instanceId", input.InstanceID, - "pci", att.PCIAddress, "mdev", att.MdevPath) + slog.InfoContext(ctx, "GPUs claimed for instance", "instanceId", input.InstanceID, + "count", len(attachments), "attachments", attachments) } if err := s.vmMgr.Run(ctx, instance); err != nil { diff --git a/spinifex/handlers/ec2/instance/service_impl_test.go b/spinifex/handlers/ec2/instance/service_impl_test.go index 68f3a616c..1f2f3d242 100644 --- a/spinifex/handlers/ec2/instance/service_impl_test.go +++ b/spinifex/handlers/ec2/instance/service_impl_test.go @@ -18,6 +18,7 @@ import ( "github.com/mulgadc/spinifex/spinifex/ebsmetadata" "github.com/mulgadc/spinifex/spinifex/gpu" handlers_ec2_vpc "github.com/mulgadc/spinifex/spinifex/handlers/ec2/vpc" + "github.com/mulgadc/spinifex/spinifex/instancetypes" "github.com/mulgadc/spinifex/spinifex/tags" "github.com/mulgadc/spinifex/spinifex/testutil" spxtypes "github.com/mulgadc/spinifex/spinifex/types" @@ -2318,19 +2319,23 @@ func TestTerminateStoppedInstance_ReleaseAttachedENIs(t *testing.T) { // --- StartStoppedInstance tests --- type fakeGPUClaimer struct { - claimed []string - released []string - claimErr error - attachment gpu.GPUAttachment + claimed []string + claimCounts []int + released []string + claimErr error + attachments []gpu.GPUAttachment } -func (f *fakeGPUClaimer) Claim(instanceID, _ string) (*gpu.GPUAttachment, error) { +func (f *fakeGPUClaimer) Claim(instanceID, _ string, count int) ([]gpu.GPUAttachment, error) { f.claimed = append(f.claimed, instanceID) + f.claimCounts = append(f.claimCounts, count) if f.claimErr != nil { return nil, f.claimErr } - att := f.attachment - return &att, nil + if f.attachments != nil { + return append([]gpu.GPUAttachment(nil), f.attachments...), nil + } + return make([]gpu.GPUAttachment, count), nil } func (f *fakeGPUClaimer) Release(instanceID string) error { @@ -2759,6 +2764,131 @@ func TestStartStoppedInstance_ConcurrentClaimRace(t *testing.T) { assert.False(t, stillInMgr, "a failed Run must not leave the VM in the manager map") } +// A restart reclaims the count the instance type advertises, which is what the +// instance was admitted against. A record holding some other number — the only +// source of one was the withdrawn launch override — does not move the count. +func TestStartStoppedInstance_ReclaimsTheInstanceTypeGPUCount(t *testing.T) { + tests := []struct { + name string + itype string + recorded int + wantClaim int + }{ + {name: "multi-GPU type", itype: "g5.12xlarge", recorded: 4, wantClaim: 4}, + {name: "record disagrees with the type", itype: "g5.2xlarge", recorded: 3, wantClaim: 1}, + {name: "legacy record with no attachments", itype: "g5.12xlarge", recorded: 0, wantClaim: 4}, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + t.Setenv("XDG_RUNTIME_DIR", t.TempDir()) + + id := "i-multi-gpu" + attachments := make([]gpu.GPUAttachment, test.recorded) + for i := range attachments { + attachments[i] = gpu.GPUAttachment{PCIAddress: fmt.Sprintf("0000:0%d:00.0", i+1)} + } + store := &vmmock.StateStore{Stopped: map[string]*vm.VM{ + id: { + ID: id, + Status: vm.StateStopped, + AccountID: "acc", + InstanceType: test.itype, + GPUAttachments: attachments, + }, + }} + instanceType := &ec2.InstanceTypeInfo{ + InstanceType: aws.String(test.itype), + GpuInfo: &ec2.GpuInfo{Gpus: []*ec2.GpuDeviceInfo{{ + Count: aws.Int64(int64(instancetypes.GPUCountForType(test.itype))), + }}}, + } + prov := &fakeResourceCapacityProvider{ + instanceTypes: map[string]*ec2.InstanceTypeInfo{test.itype: instanceType}, + } + claimer := &fakeGPUClaimer{} + mgr := vm.NewManagerWithDeps(vm.Deps{VolumeMounter: raceVolumeMounter{}}) + svc := &InstanceServiceImpl{ + stoppedStore: store, + resourceMgr: prov, + vmMgr: mgr, + gpuClaimer: claimer, + } + + _, err := svc.StartStoppedInstance( + context.Background(), + &StartStoppedInstanceInput{InstanceID: id}, + "acc", + ) + require.Error(t, err) + assert.Equal(t, awserrors.ErrorServerInternal, err.Error()) + assert.Equal(t, []int{test.wantClaim}, claimer.claimCounts) + assert.Equal(t, []string{id}, claimer.released) + }) + } +} + +// A GPU type that cannot be given its GPUs must not start. Admission gates on +// the daemon's GPU manager, a different field wired at a different moment, so +// neither a missing claimer nor a short claim is caught anywhere else — and +// both would otherwise return a running, GPU-less instance. +func TestStartStoppedInstance_RefusesWhenGPUsCannotBeGuaranteed(t *testing.T) { + tests := []struct { + name string + claimer GPUClaimer + wantReleased bool + }{ + {name: "no claimer wired", claimer: nil}, + { + name: "claim returns fewer GPUs than the type requires", + claimer: &fakeGPUClaimer{attachments: []gpu.GPUAttachment{{PCIAddress: "0000:01:00.0"}}}, + wantReleased: true, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + t.Setenv("XDG_RUNTIME_DIR", t.TempDir()) + + const id, itype = "i-multi-gpu", "g5.12xlarge" + store := &vmmock.StateStore{Stopped: map[string]*vm.VM{ + id: {ID: id, Status: vm.StateStopped, AccountID: "acc", InstanceType: itype}, + }} + instanceType := &ec2.InstanceTypeInfo{ + InstanceType: aws.String(itype), + GpuInfo: &ec2.GpuInfo{Gpus: []*ec2.GpuDeviceInfo{{ + Count: aws.Int64(int64(instancetypes.GPUCountForType(itype))), + }}}, + } + prov := &fakeResourceCapacityProvider{ + instanceTypes: map[string]*ec2.InstanceTypeInfo{itype: instanceType}, + } + svc := &InstanceServiceImpl{ + stoppedStore: store, + resourceMgr: prov, + vmMgr: vm.NewManagerWithDeps(vm.Deps{VolumeMounter: raceVolumeMounter{}}), + gpuClaimer: test.claimer, + } + + _, err := svc.StartStoppedInstance( + context.Background(), + &StartStoppedInstanceInput{InstanceID: id}, + "acc", + ) + require.Error(t, err) + assert.Equal(t, awserrors.ErrorInsufficientInstanceCapacity, err.Error(), + "a GPU that cannot be claimed is a capacity refusal, not a launch") + + if test.wantReleased { + claimer, ok := test.claimer.(*fakeGPUClaimer) + require.True(t, ok) + assert.Equal(t, []string{id}, claimer.released, + "the partial claim must not be left holding pool entries") + } + }) + } +} + // --- PrepareRunInstances / ec2.cmd dispatch tests --------------------------- type fakeAMILoader struct { @@ -2946,6 +3076,46 @@ func TestPrepareRunInstances_InsufficientCapacity(t *testing.T) { assert.Equal(t, awserrors.ErrorInsufficientInstanceCapacity, err.Error()) } +// ElasticInferenceAccelerators is a real EC2 parameter for Elastic Inference, +// whose types are eia1.*/eia2.*. It carries no Spinifex meaning: the GPU count +// comes from the instance type, so Type=gpu,Count=3 neither succeeds as an +// override nor gates capacity. +func TestPrepareRunInstances_ElasticInferenceAcceleratorIsNotAGPUOverride(t *testing.T) { + instanceType := &ec2.InstanceTypeInfo{ + InstanceType: aws.String("g5.2xlarge"), + GpuInfo: &ec2.GpuInfo{Gpus: []*ec2.GpuDeviceInfo{{ + Count: aws.Int64(1), + }}}, + } + types := map[string]*ec2.InstanceTypeInfo{"g5.2xlarge": instanceType} + prov := &fakeResourceCapacityProvider{ + instanceTypes: types, + canAllocFn: func(_ *ec2.InstanceTypeInfo, count int) int { return count }, + } + svc := &InstanceServiceImpl{ + instanceTypes: types, + amiLoader: &fakeAMILoader{byID: map[string]ebsmetadata.AMI{ + "ami-1": {ImageOwnerAlias: "acc"}, + }}, + resourceMgr: prov, + gpuClaimer: &fakeGPUClaimer{}, + } + + _, instances, _, err := svc.PrepareRunInstances(context.Background(), &ec2.RunInstancesInput{ + InstanceType: aws.String("g5.2xlarge"), + ImageId: aws.String("ami-1"), + MinCount: aws.Int64(2), + MaxCount: aws.Int64(2), + ElasticInferenceAccelerators: []*ec2.ElasticInferenceAccelerator{{ + Type: aws.String("gpu"), Count: aws.Int64(3), + }}, + }, "acc", "") + require.NoError(t, err) + assert.Len(t, instances, 2) + assert.Equal(t, 1, instancetypes.GPUCountForType("g5.2xlarge"), + "the count must stay a lookup on the type name") +} + func TestPrepareRunInstances_HappyPathNoENI(t *testing.T) { types, _ := defaultPrepareInstanceTypes() prov := &fakeResourceCapacityProvider{ diff --git a/spinifex/handlers/ecs/capacity.go b/spinifex/handlers/ecs/capacity.go index b49048e44..0cf7d2325 100644 --- a/spinifex/handlers/ecs/capacity.go +++ b/spinifex/handlers/ecs/capacity.go @@ -107,7 +107,14 @@ func (s *Service) ProvisionCapacity(ctx context.Context, input *ProvisionCapacit var amiID string if instancetypes.IsGPUTypeName(instanceType) { - amiID, err = lookupECSGPUNodeAMI(ctx, s.deps.Images, accountID, instancetypes.GPUVendorForType(instanceType)) + // Refusing beats the non-GPU AMI: that boots a container instance with + // the GPUs passed through and no driver, which registers no GPU + // resource and strands every GPU task as PENDING with nothing logged. + vendor := instancetypes.GPUVendorForType(instanceType) + if vendor == "" { + return nil, fmt.Errorf("ecs: instance type %s does not name a GPU vendor, so its GPU node AMI cannot be resolved", instanceType) + } + amiID, err = lookupECSGPUNodeAMI(ctx, s.deps.Images, accountID, vendor) } else { amiID, err = lookupECSNodeAMI(ctx, s.deps.Images, accountID) } diff --git a/spinifex/handlers/eks/nodegroup.go b/spinifex/handlers/eks/nodegroup.go index 9b83bc11e..cbc9cf8db 100644 --- a/spinifex/handlers/eks/nodegroup.go +++ b/spinifex/handlers/eks/nodegroup.go @@ -253,6 +253,14 @@ func (s *EKSServiceImpl) createNodegroup(ctx context.Context, acctKV jetstream.K minSize, maxSize, desired := scalingFromInput(input.ScalingConfig) gpuEnabled, gpuVendor := gpuFieldsForInstanceTypes(instanceTypes) + if gpuEnabled && gpuVendor == "" { + // Caught here rather than at launch: without a vendor there is no GPU + // AMI to resolve, and the nodegroup would otherwise reach Ready with + // the GPUs passed through, no driver, and every GPU pod Pending. + slog.ErrorContext(ctx, "createNodegroup: GPU instance types name no GPU vendor", + "cluster", cluster, "nodegroup", ng, "instanceTypes", instanceTypes) + return nil, errors.New(awserrors.ErrorInvalidParameterValue) + } amiType := aws.StringValue(input.AmiType) if amiType == "" { diff --git a/spinifex/instancetypes/definitions.go b/spinifex/instancetypes/definitions.go index e655981a3..12cb9dce9 100644 --- a/spinifex/instancetypes/definitions.go +++ b/spinifex/instancetypes/definitions.go @@ -1,6 +1,8 @@ package instancetypes import ( + "fmt" + "maps" "slices" "strings" ) @@ -69,6 +71,8 @@ func GPUModelForVendorDevice(vendorID, deviceID string) *GPUModel { // a GPU instance type's family prefix (e.g. "g5.xlarge" -> "g5"), or "" if // instanceType is not a known GPU family. func GPUVendorForType(instanceType string) string { + // gpu.* and mig.* fall through to "": neither names a family, so no + // knownGPUModels entry matches and the vendor comes from discovery instead. family, _, _ := strings.Cut(instanceType, ".") for i := range knownGPUModels { if knownGPUModels[i].Family == family { @@ -78,9 +82,12 @@ func GPUVendorForType(instanceType string) string { return "" } -// IsGPUTypeName reports whether instanceType belongs to a known GPU family. +// IsGPUTypeName reports whether instanceType is GPU-backed. gpu.* and mig.* +// qualify even though GPUVendorForType cannot name their vendor: the vendor +// comes from discovery, so callers needing one must handle an empty answer. func IsGPUTypeName(instanceType string) bool { - return GPUVendorForType(instanceType) != "" + return IsBuiltinGPUType(instanceType) || IsMIGType(instanceType) || + GPUVendorForType(instanceType) != "" } // cpuGeneration represents a specific CPU microarchitecture generation @@ -199,38 +206,50 @@ var memorySizes = []instanceSize{ // memorySizesSmall is memorySizes without 12xlarge and 24xlarge (older/ARM families). var memorySizesSmall = slices.Clone(memorySizes[:6]) -// g4dnSizes are the single-GPU G4dn instance sizes (1x NVIDIA T4 each). +// g4dnSizes are the G4dn instance sizes (NVIDIA T4). 12xlarge carries 4 GPUs, +// every other size one. g4dn.metal is bare metal and is not offered. var g4dnSizes = []instanceSize{ {"xlarge", 4, 16}, {"2xlarge", 8, 32}, {"4xlarge", 16, 64}, {"8xlarge", 32, 128}, + {"12xlarge", 48, 192}, {"16xlarge", 64, 256}, } -// g4adSizes are the single-GPU G4ad instance sizes (1x AMD Radeon Pro V520 each). +// g4adSizes are the G4ad instance sizes (AMD Radeon Pro V520). 8xlarge carries +// 2 GPUs and 16xlarge 4. var g4adSizes = []instanceSize{ {"xlarge", 4, 16}, {"2xlarge", 8, 32}, {"4xlarge", 16, 64}, + {"8xlarge", 32, 128}, + {"16xlarge", 64, 256}, } -// g5Sizes are the single-GPU G5 instance sizes (1x NVIDIA A10G each). +// g5Sizes are the G5 instance sizes (NVIDIA A10G). 12xlarge and 24xlarge carry +// 4 GPUs and 48xlarge 8; every other size one. var g5Sizes = []instanceSize{ {"xlarge", 4, 16}, {"2xlarge", 8, 32}, {"4xlarge", 16, 64}, {"8xlarge", 32, 128}, + {"12xlarge", 48, 192}, {"16xlarge", 64, 256}, + {"24xlarge", 96, 384}, + {"48xlarge", 192, 768}, } -// g6Sizes are the single-GPU G6 instance sizes (1x NVIDIA L4 each). +// g6Sizes are the G6 instance sizes (NVIDIA L4), which mirror g5 exactly. var g6Sizes = []instanceSize{ {"xlarge", 4, 16}, {"2xlarge", 8, 32}, {"4xlarge", 16, 64}, {"8xlarge", 32, 128}, + {"12xlarge", 48, 192}, {"16xlarge", 64, 256}, + {"24xlarge", 96, 384}, + {"48xlarge", 192, 768}, } // gr6Sizes are the single-GPU Gr6 instance sizes (1x NVIDIA L4, memory-optimized). @@ -248,11 +267,70 @@ var g7eSizes = []instanceSize{ {"12xlarge", 48, 512}, } -// gpuCountPerType overrides the default of 1 GPU for multi-GPU instance sizes. -var gpuCountPerType = map[string]int{ - "g7e.12xlarge": 2, +// builtinGPUFamily is the one non-AWS GPU family Spinifex defines, for the host +// shapes AWS does not sell. A bare "gpu" is not an EC2 family name, so the +// prefix is reserved and cannot collide with a real type. +const builtinGPUFamily = "gpu" +const builtinGPUPrefix = builtinGPUFamily + "." + +const MaxGPUsPerInstance = 8 + +// builtinGPUTiers are the vCPU-per-GPU ratios the gpu.* family offers. +var builtinGPUTiers = []int{2, 4, 8} + +// builtinGPUMemPerVCPUGB is AWS's general-purpose vCPU:memory ratio, applied to +// every tier so no gpu.* shape is one EC2 would find unfamiliar. +const builtinGPUMemPerVCPUGB = 4 + +func IsBuiltinGPUType(instanceType string) bool { + return strings.HasPrefix(instanceType, builtinGPUPrefix) } +// builtinGPUSizes and builtinGPUCounts describe the gpu.* family: the name +// gpu.xc is that many GPUs at that many vCPU each. +var builtinGPUSizes, builtinGPUCounts = func() ([]instanceSize, map[string]int) { + sizes := make([]instanceSize, 0, MaxGPUsPerInstance*len(builtinGPUTiers)) + counts := make(map[string]int, MaxGPUsPerInstance*len(builtinGPUTiers)) + for _, perGPU := range builtinGPUTiers { + for n := 1; n <= MaxGPUsPerInstance; n++ { + vcpus := n * perGPU + suffix := fmt.Sprintf("%dx%dc", n, perGPU) + sizes = append(sizes, instanceSize{suffix, vcpus, float64(vcpus * builtinGPUMemPerVCPUGB)}) + counts[builtinGPUPrefix+suffix] = n + } + } + return sizes, counts +}() + +// gpuCountPerType overrides the default of 1 GPU for multi-GPU instance sizes. +// Every figure for an AWS family is that family's real EC2 GPU count. +var gpuCountPerType = func() map[string]int { + m := map[string]int{ + "g4dn.12xlarge": 4, + "g4ad.8xlarge": 2, + "g4ad.16xlarge": 4, + "g5.12xlarge": 4, + "g5.24xlarge": 4, + "g5.48xlarge": 8, + "g6.12xlarge": 4, + "g6.24xlarge": 4, + "g6.48xlarge": 8, + "g6e.12xlarge": 4, + "g6e.24xlarge": 4, + "g6e.48xlarge": 8, + "g7e.12xlarge": 2, + "p3.8xlarge": 4, + "p3.16xlarge": 8, + "p3dn.24xlarge": 8, + "p4d.24xlarge": 8, + "p4de.24xlarge": 8, + "p5.48xlarge": 8, + "p5e.48xlarge": 8, + } + maps.Copy(m, builtinGPUCounts) + return m +}() + // GPUCountForType returns the number of GPUs required by the given instance type. // Returns 1 for all single-GPU and non-GPU types. func GPUCountForType(instanceType string) int { @@ -262,49 +340,63 @@ func GPUCountForType(instanceType string) int { return 1 } -// g6eSizes are the single-GPU G6e instance sizes (1x NVIDIA L40S each). +// g6eSizes are the G6e instance sizes (NVIDIA L40S). 12xlarge and 24xlarge +// carry 4 GPUs and 48xlarge 8; every other size one. var g6eSizes = []instanceSize{ {"xlarge", 4, 32}, {"2xlarge", 8, 64}, {"4xlarge", 16, 128}, {"8xlarge", 32, 256}, + {"12xlarge", 48, 384}, {"16xlarge", 64, 512}, + {"24xlarge", 96, 768}, + {"48xlarge", 192, 1536}, } -// p3Sizes are the single-GPU P3 instance sizes (1x NVIDIA V100 16 GiB each). -// P3 8xlarge and larger have multiple GPUs and are excluded. +// p3Sizes are the P3 instance sizes (NVIDIA V100 SXM2 16 GiB). 8xlarge carries +// 4 GPUs and 16xlarge 8. var p3Sizes = []instanceSize{ {"2xlarge", 8, 61}, + {"8xlarge", 32, 244}, + {"16xlarge", 64, 488}, } -// p3dnSizes are the single-GPU P3dn instance sizes (1x NVIDIA V100 32 GiB each). -// P3dn 24xlarge has 8 GPUs and is excluded. +// p3dnSizes are the P3dn instance sizes (NVIDIA V100 SXM2 32 GiB). 24xlarge is +// the only size AWS sells and carries 8 GPUs; 2xlarge is a Spinifex single-GPU +// size kept for hosts that cannot meet the 24xlarge shape. var p3dnSizes = []instanceSize{ {"2xlarge", 8, 61}, + {"24xlarge", 96, 768}, } -// p4dSizes are the single-GPU P4d instance sizes (1x NVIDIA A100 SXM4 40 GiB each). -// P4d 24xlarge has 8 GPUs and is excluded. +// p4dSizes are the P4d instance sizes (NVIDIA A100 SXM4 40 GiB). 24xlarge is +// the only size AWS sells and carries 8 GPUs; xlarge is a Spinifex single-GPU +// size kept for hosts that cannot meet the 24xlarge shape. var p4dSizes = []instanceSize{ {"xlarge", 4, 32}, + {"24xlarge", 96, 1152}, } -// p4deSizes are the single-GPU P4de instance sizes (1x NVIDIA A100 SXM4 80 GiB each). -// P4de 24xlarge has 8 GPUs and is excluded. +// p4deSizes are the P4de instance sizes (NVIDIA A100 SXM4 80 GiB), shaped +// exactly as p4d; xlarge is the Spinifex single-GPU size. var p4deSizes = []instanceSize{ {"xlarge", 4, 32}, + {"24xlarge", 96, 1152}, } -// p5Sizes are the single-GPU P5 instance sizes (1x NVIDIA H100 SXM5 80 GiB each). -// P5 48xlarge has 8 GPUs and is excluded. +// p5Sizes are the P5 instance sizes (NVIDIA H100 SXM5 80 GiB). 48xlarge is the +// only size AWS sells and carries 8 GPUs; 4xlarge is the Spinifex single-GPU +// size. var p5Sizes = []instanceSize{ {"4xlarge", 16, 256}, + {"48xlarge", 192, 2048}, } -// p5eSizes are the single-GPU P5e instance sizes (1x NVIDIA H200 SXM5 141 GiB each). -// P5e 48xlarge has 8 GPUs and is excluded. +// p5eSizes are the P5e instance sizes (NVIDIA H200 SXM5 141 GiB), shaped +// exactly as p5; 4xlarge is the Spinifex single-GPU size. var p5eSizes = []instanceSize{ {"4xlarge", 16, 256}, + {"48xlarge", 192, 2048}, } // systemSizes defines internal-only instance types for system VMs (LB, NAT GW, etc.). @@ -370,6 +462,10 @@ var instanceFamilyDefs = []instanceFamilyDef{ {name: "p5", sizes: p5Sizes, currentGen: true}, {name: "p5e", sizes: p5eSizes, currentGen: true}, + // Non-AWS GPU family for host shapes AWS does not sell; emitted by + // GenerateBuiltinGPUTypes rather than by matching a model's family. + {name: builtinGPUFamily, sizes: builtinGPUSizes, currentGen: true}, + // Memory Optimized (1:8 vCPU:memory) {name: "r4", sizes: memorySizesSmall, currentGen: false}, {name: "r5", sizes: memorySizes, currentGen: true}, diff --git a/spinifex/instancetypes/generate.go b/spinifex/instancetypes/generate.go index 6fbab64d2..1d351b5ee 100644 --- a/spinifex/instancetypes/generate.go +++ b/spinifex/instancetypes/generate.go @@ -158,9 +158,22 @@ func generateSystemTypes(arch string) map[string]*ec2.InstanceTypeInfo { return types } -// GenerateGPUTypes returns InstanceTypeInfo entries for each GPU model with GpuInfo populated. +// GenerateGPUTypes returns InstanceTypeInfo entries for each GPU model plus the +// built-in gpu.* family. models carries one entry per whole GPU, so a node +// resolving more than one distinct model offers no type above a count of 1. func GenerateGPUTypes(models []GPUModel, arch string) map[string]*ec2.InstanceTypeInfo { types := make(map[string]*ec2.InstanceTypeInfo) + if len(models) == 0 { + return types + } + + maxGPUsPerInstance := MaxGPUsPerInstance + if !gpuModelsHomogeneous(models) { + maxGPUsPerInstance = 1 + slog.Warn("node holds more than one distinct GPU model, offering single-GPU types only", + "models", len(models)) + } + seen := make(map[string]bool) for _, model := range models { @@ -175,48 +188,103 @@ func GenerateGPUTypes(models []GPUModel, arch string) map[string]*ec2.InstanceTy } for _, size := range def.sizes { name := fmt.Sprintf("%s.%s", def.name, size.suffix) - gpuCount := int64(GPUCountForType(name)) - types[name] = &ec2.InstanceTypeInfo{ - InstanceType: aws.String(name), - VCpuInfo: &ec2.VCpuInfo{ - DefaultVCpus: aws.Int64(int64(size.vcpus)), - }, - MemoryInfo: &ec2.MemoryInfo{ - SizeInMiB: aws.Int64(int64(size.memoryGB * 1024)), - }, - ProcessorInfo: &ec2.ProcessorInfo{ - SupportedArchitectures: []*string{aws.String(arch)}, - }, - GpuInfo: &ec2.GpuInfo{ - Gpus: []*ec2.GpuDeviceInfo{{ - Count: aws.Int64(gpuCount), - Manufacturer: aws.String(model.Manufacturer), - Name: aws.String(model.Name), - MemoryInfo: &ec2.GpuDeviceMemoryInfo{ - SizeInMiB: aws.Int64(model.MemoryMiB), - }, - }}, - TotalGpuMemoryInMiB: aws.Int64(model.MemoryMiB * gpuCount), - }, - CurrentGeneration: aws.Bool(def.currentGen), - BurstablePerformanceSupported: aws.Bool(false), - Hypervisor: aws.String("kvm"), - SupportedVirtualizationTypes: []*string{aws.String("hvm")}, - SupportedRootDeviceTypes: []*string{aws.String("ebs")}, - NetworkInfo: NetworkInfoForType(name), - PlacementGroupInfo: &ec2.PlacementGroupInfo{ - SupportedStrategies: []*string{ - aws.String("cluster"), - aws.String("spread"), - }, - }, + if !gpuTypeOffered(name, maxGPUsPerInstance) { + continue } + types[name] = gpuInstanceTypeInfo(name, size, model, arch, def.currentGen) } } } + + // gpu.* is no model's family, so GenerateGPUTypes cannot reach it by the + // match above. It advertises whichever model the node resolved. + maps.Copy(types, generateBuiltinGPUTypes(models[0], arch, maxGPUsPerInstance)) return types } +// gpuModelsHomogeneous reports whether every GPU advertises the same name and +// VRAM. Those reach GpuInfo, so devices advertising identically are +// interchangeable — which spares a mixed-SKU H100 node differing only by PCI ID. +func gpuModelsHomogeneous(models []GPUModel) bool { + for _, m := range models[1:] { + if m.Name != models[0].Name || m.MemoryMiB != models[0].MemoryMiB { + return false + } + } + return true +} + +// gpuTypeOffered reports whether a node handing at most maxGPUsPerInstance GPUs +// to one instance can offer this type, logging by name when it cannot. An +// operator who sees a type silently absent has no thread to pull. +func gpuTypeOffered(name string, maxGPUsPerInstance int) bool { + required := GPUCountForType(name) + if required <= maxGPUsPerInstance { + return true + } + slog.Info("GPU instance type not offered", + "instanceType", name, "gpus_required", required, + "gpus_offerable", maxGPUsPerInstance) + return false +} + +// generateBuiltinGPUTypes emits the gpu.* family for the node's resolved GPU +// model. Every figure but the model itself is static, so the family is +// identical on every node that discovers the same hardware. +func generateBuiltinGPUTypes(model GPUModel, arch string, maxGPUsPerInstance int) map[string]*ec2.InstanceTypeInfo { + types := make(map[string]*ec2.InstanceTypeInfo, len(builtinGPUSizes)) + for _, size := range builtinGPUSizes { + name := builtinGPUPrefix + size.suffix + if !gpuTypeOffered(name, maxGPUsPerInstance) { + continue + } + types[name] = gpuInstanceTypeInfo(name, size, model, arch, true) + } + return types +} + +// gpuInstanceTypeInfo builds one GPU InstanceTypeInfo. The vCPU and memory +// figures come from the size, the GPU count from the type name, and the model, +// VRAM and manufacturer from discovery. +func gpuInstanceTypeInfo(name string, size instanceSize, model GPUModel, arch string, currentGen bool) *ec2.InstanceTypeInfo { + gpuCount := int64(GPUCountForType(name)) + return &ec2.InstanceTypeInfo{ + InstanceType: aws.String(name), + VCpuInfo: &ec2.VCpuInfo{ + DefaultVCpus: aws.Int64(int64(size.vcpus)), + }, + MemoryInfo: &ec2.MemoryInfo{ + SizeInMiB: aws.Int64(int64(size.memoryGB * 1024)), + }, + ProcessorInfo: &ec2.ProcessorInfo{ + SupportedArchitectures: []*string{aws.String(arch)}, + }, + GpuInfo: &ec2.GpuInfo{ + Gpus: []*ec2.GpuDeviceInfo{{ + Count: aws.Int64(gpuCount), + Manufacturer: aws.String(model.Manufacturer), + Name: aws.String(model.Name), + MemoryInfo: &ec2.GpuDeviceMemoryInfo{ + SizeInMiB: aws.Int64(model.MemoryMiB), + }, + }}, + TotalGpuMemoryInMiB: aws.Int64(model.MemoryMiB * gpuCount), + }, + CurrentGeneration: aws.Bool(currentGen), + BurstablePerformanceSupported: aws.Bool(false), + Hypervisor: aws.String("kvm"), + SupportedVirtualizationTypes: []*string{aws.String("hvm")}, + SupportedRootDeviceTypes: []*string{aws.String("ebs")}, + NetworkInfo: NetworkInfoForType(name), + PlacementGroupInfo: &ec2.PlacementGroupInfo{ + SupportedStrategies: []*string{ + aws.String("cluster"), + aws.String("spread"), + }, + }, + } +} + // IsGPUType returns true if the instance type has GPU resources. func IsGPUType(info *ec2.InstanceTypeInfo) bool { return info.GpuInfo != nil && len(info.GpuInfo.Gpus) > 0 diff --git a/spinifex/instancetypes/generate_test.go b/spinifex/instancetypes/generate_test.go index d963b3612..8a26524e2 100644 --- a/spinifex/instancetypes/generate_test.go +++ b/spinifex/instancetypes/generate_test.go @@ -461,9 +461,10 @@ func TestGPUModelForVendorDevice_Unknown(t *testing.T) { func TestGenerateGPUTypes_NVIDIAa10g(t *testing.T) { types := GenerateGPUTypes([]GPUModel{NVIDIAa10g}, "x86_64") - // g5 has 5 single-GPU sizes: xlarge, 2xlarge, 4xlarge, 8xlarge, 16xlarge - assert.Len(t, types, 5) - for _, name := range []string{"g5.xlarge", "g5.2xlarge", "g5.4xlarge", "g5.8xlarge", "g5.16xlarge"} { + // Every g5 size, plus the built-in gpu.* family. + assert.Len(t, types, len(g5Sizes)+len(builtinGPUSizes)) + for _, name := range []string{"g5.xlarge", "g5.2xlarge", "g5.4xlarge", "g5.8xlarge", + "g5.12xlarge", "g5.16xlarge", "g5.24xlarge", "g5.48xlarge"} { assert.True(t, hasFamily(types, name), "expected %s", name) } @@ -485,7 +486,8 @@ func TestGenerateGPUTypes_NVIDIAa10g(t *testing.T) { func TestGenerateGPUTypes_DeduplicatesSameFamily(t *testing.T) { // Two GPUs of the same model (same family) should produce only one set of types. types := GenerateGPUTypes([]GPUModel{NVIDIAa10g, NVIDIAa10g}, "x86_64") - assert.Len(t, types, 5, "duplicate GPU model should not double the type count") + assert.Len(t, types, len(g5Sizes)+len(builtinGPUSizes), + "duplicate GPU model should not double the type count") } func TestGenerateGPUTypes_EmptyModels(t *testing.T) { diff --git a/spinifex/instancetypes/gpu_type_name_test.go b/spinifex/instancetypes/gpu_type_name_test.go index cbc22de91..4c44315dc 100644 --- a/spinifex/instancetypes/gpu_type_name_test.go +++ b/spinifex/instancetypes/gpu_type_name_test.go @@ -15,6 +15,9 @@ func TestGPUVendorForType(t *testing.T) { {"p4d.xlarge", "nvidia"}, {"m5.large", ""}, {"", ""}, + // Both name a shape, not a family; the vendor comes from discovery. + {"gpu.8x4c", ""}, + {"mig.1g.10gb", ""}, } for _, tc := range tests { t.Run(tc.instanceType, func(t *testing.T) { @@ -23,6 +26,9 @@ func TestGPUVendorForType(t *testing.T) { } } +// A false answer routes ECS and EKS to the non-GPU AMI, which boots the node +// with its GPUs passed through and no driver. The vendor being unknowable from +// the name is not a reason to call these types CPU-only. func TestIsGPUTypeName(t *testing.T) { tests := []struct { instanceType string @@ -32,6 +38,9 @@ func TestIsGPUTypeName(t *testing.T) { {"p4d.xlarge", true}, {"m5.large", false}, {"", false}, + {"gpu.1x2c", true}, + {"gpu.8x8c", true}, + {"mig.1g.10gb", true}, } for _, tc := range tests { t.Run(tc.instanceType, func(t *testing.T) { diff --git a/spinifex/instancetypes/multi_gpu_test.go b/spinifex/instancetypes/multi_gpu_test.go new file mode 100644 index 000000000..022d42cc5 --- /dev/null +++ b/spinifex/instancetypes/multi_gpu_test.go @@ -0,0 +1,279 @@ +//test:in-package — pins instanceFamilyDefs and gpuCountPerType against each +package instancetypes + +import ( + "fmt" + "slices" + "testing" + + "github.com/aws/aws-sdk-go/aws" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// gpuFamilies are every family in instanceFamilyDefs that GenerateGPUTypes can +// emit. Listed here rather than derived so a new GPU family has to be added +// deliberately, with its counts. +var gpuFamilies = []string{ + "g4dn", "g4ad", "g5", "g6", "gr6", "g6e", "g7e", + "p3", "p3dn", "p4d", "p4de", "p5", "p5e", + builtinGPUFamily, +} + +// wantGPUCounts pins the GPU count of every size of every GPU family. A size +// added without a count, or a count without a size, fails here — otherwise a +// wrong figure surfaces only when a customer sizes a workload from it. +var wantGPUCounts = map[string]int{ + "g4dn.xlarge": 1, + "g4dn.2xlarge": 1, + "g4dn.4xlarge": 1, + "g4dn.8xlarge": 1, + "g4dn.12xlarge": 4, + "g4dn.16xlarge": 1, + + "g4ad.xlarge": 1, + "g4ad.2xlarge": 1, + "g4ad.4xlarge": 1, + "g4ad.8xlarge": 2, + "g4ad.16xlarge": 4, + + "g5.xlarge": 1, + "g5.2xlarge": 1, + "g5.4xlarge": 1, + "g5.8xlarge": 1, + "g5.12xlarge": 4, + "g5.16xlarge": 1, + "g5.24xlarge": 4, + "g5.48xlarge": 8, + + "g6.xlarge": 1, + "g6.2xlarge": 1, + "g6.4xlarge": 1, + "g6.8xlarge": 1, + "g6.12xlarge": 4, + "g6.16xlarge": 1, + "g6.24xlarge": 4, + "g6.48xlarge": 8, + + "gr6.4xlarge": 1, + "gr6.8xlarge": 1, + + "g6e.xlarge": 1, + "g6e.2xlarge": 1, + "g6e.4xlarge": 1, + "g6e.8xlarge": 1, + "g6e.12xlarge": 4, + "g6e.16xlarge": 1, + "g6e.24xlarge": 4, + "g6e.48xlarge": 8, + + // g7e is a Spinifex family, grandfathered and not extended. + "g7e.2xlarge": 1, + "g7e.4xlarge": 1, + "g7e.8xlarge": 1, + "g7e.12xlarge": 2, + + "p3.2xlarge": 1, + "p3.8xlarge": 4, + "p3.16xlarge": 8, + + "p3dn.2xlarge": 1, // Spinifex single-GPU size + "p3dn.24xlarge": 8, + + "p4d.xlarge": 1, // Spinifex single-GPU size + "p4d.24xlarge": 8, + + "p4de.xlarge": 1, // Spinifex single-GPU size + "p4de.24xlarge": 8, + + "p5.4xlarge": 1, // Spinifex single-GPU size + "p5.48xlarge": 8, + + "p5e.4xlarge": 1, // Spinifex single-GPU size + "p5e.48xlarge": 8, +} + +func init() { + // The gpu.* family is generated, so its counts are pinned by the shape + // assertions in TestBuiltinGPUFamily rather than repeated by hand. + for n := 1; n <= MaxGPUsPerInstance; n++ { + for _, perGPU := range builtinGPUTiers { + wantGPUCounts[fmt.Sprintf("%s%dx%dc", builtinGPUPrefix, n, perGPU)] = n + } + } +} + +func TestGPUCountForType_PinsEveryGPUSize(t *testing.T) { + defined := make(map[string]bool, len(wantGPUCounts)) + + for _, def := range instanceFamilyDefs { + if !slices.Contains(gpuFamilies, def.name) { + continue + } + for _, size := range def.sizes { + name := def.name + "." + size.suffix + defined[name] = true + want, pinned := wantGPUCounts[name] + if !assert.True(t, pinned, "%s has no pinned GPU count", name) { + continue + } + assert.Equal(t, want, GPUCountForType(name), "GPU count for %s", name) + } + } + + for name := range wantGPUCounts { + assert.True(t, defined[name], "%s is pinned but no longer defined — removing a type is breaking", name) + } +} + +// Every name in gpuCountPerType must be a type that exists. An entry for a size +// that was never defined silently does nothing. +func TestGPUCountPerType_HasNoOrphanEntries(t *testing.T) { + for name := range gpuCountPerType { + _, ok := DefaultVCPUs(name) + assert.True(t, ok, "gpuCountPerType names %s, which is not a defined instance type", name) + } +} + +func TestBuiltinGPUFamily(t *testing.T) { + assert.Len(t, builtinGPUSizes, MaxGPUsPerInstance*len(builtinGPUTiers)) + + for n := 1; n <= MaxGPUsPerInstance; n++ { + for _, perGPU := range builtinGPUTiers { + name := fmt.Sprintf("%s%dx%dc", builtinGPUPrefix, n, perGPU) + t.Run(name, func(t *testing.T) { + wantVCPUs := n * perGPU + + vcpus, ok := DefaultVCPUs(name) + require.True(t, ok, "%s must be a defined type", name) + assert.Equal(t, wantVCPUs, vcpus) + + memMiB, ok := DefaultMemoryMiB(name) + require.True(t, ok) + assert.Equal(t, int64(wantVCPUs*builtinGPUMemPerVCPUGB*1024), memMiB, + "every tier carries 4 GiB per vCPU") + + assert.Equal(t, n, GPUCountForType(name)) + assert.True(t, IsBuiltinGPUType(name)) + }) + } + } +} + +// The prefix is reserved and self-announcing, following sys. and mig. +func TestIsBuiltinGPUType(t *testing.T) { + assert.True(t, IsBuiltinGPUType("gpu.8x4c")) + assert.True(t, IsBuiltinGPUType("gpu.1x2c")) + assert.False(t, IsBuiltinGPUType("g5.xlarge")) + assert.False(t, IsBuiltinGPUType("gpu")) + assert.False(t, IsBuiltinGPUType("")) +} + +// gpu.* and mig.* name a shape and a profile, so neither carries a vendor. +func TestGPUVendorForType_BuiltinAndMIGCarryNoVendor(t *testing.T) { + assert.Empty(t, GPUVendorForType("gpu.8x4c")) + assert.Empty(t, GPUVendorForType("mig.1g.10gb")) + assert.Equal(t, "nvidia", GPUVendorForType("g5.xlarge")) +} + +// A node's gpu.* types advertise whatever GPU it discovered, whichever AWS +// family that model maps to. +func TestGenerateGPUTypes_BuiltinFamilyReportsTheDiscoveredModel(t *testing.T) { + rtx3090 := GPUModel{ + VendorID: "10de", DeviceID: "2204", Family: "g5", + Manufacturer: "NVIDIA", Name: "GeForce RTX 3090", MemoryMiB: 24576, + } + models := make([]GPUModel, 8) + for i := range models { + models[i] = rtx3090 + } + + types := GenerateGPUTypes(models, "x86_64") + + it, ok := types["gpu.8x4c"] + require.True(t, ok, "a homogeneous 8-GPU node must offer gpu.8x4c") + assert.Equal(t, int64(32), *it.VCpuInfo.DefaultVCpus) + assert.Equal(t, int64(128*1024), *it.MemoryInfo.SizeInMiB) + require.Len(t, it.GpuInfo.Gpus, 1) + assert.Equal(t, int64(8), *it.GpuInfo.Gpus[0].Count) + assert.Equal(t, "GeForce RTX 3090", *it.GpuInfo.Gpus[0].Name) + assert.Equal(t, "NVIDIA", *it.GpuInfo.Gpus[0].Manufacturer) + assert.Equal(t, int64(24576), *it.GpuInfo.Gpus[0].MemoryInfo.SizeInMiB) + assert.Equal(t, int64(8*24576), *it.GpuInfo.TotalGpuMemoryInMiB) + + // All three tiers, counts 1 through 8, with no gaps. + for n := 1; n <= MaxGPUsPerInstance; n++ { + for _, perGPU := range builtinGPUTiers { + name := fmt.Sprintf("%s%dx%dc", builtinGPUPrefix, n, perGPU) + assert.Contains(t, types, name) + } + } +} + +// Two devices advertising the same name and VRAM are interchangeable, so a +// mixed-SKU node of one model (H100 SXM and PCIe differ only by PCI ID) still +// offers multi-GPU types. +func TestGenerateGPUTypes_SameNameAndVRAMIsHomogeneous(t *testing.T) { + types := GenerateGPUTypes([]GPUModel{NVIDIAh100sxm, NVIDIAh100pcie}, "x86_64") + assert.Contains(t, types, "gpu.2x4c") + assert.Contains(t, types, "p5.48xlarge") +} + +// Handing one instance a mixture of models tends to make NCCL hang rather than +// fail, so a node that resolved more than one offers single-GPU types only. +func TestGenerateGPUTypes_MixedModelsOfferSingleGPUTypesOnly(t *testing.T) { + types := GenerateGPUTypes([]GPUModel{NVIDIAa10g, NVIDIAl40s}, "x86_64") + + require.NotEmpty(t, types) + for name, it := range types { + require.Len(t, it.GpuInfo.Gpus, 1) + assert.Equal(t, int64(1), *it.GpuInfo.Gpus[0].Count, + "%s must not be offered on a node with more than one GPU model", name) + assert.Equal(t, 1, GPUCountForType(name)) + } + + // The single-GPU sizes of both families survive, and so does gpu.1x*. + assert.Contains(t, types, "g5.xlarge") + assert.Contains(t, types, "g6e.xlarge") + assert.Contains(t, types, "gpu.1x4c") + assert.NotContains(t, types, "gpu.2x4c") + assert.NotContains(t, types, "g5.48xlarge") +} + +// MIG types stay at count 1: EC2 has no multi-slice type, and an accidental +// capability is awkward to withdraw once someone depends on it. +func TestGenerateMIGTypes_CountIsAlwaysOne(t *testing.T) { + profiles := []MIGProfileSpec{ + {Name: "1g.10gb", MemoryMiB: 10240}, + {Name: "3g.40gb", MemoryMiB: 40960}, + {Name: "7g.80gb", MemoryMiB: 81920}, + } + types := GenerateMIGTypes(profiles, "x86_64") + require.Len(t, types, len(profiles)) + + for name, it := range types { + require.Len(t, it.GpuInfo.Gpus, 1) + assert.Equal(t, int64(1), *it.GpuInfo.Gpus[0].Count, "%s", name) + assert.Equal(t, 1, GPUCountForType(name), "%s", name) + assert.Equal(t, *it.GpuInfo.Gpus[0].MemoryInfo.SizeInMiB, *it.GpuInfo.TotalGpuMemoryInMiB, + "%s: one slice is the whole allocation", name) + } +} + +// A multi-GPU AWS size must report its real GPU count and the aggregate VRAM +// that follows from it. +func TestGenerateGPUTypes_MultiGPUAWSSizes(t *testing.T) { + models := make([]GPUModel, 8) + for i := range models { + models[i] = NVIDIAa10g + } + types := GenerateGPUTypes(models, "x86_64") + + it, ok := types["g5.48xlarge"] + require.True(t, ok) + assert.Equal(t, int64(192), *it.VCpuInfo.DefaultVCpus) + assert.Equal(t, int64(768*1024), *it.MemoryInfo.SizeInMiB) + assert.Equal(t, int64(8), *it.GpuInfo.Gpus[0].Count) + assert.Equal(t, int64(8*24576), *it.GpuInfo.TotalGpuMemoryInMiB) + assert.Equal(t, "g5.48xlarge", aws.StringValue(it.InstanceType)) +} diff --git a/spinifex/services/spinifexui/frontend/dist/assets/_id-BnUjyn0E.js b/spinifex/services/spinifexui/frontend/dist/assets/_id-BnUjyn0E.js new file mode 100644 index 000000000..daf2c4791 --- /dev/null +++ b/spinifex/services/spinifexui/frontend/dist/assets/_id-BnUjyn0E.js @@ -0,0 +1 @@ +import{n as e,o as t,r as n,t as r}from"./compiler-runtime-D_vZfn79.js";import{t as i}from"./useQuery-2EKf7AyV.js";import{t as a}from"./useSuspenseQuery-Bc7E1P-f.js";import{t as o}from"./link-Dhy4xOXd.js";import{in as s,on as c}from"./cluster-config-xw_Q7X1e.js";import{t as l}from"./createLucideIcon-BQgzNCBR.js";import{t as u}from"./back-link-CjKy1JE5.js";import{c as d,i as f,n as p,s as m,t as h}from"./select-B01jpDaX.js";import{t as g}from"./rotate-cw-FTUcK_f-.js";import{t as _}from"./trash-DVab4pEz.js";import{t as v}from"./button-BarTr35m.js";import{t as y}from"./input-6kdUb_DH.js";import{n as b}from"./admin-context-CXmiyIcc.js";import{a as x,c as S,i as C,s as w}from"./ec2-CWEplLq4.js";import{J as T,K as E,W as D,Z as O,d as k,i as ee,it as A,nt as j,rt as te}from"./ec2-Ctto2xjU.js";import{f as ne}from"./iam-CVg27y22.js";import{t as re}from"./_id-U4BZhcdn.js";import{t as ie}from"./page-heading-vksh_67w.js";import{o as ae}from"./admin-BUkrFIlI.js";import{t as M}from"./error-banner-DeOeVBKS.js";import{s as oe,t as se}from"./field-c7GHI5st.js";import{t as ce}from"./textarea-n04EavUm.js";import{a as le,i as ue,l as de,n as fe,o as pe,r as me,s as he,t as ge}from"./alert-dialog-kCQ1W4Rz.js";import{t as _e}from"./delete-confirmation-dialog-SdDN4LiF.js";import{n as N,t as P}from"./detail-row-DNBRlVeK.js";import{t as ve}from"./state-badge-D1Z6q_OA.js";import{t as ye}from"./ami-details-ChpQ4w1b.js";import{t as be}from"./gpu-instance-type-select-BD2r8UcO.js";var xe={name:`image-plus`,size:24,node:[[`path`,{d:`M16 5h6`,key:`1vod17`}],[`path`,{d:`M19 2v6`,key:`4bpg5p`}],[`path`,{d:`M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5`,key:`1ue2ih`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]};xe.node;var Se=l(xe),Ce={name:`pause`,size:24,node:[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]};Ce.node;var we=l(Ce),Te={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]};Te.node;var F=l(Te),I={name:`settings-2`,size:24,node:[[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`path`,{d:`M19 7h-9`,key:`6i9tg`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]};I.node;var Ee=l(I),L={name:`terminal`,size:24,node:[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]};L.node;var De=l(L),Oe=r(),R=t(n(),1),z=e();function ke(e){let t=(0,Oe.c)(36),{instanceId:n,open:r,onOpenChange:i}=e,a=k(),[o,s]=(0,R.useState)(``),[c,l]=(0,R.useState)(``),[u,d]=(0,R.useState)(null),f;t[0]===i?f=t[1]:(f=function(e){e||(s(``),l(``),d(null)),i(e)},t[0]=i,t[1]=f);let p=f,m;t[2]!==a||t[3]!==c||t[4]!==o||t[5]!==n?(m=async function(){try{let e=await a.mutateAsync({instanceId:n,name:o,description:c||void 0});d(e.ImageId??null),s(``),l(``)}catch{}},t[2]=a,t[3]=c,t[4]=o,t[5]=n,t[6]=m):m=t[6];let h=m,g=u?`Image Created`:`Create Image (AMI)`,_;t[7]===g?_=t[8]:(_=(0,z.jsx)(de,{children:g}),t[7]=g,t[8]=_);let v=u?`Image "${u}" was created successfully.`:`Create an AMI from instance "${n}".`,b;t[9]===v?b=t[10]:(b=(0,z.jsx)(le,{children:v}),t[9]=v,t[10]=b);let x;t[11]!==_||t[12]!==b?(x=(0,z.jsxs)(he,{children:[_,b]}),t[11]=_,t[12]=b,t[13]=x):x=t[13];let S;t[14]!==u||t[15]!==c||t[16]!==o?(S=!u&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(se,{children:[(0,z.jsx)(oe,{children:(0,z.jsx)(`label`,{htmlFor:`imageName`,children:`Name`})}),(0,z.jsx)(y,{id:`imageName`,onChange:e=>{s(e.target.value)},placeholder:`my-image`,value:o})]}),(0,z.jsxs)(se,{children:[(0,z.jsx)(oe,{children:(0,z.jsx)(`label`,{htmlFor:`imageDescription`,children:`Description`})}),(0,z.jsx)(ce,{id:`imageDescription`,onChange:e=>{l(e.target.value)},placeholder:`Optional description`,rows:2,value:c})]})]}),t[14]=u,t[15]=c,t[16]=o,t[17]=S):S=t[17];let C=u?`Close`:`Cancel`,w;t[18]===C?w=t[19]:(w=(0,z.jsx)(me,{children:C}),t[18]=C,t[19]=w);let T;t[20]!==a||t[21]!==u||t[22]!==h||t[23]!==o?(T=!u&&(0,z.jsx)(fe,{disabled:a.isPending||!o.trim(),onClick:h,children:a.isPending?`Creating…`:`Create Image`}),t[20]=a,t[21]=u,t[22]=h,t[23]=o,t[24]=T):T=t[24];let E;t[25]!==w||t[26]!==T?(E=(0,z.jsxs)(pe,{children:[w,T]}),t[25]=w,t[26]=T,t[27]=E):E=t[27];let D;t[28]!==E||t[29]!==x||t[30]!==S?(D=(0,z.jsxs)(ue,{children:[x,S,E]}),t[28]=E,t[29]=x,t[30]=S,t[31]=D):D=t[31];let O;return t[32]!==p||t[33]!==r||t[34]!==D?(O=(0,z.jsx)(ge,{onOpenChange:p,open:r,children:D}),t[32]=p,t[33]=r,t[34]=D,t[35]=O):O=t[35],O}function Ae(e){let t=(0,Oe.c)(9),{gpus:n}=e;if(!n?.length)return null;let r=n.length===1?`GPU`:`GPUs (${n.length})`,i;t[0]===r?i=t[1]:(i=(0,z.jsx)(N.Header,{children:r}),t[0]=r,t[1]=i);let a;if(t[2]!==n){let e;t[4]===n.length?e=t[5]:(e=(e,t)=>(0,z.jsxs)(`div`,{className:`border-b last:border-b-0`,children:[n.length>1&&(0,z.jsxs)(`h3`,{className:`bg-muted/30 px-4 py-2 text-sm font-medium`,children:[`GPU `,t+1]}),(0,z.jsxs)(N.Content,{children:[(0,z.jsx)(P,{label:`Model`,value:e.model}),(0,z.jsx)(P,{label:`VRAM`,value:c(e.vram_mib)}),(0,z.jsx)(P,{label:`Attachment`,value:e.profile?`MIG slice`:`PCIe passthrough`}),e.profile&&(0,z.jsx)(P,{label:`Profile`,value:e.profile}),e.mdev_path&&(0,z.jsx)(P,{label:`Mdev path`,value:e.mdev_path}),e.pci_address&&(0,z.jsx)(P,{label:`PCI address`,value:e.pci_address})]})]},e.mdev_path??e.pci_address??`${e.model}-${t}`),t[4]=n.length,t[5]=e),a=n.map(e),t[2]=n,t[3]=a}else a=t[3];let o;return t[6]!==i||t[7]!==a?(o=(0,z.jsxs)(N,{children:[i,a]}),t[6]=i,t[7]=a,t[8]=o):o=t[8],o}function je(e){let t=(0,Oe.c)(31),{instanceId:n}=e,r;t[0]===n?r=t[1]:(r=C(n),t[0]=n,t[1]=r);let{data:a}=i(r),{data:s}=i(ne),c=ee(),l=D(),[u,f]=(0,R.useState)(``),g;t[2]===a?.IamInstanceProfileAssociations?g=t[3]:(g=a?.IamInstanceProfileAssociations?.find(Ne),t[2]=a?.IamInstanceProfileAssociations,t[3]=g);let _=g,y;t[4]===s?.InstanceProfiles?y=t[5]:(y=s?.InstanceProfiles??[],t[4]=s?.InstanceProfiles,t[5]=y);let b=y,x;t[6]!==c||t[7]!==n||t[8]!==u?(x=async()=>{u&&(await c.mutateAsync({instanceId:n,instanceProfileName:u}),f(``))},t[6]=c,t[7]=n,t[8]=u,t[9]=x):x=t[9];let S=x,w;t[10]!==_||t[11]!==l||t[12]!==n?(w=async()=>{_?.AssociationId&&await l.mutateAsync({associationId:_.AssociationId,instanceId:n})},t[10]=_,t[11]=l,t[12]=n,t[13]=w):w=t[13];let T=w,E;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,z.jsx)(N.Header,{children:`IAM Role`}),t[14]=E):E=t[14];let O;t[15]===c.error?O=t[16]:(O=c.error&&(0,z.jsx)(`div`,{className:`col-span-2`,children:(0,z.jsx)(M,{error:c.error,msg:`Failed to associate instance profile`})}),t[15]=c.error,t[16]=O);let k;t[17]===l.error?k=t[18]:(k=l.error&&(0,z.jsx)(`div`,{className:`col-span-2`,children:(0,z.jsx)(M,{error:l.error,msg:`Failed to disassociate instance profile`})}),t[17]=l.error,t[18]=k);let A;t[19]!==c.isPending||t[20]!==_||t[21]!==l.isPending||t[22]!==S||t[23]!==T||t[24]!==b||t[25]!==u?(A=_?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(P,{label:`Instance Profile ARN`,value:_.IamInstanceProfile?.Arn}),(0,z.jsx)(P,{label:`State`,value:(0,z.jsx)(ve,{state:_.State})}),(0,z.jsx)(`div`,{className:`col-span-2 flex justify-end`,children:(0,z.jsx)(v,{disabled:l.isPending,onClick:T,size:`sm`,variant:`destructive`,children:l.isPending?`Detaching…`:`Detach`})})]}):(0,z.jsxs)(`div`,{className:`col-span-2 space-y-3`,children:[(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No instance profile is associated. Associate one to flow role credentials to this instance via IMDS.`}),b.length>0?(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsxs)(h,{onValueChange:e=>{f(e??``)},value:u,children:[(0,z.jsx)(m,{className:`w-full`,children:(0,z.jsx)(d,{placeholder:`Select an instance profile`})}),(0,z.jsx)(p,{children:b.map(Me)})]}),(0,z.jsx)(v,{disabled:!u||c.isPending,onClick:S,size:`sm`,children:c.isPending?`Associating…`:`Associate`})]}):(0,z.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`No instance profiles exist.`,` `,(0,z.jsx)(o,{className:`text-primary hover:underline`,to:`/iam/create-instance-profile`,children:`Create one`}),` `,`first.`]})]}),t[19]=c.isPending,t[20]=_,t[21]=l.isPending,t[22]=S,t[23]=T,t[24]=b,t[25]=u,t[26]=A):A=t[26];let j;return t[27]!==O||t[28]!==k||t[29]!==A?(j=(0,z.jsxs)(N,{children:[E,(0,z.jsxs)(N.Content,{children:[O,k,A]})]}),t[27]=O,t[28]=k,t[29]=A,t[30]=j):j=t[30],j}function Me(e){return(0,z.jsx)(f,{value:e.InstanceProfileName??``,children:e.InstanceProfileName},e.InstanceProfileName)}function Ne(e){return e.State===`associating`||e.State===`associated`}var Pe=new Set([`pending`,`stopping`,`shutting-down`,`terminated`]);function Fe(e){let t=(0,Oe.c)(43),{instanceId:n,state:r}=e,i=j(),a=te(),o=O(),s=A(),[c,l]=(0,R.useState)(!1),u=Pe.has(r??``),d;t[0]!==n||t[1]!==s?(d=()=>{s.mutate(n,{onSettled:()=>{l(!1)}})},t[0]=n,t[1]=s,t[2]=d):d=t[2];let f=d;if(u&&r!==`terminated`){let e;return t[3]===r?e=t[4]:(e=(0,z.jsx)(`div`,{className:`rounded-lg border bg-muted/50 p-4`,children:(0,z.jsxs)(`p`,{className:`text-center text-sm text-muted-foreground`,children:[`Instance is `,r,`. Actions will be available once the operation completes.`]})}),t[3]=r,t[4]=e),e}if(r===`terminated`){let e;return t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,z.jsx)(`div`,{className:`rounded-lg border bg-muted/50 p-4`,children:(0,z.jsx)(`p`,{className:`text-center text-sm text-muted-foreground`,children:`This instance has been terminated and cannot be managed.`})}),t[5]=e):e=t[5],e}let p;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,z.jsx)(`h2`,{className:`mb-4 font-semibold`,children:`Instance Actions`}),t[6]=p):p=t[6];let m;t[7]===i.error?m=t[8]:(m=i.error&&(0,z.jsx)(M,{error:i.error,msg:`Failed to start instance`}),t[7]=i.error,t[8]=m);let h;t[9]===a.error?h=t[10]:(h=a.error&&(0,z.jsx)(M,{error:a.error,msg:`Failed to stop instance`}),t[9]=a.error,t[10]=h);let y;t[11]===o.error?y=t[12]:(y=o.error&&(0,z.jsx)(M,{error:o.error,msg:`Failed to reboot instance`}),t[11]=o.error,t[12]=y);let b;t[13]===s.error?b=t[14]:(b=s.error&&(0,z.jsx)(M,{error:s.error,msg:`Failed to terminate instance`}),t[13]=s.error,t[14]=b);let x;t[15]!==n||t[16]!==i||t[17]!==r?(x=r===`stopped`&&(0,z.jsxs)(v,{disabled:i.isPending,onClick:()=>{i.mutate(n)},size:`sm`,variant:`default`,children:[(0,z.jsx)(F,{className:`size-4`}),i.isPending?`Starting`:`Start`]}),t[15]=n,t[16]=i,t[17]=r,t[18]=x):x=t[18];let S;t[19]!==n||t[20]!==o||t[21]!==r||t[22]!==a?(S=r===`running`&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(v,{disabled:a.isPending,onClick:()=>{a.mutate(n)},size:`sm`,variant:`outline`,children:[(0,z.jsx)(we,{className:`size-4`}),a.isPending?`Stopping`:`Stop`]}),(0,z.jsxs)(v,{disabled:o.isPending,onClick:()=>{o.mutate(n)},size:`sm`,variant:`outline`,children:[(0,z.jsx)(g,{className:`size-4`}),o.isPending?`Rebooting`:`Reboot`]})]}),t[19]=n,t[20]=o,t[21]=r,t[22]=a,t[23]=S):S=t[23];let C;t[24]!==r||t[25]!==s.isPending?(C=(r===`stopped`||r===`running`)&&(0,z.jsxs)(v,{disabled:s.isPending,onClick:()=>{l(!0)},size:`sm`,variant:`destructive`,children:[(0,z.jsx)(_,{className:`size-4`}),s.isPending?`Terminating`:`Terminate`]}),t[24]=r,t[25]=s.isPending,t[26]=C):C=t[26];let w;t[27]!==x||t[28]!==S||t[29]!==C?(w=(0,z.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[x,S,C]}),t[27]=x,t[28]=S,t[29]=C,t[30]=w):w=t[30];let T=`Are you sure you want to terminate the instance "${n}"? This action cannot be undone.`,E;t[31]!==f||t[32]!==c||t[33]!==T||t[34]!==s.isPending?(E=(0,z.jsx)(_e,{confirmLabel:`Terminate`,description:T,isPending:s.isPending,onConfirm:f,onOpenChange:l,open:c,pendingLabel:`Terminating…`,title:`Terminate Instance`}),t[31]=f,t[32]=c,t[33]=T,t[34]=s.isPending,t[35]=E):E=t[35];let D;return t[36]!==w||t[37]!==E||t[38]!==m||t[39]!==h||t[40]!==y||t[41]!==b?(D=(0,z.jsxs)(`div`,{className:`rounded-lg border bg-card p-4`,children:[p,m,h,y,b,w,E]}),t[36]=w,t[37]=E,t[38]=m,t[39]=h,t[40]=y,t[41]=b,t[42]=D):D=t[42],D}function Ie(){let e=(0,Oe.c)(136),{id:t}=re.useParams(),{isAdmin:n}=b(),r;e[0]===t?r=e[1]:(r=w(t),e[0]=t,e[1]=r);let{data:c}=a(r),l=c.Reservations?.[0]?.Instances?.[0],d=l?.ImageId,f;e[2]===d?f=e[3]:(f=x(d),e[2]=d,e[3]=f);let{data:p}=a(f),m=p?.Images?.[0],{data:h}=a(S),g;e[4]===n?g=e[5]:(g={...ae,enabled:n,refetchInterval:5e3},e[4]=n,e[5]=g);let{data:_}=i(g),y;e[6]!==t||e[7]!==_?.vms?(y=_?.vms?.find(e=>e.instance_id===t),e[6]=t,e[7]=_?.vms,e[8]=y):y=e[8];let C=y,D=T(),O=E(),[k,ee]=(0,R.useState)(!1),[A,j]=(0,R.useState)(``),[te,ne]=(0,R.useState)(!1),[ce,_e]=(0,R.useState)(null),[xe,Ce]=(0,R.useState)(!1);if(!l?.InstanceId){let t;return e[9]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(u,{to:`/ec2/describe-instances`,children:`Back to instances`}),(0,z.jsx)(`p`,{className:`text-muted-foreground`,children:`Instance not found.`})]}),e[9]=t):t=e[9],t}let we;e[10]===l.LaunchTime?we=e[11]:(we=s(l.LaunchTime),e[10]=l.LaunchTime,e[11]=we);let Te=we,F=l.State?.Name===`running`,I=l.State?.Name===`stopped`,L;e[12]!==t||e[13]!==D||e[14]!==A?(L=async function(){try{await D.mutateAsync({instanceId:t,instanceType:A}),ee(!1),j(``)}catch{}},e[12]=t,e[13]=D,e[14]=A,e[15]=L):L=e[15];let Me=L,Ne;e[16]!==O||e[17]!==t?(Ne=async function(){try{let e=await O.mutateAsync(t),n=e.Output?atob(e.Output):`(no output)`;_e(n),ne(!0)}catch{}},e[16]=O,e[17]=t,e[18]=Ne):Ne=e[18];let Pe=Ne,Ie;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(Ie=(0,z.jsx)(u,{to:`/ec2/describe-instances`,children:`Back to instances`}),e[19]=Ie):Ie=e[19];let B;e[20]===D.error?B=e[21]:(B=D.error&&(0,z.jsx)(M,{error:D.error,msg:`Failed to modify instance`}),e[20]=D.error,e[21]=B);let V;e[22]===O.error?V=e[23]:(V=O.error&&(0,z.jsx)(M,{error:O.error,msg:`Failed to get console output`}),e[22]=O.error,e[23]=V);let H;e[24]!==O.isPending||e[25]!==Pe||e[26]!==F?(H=F&&(0,z.jsxs)(v,{disabled:O.isPending,onClick:Pe,size:`sm`,variant:`outline`,children:[(0,z.jsx)(De,{className:`size-4`}),O.isPending?`Fetching…`:`View Console`]}),e[24]=O.isPending,e[25]=Pe,e[26]=F,e[27]=H):H=e[27];let U;e[28]!==F||e[29]!==I?(U=(F||I)&&(0,z.jsxs)(v,{onClick:()=>{Ce(!0)},size:`sm`,variant:`outline`,children:[(0,z.jsx)(Se,{className:`size-4`}),`Create Image`]}),e[28]=F,e[29]=I,e[30]=U):U=e[30];let W;e[31]!==l.InstanceType||e[32]!==I?(W=I&&(0,z.jsxs)(v,{onClick:()=>{j(l.InstanceType??``),ee(!0)},size:`sm`,variant:`outline`,children:[(0,z.jsx)(Ee,{className:`size-4`}),`Modify Instance`]}),e[31]=l.InstanceType,e[32]=I,e[33]=W):W=e[33];let ze=l.State?.Name,G;e[34]===ze?G=e[35]:(G=(0,z.jsx)(ve,{state:ze}),e[34]=ze,e[35]=G);let K;e[36]!==H||e[37]!==U||e[38]!==W||e[39]!==G?(K=(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[H,U,W,G]}),e[36]=H,e[37]=U,e[38]=W,e[39]=G,e[40]=K):K=e[40];let q;e[41]!==l.InstanceId||e[42]!==K?(q=(0,z.jsx)(ie,{actions:K,subtitle:`Instance Details`,title:l.InstanceId}),e[41]=l.InstanceId,e[42]=K,e[43]=q):q=e[43];let Be=l.State?.Name,J;e[44]!==l.InstanceId||e[45]!==Be?(J=(0,z.jsx)(Fe,{instanceId:l.InstanceId,state:Be}),e[44]=l.InstanceId,e[45]=Be,e[46]=J):J=e[46];let Y;e[47]!==ce||e[48]!==te?(Y=te&&ce!==null&&(0,z.jsxs)(N,{children:[(0,z.jsx)(N.Header,{children:(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[`Console Output`,(0,z.jsx)(v,{onClick:()=>{ne(!1),_e(null)},size:`sm`,variant:`ghost`,children:`Hide`})]})}),(0,z.jsx)(`div`,{className:`p-4`,children:(0,z.jsx)(`pre`,{className:`max-h-96 overflow-y-auto rounded bg-muted p-3 font-mono text-xs whitespace-pre-wrap`,children:ce})})]}),e[47]=ce,e[48]=te,e[49]=Y):Y=e[49];let Ve;e[50]===Symbol.for(`react.memo_cache_sentinel`)?(Ve=(0,z.jsx)(N.Header,{children:`Instance Information`}),e[50]=Ve):Ve=e[50];let X;e[51]===l.InstanceId?X=e[52]:(X=(0,z.jsx)(P,{label:`Instance ID`,value:l.InstanceId}),e[51]=l.InstanceId,e[52]=X);let Z;e[53]===l.InstanceType?Z=e[54]:(Z=(0,z.jsx)(P,{label:`Instance Type`,value:l.InstanceType}),e[53]=l.InstanceType,e[54]=Z);let He=l.State?.Name,Ue;e[55]===He?Ue=e[56]:(Ue=(0,z.jsx)(P,{label:`Instance State`,value:He}),e[55]=He,e[56]=Ue);let We;e[57]===l.State?.Code?We=e[58]:(We=l.State?.Code?.toString(),e[57]=l.State?.Code,e[58]=We);let Ge;e[59]===We?Ge=e[60]:(Ge=(0,z.jsx)(P,{label:`State Code`,value:We}),e[59]=We,e[60]=Ge);let Ke;e[61]===Te?Ke=e[62]:(Ke=(0,z.jsx)(P,{label:`Launch Time`,value:Te}),e[61]=Te,e[62]=Ke);let qe=l.Placement?.AvailabilityZone,Je;e[63]===qe?Je=e[64]:(Je=(0,z.jsx)(P,{label:`Availability Zone`,value:qe}),e[63]=qe,e[64]=Je);let Ye;e[65]===l.Placement?Ye=e[66]:(Ye=l.Placement?.GroupName?(0,z.jsx)(o,{className:`text-primary hover:underline`,to:`/ec2/describe-placement-groups`,children:l.Placement.GroupName}):void 0,e[65]=l.Placement,e[66]=Ye);let Xe;e[67]===Ye?Xe=e[68]:(Xe=(0,z.jsx)(P,{label:`Placement Group`,value:Ye}),e[67]=Ye,e[68]=Xe);let Ze;e[69]!==X||e[70]!==Z||e[71]!==Ue||e[72]!==Ge||e[73]!==Ke||e[74]!==Je||e[75]!==Xe?(Ze=(0,z.jsxs)(N,{children:[Ve,(0,z.jsxs)(N.Content,{children:[X,Z,Ue,Ge,Ke,Je,Xe]})]}),e[69]=X,e[70]=Z,e[71]=Ue,e[72]=Ge,e[73]=Ke,e[74]=Je,e[75]=Xe,e[76]=Ze):Ze=e[76];let Qe;e[77]!==l.KeyName||e[78]!==l.PrivateDnsName||e[79]!==l.PrivateIpAddress||e[80]!==l.PublicDnsName||e[81]!==l.PublicIpAddress||e[82]!==l.SecurityGroups||e[83]!==l.SubnetId||e[84]!==l.VpcId?(Qe=(l.PrivateIpAddress||l.PublicIpAddress||l.VpcId||l.SubnetId||l.SecurityGroups&&l.SecurityGroups.length>0)&&(0,z.jsxs)(N,{children:[(0,z.jsx)(N.Header,{children:`Network & Security`}),(0,z.jsxs)(N.Content,{children:[(0,z.jsx)(P,{label:`Private IP Address`,value:l.PrivateIpAddress}),(0,z.jsx)(P,{label:`Public IP Address`,value:l.PublicIpAddress}),(0,z.jsx)(P,{label:`Private DNS`,value:l.PrivateDnsName}),(0,z.jsx)(P,{label:`Public DNS`,value:l.PublicDnsName}),(0,z.jsx)(P,{label:`VPC ID`,value:l.VpcId?(0,z.jsx)(o,{className:`text-primary hover:underline`,params:{id:l.VpcId},to:`/ec2/describe-vpcs/$id`,children:l.VpcId}):void 0}),(0,z.jsx)(P,{label:`Subnet ID`,value:l.SubnetId?(0,z.jsx)(o,{className:`text-primary hover:underline`,params:{id:l.SubnetId},to:`/ec2/describe-subnets/$id`,children:l.SubnetId}):void 0}),(0,z.jsx)(P,{label:`Key Name`,value:l.KeyName}),(0,z.jsx)(P,{label:`Security Groups`,value:l.SecurityGroups?.map(Re).join(`, `)})]})]}),e[77]=l.KeyName,e[78]=l.PrivateDnsName,e[79]=l.PrivateIpAddress,e[80]=l.PublicDnsName,e[81]=l.PublicIpAddress,e[82]=l.SecurityGroups,e[83]=l.SubnetId,e[84]=l.VpcId,e[85]=Qe):Qe=e[85];let $e;e[86]===l.InstanceId?$e=e[87]:($e=(0,z.jsx)(je,{instanceId:l.InstanceId}),e[86]=l.InstanceId,e[87]=$e);let et;e[88]!==n||e[89]!==C?.gpus?(et=n&&(0,z.jsx)(Ae,{gpus:C?.gpus}),e[88]=n,e[89]=C?.gpus,e[90]=et):et=e[90];let tt;e[91]===l.BlockDeviceMappings?tt=e[92]:(tt=l.BlockDeviceMappings&&l.BlockDeviceMappings.length>0&&(0,z.jsxs)(N,{children:[(0,z.jsx)(N.Header,{children:`Block Device Mappings`}),l.BlockDeviceMappings.map(Le)]}),e[91]=l.BlockDeviceMappings,e[92]=tt);let nt;e[93]===m?nt=e[94]:(nt=m&&(0,z.jsx)(ye,{image:m}),e[93]=m,e[94]=nt);let Q;e[95]!==q||e[96]!==J||e[97]!==Y||e[98]!==Ze||e[99]!==Qe||e[100]!==$e||e[101]!==et||e[102]!==tt||e[103]!==nt?(Q=(0,z.jsxs)(`div`,{className:`space-y-6`,children:[q,J,Y,Ze,Qe,$e,et,tt,nt]}),e[95]=q,e[96]=J,e[97]=Y,e[98]=Ze,e[99]=Qe,e[100]=$e,e[101]=et,e[102]=tt,e[103]=nt,e[104]=Q):Q=e[104];let rt;e[105]===Symbol.for(`react.memo_cache_sentinel`)?(rt=e=>{e||(ee(!1),j(``))},e[105]=rt):rt=e[105];let it;e[106]===Symbol.for(`react.memo_cache_sentinel`)?(it=(0,z.jsx)(de,{children:`Modify Instance`}),e[106]=it):it=e[106];let at;e[107]===l.InstanceId?at=e[108]:(at=(0,z.jsxs)(he,{children:[it,(0,z.jsxs)(le,{children:[`Select a new instance type for "`,l.InstanceId,`". The instance must be stopped to modify its attributes.`]})]}),e[107]=l.InstanceId,e[108]=at);let ot;e[109]===Symbol.for(`react.memo_cache_sentinel`)?(ot=(0,z.jsx)(oe,{children:(0,z.jsx)(`label`,{htmlFor:`instanceType`,children:`Instance Type`})}),e[109]=ot):ot=e[109];let st;e[110]===h.InstanceTypes?st=e[111]:(st=h.InstanceTypes??[],e[110]=h.InstanceTypes,e[111]=st);let ct;e[112]!==A||e[113]!==st?(ct=(0,z.jsxs)(se,{children:[ot,(0,z.jsx)(be,{className:`w-full`,id:`instanceType`,instanceTypes:st,onValueChange:j,value:A})]}),e[112]=A,e[113]=st,e[114]=ct):ct=e[114];let lt;e[115]===Symbol.for(`react.memo_cache_sentinel`)?(lt=(0,z.jsx)(me,{children:`Cancel`}),e[115]=lt):lt=e[115];let ut=D.isPending||!A||A===l.InstanceType,dt=D.isPending?`Saving…`:`Save Changes`,ft;e[116]!==Me||e[117]!==ut||e[118]!==dt?(ft=(0,z.jsxs)(pe,{children:[lt,(0,z.jsx)(fe,{disabled:ut,onClick:Me,children:dt})]}),e[116]=Me,e[117]=ut,e[118]=dt,e[119]=ft):ft=e[119];let pt;e[120]!==at||e[121]!==ct||e[122]!==ft?(pt=(0,z.jsxs)(ue,{children:[at,ct,ft]}),e[120]=at,e[121]=ct,e[122]=ft,e[123]=pt):pt=e[123];let mt;e[124]!==k||e[125]!==pt?(mt=(0,z.jsx)(ge,{onOpenChange:rt,open:k,children:pt}),e[124]=k,e[125]=pt,e[126]=mt):mt=e[126];let $;e[127]!==l.InstanceId||e[128]!==xe?($=(0,z.jsx)(ke,{instanceId:l.InstanceId,onOpenChange:Ce,open:xe}),e[127]=l.InstanceId,e[128]=xe,e[129]=$):$=e[129];let ht;return e[130]!==V||e[131]!==Q||e[132]!==mt||e[133]!==$||e[134]!==B?(ht=(0,z.jsxs)(z.Fragment,{children:[Ie,B,V,Q,mt,$]}),e[130]=V,e[131]=Q,e[132]=mt,e[133]=$,e[134]=B,e[135]=ht):ht=e[135],ht}function Le(e){return(0,z.jsxs)(N.Content,{children:[(0,z.jsx)(P,{label:`Device Name`,value:e.DeviceName}),(0,z.jsx)(P,{label:`Volume ID`,value:e.Ebs?.VolumeId?(0,z.jsx)(o,{className:`text-primary hover:underline`,params:{id:e.Ebs.VolumeId},to:`/ec2/describe-volumes/$id`,children:e.Ebs.VolumeId}):void 0}),(0,z.jsx)(P,{label:`Status`,value:e.Ebs?.Status}),(0,z.jsx)(P,{label:`Attach Time`,value:s(e.Ebs?.AttachTime)}),(0,z.jsx)(P,{label:`Delete on Termination`,value:e.Ebs?.DeleteOnTermination?`Yes`:`No`})]},e.DeviceName)}function Re(e){return e.GroupName}export{Ie as component}; \ No newline at end of file diff --git a/spinifex/services/spinifexui/frontend/dist/assets/_id-DHGMf_p-.js b/spinifex/services/spinifexui/frontend/dist/assets/_id-U4BZhcdn.js similarity index 95% rename from spinifex/services/spinifexui/frontend/dist/assets/_id-DHGMf_p-.js rename to spinifex/services/spinifexui/frontend/dist/assets/_id-U4BZhcdn.js index da85077d9..4eb060dc7 100644 --- a/spinifex/services/spinifexui/frontend/dist/assets/_id-DHGMf_p-.js +++ b/spinifex/services/spinifexui/frontend/dist/assets/_id-U4BZhcdn.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_id-x-YmyORB.js","assets/compiler-runtime-D_vZfn79.js","assets/useQuery-2EKf7AyV.js","assets/useBaseQuery-Dqg0ViLa.js","assets/removable-Dwr9otKB.js","assets/query-BPr_oSEg.js","assets/useSuspenseQuery-Bc7E1P-f.js","assets/link-Dhy4xOXd.js","assets/useSelector-CRh8wCTv.js","assets/with-selector-DrM041uv.js","assets/cluster-config-xw_Q7X1e.js","assets/hex-encoding-B19xAT_7.js","assets/createLucideIcon-BQgzNCBR.js","assets/back-link-CjKy1JE5.js","assets/select-B01jpDaX.js","assets/useValueAsRef-F56m8WbP.js","assets/dist-BKgR2qk6.js","assets/button-BarTr35m.js","assets/createBaseUIEventDetails-DL-8egB9.js","assets/check-BO7W8OSs.js","assets/chevron-down-Dt4q6d24.js","assets/useValueChanged-B2TUO8IO.js","assets/useScrollLock-NX6x9Pv8.js","assets/usePositioner-DUsvphCt.js","assets/DirectionContext-C9rdm8xn.js","assets/useControlled-DwxdYHYK.js","assets/useCompositeListItem-CEsaEeXb.js","assets/rotate-cw-FTUcK_f-.js","assets/trash-DVab4pEz.js","assets/input-6kdUb_DH.js","assets/admin-context-CXmiyIcc.js","assets/sts-B5ZEON3v.js","assets/signed-fetch-B-FFW93q.js","assets/ec2-CWEplLq4.js","assets/queryOptions-Dfvzj6n2.js","assets/awsClient-b0hcP1Iz.js","assets/index.browser-C3WbWNjZ.js","assets/ec2-Ctto2xjU.js","assets/useMutation-6rdxVQpi.js","assets/mutation-BziiWz5u.js","assets/subnet-calculator-BlCTyGtY.js","assets/iam-CVg27y22.js","assets/commandBuilder-CoLHZwsC.js","assets/json-DsgWHaZY.js","assets/page-heading-vksh_67w.js","assets/admin-BUkrFIlI.js","assets/error-banner-DeOeVBKS.js","assets/field-c7GHI5st.js","assets/separator-B3CHPrlt.js","assets/textarea-n04EavUm.js","assets/alert-dialog-kCQ1W4Rz.js","assets/DialogTitle-DiInIGjk.js","assets/delete-confirmation-dialog-SdDN4LiF.js","assets/detail-row-DNBRlVeK.js","assets/state-badge-D1Z6q_OA.js","assets/ami-details-ChpQ4w1b.js","assets/gpu-instance-type-select-BD2r8UcO.js"])))=>i.map(i=>d[i]); -import{n as e,t}from"./lazyRouteComponent-CiZDS8hZ.js";import{lt as n}from"./cluster-config-xw_Q7X1e.js";import{a as r,c as i,s as a}from"./ec2-CWEplLq4.js";var o=e(`/_auth/ec2/(instances)/describe-instances/$id`)({loader:async({context:e,params:t})=>{let[n]=await Promise.all([e.queryClient.query({...a(t.id),staleTime:`static`}),e.queryClient.query({...i,staleTime:`static`})]),o=n.Reservations?.[0]?.Instances?.[0]?.ImageId;return await e.queryClient.query({...r(o),staleTime:`static`}),n},head:({loaderData:e})=>({meta:[{title:`${e?.Reservations?.[0]?.Instances?.[0]?.InstanceId??`Instance`} | EC2 | Mulga`}]}),component:t(()=>n(()=>import(`./_id-x-YmyORB.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56])),`component`)});export{o as t}; \ No newline at end of file +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/_id-BnUjyn0E.js","assets/compiler-runtime-D_vZfn79.js","assets/useQuery-2EKf7AyV.js","assets/useBaseQuery-Dqg0ViLa.js","assets/removable-Dwr9otKB.js","assets/query-BPr_oSEg.js","assets/useSuspenseQuery-Bc7E1P-f.js","assets/link-Dhy4xOXd.js","assets/useSelector-CRh8wCTv.js","assets/with-selector-DrM041uv.js","assets/cluster-config-xw_Q7X1e.js","assets/hex-encoding-B19xAT_7.js","assets/createLucideIcon-BQgzNCBR.js","assets/back-link-CjKy1JE5.js","assets/select-B01jpDaX.js","assets/useValueAsRef-F56m8WbP.js","assets/dist-BKgR2qk6.js","assets/button-BarTr35m.js","assets/createBaseUIEventDetails-DL-8egB9.js","assets/check-BO7W8OSs.js","assets/chevron-down-Dt4q6d24.js","assets/useValueChanged-B2TUO8IO.js","assets/useScrollLock-NX6x9Pv8.js","assets/usePositioner-DUsvphCt.js","assets/DirectionContext-C9rdm8xn.js","assets/useControlled-DwxdYHYK.js","assets/useCompositeListItem-CEsaEeXb.js","assets/rotate-cw-FTUcK_f-.js","assets/trash-DVab4pEz.js","assets/input-6kdUb_DH.js","assets/admin-context-CXmiyIcc.js","assets/sts-B5ZEON3v.js","assets/signed-fetch-B-FFW93q.js","assets/ec2-CWEplLq4.js","assets/queryOptions-Dfvzj6n2.js","assets/awsClient-b0hcP1Iz.js","assets/index.browser-C3WbWNjZ.js","assets/ec2-Ctto2xjU.js","assets/useMutation-6rdxVQpi.js","assets/mutation-BziiWz5u.js","assets/subnet-calculator-BlCTyGtY.js","assets/iam-CVg27y22.js","assets/commandBuilder-CoLHZwsC.js","assets/json-DsgWHaZY.js","assets/page-heading-vksh_67w.js","assets/admin-BUkrFIlI.js","assets/error-banner-DeOeVBKS.js","assets/field-c7GHI5st.js","assets/separator-B3CHPrlt.js","assets/textarea-n04EavUm.js","assets/alert-dialog-kCQ1W4Rz.js","assets/DialogTitle-DiInIGjk.js","assets/delete-confirmation-dialog-SdDN4LiF.js","assets/detail-row-DNBRlVeK.js","assets/state-badge-D1Z6q_OA.js","assets/ami-details-ChpQ4w1b.js","assets/gpu-instance-type-select-BD2r8UcO.js"])))=>i.map(i=>d[i]); +import{n as e,t}from"./lazyRouteComponent-CiZDS8hZ.js";import{lt as n}from"./cluster-config-xw_Q7X1e.js";import{a as r,c as i,s as a}from"./ec2-CWEplLq4.js";var o=e(`/_auth/ec2/(instances)/describe-instances/$id`)({loader:async({context:e,params:t})=>{let[n]=await Promise.all([e.queryClient.query({...a(t.id),staleTime:`static`}),e.queryClient.query({...i,staleTime:`static`})]),o=n.Reservations?.[0]?.Instances?.[0]?.ImageId;return await e.queryClient.query({...r(o),staleTime:`static`}),n},head:({loaderData:e})=>({meta:[{title:`${e?.Reservations?.[0]?.Instances?.[0]?.InstanceId??`Instance`} | EC2 | Mulga`}]}),component:t(()=>n(()=>import(`./_id-BnUjyn0E.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56])),`component`)});export{o as t}; \ No newline at end of file diff --git a/spinifex/services/spinifexui/frontend/dist/assets/_id-x-YmyORB.js b/spinifex/services/spinifexui/frontend/dist/assets/_id-x-YmyORB.js deleted file mode 100644 index edf48c0a6..000000000 --- a/spinifex/services/spinifexui/frontend/dist/assets/_id-x-YmyORB.js +++ /dev/null @@ -1 +0,0 @@ -import{n as e,o as t,r as n,t as r}from"./compiler-runtime-D_vZfn79.js";import{t as i}from"./useQuery-2EKf7AyV.js";import{t as a}from"./useSuspenseQuery-Bc7E1P-f.js";import{t as o}from"./link-Dhy4xOXd.js";import{in as s,on as c}from"./cluster-config-xw_Q7X1e.js";import{t as l}from"./createLucideIcon-BQgzNCBR.js";import{t as u}from"./back-link-CjKy1JE5.js";import{c as d,i as f,n as p,s as m,t as h}from"./select-B01jpDaX.js";import{t as g}from"./rotate-cw-FTUcK_f-.js";import{t as _}from"./trash-DVab4pEz.js";import{t as v}from"./button-BarTr35m.js";import{t as y}from"./input-6kdUb_DH.js";import{n as b}from"./admin-context-CXmiyIcc.js";import{a as x,c as S,i as C,s as w}from"./ec2-CWEplLq4.js";import{J as T,K as E,W as D,Z as O,d as k,i as ee,it as A,nt as j,rt as te}from"./ec2-Ctto2xjU.js";import{f as ne}from"./iam-CVg27y22.js";import{t as re}from"./_id-DHGMf_p-.js";import{t as ie}from"./page-heading-vksh_67w.js";import{o as ae}from"./admin-BUkrFIlI.js";import{t as M}from"./error-banner-DeOeVBKS.js";import{s as oe,t as se}from"./field-c7GHI5st.js";import{t as ce}from"./textarea-n04EavUm.js";import{a as le,i as ue,l as de,n as fe,o as pe,r as me,s as he,t as ge}from"./alert-dialog-kCQ1W4Rz.js";import{t as _e}from"./delete-confirmation-dialog-SdDN4LiF.js";import{n as N,t as P}from"./detail-row-DNBRlVeK.js";import{t as ve}from"./state-badge-D1Z6q_OA.js";import{t as ye}from"./ami-details-ChpQ4w1b.js";import{t as be}from"./gpu-instance-type-select-BD2r8UcO.js";var xe={name:`image-plus`,size:24,node:[[`path`,{d:`M16 5h6`,key:`1vod17`}],[`path`,{d:`M19 2v6`,key:`4bpg5p`}],[`path`,{d:`M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5`,key:`1ue2ih`}],[`path`,{d:`m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21`,key:`1xmnt7`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}]]};xe.node;var Se=l(xe),Ce={name:`pause`,size:24,node:[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]};Ce.node;var we=l(Ce),Te={name:`play`,size:24,node:[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]};Te.node;var F=l(Te),I={name:`settings-2`,size:24,node:[[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`path`,{d:`M19 7h-9`,key:`6i9tg`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]};I.node;var Ee=l(I),L={name:`terminal`,size:24,node:[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]};L.node;var De=l(L),Oe=r(),R=t(n(),1),z=e();function ke(e){let t=(0,Oe.c)(36),{instanceId:n,open:r,onOpenChange:i}=e,a=k(),[o,s]=(0,R.useState)(``),[c,l]=(0,R.useState)(``),[u,d]=(0,R.useState)(null),f;t[0]===i?f=t[1]:(f=function(e){e||(s(``),l(``),d(null)),i(e)},t[0]=i,t[1]=f);let p=f,m;t[2]!==a||t[3]!==c||t[4]!==o||t[5]!==n?(m=async function(){try{let e=await a.mutateAsync({instanceId:n,name:o,description:c||void 0});d(e.ImageId??null),s(``),l(``)}catch{}},t[2]=a,t[3]=c,t[4]=o,t[5]=n,t[6]=m):m=t[6];let h=m,g=u?`Image Created`:`Create Image (AMI)`,_;t[7]===g?_=t[8]:(_=(0,z.jsx)(de,{children:g}),t[7]=g,t[8]=_);let v=u?`Image "${u}" was created successfully.`:`Create an AMI from instance "${n}".`,b;t[9]===v?b=t[10]:(b=(0,z.jsx)(le,{children:v}),t[9]=v,t[10]=b);let x;t[11]!==_||t[12]!==b?(x=(0,z.jsxs)(he,{children:[_,b]}),t[11]=_,t[12]=b,t[13]=x):x=t[13];let S;t[14]!==u||t[15]!==c||t[16]!==o?(S=!u&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(se,{children:[(0,z.jsx)(oe,{children:(0,z.jsx)(`label`,{htmlFor:`imageName`,children:`Name`})}),(0,z.jsx)(y,{id:`imageName`,onChange:e=>{s(e.target.value)},placeholder:`my-image`,value:o})]}),(0,z.jsxs)(se,{children:[(0,z.jsx)(oe,{children:(0,z.jsx)(`label`,{htmlFor:`imageDescription`,children:`Description`})}),(0,z.jsx)(ce,{id:`imageDescription`,onChange:e=>{l(e.target.value)},placeholder:`Optional description`,rows:2,value:c})]})]}),t[14]=u,t[15]=c,t[16]=o,t[17]=S):S=t[17];let C=u?`Close`:`Cancel`,w;t[18]===C?w=t[19]:(w=(0,z.jsx)(me,{children:C}),t[18]=C,t[19]=w);let T;t[20]!==a||t[21]!==u||t[22]!==h||t[23]!==o?(T=!u&&(0,z.jsx)(fe,{disabled:a.isPending||!o.trim(),onClick:h,children:a.isPending?`Creating…`:`Create Image`}),t[20]=a,t[21]=u,t[22]=h,t[23]=o,t[24]=T):T=t[24];let E;t[25]!==w||t[26]!==T?(E=(0,z.jsxs)(pe,{children:[w,T]}),t[25]=w,t[26]=T,t[27]=E):E=t[27];let D;t[28]!==E||t[29]!==x||t[30]!==S?(D=(0,z.jsxs)(ue,{children:[x,S,E]}),t[28]=E,t[29]=x,t[30]=S,t[31]=D):D=t[31];let O;return t[32]!==p||t[33]!==r||t[34]!==D?(O=(0,z.jsx)(ge,{onOpenChange:p,open:r,children:D}),t[32]=p,t[33]=r,t[34]=D,t[35]=O):O=t[35],O}function Ae(e){let t=(0,Oe.c)(22),{gpu:n}=e;if(!n)return null;let r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,z.jsx)(N.Header,{children:`GPU`}),t[0]=r):r=t[0];let i;t[1]===n.model?i=t[2]:(i=(0,z.jsx)(P,{label:`Model`,value:n.model}),t[1]=n.model,t[2]=i);let a;t[3]===n.vram_mib?a=t[4]:(a=c(n.vram_mib),t[3]=n.vram_mib,t[4]=a);let o;t[5]===a?o=t[6]:(o=(0,z.jsx)(P,{label:`VRAM`,value:a}),t[5]=a,t[6]=o);let s=n.profile?`MIG slice`:`PCIe passthrough`,l;t[7]===s?l=t[8]:(l=(0,z.jsx)(P,{label:`Attachment`,value:s}),t[7]=s,t[8]=l);let u;t[9]===n.profile?u=t[10]:(u=n.profile&&(0,z.jsx)(P,{label:`Profile`,value:n.profile}),t[9]=n.profile,t[10]=u);let d;t[11]===n.mdev_path?d=t[12]:(d=n.mdev_path&&(0,z.jsx)(P,{label:`Mdev path`,value:n.mdev_path}),t[11]=n.mdev_path,t[12]=d);let f;t[13]===n.pci_address?f=t[14]:(f=n.pci_address&&(0,z.jsx)(P,{label:`PCI address`,value:n.pci_address}),t[13]=n.pci_address,t[14]=f);let p;return t[15]!==i||t[16]!==o||t[17]!==l||t[18]!==u||t[19]!==d||t[20]!==f?(p=(0,z.jsxs)(N,{children:[r,(0,z.jsxs)(N.Content,{children:[i,o,l,u,d,f]})]}),t[15]=i,t[16]=o,t[17]=l,t[18]=u,t[19]=d,t[20]=f,t[21]=p):p=t[21],p}function je(e){let t=(0,Oe.c)(31),{instanceId:n}=e,r;t[0]===n?r=t[1]:(r=C(n),t[0]=n,t[1]=r);let{data:a}=i(r),{data:s}=i(ne),c=ee(),l=D(),[u,f]=(0,R.useState)(``),g;t[2]===a?.IamInstanceProfileAssociations?g=t[3]:(g=a?.IamInstanceProfileAssociations?.find(Ne),t[2]=a?.IamInstanceProfileAssociations,t[3]=g);let _=g,y;t[4]===s?.InstanceProfiles?y=t[5]:(y=s?.InstanceProfiles??[],t[4]=s?.InstanceProfiles,t[5]=y);let b=y,x;t[6]!==c||t[7]!==n||t[8]!==u?(x=async()=>{u&&(await c.mutateAsync({instanceId:n,instanceProfileName:u}),f(``))},t[6]=c,t[7]=n,t[8]=u,t[9]=x):x=t[9];let S=x,w;t[10]!==_||t[11]!==l||t[12]!==n?(w=async()=>{_?.AssociationId&&await l.mutateAsync({associationId:_.AssociationId,instanceId:n})},t[10]=_,t[11]=l,t[12]=n,t[13]=w):w=t[13];let T=w,E;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,z.jsx)(N.Header,{children:`IAM Role`}),t[14]=E):E=t[14];let O;t[15]===c.error?O=t[16]:(O=c.error&&(0,z.jsx)(`div`,{className:`col-span-2`,children:(0,z.jsx)(M,{error:c.error,msg:`Failed to associate instance profile`})}),t[15]=c.error,t[16]=O);let k;t[17]===l.error?k=t[18]:(k=l.error&&(0,z.jsx)(`div`,{className:`col-span-2`,children:(0,z.jsx)(M,{error:l.error,msg:`Failed to disassociate instance profile`})}),t[17]=l.error,t[18]=k);let A;t[19]!==c.isPending||t[20]!==_||t[21]!==l.isPending||t[22]!==S||t[23]!==T||t[24]!==b||t[25]!==u?(A=_?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(P,{label:`Instance Profile ARN`,value:_.IamInstanceProfile?.Arn}),(0,z.jsx)(P,{label:`State`,value:(0,z.jsx)(ve,{state:_.State})}),(0,z.jsx)(`div`,{className:`col-span-2 flex justify-end`,children:(0,z.jsx)(v,{disabled:l.isPending,onClick:T,size:`sm`,variant:`destructive`,children:l.isPending?`Detaching…`:`Detach`})})]}):(0,z.jsxs)(`div`,{className:`col-span-2 space-y-3`,children:[(0,z.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No instance profile is associated. Associate one to flow role credentials to this instance via IMDS.`}),b.length>0?(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,z.jsxs)(h,{onValueChange:e=>{f(e??``)},value:u,children:[(0,z.jsx)(m,{className:`w-full`,children:(0,z.jsx)(d,{placeholder:`Select an instance profile`})}),(0,z.jsx)(p,{children:b.map(Me)})]}),(0,z.jsx)(v,{disabled:!u||c.isPending,onClick:S,size:`sm`,children:c.isPending?`Associating…`:`Associate`})]}):(0,z.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`No instance profiles exist.`,` `,(0,z.jsx)(o,{className:`text-primary hover:underline`,to:`/iam/create-instance-profile`,children:`Create one`}),` `,`first.`]})]}),t[19]=c.isPending,t[20]=_,t[21]=l.isPending,t[22]=S,t[23]=T,t[24]=b,t[25]=u,t[26]=A):A=t[26];let j;return t[27]!==O||t[28]!==k||t[29]!==A?(j=(0,z.jsxs)(N,{children:[E,(0,z.jsxs)(N.Content,{children:[O,k,A]})]}),t[27]=O,t[28]=k,t[29]=A,t[30]=j):j=t[30],j}function Me(e){return(0,z.jsx)(f,{value:e.InstanceProfileName??``,children:e.InstanceProfileName},e.InstanceProfileName)}function Ne(e){return e.State===`associating`||e.State===`associated`}var Pe=new Set([`pending`,`stopping`,`shutting-down`,`terminated`]);function Fe(e){let t=(0,Oe.c)(43),{instanceId:n,state:r}=e,i=j(),a=te(),o=O(),s=A(),[c,l]=(0,R.useState)(!1),u=Pe.has(r??``),d;t[0]!==n||t[1]!==s?(d=()=>{s.mutate(n,{onSettled:()=>{l(!1)}})},t[0]=n,t[1]=s,t[2]=d):d=t[2];let f=d;if(u&&r!==`terminated`){let e;return t[3]===r?e=t[4]:(e=(0,z.jsx)(`div`,{className:`rounded-lg border bg-muted/50 p-4`,children:(0,z.jsxs)(`p`,{className:`text-center text-sm text-muted-foreground`,children:[`Instance is `,r,`. Actions will be available once the operation completes.`]})}),t[3]=r,t[4]=e),e}if(r===`terminated`){let e;return t[5]===Symbol.for(`react.memo_cache_sentinel`)?(e=(0,z.jsx)(`div`,{className:`rounded-lg border bg-muted/50 p-4`,children:(0,z.jsx)(`p`,{className:`text-center text-sm text-muted-foreground`,children:`This instance has been terminated and cannot be managed.`})}),t[5]=e):e=t[5],e}let p;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(p=(0,z.jsx)(`h2`,{className:`mb-4 font-semibold`,children:`Instance Actions`}),t[6]=p):p=t[6];let m;t[7]===i.error?m=t[8]:(m=i.error&&(0,z.jsx)(M,{error:i.error,msg:`Failed to start instance`}),t[7]=i.error,t[8]=m);let h;t[9]===a.error?h=t[10]:(h=a.error&&(0,z.jsx)(M,{error:a.error,msg:`Failed to stop instance`}),t[9]=a.error,t[10]=h);let y;t[11]===o.error?y=t[12]:(y=o.error&&(0,z.jsx)(M,{error:o.error,msg:`Failed to reboot instance`}),t[11]=o.error,t[12]=y);let b;t[13]===s.error?b=t[14]:(b=s.error&&(0,z.jsx)(M,{error:s.error,msg:`Failed to terminate instance`}),t[13]=s.error,t[14]=b);let x;t[15]!==n||t[16]!==i||t[17]!==r?(x=r===`stopped`&&(0,z.jsxs)(v,{disabled:i.isPending,onClick:()=>{i.mutate(n)},size:`sm`,variant:`default`,children:[(0,z.jsx)(F,{className:`size-4`}),i.isPending?`Starting`:`Start`]}),t[15]=n,t[16]=i,t[17]=r,t[18]=x):x=t[18];let S;t[19]!==n||t[20]!==o||t[21]!==r||t[22]!==a?(S=r===`running`&&(0,z.jsxs)(z.Fragment,{children:[(0,z.jsxs)(v,{disabled:a.isPending,onClick:()=>{a.mutate(n)},size:`sm`,variant:`outline`,children:[(0,z.jsx)(we,{className:`size-4`}),a.isPending?`Stopping`:`Stop`]}),(0,z.jsxs)(v,{disabled:o.isPending,onClick:()=>{o.mutate(n)},size:`sm`,variant:`outline`,children:[(0,z.jsx)(g,{className:`size-4`}),o.isPending?`Rebooting`:`Reboot`]})]}),t[19]=n,t[20]=o,t[21]=r,t[22]=a,t[23]=S):S=t[23];let C;t[24]!==r||t[25]!==s.isPending?(C=(r===`stopped`||r===`running`)&&(0,z.jsxs)(v,{disabled:s.isPending,onClick:()=>{l(!0)},size:`sm`,variant:`destructive`,children:[(0,z.jsx)(_,{className:`size-4`}),s.isPending?`Terminating`:`Terminate`]}),t[24]=r,t[25]=s.isPending,t[26]=C):C=t[26];let w;t[27]!==x||t[28]!==S||t[29]!==C?(w=(0,z.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[x,S,C]}),t[27]=x,t[28]=S,t[29]=C,t[30]=w):w=t[30];let T=`Are you sure you want to terminate the instance "${n}"? This action cannot be undone.`,E;t[31]!==f||t[32]!==c||t[33]!==T||t[34]!==s.isPending?(E=(0,z.jsx)(_e,{confirmLabel:`Terminate`,description:T,isPending:s.isPending,onConfirm:f,onOpenChange:l,open:c,pendingLabel:`Terminating…`,title:`Terminate Instance`}),t[31]=f,t[32]=c,t[33]=T,t[34]=s.isPending,t[35]=E):E=t[35];let D;return t[36]!==w||t[37]!==E||t[38]!==m||t[39]!==h||t[40]!==y||t[41]!==b?(D=(0,z.jsxs)(`div`,{className:`rounded-lg border bg-card p-4`,children:[p,m,h,y,b,w,E]}),t[36]=w,t[37]=E,t[38]=m,t[39]=h,t[40]=y,t[41]=b,t[42]=D):D=t[42],D}function Ie(){let e=(0,Oe.c)(136),{id:t}=re.useParams(),{isAdmin:n}=b(),r;e[0]===t?r=e[1]:(r=w(t),e[0]=t,e[1]=r);let{data:c}=a(r),l=c.Reservations?.[0]?.Instances?.[0],d=l?.ImageId,f;e[2]===d?f=e[3]:(f=x(d),e[2]=d,e[3]=f);let{data:p}=a(f),m=p?.Images?.[0],{data:h}=a(S),g;e[4]===n?g=e[5]:(g={...ae,enabled:n,refetchInterval:5e3},e[4]=n,e[5]=g);let{data:_}=i(g),y;e[6]!==t||e[7]!==_?.vms?(y=_?.vms?.find(e=>e.instance_id===t),e[6]=t,e[7]=_?.vms,e[8]=y):y=e[8];let C=y,D=T(),O=E(),[k,ee]=(0,R.useState)(!1),[A,j]=(0,R.useState)(``),[te,ne]=(0,R.useState)(!1),[ce,_e]=(0,R.useState)(null),[xe,Ce]=(0,R.useState)(!1);if(!l?.InstanceId){let t;return e[9]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(u,{to:`/ec2/describe-instances`,children:`Back to instances`}),(0,z.jsx)(`p`,{className:`text-muted-foreground`,children:`Instance not found.`})]}),e[9]=t):t=e[9],t}let we;e[10]===l.LaunchTime?we=e[11]:(we=s(l.LaunchTime),e[10]=l.LaunchTime,e[11]=we);let Te=we,F=l.State?.Name===`running`,I=l.State?.Name===`stopped`,L;e[12]!==t||e[13]!==D||e[14]!==A?(L=async function(){try{await D.mutateAsync({instanceId:t,instanceType:A}),ee(!1),j(``)}catch{}},e[12]=t,e[13]=D,e[14]=A,e[15]=L):L=e[15];let Me=L,Ne;e[16]!==O||e[17]!==t?(Ne=async function(){try{let e=await O.mutateAsync(t),n=e.Output?atob(e.Output):`(no output)`;_e(n),ne(!0)}catch{}},e[16]=O,e[17]=t,e[18]=Ne):Ne=e[18];let Pe=Ne,Ie;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(Ie=(0,z.jsx)(u,{to:`/ec2/describe-instances`,children:`Back to instances`}),e[19]=Ie):Ie=e[19];let B;e[20]===D.error?B=e[21]:(B=D.error&&(0,z.jsx)(M,{error:D.error,msg:`Failed to modify instance`}),e[20]=D.error,e[21]=B);let V;e[22]===O.error?V=e[23]:(V=O.error&&(0,z.jsx)(M,{error:O.error,msg:`Failed to get console output`}),e[22]=O.error,e[23]=V);let H;e[24]!==O.isPending||e[25]!==Pe||e[26]!==F?(H=F&&(0,z.jsxs)(v,{disabled:O.isPending,onClick:Pe,size:`sm`,variant:`outline`,children:[(0,z.jsx)(De,{className:`size-4`}),O.isPending?`Fetching…`:`View Console`]}),e[24]=O.isPending,e[25]=Pe,e[26]=F,e[27]=H):H=e[27];let U;e[28]!==F||e[29]!==I?(U=(F||I)&&(0,z.jsxs)(v,{onClick:()=>{Ce(!0)},size:`sm`,variant:`outline`,children:[(0,z.jsx)(Se,{className:`size-4`}),`Create Image`]}),e[28]=F,e[29]=I,e[30]=U):U=e[30];let W;e[31]!==l.InstanceType||e[32]!==I?(W=I&&(0,z.jsxs)(v,{onClick:()=>{j(l.InstanceType??``),ee(!0)},size:`sm`,variant:`outline`,children:[(0,z.jsx)(Ee,{className:`size-4`}),`Modify Instance`]}),e[31]=l.InstanceType,e[32]=I,e[33]=W):W=e[33];let ze=l.State?.Name,G;e[34]===ze?G=e[35]:(G=(0,z.jsx)(ve,{state:ze}),e[34]=ze,e[35]=G);let K;e[36]!==H||e[37]!==U||e[38]!==W||e[39]!==G?(K=(0,z.jsxs)(`div`,{className:`flex items-center gap-2`,children:[H,U,W,G]}),e[36]=H,e[37]=U,e[38]=W,e[39]=G,e[40]=K):K=e[40];let q;e[41]!==l.InstanceId||e[42]!==K?(q=(0,z.jsx)(ie,{actions:K,subtitle:`Instance Details`,title:l.InstanceId}),e[41]=l.InstanceId,e[42]=K,e[43]=q):q=e[43];let Be=l.State?.Name,J;e[44]!==l.InstanceId||e[45]!==Be?(J=(0,z.jsx)(Fe,{instanceId:l.InstanceId,state:Be}),e[44]=l.InstanceId,e[45]=Be,e[46]=J):J=e[46];let Y;e[47]!==ce||e[48]!==te?(Y=te&&ce!==null&&(0,z.jsxs)(N,{children:[(0,z.jsx)(N.Header,{children:(0,z.jsxs)(`div`,{className:`flex items-center justify-between`,children:[`Console Output`,(0,z.jsx)(v,{onClick:()=>{ne(!1),_e(null)},size:`sm`,variant:`ghost`,children:`Hide`})]})}),(0,z.jsx)(`div`,{className:`p-4`,children:(0,z.jsx)(`pre`,{className:`max-h-96 overflow-y-auto rounded bg-muted p-3 font-mono text-xs whitespace-pre-wrap`,children:ce})})]}),e[47]=ce,e[48]=te,e[49]=Y):Y=e[49];let Ve;e[50]===Symbol.for(`react.memo_cache_sentinel`)?(Ve=(0,z.jsx)(N.Header,{children:`Instance Information`}),e[50]=Ve):Ve=e[50];let X;e[51]===l.InstanceId?X=e[52]:(X=(0,z.jsx)(P,{label:`Instance ID`,value:l.InstanceId}),e[51]=l.InstanceId,e[52]=X);let Z;e[53]===l.InstanceType?Z=e[54]:(Z=(0,z.jsx)(P,{label:`Instance Type`,value:l.InstanceType}),e[53]=l.InstanceType,e[54]=Z);let He=l.State?.Name,Ue;e[55]===He?Ue=e[56]:(Ue=(0,z.jsx)(P,{label:`Instance State`,value:He}),e[55]=He,e[56]=Ue);let We;e[57]===l.State?.Code?We=e[58]:(We=l.State?.Code?.toString(),e[57]=l.State?.Code,e[58]=We);let Ge;e[59]===We?Ge=e[60]:(Ge=(0,z.jsx)(P,{label:`State Code`,value:We}),e[59]=We,e[60]=Ge);let Ke;e[61]===Te?Ke=e[62]:(Ke=(0,z.jsx)(P,{label:`Launch Time`,value:Te}),e[61]=Te,e[62]=Ke);let qe=l.Placement?.AvailabilityZone,Je;e[63]===qe?Je=e[64]:(Je=(0,z.jsx)(P,{label:`Availability Zone`,value:qe}),e[63]=qe,e[64]=Je);let Ye;e[65]===l.Placement?Ye=e[66]:(Ye=l.Placement?.GroupName?(0,z.jsx)(o,{className:`text-primary hover:underline`,to:`/ec2/describe-placement-groups`,children:l.Placement.GroupName}):void 0,e[65]=l.Placement,e[66]=Ye);let Xe;e[67]===Ye?Xe=e[68]:(Xe=(0,z.jsx)(P,{label:`Placement Group`,value:Ye}),e[67]=Ye,e[68]=Xe);let Ze;e[69]!==X||e[70]!==Z||e[71]!==Ue||e[72]!==Ge||e[73]!==Ke||e[74]!==Je||e[75]!==Xe?(Ze=(0,z.jsxs)(N,{children:[Ve,(0,z.jsxs)(N.Content,{children:[X,Z,Ue,Ge,Ke,Je,Xe]})]}),e[69]=X,e[70]=Z,e[71]=Ue,e[72]=Ge,e[73]=Ke,e[74]=Je,e[75]=Xe,e[76]=Ze):Ze=e[76];let Qe;e[77]!==l.KeyName||e[78]!==l.PrivateDnsName||e[79]!==l.PrivateIpAddress||e[80]!==l.PublicDnsName||e[81]!==l.PublicIpAddress||e[82]!==l.SecurityGroups||e[83]!==l.SubnetId||e[84]!==l.VpcId?(Qe=(l.PrivateIpAddress||l.PublicIpAddress||l.VpcId||l.SubnetId||l.SecurityGroups&&l.SecurityGroups.length>0)&&(0,z.jsxs)(N,{children:[(0,z.jsx)(N.Header,{children:`Network & Security`}),(0,z.jsxs)(N.Content,{children:[(0,z.jsx)(P,{label:`Private IP Address`,value:l.PrivateIpAddress}),(0,z.jsx)(P,{label:`Public IP Address`,value:l.PublicIpAddress}),(0,z.jsx)(P,{label:`Private DNS`,value:l.PrivateDnsName}),(0,z.jsx)(P,{label:`Public DNS`,value:l.PublicDnsName}),(0,z.jsx)(P,{label:`VPC ID`,value:l.VpcId?(0,z.jsx)(o,{className:`text-primary hover:underline`,params:{id:l.VpcId},to:`/ec2/describe-vpcs/$id`,children:l.VpcId}):void 0}),(0,z.jsx)(P,{label:`Subnet ID`,value:l.SubnetId?(0,z.jsx)(o,{className:`text-primary hover:underline`,params:{id:l.SubnetId},to:`/ec2/describe-subnets/$id`,children:l.SubnetId}):void 0}),(0,z.jsx)(P,{label:`Key Name`,value:l.KeyName}),(0,z.jsx)(P,{label:`Security Groups`,value:l.SecurityGroups?.map(Re).join(`, `)})]})]}),e[77]=l.KeyName,e[78]=l.PrivateDnsName,e[79]=l.PrivateIpAddress,e[80]=l.PublicDnsName,e[81]=l.PublicIpAddress,e[82]=l.SecurityGroups,e[83]=l.SubnetId,e[84]=l.VpcId,e[85]=Qe):Qe=e[85];let $e;e[86]===l.InstanceId?$e=e[87]:($e=(0,z.jsx)(je,{instanceId:l.InstanceId}),e[86]=l.InstanceId,e[87]=$e);let et;e[88]!==n||e[89]!==C?.gpu?(et=n&&(0,z.jsx)(Ae,{gpu:C?.gpu}),e[88]=n,e[89]=C?.gpu,e[90]=et):et=e[90];let tt;e[91]===l.BlockDeviceMappings?tt=e[92]:(tt=l.BlockDeviceMappings&&l.BlockDeviceMappings.length>0&&(0,z.jsxs)(N,{children:[(0,z.jsx)(N.Header,{children:`Block Device Mappings`}),l.BlockDeviceMappings.map(Le)]}),e[91]=l.BlockDeviceMappings,e[92]=tt);let nt;e[93]===m?nt=e[94]:(nt=m&&(0,z.jsx)(ye,{image:m}),e[93]=m,e[94]=nt);let Q;e[95]!==q||e[96]!==J||e[97]!==Y||e[98]!==Ze||e[99]!==Qe||e[100]!==$e||e[101]!==et||e[102]!==tt||e[103]!==nt?(Q=(0,z.jsxs)(`div`,{className:`space-y-6`,children:[q,J,Y,Ze,Qe,$e,et,tt,nt]}),e[95]=q,e[96]=J,e[97]=Y,e[98]=Ze,e[99]=Qe,e[100]=$e,e[101]=et,e[102]=tt,e[103]=nt,e[104]=Q):Q=e[104];let rt;e[105]===Symbol.for(`react.memo_cache_sentinel`)?(rt=e=>{e||(ee(!1),j(``))},e[105]=rt):rt=e[105];let it;e[106]===Symbol.for(`react.memo_cache_sentinel`)?(it=(0,z.jsx)(de,{children:`Modify Instance`}),e[106]=it):it=e[106];let at;e[107]===l.InstanceId?at=e[108]:(at=(0,z.jsxs)(he,{children:[it,(0,z.jsxs)(le,{children:[`Select a new instance type for "`,l.InstanceId,`". The instance must be stopped to modify its attributes.`]})]}),e[107]=l.InstanceId,e[108]=at);let ot;e[109]===Symbol.for(`react.memo_cache_sentinel`)?(ot=(0,z.jsx)(oe,{children:(0,z.jsx)(`label`,{htmlFor:`instanceType`,children:`Instance Type`})}),e[109]=ot):ot=e[109];let st;e[110]===h.InstanceTypes?st=e[111]:(st=h.InstanceTypes??[],e[110]=h.InstanceTypes,e[111]=st);let ct;e[112]!==A||e[113]!==st?(ct=(0,z.jsxs)(se,{children:[ot,(0,z.jsx)(be,{className:`w-full`,id:`instanceType`,instanceTypes:st,onValueChange:j,value:A})]}),e[112]=A,e[113]=st,e[114]=ct):ct=e[114];let lt;e[115]===Symbol.for(`react.memo_cache_sentinel`)?(lt=(0,z.jsx)(me,{children:`Cancel`}),e[115]=lt):lt=e[115];let ut=D.isPending||!A||A===l.InstanceType,dt=D.isPending?`Saving…`:`Save Changes`,ft;e[116]!==Me||e[117]!==ut||e[118]!==dt?(ft=(0,z.jsxs)(pe,{children:[lt,(0,z.jsx)(fe,{disabled:ut,onClick:Me,children:dt})]}),e[116]=Me,e[117]=ut,e[118]=dt,e[119]=ft):ft=e[119];let pt;e[120]!==at||e[121]!==ct||e[122]!==ft?(pt=(0,z.jsxs)(ue,{children:[at,ct,ft]}),e[120]=at,e[121]=ct,e[122]=ft,e[123]=pt):pt=e[123];let mt;e[124]!==k||e[125]!==pt?(mt=(0,z.jsx)(ge,{onOpenChange:rt,open:k,children:pt}),e[124]=k,e[125]=pt,e[126]=mt):mt=e[126];let $;e[127]!==l.InstanceId||e[128]!==xe?($=(0,z.jsx)(ke,{instanceId:l.InstanceId,onOpenChange:Ce,open:xe}),e[127]=l.InstanceId,e[128]=xe,e[129]=$):$=e[129];let ht;return e[130]!==V||e[131]!==Q||e[132]!==mt||e[133]!==$||e[134]!==B?(ht=(0,z.jsxs)(z.Fragment,{children:[Ie,B,V,Q,mt,$]}),e[130]=V,e[131]=Q,e[132]=mt,e[133]=$,e[134]=B,e[135]=ht):ht=e[135],ht}function Le(e){return(0,z.jsxs)(N.Content,{children:[(0,z.jsx)(P,{label:`Device Name`,value:e.DeviceName}),(0,z.jsx)(P,{label:`Volume ID`,value:e.Ebs?.VolumeId?(0,z.jsx)(o,{className:`text-primary hover:underline`,params:{id:e.Ebs.VolumeId},to:`/ec2/describe-volumes/$id`,children:e.Ebs.VolumeId}):void 0}),(0,z.jsx)(P,{label:`Status`,value:e.Ebs?.Status}),(0,z.jsx)(P,{label:`Attach Time`,value:s(e.Ebs?.AttachTime)}),(0,z.jsx)(P,{label:`Delete on Termination`,value:e.Ebs?.DeleteOnTermination?`Yes`:`No`})]},e.DeviceName)}function Re(e){return e.GroupName}export{Ie as component}; \ No newline at end of file diff --git a/spinifex/services/spinifexui/frontend/dist/assets/index-CJ3qP1oV.js b/spinifex/services/spinifexui/frontend/dist/assets/index-BrcYJ9RS.js similarity index 99% rename from spinifex/services/spinifexui/frontend/dist/assets/index-CJ3qP1oV.js rename to spinifex/services/spinifexui/frontend/dist/assets/index-BrcYJ9RS.js index a47d456ab..e96c62ee3 100644 --- a/spinifex/services/spinifexui/frontend/dist/assets/index-CJ3qP1oV.js +++ b/spinifex/services/spinifexui/frontend/dist/assets/index-BrcYJ9RS.js @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/route-DPFKZkGs.js","assets/compiler-runtime-D_vZfn79.js","assets/Match-Q4m9gh_H.js","assets/matchContext-DjfNTEDZ.js","assets/useSelector-CRh8wCTv.js","assets/with-selector-DrM041uv.js","assets/_auth-DsyoN1M9.js","assets/useQuery-2EKf7AyV.js","assets/useBaseQuery-Dqg0ViLa.js","assets/removable-Dwr9otKB.js","assets/query-BPr_oSEg.js","assets/link-Dhy4xOXd.js","assets/cluster-config-xw_Q7X1e.js","assets/hex-encoding-B19xAT_7.js","assets/createLucideIcon-BQgzNCBR.js","assets/chevron-down-Dt4q6d24.js","assets/chevron-right-c57whaks.js","assets/waypoints-CMfoqtKm.js","assets/admin-context-CXmiyIcc.js","assets/sts-B5ZEON3v.js","assets/signed-fetch-B-FFW93q.js","assets/ec2-CWEplLq4.js","assets/queryOptions-Dfvzj6n2.js","assets/awsClient-b0hcP1Iz.js","assets/index.browser-C3WbWNjZ.js","assets/s3-DFfxBBj-.js","assets/page-heading-vksh_67w.js","assets/badge-B_ExXcw2.js","assets/dist-BKgR2qk6.js","assets/useRender-2pqPQOAE.js","assets/card-BXl0Qff8.js","assets/admin-BUkrFIlI.js","assets/alert-dialog-kCQ1W4Rz.js","assets/button-BarTr35m.js","assets/DialogTitle-DiInIGjk.js","assets/useValueAsRef-F56m8WbP.js","assets/createBaseUIEventDetails-DL-8egB9.js","assets/useScrollLock-NX6x9Pv8.js","assets/state-badge-D1Z6q_OA.js","assets/route-n5jLl8qw.js","assets/nodes-CWh9D30I.js","assets/redirect-B4OxYbs2.js","assets/service-metrics-C6gBIZci.js","assets/allocate-address-CDvylWBR.js","assets/useNavigate-BH3pQKLF.js","assets/back-link-CjKy1JE5.js","assets/cli-command-panel-CLiFy1rG.js","assets/check-BO7W8OSs.js","assets/copy-CamWo-pg.js","assets/use-copy-to-clipboard-DjiD3qo6.js","assets/input-6kdUb_DH.js","assets/useValueChanged-B2TUO8IO.js","assets/useControlled-DwxdYHYK.js","assets/ec2-Ctto2xjU.js","assets/useMutation-6rdxVQpi.js","assets/mutation-BziiWz5u.js","assets/subnet-calculator-BlCTyGtY.js","assets/zod-DF_n2ejy.js","assets/error-banner-DeOeVBKS.js","assets/form-actions-BUM37An0.js","assets/field-c7GHI5st.js","assets/separator-B3CHPrlt.js","assets/ec2-DhWukC79.js","assets/create-internet-gateway-CGStzV_5.js","assets/create-key-pair-CKL_t5ui.js","assets/select-B01jpDaX.js","assets/usePositioner-DUsvphCt.js","assets/DirectionContext-C9rdm8xn.js","assets/useCompositeListItem-CEsaEeXb.js","assets/download-B-6MA128.js","assets/triangle-alert-DcjzeKLg.js","assets/import-key-pair-kETKjfrj.js","assets/textarea-n04EavUm.js","assets/create-launch-template-vwPKoZ8a.js","assets/launch-template-data-fields-BXmKXe0L.js","assets/useSuspenseQuery-Bc7E1P-f.js","assets/collapsible-k5LqEmTn.js","assets/create-load-balancer-BBKiIxj3.js","assets/acm-BYWQapOv.js","assets/certificate-import-dialog-UyecRuny.js","assets/elbv2-K4aD09h6.js","assets/commandBuilder-DzFUl2wS.js","assets/elbv2-DSjTzB2q.js","assets/tags-field-array-Dk9nPDzt.js","assets/plus-BodhJT2v.js","assets/trash-DVab4pEz.js","assets/target-group-form-DvZOw-26.js","assets/elbv2-CtsfBUSG.js","assets/create-nat-gateway-C0zhuUio.js","assets/create-placement-group-D_3YKZZQ.js","assets/create-route-table-q3_xIq0T.js","assets/create-security-group-BD7bwg9p.js","assets/create-subnet-BXdYKpy-.js","assets/create-target-group-CSrYTK6r.js","assets/create-volume-BamGr8Qm.js","assets/create-vpc-CyDH_vpB.js","assets/task-definitions-qkfdMMhk.js","assets/ecs-gqt7DXoF.js","assets/ecs-8RzYyUs4.js","assets/delete-confirmation-dialog-SdDN4LiF.js","assets/ecs-section-nav-CU0acTSl.js","assets/create-cluster-eQiUzhUk.js","assets/eks-C1P60riG.js","assets/commandBuilder-DOzu_YCE.js","assets/json-DsgWHaZY.js","assets/iam-CKOkzDco.js","assets/commandBuilder-CoLHZwsC.js","assets/iam-CVg27y22.js","assets/system-managed-Dk7ySh_E.js","assets/system-image-required-PXuPdEKF.js","assets/rotate-cw-FTUcK_f-.js","assets/policy-document-viewer-DAhLJAGU.js","assets/create-group-6mVlm4h5.js","assets/iam-Cgrr-Iit.js","assets/create-instance-profile-CgetPfkP.js","assets/create-policy-BJFldcK3.js","assets/json-editor-Bwbz8mfn.js","assets/create-role-DvSx0q-L.js","assets/create-user-Bv8sj586.js","assets/create-db-instance-CY_ivPtb.js","assets/rds-CE3126Ga.js","assets/rds-BkKLEWPo.js","assets/rds-CyiqRExv.js","assets/picker-notice-tK9XfUSR.js","assets/security-group-checkboxes-BkxIRro9.js","assets/create-db-parameter-group-CkK-hDRM.js","assets/create-db-subnet-group-BV65rf5O.js","assets/create-bucket-B5kEkFpz.js","assets/s3-DaPUyf7s.js","assets/ls-XgxEPnDq.js","assets/list-card-DFj_XTL4.js","assets/route-DtXjPAiX.js","assets/list-model-catalog-CPZ8xUbd.js","assets/list-guardrails-DYYlNj8n.js","assets/bedrock-Ct-f5HCJ.js","assets/commandBuilder-CyJu3wq4.js","assets/create-CoZioQAG.js","assets/bedrock-7XDhMm-7.js","assets/guardrail-form-page-C6v-izo3.js","assets/list-knowledge-bases-CH_zlnnr.js","assets/bedrockAgent-D9Za8qAi.js","assets/commandBuilder-BH-JcvCM.js","assets/create-uNWIyxX8.js","assets/bedrockAgent-BL6fVxPp.js","assets/list-model-access-Ds5MpzNH.js","assets/playground-zdI5o66q.js","assets/commandBuilder-BLgOdGhm.js","assets/describe-addresses-DKlK9Anw.js","assets/describe-images-Zp7giKqa.js","assets/describe-instances-BK0FW0LB.js","assets/describe-internet-gateways-CiiBScpk.js","assets/describe-key-pairs-BRKxsJWn.js","assets/describe-launch-templates-BuaCkV_y.js","assets/describe-load-balancers-ayJnDdyt.js","assets/describe-nat-gateways-B8p3GKN1.js","assets/describe-placement-groups-XiQbPRZ5.js","assets/describe-route-tables-Cz9uMOpx.js","assets/describe-security-groups-uryLUVIn.js","assets/describe-snapshots-63g9NU9g.js","assets/describe-subnets-lWLraP1d.js","assets/describe-target-groups-5RCbjKmg.js","assets/describe-volumes-Dj4fTW0o.js","assets/describe-vpcs-cdkXn9V9.js","assets/list-repositories-B-9oI4MN.js","assets/ecr-BFtKzkrF.js","assets/ecr-F-ANqxrm.js","assets/list-clusters-UynY0efZ.js","assets/list-clusters-CIHqWLhW.js","assets/eks-CC8GhK3R.js","assets/list-groups-B-aCbhJM.js","assets/list-instance-profiles-BSt7PimM.js","assets/list-policies-DeMAXGlh.js","assets/list-roles-DKJKr-De.js","assets/list-users-B87cjyLt.js","assets/describe-db-instances-ririu0gg.js","assets/delete-db-instance-dialog-BdhZGMA5.js","assets/describe-db-parameter-groups-Vj5U5CsP.js","assets/delete-db-parameter-group-dialog-DHJeV95z.js","assets/rds-delete-dialog-BtEPTeBR.js","assets/describe-db-snapshots-DXVrzU4j.js","assets/create-db-snapshot-dialog-CiBeyQ69.js","assets/delete-db-snapshot-dialog-D3b3mehr.js","assets/describe-db-subnet-groups-B9VO6RnW.js","assets/delete-db-subnet-group-dialog-BgemfFMN.js"])))=>i.map(i=>d[i]); -import{i as e,n as t,o as n,r,t as i}from"./compiler-runtime-D_vZfn79.js";import{A as a,C as o,E as s,a as c,b as l,c as u,g as d,h as f,k as p,m,o as h,s as g,v as _,x as v,y}from"./removable-Dwr9otKB.js";import{t as b}from"./query-BPr_oSEg.js";import{t as x}from"./mutation-BziiWz5u.js";import{a as S,i as C,n as w,o as T,r as E,t as D}from"./lazyRouteComponent-CiZDS8hZ.js";import{C as O,S as k,T as ee,_ as te,a as ne,b as re,c as ie,d as ae,f as oe,g as se,h as ce,i as le,l as ue,m as de,n as fe,o as pe,p as me,r as he,t as A,u as ge,v as _e,w as j,y as M}from"./link-Dhy4xOXd.js";import{a as ve,i as ye,n as be,o as xe,r as Se,s as N,t as Ce}from"./Match-Q4m9gh_H.js";import{n as we,r as Te}from"./matchContext-DjfNTEDZ.js";import{n as Ee,t as De}from"./redirect-B4OxYbs2.js";import{a as Oe,n as ke,r as Ae,t as je}from"./useSelector-CRh8wCTv.js";import{n as Me}from"./with-selector-DrM041uv.js";import{t as Ne}from"./useNavigate-BH3pQKLF.js";import{f as Pe,i as Fe,n as Ie,t as Le}from"./useValueAsRef-F56m8WbP.js";import{a as Re,f as ze,l as Be,n as Ve,o as He,t as Ue,u as We}from"./dist-BKgR2qk6.js";import{t as Ge}from"./useRender-2pqPQOAE.js";import{a as Ke,lt as P,n as qe,o as Je,r as Ye,tn as Xe}from"./cluster-config-xw_Q7X1e.js";import{t as F}from"./createLucideIcon-BQgzNCBR.js";import{t as Ze}from"./camera-bmANKZ8M.js";import{a as Qe,c as $e,i as et,n as tt,o as nt,r as rt,s as it,t as at}from"./waypoints-CMfoqtKm.js";import{n as ot,t as st}from"./_id-njlqJfO-.js";import{n as ct,t as lt}from"./_clusterName-CoDfUrWf.js";import{n as ut,t as dt}from"./_id--x_QHBJa.js";import{_ as ft,b as pt,n as mt,o as ht,s as gt,t as _t,y as vt}from"./button-BarTr35m.js";import{C as yt,E as bt,S as xt,b as St,f as Ct,g as wt,h as I,i as Tt,m as Et,s as Dt,t as Ot,v as kt,w as At,x as jt,y as Mt}from"./createBaseUIEventDetails-DL-8egB9.js";import{$ as Nt,D as Pt,E as Ft,H as It,L as Lt,M as Rt,O as zt,P as Bt,S as Vt,St as Ht,Y as Ut,at as Wt,b as Gt,ct as Kt,g as L,h as qt,it as Jt,j as Yt,k as Xt,m as Zt,nt as Qt,ot as $t,p as en,st as tn,tt as nn,ut as rn,w as an,wt as on,x as sn,y as cn,z as ln}from"./useScrollLock-NX6x9Pv8.js";import{n as un,r as dn,t as fn}from"./usePositioner-DUsvphCt.js";import"./input-6kdUb_DH.js";import{t as pn}from"./separator-B3CHPrlt.js";import{a as mn,c as hn,i as gn,l as _n,n as vn,o as yn,r as bn,s as xn,t as Sn}from"./DialogTitle-DiInIGjk.js";import{t as Cn}from"./awsClient-b0hcP1Iz.js";import{n as wn,t as Tn}from"./admin-context-CXmiyIcc.js";import{t as En}from"./acm-BYWQapOv.js";import{i as Dn,t as On}from"./bedrock-Ct-f5HCJ.js";import{i as kn}from"./bedrockAgent-D9Za8qAi.js";import{A as An,E as jn,M as Mn,O as Nn,S as Pn,_ as Fn,c as In,d as Ln,h as Rn,l as zn,n as Bn,o as Vn,p as Hn,r as Un,w as Wn,y as Gn}from"./ec2-CWEplLq4.js";import{n as Kn}from"./ecr-BFtKzkrF.js";import{n as qn,o as Jn}from"./ecs-gqt7DXoF.js";import{c as Yn}from"./eks-CC8GhK3R.js";import{a as Xn,o as Zn,u as Qn}from"./elbv2-DSjTzB2q.js";import{C as $n,f as er,l as tr,p as nr,y as rr}from"./iam-CVg27y22.js";import{a as ir,d as ar,h as or,o as sr,r as cr}from"./rds-CyiqRExv.js";import{n as lr}from"./s3-DFfxBBj-.js";import{t as ur}from"./login-Zz7MnUTC.js";import{t as dr}from"./run-instances-CCY2HdNd.js";import{t as fr}from"./create-snapshot-wXcq0RWi.js";import{t as pr}from"./create-service-DExIeTQv.js";import{t as mr}from"./register-task-definition-9gqzIyeT.js";import{t as hr}from"./run-task-Dkc0UyHr.js";import{t as gr}from"./_knowledgeBaseId-7saNV50A.js";import{t as _r}from"./_id-FFfcJrCW.js";import{t as vr}from"./_id-Df06xbgH.js";import{t as yr}from"./_id-DHGMf_p-.js";import{t as br}from"./_id-DpCiHWsF.js";import{t as xr}from"./_id-CXZivkIZ.js";import{t as Sr}from"./_id-UPy9yakk.js";import{t as Cr}from"./_id-jxfo70ry.js";import{t as wr}from"./_id-1XMcJG7p.js";import{t as Tr}from"./_id-BnnKVvOl.js";import{t as Er}from"./_id-CjFrz8tY.js";import{t as Dr}from"./_id-DVMhXCwR.js";import{t as Or}from"./_id-CjZcD-rB.js";import{t as kr}from"./_id-NWQukwhC.js";import{t as Ar}from"./_id-CbghuErm.js";import{t as jr}from"./_id-Cssn1mnV.js";import{t as Mr}from"./_id-v23tv1cK.js";import{t as Nr}from"./_clusterName-Dsur-gaB.js";import{t as Pr}from"./_groupName-ybM6rgP-.js";import{t as Fr}from"./_instanceProfileName-DIUtYtG8.js";import{t as Ir}from"./_policyArn-CxrcnaS5.js";import{t as Lr}from"./_roleName-Cb_y_odC.js";import{t as Rr}from"./_userName-O8ujEE0v.js";import{t as zr}from"./_id-BY8BuAtk.js";import{t as Br}from"./_name-BAZWFAbg.js";import{t as Vr}from"./_id-Oh4JEFTn.js";import{t as Hr}from"./_id-CHu8CrA0.js";import{t as Ur}from"./_name-0Lr5w_9G.js";import{t as Wr}from"./_bucket-CkOBR5mi.js";import{t as Gr}from"./_-DN9VaV2B.js";import{t as Kr}from"./_guardrailId.index-D-j5LmDO.js";import{t as qr}from"./_guardrailId.edit-B0KNJrXP.js";import{t as Jr}from"./_serviceName-BtG8OFfw.js";import{t as Yr}from"./_taskId-sla3KnqA.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var Xr=class extends u{#e;#t;#n;constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}build(e,t,n){let r=new x({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=Zr(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=Zr(e);if(typeof t==`string`){let n=this.#t.get(t);if(n){if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=Zr(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}return!0}runNext(e){let t=Zr(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){h.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>_(t,e))}findAll(e={}){return this.getAll().filter(t=>_(e,t))}notify(e){h.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return h.batch(()=>Promise.all(e.map(e=>e.continue().catch(l))))}};function Zr(e){return e.options.scope?.id}var Qr=class extends u{#e;constructor(e={}){super(),this.config=e,this.#e=new Map}build(e,t,n){let r=t.queryKey,i=t.queryHash??d(r,t),a=this.get(i);return a||(a=new b({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){h.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>y(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>y(e,t)):t}notify(e){h.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){h.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){h.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},$r=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new Qr,this.#t=e.mutationCache||new Xr,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=g.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=c.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(o(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=m(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return h.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;h.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return h.batch(()=>{let r=n.findAll(e),i=new Set(r);return r.forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,predicate:e=>i.has(e)},t)})}cancelQueries(e,t={}){let n={revert:!0,...t},r=h.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(l).catch(l)}invalidateQueries(e,t={}){return h.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=h.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(l)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(l)}async query(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t),r=n.isStaleByTime(o(t.staleTime,n))?await n.fetch(t):n.state.data,i=t.select;return i?i(r):r}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(o(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(l).catch(l)}infiniteQuery(e){return e._type=`infinite`,this.query(e)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(l).catch(l)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return c.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(f(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{v(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(f(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{v(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=d(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===s&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}};function ei(){try{return sessionStorage}catch{return}}var ti=`tsr-scroll-restoration-v1_3`,ni=ei();function ri(){try{return JSON.parse(ni?.getItem(`tsr-scroll-restoration-v1_3`)||`{}`)}catch{return{}}}function ii(){try{ni?.setItem(ti,JSON.stringify(ai))}catch{}}var ai=ri(),oi=`data-scroll-restoration-id`,si=e=>e.state.__TSR_key||e.href;function ci(e){let t=e.getAttribute(oi);if(t)return`[${oi}="${t}"]`;let n=``,r=e,i;for(;i=r.parentNode;){let e=1,t=r;for(;t=t.previousElementSibling;)e++;let a=`${r.localName}:nth-child(${e})`;n=n?`${a} > ${n}`:a,r=i}return n}var li=!1,ui=`window`;function di(e){try{return typeof e==`function`?e():document.querySelector(e)}catch{}}function fi(e){let t=new Set;for(let n of e){if(n===ui)continue;let e=di(n);e&&t.add(e)}return t}function pi(e,t){let n=t??e.options.scrollRestoration,r=e._scroll;n&&(r.restoring=!0);let i=e.options.getScrollRestorationKey||si,a=new Set,o=e=>{let t=ai[e]||={};for(let e of a)e===document?t[ui]={scrollX,scrollY}:e.isConnected&&(t[ci(e)]={scrollX:e.scrollLeft,scrollY:e.scrollTop})};n&&!r.restoration&&(r.restoration=!0,li=!1,history.scrollRestoration=`manual`,document.addEventListener(`scroll`,e=>{li||a.add(e.target)},!0),e.subscribe(`onBeforeLoad`,e=>{e.fromLocation&&o(i(e.fromLocation)),a.clear()}),addEventListener(`pagehide`,()=>{o(i(e.stores.resolvedLocation.get()??e.stores.location.get())),ii()})),!r.reset&&(r.reset=!0,e.subscribe(`onRendered`,t=>{let n=e.options.scrollRestorationBehavior,o=e.options.scrollToTopSelectors,s=r.next,c=r.hash,l;if(a.clear(),r.next=!0,r.hash=!1,typeof e.options.scrollRestoration==`function`&&!e.options.scrollRestoration({location:e.latestLocation}))return;let u=i(t.toLocation),d=t.fromLocation&&i(t.fromLocation);if(r.restoring&&d&&d!==u){let e=ai[d];if(e){let t=ai[u];for(let n in e){if(n===ui){if(s)continue}else{let e=di(n);if(!e||s&&o&&(l??=fi(o),l.has(e)))continue}t||=ai[u]={},t[n]??=e[n]}}}li=!0;try{let e=t.toLocation.hash,i=t.toLocation.state.__hashScrollIntoViewOptions??!0,a=!1;if(s){!e&&o&&(l??=fi(o));let t=e&&i&&c,s=r.restoring?ai[u]:void 0;if(s)for(let e in s){let{scrollX:r,scrollY:i}=s[e];if(e===ui){if(t)continue;scrollTo({top:i,left:r,behavior:n}),a=!0}else{let t=di(e);t&&(t.scrollLeft=r,t.scrollTop=i,l?.delete(t))}}if(!e){let e={top:0,left:0,behavior:n};if(a||scrollTo(e),l)for(let t of l)t.scrollTo(e)}}!a&&e&&i&&document.getElementById(e)?.scrollIntoView(i)}finally{li=!1}}))}function mi(e,t=String){let n;for(let r in e){let i=e[r];i!==void 0&&(n||=new URLSearchParams).set(r,t(i))}return n?n.toString():``}function hi(e){return e?e===`false`?!1:e===`true`?!0:e*0==0&&+e+``===e?+e:e:``}function gi(e){let t=new URLSearchParams(e),n=Object.create(null);for(let[e,r]of t.entries()){let t=n[e];t==null?n[e]=hi(r):Array.isArray(t)?t.push(hi(r)):n[e]=[t,hi(r)]}return n}var _i=/^(?:\s|["[{\d-]|fa|nu|tr)/,vi=bi(JSON.parse),yi=xi(JSON.stringify,JSON.parse);function bi(e){let t=e===JSON.parse;return n=>{n[0]===`?`&&(n=n.substring(1));let r=gi(n);for(let n in r){let i=r[n];if(typeof i==`string`){if(t&&!_i.test(i))continue;try{r[n]=e(i)}catch{}}}return r}}function xi(e,t){let n=t===JSON.parse;function r(r){if(r&&typeof r==`object`)try{return e(r)}catch{}else if(t&&typeof r==`string`){if(n&&!_i.test(r))return r;try{return t(r),e(r)}catch{}}return r}return e=>{let t=mi(e,r);return t?`?${t}`:``}}function Si(e){let t=new Map,n,r;return{get(e){let n=t.get(e);if(n)return n.visited=!0,n.value},set(i,a){let o=t.get(i);if(o){o.value=a;return}if(t.size>=e){let e=n?.next().value;for(;!e||e.visited;)e?e.visited=!1:n=t.values(),e=n.next().value;e===r&&(n=void 0),t.delete(e.key)}let s={key:i,value:a,visited:!1};r=s,t.set(i,s)},clear(){t.clear(),n=void 0,r=void 0}}}var Ci=4,wi=5;function Ti(e){let t=e.names;if(t)return t;let n=[];for(let t of e)typeof t!=`string`&&n.push(t[1]);return e.names=n}function Ei(e,t,n){let r=e.substring(t,n);if(r.charCodeAt(0)===36)return r.length===1?[2,`_splat`,``,void 0]:[1,r.substring(1),``,``];let i=r.indexOf(`{`);if(i>=0){let a=r.indexOf(`}`,i),o=r.charCodeAt(i+1)===45,s=i+(o?3:2);if(a>=0&&r.charCodeAt(s-1)===36&&(!o||s!e.parse&&e.caseSensitive===_&&e.prefix===h&&e.suffix===g);if(y)c=y;else{let e=ki(r,t,_,h,g);c=e,v.push(e),v.length===2&&i?.push(v)}}r=c}p&&m=0;e--){let n=i.wildcard[e],{prefix:r,suffix:a}=n;if(!r||!_&&(n.caseSensitive?v:y??=v.toLowerCase()).startsWith(r)){if(a){if(_)continue;let e=t.slice(u).join(`/`),i=e.slice(-a.length);if((n.caseSensitive?i:i.toLowerCase())!==a||e.length-a.length=0;t--){let n=i.optional[t];s.push({node:n,index:u,skipped:e,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}if(!_)for(let e=i.optional.length-1;e>=0;e--){let t=i.optional[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.dynamic[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.pathless[e];s.push({node:t,index:u,skipped:d,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}}if(l)return l;if(r&&c){let n=c.index;for(let e=0;ee.statics||t.statics===e.statics&&(t.dynamics>e.dynamics||t.dynamics===e.dynamics&&(t.optionals>e.optionals||t.optionals===e.optionals&&((t.node.kind===Ci)>(e.node.kind===Ci)||t.node.kind===Ci==(e.node.kind===Ci)&&t.node.depth>e.node.depth)))}function Wi(e,t,n){let r=pe(e),i=`/${r}`,a=t?i:i.toLowerCase(),o=`${a}/`,s={input:({url:e})=>{let n=t?e.pathname:e.pathname.toLowerCase();return n===a?e.pathname=`/`:n.startsWith(o)&&(e.pathname=e.pathname.slice(i.length)),e},output:({url:e})=>(e.pathname=fe(`/${r}${e.pathname}`),e)};return n?{input:({url:e})=>Gi(n,s.input({url:e})),output:({url:e})=>s.output({url:Ki(n,e)})}:s}function Gi(e,t){let n=e?.input?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function Ki(e,t){let n=e?.output?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function qi(e,t){let{createMutableStore:n,createReadonlyStore:r,batch:i}=t,a=new Map,o=n(`idle`),s=n(e),c=n(void 0),l=n([]),u=r(()=>l.get().map(e=>a.get(e).get())),d=r(()=>({status:o.get(),isLoading:o.get()===`pending`,matches:u.get(),location:s.get(),resolvedLocation:c.get()}));function f(e){let t=a.get(e);return t||(t=n(void 0),a.set(e,t)),t}let p={status:o,location:s,resolvedLocation:c,ids:l,matches:u,byRoute:a,__store:d,getMatchStore:f,setMatches:m};function m(e){let t=l.get(),n=e.map(e=>e.routeId);i(()=>{ge(t,n)||l.set(n);for(let e of t)n.includes(e)||a.get(e).set(()=>void 0);for(let t of e){let e=f(t.routeId);e.get()!==t&&e.set(t)}})}return p}var Ji=`__TSR_index`,Yi=`popstate`,Xi=`beforeunload`,Zi=/^[\x00-\x20]*(?:[\\/][\t\n\r]*){2,}/;function Qi(e){let t=Zi.exec(e);return t?`/`+e.slice(t[0].length):e}function $i(e){return/[\x00-\x1f\x7f]/.test(e)&&(e=e.replace(/[\x00-\x1f\x7f]/g,e=>` +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/route-DPFKZkGs.js","assets/compiler-runtime-D_vZfn79.js","assets/Match-Q4m9gh_H.js","assets/matchContext-DjfNTEDZ.js","assets/useSelector-CRh8wCTv.js","assets/with-selector-DrM041uv.js","assets/_auth-DsyoN1M9.js","assets/useQuery-2EKf7AyV.js","assets/useBaseQuery-Dqg0ViLa.js","assets/removable-Dwr9otKB.js","assets/query-BPr_oSEg.js","assets/link-Dhy4xOXd.js","assets/cluster-config-xw_Q7X1e.js","assets/hex-encoding-B19xAT_7.js","assets/createLucideIcon-BQgzNCBR.js","assets/chevron-down-Dt4q6d24.js","assets/chevron-right-c57whaks.js","assets/waypoints-CMfoqtKm.js","assets/admin-context-CXmiyIcc.js","assets/sts-B5ZEON3v.js","assets/signed-fetch-B-FFW93q.js","assets/ec2-CWEplLq4.js","assets/queryOptions-Dfvzj6n2.js","assets/awsClient-b0hcP1Iz.js","assets/index.browser-C3WbWNjZ.js","assets/s3-DFfxBBj-.js","assets/page-heading-vksh_67w.js","assets/badge-B_ExXcw2.js","assets/dist-BKgR2qk6.js","assets/useRender-2pqPQOAE.js","assets/card-BXl0Qff8.js","assets/admin-BUkrFIlI.js","assets/alert-dialog-kCQ1W4Rz.js","assets/button-BarTr35m.js","assets/DialogTitle-DiInIGjk.js","assets/useValueAsRef-F56m8WbP.js","assets/createBaseUIEventDetails-DL-8egB9.js","assets/useScrollLock-NX6x9Pv8.js","assets/state-badge-D1Z6q_OA.js","assets/route-n5jLl8qw.js","assets/nodes-DExo87Po.js","assets/redirect-B4OxYbs2.js","assets/service-metrics-C6gBIZci.js","assets/allocate-address-CDvylWBR.js","assets/useNavigate-BH3pQKLF.js","assets/back-link-CjKy1JE5.js","assets/cli-command-panel-CLiFy1rG.js","assets/check-BO7W8OSs.js","assets/copy-CamWo-pg.js","assets/use-copy-to-clipboard-DjiD3qo6.js","assets/input-6kdUb_DH.js","assets/useValueChanged-B2TUO8IO.js","assets/useControlled-DwxdYHYK.js","assets/ec2-Ctto2xjU.js","assets/useMutation-6rdxVQpi.js","assets/mutation-BziiWz5u.js","assets/subnet-calculator-BlCTyGtY.js","assets/zod-DF_n2ejy.js","assets/error-banner-DeOeVBKS.js","assets/form-actions-BUM37An0.js","assets/field-c7GHI5st.js","assets/separator-B3CHPrlt.js","assets/ec2-DhWukC79.js","assets/create-internet-gateway-CGStzV_5.js","assets/create-key-pair-CKL_t5ui.js","assets/select-B01jpDaX.js","assets/usePositioner-DUsvphCt.js","assets/DirectionContext-C9rdm8xn.js","assets/useCompositeListItem-CEsaEeXb.js","assets/download-B-6MA128.js","assets/triangle-alert-DcjzeKLg.js","assets/import-key-pair-kETKjfrj.js","assets/textarea-n04EavUm.js","assets/create-launch-template-vwPKoZ8a.js","assets/launch-template-data-fields-BXmKXe0L.js","assets/useSuspenseQuery-Bc7E1P-f.js","assets/collapsible-k5LqEmTn.js","assets/create-load-balancer-BBKiIxj3.js","assets/acm-BYWQapOv.js","assets/certificate-import-dialog-UyecRuny.js","assets/elbv2-K4aD09h6.js","assets/commandBuilder-DzFUl2wS.js","assets/elbv2-DSjTzB2q.js","assets/tags-field-array-Dk9nPDzt.js","assets/plus-BodhJT2v.js","assets/trash-DVab4pEz.js","assets/target-group-form-DvZOw-26.js","assets/elbv2-CtsfBUSG.js","assets/create-nat-gateway-C0zhuUio.js","assets/create-placement-group-D_3YKZZQ.js","assets/create-route-table-q3_xIq0T.js","assets/create-security-group-BD7bwg9p.js","assets/create-subnet-BXdYKpy-.js","assets/create-target-group-CSrYTK6r.js","assets/create-volume-BamGr8Qm.js","assets/create-vpc-CyDH_vpB.js","assets/task-definitions-qkfdMMhk.js","assets/ecs-gqt7DXoF.js","assets/ecs-8RzYyUs4.js","assets/delete-confirmation-dialog-SdDN4LiF.js","assets/ecs-section-nav-CU0acTSl.js","assets/create-cluster-eQiUzhUk.js","assets/eks-C1P60riG.js","assets/commandBuilder-DOzu_YCE.js","assets/json-DsgWHaZY.js","assets/iam-CKOkzDco.js","assets/commandBuilder-CoLHZwsC.js","assets/iam-CVg27y22.js","assets/system-managed-Dk7ySh_E.js","assets/system-image-required-PXuPdEKF.js","assets/rotate-cw-FTUcK_f-.js","assets/policy-document-viewer-DAhLJAGU.js","assets/create-group-6mVlm4h5.js","assets/iam-Cgrr-Iit.js","assets/create-instance-profile-CgetPfkP.js","assets/create-policy-BJFldcK3.js","assets/json-editor-Bwbz8mfn.js","assets/create-role-DvSx0q-L.js","assets/create-user-Bv8sj586.js","assets/create-db-instance-CY_ivPtb.js","assets/rds-CE3126Ga.js","assets/rds-BkKLEWPo.js","assets/rds-CyiqRExv.js","assets/picker-notice-tK9XfUSR.js","assets/security-group-checkboxes-BkxIRro9.js","assets/create-db-parameter-group-CkK-hDRM.js","assets/create-db-subnet-group-BV65rf5O.js","assets/create-bucket-B5kEkFpz.js","assets/s3-DaPUyf7s.js","assets/ls-XgxEPnDq.js","assets/list-card-DFj_XTL4.js","assets/route-DtXjPAiX.js","assets/list-model-catalog-CPZ8xUbd.js","assets/list-guardrails-DYYlNj8n.js","assets/bedrock-Ct-f5HCJ.js","assets/commandBuilder-CyJu3wq4.js","assets/create-CoZioQAG.js","assets/bedrock-7XDhMm-7.js","assets/guardrail-form-page-C6v-izo3.js","assets/list-knowledge-bases-CH_zlnnr.js","assets/bedrockAgent-D9Za8qAi.js","assets/commandBuilder-BH-JcvCM.js","assets/create-uNWIyxX8.js","assets/bedrockAgent-BL6fVxPp.js","assets/list-model-access-Ds5MpzNH.js","assets/playground-zdI5o66q.js","assets/commandBuilder-BLgOdGhm.js","assets/describe-addresses-DKlK9Anw.js","assets/describe-images-Zp7giKqa.js","assets/describe-instances-BK0FW0LB.js","assets/describe-internet-gateways-CiiBScpk.js","assets/describe-key-pairs-BRKxsJWn.js","assets/describe-launch-templates-BuaCkV_y.js","assets/describe-load-balancers-ayJnDdyt.js","assets/describe-nat-gateways-B8p3GKN1.js","assets/describe-placement-groups-XiQbPRZ5.js","assets/describe-route-tables-Cz9uMOpx.js","assets/describe-security-groups-uryLUVIn.js","assets/describe-snapshots-63g9NU9g.js","assets/describe-subnets-lWLraP1d.js","assets/describe-target-groups-5RCbjKmg.js","assets/describe-volumes-Dj4fTW0o.js","assets/describe-vpcs-cdkXn9V9.js","assets/list-repositories-B-9oI4MN.js","assets/ecr-BFtKzkrF.js","assets/ecr-F-ANqxrm.js","assets/list-clusters-UynY0efZ.js","assets/list-clusters-CIHqWLhW.js","assets/eks-CC8GhK3R.js","assets/list-groups-B-aCbhJM.js","assets/list-instance-profiles-BSt7PimM.js","assets/list-policies-DeMAXGlh.js","assets/list-roles-DKJKr-De.js","assets/list-users-B87cjyLt.js","assets/describe-db-instances-ririu0gg.js","assets/delete-db-instance-dialog-BdhZGMA5.js","assets/describe-db-parameter-groups-Vj5U5CsP.js","assets/delete-db-parameter-group-dialog-DHJeV95z.js","assets/rds-delete-dialog-BtEPTeBR.js","assets/describe-db-snapshots-DXVrzU4j.js","assets/create-db-snapshot-dialog-CiBeyQ69.js","assets/delete-db-snapshot-dialog-D3b3mehr.js","assets/describe-db-subnet-groups-B9VO6RnW.js","assets/delete-db-subnet-group-dialog-BgemfFMN.js"])))=>i.map(i=>d[i]); +import{i as e,n as t,o as n,r,t as i}from"./compiler-runtime-D_vZfn79.js";import{A as a,C as o,E as s,a as c,b as l,c as u,g as d,h as f,k as p,m,o as h,s as g,v as _,x as v,y}from"./removable-Dwr9otKB.js";import{t as b}from"./query-BPr_oSEg.js";import{t as x}from"./mutation-BziiWz5u.js";import{a as S,i as C,n as w,o as T,r as E,t as D}from"./lazyRouteComponent-CiZDS8hZ.js";import{C as O,S as k,T as ee,_ as te,a as ne,b as re,c as ie,d as ae,f as oe,g as se,h as ce,i as le,l as ue,m as de,n as fe,o as pe,p as me,r as he,t as A,u as ge,v as _e,w as j,y as M}from"./link-Dhy4xOXd.js";import{a as ve,i as ye,n as be,o as xe,r as Se,s as N,t as Ce}from"./Match-Q4m9gh_H.js";import{n as we,r as Te}from"./matchContext-DjfNTEDZ.js";import{n as Ee,t as De}from"./redirect-B4OxYbs2.js";import{a as Oe,n as ke,r as Ae,t as je}from"./useSelector-CRh8wCTv.js";import{n as Me}from"./with-selector-DrM041uv.js";import{t as Ne}from"./useNavigate-BH3pQKLF.js";import{f as Pe,i as Fe,n as Ie,t as Le}from"./useValueAsRef-F56m8WbP.js";import{a as Re,f as ze,l as Be,n as Ve,o as He,t as Ue,u as We}from"./dist-BKgR2qk6.js";import{t as Ge}from"./useRender-2pqPQOAE.js";import{a as Ke,lt as P,n as qe,o as Je,r as Ye,tn as Xe}from"./cluster-config-xw_Q7X1e.js";import{t as F}from"./createLucideIcon-BQgzNCBR.js";import{t as Ze}from"./camera-bmANKZ8M.js";import{a as Qe,c as $e,i as et,n as tt,o as nt,r as rt,s as it,t as at}from"./waypoints-CMfoqtKm.js";import{n as ot,t as st}from"./_id-njlqJfO-.js";import{n as ct,t as lt}from"./_clusterName-CoDfUrWf.js";import{n as ut,t as dt}from"./_id--x_QHBJa.js";import{_ as ft,b as pt,n as mt,o as ht,s as gt,t as _t,y as vt}from"./button-BarTr35m.js";import{C as yt,E as bt,S as xt,b as St,f as Ct,g as wt,h as I,i as Tt,m as Et,s as Dt,t as Ot,v as kt,w as At,x as jt,y as Mt}from"./createBaseUIEventDetails-DL-8egB9.js";import{$ as Nt,D as Pt,E as Ft,H as It,L as Lt,M as Rt,O as zt,P as Bt,S as Vt,St as Ht,Y as Ut,at as Wt,b as Gt,ct as Kt,g as L,h as qt,it as Jt,j as Yt,k as Xt,m as Zt,nt as Qt,ot as $t,p as en,st as tn,tt as nn,ut as rn,w as an,wt as on,x as sn,y as cn,z as ln}from"./useScrollLock-NX6x9Pv8.js";import{n as un,r as dn,t as fn}from"./usePositioner-DUsvphCt.js";import"./input-6kdUb_DH.js";import{t as pn}from"./separator-B3CHPrlt.js";import{a as mn,c as hn,i as gn,l as _n,n as vn,o as yn,r as bn,s as xn,t as Sn}from"./DialogTitle-DiInIGjk.js";import{t as Cn}from"./awsClient-b0hcP1Iz.js";import{n as wn,t as Tn}from"./admin-context-CXmiyIcc.js";import{t as En}from"./acm-BYWQapOv.js";import{i as Dn,t as On}from"./bedrock-Ct-f5HCJ.js";import{i as kn}from"./bedrockAgent-D9Za8qAi.js";import{A as An,E as jn,M as Mn,O as Nn,S as Pn,_ as Fn,c as In,d as Ln,h as Rn,l as zn,n as Bn,o as Vn,p as Hn,r as Un,w as Wn,y as Gn}from"./ec2-CWEplLq4.js";import{n as Kn}from"./ecr-BFtKzkrF.js";import{n as qn,o as Jn}from"./ecs-gqt7DXoF.js";import{c as Yn}from"./eks-CC8GhK3R.js";import{a as Xn,o as Zn,u as Qn}from"./elbv2-DSjTzB2q.js";import{C as $n,f as er,l as tr,p as nr,y as rr}from"./iam-CVg27y22.js";import{a as ir,d as ar,h as or,o as sr,r as cr}from"./rds-CyiqRExv.js";import{n as lr}from"./s3-DFfxBBj-.js";import{t as ur}from"./login-Zz7MnUTC.js";import{t as dr}from"./run-instances-CCY2HdNd.js";import{t as fr}from"./create-snapshot-wXcq0RWi.js";import{t as pr}from"./create-service-DExIeTQv.js";import{t as mr}from"./register-task-definition-9gqzIyeT.js";import{t as hr}from"./run-task-Dkc0UyHr.js";import{t as gr}from"./_knowledgeBaseId-7saNV50A.js";import{t as _r}from"./_id-FFfcJrCW.js";import{t as vr}from"./_id-Df06xbgH.js";import{t as yr}from"./_id-U4BZhcdn.js";import{t as br}from"./_id-DpCiHWsF.js";import{t as xr}from"./_id-CXZivkIZ.js";import{t as Sr}from"./_id-UPy9yakk.js";import{t as Cr}from"./_id-jxfo70ry.js";import{t as wr}from"./_id-1XMcJG7p.js";import{t as Tr}from"./_id-BnnKVvOl.js";import{t as Er}from"./_id-CjFrz8tY.js";import{t as Dr}from"./_id-DVMhXCwR.js";import{t as Or}from"./_id-CjZcD-rB.js";import{t as kr}from"./_id-NWQukwhC.js";import{t as Ar}from"./_id-CbghuErm.js";import{t as jr}from"./_id-Cssn1mnV.js";import{t as Mr}from"./_id-v23tv1cK.js";import{t as Nr}from"./_clusterName-Dsur-gaB.js";import{t as Pr}from"./_groupName-ybM6rgP-.js";import{t as Fr}from"./_instanceProfileName-DIUtYtG8.js";import{t as Ir}from"./_policyArn-CxrcnaS5.js";import{t as Lr}from"./_roleName-Cb_y_odC.js";import{t as Rr}from"./_userName-O8ujEE0v.js";import{t as zr}from"./_id-BY8BuAtk.js";import{t as Br}from"./_name-BAZWFAbg.js";import{t as Vr}from"./_id-Oh4JEFTn.js";import{t as Hr}from"./_id-CHu8CrA0.js";import{t as Ur}from"./_name-0Lr5w_9G.js";import{t as Wr}from"./_bucket-CkOBR5mi.js";import{t as Gr}from"./_-DN9VaV2B.js";import{t as Kr}from"./_guardrailId.index-D-j5LmDO.js";import{t as qr}from"./_guardrailId.edit-B0KNJrXP.js";import{t as Jr}from"./_serviceName-BtG8OFfw.js";import{t as Yr}from"./_taskId-sla3KnqA.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var Xr=class extends u{#e;#t;#n;constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}build(e,t,n){let r=new x({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=Zr(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=Zr(e);if(typeof t==`string`){let n=this.#t.get(t);if(n){if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=Zr(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}return!0}runNext(e){let t=Zr(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){h.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>_(t,e))}findAll(e={}){return this.getAll().filter(t=>_(e,t))}notify(e){h.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return h.batch(()=>Promise.all(e.map(e=>e.continue().catch(l))))}};function Zr(e){return e.options.scope?.id}var Qr=class extends u{#e;constructor(e={}){super(),this.config=e,this.#e=new Map}build(e,t,n){let r=t.queryKey,i=t.queryHash??d(r,t),a=this.get(i);return a||(a=new b({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){h.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>y(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>y(e,t)):t}notify(e){h.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){h.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){h.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},$r=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new Qr,this.#t=e.mutationCache||new Xr,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=g.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=c.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(o(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=m(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return h.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;h.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return h.batch(()=>{let r=n.findAll(e),i=new Set(r);return r.forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,predicate:e=>i.has(e)},t)})}cancelQueries(e,t={}){let n={revert:!0,...t},r=h.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(l).catch(l)}invalidateQueries(e,t={}){return h.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=h.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(l)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(l)}async query(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t),r=n.isStaleByTime(o(t.staleTime,n))?await n.fetch(t):n.state.data,i=t.select;return i?i(r):r}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(o(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(l).catch(l)}infiniteQuery(e){return e._type=`infinite`,this.query(e)}fetchInfiniteQuery(e){return e._type=`infinite`,this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(l).catch(l)}ensureInfiniteQueryData(e){return e._type=`infinite`,this.ensureQueryData(e)}resumePausedMutations(){return c.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(f(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{v(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(f(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{v(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=d(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===s&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}};function ei(){try{return sessionStorage}catch{return}}var ti=`tsr-scroll-restoration-v1_3`,ni=ei();function ri(){try{return JSON.parse(ni?.getItem(`tsr-scroll-restoration-v1_3`)||`{}`)}catch{return{}}}function ii(){try{ni?.setItem(ti,JSON.stringify(ai))}catch{}}var ai=ri(),oi=`data-scroll-restoration-id`,si=e=>e.state.__TSR_key||e.href;function ci(e){let t=e.getAttribute(oi);if(t)return`[${oi}="${t}"]`;let n=``,r=e,i;for(;i=r.parentNode;){let e=1,t=r;for(;t=t.previousElementSibling;)e++;let a=`${r.localName}:nth-child(${e})`;n=n?`${a} > ${n}`:a,r=i}return n}var li=!1,ui=`window`;function di(e){try{return typeof e==`function`?e():document.querySelector(e)}catch{}}function fi(e){let t=new Set;for(let n of e){if(n===ui)continue;let e=di(n);e&&t.add(e)}return t}function pi(e,t){let n=t??e.options.scrollRestoration,r=e._scroll;n&&(r.restoring=!0);let i=e.options.getScrollRestorationKey||si,a=new Set,o=e=>{let t=ai[e]||={};for(let e of a)e===document?t[ui]={scrollX,scrollY}:e.isConnected&&(t[ci(e)]={scrollX:e.scrollLeft,scrollY:e.scrollTop})};n&&!r.restoration&&(r.restoration=!0,li=!1,history.scrollRestoration=`manual`,document.addEventListener(`scroll`,e=>{li||a.add(e.target)},!0),e.subscribe(`onBeforeLoad`,e=>{e.fromLocation&&o(i(e.fromLocation)),a.clear()}),addEventListener(`pagehide`,()=>{o(i(e.stores.resolvedLocation.get()??e.stores.location.get())),ii()})),!r.reset&&(r.reset=!0,e.subscribe(`onRendered`,t=>{let n=e.options.scrollRestorationBehavior,o=e.options.scrollToTopSelectors,s=r.next,c=r.hash,l;if(a.clear(),r.next=!0,r.hash=!1,typeof e.options.scrollRestoration==`function`&&!e.options.scrollRestoration({location:e.latestLocation}))return;let u=i(t.toLocation),d=t.fromLocation&&i(t.fromLocation);if(r.restoring&&d&&d!==u){let e=ai[d];if(e){let t=ai[u];for(let n in e){if(n===ui){if(s)continue}else{let e=di(n);if(!e||s&&o&&(l??=fi(o),l.has(e)))continue}t||=ai[u]={},t[n]??=e[n]}}}li=!0;try{let e=t.toLocation.hash,i=t.toLocation.state.__hashScrollIntoViewOptions??!0,a=!1;if(s){!e&&o&&(l??=fi(o));let t=e&&i&&c,s=r.restoring?ai[u]:void 0;if(s)for(let e in s){let{scrollX:r,scrollY:i}=s[e];if(e===ui){if(t)continue;scrollTo({top:i,left:r,behavior:n}),a=!0}else{let t=di(e);t&&(t.scrollLeft=r,t.scrollTop=i,l?.delete(t))}}if(!e){let e={top:0,left:0,behavior:n};if(a||scrollTo(e),l)for(let t of l)t.scrollTo(e)}}!a&&e&&i&&document.getElementById(e)?.scrollIntoView(i)}finally{li=!1}}))}function mi(e,t=String){let n;for(let r in e){let i=e[r];i!==void 0&&(n||=new URLSearchParams).set(r,t(i))}return n?n.toString():``}function hi(e){return e?e===`false`?!1:e===`true`?!0:e*0==0&&+e+``===e?+e:e:``}function gi(e){let t=new URLSearchParams(e),n=Object.create(null);for(let[e,r]of t.entries()){let t=n[e];t==null?n[e]=hi(r):Array.isArray(t)?t.push(hi(r)):n[e]=[t,hi(r)]}return n}var _i=/^(?:\s|["[{\d-]|fa|nu|tr)/,vi=bi(JSON.parse),yi=xi(JSON.stringify,JSON.parse);function bi(e){let t=e===JSON.parse;return n=>{n[0]===`?`&&(n=n.substring(1));let r=gi(n);for(let n in r){let i=r[n];if(typeof i==`string`){if(t&&!_i.test(i))continue;try{r[n]=e(i)}catch{}}}return r}}function xi(e,t){let n=t===JSON.parse;function r(r){if(r&&typeof r==`object`)try{return e(r)}catch{}else if(t&&typeof r==`string`){if(n&&!_i.test(r))return r;try{return t(r),e(r)}catch{}}return r}return e=>{let t=mi(e,r);return t?`?${t}`:``}}function Si(e){let t=new Map,n,r;return{get(e){let n=t.get(e);if(n)return n.visited=!0,n.value},set(i,a){let o=t.get(i);if(o){o.value=a;return}if(t.size>=e){let e=n?.next().value;for(;!e||e.visited;)e?e.visited=!1:n=t.values(),e=n.next().value;e===r&&(n=void 0),t.delete(e.key)}let s={key:i,value:a,visited:!1};r=s,t.set(i,s)},clear(){t.clear(),n=void 0,r=void 0}}}var Ci=4,wi=5;function Ti(e){let t=e.names;if(t)return t;let n=[];for(let t of e)typeof t!=`string`&&n.push(t[1]);return e.names=n}function Ei(e,t,n){let r=e.substring(t,n);if(r.charCodeAt(0)===36)return r.length===1?[2,`_splat`,``,void 0]:[1,r.substring(1),``,``];let i=r.indexOf(`{`);if(i>=0){let a=r.indexOf(`}`,i),o=r.charCodeAt(i+1)===45,s=i+(o?3:2);if(a>=0&&r.charCodeAt(s-1)===36&&(!o||s!e.parse&&e.caseSensitive===_&&e.prefix===h&&e.suffix===g);if(y)c=y;else{let e=ki(r,t,_,h,g);c=e,v.push(e),v.length===2&&i?.push(v)}}r=c}p&&m=0;e--){let n=i.wildcard[e],{prefix:r,suffix:a}=n;if(!r||!_&&(n.caseSensitive?v:y??=v.toLowerCase()).startsWith(r)){if(a){if(_)continue;let e=t.slice(u).join(`/`),i=e.slice(-a.length);if((n.caseSensitive?i:i.toLowerCase())!==a||e.length-a.length=0;t--){let n=i.optional[t];s.push({node:n,index:u,skipped:e,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}if(!_)for(let e=i.optional.length-1;e>=0;e--){let t=i.optional[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.dynamic[e],{prefix:n,suffix:r}=t;if(n||r){let e=t.caseSensitive?v:y??=v.toLowerCase();if(n&&!e.startsWith(n)||r&&e.indexOf(r,e.length-r.length)=0;e--){let t=i.pathless[e];s.push({node:t,index:u,skipped:d,statics:f,dynamics:p,optionals:m,extract:h,rawParams:g})}}if(l)return l;if(r&&c){let n=c.index;for(let e=0;ee.statics||t.statics===e.statics&&(t.dynamics>e.dynamics||t.dynamics===e.dynamics&&(t.optionals>e.optionals||t.optionals===e.optionals&&((t.node.kind===Ci)>(e.node.kind===Ci)||t.node.kind===Ci==(e.node.kind===Ci)&&t.node.depth>e.node.depth)))}function Wi(e,t,n){let r=pe(e),i=`/${r}`,a=t?i:i.toLowerCase(),o=`${a}/`,s={input:({url:e})=>{let n=t?e.pathname:e.pathname.toLowerCase();return n===a?e.pathname=`/`:n.startsWith(o)&&(e.pathname=e.pathname.slice(i.length)),e},output:({url:e})=>(e.pathname=fe(`/${r}${e.pathname}`),e)};return n?{input:({url:e})=>Gi(n,s.input({url:e})),output:({url:e})=>s.output({url:Ki(n,e)})}:s}function Gi(e,t){let n=e?.input?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function Ki(e,t){let n=e?.output?.({url:t});if(n){if(typeof n==`string`)return new URL(n);if(n instanceof URL)return n}return t}function qi(e,t){let{createMutableStore:n,createReadonlyStore:r,batch:i}=t,a=new Map,o=n(`idle`),s=n(e),c=n(void 0),l=n([]),u=r(()=>l.get().map(e=>a.get(e).get())),d=r(()=>({status:o.get(),isLoading:o.get()===`pending`,matches:u.get(),location:s.get(),resolvedLocation:c.get()}));function f(e){let t=a.get(e);return t||(t=n(void 0),a.set(e,t)),t}let p={status:o,location:s,resolvedLocation:c,ids:l,matches:u,byRoute:a,__store:d,getMatchStore:f,setMatches:m};function m(e){let t=l.get(),n=e.map(e=>e.routeId);i(()=>{ge(t,n)||l.set(n);for(let e of t)n.includes(e)||a.get(e).set(()=>void 0);for(let t of e){let e=f(t.routeId);e.get()!==t&&e.set(t)}})}return p}var Ji=`__TSR_index`,Yi=`popstate`,Xi=`beforeunload`,Zi=/^[\x00-\x20]*(?:[\\/][\t\n\r]*){2,}/;function Qi(e){let t=Zi.exec(e);return t?`/`+e.slice(t[0].length):e}function $i(e){return/[\x00-\x1f\x7f]/.test(e)&&(e=e.replace(/[\x00-\x1f\x7f]/g,e=>` \r`.includes(e)?``:encodeURIComponent(e))),Qi(e)}function ea(e){let t=e.getLocation(),n=new Set,r=r=>{t=e.getLocation(),n.forEach(e=>e({location:t,action:r}))},i=n=>{e.notifyOnIndexChange??!0?r(n):t=e.getLocation()},a=async({task:n,navigateOpts:r,...i})=>{if(r?.ignoreBlocker??!1){n();return}let a=e.getBlockers?.()??[],o=i.type===`PUSH`||i.type===`REPLACE`;if(typeof document<`u`&&a.length&&o)for(let n of a){let r=ra(i.path,i.state);if(await n.blockerFn({currentLocation:t,nextLocation:r,action:i.type})){e.onBlocked?.();return}}n()};return{get location(){return t},get length(){return e.getLength()},subscribers:n,subscribe:e=>(n.add(e),()=>{n.delete(e)}),push:(n,i,o)=>{let s=t.state[Ji];i=ta(s+1,i),a({task:()=>{e.pushState(n,i),r({type:`PUSH`})},navigateOpts:o,type:`PUSH`,path:n,state:i})},replace:(n,i,o)=>{let s=t.state[Ji];i=ta(s,i),a({task:()=>{e.replaceState(n,i),r({type:`REPLACE`})},navigateOpts:o,type:`REPLACE`,path:n,state:i})},go:(t,n)=>{a({task:()=>{e.go(t,n?.ignoreBlocker??!1),i({type:`GO`,index:t})},navigateOpts:n,type:`GO`})},back:t=>{a({task:()=>{e.back(t?.ignoreBlocker??!1),i({type:`BACK`})},navigateOpts:t,type:`BACK`})},forward:t=>{a({task:()=>{e.forward(t?.ignoreBlocker??!1),i({type:`FORWARD`})},navigateOpts:t,type:`FORWARD`})},canGoBack:()=>t.state[Ji]!==0,createHref:t=>e.createHref(t),block:t=>{if(!e.setBlockers)return()=>{};let n=e.getBlockers?.()??[];return e.setBlockers([...n,t]),()=>{let n=e.getBlockers?.()??[];e.setBlockers?.(n.filter(e=>e!==t))}},flush:()=>e.flush?.(),destroy:()=>e.destroy?.(),notify:r,_getBlockers:()=>e.getBlockers?.()??[]}}function ta(e,t){let n=ia();return{...t,key:n,__TSR_key:n,[Ji]:e}}function na(e){let t=e?.window??(typeof document<`u`?window:void 0),n=t.history.pushState,r=t.history.replaceState,i=[],a=()=>i,o=e=>i=e,s=t=>$i(e?.createHref?e.createHref(t):t),c=e?.parseLocation??(()=>ra(`${t.location.pathname}${t.location.search}${t.location.hash}`,t.history.state));if(!t.history.state?.__TSR_key&&!t.history.state?.key){let e=ia();t.history.replaceState({[Ji]:0,key:e,__TSR_key:e},``)}let l=c(),u,d=!1,f=!1,p=!1,m=!1,h=()=>l,g,_=()=>{g&&(S._ignoreSubscribers=!0,(g[2]?t.history.pushState:t.history.replaceState)(g[1],``,g[0]),S._ignoreSubscribers=!1,g=void 0,u=void 0)},v=(t,n,r)=>{let i=e?.createHref?s(n):void 0,a=!!g;a||(u=l),l=ra(n,r),g=[i??l.href,r,g?.[2]||t],a||queueMicrotask(()=>_())},y=e=>{l=c(),S.notify({type:e})},b=async()=>{if(m=!1,f){f=!1;return}let e=c(),n=e.state[Ji]-l.state[Ji],r=n===1,i=n===-1,o=!r&&!i||d;d=!1;let s=o?`GO`:i?`BACK`:`FORWARD`,u=o?{type:`GO`,index:n}:{type:i?`BACK`:`FORWARD`};if(p)p=!1;else{let r=a();if(typeof document<`u`&&r.length){for(let i of r)if(await i.blockerFn({currentLocation:l,nextLocation:e,action:s})){f=!0,t.history.go(-n),S.notify(u);return}}}l=c(),S.notify(u)},x=e=>{if(m){m=!1;return}let t=!1,n=a();if(typeof document<`u`&&n.length)for(let e of n){let n=e.enableBeforeUnload??!0;if(n===!0){t=!0;break}if(typeof n==`function`&&n()===!0){t=!0;break}}if(t)return e.preventDefault(),e.returnValue=``},S=ea({getLocation:h,getLength:()=>t.history.length,pushState:(e,t)=>v(!0,e,t),replaceState:(e,t)=>v(!1,e,t),back:e=>(e&&(p=!0,m=!0),t.history.back()),forward:e=>{e&&(p=!0,m=!0),t.history.forward()},go:(e,n)=>{d=!0,n&&(p=!0,m=!0),t.history.go(e)},createHref:e=>s(e),flush:_,destroy:()=>{t.history.pushState=n,t.history.replaceState=r,t.removeEventListener(Xi,x,{capture:!0}),t.removeEventListener(Yi,b)},onBlocked:()=>{u&&l!==u&&(l=u)},getBlockers:a,setBlockers:o,notifyOnIndexChange:!1});return S._ignoreNextBeforeUnload=e=>{m=!1;try{e=new URL(e,t.document.baseURI).href,m=/^https?:/.test(e)&&(!e.includes(`#`)||e.split(`#`)[0]!==t.location.href.split(`#`)[0])}catch{}},t.addEventListener(Xi,x,{capture:!0}),t.addEventListener(Yi,b),t.history.pushState=function(...e){let r=n.apply(t.history,e);return S._ignoreSubscribers||y(`PUSH`),r},t.history.replaceState=function(...e){let n=r.apply(t.history,e);return S._ignoreSubscribers||y(`REPLACE`),n},S}function ra(e,t){let n=$i(e),r=n.indexOf(`#`),i=n.indexOf(`?`);if(!t){let e=ia();t={[Ji]:0,key:e,__TSR_key:e}}return{href:n,pathname:n.substring(0,r>0?i>0?Math.min(r,i):r:i>0?i:n.length),hash:r>-1?n.substring(r):``,search:i>-1?n.slice(i,r===-1?void 0:r):``,state:t}}function ia(){return(Math.random()+1).toString(36).substring(7)}function aa(e,t){return e.protocol!==`http:`&&e.protocol!==`https:`||e.origin!==t||!!e.username||!!e.password}function R(e){return e.pathname+e.search+e.hash}function oa(e){return e.options.loader||e.options.beforeLoad||e.lazyFn||e.options.component?.preload||e.options.pendingComponent?.preload}function sa(e,t){return{fromLocation:t,toLocation:e,pathChanged:t?.pathname!==e.pathname,hrefChanged:t?.href!==e.href,hashChanged:t?.hash!==e.hash}}function ca({key:e,__TSR_key:t,__TSR_index:n,__hashScrollIntoViewOptions:r,...i}){return i}function la(e){return e.findIndex(e=>e.status===`error`||e.status===`notFound`||e._notFound)+1}function ua(e,t,n,r,i,a){r&&(t=t.slice(0,r)),i&&(n=n.slice(0,i));for(let r of t){if(a&&e._tx!==a)return;n.some(e=>e.routeId===r.routeId)||e.routesById[r.routeId].options.onLeave?.(r)}for(let r of n){if(a&&e._tx!==a)return;e.routesById[r.routeId].options[t.some(e=>e.routeId===r.routeId)?`onStay`:`onEnter`]?.(r)}}var da=class{constructor(e,t){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this._scroll={next:!0},this.subscribers=new Set,this._cache=new Map,this._committed=[],this.startTransition=async e=>(e(),!1),this.update=e=>{let t=this.options;this.options={...t,...e},this.isServer=this.options.isServer??!1??typeof document>`u`,this.staticLocations=new WeakMap,this.protocolAllowlist=new Set(this.options.protocolAllowlist),(!this.history||this.options.history&&this.options.history!==this.history)&&(this.history=this.options.history?this.options.history:na()),this.origin=this.options.origin,this.origin||=window?.origin&&window.origin!==`null`?window.origin:`http://localhost`;let n=this.options.basepath??`/`,r=this.options.rewrite,i=this.basepath!==n||t?.rewrite!==r||t?.caseSensitive!==this.options.caseSensitive;if(i&&(this.basepath=n,this.rewrite=n!==`/`&&pe(n)?Wi(n,this.options.caseSensitive,r):r),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree){this.routeTree=this.options.routeTree;let e;e=this.buildRouteTree(),this.setRoutes(e)}if(this.stores)i&&this.stores.location.set(this.latestLocation);else if(this.latestLocation){let e=this.getStoreConfig(this);this.batch=e.batch,this.stores=qi(this.latestLocation,e),pi(this)}},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{let e=Pi(this.routeTree,this.options.caseSensitive);return this.options.routeMasks&&Ai(this.options.routeMasks,e.processedTree),{...e,resolvePathCache:Si(1e3)}},this.subscribe=(e,t)=>{let n={eventType:e,fn:t};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{for(let t of this.subscribers)if(t.eventType===e.type)try{t.fn(e)}catch(e){console.error(e)}},this.parseLocation=(e,t)=>{let n=({pathname:e,search:n,hash:r,href:i},a)=>{if(!this.rewrite&&!/[ \x00-\x1f\x7f\u0080-\uffff]/.test(e)){let i=this.options.parseSearch(n),o=this.options.stringifySearch(i);return{href:e+o+r,publicHref:e+o+r,pathname:oe(e),external:!1,searchStr:o,search:O(t?.search,i),hash:oe(r.slice(1)),state:ee(t?.state,a)}}let o=Gi(this.rewrite,new URL(i,this.origin)),s=this.options.parseSearch(o.search),c=this.options.stringifySearch(s);return o.search=c,{href:o.href.replace(o.origin,``),publicHref:i,pathname:oe(Qi(o.pathname)),external:!!this.rewrite&&aa(o,this.origin),searchStr:c,search:O(t?.search,s),hash:oe(o.hash.slice(1)),state:ee(t?.state,a)}},r=n(e,e.state),{__tempLocation:i,__tempKey:a}=r.state;if(i&&(!a||a===this.tempLocationKey)){let e=n(i,{...i.state,__tempLocation:void 0,key:r.state.key,__TSR_key:r.state.__TSR_key});return e.maskedLocation=r,e}return r},this.matchRoutes=(e,t,n)=>typeof e==`string`?this.matchRoutesInternal({pathname:e,search:t},n):this.matchRoutesInternal(e,t),this.getMatchedRoutes=e=>{let t=Object.create(null),n=Ni(ie(e),this.processedTree,!0);return n&&Object.assign(t,n.rawParams),[n?.branch||[this.routesById.__root__],t,n?.route]},this.buildLocation=e=>{{let t=this.staticLocations.get(e);if(t)return t}let t=!1,n=(n={})=>{if(n.href){let e=ra(n.href,{});n={...n,to:Gi(this.rewrite,new URL(e.pathname,this.origin)).pathname,search:this.options.parseSearch(e.search),hash:e.hash.slice(1)}}let r=n._fromLocation||this._pendingLocation||this.latestLocation,i,a=()=>(t=!0,r),o=()=>(t=!0,i??=this.matchRoutesLightweight(r)),s=n.to?`${n.to}`:`.`,c=ne(s[0]===`/`?``:n.unsafeRelative===`path`?a().pathname:n.from??o()[1],s,this.options.trailingSlash,this.resolvePathCache),l=this.routesByPath[ie(c)],u=c.includes(`$`),d;if(l)d=l._branch??=Li(l);else if(u)d=[];else{let[e,t,n]=this.getMatchedRoutes(c);d=e,this.options.notFoundRoute&&(!n||n.path!==`/`&&t[`**`])&&(d=[...d,this.options.notFoundRoute])}let f=u?l?._interpolation??Di(!1,{fullPath:c},0):void 0,p;for(let e of d){let t=e.options.params?.stringify??e.options.stringifyParams;if(t){let e=o()[3];if(p??=ga(n.params,e),!_e(p))break;p===e&&(p=Object.assign(ae(),p));try{Object.assign(p,t(p))}catch{}}}p??=ga(n.params,_a(n.params,f)?o()[3]:va);let m=e.leaveParams?c:Qi(oe(f?le(c,f,p,this.pathParamsDecoder):c)),h=ya(d,e._includeValidateSearch),g=()=>{let t=o()[2];if(e._includeValidateSearch&&this.options.search?.strict){let e={};d.forEach(n=>{if(n.options.validateSearch)try{Object.assign(e,ha(n.options.validateSearch,{...e,...t}))}catch{}}),t=e}return t},_=h.length?ba(h,g(),n):n.search===!0?g():typeof n.search==`function`?n.search(g()):n.search||va,v=this.options.stringifySearch(_),y=n.hash===!0?a().hash:typeof n.hash==`function`?n.hash(a().hash):n.hash||void 0,b=y?`#${y}`:``,x=n.state?n.state===!0?a().state:typeof n.state==`function`?n.state(a().state):n.state:va,S=`${m}${v}${b}`,C,w,T=!1;if(this.rewrite){let e=new URL(S,this.origin),t=e.origin,n=Ki(this.rewrite,e);C=R(e),aa(n,t)?(w=n.href,T=!0):w=Qi(R(n))}else C=de(S),w=C;return{publicHref:w,href:C,pathname:m,search:_,searchStr:v,state:x,hash:y??``,external:T,unmaskOnReload:n.unmaskOnReload}},r=n(e);if(e.mask)r.maskedLocation=n({from:e.from,...e.mask});else if(this.options.routeMasks){let t=ji(r.pathname,this.processedTree);if(t){let i=Object.assign(ae(),t.rawParams),{from:a,params:o,...s}=t.route,c=ga(o,i);r.maskedLocation=n({from:e.from,...s,params:c})}}return!t&&e._fromLocation&&!r.maskedLocation&&this.staticLocations.set(e,r),r},this.commitLocation=async({viewTransition:e,ignoreBlocker:t,...n})=>{let r=n.maskedLocation??n;if(r.external)return fa(this,r.publicHref,{replace:n.replace,ignoreBlocker:t});let i,a=ie(this.latestLocation.href)===ie(n.href)&&me(ca(n.state),ca(this.latestLocation.state)),o=this._commitPromise,s,c=new Promise(e=>{s=e});if(c.resolve=()=>{s(),o?.resolve()},this._commitPromise=c,a)this.load();else{let{maskedLocation:r,hashScrollIntoView:a,...o}=n;r&&(o={...r,state:{...r.state,__tempKey:void 0,__tempLocation:{...o,search:o.searchStr,state:{...o.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(o.unmaskOnReload??this.options.unmaskOnReload??!1)&&(o.state.__tempKey=this.tempLocationKey)),o.state={...o.state,__hashScrollIntoViewOptions:a??this.options.defaultHashScrollIntoView??!0},this.shouldViewTransition=e,i=n.replace?`REPLACE`:`PUSH`,this.history[i===`REPLACE`?`replace`:`push`](o.publicHref,o.state,{ignoreBlocker:t}),this.history.subscribers.size||this.load({action:{type:i}})}return this._scroll.next=n.resetScroll??!0,this._commitPromise},this.buildAndCommitLocation=({replace:e,resetScroll:t,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,...a}={})=>{let o=this.buildLocation({...a,_includeValidateSearch:!0});this._pendingLocation=o;let s=this.commitLocation({...o,viewTransition:r,replace:e,resetScroll:t,hashScrollIntoView:n,ignoreBlocker:i});return queueMicrotask(()=>{this._pendingLocation===o&&(this._pendingLocation=void 0)}),s},this.navigate=async({to:e,reloadDocument:t,href:n,publicHref:r,...i})=>{let a=n?te(n):void 0;if(a||t){if(e!==void 0||!n){let t=this.buildLocation({to:e,...i}),a=t.maskedLocation??t;n??=a.publicHref,r??=a.publicHref}let t=!a&&r?r:n;return fa(this,t,i)}return this.buildAndCommitLocation({...i,href:n,to:e,_isNavigate:!0})},this.load=async e=>{this.updateLatestLocation(),e?.action&&(this._scroll.hash=e.action.type===`PUSH`||e.action.type===`REPLACE`),await mo(this,e)},this.startViewTransition=e=>{let t=this.shouldViewTransition??this.options.defaultViewTransition;if(this.shouldViewTransition=void 0,t&&typeof document.startViewTransition==`function`){let n;if(typeof t==`object`&&window.CSS?.supports?.(`selector(:active-view-transition-type(a))`)){let r=this.latestLocation,i=this.stores.resolvedLocation.get(),a=typeof t.types==`function`?t.types(sa(r,i)):t.types;if(a===!1)return e();n={update:e,types:a}}else n=e;return document.startViewTransition(n).updateCallbackDone}return e()},this.invalidate=e=>{let t=this._committed,n=e?.filter,r=this._preloads,i=new Set,a=e=>{(!n||n(e))&&i.add(e.id)};t.forEach(a),this._cache.forEach(a),r?.forEach(e=>e.forEach(a)),this._tx?.[3].forEach(a);let o=[];for(let[e,t]of r??[])t.some(e=>i.has(e.id))&&(r.delete(e),o.push(e));let s=t=>{if(i.has(t.id)){let n=this.routesById[t.routeId],r={...t,invalid:!0,...(e?.forcePending||t.status===`error`||t.status===`notFound`)&&oa(n)?{status:`pending`,error:void 0}:void 0};return t._flight=void 0,r}return t};this._committed=t.map(s);for(let[t,n]of this._cache)i.has(t)&&(n.invalid=!0,e?.forcePending&&(n.status=`pending`));for(let e of i)this._flights?.delete(e);for(let e of o)e.abort();return this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.resolveRedirect=e=>{let t=e.options,n=e.headers.get(`Location`)||t.href;if(!n){let e=this.buildLocation(t);n=(e.maskedLocation??e).publicHref||`/`}let r;if(j.test(n)||(r=te(n))&&!this.protocolAllowlist.has(r))throw Error(`Redirect blocked: unsafe protocol`);if(r===`http:`||r===`https:`){let e=new URL(n);e.pathname.startsWith(`//`)?n=e.href:aa(e,this.origin)||(n=R(e),r=void 0)}return r&&(t.reloadDocument=!0),t.href=n,e.headers.set(`Location`,n),e},this.clearCache=e=>{let t=this._cache,n=this._preloads,r=e?.filter,i=[],a=[];for(let[e,n]of t)(!r||r(n))&&(a.push(e),i.push(n));let o=[];for(let[e,t]of n??[])(!r||t.some(r))&&(o.push(e),i.push(...t));for(let e of a)t.delete(e);for(let e of o)n.delete(e);for(let e of i){let t=e._flight;e._flight=void 0,t&&!--t[2]&&(this._flights?.get(e.id)===t&&this._flights.delete(e.id),o.push(t[1]))}for(let e of o)e.abort()},this.loadRouteChunk=Ta,this.preloadRoute=e=>ho(this,e),this.matchRoute=(e,t)=>{let n={...e,to:e.to?ne(e.from||``,e.to,this.options.trailingSlash,this.resolvePathCache):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n),i=this.stores.status.get()===`pending`;if(t?.pending&&!i)return!1;let a=t?.pending??!i?this.latestLocation:this.stores.resolvedLocation.get()||this.stores.location.get(),o=Mi(r.pathname,t?.caseSensitive??!1,t?.fuzzy??!1,a.pathname,this.processedTree);return!o||e.params&&!me(o.rawParams,e.params,!0)?!1:t?.includeSearch??!0?me(a.search,r.search,!0)?o.rawParams:!1:o.rawParams},this.getStoreConfig=t,e.pathParamsAllowedCharacters?.length&&(this.pathParamsDecoder=he(e.pathParamsAllowedCharacters)),this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...e,caseSensitive:e.caseSensitive??!1,notFoundMode:e.notFoundMode??`fuzzy`,stringifySearch:e.stringifySearch??yi,parseSearch:e.parseSearch??vi,protocolAllowlist:e.protocolAllowlist??ue}),self.__TSR_ROUTER__=this}isShell(){return!!this.options.isShell}get state(){return this.stores.__store.get()}setRoutes(e){Object.assign(this,e),this.lightweightCache=new WeakMap,this.staticLocations=new WeakMap;let t=this.options.notFoundRoute;t&&(t.init(99999999999),this.routesById[t.id]!==t&&(t._interpolation=Di(!1,t,0)),this.routesById[t.id]=t)}matchRoutesInternal(e,t){let[n,r,i]=this.getMatchedRoutes(e.pathname),a=n,o=!1;(i?i.path!==`/`&&r[`**`]:ie(e.pathname))&&(this.options.notFoundRoute?a=[...a,this.options.notFoundRoute]:o=!0);let s=o?xa(this.options.notFoundMode,a):void 0,c=Array(a.length),l=this._committed,u=(e,t)=>{let n=l[t];return n?.routeId===e.id?n:e===this.options.notFoundRoute?l.find(t=>t.routeId===e.id):void 0},d;for(let n=0;ntypeof t!=`string`&&!M.call(e,t[1]))}var va=Object.freeze({});function ya(e,t){let n=[];for(let r=0;r{let n=t(i.preSearchFilters?i.preSearchFilters.reduce((e,t)=>t(e),e):e);return i.postSearchFilters?i.postSearchFilters.reduce((e,t)=>t(e),n):n});let a=i.validateSearch;t&&a&&n.push(({search:e,next:t,meta:n})=>{let r=t(e);try{let e=ha(a,r);if(n&&e)for(let t in e)t in r||(n.defaulted||=new Map).set(t,e[t]);return{...r,...e}}catch{}return r})}return n}function ba(e,t,n){let r=(t,i,a)=>{if(t>=e.length){if(!n.search)return{};if(n.search===!0)return i;let e=se(n.search,i);return a&&(a.explicit=e),e}return e[t]({search:i,next:(e,n)=>{if(n){let n=a||{};return{search:r(t+1,e,n),meta:n}}return r(t+1,e,a)},meta:a})};return r(0,t)}function xa(e,t){if(e!==`root`){let e;for(let n=t.length-1;n>=0;n--){let r=t[n];if(r.options.notFoundComponent)return r.id;e||=r.children&&r.id}if(e)return e}return Te}function Sa(e,t){let n=e.options.params?.parse??e.options.parseParams;n&&Object.assign(t,n(t))}function Ca(e,t){return e.options[t]?.preload?.()}function wa(e,t){let n=Ca(e,`component`),r=Ca(e,`pendingComponent`);return t&&(r?r=r.then(t):t()),n&&r?Promise.all([n,r]).then(()=>{}):n??r}function Ta(e,t,n){let r=()=>t===!1?void 0:t?Ca(e,t):wa(e,n),i=e._lazy;if(i)return i===!0?r():i.then(r);if(!e.lazyFn)return r();let a=e.lazyFn().then(t=>{{let{id:n,...r}=t.options;Object.assign(e.options,r),e._lazy=!0}},t=>{throw e._lazy=void 0,t});return e._lazy=a,a.then(r)}function Ea(e){let t=e.findIndex(e=>e.status!==`success`||e._notFound)+1;return t&&t{let i=()=>r(t);t.addEventListener(`abort`,i,{once:!0}),Promise.resolve(e).then(n,r).then(()=>t.removeEventListener(`abort`,i))})}function Fa(e,t){return e.routesById[t.routeId]}function Ia(e,t,n){return De(e)?[ja,e]:xe(e)?(e.routeId||=n,[Aa,e]):t?(typeof e?.then==`function`&&(e=Error(`A Promise was thrown`,{cause:e})),[ka,e]):[Oa,e]}function La(e,t){let n=Ia(t,!0,e.id);if(n[0]!==ka)return n;try{e.options.onError?.(n[1])}catch(t){n=Ia(t,!0,e.id)}return n}function Ra(e,t,n,r,i){return i[0].signal.aborted?Ma:eo(e,t,n,La(n,r),i)}async function za(e,t,n,r,i,a){let[o,s]=t,c=n[0].signal,l=!!n[3];for(let i=n[6]??0;ie.navigate({...t,_fromLocation:o}),buildLocation:e.buildLocation,cause:l?`preload`:r.cause,abortController:n[0],preload:l,matches:s,routeId:u.id};try{let e=r._ctx||=u.options.context?u.options.context({...f,deps:r.loaderDeps,context:d})||{}:void 0;r.context={...d,...e}}catch(a){return Va(e,r),[i,Ra(e,t,u,a,n)]}if(c.aborted)return[i,Ma];let p=r.paramsError??r.searchError;if(p!==void 0)return Va(e,r),[i,Ra(e,t,u,p,n)];let m=u.options.beforeLoad;if(!m)continue;let h=r.status;i>=a&&(r.status=`pending`,n[7]?.());try{Wa(e,r,`beforeLoad`,n[0]);let a=m({...f,search:r.search,context:r.context,...e.options.additionalContext}),o=await(typeof a?.then==`function`?Pa(a,c):a);if(c.aborted)return[i,Ma];let s=eo(e,t,u,Ia(o,!1,u.id),n);if(s[0]!==Oa)return Va(e,r),[i,s];r.context={...r.context,...o}}catch(a){return Va(e,r),[i,Ra(e,t,u,a,n)]}finally{r.status=h,Wa(e,r,!1,n[0])}}i()}function Ba(e,t,n){if(!(!n||--n[2])){if(e._flights?.get(t.id)===n){let n=e._tx;if(n&&!n[0].signal.aborted&&!n[3].includes(t)&&n[3].some(e=>e.id===t.id)&&n[3].some(e=>e.isFetching===`beforeLoad`))return;e._flights.delete(t.id)}return n[1]}}function Va(e,t){let n=t._flight;t._flight=void 0,Ba(e,t,n)?.abort()}function Ha(e,t,n,r){let i=[];for(let a of t)if(!n?.includes(a)){let t=a._flight;if(a._flight=void 0,r&&t?.[2]===1&&e._flights?.get(a.id)===t&&n?.some(e=>e.id===a.id))t[2]=0;else{let n=Ba(e,a,t);n&&i.push(n)}}for(let e of i)e.abort()}function Ua(e){for(let t of e){let e=t._flight;e&&e[2]++}}function Wa(e,t,n,r){if(t.isFetching=n,r&&e._tx?.[0]!==r)return;let i=e.stores.byRoute.get(t.routeId),a=i?.get();a?.id===t.id&&i.set({...a,isFetching:n})}function Ga(e,t,n,r,i,a,o){let s=t[0];return{params:n.params,location:s,navigate:t=>e.navigate({...t,_fromLocation:s}),cause:o?`preload`:n.cause,abortController:i,preload:o,deps:n.loaderDeps,parentMatchPromise:a,context:n.context,route:r,...e.options.additionalContext}}async function Ka(e,t,n,r,i,a,o){let s=o[0],c=s.signal;if(c.aborted)return Ma;if(!i)return[Oa,void 0];let l=n._flight;Wa(e,n,`loader`,s);try{if(!l){let s=new AbortController;l=[Promise.resolve().then(()=>i(Ga(e,t,n,r,s,a,!!o[3]))).then(e=>Ia(e,!1,r.id),e=>Ia(e,!0,r.id)).then(t=>(t[0]!==Oa&&e._flights?.get(n.id)===l&&(e._flights.delete(n.id),l[2]||s.abort()),t[0]===ka&&l[2]?La(r,t[1]):t)),s,1],(e._flights??=new Map).set(n.id,l)}return n._flight=l,n.abortController=l[1],eo(e,t,r,await Pa(l[0],c),o)}catch(t){if(t!==c||!c.aborted)throw t;return Va(e,n),Ma}finally{Wa(e,n,!1,s)}}function qa(e,t,n){t[0]!==ja&&(e.status=`success`,e.error=void 0,t[0]===Oa?(e.loaderData=t[1],e.invalid=!1,e.updatedAt=Date.now(),e.preload=n):e.invalid=!0)}function Ja(e,t,n){let r=e._cache.get(t.id);if(r!==n||e._committed.some(e=>e.id===t.id&&e._flight===t._flight))return;let i={...t,_notFound:void 0,context:{}};i._flight&&i._flight[2]++,e._cache.set(t.id,i),r&&Va(e,r)}function Ya(e,t){return t[0]===ka||t[0]===Aa?{...e,status:t[0]===ka?`error`:`notFound`,error:t[1],_flight:void 0}:e}function Xa(e,t,n,r,i,a,o){let s=t[1][n],c=Fa(e,s),l=!!a[3],u=e._cache.get(s.id),d,f=!1,p;try{if(s.status===`success`&&(d=c.options.shouldReload,typeof d==`function`&&(d=d(Ga(e,t,s,c,a[0],i,l))),a[0].signal.aborted&&(p=Ma)),!p){if(s.status!==`success`)f=!0;else{let t=l||s.preload?c.options.preloadStaleTime??e.options.defaultPreloadStaleTime??3e4:c.options.staleTime??e.options.defaultStaleTime??0;f=!!(s.invalid||d||d===void 0&&Date.now()-s.updatedAt>=t&&(a[5]||s.cause===`enter`||a[2].some(e=>e.routeId===s.routeId&&e.id!==s.id)))}}}catch(n){s.invalid=!0,Va(e,s),p=Ra(e,t,c,n,a)}let m=c.options.loader,h=typeof m==`function`,g=h?m:m?.handler,_=!l||c.options.preload!==!1,v=_&&m?e._flights?.get(s.id):void 0;v===s._flight||p?v=void 0:v&&!f&&!l&&d===void 0?f=!0:f||(v=void 0);let y=!(!m||!f||s.status!==`success`||l||a[4]||((h?void 0:m.staleReloadMode)??e.options.defaultStaleReloadMode)===`blocking`),b=f&&_,x=b&&!y&&(s.status!==`success`||!!m),S=n>=o?a[7]:void 0,C=c.lazyFn&&c._lazy!==!0?S:void 0;if(b&&!m&&(s.invalid=!1,s.updatedAt=Date.now()),v&&v[2]++,x){let t=s._flight;s._flight=v,Ba(e,s,t)?.abort(),n>=o&&(s.status=`pending`),S?.()}b||(s.isFetching=!1);let w=!p&&x?Ka(e,t,s,c,g,i,a).then(t=>(qa(s,t,l),t[0]===Oa&&(m&&!a[0].signal.aborted&&Ja(e,s,u),n>=o&&(s.status=`pending`)),t)):Promise.resolve(p??[Oa,s.loaderData]),T=(async()=>{try{let e=Ta(c,void 0,C);e&&await Pa(e,a[0].signal)}catch(r){if(!t[1].some((e,t)=>t<=n&&(e.status===`error`||e.status===`notFound`||e._notFound)))return[n,Ra(e,t,c,r,a)]}let r=await w;x&&r[0]===Oa&&s.status===`pending`&&!a[0].signal.aborted&&(s.status=`success`,S?.())})();if(r.push([n,w,T]),!y)return w.then(e=>Ya(s,e));let E={...s,status:`pending`,preload:!1,_flight:v};s.invalid=!1,s.isFetching=`loader`;let D=Ka(e,t,E,c,g,i,a).then(e=>(s.isFetching=!1,qa(E,e,!1),e));return(t[2]??=[]).push([n,D,T,E]),D.then(e=>Ya(E,e))}async function Za(e,t,n,r,i=0){let a=n?.[1][1],o=a?.routeId?t.findIndex(e=>e.routeId===a.routeId):n?.[0]??t.length-1;o<0&&(o=0);for(let n=o;n>=0;n--){let i=Fa(e,t[n]);try{let e=Ta(i,!1);e&&await Pa(e,r)}catch(e){if(e===r&&r.aborted)throw e}if(i.options.notFoundComponent)return n}return a?.routeId?o:i}function Qa(e,t){t[2]&&=(Ha(e,t[2].map(e=>e[3])),void 0)}async function $a(e,t,n,r){let i;try{await Promise.all(e.map(e=>e[1].then(async t=>{let a=e[0];if(!(r&&a>=await r)){if(t[0]>=ja)throw[a,t];!i&&t[0]!==Oa&&(i=[a,t],await Promise.all((n??[]).map(e=>{if(!(e[0]<=a))return e[1].then(t=>{if(t[0]===ja)throw[e[0],t]})})))}})))}catch(e){return e}return t??i}function eo(e,t,n,r,i,a){for(;r[0]===ja;){let o=r[1],s=o.options;try{if((s.href||o.headers.has(`Location`))&&(e.resolveRedirect(o),s.reloadDocument)||(s.reloadDocument?i[3]:i[1]>=20))return r;let n=e.buildLocation({...s,_fromLocation:t[0],_includeValidateSearch:!0}),a=n.maskedLocation??n;if(a.external){let t=o.clone();return t.options={...s},t.headers.set(`Location`,a.publicHref),e.resolveRedirect(t),i[3]?[ja,t]:[ja,t,a]}return[ja,o,n]}catch(e){r=a?[ka,e]:La(n,e),a=!0}}return r}async function to(e,t,n,r,i,a){let o=t[1],s=await i,c=!1,l=o.findIndex(e=>e._notFound),u=t=>t[1][0]===Aa?Za(e,o,t,r.signal):t[0],d=l<0?o.length:l;if((s?.[1][0]??0)>=ja)d=0;else if(s){d=s[2]??=await u(s);for(let e of n){if(e[0]>=d)break;let t=await e[1];if(t[0]!==Oa&&t[0]=d)break;let t=await e[2];if(t){s=t;break}}if((s?.[1][0]??0)>=ja){let n=s[1];if(n[0]!==ja||n[1].options.reloadDocument||n[2])return Qa(e,t),n;c=!0,s=[0,[ka,Error(`Too many redirects`)]]}let f=s?s[2]??await u(s):l;if(f>=0){let i=s?.[1],l=i?.[0],u=o[f],d=i?.[1],p=()=>{i&&(u._notFound=void 0,l===ka?u.status=`error`:(d.routeId=u.routeId,u.routeId===e.routeTree.id?(u.status=`success`,u._notFound=!0):u.status=`notFound`),u.error=d,u.isFetching=!1)};p(),i||a?.();let m=Fa(e,u);try{await Pa(i?Promise.resolve().then(()=>Ta(m,l===ka?`errorComponent`:`notFoundComponent`)):Promise.all([Ta(m),Ta(m,`notFoundComponent`)]),r.signal)}catch(n){if(n===r.signal&&r.signal.aborted)return Qa(e,t),Ma}i?c&&(r.abort(),await Promise.all([...n.map(e=>e[1]),...n.map(e=>e[2]),...(t[2]??[]).map(e=>e[1])]),Qa(e,t),Ha(e,o),p()):u.status=`success`}return t}async function no(e,t,n,r=0,i=t[1].length){let a=t[1];for(let t=r;te._notFound);if(e.options.notFoundMode!==`root`&&s>=0){let t=await Za(e,n,void 0,a,s);n[s]._notFound=void 0,n[t]._notFound=!0,s=t}let c=s<0?n.length:s+1,l=0;for(;l{for(let t=d;t=ja&&(c=0);p()}if(!a.aborted&&!r[3]){let t=[];for(let[n,r]of e._flights??[])r[2]||(e._flights.delete(n),t.push(r[1]));for(let e of t)e.abort()}let h=to(e,i,u,r[0],$a(u,m,i[2]),r[7]);i[2]?.length&&(i[3]=$a(i[2],void 0,void 0,h.then(e=>Na(e)?0:Ea(n).length,()=>0))),o=await h}catch(t){if(Qa(e,i),t===a&&a.aborted)return Ma;throw t}return Na(o)?o:no(e,o,a,r[6]===n.length?r[6]:0)}function io(e,t){if(e._tx!==t)return;let n=t[3],r=e.stores.matches.get(),i=e._pending;for(let a=0;a0){i[3]=setTimeout(()=>io(e,t),n);return}i[2]=0}let m=n.map(e=>({...e,_flight:void 0}));m[a].status=`pending`;let h=i[4]=e.startTransition(()=>e.stores.setMatches(m),m).then(t=>(t&&e._pending===i&&i[4]===h&&!i[2]&&(i[2]=Date.now()+f),t));return}}function ao(e,t){let n=e._pending;(e._tx===t||!e._tx?.[3].some(e=>e.id===n?.[1]))&&(clearTimeout(n?.[3]),e._pending=void 0)}async function oo(e,t){let n=e._pending;if(!n)return;clearTimeout(n[3]);let r=n[2]-Date.now();if(!n[4]||r<=0||!Ea(t[3]).some(e=>e.id===n[1]))return;let i;try{await Pa(new Promise(e=>{i=setTimeout(e,r)}),t[0].signal)}catch{}clearTimeout(i)}function so(e,t){e._committed=t,e.stores.setMatches(t)}function co(e,t,n,r){let i=e._committed,a=e._lifecycleEnd,o=e._cache;for(let e of n)e.preload=!1,r&&(e._assetEnd=void 0);let s=Ea(n).length,c=new Map;{let t=Date.now(),r=new Set;for(let e=0;e=(n.preload?i.options.preloadGcTime??e.options.defaultPreloadGcTime??3e5:i.options.gcTime??e.options.defaultGcTime??3e5)||c.set(n.id,o.get(n.id)===n?n:{...n,_flight:void 0,isFetching:!1,context:{}})}}t[3]=[],e._cache=c;let l=e._lifecycleEnd=la(n);so(e,n),Ha(e,[...o.values(),...i].filter(e=>e._flight&&c.get(e.id)!==e),n),ua(e,i,n,a,l,t)}async function lo(e,t){let n=e._tx;for(;n&&n!==t;)t=n,await n[5],n=e._tx}function uo(e,t,n){let r=n[1].options,i=n[2];if(!i)return e.navigate({...r,replace:!0,ignoreBlocker:!0});if(r.reloadDocument)return e.navigate({href:(i.maskedLocation??i).publicHref,reloadDocument:!0,replace:!0,ignoreBlocker:!0});i._redirects=t[1]+1,e._pendingLocation=i;let a=e.commitLocation({...i,viewTransition:r.viewTransition,replace:!0,resetScroll:r.resetScroll,hashScrollIntoView:r.hashScrollIntoView,ignoreBlocker:!0});return queueMicrotask(()=>{e._pendingLocation===i&&(e._pendingLocation=void 0)}),a}async function fo(e,t,n,r,i){let a=n.map(e=>({...e}));Ua(a);for(let t of r)Va(e,a[t[0]]),a[t[0]]=t[3];let o=[t[2],a],s;try{s=await to(e,o,r,t[0],i)}catch(t){throw Ha(e,a),t}if(Na(s)){Ha(e,a),s[0]===ja&&e._tx===t&&e._committed===n&&await uo(e,t,s);return}if(await no(e,s,t[0].signal),e._tx!==t||e._committed!==n){Ha(e,a);return}for(let t of a){let n=e._cache.get(t.id);n?._flight&&n._flight===t._flight&&(e._cache.delete(t.id),Va(e,n))}so(e,a),Ha(e,n,a)}async function po(e,t,n,r,i,a){let o=await ro(e,t[2],t[3],[t[0],t[1],e._committed,void 0,i,n,a,r]);if(Na(o)){let n=o[0]===ja&&e._tx===t;if((!n||o[1].options.reloadDocument)&&ao(e,t),Ha(e,t[3]),t[3]=[],!n)return;if(e._tx!==t){ao(e,t);return}await uo(e,t,o);return}let s=o[1];if(e._tx===t&&await oo(e,t),e._tx!==t){ao(e,t),Ha(e,s),Qa(e,o);return}let c=t[2],l=sa(c,e.stores.resolvedLocation.get()),u=o[2];await e.startViewTransition(async()=>{if(e._tx===t&&await oo(e,t),e._tx!==t){ao(e,t),Ha(e,s),Qa(e,o);return}let n=await e.startTransition(()=>{ao(e,t),co(e,t,s,a),e._tx===t&&(e.emit({type:`onLoad`,...l}),e._tx===t&&e.emit({type:`onBeforeRouteMount`,...l}))},s);if(e._tx!==t){Qa(e,o);return}u?.length&&fo(e,t,s,u,o[3]).catch(console.error),e.batch(()=>{e.stores.resolvedLocation.set(c),e.stores.status.set(`idle`),e._tx===t&&e.emit({type:`onResolved`,...l}),n&&e._tx===t&&e.emit({type:`onRendered`,...l})}),e._tx===t&&(e._commitPromise?.resolve(),e._commitPromise=void 0)})}async function mo(e,t){let n=e._tx,r=e.stores.resolvedLocation.get(),i=r??e.stores.location.get(),a=e.latestLocation,o=e._pendingLocation,s=o?.href===a.href?o._redirects??0:0,c=e._handoff,l=c?.[0](),u=new AbortController,d=e._preflight;if(e._preflight=u,l||c?.[1](),d?.abort(),!u.signal.aborted){let t=sa(a,r);e.emit({type:`onBeforeNavigate`,...t}),u.signal.aborted||e.emit({type:`onBeforeLoad`,...t})}if(u.signal.aborted){await lo(e,n);return}let f=i.href===a.href,p=u,m=e.matchRoutes(a,{_controller:u});Ua(m);let h=l?c[1](m):void 0;if(h?p=l:l?.abort(),u.signal.aborted){Ha(e,m),await lo(e,n);return}e._preflight=void 0;let g,_=()=>po(e,y,f,()=>io(e,y),t?.sync,h),v=t?.sync?new Promise(e=>g=e):Promise.resolve().then(_),y=[p,s,a,m,Date.now(),v.then(()=>lo(e,y))];if(e._tx=y,n){for(let t of e.stores.matches.get()){if(e._tx!==y)break;t.isFetching&&Wa(e,t,!1)}n[0].abort(),Ha(e,n[3],y[3],!0)}if(e._tx!==y){Ha(e,y[3]),y[3]=[],g?.(),await lo(e,y);return}e.batch(()=>{e.stores.status.set(`pending`),e.stores.location.set(a)}),(h||!e._committed.length&&m[0]?.status!==`success`&&!m.some(e=>e._notFound))&&io(e,y),g?.(_()),await y[5]}async function ho(e,t){let n=e.buildLocation(t);for(let t=0;;t++){let r=e._committed,i=new AbortController,a,o,s;try{try{a=e.matchRoutes(n,{_controller:i}),Ua(a),o=(e._preloads??=new Map).set(i,a),s=await ro(e,n,a,[i,t,r,!0])}finally{o&&(o=o.delete(i),Ha(e,a)),i.abort()}if(!Na(s))return s[1];if(!o||s.length<3)return;n=s[2]}catch(e){xe(e)||console.error(e);return}}}function go(e,t){if(e)return typeof e==`string`?e:e[t]}function _o(e){return e?.scriptFormat??`module`}function vo(e,t,n){let r=yo(t),i=go(n,`script`)??r.crossOrigin;return{..._o(e)===`iife`?{rel:`preload`,as:`script`}:{rel:`modulepreload`},href:r.href,...i?{crossOrigin:i}:{}}}function yo(e){return typeof e==`string`?{href:e,crossOrigin:void 0}:e}function bo(e,t){if(t.length===0)return;if(t.length===1){e.push(t[0]);return}let n=new Set;for(let r of t){let t=JSON.stringify(r);n.has(t)||(n.add(t),e.push(r))}}function xo(e){return typeof e==`string`?{href:e,crossOrigin:void 0}:e}function So({update:e,notify:t,unwatched:n}){return{link:r,unlink:i,propagate:a,checkDirty:o,shallowPropagate:s};function r(e,t,n){let r=t.depsTail;if(r!==void 0&&r.dep===e)return;let i=r===void 0?t.deps:r.nextDep;if(i!==void 0&&i.dep===e){i.version=n,t.depsTail=i;return}let a=e.subsTail;if(a!==void 0&&a.version===n&&a.sub===t)return;let o=t.depsTail=e.subsTail={version:n,dep:e,sub:t,prevDep:r,nextDep:i,prevSub:a,nextSub:void 0};i!==void 0&&(i.prevDep=o),r===void 0?t.deps=o:r.nextDep=o,a===void 0?e.subs=o:a.nextSub=o}function i(e,t=e.sub){let r=e.dep,i=e.prevDep,a=e.nextDep,o=e.nextSub,s=e.prevSub;return a===void 0?t.depsTail=i:a.prevDep=i,i===void 0?t.deps=a:i.nextDep=a,o===void 0?r.subsTail=s:o.prevSub=s,s===void 0?(r.subs=o)===void 0&&n(r):s.nextSub=o,a}function a(e){let n=e.nextSub,r;top:do{let i=e.sub,a=i.flags;if(a&60?a&12?a&4?!(a&48)&&c(e,i)?(i.flags=a|40,a&=1):a=0:i.flags=a&-9|32:a=0:i.flags=a|32,a&2&&t(i),a&1){let t=i.subs;if(t!==void 0){let i=(e=t).nextSub;i!==void 0&&(r={value:n,prev:r},n=i);continue}}if((e=n)!==void 0){n=e.nextSub;continue}for(;r!==void 0;)if(e=r.value,r=r.prev,e!==void 0){n=e.nextSub;continue top}break}while(1)}function o(t,n){let r,i=0,a=!1;top:do{let o=t.dep,c=o.flags;if(n.flags&16)a=!0;else if((c&17)==17){if(e(o)){let e=o.subs;e.nextSub!==void 0&&s(e),a=!0}}else if((c&33)==33){(t.nextSub!==void 0||t.prevSub!==void 0)&&(r={value:t,prev:r}),t=o.deps,n=o,++i;continue}if(!a){let e=t.nextDep;if(e!==void 0){t=e;continue}}for(;i--;){let i=n.subs,o=i.nextSub!==void 0;if(o?(t=r.value,r=r.prev):t=i,a){if(e(n)){o&&s(i),n=t.sub;continue}a=!1}else n.flags&=-33;n=t.sub;let c=t.nextDep;if(c!==void 0){t=c;continue top}}return a}while(1)}function s(e){do{let n=e.sub,r=n.flags;(r&48)==32&&(n.flags=r|16,(r&6)==2&&t(n))}while((e=e.nextSub)!==void 0)}function c(e,t){let n=t.depsTail;for(;n!==void 0;){if(n===e)return!0;n=n.prevDep}return!1}}function Co(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}var wo=[],To=0,{link:Eo,unlink:Do,propagate:Oo,checkDirty:ko,shallowPropagate:Ao}=So({update(e){return e._update()},notify(e){wo[Mo++]=e,e.flags&=-3},unwatched(e){e.depsTail!==void 0&&(e.depsTail=void 0,e.flags=17,Io(e))}}),jo=0,Mo=0,No,Po=0;function Fo(e){try{++Po,e()}finally{--Po||Lo()}}function Io(e){let t=e.depsTail,n=t===void 0?e.deps:t.nextDep;for(;n!==void 0;)n=Do(n,e)}function Lo(){if(!(Po>0)){for(;jo{i.get(),n.current?t.next?.(i._snapshot):n.current=!0});return{unsubscribe:()=>{r.stop()}}},_update(e){let a=No,o=t?.compare??Object.is;if(n)No=i,++To,i.depsTail=void 0;else if(e===void 0)return!1;n&&(i.flags=5);try{let t=i._snapshot,a=typeof e==`function`?e(t):e===void 0&&n?r(t):e;return t===void 0||!o(t,a)?(i._snapshot=a,!0):!1}finally{No=a,n&&(i.flags&=-5),Io(i)}}};return n?(i.flags=17,i.get=function(){let e=i.flags;if(e&16||e&32&&ko(i.deps,i)){if(i._update()){let e=i.subs;e!==void 0&&Ao(e)}}else e&32&&(i.flags=e&-33);return No!==void 0&&Eo(i,No,To),i._snapshot}):i.set=function(e){if(i._update(e)){let e=i.subs;e!==void 0&&(Oo(e),Ao(e),Lo())}},i}function zo(e){let t=()=>{let t=No;No=n,++To,n.depsTail=void 0,n.flags=6;try{return e()}finally{No=t,n.flags&=-5,Io(n)}},n={deps:void 0,depsTail:void 0,subs:void 0,subsTail:void 0,flags:6,notify(){let e=this.flags;e&16||e&32&&ko(this.deps,this)?t():this.flags=2},stop(){this.flags=0,this.depsTail=void 0,Io(this)}};return t(),n}var z=n(r(),1);function Bo(e,t){let n=e[1];e.length=0,n?.(t)}function Vo({t:e}){let t=ke(),n=t._rendered??=[];return t.startTransition=(r,i)=>new Promise(a=>{Bo(n,!1),n.push(i,a),e(t),z.startTransition(r)}),T(()=>{let e=t.history.subscribe(t.load);t.updateLatestLocation();let r=t.latestLocation,i=t.buildLocation({to:r.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});if(ie(r.publicHref)!==ie(i.publicHref))return t.commitLocation({...i,replace:!0,ignoreBlocker:!0}),e;let a=t.stores.resolvedLocation.get();return a?.href===r.href&&a.state.__TSR_key===r.state.__TSR_key?n.push(t.stores.matches.get(),e=>{e&&t.emit({type:`onRendered`,...sa(a,a)})}):t._tx||t.load({sync:!0}).catch(console.error),e},[t,t.history]),null}var B=t();function V(){let e=ke(),t=e.routesById[Te],n=Se(e,t),r=e.ssr?ye:z.Suspense,i=(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(Vo,{t:z.useState()[1]}),(0,B.jsx)(r,{fallback:n,children:(0,B.jsx)(Ho,{})})]});return e.options.InnerWrap?(0,B.jsx)(e.options.InnerWrap,{children:i}):i}function Ho(){let e=ke(),t=e._rendered,n=je(e.stores.matches,e=>t[0]??e),r=n[0],i=r?.routeId;T(()=>{t[0]===n&&Bo(t,!0)},[t,n]);let a=i?(0,B.jsx)(Ce,{routeId:i}):null;return(0,B.jsx)(we.Provider,{value:i,children:e.options.disableGlobalCatchBoundary?a:(0,B.jsx)(ve,{getResetKey:()=>r,onCatch:void 0,children:a})})}var Uo=e=>({createMutableStore:Ro,createReadonlyStore:Ro,batch:Fo}),Wo=e=>new Go(e),Go=class extends da{constructor(e){super(e,Uo)}};function Ko({router:e,children:t,...n}){_e(n)&&e.update({...e.options,...n,context:{...e.options.context,...n.context}});let r=(0,B.jsx)(Ae.Provider,{value:e,children:t});return e.options.Wrap?(0,B.jsx)(e.options.Wrap,{children:r}):r}function qo({router:e,...t}){return(0,B.jsx)(Ko,{router:e,...t,children:(0,B.jsx)(V,{})})}function Jo(e){let t=ke();return je(t.stores.location,C(e,t))}function Yo(e,t){if(t)for(let[n,r]of Object.entries(t))n!==`suppressHydrationWarning`&&r!==void 0&&r!==!1&&e.setAttribute(n,typeof r==`boolean`?``:String(r))}function Xo(e){let{attrs:t,children:n,nonce:r,preventScriptHoist:i}=e,a=z.useMemo(()=>n===void 0?void 0:{__html:n},[n]);switch(e.tag){case`title`:return(0,B.jsx)(`title`,{...t,suppressHydrationWarning:!0,children:n});case`meta`:return(0,B.jsx)(`meta`,{...t,suppressHydrationWarning:!0});case`link`:return(0,B.jsx)(`link`,{...t,precedence:t?.precedence??(t?.rel===`stylesheet`?`default`:void 0),nonce:r,suppressHydrationWarning:!0});case`style`:return e.inlineCss,(0,B.jsx)(`style`,{...t,dangerouslySetInnerHTML:a,nonce:r});case`script`:return(0,B.jsx)(Zo,{attrs:t,preventScriptHoist:i,children:n});default:return null}}function Zo({attrs:e,children:t,preventScriptHoist:n}){ke();let r=Oe(),i=z.useMemo(()=>t===void 0?void 0:{__html:t},[t]),a=typeof e?.type==`string`&&e.type!==``&&e.type!==`text/javascript`&&e.type!==`module`;if(z.useEffect(()=>{if(!a){if(e?.src){let t=document.createElement(`a`);t.href=e.src;let n=t.href;for(let e of document.scripts)if(e.src===n)return;let r=document.createElement(`script`);return Yo(r,e),document.head.appendChild(r),()=>r.remove()}if(typeof t==`string`){let n=typeof e?.type==`string`?e.type:`text/javascript`,r=typeof e?.nonce==`string`?e.nonce:void 0;for(let e of document.scripts){if(e.hasAttribute(`src`))continue;let i=e.getAttribute(`type`)??`text/javascript`,a=e.getAttribute(`nonce`)??void 0;if(e.textContent===t&&i===n&&a===r)return}let i=document.createElement(`script`);return i.textContent=t,Yo(i,e),document.head.appendChild(i),()=>i.remove()}}},[e,t,a]),a&&typeof t==`string`)return(0,B.jsx)(`script`,{...e,suppressHydrationWarning:!0,dangerouslySetInnerHTML:i});if(!r){if(e?.src)return(0,B.jsx)(`script`,{...e,suppressHydrationWarning:!0});if(typeof t==`string`)return(0,B.jsx)(`script`,{...e,dangerouslySetInnerHTML:i,suppressHydrationWarning:!0})}return null}function Qo(e,t,n,r){n=Da(n);let i=n.map(e=>e.meta).filter(e=>e!==void 0),a=[],o={},s;for(let e=i.length-1;e>=0;e--){let n=i[e];for(let e=n.length-1;e>=0;e--){let r=n[e];if(r){if(r.title)s||={tag:`title`,children:r.title};else if(`script:ld+json`in r)try{let e=JSON.stringify(r[`script:ld+json`]);a.push({tag:`script`,attrs:{type:`application/ld+json`},children:ce(e)})}catch{}else{let e=r.name??r.property;if(e){if(o[e])continue;o[e]=!0}a.push({tag:`meta`,attrs:{...r,nonce:t}})}}}}s&&a.push(s),t&&a.push({tag:`meta`,attrs:{property:`csp-nonce`,content:t}}),a.reverse();let c=n.flatMap(e=>e.links??[]).filter(e=>e!==void 0).map(e=>({tag:`link`,attrs:{...e,nonce:t}})),l=e.ssr?.manifest,u=[];l&&(n.forEach(e=>{(l.routes[e.routeId]?.css)?.forEach(e=>{let n=xo(e);u.push({tag:`link`,attrs:{rel:`stylesheet`,...n,crossOrigin:go(r,`stylesheet`)??n.crossOrigin,suppressHydrationWarning:!0,nonce:t}})})}),l.inlineStyle&&u.push({tag:`style`,attrs:{...l.inlineStyle.attrs,nonce:t},children:l.inlineStyle.children,inlineCss:!0}));let d=[];l&&n.forEach(e=>{l.routes[e.routeId]?.preloads?.forEach(e=>{d.push({tag:`link`,attrs:{...vo(l,e,r),nonce:t}})})});let f=n.flatMap(e=>e.styles??[]).filter(e=>e!==void 0).map(({children:e,...n})=>({tag:`style`,attrs:{...n,nonce:t},children:e})),p=n.flatMap(e=>e.headScripts??[]).filter(e=>e!==void 0).map(({children:e,...n})=>({tag:`script`,attrs:{...n,nonce:t},children:e})),m=[];return bo(m,a),m.push(...d),bo(m,c),m.push(...u),bo(m,f),bo(m,p),m}var $o=e=>{let t=ke(),n=t.options.ssr?.nonce,r=z.useCallback(r=>Qo(t,n,r,e),[e,n,t]);return je(t.stores.matches,r,{compare:me})};function es(e){let t=$o(e.assetCrossOrigin),n=ke().options.ssr?.nonce;return(0,B.jsx)(B.Fragment,{children:t.map(e=>(0,z.createElement)(Xo,{...e,key:`tsr-meta-${JSON.stringify(e)}`,nonce:n}))})}var ts=e((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m){if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&te(x,t.startTime-e)}}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&te(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,ee=k.port2;k.port1.onmessage=D,O=function(){ee.postMessage(null)}}else O=function(){_(D,0)};function te(t,n){C=_(function(){t(e.unstable_now())},n)}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(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,te(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),ns=e(((e,t)=>{t.exports=ts()})),rs=e((e=>{var t=ns(),n=r(),i=Pe();function a(e){var t=`https://react.dev/errors/`+e;if(1be||(e.current=ye[be],ye[be]=null,be--)}function N(e,t){be++,ye[be]=e.current,e.current=t}var Ce=xe(null),we=xe(null),Te=xe(null),Ee=xe(null);function De(e,t){switch(N(Te,t),N(we,e),N(Ce,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?up(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=up(t),e=dp(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}Se(Ce),N(Ce,e)}function Oe(){Se(Ce),Se(we),Se(Te)}function ke(e){var t=e.memoizedState;t!==null&&(sh._currentValue=t.memoizedState,N(Ee,e)),t=Ce.current;var n=dp(t,e.type);t!==n&&(N(we,e),N(Ce,n))}function Ae(e){we.current===e&&(Se(Ce),Se(we)),Ee.current===e&&(Se(Ee),sh._currentValue=ve)}var je,Me;function Ne(e){if(je===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);je=t&&t[1]||``,Me=-1)`:-1`)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{Fe=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?Ne(n):``}function Le(e,t){switch(e.tag){case 26:case 27:case 5:return Ne(e.type);case 16:return Ne(`Lazy`);case 13:return e.child!==t&&t!==null?Ne(`Suspense Fallback`):Ne(`Suspense`);case 19:return Ne(`SuspenseList`);case 0:case 15:return Ie(e.type,!1);case 11:return Ie(e.type.render,!1);case 1:return Ie(e.type,!0);case 31:return Ne(`Activity`);case 30:return Ne(`ViewTransition`);default:return``}}function Re(e){try{var t=``,n=null;do t+=Le(e,n),n=e,e=e.return;while(e);return t}catch(e){return` Error generating stack: `+e.message+` `+e.stack}}var ze=Object.prototype.hasOwnProperty,Be=t.unstable_scheduleCallback,Ve=t.unstable_cancelCallback,He=t.unstable_shouldYield,Ue=t.unstable_requestPaint,We=t.unstable_now,Ge=t.unstable_getCurrentPriorityLevel,Ke=t.unstable_ImmediatePriority,P=t.unstable_UserBlockingPriority,qe=t.unstable_NormalPriority,Je=t.unstable_LowPriority,Ye=t.unstable_IdlePriority,Xe=t.log,F=t.unstable_setDisableYieldValue,Ze=null,Qe=null;function $e(e){if(typeof Xe==`function`&&F(e),Qe&&typeof Qe.setStrictMode==`function`)try{Qe.setStrictMode(Ze,e)}catch{}}var et=Math.clz32?Math.clz32:rt,tt=Math.log,nt=Math.LN2;function rt(e){return e>>>=0,e===0?32:31-(tt(e)/nt|0)|0}var it=256,at=262144,ot=4194304;function st(e){var t=e&42;if(t!==0)return t;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:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&-e;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function ct(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=st(n))):i=st(o):i=st(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=st(n))):i=st(o)):i=st(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function lt(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function ut(e,t){t&8&&(t|=t&32);var n=e.entangledLanes;if(n!==0)for(e=e.entanglements,n&=t;0n;n++)t.push(e);return t}function mt(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function ht(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),kn=!1;if(On)try{var An={};Object.defineProperty(An,"passive",{get:function(){kn=!0}}),window.addEventListener(`test`,An,An),window.removeEventListener(`test`,An,An)}catch{kn=!1}var jn=null,Mn=null,Nn=null;function Pn(){if(Nn)return Nn;var e,t=Mn,n=t.length,r,i=`value`in jn?jn.value:jn.textContent,a=i.length;for(e=0;e=pr),gr=` `,_r=!1;function vr(e,t){switch(e){case`keyup`:return dr.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function yr(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var br=!1;function xr(e,t){switch(e){case`compositionend`:return yr(t);case`keypress`:return t.which===32?(_r=!0,gr):null;case`textInput`:return e=t.data,e===gr&&_r?null:e;default:return null}}function Sr(e,t){if(br)return e===`compositionend`||!fr&&vr(e,t)?(e=Pn(),Nn=Mn=jn=null,br=!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)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=Gr(n)}}function qr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?qr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Jr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Wr(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Wr(e.document)}return t}function Yr(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`)}var Xr=On&&`documentMode`in document&&11>=document.documentMode,Zr=null,Qr=null,$r=null,ei=!1;function ti(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ei||Zr==null||Zr!==Wr(r)||(r=Zr,`selectionStart`in r&&Yr(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}),$r&&Ur($r,r)||($r=r,r=Jf(Qr,`onSelect`),0>=o,i-=o,Zi=1<<32-et(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),R&&$i(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(i,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(i,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(i,h),R&&$i(i,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(i,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return R&&$i(i,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,i,g,v.value,l),v!==null&&(e&&(_=v.alternate,_!==null&&h.delete(_.key===null?g:_.key)),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(i,e)}),R&&$i(i,g),u}function _(e,r,o,c){if(typeof o==`object`&&o&&o.type===k&&o.key===null&&o.props.ref===void 0&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case D:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===k){if(r.tag===7){n(e,r.sibling),c=i(r,o.props.children),lo(c,o),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===ce&&no(l)===r.type){n(e,r.sibling),c=i(r,o.props),lo(c,o),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}o.type===k?(c=Ri(o.props.children,e.mode,c,o.key),lo(c,o),c.return=e,e=c):(c=Li(o.type,o.key,o.props,null,e.mode,c),lo(c,o),c.return=e,e=c)}return s(e);case O:a:{for(l=o.key;r!==null;){if(r.key===l){if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=i(r,o.children||[]),c.return=e,e=c;break a}n(e,r);break}t(e,r),r=r.sibling}c=Vi(o,e.mode,c),c.return=e,e=c}return s(e);case ce:return o=no(o),_(e,r,o,c)}if(_e(o))return h(e,r,o,c);if(he(o)){if(l=he(o),typeof l!=`function`)throw Error(a(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return _(e,r,co(o),c);if(o.$$typeof===re)return _(e,r,Da(e,o),c);uo(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=i(r,o),c.return=e,e=c):(n(e,r),c=zi(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{so=0;var i=_(e,t,n,r);return oo=null,i}catch(t){if(t===Xa||t===Qa)throw t;var a=Ni(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var po=fo(!0),mo=fo(!1),ho=!1;function go(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function _o(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function vo(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function yo(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,K&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Ai(e),ki(e,null,n),t}return Ei(e,r,t,n),Ai(e)}function bo(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,_t(e,n)}}function xo(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var So=!1;function Co(){if(So){var e=Va;if(e!==null)throw e}}function wo(e,t,n,r){So=!1;var i=e.updateQueue;ho=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(J&f)===f:(r&f)===f){f!==0&&f===Ba&&(So=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var m=e,h=s;f=t;var g=n;switch(h.tag){case 1:if(m=h.payload,typeof m==`function`){d=m.call(g,d,f);break a}d=m;break a;case 3:m.flags=m.flags&-65537|128;case 0:if(m=h.payload,f=typeof m==`function`?m.call(g,d,f):m,f==null)break a;d=T({},d,f);break a;case 2:ho=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),sd|=o,e.lanes=o,e.memoizedState=d}}function To(e,t){if(typeof e!=`function`)throw Error(a(191,e));e.call(t)}function Eo(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=j.T,s={};s.types=o===null?null:o.types,j.T=s,dc(e,!1,t,n);try{var c=i(),l=j.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?uc(e,t,Wa(c,r),Ad(e)):uc(e,t,r,Ad(e))}catch(n){uc(e,t,{then:function(){},status:`rejected`,reason:n},Ad())}finally{M.p=a,o!==null&&s.types!==null&&(o.types=s.types),j.T=o}}function ec(){}function tc(e,t,n,r){if(e.tag!==5)throw Error(a(476));var i=nc(e).queue;$s(e,i,t,ve,n===null?ec:function(){return rc(e),n(r)})}function nc(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:ve,baseState:ve,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fs,lastRenderedState:ve},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:fs,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function rc(e){var t=nc(e);t.next===null&&(t=e.alternate.memoizedState),uc(e,t.next.queue,{},Ad())}function ic(){return Ea(sh)}function ac(){return ss().memoizedState}function oc(){return ss().memoizedState}function sc(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=Ad();e=vo(n);var r=yo(t,e,n);r!==null&&(Nd(r,t,n),bo(r,t,n)),t={cache:Na()},e.payload=t;return}t=t.return}}function cc(e,t,n){var r=Ad();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},fc(e)?pc(t,n):(n=Di(e,t,n,r),n!==null&&(Nd(n,e,r),mc(n,t,r)))}function lc(e,t,n){uc(e,t,n,Ad())}function uc(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(fc(e))pc(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,Hr(s,o))return Ei(e,t,i,0),ed===null&&Ti(),!1}catch{}if(n=Di(e,t,i,r),n!==null)return Nd(n,e,r),mc(n,t,r),!0}return!1}function dc(e,t,n,r){if(r={lane:2,revertLane:Pf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},fc(e)){if(t)throw Error(a(479))}else t=Di(e,n,r,2),t!==null&&Nd(t,e,2)}function fc(e){var t=e.alternate;return e===V||t!==null&&t===V}function pc(e,t){Go=Wo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function mc(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,_t(e,n)}}var hc={readContext:Ea,use:us,useCallback:Zo,useContext:Zo,useEffect:Zo,useImperativeHandle:Zo,useLayoutEffect:Zo,useInsertionEffect:Zo,useMemo:Zo,useReducer:Zo,useRef:Zo,useState:Zo,useDebugValue:Zo,useDeferredValue:Zo,useTransition:Zo,useSyncExternalStore:Zo,useId:Zo,useHostTransitionStatus:Zo,useFormState:Zo,useActionState:Zo,useOptimistic:Zo,useMemoCache:Zo,useCacheRefresh:Zo,useEffectEvent:Zo},gc={readContext:Ea,use:us,useCallback:function(e,t){return os().memoizedState=[e,t===void 0?null:t],e},useContext:Ea,useEffect:Bs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),Rs(4194308,4,Ks.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Rs(4194308,4,e,t)},useInsertionEffect:function(e,t){Rs(4,2,e,t)},useMemo:function(e,t){var n=os();t=t===void 0?null:t;var r=e();if(Ko){$e(!0);try{e()}finally{$e(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=os();if(n!==void 0){var i=n(t);if(Ko){$e(!0);try{n(t)}finally{$e(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=cc.bind(null,V,e),[r.memoizedState,e]},useRef:function(e){var t=os();return e={current:e},t.memoizedState=e},useState:function(e){e=Ss(e);var t=e.queue,n=lc.bind(null,V,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:Js,useDeferredValue:function(e,t){return Zs(os(),e,t)},useTransition:function(){var e=Ss(!1);return e=$s.bind(null,V,e.queue,!0,!1),os().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=V,i=os();if(R){if(n===void 0)throw Error(a(407));n=n()}else{if(n=t(),ed===null)throw Error(a(349));J&127||_s(r,t,n)}i.memoizedState=n;var o={value:n,getSnapshot:t};return i.queue=o,Bs(ys.bind(null,r,o,e),[e]),r.flags|=2048,Is(9,{destroy:void 0},vs.bind(null,r,o,n,t),null),n},useId:function(){var e=os(),t=ed.identifierPrefix;if(R){var n=Qi,r=Zi;n=(r&~(1<<32-et(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=qo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(i,{is:r.is}):s.createElement(i)}}o[wt]=t,o[I]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(np(o,i,r),i){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&ml(t)}}return yl(t),t.subtreeFlags&=-33554433,hl(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&ml(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(a(166));if(e=Te.current,fa(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,i=ia,i!==null)switch(i.tag){case 27:case 5:r=i.memoizedProps}e[wt]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||ep(e.nodeValue,n)),e||la(t,!0)}else e=lp(e).createTextNode(r),e[wt]=t,t.stateNode=e}return yl(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=fa(t),n!==null){if(e===null){if(!r)throw Error(a(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(a(557));e[wt]=t}else pa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;yl(t),e=!1}else n=ma(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Ro(t),t):(Ro(t),null);if(t.flags&128)throw Error(a(558))}return yl(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(i=fa(t),r!==null&&r.dehydrated!==null){if(e===null){if(!i)throw Error(a(318));if(i=t.memoizedState,i=i===null?null:i.dehydrated,!i)throw Error(a(317));i[wt]=t}else pa(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;yl(t),i=!1}else i=ma(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Ro(t),t):(Ro(t),null)}return Ro(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,i=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(i=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==i&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),_l(t,t.updateQueue),yl(t),null);case 4:return Oe(),e===null&&Wf(t.stateNode.containerInfo),t.flags|=67108864,yl(t),null;case 10:return ba(t.type),yl(t),null;case 19:if(Bo(t),r=t.memoizedState,r===null)return yl(t),null;if(i=!!(t.flags&128),o=r.rendering,o===null){if(i)vl(r,!1);else{if(od!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=Vo(e),o!==null){for(t.flags|=128,vl(r,!1),e=o.updateQueue,t.updateQueue=e,_l(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)Ii(n,e),n=n.sibling;return z(t,zo.current&1|2),R&&$i(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&We()>X&&(t.flags|=128,i=!0,vl(r,!1),t.lanes=4194304)}}else{if(!i){if(e=Vo(o),e!==null){if(t.flags|=128,i=!0,e=e.updateQueue,t.updateQueue=e,_l(t,e),vl(r,!0),r.tail===null&&r.tailMode!==`collapsed`&&r.tailMode!==`visible`&&!o.alternate&&!R)return yl(t),null}else 2*We()-r.renderingStartTime>X&&n!==536870912&&(t.flags|=128,i=!0,vl(r,!1),t.lanes=4194304)}r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}if(r.tail!==null){e=r.tail;a:{for(n=e;n!==null;){if(n.alternate!==null){n=!1;break a}n=n.sibling}n=!0}return r.rendering=e,r.tail=e.sibling,r.renderingStartTime=We(),e.sibling=null,o=zo.current,o=i?o&1|2:o&1,r.tailMode===`visible`||r.tailMode===`collapsed`||!n||R?z(t,o):(n=o,N(Mo,t),N(zo,n),No===null&&(No=t)),R&&$i(t,r.treeForkCount),e}return yl(t),null;case 22:case 23:return Ro(t),jo(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(yl(t),t.subtreeFlags&6&&(t.flags|=8192)):yl(t),n=t.updateQueue,n!==null&&_l(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&Se(Ka),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),ba(Ma),yl(t),null;case 25:return null;case 30:return t.flags|=33554432,yl(t),null}throw Error(a(156,t.tag))}function xl(e,t){switch(na(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return ba(Ma),Oe(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return Ae(t),null;case 31:if(t.memoizedState!==null){if(Ro(t),t.alternate===null)throw Error(a(340));pa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Ro(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(a(340));pa()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Bo(t),e=t.flags,e&65536?(t.flags=e&-65537|128,e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null),t.flags|=4,t):null;case 4:return Oe(),null;case 10:return ba(t.type),null;case 22:case 23:return Ro(t),jo(),e!==null&&Se(Ka),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return ba(Ma),null;case 25:return null;default:return null}}function Sl(e,t){switch(na(t),t.tag){case 3:ba(Ma),Oe();break;case 26:case 27:case 5:Ae(t);break;case 4:Oe();break;case 31:t.memoizedState!==null&&Ro(t);break;case 13:Ro(t);break;case 19:Bo(t);break;case 10:ba(t.type);break;case 22:case 23:Ro(t),jo(),e!==null&&Se(Ka);break;case 24:ba(Ma)}}function Cl(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){pf(t,t.return,e)}}function wl(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){pf(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){pf(t,t.return,e)}}function Tl(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Eo(t,n)}catch(t){pf(e,e.return,t)}}}function El(e,t,n){n.props=Cc(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){pf(e,t,n)}}function Dl(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:var i=e.stateNode,a=vi(e.memoizedProps,i);(i.ref===null||i.ref.name!==a)&&(i.ref=Pp(a)),r=i.ref;break;case 7:if(e.stateNode===null){var o=new Fp(e);p(e.child,!1,Qp,o,void 0,void 0),e.stateNode=o}r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){pf(e,t,n)}}function Ol(e,t){var n=e.ref,r=e.refCleanup;if(n!==null){if(typeof r==`function`)try{r()}catch(n){pf(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){pf(e,t,n)}else n.current=null}}function kl(e,t){if((e.tag===5||e.tag===27||e.tag===6)&&e.alternate===null&&t!==null)for(var n=0;n title`))),np(r,t,n),r[wt]=e,Lt(r),t=r;break a;case`link`:if(o=Gm(`link`,`href`,i).get(t+(n.href||``))){for(s=0;sg&&(o=g,g=h,h=o);var _=Kr(s,h),v=Kr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,j.T=null,n=Cd,Cd=null;var o=yd,s=xd;if(Z=0,bd=yd=null,xd=0,K&6)throw Error(a(331));var c=K;if(K|=4,Yu(o.current),Vu(o,o.current,s,n),K=c,Df(0,!1),Qe&&typeof Qe.onPostCommitFiberRoot==`function`)try{Qe.onPostCommitFiberRoot(Ze,o)}catch{}return!0}finally{M.p=i,j.T=r,lf(e,t)}}function ff(e,t,n){t=Ui(n,t),t=kc(e.stateNode,t,2),e=yo(e,t,2),e!==null&&(mt(e,2),Ef(e))}function pf(e,t,n){if(e.tag===3)ff(e,e,n);else for(;t!==null;){if(t.tag===3){ff(t,e,n);break}if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(vd===null||!vd.has(r))){e=Ui(n,e),n=Ac(2),r=yo(t,n,2),r!==null&&(jc(n,r,t,e),mt(r,2),Ef(r));break}}t=t.return}}function mf(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new $u;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(id=!0,i.add(n),e=hf.bind(null,e,t,n),t.then(e,e))}function hf(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,ed===e&&(J&n)===n&&(od===4||od===3&&(J&62914560)===J&&300>We()-hd?K&2?ld|=n:Bd(e,0):ld|=n,dd===J&&(dd=0)),Ef(e)}function gf(e,t){t===0&&(t=ft()),e=Oi(e,t),e!==null&&(mt(e,t),Ef(e))}function _f(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),gf(e,n)}function vf(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,i=e.memoizedState;i!==null&&(n=i.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(a(314))}r!==null&&r.delete(t),gf(e,n)}function yf(e,t){return Be(e,t)}var bf=null,xf=null,Sf=!1,Cf=!1,wf=!1,Tf=0;function Ef(e){e!==xf&&e.next===null&&(xf===null?bf=xf=e:xf=xf.next=e),Cf=!0,Sf||(Sf=!0,Nf())}function Df(e,t){if(!wf&&Cf){wf=!0;do for(var n=!1,r=bf;r!==null;){if(!t){if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-et(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,Mf(r,a))}else a=J,a=ct(r,r===ed?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||lt(r,a)||(n=!0,Mf(r,a))}r=r.next}while(n);wf=!1}}function Of(){kf()}function kf(){Cf=Sf=!1;var e=0;Tf!==0&&hp()&&(e=Tf);for(var t=We(),n=null,r=bf;r!==null;){var i=r.next,a=Af(r,t);a===0?(r.next=null,n===null?bf=i:n.next=i,i===null&&(xf=n)):(n=r,(e!==0||a&3)&&(Cf=!0)),r=i}Z!==0&&Z!==5||Df(e,!1),Tf!==0&&(Tf=0)}function Af(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=rn(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),Lt(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+rn(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+rn(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+rn(n.imageSizes)+`"]`)):i+=`[href="`+rn(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=T({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[jt]=!0,o.onload=o.onerror=function(){Rt(o)}),Lt(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+rn(r)+`"][href="`+rn(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=T({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),Lt(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=It(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=T({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);Lt(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=It(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=T({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Lt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=It(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=T({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Lt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var i=(i=Te.current)?bm(i):null;if(!i)throw Error(a(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=It(i).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var o=It(i).hoistableStyles,s=o.get(e);if(s||(i=i.ownerDocument||i,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=i.querySelector(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(i,e,o,s.state))),t&&r===null)throw Error(a(528,``));return s}if(t&&r!==null)throw Error(a(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=It(i).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(a(444,e))}}function Pm(e){return`href="`+rn(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return T({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[jt]){r.loading=1;return}}else t=e.createElement(`link`),t[jt]=!0,t.onload=t.onerror=Rt.bind(null,t),np(t,`link`,n),Lt(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+rn(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+rn(n.href)+`"]`);if(r)return t.instance=r,Lt(r),r;var i=T({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Lt(r),np(r,`style`,i),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:i=Pm(n.href);var o=e.querySelector(Fm(i));if(o)return t.state.loading|=4,t.instance=o,Lt(o),o;r=Im(n),(i=vm.get(i))&&Hm(r,i),o=(e.ownerDocument||e).createElement(`link`),Lt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(i=e.querySelector(zm(o)))?(t.instance=i,Lt(i),i):(r=n,(i=vm.get(o))&&(r=T({},n),Um(r,i)),e=e.ownerDocument||e,i=e.createElement(`script`),Lt(i),np(i,`link`,r),e.head.appendChild(i),t.instance=i);case`void`:return null;default:throw Error(a(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Lt(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),Lt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=rs()}))(),1),H=i(),as=(0,z.createContext)(void 0);function os(e,t){try{let t=localStorage.getItem(e);if(t===`light`||t===`dark`||t===`system`)return t}catch{}return t}function ss(e){let t=(0,H.c)(14),{children:n,defaultTheme:r,storageKey:i}=e,a=r===void 0?`dark`:r,o=i===void 0?`ui-theme`:i,s;t[0]!==a||t[1]!==o?(s=()=>os(o,a),t[0]=a,t[1]=o,t[2]=s):s=t[2];let[c,l]=(0,z.useState)(s),u,d;t[3]===c?(u=t[4],d=t[5]):(u=()=>{let e=window.document.documentElement;if(e.classList.remove(`light`,`dark`),c===`system`){let t=window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`;e.classList.add(t);return}e.classList.add(c)},d=[c],t[3]=c,t[4]=u,t[5]=d),(0,z.useEffect)(u,d);let f;t[6]===o?f=t[7]:(f=e=>{try{localStorage.setItem(o,e)}catch{}l(e)},t[6]=o,t[7]=f);let p;t[8]!==f||t[9]!==c?(p={theme:c,setTheme:f},t[8]=f,t[9]=c,t[10]=p):p=t[10];let m=p,h;return t[11]!==n||t[12]!==m?(h=(0,B.jsx)(as.Provider,{value:m,children:n}),t[11]=n,t[12]=m,t[13]=h):h=t[13],h}function cs(){let e=(0,z.useContext)(as);if(e===void 0)throw Error(`useTheme must be used within a ThemeProvider`);return e}var ls={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};ls.node;var us=F(ls),ds={name:`book-open`,size:24,node:[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}]]};ds.node;var fs=F(ds),ps={name:`boxes`,size:24,node:[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]};ps.node;var ms=F(ps),hs={name:`brain`,size:24,node:[[`path`,{d:`M12 18V5`,key:`adv99a`}],[`path`,{d:`M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4`,key:`1e3is1`}],[`path`,{d:`M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5`,key:`1gqd8o`}],[`path`,{d:`M17.997 5.125a4 4 0 0 1 2.526 5.77`,key:`iwvgf7`}],[`path`,{d:`M18 18a4 4 0 0 0 2-7.464`,key:`efp6ie`}],[`path`,{d:`M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517`,key:`1gq6am`}],[`path`,{d:`M6 18a4 4 0 0 1-2-7.464`,key:`k1g0md`}],[`path`,{d:`M6.003 5.125a4 4 0 0 0-2.526 5.77`,key:`q97ue3`}]]};hs.node;var gs=F(hs),_s={name:`circle-alert`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]],aliases:[`alert-circle`]};_s.node;var vs=F(_s),ys={name:`container`,size:24,node:[[`path`,{d:`M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z`,key:`1t2lqe`}],[`path`,{d:`M10 21.9V14L2.1 9.1`,key:`o7czzq`}],[`path`,{d:`m10 14 11.9-6.9`,key:`zm5e20`}],[`path`,{d:`M14 19.8v-8.1`,key:`159ecu`}],[`path`,{d:`M18 17.5V9.4`,key:`11uown`}]]};ys.node;var bs=F(ys),xs={name:`crosshair`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`22`,x2:`18`,y1:`12`,y2:`12`,key:`l9bcsi`}],[`line`,{x1:`6`,x2:`2`,y1:`12`,y2:`12`,key:`13hhkx`}],[`line`,{x1:`12`,x2:`12`,y1:`6`,y2:`2`,key:`10w3f3`}],[`line`,{x1:`12`,x2:`12`,y1:`22`,y2:`18`,key:`15g9kq`}]]};xs.node;var Ss=F(xs),Cs={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};Cs.node;var ws=F(Cs),Ts={name:`file-stack`,size:24,node:[[`path`,{d:`M11 21a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1`,key:`likhh7`}],[`path`,{d:`M16 16a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1`,key:`17ky3x`}],[`path`,{d:`M21 6a2 2 0 0 0-.586-1.414l-2-2A2 2 0 0 0 17 2h-3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1z`,key:`1hyeo0`}]]};Ts.node;var Es=F(Ts),Ds={name:`house`,size:24,node:[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]],aliases:[`home`]};Ds.node;var Os=F(Ds),ks={name:`id-card`,size:24,node:[[`path`,{d:`M13 19a4 4 0 00-8 0`,key:`cugzd5`}],[`path`,{d:`M16 10h2`,key:`8sgtl7`}],[`path`,{d:`M16 14h2`,key:`epxaof`}],[`circle`,{cx:`9`,cy:`12`,r:`3`,key:`u3jwor`}],[`rect`,{x:`2`,y:`5`,width:`20`,height:`14`,rx:`2`,key:`qneu4z`}]]};ks.node;var As=F(ks),js={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};js.node;var Ms=F(js),Ns={name:`layers`,size:24,node:[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]],aliases:[`layers-3`]};Ns.node;var Ps=F(Ns),Fs={name:`layout-grid`,size:24,node:[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]};Fs.node;var Is=F(Fs),Ls={name:`layout-list`,size:24,node:[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}],[`path`,{d:`M14 4h7`,key:`3xa0d5`}],[`path`,{d:`M14 9h7`,key:`1icrd9`}],[`path`,{d:`M14 15h7`,key:`1mj8o2`}],[`path`,{d:`M14 20h7`,key:`11slyb`}]]};Ls.node;var Rs=F(Ls),zs={name:`log-out`,size:24,node:[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]};zs.node;var Bs=F(zs),Vs={name:`map-pin`,size:24,node:[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]};Vs.node;var Hs=F(Vs),Us={name:`message-square`,size:24,node:[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]};Us.node;var Ws=F(Us),Gs={name:`moon`,size:24,node:[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]};Gs.node;var Ks=F(Gs),qs={name:`package`,size:24,node:[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]};qs.node;var Js=F(qs),Ys={name:`panel-left`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}]],aliases:[`sidebar`]};Ys.node;var Xs=F(Ys),Zs={name:`route`,size:24,node:[[`circle`,{cx:`6`,cy:`19`,r:`3`,key:`1kj8tv`}],[`path`,{d:`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`,key:`1d8sl`}],[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}]]};Zs.node;var Qs=F(Zs),$s={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};$s.node;var ec=F($s),tc={name:`sun`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]};tc.node;var nc=F(tc),rc={name:`user-cog`,size:24,node:[[`path`,{d:`M10 15H6a4 4 0 0 0-4 4v2`,key:`1nfge6`}],[`path`,{d:`m14.305 16.53.923-.382`,key:`1itpsq`}],[`path`,{d:`m15.228 13.852-.923-.383`,key:`eplpkm`}],[`path`,{d:`m16.852 12.228-.383-.923`,key:`13v3q0`}],[`path`,{d:`m16.852 17.772-.383.924`,key:`1i8mnm`}],[`path`,{d:`m19.148 12.228.383-.923`,key:`1q8j1v`}],[`path`,{d:`m19.53 18.696-.382-.924`,key:`vk1qj3`}],[`path`,{d:`m20.772 13.852.924-.383`,key:`n880s0`}],[`path`,{d:`m20.772 16.148.924.383`,key:`1g6xey`}],[`circle`,{cx:`18`,cy:`15`,r:`3`,key:`gjjjvw`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]};rc.node;var ic=F(rc),ac={name:`users-round`,size:24,node:[[`path`,{d:`M18 21a8 8 0 0 0-16 0`,key:`3ypg7q`}],[`circle`,{cx:`10`,cy:`8`,r:`5`,key:`o932ke`}],[`path`,{d:`M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3`,key:`10s06x`}]],aliases:[`users-2`]};ac.node;var oc=F(ac),sc={name:`users`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]};sc.node;var cc=F(sc);function lc(e,t){return t!=null&&!Ut(t)?0:typeof e==`function`?e():e}function uc(e,t,n){let r=lc(e,n);return typeof r==`number`?r:r?.[t]}function dc(e){return typeof e==`function`?e():e}function fc(e,t){return t||e===`click`||e===`mousedown`}function pc(e){return e?.includes(`mouse`)&&e!==`mousedown`}var mc=z.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new kt,currentIdRef:{current:null},currentContextRef:{current:null}});function hc(e,t){e.current=t.current}function gc(e){let{children:t,delay:n,timeoutMs:r=0}=e,i=z.useRef(n),a=z.useRef(n),o=z.useRef(null),s=z.useRef(null),c=Mt();return ht(()=>{if(a.current=n,!o.current){i.current=n;return}i.current={open:uc(i.current,`open`),close:uc(n,`close`)}},[n,o,i,a]),(0,B.jsx)(mc.Provider,{value:z.useMemo(()=>({hasProvider:!0,delayRef:i,initialDelayRef:a,currentIdRef:o,timeoutMs:r,currentContextRef:s,timeout:c}),[r,c]),children:t})}function _c(e,t={open:!1}){let{open:n}=t,r=`rootStore`in e?e.rootStore:e,i=r.useState(`floatingId`),{currentIdRef:a,delayRef:o,timeoutMs:s,initialDelayRef:c,currentContextRef:l,hasProvider:u,timeout:d}=z.useContext(mc),[f,p]=z.useState(!1),m=z.useRef(n);return ht(()=>{m.current=n},[n]),ht(()=>{function e(){l.current?.setIsInstantPhase(!1),a.current=null,l.current=null,o.current=c.current,d.clear()}if(a.current&&!n&&a.current===i){if(p(!1),s){let t=i;return d.start(s,()=>{r.select(`open`)||a.current&&a.current!==t||e()}),()=>{(m.current||a.current!==t)&&d.clear()}}e()}},[n,i,a,o,s,c,l,d,r]),ht(()=>{if(!n)return;let e=l.current,t=a.current;d.clear(),l.current={onOpenChange:r.setOpen,setIsInstantPhase:p},a.current=i,o.current={open:0,close:uc(c.current,`close`)},t!==null&&t!==i?(p(!0),e?.setIsInstantPhase(!0),e?.onOpenChange(!1,Ot(Ct))):(p(!1),e?.setIsInstantPhase(!1))},[n,i,r,a,o,c,l,d]),ht(()=>()=>{if(a.current===i){if(l.current=null,!m.current)return;a.current=null,hc(o,c),d.clear()}},[l,a,o,i,c,d]),z.useMemo(()=>({activeIdRef:a,hasProvider:u,delayRef:o,isInstantPhase:f}),[a,u,o,f])}function vc(e,t){let n=null,r=null,i=!1;return{contextElement:e||void 0,getBoundingClientRect(){let a=e?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},o=t.axis===`x`||t.axis===`both`,s=t.axis===`y`||t.axis===`both`,c=[`mouseenter`,`mousemove`].includes(t.dataRef.current.openEvent?.type||``)&&t.pointerType!==`touch`,l=a.width,u=a.height,d=a.x,f=a.y;return n==null&&t.x&&o&&(n=a.x-t.x),r==null&&t.y&&s&&(r=a.y-t.y),d-=n||0,f-=r||0,l=0,u=0,!i||c?(l=t.axis===`y`?a.width:0,u=t.axis===`x`?a.height:0,d=o&&t.x!=null?t.x:d,f=s&&t.y!=null?t.y:f):i&&!c&&(u=t.axis===`x`?a.height:u,l=t.axis===`y`?a.width:l),i=!0,{width:l,height:u,x:d,y:f,top:f,right:d+l,bottom:f+u,left:d}}}}function yc(e){return e!=null&&e.clientX!=null}function bc(e,t={}){let{enabled:n=!0,axis:r=`both`}=t,i=`rootStore`in e?e.rootStore:e,a=i.useState(`open`),o=i.useState(`floatingElement`),s=i.useState(`domReferenceElement`),c=i.context.dataRef,l=z.useRef(!1),u=z.useRef(null),[d,f]=z.useState(),[p,m]=z.useState([]),h=gt(e=>{i.set(`positionReference`,e)}),g=gt((e,t,n)=>{l.current||(!c.current.openEvent||yc(c.current.openEvent))&&i.set(`positionReference`,vc(n??s,{x:e,y:t,axis:r,dataRef:c,pointerType:d}))}),_=gt(e=>{a?u.current||(g(e.clientX,e.clientY,e.currentTarget),m([])):g(e.clientX,e.clientY,e.currentTarget)}),v=Ut(d)?o:a;z.useEffect(()=>{if(!n){h(s);return}if(!v)return;function e(){u.current?.(),u.current=null}let t=ft(o);function r(t){let n=yt(t);xt(o,n)?e():g(t.clientX,t.clientY)}return!c.current.openEvent||yc(c.current.openEvent)?u.current=Ie(t,`mousemove`,r):h(s),e},[v,n,o,c,s,i,g,h,p]),z.useEffect(()=>()=>{i.set(`positionReference`,null)},[i]),z.useEffect(()=>{n&&!o&&(l.current=!1)},[n,o]),z.useEffect(()=>{!n&&a&&(l.current=!0)},[n,a]);let y=z.useMemo(()=>{function e(e){f(e.pointerType)}return{onPointerDown:e,onPointerEnter:e,onMouseMove:_,onMouseEnter:_}},[_]);return z.useMemo(()=>n?{reference:y,trigger:y}:{},[n,y])}var xc=Me();function Sc(e){let t=z.useCallback(t=>e===void 0?He:e.subscribeStore(t),[e]),n=z.useCallback(()=>e===void 0?void 0:e.store,[e]);return(0,xc.useSyncExternalStore)(t,n,()=>e?.serverStore)}var Cc=on&&Ht;function wc(e,t={}){let{enabled:n=!0,delay:r}=t,i=`rootStore`in e?e.rootStore:e,{events:a,dataRef:o}=i.context,s=z.useRef(!1),c=z.useRef(null),l=z.useRef(!0),u=Mt();z.useEffect(()=>{let e=i.select(`domReferenceElement`);if(!n)return;let t=ft(e);function r(){let e=i.select(`domReferenceElement`);!i.select(`open`)&&pt(e)&&e===jt(bt(e))&&(s.current=!0,c.current=e)}function a(){l.current=!0}function o(){l.current=!1}return It(Ie(t,`blur`,r),Cc&&Ie(t,`keydown`,a,!0),Cc&&Ie(t,`pointerdown`,o,!0))},[i,n]),z.useEffect(()=>{if(!n)return;function e(e){if(e.reason===`trigger-press`||e.reason===`escape-key`){let e=i.select(`domReferenceElement`);vt(e)&&(c.current=e,s.current=!0)}}return a.on(`openchange`,e),()=>{a.off(`openchange`,e)}},[a,n,i]);let d=z.useMemo(()=>{function e(){s.current=!1,c.current=null}return{onMouseLeave(){e()},onFocus(t){let n=t.currentTarget;if(s.current){if(c.current===n)return;e()}let a=yt(t.nativeEvent);if(vt(a)){if(Cc&&!t.relatedTarget){if(!l.current&&!Jt(a))return}else if(!Wt(a))return}let o=Qt(t.relatedTarget,i.context.triggerElements),{nativeEvent:d,currentTarget:f}=t,p=typeof r==`function`?r():r;if(i.select(`open`)&&o||p===0||p===void 0){i.setOpen(!0,Ot(Et,d,f));return}u.start(p,()=>{s.current||i.setOpen(!0,Ot(Et,d,f))})},onBlur(t){e();let n=t.relatedTarget,r=t.nativeEvent,a=vt(n)&&n.hasAttribute(ln(`focus-guard`))&&n.getAttribute(`data-type`)===`outside`;u.start(0,()=>{let e=i.select(`domReferenceElement`),t=jt(bt(e));(n||t!==e)&&(xt(o.current.floatingContext?.refs.floating.current,t)||xt(e,t)||a||Qt(n??t,i.context.triggerElements)||i.setOpen(!1,Ot(Et,r)))})}}},[o,r,i,u]);return z.useMemo(()=>n?{reference:d,trigger:d}:{},[n,d])}var Tc=class e{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new kt,this.restTimeout=new kt,this.handleCloseOptions=void 0}static create(){return new e}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose},Ec=new WeakMap;function Dc(e){if(!e.performedPointerEventsMutation)return;let t=e.pointerEventsScopeElement;t&&Ec.get(t)===e&&(e.pointerEventsScopeElement?.style.removeProperty(`pointer-events`),e.pointerEventsReferenceElement?.style.removeProperty(`pointer-events`),e.pointerEventsFloatingElement?.style.removeProperty(`pointer-events`),Ec.delete(t)),e.performedPointerEventsMutation=!1,e.pointerEventsScopeElement=null,e.pointerEventsReferenceElement=null,e.pointerEventsFloatingElement=null}function Oc(e,t){let{scopeElement:n,referenceElement:r,floatingElement:i}=t,a=Ec.get(n);a&&a!==e&&Dc(a),Dc(e),e.performedPointerEventsMutation=!0,e.pointerEventsScopeElement=n,e.pointerEventsReferenceElement=r,e.pointerEventsFloatingElement=i,Ec.set(n,e),n.style.pointerEvents=`none`,r.style.pointerEvents=`auto`,i.style.pointerEvents=`auto`}function kc(e){let t=e.context.dataRef.current,n=Be(()=>t.hoverInteractionState??Tc.create()).current;return t.hoverInteractionState||=n,St(t.hoverInteractionState.disposeEffect),t.hoverInteractionState}function Ac(e,t={}){let{enabled:n=!0,closeDelay:r=0,nodeId:i}=t,a=`rootStore`in e?e.rootStore:e,o=a.useState(`open`),s=a.useState(`floatingElement`),c=a.useState(`domReferenceElement`),{dataRef:l}=a.context,u=Rt(),d=Yt(),f=kc(a),p=Mt(),m=gt(()=>fc(l.current.openEvent?.type,f.interactedInside)),h=gt(()=>pc(l.current.openEvent?.type)),g=gt(()=>{Dc(f)});ht(()=>{o||(f.pointerType=void 0,f.restTimeoutPending=!1,f.interactedInside=!1,g())},[o,f,g]),z.useEffect(()=>g,[g]),ht(()=>{if(n&&o&&f.handleCloseOptions?.blockPointerEvents&&h()&&vt(c)&&s){let e=c,t=s,n=bt(s),r=u?.nodesRef.current.find(e=>e.id===d)?.context?.elements.floating;r&&(r.style.pointerEvents=``);let i=f.pointerEventsScopeElement===t?null:f.pointerEventsScopeElement,a=r===t?null:r,o=f.handleCloseOptions?.getScope?.()??i??a??e.closest(`[data-rootownerid]`)??n.body;return Oc(f,{scopeElement:o,referenceElement:e,floatingElement:t}),()=>{g()}}},[n,o,c,s,f,h,u,d,g]),z.useEffect(()=>{if(!n)return;function e(){return!!(u&&d&&Nt(u.nodesRef.current,d).length>0)}function t(e){let t=uc(r,`close`,f.pointerType),n=()=>{a.setOpen(!1,Ot(I,e)),u?.events.emit(`floating.closed`,e)};t?f.openChangeTimeout.start(t,n):(f.openChangeTimeout.clear(),n())}function o(e){let t=yt(e);if(!nn(t)){f.interactedInside=!1;return}f.interactedInside=t?.closest(`[aria-haspopup]`)!=null}function c(){f.openChangeTimeout.clear(),p.clear(),u?.events.off(`floating.closed`,v),g()}function _(n){if(e()&&u){u.events.on(`floating.closed`,v);return}if(Qt(n.relatedTarget,a.context.triggerElements))return;let r=l.current.floatingContext?.nodeId??i,o=n.relatedTarget;if(!(u&&r&&vt(o)&&Nt(u.nodesRef.current,r,!1).some(e=>xt(e.context?.elements.floating,o)))){if(f.handler){f.handler(n);return}g(),h()&&!m()&&t(n)}}function v(t){u&&d&&!e()&&p.start(0,()=>{u.events.off(`floating.closed`,v),a.setOpen(!1,Ot(I,t)),u.events.emit(`floating.closed`,t)})}let y=s;return It(y&&Ie(y,`mouseenter`,c),y&&Ie(y,`mouseleave`,_),y&&Ie(y,`pointerdown`,o,!0),()=>{u?.events.off(`floating.closed`,v)})},[n,s,a,l,r,i,h,m,g,f,u,d,p])}var jc=n(Pe(),1),Mc={current:null};function Nc(e,t={}){let{enabled:n=!0,delay:r=0,handleClose:i=null,mouseOnly:a=!1,restMs:o=0,move:s=!0,triggerElementRef:c=Mc,externalTree:l,isActiveTrigger:u=!0,getHandleCloseContext:d,isClosing:f,shouldOpen:p,guardStaleOpen:m=!1}=t,h=`rootStore`in e?e.rootStore:e,{dataRef:g,events:_}=h.context,v=Rt(l),y=kc(h),b=z.useRef(!1),x=Le(i),S=Le(r),C=Le(o),w=Le(n),T=Le(p),E=Le(f),D=gt(()=>fc(g.current.openEvent?.type,y.interactedInside)),O=gt(()=>T.current?.()!==!1),k=gt((e,t,n)=>{let r=h.context.triggerElements;if(r.hasElement(t))return!e||!xt(e,t);if(!vt(n))return!1;let i=n;return r.hasMatchingElement(e=>xt(e,i))&&(!e||!xt(e,i))}),ee=gt(()=>{y.handler&&=(bt(h.select(`domReferenceElement`)).removeEventListener(`mousemove`,y.handler),void 0)}),te=gt(()=>{Dc(y)});return u&&(y.handleCloseOptions=i?.__options),z.useEffect(()=>ee,[ee]),z.useEffect(()=>{if(!n)return;function e(e){e.open?b.current=!1:(b.current=e.reason===I,ee(),y.openChangeTimeout.clear(),y.restTimeout.clear(),y.blockMouseMove=!0,y.restTimeoutPending=!1)}return _.on(`openchange`,e),()=>{_.off(`openchange`,e)}},[n,_,y,ee]),z.useEffect(()=>{if(!n)return;function e(e,t=!0){let n=uc(S.current,`close`,y.pointerType);n?y.openChangeTimeout.start(n,()=>{h.setOpen(!1,Ot(I,e)),v?.events.emit(`floating.closed`,e)}):t&&(y.openChangeTimeout.clear(),h.setOpen(!1,Ot(I,e)),v?.events.emit(`floating.closed`,e))}let t=c.current??(u?h.select(`domReferenceElement`):null);if(!vt(t))return;function r(e){if(y.openChangeTimeout.clear(),y.blockMouseMove=!1,a&&!Ut(y.pointerType))return;let t=dc(C.current),n=uc(S.current,`open`,y.pointerType),r=yt(e),i=e.currentTarget??null,o=h.select(`domReferenceElement`),s=i;if(vt(r)&&!h.context.triggerElements.hasElement(r)){for(let e of h.context.triggerElements.elements())if(xt(e,r)){s=e;break}}vt(i)&&vt(o)&&!h.context.triggerElements.hasElement(i)&&xt(i,o)&&(s=o);let c=s!=null&&k(o,s,r),l=h.select(`open`),u=E.current?.()??h.select(`transitionStatus`)===`ending`,d=!l&&u&&b.current,f=!c&&vt(s)&&vt(o)&&xt(o,s)&&d,p=t>0&&!n,m=c&&(l||d)||f,g=!l||c;if(m){O()&&h.setOpen(!0,Ot(I,e,s));return}p||(n?y.openChangeTimeout.start(n,()=>{g&&O()&&h.setOpen(!0,Ot(I,e,s))}):g&&O()&&h.setOpen(!0,Ot(I,e,s)))}function i(t){if(D()){te();return}ee();let n=h.select(`domReferenceElement`),r=bt(n);y.restTimeout.clear(),y.restTimeoutPending=!1;let i=g.current.floatingContext??d?.();if(!Qt(t.relatedTarget,h.context.triggerElements)){if(x.current&&i){h.select(`open`)||y.openChangeTimeout.clear();let n=c.current;y.handler=x.current({...i,tree:v,x:t.clientX,y:t.clientY,onClose(){te(),ee(),w.current&&!D()&&n===h.select(`domReferenceElement`)&&e(t,!0)}}),r.addEventListener(`mousemove`,y.handler),y.handler(t);return}(y.pointerType!==`touch`||!xt(h.select(`floatingElement`),t.relatedTarget))&&e(t)}}function o(e){xt(t,e.relatedTarget)||(y.openChangeTimeout.clear(),y.restTimeout.clear(),y.restTimeoutPending=!1)}let l=m?Ie(t,`mouseout`,o):void 0;return s?It(Ie(t,`mousemove`,r,{once:!0}),Ie(t,`mouseenter`,r),Ie(t,`mouseleave`,i),l):It(Ie(t,`mouseenter`,r),Ie(t,`mouseleave`,i),l)},[ee,te,g,S,h,n,x,y,u,k,D,a,s,C,c,v,w,d,E,O,m]),z.useMemo(()=>{if(!n)return;function e(e){y.pointerType=e.pointerType}return{onPointerDown:e,onPointerEnter:e,onMouseMove(e){let{nativeEvent:t}=e,n=e.currentTarget,r=h.select(`domReferenceElement`),i=h.select(`open`),o=k(r,n,e.target);if(a&&!Ut(y.pointerType))return;if(i&&o&&y.handleCloseOptions?.blockPointerEvents){let e=h.select(`floatingElement`);if(e){let t=y.handleCloseOptions?.getScope?.()??n.ownerDocument.body;Oc(y,{scopeElement:t,referenceElement:n,floatingElement:e})}}let s=dc(C.current);if(i&&!o||s===0||!o&&y.restTimeoutPending&&e.movementX**2+e.movementY**2<2)return;y.restTimeout.clear();function c(){if(y.restTimeoutPending=!1,D())return;let e=h.select(`open`);!y.blockMouseMove&&(!e||o)&&O()&&h.setOpen(!0,Ot(I,t,n))}y.pointerType===`touch`?jc.flushSync(()=>{c()}):o&&i?c():(y.restTimeoutPending=!0,y.restTimeout.start(s,c))}}},[n,y,D,k,a,h,C,O])}var Pc=.1,Fc=Pc*Pc,Ic=.5;function Lc(e,t,n,r,i,a){return r>=t!=a>=t&&e<=(i-n)*(t-r)/(a-r)+n}function Rc(e,t,n,r,i,a,o,s,c,l){let u=!1;return Lc(e,t,n,r,i,a)&&(u=!u),Lc(e,t,i,a,o,s)&&(u=!u),Lc(e,t,o,s,c,l)&&(u=!u),Lc(e,t,c,l,n,r)&&(u=!u),u}function zc(e,t,n){return e>=n.x&&e<=n.x+n.width&&t>=n.y&&t<=n.y+n.height}function Bc(e,t,n,r,i,a){return e>=Math.min(n,i)&&e<=Math.max(n,i)&&t>=Math.min(r,a)&&t<=Math.max(r,a)}function Vc(e={}){let{blockPointerEvents:t=!1}=e,n=new kt,r=({x:e,y:t,placement:r,elements:i,onClose:a,nodeId:o,tree:s})=>{let c=r?.split(`-`)[0],l=!1,u=null,d=null,f=typeof performance<`u`?performance.now():0;function p(e,t){let n=performance.now(),r=n-f;if(u===null||d===null||r===0)return u=e,d=t,f=n,!1;let i=e-u,a=t-d,o=i*i+a*a,s=r*r*Fc;return u=e,d=t,f=n,o0)}function b(){y()||m()}if(y())return;let x=a.getBoundingClientRect(),S=u.getBoundingClientRect(),C=e>S.right-S.width/2,w=t>S.bottom-S.height/2,T=S.width>x.width,E=S.height>x.height,D=(T?x:S).left,O=(T?x:S).right,k=(E?x:S).top,ee=(E?x:S).bottom;if(c===`top`&&t>=x.bottom-1||c===`bottom`&&t<=x.top+1||c===`left`&&e>=x.right-1||c===`right`&&e<=x.left+1){b();return}let te=!1;switch(c){case`top`:te=Bc(d,f,D,x.top+1,O,S.bottom-1);break;case`bottom`:te=Bc(d,f,D,S.top+1,O,x.bottom-1);break;case`left`:te=Bc(d,f,S.right-1,ee,x.left+1,k);break;case`right`:te=Bc(d,f,x.right-1,ee,S.left+1,k)}if(te)return;if(l&&!zc(d,f,x)){b();return}if(!g&&p(d,f)){b();return}let ne=!1;switch(c){case`top`:{let n=T?Ic/2:Ic*4,r=T||C?e+n:e-n,i=T?e-n:C?e+n:e-n,a=t+Ic+1,o=C||T?S.bottom-Ic:S.top,s=C?T?S.bottom-Ic:S.top:S.bottom-Ic;ne=Rc(d,f,r,a,i,a,S.left,o,S.right,s);break}case`bottom`:{let n=T?Ic/2:Ic*4,r=T||C?e+n:e-n,i=T?e-n:C?e+n:e-n,a=t-Ic,o=C||T?S.top+Ic:S.bottom,s=C?T?S.top+Ic:S.bottom:S.top+Ic;ne=Rc(d,f,r,a,i,a,S.left,o,S.right,s);break}case`left`:{let n=E?Ic/2:Ic*4,r=E||w?t+n:t-n,i=E?t-n:w?t+n:t-n,a=e+Ic+1,o=w||E?S.right-Ic:S.left,s=w?E?S.right-Ic:S.left:S.right-Ic;ne=Rc(d,f,o,S.top,s,S.bottom,a,r,a,i);break}case`right`:{let n=E?Ic/2:Ic*4,r=E||w?t+n:t-n,i=E?t-n:w?t+n:t-n,a=e-Ic,o=w||E?S.left+Ic:S.right,s=w?E?S.left+Ic:S.right:S.left+Ic;ne=Rc(d,f,a,r,a,i,o,S.top,s,S.bottom);break}}ne?l||n.start(40,b):b()}};return r.__options={...e,blockPointerEvents:t},r}var Hc=Pt(function(e){return vn(`dialog`,e)});function Uc(e){let t=(0,H.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,B.jsx)(Hc,{"data-slot":`sheet`,...n}),t[2]=n,t[3]=r),r}function Wc(e){let t=(0,H.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,B.jsx)(bn,{"data-slot":`sheet-portal`,...n}),t[2]=n,t[3]=r),r}function Gc(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`data-closed:fade-out-0 data-open:fade-in-0 data-closed:animate-out data-open:animate-in fixed inset-0 z-50 bg-black/80 duration-100 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(_n,{className:i,"data-slot":`sheet-overlay`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Kc(e){let t=(0,H.c)(17),n,r,i,a,o;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5]):({className:r,children:n,side:a,showCloseButton:o,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o);let s=a===void 0?`right`:a,c=o===void 0||o,l;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,B.jsx)(Gc,{}),t[6]=l):l=t[6];let u;t[7]===r?u=t[8]:(u=Xe(`data-[side=right]:data-closed:slide-out-to-right-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=top]:data-closed:slide-out-to-top-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-closed:animate-out data-open:animate-in fixed z-50 flex flex-col bg-background bg-clip-padding text-xs/relaxed shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm`,r),t[7]=r,t[8]=u);let d;t[9]===c?d=t[10]:(d=c&&(0,B.jsxs)(hn,{"data-slot":`sheet-close`,render:(0,B.jsx)(_t,{className:`absolute top-4 right-4`,size:`icon-sm`,variant:`ghost`}),children:[(0,B.jsx)(ut,{}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Close`})]}),t[9]=c,t[10]=d);let f;return t[11]!==n||t[12]!==i||t[13]!==s||t[14]!==u||t[15]!==d?(f=(0,B.jsxs)(Wc,{children:[l,(0,B.jsxs)(gn,{className:u,"data-side":s,"data-slot":`sheet-content`,...i,children:[n,d]})]}),t[11]=n,t[12]=i,t[13]=s,t[14]=u,t[15]=d,t[16]=f):f=t[16],f}function qc(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`flex flex-col gap-1.5 p-6`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`div`,{className:i,"data-slot":`sheet-header`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Jc(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`text-sm font-medium text-foreground`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(Sn,{className:i,"data-slot":`sheet-title`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Yc(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`text-xs/relaxed text-muted-foreground`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(xn,{className:i,"data-slot":`sheet-description`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}var Xc=z.createContext(void 0);function Zc(e){let t=z.useContext(Xc);if(t===void 0&&!e)throw Error(We(72));return t}var Qc={...yn,disabled:e=>e.disabled,instantType:e=>e.instantType,isInstantPhase:e=>e.isInstantPhase,trackCursorAxis:e=>e.trackCursorAxis,disableHoverablePopup:e=>e.disableHoverablePopup,lastOpenChangeReason:e=>e.openChangeReason,closeOnClick:e=>e.closeOnClick,closeDelay:e=>e.closeDelay,adaptiveOrigin:e=>e.adaptiveOrigin},$c=class extends Ft{constructor(e,t,n){let r=new en;super(el(e,r,t,n),tl(r),Qc)}setOpen=(e,t)=>{L(this,e,t,{extraState:{openChangeReason:t.reason}})};cancelPendingOpen(e){this.state.floatingRootContext.dispatchOpenChange(!1,Ot(wt,e))}};function el(e,t,n,r=!1){return{...mn(t,n,r),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:`none`,disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,adaptiveOrigin:void 0,...e}}function tl(e){return{popupRef:z.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:e}}var nl=Pt(function(e){let{disabled:t=!1,defaultOpen:n=!1,open:r,disableHoverablePopup:i=!1,trackCursorAxis:a=`none`,actionsRef:o,onOpenChange:s,onOpenChangeComplete:c,handle:l,triggerId:u,defaultTriggerId:d=null,children:f}=e,p=Vt((e,t)=>new $c({open:n,openProp:r,activeTriggerId:d,triggerIdProp:u},e,t));p.useControlledProp(`openProp`,r),p.useControlledProp(`triggerIdProp`,u),p.useContextCallback(`onOpenChange`,s),p.useContextCallback(`onOpenChangeComplete`,c);let m=p.useState(`open`),h=!t&&m,g=p.useState(`activeTriggerId`),_=p.useState(`mounted`),v=p.useState(`payload`);p.useSyncedValues({trackCursorAxis:a,disableHoverablePopup:i,disabled:t}),cn(p,{closeOnActiveTriggerUnmount:!0});let{forceUnmount:y,transitionStatus:b}=Gt(h,p),x=p.useState(`isInstantPhase`),S=p.useState(`instantType`),C=p.useState(`lastOpenChangeReason`),w=z.useRef(null);ht(()=>{m&&t&&p.setOpen(!1,Ot(Tt))},[m,t,p]),ht(()=>{b===`ending`&&C===`none`||b!==`ending`&&x?(S!==`delay`&&(w.current=S),p.set(`instantType`,`delay`)):w.current!==null&&(p.set(`instantType`,w.current),w.current=null)},[b,x,C,S,p]),ht(()=>{h&&(g??p.set(`payload`,void 0))},[p,g,h]),z.useImperativeHandle(o,()=>({unmount:y,close:()=>p.setOpen(!1,Ot(Dt))}),[y,p]);let T=h||_||!t&&a!==`none`;return(0,B.jsxs)(Xc.Provider,{value:p,children:[l&&(0,B.jsx)(qt,{handle:l,store:p}),T&&(0,B.jsx)(rl,{store:p,disabled:t,trackCursorAxis:a}),typeof f==`function`?f({payload:v}):f]})});function rl({store:e,disabled:t,trackCursorAxis:n}){let r=e.useState(`floatingRootContext`),i=Xt(r,{enabled:!t,referencePress:()=>e.select(`closeOnClick`)}),a=bc(r,{enabled:!t&&n!==`none`,axis:n===`none`?void 0:n}),o=z.useMemo(()=>ze(a.reference,i.reference),[a.reference,i.reference]);return sn(e,{activeTriggerProps:o,inactiveTriggerProps:o,popupProps:i.floating??Re}),null}var il=z.createContext(void 0);function al(){return z.useContext(il)}var ol=`data-base-ui-tooltip-trigger`;function sl(e){if(`composedPath`in e){let t=e.composedPath();for(let e=0;em.select(`transitionStatus`)===`ending`,shouldOpen(){return!ie.current}}),de=wc(v,{enabled:!ee}).reference,fe=e=>{let t=ie.current,n=sl(e),r=le(n),i=y.current,a=i&&n&&xt(i,n);if(r&&m.select(`open`)&&m.select(`lastOpenChangeReason`)===`trigger-hover`){m.setOpen(!1,Ot(I,e));return}if(t&&!r&&a&&!te.current&&!m.select(`open`)&&i&&Ut(oe.current)){let t=()=>{!ie.current&&!te.current&&!m.select(`open`)&&m.setOpen(!0,Ot(I,e,i))},n=se();n===0?(ae.clear(),t()):ae.start(n,t)}},pe=m.useState(`triggerProps`,S);return Ve(`button`,e,{state:{open:_},ref:[t,x,y],props:[ue,de,S||ne!==`none`?pe:void 0,{onMouseOver(e){fe(e.nativeEvent)},onFocus(e){ce(sl(e.nativeEvent))&&e.preventBaseUIHandler()},onMouseLeave(){ie.current=!1,ae.clear(),oe.current=void 0},onPointerEnter(e){oe.current=e.pointerType},onPointerDown(e){oe.current=e.pointerType,m.set(`closeOnClick`,l),l&&!m.select(`open`)&&m.cancelPendingOpen(e.nativeEvent)},onClick(e){l&&!m.select(`open`)&&m.cancelPendingOpen(e.nativeEvent)},id:h,[$t]:ee?``:void 0,[ol]:ee?void 0:``},f],stateAttributesMapping:rn})}),ul=z.createContext(void 0);function dl(){let e=z.useContext(ul);if(e===void 0)throw Error(We(70));return e}var fl=z.forwardRef(function(e,t){let{children:n,container:r,className:i,render:a,style:o,...s}=e,{node:c,subtree:l}=Bt({container:r,ref:t,componentProps:e,elementProps:s});return!l&&!c?null:(0,B.jsxs)(z.Fragment,{children:[l,c&&jc.createPortal(n,c)]})}),pl=z.forwardRef(function(e,t){let{keepMounted:n=!1,...r}=e;return Zc().useState(`mounted`)||n?(0,B.jsx)(ul.Provider,{value:n,children:(0,B.jsx)(fl,{ref:t,...r})}):null}),ml=z.createContext(void 0);function hl(){let e=z.useContext(ml);if(e===void 0)throw Error(We(71));return e}var gl=z.forwardRef(function(e,t){let{render:n,className:r,anchor:i,positionMethod:a=`absolute`,side:o=`top`,align:s=`center`,sideOffset:c=0,alignOffset:l=0,collisionBoundary:u=`clipping-ancestors`,collisionPadding:d=5,arrowPadding:f=5,sticky:p=!1,disableAnchorTracking:m=!1,collisionAvoidance:h=Lt,style:g,..._}=e,v=Zc(),y=dl(),b=v.useState(`open`),x=v.useState(`mounted`),S=v.useState(`trackCursorAxis`),C=v.useState(`disableHoverablePopup`),w=v.useState(`floatingRootContext`),T=v.useState(`instantType`),E=v.useState(`transitionStatus`),D=v.useState(`adaptiveOrigin`),O=dn({anchor:i,positionMethod:a,floatingRootContext:w,mounted:x,side:o,sideOffset:c,align:s,alignOffset:l,collisionBoundary:u,collisionPadding:d,sticky:p,arrowPadding:f,disableAnchorTracking:m,keepMounted:y,collisionAvoidance:h,adaptiveOrigin:D}),k=z.useMemo(()=>({open:b,side:O.side,align:O.align,anchorHidden:O.anchorHidden,instant:S===`none`?T:`tracking-cursor`}),[b,O.side,O.align,O.anchorHidden,S,T]),ee=fn(e,k,{styles:O.positionerStyles,transitionStatus:E,props:_,refs:[t,v.useStateSetter(`positionerElement`)],hidden:!x,inert:!b||S===`both`||C});return(0,B.jsx)(ml.Provider,{value:O,children:ee})}),_l=z.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,o=Zc(),{side:s,align:c}=hl(),l=o.useState(`open`),u=o.useState(`instantType`),d=o.useState(`transitionStatus`),f=o.useState(`popupProps`),p=o.useState(`floatingRootContext`),m=o.useState(`disabled`),h=o.useState(`closeDelay`);Fe({open:l,ref:o.context.popupRef,onComplete(){l&&o.context.onOpenChangeComplete?.(!0)}}),Ac(p,{enabled:!m,closeDelay:h});let g=o.useStateSetter(`popupElement`);return Ve(`div`,e,{state:{open:l,side:s,align:c,instant:u,transitionStatus:d},ref:[t,o.context.popupRef,g],props:[Zt,f,un(d),a],stateAttributesMapping:Kt})}),vl=z.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,o=Zc(),{arrowRef:s,side:c,align:l,arrowUncentered:u,arrowStyles:d}=hl(),f={open:o.useState(`open`),side:c,align:l,uncentered:u,instant:o.useState(`instantType`)};return Ve(`div`,e,{state:f,ref:[t,s],props:[{style:d,"aria-hidden":!0},a],stateAttributesMapping:tn})}),yl=function(e){let{delay:t,closeDelay:n,timeout:r=400}=e,i=z.useMemo(()=>({open:t,close:n}),[t,n]);return(0,B.jsx)(il.Provider,{value:t,children:(0,B.jsx)(gc,{delay:i,timeoutMs:r,children:e.children})})};function bl(e){let t=(0,H.c)(6),n,r;t[0]===e?(n=t[1],r=t[2]):({delay:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i=r===void 0?0:r,a;return t[3]!==i||t[4]!==n?(a=(0,B.jsx)(yl,{"data-slot":`tooltip-provider`,delay:i,...n}),t[3]=i,t[4]=n,t[5]=a):a=t[5],a}function xl(e){let t=(0,H.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,B.jsx)(bl,{children:(0,B.jsx)(nl,{"data-slot":`tooltip`,...n})}),t[2]=n,t[3]=r),r}function Sl(e){let t=(0,H.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,B.jsx)(ll,{"data-slot":`tooltip-trigger`,...n}),t[2]=n,t[3]=r),r}function Cl(e){let t=(0,H.c)(21),n,r,i,a,o,s,c;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6],c=t[7]):({className:r,side:a,sideOffset:o,align:s,alignOffset:c,children:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s,t[7]=c);let l=a===void 0?`top`:a,u=o===void 0?4:o,d=s===void 0?`center`:s,f=c===void 0?0:c,p;t[8]===r?p=t[9]:(p=Xe(`data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=delayed-open]:animate-in data-closed:animate-out data-open:animate-in z-50 w-fit max-w-xs origin-(--transform-origin) rounded-md bg-foreground px-3 py-1.5 text-xs text-background **:data-[slot=kbd]:rounded-md`,r),t[8]=r,t[9]=p);let m;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,B.jsx)(vl,{className:`z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5`}),t[10]=m):m=t[10];let h;t[11]!==n||t[12]!==i||t[13]!==p?(h=(0,B.jsxs)(_l,{className:p,"data-slot":`tooltip-content`,...i,children:[n,m]}),t[11]=n,t[12]=i,t[13]=p,t[14]=h):h=t[14];let g;return t[15]!==d||t[16]!==f||t[17]!==l||t[18]!==u||t[19]!==h?(g=(0,B.jsx)(pl,{children:(0,B.jsx)(gl,{align:d,alignOffset:f,className:`isolate z-50`,side:l,sideOffset:u,children:h})}),t[15]=d,t[16]=f,t[17]=l,t[18]=u,t[19]=h,t[20]=g):g=t[20],g}var wl=window.matchMedia(`(max-width: 767px)`);function Tl(e){return wl.addEventListener(`change`,e),()=>{wl.removeEventListener(`change`,e)}}function El(){return wl.matches}function Dl(){return(0,z.useSyncExternalStore)(Tl,El)}var Ol=`sidebar_state`,kl=604800,Al=`12rem`,jl=`16rem`,Ml=`3rem`,Nl=`b`,Pl=z.createContext(null);function Fl(){let e=z.useContext(Pl);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function Il(e){let t=(0,H.c)(36),n,r,i,a,o,s,c;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6],c=t[7]):({defaultOpen:c,open:i,onOpenChange:o,className:r,style:s,children:n,...a}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s,t[7]=c);let l=c===void 0||c,u=Dl(),[d,f]=z.useState(!1),[p,m]=z.useState(l),h=i??p,g;t[8]!==h||t[9]!==o?(g=e=>{let t=typeof e==`function`?e(h):e;o?o(t):m(t),document.cookie=`${Ol}=${t}; path=/; max-age=${kl}`},t[8]=h,t[9]=o,t[10]=g):g=t[10];let _=g,v;t[11]!==u||t[12]!==_?(v=()=>{u?f(Rl):_(Ll)},t[11]=u,t[12]=_,t[13]=v):v=t[13];let y=v,b,x;t[14]===y?(b=t[15],x=t[16]):(b=()=>{let e=e=>{e.key===Nl&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),y())};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}},x=[y],t[14]=y,t[15]=b,t[16]=x),z.useEffect(b,x);let S=h?`expanded`:`collapsed`,C;t[17]!==u||t[18]!==h||t[19]!==d||t[20]!==_||t[21]!==S||t[22]!==y?(C={state:S,open:h,setOpen:_,isMobile:u,openMobile:d,setOpenMobile:f,toggleSidebar:y},t[17]=u,t[18]=h,t[19]=d,t[20]=_,t[21]=S,t[22]=y,t[23]=C):C=t[23];let w=C,T;t[24]===s?T=t[25]:(T={"--sidebar-width":Al,"--sidebar-width-icon":Ml,...s},t[24]=s,t[25]=T);let E=T,D;t[26]===r?D=t[27]:(D=Xe(`group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar`,r),t[26]=r,t[27]=D);let O;t[28]!==n||t[29]!==a||t[30]!==D||t[31]!==E?(O=(0,B.jsx)(`div`,{className:D,"data-slot":`sidebar-wrapper`,style:E,...a,children:n}),t[28]=n,t[29]=a,t[30]=D,t[31]=E,t[32]=O):O=t[32];let k;return t[33]!==w||t[34]!==O?(k=(0,B.jsx)(Pl.Provider,{value:w,children:O}),t[33]=w,t[34]=O,t[35]=k):k=t[35],k}function Ll(e){return!e}function Rl(e){return!e}function zl(e){let t=(0,H.c)(46),n,r,i,a,o,s;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6]):({side:a,variant:o,collapsible:s,className:r,children:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s);let c=a===void 0?`left`:a,l=o===void 0?`sidebar`:o,u=s===void 0?`offExamples`:s,{isMobile:d,state:f,openMobile:p,setOpenMobile:m}=Fl();if(u===`none`){let e;t[7]===r?e=t[8]:(e=Xe(`flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,r),t[7]=r,t[8]=e);let a;return t[9]!==n||t[10]!==i||t[11]!==e?(a=(0,B.jsx)(`div`,{className:e,"data-slot":`sidebar`,...i,children:n}),t[9]=n,t[10]=i,t[11]=e,t[12]=a):a=t[12],a}if(d){let e;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(e={"--sidebar-width":jl},t[13]=e):e=t[13];let r=e,a;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,B.jsxs)(qc,{className:`sr-only`,children:[(0,B.jsx)(Jc,{children:`Sidebar`}),(0,B.jsx)(Yc,{children:`Displays the mobile sidebar.`})]}),t[14]=a):a=t[14];let o;t[15]===n?o=t[16]:(o=(0,B.jsx)(`div`,{className:`flex h-full w-full flex-col`,children:n}),t[15]=n,t[16]=o);let s;t[17]!==c||t[18]!==o?(s=(0,B.jsxs)(Kc,{className:`w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden`,"data-mobile":`true`,"data-sidebar":`sidebar`,"data-slot":`sidebar`,side:c,style:r,children:[a,o]}),t[17]=c,t[18]=o,t[19]=s):s=t[19];let l;return t[20]!==p||t[21]!==i||t[22]!==m||t[23]!==s?(l=(0,B.jsx)(Uc,{onOpenChange:m,open:p,...i,children:s}),t[20]=p,t[21]=i,t[22]=m,t[23]=s,t[24]=l):l=t[24],l}let h=f===`collapsed`?u:``,g=l===`floating`||l===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`,_;t[25]===g?_=t[26]:(_=Xe(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offExamples]:w-0`,`group-data-[side=right]:rotate-180`,g),t[25]=g,t[26]=_);let v;t[27]===_?v=t[28]:(v=(0,B.jsx)(`div`,{className:_,"data-slot":`sidebar-gap`}),t[27]=_,t[28]=v);let y=c===`left`?`left-0 group-data-[collapsible=offExamples]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offExamples]:right-[calc(var(--sidebar-width)*-1)]`,b=l===`floating`||l===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l`,x;t[29]!==r||t[30]!==y||t[31]!==b?(x=Xe(`fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex`,y,b,r),t[29]=r,t[30]=y,t[31]=b,t[32]=x):x=t[32];let S;t[33]===n?S=t[34]:(S=(0,B.jsx)(`div`,{className:`flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border`,"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,children:n}),t[33]=n,t[34]=S);let C;t[35]!==i||t[36]!==x||t[37]!==S?(C=(0,B.jsx)(`div`,{className:x,"data-slot":`sidebar-container`,...i,children:S}),t[35]=i,t[36]=x,t[37]=S,t[38]=C):C=t[38];let w;return t[39]!==c||t[40]!==f||t[41]!==C||t[42]!==h||t[43]!==v||t[44]!==l?(w=(0,B.jsxs)(`div`,{className:`group peer hidden text-sidebar-foreground md:block`,"data-collapsible":h,"data-side":c,"data-slot":`sidebar`,"data-state":f,"data-variant":l,children:[v,C]}),t[39]=c,t[40]=f,t[41]=C,t[42]=h,t[43]=v,t[44]=l,t[45]=w):w=t[45],w}function Bl(e){let t=(0,H.c)(15),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,onClick:r,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let{toggleSidebar:a}=Fl(),o;t[4]===n?o=t[5]:(o=Xe(n),t[4]=n,t[5]=o);let s;t[6]!==r||t[7]!==a?(s=e=>{r?.(e),a()},t[6]=r,t[7]=a,t[8]=s):s=t[8];let c,l;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,B.jsx)(Xs,{}),l=(0,B.jsx)(`span`,{className:`sr-only`,children:`Toggle Sidebar`}),t[9]=c,t[10]=l):(c=t[9],l=t[10]);let u;return t[11]!==i||t[12]!==o||t[13]!==s?(u=(0,B.jsxs)(_t,{className:o,"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,onClick:s,size:`icon-lg`,variant:`ghost`,...i,children:[c,l]}),t[11]=i,t[12]=o,t[13]=s,t[14]=u):u=t[14],u}function Vl(e){let t=(0,H.c)(9),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let{toggleSidebar:i}=Fl(),a;t[3]===n?a=t[4]:(a=Xe(`absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex`,`in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize`,`[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize`,`group-data-[collapsible=offExamples]:translate-x-0 group-data-[collapsible=offExamples]:after:left-full hover:group-data-[collapsible=offExamples]:bg-sidebar`,`[[data-side=left][data-collapsible=offExamples]_&]:-right-2`,`[[data-side=right][data-collapsible=offExamples]_&]:-left-2`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a||t[7]!==i?(o=(0,B.jsx)(`button`,{"aria-label":`Toggle Sidebar`,className:a,"data-sidebar":`rail`,"data-slot":`sidebar-rail`,onClick:i,tabIndex:-1,title:`Toggle Sidebar`,type:`button`,...r}),t[5]=r,t[6]=a,t[7]=i,t[8]=o):o=t[8],o}function Hl(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`flex flex-col gap-2 p-2`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`div`,{className:i,"data-sidebar":`header`,"data-slot":`sidebar-header`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Ul(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`flex flex-col gap-2 p-2`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`div`,{className:i,"data-sidebar":`footer`,"data-slot":`sidebar-footer`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Wl(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`mx-2 w-auto bg-sidebar-border`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(pn,{className:i,"data-sidebar":`separator`,"data-slot":`sidebar-separator`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Gl(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-x-hidden overflow-y-auto`,`group-data-[collapsible=icon]:[scrollbar-width:none] group-data-[collapsible=icon]:[&::-webkit-scrollbar]:hidden`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`div`,{className:i,"data-sidebar":`content`,"data-slot":`sidebar-content`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Kl(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`relative flex w-full min-w-0 flex-col px-2 py-1`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`div`,{className:i,"data-sidebar":`group`,"data-slot":`sidebar-group`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function ql(e){let t=(0,H.c)(10),n,r,i,a;if(t[0]!==e){let{className:o,render:s,...c}=e;n=s,a=Ge,r=`div`,i=ze({className:Xe(`flex h-8 shrink-0 items-center rounded-md px-2 text-xs text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0`,o)},c),t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a}else n=t[1],r=t[2],i=t[3],a=t[4];let o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(o={slot:`sidebar-group-label`,sidebar:`group-label`},t[5]=o):o=t[5];let s;return t[6]!==n||t[7]!==r||t[8]!==i?(s={defaultTagName:r,props:i,render:n,state:o},t[6]=n,t[7]=r,t[8]=i,t[9]=s):s=t[9],a(s)}function Jl(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`flex w-full min-w-0 flex-col gap-px`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`ul`,{className:i,"data-sidebar":`menu`,"data-slot":`sidebar-menu`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function U(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`group/menu-item relative`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`li`,{className:i,"data-sidebar":`menu-item`,"data-slot":`sidebar-menu-item`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}var Yl=Ue(`peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-[calc(var(--radius-sm)+2px)] p-2 text-left text-xs ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate`,{variants:{variant:{default:`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-xs`,sm:`h-7 text-xs`,lg:`h-12 text-xs group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function W(e){let t=(0,H.c)(18),{render:n,isActive:r,variant:i,size:a,tooltip:o,className:s,...c}=e,l=r!==void 0&&r,u=i===void 0?`default`:i,d=a===void 0?`default`:a,{isMobile:f,state:p}=Fl(),m=ze({className:Xe(Yl({variant:u,size:d}),s)},c),h;t[0]!==n||t[1]!==o?(h=o?(0,B.jsx)(Sl,{}):n,t[0]=n,t[1]=o,t[2]=h):h=t[2];let g;t[3]!==l||t[4]!==d?(g={slot:`sidebar-menu-button`,sidebar:`menu-button`,size:d,active:l},t[3]=l,t[4]=d,t[5]=g):g=t[5];let _;t[6]!==m||t[7]!==h||t[8]!==g?(_={defaultTagName:`button`,props:m,render:h,state:g},t[6]=m,t[7]=h,t[8]=g,t[9]=_):_=t[9];let v=Ge(_);if(!o)return v;let y;t[10]===o?y=t[11]:(y=typeof o==`string`?{children:o}:o,t[10]=o,t[11]=y);let b=y,x=p!==`collapsed`||f,S;t[12]!==x||t[13]!==b?(S=(0,B.jsx)(Cl,{align:`center`,hidden:x,side:`right`,...b}),t[12]=x,t[13]=b,t[14]=S):S=t[14];let C;return t[15]!==v||t[16]!==S?(C=(0,B.jsxs)(xl,{children:[v,S]}),t[15]=v,t[16]=S,t[17]=C):C=t[17],C}var Xl=new Set([`InvalidClientTokenId`,`SignatureDoesNotMatch`,`AuthFailure`,`MissingAuthenticationToken`,`IncompleteSignature`,`UnrecognizedClientException`,`ExpiredToken`,`ExpiredTokenException`,`InvalidAccessKeyId`]);function Zl(e){return typeof e==`object`&&!!e&&`name`in e&&typeof e.name==`string`}function Ql(e){return Zl(e)&&Xl.has(e.name)}var $l=!1;function eu(e,t){!$l&&Ql(e)&&($l=!0,Ke(),Cn(),t.clear(),window.location.pathname!==`/login`&&(window.location.href=`/login?reason=expired`))}function tu(){let e=new $r({queryCache:new Qr({onError:t=>{eu(t,e)}}),mutationCache:new Xr({onError:t=>{eu(t,e)}}),defaultOptions:{queries:{staleTime:5e3,refetchIntervalInBackground:!1}}});return e}function nu(){let e=(0,H.c)(8),{theme:t,setTheme:n}=cs(),r;e[0]!==n||e[1]!==t?(r=()=>{n(t===`light`?`dark`:t===`dark`?`light`:`dark`)},e[0]=n,e[1]=t,e[2]=r):r=e[2];let i=r,a,o,s;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,B.jsx)(nc,{className:`size-[1.2rem] scale-100 rotate-0 transition-transform dark:scale-0 dark:-rotate-90`}),o=(0,B.jsx)(Ks,{className:`absolute size-[1.2rem] scale-0 rotate-90 transition-transform dark:scale-100 dark:rotate-0`}),s=(0,B.jsx)(`span`,{className:`sr-only`,children:`Toggle theme`}),e[3]=a,e[4]=o,e[5]=s):(a=e[3],o=e[4],s=e[5]);let c;return e[6]===i?c=e[7]:(c=(0,B.jsxs)(_t,{className:`rounded-full transition-none hover:bg-transparent dark:hover:bg-transparent`,onClick:i,size:`icon-sm`,variant:`ghost`,children:[a,o,s]}),e[6]=i,e[7]=c),c}function ru(){let e=(0,H.c)(7),{isAdmin:t,license:n}=wn(),r=t&&n===`open-source`,i,a;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=Xe(`z-50 flex h-10 shrink-0 items-center gap-2 border-b border-sidebar-border bg-sidebar px-4 text-sidebar-foreground`,`sticky top-0`),a=(0,B.jsx)(Bl,{className:`-ml-1`}),e[0]=i,e[1]=a):(i=e[0],a=e[1]);let o;e[2]===r?o=e[3]:(o=r&&(0,B.jsx)(`a`,{href:`https://mulgadc.com/purchase`,target:`_blank`,rel:`noopener noreferrer`,className:Xe(mt({variant:`outline`,size:`sm`})),children:`Upgrade`}),e[2]=r,e[3]=o);let s;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,B.jsx)(nu,{}),e[4]=s):s=e[4];let c;return e[5]===o?c=e[6]:(c=(0,B.jsxs)(`header`,{className:i,children:[a,(0,B.jsxs)(`div`,{className:`flex w-full items-center justify-end gap-2`,children:[o,s]})]}),e[5]=o,e[6]=c),c}function iu(){let e=(0,H.c)(3),t,n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,B.jsx)(`h1`,{className:`text-4xl font-bold`,children:`404`}),n=(0,B.jsx)(`p`,{className:`text-muted-foreground`,children:`Page not found`}),e[0]=t,e[1]=n):(t=e[0],n=e[1]);let r;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,B.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-4`,children:[t,n,(0,B.jsx)(A,{to:`/`,children:(0,B.jsx)(_t,{variant:`outline`,children:`Go back home`})})]}),e[2]=r):r=e[2],r}function G(){let e=(0,H.c)(259),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={select:au},e[0]=t):t=e[0];let n=Jo(t),r=Ne(),i=a(),{isAdmin:o}=wn(),s;e[1]!==r||e[2]!==i?(s=function(){Ke(),Cn(),i.clear(),r({to:`/login`})},e[1]=r,e[2]=i,e[3]=s):s=e[3];let c=s,l;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,B.jsxs)(Hl,{className:`flex flex-row items-center gap-2 px-4 py-3`,children:[(0,B.jsx)(`img`,{src:`/mulga-logo.svg`,alt:`Mulga`,className:`size-6 shrink-0 dark:invert`}),(0,B.jsx)(`span`,{className:`truncate text-sm font-semibold group-data-[collapsible=icon]:hidden`,children:`Spinifex`})]}),e[4]=l):l=e[4];let u;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,B.jsx)(ql,{children:`General`}),e[5]=u):u=e[5];let d=n===`/`,f,p;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,B.jsx)(Os,{className:`size-4`}),p=(0,B.jsx)(`span`,{children:`Dashboard`}),e[6]=f,e[7]=p):(f=e[6],p=e[7]);let m;e[8]===d?m=e[9]:(m=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/`,children:(0,B.jsxs)(W,{isActive:d,tooltip:`Dashboard`,children:[f,p]})})}),e[8]=d,e[9]=m);let h;e[10]!==o||e[11]!==n?(h=o&&(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/nodes`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/nodes`),tooltip:`Nodes`,children:[(0,B.jsx)(rt,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Nodes`})]})})}),e[10]=o,e[11]=n,e[12]=h):h=e[12];let g;e[13]!==m||e[14]!==h?(g=(0,B.jsxs)(Kl,{children:[u,(0,B.jsxs)(Jl,{children:[m,h]})]}),e[13]=m,e[14]=h,e[15]=g):g=e[15];let _;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,B.jsx)(ql,{children:`EC2`}),e[16]=_):_=e[16];let v;e[17]===n?v=e[18]:(v=n.startsWith(`/ec2/describe-instances`)||n.startsWith(`/ec2/run-instances`),e[17]=n,e[18]=v);let y,b;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,B.jsx)(rt,{className:`size-4`}),b=(0,B.jsx)(`span`,{children:`Instances`}),e[19]=y,e[20]=b):(y=e[19],b=e[20]);let x;e[21]===v?x=e[22]:(x=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-instances`,children:(0,B.jsxs)(W,{isActive:v,tooltip:`Instances`,children:[y,b]})})}),e[21]=v,e[22]=x);let S;e[23]===n?S=e[24]:(S=n.startsWith(`/ec2/describe-launch-templates`)||n.startsWith(`/ec2/create-launch-template`),e[23]=n,e[24]=S);let C,w;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,B.jsx)(Es,{className:`size-4`}),w=(0,B.jsx)(`span`,{children:`Launch Templates`}),e[25]=C,e[26]=w):(C=e[25],w=e[26]);let T;e[27]===S?T=e[28]:(T=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-launch-templates`,children:(0,B.jsxs)(W,{isActive:S,tooltip:`Launch Templates`,children:[C,w]})})}),e[27]=S,e[28]=T);let E;e[29]===n?E=e[30]:(E=n.startsWith(`/ec2/describe-images`),e[29]=n,e[30]=E);let D,O;e[31]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,B.jsx)(ot,{className:`size-4`}),O=(0,B.jsx)(`span`,{children:`Images`}),e[31]=D,e[32]=O):(D=e[31],O=e[32]);let k;e[33]===E?k=e[34]:(k=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-images`,children:(0,B.jsxs)(W,{isActive:E,tooltip:`Images`,children:[D,O]})})}),e[33]=E,e[34]=k);let ee;e[35]===n?ee=e[36]:(ee=n.startsWith(`/ec2/describe-key-pairs`),e[35]=n,e[36]=ee);let te,ne;e[37]===Symbol.for(`react.memo_cache_sentinel`)?(te=(0,B.jsx)(nt,{className:`size-4`}),ne=(0,B.jsx)(`span`,{children:`Key Pairs`}),e[37]=te,e[38]=ne):(te=e[37],ne=e[38]);let re;e[39]===ee?re=e[40]:(re=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-key-pairs`,children:(0,B.jsxs)(W,{isActive:ee,tooltip:`Key Pairs`,children:[te,ne]})})}),e[39]=ee,e[40]=re);let ie;e[41]===n?ie=e[42]:(ie=n.startsWith(`/ec2/describe-addresses`)||n.startsWith(`/ec2/allocate-address`),e[41]=n,e[42]=ie);let ae,oe;e[43]===Symbol.for(`react.memo_cache_sentinel`)?(ae=(0,B.jsx)(Hs,{className:`size-4`}),oe=(0,B.jsx)(`span`,{children:`Elastic IPs`}),e[43]=ae,e[44]=oe):(ae=e[43],oe=e[44]);let se;e[45]===ie?se=e[46]:(se=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-addresses`,children:(0,B.jsxs)(W,{isActive:ie,tooltip:`Elastic IPs`,children:[ae,oe]})})}),e[45]=ie,e[46]=se);let ce;e[47]===n?ce=e[48]:(ce=n.startsWith(`/ec2/describe-volumes`)||n.startsWith(`/ec2/create-volume`)||n.startsWith(`/ec2/modify-volume`),e[47]=n,e[48]=ce);let le,ue;e[49]===Symbol.for(`react.memo_cache_sentinel`)?(le=(0,B.jsx)(it,{className:`size-4`}),ue=(0,B.jsx)(`span`,{children:`Volumes`}),e[49]=le,e[50]=ue):(le=e[49],ue=e[50]);let de;e[51]===ce?de=e[52]:(de=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-volumes`,children:(0,B.jsxs)(W,{isActive:ce,tooltip:`Volumes`,children:[le,ue]})})}),e[51]=ce,e[52]=de);let fe;e[53]===n?fe=e[54]:(fe=n.startsWith(`/ec2/describe-snapshots`)||n.startsWith(`/ec2/create-snapshot`),e[53]=n,e[54]=fe);let pe,me;e[55]===Symbol.for(`react.memo_cache_sentinel`)?(pe=(0,B.jsx)(Ze,{className:`size-4`}),me=(0,B.jsx)(`span`,{children:`Snapshots`}),e[55]=pe,e[56]=me):(pe=e[55],me=e[56]);let he;e[57]===fe?he=e[58]:(he=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-snapshots`,children:(0,B.jsxs)(W,{isActive:fe,tooltip:`Snapshots`,children:[pe,me]})})}),e[57]=fe,e[58]=he);let ge;e[59]===n?ge=e[60]:(ge=n.startsWith(`/ec2/describe-placement-groups`)||n.startsWith(`/ec2/create-placement-group`),e[59]=n,e[60]=ge);let _e,j;e[61]===Symbol.for(`react.memo_cache_sentinel`)?(_e=(0,B.jsx)(Ps,{className:`size-4`}),j=(0,B.jsx)(`span`,{children:`Placement Groups`}),e[61]=_e,e[62]=j):(_e=e[61],j=e[62]);let M;e[63]===ge?M=e[64]:(M=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-placement-groups`,children:(0,B.jsxs)(W,{isActive:ge,tooltip:`Placement Groups`,children:[_e,j]})})}),e[63]=ge,e[64]=M);let ve;e[65]===n?ve=e[66]:(ve=n.startsWith(`/ec2/describe-load-balancers`)||n.startsWith(`/ec2/create-load-balancer`),e[65]=n,e[66]=ve);let ye,be;e[67]===Symbol.for(`react.memo_cache_sentinel`)?(ye=(0,B.jsx)(at,{className:`size-4`}),be=(0,B.jsx)(`span`,{children:`Load Balancers`}),e[67]=ye,e[68]=be):(ye=e[67],be=e[68]);let xe;e[69]===ve?xe=e[70]:(xe=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-load-balancers`,children:(0,B.jsxs)(W,{isActive:ve,tooltip:`Load Balancers`,children:[ye,be]})})}),e[69]=ve,e[70]=xe);let Se;e[71]===n?Se=e[72]:(Se=n.startsWith(`/ec2/describe-target-groups`)||n.startsWith(`/ec2/create-target-group`),e[71]=n,e[72]=Se);let N,Ce;e[73]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,B.jsx)(Ss,{className:`size-4`}),Ce=(0,B.jsx)(`span`,{children:`Target Groups`}),e[73]=N,e[74]=Ce):(N=e[73],Ce=e[74]);let we;e[75]===Se?we=e[76]:(we=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-target-groups`,children:(0,B.jsxs)(W,{isActive:Se,tooltip:`Target Groups`,children:[N,Ce]})})}),e[75]=Se,e[76]=we);let Te;e[77]!==x||e[78]!==T||e[79]!==k||e[80]!==re||e[81]!==se||e[82]!==de||e[83]!==he||e[84]!==M||e[85]!==xe||e[86]!==we?(Te=(0,B.jsxs)(Kl,{children:[_,(0,B.jsxs)(Jl,{children:[x,T,k,re,se,de,he,M,xe,we]})]}),e[77]=x,e[78]=T,e[79]=k,e[80]=re,e[81]=se,e[82]=de,e[83]=he,e[84]=M,e[85]=xe,e[86]=we,e[87]=Te):Te=e[87];let Ee;e[88]===Symbol.for(`react.memo_cache_sentinel`)?(Ee=(0,B.jsx)(ql,{children:`Networking`}),e[88]=Ee):Ee=e[88];let De;e[89]===n?De=e[90]:(De=n.startsWith(`/ec2/describe-vpcs`)||n.startsWith(`/ec2/create-vpc`),e[89]=n,e[90]=De);let Oe,ke;e[91]===Symbol.for(`react.memo_cache_sentinel`)?(Oe=(0,B.jsx)(Qe,{className:`size-4`}),ke=(0,B.jsx)(`span`,{children:`VPCs`}),e[91]=Oe,e[92]=ke):(Oe=e[91],ke=e[92]);let Ae;e[93]===De?Ae=e[94]:(Ae=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-vpcs`,children:(0,B.jsxs)(W,{isActive:De,tooltip:`VPCs`,children:[Oe,ke]})})}),e[93]=De,e[94]=Ae);let je;e[95]===n?je=e[96]:(je=n.startsWith(`/ec2/describe-subnets`)||n.startsWith(`/ec2/create-subnet`),e[95]=n,e[96]=je);let Me,Pe;e[97]===Symbol.for(`react.memo_cache_sentinel`)?(Me=(0,B.jsx)(Is,{className:`size-4`}),Pe=(0,B.jsx)(`span`,{children:`Subnets`}),e[97]=Me,e[98]=Pe):(Me=e[97],Pe=e[98]);let Fe;e[99]===je?Fe=e[100]:(Fe=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-subnets`,children:(0,B.jsxs)(W,{isActive:je,tooltip:`Subnets`,children:[Me,Pe]})})}),e[99]=je,e[100]=Fe);let Ie;e[101]===n?Ie=e[102]:(Ie=n.startsWith(`/ec2/describe-security-groups`)||n.startsWith(`/ec2/create-security-group`),e[101]=n,e[102]=Ie);let Le,Re;e[103]===Symbol.for(`react.memo_cache_sentinel`)?(Le=(0,B.jsx)(ec,{className:`size-4`}),Re=(0,B.jsx)(`span`,{children:`Security Groups`}),e[103]=Le,e[104]=Re):(Le=e[103],Re=e[104]);let ze;e[105]===Ie?ze=e[106]:(ze=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-security-groups`,children:(0,B.jsxs)(W,{isActive:Ie,tooltip:`Security Groups`,children:[Le,Re]})})}),e[105]=Ie,e[106]=ze);let Be;e[107]===n?Be=e[108]:(Be=n.startsWith(`/ec2/describe-route-tables`)||n.startsWith(`/ec2/create-route-table`),e[107]=n,e[108]=Be);let Ve,He;e[109]===Symbol.for(`react.memo_cache_sentinel`)?(Ve=(0,B.jsx)(Qs,{className:`size-4`}),He=(0,B.jsx)(`span`,{children:`Route Tables`}),e[109]=Ve,e[110]=He):(Ve=e[109],He=e[110]);let Ue;e[111]===Be?Ue=e[112]:(Ue=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-route-tables`,children:(0,B.jsxs)(W,{isActive:Be,tooltip:`Route Tables`,children:[Ve,He]})})}),e[111]=Be,e[112]=Ue);let We;e[113]===n?We=e[114]:(We=n.startsWith(`/ec2/describe-internet-gateways`),e[113]=n,e[114]=We);let Ge,P;e[115]===Symbol.for(`react.memo_cache_sentinel`)?(Ge=(0,B.jsx)($e,{className:`size-4`}),P=(0,B.jsx)(`span`,{children:`Internet Gateways`}),e[115]=Ge,e[116]=P):(Ge=e[115],P=e[116]);let Je;e[117]===We?Je=e[118]:(Je=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-internet-gateways`,children:(0,B.jsxs)(W,{isActive:We,tooltip:`Internet Gateways`,children:[Ge,P]})})}),e[117]=We,e[118]=Je);let Ye;e[119]===n?Ye=e[120]:(Ye=n.startsWith(`/ec2/describe-nat-gateways`)||n.startsWith(`/ec2/create-nat-gateway`),e[119]=n,e[120]=Ye);let Xe,F;e[121]===Symbol.for(`react.memo_cache_sentinel`)?(Xe=(0,B.jsx)(et,{className:`size-4`}),F=(0,B.jsx)(`span`,{children:`NAT Gateways`}),e[121]=Xe,e[122]=F):(Xe=e[121],F=e[122]);let st;e[123]===Ye?st=e[124]:(st=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-nat-gateways`,children:(0,B.jsxs)(W,{isActive:Ye,tooltip:`NAT Gateways`,children:[Xe,F]})})}),e[123]=Ye,e[124]=st);let lt;e[125]!==Ae||e[126]!==Fe||e[127]!==ze||e[128]!==Ue||e[129]!==Je||e[130]!==st?(lt=(0,B.jsxs)(Kl,{children:[Ee,(0,B.jsxs)(Jl,{children:[Ae,Fe,ze,Ue,Je,st]})]}),e[125]=Ae,e[126]=Fe,e[127]=ze,e[128]=Ue,e[129]=Je,e[130]=st,e[131]=lt):lt=e[131];let ut;e[132]===Symbol.for(`react.memo_cache_sentinel`)?(ut=(0,B.jsx)(ql,{children:`Containers`}),e[132]=ut):ut=e[132];let dt;e[133]===n?dt=e[134]:(dt=n.startsWith(`/eks/list-clusters`)||n.startsWith(`/eks/create-cluster`),e[133]=n,e[134]=dt);let ft,pt;e[135]===Symbol.for(`react.memo_cache_sentinel`)?(ft=(0,B.jsx)(ms,{className:`size-4`}),pt=(0,B.jsx)(`span`,{children:`EKS`}),e[135]=ft,e[136]=pt):(ft=e[135],pt=e[136]);let mt;e[137]===dt?mt=e[138]:(mt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/eks/list-clusters`,children:(0,B.jsxs)(W,{isActive:dt,tooltip:`EKS clusters`,children:[ft,pt]})})}),e[137]=dt,e[138]=mt);let ht;e[139]===n?ht=e[140]:(ht=n.startsWith(`/ecr/list-repositories`),e[139]=n,e[140]=ht);let gt,_t;e[141]===Symbol.for(`react.memo_cache_sentinel`)?(gt=(0,B.jsx)(Js,{className:`size-4`}),_t=(0,B.jsx)(`span`,{children:`ECR`}),e[141]=gt,e[142]=_t):(gt=e[141],_t=e[142]);let vt;e[143]===ht?vt=e[144]:(vt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ecr/list-repositories`,children:(0,B.jsxs)(W,{isActive:ht,tooltip:`ECR repositories`,children:[gt,_t]})})}),e[143]=ht,e[144]=vt);let yt;e[145]===n?yt=e[146]:(yt=n.startsWith(`/ecs/`),e[145]=n,e[146]=yt);let bt,xt;e[147]===Symbol.for(`react.memo_cache_sentinel`)?(bt=(0,B.jsx)(bs,{className:`size-4`}),xt=(0,B.jsx)(`span`,{children:`ECS`}),e[147]=bt,e[148]=xt):(bt=e[147],xt=e[148]);let St;e[149]===yt?St=e[150]:(St=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ecs/list-clusters`,children:(0,B.jsxs)(W,{isActive:yt,tooltip:`ECS clusters`,children:[bt,xt]})})}),e[149]=yt,e[150]=St);let Ct;e[151]!==mt||e[152]!==vt||e[153]!==St?(Ct=(0,B.jsxs)(Kl,{children:[ut,(0,B.jsxs)(Jl,{children:[mt,vt,St]})]}),e[151]=mt,e[152]=vt,e[153]=St,e[154]=Ct):Ct=e[154];let wt;e[155]===Symbol.for(`react.memo_cache_sentinel`)?(wt=(0,B.jsx)(ql,{children:`RDS`}),e[155]=wt):wt=e[155];let I;e[156]===n?I=e[157]:(I=n.startsWith(`/rds/describe-db-instances`)||n.startsWith(`/rds/create-db-instance`),e[156]=n,e[157]=I);let Tt,Et;e[158]===Symbol.for(`react.memo_cache_sentinel`)?(Tt=(0,B.jsx)(ws,{className:`size-4`}),Et=(0,B.jsx)(`span`,{children:`Databases`}),e[158]=Tt,e[159]=Et):(Tt=e[158],Et=e[159]);let Dt;e[160]===I?Dt=e[161]:(Dt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/rds/describe-db-instances`,children:(0,B.jsxs)(W,{isActive:I,tooltip:`Databases`,children:[Tt,Et]})})}),e[160]=I,e[161]=Dt);let Ot;e[162]===n?Ot=e[163]:(Ot=n.startsWith(`/rds/describe-db-snapshots`)||n.startsWith(`/rds/restore-db-instance-from-db-snapshot`),e[162]=n,e[163]=Ot);let kt,At;e[164]===Symbol.for(`react.memo_cache_sentinel`)?(kt=(0,B.jsx)(Ze,{className:`size-4`}),At=(0,B.jsx)(`span`,{children:`Snapshots`}),e[164]=kt,e[165]=At):(kt=e[164],At=e[165]);let jt;e[166]===Ot?jt=e[167]:(jt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/rds/describe-db-snapshots`,children:(0,B.jsxs)(W,{isActive:Ot,tooltip:`DB Snapshots`,children:[kt,At]})})}),e[166]=Ot,e[167]=jt);let Mt;e[168]===n?Mt=e[169]:(Mt=n.startsWith(`/rds/describe-db-subnet-groups`)||n.startsWith(`/rds/create-db-subnet-group`),e[168]=n,e[169]=Mt);let Nt,Pt;e[170]===Symbol.for(`react.memo_cache_sentinel`)?(Nt=(0,B.jsx)(Is,{className:`size-4`}),Pt=(0,B.jsx)(`span`,{children:`Subnet Groups`}),e[170]=Nt,e[171]=Pt):(Nt=e[170],Pt=e[171]);let Ft;e[172]===Mt?Ft=e[173]:(Ft=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/rds/describe-db-subnet-groups`,children:(0,B.jsxs)(W,{isActive:Mt,tooltip:`DB Subnet Groups`,children:[Nt,Pt]})})}),e[172]=Mt,e[173]=Ft);let It;e[174]===n?It=e[175]:(It=n.startsWith(`/rds/describe-db-parameter-groups`)||n.startsWith(`/rds/create-db-parameter-group`),e[174]=n,e[175]=It);let Lt,Rt;e[176]===Symbol.for(`react.memo_cache_sentinel`)?(Lt=(0,B.jsx)(ct,{className:`size-4`}),Rt=(0,B.jsx)(`span`,{children:`Parameter Groups`}),e[176]=Lt,e[177]=Rt):(Lt=e[176],Rt=e[177]);let zt;e[178]===It?zt=e[179]:(zt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/rds/describe-db-parameter-groups`,children:(0,B.jsxs)(W,{isActive:It,tooltip:`DB Parameter Groups`,children:[Lt,Rt]})})}),e[178]=It,e[179]=zt);let Bt;e[180]!==jt||e[181]!==Ft||e[182]!==zt||e[183]!==Dt?(Bt=(0,B.jsxs)(Kl,{children:[wt,(0,B.jsxs)(Jl,{children:[Dt,jt,Ft,zt]})]}),e[180]=jt,e[181]=Ft,e[182]=zt,e[183]=Dt,e[184]=Bt):Bt=e[184];let Vt;e[185]===Symbol.for(`react.memo_cache_sentinel`)?(Vt=(0,B.jsx)(ql,{children:`IAM`}),e[185]=Vt):Vt=e[185];let Ht;e[186]===n?Ht=e[187]:(Ht=n.startsWith(`/iam/list-users`)||n.startsWith(`/iam/create-user`),e[186]=n,e[187]=Ht);let Ut,Wt;e[188]===Symbol.for(`react.memo_cache_sentinel`)?(Ut=(0,B.jsx)(cc,{className:`size-4`}),Wt=(0,B.jsx)(`span`,{children:`Users`}),e[188]=Ut,e[189]=Wt):(Ut=e[188],Wt=e[189]);let Gt;e[190]===Ht?Gt=e[191]:(Gt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/iam/list-users`,children:(0,B.jsxs)(W,{isActive:Ht,tooltip:`Users`,children:[Ut,Wt]})})}),e[190]=Ht,e[191]=Gt);let Kt;e[192]===n?Kt=e[193]:(Kt=n.startsWith(`/iam/list-groups`)||n.startsWith(`/iam/create-group`),e[192]=n,e[193]=Kt);let L,qt;e[194]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,B.jsx)(oc,{className:`size-4`}),qt=(0,B.jsx)(`span`,{children:`Groups`}),e[194]=L,e[195]=qt):(L=e[194],qt=e[195]);let Jt;e[196]===Kt?Jt=e[197]:(Jt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/iam/list-groups`,children:(0,B.jsxs)(W,{isActive:Kt,tooltip:`Groups`,children:[L,qt]})})}),e[196]=Kt,e[197]=Jt);let Yt;e[198]===n?Yt=e[199]:(Yt=n.startsWith(`/iam/list-policies`)||n.startsWith(`/iam/create-policy`),e[198]=n,e[199]=Yt);let Xt,Zt;e[200]===Symbol.for(`react.memo_cache_sentinel`)?(Xt=(0,B.jsx)(tt,{className:`size-4`}),Zt=(0,B.jsx)(`span`,{children:`Policies`}),e[200]=Xt,e[201]=Zt):(Xt=e[200],Zt=e[201]);let Qt;e[202]===Yt?Qt=e[203]:(Qt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/iam/list-policies`,children:(0,B.jsxs)(W,{isActive:Yt,tooltip:`Policies`,children:[Xt,Zt]})})}),e[202]=Yt,e[203]=Qt);let $t;e[204]===n?$t=e[205]:($t=n.startsWith(`/iam/list-roles`)||n.startsWith(`/iam/create-role`),e[204]=n,e[205]=$t);let en,tn;e[206]===Symbol.for(`react.memo_cache_sentinel`)?(en=(0,B.jsx)(ic,{className:`size-4`}),tn=(0,B.jsx)(`span`,{children:`Roles`}),e[206]=en,e[207]=tn):(en=e[206],tn=e[207]);let nn;e[208]===$t?nn=e[209]:(nn=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/iam/list-roles`,children:(0,B.jsxs)(W,{isActive:$t,tooltip:`Roles`,children:[en,tn]})})}),e[208]=$t,e[209]=nn);let rn;e[210]===n?rn=e[211]:(rn=n.startsWith(`/iam/list-instance-profiles`)||n.startsWith(`/iam/create-instance-profile`),e[210]=n,e[211]=rn);let an,on;e[212]===Symbol.for(`react.memo_cache_sentinel`)?(an=(0,B.jsx)(As,{className:`size-4`}),on=(0,B.jsx)(`span`,{children:`Instance Profiles`}),e[212]=an,e[213]=on):(an=e[212],on=e[213]);let sn;e[214]===rn?sn=e[215]:(sn=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/iam/list-instance-profiles`,children:(0,B.jsxs)(W,{isActive:rn,tooltip:`Instance Profiles`,children:[an,on]})})}),e[214]=rn,e[215]=sn);let cn;e[216]!==Gt||e[217]!==Jt||e[218]!==Qt||e[219]!==nn||e[220]!==sn?(cn=(0,B.jsxs)(Kl,{children:[Vt,(0,B.jsxs)(Jl,{children:[Gt,Jt,Qt,nn,sn]})]}),e[216]=Gt,e[217]=Jt,e[218]=Qt,e[219]=nn,e[220]=sn,e[221]=cn):cn=e[221];let ln;e[222]===Symbol.for(`react.memo_cache_sentinel`)?(ln=(0,B.jsx)(ql,{children:`S3`}),e[222]=ln):ln=e[222];let un;e[223]===n?un=e[224]:(un=n.startsWith(`/s3/ls`),e[223]=n,e[224]=un);let dn,fn;e[225]===Symbol.for(`react.memo_cache_sentinel`)?(dn=(0,B.jsx)(rt,{className:`size-4`}),fn=(0,B.jsx)(`span`,{children:`Buckets`}),e[225]=dn,e[226]=fn):(dn=e[225],fn=e[226]);let pn;e[227]===un?pn=e[228]:(pn=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/s3/ls`,children:(0,B.jsxs)(W,{isActive:un,tooltip:`Buckets`,children:[dn,fn]})})}),e[227]=un,e[228]=pn);let mn;e[229]!==o||e[230]!==n?(mn=o&&(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/s3/service-metrics`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/s3/service-metrics`),tooltip:`Service Metrics`,children:[(0,B.jsx)(us,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Service Metrics`})]})})}),e[229]=o,e[230]=n,e[231]=mn):mn=e[231];let hn;e[232]!==pn||e[233]!==mn?(hn=(0,B.jsxs)(Kl,{children:[ln,(0,B.jsxs)(Jl,{children:[pn,mn]})]}),e[232]=pn,e[233]=mn,e[234]=hn):hn=e[234];let gn;e[235]!==o||e[236]!==n?(gn=qe()&&(0,B.jsxs)(Kl,{children:[(0,B.jsx)(ql,{children:`Ochre`}),(0,B.jsxs)(Jl,{children:[(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/bedrock/list-knowledge-bases`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/bedrock/list-knowledge-bases`),tooltip:`Knowledge Bases`,children:[(0,B.jsx)(gs,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Knowledge Bases`})]})})}),(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/bedrock/list-guardrails`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/bedrock/list-guardrails`),tooltip:`Guardrails`,children:[(0,B.jsx)(tt,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Guardrails`})]})})}),(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/bedrock/playground`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/bedrock/playground`),tooltip:`Playground`,children:[(0,B.jsx)(Ws,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Playground`})]})})}),o&&(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/bedrock/list-model-catalog`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/bedrock/list-model-catalog`),tooltip:`Model Catalog`,children:[(0,B.jsx)(Rs,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Model Catalog`})]})})}),o&&(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/bedrock/list-model-access`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/bedrock/list-model-access`),tooltip:`Model Access`,children:[(0,B.jsx)(Ms,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Model Access`})]})})})]})]}),e[235]=o,e[236]=n,e[237]=gn):gn=e[237];let _n;e[238]===o?_n=e[239]:(_n=o&&(0,B.jsxs)(Kl,{children:[(0,B.jsx)(ql,{children:`Documentation`}),(0,B.jsx)(Jl,{children:(0,B.jsx)(U,{children:(0,B.jsx)(`a`,{href:`https://docs.mulgadc.com`,target:`_blank`,rel:`noopener noreferrer`,children:(0,B.jsxs)(W,{tooltip:`Documentation`,children:[(0,B.jsx)(fs,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Docs`})]})})})})]}),e[238]=o,e[239]=_n);let vn;e[240]!==Bt||e[241]!==cn||e[242]!==hn||e[243]!==gn||e[244]!==_n||e[245]!==Te||e[246]!==lt||e[247]!==g||e[248]!==Ct?(vn=(0,B.jsxs)(Gl,{children:[g,Te,lt,Ct,Bt,cn,hn,gn,_n]}),e[240]=Bt,e[241]=cn,e[242]=hn,e[243]=gn,e[244]=_n,e[245]=Te,e[246]=lt,e[247]=g,e[248]=Ct,e[249]=vn):vn=e[249];let yn;e[250]===Symbol.for(`react.memo_cache_sentinel`)?(yn=(0,B.jsx)(Wl,{className:`mx-0 w-full`}),e[250]=yn):yn=e[250];let bn,xn;e[251]===Symbol.for(`react.memo_cache_sentinel`)?(bn=(0,B.jsx)(Bs,{className:`size-4`}),xn=(0,B.jsx)(`span`,{children:`Sign out`}),e[251]=bn,e[252]=xn):(bn=e[251],xn=e[252]);let Sn;e[253]===c?Sn=e[254]:(Sn=(0,B.jsxs)(Ul,{children:[yn,(0,B.jsx)(Jl,{children:(0,B.jsx)(U,{children:(0,B.jsxs)(W,{onClick:c,tooltip:`Sign out`,children:[bn,xn]})})})]}),e[253]=c,e[254]=Sn);let Tn;e[255]===Symbol.for(`react.memo_cache_sentinel`)?(Tn=(0,B.jsx)(Vl,{}),e[255]=Tn):Tn=e[255];let En;return e[256]!==vn||e[257]!==Sn?(En=(0,B.jsxs)(zl,{collapsible:`icon`,children:[l,vn,Sn,Tn]}),e[256]=vn,e[257]=Sn,e[258]=En):En=e[258],En}function au(e){return e.pathname}function ou(e){let t=(0,H.c)(18),{error:n,reset:r}=e,i=ke(),o=a(),s;t[0]!==o||t[1]!==r||t[2]!==i?(s=function(){o.invalidateQueries(),r(),i.invalidate()},t[0]=o,t[1]=r,t[2]=i,t[3]=s):s=t[3];let c=s,l;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,B.jsx)(G,{}),t[4]=l):l=t[4];let u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,B.jsx)(ru,{}),t[5]=u):u=t[5];let d,f;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,B.jsx)(`div`,{className:`flex justify-center`,children:(0,B.jsx)(vs,{className:`size-12 text-destructive`})}),f=(0,B.jsx)(`h1`,{className:`text-2xl font-semibold`,children:`Something went wrong`}),t[6]=d,t[7]=f):(d=t[6],f=t[7]);let p=(n instanceof Error?n.message:String(n))||`An unexpected error occurred`,m;t[8]===p?m=t[9]:(m=(0,B.jsx)(`p`,{className:`text-muted-foreground`,children:p}),t[8]=p,t[9]=m);let h;t[10]===c?h=t[11]:(h=(0,B.jsx)(_t,{onClick:c,variant:`default`,children:`Try Again`}),t[10]=c,t[11]=h);let g;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,B.jsx)(A,{to:`/`,children:(0,B.jsx)(_t,{variant:`outline`,children:`Go Home`})}),t[12]=g):g=t[12];let _;t[13]===h?_=t[14]:(_=(0,B.jsxs)(`div`,{className:`flex justify-center gap-2`,children:[h,g]}),t[13]=h,t[14]=_);let v;return t[15]!==_||t[16]!==m?(v=(0,B.jsxs)(B.Fragment,{children:[l,(0,B.jsxs)(`main`,{className:`flex flex-1 flex-col`,children:[u,(0,B.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-6 pt-0`,children:(0,B.jsxs)(`div`,{className:`max-w-md space-y-4 text-center`,children:[d,f,m,_]})})]})]}),t[15]=_,t[16]=m,t[17]=v):v=t[17],v}var su=E()({head:()=>({meta:[{title:`Mulga`}]}),component:()=>(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(es,{}),(0,B.jsx)(G,{}),(0,B.jsxs)(`main`,{className:`flex flex-1 flex-col`,children:[(0,B.jsx)(ru,{}),(0,B.jsx)(`div`,{className:`flex flex-1 flex-col p-8`,children:(0,B.jsx)(be,{})})]})]}),errorComponent:ou,notFoundComponent:iu}),cu=w(`/_auth`)({beforeLoad:()=>{if(!Je())throw Ee({to:`/login`})},component:D(()=>P(()=>import(`./route-DPFKZkGs.js`),__vite__mapDeps([0,1,2,3,4,5])),`component`)}),lu=w(`/_auth/`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...zn,staleTime:`static`}),e.queryClient.query({...An,staleTime:`static`}),e.queryClient.query({...Mn,staleTime:`static`}),e.queryClient.query({...Hn,staleTime:`static`}),e.queryClient.query({...lr,staleTime:`static`}),e.queryClient.query({...Wn,staleTime:`static`}),e.queryClient.query({...Fn,staleTime:`static`}),e.queryClient.query({...Bn,staleTime:`static`}),e.queryClient.query({...Ln,staleTime:`static`})])},head:()=>({meta:[{title:`Dashboard | Mulga`}]}),component:D(()=>P(()=>import(`./_auth-DsyoN1M9.js`),__vite__mapDeps([6,1,7,8,9,10,11,4,5,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38])),`component`)}),uu=w(`/_auth/bedrock`)({beforeLoad:()=>{qe()||N({throw:!0})},component:D(()=>P(()=>import(`./route-n5jLl8qw.js`),__vite__mapDeps([39,1,2,3,4,5])),`component`)}),du=w(`/_auth/nodes`)({head:()=>({meta:[{title:`Nodes | Mulga`}]}),component:D(()=>P(()=>import(`./nodes-CWh9D30I.js`),__vite__mapDeps([40,1,7,8,9,10,11,4,5,41,12,13,15,14,16,18,19,20,26,27,28,29,30,31,22])),`component`)}),fu=w(`/_auth/s3/service-metrics`)({head:()=>({meta:[{title:`Service Metrics | S3 | Mulga`}]}),component:D(()=>P(()=>import(`./service-metrics-C6gBIZci.js`),__vite__mapDeps([42,1,7,8,9,10,41,18,12,13,19,20,26,27,28,29,30,31,22])),`component`)}),pu=w(`/_auth/ec2/(elastic-ips)/allocate-address`)({head:()=>({meta:[{title:`Allocate Elastic IP | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./allocate-address-CDvylWBR.js`),__vite__mapDeps([43,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,62])),`component`)}),mu=w(`/_auth/ec2/(internet-gateways)/create-internet-gateway`)({head:()=>({meta:[{title:`Create Internet Gateway | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-internet-gateway-CGStzV_5.js`),__vite__mapDeps([63,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,62])),`component`)}),hu=w(`/_auth/ec2/(key)/create-key-pair`)({head:()=>({meta:[{title:`Create Key Pair | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-key-pair-CKL_t5ui.js`),__vite__mapDeps([64,1,44,4,5,45,11,14,47,65,35,28,12,13,33,36,15,51,37,66,67,52,68,69,46,48,49,70,50,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,32,34,62])),`component`)}),gu=w(`/_auth/ec2/(key)/import-key-pair`)({head:()=>({meta:[{title:`Import Key Pair | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./import-key-pair-kETKjfrj.js`),__vite__mapDeps([71,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,72,62])),`component`)}),_u=w(`/_auth/ec2/(launch-templates)/create-launch-template`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...Vn,staleTime:`static`}),e.queryClient.query({...In,staleTime:`static`}),e.queryClient.query({...Hn,staleTime:`static`}),e.queryClient.query({...Nn,staleTime:`static`}),e.queryClient.query({...Wn,staleTime:`static`})])},head:()=>({meta:[{title:`Create Launch Template | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-launch-template-vwPKoZ8a.js`),__vite__mapDeps([73,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,62,74,75,8,10,65,35,37,66,67,68,72,76])),`component`)}),vu=w(`/_auth/ec2/(load-balancers)/create-load-balancer`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...Mn,staleTime:`static`}),e.queryClient.query({...Nn,staleTime:`static`}),e.queryClient.query({...Wn,staleTime:`static`}),e.queryClient.query({...Qn,staleTime:`static`}),e.queryClient.query({...En,staleTime:`static`}),e.queryClient.query({...Zn,staleTime:`static`})])},head:()=>({meta:[{title:`Create Load Balancer | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-load-balancer-BBKiIxj3.js`),__vite__mapDeps([77,1,75,8,9,10,44,4,5,12,13,45,11,14,65,35,28,33,36,47,15,51,37,66,67,52,68,46,48,49,50,78,22,23,24,79,54,55,58,60,61,72,32,34,21,80,81,82,26,57,59,83,84,85,86,76,87])),`component`)}),yu=w(`/_auth/ec2/(nat-gateways)/create-nat-gateway`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...Nn,staleTime:`static`}),e.queryClient.query({...Bn,staleTime:`static`})])},head:()=>({meta:[{title:`Create NAT Gateway | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-nat-gateway-C0zhuUio.js`),__vite__mapDeps([88,1,75,8,9,10,11,4,5,44,12,13,45,14,65,35,28,33,36,47,15,51,37,66,67,52,68,46,48,49,50,21,22,23,24,53,54,55,56,26,57,58,59,60,61,62])),`component`)}),bu=w(`/_auth/ec2/(placement-groups)/create-placement-group`)({head:()=>({meta:[{title:`Create Placement Group | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-placement-group-D_3YKZZQ.js`),__vite__mapDeps([89,1,44,4,5,45,11,14,65,35,28,12,13,33,36,47,15,51,37,66,67,52,68,46,48,49,50,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,62])),`component`)}),xu=w(`/_auth/ec2/(route-tables)/create-route-table`)({loader:async({context:e})=>{await e.queryClient.query({...Mn,staleTime:`static`})},head:()=>({meta:[{title:`Create Route Table | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-route-table-q3_xIq0T.js`),__vite__mapDeps([90,1,75,8,9,10,44,4,5,12,13,45,11,14,65,35,28,33,36,47,15,51,37,66,67,52,68,50,21,22,23,24,53,54,55,56,26,57,58,59,60,61,62])),`component`)}),Su=w(`/_auth/ec2/(security-groups)/create-security-group`)({loader:async({context:e})=>{await e.queryClient.query({...Mn,staleTime:`static`})},head:()=>({meta:[{title:`Create Security Group | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-security-group-BD7bwg9p.js`),__vite__mapDeps([91,1,75,8,9,10,44,4,5,12,13,45,11,14,65,35,28,33,36,47,15,51,37,66,67,52,68,46,48,49,50,21,22,23,24,53,54,55,56,26,57,58,59,60,61,62])),`component`)}),Cu=w(`/_auth/ec2/(subnet)/create-subnet`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...Mn,staleTime:`static`}),e.queryClient.query({...Un,staleTime:`static`})])},head:()=>({meta:[{title:`Create Subnet | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-subnet-BXdYKpy-.js`),__vite__mapDeps([92,1,75,8,9,10,44,4,5,12,13,45,11,14,65,35,28,33,36,47,15,51,37,66,67,52,68,46,48,49,50,21,22,23,24,53,54,55,56,26,57,58,59,60,61,62])),`component`)}),wu=w(`/_auth/ec2/(target-groups)/create-target-group`)({loader:async({context:e})=>{await e.queryClient.query({...Mn,staleTime:`static`})},head:()=>({meta:[{title:`Create Target Group | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-target-group-CSrYTK6r.js`),__vite__mapDeps([93,1,75,8,9,10,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,21,22,23,24,80,54,55,81,26,57,58,59,86,65,35,36,51,37,66,67,52,68,50,60,61,83,84,85,76,87])),`component`)}),Tu=w(`/_auth/ec2/(volumes)/create-volume`)({loader:async({context:e})=>{await e.queryClient.query({...Un,staleTime:`static`})},head:()=>({meta:[{title:`Create Volume | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-volume-BamGr8Qm.js`),__vite__mapDeps([94,1,75,8,9,10,44,4,5,45,11,14,65,35,28,12,13,33,36,47,15,51,37,66,67,52,68,46,48,49,50,21,22,23,24,53,54,55,56,26,57,58,59,60,61,62])),`component`)}),Eu=w(`/_auth/ec2/(vpc)/create-vpc`)({head:()=>({meta:[{title:`Create VPC | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-vpc-CyDH_vpB.js`),__vite__mapDeps([95,1,44,4,5,45,11,14,15,16,65,35,28,12,13,33,36,47,51,37,66,67,52,68,46,48,49,50,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,62])),`component`)}),Du=w(`/_auth/ecs/(clusters)/task-definitions`)({loader:async({context:e})=>{await e.queryClient.query({...Jn,staleTime:`static`})},head:()=>({meta:[{title:`Task Definitions | ECS | Mulga`}]}),component:D(()=>P(()=>import(`./task-definitions-qkfdMMhk.js`),__vite__mapDeps([96,1,75,8,9,10,11,4,5,33,28,12,13,97,22,23,24,98,54,55,20,26,58,99,32,34,35,36,37,100])),`component`)}),Ou=w(`/_auth/eks/(clusters)/create-cluster`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...Mn,staleTime:`static`}),e.queryClient.query({...Nn,staleTime:`static`}),e.queryClient.query({...rr,staleTime:`static`}),e.queryClient.query({...Vn,staleTime:`static`})])},head:()=>({meta:[{title:`Create Cluster | EKS | Mulga`}]}),component:D(()=>P(()=>import(`./create-cluster-eQiUzhUk.js`),__vite__mapDeps([101,1,9,75,8,10,44,4,5,12,13,45,11,14,65,35,28,33,36,47,15,51,37,66,67,52,68,50,21,22,23,24,102,54,55,103,104,56,105,106,107,26,57,58,59,60,61,32,34,108,109,48,110,70,49,111])),`component`)}),ku=w(`/_auth/iam/(groups)/create-group`)({head:()=>({meta:[{title:`Create Group | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./create-group-6mVlm4h5.js`),__vite__mapDeps([112,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,105,9,54,55,23,24,106,26,57,58,59,60,61,113,104])),`component`)}),Au=w(`/_auth/iam/(instance-profiles)/create-instance-profile`)({head:()=>({meta:[{title:`Create Instance Profile | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./create-instance-profile-CgetPfkP.js`),__vite__mapDeps([114,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,105,9,54,55,23,24,106,26,57,58,59,60,61,113,104])),`component`)}),ju=w(`/_auth/iam/(policies)/create-policy`)({head:()=>({meta:[{title:`Create Policy | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./create-policy-BJFldcK3.js`),__vite__mapDeps([115,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,105,9,54,55,23,24,106,26,57,58,59,60,61,116,104,72,113])),`component`)}),Mu=w(`/_auth/iam/(roles)/create-role`)({head:()=>({meta:[{title:`Create Role | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./create-role-DvSx0q-L.js`),__vite__mapDeps([117,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,105,9,54,55,23,24,106,26,57,58,59,60,61,116,104,72,113])),`component`)}),Nu=w(`/_auth/iam/(users)/create-user`)({head:()=>({meta:[{title:`Create User | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./create-user-Bv8sj586.js`),__vite__mapDeps([118,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,105,9,54,55,23,24,106,26,57,58,59,60,61,113,104])),`component`)}),Pu=w(`/_auth/rds/(db-instances)/create-db-instance`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...sr,staleTime:`static`}),e.queryClient.query({...or,staleTime:`static`}),e.queryClient.query({...ar,staleTime:`static`}),e.queryClient.query({...Wn,staleTime:`static`}),e.queryClient.query({...Mn,staleTime:`static`}),e.queryClient.query({...Vn,staleTime:`static`})])},head:()=>({meta:[{title:`Create Database | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./create-db-instance-CY_ivPtb.js`),__vite__mapDeps([119,1,9,7,8,10,75,44,4,5,45,11,14,65,35,28,12,13,33,36,47,15,51,37,66,67,52,68,46,48,49,50,21,22,23,24,120,121,54,55,122,26,57,58,59,60,61,83,84,85,108,109,110,70,123,124])),`component`)}),Fu=w(`/_auth/rds/(parameter-groups)/create-db-parameter-group`)({loader:async({context:e})=>{await e.queryClient.query({...sr,staleTime:`static`})},head:()=>({meta:[{title:`Create Parameter Group | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./create-db-parameter-group-CkK-hDRM.js`),__vite__mapDeps([125,1,75,8,9,10,44,4,5,45,11,14,65,35,28,12,13,33,36,47,15,51,37,66,67,52,68,46,48,49,50,120,23,24,121,54,55,122,22,26,57,58,59,60,61,83,84,85])),`component`)}),Iu=w(`/_auth/rds/(subnet-groups)/create-db-subnet-group`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...Nn,staleTime:`static`}),e.queryClient.query({...Mn,staleTime:`static`})])},head:()=>({meta:[{title:`Create Subnet Group | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./create-db-subnet-group-BV65rf5O.js`),__vite__mapDeps([126,1,75,8,9,10,44,4,5,12,13,45,11,14,46,47,15,48,33,28,49,50,36,51,52,21,22,23,24,120,121,54,55,26,57,58,59,60,61,83,84,85])),`component`)}),Lu=w(`/_auth/s3/(buckets)/create-bucket`)({head:()=>({meta:[{title:`Create Bucket | S3 | Mulga`}]}),component:D(()=>P(()=>import(`./create-bucket-B5kEkFpz.js`),__vite__mapDeps([127,1,44,4,5,12,13,45,11,14,46,47,15,48,33,28,49,50,36,51,52,128,9,54,55,23,24,26,57,58,59,60,61])),`component`)}),Ru=w(`/_auth/s3/ls/`)({loader:async({context:e})=>{await e.queryClient.query({...lr,staleTime:`static`})},head:()=>({meta:[{title:`Buckets | S3 | Mulga`}]}),component:D(()=>P(()=>import(`./ls-XgxEPnDq.js`),__vite__mapDeps([129,1,75,8,9,10,11,4,5,12,13,33,28,25,22,23,24,26,130])),`component`)}),zu=w(`/_auth/s3/ls/$bucket`)({component:D(()=>P(()=>import(`./route-DtXjPAiX.js`),__vite__mapDeps([131,1,2,3,4,5])),`component`)}),Bu=w(`/_auth/bedrock/(catalog)/list-model-catalog/`)({head:()=>({meta:[{title:`Model Catalog | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./list-model-catalog-CPZ8xUbd.js`),__vite__mapDeps([132,1,7,8,9,10,41,12,13,18,19,20,26,27,28,29,30,31,22])),`component`)}),Vu=w(`/_auth/bedrock/(guardrails)/list-guardrails/`)({loader:async({context:e})=>{await e.queryClient.query({...Dn,staleTime:`static`})},head:()=>({meta:[{title:`Guardrails | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./list-guardrails-DYYlNj8n.js`),__vite__mapDeps([133,1,75,8,9,10,11,4,5,33,28,12,13,134,22,23,24,135,26,38,130])),`component`)}),Hu=w(`/_auth/bedrock/(guardrails)/list-guardrails/create`)({head:()=>({meta:[{title:`Create Guardrail | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./create-CoZioQAG.js`),__vite__mapDeps([136,1,137,9,54,55,12,13,23,24,135,138,44,4,5,45,11,14,65,35,28,33,36,47,15,51,37,66,67,52,68,84,85,50,26,57,58,59,60,61,83,72])),`component`)}),Uu=w(`/_auth/bedrock/(knowledge-bases)/list-knowledge-bases/`)({loader:async({context:e})=>{await e.queryClient.query({...kn,staleTime:`static`})},head:()=>({meta:[{title:`Knowledge Bases | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./list-knowledge-bases-CH_zlnnr.js`),__vite__mapDeps([139,1,75,8,9,10,11,4,5,33,28,12,13,140,22,23,24,141,26,38,130])),`component`)}),Wu=w(`/_auth/bedrock/(knowledge-bases)/list-knowledge-bases/create`)({loader:async({context:e})=>{await e.queryClient.query({...On,staleTime:`static`})},head:()=>({meta:[{title:`Create Knowledge Base | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./create-uNWIyxX8.js`),__vite__mapDeps([142,1,75,8,9,10,44,4,5,45,11,14,65,35,28,12,13,33,36,47,15,51,37,66,67,52,68,50,134,22,23,24,135,143,54,55,141,26,57,58,59,60,61,72])),`component`)}),Gu=w(`/_auth/bedrock/(model-access)/list-model-access/`)({head:()=>({meta:[{title:`Model Access | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./list-model-access-Ds5MpzNH.js`),__vite__mapDeps([144,1,9,54,55,7,8,10,41,65,35,28,12,13,33,36,14,47,15,51,37,5,66,67,52,68,50,18,19,20,26,27,29,30,31,22,60,61])),`component`)}),Ku=w(`/_auth/bedrock/(playground)/playground/`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...On,staleTime:`static`}),e.queryClient.query({...Dn,staleTime:`static`})])},head:()=>({meta:[{title:`Playground | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./playground-zdI5o66q.js`),__vite__mapDeps([145,1,54,9,55,75,8,10,12,13,15,14,65,35,28,33,36,47,51,37,5,66,67,52,68,46,48,49,50,23,24,134,22,135,146,26,27,29,60,61,72])),`component`)}),qu=w(`/_auth/ec2/(elastic-ips)/describe-addresses/`)({loader:async({context:e})=>{await e.queryClient.query({...Bn,staleTime:`static`})},head:()=>({meta:[{title:`Elastic IPs | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-addresses-DKlK9Anw.js`),__vite__mapDeps([147,1,75,8,9,10,11,4,5,12,13,33,28,21,22,23,24,26,130])),`component`)}),Ju=w(`/_auth/ec2/(images)/describe-images/`)({loader:async({context:e})=>{await e.queryClient.query({...Vn,staleTime:`static`})},head:()=>({meta:[{title:`Images | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-images-Zp7giKqa.js`),__vite__mapDeps([148,1,75,8,9,10,21,22,12,13,23,24,26,38,130,11,4,5,108])),`component`)}),Yu=w(`/_auth/ec2/(instances)/describe-instances/`)({loader:async({context:e})=>{await e.queryClient.query({...zn,staleTime:`static`})},head:()=>({meta:[{title:`Instances | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-instances-BK0FW0LB.js`),__vite__mapDeps([149,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,38,130])),`component`)}),Xu=w(`/_auth/ec2/(internet-gateways)/describe-internet-gateways/`)({loader:async({context:e})=>{await e.queryClient.query({...Ln,staleTime:`static`})},head:()=>({meta:[{title:`Internet Gateways | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-internet-gateways-CiiBScpk.js`),__vite__mapDeps([150,1,75,8,9,10,11,4,5,12,13,33,28,21,22,23,24,26,130])),`component`)}),Zu=w(`/_auth/ec2/(key)/describe-key-pairs/`)({loader:async({context:e})=>{await e.queryClient.query({...Hn,staleTime:`static`})},head:()=>({meta:[{title:`Key Pairs | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-key-pairs-BRKxsJWn.js`),__vite__mapDeps([151,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,130])),`component`)}),Qu=w(`/_auth/ec2/(launch-templates)/describe-launch-templates/`)({loader:async({context:e})=>{await e.queryClient.query({...Rn,staleTime:`static`})},head:()=>({meta:[{title:`Launch Templates | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-launch-templates-BuaCkV_y.js`),__vite__mapDeps([152,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,27,29,130])),`component`)}),$u=w(`/_auth/ec2/(load-balancers)/describe-load-balancers/`)({loader:async({context:e})=>{await e.queryClient.query({...Xn,staleTime:`static`})},head:()=>({meta:[{title:`Load Balancers | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-load-balancers-ayJnDdyt.js`),__vite__mapDeps([153,1,75,8,9,10,11,4,5,44,12,13,33,28,82,22,23,24,81,26,38])),`component`)}),K=w(`/_auth/ec2/(nat-gateways)/describe-nat-gateways/`)({loader:async({context:e})=>{await e.queryClient.query({...Fn,staleTime:`static`})},head:()=>({meta:[{title:`NAT Gateways | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-nat-gateways-B8p3GKN1.js`),__vite__mapDeps([154,1,75,8,9,10,11,4,5,12,13,33,28,21,22,23,24,26,38,130])),`component`)}),ed=w(`/_auth/ec2/(placement-groups)/describe-placement-groups/`)({loader:async({context:e})=>{await e.queryClient.query({...Gn,staleTime:`static`})},head:()=>({meta:[{title:`Placement Groups | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-placement-groups-XiQbPRZ5.js`),__vite__mapDeps([155,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,38,130])),`component`)}),q=w(`/_auth/ec2/(route-tables)/describe-route-tables/`)({loader:async({context:e})=>{await e.queryClient.query({...Pn,staleTime:`static`})},head:()=>({meta:[{title:`Route Tables | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-route-tables-Cz9uMOpx.js`),__vite__mapDeps([156,1,75,8,9,10,11,4,5,12,13,33,28,21,22,23,24,26,27,29,130])),`component`)}),J=w(`/_auth/ec2/(security-groups)/describe-security-groups/`)({loader:async({context:e})=>{await e.queryClient.query({...Wn,staleTime:`static`})},head:()=>({meta:[{title:`Security Groups | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-security-groups-uryLUVIn.js`),__vite__mapDeps([157,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,130])),`component`)}),Y=w(`/_auth/ec2/(snapshots)/describe-snapshots/`)({loader:async({context:e})=>{await e.queryClient.query({...jn,staleTime:`static`})},head:()=>({meta:[{title:`Snapshots | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-snapshots-63g9NU9g.js`),__vite__mapDeps([158,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,38,130])),`component`)}),td=w(`/_auth/ec2/(subnet)/describe-subnets/`)({loader:async({context:e})=>{await e.queryClient.query({...Nn,staleTime:`static`})},head:()=>({meta:[{title:`Subnets | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-subnets-lWLraP1d.js`),__vite__mapDeps([159,1,75,8,9,10,11,4,5,12,13,33,28,21,22,23,24,26,38,130])),`component`)}),nd=w(`/_auth/ec2/(target-groups)/describe-target-groups/`)({loader:async({context:e})=>{await e.queryClient.query({...Qn,staleTime:`static`})},head:()=>({meta:[{title:`Target Groups | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-target-groups-5RCbjKmg.js`),__vite__mapDeps([160,1,7,8,9,10,75,11,4,5,44,33,28,12,13,82,22,23,24,81,26])),`component`)}),rd=w(`/_auth/ec2/(volumes)/describe-volumes/`)({loader:async({context:e})=>{await e.queryClient.query({...An,staleTime:`static`})},head:()=>({meta:[{title:`Volumes | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-volumes-Dj4fTW0o.js`),__vite__mapDeps([161,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,38,130])),`component`)}),id=w(`/_auth/ec2/(vpc)/describe-vpcs/`)({loader:async({context:e})=>{await e.queryClient.query({...Mn,staleTime:`static`})},head:()=>({meta:[{title:`VPCs | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-vpcs-cdkXn9V9.js`),__vite__mapDeps([162,1,75,8,9,10,11,4,5,12,13,33,28,21,22,23,24,26,38,130])),`component`)}),ad=w(`/_auth/ecr/(repositories)/list-repositories/`)({loader:async({context:e})=>{await e.queryClient.query({...Kn,staleTime:`static`})},head:()=>({meta:[{title:`Repositories | ECR | Mulga`}]}),component:D(()=>P(()=>import(`./list-repositories-B-9oI4MN.js`),__vite__mapDeps([163,1,75,8,9,10,11,4,5,44,12,13,33,28,50,36,51,52,164,22,23,24,165,54,55,26,60,61,32,34,35,37])),`component`)}),od=w(`/_auth/ecs/(clusters)/list-clusters/`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...qn,staleTime:`static`}),e.queryClient.query({...Vn,staleTime:`static`})])},head:()=>({meta:[{title:`Clusters | ECS | Mulga`}]}),component:D(()=>P(()=>import(`./list-clusters-UynY0efZ.js`),__vite__mapDeps([166,1,9,75,8,10,11,4,5,44,33,28,12,13,50,36,51,52,21,22,23,24,97,98,54,55,20,26,58,60,61,32,34,35,37,99,38,108,109,47,14,48,110,70,49,100])),`component`)}),sd=w(`/_auth/eks/(clusters)/list-clusters/`)({loader:async({context:e})=>{await e.queryClient.query({...Yn,staleTime:`static`})},head:()=>({meta:[{title:`Clusters | EKS | Mulga`}]}),component:D(()=>P(()=>import(`./list-clusters-CIHqWLhW.js`),__vite__mapDeps([167,1,75,8,9,10,11,4,5,33,28,12,13,168,22,23,24,103,26,130])),`component`)}),cd=w(`/_auth/iam/(groups)/list-groups/`)({loader:async({context:e})=>{await e.queryClient.query({...tr,staleTime:`static`})},head:()=>({meta:[{title:`Groups | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./list-groups-B-aCbhJM.js`),__vite__mapDeps([169,1,75,8,9,10,11,4,5,33,28,12,13,107,22,23,24,106,104,26,130])),`component`)}),ld=w(`/_auth/iam/(instance-profiles)/list-instance-profiles/`)({loader:async({context:e})=>{await e.queryClient.query({...er,staleTime:`static`})},head:()=>({meta:[{title:`Instance Profiles | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./list-instance-profiles-BSt7PimM.js`),__vite__mapDeps([170,1,75,8,9,10,11,4,5,33,28,12,13,107,22,23,24,106,104,26,130])),`component`)}),ud=w(`/_auth/iam/(policies)/list-policies/`)({loader:async({context:e})=>{await e.queryClient.query({...nr,staleTime:`static`})},head:()=>({meta:[{title:`Policies | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./list-policies-DeMAXGlh.js`),__vite__mapDeps([171,1,75,8,9,10,11,4,5,33,28,12,13,107,22,23,24,106,104,26,130])),`component`)}),dd=w(`/_auth/iam/(roles)/list-roles/`)({loader:async({context:e})=>{await e.queryClient.query({...rr,staleTime:`static`})},head:()=>({meta:[{title:`Roles | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./list-roles-DKJKr-De.js`),__vite__mapDeps([172,1,75,8,9,10,11,4,5,33,28,12,13,107,22,23,24,106,104,26,130])),`component`)}),fd=w(`/_auth/iam/(users)/list-users/`)({loader:async({context:e})=>{await e.queryClient.query({...$n,staleTime:`static`})},head:()=>({meta:[{title:`Users | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./list-users-B87cjyLt.js`),__vite__mapDeps([173,1,75,8,9,10,11,4,5,33,28,12,13,107,22,23,24,106,104,26,130])),`component`)}),pd=w(`/_auth/rds/(db-instances)/describe-db-instances/`)({loader:async({context:e})=>{await e.queryClient.query({...cr,staleTime:`static`})},head:()=>({meta:[{title:`Databases | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./describe-db-instances-ririu0gg.js`),__vite__mapDeps([174,1,75,8,9,10,11,4,5,44,33,28,12,13,120,23,24,121,54,55,122,22,26,58,38,175,50,36,51,52,60,61,32,34,35,37])),`component`)}),md=w(`/_auth/rds/(parameter-groups)/describe-db-parameter-groups/`)({loader:async({context:e})=>{await e.queryClient.query({...ar,staleTime:`static`})},head:()=>({meta:[{title:`Parameter Groups | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./describe-db-parameter-groups-Vj5U5CsP.js`),__vite__mapDeps([176,1,75,8,9,10,11,4,5,44,33,28,12,13,120,23,24,122,22,26,177,121,54,55,178,99,32,34,35,36,37])),`component`)}),hd=w(`/_auth/rds/(snapshots)/describe-db-snapshots/`)({loader:async({context:e})=>{await e.queryClient.query({...ir,staleTime:`static`})},head:()=>({meta:[{title:`Snapshots | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./describe-db-snapshots-DXVrzU4j.js`),__vite__mapDeps([179,1,75,8,9,10,11,4,5,44,12,13,33,28,120,23,24,122,22,26,38,180,7,65,35,36,14,47,15,51,37,66,67,52,68,50,121,54,55,57,60,61,83,84,85,32,34,123,181,178,99])),`component`)}),gd=w(`/_auth/rds/(subnet-groups)/describe-db-subnet-groups/`)({loader:async({context:e})=>{await e.queryClient.query({...or,staleTime:`static`})},head:()=>({meta:[{title:`Subnet Groups | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./describe-db-subnet-groups-B9VO6RnW.js`),__vite__mapDeps([182,1,75,8,9,10,11,4,5,44,33,28,12,13,122,22,23,24,120,26,38,183,121,54,55,178,99,32,34,35,36,37])),`component`)}),X=cu.update({id:`/_auth`,getParentRoute:()=>su}),_d=ur.update({id:`/login`,path:`/login`,getParentRoute:()=>su}),vd=lu.update({id:`/`,path:`/`,getParentRoute:()=>X}),Z=uu.update({id:`/bedrock`,path:`/bedrock`,getParentRoute:()=>X}),yd=du.update({id:`/nodes`,path:`/nodes`,getParentRoute:()=>X}),bd=fu.update({id:`/s3/service-metrics`,path:`/s3/service-metrics`,getParentRoute:()=>X}),xd=pu.update({id:`/ec2/(elastic-ips)/allocate-address`,path:`/ec2/allocate-address`,getParentRoute:()=>X}),Sd=dr.update({id:`/ec2/(instances)/run-instances`,path:`/ec2/run-instances`,getParentRoute:()=>X}),Cd=mu.update({id:`/ec2/(internet-gateways)/create-internet-gateway`,path:`/ec2/create-internet-gateway`,getParentRoute:()=>X}),wd=hu.update({id:`/ec2/(key)/create-key-pair`,path:`/ec2/create-key-pair`,getParentRoute:()=>X}),Td=gu.update({id:`/ec2/(key)/import-key-pair`,path:`/ec2/import-key-pair`,getParentRoute:()=>X}),Ed=_u.update({id:`/ec2/(launch-templates)/create-launch-template`,path:`/ec2/create-launch-template`,getParentRoute:()=>X}),Dd=vu.update({id:`/ec2/(load-balancers)/create-load-balancer`,path:`/ec2/create-load-balancer`,getParentRoute:()=>X}),Od=yu.update({id:`/ec2/(nat-gateways)/create-nat-gateway`,path:`/ec2/create-nat-gateway`,getParentRoute:()=>X}),kd=bu.update({id:`/ec2/(placement-groups)/create-placement-group`,path:`/ec2/create-placement-group`,getParentRoute:()=>X}),Ad=xu.update({id:`/ec2/(route-tables)/create-route-table`,path:`/ec2/create-route-table`,getParentRoute:()=>X}),jd=Su.update({id:`/ec2/(security-groups)/create-security-group`,path:`/ec2/create-security-group`,getParentRoute:()=>X}),Md=fr.update({id:`/ec2/(snapshots)/create-snapshot`,path:`/ec2/create-snapshot`,getParentRoute:()=>X}),Nd=Cu.update({id:`/ec2/(subnet)/create-subnet`,path:`/ec2/create-subnet`,getParentRoute:()=>X}),Pd=wu.update({id:`/ec2/(target-groups)/create-target-group`,path:`/ec2/create-target-group`,getParentRoute:()=>X}),Fd=Tu.update({id:`/ec2/(volumes)/create-volume`,path:`/ec2/create-volume`,getParentRoute:()=>X}),Id=Eu.update({id:`/ec2/(vpc)/create-vpc`,path:`/ec2/create-vpc`,getParentRoute:()=>X}),Ld=pr.update({id:`/ecs/(clusters)/create-service`,path:`/ecs/create-service`,getParentRoute:()=>X}),Rd=mr.update({id:`/ecs/(clusters)/register-task-definition`,path:`/ecs/register-task-definition`,getParentRoute:()=>X}),zd=hr.update({id:`/ecs/(clusters)/run-task`,path:`/ecs/run-task`,getParentRoute:()=>X}),Bd=Du.update({id:`/ecs/(clusters)/task-definitions`,path:`/ecs/task-definitions`,getParentRoute:()=>X}),Vd=Ou.update({id:`/eks/(clusters)/create-cluster`,path:`/eks/create-cluster`,getParentRoute:()=>X}),Hd=ku.update({id:`/iam/(groups)/create-group`,path:`/iam/create-group`,getParentRoute:()=>X}),Ud=Au.update({id:`/iam/(instance-profiles)/create-instance-profile`,path:`/iam/create-instance-profile`,getParentRoute:()=>X}),Wd=ju.update({id:`/iam/(policies)/create-policy`,path:`/iam/create-policy`,getParentRoute:()=>X}),Gd=Mu.update({id:`/iam/(roles)/create-role`,path:`/iam/create-role`,getParentRoute:()=>X}),Kd=Nu.update({id:`/iam/(users)/create-user`,path:`/iam/create-user`,getParentRoute:()=>X}),qd=Pu.update({id:`/rds/(db-instances)/create-db-instance`,path:`/rds/create-db-instance`,getParentRoute:()=>X}),Jd=Fu.update({id:`/rds/(parameter-groups)/create-db-parameter-group`,path:`/rds/create-db-parameter-group`,getParentRoute:()=>X}),Yd=Iu.update({id:`/rds/(subnet-groups)/create-db-subnet-group`,path:`/rds/create-db-subnet-group`,getParentRoute:()=>X}),Xd=Lu.update({id:`/s3/(buckets)/create-bucket`,path:`/s3/create-bucket`,getParentRoute:()=>X}),Zd=Ru.update({id:`/s3/ls/`,path:`/s3/ls/`,getParentRoute:()=>X}),Qd=zu.update({id:`/s3/ls/$bucket`,path:`/s3/ls/$bucket`,getParentRoute:()=>X}),$d=Bu.update({id:`/(catalog)/list-model-catalog/`,path:`/list-model-catalog/`,getParentRoute:()=>Z}),ef=Vu.update({id:`/(guardrails)/list-guardrails/`,path:`/list-guardrails/`,getParentRoute:()=>Z}),tf=Hu.update({id:`/(guardrails)/list-guardrails/create`,path:`/list-guardrails/create`,getParentRoute:()=>Z}),nf=Uu.update({id:`/(knowledge-bases)/list-knowledge-bases/`,path:`/list-knowledge-bases/`,getParentRoute:()=>Z}),rf=gr.update({id:`/(knowledge-bases)/list-knowledge-bases/$knowledgeBaseId`,path:`/list-knowledge-bases/$knowledgeBaseId`,getParentRoute:()=>Z}),af=Wu.update({id:`/(knowledge-bases)/list-knowledge-bases/create`,path:`/list-knowledge-bases/create`,getParentRoute:()=>Z}),of=Gu.update({id:`/(model-access)/list-model-access/`,path:`/list-model-access/`,getParentRoute:()=>Z}),sf=Ku.update({id:`/(playground)/playground/`,path:`/playground/`,getParentRoute:()=>Z}),cf=qu.update({id:`/ec2/(elastic-ips)/describe-addresses/`,path:`/ec2/describe-addresses/`,getParentRoute:()=>X}),lf=_r.update({id:`/ec2/(elastic-ips)/describe-addresses/$id`,path:`/ec2/describe-addresses/$id`,getParentRoute:()=>X}),uf=Ju.update({id:`/ec2/(images)/describe-images/`,path:`/ec2/describe-images/`,getParentRoute:()=>X}),df=vr.update({id:`/ec2/(images)/describe-images/$id`,path:`/ec2/describe-images/$id`,getParentRoute:()=>X}),ff=Yu.update({id:`/ec2/(instances)/describe-instances/`,path:`/ec2/describe-instances/`,getParentRoute:()=>X}),pf=yr.update({id:`/ec2/(instances)/describe-instances/$id`,path:`/ec2/describe-instances/$id`,getParentRoute:()=>X}),mf=Xu.update({id:`/ec2/(internet-gateways)/describe-internet-gateways/`,path:`/ec2/describe-internet-gateways/`,getParentRoute:()=>X}),hf=br.update({id:`/ec2/(internet-gateways)/describe-internet-gateways/$id`,path:`/ec2/describe-internet-gateways/$id`,getParentRoute:()=>X}),gf=Zu.update({id:`/ec2/(key)/describe-key-pairs/`,path:`/ec2/describe-key-pairs/`,getParentRoute:()=>X}),_f=xr.update({id:`/ec2/(key)/describe-key-pairs/$id`,path:`/ec2/describe-key-pairs/$id`,getParentRoute:()=>X}),vf=Qu.update({id:`/ec2/(launch-templates)/describe-launch-templates/`,path:`/ec2/describe-launch-templates/`,getParentRoute:()=>X}),yf=Sr.update({id:`/ec2/(launch-templates)/describe-launch-templates/$id`,path:`/ec2/describe-launch-templates/$id`,getParentRoute:()=>X}),bf=$u.update({id:`/ec2/(load-balancers)/describe-load-balancers/`,path:`/ec2/describe-load-balancers/`,getParentRoute:()=>X}),xf=Cr.update({id:`/ec2/(load-balancers)/describe-load-balancers/$id`,path:`/ec2/describe-load-balancers/$id`,getParentRoute:()=>X}),Sf=K.update({id:`/ec2/(nat-gateways)/describe-nat-gateways/`,path:`/ec2/describe-nat-gateways/`,getParentRoute:()=>X}),Cf=wr.update({id:`/ec2/(nat-gateways)/describe-nat-gateways/$id`,path:`/ec2/describe-nat-gateways/$id`,getParentRoute:()=>X}),wf=ed.update({id:`/ec2/(placement-groups)/describe-placement-groups/`,path:`/ec2/describe-placement-groups/`,getParentRoute:()=>X}),Tf=Tr.update({id:`/ec2/(placement-groups)/describe-placement-groups/$id`,path:`/ec2/describe-placement-groups/$id`,getParentRoute:()=>X}),Ef=q.update({id:`/ec2/(route-tables)/describe-route-tables/`,path:`/ec2/describe-route-tables/`,getParentRoute:()=>X}),Df=Er.update({id:`/ec2/(route-tables)/describe-route-tables/$id`,path:`/ec2/describe-route-tables/$id`,getParentRoute:()=>X}),Of=J.update({id:`/ec2/(security-groups)/describe-security-groups/`,path:`/ec2/describe-security-groups/`,getParentRoute:()=>X}),kf=dt.update({id:`/ec2/(security-groups)/describe-security-groups/$id`,path:`/ec2/describe-security-groups/$id`,getParentRoute:()=>X}),Af=Y.update({id:`/ec2/(snapshots)/describe-snapshots/`,path:`/ec2/describe-snapshots/`,getParentRoute:()=>X}),jf=st.update({id:`/ec2/(snapshots)/describe-snapshots/$id`,path:`/ec2/describe-snapshots/$id`,getParentRoute:()=>X}),Mf=td.update({id:`/ec2/(subnet)/describe-subnets/`,path:`/ec2/describe-subnets/`,getParentRoute:()=>X}),Nf=Dr.update({id:`/ec2/(subnet)/describe-subnets/$id`,path:`/ec2/describe-subnets/$id`,getParentRoute:()=>X}),Pf=nd.update({id:`/ec2/(target-groups)/describe-target-groups/`,path:`/ec2/describe-target-groups/`,getParentRoute:()=>X}),Ff=Or.update({id:`/ec2/(target-groups)/describe-target-groups/$id`,path:`/ec2/describe-target-groups/$id`,getParentRoute:()=>X}),If=rd.update({id:`/ec2/(volumes)/describe-volumes/`,path:`/ec2/describe-volumes/`,getParentRoute:()=>X}),Lf=kr.update({id:`/ec2/(volumes)/describe-volumes/$id`,path:`/ec2/describe-volumes/$id`,getParentRoute:()=>X}),Rf=Ar.update({id:`/ec2/(volumes)/modify-volume/$id`,path:`/ec2/modify-volume/$id`,getParentRoute:()=>X}),zf=id.update({id:`/ec2/(vpc)/describe-vpcs/`,path:`/ec2/describe-vpcs/`,getParentRoute:()=>X}),Bf=jr.update({id:`/ec2/(vpc)/describe-vpcs/$id`,path:`/ec2/describe-vpcs/$id`,getParentRoute:()=>X}),Vf=ad.update({id:`/ecr/(repositories)/list-repositories/`,path:`/ecr/list-repositories/`,getParentRoute:()=>X}),Q=Mr.update({id:`/ecr/(repositories)/list-repositories/$id`,path:`/ecr/list-repositories/$id`,getParentRoute:()=>X}),Hf=od.update({id:`/ecs/(clusters)/list-clusters/`,path:`/ecs/list-clusters/`,getParentRoute:()=>X}),Uf=Nr.update({id:`/ecs/(clusters)/list-clusters/$clusterName`,path:`/ecs/list-clusters/$clusterName`,getParentRoute:()=>X}),Wf=sd.update({id:`/eks/(clusters)/list-clusters/`,path:`/eks/list-clusters/`,getParentRoute:()=>X}),Gf=lt.update({id:`/eks/(clusters)/list-clusters/$clusterName`,path:`/eks/list-clusters/$clusterName`,getParentRoute:()=>X}),Kf=cd.update({id:`/iam/(groups)/list-groups/`,path:`/iam/list-groups/`,getParentRoute:()=>X}),qf=Pr.update({id:`/iam/(groups)/list-groups/$groupName`,path:`/iam/list-groups/$groupName`,getParentRoute:()=>X}),Jf=ld.update({id:`/iam/(instance-profiles)/list-instance-profiles/`,path:`/iam/list-instance-profiles/`,getParentRoute:()=>X}),Yf=Fr.update({id:`/iam/(instance-profiles)/list-instance-profiles/$instanceProfileName`,path:`/iam/list-instance-profiles/$instanceProfileName`,getParentRoute:()=>X}),Xf=ud.update({id:`/iam/(policies)/list-policies/`,path:`/iam/list-policies/`,getParentRoute:()=>X}),Zf=Ir.update({id:`/iam/(policies)/list-policies/$policyArn`,path:`/iam/list-policies/$policyArn`,getParentRoute:()=>X}),Qf=dd.update({id:`/iam/(roles)/list-roles/`,path:`/iam/list-roles/`,getParentRoute:()=>X}),$f=Lr.update({id:`/iam/(roles)/list-roles/$roleName`,path:`/iam/list-roles/$roleName`,getParentRoute:()=>X}),ep=fd.update({id:`/iam/(users)/list-users/`,path:`/iam/list-users/`,getParentRoute:()=>X}),$=Rr.update({id:`/iam/(users)/list-users/$userName`,path:`/iam/list-users/$userName`,getParentRoute:()=>X}),tp=pd.update({id:`/rds/(db-instances)/describe-db-instances/`,path:`/rds/describe-db-instances/`,getParentRoute:()=>X}),np=zr.update({id:`/rds/(db-instances)/describe-db-instances/$id`,path:`/rds/describe-db-instances/$id`,getParentRoute:()=>X}),rp=md.update({id:`/rds/(parameter-groups)/describe-db-parameter-groups/`,path:`/rds/describe-db-parameter-groups/`,getParentRoute:()=>X}),ip=Br.update({id:`/rds/(parameter-groups)/describe-db-parameter-groups/$name`,path:`/rds/describe-db-parameter-groups/$name`,getParentRoute:()=>X}),ap=hd.update({id:`/rds/(snapshots)/describe-db-snapshots/`,path:`/rds/describe-db-snapshots/`,getParentRoute:()=>X}),op=Vr.update({id:`/rds/(snapshots)/describe-db-snapshots/$id`,path:`/rds/describe-db-snapshots/$id`,getParentRoute:()=>X}),sp=Hr.update({id:`/rds/(snapshots)/restore-db-instance-from-db-snapshot/$id`,path:`/rds/restore-db-instance-from-db-snapshot/$id`,getParentRoute:()=>X}),cp=gd.update({id:`/rds/(subnet-groups)/describe-db-subnet-groups/`,path:`/rds/describe-db-subnet-groups/`,getParentRoute:()=>X}),lp=Ur.update({id:`/rds/(subnet-groups)/describe-db-subnet-groups/$name`,path:`/rds/describe-db-subnet-groups/$name`,getParentRoute:()=>X}),up=Wr.update({id:`/`,path:`/`,getParentRoute:()=>Qd}),dp=Gr.update({id:`/$`,path:`/$`,getParentRoute:()=>Qd}),fp=Kr.update({id:`/(guardrails)/list-guardrails/$guardrailId/`,path:`/list-guardrails/$guardrailId/`,getParentRoute:()=>Z}),pp=qr.update({id:`/(guardrails)/list-guardrails/$guardrailId/edit`,path:`/list-guardrails/$guardrailId/edit`,getParentRoute:()=>Z}),mp=Jr.update({id:`/ecs/(clusters)/list-clusters/$clusterName_/services/$serviceName`,path:`/ecs/list-clusters/$clusterName/services/$serviceName`,getParentRoute:()=>X}),hp=Yr.update({id:`/ecs/(clusters)/list-clusters/$clusterName_/tasks/$taskId`,path:`/ecs/list-clusters/$clusterName/tasks/$taskId`,getParentRoute:()=>X}),gp={AuthBedrockguardrailsListGuardrailsCreateRoute:tf,AuthBedrockknowledgeBasesListKnowledgeBasesKnowledgeBaseIdRoute:rf,AuthBedrockknowledgeBasesListKnowledgeBasesCreateRoute:af,AuthBedrockcatalogListModelCatalogIndexRoute:$d,AuthBedrockguardrailsListGuardrailsIndexRoute:ef,AuthBedrockknowledgeBasesListKnowledgeBasesIndexRoute:nf,AuthBedrockmodelAccessListModelAccessIndexRoute:of,AuthBedrockplaygroundPlaygroundIndexRoute:sf,AuthBedrockguardrailsListGuardrailsGuardrailIdEditRoute:pp,AuthBedrockguardrailsListGuardrailsGuardrailIdIndexRoute:fp},_p=Z._addFileChildren(gp),vp={AuthS3LsBucketSplatRoute:dp,AuthS3LsBucketIndexRoute:up},yp={AuthBedrockRouteRoute:_p,AuthNodesRoute:yd,AuthIndexRoute:vd,AuthS3ServiceMetricsRoute:bd,AuthS3LsBucketRouteRoute:Qd._addFileChildren(vp),AuthEc2elasticIpsAllocateAddressRoute:xd,AuthEc2instancesRunInstancesRoute:Sd,AuthEc2internetGatewaysCreateInternetGatewayRoute:Cd,AuthEc2keyCreateKeyPairRoute:wd,AuthEc2keyImportKeyPairRoute:Td,AuthEc2launchTemplatesCreateLaunchTemplateRoute:Ed,AuthEc2loadBalancersCreateLoadBalancerRoute:Dd,AuthEc2natGatewaysCreateNatGatewayRoute:Od,AuthEc2placementGroupsCreatePlacementGroupRoute:kd,AuthEc2routeTablesCreateRouteTableRoute:Ad,AuthEc2securityGroupsCreateSecurityGroupRoute:jd,AuthEc2snapshotsCreateSnapshotRoute:Md,AuthEc2subnetCreateSubnetRoute:Nd,AuthEc2targetGroupsCreateTargetGroupRoute:Pd,AuthEc2volumesCreateVolumeRoute:Fd,AuthEc2vpcCreateVpcRoute:Id,AuthEcsclustersCreateServiceRoute:Ld,AuthEcsclustersRegisterTaskDefinitionRoute:Rd,AuthEcsclustersRunTaskRoute:zd,AuthEcsclustersTaskDefinitionsRoute:Bd,AuthEksclustersCreateClusterRoute:Vd,AuthIamgroupsCreateGroupRoute:Hd,AuthIaminstanceProfilesCreateInstanceProfileRoute:Ud,AuthIampoliciesCreatePolicyRoute:Wd,AuthIamrolesCreateRoleRoute:Gd,AuthIamusersCreateUserRoute:Kd,AuthRdsdbInstancesCreateDbInstanceRoute:qd,AuthRdsparameterGroupsCreateDbParameterGroupRoute:Jd,AuthRdssubnetGroupsCreateDbSubnetGroupRoute:Yd,AuthS3bucketsCreateBucketRoute:Xd,AuthS3LsIndexRoute:Zd,AuthEc2elasticIpsDescribeAddressesIdRoute:lf,AuthEc2imagesDescribeImagesIdRoute:df,AuthEc2instancesDescribeInstancesIdRoute:pf,AuthEc2internetGatewaysDescribeInternetGatewaysIdRoute:hf,AuthEc2keyDescribeKeyPairsIdRoute:_f,AuthEc2launchTemplatesDescribeLaunchTemplatesIdRoute:yf,AuthEc2loadBalancersDescribeLoadBalancersIdRoute:xf,AuthEc2natGatewaysDescribeNatGatewaysIdRoute:Cf,AuthEc2placementGroupsDescribePlacementGroupsIdRoute:Tf,AuthEc2routeTablesDescribeRouteTablesIdRoute:Df,AuthEc2securityGroupsDescribeSecurityGroupsIdRoute:kf,AuthEc2snapshotsDescribeSnapshotsIdRoute:jf,AuthEc2subnetDescribeSubnetsIdRoute:Nf,AuthEc2targetGroupsDescribeTargetGroupsIdRoute:Ff,AuthEc2volumesDescribeVolumesIdRoute:Lf,AuthEc2volumesModifyVolumeIdRoute:Rf,AuthEc2vpcDescribeVpcsIdRoute:Bf,AuthEcrrepositoriesListRepositoriesIdRoute:Q,AuthEcsclustersListClustersClusterNameRoute:Uf,AuthEksclustersListClustersClusterNameRoute:Gf,AuthIamgroupsListGroupsGroupNameRoute:qf,AuthIaminstanceProfilesListInstanceProfilesInstanceProfileNameRoute:Yf,AuthIampoliciesListPoliciesPolicyArnRoute:Zf,AuthIamrolesListRolesRoleNameRoute:$f,AuthIamusersListUsersUserNameRoute:$,AuthRdsdbInstancesDescribeDbInstancesIdRoute:np,AuthRdsparameterGroupsDescribeDbParameterGroupsNameRoute:ip,AuthRdssnapshotsDescribeDbSnapshotsIdRoute:op,AuthRdssnapshotsRestoreDbInstanceFromDbSnapshotIdRoute:sp,AuthRdssubnetGroupsDescribeDbSubnetGroupsNameRoute:lp,AuthEc2elasticIpsDescribeAddressesIndexRoute:cf,AuthEc2imagesDescribeImagesIndexRoute:uf,AuthEc2instancesDescribeInstancesIndexRoute:ff,AuthEc2internetGatewaysDescribeInternetGatewaysIndexRoute:mf,AuthEc2keyDescribeKeyPairsIndexRoute:gf,AuthEc2launchTemplatesDescribeLaunchTemplatesIndexRoute:vf,AuthEc2loadBalancersDescribeLoadBalancersIndexRoute:bf,AuthEc2natGatewaysDescribeNatGatewaysIndexRoute:Sf,AuthEc2placementGroupsDescribePlacementGroupsIndexRoute:wf,AuthEc2routeTablesDescribeRouteTablesIndexRoute:Ef,AuthEc2securityGroupsDescribeSecurityGroupsIndexRoute:Of,AuthEc2snapshotsDescribeSnapshotsIndexRoute:Af,AuthEc2subnetDescribeSubnetsIndexRoute:Mf,AuthEc2targetGroupsDescribeTargetGroupsIndexRoute:Pf,AuthEc2volumesDescribeVolumesIndexRoute:If,AuthEc2vpcDescribeVpcsIndexRoute:zf,AuthEcrrepositoriesListRepositoriesIndexRoute:Vf,AuthEcsclustersListClustersIndexRoute:Hf,AuthEksclustersListClustersIndexRoute:Wf,AuthIamgroupsListGroupsIndexRoute:Kf,AuthIaminstanceProfilesListInstanceProfilesIndexRoute:Jf,AuthIampoliciesListPoliciesIndexRoute:Xf,AuthIamrolesListRolesIndexRoute:Qf,AuthIamusersListUsersIndexRoute:ep,AuthRdsdbInstancesDescribeDbInstancesIndexRoute:tp,AuthRdsparameterGroupsDescribeDbParameterGroupsIndexRoute:rp,AuthRdssnapshotsDescribeDbSnapshotsIndexRoute:ap,AuthRdssubnetGroupsDescribeDbSubnetGroupsIndexRoute:cp,AuthEcsclustersListClustersClusterNameServicesServiceNameRoute:mp,AuthEcsclustersListClustersClusterNameTasksTaskIdRoute:hp},bp={AuthRouteRoute:X._addFileChildren(yp),LoginRoute:_d},xp=su._addFileChildren(bp)._addFileTypes(),Sp=tu(),Cp=Wo({routeTree:xp,context:{queryClient:Sp},defaultPreload:`intent`,scrollRestoration:!0,defaultStructuralSharing:!0,defaultPreloadStaleTime:0});async function wp(e){try{await Ye()}catch(t){e.render((0,B.jsxs)(`div`,{style:{fontFamily:`sans-serif`,margin:`4rem auto`,maxWidth:`40rem`},children:[(0,B.jsx)(`h1`,{children:`Console unavailable`}),(0,B.jsx)(`p`,{children:`This cluster did not report its region, so the console cannot sign requests. Check that the serving node has a region set in its configuration.`}),(0,B.jsx)(`pre`,{children:t instanceof Error?t.message:String(t)})]}));return}e.render((0,B.jsx)(z.StrictMode,{children:(0,B.jsx)(ss,{defaultTheme:`dark`,storageKey:`spinifex-ui-theme`,children:(0,B.jsx)(p,{client:Sp,children:(0,B.jsx)(Tn,{children:(0,B.jsx)(Il,{children:(0,B.jsx)(qo,{router:Cp})})})})})}))}var Tp=document.querySelector(`#app`);Tp&&!Tp.innerHTML&&await wp(is.createRoot(Tp)); \ No newline at end of file +`).replace(Qf,``)}function ep(e,t){return t=$f(t),$f(e)===t}function $(e,t,n,r,i,o){switch(n){case`children`:if(typeof r==`string`)t===`body`||t===`textarea`&&r===``||dn(e,r);else if(typeof r==`number`||typeof r==`bigint`)t!==`body`&&dn(e,``+r);else return;break;case`className`:Yt(e,`class`,r);break;case`tabIndex`:Yt(e,`tabindex`,r);break;case`dir`:case`role`:case`viewBox`:case`width`:case`height`:Yt(e,n,r);break;case`style`:mn(e,r,o);return;case`data`:if(t!==`object`){Yt(e,`data`,r);break}case`src`:case`href`:if(r===``&&(t!==`a`||n!==`href`)){e.removeAttribute(n);break}if(r==null||typeof r==`function`||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=vn(r),e.setAttribute(n,r);break;case`action`:case`formAction`:if(typeof r==`function`){e.setAttribute(n,`javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')`);break}if(typeof o==`function`&&(n===`formAction`?(t!==`input`&&$(e,t,`name`,i.name,i,null),$(e,t,`formEncType`,i.formEncType,i,null),$(e,t,`formMethod`,i.formMethod,i,null),$(e,t,`formTarget`,i.formTarget,i,null)):($(e,t,`encType`,i.encType,i,null),$(e,t,`method`,i.method,i,null),$(e,t,`target`,i.target,i,null))),r==null||typeof r==`symbol`||typeof r==`boolean`){e.removeAttribute(n);break}r=vn(r),e.setAttribute(n,r);break;case`onClick`:r!=null&&(e.onclick=yn);return;case`onScroll`:r!=null&&Q(`scroll`,e);return;case`onScrollEnd`:r!=null&&Q(`scrollend`,e);return;case`dangerouslySetInnerHTML`:if(r!=null){if(typeof r!=`object`||!(`__html`in r))throw Error(a(61));if(n=r.__html,n!=null){if(i.children!=null)throw Error(a(60));o?.__html!==n&&(e.innerHTML=n)}}break;case`multiple`:e.multiple=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`muted`:e.muted=r&&typeof r!=`function`&&typeof r!=`symbol`;break;case`suppressContentEditableWarning`:case`suppressHydrationWarning`:case`defaultValue`:case`defaultChecked`:case`innerHTML`:case`ref`:break;case`autoFocus`:break;case`xlinkHref`:if(r==null||typeof r==`function`||typeof r==`boolean`||typeof r==`symbol`){e.removeAttribute(`xlink:href`);break}n=vn(r),e.setAttributeNS(`http://www.w3.org/1999/xlink`,`xlink:href`,n);break;case`contentEditable`:case`spellCheck`:case`draggable`:case`value`:case`autoReverse`:case`externalResourcesRequired`:case`focusable`:case`preserveAlpha`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`inert`:case`allowFullScreen`:case`async`:case`autoPlay`:case`controls`:case`credentialless`:case`default`:case`defer`:case`disabled`:case`disablePictureInPicture`:case`disableRemotePlayback`:case`formNoValidate`:case`hidden`:case`loop`:case`noModule`:case`noValidate`:case`open`:case`playsInline`:case`readOnly`:case`required`:case`reversed`:case`scoped`:case`seamless`:case`itemScope`:r&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,``):e.removeAttribute(n);break;case`capture`:case`download`:!0===r?e.setAttribute(n,``):!1!==r&&r!=null&&typeof r!=`function`&&typeof r!=`symbol`?e.setAttribute(n,r):e.removeAttribute(n);break;case`cols`:case`rows`:case`size`:case`span`:r!=null&&typeof r!=`function`&&typeof r!=`symbol`&&!isNaN(r)&&1<=r?e.setAttribute(n,r):e.removeAttribute(n);break;case`rowSpan`:case`start`:r==null||typeof r==`function`||typeof r==`symbol`||isNaN(r)?e.removeAttribute(n):e.setAttribute(n,r);break;case`popover`:Q(`beforetoggle`,e),Q(`toggle`,e),Jt(e,`popover`,r);break;case`xlinkActuate`:Xt(e,`http://www.w3.org/1999/xlink`,`xlink:actuate`,r);break;case`xlinkArcrole`:Xt(e,`http://www.w3.org/1999/xlink`,`xlink:arcrole`,r);break;case`xlinkRole`:Xt(e,`http://www.w3.org/1999/xlink`,`xlink:role`,r);break;case`xlinkShow`:Xt(e,`http://www.w3.org/1999/xlink`,`xlink:show`,r);break;case`xlinkTitle`:Xt(e,`http://www.w3.org/1999/xlink`,`xlink:title`,r);break;case`xlinkType`:Xt(e,`http://www.w3.org/1999/xlink`,`xlink:type`,r);break;case`xmlBase`:Xt(e,`http://www.w3.org/XML/1998/namespace`,`xml:base`,r);break;case`xmlLang`:Xt(e,`http://www.w3.org/XML/1998/namespace`,`xml:lang`,r);break;case`xmlSpace`:Xt(e,`http://www.w3.org/XML/1998/namespace`,`xml:space`,r);break;case`is`:Jt(e,`is`,r);break;case`innerText`:case`textContent`:return;default:if(!(2s)break;var u=c.transferSize,d=c.initiatorType;u&&ap(d)&&(c=c.responseEnd,o+=u*(c$m){s.length=o;break}f=new Promise(jp.bind(f)),s.push(f)}}}if(0`u`?null:document;function Tm(e,t,n){var r=wm;if(r&&typeof t==`string`&&t){var i=rn(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),ym.has(i)||(ym.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),np(t,`link`,e),Lt(t),r.head.appendChild(t)))}}function Em(e){xm.D(e),Tm(`dns-prefetch`,e,null)}function Dm(e,t){xm.C(e,t),Tm(`preconnect`,e,t)}function Om(e,t,n){xm.L(e,t,n);var r=wm;if(r&&e&&t){var i=`link[rel="preload"][as="`+rn(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+rn(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+rn(n.imageSizes)+`"]`)):i+=`[href="`+rn(e)+`"]`;var a=i;switch(t){case`style`:a=Pm(e);break;case`script`:a=Rm(e)}if(!(vm.has(a)||(e=T({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),vm.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Fm(a))||t===`script`&&r.querySelector(zm(a))))){var o=r.createElement(`link`);np(o,`link`,e),t===`style`&&(o[jt]=!0,o.onload=o.onerror=function(){Rt(o)}),Lt(o),r.head.appendChild(o)}}}function km(e,t){xm.m(e,t);var n=wm;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+rn(r)+`"][href="`+rn(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Rm(e)}if(!vm.has(a)&&(e=T({rel:`modulepreload`,href:e},t),vm.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(zm(a)))return}r=n.createElement(`link`),np(r,`link`,e),Lt(r),n.head.appendChild(r)}}}function Am(e,t,n){xm.S(e,t,n);var r=wm;if(r&&e){var i=It(r).hoistableStyles,a=Pm(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Fm(a)))s.loading=5;else{e=T({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=vm.get(a))&&Hm(e,n);var c=o=r.createElement(`link`);Lt(c),np(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Vm(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function jm(e,t){xm.X(e,t);var n=wm;if(n&&e){var r=It(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=T({src:e,async:!0},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Lt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Mm(e,t){xm.M(e,t);var n=wm;if(n&&e){var r=It(n).hoistableScripts,i=Rm(e),a=r.get(i);a||(a=n.querySelector(zm(i)),a||(e=T({src:e,async:!0,type:`module`},t),(t=vm.get(i))&&Um(e,t),a=n.createElement(`script`),Lt(a),np(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Nm(e,t,n,r){var i=(i=Te.current)?bm(i):null;if(!i)throw Error(a(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(n=Pm(n.href),t=It(i).hoistableStyles,r=t.get(n),r||(r={type:`style`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Pm(n.href);var o=It(i).hoistableStyles,s=o.get(e);if(s||(i=i.ownerDocument||i,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=i.querySelector(Fm(e)))?o._p||(s.instance=o,s.state.loading=5):(o=vm.get(e),o||(o={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},vm.set(e,o)),Lm(i,e,o,s.state))),t&&r===null)throw Error(a(528,``));return s}if(t&&r!==null)throw Error(a(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(n=Rm(n),t=It(i).hoistableScripts,r=t.get(n),r||(r={type:`script`,instance:null,count:0,state:null},t.set(n,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(a(444,e))}}function Pm(e){return`href="`+rn(e)+`"`}function Fm(e){return`link[rel="stylesheet"][`+e+`]`}function Im(e){return T({},e,{"data-precedence":e.precedence,precedence:null})}function Lm(e,t,n,r){if(t=e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)){if(!0!==t[jt]){r.loading=1;return}}else t=e.createElement(`link`),t[jt]=!0,t.onload=t.onerror=Rt.bind(null,t),np(t,`link`,n),Lt(t),e.head.appendChild(t);r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2})}function Rm(e){return`[src="`+rn(e)+`"]`}function zm(e){return`script[async]`+e}function Bm(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+rn(n.href)+`"]`);if(r)return t.instance=r,Lt(r),r;var i=T({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),Lt(r),np(r,`style`,i),Vm(r,n.precedence,e),t.instance=r;case`stylesheet`:i=Pm(n.href);var o=e.querySelector(Fm(i));if(o)return t.state.loading|=4,t.instance=o,Lt(o),o;r=Im(n),(i=vm.get(i))&&Hm(r,i),o=(e.ownerDocument||e).createElement(`link`),Lt(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),np(o,`link`,r),t.state.loading|=4,Vm(o,n.precedence,e),t.instance=o;case`script`:return o=Rm(n.src),(i=e.querySelector(zm(o)))?(t.instance=i,Lt(i),i):(r=n,(i=vm.get(o))&&(r=T({},n),Um(r,i)),e=e.ownerDocument||e,i=e.createElement(`script`),Lt(i),np(i,`link`,r),e.head.appendChild(i),t.instance=i);case`void`:return null;default:throw Error(a(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Vm(r,n.precedence,e));return t.instance}function Vm(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function qm(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Jm(e,t){return e===`img`&&t.src!=null&&t.src!==``&&t.onLoad==null&&t.loading!==`lazy`}function Ym(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Xm(e){return(e.width||100)*(e.height||100)*(typeof devicePixelRatio==`number`?devicePixelRatio:1)*.25}function Zm(e,t){typeof t.decode==`function`&&(e.imgCount++,t.complete||(e.imgBytes+=Xm(t),e.suspenseyImages.push(t)),e=rh.bind(e),t.decode().then(e,e))}function Qm(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Pm(r.href),a=t.querySelector(Fm(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=nh.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,Lt(a);return}a=t.ownerDocument||t,r=Im(r),(i=vm.get(i))&&Hm(r,i),a=a.createElement(`link`),Lt(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),np(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=nh.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var $m=0;function eh(e,t){return e.stylesheets&&e.count===0&&ah(e,e.stylesheets),0$m?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function th(e){if(e.count===0&&(e.imgCount===0||!e.waitingForImages)){if(e.stylesheets)ah(e,e.stylesheets);else if(e.unsuspend){var t=e.unsuspend;e.unsuspend=null,t()}}}function nh(){this.count--,th(this)}function rh(){this.imgCount--,th(this)}var ih=null;function ah(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,ih=new Map,t.forEach(oh,e),ih=null,nh.call(e))}function oh(e,t){if(!(t.state.loading&4)){var n=ih.get(e);if(n)var r=n.get(null);else{n=new Map,ih.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=rs()}))(),1),H=i(),as=(0,z.createContext)(void 0);function os(e,t){try{let t=localStorage.getItem(e);if(t===`light`||t===`dark`||t===`system`)return t}catch{}return t}function ss(e){let t=(0,H.c)(14),{children:n,defaultTheme:r,storageKey:i}=e,a=r===void 0?`dark`:r,o=i===void 0?`ui-theme`:i,s;t[0]!==a||t[1]!==o?(s=()=>os(o,a),t[0]=a,t[1]=o,t[2]=s):s=t[2];let[c,l]=(0,z.useState)(s),u,d;t[3]===c?(u=t[4],d=t[5]):(u=()=>{let e=window.document.documentElement;if(e.classList.remove(`light`,`dark`),c===`system`){let t=window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`;e.classList.add(t);return}e.classList.add(c)},d=[c],t[3]=c,t[4]=u,t[5]=d),(0,z.useEffect)(u,d);let f;t[6]===o?f=t[7]:(f=e=>{try{localStorage.setItem(o,e)}catch{}l(e)},t[6]=o,t[7]=f);let p;t[8]!==f||t[9]!==c?(p={theme:c,setTheme:f},t[8]=f,t[9]=c,t[10]=p):p=t[10];let m=p,h;return t[11]!==n||t[12]!==m?(h=(0,B.jsx)(as.Provider,{value:m,children:n}),t[11]=n,t[12]=m,t[13]=h):h=t[13],h}function cs(){let e=(0,z.useContext)(as);if(e===void 0)throw Error(`useTheme must be used within a ThemeProvider`);return e}var ls={name:`activity`,size:24,node:[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]};ls.node;var us=F(ls),ds={name:`book-open`,size:24,node:[[`path`,{d:`M12 5v16`,key:`1f6ucr`}],[`path`,{d:`M20.001 19A2 2 0 0022 17V5a2 2 0 00-1.999-2L16 3.002A5 5 0 0012 5a5 5 0 00-4-2H4a2 2 0 00-2 2v12a2 2 0 001.999 2H8a5 5 0 014 2 5 5 0 014-2z`,key:`1fyvmf`}]]};ds.node;var fs=F(ds),ps={name:`boxes`,size:24,node:[[`path`,{d:`M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z`,key:`lc1i9w`}],[`path`,{d:`m7 16.5-4.74-2.85`,key:`1o9zyk`}],[`path`,{d:`m7 16.5 5-3`,key:`va8pkn`}],[`path`,{d:`M7 16.5v5.17`,key:`jnp8gn`}],[`path`,{d:`M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z`,key:`8zsnat`}],[`path`,{d:`m17 16.5-5-3`,key:`8arw3v`}],[`path`,{d:`m17 16.5 4.74-2.85`,key:`8rfmw`}],[`path`,{d:`M17 16.5v5.17`,key:`k6z78m`}],[`path`,{d:`M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z`,key:`1xygjf`}],[`path`,{d:`M12 8 7.26 5.15`,key:`1vbdud`}],[`path`,{d:`m12 8 4.74-2.85`,key:`3rx089`}],[`path`,{d:`M12 13.5V8`,key:`1io7kd`}]]};ps.node;var ms=F(ps),hs={name:`brain`,size:24,node:[[`path`,{d:`M12 18V5`,key:`adv99a`}],[`path`,{d:`M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4`,key:`1e3is1`}],[`path`,{d:`M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5`,key:`1gqd8o`}],[`path`,{d:`M17.997 5.125a4 4 0 0 1 2.526 5.77`,key:`iwvgf7`}],[`path`,{d:`M18 18a4 4 0 0 0 2-7.464`,key:`efp6ie`}],[`path`,{d:`M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517`,key:`1gq6am`}],[`path`,{d:`M6 18a4 4 0 0 1-2-7.464`,key:`k1g0md`}],[`path`,{d:`M6.003 5.125a4 4 0 0 0-2.526 5.77`,key:`q97ue3`}]]};hs.node;var gs=F(hs),_s={name:`circle-alert`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]],aliases:[`alert-circle`]};_s.node;var vs=F(_s),ys={name:`container`,size:24,node:[[`path`,{d:`M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z`,key:`1t2lqe`}],[`path`,{d:`M10 21.9V14L2.1 9.1`,key:`o7czzq`}],[`path`,{d:`m10 14 11.9-6.9`,key:`zm5e20`}],[`path`,{d:`M14 19.8v-8.1`,key:`159ecu`}],[`path`,{d:`M18 17.5V9.4`,key:`11uown`}]]};ys.node;var bs=F(ys),xs={name:`crosshair`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`22`,x2:`18`,y1:`12`,y2:`12`,key:`l9bcsi`}],[`line`,{x1:`6`,x2:`2`,y1:`12`,y2:`12`,key:`13hhkx`}],[`line`,{x1:`12`,x2:`12`,y1:`6`,y2:`2`,key:`10w3f3`}],[`line`,{x1:`12`,x2:`12`,y1:`22`,y2:`18`,key:`15g9kq`}]]};xs.node;var Ss=F(xs),Cs={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};Cs.node;var ws=F(Cs),Ts={name:`file-stack`,size:24,node:[[`path`,{d:`M11 21a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1`,key:`likhh7`}],[`path`,{d:`M16 16a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1`,key:`17ky3x`}],[`path`,{d:`M21 6a2 2 0 0 0-.586-1.414l-2-2A2 2 0 0 0 17 2h-3a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1z`,key:`1hyeo0`}]]};Ts.node;var Es=F(Ts),Ds={name:`house`,size:24,node:[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]],aliases:[`home`]};Ds.node;var Os=F(Ds),ks={name:`id-card`,size:24,node:[[`path`,{d:`M13 19a4 4 0 00-8 0`,key:`cugzd5`}],[`path`,{d:`M16 10h2`,key:`8sgtl7`}],[`path`,{d:`M16 14h2`,key:`epxaof`}],[`circle`,{cx:`9`,cy:`12`,r:`3`,key:`u3jwor`}],[`rect`,{x:`2`,y:`5`,width:`20`,height:`14`,rx:`2`,key:`qneu4z`}]]};ks.node;var As=F(ks),js={name:`key-round`,size:24,node:[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]};js.node;var Ms=F(js),Ns={name:`layers`,size:24,node:[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]],aliases:[`layers-3`]};Ns.node;var Ps=F(Ns),Fs={name:`layout-grid`,size:24,node:[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`,key:`6d4xhi`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`,key:`nxv5o0`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}]]};Fs.node;var Is=F(Fs),Ls={name:`layout-list`,size:24,node:[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`,key:`1g98yp`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`,key:`1bb6yr`}],[`path`,{d:`M14 4h7`,key:`3xa0d5`}],[`path`,{d:`M14 9h7`,key:`1icrd9`}],[`path`,{d:`M14 15h7`,key:`1mj8o2`}],[`path`,{d:`M14 20h7`,key:`11slyb`}]]};Ls.node;var Rs=F(Ls),zs={name:`log-out`,size:24,node:[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]};zs.node;var Bs=F(zs),Vs={name:`map-pin`,size:24,node:[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]};Vs.node;var Hs=F(Vs),Us={name:`message-square`,size:24,node:[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}]]};Us.node;var Ws=F(Us),Gs={name:`moon`,size:24,node:[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]};Gs.node;var Ks=F(Gs),qs={name:`package`,size:24,node:[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]};qs.node;var Js=F(qs),Ys={name:`panel-left`,size:24,node:[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M9 3v18`,key:`fh3hqa`}]],aliases:[`sidebar`]};Ys.node;var Xs=F(Ys),Zs={name:`route`,size:24,node:[[`circle`,{cx:`6`,cy:`19`,r:`3`,key:`1kj8tv`}],[`path`,{d:`M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15`,key:`1d8sl`}],[`circle`,{cx:`18`,cy:`5`,r:`3`,key:`gq8acd`}]]};Zs.node;var Qs=F(Zs),$s={name:`shield-check`,size:24,node:[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]};$s.node;var ec=F($s),tc={name:`sun`,size:24,node:[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]};tc.node;var nc=F(tc),rc={name:`user-cog`,size:24,node:[[`path`,{d:`M10 15H6a4 4 0 0 0-4 4v2`,key:`1nfge6`}],[`path`,{d:`m14.305 16.53.923-.382`,key:`1itpsq`}],[`path`,{d:`m15.228 13.852-.923-.383`,key:`eplpkm`}],[`path`,{d:`m16.852 12.228-.383-.923`,key:`13v3q0`}],[`path`,{d:`m16.852 17.772-.383.924`,key:`1i8mnm`}],[`path`,{d:`m19.148 12.228.383-.923`,key:`1q8j1v`}],[`path`,{d:`m19.53 18.696-.382-.924`,key:`vk1qj3`}],[`path`,{d:`m20.772 13.852.924-.383`,key:`n880s0`}],[`path`,{d:`m20.772 16.148.924.383`,key:`1g6xey`}],[`circle`,{cx:`18`,cy:`15`,r:`3`,key:`gjjjvw`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]};rc.node;var ic=F(rc),ac={name:`users-round`,size:24,node:[[`path`,{d:`M18 21a8 8 0 0 0-16 0`,key:`3ypg7q`}],[`circle`,{cx:`10`,cy:`8`,r:`5`,key:`o932ke`}],[`path`,{d:`M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3`,key:`10s06x`}]],aliases:[`users-2`]};ac.node;var oc=F(ac),sc={name:`users`,size:24,node:[[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`path`,{d:`M16 3.128a4 4 0 0 1 0 7.744`,key:`16gr8j`}],[`path`,{d:`M22 21v-2a4 4 0 0 0-3-3.87`,key:`kshegd`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]};sc.node;var cc=F(sc);function lc(e,t){return t!=null&&!Ut(t)?0:typeof e==`function`?e():e}function uc(e,t,n){let r=lc(e,n);return typeof r==`number`?r:r?.[t]}function dc(e){return typeof e==`function`?e():e}function fc(e,t){return t||e===`click`||e===`mousedown`}function pc(e){return e?.includes(`mouse`)&&e!==`mousedown`}var mc=z.createContext({hasProvider:!1,timeoutMs:0,delayRef:{current:0},initialDelayRef:{current:0},timeout:new kt,currentIdRef:{current:null},currentContextRef:{current:null}});function hc(e,t){e.current=t.current}function gc(e){let{children:t,delay:n,timeoutMs:r=0}=e,i=z.useRef(n),a=z.useRef(n),o=z.useRef(null),s=z.useRef(null),c=Mt();return ht(()=>{if(a.current=n,!o.current){i.current=n;return}i.current={open:uc(i.current,`open`),close:uc(n,`close`)}},[n,o,i,a]),(0,B.jsx)(mc.Provider,{value:z.useMemo(()=>({hasProvider:!0,delayRef:i,initialDelayRef:a,currentIdRef:o,timeoutMs:r,currentContextRef:s,timeout:c}),[r,c]),children:t})}function _c(e,t={open:!1}){let{open:n}=t,r=`rootStore`in e?e.rootStore:e,i=r.useState(`floatingId`),{currentIdRef:a,delayRef:o,timeoutMs:s,initialDelayRef:c,currentContextRef:l,hasProvider:u,timeout:d}=z.useContext(mc),[f,p]=z.useState(!1),m=z.useRef(n);return ht(()=>{m.current=n},[n]),ht(()=>{function e(){l.current?.setIsInstantPhase(!1),a.current=null,l.current=null,o.current=c.current,d.clear()}if(a.current&&!n&&a.current===i){if(p(!1),s){let t=i;return d.start(s,()=>{r.select(`open`)||a.current&&a.current!==t||e()}),()=>{(m.current||a.current!==t)&&d.clear()}}e()}},[n,i,a,o,s,c,l,d,r]),ht(()=>{if(!n)return;let e=l.current,t=a.current;d.clear(),l.current={onOpenChange:r.setOpen,setIsInstantPhase:p},a.current=i,o.current={open:0,close:uc(c.current,`close`)},t!==null&&t!==i?(p(!0),e?.setIsInstantPhase(!0),e?.onOpenChange(!1,Ot(Ct))):(p(!1),e?.setIsInstantPhase(!1))},[n,i,r,a,o,c,l,d]),ht(()=>()=>{if(a.current===i){if(l.current=null,!m.current)return;a.current=null,hc(o,c),d.clear()}},[l,a,o,i,c,d]),z.useMemo(()=>({activeIdRef:a,hasProvider:u,delayRef:o,isInstantPhase:f}),[a,u,o,f])}function vc(e,t){let n=null,r=null,i=!1;return{contextElement:e||void 0,getBoundingClientRect(){let a=e?.getBoundingClientRect()||{width:0,height:0,x:0,y:0},o=t.axis===`x`||t.axis===`both`,s=t.axis===`y`||t.axis===`both`,c=[`mouseenter`,`mousemove`].includes(t.dataRef.current.openEvent?.type||``)&&t.pointerType!==`touch`,l=a.width,u=a.height,d=a.x,f=a.y;return n==null&&t.x&&o&&(n=a.x-t.x),r==null&&t.y&&s&&(r=a.y-t.y),d-=n||0,f-=r||0,l=0,u=0,!i||c?(l=t.axis===`y`?a.width:0,u=t.axis===`x`?a.height:0,d=o&&t.x!=null?t.x:d,f=s&&t.y!=null?t.y:f):i&&!c&&(u=t.axis===`x`?a.height:u,l=t.axis===`y`?a.width:l),i=!0,{width:l,height:u,x:d,y:f,top:f,right:d+l,bottom:f+u,left:d}}}}function yc(e){return e!=null&&e.clientX!=null}function bc(e,t={}){let{enabled:n=!0,axis:r=`both`}=t,i=`rootStore`in e?e.rootStore:e,a=i.useState(`open`),o=i.useState(`floatingElement`),s=i.useState(`domReferenceElement`),c=i.context.dataRef,l=z.useRef(!1),u=z.useRef(null),[d,f]=z.useState(),[p,m]=z.useState([]),h=gt(e=>{i.set(`positionReference`,e)}),g=gt((e,t,n)=>{l.current||(!c.current.openEvent||yc(c.current.openEvent))&&i.set(`positionReference`,vc(n??s,{x:e,y:t,axis:r,dataRef:c,pointerType:d}))}),_=gt(e=>{a?u.current||(g(e.clientX,e.clientY,e.currentTarget),m([])):g(e.clientX,e.clientY,e.currentTarget)}),v=Ut(d)?o:a;z.useEffect(()=>{if(!n){h(s);return}if(!v)return;function e(){u.current?.(),u.current=null}let t=ft(o);function r(t){let n=yt(t);xt(o,n)?e():g(t.clientX,t.clientY)}return!c.current.openEvent||yc(c.current.openEvent)?u.current=Ie(t,`mousemove`,r):h(s),e},[v,n,o,c,s,i,g,h,p]),z.useEffect(()=>()=>{i.set(`positionReference`,null)},[i]),z.useEffect(()=>{n&&!o&&(l.current=!1)},[n,o]),z.useEffect(()=>{!n&&a&&(l.current=!0)},[n,a]);let y=z.useMemo(()=>{function e(e){f(e.pointerType)}return{onPointerDown:e,onPointerEnter:e,onMouseMove:_,onMouseEnter:_}},[_]);return z.useMemo(()=>n?{reference:y,trigger:y}:{},[n,y])}var xc=Me();function Sc(e){let t=z.useCallback(t=>e===void 0?He:e.subscribeStore(t),[e]),n=z.useCallback(()=>e===void 0?void 0:e.store,[e]);return(0,xc.useSyncExternalStore)(t,n,()=>e?.serverStore)}var Cc=on&&Ht;function wc(e,t={}){let{enabled:n=!0,delay:r}=t,i=`rootStore`in e?e.rootStore:e,{events:a,dataRef:o}=i.context,s=z.useRef(!1),c=z.useRef(null),l=z.useRef(!0),u=Mt();z.useEffect(()=>{let e=i.select(`domReferenceElement`);if(!n)return;let t=ft(e);function r(){let e=i.select(`domReferenceElement`);!i.select(`open`)&&pt(e)&&e===jt(bt(e))&&(s.current=!0,c.current=e)}function a(){l.current=!0}function o(){l.current=!1}return It(Ie(t,`blur`,r),Cc&&Ie(t,`keydown`,a,!0),Cc&&Ie(t,`pointerdown`,o,!0))},[i,n]),z.useEffect(()=>{if(!n)return;function e(e){if(e.reason===`trigger-press`||e.reason===`escape-key`){let e=i.select(`domReferenceElement`);vt(e)&&(c.current=e,s.current=!0)}}return a.on(`openchange`,e),()=>{a.off(`openchange`,e)}},[a,n,i]);let d=z.useMemo(()=>{function e(){s.current=!1,c.current=null}return{onMouseLeave(){e()},onFocus(t){let n=t.currentTarget;if(s.current){if(c.current===n)return;e()}let a=yt(t.nativeEvent);if(vt(a)){if(Cc&&!t.relatedTarget){if(!l.current&&!Jt(a))return}else if(!Wt(a))return}let o=Qt(t.relatedTarget,i.context.triggerElements),{nativeEvent:d,currentTarget:f}=t,p=typeof r==`function`?r():r;if(i.select(`open`)&&o||p===0||p===void 0){i.setOpen(!0,Ot(Et,d,f));return}u.start(p,()=>{s.current||i.setOpen(!0,Ot(Et,d,f))})},onBlur(t){e();let n=t.relatedTarget,r=t.nativeEvent,a=vt(n)&&n.hasAttribute(ln(`focus-guard`))&&n.getAttribute(`data-type`)===`outside`;u.start(0,()=>{let e=i.select(`domReferenceElement`),t=jt(bt(e));(n||t!==e)&&(xt(o.current.floatingContext?.refs.floating.current,t)||xt(e,t)||a||Qt(n??t,i.context.triggerElements)||i.setOpen(!1,Ot(Et,r)))})}}},[o,r,i,u]);return z.useMemo(()=>n?{reference:d,trigger:d}:{},[n,d])}var Tc=class e{constructor(){this.pointerType=void 0,this.interactedInside=!1,this.handler=void 0,this.blockMouseMove=!0,this.performedPointerEventsMutation=!1,this.pointerEventsScopeElement=null,this.pointerEventsReferenceElement=null,this.pointerEventsFloatingElement=null,this.restTimeoutPending=!1,this.openChangeTimeout=new kt,this.restTimeout=new kt,this.handleCloseOptions=void 0}static create(){return new e}dispose=()=>{this.openChangeTimeout.clear(),this.restTimeout.clear()};disposeEffect=()=>this.dispose},Ec=new WeakMap;function Dc(e){if(!e.performedPointerEventsMutation)return;let t=e.pointerEventsScopeElement;t&&Ec.get(t)===e&&(e.pointerEventsScopeElement?.style.removeProperty(`pointer-events`),e.pointerEventsReferenceElement?.style.removeProperty(`pointer-events`),e.pointerEventsFloatingElement?.style.removeProperty(`pointer-events`),Ec.delete(t)),e.performedPointerEventsMutation=!1,e.pointerEventsScopeElement=null,e.pointerEventsReferenceElement=null,e.pointerEventsFloatingElement=null}function Oc(e,t){let{scopeElement:n,referenceElement:r,floatingElement:i}=t,a=Ec.get(n);a&&a!==e&&Dc(a),Dc(e),e.performedPointerEventsMutation=!0,e.pointerEventsScopeElement=n,e.pointerEventsReferenceElement=r,e.pointerEventsFloatingElement=i,Ec.set(n,e),n.style.pointerEvents=`none`,r.style.pointerEvents=`auto`,i.style.pointerEvents=`auto`}function kc(e){let t=e.context.dataRef.current,n=Be(()=>t.hoverInteractionState??Tc.create()).current;return t.hoverInteractionState||=n,St(t.hoverInteractionState.disposeEffect),t.hoverInteractionState}function Ac(e,t={}){let{enabled:n=!0,closeDelay:r=0,nodeId:i}=t,a=`rootStore`in e?e.rootStore:e,o=a.useState(`open`),s=a.useState(`floatingElement`),c=a.useState(`domReferenceElement`),{dataRef:l}=a.context,u=Rt(),d=Yt(),f=kc(a),p=Mt(),m=gt(()=>fc(l.current.openEvent?.type,f.interactedInside)),h=gt(()=>pc(l.current.openEvent?.type)),g=gt(()=>{Dc(f)});ht(()=>{o||(f.pointerType=void 0,f.restTimeoutPending=!1,f.interactedInside=!1,g())},[o,f,g]),z.useEffect(()=>g,[g]),ht(()=>{if(n&&o&&f.handleCloseOptions?.blockPointerEvents&&h()&&vt(c)&&s){let e=c,t=s,n=bt(s),r=u?.nodesRef.current.find(e=>e.id===d)?.context?.elements.floating;r&&(r.style.pointerEvents=``);let i=f.pointerEventsScopeElement===t?null:f.pointerEventsScopeElement,a=r===t?null:r,o=f.handleCloseOptions?.getScope?.()??i??a??e.closest(`[data-rootownerid]`)??n.body;return Oc(f,{scopeElement:o,referenceElement:e,floatingElement:t}),()=>{g()}}},[n,o,c,s,f,h,u,d,g]),z.useEffect(()=>{if(!n)return;function e(){return!!(u&&d&&Nt(u.nodesRef.current,d).length>0)}function t(e){let t=uc(r,`close`,f.pointerType),n=()=>{a.setOpen(!1,Ot(I,e)),u?.events.emit(`floating.closed`,e)};t?f.openChangeTimeout.start(t,n):(f.openChangeTimeout.clear(),n())}function o(e){let t=yt(e);if(!nn(t)){f.interactedInside=!1;return}f.interactedInside=t?.closest(`[aria-haspopup]`)!=null}function c(){f.openChangeTimeout.clear(),p.clear(),u?.events.off(`floating.closed`,v),g()}function _(n){if(e()&&u){u.events.on(`floating.closed`,v);return}if(Qt(n.relatedTarget,a.context.triggerElements))return;let r=l.current.floatingContext?.nodeId??i,o=n.relatedTarget;if(!(u&&r&&vt(o)&&Nt(u.nodesRef.current,r,!1).some(e=>xt(e.context?.elements.floating,o)))){if(f.handler){f.handler(n);return}g(),h()&&!m()&&t(n)}}function v(t){u&&d&&!e()&&p.start(0,()=>{u.events.off(`floating.closed`,v),a.setOpen(!1,Ot(I,t)),u.events.emit(`floating.closed`,t)})}let y=s;return It(y&&Ie(y,`mouseenter`,c),y&&Ie(y,`mouseleave`,_),y&&Ie(y,`pointerdown`,o,!0),()=>{u?.events.off(`floating.closed`,v)})},[n,s,a,l,r,i,h,m,g,f,u,d,p])}var jc=n(Pe(),1),Mc={current:null};function Nc(e,t={}){let{enabled:n=!0,delay:r=0,handleClose:i=null,mouseOnly:a=!1,restMs:o=0,move:s=!0,triggerElementRef:c=Mc,externalTree:l,isActiveTrigger:u=!0,getHandleCloseContext:d,isClosing:f,shouldOpen:p,guardStaleOpen:m=!1}=t,h=`rootStore`in e?e.rootStore:e,{dataRef:g,events:_}=h.context,v=Rt(l),y=kc(h),b=z.useRef(!1),x=Le(i),S=Le(r),C=Le(o),w=Le(n),T=Le(p),E=Le(f),D=gt(()=>fc(g.current.openEvent?.type,y.interactedInside)),O=gt(()=>T.current?.()!==!1),k=gt((e,t,n)=>{let r=h.context.triggerElements;if(r.hasElement(t))return!e||!xt(e,t);if(!vt(n))return!1;let i=n;return r.hasMatchingElement(e=>xt(e,i))&&(!e||!xt(e,i))}),ee=gt(()=>{y.handler&&=(bt(h.select(`domReferenceElement`)).removeEventListener(`mousemove`,y.handler),void 0)}),te=gt(()=>{Dc(y)});return u&&(y.handleCloseOptions=i?.__options),z.useEffect(()=>ee,[ee]),z.useEffect(()=>{if(!n)return;function e(e){e.open?b.current=!1:(b.current=e.reason===I,ee(),y.openChangeTimeout.clear(),y.restTimeout.clear(),y.blockMouseMove=!0,y.restTimeoutPending=!1)}return _.on(`openchange`,e),()=>{_.off(`openchange`,e)}},[n,_,y,ee]),z.useEffect(()=>{if(!n)return;function e(e,t=!0){let n=uc(S.current,`close`,y.pointerType);n?y.openChangeTimeout.start(n,()=>{h.setOpen(!1,Ot(I,e)),v?.events.emit(`floating.closed`,e)}):t&&(y.openChangeTimeout.clear(),h.setOpen(!1,Ot(I,e)),v?.events.emit(`floating.closed`,e))}let t=c.current??(u?h.select(`domReferenceElement`):null);if(!vt(t))return;function r(e){if(y.openChangeTimeout.clear(),y.blockMouseMove=!1,a&&!Ut(y.pointerType))return;let t=dc(C.current),n=uc(S.current,`open`,y.pointerType),r=yt(e),i=e.currentTarget??null,o=h.select(`domReferenceElement`),s=i;if(vt(r)&&!h.context.triggerElements.hasElement(r)){for(let e of h.context.triggerElements.elements())if(xt(e,r)){s=e;break}}vt(i)&&vt(o)&&!h.context.triggerElements.hasElement(i)&&xt(i,o)&&(s=o);let c=s!=null&&k(o,s,r),l=h.select(`open`),u=E.current?.()??h.select(`transitionStatus`)===`ending`,d=!l&&u&&b.current,f=!c&&vt(s)&&vt(o)&&xt(o,s)&&d,p=t>0&&!n,m=c&&(l||d)||f,g=!l||c;if(m){O()&&h.setOpen(!0,Ot(I,e,s));return}p||(n?y.openChangeTimeout.start(n,()=>{g&&O()&&h.setOpen(!0,Ot(I,e,s))}):g&&O()&&h.setOpen(!0,Ot(I,e,s)))}function i(t){if(D()){te();return}ee();let n=h.select(`domReferenceElement`),r=bt(n);y.restTimeout.clear(),y.restTimeoutPending=!1;let i=g.current.floatingContext??d?.();if(!Qt(t.relatedTarget,h.context.triggerElements)){if(x.current&&i){h.select(`open`)||y.openChangeTimeout.clear();let n=c.current;y.handler=x.current({...i,tree:v,x:t.clientX,y:t.clientY,onClose(){te(),ee(),w.current&&!D()&&n===h.select(`domReferenceElement`)&&e(t,!0)}}),r.addEventListener(`mousemove`,y.handler),y.handler(t);return}(y.pointerType!==`touch`||!xt(h.select(`floatingElement`),t.relatedTarget))&&e(t)}}function o(e){xt(t,e.relatedTarget)||(y.openChangeTimeout.clear(),y.restTimeout.clear(),y.restTimeoutPending=!1)}let l=m?Ie(t,`mouseout`,o):void 0;return s?It(Ie(t,`mousemove`,r,{once:!0}),Ie(t,`mouseenter`,r),Ie(t,`mouseleave`,i),l):It(Ie(t,`mouseenter`,r),Ie(t,`mouseleave`,i),l)},[ee,te,g,S,h,n,x,y,u,k,D,a,s,C,c,v,w,d,E,O,m]),z.useMemo(()=>{if(!n)return;function e(e){y.pointerType=e.pointerType}return{onPointerDown:e,onPointerEnter:e,onMouseMove(e){let{nativeEvent:t}=e,n=e.currentTarget,r=h.select(`domReferenceElement`),i=h.select(`open`),o=k(r,n,e.target);if(a&&!Ut(y.pointerType))return;if(i&&o&&y.handleCloseOptions?.blockPointerEvents){let e=h.select(`floatingElement`);if(e){let t=y.handleCloseOptions?.getScope?.()??n.ownerDocument.body;Oc(y,{scopeElement:t,referenceElement:n,floatingElement:e})}}let s=dc(C.current);if(i&&!o||s===0||!o&&y.restTimeoutPending&&e.movementX**2+e.movementY**2<2)return;y.restTimeout.clear();function c(){if(y.restTimeoutPending=!1,D())return;let e=h.select(`open`);!y.blockMouseMove&&(!e||o)&&O()&&h.setOpen(!0,Ot(I,t,n))}y.pointerType===`touch`?jc.flushSync(()=>{c()}):o&&i?c():(y.restTimeoutPending=!0,y.restTimeout.start(s,c))}}},[n,y,D,k,a,h,C,O])}var Pc=.1,Fc=Pc*Pc,Ic=.5;function Lc(e,t,n,r,i,a){return r>=t!=a>=t&&e<=(i-n)*(t-r)/(a-r)+n}function Rc(e,t,n,r,i,a,o,s,c,l){let u=!1;return Lc(e,t,n,r,i,a)&&(u=!u),Lc(e,t,i,a,o,s)&&(u=!u),Lc(e,t,o,s,c,l)&&(u=!u),Lc(e,t,c,l,n,r)&&(u=!u),u}function zc(e,t,n){return e>=n.x&&e<=n.x+n.width&&t>=n.y&&t<=n.y+n.height}function Bc(e,t,n,r,i,a){return e>=Math.min(n,i)&&e<=Math.max(n,i)&&t>=Math.min(r,a)&&t<=Math.max(r,a)}function Vc(e={}){let{blockPointerEvents:t=!1}=e,n=new kt,r=({x:e,y:t,placement:r,elements:i,onClose:a,nodeId:o,tree:s})=>{let c=r?.split(`-`)[0],l=!1,u=null,d=null,f=typeof performance<`u`?performance.now():0;function p(e,t){let n=performance.now(),r=n-f;if(u===null||d===null||r===0)return u=e,d=t,f=n,!1;let i=e-u,a=t-d,o=i*i+a*a,s=r*r*Fc;return u=e,d=t,f=n,o0)}function b(){y()||m()}if(y())return;let x=a.getBoundingClientRect(),S=u.getBoundingClientRect(),C=e>S.right-S.width/2,w=t>S.bottom-S.height/2,T=S.width>x.width,E=S.height>x.height,D=(T?x:S).left,O=(T?x:S).right,k=(E?x:S).top,ee=(E?x:S).bottom;if(c===`top`&&t>=x.bottom-1||c===`bottom`&&t<=x.top+1||c===`left`&&e>=x.right-1||c===`right`&&e<=x.left+1){b();return}let te=!1;switch(c){case`top`:te=Bc(d,f,D,x.top+1,O,S.bottom-1);break;case`bottom`:te=Bc(d,f,D,S.top+1,O,x.bottom-1);break;case`left`:te=Bc(d,f,S.right-1,ee,x.left+1,k);break;case`right`:te=Bc(d,f,x.right-1,ee,S.left+1,k)}if(te)return;if(l&&!zc(d,f,x)){b();return}if(!g&&p(d,f)){b();return}let ne=!1;switch(c){case`top`:{let n=T?Ic/2:Ic*4,r=T||C?e+n:e-n,i=T?e-n:C?e+n:e-n,a=t+Ic+1,o=C||T?S.bottom-Ic:S.top,s=C?T?S.bottom-Ic:S.top:S.bottom-Ic;ne=Rc(d,f,r,a,i,a,S.left,o,S.right,s);break}case`bottom`:{let n=T?Ic/2:Ic*4,r=T||C?e+n:e-n,i=T?e-n:C?e+n:e-n,a=t-Ic,o=C||T?S.top+Ic:S.bottom,s=C?T?S.top+Ic:S.bottom:S.top+Ic;ne=Rc(d,f,r,a,i,a,S.left,o,S.right,s);break}case`left`:{let n=E?Ic/2:Ic*4,r=E||w?t+n:t-n,i=E?t-n:w?t+n:t-n,a=e+Ic+1,o=w||E?S.right-Ic:S.left,s=w?E?S.right-Ic:S.left:S.right-Ic;ne=Rc(d,f,o,S.top,s,S.bottom,a,r,a,i);break}case`right`:{let n=E?Ic/2:Ic*4,r=E||w?t+n:t-n,i=E?t-n:w?t+n:t-n,a=e-Ic,o=w||E?S.left+Ic:S.right,s=w?E?S.left+Ic:S.right:S.left+Ic;ne=Rc(d,f,a,r,a,i,o,S.top,s,S.bottom);break}}ne?l||n.start(40,b):b()}};return r.__options={...e,blockPointerEvents:t},r}var Hc=Pt(function(e){return vn(`dialog`,e)});function Uc(e){let t=(0,H.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,B.jsx)(Hc,{"data-slot":`sheet`,...n}),t[2]=n,t[3]=r),r}function Wc(e){let t=(0,H.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,B.jsx)(bn,{"data-slot":`sheet-portal`,...n}),t[2]=n,t[3]=r),r}function Gc(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`data-closed:fade-out-0 data-open:fade-in-0 data-closed:animate-out data-open:animate-in fixed inset-0 z-50 bg-black/80 duration-100 data-ending-style:opacity-0 data-starting-style:opacity-0 supports-backdrop-filter:backdrop-blur-xs`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(_n,{className:i,"data-slot":`sheet-overlay`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Kc(e){let t=(0,H.c)(17),n,r,i,a,o;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5]):({className:r,children:n,side:a,showCloseButton:o,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o);let s=a===void 0?`right`:a,c=o===void 0||o,l;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,B.jsx)(Gc,{}),t[6]=l):l=t[6];let u;t[7]===r?u=t[8]:(u=Xe(`data-[side=right]:data-closed:slide-out-to-right-10 data-[side=right]:data-open:slide-in-from-right-10 data-[side=left]:data-closed:slide-out-to-left-10 data-[side=left]:data-open:slide-in-from-left-10 data-[side=top]:data-closed:slide-out-to-top-10 data-[side=top]:data-open:slide-in-from-top-10 data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:data-closed:slide-out-to-bottom-10 data-[side=bottom]:data-open:slide-in-from-bottom-10 data-closed:animate-out data-open:animate-in fixed z-50 flex flex-col bg-background bg-clip-padding text-xs/relaxed shadow-lg transition duration-200 ease-in-out data-[side=bottom]:inset-x-0 data-[side=bottom]:bottom-0 data-[side=bottom]:h-auto data-[side=bottom]:border-t data-[side=left]:inset-y-0 data-[side=left]:left-0 data-[side=left]:h-full data-[side=left]:w-3/4 data-[side=left]:border-r data-[side=right]:inset-y-0 data-[side=right]:right-0 data-[side=right]:h-full data-[side=right]:w-3/4 data-[side=right]:border-l data-[side=top]:inset-x-0 data-[side=top]:top-0 data-[side=top]:h-auto data-[side=top]:border-b data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm`,r),t[7]=r,t[8]=u);let d;t[9]===c?d=t[10]:(d=c&&(0,B.jsxs)(hn,{"data-slot":`sheet-close`,render:(0,B.jsx)(_t,{className:`absolute top-4 right-4`,size:`icon-sm`,variant:`ghost`}),children:[(0,B.jsx)(ut,{}),(0,B.jsx)(`span`,{className:`sr-only`,children:`Close`})]}),t[9]=c,t[10]=d);let f;return t[11]!==n||t[12]!==i||t[13]!==s||t[14]!==u||t[15]!==d?(f=(0,B.jsxs)(Wc,{children:[l,(0,B.jsxs)(gn,{className:u,"data-side":s,"data-slot":`sheet-content`,...i,children:[n,d]})]}),t[11]=n,t[12]=i,t[13]=s,t[14]=u,t[15]=d,t[16]=f):f=t[16],f}function qc(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`flex flex-col gap-1.5 p-6`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`div`,{className:i,"data-slot":`sheet-header`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Jc(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`text-sm font-medium text-foreground`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(Sn,{className:i,"data-slot":`sheet-title`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Yc(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`text-xs/relaxed text-muted-foreground`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(xn,{className:i,"data-slot":`sheet-description`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}var Xc=z.createContext(void 0);function Zc(e){let t=z.useContext(Xc);if(t===void 0&&!e)throw Error(We(72));return t}var Qc={...yn,disabled:e=>e.disabled,instantType:e=>e.instantType,isInstantPhase:e=>e.isInstantPhase,trackCursorAxis:e=>e.trackCursorAxis,disableHoverablePopup:e=>e.disableHoverablePopup,lastOpenChangeReason:e=>e.openChangeReason,closeOnClick:e=>e.closeOnClick,closeDelay:e=>e.closeDelay,adaptiveOrigin:e=>e.adaptiveOrigin},$c=class extends Ft{constructor(e,t,n){let r=new en;super(el(e,r,t,n),tl(r),Qc)}setOpen=(e,t)=>{L(this,e,t,{extraState:{openChangeReason:t.reason}})};cancelPendingOpen(e){this.state.floatingRootContext.dispatchOpenChange(!1,Ot(wt,e))}};function el(e,t,n,r=!1){return{...mn(t,n,r),disabled:!1,instantType:void 0,isInstantPhase:!1,trackCursorAxis:`none`,disableHoverablePopup:!1,openChangeReason:null,closeOnClick:!0,closeDelay:0,adaptiveOrigin:void 0,...e}}function tl(e){return{popupRef:z.createRef(),onOpenChange:void 0,onOpenChangeComplete:void 0,triggerElements:e}}var nl=Pt(function(e){let{disabled:t=!1,defaultOpen:n=!1,open:r,disableHoverablePopup:i=!1,trackCursorAxis:a=`none`,actionsRef:o,onOpenChange:s,onOpenChangeComplete:c,handle:l,triggerId:u,defaultTriggerId:d=null,children:f}=e,p=Vt((e,t)=>new $c({open:n,openProp:r,activeTriggerId:d,triggerIdProp:u},e,t));p.useControlledProp(`openProp`,r),p.useControlledProp(`triggerIdProp`,u),p.useContextCallback(`onOpenChange`,s),p.useContextCallback(`onOpenChangeComplete`,c);let m=p.useState(`open`),h=!t&&m,g=p.useState(`activeTriggerId`),_=p.useState(`mounted`),v=p.useState(`payload`);p.useSyncedValues({trackCursorAxis:a,disableHoverablePopup:i,disabled:t}),cn(p,{closeOnActiveTriggerUnmount:!0});let{forceUnmount:y,transitionStatus:b}=Gt(h,p),x=p.useState(`isInstantPhase`),S=p.useState(`instantType`),C=p.useState(`lastOpenChangeReason`),w=z.useRef(null);ht(()=>{m&&t&&p.setOpen(!1,Ot(Tt))},[m,t,p]),ht(()=>{b===`ending`&&C===`none`||b!==`ending`&&x?(S!==`delay`&&(w.current=S),p.set(`instantType`,`delay`)):w.current!==null&&(p.set(`instantType`,w.current),w.current=null)},[b,x,C,S,p]),ht(()=>{h&&(g??p.set(`payload`,void 0))},[p,g,h]),z.useImperativeHandle(o,()=>({unmount:y,close:()=>p.setOpen(!1,Ot(Dt))}),[y,p]);let T=h||_||!t&&a!==`none`;return(0,B.jsxs)(Xc.Provider,{value:p,children:[l&&(0,B.jsx)(qt,{handle:l,store:p}),T&&(0,B.jsx)(rl,{store:p,disabled:t,trackCursorAxis:a}),typeof f==`function`?f({payload:v}):f]})});function rl({store:e,disabled:t,trackCursorAxis:n}){let r=e.useState(`floatingRootContext`),i=Xt(r,{enabled:!t,referencePress:()=>e.select(`closeOnClick`)}),a=bc(r,{enabled:!t&&n!==`none`,axis:n===`none`?void 0:n}),o=z.useMemo(()=>ze(a.reference,i.reference),[a.reference,i.reference]);return sn(e,{activeTriggerProps:o,inactiveTriggerProps:o,popupProps:i.floating??Re}),null}var il=z.createContext(void 0);function al(){return z.useContext(il)}var ol=`data-base-ui-tooltip-trigger`;function sl(e){if(`composedPath`in e){let t=e.composedPath();for(let e=0;em.select(`transitionStatus`)===`ending`,shouldOpen(){return!ie.current}}),de=wc(v,{enabled:!ee}).reference,fe=e=>{let t=ie.current,n=sl(e),r=le(n),i=y.current,a=i&&n&&xt(i,n);if(r&&m.select(`open`)&&m.select(`lastOpenChangeReason`)===`trigger-hover`){m.setOpen(!1,Ot(I,e));return}if(t&&!r&&a&&!te.current&&!m.select(`open`)&&i&&Ut(oe.current)){let t=()=>{!ie.current&&!te.current&&!m.select(`open`)&&m.setOpen(!0,Ot(I,e,i))},n=se();n===0?(ae.clear(),t()):ae.start(n,t)}},pe=m.useState(`triggerProps`,S);return Ve(`button`,e,{state:{open:_},ref:[t,x,y],props:[ue,de,S||ne!==`none`?pe:void 0,{onMouseOver(e){fe(e.nativeEvent)},onFocus(e){ce(sl(e.nativeEvent))&&e.preventBaseUIHandler()},onMouseLeave(){ie.current=!1,ae.clear(),oe.current=void 0},onPointerEnter(e){oe.current=e.pointerType},onPointerDown(e){oe.current=e.pointerType,m.set(`closeOnClick`,l),l&&!m.select(`open`)&&m.cancelPendingOpen(e.nativeEvent)},onClick(e){l&&!m.select(`open`)&&m.cancelPendingOpen(e.nativeEvent)},id:h,[$t]:ee?``:void 0,[ol]:ee?void 0:``},f],stateAttributesMapping:rn})}),ul=z.createContext(void 0);function dl(){let e=z.useContext(ul);if(e===void 0)throw Error(We(70));return e}var fl=z.forwardRef(function(e,t){let{children:n,container:r,className:i,render:a,style:o,...s}=e,{node:c,subtree:l}=Bt({container:r,ref:t,componentProps:e,elementProps:s});return!l&&!c?null:(0,B.jsxs)(z.Fragment,{children:[l,c&&jc.createPortal(n,c)]})}),pl=z.forwardRef(function(e,t){let{keepMounted:n=!1,...r}=e;return Zc().useState(`mounted`)||n?(0,B.jsx)(ul.Provider,{value:n,children:(0,B.jsx)(fl,{ref:t,...r})}):null}),ml=z.createContext(void 0);function hl(){let e=z.useContext(ml);if(e===void 0)throw Error(We(71));return e}var gl=z.forwardRef(function(e,t){let{render:n,className:r,anchor:i,positionMethod:a=`absolute`,side:o=`top`,align:s=`center`,sideOffset:c=0,alignOffset:l=0,collisionBoundary:u=`clipping-ancestors`,collisionPadding:d=5,arrowPadding:f=5,sticky:p=!1,disableAnchorTracking:m=!1,collisionAvoidance:h=Lt,style:g,..._}=e,v=Zc(),y=dl(),b=v.useState(`open`),x=v.useState(`mounted`),S=v.useState(`trackCursorAxis`),C=v.useState(`disableHoverablePopup`),w=v.useState(`floatingRootContext`),T=v.useState(`instantType`),E=v.useState(`transitionStatus`),D=v.useState(`adaptiveOrigin`),O=dn({anchor:i,positionMethod:a,floatingRootContext:w,mounted:x,side:o,sideOffset:c,align:s,alignOffset:l,collisionBoundary:u,collisionPadding:d,sticky:p,arrowPadding:f,disableAnchorTracking:m,keepMounted:y,collisionAvoidance:h,adaptiveOrigin:D}),k=z.useMemo(()=>({open:b,side:O.side,align:O.align,anchorHidden:O.anchorHidden,instant:S===`none`?T:`tracking-cursor`}),[b,O.side,O.align,O.anchorHidden,S,T]),ee=fn(e,k,{styles:O.positionerStyles,transitionStatus:E,props:_,refs:[t,v.useStateSetter(`positionerElement`)],hidden:!x,inert:!b||S===`both`||C});return(0,B.jsx)(ml.Provider,{value:O,children:ee})}),_l=z.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,o=Zc(),{side:s,align:c}=hl(),l=o.useState(`open`),u=o.useState(`instantType`),d=o.useState(`transitionStatus`),f=o.useState(`popupProps`),p=o.useState(`floatingRootContext`),m=o.useState(`disabled`),h=o.useState(`closeDelay`);Fe({open:l,ref:o.context.popupRef,onComplete(){l&&o.context.onOpenChangeComplete?.(!0)}}),Ac(p,{enabled:!m,closeDelay:h});let g=o.useStateSetter(`popupElement`);return Ve(`div`,e,{state:{open:l,side:s,align:c,instant:u,transitionStatus:d},ref:[t,o.context.popupRef,g],props:[Zt,f,un(d),a],stateAttributesMapping:Kt})}),vl=z.forwardRef(function(e,t){let{render:n,className:r,style:i,...a}=e,o=Zc(),{arrowRef:s,side:c,align:l,arrowUncentered:u,arrowStyles:d}=hl(),f={open:o.useState(`open`),side:c,align:l,uncentered:u,instant:o.useState(`instantType`)};return Ve(`div`,e,{state:f,ref:[t,s],props:[{style:d,"aria-hidden":!0},a],stateAttributesMapping:tn})}),yl=function(e){let{delay:t,closeDelay:n,timeout:r=400}=e,i=z.useMemo(()=>({open:t,close:n}),[t,n]);return(0,B.jsx)(il.Provider,{value:t,children:(0,B.jsx)(gc,{delay:i,timeoutMs:r,children:e.children})})};function bl(e){let t=(0,H.c)(6),n,r;t[0]===e?(n=t[1],r=t[2]):({delay:r,...n}=e,t[0]=e,t[1]=n,t[2]=r);let i=r===void 0?0:r,a;return t[3]!==i||t[4]!==n?(a=(0,B.jsx)(yl,{"data-slot":`tooltip-provider`,delay:i,...n}),t[3]=i,t[4]=n,t[5]=a):a=t[5],a}function xl(e){let t=(0,H.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,B.jsx)(bl,{children:(0,B.jsx)(nl,{"data-slot":`tooltip`,...n})}),t[2]=n,t[3]=r),r}function Sl(e){let t=(0,H.c)(4),n;t[0]===e?n=t[1]:({...n}=e,t[0]=e,t[1]=n);let r;return t[2]===n?r=t[3]:(r=(0,B.jsx)(ll,{"data-slot":`tooltip-trigger`,...n}),t[2]=n,t[3]=r),r}function Cl(e){let t=(0,H.c)(21),n,r,i,a,o,s,c;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6],c=t[7]):({className:r,side:a,sideOffset:o,align:s,alignOffset:c,children:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s,t[7]=c);let l=a===void 0?`top`:a,u=o===void 0?4:o,d=s===void 0?`center`:s,f=c===void 0?0:c,p;t[8]===r?p=t[9]:(p=Xe(`data-open:fade-in-0 data-open:zoom-in-95 data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-closed:fade-out-0 data-closed:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=delayed-open]:animate-in data-closed:animate-out data-open:animate-in z-50 w-fit max-w-xs origin-(--transform-origin) rounded-md bg-foreground px-3 py-1.5 text-xs text-background **:data-[slot=kbd]:rounded-md`,r),t[8]=r,t[9]=p);let m;t[10]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,B.jsx)(vl,{className:`z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground data-[side=bottom]:top-1 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5`}),t[10]=m):m=t[10];let h;t[11]!==n||t[12]!==i||t[13]!==p?(h=(0,B.jsxs)(_l,{className:p,"data-slot":`tooltip-content`,...i,children:[n,m]}),t[11]=n,t[12]=i,t[13]=p,t[14]=h):h=t[14];let g;return t[15]!==d||t[16]!==f||t[17]!==l||t[18]!==u||t[19]!==h?(g=(0,B.jsx)(pl,{children:(0,B.jsx)(gl,{align:d,alignOffset:f,className:`isolate z-50`,side:l,sideOffset:u,children:h})}),t[15]=d,t[16]=f,t[17]=l,t[18]=u,t[19]=h,t[20]=g):g=t[20],g}var wl=window.matchMedia(`(max-width: 767px)`);function Tl(e){return wl.addEventListener(`change`,e),()=>{wl.removeEventListener(`change`,e)}}function El(){return wl.matches}function Dl(){return(0,z.useSyncExternalStore)(Tl,El)}var Ol=`sidebar_state`,kl=604800,Al=`12rem`,jl=`16rem`,Ml=`3rem`,Nl=`b`,Pl=z.createContext(null);function Fl(){let e=z.useContext(Pl);if(!e)throw Error(`useSidebar must be used within a SidebarProvider.`);return e}function Il(e){let t=(0,H.c)(36),n,r,i,a,o,s,c;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6],c=t[7]):({defaultOpen:c,open:i,onOpenChange:o,className:r,style:s,children:n,...a}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s,t[7]=c);let l=c===void 0||c,u=Dl(),[d,f]=z.useState(!1),[p,m]=z.useState(l),h=i??p,g;t[8]!==h||t[9]!==o?(g=e=>{let t=typeof e==`function`?e(h):e;o?o(t):m(t),document.cookie=`${Ol}=${t}; path=/; max-age=${kl}`},t[8]=h,t[9]=o,t[10]=g):g=t[10];let _=g,v;t[11]!==u||t[12]!==_?(v=()=>{u?f(Rl):_(Ll)},t[11]=u,t[12]=_,t[13]=v):v=t[13];let y=v,b,x;t[14]===y?(b=t[15],x=t[16]):(b=()=>{let e=e=>{e.key===Nl&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),y())};return window.addEventListener(`keydown`,e),()=>{window.removeEventListener(`keydown`,e)}},x=[y],t[14]=y,t[15]=b,t[16]=x),z.useEffect(b,x);let S=h?`expanded`:`collapsed`,C;t[17]!==u||t[18]!==h||t[19]!==d||t[20]!==_||t[21]!==S||t[22]!==y?(C={state:S,open:h,setOpen:_,isMobile:u,openMobile:d,setOpenMobile:f,toggleSidebar:y},t[17]=u,t[18]=h,t[19]=d,t[20]=_,t[21]=S,t[22]=y,t[23]=C):C=t[23];let w=C,T;t[24]===s?T=t[25]:(T={"--sidebar-width":Al,"--sidebar-width-icon":Ml,...s},t[24]=s,t[25]=T);let E=T,D;t[26]===r?D=t[27]:(D=Xe(`group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar`,r),t[26]=r,t[27]=D);let O;t[28]!==n||t[29]!==a||t[30]!==D||t[31]!==E?(O=(0,B.jsx)(`div`,{className:D,"data-slot":`sidebar-wrapper`,style:E,...a,children:n}),t[28]=n,t[29]=a,t[30]=D,t[31]=E,t[32]=O):O=t[32];let k;return t[33]!==w||t[34]!==O?(k=(0,B.jsx)(Pl.Provider,{value:w,children:O}),t[33]=w,t[34]=O,t[35]=k):k=t[35],k}function Ll(e){return!e}function Rl(e){return!e}function zl(e){let t=(0,H.c)(46),n,r,i,a,o,s;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6]):({side:a,variant:o,collapsible:s,className:r,children:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s);let c=a===void 0?`left`:a,l=o===void 0?`sidebar`:o,u=s===void 0?`offExamples`:s,{isMobile:d,state:f,openMobile:p,setOpenMobile:m}=Fl();if(u===`none`){let e;t[7]===r?e=t[8]:(e=Xe(`flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground`,r),t[7]=r,t[8]=e);let a;return t[9]!==n||t[10]!==i||t[11]!==e?(a=(0,B.jsx)(`div`,{className:e,"data-slot":`sidebar`,...i,children:n}),t[9]=n,t[10]=i,t[11]=e,t[12]=a):a=t[12],a}if(d){let e;t[13]===Symbol.for(`react.memo_cache_sentinel`)?(e={"--sidebar-width":jl},t[13]=e):e=t[13];let r=e,a;t[14]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,B.jsxs)(qc,{className:`sr-only`,children:[(0,B.jsx)(Jc,{children:`Sidebar`}),(0,B.jsx)(Yc,{children:`Displays the mobile sidebar.`})]}),t[14]=a):a=t[14];let o;t[15]===n?o=t[16]:(o=(0,B.jsx)(`div`,{className:`flex h-full w-full flex-col`,children:n}),t[15]=n,t[16]=o);let s;t[17]!==c||t[18]!==o?(s=(0,B.jsxs)(Kc,{className:`w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden`,"data-mobile":`true`,"data-sidebar":`sidebar`,"data-slot":`sidebar`,side:c,style:r,children:[a,o]}),t[17]=c,t[18]=o,t[19]=s):s=t[19];let l;return t[20]!==p||t[21]!==i||t[22]!==m||t[23]!==s?(l=(0,B.jsx)(Uc,{onOpenChange:m,open:p,...i,children:s}),t[20]=p,t[21]=i,t[22]=m,t[23]=s,t[24]=l):l=t[24],l}let h=f===`collapsed`?u:``,g=l===`floating`||l===`inset`?`group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon)`,_;t[25]===g?_=t[26]:(_=Xe(`relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear`,`group-data-[collapsible=offExamples]:w-0`,`group-data-[side=right]:rotate-180`,g),t[25]=g,t[26]=_);let v;t[27]===_?v=t[28]:(v=(0,B.jsx)(`div`,{className:_,"data-slot":`sidebar-gap`}),t[27]=_,t[28]=v);let y=c===`left`?`left-0 group-data-[collapsible=offExamples]:left-[calc(var(--sidebar-width)*-1)]`:`right-0 group-data-[collapsible=offExamples]:right-[calc(var(--sidebar-width)*-1)]`,b=l===`floating`||l===`inset`?`p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]`:`group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l`,x;t[29]!==r||t[30]!==y||t[31]!==b?(x=Xe(`fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex`,y,b,r),t[29]=r,t[30]=y,t[31]=b,t[32]=x):x=t[32];let S;t[33]===n?S=t[34]:(S=(0,B.jsx)(`div`,{className:`flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border`,"data-sidebar":`sidebar`,"data-slot":`sidebar-inner`,children:n}),t[33]=n,t[34]=S);let C;t[35]!==i||t[36]!==x||t[37]!==S?(C=(0,B.jsx)(`div`,{className:x,"data-slot":`sidebar-container`,...i,children:S}),t[35]=i,t[36]=x,t[37]=S,t[38]=C):C=t[38];let w;return t[39]!==c||t[40]!==f||t[41]!==C||t[42]!==h||t[43]!==v||t[44]!==l?(w=(0,B.jsxs)(`div`,{className:`group peer hidden text-sidebar-foreground md:block`,"data-collapsible":h,"data-side":c,"data-slot":`sidebar`,"data-state":f,"data-variant":l,children:[v,C]}),t[39]=c,t[40]=f,t[41]=C,t[42]=h,t[43]=v,t[44]=l,t[45]=w):w=t[45],w}function Bl(e){let t=(0,H.c)(15),n,r,i;t[0]===e?(n=t[1],r=t[2],i=t[3]):({className:n,onClick:r,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i);let{toggleSidebar:a}=Fl(),o;t[4]===n?o=t[5]:(o=Xe(n),t[4]=n,t[5]=o);let s;t[6]!==r||t[7]!==a?(s=e=>{r?.(e),a()},t[6]=r,t[7]=a,t[8]=s):s=t[8];let c,l;t[9]===Symbol.for(`react.memo_cache_sentinel`)?(c=(0,B.jsx)(Xs,{}),l=(0,B.jsx)(`span`,{className:`sr-only`,children:`Toggle Sidebar`}),t[9]=c,t[10]=l):(c=t[9],l=t[10]);let u;return t[11]!==i||t[12]!==o||t[13]!==s?(u=(0,B.jsxs)(_t,{className:o,"data-sidebar":`trigger`,"data-slot":`sidebar-trigger`,onClick:s,size:`icon-lg`,variant:`ghost`,...i,children:[c,l]}),t[11]=i,t[12]=o,t[13]=s,t[14]=u):u=t[14],u}function Vl(e){let t=(0,H.c)(9),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let{toggleSidebar:i}=Fl(),a;t[3]===n?a=t[4]:(a=Xe(`absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex`,`in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize`,`[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize`,`group-data-[collapsible=offExamples]:translate-x-0 group-data-[collapsible=offExamples]:after:left-full hover:group-data-[collapsible=offExamples]:bg-sidebar`,`[[data-side=left][data-collapsible=offExamples]_&]:-right-2`,`[[data-side=right][data-collapsible=offExamples]_&]:-left-2`,n),t[3]=n,t[4]=a);let o;return t[5]!==r||t[6]!==a||t[7]!==i?(o=(0,B.jsx)(`button`,{"aria-label":`Toggle Sidebar`,className:a,"data-sidebar":`rail`,"data-slot":`sidebar-rail`,onClick:i,tabIndex:-1,title:`Toggle Sidebar`,type:`button`,...r}),t[5]=r,t[6]=a,t[7]=i,t[8]=o):o=t[8],o}function Hl(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`flex flex-col gap-2 p-2`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`div`,{className:i,"data-sidebar":`header`,"data-slot":`sidebar-header`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Ul(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`flex flex-col gap-2 p-2`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`div`,{className:i,"data-sidebar":`footer`,"data-slot":`sidebar-footer`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Wl(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`mx-2 w-auto bg-sidebar-border`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(pn,{className:i,"data-sidebar":`separator`,"data-slot":`sidebar-separator`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Gl(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`no-scrollbar flex min-h-0 flex-1 flex-col gap-0 overflow-x-hidden overflow-y-auto`,`group-data-[collapsible=icon]:[scrollbar-width:none] group-data-[collapsible=icon]:[&::-webkit-scrollbar]:hidden`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`div`,{className:i,"data-sidebar":`content`,"data-slot":`sidebar-content`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function Kl(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`relative flex w-full min-w-0 flex-col px-2 py-1`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`div`,{className:i,"data-sidebar":`group`,"data-slot":`sidebar-group`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function ql(e){let t=(0,H.c)(10),n,r,i,a;if(t[0]!==e){let{className:o,render:s,...c}=e;n=s,a=Ge,r=`div`,i=ze({className:Xe(`flex h-8 shrink-0 items-center rounded-md px-2 text-xs text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0`,o)},c),t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a}else n=t[1],r=t[2],i=t[3],a=t[4];let o;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(o={slot:`sidebar-group-label`,sidebar:`group-label`},t[5]=o):o=t[5];let s;return t[6]!==n||t[7]!==r||t[8]!==i?(s={defaultTagName:r,props:i,render:n,state:o},t[6]=n,t[7]=r,t[8]=i,t[9]=s):s=t[9],a(s)}function Jl(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`flex w-full min-w-0 flex-col gap-px`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`ul`,{className:i,"data-sidebar":`menu`,"data-slot":`sidebar-menu`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}function U(e){let t=(0,H.c)(8),n,r;t[0]===e?(n=t[1],r=t[2]):({className:n,...r}=e,t[0]=e,t[1]=n,t[2]=r);let i;t[3]===n?i=t[4]:(i=Xe(`group/menu-item relative`,n),t[3]=n,t[4]=i);let a;return t[5]!==r||t[6]!==i?(a=(0,B.jsx)(`li`,{className:i,"data-sidebar":`menu-item`,"data-slot":`sidebar-menu-item`,...r}),t[5]=r,t[6]=i,t[7]=a):a=t[7],a}var Yl=Ue(`peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-[calc(var(--radius-sm)+2px)] p-2 text-left text-xs ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate`,{variants:{variant:{default:`hover:bg-sidebar-accent hover:text-sidebar-accent-foreground`,outline:`bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]`},size:{default:`h-8 text-xs`,sm:`h-7 text-xs`,lg:`h-12 text-xs group-data-[collapsible=icon]:p-0!`}},defaultVariants:{variant:`default`,size:`default`}});function W(e){let t=(0,H.c)(18),{render:n,isActive:r,variant:i,size:a,tooltip:o,className:s,...c}=e,l=r!==void 0&&r,u=i===void 0?`default`:i,d=a===void 0?`default`:a,{isMobile:f,state:p}=Fl(),m=ze({className:Xe(Yl({variant:u,size:d}),s)},c),h;t[0]!==n||t[1]!==o?(h=o?(0,B.jsx)(Sl,{}):n,t[0]=n,t[1]=o,t[2]=h):h=t[2];let g;t[3]!==l||t[4]!==d?(g={slot:`sidebar-menu-button`,sidebar:`menu-button`,size:d,active:l},t[3]=l,t[4]=d,t[5]=g):g=t[5];let _;t[6]!==m||t[7]!==h||t[8]!==g?(_={defaultTagName:`button`,props:m,render:h,state:g},t[6]=m,t[7]=h,t[8]=g,t[9]=_):_=t[9];let v=Ge(_);if(!o)return v;let y;t[10]===o?y=t[11]:(y=typeof o==`string`?{children:o}:o,t[10]=o,t[11]=y);let b=y,x=p!==`collapsed`||f,S;t[12]!==x||t[13]!==b?(S=(0,B.jsx)(Cl,{align:`center`,hidden:x,side:`right`,...b}),t[12]=x,t[13]=b,t[14]=S):S=t[14];let C;return t[15]!==v||t[16]!==S?(C=(0,B.jsxs)(xl,{children:[v,S]}),t[15]=v,t[16]=S,t[17]=C):C=t[17],C}var Xl=new Set([`InvalidClientTokenId`,`SignatureDoesNotMatch`,`AuthFailure`,`MissingAuthenticationToken`,`IncompleteSignature`,`UnrecognizedClientException`,`ExpiredToken`,`ExpiredTokenException`,`InvalidAccessKeyId`]);function Zl(e){return typeof e==`object`&&!!e&&`name`in e&&typeof e.name==`string`}function Ql(e){return Zl(e)&&Xl.has(e.name)}var $l=!1;function eu(e,t){!$l&&Ql(e)&&($l=!0,Ke(),Cn(),t.clear(),window.location.pathname!==`/login`&&(window.location.href=`/login?reason=expired`))}function tu(){let e=new $r({queryCache:new Qr({onError:t=>{eu(t,e)}}),mutationCache:new Xr({onError:t=>{eu(t,e)}}),defaultOptions:{queries:{staleTime:5e3,refetchIntervalInBackground:!1}}});return e}function nu(){let e=(0,H.c)(8),{theme:t,setTheme:n}=cs(),r;e[0]!==n||e[1]!==t?(r=()=>{n(t===`light`?`dark`:t===`dark`?`light`:`dark`)},e[0]=n,e[1]=t,e[2]=r):r=e[2];let i=r,a,o,s;e[3]===Symbol.for(`react.memo_cache_sentinel`)?(a=(0,B.jsx)(nc,{className:`size-[1.2rem] scale-100 rotate-0 transition-transform dark:scale-0 dark:-rotate-90`}),o=(0,B.jsx)(Ks,{className:`absolute size-[1.2rem] scale-0 rotate-90 transition-transform dark:scale-100 dark:rotate-0`}),s=(0,B.jsx)(`span`,{className:`sr-only`,children:`Toggle theme`}),e[3]=a,e[4]=o,e[5]=s):(a=e[3],o=e[4],s=e[5]);let c;return e[6]===i?c=e[7]:(c=(0,B.jsxs)(_t,{className:`rounded-full transition-none hover:bg-transparent dark:hover:bg-transparent`,onClick:i,size:`icon-sm`,variant:`ghost`,children:[a,o,s]}),e[6]=i,e[7]=c),c}function ru(){let e=(0,H.c)(7),{isAdmin:t,license:n}=wn(),r=t&&n===`open-source`,i,a;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(i=Xe(`z-50 flex h-10 shrink-0 items-center gap-2 border-b border-sidebar-border bg-sidebar px-4 text-sidebar-foreground`,`sticky top-0`),a=(0,B.jsx)(Bl,{className:`-ml-1`}),e[0]=i,e[1]=a):(i=e[0],a=e[1]);let o;e[2]===r?o=e[3]:(o=r&&(0,B.jsx)(`a`,{href:`https://mulgadc.com/purchase`,target:`_blank`,rel:`noopener noreferrer`,className:Xe(mt({variant:`outline`,size:`sm`})),children:`Upgrade`}),e[2]=r,e[3]=o);let s;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(s=(0,B.jsx)(nu,{}),e[4]=s):s=e[4];let c;return e[5]===o?c=e[6]:(c=(0,B.jsxs)(`header`,{className:i,children:[a,(0,B.jsxs)(`div`,{className:`flex w-full items-center justify-end gap-2`,children:[o,s]})]}),e[5]=o,e[6]=c),c}function iu(){let e=(0,H.c)(3),t,n;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t=(0,B.jsx)(`h1`,{className:`text-4xl font-bold`,children:`404`}),n=(0,B.jsx)(`p`,{className:`text-muted-foreground`,children:`Page not found`}),e[0]=t,e[1]=n):(t=e[0],n=e[1]);let r;return e[2]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,B.jsxs)(`div`,{className:`flex flex-1 flex-col items-center justify-center gap-4`,children:[t,n,(0,B.jsx)(A,{to:`/`,children:(0,B.jsx)(_t,{variant:`outline`,children:`Go back home`})})]}),e[2]=r):r=e[2],r}function G(){let e=(0,H.c)(259),t;e[0]===Symbol.for(`react.memo_cache_sentinel`)?(t={select:au},e[0]=t):t=e[0];let n=Jo(t),r=Ne(),i=a(),{isAdmin:o}=wn(),s;e[1]!==r||e[2]!==i?(s=function(){Ke(),Cn(),i.clear(),r({to:`/login`})},e[1]=r,e[2]=i,e[3]=s):s=e[3];let c=s,l;e[4]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,B.jsxs)(Hl,{className:`flex flex-row items-center gap-2 px-4 py-3`,children:[(0,B.jsx)(`img`,{src:`/mulga-logo.svg`,alt:`Mulga`,className:`size-6 shrink-0 dark:invert`}),(0,B.jsx)(`span`,{className:`truncate text-sm font-semibold group-data-[collapsible=icon]:hidden`,children:`Spinifex`})]}),e[4]=l):l=e[4];let u;e[5]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,B.jsx)(ql,{children:`General`}),e[5]=u):u=e[5];let d=n===`/`,f,p;e[6]===Symbol.for(`react.memo_cache_sentinel`)?(f=(0,B.jsx)(Os,{className:`size-4`}),p=(0,B.jsx)(`span`,{children:`Dashboard`}),e[6]=f,e[7]=p):(f=e[6],p=e[7]);let m;e[8]===d?m=e[9]:(m=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/`,children:(0,B.jsxs)(W,{isActive:d,tooltip:`Dashboard`,children:[f,p]})})}),e[8]=d,e[9]=m);let h;e[10]!==o||e[11]!==n?(h=o&&(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/nodes`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/nodes`),tooltip:`Nodes`,children:[(0,B.jsx)(rt,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Nodes`})]})})}),e[10]=o,e[11]=n,e[12]=h):h=e[12];let g;e[13]!==m||e[14]!==h?(g=(0,B.jsxs)(Kl,{children:[u,(0,B.jsxs)(Jl,{children:[m,h]})]}),e[13]=m,e[14]=h,e[15]=g):g=e[15];let _;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(_=(0,B.jsx)(ql,{children:`EC2`}),e[16]=_):_=e[16];let v;e[17]===n?v=e[18]:(v=n.startsWith(`/ec2/describe-instances`)||n.startsWith(`/ec2/run-instances`),e[17]=n,e[18]=v);let y,b;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(y=(0,B.jsx)(rt,{className:`size-4`}),b=(0,B.jsx)(`span`,{children:`Instances`}),e[19]=y,e[20]=b):(y=e[19],b=e[20]);let x;e[21]===v?x=e[22]:(x=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-instances`,children:(0,B.jsxs)(W,{isActive:v,tooltip:`Instances`,children:[y,b]})})}),e[21]=v,e[22]=x);let S;e[23]===n?S=e[24]:(S=n.startsWith(`/ec2/describe-launch-templates`)||n.startsWith(`/ec2/create-launch-template`),e[23]=n,e[24]=S);let C,w;e[25]===Symbol.for(`react.memo_cache_sentinel`)?(C=(0,B.jsx)(Es,{className:`size-4`}),w=(0,B.jsx)(`span`,{children:`Launch Templates`}),e[25]=C,e[26]=w):(C=e[25],w=e[26]);let T;e[27]===S?T=e[28]:(T=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-launch-templates`,children:(0,B.jsxs)(W,{isActive:S,tooltip:`Launch Templates`,children:[C,w]})})}),e[27]=S,e[28]=T);let E;e[29]===n?E=e[30]:(E=n.startsWith(`/ec2/describe-images`),e[29]=n,e[30]=E);let D,O;e[31]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,B.jsx)(ot,{className:`size-4`}),O=(0,B.jsx)(`span`,{children:`Images`}),e[31]=D,e[32]=O):(D=e[31],O=e[32]);let k;e[33]===E?k=e[34]:(k=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-images`,children:(0,B.jsxs)(W,{isActive:E,tooltip:`Images`,children:[D,O]})})}),e[33]=E,e[34]=k);let ee;e[35]===n?ee=e[36]:(ee=n.startsWith(`/ec2/describe-key-pairs`),e[35]=n,e[36]=ee);let te,ne;e[37]===Symbol.for(`react.memo_cache_sentinel`)?(te=(0,B.jsx)(nt,{className:`size-4`}),ne=(0,B.jsx)(`span`,{children:`Key Pairs`}),e[37]=te,e[38]=ne):(te=e[37],ne=e[38]);let re;e[39]===ee?re=e[40]:(re=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-key-pairs`,children:(0,B.jsxs)(W,{isActive:ee,tooltip:`Key Pairs`,children:[te,ne]})})}),e[39]=ee,e[40]=re);let ie;e[41]===n?ie=e[42]:(ie=n.startsWith(`/ec2/describe-addresses`)||n.startsWith(`/ec2/allocate-address`),e[41]=n,e[42]=ie);let ae,oe;e[43]===Symbol.for(`react.memo_cache_sentinel`)?(ae=(0,B.jsx)(Hs,{className:`size-4`}),oe=(0,B.jsx)(`span`,{children:`Elastic IPs`}),e[43]=ae,e[44]=oe):(ae=e[43],oe=e[44]);let se;e[45]===ie?se=e[46]:(se=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-addresses`,children:(0,B.jsxs)(W,{isActive:ie,tooltip:`Elastic IPs`,children:[ae,oe]})})}),e[45]=ie,e[46]=se);let ce;e[47]===n?ce=e[48]:(ce=n.startsWith(`/ec2/describe-volumes`)||n.startsWith(`/ec2/create-volume`)||n.startsWith(`/ec2/modify-volume`),e[47]=n,e[48]=ce);let le,ue;e[49]===Symbol.for(`react.memo_cache_sentinel`)?(le=(0,B.jsx)(it,{className:`size-4`}),ue=(0,B.jsx)(`span`,{children:`Volumes`}),e[49]=le,e[50]=ue):(le=e[49],ue=e[50]);let de;e[51]===ce?de=e[52]:(de=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-volumes`,children:(0,B.jsxs)(W,{isActive:ce,tooltip:`Volumes`,children:[le,ue]})})}),e[51]=ce,e[52]=de);let fe;e[53]===n?fe=e[54]:(fe=n.startsWith(`/ec2/describe-snapshots`)||n.startsWith(`/ec2/create-snapshot`),e[53]=n,e[54]=fe);let pe,me;e[55]===Symbol.for(`react.memo_cache_sentinel`)?(pe=(0,B.jsx)(Ze,{className:`size-4`}),me=(0,B.jsx)(`span`,{children:`Snapshots`}),e[55]=pe,e[56]=me):(pe=e[55],me=e[56]);let he;e[57]===fe?he=e[58]:(he=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-snapshots`,children:(0,B.jsxs)(W,{isActive:fe,tooltip:`Snapshots`,children:[pe,me]})})}),e[57]=fe,e[58]=he);let ge;e[59]===n?ge=e[60]:(ge=n.startsWith(`/ec2/describe-placement-groups`)||n.startsWith(`/ec2/create-placement-group`),e[59]=n,e[60]=ge);let _e,j;e[61]===Symbol.for(`react.memo_cache_sentinel`)?(_e=(0,B.jsx)(Ps,{className:`size-4`}),j=(0,B.jsx)(`span`,{children:`Placement Groups`}),e[61]=_e,e[62]=j):(_e=e[61],j=e[62]);let M;e[63]===ge?M=e[64]:(M=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-placement-groups`,children:(0,B.jsxs)(W,{isActive:ge,tooltip:`Placement Groups`,children:[_e,j]})})}),e[63]=ge,e[64]=M);let ve;e[65]===n?ve=e[66]:(ve=n.startsWith(`/ec2/describe-load-balancers`)||n.startsWith(`/ec2/create-load-balancer`),e[65]=n,e[66]=ve);let ye,be;e[67]===Symbol.for(`react.memo_cache_sentinel`)?(ye=(0,B.jsx)(at,{className:`size-4`}),be=(0,B.jsx)(`span`,{children:`Load Balancers`}),e[67]=ye,e[68]=be):(ye=e[67],be=e[68]);let xe;e[69]===ve?xe=e[70]:(xe=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-load-balancers`,children:(0,B.jsxs)(W,{isActive:ve,tooltip:`Load Balancers`,children:[ye,be]})})}),e[69]=ve,e[70]=xe);let Se;e[71]===n?Se=e[72]:(Se=n.startsWith(`/ec2/describe-target-groups`)||n.startsWith(`/ec2/create-target-group`),e[71]=n,e[72]=Se);let N,Ce;e[73]===Symbol.for(`react.memo_cache_sentinel`)?(N=(0,B.jsx)(Ss,{className:`size-4`}),Ce=(0,B.jsx)(`span`,{children:`Target Groups`}),e[73]=N,e[74]=Ce):(N=e[73],Ce=e[74]);let we;e[75]===Se?we=e[76]:(we=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-target-groups`,children:(0,B.jsxs)(W,{isActive:Se,tooltip:`Target Groups`,children:[N,Ce]})})}),e[75]=Se,e[76]=we);let Te;e[77]!==x||e[78]!==T||e[79]!==k||e[80]!==re||e[81]!==se||e[82]!==de||e[83]!==he||e[84]!==M||e[85]!==xe||e[86]!==we?(Te=(0,B.jsxs)(Kl,{children:[_,(0,B.jsxs)(Jl,{children:[x,T,k,re,se,de,he,M,xe,we]})]}),e[77]=x,e[78]=T,e[79]=k,e[80]=re,e[81]=se,e[82]=de,e[83]=he,e[84]=M,e[85]=xe,e[86]=we,e[87]=Te):Te=e[87];let Ee;e[88]===Symbol.for(`react.memo_cache_sentinel`)?(Ee=(0,B.jsx)(ql,{children:`Networking`}),e[88]=Ee):Ee=e[88];let De;e[89]===n?De=e[90]:(De=n.startsWith(`/ec2/describe-vpcs`)||n.startsWith(`/ec2/create-vpc`),e[89]=n,e[90]=De);let Oe,ke;e[91]===Symbol.for(`react.memo_cache_sentinel`)?(Oe=(0,B.jsx)(Qe,{className:`size-4`}),ke=(0,B.jsx)(`span`,{children:`VPCs`}),e[91]=Oe,e[92]=ke):(Oe=e[91],ke=e[92]);let Ae;e[93]===De?Ae=e[94]:(Ae=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-vpcs`,children:(0,B.jsxs)(W,{isActive:De,tooltip:`VPCs`,children:[Oe,ke]})})}),e[93]=De,e[94]=Ae);let je;e[95]===n?je=e[96]:(je=n.startsWith(`/ec2/describe-subnets`)||n.startsWith(`/ec2/create-subnet`),e[95]=n,e[96]=je);let Me,Pe;e[97]===Symbol.for(`react.memo_cache_sentinel`)?(Me=(0,B.jsx)(Is,{className:`size-4`}),Pe=(0,B.jsx)(`span`,{children:`Subnets`}),e[97]=Me,e[98]=Pe):(Me=e[97],Pe=e[98]);let Fe;e[99]===je?Fe=e[100]:(Fe=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-subnets`,children:(0,B.jsxs)(W,{isActive:je,tooltip:`Subnets`,children:[Me,Pe]})})}),e[99]=je,e[100]=Fe);let Ie;e[101]===n?Ie=e[102]:(Ie=n.startsWith(`/ec2/describe-security-groups`)||n.startsWith(`/ec2/create-security-group`),e[101]=n,e[102]=Ie);let Le,Re;e[103]===Symbol.for(`react.memo_cache_sentinel`)?(Le=(0,B.jsx)(ec,{className:`size-4`}),Re=(0,B.jsx)(`span`,{children:`Security Groups`}),e[103]=Le,e[104]=Re):(Le=e[103],Re=e[104]);let ze;e[105]===Ie?ze=e[106]:(ze=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-security-groups`,children:(0,B.jsxs)(W,{isActive:Ie,tooltip:`Security Groups`,children:[Le,Re]})})}),e[105]=Ie,e[106]=ze);let Be;e[107]===n?Be=e[108]:(Be=n.startsWith(`/ec2/describe-route-tables`)||n.startsWith(`/ec2/create-route-table`),e[107]=n,e[108]=Be);let Ve,He;e[109]===Symbol.for(`react.memo_cache_sentinel`)?(Ve=(0,B.jsx)(Qs,{className:`size-4`}),He=(0,B.jsx)(`span`,{children:`Route Tables`}),e[109]=Ve,e[110]=He):(Ve=e[109],He=e[110]);let Ue;e[111]===Be?Ue=e[112]:(Ue=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-route-tables`,children:(0,B.jsxs)(W,{isActive:Be,tooltip:`Route Tables`,children:[Ve,He]})})}),e[111]=Be,e[112]=Ue);let We;e[113]===n?We=e[114]:(We=n.startsWith(`/ec2/describe-internet-gateways`),e[113]=n,e[114]=We);let Ge,P;e[115]===Symbol.for(`react.memo_cache_sentinel`)?(Ge=(0,B.jsx)($e,{className:`size-4`}),P=(0,B.jsx)(`span`,{children:`Internet Gateways`}),e[115]=Ge,e[116]=P):(Ge=e[115],P=e[116]);let Je;e[117]===We?Je=e[118]:(Je=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-internet-gateways`,children:(0,B.jsxs)(W,{isActive:We,tooltip:`Internet Gateways`,children:[Ge,P]})})}),e[117]=We,e[118]=Je);let Ye;e[119]===n?Ye=e[120]:(Ye=n.startsWith(`/ec2/describe-nat-gateways`)||n.startsWith(`/ec2/create-nat-gateway`),e[119]=n,e[120]=Ye);let Xe,F;e[121]===Symbol.for(`react.memo_cache_sentinel`)?(Xe=(0,B.jsx)(et,{className:`size-4`}),F=(0,B.jsx)(`span`,{children:`NAT Gateways`}),e[121]=Xe,e[122]=F):(Xe=e[121],F=e[122]);let st;e[123]===Ye?st=e[124]:(st=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ec2/describe-nat-gateways`,children:(0,B.jsxs)(W,{isActive:Ye,tooltip:`NAT Gateways`,children:[Xe,F]})})}),e[123]=Ye,e[124]=st);let lt;e[125]!==Ae||e[126]!==Fe||e[127]!==ze||e[128]!==Ue||e[129]!==Je||e[130]!==st?(lt=(0,B.jsxs)(Kl,{children:[Ee,(0,B.jsxs)(Jl,{children:[Ae,Fe,ze,Ue,Je,st]})]}),e[125]=Ae,e[126]=Fe,e[127]=ze,e[128]=Ue,e[129]=Je,e[130]=st,e[131]=lt):lt=e[131];let ut;e[132]===Symbol.for(`react.memo_cache_sentinel`)?(ut=(0,B.jsx)(ql,{children:`Containers`}),e[132]=ut):ut=e[132];let dt;e[133]===n?dt=e[134]:(dt=n.startsWith(`/eks/list-clusters`)||n.startsWith(`/eks/create-cluster`),e[133]=n,e[134]=dt);let ft,pt;e[135]===Symbol.for(`react.memo_cache_sentinel`)?(ft=(0,B.jsx)(ms,{className:`size-4`}),pt=(0,B.jsx)(`span`,{children:`EKS`}),e[135]=ft,e[136]=pt):(ft=e[135],pt=e[136]);let mt;e[137]===dt?mt=e[138]:(mt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/eks/list-clusters`,children:(0,B.jsxs)(W,{isActive:dt,tooltip:`EKS clusters`,children:[ft,pt]})})}),e[137]=dt,e[138]=mt);let ht;e[139]===n?ht=e[140]:(ht=n.startsWith(`/ecr/list-repositories`),e[139]=n,e[140]=ht);let gt,_t;e[141]===Symbol.for(`react.memo_cache_sentinel`)?(gt=(0,B.jsx)(Js,{className:`size-4`}),_t=(0,B.jsx)(`span`,{children:`ECR`}),e[141]=gt,e[142]=_t):(gt=e[141],_t=e[142]);let vt;e[143]===ht?vt=e[144]:(vt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ecr/list-repositories`,children:(0,B.jsxs)(W,{isActive:ht,tooltip:`ECR repositories`,children:[gt,_t]})})}),e[143]=ht,e[144]=vt);let yt;e[145]===n?yt=e[146]:(yt=n.startsWith(`/ecs/`),e[145]=n,e[146]=yt);let bt,xt;e[147]===Symbol.for(`react.memo_cache_sentinel`)?(bt=(0,B.jsx)(bs,{className:`size-4`}),xt=(0,B.jsx)(`span`,{children:`ECS`}),e[147]=bt,e[148]=xt):(bt=e[147],xt=e[148]);let St;e[149]===yt?St=e[150]:(St=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/ecs/list-clusters`,children:(0,B.jsxs)(W,{isActive:yt,tooltip:`ECS clusters`,children:[bt,xt]})})}),e[149]=yt,e[150]=St);let Ct;e[151]!==mt||e[152]!==vt||e[153]!==St?(Ct=(0,B.jsxs)(Kl,{children:[ut,(0,B.jsxs)(Jl,{children:[mt,vt,St]})]}),e[151]=mt,e[152]=vt,e[153]=St,e[154]=Ct):Ct=e[154];let wt;e[155]===Symbol.for(`react.memo_cache_sentinel`)?(wt=(0,B.jsx)(ql,{children:`RDS`}),e[155]=wt):wt=e[155];let I;e[156]===n?I=e[157]:(I=n.startsWith(`/rds/describe-db-instances`)||n.startsWith(`/rds/create-db-instance`),e[156]=n,e[157]=I);let Tt,Et;e[158]===Symbol.for(`react.memo_cache_sentinel`)?(Tt=(0,B.jsx)(ws,{className:`size-4`}),Et=(0,B.jsx)(`span`,{children:`Databases`}),e[158]=Tt,e[159]=Et):(Tt=e[158],Et=e[159]);let Dt;e[160]===I?Dt=e[161]:(Dt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/rds/describe-db-instances`,children:(0,B.jsxs)(W,{isActive:I,tooltip:`Databases`,children:[Tt,Et]})})}),e[160]=I,e[161]=Dt);let Ot;e[162]===n?Ot=e[163]:(Ot=n.startsWith(`/rds/describe-db-snapshots`)||n.startsWith(`/rds/restore-db-instance-from-db-snapshot`),e[162]=n,e[163]=Ot);let kt,At;e[164]===Symbol.for(`react.memo_cache_sentinel`)?(kt=(0,B.jsx)(Ze,{className:`size-4`}),At=(0,B.jsx)(`span`,{children:`Snapshots`}),e[164]=kt,e[165]=At):(kt=e[164],At=e[165]);let jt;e[166]===Ot?jt=e[167]:(jt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/rds/describe-db-snapshots`,children:(0,B.jsxs)(W,{isActive:Ot,tooltip:`DB Snapshots`,children:[kt,At]})})}),e[166]=Ot,e[167]=jt);let Mt;e[168]===n?Mt=e[169]:(Mt=n.startsWith(`/rds/describe-db-subnet-groups`)||n.startsWith(`/rds/create-db-subnet-group`),e[168]=n,e[169]=Mt);let Nt,Pt;e[170]===Symbol.for(`react.memo_cache_sentinel`)?(Nt=(0,B.jsx)(Is,{className:`size-4`}),Pt=(0,B.jsx)(`span`,{children:`Subnet Groups`}),e[170]=Nt,e[171]=Pt):(Nt=e[170],Pt=e[171]);let Ft;e[172]===Mt?Ft=e[173]:(Ft=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/rds/describe-db-subnet-groups`,children:(0,B.jsxs)(W,{isActive:Mt,tooltip:`DB Subnet Groups`,children:[Nt,Pt]})})}),e[172]=Mt,e[173]=Ft);let It;e[174]===n?It=e[175]:(It=n.startsWith(`/rds/describe-db-parameter-groups`)||n.startsWith(`/rds/create-db-parameter-group`),e[174]=n,e[175]=It);let Lt,Rt;e[176]===Symbol.for(`react.memo_cache_sentinel`)?(Lt=(0,B.jsx)(ct,{className:`size-4`}),Rt=(0,B.jsx)(`span`,{children:`Parameter Groups`}),e[176]=Lt,e[177]=Rt):(Lt=e[176],Rt=e[177]);let zt;e[178]===It?zt=e[179]:(zt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/rds/describe-db-parameter-groups`,children:(0,B.jsxs)(W,{isActive:It,tooltip:`DB Parameter Groups`,children:[Lt,Rt]})})}),e[178]=It,e[179]=zt);let Bt;e[180]!==jt||e[181]!==Ft||e[182]!==zt||e[183]!==Dt?(Bt=(0,B.jsxs)(Kl,{children:[wt,(0,B.jsxs)(Jl,{children:[Dt,jt,Ft,zt]})]}),e[180]=jt,e[181]=Ft,e[182]=zt,e[183]=Dt,e[184]=Bt):Bt=e[184];let Vt;e[185]===Symbol.for(`react.memo_cache_sentinel`)?(Vt=(0,B.jsx)(ql,{children:`IAM`}),e[185]=Vt):Vt=e[185];let Ht;e[186]===n?Ht=e[187]:(Ht=n.startsWith(`/iam/list-users`)||n.startsWith(`/iam/create-user`),e[186]=n,e[187]=Ht);let Ut,Wt;e[188]===Symbol.for(`react.memo_cache_sentinel`)?(Ut=(0,B.jsx)(cc,{className:`size-4`}),Wt=(0,B.jsx)(`span`,{children:`Users`}),e[188]=Ut,e[189]=Wt):(Ut=e[188],Wt=e[189]);let Gt;e[190]===Ht?Gt=e[191]:(Gt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/iam/list-users`,children:(0,B.jsxs)(W,{isActive:Ht,tooltip:`Users`,children:[Ut,Wt]})})}),e[190]=Ht,e[191]=Gt);let Kt;e[192]===n?Kt=e[193]:(Kt=n.startsWith(`/iam/list-groups`)||n.startsWith(`/iam/create-group`),e[192]=n,e[193]=Kt);let L,qt;e[194]===Symbol.for(`react.memo_cache_sentinel`)?(L=(0,B.jsx)(oc,{className:`size-4`}),qt=(0,B.jsx)(`span`,{children:`Groups`}),e[194]=L,e[195]=qt):(L=e[194],qt=e[195]);let Jt;e[196]===Kt?Jt=e[197]:(Jt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/iam/list-groups`,children:(0,B.jsxs)(W,{isActive:Kt,tooltip:`Groups`,children:[L,qt]})})}),e[196]=Kt,e[197]=Jt);let Yt;e[198]===n?Yt=e[199]:(Yt=n.startsWith(`/iam/list-policies`)||n.startsWith(`/iam/create-policy`),e[198]=n,e[199]=Yt);let Xt,Zt;e[200]===Symbol.for(`react.memo_cache_sentinel`)?(Xt=(0,B.jsx)(tt,{className:`size-4`}),Zt=(0,B.jsx)(`span`,{children:`Policies`}),e[200]=Xt,e[201]=Zt):(Xt=e[200],Zt=e[201]);let Qt;e[202]===Yt?Qt=e[203]:(Qt=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/iam/list-policies`,children:(0,B.jsxs)(W,{isActive:Yt,tooltip:`Policies`,children:[Xt,Zt]})})}),e[202]=Yt,e[203]=Qt);let $t;e[204]===n?$t=e[205]:($t=n.startsWith(`/iam/list-roles`)||n.startsWith(`/iam/create-role`),e[204]=n,e[205]=$t);let en,tn;e[206]===Symbol.for(`react.memo_cache_sentinel`)?(en=(0,B.jsx)(ic,{className:`size-4`}),tn=(0,B.jsx)(`span`,{children:`Roles`}),e[206]=en,e[207]=tn):(en=e[206],tn=e[207]);let nn;e[208]===$t?nn=e[209]:(nn=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/iam/list-roles`,children:(0,B.jsxs)(W,{isActive:$t,tooltip:`Roles`,children:[en,tn]})})}),e[208]=$t,e[209]=nn);let rn;e[210]===n?rn=e[211]:(rn=n.startsWith(`/iam/list-instance-profiles`)||n.startsWith(`/iam/create-instance-profile`),e[210]=n,e[211]=rn);let an,on;e[212]===Symbol.for(`react.memo_cache_sentinel`)?(an=(0,B.jsx)(As,{className:`size-4`}),on=(0,B.jsx)(`span`,{children:`Instance Profiles`}),e[212]=an,e[213]=on):(an=e[212],on=e[213]);let sn;e[214]===rn?sn=e[215]:(sn=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/iam/list-instance-profiles`,children:(0,B.jsxs)(W,{isActive:rn,tooltip:`Instance Profiles`,children:[an,on]})})}),e[214]=rn,e[215]=sn);let cn;e[216]!==Gt||e[217]!==Jt||e[218]!==Qt||e[219]!==nn||e[220]!==sn?(cn=(0,B.jsxs)(Kl,{children:[Vt,(0,B.jsxs)(Jl,{children:[Gt,Jt,Qt,nn,sn]})]}),e[216]=Gt,e[217]=Jt,e[218]=Qt,e[219]=nn,e[220]=sn,e[221]=cn):cn=e[221];let ln;e[222]===Symbol.for(`react.memo_cache_sentinel`)?(ln=(0,B.jsx)(ql,{children:`S3`}),e[222]=ln):ln=e[222];let un;e[223]===n?un=e[224]:(un=n.startsWith(`/s3/ls`),e[223]=n,e[224]=un);let dn,fn;e[225]===Symbol.for(`react.memo_cache_sentinel`)?(dn=(0,B.jsx)(rt,{className:`size-4`}),fn=(0,B.jsx)(`span`,{children:`Buckets`}),e[225]=dn,e[226]=fn):(dn=e[225],fn=e[226]);let pn;e[227]===un?pn=e[228]:(pn=(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/s3/ls`,children:(0,B.jsxs)(W,{isActive:un,tooltip:`Buckets`,children:[dn,fn]})})}),e[227]=un,e[228]=pn);let mn;e[229]!==o||e[230]!==n?(mn=o&&(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/s3/service-metrics`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/s3/service-metrics`),tooltip:`Service Metrics`,children:[(0,B.jsx)(us,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Service Metrics`})]})})}),e[229]=o,e[230]=n,e[231]=mn):mn=e[231];let hn;e[232]!==pn||e[233]!==mn?(hn=(0,B.jsxs)(Kl,{children:[ln,(0,B.jsxs)(Jl,{children:[pn,mn]})]}),e[232]=pn,e[233]=mn,e[234]=hn):hn=e[234];let gn;e[235]!==o||e[236]!==n?(gn=qe()&&(0,B.jsxs)(Kl,{children:[(0,B.jsx)(ql,{children:`Ochre`}),(0,B.jsxs)(Jl,{children:[(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/bedrock/list-knowledge-bases`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/bedrock/list-knowledge-bases`),tooltip:`Knowledge Bases`,children:[(0,B.jsx)(gs,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Knowledge Bases`})]})})}),(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/bedrock/list-guardrails`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/bedrock/list-guardrails`),tooltip:`Guardrails`,children:[(0,B.jsx)(tt,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Guardrails`})]})})}),(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/bedrock/playground`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/bedrock/playground`),tooltip:`Playground`,children:[(0,B.jsx)(Ws,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Playground`})]})})}),o&&(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/bedrock/list-model-catalog`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/bedrock/list-model-catalog`),tooltip:`Model Catalog`,children:[(0,B.jsx)(Rs,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Model Catalog`})]})})}),o&&(0,B.jsx)(U,{children:(0,B.jsx)(A,{to:`/bedrock/list-model-access`,children:(0,B.jsxs)(W,{isActive:n.startsWith(`/bedrock/list-model-access`),tooltip:`Model Access`,children:[(0,B.jsx)(Ms,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Model Access`})]})})})]})]}),e[235]=o,e[236]=n,e[237]=gn):gn=e[237];let _n;e[238]===o?_n=e[239]:(_n=o&&(0,B.jsxs)(Kl,{children:[(0,B.jsx)(ql,{children:`Documentation`}),(0,B.jsx)(Jl,{children:(0,B.jsx)(U,{children:(0,B.jsx)(`a`,{href:`https://docs.mulgadc.com`,target:`_blank`,rel:`noopener noreferrer`,children:(0,B.jsxs)(W,{tooltip:`Documentation`,children:[(0,B.jsx)(fs,{className:`size-4`}),(0,B.jsx)(`span`,{children:`Docs`})]})})})})]}),e[238]=o,e[239]=_n);let vn;e[240]!==Bt||e[241]!==cn||e[242]!==hn||e[243]!==gn||e[244]!==_n||e[245]!==Te||e[246]!==lt||e[247]!==g||e[248]!==Ct?(vn=(0,B.jsxs)(Gl,{children:[g,Te,lt,Ct,Bt,cn,hn,gn,_n]}),e[240]=Bt,e[241]=cn,e[242]=hn,e[243]=gn,e[244]=_n,e[245]=Te,e[246]=lt,e[247]=g,e[248]=Ct,e[249]=vn):vn=e[249];let yn;e[250]===Symbol.for(`react.memo_cache_sentinel`)?(yn=(0,B.jsx)(Wl,{className:`mx-0 w-full`}),e[250]=yn):yn=e[250];let bn,xn;e[251]===Symbol.for(`react.memo_cache_sentinel`)?(bn=(0,B.jsx)(Bs,{className:`size-4`}),xn=(0,B.jsx)(`span`,{children:`Sign out`}),e[251]=bn,e[252]=xn):(bn=e[251],xn=e[252]);let Sn;e[253]===c?Sn=e[254]:(Sn=(0,B.jsxs)(Ul,{children:[yn,(0,B.jsx)(Jl,{children:(0,B.jsx)(U,{children:(0,B.jsxs)(W,{onClick:c,tooltip:`Sign out`,children:[bn,xn]})})})]}),e[253]=c,e[254]=Sn);let Tn;e[255]===Symbol.for(`react.memo_cache_sentinel`)?(Tn=(0,B.jsx)(Vl,{}),e[255]=Tn):Tn=e[255];let En;return e[256]!==vn||e[257]!==Sn?(En=(0,B.jsxs)(zl,{collapsible:`icon`,children:[l,vn,Sn,Tn]}),e[256]=vn,e[257]=Sn,e[258]=En):En=e[258],En}function au(e){return e.pathname}function ou(e){let t=(0,H.c)(18),{error:n,reset:r}=e,i=ke(),o=a(),s;t[0]!==o||t[1]!==r||t[2]!==i?(s=function(){o.invalidateQueries(),r(),i.invalidate()},t[0]=o,t[1]=r,t[2]=i,t[3]=s):s=t[3];let c=s,l;t[4]===Symbol.for(`react.memo_cache_sentinel`)?(l=(0,B.jsx)(G,{}),t[4]=l):l=t[4];let u;t[5]===Symbol.for(`react.memo_cache_sentinel`)?(u=(0,B.jsx)(ru,{}),t[5]=u):u=t[5];let d,f;t[6]===Symbol.for(`react.memo_cache_sentinel`)?(d=(0,B.jsx)(`div`,{className:`flex justify-center`,children:(0,B.jsx)(vs,{className:`size-12 text-destructive`})}),f=(0,B.jsx)(`h1`,{className:`text-2xl font-semibold`,children:`Something went wrong`}),t[6]=d,t[7]=f):(d=t[6],f=t[7]);let p=(n instanceof Error?n.message:String(n))||`An unexpected error occurred`,m;t[8]===p?m=t[9]:(m=(0,B.jsx)(`p`,{className:`text-muted-foreground`,children:p}),t[8]=p,t[9]=m);let h;t[10]===c?h=t[11]:(h=(0,B.jsx)(_t,{onClick:c,variant:`default`,children:`Try Again`}),t[10]=c,t[11]=h);let g;t[12]===Symbol.for(`react.memo_cache_sentinel`)?(g=(0,B.jsx)(A,{to:`/`,children:(0,B.jsx)(_t,{variant:`outline`,children:`Go Home`})}),t[12]=g):g=t[12];let _;t[13]===h?_=t[14]:(_=(0,B.jsxs)(`div`,{className:`flex justify-center gap-2`,children:[h,g]}),t[13]=h,t[14]=_);let v;return t[15]!==_||t[16]!==m?(v=(0,B.jsxs)(B.Fragment,{children:[l,(0,B.jsxs)(`main`,{className:`flex flex-1 flex-col`,children:[u,(0,B.jsx)(`div`,{className:`flex flex-1 items-center justify-center p-6 pt-0`,children:(0,B.jsxs)(`div`,{className:`max-w-md space-y-4 text-center`,children:[d,f,m,_]})})]})]}),t[15]=_,t[16]=m,t[17]=v):v=t[17],v}var su=E()({head:()=>({meta:[{title:`Mulga`}]}),component:()=>(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(es,{}),(0,B.jsx)(G,{}),(0,B.jsxs)(`main`,{className:`flex flex-1 flex-col`,children:[(0,B.jsx)(ru,{}),(0,B.jsx)(`div`,{className:`flex flex-1 flex-col p-8`,children:(0,B.jsx)(be,{})})]})]}),errorComponent:ou,notFoundComponent:iu}),cu=w(`/_auth`)({beforeLoad:()=>{if(!Je())throw Ee({to:`/login`})},component:D(()=>P(()=>import(`./route-DPFKZkGs.js`),__vite__mapDeps([0,1,2,3,4,5])),`component`)}),lu=w(`/_auth/`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...zn,staleTime:`static`}),e.queryClient.query({...An,staleTime:`static`}),e.queryClient.query({...Mn,staleTime:`static`}),e.queryClient.query({...Hn,staleTime:`static`}),e.queryClient.query({...lr,staleTime:`static`}),e.queryClient.query({...Wn,staleTime:`static`}),e.queryClient.query({...Fn,staleTime:`static`}),e.queryClient.query({...Bn,staleTime:`static`}),e.queryClient.query({...Ln,staleTime:`static`})])},head:()=>({meta:[{title:`Dashboard | Mulga`}]}),component:D(()=>P(()=>import(`./_auth-DsyoN1M9.js`),__vite__mapDeps([6,1,7,8,9,10,11,4,5,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38])),`component`)}),uu=w(`/_auth/bedrock`)({beforeLoad:()=>{qe()||N({throw:!0})},component:D(()=>P(()=>import(`./route-n5jLl8qw.js`),__vite__mapDeps([39,1,2,3,4,5])),`component`)}),du=w(`/_auth/nodes`)({head:()=>({meta:[{title:`Nodes | Mulga`}]}),component:D(()=>P(()=>import(`./nodes-DExo87Po.js`),__vite__mapDeps([40,1,7,8,9,10,11,4,5,41,12,13,15,14,16,18,19,20,26,27,28,29,30,31,22])),`component`)}),fu=w(`/_auth/s3/service-metrics`)({head:()=>({meta:[{title:`Service Metrics | S3 | Mulga`}]}),component:D(()=>P(()=>import(`./service-metrics-C6gBIZci.js`),__vite__mapDeps([42,1,7,8,9,10,41,18,12,13,19,20,26,27,28,29,30,31,22])),`component`)}),pu=w(`/_auth/ec2/(elastic-ips)/allocate-address`)({head:()=>({meta:[{title:`Allocate Elastic IP | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./allocate-address-CDvylWBR.js`),__vite__mapDeps([43,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,62])),`component`)}),mu=w(`/_auth/ec2/(internet-gateways)/create-internet-gateway`)({head:()=>({meta:[{title:`Create Internet Gateway | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-internet-gateway-CGStzV_5.js`),__vite__mapDeps([63,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,62])),`component`)}),hu=w(`/_auth/ec2/(key)/create-key-pair`)({head:()=>({meta:[{title:`Create Key Pair | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-key-pair-CKL_t5ui.js`),__vite__mapDeps([64,1,44,4,5,45,11,14,47,65,35,28,12,13,33,36,15,51,37,66,67,52,68,69,46,48,49,70,50,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,32,34,62])),`component`)}),gu=w(`/_auth/ec2/(key)/import-key-pair`)({head:()=>({meta:[{title:`Import Key Pair | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./import-key-pair-kETKjfrj.js`),__vite__mapDeps([71,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,72,62])),`component`)}),_u=w(`/_auth/ec2/(launch-templates)/create-launch-template`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...Vn,staleTime:`static`}),e.queryClient.query({...In,staleTime:`static`}),e.queryClient.query({...Hn,staleTime:`static`}),e.queryClient.query({...Nn,staleTime:`static`}),e.queryClient.query({...Wn,staleTime:`static`})])},head:()=>({meta:[{title:`Create Launch Template | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-launch-template-vwPKoZ8a.js`),__vite__mapDeps([73,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,62,74,75,8,10,65,35,37,66,67,68,72,76])),`component`)}),vu=w(`/_auth/ec2/(load-balancers)/create-load-balancer`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...Mn,staleTime:`static`}),e.queryClient.query({...Nn,staleTime:`static`}),e.queryClient.query({...Wn,staleTime:`static`}),e.queryClient.query({...Qn,staleTime:`static`}),e.queryClient.query({...En,staleTime:`static`}),e.queryClient.query({...Zn,staleTime:`static`})])},head:()=>({meta:[{title:`Create Load Balancer | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-load-balancer-BBKiIxj3.js`),__vite__mapDeps([77,1,75,8,9,10,44,4,5,12,13,45,11,14,65,35,28,33,36,47,15,51,37,66,67,52,68,46,48,49,50,78,22,23,24,79,54,55,58,60,61,72,32,34,21,80,81,82,26,57,59,83,84,85,86,76,87])),`component`)}),yu=w(`/_auth/ec2/(nat-gateways)/create-nat-gateway`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...Nn,staleTime:`static`}),e.queryClient.query({...Bn,staleTime:`static`})])},head:()=>({meta:[{title:`Create NAT Gateway | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-nat-gateway-C0zhuUio.js`),__vite__mapDeps([88,1,75,8,9,10,11,4,5,44,12,13,45,14,65,35,28,33,36,47,15,51,37,66,67,52,68,46,48,49,50,21,22,23,24,53,54,55,56,26,57,58,59,60,61,62])),`component`)}),bu=w(`/_auth/ec2/(placement-groups)/create-placement-group`)({head:()=>({meta:[{title:`Create Placement Group | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-placement-group-D_3YKZZQ.js`),__vite__mapDeps([89,1,44,4,5,45,11,14,65,35,28,12,13,33,36,47,15,51,37,66,67,52,68,46,48,49,50,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,62])),`component`)}),xu=w(`/_auth/ec2/(route-tables)/create-route-table`)({loader:async({context:e})=>{await e.queryClient.query({...Mn,staleTime:`static`})},head:()=>({meta:[{title:`Create Route Table | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-route-table-q3_xIq0T.js`),__vite__mapDeps([90,1,75,8,9,10,44,4,5,12,13,45,11,14,65,35,28,33,36,47,15,51,37,66,67,52,68,50,21,22,23,24,53,54,55,56,26,57,58,59,60,61,62])),`component`)}),Su=w(`/_auth/ec2/(security-groups)/create-security-group`)({loader:async({context:e})=>{await e.queryClient.query({...Mn,staleTime:`static`})},head:()=>({meta:[{title:`Create Security Group | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-security-group-BD7bwg9p.js`),__vite__mapDeps([91,1,75,8,9,10,44,4,5,12,13,45,11,14,65,35,28,33,36,47,15,51,37,66,67,52,68,46,48,49,50,21,22,23,24,53,54,55,56,26,57,58,59,60,61,62])),`component`)}),Cu=w(`/_auth/ec2/(subnet)/create-subnet`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...Mn,staleTime:`static`}),e.queryClient.query({...Un,staleTime:`static`})])},head:()=>({meta:[{title:`Create Subnet | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-subnet-BXdYKpy-.js`),__vite__mapDeps([92,1,75,8,9,10,44,4,5,12,13,45,11,14,65,35,28,33,36,47,15,51,37,66,67,52,68,46,48,49,50,21,22,23,24,53,54,55,56,26,57,58,59,60,61,62])),`component`)}),wu=w(`/_auth/ec2/(target-groups)/create-target-group`)({loader:async({context:e})=>{await e.queryClient.query({...Mn,staleTime:`static`})},head:()=>({meta:[{title:`Create Target Group | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-target-group-CSrYTK6r.js`),__vite__mapDeps([93,1,75,8,9,10,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,21,22,23,24,80,54,55,81,26,57,58,59,86,65,35,36,51,37,66,67,52,68,50,60,61,83,84,85,76,87])),`component`)}),Tu=w(`/_auth/ec2/(volumes)/create-volume`)({loader:async({context:e})=>{await e.queryClient.query({...Un,staleTime:`static`})},head:()=>({meta:[{title:`Create Volume | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-volume-BamGr8Qm.js`),__vite__mapDeps([94,1,75,8,9,10,44,4,5,45,11,14,65,35,28,12,13,33,36,47,15,51,37,66,67,52,68,46,48,49,50,21,22,23,24,53,54,55,56,26,57,58,59,60,61,62])),`component`)}),Eu=w(`/_auth/ec2/(vpc)/create-vpc`)({head:()=>({meta:[{title:`Create VPC | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./create-vpc-CyDH_vpB.js`),__vite__mapDeps([95,1,44,4,5,45,11,14,15,16,65,35,28,12,13,33,36,47,51,37,66,67,52,68,46,48,49,50,53,9,54,55,23,24,21,22,56,26,57,58,59,60,61,62])),`component`)}),Du=w(`/_auth/ecs/(clusters)/task-definitions`)({loader:async({context:e})=>{await e.queryClient.query({...Jn,staleTime:`static`})},head:()=>({meta:[{title:`Task Definitions | ECS | Mulga`}]}),component:D(()=>P(()=>import(`./task-definitions-qkfdMMhk.js`),__vite__mapDeps([96,1,75,8,9,10,11,4,5,33,28,12,13,97,22,23,24,98,54,55,20,26,58,99,32,34,35,36,37,100])),`component`)}),Ou=w(`/_auth/eks/(clusters)/create-cluster`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...Mn,staleTime:`static`}),e.queryClient.query({...Nn,staleTime:`static`}),e.queryClient.query({...rr,staleTime:`static`}),e.queryClient.query({...Vn,staleTime:`static`})])},head:()=>({meta:[{title:`Create Cluster | EKS | Mulga`}]}),component:D(()=>P(()=>import(`./create-cluster-eQiUzhUk.js`),__vite__mapDeps([101,1,9,75,8,10,44,4,5,12,13,45,11,14,65,35,28,33,36,47,15,51,37,66,67,52,68,50,21,22,23,24,102,54,55,103,104,56,105,106,107,26,57,58,59,60,61,32,34,108,109,48,110,70,49,111])),`component`)}),ku=w(`/_auth/iam/(groups)/create-group`)({head:()=>({meta:[{title:`Create Group | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./create-group-6mVlm4h5.js`),__vite__mapDeps([112,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,105,9,54,55,23,24,106,26,57,58,59,60,61,113,104])),`component`)}),Au=w(`/_auth/iam/(instance-profiles)/create-instance-profile`)({head:()=>({meta:[{title:`Create Instance Profile | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./create-instance-profile-CgetPfkP.js`),__vite__mapDeps([114,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,105,9,54,55,23,24,106,26,57,58,59,60,61,113,104])),`component`)}),ju=w(`/_auth/iam/(policies)/create-policy`)({head:()=>({meta:[{title:`Create Policy | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./create-policy-BJFldcK3.js`),__vite__mapDeps([115,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,105,9,54,55,23,24,106,26,57,58,59,60,61,116,104,72,113])),`component`)}),Mu=w(`/_auth/iam/(roles)/create-role`)({head:()=>({meta:[{title:`Create Role | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./create-role-DvSx0q-L.js`),__vite__mapDeps([117,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,105,9,54,55,23,24,106,26,57,58,59,60,61,116,104,72,113])),`component`)}),Nu=w(`/_auth/iam/(users)/create-user`)({head:()=>({meta:[{title:`Create User | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./create-user-Bv8sj586.js`),__vite__mapDeps([118,1,44,4,5,45,11,14,46,12,13,47,15,48,33,28,49,50,36,51,52,105,9,54,55,23,24,106,26,57,58,59,60,61,113,104])),`component`)}),Pu=w(`/_auth/rds/(db-instances)/create-db-instance`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...sr,staleTime:`static`}),e.queryClient.query({...or,staleTime:`static`}),e.queryClient.query({...ar,staleTime:`static`}),e.queryClient.query({...Wn,staleTime:`static`}),e.queryClient.query({...Mn,staleTime:`static`}),e.queryClient.query({...Vn,staleTime:`static`})])},head:()=>({meta:[{title:`Create Database | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./create-db-instance-CY_ivPtb.js`),__vite__mapDeps([119,1,9,7,8,10,75,44,4,5,45,11,14,65,35,28,12,13,33,36,47,15,51,37,66,67,52,68,46,48,49,50,21,22,23,24,120,121,54,55,122,26,57,58,59,60,61,83,84,85,108,109,110,70,123,124])),`component`)}),Fu=w(`/_auth/rds/(parameter-groups)/create-db-parameter-group`)({loader:async({context:e})=>{await e.queryClient.query({...sr,staleTime:`static`})},head:()=>({meta:[{title:`Create Parameter Group | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./create-db-parameter-group-CkK-hDRM.js`),__vite__mapDeps([125,1,75,8,9,10,44,4,5,45,11,14,65,35,28,12,13,33,36,47,15,51,37,66,67,52,68,46,48,49,50,120,23,24,121,54,55,122,22,26,57,58,59,60,61,83,84,85])),`component`)}),Iu=w(`/_auth/rds/(subnet-groups)/create-db-subnet-group`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...Nn,staleTime:`static`}),e.queryClient.query({...Mn,staleTime:`static`})])},head:()=>({meta:[{title:`Create Subnet Group | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./create-db-subnet-group-BV65rf5O.js`),__vite__mapDeps([126,1,75,8,9,10,44,4,5,12,13,45,11,14,46,47,15,48,33,28,49,50,36,51,52,21,22,23,24,120,121,54,55,26,57,58,59,60,61,83,84,85])),`component`)}),Lu=w(`/_auth/s3/(buckets)/create-bucket`)({head:()=>({meta:[{title:`Create Bucket | S3 | Mulga`}]}),component:D(()=>P(()=>import(`./create-bucket-B5kEkFpz.js`),__vite__mapDeps([127,1,44,4,5,12,13,45,11,14,46,47,15,48,33,28,49,50,36,51,52,128,9,54,55,23,24,26,57,58,59,60,61])),`component`)}),Ru=w(`/_auth/s3/ls/`)({loader:async({context:e})=>{await e.queryClient.query({...lr,staleTime:`static`})},head:()=>({meta:[{title:`Buckets | S3 | Mulga`}]}),component:D(()=>P(()=>import(`./ls-XgxEPnDq.js`),__vite__mapDeps([129,1,75,8,9,10,11,4,5,12,13,33,28,25,22,23,24,26,130])),`component`)}),zu=w(`/_auth/s3/ls/$bucket`)({component:D(()=>P(()=>import(`./route-DtXjPAiX.js`),__vite__mapDeps([131,1,2,3,4,5])),`component`)}),Bu=w(`/_auth/bedrock/(catalog)/list-model-catalog/`)({head:()=>({meta:[{title:`Model Catalog | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./list-model-catalog-CPZ8xUbd.js`),__vite__mapDeps([132,1,7,8,9,10,41,12,13,18,19,20,26,27,28,29,30,31,22])),`component`)}),Vu=w(`/_auth/bedrock/(guardrails)/list-guardrails/`)({loader:async({context:e})=>{await e.queryClient.query({...Dn,staleTime:`static`})},head:()=>({meta:[{title:`Guardrails | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./list-guardrails-DYYlNj8n.js`),__vite__mapDeps([133,1,75,8,9,10,11,4,5,33,28,12,13,134,22,23,24,135,26,38,130])),`component`)}),Hu=w(`/_auth/bedrock/(guardrails)/list-guardrails/create`)({head:()=>({meta:[{title:`Create Guardrail | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./create-CoZioQAG.js`),__vite__mapDeps([136,1,137,9,54,55,12,13,23,24,135,138,44,4,5,45,11,14,65,35,28,33,36,47,15,51,37,66,67,52,68,84,85,50,26,57,58,59,60,61,83,72])),`component`)}),Uu=w(`/_auth/bedrock/(knowledge-bases)/list-knowledge-bases/`)({loader:async({context:e})=>{await e.queryClient.query({...kn,staleTime:`static`})},head:()=>({meta:[{title:`Knowledge Bases | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./list-knowledge-bases-CH_zlnnr.js`),__vite__mapDeps([139,1,75,8,9,10,11,4,5,33,28,12,13,140,22,23,24,141,26,38,130])),`component`)}),Wu=w(`/_auth/bedrock/(knowledge-bases)/list-knowledge-bases/create`)({loader:async({context:e})=>{await e.queryClient.query({...On,staleTime:`static`})},head:()=>({meta:[{title:`Create Knowledge Base | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./create-uNWIyxX8.js`),__vite__mapDeps([142,1,75,8,9,10,44,4,5,45,11,14,65,35,28,12,13,33,36,47,15,51,37,66,67,52,68,50,134,22,23,24,135,143,54,55,141,26,57,58,59,60,61,72])),`component`)}),Gu=w(`/_auth/bedrock/(model-access)/list-model-access/`)({head:()=>({meta:[{title:`Model Access | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./list-model-access-Ds5MpzNH.js`),__vite__mapDeps([144,1,9,54,55,7,8,10,41,65,35,28,12,13,33,36,14,47,15,51,37,5,66,67,52,68,50,18,19,20,26,27,29,30,31,22,60,61])),`component`)}),Ku=w(`/_auth/bedrock/(playground)/playground/`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...On,staleTime:`static`}),e.queryClient.query({...Dn,staleTime:`static`})])},head:()=>({meta:[{title:`Playground | Ochre | Mulga`}]}),component:D(()=>P(()=>import(`./playground-zdI5o66q.js`),__vite__mapDeps([145,1,54,9,55,75,8,10,12,13,15,14,65,35,28,33,36,47,51,37,5,66,67,52,68,46,48,49,50,23,24,134,22,135,146,26,27,29,60,61,72])),`component`)}),qu=w(`/_auth/ec2/(elastic-ips)/describe-addresses/`)({loader:async({context:e})=>{await e.queryClient.query({...Bn,staleTime:`static`})},head:()=>({meta:[{title:`Elastic IPs | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-addresses-DKlK9Anw.js`),__vite__mapDeps([147,1,75,8,9,10,11,4,5,12,13,33,28,21,22,23,24,26,130])),`component`)}),Ju=w(`/_auth/ec2/(images)/describe-images/`)({loader:async({context:e})=>{await e.queryClient.query({...Vn,staleTime:`static`})},head:()=>({meta:[{title:`Images | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-images-Zp7giKqa.js`),__vite__mapDeps([148,1,75,8,9,10,21,22,12,13,23,24,26,38,130,11,4,5,108])),`component`)}),Yu=w(`/_auth/ec2/(instances)/describe-instances/`)({loader:async({context:e})=>{await e.queryClient.query({...zn,staleTime:`static`})},head:()=>({meta:[{title:`Instances | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-instances-BK0FW0LB.js`),__vite__mapDeps([149,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,38,130])),`component`)}),Xu=w(`/_auth/ec2/(internet-gateways)/describe-internet-gateways/`)({loader:async({context:e})=>{await e.queryClient.query({...Ln,staleTime:`static`})},head:()=>({meta:[{title:`Internet Gateways | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-internet-gateways-CiiBScpk.js`),__vite__mapDeps([150,1,75,8,9,10,11,4,5,12,13,33,28,21,22,23,24,26,130])),`component`)}),Zu=w(`/_auth/ec2/(key)/describe-key-pairs/`)({loader:async({context:e})=>{await e.queryClient.query({...Hn,staleTime:`static`})},head:()=>({meta:[{title:`Key Pairs | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-key-pairs-BRKxsJWn.js`),__vite__mapDeps([151,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,130])),`component`)}),Qu=w(`/_auth/ec2/(launch-templates)/describe-launch-templates/`)({loader:async({context:e})=>{await e.queryClient.query({...Rn,staleTime:`static`})},head:()=>({meta:[{title:`Launch Templates | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-launch-templates-BuaCkV_y.js`),__vite__mapDeps([152,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,27,29,130])),`component`)}),$u=w(`/_auth/ec2/(load-balancers)/describe-load-balancers/`)({loader:async({context:e})=>{await e.queryClient.query({...Xn,staleTime:`static`})},head:()=>({meta:[{title:`Load Balancers | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-load-balancers-ayJnDdyt.js`),__vite__mapDeps([153,1,75,8,9,10,11,4,5,44,12,13,33,28,82,22,23,24,81,26,38])),`component`)}),K=w(`/_auth/ec2/(nat-gateways)/describe-nat-gateways/`)({loader:async({context:e})=>{await e.queryClient.query({...Fn,staleTime:`static`})},head:()=>({meta:[{title:`NAT Gateways | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-nat-gateways-B8p3GKN1.js`),__vite__mapDeps([154,1,75,8,9,10,11,4,5,12,13,33,28,21,22,23,24,26,38,130])),`component`)}),ed=w(`/_auth/ec2/(placement-groups)/describe-placement-groups/`)({loader:async({context:e})=>{await e.queryClient.query({...Gn,staleTime:`static`})},head:()=>({meta:[{title:`Placement Groups | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-placement-groups-XiQbPRZ5.js`),__vite__mapDeps([155,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,38,130])),`component`)}),q=w(`/_auth/ec2/(route-tables)/describe-route-tables/`)({loader:async({context:e})=>{await e.queryClient.query({...Pn,staleTime:`static`})},head:()=>({meta:[{title:`Route Tables | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-route-tables-Cz9uMOpx.js`),__vite__mapDeps([156,1,75,8,9,10,11,4,5,12,13,33,28,21,22,23,24,26,27,29,130])),`component`)}),J=w(`/_auth/ec2/(security-groups)/describe-security-groups/`)({loader:async({context:e})=>{await e.queryClient.query({...Wn,staleTime:`static`})},head:()=>({meta:[{title:`Security Groups | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-security-groups-uryLUVIn.js`),__vite__mapDeps([157,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,130])),`component`)}),Y=w(`/_auth/ec2/(snapshots)/describe-snapshots/`)({loader:async({context:e})=>{await e.queryClient.query({...jn,staleTime:`static`})},head:()=>({meta:[{title:`Snapshots | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-snapshots-63g9NU9g.js`),__vite__mapDeps([158,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,38,130])),`component`)}),td=w(`/_auth/ec2/(subnet)/describe-subnets/`)({loader:async({context:e})=>{await e.queryClient.query({...Nn,staleTime:`static`})},head:()=>({meta:[{title:`Subnets | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-subnets-lWLraP1d.js`),__vite__mapDeps([159,1,75,8,9,10,11,4,5,12,13,33,28,21,22,23,24,26,38,130])),`component`)}),nd=w(`/_auth/ec2/(target-groups)/describe-target-groups/`)({loader:async({context:e})=>{await e.queryClient.query({...Qn,staleTime:`static`})},head:()=>({meta:[{title:`Target Groups | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-target-groups-5RCbjKmg.js`),__vite__mapDeps([160,1,7,8,9,10,75,11,4,5,44,33,28,12,13,82,22,23,24,81,26])),`component`)}),rd=w(`/_auth/ec2/(volumes)/describe-volumes/`)({loader:async({context:e})=>{await e.queryClient.query({...An,staleTime:`static`})},head:()=>({meta:[{title:`Volumes | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-volumes-Dj4fTW0o.js`),__vite__mapDeps([161,1,75,8,9,10,11,4,5,33,28,12,13,21,22,23,24,26,38,130])),`component`)}),id=w(`/_auth/ec2/(vpc)/describe-vpcs/`)({loader:async({context:e})=>{await e.queryClient.query({...Mn,staleTime:`static`})},head:()=>({meta:[{title:`VPCs | EC2 | Mulga`}]}),component:D(()=>P(()=>import(`./describe-vpcs-cdkXn9V9.js`),__vite__mapDeps([162,1,75,8,9,10,11,4,5,12,13,33,28,21,22,23,24,26,38,130])),`component`)}),ad=w(`/_auth/ecr/(repositories)/list-repositories/`)({loader:async({context:e})=>{await e.queryClient.query({...Kn,staleTime:`static`})},head:()=>({meta:[{title:`Repositories | ECR | Mulga`}]}),component:D(()=>P(()=>import(`./list-repositories-B-9oI4MN.js`),__vite__mapDeps([163,1,75,8,9,10,11,4,5,44,12,13,33,28,50,36,51,52,164,22,23,24,165,54,55,26,60,61,32,34,35,37])),`component`)}),od=w(`/_auth/ecs/(clusters)/list-clusters/`)({loader:async({context:e})=>{await Promise.all([e.queryClient.query({...qn,staleTime:`static`}),e.queryClient.query({...Vn,staleTime:`static`})])},head:()=>({meta:[{title:`Clusters | ECS | Mulga`}]}),component:D(()=>P(()=>import(`./list-clusters-UynY0efZ.js`),__vite__mapDeps([166,1,9,75,8,10,11,4,5,44,33,28,12,13,50,36,51,52,21,22,23,24,97,98,54,55,20,26,58,60,61,32,34,35,37,99,38,108,109,47,14,48,110,70,49,100])),`component`)}),sd=w(`/_auth/eks/(clusters)/list-clusters/`)({loader:async({context:e})=>{await e.queryClient.query({...Yn,staleTime:`static`})},head:()=>({meta:[{title:`Clusters | EKS | Mulga`}]}),component:D(()=>P(()=>import(`./list-clusters-CIHqWLhW.js`),__vite__mapDeps([167,1,75,8,9,10,11,4,5,33,28,12,13,168,22,23,24,103,26,130])),`component`)}),cd=w(`/_auth/iam/(groups)/list-groups/`)({loader:async({context:e})=>{await e.queryClient.query({...tr,staleTime:`static`})},head:()=>({meta:[{title:`Groups | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./list-groups-B-aCbhJM.js`),__vite__mapDeps([169,1,75,8,9,10,11,4,5,33,28,12,13,107,22,23,24,106,104,26,130])),`component`)}),ld=w(`/_auth/iam/(instance-profiles)/list-instance-profiles/`)({loader:async({context:e})=>{await e.queryClient.query({...er,staleTime:`static`})},head:()=>({meta:[{title:`Instance Profiles | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./list-instance-profiles-BSt7PimM.js`),__vite__mapDeps([170,1,75,8,9,10,11,4,5,33,28,12,13,107,22,23,24,106,104,26,130])),`component`)}),ud=w(`/_auth/iam/(policies)/list-policies/`)({loader:async({context:e})=>{await e.queryClient.query({...nr,staleTime:`static`})},head:()=>({meta:[{title:`Policies | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./list-policies-DeMAXGlh.js`),__vite__mapDeps([171,1,75,8,9,10,11,4,5,33,28,12,13,107,22,23,24,106,104,26,130])),`component`)}),dd=w(`/_auth/iam/(roles)/list-roles/`)({loader:async({context:e})=>{await e.queryClient.query({...rr,staleTime:`static`})},head:()=>({meta:[{title:`Roles | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./list-roles-DKJKr-De.js`),__vite__mapDeps([172,1,75,8,9,10,11,4,5,33,28,12,13,107,22,23,24,106,104,26,130])),`component`)}),fd=w(`/_auth/iam/(users)/list-users/`)({loader:async({context:e})=>{await e.queryClient.query({...$n,staleTime:`static`})},head:()=>({meta:[{title:`Users | IAM | Mulga`}]}),component:D(()=>P(()=>import(`./list-users-B87cjyLt.js`),__vite__mapDeps([173,1,75,8,9,10,11,4,5,33,28,12,13,107,22,23,24,106,104,26,130])),`component`)}),pd=w(`/_auth/rds/(db-instances)/describe-db-instances/`)({loader:async({context:e})=>{await e.queryClient.query({...cr,staleTime:`static`})},head:()=>({meta:[{title:`Databases | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./describe-db-instances-ririu0gg.js`),__vite__mapDeps([174,1,75,8,9,10,11,4,5,44,33,28,12,13,120,23,24,121,54,55,122,22,26,58,38,175,50,36,51,52,60,61,32,34,35,37])),`component`)}),md=w(`/_auth/rds/(parameter-groups)/describe-db-parameter-groups/`)({loader:async({context:e})=>{await e.queryClient.query({...ar,staleTime:`static`})},head:()=>({meta:[{title:`Parameter Groups | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./describe-db-parameter-groups-Vj5U5CsP.js`),__vite__mapDeps([176,1,75,8,9,10,11,4,5,44,33,28,12,13,120,23,24,122,22,26,177,121,54,55,178,99,32,34,35,36,37])),`component`)}),hd=w(`/_auth/rds/(snapshots)/describe-db-snapshots/`)({loader:async({context:e})=>{await e.queryClient.query({...ir,staleTime:`static`})},head:()=>({meta:[{title:`Snapshots | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./describe-db-snapshots-DXVrzU4j.js`),__vite__mapDeps([179,1,75,8,9,10,11,4,5,44,12,13,33,28,120,23,24,122,22,26,38,180,7,65,35,36,14,47,15,51,37,66,67,52,68,50,121,54,55,57,60,61,83,84,85,32,34,123,181,178,99])),`component`)}),gd=w(`/_auth/rds/(subnet-groups)/describe-db-subnet-groups/`)({loader:async({context:e})=>{await e.queryClient.query({...or,staleTime:`static`})},head:()=>({meta:[{title:`Subnet Groups | RDS | Mulga`}]}),component:D(()=>P(()=>import(`./describe-db-subnet-groups-B9VO6RnW.js`),__vite__mapDeps([182,1,75,8,9,10,11,4,5,44,33,28,12,13,122,22,23,24,120,26,38,183,121,54,55,178,99,32,34,35,36,37])),`component`)}),X=cu.update({id:`/_auth`,getParentRoute:()=>su}),_d=ur.update({id:`/login`,path:`/login`,getParentRoute:()=>su}),vd=lu.update({id:`/`,path:`/`,getParentRoute:()=>X}),Z=uu.update({id:`/bedrock`,path:`/bedrock`,getParentRoute:()=>X}),yd=du.update({id:`/nodes`,path:`/nodes`,getParentRoute:()=>X}),bd=fu.update({id:`/s3/service-metrics`,path:`/s3/service-metrics`,getParentRoute:()=>X}),xd=pu.update({id:`/ec2/(elastic-ips)/allocate-address`,path:`/ec2/allocate-address`,getParentRoute:()=>X}),Sd=dr.update({id:`/ec2/(instances)/run-instances`,path:`/ec2/run-instances`,getParentRoute:()=>X}),Cd=mu.update({id:`/ec2/(internet-gateways)/create-internet-gateway`,path:`/ec2/create-internet-gateway`,getParentRoute:()=>X}),wd=hu.update({id:`/ec2/(key)/create-key-pair`,path:`/ec2/create-key-pair`,getParentRoute:()=>X}),Td=gu.update({id:`/ec2/(key)/import-key-pair`,path:`/ec2/import-key-pair`,getParentRoute:()=>X}),Ed=_u.update({id:`/ec2/(launch-templates)/create-launch-template`,path:`/ec2/create-launch-template`,getParentRoute:()=>X}),Dd=vu.update({id:`/ec2/(load-balancers)/create-load-balancer`,path:`/ec2/create-load-balancer`,getParentRoute:()=>X}),Od=yu.update({id:`/ec2/(nat-gateways)/create-nat-gateway`,path:`/ec2/create-nat-gateway`,getParentRoute:()=>X}),kd=bu.update({id:`/ec2/(placement-groups)/create-placement-group`,path:`/ec2/create-placement-group`,getParentRoute:()=>X}),Ad=xu.update({id:`/ec2/(route-tables)/create-route-table`,path:`/ec2/create-route-table`,getParentRoute:()=>X}),jd=Su.update({id:`/ec2/(security-groups)/create-security-group`,path:`/ec2/create-security-group`,getParentRoute:()=>X}),Md=fr.update({id:`/ec2/(snapshots)/create-snapshot`,path:`/ec2/create-snapshot`,getParentRoute:()=>X}),Nd=Cu.update({id:`/ec2/(subnet)/create-subnet`,path:`/ec2/create-subnet`,getParentRoute:()=>X}),Pd=wu.update({id:`/ec2/(target-groups)/create-target-group`,path:`/ec2/create-target-group`,getParentRoute:()=>X}),Fd=Tu.update({id:`/ec2/(volumes)/create-volume`,path:`/ec2/create-volume`,getParentRoute:()=>X}),Id=Eu.update({id:`/ec2/(vpc)/create-vpc`,path:`/ec2/create-vpc`,getParentRoute:()=>X}),Ld=pr.update({id:`/ecs/(clusters)/create-service`,path:`/ecs/create-service`,getParentRoute:()=>X}),Rd=mr.update({id:`/ecs/(clusters)/register-task-definition`,path:`/ecs/register-task-definition`,getParentRoute:()=>X}),zd=hr.update({id:`/ecs/(clusters)/run-task`,path:`/ecs/run-task`,getParentRoute:()=>X}),Bd=Du.update({id:`/ecs/(clusters)/task-definitions`,path:`/ecs/task-definitions`,getParentRoute:()=>X}),Vd=Ou.update({id:`/eks/(clusters)/create-cluster`,path:`/eks/create-cluster`,getParentRoute:()=>X}),Hd=ku.update({id:`/iam/(groups)/create-group`,path:`/iam/create-group`,getParentRoute:()=>X}),Ud=Au.update({id:`/iam/(instance-profiles)/create-instance-profile`,path:`/iam/create-instance-profile`,getParentRoute:()=>X}),Wd=ju.update({id:`/iam/(policies)/create-policy`,path:`/iam/create-policy`,getParentRoute:()=>X}),Gd=Mu.update({id:`/iam/(roles)/create-role`,path:`/iam/create-role`,getParentRoute:()=>X}),Kd=Nu.update({id:`/iam/(users)/create-user`,path:`/iam/create-user`,getParentRoute:()=>X}),qd=Pu.update({id:`/rds/(db-instances)/create-db-instance`,path:`/rds/create-db-instance`,getParentRoute:()=>X}),Jd=Fu.update({id:`/rds/(parameter-groups)/create-db-parameter-group`,path:`/rds/create-db-parameter-group`,getParentRoute:()=>X}),Yd=Iu.update({id:`/rds/(subnet-groups)/create-db-subnet-group`,path:`/rds/create-db-subnet-group`,getParentRoute:()=>X}),Xd=Lu.update({id:`/s3/(buckets)/create-bucket`,path:`/s3/create-bucket`,getParentRoute:()=>X}),Zd=Ru.update({id:`/s3/ls/`,path:`/s3/ls/`,getParentRoute:()=>X}),Qd=zu.update({id:`/s3/ls/$bucket`,path:`/s3/ls/$bucket`,getParentRoute:()=>X}),$d=Bu.update({id:`/(catalog)/list-model-catalog/`,path:`/list-model-catalog/`,getParentRoute:()=>Z}),ef=Vu.update({id:`/(guardrails)/list-guardrails/`,path:`/list-guardrails/`,getParentRoute:()=>Z}),tf=Hu.update({id:`/(guardrails)/list-guardrails/create`,path:`/list-guardrails/create`,getParentRoute:()=>Z}),nf=Uu.update({id:`/(knowledge-bases)/list-knowledge-bases/`,path:`/list-knowledge-bases/`,getParentRoute:()=>Z}),rf=gr.update({id:`/(knowledge-bases)/list-knowledge-bases/$knowledgeBaseId`,path:`/list-knowledge-bases/$knowledgeBaseId`,getParentRoute:()=>Z}),af=Wu.update({id:`/(knowledge-bases)/list-knowledge-bases/create`,path:`/list-knowledge-bases/create`,getParentRoute:()=>Z}),of=Gu.update({id:`/(model-access)/list-model-access/`,path:`/list-model-access/`,getParentRoute:()=>Z}),sf=Ku.update({id:`/(playground)/playground/`,path:`/playground/`,getParentRoute:()=>Z}),cf=qu.update({id:`/ec2/(elastic-ips)/describe-addresses/`,path:`/ec2/describe-addresses/`,getParentRoute:()=>X}),lf=_r.update({id:`/ec2/(elastic-ips)/describe-addresses/$id`,path:`/ec2/describe-addresses/$id`,getParentRoute:()=>X}),uf=Ju.update({id:`/ec2/(images)/describe-images/`,path:`/ec2/describe-images/`,getParentRoute:()=>X}),df=vr.update({id:`/ec2/(images)/describe-images/$id`,path:`/ec2/describe-images/$id`,getParentRoute:()=>X}),ff=Yu.update({id:`/ec2/(instances)/describe-instances/`,path:`/ec2/describe-instances/`,getParentRoute:()=>X}),pf=yr.update({id:`/ec2/(instances)/describe-instances/$id`,path:`/ec2/describe-instances/$id`,getParentRoute:()=>X}),mf=Xu.update({id:`/ec2/(internet-gateways)/describe-internet-gateways/`,path:`/ec2/describe-internet-gateways/`,getParentRoute:()=>X}),hf=br.update({id:`/ec2/(internet-gateways)/describe-internet-gateways/$id`,path:`/ec2/describe-internet-gateways/$id`,getParentRoute:()=>X}),gf=Zu.update({id:`/ec2/(key)/describe-key-pairs/`,path:`/ec2/describe-key-pairs/`,getParentRoute:()=>X}),_f=xr.update({id:`/ec2/(key)/describe-key-pairs/$id`,path:`/ec2/describe-key-pairs/$id`,getParentRoute:()=>X}),vf=Qu.update({id:`/ec2/(launch-templates)/describe-launch-templates/`,path:`/ec2/describe-launch-templates/`,getParentRoute:()=>X}),yf=Sr.update({id:`/ec2/(launch-templates)/describe-launch-templates/$id`,path:`/ec2/describe-launch-templates/$id`,getParentRoute:()=>X}),bf=$u.update({id:`/ec2/(load-balancers)/describe-load-balancers/`,path:`/ec2/describe-load-balancers/`,getParentRoute:()=>X}),xf=Cr.update({id:`/ec2/(load-balancers)/describe-load-balancers/$id`,path:`/ec2/describe-load-balancers/$id`,getParentRoute:()=>X}),Sf=K.update({id:`/ec2/(nat-gateways)/describe-nat-gateways/`,path:`/ec2/describe-nat-gateways/`,getParentRoute:()=>X}),Cf=wr.update({id:`/ec2/(nat-gateways)/describe-nat-gateways/$id`,path:`/ec2/describe-nat-gateways/$id`,getParentRoute:()=>X}),wf=ed.update({id:`/ec2/(placement-groups)/describe-placement-groups/`,path:`/ec2/describe-placement-groups/`,getParentRoute:()=>X}),Tf=Tr.update({id:`/ec2/(placement-groups)/describe-placement-groups/$id`,path:`/ec2/describe-placement-groups/$id`,getParentRoute:()=>X}),Ef=q.update({id:`/ec2/(route-tables)/describe-route-tables/`,path:`/ec2/describe-route-tables/`,getParentRoute:()=>X}),Df=Er.update({id:`/ec2/(route-tables)/describe-route-tables/$id`,path:`/ec2/describe-route-tables/$id`,getParentRoute:()=>X}),Of=J.update({id:`/ec2/(security-groups)/describe-security-groups/`,path:`/ec2/describe-security-groups/`,getParentRoute:()=>X}),kf=dt.update({id:`/ec2/(security-groups)/describe-security-groups/$id`,path:`/ec2/describe-security-groups/$id`,getParentRoute:()=>X}),Af=Y.update({id:`/ec2/(snapshots)/describe-snapshots/`,path:`/ec2/describe-snapshots/`,getParentRoute:()=>X}),jf=st.update({id:`/ec2/(snapshots)/describe-snapshots/$id`,path:`/ec2/describe-snapshots/$id`,getParentRoute:()=>X}),Mf=td.update({id:`/ec2/(subnet)/describe-subnets/`,path:`/ec2/describe-subnets/`,getParentRoute:()=>X}),Nf=Dr.update({id:`/ec2/(subnet)/describe-subnets/$id`,path:`/ec2/describe-subnets/$id`,getParentRoute:()=>X}),Pf=nd.update({id:`/ec2/(target-groups)/describe-target-groups/`,path:`/ec2/describe-target-groups/`,getParentRoute:()=>X}),Ff=Or.update({id:`/ec2/(target-groups)/describe-target-groups/$id`,path:`/ec2/describe-target-groups/$id`,getParentRoute:()=>X}),If=rd.update({id:`/ec2/(volumes)/describe-volumes/`,path:`/ec2/describe-volumes/`,getParentRoute:()=>X}),Lf=kr.update({id:`/ec2/(volumes)/describe-volumes/$id`,path:`/ec2/describe-volumes/$id`,getParentRoute:()=>X}),Rf=Ar.update({id:`/ec2/(volumes)/modify-volume/$id`,path:`/ec2/modify-volume/$id`,getParentRoute:()=>X}),zf=id.update({id:`/ec2/(vpc)/describe-vpcs/`,path:`/ec2/describe-vpcs/`,getParentRoute:()=>X}),Bf=jr.update({id:`/ec2/(vpc)/describe-vpcs/$id`,path:`/ec2/describe-vpcs/$id`,getParentRoute:()=>X}),Vf=ad.update({id:`/ecr/(repositories)/list-repositories/`,path:`/ecr/list-repositories/`,getParentRoute:()=>X}),Q=Mr.update({id:`/ecr/(repositories)/list-repositories/$id`,path:`/ecr/list-repositories/$id`,getParentRoute:()=>X}),Hf=od.update({id:`/ecs/(clusters)/list-clusters/`,path:`/ecs/list-clusters/`,getParentRoute:()=>X}),Uf=Nr.update({id:`/ecs/(clusters)/list-clusters/$clusterName`,path:`/ecs/list-clusters/$clusterName`,getParentRoute:()=>X}),Wf=sd.update({id:`/eks/(clusters)/list-clusters/`,path:`/eks/list-clusters/`,getParentRoute:()=>X}),Gf=lt.update({id:`/eks/(clusters)/list-clusters/$clusterName`,path:`/eks/list-clusters/$clusterName`,getParentRoute:()=>X}),Kf=cd.update({id:`/iam/(groups)/list-groups/`,path:`/iam/list-groups/`,getParentRoute:()=>X}),qf=Pr.update({id:`/iam/(groups)/list-groups/$groupName`,path:`/iam/list-groups/$groupName`,getParentRoute:()=>X}),Jf=ld.update({id:`/iam/(instance-profiles)/list-instance-profiles/`,path:`/iam/list-instance-profiles/`,getParentRoute:()=>X}),Yf=Fr.update({id:`/iam/(instance-profiles)/list-instance-profiles/$instanceProfileName`,path:`/iam/list-instance-profiles/$instanceProfileName`,getParentRoute:()=>X}),Xf=ud.update({id:`/iam/(policies)/list-policies/`,path:`/iam/list-policies/`,getParentRoute:()=>X}),Zf=Ir.update({id:`/iam/(policies)/list-policies/$policyArn`,path:`/iam/list-policies/$policyArn`,getParentRoute:()=>X}),Qf=dd.update({id:`/iam/(roles)/list-roles/`,path:`/iam/list-roles/`,getParentRoute:()=>X}),$f=Lr.update({id:`/iam/(roles)/list-roles/$roleName`,path:`/iam/list-roles/$roleName`,getParentRoute:()=>X}),ep=fd.update({id:`/iam/(users)/list-users/`,path:`/iam/list-users/`,getParentRoute:()=>X}),$=Rr.update({id:`/iam/(users)/list-users/$userName`,path:`/iam/list-users/$userName`,getParentRoute:()=>X}),tp=pd.update({id:`/rds/(db-instances)/describe-db-instances/`,path:`/rds/describe-db-instances/`,getParentRoute:()=>X}),np=zr.update({id:`/rds/(db-instances)/describe-db-instances/$id`,path:`/rds/describe-db-instances/$id`,getParentRoute:()=>X}),rp=md.update({id:`/rds/(parameter-groups)/describe-db-parameter-groups/`,path:`/rds/describe-db-parameter-groups/`,getParentRoute:()=>X}),ip=Br.update({id:`/rds/(parameter-groups)/describe-db-parameter-groups/$name`,path:`/rds/describe-db-parameter-groups/$name`,getParentRoute:()=>X}),ap=hd.update({id:`/rds/(snapshots)/describe-db-snapshots/`,path:`/rds/describe-db-snapshots/`,getParentRoute:()=>X}),op=Vr.update({id:`/rds/(snapshots)/describe-db-snapshots/$id`,path:`/rds/describe-db-snapshots/$id`,getParentRoute:()=>X}),sp=Hr.update({id:`/rds/(snapshots)/restore-db-instance-from-db-snapshot/$id`,path:`/rds/restore-db-instance-from-db-snapshot/$id`,getParentRoute:()=>X}),cp=gd.update({id:`/rds/(subnet-groups)/describe-db-subnet-groups/`,path:`/rds/describe-db-subnet-groups/`,getParentRoute:()=>X}),lp=Ur.update({id:`/rds/(subnet-groups)/describe-db-subnet-groups/$name`,path:`/rds/describe-db-subnet-groups/$name`,getParentRoute:()=>X}),up=Wr.update({id:`/`,path:`/`,getParentRoute:()=>Qd}),dp=Gr.update({id:`/$`,path:`/$`,getParentRoute:()=>Qd}),fp=Kr.update({id:`/(guardrails)/list-guardrails/$guardrailId/`,path:`/list-guardrails/$guardrailId/`,getParentRoute:()=>Z}),pp=qr.update({id:`/(guardrails)/list-guardrails/$guardrailId/edit`,path:`/list-guardrails/$guardrailId/edit`,getParentRoute:()=>Z}),mp=Jr.update({id:`/ecs/(clusters)/list-clusters/$clusterName_/services/$serviceName`,path:`/ecs/list-clusters/$clusterName/services/$serviceName`,getParentRoute:()=>X}),hp=Yr.update({id:`/ecs/(clusters)/list-clusters/$clusterName_/tasks/$taskId`,path:`/ecs/list-clusters/$clusterName/tasks/$taskId`,getParentRoute:()=>X}),gp={AuthBedrockguardrailsListGuardrailsCreateRoute:tf,AuthBedrockknowledgeBasesListKnowledgeBasesKnowledgeBaseIdRoute:rf,AuthBedrockknowledgeBasesListKnowledgeBasesCreateRoute:af,AuthBedrockcatalogListModelCatalogIndexRoute:$d,AuthBedrockguardrailsListGuardrailsIndexRoute:ef,AuthBedrockknowledgeBasesListKnowledgeBasesIndexRoute:nf,AuthBedrockmodelAccessListModelAccessIndexRoute:of,AuthBedrockplaygroundPlaygroundIndexRoute:sf,AuthBedrockguardrailsListGuardrailsGuardrailIdEditRoute:pp,AuthBedrockguardrailsListGuardrailsGuardrailIdIndexRoute:fp},_p=Z._addFileChildren(gp),vp={AuthS3LsBucketSplatRoute:dp,AuthS3LsBucketIndexRoute:up},yp={AuthBedrockRouteRoute:_p,AuthNodesRoute:yd,AuthIndexRoute:vd,AuthS3ServiceMetricsRoute:bd,AuthS3LsBucketRouteRoute:Qd._addFileChildren(vp),AuthEc2elasticIpsAllocateAddressRoute:xd,AuthEc2instancesRunInstancesRoute:Sd,AuthEc2internetGatewaysCreateInternetGatewayRoute:Cd,AuthEc2keyCreateKeyPairRoute:wd,AuthEc2keyImportKeyPairRoute:Td,AuthEc2launchTemplatesCreateLaunchTemplateRoute:Ed,AuthEc2loadBalancersCreateLoadBalancerRoute:Dd,AuthEc2natGatewaysCreateNatGatewayRoute:Od,AuthEc2placementGroupsCreatePlacementGroupRoute:kd,AuthEc2routeTablesCreateRouteTableRoute:Ad,AuthEc2securityGroupsCreateSecurityGroupRoute:jd,AuthEc2snapshotsCreateSnapshotRoute:Md,AuthEc2subnetCreateSubnetRoute:Nd,AuthEc2targetGroupsCreateTargetGroupRoute:Pd,AuthEc2volumesCreateVolumeRoute:Fd,AuthEc2vpcCreateVpcRoute:Id,AuthEcsclustersCreateServiceRoute:Ld,AuthEcsclustersRegisterTaskDefinitionRoute:Rd,AuthEcsclustersRunTaskRoute:zd,AuthEcsclustersTaskDefinitionsRoute:Bd,AuthEksclustersCreateClusterRoute:Vd,AuthIamgroupsCreateGroupRoute:Hd,AuthIaminstanceProfilesCreateInstanceProfileRoute:Ud,AuthIampoliciesCreatePolicyRoute:Wd,AuthIamrolesCreateRoleRoute:Gd,AuthIamusersCreateUserRoute:Kd,AuthRdsdbInstancesCreateDbInstanceRoute:qd,AuthRdsparameterGroupsCreateDbParameterGroupRoute:Jd,AuthRdssubnetGroupsCreateDbSubnetGroupRoute:Yd,AuthS3bucketsCreateBucketRoute:Xd,AuthS3LsIndexRoute:Zd,AuthEc2elasticIpsDescribeAddressesIdRoute:lf,AuthEc2imagesDescribeImagesIdRoute:df,AuthEc2instancesDescribeInstancesIdRoute:pf,AuthEc2internetGatewaysDescribeInternetGatewaysIdRoute:hf,AuthEc2keyDescribeKeyPairsIdRoute:_f,AuthEc2launchTemplatesDescribeLaunchTemplatesIdRoute:yf,AuthEc2loadBalancersDescribeLoadBalancersIdRoute:xf,AuthEc2natGatewaysDescribeNatGatewaysIdRoute:Cf,AuthEc2placementGroupsDescribePlacementGroupsIdRoute:Tf,AuthEc2routeTablesDescribeRouteTablesIdRoute:Df,AuthEc2securityGroupsDescribeSecurityGroupsIdRoute:kf,AuthEc2snapshotsDescribeSnapshotsIdRoute:jf,AuthEc2subnetDescribeSubnetsIdRoute:Nf,AuthEc2targetGroupsDescribeTargetGroupsIdRoute:Ff,AuthEc2volumesDescribeVolumesIdRoute:Lf,AuthEc2volumesModifyVolumeIdRoute:Rf,AuthEc2vpcDescribeVpcsIdRoute:Bf,AuthEcrrepositoriesListRepositoriesIdRoute:Q,AuthEcsclustersListClustersClusterNameRoute:Uf,AuthEksclustersListClustersClusterNameRoute:Gf,AuthIamgroupsListGroupsGroupNameRoute:qf,AuthIaminstanceProfilesListInstanceProfilesInstanceProfileNameRoute:Yf,AuthIampoliciesListPoliciesPolicyArnRoute:Zf,AuthIamrolesListRolesRoleNameRoute:$f,AuthIamusersListUsersUserNameRoute:$,AuthRdsdbInstancesDescribeDbInstancesIdRoute:np,AuthRdsparameterGroupsDescribeDbParameterGroupsNameRoute:ip,AuthRdssnapshotsDescribeDbSnapshotsIdRoute:op,AuthRdssnapshotsRestoreDbInstanceFromDbSnapshotIdRoute:sp,AuthRdssubnetGroupsDescribeDbSubnetGroupsNameRoute:lp,AuthEc2elasticIpsDescribeAddressesIndexRoute:cf,AuthEc2imagesDescribeImagesIndexRoute:uf,AuthEc2instancesDescribeInstancesIndexRoute:ff,AuthEc2internetGatewaysDescribeInternetGatewaysIndexRoute:mf,AuthEc2keyDescribeKeyPairsIndexRoute:gf,AuthEc2launchTemplatesDescribeLaunchTemplatesIndexRoute:vf,AuthEc2loadBalancersDescribeLoadBalancersIndexRoute:bf,AuthEc2natGatewaysDescribeNatGatewaysIndexRoute:Sf,AuthEc2placementGroupsDescribePlacementGroupsIndexRoute:wf,AuthEc2routeTablesDescribeRouteTablesIndexRoute:Ef,AuthEc2securityGroupsDescribeSecurityGroupsIndexRoute:Of,AuthEc2snapshotsDescribeSnapshotsIndexRoute:Af,AuthEc2subnetDescribeSubnetsIndexRoute:Mf,AuthEc2targetGroupsDescribeTargetGroupsIndexRoute:Pf,AuthEc2volumesDescribeVolumesIndexRoute:If,AuthEc2vpcDescribeVpcsIndexRoute:zf,AuthEcrrepositoriesListRepositoriesIndexRoute:Vf,AuthEcsclustersListClustersIndexRoute:Hf,AuthEksclustersListClustersIndexRoute:Wf,AuthIamgroupsListGroupsIndexRoute:Kf,AuthIaminstanceProfilesListInstanceProfilesIndexRoute:Jf,AuthIampoliciesListPoliciesIndexRoute:Xf,AuthIamrolesListRolesIndexRoute:Qf,AuthIamusersListUsersIndexRoute:ep,AuthRdsdbInstancesDescribeDbInstancesIndexRoute:tp,AuthRdsparameterGroupsDescribeDbParameterGroupsIndexRoute:rp,AuthRdssnapshotsDescribeDbSnapshotsIndexRoute:ap,AuthRdssubnetGroupsDescribeDbSubnetGroupsIndexRoute:cp,AuthEcsclustersListClustersClusterNameServicesServiceNameRoute:mp,AuthEcsclustersListClustersClusterNameTasksTaskIdRoute:hp},bp={AuthRouteRoute:X._addFileChildren(yp),LoginRoute:_d},xp=su._addFileChildren(bp)._addFileTypes(),Sp=tu(),Cp=Wo({routeTree:xp,context:{queryClient:Sp},defaultPreload:`intent`,scrollRestoration:!0,defaultStructuralSharing:!0,defaultPreloadStaleTime:0});async function wp(e){try{await Ye()}catch(t){e.render((0,B.jsxs)(`div`,{style:{fontFamily:`sans-serif`,margin:`4rem auto`,maxWidth:`40rem`},children:[(0,B.jsx)(`h1`,{children:`Console unavailable`}),(0,B.jsx)(`p`,{children:`This cluster did not report its region, so the console cannot sign requests. Check that the serving node has a region set in its configuration.`}),(0,B.jsx)(`pre`,{children:t instanceof Error?t.message:String(t)})]}));return}e.render((0,B.jsx)(z.StrictMode,{children:(0,B.jsx)(ss,{defaultTheme:`dark`,storageKey:`spinifex-ui-theme`,children:(0,B.jsx)(p,{client:Sp,children:(0,B.jsx)(Tn,{children:(0,B.jsx)(Il,{children:(0,B.jsx)(qo,{router:Cp})})})})})}))}var Tp=document.querySelector(`#app`);Tp&&!Tp.innerHTML&&await wp(is.createRoot(Tp)); \ No newline at end of file diff --git a/spinifex/services/spinifexui/frontend/dist/assets/nodes-CWh9D30I.js b/spinifex/services/spinifexui/frontend/dist/assets/nodes-DExo87Po.js similarity index 67% rename from spinifex/services/spinifexui/frontend/dist/assets/nodes-CWh9D30I.js rename to spinifex/services/spinifexui/frontend/dist/assets/nodes-DExo87Po.js index 03deff1ce..c7d275c91 100644 --- a/spinifex/services/spinifexui/frontend/dist/assets/nodes-CWh9D30I.js +++ b/spinifex/services/spinifexui/frontend/dist/assets/nodes-DExo87Po.js @@ -1 +1 @@ -import{n as e,o as t,r as n,t as r}from"./compiler-runtime-D_vZfn79.js";import{t as i}from"./useQuery-2EKf7AyV.js";import{t as a}from"./link-Dhy4xOXd.js";import{n as o}from"./redirect-B4OxYbs2.js";import{on as s}from"./cluster-config-xw_Q7X1e.js";import{t as c}from"./chevron-down-Dt4q6d24.js";import{t as l}from"./chevron-right-c57whaks.js";import{n as u}from"./admin-context-CXmiyIcc.js";import{t as d}from"./page-heading-vksh_67w.js";import{t as f}from"./badge-B_ExXcw2.js";import{o as p,r as m,s as h,t as g}from"./card-BXl0Qff8.js";import{o as _,r as v}from"./admin-BUkrFIlI.js";var y=r(),b=t(n(),1),x=e();function S(e){if(e.mig_enabled){let t=e.slices??[];return`${t.filter(e=>e.instance_id).length} / ${t.length}`}return`${+!!e.instance_id} / 1`}function C(e){let t=(0,y.c)(20),{nodes:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=new Set,t[0]=r):r=t[0];let[i,a]=(0,b.useState)(r),o;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(o=e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},t[1]=o):o=t[1];let u=o,d,p,m,h;if(t[2]!==i||t[3]!==n){let e=n.flatMap(T);h=`overflow-x-auto`,p=`w-full text-xs`,t[8]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,x.jsx)(`thead`,{children:(0,x.jsxs)(`tr`,{className:`border-b text-left text-muted-foreground`,children:[(0,x.jsx)(`th`,{className:`w-6 pb-1`,children:(0,x.jsx)(`span`,{className:`sr-only`,children:`Expand`})}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Node`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Model`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`VRAM`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Mode`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Profile`}),(0,x.jsx)(`th`,{className:`pb-1 font-medium`,children:`Used / Total`})]})}),t[8]=m):m=t[8];let r;t[9]===i?r=t[10]:(r=e=>{let{node:t,gpu:n}=e,r=`${t}:${n.pci_address}`,a=n.slices??[],o=n.mig_enabled&&a.length>0,d=o&&i.has(r);return(0,x.jsxs)(b.Fragment,{children:[(0,x.jsxs)(`tr`,{className:`border-b last:border-0`,children:[(0,x.jsx)(`td`,{className:`py-1.5`,children:o&&(0,x.jsx)(`button`,{"aria-expanded":d,"aria-label":d?`Collapse slices`:`Expand slices`,onClick:()=>{u(r)},type:`button`,children:d?(0,x.jsx)(c,{className:`size-3.5`}):(0,x.jsx)(l,{className:`size-3.5`})})}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono font-medium`,children:t}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:n.model}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:s(n.vram_mib)}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:(0,x.jsx)(f,{className:`text-[0.625rem]`,variant:`secondary`,children:n.mig_enabled?`MIG`:`Passthrough`})}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:n.mig_profile??`—`}),(0,x.jsx)(`td`,{className:`py-1.5 font-mono`,children:S(n)})]}),d&&a.map(w)]},r)},t[9]=i,t[10]=r),d=e.map(r),t[2]=i,t[3]=n,t[4]=d,t[5]=p,t[6]=m,t[7]=h}else d=t[4],p=t[5],m=t[6],h=t[7];let g;t[11]===d?g=t[12]:(g=(0,x.jsx)(`tbody`,{children:d}),t[11]=d,t[12]=g);let _;t[13]!==p||t[14]!==m||t[15]!==g?(_=(0,x.jsxs)(`table`,{className:p,children:[m,g]}),t[13]=p,t[14]=m,t[15]=g,t[16]=_):_=t[16];let v;return t[17]!==h||t[18]!==_?(v=(0,x.jsx)(`div`,{className:h,children:_}),t[17]=h,t[18]=_,t[19]=v):v=t[19],v}function w(e){return(0,x.jsxs)(`tr`,{className:`border-b text-muted-foreground last:border-0`,children:[(0,x.jsx)(`td`,{className:`py-1`,children:(0,x.jsx)(`span`,{className:`sr-only`,children:`Slice`})}),(0,x.jsxs)(`td`,{className:`py-1 pr-4 font-mono`,colSpan:2,children:[`↳ slice `,e.gi_id]}),(0,x.jsx)(`td`,{className:`py-1 pr-4`,children:s(e.vram_mib)}),(0,x.jsx)(`td`,{className:`py-1 pr-4`,children:(0,x.jsx)(`span`,{className:`sr-only`,children:`Mode`})}),(0,x.jsx)(`td`,{className:`py-1 pr-4 font-mono`,children:e.profile}),(0,x.jsx)(`td`,{className:`py-1 font-mono`,children:e.instance_id?(0,x.jsx)(a,{className:`text-primary hover:underline`,params:{id:e.instance_id},to:`/ec2/describe-instances/$id`,children:e.instance_id}):(0,x.jsx)(`span`,{className:`text-green-600`,children:`free`})})]},e.gi_id)}function T(e){return(e.gpus??[]).map(t=>({node:e.node,gpu:t}))}function E(e){let t=Math.floor(e/86400),n=Math.floor(e%86400/3600);if(t>0)return`${t}d ${n}h`;let r=Math.floor(e%3600/60);return n>0?`${n}h ${r}m`:`${r}m`}function D(e){return e>=1?`${e.toFixed(1)}Gi`:`${Math.round(e*1024)}Mi`}function O(e){let t=Math.floor(Date.now()/1e3-e);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}function k(){let e=(0,y.c)(30),{isAdmin:t}=u(),n;e[0]===t?n=e[1]:(n={...v,enabled:t,refetchInterval:5e3},e[0]=t,e[1]=n);let{data:r}=i(n),a;e[2]===t?a=e[3]:(a={..._,enabled:t,refetchInterval:5e3},e[2]=t,e[3]=a);let{data:s}=i(a);if(!t)throw o({to:`/`});let c;e[4]===r?.nodes?c=e[5]:(c=r?.nodes??[],e[4]=r?.nodes,e[5]=c);let l=c,f;e[6]===s?.vms?f=e[7]:(f=s?.vms??[],e[6]=s?.vms,e[7]=f);let b;e[8]===f?b=e[9]:(b=f.filter(N),e[8]=f,e[9]=b);let S=b,w;if(e[10]!==l){let t=new Map;for(let e of l)for(let n of e.instance_types??[]){let e=t.get(n.name);e?e.available+=n.available:t.set(n.name,{vcpu:n.vcpu,memory_gb:n.memory_gb,available:n.available})}w=[...t.entries()].map(M).toSorted(j),e[10]=l,e[11]=w}else w=e[11];let T=w,E;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,x.jsx)(d,{title:`Nodes`}),e[12]=E):E=e[12];let D;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,x.jsx)(p,{children:(0,x.jsx)(h,{className:`text-sm`,children:`Cluster Nodes`})}),e[13]=D):D=e[13];let O;e[14]===l?O=e[15]:(O=(0,x.jsxs)(g,{children:[D,(0,x.jsx)(m,{children:l.length===0?(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No nodes responding`}):(0,x.jsx)(P,{nodes:l})})]}),e[14]=l,e[15]=O);let k;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,x.jsx)(p,{children:(0,x.jsx)(h,{className:`text-sm`,children:`Elastic Compute Cloud (EC2)`})}),e[16]=k):k=e[16];let F;e[17]===S?F=e[18]:(F=(0,x.jsxs)(g,{children:[k,(0,x.jsx)(m,{children:S.length===0?(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No instances running`}):(0,x.jsx)(L,{vms:S})})]}),e[17]=S,e[18]=F);let I;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(I=(0,x.jsx)(p,{children:(0,x.jsx)(h,{className:`text-sm`,children:`Resource Usage`})}),e[19]=I):I=e[19];let R;e[20]!==T||e[21]!==l?(R=(0,x.jsxs)(g,{children:[I,(0,x.jsx)(m,{className:`space-y-4`,children:l.length===0?(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No data`}):(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(z,{nodes:l}),T.length>0&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`h4`,{className:`mt-4 text-xs font-medium text-muted-foreground`,children:`Instance Type Capacity`}),(0,x.jsx)(V,{instanceTypes:T})]})]})})]}),e[20]=T,e[21]=l,e[22]=R):R=e[22];let B;e[23]===l?B=e[24]:(B=l.some(A)&&(0,x.jsxs)(g,{children:[(0,x.jsx)(p,{children:(0,x.jsx)(h,{className:`text-sm`,children:`GPU Inventory`})}),(0,x.jsx)(m,{children:(0,x.jsx)(C,{nodes:l})})]}),e[23]=l,e[24]=B);let H;return e[25]!==F||e[26]!==R||e[27]!==B||e[28]!==O?(H=(0,x.jsxs)(x.Fragment,{children:[E,(0,x.jsxs)(`div`,{className:`space-y-6`,children:[O,F,R,B]})]}),e[25]=F,e[26]=R,e[27]=B,e[28]=O,e[29]=H):H=e[29],H}function A(e){return(e.gpus?.length??0)>0}function j(e,t){return e.name.localeCompare(t.name)}function M(e){let[t,n]=e;return{name:t,...n}}function N(e){return!e.managed_by}function P(e){let t=(0,y.c)(5),{nodes:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,x.jsx)(`thead`,{children:(0,x.jsxs)(`tr`,{className:`border-b text-left text-muted-foreground`,children:[(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Name`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Status`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Roles`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`IP`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Region`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`AZ`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Uptime`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`EC2`}),(0,x.jsx)(`th`,{className:`pb-1 font-medium`,children:`Services`})]})}),t[0]=r):r=t[0];let i;t[1]===n?i=t[2]:(i=n.map(F),t[1]=n,t[2]=i);let a;return t[3]===i?a=t[4]:(a=(0,x.jsx)(`div`,{className:`overflow-x-auto`,children:(0,x.jsxs)(`table`,{className:`w-full text-xs`,children:[r,(0,x.jsx)(`tbody`,{children:i})]})}),t[3]=i,t[4]=a),a}function F(e){let t=[e.nats_role?`nats:${e.nats_role}`:null,e.predastore_role?`predastore:${e.predastore_role}`:null].filter(Boolean).join(`,`);return(0,x.jsxs)(`tr`,{className:`border-b last:border-0`,children:[(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono font-medium`,children:e.node}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:(0,x.jsx)(f,{variant:e.status===`Ready`?`default`:`secondary`,className:`text-[0.625rem]`,children:e.status})}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono text-muted-foreground`,children:t||`-`}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:e.host}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:e.region}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:e.az}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:E(e.uptime)}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:e.vm_count}),(0,x.jsx)(`td`,{className:`py-1.5`,children:(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:e.services?.join(`,`)??`-`})})]},e.node)}function I(e){return e?e.profile?`${e.profile} ${s(e.vram_mib)}`:`${e.model} ${s(e.vram_mib)}`:`-`}function L(e){let t=(0,y.c)(5),{vms:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,x.jsx)(`thead`,{children:(0,x.jsxs)(`tr`,{className:`border-b text-left text-muted-foreground`,children:[(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Instance`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Status`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Type`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`vCPU`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Memory`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`GPU`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Node`}),(0,x.jsx)(`th`,{className:`pb-1 font-medium`,children:`Age`})]})}),t[0]=r):r=t[0];let i;t[1]===n?i=t[2]:(i=n.map(R),t[1]=n,t[2]=i);let a;return t[3]===i?a=t[4]:(a=(0,x.jsx)(`div`,{className:`overflow-x-auto`,children:(0,x.jsxs)(`table`,{className:`w-full text-xs`,children:[r,(0,x.jsx)(`tbody`,{children:i})]})}),t[3]=i,t[4]=a),a}function R(e){return(0,x.jsxs)(`tr`,{className:`border-b last:border-0`,children:[(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:e.instance_id}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:(0,x.jsx)(f,{variant:e.status===`running`?`default`:`secondary`,className:`text-[0.625rem]`,children:e.status})}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:e.instance_type}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:e.vcpu}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:D(e.memory_gb)}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:I(e.gpu)}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:e.node}),(0,x.jsx)(`td`,{className:`py-1.5`,children:e.launch_time>0?O(e.launch_time):`-`})]},e.instance_id)}function z(e){let t=(0,y.c)(5),{nodes:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,x.jsx)(`thead`,{children:(0,x.jsxs)(`tr`,{className:`border-b text-left text-muted-foreground`,children:[(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Name`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`CPU (used/sched)`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`MEM (used/sched)`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`GPU (used/total)`}),(0,x.jsx)(`th`,{className:`pb-1 font-medium`,children:`EC2`})]})}),t[0]=r):r=t[0];let i;t[1]===n?i=t[2]:(i=n.map(B),t[1]=n,t[2]=i);let a;return t[3]===i?a=t[4]:(a=(0,x.jsx)(`div`,{className:`overflow-x-auto`,children:(0,x.jsxs)(`table`,{className:`w-full text-xs`,children:[r,(0,x.jsx)(`tbody`,{children:i})]})}),t[3]=i,t[4]=a),a}function B(e){let t=e.total_vcpu-(e.reserved_vcpu??0),n=e.total_mem_gb-(e.reserved_mem_gb??0);return(0,x.jsxs)(`tr`,{className:`border-b last:border-0`,children:[(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono font-medium`,children:e.node}),(0,x.jsxs)(`td`,{className:`py-1.5 pr-4 font-mono`,children:[e.alloc_vcpu,`/`,t]}),(0,x.jsxs)(`td`,{className:`py-1.5 pr-4 font-mono`,children:[D(e.alloc_mem_gb),`/`,D(n)]}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:e.total_gpus>0?`${e.alloc_gpus}/${e.total_gpus}`:`-`}),(0,x.jsx)(`td`,{className:`py-1.5`,children:e.vm_count})]},e.node)}function V(e){let t=(0,y.c)(5),{instanceTypes:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,x.jsx)(`thead`,{children:(0,x.jsxs)(`tr`,{className:`border-b text-left text-muted-foreground`,children:[(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Instance Type`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Available`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`vCPU`}),(0,x.jsx)(`th`,{className:`pb-1 font-medium`,children:`Memory`})]})}),t[0]=r):r=t[0];let i;t[1]===n?i=t[2]:(i=n.map(H),t[1]=n,t[2]=i);let a;return t[3]===i?a=t[4]:(a=(0,x.jsx)(`div`,{className:`overflow-x-auto`,children:(0,x.jsxs)(`table`,{className:`w-full text-xs`,children:[r,(0,x.jsx)(`tbody`,{children:i})]})}),t[3]=i,t[4]=a),a}function H(e){return(0,x.jsxs)(`tr`,{className:`border-b last:border-0`,children:[(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:e.name}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:e.available}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:e.vcpu}),(0,x.jsx)(`td`,{className:`py-1.5`,children:D(e.memory_gb)})]},e.name)}export{k as component,I as formatVMGPU}; \ No newline at end of file +import{n as e,o as t,r as n,t as r}from"./compiler-runtime-D_vZfn79.js";import{t as i}from"./useQuery-2EKf7AyV.js";import{t as a}from"./link-Dhy4xOXd.js";import{n as o}from"./redirect-B4OxYbs2.js";import{on as s}from"./cluster-config-xw_Q7X1e.js";import{t as c}from"./chevron-down-Dt4q6d24.js";import{t as l}from"./chevron-right-c57whaks.js";import{n as u}from"./admin-context-CXmiyIcc.js";import{t as d}from"./page-heading-vksh_67w.js";import{t as f}from"./badge-B_ExXcw2.js";import{o as p,r as m,s as h,t as g}from"./card-BXl0Qff8.js";import{o as _,r as v}from"./admin-BUkrFIlI.js";var y=r(),b=t(n(),1),x=e();function S(e){if(e.mig_enabled){let t=e.slices??[];return`${t.filter(e=>e.instance_id).length} / ${t.length}`}return`${+!!e.instance_id} / 1`}function C(e){let t=(0,y.c)(20),{nodes:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=new Set,t[0]=r):r=t[0];let[i,a]=(0,b.useState)(r),o;t[1]===Symbol.for(`react.memo_cache_sentinel`)?(o=e=>{a(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},t[1]=o):o=t[1];let u=o,d,p,m,h;if(t[2]!==i||t[3]!==n){let e=n.flatMap(T);h=`overflow-x-auto`,p=`w-full text-xs`,t[8]===Symbol.for(`react.memo_cache_sentinel`)?(m=(0,x.jsx)(`thead`,{children:(0,x.jsxs)(`tr`,{className:`border-b text-left text-muted-foreground`,children:[(0,x.jsx)(`th`,{className:`w-6 pb-1`,children:(0,x.jsx)(`span`,{className:`sr-only`,children:`Expand`})}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Node`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Model`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`VRAM`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Mode`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Profile`}),(0,x.jsx)(`th`,{className:`pb-1 font-medium`,children:`Used / Total`})]})}),t[8]=m):m=t[8];let r;t[9]===i?r=t[10]:(r=e=>{let{node:t,gpu:n}=e,r=`${t}:${n.pci_address}`,a=n.slices??[],o=n.mig_enabled&&a.length>0,d=o&&i.has(r);return(0,x.jsxs)(b.Fragment,{children:[(0,x.jsxs)(`tr`,{className:`border-b last:border-0`,children:[(0,x.jsx)(`td`,{className:`py-1.5`,children:o&&(0,x.jsx)(`button`,{"aria-expanded":d,"aria-label":d?`Collapse slices`:`Expand slices`,onClick:()=>{u(r)},type:`button`,children:d?(0,x.jsx)(c,{className:`size-3.5`}):(0,x.jsx)(l,{className:`size-3.5`})})}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono font-medium`,children:t}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:n.model}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:s(n.vram_mib)}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:(0,x.jsx)(f,{className:`text-[0.625rem]`,variant:`secondary`,children:n.mig_enabled?`MIG`:`Passthrough`})}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:n.mig_profile??`—`}),(0,x.jsx)(`td`,{className:`py-1.5 font-mono`,children:S(n)})]}),d&&a.map(w)]},r)},t[9]=i,t[10]=r),d=e.map(r),t[2]=i,t[3]=n,t[4]=d,t[5]=p,t[6]=m,t[7]=h}else d=t[4],p=t[5],m=t[6],h=t[7];let g;t[11]===d?g=t[12]:(g=(0,x.jsx)(`tbody`,{children:d}),t[11]=d,t[12]=g);let _;t[13]!==p||t[14]!==m||t[15]!==g?(_=(0,x.jsxs)(`table`,{className:p,children:[m,g]}),t[13]=p,t[14]=m,t[15]=g,t[16]=_):_=t[16];let v;return t[17]!==h||t[18]!==_?(v=(0,x.jsx)(`div`,{className:h,children:_}),t[17]=h,t[18]=_,t[19]=v):v=t[19],v}function w(e){return(0,x.jsxs)(`tr`,{className:`border-b text-muted-foreground last:border-0`,children:[(0,x.jsx)(`td`,{className:`py-1`,children:(0,x.jsx)(`span`,{className:`sr-only`,children:`Slice`})}),(0,x.jsxs)(`td`,{className:`py-1 pr-4 font-mono`,colSpan:2,children:[`↳ slice `,e.gi_id]}),(0,x.jsx)(`td`,{className:`py-1 pr-4`,children:s(e.vram_mib)}),(0,x.jsx)(`td`,{className:`py-1 pr-4`,children:(0,x.jsx)(`span`,{className:`sr-only`,children:`Mode`})}),(0,x.jsx)(`td`,{className:`py-1 pr-4 font-mono`,children:e.profile}),(0,x.jsx)(`td`,{className:`py-1 font-mono`,children:e.instance_id?(0,x.jsx)(a,{className:`text-primary hover:underline`,params:{id:e.instance_id},to:`/ec2/describe-instances/$id`,children:e.instance_id}):(0,x.jsx)(`span`,{className:`text-green-600`,children:`free`})})]},e.gi_id)}function T(e){return(e.gpus??[]).map(t=>({node:e.node,gpu:t}))}function E(e){let t=Math.floor(e/86400),n=Math.floor(e%86400/3600);if(t>0)return`${t}d ${n}h`;let r=Math.floor(e%3600/60);return n>0?`${n}h ${r}m`:`${r}m`}function D(e){return e>=1?`${e.toFixed(1)}Gi`:`${Math.round(e*1024)}Mi`}function O(e){let t=Math.floor(Date.now()/1e3-e);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d ${r%24}h`}function k(){let e=(0,y.c)(30),{isAdmin:t}=u(),n;e[0]===t?n=e[1]:(n={...v,enabled:t,refetchInterval:5e3},e[0]=t,e[1]=n);let{data:r}=i(n),a;e[2]===t?a=e[3]:(a={..._,enabled:t,refetchInterval:5e3},e[2]=t,e[3]=a);let{data:s}=i(a);if(!t)throw o({to:`/`});let c;e[4]===r?.nodes?c=e[5]:(c=r?.nodes??[],e[4]=r?.nodes,e[5]=c);let l=c,f;e[6]===s?.vms?f=e[7]:(f=s?.vms??[],e[6]=s?.vms,e[7]=f);let b;e[8]===f?b=e[9]:(b=f.filter(N),e[8]=f,e[9]=b);let S=b,w;if(e[10]!==l){let t=new Map;for(let e of l)for(let n of e.instance_types??[]){let e=t.get(n.name);e?e.available+=n.available:t.set(n.name,{vcpu:n.vcpu,memory_gb:n.memory_gb,available:n.available})}w=[...t.entries()].map(M).toSorted(j),e[10]=l,e[11]=w}else w=e[11];let T=w,E;e[12]===Symbol.for(`react.memo_cache_sentinel`)?(E=(0,x.jsx)(d,{title:`Nodes`}),e[12]=E):E=e[12];let D;e[13]===Symbol.for(`react.memo_cache_sentinel`)?(D=(0,x.jsx)(p,{children:(0,x.jsx)(h,{className:`text-sm`,children:`Cluster Nodes`})}),e[13]=D):D=e[13];let O;e[14]===l?O=e[15]:(O=(0,x.jsxs)(g,{children:[D,(0,x.jsx)(m,{children:l.length===0?(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No nodes responding`}):(0,x.jsx)(P,{nodes:l})})]}),e[14]=l,e[15]=O);let k;e[16]===Symbol.for(`react.memo_cache_sentinel`)?(k=(0,x.jsx)(p,{children:(0,x.jsx)(h,{className:`text-sm`,children:`Elastic Compute Cloud (EC2)`})}),e[16]=k):k=e[16];let F;e[17]===S?F=e[18]:(F=(0,x.jsxs)(g,{children:[k,(0,x.jsx)(m,{children:S.length===0?(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No instances running`}):(0,x.jsx)(L,{vms:S})})]}),e[17]=S,e[18]=F);let I;e[19]===Symbol.for(`react.memo_cache_sentinel`)?(I=(0,x.jsx)(p,{children:(0,x.jsx)(h,{className:`text-sm`,children:`Resource Usage`})}),e[19]=I):I=e[19];let R;e[20]!==T||e[21]!==l?(R=(0,x.jsxs)(g,{children:[I,(0,x.jsx)(m,{className:`space-y-4`,children:l.length===0?(0,x.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`No data`}):(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(z,{nodes:l}),T.length>0&&(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(`h4`,{className:`mt-4 text-xs font-medium text-muted-foreground`,children:`Instance Type Capacity`}),(0,x.jsx)(V,{instanceTypes:T})]})]})})]}),e[20]=T,e[21]=l,e[22]=R):R=e[22];let B;e[23]===l?B=e[24]:(B=l.some(A)&&(0,x.jsxs)(g,{children:[(0,x.jsx)(p,{children:(0,x.jsx)(h,{className:`text-sm`,children:`GPU Inventory`})}),(0,x.jsx)(m,{children:(0,x.jsx)(C,{nodes:l})})]}),e[23]=l,e[24]=B);let H;return e[25]!==F||e[26]!==R||e[27]!==B||e[28]!==O?(H=(0,x.jsxs)(x.Fragment,{children:[E,(0,x.jsxs)(`div`,{className:`space-y-6`,children:[O,F,R,B]})]}),e[25]=F,e[26]=R,e[27]=B,e[28]=O,e[29]=H):H=e[29],H}function A(e){return(e.gpus?.length??0)>0}function j(e,t){return e.name.localeCompare(t.name)}function M(e){let[t,n]=e;return{name:t,...n}}function N(e){return!e.managed_by}function P(e){let t=(0,y.c)(5),{nodes:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,x.jsx)(`thead`,{children:(0,x.jsxs)(`tr`,{className:`border-b text-left text-muted-foreground`,children:[(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Name`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Status`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Roles`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`IP`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Region`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`AZ`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Uptime`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`EC2`}),(0,x.jsx)(`th`,{className:`pb-1 font-medium`,children:`Services`})]})}),t[0]=r):r=t[0];let i;t[1]===n?i=t[2]:(i=n.map(F),t[1]=n,t[2]=i);let a;return t[3]===i?a=t[4]:(a=(0,x.jsx)(`div`,{className:`overflow-x-auto`,children:(0,x.jsxs)(`table`,{className:`w-full text-xs`,children:[r,(0,x.jsx)(`tbody`,{children:i})]})}),t[3]=i,t[4]=a),a}function F(e){let t=[e.nats_role?`nats:${e.nats_role}`:null,e.predastore_role?`predastore:${e.predastore_role}`:null].filter(Boolean).join(`,`);return(0,x.jsxs)(`tr`,{className:`border-b last:border-0`,children:[(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono font-medium`,children:e.node}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:(0,x.jsx)(f,{variant:e.status===`Ready`?`default`:`secondary`,className:`text-[0.625rem]`,children:e.status})}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono text-muted-foreground`,children:t||`-`}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:e.host}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:e.region}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:e.az}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:E(e.uptime)}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:e.vm_count}),(0,x.jsx)(`td`,{className:`py-1.5`,children:(0,x.jsx)(`span`,{className:`text-muted-foreground`,children:e.services?.join(`,`)??`-`})})]},e.node)}function I(e){return e?.length?e.map(e=>e.profile?`${e.profile} ${s(e.vram_mib)}`:`${e.model} ${s(e.vram_mib)}`).join(`, `):`-`}function L(e){let t=(0,y.c)(5),{vms:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,x.jsx)(`thead`,{children:(0,x.jsxs)(`tr`,{className:`border-b text-left text-muted-foreground`,children:[(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Instance`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Status`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Type`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`vCPU`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Memory`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`GPU`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Node`}),(0,x.jsx)(`th`,{className:`pb-1 font-medium`,children:`Age`})]})}),t[0]=r):r=t[0];let i;t[1]===n?i=t[2]:(i=n.map(R),t[1]=n,t[2]=i);let a;return t[3]===i?a=t[4]:(a=(0,x.jsx)(`div`,{className:`overflow-x-auto`,children:(0,x.jsxs)(`table`,{className:`w-full text-xs`,children:[r,(0,x.jsx)(`tbody`,{children:i})]})}),t[3]=i,t[4]=a),a}function R(e){return(0,x.jsxs)(`tr`,{className:`border-b last:border-0`,children:[(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:e.instance_id}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:(0,x.jsx)(f,{variant:e.status===`running`?`default`:`secondary`,className:`text-[0.625rem]`,children:e.status})}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:e.instance_type}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:e.vcpu}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:D(e.memory_gb)}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:I(e.gpus)}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:e.node}),(0,x.jsx)(`td`,{className:`py-1.5`,children:e.launch_time>0?O(e.launch_time):`-`})]},e.instance_id)}function z(e){let t=(0,y.c)(5),{nodes:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,x.jsx)(`thead`,{children:(0,x.jsxs)(`tr`,{className:`border-b text-left text-muted-foreground`,children:[(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Name`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`CPU (used/sched)`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`MEM (used/sched)`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`GPU (used/total)`}),(0,x.jsx)(`th`,{className:`pb-1 font-medium`,children:`EC2`})]})}),t[0]=r):r=t[0];let i;t[1]===n?i=t[2]:(i=n.map(B),t[1]=n,t[2]=i);let a;return t[3]===i?a=t[4]:(a=(0,x.jsx)(`div`,{className:`overflow-x-auto`,children:(0,x.jsxs)(`table`,{className:`w-full text-xs`,children:[r,(0,x.jsx)(`tbody`,{children:i})]})}),t[3]=i,t[4]=a),a}function B(e){let t=e.total_vcpu-(e.reserved_vcpu??0),n=e.total_mem_gb-(e.reserved_mem_gb??0);return(0,x.jsxs)(`tr`,{className:`border-b last:border-0`,children:[(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono font-medium`,children:e.node}),(0,x.jsxs)(`td`,{className:`py-1.5 pr-4 font-mono`,children:[e.alloc_vcpu,`/`,t]}),(0,x.jsxs)(`td`,{className:`py-1.5 pr-4 font-mono`,children:[D(e.alloc_mem_gb),`/`,D(n)]}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:e.total_gpus>0?`${e.alloc_gpus}/${e.total_gpus}`:`-`}),(0,x.jsx)(`td`,{className:`py-1.5`,children:e.vm_count})]},e.node)}function V(e){let t=(0,y.c)(5),{instanceTypes:n}=e,r;t[0]===Symbol.for(`react.memo_cache_sentinel`)?(r=(0,x.jsx)(`thead`,{children:(0,x.jsxs)(`tr`,{className:`border-b text-left text-muted-foreground`,children:[(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Instance Type`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`Available`}),(0,x.jsx)(`th`,{className:`pr-4 pb-1 font-medium`,children:`vCPU`}),(0,x.jsx)(`th`,{className:`pb-1 font-medium`,children:`Memory`})]})}),t[0]=r):r=t[0];let i;t[1]===n?i=t[2]:(i=n.map(H),t[1]=n,t[2]=i);let a;return t[3]===i?a=t[4]:(a=(0,x.jsx)(`div`,{className:`overflow-x-auto`,children:(0,x.jsxs)(`table`,{className:`w-full text-xs`,children:[r,(0,x.jsx)(`tbody`,{children:i})]})}),t[3]=i,t[4]=a),a}function H(e){return(0,x.jsxs)(`tr`,{className:`border-b last:border-0`,children:[(0,x.jsx)(`td`,{className:`py-1.5 pr-4 font-mono`,children:e.name}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:e.available}),(0,x.jsx)(`td`,{className:`py-1.5 pr-4`,children:e.vcpu}),(0,x.jsx)(`td`,{className:`py-1.5`,children:D(e.memory_gb)})]},e.name)}export{k as component,I as formatVMGPUs}; \ No newline at end of file diff --git a/spinifex/services/spinifexui/frontend/dist/index.html b/spinifex/services/spinifexui/frontend/dist/index.html index 7474db75c..6dc031efe 100644 --- a/spinifex/services/spinifexui/frontend/dist/index.html +++ b/spinifex/services/spinifexui/frontend/dist/index.html @@ -7,7 +7,7 @@ - + @@ -74,7 +74,7 @@ - + diff --git a/spinifex/services/spinifexui/frontend/src/queries/admin.ts b/spinifex/services/spinifexui/frontend/src/queries/admin.ts index f4c795572..72d0cbb09 100644 --- a/spinifex/services/spinifexui/frontend/src/queries/admin.ts +++ b/spinifex/services/spinifexui/frontend/src/queries/admin.ts @@ -73,7 +73,7 @@ interface VMInfo { node: string launch_time: number managed_by?: string - gpu?: VMGPUInfo + gpus?: VMGPUInfo[] } interface GetVMsOutput { diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/describe-instances/$id.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/describe-instances/$id.tsx index e9ce44c21..bd34a577c 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/describe-instances/$id.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/(instances)/describe-instances/$id.tsx @@ -331,7 +331,7 @@ function InstanceDetail() { {/* GPU */} - {isAdmin && } + {isAdmin && } {/* Block Device Mappings */} {instance.BlockDeviceMappings && diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/gpu-detail-card.test.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/gpu-detail-card.test.tsx index 74232be13..69f65eca9 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/gpu-detail-card.test.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/gpu-detail-card.test.tsx @@ -6,8 +6,11 @@ import type { VMGPUInfo } from "@/queries/admin" import { GpuDetailCard } from "./gpu-detail-card" describe("GpuDetailCard", () => { - it("renders nothing when no gpu is attached", () => { - const { container } = render() + it("renders nothing when no GPUs are attached", () => { + const { container, rerender } = render() + expect(container).toBeEmptyDOMElement() + + rerender() expect(container).toBeEmptyDOMElement() }) @@ -18,7 +21,7 @@ describe("GpuDetailCard", () => { profile: "1g.24gb", mdev_path: "/sys/bus/mdev/devices/abc-123", } - render() + render() expect(screen.getByText("GPU")).toBeInTheDocument() expect(screen.getByText("RTX Pro 6000 Blackwell SE")).toBeInTheDocument() @@ -36,10 +39,33 @@ describe("GpuDetailCard", () => { vram_mib: 24_576, pci_address: "0000:01:00.0", } - render() + render() expect(screen.getByText("PCIe passthrough")).toBeInTheDocument() expect(screen.getByText("0000:01:00.0")).toBeInTheDocument() expect(screen.queryByText("Profile")).not.toBeInTheDocument() }) + + it("renders every attached GPU in attachment order", () => { + const gpus: VMGPUInfo[] = [ + { + model: "RTX 3090", + vram_mib: 24_576, + pci_address: "0000:01:00.0", + }, + { + model: "RTX 3090", + vram_mib: 24_576, + pci_address: "0000:02:00.0", + }, + ] + render() + + expect(screen.getByText("GPUs (2)")).toBeInTheDocument() + expect(screen.getByText("GPU 1")).toBeInTheDocument() + expect(screen.getByText("GPU 2")).toBeInTheDocument() + expect(screen.getByText("0000:01:00.0")).toBeInTheDocument() + expect(screen.getByText("0000:02:00.0")).toBeInTheDocument() + expect(screen.getAllByText("RTX 3090")).toHaveLength(2) + }) }) diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/gpu-detail-card.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/gpu-detail-card.tsx index 73d628808..178d35057 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/gpu-detail-card.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/ec2/-components/gpu-detail-card.tsx @@ -3,27 +3,43 @@ import { DetailRow } from "@/components/detail-row" import { formatVRAMMiB } from "@/lib/utils" import type { VMGPUInfo } from "@/queries/admin" -export function GpuDetailCard({ gpu }: { gpu?: VMGPUInfo }) { - if (!gpu) { +export function GpuDetailCard({ gpus }: { gpus?: VMGPUInfo[] }) { + if (!gpus?.length) { return null } return ( - GPU - - - - - {gpu.profile && } - {gpu.mdev_path && } - {gpu.pci_address && ( - - )} - + + {gpus.length === 1 ? "GPU" : `GPUs (${gpus.length})`} + + {gpus.map((gpu, index) => ( +
+ {gpus.length > 1 && ( +

+ GPU {index + 1} +

+ )} + + + + + {gpu.profile && } + {gpu.mdev_path && ( + + )} + {gpu.pci_address && ( + + )} + +
+ ))}
) } diff --git a/spinifex/services/spinifexui/frontend/src/routes/_auth/nodes.tsx b/spinifex/services/spinifexui/frontend/src/routes/_auth/nodes.tsx index 1fafa651e..8adb6cd93 100644 --- a/spinifex/services/spinifexui/frontend/src/routes/_auth/nodes.tsx +++ b/spinifex/services/spinifexui/frontend/src/routes/_auth/nodes.tsx @@ -240,14 +240,17 @@ function NodesTable({ nodes }: { nodes: NodeInfo[] }) { ) } -export function formatVMGPU(gpu: VMInfo["gpu"]): string { - if (!gpu) { +export function formatVMGPUs(gpus: VMInfo["gpus"]): string { + if (!gpus?.length) { return "-" } - if (gpu.profile) { - return `${gpu.profile} ${formatVRAMMiB(gpu.vram_mib)}` - } - return `${gpu.model} ${formatVRAMMiB(gpu.vram_mib)}` + return gpus + .map((gpu) => + gpu.profile + ? `${gpu.profile} ${formatVRAMMiB(gpu.vram_mib)}` + : `${gpu.model} ${formatVRAMMiB(gpu.vram_mib)}`, + ) + .join(", ") } function VMsTable({ vms }: { vms: VMInfo[] }) { @@ -281,7 +284,7 @@ function VMsTable({ vms }: { vms: VMInfo[] }) { {vm.instance_type} {vm.vcpu} {formatMemory(vm.memory_gb)} - {formatVMGPU(vm.gpu)} + {formatVMGPUs(vm.gpus)} {vm.node} {vm.launch_time > 0 ? formatAge(vm.launch_time) : "-"} diff --git a/spinifex/types/node.go b/spinifex/types/node.go index d778946f2..88e680dc4 100644 --- a/spinifex/types/node.go +++ b/spinifex/types/node.go @@ -27,7 +27,7 @@ type GPUInfo struct { Slices []GPUSliceInfo `json:"slices,omitempty"` } -// VMGPUInfo describes the GPU attached to a VM. +// VMGPUInfo describes one GPU attached to a VM. type VMGPUInfo struct { Model string `json:"model"` VRAMMiB int64 `json:"vram_mib"` @@ -93,8 +93,8 @@ type VMInfo struct { // ManagedBy is the Spinifex platform component that owns this VM // (e.g. "elbv2"). Empty for customer VMs. The UI uses this to filter // system-managed resources out of customer-facing listings. - ManagedBy string `json:"managed_by,omitempty"` - GPU *VMGPUInfo `json:"gpu,omitempty"` + ManagedBy string `json:"managed_by,omitempty"` + GPUs []VMGPUInfo `json:"gpus,omitempty"` // Health is a display label for instance health: "ok", "impaired", // "recovering", or "-" for non-running VMs. CrashCount is the lifetime // crash tally within the current restart window.