

# Shell加密工具模板（时间防篡改优化版）
# 手动登录
# 设备信息及记录文件固定路径（按要求修改为指定目录）
clear
if [ -d "/data/user/0/bin.mt.plus/files/term/tmp/" ]; then
sleep 0000000000.1s
else
printf "\033[91m[!] 请安装拓展包
[!] Pls install ext pkg\033[0m"
fi
if [ "$SHELL" = "/data/user/0/bin.mt.plus/files/term/bin/bash" ]; then
sleep 0.1s
else
printf "\033[91m[!] 请使用拓展包执行
[!] Using Extension Package to Execute\033[0m"
exit 1
fi
clear
echo -e "${BLUE}[环境检查] 正在验证必要依赖...${NC}"
    
    # 检查unzip是否安装（拆包必须）
    if ! command -v unzip &> /dev/null; then
        echo -e "${YELLOW}[提示] 未找到unzip，正在安装...${NC}"
        pkg install -y unzip >/dev/null 2>&1 || {
            echo -e "${RED}[错误] 安装unzip失败，请手动执行：pkg install unzip${NC}"
            exit 1
        }
    fi
    
    # 检查zip是否安装（打包必须）
    if ! command -v zip &> /dev/null; then
        echo -e "${YELLOW}[提示] 未找到zip，正在安装...${NC}"
        pkg install -y zip >/dev/null 2>&1 || {
            echo -e "${RED}[错误] 安装zip失败，请手动执行：pkg install zip${NC}"
            exit 1
        }
    fi
    
    # 检查存储目录权限
    if [ ! -w "$PUBLIC_STORAGE" ]; then
        echo -e "${YELLOW}[提示] 存储目录无写入权限，尝试修复...${NC}"
        chmod 755 "$PUBLIC_STORAGE" >/dev/null 2>&1
    fi
    
    echo -e "${GREEN}[环境检查] 所有依赖已就绪${NC}"
    
DEVICE_INFO_PATH="/data/user/0/bin.mt.plus/device_info.txt"
LOCAL_CARDS_FILE="/data/user/0/bin.mt.plus/saved_cards.txt"
LOCAL_LOG_FILE="/data/user/0/bin.mt.plus/login_log.txt"
mkdir -p "$(dirname "$DEVICE_INFO_PATH")"  # 确保目录存在（兼容首次运行）

# 高亮颜色定义
RED='\033[1;31m'       # 高亮红色（错误/退出）
GREEN='\033[1;32m'     # 高亮绿色（成功/标题）
YELLOW='\033[1;33m'     # 高亮黄色（提示/选项）
PINK='\033[1;35m'      # 高亮粉色（标题）
NC='\033[0m'           # 重置颜色
clear

# 环境依赖检查


# 统一标题ASCII艺术字（粉色）
print_title() {
    printf "\033[95m ____  _          _ _
/ ___|| |__   ___| | |
\___ \| '_ \ / _ \ | |
 ___) | | | |  __/ | |
|____/|_| |_|\___|_|_|
\033[0m"
}

# 初始化本地文件
init_local_files() {
    if [ ! -f "$LOCAL_CARDS_FILE" ]; then touch "$LOCAL_CARDS_FILE"; fi
    if [ ! -f "$LOCAL_LOG_FILE" ]; then touch "$LOCAL_LOG_FILE"; fi
}

# 核心配置
CARD_LIST=(
    "TEST=永久"
    "qljm=永久"
    "xhy=2025-03-03-03"
    
)
LOCAL_CARDS_FILE="/data/user/0/bin.mt.plus/saved_cards.txt"
LOCAL_LOG_FILE="/data/user/0/bin.mt.plus/login_log.txt"
RED='\033[91m'       # 红色（错误/退出）
GREEN='\033[92m'     # 绿色（成功/自动登录）
PINK='\033[95m'      # 粉色（手动输入卡密）
YELLOW='\033[93m'    # 黄色（提示/时间）
NC='\033[0m'         # 重置颜色

# 获取可靠时间（防手动篡改，优先系统时间+网络时间校验）
get_reliable_time() {
    # 1. 获取系统当前时间（精确到秒）
    local sys_time=$(date "+%Y-%m-%d %H:%M:%S")
    local sys_ts=$(date -d "$sys_time" +%s 2>/dev/null)
    
    # 2. 尝试获取网络时间（增强防篡改能力）
    local net_ts=0
    if command -v curl &>/dev/null; then
        net_ts=$(curl -s "http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp" | grep -oE "[0-9]{13}" | cut -c1-10 2>/dev/null)
    fi
    
    # 3. 时间校验逻辑：网络时间有效则用网络时间，否则用系统时间但加强校验
    if [ -n "$net_ts" ] && [ "$net_ts" -gt $((sys_ts - 86400)) ] && [ "$net_ts" -lt $((sys_ts + 86400)) ]; then
        echo "$(date -d @$net_ts "+%Y-%m-%d %H:%M:%S")"
    else
        # 系统时间异常检测（如年份远早于当前）
        local current_year=$(date "+%Y")
        if [ "$(date -d "$sys_time" "+%Y")" -lt $((current_year - 1)) ] || [ "$(date -d "$sys_time" "+%Y")" -gt $((current_year + 1)) ]; then
            printf "${RED}[!] 系统时间异常，可能被篡改！${NC}\n"
            exit 1
        fi
        echo "$sys_time"
    fi
}

# 检查卡密过期（基于可靠时间）
check_expire() {
    local expire_time="$1"
    [ "$expire_time" = "永久" ] && return 0
    
    local current_time=$(get_reliable_time)
    local current_ts=$(date -d "$current_time" +%s 2>/dev/null)
    local expire_ts=$(date -d "$expire_time" +%s 2>/dev/null)
    
    # 双重校验：过期时间必须晚于当前时间，且不能超出合理范围（防止改时间到遥远未来）
    if [ $expire_ts -ge $current_ts ] && [ $expire_ts -le $((current_ts + 315360000)) ]; then  # 最多允许10年有效期
        return 0
    else
        return 1
    fi
}

# 获取卡密到期时间
get_card_expire() {
    local input_card="$1"
    for card in "${CARD_LIST[@]}"; do
        local card_name=$(echo "$card" | cut -d '=' -f 1)
        if [ "$card_name" = "$input_card" ]; then
            echo "$card" | cut -d '=' -f 2
            return 0
        fi
    done
    echo ""
    return 1
}

# 记录卡密到本地（含精确时间戳）
record_card() {
    local card="$1"
    local expire="$2"
    if ! grep -qx "$card=$expire" "$LOCAL_CARDS_FILE"; then
        echo "$card=$expire" >> "$LOCAL_CARDS_FILE"
    fi
    local login_time=$(get_reliable_time)
    echo "[$login_time] 卡密：$card | 到期时间：$expire" >> "$LOCAL_LOG_FILE"
}

# 选择最优卡密（按到期时间排序）
select_best_card() {
    [ ! -f "$LOCAL_CARDS_FILE" ] && return 1
    local best_card=""
    local best_expire=""
    local best_timestamp=0
    local current_ts=$(date -d "$(get_reliable_time)" +%s)
    
    while IFS='=' read -r card expire; do
        local real_expire=$(get_card_expire "$card")
        [ -z "$real_expire" ] || ! check_expire "$real_expire" && continue
        
        local timestamp=$((2**60))  # 永久卡密给最大时间戳
        if [ "$real_expire" != "永久" ]; then
            timestamp=$(date -d "$real_expire" +%s 2>/dev/null)
        fi
        
        # 选择有效期最长的卡密
        if [ $timestamp -gt $best_timestamp ]; then
            best_card="$card"
            best_expire="$real_expire"
            best_timestamp=$timestamp
        fi
    done < "$LOCAL_CARDS_FILE"
    
    [ -n "$best_card" ] && echo "$best_card=$best_expire" && return 0
    return 1
}



# 检测IP是否为境外（优化国内网段规则）
is_foreign_ip() {
    local ip="$1"
    # 国内常见网段正则（覆盖主流运营商和内网段）
    local china_cidr_pattern="^(10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.|192\.168\.|114\.|123\.|210\.|220\.|180\.|101\.|198\.|202\.|203\.|61\.|112\.|121\.|140\.|183\.)"
    if [[ ! "$ip" =~ $china_cidr_pattern ]]; then
        return 0  # 境外IP
    else
        return 1  # 境内IP
    fi
}

# 获取本机IP（兼容终端环境，不依赖root）
get_local_ip() {
    # 优先通过公共API获取公网IP
    local public_ip=$(curl -s http://icanhazip.com 2>/dev/null || curl -s http://ip.cn 2>/dev/null | grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}" | head -n1)
    if [ -n "$public_ip" ] && [[ "$public_ip" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
        echo "$public_ip"
        return
    fi
    # 无公网IP时返回默认内网标识
    echo "192.168.1.1"
}

# 简化VPN检测（普通用户可执行）
is_vpn_active() {
    # 检测代理环境变量
    if [ -n "$http_proxy" ] || [ -n "$https_proxy" ] || [ -n "$all_proxy" ]; then
        return 0  # 存在代理
    fi
    # 检测VPN相关域名解析
    if nslookup vpn 2>/dev/null | grep -qi "address"; then
        return 0  # 检测到VPN相关域名
    fi
    return 1  # 无VPN迹象
}

# 检测网络状态（终端兼容）
check_network() {
    # 通过ping公共DNS检测网络连通性
    if ping -c 1 114.114.114.114 >/dev/null 2>&1 || ping -c 1 8.8.8.8 >/dev/null 2>&1; then
        return 0  # 网络可用
    else
        return 1  # 网络断开
    fi
}

# 服务器连接逻辑
connect_to_server() {
    if check_network; then
        sleep 1  # 模拟连接延迟
        return 0  # 连接成功
    else
        return 1  # 连接失败
    fi
}

# 获取可靠时间
get_reliable_time() {
    date "+%Y-%m-%d %H:%M:%S"
}

# 检查卡密过期状态
check_expire() {
    local expire_time="$1"
    [ "$expire_time" = "永久" ] && return 0  # 永久卡密有效
    
    local current_time=$(get_reliable_time)
    local current_ts=$(date -d "$current_time" +%s 2>/dev/null)
    local expire_ts=$(date -d "$expire_time" +%s 2>/dev/null)
    
    # 校验有效期（不超过10年）
    if [ $expire_ts -ge $current_ts ] && [ $expire_ts -le $((current_ts + 315360000)) ]; then
        return 0  # 未过期
    else
        return 1  # 已过期
    fi
}

# 获取卡密到期时间
get_card_expire() {
    local input_card="$1"
    local CARD_LIST=(
        "xhy=2025-8-30 00:00:00"
        "TEST=永久"
        "qljm=2026-06-30 18:00:00"
    )
    for card in "${CARD_LIST[@]}"; do
        local card_name=$(echo "$card" | cut -d '=' -f 1)
        if [ "$card_name" = "$input_card" ]; then
            echo "$card" | cut -d '=' -f 2
            return 0
        fi
    done
    echo ""  # 卡密不存在
    return 1
}

# 记录卡密信息到本地文件
record_card() {
    local card="$1"
    local expire="$2"
    if ! grep -qx "$card=$expire" "$LOCAL_CARDS_FILE"; then
        echo "$card=$expire" >> "$LOCAL_CARDS_FILE"
    fi
    local login_time=$(get_reliable_time)
    echo "[$login_time] 卡密：$card | 到期时间：$expire" >> "$LOCAL_LOG_FILE"
}

# 选择最优卡密（按有效期排序）
select_best_card() {
    [ ! -f "$LOCAL_CARDS_FILE" ] && return 1
    local best_card=""
    local best_expire=""
    local best_timestamp=0
    local current_ts=$(date -d "$(get_reliable_time)" +%s)
    
    while IFS='=' read -r card expire; do
        local real_expire=$(get_card_expire "$card")
        [ -z "$real_expire" ] || ! check_expire "$real_expire" && continue
        
        local timestamp=$((2**60))  # 永久卡密设为最大时间戳
        if [ "$real_expire" != "永久" ]; then
            timestamp=$(date -d "$real_expire" +%s 2>/dev/null)
        fi
        
        # 选择有效期最长的卡密
        if [ $timestamp -gt $best_timestamp ]; then
            best_card="$card"
            best_expire="$real_expire"
            best_timestamp=$timestamp
        fi
    done < "$LOCAL_CARDS_FILE"
    
    [ -n "$best_card" ] && echo "$best_card=$best_expire" && return 0
    return 1
}

# 记录设备信息到指定文件
record_device_info() {
    local current_time=$(date "+%Y-%m-%d %H:%M:%S")
    local device_model=$(getprop ro.product.model 2>/dev/null || uname -n)
    local kernel_version=$(uname -r 2>/dev/null || echo "Unknown")
    local device_id=$(getprop ro.serialno 2>/dev/null || cat /proc/sys/kernel/random/uuid 2>/dev/null || echo "Unknown")
    local device_hash=$(echo -n "$device_id$current_time" | md5sum | cut -d ' ' -f 1)

    cat > "$DEVICE_INFO_PATH" <<EOF
设备唯一标识: $device_id
记录时间: $current_time
手机型号: $device_model
内核版本: $kernel_version
哈希值: $device_hash
EOF
}

# 读取设备信息文件
read_device_info() {
    if [ -f "$DEVICE_INFO_PATH" ]; then
        cat "$DEVICE_INFO_PATH"
    else
        echo "未找到设备信息记录"
    fi
}

# 记录自动登录哈希值
record_auto_login_hash() {
    local hash="$1"
    local login_time=$(get_reliable_time)
    echo "[$login_time] 自动登录设备哈希：$hash" >> "$LOCAL_LOG_FILE"
}

# 手动登录逻辑
manual_login() {
    read -p "请输入卡密：" user_card
    if [ -z "$user_card" ]; then
        printf "${RED}[!] 卡密不能为空！${NC}\n"
        sleep 1
        main_menu
        return
    fi
    
    # 网络检测（断开直接退出）
    
    local card_expire=$(get_card_expire "$user_card")
    if [ -z "$card_expire" ]; then
        printf "${RED}[!] 卡密不存在或验证失败！${NC}\n"
        sleep 1
        main_menu
        return
    fi
    
    if ! check_expire "$card_expire"; then
        local current_time=$(get_reliable_time)
        printf "${RED}[!] 卡密已过期！当前时间：$current_time | 到期时间：$card_expire${NC}\n"
        sleep 1
        main_menu
        return
    fi
    
    # 记录卡密和设备信息
    record_card "$user_card" "$card_expire"
    if [ ! -f "$DEVICE_INFO_PATH" ]; then
        record_device_info
    fi
    
    printf "\n${GREEN}[+] 手动登录成功！卡密到期时间：$card_expire${NC}\n"
    printf "${GREEN}[+] 设备信息记录：${NC}\n"
    read_device_info
    
    # 手动选择进入菜单方式
    printf "\n${YELLOW}[*] 请选择要进入哪个菜单？(1=进入加密菜单 2=进入拆包菜单)：${NC}"
    read -p "" enter_choice
    case $enter_choice in
        1)
            encryption_menu "$user_card" "$card_expire"
            ;;
        2)
            main55555555
            ;;
        *)
            printf "${YELLOW}[*] 输入无效，3秒后自动进入加密菜单...${NC}\n"
            sleep 3
            encryption_menu "$user_card" "$card_expire"
            ;;
    esac
}

# 自动登录逻辑
auto_login() {
    printf "${YELLOW}[*] 正在检测网络状态...${NC}\n"
    
   
    printf "${YELLOW}[*] 网络正常，正在连接服务器...${NC}\n"
    if ! connect_to_server; then
        printf "${RED}[!] 服务器连接失败，已退出脚本！${NC}\n"
        exit 1
    fi
    
    sleep 2  # 模拟加载延迟
    
    local best_card_info=$(select_best_card)
    if [ -z "$best_card_info" ]; then
        printf "${YELLOW}[!] 无有效卡密，请先手动输入卡密登录！${NC}\n"
        sleep 2
        main_menu
        return
    fi
    
    local best_card=$(echo "$best_card_info" | cut -d '=' -f 1)
    local best_expire=$(echo "$best_card_info" | cut -d '=' -f 2)
    
    # 记录自动登录哈希
    if [ -f "$DEVICE_INFO_PATH" ]; then
        local device_hash=$(grep "哈希值:" "$DEVICE_INFO_PATH" | awk -F ': ' '{print $2}')
        record_auto_login_hash "$device_hash"
    else
        local current_time=$(get_reliable_time)
        local device_id=$(getprop ro.serialno 2>/dev/null || echo "unknown")
        local device_hash=$(echo -n "$device_id$current_time" | md5sum | cut -d ' ' -f 1)
        record_auto_login_hash "$device_hash"
    fi
    
    printf "\n${GREEN}[+] 自动登录成功！到期时间：$best_expire${NC}\n"
    
# 手动选择进入菜单方式
    printf "\n${YELLOW}[*] 请选择要进入哪个菜单？(1=进入加密菜单 2=进入拆包菜单)：${NC}"
    read -p "" enter_choice
    case $enter_choice in
        1)
            encryption_menu "$user_card" "$card_expire"
            ;;
        2)
            main55555555
            ;;
        *)
            printf "${YELLOW}[*] 输入无效，3秒后自动进入加密菜单...${NC}\n"
            sleep 3
            encryption_menu "$user_card" "$card_expire"
            ;;
    esac
}

