update 2026-10-11 21:59:08

This commit is contained in:
action committed 2026-10-11 21:59:08 +08:00
1 parent 219ad87c1a
commit 4f0804a849
175 files changed
+1300 -15821

No files matched your search

-104
View File
@@ -1,104 +0,0 @@
# SPDX-License-Identifier: GPL-2.0-only
include $(TOPDIR)/rules.mk
PKG_NAME:=honk
PKG_VERSION:=2026.10.9_pre3
PKG_RELEASE:=1
# Raw upstream release tag. It keeps the dots in qualifiers (e.g. v0.0.1.beta.49)
# because that is what the GitHub release asset name uses.
HONK_RELEASE_TAG:=debug.2026.10.9.native-api.3
HONK_ASSET_TAG:=debug
# SHA256 of each release tarball, kept in sync by scripts/update_honk_version.sh.
HONK_HASH_X86_64:=179dac725195f04899ae871b9fbcf47deec4b99f6b30c539296d31fdcd9a8c2e
HONK_HASH_AARCH64:=6bcf738b8c618d9c87a412fa3dbb976e041349f6614ebd1ea2c7044ede3a4d48
PKG_LICENSE:=AGPL-3.0-only
PKG_LICENSE_FILE:=LICENSE
PKG_MAINTAINER:=luci-app-honk maintainers
ifeq ($(ARCH),x86_64)
HONK_TARGET:=x86_64-unknown-linux-musl
HONK_HASH:=$(HONK_HASH_X86_64)
else ifeq ($(ARCH),aarch64)
HONK_TARGET:=aarch64-unknown-linux-musl
HONK_HASH:=$(HONK_HASH_AARCH64)
endif
# Default to the stock-malloc build: lower RSS high-water on small gateways.
# Use an empty suffix to switch back to the mimalloc build (faster QUIC).
HONK_SUFFIX:=-stock
HONK_ASSET:=honk-core-$(HONK_ASSET_TAG)-$(HONK_TARGET)$(HONK_SUFFIX).tar.gz
PKG_SOURCE:=$(HONK_ASSET)
PKG_SOURCE_URL:=https://github.com/Glassyiris/honk/releases/download/$(HONK_RELEASE_TAG)/
PKG_HASH:=$(HONK_HASH)
include $(INCLUDE_DIR)/package.mk
define Package/honk
SECTION:=net
CATEGORY:=Network
SUBMENU:=Web Servers/Proxies
TITLE:=honk - eBPF transparent proxy engine (dae-compatible)
URL:=https://github.com/Glassyiris/honk
DEPENDS:=@(x86_64||aarch64) \
+ca-bundle +ip-full \
+kmod-sched-core +kmod-sched-bpf +kmod-veth +kmod-nft-queue \
+v2ray-geoip +v2ray-geosite \
+@KERNEL_XDP_SOCKETS \
+HONK_USE_VMLINUX_BTF:vmlinux-btf
endef
define Package/honk/config
choice
prompt "BTF source for CO-RE"
default HONK_USE_KERNEL_BTF
depends on PACKAGE_honk
config HONK_USE_KERNEL_BTF
bool "Use kernel BTF (integrated)"
depends on KERNEL_DEBUG_INFO_BTF
config HONK_USE_VMLINUX_BTF
bool "Use vmlinux-btf package"
endchoice
endef
define Package/honk/conffiles
/etc/honk/config.dae
/etc/honk/config.d/
/etc/honk/state/
/etc/config/honk
endef
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(TAR) -xzf $(DL_DIR)/$(PKG_SOURCE) -C $(PKG_BUILD_DIR) --strip-components=1
endef
define Build/Compile
true
endef
define Package/honk/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/honk-core $(1)/usr/bin/honk-core
$(INSTALL_DIR) $(1)/etc/honk/config.d
$(INSTALL_CONF) $(CURDIR)/files/config.dae $(1)/etc/honk/config.dae
$(INSTALL_CONF) $(CURDIR)/files/config.d/node.dae $(1)/etc/honk/config.d/node.dae
$(INSTALL_CONF) $(CURDIR)/files/config.d/route.dae $(1)/etc/honk/config.d/route.dae
$(INSTALL_CONF) $(CURDIR)/files/config.d/dns.dae $(1)/etc/honk/config.d/dns.dae
$(INSTALL_CONF) $(CURDIR)/files/config.d/api.dae $(1)/etc/honk/config.d/api.dae
$(INSTALL_DIR) $(1)/etc/config
$(INSTALL_CONF) $(CURDIR)/files/honk.config $(1)/etc/config/honk
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) $(CURDIR)/files/honk.init $(1)/etc/init.d/honk
endef
$(eval $(call BuildPackage,honk))
View File
Whitespace-only changes.
-24
View File
@@ -1,24 +0,0 @@
# dns.dae
dns {
bind: 'tcp+udp://[::]:53530'
client_subnet: auto
max_cache_size: 50000
#ipversion_prefer: 4
upstream {
local: 'udp://127.0.0.1:53' -> direct
remote: 'tcp+udp://dns.google:53'
}
routing {
request {
qtype(https) -> reject
qname(geosite: gfw) -> remote
fallback: local
}
response {
upstream(remote) -> accept
qname(geosite: private) -> accept
ip(geoip: cn) -> accept
fallback: remote
}
}
}
-35
View File
@@ -1,35 +0,0 @@
# node.dae
node {
node1: 'xxx'
node2: 'xxx'
}
subscription {
# 短形式:默认 86400s 刷新一次
sub: 'http://sub'
# 短形式 + UA:仍然只能默认 86400s
sub_ua: 'http://sub'(honk/1.0 like)
# 块形式:可以自定义定时刷新周期
sub2: {
url: 'http://sub'
ua: 'honk/1.0'
interval: '10000s' # 每 10000 秒刷新一次
}
# 禁用定期刷新
sub3: {
url: 'http://sub'
interval: 0
}
}
group {
proxy {
filter: subtag(sub) && !name(keyword: 'ExpireAt:')
filter: name(node1, node2)
policy: score
}
}
-27
View File
@@ -1,27 +0,0 @@
# route.dae
routing {
pname(dnsmasq, zerotier-one) -> direct(must)
dip(224.0.0.0/3, 'ff00::/8', geoip: private) -> direct
domain(geosite: category-bank-cn, geosite: boc@!cn, geosite: synology) -> direct
# block quic, if u node has poor quic support, enable this line
# l4proto(udp) && dport(443) -> block
domain(geosite: spotify) -> proxy
domain(geosite: category-doh) -> proxy
domain(geosite: tiktok) -> proxy
domain(geosite: category-ai-!cn, geosite: github) -> proxy
domain(geosite: gfw) -> proxy
dip(geoip: telegram) -> proxy
dip(geoip: cn) -> direct
# geoip:cn always using chiness asn, can use domain rule to override
# domain(geosite: cn) -> direct
# using proxy for ssh, http, https, and common ports, avoid (bt, or other p2p)
# dport(22, 80, 443, 8080, 6443, 9090) -> proxy
# fallback: direct
fallback: proxy
}
-31
View File
@@ -1,31 +0,0 @@
# config.dae
# Load all honk files placed in ./config.d/.
include {
config.d/*.dae
}
global {
log_level: warn
check_interval: 600s
check_tolerance: 30ms
lan_interface: br-lan
wan_interface: auto
auto_config_kernel_parameter: true
disable_waiting_network: false
data_dir: '/etc/honk'
log_file: '/var/log/honk/honk.log'
store_subscribe: true
# if u not using dns bind, set dial_mode to domain++ prefer
dial_mode: domain
bootstrap_resolver: '223.5.5.5:53'
tcp_check_url: 'https://www.gstatic.com/generate_204'
tcp_check_http_method: HEAD
udp_check_dns: 'dns.google.com:53', '8.8.8.8', '2001:4860:4860::8888'
}
assets {
geodata {
geosite: 'https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/release/geosite.dat'
geoip: 'https://raw.githubusercontent.com/QiuSimons/geoip-moedove/refs/heads/main/geoip.dat'
}
}
-7
View File
@@ -1,7 +0,0 @@
config honk 'config'
option enabled '0'
option advanced '0'
option dashboard 'none'
option config_file '/etc/honk/config.dae'
-122
View File
@@ -1,122 +0,0 @@
#!/bin/sh /etc/rc.common
USE_PROCD=1
START=96
STOP=10
extra_command "hot_reload" "Hot-reload service"
CONF="honk"
PROG="/usr/bin/honk-core"
# honk-core hardcodes dae-compatible datapath names (dae0/dae0peer + daens);
# these are the real interface/netns names, not leftover dae config.
HONK_HOST_IFACE="dae0"
HONK_PEER_IFACE="dae0peer"
HONK_NETNS_NAME="daens"
HONK_NETNS_PATH="/run/netns/$HONK_NETNS_NAME"
RESOLV_HONK="/tmp/resolv.conf.honk"
set_chmod_640() {
mkdir -p /etc/honk/config.d /etc/honk/state /var/log/honk
chmod -R u=rwX,go= /etc/honk 2>/dev/null || true
chmod 700 /etc/honk /etc/honk/config.d /etc/honk/state 2>/dev/null || true
}
cleanup_netns() {
ip netns del "$HONK_NETNS_NAME" 2>/dev/null || true
umount "$HONK_NETNS_PATH" 2>/dev/null || true
rm -f "$HONK_NETNS_PATH" 2>/dev/null || true
ip link del "$HONK_HOST_IFACE" 2>/dev/null || true
ip link del "$HONK_PEER_IFACE" 2>/dev/null || true
}
hijack_resolv_conf() {
grep -q ' /tmp/resolv\.conf ' /proc/mounts && return 0
local dns_list WANS
. /lib/functions/network.sh
unset -v __NETWORK_CACHE
__network_ifstatus WANS "" "[@.route[@.target='0.0.0.0' && !@.table]].interface" 2>/dev/null
set -- $WANS
if [ $# -eq 1 ]; then
dns_list=$(ubus call "network.interface.$1" status 2>/dev/null | \
jsonfilter -e '@["dns-server"][*]' 2>/dev/null)
if [ -z "$dns_list" ] && [ -f "/tmp/resolv.conf.d/resolv.conf.auto" ]; then
dns_list=$(awk '/^nameserver/{print $2}' "/tmp/resolv.conf.d/resolv.conf.auto")
fi
fi
[ -z "$dns_list" ] && dns_list="119.29.29.29 223.5.5.5"
[ -f /tmp/resolv.conf ] || touch /tmp/resolv.conf
grep -E '^(search|domain) ' /tmp/resolv.conf > "$RESOLV_HONK" 2>/dev/null
for dns in $dns_list; do
echo "nameserver $dns" >> "$RESOLV_HONK"
done
mount --bind "$RESOLV_HONK" /tmp/resolv.conf
mount -o remount,ro,bind /tmp/resolv.conf
}
restore_resolv_conf() {
while grep -q ' /tmp/resolv\.conf ' /proc/mounts; do
mount -o remount,rw,bind /tmp/resolv.conf 2>/dev/null
umount /tmp/resolv.conf 2>/dev/null || break
done
rm -f "$RESOLV_HONK"
}
start_service() {
local enabled config_file
config_load "$CONF"
config_get_bool enabled "config" "enabled" "0"
[ "$enabled" -eq "1" ] || return 1
config_get config_file "config" "config_file" "/etc/honk/config.dae"
if [ ! -x "$PROG" ]; then
logger -t honk "not starting: $PROG is missing or not executable"
return 1
fi
set_chmod_640
cleanup_netns
hijack_resolv_conf
procd_open_instance "$CONF"
procd_set_param env DAE_LOCATION_ASSET="/usr/share/v2ray"
procd_set_param command "$PROG" --config "$config_file"
procd_set_param netdev "$HONK_HOST_IFACE" "$HONK_PEER_IFACE"
procd_set_param limits core="unlimited"
procd_set_param limits nofile="1000000 1000000"
procd_set_param term_timeout 8
procd_set_param respawn 3600 5 5
procd_set_param stderr 1
procd_close_instance
}
service_stopped() {
restore_resolv_conf
cleanup_netns
}
reload_service() {
stop
start
}
service_triggers() {
procd_add_reload_trigger "$CONF"
}
hot_reload() {
set_chmod_640
if /etc/init.d/honk running; then
"$PROG" reload
else
start
fi
}
+47
View File
@@ -0,0 +1,47 @@
name: Build
on:
push:
tags:
- v*
jobs:
build:
name: Build ${{ matrix.arch }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
arch:
- aarch64_generic
- i386_pentium-mmx
- loongarch64_generic
- mips_mips32
- mipsel_24kc
- mipsel_mips32
- x86_64
steps:
- uses: actions/checkout@main
with:
fetch-depth: 0
- name: Building packages
uses: sbwml/openwrt-gh-action-sdk@go1.24
env:
ARCH: ${{ matrix.arch }}-openwrt-24.10
FEEDNAME: packages_ci
PACKAGES: luci-app-eqosplus
NO_REFRESH_CHECK: true
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.arch }}
path: bin/packages/${{ matrix.arch }}/packages_ci/*.ipk
- name: Upload packages
uses: ncipollo/release-action@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
allowUpdates: true
replacesArtifacts: true
artifacts: "bin/packages/${{ matrix.arch }}/packages_ci/*.ipk"
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 sirpdboy
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+39
View File
@@ -0,0 +1,39 @@
#
# Copyright (C) 2006-2017 OpenWrt.org#
# Copyright (C) 2022-2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-eqosplus
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
THEME_NAME:=eqosplus
PKG_NAME:=luci-app-$(THEME_NAME)
PKG_LICENSE:=Apache-2.0
LUCI_TITLE:=LuCI support for eqosplus.
LUCI_DESCRIPTION:=LuCI support for Easy eqosplus(Support speed limit based on IP address).
LUCI_DEPENDS:=+ip-full +tc +nftables +bc +kmod-ifb
LUCI_PKGARCH:=all
PKG_VERSION:=1.3.0
PKG_RELEASE:=20251128
PKG_MAINTAINER:=sirpdboy <herboy2008@gmail.com>
define Build/Compile
endef
define Package/$(PKG_NAME)/postinst
#!/bin/sh
rm -f /tmp/luci-*
endef
define Package/$(PKG_NAME)/conffiles
/etc/config/eqosplus
endef
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature
+91
View File
@@ -0,0 +1,91 @@
![hello](https://views.whatilearened.today/views/github/sirpdboy/deplives.svg) [![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
<h1 align="center">
<br>luci-app-eqosplus<br>
</h1>
<p align="center">
<a href="https://openwrt.org"><img alt="OpenWrt" src="https://img.shields.io/badge/OpenWrt-%E2%89%A519.07-ff0000?logo=openwrt&logoColor=white"></a>
<a href="https://www.google.com/chrome/"><img alt="Chrome" src="https://img.shields.io/badge/Chrome-%E2%89%A5111-4285F3?logo=googlechrome&logoColor=white"></a>
<a href="https://www.apple.com/safari/"><img alt="Safari" src="https://img.shields.io/badge/Safari-%E2%89%A516.4-000000?logo=safari&logoColor=white"></a>
<a href="https://www.mozilla.org/firefox/"><img alt="Firefox" src="https://img.shields.io/badge/Firefox-%E2%89%A5128-FF7138?logo=firefoxbrowser&logoColor=white"></a>
<a target="_blank" href="https://github.com/sirpdboy/luci-app-eqosplus/releases"> <img alt="GitHub release" src="https://img.shields.io/github/v/release/sirpdboy/luci-app-eqosplus"></a>
<a href="https://github.com/sirpdboy/luci-app-eqosplus/releases"><img alt="Downloads" src="https://img.shields.io/github/downloads/sirpdboy/luci-app-eqosplus/total"></a>
</p>
[中文] | [English](README.md)
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明1.jpg)
Please read this page carefully, which includes precautions and instructions on how to use it.
## Enhanced version of EQOS with timed speed limit and added features such as timed limit.
### Method for downloading source code:
```Brach
# downloading
git clone https://github.com/sirpdboy/luci-app-eqosplus package/luci-app-eqosplus
make menuconfig
```
### Configuration Menu
```Brach
make menuconfig
# find LuCI -> Applications, select luci-app-eqosplus, save and exit
```
### compile
```Brach
# compile
make package/luci-app-eqosplus/compile V=s
```
## describe
- luci-app-eqosplus : https://github.com/sirpdboy/luci-app-eqosplus
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明2.jpg)
## interface
![screenshots](./doc/eqosplus0.png)
![screenshots](./doc/eqosplus1.png)
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/eqosplus.png)
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/eqosplus2.png)
# My other project
- Watch Dog : https://github.com/sirpdboy/luci-app-watchdog
- Net Speedtest : https://github.com/sirpdboy/luci-app-netspeedtest
- Task Plan : https://github.com/sirpdboy/luci-app-taskplan
- Power Off Device : https://github.com/sirpdboy/luci-app-poweroffdevice
- OpentoPD Theme : https://github.com/sirpdboy/luci-theme-opentopd
- KuCat Theme : https://github.com/sirpdboy/luci-theme-kucat
- KuCat Theme Config : https://github.com/sirpdboy/luci-app-kucat-config
- NFT Time Control : https://github.com/sirpdboy/luci-app-timecontrol
- Parent Control: https://github.com/sirpdboy/luci-theme-parentcontrol
- Eqos Plus: https://github.com/sirpdboy/luci-app-eqosplus
- Advanced : https://github.com/sirpdboy/luci-app-advanced
- ddns-go : https://github.com/sirpdboy/luci-app-ddns-go
- Advanced Plus): https://github.com/sirpdboy/luci-app-advancedplus
- Net Wizard: https://github.com/sirpdboy/luci-app-netwizard
- Part Exp: https://github.com/sirpdboy/luci-app-partexp
- Lukcy: https://github.com/sirpdboy/luci-app-lukcy
## HELP
| <img src="https://img.shields.io/badge/-Alipay-F5F5F5.svg" href="#赞助支持本项目-" height="25" alt="图飞了"/> | <img src="https://img.shields.io/badge/-WeChat-F5F5F5.svg" height="25" alt="图飞了" href="#赞助支持本项目-"/> |
| :-----------------: | :-------------: |
|![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/支付宝.png) | ![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/微信.png) |
<a href="#readme">
<img src="https://img.shields.io/badge/-TOP-orange.svg" alt="no" title="Return TOP" align="right"/>
</a>
![hello](https://visitor-badge-deno.deno.dev/sirpdboy.sirpdboy.svg) [![](https://img.shields.io/badge/TGGroup-ClickJoin-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
+109
View File
@@ -0,0 +1,109 @@
![hello](https://views.whatilearened.today/views/github/sirpdboy/deplives.svg) [![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
<h1 align="center">
<br>luci-app-eqosplus<br>
</h1>
<p align="center">
<a target="_blank" href="https://github.com/sirpdboy/luci-app-eqosplus/releases">
<img src="https://img.shields.io/github/release/sirpdboy/luci-app-eqosplus.svg?style=flat-square&label=luci-app-eqosplus&colorB=green">
</a>
</p>
[中文] | [English](README.md)
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明1.jpg)
请 **认真阅读完毕** 本页面,本页面包含注意事项和如何使用。
## 功能说明:
### 定时限速1.2.2版
#### 2023.7.19 定时限速1.2.2:增加更多日期:工作日和休息日,自定义日期1,2,3中间用逗号分隔;加入MAC地址限速,从此不用担心IPV6和IPV4的限速问题。
### 定时限速1.0版
#### 2022.12.24 定时限速在eqos的加强版,加入定时限制等功能。
## 编译使用方法 [![](https://img.shields.io/badge/-编译使用方法-F5F5F5.svg)](#编译使用方法-)
将luci-app-eqosplus添加至 LEDE/OpenWRT 源码的方法。
### 下载源码方法一:
编辑源码文件夹根目录feeds.conf.default并加入如下内容:
```Brach
# feeds获取源码:
src-git eqosplus https://github.com/sirpdboy/luci-app-eqosplus
```
```Brach
# 更新feeds,并安装主题:
scripts/feeds update eqosplus
scripts/feeds install luci-app-eqosplus
```
### 下载源码方法:
```Brach
# 下载源码
git clone https://github.com/sirpdboy/luci-app-eqosplus package/luci-app-eqosplus
make menuconfig
```
### 配置菜单
```Brach
make menuconfig
# 找到 LuCI -> Applications, 选择 luci-app-eqosplus, 保存后退出。
```
### 编译
```Brach
# 编译固件
make package/luci-app-eqosplus/compile V=s
```
## 说明 [![](https://img.shields.io/badge/-说明-F5F5F5.svg)](#说明-)
源码来源:https://github.com/sirpdboy/luci-app-eqosplus
- 你可以随意使用其中的源码,但请注明出处。
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明2.jpg)
## 界面
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/eqosplus.png)
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/eqosplus2.png)
# My other project
- 路由安全看门狗 :https://github.com/sirpdboy/luci-app-watchdog
- 网络速度测试 :https://github.com/sirpdboy/luci-app-netspeedtest
- 计划任务插件(原定时设置) : https://github.com/sirpdboy/luci-app-taskplan
- 关机功能插件 : https://github.com/sirpdboy/luci-app-poweroffdevice
- opentopd主题 : https://github.com/sirpdboy/luci-theme-opentopd
- kucat酷猫主题: https://github.com/sirpdboy/luci-theme-kucat
- kucat酷猫主题设置工具: https://github.com/sirpdboy/luci-app-kucat-config
- NFT版上网时间控制插件: https://github.com/sirpdboy/luci-app-timecontrol
- 家长控制: https://github.com/sirpdboy/luci-theme-parentcontrol
- 定时限速: https://github.com/sirpdboy/luci-app-eqosplus
- 系统高级设置 : https://github.com/sirpdboy/luci-app-advanced
- ddns-go动态域名: https://github.com/sirpdboy/luci-app-ddns-go
- 进阶设置(系统高级设置+主题设置kucat/agron/opentopd): https://github.com/sirpdboy/luci-app-advancedplus
- 网络设置向导: https://github.com/sirpdboy/luci-app-netwizard
- 一键分区扩容: https://github.com/sirpdboy/luci-app-partexp
- lukcy大吉: https://github.com/sirpdboy/luci-app-lukcy
## 捐助
![screenshots](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/说明3.jpg)
| <img src="https://img.shields.io/badge/-支付宝-F5F5F5.svg" href="#赞助支持本项目-" height="25" alt="图飞了"/> | <img src="https://img.shields.io/badge/-微信-F5F5F5.svg" height="25" alt="图飞了" href="#赞助支持本项目-"/> |
| :-----------------: | :-------------: |
|![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/支付宝.png) | ![xm1](https://raw.githubusercontent.com/sirpdboy/openwrt/master/doc/微信.png) |
<a href="#readme">
<img src="https://img.shields.io/badge/-返回顶部-orange.svg" alt="图飞了" title="返回顶部" align="right"/>
</a>
![](https://visitor-badge-deno.deno.dev/sirpdboy.sirpdboy.svg) [![](https://img.shields.io/badge/TG群-点击加入-FFFFFF.svg)](https://t.me/joinchat/AAAAAEpRF88NfOK5vBXGBQ)
Binary file not shown.

After

Width:  |  Height:  |  Size: 645 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 KiB

@@ -0,0 +1,19 @@
module("luci.controller.eqosplus", package.seeall)
-- Copyright 2022-2023 sirpdboy <herboy2008@gmail.com>
function index()
if not nixio.fs.access("/etc/config/eqosplus") then return end
entry({"admin", "control"}, firstchild(), "Control", 44).dependent = false
local e = entry({"admin", "control", "eqosplus"}, cbi("eqosplus"), _("Eqosplus"), 10)
e.dependent=false
e.acl_depends = { "luci-app-eqosplus" }
entry({"admin", "control", "eqosplus", "status"}, call("act_status")).leaf = true
end
function act_status()
local sys = require "luci.sys"
local e = {}
e.status = sys.call(" busybox ps -w | grep eqosplus | grep -v grep >/dev/null ") == 0
luci.http.prepare_content("application/json")
luci.http.write_json(e)
end
@@ -0,0 +1,190 @@
-- Copyright 2022-2023 sirpdboy <herboy2008@gmail.com>
-- Licensed to the public under the Apache License 2.0.
local sys = require "luci.sys"
local ifaces = sys.net:devices()
local WADM = require "luci.tools.webadmin"
local ipc = require "luci.ip"
local a, t, e
a = Map("eqosplus", translate("Network speed limit"))
a.description = translate("Users can limit the network speed for uploading/downloading through MAC, IP, and IP segments (192.168.110.00-192.168.10.200). The speed unit is MB/second.")
a.template = "eqosplus/index"
t = a:section(TypedSection, "eqosplus")
t.anonymous = true
e = t:option(DummyValue, "eqosplus_status", translate("Status"))
e.template = "eqosplus/eqosplus"
e.value = translate("Collecting data...")
ipi = t:option(ListValue, "ifname", translate("Interface"), translate("Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode"))
ipi.default = "1"
ipi:value(1,translate("Automatic settings"))
ipi:value("br-lan", translate("br-lan (LAN Bridge)"))
local function get_wan_interfaces()
local result = {}
local ubus = require "ubus"
local conn = ubus.connect()
if not conn then
return result
end
local network_status = conn:call("network.interface", "dump", {})
for _, iface in ipairs(network_status.interface) do
if iface.interface:match("^wan") or iface.interface:match("^pppoe") or iface.proto == "pppoe" then
local dev = iface.l3_device or iface.device
if dev then
table.insert(result, {
name = dev,
proto = iface.proto,
logical_name = iface.interface
})
end
end
end
conn:close()
return result
end
local wan_ifaces = get_wan_interfaces()
for _, iface in ipairs(wan_ifaces) do
ipi:value(iface.name, translate(iface.name) .. (iface.proto == "pppoe" and " (PPPoE)" or " (WAN)"))
end
t = a:section(TypedSection, "device")
t.template = "cbi/tblsection"
t.anonymous = true
t.addremove = true
comment = t:option(Value, "comment", translate("Comment"))
comment.size = 8
e = t:option(Flag, "enable", translate("Enabled"))
e.rmempty = false
e.size = 4
ip = t:option(Value, "mac", translate("IP/MAC"))
ip.size = 8
local function get_devices()
local devices = {}
local seen_ips = {}
local ubus = require "ubus"
local conn = ubus.connect()
local function get_hostname(ip)
local f = io.popen("nslookup "..ip.." 2>/dev/null | grep 'name =' | cut -d'=' -f2 | sed 's/\\.$//'")
if f then
local name = f:read("*l")
f:close()
if name and name ~= "" then
return name:match("^%s*(.-)%s*$")
end
end
local leases_file = io.open("/tmp/dhcp.leases", "r")
if leases_file then
for line in leases_file:lines() do
local mac, ip_lease, _, hostname = line:match("^(%S+)%s+(%S+)%s+(%S+)%s+(%S+)")
if ip_lease == ip and hostname ~= "*" then
leases_file:close()
return hostname
end
end
leases_file:close()
end
return "unknown"
end
if conn then
local leases = conn:call("dhcp", "ipv4leases", {}) or {}
for _, lease in ipairs(leases) do
if lease.ipaddr and lease.mac then
local hostname = lease.hostname or get_hostname(lease.ipaddr)
devices[#devices+1] = {
ip = lease.ipaddr,
mac = lease.mac:upper(),
hostname = hostname,
display = string.format("%s (%s) - %s", lease.ipaddr, lease.mac:upper(), hostname)
}
seen_ips[lease.ipaddr] = true
end
end
conn:close()
end
local arp_cmd = io.popen("ip -4 neigh show dev br-lan 2>/dev/null")
if arp_cmd then
for line in arp_cmd:lines() do
local ip_addr, mac = line:match("^(%S+)%s+.+%s+(%S+)%s+")
if ip_addr and mac and mac ~= "00:00:00:00:00:00" and not seen_ips[ip_addr] then
mac = mac:upper()
local hostname = get_hostname(ip_addr)
devices[#devices+1] = {
ip = ip_addr,
mac = mac,
hostname = hostname,
display = string.format("%s (%s) - %s", ip_addr, mac, hostname)
}
seen_ips[ip_addr] = true
end
end
arp_cmd:close()
end
table.sort(devices, function(a, b) return a.ip < b.ip end)
return devices
end
local devices = get_devices()
for _, dev in ipairs(devices) do
ip:value(dev.ip, dev.display)
end
dl = t:option(Value, "download", translate("Downloads"))
dl.default = '0.1'
dl.size = 4
ul = t:option(Value, "upload", translate("Uploads"))
ul.default = '0.1'
ul.size = 4
function validate_time(self, value, section)
local hh, mm, ss
hh, mm, ss = string.match (value, "^(%d?%d):(%d%d)$")
hh = tonumber (hh)
mm = tonumber (mm)
if hh and mm and hh <= 23 and mm <= 59 then
return value
else
return nil, "Time HH:MM or space"
end
end
e = t:option(Value, "timestart", translate("Start control time"))
e.placeholder = '00:00'
e.default = '00:00'
e.validate = validate_time
e.rmempty = true
e.size = 4
e = t:option(Value, "timeend", translate("Stop control time"))
e.placeholder = '00:00'
e.default = '00:00'
e.validate = validate_time
e.rmempty = true
e.size = 4
week=t:option(Value,"week",translate("Week Day(1~7)"))
week.rmempty = true
week:value('0',translate("Everyday"))
week:value(1,translate("Monday"))
week:value(2,translate("Tuesday"))
week:value(3,translate("Wednesday"))
week:value(4,translate("Thursday"))
week:value(5,translate("Friday"))
week:value(6,translate("Saturday"))
week:value(7,translate("Sunday"))
week:value('1,2,3,4,5',translate("Workday"))
week:value('6,7',translate("Rest Day"))
week.default='0'
week.size = 6
return a
@@ -0,0 +1,3 @@
<%+cbi/valueheader%>
<font class="eqosplus_status"><%=pcdata(self:cfgvalue(section) or self.default or "")%></font>
<%+cbi/valuefooter%>
@@ -0,0 +1,12 @@
<% include("cbi/map") %>
<script type="text/javascript">//<![CDATA[
XHR.poll(2, '<%=luci.dispatcher.build_url("admin", "control", "eqosplus", "status" )%>', null,
function (x, result) {
var status = document.getElementsByClassName('eqosplus_status')[0];
status.setAttribute("style", "font-weight:bold;");
status.setAttribute("color", result.status ? "green" : "red");
status.innerHTML = result.status ? '<%=translate("RUNNING")%>' : '<%=translate("NOT RUNNING")%>';
}
)
//]]>
</script>
@@ -0,0 +1,61 @@
msgid "Eqosplus"
msgstr ""
msgid "Network speed limit"
msgstr ""
msgid "Running state"
msgstr ""
msgid "Not running"
msgstr ""
msgid "Running"
msgstr ""
msgid "Users can limit the network speed for uploading/downloading through MAC, IP, and IP segments (192.168.110.00-192.168.10.200). The speed unit is MB/second."
msgstr ""
msgid "MAC/IP"
msgstr ""
msgid "Downloads"
msgstr ""
msgid "Uploads"
msgstr ""
msgid "Comment"
msgstr ""
msgid "Upload bandwidth(Mbit/s)"
msgstr ""
msgid "Download bandwidth(Mbit/s)"
msgstr ""
msgid "Start control time"
msgstr ""
msgid "Stop control time"
msgstr ""
msgid "Week Day(1~7)"
msgstr ""
msgid "Suggested feedback:"
msgstr ""
msgid "Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode"
msgstr ""
msgid "Rest Day"
msgstr ""
msgid "Workday"
msgstr ""
msgid "Automatic settings"
msgstr ""
+61
View File
@@ -0,0 +1,61 @@
msgid "Eqosplus"
msgstr "定时限速"
msgid "Network speed limit"
msgstr "定时网速限制"
msgid "Running state"
msgstr "运行状态"
msgid "Not running"
msgstr "未运行"
msgid "Running"
msgstr "已运行"
msgid "Users can limit the network speed for uploading/downloading through MAC, IP.The speed unit is MB/second."
msgstr "可以通过MAC,IP限制用户上传/下载的网速。速度单位为<font color=\"red\"><b> MB/秒 </b></font>。"
msgid "MAC/IP"
msgstr "MAC/IP"
msgid "Downloads"
msgstr "下载速度"
msgid "Uploads"
msgstr "上传速度"
msgid "Comment"
msgstr "备注"
msgid "Upload bandwidth(Mbit/s)"
msgstr "上传总带宽(Mbit/s)"
msgid "Download bandwidth(Mbit/s)"
msgstr "下载总带宽(Mbit/s)"
msgid "Start control time"
msgstr "起控时间"
msgid "Stop control time"
msgstr "停控时间"
msgid "Week Day(1~7)"
msgstr "星期(1~7)"
msgid "Suggested feedback:"
msgstr "建议反馈:"
msgid "Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode"
msgstr "设定用来限制网络速度的接口,拨号使用pppoe-wan,DHCP模式使用WAN口的硬件接口(如:eth1),通用使用br-lan接口"
msgid "Rest Day"
msgstr "休息日"
msgid "Workday"
msgstr "工作日"
msgid "Automatic settings"
msgstr "自动设置"
+61
View File
@@ -0,0 +1,61 @@
msgid "Eqosplus"
msgstr "定时限速"
msgid "Network speed limit"
msgstr "定时网速限制"
msgid "Running state"
msgstr "运行状态"
msgid "Not running"
msgstr "未运行"
msgid "Running"
msgstr "已运行"
msgid "Users can limit the network speed for uploading/downloading through MAC, IP, and IP segments (192.168.110.00-192.168.10.200). The speed unit is MB/second."
msgstr "用户可以通过MAC、IP、IP段(192.168.10.100-192.168.10.200),限制上传/下载的网络速度。速度单位为MB/秒。。"
msgid "MAC/IP"
msgstr "MAC/IP"
msgid "Downloads"
msgstr "下载速度"
msgid "Uploads"
msgstr "上传速度"
msgid "Comment"
msgstr "备注"
msgid "Upload bandwidth(Mbit/s)"
msgstr "上传总带宽(Mbit/s)"
msgid "Download bandwidth(Mbit/s)"
msgstr "下载总带宽(Mbit/s)"
msgid "Start control time"
msgstr "起控时间"
msgid "Stop control time"
msgstr "停控时间"
msgid "Week Day(1~7)"
msgstr "星期(1~7)"
msgid "Suggested feedback:"
msgstr "建议反馈:"
msgid "Set the interface used for restriction, use pppoe-wan for dialing, use WAN hardware interface for DHCP mode (such as eth1), and use br-lan for bypass mode"
msgstr "设定用来限制网络速度的接口,拨号使用pppoe-wan,DHCP模式使用WAN口的硬件接口(如:eth1),通用使用br-lan接口"
msgid "Rest Day"
msgstr "休息日"
msgid "Workday"
msgstr "工作日"
msgid "Automatic settings"
msgstr "自动设置"
@@ -0,0 +1,25 @@
config eqosplus
option enabled '0'
option download '1000'
option upload '30'
option ifname '1'
config device
option timestart '00:00'
option week '0'
option download '1'
option timeend '23:55'
option upload '1'
option mac '192.168.10.10'
option enable '0'
config device
option mac '192.168.10.10-192.168.10.200'
option timestart '00:00'
option timeend '00:00'
option week '0'
option download '0.1'
option upload '0.1'
option enable '0'
@@ -0,0 +1,5 @@
#!/bin/sh
[ "$ACTION" = "ifup" ] && [ "$INTERFACE" = "wan" ] && {
sleep 5
/etc/init.d/eqosplus restart
}
@@ -0,0 +1,54 @@
#!/bin/sh /etc/rc.common
#
# Copyright (C) 2025 sirpdboy herboy2008@gmail.com https://github.com/sirpdboy/luci-app-eqosplus
#
START=99
USE_PROCD=1
NAME=eqosplus
LOCK="/var/lock/$NAME.lock"
CR=/etc/crontabs/root
start_instance() {
procd_open_instance
procd_set_param command /usr/bin/eqosplusctrl
procd_set_param respawn
procd_set_param stderr 1
procd_close_instance
}
_eqosplus_start() {
if [ "$(grep -c 'option enable .1.' /etc/config/$NAME 2>/dev/null)" -gt "0" ]; then
if [ x$(uci -q get turboacc.config.sw_flow) = 'x1' ] || [ x$(uci -q get turboacc.config.sfe_flow) = 'x1' ] ;then
uci -q set turboacc.config.sw_flow='0'
uci -q set turboacc.config.sfe_flow='0'
uci -q set turboacc.config.hw_flow='0'
uci commit turboacc
/etc/init.d/turboacc restart
fi
touch $LOCK
eqosplus start
start_instance
(crontab -l ; echo "00 1 * * * /etc/init.d/eqosplus start") | sort - | uniq - | crontab -
fi
}
start_service(){
[ -f $LOCK ] && exit
stop_service
_eqosplus_start
rm -f $LOCK
}
service_triggers() {
procd_add_reload_trigger 'eqosplus'
}
stop_service(){
kill -9 $(busybox ps -w | grep 'eqosplusctrl' | grep -v 'grep' | awk '{print $1}') >/dev/null 2>&1
sed -i '/eqosplus/d' $CR >/dev/null 2>&1
rm -f $LOCK 2>/dev/null
eqosplus stop
}
@@ -0,0 +1,13 @@
#!/bin/sh
chmod +x /etc/init.d/eqosplus /usr/bin/eqosplus*
uci -q batch <<-EOF >/dev/null
delete ucitrack.@eqosplus[-1]
add ucitrack eqosplus
set ucitrack.@eqosplus[-1].init=eqosplus
commit ucitrack
EOF
[ -s /etc/config/eqosplus ] || echo "config eqosplus" > /etc/config/eqosplus
rm -f /tmp/luci-indexcache
exit 0
+379
View File
@@ -0,0 +1,379 @@
#!/bin/bash
# Copyright (C) 2006 OpenWrt.org
# Copyright 2022-2025 sirpdboy <herboy2008@gmail.com>
crrun=$1
crid=$2
NAME=eqosplus
IDLIST="/var/$NAME.idlist"
LOCK="/var/lock/$NAME.lock"
TMPID="/var/$NAME.tmpid"
LOG="/var/$NAME_log.log"
# idlist=`uci show $NAME | grep "enable='1'" | grep "device" | grep -oE '\[.*?\]' | grep -o '[0-9]' `
if [ x$(uci get $NAME.@$NAME[0].ifname 2>/dev/null) = 'x1' ]; then
ifname=$(uci -q get network.lan.ifname)
[ "x$ifname" = "x" ] && ifname="device" || ifname="ifname"
dev=$(uci -q get network.wan.$ifname)
[ ! "$dev" ] && dev=br-lan
else
dev=$(uci -q get $NAME.@$NAME[0].ifname 2>/dev/null)
[ ! "$dev" ] && dev=br-lan
fi
bin_nft=$(which nft)
bin_tc=$(which tc)
bin_ip=$(which ip)
DEBUG=1
nft_type() {
if command -v nft >/dev/null; then
nftables_ver="true"
fi
}
# Debug functions
dbg_nft() {
[ "${DEBUG:-0}" -eq 0 ] || echo "DEBUG: nft $*"
$bin_nft "$@"
}
dbg_tc() {
[ "${DEBUG:-0}" -eq 0 ] || echo "DEBUG: tc $*"
$bin_tc "$@"
}
dbg_ip() {
[ "${DEBUG:-0}" -eq 0 ] || echo "DEBUG: ip $*"
$bin_ip "$@"
}
is_macaddr() {
ret=1
if echo "$1" | grep -qE '^([0-9A-Fa-f]{2}[-:]){5}[0-9A-Fa-f]{2}$'; then
ret=0
fi
return $ret
}
# 数值比较函数
is_gt_zero() {
local value=$1
# 使用bc进行浮点数比较
echo "$value > 0" | bc -l 2>/dev/null | grep -q 1
}
# 转换为kbit
to_kbit() {
local mb=$1
# MB/s 转 kbit/s: 1 MB/s = 8192 kbit/s
echo "scale=0; $mb * 8192 / 1" | bc 2>/dev/null || echo "0"
}
# Default commands
tc="dbg_tc"
ip="dbg_ip"
nft="dbg_nft"
nft_type
stop_qos() {
for face in $(tc qdisc show 2>/dev/null | grep htb | awk '{print $5}'); do
$tc qdisc del dev $face root 2>/dev/null
done
$tc qdisc del dev ${dev} root 2>/dev/null
$tc qdisc del dev ${dev}_ifb root 2>/dev/null
$tc qdisc del dev ${dev} ingress 2>/dev/null
$ip link del dev ${dev}_ifb 2>/dev/null 2>&1
if [ -n "$nftables_ver" ]; then
$nft delete table inet ${NAME} 2>/dev/null
$nft delete table bridge ${NAME} 2>/dev/null
fi
echo "" > "$IDLIST" 2>/dev/null
}
init_qosplus() {
insmod sch_htb 2>/dev/null
insmod act_mirred 2>/dev/null
insmod ifb 2>/dev/null
$ip link del dev ${dev}_ifb 2>/dev/null
$ip link add dev ${dev}_ifb name ${dev}_ifb type ifb
$ip link set dev ${dev}_ifb up
$tc qdisc del dev ${dev} root 2>/dev/null
$tc qdisc add dev ${dev} root handle 1:0 htb default 1
$tc class add dev ${dev} parent 1:0 classid 1:1 htb rate 1000mbit ceil 1000mbit
$tc qdisc del dev ${dev}_ifb root 2>/dev/null
$tc qdisc add dev ${dev}_ifb root handle 1:0 htb default 1
$tc class add dev ${dev}_ifb parent 1:0 classid 1:1 htb rate 1000mbit ceil 1000mbit
lanipaddr=$(uci -q get network.lan.ipaddr 2>/dev/null | awk -F '.' '{print $1"."$2"."$3".0/24"}')
if [ -n "$lanipaddr" ]; then
$tc filter add dev $dev parent 1:0 protocol ip prio 1 u32 match ip src "$lanipaddr" match ip dst "$lanipaddr" flowid 1:1
$tc filter add dev ${dev}_ifb parent 1:0 protocol ip prio 1 u32 match ip src "$lanipaddr" match ip dst "$lanipaddr" flowid 1:1
fi
$tc qdisc del dev ${dev} ingress 2>/dev/null
$tc qdisc add dev ${dev} ingress
$tc filter add dev ${dev} parent ffff: protocol all prio 2 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ${dev}_ifb
if [ -n "$nftables_ver" ]; then
$nft delete table inet ${NAME} 2>/dev/null
$nft delete table bridge ${NAME} 2>/dev/null
$nft add table inet ${NAME}
$nft add chain inet ${NAME} mark_forward { type filter hook forward priority -200\; policy accept\; }
$nft add chain inet ${NAME} mark_output { type filter hook output priority -200\; policy accept\; }
$nft add chain inet ${NAME} mark_postrouting { type filter hook postrouting priority -200\; policy accept\; }
fi
return 0
}
del_id() {
local list_id=$1
id=$((list_id * 10 + 1000))
[ "${DEBUG:-0}" -eq 0 ] || echo "D: del_id $@ --$id --$mac"
$tc filter del dev ${dev} parent 1: handle 800::$(printf "%x" $id) 2>/dev/null
$tc class del dev ${dev} parent 1:1 classid 1:$id 2>/dev/null
$tc filter del dev ${dev}_ifb parent 1: handle 800::$(printf "%x" $id) 2>/dev/null
$tc class del dev ${dev}_ifb parent 1:1 classid 1:$id 2>/dev/null
mac=$(uci -q get $NAME.@device[$list_id].mac 2>/dev/null)
if [ -n "$nftables_ver" ] && [ -n "$mac" ]; then
if is_macaddr "$mac"; then
$nft delete rule inet ${NAME} mark_forward ether saddr $mac counter 2>/dev/null
$nft delete rule inet ${NAME} mark_output ether saddr $mac counter 2>/dev/null
$nft delete rule inet ${NAME} mark_postrouting ether saddr $mac counter 2>/dev/null
else
Z=$(echo $mac | awk -F '[/]' '{print $2}')
[ -n "$Z" ] && mac=$(echo $mac | awk -F '[/]' '{print $1}') || Z=32
$nft delete rule inet ${NAME} mark_forward ip saddr $mac/$Z counter 2>/dev/null
$nft delete rule inet ${NAME} mark_output ip saddr $mac/$Z counter 2>/dev/null
$nft delete rule inet ${NAME} mark_postrouting ip saddr $mac/$Z counter 2>/dev/null
fi
fi
}
add_mac() {
local list_id=$1
id=$((list_id * 10 + 1000))
M0=$(echo $mac | cut -d : -f 1)$(echo $mac | cut -d : -f 2)
M1=$(echo $mac | cut -d : -f 3)$(echo $mac | cut -d : -f 4)
M2=$(echo $mac | cut -d : -f 5)$(echo $mac | cut -d : -f 6)
[ "${DEBUG:-0}" -eq 0 ] || echo "D: add_mac $@ --id:$id --mac:$mac M012--$M0-$M1-$M2"
if is_gt_zero "$UL"; then
if [ -n "$nftables_ver" ]; then
$nft add rule inet ${NAME} mark_forward ether saddr $mac counter meta mark set $id
$nft add rule inet ${NAME} mark_output ether saddr $mac counter meta mark set $id
$nft add rule inet ${NAME} mark_postrouting ether saddr $mac counter meta mark set $id
fi
$tc class add dev ${dev}_ifb parent 1:1 classid 1:$id htb rate "${UL}kbit" ceil "${UL}kbit" prio $id burst 15k cburst 15k
$tc qdisc add dev ${dev}_ifb parent 1:$id handle ${id}: sfq perturb 10
$tc filter add dev ${dev}_ifb parent 1: protocol ip prio $id handle $id fw flowid 1:$id
$tc filter add dev ${dev}_ifb parent 1: protocol ip prio $((id + 100)) u32 \
match u16 0x0800 0xFFFF at -2 \
match u16 0x${M2} 0xFFFF at -4 \
match u32 0x${M0}${M1} 0xFFFFFFFF at -8 \
flowid 1:$id
fi
if is_gt_zero "$DL"; then
$tc class add dev ${dev} parent 1:1 classid 1:$id htb rate "${DL}kbit" ceil "${DL}kbit" prio $id burst 15k cburst 15k
$tc qdisc add dev ${dev} parent 1:$id handle ${id}: sfq perturb 10
$tc filter add dev ${dev} parent 1: protocol ip prio $id u32 \
match u16 0x0800 0xFFFF at -2 \
match u32 0x${M1}${M2} 0xFFFFFFFF at -12 \
match u16 0x${M0} 0xFFFF at -14 \
flowid 1:$id
fi
}
add_ip() {
local list_id=$1
id=$((list_id * 10 + 1000))
[ "${DEBUG:-0}" -eq 0 ] || echo "D: add_ip $@ --$id --$mac"
Z=$(echo $mac | awk -F '[/]' '{print $2}')
[ -n "$Z" ] && mac=$(echo $mac | awk -F '[/]' '{print $1}') || Z=32
if is_gt_zero "$UL"; then
if [ -n "$nftables_ver" ]; then
$nft add rule inet ${NAME} mark_forward ip saddr $mac/$Z counter meta mark set $id
$nft add rule inet ${NAME} mark_output ip saddr $mac/$Z counter meta mark set $id
$nft add rule inet ${NAME} mark_postrouting ip saddr $mac/$Z counter meta mark set $id
fi
$tc class add dev ${dev}_ifb parent 1:1 classid 1:$id htb rate "${UL}kbit" ceil "${UL}kbit" prio $id burst 15k cburst 15k
$tc qdisc add dev ${dev}_ifb parent 1:$id handle ${id}: sfq perturb 10
$tc filter add dev ${dev}_ifb parent 1: protocol ip prio $id handle $id fw flowid 1:$id
$tc filter add dev ${dev}_ifb parent 1:0 prio $((id + 100)) protocol ip u32 \
match ip src "$mac"/"$Z" \
flowid 1:$id
fi
if is_gt_zero "$DL"; then
$tc class add dev ${dev} parent 1:1 classid 1:$id htb rate "${DL}kbit" ceil "${DL}kbit" prio $id burst 15k cburst 15k
$tc qdisc add dev ${dev} parent 1:$id handle ${id}: sfq perturb 10
$tc filter add dev ${dev} parent 1:0 prio $id protocol ip u32 \
match ip dst "$mac"/"$Z" \
flowid 1:$id
fi
}
check_time() {
local start=$1
local end=$2
local current=$(date +%H%M)
local start_min=$((10#${start:0:2}*60 + 10#${start:3:2}))
local end_min=$((10#${end:0:2}*60 + 10#${end:3:2}))
local current_min=$((10#${current:0:2}*60 + 10#${current:2:2}))
if [[ $start_min -lt $end_min ]]; then
[[ $current_min -ge $start_min && $current_min -lt $end_min ]]
else
[[ $current_min -ge $start_min || $current_min -lt $end_min ]]
fi
}
check_list() {
local i=$1
local start_time=$(uci -q get $NAME.@device[$i].timestart 2>/dev/null)
local end_time=$(uci -q get $NAME.@device[$i].timeend 2>/dev/null)
local wweek=$(uci -q get $NAME.@device[$i].week 2>/dev/null)
local current_weekday=$(date +%u)
[ -z "$start_time" ] && [ -z "$end_time" ] && [ -z "$wweek" ] && return 0
if [ -n "$wweek" ] && [ "$wweek" != "0" ]; then
local day_match=0
for day in $(echo $wweek | tr ',' ' '); do
[ "$day" -eq "$current_weekday" ] && day_match=1 && break
done
[ "$day_match" -eq 0 ] && return 1
fi
if [ -n "$start_time" ] && [ -n "$end_time" ]; then
check_time "$start_time" "$end_time" || return 1
fi
return 0
}
case "$crrun" in
"stop")
stop_qos
;;
"start")
stop_qos > /dev/null 2>&1
sleep 2
init_qosplus
idlist=$(uci show $NAME 2>/dev/null | grep "enable='1'" | grep "device" | grep -oE '\[.*?\]' | grep -o '[0-9]' | sort -nu | sed -e 's/^/!/g' -e 's/$/!/g' > $IDLIST; cat $IDLIST 2>/dev/null | sed -e 's/!//g')
if [ ! -s "$IDLIST" ]; then
return 1
fi
device_count=0
for list in $(echo $idlist | sed -e 's/!//g'); do
if check_list $list; then
mac=$(uci -q get $NAME.@device[$list].mac 2>/dev/null)
download_mb=$(uci -q get $NAME.@device[$list].download 2>/dev/null)
upload_mb=$(uci -q get $NAME.@device[$list].upload 2>/dev/null)
comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null)
# 转换为kbit
DL=$(to_kbit "$download_mb")
UL=$(to_kbit "$upload_mb")
if [ -n "$mac" ]; then
if is_macaddr "$mac"; then
add_mac $list >>$LOG
echo "✅ MAC限速: $comment ($mac) - 下载:${download_mb}MB/s(${DL}kbit/s) 上传:${upload_mb}MB/s(${UL}kbit/s)" >>$LOG
else
add_ip $list >>$LOG
echo "✅ IP限速: $comment ($mac) - 下载:${download_mb}MB/s(${DL}kbit/s) 上传:${upload_mb}MB/s(${UL}kbit/s)" >>$LOG
fi
device_count=$((device_count + 1))
fi
else
[ -f "$IDLIST" ] && [ $(grep "!${list}!" "$IDLIST" 2>/dev/null | wc -l) -gt 0 ] && {
del_id $list >>$LOG
sed -i "/!$list!/d" "$IDLIST" >/dev/null 2>&1
comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null)
}
fi
done
echo "EQOSPLUS限速服务启动完成,共配置 $device_count 个设备" >>$LOG
echo ""
echo "当前限速状态:" >>$LOG
tc -s class show dev $dev | grep "rate" | head -5 >>$LOG
tc -s class show dev ${dev}_ifb | grep "rate" | head -5 >>$LOG
;;
"add")
echo "➕ 添加限速规则..."
for list in $(echo $crid | sed -e 's/!//g' | sed 's/,/ /g'); do
mac=$(uci -q get $NAME.@device[$list].mac 2>/dev/null)
download_mb=$(uci -q get $NAME.@device[$list].download 2>/dev/null)
upload_mb=$(uci -q get $NAME.@device[$list].upload 2>/dev/null)
comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null)
DL=$(to_kbit "$download_mb")
UL=$(to_kbit "$upload_mb")
if is_macaddr $mac; then
add_mac $list
echo "✅ 添加MAC限速: $comment ($mac)" >>$LOG
else
add_ip $list
echo "✅ 添加IP限速: $comment ($mac)" >>$LOG
fi
done
;;
"del")
for list in $(echo $crid | sed -e 's/!//g' | sed 's/,/ /g'); do
comment=$(uci -q get $NAME.@device[$list].comment 2>/dev/null)
mac=$(uci -q get $NAME.@device[$list].mac 2>/dev/null)
del_id $list
done
;;
"status")
echo "EQOSPLUS限速服务状态"
echo "### 网络接口: $dev ###"
echo "# 下载队列统计 #"
tc -s qdisc show dev $dev 2>/dev/null || echo "无下载队列"
echo "# 下载类统计 #"
tc -s class show dev $dev 2>/dev/null | grep -E "class htb|rate [0-9]" || echo "无下载类"
echo "# 下载过滤器 #"
tc -s filter show dev $dev parent 1: 2>/dev/null | head -10 || echo "无下载过滤器"
echo "### 虚拟接口: ${dev}_ifb ###"
echo "# 上传队列统计 #"
tc -s qdisc show dev ${dev}_ifb 2>/dev/null || echo "无上传队列"
echo "# 上传类统计 #"
tc -s class show dev ${dev}_ifb 2>/dev/null | grep -E "class htb|rate [0-9]" || echo "无上传类"
echo "# 上传过滤器 #"
tc -s filter show dev ${dev}_ifb parent 1: 2>/dev/null | head -10 || echo "无上传过滤器"
if [ -n "$nftables_ver" ]; then
echo "### NFTables规则 ###"
nft list table inet ${NAME} 2>/dev/null || echo "没有NFTables规则"
else
echo "NFTables不可用"
fi
# 显示流量统计
echo "### 流量统计 ###"
echo "下载流量:"
tc -s class show dev $dev 2>/dev/null | grep "Sent" | head -5
echo "上传流量:"
tc -s class show dev ${dev}_ifb 2>/dev/null | grep "Sent" | head -5
;;
esac
@@ -0,0 +1,63 @@
#!/bin/sh
# Copyright (C) 2006 OpenWrt.org
# Copyright 2022-2025 sirpdboy <herboy2008@gmail.com>
NAME=eqosplus
IDLIST="/var/$NAME.idlist"
TMPID="/var/$NAME.tmpid"
idlist=`uci show $NAME | grep "enable='1'" | grep "device" | grep -oE '\[.*?\]' | grep -o '[0-9]' `
check_list() {
i=$1
checki='0'
start_time=$(uci -q get $NAME.@device[$i].timestart 2>/dev/null)
end_time=$(uci -q get $NAME.@device[$i].timeend 2>/dev/null)
wweek=`uci -q get $NAME.@device[$i].week `
current_time=$(date +%H:%M)
current_weekday=$(date +%u)
for ww in `echo $wweek | sed 's/,/ /g' `; do
if [ $current_weekday = $ww ] || [ 'x0' = x$ww ] ;then
[ "$start_time" = "$end_time" ] && checki='1' || {
if [ "$start_time" \< "$end_time" ]; then
if [ "$current_time" \> "$start_time" ] && [ "$current_time" \< "$end_time" ] ; then
checki='1'
fi
else
if [ "$start_time" \> "$end_time" ] ; then
if [ "$current_time" \< "$start_time" ] && [ "$current_time" \> "$end_time" ] ; then
checki='1'
fi
fi
fi
}
fi
done
return
}
idlistusr(){
checki='0'
[ -s $IDLIST ] || touch $IDLIST
for list in $idlist ;do
check_list $list
if [ $checki == '1' ] ; then
[ `cat $IDLIST 2>/dev/null | grep "!${list}!" | wc -l ` -gt 0 ] || {
eqosplus add $list
echo "!${list}!" >> $IDLIST ; cat $IDLIST | sort | uniq > $TMPID ;cat $TMPID >$IDLIST ;rm -rf $TMPID
}
else
[ `cat $IDLIST 2>/dev/null | grep "!${list}!" | wc -l ` -gt 0 ] && {
eqosplus del $list
sed -i "/!$list!/d" $IDLIST >/dev/null 2>&1
}
fi
done
}
while :;do
sleep 30
idlistusr
sleep 30
done
@@ -0,0 +1,11 @@
{
"luci-app-eqosplus": {
"description": "Grant UCI access for luci-app-eqosplus",
"read": {
"uci": [ "eqosplus" ]
},
"write": {
"uci": [ "eqosplus" ]
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 585 KiB

-19
View File
@@ -1,19 +0,0 @@
# Copyright (C) 2016 Openwrt.org
#
# This is free software, licensed under the Apache License, Version 2.0 .
#
include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-honk
PKG_VERSION:=1.1.4
PKG_RELEASE:=7
LUCI_TITLE:=LuCI support for honk
LUCI_PKGARCH:=all
LUCI_DEPENDS:=+honk +luci-base +rpcd-mod-ucode
include $(TOPDIR)/feeds/luci/luci.mk
# call BuildPackage - OpenWrt buildroot signature
-361
View File
@@ -1,361 +0,0 @@
msgid "HONK"
msgstr "HONK"
msgid "RUNNING"
msgstr "运行中"
msgid "NOT RUNNING"
msgstr "未运行"
msgid "Collecting data..."
msgstr "收集数据..."
msgid "Enabled"
msgstr "启用"
msgid "Reload Service"
msgstr "重载服务"
msgid "Global Settings"
msgstr "全局设置"
msgid "DNS Settings"
msgstr "DNS 设置"
msgid "Node Settings"
msgstr "节点设置"
msgid "Routing Settings"
msgstr "路由设置"
msgid "Global Configuration"
msgstr "全局配置"
msgid "DNS Configuration"
msgstr "DNS 配置"
msgid "Node Configuration"
msgstr "节点配置"
msgid "Route Configuration"
msgstr "路由配置"
msgid "Configure global settings for HONK."
msgstr "调整 HONK 的全局设置。"
msgid "Configure DNS settings for HONK."
msgstr "调整 HONK 的 DNS 设置。"
msgid "Configure nodes and groups for HONK."
msgstr "调整 HONK 的节点与分组设置。"
msgid "Configure routing rules for HONK."
msgstr "调整 HONK 的路由规则。"
msgid "Correctly configure the include field for separate-config to work, or enter complete configuration here."
msgstr "请正确配置 include 字段以启用拆分配置,或在此处填写完整配置。"
msgid "Logs"
msgstr "日志"
msgid "Memory Usage"
msgstr "内存占用"
msgid "Format Code"
msgstr "格式化代码"
msgid "Clear logs"
msgstr "清空日志"
msgid "Logs cleared successfully."
msgstr "日志已清空。"
msgid "Failed to clear logs:"
msgstr "清空日志失败:"
msgid "Configuration applied and service reloaded."
msgstr "配置已生效并重载服务。"
msgid "Status"
msgstr "状态"
msgid "Running Status"
msgstr "运行状态"
msgid "Formatted"
msgstr "已格式化"
msgid "Failed to format code:"
msgstr "格式化代码失败:"
msgid "Checking Dashboard and API configuration..."
msgstr "正在检测控制面板与 API 配置..."
msgid "Enabling Native API and restarting HONK..."
msgstr "正在启用 Native API 并重启 HONK..."
msgid "One-click Enable Default Native API"
msgstr "一键启用默认 Native API 配置"
msgid "Successfully enabled! Restarting service and initializing dashboard..."
msgstr "已成功启用!正在重启服务并初始化面板..."
msgid "Failed to enable:"
msgstr "启用失败:"
msgid "Unknown error"
msgstr "未知错误"
msgid "Dashboard / Native API Unconfigured"
msgstr "控制面板 / Native API 未配置"
msgid "HONK has not enabled Native API in its configuration file. Dashboard requires native API listener and dashboard UI path."
msgstr "HONK 尚未在配置文件中启用 Native API。控制面板需要依赖 Native API 提供的监听端口与面板静态文件路径。"
msgid "Please configure experimental.native_api block in API Settings, and ensure listen and ui are configured."
msgstr "请在【API 设置】的配置文件中配置 experimental.native_api 语法块,并确保配置了 listen 和 ui。"
msgid "Example Configuration (/etc/honk/config.d/api.dae):"
msgstr "参考配置示例(/etc/honk/config.d/api.dae):"
msgid "Configure in API Settings"
msgstr "前往【API 设置】手动配置"
msgid "(Not set)"
msgstr "(未设置)"
msgid "Preparing download..."
msgstr "准备下载..."
msgid "Please enter a valid download URL"
msgstr "请输入有效的下载 URL"
msgid "Processing..."
msgstr "正在处理..."
msgid "Start Download & Install Dashboard"
msgstr "开始下载并安装控制面板"
msgid "%s UI Files Not Found"
msgstr "未检测到 %s 面板文件"
msgid "Listen Address & Port"
msgstr "监听地址与端口"
msgid "API Secret"
msgstr "API 认证密钥"
msgid "Download Source:"
msgstr "下载源:"
msgid "Custom URL"
msgstr "自定义 URL"
msgid "HTTPS access detected:"
msgstr "检测到当前通过 HTTPS 访问 LuCI:"
msgid "Modern browsers may block HTTP iframe resources under HTTPS. If the dashboard fails to display, open it in a new tab."
msgstr "现代浏览器可能会阻止直接加载 HTTP 协议的控制面板。如无法正常显示,请点击右侧按钮在新标签页打开。"
msgid "Open in New Tab"
msgstr "在新标签页打开"
msgid "HONK service is currently not running:"
msgstr "HONK 服务当前未运行:"
msgid "Dashboard API port ("
msgstr "Dashboard API 端口("
msgid ") is not listening. Start the service to display data."
msgstr ")尚未监听。启动服务后即可正常显示数据。"
msgid "Start HONK"
msgstr "前往启动 HONK"
msgid "New Tab"
msgstr "新标签页"
msgid "Open independently in a new tab"
msgstr "在新标签页中独立打开"
msgid "Drag to scroll page"
msgstr "拖拽以滚动页面"
msgid "Update Dashboard"
msgstr "更新控制面板"
msgid "Update to latest"
msgstr "更新至最新版"
msgid "The latest version (%s) will be downloaded and deployed to:"
msgstr "系统将下载最新版本(%s)并重新部署至目标目录:"
msgid "Select download source"
msgstr "选择下载源"
msgid "Cancel"
msgstr "取消"
msgid "Start Update"
msgstr "开始更新"
msgid "Refresh"
msgstr "刷新"
msgid "Refresh dashboard content"
msgstr "刷新面板内容"
msgid "Fullscreen"
msgstr "全屏"
msgid "Toggle fullscreen display"
msgstr "切换全屏显示"
msgid "Initializing download task...\n"
msgstr "正在初始化下载任务...\n"
msgid "Failed to trigger download:"
msgstr "触发下载失败:"
msgid "Installation completed successfully!"
msgstr "安装成功,最新版本已部署。"
msgid "Installation failed. Please check logs."
msgstr "安装失败,请检查日志。"
msgid "Close"
msgstr "关闭"
msgid "Download error:"
msgstr "触发下载异常:"
msgid "Not configured (Empty)"
msgstr "未设置(留空)"
msgid "Reloading..."
msgstr "正在重载..."
msgid "HONK service reload triggered successfully."
msgstr "已成功触发 HONK 服务重载。"
msgid "Failed to reload HONK:"
msgstr "重载 HONK 失败:"
msgid "DNS configuration saved and service reloaded."
msgstr "DNS 配置已保存并重载服务。"
msgid "Node configuration saved and service reloaded."
msgstr "节点配置已保存并重载服务。"
msgid "Routing configuration saved and service reloaded."
msgstr "路由配置已保存并重载服务。"
msgid "Dashboard"
msgstr "控制面板"
msgid "Mirror"
msgstr "镜像源"
msgid "Mirror 1"
msgstr "镜像源 1"
msgid "Mirror 2"
msgstr "镜像源 2"
msgid "Tip: If the dashboard still shows the old version, press Ctrl+F5 or open in a new tab to bypass PWA cache."
msgstr "提示:若更新后仍显示旧版本,请按 Ctrl+F5 强刷或在新标签页中打开以绕过 PWA 缓存。"
msgid "Advanced Settings"
msgstr "高级设置"
msgid "Enable to display full configuration editor and advanced routing/DNS/node tabs."
msgstr "启用后将显示完整的全局配置编辑器以及路由、DNS、节点的高级分页。"
msgid "Target Dashboard"
msgstr "目标面板"
msgid "Dashboard Type"
msgstr "面板类型"
msgid "Select the active web dashboard."
msgstr "选择当前生效的 Web 管理面板。"
msgid "Doona"
msgstr "Doona"
msgid "Native API is configured, but dashboard files are missing in the UI directory. You can download and deploy it directly."
msgstr "Native API 已配置,但 UI 目录中缺少面板文件。您可以直接下载并部署。"
msgid "Target Directory (ui)"
msgstr "目标目录 (ui)"
msgid "Click to copy API Token"
msgstr "点击复制 API 认证密钥"
msgid "Token copied to clipboard: "
msgstr "认证密钥已复制到剪贴板: "
msgid "Token: "
msgstr "认证密钥: "
msgid "API Settings"
msgstr "API 设置"
msgid "Configure API settings for HONK."
msgstr "调整 HONK 的 API 设置。"
msgid "API Configuration"
msgstr "API 配置"
msgid "API configuration saved and service restarted."
msgstr "API 配置已保存并重启服务。"
msgid "None"
msgstr "无"
msgid "Dashboard Disabled"
msgstr "面板未启用"
msgid "Dashboard type is currently set to \"None\". Web dashboard and API listener are disabled."
msgstr "当前面板类型为“无”,Web 管理面板和 Native API 监听已禁用。"
msgid "Failed to switch dashboard:"
msgstr "切换面板失败:"
msgid "GitHub Release "
msgstr "GitHub Release "
msgid "Service did not accept the request"
msgstr "服务未接受该请求"
msgid "Failed to apply configuration:"
msgstr "应用配置失败:"
msgid "HONK did not come back up; check the logs"
msgstr "HONK 未能重新启动,请检查日志"
msgid "Configuration saved. HONK is disabled, so the service was not started."
msgstr "配置已保存。HONK 处于禁用状态,未启动服务。"
msgid "Download did not finish in time."
msgstr "下载超时未完成。"
msgid "Download task stopped reporting progress."
msgstr "下载任务已停止上报进度。"
msgid "Configuration saved, but the service state could not be confirmed."
msgstr "配置已保存,但无法确认服务状态。"
msgid "Running"
msgstr "运行中"
msgid "Not Running"
msgstr "未运行"
msgid "Zashboard"
msgstr "Zashboard"
msgid "Saved, but the panel files are not installed yet — download the panel first."
msgstr "配置已保存,但面板文件尚未安装,请先下载面板。"
@@ -1,744 +0,0 @@
Licence text shared by 19 packages (MIT)
========================================================================
@codemirror/autocomplete 6.20.3 (MIT) — LICENSE
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
@codemirror/commands 6.11.1 (MIT) — LICENSE
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
@codemirror/language 6.12.4 (MIT) — LICENSE
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
@codemirror/lint 6.9.7 (MIT) — LICENSE
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
@codemirror/search 6.7.2 (MIT) — LICENSE
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
@codemirror/state 6.7.6 (MIT) — LICENSE
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
@codemirror/view 6.43.13 (MIT) — LICENSE
Copyright (C) 2018-2021 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
@lezer/common 1.5.2 (MIT) — LICENSE
Copyright (C) 2018 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
@lezer/highlight 1.2.5 (MIT) — LICENSE
Copyright (C) 2018 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
@lezer/lr 1.4.10 (MIT) — LICENSE
Copyright (C) 2018 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
@marijn/find-cluster-break 1.0.4 (MIT) — LICENSE
Copyright (C) 2024 by Marijn Haverbeke <marijn@haverbeke.berlin>
aria-hidden 1.2.6 (MIT) — LICENSE
Copyright (c) 2017 Anton Korzunov
clsx 2.1.1 (MIT) — license
Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
openapi-fetch 0.17.0 (MIT) — LICENSE
Copyright (c) 2023 Drew Powers
openapi-typescript-helpers 0.1.0 (MIT) — LICENSE
Copyright (c) 2023 Drew Powers
react 19.3.0 (MIT) — LICENSE
Copyright (c) Meta Platforms, Inc. and affiliates.
react-dom 19.3.0 (MIT) — LICENSE
Copyright (c) Meta Platforms, Inc. and affiliates.
scheduler 0.28.0 (MIT) — LICENSE
Copyright (c) Meta Platforms, Inc. and affiliates.
use-sync-external-store 1.7.0 (MIT) — LICENSE
Copyright (c) Meta Platforms, Inc. and affiliates.
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Licence text shared by 2 packages (OFL-1.1)
========================================================================
@fontsource-variable/noto-sans-sc 5.3.0 (OFL-1.1) — LICENSES/OFL-1.1.txt
Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.
@fontsource-variable/noto-sans-tc 5.3.0 (OFL-1.1) — LICENSES/OFL-1.1.txt
Copyright 2014-2021 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'.
This Font Software is licensed under the SIL Open Font License,
Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font
creation efforts of academic and linguistic communities, and to
provide a free and open framework in which fonts may be shared and
improved in partnership with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply to
any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software
components as distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to,
deleting, or substituting -- in part or in whole -- any of the
components of the Original Version, by changing formats or by porting
the Font Software to a new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed,
modify, redistribute, and sell modified and unmodified copies of the
Font Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components, in
Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the
corresponding Copyright Holder. This restriction only applies to the
primary font name as presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created using
the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
Licence text shared by 8 packages (Apache-2.0)
========================================================================
@internationalized/date 3.12.4 (Apache-2.0) — LICENSE
Copyright 2019 Adobe
@internationalized/number 3.6.8 (Apache-2.0) — LICENSE
Copyright 2019 Adobe
@internationalized/string 3.2.10 (Apache-2.0) — LICENSE
Copyright 2019 Adobe
@react-types/shared 3.36.1 (Apache-2.0) — LICENSE
Copyright 2019 Adobe
@swc/helpers 0.5.23 (Apache-2.0) — LICENSE
Copyright 2024 SWC contributors.
react-aria 3.52.1 (Apache-2.0) — LICENSE
Copyright 2019 Adobe
react-aria-components 1.21.1 (Apache-2.0) — LICENSE
Copyright 2019 Adobe
react-stately 3.50.0 (Apache-2.0) — LICENSE
Copyright 2019 Adobe
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
@react-aria/optimize-locales-plugin 2.0.2 (Apache-2.0) — LICENSE
========================================================================
Only the empty.js locale helper emitted by the plugin ships.
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2019 Adobe
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Licence text shared by 3 packages (MIT)
========================================================================
crelt 1.0.7 (MIT) — LICENSE
Copyright (C) 2020 by Marijn Haverbeke <marijn@haverbeke.berlin>
style-mod 4.1.3 (MIT) — LICENSE
Copyright (C) 2018 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
w3c-keyname 2.2.8 (MIT) — LICENSE
Copyright (C) 2016 by Marijn Haverbeke <marijn@haverbeke.berlin> and others
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Licence text shared by 2 packages (ISC)
========================================================================
d3-path 3.1.0 (ISC) — LICENSE
Copyright 2015-2022 Mike Bostock
d3-shape 3.2.0 (ISC) — LICENSE
Copyright 2010-2022 Mike Bostock
Permission to use, copy, modify, and/or distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright notice
and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
THIS SOFTWARE.
rollup 4.63.2 (MIT) — LICENSE.md
========================================================================
Only the module namespace objects that Rollup writes into the build ship.
# Rollup core license
Rollup is released under the MIT license:
The MIT License (MIT)
Copyright (c) 2017 [these people](https://github.com/rollup/rollup/graphs/contributors)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
tslib 2.8.1 (0BSD) — LICENSE.txt
========================================================================
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
vite 6.4.3 (MIT) — LICENSE.md
========================================================================
Only helper code that Vite writes into the build ships: the module preload polyfill, the preload helper for dynamic imports and the CommonJS interop helper of @rollup/plugin-commonjs, which Vite bundles.
# Vite core license
Vite is released under the MIT license:
MIT License
Copyright (c) 2019-present, VoidZero Inc. and Vite contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## @rollup/plugin-alias, @rollup/plugin-commonjs, @rollup/plugin-dynamic-import-vars, @rollup/pluginutils
License: MIT
By: Johannes Stein
Repository: rollup/plugins
License: MIT
By: Rich Harris
Repository: rollup/plugins
License: MIT
By: LarsDenBakker
Repository: rollup/plugins
License: MIT
By: Rich Harris
Repository: rollup/plugins
> The MIT License (MIT)
>
> Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors)
>
> Permission is hereby granted, free of charge, to any person obtaining a copy
> of this software and associated documentation files (the "Software"), to deal
> in the Software without restriction, including without limitation the rights
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> copies of the Software, and to permit persons to whom the Software is
> furnished to do so, subject to the following conditions:
>
> The above copyright notice and this permission notice shall be included in
> all copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> THE SOFTWARE.
Packages without a licence file
========================================================================
client-only 0.0.1 (MIT)
@@ -1 +0,0 @@
import{j as r}from"./vendor-react-64fcanlc.js";import{I as a}from"./index-HxEUeoab.js";function o(o){return r.jsx(a,{...o,children:r.jsx("path",{fill:"currentColor",d:"M10 1.5a8.5 8.5 0 1 0 0 17 8.5 8.5 0 0 0 0-17m0 15.5a7 7 0 1 1 0-14 7 7 0 0 1 0 14m3.75-7.75h-3v-3a.75.75 0 0 0-1.5 0v3h-3a.75.75 0 0 0 0 1.5h3v3a.75.75 0 0 0 1.5 0v-3h3a.75.75 0 0 0 0-1.5"})})}export{o as A};
@@ -1 +0,0 @@
import{r as e,$ as s,j as l}from"./vendor-react-64fcanlc.js";import{cB as a,cA as n,cD as t,cC as c,fU as i,dZ as r,fV as o,cQ as d,cV as u,d3 as p,d2 as b,cU as h,eW as m,cm as f,fW as x,b7 as j,fX as v,fY as g,cl as C,bw as y,fZ as N,dh as k,f_ as A,di as P,co as S,u as M,b4 as D,f$ as w,bp as L,fr as q,g0 as I,fs as V,dj as $,fu as H,g1 as F,ft as E,T as O,I as z,bg as B,B as R,dV as T}from"./index-HxEUeoab.js";import{a as K,b as U}from"./ItemText-DOD_75iR.js";const W=e.createContext(null),Z=e.forwardRef(function(e,l){[e,l]=d(e,l,W);let m=e.href&&!e.isDisabled?"a":"span",{linkProps:f,isPressed:x}=function(e,s){let{elementType:l="a",onPress:d,onPressStart:u,onPressEnd:p,onPressChange:b,onClick:h,isDisabled:m,...f}=e,x={};"a"!==l&&(x={role:"link",tabIndex:m?void 0:0});let{focusableProps:j}=a(e,s),{pressProps:v,isPressed:g}=n({onPress:d,onPressStart:u,onPressEnd:p,onPressChange:b,onClick:h,isDisabled:m,ref:s}),C=t(f,{labelable:!0}),y=c(j,v),N=i(),k=r(e);return{isPressed:g,linkProps:c(C,k,{...y,...x,"aria-disabled":m||void 0,"aria-current":e["aria-current"],onClick:s=>{v.onClick?.(s),o(s,N,e.href,e.routerOptions)}})}}({...e,elementType:m},l),j=u[m],{hoverProps:v,isHovered:g}=p(e),{focusProps:C,isFocused:y,isFocusVisible:N}=b(),k=h({...e,defaultClassName:"react-aria-Link",values:{isCurrent:!!e["aria-current"],isDisabled:e.isDisabled||!1,isPressed:x,isHovered:g,isFocused:y,isFocusVisible:N}}),A=t(e,{global:!0});return delete A.onClick,s.createElement(j,{ref:l,slot:e.slot||void 0,...c(A,k,f,v,C),"data-focused":y||void 0,"data-hovered":g||void 0,"data-pressed":x||void 0,"data-focus-visible":N||void 0,"data-current":!!e["aria-current"]||void 0,"data-disabled":e.isDisabled||void 0},k.children)});function _({external:e,layout:s,appearance:a,label:n,className:t,quiet:c,secondary:i,small:r,icon:o,accent:d,negative:u,size:p,...b}){const h="button"===a?m({quiet:c,secondary:i,small:r,icon:o,accent:d,negative:u}):`rp-${a}`,v=f(p);return l.jsx(Z,{target:e?"_blank":void 0,rel:e?"noreferrer":void 0,"aria-label":n,"data-layout":s,"data-size":v,...b,className:a?x(t,e=>j(h,e)):t})}const Q=e=>e>12,X=e=>s=>{if("all"===s)return;const l=[...s][0];null!=l&&e(String(l))};function Y({item:e,children:s,onAction:a}){return l.jsxs(E,{id:e.id,className:"rp-item",textValue:e.label,onAction:a,children:[l.jsx(K,{}),l.jsx(U,{i:e,children:s})]})}function G({children:s,content:a,label:n,quiet:t,small:c,size:i,chevron:r=!0,isDisabled:o,appearance:d,placement:u="bottom end",count:p,onIntent:b}){const h=p?l.jsx("span",{className:"rp-count","aria-hidden":"true",children:p}):null,x=g(o),[j,v]=e.useState(!1),M=f(i),D=e.useRef(null),w=l.jsxs(C,{ref:D,className:d?"rp-select":m({quiet:t,small:c,icon:!r}),"data-size":M,"aria-label":n,"aria-describedby":x?.id,isDisabled:o,onHoverStart:b,onFocus:b,children:[s,h,r&&l.jsx(y,{className:"rp-chev"})]});return l.jsxs(N,{children:[r&&!x?w:l.jsxs(k,{delay:400,isOpen:j,onOpenChange:v,children:[l.jsx(A,{children:l.jsx("span",{className:"rp-tipwrap",tabIndex:o?0:-1,"data-passive":o?void 0:"",onPointerDown:e=>{o&&"touch"===e.pointerType&&v(e=>!e)},children:w})}),l.jsx(P,{triggerRef:D,children:x?.text??n})]}),l.jsx(S,{className:"rp-popover rp-list-popover",placement:u,children:a})]})}function J({label:e,labelledBy:s,sections:a,headers:n=!0,focusedByCaller:t,onAction:c,searchLabel:i,actions:r=[]}){const o="function"==typeof a?a():a,d=!!i&&Q(ee(o)),u=l.jsxs(q,{"aria-label":e,"aria-labelledby":s??"",className:d?"rp-menu-scroll":void 0,autoFocus:!t&&void 0,children:[o.map(e=>l.jsxs(V,{"aria-label":n&&!e.hideHeader?void 0:e.title,selectionMode:e.selectionMode??"single",selectedKeys:[`/choice-${e.value}`],onSelectionChange:e.onChange&&X(s=>e.onChange(s.slice(8))),children:[n&&!e.hideHeader&&l.jsx($,{className:"rp-sec-h",children:e.title}),e.items.map(e=>l.jsx(Y,{item:{...e,id:`/choice-${e.id}`},onAction:c&&(()=>c(e.id))},e.id))]},e.title)),r.length>0&&l.jsx(H,{className:"rp-hrule"}),r.map(e=>l.jsx(le,{...e},e.label))]});return d?l.jsx(F,{label:i,children:u}):u}const ee=e=>e.reduce((e,s)=>e+s.items.length,0);function se(e,s){for(const l of e){const a=l.items.find(e=>e.id===l.value);if(a)return e.length>1&&!l.plain&&a.label!==l.title?s("ui.sectionChoice",{section:l.title,item:a.label}):a.label}return""}const le=({label:e,icon:s,onAction:a})=>l.jsxs(E,{className:"rp-item rp-subitem",textValue:e,onAction:a,shouldCloseOnSelect:!0,children:[l.jsx("span",{className:"ic",children:s}),l.jsx(O,{children:e})]}),ae=({id:e,label:s,icon:a,sections:n})=>{const t=M();return l.jsxs(E,{id:e,className:"rp-item rp-subitem",textValue:s,children:[l.jsx("span",{className:"ic",children:a}),l.jsx(O,{children:s}),l.jsxs("span",{className:"desc",children:[se(n,t),l.jsx(y,{className:"rp-chev-end"})]})]})};function ne({label:s,submenus:a,actions:n=[]}){const t="function"==typeof a?a():a,c=M(),i=D(w),[r,o]="rtl"===L().direction?["ArrowLeft","ArrowRight"]:["ArrowRight","ArrowLeft"],[{open:d,left:u},p]=e.useState({open:null,left:null}),b=e.useRef(null),hLine truncated
@@ -1 +0,0 @@
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{u as a,f as s,g2 as n,dr as o,g3 as l}from"./index-HxEUeoab.js";import{a as i,aW as r,aX as c,aY as u,aZ as h,a_ as m,a$ as p,b0 as d,b1 as x}from"./activity-yZTrGy-J.js";import{G as f,C as M}from"./AreaCurve-DQSHOSpG.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./AppearanceControls-sRy1p156.js";import"./ItemText-DOD_75iR.js";import"./logs-C4GIy4tX.js";import"./Select-D7_6MaHd.js";import"./array-C0VuvQyb.js";const g=[30,60,120,300,600,900,1800,3600,7200,21600,43200,86400].map(e=>1e3*e);function j(t,a){const[s,n]=e.useState([]),o=e.useRef("");return e.useLayoutEffect(()=>{const e=[a,...t].join("\0");if(e===o.current)return;o.current=e;const s=document.createElement("span");s.className="rp-area-tick",Object.assign(s.style,{position:"absolute",top:"-20000px",whiteSpace:"pre"}),document.body.appendChild(s),n(t.map(e=>{s.textContent=e;const{width:t,height:a}=s.getBoundingClientRect();return{width:t,height:a}})),s.remove()},[t,a]),s}function y({label:y,series:b,timestamps:v,fmt:w,locale:k,height:C=150,baseline:D="zero",window:$,fill:N,bare:S=!1,inset:A=2}){const L=a(),T=i(),B=e.useId(),[E,F]=s(Math.round,120),{tip:P,showAt:I,hide:K}=r(),[W,z]=e.useState(null),O=W&&W.index<v.length?W.index:null,R=$?$.until-$.since:v.length?v[v.length-1]-v[0]:0,_=$?.since,G=$?.until,H=e.useMemo(()=>void 0!==_&&void 0!==G?function(e,t){const a=t-e,s=g.find(e=>a/e<=6)??g[g.length-1],n=s>=864e5?6e4*new Date(t).getTimezoneOffset():0,o=[];for(let l=Math.ceil((e-n)/s)*s+n;l<=t;l+=s)l-e>=.04*a&&t-l>=.04*a&&o.push(l);return{ticks:o,step:s}}(_,G):void 0,[_,G]),X=H?H.step<6e4:R<18e4,Y=H?H.step>=864e5:R>1296e5,Z=e.useMemo(()=>Y?n(k):o(k,X),[k,X,Y]),{yDomain:q,yTicks:J}=e.useMemo(()=>{const e=b.flatMap(e=>e.values.filter(e=>null!==e));let t=0,a=(e=>{const t=Math.pow(10,Math.floor(Math.log10(e))),a=e/t;return([1,1.2,1.5,2,2.5,3,4,5,6,8,10].find(e=>a<=e)??10)*t})(1.08*Math.max(1,...e));if("auto"===D&&e.length){const s=Math.min(...e),n=Math.max(...e),o=(e=>{const t=Math.pow(10,Math.floor(Math.log10(Math.max(e,1e-9)))),a=e/t;return(a<=1?.2:a<=2?.5:a<=5?1:2)*t})(Math.max(n-s,.02*n,1));t=Math.max(0,Math.floor(s/o)*o-o),a=Math.ceil(n/o)*o+o}return{yDomain:[t,a],yTicks:"auto"===D?[t,(t+a)/2,a]:[a/2,a]}},[b,D]),Q=e.useMemo(()=>{const e=v.length-1;return H?H.ticks:[...new Set((X?[0,Math.round(e/2),e]:[0,Math.round(e/3),Math.round(2*e/3),e]).map(e=>v[e]))]},[H,X,v]),U=e.useMemo(()=>void 0!==_&&void 0!==G?[_,G]:[Math.min(...v),Math.max(...v)],[_,G,v]),V=F?.width??0,ee=F?.height??C,te=S?A:20,ae=S?2:8,se=ee-(S?2:30),ne=V-(S?A:64),oe=e.useMemo(()=>[Math.min(U[0],...v),Math.max(U[1],...v)],[U,v]),le=e.useCallback(e=>c(e,oe,[te,ne]),[oe,te,ne]),ie=e.useCallback(e=>c(e,q,[se,ae]),[q,se,ae]),re=e.useMemo(()=>v.map(le),[v,le]),ce=e.useMemo(()=>b.map(e=>v.map((t,a)=>null==e.values[a]?null:{x:re[a],y:ie(e.values[a])})),[b,v,re,ie]),ue={x:te,y:ae,width:ne-te,height:se-ae},he=(e,t)=>z({index:e,y:t}),me=()=>{z(null),K()};e.useLayoutEffect(()=>{null!==O&&b.some(e=>null!=e.values[O])?I({x:re[O],y:W?.y??(ae+se)/2,width:V,bounds:S&&E.current?u(E.current):ue,label:l(k).format(v[O]),lines:b.filter(e=>null!=e.values[O]).sort((e,t)=>e.label<t.label?-1:e.label>t.label?1:0).map(e=>L("ui.valuePair",{label:e.label,value:w(e.values[O])}))}):K()});const pe=h(v.length,he,me),de=e.useMemo(()=>Q.map(e=>Z.format(e)),[Q,Z]),xe=e.useMemo(()=>J.map(w),[J,w]),fe=j(de,k),Me=j(xe,k),ge=H?m(Q.map(le),fe.map(e=>e.width),0,V,16,!0):function(e,t,a){const s=a=>[e[a]-(t[a]??0)/2,e[a]+(t[a]??0)/2],n=e.length-1,o=[];let l=1/0;for(let i=n;i>=0;i--){const[t,r]=s(i);r+a>l||i>0&&i<n&&t<s(0)[1]+a||(o.unshift({index:i,position:e[i]}),l=t)}return o}(Q.map(le),fe.map(e=>e.width),8),je=m(J.map(ie),Me.map(e=>e.height),0,ee,5,!1),ye=[...new Set([...(S?J:je.map(e=>J[e.index])).map(ie),ae,se])];return t.jsx("div",{ref:E,style:{height:C,width:"100%",flex:N?"1 0 auto":void 0,position:"relative"},onPointerLeave:pe.onPointerLeave,children:v.length>0&&F&&t.jsxs(t.Fragment,{children:[t.jsx(p,{tip:P}),t.jsxs("svg",{className:"rp-activity-surface",width:V,height:ee,viewBox:`0 0 ${V} ${ee}`,style:{display:"block"},role:"application","aria-label":y,tabIndex:0,onFocus:pe.onFocus,onBlur:pe.onBlur,onKeyDown:pe.onKeyDown,onPointerMove:e=>{const{x:t,y:a}=d(e,e.currentTarget,{width:V,height:ee});if(t<te||t>ne||a<ae||a>se)return void me();const s=x(re,t);he(s,a)},children:[t.jsx("g",{className:"rp-area-grid",children:ye.map(e=>t.jsx("line",{x1:te,x2:ne,y1:e,y2:e,stroke:T["hl-med"],strokeDasharray:"2 4",fill:"none"},e))}),t.jsx("defs",{children:b.map((e,a)=>t.jsx(f,{id:B+a,color:e.color},e.label))}),b.map((e,a)=>t.jsx(M,{points:ce[a],baseline:ie(Math.max(0,q[0])),color:e.color,id:B+a,strokeWidth:2},e.label)),null!==O&&t.jsx("path",{d:`M${re[O]},${ae}L${re[O]},${se}`,stroke:T.subtle,strokeDasharray:"3 3",fill:"none",pointerEvents:"none"}),!S&&t.jsxs(t.Fragment,{children:[t.jsx("g",{children:ge.map(({index:e,position:a})=>t.jsx("text",{x:Line truncated
@@ -1 +0,0 @@
import{j as t,r as n}from"./vendor-react-64fcanlc.js";import{w as i,c as e,a as o}from"./array-C0VuvQyb.js";function r(t){this._context=t}function u(t){return new r(t)}function l(t){return t[0]}function s(t){return t[1]}function c(t,n){var r=e(!0),c=null,f=u,h=null,a=i(_);function _(i){var e,u,l,s=(i=o(i)).length,_=!1;for(null==c&&(h=f(l=a())),e=0;e<=s;++e)!(e<s&&r(u=i[e],e,i))===_&&((_=!_)?h.lineStart():h.lineEnd()),_&&h.point(+t(u,e,i),+n(u,e,i));if(l)return h=null,l+""||null}return t="function"==typeof t?t:void 0===t?l:e(t),n="function"==typeof n?n:void 0===n?s:e(n),_.x=function(n){return arguments.length?(t="function"==typeof n?n:e(+n),_):t},_.y=function(t){return arguments.length?(n="function"==typeof t?t:e(+t),_):n},_.defined=function(t){return arguments.length?(r="function"==typeof t?t:e(!!t),_):r},_.curve=function(t){return arguments.length?(f=t,null!=c&&(h=f(c)),_):f},_.context=function(t){return arguments.length?(null==t?c=h=null:h=f(c=t),_):c},_}function f(t){return t<0?-1:1}function h(t,n,i){var e=t._x1-t._x0,o=n-t._x1,r=(t._y1-t._y0)/(e||o<0&&-0),u=(i-t._y1)/(o||e<0&&-0),l=(r*o+u*e)/(e+o);return(f(r)+f(u))*Math.min(Math.abs(r),Math.abs(u),.5*Math.abs(l))||0}function a(t,n){var i=t._x1-t._x0;return i?(3*(t._y1-t._y0)/i-n)/2:n}function _(t,n,i){var e=t._x0,o=t._y0,r=t._x1,u=t._y1,l=(r-e)/3;t._context.bezierCurveTo(e+l,o+l*n,r-l,u-l*i,r,u)}function p(t){this._context=t}function y(t){return new p(t)}function x({id:n,color:i}){return t.jsxs("linearGradient",{id:n,x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{offset:"0%",stopColor:i,stopOpacity:.35}),t.jsx("stop",{offset:"100%",stopColor:i,stopOpacity:.03})]})}r.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}},p.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:_(this,this._t0,a(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var i=NaN;if(n=+n,(t=+t)!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,_(this,a(this,i=h(this,t,n)),i);break;default:_(this,this._t0,i=h(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=i}}},Object.create(p.prototype).point=function(t,n){p.prototype.point.call(this,n,t)};const d=n.memo(function({points:n,baseline:r,color:f,id:h,strokeWidth:a}){if(1===n.length){const i=n[0];return i?t.jsx("circle",{cx:i.x,cy:i.y,r:3,stroke:f,strokeWidth:a,fill:`url(#${h})`,fillOpacity:.6}):null}const _=t=>null!==t&&Number.isFinite(t.x)&&Number.isFinite(t.y),p=c().defined(_).x(t=>t.x).y(t=>t.y).curve(y).digits(3),x=function(t,n,r){var f=null,h=e(!0),a=null,_=u,p=null,y=i(x);function x(i){var e,u,l,s,c,x=(i=o(i)).length,d=!1,v=new Array(x),g=new Array(x);for(null==a&&(p=_(c=y())),e=0;e<=x;++e){if(!(e<x&&h(s=i[e],e,i))===d)if(d=!d)u=e,p.areaStart(),p.lineStart();else{for(p.lineEnd(),p.lineStart(),l=e-1;l>=u;--l)p.point(v[l],g[l]);p.lineEnd(),p.areaEnd()}d&&(v[e]=+t(s,e,i),g[e]=+n(s,e,i),p.point(f?+f(s,e,i):v[e],r?+r(s,e,i):g[e]))}if(c)return p=null,c+""||null}function d(){return c().defined(h).curve(_).context(a)}return t="function"==typeof t?t:void 0===t?l:e(+t),n="function"==typeof n?n:e(void 0===n?0:+n),r="function"==typeof r?r:void 0===r?s:e(+r),x.x=function(n){return arguments.length?(t="function"==typeof n?n:e(+n),f=null,x):t},x.x0=function(n){return arguments.length?(t="function"==typeof n?n:e(+n),x):t},x.x1=function(t){return arguments.length?(f=null==t?null:"function"==typeof t?t:e(+t),x):f},x.y=function(t){return arguments.length?(n="function"==typeof t?t:e(+t),r=null,x):n},x.y0=function(t){return arguments.length?(n="function"==typeof t?t:e(+t),x):n},x.y1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:e(+t),x):r},x.lineX0=x.lineY0=function(){return d().x(t).y(n)},x.lineY1=function(){return d().x(t).y(r)},x.lineX1=function(){return d().x(f).y(n)},x.defined=function(t){return arguments.length?(h="function"==typeof t?t:e(!!t),x):h},x.curve=function(t){return arguments.length?(_=t,null!=a&&(p=_(a)),x):_},x.context=function(t){return arguments.length?(null==t?a=p=null:p=_(a=t),x):a},x}().defined(_).x(t=>t.x).y0(r).y1(t=>t.y).curve(y).digits(3);return t.jsxs("g",{children:[t.jsx("path",{d:x(n)??void 0,stroke:"none",fill:`url(#${h})`,fillOpacity:.6}),t.jsx("path",{className:"rLine truncated
@@ -1 +0,0 @@
import{ez as e,g4 as t,cC as i,fj as a,cP as s,g5 as l,g6 as n,em as r,en as o,ep as d,eP as c,cL as u,ey as m,eo as f,cK as v,cQ as p,cR as g,cS as b,c$ as h,d0 as R,d1 as I,d2 as M,d3 as P,cU as y,cD as S,cV as C,aD as V}from"./index-HxEUeoab.js";import{r as x,$ as D}from"./vendor-react-64fcanlc.js";function $(t,i){const a=x.useRef(!0),s=x.useRef(null);let l=e(t);x.useEffect(()=>(a.current=!0,()=>{a.current=!1}),[]),x.useEffect(()=>{let e=s.current;a.current?a.current=!1:e&&!i.some((t,i)=>!Object.is(t,e[i]))||l(),s.current=i},i)}function E(e,a,s){let{labelProps:l,inputProps:n,descriptionProps:r,errorMessageProps:o,isSelected:d,isPressed:c,isDisabled:u,isReadOnly:m,isInvalid:f,validationErrors:v,validationDetails:p}=t(e,a,s),{isIndeterminate:g}=e;return x.useEffect(()=>{s.current&&(s.current.indeterminate=!!g)}),{labelProps:i(l,x.useMemo(()=>({onMouseDown:e=>e.preventDefault()}),[])),inputProps:n,descriptionProps:r,errorMessageProps:o,isSelected:d,isPressed:c,isDisabled:u,isReadOnly:m,isInvalid:f,validationErrors:v,validationDetails:p}}const B=new WeakMap;var O;function k(e,t){let{getRowText:i=e=>t.collection.getTextValue?.(e)??t.collection.getItem(e)?.textValue}=e,a=o((s=O)&&s.__esModule?s.default:s,"@react-aria/grid");var s;let l=t.selectionManager.rawSelection,n=x.useRef(l),r=x.useCallback(()=>{if(!t.selectionManager.isFocused||l===n.current)return void(n.current=l);let e=F(l,n.current),s=F(n.current,l),r="replace"===t.selectionManager.selectionBehavior,o=[];if(1===t.selectionManager.selectedKeys.size&&r){let e=t.selectionManager.selectedKeys.keys().next().value;if(null!=e&&t.collection.getItem(e)){let t=i(e);t&&o.push(a.format("selectedItem",{item:t}))}}else if(1===e.size&&0===s.size){let t=e.keys().next().value;if(null!=t){let e=i(t);e&&o.push(a.format("selectedItem",{item:e}))}}else if(1===s.size&&0===e.size){let e=s.keys().next().value;if(null!=e&&t.collection.getItem(e)){let t=i(e);t&&o.push(a.format("deselectedItem",{item:t}))}}"multiple"===t.selectionManager.selectionMode&&(0===o.length||"all"===l||l.size>1||"all"===n.current||n.current?.size>1)&&o.push("all"===l?a.format("selectedAll"):a.format("selectedCount",{count:l.size})),o.length>0&&d(o.join(" ")),n.current=l},[l,t.selectionManager.selectedKeys,t.selectionManager.isFocused,t.selectionManager.selectionBehavior,t.selectionManager.selectionMode,t.collection,i,a]);$(()=>{if(!t.selectionManager.isFocused){let e=requestAnimationFrame(r);return()=>cancelAnimationFrame(e)}r()},[l,t.selectionManager.isFocused])}function F(e,t){let i=new Set;if("all"===e||"all"===t)return i;for(let a of e.keys())t.has(a)||i.add(a);return i}function w(e,t){let i=t?.isDisabled,[a,s]=x.useState(!1);return c(()=>{if(e?.current&&!i){let t=()=>{if(e.current){let t=u(e.current,{tabbable:!0});s(!!t.nextNode())}};t();let i=new MutationObserver(t);return i.observe(e.current,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["tabIndex","disabled"]}),()=>{i.disconnect()}}}),!i&&a}function T(e){let t=o((i=O)&&i.__esModule?i.default:i,"@react-aria/grid");var i;let a=m(),s=("pointer"===a||"virtual"===a||null==a)&&"undefined"!=typeof window&&"ontouchstart"in window,l=x.useMemo(()=>{let i,a=e.selectionManager.selectionMode,l=e.selectionManager.selectionBehavior;return s&&(i=t.format("longPressToSelect")),"replace"===l&&"none"!==a&&e.hasItemActions?i:void 0},[e.selectionManager.selectionMode,e.selectionManager.selectionBehavior,e.hasItemActions,t,s]);return f(l)}function z(e,t){let{key:i}=e,a=t.selectionManager,s=v(),l=!t.selectionManager.canSelectItem(i),n=t.selectionManager.isSelected(i);var r;return{checkboxProps:{id:s,"aria-label":o((r=O)&&r.__esModule?r.default:r,"@react-aria/grid").format("select"),isSelected:n,isDisabled:l,onChange:()=>a.toggleSelection(i)}}}O={"ar-AE":r,"bg-BG":r,"cs-CZ":r,"da-DK":r,"de-DE":r,"el-GR":r,"en-US":{deselectedItem:e=>`${e.item} not selected.`,select:"Select",selectedCount:(e,t)=>`${t.plural(e.count,{"=0":"No items selected",one:()=>`${t.number(e.count)} item selected`,other:()=>`${t.number(e.count)} items selected`})}.`,selectedAll:"All items selected.",selectedItem:e=>`${e.item} selected.`,longPressToSelect:"Long press to enter selection mode."},"es-ES":r,"et-EE":r,"fi-FI":r,"fr-FR":r,"he-IL":r,"hr-HR":r,"hu-HU":r,"it-IT":r,"ja-JP":r,"ko-KR":r,"lt-LT":r,"lv-LV":r,"nb-NO":r,"nl-NL":r,"pl-PL":r,"pt-BR":r,"pt-PT":r,"ro-RO":r,"ru-RU":r,"sk-SK":r,"sl-SI":r,"sr-SP":r,"sv-SE":r,"tr-TR":r,"uk-UA":r,"zh-CN":{deselectedItem:e=>`未选择 ${e.item}。`,longPressToSelect:"长按以进入选择模式。",select:"选择",selectedAll:"已选择所有项目。",selectedCount:(e,t)=>`${t.plural(e.count,{"=0":"未选择项目",one:()=>`已选择 ${t.number(e.count)} 个项目`,other:()=>`已选择 ${t.number(e.count)} 个项目`})}。`,selectedItem:e=>`已选择 ${e.item}。`},"zh-TW":{deselectedItem:e=>`未選取「${e.item}」。`,longPressToSelect:"長按以進入選擇模式。",select:"選取",selectedAll:"已選取所有項目。",selectedCount:(e,t)=>Line truncated
@@ -1 +0,0 @@
import{r as e,j as r}from"./vendor-react-64fcanlc.js";import{bN as t,gr as o,bM as n,fl as a,bq as c,u as s,df as i,B as l,fr as d,ft as p}from"./index-HxEUeoab.js";import{S as m,a as u,E as f,C as g,b,l as v,c as x,h,d as y,r as k,e as w,f as C,g as j,i as R,j as A,s as E,k as L,t as M,m as N,n as F,o as O,p as S,q as $,u as q,v as B,w as D,x as I,y as T,z as H,D as K,R as V,A as z,B as G,F as U,G as W,H as P,I as J,J as _,K as Q,L as X}from"./vendor-editor-BRV-W12m.js";import{d as Y,s as Z}from"./daeTokens-BVtuNnWZ.js";import{s as ee}from"./nodes-6sIn2I0s.js";import{M as re}from"./AppearanceControls-sRy1p156.js";import{A as te,n as oe}from"./logs-C4GIy4tX.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./index-DUM-iwa2.js";import"./ItemText-DOD_75iR.js";import"./Select-D7_6MaHd.js";const ne=m.define({name:"dae",languageData:{commentTokens:{line:"#"},closeBrackets:{brackets:["(","{","'",'"']}},startState:Z,token:Y}),ae=["global","subscription","node","group","dns","routing"].map(e=>({label:e,type:"keyword"})),ce=n.map(e=>({label:e,type:"property",apply:e+": "})),se=["domain","dip","sip","dport","sport","l4proto","ipversion","pname","mac","dscp","qname","qtype","upstream"].map(e=>({label:e,type:"function",apply:e+"("})),ie=["geosite","geoip","suffix","full","keyword","regex"].map(e=>({label:e,type:"constant",apply:e+":"})),le=o.map(e=>({label:e,type:"constant"})),de=t.map(e=>({label:e,type:"keyword"})),pe=[{label:"fallback",type:"keyword",apply:"fallback: "},{label:"include",type:"keyword",apply:"include "}];function me(e){return u({override:[r=>function(e,r){const t=e.matchBefore(/[\w.-]*/);if(!t)return null;const o=e.state.doc.lineAt(e.pos),n=o.text.slice(0,e.pos-o.from),a=/->\s*[\w.-]*$/.test(n)||/^\s*fallback:\s*[\w.-]*$/.test(n);if(t.from===t.to&&!e.explicit&&!a)return null;const c=e.state.doc.sliceString(0,e.pos),{blocks:s,tokens:i}=ee(c),l=i.at(-1);if(l?.to===e.pos&&("quoted"===l.kind||"comment"===l.kind))return null;const d=s.find(r=>r.close===e.pos)?.name;let p;if(a)p=[...r().map(e=>({label:e.name,apply:e.written,type:"variable"})),...de];else if(/\b(domain|dip|sip|qname)\(\s*[\w.-]*$/.test(n))p=ie;else if(void 0===d)p=ae.map(e=>({...e,apply:(r,t,o,n)=>{const a=e.label+" {\n \n}";r.dispatch({changes:{from:o,to:n,insert:a},selection:{anchor:o+e.label.length+4}})}}));else if("routing"===d||"dns"===d)p=[...se,...pe];else if("global"===d)p=ce;else{if("group"!==d)return null;p=/\bpolicy\s*:\s*[\w.-]*$/.test(n)?le:[...le.map(e=>({...e,apply:"policy: "+e.label})),{label:"filter",type:"property",apply:"filter: "}]}return{from:t.from,options:p,validFor:/^[\w.-]*$/}}(r,e)]})}function ue(e){let r=!1;const t=r=>(r.state.readOnly&&e(),!1);return f.domEventHandlers({keydown:(e,r)=>function(e){return"Backspace"===e.key||"Delete"===e.key||"Enter"===e.key||1===[...e.key].length&&!e.ctrlKey&&!e.metaKey}(e)&&t(r),paste:(e,r)=>t(r),cut:(e,r)=>t(r),pointerdown:e=>(r="touch"===e.pointerType,!1),click:(e,o)=>r&&t(o)})}const fe=[["Completions","cm.completions"],["Find","cm.find"],["Replace","cm.replace"],["next","cm.next"],["previous","cm.previous"],["all","cm.all"],["match case","cm.matchCase"],["regexp","cm.regexp"],["by word","cm.byWord"],["replace","cm.replaceOne"],["replace all","cm.replaceAll"],["close","ui.close"],["Go to line","cm.gotoLine"],["go","cm.go"],["current match","cm.currentMatch"],["replaced $ matches","cm.replacedMatches"],["replaced match on line $","cm.replacedOnLine"],["on line","cm.onLine"],["Selection deleted","cm.selectionDeleted"],["Control character","cm.controlCharacter"]],ge=e=>b.phrases.of(Object.fromEntries(fe.map(([r,t])=>[r,e(t)]))),be=f.theme({"&":{backgroundColor:"var(--rp-base)",color:"var(--rp-text)",border:"1px solid var(--rp-hl-high)",borderRadius:"var(--rp-r-md)",fontSize:"var(--rp-text-sm)"},"&.cm-focused":{outline:"none",borderColor:"var(--rp-text)"},".cm-scroller":{fontFamily:"var(--rp-font-mono)",lineHeight:"var(--rp-line-body)",fontVariantLigatures:"none",borderRadius:"calc(var(--rp-r-md) - 1px)"},".cm-content":{padding:"var(--rp-space-2) 0",caretColor:"var(--rp-text)"},".cm-line":{padding:"0 var(--rp-space-3)"},".cm-gutters":{backgroundColor:"var(--rp-base)",color:"var(--rp-muted)",border:"none"},".cm-lineNumbers .cm-gutterElement":{padding:"0 var(--rp-space-2) 0 var(--rp-space-3)",minWidth:"40px"},".cm-activeLine, .cm-focusLine":{backgroundColor:"color-mix(in srgb, var(--rp-hl-med) 60%, transparent)"},".cm-activeLineGutter":{backgroundColor:"transparent",color:"var(--rp-text)"},".cm-selectionBackground, &.cm-focused .cm-selectionBackground, ::selection":{backgroundColor:"var(--rp-hl-high)"},".cm-cursor":{borderLeftColor:"var(--rp-text)"},".cm-matchingBracket":{backgroundColor:"color-mix(in srgb, var(--rp-accent) 20%, transparent)",outline:"none"},".cm-selectionMatch":{backgroundColor:"color-mix(in srgb, var(--rp-notice) 25%, transparent)"},".cm-gutter-lint":{width:"12px"},".cm-gutter-lint .cm-gutterElement":{padding:"0"},".cm-lint-marker":{width:"8px",height:"8px",marginLine truncated
@@ -1 +0,0 @@
import{r as s,j as e}from"./vendor-react-64fcanlc.js";import{$ as a}from"./Checkbox-CJt7u9-e.js";import{C as r}from"./ItemText-DOD_75iR.js";import{da as i,I as l,cq as n,ch as c,B as d}from"./index-HxEUeoab.js";function o({label:l,description:n,isSelected:c,onChange:d,isDisabled:o}){const t=s.useId(),h=s.useId(),x=i({isDisabled:o});return e.jsxs(a,{className:"rp-radio rp-checkbox",isSelected:c,onChange:d,isDisabled:x.isDisabled,"aria-labelledby":t,"aria-describedby":n?h:void 0,children:[e.jsx("span",{className:"rp-checkbox-mark",children:e.jsx(r,{})}),e.jsxs("span",{className:"rp-radio-text",children:[e.jsx("span",{id:t,children:l}),n&&e.jsx("span",{id:h,className:"rp-note",children:n})]})]})}function t(s){return e.jsx(l,{...s,children:e.jsx("path",{fill:"currentColor",d:"M17.78 1.757C16.51.716 14.555.858 13.33 2.08L3.079 12.334c-.32.32-.559.717-.69 1.15l-1.384 4.584c-.08.265-.007.552.188.747.142.143.334.22.53.22q.11 0 .217-.032l4.582-1.384c.434-.13.832-.368 1.151-.688L18.028 6.575c.648-.647.993-1.545.948-2.46s-.482-1.775-1.195-2.358M2.846 17.163l.98-3.246q.042-.135.113-.257l2.41 2.409q-.123.07-.259.114zM16.966 5.516l-9.525 9.526-2.475-2.476 9.425-9.425c.386-.387.896-.586 1.39-.586.38 0 .752.119 1.05.362.392.321.621.772.646 1.272.025.494-.161.977-.51 1.327"})})}function h({children:s}){return e.jsx("div",{className:"rp-toolbar",children:s})}function x({children:s,negate:a,onNegate:r,negateLabel:i,removeLabel:l,onRemove:o,isDisabled:t,removeDisabled:x}){return e.jsxs(n,{children:[s,e.jsxs(h,{children:[e.jsx(c,{isDisabled:t,isSelected:a,onChange:r,children:i}),e.jsx("span",{className:"rp-grow"}),e.jsx(d,{small:!0,isDisabled:t||x,onPress:o,children:l})]})]})}export{o as C,t as E,x as a,h as b};
@@ -1,2 +0,0 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CodeEditor-DdrUcw42.js","./vendor-react-64fcanlc.js","./_commonjsHelpers-CXUWDbkB.js","./index-HxEUeoab.js","./index-CcbWXWDN.css","./vendor-editor-BRV-W12m.js","./index-DUM-iwa2.js","./daeTokens-BVtuNnWZ.js","./nodes-6sIn2I0s.js","./AppearanceControls-sRy1p156.js","./ItemText-DOD_75iR.js","./logs-C4GIy4tX.js","./Select-D7_6MaHd.js"])))=>i.map(i=>d[i]);
import{r as e,j as n}from"./vendor-react-64fcanlc.js";import{h as i,u as s,al as a,l as r,q as t,r as o,x as l,c4 as c,w as d,c6 as u,Y as g,A as f,aK as p,c2 as m,cw as h,dk as b,dl as x,a1 as v,a0 as j,a9 as y,bO as w,z as k,cv as N,dm as S,t as D,aM as C,aV as T,B as P,aA as O,E as _,bk as R,ax as E,af as M,b5 as A,cq as L,aL as F,C as I,m as H,dn as q,bF as $,bG as K,df as V,a as W,b as U,v as B,aN as z,cs as G,p as J,aD as Q,aG as Y,d9 as X,_ as Z,av as ee,T as ne}from"./index-HxEUeoab.js";import{a as ie,u as se,w as ae,e as re,c as te,H as oe,I as le,K as ce,D as de,L as ue,J as ge,S as fe}from"./logs-C4GIy4tX.js";import{T as pe}from"./Tabs-DT6MQhIo.js";import{T as me}from"./Toolbar-BTFtduwD.js";import{aL as he,a2 as be,aa as xe,aM as ve,y as je,aN as ye,a8 as we,D as ke}from"./activity-yZTrGy-J.js";import{s as Ne,N as Se,O as De,r as Ce,ag as Te,ah as Pe,ai as Oe,aj as _e,K as Re,ak as Ee}from"./nodes-6sIn2I0s.js";import{s as Me,c as Ae,r as Le,a as Fe,b as Ie,d as He,e as qe,f as $e,g as Ke,h as Ve,v as We,i as Ue,j as Be,k as ze,l as Ge,m as Je,n as Qe,o as Ye,w as Xe}from"./nav-BMNMQSWb.js";import{u as Ze,c as en}from"./flows-dBNkBg79.js";import{d as nn}from"./files-Dt8K7QfP.js";import{D as sn}from"./Table-yWn0d3vL.js";import{T as an}from"./TimeCell-BIqfL3y_.js";import{L as rn}from"./AppearanceControls-sRy1p156.js";import{N as tn,t as on}from"./NumberField-q4-QmTAT.js";import{A as ln}from"./AddCircle-C6Jc7GCc.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./Select-D7_6MaHd.js";import"./ItemText-DOD_75iR.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";function cn(e,n,s,a="main"){if(!s.daeText)return[];const{blocks:r,tokens:t}=Ne(e),o=s.globalSettings;return r.flatMap(s=>{if(s.name===o?.name){const a=r.filter(e=>e.name===o.name).indexOf(s),l=Se(e,s,t);return l.filter(e=>1===l.filter(n=>n.name===e.name).length&&o.fields.some(n=>n.key===e.name)).map(r=>({kind:s.name,from:r.from,to:r.to,label:r.name,line:e.slice(0,r.from).split("\n").length,href:i("config",{tab:"global",source:n,section:String(a),field:r.name})}))}const l=Me[s.name];return"subscription"===s.name?"main"!==a?[]:De(e).filter(e=>e.from>s.open&&e.to<=s.close).map(e=>({kind:s.name,from:e.from,to:e.to,label:e.tag,line:e.line,href:i("nodes",{editSubscriptionTag:e.tag})})):"dns"===s.name?s.children.filter(e=>"routing"===e.name).flatMap(e=>e.children.filter(e=>"request"===e.name||"response"===e.name).map(e=>({kind:s.name,from:e.from,to:e.to,label:e.name,line:e.line+1,href:l}))):l?[{kind:s.name,from:s.from,to:s.to,label:s.name,line:s.line+1,href:l}]:[]})}const dn=()=>{};const un=new Map;function gn({go:n,query:i}){const m=s(),h=a[r()],b=t(),x=b.data?.resources,v=se(o(x,"config",{whileLoading:!0})),j=function(n){const i=s(),a=ie(n),r=e.useMemo(()=>{const e=xe(a.error);return e?e.diagnostics??[]:null},[a.error]);return e.useEffect(()=>{if(a.error)if(r){const e=ve(r);f("negative",e?i("config.writeRestart",{n:e}):i("ui.writeInvalid",{n:r.filter(e=>"error"===e.level).length}))}else p(a.error,i,i("ui.writeFailed"))},[a.error,r,i]),{...a,diagnostics:r}}(v.refetch),y=e.useMemo(()=>new URLSearchParams(i),[i]),w=e.useMemo(()=>v.data?.sources??[],[v.data]),k=w.find(e=>"main"===e.kind)??null,N=w.find(e=>e.id===y.get("source"))??w[0]??null,S=N?.id??null,D=(e,s)=>n("config",d(i,{tab:"source",source:e,line:null===s?null:String(s)})),C=Number(y.get("line"))||null,T=v.data?.diagnostics??[],P=e.useMemo(()=>{const e=v.data?.diagnostics??[];return{error:e.filter(e=>"error"===e.level).length,warning:e.filter(e=>"warning"===e.level).length}},[v.data]),O=o(x,"config_validate",{whileLoading:!1})&&(x?.config_validate.modes??[]).includes("full"),_=!0===x?.config.writable,R=ae(w),E=l().data,M=e.useMemo(()=>re(E),[E]),A=Ae(!!M.globalSettings,b.data),L=N?Le(N,_,R(N),M,m):null,F=!!N&&!L,[I,H]=e.useState(un),[q,$]=e.useState(null),K=q??P.error,V=y.has("source")||void 0===k?.content?"source":"modules",W=c("validate"===y.get("tab")?d(i,{tab:"source"}):i,A.map(e=>e.id),V),U=N?{source:N,sources:w,open:D,diagnostics:T,canValidate:O&&("main"===N.kind||"include"===N.kind),canWrite:F,readOnly:L,isComplete:R,editor:j,focusLine:C,generation:v.data?.generation_id??"",focusDiagnostics:"validate"===y.get("tab"),diagnosticsChoice:I.get(N.id)??null,chooseDiagnostics:e=>H(n=>new Map(n).set(N.id,e)),reportErrors:$}:null,B=!0===x?.config.create&&!0===x.config.writable?{sources:w,refetch:v.refetch,open:e=>D(e,null)}:null;return{error:b.error??v.error,reload:()=>{b.refetch(),v.refetch()},loading:v.loading&&!v.data,ready:!!v.data,tabsReady:!!v.data||A.some(e=>"history"===e.id),metadata:v.data?Ie(v.data.revision,m):[],redacted:!!v.data?.secrets_redacted,tabs:A.map(e=>({id:e.id,label:"source"===e.id&&K?m("ui.aside",{text:m(e.titleKey),note:g(K,h)}):m(e.titleKey)})),tab:W,setTab:e=>n("config",d(u(i,e,null),{field:null})),selectedId:S??"",select:e=>n("config",d(i,{source:e,line:null})),sourceProps:U,newSourceProps:B,modulesProps:v.data?{config:v.data}:null,sourceModel:N?{...FeLine truncated
@@ -1 +0,0 @@
import{r as e,j as n}from"./vendor-react-64fcanlc.js";import{O as t}from"./OutboundTag-CO8Ndxdr.js";import{aU as o,u as s,al as l,l as a,a0 as i,o as r,aB as c,C as u,E as d,Y as p,a8 as m,s as b,M as h,bW as g,ax as f,N as w,T as v,bX as y,w as x,bY as j,U as _,bZ as k,b_ as C,Z as S,a1 as A,q as L,r as N,O as T,b$ as M,a6 as R,c0 as O,ah as P,G as F,c1 as U,b4 as W,c2 as q,bS as D,c3 as E,c4 as I,c5 as V,K as H,am as Q,c6 as B,A as K,c7 as G,aV as J,b9 as Y,c8 as Z,aM as X,c9 as z,bG as $,B as ee,ca as ne,bx as te,av as oe,p as se}from"./index-HxEUeoab.js";import{R as le,u as ae,i as ie,o as re,h as ce,c as ue,S as de,L as pe,n as me,K as be}from"./logs-C4GIy4tX.js";import{C as he}from"./AppearanceControls-sRy1p156.js";import{T as ge}from"./Tabs-DT6MQhIo.js";import{T as fe}from"./Toolbar-BTFtduwD.js";import{a as we,D as ve,U as ye,F as xe,S as je,c as _e,B as ke,L as Ce,t as Se,d as Ae,f as Le,g as Ne,p as Te,o as Me,k as Re,h as Oe}from"./activity-yZTrGy-J.js";import{S as Pe}from"./SearchSelect-BcScGUbQ.js";import{D as Fe}from"./Table-yWn0d3vL.js";import{T as Ue}from"./TimeCell-BIqfL3y_.js";import{Q as We,u as qe,R as De}from"./useQuickRule-DUEi6geL.js";import{u as Ee}from"./outbounds-Bbb6kdae.js";import{c as Ie,d as Ve,e as He}from"./files-Dt8K7QfP.js";import{w as Qe}from"./labels-D8xxfRTQ.js";import{u as Be}from"./flows-dBNkBg79.js";import{r as Ke}from"./rule-Bl9YOsFn.js";import{c as Ge}from"./nav-BO8viH9G.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./Tag-SxASl3TF.js";import"./Select-D7_6MaHd.js";import"./ItemText-DOD_75iR.js";import"./nodes-6sIn2I0s.js";import"./Checkbox-CJt7u9-e.js";import"./SearchList-LjCruZYP.js";import"./Virtualizer-DMIKG2CD.js";import"./DaeCode-DEjXqvav.js";import"./daeTokens-BVtuNnWZ.js";import"./AddCircle-C6Jc7GCc.js";const Je=[0,2,3,1,4,5,6,7],Ye=e.memo(function({records:t,outbounds:p,latency:m,latencyError:b,retryLatency:h,truncated:g,uncounted:f,onSelect:w}){const v=s(),y=we(),x=l[a()],j=e.useCallback(e=>i(e,x),[x]),_=e.useMemo(()=>function(e,n){const t=new Map;let s=0;for(const o of e){if(null===o.upload_bytes||null===o.download_bytes){s++;continue}const e={id:o.id,up:Number(o.upload_bytes),down:Number(o.download_bytes),name:o.domain||o.dst||o.id},n=t.get(o.outbound);n?n.push(e):t.set(o.outbound,[e])}const l=[...t].map(([e,n])=>({outbound:e,points:n})).sort((e,t)=>o(n)(e.outbound??"",t.outbound??""));let a,i=-1n;for(const o of e){if(null===o.upload_bytes||null===o.download_bytes)continue;const e=BigInt(o.upload_bytes)+BigInt(o.download_bytes);e>i&&(i=e,a={id:o.id,up:Number(o.upload_bytes),down:Number(o.download_bytes),name:o.domain||o.dst||o.id,outbound:o.outbound})}return{series:l,unknown:s,heaviest:a,placed:e.length-s}}(t,x),[t,x]),k=e.useMemo(()=>{const e=p.filter(e=>"block"!==e);return _.series.map(n=>{return{id:n.outbound??"",label:r(n.outbound,v),color:(t=n.outbound,"block"===t?y.negative:y.cat[Je[Math.max(0,e.indexOf(t))%Je.length]]),points:n.points.map(e=>({id:e.id,x:e.up,y:e.down,name:e.name,detail:v("conn.chart.point",{download:j(e.down),upload:j(e.up)})}))};var t})},[_,p,y,v,j]),C=_.heaviest?[{label:v("conn.chart.busiest"),icon:n.jsx(c,{}),tint:"c3",value:_.heaviest.name,caption:r(_.heaviest.outbound,v)},{label:v("ui.download"),value:j(_.heaviest.down),icon:n.jsx(ve,{}),tint:"c1"},{label:v("ui.upload"),value:j(_.heaviest.up),icon:n.jsx(ye,{}),tint:"c4"}]:[],S=_.unknown?v("conn.chart.sampleUnknown",{n:t.length,unknown:_.unknown}):v("conn.chart.sample",{n:t.length});return n.jsxs("div",{className:"rp-chart-page",children:[n.jsx(xe,{facts:C,lead:!0}),n.jsxs(u,{title:v("conn.chart.title"),help:f?{title:v("conn.chart.title"),text:v("ui.trafficUncounted")}:void 0,note:S,children:[g&&n.jsx("p",{className:"rp-note",children:v("conn.truncated")}),_.placed>0&&n.jsxs(n.Fragment,{children:[n.jsx(je,{label:v("conn.chart.title"),series:k,fmt:j,onSelect:w,regions:{above:v("conn.chart.moreDown"),below:v("conn.chart.moreUp")}}),n.jsx(_e,{series:k}),n.jsx("p",{className:"rp-note",children:v("conn.chart.hint")})]})]}),m?n.jsx(Ze,{latency:m}):b&&n.jsx(u,{title:v("ui.nodeLatency"),children:n.jsx(d,{error:b,onRetry:h})})]})});function Ze({latency:e}){const t=s(),o=we(),i=e=>m(e,t),r=l[a()],c=n=>!e.chains||n?o.cat[0]:o.muted;return n.jsx(u,{title:t("ui.nodeLatency"),note:t("conn.latency.sample",{n:e.samples.length,missing:e.missing}),children:e.samples.length?n.jsxs(n.Fragment,{children:[n.jsx("p",{className:"rp-note",children:t("conn.latency.percentiles",{p50:i(e.p50),p90:i(e.p90)})}),null!==e.weightedP50&&n.jsx("p",{className:"rp-note",children:e.unplaced?t("conn.latency.weightedUnplaced",{p50:i(e.weightedP50),n:e.unplaced}):t("conn.latency.weighted",{p50:i(e.weightedP50)})}),n.jsx(ke,{label:t("ui.nodeLatency"),points:e.samples.map(e=>({id:e.node,nodeName:!0,value:e.value,color:c(e.connections>0),lines:[e.name,i(e.value),...e.connections?[t("conn.chart.sample",{n:e.connections})]:[]]})),fmt:i}),e.chains&&n.jsxs("div",{className:"rp-legend",children:[n.jsx(Ce,{swatch:c(!0),labeLine truncated
@@ -1 +0,0 @@
import{r as c,j as r}from"./vendor-react-64fcanlc.js";import{u as s,dn as o,A as l,I as t}from"./index-HxEUeoab.js";function a(){const r=s();return c.useCallback(async c=>{const s=await o(c);l(s?"positive":"negative",r(s?"ui.recordCopied":"ui.recordCopyFailed"))},[r])}function e(c){return r.jsxs(t,{...c,children:[r.jsx("path",{fill:"currentColor",d:"m11.75,18h-7.5c-1.24023,0-2.25-1.00977-2.25-2.25v-7.5c0-1.24023,1.00977-2.25,2.25-2.25.41406,0,.75.33594.75.75s-.33594.75-.75.75c-.41309,0-.75.33691-.75.75v7.5c0,.41309.33691.75.75.75h7.5c.41309,0,.75-.33691.75-.75,0-.41406.33594-.75.75-.75s.75.33594.75.75c0,1.24023-1.00977,2.25-2.25,2.25Z"}),r.jsx("path",{fill:"currentColor",d:"m6.75,5c-.41406,0-.75-.33594-.75-.75,0-1.24023,1.00977-2.25,2.25-2.25.41406,0,.75.33594.75.75s-.33594.75-.75.75c-.41309,0-.75.33691-.75.75,0,.41406-.33594.75-.75.75Z"}),r.jsx("path",{fill:"currentColor",d:"m13,3.5h-2c-.41406,0-.75-.33594-.75-.75s.33594-.75.75-.75h2c.41406,0,.75.33594.75.75s-.33594.75-.75.75Z"}),r.jsx("path",{fill:"currentColor",d:"m13,14h-2c-.41406,0-.75-.33594-.75-.75s.33594-.75.75-.75h2c.41406,0,.75.33594.75.75s-.33594.75-.75.75Z"}),r.jsx("path",{fill:"currentColor",d:"m15.75,14c-.41406,0-.75-.33594-.75-.75s.33594-.75.75-.75c.41309,0,.75-.33691.75-.75,0-.41406.33594-.75.75-.75s.75.33594.75.75c0,1.24023-1.00977,2.25-2.25,2.25Z"}),r.jsx("path",{fill:"currentColor",d:"m17.25,5c-.41406,0-.75-.33594-.75-.75,0-.41309-.33691-.75-.75-.75-.41406,0-.75-.33594-.75-.75s.33594-.75.75-.75c1.24023,0,2.25,1.00977,2.25,2.25,0,.41406-.33594.75-.75.75Z"}),r.jsx("path",{fill:"currentColor",d:"m17.25,9.75c-.41406,0-.75-.33594-.75-.75v-2c0-.41406.33594-.75.75-.75s.75.33594.75.75v2c0,.41406-.33594.75-.75.75Z"}),r.jsx("path",{fill:"currentColor",d:"m6.75,9.75c-.41406,0-.75-.33594-.75-.75v-2c0-.41406.33594-.75.75-.75s.75.33594.75.75v2c0,.41406-.33594.75-.75.75Z"}),r.jsx("path",{fill:"currentColor",d:"m8.25,14c-1.24023,0-2.25-1.00977-2.25-2.25,0-.41406.33594-.75.75-.75s.75.33594.75.75c0,.41309.33691.75.75.75.41406,0,.75.33594.75.75s-.33594.75-.75.75Z"})]})}export{e as C,a as u};
@@ -1 +0,0 @@
import{ah as e,ak as l,U as r,u as a,T as s,p as n}from"./index-HxEUeoab.js";import{j as o}from"./vendor-react-64fcanlc.js";const t={userspace_tcp:"flow.userspaceTcp",userspace_udp:"flow.userspaceUdp",kernel_direct:"flow.kernelDirect",kernel_block:"flow.kernelBlock",dns_intercept:"flow.dnsIntercept",kernel_bypass:"flow.kernelBypass"},p={full:"flow.full",partial:"flow.partialVisibility",none:"ui.none"};function c(a,s,n){const o=Object.entries(a.coverage).filter(([,e])=>"full"!==e),c=e(a.dropped_records),i=c?s("flow.dropped",{n:c}):null;return o.length||i?{summary:o.length?s("flow.coverageSummary",{n:o.length}):null,detail:l(n,o.map(([e,l])=>s("ui.valuePair",{label:r(t,e,s),value:r(p,l,s)}))),dropped:i}:null}function i({view:e}){const l=a();return o.jsxs("div",{className:"rp-cluster",role:"group","aria-label":l("flow.coverage"),children:[e.summary&&o.jsx(s,{text:e.detail,children:o.jsx(n,{small:!0,tone:"warn",children:e.summary})}),e.dropped&&o.jsx(n,{small:!0,tone:"warn",children:e.dropped})]})}export{i as C,c};
@@ -1 +0,0 @@
import{r as e}from"./vendor-react-64fcanlc.js";import{t}from"./daeTokens-BVtuNnWZ.js";function a({text:a,as:r="span",className:s=""}){return e.createElement(r,{className:`rp-code ${s}`.trim()},t(a).map((t,a)=>t.type?e.createElement("span",{key:a,className:`rp-dae-${t.type}`},t.text):t.text))}export{a as D};
@@ -1 +0,0 @@
import{j as c}from"./vendor-react-64fcanlc.js";import{I as r}from"./index-HxEUeoab.js";function l(l){return c.jsxs(r,{...l,children:[c.jsx("path",{fill:"currentColor",d:"M8.249 15.021c-.4 0-.733-.317-.748-.72l-.25-6.5c-.017-.414.307-.763.72-.779H8c.4 0 .733.317.748.72l.25 6.5c.017.414-.307.763-.72.778zM11.751 15.021h-.03c-.413-.016-.737-.365-.72-.779l.25-6.5c.015-.403.348-.72.748-.72h.03c.413.016.737.365.72.779l-.25 6.5c-.015.403-.348.72-.748.72"}),c.jsx("path",{fill:"currentColor",d:"M17 4h-3.5v-.75C13.5 2.01 12.49 1 11.25 1h-2.5C7.51 1 6.5 2.01 6.5 3.25V4H3c-.414 0-.75.336-.75.75s.336.75.75.75h.52l.422 10.342C3.99 17.052 4.98 18 6.19 18h7.62c1.211 0 2.2-.948 2.248-2.158L16.48 5.5H17c.414 0 .75-.336.75-.75S17.414 4 17 4m-9-.75c0-.413.337-.75.75-.75h2.5c.413 0 .75.337.75.75V4H8zm6.56 12.531c-.017.404-.346.719-.75.719H6.19c-.404 0-.733-.315-.75-.719L5.02 5.5h9.96z"})]})}export{l as D};
@@ -1 +0,0 @@
import{r as e,j as s}from"./vendor-react-64fcanlc.js";import{M as a,U as t,a8 as n,a1 as r,Y as l,Q as i,ah as d,aM as c,u as o,a9 as u,q as m,c2 as h,z as p,c4 as x,r as g,w as y,h as f,c6 as b,al as j,l as v,cb as w,bS as _,cc as N,b4 as S,c8 as T,A as q,c9 as C,aV as k,cd as M,bR as R,az as L,af as A,E as F,ce as E,bh as D,cf as P,C as W,S as O,ae as U,ay as H,T as B,bu as K,bF as I,cg as Q,bG as $,ch as z,B as J,ci as V,ax as G,p as X,av as Y,bx as Z,ca as ee}from"./index-HxEUeoab.js";import{D as se}from"./Delete-CR2AtZsd.js";import{s as ae,l as te,a as ne,m as re,C as le,F as ie,B as de,L as ce,W as oe,n as ue,q as me,D as he}from"./activity-yZTrGy-J.js";import{u as pe,q as xe,k as ge,s as ye,t as fe,S as be,L as je,K as ve,A as we}from"./logs-C4GIy4tX.js";import{T as _e}from"./Tabs-DT6MQhIo.js";import{T as Ne}from"./Toolbar-BTFtduwD.js";import{D as Se}from"./Table-yWn0d3vL.js";import{T as Te}from"./TimeCell-BIqfL3y_.js";import{c as qe,d as Ce,e as ke}from"./files-Dt8K7QfP.js";import{d as Me}from"./nav-CBqYxt5v.js";import{a as Re}from"./rule-Bl9YOsFn.js";import{J as Le,u as Ae}from"./nodes-6sIn2I0s.js";import{u as Fe,R as Ee,Q as De}from"./useQuickRule-DUEi6geL.js";import{L as Pe}from"./AppearanceControls-sRy1p156.js";/* empty css */import"./_commonjsHelpers-CXUWDbkB.js";import"./ItemText-DOD_75iR.js";import"./Select-D7_6MaHd.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";import"./DaeCode-DEjXqvav.js";import"./daeTokens-BVtuNnWZ.js";import"./AddCircle-C6Jc7GCc.js";import"./SearchSelect-BcScGUbQ.js";import"./SearchList-LjCruZYP.js";import"./flows-dBNkBg79.js";function We(e,s,t,n,r){return{domain:e,dip:null,sip:(r&&a(r))??null,outbound:null,matched:null,dns:{type:s,answers:Re(t),upstream:n,query:{name:e,type:s}}}}const Oe=(e,s,a)=>({domain:null,dip:e,sip:null,outbound:null,matched:null,dns:{type:a,answers:[e],upstream:null,query:{name:s,type:a}}}),Ue={forced:"dns.route.forced","dns.routing":"dns.route.rules",default:"dns.route.default"};function He(e,s){return{fields:[[s("ui.state"),e.status],[s("ui.upstream"),e.upstream??"—"],[s("dns.routeSource"),t(Ue,e.route.source,s)],[s("dns.routeRule"),e.route.rule??"—"],[s("ui.elapsed"),n(e.elapsed_ms,s)]],answers:(e.answers??[]).map(e=>s("dns.answer",{name:e.name,type:e.type,ttl:e.ttl,data:e.data})),cacheText:s(e.cached?"dns.hit":"dns.miss"),cacheTone:e.cached?void 0:"warn"}}function Be(e,s,a){return e?a instanceof c&&503===a.status?"unavailable":s?"ready":a?"error":"loading":"unlisted"}const Ke=[{id:"full",label:"rule.kind.domain"},{id:"suffix",label:"rule.kind.domainSuffix"},{id:"keyword",label:"rule.kind.domainKeyword"},{id:"regex",label:"dns.matchRegex"}],Ie=e=>e.trim().toLowerCase().replace(/\.$/,"");function Qe(e,s){if(!s.trim())return()=>!0;if("regex"===e){const e=function(e){try{return new RegExp(e,"iu")}catch{return null}}(s);return e&&(s=>e.test(Ie(s)))}if("keyword"===e){const e=s.trim().toLowerCase();return s=>Ie(s).includes(e)}const a=Ie(s),t="suffix"===e&&a.startsWith("."),n=t?a.slice(1):a;return n?"full"===e?e=>Ie(e)===n:e=>{const s=Ie(e);return s.endsWith("."+n)||!t&&s===n}:null}function $e({go:s,query:a}){const t=o(),n=u(),r=m(),l=e.useMemo(()=>new URLSearchParams(a),[a]),[i,d]=e.useState(l.get("domain")??""),[c,j]=e.useState(l.get("type")??"A"),[v,w]=e.useState(!1);h(l.get("domain"),e=>d(e??"")),h(l.get("type"),e=>j(e??"A"));const[_,N]=e.useState(null),{busy:S,error:T,run:q}=p({rethrow:!0}),C=r.data?.resources,k=e.useMemo(()=>function(e,s,a,t,n,r){const l=s?.dns_query.record_types??[],i="all"===a?l.length>0:l.includes(a);return{types:l,choices:[...l.map(e=>({id:e,label:e})),{id:"all",label:r("dns.allTypes")}],disabled:n||!s?.dns_query.available||!i||!t.trim(),reason:!s||n?null:s.dns_query.available?i?null:r("all"===a?"dns.noTypes":"dns.typeUnsupported"):r("dns.queryUnavailable"),showCache:!!s?.dns_cache.available,cards:e?.results.map(s=>({id:s.type,title:`${e.domain} ${s.type}`,...He(s,r),seed:We(e.domain,s.type,s.answers??[],s.upstream,null),answerSeeds:(s.answers??[]).map(a=>Re([a]).length?{address:a.data,seed:Oe(a.data,e.domain,s.type)}:null)}))??[],tabs:Me(s).map(e=>({id:e.id,label:r(e.titleKey)}))}}(_,C,c,i,!!S,t),[_,C,c,i,S,t]),M=k.tabs.map(e=>e.id),R=l.has("domain")||l.has("device"),L=M.includes("log")?R?"log":"stats":M.includes("query")?"query":M[0]??"query",A=x(a,M,L),F=g(C,"config",{whileLoading:!1}),E=pe("query"===A&&F&&g(C,"dns_query",{whileLoading:!1})),D=e.useMemo(()=>F?function(e,s){const a=[...new Set((e??[]).flatMap(e=>e.content?Le(e.content).map(Ae):[]))];return a.length?[{id:"",label:s("dns.upstreamAuto")},...a.map(e=>({id:e,label:e}))]:[]}(E.data?.sources,t):[],[F,E.data,t]),[P,W]=e.useState(""),O=D.some(e=>e.id===P)?P:"";E.data&&P&&!O&&W("");const U=async(e={domain:i,type:c})=>{try{await q("query",async s=>{const a=await xe(n.dnsQuery,e.domain.trim(),"all"===e.type?k.types:[e.type],C?.dns_query.limits?.max_types_per_request??1,s,v?"bypass":"normal",O||void 0);return s.aborted||N(a),a})Line truncated
@@ -1 +0,0 @@
import{r as n,j as t}from"./vendor-react-64fcanlc.js";import{u as e,f as r}from"./index-HxEUeoab.js";import{aW as o,b4 as a,aZ as i,a$ as l}from"./activity-yZTrGy-J.js";import{w as u,c,a as s}from"./array-C0VuvQyb.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./AppearanceControls-sRy1p156.js";import"./ItemText-DOD_75iR.js";import"./logs-C4GIy4tX.js";import"./Select-D7_6MaHd.js";const f=Math.abs,h=Math.atan2,y=Math.cos,p=Math.max,d=Math.min,x=Math.sin,g=Math.sqrt,v=1e-12,m=Math.PI,M=m/2,A=2*m;function j(n){return n>=1?M:n<=-1?-M:Math.asin(n)}function w(n){return n.innerRadius}function b(n){return n.outerRadius}function P(n){return n.startAngle}function T(n){return n.endAngle}function R(n){return n&&n.padAngle}function L(n,t,e,r,o,a,i){var l=n-e,u=t-r,c=(i?a:-a)/g(l*l+u*u),s=c*u,f=-c*l,h=n+s,y=t+f,d=e+s,x=r+f,v=(h+d)/2,m=(y+x)/2,M=d-h,A=x-y,j=M*M+A*A,w=o-a,b=h*x-d*y,P=(A<0?-1:1)*g(p(0,w*w*j-b*b)),T=(b*A-M*P)/j,R=(-b*M-A*P)/j,L=(b*A+M*P)/j,$=(-b*M+A*P)/j,I=T-v,k=R-m,B=L-v,K=$-m;return I*I+k*k>B*B+K*K&&(T=L,R=$),{cx:T,cy:R,x01:-s,y01:-f,x11:T*(o/w-1),y11:R*(o/w-1)}}function $(){var n=w,t=b,e=c(0),r=null,o=P,a=T,i=R,l=null,s=u(p);function p(){var u,c,p,w=+n.apply(this,arguments),b=+t.apply(this,arguments),P=o.apply(this,arguments)-M,T=a.apply(this,arguments)-M,R=f(T-P),$=T>P;if(l||(l=u=s()),b<w&&(c=b,b=w,w=c),b>v)if(R>A-v)l.moveTo(b*y(P),b*x(P)),l.arc(0,0,b,P,T,!$),w>v&&(l.moveTo(w*y(T),w*x(T)),l.arc(0,0,w,T,P,$));else{var I,k,B=P,K=T,N=P,S=T,D=R,E=R,F=i.apply(this,arguments)/2,q=F>v&&(r?+r.apply(this,arguments):g(w*w+b*b)),C=d(f(b-w)/2,+e.apply(this,arguments)),H=C,V=C;if(q>v){var W=j(q/w*x(F)),Z=j(q/b*x(F));(D-=2*W)>v?(N+=W*=$?1:-1,S-=W):(D=0,N=S=(P+T)/2),(E-=2*Z)>v?(B+=Z*=$?1:-1,K-=Z):(E=0,B=K=(P+T)/2)}var _=b*y(B),z=b*x(B),G=w*y(S),J=w*x(S);if(C>v){var O,Q=b*y(K),U=b*x(K),X=w*y(N),Y=w*x(N);if(R<m)if(O=function(n,t,e,r,o,a,i,l){var u=e-n,c=r-t,s=i-o,f=l-a,h=f*u-s*c;if(!(h*h<v))return[n+(h=(s*(t-a)-f*(n-o))/h)*u,t+h*c]}(_,z,X,Y,Q,U,G,J)){var nn=_-O[0],tn=z-O[1],en=Q-O[0],rn=U-O[1],on=1/x(((p=(nn*en+tn*rn)/(g(nn*nn+tn*tn)*g(en*en+rn*rn)))>1?0:p<-1?m:Math.acos(p))/2),an=g(O[0]*O[0]+O[1]*O[1]);H=d(C,(w-an)/(on-1)),V=d(C,(b-an)/(on+1))}else H=V=0}E>v?V>v?(I=L(X,Y,_,z,b,V,$),k=L(Q,U,G,J,b,V,$),l.moveTo(I.cx+I.x01,I.cy+I.y01),V<C?l.arc(I.cx,I.cy,V,h(I.y01,I.x01),h(k.y01,k.x01),!$):(l.arc(I.cx,I.cy,V,h(I.y01,I.x01),h(I.y11,I.x11),!$),l.arc(0,0,b,h(I.cy+I.y11,I.cx+I.x11),h(k.cy+k.y11,k.cx+k.x11),!$),l.arc(k.cx,k.cy,V,h(k.y11,k.x11),h(k.y01,k.x01),!$))):(l.moveTo(_,z),l.arc(0,0,b,B,K,!$)):l.moveTo(_,z),w>v&&D>v?H>v?(I=L(G,J,Q,U,w,-H,$),k=L(_,z,X,Y,w,-H,$),l.lineTo(I.cx+I.x01,I.cy+I.y01),H<C?l.arc(I.cx,I.cy,H,h(I.y01,I.x01),h(k.y01,k.x01),!$):(l.arc(I.cx,I.cy,H,h(I.y01,I.x01),h(I.y11,I.x11),!$),l.arc(0,0,w,h(I.cy+I.y11,I.cx+I.x11),h(k.cy+k.y11,k.cx+k.x11),$),l.arc(k.cx,k.cy,H,h(k.y11,k.x11),h(k.y01,k.x01),!$))):l.arc(0,0,w,S,N,$):l.lineTo(G,J)}else l.moveTo(0,0);if(l.closePath(),u)return l=null,u+""||null}return p.centroid=function(){var e=(+n.apply(this,arguments)+ +t.apply(this,arguments))/2,r=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-m/2;return[y(r)*e,x(r)*e]},p.innerRadius=function(t){return arguments.length?(n="function"==typeof t?t:c(+t),p):n},p.outerRadius=function(n){return arguments.length?(t="function"==typeof n?n:c(+n),p):t},p.cornerRadius=function(n){return arguments.length?(e="function"==typeof n?n:c(+n),p):e},p.padRadius=function(n){return arguments.length?(r=null==n?null:"function"==typeof n?n:c(+n),p):r},p.startAngle=function(n){return arguments.length?(o="function"==typeof n?n:c(+n),p):o},p.endAngle=function(n){return arguments.length?(a="function"==typeof n?n:c(+n),p):a},p.padAngle=function(n){return arguments.length?(i="function"==typeof n?n:c(+n),p):i},p.context=function(n){return arguments.length?(l=null==n?null:n,p):l},p}function I(n,t){return t<n?-1:t>n?1:t>=n?0:NaN}function k(n){return n}function B({label:u,rows:f}){const h=e(),[y,p]=r(Math.round,120),{tip:d,showAt:x,hide:g}=o(),[v,m]=n.useState(null),M=f.filter(n=>null!==n.value&&n.value>0),j=p?.width??0,w=p?.height??0,b=a(M.map(n=>n.value)),P=function(){var n=k,t=I,e=null,r=c(0),o=c(A),a=c(0);function i(i){var l,u,c,f,h,y=(i=s(i)).length,p=0,d=new Array(y),x=new Array(y),g=+r.apply(this,arguments),v=Math.min(A,Math.max(-A,o.apply(this,arguments)-g)),m=Math.min(Math.abs(v)/y,a.apply(this,arguments)),M=m*(v<0?-1:1);for(l=0;l<y;++l)(h=x[d[l]=l]=+n(i[l],l,i))>0&&(p+=h);for(null!=t?d.sort(function(n,e){return t(x[n],x[e])}):null!=e&&d.sort(function(n,t){return e(i[n],i[t])}),l=0,c=p?(v-y*M)/p:0;l<y;++l,g=f)u=d[l],f=g+((h=x[u])>0?h*c:0)+M,x[u]={data:i[u],index:l,value:h,startAngle:g,endAngle:f,padAngle:m};return x}return i.value=function(t){return arguments.length?(n="function"==typeof t?t:c(+t),i):n},i.sortValues=function(n){return arguments.length?(t=n,e=null,i):t},i.sort=function(n){return arguments.length?(e=n,t=null,i):e},i.startAngle=function(n){return arguments.length?(r="function"==typeof n?n:c(+nLine truncated
@@ -1 +0,0 @@
import{r as e,$ as t,a as r,j as n}from"./vendor-react-64fcanlc.js";import{ey as o,gi as i,ep as a,el as s,cN as l,gj as d,gk as c,gl as p,er as u,em as g,en as f,dv as m,eo as h,gb as y,gm as D,ez as v,eP as b,gn as w,go as x,eQ as T,ew as k,dx as E,bp as P,cK as K,cC as O,b7 as S,aD as C,cl as I,eW as j,az as A,bs as R,B as M,f as B,u as L,R as F,ch as $,q as z,d2 as N,bK as V,cw as X,df as Y,b5 as H,aL as q,gp as U,P as J,gq as W,A as _}from"./index-HxEUeoab.js";import{b5 as G,b6 as Q,b7 as Z,b8 as ee,b9 as te,ba as re,bb as ne,bc as oe,bd as ie,be as ae,bf as se,bg as le,bh as de,bi as ce,bj as pe,bk as ue,bl as ge,bm as fe,bn as me,bo as he,bp as ye,bq as De,br as ve,bs as be,bt as we,bu as xe,bv as Te,bw as ke,bx as Ee,by as Pe,bz as Ke,bA as Oe,bB as Se,bC as Ce,bD as Ie,bE as je,bF as Ae}from"./activity-yZTrGy-J.js";import{$ as Re,a as Me}from"./GridList-D7qdplA5.js";import{m as Be}from"./Select-D7_6MaHd.js";import{D as Le}from"./Delete-CR2AtZsd.js";import{S as Fe,c as $e,$ as ze}from"./logs-C4GIy4tX.js";import{C as Ne}from"./AppearanceControls-sRy1p156.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./ItemText-DOD_75iR.js";import"./Checkbox-CJt7u9-e.js";var Ve=function(e){return e[e.none=0]="none",e[e.cancel=0]="cancel",e[e.move=1]="move",e[e.copy=2]="copy",e[e.link=4]="link",e[e.all=7]="all",e}({});const Xe={...Ve,copyMove:3,copyLink:6,linkMove:5,all:7,uninitialized:7},Ye=Ue(Xe);Ye[7]="all";const He={none:"cancel",link:"link",copy:"copy",move:"move"},qe=Ue(He);function Ue(e){let t={};for(let r in e)t[e[r]]=r;return t}const Je=new Set(["text/plain","text/uri-list","text/html"]),We="application/vnd.react-aria.items+json",_e="application/octet-stream",Ge=new WeakMap,Qe=Symbol();function Ze(e){let t=new Set;for(let r of e)for(let e of Object.keys(r))t.add(e);return t}function et(e){return e||(e="virtual"),"pointer"===e&&(e="virtual"),"virtual"===e&&"undefined"!=typeof window&&"function"==typeof window.matchMedia&&window.matchMedia("(pointer: coarse)").matches&&(e="touch"),e}function tt(){return et(o())}function rt(){return et(i())}class nt{constructor(e){this.types=new Set;let t=!1;for(let r of e.items)r.type!==We&&("file"===r.kind&&(t=!0),r.type?this.types.add(r.type):this.types.add(_e));this.includesUnknownTypes=!t&&e.types.includes("Files")}has(e){if(Array.isArray(e))return e.some(e=>this.has(e));if(this.includesUnknownTypes||e===Qe&&this.types.has(_e)||"*/*"===e)return!0;if("string"==typeof e){if(e.endsWith("/*")){for(let t of this.types)if(t.startsWith(e.slice(0,-2)))return!0;return!1}return this.types.has(e)}return!1}}function ot(e){if(!e)throw new Error("No file provided");return{kind:"file",type:e.type||_e,name:e.name,getText:()=>{return"function"==typeof(t=e).text?t.text():new Promise((e,r)=>{let n=new FileReader;n.onload=()=>{e(n.result)},n.onerror=r,n.readAsText(t)});var t},getFile:()=>Promise.resolve(e)}}function it(e){return{kind:"directory",name:e.name,getEntries:()=>async function*(e){let t,r=e.createReader();do{t=await new Promise((e,t)=>{r.readEntries(e,t)});for(let e of t)if(e.isFile){let t=await at(e);yield ot(t)}else e.isDirectory&&(yield it(e))}while(t.length>0)}(e)}}function at(e){return new Promise((t,r)=>e.file(t,r))}let st,lt={draggingKeys:new Set};function dt(e){lt.dropCollectionRef=e}function ct(){lt={draggingKeys:new Set}}function pt(e){let{draggingCollectionRef:t,dropCollectionRef:r}=lt;return null!=t?.current&&t.current===(e?.current||r?.current)}function ut(e){st=e}let gt=Ve.none;function ft(e){gt=e}let mt=new Map,ht=new Map,yt=null,Dt=new Set;function vt(e){return mt.set(e.element,e),yt?.updateValidDropTargets(),()=>{mt.delete(e.element),yt?.updateValidDropTargets()}}function bt(){let[t,r]=e.useState(yt);return e.useEffect(()=>{let e=()=>r(yt);return Dt.add(e),()=>{Dt.delete(e)}},[]),t}function wt(){return!!yt}const xt=["pointerdown","pointermove","pointerenter","pointerleave","pointerover","pointerout","pointerup","mousedown","mousemove","mouseenter","mouseleave","mouseover","mouseout","mouseup","touchstart","touchmove","touchend","focusin","focusout"],Tt=["pointerup","mouseup","touchend"],kt={keyboard:"dragStartedKeyboard",touch:"dragStartedTouch",virtual:"dragStartedVirtual"};class Et{constructor(e,t){this.validDropTargets=[],this.currentDropTarget=null,this.currentDropItem=null,this.dropOperation=null,this.mutationObserver=null,this.restoreAriaHidden=null,this.isVirtualClick=!1,this.dragTarget=e,this.stringFormatter=t,this.onKeyDown=this.onKeyDown.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onFocus=this.onFocus.bind(this),this.onBlur=this.onBlur.bind(this),this.onClick=this.onClick.bind(this),this.onPointerDown=this.onPointerDown.bind(this),this.cancelEvent=this.cancelEvent.bind(this),this.initialFocused=!1}setup(){document.addEventListener("keydown",this.onKeyDown,!0),document.addEventListener("keyup",this.onKeyUp,!0),window.addEventListener("focus",this.onFocus,!0),window.addEventListener("blur",this.onBlur,!0),document.addELine truncated
@@ -1 +0,0 @@
.rp-dashboard-body{display:contents}.rp-dashboard-tools{z-index:1;gap:var(--rp-space-2);border-radius:var(--rp-r-md);background:var(--rp-base);display:flex;position:absolute;inset-block-start:var(--rp-space-3);inset-inline-end:var(--rp-space-3)}.rp-dashboard-tools [slot=drag]{touch-action:none;cursor:grab}.rp-grip:before{content:"";inline-size:calc(var(--rp-space-1) / var(--rp-preview-scale,1));block-size:calc(var(--rp-space-6) / var(--rp-preview-scale,1));border-radius:var(--rp-r-pill);background:var(--rp-subtle);box-shadow:0 0 0 calc(var(--rp-space-half) / var(--rp-preview-scale,1)) var(--rp-base)}.rp-sortable-row{outline:none;min-inline-size:0;position:relative}.rp-sortable-row[data-focus-visible]{outline:none}.rp-sortable-row:is([data-focus-visible],[data-selected]):before{content:"";inset:calc(0px - var(--rp-sortable-gap,var(--rp-space-2)) - var(--rp-focus-width));border:var(--rp-focus-width) solid var(--rp-focus-color);pointer-events:none;position:absolute}.rp-sortable-grid{outline:none}.rp-sortable-row>[role=gridcell]{display:contents}.rp-sortable-grid[data-drop-target]{outline:2px dashed var(--rp-accent)}.rp-sortable-grid .rp-dashboard-tools{background:0 0;inset-block-start:calc(var(--rp-line-caption) / 2 - var(--rp-space-1));inset-inline-end:0;translate:0 -50%}.rp-sortable-grid .rp-widget-label{padding-inline-end:calc(var(--rp-control) + var(--rp-space-2))}.rp-sortable-row[data-module=divider] .rp-dashboard-tools{background:var(--rp-surface);padding-inline-start:var(--rp-space-1);inset-block-start:50%}.rp-widget-gallery-grid{gap:var(--rp-space-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));display:grid}.rp-widget-gallery-tile{gap:var(--rp-space-3);min-inline-size:0;padding:var(--rp-space-4);border:1px solid var(--rp-line);border-radius:var(--rp-r-lg);flex-direction:column;display:flex}.rp-widget-gallery-tile>.rp-cluster{margin-block-start:auto}.rp-widget-gallery-tile[data-added]{background:var(--rp-fill);--rp-subtle:var(--rp-subtle-text)}.rp-widget-gallery-frame{pointer-events:none;block-size:200px;overflow:hidden;mask-image:linear-gradient(#000 80%,#0000)}.rp-widget-gallery-presets{align-items:flex-start;gap:var(--rp-space-3) var(--rp-preset-gap);flex-wrap:wrap;display:flex}.rp-widget-gallery-preset{gap:var(--rp-space-1);flex-direction:column;min-inline-size:0;display:flex}.rp-widget-gallery-thumb{position:relative;overflow:hidden}.rp-widget-gallery-thumb-card{transform-origin:0 0;pointer-events:none;container:rp-tile/inline-size}.rp-widget-gallery-thumb-card:dir(rtl){transform-origin:100% 0}.rp-widget-gallery-thumb-add{border-radius:var(--rp-r-lg);cursor:pointer;background:0 0;border:0;position:absolute;inset:0}.rp-widget-gallery-thumb-add[data-hovered]{outline:2px solid var(--rp-line);outline-offset:2px}.rp-widget-gallery-thumb-add[data-focus-visible]{outline:2px solid var(--rp-accent);outline-offset:2px}.rp-widget-gallery-thumb-add[data-disabled]{cursor:default;outline:none}
@@ -1 +0,0 @@
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{U as n,a2 as s,a4 as r,a1 as a,h as i,a9 as o,u as l,al as d,l as c,q as m,c2 as u,ab as p,ac as v,dp as h,dq as j,T as f,av as x,B as b,p as g,E as w}from"./index-HxEUeoab.js";import{L as k}from"./AppearanceControls-sRy1p156.js";import{d as y,O as T,K as N,L as C}from"./logs-C4GIy4tX.js";import{T as H}from"./Toolbar-BTFtduwD.js";import{D as _}from"./Table-yWn0d3vL.js";import{d as K,e as O}from"./files-Dt8K7QfP.js";import{j as S,D as W}from"./activity-yZTrGy-J.js";import{u as L,C as M}from"./Copy-CGFSe6tr.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./ItemText-DOD_75iR.js";import"./Select-D7_6MaHd.js";import"./nodes-6sIn2I0s.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";const R={buffer_overflow:["event.gap.overflow","event.gapHelp.overflow"],evicted:["event.gap.evicted","event.gapHelp.evicted"]};function q(e,t){const n="flow.gap"===e.event&&Object.hasOwn(R,e.data.reason)?R[e.data.reason]:void 0;return n&&{title:t(n[0]),text:t(n[1])}}function D(e,t){const n=e=>e?[{id:"flow",label:t("event.viewFlow"),href:i("flows",{tab:"records",id:e})}]:[];switch(e.event){case"flow.updated":return n(e.data.resource_id);case"flow.gap":return[...n(e.data.resource_id),{id:"recording",label:t("ui.recordingSettings"),href:S}];case"generation.changed":return[{id:"config",label:t("event.viewConfig"),href:i("config")}];default:return[]}}const F=new WeakMap;function I(e,t,i,o,l,d,c,m,u=!1,p=()=>!1){const v="without-runtime"===t||m.includes(t)?t:"all",h=e.filter(e=>"all"===v||("without-runtime"===v?"runtime.updated"!==e.event:e.event===v)).slice(0,l);return{kind:v,rows:h.map(e=>function(e,t,i,o){const l=F.get(e);if(l&&l.locale===t)return l.row;const d=o?{key:"event.lostHistory"}:r(e,i),c={id:y(e),timestamp:a(e.data.observed_at,t),iso:e.data.observed_at,kind:e.event,kindText:n(s,e.event,i),summary:i(d.key,d.params),help:q(e,i),links:D(e,i),event:e};return F.set(e,{locale:t,row:c}),c}(e,d,c,p(e))),kinds:[{id:"without-runtime",label:c("event.withoutRuntime")},{id:"all",label:c("event.allKinds")},...m.map(e=>({id:e,label:n(s,e,c)}))],status:u&&!1!==o?{tone:"err",text:c("event.disconnected")}:{tone:i?"ok":null===o?"muted":"warn",text:c(!1===o?"event.unavailable":i?"event.connected":null===o?"ui.loading":"event.reconnecting")},limitText:c("event.limit",{n:l}),shown:h}}function J(){const t=o(),n=l(),s=d[c()],r=m(),a=r.data?.resources.events.kinds,[i,f]=e.useState("without-runtime"),x="all"!==i&&"runtime.updated"!==i&&a?.includes(i),b=T("without-runtime"!==i&&!x),g=e.useMemo(()=>I(b.events,i,b.connected,b.available,j,s,n,a??[],!!b.error,h),[b.events,i,b.connected,b.available,b.error,s,n,a]);return u(g.kind,f),{...g,setKind:f,cursor:b.cursor,error:b.error,retry:()=>{p().then(()=>v(t))},loading:!b.error&&!b.connected&&!1!==b.available&&!b.events.length,export:()=>{return K(O("doona-events","json"),(e=g.shown,JSON.stringify(e,null,2)+"\n"),"application/json");var e}}}function P(){const n=l(),s=J(),r=L(),a=e.useMemo(()=>[{id:"t",label:n("ui.time"),minWidth:212,grow:0,drop:1,render:e=>t.jsx(f,{className:"rp-code",text:e.iso,children:e.timestamp})},{id:"k",label:n("event.kind"),minWidth:224,drop:2,render:e=>t.jsx(f,{text:e.kind,children:e.kindText})},{id:"m",label:n("event.summary"),minWidth:176,isRowHeader:!0,render:e=>t.jsx(x,{fill:!0,help:e.help,children:t.jsx(f,{children:e.summary})})},{id:"actions",actions:!0,label:n("ui.actions"),hideLabel:!0,minWidth:64,grow:0,render:e=>t.jsx(b,{small:!0,quiet:!0,icon:!0,label:n("ui.copyRecord"),onPress:()=>{r((e=>JSON.stringify(e,null,2))(e.event))},children:t.jsx(M,{})})}],[n,r]),i=e.useCallback(e=>t.jsxs(t.Fragment,{children:[t.jsx(N,{inline:!0,items:[[n("ui.time"),e.timestamp],[n("event.kind"),e.kindText],[n("event.summary"),e.summary]]}),e.links.length>0&&t.jsx("div",{className:"rp-cluster",children:e.links.map(e=>t.jsx(k,{appearance:"button",href:e.href,children:e.label},e.id))})]}),[n]);return t.jsxs("div",{className:"rp-page",children:[t.jsxs(H,{page:!0,children:[t.jsx(C,{label:n("event.kind"),side:!0,value:s.kind,onChange:s.setKind,items:s.kinds}),t.jsx(g,{small:!0,tone:s.status.tone,children:s.status.text}),s.cursor&&t.jsx(f,{text:s.cursor,children:t.jsx("span",{className:"rp-label",children:n("event.cursor")})}),t.jsx("span",{className:"rp-label",children:s.limitText}),t.jsx("span",{className:"rp-grow"}),t.jsxs(b,{isDisabled:!s.rows.length,onPress:s.export,children:[t.jsx(W,{}),n("event.export")]})]}),s.error&&t.jsx(w,{error:s.error,onRetry:s.retry}),t.jsx(_,{label:n("nav.events"),stream:!0,flow:!0,loading:s.loading,rows:s.rows,empty:n("event.empty"),cols:a,detail:i})]})}export{P as Events};
@@ -1 +0,0 @@
import{r as e,j as s}from"./vendor-react-64fcanlc.js";import{u as a,l,ct as t,al as o,dg as i,b5 as n,B as r}from"./index-HxEUeoab.js";import{S as c}from"./SearchSelect-BcScGUbQ.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./Select-D7_6MaHd.js";import"./ItemText-DOD_75iR.js";import"./SearchList-LjCruZYP.js";import"./Virtualizer-DMIKG2CD.js";function m({name:n,value:r,automaticFlag:m,onChange:d}){const f=a(),g=l(),p=e.useMemo(()=>t(o[g]),[g]),j=i(n),u=p.find(e=>e.flag===m),h=u?f("flags.detected",{region:u.label}):f("flags.automatic");return s.jsx("div",{className:"rp-list",children:s.jsx(c,{label:f("flags.region"),description:f(j?"flags.embedded":"flags.help"),isDisabled:j,searchLabel:f("flags.search"),value:j?"automatic":r,onChange:d,sections:[{id:"flags",items:[{id:"automatic",label:h,flag:m},{id:"none",label:f("flags.none"),flag:null},...p]}]})})}function d({name:e,onClose:l,...t}){const o=a();return s.jsxs(n,{narrow:!0,title:o("flags.edit"),isOpen:!0,onOpenChange:e=>{e||l()},footer:()=>s.jsx(r,{onPress:l,children:o("ui.close")}),children:[s.jsx("p",{className:"rp-note",children:e}),s.jsx(m,{name:e,...t})]})}export{m as FlagField,d as FlagPicker};
@@ -1 +0,0 @@
.rp-topology{min-width:0;overflow:hidden}.rp-tree{gap:var(--rp-space-2);overscroll-behavior-x:contain;flex-direction:column;min-width:0;display:flex;overflow-x:auto}.rp-tree-hint{color:var(--rp-subtle);font-size:var(--rp-text-xs);line-height:16px;display:none}@media (width<=599.98px){.rp-tree-hint{display:block}}.rp-tree-captions{height:16px;position:relative}.rp-tree-captions>.rp-label{text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;position:absolute;top:0}.rp-tree-canvas{position:relative}.rp-tree-links{pointer-events:none;fill:none;stroke:var(--rp-muted);stroke-linecap:round;position:absolute;inset:0;overflow:visible}.rp-tree-links path{opacity:.55;transition:opacity var(--rp-duration) var(--rp-ease)}.rp-tree-links path[data-kind=direct]{stroke:var(--rp-positive)}.rp-tree-links path[data-kind=block]{stroke:var(--rp-negative)}.rp-tree-links path[data-kind=group]{stroke:var(--rp-iris)}.rp-tree-links path[data-kind=node]{stroke:var(--rp-accent)}.rp-tree-links path[data-state=active]{opacity:1}.rp-tree-links path[data-state=dim]{opacity:.1}.rp-tree-tile{box-sizing:border-box;align-items:center;gap:var(--rp-space-2);height:36px;padding:0 var(--rp-space-2h);border-radius:var(--rp-r-md);background:var(--rp-overlay);color:var(--rp-text);font:inherit;font-size:var(--rp-text-sm);text-align:start;cursor:pointer;border:2px solid #0000;line-height:16px;display:flex;position:absolute}.rp-tree-tile.dim{opacity:.35}.rp-tree-tile[data-hovered]{background:var(--rp-hl-med)}.rp-tree-tile[data-selected]{border-color:var(--rp-accent);background:var(--rp-selected)}.rp-tree-tile[data-focus-visible]{outline:var(--rp-focus-width) solid var(--rp-focus-color);outline-offset:calc(-1 * var(--rp-focus-width));border-color:#0000}.rp-tree-tile .l{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.rp-tree-tile[data-stage=rule] .l{font-family:var(--rp-font-mono);font-size:var(--rp-text-xs);font-variant-ligatures:none}.rp-tree-tile .s{font-size:var(--rp-text-xs);color:var(--rp-subtle);margin-inline-start:var(--rp-space-2)}.rp-tree-tile .s.ok{color:var(--rp-positive-text)}.rp-tree-tile .s.warn{color:var(--rp-notice-text)}.rp-tree-tile .s.err{color:var(--rp-negative-text)}.rp-tree-tile .c{font-variant-numeric:tabular-nums;color:var(--rp-subtle);flex:none;font-weight:700}
@@ -1 +0,0 @@
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{O as n}from"./OutboundTag-CO8Ndxdr.js";import{l as a,p as o,c as s,h as r,R as l,S as i,L as d,K as u}from"./logs-C4GIy4tX.js";import{a6 as c,M as p,a3 as m,H as f,G as g,c4 as w,c6 as h,w as b,bZ as v,U as j,b$ as x,c0 as y,al as k,a1 as _,h as M,ak as N,o as L,a8 as S,Y as T,u as C,l as P,i as O,B as F,N as R,b7 as E,ax as H,q,r as W,b4 as $,c8 as I,c3 as D,aG as A,E as U,T as B,aE as J,bx as K,S as Q,af as G,C as V}from"./index-HxEUeoab.js";import{h as Z,f as z,i as X,o as Y,j as ee,d as te}from"./activity-yZTrGy-J.js";import{w as ne}from"./labels-D8xxfRTQ.js";import{c as ae,C as oe}from"./Coverage-8qg_JeNJ.js";import{f as se}from"./nav-CKRufMnz.js";import{L as re}from"./AppearanceControls-sRy1p156.js";import{T as le}from"./Tabs-DT6MQhIo.js";import{T as ie}from"./Toolbar-BTFtduwD.js";import{D as de}from"./Table-yWn0d3vL.js";import{T as ue}from"./TimeCell-BIqfL3y_.js";import{a as ce,u as pe,b as me}from"./flows-dBNkBg79.js";import{u as fe}from"./outbounds-Bbb6kdae.js";import{u as ge,Q as we,R as he}from"./useQuickRule-DUEi6geL.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./Tag-SxASl3TF.js";import"./Select-D7_6MaHd.js";import"./ItemText-DOD_75iR.js";import"./nodes-6sIn2I0s.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";import"./DaeCode-DEjXqvav.js";import"./daeTokens-BVtuNnWZ.js";import"./AddCircle-C6Jc7GCc.js";import"./SearchSelect-BcScGUbQ.js";import"./SearchList-LjCruZYP.js";import"./rule-Bl9YOsFn.js";const be=["client","rule","outbound","node"];function ve(e,t){if(e.rule_id)return null!==e.rule_generation_id&&e.rule_generation_id===t?e.rule_id:e.rule_id+"\0"+e.rule_expression}function je(e,t,n,a){switch(t){case"client":{const t=p(e.input?.src??void 0);return{label:t??"unknown",unknown:!t}}case"rule":return e.rule_expression?{label:e.rule_expression,unknown:!1,key:ve(e,a)}:{label:"unknown",unknown:!0};case"outbound":return e.outbound?{label:e.outbound,unknown:!1}:{label:"unknown",unknown:!0};case"node":{if(c(e.outbound))return null;const t=e.chain.at(-1)??null;return t?{label:n.get(t)??t,unknown:!1,key:t}:{label:"unknown",unknown:!0}}}}const xe=(e,t)=>z(e,t.unknown?"":t.key??t.label),ye=e=>Z(e,be)?.kind,ke=new Map;function _e(e,t,n){const a=ye(t);return a?e.filter(e=>{const o=je(e,a,ke,n?.generation_id);return null!==o&&xe(a,o)===t}):[]}function Me(e,t,n,a){const o=Z(e,be);if(!o||""===o.value)return a(null);const{kind:s,value:r}=o;return"rule"===s?r.includes("\0")?r.slice(r.indexOf("\0")+1):t.find(e=>e.rule_id===r)?.expression??r:"node"===s?n.get(r)??r:"client"===s?r:a(r)}function Ne(e,t,n,a,o="rule"){const s=(e=>new Map(e.map(e=>[e.id,e.name])))(n),r=new Map(t.map(e=>[e.id,e])),l=new Map(t.map(e=>[e.name,e])),i=new Map(n.map(e=>[e.id,e])),d=new Map,u=new Map,p=new Map,w=new Map,h=(e,t)=>{const n=e+">"+t;let a=w.get(n);return a||w.set(n,a={source:e,target:t,count:0}),a},b=(e,t,n=!1)=>{const a=xe("node",{key:e,label:t,unknown:n});let o=p.get(a);if(!o){const s=n?void 0:i.get(e),r=s&&f(s);p.set(a,o={id:a,label:t,count:0,unknown:n||void 0,latency:g(r),unavailable:"unavailable"===r?.state})}return o},v=(e,t=!1)=>{const n=xe("outbound",{label:e,unknown:t});let a=u.get(n);if(a)return a;const o=t?void 0:l.get(e),d=t?{groups:[],member:null}:m(e,o?.selection.tcp_member_id?"tcp":"udp",l,r,i),p=d.groups.map(e=>({name:e.name,kind:e.policy.kind,policy:e.policy.native})),f=d.member;return a={id:n,label:e,count:0,unknown:t||void 0,kind:t?"unknown":c(e)?e:p.length?"group":"unknown",groups:p,node:f&&b(f,s.get(f)??f).id},u.set(n,a),a.node&&h(n,a.node),a},j=(e,t,n=!1)=>{let a=d.get(e);return a||d.set(e,a={id:e,label:t,count:0,unknown:n||void 0,outbound:null,must:!1}),a};if("rule"===o)for(const c of a?.rules??[]){const e=j(xe("rule",{key:c.rule_id,label:c.expression}),c.expression);e.must=c.must,c.outbound&&(e.outbound=v(c.outbound).id,h(e.id,e.outbound))}const x=[o,"outbound","node"];for(const c of e){let e;for(const t of x){const n=je(c,t,s,a?.generation_id);if(!n)break;const o="outbound"===t?v(n.label,n.unknown):"node"===t?b(n.key??n.label,n.label,n.unknown):j(xe(t,n),n.label,n.unknown);o.count++,e&&h(e.id,o.id).count++,e=o}}for(const c of t)v(c.name);const y=new Set([...d.values()].map(e=>e.outbound)),k=new Set([...u.values()].flatMap(e=>e.groups.slice(1).map(e=>e.name))),_=[...u.values()].filter(e=>e.count||y.has(e.id)||!k.has(e.label)),M=new Set(_.map(e=>e.id)),N=[...w.values()].filter(e=>M.has(e.source)||M.has(e.target)),L=new Set(N.map(e=>e.target));return{by:o,leaves:[...d.values()],outbounds:_,nodes:[...p.values()].filter(e=>L.has(e.id)),links:N}}const Le=new WeakMap;function Se(e){const t=Le.get(e);if(t)return t;const n=new Map,a=new Map,o=new Map;for(const l of e.links){for(const[e,t]of[[n,l.source],[a,l.target]]){let n=e.get(t);n||e.set(t,n=[]),n.push(l)}(!o.has(l.source)||o.get(l.source).count<l.count)&&o.set(l.source,l)}const s=new Map;for(const l of[...e.leaves,...e.outbounds]){const e=("groups"in l?l.node:l.outbound)??oLine truncated
@@ -1 +0,0 @@
import{fG as e,cK as t,cD as r,cC as o,bp as a,fH as i,dY as l,eB as n,eC as s,eq as c,er as d,es as u,cL as p,et as g,ev as f,ew as y,cN as v,eu as b,el as h,e1 as m,fM as k,c$ as D,e6 as w,d3 as E,d2 as P,eA as M,cU as x,cV as S,cW as A,eN as K,cY as C,eb as T,eH as N,eJ as B,e2 as I,eO as F,cQ as L,e3 as R,e0 as V,ek as H,eI as U,eK as O,c_ as z,eT as $,eU as G,ea as W}from"./index-HxEUeoab.js";import{b as _,a as j,c as q,e as Y,f as J,g as Q}from"./Checkbox-CJt7u9-e.js";import{k as X,f as Z,e as ee,l as te,g as re,i as oe,h as ae}from"./Select-D7_6MaHd.js";import{r as ie,$ as le}from"./vendor-react-64fcanlc.js";const ne=new WeakMap;function se(e,t){let{id:r}=ne.get(e)??{};if(!r)throw new Error("Unknown list");return`${r}-${function(e){return"string"==typeof e?e.replace(/\s*/g,""):""+e}(t)}`}const ce={ltr:"ArrowRight",rtl:"ArrowLeft"},de={ltr:"ArrowLeft",rtl:"ArrowRight"};function ue(e,t,r){let{node:m,isVirtualized:k,focusMode:D="row",allowsArrowNavigation:w}=e,{direction:E}=a(),{onAction:P,linkBehavior:M,keyboardNavigationBehavior:x,shouldSelectOnPressUp:S}=ne.get(t),A=i(),K=ie.useRef(null),C=()=>{if(null!==r.current){if("child"===D){if(c(r.current)&&r.current!==d(u(r.current)))return;let e=p(r.current,{tabbable:!0}).firstChild();if(e)return g(e),void f(e,{containingElement:y(e)})}(null!=K.current&&m.key!==K.current||!c(r.current))&&g(r.current)}},T={},N=e.hasChildItems,B=t.selectionManager.isLink(m.key);if(null!=m&&"expandedKeys"in t){let e=t.collection.getChildren?.(m.key);N=N||[...e??[]].length>1,null==P&&!B&&"none"===t.selectionManager.selectionMode&&N&&(P=()=>t.toggleKey(m.key));let r=N?t.expandedKeys.has(m.key):void 0,o=1,a=m.index;if(m.level>=0&&null!=m?.parentKey){let e=t.collection.getItem(m.parentKey);if(e){let r=function(e,t){let r=t.getChildren?.(e.key),o=r?Array.from(r):[],a=o.length>0?o[0]:null,i=[];for(;a;)i.push(a),a=null!=a.nextKey?t.getItem(a.nextKey):null;return i}(e,t.collection);o=[...r].filter(e=>"item"===e.type).length,a>0&&"item"!==r[0].type&&(a-=1)}}else o=[...t.collection].filter(e=>0===e.level&&"item"===e.type).length;T={"aria-expanded":r,"aria-level":m.level+1,"aria-posinset":a+1,"aria-setsize":o}}let{itemProps:I,...F}=l({selectionManager:t.selectionManager,key:m.key,ref:r,isVirtualized:k,shouldSelectOnPressUp:e.shouldSelectOnPressUp||S,onAction:P||m.props?.onAction?n(m.props?.onAction,P?()=>P(m.key):void 0):void 0,focus:C,linkBehavior:M}),L=s(m.props),R=F.hasAction?L:{},V=o(I,R,{role:"row",onKeyDownCapture:"arrow"===x||w?e=>{let o=d(u(r.current));if(!h(e.currentTarget,v(e))||!r.current||!o)return;let a=p(r.current);if(a.currentNode=o,!pe(e,t,m,N,E,o,r.current,w))switch(e.key){case"ArrowLeft":if("arrow"===x){let t="rtl"===E?a.nextNode():a.previousNode();if(t)e.preventDefault(),e.stopPropagation(),g(t),f(t,{containingElement:y(r.current)});else if(e.preventDefault(),e.stopPropagation(),"rtl"===E)g(r.current),f(r.current,{containingElement:y(r.current)});else{a.currentNode=r.current;let e=ge(a);e&&(g(e),f(e,{containingElement:y(r.current)}))}}break;case"ArrowRight":if("arrow"===x){let t="rtl"===E?a.previousNode():a.nextNode();if(t)e.preventDefault(),e.stopPropagation(),g(t),f(t,{containingElement:y(r.current)});else if(e.preventDefault(),e.stopPropagation(),"ltr"===E)g(r.current),f(r.current,{containingElement:y(r.current)});else{a.currentNode=r.current;let e=ge(a);e&&(g(e),f(e,{containingElement:y(r.current)}))}}break;case"ArrowUp":case"ArrowDown":!e.altKey&&h(r.current,v(e))&&(e.stopPropagation(),e.preventDefault(),r.current.parentElement?.dispatchEvent(new KeyboardEvent(e.nativeEvent.type,e.nativeEvent)))}}:void 0,onFocus:e=>{K.current=m.key,v(e)===r.current?"child"===D&&e.relatedTarget&&h(r.current,e.relatedTarget)||requestAnimationFrame(()=>{"child"===D&&d(u(r.current))===r.current&&C()}):b()||t.selectionManager.setFocusedKey(m.key)},"aria-label":m["aria-label"]||m.textValue||void 0,"aria-selected":t.selectionManager.canSelectItem(m.key)?t.selectionManager.isSelected(m.key):void 0,"aria-disabled":t.selectionManager.isDisabled(m.key)||void 0,"aria-labelledby":A&&(m["aria-label"]||m.textValue)?`${se(t,m.key)} ${A}`:void 0,id:se(t,m.key)});"child"===D&&w&&"tab"===x&&(V.tabIndex=-1);let H=V.onKeyDown;if(V.onKeyDown=e=>{(e=>{let o=d(u(r.current));if(h(e.currentTarget,v(e))&&r.current&&o){if("tab"===x){if(v(e)!==r.current&&"Tab"!==e.key)return void e.stopPropagation();if(pe(e,t,m,N,E,o,r.current,w))return}if("Tab"===e.key&&"tab"===x){let t=p(r.current,{tabbable:!0});t.currentNode=o,(e.shiftKey?t.previousNode():t.nextNode())&&e.stopPropagation()}}})(e),e.isPropagationStopped()||H?.(e)},k){let{collection:e}=t,r=[...e];V["aria-rowindex"]=r.find(e=>"section"===e.type)?[...e.getKeys()].filter(t=>"section"!==e.getItem(t)?.type).findIndex(e=>e===m.key)+1:m.index+1}return{rowProps:{...o(V,T)},gridCellProps:{role:"gridcell","aria-colindex":1},descriptionProps:{id:A},...F}}function pe(e,t,r,o,a,i,l,n){if(!("expandedKeys"in t)||!n&&i!==l)return!1;if(e.key===ce[a]&&t.selectionManager.focusLine truncated
@@ -1 +0,0 @@
import{j as s}from"./vendor-react-64fcanlc.js";import{I as e,d5 as a,N as l,T as c}from"./index-HxEUeoab.js";function r(a){return s.jsx(e,{...a,children:s.jsx("path",{fill:"currentColor",d:"M7.864 15.734c-.222 0-.433-.098-.576-.27l-3.747-4.497c-.266-.319-.222-.792.096-1.057.317-.265.79-.223 1.056.096l3.154 3.786 7.44-9.469c.255-.326.728-.382 1.052-.127.326.256.383.728.127 1.053L8.454 15.447c-.14.179-.352.284-.579.287z"})})}const t=()=>s.jsx(r,{className:"rp-check-mark"}),i=({i:e,cut:a,reserveFlag:r=!1})=>{const t="path"===a?e.label.lastIndexOf("/")+1:0;return s.jsxs("span",{className:"rp-il",children:[(e.flag||r&&void 0!==e.flag)&&s.jsx("span",{className:"rp-node-flag","data-flag":e.flag,"aria-hidden":"true"}),e.icon&&s.jsx("span",{className:"ic",children:e.icon}),e.nodeName?s.jsx(l,{name:e.label,cut:"start"===a?a:void 0}):t?s.jsxs(c,{className:"rp-path",text:e.label,children:[s.jsx("span",{className:"rp-truncate rp-truncate-start",children:s.jsx("bdi",{children:e.label.slice(0,t)})}),s.jsx("bdi",{children:e.label.slice(t)})]}):s.jsx(c,{cut:"start"===a?a:void 0,tooltipText:e.label,children:e.label})]})},n=({i:e,children:l})=>s.jsxs("span",{className:"rp-item-text",children:[s.jsx(a,{slot:"label",elementType:"span",children:s.jsx(i,{i:e,reserveFlag:!0})}),l??(e.desc&&s.jsx(a,{slot:"description",className:e.aside?"desc aside":"desc",children:e.desc}))]});export{r as C,i as I,t as a,n as b};
@@ -1 +0,0 @@
import{j as s}from"./vendor-react-64fcanlc.js";import{b7 as r}from"./index-HxEUeoab.js";function e({className:e,...o}){return s.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",width:10,height:10,viewBox:"0 0 12 12","aria-hidden":"true",focusable:"false",className:r("rp-icon rp-link-out",e),...o,children:s.jsx("path",{fill:"currentColor",d:"m10.08887,1h-5.51074c-.50293,0-.91113.4082-.91113.91113s.4082.91113.91113.91113h3.31055L1.35547,9.35547c-.35645.35645-.35645.93262,0,1.28906.17773.17773.41113.2666.64453.2666s.4668-.08887.64453-.2666l6.5332-6.5332v3.31055c0,.50293.4082.91113.91113.91113s.91113-.4082.91113-.91113V1.91113c0-.50293-.4082-.91113-.91113-.91113Z"})})}export{e as L};
@@ -1 +0,0 @@
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{u as n,l as r,by as s,m as o,aM as a,bz as i,aV as l,bA as c,bB as u,bC as d,bD as p,h as m,C as g,b6 as f,E as h,bE as x,bF as k,bk as w,bG as j,B as y}from"./index-HxEUeoab.js";import{D as b,s as v,d as T,a as S,o as E}from"./auth-CSMbhh2E.js";import{L as N,a as C,P as D,S as L}from"./AppearanceControls-sRy1p156.js";import{L as _}from"./LinkOut-D-cvJjm2.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./ItemText-DOD_75iR.js";const A=/^[A-Za-z0-9_.-]{1,64}$/;async function q(e,t){try{return v(await T(e,t))}catch(n){if(!function(e){return e instanceof SyntaxError||e instanceof a&&(404===e.status||401===e.status&&(!e.code||"authentication_required"===e.code))}(n))throw n;return n instanceof a&&404===n.status?await S(e,t)?"token":"no-api":"token"}}function P(e,t,n){try{const{profiles:r,activeId:s}=u(),o=function(e,t,n,r){return e.some(e=>e.id===t&&p(e.api)===p(n))?e.map(e=>e.id===t?{...e,token:r.trim()}:e):null}(r,e,t,n);if(!o)return"login.stale";d({profiles:o,activeId:s})}catch{return"settings.saveError"}return null}async function I(e,t,n,r){let s;try{s=await E(t,n,r)}catch(o){return function(e,t){if(!(e instanceof a))return null;if("invalid_credentials"===e.code)return{key:"login.invalidCredentials"};if("setup_required"===e.code)return{key:"login.needsSetup",switchTo:"setup"};if("setup_already_completed"===e.code)return{key:"login.alreadySetUp",switchTo:"login"};if("permission_denied"===e.code&&"setup"===t)return{key:"login.setupPeer"};if("rate_limited"===e.code){const t=e.retryAfter??60;return{key:"login.rateLimited",params:{n:t},wait:t}}return null}(o,n)??{error:o}}try{c(e,t,s.token)}catch{return{key:"settings.saveError"}}return null}function R(e,t){const{kind:n,failure:r,attempt:s,ended:o,rejected:a}=e;return"no-api"===n?null:null!==r?{tone:"negative",text:"string"==typeof r?r:t(r.key,r.params),focus:!0,id:s}:o?{tone:"informative",text:t("login.sessionEnded"),focus:!1,id:0}:a&&"token"===n?{tone:"negative",text:t("login.rejected"),focus:!1,id:0}:null}const F=e=>"string"!=typeof e&&"login.rateLimited"===e.key;function H(t,a,c,u,d){const p=n(),m=r(),[g]=e.useState(()=>s(t,a)),[f,h]=e.useState(null),x=d?"no-api":f,[k,w]=e.useState({attempt:0,error:null});e.useEffect(()=>{if(d)return;const e=new AbortController;return q(a,e.signal).then(e=>h(e),t=>{e.signal.aborted||w(e=>({...e,error:t instanceof Error?t:new Error(String(t))}))}),()=>e.abort()},[a,k.attempt,d]);const[j,y]=e.useState(""),v=i(a),[T,S]=e.useState(v?b.username:""),[E,N]=e.useState(v?b.password:""),[C,D]=e.useState(""),[L,_]=e.useState(!1),[H,U]=e.useState(!1),[M,z]=e.useState({}),[B,O]=e.useState(null),[G,V]=e.useState(0),[Z,$]=e.useState(0),[J,K]=e.useState(Date.now);e.useEffect(()=>{if(Z<=J)return;const e=setTimeout(()=>K(Date.now()),(Z-J)%1e3||1e3);return()=>clearTimeout(e)},[Z,J]);const Q=function(e,t){return Math.max(0,Math.ceil((e-t)/1e3))}(Z,J),W=(e,t)=>n=>{t(n),M[e]&&z(({[e]:t,...n})=>n)},X=async e=>{const n=function(e,t,n,r){const s={};t?A.test(t)||(s.username="login.badUsername"):s.username="login.usernameRequired";const o=[...n].length;return o?"setup"===e&&o<8?s.password="login.passwordShort":o>128||(new TextEncoder).encode(n).length>512?s.password="login.passwordLong":"setup"===e&&n!==r&&(s.confirm="login.mismatch"):s.password="login.passwordRequired",s}(e,T,E,C);if(z(n),Object.keys(n).length)return;U(!0);const r=await I(t,a,e,{username:T,password:E});if(r)if(U(!1),"error"in r)O(p("login.failed",{error:l(r.error,p)}));else{if(r.wait){const e=Date.now();K(e),$(e+1e3*r.wait)}r.switchTo&&(h(r.switchTo),D("")),O(r)}else location.reload()},Y="setup"===x||"login"===x,ee=e=>M[e]?p(M[e]):void 0;return{kind:x,discoveryError:k.error,retryDiscovery:()=>w(e=>({attempt:e.attempt+1,error:null})),title:p("no-api"===x?"login.noApiTitle":"setup"===x?"login.setupTitle":"token"===x?"login.title":"login.passwordTitle"),note:"no-api"===x?p("login.noApiNote"):p("setup"===x?"login.setupNote":"login"===x?"login.connectedTo":"login.note",{backend:c}),demoNote:v&&"login"===x?p("login.demoNote",b):null,alert:R({kind:x,failure:B&&!Q&&F(B)?null:B,attempt:G,ended:g,rejected:u},p),busy:H,token:j,setToken:y,username:T,setUsername:W("username",S),usernameError:ee("username"),password:E,setPassword:W("password",N),passwordError:ee("password"),confirm:C,setConfirm:W("confirm",D),confirmError:ee("confirm"),submit:()=>{H||Q||null===x||"no-api"===x||(O(null),V(e=>e+1),Y?X(x):(()=>{if(!j.trim())return;const e=P(t,a,j);e?O({key:e}):location.reload()})())},canSubmit:null!==x&&"no-api"!==x&&!Q&&(Y||!!j.trim()),submitText:Q?p("login.retryIn",{n:Q}):p("setup"===x?"login.create":"login"===x?"login.signIn":"login.submit"),secretType:L?"text":"password",toggle:()=>_(e=>!e),toggleText:p(Y?L?"login.hidePassword":"login.showPassword":L?"settings.hideToken":"settings.showToken"),guideHref:o(m),requirementsHref:o(m,"no-native-api")}}function U({profileId:e,api:r,backend:s,rejected:o,missingApi:a,lang:i,pickLang:l,dark:c,thLine truncated
@@ -1 +0,0 @@
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{bI as r,u as s,al as a,l,dr as o,bP as n,B as i,cf as c,ds as d,C as g,dt as m,U as u,a1 as p,q as h,x as f,cb as x,bT as v,T as j,p as b,bG as w,ch as y,E as M}from"./index-HxEUeoab.js";import{aO as T,a as N,F as k,aP as C,D as $}from"./activity-yZTrGy-J.js";import{C as S}from"./ItemText-DOD_75iR.js";import{P as A,Q as O,K as P,L as R,A as W}from"./logs-C4GIy4tX.js";import{T as L}from"./Toolbar-BTFtduwD.js";import{D}from"./Table-yWn0d3vL.js";import{d as F,e as q}from"./files-Dt8K7QfP.js";import{r as B}from"./recorder-BHyqDNp5.js";import{u as E,C as H}from"./Copy-CGFSe6tr.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./AppearanceControls-sRy1p156.js";import"./Select-D7_6MaHd.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";const I=new WeakMap;function _(e){let t=I.get(e);return void 0===t&&I.set(e,t=Date.parse(e.ts)),t}const J=[...r].reverse();function K({records:m,offered:u,minimum:p,setMinimum:h,waiting:f}){const x=s(),v=a[l()],j=N(),b=e.useMemo(()=>function(e,t,r,s=24){const a=r?J.indexOf(r):J.length-1,l=J.filter((e,r)=>t.includes(e)&&r<=a),o=e.map(_).filter(Number.isFinite);if(!o.length)return{rows:l.map(e=>({level:e,counts:[]})),buckets:[],width:0,busiest:null};const n=Math.min(...o),i=Math.max(...o),c=T(n,i,s),d=c.length>1?c[1]-c[0]:Math.max(i-n,6e4),g=new Map(l.map(e=>[e,new Array(c.length).fill(0)])),m=new Array(c.length).fill(0),u=new Array(c.length).fill(0);for(const x of e){const e=_(x),t=g.get(x.level);if(!t||!Number.isFinite(e))continue;const r=Math.min(c.length-1,Math.floor((e-c[0])/d));t[r]++,m[r]++,"error"===x.level&&u[r]++}const p=e=>e.reduce((t,r,s)=>r>e[t]?s:t,0),h=u.reduce((e,t)=>e+t,0),f=p(h?u:m);return{rows:l.map(e=>({level:e,counts:g.get(e)})),buckets:c,width:d,busiest:{start:c[f],count:h?u[f]:m[f],errors:h}}}(m,u,p),[m,u,p]),w=e.useMemo(()=>o(v),[v]),y=e.useCallback(e=>`${w.format(e)}–${w.format(e+b.width)}`,[w,b.width]),M=e.useMemo(()=>{const e=r.map(e=>{const r=x(n[e]);return[e,{text:r,label:t.jsxs(i,{quiet:!0,small:!0,className:e===p?"current":void 0,label:x(e===p?"log.chart.current":"log.chart.minimum",{level:r}),onPress:()=>h(e),children:[e===p&&t.jsx(S,{}),r]})}]});return new Map(e)},[p,h,x]),$=e.useMemo(()=>{const e={error:j.negative,warn:j.notice,info:j.info,debug:j.subtle,trace:j.muted},t=b.buckets.map(y);return{columns:b.buckets.map(e=>w.format(e)),rows:b.rows.map(r=>{const{text:s,label:a}=M.get(r.level);return{id:r.level,color:e[r.level],label:a,counts:r.counts,titles:r.counts.map((e,r)=>x("log.chart.cell",{time:t[r],level:s,n:e}))}})}},[b,y,w,M,j,x]);if(!m.length)return f?t.jsx(Q,{heads:M,levels:b.rows.map(e=>e.level),time:w.format(0)}):null;const A=b.busiest,O=A?A.errors?[{label:x("log.chart.errors"),value:x("log.chart.count",{n:A.errors}),icon:t.jsx(c,{}),tone:"negative"},{label:x("log.chart.peakErrors"),icon:t.jsx(d,{}),tint:"c1",value:y(A.start),caption:x("log.chart.count",{n:A.count})}]:[{label:x("log.chart.errors"),value:x("log.chart.count",{n:0}),icon:t.jsx(c,{}),tint:"c5"},{label:x("log.chart.peak"),icon:t.jsx(d,{}),tint:"c1",value:y(A.start),caption:x("log.chart.count",{n:A.count})}]:[];return t.jsxs("div",{className:"rp-chart-page",children:[t.jsx(k,{facts:O}),t.jsx(g,{title:x("log.chart.title"),note:x("log.chart.sample",{n:m.length}),children:t.jsx(C,{label:x("log.chart.title"),columns:$.columns,rows:$.rows})})]})}function Q({heads:e,levels:r,time:a}){const l=s(),o=[{label:l("log.chart.errors"),value:l("log.chart.count",{n:0}),icon:t.jsx(c,{}),tint:"c5"},{label:l("log.chart.peak"),icon:t.jsx(d,{}),tint:"c1",value:`${a}–${a}`,caption:l("log.chart.count",{n:0})}],n=r.map(t=>({id:t,color:"transparent",label:e.get(t).label,counts:[0],titles:[""]}));return t.jsxs("div",{className:"rp-chart-page",inert:!0,"aria-hidden":"true",children:[t.jsxs("div",{className:"rp-chart-hold",children:[t.jsx(k,{facts:o}),t.jsx(m,{})]}),t.jsxs("div",{className:"rp-chart-hold",children:[t.jsx(g,{title:l("log.chart.title"),note:l("log.chart.sample",{n:0}),children:t.jsx(C,{label:l("log.chart.title"),columns:[a],rows:n})}),t.jsx(m,{})]})]})}const U={trace:"muted",debug:"neutral",info:"info",warn:"warn",error:"err"},z=new WeakMap;function G(e,t,s,a,l,o=new Set,i){return{rows:e.flatMap(e=>{const t=function(e,t,r){const s=z.get(e);if(s&&s.locale===t)return s.row;const a={id:e.id,timestamp:p(e.ts,t),iso:e.ts,levelText:u(n,e.level,r),tone:U[e.level],target:e.target,gap:!1,record:e,message:e.message+(e.fields?" "+Object.entries(e.fields).map(([e,t])=>`${e}=${"string"==typeof t?t:JSON.stringify(t)}`).join(" "):"")};return z.set(e,{locale:t,row:a}),a}(e,a,l);return o.has(e)?[{...t,id:`gap ${e.id}`,timestamp:"",iso:"",levelText:"",target:"",gap:!0,message:l("log.gap")},t]:[t]}),levels:t.map(e=>{return{id:e,label:(t=e,i&&r.indexOf(t)<r.indexOf(i)?l("log.levelNotRecorded",{level:u(n,e,l)}):u(n,e,l))};var t}),recordedText:i?l("log.recorded",{level:u(n,i,l)}):null,exportBase:`${s||"engLine truncated
@@ -1 +0,0 @@
import{j as e,r as n}from"./vendor-react-64fcanlc.js";import{T as a,ci as s,u as r,S as o,af as i,al as t,l,q as d,r as c,cc as u,c5 as m,E as p,a8 as g,ce as h,cf as v,C as b,ak as f,N as j,B as x,ax as y,p as k,cg as w,I as N,b4 as S,ap as P,db as A,aE as C,a as M,b as F,bG as T,dc as L,dd as G,b9 as R,A as D,aK as O,v as E,c9 as q,c2 as _,aU as I,h as B,aV as H,Y as Q,cv as U,cw as K,x as V,w as J,de as W,aa as z,c6 as $,c4 as X,cx as Y,aN as Z,ch as ee,av as ne,df as ae,b5 as se,cs as re,bF as oe,d8 as ie,aL as te}from"./index-HxEUeoab.js";import{L as le,C as de,l as ce}from"./AppearanceControls-sRy1p156.js";import{T as ue}from"./Tabs-DT6MQhIo.js";import{h as me,c as pe,g as ge,S as he,K as ve,n as be,A as fe,L as je,z as xe,v as ye,u as ke,B as we,E as Ne,e as Se,w as Pe}from"./logs-C4GIy4tX.js";import{ad as Ae,a1 as Ce,ae as Me,af as Fe,C as Te,F as Le,ag as Ge,ah as Re,ai as De,aj as Oe,q as Ee,ak as qe,al as _e,am as Ie,an as Be,ao as He,ap as Qe,aq as Ue,ar as Ke,V as Ve,as as Je,at as We,au as ze,av as $e,aw as Xe,ax as Ye,ay as Ze,az as en,aA as nn,aB as an,aC as sn,aD as rn,aE as on,aF as tn,aG as ln,Q as dn,aH as cn,aI as un,aJ as mn,aK as pn}from"./activity-yZTrGy-J.js";import{T as gn}from"./Toolbar-BTFtduwD.js";import{T as hn}from"./TimeCell-BIqfL3y_.js";import{a as vn,$ as bn}from"./GridList-D7qdplA5.js";import{P as fn}from"./ProbeOptionsDialog-BynYQcxa.js";import{D as jn,c as xn}from"./Table-yWn0d3vL.js";import{F as yn,T as kn,L as wn}from"./Tag-SxASl3TF.js";import{FlagField as Nn}from"./FlagPicker-CiyGi8d1.js";import{S as Sn}from"./SearchSelect-BcScGUbQ.js";import{u as Pn}from"./outbounds-Bbb6kdae.js";import{aa as An,z as Cn,ab as Mn,ac as Fn,A as Tn,ad as Ln,ae as Gn,m as Rn,O as Dn,r as On,v as En,l as qn,q as _n,af as In}from"./nodes-6sIn2I0s.js";import{$ as Bn}from"./SearchList-LjCruZYP.js";import{a as Hn,p as Qn}from"./probe-Bj7oT3ox.js";import{n as Un}from"./nav-Bkujhswg.js";import{N as Kn,t as Vn,n as Jn}from"./NumberField-q4-QmTAT.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./ItemText-DOD_75iR.js";import"./Checkbox-CJt7u9-e.js";import"./Select-D7_6MaHd.js";import"./Virtualizer-DMIKG2CD.js";function Wn({label:n,items:a,selected:s,onSelect:t,loading:l,empty:d,children:c}){const u=r();return e.jsx(bn,{className:"rp-cardview","aria-label":n,layout:"grid",items:a,dependencies:[c],selectionMode:"single",selectionBehavior:"replace",disallowEmptySelection:!0,selectedKeys:s?[s]:[],onSelectionChange:e=>{if("all"===e)return;const n=[...e][0];null!=n&&t(String(n))},renderEmptyState:()=>l?e.jsx(o,{shape:"cards",count:3,height:224,grid:!0}):e.jsx(i,{children:d??u("ui.empty")}),children:c})}function zn({id:n,title:r,titleFull:o,meta:i,actions:t,children:l}){return e.jsxs(vn,{id:n,textValue:r,className:s("rp-cardview-card"),children:[e.jsxs("div",{className:"rp-cardview-head",children:[e.jsx(a,{className:"rp-cardview-title",text:o,children:r}),t&&e.jsx("span",{className:"rp-cardview-actions",children:t})]}),i&&e.jsx("div",{className:"rp-cardview-meta",children:i}),l]})}function $n(a,s){return a.split("{names}").map((a,r)=>e.jsxs(n.Fragment,{children:[r>0&&s,a]},r))}function Xn(a,s,r,o){const i=f(s,["",""]),t=a.slice(0,6).map((a,s)=>e.jsxs(n.Fragment,{children:[s>0&&i,e.jsx(le,{appearance:"link",layout:"inline",href:o.get(a.id)??Oe([a.id]),children:e.jsx(j,{name:a.name})})]},a.id));if(a.length<=6)return t;const l=e.jsx(le,{appearance:"link",layout:"inline",href:Oe(a.map(e=>e.id)),children:r("nodes.latency.more",{n:a.length-6})});return r("nodes.latency.andMore",{names:"{names}",more:"{more}"}).split(/(\{names\}|\{more\})/).map((a,s)=>e.jsx(n.Fragment,{children:"{names}"===a?t:"{more}"===a?l:a},s))}const Yn=n=>[{label:n("nodes.latency.lowest"),icon:e.jsx(h,{}),tint:"c2",value:"",caption:" "},{label:n("nodes.latency.highest"),icon:e.jsx(Te,{}),tint:"c4",value:"",caption:" "},{label:n("ui.unavailable"),icon:e.jsx(v,{}),tint:"c5",value:""}];function Zn(){const a=r(),s=l(),{nodes:f,by:j,setBy:x,view:y,hrefs:k}=function(){const e=t[l()],a=d().data?.resources,s=me(c(a,"nodes",{whileLoading:!0})),r=pe(c(a,"groups",{whileLoading:!1})),o=ge(c(a,"providers",{whileLoading:!0})),[i,p]=n.useState("group"),g=u(),h=m(s.data,g),v=m(r.data,g),b=m(o.data,g),f=n.useMemo(()=>Ae(h??[],v,i,e),[h,v,i,e]),j=n.useMemo(()=>new Map((h??[]).map(e=>[e.id,Ce(e,b?.providers??[],!0)])),[h,b]);return{nodes:{...s,data:h},by:i,setBy:p,view:f,hrefs:j}}();if(f.error&&!f.data)return e.jsx(p,{error:f.error,onRetry:f.refetch});const w=!f.data;if(f.data&&!f.data.length)return e.jsx(i,{children:a("ui.empty")});const N=Me(y),{measured:S,down:P}=Fe(y),A=S[0],C=S.at(-1),M=A&&C?[{label:a("nodes.latency.lowest"),icon:e.jsx(h,{}),tint:"c2",value:A.name,nodeName:!0,valueRole:"name",caption:g(A.latest,a)},{label:a("nodes.latency.highest"),icon:e.jsx(Te,{}),tint:"c4",value:C.name,nodeName:!0,valueRole:"name",caption:g(C.latest,a)},{label:a("ui.unavailable"),value:a("nodes.latency.count",{n:P}),icon:e.jsx(v,{}),tint:"c5",tone:P?"negative":voidLine truncated
@@ -1 +0,0 @@
import{r as e,a as t,$ as i,j as a}from"./vendor-react-64fcanlc.js";import{g7 as s,em as n,ez as r,g8 as l,cC as o,cN as u,fi as c,en as d,cJ as m,g9 as p,ep as v,dv as h,cK as f,fN as b,dA as g,cI as y,ga as N,ex as S,cD as x,g6 as P,cE as D,gb as w,eP as E,er as V,dw as M,dz as F,cO as R,cP as I,cQ as C,cR as B,cS as O,bp as T,cT as j,d1 as L,cU as k,cW as $,gc as U,gd as A,cX as q,eN as G,cY as K,cZ as W,cV as z,I as H,da as Y,u as Z,cm as _,d4 as X,fk as J,ge as Q,cl as ee,b7 as te,d5 as ie,gf as ae,cf as se,dC as ne}from"./index-HxEUeoab.js";const re=new RegExp("^.*\\(.*\\).*$"),le=["latn","arab","hanidec","deva","beng","fullwide"];class oe{constructor(e,t={}){this.locale=e,this.options=t}parse(e){return ce(this.locale,this.options,e).parse(e)}isValidPartialNumber(e,t,i){return ce(this.locale,this.options,e).isValidPartialNumber(e,t,i)}getNumberingSystem(e){return ce(this.locale,this.options,e).options.numberingSystem}}const ue=new Map;function ce(e,t,i){let a=de(e,t);if(!e.includes("-nu-")&&!a.isValidPartialNumber(i))for(let s of le)if(s!==a.options.numberingSystem){let a=de(e+(e.includes("-u-")?"-nu-":"-u-nu-")+s,t);if(a.isValidPartialNumber(i))return a}return a}function de(e,t){let i=e+(t?Object.entries(t).sort((e,t)=>e[0]<t[0]?-1:1).join():""),a=ue.get(i);return a||(a=new me(e,t),ue.set(i,a)),a}class me{constructor(e,t={}){this.locale=e,1!==t.roundingIncrement&&null!=t.roundingIncrement&&(null==t.maximumFractionDigits&&null==t.minimumFractionDigits?(t.maximumFractionDigits=0,t.minimumFractionDigits=0):null==t.maximumFractionDigits?t.maximumFractionDigits=t.minimumFractionDigits:null==t.minimumFractionDigits&&(t.minimumFractionDigits=t.maximumFractionDigits)),this.formatter=new Intl.NumberFormat(e,t),this.options=this.formatter.resolvedOptions(),this.symbols=function(e,t,i,a){let s=new Intl.NumberFormat(e,{...i,minimumSignificantDigits:1,maximumSignificantDigits:21,roundingIncrement:1,roundingPriority:"auto",roundingMode:"halfExpand",useGrouping:!0}),n=s.formatToParts(-10000.111),r=s.formatToParts(10000.111),l=ve.map(e=>s.formatToParts(e)),o=l.map((e,t)=>{let i=e.find(e=>"unit"===e.type);return i&&!e.some(e=>"integer"===e.type||"fraction"===e.type)?{unit:i.value,value:ve[t]}:null}).filter(e=>!!e),u=n.find(e=>"minusSign"===e.type)?.value??"-",c=r.find(e=>"plusSign"===e.type)?.value;c||"exceptZero"!==a?.signDisplay&&"always"!==a?.signDisplay||(c="+");let d=new Intl.NumberFormat(e,{...i,minimumFractionDigits:2,maximumFractionDigits:2}).formatToParts(.001),m=d.find(e=>"decimal"===e.type)?.value,p=n.find(e=>"group"===e.type)?.value,v=n.filter(e=>!pe.has(e.type)).map(e=>fe(e.value)),h=l.flatMap(e=>e.filter(e=>!pe.has(e.type)).map(e=>fe(e.value))),f=[...new Set([...v,...h])].sort((e,t)=>t.length-e.length),b=0===f.length?new RegExp("\\p{White_Space}|\\p{Cf}","gu"):new RegExp(`${f.join("|")}|\\p{White_Space}|\\p{Cf}`,"gu"),g=[...new Intl.NumberFormat(i.locale,{useGrouping:!1}).format(9876543210)].reverse(),y=new Map(g.map((e,t)=>[e,t])),N=new RegExp(`[${g.join("")}]`,"g");return{minusSign:u,plusSign:c,decimal:m,group:p,literals:b,numeral:N,numerals:g,index:e=>String(y.get(e)),noNumeralUnits:o}}(e,this.formatter,this.options,t),"percent"===this.options.style&&((this.options.minimumFractionDigits??0)>18||(this.options.maximumFractionDigits??0)>18)&&console.warn("NumberParser cannot handle percentages with greater than 18 decimal places, please reduce the number in your options.")}parse(e){let t=this.formatter.resolvedOptions().useGrouping,i=this.sanitize(e);if(!t&&this.symbols.group&&i.includes(this.symbols.group))return NaN;if(this.symbols.group&&(i=i.replaceAll(this.symbols.group,"")),this.symbols.decimal&&(i=i.replace(this.symbols.decimal,".")),this.symbols.minusSign&&(i=i.replace(this.symbols.minusSign,"-")),i=i.replace(this.symbols.numeral,this.symbols.index),"percent"===this.options.style){let e=i.indexOf("-");i=i.replace("-",""),i=i.replace("+","");let t=i.indexOf(".");-1===t&&(t=i.length),i=i.replace(".",""),i=t-2==0?`0.${i}`:t-2==-1?`0.0${i}`:t-2==-2?"0.00":`${i.slice(0,t-2)}.${i.slice(t-2)}`,e>-1&&(i=`-${i}`)}let a=i?+i:NaN;if(isNaN(a))return NaN;if("percent"===this.options.style){let e={...this.options,style:"decimal",minimumFractionDigits:Math.min((this.options.minimumFractionDigits??0)+2,20),maximumFractionDigits:Math.min((this.options.maximumFractionDigits??0)+2,20)};return new oe(this.locale,e).parse(new s(this.locale,e).format(a))}return"accounting"===this.options.currencySign&&re.test(e)&&(a*=-1),a}sanitize(e){let t=this.formatter.resolvedOptions().useGrouping;return this.symbols.noNumeralUnits.length>0&&this.symbols.noNumeralUnits.find(t=>t.unit===e)?this.symbols.noNumeralUnits.find(t=>t.unit===e).value.toString():(e=e.replace(this.symbols.literals,""),this.symbols.minusSign&&(e=e.replace("-",this.symbols.minusSign)),"arab"===this.options.numberingSystem&&(this.symbols.decimal&&(e=he(e,",",this.symbols.decimal),e=he(e,String.fromCharCode(1548),this.symbols.decimal)),this.symbols.group&&t&&(eLine truncated
@@ -1 +0,0 @@
import{j as r}from"./vendor-react-64fcanlc.js";import"./index-HxEUeoab.js";import{L as e}from"./Tag-SxASl3TF.js";function o({label:o,href:s}){return s?r.jsx(e,{href:s,children:o}):o}export{o as O};
@@ -1 +0,0 @@
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{ah as a,Q as s,aO as r,aZ as o,a_ as i,b0 as n,a1 as l,a0 as c,a5 as d,aX as p,X as u,h as v,Y as m,u as h,l as f,al as g,q as x,am as b,r as j,ao as y,an as w,x as k,bT as _,p as N,E as H,T as S,C as L,ax as R,bU as A,af as C,av as I,aD as V,S as D,P as E,B as P,bV as W}from"./index-HxEUeoab.js";import{d as B,e as F}from"./files-Dt8K7QfP.js";import{r as q,e as M,u as O,b as T,D as K,R as U}from"./activity-yZTrGy-J.js";import{e as J,K as X,A as z}from"./logs-C4GIy4tX.js";import{L as Q}from"./AppearanceControls-sRy1p156.js";import{D as Y,t as Z}from"./Table-yWn0d3vL.js";import{D as G}from"./DaeCode-DEjXqvav.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./ItemText-DOD_75iR.js";import"./Select-D7_6MaHd.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";import"./daeTokens-BVtuNnWZ.js";const $={connections:v("connections",{tab:"list"}),flows:v("flows",{tab:"records"}),routing_trace:v("rules",{tab:"trace"}),dns_query:v("dns",{tab:"query"}),dns_cache:v("dns",{tab:"cache"}),dns_log:v("dns",{tab:"log"}),events:v("events"),probes:v("nodes",{tab:"latency"}),traffic_history:v("activity"),memory_history:v("activity"),runtime_outbounds:v("activity"),logs:v("logs"),providers:v("nodes"),rules:v("rules",{tab:"list"}),config:v("config"),config_validate:v("config",{tab:"source",panel:"diagnostics"}),runtime_settings:v("settings",{card:"runtime"}),geodata:v("settings",{card:"geodata"})},ee={ebpf:"ov.v.ebpf",userspace:"ov.v.userspace",mock:"ov.v.mock",active:"ov.v.active",degraded:"ov.v.degraded",detached:"ov.v.detached",failed:"ov.v.failed",disabled:"ov.v.disabled",full:"ov.v.full",partial:"ov.v.partial",none:"ov.v.none",real:"ov.v.real",loaded:"ov.v.loaded",not_loaded:"ov.v.notLoaded",attached:"ov.v.attached",partially_attached:"ov.v.partiallyAttached",published:"ov.v.published",not_published:"ov.v.notPublished",healthy:"ov.v.healthy",ready:"ov.v.ready",error:"ov.v.error",unknown:"ov.v.unknown",ingress:"ov.v.ingress",egress:"ov.v.egress"};function te(e,t){return ee[e]?t(ee[e]):e}function ae(e,t,a,s,r=!1,o=[]){const i=e.ebpf,n=i?.maps?.conn_state,l=(e,t)=>{const s=function(e,t,a){return"degraded"===e?{title:a("ov.v.degraded"),text:a(t?"ov.degradedHelp.runtime":"ov.degradedHelp.datapath")}:"unknown"===e?{title:a("ov.v.unknown"),text:a("ov.unknownHelp")}:void 0}(t,r,a);return s?{label:a(e),value:te(t,a),help:s}:[a(e),te(t,a)]},c=i?.maps?.state??"unknown",d=i&&function(e,t,a,s){if("unknown"!==e||!t.length)return;const r=new Intl.ListFormat(s,{type:"conjunction"}).format(t);return{title:a("ov.v.notVerified"),text:a("ov.notVerifiedHelp",{hooks:r})}}(i.hooks,o,a,s);return[l("ov.f.kind",e.kind),l("ov.f.state",e.state),..."partial"===e.visibility&&i?[]:[l("ov.f.visibility",e.visibility)],...i?[l("ov.f.backend",i.backend),l("ov.f.programs",i.programs),d?{label:a("ov.f.hooks"),value:a("ov.v.notVerified"),help:d}:l("ov.f.hooks",i.hooks),l("ov.f.routing",i.routing.state),l("ov.f.health",i.health),..."partial"===c&&n&&!n.occupancy_known?[[a("ov.f.maps"),a("ov.mapCapacity",{capacity:m(n.capacity,s)})]]:[l("ov.f.maps",c),[a("ov.f.connState"),n?.occupancy_known&&null!==n.occupancy?a("ui.fraction",{part:m(n.occupancy,s),whole:m(n.capacity,s)}):n?a("ov.occupancyUnknown",{capacity:m(n.capacity,s)}):t]]]:[]]}const se={service:"ov.v.cgroupService",shared:"ov.v.cgroupShared"},re={service:"ov.cgroupHelp.service",shared:"ov.cgroupHelp.shared"};function oe(e,t,s,r=[],o=!1){const i=e.cgroup?.scope,n=e=>{const t=a(e??null);return null===t?"—":m(t,s)},l=[["ov.f.rss",c(e.process?.rss_bytes??null,s)],["ov.f.cgroupCurrent",c(e.cgroup?.current_bytes??null,s)],["ov.f.cgroupLimit",o&&null===e.cgroup?.limit_bytes?t("ov.noLimit"):c(e.cgroup?.limit_bytes??null,s)],["ov.f.cgroupScope",i&&"unknown"!==i?t(se[i]):"—"],["ov.f.oomHigh",n(e.cgroup?.events?.high)],["ov.f.oom",n(e.cgroup?.events?.oom)],["ov.f.oomKill",n(e.cgroup?.events?.oom_kill)],["ov.f.ebpfBytes",c(e.kernel?.ebpf_bytes??null,s)]],d=[...r,..."unknown"===i?["ov.f.cgroupScope"]:[],...e.kernel?[]:["ov.f.ebpfBytes"]];return l.filter(([e])=>!d.includes(e)).map(([e,a])=>"ov.f.cgroupScope"===e&&i&&"unknown"!==i?{label:t(e),value:a,help:{title:t(e),text:t("ui.valuePair",{label:a,value:t(re[i])})}}:[t(e),a])}const ie={status:"overview-status",limits:"overview-limits",datapath:"overview-datapath"};function ne(t=""){const v=h(),N=f(),H=g[N],S=x(),L=S.data?.resources,R=b(j(L,"runtime",{whileLoading:!1})),A=y(j(L,"datapath",{whileLoading:!1})),C=w(j(L,"runtime_memory",{whileLoading:!1})),I=k(),V=_(j(L,"runtime_settings",{whileLoading:!1})),D=O(R.data,S.data,R.refetch),[E,P]=e.useState(!1),W=e.useMemo(()=>({capabilities:S.data,runtime:R.data,version:I.data,memory:C.data,datapath:A.data}),[S.data,R.data,I.data,C.data,A.data]),K=e.useMemo(()=>S.data?T(S.data,I.data,v,N,V.data?.recording):[],[S.data,I.data,v,N,V.data?.recording]),U=K.length>0,X=!!A.data,z=S.loading||R.loading||I.loading||C.loading||A.loadiLine truncated
@@ -1 +0,0 @@
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{P as n}from"./ProbeOptionsDialog-BynYQcxa.js";import{C as i,a as s,b as r,E as l}from"./ConditionRow-B8Otz3rt.js";import{A as o}from"./AddCircle-C6Jc7GCc.js";import{T as a,R as d,j as c,s as u,u as p,w as m,l as h,k as g,U as f,V as b,S as y,O as v,Q as x,r as j,P as k}from"./nodes-6sIn2I0s.js";import{bp as w,u as S,h as N,I as C,N as M,w as _,aV as I,cj as E,U as D,G as O,aW as P,bQ as L,ck as R,b1 as z,aU as T,Y as $,al as q,l as K,cl as A,b7 as F,i as H,af as V,bG as G,ch as U,cm as B,cn as J,bw as Q,co as Y,cp as W,B as X,aE as Z,bk as ee,cq as te,b5 as ne,cr as ie,cs as se,aA as re,bF as le,c1 as oe,a9 as ae,ct as de,cu as ce,q as ue,r as pe,cv as me,cw as he,aR as ge,t as fe,A as be,aN as ye,aq as ve,H as xe,az as je,c2 as ke,v as we,cx as Se,E as Ne,cg as Ce,aG as Me,cy as _e,C as Ie,p as Ee,T as De,cz as Oe,ax as Pe,av as Le,b as Re,a as ze}from"./index-HxEUeoab.js";import{T as Te,a as $e,L as qe}from"./Tag-SxASl3TF.js";import{D as Ke}from"./DaeCode-DEjXqvav.js";import{N as Ae,L as Fe,D as He,K as Ve,h as Ge,g as Ue,u as Be,c as Je,v as Qe,w as Ye,m as We,x as Xe,S as Ze,n as et}from"./logs-C4GIy4tX.js";import{T as tt}from"./Toolbar-BTFtduwD.js";import{C as nt,L as it}from"./AppearanceControls-sRy1p156.js";import{$ as st,S as rt}from"./SearchList-LjCruZYP.js";import{i as lt,v as ot,w as at,x as dt,y as ct,z as ut,A as pt,E as mt,G as ht,H as gt,I as ft,J as bt,K as yt,M as vt,N as xt,O as jt,P as kt,Q as wt,T as St,V as Nt,X as Ct,Y as Mt,Z as _t}from"./activity-yZTrGy-J.js";import{$ as It,a as Et}from"./GridList-D7qdplA5.js";import{$ as Dt,a as Ot,b as Pt,c as Lt,d as Rt}from"./Virtualizer-DMIKG2CD.js";import{$ as zt,a as Tt}from"./Select-D7_6MaHd.js";import{a as $t,b as qt}from"./ItemText-DOD_75iR.js";import{S as Kt}from"./SearchSelect-BcScGUbQ.js";import{N as At,t as Ft,n as Ht}from"./NumberField-q4-QmTAT.js";import{p as Vt}from"./probe-Bj7oT3ox.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./Checkbox-CJt7u9-e.js";import"./daeTokens-BVtuNnWZ.js";const Gt={minItemSize:new Ot(200,200),maxItemSize:new Ot(1/0,1/0),preserveAspectRatio:!1,minSpace:new Ot(18,18),maxSpace:1/0,maxColumns:1/0,dropIndicatorThickness:2,loaderHeight:48};class Ut extends Dt{shouldInvalidateLayoutOptions(e,t){return e.maxColumns!==t.maxColumns||e.dropIndicatorThickness!==t.dropIndicatorThickness||e.preserveAspectRatio!==t.preserveAspectRatio||!(e.minItemSize||Gt.minItemSize).equals(t.minItemSize||Gt.minItemSize)||!(e.maxItemSize||Gt.maxItemSize).equals(t.maxItemSize||Gt.maxItemSize)||!(e.minSpace||Gt.minSpace).equals(t.minSpace||Gt.minSpace)||e.maxHorizontalSpace!==t.maxHorizontalSpace||e.loaderHeight!==t.loaderHeight||e.direction!==t.direction}update(e){let{minItemSize:t=Gt.minItemSize,maxItemSize:n=Gt.maxItemSize,preserveAspectRatio:i=Gt.preserveAspectRatio,minSpace:s=Gt.minSpace,maxHorizontalSpace:r=Gt.maxSpace,maxColumns:l=Gt.maxColumns,dropIndicatorThickness:o=Gt.dropIndicatorThickness,loaderHeight:a=Gt.loaderHeight,direction:d="ltr"}=e.layoutOptions||{};this.dropIndicatorThickness=o,this.direction=d;let c=this.virtualizer.size.width,u=Math.min(n.width,c),p=Number.isFinite(n.height)?n.height:Math.floor(t.height/t.width*u),m=Math.floor(c/(t.width+s.width)),h=Math.max(1,Math.min(l,m));this.numColumns=h;let g=c-s.width*Math.max(0,h),f=Math.floor(g/h);f=Math.max(t.width,Math.min(u,f));let b=(f-t.width)/Math.max(1,u-t.width),y=t.height+Math.floor((p-t.height)*b);y=Math.max(t.height,Math.min(p,y));let v=Math.min(Math.max(r,s.width),Math.floor((c-h*f)/(h+1)));this.gap=new Ot(v,s.height),this.margin=Math.floor((c-h*f-v*(h+1))/2);let x=this.virtualizer.collection,j=x.size,k=x.getLastKey();for(let E=0;E<2&&null!=k;E++){let e=x.getItem(k);if("skeleton"===e?.type){j++;break}k=x.getKeyBefore(k)}let w=Math.ceil(j/h),S=x[Symbol.iterator](),N=w>0?s.height:0,C=new Map,M=null,_=0;for(let E=0;E<w;E++){let t=0,n=[];for(let s=0;s<h;s++){let r=M||S.next().value;if(!r)break;if("loader"===r.type)continue;"skeleton"===r.type&&(M=r);let l=M?`${M.key}-${_++}`:r.key,o=this.layoutInfos.get(l),a=r;M&&(a=o&&o.content.key===l?o.content:{...M,key:l});let d=v+s*(f+v)+this.margin,c=y,u=!i;o&&u&&(c=o.rect.height,u=e.layoutOptionsChanged||e.sizeChanged||o.estimatedSize||o.content!==a);let p=new Lt(d,N,f,c),m=new Pt(r.type,l,p);m.estimatedSize=u,m.allowOverflow=!0,m.content=a,C.set(l,m),n.push(m),t=Math.max(t,m.rect.height)}for(let e of n)e.rect.height=t;N+=t+s.height,M&&E===w-1&&N<this.virtualizer.size.height&&w++}let I=x.getItem(x.getLastKey());if("loader"===I?.type){(_>0||!I.props.isLoading)&&(a=0);let e=new Lt(v,N,c-2*v,a),t=new Pt("loader",I.key,e);C.set(I.key,t),N=t.rect.maxY}this.layoutInfos=C,this.contentSize=new Ot(this.virtualizer.size.width,N)}getLayoutInfo(e){return this.layoutInfos.get(e)||null}getContentSize(){return this.contentSize}getVisibleLayoutInfos(e){let t=[];for(let n of this.layoutInfos.values())(n.rect.intersects(e)||this.virtualizer.isPersistedKey(n.key)||"loader"===n.tLine truncated
@@ -1 +0,0 @@
import{r as e,j as s}from"./vendor-react-64fcanlc.js";import{u as o,b5 as i,cr as c,ch as a,B as r}from"./index-HxEUeoab.js";import{F as n,G as t,L as l}from"./logs-C4GIy4tX.js";function d({model:d}){const h=o(),m=e.useId(),p=n(),[u,b]=e.useState(t(d.choices,p.choice)?.id??""),[j,x]=e.useState(p.cold),[f,g]=e.useState(p.leaves),v=d.busy||!d.choices.some(e=>e.id===u);return s.jsx(i,{narrow:!0,isOpen:!0,onOpenChange:e=>!e&&d.close(),title:h("probe.title"),description:d.name,footer:()=>s.jsxs(s.Fragment,{children:[s.jsx(r,{onPress:d.close,children:h("ui.cancel")}),s.jsx(r,{accent:!0,type:"submit",form:m,isDisabled:v,children:h("probe.submit")})]}),children:s.jsxs(c,{id:m,onSubmit:e=>{e.preventDefault(),v||d.submit({...p,choice:u,cold:j,leaves:f})},children:[s.jsx(l,{label:h("probe.kind"),value:u,onChange:b,items:d.choices.map(e=>({id:e.id,label:h(e.label)}))}),s.jsx(a,{isSelected:j,onChange:x,children:h("probe.cold")}),d.group&&s.jsx(a,{isSelected:f,onChange:g,children:h("probe.leaves")})]})})}export{d as P};
@@ -1,2 +0,0 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Trace-BZtIse5U.js","./vendor-react-64fcanlc.js","./_commonjsHelpers-CXUWDbkB.js","./index-HxEUeoab.js","./index-CcbWXWDN.css","./flows-dBNkBg79.js","./logs-C4GIy4tX.js","./Select-D7_6MaHd.js","./ItemText-DOD_75iR.js","./AppearanceControls-sRy1p156.js","./nodes-6sIn2I0s.js","./probe-Bj7oT3ox.js","./useQuickRule-DUEi6geL.js","./DaeCode-DEjXqvav.js","./daeTokens-BVtuNnWZ.js","./AddCircle-C6Jc7GCc.js","./SearchSelect-BcScGUbQ.js","./SearchList-LjCruZYP.js","./Virtualizer-DMIKG2CD.js","./Toolbar-BTFtduwD.js","./rule-Bl9YOsFn.js","./activity-yZTrGy-J.js","./activity-Db7VRWAG.css","./NumberField-q4-QmTAT.js","./Table-yWn0d3vL.js","./Checkbox-CJt7u9-e.js","./Tabs-DT6MQhIo.js","./ConditionRow-B8Otz3rt.js","./Coverage-8qg_JeNJ.js","./labels-D8xxfRTQ.js","./nav-DG4JD5-H.js","./recorder-BHyqDNp5.js","./geodataUpdate-D9CXpIul.js","./LinkOut-D-cvJjm2.js","./impact-B8feJDtJ.css"])))=>i.map(i=>d[i]);
import{cA as e,cB as n,cC as s,cD as i,cE as l,cF as a,cG as r,bp as t,cH as o,cI as d,cJ as u,cK as c,cL as p,cM as m,cN as f,cO as b,cP as h,cQ as g,cR as v,cS as x,cT as y,cU as k,cV as w,cW as j,cX as S,cY as _,cZ as C,c_ as N,c$ as D,d0 as M,d1 as P,d2 as R,d3 as I,aD as H,d4 as q,d5 as O,aA as E,b7 as L,c2 as A,c4 as F,al as T,Y as V,U as W,H as B,a8 as $,ak as U,a6 as Q,o as G,h as J,r as K,d6 as X,a1 as Y,w as Z,u as z,aK as ee,cw as ne,A as se,l as ie,q as le,bT as ae,aP as re,aQ as te,m as oe,x as de,aO as ue,aM as ce,ab as pe,C as me,bk as fe,bF as be,ch as he,B as ge,aL as ve,cr as xe,cq as ye,p as ke,d7 as we,bG as je,d8 as Se,E as _e,cy as Ce,ax as Ne,b8 as De,aE as Me,cg as Pe,av as Re,T as Ie,c3 as He,c6 as qe,L as Oe,aG as Ee,d9 as Le,_ as Ae}from"./index-HxEUeoab.js";import{r as Fe,$ as Te,j as Ve}from"./vendor-react-64fcanlc.js";import{_ as We,$ as Be,a0 as $e,a1 as Ue,a2 as Qe,a3 as Ge,a4 as Je,a5 as Ke,a6 as Xe,a7 as Ye,a8 as Ze,a9 as ze,aa as en,ab as nn,ac as sn,s as ln}from"./activity-yZTrGy-J.js";import{T as an}from"./Tabs-DT6MQhIo.js";import{D as rn}from"./DaeCode-DEjXqvav.js";import{L as tn}from"./AppearanceControls-sRy1p156.js";import{a as on,c as dn,u as un,y as cn,e as pn,w as mn,h as fn,D as bn,L as hn,S as gn}from"./logs-C4GIy4tX.js";import{T as vn}from"./Toolbar-BTFtduwD.js";import{D as xn}from"./Table-yWn0d3vL.js";import{C as yn,a as kn,E as wn}from"./ConditionRow-B8Otz3rt.js";import{c as jn,C as Sn}from"./Coverage-8qg_JeNJ.js";import{d as _n,b as Cn,c as Nn,e as Dn,B as Mn}from"./rule-Bl9YOsFn.js";import{u as Pn,a as Rn,c as In}from"./flows-dBNkBg79.js";import{W as Hn,s as qn,u as On,b as En,X as Ln,Y as An,f as Fn,c as Tn,Z as Vn,j as Wn,e as Bn,_ as $n,$ as Un,a0 as Qn,a1 as Gn,a2 as Jn,a3 as Kn,r as Xn,a4 as Yn,a5 as Zn,a6 as zn,a7 as es,d as ns,D as ss,a8 as is}from"./nodes-6sIn2I0s.js";import{w as ls}from"./labels-D8xxfRTQ.js";import{r as as}from"./nav-DG4JD5-H.js";import{r as rs}from"./recorder-BHyqDNp5.js";import{g as ts,a as os,b as ds}from"./geodataUpdate-D9CXpIul.js";/* empty css */import{L as us}from"./LinkOut-D-cvJjm2.js";import{S as cs}from"./SearchSelect-BcScGUbQ.js";const ps=new WeakMap;let ms=Math.round(1e10*Math.random()),fs=0;const bs=Fe.createContext(null),hs=Fe.createContext(null),gs=Fe.createContext(null),vs=Fe.forwardRef(function(e,n){[e,n]=g(e,n,bs);let{validationBehavior:l}=v(x)||{},a=e.validationBehavior??l??"native",r=function(e){let n=Fe.useMemo(()=>e.name||`radio-group-${ms}-${++fs}`,[e.name]),[s,i]=b(e.value,e.defaultValue??null,e.onChange),[l]=Fe.useState(s),[a,r]=Fe.useState(null),t=h({...e,value:s}),o=t.displayValidation.isInvalid;return{...t,name:n,selectedValue:s,defaultSelectedValue:void 0!==e.value?l:e.defaultValue??null,setSelectedValue:n=>{e.isReadOnly||e.isDisabled||(i(n),t.commitValidation())},lastFocusedValue:a,setLastFocusedValue:r,isDisabled:e.isDisabled||!1,isReadOnly:e.isReadOnly||!1,isRequired:e.isRequired||!1,validationState:e.validationState||(o?"invalid":null),isInvalid:o}}({...e,validationBehavior:a}),[D,M]=y(!e["aria-label"]&&!e["aria-labelledby"]),{radioGroupProps:P,labelProps:R,descriptionProps:I,errorMessageProps:H,...q}=function(e,n){let{name:l,form:a,isReadOnly:r,isRequired:b,isDisabled:h,orientation:g="vertical",validationBehavior:v="aria"}=e,{direction:x}=t(),{isInvalid:y,validationErrors:k,validationDetails:w}=n.displayValidation,{labelProps:j,fieldProps:S,descriptionProps:_,errorMessageProps:C}=o({...e,labelElementType:"span",isInvalid:n.isInvalid,errorMessage:e.errorMessage||k}),N=i(e,{labelable:!0}),{focusWithinProps:D}=d({onBlurWithin(s){e.onBlur?.(s),n.selectedValue||n.setLastFocusedValue(null)},onFocusWithin:e.onFocus,onFocusWithinChange:e.onFocusChange});function M(e,s){let i,l=p(s.currentTarget,{from:f(s),accept:e=>e instanceof m(e).HTMLInputElement&&"radio"===e.type});return"next"===e?(i=l.nextNode(),i||(l.currentNode=s.currentTarget,i=l.firstChild())):(i=l.previousNode(),i||(l.currentNode=s.currentTarget,i=l.lastChild())),!!i&&(i.focus(),n.setSelectedValue(i.value),!0)}let{keyboardProps:P}=u({shortcuts:{ArrowRight:e=>M("rtl"===x&&"vertical"!==g?"prev":"next",e),ArrowLeft:e=>M("rtl"===x&&"vertical"!==g?"next":"prev",e),ArrowDown:e=>M("next",e),ArrowUp:e=>M("prev",e)},allowRepeats:!0}),R=c(l);return ps.set(n,{name:R,form:a,descriptionId:_.id,errorMessageId:C.id,validationBehavior:v}),{radioGroupProps:s(N,{role:"radiogroup",...P,"aria-invalid":n.isInvalid||void 0,"aria-errormessage":e["aria-errormessage"],"aria-readonly":r||void 0,"aria-required":b||void 0,"aria-disabled":h||void 0,"aria-orientation":g,...S,...D}),labelProps:j,descriptionProps:_,errorMessageProps:C,isInvalid:y,validationErrors:k,validationDetails:w}}({...e,label:M,validationBehavior:a},r),O=k({...e,values:{orientation:e.orientation||"vertical",isDisabled:r.isDisabled,isReadOnly:r.isReadOnly,isRequired:r.isRequired,isInvalid:r.isInvalid,state:r},defaultClassName:"react-aria-RadioGroup"}),E=i(e,{global:!0});return Te.createElemeLine truncated
@@ -1 +0,0 @@
import{r as e,j as t}from"./vendor-react-64fcanlc.js";import{r as s,f1 as a,w as i,f2 as r,K as n,bY as o,ak as l,U as d,Y as u,al as p,f3 as c,f4 as m,f5 as f,dH as h,u as g,l as y,q as b,x as j,f6 as v,b5 as K,eY as x,bG as w,B as M,aE as $,E as k,bE as q,af as L,dj as S}from"./index-HxEUeoab.js";import{$ as _,d as C,a as N}from"./Select-D7_6MaHd.js";import{b as E}from"./ItemText-DOD_75iR.js";import{i as I,h as Y,c as R,g as T,u as G,e as O}from"./logs-C4GIy4tX.js";import{u as A,c as H}from"./flows-dBNkBg79.js";import{Y as P}from"./nodes-6sIn2I0s.js";import{c as Q,o as U,p as V,q as W}from"./nav-BMNMQSWb.js";import{d as z}from"./nav-CBqYxt5v.js";import{r as B,a as F}from"./nav-DG4JD5-H.js";import{f as D}from"./nav-CKRufMnz.js";import{f as J,r as X,g as Z,h as ee}from"./nav-D8kaolOs.js";import{aT as te,a1 as se,aU as ae}from"./activity-yZTrGy-J.js";import{c as ie}from"./nav-BO8viH9G.js";import{n as re,a as ne}from"./nav-Bkujhswg.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./AppearanceControls-sRy1p156.js";const oe=e=>s(e,"groups",{whileLoading:!1})&&!0===e?.config.writable?[{id:"policies:new",titleKey:"group.newGroup",parentKey:"nav.policies",route:"policies",params:{new:"1"},aliases:["group editor"]}]:[],le=e=>e.trim().toLowerCase().replace(/\s+/g," "),de=(e,t,s,a,i,r="",n)=>({hit:{id:t,label:s,description:a,route:i,query:r,...n&&{open:n}},keys:[...new Set(e.flatMap(e=>null==e?[]:[le(e)]))]}),ue=(e,t,s,a,i)=>{const{route:r,query:n}=h(i);return de(e,t,s,a,r,n)};function pe(e,t,s){const a=[{title:e(t),parent:s&&e(s)}];for(const i of c)m(i.id)&&a.push({title:f(i.id,t),parent:s&&f(i.id,s)});return a.flatMap(({title:e,parent:t})=>t?[e,t+" "+e]:[e])}function ce(e,t){let s=3;for(const a of e){if(a===t)return 0;a.startsWith(t)?s=1:3===s&&a.includes(t)&&(s=2)}return s}function me(t,m){const f=g(),h=y(),[K,x]=e.useState(""),w=b(),M=w.data?.resources,$=I(void 0,s(M,"connections",{whileLoading:!1})),k=Y(s(M,"nodes",{whileLoading:!1})),q=R(s(M,"groups",{whileLoading:!1})),L=T(s(M,"providers",{whileLoading:!1})),S=G(s(M,"config",{whileLoading:!1})),_=A(s(M,"rules",{whileLoading:!1})),C=H(s(M,"dns_rules",{whileLoading:!1})),N=[w,$,k,q,L,S,_,C],E=O(j().data),me=!!E.globalSettings,[fe,he]=e.useState(0);e.useEffect(()=>{let e=!0;for(const t of c)v(t.id).then(()=>e&&he(e=>e+1),()=>{});return()=>{e=!1}},[]);const ge=e.useMemo(()=>function(e,t,s){const n=t=>r(t,e),o=e?.resources,l=[...ie().map(e=>({path:"connections",params:{tab:e.id},titleKey:e.titleKey})),...re(o).map(e=>({path:"nodes",params:{tab:e.id},titleKey:e.titleKey})),...D(o).map(e=>({path:"flows",params:{tab:e.id},titleKey:e.titleKey})),...B(o).map(e=>({path:"rules",params:{tab:e.id},titleKey:e.titleKey})),...z(o).map(e=>({path:"dns",params:{tab:e.id},titleKey:e.titleKey})),...Q(s,e).map(e=>({path:"config",params:{tab:e.id},titleKey:e.titleKey,aliases:e.aliases})),...J(o).map(e=>({path:"settings",params:{card:e.id},titleKey:e.titleKey,aliases:e.aliases}))],d=e=>a.find(t=>t.path===e).nav.titleKey;return[...a.filter(e=>e.nav&&n(e.path)).map(e=>de(pe(t,e.nav.titleKey),`page:${e.path}?`,t(e.nav.titleKey),void 0,e.path)),...l.filter(e=>n(e.path)).map(e=>{const s=i("",e.params);return de([...pe(t,e.titleKey,d(e.path)),...e.aliases??[]],`page:${e.path}?${s}`,t(e.titleKey),t(d(e.path)),e.path,s)})]}(w.data,f,me),[w.data,f,me,fe]),ye=e.useMemo(()=>function(e,t){const s=e?.resources,a=new Map(J(s).map(e=>[e.id,e])),r=new Set(s?.runtime_settings.available?s.runtime_settings.fields??[]:[]),n=Object.entries(X).filter(([e])=>r.has(e)).map(([e,t])=>({id:e,labelKey:t,card:"runtime",aliases:void 0})),o=Z(s);return[...ee.filter(e=>!e.sources||o),...n].flatMap(e=>{const s=a.get(e.card);return s?[de([...pe(t,e.labelKey),...e.aliases??[]],`setting:${e.id}`,t(e.labelKey),t(s.titleKey),"settings",i("",{card:e.card,field:e.id}))]:[]})}(w.data,f),[w.data,f,fe]),be=e.useMemo(()=>function(e,t,a){return e&&s(t?.resources,"config",{whileLoading:!1})?e.fields.map(e=>de([...pe(a,e.label),e.key],`global:${e.key}`,a(e.label),a(U[e.group]),"config",i("",{tab:"global",field:e.key}))):[]}(E.globalSettings,w.data,f),[E.globalSettings,w.data,f,fe]),je=e.useMemo(()=>function(e,t){const s=e?.resources;return[...F(s),...oe(s),...ne(s),...V(e),...te].filter(t=>null===t.route||r(t.route,e)).map(e=>de([...pe(t,e.titleKey,e.parentKey),...(e.aliasKeys??[]).flatMap(e=>pe(t,e)),...e.aliases??[]],`feature:${e.id}`,t(e.titleKey),e.parentKey&&t(e.parentKey),e.route,i("",e.params??{}),e.open))}(w.data,f),[w.data,f,fe]),ve=e.useMemo(()=>function(e,t,s){return W(e,t,s).map(e=>ue([e.kind,e.summary],`module:${e.id}`,e.kind,e.range,e.href))}(S.data,E,f),[S.data,E,f]),Ke=e.useMemo(()=>function(e,t){return n(e).map(e=>de([e.domain,e.dst,e.src],`connection:${e.id}`,e.domain||e.dst||e.src||e.id,o(e,t),"connections",i("",{id:e.id})))}($.data,f),[$.data,f]),xe=e.useMemo(()=>function(e,t,s){const a=t?.providers??[];return(e??[]).map(e=>ue([e.name],`node:${e.id}`,e.name,l(s,e.group_ids)||void 0,se(e,a,!0)))}(k.data,L.dataLine truncated
@@ -1 +0,0 @@
import{r as e,j as a}from"./vendor-react-64fcanlc.js";import{ek as t,eX as r,eY as s,bG as l}from"./index-HxEUeoab.js";import{d as n,e as i}from"./Virtualizer-DMIKG2CD.js";function o(a){let r=t({usage:"search",...a}),s=e.useCallback((e,a)=>0===a.length||(e=e.normalize("NFC"),a=a.normalize("NFC"),0===r.compare(e.slice(0,a.length),a)),[r]),l=e.useCallback((e,a)=>0===a.length||(e=e.normalize("NFC"),a=a.normalize("NFC"),0===r.compare(e.slice(-a.length),a)),[r]),n=e.useCallback((e,a)=>{if(0===a.length)return!0;e=e.normalize("NFC");let t=0,s=(a=a.normalize("NFC")).length;for(;t+s<=e.length;t++){let l=e.slice(t,t+s);if(0===r.compare(a,l))return!0}return!1},[r]);return e.useMemo(()=>({startsWith:s,endsWith:l,contains:n}),[s,l,n])}function c({label:e,children:t}){const{contains:c}=o({sensitivity:"base"});return a.jsx(r,{value:null,children:a.jsxs(s,{filter:c,children:[a.jsx(l,{search:!0,label:e,autoFocus:!0,className:"rp-menu-search"}),a.jsx(n,{layout:i,layoutOptions:{estimatedRowHeight:32,estimatedHeadingHeight:26},children:t})]})})}const u=Object.freeze(Object.defineProperty({__proto__:null,SearchList:c},Symbol.toStringTag,{value:"Module"}));export{o as $,c as S,u as a};
@@ -1 +0,0 @@
import{r as s,j as e}from"./vendor-react-64fcanlc.js";import{cm as a,d4 as l,cl as r,bw as i,d5 as c,co as t,dj as d,b7 as n}from"./index-HxEUeoab.js";import{b as o,c as m,$ as p,d as j,a as x}from"./Select-D7_6MaHd.js";import{I as h,a as b,b as f}from"./ItemText-DOD_75iR.js";import{S as u}from"./SearchList-LjCruZYP.js";const N=s=>e.jsxs(x,{id:s.id,className:"rp-item",textValue:s.keywords?`${s.label} ${s.keywords}`:s.label,children:[e.jsx(b,{}),e.jsx(f,{i:s,children:s.desc&&e.jsx(c,{slot:"description",className:n("desc",s.tone),children:s.desc})})]},s.id);function v({label:x,searchLabel:b,sections:f,value:v,onChange:S,isDisabled:g,description:y,side:k,size:w}){const R=s.useRef(null),$=s.useRef(null),z=a(w),C=f.flatMap(s=>s.items).find(s=>s.id===v);return e.jsxs(o,{className:n("rp-picker",k?"rp-cluster":"rp-field"),selectedKey:v,onSelectionChange:s=>{null!=s&&S(String(s))},isDisabled:g,children:[e.jsxs("div",{ref:R,className:k?"rp-cluster":"rp-field",children:[e.jsx(l,{className:k?"rp-label":"lbl",children:x}),e.jsxs(r,{ref:$,className:"rp-selectbtn","data-size":z,children:[e.jsx(m,{children:()=>C?e.jsx(h,{i:C}):v}),e.jsx(i,{})]})]}),y&&e.jsx(c,{slot:"description",className:"rp-label",children:y}),e.jsx(t,{className:"rp-popover rp-search-popover",placement:"bottom start",triggerRef:k?$:R,children:e.jsx(u,{label:b,children:e.jsx(p,{className:"rp-menu-scroll rp-overlay-scroll",children:f.map(s=>s.title?e.jsxs(j,{id:s.id,children:[e.jsx(d,{className:"rp-sec-h",children:s.title}),s.items.map(N)]},s.id):s.items.map(N))})})})]})}export{v as S};
@@ -1 +0,0 @@
import{bp as e,cD as t,fG as l,cI as o,cK as a,du as s,cC as i,fH as r,fI as n,dY as c,eB as d,d3 as u,eu as p,dZ as g,ek as f,eI as y,fJ as v,cJ as m,fK as b,cH as h,el as D,dx as P,eA as M,cE as S,cF as K,cN as E,em as k,eD as C,eF as F,eE as B,cQ as x,e3 as I,e0 as R,eL as w,fL as A,e1 as V,fM as T,c$ as O,fN as U,cU as H,cV as L,cW as z,cY as N,e2 as q,eO as W,eH as _,e6 as j,d2 as $,eK as Z,fO as G,fP as J,c_ as Q,cT as Y,fQ as X,eT as ee,eU as te,ea as le,fR as oe,cO as ae,cP as se,e4 as ie,cR as re,en as ne,cS as ce,d1 as de,cX as ue,eN as pe,fS as ge,fT as fe,cZ as ye}from"./index-HxEUeoab.js";import{r as ve,$ as me}from"./vendor-react-64fcanlc.js";const be=new WeakMap;function he(e,l,o){let{key:a}=e,s=be.get(l),f=e.isDisabled??l.selectionManager.isDisabled(a),y=e.isSelected??l.selectionManager.isSelected(a),v=e.shouldSelectOnPressUp??s?.shouldSelectOnPressUp,m=e.shouldFocusOnHover??s?.shouldFocusOnHover,b=e.shouldUseVirtualFocus??s?.shouldUseVirtualFocus,h=e.isVirtualized??s?.isVirtualized,D=r(),P=r(),M={role:"option","aria-disabled":f||void 0,"aria-selected":"none"!==l.selectionManager.selectionMode?y:void 0,"aria-label":e["aria-label"],"aria-labelledby":D,"aria-describedby":P},S=l.collection.getItem(a);if(h){let e=Number(S?.index);M["aria-posinset"]=Number.isNaN(e)?void 0:e+1,M["aria-setsize"]=n(l.collection)}let K=s?.onAction?()=>s?.onAction?.(a):void 0,E=function(e,t){let l=be.get(e);if(!l)throw new Error("Unknown list");return`${l.id}-option-${o=t,"string"==typeof o?o.replace(/\s*/g,""):""+o}`;var o}(l,a),{itemProps:k,isPressed:C,isFocused:F,hasAction:B,allowsSelection:x}=c({selectionManager:l.selectionManager,key:a,ref:o,shouldSelectOnPressUp:v,allowsDifferentPressOrigin:v&&m,isVirtualized:h,shouldUseVirtualFocus:b,isDisabled:f,onAction:K||S?.props?.onAction?d(S?.props?.onAction,K):void 0,linkBehavior:s?.linkBehavior,UNSTABLE_itemBehavior:s?.UNSTABLE_itemBehavior,id:E}),{hoverProps:I}=u({isDisabled:f||!m,onHoverStart(){p()||(l.selectionManager.setFocused(!0),l.selectionManager.setFocusedKey(a))}}),R=t(S?.props);delete R.id;let w=g(S?.props);return{optionProps:{...M,...i(R,k,I,w),id:E},labelProps:{id:D},descriptionProps:{id:P},isFocused:F,isFocusVisible:F&&l.selectionManager.isFocused&&p(),isSelected:y,isDisabled:f,isPressed:C,allowsSelection:x,hasAction:B}}const De=new WeakMap;function Pe(e){let{state:t,triggerRef:l,label:o,name:a,form:s,isDisabled:i}=e,r=ve.useRef(null),n=ve.useRef(null),{containerProps:c,selectProps:d}=function(e,t,l){let o=De.get(t)||{},{autoComplete:a,name:s=o.name,form:i=o.form,isDisabled:r=o.isDisabled}=e,{validationBehavior:n,isRequired:c}=o,{visuallyHiddenProps:d}=M({style:{position:"fixed",top:0,left:0}});S(e.selectRef,t.defaultValue,t.setValue),K({validationBehavior:n,focus:()=>l.current?.focus()},t,e.selectRef);let u=t.setValue,p=ve.useCallback(e=>{let t=E(e);t.multiple?u(Array.from(t.selectedOptions,e=>e.value)):u(e.currentTarget.value)},[u]);return{containerProps:{...d,"aria-hidden":!0,"data-react-aria-prevent-focus":!0,"data-a11y-ignore":"aria-hidden-focus"},inputProps:{style:{display:"none"}},selectProps:{tabIndex:-1,autoComplete:a,disabled:r,multiple:"multiple"===t.selectionManager.selectionMode,required:"native"===n&&c,name:s,form:i,value:t.value??"",onChange:p,onInput:p}}}({...e,selectRef:t.collection.size<=300?r:n},t,l),u=Array.isArray(t.value)?t.value:[t.value];if(t.collection.size<=300)return me.createElement("div",{...c,"data-testid":"hidden-select-container"},me.createElement("label",null,o,me.createElement("select",{...d,ref:r},me.createElement("option",{value:"",label:" "}," "),[...t.collection.getKeys()].map(e=>{let l=t.collection.getItem(e);if(l&&"item"===l.type)return me.createElement("option",{key:l.key,value:l.key},l.textValue)}),0===t.collection.size&&a&&u.map((e,t)=>me.createElement("option",{key:t,value:e??""})))));if(a){let e=De.get(t)||{},{validationBehavior:l}=e;0===u.length&&(u=[null]);let o=u.map((e,t)=>{let o={type:"hidden",autoComplete:d.autoComplete,name:a,form:s,disabled:i,value:e??""};return"native"===l?me.createElement("input",{key:t,...o,ref:0===t?n:null,style:{display:"none"},type:"text",required:0===t&&d.required,onChange:()=>{}}):me.createElement("input",{key:t,...o,ref:0===t?n:null})});return me.createElement(me.Fragment,null,o)}return null}var Me;Me={"ar-AE":k,"bg-BG":k,"cs-CZ":k,"da-DK":k,"de-DE":k,"el-GR":k,"en-US":{selectPlaceholder:"Select an item",tableResizer:"Resizer",dropzoneLabel:"DropZone",colorSwatchPicker:"Color swatches"},"es-ES":k,"et-EE":k,"fi-FI":k,"fr-FR":k,"he-IL":k,"hr-HR":k,"hu-HU":k,"it-IT":k,"ja-JP":k,"ko-KR":k,"lt-LT":k,"lv-LV":k,"nb-NO":k,"nl-NL":k,"pl-PL":k,"pt-BR":k,"pt-PT":k,"ro-RO":k,"ru-RU":k,"sk-SK":k,"sl-SI":k,"sr-SP":k,"sv-SE":k,"tr-TR":k,"uk-UA":k,"zh-CN":{colorSwatchPicker:"颜色色板",dropzoneLabel:"放置区域",selectPlaceholder:"选择一个项目",tableResizer:"尺寸调整器"},"zh-TW":{colorSwatchPicker:"色票",dropzoneLabel:"放置區",selectPlaceholder:"選取項目",tableResizeLine truncated
@@ -1 +0,0 @@
.rp-swatch{border:1px solid var(--rp-line);border-radius:var(--rp-r-md);flex:none;width:120px;height:72px;display:block;position:relative;overflow:hidden}.rp-swatch>span{clip-path:polygon(0 0,100% 0,0 100%);background:var(--sw-bg);position:absolute;inset:0}.rp-swatch>span[data-dark]{transform:rotate(180deg)}.rp-swatch>span:before,.rp-swatch>span:after,.rp-swatch i,.rp-swatch i:after{content:"";position:absolute}.rp-swatch>span:before{background:color-mix(in srgb, var(--sw-bg), var(--sw-text) 10%);inset:0 85% 0 0}.rp-swatch i{background:linear-gradient(var(--sw-text) 0 0) 14% 50% / 50% 18% no-repeat var(--sw-surface);border-radius:12%/20%;inset:11% 45% 58% 20%}.rp-swatch i:after{background:var(--sw-positive);border-radius:50%;inset:36% 10% 36% 76%}.rp-swatch>span:after{border-radius:var(--rp-r-pill);background:var(--sw-accent);inset:50% 63% 41% 20%}.rp-swatch[data-look]>span{--sw-wall:radial-gradient(circle at 20% 25%, #007aff99, transparent 60%), radial-gradient(circle at 85% 20%, #ff2d558c, transparent 55%), radial-gradient(circle at 70% 95%, #ff950099, transparent 60%), linear-gradient(160deg, #e3eaf8, #f8eee2);background:var(--sw-wall)}.rp-swatch[data-look]>span[data-dark]{--sw-wall:radial-gradient(circle at 20% 25%, #0a84ff80, transparent 60%), radial-gradient(circle at 85% 20%, #ff375f66, transparent 55%), radial-gradient(circle at 70% 95%, #ff9f0a66, transparent 60%), linear-gradient(160deg, #070a17, #05131a)}.rp-swatch[data-look]>span:before{background:var(--sw-surface)}.rp-swatch[data-look=lens] i,.rp-swatch[data-look=lens]>span:after{--sw-rim:#ffffffe6;box-shadow:inset 1px 1px 0 var(--sw-rim), inset -1px -1px 0 color-mix(in srgb, var(--sw-rim), transparent 45%)}.rp-select-boxes{gap:var(--rp-space-4);display:grid}.rp-select-grid{gap:var(--rp-space-4);grid-template-columns:repeat(auto-fill,170px);display:grid}.rp-select-grid>section{display:contents}.rp-select-box-head{margin-top:var(--rp-space-1);grid-column:1/-1;font-weight:700}.rp-select-box{align-items:center;gap:var(--rp-space-1);min-width:0;padding:var(--rp-space-6) var(--rp-space-3) var(--rp-space-3);border-radius:var(--rp-r-lg);background:var(--rp-surface);box-shadow:var(--rp-shadow);text-align:center;cursor:default;transition:box-shadow var(--rp-duration) var(--rp-ease), border-color var(--rp-duration) var(--rp-ease);border:2px solid #0000;flex-direction:column;display:flex;position:relative}.rp-select-box>.rp-swatch{margin-bottom:var(--rp-space-1)}.rp-select-box:is([data-hovered],[data-selected]){box-shadow:var(--rp-elevated)}.rp-select-box[data-selected]{border-color:var(--rp-accent)}.rp-select-box-check{width:var(--rp-space-4);height:var(--rp-space-4);color:var(--rp-accent);visibility:hidden;position:absolute;inset-block-start:var(--rp-space-1);inset-inline-end:var(--rp-space-1)}.rp-select-box[data-selected] .rp-select-box-check{visibility:visible}@media (width<=599.98px){.rp-select-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@@ -1 +0,0 @@
import{r as e,$ as t,j as s,a}from"./vendor-react-64fcanlc.js";import{du as n,bp as i,dv as r,dw as l,dx as o,cC as d,dy as c,cJ as u,cB as g,cE as p,cN as m,dz as f,cO as h,cQ as b,dA as v,cT as x,cU as j,cD as y,cW as w,cX as k,cV as N,d3 as C,cR as S,d2 as P,aD as T,c$ as _,dB as D,dC as R,dj as I,d5 as E,B as F,cm as M,d4 as V,u as L,bk as H,ch as U,dD as O,a0 as A,ak as q,h as B,m as z,Y as K,aM as $,dE as W,dF as G,dG as Y,cw as X,de as J,bD as Q,bz as Z,A as ee,bB as te,dH as se,bK as ae,dI as ne,bC as ie,dJ as re,s as le,dK as oe,q as de,x as ce,ap as ue,dL as ge,dM as pe,dN as me,dO as fe,dP as he,c9 as be,al as ve,l as xe,bT as je,r as ye,bI as we,U as ke,bP as Ne,aK as Ce,C as Se,E as Pe,ae as Te,S as _e,a as De,b as Re,bF as Ie,p as Ee,cg as Fe,df as Me,aO as Ve,aZ as Le,dQ as He,dR as Ue,aA as Oe,T as Ae,aL as qe,bG as Be,bw as ze,dS as Ke,dT as $e,dU as We,dV as Ge,w as Ye}from"./index-HxEUeoab.js";import{L as Xe}from"./AppearanceControls-sRy1p156.js";import{$ as Je,e as Qe,L as Ze,y as et,c as tt,D as st,K as at,F as nt,T as it,U as rt,G as lt}from"./logs-C4GIy4tX.js";import{T as ot}from"./Tabs-DT6MQhIo.js";import{T as dt}from"./Toolbar-BTFtduwD.js";import{$ as ct,d as ut,a as gt}from"./Select-D7_6MaHd.js";import{C as pt}from"./ItemText-DOD_75iR.js";import{u as mt,s as ft,M as ht,w as bt,D as vt}from"./wallpaper-CEC7gitM.js";import{d as xt,c as jt}from"./auth-CSMbhh2E.js";import{g as yt,r as wt,c as kt,s as Nt,a as Ct,b as St,d as Pt,e as Tt}from"./nav-D8kaolOs.js";import{N as _t,t as Dt,n as Rt}from"./NumberField-q4-QmTAT.js";import{aQ as It,aR as Et,aS as Ft}from"./activity-yZTrGy-J.js";import{D as Mt}from"./Table-yWn0d3vL.js";import{T as Vt}from"./TimeCell-BIqfL3y_.js";import{a as Lt}from"./geodataUpdate-D9CXpIul.js";import{g as Ht,v as Ut}from"./geodata-X0pHz03D.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./Checkbox-CJt7u9-e.js";import"./Virtualizer-DMIKG2CD.js";const Ot=new WeakMap;function At(e,t){let s=Ot.get(e);if(!s)throw new Error("Unknown slider state");return`${s.id}-${t}`}const qt=0,Bt=100,zt=1;function Kt(t){const{isDisabled:s=!1,minValue:a=qt,maxValue:n=Bt,numberFormatter:i,step:r=zt,orientation:o="horizontal"}=t;let d=e.useMemo(()=>{let e=(n-a)/10;return e=f(e,0,e+r,r),Math.max(e,r)},[r,n,a]),c=e.useCallback(e=>e?.map((t,s)=>{let i=0===s?a:e[s-1],l=s===e.length-1?n:e[s+1];return f(t,i,l,r)}),[a,n,r]),u=e.useMemo(()=>c(Wt(t.value)),[t.value,c]),g=e.useMemo(()=>c(Wt(t.defaultValue)??[a]),[t.defaultValue,a,c]),p=Gt(t.value,t.defaultValue,t.onChange),m=Gt(t.value,t.defaultValue,t.onChangeEnd);const[b,v]=h(u,g,p);let[x]=e.useState(b);const[j,y]=e.useState(new Array(b.length).fill(!1)),w=e.useRef(new Array(b.length).fill(!0)),[k,N]=e.useState(void 0),C=e.useRef(b),S=e.useRef(j);function P(e){return(e-a)/(n-a)}function T(e){return 0===e?a:b[e-1]}function _(e){return e===b.length-1?n:b[e+1]}function D(e){return w.current[e]}function R(e,t){if(s||!D(e))return;const a=T(e),n=_(e);t=f(t,a,n,r);let i=$t(C.current,e,t);var l;l=i,C.current=l,v(l)}let I=e.useRef(null);function E(e=b){switch("number"==typeof e&&(e=[e]),e.length){case 0:return"";case 1:return i.format(e[0]);case 2:return i.formatRange(e[0],e[1]);default:{let t=e.map(e=>i.format(e)),s=I.current;return s&&s.resolvedOptions().locale===i.resolvedOptions().locale||(s=I.current=new Intl.ListFormat(i.resolvedOptions().locale,{type:"unit"})),s.format(t)}}}function F(e){return l((t=e*(n-a)+a,Math.round((t-a)/r)*r+a),a,n);var t}return{values:b,defaultValues:void 0!==t.defaultValue?g:x,getThumbValue:e=>b[e],setThumbValue:R,setThumbPercent:function(e,t){R(e,F(t))},isThumbDragging:e=>j[e],setThumbDragging:function(e,t){if(s||!D(e))return;t&&(C.current=b);const a=S.current[e];var n;S.current=$t(S.current,e,t),n=S.current,S.current=n,y(n),m&&a&&!S.current.some(Boolean)&&m(C.current)},focusedThumb:k,setFocusedThumb:N,getThumbPercent:e=>P(b[e]),getValuePercent:P,getThumbValueLabel:e=>E(b[e]),getFormattedValue:E,getThumbMinValue:T,getThumbMaxValue:_,getPercentValue:F,isThumbEditable:D,setThumbEditable:function(e,t){w.current[e]=t},incrementThumb:function(e,t=1){let s=Math.max(t,r);R(e,f(b[e]+s,a,n,r))},decrementThumb:function(e,t=1){let s=Math.max(t,r);R(e,f(b[e]-s,a,n,r))},step:r,pageSize:d,orientation:o,isDisabled:s}}function $t(e,t,s){return e[t]===s?e:[...e.slice(0,t),s,...e.slice(t+1)]}function Wt(e){if(null!=e)return Array.isArray(e)?e:[e]}function Gt(e,t,s){return a=>{s?.("number"==typeof e||"number"==typeof t?a[0]:a)}}const Yt=e.createContext(null),Xt=e.createContext(null),Jt=e.createContext(null),Qt=e.createContext(null),Zt=e.forwardRef(function(s,a){[s,a]=b(s,a,Yt);let c=e.useRef(null),u=v(s.formatOptions),g=Kt({...s,numberFormatter:u}),[p,m]=x(!s["aria-label"]&&!s["aria-labelledby"]),{groupProps:f,trackProps:h,labelProps:C,outputProps:S}=function(t,s,a){let{labelProps:c,fieldProps:u}=n(t),g="vertical"===t.orientation;Ot.set(s,{id:c.id??u.id,"aria-describedby":t["aria-describedby"],"aria-details":t["Line truncated
@@ -1 +0,0 @@
import{r as t,j as e}from"./vendor-react-64fcanlc.js";import{f as s,g3 as i}from"./index-HxEUeoab.js";import{a,aW as r,aX as o,aY as l,a$ as n,b0 as h,b1 as d}from"./activity-yZTrGy-J.js";import{G as m,C as c}from"./AreaCurve-DQSHOSpG.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./nodes-6sIn2I0s.js";import"./AppearanceControls-sRy1p156.js";import"./ItemText-DOD_75iR.js";import"./logs-C4GIy4tX.js";import"./Select-D7_6MaHd.js";import"./array-C0VuvQyb.js";function u({values:u,timestamps:p,color:x,fmt:j,locale:f,height:y=32,floor:g=0,inset:v=0,lines:w}){const M=t.useId(),b=a(),[k,C]=t.useState(null),[$,A]=s(Math.round,120),{tip:W,showAt:I,hide:L}=r(),P=t.useMemo(()=>u.filter(t=>null!==t),[u]),S=P.length>1,T=t.useMemo(()=>[g>0?0:.85*Math.min(...P),Math.max(1.05*Math.max(...P)||1,g)],[P,g]),B=A?.width??0,D=(A?.height??y)-2,E=t.useMemo(()=>{const t=[Math.min(...p),Math.max(...p)];return p.map(e=>o(e,t,[v,Math.max(v,B-v)]))},[p,B,v]),F=t.useCallback(t=>o(t,T,[D,2]),[T,D]),G=t.useMemo(()=>u.map((t,e)=>null===t?null:{x:E[e],y:F(t)}),[u,E,F]);return t.useLayoutEffect(()=>{null!==k&&null!=u[k]&&j&&f&&$.current&&A?I({x:E[k],y:F(u[k]),width:A.width,bounds:l($.current),label:i(f).format(p[k]),lines:w?.(k)??[j(u[k])]}):L()}),e.jsxs("div",{ref:$,style:{height:`var(--rp-spark-fill, ${y}px)`,width:"100%",position:"relative"},"aria-hidden":!!S||void 0,onPointerLeave:()=>C(null),children:[A&&!S&&e.jsx("svg",{"aria-hidden":!0,width:A.width,height:A.height,style:{display:"block",position:"absolute",inset:0},children:e.jsx("line",{x1:v,x2:A.width-v,y1:D,y2:D,stroke:b["hl-med"],strokeDasharray:"2 4"})}),S&&A&&e.jsxs(e.Fragment,{children:[e.jsx(n,{tip:W}),e.jsxs("svg",{className:"rp-activity-surface",width:A.width,height:A.height,viewBox:`0 0 ${A.width} ${A.height}`,style:{display:"block",position:"absolute",inset:0},onPointerMove:t=>{const e=h(t,t.currentTarget,A);C(e.x<0||e.x>A.width||e.y<2||e.y>A.height-2?null:d(E,e.x))},children:[e.jsx("defs",{children:e.jsx(m,{id:M,color:x})}),e.jsx(c,{points:G,baseline:F(Math.max(0,T[0])),color:x,id:M,strokeWidth:1.5}),null!==k&&null!=u[k]&&e.jsx("circle",{cx:E[k],cy:F(u[k]),r:4,fill:x,stroke:b.base,strokeWidth:2})]})]})]})}export{u as SparkPlot};
@@ -1 +0,0 @@
import{r as e,$ as t,b as l,j as n}from"./vendor-react-64fcanlc.js";import{ef as i,eg as o,eh as r,ei as s,ej as a,ek as d,bp as c,d_ as u,cK as h,cD as y,el as p,cN as f,cC as g,em as m,en as b,eo as w,ep as v,dY as x,cL as k,eq as C,er as K,es as I,et as S,eu as M,ev as E,ew as R,cA as z,cB as D,ex as P,cJ as N,ey as H,ez as W,eA as T,eB as A,d$ as F,eC as V,eD as L,eE as B,eF as j,cO as O,cQ as $,e0 as U,e3 as _,eG as Y,eH as q,c$ as X,d0 as G,e6 as J,eI as Q,d2 as Z,cU as ee,cW as te,eJ as le,eK as ne,c_ as ie,eL as oe,eM as re,d3 as se,e1 as ae,eb as de,cV as ce,eN as ue,e2 as he,eO as ye,eP as pe,eQ as fe,eR as ge,eS as me,e8 as be,eT as we,eU as ve,ea as xe,u as ke,i as Ce,b4 as Ke,eV as Ie,af as Se,cl as Me,aE as Ee,b9 as Re,aD as ze,bw as De,b7 as Pe,eW as Ne,T as He}from"./index-HxEUeoab.js";import{b as We,a as Te,c as Ae,d as Fe,e as Ve,f as Le,g as Be}from"./Checkbox-CJt7u9-e.js";import{f as je,g as Oe,h as $e,i as Ue,j as _e}from"./Select-D7_6MaHd.js";import{$ as Ye}from"./logs-C4GIy4tX.js";import{e as qe,a as Xe,c as Ge,b as Je,d as Qe}from"./Virtualizer-DMIKG2CD.js";class Ze{constructor(e){if(this.collection=e.collection,this.disabledKeys=e.disabledKeys,this.disabledBehavior=e.disabledBehavior||"all",this.direction=e.direction,this.collator=e.collator,!e.layout&&!e.ref)throw new Error("Either a layout or a ref must be specified.");this.layoutDelegate=e.layoutDelegate||(e.layout?new et(e.layout):new i(e.ref)),this.focusMode=e.focusMode??"row"}isCell(e){return"cell"===e.type}isRow(e){return"row"===e.type||"item"===e.type}isDisabled(e){return"all"===this.disabledBehavior&&(e.props?.isDisabled||this.disabledKeys.has(e.key))&&"selection"!==e.props?.disabledBehavior}findPreviousKey(e,t,l=!1){let n=null!=e?this.collection.getKeyBefore(e):this.collection.getLastKey();for(;null!=n;){let e=this.collection.getItem(n);if(!e)return null;if((l||!this.isDisabled(e))&&(!t||t(e)))return n;n=this.collection.getKeyBefore(n)}return null}findNextKey(e,t,l=!1){let n=null!=e?this.collection.getKeyAfter(e):this.collection.getFirstKey();for(;null!=n;){let e=this.collection.getItem(n);if(!e)return null;if((l||!this.isDisabled(e))&&(!t||t(e)))return n;if(n=this.collection.getKeyAfter(n),null==n)return null}return null}getKeyForItemInRowByIndex(e,t=0){if(t<0)return null;let l=this.collection.getItem(e);if(!l)return null;let n=0;for(let i of o(l,this.collection)){if(i.colSpan&&i.colSpan+n>t)return i.key??null;if(i.colSpan&&(n=n+i.colSpan-1),n===t)return i.key??null;n++}return null}getKeyBelow(e,t){let l=e,n=this.collection.getItem(l);if(!n)return null;if(this.isCell(n)&&(l=n.parentKey??null),null==l)return null;if(l=this.findNextKey(l,e=>"item"===e.type,t?.includeDisabled),null!=l){if(this.isCell(n)){let e=n.colIndex?n.colIndex:n.index;return this.getKeyForItemInRowByIndex(l,e)}if("row"===this.focusMode)return l}return null}getKeyAbove(e,t){let l=e,n=this.collection.getItem(l);if(!n)return null;if(this.isCell(n)&&(l=n.parentKey??null),null==l)return null;if(l=this.findPreviousKey(l,e=>"item"===e.type,t?.includeDisabled),null!=l){if(this.isCell(n)){let e=n.colIndex?n.colIndex:n.index;return this.getKeyForItemInRowByIndex(l,e)}if("row"===this.focusMode)return l}return null}getKeyRightOf(e){let t=this.collection.getItem(e);if(!t)return null;if(this.isRow(t)){let e=o(t,this.collection);return("rtl"===this.direction?r(e)?.key:s(e)?.key)??null}if(this.isCell(t)&&null!=t.parentKey){let l=this.collection.getItem(t.parentKey);if(!l)return null;let n=o(l,this.collection),i=("rtl"===this.direction?a(n,t.index-1):a(n,t.index+1))??null;return i?i.key??null:"row"===this.focusMode?t.parentKey??null:("rtl"===this.direction?this.getFirstKey(e):this.getLastKey(e))??null}return null}getKeyLeftOf(e){let t=this.collection.getItem(e);if(!t)return null;if(this.isRow(t)){let e=o(t,this.collection);return("rtl"===this.direction?s(e)?.key:r(e)?.key)??null}if(this.isCell(t)&&null!=t.parentKey){let l=this.collection.getItem(t.parentKey);if(!l)return null;let n=o(l,this.collection),i=("rtl"===this.direction?a(n,t.index+1):a(n,t.index-1))??null;return i?i.key??null:"row"===this.focusMode?t.parentKey??null:("rtl"===this.direction?this.getLastKey(e):this.getFirstKey(e))??null}return null}getFirstKey(e,t){let l,n=e??null;if(null!=n){if(l=this.collection.getItem(n),!l)return null;if(this.isCell(l)&&!t&&null!=l.parentKey){let e=this.collection.getItem(l.parentKey);return e?s(o(e,this.collection))?.key??null:null}}if(n=this.findNextKey(void 0,e=>"item"===e.type),null!=n&&(l&&this.isCell(l)&&t||"cell"===this.focusMode)){let e=this.collection.getItem(n);if(!e)return null;n=s(o(e,this.collection))?.key??null}return n}getLastKey(e,t){let l,n=e??null;if(null!=n){if(l=this.collection.getItem(n),!l)return null;if(this.isCell(l)&&!t&&null!=l.parentKey){let e=this.collection.getItem(l.parentKey);if(!e)return null;let t=o(e,this.collection);return r(t)?.key??null}}if(n=this.findPreviousKey(void 0,e=>"item"===e.type),null!=n&&(l&&this.isCell(l)&&t||"cell"===this.focLine truncated
@@ -1 +0,0 @@
import{r as e,$ as t,j as s}from"./vendor-react-64fcanlc.js";import{dY as i,cD as l,dZ as a,cB as o,cC as n,bp as r,d_ as d,cK as c,d$ as u,cO as b,e0 as h,e1 as f,c$ as p,d2 as y,d3 as v,cU as g,cV as K,e2 as m,cQ as S,e3 as x,e4 as P,e5 as D,e6 as C,cR as E,c_ as w,e7 as F,e8 as M,cW as I,e9 as N,ea as j,eb as k,ec as R,ed as L,ee as H}from"./index-HxEUeoab.js";import{a as V}from"./Checkbox-CJt7u9-e.js";import{e as T}from"./Select-D7_6MaHd.js";import{T as A}from"./Toolbar-BTFtduwD.js";const O=new WeakMap;function $(e,t,s){if(!e)return"";return"string"==typeof t&&(t=t.replace(/\s+/g,"")),`${O.get(e)}-${s}-${t}`}class z{constructor(e,t,s,i=new Set){this.collection=e,this.flipDirection="rtl"===t,this.disabledKeys=i,this.tabDirection="horizontal"===s}getKeyLeftOf(e){return this.flipDirection?this.getNextKey(e):this.getPreviousKey(e)}getKeyRightOf(e){return this.flipDirection?this.getPreviousKey(e):this.getNextKey(e)}isDisabled(e){return this.disabledKeys.has(e)||!!this.collection.getItem(e)?.props?.isDisabled}getFirstKey(){let e=this.collection.getFirstKey();return null!=e&&this.isDisabled(e)&&(e=this.getNextKey(e)),e}getLastKey(){let e=this.collection.getLastKey();return null!=e&&this.isDisabled(e)&&(e=this.getPreviousKey(e)),e}getKeyAbove(e){return this.tabDirection?null:this.getPreviousKey(e)}getKeyBelow(e){return this.tabDirection?null:this.getNextKey(e)}getNextKey(e){let t=e;do{t=this.collection.getKeyAfter(t),null==t&&(t=this.collection.getFirstKey())}while(null!=t&&this.isDisabled(t)&&t!==e);return t}getPreviousKey(e){let t=e;do{t=this.collection.getKeyBefore(t),null==t&&(t=this.collection.getLastKey())}while(null!=t&&this.isDisabled(t)&&t!==e);return t}}function B(t){let s=function(t){let[s,i]=b(t.selectedKey,t.defaultSelectedKey??null,t.onSelectionChange),l=e.useMemo(()=>null!=s?[s]:[],[s]),{collection:a,disabledKeys:o,selectionManager:n}=T({...t,selectionMode:"single",disallowEmptySelection:!0,allowDuplicateSelectionEvents:!0,selectedKeys:l,onSelectionChange:e=>{if("all"===e)return;let l=e.values().next().value??null;l===s&&t.onSelectionChange&&t.onSelectionChange(l),i(l)}}),r=null!=s?a.getItem(s):null;return{collection:a,disabledKeys:o,selectionManager:n,selectedKey:s,setSelectedKey:i,selectedItem:r}}({...t,onSelectionChange:t.onSelectionChange?e=>{null!=e&&t.onSelectionChange?.(e)}:void 0,suppressTextValueWarning:!0,defaultSelectedKey:t.defaultSelectedKey??W(t.collection,t.disabledKeys?new Set(t.disabledKeys):new Set)??void 0}),{selectionManager:i,collection:l,selectedKey:a}=s,o=e.useRef(a);return e.useEffect(()=>{let e=a;null!=t.selectedKey||!i.isEmpty&&null!=e&&l.getItem(e)||(e=W(l,s.disabledKeys),null!=e&&i.setSelectedKeys([e])),(null!=e&&null==i.focusedKey||!i.isFocused&&e!==o.current)&&i.setFocusedKey(e),o.current=e}),{...s,isDisabled:t.isDisabled||!1}}function W(e,t){let s=null;if(e){for(s=e.getFirstKey();null!=s&&(t.has(s)||e.getItem(s)?.props?.isDisabled)&&s!==e.getLastKey();)s=e.getKeyAfter(s);null!=s&&(t.has(s)||e.getItem(s)?.props?.isDisabled)&&s===e.getLastKey()&&(s=e.getFirstKey())}return s}const U=e.createContext(null),Q=e.createContext(null),_=e.forwardRef(function(s,i){[s,i]=S(s,i,U);let{children:l,orientation:a="horizontal"}=s;return l=e.useMemo(()=>"function"==typeof l?l({orientation:a,defaultChildren:null}):l,[l,a]),t.createElement(x,{content:l},e=>t.createElement(Y,{props:s,collection:e,tabsRef:i}))});function Y({props:s,tabsRef:i,collection:a}){let{orientation:o="horizontal"}=s,r=B({...s,collection:a,children:void 0}),{focusProps:d,isFocused:c,isFocusVisible:u}=y({within:!0}),b=e.useMemo(()=>({orientation:o,isFocusWithin:c,isFocusVisible:u}),[o,c,u]),h=g({...s,defaultClassName:"react-aria-Tabs",values:b}),f=l(s,{global:!0});return t.createElement(K.div,{...n(f,h,d),ref:i,slot:s.slot||void 0,"data-focused":c||void 0,"data-orientation":o,"data-focus-visible":u||void 0,"data-disabled":r.isDisabled||void 0},t.createElement(I,{values:[[U,s],[Q,r]]},h.children))}const Z=e.forwardRef(function(s,i){return e.useContext(Q)?t.createElement(q,{props:s,forwardedRef:i}):t.createElement(h,s)});function q({props:s,forwardedRef:i}){let a=e.useContext(Q),{CollectionRoot:o}=e.useContext(C),{orientation:b="horizontal",keyboardActivation:h="automatic"}=E(U),f=p(i),{tabListProps:y}=function(t,s,i){let{orientation:l="horizontal",keyboardActivation:a="automatic"}=t,{collection:o,selectionManager:b,disabledKeys:h}=s,{direction:f}=r(),p=e.useMemo(()=>new z(o,f,l,h),[o,h,l,f]),{collectionProps:y}=d({ref:i,selectionManager:b,keyboardDelegate:p,selectOnFocus:"automatic"===a,disallowEmptySelection:!0,scrollRef:i,linkBehavior:"selection"}),v=c();O.set(s,v);let g=u({...t,id:v});return{tabListProps:{...n(y,g),role:"tablist","aria-orientation":l,tabIndex:void 0}}}({...s,orientation:b,keyboardActivation:h},a,f),v=g({...s,children:null,defaultClassName:"react-aria-TabList",values:{orientation:b,state:a}}),m=l(s,{global:!0});return delete m.id,t.createElement(K.div,{...n(m,v,y),ref:f,"data-orientation":b||void 0Line truncated
@@ -1 +0,0 @@
import{r as e,j as n,a as t}from"./vendor-react-64fcanlc.js";import{l as r,ak as l,dh as s,cl as a,di as c,b7 as o}from"./index-HxEUeoab.js";import{L as u}from"./AppearanceControls-sRy1p156.js";function i({children:e,tone:t,action:r}){return n.jsxs("span",{className:o("rp-tag",t),children:[n.jsx("span",{className:"rp-tag-label",children:e}),r]})}function g({label:e,children:t}){return n.jsx("div",{className:"rp-tags",role:"group","aria-label":e,children:t})}function h({href:e,children:t}){return n.jsx(u,{href:e,className:"rp-tag rp-tag-link",children:n.jsx("span",{className:"rp-tag-label",children:t})})}function d(e,n,t,r){const l=e=>e<=t+.01,s=e.reduce((e,n)=>[...e,e[e.length-1]+n+r],[0]);if(l(s[e.length]-r))return e.length;let a=e.length-1;for(;a>0&&!l(s[a]+n(e.length-a));)a--;return a}function f({count:t,label:r,names:l}){const[o,u]=e.useState(!1);return n.jsxs(s,{delay:400,isOpen:o,onOpenChange:u,shouldCloseOnPress:!1,children:[n.jsx(a,{className:"rp-tag rp-tag-more","aria-label":r,onPress:e=>u(n=>"touch"!==e.pointerType||!n),children:n.jsxs("span",{className:"rp-tag-label",children:["+",t]})}),n.jsx(c,{children:l})]})}const p=e=>n=>e.more[String(n).length-1],m=new Map;let b=null;function j(e){const n=e.filter(e=>null!==e);n.length&&t.flushSync(()=>n.forEach(e=>e()))}function x({label:t,items:s,more:a}){const c=r(),o=e.useRef(null),u=e.useRef(null),i=e.useRef(new Set),g=`${c}\n${s.map(e=>e.label).join("\n")}`,[x,y]=e.useState({key:g,count:null}),w=x.key===g?x.count:null;e.useLayoutEffect(()=>{const e=o.current;if(null!==w||!e?.getClientRects().length)return;const n=[...e.children].map(e=>e.getBoundingClientRect().width),t={key:g,tags:n.slice(0,s.length),more:n.slice(s.length),gap:Number.parseFloat(getComputedStyle(e).columnGap)||0};u.current=t,y({key:g,count:d(t.tags,p(t),e.getBoundingClientRect().width,t.gap)})},[x,g,w,s.length]),e.useLayoutEffect(()=>{const e=o.current;if(!e)return;const n=()=>y({key:g,count:null});m.set(e,{remeasure:n,read:()=>{const t=u.current;if(!e.getClientRects().length)return null;const r=[...e.children].filter(e=>!e.classList.contains("rp-tag-more"));if(t?.key!==g||r.some((e,n)=>Math.abs(e.getBoundingClientRect().width-t.tags[n])>.5))return n;const l=d(t.tags,p(t),e.getBoundingClientRect().width,t.gap);return l===w?null:()=>y({key:g,count:l})}});const t=(b||(b=new ResizeObserver(e=>{j([...new Set(e.map(e=>e.target.closest(".rp-tags[data-fit]")))].map(e=>(e&&m.get(e)?.read())??null))}),document.fonts?.addEventListener("loadingdone",()=>j([...m.values()].map(e=>e.remeasure)))),b),r=new Set([e,...e.children]);for(const l of i.current)r.has(l)||t.unobserve(l);for(const l of r)i.current.has(l)||t.observe(l);i.current=r}),e.useLayoutEffect(()=>{const e=o.current,n=i;return()=>{e&&m.delete(e);for(const e of n.current)b?.unobserve(e);n.current=new Set}},[]);const C=l(c,s.map(e=>e.label)),R=null===w?0:s.length-w,S=null===w&&s.length?Array.from({length:String(s.length).length},(e,n)=>10**(n+1)-1):[];return n.jsxs("div",{ref:o,className:"rp-tags",role:"group","aria-label":t,"data-fit":"",children:[s.slice(0,w??s.length).map(e=>n.jsx(h,{href:e.href,children:e.label},e.id)),S.map(e=>n.jsx(f,{count:e,label:a(e),names:C},e)),R>0&&n.jsx(f,{count:R,label:a(R),names:C})]})}export{x as F,h as L,g as T,i as a};
@@ -1 +0,0 @@
import{j as a}from"./vendor-react-64fcanlc.js";import{al as s,l as r,dR as t,T as o,dQ as e,a1 as n}from"./index-HxEUeoab.js";function d({at:d}){const i=s[r()],c=t();return a.jsx(o,{text:d?n(d,i):void 0,children:e(d,i,c)})}export{d as T};
@@ -1 +0,0 @@
import{j as a}from"./vendor-react-64fcanlc.js";import{b7 as r}from"./index-HxEUeoab.js";function o({page:o,className:e,children:s,...t}){return a.jsx("div",{...t,className:r("rp-toolbar",e),"data-page-toolbar":o||void 0,children:s})}export{o as T};
@@ -1 +0,0 @@
import{r as e,j as s}from"./vendor-react-64fcanlc.js";import{bS as r,u as a,l as i,a9 as l,q as n,r as o,z as t,A as d,c9 as u,a6 as p,a3 as m,aK as c,p as j,bF as v,cg as b,bG as h,B as _,ci as f,T as x,C as y}from"./index-HxEUeoab.js";import{u as g,r as k}from"./flows-dBNkBg79.js";import{c as w,h as N,z as q,g as C,q as M,R as A,L,D as T,K as D}from"./logs-C4GIy4tX.js";import{e as R,t as S,c as V,n as E,d as F,q as P,a as I,b as O}from"./Rules-BCWmv1Ss.js";import{a as Q,p as W}from"./probe-Bj7oT3ox.js";import{u as z,R as K}from"./useQuickRule-DUEi6geL.js";import{d as $}from"./activity-yZTrGy-J.js";import{L as H}from"./AppearanceControls-sRy1p156.js";import{N as B,t as G,n as J}from"./NumberField-q4-QmTAT.js";import{T as U}from"./Toolbar-BTFtduwD.js";import{D as X}from"./Table-yWn0d3vL.js";import"./_commonjsHelpers-CXUWDbkB.js";import"./Select-D7_6MaHd.js";import"./ItemText-DOD_75iR.js";import"./nodes-6sIn2I0s.js";import"./Tabs-DT6MQhIo.js";import"./Checkbox-CJt7u9-e.js";import"./DaeCode-DEjXqvav.js";import"./daeTokens-BVtuNnWZ.js";import"./ConditionRow-B8Otz3rt.js";import"./Coverage-8qg_JeNJ.js";import"./rule-Bl9YOsFn.js";import"./labels-D8xxfRTQ.js";import"./nav-DG4JD5-H.js";import"./recorder-BHyqDNp5.js";import"./geodataUpdate-D9CXpIul.js";/* empty css */import"./LinkOut-D-cvJjm2.js";import"./SearchSelect-BcScGUbQ.js";import"./SearchList-LjCruZYP.js";import"./Virtualizer-DMIKG2CD.js";import"./AddCircle-C6Jc7GCc.js";const Y=e=>/^\d+$/.test(e)&&Number(e)>=1&&Number(e)<=65535,Z={none:"rule.resolveNone",live:"rule.resolveLive",query:"rule.resolveQuery"};function ee({form:s,setForm:j,advanced:v,setAdvanced:b,touched:h},_){const f=a(),x=i(),y=l(),A=n(),L=A.data?.resources,T=w(o(L,"groups",{whileLoading:!1})),D=N(o(L,"nodes",{whileLoading:!1})),K=g(o(L,"rules",{whileLoading:!1})),H=q(D.refetch),{choices:B}=H,G=z(_),J=e.useMemo(()=>new Map(T.data?.map(e=>[e.name,e])??[]),[T.data]),U=e.useMemo(()=>new Map(T.data?.map(e=>[e.id,e])??[]),[T.data]),X=e.useMemo(()=>new Map(D.data?.map(e=>[e.id,e])??[]),[D.data]),ee=e.useMemo(()=>new Map(K.data?.rules.map(e=>[e.rule_id,e])??[]),[K.data]),[se,re]=e.useState(null),ae=o(L,"providers",{whileLoading:!1}),ie=C(!!se&&ae),le=o(L,"groups",{whileLoading:!1}),{busy:ne,error:oe,run:te}=t(),de=oe??A.error,ue=e.useEffectEvent(e=>d("negative",f("rule.traceFailed"),u(e,f)));e.useEffect(()=>{de&&ue(de)},[de]);const pe=s.domain.trim()||s.dst_ip.trim()?s.dst_ip.trim()&&!r(s.dst_ip)?{field:"dst_ip",key:"ui.invalidIp"}:Y(s.dst_port)?s.src_ip.trim()&&!r(s.src_ip)?{field:"src_ip",key:"ui.invalidIp"}:s.src_port.trim()&&!Y(s.src_port)?{field:"src_port",key:"rule.invalidPort"}:!s.dscp.trim()||(me=s.dscp,/^\d+$/.test(me)&&Number(me)>=0&&Number(me)<=63)?"live"!==s.resolve&&"query"!==s.resolve||s.domain.trim()?"live"!==s.resolve&&"query"!==s.resolve||!s.dst_ip.trim()?null:{field:"dst_ip",key:"rule.invalidLive"}:{field:"domain",key:"rule.invalidLive"}:{field:"dscp",key:"rule.invalidDscp"}:{field:"dst_port",key:"rule.invalidPort"}:{field:"domain",key:"rule.invalidTarget"};var me;const ce=h?pe:null,je=A.data?.resources.routing_trace,ve=je?.resolve_modes??[],be=A.data?.resources.dns_query,he=be?.record_types,_e=e.useMemo(()=>(he??[]).filter(e=>"A"===e||"AAAA"===e),[he]),fe=be?.limits?.max_types_per_request??1,xe=[...ve,...!ve.includes("live")&&ve.includes("none")&&be?.available&&_e.length?["query"]:[]],ye=!1!==je?.available,ge=""!==s.domain.trim()&&!s.dst_ip.trim(),ke=s.resolve??(ge&&xe.includes("live")?"live":ge&&xe.includes("query")?"query":"none"),we=!pe&&ye&&xe.includes(ke),Ne=e.useCallback(async()=>{if(ne||!we)return;const e=function(e){const s=e=>r(e),a={network:e.network,dst_port:Number(e.dst_port),...e.domain.trim()?{domain:e.domain.trim()}:{dst_ip:s(e.dst_ip)}};return e.domain.trim()&&e.dst_ip.trim()&&(a.dst_ip=s(e.dst_ip)),e.src_ip.trim()&&(a.src_ip=s(e.src_ip)),e.src_port.trim()&&(a.src_port=Number(e.src_port)),e.pname.trim()&&(a.pname=e.pname.trim()),e.dscp.trim()&&(a.dscp=Number(e.dscp)),a}(s),a=await te("trace",s=>k({...y,dnsQuery:(e,r)=>M(y.dnsQuery,e,r,fe,s)},{input:e,resolve:ke,recordTypes:_e},s));re(a?{run:a,input:e}:null)},[y,ne,we,s,ke,_e,fe,te]),qe=K.data?.generation_id,Ce=e.useMemo(()=>se?.run.traces.flatMap(e=>e.evaluations.map(s=>({evaluation:s,traced:e.generation_id,current:qe===e.generation_id}))).map(({evaluation:e,traced:s,current:r},a)=>{const i=e.rules.find(e=>"matched"===e.result),l="determinate"!==e.decision&&!e.outbound&&r?(i&&ee.get(i.rule_id)?.outbound)??null:null,n=e.outbound??l,o=n&&!p(n)?m(n,se.input.network,J,U,X):null,t=R(e,a,se.input.domain??void 0,l,o,!!o?.node&&B(o.node).length>0,H.busy,f,x);return{...t,rows:t.rows.map(e=>({...e,href:$(e.id,r&&ee.has(e.id))})),links:V(o,le,ae?ie.data?.providers:[],f),seed:S(se.input,e,s)}})??[],[se,qe,ee,J,U,X,le,ae,ie.data,B,H.busy,f,x]),Me=e.useMemo(()=>se?{status:I(se.run.traces[0],se.run.query,f,x),query:se.run.query&&{...P(se.run.query,f,x),links:E(se.run.query.domain,L,f)},dns:se.run.traces.flatMap(e=>e.Line truncated
@@ -1 +0,0 @@
import{eg as t,bp as e,cN as i,el as n,eZ as s,e_ as o,es as r,ez as l,eP as a,eR as h,e$ as d,e6 as u,f0 as c}from"./index-HxEUeoab.js";import{r as y,$ as g,a as f}from"./vendor-react-64fcanlc.js";class p{constructor(t=0,e=0){this.x=t,this.y=e}copy(){return new p(this.x,this.y)}equals(t){return this.x===t.x&&this.y===t.y}isOrigin(){return 0===this.x&&0===this.y}}class w{constructor(t=0,e=0,i=0,n=0){this.x=t,this.y=e,this.width=i,this.height=n}get maxX(){return this.x+this.width}get maxY(){return this.y+this.height}get area(){return this.width*this.height}get topLeft(){return new p(this.x,this.y)}get topRight(){return new p(this.maxX,this.y)}get bottomLeft(){return new p(this.x,this.maxY)}get bottomRight(){return new p(this.maxX,this.maxY)}intersects(t){return this.area>0&&t.area>0&&this.x<=t.x+t.width&&t.x<=this.x+this.width&&this.y<=t.y+t.height&&t.y<=this.y+this.height}containsRect(t){return this.x<=t.x&&this.y<=t.y&&this.maxX>=t.maxX&&this.maxY>=t.maxY}containsPoint(t){return this.x<=t.x&&this.y<=t.y&&this.maxX>=t.x&&this.maxY>=t.y}getCornerInRect(t){for(let e of["topLeft","topRight","bottomLeft","bottomRight"])if(t.containsPoint(this[e]))return e;return null}equals(t){return t.x===this.x&&t.y===this.y&&t.width===this.width&&t.height===this.height}pointEquals(t){return this.x===t.x&&this.y===t.y}sizeEquals(t){return this.width===t.width&&this.height===t.height}union(t){let e=Math.min(this.x,t.x),i=Math.min(this.y,t.y),n=Math.max(this.maxX,t.maxX)-e,s=Math.max(this.maxY,t.maxY)-i;return new w(e,i,n,s)}intersection(t){if(!this.intersects(t))return new w(0,0,0,0);let e=Math.max(this.x,t.x),i=Math.max(this.y,t.y);return new w(e,i,Math.min(this.maxX,t.maxX)-e,Math.min(this.maxY,t.maxY)-i)}copy(){return new w(this.x,this.y,this.width,this.height)}}class z{constructor(t=0,e=0){this.width=Math.max(t,0),this.height=Math.max(e,0)}copy(){return new z(this.width,this.height)}equals(t){return this.width===t.width&&this.height===t.height}get area(){return this.width*this.height}}let v=0;class m{constructor(t,e){this.virtualizer=t,this.key=++v,this.viewType=e,this.children=new Set,this.reusableViews=new Map,this.layoutInfo=null,this.content=null,this.rendered=null}prepareForReuse(){this.content=null,this.rendered=null,this.layoutInfo=null}getReusableView(t){let e=this.reusableViews.get(t);return e&&e.length>0?e.shift():new b(this.virtualizer,this,t)}reuseChild(t){t.prepareForReuse();let e=this.reusableViews.get(t.viewType);e||(e=[],this.reusableViews.set(t.viewType,e)),e.push(t)}}class S extends m{constructor(t){super(t,"root")}}class b extends m{constructor(t,e,i){super(t,i),this.parent=e}}class x{setVisibleRect(t){let e=performance.now()-this.startTime;e<500&&(t.x!==this.visibleRect.x&&e>0&&(this.velocity.x=(t.x-this.visibleRect.x)/e),t.y!==this.visibleRect.y&&e>0&&(this.velocity.y=(t.y-this.visibleRect.y)/e)),this.startTime=performance.now(),this.visibleRect=t}getOverscannedRect(){let t=this.visibleRect.copy(),e=this.visibleRect.height/3;t.height+=e,this.velocity.y<0&&(t.y-=e);let i=this.visibleRect.width/3;return t.width+=i,this.velocity.x<0&&(t.x-=i),t}constructor(){this.startTime=0,this.velocity=new p(0,0),this.visibleRect=new w}}function I(t){return"x"===t?"width":"height"}function R(t,e,i,n,s){if("start"===i)return t[n]<=s;let o=I(n);return e[o]-(t[n]+t[o])<=s}function C(t,e,i,n,s,o,r,l,a,h){let d=t=>"x"===e?new w(t,a.y,a.width,a.height):new w(a.x,t,a.width,a.height);if(i){let t=function(t,e,i,n,s){let o=i(t.key);if(!o)return null;let r=o.rect[t.corner][e]-n[e]-t.offset;if(0===r)return null;let l=n[e]+r,a=I(e),h=Math.max(0,s[a]-n[a]),d=Math.max(0,Math.min(h,l));return d!==n[e]?d:null}(i,e,l,a,h);if(null!=t)return d(t)}if(n&&!s&&(!o||r>0)){let i=d(function(t,e,i,n){if("start"===t)return 0;let s=I(e);return Math.max(0,i[s]-n[s])}(t,e,h,a));return i.equals(a)?null:i}return null}class k{reset(){this.hasSnappedToEdge=!1,this.hadEstimatedVisibleItems=!1,this.wasNearAnchorEdge=!1}captureBeforeLayout(t,e,i){return t?function(t,e,i,n,s=()=>!0){let o=I(e),r=null;for(let[l,a]of n){if(!a||!s(a))continue;let n=a.rect.intersection(i)[o];if(a.rect.area>0&&n>=4){let n=a.rect.getCornerInRect(i)??"topLeft",s=a.rect[n][e]-i[e];(!r||("end"===t?s<r.offset:s>r.offset))&&(r={key:l,corner:n,offset:s})}}return r}(t.edge,t.axis,i,e,t.isAnchorable):null}resolveAfterLayout(t){let{anchorInfo:e,anchor:i,postLayoutInfos:n,previousVisibleRect:s,previousContentSize:o,contentSize:r,itemSizeChanged:l,isScrolling:a,getLayoutInfo:h}=t;if(!e)return null;let d=this.hadEstimatedVisibleItems,u=this.wasNearAnchorEdge,c=!1;for(let z of n.values())if(z.estimatedSize){c=!0;break}if(this.hadEstimatedVisibleItems=c,d||(this.wasNearAnchorEdge=R(s,o,e.edge,e.axis,e.threshold)),0===s.area)return null;let y="x"===e.axis?"width":"height",g=r[y]-o[y],f=!this.hasSnappedToEdge;if(this.hasSnappedToEdge=!0,!f&&0===g&&!l)return null;let p=f||d&&u||R(s,o,e.edge,e.axis,e.threshold);d||(this.wasNearAnchorEdge=p);let w=f||d&&u?null:i;return C(e.edge,e.axis,w,p,a,l,g,h,sLine truncated
@@ -1 +0,0 @@
function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}export{e as g};
@@ -1 +0,0 @@
.rp-dashboard{gap:var(--rp-space-6);flex-direction:column;display:flex}.rp-dashboard-cell{flex-direction:column;min-inline-size:0;display:flex}.rp-dashboard-cell>.rp-card,.rp-dashboard-body>.rp-card{flex:1}.rp-module-actions{gap:var(--rp-space-2);flex-wrap:wrap;align-self:flex-start;align-items:center;display:flex}.rp-module-actions>button{flex:none}.rp-module-option{gap:var(--rp-space-2) var(--rp-space-3);flex-flow:column wrap;align-items:start;display:flex}.rp-module-option>:last-child{flex:0 auto;max-inline-size:100%}.rp-module-inspector{gap:var(--rp-space-4);flex-direction:column;display:flex}.rp-dash-section{--rp-dash-gap:var(--rp-space-3);gap:var(--rp-dash-gap);grid-template-columns:minmax(0,1fr);align-items:stretch;display:grid}.rp-dash-section>*{container:rp-tile/inline-size}.rp-dash-section[data-profile=metrics],.rp-dash-section[data-profile=extensions]{grid-template-columns:repeat(2,minmax(0,1fr))}.rp-dash-section[data-profile=metrics]>:is([data-foot=end],[data-size=large]){grid-column:1/-1}@media (width<=599.98px){.rp-dash-section[data-profile=extensions]{grid-template-columns:minmax(0,1fr)}}@media (width>=600px) and (width<=1279.98px){.rp-dash-section[data-profile=extensions]>[data-size=large]{grid-column:1/-1}}@media (width>=640px){.rp-dash-section[data-profile=quick]{grid-template-columns:repeat(2,minmax(0,1fr))}.rp-dash-section[data-profile=quick]>[data-foot=lead]{grid-column:1/-1}}@media (width>=1024px){.rp-dash-section[data-profile=traffic]{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.rp-dash-section[data-profile=details]{grid-template-columns:repeat(2,minmax(0,1fr))}.rp-dash-section[data-profile=details]>:is([data-foot=end],[data-size=large]){grid-column:1/-1}}@media (width>=1100px){.rp-dash-section[data-profile=quick]{grid-template-columns:minmax(0,1.5fr) repeat(2,minmax(0,1fr))}.rp-dash-section[data-profile=quick]>[data-foot=lead]{grid-column:auto}.rp-dash-section[data-profile=metrics]{grid-template-columns:repeat(6,minmax(0,1fr))}.rp-dash-section[data-profile=metrics]>*{grid-column:span 2}.rp-dash-section[data-profile=metrics]>:is([data-foot=tail],[data-foot=end]){grid-column:span 3}.rp-dash-section[data-profile=metrics]>[data-size=large]{grid-column:span 4}}@media (width>=1280px){.rp-dash-section[data-profile=metrics]{grid-template-columns:repeat(5,minmax(0,1fr))}.rp-dash-section[data-profile=metrics]>:is(*,[data-foot]){grid-column:span 1}.rp-dash-section[data-profile=metrics]>[data-size=large]{grid-column:span 2}.rp-dash-section:is([data-profile=traffic],[data-profile=details],[data-profile=extensions]){grid-template-columns:repeat(12,minmax(0,1fr))}.rp-dash-section:is([data-profile=traffic],[data-profile=details],[data-profile=extensions])>*,.rp-dash-section[data-profile=details]>[data-foot=end]{grid-column:span 4}.rp-dash-section[data-profile=traffic]>:nth-child(odd of .rp-dashboard-cell),.rp-dash-section:is([data-profile=details],[data-profile=extensions])>[data-size=large]{grid-column:span 8}.rp-dash-section[data-profile=extensions]>[data-size=small]{grid-column:span 2}}.rp-dash-section[data-profile]>.rp-dashboard-cell[data-size=wide]{grid-column:1/-1}.rp-dash-section{--rp-dash-snap:none}@media (width>=768px){.rp-dash-section{--rp-dash-snap:6}.rp-dash-section:is([data-grid],[data-fit]){grid-template-columns:repeat(420,minmax(0,1fr));column-gap:0;margin-inline-start:calc(0px - var(--rp-dash-gap))}.rp-dash-section:is([data-grid],[data-fit])[data-profile]>.rp-dashboard-cell{grid-column:span var(--rp-chosen,var(--rp-span));margin-inline-start:var(--rp-dash-gap)}.rp-dash-section:is([data-grid],[data-fit])[data-profile]>.rp-dashboard-cell:not([data-width],[data-size=wide]){margin-inline-start:calc(var(--rp-dash-gap) * (1 - var(--rp-shift,0)));margin-inline-end:calc(var(--rp-dash-gap) * var(--rp-trim,0))}.rp-dash-section>*{--rp-span:210}.rp-dash-section:is([data-profile=traffic],[data-profile=details])>*,.rp-dash-section[data-profile=quick]>[data-foot=lead],.rp-dash-section[data-profile=metrics]>:is([data-foot=end],[data-size=large]),.rp-dash-section[data-profile=extensions]>[data-size=large]{--rp-span:420}.rp-dash-section>:is([data-width="1/5"],[data-width="1/4"],[data-width="1/3"]){--rp-chosen:140}.rp-dash-section>[data-width="1/2"]{--rp-chosen:210}.rp-dash-section>[data-width="2/3"]{--rp-chosen:280}.rp-dash-section>[data-width=full]{--rp-chosen:420}}@media (width>=1024px){.rp-dash-section[data-profile=traffic]>*{--rp-span:140}.rp-dash-section[data-profile=traffic]>:nth-child(odd of .rp-dashboard-cell){--rp-span:280}.rp-dash-section[data-profile=details]>*{--rp-span:210}.rp-dash-section[data-profile=details]>:is([data-foot=end],[data-size=large]){--rp-span:420}}@media (width>=1024px) and (width<=1279.98px){.rp-dash-section[data-profile=traffic]>:nth-child(odd of .rp-dashboard-cell){--rp-trim:1 / 3}.rp-dash-section[data-profile=traffic]>:nth-child(2n of .rp-dashboard-cell){--rp-shift:1 / 3}}@media (width>=1100px){.rp-dash-section[data-profile=quick]>*{--rp-span:120}.rp-dash-sectiLine truncated
@@ -1,2 +0,0 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./AreaChart-CMjcgmpk.js","./vendor-react-64fcanlc.js","./_commonjsHelpers-CXUWDbkB.js","./index-HxEUeoab.js","./index-CcbWXWDN.css","./AreaCurve-DQSHOSpG.js","./array-C0VuvQyb.js","./nodes-6sIn2I0s.js","./AppearanceControls-sRy1p156.js","./ItemText-DOD_75iR.js","./logs-C4GIy4tX.js","./Select-D7_6MaHd.js","./Sparkline-rgYPkbE4.js","./Donut-CLXBHnKk.js","./Editors-DQ5Z_NlY.js","./GridList-D7qdplA5.js","./Checkbox-CJt7u9-e.js","./Delete-CR2AtZsd.js","./Editors-rPgk_VZK.css","./index-B-vRbGlz.js","./geodata-X0pHz03D.js","./auth-BHtDKZwR.js","./auth-CSMbhh2E.js"])))=>i.map(i=>d[i]);
import{r as e,a as t,j as n}from"./vendor-react-64fcanlc.js";import{d as s,h as a,n as r,o as i,w as o,s as l,R as c,S as d,a as u,b as m,I as h,L as p,u as f,_ as g,c as b,e as x,N as v,T as y,f as j,g as w,i as k,j as N,B as M,E as _,C as S,k as C,l as E,P as L,m as z,p as R,q as O,r as P,t as A,v as q,x as I,y as T,z as D,A as H,D as F,F as B,G as $,H as V,J as W,K as U,M as G,O as K,Q as J,U as X,V as Y,W as Q,X as Z,Y as ee,Z as te,$ as ne,a0 as se,a1 as ae,a2 as re,a3 as ie,a4 as oe,a5 as le,a6 as ce,a7 as de,a8 as ue,a9 as me,aa as he,ab as pe,ac as fe,ad as ge,ae as be,af as xe,ag as ve,ah as ye,ai as je,aj as we,ak as ke,al as Ne,am as Me,an as _e,ao as Se,ap as Ce,aq as Ee,ar as Le,as as ze,at as Re,au as Oe,av as Pe,aw as Ae,ax as qe,ay as Ie,az as Te,aA as De,aB as He,aC as Fe,aD as Be,aE as $e,aF as Ve,aG as We,aH as Ue,aI as Ge,aJ as Ke,aK as Je,aL as Xe,aM as Ye,aN as Qe,aO as Ze,aP as et,aQ as tt,aR as nt,aS as st,aT as at,aU as rt,aV as it,aW as ot,aX as lt,aY as ct,aZ as dt,a_ as ut,a$ as mt,b0 as ht,b1 as pt,b2 as ft,b3 as gt,b4 as bt,b5 as xt,b6 as vt,b7 as yt,b8 as jt,b9 as wt,ba as kt,bb as Nt,bc as Mt,bd as _t,be as St,bf as Ct,bg as Et,bh as Lt,bi as zt,bj as Rt,bk as Ot,bl as Pt,bm as At,bn as qt,bo as It,bp as Tt,bq as Dt,br as Ht,bs as Ft,bt as Bt,bu as $t,bv as Vt,bw as Wt,bx as Ut}from"./index-HxEUeoab.js";import{r as Gt,c as Kt,s as Jt,h as Xt,d as Yt,i as Qt,a as Zt,b as en,e as tn,f as nn,g as sn,j as an,n as rn,u as on,k as ln,l as cn,p as dn,m as un,o as mn,q as hn,t as pn,v as fn,w as gn,x as bn,y as xn,z as vn,A as yn,B as jn}from"./nodes-6sIn2I0s.js";import{L as wn,C as kn,u as Nn,a as Mn,P as _n,S as Sn,T as Cn,b as En,c as Ln}from"./AppearanceControls-sRy1p156.js";import{W as zn,S as Rn,u as On,a as Pn,b as An,c as qn,e as In,d as Tn,l as Dn,f as Hn,g as Fn,h as Bn,i as $n,V as Vn,C as Wn,r as Un,K as Gn,D as Kn,j as Jn,M as Xn,$ as Yn,k as Qn,m as Zn,n as es}from"./logs-C4GIy4tX.js";import{I as ts,C as ns}from"./ItemText-DOD_75iR.js";const ss={"missing-offline-dependency":"config.diagnostic.offlineMissing","offline-dependency-denied":"config.diagnostic.offlineDenied","invalid-offline-dependency":"config.diagnostic.offlineInvalid","unreadable-offline-dependency":"config.diagnostic.offlineUnreadable"},as=e=>Object.hasOwn(ss,e);function rs(e,t,n){return as(e.code)?{summary:t("config.diagnostic.offline",{reason:t(ss[e.code]),which:n?t("config.diagnostic.offlineGeodata",{files:n}):t("config.diagnostic.offlineUsual")})}:s(e,t)}const is=e=>[...new Set(e.flatMap(({item:e,message:t})=>e.message&&!t.includes(e.message)?[e.message]:[]))];function os(e,t){const n=e.map(e=>e.id===t?.id?t.content:e.content).flatMap(e=>void 0===e?[]:Gt(e));return[...new Map(n.map(({name:e,written:t})=>[t,{name:e,written:t}])).values()]}const ls=e=>"<redacted>"===e.path||""===e.path,cs=e=>ls(e)?"main"===e.kind?"config.dae":`${e.kind}-${e.id.slice(0,8)}.dae`:e.path.split("/").pop()||"config.dae";function ds(e,t){const n=e.find(e=>"main"===e.kind);if(!n)return null;const s=[n,...e.filter(e=>"include"===e.kind&&!ls(e))];return t&&!s.some(e=>e.id===t.id)?null:s.map(e=>({id:e.id,...ls(e)?{}:{path:e.path},content:e.id===t?.id?t.content:e.content}))}const us=e=>e.filter(e=>"error"===e.level&&"restart-required"===e.code).map(e=>({key:/\b[a-z][a-z0-9_]*(?:\.[a-z0-9_]+)+\b/.exec(e.message)?.[0]??(e.message||null),sourceId:e.source_id,line:e.line})),ms=e=>us(e).length,hs={main:"config.kind.main",include:"config.kind.include",subscription:"nodes.kind.subscription",generated:"config.kind.generated"},ps=(e,t)=>`${e}:${t}`;function fs(e,t){const n=e.indexOf(":"),s=e.slice(0,n);return n>0&&t.includes(s)?{kind:s,value:e.slice(n+1)}:null}const gs=(e,t)=>t&&e?a("rules",{tab:"list",rule:e}):void 0,bs=(e,t,n=!1)=>a("nodes",{provider:r(e,t),q:e.name,node:n?e.id??null:null});function xs(e,t){const n=e?.find(e=>e.name===t)?.id;return n?o("",{group:n}):""}function vs(e,t,n){const s=t?.find(t=>t.name===e);return s?{label:s.name,href:a("policies",{group:s.id})}:{label:i(e,n),href:null}}const ys=["network","domain","dst_ip","dst_port","src_ip","src_port","pname"],js=e=>o("",{tab:"trace",...Object.fromEntries(ys.map(t=>[t,e[t]||null]))});function ws(e){const t=new URLSearchParams(e),n=e=>t.get(e)??"";return n("domain")||n("dst_ip")?{network:"udp"===n("network")?"udp":"tcp",domain:n("domain"),dst_ip:n("dst_ip"),dst_port:n("dst_port"),src_ip:n("src_ip"),src_port:n("src_port"),pname:n("pname")}:null}const ks=a("settings",{card:"runtime"});function Ns(e,t=Kt){return e?fs(e,t):null}function Ms(e,t){const n=e.filter(e=>"main"===e.kind||"include"===e.kind);for(const s of n){const e=Jt(s.content).blocks.find(e=>e.name===t);if(e)return a("config",{tab:"source",source:s.id,line:String(e.line+1)})}return a("config",{tab:"source",source:n.find(e=>"main"===e.kind)?.id??null})}const _s=a("activity",{card:"mode"}),Ss=a("overview",{card:"limits"}),Cs=e=>a("nodes",{nodes:JSON.stringify(e)});let Es=!1;const Ls=new Set,zs={snapshot:()=>Es,set(e){Line truncated
@@ -1 +0,0 @@
function t(t){return function(){return t}}const i=Math.PI,s=2*i,h=1e-6,n=s-h;function e(t){this._+=t[0];for(let i=1,s=t.length;i<s;++i)this._+=arguments[i]+t[i]}class _{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?e:function(t){let i=Math.floor(t);if(!(i>=0))throw new Error(`invalid digits: ${t}`);if(i>15)return e;const s=10**i;return function(t){this._+=t[0];for(let i=1,h=t.length;i<h;++i)this._+=Math.round(arguments[i]*s)/s+t[i]}}(t)}moveTo(t,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+i}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,i){this._append`L${this._x1=+t},${this._y1=+i}`}quadraticCurveTo(t,i,s,h){this._append`Q${+t},${+i},${this._x1=+s},${this._y1=+h}`}bezierCurveTo(t,i,s,h,n,e){this._append`C${+t},${+i},${+s},${+h},${this._x1=+n},${this._y1=+e}`}arcTo(t,s,n,e,_){if(t=+t,s=+s,n=+n,e=+e,(_=+_)<0)throw new Error(`negative radius: ${_}`);let r=this._x1,a=this._y1,$=n-t,o=e-s,l=r-t,p=a-s,u=l*l+p*p;if(null===this._x1)this._append`M${this._x1=t},${this._y1=s}`;else if(u>h)if(Math.abs(p*$-o*l)>h&&_){let c=n-r,d=e-a,f=$*$+o*o,x=c*c+d*d,y=Math.sqrt(f),M=Math.sqrt(u),g=_*Math.tan((i-Math.acos((f+u-x)/(2*y*M)))/2),w=g/M,v=g/y;Math.abs(w-1)>h&&this._append`L${t+w*l},${s+w*p}`,this._append`A${_},${_},0,0,${+(p*c>l*d)},${this._x1=t+v*$},${this._y1=s+v*o}`}else this._append`L${this._x1=t},${this._y1=s}`;else;}arc(t,e,_,r,a,$){if(t=+t,e=+e,$=!!$,(_=+_)<0)throw new Error(`negative radius: ${_}`);let o=_*Math.cos(r),l=_*Math.sin(r),p=t+o,u=e+l,c=1^$,d=$?r-a:a-r;null===this._x1?this._append`M${p},${u}`:(Math.abs(this._x1-p)>h||Math.abs(this._y1-u)>h)&&this._append`L${p},${u}`,_&&(d<0&&(d=d%s+s),d>n?this._append`A${_},${_},0,1,${c},${t-o},${e-l}A${_},${_},0,1,${c},${this._x1=p},${this._y1=u}`:d>h&&this._append`A${_},${_},0,${+(d>=i)},${c},${this._x1=t+_*Math.cos(a)},${this._y1=e+_*Math.sin(a)}`)}rect(t,i,s,h){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+i}h${s=+s}v${+h}h${-s}Z`}toString(){return this._}}function r(t){let i=3;return t.digits=function(s){if(!arguments.length)return i;if(null==s)i=null;else{const t=Math.floor(s);if(!(t>=0))throw new RangeError(`invalid digits: ${s}`);i=t}return t},()=>new _(i)}function a(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}export{a,t as c,r as w};
@@ -1 +0,0 @@
import{D as e}from"./auth-CSMbhh2E.js";import{aM as t,bK as o}from"./index-HxEUeoab.js";import"./vendor-react-64fcanlc.js";import"./_commonjsHelpers-CXUWDbkB.js";const r="demo-session-";function n(){return{mode:"password",setup_required:!1}}const s={auth_setup:"/api/v1/auth/setup",auth_login:"/api/v1/auth/login"};function a(n,s){if("setup"===n)throw new t(409,"setup_already_completed","Setup already completed");if(s.username!==e.username||s.password!==e.password)throw new t(401,"invalid_credentials","Invalid credentials");return{token:r+o(),expires_at:new Date(Date.now()+432e5).toISOString()}}function i(e){return!!e?.startsWith(r)}function u(e){return{...e,discovery:async t=>{const o=await e.discovery(t);return"status"in o?{...o,links:{...o.links,...s,auth_logout:"/api/v1/auth/logout"},auth:{mode:"password",setup_required:!1,anonymous_loopback:!1}}:o}}}function d(e){const o=()=>Promise.reject(new t(401,"authentication_required","Authentication required")),r=async e=>(e?.throwIfAborted(),{name:"daeuniverse/native",api_major:1,links:{...s},auth:{mode:"password",setup_required:!1}});return new Proxy(e,{get:(e,t,n)=>"discovery"===t?r:"function"==typeof Reflect.get(e,t,n)?o:void 0})}export{n as mockDiscovery,a as mockOpenSession,i as mockSessionValid,d as refuseWithoutSession,u as withPasswordAuth};
@@ -1,2 +0,0 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./auth-BHtDKZwR.js","./index-HxEUeoab.js","./vendor-react-64fcanlc.js","./_commonjsHelpers-CXUWDbkB.js","./index-CcbWXWDN.css"])))=>i.map(i=>d[i]);
import{bz as a,dW as t,dX as o,t as n,_ as e}from"./index-HxEUeoab.js";const i=(a,t)=>new URL(a.replace(/\/+$/,"")+t,globalThis.location?.href),s=()=>e(()=>import("./auth-BHtDKZwR.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url),r={username:"demo",password:"demo"};async function c(e,r){if(a(e))return(await s()).mockDiscovery();const c=await t(i(e,"/api"),{headers:{Accept:"application/json"},cache:"no-store",signal:r});if(!c.ok)throw await o(c);const p=await c.json();if("dae/honk-native"===p.name)throw new n("login.engineOutdated");return p.auth}async function p(a,o){return 404!==(await t(i(a,"/api/v1/capabilities"),{headers:{Accept:"application/json"},cache:"no-store",signal:o})).status}function u(a){return"password"!==a.mode?"token":a.setup_required?"setup":"login"}async function h(n,e,r,c){if(a(n))return(await s()).mockOpenSession(e,r);const p=await t(i(n,`/api/v1/auth/${e}`),{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(r),cache:"no-store",signal:c},"setup"===e);if(!p.ok)throw await o(p,"POST");return p.json()}async function d(n,e,s){if(a(n))return;const r=await t(i(n,"/api/v1/auth/logout"),{method:"POST",headers:{Accept:"application/json",Authorization:"Bearer "+e},cache:"no-store",signal:s});if(!r.ok&&401!==r.status)throw await o(r,"POST")}export{r as D,p as a,d as c,c as d,h as o,u as s};
@@ -1 +0,0 @@
const t=/^(global|dns|upstream|routing|request|response|subscription|node|group|include|fallback)\b(?!\s*\()/,s=()=>({afterArrow:!1});function r(s,r){return s.sol()&&(r.afterArrow=!1),s.eatSpace()?null:s.match("#")?(s.skipToEnd(),"comment"):s.match(/^'[^']*'/)||s.match(/^"[^"]*"/)?"string":s.match("->")?(r.afterArrow=!0,"operator"):r.afterArrow&&s.match(/^[\w.-]+/)?(r.afterArrow=!1,"keyword"):(s.sol()||""===s.string.slice(0,s.pos).trim())&&s.match(t)?"keyword":s.match(/^\d+(\.\d+)*(\/\d+)?[a-z]*/)?"number":s.match(/^[\w.-]+(?=\s*\()/)?"propertyName":s.match(/^[\w.-]+(?=\s*:)/)?"variableName":s.match(/^[A-Za-z_][\w.-]*/)?null:s.match(/^[{}()&|!,:]/)?"punctuation":(s.next(),null)}class e{pos=0;string;constructor(t){this.string=t}sol(){return 0===this.pos}eatSpace(){const t=/^\s+/.exec(this.string.slice(this.pos));return!!t&&(this.pos+=t[0].length,!0)}match(t){const s="string"==typeof t?this.string.slice(this.pos).startsWith(t)&&t:t.exec(this.string.slice(this.pos));return s&&(this.pos+="string"==typeof s?s.length:s[0].length),s}skipToEnd(){this.pos=this.string.length}next(){return this.pos<this.string.length?this.string[this.pos++]:void 0}}function n(t){const s=[],n=t.split("\n"),o={afterArrow:!1};return n.forEach((t,i)=>{const a=new e(t);for(;a.pos<t.length;){const e=a.pos,n=r(a,o);s.push({text:t.slice(e,a.pos),type:n})}i<n.length-1&&s.push({text:"\n",type:null})}),s}export{r as d,s,n as t};
Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

@@ -1 +0,0 @@
function e(e,t){return`${e}-${(new Date).toISOString().slice(0,19).replace(/[:T]/g,"-")}.${t}`}function t(e,t,n){const r=URL.createObjectURL(new Blob([t],{type:n})),c=document.createElement("a");c.href=r,c.download=e,document.body.append(c),c.click(),c.remove(),setTimeout(()=>URL.revokeObjectURL(r),1e3)}function n(e){return e.map(e=>null==e?"":/[",\r\n]/.test(String(e))?'"'+String(e).replace(/"/g,'""')+'"':String(e)).join(",")}export{n as c,t as d,e};
@@ -1 +0,0 @@
import{a9 as e,f8 as n,q as t,f9 as s,fa as a,aq as r,fb as o,d6 as i,fc as l}from"./index-HxEUeoab.js";async function u(e,{input:n,resolve:t,recordTypes:s},a){if("query"!==t)return{traces:[await e.routingTrace({input:n,resolve:t},a)],query:null};const r=await e.dnsQuery(n.domain,s,a),o=[...new Set(["A","AAAA"].flatMap(e=>r.results.filter(n=>n.type===e).map(i).find(Boolean)??[]))],u=[];for(const i of o.length?o:[null])u.push(await e.routingTrace({input:i?{...n,dst_ip:i}:n,resolve:"none"},a));if(u.some(e=>e.instance_id!==u[0].instance_id||e.generation_id!==u[0].generation_id))throw l(409,"snapshot_unavailable","The routing generation changed during simulation; retry the query","ui.errGenerationChanged");return{traces:u,query:r}}function c({connection_id:i,network:l="all",state:u="all"}={},c=!0,f=!1){const d=e(),{data:w,error:p}=t(),y=s(w,w?.resources.flows.max_page_size);return n({key:["flows",{connection_id:i,network:l,state:u,limit:y}],every:r.lists,fetch:e=>o(n=>d.flows({network:l,state:u,connection_id:i,cursor:n,limit:y,detail:"full"},e),(e,n)=>e?(e.flows.push(...n.flows),e):{...n,flows:[...n.flows]})},{...a(w,p,c),paused:f})}function f(t){const s=e();return n({key:["flow",{id:t}],fetch:e=>t?s.flow(t,e):Promise.resolve(null),acceptEvent:e=>"flow.updated"!==e.event||e.data.resource_id===t},{enabled:null!==t})}function d(t=!0){const s=e();return n({key:["rules"],every:0,fetch:e=>s.rules(e)},{enabled:t})}function w(t=!0){const s=e();return n({key:["dnsRules"],every:0,fetch:e=>s.dnsRules(e)},{enabled:t})}export{c as a,f as b,w as c,u as r,d as u};
@@ -1 +0,0 @@
@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-cyrillic-wght-normal-DHeihy9e.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-vietnamese-wght-normal-B77OGAeV.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-latin-ext-wght-normal-BFabhjDY.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-latin-wght-normal-CjMECRfU.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;ascent-override:100%;descent-override:20%;line-gap-override:0%}
@@ -1 +0,0 @@
@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-4-wght-normal-BRbPMj-C.woff2)format("woff2");unicode-range:U+1F1E9-1F1F5,U+1F1F7-1F1FF,U+1F21A,U+1F232,U+1F234-1F237,U+1F250-1F251,U+1F300,U+1F302-1F308,U+1F30A-1F311,U+1F315,U+1F319-1F320,U+1F324,U+1F327,U+1F32A,U+1F32C-1F32D,U+1F330-1F357,U+1F359-1F37E;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-5-wght-normal-DI846rD9.woff2)format("woff2");unicode-range:U+FEE3,U+FEF3,U+FF03-FF04,U+FF07,U+FF0A,U+FF17-FF19,U+FF1C-FF1D,U+FF20-FF3A,U+FF3C,U+FF3E-FF5B,U+FF5D,U+FF61-FF65,U+FF67-FF6A,U+FF6C,U+FF6F-FF78,U+FF7A-FF7D,U+FF80-FF84,U+FF86,U+FF89-FF8E,U+FF92,U+FF97-FF9B,U+FF9D-FF9F,U+FFE0-FFE4,U+FFE6,U+FFE9,U+FFEB,U+FFED,U+FFFC,U+1F004,U+1F170-1F171,U+1F192-1F195,U+1F198-1F19A,U+1F1E6-1F1E8;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-6-wght-normal-ozUCEY9O.woff2)format("woff2");unicode-range:U+F0A7,U+F0B2,U+F0B7,U+F0C9,U+F0D8,U+F0DA,U+F0DC-F0DD,U+F0E0,U+F0E6,U+F0EB,U+F0FC,U+F101,U+F104-F105,U+F107,U+F10B,U+F11B,U+F14B,U+F18A,U+F193,U+F1D6-F1D7,U+F244,U+F27A,U+F296,U+F2AE,U+F471,U+F4B3,U+F610-F611,U+F880-F881,U+F8EC,U+F8F5,U+F8FF,U+F901,U+F90A,U+F92C-F92D,U+F934,U+F937,U+F941,U+F965,U+F967,U+F969,U+F96B,U+F96F,U+F974,U+F978-F979,U+F97E,U+F981,U+F98A,U+F98E,U+F997,U+F99C,U+F9B2,U+F9B5,U+F9BA,U+F9BE,U+F9CA,U+F9D0-F9D1,U+F9DD,U+F9E0-F9E1,U+F9E4,U+F9F7,U+FA00-FA01,U+FA08,U+FA0A,U+FA11,U+FB01-FB02,U+FDFC,U+FE0E,U+FE30-FE31,U+FE33-FE44,U+FE49-FE52,U+FE54-FE57,U+FE59-FE66,U+FE68-FE6B,U+FE8E,U+FE92-FE93,U+FEAE,U+FEB8,U+FECB-FECC,U+FEE0;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-21-wght-normal-DIu_1ZBI.woff2)format("woff2");unicode-range:U+9F83,U+9F85-9F8D,U+9F90-9F91,U+9F94-9F96,U+9F98,U+9F9B-9F9C,U+9F9E,U+9FA0,U+9FA2,U+9FF?,U+A001,U+A007,U+A025,U+A046-A047,U+A057,U+A072,U+A078-A079,U+A083,U+A085,U+A100,U+A118,U+A132,U+A134,U+A1F4,U+A242,U+A4A6,U+A4AA,U+A4B0-A4B1,U+A4B3,U+A9C1-A9C2,U+AC00-AC01,U+AC04,U+AC08,U+AC10-AC11,U+AC13-AC16,U+AC19,U+AC1C-AC1D,U+AC24,U+AC70-AC71,U+AC74,U+AC77-AC78,U+AC80-AC81,U+AC83,U+AC8C,U+AC90,U+AC9F-ACA0,U+ACA8-ACA9,U+ACAC,U+ACB0,U+ACBD,U+ACC1,U+ACC4,U+ACE0-ACE1,U+ACE4,U+ACE8,U+ACF3,U+ACF5,U+ACFC-ACFD,U+AD00,U+AD0C,U+AD11,U+AD1C,U+AD34,U+AD50,U+AD64,U+AD6C,U+AD70,U+AD74,U+AD7F,U+AD81,U+AD8C,U+ADC0,U+ADC8,U+ADDC,U+ADE0,U+ADF8-ADF9,U+ADFC,U+AE00,U+AE08-AE09,U+AE0B,U+AE30,U+AE34,U+AE38,U+AE40,U+AE4A,U+AE4C,U+AE54,U+AE68,U+AEBC,U+AED8,U+AF2C-AF2D;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-22-wght-normal-VXjdYcT-.woff2)format("woff2");unicode-range:U+9E30-9E33,U+9E35-9E3B,U+9E3E,U+9E40-9E44,U+9E46-9E4E,U+9E51,U+9E53,U+9E55-9E58,U+9E5A-9E5C,U+9E5E-9E63,U+9E66-9E6E,U+9E71,U+9E73,U+9E75,U+9E78-9E79,U+9E7C-9E7E,U+9E82,U+9E86-9E88,U+9E8B-9E8C,U+9E90-9E91,U+9E93,U+9E95,U+9E97,U+9E9D,U+9EA4-9EA5,U+9EA9-9EAA,U+9EB4-9EB5,U+9EB8-9EBA,U+9EBC-9EBF,U+9EC3,U+9EC9,U+9ECD,U+9ED0,U+9ED2-9ED3,U+9ED5-9ED6,U+9ED9,U+9EDC-9EDD,U+9EDF-9EE0,U+9EE2,U+9EE5,U+9EE7-9EEA,U+9EEF,U+9EF1,U+9EF3-9EF4,U+9EF6,U+9EF9,U+9EFB-9EFC,U+9EFE,U+9F0B,U+9F0D,U+9F10,U+9F14,U+9F17,U+9F19,U+9F22,U+9F29,U+9F2C,U+9F2F,U+9F31,U+9F37,U+9F39,U+9F3D-9F3E,U+9F41,U+9F4A-9F4B,U+9F51-9F52,U+9F61-9F63,U+9F66-9F67,U+9F80-9F81;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-23-wght-normal-4HrHKhpL.woff2)format("woff2");unicode-range:U+9C82-9C83,U+9C85-9C8C,U+9C8E-9C92,U+9C94-9C9B,U+9C9E-9CA3,U+9CA5-9CA7,U+9CA9,U+9CAB,U+9CAD-9CAE,U+9CB1-9CB7,U+9CB9-9CBD,U+9CBF-9CC0,U+9CC3,U+9CC5-9CC7,U+9CC9-9CD1,U+9CD3-9CDA,U+9CDC-9CDD,U+9CDF,U+9CE1-9CE3,U+9CE5,U+9CE9,U+9CEE-9CEF,U+9CF3-9CF4,U+9CF6,U+9CFC-9CFD,U+9D02,U+9D08-9D09,U+9D12,U+9D1B,U+9D1E,U+9D26,U+9D28,U+9D37,U+9D3B,U+9D3F,U+9D51,U+9D59,U+9D5C-9D5D,U+9D5F-9D61,U+9D6C,U+9D70,U+9D72,U+9D7A,U+9D7E,U+9D84,U+9D89,U+9D8F,U+9D92,U+9DAF,U+9DB4,U+9DB8,U+9DBC,U+9DC4,U+9DC7,U+9DC9,U+9DD7,U+9DDF,U+9DF2,U+9DF9-9DFA,U+9E0A,U+9E11,U+9E1A,U+9E1E,U+9E20,U+9E22,U+9E28-9E2C,U+9E2E-9E2F;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans SC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-sc-24-wght-normal-B58DWgHS.woff2)format("woff2");unicode-range:U+9A80,U+9A83,U+9A85,U+9A88-9A8A,U+9A8D-9A8E,U+9A90,U+9A92-9A93,U+9A95-9A96,U+9A98-9A99,U+9A9B-9AA2,U+9AA5,U+9AA7,U+9AAF-9AB1,U+9AB5-9AB6,U+9AB9-9ABA,U+9AC0-9AC4,U+9AC8,U+9ACB-9ACC,Line truncated
@@ -1 +0,0 @@
@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-0-wght-normal-AlCjBspo.woff2)format("woff2");unicode-range:U+1F921-1F930,U+1F932-1F935,U+1F937-1F939,U+1F940-1F944,U+1F947-1F94A,U+1F95?,U+1F962-1F967,U+1F969-1F96A,U+1F980-1F981,U+1F984-1F98D,U+1F990-1F992,U+1F994-1F996,U+1F9C0,U+1F9D0,U+1F9D2,U+1F9D4,U+1F9D6,U+1F9D8,U+1F9DA,U+1F9DC-1F9DD,U+1F9DF-1F9E2,U+1F9E5-1F9E6,U+20024,U+20487,U+20779,U+20C41,U+20C78,U+20D71,U+20E98,U+20EF9,U+2107B,U+210C1,U+22C51,U+233B4,U+24A12,U+2512B,U+2546E,U+25683,U+267CC,U+269F2,U+27657,U+282E2,U+2898D,U+29D5A,U+F0001-F0005,U+F0019,U+F009B,U+F0101-F0104,U+F012B,U+F01BA,U+F01D6,U+F0209,U+F0217,U+F0223-F0224,U+FC355,U+FE327,U+FE517,U+FEB97,U+FFFB4;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-6-wght-normal-WPkr41zz.woff2)format("woff2");unicode-range:U+FF78-FF7E,U+FF80-FF86,U+FF89-FF94,U+FF97-FF9E,U+FFB9,U+FFE0-FFE3,U+FFE9,U+FFEB,U+FFED,U+FFFC,U+1D7C7,U+1F004,U+1F0CF,U+1F141-1F142,U+1F150,U+1F154,U+1F158,U+1F15B,U+1F15D-1F15E,U+1F162-1F163,U+1F170-1F171,U+1F174,U+1F177-1F178,U+1F17D-1F17F,U+1F192-1F195,U+1F197-1F19A,U+1F1E6-1F1F5,U+1F1F7-1F1FF,U+1F21A,U+1F22F,U+1F232-1F237,U+1F239-1F23A,U+1F250-1F251,U+1F300,U+1F302-1F319;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-7-wght-normal-foGylaCC.woff2)format("woff2");unicode-range:U+FA0A,U+FA0C,U+FA11,U+FA17,U+FA19,U+FA1B,U+FA1D,U+FA26,U+FA2C,U+FB01,U+FDFC,U+FE0E,U+FE33-FE36,U+FE38-FE44,U+FE49-FE51,U+FE54,U+FE56-FE57,U+FE59-FE5C,U+FE5F-FE6A,U+FE8E,U+FE92-FE93,U+FEAE,U+FECB-FECC,U+FEE0,U+FEEC,U+FEF3,U+FF04,U+FF07,U+FF26-FF2C,U+FF31-FF32,U+FF35-FF37,U+FF39-FF3A,U+FF3C,U+FF3E-FF5B,U+FF5D,U+FF61-FF65,U+FF67-FF68,U+FF6A,U+FF6C-FF77;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-8-wght-normal-BHOicRI8.woff2)format("woff2");unicode-range:U+F78A-F78C,U+F78E,U+F792-F796,U+F798,U+F79C,U+F7F5,U+F812,U+F815,U+F876,U+F8F5,U+F8F8,U+F8FF,U+F901-F902,U+F904,U+F906,U+F909-F90A,U+F90F,U+F914,U+F918-F919,U+F91B,U+F91D,U+F91F,U+F923,U+F925,U+F92D-F92F,U+F934,U+F937-F938,U+F93D,U+F93F,U+F941,U+F949,U+F94C,U+F94E-F94F,U+F95A,U+F95D-F95E,U+F961-F963,U+F965-F970,U+F974,U+F976-F97A,U+F97C,U+F97E-F97F,U+F981,U+F983,U+F988,U+F98A,U+F98C,U+F98E,U+F996-F997,U+F999-F99A,U+F99C,U+F99F-F9A0,U+F9A3,U+F9A8,U+F9AD,U+F9B2-F9B6,U+F9B9-F9BA,U+F9BD-F9BE,U+F9C1,U+F9C4,U+F9C7,U+F9CA,U+F9CD,U+F9D0-F9D1,U+F9D3-F9D4,U+F9D7-F9D8,U+F9DC-F9DD,U+F9DF-F9E1,U+F9E4,U+F9E8-F9EA,U+F9F4,U+F9F6-F9F7,U+F9F9-F9FA,U+F9FC-FA01,U+FA03-FA04,U+FA06,U+FA08-FA09;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-19-wght-normal-C8pGE9DU.woff2)format("woff2");unicode-range:U+9EE5,U+9EE7,U+9EEE,U+9EF3-9EF4,U+9EF6-9EF7,U+9EF9,U+9EFB-9EFD,U+9EFF,U+9F07-9F09,U+9F10,U+9F14-9F15,U+9F19,U+9F22,U+9F29,U+9F2C,U+9F2F,U+9F31,U+9F34,U+9F37,U+9F39,U+9F3D-9F3E,U+9F41,U+9F4C-9F50,U+9F54,U+9F57,U+9F59,U+9F5C,U+9F5F-9F60,U+9F62-9F63,U+9F66-9F67,U+9F6A,U+9F6C,U+9F72,U+9F76-9F77,U+9F7F,U+9F84-9F85,U+9F88,U+9F8E,U+9F91,U+9F94-9F96,U+9F98,U+9F9A-9F9B,U+9F9F-9FA0,U+9FA2,U+9FA4,U+9FF?,U+A1F4,U+A4B0-A4B1,U+A4B3,U+A9C1-A9C2,U+AA31,U+AB34,U+AC00-AC01,U+AC04,U+AC08,U+AC10-AC11,U+AC13-AC16,U+AC19,U+AC1C-AC1D,U+AC24,U+AC70-AC71,U+AC74,U+AC77-AC78,U+AC80-AC81,U+AC83,U+AC8C,U+AC90,U+ACA0,U+ACA8-ACA9,U+ACAC,U+ACB0,U+ACB8-ACB9,U+ACBC-ACBD,U+ACC1,U+ACC4,U+ACE0-ACE1,U+ACE4,U+ACE8,U+ACF0-ACF1,U+ACF3,U+ACF5,U+ACFC;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;font-style:normal;font-weight:100 900;font-display:optional;src:url(../fonts/noto-sans-tc-20-wght-normal-C3zSSq0m.woff2)format("woff2");unicode-range:U+9D77,U+9D7A,U+9D7E,U+9D87,U+9D89,U+9D8F,U+9D91-9D93,U+9D96,U+9D98,U+9D9A,U+9DA1-9DA2,U+9DA5,U+9DA9,U+9DAB-9DAC,U+9DB1-9DB2,U+9DB5,U+9DB9-9DBC,U+9DBF-9DC2,U+9DC4,U+9DC7-9DC9,U+9DD3,U+9DD6,U+9DD9-9DDA,U+9DDE-9DDF,U+9DE2,U+9DE5-9DE6,U+9DE8,U+9DEF-9DF0,U+9DF2-9DF4,U+9DF8,U+9DFA,U+9DFD,U+9DFF,U+9E02,U+9E07,U+9E0A,U+9E11,U+9E15,U+9E18,U+9E1A-9E1B,U+9E1D-9E1E,U+9E20-9E23,U+9E25-9E26,U+9E2D,U+9E2F,U+9E33,U+9E35,U+9E3D-9E3F,U+9E42-9E43,U+9E45,U+9E48-9E4A,U+9E4C,U+9E4F,U+9E51,U+9E55,U+9E64,U+9E66,U+9E6B,U+9E6D-9E6E,U+9E70,U+9E73,U+9E75,U+9E78,U+9E80-9E83,U+9E87-9E88,U+9E8B-9E8C,U+9E90-9E91,U+9E93,U+9E96,U+9E9D,U+9EA1,U+9EA4,U+9EA6,U+9EA9-9EAB,U+9EAD,U+9EAF,U+9EB4,U+9EB7-9EBA,U+9EBE-9EBF,U+9ECC-9ECD,U+9ED0,U+9ED2,U+9ED4,U+9ED9-9EDA,U+9EDC-9EDD,U+9EDF-9EE0,U+9EE2;ascent-override:100%;descent-override:20%;line-gap-override:0%}@font-face{font-family:Noto Sans TC;foLine truncated
@@ -1 +0,0 @@
const e=["fastly","cdn","testingcf"];function t(t,i,o,a,s){const l=(e,t)=>`https://${e}.jsdelivr.net/gh/${i}@release/${t}`,r=Object.keys(o);return{id:t,urls:Object.fromEntries(r.map(e=>{return[e,[(t=o[e],`https://raw.githubusercontent.com/${i}/release/${t}`),l("fastly",o[e])]];var t})),mirrors:Object.fromEntries(r.map(t=>[t,e.slice(1).map(e=>l(e,o[t]))])),sizes:a,categories:s}}const i=[t("metacubex","MetaCubeX/meta-rules-dat",{geosite:"geosite.dat",geoip:"geoip.dat"},{geosite:42e5,geoip:166e5},null),t("metacubex-lite","MetaCubeX/meta-rules-dat",{geosite:"geosite-lite.dat",geoip:"geoip-lite.dat"},{geosite:176e3,geoip:207e3},{geosite:["abema","apple","applemusic","bahamut","bilibili","biliintl","cloudflare","cn","ehentai","github","google","microsoft","netflix","onedrive","openai","pixiv","private","proxy","proxymedia","spotify","telegram","tiktok","twitter","youtube"],geoip:["apple","bilibili","cloudflare","cloudfront","cn","facebook","google","jp","netflix","private","telegram","twitter"]}),t("loyalsoldier","Loyalsoldier/v2ray-rules-dat",{geosite:"geosite.dat",geoip:"geoip.dat"},{geosite:111e5,geoip:169e5},null)],o=(a="metacubex",i.find(e=>e.id===a));var a;function s(e){return/^https?:\/\/(?![^/?#]*@)[^#]*$/.test(e)&&URL.canParse(e)&&[...e].length<=4096}export{o as d,i as g,s as v};
@@ -1 +0,0 @@
import{A as e,aK as s}from"./index-HxEUeoab.js";import"./vendor-react-64fcanlc.js";import{s as t}from"./nodes-6sIn2I0s.js";function a(e){const{tokens:s}=t(e),a=t=>s[t]?e.slice(s[t].from,s[t].to):"",i=new Set(s.flatMap((e,s)=>"text"===e.kind&&e.parens>0&&":"===a(s+1)&&["(",","].includes(a(s-1))?[a(s)]:[]));return["geosite","geoip"].filter(e=>i.has(e))}function i(e,s,t){const a=s?.available?s.assets??[]:null,i=e=>t?.assets.some(s=>s.kind===e&&"0"===s.size_bytes)??!1,n=e&&a?e.filter(e=>!a.includes(e)||i(e)):(a??[]).filter(i),o=!!s?.can_update&&!!e?.length&&!!a&&e.every(e=>a.includes(e));return{missing:n.map(e=>`${e}.dat`),repair:o}}const n=(t,a)=>t.then(s=>(s&&e("positive",a("settings.geodataUpdated")),!!s),e=>(s(e,a,a("settings.geodataFailed")),!1));export{n as a,a as b,i as g};
@@ -1 +0,0 @@
:root[data-family=glass]{--rp-blur-scale:1;--rp-fill-boost:calc((1 - min(var(--rp-blur-scale), 1)) * .2);--rp-muted:#8e8e93;--rp-subtle:#48484a;--rp-text:#000;--rp-placeholder:#3c3c434d;--rp-love:#ff3b30;--rp-gold:#ff9500;--rp-rose:#ff9f0a;--rp-pine:#007aff;--rp-foam:#34c759;--rp-iris:#af52de;--rp-c1:#007aff;--rp-c2:#34c759;--rp-c3:#af52de;--rp-c4:#ff9500;--rp-c5:#5ac8fa;--rp-c6:#ff2d55;--rp-c7:#fc0;--rp-c8:#ff3b30;--rp-hl-low:#74748014;--rp-ctl:color-mix(in srgb, var(--rp-text) 5%, transparent);--rp-ctl-hover:color-mix(in srgb, var(--rp-text) 9%, transparent);--rp-ctl-pressed:color-mix(in srgb, var(--rp-text) 13%, transparent);--rp-hl-med:#78788029;--rp-hl-high:#78788033;--rp-on-accent:#fff;--rp-on-text:#fff;--rp-accent-text:var(--rp-text);--rp-info-text:var(--rp-text);--rp-positive-text:var(--rp-text);--rp-notice-text:var(--rp-text);--rp-accent-fill:#0040dd;--rp-on-accent-fill:#fff;--rp-negative-fill:#d70015;--rp-on-negative-fill:#fff;--rp-negative-text:var(--rp-negative-fill);--rp-line:#3c3c434a;--rp-track:var(--rp-ctl);--rp-knob:#fff;--rp-knob-shadow:0 1px 3px #0000001f, 0 3px 8px #00000014;--rp-switch-knob:#fff;--rp-switch-knob-shadow:0 1px 2px #00000040;--rp-underlay:#14141e3d;--rp-shadow-lg:0 2px 6px #0f14280f, 0 18px 48px #0f142829;--rp-solid-wall:#f2f2f7;--rp-solid-chrome:#f2f2f7;--rp-solid-card:#fff;--rp-solid-float:#fff;--rp-solid-edge:#c6c6c8;--rp-base:#fff6;--rp-surface:#fff6;--rp-overlay:#ffffff73;--rp-shadow:0 1px 2px #0f14280d, 0 8px 28px #0f142817;--rp-wall:radial-gradient(circle at 63% 36%, #ffcc00b3 0 120px, #fc00 121px), radial-gradient(circle at 30% 66%, #007aff00 0 190px, #007aff80 191px 199px, #007aff00 200px), linear-gradient(118deg, #fff0 0 60%, #fff9 60% 64%, #fff0 64%), linear-gradient(28deg, #ff2d5500 0 74%, #ff2d5573 74% 77%, #ff2d5500 77%), radial-gradient(34% 46% at 28% 30%, #007aff80, #007aff00 72%), radial-gradient(32% 44% at 84% 22%, #ff2d5580, #ff2d5500 72%), radial-gradient(40% 50% at 74% 84%, #ff95008c, #ff950000 72%), radial-gradient(36% 46% at 26% 88%, #34c75980, #34c75900 72%), radial-gradient(28% 36% at 52% 56%, #af52de73, #af52de00 72%), linear-gradient(160deg, #e3eaf8 0%, #f1e8f4 50%, #f8eee2 100%);--rp-chrome:rgba(255, 255, 255, calc(.3 + var(--rp-fill-boost)));--rp-chrome-filter:blur(calc(16px * var(--rp-blur-scale))) saturate(1.8);--rp-column:transparent;--rp-card-fill:rgba(255, 255, 255, calc(.4 + var(--rp-fill-boost)));--rp-card-filter:blur(calc(12px * var(--rp-blur-scale))) saturate(1.7);--rp-panel-fill:rgba(255, 255, 255, calc(.4 + var(--rp-fill-boost)));--rp-panel-filter:blur(calc(14px * var(--rp-blur-scale))) saturate(1.8) brightness(1.04);--rp-float-fill:rgba(255, 255, 255, calc(.74 + var(--rp-fill-boost)));--rp-float-filter:blur(calc(14px * var(--rp-blur-scale))) saturate(1.8) brightness(1.04);--rp-table-head:#ffffff80}:root[data-family=glass][data-scheme=dark],:root[data-flavour=frosted][data-scheme=dark],:root[data-flavour=tinted][data-scheme=dark]{--rp-muted:#8e8e93;--rp-subtle:#aeaeb2;--rp-text:#fff;--rp-placeholder:#ebebf54d;--rp-love:#ff453a;--rp-gold:#ff9f0a;--rp-rose:#ffb340;--rp-pine:#0a84ff;--rp-foam:#30d158;--rp-iris:#bf5af2;--rp-c1:#0a84ff;--rp-c2:#30d158;--rp-c3:#bf5af2;--rp-c4:#ff9f0a;--rp-c5:#64d2ff;--rp-c6:#ff375f;--rp-c7:#ffd60a;--rp-c8:#ff453a;--rp-hl-low:#7676802e;--rp-ctl:color-mix(in srgb, var(--rp-text) 10%, transparent);--rp-ctl-hover:color-mix(in srgb, var(--rp-text) 16%, transparent);--rp-ctl-pressed:color-mix(in srgb, var(--rp-text) 22%, transparent);--rp-hl-med:#78788052;--rp-hl-high:#7878805c;--rp-on-accent:#fff;--rp-on-text:#1c1c1e;--rp-positive-text:#30db5b;--rp-notice-text:#ffb340;--rp-accent-fill:#409cff;--rp-on-accent-fill:#1c1c1e;--rp-negative-fill:#ff6961;--rp-on-negative-fill:#1c1c1e;--rp-on-notice:#1c1c1e;--rp-line:#54545899;--rp-knob:#636366;--rp-knob-shadow:0 1px 3px #00000059;--rp-underlay:#0006;--rp-shadow-lg:0 2px 6px #0003, 0 20px 56px #00000073;--rp-solid-wall:#000;--rp-solid-chrome:#1c1c1e;--rp-solid-card:#1c1c1e;--rp-solid-float:#2c2c2e;--rp-solid-edge:#38383a}:root[data-family=glass][data-scheme=dark]{--rp-base:#1e1e2280;--rp-surface:#1e1e2280;--rp-overlay:#ffffff1a;--rp-shadow:0 1px 2px #0003, 0 10px 30px #0000004d;--rp-wall:radial-gradient(circle at 63% 36%, #ffd60a52 0 120px, #ffd60a00 121px), radial-gradient(circle at 30% 66%, #64d2ff00 0 190px, #64d2ff5c 191px 199px, #64d2ff00 200px), linear-gradient(118deg, #fff0 0 60%, #ffffff14 60% 64%, #fff0 64%), linear-gradient(28deg, #ff375f00 0 74%, #ff375f4d 74% 77%, #ff375f00 77%), radial-gradient(34% 46% at 28% 30%, #0a84ff6b, #0a84ff00 72%), radial-gradient(32% 44% at 84% 22%, #ff375f5c, #ff375f00 72%), radial-gradient(40% 50% at 74% 84%, #ff9f0a52, #ff9f0a00 72%), radial-gradient(36% 46% at 26% 88%, #30d15847, #30d15800 72%), radial-gradient(28% 36% at 52% 56%, #bf5af266, #bf5af200 72%), linear-gradient(160deg, #070a17 0%, #110c1e 50%, #05131a 100%);--rp-chrome:rgba(22, 22, 26, calc(.46 + var(--rp-fill-boost)));--rp-card-fill:rgba(30, 30, 34, calc(.5 + varLine truncated
@@ -1 +0,0 @@
import{l as e}from"./wallpaper-CEC7gitM.js";import"./vendor-react-64fcanlc.js";import"./_commonjsHelpers-CXUWDbkB.js";const r=""+new URL("glass-B8ENqf-S.css",import.meta.url).href;let o;function t(){if(o)return o;const e=document.head.querySelector("link[data-glass]");return e?.sheet?o=Promise.resolve():(e?.remove(),o=new Promise((e,t)=>{const s=document.createElement("link");s.rel="stylesheet",s.href=r,s.dataset.glass="",s.onload=()=>e(),s.onerror=()=>{o=void 0,t(new Error(`Unable to preload CSS for ${r}`))},document.head.insertBefore(s,document.head.querySelector('link[rel="stylesheet"], style'))}),o)}e();export{t as linkStylesheet};
Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Loaded 100 of 175 files, more files were not shown because too many files have changed in this diff. Show more