diff --git a/package/ctcgfw/luci-app-openclash/Makefile b/package/ctcgfw/luci-app-openclash/Makefile index 10a39262ed..35a0cac735 100644 --- a/package/ctcgfw/luci-app-openclash/Makefile +++ b/package/ctcgfw/luci-app-openclash/Makefile @@ -1,7 +1,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-openclash -PKG_VERSION:=0.37.3 +PKG_VERSION:=0.37.4 PKG_RELEASE:=beta PKG_MAINTAINER:=vernesong diff --git a/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash b/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash index 70fdedd6ff..e4ea71373a 100755 --- a/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash +++ b/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash @@ -110,49 +110,11 @@ yml_check() sed -i "s/- \{2,\}/- /g" "$3" 2>/dev/null #检查关键字避免后续操作出错 - #proxy-providers - [ -z "$(grep "^proxy-provider:" "$3")" ] && { - sed -i "/^ \{1,\}proxy-provider:/c\proxy-provider:" "$3" 2>/dev/null - } - [ -z "$(grep "^proxy-provider:" "$3")" ] && { - sed -i "/^ \{0,\}proxy-providers:/c\proxy-provider:" "$3" 2>/dev/null - } - #proxy-groups - [ -z "$(grep "^Proxy Group:" "$3")" ] && { - sed -i "/^ \{0,\}\'Proxy Group\':/c\Proxy Group:" "$3" 2>/dev/null - sed -i '/^ \{0,\}\"Proxy Group\":/c\Proxy Group:' "$3" 2>/dev/null - sed -i "/^ \{1,\}Proxy Group:/c\Proxy Group:" "$3" 2>/dev/null - } - [ -z "$(grep "^Proxy Group:" "$3")" ] && { - sed -i "/^ \{0,\}proxy-groups:/c\Proxy Group:" "$3" 2>/dev/null - } - - #proxies - [ -z "$(grep "^Proxy:" "$3")" ] && { - sed -i "/^ \{1,\}Proxy:/c\Proxy:" "$3" 2>/dev/null - } - [ -z "$(grep "^Proxy:" "$3")" ] && { - sed -i "/^proxies:/c\Proxy:" "$3" 2>/dev/null - } - [ -z "$(grep "^Proxy:" "$3")" ] && { - group_len=$(sed -n '/^Proxy Group:/=' "$3" 2>/dev/null) - proxies_len=$(sed -n '/proxies:/=' "$3" 2>/dev/null |sed -n 1p) - if [ "$proxies_len" -lt "$group_len" ]; then - sed -i "${proxies_len}c\Proxy:" "$3" 2>/dev/null - fi 2>/dev/null - } - - #rules - [ -z "$(grep "^Rule:" "$3")" ] && { - sed -i "/^ \{1,\}Rule:/c\Rule:" "$3" 2>/dev/null - } - [ -z "$(grep "^Rule:" "$3")" ] && { - sed -i "/^ \{0,\}rules:/c\Rule:" "$3" 2>/dev/null - } + /usr/share/openclash/yml_field_name_ch.sh "$3" #dns [ -z "$(grep "^dns:" "$3")" ] && { - sed -i "/^ \{1,\}dns:/c\dns:" "$3" 2>/dev/null + sed -i "s/^ \{1,\}dns:/dns:/g" "$3" 2>/dev/null } #创建启动备份 @@ -166,6 +128,7 @@ yml_check() #位置检查 proxy_len=$(sed -n '/^Proxy:/=' "$3" 2>/dev/null) provider_len=$(sed -n '/^proxy-provider:/=' "$3" 2>/dev/null) + group_len=$(sed -n '/^Proxy Group:/=' "$3" 2>/dev/null) dns_len=$(sed -n '/^dns:/=' "$3" 2>/dev/null) rule_len=$(sed -n '/^Rule:/=' "$3" 2>/dev/null) @@ -197,10 +160,11 @@ yml_check() sed -i '/^Proxy Group:/i\proxy-provider-tag' "$3" 2>/dev/null sed -i '/^proxy-provider:/,/proxy-provider-tag/d' "$3" 2>/dev/null sed -i '/^Proxy:/i\proxy-provider:' "$3" 2>/dev/null - sed -i '/^proxy-provider:/d' /tmp/backprovider.yaml 2>/dev/null + sed -i 's/^proxy-provider://g' /tmp/backprovider.yaml 2>/dev/null + sed -i '/^ *$/d' /tmp/backprovider.yaml 2>/dev/null sed -i '/proxy-provider:/r/tmp/backprovider.yaml' "$3" 2>/dev/null rm -rf /tmp/backprovider.yaml 2>/dev/null - elif [ "$provider_len" -ge "$group_len" ]; then + elif [ "$provider_len" -ge "$group_len" ] && [ "$provider_len" -le "$rule_len" ]; then; then awk '/^proxy-provider:/,/^Rule:/{print}' "$3" | sed '/^Rule:/d' >/tmp/backprovider.yaml 2>/dev/null sed -i '/^Rule:/i\proxy-provider-tag' "$3" 2>/dev/null sed -i '/^proxy-provider:/,/proxy-provider-tag/d' "$3" 2>/dev/null @@ -209,7 +173,20 @@ yml_check() else sed -i '/^Proxy Group:/i\proxy-provider:' "$3" 2>/dev/null fi - sed -i '/^proxy-provider:/d' /tmp/backprovider.yaml 2>/dev/null + sed -i 's/^proxy-provider://g' /tmp/backprovider.yaml 2>/dev/null + sed -i '/^ *$/d' /tmp/backprovider.yaml 2>/dev/null + sed -i '/proxy-provider:/r/tmp/backprovider.yaml' "$3" 2>/dev/null + rm -rf /tmp/backprovider.yaml 2>/dev/null + elif [ "$provider_len" -ge "$rule_len" ]; then + sed -n '/^ \{0,\}proxy-provider:/,$p' "$3" >/tmp/backprovider.yaml 2>/dev/null + sed -i '/^ \{0,\}proxy-provider:/,$d' "$3" 2>/dev/null + if [ ! -z "$proxy_len" ]; then + sed -i '/^Proxy:/i\proxy-provider:' "$3" 2>/dev/null + else + sed -i '/^Proxy Group:/i\proxy-provider:' "$3" 2>/dev/null + fi + sed -i 's/^proxy-provider://g' /tmp/backprovider.yaml 2>/dev/null + sed -i '/^ *$/d' /tmp/backprovider.yaml 2>/dev/null sed -i '/proxy-provider:/r/tmp/backprovider.yaml' "$3" 2>/dev/null rm -rf /tmp/backprovider.yaml 2>/dev/null fi 2>/dev/null @@ -298,42 +275,60 @@ yml_dns_check() } +#修改代理集路径 +yml_provider_path() +{ + sed -i "s/\'//g" "$1" 2>/dev/null + sed -i 's/\"//g' "$1" 2>/dev/null + proxy_provider_path_line=$(sed -n '/^ \{0,\}path:/=' "$1" 2>/dev/null) + if [ ! -z "$proxy_provider_path_line" ]; then + for n in $proxy_provider_path_line + do + provider_path=$(sed -n "${n}p" "$1" |awk -F 'path:' '{print $2}' 2>/dev/null |sed 's/,.*//' 2>/dev/null |sed 's/^ \{0,\}//g' 2>/dev/null |sed 's/ \{0,\}$//g' 2>/dev/null |sed 's/ \{0,\}\}\{0,\}$//g' 2>/dev/null) + if [ -z "$(echo "$provider_path" |grep "proxy_provider")" ]; then + provider_name=$(echo "$provider_path" |awk -F '/' '{print $NF}') + sed -i "s#${provider_path}#./proxy_provider/${provider_name}#" "$1" 2>/dev/null + fi + done + fi +} + #检查代理集文件防止启动失败 yml_proxy_provider_check() { - -while ( [ ! -z "$(pidof clash)" ] && [ "$proxy_provider_path_exist" != 1 ] ) -do - if [ "$proxy_provider_mode" = 1 ]; then - proxy_provider_path_line=$(sed -n '/^ \{0,\}path:/=' "$1" 2>/dev/null) - proxy_provider_path_exist=1 - for n in $proxy_provider_path_line - do - provider_path=$(sed -n "${n}p" $1 |awk -F 'path:' '{print $2}' 2>/dev/null |sed 's/,.*//' 2>/dev/null |sed 's/^ \{0,\}//g' 2>/dev/null |sed 's/ \{0,\}$//g' 2>/dev/null |sed 's/ \{0,\}\}\{0,\}$//g' 2>/dev/null) - if [ "$(echo ${provider_path:0:1})" = "." ]; then - provider_path_check="/etc/openclash/$(echo ${provider_path:2})" - if [ -f "$provider_path_check" ]; then - if [ -z "$(grep "'proxies:':" "$provider_path_check")" ] && [ -z "$(grep '"proxies:":' "$provider_path_check")" ] && [ -z "$(grep 'proxies:' "$provider_path_check")" ]; then +if [ ! -z "$proxy_provider_path_line" ]; then + while ( [ ! -z "$(pidof clash)" ] && [ "$proxy_provider_path_exist" != 1 ] ) + do + if [ "$proxy_provider_mode" = 1 ]; then + proxy_provider_path_exist=1 + for n in $proxy_provider_path_line + do + provider_path=$(sed -n "${n}p" "$1" |awk -F 'path:' '{print $2}' 2>/dev/null |sed 's/,.*//' 2>/dev/null |sed 's/^ \{0,\}//g' 2>/dev/null |sed 's/ \{0,\}$//g' 2>/dev/null |sed 's/ \{0,\}\}\{0,\}$//g' 2>/dev/null) + if [ "$(echo ${provider_path:0:1})" = "." ]; then + provider_path_check="/etc/openclash/$(echo ${provider_path:2})" + if [ -f "$provider_path_check" ]; then + if [ -z "$(grep "'proxies:':" "$provider_path_check")" ] && [ -z "$(grep '"proxies:":' "$provider_path_check")" ] && [ -z "$(grep 'proxies:' "$provider_path_check")" ]; then + proxy_provider_path_exist=0 + fi + else proxy_provider_path_exist=0 fi else - proxy_provider_path_exist=0 - fi - else - provider_path_check="$provider_path" - if [ -f "$provider_path_check" ]; then - if [ -z "$(grep "'proxies:':" "$provider_path_check")" ] && [ -z "$(grep '"proxies:":' "$provider_path_check")" ] && [ -z "$(grep 'proxies:' "$provider_path_check")" ]; then + provider_path_check="$provider_path" + if [ -f "$provider_path_check" ]; then + if [ -z "$(grep "'proxies:':" "$provider_path_check")" ] && [ -z "$(grep '"proxies:":' "$provider_path_check")" ] && [ -z "$(grep 'proxies:' "$provider_path_check")" ]; then + proxy_provider_path_exist=0 + fi + else proxy_provider_path_exist=0 fi - else - proxy_provider_path_exist=0 fi - fi - done - else - proxy_provider_path_exist=1 - fi -done + done + else + proxy_provider_path_exist=1 + fi + done +fi if [ -z "$(pidof clash)" ] && [ "$proxy_provider_mode" = 1 ]; then echo "错误: OpenClash 启动失败,请到日志页面查看详细错误信息!" >$START_LOG @@ -782,6 +777,7 @@ if [ "$enable" -eq 1 ] && [ -f "$CONFIG_FILE" ]; then yml_auth_custom "$CONFIG_FILE" yml_cut "$CHANGE_FILE" "$RULE_FILE" "$DNS_FILE" "$CONFIG_FILE" "$PROXY_FILE" "$PROXY_PROVIDER_FILE" "$GROUP_FILE" yml_dns_custom "$enable_custom_dns" "$DNS_FILE" + yml_provider_path "$PROXY_PROVIDER_FILE" sh /usr/share/openclash/yml_change.sh >/dev/null 2>&1 "$LOGTIME" "$en_mode" "$enable_custom_dns" "$da_password" "$cn_port" "$proxy_port" "$CHANGE_FILE" "$ipv6_enable" "$http_port" "$socks_port" "$lan_ip" "$log_level" "$proxy_mode" "$intranet_allowed" "$en_mode_tun" & sh /usr/share/openclash/yml_rules_change.sh >/dev/null 2>&1 "$LOGTIME" "$rule_source" "$enable_custom_clash_rules" "$RULE_FILE" "$set_rule_file" "$en_mode" "$enable_rule_proxy" "$BACKUP_FILE" & wait diff --git a/package/ctcgfw/luci-app-openclash/files/etc/openclash/Country.mmdb b/package/ctcgfw/luci-app-openclash/files/etc/openclash/Country.mmdb index 920eb7030e..c068fc5f01 100644 Binary files a/package/ctcgfw/luci-app-openclash/files/etc/openclash/Country.mmdb and b/package/ctcgfw/luci-app-openclash/files/etc/openclash/Country.mmdb differ diff --git a/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml b/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml index 3d5bff656f..85c5769883 100644 --- a/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml +++ b/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml @@ -2177,7 +2177,6 @@ Rule: - DOMAIN-SUFFIX,cca.mob.com,AdBlock - DOMAIN-SUFFIX,ccb.uncle-ad.com,AdBlock - DOMAIN-SUFFIX,ccbaihehq.com,AdBlock -- DOMAIN-SUFFIX,ccclub.cmbchina.com,AdBlock - DOMAIN-SUFFIX,cccrir.com,AdBlock - DOMAIN-SUFFIX,ccr.yxdown.com,AdBlock - DOMAIN-SUFFIX,cctyly.com,AdBlock @@ -8529,7 +8528,9 @@ Rule: # > Disney Plus # - USER-AGENT,Disney*,GlobalTV - DOMAIN,cdn.registerdisney.go.com,GlobalTV +- DOMAIN,cdn.cdn.unid.go.com,GlobalTV - DOMAIN-SUFFIX,bamgrid.com,GlobalTV +- DOMAIN-SUFFIX,braze.com,GlobalTV - DOMAIN-SUFFIX,conviva.com,GlobalTV - DOMAIN-SUFFIX,disney.demdex.net,GlobalTV - DOMAIN-SUFFIX,disneyplus.com,GlobalTV @@ -8633,7 +8634,14 @@ Rule: # > ViuTV # - USER-AGENT,ViuTV*,GlobalTV +- DOMAIN-SUFFIX,bootstrapcdn.com,GlobalTV - DOMAIN-SUFFIX,cloudfront.net,GlobalTV +- DOMAIN-SUFFIX,cognito-identity.us-east-1.amazonaws.com,GlobalTV +- DOMAIN-SUFFIX,firebaseio.com,GlobalTV +- DOMAIN-SUFFIX,jwpcdn.com,GlobalTV +- DOMAIN-SUFFIX,jwplayer.com,GlobalTV +- DOMAIN-SUFFIX,mobileanalytics.us-east-1.amazonaws.com,GlobalTV +- DOMAIN-SUFFIX,nowe.com,GlobalTV - DOMAIN-SUFFIX,viu.com,GlobalTV - DOMAIN-SUFFIX,viu.tv,GlobalTV - DOMAIN-SUFFIX,viu.now.com,GlobalTV @@ -8662,21 +8670,912 @@ Rule: - DOMAIN-SUFFIX,nflximg.net,Netflix - DOMAIN-SUFFIX,nflxso.net,Netflix - DOMAIN-SUFFIX,nflxvideo.net,Netflix -- IP-CIDR,8.41.4.0/24,Netflix -- IP-CIDR,23.246.0.0/18,Netflix -- IP-CIDR,37.77.184.0/21,Netflix -- IP-CIDR,45.57.0.0/17,Netflix -- IP-CIDR,64.120.128.0/17,Netflix -- IP-CIDR,66.197.128.0/17,Netflix -- IP-CIDR,69.53.224.0/19,Netflix -- IP-CIDR,108.175.32.0/20,Netflix -- IP-CIDR,185.2.220.0/22,Netflix -- IP-CIDR,185.9.188.0/22,Netflix -- IP-CIDR,192.173.64.0/18,Netflix -- IP-CIDR,198.38.96.0/19,Netflix -- IP-CIDR,198.45.48.0/20,Netflix -- IP-CIDR,207.45.72.0/22,Netflix -- IP-CIDR,208.75.76.0/22,Netflix +- IP-CIDR,1.37.35.6/32,Netflix +- IP-CIDR,101.100.179.242/32,Netflix +- IP-CIDR,101.100.179.250/32,Netflix +- IP-CIDR,105.187.240.196/32,Netflix +- IP-CIDR,105.187.240.197/32,Netflix +- IP-CIDR,105.187.243.5/32,Netflix +- IP-CIDR,105.187.243.6/32,Netflix +- IP-CIDR,112.198.26.2/32,Netflix +- IP-CIDR,122.155.238.138/32,Netflix +- IP-CIDR,122.155.238.142/32,Netflix +- IP-CIDR,122.155.238.146/32,Netflix +- IP-CIDR,122.155.238.150/32,Netflix +- IP-CIDR,139.45.192.1/32,Netflix +- IP-CIDR,139.45.206.1/32,Netflix +- IP-CIDR,139.45.234.1/32,Netflix +- IP-CIDR,14.136.135.180/32,Netflix +- IP-CIDR,14.136.135.196/32,Netflix +- IP-CIDR,14.136.137.68/32,Netflix +- IP-CIDR,14.136.139.164/32,Netflix +- IP-CIDR,140.197.247.84/32,Netflix +- IP-CIDR,144.208.211.67/32,Netflix +- IP-CIDR,145.253.34.129/32,Netflix +- IP-CIDR,145.253.34.139/32,Netflix +- IP-CIDR,145.253.34.141/32,Netflix +- IP-CIDR,145.253.34.143/32,Netflix +- IP-CIDR,145.253.34.145/32,Netflix +- IP-CIDR,145.253.34.151/32,Netflix +- IP-CIDR,145.253.34.153/32,Netflix +- IP-CIDR,145.253.34.155/32,Netflix +- IP-CIDR,145.253.34.157/32,Netflix +- IP-CIDR,145.253.34.21/32,Netflix +- IP-CIDR,145.253.34.55/32,Netflix +- IP-CIDR,145.253.34.63/32,Netflix +- IP-CIDR,146.115.2.226/32,Netflix +- IP-CIDR,146.115.2.234/32,Netflix +- IP-CIDR,146.115.2.238/32,Netflix +- IP-CIDR,146.115.2.50/32,Netflix +- IP-CIDR,146.115.2.62/32,Netflix +- IP-CIDR,147.75.112.66/32,Netflix +- IP-CIDR,147.75.112.67/32,Netflix +- IP-CIDR,149.165.180.133/32,Netflix +- IP-CIDR,149.165.180.134/32,Netflix +- IP-CIDR,149.255.128.1/32,Netflix +- IP-CIDR,151.5.17.19/32,Netflix +- IP-CIDR,151.5.17.43/32,Netflix +- IP-CIDR,161.0.157.195/32,Netflix +- IP-CIDR,161.0.157.73/32,Netflix +- IP-CIDR,162.212.12.52/32,Netflix +- IP-CIDR,162.220.138.2/32,Netflix +- IP-CIDR,162.223.18.131/32,Netflix +- IP-CIDR,164.113.254.234/32,Netflix +- IP-CIDR,167.142.14.130/32,Netflix +- IP-CIDR,167.142.14.134/32,Netflix +- IP-CIDR,167.142.14.138/32,Netflix +- IP-CIDR,167.142.208.146/32,Netflix +- IP-CIDR,170.238.0.198/32,Netflix +- IP-CIDR,170.238.0.202/32,Netflix +- IP-CIDR,170.238.0.206/32,Netflix +- IP-CIDR,170.249.156.82/32,Netflix +- IP-CIDR,170.249.179.114/32,Netflix +- IP-CIDR,170.52.52.130/32,Netflix +- IP-CIDR,172.56.128.126/32,Netflix +- IP-CIDR,172.56.128.126/32,Netflix +- IP-CIDR,172.56.132.126/32,Netflix +- IP-CIDR,172.56.132.126/32,Netflix +- IP-CIDR,172.56.133.126/32,Netflix +- IP-CIDR,172.56.133.126/32,Netflix +- IP-CIDR,172.56.138.126/32,Netflix +- IP-CIDR,172.56.138.126/32,Netflix +- IP-CIDR,172.56.139.126/32,Netflix +- IP-CIDR,172.56.139.126/32,Netflix +- IP-CIDR,172.56.140.126/32,Netflix +- IP-CIDR,172.56.140.126/32,Netflix +- IP-CIDR,172.56.141.126/32,Netflix +- IP-CIDR,172.56.141.126/32,Netflix +- IP-CIDR,172.56.143.126/32,Netflix +- IP-CIDR,172.56.143.126/32,Netflix +- IP-CIDR,172.56.145.66/32,Netflix +- IP-CIDR,172.56.145.66/32,Netflix +- IP-CIDR,173.219.132.226/32,Netflix +- IP-CIDR,173.219.132.229/32,Netflix +- IP-CIDR,173.219.194.149/32,Netflix +- IP-CIDR,173.219.194.49/32,Netflix +- IP-CIDR,173.219.222.237/32,Netflix +- IP-CIDR,173.219.237.165/32,Netflix +- IP-CIDR,173.219.75.17/32,Netflix +- IP-CIDR,173.219.75.19/32,Netflix +- IP-CIDR,173.235.1.133/32,Netflix +- IP-CIDR,173.244.134.58/32,Netflix +- IP-CIDR,181.188.0.162/32,Netflix +- IP-CIDR,181.188.0.166/32,Netflix +- IP-CIDR,181.36.10.194/32,Netflix +- IP-CIDR,181.36.10.198/32,Netflix +- IP-CIDR,181.36.10.202/32,Netflix +- IP-CIDR,181.36.10.206/32,Netflix +- IP-CIDR,181.36.10.210/32,Netflix +- IP-CIDR,181.36.10.214/32,Netflix +- IP-CIDR,181.36.10.234/32,Netflix +- IP-CIDR,181.36.10.238/32,Netflix +- IP-CIDR,181.36.10.242/32,Netflix +- IP-CIDR,181.36.10.246/32,Netflix +- IP-CIDR,181.36.10.38/32,Netflix +- IP-CIDR,181.36.10.4/32,Netflix +- IP-CIDR,181.36.10.42/32,Netflix +- IP-CIDR,181.39.188.10/32,Netflix +- IP-CIDR,181.39.188.13/32,Netflix +- IP-CIDR,181.39.188.14/32,Netflix +- IP-CIDR,181.39.188.18/32,Netflix +- IP-CIDR,181.39.188.19/32,Netflix +- IP-CIDR,181.39.188.20/32,Netflix +- IP-CIDR,181.39.44.170/32,Netflix +- IP-CIDR,181.39.44.174/32,Netflix +- IP-CIDR,181.39.44.178/32,Netflix +- IP-CIDR,181.39.44.179/32,Netflix +- IP-CIDR,181.39.44.180/32,Netflix +- IP-CIDR,181.39.44.181/32,Netflix +- IP-CIDR,181.39.44.182/32,Netflix +- IP-CIDR,181.39.44.183/32,Netflix +- IP-CIDR,182.50.85.101/32,Netflix +- IP-CIDR,182.50.85.102/32,Netflix +- IP-CIDR,182.50.85.110/32,Netflix +- IP-CIDR,182.50.85.117/32,Netflix +- IP-CIDR,182.50.85.118/32,Netflix +- IP-CIDR,182.50.85.126/32,Netflix +- IP-CIDR,182.79.164.10/32,Netflix +- IP-CIDR,182.79.164.136/32,Netflix +- IP-CIDR,182.79.164.14/32,Netflix +- IP-CIDR,182.79.164.140/32,Netflix +- IP-CIDR,182.79.164.142/32,Netflix +- IP-CIDR,182.79.164.144/32,Netflix +- IP-CIDR,182.79.164.2/32,Netflix +- IP-CIDR,182.79.164.6/32,Netflix +- IP-CIDR,182.79.223.230/32,Netflix +- IP-CIDR,182.79.223.234/32,Netflix +- IP-CIDR,182.79.223.238/32,Netflix +- IP-CIDR,182.79.223.242/32,Netflix +- IP-CIDR,182.79.223.246/32,Netflix +- IP-CIDR,182.79.223.250/32,Netflix +- IP-CIDR,184.150.14.101/32,Netflix +- IP-CIDR,184.150.14.103/32,Netflix +- IP-CIDR,184.150.14.11/32,Netflix +- IP-CIDR,184.150.14.129/32,Netflix +- IP-CIDR,184.150.14.13/32,Netflix +- IP-CIDR,184.150.14.131/32,Netflix +- IP-CIDR,184.150.14.133/32,Netflix +- IP-CIDR,184.150.14.135/32,Netflix +- IP-CIDR,184.150.14.137/32,Netflix +- IP-CIDR,184.150.14.139/32,Netflix +- IP-CIDR,184.150.14.141/32,Netflix +- IP-CIDR,184.150.14.143/32,Netflix +- IP-CIDR,184.150.14.145/32,Netflix +- IP-CIDR,184.150.14.147/32,Netflix +- IP-CIDR,184.150.14.149/32,Netflix +- IP-CIDR,184.150.14.15/32,Netflix +- IP-CIDR,184.150.14.151/32,Netflix +- IP-CIDR,184.150.14.153/32,Netflix +- IP-CIDR,184.150.14.155/32,Netflix +- IP-CIDR,184.150.14.157/32,Netflix +- IP-CIDR,184.150.14.159/32,Netflix +- IP-CIDR,184.150.14.161/32,Netflix +- IP-CIDR,184.150.14.163/32,Netflix +- IP-CIDR,184.150.14.165/32,Netflix +- IP-CIDR,184.150.14.17/32,Netflix +- IP-CIDR,184.150.14.19/32,Netflix +- IP-CIDR,184.150.14.193/32,Netflix +- IP-CIDR,184.150.14.195/32,Netflix +- IP-CIDR,184.150.14.197/32,Netflix +- IP-CIDR,184.150.14.199/32,Netflix +- IP-CIDR,184.150.14.201/32,Netflix +- IP-CIDR,184.150.14.203/32,Netflix +- IP-CIDR,184.150.14.205/32,Netflix +- IP-CIDR,184.150.14.207/32,Netflix +- IP-CIDR,184.150.14.209/32,Netflix +- IP-CIDR,184.150.14.21/32,Netflix +- IP-CIDR,184.150.14.211/32,Netflix +- IP-CIDR,184.150.14.213/32,Netflix +- IP-CIDR,184.150.14.215/32,Netflix +- IP-CIDR,184.150.14.217/32,Netflix +- IP-CIDR,184.150.14.219/32,Netflix +- IP-CIDR,184.150.14.221/32,Netflix +- IP-CIDR,184.150.14.223/32,Netflix +- IP-CIDR,184.150.14.225/32,Netflix +- IP-CIDR,184.150.14.227/32,Netflix +- IP-CIDR,184.150.14.229/32,Netflix +- IP-CIDR,184.150.14.23/32,Netflix +- IP-CIDR,184.150.14.25/32,Netflix +- IP-CIDR,184.150.14.27/32,Netflix +- IP-CIDR,184.150.14.29/32,Netflix +- IP-CIDR,184.150.14.3/32,Netflix +- IP-CIDR,184.150.14.31/32,Netflix +- IP-CIDR,184.150.14.33/32,Netflix +- IP-CIDR,184.150.14.35/32,Netflix +- IP-CIDR,184.150.14.37/32,Netflix +- IP-CIDR,184.150.14.39/32,Netflix +- IP-CIDR,184.150.14.5/32,Netflix +- IP-CIDR,184.150.14.65/32,Netflix +- IP-CIDR,184.150.14.67/32,Netflix +- IP-CIDR,184.150.14.69/32,Netflix +- IP-CIDR,184.150.14.7/32,Netflix +- IP-CIDR,184.150.14.71/32,Netflix +- IP-CIDR,184.150.14.73/32,Netflix +- IP-CIDR,184.150.14.75/32,Netflix +- IP-CIDR,184.150.14.77/32,Netflix +- IP-CIDR,184.150.14.79/32,Netflix +- IP-CIDR,184.150.14.81/32,Netflix +- IP-CIDR,184.150.14.83/32,Netflix +- IP-CIDR,184.150.14.85/32,Netflix +- IP-CIDR,184.150.14.87/32,Netflix +- IP-CIDR,184.150.14.89/32,Netflix +- IP-CIDR,184.150.14.9/32,Netflix +- IP-CIDR,184.150.14.91/32,Netflix +- IP-CIDR,184.150.14.93/32,Netflix +- IP-CIDR,184.150.14.95/32,Netflix +- IP-CIDR,184.150.14.97/32,Netflix +- IP-CIDR,184.150.14.99/32,Netflix +- IP-CIDR,184.150.15.1/32,Netflix +- IP-CIDR,184.150.15.101/32,Netflix +- IP-CIDR,184.150.15.11/32,Netflix +- IP-CIDR,184.150.15.13/32,Netflix +- IP-CIDR,184.150.15.15/32,Netflix +- IP-CIDR,184.150.15.21/32,Netflix +- IP-CIDR,184.150.15.23/32,Netflix +- IP-CIDR,184.150.15.25/32,Netflix +- IP-CIDR,184.150.15.27/32,Netflix +- IP-CIDR,184.150.15.29/32,Netflix +- IP-CIDR,184.150.15.3/32,Netflix +- IP-CIDR,184.150.15.31/32,Netflix +- IP-CIDR,184.150.15.33/32,Netflix +- IP-CIDR,184.150.15.35/32,Netflix +- IP-CIDR,184.150.15.37/32,Netflix +- IP-CIDR,184.150.15.39/32,Netflix +- IP-CIDR,184.150.15.5/32,Netflix +- IP-CIDR,184.150.15.7/32,Netflix +- IP-CIDR,184.150.15.85/32,Netflix +- IP-CIDR,184.150.15.87/32,Netflix +- IP-CIDR,184.150.15.89/32,Netflix +- IP-CIDR,184.150.15.9/32,Netflix +- IP-CIDR,184.150.15.91/32,Netflix +- IP-CIDR,184.150.15.93/32,Netflix +- IP-CIDR,184.150.15.95/32,Netflix +- IP-CIDR,184.150.15.97/32,Netflix +- IP-CIDR,184.150.15.99/32,Netflix +- IP-CIDR,184.175.190.38/32,Netflix +- IP-CIDR,185.43.181.232/32,Netflix +- IP-CIDR,185.43.181.232/32,Netflix +- IP-CIDR,185.43.181.234/32,Netflix +- IP-CIDR,185.43.181.236/32,Netflix +- IP-CIDR,185.43.181.238/32,Netflix +- IP-CIDR,185.43.181.240/32,Netflix +- IP-CIDR,185.43.181.240/32,Netflix +- IP-CIDR,185.43.181.246/32,Netflix +- IP-CIDR,185.97.110.36/32,Netflix +- IP-CIDR,186.15.229.194/32,Netflix +- IP-CIDR,186.15.234.18/32,Netflix +- IP-CIDR,186.176.224.18/32,Netflix +- IP-CIDR,186.177.100.2/32,Netflix +- IP-CIDR,186.177.66.50/32,Netflix +- IP-CIDR,186.179.71.154/32,Netflix +- IP-CIDR,186.96.222.38/32,Netflix +- IP-CIDR,188.47.194.235/32,Netflix +- IP-CIDR,188.47.194.243/32,Netflix +- IP-CIDR,188.47.194.244/32,Netflix +- IP-CIDR,188.47.194.245/32,Netflix +- IP-CIDR,188.47.194.252/32,Netflix +- IP-CIDR,188.47.194.253/32,Netflix +- IP-CIDR,188.47.196.228/32,Netflix +- IP-CIDR,188.47.196.252/32,Netflix +- IP-CIDR,188.47.196.253/32,Netflix +- IP-CIDR,188.47.208.242/32,Netflix +- IP-CIDR,188.47.208.242/32,Netflix +- IP-CIDR,189.194.232.193/32,Netflix +- IP-CIDR,189.194.232.194/32,Netflix +- IP-CIDR,189.194.232.195/32,Netflix +- IP-CIDR,189.194.232.196/32,Netflix +- IP-CIDR,189.216.4.67/32,Netflix +- IP-CIDR,189.216.4.69/32,Netflix +- IP-CIDR,190.98.134.128/32,Netflix +- IP-CIDR,190.98.134.130/32,Netflix +- IP-CIDR,190.98.134.132/32,Netflix +- IP-CIDR,190.98.134.134/32,Netflix +- IP-CIDR,190.98.134.136/32,Netflix +- IP-CIDR,190.98.134.138/32,Netflix +- IP-CIDR,190.98.134.140/32,Netflix +- IP-CIDR,190.98.134.144/32,Netflix +- IP-CIDR,190.98.134.146/32,Netflix +- IP-CIDR,190.98.156.141/32,Netflix +- IP-CIDR,190.98.156.141/32,Netflix +- IP-CIDR,190.98.156.149/32,Netflix +- IP-CIDR,190.98.156.149/32,Netflix +- IP-CIDR,190.98.156.183/32,Netflix +- IP-CIDR,190.98.156.183/32,Netflix +- IP-CIDR,192.148.237.10/32,Netflix +- IP-CIDR,192.148.237.130/32,Netflix +- IP-CIDR,192.148.237.138/32,Netflix +- IP-CIDR,192.148.237.146/32,Netflix +- IP-CIDR,192.148.237.18/32,Netflix +- IP-CIDR,192.148.237.2/32,Netflix +- IP-CIDR,193.109.100.131/32,Netflix +- IP-CIDR,193.212.179.102/32,Netflix +- IP-CIDR,193.212.179.106/32,Netflix +- IP-CIDR,193.212.179.110/32,Netflix +- IP-CIDR,193.212.179.114/32,Netflix +- IP-CIDR,193.212.179.118/32,Netflix +- IP-CIDR,193.212.179.122/32,Netflix +- IP-CIDR,193.212.179.126/32,Netflix +- IP-CIDR,193.212.179.130/32,Netflix +- IP-CIDR,193.212.179.146/32,Netflix +- IP-CIDR,193.212.179.82/32,Netflix +- IP-CIDR,193.212.179.98/32,Netflix +- IP-CIDR,193.247.193.100/32,Netflix +- IP-CIDR,193.247.193.100/32,Netflix +- IP-CIDR,193.247.193.38/32,Netflix +- IP-CIDR,193.247.193.72/32,Netflix +- IP-CIDR,193.247.193.74/32,Netflix +- IP-CIDR,193.247.193.74/32,Netflix +- IP-CIDR,193.247.193.99/32,Netflix +- IP-CIDR,193.247.193.99/32,Netflix +- IP-CIDR,194.228.248.66/32,Netflix +- IP-CIDR,194.228.248.66/32,Netflix +- IP-CIDR,195.121.126.132/32,Netflix +- IP-CIDR,195.121.126.139/32,Netflix +- IP-CIDR,195.121.126.144/32,Netflix +- IP-CIDR,195.121.126.164/32,Netflix +- IP-CIDR,195.121.126.175/32,Netflix +- IP-CIDR,195.121.126.177/32,Netflix +- IP-CIDR,195.121.126.197/32,Netflix +- IP-CIDR,195.121.126.202/32,Netflix +- IP-CIDR,195.121.126.228/32,Netflix +- IP-CIDR,195.121.126.235/32,Netflix +- IP-CIDR,195.202.131.98/32,Netflix +- IP-CIDR,195.8.12.194/32,Netflix +- IP-CIDR,195.8.12.202/32,Netflix +- IP-CIDR,195.8.12.206/32,Netflix +- IP-CIDR,195.8.12.225/32,Netflix +- IP-CIDR,195.8.12.227/32,Netflix +- IP-CIDR,197.149.149.194/32,Netflix +- IP-CIDR,197.230.237.209/32,Netflix +- IP-CIDR,197.230.37.209/32,Netflix +- IP-CIDR,198.32.232.82/32,Netflix +- IP-CIDR,198.7.237.134/32,Netflix +- IP-CIDR,200.107.255.198/32,Netflix +- IP-CIDR,200.107.255.202/32,Netflix +- IP-CIDR,200.107.255.206/32,Netflix +- IP-CIDR,200.114.32.130/32,Netflix +- IP-CIDR,200.114.32.194/32,Netflix +- IP-CIDR,200.114.32.2/32,Netflix +- IP-CIDR,200.114.32.66/32,Netflix +- IP-CIDR,200.114.33.130/32,Netflix +- IP-CIDR,200.114.33.194/32,Netflix +- IP-CIDR,200.114.33.66/32,Netflix +- IP-CIDR,200.114.34.130/32,Netflix +- IP-CIDR,200.114.34.194/32,Netflix +- IP-CIDR,200.114.34.2/32,Netflix +- IP-CIDR,200.114.34.66/32,Netflix +- IP-CIDR,200.114.35.130/32,Netflix +- IP-CIDR,200.114.35.194/32,Netflix +- IP-CIDR,200.114.35.2/32,Netflix +- IP-CIDR,200.114.35.66/32,Netflix +- IP-CIDR,200.114.60.34/32,Netflix +- IP-CIDR,201.148.100.94/32,Netflix +- IP-CIDR,201.148.101.122/32,Netflix +- IP-CIDR,201.148.101.126/32,Netflix +- IP-CIDR,201.148.101.194/32,Netflix +- IP-CIDR,201.148.101.198/32,Netflix +- IP-CIDR,201.148.101.250/32,Netflix +- IP-CIDR,201.148.101.42/32,Netflix +- IP-CIDR,201.148.101.50/32,Netflix +- IP-CIDR,201.148.101.54/32,Netflix +- IP-CIDR,201.148.103.10/32,Netflix +- IP-CIDR,201.148.103.14/32,Netflix +- IP-CIDR,201.172.162.1/32,Netflix +- IP-CIDR,201.172.162.7/32,Netflix +- IP-CIDR,201.174.112.54/32,Netflix +- IP-CIDR,201.174.146.142/32,Netflix +- IP-CIDR,201.174.146.18/32,Netflix +- IP-CIDR,201.174.249.18/32,Netflix +- IP-CIDR,201.174.249.34/32,Netflix +- IP-CIDR,201.174.48.130/32,Netflix +- IP-CIDR,202.188.117.43/32,Netflix +- IP-CIDR,202.188.117.45/32,Netflix +- IP-CIDR,203.116.200.130/32,Netflix +- IP-CIDR,203.116.200.131/32,Netflix +- IP-CIDR,203.116.200.134/32,Netflix +- IP-CIDR,203.116.200.134/32,Netflix +- IP-CIDR,203.116.200.135/32,Netflix +- IP-CIDR,203.116.200.136/32,Netflix +- IP-CIDR,203.116.200.136/32,Netflix +- IP-CIDR,203.116.200.137/32,Netflix +- IP-CIDR,203.116.210.132/32,Netflix +- IP-CIDR,203.116.210.133/32,Netflix +- IP-CIDR,203.116.210.133/32,Netflix +- IP-CIDR,203.116.210.134/32,Netflix +- IP-CIDR,203.116.210.135/32,Netflix +- IP-CIDR,203.116.210.136/32,Netflix +- IP-CIDR,203.116.210.137/32,Netflix +- IP-CIDR,203.116.210.196/32,Netflix +- IP-CIDR,203.116.210.196/32,Netflix +- IP-CIDR,203.116.210.197/32,Netflix +- IP-CIDR,203.116.210.198/32,Netflix +- IP-CIDR,203.116.210.198/32,Netflix +- IP-CIDR,203.116.210.199/32,Netflix +- IP-CIDR,203.116.210.199/32,Netflix +- IP-CIDR,203.116.210.200/32,Netflix +- IP-CIDR,203.116.210.200/32,Netflix +- IP-CIDR,203.116.210.201/32,Netflix +- IP-CIDR,203.177.54.2/32,Netflix +- IP-CIDR,204.17.140.250/32,Netflix +- IP-CIDR,205.185.100.38/32,Netflix +- IP-CIDR,206.192.244.33/32,Netflix +- IP-CIDR,206.196.177.135/32,Netflix +- IP-CIDR,206.71.231.34/32,Netflix +- IP-CIDR,206.71.231.38/32,Netflix +- IP-CIDR,206.71.231.46/32,Netflix +- IP-CIDR,206.71.231.50/32,Netflix +- IP-CIDR,207.172.195.178/32,Netflix +- IP-CIDR,207.172.195.182/32,Netflix +- IP-CIDR,207.172.195.190/32,Netflix +- IP-CIDR,207.172.195.50/32,Netflix +- IP-CIDR,207.172.61.142/32,Netflix +- IP-CIDR,207.172.61.146/32,Netflix +- IP-CIDR,207.172.69.202/32,Netflix +- IP-CIDR,207.172.69.206/32,Netflix +- IP-CIDR,207.181.192.194/32,Netflix +- IP-CIDR,207.181.192.198/32,Netflix +- IP-CIDR,207.181.192.205/32,Netflix +- IP-CIDR,207.181.192.210/32,Netflix +- IP-CIDR,207.228.148.78/32,Netflix +- IP-CIDR,207.237.69.34/32,Netflix +- IP-CIDR,207.44.120.194/32,Netflix +- IP-CIDR,207.44.120.198/32,Netflix +- IP-CIDR,207.44.120.202/32,Netflix +- IP-CIDR,207.44.120.210/32,Netflix +- IP-CIDR,207.44.120.214/32,Netflix +- IP-CIDR,207.44.123.18/32,Netflix +- IP-CIDR,207.44.123.254/32,Netflix +- IP-CIDR,207.44.123.42/32,Netflix +- IP-CIDR,207.44.123.46/32,Netflix +- IP-CIDR,207.44.123.50/32,Netflix +- IP-CIDR,207.44.123.54/32,Netflix +- IP-CIDR,207.44.123.58/32,Netflix +- IP-CIDR,207.44.123.62/32,Netflix +- IP-CIDR,207.44.124.234/32,Netflix +- IP-CIDR,208.104.1.158/32,Netflix +- IP-CIDR,208.104.243.122/32,Netflix +- IP-CIDR,208.104.243.134/32,Netflix +- IP-CIDR,208.180.184.241/32,Netflix +- IP-CIDR,208.180.184.243/32,Netflix +- IP-CIDR,208.180.185.13/32,Netflix +- IP-CIDR,208.180.59.229/32,Netflix +- IP-CIDR,208.54.16.65/32,Netflix +- IP-CIDR,208.54.2.3/32,Netflix +- IP-CIDR,208.54.2.3/32,Netflix +- IP-CIDR,208.54.37.30/32,Netflix +- IP-CIDR,208.54.37.30/32,Netflix +- IP-CIDR,208.54.66.30/32,Netflix +- IP-CIDR,208.54.67.30/32,Netflix +- IP-CIDR,208.54.67.30/32,Netflix +- IP-CIDR,208.54.70.30/32,Netflix +- IP-CIDR,208.54.70.30/32,Netflix +- IP-CIDR,208.54.80.30/32,Netflix +- IP-CIDR,208.54.80.30/32,Netflix +- IP-CIDR,208.54.85.30/32,Netflix +- IP-CIDR,208.54.85.30/32,Netflix +- IP-CIDR,208.76.186.5/32,Netflix +- IP-CIDR,208.76.186.50/32,Netflix +- IP-CIDR,208.76.186.58/32,Netflix +- IP-CIDR,208.76.186.62/32,Netflix +- IP-CIDR,208.76.186.7/32,Netflix +- IP-CIDR,209.166.100.18/32,Netflix +- IP-CIDR,209.166.100.22/32,Netflix +- IP-CIDR,211.25.221.90/32,Netflix +- IP-CIDR,211.25.221.94/32,Netflix +- IP-CIDR,212.113.160.242/32,Netflix +- IP-CIDR,212.230.122.34/32,Netflix +- IP-CIDR,212.6.80.20/32,Netflix +- IP-CIDR,212.6.80.4/32,Netflix +- IP-CIDR,213.140.51.111/32,Netflix +- IP-CIDR,213.158.201.180/32,Netflix +- IP-CIDR,216.183.33.177/32,Netflix +- IP-CIDR,216.239.1.102/32,Netflix +- IP-CIDR,216.248.75.146/32,Netflix +- IP-CIDR,216.248.75.150/32,Netflix +- IP-CIDR,216.68.10.42/32,Netflix +- IP-CIDR,216.68.10.46/32,Netflix +- IP-CIDR,216.68.10.50/32,Netflix +- IP-CIDR,216.68.10.54/32,Netflix +- IP-CIDR,216.68.10.62/32,Netflix +- IP-CIDR,216.68.248.166/32,Netflix +- IP-CIDR,216.68.248.170/32,Netflix +- IP-CIDR,216.68.248.174/32,Netflix +- IP-CIDR,216.68.248.178/32,Netflix +- IP-CIDR,216.68.248.182/32,Netflix +- IP-CIDR,216.68.248.190/32,Netflix +- IP-CIDR,216.70.1.54/32,Netflix +- IP-CIDR,23.228.129.239/32,Netflix +- IP-CIDR,23.228.129.247/32,Netflix +- IP-CIDR,23.228.129.65/32,Netflix +- IP-CIDR,23.228.129.67/32,Netflix +- IP-CIDR,23.228.129.75/32,Netflix +- IP-CIDR,23.228.129.77/32,Netflix +- IP-CIDR,23.228.129.79/32,Netflix +- IP-CIDR,23.228.129.81/32,Netflix +- IP-CIDR,23.228.131.233/32,Netflix +- IP-CIDR,23.228.131.235/32,Netflix +- IP-CIDR,23.228.131.237/32,Netflix +- IP-CIDR,23.228.131.239/32,Netflix +- IP-CIDR,24.101.22.50/32,Netflix +- IP-CIDR,24.101.22.54/32,Netflix +- IP-CIDR,24.101.91.13/32,Netflix +- IP-CIDR,24.101.91.15/32,Netflix +- IP-CIDR,24.124.3.52/32,Netflix +- IP-CIDR,24.124.7.106/32,Netflix +- IP-CIDR,24.200.239.66/32,Netflix +- IP-CIDR,24.200.239.70/32,Netflix +- IP-CIDR,24.200.239.74/32,Netflix +- IP-CIDR,24.200.239.78/32,Netflix +- IP-CIDR,24.200.239.86/32,Netflix +- IP-CIDR,24.215.101.170/32,Netflix +- IP-CIDR,24.220.183.136/32,Netflix +- IP-CIDR,24.220.183.137/32,Netflix +- IP-CIDR,24.220.183.138/32,Netflix +- IP-CIDR,24.220.183.139/32,Netflix +- IP-CIDR,24.220.183.140/32,Netflix +- IP-CIDR,24.220.183.141/32,Netflix +- IP-CIDR,24.220.183.142/32,Netflix +- IP-CIDR,24.220.183.152/32,Netflix +- IP-CIDR,24.220.183.153/32,Netflix +- IP-CIDR,24.220.183.154/32,Netflix +- IP-CIDR,24.220.183.155/32,Netflix +- IP-CIDR,24.220.183.156/32,Netflix +- IP-CIDR,24.220.183.157/32,Netflix +- IP-CIDR,24.220.183.158/32,Netflix +- IP-CIDR,24.222.87.162/32,Netflix +- IP-CIDR,37.143.80.10/32,Netflix +- IP-CIDR,37.143.80.14/32,Netflix +- IP-CIDR,37.143.80.6/32,Netflix +- IP-CIDR,37.143.86.34/32,Netflix +- IP-CIDR,37.143.86.50/32,Netflix +- IP-CIDR,37.143.86.66/32,Netflix +- IP-CIDR,37.143.86.82/32,Netflix +- IP-CIDR,40.129.34.173/32,Netflix +- IP-CIDR,40.129.34.175/32,Netflix +- IP-CIDR,40.129.34.177/32,Netflix +- IP-CIDR,40.133.138.47/32,Netflix +- IP-CIDR,40.133.138.57/32,Netflix +- IP-CIDR,43.245.105.1/32,Netflix +- IP-CIDR,43.245.105.1/32,Netflix +- IP-CIDR,43.245.105.11/32,Netflix +- IP-CIDR,43.245.105.11/32,Netflix +- IP-CIDR,43.245.105.129/32,Netflix +- IP-CIDR,43.245.105.13/32,Netflix +- IP-CIDR,43.245.105.9/32,Netflix +- IP-CIDR,43.245.105.9/32,Netflix +- IP-CIDR,45.121.219.34/32,Netflix +- IP-CIDR,45.57.56.130/32,Netflix +- IP-CIDR,49.231.114.6/32,Netflix +- IP-CIDR,49.231.121.6/32,Netflix +- IP-CIDR,50.125.239.30/32,Netflix +- IP-CIDR,50.125.68.250/32,Netflix +- IP-CIDR,50.27.152.107/32,Netflix +- IP-CIDR,50.27.152.119/32,Netflix +- IP-CIDR,50.46.97.70/32,Netflix +- IP-CIDR,51.148.80.10/32,Netflix +- IP-CIDR,51.148.80.18/32,Netflix +- IP-CIDR,51.148.80.22/32,Netflix +- IP-CIDR,51.148.80.6/32,Netflix +- IP-CIDR,58.27.11.201/32,Netflix +- IP-CIDR,58.27.11.201/32,Netflix +- IP-CIDR,58.27.38.199/32,Netflix +- IP-CIDR,62.127.102.10/32,Netflix +- IP-CIDR,62.127.102.14/32,Netflix +- IP-CIDR,62.127.102.18/32,Netflix +- IP-CIDR,62.127.102.2/32,Netflix +- IP-CIDR,62.127.102.22/32,Netflix +- IP-CIDR,62.127.102.26/32,Netflix +- IP-CIDR,62.127.102.30/32,Netflix +- IP-CIDR,62.127.102.34/32,Netflix +- IP-CIDR,62.127.102.38/32,Netflix +- IP-CIDR,62.127.102.42/32,Netflix +- IP-CIDR,62.127.102.46/32,Netflix +- IP-CIDR,62.127.102.54/32,Netflix +- IP-CIDR,62.127.102.58/32,Netflix +- IP-CIDR,62.127.102.6/32,Netflix +- IP-CIDR,62.127.102.62/32,Netflix +- IP-CIDR,62.252.213.64/32,Netflix +- IP-CIDR,62.252.213.68/32,Netflix +- IP-CIDR,62.252.213.70/32,Netflix +- IP-CIDR,62.252.213.72/32,Netflix +- IP-CIDR,62.252.213.74/32,Netflix +- IP-CIDR,62.252.213.76/32,Netflix +- IP-CIDR,62.252.213.78/32,Netflix +- IP-CIDR,62.252.213.80/32,Netflix +- IP-CIDR,62.252.213.84/32,Netflix +- IP-CIDR,62.252.213.86/32,Netflix +- IP-CIDR,62.252.213.88/32,Netflix +- IP-CIDR,62.253.139.0/32,Netflix +- IP-CIDR,62.253.139.11/32,Netflix +- IP-CIDR,62.253.139.129/32,Netflix +- IP-CIDR,62.253.139.13/32,Netflix +- IP-CIDR,62.253.139.131/32,Netflix +- IP-CIDR,62.253.139.133/32,Netflix +- IP-CIDR,62.253.139.135/32,Netflix +- IP-CIDR,62.253.139.137/32,Netflix +- IP-CIDR,62.253.139.139/32,Netflix +- IP-CIDR,62.253.139.141/32,Netflix +- IP-CIDR,62.253.139.3/32,Netflix +- IP-CIDR,62.253.139.5/32,Netflix +- IP-CIDR,62.253.139.7/32,Netflix +- IP-CIDR,62.253.139.9/32,Netflix +- IP-CIDR,62.254.47.0/32,Netflix +- IP-CIDR,62.254.47.128/32,Netflix +- IP-CIDR,62.254.47.130/32,Netflix +- IP-CIDR,62.254.47.132/32,Netflix +- IP-CIDR,62.254.47.2/32,Netflix +- IP-CIDR,62.254.47.4/32,Netflix +- IP-CIDR,62.255.44.0/32,Netflix +- IP-CIDR,62.255.44.128/32,Netflix +- IP-CIDR,62.255.44.130/32,Netflix +- IP-CIDR,62.255.44.132/32,Netflix +- IP-CIDR,62.255.44.2/32,Netflix +- IP-CIDR,62.255.44.4/32,Netflix +- IP-CIDR,62.4.253.129/32,Netflix +- IP-CIDR,62.4.253.131/32,Netflix +- IP-CIDR,62.4.253.133/32,Netflix +- IP-CIDR,62.4.253.135/32,Netflix +- IP-CIDR,62.4.253.137/32,Netflix +- IP-CIDR,62.4.253.139/32,Netflix +- IP-CIDR,62.4.253.143/32,Netflix +- IP-CIDR,62.4.253.145/32,Netflix +- IP-CIDR,62.4.253.147/32,Netflix +- IP-CIDR,62.4.253.149/32,Netflix +- IP-CIDR,62.4.253.151/32,Netflix +- IP-CIDR,62.4.253.153/32,Netflix +- IP-CIDR,62.4.253.155/32,Netflix +- IP-CIDR,62.4.253.157/32,Netflix +- IP-CIDR,62.4.253.159/32,Netflix +- IP-CIDR,62.4.253.161/32,Netflix +- IP-CIDR,62.4.253.163/32,Netflix +- IP-CIDR,62.4.253.165/32,Netflix +- IP-CIDR,62.4.253.167/32,Netflix +- IP-CIDR,62.4.253.169/32,Netflix +- IP-CIDR,62.4.253.171/32,Netflix +- IP-CIDR,62.4.253.173/32,Netflix +- IP-CIDR,62.4.253.175/32,Netflix +- IP-CIDR,62.4.253.177/32,Netflix +- IP-CIDR,62.4.253.179/32,Netflix +- IP-CIDR,62.4.253.181/32,Netflix +- IP-CIDR,62.4.253.183/32,Netflix +- IP-CIDR,62.4.253.185/32,Netflix +- IP-CIDR,62.4.253.187/32,Netflix +- IP-CIDR,62.4.253.189/32,Netflix +- IP-CIDR,62.4.253.191/32,Netflix +- IP-CIDR,62.75.21.17/32,Netflix +- IP-CIDR,62.75.21.18/32,Netflix +- IP-CIDR,62.75.21.19/32,Netflix +- IP-CIDR,62.75.21.20/32,Netflix +- IP-CIDR,62.75.21.3/32,Netflix +- IP-CIDR,62.75.21.33/32,Netflix +- IP-CIDR,62.75.21.4/32,Netflix +- IP-CIDR,64.126.2.110/32,Netflix +- IP-CIDR,64.126.2.246/32,Netflix +- IP-CIDR,64.136.255.34/32,Netflix +- IP-CIDR,64.189.192.66/32,Netflix +- IP-CIDR,64.30.98.210/32,Netflix +- IP-CIDR,64.30.98.214/32,Netflix +- IP-CIDR,64.33.157.254/32,Netflix +- IP-CIDR,64.4.89.225/32,Netflix +- IP-CIDR,64.4.89.227/32,Netflix +- IP-CIDR,64.4.89.229/32,Netflix +- IP-CIDR,64.4.89.231/32,Netflix +- IP-CIDR,64.4.89.233/32,Netflix +- IP-CIDR,64.4.89.235/32,Netflix +- IP-CIDR,64.4.89.237/32,Netflix +- IP-CIDR,64.4.89.239/32,Netflix +- IP-CIDR,64.4.91.113/32,Netflix +- IP-CIDR,64.4.91.115/32,Netflix +- IP-CIDR,64.4.91.116/32,Netflix +- IP-CIDR,64.4.91.118/32,Netflix +- IP-CIDR,64.50.224.130/32,Netflix +- IP-CIDR,64.50.228.250/32,Netflix +- IP-CIDR,64.50.228.254/32,Netflix +- IP-CIDR,64.53.14.5/32,Netflix +- IP-CIDR,64.53.14.6/32,Netflix +- IP-CIDR,64.53.14.7/32,Netflix +- IP-CIDR,64.53.14.70/32,Netflix +- IP-CIDR,64.53.14.71/32,Netflix +- IP-CIDR,65.48.147.74/32,Netflix +- IP-CIDR,65.75.64.210/32,Netflix +- IP-CIDR,65.75.64.211/32,Netflix +- IP-CIDR,66.18.33.62/32,Netflix +- IP-CIDR,66.18.34.46/32,Netflix +- IP-CIDR,66.18.34.50/32,Netflix +- IP-CIDR,66.232.66.130/32,Netflix +- IP-CIDR,66.232.66.134/32,Netflix +- IP-CIDR,66.232.66.154/32,Netflix +- IP-CIDR,66.35.4.54/32,Netflix +- IP-CIDR,66.44.84.130/32,Netflix +- IP-CIDR,66.44.84.134/32,Netflix +- IP-CIDR,66.44.84.178/32,Netflix +- IP-CIDR,66.44.84.182/32,Netflix +- IP-CIDR,66.44.84.186/32,Netflix +- IP-CIDR,66.60.128.139/32,Netflix +- IP-CIDR,66.60.128.46/32,Netflix +- IP-CIDR,66.76.204.81/32,Netflix +- IP-CIDR,66.76.32.17/32,Netflix +- IP-CIDR,66.76.32.19/32,Netflix +- IP-CIDR,66.76.35.241/32,Netflix +- IP-CIDR,66.90.138.0/32,Netflix +- IP-CIDR,66.90.138.10/32,Netflix +- IP-CIDR,66.90.138.12/32,Netflix +- IP-CIDR,66.90.138.15/32,Netflix +- IP-CIDR,66.90.138.17/32,Netflix +- IP-CIDR,66.90.138.2/32,Netflix +- IP-CIDR,66.90.138.82/32,Netflix +- IP-CIDR,66.90.138.86/32,Netflix +- IP-CIDR,66.90.138.88/32,Netflix +- IP-CIDR,66.90.138.94/32,Netflix +- IP-CIDR,66.90.139.90/32,Netflix +- IP-CIDR,67.218.93.89/32,Netflix +- IP-CIDR,67.218.93.91/32,Netflix +- IP-CIDR,67.221.221.17/32,Netflix +- IP-CIDR,67.221.221.29/32,Netflix +- IP-CIDR,67.221.221.31/32,Netflix +- IP-CIDR,68.65.44.186/32,Netflix +- IP-CIDR,68.65.44.190/32,Netflix +- IP-CIDR,69.147.194.190/32,Netflix +- IP-CIDR,69.160.211.50/32,Netflix +- IP-CIDR,70.33.57.75/32,Netflix +- IP-CIDR,71.169.136.4/32,Netflix +- IP-CIDR,71.169.136.5/32,Netflix +- IP-CIDR,71.169.136.6/32,Netflix +- IP-CIDR,71.169.136.7/32,Netflix +- IP-CIDR,71.169.137.4/32,Netflix +- IP-CIDR,71.169.137.6/32,Netflix +- IP-CIDR,71.169.137.7/32,Netflix +- IP-CIDR,71.33.48.107/32,Netflix +- IP-CIDR,71.33.48.109/32,Netflix +- IP-CIDR,71.33.48.113/32,Netflix +- IP-CIDR,71.33.48.115/32,Netflix +- IP-CIDR,71.33.48.121/32,Netflix +- IP-CIDR,71.33.48.123/32,Netflix +- IP-CIDR,71.33.48.37/32,Netflix +- IP-CIDR,71.33.48.39/32,Netflix +- IP-CIDR,71.33.48.43/32,Netflix +- IP-CIDR,71.33.48.65/32,Netflix +- IP-CIDR,71.33.48.67/32,Netflix +- IP-CIDR,71.33.48.69/32,Netflix +- IP-CIDR,71.33.48.7/32,Netflix +- IP-CIDR,71.33.48.71/32,Netflix +- IP-CIDR,71.33.48.73/32,Netflix +- IP-CIDR,71.33.48.75/32,Netflix +- IP-CIDR,71.33.48.77/32,Netflix +- IP-CIDR,71.33.48.79/32,Netflix +- IP-CIDR,71.33.48.89/32,Netflix +- IP-CIDR,71.33.48.91/32,Netflix +- IP-CIDR,71.33.48.93/32,Netflix +- IP-CIDR,71.33.48.95/32,Netflix +- IP-CIDR,71.33.48.97/32,Netflix +- IP-CIDR,71.33.48.99/32,Netflix +- IP-CIDR,71.33.49.1/32,Netflix +- IP-CIDR,71.33.49.17/32,Netflix +- IP-CIDR,71.33.49.21/32,Netflix +- IP-CIDR,71.33.49.27/32,Netflix +- IP-CIDR,71.33.49.29/32,Netflix +- IP-CIDR,71.33.49.3/32,Netflix +- IP-CIDR,71.33.49.31/32,Netflix +- IP-CIDR,71.33.49.33/32,Netflix +- IP-CIDR,71.33.49.35/32,Netflix +- IP-CIDR,71.33.49.5/32,Netflix +- IP-CIDR,71.33.49.7/32,Netflix +- IP-CIDR,71.33.49.9/32,Netflix +- IP-CIDR,71.33.50.129/32,Netflix +- IP-CIDR,71.33.50.131/32,Netflix +- IP-CIDR,71.33.50.133/32,Netflix +- IP-CIDR,71.33.50.225/32,Netflix +- IP-CIDR,71.33.50.241/32,Netflix +- IP-CIDR,71.33.50.69/32,Netflix +- IP-CIDR,71.33.50.71/32,Netflix +- IP-CIDR,71.33.50.85/32,Netflix +- IP-CIDR,71.33.50.87/32,Netflix +- IP-CIDR,71.33.50.89/32,Netflix +- IP-CIDR,72.22.30.34/32,Netflix +- IP-CIDR,72.23.10.194/32,Netflix +- IP-CIDR,72.23.10.198/32,Netflix +- IP-CIDR,72.240.7.141/32,Netflix +- IP-CIDR,72.252.113.189/32,Netflix +- IP-CIDR,74.204.125.22/32,Netflix +- IP-CIDR,74.81.99.178/32,Netflix +- IP-CIDR,74.81.99.182/32,Netflix +- IP-CIDR,74.81.99.186/32,Netflix +- IP-CIDR,74.85.65.115/32,Netflix +- IP-CIDR,76.165.16.66/32,Netflix +- IP-CIDR,76.78.67.118/32,Netflix +- IP-CIDR,78.146.119.11/32,Netflix +- IP-CIDR,78.146.119.141/32,Netflix +- IP-CIDR,78.146.119.143/32,Netflix +- IP-CIDR,78.146.119.207/32,Netflix +- IP-CIDR,78.146.119.39/32,Netflix +- IP-CIDR,78.146.119.41/32,Netflix +- IP-CIDR,78.146.119.47/32,Netflix +- IP-CIDR,78.146.119.7/32,Netflix +- IP-CIDR,80.64.176.144/32,Netflix +- IP-CIDR,80.64.176.146/32,Netflix +- IP-CIDR,80.64.176.148/32,Netflix +- IP-CIDR,81.244.254.129/32,Netflix +- IP-CIDR,81.244.254.131/32,Netflix +- IP-CIDR,81.3.201.194/32,Netflix +- IP-CIDR,81.3.201.202/32,Netflix +- IP-CIDR,81.3.201.203/32,Netflix +- IP-CIDR,81.45.152.0/32,Netflix +- IP-CIDR,81.45.152.10/32,Netflix +- IP-CIDR,81.45.152.12/32,Netflix +- IP-CIDR,81.45.152.122/32,Netflix +- IP-CIDR,81.45.152.124/32,Netflix +- IP-CIDR,81.45.152.126/32,Netflix +- IP-CIDR,81.45.152.14/32,Netflix +- IP-CIDR,81.45.152.16/32,Netflix +- IP-CIDR,81.45.152.18/32,Netflix +- IP-CIDR,81.45.152.2/32,Netflix +- IP-CIDR,81.45.152.20/32,Netflix +- IP-CIDR,81.45.152.22/32,Netflix +- IP-CIDR,81.45.152.4/32,Netflix +- IP-CIDR,81.45.152.58/32,Netflix +- IP-CIDR,81.45.152.6/32,Netflix +- IP-CIDR,81.45.152.60/32,Netflix +- IP-CIDR,81.45.152.62/32,Netflix +- IP-CIDR,81.45.152.64/32,Netflix +- IP-CIDR,81.45.152.66/32,Netflix +- IP-CIDR,81.45.152.68/32,Netflix +- IP-CIDR,81.45.152.70/32,Netflix +- IP-CIDR,81.45.152.72/32,Netflix +- IP-CIDR,81.45.152.74/32,Netflix +- IP-CIDR,81.45.152.76/32,Netflix +- IP-CIDR,81.45.152.78/32,Netflix +- IP-CIDR,81.45.152.8/32,Netflix +- IP-CIDR,81.45.152.80/32,Netflix +- IP-CIDR,81.45.152.82/32,Netflix +- IP-CIDR,81.45.152.84/32,Netflix +- IP-CIDR,81.45.152.86/32,Netflix +- IP-CIDR,81.91.205.193/32,Netflix +- IP-CIDR,82.149.120.162/32,Netflix +- IP-CIDR,87.79.22.170/32,Netflix +- IP-CIDR,89.184.160.146/32,Netflix +- IP-CIDR,89.184.160.147/32,Netflix +- IP-CIDR,89.27.129.56/32,Netflix +- IP-CIDR,89.27.129.68/32,Netflix +- IP-CIDR,89.27.129.72/32,Netflix +- IP-CIDR,89.27.129.90/32,Netflix +- IP-CIDR,89.27.129.91/32,Netflix +- IP-CIDR,89.27.129.92/32,Netflix +- IP-CIDR,89.27.129.93/32,Netflix +- IP-CIDR,89.27.129.94/32,Netflix +- IP-CIDR,89.27.244.121/32,Netflix +- IP-CIDR,89.27.244.123/32,Netflix +- IP-CIDR,89.27.244.125/32,Netflix +- IP-CIDR,89.27.244.127/32,Netflix +- IP-CIDR,89.27.244.131/32,Netflix +- IP-CIDR,89.27.244.133/32,Netflix +- IP-CIDR,89.27.244.135/32,Netflix +- IP-CIDR,89.96.194.106/32,Netflix +- IP-CIDR,89.96.194.114/32,Netflix +- IP-CIDR,89.96.194.118/32,Netflix +- IP-CIDR,89.96.194.2/32,Netflix +- IP-CIDR,89.96.194.6/32,Netflix +- IP-CIDR,89.96.194.90/32,Netflix +- IP-CIDR,89.96.194.94/32,Netflix +- IP-CIDR,90.255.251.226/32,Netflix +- IP-CIDR,90.255.251.230/32,Netflix +- IP-CIDR,90.255.251.234/32,Netflix +- IP-CIDR,90.255.254.130/32,Netflix +- IP-CIDR,90.255.254.134/32,Netflix +- IP-CIDR,90.255.254.138/32,Netflix +- IP-CIDR,90.255.254.142/32,Netflix +- IP-CIDR,90.255.254.146/32,Netflix +- IP-CIDR,90.255.254.150/32,Netflix +- IP-CIDR,90.255.254.194/32,Netflix +- IP-CIDR,90.255.254.2/32,Netflix +- IP-CIDR,90.255.254.202/32,Netflix +- IP-CIDR,90.255.254.206/32,Netflix +- IP-CIDR,90.255.254.210/32,Netflix +- IP-CIDR,90.255.254.214/32,Netflix +- IP-CIDR,90.255.254.6/32,Netflix +- IP-CIDR,90.255.254.66/32,Netflix +- IP-CIDR,90.255.254.70/32,Netflix +- IP-CIDR,94.245.201.194/32,Netflix +- IP-CIDR,94.245.201.202/32,Netflix +- IP-CIDR,94.245.201.203/32,Netflix +- IP-CIDR,94.245.201.218/32,Netflix +- IP-CIDR,96.20.0.66/32,Netflix +- IP-CIDR,96.20.0.70/32,Netflix +- IP-CIDR,96.20.0.74/32,Netflix +- IP-CIDR,96.20.0.78/32,Netflix +- IP-CIDR,96.20.0.82/32,Netflix +- IP-CIDR,96.21.0.66/32,Netflix +- IP-CIDR,96.21.0.70/32,Netflix +- IP-CIDR,96.21.0.74/32,Netflix +- IP-CIDR,96.21.0.78/32,Netflix +- IP-CIDR,96.22.15.66/32,Netflix +- IP-CIDR,96.22.15.70/32,Netflix +- IP-CIDR,96.22.15.74/32,Netflix +- IP-CIDR,96.22.15.78/32,Netflix +- IP-CIDR,96.23.20.66/32,Netflix +- IP-CIDR,96.23.20.70/32,Netflix +- IP-CIDR,96.23.20.74/32,Netflix +- IP-CIDR,96.23.20.78/32,Netflix +- IP-CIDR,96.4.63.99/32,Netflix # > Spotify # - USER-AGENT,*Spotify*,Spotify @@ -8707,7 +9606,8 @@ Rule: # > Fast - DOMAIN-SUFFIX,fast.com,Speedtest -# > Speedtest +# > Speedtest by Ookla +# - USER-AGENT,SpeedTest* - DOMAIN-KEYWORD,speedtest,Speedtest - DOMAIN-SUFFIX,ooklaserver.net,Speedtest @@ -9394,8 +10294,6 @@ Rule: - DOMAIN-SUFFIX,wikimedia.org,Proxy - DOMAIN-SUFFIX,wikipedia.com,Proxy - DOMAIN-SUFFIX,wikipedia.org,Proxy -- DOMAIN-SUFFIX,windows.com,Proxy -- DOMAIN-SUFFIX,windows.net,Proxy - DOMAIN-SUFFIX,wn.com,Proxy - DOMAIN-SUFFIX,wordpress.com,Proxy - DOMAIN-SUFFIX,workflow.is,Proxy diff --git a/package/ctcgfw/luci-app-openclash/files/etc/openclash/openclash_version b/package/ctcgfw/luci-app-openclash/files/etc/openclash/openclash_version index 3d4aac936f..ac95424cfb 100644 --- a/package/ctcgfw/luci-app-openclash/files/etc/openclash/openclash_version +++ b/package/ctcgfw/luci-app-openclash/files/etc/openclash/openclash_version @@ -1,2 +1,2 @@ -v0.37.3-beta -data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXMAAAAqCAMAAAB2kksrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjk3QUMwNzhEN0MxMjExRUE5RTMxRjg5ODlDRkNDODM0IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjk3QUMwNzhFN0MxMjExRUE5RTMxRjg5ODlDRkNDODM0Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTdBQzA3OEI3QzEyMTFFQTlFMzFGODk4OUNGQ0M4MzQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OTdBQzA3OEM3QzEyMTFFQTlFMzFGODk4OUNGQ0M4MzQiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz67KDIWAAADAFBMVEVilLFtbW09PT0bhcEHXpEHVoSEvN2EhIS6urqGv98khLuiwNIJeLg5lckFVYKCgoIGcKyenp4KaqEJca3a2tqlpaXR4ux4eHjf39/R5vLn5+eStck/Pz+izOUkapLGxsahoaHOzs4IXIxpaWllnr0FYJWSu9KRkZFxcXG/v79FgKJGRkasrKy1tbUxk8wEXI4Gbamy1uoJdbTKyspmrdViYmJXpdI0dJo2kcVkq9NLS0tDQ0Pg4OCTxeGLi4sGdLJFmsp3t9sEWIgEU4BGirF2dnYXgL3AwMCcnJwXYo3CwsJBQUGx0OIIZJllqM5CQkImcZsFaaK2trajxdmEss0KYZOXl5cFcrArjsZKn8/S0tLQ0NAKb6hlZWUnicGNjY3B1OAJWIWyythHnM2hv9AJaJ5zobuxzdwHbKVFkbyDrcVyn7hzsdQWaJekzuavr69gYGAHZp3w9feiyd81hrQZdaqUlJQGZJrB2edJns4FYph0dHRViqpGgqSJweJTiahZp9N0p8QRgsMCc7QBcrNRUVFUVFRVVVVSUlILfL0FdrdWVlYKe7wHeLkEdrYEdbYDdLQDdLUOgMAOf8ADdbUSg8NXV1cSg8QShMQAcrIThMUGd7gOf78Nfr8Nfr4Mfb4Mfb0IebkJe7sJeroJers6OjqqqqrU1NTV1dVISEirq6upqak7OzuAgIB+fn7w9/tJSUmBgYHq6urC3u5MTEzz8/P19fXh7/f09PSDvNx/f3/g6vDv9PfB1eCCqcDg6u+Fvt7A1N/B3e2JiYmErMLB3e7o6OgFZ58UXonB3u7g7vYFZZtGm8vW1taEvd1Hm8yDq8J0s9gFZ6CDqsGEtNDD3+8LerlVos9Inc0Fa6aDu9zC3+8GdbQIWIeDr8jv9voLdK8JcKsKeLdEmcpEgKPB1+NGiK3P5PFhmLeAudkHZ50wk8szeqPR4OhUja1TU1MPgMEQgcJZWVlaWlpfX19bW1tcXFxNTU1eXl5PT09QUFBYWFhdXV1OTk7///////8QxAmxAAABAHRSTlP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AU/cHJQAADCBJREFUeNrsVwlUVWUevzzAJxrIE+gJPFEwRb0wrrg8EEhMR9ESKzVHPYOp1Vja6iTqVDMjgsDsw8xkGyi78RDZjC33hSIty6wsbbaWqdc4TiDGj/l/313evQ8wztTxnPeOv3O433/9/e/9fffdexG6umo2jLjsDnjWBfCDn9m6uoSuuM2X3QN/dgl8Htwl1IxudxP8yTXwuU3Y4C6St//RRfAzYfQ37oKfuwg+F765ofn1hhtp/m9XgfC12+CG5tcfX7kKhP+6DW5ofv3xO1eB8B+3we9dBT1qboyKior0+P5VWWE0rlAdD6OxLz1mo7mP7M/1hq98b/W51bdb1PNpHx+feyRn6T0O6MvuoaKnPZ2bfeDz3P8N4ZIzYhbVgCNuccyl7whjlFHn12Cxas/BpL5QvI7X+zjs+V7g+Ta/nLc9ddGlUhS1TzPPBw5oq9ZLIZuPEydp3tu45zf5bHr+muimubkSCCw1mcJplPG7ah6FKK2bNQZx6tYCkd+v5i/0gvdx8y2zbrkZ7+uim4AvDh8e+Ciw6YUXnru9UcYXgLYKqA89HFoPvKrnfNU50Mcch3BVj5g4VHsYGKym6kFXvyNIc50/GvCQzcWozugLhWgQ+zjsxZ4xGfVzU1NT5z6KydrwpoFhqSxcj/XkDU6VcRj12qrGrTy6CrV6UtL1xd5wrRyH0E2l6hhDbIXVKhoMWSP6qq15kG57Bg3y6FnzkhAMl81iLOqUi809M8Y4ae6hHxKjVCh4qWdMwFqv5ReWex3GBG34Qmqq1+DBa84fxvvkLb9bwkOPQtBWpaZGrBm8JmIroCclXV96aekmX01ok+LxnBrU1Uhw1rwGJss2bmVZmVGMvdzbi2L5uDgOKL1aitKYUnoMsWwpewHUlPI6IIa7xTHckaCybzOhUhaQ7vhcEm4Oy1fGX9WRXx1eycOMshQScTwPzYmRKz144yLtqWfKmIJa2arFlMxMG/7xDtnvbIUtU4MLCz5myzuj8Jgmuh71Edqquy/w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 \ No newline at end of file +v0.37.4-beta +data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXMAAAAqCAMAAAB2kksrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkRFOUVGREY5ODNERDExRUE5NkVBQTY2MTM2NzFDNjI5IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkRFOUVGREZBODNERDExRUE5NkVBQTY2MTM2NzFDNjI5Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6REU5RUZERjc4M0REMTFFQTk2RUFBNjYxMzY3MUM2MjkiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6REU5RUZERjg4M0REMTFFQTk2RUFBNjYxMzY3MUM2MjkiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5yTMS+AAADAFBMVEVtbW09PT11tdkHVoQKa6GEhIS6uroGVYIkhLtTiqoGXpGTu9NFmsoahMGCgoKenp6Gv9/a2tqlpaXR4uxlnr54eHjf39/n5+c/Pz+izOUGcKzGxsahoaHOzs5paWnR5vIkapIJca2RkZFxcXG/v79GRkasrKy1tbUxk8w0dZsIXIsFYJXKysoGbalmrdViYmJXpdJFgKJkq9NLS0tDQ0Pg4OCTxeGLi4tilLArjsZ2dnay1uoGdLIXgL3AwMCcnJwIZJmiwNEEWYnCwsIEU4BBQUGx0eNGibCStchCQkIKYZPw9fcmcZy2trYXYo2jx9yEss2Xl5eDrsbB1OAJdbQFcrBKn8/S0tLQ0NAGXI1FkbxlZWUnicGNjY2yytgGZJo4lMhHnM1klrIFaaJzobuxzdw2kMUEXI5zsdQWaJevr69gYGAHZ52iyd8Zdapyn7iUlJQHbKXB2ecJWIVJns47l8uDqsF0dHSkzuYFYpeJweJZptM1h7URgsMCc7QBcrNRUVFUVFRVVVVSUlIFdrcLfL1WVlYHeLkKe7wGd7gOf8ADdLUEdrYOgMAEdbYDdbUDdLQSg8NXV1cSg8QShMQThMUAcrIOf78Nfr8Nfr4Mfb4Mfb0Je7sJersIebkJeroIebo6OjqqqqrU1NTV1dWrq6tISEipqak7OzuAgIB+fn7w9/vC3u5JSUmBgYHq6uqEvN1MTEz19fXz8/OEvd3B3u709PTh7/eFvt5/f3+DvNyCqcDB3e3v9PfB1eDg6u+JiYno6Ojg6vChv9DB3e7A1N/g7vaErMIFZZsFZ58UXomFvd4JeLhHm8zW1taDq8KCutsFa6bC3+8FZ6ALb6iEtNALernD3+9Inc05lckJaaDv9vqFvd0GWIcGdbQLdK+Dr8jR4OgIV4TB1+NVos8IcKwKebgHXo+yz+DB1+Qwk8ujxdjP5PFnqs9kmbdTU1MPgMEQgcJZWVlaWlpfX19bW1tcXFxNTU1eXl5PT09QUFBYWFhdXV1OTk7///////9VHktaAAABAHRSTlP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AU/cHJQAADBRJREFUeNrsVwt0FNUZniUu4ZG4SWTJEggJgUnKIwTYhIAEyiMR5FWxIBU4iICiiIISIahtCTGv1to2fWhbQDZPzBJC3pGQ8IaAIKKgglJFxbRaXUupCcF86X/vPHZml2BObTln9/Cdk7n/8/tnvjs7MxHa28tX9r/iDfiDB+AHz9jb24X2uPVXvAO/9wh8HtYulA9s8RL8zjPwuV1Y6S2St/zWQ/CMMPBbb8FPPQSfC9/e0vxmw4s0/6enQPjGa3BL85uPrz0Fwr+9Brc0v/n4ladA+JfX4BeegutqboyMjIz4P+zGQqNxoeoIRmNnesxGcyfZX+oQT3d5psvTrsGv/Z8NCAi4T3LG3ufEdfrvG+sSCUDAS/81hMuuiJlVDo64OTGXvyeMkUadX445qj0BwzpD8Qbe6OSwlzuA/7v8ct71/4U2OlaKouZZ5gXACTeCZ4EAl1CAW8SJ5IDkl28IN83NpUBggckUStON31fzSERq3YxBiFO3Foj432r+pw7wFu7oNbXXHXhLF00GLh49OmkGkEzelw0yLgKu/U/bgVqXWK1bpHM5DuGaHjFxqBAMDFZTxe3XvidIc50/EFAGzkFFWmcoRIPYyWF/vj6G48DstWvXzp6B4dpw8qTwtSx8ACnk3bZWxlEccOkfa8cM1LoEa90inctxCG4qVcQYYkusVtFgyOjfWW3Nt+u25/bbhetrXhiMfrKZj1ltcrH5+owxLpoL+iExSoWCv1wf47C86cyHZ5qOYpw2/OHatU233baKRH6LvDPTJTw6A0v17f5hWNqAWhfSWhYZm3xOE0pWvFpNdXKyrkaCq+blMFk2civDyox87OTeTuTLxzlxQMG1AhTEFNBjiGUL2AugvIDXATHczY/hjgSVfaMJpbKAdMfnkHATWL40/pqO/Fq/Uh5mlAWQiON5aEKMXCnwxlnaU0+XMQI1slWDEenpdkz9jOx3RsKersGHE0+w5Z2eeFwTTcGBIek67MCkj/+OWn0wnXQdUcPeBiMk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 \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/controller/openclash.lua b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/controller/openclash.lua index 142ea1ed6b..66d2672422 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/controller/openclash.lua +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/controller/openclash.lua @@ -5,8 +5,9 @@ function index() return end - - entry({"admin", "services", "openclash"},alias("admin", "services", "openclash", "client"), _("OpenClash"), 50).dependent = true + local page = entry({"admin", "services", "openclash"}, alias("admin", "services", "openclash", "client"), _("OpenClash"), 50) + page.dependent = true + page.acl_depends = { "luci-app-openclash" } entry({"admin", "services", "openclash", "client"},form("openclash/client"),_("Overviews"), 20).leaf = true entry({"admin", "services", "openclash", "status"},call("action_status")).leaf=true entry({"admin", "services", "openclash", "state"},call("action_state")).leaf=true diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/settings.lua b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/settings.lua index 188ea72b97..2f7f7c4e0a 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/settings.lua +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/settings.lua @@ -158,6 +158,7 @@ o = s:taboption("dns", ListValue, "ipv6_enable", translate("Enable ipv6 Resolve" o.description = font_red..bold_on..translate("Force Enable to Resolve ipv6 DNS Requests")..bold_off..font_off o:value("0", translate("Disable")) o:value("1", translate("Enable")) +o:depends("en_mode", "redir-host") o.default=0 o = s:taboption("dns", ListValue, "disable_masq_cache", translate("Disable Dnsmasq's DNS Cache")) diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/myip.htm b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/myip.htm index bffa5a7a0b..05def4a31b 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/myip.htm +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/myip.htm @@ -125,7 +125,7 @@
- +
diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/status.htm b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/status.htm index 2275dc2df6..9bd57d677c 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/status.htm +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/status.htm @@ -1,5 +1,5 @@
- +

diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/index.html b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/index.html index ab4a1863ad..e079ebfadd 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/index.html +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/index.html @@ -1 +1 @@ -Clash

\ No newline at end of file +Clash
\ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.693efc9234a08d249710.min.js b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.587bc7edc5f3d06c94f4.min.js similarity index 99% rename from package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.693efc9234a08d249710.min.js rename to package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.587bc7edc5f3d06c94f4.min.js index 6f912334dc..0823b091f0 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.693efc9234a08d249710.min.js +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/dashboard/js/1.bundle.587bc7edc5f3d06c94f4.min.js @@ -1,2 +1,2 @@ -/*! For license information please see 1.bundle.693efc9234a08d249710.min.js.LICENSE.txt */ +/*! For license information please see 1.bundle.587bc7edc5f3d06c94f4.min.js.LICENSE.txt */ (window.webpackJsonp=window.webpackJsonp||[]).push([[1],[function(e,t,n){"use strict";e.exports=n(50)},function(e,t,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t=0||(o[n]=e[n]);return o}n.d(t,"a",(function(){return r}))},,,,function(e,t,n){e.exports=n(54)()},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}}(),e.exports=n(51)},function(e,t,n){var r=n(39)(Object,"create");e.exports=r},function(e,t,n){var r=n(109);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},function(e,t,n){var r=n(115);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},,function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(r){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){var n=Array.isArray;e.exports=n},function(e,t,n){var r=n(38),o=n(88);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t,n){var r=n(22).Symbol;e.exports=r},function(e,t,n){var r=n(85),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();e.exports=i},function(e,t,n){e.exports=function(){"use strict";var e="millisecond",t="second",n="minute",r="hour",o="day",i="week",a="month",u="quarter",l="year",s=/^(\d{4})-?(\d{1,2})-?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?.?(\d{1,3})?$/,c=/\[([^\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,f=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},d={s:f,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),o=n%60;return(t<=0?"+":"-")+f(r,2,"0")+":"+f(o,2,"0")},m:function(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),r=e.clone().add(n,a),o=t-r<0,i=e.clone().add(n+(o?-1:1),a);return Number(-(n+(t-r)/(o?r-i:i-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(s){return{M:a,y:l,w:i,d:o,D:"date",h:r,m:n,s:t,ms:e,Q:u}[s]||String(s||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}},p={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},h="en",m={};m[h]=p;var v=function(e){return e instanceof w},g=function(e,t,n){var r;if(!e)return h;if("string"==typeof e)m[e]&&(r=e),t&&(m[e]=t,r=e);else{var o=e.name;m[o]=e,r=o}return!n&&r&&(h=r),r||!n&&h},y=function(e,t,n){if(v(e))return e.clone();var r=t?"string"==typeof t?{format:t,pl:n}:t:{};return r.date=e,new w(r)},b=d;b.l=g,b.i=v,b.w=function(e,t){return y(e,{locale:t.$L,utc:t.$u,$offset:t.$offset})};var w=function(){function f(e){this.$L=this.$L||g(e.locale,null,!0),this.parse(e)}var d=f.prototype;return d.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(b.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(s);if(r)return n?new Date(Date.UTC(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)):new Date(r[1],r[2]-1,r[3]||1,r[4]||0,r[5]||0,r[6]||0,r[7]||0)}return new Date(t)}(e),this.init()},d.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},d.$utils=function(){return b},d.isValid=function(){return!("Invalid Date"===this.$d.toString())},d.isSame=function(e,t){var n=y(e);return this.startOf(t)<=n&&n<=this.endOf(t)},d.isAfter=function(e,t){return y(e)=0;d--){var p=o[d];"."===p?c(o,d):".."===p?(c(o,d),f++):f&&(c(o,d),f--)}if(!u)for(;f--;f)o.unshift("..");!u||""===o[0]||o[0]&&s(o[0])||o.unshift("");var h=o.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function d(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var p=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=d(t),o=d(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1};var h=function(e,t){if(!e)throw new Error("Invariant failed")};function m(e){return"/"===e.charAt(0)?e:"/"+e}function v(e){return"/"===e.charAt(0)?e.substr(1):e}function g(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function y(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function b(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function w(e,t,n,r){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(o=Object(l.a)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(i){throw i instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):i}return n&&(o.key=n),r?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=f(o.pathname,r.pathname)):o.pathname=r.pathname:o.pathname||(o.pathname="/"),o}function x(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"==typeof e?e(t,n):e;"string"==typeof i?"function"==typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,r):n.push(r),f({action:"PUSH",location:r,index:t,entries:n})}}))},replace:function(e,t){var r=w(e,t,d(),g.location);c.confirmTransitionTo(r,"REPLACE",n,(function(e){e&&(g.entries[g.index]=r,f({action:"REPLACE",location:r}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=g.index+e;return t>=0&&t=200&&e<300}};l.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],(function(e){l.headers[e]={}})),r.forEach(["post","put","patch"],(function(e){l.headers[e]=r.merge(i)})),e.exports=l}).call(this,n(65))},function(e,t,n){"use strict";var r=n(5),o=n(67),i=n(30),a=n(69),u=n(72),l=n(73),s=n(34);e.exports=function(e){return new Promise((function(t,c){var f=e.data,d=e.headers;r.isFormData(f)&&delete d["Content-Type"];var p=new XMLHttpRequest;if(e.auth){var h=e.auth.username||"",m=e.auth.password||"";d.Authorization="Basic "+btoa(h+":"+m)}var v=a(e.baseURL,e.url);if(p.open(e.method.toUpperCase(),i(v,e.params,e.paramsSerializer),!0),p.timeout=e.timeout,p.onreadystatechange=function(){if(p&&4===p.readyState&&(0!==p.status||p.responseURL&&0===p.responseURL.indexOf("file:"))){var n="getAllResponseHeaders"in p?u(p.getAllResponseHeaders()):null,r={data:e.responseType&&"text"!==e.responseType?p.response:p.responseText,status:p.status,statusText:p.statusText,headers:n,config:e,request:p};o(t,c,r),p=null}},p.onabort=function(){p&&(c(s("Request aborted",e,"ECONNABORTED",p)),p=null)},p.onerror=function(){c(s("Network Error",e,null,p)),p=null},p.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),c(s(t,e,"ECONNABORTED",p)),p=null},r.isStandardBrowserEnv()){var g=n(74),y=(e.withCredentials||l(v))&&e.xsrfCookieName?g.read(e.xsrfCookieName):void 0;y&&(d[e.xsrfHeaderName]=y)}if("setRequestHeader"in p&&r.forEach(d,(function(e,t){void 0===f&&"content-type"===t.toLowerCase()?delete d[t]:p.setRequestHeader(t,e)})),r.isUndefined(e.withCredentials)||(p.withCredentials=!!e.withCredentials),e.responseType)try{p.responseType=e.responseType}catch(b){if("json"!==e.responseType)throw b}"function"==typeof e.onDownloadProgress&&p.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&p.upload&&p.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){p&&(p.abort(),c(e),p=null)})),void 0===f&&(f=null),p.send(f)}))}},function(e,t,n){"use strict";var r=n(68);e.exports=function(e,t,n,o,i){var a=new Error(e);return r(a,t,n,o,i)}},function(e,t,n){"use strict";var r=n(5);e.exports=function(e,t){t=t||{};var n={},o=["url","method","params","data"],i=["headers","auth","proxy"],a=["baseURL","url","transformRequest","transformResponse","paramsSerializer","timeout","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","maxContentLength","validateStatus","maxRedirects","httpAgent","httpsAgent","cancelToken","socketPath"];r.forEach(o,(function(e){void 0!==t[e]&&(n[e]=t[e])})),r.forEach(i,(function(o){r.isObject(t[o])?n[o]=r.deepMerge(e[o],t[o]):void 0!==t[o]?n[o]=t[o]:r.isObject(e[o])?n[o]=r.deepMerge(e[o]):void 0!==e[o]&&(n[o]=e[o])})),r.forEach(a,(function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])}));var u=o.concat(i).concat(a),l=Object.keys(t).filter((function(e){return-1===u.indexOf(e)}));return r.forEach(l,(function(r){void 0!==t[r]?n[r]=t[r]:void 0!==e[r]&&(n[r]=e[r])})),n}},function(e,t,n){"use strict";function r(e){this.message=e}r.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},r.prototype.__CANCEL__=!0,e.exports=r},function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty,o="~";function i(){}function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function u(e,t,n,r,i){if("function"!=typeof n)throw new TypeError("The listener must be a function");var u=new a(n,r||e,i),l=o?o+t:t;return e._events[l]?e._events[l].fn?e._events[l]=[e._events[l],u]:e._events[l].push(u):(e._events[l]=u,e._eventsCount++),e}function l(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function s(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(o=!1)),s.prototype.eventNames=function(){var e,t,n=[];if(0===this._eventsCount)return n;for(t in e=this._events)r.call(e,t)&&n.push(o?t.slice(1):t);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},s.prototype.listeners=function(e){var t=o?o+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,i=n.length,a=new Array(i);rO.length&&O.push(e)}function z(e,t,n){return null==e?0:function e(t,n,r,o){var u=typeof t;"undefined"!==u&&"boolean"!==u||(t=null);var l=!1;if(null===t)l=!0;else switch(u){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case i:case a:l=!0}}if(l)return r(o,t,""===n?"."+A(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var s=0;s