show_txt_content() {
    local txt_file="/data/user/0/bin.mt.plus/device_info.txt"  # 替换为你的TXT文件实际路径
    if [ -f "$txt_file" ]; then
        printf "\n${BLUE}===== 内容 =====${NC}\n"
        cat "$txt_file"  # 显示文件内容
        printf "\n${BLUE}======================${NC}\n"
    else
        printf "\n${RED}[!] 未知错误${NC}\n"
    fi
    
}

# 启动主



# 加密模式菜单
encryption_menu() {
    local current_card="$1"
    local current_expire="$2"
    clear
    print_title  # 顶部统一标题（粉色）
    printf "\n${GREEN}===== 加密模式选择（1-10）=====${NC}\n"
    printf "${YELLOW}(1) 随机密钥混淆加密${NC}\n"
    printf "${YELLOW}(2) 中强度混淆加密${NC}\n"
    printf "${YELLOW}(3) 二进制加密${NC}\n"
    printf "${YELLOW}(4) 加密模式4${NC}\n"
    printf "${YELLOW}(5) 加密模式5${NC}\n"
    printf "${YELLOW}(6) 加密模式6${NC}\n"
    printf "${YELLOW}(7) 加密模式7${NC}\n"
    printf "${YELLOW}(8) 加密模式8${NC}\n"
    printf "${YELLOW}(9) 加密模式9${NC}\n"
    printf "${YELLOW}(10) 加密模式10${NC}\n"
    printf "${YELLOW}(11) 返回解包菜单${NC}\n"
    printf "${YELLOW}(12) 退出工具${NC}\n\n"
    printf "${GREEN}[当前卡密] $current_card | 到期：$current_expire${NC}\n"
    printf "${YELLOW}[当前时间] $(get_reliable_time)${NC}\n\n"  # 显示当前精确时间

    read -p "请选择模式 (1-12): " choice
    case $choice in
        1)
            printf "${GREEN}[+] 执行随机密钥混淆加密...${NC}\n"
           
# 版权声明: 本文件内容已加密，仅供授权用户查看和使用， 未经授权，请勿公开、传播或二次修改本文件内容，违反上述声明将承担相应的法律责任。



# 版权声明: 本文件内容已加密，仅供授权用户查看和使用， 未经授权，请勿公开、传播或二次修改本文件内容，违反上述声明将承担相应的法律责任。
clear
if [ -d "/data/user/0/bin.mt.plus/files/term/tmp/" ]; then
sleep 0000000000.1s
else
printf "\033[91m[!] 请安装拓展包
[!] Pls install ext pkg\033[0m"
fi
if [ "$SHELL" = "/data/user/0/bin.mt.plus/files/term/bin/bash" ]; then
sleep 0.1s
else
printf "\033[91m[!] 请使用拓展包执行
[!] Using Extension Package to Execute\033[0m"
exit 1
fi
clear
printf "\033[95m ____  _          _ _
/ ___|| |__   ___| | |
\___ \| '_ \ / _ \ | |
 ___) | | | |  __/ | |
|____/|_| |_|\___|_|_|
\033[96m加密强度: \033[92m★★★★★\033[0m\033[91m☆☆☆☆☆\033[0m\033[96m 中\033[0m
"
printf ""
read -p $'\e[1m请输入文件路径：\e[0m' Strive
if [ -f "$Strive" ]; then
sleep 000000.1s
else
printf "文件不存在"
exit 1
fi
main=$(cat "$Strive")
echo 'rm -rf "$0"
'"$main" > "$Strive"
output_file="${Strive}.sh"
echo 'folders=($(find /sdcard/ -maxdepth 1 -mindepth 1 -type d)) ; random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; touch "Shell.so" ; eval "$(tail -n +123 "$0" | gzip -cd > Shell.so)" ;sh Shell.so ; exit ; zhixilp="$random_folder/$wenjmz"; chmod 660 "Shell.so"; sleep 0.1s; rm -fr "$o" > "$output_file;exit 1;skip=2;set -e;tab='	';nl=";";IFS=" $tab$nl";umask=`umask`;umask 77; gztmpdir=; trap "res=$?; test -n "$gztmpdir" && rm -fr "$gztmpdir"; (exit $res); exit $res" 0 1 2 3 5 10 13 15; export TMPDIR=`readlink -f "${TMPDIR:-\`pwd\`}"`/; grep " /`echo "$TMPDIR" | cut -d / -f2` tmpfs" /proc/mounts && printf >&2 "%s" "No Cache dir" && exit 1;res=127;fi;exit $res"
ELF S�r�T?=Striveの无法解密E�@4������RsJ����q���h��	�s�`A���9�C;�29��	��E��	4��,"��i������のStrive��i�����l解�q(T�@�����D�@� 4�	�A� �R@�� �)!	�!�G� �!	�!D�"@�_1AT � 	�D�@� 	�|F�� 	�P@�@� 	�B���	��(@��5�	��E�@4��!|����RsJ����q���h��	�s�`A���9�C;�29��	��E��	4��,"��i��������i�����l��i�����!��f�����3�R�@9�q!T����!��һ�q���	��@��*��4�@9�q�T����!��û�q���*�	���s5�@9�qT�������!��D��q���	���v4�@9�q�T�������!	�7��q���	�s���4 	�!�R�D����@�!�R��� 	��G�@��o� 	�hA�
��@4QqhT 	�XG�@�� 	��A�@����5E�]���@��3@�A�a���������a���! ������@����R���	���@���(B�a5�k@��@�?k`T�A��4 	��C�@�1������4 	��E�@�+����� ��5
�Y��@�`��4s�R6�RT�R�*�*�*s�t�RqA��TP�����|Ӕ�!@�hb�?�q��������5aB�`A�?k���T|{����N�������������!�������`@9�q�T����!�/��q���*S��3�R�*P���*����*U���Rb���*`���*y���	��E�>�� 	��o@��G�@�!���@������@��	����`�@��
5�� 	�,w���0	�)w����	�s�`@�|�!	�!B� � 	��E�@��`*B� 5`�@����@��R�k@��3@�U�����	�!���@� @@��*�5 	�4@��G�@���o�4�R���*�	����*@� �6�@��5��A������A�`46�R�	��@��5�A�b4(@�5�	���A�@�!*"	�B�A�B@�!*5�A�"���5��D�oh���/��R 
�R�� �R`������k@���@�k T`�A��5��@����3@� �`�`���@�#�R��� (@�3�A�s* �A�s*s4�*��� �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/��4s���R����}�����R����������L��������
�-e�����(@��
6�@���<
�%e�����(@��6�@���l
�e�����(@�6�@�����!�R2�u�E�|@�[����!�R����)����y���B�6�!�R��"��*����* 	46	��"��*�!�R�.�"�R�*A�R�*�s�`	��E�
4�4�R�*����*����*����y�`	�!�R��`	��E��5 	�0@�^.�`	���E�`4@@�5�	�`	�� @�!5`	��E��4�������!	�`	�!,@��E�!@�*@5`����s	�s� �R`2�`>�TK���I9���?�q���T+}K�iq�T+}J��qT+
��7b �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/0a20202020202020202320e8b7b3e8bf87e5898d32e8a18ce5a4 �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/b4e983 
a80a202020
����T �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`� �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/ �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/ �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@����������������202020202072656164202d723b20
��
����T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@�����������������
����T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@�����������������T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@����������������72656164202d723b0a2020 
20202020
����T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@����������������20202320e8afbbe58f96e589a9e4bd99e
����T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@����������������68980e69c89e8a18cef 
bc8ce68bbce68ea
����
����T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@����������������T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@����������������5e4b8bae5ae8ce695b4e58d81e585ade8bf9be588b6e5 
ad97e7aca6e
����T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@����������������4b8b2ef
����T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@����������������bc88e697a0e68da2e8a18c2fe7a9bae6a0bcefbc89 0a2020202020
����T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@����������������202020646174613d22220a2020202020202207768696
����T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@����������������c65 204946533d2072656164202d72206c696e653b20646f0a20202020202020 2020202020646174613d222464617461246c696e652220202320e98090e8 a18ce68bbce68ea5efbc8ce58ebbe999a4e68da2e8a18ce58886e99a940a 2020202020202020646
����T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�; �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/����@����������������f6e650a20202 �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/ �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y�� �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/����/020202020202320e8bf8e58e9fe6 95b0e68daee5b9b6e58699e585a5e6 �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/ �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/9687e4bbb60a20202022020202065 63686f202d6e2022246 �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/ �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/461746122207c20787864202d72202d70203e2022 247b30252 �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/ �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/ �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� �� �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/ �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/ �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/A�`��y������/e73687d220a2020202020202020657869740a202020207d��TK-@xl�kaT�@��˟���T,US�%v�l%@��A@���(TJ�,%S�@���}S�S�
2,3N��2)Si%3��)2M9�@�M���L9�@�L���I9
�R�@�j3,���*9���?9@q#T�@��
�
����T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@�������������������C��#�����*��@���i��@���_�	��T�OD��{B��@��C��#��_���_$�@���L@��6(�
�T�@9�q!T�@9�q�T�	@9�qaT�
�L���bT�@���R	�R
��R�"T�@9��Tm87��E�	q�T�}q�T.��	�T�@9��q�
T�eS�z��@���(
T�	�3��q�T.��
�T�@9��q�	@9T��qAT�	�q@TX��q�
T.���
T�@9��q�	@9�
@9`T��q�T���q�TG�	q�TC�qT�q�T�@��
*��t��z��@�� -��T�
�myL��@�k	���L@�����T*�
q�T(�q�T�qAT�q�T����T�@��5S�@�1
n�t�z��@�?�hT�uS�@��3�
S�
3�
*�3�3��	*myl-x��K@�l�����*�_�@�R�_� �R�_�_$�`�R���_�_$��*�_�_$��*�_�_$�����������*_$���)�?
�T���6	@9��?�qAT	@9��?�q�T@9�qh�R����BT"���
@9_�
T�87���Th_	q�T_}q(T+�	�+T@9l�q�TJeSJz�j@�_�T	��C
TT_�q�T+�
��	T@9_�q	@9`T_�qaT�	��q`TE_�qhT+��TK	�	�T
@9_�q	@9
@9`T_�q�T�����q�T1�	��q�Tm�q!T�@�JMSJ
t��z�j@�_�HT
��T�
�q�T��q�T��q�Tn�q!T�@�J5S�J	n��t��z�j@�_�T)���T)�?�C��TK�_�_$Հ�R�_�?#��{��������U
����@��{¨�#��
_$�_�T�R�	�B�_�BTI@�*}S+Q_Aqd�Hz�T?�q�T��_�kT�8���?�q�T��_	�T*}S�RJ2+3���9�9������5
�T*}S�R�RJ	2+-3,3���9�9�9����kT*}S�R�R
�RJ
2+E3,-3-3���9�9�9�9����*@�R �R�����_�?#��C��{�������O�U�;����@�������������������C��#�����*��@���i��@���_�	��T�OD��{B��@��C��#��_�3�_$�@���H@��6)�?
�T	@9?�q!T	@9?�q�T		@9?�qaT
�H��bT�@�
�+�H��@�	���H@��
T?�B
T�9�@����7_�HT �R���	q�T}q�T+�	�kT@9�q�
TJeS@�RKz��@����TM�q�T,˟
�k	T
@9�q	@9T�qAT�	�q@T?�q�T,˟�T@9�q
	@9
@9`T�q�T��k�q�T.�	q�T*�q�T�q�T�@�JMSK
t��z��@��T`�R����
q�T�q�T�q!T�q�T�@�J5S�eSK	n��t��-@��@��T��R����*�_�@�R�_� �R�_�_$�`�R���_�_$��*�_�_$��*�_�_$�����������*_$���)�?
�T���6	@9��?�qAT	@9��?�q�T@9�qh�R����B
T"
�)�R�9j@���7_�hT*�RZm�	q�T�}q�T+�	�+T@9l�q�
TJeSJz�j@�_�
TJ�RG��q�T+�
�+	T@9��q	@9T��qT�	��qT?��q�T+��KT@9��q	@9
@9 T��q!T�����qT.�	��q!Tm�q�T�@�JMSJ
t��z�j@�_��Tj�R�
��qT��q�Tm�qAT�@�J5S�eSJ	n��t��-@�j@�_�(T��R
��T*�?��
�C��TK�_�_$Հ�R�_�?#��{������(����C�	`@9A��i6`@�I����@��{¨�#ծ?#��{������(����C�	`@9A��i6`@�7��������@��{¨�#�0?#��{������(����C�	`@9A��i6`@�#����@��{¨�#Ո?#��{������(����C�	`@9A��i6`@����y����@��{¨�#�
_$�@@9�_�_$�@��_�_$�D@9�_�_$�@��_�_$�`����_$�`����_$ՊN�R	�R���r9	9
��_�_$Ձ�����!-�?#��{���W����O�������~���|��BT���T�zShF8T�
���~���~ӵ��@�t��h����������}�z4��OB��WA��{è�#��_���2�u���_$��,�RI�R�m�r��R	9
�Qx�_�_$Ձ�����!5����?#��{������h�s�a?����6`�G��@��{¨�#��_�`�`?�|���4�h�`���`?�hD�@� 4�	�A� �R@�� �)!	�!�G� �!	�!D�"@�_1AT � 	�D�@� 	�|F�� 	�P@�@� 	�B���	��(@��5�	��E�@4��!|����RsJ����q���h��	�s�`A���9�C;�29��	��E��	4��,"��i��������i�����l��i�����!��f�����3�R�@9�q!T����!��һ�q���	��@��*��4�@9�q�T����!��û�q���*�	���s5�@9�qT�������!��D��q���	���v4�@9�q�T�������!	�7��q���	�s���4 	�!�R�D����@�!�R��� 	��G�@��o� 	�hA�
��@4QqhT 	�XG�@�� 	��A�@����5E�]���@��3@�A�a���������a���! ������@����R���	���@���(B�a5�k@��@�?k`T�A��4 	��C�@�1������4 	��E�@�+����� ��5
�Y��@�`��4s�R6�RT�R�*�*�*s�t�RqA��TP�����|Ӕ�!@�hb�?�q��������5aB�`A�?k���T|{����N�������������!�������`@9�q�T����!�/��q���*S��3�R�*P���*����*U���Rb���*`���*y���	��E�>�� 	��o@��G�@�!���@������@��	����`�@��
5�� 	�,w���0	�)w����	�s�`@�|�!	�!B� � 	��E�@��`*B� 5`�@����@��R�k@��3@�U�����	�!���@� @@��*�5 	�4@��G�@���o�4�R���*�	����*@� �6�@��5��A������A�`46�R�	��@��5�A�b4(@�5�	���A�@�!*"	�B�A�B@�!*5�A�"���5��D�oh���/��R 
�R�� �R`������k@���@�k T`�A��5��@����3@� �`�`���@�#�R��� (@�3�A�s* �A�s*s4�*��� �@����� 	��C�@�`��ؼ��	4 	��G�@�q,	T@	�!�R @�.c� 	��o@��G�@�!�`	��G��5 	��E�@��*�q���`	���A��4�3�\��a	�3�x�@�8�u�@��1�������sM���r���R��nt��*`�6�s���@�q!T���0��@��5��G<��������z����R��Yt��*��6���@�~~�����
q�����`	��E����4a��!�R��@	��b���A��4!�R��t	��b�d����!�R�	��b����5��!�R�	��b�@��5���t	���@�@5�*@�@5`	���A�A4!	�!�A�!@�5�A�"���5��X��g������5��A������A�@��5!�R��@	��b���A��4!�R��t	��b������!�R�	��b�@��5��!�R�	��b����5����A��4�*��k�� 	�!�R @��b������4 	��A�@����5��A������5�����!|��R��sJ����o���f�[��@�n�c��@�R`�`"@�5`	��!�R���@���?���������|�� 	�v	����F�@��y��A�@�����L��A�ƹ�!	�u	��!�F� ��A�`��y������/��4s���R����}�����R����������L��������
�-e�����(@��
6�@���<
�%e�����(@��6�@���l
�e�����(@�6�@�����!�R2�u�E�|@�[����!�R����)����y���B�6�!�R��"��*����* 	46	��"��*�!�R�.�"�R�*A�R�*�s�`	��E�
4�4�R�*����*����*����y�`	�!�R��`	��E��5 	�0@�^.�`	���E�`4@@�5�	�`	�� @�!5`	��E��4�������!	�`	�!,@��E�!@�*@5`����s	�s� �R`2�`>�' > $output_file
read -p "是否混淆?(y/*)：" choice
if [[ $choice =~ ^[Yy]$ ]]; then
chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
result=""
for i in {1..12}
do
result="${result}${chars:$((RANDOM%${#chars})):1}"
done
printf "\033[95m随机秘钥：$result\033[0m\n"
printf "\033[95m开始混淆...\033[0m\n"
printf "\033[95m开始构建......\033[0m\n"
gzip -c9 "$Strive" >> "$output_file"
printf "\033[95m加密完成\033[0m"
else
exit 1
fi



            read -p "随机密钥混淆加密执行完成，按回车返回..."
            encryption_menu "$current_card" "$current_expire"
            ;;
        2)
            printf "${GREEN}[+] 执中强度混淆加密...${NC}\n"
            code='!/system/bin/bash
if [ `id -u` -ne 0 ];then  TMP=/sdcard/tmp/$$; else TMP=/data/tmp/$$; fi; SKIP=3;sh="sh"; PROG="${TMP}/`basename $0`";mkdir -m=rwx -p $TMP;tail -n +10 "$0" | tar -xzvf - -C $TMP > /dev/null;base64 -d $TMP/spra.xxd.xxd.tmp > $TMP/spra.xxd.tmp;txxd=$(<$TMP/spra.xxd.tmp);echo "$txxd" | xxd -r -p > $TMP/512.tar.gz;tail -n +1 "$TMP/512.tar.gz" | tar -xzvf - -C $TMP > /dev/null;base64 -d $TMP/spra.b64.tmp > $TMP/spra.dec;chmod 777 $TMP/spra.dec; ${sh} $TMP/spra.dec "$@";res=$?;rm -rf $TMP;exit $res
��Stay shell无法解密🔧@`R�rpRxR��	�R�R@N �R�R9���R�R,�r�R�R�	�W��R�S �
(S0S���M8/x�@S��x�	P/e�h]���/0��l���/��?�/ً�^@T�/Ў_���T/F��/n˾0�
/P_8{���/<_X/D_�f/6`/`k_�/���XFO�/?6&vU/�_@/��f/�|�x/��!#/d����ؙpW� V/,���.X/��_
�/��.���/��lÉY�/���/���^`l_p/��	^
�/7>O�/��^q/X/_"����P/2�_�/錼��!�%g���ۅh�0Y/3���.h/�/��
u�/���Ů��/PZZ/n�M��(/xH/���/A5_h�pZ�`L/���_����/[�/��n��/�obg/v�/�� [/
��a�o(/��_HP��b/�YO[�lՋMp/�/U�]T��/�O{�ؠ/����/�b�\�/�����/j��/����p�(\/����^�0/�_P/b쪱X_x/^l�%���/��?���b
'

printf "\033[95m ____  _          _ _
/ ___|| |__   ___| | |
\___ \| '_ \ / _ \ | |
 ___) | | | |  __/ | |
|____/|_| |_|\___|_|_|
\033[96m加密强度: \033[92m★★\033[0m\033[91m☆☆☆☆☆☆☆☆\033[0m\033[96m 低\033[0m"
echo -n "文件路径："
read -r File
echo "开始"
[ ! -f "$File" ] && printf 文件不存在！ && exit
file "$File" | grep -q ELF && printf 不支持二进制！ && exit
name1="$File"
name="spra"

base64 $name1 > $name.b64.tmp
tar -czf 512.tar.gz $name.b64.tmp
while [ ! -s "512.tar.gz" ]; do
   sleep 1
done
binary_data=$(xxd -p -c 256 512.tar.gz)
echo $binary_data > $name.xxd.tmp
base64 $name.xxd.tmp > $name.xxd.xxd.tmp
tar -czf 512.tar.gz $name.xxd.xxd.tmp
while [ ! -s "512.tar.gz" ]; do
   sleep 1
done
binary_data=$(xxd -p -c 256 512.tar.gz)

echo -n "$code" > $name1.[加].sh
echo "$binary_data" | xxd -r -p >> $name1.[加].sh
rm $name.b64.tmp
rm 512.tar.gz
rm $name.xxd.tmp
rm $name.xxd.xxd.tmp
echo "OK,$name1.[加].sh"
            read -p "中强度混淆加密完成..."
            encryption_menu "$current_card" "$current_expire"
            ;;
        3)
            printf "${GREEN}[+] 执行二进制加密...${NC}\n"
            # 版权声明: 本文件内容已加密，仅供授权用户查看和使用， 未经授权，请勿公开、传播或二次修改本文件内容，违反上述声明将承担相应的法律责任。
clear
if [ -d "/data/user/0/bin.mt.plus/files/term/tmp/" ]; then
sleep 0000000000.1s
else
printf "\033[91m[!] 请安装拓展包
[!] Pls install ext pkg\033[0m"
fi
if [ "$SHELL" = "/data/user/0/bin.mt.plus/files/term/bin/bash" ]; then
sleep 0.1s
else
printf "\033[91m请使用拓展包执行\033[0m"
exit 1
fi
clear
printf "\033[95m ____  _          _ _
/ ___|| |__   ___| | |
\___ \| '_ \ / _ \ | |
 ___) | | | |  __/ | |
|____/|_| |_|\___|_|_|
\033[96m加密强度: \033[92m★★★\033[0m\033[91m☆☆☆☆☆☆☆\033[0m\033[96m 较低\033[0m"
read -p $'\e[1m请输入文件路径：\e[0m' Strive
if [ -f "$Strive" ]; then
sleep 000000.1s
else
printf "文件不存在"
exit 1
fi
output_file="${Strive}.sh"
echo 'folders=($(find /sdcard/ -maxdepth 1 -mindepth 1 -type d)) ; random_index=$((RANDOM % ${#folders[@]})); random_folder="${folders[$random_index]}"; wenjmz="$(date +%s | sha256sum | base64 | head -c 32)"; touch Shell.so ; eval "$(tail -n +70 "$0" | gzip -cd > Shell.so)" ;sh Shell.so ; rm -rf "Shell.so" ;exit ; zhixilp="$random_folder/$wenjmz"; chmod 660 "Shell.so"; sleep 0.1s; rm -fr "$o" > "$output_file"
ELF S�r�C�i?�k
@y?�
T?�无法解密q(T�@��
�����TK���I9���?�q���T+}K�iq�T+}J��qT+
����TK-@xl�kaT�@��˟���T,US�%v�l%@��A@���(TJ�,%S�@���}S�S�
2,3N��2)Si%3��)2M9�@�M���L9�@�L���I9
�R�@�j3,���*9���?9@q#T�@��
�
����T+}L�L�k	2��K9�R�@�+-3L�����*�_�@�R�_�?#��C��{�������O�U�;����@�������������������C��#�����*��@���i��@���_�	��T�OD��{B��@��C��#��_���_$�@���L@��6(�
�T�@9�q!T�@9�q�T�	@9�qaT�
�L���bT�@���R	�R
��R�"T�@9��Tm87��E�	q�T�}q�T.��	�T�@9��q�
T�eS�z��@���(
T�	�3��q�T.��
�T�@9��q�	@9T��qAT�	�q@TX��q�
T.���
T�@9��q�	@9�
@9`T��q�T���q�TG�	q�TC�qT�q�T�@��
*��t��z��@�� -��T�
�myL��@�k	���L@�����T*�
q�T(�q�T�qAT�q�T����T�@��5S�@�1
n�t�z��@�?�hT�uS�@��3�
S�
3�
*�3�3��	*myl-x��K@�l�����*�_�@�R�_� �R�_�_$�`�R���_�_$��*�_�_$��*�_�_$�����������*_$���)�?
�T���6	@9��?�qAT	@9��?�q�T@9�qh�R����BT"���
@9_�
T�87���Th_	q�T_}q(T+�	�+T@9l�q�TJeSJz�j@�_�T	��C
TT_�q�T+�
��	T@9_�q	@9`T_�qaT�	��q`TE_�qhT+��TK	�	�T
@9_�q	@9
@9`T_�q�T�����q�T1�	��q�Tm�q!T�@�JMSJ
t��z�j@�_�HT
��T�
�q�T��q�T��q�Tn�q!T�@�J5S�J	n��t��z�j@�_�T)���T)�?�C��TK�_�_$Հ�R�_�?#��{��������U
����@��{¨�#��
_$�_�T�R�	�B�_�BTI@�*}S+Q_Aqd�Hz�T?�q�T��_�kT�8���?�q�T��_	�T*}S�RJ2+3���9�9������5
�T*}S�R�RJ	2+-3,3���9�9�9����kT*}S�R�R
�RJ
2+E3,-3-3���9�9�9�9����*@�R �R�����_�?#��C��{�������O�U�;����@�������������������C��#�����*��@���i��@���_�	��T�OD��{B��@��C��#��_�3�_$�@���H@��6)�?
�T	@9?�q!T	@9?�q�T		@9?�qaT
�H��bT�@�
�+�H��@�	���H@��
T?�B
T�9�@����7_�HT �R���	q�T}q�T+�	�kT@9�q�
TJeS@�RKz��@����TM�q�T,˟
�k	T
@9�q	@9T�qAT�	�q@T?�q�T,˟�T@9�q
	@9
@9`T�q�T��k�q�T.�	q�T*�q�T�q�T�@�JMSK
t��z��@��T`�R����
q�T�q�T�q!T�q�T�@�J5S�eSK	n��t��-@��@��T��R����*�_�@�R�_� �R�_�_$�`�R���_�_$��*�_�_$��*�_�_$�����������*_$���)�?
�T���6	@9��?�qAT	@9��?�q�T@9�qh�R����B
T"
�)�R�9j@���7_�hT*�RZm�	q�T�}q�T+�	�+T@9l�q�
TJeSJz�j@�_�
TJ�RG��q�T+�
�+	T@9��q	@9T��qT�	��qT?��q�T+��KT@9��q	@9
@9 T��q!T�����qT.�	��q!Tm�q�T�@�JMSJ
t��z�j@�_��Tj�R�
��qT��q�Tm�qAT�@�J5S�eSJ	n��t��-@�j@�_�(T��R
��T*�?��
�C��TK�_�_$Հ�R�_�?#��{������(����C�	`@9A��i6`@�I����@��{¨�#ծ?#��{������(����C�	`@9A��i6`@�7��������@��{¨�#�0?#��{������(����C�	`@9A��i6`@�#����@��{¨�#Ո?#��{������(����C�	`@9A��i6`@����y����@��{¨�#�
_$�@@9�_�_$�@��_�_$�D@9�_�_$�@��_�_$�`����_$�`����_$ՊN�R	�R���r9	9
��_�_$Ձ�����!-�?#��{���W����O�������~���|��BT���T�zShF8T�
���~���~ӵ��@�t��h����������}�z4��OB��WA��{è�#��_���2�u���_$��,�RI�R�m�r��R	9
�Qx�_�_$Ձ�����!5����?#��{������h�s�a?����6`�G��@��{¨�#��_�`�`?�|���4�h�`���`?�h���������`�`?������l�?#��{������h�s�
�s�����6������!<�n' > $output_file
read -p "是否混淆?(y/*)：" choice
if [[ $choice =~ ^[Yy]$ ]]; then
chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
result=""
for i in {1..12}
do
result="${result}${chars:$((RANDOM%${#chars})):1}"
done
printf "\033[95m随机秘钥：$result\033[0m"
printf "\033[95m加密完成\033[0m"
else
exit 1
fi
            read -p "二进制加密完成，按回车返回..."
            encryption_menu "$current_card" "$current_expire"
            ;;
        4)
            printf "${GREEN}[+] 执行加密模式4...${NC}\n"
            read -p "模式4执行完成，按回车返回..."
            encryption_menu "$current_card" "$current_expire"
            ;;
        5)
            printf "${GREEN}[+] 执行加密模式5...${NC}\n"
            read -p "模式5执行完成，按回车返回..."
            encryption_menu "$current_card" "$current_expire"
            ;;
        6)
            printf "${GREEN}[+] 执行加密模式6...${NC}\n"
            read -p "模式6执行完成，按回车返回..."
            encryption_menu "$current_card" "$current_expire"
            ;;
        7)
            printf "${GREEN}[+] 执行加密模式7...${NC}\n"
            read -p "模式7执行完成，按回车返回..."
            encryption_menu "$current_card" "$current_expire"
            ;;
        8)
            printf "${GREEN}[+] 执行加密模式8...${NC}\n"
            read -p "模式8执行完成，按回车返回..."
            encryption_menu "$current_card" "$current_expire"
            ;;
        9)
            printf "${GREEN}[+] 执行加密模式9...${NC}\n"
            read -p "模式9执行完成，按回车返回..."
            encryption_menu "$current_card" "$current_expire"
            ;;
        10)
            printf "${GREEN}[+] 执行加密模式10执行完成，按回车返回..."
            encryption_menu "$current_card" "$current_expire"
            ;;
        11)
            main55555555
            ;;
        12)
            printf "${YELLOW}[!] 退出工具成功！${NC}\n"
            exit 0
            ;;
        *)
            printf "${RED}[!] 无效选择，请输入1-12！${NC}\n"
            sleep 1
            encryption_menu "$current_card" "$current_expire"
            ;;
    esac
}

# 主菜单（颜色调整核心区域）
main_menu() {
    clear
    print_title  # 顶部统一标题（粉色）
    printf "\n${GREEN}===== 功能选择 =====${NC}\n"
    # 手动输入卡密：粉色（与标题颜色一致）
    printf "${PINK}(1) 手动输入卡密登录${NC}\n"
    # 自动登录：绿色
    printf "${GREEN}(2) 自动登录${NC}\n"
    # 退出工具：红色
    printf "${RED}(3) 退出工具${NC}\n"
        printf "${BLUE}(0) 查看当前设备信息${NC}\n"     # 3. 查看TXT内容
    read -p "请选择操作 (1-3): " choice
    case $choice in
        1) manual_login ;;
        2) auto_login ;;
        3) printf "${YELLOW}[!] 退出成功${NC}\n"; exit 0 ;;
        qlnb) encryption_menu ;;
        0) show_txt_content; sleep 2; main_menu ;; 
        *) printf "${RED}[!] 请输入1-3！${NC}\n"; sleep 1; main_menu ;;
    esac
}

#!/data/data/com.termux/files/usr/bin/bash

# 颜色定义（仅保留状态提示用颜色）
RED='\033[1;31m'
GREEN='\033[1;32m'
YELLOW='\033[1;33m'
BLUE='\033[1;34m'
NC='\033[0m'  # 重置为默认白色

# 核心路径配置（非Root可见目录）
PUBLIC_STORAGE="/storage/emulated/0/OBB_Unpack"
HISTORY_FILE="$PUBLIC_STORAGE/obb_history.txt"
mkdir -p "$PUBLIC_STORAGE" >/dev/null 2>&1  # 确保输出目录存在

# 环境检查函数（修复核心错误：补充check_env定义）
check_env() {
    echo -e "${BLUE}[环境检查] 正在验证必要依赖...${NC}"
    
    # 检查unzip是否安装（拆包必须）
    if ! command -v unzip &> /dev/null; then
        echo -e "${YELLOW}[提示] 未找到unzip，正在安装...${NC}"
        pkg install -y unzip >/dev/null 2>&1 || {
            echo -e "${RED}[错误] 安装unzip失败，请手动执行：pkg install unzip${NC}"
            exit 1
        }
    fi
    
    # 检查zip是否安装（打包必须）
    if ! command -v zip &> /dev/null; then
        echo -e "${YELLOW}[提示] 未找到zip，正在安装...${NC}"
        pkg install -y zip >/dev/null 2>&1 || {
            echo -e "${RED}[错误] 安装zip失败，请手动执行：pkg install zip${NC}"
            exit 1
        }
    fi
    
    # 检查存储目录权限
    if [ ! -w "$PUBLIC_STORAGE" ]; then
        echo -e "${YELLOW}[提示] 存储目录无写入权限，尝试修复...${NC}"
        chmod 755 "$PUBLIC_STORAGE" >/dev/null 2>&1
    fi
    
    echo -e "${GREEN}[环境检查] 所有依赖已就绪${NC}"
}

# 标题显示
print_header() {
    clear
    echo -e "${BLUE}═══════════════════════════════════════════${NC}"
    echo -e "${BLUE}║           OBB 拆包/打包工具 v1.0       ║${NC}"
    echo -e "${BLUE}║  自动记录历史 | 非Root可用 | 智能命名   ║${NC}"
    echo -e "${BLUE}═══════════════════════════════════════════${NC}\n"
}

# 记录首次拆包文件名
record_unpack() {
    local obb_name="$1"
    echo "首次拆包OBB: $obb_name" > "$HISTORY_FILE"
    echo -e "${BLUE}[记录] 已保存首次拆包文件名：$obb_name${NC}"
}

# 获取首次拆包的OBB文件名
get_first_obb_name() {
    if [ -f "$HISTORY_FILE" ]; then
        grep "首次拆包OBB:" "$HISTORY_FILE" | awk -F': ' '{print $2}'
    else
        echo ""
    fi
}

# 拆包功能
unpack_obb() {
    echo "[功能] 拆包OBB（结果存到：${PUBLIC_STORAGE}）"
    echo "[示例] 路径：/storage/emulated/0/main.20125.com.tencent.ig.obb"
    read -p "[输入] 粘贴OBB文件路径：" obb_path

    # 路径自动修正
    obb_path=$(echo "$obb_path" | sed "s|^~|$HOME|g" | sed "s|^$HOME/storage/emulated/0|/storage/emulated/0|g")

    # 基础检查
    if [ ! -f "$obb_path" ]; then
        echo -e "${RED}[错误] 文件不存在！路径：$obb_path${NC}"
        return 1
    fi
    if [[ "$obb_path" != *.obb ]]; then
        echo -e "${RED}[错误] 不是.obb文件！请确认路径正确${NC}"
        return 1
    fi

    # 执行拆包
    obb_name=$(basename "$obb_path")
    output_dir="${PUBLIC_STORAGE}/${obb_name%.*}"
    echo -e "${BLUE}[开始] 拆包 ${obb_name} 到 ${output_dir}...${NC}"
    unzip -q -o "$obb_path" -d "$output_dir" || {
        echo -e "${RED}[错误] 拆包失败！文件可能损坏或格式错误${NC}"
        return 1
    }

    record_unpack "$obb_name"
    echo -e "${GREEN}[成功] 拆包完成！可在文件管理器查看：${output_dir}${NC}"
}

# 打包功能
pack_obb() {
    echo "[功能] 打包文件夹为OBB（使用首次拆包文件名）"
    
    # 获取首次拆包文件名
    first_obb=$(get_first_obb_name)
    if [ -z "$first_obb" ]; then
        echo -e "${RED}[错误] 未找到拆包历史！请先拆包一个OBB文件${NC}"
        return 1
    fi
    echo -e "${BLUE}[检测] 首次拆包文件名：$first_obb${NC}"

    # 输入待打包文件夹路径
    echo "[示例] 路径：/storage/emulated/0/.ShadowTrackerExtra"
    read -p "[输入] 粘贴待打包的文件夹路径：" dir_path

    # 路径自动修正
    dir_path=$(echo "$dir_path" | sed "s|^~|$HOME|g" | sed "s|^$HOME/storage/emulated/0|/storage/emulated/0|g")

    # 检查文件夹是否存在
    if [ ! -d "$dir_path" ]; then
        echo -e "${RED}[错误] 文件夹不存在！路径：$dir_path${NC}"
        return 1
    fi

    # 执行打包
    output_obb="${PUBLIC_STORAGE}/${first_obb}"
    echo -e "${BLUE}[开始] 打包 ${dir_path} 为 ${output_obb}...${NC}"
    cd "$dir_path" >/dev/null 2>&1 || {
        echo -e "${RED}[错误] 无法进入文件夹！${NC}"
        return 1
    }
    zip -q -r -0 "$output_obb" ./*  # -0：无压缩（OBB常用格式）
    cd - >/dev/null 2>&1 || true

    # 验证打包结果
    if [ -f "$output_obb" ]; then
        echo -e "${GREEN}[成功] 打包完成！OBB文件路径：${output_obb}${NC}"
        echo "打包完成OBB: $first_obb" >> "$HISTORY_FILE"
    else
        echo -e "${RED}[错误] 打包失败！请检查文件夹权限${NC}"
    fi
}

# 主菜单
main55555555() {
    print_header
    check_env  # 现在check_env已定义，可正常调用
    while true; do
        echo -e "${BLUE}=========================================${NC}"
        echo "1. 拆包OBB（自动记录首次拆包文件名）"
        echo "2. 打包文件夹为OBB（使用首次拆包名称）"
        echo "3. 查看拆包/打包历史"
      echo  "4. 返回加密解密菜单"
        echo "5. 退出"
        echo -e "${BLUE}=========================================${NC}"
        read -p "[选择] 输入1-5：" action

        case "$action" in
            1) unpack_obb ;;
            2) pack_obb ;;
            3) 
                echo -e "\n[历史记录]"
                if [ -f "$HISTORY_FILE" ]; then
                    cat "$HISTORY_FILE"
                else
                    echo "暂无拆包/打包记录"
                fi
                ;;
                        4)
            encryption_menu
            ;;
            5) 
                echo -e "${GREEN}[退出] 工具已关闭，再见！${NC}"
                exit 0 
                ;;
            *) echo -e "${RED}[错误] 无效选项！请输入1-5${NC}" ;;
        esac
        read -p "[继续] 按回车返回菜单..."
        print_header
    done
}

# main_menu
main_menu
