From 2411859afeae640a90804d2aeccf85c19fb3c729 Mon Sep 17 00:00:00 2001 From: Teaffanie <70811472+Teaffanie@users.noreply.github.com> Date: Fri, 11 Sep 2020 20:11:49 +0800 Subject: [PATCH] luci-app-openclash: bump to v0.40.2-beta --- package/ctcgfw/luci-app-openclash/Makefile | 2 +- .../files/etc/init.d/openclash | 98 +- .../files/etc/openclash/china_ip_route.ipset | 5971 ++++++++ .../files/etc/openclash/default.yaml | 20 +- .../files/etc/openclash/lhie1.yaml | 11205 +--------------- .../files/etc/openclash/openclash_version | 4 +- .../etc/openclash/rule_provider/ChinaIP.yaml | 172 +- .../usr/lib/lua/luci/controller/openclash.lua | 54 +- .../lua/luci/model/cbi/openclash/client.lua | 3 + .../lua/luci/model/cbi/openclash/config.lua | 153 +- .../model/cbi/openclash/groups-config.lua | 7 +- .../openclash/proxy-provider-file-manage.lua | 114 + .../cbi/openclash/rule-providers-config.lua | 2 +- .../openclash/rule-providers-file-manage.lua | 114 + .../lua/luci/model/cbi/openclash/settings.lua | 46 +- .../usr/lib/lua/luci/view/openclash/state.htm | 19 +- .../lib/lua/luci/view/openclash/status.htm | 41 + .../lib/lua/luci/view/openclash/update.htm | 44 +- .../cfg_servers_address_fake_filter.sh | 3 +- .../share/openclash/cfg_unused_servers_del.sh | 3 +- .../usr/share/openclash/clash_version.sh | 3 +- .../files/usr/share/openclash/openclash.sh | 12 +- .../usr/share/openclash/openclash_chnroute.sh | 57 + .../usr/share/openclash/openclash_core.sh | 50 +- .../openclash/openclash_custom_domain_dns.sh | 3 +- .../usr/share/openclash/openclash_debug.sh | 3 +- .../share/openclash/openclash_fake_filter.sh | 10 +- .../share/openclash/openclash_history_get.sh | 3 +- .../share/openclash/openclash_history_set.sh | 10 +- .../usr/share/openclash/openclash_ipdb.sh | 8 +- .../files/usr/share/openclash/openclash_ps.sh | 33 + .../usr/share/openclash/openclash_rule.sh | 69 +- .../usr/share/openclash/openclash_update.sh | 34 +- .../usr/share/openclash/openclash_version.sh | 4 +- .../openclash/yacd/14.2b1ab3375a2b9a48edab.js | 3 +- .../yacd/14.2b1ab3375a2b9a48edab.js.map | 1 + .../yacd/app.57466da82c6534ab0c59.js | 3 + ...> app.57466da82c6534ab0c59.js.LICENSE.txt} | 0 .../yacd/app.57466da82c6534ab0c59.js.map | 1 + .../yacd/app.9446db28fec78551ca86.js | 2 - ...dc36a.css => app.cf6b34db68df27895b0a.css} | 8 +- .../yacd/app.cf6b34db68df27895b0a.css.map | 1 + .../yacd/config.185469682369eea7ed5e.js | 3 +- .../yacd/config.185469682369eea7ed5e.js.map | 1 + ...bd.css => config.f4c2f06f01d16464ea49.css} | 2 + .../yacd/config.f4c2f06f01d16464ea49.css.map | 1 + .../yacd/conns.a55d943aa09565fccb1a.js | 1 - .../yacd/conns.ac1318f4c605f341f4a1.js | 2 + .../yacd/conns.ac1318f4c605f341f4a1.js.map | 1 + ...54d.css => conns.c9072a30fa369846711d.css} | 2 + .../yacd/conns.c9072a30fa369846711d.css.map | 1 + .../yacd/core-js~app.33c5cdecfc11e62e3415.js | 2 + .../core-js~app.33c5cdecfc11e62e3415.js.map | 1 + .../yacd/core-js~app.d6acbd497dd781bcb87a.js | 1 - .../files/usr/share/openclash/yacd/index.html | 2 +- .../yacd/logs.367e6b30d27de1213a87.js | 1 - ...5c12.css => logs.9c919d1590eed02bc4b6.css} | 2 + .../yacd/logs.9c919d1590eed02bc4b6.css.map | 1 + .../yacd/logs.dca8fd31fe2ece5617ba.js | 2 + .../yacd/logs.dca8fd31fe2ece5617ba.js.map | 1 + ...3.css => proxies.0fea71f33a1333d027ad.css} | 2 + .../yacd/proxies.0fea71f33a1333d027ad.css.map | 1 + .../yacd/proxies.f9db39b6b9f59e944a16.js | 2 + .../yacd/proxies.f9db39b6b9f59e944a16.js.map | 1 + .../yacd/proxies.fe3172e32076eb8749e4.js | 1 - .../yacd/react~app.85a6af7ab221658559e3.js | 3 +- .../react~app.85a6af7ab221658559e3.js.map | 1 + .../usr/share/openclash/yacd/report.html | 4 +- ...7f8.css => rules.86d27ed35189095cbd2d.css} | 2 + .../yacd/rules.86d27ed35189095cbd2d.css.map | 1 + ...11d1e.js => rules.c6d8e4559779501d90c2.js} | 3 +- .../yacd/rules.c6d8e4559779501d90c2.js.map | 1 + ...9e2.js => runtime.0ec94503bb844bc8ee38.js} | 3 +- .../yacd/runtime.0ec94503bb844bc8ee38.js.map | 1 + .../vendors~chartjs.c749992ca47ba67623b4.js | 3 +- ...endors~chartjs.c749992ca47ba67623b4.js.map | 1 + .../vendors~conns.2d8ba1925a9d128867eb.js | 1 - .../vendors~conns.9d08041ab4f217cf48cb.js | 2 + .../vendors~conns.9d08041ab4f217cf48cb.js.map | 1 + ...onns~proxies~rules.3bbf7c997e35c27e0e09.js | 2 + ...~proxies~rules.3bbf7c997e35c27e0e09.js.map | 1 + ...onns~proxies~rules.99b1a71b3d76d3035e41.js | 1 - ...vendors~logs~rules.1b69c8ae2dc5929cac38.js | 3 +- ...ors~logs~rules.1b69c8ae2dc5929cac38.js.map | 1 + .../vendors~proxies.5afec5e5759a23a386fc.js | 2 + ...endors~proxies.5afec5e5759a23a386fc.js.map | 1 + .../vendors~proxies.8fcc0e726f340a602edf.js | 1 - .../files/usr/share/openclash/yml_change.sh | 8 +- .../usr/share/openclash/yml_field_name_ch.sh | 3 - .../usr/share/openclash/yml_groups_get.sh | 7 +- .../usr/share/openclash/yml_groups_name_ch.sh | 24 +- .../usr/share/openclash/yml_groups_set.sh | 7 +- .../usr/share/openclash/yml_proxys_get.sh | 4 +- .../usr/share/openclash/yml_proxys_set.sh | 31 +- .../usr/share/openclash/yml_rules_change.sh | 161 +- .../i18n/zh-cn/openclash.zh-cn.po | 27 +- 96 files changed, 7545 insertions(+), 11193 deletions(-) create mode 100644 package/ctcgfw/luci-app-openclash/files/etc/openclash/china_ip_route.ipset create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/proxy-provider-file-manage.lua create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/rule-providers-file-manage.lua create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_chnroute.sh create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_ps.sh create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/14.2b1ab3375a2b9a48edab.js.map create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.57466da82c6534ab0c59.js rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{app.9446db28fec78551ca86.js.LICENSE.txt => app.57466da82c6534ab0c59.js.LICENSE.txt} (100%) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.57466da82c6534ab0c59.js.map delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.9446db28fec78551ca86.js rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{app.5f32612351603f3dc36a.css => app.cf6b34db68df27895b0a.css} (86%) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.cf6b34db68df27895b0a.css.map create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/config.185469682369eea7ed5e.js.map rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{config.683c5e4f78100df80abd.css => config.f4c2f06f01d16464ea49.css} (90%) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/config.f4c2f06f01d16464ea49.css.map delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/conns.a55d943aa09565fccb1a.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/conns.ac1318f4c605f341f4a1.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/conns.ac1318f4c605f341f4a1.js.map rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{conns.a8987b95653cf010754d.css => conns.c9072a30fa369846711d.css} (99%) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/conns.c9072a30fa369846711d.css.map create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/core-js~app.33c5cdecfc11e62e3415.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/core-js~app.33c5cdecfc11e62e3415.js.map delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/core-js~app.d6acbd497dd781bcb87a.js delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/logs.367e6b30d27de1213a87.js rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{logs.bf8d3190ebe74f5f5c12.css => logs.9c919d1590eed02bc4b6.css} (96%) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/logs.9c919d1590eed02bc4b6.css.map create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/logs.dca8fd31fe2ece5617ba.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/logs.dca8fd31fe2ece5617ba.js.map rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{proxies.2054c162aeb581d56063.css => proxies.0fea71f33a1333d027ad.css} (99%) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/proxies.0fea71f33a1333d027ad.css.map create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/proxies.f9db39b6b9f59e944a16.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/proxies.f9db39b6b9f59e944a16.js.map delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/proxies.fe3172e32076eb8749e4.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/react~app.85a6af7ab221658559e3.js.map rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{rules.ebacd344d22f80adb7f8.css => rules.86d27ed35189095cbd2d.css} (99%) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/rules.86d27ed35189095cbd2d.css.map rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{rules.fe5dbfb2f26ad4211d1e.js => rules.c6d8e4559779501d90c2.js} (87%) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/rules.c6d8e4559779501d90c2.js.map rename package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/{runtime.184b22669d1e3f4e39e2.js => runtime.0ec94503bb844bc8ee38.js} (51%) create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/runtime.0ec94503bb844bc8ee38.js.map create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~chartjs.c749992ca47ba67623b4.js.map delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~conns.2d8ba1925a9d128867eb.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~conns.9d08041ab4f217cf48cb.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~conns.9d08041ab4f217cf48cb.js.map create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~conns~proxies~rules.3bbf7c997e35c27e0e09.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~conns~proxies~rules.3bbf7c997e35c27e0e09.js.map delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~conns~proxies~rules.99b1a71b3d76d3035e41.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~logs~rules.1b69c8ae2dc5929cac38.js.map create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~proxies.5afec5e5759a23a386fc.js create mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~proxies.5afec5e5759a23a386fc.js.map delete mode 100644 package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/vendors~proxies.8fcc0e726f340a602edf.js diff --git a/package/ctcgfw/luci-app-openclash/Makefile b/package/ctcgfw/luci-app-openclash/Makefile index d30fd11c7a..f6c409d155 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.39.8 +PKG_VERSION:=0.40.2 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 1c87956efa..1101a338a6 100755 --- a/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash +++ b/package/ctcgfw/luci-app-openclash/files/etc/init.d/openclash @@ -1,4 +1,5 @@ #!/bin/sh /etc/rc.common +. /usr/share/openclash/openclash_ps.sh # Copyright (c) 2019 vernesong START=99 @@ -15,8 +16,11 @@ BACKUP_FILE="/etc/openclash/backup/$(uci get openclash.config.config_path 2>/dev START_BACKUP="/tmp/config.sbak" CHANGE_FILE="/tmp/yaml_change.yaml" SCRIPT_FILE="/tmp/yaml_script.yaml" +SCRIPT_BAK_FILE="/tmp/yaml_script_bak.yaml" RULE_PROVIDER_FILE="/tmp/yaml_rule_provider.yaml" +RULE_PROVIDER_BAK_FILE="/tmp/yaml_rule_provider_bak.yaml" RULE_FILE="/tmp/yaml_rules.yaml" +RULE_BAK_FILE="/tmp/yaml_rules_bak.yaml" DNS_FILE="/tmp/yaml_dns.yaml" PROXY_FILE="/tmp/yaml_proxy.yaml" PROXY_PROVIDER_FILE="/tmp/yaml_proxy_provider.yaml" @@ -37,6 +41,9 @@ add_cron() [ -z "$(grep "openclash_ipdb.sh" "$CRON_FILE" 2>/dev/null)" ] && { [ "$(uci get openclash.config.geo_auto_update 2>/dev/null)" -eq 1 ] && echo "0 $(uci get openclash.config.geo_update_day_time 2>/dev/null) * * $(uci get openclash.config.geo_update_week_time 2>/dev/null) /usr/share/openclash/openclash_ipdb.sh" >> $CRON_FILE } + [ -z "$(grep "openclash_chnroute.sh" "$CRON_FILE" 2>/dev/null)" ] && { + [ "$(uci get openclash.config.chnr_auto_update 2>/dev/null)" -eq 1 ] && echo "0 $(uci get openclash.config.chnr_update_day_time 2>/dev/null) * * $(uci get openclash.config.chnr_update_week_time 2>/dev/null) /usr/share/openclash/openclash_chnroute.sh" >> $CRON_FILE + } crontab $CRON_FILE nohup /usr/share/openclash/openclash_watchdog.sh & } @@ -46,6 +53,7 @@ del_cron() sed -i '/openclash.sh/d' $CRON_FILE 2>/dev/null sed -i '/openclash_rule.sh/d' $CRON_FILE 2>/dev/null sed -i '/openclash_ipdb.sh/d' $CRON_FILE 2>/dev/null + sed -i '/openclash_chnroute.sh/d' $CRON_FILE 2>/dev/null /etc/init.d/cron restart } @@ -138,8 +146,24 @@ field_cut() elif [ -n "$end_len" ]; then end_len=$(expr "$end_len" - 1) fi + sed -n "${1},${end_len}p" "$3" > "$2" 2>/dev/null - sed -i "${1},${end_len}d" "$3" 2>/dev/null + + if [ -z "$4" ]; then + sed -i "${1},${end_len}d" "$3" 2>/dev/null + fi +} + +yml_merge() +{ +#合并文件 +cat "$CHANGE_FILE" "$DNS_FILE" "$PROXY_PROVIDER_FILE" "$PROXY_FILE" "$GROUP_FILE" "$RULE_PROVIDER_FILE" "$SCRIPT_FILE" "$RULE_FILE" > "$CONFIG_FILE" 2>/dev/null +} + +yml_rule_bak_merge() +{ +#合并文件 +cat "$CHANGE_FILE" "$DNS_FILE" "$PROXY_PROVIDER_FILE" "$PROXY_FILE" "$GROUP_FILE" "$RULE_PROVIDER_BAK_FILE" "$SCRIPT_BAK_FILE" "$RULE_BAK_FILE" > "$CONFIG_FILE" 2>/dev/null } yml_check() @@ -147,6 +171,8 @@ yml_check() #格式替换 sed -i 's/\t/ /g' "$3" 2>/dev/null sed -i "s/- \{2,\}/- /g" "$3" 2>/dev/null + sed -i "s/^\.\.\.$//g" "$3" 2>/dev/null + sed -i "s/^---$//g" "$3" 2>/dev/null #检查关键字避免后续操作出错 /usr/share/openclash/yml_field_name_ch.sh "$3" 2>/dev/null @@ -218,11 +244,29 @@ yml_check() field_cut "$rule_provider_len" "$RULE_PROVIDER_FILE" "$3" fi 2>/dev/null + #处理备份rule_provider位置 + rule_provider_bak_len=$(sed -n '/^rule-providers:/=' "$4" 2>/dev/null) + if [ -n "$rule_provider_bak_len" ]; then + field_cut "$rule_provider_bak_len" "$RULE_PROVIDER_BAK_FILE" "$4" "backups" + fi 2>/dev/null + #处理script位置 script_len=$(sed -n '/^script:/=' "$3" 2>/dev/null) if [ -n "$script_len" ]; then field_cut "$script_len" "$SCRIPT_FILE" "$3" fi 2>/dev/null + + #处理备份script位置 + script_bak_len=$(sed -n '/^script:/=' "$4" 2>/dev/null) + if [ -n "$script_bak_len" ]; then + field_cut "$script_bak_len" "$SCRIPT_BAK_FILE" "$4" "backups" + fi 2>/dev/null + + #处理备份rule位置 + rule_bak_len=$(sed -n '/^rules:/=' "$4" 2>/dev/null) + if [ -n "$rule_bak_len" ]; then + field_cut "$rule_bak_len" "$RULE_BAK_FILE" "$4" "backups" + fi 2>/dev/null if [ -n "$provider_len" ]; then proxy_provider_mode=1 @@ -689,8 +733,7 @@ sed -i '/OpenClash-Game-Rules-End/d' "$RULE_FILE" 2>/dev/null sed -i '/OpenClash-Game-Rules/r/tmp/yaml_game_rule_group.yaml' "$RULE_FILE" 2>/dev/null } -#合并文件 -cat "$CHANGE_FILE" "$DNS_FILE" "$PROXY_PROVIDER_FILE" "$PROXY_FILE" "$GROUP_FILE" "$RULE_PROVIDER_FILE" "$SCRIPT_FILE" "$RULE_FILE" > "$CONFIG_FILE" 2>/dev/null +yml_merge #处理游戏节点与策略组 config_load "openclash" @@ -997,6 +1040,7 @@ CONFIG_NAME=$(echo "$CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null) do_run_mode() { en_mode=$(uci get openclash.config.en_mode 2>/dev/null) + proxy_mode=$(uci get openclash.config.proxy_mode 2>/dev/null) if [ "$en_mode" = "fake-ip-tun" ]; then en_mode_tun="1" @@ -1048,7 +1092,7 @@ do_run_core() core_type="Game" fi - if [ "$proxy_mode" = "script" ] || [ "$rule_source" = "ConnersHua" ]; then + if [ "$proxy_mode" = "script" ] || [ "$rule_source" = "ConnersHua" ] || [ "$rule_source" = "lhie1" ]; then ln -s /etc/openclash/core/clash_tun /etc/openclash/clash 2>/dev/null core_type="Tun" fi @@ -1112,18 +1156,18 @@ cat > "/var/etc/openclash.include" <<-EOF EOF if [ "$china_ip_route" -eq 1 ]; then - if [ ! -f "/tmp/china_ip_route.ipset" ]; then + if [ ! -f "/etc/openclash/china_ip_route.ipset" ]; then cp /etc/openclash/rule_provider/ChinaIP.yaml /tmp/china_ip_route.list 2>/dev/null sed -i "s/'//g" /tmp/china_ip_route.list 2>/dev/null sed -i "s/^ \{0,\}- //g" /tmp/china_ip_route.list 2>/dev/null sed -i '/payload:/d' /tmp/china_ip_route.list 2>/dev/null sed -i '/^ \{0,\}#/d' /tmp/china_ip_route.list 2>/dev/null - echo "create china_ip_route hash:net family inet hashsize 1024 maxelem 65536" >/tmp/china_ip_route.ipset - awk '!/^$/&&!/^#/{printf("add china_ip_route %s'" "'\n",$0)}' /tmp/china_ip_route.list >>/tmp/china_ip_route.ipset + echo "create china_ip_route hash:net family inet hashsize 1024 maxelem 65536" >/etc/openclash/china_ip_route.ipset + awk '!/^$/&&!/^#/{printf("add china_ip_route %s'" "'\n",$0)}' /tmp/china_ip_route.list >>/etc/openclash/china_ip_route.ipset rm -rf /tmp/china_ip_route.list 2>/dev/null fi ipset -! flush china_ip_route 2>/dev/null - ipset -! restore /dev/null + ipset -! restore /dev/null fi #lan_ac @@ -1201,16 +1245,16 @@ if [ -z "$en_mode_tun" ] || [ "$en_mode_tun" -eq 3 ]; then iptables -t nat -A OUTPUT -p tcp -j openclash_output fi - if [ "$ipv6_enable" -eq 1 ]; then - #tcp - ip6tables -t nat -N openclash - if [ -n "$lan_ip6" ]; then - for lan_ip6s in $lan_ip6; do - ip6tables -t nat -A openclash -d "$lan_ip6s" -j RETURN 2>/dev/null - done - fi - ip6tables -t nat -A openclash -p tcp -j REDIRECT --to-ports "$proxy_port" - ip6tables -t nat -A PREROUTING -p tcp -j openclash + #if [ "$ipv6_enable" -eq 1 ]; then + # #tcp + # ip6tables -t nat -N openclash + # if [ -n "$lan_ip6" ]; then + # for lan_ip6s in $lan_ip6; do + # ip6tables -t nat -A openclash -d "$lan_ip6s" -j RETURN 2>/dev/null + # done + # fi + # ip6tables -t nat -A openclash -p tcp -j REDIRECT --to-ports "$proxy_port" + # ip6tables -t nat -A PREROUTING -p tcp -j openclash #udp #if [ "$enable_udp_proxy" -eq 1 ]; then @@ -1225,7 +1269,7 @@ if [ -z "$en_mode_tun" ] || [ "$en_mode_tun" -eq 3 ]; then # ip6tables -t mangle -A openclash -p udp -j TPROXY --on-port "$proxy_port" --tproxy-mark "$PROXY_FWMARK" # ip6tables -t mangle -A PREROUTING -p udp -j openclash #fi - fi 2>/dev/null + #fi 2>/dev/null fi if [ -n "$en_mode_tun" ]; then #TUN模式 @@ -1367,7 +1411,6 @@ revert_firewall() get_config() { - proxy_mode=$(uci get openclash.config.proxy_mode 2>/dev/null) rule_source=$(uci get openclash.config.rule_source 2>/dev/null) enable_custom_dns=$(uci get openclash.config.enable_custom_dns 2>/dev/null) enable_custom_clash_rules=$(uci get openclash.config.enable_custom_clash_rules 2>/dev/null) @@ -1395,7 +1438,7 @@ get_config() start() { #禁止多个实例 -status=$(ps|grep -c /etc/init.d/openclash) +status=$(unify_ps_status "/etc/init.d/openclash") [ "$status" -gt "3" ] && exit 0 config_choose @@ -1417,7 +1460,7 @@ if [ "$enable" -eq 1 ] && [ -f "$CONFIG_FILE" ]; then mv "$START_BACKUP" "$CONFIG_FILE" sleep 5 echo "" >$START_LOG - elif [ -z "$(grep "^ \{0,\}rules:" "$CONFIG_FILE" 2>/dev/null)" ] && [ -z "$(grep "^ \{0,\}script:" "$CONFIG_FILE" 2>/dev/null)" ]; then + elif [ -z "$(grep "^ \{0,\}rules:" "$CONFIG_FILE" 2>/dev/null)" ] && [ -z "$(grep "^ \{0,\}script:" "$SCRIPT_FILE" 2>/dev/null)" ]; then kill_clash stop echo "错误: 配置文件完整性检查不通过,已自动还原配置文件,请对照模板格式检查修改配置文件!" >$START_LOG @@ -1504,14 +1547,7 @@ if [ "$enable" -eq 1 ] && [ -f "$CONFIG_FILE" ]; then if [ "$rule_source" != 0 ] || [ "$enable_custom_clash_rules" != 0 ]; then echo "错误: OpenClash 启动失败,尝试还原第三方规则并重新启动 Clash 主程序..." >$START_LOG echo "${LOGTIME} OpenClash Can Not Start, Try Use Backup Rules Start Again" >> $LOG_FILE - mv "$START_BACKUP" /tmp/configrules.bak - sed -i -n '/^rules:/,$p' /tmp/configrules.bak - sed -i '/^rules:/,$d' "$CONFIG_FILE" 2>/dev/null - if [ -z "$(grep "##source:" /tmp/configrules.bak 2>/dev/null)" ]; then - sed -i '/##Other-rule-providers##/,/##Other-rule-providers-end##/d' "$CONFIG_FILE" 2>/dev/null - fi - cat /tmp/configrules.bak >> "$CONFIG_FILE" - rm -rf /tmp/configrules.bak + yml_rule_bak_merge nohup "$CLASH" -d "$CLASH_CONFIG" -f "$CONFIG_FILE" >> $LOG_FILE 2>&1 & sleep 3 if pidof clash >/dev/null; then @@ -1593,7 +1629,7 @@ stop() revert_firewall echo "第三步: 关闭 OpenClash 守护程序..." >$START_LOG - watchdog_pids=$(ps |grep openclash_watchdog.sh |grep -v grep |awk '{print $1}' 2>/dev/null) + watchdog_pids=$(unify_ps_pids "openclash_watchdog.sh") for watchdog_pid in $watchdog_pids; do kill -9 "$watchdog_pid" >/dev/null 2>&1 done diff --git a/package/ctcgfw/luci-app-openclash/files/etc/openclash/china_ip_route.ipset b/package/ctcgfw/luci-app-openclash/files/etc/openclash/china_ip_route.ipset new file mode 100644 index 0000000000..956c029ee5 --- /dev/null +++ b/package/ctcgfw/luci-app-openclash/files/etc/openclash/china_ip_route.ipset @@ -0,0 +1,5971 @@ +create china_ip_route hash:net family inet hashsize 1024 maxelem 65536 +add china_ip_route 1.0.1.0/24 +add china_ip_route 1.0.2.0/23 +add china_ip_route 1.0.8.0/21 +add china_ip_route 1.0.32.0/19 +add china_ip_route 1.1.0.0/24 +add china_ip_route 1.1.2.0/23 +add china_ip_route 1.1.4.0/22 +add china_ip_route 1.1.8.0/21 +add china_ip_route 1.1.16.0/20 +add china_ip_route 1.1.32.0/19 +add china_ip_route 1.2.0.0/23 +add china_ip_route 1.2.2.0/24 +add china_ip_route 1.2.4.0/22 +add china_ip_route 1.2.8.0/21 +add china_ip_route 1.2.16.0/20 +add china_ip_route 1.2.32.0/19 +add china_ip_route 1.2.64.0/18 +add china_ip_route 1.3.0.0/16 +add china_ip_route 1.4.1.0/24 +add china_ip_route 1.4.2.0/23 +add china_ip_route 1.4.4.0/22 +add china_ip_route 1.4.8.0/21 +add china_ip_route 1.4.16.0/20 +add china_ip_route 1.4.32.0/19 +add china_ip_route 1.4.64.0/18 +add china_ip_route 1.8.0.0/16 +add china_ip_route 1.10.0.0/21 +add china_ip_route 1.10.8.0/23 +add china_ip_route 1.10.11.0/24 +add china_ip_route 1.10.12.0/22 +add china_ip_route 1.10.16.0/20 +add china_ip_route 1.10.32.0/19 +add china_ip_route 1.10.64.0/18 +add china_ip_route 1.12.0.0/14 +add china_ip_route 1.18.128.0/24 +add china_ip_route 1.24.0.0/13 +add china_ip_route 1.45.0.0/16 +add china_ip_route 1.48.0.0/14 +add china_ip_route 1.56.0.0/13 +add china_ip_route 1.68.0.0/14 +add china_ip_route 1.80.0.0/12 +add china_ip_route 1.116.0.0/15 +add china_ip_route 1.118.1.0/24 +add china_ip_route 1.118.2.0/23 +add china_ip_route 1.118.4.0/22 +add china_ip_route 1.118.8.0/21 +add china_ip_route 1.118.16.0/20 +add china_ip_route 1.118.32.0/19 +add china_ip_route 1.118.64.0/18 +add china_ip_route 1.118.128.0/17 +add china_ip_route 1.119.0.0/16 +add china_ip_route 1.180.0.0/14 +add china_ip_route 1.184.0.0/15 +add china_ip_route 1.188.0.0/14 +add china_ip_route 1.192.0.0/13 +add china_ip_route 1.202.0.0/15 +add china_ip_route 1.204.0.0/14 +add china_ip_route 3.5.214.0/23 +add china_ip_route 3.5.216.0/24 +add china_ip_route 8.128.0.0/10 +add china_ip_route 8.209.40.0/21 +add china_ip_route 14.0.0.0/21 +add china_ip_route 14.0.12.0/22 +add china_ip_route 14.1.0.0/22 +add china_ip_route 14.1.24.0/22 +add china_ip_route 14.1.108.0/22 +add china_ip_route 14.16.0.0/12 +add china_ip_route 14.102.128.0/22 +add china_ip_route 14.102.180.0/22 +add china_ip_route 14.103.0.0/16 +add china_ip_route 14.104.0.0/13 +add china_ip_route 14.112.0.0/12 +add china_ip_route 14.130.0.0/15 +add china_ip_route 14.134.0.0/15 +add china_ip_route 14.144.0.0/12 +add china_ip_route 14.192.60.0/22 +add china_ip_route 14.192.76.0/22 +add china_ip_route 14.196.0.0/15 +add china_ip_route 14.204.0.0/15 +add china_ip_route 14.208.0.0/12 +add china_ip_route 15.230.41.0/24 +add china_ip_route 15.230.49.0/24 +add china_ip_route 20.81.0.0/24 +add china_ip_route 20.139.160.0/20 +add china_ip_route 20.249.255.0/24 +add china_ip_route 20.251.0.0/22 +add china_ip_route 27.0.128.0/22 +add china_ip_route 27.0.132.0/24 +add china_ip_route 27.0.134.0/23 +add china_ip_route 27.0.160.0/21 +add china_ip_route 27.0.188.0/22 +add china_ip_route 27.0.204.0/22 +add china_ip_route 27.0.208.0/21 +add china_ip_route 27.8.0.0/13 +add china_ip_route 27.16.0.0/12 +add china_ip_route 27.34.232.0/21 +add china_ip_route 27.36.0.0/14 +add china_ip_route 27.40.0.0/13 +add china_ip_route 27.50.40.0/21 +add china_ip_route 27.50.128.0/17 +add china_ip_route 27.54.72.0/21 +add china_ip_route 27.54.152.0/21 +add china_ip_route 27.54.192.0/18 +add china_ip_route 27.98.208.0/20 +add china_ip_route 27.98.224.0/19 +add china_ip_route 27.99.128.0/17 +add china_ip_route 27.103.0.0/16 +add china_ip_route 27.106.128.0/18 +add china_ip_route 27.106.204.0/22 +add china_ip_route 27.109.32.0/19 +add china_ip_route 27.109.124.0/22 +add china_ip_route 27.112.0.0/18 +add china_ip_route 27.112.80.0/20 +add china_ip_route 27.112.112.0/21 +add china_ip_route 27.113.128.0/18 +add china_ip_route 27.115.0.0/17 +add china_ip_route 27.116.44.0/22 +add china_ip_route 27.121.72.0/21 +add china_ip_route 27.121.120.0/21 +add china_ip_route 27.128.0.0/15 +add china_ip_route 27.131.220.0/22 +add china_ip_route 27.144.0.0/16 +add china_ip_route 27.148.0.0/14 +add china_ip_route 27.152.0.0/13 +add china_ip_route 27.184.0.0/13 +add china_ip_route 27.192.0.0/11 +add china_ip_route 27.224.0.0/14 +add china_ip_route 36.0.0.0/22 +add china_ip_route 36.0.16.0/20 +add china_ip_route 36.0.32.0/19 +add china_ip_route 36.0.64.0/18 +add china_ip_route 36.0.128.0/17 +add china_ip_route 36.1.0.0/16 +add china_ip_route 36.4.0.0/14 +add china_ip_route 36.16.0.0/12 +add china_ip_route 36.32.0.0/14 +add china_ip_route 36.36.0.0/16 +add china_ip_route 36.37.0.0/19 +add china_ip_route 36.37.36.0/23 +add china_ip_route 36.37.39.0/24 +add china_ip_route 36.37.40.0/21 +add china_ip_route 36.37.48.0/20 +add china_ip_route 36.40.0.0/13 +add china_ip_route 36.48.0.0/15 +add china_ip_route 36.51.0.0/17 +add china_ip_route 36.51.128.0/18 +add china_ip_route 36.51.192.0/19 +add china_ip_route 36.51.224.0/20 +add china_ip_route 36.51.240.0/21 +add china_ip_route 36.51.248.0/22 +add china_ip_route 36.51.252.0/23 +add china_ip_route 36.56.0.0/13 +add china_ip_route 36.96.0.0/11 +add china_ip_route 36.128.0.0/10 +add china_ip_route 36.192.0.0/11 +add china_ip_route 36.248.0.0/14 +add china_ip_route 36.254.0.0/16 +add china_ip_route 36.255.116.0/22 +add china_ip_route 36.255.128.0/22 +add china_ip_route 36.255.164.0/22 +add china_ip_route 36.255.172.0/22 +add china_ip_route 36.255.176.0/22 +add china_ip_route 38.142.239.114/32 +add china_ip_route 39.0.0.0/24 +add china_ip_route 39.0.2.0/23 +add china_ip_route 39.0.4.0/22 +add china_ip_route 39.0.8.0/21 +add china_ip_route 39.0.16.0/20 +add china_ip_route 39.0.32.0/19 +add china_ip_route 39.0.64.0/18 +add china_ip_route 39.0.128.0/17 +add china_ip_route 39.64.0.0/11 +add china_ip_route 39.96.0.0/16 +add china_ip_route 39.97.0.0/17 +add china_ip_route 39.97.128.0/18 +add china_ip_route 39.97.192.0/21 +add china_ip_route 39.97.200.0/22 +add china_ip_route 39.97.208.0/20 +add china_ip_route 39.97.224.0/19 +add china_ip_route 39.98.0.0/15 +add china_ip_route 39.100.0.0/14 +add china_ip_route 39.104.0.0/14 +add china_ip_route 39.108.0.0/16 +add china_ip_route 39.109.120.0/23 +add china_ip_route 39.128.0.0/10 +add china_ip_route 40.0.176.0/20 +add china_ip_route 40.0.247.0/24 +add china_ip_route 40.0.248.0/22 +add china_ip_route 40.0.252.0/23 +add china_ip_route 40.0.255.0/24 +add china_ip_route 40.72.0.0/15 +add china_ip_route 40.77.136.112/28 +add china_ip_route 40.77.236.224/27 +add china_ip_route 40.77.254.64/27 +add china_ip_route 40.125.128.0/17 +add china_ip_route 40.126.64.0/18 +add china_ip_route 40.198.10.0/24 +add china_ip_route 40.198.16.0/21 +add china_ip_route 40.198.24.0/23 +add china_ip_route 40.251.225.0/24 +add china_ip_route 40.251.227.0/24 +add china_ip_route 42.0.0.0/22 +add china_ip_route 42.0.8.0/21 +add china_ip_route 42.0.16.0/21 +add china_ip_route 42.0.24.0/22 +add china_ip_route 42.0.32.0/19 +add china_ip_route 42.0.128.0/17 +add china_ip_route 42.1.0.0/19 +add china_ip_route 42.1.32.0/20 +add china_ip_route 42.1.48.0/21 +add china_ip_route 42.1.56.0/22 +add china_ip_route 42.4.0.0/14 +add china_ip_route 42.48.0.0/13 +add china_ip_route 42.56.0.0/14 +add china_ip_route 42.62.0.0/17 +add china_ip_route 42.62.128.0/19 +add china_ip_route 42.62.160.0/20 +add china_ip_route 42.62.180.0/22 +add china_ip_route 42.62.184.0/21 +add china_ip_route 42.63.0.0/16 +add china_ip_route 42.80.0.0/15 +add china_ip_route 42.83.64.0/20 +add china_ip_route 42.83.80.0/22 +add china_ip_route 42.83.88.0/21 +add china_ip_route 42.83.96.0/19 +add china_ip_route 42.83.128.0/23 +add china_ip_route 42.83.134.0/24 +add china_ip_route 42.83.139.0/24 +add china_ip_route 42.83.140.0/22 +add china_ip_route 42.83.144.0/20 +add china_ip_route 42.83.160.0/19 +add china_ip_route 42.83.192.0/18 +add china_ip_route 42.84.0.0/14 +add china_ip_route 42.88.0.0/13 +add china_ip_route 42.96.64.0/19 +add china_ip_route 42.96.96.0/21 +add china_ip_route 42.96.108.0/22 +add china_ip_route 42.96.112.0/20 +add china_ip_route 42.96.128.0/17 +add china_ip_route 42.97.0.0/16 +add china_ip_route 42.99.0.0/18 +add china_ip_route 42.99.64.0/19 +add china_ip_route 42.99.96.0/20 +add china_ip_route 42.99.112.0/22 +add china_ip_route 42.99.120.0/21 +add china_ip_route 42.100.0.0/14 +add china_ip_route 42.120.0.0/15 +add china_ip_route 42.122.0.0/16 +add china_ip_route 42.123.0.0/19 +add china_ip_route 42.123.36.0/22 +add china_ip_route 42.123.40.0/21 +add china_ip_route 42.123.48.0/20 +add china_ip_route 42.123.64.0/18 +add china_ip_route 42.123.128.0/17 +add china_ip_route 42.128.0.0/12 +add china_ip_route 42.156.0.0/19 +add china_ip_route 42.156.36.0/22 +add china_ip_route 42.156.40.0/21 +add china_ip_route 42.156.48.0/20 +add china_ip_route 42.156.64.0/18 +add china_ip_route 42.156.128.0/17 +add china_ip_route 42.157.0.0/21 +add china_ip_route 42.157.8.0/22 +add china_ip_route 42.157.14.0/23 +add china_ip_route 42.157.16.0/20 +add china_ip_route 42.157.32.0/19 +add china_ip_route 42.157.64.0/18 +add china_ip_route 42.157.128.0/17 +add china_ip_route 42.158.0.0/15 +add china_ip_route 42.160.0.0/12 +add china_ip_route 42.176.0.0/13 +add china_ip_route 42.184.0.0/15 +add china_ip_route 42.186.0.0/16 +add china_ip_route 42.187.0.0/18 +add china_ip_route 42.187.64.0/19 +add china_ip_route 42.187.96.0/20 +add china_ip_route 42.187.112.0/21 +add china_ip_route 42.187.120.0/22 +add china_ip_route 42.187.128.0/17 +add china_ip_route 42.192.0.0/13 +add china_ip_route 42.201.0.0/17 +add china_ip_route 42.202.0.0/15 +add china_ip_route 42.204.0.0/14 +add china_ip_route 42.208.0.0/12 +add china_ip_route 42.224.0.0/12 +add china_ip_route 42.240.0.0/16 +add china_ip_route 42.242.0.0/15 +add china_ip_route 42.244.0.0/15 +add china_ip_route 42.246.0.0/16 +add china_ip_route 42.247.0.0/22 +add china_ip_route 42.247.4.0/24 +add china_ip_route 42.247.5.0/25 +add china_ip_route 42.247.5.128/26 +add china_ip_route 42.247.5.204/30 +add china_ip_route 42.247.5.208/28 +add china_ip_route 42.247.5.224/27 +add china_ip_route 42.247.6.0/23 +add china_ip_route 42.247.8.0/21 +add china_ip_route 42.247.16.0/20 +add china_ip_route 42.247.32.0/19 +add china_ip_route 42.247.64.0/18 +add china_ip_route 42.247.128.0/17 +add china_ip_route 42.248.0.0/13 +add china_ip_route 43.0.0.0/9 +add china_ip_route 43.224.12.0/22 +add china_ip_route 43.224.24.0/22 +add china_ip_route 43.224.44.0/22 +add china_ip_route 43.224.52.0/22 +add china_ip_route 43.224.56.0/22 +add china_ip_route 43.224.68.0/22 +add china_ip_route 43.224.72.0/22 +add china_ip_route 43.224.80.0/22 +add china_ip_route 43.224.100.0/22 +add china_ip_route 43.224.144.0/22 +add china_ip_route 43.224.161.0/24 +add china_ip_route 43.224.176.0/22 +add china_ip_route 43.224.184.0/22 +add china_ip_route 43.224.200.0/21 +add china_ip_route 43.224.208.0/21 +add china_ip_route 43.224.216.0/22 +add china_ip_route 43.224.240.0/22 +add china_ip_route 43.225.76.0/22 +add china_ip_route 43.225.86.0/24 +add china_ip_route 43.225.120.0/22 +add china_ip_route 43.225.180.0/22 +add china_ip_route 43.225.208.0/22 +add china_ip_route 43.225.216.0/21 +add china_ip_route 43.225.224.0/20 +add china_ip_route 43.225.240.0/21 +add china_ip_route 43.225.252.0/22 +add china_ip_route 43.226.32.0/19 +add china_ip_route 43.226.64.0/19 +add china_ip_route 43.226.96.0/20 +add china_ip_route 43.226.112.0/21 +add china_ip_route 43.226.120.0/22 +add china_ip_route 43.226.128.0/19 +add china_ip_route 43.226.160.0/21 +add china_ip_route 43.226.236.0/22 +add china_ip_route 43.226.240.0/20 +add china_ip_route 43.227.0.0/21 +add china_ip_route 43.227.8.0/22 +add china_ip_route 43.227.32.0/19 +add china_ip_route 43.227.64.0/19 +add china_ip_route 43.227.104.0/22 +add china_ip_route 43.227.136.0/21 +add china_ip_route 43.227.144.0/22 +add china_ip_route 43.227.152.0/21 +add china_ip_route 43.227.160.0/20 +add china_ip_route 43.227.176.0/21 +add china_ip_route 43.227.188.0/22 +add china_ip_route 43.227.192.0/19 +add china_ip_route 43.227.232.0/22 +add china_ip_route 43.227.248.0/21 +add china_ip_route 43.228.0.0/18 +add china_ip_route 43.228.64.0/21 +add china_ip_route 43.228.76.0/22 +add china_ip_route 43.228.100.0/22 +add china_ip_route 43.228.116.0/24 +add china_ip_route 43.228.118.0/23 +add china_ip_route 43.228.132.0/22 +add china_ip_route 43.228.136.0/22 +add china_ip_route 43.228.148.0/22 +add china_ip_route 43.228.152.0/22 +add china_ip_route 43.228.188.0/22 +add china_ip_route 43.229.40.0/22 +add china_ip_route 43.229.48.0/22 +add china_ip_route 43.229.56.0/22 +add china_ip_route 43.229.96.0/22 +add china_ip_route 43.229.136.0/21 +add china_ip_route 43.229.168.0/21 +add china_ip_route 43.229.176.0/20 +add china_ip_route 43.229.192.0/21 +add china_ip_route 43.229.216.0/21 +add china_ip_route 43.229.232.0/21 +add china_ip_route 43.230.20.0/22 +add china_ip_route 43.230.32.0/22 +add china_ip_route 43.230.68.0/22 +add china_ip_route 43.230.72.0/22 +add china_ip_route 43.230.84.0/22 +add china_ip_route 43.230.124.0/22 +add china_ip_route 43.230.220.0/22 +add china_ip_route 43.230.224.0/19 +add china_ip_route 43.231.32.0/20 +add china_ip_route 43.231.80.0/20 +add china_ip_route 43.231.96.0/20 +add china_ip_route 43.231.136.0/21 +add china_ip_route 43.231.144.0/20 +add china_ip_route 43.231.160.0/20 +add china_ip_route 43.231.176.0/21 +add china_ip_route 43.236.0.0/15 +add china_ip_route 43.238.0.0/16 +add china_ip_route 43.239.0.0/19 +add china_ip_route 43.239.32.0/20 +add china_ip_route 43.239.48.0/22 +add china_ip_route 43.239.116.0/22 +add china_ip_route 43.239.120.0/22 +add china_ip_route 43.239.172.0/22 +add china_ip_route 43.240.0.0/22 +add china_ip_route 43.240.56.0/21 +add china_ip_route 43.240.68.0/22 +add china_ip_route 43.240.72.0/21 +add china_ip_route 43.240.84.0/22 +add china_ip_route 43.240.124.0/22 +add china_ip_route 43.240.128.0/21 +add china_ip_route 43.240.136.0/22 +add china_ip_route 43.240.156.0/22 +add china_ip_route 43.240.160.0/19 +add china_ip_route 43.240.192.0/19 +add china_ip_route 43.240.240.0/20 +add china_ip_route 43.241.0.0/20 +add china_ip_route 43.241.16.0/21 +add china_ip_route 43.241.48.0/22 +add china_ip_route 43.241.76.0/22 +add china_ip_route 43.241.80.0/20 +add china_ip_route 43.241.112.0/22 +add china_ip_route 43.241.168.0/21 +add china_ip_route 43.241.176.0/21 +add china_ip_route 43.241.184.0/22 +add china_ip_route 43.241.208.0/20 +add china_ip_route 43.241.224.0/20 +add china_ip_route 43.241.240.0/22 +add china_ip_route 43.241.248.0/22 +add china_ip_route 43.242.8.0/21 +add china_ip_route 43.242.16.0/20 +add china_ip_route 43.242.48.0/22 +add china_ip_route 43.242.53.0/24 +add china_ip_route 43.242.54.0/24 +add china_ip_route 43.242.56.0/21 +add china_ip_route 43.242.64.0/22 +add china_ip_route 43.242.72.0/21 +add china_ip_route 43.242.80.0/20 +add china_ip_route 43.242.96.0/22 +add china_ip_route 43.242.144.0/20 +add china_ip_route 43.242.160.0/21 +add china_ip_route 43.242.180.0/22 +add china_ip_route 43.242.188.0/22 +add china_ip_route 43.242.192.0/21 +add china_ip_route 43.242.204.0/22 +add china_ip_route 43.242.216.0/21 +add china_ip_route 43.242.252.0/22 +add china_ip_route 43.243.4.0/22 +add china_ip_route 43.243.8.0/21 +add china_ip_route 43.243.16.0/22 +add china_ip_route 43.243.88.0/22 +add china_ip_route 43.243.128.0/22 +add china_ip_route 43.243.136.0/22 +add china_ip_route 43.243.144.0/21 +add china_ip_route 43.243.156.0/22 +add china_ip_route 43.243.180.0/22 +add china_ip_route 43.243.228.0/22 +add china_ip_route 43.243.232.0/22 +add china_ip_route 43.243.244.0/22 +add china_ip_route 43.246.0.0/18 +add china_ip_route 43.246.64.0/19 +add china_ip_route 43.246.96.0/22 +add china_ip_route 43.246.147.0/24 +add china_ip_route 43.246.148.0/24 +add china_ip_route 43.246.150.0/24 +add china_ip_route 43.246.151.0/30 +add china_ip_route 43.246.151.4/32 +add china_ip_route 43.246.151.6/31 +add china_ip_route 43.246.151.8/29 +add china_ip_route 43.246.151.16/28 +add china_ip_route 43.246.151.32/27 +add china_ip_route 43.246.151.64/26 +add china_ip_route 43.246.151.128/25 +add china_ip_route 43.246.228.0/22 +add china_ip_route 43.247.4.0/22 +add china_ip_route 43.247.8.0/22 +add china_ip_route 43.247.44.0/22 +add china_ip_route 43.247.48.0/22 +add china_ip_route 43.247.68.0/22 +add china_ip_route 43.247.76.0/22 +add china_ip_route 43.247.84.0/22 +add china_ip_route 43.247.88.0/21 +add china_ip_route 43.247.96.0/21 +add china_ip_route 43.247.108.0/22 +add china_ip_route 43.247.112.0/22 +add china_ip_route 43.247.148.0/22 +add china_ip_route 43.247.152.0/22 +add china_ip_route 43.247.176.0/20 +add china_ip_route 43.247.196.0/22 +add china_ip_route 43.247.200.0/21 +add china_ip_route 43.247.208.0/20 +add china_ip_route 43.247.224.0/19 +add china_ip_route 43.248.0.0/21 +add china_ip_route 43.248.20.0/22 +add china_ip_route 43.248.28.0/22 +add china_ip_route 43.248.48.0/22 +add china_ip_route 43.248.76.0/22 +add china_ip_route 43.248.80.0/20 +add china_ip_route 43.248.96.0/19 +add china_ip_route 43.248.128.0/20 +add china_ip_route 43.248.144.0/21 +add china_ip_route 43.248.176.0/20 +add china_ip_route 43.248.192.0/20 +add china_ip_route 43.248.208.0/22 +add china_ip_route 43.248.228.0/22 +add china_ip_route 43.248.232.0/22 +add china_ip_route 43.248.244.0/22 +add china_ip_route 43.249.4.0/22 +add china_ip_route 43.249.120.0/22 +add china_ip_route 43.249.132.0/22 +add china_ip_route 43.249.136.0/22 +add china_ip_route 43.249.144.0/20 +add china_ip_route 43.249.160.0/21 +add china_ip_route 43.249.168.0/22 +add china_ip_route 43.249.192.0/22 +add china_ip_route 43.249.236.0/22 +add china_ip_route 43.250.4.0/22 +add china_ip_route 43.250.12.0/22 +add china_ip_route 43.250.16.0/21 +add china_ip_route 43.250.28.0/22 +add china_ip_route 43.250.32.0/22 +add china_ip_route 43.250.96.0/21 +add china_ip_route 43.250.108.0/22 +add china_ip_route 43.250.112.0/21 +add china_ip_route 43.250.128.0/22 +add china_ip_route 43.250.144.0/21 +add china_ip_route 43.250.160.0/22 +add china_ip_route 43.250.168.0/22 +add china_ip_route 43.250.176.0/22 +add china_ip_route 43.250.200.0/22 +add china_ip_route 43.250.212.0/22 +add china_ip_route 43.250.216.0/21 +add china_ip_route 43.250.236.0/22 +add china_ip_route 43.250.244.0/22 +add china_ip_route 43.251.4.0/22 +add china_ip_route 43.251.36.0/22 +add china_ip_route 43.251.192.0/22 +add china_ip_route 43.251.232.0/22 +add china_ip_route 43.251.244.0/22 +add china_ip_route 43.252.48.0/22 +add china_ip_route 43.252.56.0/22 +add china_ip_route 43.252.224.0/22 +add china_ip_route 43.254.0.0/21 +add china_ip_route 43.254.8.0/22 +add china_ip_route 43.254.24.0/22 +add china_ip_route 43.254.36.0/22 +add china_ip_route 43.254.44.0/22 +add china_ip_route 43.254.52.0/22 +add china_ip_route 43.254.64.0/22 +add china_ip_route 43.254.72.0/22 +add china_ip_route 43.254.84.0/22 +add china_ip_route 43.254.88.0/21 +add china_ip_route 43.254.100.0/22 +add china_ip_route 43.254.104.0/22 +add china_ip_route 43.254.112.0/21 +add china_ip_route 43.254.128.0/22 +add china_ip_route 43.254.136.0/21 +add china_ip_route 43.254.144.0/20 +add china_ip_route 43.254.168.0/21 +add china_ip_route 43.254.180.0/22 +add china_ip_route 43.254.184.0/21 +add china_ip_route 43.254.192.0/22 +add china_ip_route 43.254.200.0/22 +add china_ip_route 43.254.208.0/22 +add china_ip_route 43.254.220.0/22 +add china_ip_route 43.254.224.0/20 +add china_ip_route 43.254.240.0/22 +add china_ip_route 43.254.248.0/21 +add china_ip_route 43.255.0.0/21 +add china_ip_route 43.255.8.0/22 +add china_ip_route 43.255.16.0/22 +add china_ip_route 43.255.48.0/22 +add china_ip_route 43.255.64.0/20 +add china_ip_route 43.255.84.0/22 +add china_ip_route 43.255.96.0/22 +add china_ip_route 43.255.144.0/22 +add china_ip_route 43.255.176.0/22 +add china_ip_route 43.255.184.0/22 +add china_ip_route 43.255.192.0/22 +add china_ip_route 43.255.200.0/21 +add china_ip_route 43.255.208.0/21 +add china_ip_route 43.255.224.0/21 +add china_ip_route 43.255.232.0/22 +add china_ip_route 43.255.244.0/22 +add china_ip_route 45.40.192.0/20 +add china_ip_route 45.40.208.0/21 +add china_ip_route 45.40.224.0/19 +add china_ip_route 45.65.16.0/20 +add china_ip_route 45.87.53.0/24 +add china_ip_route 45.87.54.0/23 +add china_ip_route 45.112.132.0/22 +add china_ip_route 45.112.188.0/22 +add china_ip_route 45.112.208.0/20 +add china_ip_route 45.112.228.0/22 +add china_ip_route 45.112.232.0/21 +add china_ip_route 45.113.12.0/22 +add china_ip_route 45.113.16.0/20 +add china_ip_route 45.113.40.0/22 +add china_ip_route 45.113.52.0/22 +add china_ip_route 45.113.72.0/22 +add china_ip_route 45.113.144.0/21 +add china_ip_route 45.113.168.0/22 +add china_ip_route 45.113.184.0/22 +add china_ip_route 45.113.200.0/21 +add china_ip_route 45.113.208.0/20 +add china_ip_route 45.113.240.0/22 +add china_ip_route 45.113.252.0/22 +add china_ip_route 45.114.0.0/22 +add china_ip_route 45.114.32.0/22 +add china_ip_route 45.114.52.0/22 +add china_ip_route 45.114.96.0/22 +add china_ip_route 45.114.136.0/22 +add china_ip_route 45.114.196.0/22 +add china_ip_route 45.114.200.0/22 +add china_ip_route 45.114.228.0/22 +add china_ip_route 45.114.237.0/24 +add china_ip_route 45.114.238.0/23 +add china_ip_route 45.114.252.0/22 +add china_ip_route 45.115.44.0/22 +add china_ip_route 45.115.100.0/22 +add china_ip_route 45.115.120.0/22 +add china_ip_route 45.115.132.0/22 +add china_ip_route 45.115.144.0/22 +add china_ip_route 45.115.156.0/22 +add china_ip_route 45.115.164.0/22 +add china_ip_route 45.115.200.0/22 +add china_ip_route 45.115.212.0/22 +add china_ip_route 45.115.244.0/22 +add china_ip_route 45.115.248.0/22 +add china_ip_route 45.116.16.0/22 +add china_ip_route 45.116.24.0/22 +add china_ip_route 45.116.32.0/21 +add china_ip_route 45.116.52.0/22 +add china_ip_route 45.116.96.0/21 +add china_ip_route 45.116.140.0/22 +add china_ip_route 45.116.152.0/22 +add china_ip_route 45.116.208.0/22 +add china_ip_route 45.117.8.0/22 +add china_ip_route 45.117.20.0/22 +add china_ip_route 45.117.68.0/22 +add china_ip_route 45.117.124.0/22 +add china_ip_route 45.117.252.0/22 +add china_ip_route 45.119.60.0/22 +add china_ip_route 45.119.64.0/21 +add china_ip_route 45.119.72.0/22 +add china_ip_route 45.119.104.0/22 +add china_ip_route 45.119.232.0/22 +add china_ip_route 45.120.100.0/22 +add china_ip_route 45.120.140.0/22 +add china_ip_route 45.120.164.0/22 +add china_ip_route 45.120.180.128/27 +add china_ip_route 45.120.240.0/22 +add china_ip_route 45.121.52.0/22 +add china_ip_route 45.121.64.0/21 +add china_ip_route 45.121.72.0/22 +add china_ip_route 45.121.92.0/22 +add china_ip_route 45.121.96.0/22 +add china_ip_route 45.121.172.0/22 +add china_ip_route 45.121.176.0/22 +add china_ip_route 45.121.240.0/20 +add china_ip_route 45.122.0.0/19 +add china_ip_route 45.122.32.0/21 +add china_ip_route 45.122.40.0/22 +add china_ip_route 45.122.60.0/22 +add china_ip_route 45.122.64.0/19 +add china_ip_route 45.122.96.0/20 +add china_ip_route 45.122.112.0/21 +add china_ip_route 45.122.160.0/19 +add china_ip_route 45.122.192.0/20 +add china_ip_route 45.122.208.0/21 +add china_ip_route 45.122.216.0/22 +add china_ip_route 45.123.28.0/22 +add china_ip_route 45.123.32.0/21 +add china_ip_route 45.123.44.0/22 +add china_ip_route 45.123.48.0/20 +add china_ip_route 45.123.64.0/20 +add china_ip_route 45.123.80.0/21 +add china_ip_route 45.123.120.0/22 +add china_ip_route 45.123.128.0/21 +add china_ip_route 45.123.136.0/22 +add china_ip_route 45.123.148.0/22 +add china_ip_route 45.123.152.0/21 +add china_ip_route 45.123.164.0/22 +add china_ip_route 45.123.168.0/21 +add china_ip_route 45.123.176.0/21 +add china_ip_route 45.123.184.0/22 +add china_ip_route 45.123.204.0/22 +add china_ip_route 45.123.212.0/22 +add china_ip_route 45.123.224.0/19 +add china_ip_route 45.124.0.0/22 +add china_ip_route 45.124.20.0/22 +add china_ip_route 45.124.28.0/22 +add china_ip_route 45.124.32.0/21 +add china_ip_route 45.124.44.0/22 +add china_ip_route 45.124.68.0/22 +add china_ip_route 45.124.76.0/22 +add china_ip_route 45.124.80.0/22 +add china_ip_route 45.124.100.0/22 +add china_ip_route 45.124.124.0/22 +add china_ip_route 45.124.172.0/22 +add china_ip_route 45.124.176.0/22 +add china_ip_route 45.124.208.0/22 +add china_ip_route 45.124.248.0/22 +add china_ip_route 45.125.24.0/22 +add china_ip_route 45.125.44.0/22 +add china_ip_route 45.125.52.0/22 +add china_ip_route 45.125.56.0/22 +add china_ip_route 45.125.76.0/22 +add china_ip_route 45.125.80.0/20 +add china_ip_route 45.125.96.0/21 +add china_ip_route 45.125.136.0/22 +add china_ip_route 45.126.48.0/21 +add china_ip_route 45.126.108.0/22 +add china_ip_route 45.126.112.0/21 +add china_ip_route 45.126.120.0/22 +add china_ip_route 45.126.220.0/22 +add china_ip_route 45.127.8.0/21 +add china_ip_route 45.127.128.0/22 +add china_ip_route 45.127.144.0/21 +add china_ip_route 45.127.156.0/22 +add china_ip_route 45.248.8.0/22 +add china_ip_route 45.248.80.0/22 +add china_ip_route 45.248.88.0/22 +add china_ip_route 45.248.96.0/20 +add china_ip_route 45.248.128.0/21 +add china_ip_route 45.248.204.0/22 +add china_ip_route 45.248.208.0/20 +add china_ip_route 45.248.224.0/19 +add china_ip_route 45.249.0.0/21 +add china_ip_route 45.249.12.0/22 +add china_ip_route 45.249.16.0/20 +add china_ip_route 45.249.32.0/21 +add china_ip_route 45.249.112.0/22 +add china_ip_route 45.249.188.0/22 +add china_ip_route 45.249.192.0/20 +add china_ip_route 45.249.208.0/21 +add china_ip_route 45.250.12.0/22 +add china_ip_route 45.250.16.0/22 +add china_ip_route 45.250.28.0/22 +add china_ip_route 45.250.32.0/21 +add china_ip_route 45.250.40.0/22 +add china_ip_route 45.250.76.0/22 +add china_ip_route 45.250.80.0/20 +add china_ip_route 45.250.96.0/22 +add china_ip_route 45.250.104.0/21 +add china_ip_route 45.250.112.0/20 +add china_ip_route 45.250.128.0/20 +add china_ip_route 45.250.144.0/21 +add china_ip_route 45.250.152.0/22 +add china_ip_route 45.250.164.0/22 +add china_ip_route 45.250.180.0/22 +add china_ip_route 45.250.184.0/21 +add china_ip_route 45.250.192.0/22 +add china_ip_route 45.251.0.0/22 +add china_ip_route 45.251.8.0/22 +add china_ip_route 45.251.16.0/21 +add china_ip_route 45.251.52.0/22 +add china_ip_route 45.251.84.0/22 +add china_ip_route 45.251.88.0/21 +add china_ip_route 45.251.96.0/21 +add china_ip_route 45.251.120.0/21 +add china_ip_route 45.251.137.0/24 +add china_ip_route 45.251.138.0/23 +add china_ip_route 45.251.140.0/22 +add china_ip_route 45.251.144.0/20 +add china_ip_route 45.251.160.0/19 +add china_ip_route 45.251.192.0/19 +add china_ip_route 45.251.224.0/22 +add china_ip_route 45.252.0.0/19 +add china_ip_route 45.252.32.0/20 +add china_ip_route 45.252.48.0/22 +add china_ip_route 45.252.84.0/22 +add china_ip_route 45.252.88.0/21 +add china_ip_route 45.252.96.0/19 +add china_ip_route 45.252.128.0/19 +add china_ip_route 45.252.160.0/20 +add china_ip_route 45.252.176.0/22 +add china_ip_route 45.252.192.0/19 +add china_ip_route 45.252.224.0/21 +add china_ip_route 45.252.232.0/22 +add china_ip_route 45.253.0.0/18 +add china_ip_route 45.253.64.0/20 +add china_ip_route 45.253.80.0/21 +add china_ip_route 45.253.92.0/22 +add china_ip_route 45.253.96.0/20 +add china_ip_route 45.253.112.0/21 +add china_ip_route 45.253.120.0/22 +add china_ip_route 45.253.132.0/22 +add china_ip_route 45.253.136.0/21 +add china_ip_route 45.253.144.0/20 +add china_ip_route 45.253.160.0/19 +add china_ip_route 45.253.192.0/19 +add china_ip_route 45.253.224.0/20 +add china_ip_route 45.253.240.0/22 +add china_ip_route 45.254.0.0/20 +add china_ip_route 45.254.16.0/21 +add china_ip_route 45.254.28.0/22 +add china_ip_route 45.254.40.0/22 +add china_ip_route 45.254.48.0/20 +add china_ip_route 45.254.64.0/18 +add china_ip_route 45.254.128.0/18 +add china_ip_route 45.254.192.0/19 +add china_ip_route 45.254.224.0/21 +add china_ip_route 45.254.236.0/22 +add china_ip_route 45.254.248.0/22 +add china_ip_route 45.255.0.0/18 +add china_ip_route 45.255.64.0/19 +add china_ip_route 45.255.96.0/20 +add china_ip_route 45.255.112.0/21 +add china_ip_route 45.255.120.0/22 +add china_ip_route 45.255.136.0/21 +add china_ip_route 45.255.144.0/20 +add china_ip_route 45.255.160.0/19 +add china_ip_route 45.255.192.0/19 +add china_ip_route 45.255.224.0/20 +add china_ip_route 45.255.240.0/21 +add china_ip_route 45.255.248.0/22 +add china_ip_route 46.248.24.0/23 +add china_ip_route 47.92.0.0/14 +add china_ip_route 47.96.0.0/11 +add china_ip_route 49.4.0.0/14 +add china_ip_route 49.51.56.0/22 +add china_ip_route 49.51.60.0/23 +add china_ip_route 49.51.110.0/23 +add china_ip_route 49.51.112.0/20 +add china_ip_route 49.52.0.0/14 +add china_ip_route 49.64.0.0/11 +add china_ip_route 49.112.0.0/13 +add china_ip_route 49.120.0.0/14 +add china_ip_route 49.128.0.0/24 +add china_ip_route 49.128.2.0/23 +add china_ip_route 49.128.4.0/22 +add china_ip_route 49.140.0.0/15 +add china_ip_route 49.152.0.0/14 +add china_ip_route 49.208.0.0/14 +add china_ip_route 49.220.0.0/14 +add china_ip_route 49.232.0.0/14 +add china_ip_route 49.239.0.0/18 +add china_ip_route 49.239.192.0/18 +add china_ip_route 52.80.0.0/14 +add china_ip_route 52.94.249.0/27 +add china_ip_route 52.130.0.0/15 +add china_ip_route 54.222.0.0/15 +add china_ip_route 54.231.208.0/20 +add china_ip_route 54.240.224.0/24 +add china_ip_route 57.92.96.0/20 +add china_ip_route 58.14.0.0/15 +add china_ip_route 58.16.0.0/13 +add china_ip_route 58.24.0.0/15 +add china_ip_route 58.30.0.0/15 +add china_ip_route 58.32.0.0/11 +add china_ip_route 58.65.232.0/21 +add china_ip_route 58.66.0.0/15 +add china_ip_route 58.68.128.0/19 +add china_ip_route 58.68.160.0/23 +add china_ip_route 58.68.163.0/24 +add china_ip_route 58.68.164.0/22 +add china_ip_route 58.68.179.0/24 +add china_ip_route 58.68.180.0/24 +add china_ip_route 58.68.200.0/21 +add china_ip_route 58.68.208.0/20 +add china_ip_route 58.68.224.0/19 +add china_ip_route 58.82.0.0/17 +add china_ip_route 58.83.0.0/16 +add china_ip_route 58.87.64.0/18 +add china_ip_route 58.99.128.0/17 +add china_ip_route 58.100.0.0/15 +add china_ip_route 58.116.0.0/14 +add china_ip_route 58.128.0.0/13 +add china_ip_route 58.144.0.0/16 +add china_ip_route 58.154.0.0/15 +add china_ip_route 58.192.0.0/11 +add china_ip_route 58.240.0.0/12 +add china_ip_route 59.32.0.0/11 +add china_ip_route 59.64.0.0/12 +add china_ip_route 59.80.0.0/15 +add china_ip_route 59.82.0.0/16 +add china_ip_route 59.83.0.0/18 +add china_ip_route 59.83.132.0/22 +add china_ip_route 59.83.136.0/21 +add china_ip_route 59.83.144.0/20 +add china_ip_route 59.83.160.0/19 +add china_ip_route 59.83.192.0/19 +add china_ip_route 59.83.224.0/20 +add china_ip_route 59.83.240.0/21 +add china_ip_route 59.83.248.0/22 +add china_ip_route 59.83.252.0/23 +add china_ip_route 59.83.254.0/24 +add china_ip_route 59.107.0.0/16 +add china_ip_route 59.108.0.0/14 +add china_ip_route 59.151.0.0/17 +add china_ip_route 59.152.16.0/20 +add china_ip_route 59.152.36.0/22 +add china_ip_route 59.152.64.0/20 +add china_ip_route 59.152.112.0/21 +add china_ip_route 59.153.4.0/22 +add china_ip_route 59.153.32.0/22 +add china_ip_route 59.153.64.0/21 +add china_ip_route 59.153.72.0/22 +add china_ip_route 59.153.92.0/22 +add china_ip_route 59.153.136.0/22 +add china_ip_route 59.153.152.0/21 +add china_ip_route 59.153.164.0/22 +add china_ip_route 59.153.168.0/21 +add china_ip_route 59.153.176.0/20 +add china_ip_route 59.153.192.0/22 +add china_ip_route 59.155.0.0/16 +add china_ip_route 59.172.0.0/14 +add china_ip_route 59.191.0.0/17 +add china_ip_route 59.192.0.0/10 +add china_ip_route 60.0.0.0/11 +add china_ip_route 60.55.0.0/16 +add china_ip_route 60.63.0.0/16 +add china_ip_route 60.160.0.0/11 +add china_ip_route 60.194.0.0/15 +add china_ip_route 60.200.0.0/13 +add china_ip_route 60.208.0.0/12 +add china_ip_route 60.232.0.0/15 +add china_ip_route 60.235.0.0/16 +add china_ip_route 60.245.128.0/17 +add china_ip_route 60.247.0.0/16 +add china_ip_route 60.252.0.0/16 +add china_ip_route 60.253.128.0/17 +add china_ip_route 60.255.0.0/16 +add china_ip_route 61.4.81.0/24 +add china_ip_route 61.4.82.0/23 +add china_ip_route 61.4.84.0/22 +add china_ip_route 61.4.88.0/21 +add china_ip_route 61.4.176.0/20 +add china_ip_route 61.8.160.0/20 +add china_ip_route 61.14.212.0/22 +add china_ip_route 61.14.216.0/21 +add china_ip_route 61.14.240.0/21 +add china_ip_route 61.28.0.0/17 +add china_ip_route 61.29.128.0/18 +add china_ip_route 61.29.192.0/19 +add china_ip_route 61.29.224.0/20 +add china_ip_route 61.45.128.0/18 +add china_ip_route 61.45.224.0/20 +add china_ip_route 61.47.128.0/18 +add china_ip_route 61.48.0.0/13 +add china_ip_route 61.87.192.0/18 +add china_ip_route 61.128.0.0/10 +add china_ip_route 61.232.0.0/14 +add china_ip_route 61.236.0.0/15 +add china_ip_route 61.240.0.0/14 +add china_ip_route 62.234.0.0/16 +add china_ip_route 64.188.38.0/23 +add china_ip_route 64.188.40.0/22 +add china_ip_route 64.188.44.0/23 +add china_ip_route 68.79.0.0/18 +add china_ip_route 69.230.192.0/18 +add china_ip_route 69.231.128.0/18 +add china_ip_route 69.234.192.0/18 +add china_ip_route 69.235.128.0/18 +add china_ip_route 71.131.192.0/18 +add china_ip_route 71.132.0.0/18 +add china_ip_route 71.136.64.0/18 +add china_ip_route 71.137.0.0/18 +add china_ip_route 72.163.240.0/23 +add china_ip_route 72.163.248.0/22 +add china_ip_route 81.68.0.0/14 +add china_ip_route 82.156.0.0/15 +add china_ip_route 87.254.207.0/24 +add china_ip_route 89.19.34.0/23 +add china_ip_route 93.183.14.0/24 +add china_ip_route 93.183.18.0/24 +add china_ip_route 94.191.0.0/17 +add china_ip_route 101.0.0.0/22 +add china_ip_route 101.1.0.0/22 +add china_ip_route 101.2.172.0/22 +add china_ip_route 101.4.0.0/14 +add china_ip_route 101.16.0.0/12 +add china_ip_route 101.32.176.0/20 +add china_ip_route 101.32.192.0/18 +add china_ip_route 101.33.0.0/16 +add china_ip_route 101.34.0.0/15 +add china_ip_route 101.36.0.0/18 +add china_ip_route 101.36.64.0/20 +add china_ip_route 101.36.88.0/21 +add china_ip_route 101.36.128.0/17 +add china_ip_route 101.37.0.0/16 +add china_ip_route 101.38.0.0/15 +add china_ip_route 101.40.0.0/13 +add china_ip_route 101.48.0.0/15 +add china_ip_route 101.50.8.0/21 +add china_ip_route 101.50.56.0/22 +add china_ip_route 101.52.0.0/16 +add china_ip_route 101.53.100.0/22 +add china_ip_route 101.54.0.0/16 +add china_ip_route 101.55.224.0/21 +add china_ip_route 101.64.0.0/13 +add china_ip_route 101.72.0.0/14 +add china_ip_route 101.76.0.0/15 +add china_ip_route 101.78.0.0/22 +add china_ip_route 101.78.32.0/19 +add china_ip_route 101.80.0.0/12 +add china_ip_route 101.96.0.0/21 +add china_ip_route 101.96.8.0/22 +add china_ip_route 101.96.16.0/20 +add china_ip_route 101.96.128.0/17 +add china_ip_route 101.99.96.0/19 +add china_ip_route 101.101.64.0/19 +add china_ip_route 101.101.100.0/24 +add china_ip_route 101.101.102.0/23 +add china_ip_route 101.101.104.0/21 +add china_ip_route 101.101.112.0/20 +add china_ip_route 101.102.64.0/19 +add china_ip_route 101.102.100.0/23 +add china_ip_route 101.102.102.0/24 +add china_ip_route 101.102.104.0/21 +add china_ip_route 101.102.112.0/20 +add china_ip_route 101.104.0.0/14 +add china_ip_route 101.110.64.0/19 +add china_ip_route 101.110.96.0/20 +add china_ip_route 101.110.116.0/22 +add china_ip_route 101.110.120.0/21 +add china_ip_route 101.120.0.0/14 +add china_ip_route 101.124.0.0/15 +add china_ip_route 101.126.0.0/16 +add china_ip_route 101.128.0.0/22 +add china_ip_route 101.128.8.0/21 +add china_ip_route 101.128.16.0/20 +add china_ip_route 101.128.32.0/19 +add china_ip_route 101.129.0.0/16 +add china_ip_route 101.130.0.0/15 +add china_ip_route 101.132.0.0/15 +add china_ip_route 101.134.0.0/17 +add china_ip_route 101.134.128.0/19 +add china_ip_route 101.134.160.0/20 +add china_ip_route 101.134.176.0/21 +add china_ip_route 101.134.184.0/22 +add china_ip_route 101.134.189.0/24 +add china_ip_route 101.134.190.0/23 +add china_ip_route 101.134.192.0/18 +add china_ip_route 101.135.0.0/16 +add china_ip_route 101.144.0.0/12 +add china_ip_route 101.192.0.0/14 +add china_ip_route 101.196.0.0/16 +add china_ip_route 101.198.128.0/18 +add china_ip_route 101.198.194.0/24 +add china_ip_route 101.198.196.0/23 +add china_ip_route 101.198.200.0/22 +add china_ip_route 101.198.224.0/19 +add china_ip_route 101.199.0.0/19 +add china_ip_route 101.199.48.0/20 +add china_ip_route 101.199.64.0/18 +add china_ip_route 101.199.128.0/17 +add china_ip_route 101.200.0.0/15 +add china_ip_route 101.203.128.0/19 +add china_ip_route 101.203.160.0/21 +add china_ip_route 101.203.172.0/22 +add china_ip_route 101.203.176.0/20 +add china_ip_route 101.204.0.0/14 +add china_ip_route 101.224.0.0/13 +add china_ip_route 101.232.0.0/15 +add china_ip_route 101.234.64.0/21 +add china_ip_route 101.234.76.0/22 +add china_ip_route 101.234.80.0/20 +add china_ip_route 101.234.96.0/19 +add china_ip_route 101.236.0.0/14 +add china_ip_route 101.240.0.0/13 +add china_ip_route 101.248.0.0/15 +add china_ip_route 101.251.0.0/22 +add china_ip_route 101.251.8.0/21 +add china_ip_route 101.251.16.0/20 +add china_ip_route 101.251.32.0/19 +add china_ip_route 101.251.64.0/18 +add china_ip_route 101.251.128.0/17 +add china_ip_route 101.252.0.0/15 +add china_ip_route 101.254.0.0/16 +add china_ip_route 102.176.130.0/24 +add china_ip_route 103.1.8.0/22 +add china_ip_route 103.1.20.0/22 +add china_ip_route 103.1.24.0/22 +add china_ip_route 103.1.88.0/22 +add china_ip_route 103.1.168.0/22 +add china_ip_route 103.2.108.0/22 +add china_ip_route 103.2.156.0/22 +add china_ip_route 103.2.164.0/22 +add china_ip_route 103.2.200.0/21 +add china_ip_route 103.2.208.0/21 +add china_ip_route 103.3.84.0/22 +add china_ip_route 103.3.88.0/21 +add china_ip_route 103.3.96.0/19 +add china_ip_route 103.3.128.0/20 +add china_ip_route 103.3.148.0/22 +add china_ip_route 103.3.152.0/21 +add china_ip_route 103.4.56.0/22 +add china_ip_route 103.4.168.0/22 +add china_ip_route 103.4.184.0/22 +add china_ip_route 103.5.36.0/22 +add china_ip_route 103.5.52.0/24 +add china_ip_route 103.5.56.0/22 +add china_ip_route 103.5.152.0/22 +add china_ip_route 103.5.168.0/22 +add china_ip_route 103.5.192.0/22 +add china_ip_route 103.5.252.0/22 +add china_ip_route 103.6.76.0/22 +add china_ip_route 103.6.120.0/22 +add china_ip_route 103.6.220.0/22 +add china_ip_route 103.7.140.0/22 +add china_ip_route 103.7.212.0/22 +add china_ip_route 103.7.216.0/21 +add china_ip_route 103.8.0.0/21 +add china_ip_route 103.8.8.0/22 +add china_ip_route 103.8.32.0/22 +add china_ip_route 103.8.52.0/22 +add china_ip_route 103.8.68.0/22 +add china_ip_route 103.8.108.0/22 +add china_ip_route 103.8.156.0/22 +add china_ip_route 103.8.200.0/21 +add china_ip_route 103.8.220.0/22 +add china_ip_route 103.9.8.0/22 +add china_ip_route 103.9.24.0/22 +add china_ip_route 103.9.108.0/22 +add china_ip_route 103.9.152.0/22 +add china_ip_route 103.9.248.0/21 +add china_ip_route 103.10.0.0/22 +add china_ip_route 103.10.16.0/22 +add china_ip_route 103.10.84.0/22 +add china_ip_route 103.10.111.0/24 +add china_ip_route 103.10.140.0/22 +add china_ip_route 103.11.16.0/22 +add china_ip_route 103.11.168.0/22 +add china_ip_route 103.11.180.0/22 +add china_ip_route 103.12.32.0/22 +add china_ip_route 103.12.136.0/22 +add china_ip_route 103.12.184.0/22 +add china_ip_route 103.12.232.0/22 +add china_ip_route 103.13.12.0/22 +add china_ip_route 103.13.124.0/22 +add china_ip_route 103.13.144.0/22 +add china_ip_route 103.13.196.0/22 +add china_ip_route 103.13.244.0/22 +add china_ip_route 103.14.84.0/22 +add china_ip_route 103.14.132.0/22 +add china_ip_route 103.14.136.0/22 +add china_ip_route 103.14.156.0/22 +add china_ip_route 103.14.240.0/22 +add china_ip_route 103.15.4.0/22 +add china_ip_route 103.15.8.0/22 +add china_ip_route 103.15.16.0/22 +add china_ip_route 103.15.96.0/22 +add china_ip_route 103.15.200.0/22 +add china_ip_route 103.16.52.0/22 +add china_ip_route 103.16.80.0/21 +add china_ip_route 103.16.88.0/22 +add china_ip_route 103.16.108.0/22 +add china_ip_route 103.16.124.0/22 +add china_ip_route 103.17.40.0/22 +add china_ip_route 103.17.64.0/22 +add china_ip_route 103.17.120.0/23 +add china_ip_route 103.17.136.0/22 +add china_ip_route 103.17.160.0/22 +add china_ip_route 103.17.204.0/22 +add china_ip_route 103.17.228.0/22 +add china_ip_route 103.18.192.0/22 +add china_ip_route 103.18.208.0/21 +add china_ip_route 103.18.224.0/22 +add china_ip_route 103.19.12.0/22 +add china_ip_route 103.19.40.0/21 +add china_ip_route 103.19.64.0/21 +add china_ip_route 103.19.72.0/22 +add china_ip_route 103.19.232.0/22 +add china_ip_route 103.20.12.0/22 +add china_ip_route 103.20.32.0/23 +add china_ip_route 103.20.34.0/24 +add china_ip_route 103.20.68.0/22 +add china_ip_route 103.20.112.0/22 +add china_ip_route 103.20.128.0/22 +add china_ip_route 103.20.160.0/22 +add china_ip_route 103.20.248.0/22 +add china_ip_route 103.21.112.0/21 +add china_ip_route 103.21.140.0/22 +add china_ip_route 103.21.176.0/22 +add china_ip_route 103.21.240.0/22 +add china_ip_route 103.22.0.0/18 +add china_ip_route 103.22.64.0/19 +add china_ip_route 103.22.100.0/22 +add china_ip_route 103.22.104.0/21 +add china_ip_route 103.22.112.0/20 +add china_ip_route 103.22.188.0/22 +add china_ip_route 103.22.228.0/22 +add china_ip_route 103.22.252.0/22 +add china_ip_route 103.23.8.0/22 +add china_ip_route 103.23.56.0/22 +add china_ip_route 103.23.160.0/21 +add china_ip_route 103.23.176.0/22 +add china_ip_route 103.23.228.0/22 +add china_ip_route 103.24.24.0/22 +add china_ip_route 103.24.116.0/22 +add china_ip_route 103.24.128.0/22 +add china_ip_route 103.24.144.0/22 +add china_ip_route 103.24.176.0/22 +add china_ip_route 103.24.184.0/22 +add china_ip_route 103.24.228.0/22 +add china_ip_route 103.24.252.0/22 +add china_ip_route 103.25.20.0/22 +add china_ip_route 103.25.24.0/21 +add china_ip_route 103.25.32.0/21 +add china_ip_route 103.25.40.0/22 +add china_ip_route 103.25.48.0/22 +add china_ip_route 103.25.64.0/21 +add china_ip_route 103.25.148.0/22 +add china_ip_route 103.25.156.0/22 +add china_ip_route 103.25.216.0/22 +add china_ip_route 103.26.0.0/22 +add china_ip_route 103.26.64.0/22 +add china_ip_route 103.26.76.0/22 +add china_ip_route 103.26.116.0/22 +add china_ip_route 103.26.156.0/22 +add china_ip_route 103.26.160.0/22 +add china_ip_route 103.26.228.0/22 +add china_ip_route 103.26.240.0/22 +add china_ip_route 103.27.4.0/22 +add china_ip_route 103.27.12.0/22 +add china_ip_route 103.27.24.0/22 +add china_ip_route 103.27.56.0/22 +add china_ip_route 103.27.96.0/22 +add china_ip_route 103.27.240.0/22 +add china_ip_route 103.28.4.0/22 +add china_ip_route 103.28.8.0/22 +add china_ip_route 103.28.184.0/22 +add china_ip_route 103.28.204.0/22 +add china_ip_route 103.28.212.0/22 +add china_ip_route 103.29.16.0/22 +add china_ip_route 103.29.128.0/21 +add china_ip_route 103.29.136.0/22 +add china_ip_route 103.30.20.0/22 +add china_ip_route 103.30.96.0/22 +add china_ip_route 103.30.148.0/22 +add china_ip_route 103.30.202.0/23 +add china_ip_route 103.30.228.0/22 +add china_ip_route 103.30.236.0/22 +add china_ip_route 103.31.0.0/22 +add china_ip_route 103.31.48.0/21 +add china_ip_route 103.31.60.0/22 +add china_ip_route 103.31.64.0/21 +add china_ip_route 103.31.72.0/24 +add china_ip_route 103.31.148.0/22 +add china_ip_route 103.31.160.0/22 +add china_ip_route 103.31.168.0/22 +add china_ip_route 103.31.200.0/22 +add china_ip_route 103.31.236.0/22 +add china_ip_route 103.32.0.0/15 +add china_ip_route 103.34.0.0/16 +add china_ip_route 103.35.0.0/19 +add china_ip_route 103.35.32.0/20 +add china_ip_route 103.35.48.0/22 +add china_ip_route 103.35.104.0/22 +add china_ip_route 103.35.220.0/22 +add china_ip_route 103.36.28.0/22 +add china_ip_route 103.36.36.0/22 +add china_ip_route 103.36.56.0/21 +add china_ip_route 103.36.64.0/22 +add china_ip_route 103.36.72.0/22 +add china_ip_route 103.36.96.0/22 +add china_ip_route 103.36.132.0/22 +add china_ip_route 103.36.136.0/22 +add china_ip_route 103.36.160.0/19 +add china_ip_route 103.36.192.0/19 +add china_ip_route 103.36.224.0/20 +add china_ip_route 103.36.240.0/21 +add china_ip_route 103.37.12.0/22 +add china_ip_route 103.37.16.0/22 +add china_ip_route 103.37.24.0/22 +add china_ip_route 103.37.44.0/22 +add china_ip_route 103.37.52.0/22 +add china_ip_route 103.37.56.0/22 +add china_ip_route 103.37.72.0/22 +add china_ip_route 103.37.100.0/22 +add china_ip_route 103.37.104.0/22 +add china_ip_route 103.37.136.0/21 +add china_ip_route 103.37.144.0/20 +add china_ip_route 103.37.160.0/21 +add china_ip_route 103.37.172.0/22 +add china_ip_route 103.37.176.0/22 +add china_ip_route 103.37.188.0/22 +add china_ip_route 103.37.208.0/20 +add china_ip_route 103.37.252.0/22 +add china_ip_route 103.38.0.0/22 +add china_ip_route 103.38.32.0/22 +add china_ip_route 103.38.40.0/21 +add china_ip_route 103.38.76.0/22 +add china_ip_route 103.38.84.0/22 +add china_ip_route 103.38.92.0/22 +add china_ip_route 103.38.96.0/22 +add china_ip_route 103.38.116.0/22 +add china_ip_route 103.38.132.0/22 +add china_ip_route 103.38.140.0/22 +add china_ip_route 103.38.220.0/22 +add china_ip_route 103.38.224.0/21 +add china_ip_route 103.38.232.0/22 +add china_ip_route 103.38.252.0/23 +add china_ip_route 103.39.64.0/22 +add china_ip_route 103.39.88.0/22 +add china_ip_route 103.39.100.0/22 +add china_ip_route 103.39.104.0/22 +add china_ip_route 103.39.160.0/19 +add china_ip_route 103.39.200.0/21 +add china_ip_route 103.39.208.0/20 +add china_ip_route 103.39.224.0/21 +add china_ip_route 103.39.232.0/22 +add china_ip_route 103.40.12.0/22 +add china_ip_route 103.40.16.0/20 +add china_ip_route 103.40.32.0/20 +add china_ip_route 103.40.88.0/22 +add china_ip_route 103.40.192.0/22 +add china_ip_route 103.40.212.0/22 +add china_ip_route 103.40.220.0/22 +add china_ip_route 103.40.228.0/22 +add china_ip_route 103.40.232.0/21 +add china_ip_route 103.40.240.0/20 +add china_ip_route 103.41.0.0/22 +add china_ip_route 103.41.52.0/22 +add china_ip_route 103.41.140.0/22 +add china_ip_route 103.41.148.0/22 +add china_ip_route 103.41.152.0/22 +add china_ip_route 103.41.160.0/21 +add china_ip_route 103.41.220.0/22 +add china_ip_route 103.41.224.0/21 +add china_ip_route 103.41.232.0/22 +add china_ip_route 103.42.8.0/22 +add china_ip_route 103.42.24.0/22 +add china_ip_route 103.42.32.0/22 +add china_ip_route 103.42.64.0/21 +add china_ip_route 103.42.76.0/22 +add china_ip_route 103.42.232.0/22 +add china_ip_route 103.43.26.0/23 +add china_ip_route 103.43.96.0/21 +add china_ip_route 103.43.104.0/22 +add china_ip_route 103.43.124.0/22 +add china_ip_route 103.43.184.0/22 +add china_ip_route 103.43.196.0/22 +add china_ip_route 103.43.208.0/22 +add china_ip_route 103.43.220.0/22 +add china_ip_route 103.43.224.0/22 +add china_ip_route 103.43.240.0/22 +add china_ip_route 103.44.58.0/23 +add china_ip_route 103.44.80.0/22 +add china_ip_route 103.44.120.0/21 +add china_ip_route 103.44.144.0/22 +add china_ip_route 103.44.152.0/22 +add china_ip_route 103.44.168.0/22 +add china_ip_route 103.44.176.0/20 +add china_ip_route 103.44.192.0/20 +add china_ip_route 103.44.224.0/22 +add china_ip_route 103.44.236.0/22 +add china_ip_route 103.44.240.0/20 +add china_ip_route 103.45.0.0/18 +add china_ip_route 103.45.72.0/21 +add china_ip_route 103.45.80.0/20 +add china_ip_route 103.45.96.0/19 +add china_ip_route 103.45.128.0/18 +add china_ip_route 103.45.192.0/19 +add china_ip_route 103.45.224.0/22 +add china_ip_route 103.45.248.0/22 +add china_ip_route 103.46.0.0/22 +add china_ip_route 103.46.12.0/22 +add china_ip_route 103.46.16.0/20 +add china_ip_route 103.46.32.0/19 +add china_ip_route 103.46.64.0/18 +add china_ip_route 103.46.128.0/21 +add china_ip_route 103.46.136.0/22 +add china_ip_route 103.46.152.0/21 +add china_ip_route 103.46.160.0/20 +add china_ip_route 103.46.176.0/21 +add china_ip_route 103.46.244.0/22 +add china_ip_route 103.46.248.0/22 +add china_ip_route 103.47.4.0/22 +add china_ip_route 103.47.20.0/22 +add china_ip_route 103.47.36.0/22 +add china_ip_route 103.47.40.0/22 +add china_ip_route 103.47.48.0/22 +add china_ip_route 103.47.80.0/22 +add china_ip_route 103.47.96.0/22 +add china_ip_route 103.47.116.0/22 +add china_ip_route 103.47.120.0/22 +add china_ip_route 103.47.136.0/21 +add china_ip_route 103.47.212.0/22 +add china_ip_route 103.48.52.0/22 +add china_ip_route 103.48.92.0/22 +add china_ip_route 103.48.148.0/22 +add china_ip_route 103.48.152.0/22 +add china_ip_route 103.48.202.0/23 +add china_ip_route 103.48.216.0/21 +add china_ip_route 103.48.224.0/20 +add china_ip_route 103.48.240.0/21 +add china_ip_route 103.49.12.0/22 +add china_ip_route 103.49.20.0/22 +add china_ip_route 103.49.72.0/21 +add china_ip_route 103.49.96.0/22 +add china_ip_route 103.49.108.0/22 +add china_ip_route 103.49.128.0/22 +add china_ip_route 103.49.176.0/21 +add china_ip_route 103.50.36.0/22 +add china_ip_route 103.50.44.0/22 +add china_ip_route 103.50.48.0/20 +add china_ip_route 103.50.64.0/21 +add china_ip_route 103.50.72.0/22 +add china_ip_route 103.50.108.0/22 +add china_ip_route 103.50.112.0/20 +add china_ip_route 103.50.132.0/22 +add china_ip_route 103.50.136.0/21 +add china_ip_route 103.50.172.0/22 +add china_ip_route 103.50.176.0/20 +add china_ip_route 103.50.192.0/21 +add china_ip_route 103.50.200.0/22 +add china_ip_route 103.50.220.0/22 +add china_ip_route 103.50.224.0/20 +add china_ip_route 103.50.240.0/21 +add china_ip_route 103.50.248.0/22 +add china_ip_route 103.52.40.0/22 +add china_ip_route 103.52.72.0/21 +add china_ip_route 103.52.80.0/21 +add china_ip_route 103.52.96.0/21 +add china_ip_route 103.52.104.0/22 +add china_ip_route 103.52.160.0/21 +add china_ip_route 103.52.172.0/22 +add china_ip_route 103.52.176.0/22 +add china_ip_route 103.52.184.0/22 +add china_ip_route 103.52.196.0/22 +add china_ip_route 103.53.64.0/21 +add china_ip_route 103.53.92.0/22 +add china_ip_route 103.53.124.0/22 +add china_ip_route 103.53.128.0/20 +add china_ip_route 103.53.144.0/22 +add china_ip_route 103.53.160.0/22 +add china_ip_route 103.53.180.0/22 +add china_ip_route 103.53.204.0/22 +add china_ip_route 103.53.208.0/21 +add china_ip_route 103.53.236.0/22 +add china_ip_route 103.53.248.0/22 +add china_ip_route 103.54.8.0/22 +add china_ip_route 103.54.48.0/22 +add china_ip_route 103.54.160.0/21 +add china_ip_route 103.54.212.0/22 +add china_ip_route 103.54.228.0/22 +add china_ip_route 103.54.240.0/22 +add china_ip_route 103.55.80.0/22 +add china_ip_route 103.55.120.0/22 +add china_ip_route 103.55.152.0/22 +add china_ip_route 103.55.172.0/22 +add china_ip_route 103.55.204.0/22 +add china_ip_route 103.55.208.0/22 +add china_ip_route 103.55.228.0/22 +add china_ip_route 103.55.236.0/22 +add china_ip_route 103.55.240.0/22 +add china_ip_route 103.56.20.0/22 +add china_ip_route 103.56.32.0/22 +add china_ip_route 103.56.56.0/21 +add china_ip_route 103.56.72.0/21 +add china_ip_route 103.56.140.0/22 +add china_ip_route 103.56.152.0/22 +add china_ip_route 103.56.184.0/22 +add china_ip_route 103.56.200.0/22 +add china_ip_route 103.57.12.0/22 +add china_ip_route 103.57.52.0/22 +add china_ip_route 103.57.56.0/22 +add china_ip_route 103.57.76.0/22 +add china_ip_route 103.57.136.0/22 +add china_ip_route 103.57.196.0/22 +add china_ip_route 103.58.24.0/22 +add china_ip_route 103.59.76.0/22 +add china_ip_route 103.59.112.0/21 +add china_ip_route 103.59.120.0/24 +add china_ip_route 103.59.123.0/24 +add china_ip_route 103.59.124.0/22 +add china_ip_route 103.59.128.0/22 +add china_ip_route 103.59.148.0/22 +add china_ip_route 103.60.32.0/22 +add china_ip_route 103.60.44.0/22 +add china_ip_route 103.60.164.0/22 +add china_ip_route 103.60.228.0/22 +add china_ip_route 103.60.236.0/22 +add china_ip_route 103.61.60.0/24 +add china_ip_route 103.61.104.0/22 +add china_ip_route 103.61.140.0/22 +add china_ip_route 103.61.152.0/21 +add china_ip_route 103.61.160.0/22 +add china_ip_route 103.61.172.0/22 +add china_ip_route 103.61.176.0/22 +add china_ip_route 103.62.24.0/22 +add china_ip_route 103.62.72.0/21 +add china_ip_route 103.62.80.0/21 +add china_ip_route 103.62.88.0/22 +add china_ip_route 103.62.96.0/19 +add china_ip_route 103.62.128.0/21 +add china_ip_route 103.62.156.0/22 +add china_ip_route 103.62.160.0/19 +add china_ip_route 103.62.192.0/22 +add china_ip_route 103.62.204.0/22 +add china_ip_route 103.62.208.0/20 +add china_ip_route 103.62.224.0/22 +add china_ip_route 103.63.32.0/19 +add china_ip_route 103.63.64.0/20 +add china_ip_route 103.63.80.0/21 +add china_ip_route 103.63.88.0/22 +add china_ip_route 103.63.140.0/22 +add china_ip_route 103.63.144.0/22 +add china_ip_route 103.63.152.0/22 +add china_ip_route 103.63.160.0/20 +add china_ip_route 103.63.176.0/21 +add china_ip_route 103.63.184.0/22 +add china_ip_route 103.63.192.0/20 +add china_ip_route 103.63.208.0/22 +add china_ip_route 103.63.240.0/20 +add china_ip_route 103.64.0.0/21 +add china_ip_route 103.64.24.0/21 +add china_ip_route 103.64.32.0/19 +add china_ip_route 103.64.64.0/18 +add china_ip_route 103.64.140.0/22 +add china_ip_route 103.64.144.0/22 +add china_ip_route 103.64.152.0/21 +add china_ip_route 103.64.160.0/19 +add china_ip_route 103.64.192.0/18 +add china_ip_route 103.65.0.0/21 +add china_ip_route 103.65.12.0/22 +add china_ip_route 103.65.16.0/22 +add china_ip_route 103.65.48.0/20 +add china_ip_route 103.65.64.0/19 +add china_ip_route 103.65.100.0/22 +add china_ip_route 103.65.104.0/21 +add china_ip_route 103.65.112.0/20 +add china_ip_route 103.65.128.0/21 +add china_ip_route 103.65.136.0/22 +add china_ip_route 103.65.144.0/20 +add china_ip_route 103.65.160.0/20 +add china_ip_route 103.66.32.0/22 +add china_ip_route 103.66.40.0/22 +add china_ip_route 103.66.108.0/22 +add china_ip_route 103.66.200.0/22 +add china_ip_route 103.66.240.0/20 +add china_ip_route 103.67.0.0/21 +add china_ip_route 103.67.8.0/22 +add china_ip_route 103.67.40.0/21 +add china_ip_route 103.67.48.0/20 +add china_ip_route 103.67.64.0/18 +add china_ip_route 103.67.128.0/20 +add china_ip_route 103.67.144.0/21 +add china_ip_route 103.67.172.0/24 +add china_ip_route 103.67.175.0/24 +add china_ip_route 103.67.192.0/22 +add china_ip_route 103.67.212.0/22 +add china_ip_route 103.68.88.0/22 +add china_ip_route 103.68.100.0/22 +add china_ip_route 103.68.128.0/22 +add china_ip_route 103.69.16.0/22 +add china_ip_route 103.70.8.0/22 +add china_ip_route 103.70.148.0/22 +add china_ip_route 103.70.236.0/22 +add china_ip_route 103.70.252.0/22 +add china_ip_route 103.71.0.0/22 +add china_ip_route 103.71.68.0/22 +add china_ip_route 103.71.72.0/22 +add china_ip_route 103.71.80.0/21 +add china_ip_route 103.71.88.0/22 +add china_ip_route 103.71.120.0/21 +add china_ip_route 103.71.128.0/22 +add china_ip_route 103.71.196.0/22 +add china_ip_route 103.71.200.0/22 +add china_ip_route 103.71.232.0/22 +add china_ip_route 103.72.12.0/22 +add china_ip_route 103.72.16.0/20 +add china_ip_route 103.72.32.0/20 +add china_ip_route 103.72.48.0/21 +add china_ip_route 103.72.112.0/21 +add china_ip_route 103.72.124.0/22 +add china_ip_route 103.72.128.0/21 +add china_ip_route 103.72.149.0/24 +add china_ip_route 103.72.150.0/23 +add china_ip_route 103.72.172.0/22 +add china_ip_route 103.72.180.0/22 +add china_ip_route 103.72.224.0/19 +add china_ip_route 103.73.0.0/19 +add china_ip_route 103.73.48.0/22 +add china_ip_route 103.73.116.0/22 +add china_ip_route 103.73.120.0/22 +add china_ip_route 103.73.128.0/20 +add china_ip_route 103.73.168.0/22 +add china_ip_route 103.73.176.0/22 +add china_ip_route 103.73.204.0/22 +add china_ip_route 103.73.208.0/22 +add china_ip_route 103.73.240.0/23 +add china_ip_route 103.73.244.0/22 +add china_ip_route 103.73.248.0/22 +add china_ip_route 103.74.24.0/21 +add china_ip_route 103.74.32.0/20 +add china_ip_route 103.74.48.0/22 +add china_ip_route 103.74.56.0/21 +add china_ip_route 103.74.80.0/22 +add china_ip_route 103.74.124.0/22 +add china_ip_route 103.74.148.0/22 +add china_ip_route 103.74.152.0/21 +add china_ip_route 103.74.204.0/22 +add china_ip_route 103.74.232.0/22 +add china_ip_route 103.75.87.0/24 +add china_ip_route 103.75.88.0/21 +add china_ip_route 103.75.104.0/21 +add china_ip_route 103.75.112.0/22 +add china_ip_route 103.75.120.0/22 +add china_ip_route 103.75.128.0/22 +add china_ip_route 103.75.144.0/22 +add china_ip_route 103.75.152.0/22 +add china_ip_route 103.76.60.0/22 +add china_ip_route 103.76.64.0/21 +add china_ip_route 103.76.72.0/22 +add china_ip_route 103.76.92.0/22 +add china_ip_route 103.76.216.0/21 +add china_ip_route 103.76.224.0/22 +add china_ip_route 103.77.28.0/22 +add china_ip_route 103.77.52.0/22 +add china_ip_route 103.77.56.0/22 +add china_ip_route 103.77.88.0/22 +add china_ip_route 103.77.132.0/22 +add china_ip_route 103.77.148.0/22 +add china_ip_route 103.77.220.0/22 +add china_ip_route 103.78.56.0/21 +add china_ip_route 103.78.64.0/22 +add china_ip_route 103.78.124.0/22 +add china_ip_route 103.78.172.0/22 +add china_ip_route 103.78.176.0/22 +add china_ip_route 103.78.196.0/22 +add china_ip_route 103.78.228.0/22 +add china_ip_route 103.79.24.0/21 +add china_ip_route 103.79.36.0/22 +add china_ip_route 103.79.40.0/21 +add china_ip_route 103.79.56.0/21 +add china_ip_route 103.79.64.0/21 +add china_ip_route 103.79.80.0/21 +add china_ip_route 103.79.136.0/22 +add china_ip_route 103.79.188.0/22 +add china_ip_route 103.79.192.0/20 +add china_ip_route 103.79.208.0/21 +add china_ip_route 103.80.44.0/22 +add china_ip_route 103.80.72.0/22 +add china_ip_route 103.80.176.0/21 +add china_ip_route 103.80.184.0/22 +add china_ip_route 103.80.192.0/22 +add china_ip_route 103.80.200.0/22 +add china_ip_route 103.80.232.0/22 +add china_ip_route 103.81.4.0/22 +add china_ip_route 103.81.44.0/22 +add china_ip_route 103.81.48.0/22 +add china_ip_route 103.81.96.0/22 +add china_ip_route 103.81.120.0/22 +add china_ip_route 103.81.148.0/22 +add china_ip_route 103.81.164.0/22 +add china_ip_route 103.81.200.0/22 +add china_ip_route 103.81.232.0/22 +add china_ip_route 103.82.60.0/22 +add china_ip_route 103.82.68.0/22 +add china_ip_route 103.82.84.0/22 +add china_ip_route 103.82.104.0/22 +add china_ip_route 103.82.224.0/22 +add china_ip_route 103.82.236.0/22 +add china_ip_route 103.83.44.0/22 +add china_ip_route 103.83.52.0/22 +add china_ip_route 103.83.60.0/22 +add china_ip_route 103.83.72.0/22 +add china_ip_route 103.83.112.0/22 +add china_ip_route 103.83.132.0/22 +add china_ip_route 103.83.180.0/22 +add china_ip_route 103.84.0.0/22 +add china_ip_route 103.84.12.0/22 +add china_ip_route 103.84.20.0/22 +add china_ip_route 103.84.24.0/21 +add china_ip_route 103.84.48.0/22 +add china_ip_route 103.84.56.0/22 +add china_ip_route 103.84.64.0/22 +add china_ip_route 103.84.72.0/22 +add china_ip_route 103.85.44.0/22 +add china_ip_route 103.85.48.0/21 +add china_ip_route 103.85.56.0/22 +add china_ip_route 103.85.84.0/22 +add china_ip_route 103.85.136.0/22 +add china_ip_route 103.85.144.0/22 +add china_ip_route 103.85.164.0/22 +add china_ip_route 103.85.168.0/21 +add china_ip_route 103.85.176.0/22 +add china_ip_route 103.86.28.0/22 +add china_ip_route 103.86.32.0/22 +add china_ip_route 103.86.60.0/22 +add china_ip_route 103.86.129.0/24 +add china_ip_route 103.86.204.0/22 +add china_ip_route 103.86.208.0/20 +add china_ip_route 103.86.224.0/19 +add china_ip_route 103.87.0.0/21 +add china_ip_route 103.87.20.0/22 +add china_ip_route 103.87.32.0/22 +add china_ip_route 103.87.96.0/22 +add china_ip_route 103.87.132.0/22 +add china_ip_route 103.87.180.0/22 +add china_ip_route 103.87.224.0/22 +add china_ip_route 103.88.4.0/22 +add china_ip_route 103.88.8.0/21 +add china_ip_route 103.88.16.0/21 +add china_ip_route 103.88.32.0/21 +add china_ip_route 103.88.60.0/22 +add china_ip_route 103.88.64.0/22 +add china_ip_route 103.88.72.0/22 +add china_ip_route 103.88.96.0/21 +add china_ip_route 103.88.152.0/23 +add china_ip_route 103.88.164.0/22 +add china_ip_route 103.88.212.0/22 +add china_ip_route 103.89.28.0/22 +add china_ip_route 103.89.96.0/20 +add china_ip_route 103.89.112.0/22 +add china_ip_route 103.89.148.0/22 +add china_ip_route 103.89.172.0/22 +add china_ip_route 103.89.184.0/21 +add china_ip_route 103.89.192.0/19 +add china_ip_route 103.89.224.0/21 +add china_ip_route 103.90.52.0/22 +add china_ip_route 103.90.92.0/22 +add china_ip_route 103.90.100.0/22 +add china_ip_route 103.90.104.0/21 +add china_ip_route 103.90.112.0/20 +add china_ip_route 103.90.128.0/21 +add china_ip_route 103.90.152.0/22 +add china_ip_route 103.90.168.0/22 +add china_ip_route 103.90.173.0/24 +add china_ip_route 103.90.176.0/22 +add china_ip_route 103.90.188.0/22 +add china_ip_route 103.90.192.0/22 +add china_ip_route 103.91.36.0/22 +add china_ip_route 103.91.40.0/22 +add china_ip_route 103.91.108.0/22 +add china_ip_route 103.91.152.0/22 +add china_ip_route 103.91.176.0/22 +add china_ip_route 103.91.200.0/22 +add china_ip_route 103.91.208.0/21 +add china_ip_route 103.91.236.0/22 +add china_ip_route 103.92.48.0/20 +add china_ip_route 103.92.64.0/20 +add china_ip_route 103.92.80.0/22 +add china_ip_route 103.92.88.0/22 +add china_ip_route 103.92.108.0/22 +add china_ip_route 103.92.124.0/22 +add china_ip_route 103.92.132.0/22 +add china_ip_route 103.92.156.0/22 +add china_ip_route 103.92.164.0/22 +add china_ip_route 103.92.168.0/21 +add china_ip_route 103.92.176.0/20 +add china_ip_route 103.92.192.0/22 +add china_ip_route 103.92.236.0/22 +add china_ip_route 103.92.240.0/20 +add china_ip_route 103.93.0.0/21 +add china_ip_route 103.93.28.0/22 +add china_ip_route 103.93.84.0/22 +add china_ip_route 103.93.152.0/22 +add china_ip_route 103.93.180.0/22 +add china_ip_route 103.93.204.0/22 +add china_ip_route 103.94.12.0/22 +add china_ip_route 103.94.20.0/22 +add china_ip_route 103.94.29.0/24 +add china_ip_route 103.94.30.0/23 +add china_ip_route 103.94.32.0/20 +add china_ip_route 103.94.72.0/22 +add china_ip_route 103.94.88.0/22 +add china_ip_route 103.94.116.0/22 +add china_ip_route 103.94.160.0/22 +add china_ip_route 103.94.200.0/22 +add china_ip_route 103.95.28.0/24 +add china_ip_route 103.95.30.0/23 +add china_ip_route 103.95.52.0/22 +add china_ip_route 103.95.69.0/24 +add china_ip_route 103.95.70.0/23 +add china_ip_route 103.95.88.0/21 +add china_ip_route 103.95.136.0/21 +add china_ip_route 103.95.144.0/22 +add china_ip_route 103.95.152.0/22 +add china_ip_route 103.95.216.0/21 +add china_ip_route 103.95.224.0/22 +add china_ip_route 103.95.236.0/22 +add china_ip_route 103.95.240.0/20 +add china_ip_route 103.96.8.0/22 +add china_ip_route 103.96.124.0/22 +add china_ip_route 103.96.136.0/22 +add china_ip_route 103.96.152.0/21 +add china_ip_route 103.96.160.0/19 +add china_ip_route 103.96.192.0/20 +add china_ip_route 103.96.208.0/21 +add china_ip_route 103.96.216.0/22 +add china_ip_route 103.97.40.0/22 +add china_ip_route 103.97.60.0/23 +add china_ip_route 103.97.112.0/21 +add china_ip_route 103.97.148.0/22 +add china_ip_route 103.97.188.0/22 +add china_ip_route 103.97.192.0/22 +add china_ip_route 103.98.40.0/21 +add china_ip_route 103.98.48.0/22 +add china_ip_route 103.98.56.0/22 +add china_ip_route 103.98.80.0/22 +add china_ip_route 103.98.88.0/22 +add china_ip_route 103.98.100.0/22 +add china_ip_route 103.98.124.0/24 +add china_ip_route 103.98.126.0/23 +add china_ip_route 103.98.136.0/21 +add china_ip_route 103.98.144.0/22 +add china_ip_route 103.98.164.0/22 +add china_ip_route 103.98.168.0/22 +add china_ip_route 103.98.180.0/22 +add china_ip_route 103.98.196.0/22 +add china_ip_route 103.98.216.0/21 +add china_ip_route 103.98.224.0/21 +add china_ip_route 103.98.232.0/22 +add china_ip_route 103.98.240.0/21 +add china_ip_route 103.98.248.0/23 +add china_ip_route 103.98.250.0/24 +add china_ip_route 103.98.252.0/22 +add china_ip_route 103.99.56.0/22 +add china_ip_route 103.99.104.0/22 +add china_ip_route 103.99.116.0/22 +add china_ip_route 103.99.120.0/22 +add china_ip_route 103.99.132.0/22 +add china_ip_route 103.99.136.0/21 +add china_ip_route 103.99.144.0/22 +add china_ip_route 103.99.152.0/22 +add china_ip_route 103.99.220.0/22 +add china_ip_route 103.99.232.0/21 +add china_ip_route 103.100.0.0/22 +add china_ip_route 103.100.32.0/22 +add china_ip_route 103.100.40.0/22 +add china_ip_route 103.100.48.0/22 +add china_ip_route 103.100.56.0/22 +add china_ip_route 103.100.64.0/22 +add china_ip_route 103.100.88.0/22 +add china_ip_route 103.100.116.0/22 +add china_ip_route 103.100.144.0/22 +add china_ip_route 103.100.240.0/22 +add china_ip_route 103.100.248.0/21 +add china_ip_route 103.101.4.0/22 +add china_ip_route 103.101.8.0/21 +add china_ip_route 103.101.60.0/22 +add china_ip_route 103.101.121.0/24 +add china_ip_route 103.101.122.0/23 +add china_ip_route 103.101.124.0/24 +add china_ip_route 103.101.126.0/23 +add china_ip_route 103.101.144.0/21 +add china_ip_route 103.101.180.0/22 +add china_ip_route 103.101.184.0/22 +add china_ip_route 103.102.76.0/22 +add china_ip_route 103.102.80.0/22 +add china_ip_route 103.102.168.0/21 +add china_ip_route 103.102.180.0/22 +add china_ip_route 103.102.184.0/21 +add china_ip_route 103.102.192.0/22 +add china_ip_route 103.102.196.0/24 +add china_ip_route 103.102.200.0/22 +add china_ip_route 103.102.208.0/21 +add china_ip_route 103.103.12.0/22 +add china_ip_route 103.103.16.0/22 +add china_ip_route 103.103.36.0/22 +add china_ip_route 103.103.72.0/22 +add china_ip_route 103.103.188.0/22 +add china_ip_route 103.103.204.0/22 +add china_ip_route 103.103.225.0/24 +add china_ip_route 103.104.36.0/22 +add china_ip_route 103.104.40.0/22 +add china_ip_route 103.104.64.0/22 +add china_ip_route 103.104.152.0/22 +add china_ip_route 103.104.252.0/22 +add china_ip_route 103.105.0.0/21 +add china_ip_route 103.105.12.0/22 +add china_ip_route 103.105.16.0/22 +add china_ip_route 103.105.60.0/22 +add china_ip_route 103.105.116.0/22 +add china_ip_route 103.105.180.0/22 +add china_ip_route 103.105.184.0/22 +add china_ip_route 103.105.200.0/21 +add china_ip_route 103.105.220.0/22 +add china_ip_route 103.106.36.0/22 +add china_ip_route 103.106.40.0/21 +add china_ip_route 103.106.60.0/22 +add china_ip_route 103.106.68.0/22 +add china_ip_route 103.106.96.0/22 +add china_ip_route 103.106.120.0/22 +add china_ip_route 103.106.128.0/21 +add china_ip_route 103.106.190.0/23 +add china_ip_route 103.106.196.0/22 +add china_ip_route 103.106.212.0/22 +add china_ip_route 103.106.252.0/22 +add china_ip_route 103.107.0.0/22 +add china_ip_route 103.107.28.0/22 +add china_ip_route 103.107.32.0/22 +add china_ip_route 103.107.44.0/22 +add china_ip_route 103.107.72.0/22 +add china_ip_route 103.107.164.0/22 +add china_ip_route 103.107.168.0/22 +add china_ip_route 103.107.188.0/22 +add china_ip_route 103.107.192.0/22 +add china_ip_route 103.107.208.0/20 +add china_ip_route 103.108.52.0/22 +add china_ip_route 103.108.160.0/21 +add china_ip_route 103.108.196.0/22 +add china_ip_route 103.108.208.0/21 +add china_ip_route 103.108.224.0/22 +add china_ip_route 103.108.244.0/22 +add china_ip_route 103.108.251.0/24 +add china_ip_route 103.109.20.0/22 +add china_ip_route 103.109.48.0/22 +add china_ip_route 103.109.88.0/22 +add china_ip_route 103.109.107.0/24 +add china_ip_route 103.109.248.0/22 +add china_ip_route 103.110.32.0/22 +add china_ip_route 103.110.92.0/22 +add china_ip_route 103.110.119.0/24 +add china_ip_route 103.110.127.0/24 +add china_ip_route 103.110.128.0/23 +add china_ip_route 103.110.131.0/24 +add china_ip_route 103.110.132.0/22 +add china_ip_route 103.110.136.0/22 +add china_ip_route 103.110.156.0/22 +add china_ip_route 103.110.188.0/22 +add china_ip_route 103.110.204.0/22 +add china_ip_route 103.111.64.0/22 +add china_ip_route 103.111.172.0/22 +add china_ip_route 103.111.252.0/22 +add china_ip_route 103.112.72.0/22 +add china_ip_route 103.112.88.0/21 +add china_ip_route 103.112.108.0/22 +add china_ip_route 103.112.112.0/22 +add china_ip_route 103.112.140.0/22 +add china_ip_route 103.113.4.0/22 +add china_ip_route 103.113.144.0/22 +add china_ip_route 103.113.220.0/22 +add china_ip_route 103.113.232.0/21 +add china_ip_route 103.114.4.0/22 +add china_ip_route 103.114.68.0/22 +add china_ip_route 103.114.100.0/22 +add china_ip_route 103.114.148.0/22 +add china_ip_route 103.114.156.0/23 +add china_ip_route 103.114.212.0/22 +add china_ip_route 103.114.236.0/22 +add china_ip_route 103.114.240.0/22 +add china_ip_route 103.115.52.0/22 +add china_ip_route 103.115.68.0/22 +add china_ip_route 103.115.92.0/22 +add china_ip_route 103.115.120.0/22 +add china_ip_route 103.115.148.0/22 +add china_ip_route 103.115.248.0/22 +add china_ip_route 103.116.76.0/22 +add china_ip_route 103.116.92.0/22 +add china_ip_route 103.116.120.0/22 +add china_ip_route 103.116.128.0/22 +add china_ip_route 103.116.184.0/22 +add china_ip_route 103.116.220.0/22 +add china_ip_route 103.116.224.0/21 +add china_ip_route 103.117.16.0/22 +add china_ip_route 103.117.88.0/22 +add china_ip_route 103.117.188.0/22 +add china_ip_route 103.117.220.0/22 +add china_ip_route 103.118.19.0/24 +add china_ip_route 103.118.52.0/22 +add china_ip_route 103.118.56.0/21 +add china_ip_route 103.118.64.0/21 +add china_ip_route 103.118.72.0/22 +add china_ip_route 103.118.88.0/22 +add china_ip_route 103.118.173.0/24 +add china_ip_route 103.119.115.0/24 +add china_ip_route 103.119.156.0/22 +add china_ip_route 103.119.180.0/22 +add china_ip_route 103.119.200.0/22 +add china_ip_route 103.119.224.0/22 +add china_ip_route 103.120.52.0/22 +add china_ip_route 103.120.72.0/22 +add china_ip_route 103.120.76.0/24 +add china_ip_route 103.120.88.0/22 +add china_ip_route 103.120.96.0/22 +add china_ip_route 103.120.140.0/22 +add china_ip_route 103.120.196.0/22 +add china_ip_route 103.120.224.0/22 +add china_ip_route 103.121.52.0/22 +add china_ip_route 103.121.160.0/21 +add china_ip_route 103.121.250.0/24 +add china_ip_route 103.121.252.0/22 +add china_ip_route 103.122.48.0/22 +add china_ip_route 103.122.178.0/23 +add china_ip_route 103.122.192.0/22 +add china_ip_route 103.122.240.0/23 +add china_ip_route 103.122.242.0/24 +add china_ip_route 103.123.4.0/22 +add china_ip_route 103.123.56.0/22 +add china_ip_route 103.123.88.0/21 +add china_ip_route 103.123.116.0/22 +add china_ip_route 103.123.176.0/22 +add china_ip_route 103.123.200.0/21 +add china_ip_route 103.123.208.0/21 +add china_ip_route 103.124.24.0/22 +add china_ip_route 103.124.48.0/22 +add china_ip_route 103.124.64.0/22 +add china_ip_route 103.124.212.0/22 +add china_ip_route 103.124.216.0/22 +add china_ip_route 103.125.20.0/22 +add china_ip_route 103.125.44.0/22 +add china_ip_route 103.125.132.0/22 +add china_ip_route 103.125.164.0/22 +add china_ip_route 103.125.196.0/22 +add china_ip_route 103.125.236.0/22 +add china_ip_route 103.126.0.0/22 +add china_ip_route 103.126.16.0/23 +add china_ip_route 103.126.44.0/22 +add china_ip_route 103.126.124.0/22 +add china_ip_route 103.126.128.0/22 +add china_ip_route 103.129.53.0/24 +add china_ip_route 103.129.54.0/23 +add china_ip_route 103.129.148.0/22 +add china_ip_route 103.130.132.0/22 +add china_ip_route 103.130.160.0/22 +add china_ip_route 103.130.228.0/22 +add china_ip_route 103.131.20.0/22 +add china_ip_route 103.131.36.0/22 +add china_ip_route 103.131.152.0/22 +add china_ip_route 103.131.168.0/22 +add china_ip_route 103.131.224.0/21 +add china_ip_route 103.131.240.0/22 +add china_ip_route 103.132.60.0/22 +add china_ip_route 103.132.64.0/20 +add china_ip_route 103.132.80.0/22 +add china_ip_route 103.132.104.0/21 +add china_ip_route 103.132.112.0/21 +add china_ip_route 103.132.120.0/22 +add china_ip_route 103.132.188.0/22 +add china_ip_route 103.132.208.0/21 +add china_ip_route 103.133.12.0/22 +add china_ip_route 103.133.40.0/22 +add china_ip_route 103.133.128.0/22 +add china_ip_route 103.133.232.0/22 +add china_ip_route 103.134.196.0/22 +add china_ip_route 103.135.80.0/22 +add china_ip_route 103.135.124.0/22 +add china_ip_route 103.135.148.0/22 +add china_ip_route 103.135.156.0/22 +add china_ip_route 103.135.160.0/21 +add china_ip_route 103.135.176.0/22 +add china_ip_route 103.135.184.0/22 +add china_ip_route 103.135.192.0/21 +add china_ip_route 103.135.236.0/22 +add china_ip_route 103.136.128.0/22 +add china_ip_route 103.136.232.0/22 +add china_ip_route 103.137.58.0/23 +add china_ip_route 103.137.60.0/24 +add china_ip_route 103.137.136.0/23 +add china_ip_route 103.137.149.0/24 +add china_ip_route 103.137.180.0/22 +add china_ip_route 103.137.236.0/22 +add china_ip_route 103.138.2.0/23 +add china_ip_route 103.138.135.0/24 +add china_ip_route 103.138.208.0/23 +add china_ip_route 103.138.220.0/23 +add china_ip_route 103.138.248.0/23 +add china_ip_route 103.139.22.0/23 +add china_ip_route 103.139.134.0/23 +add china_ip_route 103.139.172.0/23 +add china_ip_route 103.139.204.0/23 +add china_ip_route 103.139.212.0/23 +add china_ip_route 103.140.14.0/23 +add china_ip_route 103.140.46.0/23 +add china_ip_route 103.140.140.0/23 +add china_ip_route 103.140.144.0/23 +add china_ip_route 103.140.192.0/23 +add china_ip_route 103.141.10.0/23 +add china_ip_route 103.141.58.0/23 +add china_ip_route 103.141.128.0/23 +add china_ip_route 103.141.186.0/23 +add china_ip_route 103.141.242.0/23 +add china_ip_route 103.142.0.0/23 +add china_ip_route 103.142.28.0/23 +add china_ip_route 103.142.58.0/23 +add china_ip_route 103.142.82.0/23 +add china_ip_route 103.142.96.0/23 +add china_ip_route 103.142.122.0/23 +add china_ip_route 103.142.128.0/23 +add china_ip_route 103.142.154.0/23 +add china_ip_route 103.142.156.0/23 +add china_ip_route 103.142.180.0/23 +add china_ip_route 103.142.186.0/23 +add china_ip_route 103.142.230.0/24 +add china_ip_route 103.142.234.0/23 +add china_ip_route 103.142.238.0/23 +add china_ip_route 103.143.16.0/22 +add china_ip_route 103.143.31.0/24 +add china_ip_route 103.143.74.0/23 +add china_ip_route 103.143.120.0/24 +add china_ip_route 103.143.124.0/23 +add china_ip_route 103.143.132.0/22 +add china_ip_route 103.143.174.0/23 +add china_ip_route 103.143.228.0/23 +add china_ip_route 103.144.66.0/23 +add china_ip_route 103.144.70.0/23 +add china_ip_route 103.144.72.0/23 +add china_ip_route 103.144.136.0/23 +add china_ip_route 103.144.158.0/23 +add china_ip_route 103.145.42.0/23 +add china_ip_route 103.145.94.0/23 +add china_ip_route 103.145.98.0/23 +add china_ip_route 103.145.188.0/23 +add china_ip_route 103.146.6.0/23 +add china_ip_route 103.146.72.0/23 +add china_ip_route 103.146.126.0/23 +add china_ip_route 103.146.138.0/23 +add china_ip_route 103.146.236.0/23 +add china_ip_route 103.146.252.0/23 +add china_ip_route 103.147.124.0/23 +add china_ip_route 103.147.198.0/23 +add china_ip_route 103.147.206.0/23 +add china_ip_route 103.147.211.0/24 +add china_ip_route 103.148.174.0/23 +add china_ip_route 103.149.6.0/23 +add china_ip_route 103.149.17.0/24 +add china_ip_route 103.149.44.0/23 +add china_ip_route 103.149.190.0/23 +add china_ip_route 103.149.210.0/23 +add china_ip_route 103.149.214.0/23 +add china_ip_route 103.149.220.0/23 +add china_ip_route 103.149.242.0/23 +add china_ip_route 103.149.244.0/22 +add china_ip_route 103.150.24.0/23 +add china_ip_route 103.150.66.0/23 +add china_ip_route 103.150.72.0/23 +add china_ip_route 103.150.122.0/23 +add china_ip_route 103.150.126.0/23 +add china_ip_route 103.150.128.0/23 +add china_ip_route 103.150.131.0/24 +add china_ip_route 103.150.146.0/23 +add china_ip_route 103.150.164.0/23 +add china_ip_route 103.150.200.0/23 +add china_ip_route 103.150.216.0/23 +add china_ip_route 103.150.244.0/23 +add china_ip_route 103.151.142.0/23 +add china_ip_route 103.151.148.0/22 +add china_ip_route 103.151.158.0/23 +add china_ip_route 103.152.28.0/22 +add china_ip_route 103.152.76.0/23 +add china_ip_route 103.152.80.0/23 +add china_ip_route 103.152.113.0/24 +add china_ip_route 103.152.120.0/22 +add china_ip_route 103.152.152.0/23 +add china_ip_route 103.152.168.0/23 +add china_ip_route 103.152.186.0/23 +add china_ip_route 103.152.190.0/23 +add china_ip_route 103.152.192.0/23 +add china_ip_route 103.152.200.0/23 +add china_ip_route 103.152.208.0/23 +add china_ip_route 103.152.224.0/23 +add china_ip_route 103.152.247.0/24 +add china_ip_route 103.152.250.0/23 +add china_ip_route 103.153.4.0/23 +add china_ip_route 103.153.36.0/23 +add china_ip_route 103.153.99.0/24 +add china_ip_route 103.153.100.0/23 +add china_ip_route 103.153.114.0/23 +add china_ip_route 103.153.122.0/23 +add china_ip_route 103.153.128.0/23 +add china_ip_route 103.153.132.0/23 +add china_ip_route 103.153.138.0/23 +add china_ip_route 103.153.146.0/23 +add china_ip_route 103.153.160.0/23 +add china_ip_route 103.154.18.0/23 +add china_ip_route 103.154.30.0/23 +add china_ip_route 103.154.32.0/23 +add china_ip_route 103.154.40.0/23 +add china_ip_route 103.154.66.0/23 +add china_ip_route 103.154.162.0/23 +add china_ip_route 103.154.164.0/23 +add china_ip_route 103.154.168.0/23 +add china_ip_route 103.154.243.0/24 +add china_ip_route 103.155.14.0/23 +add china_ip_route 103.155.16.0/23 +add china_ip_route 103.155.34.0/23 +add china_ip_route 103.192.0.0/19 +add china_ip_route 103.192.48.0/21 +add china_ip_route 103.192.56.0/22 +add china_ip_route 103.192.84.0/22 +add china_ip_route 103.192.88.0/21 +add china_ip_route 103.192.96.0/20 +add china_ip_route 103.192.112.0/22 +add china_ip_route 103.192.128.0/20 +add china_ip_route 103.192.144.0/22 +add china_ip_route 103.192.164.0/22 +add china_ip_route 103.192.188.0/22 +add china_ip_route 103.192.208.0/21 +add china_ip_route 103.192.216.0/22 +add china_ip_route 103.192.252.0/22 +add china_ip_route 103.193.40.0/21 +add china_ip_route 103.193.120.0/22 +add china_ip_route 103.193.140.0/22 +add china_ip_route 103.193.160.0/22 +add china_ip_route 103.193.188.0/22 +add china_ip_route 103.193.192.0/22 +add china_ip_route 103.193.212.0/22 +add china_ip_route 103.193.216.0/21 +add china_ip_route 103.193.224.0/20 +add china_ip_route 103.194.16.0/22 +add china_ip_route 103.195.112.0/22 +add china_ip_route 103.195.152.0/22 +add china_ip_route 103.195.160.0/22 +add china_ip_route 103.196.64.0/22 +add china_ip_route 103.196.72.0/22 +add china_ip_route 103.196.88.0/21 +add china_ip_route 103.196.96.0/22 +add china_ip_route 103.196.168.0/22 +add china_ip_route 103.196.185.0/24 +add china_ip_route 103.196.186.0/23 +add china_ip_route 103.197.181.0/24 +add china_ip_route 103.197.183.0/24 +add china_ip_route 103.197.228.0/22 +add china_ip_route 103.197.253.0/24 +add china_ip_route 103.197.254.0/23 +add china_ip_route 103.198.20.0/22 +add china_ip_route 103.198.60.0/22 +add china_ip_route 103.198.64.0/22 +add china_ip_route 103.198.72.0/22 +add china_ip_route 103.198.124.0/22 +add china_ip_route 103.198.156.0/22 +add china_ip_route 103.198.180.0/22 +add china_ip_route 103.198.196.0/22 +add china_ip_route 103.198.200.0/22 +add china_ip_route 103.199.164.0/22 +add china_ip_route 103.199.196.0/22 +add china_ip_route 103.199.228.0/22 +add china_ip_route 103.199.252.0/22 +add china_ip_route 103.200.52.0/22 +add china_ip_route 103.200.64.0/21 +add china_ip_route 103.200.136.0/21 +add china_ip_route 103.200.144.0/20 +add china_ip_route 103.200.160.0/19 +add china_ip_route 103.200.192.0/22 +add china_ip_route 103.200.220.0/22 +add china_ip_route 103.200.224.0/19 +add china_ip_route 103.201.0.0/20 +add china_ip_route 103.201.16.0/21 +add china_ip_route 103.201.28.0/22 +add china_ip_route 103.201.32.0/19 +add china_ip_route 103.201.64.0/22 +add china_ip_route 103.201.76.0/22 +add china_ip_route 103.201.80.0/20 +add china_ip_route 103.201.96.0/20 +add china_ip_route 103.201.112.0/21 +add china_ip_route 103.201.120.0/22 +add china_ip_route 103.201.152.0/21 +add china_ip_route 103.201.160.0/19 +add china_ip_route 103.201.192.0/18 +add china_ip_route 103.202.0.0/19 +add china_ip_route 103.202.32.0/20 +add china_ip_route 103.202.56.0/21 +add china_ip_route 103.202.64.0/18 +add china_ip_route 103.202.128.0/20 +add china_ip_route 103.202.144.0/22 +add china_ip_route 103.202.152.0/21 +add china_ip_route 103.202.160.0/19 +add china_ip_route 103.202.192.0/20 +add china_ip_route 103.202.212.0/22 +add china_ip_route 103.202.228.0/22 +add china_ip_route 103.202.236.0/22 +add china_ip_route 103.202.240.0/20 +add china_ip_route 103.203.0.0/19 +add china_ip_route 103.203.32.0/22 +add china_ip_route 103.203.96.0/19 +add china_ip_route 103.203.128.0/22 +add china_ip_route 103.203.140.0/22 +add china_ip_route 103.203.164.0/22 +add china_ip_route 103.203.168.0/22 +add china_ip_route 103.203.192.0/22 +add china_ip_route 103.203.200.0/22 +add china_ip_route 103.203.212.0/22 +add china_ip_route 103.203.216.0/22 +add china_ip_route 103.204.24.0/22 +add china_ip_route 103.204.88.0/22 +add china_ip_route 103.204.112.0/22 +add china_ip_route 103.204.136.0/21 +add china_ip_route 103.204.144.0/21 +add china_ip_route 103.204.152.0/22 +add china_ip_route 103.204.196.0/22 +add china_ip_route 103.204.232.0/21 +add china_ip_route 103.205.4.0/22 +add china_ip_route 103.205.40.0/21 +add china_ip_route 103.205.52.0/22 +add china_ip_route 103.205.108.0/22 +add china_ip_route 103.205.116.0/22 +add china_ip_route 103.205.120.0/24 +add china_ip_route 103.205.136.0/22 +add china_ip_route 103.205.162.0/24 +add china_ip_route 103.205.188.0/22 +add china_ip_route 103.205.192.0/21 +add china_ip_route 103.205.200.0/22 +add china_ip_route 103.205.236.0/22 +add china_ip_route 103.205.248.0/21 +add china_ip_route 103.206.0.0/22 +add china_ip_route 103.206.44.0/22 +add china_ip_route 103.206.148.0/22 +add china_ip_route 103.207.104.0/22 +add china_ip_route 103.207.184.0/21 +add china_ip_route 103.207.192.0/20 +add china_ip_route 103.207.208.0/21 +add china_ip_route 103.207.220.0/22 +add china_ip_route 103.207.228.0/22 +add china_ip_route 103.207.232.0/22 +add china_ip_route 103.208.12.0/22 +add china_ip_route 103.208.16.0/22 +add china_ip_route 103.208.28.0/22 +add china_ip_route 103.208.48.0/22 +add china_ip_route 103.208.148.0/22 +add china_ip_route 103.209.112.0/22 +add china_ip_route 103.209.136.0/22 +add china_ip_route 103.209.200.0/22 +add china_ip_route 103.209.208.0/22 +add china_ip_route 103.209.216.0/22 +add china_ip_route 103.210.0.0/22 +add china_ip_route 103.210.96.0/22 +add china_ip_route 103.210.156.0/22 +add china_ip_route 103.210.160.0/19 +add china_ip_route 103.210.217.0/24 +add china_ip_route 103.210.218.0/23 +add china_ip_route 103.211.44.0/22 +add china_ip_route 103.211.96.0/23 +add china_ip_route 103.211.98.0/24 +add china_ip_route 103.211.100.0/22 +add china_ip_route 103.211.156.0/22 +add china_ip_route 103.211.165.0/24 +add china_ip_route 103.211.168.0/22 +add china_ip_route 103.211.220.0/22 +add china_ip_route 103.211.248.0/22 +add china_ip_route 103.212.0.0/20 +add china_ip_route 103.212.44.0/22 +add china_ip_route 103.212.48.0/22 +add china_ip_route 103.212.84.0/22 +add china_ip_route 103.212.100.0/22 +add china_ip_route 103.212.148.0/22 +add china_ip_route 103.212.164.0/22 +add china_ip_route 103.212.196.0/22 +add china_ip_route 103.212.200.0/22 +add china_ip_route 103.212.252.0/22 +add china_ip_route 103.213.40.0/21 +add china_ip_route 103.213.48.0/20 +add china_ip_route 103.213.64.0/19 +add china_ip_route 103.213.96.0/22 +add china_ip_route 103.213.132.0/22 +add china_ip_route 103.213.136.0/21 +add china_ip_route 103.213.144.0/20 +add china_ip_route 103.213.160.0/19 +add china_ip_route 103.213.252.0/22 +add china_ip_route 103.214.48.0/22 +add china_ip_route 103.214.84.0/22 +add china_ip_route 103.214.212.0/22 +add china_ip_route 103.214.240.0/21 +add china_ip_route 103.215.28.0/22 +add china_ip_route 103.215.32.0/21 +add china_ip_route 103.215.44.0/22 +add china_ip_route 103.215.100.0/23 +add china_ip_route 103.215.108.0/22 +add china_ip_route 103.215.116.0/22 +add china_ip_route 103.215.120.0/22 +add china_ip_route 103.215.140.0/22 +add china_ip_route 103.216.4.0/22 +add china_ip_route 103.216.8.0/21 +add china_ip_route 103.216.16.0/20 +add china_ip_route 103.216.32.0/20 +add china_ip_route 103.216.64.0/22 +add china_ip_route 103.216.108.0/22 +add china_ip_route 103.216.136.0/22 +add china_ip_route 103.216.152.0/22 +add china_ip_route 103.216.224.0/21 +add china_ip_route 103.216.240.0/20 +add china_ip_route 103.217.0.0/18 +add china_ip_route 103.217.168.0/22 +add china_ip_route 103.217.180.0/22 +add china_ip_route 103.217.184.0/21 +add china_ip_route 103.217.192.0/20 +add china_ip_route 103.218.8.0/21 +add china_ip_route 103.218.16.0/21 +add china_ip_route 103.218.28.0/22 +add china_ip_route 103.218.32.0/19 +add china_ip_route 103.218.64.0/19 +add china_ip_route 103.218.192.0/20 +add china_ip_route 103.218.208.0/21 +add china_ip_route 103.218.216.0/22 +add china_ip_route 103.219.24.0/21 +add china_ip_route 103.219.32.0/21 +add china_ip_route 103.219.64.0/22 +add china_ip_route 103.219.84.0/22 +add china_ip_route 103.219.88.0/21 +add china_ip_route 103.219.96.0/21 +add china_ip_route 103.219.176.0/22 +add china_ip_route 103.219.184.0/22 +add china_ip_route 103.220.48.0/20 +add china_ip_route 103.220.64.0/22 +add china_ip_route 103.220.92.0/22 +add china_ip_route 103.220.96.0/22 +add china_ip_route 103.220.104.0/21 +add china_ip_route 103.220.116.0/22 +add china_ip_route 103.220.120.0/21 +add china_ip_route 103.220.128.0/20 +add china_ip_route 103.220.144.0/21 +add china_ip_route 103.220.152.0/22 +add china_ip_route 103.220.160.0/19 +add china_ip_route 103.220.192.0/21 +add china_ip_route 103.220.200.0/22 +add china_ip_route 103.220.240.0/21 +add china_ip_route 103.220.252.0/22 +add china_ip_route 103.221.0.0/19 +add china_ip_route 103.221.32.0/22 +add china_ip_route 103.221.40.0/24 +add china_ip_route 103.221.44.0/22 +add china_ip_route 103.221.88.0/22 +add china_ip_route 103.221.92.0/23 +add china_ip_route 103.221.95.0/24 +add china_ip_route 103.221.96.0/19 +add china_ip_route 103.221.128.0/18 +add china_ip_route 103.221.192.0/20 +add china_ip_route 103.222.0.0/20 +add china_ip_route 103.222.16.0/22 +add china_ip_route 103.222.24.0/21 +add china_ip_route 103.222.33.0/24 +add china_ip_route 103.222.34.0/23 +add china_ip_route 103.222.36.0/22 +add china_ip_route 103.222.40.0/21 +add china_ip_route 103.222.48.0/20 +add china_ip_route 103.222.64.0/18 +add china_ip_route 103.222.128.0/18 +add china_ip_route 103.222.192.0/19 +add china_ip_route 103.222.224.0/21 +add china_ip_route 103.222.232.0/22 +add china_ip_route 103.222.240.0/21 +add china_ip_route 103.223.16.0/20 +add china_ip_route 103.223.32.0/19 +add china_ip_route 103.223.64.0/19 +add china_ip_route 103.223.96.0/20 +add china_ip_route 103.223.112.0/21 +add china_ip_route 103.223.124.0/22 +add china_ip_route 103.223.128.0/21 +add china_ip_route 103.223.140.0/22 +add china_ip_route 103.223.144.0/20 +add china_ip_route 103.223.160.0/20 +add china_ip_route 103.223.176.0/21 +add china_ip_route 103.223.188.0/22 +add china_ip_route 103.223.192.0/18 +add china_ip_route 103.224.0.0/22 +add china_ip_route 103.224.40.0/21 +add china_ip_route 103.224.60.0/22 +add china_ip_route 103.224.220.0/22 +add china_ip_route 103.224.224.0/21 +add china_ip_route 103.224.232.0/22 +add china_ip_route 103.225.32.0/22 +add china_ip_route 103.226.40.0/22 +add china_ip_route 103.226.56.0/21 +add china_ip_route 103.226.80.0/22 +add china_ip_route 103.226.116.0/22 +add china_ip_route 103.226.132.0/22 +add china_ip_route 103.226.156.0/22 +add china_ip_route 103.226.180.0/22 +add china_ip_route 103.226.196.0/22 +add china_ip_route 103.227.48.0/22 +add china_ip_route 103.227.72.0/21 +add china_ip_route 103.227.80.0/22 +add china_ip_route 103.227.100.0/22 +add china_ip_route 103.227.120.0/22 +add china_ip_route 103.227.132.0/22 +add china_ip_route 103.227.136.0/22 +add china_ip_route 103.227.196.0/22 +add china_ip_route 103.227.204.0/23 +add china_ip_route 103.227.206.0/24 +add china_ip_route 103.227.212.0/22 +add china_ip_route 103.227.228.0/22 +add china_ip_route 103.228.12.0/22 +add china_ip_route 103.228.88.0/22 +add china_ip_route 103.228.136.0/22 +add china_ip_route 103.228.160.0/22 +add china_ip_route 103.228.176.0/22 +add china_ip_route 103.228.204.0/22 +add china_ip_route 103.228.208.0/22 +add china_ip_route 103.228.228.0/22 +add china_ip_route 103.228.232.0/22 +add china_ip_route 103.229.20.0/22 +add china_ip_route 103.229.136.0/22 +add china_ip_route 103.229.148.0/22 +add china_ip_route 103.229.172.0/22 +add china_ip_route 103.229.212.0/22 +add china_ip_route 103.229.216.0/21 +add china_ip_route 103.229.228.0/22 +add china_ip_route 103.229.236.0/22 +add china_ip_route 103.229.240.0/22 +add china_ip_route 103.230.0.0/22 +add china_ip_route 103.230.28.0/22 +add china_ip_route 103.230.40.0/21 +add china_ip_route 103.230.96.0/22 +add china_ip_route 103.230.196.0/22 +add china_ip_route 103.230.200.0/21 +add china_ip_route 103.230.212.0/22 +add china_ip_route 103.230.236.0/22 +add china_ip_route 103.231.16.0/21 +add china_ip_route 103.231.64.0/21 +add china_ip_route 103.231.144.0/22 +add china_ip_route 103.231.180.0/22 +add china_ip_route 103.231.244.0/22 +add china_ip_route 103.232.4.0/22 +add china_ip_route 103.232.17.168/29 +add china_ip_route 103.232.144.0/22 +add china_ip_route 103.233.4.0/22 +add china_ip_route 103.233.44.0/22 +add china_ip_route 103.233.52.0/22 +add china_ip_route 103.233.104.0/22 +add china_ip_route 103.233.128.0/22 +add china_ip_route 103.233.136.0/22 +add china_ip_route 103.233.228.0/22 +add china_ip_route 103.234.0.0/22 +add china_ip_route 103.234.20.0/22 +add china_ip_route 103.234.56.0/22 +add china_ip_route 103.234.124.0/22 +add china_ip_route 103.234.128.0/22 +add china_ip_route 103.234.172.0/22 +add china_ip_route 103.234.180.0/22 +add china_ip_route 103.235.56.0/21 +add china_ip_route 103.235.80.0/22 +add china_ip_route 103.235.85.0/24 +add china_ip_route 103.235.87.0/24 +add china_ip_route 103.235.128.0/20 +add china_ip_route 103.235.144.0/21 +add china_ip_route 103.235.184.0/22 +add china_ip_route 103.235.192.0/22 +add china_ip_route 103.235.200.0/22 +add china_ip_route 103.235.220.0/22 +add china_ip_route 103.235.224.0/19 +add china_ip_route 103.236.0.0/18 +add china_ip_route 103.236.64.0/19 +add china_ip_route 103.236.96.0/22 +add china_ip_route 103.236.120.0/22 +add china_ip_route 103.236.184.0/22 +add china_ip_route 103.236.240.0/20 +add china_ip_route 103.237.0.0/20 +add china_ip_route 103.237.24.0/21 +add china_ip_route 103.237.68.0/22 +add china_ip_route 103.237.88.0/22 +add china_ip_route 103.237.152.0/22 +add china_ip_route 103.237.176.0/20 +add china_ip_route 103.237.192.0/18 +add china_ip_route 103.238.0.0/21 +add china_ip_route 103.238.18.0/23 +add china_ip_route 103.238.20.0/22 +add china_ip_route 103.238.24.0/21 +add china_ip_route 103.238.32.0/20 +add china_ip_route 103.238.48.0/21 +add china_ip_route 103.238.56.0/22 +add china_ip_route 103.238.88.0/21 +add china_ip_route 103.238.96.0/22 +add china_ip_route 103.238.132.0/22 +add china_ip_route 103.238.140.0/22 +add china_ip_route 103.238.144.0/22 +add china_ip_route 103.238.160.0/22 +add china_ip_route 103.238.165.0/24 +add china_ip_route 103.238.166.0/23 +add china_ip_route 103.238.168.0/21 +add china_ip_route 103.238.176.0/20 +add china_ip_route 103.238.196.0/22 +add china_ip_route 103.238.204.0/22 +add china_ip_route 103.238.252.0/22 +add china_ip_route 103.239.0.0/22 +add china_ip_route 103.239.44.0/22 +add china_ip_route 103.239.68.0/22 +add china_ip_route 103.239.152.0/21 +add china_ip_route 103.239.180.0/22 +add china_ip_route 103.239.184.0/22 +add china_ip_route 103.239.192.0/21 +add china_ip_route 103.239.204.0/22 +add china_ip_route 103.239.208.0/22 +add china_ip_route 103.239.224.0/22 +add china_ip_route 103.239.244.0/22 +add china_ip_route 103.240.16.0/22 +add china_ip_route 103.240.36.0/22 +add china_ip_route 103.240.72.0/22 +add china_ip_route 103.240.84.0/22 +add china_ip_route 103.240.124.0/22 +add china_ip_route 103.240.172.0/22 +add china_ip_route 103.240.188.0/22 +add china_ip_route 103.240.244.0/22 +add china_ip_route 103.241.12.0/22 +add china_ip_route 103.241.92.0/22 +add china_ip_route 103.241.96.0/22 +add china_ip_route 103.241.160.0/22 +add china_ip_route 103.241.184.0/21 +add china_ip_route 103.241.220.0/22 +add china_ip_route 103.242.64.0/23 +add china_ip_route 103.242.128.0/23 +add china_ip_route 103.242.160.0/22 +add china_ip_route 103.242.168.0/21 +add china_ip_route 103.242.176.0/22 +add china_ip_route 103.242.200.0/22 +add china_ip_route 103.242.212.0/22 +add china_ip_route 103.242.220.0/22 +add china_ip_route 103.242.240.0/22 +add china_ip_route 103.243.136.0/22 +add china_ip_route 103.243.252.0/22 +add china_ip_route 103.244.16.0/22 +add china_ip_route 103.244.58.0/23 +add china_ip_route 103.244.60.0/22 +add china_ip_route 103.244.64.0/20 +add china_ip_route 103.244.80.0/21 +add china_ip_route 103.244.116.0/22 +add china_ip_route 103.244.164.0/22 +add china_ip_route 103.244.232.0/22 +add china_ip_route 103.244.252.0/22 +add china_ip_route 103.245.23.0/24 +add china_ip_route 103.245.52.0/22 +add china_ip_route 103.245.60.0/22 +add china_ip_route 103.245.80.0/22 +add china_ip_route 103.245.124.0/22 +add china_ip_route 103.245.128.0/22 +add china_ip_route 103.246.8.0/21 +add china_ip_route 103.246.120.0/21 +add china_ip_route 103.246.132.0/22 +add china_ip_route 103.246.152.0/22 +add china_ip_route 103.247.168.0/21 +add china_ip_route 103.247.176.0/22 +add china_ip_route 103.247.200.0/22 +add china_ip_route 103.247.212.0/22 +add china_ip_route 103.248.64.0/23 +add china_ip_route 103.248.100.0/22 +add china_ip_route 103.248.124.0/22 +add china_ip_route 103.248.152.0/22 +add china_ip_route 103.248.168.0/22 +add china_ip_route 103.248.192.0/22 +add china_ip_route 103.248.212.0/22 +add china_ip_route 103.248.224.0/21 +add china_ip_route 103.249.8.0/21 +add china_ip_route 103.249.52.0/22 +add china_ip_route 103.249.128.0/22 +add china_ip_route 103.249.136.0/22 +add china_ip_route 103.249.144.0/22 +add china_ip_route 103.249.164.0/22 +add china_ip_route 103.249.168.0/21 +add china_ip_route 103.249.176.0/22 +add china_ip_route 103.249.188.0/22 +add china_ip_route 103.249.192.0/22 +add china_ip_route 103.249.244.0/22 +add china_ip_route 103.249.252.0/22 +add china_ip_route 103.250.32.0/22 +add china_ip_route 103.250.104.0/22 +add china_ip_route 103.250.124.0/22 +add china_ip_route 103.250.180.0/22 +add china_ip_route 103.250.192.0/22 +add china_ip_route 103.250.216.0/22 +add china_ip_route 103.250.224.0/22 +add china_ip_route 103.250.236.0/22 +add china_ip_route 103.250.248.0/21 +add china_ip_route 103.251.32.0/22 +add china_ip_route 103.251.84.0/22 +add china_ip_route 103.251.96.0/22 +add china_ip_route 103.251.124.0/22 +add china_ip_route 103.251.160.0/22 +add china_ip_route 103.251.192.0/22 +add china_ip_route 103.251.204.0/22 +add china_ip_route 103.251.240.0/22 +add china_ip_route 103.252.28.0/22 +add china_ip_route 103.252.36.0/22 +add china_ip_route 103.252.64.0/22 +add china_ip_route 103.252.96.0/22 +add china_ip_route 103.252.104.0/22 +add china_ip_route 103.252.172.0/22 +add china_ip_route 103.252.204.0/22 +add china_ip_route 103.252.208.0/22 +add china_ip_route 103.252.232.0/22 +add china_ip_route 103.252.248.0/22 +add china_ip_route 103.253.4.0/22 +add china_ip_route 103.253.60.0/22 +add china_ip_route 103.253.204.0/22 +add china_ip_route 103.253.220.0/22 +add china_ip_route 103.253.224.0/22 +add china_ip_route 103.253.232.0/22 +add china_ip_route 103.254.8.0/22 +add china_ip_route 103.254.20.0/22 +add china_ip_route 103.254.64.0/21 +add china_ip_route 103.254.76.0/22 +add china_ip_route 103.254.112.0/22 +add china_ip_route 103.254.176.0/22 +add china_ip_route 103.254.188.0/22 +add china_ip_route 103.255.68.0/22 +add china_ip_route 103.255.88.0/21 +add china_ip_route 103.255.136.0/21 +add china_ip_route 103.255.184.0/22 +add china_ip_route 103.255.200.0/22 +add china_ip_route 103.255.208.0/22 +add china_ip_route 103.255.228.0/22 +add china_ip_route 106.0.0.0/24 +add china_ip_route 106.0.2.0/23 +add china_ip_route 106.0.4.0/22 +add china_ip_route 106.0.8.0/21 +add china_ip_route 106.0.16.0/20 +add china_ip_route 106.0.44.0/22 +add china_ip_route 106.0.64.0/18 +add china_ip_route 106.2.0.0/23 +add china_ip_route 106.2.3.0/24 +add china_ip_route 106.2.4.0/22 +add china_ip_route 106.2.8.0/21 +add china_ip_route 106.2.16.0/20 +add china_ip_route 106.2.32.0/19 +add china_ip_route 106.2.64.0/18 +add china_ip_route 106.2.128.0/20 +add china_ip_route 106.2.144.0/21 +add china_ip_route 106.2.152.0/22 +add china_ip_route 106.2.156.0/23 +add china_ip_route 106.2.160.0/19 +add china_ip_route 106.2.192.0/18 +add china_ip_route 106.3.16.0/20 +add china_ip_route 106.3.32.0/19 +add china_ip_route 106.3.64.0/20 +add china_ip_route 106.3.80.0/22 +add china_ip_route 106.3.88.0/21 +add china_ip_route 106.3.96.0/19 +add china_ip_route 106.3.128.0/19 +add china_ip_route 106.3.164.0/22 +add china_ip_route 106.3.168.0/21 +add china_ip_route 106.3.176.0/20 +add china_ip_route 106.3.192.0/18 +add china_ip_route 106.4.0.0/14 +add china_ip_route 106.8.0.0/15 +add china_ip_route 106.11.0.0/16 +add china_ip_route 106.12.0.0/14 +add china_ip_route 106.16.0.0/12 +add china_ip_route 106.32.0.0/12 +add china_ip_route 106.48.0.0/21 +add china_ip_route 106.48.8.0/22 +add china_ip_route 106.48.16.0/20 +add china_ip_route 106.48.32.0/20 +add china_ip_route 106.48.57.0/24 +add china_ip_route 106.48.60.0/24 +add china_ip_route 106.48.63.0/24 +add china_ip_route 106.48.64.0/18 +add china_ip_route 106.48.128.0/17 +add china_ip_route 106.49.1.0/24 +add china_ip_route 106.49.2.0/23 +add china_ip_route 106.49.4.0/22 +add china_ip_route 106.49.8.0/21 +add china_ip_route 106.49.16.0/20 +add china_ip_route 106.49.32.0/19 +add china_ip_route 106.49.64.0/19 +add china_ip_route 106.49.96.0/24 +add china_ip_route 106.49.98.0/23 +add china_ip_route 106.49.100.0/22 +add china_ip_route 106.49.104.0/21 +add china_ip_route 106.49.112.0/20 +add china_ip_route 106.49.128.0/17 +add china_ip_route 106.50.0.0/16 +add china_ip_route 106.52.0.0/14 +add china_ip_route 106.56.0.0/13 +add china_ip_route 106.74.0.0/16 +add china_ip_route 106.75.0.0/17 +add china_ip_route 106.75.128.0/18 +add china_ip_route 106.75.201.0/24 +add china_ip_route 106.75.204.0/22 +add china_ip_route 106.75.208.0/20 +add china_ip_route 106.75.224.0/19 +add china_ip_route 106.80.0.0/12 +add china_ip_route 106.108.0.0/14 +add china_ip_route 106.112.0.0/12 +add china_ip_route 106.224.0.0/12 +add china_ip_route 109.71.4.0/24 +add china_ip_route 109.244.0.0/16 +add china_ip_route 110.6.0.0/15 +add china_ip_route 110.16.0.0/14 +add china_ip_route 110.34.40.0/21 +add china_ip_route 110.40.0.0/15 +add china_ip_route 110.42.0.0/16 +add china_ip_route 110.43.0.0/18 +add china_ip_route 110.43.64.0/21 +add china_ip_route 110.43.72.0/22 +add china_ip_route 110.43.76.0/23 +add china_ip_route 110.43.80.0/20 +add china_ip_route 110.43.96.0/19 +add china_ip_route 110.43.128.0/17 +add china_ip_route 110.44.12.0/22 +add china_ip_route 110.44.144.0/20 +add china_ip_route 110.48.0.0/16 +add china_ip_route 110.51.0.0/16 +add china_ip_route 110.52.0.0/15 +add china_ip_route 110.56.0.0/13 +add china_ip_route 110.64.0.0/15 +add china_ip_route 110.72.0.0/15 +add china_ip_route 110.75.0.0/16 +add china_ip_route 110.76.0.0/20 +add china_ip_route 110.76.16.0/22 +add china_ip_route 110.76.20.0/24 +add china_ip_route 110.76.22.0/24 +add china_ip_route 110.76.24.0/21 +add china_ip_route 110.76.32.0/19 +add china_ip_route 110.76.132.0/22 +add china_ip_route 110.76.156.0/22 +add china_ip_route 110.76.184.0/22 +add china_ip_route 110.76.192.0/18 +add china_ip_route 110.77.0.0/17 +add china_ip_route 110.80.0.0/13 +add china_ip_route 110.88.0.0/14 +add china_ip_route 110.92.68.0/22 +add china_ip_route 110.93.32.0/19 +add china_ip_route 110.94.0.0/15 +add china_ip_route 110.96.0.0/11 +add china_ip_route 110.152.0.0/14 +add china_ip_route 110.156.0.0/15 +add china_ip_route 110.166.0.0/15 +add china_ip_route 110.172.192.0/18 +add china_ip_route 110.173.0.0/19 +add china_ip_route 110.173.32.0/20 +add china_ip_route 110.173.64.0/19 +add china_ip_route 110.173.192.0/19 +add china_ip_route 110.176.0.0/12 +add china_ip_route 110.192.0.0/11 +add china_ip_route 110.228.0.0/14 +add china_ip_route 110.232.32.0/19 +add china_ip_route 110.236.0.0/15 +add china_ip_route 110.240.0.0/12 +add china_ip_route 111.0.0.0/10 +add china_ip_route 111.66.0.0/16 +add china_ip_route 111.67.192.0/20 +add china_ip_route 111.68.64.0/19 +add china_ip_route 111.72.0.0/13 +add china_ip_route 111.85.0.0/16 +add china_ip_route 111.91.192.0/19 +add china_ip_route 111.92.248.0/21 +add china_ip_route 111.112.0.0/14 +add china_ip_route 111.116.0.0/15 +add china_ip_route 111.118.200.0/21 +add china_ip_route 111.119.64.0/18 +add china_ip_route 111.119.128.0/19 +add china_ip_route 111.120.0.0/14 +add china_ip_route 111.124.0.0/16 +add china_ip_route 111.126.0.0/15 +add china_ip_route 111.128.0.0/11 +add china_ip_route 111.160.0.0/13 +add china_ip_route 111.170.0.0/16 +add china_ip_route 111.172.0.0/14 +add china_ip_route 111.176.0.0/13 +add china_ip_route 111.186.0.0/15 +add china_ip_route 111.192.0.0/12 +add china_ip_route 111.208.0.0/13 +add china_ip_route 111.221.28.0/24 +add china_ip_route 111.221.128.0/17 +add china_ip_route 111.222.0.0/16 +add china_ip_route 111.223.4.0/22 +add china_ip_route 111.223.8.0/21 +add china_ip_route 111.223.16.0/22 +add china_ip_route 111.223.240.0/22 +add china_ip_route 111.223.249.0/24 +add china_ip_route 111.223.250.0/23 +add china_ip_route 111.224.0.0/13 +add china_ip_route 111.235.96.0/19 +add china_ip_route 111.235.156.0/22 +add china_ip_route 111.235.160.0/21 +add china_ip_route 111.235.170.0/23 +add china_ip_route 111.235.172.0/22 +add china_ip_route 111.235.176.0/20 +add china_ip_route 112.0.0.0/10 +add china_ip_route 112.64.0.0/14 +add china_ip_route 112.73.64.0/18 +add china_ip_route 112.74.0.0/16 +add china_ip_route 112.80.0.0/12 +add china_ip_route 112.96.0.0/13 +add china_ip_route 112.109.128.0/17 +add china_ip_route 112.111.0.0/16 +add china_ip_route 112.112.0.0/14 +add china_ip_route 112.116.0.0/15 +add china_ip_route 112.122.0.0/15 +add china_ip_route 112.124.0.0/14 +add china_ip_route 112.128.0.0/14 +add china_ip_route 112.132.0.0/16 +add china_ip_route 112.137.48.0/21 +add china_ip_route 112.192.0.0/14 +add china_ip_route 112.224.0.0/11 +add china_ip_route 113.0.0.0/13 +add china_ip_route 113.8.0.0/15 +add china_ip_route 113.11.192.0/19 +add china_ip_route 113.12.0.0/14 +add china_ip_route 113.16.0.0/15 +add china_ip_route 113.18.0.0/16 +add china_ip_route 113.21.232.0/21 +add china_ip_route 113.24.0.0/14 +add china_ip_route 113.31.0.0/16 +add china_ip_route 113.44.0.0/14 +add china_ip_route 113.48.0.0/14 +add china_ip_route 113.52.160.0/19 +add china_ip_route 113.52.228.0/22 +add china_ip_route 113.54.0.0/15 +add china_ip_route 113.56.0.0/15 +add china_ip_route 113.58.0.0/16 +add china_ip_route 113.59.0.0/17 +add china_ip_route 113.59.224.0/22 +add china_ip_route 113.62.0.0/15 +add china_ip_route 113.64.0.0/10 +add china_ip_route 113.128.0.0/15 +add china_ip_route 113.130.96.0/20 +add china_ip_route 113.130.112.0/21 +add china_ip_route 113.132.0.0/14 +add china_ip_route 113.136.0.0/13 +add china_ip_route 113.194.0.0/15 +add china_ip_route 113.197.100.0/23 +add china_ip_route 113.197.102.0/24 +add china_ip_route 113.197.104.0/22 +add china_ip_route 113.200.0.0/15 +add china_ip_route 113.202.0.0/16 +add china_ip_route 113.204.0.0/14 +add china_ip_route 113.208.96.0/19 +add china_ip_route 113.208.128.0/17 +add china_ip_route 113.209.0.0/16 +add china_ip_route 113.212.0.0/18 +add china_ip_route 113.212.100.0/22 +add china_ip_route 113.212.184.0/21 +add china_ip_route 113.213.0.0/17 +add china_ip_route 113.214.0.0/15 +add china_ip_route 113.218.0.0/15 +add china_ip_route 113.220.0.0/14 +add china_ip_route 113.224.0.0/12 +add china_ip_route 113.240.0.0/13 +add china_ip_route 113.248.0.0/14 +add china_ip_route 114.28.0.0/17 +add china_ip_route 114.28.128.0/18 +add china_ip_route 114.28.192.0/19 +add china_ip_route 114.28.232.0/22 +add china_ip_route 114.28.240.0/20 +add china_ip_route 114.31.64.0/21 +add china_ip_route 114.54.0.0/15 +add china_ip_route 114.60.0.0/14 +add china_ip_route 114.64.0.0/14 +add china_ip_route 114.68.0.0/16 +add china_ip_route 114.79.64.0/18 +add china_ip_route 114.80.0.0/12 +add china_ip_route 114.96.0.0/13 +add china_ip_route 114.104.0.0/14 +add china_ip_route 114.110.0.0/20 +add china_ip_route 114.110.64.0/18 +add china_ip_route 114.111.0.0/19 +add china_ip_route 114.111.160.0/19 +add china_ip_route 114.112.4.0/22 +add china_ip_route 114.112.8.0/22 +add china_ip_route 114.112.24.0/21 +add china_ip_route 114.112.32.0/19 +add china_ip_route 114.112.64.0/19 +add china_ip_route 114.112.96.0/20 +add china_ip_route 114.112.116.0/22 +add china_ip_route 114.112.120.0/21 +add china_ip_route 114.112.136.0/21 +add china_ip_route 114.112.144.0/20 +add china_ip_route 114.112.160.0/19 +add china_ip_route 114.112.192.0/19 +add china_ip_route 114.113.0.0/17 +add china_ip_route 114.113.128.0/21 +add china_ip_route 114.113.140.0/22 +add china_ip_route 114.113.144.0/20 +add china_ip_route 114.113.160.0/19 +add china_ip_route 114.113.196.0/22 +add china_ip_route 114.113.200.0/21 +add china_ip_route 114.113.208.0/20 +add china_ip_route 114.113.224.0/20 +add china_ip_route 114.114.0.0/15 +add china_ip_route 114.116.0.0/15 +add china_ip_route 114.118.0.0/16 +add china_ip_route 114.119.0.0/17 +add china_ip_route 114.119.192.0/18 +add china_ip_route 114.132.0.0/16 +add china_ip_route 114.135.0.0/16 +add china_ip_route 114.138.0.0/15 +add china_ip_route 114.141.64.0/21 +add china_ip_route 114.141.80.0/21 +add china_ip_route 114.141.128.0/18 +add china_ip_route 114.196.0.0/15 +add china_ip_route 114.198.248.0/21 +add china_ip_route 114.208.0.0/12 +add china_ip_route 114.224.0.0/11 +add china_ip_route 115.24.0.0/14 +add china_ip_route 115.28.0.0/15 +add china_ip_route 115.31.64.0/20 +add china_ip_route 115.32.0.0/14 +add china_ip_route 115.42.56.0/22 +add china_ip_route 115.44.0.0/14 +add china_ip_route 115.48.0.0/12 +add china_ip_route 115.69.64.0/20 +add china_ip_route 115.84.0.0/18 +add china_ip_route 115.84.192.0/19 +add china_ip_route 115.85.192.0/18 +add china_ip_route 115.100.0.0/14 +add china_ip_route 115.104.0.0/14 +add china_ip_route 115.120.0.0/14 +add china_ip_route 115.124.16.0/20 +add china_ip_route 115.148.0.0/14 +add china_ip_route 115.152.0.0/13 +add china_ip_route 115.166.64.0/19 +add china_ip_route 115.168.0.0/16 +add china_ip_route 115.169.0.0/23 +add china_ip_route 115.169.3.0/24 +add china_ip_route 115.169.6.0/24 +add china_ip_route 115.169.9.0/24 +add china_ip_route 115.169.14.0/23 +add china_ip_route 115.169.16.0/20 +add china_ip_route 115.169.39.0/24 +add china_ip_route 115.169.42.0/23 +add china_ip_route 115.169.44.0/22 +add china_ip_route 115.169.48.0/20 +add china_ip_route 115.169.64.0/18 +add china_ip_route 115.169.128.0/17 +add china_ip_route 115.170.0.0/15 +add china_ip_route 115.172.0.0/14 +add china_ip_route 115.180.0.0/14 +add china_ip_route 115.187.0.0/20 +add china_ip_route 115.190.0.0/15 +add china_ip_route 115.192.0.0/11 +add china_ip_route 115.224.0.0/12 +add china_ip_route 116.0.8.0/21 +add china_ip_route 116.0.24.0/21 +add china_ip_route 116.1.0.0/16 +add china_ip_route 116.2.0.0/15 +add china_ip_route 116.4.0.0/14 +add china_ip_route 116.8.0.0/14 +add china_ip_route 116.13.0.0/16 +add china_ip_route 116.16.0.0/12 +add china_ip_route 116.50.0.0/20 +add china_ip_route 116.52.0.0/14 +add china_ip_route 116.56.0.0/15 +add china_ip_route 116.58.128.0/20 +add china_ip_route 116.58.208.0/20 +add china_ip_route 116.60.0.0/14 +add china_ip_route 116.66.0.0/18 +add china_ip_route 116.66.64.0/19 +add china_ip_route 116.66.96.0/20 +add china_ip_route 116.66.120.0/22 +add china_ip_route 116.68.136.0/21 +add china_ip_route 116.68.176.0/21 +add china_ip_route 116.69.0.0/16 +add china_ip_route 116.70.0.0/17 +add china_ip_route 116.76.0.0/14 +add china_ip_route 116.85.0.0/17 +add china_ip_route 116.85.128.0/18 +add china_ip_route 116.85.192.0/19 +add china_ip_route 116.85.224.0/20 +add china_ip_route 116.85.240.0/21 +add china_ip_route 116.85.248.0/23 +add china_ip_route 116.85.250.0/24 +add china_ip_route 116.85.252.0/22 +add china_ip_route 116.89.144.0/20 +add china_ip_route 116.90.80.0/20 +add china_ip_route 116.90.184.0/21 +add china_ip_route 116.95.0.0/16 +add china_ip_route 116.112.0.0/14 +add china_ip_route 116.116.0.0/15 +add china_ip_route 116.128.0.0/10 +add china_ip_route 116.192.0.0/16 +add china_ip_route 116.193.16.0/20 +add china_ip_route 116.193.32.0/19 +add china_ip_route 116.193.176.0/21 +add china_ip_route 116.194.0.0/15 +add china_ip_route 116.196.0.0/21 +add china_ip_route 116.196.8.0/22 +add china_ip_route 116.196.12.0/23 +add china_ip_route 116.196.16.0/20 +add china_ip_route 116.196.32.0/19 +add china_ip_route 116.196.64.0/18 +add china_ip_route 116.196.128.0/18 +add china_ip_route 116.196.192.0/21 +add china_ip_route 116.196.200.0/23 +add china_ip_route 116.196.203.0/24 +add china_ip_route 116.196.204.0/22 +add china_ip_route 116.196.208.0/20 +add china_ip_route 116.196.224.0/19 +add china_ip_route 116.197.160.0/21 +add china_ip_route 116.197.180.0/23 +add china_ip_route 116.198.0.0/16 +add china_ip_route 116.199.0.0/17 +add china_ip_route 116.199.128.0/19 +add china_ip_route 116.204.0.0/17 +add china_ip_route 116.204.232.0/22 +add china_ip_route 116.205.0.0/16 +add china_ip_route 116.207.0.0/16 +add china_ip_route 116.208.0.0/14 +add china_ip_route 116.212.160.0/20 +add china_ip_route 116.213.64.0/18 +add china_ip_route 116.213.128.0/17 +add china_ip_route 116.214.32.0/19 +add china_ip_route 116.214.64.0/20 +add china_ip_route 116.214.128.0/17 +add china_ip_route 116.215.0.0/16 +add china_ip_route 116.216.0.0/14 +add china_ip_route 116.224.0.0/12 +add china_ip_route 116.242.0.0/15 +add china_ip_route 116.244.0.0/14 +add china_ip_route 116.248.0.0/15 +add china_ip_route 116.252.0.0/15 +add china_ip_route 116.254.104.0/21 +add china_ip_route 116.254.129.0/24 +add china_ip_route 116.254.130.0/23 +add china_ip_route 116.254.132.0/22 +add china_ip_route 116.254.136.0/21 +add china_ip_route 116.254.144.0/20 +add china_ip_route 116.254.160.0/19 +add china_ip_route 116.254.192.0/18 +add china_ip_route 116.255.128.0/17 +add china_ip_route 117.8.0.0/13 +add china_ip_route 117.21.0.0/16 +add china_ip_route 117.22.0.0/15 +add china_ip_route 117.24.0.0/13 +add china_ip_route 117.32.0.0/13 +add china_ip_route 117.40.0.0/14 +add china_ip_route 117.44.0.0/15 +add china_ip_route 117.48.0.0/15 +add china_ip_route 117.50.0.0/16 +add china_ip_route 117.51.128.0/23 +add china_ip_route 117.51.131.0/24 +add china_ip_route 117.51.132.0/22 +add china_ip_route 117.51.136.0/21 +add china_ip_route 117.51.144.0/20 +add china_ip_route 117.51.160.0/19 +add china_ip_route 117.51.192.0/18 +add china_ip_route 117.53.48.0/20 +add china_ip_route 117.53.176.0/20 +add china_ip_route 117.57.0.0/16 +add china_ip_route 117.58.0.0/18 +add china_ip_route 117.59.0.0/16 +add china_ip_route 117.60.0.0/14 +add china_ip_route 117.64.0.0/13 +add china_ip_route 117.72.0.0/15 +add china_ip_route 117.74.64.0/19 +add china_ip_route 117.74.128.0/17 +add china_ip_route 117.75.0.0/16 +add china_ip_route 117.76.0.0/14 +add china_ip_route 117.80.0.0/12 +add china_ip_route 117.100.0.0/15 +add china_ip_route 117.103.16.0/20 +add china_ip_route 117.103.40.0/21 +add china_ip_route 117.103.72.0/21 +add china_ip_route 117.103.128.0/20 +add china_ip_route 117.104.168.0/21 +add china_ip_route 117.106.0.0/15 +add china_ip_route 117.112.0.0/13 +add china_ip_route 117.120.64.0/18 +add china_ip_route 117.120.128.0/17 +add china_ip_route 117.121.0.0/19 +add china_ip_route 117.121.32.0/21 +add china_ip_route 117.121.40.0/22 +add china_ip_route 117.121.44.0/23 +add china_ip_route 117.121.46.0/24 +add china_ip_route 117.121.48.0/20 +add china_ip_route 117.121.64.0/18 +add china_ip_route 117.121.128.0/20 +add china_ip_route 117.121.148.0/22 +add china_ip_route 117.121.152.0/21 +add china_ip_route 117.121.160.0/19 +add china_ip_route 117.121.192.0/21 +add china_ip_route 117.122.128.0/17 +add china_ip_route 117.124.0.0/14 +add china_ip_route 117.128.0.0/10 +add china_ip_route 118.24.0.0/15 +add china_ip_route 118.26.0.0/19 +add china_ip_route 118.26.40.0/21 +add china_ip_route 118.26.48.0/20 +add china_ip_route 118.26.64.0/19 +add china_ip_route 118.26.112.0/21 +add china_ip_route 118.26.121.0/24 +add china_ip_route 118.26.122.0/23 +add china_ip_route 118.26.124.0/23 +add china_ip_route 118.26.128.0/17 +add china_ip_route 118.28.0.0/15 +add china_ip_route 118.30.0.0/20 +add china_ip_route 118.30.16.0/21 +add china_ip_route 118.30.24.0/22 +add china_ip_route 118.30.32.0/19 +add china_ip_route 118.30.64.0/18 +add china_ip_route 118.30.128.0/17 +add china_ip_route 118.31.0.0/16 +add china_ip_route 118.64.0.0/15 +add china_ip_route 118.66.0.0/16 +add china_ip_route 118.67.112.0/20 +add china_ip_route 118.72.0.0/13 +add china_ip_route 118.80.0.0/15 +add china_ip_route 118.84.0.0/15 +add china_ip_route 118.88.32.0/19 +add china_ip_route 118.88.64.0/18 +add china_ip_route 118.88.128.0/17 +add china_ip_route 118.89.0.0/16 +add china_ip_route 118.102.16.0/20 +add china_ip_route 118.102.32.0/21 +add china_ip_route 118.103.164.0/22 +add china_ip_route 118.103.168.0/21 +add china_ip_route 118.103.176.0/22 +add china_ip_route 118.103.245.0/24 +add china_ip_route 118.103.246.0/23 +add china_ip_route 118.112.0.0/13 +add china_ip_route 118.120.0.0/14 +add china_ip_route 118.124.0.0/15 +add china_ip_route 118.126.1.0/24 +add china_ip_route 118.126.2.0/23 +add china_ip_route 118.126.4.0/22 +add china_ip_route 118.126.8.0/21 +add china_ip_route 118.126.16.0/23 +add china_ip_route 118.126.18.0/24 +add china_ip_route 118.126.32.0/19 +add china_ip_route 118.126.64.0/18 +add china_ip_route 118.126.128.0/17 +add china_ip_route 118.127.128.0/19 +add china_ip_route 118.132.0.0/14 +add china_ip_route 118.144.0.0/14 +add china_ip_route 118.178.0.0/16 +add china_ip_route 118.180.0.0/14 +add china_ip_route 118.184.5.0/24 +add china_ip_route 118.184.109.0/24 +add china_ip_route 118.184.110.0/23 +add china_ip_route 118.184.116.0/22 +add china_ip_route 118.184.120.0/23 +add china_ip_route 118.184.122.0/24 +add china_ip_route 118.184.128.0/18 +add china_ip_route 118.184.192.0/19 +add china_ip_route 118.184.240.0/20 +add china_ip_route 118.186.0.0/15 +add china_ip_route 118.188.0.0/16 +add china_ip_route 118.190.0.0/16 +add china_ip_route 118.191.0.0/20 +add china_ip_route 118.191.32.0/19 +add china_ip_route 118.191.64.0/18 +add china_ip_route 118.191.144.0/21 +add china_ip_route 118.191.153.0/24 +add china_ip_route 118.191.154.0/23 +add china_ip_route 118.191.156.0/22 +add china_ip_route 118.191.160.0/19 +add china_ip_route 118.191.192.0/20 +add china_ip_route 118.191.209.0/24 +add china_ip_route 118.191.210.0/23 +add china_ip_route 118.191.212.0/22 +add china_ip_route 118.191.248.0/21 +add china_ip_route 118.192.0.0/16 +add china_ip_route 118.193.0.0/22 +add china_ip_route 118.193.96.0/19 +add china_ip_route 118.194.0.0/17 +add china_ip_route 118.194.128.0/18 +add china_ip_route 118.194.192.0/19 +add china_ip_route 118.194.232.0/21 +add china_ip_route 118.194.240.0/20 +add china_ip_route 118.195.0.0/16 +add china_ip_route 118.196.0.0/14 +add china_ip_route 118.202.0.0/15 +add china_ip_route 118.204.0.0/14 +add china_ip_route 118.212.0.0/15 +add china_ip_route 118.215.192.0/18 +add china_ip_route 118.224.0.0/14 +add china_ip_route 118.228.0.0/17 +add china_ip_route 118.228.128.0/20 +add china_ip_route 118.228.144.0/21 +add china_ip_route 118.228.156.0/22 +add china_ip_route 118.228.160.0/19 +add china_ip_route 118.228.192.0/18 +add china_ip_route 118.229.0.0/16 +add china_ip_route 118.230.0.0/16 +add china_ip_route 118.239.0.0/16 +add china_ip_route 118.242.0.0/16 +add china_ip_route 118.244.0.0/14 +add china_ip_route 118.248.0.0/13 +add china_ip_route 119.0.0.0/15 +add china_ip_route 119.2.0.0/19 +add china_ip_route 119.2.128.0/17 +add china_ip_route 119.3.0.0/16 +add china_ip_route 119.4.0.0/14 +add china_ip_route 119.10.0.0/17 +add china_ip_route 119.15.136.0/21 +add china_ip_route 119.16.0.0/16 +add china_ip_route 119.18.192.0/20 +add china_ip_route 119.18.208.0/21 +add china_ip_route 119.18.224.0/19 +add china_ip_route 119.19.0.0/16 +add china_ip_route 119.20.0.0/14 +add china_ip_route 119.27.64.0/18 +add china_ip_route 119.27.128.0/17 +add china_ip_route 119.28.28.0/24 +add china_ip_route 119.29.0.0/16 +add china_ip_route 119.30.48.0/20 +add china_ip_route 119.31.192.0/19 +add china_ip_route 119.32.0.0/14 +add china_ip_route 119.36.0.0/15 +add china_ip_route 119.38.0.0/17 +add china_ip_route 119.38.128.0/18 +add china_ip_route 119.38.192.0/20 +add china_ip_route 119.38.208.0/22 +add china_ip_route 119.38.212.0/23 +add china_ip_route 119.38.214.0/27 +add china_ip_route 119.38.214.56/29 +add china_ip_route 119.38.214.64/26 +add china_ip_route 119.38.214.128/25 +add china_ip_route 119.38.215.0/24 +add china_ip_route 119.38.216.0/21 +add china_ip_route 119.39.0.0/16 +add china_ip_route 119.40.0.0/18 +add china_ip_route 119.40.64.0/20 +add china_ip_route 119.40.128.0/17 +add china_ip_route 119.41.0.0/16 +add china_ip_route 119.42.0.0/19 +add china_ip_route 119.42.52.0/22 +add china_ip_route 119.42.128.0/20 +add china_ip_route 119.42.224.0/19 +add china_ip_route 119.44.0.0/15 +add china_ip_route 119.48.0.0/13 +add china_ip_route 119.57.0.0/16 +add china_ip_route 119.58.0.0/16 +add china_ip_route 119.59.128.0/17 +add china_ip_route 119.60.0.0/15 +add china_ip_route 119.62.0.0/16 +add china_ip_route 119.63.32.0/19 +add china_ip_route 119.75.208.0/20 +add china_ip_route 119.78.0.0/15 +add china_ip_route 119.80.0.0/16 +add china_ip_route 119.82.208.0/20 +add china_ip_route 119.84.0.0/14 +add china_ip_route 119.88.0.0/16 +add china_ip_route 119.89.0.0/17 +add china_ip_route 119.89.128.0/21 +add china_ip_route 119.89.136.0/23 +add china_ip_route 119.89.139.0/24 +add china_ip_route 119.89.140.0/22 +add china_ip_route 119.89.144.0/20 +add china_ip_route 119.89.160.0/20 +add china_ip_route 119.89.176.0/22 +add china_ip_route 119.89.180.0/23 +add china_ip_route 119.89.183.0/24 +add china_ip_route 119.89.184.0/21 +add china_ip_route 119.89.192.0/23 +add china_ip_route 119.89.194.0/24 +add china_ip_route 119.89.196.0/22 +add china_ip_route 119.89.200.0/21 +add china_ip_route 119.89.208.0/21 +add china_ip_route 119.89.217.0/24 +add china_ip_route 119.89.218.0/23 +add china_ip_route 119.89.220.0/22 +add china_ip_route 119.89.224.0/19 +add china_ip_route 119.90.0.0/15 +add china_ip_route 119.96.0.0/13 +add china_ip_route 119.108.0.0/15 +add china_ip_route 119.112.0.0/12 +add china_ip_route 119.128.0.0/12 +add china_ip_route 119.144.0.0/14 +add china_ip_route 119.148.160.0/19 +add china_ip_route 119.151.192.0/18 +add china_ip_route 119.160.200.0/21 +add china_ip_route 119.161.120.0/21 +add china_ip_route 119.161.128.0/21 +add china_ip_route 119.161.160.0/19 +add china_ip_route 119.161.192.0/18 +add china_ip_route 119.162.0.0/15 +add china_ip_route 119.164.0.0/14 +add china_ip_route 119.176.0.0/12 +add china_ip_route 119.232.0.0/15 +add china_ip_route 119.235.128.0/19 +add china_ip_route 119.235.160.0/20 +add china_ip_route 119.235.184.0/22 +add china_ip_route 119.248.0.0/14 +add china_ip_route 119.252.96.0/21 +add china_ip_route 119.252.240.0/21 +add china_ip_route 119.252.249.0/24 +add china_ip_route 119.252.252.0/23 +add china_ip_route 119.253.0.0/16 +add china_ip_route 119.254.0.0/15 +add china_ip_route 120.0.0.0/12 +add china_ip_route 120.24.0.0/14 +add china_ip_route 120.30.0.0/15 +add china_ip_route 120.32.0.0/13 +add china_ip_route 120.40.0.0/14 +add china_ip_route 120.44.0.0/15 +add china_ip_route 120.46.0.0/16 +add china_ip_route 120.48.0.0/15 +add china_ip_route 120.52.0.0/14 +add china_ip_route 120.64.0.0/13 +add china_ip_route 120.72.32.0/19 +add china_ip_route 120.72.128.0/17 +add china_ip_route 120.76.0.0/14 +add china_ip_route 120.80.0.0/13 +add china_ip_route 120.88.8.0/21 +add china_ip_route 120.90.0.0/15 +add china_ip_route 120.92.0.0/17 +add china_ip_route 120.92.128.0/18 +add china_ip_route 120.92.192.0/22 +add china_ip_route 120.92.198.0/23 +add china_ip_route 120.92.200.0/21 +add china_ip_route 120.92.208.0/20 +add china_ip_route 120.92.224.0/19 +add china_ip_route 120.94.0.0/15 +add china_ip_route 120.128.0.0/13 +add china_ip_route 120.136.16.0/21 +add china_ip_route 120.136.128.0/18 +add china_ip_route 120.137.0.0/17 +add china_ip_route 120.143.128.0/19 +add china_ip_route 120.192.0.0/10 +add china_ip_route 121.0.8.0/21 +add china_ip_route 121.0.16.0/20 +add china_ip_route 121.4.0.0/15 +add china_ip_route 121.8.0.0/13 +add china_ip_route 121.16.0.0/12 +add china_ip_route 121.32.0.0/13 +add china_ip_route 121.40.0.0/14 +add china_ip_route 121.46.0.0/18 +add china_ip_route 121.46.76.0/22 +add china_ip_route 121.46.128.0/17 +add china_ip_route 121.47.0.0/16 +add china_ip_route 121.48.0.0/15 +add china_ip_route 121.50.8.0/21 +add china_ip_route 121.51.0.0/16 +add china_ip_route 121.52.160.0/19 +add china_ip_route 121.52.208.0/20 +add china_ip_route 121.52.224.0/19 +add china_ip_route 121.54.176.0/21 +add china_ip_route 121.55.0.0/18 +add china_ip_route 121.56.0.0/15 +add china_ip_route 121.58.0.0/17 +add china_ip_route 121.58.136.0/21 +add china_ip_route 121.58.144.0/20 +add china_ip_route 121.58.160.0/21 +add china_ip_route 121.59.0.0/20 +add china_ip_route 121.59.16.0/21 +add china_ip_route 121.59.24.0/22 +add china_ip_route 121.59.28.0/24 +add china_ip_route 121.59.31.0/24 +add china_ip_route 121.59.33.0/24 +add china_ip_route 121.59.35.0/24 +add china_ip_route 121.59.36.0/22 +add china_ip_route 121.59.40.0/21 +add china_ip_route 121.59.48.0/20 +add china_ip_route 121.59.64.0/18 +add china_ip_route 121.59.128.0/17 +add china_ip_route 121.60.0.0/14 +add china_ip_route 121.68.0.0/14 +add china_ip_route 121.76.0.0/15 +add china_ip_route 121.79.128.0/18 +add china_ip_route 121.89.0.0/16 +add china_ip_route 121.100.128.0/17 +add china_ip_route 121.101.0.0/18 +add china_ip_route 121.101.208.0/20 +add china_ip_route 121.192.0.0/13 +add china_ip_route 121.200.192.0/23 +add china_ip_route 121.200.194.0/24 +add china_ip_route 121.200.196.0/22 +add china_ip_route 121.201.0.0/16 +add china_ip_route 121.204.0.0/14 +add china_ip_route 121.224.0.0/12 +add china_ip_route 121.248.0.0/14 +add china_ip_route 121.255.0.0/16 +add china_ip_route 122.0.64.0/18 +add china_ip_route 122.0.128.0/17 +add china_ip_route 122.4.0.0/14 +add china_ip_route 122.9.0.0/16 +add china_ip_route 122.10.132.0/23 +add china_ip_route 122.10.136.0/23 +add china_ip_route 122.10.216.0/22 +add china_ip_route 122.10.228.0/22 +add china_ip_route 122.10.232.0/21 +add china_ip_route 122.10.240.0/22 +add china_ip_route 122.11.0.0/17 +add china_ip_route 122.12.0.0/15 +add china_ip_route 122.14.0.0/17 +add china_ip_route 122.14.192.0/18 +add china_ip_route 122.48.0.0/16 +add china_ip_route 122.49.0.0/18 +add china_ip_route 122.51.0.0/16 +add china_ip_route 122.64.0.0/14 +add china_ip_route 122.68.0.0/15 +add china_ip_route 122.70.0.0/18 +add china_ip_route 122.70.64.0/19 +add china_ip_route 122.70.96.0/20 +add china_ip_route 122.70.112.0/21 +add china_ip_route 122.70.120.0/22 +add china_ip_route 122.70.124.0/23 +add china_ip_route 122.70.126.0/24 +add china_ip_route 122.70.128.0/17 +add china_ip_route 122.71.0.0/16 +add china_ip_route 122.72.0.0/13 +add china_ip_route 122.80.0.0/12 +add china_ip_route 122.96.0.0/15 +add china_ip_route 122.98.144.0/20 +add china_ip_route 122.98.160.0/21 +add china_ip_route 122.98.172.0/22 +add china_ip_route 122.98.176.0/20 +add china_ip_route 122.98.192.0/21 +add china_ip_route 122.98.232.0/21 +add china_ip_route 122.98.240.0/20 +add china_ip_route 122.102.0.0/20 +add china_ip_route 122.102.64.0/19 +add china_ip_route 122.112.0.0/18 +add china_ip_route 122.112.64.0/19 +add china_ip_route 122.112.96.0/22 +add china_ip_route 122.112.118.0/24 +add china_ip_route 122.112.122.0/24 +add china_ip_route 122.112.125.0/24 +add china_ip_route 122.112.128.0/17 +add china_ip_route 122.113.0.0/16 +add china_ip_route 122.114.0.0/16 +add china_ip_route 122.115.0.0/18 +add china_ip_route 122.115.80.0/20 +add china_ip_route 122.115.96.0/19 +add china_ip_route 122.115.128.0/17 +add china_ip_route 122.119.0.0/16 +add china_ip_route 122.128.100.0/22 +add china_ip_route 122.128.120.0/21 +add china_ip_route 122.136.0.0/13 +add china_ip_route 122.144.128.0/17 +add china_ip_route 122.152.192.0/18 +add china_ip_route 122.156.0.0/14 +add china_ip_route 122.188.0.0/14 +add china_ip_route 122.192.0.0/14 +add china_ip_route 122.198.0.0/16 +add china_ip_route 122.200.40.0/21 +add china_ip_route 122.200.64.0/18 +add china_ip_route 122.201.48.0/20 +add china_ip_route 122.204.0.0/14 +add china_ip_route 122.224.0.0/12 +add china_ip_route 122.240.0.0/13 +add china_ip_route 122.248.24.0/21 +add china_ip_route 122.248.48.0/20 +add china_ip_route 122.255.64.0/21 +add china_ip_route 123.0.128.0/21 +add china_ip_route 123.0.136.0/23 +add china_ip_route 123.0.139.0/24 +add china_ip_route 123.0.140.0/22 +add china_ip_route 123.0.144.0/20 +add china_ip_route 123.0.160.0/19 +add china_ip_route 123.4.0.0/14 +add china_ip_route 123.8.0.0/13 +add china_ip_route 123.49.130.0/23 +add china_ip_route 123.49.132.0/22 +add china_ip_route 123.49.136.0/22 +add china_ip_route 123.49.152.0/21 +add china_ip_route 123.49.160.0/19 +add china_ip_route 123.49.192.0/18 +add china_ip_route 123.50.160.0/19 +add china_ip_route 123.52.0.0/14 +add china_ip_route 123.56.0.0/15 +add china_ip_route 123.58.0.0/18 +add china_ip_route 123.58.64.0/20 +add china_ip_route 123.58.80.0/21 +add china_ip_route 123.58.88.0/22 +add china_ip_route 123.58.96.0/19 +add china_ip_route 123.58.128.0/18 +add china_ip_route 123.58.224.0/19 +add china_ip_route 123.59.0.0/16 +add china_ip_route 123.61.0.0/16 +add china_ip_route 123.62.0.0/16 +add china_ip_route 123.64.0.0/11 +add china_ip_route 123.96.0.0/15 +add china_ip_route 123.98.0.0/17 +add china_ip_route 123.99.128.0/17 +add china_ip_route 123.100.0.0/19 +add china_ip_route 123.100.232.0/24 +add china_ip_route 123.101.0.0/16 +add china_ip_route 123.103.0.0/20 +add china_ip_route 123.103.16.0/21 +add china_ip_route 123.103.24.0/22 +add china_ip_route 123.103.28.0/23 +add china_ip_route 123.103.30.0/24 +add china_ip_route 123.103.32.0/19 +add china_ip_route 123.103.64.0/18 +add china_ip_route 123.108.134.0/24 +add china_ip_route 123.108.138.0/23 +add china_ip_route 123.108.140.0/24 +add china_ip_route 123.108.142.0/24 +add china_ip_route 123.108.208.0/20 +add china_ip_route 123.112.0.0/12 +add china_ip_route 123.128.0.0/13 +add china_ip_route 123.137.0.0/16 +add china_ip_route 123.138.0.0/15 +add china_ip_route 123.144.0.0/12 +add china_ip_route 123.160.0.0/12 +add china_ip_route 123.176.60.0/22 +add china_ip_route 123.176.80.0/20 +add china_ip_route 123.177.0.0/16 +add china_ip_route 123.178.0.0/15 +add china_ip_route 123.180.0.0/14 +add china_ip_route 123.184.0.0/13 +add china_ip_route 123.196.0.0/15 +add china_ip_route 123.199.128.0/17 +add china_ip_route 123.206.0.0/15 +add china_ip_route 123.232.0.0/14 +add china_ip_route 123.242.0.0/17 +add china_ip_route 123.242.192.0/21 +add china_ip_route 123.244.0.0/14 +add china_ip_route 123.249.0.0/16 +add china_ip_route 123.253.240.0/22 +add china_ip_route 123.254.96.0/21 +add china_ip_route 124.6.64.0/18 +add china_ip_route 124.14.0.0/15 +add china_ip_route 124.16.0.0/15 +add china_ip_route 124.20.0.0/14 +add china_ip_route 124.28.192.0/18 +add china_ip_route 124.29.0.0/17 +add china_ip_route 124.31.0.0/16 +add china_ip_route 124.40.112.0/20 +add china_ip_route 124.40.128.0/18 +add china_ip_route 124.40.192.0/19 +add china_ip_route 124.40.240.0/22 +add china_ip_route 124.42.0.0/16 +add china_ip_route 124.47.0.0/18 +add china_ip_route 124.64.0.0/15 +add china_ip_route 124.66.0.0/17 +add china_ip_route 124.67.0.0/16 +add china_ip_route 124.68.0.0/19 +add china_ip_route 124.68.32.0/20 +add china_ip_route 124.68.48.0/21 +add china_ip_route 124.68.56.0/22 +add china_ip_route 124.68.60.0/23 +add china_ip_route 124.68.63.0/24 +add china_ip_route 124.68.64.0/18 +add china_ip_route 124.68.128.0/18 +add china_ip_route 124.68.192.0/19 +add china_ip_route 124.68.224.0/23 +add china_ip_route 124.68.226.0/24 +add china_ip_route 124.68.228.0/22 +add china_ip_route 124.68.232.0/21 +add china_ip_route 124.68.240.0/23 +add china_ip_route 124.68.242.0/24 +add china_ip_route 124.68.244.0/23 +add china_ip_route 124.68.254.0/23 +add china_ip_route 124.69.0.0/16 +add china_ip_route 124.70.0.0/15 +add china_ip_route 124.72.0.0/13 +add china_ip_route 124.88.0.0/13 +add china_ip_route 124.108.8.0/21 +add china_ip_route 124.108.40.0/21 +add china_ip_route 124.109.96.0/21 +add china_ip_route 124.112.0.0/14 +add china_ip_route 124.116.0.0/15 +add china_ip_route 124.118.0.0/16 +add china_ip_route 124.119.0.0/17 +add china_ip_route 124.119.128.0/18 +add china_ip_route 124.119.192.0/19 +add china_ip_route 124.119.224.0/20 +add china_ip_route 124.119.240.0/22 +add china_ip_route 124.119.244.0/23 +add china_ip_route 124.119.246.0/25 +add china_ip_route 124.119.246.128/26 +add china_ip_route 124.119.246.192/27 +add china_ip_route 124.119.246.224/28 +add china_ip_route 124.119.246.240/29 +add china_ip_route 124.119.246.248/30 +add china_ip_route 124.119.246.254/31 +add china_ip_route 124.119.247.0/24 +add china_ip_route 124.119.248.0/21 +add china_ip_route 124.126.0.0/15 +add china_ip_route 124.128.0.0/13 +add china_ip_route 124.147.128.0/17 +add china_ip_route 124.150.137.0/24 +add china_ip_route 124.151.0.0/16 +add china_ip_route 124.152.0.0/16 +add china_ip_route 124.160.0.0/13 +add china_ip_route 124.172.0.0/16 +add china_ip_route 124.173.32.0/19 +add china_ip_route 124.173.64.0/18 +add china_ip_route 124.173.128.0/17 +add china_ip_route 124.174.0.0/15 +add china_ip_route 124.192.0.0/15 +add china_ip_route 124.196.0.0/16 +add china_ip_route 124.200.0.0/13 +add china_ip_route 124.220.0.0/14 +add china_ip_route 124.224.0.0/12 +add china_ip_route 124.240.0.0/17 +add china_ip_route 124.240.128.0/18 +add china_ip_route 124.242.0.0/16 +add china_ip_route 124.243.192.0/18 +add china_ip_route 124.248.0.0/17 +add china_ip_route 124.249.0.0/16 +add china_ip_route 124.250.0.0/15 +add china_ip_route 124.254.0.0/18 +add china_ip_route 125.31.192.0/18 +add china_ip_route 125.32.0.0/12 +add china_ip_route 125.58.128.0/17 +add china_ip_route 125.61.128.0/17 +add china_ip_route 125.62.0.0/18 +add china_ip_route 125.64.0.0/11 +add china_ip_route 125.96.0.0/15 +add china_ip_route 125.98.0.0/16 +add china_ip_route 125.104.0.0/13 +add china_ip_route 125.112.0.0/12 +add china_ip_route 125.169.0.0/16 +add china_ip_route 125.171.0.0/16 +add china_ip_route 125.208.0.0/19 +add china_ip_route 125.208.37.0/24 +add china_ip_route 125.208.40.0/24 +add china_ip_route 125.208.45.0/24 +add china_ip_route 125.208.46.0/23 +add china_ip_route 125.208.48.0/20 +add china_ip_route 125.210.0.0/15 +add china_ip_route 125.213.0.0/17 +add china_ip_route 125.214.96.0/19 +add china_ip_route 125.215.0.0/18 +add china_ip_route 125.216.0.0/13 +add china_ip_route 125.254.128.0/17 +add china_ip_route 128.108.0.0/16 +add china_ip_route 129.28.0.0/16 +add china_ip_route 129.204.0.0/16 +add china_ip_route 129.211.0.0/16 +add china_ip_route 129.223.254.0/24 +add china_ip_route 130.36.146.0/23 +add china_ip_route 130.214.218.0/23 +add china_ip_route 131.228.96.0/24 +add china_ip_route 131.253.12.0/29 +add china_ip_route 131.253.12.80/28 +add china_ip_route 131.253.12.240/29 +add china_ip_route 132.232.0.0/16 +add china_ip_route 132.237.134.0/24 +add china_ip_route 134.175.0.0/16 +add china_ip_route 135.84.247.0/24 +add china_ip_route 135.84.254.0/23 +add china_ip_route 135.159.208.0/20 +add china_ip_route 135.244.80.0/20 +add china_ip_route 137.59.59.0/24 +add china_ip_route 137.59.88.0/22 +add china_ip_route 138.32.244.0/24 +add china_ip_route 139.5.56.0/21 +add china_ip_route 139.5.80.0/22 +add china_ip_route 139.5.92.0/22 +add china_ip_route 139.5.128.0/22 +add china_ip_route 139.5.160.0/22 +add china_ip_route 139.5.192.0/22 +add china_ip_route 139.5.204.0/22 +add china_ip_route 139.5.244.0/22 +add china_ip_route 139.9.0.0/16 +add china_ip_route 139.129.0.0/16 +add china_ip_route 139.138.238.0/28 +add china_ip_route 139.148.0.0/16 +add china_ip_route 139.155.0.0/16 +add china_ip_route 139.159.0.0/19 +add china_ip_route 139.159.32.0/21 +add china_ip_route 139.159.40.0/22 +add china_ip_route 139.159.52.0/22 +add china_ip_route 139.159.56.0/21 +add china_ip_route 139.159.64.0/19 +add china_ip_route 139.159.96.0/20 +add china_ip_route 139.159.112.0/22 +add china_ip_route 139.159.116.0/23 +add china_ip_route 139.159.120.0/21 +add china_ip_route 139.159.128.0/17 +add china_ip_route 139.170.0.0/16 +add china_ip_route 139.176.0.0/16 +add china_ip_route 139.183.0.0/16 +add china_ip_route 139.186.0.0/16 +add china_ip_route 139.189.0.0/16 +add china_ip_route 139.196.0.0/15 +add china_ip_route 139.198.0.0/21 +add china_ip_route 139.198.8.0/23 +add china_ip_route 139.198.11.0/24 +add china_ip_route 139.198.12.0/22 +add china_ip_route 139.198.16.0/20 +add china_ip_route 139.198.32.0/19 +add china_ip_route 139.198.66.0/23 +add china_ip_route 139.198.68.0/22 +add china_ip_route 139.198.72.0/21 +add china_ip_route 139.198.80.0/20 +add china_ip_route 139.198.96.0/20 +add china_ip_route 139.198.116.0/22 +add china_ip_route 139.198.122.0/23 +add china_ip_route 139.198.124.0/22 +add china_ip_route 139.198.128.0/17 +add china_ip_route 139.199.0.0/16 +add china_ip_route 139.200.0.0/13 +add china_ip_route 139.208.0.0/13 +add china_ip_route 139.217.0.0/16 +add china_ip_route 139.219.0.0/16 +add china_ip_route 139.220.0.0/17 +add china_ip_route 139.220.128.0/18 +add china_ip_route 139.220.192.0/22 +add china_ip_route 139.220.196.0/23 +add china_ip_route 139.220.200.0/21 +add china_ip_route 139.220.208.0/23 +add china_ip_route 139.220.212.0/22 +add china_ip_route 139.220.216.0/21 +add china_ip_route 139.220.224.0/19 +add china_ip_route 139.221.0.0/16 +add china_ip_route 139.224.0.0/16 +add china_ip_route 139.226.0.0/15 +add china_ip_route 140.75.0.0/16 +add china_ip_route 140.101.208.0/24 +add china_ip_route 140.143.0.0/16 +add china_ip_route 140.179.0.0/16 +add china_ip_route 140.205.0.0/16 +add china_ip_route 140.206.0.0/15 +add china_ip_route 140.210.0.0/16 +add china_ip_route 140.224.0.0/16 +add china_ip_route 140.237.0.0/16 +add china_ip_route 140.240.0.0/16 +add china_ip_route 140.242.223.0/24 +add china_ip_route 140.242.224.0/24 +add china_ip_route 140.243.0.0/16 +add china_ip_route 140.246.0.0/16 +add china_ip_route 140.249.0.0/16 +add china_ip_route 140.250.0.0/16 +add china_ip_route 140.255.0.0/16 +add china_ip_route 142.70.0.0/16 +add china_ip_route 142.86.0.0/16 +add china_ip_route 144.0.0.0/16 +add china_ip_route 144.7.0.0/16 +add china_ip_route 144.12.0.0/16 +add china_ip_route 144.36.146.0/23 +add china_ip_route 144.48.64.0/22 +add china_ip_route 144.48.88.0/22 +add china_ip_route 144.48.156.0/22 +add china_ip_route 144.48.180.0/22 +add china_ip_route 144.48.184.0/22 +add china_ip_route 144.48.204.0/22 +add china_ip_route 144.48.208.0/21 +add china_ip_route 144.52.0.0/16 +add china_ip_route 144.123.0.0/16 +add china_ip_route 144.211.80.0/24 +add china_ip_route 144.211.138.0/24 +add china_ip_route 144.255.0.0/16 +add china_ip_route 146.56.192.0/18 +add china_ip_route 146.88.175.0/24 +add china_ip_route 146.196.56.0/22 +add china_ip_route 146.196.68.0/22 +add china_ip_route 146.196.92.0/22 +add china_ip_route 146.196.112.0/21 +add china_ip_route 146.196.124.0/22 +add china_ip_route 146.217.137.0/24 +add china_ip_route 146.222.79.0/24 +add china_ip_route 146.222.81.0/24 +add china_ip_route 146.222.94.0/24 +add china_ip_route 147.243.13.32/27 +add china_ip_route 147.243.13.64/27 +add china_ip_route 147.243.14.32/27 +add china_ip_route 148.70.0.0/16 +add china_ip_route 150.0.0.0/16 +add china_ip_route 150.115.0.0/16 +add china_ip_route 150.121.0.0/16 +add china_ip_route 150.122.0.0/16 +add china_ip_route 150.129.136.0/22 +add china_ip_route 150.129.192.0/22 +add china_ip_route 150.129.252.0/22 +add china_ip_route 150.138.0.0/15 +add china_ip_route 150.158.0.0/16 +add china_ip_route 150.222.88.0/23 +add china_ip_route 150.223.0.0/16 +add china_ip_route 150.242.0.0/21 +add china_ip_route 150.242.8.0/22 +add china_ip_route 150.242.28.0/22 +add china_ip_route 150.242.44.0/22 +add china_ip_route 150.242.48.0/21 +add china_ip_route 150.242.56.0/22 +add china_ip_route 150.242.76.0/22 +add china_ip_route 150.242.80.0/22 +add china_ip_route 150.242.92.0/22 +add china_ip_route 150.242.96.0/22 +add china_ip_route 150.242.112.0/21 +add china_ip_route 150.242.120.0/22 +add china_ip_route 150.242.152.0/22 +add china_ip_route 150.242.158.0/24 +add china_ip_route 150.242.160.0/21 +add china_ip_route 150.242.168.0/22 +add china_ip_route 150.242.184.0/21 +add china_ip_route 150.242.192.0/22 +add china_ip_route 150.242.224.0/22 +add china_ip_route 150.242.232.0/21 +add china_ip_route 150.242.240.0/21 +add china_ip_route 150.242.248.0/22 +add china_ip_route 150.248.0.0/16 +add china_ip_route 150.255.0.0/16 +add china_ip_route 152.32.178.0/23 +add china_ip_route 152.104.128.0/17 +add china_ip_route 152.136.0.0/16 +add china_ip_route 153.0.0.0/16 +add china_ip_route 153.3.0.0/16 +add china_ip_route 153.34.0.0/15 +add china_ip_route 153.36.0.0/15 +add china_ip_route 153.99.0.0/16 +add china_ip_route 153.101.0.0/16 +add china_ip_route 153.118.0.0/15 +add china_ip_route 154.8.128.0/17 +add china_ip_route 155.126.176.0/23 +add china_ip_route 156.107.160.0/24 +add china_ip_route 156.107.170.0/24 +add china_ip_route 156.107.179.0/24 +add china_ip_route 156.107.181.0/24 +add china_ip_route 156.154.62.0/23 +add china_ip_route 157.0.0.0/16 +add china_ip_route 157.18.0.0/16 +add china_ip_route 157.61.0.0/16 +add china_ip_route 157.119.8.0/21 +add china_ip_route 157.119.16.0/22 +add china_ip_route 157.119.28.0/22 +add china_ip_route 157.119.132.0/22 +add china_ip_route 157.119.136.0/21 +add china_ip_route 157.119.144.0/20 +add china_ip_route 157.119.160.0/21 +add china_ip_route 157.119.172.0/22 +add china_ip_route 157.119.192.0/21 +add china_ip_route 157.119.240.0/22 +add china_ip_route 157.119.252.0/22 +add china_ip_route 157.122.0.0/16 +add china_ip_route 157.133.186.0/23 +add china_ip_route 157.133.192.0/21 +add china_ip_route 157.133.212.0/24 +add china_ip_route 157.133.236.0/24 +add china_ip_route 157.148.0.0/16 +add china_ip_route 157.156.0.0/16 +add china_ip_route 157.255.0.0/16 +add china_ip_route 158.79.0.0/24 +add china_ip_route 158.79.2.0/23 +add china_ip_route 158.79.4.0/22 +add china_ip_route 158.79.8.0/21 +add china_ip_route 158.79.16.0/20 +add china_ip_route 158.79.32.0/19 +add china_ip_route 158.79.64.0/18 +add china_ip_route 158.79.128.0/17 +add china_ip_route 159.75.0.0/16 +add china_ip_route 159.221.232.0/22 +add china_ip_route 159.226.0.0/16 +add china_ip_route 160.19.212.0/22 +add china_ip_route 160.19.216.0/22 +add china_ip_route 160.20.48.0/22 +add china_ip_route 160.62.10.0/24 +add china_ip_route 160.83.109.0/24 +add china_ip_route 160.83.110.0/23 +add china_ip_route 160.202.60.0/23 +add china_ip_route 160.202.62.0/24 +add china_ip_route 160.202.148.0/22 +add china_ip_route 160.202.152.0/22 +add china_ip_route 160.202.212.0/22 +add china_ip_route 160.202.216.0/21 +add china_ip_route 160.202.224.0/19 +add china_ip_route 160.238.64.0/22 +add china_ip_route 161.120.0.0/16 +add china_ip_route 161.163.0.0/21 +add china_ip_route 161.163.28.0/23 +add china_ip_route 161.163.176.0/24 +add china_ip_route 161.163.178.0/23 +add china_ip_route 161.163.180.0/22 +add china_ip_route 161.189.0.0/16 +add china_ip_route 161.207.0.0/16 +add china_ip_route 162.14.0.0/21 +add china_ip_route 162.14.12.0/22 +add china_ip_route 162.14.16.0/21 +add china_ip_route 162.14.26.0/23 +add china_ip_route 162.14.28.0/22 +add china_ip_route 162.14.32.0/19 +add china_ip_route 162.14.64.0/18 +add china_ip_route 162.14.128.0/17 +add china_ip_route 162.105.0.0/16 +add china_ip_route 163.0.0.0/16 +add china_ip_route 163.47.4.0/22 +add china_ip_route 163.53.0.0/20 +add china_ip_route 163.53.36.0/22 +add china_ip_route 163.53.40.0/22 +add china_ip_route 163.53.48.0/20 +add china_ip_route 163.53.64.0/22 +add china_ip_route 163.53.88.0/21 +add china_ip_route 163.53.96.0/19 +add china_ip_route 163.53.128.0/21 +add china_ip_route 163.53.136.0/22 +add china_ip_route 163.53.160.0/20 +add china_ip_route 163.53.188.0/22 +add china_ip_route 163.53.220.0/22 +add china_ip_route 163.53.240.0/22 +add china_ip_route 163.116.202.0/23 +add china_ip_route 163.125.0.0/16 +add china_ip_route 163.142.0.0/16 +add china_ip_route 163.177.0.0/16 +add china_ip_route 163.179.0.0/16 +add china_ip_route 163.204.0.0/16 +add china_ip_route 163.244.246.0/24 +add china_ip_route 164.52.80.0/24 +add china_ip_route 165.84.197.0/24 +add china_ip_route 165.84.251.0/25 +add china_ip_route 165.84.251.128/26 +add china_ip_route 165.84.251.192/27 +add china_ip_route 165.84.251.224/28 +add china_ip_route 165.84.251.240/29 +add china_ip_route 165.84.251.248/30 +add china_ip_route 165.84.251.253/32 +add china_ip_route 165.84.251.254/31 +add china_ip_route 165.156.30.0/24 +add china_ip_route 165.254.82.27/32 +add china_ip_route 166.111.0.0/16 +add china_ip_route 167.139.0.0/16 +add china_ip_route 167.189.0.0/16 +add china_ip_route 167.220.244.0/22 +add china_ip_route 168.159.144.0/21 +add china_ip_route 168.159.152.0/22 +add china_ip_route 168.159.156.0/23 +add china_ip_route 168.159.158.0/24 +add china_ip_route 168.160.0.0/16 +add china_ip_route 168.230.0.0/24 +add china_ip_route 170.179.0.0/16 +add china_ip_route 170.225.224.0/23 +add china_ip_route 170.252.152.0/21 +add china_ip_route 171.8.0.0/13 +add china_ip_route 171.34.0.0/15 +add china_ip_route 171.36.0.0/14 +add china_ip_route 171.40.0.0/13 +add china_ip_route 171.80.0.0/12 +add china_ip_route 171.104.0.0/13 +add china_ip_route 171.112.0.0/12 +add china_ip_route 171.208.0.0/12 +add china_ip_route 172.81.192.0/18 +add china_ip_route 173.39.200.0/23 +add china_ip_route 175.0.0.0/12 +add china_ip_route 175.16.0.0/13 +add china_ip_route 175.24.0.0/14 +add china_ip_route 175.30.0.0/15 +add china_ip_route 175.42.0.0/15 +add china_ip_route 175.44.0.0/16 +add china_ip_route 175.46.0.0/15 +add china_ip_route 175.48.0.0/12 +add china_ip_route 175.64.0.0/11 +add china_ip_route 175.102.0.0/16 +add china_ip_route 175.106.128.0/17 +add china_ip_route 175.111.144.0/20 +add china_ip_route 175.111.160.0/20 +add china_ip_route 175.111.184.0/22 +add china_ip_route 175.146.0.0/15 +add china_ip_route 175.148.0.0/14 +add china_ip_route 175.152.0.0/14 +add china_ip_route 175.158.96.0/22 +add china_ip_route 175.160.0.0/12 +add china_ip_route 175.176.156.0/22 +add china_ip_route 175.176.188.0/22 +add china_ip_route 175.178.0.0/16 +add china_ip_route 175.184.128.0/18 +add china_ip_route 175.185.0.0/16 +add china_ip_route 175.186.0.0/15 +add china_ip_route 175.188.0.0/14 +add china_ip_route 180.76.16.0/20 +add china_ip_route 180.76.32.0/19 +add china_ip_route 180.76.64.0/18 +add china_ip_route 180.76.128.0/18 +add china_ip_route 180.76.192.0/19 +add china_ip_route 180.76.224.0/20 +add china_ip_route 180.76.240.0/24 +add china_ip_route 180.76.242.0/23 +add china_ip_route 180.76.244.0/22 +add china_ip_route 180.76.248.0/22 +add china_ip_route 180.76.252.0/23 +add china_ip_route 180.76.255.0/24 +add china_ip_route 180.77.0.0/16 +add china_ip_route 180.78.0.0/15 +add china_ip_route 180.84.0.0/15 +add china_ip_route 180.86.0.0/16 +add china_ip_route 180.87.93.98/32 +add china_ip_route 180.88.0.0/14 +add china_ip_route 180.94.56.0/21 +add china_ip_route 180.94.96.0/20 +add china_ip_route 180.94.120.0/21 +add china_ip_route 180.95.128.0/17 +add china_ip_route 180.96.0.0/11 +add china_ip_route 180.129.128.0/17 +add china_ip_route 180.130.0.0/16 +add china_ip_route 180.136.0.0/13 +add china_ip_route 180.148.16.0/21 +add china_ip_route 180.148.152.0/21 +add china_ip_route 180.148.216.0/21 +add china_ip_route 180.148.224.0/19 +add china_ip_route 180.149.128.0/19 +add china_ip_route 180.150.160.0/21 +add china_ip_route 180.150.176.0/20 +add china_ip_route 180.152.0.0/13 +add china_ip_route 180.160.0.0/12 +add china_ip_route 180.178.112.0/21 +add china_ip_route 180.178.192.0/18 +add china_ip_route 180.184.0.0/14 +add china_ip_route 180.188.0.0/17 +add china_ip_route 180.189.148.0/22 +add china_ip_route 180.200.252.0/22 +add china_ip_route 180.201.0.0/16 +add china_ip_route 180.202.0.0/15 +add china_ip_route 180.208.0.0/15 +add china_ip_route 180.210.212.0/22 +add china_ip_route 180.210.233.0/24 +add china_ip_route 180.210.236.0/22 +add china_ip_route 180.212.0.0/15 +add china_ip_route 180.222.224.0/19 +add china_ip_route 180.223.0.0/18 +add china_ip_route 180.223.80.0/20 +add china_ip_route 180.223.96.0/19 +add china_ip_route 180.223.129.0/24 +add china_ip_route 180.223.130.0/23 +add china_ip_route 180.223.132.0/22 +add china_ip_route 180.223.136.0/21 +add china_ip_route 180.223.144.0/20 +add china_ip_route 180.223.160.0/19 +add china_ip_route 180.223.192.0/18 +add china_ip_route 180.233.0.0/18 +add china_ip_route 180.233.64.0/19 +add china_ip_route 180.233.144.0/22 +add china_ip_route 180.235.64.0/19 +add china_ip_route 180.235.112.0/22 +add china_ip_route 182.16.144.0/21 +add china_ip_route 182.16.192.0/19 +add china_ip_route 182.18.0.0/17 +add china_ip_route 182.23.184.0/21 +add china_ip_route 182.23.200.0/21 +add china_ip_route 182.32.0.0/12 +add china_ip_route 182.48.96.0/19 +add china_ip_route 182.49.0.0/16 +add china_ip_route 182.50.0.0/22 +add china_ip_route 182.50.8.0/21 +add china_ip_route 182.50.112.0/20 +add china_ip_route 182.51.0.0/16 +add china_ip_route 182.54.0.0/17 +add china_ip_route 182.61.0.0/18 +add china_ip_route 182.61.128.0/19 +add china_ip_route 182.61.192.0/18 +add china_ip_route 182.80.0.0/13 +add china_ip_route 182.88.0.0/14 +add china_ip_route 182.92.0.0/16 +add china_ip_route 182.96.0.0/11 +add china_ip_route 182.128.0.0/12 +add china_ip_route 182.144.0.0/13 +add china_ip_route 182.157.0.0/16 +add china_ip_route 182.160.64.0/19 +add china_ip_route 182.174.0.0/15 +add china_ip_route 182.200.0.0/13 +add china_ip_route 182.236.128.0/17 +add china_ip_route 182.237.24.0/21 +add china_ip_route 182.238.0.0/16 +add china_ip_route 182.239.0.0/19 +add china_ip_route 182.240.0.0/13 +add china_ip_route 182.254.0.0/18 +add china_ip_route 182.254.64.0/19 +add china_ip_route 182.254.96.0/20 +add china_ip_route 182.254.112.0/22 +add china_ip_route 182.254.117.0/24 +add china_ip_route 182.254.119.0/24 +add china_ip_route 182.254.120.0/21 +add china_ip_route 182.254.128.0/17 +add china_ip_route 183.0.0.0/10 +add china_ip_route 183.64.0.0/13 +add china_ip_route 183.78.160.0/21 +add china_ip_route 183.78.180.0/22 +add china_ip_route 183.81.180.0/22 +add china_ip_route 183.84.0.0/15 +add china_ip_route 183.91.128.0/22 +add china_ip_route 183.91.136.0/21 +add china_ip_route 183.91.144.0/20 +add china_ip_route 183.92.0.0/14 +add china_ip_route 183.128.0.0/11 +add china_ip_route 183.160.0.0/13 +add china_ip_route 183.168.0.0/15 +add china_ip_route 183.170.0.0/16 +add china_ip_route 183.172.0.0/14 +add china_ip_route 183.184.0.0/13 +add china_ip_route 183.192.0.0/10 +add china_ip_route 185.109.236.0/24 +add china_ip_route 185.216.118.0/26 +add china_ip_route 185.216.118.64/27 +add china_ip_route 185.216.118.112/28 +add china_ip_route 185.216.118.128/25 +add china_ip_route 188.131.128.0/17 +add china_ip_route 192.11.23.0/24 +add china_ip_route 192.11.26.0/24 +add china_ip_route 192.11.39.0/24 +add china_ip_route 192.11.236.0/24 +add china_ip_route 192.23.191.0/24 +add china_ip_route 192.55.10.0/23 +add china_ip_route 192.55.40.0/24 +add china_ip_route 192.55.46.0/24 +add china_ip_route 192.55.68.0/22 +add china_ip_route 192.102.204.0/22 +add china_ip_route 192.124.154.0/24 +add china_ip_route 192.137.31.0/24 +add china_ip_route 192.140.128.0/21 +add china_ip_route 192.140.136.0/22 +add china_ip_route 192.140.156.0/22 +add china_ip_route 192.140.160.0/19 +add china_ip_route 192.140.192.0/20 +add china_ip_route 192.140.208.0/21 +add china_ip_route 192.144.128.0/17 +add china_ip_route 192.163.11.0/24 +add china_ip_route 192.232.97.0/24 +add china_ip_route 193.17.120.0/22 +add china_ip_route 193.20.64.0/22 +add china_ip_route 193.112.0.0/16 +add china_ip_route 193.200.196.0/24 +add china_ip_route 193.200.222.160/28 +add china_ip_route 194.138.136.0/24 +add china_ip_route 194.138.202.0/23 +add china_ip_route 194.138.245.0/24 +add china_ip_route 195.142.215.0/24 +add china_ip_route 198.175.100.0/22 +add china_ip_route 198.208.17.0/24 +add china_ip_route 198.208.19.0/24 +add china_ip_route 199.7.72.0/24 +add china_ip_route 199.65.192.0/21 +add china_ip_route 199.244.144.0/24 +add china_ip_route 202.0.100.0/23 +add china_ip_route 202.0.122.0/23 +add china_ip_route 202.1.105.0/24 +add china_ip_route 202.1.106.0/24 +add china_ip_route 202.3.128.0/23 +add china_ip_route 202.4.128.0/19 +add china_ip_route 202.4.252.0/22 +add china_ip_route 202.5.208.0/21 +add china_ip_route 202.5.216.0/22 +add china_ip_route 202.6.6.0/23 +add china_ip_route 202.6.66.0/23 +add china_ip_route 202.6.72.0/23 +add china_ip_route 202.6.87.0/24 +add china_ip_route 202.6.88.0/23 +add china_ip_route 202.6.92.0/23 +add china_ip_route 202.6.103.0/24 +add china_ip_route 202.6.108.0/24 +add china_ip_route 202.6.110.0/23 +add china_ip_route 202.6.114.0/24 +add china_ip_route 202.6.176.0/20 +add china_ip_route 202.8.0.0/24 +add china_ip_route 202.8.2.0/23 +add china_ip_route 202.8.4.0/23 +add china_ip_route 202.8.12.0/24 +add china_ip_route 202.8.24.0/24 +add china_ip_route 202.8.77.0/24 +add china_ip_route 202.8.128.0/19 +add china_ip_route 202.8.192.0/20 +add china_ip_route 202.9.32.0/24 +add china_ip_route 202.9.34.0/23 +add china_ip_route 202.9.48.0/23 +add china_ip_route 202.9.51.0/24 +add china_ip_route 202.9.52.0/23 +add china_ip_route 202.9.54.0/24 +add china_ip_route 202.9.57.0/24 +add china_ip_route 202.9.58.0/23 +add china_ip_route 202.10.64.0/21 +add china_ip_route 202.10.74.0/23 +add china_ip_route 202.10.76.0/22 +add china_ip_route 202.10.112.0/20 +add china_ip_route 202.12.1.0/24 +add china_ip_route 202.12.2.0/24 +add china_ip_route 202.12.17.0/24 +add china_ip_route 202.12.18.0/23 +add china_ip_route 202.12.72.0/24 +add china_ip_route 202.12.84.0/23 +add china_ip_route 202.12.96.0/24 +add china_ip_route 202.12.98.0/23 +add china_ip_route 202.12.106.0/24 +add china_ip_route 202.12.111.0/24 +add china_ip_route 202.12.116.0/24 +add china_ip_route 202.14.64.0/23 +add china_ip_route 202.14.69.0/24 +add china_ip_route 202.14.73.0/24 +add china_ip_route 202.14.74.0/23 +add china_ip_route 202.14.76.0/24 +add china_ip_route 202.14.78.0/23 +add china_ip_route 202.14.88.0/24 +add china_ip_route 202.14.97.0/24 +add china_ip_route 202.14.104.0/23 +add china_ip_route 202.14.108.0/23 +add china_ip_route 202.14.111.0/24 +add china_ip_route 202.14.114.0/23 +add china_ip_route 202.14.118.0/23 +add china_ip_route 202.14.124.0/23 +add china_ip_route 202.14.127.0/24 +add china_ip_route 202.14.129.0/24 +add china_ip_route 202.14.135.0/24 +add china_ip_route 202.14.136.0/24 +add china_ip_route 202.14.149.0/24 +add china_ip_route 202.14.151.0/24 +add china_ip_route 202.14.157.0/24 +add china_ip_route 202.14.158.0/23 +add china_ip_route 202.14.169.0/24 +add china_ip_route 202.14.170.0/23 +add china_ip_route 202.14.172.0/22 +add china_ip_route 202.14.176.0/24 +add china_ip_route 202.14.184.0/23 +add china_ip_route 202.14.208.0/23 +add china_ip_route 202.14.213.0/24 +add china_ip_route 202.14.219.0/24 +add china_ip_route 202.14.220.0/24 +add china_ip_route 202.14.222.0/23 +add china_ip_route 202.14.225.0/24 +add china_ip_route 202.14.226.0/23 +add china_ip_route 202.14.231.0/24 +add china_ip_route 202.14.235.0/24 +add china_ip_route 202.14.236.0/22 +add china_ip_route 202.14.246.0/24 +add china_ip_route 202.14.251.0/24 +add china_ip_route 202.20.66.0/24 +add china_ip_route 202.20.79.0/24 +add china_ip_route 202.20.87.0/24 +add china_ip_route 202.20.88.0/23 +add china_ip_route 202.20.90.0/24 +add china_ip_route 202.20.94.0/23 +add china_ip_route 202.20.114.0/24 +add china_ip_route 202.20.117.0/24 +add china_ip_route 202.20.120.0/24 +add china_ip_route 202.20.125.0/24 +add china_ip_route 202.20.126.0/23 +add china_ip_route 202.21.48.0/20 +add china_ip_route 202.21.131.0/24 +add china_ip_route 202.21.132.0/24 +add china_ip_route 202.21.141.0/24 +add china_ip_route 202.21.142.0/24 +add china_ip_route 202.21.147.0/24 +add china_ip_route 202.21.148.0/24 +add china_ip_route 202.21.150.0/23 +add china_ip_route 202.21.152.0/23 +add china_ip_route 202.21.154.0/24 +add china_ip_route 202.21.156.0/24 +add china_ip_route 202.21.208.0/24 +add china_ip_route 202.22.248.0/21 +add china_ip_route 202.27.12.0/24 +add china_ip_route 202.27.14.0/24 +add china_ip_route 202.27.136.0/23 +add china_ip_route 202.36.226.0/24 +add china_ip_route 202.38.0.0/22 +add china_ip_route 202.38.8.0/21 +add china_ip_route 202.38.48.0/20 +add china_ip_route 202.38.64.0/18 +add china_ip_route 202.38.128.0/21 +add china_ip_route 202.38.136.0/23 +add china_ip_route 202.38.138.0/24 +add china_ip_route 202.38.140.0/22 +add china_ip_route 202.38.146.0/23 +add china_ip_route 202.38.149.0/24 +add china_ip_route 202.38.150.0/23 +add china_ip_route 202.38.152.0/22 +add china_ip_route 202.38.156.0/24 +add china_ip_route 202.38.158.0/23 +add china_ip_route 202.38.160.0/23 +add china_ip_route 202.38.164.0/22 +add china_ip_route 202.38.168.0/22 +add china_ip_route 202.38.176.0/23 +add china_ip_route 202.38.184.0/21 +add china_ip_route 202.38.192.0/18 +add china_ip_route 202.40.4.0/23 +add china_ip_route 202.40.7.0/24 +add china_ip_route 202.40.15.0/24 +add china_ip_route 202.40.135.0/24 +add china_ip_route 202.40.136.0/24 +add china_ip_route 202.40.140.0/24 +add china_ip_route 202.40.143.0/24 +add china_ip_route 202.40.144.0/23 +add china_ip_route 202.40.150.0/24 +add china_ip_route 202.40.155.0/24 +add china_ip_route 202.40.156.0/24 +add china_ip_route 202.40.158.0/23 +add china_ip_route 202.40.162.0/24 +add china_ip_route 202.41.8.0/23 +add china_ip_route 202.41.11.0/24 +add china_ip_route 202.41.12.0/23 +add china_ip_route 202.41.128.0/24 +add china_ip_route 202.41.130.0/23 +add china_ip_route 202.41.142.0/24 +add china_ip_route 202.41.152.0/21 +add china_ip_route 202.41.192.0/24 +add china_ip_route 202.41.196.0/22 +add china_ip_route 202.41.200.0/22 +add china_ip_route 202.41.240.0/20 +add china_ip_route 202.43.76.0/22 +add china_ip_route 202.43.144.0/20 +add china_ip_route 202.44.16.0/20 +add china_ip_route 202.44.48.0/22 +add china_ip_route 202.44.67.0/24 +add china_ip_route 202.44.74.0/24 +add china_ip_route 202.44.97.0/24 +add china_ip_route 202.44.129.0/24 +add china_ip_route 202.44.132.0/23 +add china_ip_route 202.44.146.0/23 +add china_ip_route 202.45.0.0/23 +add china_ip_route 202.45.2.0/24 +add china_ip_route 202.45.15.0/24 +add china_ip_route 202.45.16.0/20 +add china_ip_route 202.46.16.0/23 +add china_ip_route 202.46.18.0/24 +add china_ip_route 202.46.20.0/23 +add china_ip_route 202.46.128.0/24 +add china_ip_route 202.46.224.0/20 +add china_ip_route 202.47.82.0/23 +add china_ip_route 202.47.96.0/20 +add china_ip_route 202.47.126.0/24 +add china_ip_route 202.47.128.0/24 +add china_ip_route 202.47.130.0/23 +add china_ip_route 202.52.34.0/24 +add china_ip_route 202.52.143.0/24 +add china_ip_route 202.53.140.0/24 +add china_ip_route 202.53.143.0/24 +add china_ip_route 202.53.202.0/24 +add china_ip_route 202.57.212.0/22 +add china_ip_route 202.57.216.0/22 +add china_ip_route 202.57.240.0/20 +add china_ip_route 202.58.0.0/24 +add china_ip_route 202.58.112.0/22 +add china_ip_route 202.59.0.0/23 +add china_ip_route 202.59.212.0/22 +add china_ip_route 202.59.236.0/24 +add china_ip_route 202.59.240.0/24 +add china_ip_route 202.60.48.0/21 +add china_ip_route 202.60.96.0/21 +add china_ip_route 202.60.112.0/20 +add china_ip_route 202.60.132.0/22 +add china_ip_route 202.60.136.0/21 +add china_ip_route 202.60.144.0/20 +add china_ip_route 202.61.68.0/22 +add china_ip_route 202.61.76.0/22 +add china_ip_route 202.61.88.0/22 +add china_ip_route 202.61.123.0/24 +add china_ip_route 202.61.127.0/24 +add china_ip_route 202.62.112.0/22 +add china_ip_route 202.62.248.0/22 +add china_ip_route 202.62.252.0/24 +add china_ip_route 202.62.255.0/24 +add china_ip_route 202.63.80.0/20 +add china_ip_route 202.63.160.0/19 +add china_ip_route 202.63.248.0/22 +add china_ip_route 202.63.253.0/24 +add china_ip_route 202.65.0.0/21 +add china_ip_route 202.65.8.0/23 +add china_ip_route 202.67.0.0/22 +add china_ip_route 202.69.4.0/23 +add china_ip_route 202.69.16.0/20 +add china_ip_route 202.70.0.0/19 +add china_ip_route 202.70.96.0/20 +add china_ip_route 202.70.192.0/20 +add china_ip_route 202.71.32.0/20 +add china_ip_route 202.72.40.0/21 +add china_ip_route 202.72.80.0/20 +add china_ip_route 202.72.112.0/20 +add china_ip_route 202.73.128.0/22 +add china_ip_route 202.73.240.0/20 +add china_ip_route 202.74.8.0/21 +add china_ip_route 202.74.36.0/24 +add china_ip_route 202.74.42.0/24 +add china_ip_route 202.74.52.0/24 +add china_ip_route 202.74.80.0/20 +add china_ip_route 202.74.254.0/23 +add china_ip_route 202.75.208.0/20 +add china_ip_route 202.75.252.0/22 +add china_ip_route 202.76.247.0/24 +add china_ip_route 202.76.252.0/22 +add china_ip_route 202.77.80.0/21 +add china_ip_route 202.77.92.0/22 +add china_ip_route 202.78.8.0/21 +add china_ip_route 202.79.224.0/21 +add china_ip_route 202.79.248.0/22 +add china_ip_route 202.80.192.0/20 +add china_ip_route 202.81.0.0/22 +add china_ip_route 202.81.176.0/20 +add china_ip_route 202.83.252.0/22 +add china_ip_route 202.84.0.0/20 +add china_ip_route 202.84.16.0/23 +add china_ip_route 202.84.22.0/24 +add china_ip_route 202.84.24.0/21 +add china_ip_route 202.85.208.0/20 +add china_ip_route 202.86.249.0/24 +add china_ip_route 202.87.80.0/20 +add china_ip_route 202.88.32.0/22 +add china_ip_route 202.89.8.0/21 +add china_ip_route 202.89.96.0/22 +add china_ip_route 202.89.108.0/22 +add china_ip_route 202.89.119.0/24 +add china_ip_route 202.89.232.0/21 +add china_ip_route 202.90.0.0/22 +add china_ip_route 202.90.16.0/20 +add china_ip_route 202.90.37.0/24 +add china_ip_route 202.90.96.0/19 +add china_ip_route 202.90.193.0/24 +add china_ip_route 202.90.196.0/24 +add china_ip_route 202.90.205.0/24 +add china_ip_route 202.90.224.0/20 +add china_ip_route 202.91.0.0/22 +add china_ip_route 202.91.96.0/20 +add china_ip_route 202.91.128.0/22 +add china_ip_route 202.91.176.0/20 +add china_ip_route 202.91.224.0/19 +add china_ip_route 202.92.0.0/22 +add china_ip_route 202.92.8.0/21 +add china_ip_route 202.92.48.0/20 +add china_ip_route 202.92.252.0/22 +add china_ip_route 202.93.0.0/22 +add china_ip_route 202.93.252.0/22 +add china_ip_route 202.94.0.0/19 +add china_ip_route 202.94.74.0/24 +add china_ip_route 202.94.81.0/24 +add china_ip_route 202.94.92.0/22 +add china_ip_route 202.95.240.0/21 +add china_ip_route 202.95.252.0/22 +add china_ip_route 202.96.0.0/12 +add china_ip_route 202.112.0.0/13 +add china_ip_route 202.120.0.0/15 +add china_ip_route 202.122.0.0/21 +add china_ip_route 202.122.32.0/21 +add china_ip_route 202.122.64.0/19 +add china_ip_route 202.122.112.0/20 +add china_ip_route 202.122.128.0/24 +add china_ip_route 202.122.132.0/24 +add china_ip_route 202.123.96.0/20 +add china_ip_route 202.123.116.0/22 +add china_ip_route 202.123.120.0/22 +add china_ip_route 202.124.16.0/21 +add china_ip_route 202.124.24.0/22 +add china_ip_route 202.125.107.0/24 +add china_ip_route 202.125.109.0/24 +add china_ip_route 202.125.112.0/20 +add china_ip_route 202.125.176.0/20 +add china_ip_route 202.127.0.0/21 +add china_ip_route 202.127.12.0/22 +add china_ip_route 202.127.16.0/20 +add china_ip_route 202.127.40.0/21 +add china_ip_route 202.127.48.0/20 +add china_ip_route 202.127.112.0/20 +add china_ip_route 202.127.128.0/19 +add china_ip_route 202.127.160.0/21 +add china_ip_route 202.127.192.0/20 +add china_ip_route 202.127.208.0/23 +add china_ip_route 202.127.212.0/22 +add china_ip_route 202.127.216.0/21 +add china_ip_route 202.127.224.0/19 +add china_ip_route 202.129.208.0/24 +add china_ip_route 202.130.0.0/19 +add china_ip_route 202.130.39.0/24 +add china_ip_route 202.130.224.0/19 +add china_ip_route 202.131.16.0/21 +add china_ip_route 202.131.59.0/24 +add china_ip_route 202.131.208.0/20 +add china_ip_route 202.133.32.0/20 +add china_ip_route 202.134.58.0/24 +add china_ip_route 202.134.128.0/20 +add china_ip_route 202.134.208.0/20 +add china_ip_route 202.136.48.0/20 +add china_ip_route 202.136.208.0/20 +add china_ip_route 202.136.224.0/20 +add china_ip_route 202.136.248.0/22 +add china_ip_route 202.136.254.0/23 +add china_ip_route 202.137.231.0/24 +add china_ip_route 202.140.140.0/22 +add china_ip_route 202.140.144.0/20 +add china_ip_route 202.141.160.0/19 +add china_ip_route 202.142.16.0/20 +add china_ip_route 202.143.4.0/22 +add china_ip_route 202.143.16.0/20 +add china_ip_route 202.143.32.0/20 +add china_ip_route 202.143.56.0/21 +add china_ip_route 202.143.100.0/22 +add china_ip_route 202.143.104.0/22 +add china_ip_route 202.146.160.0/20 +add china_ip_route 202.146.186.0/24 +add china_ip_route 202.146.188.0/22 +add china_ip_route 202.146.196.0/22 +add china_ip_route 202.146.200.0/21 +add china_ip_route 202.147.12.0/26 +add china_ip_route 202.147.12.64/27 +add china_ip_route 202.147.12.96/28 +add china_ip_route 202.147.12.128/29 +add china_ip_route 202.147.12.136/30 +add china_ip_route 202.147.12.140/31 +add china_ip_route 202.147.12.142/32 +add china_ip_route 202.147.12.144/28 +add china_ip_route 202.147.12.160/27 +add china_ip_route 202.147.12.192/26 +add china_ip_route 202.147.144.0/20 +add china_ip_route 202.148.32.0/20 +add china_ip_route 202.148.64.0/18 +add china_ip_route 202.149.32.0/19 +add china_ip_route 202.149.160.0/19 +add china_ip_route 202.149.224.0/19 +add china_ip_route 202.150.16.0/20 +add china_ip_route 202.150.32.0/20 +add china_ip_route 202.150.56.0/22 +add china_ip_route 202.150.192.0/20 +add china_ip_route 202.150.224.0/19 +add china_ip_route 202.151.0.0/22 +add china_ip_route 202.151.128.0/19 +add china_ip_route 202.152.176.0/20 +add china_ip_route 202.153.0.0/22 +add china_ip_route 202.153.7.0/24 +add china_ip_route 202.153.48.0/20 +add china_ip_route 202.157.192.0/19 +add china_ip_route 202.158.160.0/19 +add china_ip_route 202.158.242.0/24 +add china_ip_route 202.160.156.0/22 +add china_ip_route 202.160.176.0/20 +add china_ip_route 202.162.67.0/24 +add china_ip_route 202.162.75.0/24 +add china_ip_route 202.164.0.0/20 +add china_ip_route 202.164.96.0/19 +add china_ip_route 202.165.176.0/20 +add china_ip_route 202.165.208.0/20 +add china_ip_route 202.165.239.0/24 +add china_ip_route 202.165.240.0/23 +add china_ip_route 202.165.243.0/24 +add china_ip_route 202.165.245.0/24 +add china_ip_route 202.165.251.0/24 +add china_ip_route 202.165.252.0/22 +add china_ip_route 202.166.224.0/19 +add china_ip_route 202.168.80.0/22 +add china_ip_route 202.168.128.0/20 +add china_ip_route 202.168.160.0/19 +add china_ip_route 202.170.128.0/19 +add china_ip_route 202.170.216.0/21 +add china_ip_route 202.170.224.0/19 +add china_ip_route 202.171.216.0/21 +add china_ip_route 202.171.232.0/24 +add china_ip_route 202.171.235.0/24 +add china_ip_route 202.172.0.0/22 +add china_ip_route 202.172.7.0/24 +add china_ip_route 202.173.0.0/22 +add china_ip_route 202.173.6.0/24 +add china_ip_route 202.173.8.0/21 +add china_ip_route 202.173.112.0/22 +add china_ip_route 202.173.224.0/19 +add china_ip_route 202.174.64.0/20 +add china_ip_route 202.174.124.0/22 +add china_ip_route 202.176.224.0/19 +add china_ip_route 202.179.160.0/20 +add china_ip_route 202.179.240.0/20 +add china_ip_route 202.180.128.0/19 +add china_ip_route 202.180.208.0/21 +add china_ip_route 202.181.8.0/22 +add china_ip_route 202.181.28.0/22 +add china_ip_route 202.181.112.0/20 +add china_ip_route 202.182.32.0/20 +add china_ip_route 202.182.192.0/19 +add china_ip_route 202.189.0.0/18 +add china_ip_route 202.189.80.0/20 +add china_ip_route 202.189.184.0/21 +add china_ip_route 202.191.0.0/24 +add china_ip_route 202.191.68.0/22 +add china_ip_route 202.191.72.0/21 +add china_ip_route 202.191.80.0/20 +add china_ip_route 202.192.0.0/12 +add china_ip_route 203.0.4.0/22 +add china_ip_route 203.0.10.0/23 +add china_ip_route 203.0.18.0/24 +add china_ip_route 203.0.24.0/24 +add china_ip_route 203.0.42.0/23 +add china_ip_route 203.0.45.0/24 +add china_ip_route 203.0.46.0/23 +add china_ip_route 203.0.81.0/24 +add china_ip_route 203.0.82.0/23 +add china_ip_route 203.0.90.0/23 +add china_ip_route 203.0.96.0/23 +add china_ip_route 203.0.104.0/21 +add china_ip_route 203.0.114.0/23 +add china_ip_route 203.0.122.0/24 +add china_ip_route 203.0.128.0/24 +add china_ip_route 203.0.130.0/23 +add china_ip_route 203.0.132.0/22 +add china_ip_route 203.0.137.0/24 +add china_ip_route 203.0.142.0/24 +add china_ip_route 203.0.144.0/24 +add china_ip_route 203.0.146.0/24 +add china_ip_route 203.0.148.0/24 +add china_ip_route 203.0.150.0/23 +add china_ip_route 203.0.152.0/24 +add china_ip_route 203.0.177.0/24 +add china_ip_route 203.0.224.0/24 +add china_ip_route 203.1.4.0/22 +add china_ip_route 203.1.18.0/24 +add china_ip_route 203.1.26.0/23 +add china_ip_route 203.1.65.0/24 +add china_ip_route 203.1.66.0/23 +add china_ip_route 203.1.70.0/23 +add china_ip_route 203.1.76.0/23 +add china_ip_route 203.1.90.0/24 +add china_ip_route 203.1.97.0/24 +add china_ip_route 203.1.98.0/23 +add china_ip_route 203.1.100.0/22 +add china_ip_route 203.1.108.0/24 +add china_ip_route 203.1.253.0/24 +add china_ip_route 203.1.254.0/24 +add china_ip_route 203.2.64.0/21 +add china_ip_route 203.2.73.0/24 +add china_ip_route 203.2.112.0/21 +add china_ip_route 203.2.126.0/23 +add china_ip_route 203.2.140.0/24 +add china_ip_route 203.2.150.0/24 +add china_ip_route 203.2.152.0/22 +add china_ip_route 203.2.156.0/23 +add china_ip_route 203.2.160.0/21 +add china_ip_route 203.2.180.0/23 +add china_ip_route 203.2.196.0/23 +add china_ip_route 203.2.209.0/24 +add china_ip_route 203.2.214.0/23 +add china_ip_route 203.2.226.0/23 +add china_ip_route 203.2.229.0/24 +add china_ip_route 203.2.236.0/23 +add china_ip_route 203.3.68.0/24 +add china_ip_route 203.3.72.0/23 +add china_ip_route 203.3.75.0/24 +add china_ip_route 203.3.80.0/21 +add china_ip_route 203.3.96.0/22 +add china_ip_route 203.3.105.0/24 +add china_ip_route 203.3.112.0/21 +add china_ip_route 203.3.120.0/24 +add china_ip_route 203.3.123.0/24 +add china_ip_route 203.3.135.0/24 +add china_ip_route 203.3.139.0/24 +add china_ip_route 203.3.143.0/24 +add china_ip_route 203.4.132.0/23 +add china_ip_route 203.4.134.0/24 +add china_ip_route 203.4.151.0/24 +add china_ip_route 203.4.152.0/22 +add china_ip_route 203.4.174.0/23 +add china_ip_route 203.4.180.0/24 +add china_ip_route 203.4.186.0/24 +add china_ip_route 203.4.205.0/24 +add china_ip_route 203.4.208.0/22 +add china_ip_route 203.4.227.0/24 +add china_ip_route 203.4.230.0/23 +add china_ip_route 203.5.4.0/23 +add china_ip_route 203.5.7.0/24 +add china_ip_route 203.5.8.0/23 +add china_ip_route 203.5.11.0/24 +add china_ip_route 203.5.21.0/24 +add china_ip_route 203.5.22.0/24 +add china_ip_route 203.5.44.0/24 +add china_ip_route 203.5.46.0/23 +add china_ip_route 203.5.52.0/22 +add china_ip_route 203.5.56.0/23 +add china_ip_route 203.5.60.0/23 +add china_ip_route 203.5.114.0/23 +add china_ip_route 203.5.118.0/24 +add china_ip_route 203.5.120.0/24 +add china_ip_route 203.5.172.0/24 +add china_ip_route 203.5.180.0/23 +add china_ip_route 203.5.182.0/24 +add china_ip_route 203.5.185.0/24 +add china_ip_route 203.5.186.0/24 +add china_ip_route 203.5.188.0/23 +add china_ip_route 203.5.190.0/24 +add china_ip_route 203.5.195.0/24 +add china_ip_route 203.5.214.0/23 +add china_ip_route 203.5.218.0/23 +add china_ip_route 203.6.131.0/24 +add china_ip_route 203.6.136.0/24 +add china_ip_route 203.6.138.0/23 +add china_ip_route 203.6.142.0/24 +add china_ip_route 203.6.150.0/23 +add china_ip_route 203.6.157.0/24 +add china_ip_route 203.6.159.0/24 +add china_ip_route 203.6.224.0/20 +add china_ip_route 203.6.248.0/23 +add china_ip_route 203.7.129.0/24 +add china_ip_route 203.7.138.0/23 +add china_ip_route 203.7.147.0/24 +add china_ip_route 203.7.150.0/23 +add china_ip_route 203.7.158.0/24 +add china_ip_route 203.7.192.0/23 +add china_ip_route 203.7.200.0/24 +add china_ip_route 203.8.0.0/24 +add china_ip_route 203.8.8.0/24 +add china_ip_route 203.8.23.0/24 +add china_ip_route 203.8.70.0/24 +add china_ip_route 203.8.82.0/24 +add china_ip_route 203.8.86.0/23 +add china_ip_route 203.8.91.0/24 +add china_ip_route 203.8.110.0/23 +add china_ip_route 203.8.115.0/24 +add china_ip_route 203.8.166.0/23 +add china_ip_route 203.8.169.0/24 +add china_ip_route 203.8.173.0/24 +add china_ip_route 203.8.184.0/24 +add china_ip_route 203.8.186.0/23 +add china_ip_route 203.8.190.0/23 +add china_ip_route 203.8.192.0/24 +add china_ip_route 203.8.197.0/24 +add china_ip_route 203.8.198.0/23 +add china_ip_route 203.8.203.0/24 +add china_ip_route 203.8.209.0/24 +add china_ip_route 203.8.210.0/23 +add china_ip_route 203.8.212.0/22 +add china_ip_route 203.8.217.0/24 +add china_ip_route 203.8.220.0/24 +add china_ip_route 203.9.32.0/24 +add china_ip_route 203.9.36.0/23 +add china_ip_route 203.9.57.0/24 +add china_ip_route 203.9.63.0/24 +add china_ip_route 203.9.65.0/24 +add china_ip_route 203.9.70.0/23 +add china_ip_route 203.9.72.0/24 +add china_ip_route 203.9.75.0/24 +add china_ip_route 203.9.76.0/23 +add china_ip_route 203.9.96.0/22 +add china_ip_route 203.9.100.0/23 +add china_ip_route 203.9.108.0/24 +add china_ip_route 203.9.158.0/24 +add china_ip_route 203.10.34.0/24 +add china_ip_route 203.10.56.0/24 +add china_ip_route 203.10.74.0/23 +add china_ip_route 203.10.84.0/22 +add china_ip_route 203.10.88.0/24 +add china_ip_route 203.10.95.0/24 +add china_ip_route 203.10.125.0/24 +add china_ip_route 203.11.70.0/24 +add china_ip_route 203.11.76.0/22 +add china_ip_route 203.11.82.0/24 +add china_ip_route 203.11.84.0/22 +add china_ip_route 203.11.100.0/22 +add china_ip_route 203.11.109.0/24 +add china_ip_route 203.11.117.0/24 +add china_ip_route 203.11.122.0/24 +add china_ip_route 203.11.126.0/24 +add china_ip_route 203.11.136.0/22 +add china_ip_route 203.11.141.0/24 +add china_ip_route 203.11.142.0/23 +add china_ip_route 203.11.180.0/22 +add china_ip_route 203.11.208.0/22 +add china_ip_route 203.12.16.0/24 +add china_ip_route 203.12.19.0/24 +add china_ip_route 203.12.24.0/24 +add china_ip_route 203.12.57.0/24 +add china_ip_route 203.12.65.0/24 +add china_ip_route 203.12.66.0/24 +add china_ip_route 203.12.70.0/23 +add china_ip_route 203.12.87.0/24 +add china_ip_route 203.12.100.0/23 +add china_ip_route 203.12.103.0/24 +add china_ip_route 203.12.114.0/24 +add china_ip_route 203.12.118.0/24 +add china_ip_route 203.12.130.0/24 +add china_ip_route 203.12.137.0/24 +add china_ip_route 203.12.196.0/22 +add china_ip_route 203.12.211.0/24 +add china_ip_route 203.12.219.0/24 +add china_ip_route 203.12.226.0/24 +add china_ip_route 203.12.240.0/22 +add china_ip_route 203.13.18.0/24 +add china_ip_route 203.13.24.0/24 +add china_ip_route 203.13.44.0/23 +add china_ip_route 203.13.88.0/23 +add china_ip_route 203.13.92.0/22 +add china_ip_route 203.13.173.0/24 +add china_ip_route 203.13.224.0/23 +add china_ip_route 203.13.227.0/24 +add china_ip_route 203.13.233.0/24 +add china_ip_route 203.14.24.0/22 +add china_ip_route 203.14.33.0/24 +add china_ip_route 203.14.56.0/24 +add china_ip_route 203.14.61.0/24 +add china_ip_route 203.14.62.0/24 +add china_ip_route 203.14.104.0/24 +add china_ip_route 203.14.114.0/23 +add china_ip_route 203.14.118.0/24 +add china_ip_route 203.14.162.0/24 +add china_ip_route 203.14.184.0/21 +add china_ip_route 203.14.192.0/24 +add china_ip_route 203.14.194.0/23 +add china_ip_route 203.14.214.0/24 +add china_ip_route 203.14.231.0/24 +add china_ip_route 203.14.246.0/24 +add china_ip_route 203.15.0.0/20 +add china_ip_route 203.15.20.0/23 +add china_ip_route 203.15.22.0/24 +add china_ip_route 203.15.87.0/24 +add china_ip_route 203.15.88.0/23 +add china_ip_route 203.15.105.0/24 +add china_ip_route 203.15.112.0/21 +add china_ip_route 203.15.130.0/23 +add china_ip_route 203.15.149.0/24 +add china_ip_route 203.15.151.0/24 +add china_ip_route 203.15.156.0/22 +add china_ip_route 203.15.174.0/24 +add china_ip_route 203.15.227.0/24 +add china_ip_route 203.15.232.0/22 +add china_ip_route 203.15.238.0/23 +add china_ip_route 203.15.240.0/23 +add china_ip_route 203.15.246.0/24 +add china_ip_route 203.16.10.0/24 +add china_ip_route 203.16.12.0/23 +add china_ip_route 203.16.16.0/21 +add china_ip_route 203.16.27.0/24 +add china_ip_route 203.16.38.0/24 +add china_ip_route 203.16.49.0/24 +add china_ip_route 203.16.50.0/23 +add china_ip_route 203.16.58.0/24 +add china_ip_route 203.16.63.0/24 +add china_ip_route 203.16.133.0/24 +add china_ip_route 203.16.161.0/24 +add china_ip_route 203.16.162.0/24 +add china_ip_route 203.16.186.0/23 +add china_ip_route 203.16.228.0/24 +add china_ip_route 203.16.238.0/24 +add china_ip_route 203.16.240.0/24 +add china_ip_route 203.16.245.0/24 +add china_ip_route 203.17.2.0/24 +add china_ip_route 203.17.18.0/24 +add china_ip_route 203.17.28.0/24 +add china_ip_route 203.17.39.0/24 +add china_ip_route 203.17.56.0/24 +add china_ip_route 203.17.74.0/23 +add china_ip_route 203.17.88.0/23 +add china_ip_route 203.17.136.0/24 +add china_ip_route 203.17.164.0/24 +add china_ip_route 203.17.187.0/24 +add china_ip_route 203.17.190.0/23 +add china_ip_route 203.17.231.0/24 +add china_ip_route 203.17.233.0/24 +add china_ip_route 203.17.248.0/23 +add china_ip_route 203.17.255.0/24 +add china_ip_route 203.18.2.0/23 +add china_ip_route 203.18.4.0/24 +add china_ip_route 203.18.7.0/24 +add china_ip_route 203.18.31.0/24 +add china_ip_route 203.18.37.0/24 +add china_ip_route 203.18.48.0/23 +add china_ip_route 203.18.52.0/24 +add china_ip_route 203.18.72.0/22 +add china_ip_route 203.18.80.0/23 +add china_ip_route 203.18.87.0/24 +add china_ip_route 203.18.100.0/23 +add china_ip_route 203.18.105.0/24 +add china_ip_route 203.18.107.0/24 +add china_ip_route 203.18.110.0/24 +add china_ip_route 203.18.129.0/24 +add china_ip_route 203.18.131.0/24 +add china_ip_route 203.18.132.0/23 +add china_ip_route 203.18.144.0/24 +add china_ip_route 203.18.153.0/24 +add china_ip_route 203.18.199.0/24 +add china_ip_route 203.18.208.0/24 +add china_ip_route 203.18.211.0/24 +add china_ip_route 203.18.215.0/24 +add china_ip_route 203.19.1.0/24 +add china_ip_route 203.19.18.0/24 +add china_ip_route 203.19.24.0/24 +add china_ip_route 203.19.30.0/24 +add china_ip_route 203.19.41.0/24 +add china_ip_route 203.19.44.0/23 +add china_ip_route 203.19.46.0/24 +add china_ip_route 203.19.58.0/24 +add china_ip_route 203.19.60.0/23 +add china_ip_route 203.19.64.0/24 +add china_ip_route 203.19.68.0/24 +add china_ip_route 203.19.72.0/24 +add china_ip_route 203.19.101.0/24 +add china_ip_route 203.19.111.0/24 +add china_ip_route 203.19.131.0/24 +add china_ip_route 203.19.133.0/24 +add china_ip_route 203.19.144.0/24 +add china_ip_route 203.19.147.0/24 +add china_ip_route 203.19.149.0/24 +add china_ip_route 203.19.156.0/24 +add china_ip_route 203.19.176.0/24 +add china_ip_route 203.19.178.0/23 +add china_ip_route 203.19.208.0/24 +add china_ip_route 203.19.228.0/22 +add china_ip_route 203.19.233.0/24 +add china_ip_route 203.19.242.0/24 +add china_ip_route 203.19.248.0/23 +add china_ip_route 203.19.255.0/24 +add china_ip_route 203.20.17.0/24 +add china_ip_route 203.20.40.0/23 +add china_ip_route 203.20.44.0/24 +add china_ip_route 203.20.48.0/24 +add china_ip_route 203.20.61.0/24 +add china_ip_route 203.20.65.0/24 +add china_ip_route 203.20.84.0/23 +add china_ip_route 203.20.89.0/24 +add china_ip_route 203.20.106.0/23 +add china_ip_route 203.20.115.0/24 +add china_ip_route 203.20.117.0/24 +add china_ip_route 203.20.118.0/23 +add china_ip_route 203.20.122.0/24 +add china_ip_route 203.20.126.0/23 +add china_ip_route 203.20.135.0/24 +add china_ip_route 203.20.140.0/22 +add china_ip_route 203.20.150.0/24 +add china_ip_route 203.20.230.0/24 +add china_ip_route 203.20.232.0/24 +add china_ip_route 203.20.236.0/24 +add china_ip_route 203.21.0.0/23 +add china_ip_route 203.21.2.0/24 +add china_ip_route 203.21.8.0/24 +add china_ip_route 203.21.10.0/24 +add china_ip_route 203.21.18.0/24 +add china_ip_route 203.21.33.0/24 +add china_ip_route 203.21.34.0/24 +add china_ip_route 203.21.41.0/24 +add china_ip_route 203.21.44.0/24 +add china_ip_route 203.21.68.0/24 +add china_ip_route 203.21.82.0/24 +add china_ip_route 203.21.96.0/22 +add china_ip_route 203.21.124.0/24 +add china_ip_route 203.21.136.0/23 +add china_ip_route 203.21.145.0/24 +add china_ip_route 203.21.206.0/24 +add china_ip_route 203.22.24.0/24 +add china_ip_route 203.22.28.0/23 +add china_ip_route 203.22.31.0/24 +add china_ip_route 203.22.68.0/24 +add china_ip_route 203.22.76.0/24 +add china_ip_route 203.22.84.0/24 +add china_ip_route 203.22.87.0/24 +add china_ip_route 203.22.92.0/22 +add china_ip_route 203.22.99.0/24 +add china_ip_route 203.22.106.0/24 +add china_ip_route 203.22.122.0/23 +add china_ip_route 203.22.131.0/24 +add china_ip_route 203.22.163.0/24 +add china_ip_route 203.22.166.0/24 +add china_ip_route 203.22.170.0/24 +add china_ip_route 203.22.176.0/22 +add china_ip_route 203.22.180.0/23 +add china_ip_route 203.22.182.0/30 +add china_ip_route 203.22.182.6/31 +add china_ip_route 203.22.182.8/29 +add china_ip_route 203.22.182.18/31 +add china_ip_route 203.22.182.20/30 +add china_ip_route 203.22.182.24/29 +add china_ip_route 203.22.182.32/27 +add china_ip_route 203.22.182.64/26 +add china_ip_route 203.22.182.128/25 +add china_ip_route 203.22.183.0/24 +add china_ip_route 203.22.194.0/24 +add china_ip_route 203.22.242.0/23 +add china_ip_route 203.22.245.0/24 +add china_ip_route 203.22.246.0/24 +add china_ip_route 203.22.252.0/23 +add china_ip_route 203.23.0.0/24 +add china_ip_route 203.23.47.0/24 +add china_ip_route 203.23.61.0/24 +add china_ip_route 203.23.62.0/23 +add china_ip_route 203.23.73.0/24 +add china_ip_route 203.23.85.0/24 +add china_ip_route 203.23.92.0/22 +add china_ip_route 203.23.98.0/24 +add china_ip_route 203.23.107.0/24 +add china_ip_route 203.23.112.0/24 +add china_ip_route 203.23.130.0/24 +add china_ip_route 203.23.140.0/23 +add china_ip_route 203.23.172.0/24 +add china_ip_route 203.23.182.0/24 +add china_ip_route 203.23.186.0/23 +add china_ip_route 203.23.192.0/24 +add china_ip_route 203.23.197.0/24 +add china_ip_route 203.23.198.0/24 +add china_ip_route 203.23.204.0/22 +add china_ip_route 203.23.224.0/24 +add china_ip_route 203.23.226.0/23 +add china_ip_route 203.23.228.0/22 +add china_ip_route 203.23.249.0/24 +add china_ip_route 203.23.251.0/24 +add china_ip_route 203.24.13.0/24 +add china_ip_route 203.24.18.0/24 +add china_ip_route 203.24.27.0/24 +add china_ip_route 203.24.43.0/24 +add china_ip_route 203.24.56.0/24 +add china_ip_route 203.24.58.0/24 +add china_ip_route 203.24.67.0/24 +add china_ip_route 203.24.74.0/24 +add china_ip_route 203.24.79.0/24 +add china_ip_route 203.24.80.0/23 +add china_ip_route 203.24.84.0/23 +add china_ip_route 203.24.86.0/24 +add china_ip_route 203.24.90.0/24 +add china_ip_route 203.24.111.0/24 +add china_ip_route 203.24.112.0/24 +add china_ip_route 203.24.116.0/24 +add china_ip_route 203.24.122.0/23 +add china_ip_route 203.24.145.0/24 +add china_ip_route 203.24.152.0/23 +add china_ip_route 203.24.157.0/24 +add china_ip_route 203.24.161.0/24 +add china_ip_route 203.24.167.0/24 +add china_ip_route 203.24.186.0/23 +add china_ip_route 203.24.199.0/24 +add china_ip_route 203.24.202.0/24 +add china_ip_route 203.24.212.0/23 +add china_ip_route 203.24.217.0/24 +add china_ip_route 203.24.219.0/24 +add china_ip_route 203.24.244.0/24 +add china_ip_route 203.25.19.0/24 +add china_ip_route 203.25.20.0/23 +add china_ip_route 203.25.46.0/24 +add china_ip_route 203.25.64.0/23 +add china_ip_route 203.25.91.0/24 +add china_ip_route 203.25.99.0/24 +add china_ip_route 203.25.100.0/24 +add china_ip_route 203.25.106.0/24 +add china_ip_route 203.25.131.0/24 +add china_ip_route 203.25.135.0/24 +add china_ip_route 203.25.138.0/24 +add china_ip_route 203.25.147.0/24 +add china_ip_route 203.25.153.0/24 +add china_ip_route 203.25.154.0/23 +add china_ip_route 203.25.164.0/24 +add china_ip_route 203.25.166.0/24 +add china_ip_route 203.25.174.0/23 +add china_ip_route 203.25.180.0/24 +add china_ip_route 203.25.182.0/24 +add china_ip_route 203.25.191.0/24 +add china_ip_route 203.25.199.0/24 +add china_ip_route 203.25.200.0/24 +add china_ip_route 203.25.202.0/23 +add china_ip_route 203.25.208.0/20 +add china_ip_route 203.25.229.0/24 +add china_ip_route 203.25.235.0/24 +add china_ip_route 203.25.236.0/24 +add china_ip_route 203.25.242.0/24 +add china_ip_route 203.26.12.0/24 +add china_ip_route 203.26.34.0/24 +add china_ip_route 203.26.49.0/24 +add china_ip_route 203.26.50.0/24 +add china_ip_route 203.26.55.0/24 +add china_ip_route 203.26.56.0/23 +add china_ip_route 203.26.60.0/24 +add china_ip_route 203.26.65.0/24 +add china_ip_route 203.26.68.0/24 +add china_ip_route 203.26.76.0/24 +add china_ip_route 203.26.80.0/24 +add china_ip_route 203.26.84.0/24 +add china_ip_route 203.26.97.0/24 +add china_ip_route 203.26.102.0/23 +add china_ip_route 203.26.115.0/24 +add china_ip_route 203.26.116.0/24 +add china_ip_route 203.26.129.0/24 +add china_ip_route 203.26.143.0/24 +add china_ip_route 203.26.144.0/24 +add china_ip_route 203.26.148.0/23 +add china_ip_route 203.26.154.0/24 +add china_ip_route 203.26.158.0/23 +add china_ip_route 203.26.170.0/24 +add china_ip_route 203.26.173.0/24 +add china_ip_route 203.26.176.0/24 +add china_ip_route 203.26.185.0/24 +add china_ip_route 203.26.202.0/23 +add china_ip_route 203.26.210.0/24 +add china_ip_route 203.26.214.0/24 +add china_ip_route 203.26.222.0/24 +add china_ip_route 203.26.224.0/24 +add china_ip_route 203.26.228.0/24 +add china_ip_route 203.26.232.0/24 +add china_ip_route 203.27.0.0/24 +add china_ip_route 203.27.10.0/24 +add china_ip_route 203.27.15.0/24 +add china_ip_route 203.27.16.0/24 +add china_ip_route 203.27.20.0/24 +add china_ip_route 203.27.22.0/23 +add china_ip_route 203.27.40.0/24 +add china_ip_route 203.27.45.0/24 +add china_ip_route 203.27.53.0/24 +add china_ip_route 203.27.65.0/24 +add china_ip_route 203.27.66.0/24 +add china_ip_route 203.27.81.0/24 +add china_ip_route 203.27.88.0/24 +add china_ip_route 203.27.102.0/24 +add china_ip_route 203.27.109.0/24 +add china_ip_route 203.27.117.0/24 +add china_ip_route 203.27.121.0/24 +add china_ip_route 203.27.122.0/23 +add china_ip_route 203.27.125.0/24 +add china_ip_route 203.27.200.0/24 +add china_ip_route 203.27.202.0/24 +add china_ip_route 203.27.233.0/24 +add china_ip_route 203.27.241.0/24 +add china_ip_route 203.27.250.0/24 +add china_ip_route 203.28.10.0/24 +add china_ip_route 203.28.12.0/24 +add china_ip_route 203.28.33.0/24 +add china_ip_route 203.28.34.0/23 +add china_ip_route 203.28.43.0/24 +add china_ip_route 203.28.44.0/24 +add china_ip_route 203.28.54.0/24 +add china_ip_route 203.28.56.0/24 +add china_ip_route 203.28.73.0/24 +add china_ip_route 203.28.74.0/24 +add china_ip_route 203.28.76.0/24 +add china_ip_route 203.28.86.0/24 +add china_ip_route 203.28.88.0/24 +add china_ip_route 203.28.112.0/24 +add china_ip_route 203.28.131.0/24 +add china_ip_route 203.28.136.0/24 +add china_ip_route 203.28.140.0/24 +add china_ip_route 203.28.145.0/24 +add china_ip_route 203.28.165.0/24 +add china_ip_route 203.28.169.0/24 +add china_ip_route 203.28.170.0/24 +add china_ip_route 203.28.178.0/23 +add china_ip_route 203.28.185.0/24 +add china_ip_route 203.28.187.0/24 +add china_ip_route 203.28.196.0/24 +add china_ip_route 203.28.226.0/23 +add china_ip_route 203.28.239.0/24 +add china_ip_route 203.29.2.0/24 +add china_ip_route 203.29.8.0/23 +add china_ip_route 203.29.13.0/24 +add china_ip_route 203.29.14.0/24 +add china_ip_route 203.29.28.0/24 +add china_ip_route 203.29.46.0/24 +add china_ip_route 203.29.57.0/24 +add china_ip_route 203.29.61.0/24 +add china_ip_route 203.29.63.0/24 +add china_ip_route 203.29.69.0/24 +add china_ip_route 203.29.73.0/24 +add china_ip_route 203.29.81.0/24 +add china_ip_route 203.29.90.0/24 +add china_ip_route 203.29.95.0/24 +add china_ip_route 203.29.100.0/24 +add china_ip_route 203.29.103.0/24 +add china_ip_route 203.29.112.0/24 +add china_ip_route 203.29.120.0/22 +add china_ip_route 203.29.182.0/23 +add china_ip_route 203.29.187.0/24 +add china_ip_route 203.29.189.0/24 +add china_ip_route 203.29.190.0/24 +add china_ip_route 203.29.205.0/24 +add china_ip_route 203.29.210.0/24 +add china_ip_route 203.29.217.0/24 +add china_ip_route 203.29.227.0/24 +add china_ip_route 203.29.231.0/24 +add china_ip_route 203.29.233.0/24 +add china_ip_route 203.29.234.0/24 +add china_ip_route 203.29.248.0/24 +add china_ip_route 203.29.254.0/23 +add china_ip_route 203.30.16.0/23 +add china_ip_route 203.30.25.0/24 +add china_ip_route 203.30.29.0/24 +add china_ip_route 203.30.66.0/24 +add china_ip_route 203.30.81.0/24 +add china_ip_route 203.30.87.0/24 +add china_ip_route 203.30.111.0/24 +add china_ip_route 203.30.121.0/24 +add china_ip_route 203.30.123.0/24 +add china_ip_route 203.30.152.0/24 +add china_ip_route 203.30.156.0/24 +add china_ip_route 203.30.162.0/24 +add china_ip_route 203.30.173.0/24 +add china_ip_route 203.30.175.0/24 +add china_ip_route 203.30.187.0/24 +add china_ip_route 203.30.194.0/24 +add china_ip_route 203.30.217.0/24 +add china_ip_route 203.30.220.0/24 +add china_ip_route 203.30.222.0/24 +add china_ip_route 203.30.232.0/23 +add china_ip_route 203.30.235.0/24 +add china_ip_route 203.30.240.0/23 +add china_ip_route 203.30.246.0/24 +add china_ip_route 203.30.250.0/23 +add china_ip_route 203.31.45.0/24 +add china_ip_route 203.31.46.0/24 +add china_ip_route 203.31.49.0/24 +add china_ip_route 203.31.51.0/24 +add china_ip_route 203.31.54.0/23 +add china_ip_route 203.31.69.0/24 +add china_ip_route 203.31.72.0/24 +add china_ip_route 203.31.80.0/24 +add china_ip_route 203.31.85.0/24 +add china_ip_route 203.31.97.0/24 +add china_ip_route 203.31.105.0/24 +add china_ip_route 203.31.106.0/24 +add china_ip_route 203.31.108.0/23 +add china_ip_route 203.31.124.0/24 +add china_ip_route 203.31.162.0/24 +add china_ip_route 203.31.174.0/24 +add china_ip_route 203.31.177.0/24 +add china_ip_route 203.31.181.0/24 +add china_ip_route 203.31.187.0/24 +add china_ip_route 203.31.189.0/24 +add china_ip_route 203.31.204.0/24 +add china_ip_route 203.31.220.0/24 +add china_ip_route 203.31.222.0/23 +add china_ip_route 203.31.225.0/24 +add china_ip_route 203.31.229.0/24 +add china_ip_route 203.31.248.0/23 +add china_ip_route 203.31.253.0/24 +add china_ip_route 203.32.20.0/24 +add china_ip_route 203.32.48.0/23 +add china_ip_route 203.32.56.0/24 +add china_ip_route 203.32.60.0/24 +add china_ip_route 203.32.62.0/24 +add china_ip_route 203.32.68.0/23 +add china_ip_route 203.32.76.0/24 +add china_ip_route 203.32.81.0/24 +add china_ip_route 203.32.84.0/23 +add china_ip_route 203.32.95.0/24 +add china_ip_route 203.32.102.0/24 +add china_ip_route 203.32.105.0/24 +add china_ip_route 203.32.130.0/24 +add china_ip_route 203.32.133.0/24 +add china_ip_route 203.32.140.0/24 +add china_ip_route 203.32.152.0/24 +add china_ip_route 203.32.186.0/23 +add china_ip_route 203.32.192.0/24 +add china_ip_route 203.32.196.0/24 +add china_ip_route 203.32.203.0/24 +add china_ip_route 203.32.204.0/23 +add china_ip_route 203.32.212.0/24 +add china_ip_route 203.33.4.0/24 +add china_ip_route 203.33.7.0/24 +add china_ip_route 203.33.12.0/23 +add china_ip_route 203.33.21.0/24 +add china_ip_route 203.33.26.0/24 +add china_ip_route 203.33.32.0/24 +add china_ip_route 203.33.63.0/24 +add china_ip_route 203.33.64.0/24 +add china_ip_route 203.33.67.0/24 +add china_ip_route 203.33.68.0/24 +add china_ip_route 203.33.73.0/24 +add china_ip_route 203.33.79.0/24 +add china_ip_route 203.33.100.0/24 +add china_ip_route 203.33.122.0/24 +add china_ip_route 203.33.129.0/24 +add china_ip_route 203.33.131.0/24 +add china_ip_route 203.33.145.0/24 +add china_ip_route 203.33.156.0/24 +add china_ip_route 203.33.158.0/23 +add china_ip_route 203.33.174.0/24 +add china_ip_route 203.33.185.0/24 +add china_ip_route 203.33.200.0/24 +add china_ip_route 203.33.202.0/23 +add china_ip_route 203.33.204.0/24 +add china_ip_route 203.33.206.0/23 +add china_ip_route 203.33.214.0/23 +add china_ip_route 203.33.224.0/23 +add china_ip_route 203.33.226.0/24 +add china_ip_route 203.33.233.0/24 +add china_ip_route 203.33.243.0/24 +add china_ip_route 203.33.250.0/24 +add china_ip_route 203.34.4.0/24 +add china_ip_route 203.34.21.0/24 +add china_ip_route 203.34.27.0/24 +add china_ip_route 203.34.39.0/24 +add china_ip_route 203.34.48.0/23 +add china_ip_route 203.34.54.0/24 +add china_ip_route 203.34.56.0/23 +add china_ip_route 203.34.67.0/24 +add china_ip_route 203.34.69.0/24 +add china_ip_route 203.34.76.0/24 +add china_ip_route 203.34.92.0/24 +add china_ip_route 203.34.106.0/24 +add china_ip_route 203.34.113.0/24 +add china_ip_route 203.34.147.0/24 +add china_ip_route 203.34.150.0/24 +add china_ip_route 203.34.152.0/23 +add china_ip_route 203.34.161.0/24 +add china_ip_route 203.34.162.0/24 +add china_ip_route 203.34.187.0/24 +add china_ip_route 203.34.192.0/22 +add china_ip_route 203.34.197.0/24 +add china_ip_route 203.34.198.0/23 +add china_ip_route 203.34.204.0/22 +add china_ip_route 203.34.232.0/24 +add china_ip_route 203.34.240.0/24 +add china_ip_route 203.34.242.0/24 +add china_ip_route 203.34.245.0/24 +add china_ip_route 203.34.251.0/24 +add china_ip_route 203.55.2.0/23 +add china_ip_route 203.55.4.0/24 +add china_ip_route 203.55.10.0/24 +add china_ip_route 203.55.13.0/24 +add china_ip_route 203.55.22.0/24 +add china_ip_route 203.55.30.0/24 +add china_ip_route 203.55.93.0/24 +add china_ip_route 203.55.101.0/24 +add china_ip_route 203.55.109.0/24 +add china_ip_route 203.55.110.0/24 +add china_ip_route 203.55.116.0/23 +add china_ip_route 203.55.119.0/24 +add china_ip_route 203.55.128.0/23 +add china_ip_route 203.55.146.0/23 +add china_ip_route 203.55.192.0/24 +add china_ip_route 203.55.196.0/24 +add china_ip_route 203.55.218.0/23 +add china_ip_route 203.55.221.0/24 +add china_ip_route 203.55.224.0/24 +add china_ip_route 203.56.1.0/24 +add china_ip_route 203.56.4.0/24 +add china_ip_route 203.56.12.0/24 +add china_ip_route 203.56.24.0/24 +add china_ip_route 203.56.38.0/24 +add china_ip_route 203.56.40.0/24 +add china_ip_route 203.56.46.0/24 +add china_ip_route 203.56.50.0/23 +add china_ip_route 203.56.52.0/22 +add china_ip_route 203.56.68.0/23 +add china_ip_route 203.56.82.0/23 +add china_ip_route 203.56.84.0/23 +add china_ip_route 203.56.95.0/24 +add china_ip_route 203.56.110.0/24 +add china_ip_route 203.56.121.0/24 +add china_ip_route 203.56.161.0/24 +add china_ip_route 203.56.169.0/24 +add china_ip_route 203.56.172.0/23 +add china_ip_route 203.56.175.0/24 +add china_ip_route 203.56.183.0/24 +add china_ip_route 203.56.185.0/24 +add china_ip_route 203.56.187.0/24 +add china_ip_route 203.56.192.0/24 +add china_ip_route 203.56.198.0/24 +add china_ip_route 203.56.201.0/24 +add china_ip_route 203.56.208.0/23 +add china_ip_route 203.56.210.0/24 +add china_ip_route 203.56.214.0/24 +add china_ip_route 203.56.216.0/24 +add china_ip_route 203.56.227.0/24 +add china_ip_route 203.56.228.0/24 +add china_ip_route 203.56.232.0/24 +add china_ip_route 203.56.240.0/24 +add china_ip_route 203.56.252.0/24 +add china_ip_route 203.56.254.0/24 +add china_ip_route 203.57.5.0/24 +add china_ip_route 203.57.6.0/24 +add china_ip_route 203.57.12.0/23 +add china_ip_route 203.57.28.0/24 +add china_ip_route 203.57.39.0/24 +add china_ip_route 203.57.46.0/24 +add china_ip_route 203.57.58.0/24 +add china_ip_route 203.57.61.0/24 +add china_ip_route 203.57.66.0/24 +add china_ip_route 203.57.69.0/24 +add china_ip_route 203.57.70.0/23 +add china_ip_route 203.57.73.0/24 +add china_ip_route 203.57.90.0/24 +add china_ip_route 203.57.101.0/24 +add china_ip_route 203.57.109.0/24 +add china_ip_route 203.57.123.0/24 +add china_ip_route 203.57.157.0/24 +add china_ip_route 203.57.200.0/24 +add china_ip_route 203.57.202.0/24 +add china_ip_route 203.57.206.0/24 +add china_ip_route 203.57.222.0/24 +add china_ip_route 203.57.224.0/20 +add china_ip_route 203.57.246.0/23 +add china_ip_route 203.57.249.0/24 +add china_ip_route 203.57.253.0/24 +add china_ip_route 203.57.254.0/23 +add china_ip_route 203.62.2.0/24 +add china_ip_route 203.62.131.0/24 +add china_ip_route 203.62.139.0/24 +add china_ip_route 203.62.161.0/24 +add china_ip_route 203.62.197.0/24 +add china_ip_route 203.62.228.0/22 +add china_ip_route 203.62.234.0/24 +add china_ip_route 203.62.246.0/24 +add china_ip_route 203.65.240.0/22 +add china_ip_route 203.76.160.0/22 +add china_ip_route 203.76.168.0/22 +add china_ip_route 203.76.208.0/21 +add china_ip_route 203.76.216.0/22 +add china_ip_route 203.76.240.0/22 +add china_ip_route 203.77.180.0/22 +add china_ip_route 203.78.48.0/20 +add china_ip_route 203.78.156.0/22 +add china_ip_route 203.79.0.0/20 +add china_ip_route 203.80.4.0/23 +add china_ip_route 203.80.32.0/20 +add china_ip_route 203.80.57.0/24 +add china_ip_route 203.80.129.0/24 +add china_ip_route 203.80.132.0/22 +add china_ip_route 203.80.140.0/22 +add china_ip_route 203.80.144.0/20 +add china_ip_route 203.81.0.0/21 +add china_ip_route 203.81.16.0/20 +add china_ip_route 203.81.244.0/22 +add china_ip_route 203.82.0.0/23 +add china_ip_route 203.82.16.0/21 +add china_ip_route 203.82.112.0/20 +add china_ip_route 203.82.224.0/20 +add china_ip_route 203.83.0.0/22 +add china_ip_route 203.83.12.0/22 +add china_ip_route 203.83.56.0/21 +add china_ip_route 203.83.224.0/20 +add china_ip_route 203.86.0.0/17 +add china_ip_route 203.86.250.0/24 +add china_ip_route 203.86.254.0/23 +add china_ip_route 203.88.32.0/19 +add china_ip_route 203.88.100.0/22 +add china_ip_route 203.88.192.0/19 +add china_ip_route 203.89.0.0/22 +add china_ip_route 203.89.100.0/22 +add china_ip_route 203.89.136.0/22 +add china_ip_route 203.89.144.0/24 +add china_ip_route 203.90.0.0/22 +add china_ip_route 203.90.8.0/21 +add china_ip_route 203.90.128.0/18 +add china_ip_route 203.90.192.0/19 +add china_ip_route 203.91.32.0/19 +add china_ip_route 203.91.96.0/20 +add china_ip_route 203.91.120.0/21 +add china_ip_route 203.92.0.0/22 +add china_ip_route 203.92.6.0/24 +add china_ip_route 203.92.160.0/19 +add china_ip_route 203.93.0.0/16 +add china_ip_route 203.94.0.0/19 +add china_ip_route 203.95.0.0/21 +add china_ip_route 203.95.96.0/19 +add china_ip_route 203.95.128.0/18 +add china_ip_route 203.95.200.0/21 +add china_ip_route 203.95.208.0/22 +add china_ip_route 203.95.224.0/19 +add china_ip_route 203.99.8.0/21 +add china_ip_route 203.99.16.0/22 +add china_ip_route 203.99.30.0/23 +add china_ip_route 203.99.80.0/20 +add china_ip_route 203.100.32.0/20 +add china_ip_route 203.100.58.0/24 +add china_ip_route 203.100.60.0/24 +add china_ip_route 203.100.63.0/24 +add china_ip_route 203.100.80.0/20 +add china_ip_route 203.100.96.0/19 +add china_ip_route 203.100.192.0/20 +add china_ip_route 203.104.32.0/20 +add china_ip_route 203.105.96.0/19 +add china_ip_route 203.105.128.0/19 +add china_ip_route 203.107.0.0/19 +add china_ip_route 203.107.32.0/20 +add china_ip_route 203.107.52.0/22 +add china_ip_route 203.107.56.0/21 +add china_ip_route 203.107.69.0/24 +add china_ip_route 203.107.70.0/23 +add china_ip_route 203.107.72.0/21 +add china_ip_route 203.107.80.0/20 +add china_ip_route 203.107.96.0/19 +add china_ip_route 203.110.160.0/19 +add china_ip_route 203.110.208.0/20 +add china_ip_route 203.110.232.0/23 +add china_ip_route 203.110.234.0/24 +add china_ip_route 203.114.80.0/20 +add china_ip_route 203.114.244.0/22 +add china_ip_route 203.118.192.0/19 +add china_ip_route 203.118.241.0/24 +add china_ip_route 203.118.248.0/22 +add china_ip_route 203.119.24.0/22 +add china_ip_route 203.119.28.0/23 +add china_ip_route 203.119.30.0/24 +add china_ip_route 203.119.32.0/24 +add china_ip_route 203.119.34.0/23 +add china_ip_route 203.119.80.0/22 +add china_ip_route 203.119.85.0/24 +add china_ip_route 203.119.113.0/24 +add china_ip_route 203.119.114.0/23 +add china_ip_route 203.119.116.0/22 +add china_ip_route 203.119.128.0/17 +add china_ip_route 203.123.58.0/24 +add china_ip_route 203.128.32.0/19 +add china_ip_route 203.128.96.0/19 +add china_ip_route 203.128.128.0/24 +add china_ip_route 203.128.225.0/24 +add china_ip_route 203.128.226.0/23 +add china_ip_route 203.128.228.0/22 +add china_ip_route 203.130.32.0/20 +add china_ip_route 203.130.49.0/24 +add china_ip_route 203.130.51.0/24 +add china_ip_route 203.130.53.0/24 +add china_ip_route 203.130.54.0/23 +add china_ip_route 203.130.56.0/22 +add china_ip_route 203.130.60.0/23 +add china_ip_route 203.132.32.0/19 +add china_ip_route 203.134.240.0/22 +add china_ip_route 203.134.246.0/23 +add china_ip_route 203.135.96.0/19 +add china_ip_route 203.135.160.0/20 +add china_ip_route 203.142.12.0/23 +add china_ip_route 203.142.219.0/24 +add china_ip_route 203.142.224.0/19 +add china_ip_route 203.144.96.0/19 +add china_ip_route 203.145.0.0/19 +add china_ip_route 203.148.0.0/18 +add china_ip_route 203.148.64.0/20 +add china_ip_route 203.148.80.0/22 +add china_ip_route 203.148.86.0/23 +add china_ip_route 203.149.92.0/22 +add china_ip_route 203.152.64.0/19 +add china_ip_route 203.152.128.0/19 +add china_ip_route 203.153.0.0/22 +add china_ip_route 203.156.192.0/18 +add china_ip_route 203.158.16.0/21 +add china_ip_route 203.160.129.0/24 +add china_ip_route 203.160.192.0/19 +add china_ip_route 203.161.0.0/22 +add china_ip_route 203.161.180.0/24 +add china_ip_route 203.161.183.0/24 +add china_ip_route 203.161.192.0/19 +add china_ip_route 203.166.160.0/19 +add china_ip_route 203.167.28.0/22 +add china_ip_route 203.168.0.0/19 +add china_ip_route 203.170.58.0/23 +add china_ip_route 203.171.0.0/22 +add china_ip_route 203.171.208.0/24 +add china_ip_route 203.171.224.0/20 +add china_ip_route 203.174.4.0/24 +add china_ip_route 203.174.6.0/24 +add china_ip_route 203.174.96.0/20 +add china_ip_route 203.175.128.0/19 +add china_ip_route 203.175.192.0/18 +add china_ip_route 203.176.0.0/18 +add china_ip_route 203.176.64.0/19 +add china_ip_route 203.176.168.0/21 +add china_ip_route 203.184.80.0/20 +add china_ip_route 203.187.160.0/19 +add china_ip_route 203.189.0.0/23 +add china_ip_route 203.189.6.0/23 +add china_ip_route 203.189.112.0/22 +add china_ip_route 203.189.192.0/19 +add china_ip_route 203.189.240.0/22 +add china_ip_route 203.190.96.0/20 +add china_ip_route 203.190.249.0/24 +add china_ip_route 203.191.0.0/23 +add china_ip_route 203.191.2.0/24 +add china_ip_route 203.191.5.0/24 +add china_ip_route 203.191.7.0/24 +add china_ip_route 203.191.29.0/24 +add china_ip_route 203.191.31.0/24 +add china_ip_route 203.191.64.0/18 +add china_ip_route 203.191.133.0/24 +add china_ip_route 203.191.144.0/20 +add china_ip_route 203.192.0.0/19 +add china_ip_route 203.193.224.0/19 +add china_ip_route 203.195.64.0/19 +add china_ip_route 203.195.128.0/17 +add china_ip_route 203.196.0.0/21 +add china_ip_route 203.196.12.0/22 +add china_ip_route 203.196.28.0/22 +add china_ip_route 203.201.181.0/24 +add china_ip_route 203.201.182.0/24 +add china_ip_route 203.202.236.0/22 +add china_ip_route 203.205.64.0/19 +add china_ip_route 203.207.64.0/18 +add china_ip_route 203.207.128.0/17 +add china_ip_route 203.208.0.0/20 +add china_ip_route 203.208.16.0/22 +add china_ip_route 203.208.32.0/19 +add china_ip_route 203.209.224.0/19 +add china_ip_route 203.212.0.0/20 +add china_ip_route 203.212.80.0/20 +add china_ip_route 203.217.164.0/22 +add china_ip_route 203.223.0.0/20 +add china_ip_route 204.55.160.0/24 +add china_ip_route 204.74.96.0/24 +add china_ip_route 204.114.176.0/23 +add china_ip_route 207.89.20.0/24 +add china_ip_route 210.2.0.0/23 +add china_ip_route 210.2.2.0/24 +add china_ip_route 210.2.5.0/24 +add china_ip_route 210.2.6.0/23 +add china_ip_route 210.2.8.0/21 +add china_ip_route 210.2.24.0/21 +add china_ip_route 210.5.0.0/19 +add china_ip_route 210.5.60.0/24 +add china_ip_route 210.5.128.0/19 +add china_ip_route 210.7.56.0/21 +add china_ip_route 210.12.0.0/15 +add china_ip_route 210.14.64.0/19 +add china_ip_route 210.14.112.0/20 +add china_ip_route 210.14.128.0/17 +add china_ip_route 210.15.0.0/17 +add china_ip_route 210.15.128.0/18 +add china_ip_route 210.16.128.0/21 +add china_ip_route 210.16.136.0/22 +add china_ip_route 210.16.156.0/22 +add china_ip_route 210.16.160.0/19 +add china_ip_route 210.21.0.0/16 +add china_ip_route 210.22.0.0/16 +add china_ip_route 210.23.32.0/19 +add china_ip_route 210.25.0.0/16 +add china_ip_route 210.26.0.0/15 +add china_ip_route 210.28.0.0/14 +add china_ip_route 210.32.0.0/12 +add china_ip_route 210.51.0.0/16 +add china_ip_route 210.52.0.0/18 +add china_ip_route 210.52.64.0/23 +add china_ip_route 210.52.66.0/24 +add china_ip_route 210.52.68.0/22 +add china_ip_route 210.52.72.0/21 +add china_ip_route 210.52.80.0/20 +add china_ip_route 210.52.96.0/21 +add china_ip_route 210.52.104.0/22 +add china_ip_route 210.52.108.0/24 +add china_ip_route 210.52.110.0/23 +add china_ip_route 210.52.112.0/20 +add china_ip_route 210.52.128.0/17 +add china_ip_route 210.53.0.0/16 +add china_ip_route 210.56.192.0/19 +add china_ip_route 210.72.0.0/14 +add china_ip_route 210.76.0.0/15 +add china_ip_route 210.78.0.0/16 +add china_ip_route 210.79.64.0/18 +add china_ip_route 210.79.224.0/19 +add china_ip_route 210.82.0.0/15 +add china_ip_route 210.87.128.0/18 +add china_ip_route 210.185.192.0/18 +add china_ip_route 210.192.96.0/19 +add china_ip_route 211.64.0.0/13 +add china_ip_route 211.80.0.0/12 +add china_ip_route 211.96.0.0/14 +add china_ip_route 211.100.0.0/17 +add china_ip_route 211.100.128.0/19 +add china_ip_route 211.100.160.0/20 +add china_ip_route 211.100.184.0/21 +add china_ip_route 211.100.192.0/18 +add china_ip_route 211.101.0.0/16 +add china_ip_route 211.102.0.0/15 +add china_ip_route 211.136.0.0/13 +add china_ip_route 211.144.0.0/13 +add china_ip_route 211.152.0.0/17 +add china_ip_route 211.152.134.0/23 +add china_ip_route 211.152.140.0/22 +add china_ip_route 211.152.150.0/23 +add china_ip_route 211.152.157.0/24 +add china_ip_route 211.152.160.0/19 +add china_ip_route 211.152.192.0/18 +add china_ip_route 211.153.0.0/16 +add china_ip_route 211.154.0.0/19 +add china_ip_route 211.154.32.0/20 +add china_ip_route 211.154.48.0/21 +add china_ip_route 211.154.64.0/18 +add china_ip_route 211.154.128.0/17 +add china_ip_route 211.155.0.0/18 +add china_ip_route 211.155.67.0/24 +add china_ip_route 211.155.68.0/24 +add china_ip_route 211.155.72.0/21 +add china_ip_route 211.155.80.0/20 +add china_ip_route 211.155.97.0/24 +add china_ip_route 211.155.98.0/23 +add china_ip_route 211.155.100.0/22 +add china_ip_route 211.155.104.0/21 +add china_ip_route 211.155.113.0/24 +add china_ip_route 211.155.116.0/22 +add china_ip_route 211.155.120.0/21 +add china_ip_route 211.155.128.0/17 +add china_ip_route 211.156.0.0/18 +add china_ip_route 211.156.64.0/19 +add china_ip_route 211.156.96.0/21 +add china_ip_route 211.156.104.0/22 +add china_ip_route 211.156.108.0/23 +add china_ip_route 211.156.112.0/20 +add china_ip_route 211.156.128.0/17 +add china_ip_route 211.157.0.0/16 +add china_ip_route 211.158.0.0/15 +add china_ip_route 211.160.0.0/13 +add china_ip_route 212.64.0.0/17 +add china_ip_route 212.129.128.0/17 +add china_ip_route 213.199.169.0/24 +add china_ip_route 218.0.0.0/12 +add china_ip_route 218.16.0.0/13 +add china_ip_route 218.24.0.0/14 +add china_ip_route 218.28.0.0/15 +add china_ip_route 218.30.0.0/19 +add china_ip_route 218.30.64.0/18 +add china_ip_route 218.30.128.0/18 +add china_ip_route 218.30.192.0/19 +add china_ip_route 218.30.224.0/20 +add china_ip_route 218.30.240.0/21 +add china_ip_route 218.30.248.0/22 +add china_ip_route 218.30.252.0/25 +add china_ip_route 218.30.252.128/26 +add china_ip_route 218.30.252.194/31 +add china_ip_route 218.30.252.196/30 +add china_ip_route 218.30.252.200/29 +add china_ip_route 218.30.252.208/28 +add china_ip_route 218.30.252.224/27 +add china_ip_route 218.30.253.0/24 +add china_ip_route 218.30.254.0/23 +add china_ip_route 218.31.0.0/16 +add china_ip_route 218.56.0.0/13 +add china_ip_route 218.64.0.0/11 +add china_ip_route 218.96.0.0/15 +add china_ip_route 218.98.0.0/18 +add china_ip_route 218.98.96.0/19 +add china_ip_route 218.98.128.0/19 +add china_ip_route 218.98.192.0/18 +add china_ip_route 218.99.0.0/16 +add china_ip_route 218.100.96.0/19 +add china_ip_route 218.100.128.0/17 +add china_ip_route 218.104.0.0/14 +add china_ip_route 218.108.0.0/15 +add china_ip_route 218.185.192.0/19 +add china_ip_route 218.192.0.0/12 +add china_ip_route 218.240.0.0/14 +add china_ip_route 218.244.0.0/15 +add china_ip_route 218.246.0.0/19 +add china_ip_route 218.246.32.0/20 +add china_ip_route 218.246.48.0/21 +add china_ip_route 218.246.56.0/23 +add china_ip_route 218.246.58.0/24 +add china_ip_route 218.246.60.0/22 +add china_ip_route 218.246.64.0/18 +add china_ip_route 218.246.129.0/24 +add china_ip_route 218.246.131.0/24 +add china_ip_route 218.246.132.0/23 +add china_ip_route 218.246.134.0/24 +add china_ip_route 218.246.139.0/24 +add china_ip_route 218.246.144.0/20 +add china_ip_route 218.246.160.0/19 +add china_ip_route 218.246.192.0/18 +add china_ip_route 218.247.0.0/18 +add china_ip_route 218.247.96.0/19 +add china_ip_route 218.247.128.0/17 +add china_ip_route 218.249.0.0/16 +add china_ip_route 219.72.0.0/16 +add china_ip_route 219.82.0.0/16 +add china_ip_route 219.83.128.0/17 +add china_ip_route 219.90.68.0/22 +add china_ip_route 219.90.72.0/21 +add china_ip_route 219.128.0.0/11 +add china_ip_route 219.216.0.0/13 +add china_ip_route 219.224.0.0/13 +add china_ip_route 219.232.0.0/15 +add china_ip_route 219.234.0.0/21 +add china_ip_route 219.234.9.0/24 +add china_ip_route 219.234.10.0/23 +add china_ip_route 219.234.12.0/22 +add china_ip_route 219.234.32.0/19 +add china_ip_route 219.234.64.0/18 +add china_ip_route 219.234.128.0/17 +add china_ip_route 219.235.0.0/16 +add china_ip_route 219.236.0.0/14 +add china_ip_route 219.242.0.0/15 +add china_ip_route 219.244.0.0/14 +add china_ip_route 220.101.192.0/18 +add china_ip_route 220.112.0.0/14 +add china_ip_route 220.152.128.0/17 +add china_ip_route 220.154.0.0/16 +add china_ip_route 220.155.0.0/21 +add china_ip_route 220.155.9.0/24 +add china_ip_route 220.155.10.0/23 +add china_ip_route 220.155.12.0/22 +add china_ip_route 220.155.16.0/21 +add china_ip_route 220.155.24.0/22 +add china_ip_route 220.155.28.0/23 +add china_ip_route 220.155.31.0/24 +add china_ip_route 220.155.32.0/19 +add china_ip_route 220.155.64.0/18 +add china_ip_route 220.155.128.0/17 +add china_ip_route 220.158.241.0/24 +add china_ip_route 220.158.243.0/24 +add china_ip_route 220.160.0.0/11 +add china_ip_route 220.192.0.0/12 +add china_ip_route 220.231.0.0/18 +add china_ip_route 220.231.128.0/17 +add china_ip_route 220.232.64.0/18 +add china_ip_route 220.234.0.0/16 +add china_ip_route 220.242.0.0/23 +add china_ip_route 220.242.6.0/24 +add china_ip_route 220.242.8.0/24 +add china_ip_route 220.242.12.0/23 +add china_ip_route 220.242.14.0/24 +add china_ip_route 220.242.17.0/24 +add china_ip_route 220.242.18.0/23 +add china_ip_route 220.242.20.0/24 +add china_ip_route 220.242.32.0/20 +add china_ip_route 220.242.48.0/23 +add china_ip_route 220.242.53.0/24 +add china_ip_route 220.242.55.0/24 +add china_ip_route 220.242.56.0/22 +add china_ip_route 220.242.60.0/23 +add china_ip_route 220.242.62.0/24 +add china_ip_route 220.242.64.0/19 +add china_ip_route 220.242.96.0/20 +add china_ip_route 220.242.112.0/21 +add china_ip_route 220.242.120.0/22 +add china_ip_route 220.242.124.0/23 +add china_ip_route 220.242.126.0/24 +add china_ip_route 220.242.134.0/23 +add china_ip_route 220.242.173.0/24 +add china_ip_route 220.242.183.0/24 +add china_ip_route 220.242.197.0/24 +add china_ip_route 220.242.205.0/24 +add china_ip_route 220.242.207.0/24 +add china_ip_route 220.242.217.0/24 +add china_ip_route 220.242.218.0/23 +add china_ip_route 220.242.220.0/22 +add china_ip_route 220.242.224.0/19 +add china_ip_route 220.243.0.0/17 +add china_ip_route 220.243.128.0/18 +add china_ip_route 220.243.192.0/23 +add china_ip_route 220.243.196.0/24 +add china_ip_route 220.243.198.0/23 +add china_ip_route 220.243.201.0/24 +add china_ip_route 220.243.204.0/24 +add china_ip_route 220.243.214.0/24 +add china_ip_route 220.243.216.0/23 +add china_ip_route 220.243.218.0/24 +add china_ip_route 220.243.220.0/23 +add china_ip_route 220.243.223.0/24 +add china_ip_route 220.243.225.0/24 +add china_ip_route 220.243.226.0/23 +add china_ip_route 220.243.229.0/24 +add china_ip_route 220.243.230.0/24 +add china_ip_route 220.243.233.0/24 +add china_ip_route 220.243.234.0/23 +add china_ip_route 220.243.237.0/24 +add china_ip_route 220.243.238.0/23 +add china_ip_route 220.243.243.0/24 +add china_ip_route 220.243.244.0/24 +add china_ip_route 220.243.246.0/23 +add china_ip_route 220.243.249.0/24 +add china_ip_route 220.243.250.0/24 +add china_ip_route 220.243.252.0/24 +add china_ip_route 220.243.254.0/23 +add china_ip_route 220.247.136.0/21 +add china_ip_route 220.248.0.0/14 +add china_ip_route 220.252.0.0/16 +add china_ip_route 221.0.0.0/13 +add china_ip_route 221.8.0.0/14 +add china_ip_route 221.12.0.0/17 +add china_ip_route 221.12.128.0/18 +add china_ip_route 221.13.0.0/16 +add china_ip_route 221.14.0.0/15 +add china_ip_route 221.122.0.0/15 +add china_ip_route 221.128.128.0/17 +add china_ip_route 221.129.0.0/16 +add china_ip_route 221.130.0.0/15 +add china_ip_route 221.133.224.0/19 +add china_ip_route 221.136.0.0/15 +add china_ip_route 221.172.0.0/14 +add china_ip_route 221.176.0.0/19 +add china_ip_route 221.176.32.0/20 +add china_ip_route 221.176.48.0/21 +add china_ip_route 221.176.56.0/24 +add china_ip_route 221.176.58.0/23 +add china_ip_route 221.176.60.0/22 +add china_ip_route 221.176.64.0/18 +add china_ip_route 221.176.128.0/17 +add china_ip_route 221.177.0.0/16 +add china_ip_route 221.178.0.0/15 +add china_ip_route 221.180.0.0/14 +add china_ip_route 221.192.0.0/14 +add china_ip_route 221.196.0.0/15 +add china_ip_route 221.198.0.0/16 +add china_ip_route 221.199.0.0/17 +add china_ip_route 221.199.128.0/18 +add china_ip_route 221.199.192.0/20 +add china_ip_route 221.199.224.0/19 +add china_ip_route 221.200.0.0/13 +add china_ip_route 221.208.0.0/12 +add china_ip_route 221.224.0.0/12 +add china_ip_route 222.16.0.0/12 +add china_ip_route 222.32.0.0/11 +add china_ip_route 222.64.0.0/11 +add china_ip_route 222.125.0.0/16 +add china_ip_route 222.126.128.0/19 +add china_ip_route 222.126.160.0/21 +add china_ip_route 222.126.168.0/22 +add china_ip_route 222.126.172.0/23 +add china_ip_route 222.126.174.40/29 +add china_ip_route 222.126.174.76/30 +add china_ip_route 222.126.174.88/29 +add china_ip_route 222.126.174.144/28 +add china_ip_route 222.126.178.0/23 +add china_ip_route 222.126.180.0/22 +add china_ip_route 222.126.184.0/21 +add china_ip_route 222.126.192.0/21 +add china_ip_route 222.126.200.104/29 +add china_ip_route 222.126.206.0/23 +add china_ip_route 222.126.208.0/22 +add china_ip_route 222.126.212.0/26 +add china_ip_route 222.126.212.64/27 +add china_ip_route 222.126.212.96/28 +add china_ip_route 222.126.212.112/29 +add china_ip_route 222.126.212.128/25 +add china_ip_route 222.126.213.0/24 +add china_ip_route 222.126.214.0/23 +add china_ip_route 222.126.216.0/21 +add china_ip_route 222.126.224.0/19 +add china_ip_route 222.128.0.0/12 +add china_ip_route 222.160.0.0/14 +add china_ip_route 222.168.0.0/13 +add china_ip_route 222.176.0.0/12 +add china_ip_route 222.192.0.0/11 +add china_ip_route 222.240.0.0/13 +add china_ip_route 222.248.0.0/15 +add china_ip_route 223.0.0.0/12 +add china_ip_route 223.20.0.0/15 +add china_ip_route 223.27.184.0/22 +add china_ip_route 223.29.208.0/22 +add china_ip_route 223.29.252.0/22 +add china_ip_route 223.64.0.0/11 +add china_ip_route 223.96.0.0/12 +add china_ip_route 223.112.0.0/14 +add china_ip_route 223.116.0.0/15 +add china_ip_route 223.120.0.0/13 +add china_ip_route 223.128.0.0/15 +add china_ip_route 223.144.0.0/12 +add china_ip_route 223.160.0.0/14 +add china_ip_route 223.166.0.0/15 +add china_ip_route 223.192.0.0/15 +add china_ip_route 223.198.0.0/15 +add china_ip_route 223.201.8.0/21 +add china_ip_route 223.201.16.0/20 +add china_ip_route 223.201.32.0/19 +add china_ip_route 223.201.64.0/18 +add china_ip_route 223.201.128.0/17 +add china_ip_route 223.202.0.0/15 +add china_ip_route 223.208.0.0/13 +add china_ip_route 223.220.0.0/15 +add china_ip_route 223.223.176.0/20 +add china_ip_route 223.223.192.0/20 +add china_ip_route 223.240.0.0/13 +add china_ip_route 223.248.0.0/14 +add china_ip_route 223.252.128.0/19 +add china_ip_route 223.252.192.0/18 +add china_ip_route 223.254.0.0/16 +add china_ip_route 223.255.0.0/17 +add china_ip_route 223.255.236.0/22 +add china_ip_route 223.255.252.0/23 diff --git a/package/ctcgfw/luci-app-openclash/files/etc/openclash/default.yaml b/package/ctcgfw/luci-app-openclash/files/etc/openclash/default.yaml index 31f55e8518..6b74e19682 100644 --- a/package/ctcgfw/luci-app-openclash/files/etc/openclash/default.yaml +++ b/package/ctcgfw/luci-app-openclash/files/etc/openclash/default.yaml @@ -149,16 +149,16 @@ proxies: # 节点设置,此部分与proxy-provider两者不能同时删除 #auth_aes128_sha1 auth_chain_a auth_chain_b - name: "ssr" - type: ssr - server: server - port: 443 - cipher: chacha20-ietf - password: "password" - obfs: tls1.2_ticket_auth - protocol: auth_sha1_v4 - # obfs-param: domain.tld - # protocol-param: "#" - # udp: true + type: ssr + server: server + port: 443 + cipher: chacha20-ietf + password: "password" + obfs: tls1.2_ticket_auth + protocol: auth_sha1_v4 + # obfs-param: domain.tld + # protocol-param: "#" + # udp: true # vmess # cipher support auto/aes-128-gcm/chacha20-poly1305/none 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 549607d6b8..9cb828d7a1 100644 --- a/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml +++ b/package/ctcgfw/luci-app-openclash/files/etc/openclash/lhie1.yaml @@ -1,10792 +1,423 @@ +rule-providers: + Reject: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Reject.yaml' + path: ./Rules/Reject + interval: 86400 + Special: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Special.yaml' + path: ./Rules/Special + interval: 86400 + Netflix: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Netflix.yaml' + path: ./Rules/Media/Netflix + interval: 86400 + Spotify: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Spotify.yaml' + path: ./Rules/Media/Spotify + interval: 86400 + # YouTube Music: + # type: http + # behavior: classical + # url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/YouTube%20Music.yaml' + # path: ./Rules/Media/YouTube_Music + # interval: 86400 + YouTube: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/YouTube.yaml' + path: ./Rules/Media/YouTube + interval: 86400 + Bilibili: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Bilibili.yaml' + path: ./Rules/Media/Bilibili + interval: 86400 + iQiyi: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/iQiyi.yaml' + path: ./Rules/Media/iQiyi + interval: 86400 + Letv: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Letv.yaml' + path: ./Rules/Media/Letv + interval: 86400 + # MOO: + # type: http + # behavior: classical + # url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/MOO.yaml' + # path: ./Rules/Media/MOO + # interval: 86400 + Netease Music: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Netease%20Music.yaml' + path: ./Rules/Media/Netease_Music + interval: 86400 + Tencent Video: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Tencent%20Video.yaml' + path: ./Rules/Media/Tencent_Video + interval: 86400 + Youku: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Youku.yaml' + path: ./Rules/Media/Youku + interval: 86400 + ABC: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/ABC.yaml' + path: ./Rules/Media/ABC + interval: 86400 + Abema TV: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Abema%20TV.yaml' + path: ./Rules/Media/Abema_TV + interval: 86400 + Amazon: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Amazon.yaml' + path: ./Rules/Media/Amazon + interval: 86400 + Apple News: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Apple%20News.yaml' + path: ./Rules/Media/Apple_News + interval: 86400 + Apple TV: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Apple%20TV.yaml' + path: ./Rules/Media/Apple_TV + interval: 86400 + Bahamut: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Bahamut.yaml' + path: ./Rules/Media/Bahamut + interval: 86400 + BBC iPlayer: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/BBC%20iPlayer.yaml' + path: ./Rules/Media/BBC_iPlayer + interval: 86400 + DAZN: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/DAZN.yaml' + path: ./Rules/Media/DAZN + interval: 86400 + Disney Plus: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Disney%20Plus.yaml' + path: ./Rules/Media/Disney_Plus + interval: 86400 + encoreTVB: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/encoreTVB.yaml' + path: ./Rules/Media/encoreTVB + interval: 86400 + Fox Now: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Fox%20Now.yaml' + path: ./Rules/Media/Fox_Now + interval: 86400 + Fox+: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Fox%2B.yaml' + path: ./Rules/Media/Fox+ + interval: 86400 + HBO: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/HBO.yaml' + path: ./Rules/Media/HBO + interval: 86400 + Hulu Japan: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Hulu%20Japan.yaml' + path: ./Rules/Media/Hulu_Japan + interval: 86400 + Hulu: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Hulu.yaml' + path: ./Rules/Media/Hulu + interval: 86400 + Japonx: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Japonx.yaml' + path: ./Rules/Media/Japonx + interval: 86400 + JOOX: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/JOOX.yaml' + path: ./Rules/Media/JOOX + interval: 86400 + KKBOX: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/KKBOX.yaml' + path: ./Rules/Media/KKBOX + interval: 86400 + KKTV: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/KKTV.yaml' + path: ./Rules/Media/KKTV + interval: 86400 + Line TV: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Line%20TV.yaml' + path: ./Rules/Media/Line_TV + interval: 86400 + myTV SUPER: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/myTV%20SUPER.yaml' + path: ./Rules/Media/myTV_SUPER + interval: 86400 + Pandora: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Pandora.yaml' + path: ./Rules/Media/Pandora + interval: 86400 + PBS: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/PBS.yaml' + path: ./Rules/Media/PBS + interval: 86400 + Pornhub: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Pornhub.yaml' + path: ./Rules/Media/Pornhub + interval: 86400 + Soundcloud: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/Soundcloud.yaml' + path: ./Rules/Media/Soundcloud + interval: 86400 + ViuTV: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Media/ViuTV.yaml' + path: ./Rules/Media/ViuTV + interval: 86400 + Telegram: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Telegram.yaml' + path: ./Rules/Telegram + interval: 86400 + Steam: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Steam.yaml' + path: ./Rules/Steam + interval: 86400 + Speedtest: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Speedtest.yaml' + path: ./Rules/Speedtest + interval: 86400 + PayPal: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/PayPal.yaml' + path: ./Rules/PayPal + interval: 86400 + Microsoft: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Microsoft.yaml' + path: ./Rules/Microsoft + interval: 86400 + PROXY: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Proxy.yaml' + path: ./Rules/Proxy + interval: 86400 + Domestic: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Domestic.yaml' + path: ./Rules/Domestic + interval: 86400 + Apple: + type: http + behavior: classical + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Apple.yaml' + path: ./Rules/Apple + interval: 86400 + Domestic IPs: + type: http + behavior: ipcidr + url: 'https://git.dler.io/lhie1/Rules/master/Clash/Provider/Domestic%20IPs.yaml' + path: ./Rules/Domestic_IPs + interval: 86400 +script: + code: | + def main(ctx, metadata): + port_list = [21, 22, 23, 53, 80, 123, 143, 194, 443, 465, 587, 853, 993, 995, 998, 2052, 2053, 2082, 2083, 2086, 2095, 2096, 5222, 5228, 5229, 5230, 8080, 8443, 8880, 8888, 8889] + ruleset_action = {"Reject": "AdBlock", + "Special": "DIRECT", + "Netflix": "Netflix", + "Spotify": "Spotify", + "YouTube": "YouTube", + "Bilibili": "AsianTV", + "iQiyi": "AsianTV", + "Letv": "AsianTV", + "Netease Music": "AsianTV", + "Tencent Video": "AsianTV", + "Youku": "AsianTV", + "ABC": "GlobalTV", + "Abema TV": "GlobalTV", + "Amazon": "GlobalTV", + "Apple News": "GlobalTV", + "Apple TV": "GlobalTV", + "Bahamut": "GlobalTV", + "BBC iPlayer": "GlobalTV", + "DAZN": "GlobalTV", + "Disney Plus": "GlobalTV", + "encoreTVB": "GlobalTV", + "Fox Now": "GlobalTV", + "Fox+": "GlobalTV", + "HBO": "GlobalTV", + "Hulu Japan": "GlobalTV", + "Hulu": "GlobalTV", + "Japonx": "GlobalTV", + "JOOX": "GlobalTV", + "KKBOX": "GlobalTV", + "KKTV": "GlobalTV", + "Line TV": "GlobalTV", + "myTV SUPER": "GlobalTV", + "Pandora": "GlobalTV", + "PBS": "GlobalTV", + "Pornhub": "GlobalTV", + "Soundcloud": "GlobalTV", + "ViuTV": "GlobalTV", + "Telegram": "Telegram", + "Steam": "Steam", + "Speedtest": "Speedtest", + "PayPal": "PayPal", + "Microsoft": "Microsoft", + "PROXY": "Proxy", + "Domestic": "Domestic", + "Domestic IPs": "Domestic", + "Apple": "Apple" + } + port = int(metadata["dst_port"]) + + if port not in port_list: + return "DIRECT" + + for rule_name in ctx.rule_providers.keys(): + if ctx.rule_providers[rule_name].match(metadata): + return ruleset_action[rule_name] + + ip = metadata["dst_ip"] or ctx.resolve_ip(metadata["host"]) + + if ip == "": + return "DIRECT" + + code = ctx.geoip(ip) + if code == "CN": + return "Domestic" + + if code == "LAN": + return "DIRECT" + + return "Others" + rules: ##source:lhie1 -# Ads in Video apps - -# > iqiyi & pps -- DOMAIN-SUFFIX,a.ckm.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,ad.m.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,afp.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,androidgo.duapp.com,AdBlock -- DOMAIN-SUFFIX,api.cupid.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,api.cupid.qiyi.com,AdBlock -- DOMAIN-SUFFIX,c.uaa.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,cloudpush.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,cm.passport.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,count.game.pps.tv,AdBlock -- DOMAIN-SUFFIX,cupid.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,emoticon.sns.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,game.pps.tv,AdBlock -- DOMAIN-SUFFIX,gamecenter.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,ifacelog.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,mbdlog.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,msg.71.am,AdBlock -- DOMAIN-SUFFIX,msg.qy.net,REJECT -- DOMAIN-SUFFIX,msg.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,msg.video.qiyi.com,AdBlock -- DOMAIN-SUFFIX,msg2.video.qiyi.com,AdBlock -- DOMAIN-SUFFIX,msga.71.am,AdBlock -- DOMAIN-SUFFIX,msga.cupid.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,nl.notice.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,nl.rcd.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,notice.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,noxagile.duapp.com,AdBlock -- DOMAIN-SUFFIX,paopao.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,policy.video.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,static.g.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,static.g.ppstream.com,AdBlock -- DOMAIN-SUFFIX,store.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,t7z.cupid.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,tracker.sns.iqiyi.com,AdBlock -- DOMAIN-SUFFIX,yuedu.iqiyi.com,AdBlock -- IP-CIDR,101.227.97.240/32,AdBlock -- IP-CIDR,101.227.200.11/32,AdBlock -- IP-CIDR,101.227.200.28/32,AdBlock -- IP-CIDR,124.192.153.42/32,AdBlock - -# > Youku & Tudou -- DOMAIN-SUFFIX,actives.youku.com,AdBlock -- DOMAIN-SUFFIX,ad.api.3g.tudou.com,AdBlock -- DOMAIN-SUFFIX,ad.api.3g.youku.com,AdBlock -- DOMAIN-SUFFIX,ad.api.mobile.youku.com,AdBlock -- DOMAIN-SUFFIX,ad.mobile.youku.com,AdBlock -- DOMAIN-SUFFIX,a-dxk.play.api.3g.youku.com,AdBlock -- DOMAIN-SUFFIX,b.smartvideo.youku.com,AdBlock -- DOMAIN-SUFFIX,c.yes.youku.com,AdBlock -- DOMAIN-SUFFIX,das.api.youku.com,AdBlock -- DOMAIN-SUFFIX,das.mobile.youku.com,AdBlock -- DOMAIN-SUFFIX,dev-push.m.youku.com,AdBlock -- DOMAIN-SUFFIX,dl.g.youku.com,AdBlock -- DOMAIN-SUFFIX,dmapp.youku.com,AdBlock -- DOMAIN-SUFFIX,gamex.mobile.youku.com,AdBlock -- DOMAIN-SUFFIX,hudong.pl.youku.com,AdBlock -- DOMAIN-SUFFIX,huodong.pl.youku.com,AdBlock -- DOMAIN-SUFFIX,huodong.vip.youku.com,AdBlock -- DOMAIN-SUFFIX,hz.youku.com,AdBlock -- DOMAIN-SUFFIX,iyes.youku.com,AdBlock -- DOMAIN-SUFFIX,l.ykimg.com,AdBlock -- DOMAIN-SUFFIX,lstat.youku.com,AdBlock -- DOMAIN-SUFFIX,m.yes.youku.com,AdBlock -- DOMAIN-SUFFIX,mobilemsg.youku.com,AdBlock -- DOMAIN-SUFFIX,msg.youku.com,AdBlock -- DOMAIN-SUFFIX,myes.youku.com,AdBlock -- DOMAIN-SUFFIX,p.l.youku.com,AdBlock -- DOMAIN-SUFFIX,passport-log.youku.com,AdBlock -- DOMAIN-SUFFIX,p-log.ykimg.com,AdBlock -- DOMAIN-SUFFIX,push.m.youku.com,AdBlock -- DOMAIN-SUFFIX,r.l.youku.com,AdBlock -- DOMAIN-SUFFIX,s.p.youku.com,AdBlock -- DOMAIN-SUFFIX,sdk.api.gamex.mobile.youku.com,AdBlock -- DOMAIN-SUFFIX,sdk.m.youku.com,AdBlock -- DOMAIN-SUFFIX,stat.youku.com,AdBlock -- DOMAIN-SUFFIX,store.tv.api.3g.youku.com,AdBlock -- DOMAIN-SUFFIX,store.xl.api.3g.youku.com,AdBlock -- DOMAIN-SUFFIX,tdrec.youku.com,AdBlock -- DOMAIN-SUFFIX,test.ott.youku.com,AdBlock -- DOMAIN-SUFFIX,urchin.lstat.youku.com,AdBlock -- DOMAIN-SUFFIX,v.l.youku.com,AdBlock -- DOMAIN-SUFFIX,val.api.youku.com,AdBlock -- DOMAIN-SUFFIX,wan.youku.com,AdBlock -- DOMAIN-SUFFIX,ykatr.youku.com,AdBlock -- DOMAIN-SUFFIX,ykrec.youku.com,AdBlock -- IP-CIDR,117.177.248.17/32,AdBlock -- IP-CIDR,117.177.248.41/32,AdBlock -- IP-CIDR,223.87.176.139/32,AdBlock -- IP-CIDR,223.87.176.176/32,AdBlock -- IP-CIDR,223.87.177.180/32,AdBlock -- IP-CIDR,223.87.177.182/32,AdBlock -- IP-CIDR,223.87.177.184/32,AdBlock -- IP-CIDR,223.87.177.43/32,AdBlock -- IP-CIDR,223.87.177.47/32,AdBlock -- IP-CIDR,223.87.177.80/32,AdBlock -- IP-CIDR,223.87.182.101/32,AdBlock -- IP-CIDR,223.87.182.102/32,AdBlock -- IP-CIDR,223.87.182.11/32,AdBlock -- IP-CIDR,223.87.182.52/32,AdBlock - -# > MGTV -- DOMAIN-SUFFIX,ads-api.videojj.com,AdBlock -- DOMAIN-SUFFIX,cdn.cmop.mgtv.com,AdBlock -- DOMAIN-SUFFIX,click.hunantv.com,AdBlock -- DOMAIN-SUFFIX,cmop.mgtv.com,AdBlock -- DOMAIN-SUFFIX,cytron.videojj.com,AdBlock -- DOMAIN-SUFFIX,cytroncdn.videojj.com,AdBlock -- DOMAIN-SUFFIX,da.hunantv.com,AdBlock -- DOMAIN-SUFFIX,da.mgtv.com,AdBlock -- DOMAIN-SUFFIX,imgaliyun.da.mgtv.com,AdBlock -- DOMAIN-SUFFIX,imgaliyun.res.mgtv.com,AdBlock -- DOMAIN-SUFFIX,m2.da.mgtv.com,AdBlock -- DOMAIN-SUFFIX,me.videojj.com,AdBlock -- DOMAIN-SUFFIX,mobaliyun.res.mgtv.com,AdBlock -- DOMAIN-SUFFIX,mobile.da.mgtv.com,AdBlock -- DOMAIN-SUFFIX,mobile2.da.mgtv.com,AdBlock -- DOMAIN-SUFFIX,mp4.res.hunantv.com,AdBlock -- DOMAIN-SUFFIX,pc.da.mgtv.com,AdBlock -- DOMAIN-SUFFIX,pc1.da.mgtv.com,AdBlock -- DOMAIN-SUFFIX,pcvideoaliyun.titan.mgtv.com,AdBlock -- DOMAIN-SUFFIX,pcvideoyd.titan.mgtv.com,AdBlock -- DOMAIN-SUFFIX,pcweb.v1.mgtv.com,AdBlock -- DOMAIN-SUFFIX,plat.videojj.com,AdBlock -- DOMAIN-SUFFIX,py.da.mgtv.com,AdBlock -- DOMAIN-SUFFIX,res.hunantv.com,AdBlock -- DOMAIN-SUFFIX,store.videojj.com,AdBlock -- DOMAIN-SUFFIX,v2.da.mgtv.com,AdBlock -- DOMAIN-SUFFIX,va.videojj.com,AdBlock -- DOMAIN-SUFFIX,videojj.com,AdBlock -- DOMAIN-SUFFIX,web.da.mgtv.com,AdBlock -- DOMAIN-SUFFIX,x.da.hunantv.com,AdBlock -- DOMAIN-SUFFIX,x.da.mgtv.com,AdBlock -- DOMAIN-SUFFIX,x1.da.hunantv.com,AdBlock -- DOMAIN-SUFFIX,y.da.hunantv.com,AdBlock -- DOMAIN-SUFFIX,y.da.mgtv.com,AdBlock - -# > Letv -- DOMAIN-SUFFIX,1.letvlive.com,AdBlock -- DOMAIN-SUFFIX,2.letvlive.com,AdBlock -- DOMAIN-SUFFIX,ads1.lfengmobile.com,AdBlock -- DOMAIN-SUFFIX,api.game.letvstore.com,AdBlock -- DOMAIN-SUFFIX,api.push.le.com,AdBlock -- DOMAIN-SUFFIX,ark.letv.com,AdBlock -- DOMAIN-SUFFIX,cdn.zampdsp.com,AdBlock -- DOMAIN-SUFFIX,cm.fancyapi.com,AdBlock -- DOMAIN-SUFFIX,cn.api.push.le.com,AdBlock -- DOMAIN-SUFFIX,dc.letv.com,AdBlock -- DOMAIN-SUFFIX,fz.letv.com,AdBlock -- DOMAIN-SUFFIX,g3.letv.com,AdBlock -- DOMAIN-SUFFIX,minisite.letv.com,AdBlock -- DOMAIN-SUFFIX,msg.m.letv.com,AdBlock -- DOMAIN-SUFFIX,n.mark.letv.com,AdBlock -- DOMAIN-SUFFIX,pro.hoye.letv.com,AdBlock -- DOMAIN-SUFFIX,pro.letv.com,AdBlock -- DOMAIN-SUFFIX,s.zampdsp.com,AdBlock -- DOMAIN-SUFFIX,stat.letv.com,AdBlock -- DOMAIN-SUFFIX,static.app.m.letv.com,AdBlock -- DOMAIN-SUFFIX,webp2p.letv.com,AdBlock -- DOMAIN-SUFFIX,zamplus.com,AdBlock - -# > Youtube -- DOMAIN-SUFFIX,azabu-u.ac.jp,AdBlock -- DOMAIN-SUFFIX,couchcoaster.jp,AdBlock -- DOMAIN-SUFFIX,delivery.dmkt-sp.jp,AdBlock -- DOMAIN-SUFFIX,ehg-youtube.hitbox.com,AdBlock -- DOMAIN-SUFFIX,m-78.jp,AdBlock -- DOMAIN-SUFFIX,nichibenren.or.jp,AdBlock -- DOMAIN-SUFFIX,nicorette.co.kr,AdBlock - -# > Sohu -- DOMAIN-SUFFIX,adnet.sohu.com,AdBlock -- DOMAIN-SUFFIX,aty.sohu.com,AdBlock -- DOMAIN-SUFFIX,data.vod.itc.cn,AdBlock -- DOMAIN-SUFFIX,epro.sogou.com,AdBlock -- DOMAIN-SUFFIX,go.sohu.com,AdBlock -- DOMAIN-SUFFIX,golden1.sogou.com,AdBlock -- DOMAIN-SUFFIX,imp.optaim.com,AdBlock -- DOMAIN-SUFFIX,inte.sogou.com,AdBlock -- DOMAIN-SUFFIX,inte.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,lu.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,theta.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,uranus.sogou.com,AdBlock - -# > PPTV -- DOMAIN-SUFFIX,afp.pplive.com,AdBlock -- DOMAIN-SUFFIX,app.aplus.pptv.com,AdBlock -- DOMAIN-SUFFIX,as.aplus.pptv.com,AdBlock -- DOMAIN-SUFFIX,asimgs.pplive.cn,AdBlock -- DOMAIN-SUFFIX,de.as.pptv.com,AdBlock -- DOMAIN-SUFFIX,jp.as.pptv.com,AdBlock -- DOMAIN-SUFFIX,pp2.pptv.com,AdBlock -- DOMAIN-SUFFIX,stat.pptv.com,AdBlock -- DOMAIN-SUFFIX,static.g.pptv.com,AdBlock - -# > Site -- DOMAIN-SUFFIX,deliver.ifeng.com,AdBlock -- DOMAIN-SUFFIX,hxjs.tool.hexun.com,AdBlock -- DOMAIN-SUFFIX,hxsame.hexun.com,AdBlock -- DOMAIN-SUFFIX,itv.hexun.com,AdBlock -- DOMAIN-SUFFIX,utrack.hexun.com,AdBlock - -# > Vod -- DOMAIN-SUFFIX,ad.cmvideo.cn,AdBlock -- DOMAIN-SUFFIX,atm.cp31.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,aty.cp45.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,cpm.cm.kankan.com,AdBlock -- DOMAIN-SUFFIX,float.kankan.com,AdBlock -- DOMAIN-SUFFIX,houyi.baofeng.net,AdBlock -- DOMAIN-SUFFIX,iadctest.qwapi.com,AdBlock - -# > Other -- DOMAIN-SUFFIX,ad.video.51togic.com,AdBlock -- DOMAIN-SUFFIX,biz5.kankan.com,AdBlock -- DOMAIN-SUFFIX,c.algovid.com,AdBlock -- DOMAIN-SUFFIX,cms.laifeng.com,AdBlock -- DOMAIN-SUFFIX,da.mmarket.com,AdBlock -- DOMAIN-SUFFIX,dotcounter.douyutv.com,AdBlock -- DOMAIN-SUFFIX,g.uusee.com,AdBlock -- DOMAIN-SUFFIX,gcdn.2mdn.net,AdBlock -- DOMAIN-SUFFIX,gentags.net,AdBlock -- DOMAIN-SUFFIX,gg.jtertp.com,AdBlock -- DOMAIN-SUFFIX,gug.ku6cdn.com,AdBlock -- DOMAIN-SUFFIX,hp.smiler-ad.com,AdBlock -- DOMAIN-SUFFIX,kooyum.com,AdBlock -- DOMAIN-SUFFIX,ld.kuaigames.com,AdBlock -- DOMAIN-SUFFIX,logstat.t.sfht.com,AdBlock -- DOMAIN-SUFFIX,match.rtbidder.net,AdBlock -- DOMAIN-SUFFIX,mixer.cupid.ptqy.gitv.tv,AdBlock -- DOMAIN-SUFFIX,msg.c002.ottcn.com,AdBlock -- DOMAIN-SUFFIX,msga.ptqy.gitv.tv,AdBlock -- DOMAIN-SUFFIX,njwxh.com,AdBlock -- DOMAIN-SUFFIX,nl.rcd.ptqy.gitv.tv,AdBlock -- DOMAIN-SUFFIX,n-st.vip.com,AdBlock -- DOMAIN-SUFFIX,pb.bi.gitv.tv,AdBlock -- DOMAIN-SUFFIX,pop.uusee.com,AdBlock -- DOMAIN-SUFFIX,rd.kuaigames.com,AdBlock -- DOMAIN-SUFFIX,shizen-no-megumi.com,AdBlock -- DOMAIN-SUFFIX,shrek.6.cn,AdBlock -- DOMAIN-SUFFIX,simba.6.cn,AdBlock -- DOMAIN-SUFFIX,st.vq.ku6.cn,AdBlock -- DOMAIN-SUFFIX,statcounter.com,AdBlock -- DOMAIN-SUFFIX,static.duoshuo.com,AdBlock -- DOMAIN-SUFFIX,static.ku6.com,AdBlock -- DOMAIN-SUFFIX,static8.pmadx.com,AdBlock -- DOMAIN-SUFFIX,store.ptqy.gitv.tv,AdBlock -- DOMAIN-SUFFIX,t7z.cupid.ptqy.gitv.tv,AdBlock -- DOMAIN-SUFFIX,traffic.uusee.com,AdBlock -- DOMAIN-SUFFIX,union.6.cn,AdBlock -- DOMAIN-SUFFIX,wa.gtimg.com,AdBlock -- DOMAIN-SUFFIX,bfshan.cn,AdBlock - - - -# Ads in apps -- DOMAIN-KEYWORD,admaster,AdBlock -- DOMAIN-KEYWORD,admdfs,AdBlock -- DOMAIN-KEYWORD,adnewnc,AdBlock -- DOMAIN-KEYWORD,adsage,AdBlock -- DOMAIN-KEYWORD,adsame,AdBlock -- DOMAIN-KEYWORD,adsensor,AdBlock -- DOMAIN-KEYWORD,adserver,AdBlock -- DOMAIN-KEYWORD,adservice,AdBlock -- DOMAIN-KEYWORD,adsmogo,AdBlock -- DOMAIN-KEYWORD,adsrvmedia,AdBlock -- DOMAIN-KEYWORD,adsserving,AdBlock -- DOMAIN-KEYWORD,adsystem,AdBlock -- DOMAIN-KEYWORD,advert,AdBlock -- DOMAIN-KEYWORD,adwords,AdBlock -- DOMAIN-KEYWORD,allyes,AdBlock -- DOMAIN-KEYWORD,analysis,AdBlock -- DOMAIN-KEYWORD,analysys,AdBlock -- DOMAIN-KEYWORD,applovin,AdBlock -- DOMAIN-KEYWORD,appsflyer,AdBlock -- DOMAIN-KEYWORD,dnserror,AdBlock -- DOMAIN-KEYWORD,domob,AdBlock -- DOMAIN-KEYWORD,duomeng,AdBlock -- DOMAIN-KEYWORD,dwtrack,AdBlock -- DOMAIN-KEYWORD,fenxi,AdBlock -- DOMAIN-KEYWORD,guanggao,AdBlock -- DOMAIN-KEYWORD,inmobi,AdBlock -- DOMAIN-KEYWORD,lianmeng,AdBlock -- DOMAIN-KEYWORD,mobaders,AdBlock -- DOMAIN-KEYWORD,omgmta,AdBlock -- DOMAIN-KEYWORD,omniture,AdBlock -- DOMAIN-KEYWORD,openx,AdBlock -- DOMAIN-KEYWORD,partnerad,AdBlock -- DOMAIN-KEYWORD,securepubads,AdBlock -- DOMAIN-KEYWORD,socdm,AdBlock -- DOMAIN-KEYWORD,supersonicads,AdBlock -- DOMAIN-KEYWORD,taboola,AdBlock -- DOMAIN-KEYWORD,uedas,AdBlock -- DOMAIN-KEYWORD,umtrack,AdBlock -- DOMAIN-KEYWORD,uploadMobileData,AdBlock -- DOMAIN-KEYWORD,wlmonitor,AdBlock -- DOMAIN-KEYWORD,zjtoolbar,AdBlock - -- DOMAIN-SUFFIX,0.r.msn.com,AdBlock -- DOMAIN-SUFFIX,000dn.com,AdBlock -- DOMAIN-SUFFIX,001union.com,AdBlock -- DOMAIN-SUFFIX,0086555.com,AdBlock -- DOMAIN-SUFFIX,00880808.com,AdBlock -- DOMAIN-SUFFIX,00oo00.com,AdBlock -- DOMAIN-SUFFIX,01.gxso.net,AdBlock -- DOMAIN-SUFFIX,010teacher.com,AdBlock -- DOMAIN-SUFFIX,010xk.com,AdBlock -- DOMAIN-SUFFIX,018520.com,AdBlock -- DOMAIN-SUFFIX,01daa.lubih.com,AdBlock -- DOMAIN-SUFFIX,01daa.lutci.com,AdBlock -- DOMAIN-SUFFIX,01daa.lutgh.com,AdBlock -- DOMAIN-SUFFIX,01daa.luvbr.com,AdBlock -- DOMAIN-SUFFIX,01daa.luytr.com,AdBlock -- DOMAIN-SUFFIX,022aifang.com,AdBlock -- DOMAIN-SUFFIX,023hysj.com,AdBlock -- DOMAIN-SUFFIX,025suyu.com,AdBlock -- DOMAIN-SUFFIX,0313413.com,AdBlock -- DOMAIN-SUFFIX,0451106.com,AdBlock -- DOMAIN-SUFFIX,0531kt.com,AdBlock -- DOMAIN-SUFFIX,0592weixin.com,AdBlock -- DOMAIN-SUFFIX,0594003.com,AdBlock -- DOMAIN-SUFFIX,06362.com,AdBlock -- DOMAIN-SUFFIX,0756sjlm.com.cn,AdBlock -- DOMAIN-SUFFIX,09_19.supfree.net,AdBlock -- DOMAIN-SUFFIX,0aqpqdju.me,AdBlock -- DOMAIN-SUFFIX,0x01e7.website,AdBlock -- DOMAIN-SUFFIX,0xxd.com,AdBlock -- DOMAIN-SUFFIX,1.1010pic.com,AdBlock -- DOMAIN-SUFFIX,1.201980.com,AdBlock -- DOMAIN-SUFFIX,1.21shebao.com,AdBlock -- DOMAIN-SUFFIX,1.51sxue.cn,AdBlock -- DOMAIN-SUFFIX,1.aili.com,AdBlock -- DOMAIN-SUFFIX,1.bashenghuo.com,AdBlock -- DOMAIN-SUFFIX,1.chcx.cn,AdBlock -- DOMAIN-SUFFIX,1.cjcp.cn,AdBlock -- DOMAIN-SUFFIX,1.codesdq.com,AdBlock -- DOMAIN-SUFFIX,1.feihua.com,AdBlock -- DOMAIN-SUFFIX,1.glook.cn,AdBlock -- DOMAIN-SUFFIX,1.hao123.com,AdBlock -- DOMAIN-SUFFIX,1.hnyouneng.com,AdBlock -- DOMAIN-SUFFIX,1.hslyqs.com,AdBlock -- DOMAIN-SUFFIX,1.i1766.com,AdBlock -- DOMAIN-SUFFIX,1.iqeq.com.cn,AdBlock -- DOMAIN-SUFFIX,1.jeasyui.net,AdBlock -- DOMAIN-SUFFIX,1.mgff.com,AdBlock -- DOMAIN-SUFFIX,1.nanrenwo.net,AdBlock -- DOMAIN-SUFFIX,1.panduoduo.net,AdBlock -- DOMAIN-SUFFIX,1.qtmojo.cn,AdBlock -- DOMAIN-SUFFIX,1.rengshu.com,AdBlock -- DOMAIN-SUFFIX,1.soufy.cn,AdBlock -- DOMAIN-SUFFIX,1.tulaoshi.com,AdBlock -- DOMAIN-SUFFIX,1.tuxi.com.cn,AdBlock -- DOMAIN-SUFFIX,1.win7china.com,AdBlock -- DOMAIN-SUFFIX,1.win7sky.com,AdBlock -- DOMAIN-SUFFIX,1.wps.cn,AdBlock -- DOMAIN-SUFFIX,1.xiaopin5.com,AdBlock -- DOMAIN-SUFFIX,1.xiaozhizhijia.com,AdBlock -- DOMAIN-SUFFIX,1.xilu.com,AdBlock -- DOMAIN-SUFFIX,1.zw3e.com,AdBlock -- DOMAIN-SUFFIX,1000dy.com,AdBlock -- DOMAIN-SUFFIX,10086.cn.baidu.cdn.yiwk.com,AdBlock -- DOMAIN-SUFFIX,100fenlm.com,AdBlock -- DOMAIN-SUFFIX,1017.cn,AdBlock -- DOMAIN-SUFFIX,10up.com,AdBlock -- DOMAIN-SUFFIX,11.hydcd.com,AdBlock -- DOMAIN-SUFFIX,111111qb.com,AdBlock -- DOMAIN-SUFFIX,111cn.net,AdBlock -- DOMAIN-SUFFIX,1133.cc,AdBlock -- DOMAIN-SUFFIX,114la.com,AdBlock -- DOMAIN-SUFFIX,1178.shucong.com,AdBlock -- DOMAIN-SUFFIX,11g.yiqig.cn,AdBlock -- DOMAIN-SUFFIX,1224.dxsbb.com,AdBlock -- DOMAIN-SUFFIX,123.sogou.com,AdBlock -- DOMAIN-SUFFIX,12306media.com,AdBlock -- DOMAIN-SUFFIX,1234xm.com,AdBlock -- DOMAIN-SUFFIX,12365chia.com,AdBlock -- DOMAIN-SUFFIX,123hala.com,AdBlock -- DOMAIN-SUFFIX,123juzi.net,AdBlock -- DOMAIN-SUFFIX,13023.url.7wkw.com,AdBlock -- DOMAIN-SUFFIX,138138138.top,AdBlock -- DOMAIN-SUFFIX,142904.com,AdBlock -- DOMAIN-SUFFIX,144.dragonparking.com,AdBlock -- DOMAIN-SUFFIX,1495039.com,AdBlock -- DOMAIN-SUFFIX,163.wrating.com,AdBlock -- DOMAIN-SUFFIX,163ren.com,AdBlock -- DOMAIN-SUFFIX,168.it168.com,AdBlock -- DOMAIN-SUFFIX,1680go.com,AdBlock -- DOMAIN-SUFFIX,168ad.cc,AdBlock -- DOMAIN-SUFFIX,170yy.com,AdBlock -- DOMAIN-SUFFIX,175bar.com,AdBlock -- DOMAIN-SUFFIX,176um.com,AdBlock -- DOMAIN-SUFFIX,178gg.com,AdBlock -- DOMAIN-SUFFIX,17gouwuba.com,AdBlock -- DOMAIN-SUFFIX,17leyi.com,AdBlock -- DOMAIN-SUFFIX,17un.co,AdBlock -- DOMAIN-SUFFIX,17un.com,AdBlock -- DOMAIN-SUFFIX,17zhaole.com,AdBlock -- DOMAIN-SUFFIX,189zj.cn,AdBlock -- DOMAIN-SUFFIX,18av.mm-cg.co,AdBlock -- DOMAIN-SUFFIX,18dusun.com,AdBlock -- DOMAIN-SUFFIX,18tzx.com,AdBlock -- DOMAIN-SUFFIX,1933000.com,AdBlock -- DOMAIN-SUFFIX,1d1px.net,AdBlock -- DOMAIN-SUFFIX,1e2hyl3b.wq42211.com,AdBlock -- DOMAIN-SUFFIX,1i580.com,AdBlock -- DOMAIN-SUFFIX,1kmb.cn,AdBlock -- DOMAIN-SUFFIX,1kxun.mobi,AdBlock -- DOMAIN-SUFFIX,1kzh.com,AdBlock -- DOMAIN-SUFFIX,1l1.cc,AdBlock -- DOMAIN-SUFFIX,1lib.cn,AdBlock -- DOMAIN-SUFFIX,1o26.com,AdBlock -- DOMAIN-SUFFIX,1qwe3r.com,AdBlock -- DOMAIN-SUFFIX,1tlm.cn,AdBlock -- DOMAIN-SUFFIX,1uandun.com,AdBlock -- DOMAIN-SUFFIX,1x3x.com,AdBlock -- DOMAIN-SUFFIX,2.1010pic.com,AdBlock -- DOMAIN-SUFFIX,2.21shebao.com,AdBlock -- DOMAIN-SUFFIX,2.5aigushi.com,AdBlock -- DOMAIN-SUFFIX,2.aili.com,AdBlock -- DOMAIN-SUFFIX,2.bashenghuo.com,AdBlock -- DOMAIN-SUFFIX,2.heiyange.com,AdBlock -- DOMAIN-SUFFIX,2.mobixs.cn,AdBlock -- DOMAIN-SUFFIX,2.nanrenwo.net,AdBlock -- DOMAIN-SUFFIX,2.rengshu.com,AdBlock -- DOMAIN-SUFFIX,2.tuxi.com.cn,AdBlock -- DOMAIN-SUFFIX,201071.com,AdBlock -- DOMAIN-SUFFIX,2012.8684.com,AdBlock -- DOMAIN-SUFFIX,2012ui.com,AdBlock -- DOMAIN-SUFFIX,20150930.cf,AdBlock -- DOMAIN-SUFFIX,2016.sina.cn,AdBlock -- DOMAIN-SUFFIX,2016bobo.cf,AdBlock -- DOMAIN-SUFFIX,2017img.myxh999.com,AdBlock -- DOMAIN-SUFFIX,202m.com,AdBlock -- DOMAIN-SUFFIX,203710.com,AdBlock -- DOMAIN-SUFFIX,2144.cn,AdBlock -- DOMAIN-SUFFIX,21union.com,AdBlock -- DOMAIN-SUFFIX,22.qingsongbar.com,AdBlock -- DOMAIN-SUFFIX,22222jsc.com,AdBlock -- DOMAIN-SUFFIX,222627.com,AdBlock -- DOMAIN-SUFFIX,22lm.cc,AdBlock -- DOMAIN-SUFFIX,233wo.com,AdBlock -- DOMAIN-SUFFIX,2345.cn,AdBlock -- DOMAIN-SUFFIX,2345api.dftoutiao.com,AdBlock -- DOMAIN-SUFFIX,2345apicode.dftoutiao.com,AdBlock -- DOMAIN-SUFFIX,2345at.com,AdBlock -- DOMAIN-SUFFIX,235123.net,AdBlock -- DOMAIN-SUFFIX,24haitao.net,AdBlock -- DOMAIN-SUFFIX,256ppp.com,AdBlock -- DOMAIN-SUFFIX,268mob.cn,AdBlock -- DOMAIN-SUFFIX,272829.cc,AdBlock -- DOMAIN-SUFFIX,272xb.com,AdBlock -- DOMAIN-SUFFIX,285680.com,AdBlock -- DOMAIN-SUFFIX,28acglz.com,AdBlock -- DOMAIN-SUFFIX,2a.com.cn,AdBlock -- DOMAIN-SUFFIX,2cnt.net,AdBlock -- DOMAIN-SUFFIX,2m2n.com,AdBlock -- DOMAIN-SUFFIX,2o7.net,AdBlock -- DOMAIN-SUFFIX,3.guidaye.com,AdBlock -- DOMAIN-SUFFIX,3.ssqzj.com,AdBlock -- DOMAIN-SUFFIX,30350f.com,AdBlock -- DOMAIN-SUFFIX,30407799.com,AdBlock -- DOMAIN-SUFFIX,30ampj.com,AdBlock -- DOMAIN-SUFFIX,31.media.tumblr.com,AdBlock -- DOMAIN-SUFFIX,312036.com,AdBlock -- DOMAIN-SUFFIX,3180555.com,AdBlock -- DOMAIN-SUFFIX,32414.com,AdBlock -- DOMAIN-SUFFIX,32666099.com,AdBlock -- DOMAIN-SUFFIX,33.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,33.pcpop.com,AdBlock -- DOMAIN-SUFFIX,33544444.com,AdBlock -- DOMAIN-SUFFIX,336.com,AdBlock -- DOMAIN-SUFFIX,3388pjdc.com,AdBlock -- DOMAIN-SUFFIX,339.cn,AdBlock -- DOMAIN-SUFFIX,3393.com,AdBlock -- DOMAIN-SUFFIX,33lm.cc,AdBlock -- DOMAIN-SUFFIX,33shangyou.com,AdBlock -- DOMAIN-SUFFIX,35baba.cn,AdBlock -- DOMAIN-SUFFIX,3600.com,AdBlock -- DOMAIN-SUFFIX,360640.com,AdBlock -- DOMAIN-SUFFIX,360baidus.com,AdBlock -- DOMAIN-SUFFIX,360jiaquan.com,AdBlock -- DOMAIN-SUFFIX,360safego.com,AdBlock -- DOMAIN-SUFFIX,360shopping.com.cn,AdBlock -- DOMAIN-SUFFIX,360vip.front99.com,AdBlock -- DOMAIN-SUFFIX,361315.cc,AdBlock -- DOMAIN-SUFFIX,365bibi.com,AdBlock -- DOMAIN-SUFFIX,365safego.com,AdBlock -- DOMAIN-SUFFIX,366safego.com,AdBlock -- DOMAIN-SUFFIX,36pn.com,AdBlock -- DOMAIN-SUFFIX,3721zh.com,AdBlock -- DOMAIN-SUFFIX,376zf.com,AdBlock -- DOMAIN-SUFFIX,37cs.com,AdBlock -- DOMAIN-SUFFIX,37mnm.com,AdBlock -- DOMAIN-SUFFIX,37pk49.com,AdBlock -- DOMAIN-SUFFIX,37see.com,AdBlock -- DOMAIN-SUFFIX,37wan.cn,AdBlock -- DOMAIN-SUFFIX,37wan.com,AdBlock -- DOMAIN-SUFFIX,3808010.com,AdBlock -- DOMAIN-SUFFIX,38330.bet,AdBlock -- DOMAIN-SUFFIX,3839168.com,AdBlock -- DOMAIN-SUFFIX,38499.com,AdBlock -- DOMAIN-SUFFIX,38c99.com,AdBlock -- DOMAIN-SUFFIX,39330.bet,AdBlock -- DOMAIN-SUFFIX,3975lm.com,AdBlock -- DOMAIN-SUFFIX,39xc.net,AdBlock -- DOMAIN-SUFFIX,3dm.huya.com,AdBlock -- DOMAIN-SUFFIX,3dns-2.adobe.com,AdBlock -- DOMAIN-SUFFIX,3dns-3.adobe.com,AdBlock -- DOMAIN-SUFFIX,3dwwwgame.com,AdBlock -- DOMAIN-SUFFIX,3g.990.net,AdBlock -- DOMAIN-SUFFIX,3gmimo.com,AdBlock -- DOMAIN-SUFFIX,3gmtr.com,AdBlock -- DOMAIN-SUFFIX,3htai.com,AdBlock -- DOMAIN-SUFFIX,3qmh.com,AdBlock -- DOMAIN-SUFFIX,3rd.t.sohu.com,AdBlock -- DOMAIN-SUFFIX,3wz6z.bchuangpi.cn,AdBlock -- DOMAIN-SUFFIX,3ygww.com,AdBlock -- DOMAIN-SUFFIX,4009997658.com,AdBlock -- DOMAIN-SUFFIX,404.safedog.cn,AdBlock -- DOMAIN-SUFFIX,4207008.com,AdBlock -- DOMAIN-SUFFIX,4242jj.com,AdBlock -- DOMAIN-SUFFIX,4242lll.com,AdBlock -- DOMAIN-SUFFIX,4242uuu.com,AdBlock -- DOMAIN-SUFFIX,4336wang.cn,AdBlock -- DOMAIN-SUFFIX,456juhd.com,AdBlock -- DOMAIN-SUFFIX,46sg.com,AdBlock -- DOMAIN-SUFFIX,49wanwan.com,AdBlock -- DOMAIN-SUFFIX,4ggww.com,AdBlock -- DOMAIN-SUFFIX,4paradigm.com,AdBlock -- DOMAIN-SUFFIX,4wad.com,AdBlock -- DOMAIN-SUFFIX,4xhyr.shuimujinggong.com,AdBlock -- DOMAIN-SUFFIX,504pk.com,AdBlock -- DOMAIN-SUFFIX,5066.net,AdBlock -- DOMAIN-SUFFIX,50bang.org,AdBlock -- DOMAIN-SUFFIX,51.la,AdBlock -- DOMAIN-SUFFIX,5125129.com,AdBlock -- DOMAIN-SUFFIX,513hch.com,AdBlock -- DOMAIN-SUFFIX,517m.cn,AdBlock -- DOMAIN-SUFFIX,518.sdinfo.net,AdBlock -- DOMAIN-SUFFIX,5188yy.com,AdBlock -- DOMAIN-SUFFIX,519397.com,AdBlock -- DOMAIN-SUFFIX,51ads.com,AdBlock -- DOMAIN-SUFFIX,51chumoping.com,AdBlock -- DOMAIN-SUFFIX,51dql.com,AdBlock -- DOMAIN-SUFFIX,51gxqm.com,AdBlock -- DOMAIN-SUFFIX,51jumintong.com,AdBlock -- DOMAIN-SUFFIX,51la.net,AdBlock -- DOMAIN-SUFFIX,51link.com,AdBlock -- DOMAIN-SUFFIX,51mld.cn,AdBlock -- DOMAIN-SUFFIX,51network.com,AdBlock -- DOMAIN-SUFFIX,51vipedu.com,AdBlock -- DOMAIN-SUFFIX,51weidashi.com,AdBlock -- DOMAIN-SUFFIX,51xumei.com,AdBlock -- DOMAIN-SUFFIX,51yes.com,AdBlock -- DOMAIN-SUFFIX,51zhanzhuang.cn,AdBlock -- DOMAIN-SUFFIX,5207470.com,AdBlock -- DOMAIN-SUFFIX,5269120.com,AdBlock -- DOMAIN-SUFFIX,526d.uunice.com,AdBlock -- DOMAIN-SUFFIX,526dimg.uunice.com,AdBlock -- DOMAIN-SUFFIX,5293.com,AdBlock -- DOMAIN-SUFFIX,52kmh.com,AdBlock -- DOMAIN-SUFFIX,52kmk.com,AdBlock -- DOMAIN-SUFFIX,52lubo.cn,AdBlock -- DOMAIN-SUFFIX,5345ll.com,AdBlock -- DOMAIN-SUFFIX,537901.com,AdBlock -- DOMAIN-SUFFIX,55.la,AdBlock -- DOMAIN-SUFFIX,555p555p.com,AdBlock -- DOMAIN-SUFFIX,559gp.com,AdBlock -- DOMAIN-SUFFIX,55lu.com,AdBlock -- DOMAIN-SUFFIX,5634.com,AdBlock -- DOMAIN-SUFFIX,5675146.com,AdBlock -- DOMAIN-SUFFIX,57.com.cn,AdBlock -- DOMAIN-SUFFIX,57union.com,AdBlock -- DOMAIN-SUFFIX,58.xgo.com.cn,AdBlock -- DOMAIN-SUFFIX,5814889.com,AdBlock -- DOMAIN-SUFFIX,5857.com,AdBlock -- DOMAIN-SUFFIX,588yw.com,AdBlock -- DOMAIN-SUFFIX,58lm.vip,AdBlock -- DOMAIN-SUFFIX,58mingri.cn,AdBlock -- DOMAIN-SUFFIX,58mingtian.cn,AdBlock -- DOMAIN-SUFFIX,592man.com,AdBlock -- DOMAIN-SUFFIX,5dg.me,AdBlock -- DOMAIN-SUFFIX,5dian.org,AdBlock -- DOMAIN-SUFFIX,5egk.com,AdBlock -- DOMAIN-SUFFIX,5imoney.com,AdBlock -- DOMAIN-SUFFIX,5jcom.com.cn,AdBlock -- DOMAIN-SUFFIX,5vz3cfs0yd.me,AdBlock -- DOMAIN-SUFFIX,5y9nfpes.52pk.com,AdBlock -- DOMAIN-SUFFIX,5yrra.deshuangwang.cn,AdBlock -- DOMAIN-SUFFIX,600ad.com,AdBlock -- DOMAIN-SUFFIX,601654.com,AdBlock -- DOMAIN-SUFFIX,60608787.com,AdBlock -- DOMAIN-SUFFIX,626uc.com,AdBlock -- DOMAIN-SUFFIX,644446.com,AdBlock -- DOMAIN-SUFFIX,649558.com,AdBlock -- DOMAIN-SUFFIX,64si.com,AdBlock -- DOMAIN-SUFFIX,654mmm.com,AdBlock -- DOMAIN-SUFFIX,6615338.cn,AdBlock -- DOMAIN-SUFFIX,6666349.com,AdBlock -- DOMAIN-SUFFIX,6669667.com,AdBlock -- DOMAIN-SUFFIX,66992949.com,AdBlock -- DOMAIN-SUFFIX,66san.com,AdBlock -- DOMAIN-SUFFIX,6711.com,AdBlock -- DOMAIN-SUFFIX,6728812.com,AdBlock -- DOMAIN-SUFFIX,685wo.com,AdBlock -- DOMAIN-SUFFIX,68665565.com,AdBlock -- DOMAIN-SUFFIX,69duk.com,AdBlock -- DOMAIN-SUFFIX,6a4cc.lubue.com,AdBlock -- DOMAIN-SUFFIX,6a4cc.luvbq.com,AdBlock -- DOMAIN-SUFFIX,6a4cc.luvbr.com,AdBlock -- DOMAIN-SUFFIX,6a4cc.luytr.com,AdBlock -- DOMAIN-SUFFIX,6boou.voluumtrk.com,AdBlock -- DOMAIN-SUFFIX,6d63d3.com,AdBlock -- DOMAIN-SUFFIX,6dad.com,AdBlock -- DOMAIN-SUFFIX,6dvip.com,AdBlock -- DOMAIN-SUFFIX,6huu.com,AdBlock -- DOMAIN-SUFFIX,6kwan.com,AdBlock -- DOMAIN-SUFFIX,6tsbe1zs.me,AdBlock -- DOMAIN-SUFFIX,700900.com,AdBlock -- DOMAIN-SUFFIX,706529.com,AdBlock -- DOMAIN-SUFFIX,7080555.com,AdBlock -- DOMAIN-SUFFIX,70e.com,AdBlock -- DOMAIN-SUFFIX,70lm.com,AdBlock -- DOMAIN-SUFFIX,711kk.com,AdBlock -- DOMAIN-SUFFIX,716703.com,AdBlock -- DOMAIN-SUFFIX,71sem.com,AdBlock -- DOMAIN-SUFFIX,73.sinawap.com,AdBlock -- DOMAIN-SUFFIX,743m1.11a12.com,AdBlock -- DOMAIN-SUFFIX,749558.com,AdBlock -- DOMAIN-SUFFIX,749808.com,AdBlock -- DOMAIN-SUFFIX,7540.com,AdBlock -- DOMAIN-SUFFIX,75to.com,AdBlock -- DOMAIN-SUFFIX,7631.com,AdBlock -- DOMAIN-SUFFIX,766ba.net,AdBlock -- DOMAIN-SUFFIX,76802.net,AdBlock -- DOMAIN-SUFFIX,77455.com,AdBlock -- DOMAIN-SUFFIX,778669.com,AdBlock -- DOMAIN-SUFFIX,7794.com,AdBlock -- DOMAIN-SUFFIX,77power.com,AdBlock -- DOMAIN-SUFFIX,77u.com,AdBlock -- DOMAIN-SUFFIX,77xtv.com,AdBlock -- DOMAIN-SUFFIX,7891655.cn,AdBlock -- DOMAIN-SUFFIX,7car.com.cn,AdBlock -- DOMAIN-SUFFIX,7clink.com,AdBlock -- DOMAIN-SUFFIX,7dah8.com,AdBlock -- DOMAIN-SUFFIX,7gg.cc,AdBlock -- DOMAIN-SUFFIX,7jiajiao.com,AdBlock -- DOMAIN-SUFFIX,7mad.7m.cn,AdBlock -- DOMAIN-SUFFIX,7pk.com,AdBlock -- DOMAIN-SUFFIX,7wen.cn,AdBlock -- DOMAIN-SUFFIX,7xz3.com,AdBlock -- DOMAIN-SUFFIX,7z66.com,AdBlock -- DOMAIN-SUFFIX,8.jrj.com,AdBlock -- DOMAIN-SUFFIX,801.tianyaui.com,AdBlock -- DOMAIN-SUFFIX,8066hg.com,AdBlock -- DOMAIN-SUFFIX,80sjw.com,AdBlock -- DOMAIN-SUFFIX,813690.top,AdBlock -- DOMAIN-SUFFIX,8184.cc,AdBlock -- DOMAIN-SUFFIX,818mov.com,AdBlock -- DOMAIN-SUFFIX,81c.cn,AdBlock -- DOMAIN-SUFFIX,8269996.com,AdBlock -- DOMAIN-SUFFIX,8368661.com,AdBlock -- DOMAIN-SUFFIX,846.move7.com,AdBlock -- DOMAIN-SUFFIX,849558.com,AdBlock -- DOMAIN-SUFFIX,85058s.com,AdBlock -- DOMAIN-SUFFIX,8521448.com,AdBlock -- DOMAIN-SUFFIX,85655095.com,AdBlock -- DOMAIN-SUFFIX,859377.com,AdBlock -- DOMAIN-SUFFIX,85tgw.com,AdBlock -- DOMAIN-SUFFIX,86.cc,AdBlock -- DOMAIN-SUFFIX,860010.com,AdBlock -- DOMAIN-SUFFIX,86kx.com,AdBlock -- DOMAIN-SUFFIX,878090.com,AdBlock -- DOMAIN-SUFFIX,8800271.com.cn,AdBlock -- DOMAIN-SUFFIX,88210212.com,AdBlock -- DOMAIN-SUFFIX,8866786.com,AdBlock -- DOMAIN-SUFFIX,888.izhufu.net,AdBlock -- DOMAIN-SUFFIX,888.jiuwanwang.com,AdBlock -- DOMAIN-SUFFIX,888.tv.sohu.com,AdBlock -- DOMAIN-SUFFIX,88818122.cn,AdBlock -- DOMAIN-SUFFIX,888zr022.com,AdBlock -- DOMAIN-SUFFIX,88cncc.com,AdBlock -- DOMAIN-SUFFIX,88rpg.net,AdBlock -- DOMAIN-SUFFIX,88shu.cn,AdBlock -- DOMAIN-SUFFIX,892155.com,AdBlock -- DOMAIN-SUFFIX,89h8.com,AdBlock -- DOMAIN-SUFFIX,8dulm.com,AdBlock -- DOMAIN-SUFFIX,8hykthze.cricket,AdBlock -- DOMAIN-SUFFIX,8jd2lfsq.me,AdBlock -- DOMAIN-SUFFIX,8jkx.com,AdBlock -- DOMAIN-SUFFIX,8le8le.com,AdBlock -- DOMAIN-SUFFIX,8mfty.com,AdBlock -- DOMAIN-SUFFIX,8ox.cn,AdBlock -- DOMAIN-SUFFIX,90053999.com,AdBlock -- DOMAIN-SUFFIX,910weixin.com,AdBlock -- DOMAIN-SUFFIX,911.cc,AdBlock -- DOMAIN-SUFFIX,915.com,AdBlock -- DOMAIN-SUFFIX,91ad.bestvogue.com,AdBlock -- DOMAIN-SUFFIX,91adv.com,AdBlock -- DOMAIN-SUFFIX,91hui.com,AdBlock -- DOMAIN-SUFFIX,91veg.com,AdBlock -- DOMAIN-SUFFIX,91xry.com,AdBlock -- DOMAIN-SUFFIX,91ysa.com,AdBlock -- DOMAIN-SUFFIX,91zgm.com,AdBlock -- DOMAIN-SUFFIX,92x.tumblr.com,AdBlock -- DOMAIN-SUFFIX,930.dragonparking.com,AdBlock -- DOMAIN-SUFFIX,93manhua.com,AdBlock -- DOMAIN-SUFFIX,94lm.com,AdBlock -- DOMAIN-SUFFIX,95105012.com,AdBlock -- DOMAIN-SUFFIX,9519.net,AdBlock -- DOMAIN-SUFFIX,95558000.com,AdBlock -- DOMAIN-SUFFIX,9565365.com,AdBlock -- DOMAIN-SUFFIX,9566180.com,AdBlock -- DOMAIN-SUFFIX,96mob.com,AdBlock -- DOMAIN-SUFFIX,9948000.com,AdBlock -- DOMAIN-SUFFIX,99909988.com,AdBlock -- DOMAIN-SUFFIX,99click.com,AdBlock -- DOMAIN-SUFFIX,99ddd.com,AdBlock -- DOMAIN-SUFFIX,99lolo.com,AdBlock -- DOMAIN-SUFFIX,9ads.net,AdBlock -- DOMAIN-SUFFIX,9dtiny.cn,AdBlock -- DOMAIN-SUFFIX,9kff.com,AdBlock -- DOMAIN-SUFFIX,9pkw.com,AdBlock -- DOMAIN-SUFFIX,9s6q.cn,AdBlock -- DOMAIN-SUFFIX,9tn.cc,AdBlock -- DOMAIN-SUFFIX,9wushuo.com,AdBlock -- DOMAIN-SUFFIX,a.198banjia.com,AdBlock -- DOMAIN-SUFFIX,a.53yao.com,AdBlock -- DOMAIN-SUFFIX,a.5ykj.com,AdBlock -- DOMAIN-SUFFIX,a.80982.org,AdBlock -- DOMAIN-SUFFIX,a.ads1.msn.com,AdBlock -- DOMAIN-SUFFIX,a.ads2.msn.com,AdBlock -- DOMAIN-SUFFIX,a.armystar.com,AdBlock -- DOMAIN-SUFFIX,a.baidu.com,AdBlock -- DOMAIN-SUFFIX,a.baiy.net,AdBlock -- DOMAIN-SUFFIX,a.baomihua.com,AdBlock -- DOMAIN-SUFFIX,a.beilamusi.com,AdBlock -- DOMAIN-SUFFIX,a.benshiw.net,AdBlock -- DOMAIN-SUFFIX,a.bshu.com,AdBlock -- DOMAIN-SUFFIX,a.cdngeek.net,AdBlock -- DOMAIN-SUFFIX,a.clipconverter.cc,AdBlock -- DOMAIN-SUFFIX,a.cn.duoyi.com,AdBlock -- DOMAIN-SUFFIX,a.dangdang.com,AdBlock -- DOMAIN-SUFFIX,a.dianjoy.com,AdBlock -- DOMAIN-SUFFIX,a.dounanhuahui.com,AdBlock -- DOMAIN-SUFFIX,a.duanmeiwen.com,AdBlock -- DOMAIN-SUFFIX,a.e7009.com,AdBlock -- DOMAIN-SUFFIX,a.ecook.cn,AdBlock -- DOMAIN-SUFFIX,a.epinv.com,AdBlock -- DOMAIN-SUFFIX,a.eporner.com,AdBlock -- DOMAIN-SUFFIX,a.exam58.com,AdBlock -- DOMAIN-SUFFIX,a.fengyx.com,AdBlock -- DOMAIN-SUFFIX,a.fwsir.com,AdBlock -- DOMAIN-SUFFIX,a.giantrealm.com,AdBlock -- DOMAIN-SUFFIX,a.global.msads.net,AdBlock -- DOMAIN-SUFFIX,a.hl.mi.com,AdBlock -- DOMAIN-SUFFIX,a.holagames.com,AdBlock -- DOMAIN-SUFFIX,a.irs01.com,AdBlock -- DOMAIN-SUFFIX,a.itiexue.net,AdBlock -- DOMAIN-SUFFIX,a.jyeoo.com,AdBlock -- DOMAIN-SUFFIX,a.kandiaoyu.com,AdBlock -- DOMAIN-SUFFIX,a.kejixun.com,AdBlock -- DOMAIN-SUFFIX,a.kickass.to,AdBlock -- DOMAIN-SUFFIX,a.koudai.com,AdBlock -- DOMAIN-SUFFIX,a.livesportmedia.eu,AdBlock -- DOMAIN-SUFFIX,a.lolwot.com,AdBlock -- DOMAIN-SUFFIX,a.ltdnc.com,AdBlock -- DOMAIN-SUFFIX,a.lwinl.com,AdBlock -- DOMAIN-SUFFIX,a.lz13.cn,AdBlock -- DOMAIN-SUFFIX,a.m.gxwztv.com,AdBlock -- DOMAIN-SUFFIX,a.m.shuhuangge.org,AdBlock -- DOMAIN-SUFFIX,a.mct01.com,AdBlock -- DOMAIN-SUFFIX,a.mjlnbx.cn,AdBlock -- DOMAIN-SUFFIX,a.nanhuwang.com,AdBlock -- DOMAIN-SUFFIX,a.nowscore.com,AdBlock -- DOMAIN-SUFFIX,a.qiao024.com,AdBlock -- DOMAIN-SUFFIX,a.qinghua5.com,AdBlock -- DOMAIN-SUFFIX,a.shangz99991.com,AdBlock -- DOMAIN-SUFFIX,a.shczz.com,AdBlock -- DOMAIN-SUFFIX,a.shenchuang.com,AdBlock -- DOMAIN-SUFFIX,a.shuoshuodaquan.net,AdBlock -- DOMAIN-SUFFIX,a.solarmovie.is,AdBlock -- DOMAIN-SUFFIX,a.soonyou123.com,AdBlock -- DOMAIN-SUFFIX,a.starstar19999.com,AdBlock -- DOMAIN-SUFFIX,a.startui19999.com,AdBlock -- DOMAIN-SUFFIX,a.thefreethoughtproject.com,AdBlock -- DOMAIN-SUFFIX,a.tribalfusion.com,AdBlock -- DOMAIN-SUFFIX,a.tujidao.com,AdBlock -- DOMAIN-SUFFIX,a.tuuituii2999.com,AdBlock -- DOMAIN-SUFFIX,a.ucoz.net,AdBlock -- DOMAIN-SUFFIX,a.union.mi.com,AdBlock -- DOMAIN-SUFFIX,a.visualrevenue.com,AdBlock -- DOMAIN-SUFFIX,a.vlion.cn,AdBlock -- DOMAIN-SUFFIX,a.waczt.cn,AdBlock -- DOMAIN-SUFFIX,a.wlfnb.com,AdBlock -- DOMAIN-SUFFIX,a.xinwenge.net,AdBlock -- DOMAIN-SUFFIX,a.xixiyishu.com,AdBlock -- DOMAIN-SUFFIX,a.xizi.com,AdBlock -- DOMAIN-SUFFIX,a.xywy.com,AdBlock -- DOMAIN-SUFFIX,a.yangshengtang123.com,AdBlock -- DOMAIN-SUFFIX,a.yixie8.com,AdBlock -- DOMAIN-SUFFIX,a.yjbys.com,AdBlock -- DOMAIN-SUFFIX,a.youdao.com,AdBlock -- DOMAIN-SUFFIX,a1.0s.net.cn,AdBlock -- DOMAIN-SUFFIX,a1.azg168.cn,AdBlock -- DOMAIN-SUFFIX,a1.gexing.me,AdBlock -- DOMAIN-SUFFIX,a1.huanqiumil.com,AdBlock -- DOMAIN-SUFFIX,a1.huiqituan.com,AdBlock -- DOMAIN-SUFFIX,a1.itc.cn,AdBlock -- DOMAIN-SUFFIX,a1.liuxue86.com,AdBlock -- DOMAIN-SUFFIX,a1.lmaq.cn,AdBlock -- DOMAIN-SUFFIX,a1.peoplecdn.cn,AdBlock -- DOMAIN-SUFFIX,a1.vdolady.com,AdBlock -- DOMAIN-SUFFIX,a1.yuuedu.com,AdBlock -- DOMAIN-SUFFIX,a1.zhanzhang.net,AdBlock -- DOMAIN-SUFFIX,a1click.cpc.sogou.com,AdBlock -- DOMAIN-SUFFIX,a2.b310.com,AdBlock -- DOMAIN-SUFFIX,a2.huanqiumil.com,AdBlock -- DOMAIN-SUFFIX,a2.rabbitpre.com,AdBlock -- DOMAIN-SUFFIX,a3.ikafan.com,AdBlock -- DOMAIN-SUFFIX,a3p4.net,AdBlock -- DOMAIN-SUFFIX,a4.b2b168.com,AdBlock -- DOMAIN-SUFFIX,a4.ikafan.com,AdBlock -- DOMAIN-SUFFIX,a4.yeshj.com,AdBlock -- DOMAIN-SUFFIX,a5.yeshj.com,AdBlock -- DOMAIN-SUFFIX,a6.bjdianyue.com,AdBlock -- DOMAIN-SUFFIX,a6.codejumps.com,AdBlock -- DOMAIN-SUFFIX,a6.taobanapp.com,AdBlock -- DOMAIN-SUFFIX,a6s.1cakeclub.com,AdBlock -- DOMAIN-SUFFIX,a6s.modoupai.com,AdBlock -- DOMAIN-SUFFIX,a6s.ruyiqufu.com,AdBlock -- DOMAIN-SUFFIX,a6s.ve001nz.com,AdBlock -- DOMAIN-SUFFIX,a7shun.com,AdBlock -- DOMAIN-SUFFIX,a907907.com,AdBlock -- DOMAIN-SUFFIX,a9377j.com,AdBlock -- DOMAIN-SUFFIX,aa.goodsblock.mgid.com,AdBlock -- DOMAIN-SUFFIX,aa.jiankang.com,AdBlock -- DOMAIN-SUFFIX,aa.tianya999.com,AdBlock -- DOMAIN-SUFFIX,aa.xiangxiangmf.com,AdBlock -- DOMAIN-SUFFIX,aa.zldh123.com,AdBlock -- DOMAIN-SUFFIX,aa0.pub.funshion.com,AdBlock -- DOMAIN-SUFFIX,aa1.pub.funshion.com,AdBlock -- DOMAIN-SUFFIX,aafanke.cc,AdBlock -- DOMAIN-SUFFIX,aa-gb.mgid.com,AdBlock -- DOMAIN-SUFFIX,aam.adsremote.scrippsnetworks.com,AdBlock -- DOMAIN-SUFFIX,ab.dydab.com,AdBlock -- DOMAIN-SUFFIX,ab.goodsblock.mgid.com,AdBlock -- DOMAIN-SUFFIX,ab.hysdknb.com,AdBlock -- DOMAIN-SUFFIX,ab.meishiba.com.cn,AdBlock -- DOMAIN-SUFFIX,ab.sc115.com,AdBlock -- DOMAIN-SUFFIX,abbyychina.com,AdBlock -- DOMAIN-SUFFIX,abc.dooccn.com,AdBlock -- DOMAIN-SUFFIX,abc.douguo.com,AdBlock -- DOMAIN-SUFFIX,abc.eastlady.cn,AdBlock -- DOMAIN-SUFFIX,abc.hkepc.com,AdBlock -- DOMAIN-SUFFIX,abc.ruiwen.com,AdBlock -- DOMAIN-SUFFIX,abc.xtyx918.com,AdBlock -- DOMAIN-SUFFIX,abc.yjbys.com,AdBlock -- DOMAIN-SUFFIX,abc.zhiyaspa.com,AdBlock -- DOMAIN-SUFFIX,abcd.zsrt88.cn,AdBlock -- DOMAIN-SUFFIX,abcj.dooccn.com,AdBlock -- DOMAIN-SUFFIX,ab-gb.mgid.com,AdBlock -- DOMAIN-SUFFIX,abtest.mistat.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,ac.atpanel.com,AdBlock -- DOMAIN-SUFFIX,ac2.msn.com,AdBlock -- DOMAIN-SUFFIX,ac3.msn.com,AdBlock -- DOMAIN-SUFFIX,acasys88.cn,AdBlock -- DOMAIN-SUFFIX,access.njherald.com,AdBlock -- DOMAIN-SUFFIX,ac-gb.mgid.com,AdBlock -- DOMAIN-SUFFIX,acint.net,AdBlock -- DOMAIN-SUFFIX,acm.dzwww.com,AdBlock -- DOMAIN-SUFFIX,acs86.com,AdBlock -- DOMAIN-SUFFIX,acsystem.wasu.cn,AdBlock -- DOMAIN-SUFFIX,act2.mediafour.com,AdBlock -- DOMAIN-SUFFIX,activate.adobe.com,AdBlock -- DOMAIN-SUFFIX,activate.wip3.adobe.com,AdBlock -- DOMAIN-SUFFIX,activate-sea.adobe.com,AdBlock -- DOMAIN-SUFFIX,activate-sjc0.adobe.com,AdBlock -- DOMAIN-SUFFIX,activation.cyberlink.com,AdBlock -- DOMAIN-SUFFIX,activation.easeus.com,AdBlock -- DOMAIN-SUFFIX,active.baofeng.com,AdBlock -- DOMAIN-SUFFIX,activeqq.3g.qq.com,AdBlock -- DOMAIN-SUFFIX,activity.app.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,activity.serving-sys.com,AdBlock -- DOMAIN-SUFFIX,activity.tuifish.com,AdBlock -- DOMAIN-SUFFIX,activity.yuyiya.com,AdBlock -- DOMAIN-SUFFIX,actlog.dftoutiao.com,AdBlock -- DOMAIN-SUFFIX,actsdk.idreamsky.com,AdBlock -- DOMAIN-SUFFIX,acuityplatform.com,AdBlock -- DOMAIN-SUFFIX,acwgf.com,AdBlock -- DOMAIN-SUFFIX,acxiom-online.com,AdBlock -- DOMAIN-SUFFIX,ad.1111cpc.com,AdBlock -- DOMAIN-SUFFIX,ad.12306.cn,AdBlock -- DOMAIN-SUFFIX,ad.17173.com,AdBlock -- DOMAIN-SUFFIX,ad.1kxun.com,AdBlock -- DOMAIN-SUFFIX,ad.3.cn,AdBlock -- DOMAIN-SUFFIX,ad.360yield.com,AdBlock -- DOMAIN-SUFFIX,ad.363.in,AdBlock -- DOMAIN-SUFFIX,ad.3dnews.ru,AdBlock -- DOMAIN-SUFFIX,ad.51wnl.com,AdBlock -- DOMAIN-SUFFIX,ad.95306.cn,AdBlock -- DOMAIN-SUFFIX,ad.about.co.kr,AdBlock -- DOMAIN-SUFFIX,ad.accessmediaproductions.com,AdBlock -- DOMAIN-SUFFIX,ad.adhouyi.cn,AdBlock -- DOMAIN-SUFFIX,ad.aidalan.com,AdBlock -- DOMAIN-SUFFIX,ad.api.moji.com,AdBlock -- DOMAIN-SUFFIX,ad.auditude.com,AdBlock -- DOMAIN-SUFFIX,ad.bayescom.com,AdBlock -- DOMAIN-SUFFIX,ad.beihai365.com,AdBlock -- DOMAIN-SUFFIX,ad.bitmedia.io,AdBlock -- DOMAIN-SUFFIX,ad.bjmama.net,AdBlock -- DOMAIN-SUFFIX,ad.cacafly.com,AdBlock -- DOMAIN-SUFFIX,ad.cctv.com,AdBlock -- DOMAIN-SUFFIX,ad.cooks.com,AdBlock -- DOMAIN-SUFFIX,ad.crichd.in,AdBlock -- DOMAIN-SUFFIX,ad.csdn.net,AdBlock -- DOMAIN-SUFFIX,ad.dedecms.com,AdBlock -- DOMAIN-SUFFIX,ad.digitimes.com.tw,AdBlock -- DOMAIN-SUFFIX,ad.directmirror.com,AdBlock -- DOMAIN-SUFFIX,ad.dokrmob.com,AdBlock -- DOMAIN-SUFFIX,ad.doubanio.com,AdBlock -- DOMAIN-SUFFIX,ad.download.cnet.com,AdBlock -- DOMAIN-SUFFIX,ad.dqwjzm.com,AdBlock -- DOMAIN-SUFFIX,ad.duapps.com,AdBlock -- DOMAIN-SUFFIX,ad.duga.jp,AdBlock -- DOMAIN-SUFFIX,ad.dumedia.ru,AdBlock -- DOMAIN-SUFFIX,ad.duomi.com,AdBlock -- DOMAIN-SUFFIX,ad.dzwindows.com,AdBlock -- DOMAIN-SUFFIX,ad.dzwww.com,AdBlock -- DOMAIN-SUFFIX,ad.egou.com,AdBlock -- DOMAIN-SUFFIX,ad.endpo.in,AdBlock -- DOMAIN-SUFFIX,ad.epochtimes.com,AdBlock -- DOMAIN-SUFFIX,ad.eporner.com,AdBlock -- DOMAIN-SUFFIX,ad.evozi.com,AdBlock -- DOMAIN-SUFFIX,ad.flipboard.com,AdBlock -- DOMAIN-SUFFIX,ad.flurry.com,AdBlock -- DOMAIN-SUFFIX,ad.flux.com,AdBlock -- DOMAIN-SUFFIX,ad.fnnews.com,AdBlock -- DOMAIN-SUFFIX,ad.foxnetworks.com,AdBlock -- DOMAIN-SUFFIX,ad.funp.com,AdBlock -- DOMAIN-SUFFIX,ad.funshion.org.cn,AdBlock -- DOMAIN-SUFFIX,ad.gametower.com.tw,AdBlock -- DOMAIN-SUFFIX,ad.ganji.com,AdBlock -- DOMAIN-SUFFIX,ad.gmw.cn,AdBlock -- DOMAIN-SUFFIX,ad.go.com,AdBlock -- DOMAIN-SUFFIX,ad.greedland.net,AdBlock -- DOMAIN-SUFFIX,ad.gtbrowser.com,AdBlock -- DOMAIN-SUFFIX,ad.hefei.cc,AdBlock -- DOMAIN-SUFFIX,ad.hiiir.com,AdBlock -- DOMAIN-SUFFIX,ad.holaq.com,AdBlock -- DOMAIN-SUFFIX,ad.hot-mob.com,AdBlock -- DOMAIN-SUFFIX,ad.house365.com,AdBlock -- DOMAIN-SUFFIX,ad.huajiao.com,AdBlock -- DOMAIN-SUFFIX,ad.ibookstar.com,AdBlock -- DOMAIN-SUFFIX,ad.icasthq.com,AdBlock -- DOMAIN-SUFFIX,ad.idgtn.net,AdBlock -- DOMAIN-SUFFIX,ad.iloveinterracial.com,AdBlock -- DOMAIN-SUFFIX,ad.ipadview.com,AdBlock -- DOMAIN-SUFFIX,ad.jamba.net,AdBlock -- DOMAIN-SUFFIX,ad.jamster.co.uk,AdBlock -- DOMAIN-SUFFIX,ad.jamster.com,AdBlock -- DOMAIN-SUFFIX,ad.jiemian.com,AdBlock -- DOMAIN-SUFFIX,ad.jsnbrynb.com,AdBlock -- DOMAIN-SUFFIX,ad.jxnews.com.cn,AdBlock -- DOMAIN-SUFFIX,ad.kissanime.io,AdBlock -- DOMAIN-SUFFIX,ad.kisscartoon.io,AdBlock -- DOMAIN-SUFFIX,ad.leadbolt.net,AdBlock -- DOMAIN-SUFFIX,ad.leadboltads.net,AdBlock -- DOMAIN-SUFFIX,ad.leadboltapps.net,AdBlock -- DOMAIN-SUFFIX,ad.leadboltmobile.net,AdBlock -- DOMAIN-SUFFIX,ad.livere.co.kr,AdBlock -- DOMAIN-SUFFIX,ad.lqalm.com,AdBlock -- DOMAIN-SUFFIX,ad.lyricswire.com,AdBlock -- DOMAIN-SUFFIX,ad.madserving.com,AdBlock -- DOMAIN-SUFFIX,ad.mail.ru,AdBlock -- DOMAIN-SUFFIX,ad.mail.sohu.com,AdBlock -- DOMAIN-SUFFIX,ad.mangareader.net,AdBlock -- DOMAIN-SUFFIX,ad.mediabong.net,AdBlock -- DOMAIN-SUFFIX,ad.mesomorphosis.com,AdBlock -- DOMAIN-SUFFIX,ad.mi.com,AdBlock -- DOMAIN-SUFFIX,ad.mnt123.com,AdBlock -- DOMAIN-SUFFIX,ad.molitv.cn,AdBlock -- DOMAIN-SUFFIX,ad.naver.com,AdBlock -- DOMAIN-SUFFIX,ad.netowl.jp,AdBlock -- DOMAIN-SUFFIX,ad.newegg.com,AdBlock -- DOMAIN-SUFFIX,ad.obuy.tw,AdBlock -- DOMAIN-SUFFIX,ad.openmultimedia.biz,AdBlock -- DOMAIN-SUFFIX,ad.outsidehub.com,AdBlock -- DOMAIN-SUFFIX,ad.pandora.tv,AdBlock -- DOMAIN-SUFFIX,ad.pchome.com.tw,AdBlock -- DOMAIN-SUFFIX,ad.pickple.net,AdBlock -- DOMAIN-SUFFIX,ad.pixnet.in,AdBlock -- DOMAIN-SUFFIX,ad.pixnet.net,AdBlock -- DOMAIN-SUFFIX,ad.player.baidu.com,AdBlock -- DOMAIN-SUFFIX,ad.propellerads.com,AdBlock -- DOMAIN-SUFFIX,ad.proxy.sh,AdBlock -- DOMAIN-SUFFIX,ad.qingting.fm,AdBlock -- DOMAIN-SUFFIX,ad.qq.com,AdBlock -- DOMAIN-SUFFIX,ad.r.worldssl.net,AdBlock -- DOMAIN-SUFFIX,ad.rambler.ru,AdBlock -- DOMAIN-SUFFIX,ad.reachlocal.com,AdBlock -- DOMAIN-SUFFIX,ad.rednet.cn,AdBlock -- DOMAIN-SUFFIX,ad.reklamport.com,AdBlock -- DOMAIN-SUFFIX,ad.search.ch,AdBlock -- DOMAIN-SUFFIX,ad.seeyouyima.com,AdBlock -- DOMAIN-SUFFIX,ad.sensismediasmart.com.au,AdBlock -- DOMAIN-SUFFIX,ad.services.distractify.com,AdBlock -- DOMAIN-SUFFIX,ad.shuoshuomi.com,AdBlock -- DOMAIN-SUFFIX,ad.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,ad.sinovision.net,AdBlock -- DOMAIN-SUFFIX,ad.slutload.com,AdBlock -- DOMAIN-SUFFIX,ad.smartclip.net,AdBlock -- DOMAIN-SUFFIX,ad.sohu.com,AdBlock -- DOMAIN-SUFFIX,ad.spielothek.so,AdBlock -- DOMAIN-SUFFIX,ad.spreaker.com,AdBlock -- DOMAIN-SUFFIX,ad.stsywl.com,AdBlock -- DOMAIN-SUFFIX,ad.tatatimes.com,AdBlock -- DOMAIN-SUFFIX,ad.test.ximalaya.com,AdBlock -- DOMAIN-SUFFIX,ad.thepaper.cn,AdBlock -- DOMAIN-SUFFIX,ad.thisav.com,AdBlock -- DOMAIN-SUFFIX,ad.thsi.cn,AdBlock -- DOMAIN-SUFFIX,ad.toutiao.com,AdBlock -- DOMAIN-SUFFIX,ad.turn.com,AdBlock -- DOMAIN-SUFFIX,ad.unimhk.com,AdBlock -- DOMAIN-SUFFIX,ad.userporn.com,AdBlock -- DOMAIN-SUFFIX,ad.vidaroo.com,AdBlock -- DOMAIN-SUFFIX,ad.vryeye.com,AdBlock -- DOMAIN-SUFFIX,ad.walkgame.com,AdBlock -- DOMAIN-SUFFIX,ad.wang502.com,AdBlock -- DOMAIN-SUFFIX,ad.winningpartner.com,AdBlock -- DOMAIN-SUFFIX,ad.winrar.com.cn,AdBlock -- DOMAIN-SUFFIX,ad.wretch.cc,AdBlock -- DOMAIN-SUFFIX,ad.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,ad.ximalaya.com,AdBlock -- DOMAIN-SUFFIX,ad.xmovies8.ru,AdBlock -- DOMAIN-SUFFIX,ad.xxguan.cn,AdBlock -- DOMAIN-SUFFIX,ad.yeshitv.com,AdBlock -- DOMAIN-SUFFIX,ad.yieldlab.net,AdBlock -- DOMAIN-SUFFIX,ad.yixin.im,AdBlock -- DOMAIN-SUFFIX,ad.ylunion.com,AdBlock -- DOMAIN-SUFFIX,ad.zanox.com,AdBlock -- DOMAIN-SUFFIX,ad.zdworks.com,AdBlock -- DOMAIN-SUFFIX,ad.zhangyue.com,AdBlock -- DOMAIN-SUFFIX,ad.zhidian3g.cn,AdBlock -- DOMAIN-SUFFIX,ad.zuimeitianqi.com,AdBlock -- DOMAIN-SUFFIX,ad0.bigmir.net,AdBlock -- DOMAIN-SUFFIX,ad000000.com,AdBlock -- DOMAIN-SUFFIX,ad1.bigmir.net,AdBlock -- DOMAIN-SUFFIX,ad1.greedland.net,AdBlock -- DOMAIN-SUFFIX,ad1.nend.net,AdBlock -- DOMAIN-SUFFIX,ad1.netshelter.net,AdBlock -- DOMAIN-SUFFIX,ad1.p5w.net,AdBlock -- DOMAIN-SUFFIX,ad1.udn.com,AdBlock -- DOMAIN-SUFFIX,ad1.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,ad1.yangjinyou.com,AdBlock -- DOMAIN-SUFFIX,ad2.nend.net,AdBlock -- DOMAIN-SUFFIX,ad2.udn.com,AdBlock -- DOMAIN-SUFFIX,ad2.yam.com,AdBlock -- DOMAIN-SUFFIX,ad2.yangjinyou.com,AdBlock -- DOMAIN-SUFFIX,ad3.udn.com,AdBlock -- DOMAIN-SUFFIX,ad4.bigmir.net,AdBlock -- DOMAIN-SUFFIX,ad4.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,ad4.udn.com,AdBlock -- DOMAIN-SUFFIX,ad4game.com,AdBlock -- DOMAIN-SUFFIX,ad5.bigmir.net,AdBlock -- DOMAIN-SUFFIX,ad6.bigmir.net,AdBlock -- DOMAIN-SUFFIX,ad7.bigmir.net,AdBlock -- DOMAIN-SUFFIX,ad7.com,AdBlock -- DOMAIN-SUFFIX,ad7.on.cc,AdBlock -- DOMAIN-SUFFIX,ad7.tagphi.net,AdBlock -- DOMAIN-SUFFIX,ad8.adfarm1.adition.com,AdBlock -- DOMAIN-SUFFIX,ad9377.com,AdBlock -- DOMAIN-SUFFIX,adadapted.com,AdBlock -- DOMAIN-SUFFIX,adadmin.house365.com,AdBlock -- DOMAIN-SUFFIX,adadvisor.net,AdBlock -- DOMAIN-SUFFIX,ad-android.51wnl.com,AdBlock -- DOMAIN-SUFFIX,adap.tv,AdBlock -- DOMAIN-SUFFIX,adapi.lenovogame.com,AdBlock -- DOMAIN-SUFFIX,adasad.myweb.hinet.net,AdBlock -- DOMAIN-SUFFIX,adash.m.taobao.com,AdBlock -- DOMAIN-SUFFIX,adbana.com,AdBlock -- DOMAIN-SUFFIX,ad-beta.flipboard.com,AdBlock -- DOMAIN-SUFFIX,adbot.tw,AdBlock -- DOMAIN-SUFFIX,adbox.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,ad-brix.com,AdBlock -- DOMAIN-SUFFIX,adbuyer3.lycos.com,AdBlock -- DOMAIN-SUFFIX,adbxb.com,AdBlock -- DOMAIN-SUFFIX,adcast.deviantart.com,AdBlock -- DOMAIN-SUFFIX,adcast.fblife.com,AdBlock -- DOMAIN-SUFFIX,adccoo.cn,AdBlock -- DOMAIN-SUFFIX,adcdn.goo.ne.jp,AdBlock -- DOMAIN-SUFFIX,adchina.com,AdBlock -- DOMAIN-SUFFIX,adcitrus.com,AdBlock -- DOMAIN-SUFFIX,adcl.pchome.com.tw,AdBlock -- DOMAIN-SUFFIX,adclick.g.doublecklick.net,AdBlock -- DOMAIN-SUFFIX,adclient.uimserv.net,AdBlock -- DOMAIN-SUFFIX,adclock.zdworks.com,AdBlock -- DOMAIN-SUFFIX,adcloud.jp,AdBlock -- DOMAIN-SUFFIX,ad-cloud.jp,AdBlock -- DOMAIN-SUFFIX,ad-cn.jovcloud.com,AdBlock -- DOMAIN-SUFFIX,adcolony.com,AdBlock -- DOMAIN-SUFFIX,adcome.cn,AdBlock -- DOMAIN-SUFFIX,adcore.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,adcount.yoka.com,AdBlock -- DOMAIN-SUFFIX,adcr.naver.com,AdBlock -- DOMAIN-SUFFIX,adcreative.naver.com,AdBlock -- DOMAIN-SUFFIX,add.bugun.com.tr,AdBlock -- DOMAIN-SUFFIX,add.dz19.net,AdBlock -- DOMAIN-SUFFIX,add.freeimg8.com,AdBlock -- DOMAIN-SUFFIX,add.mmyuer.com,AdBlock -- DOMAIN-SUFFIX,addata.ku6.com,AdBlock -- DOMAIN-SUFFIX,ad-delivery.net,AdBlock -- DOMAIN-SUFFIX,addirector.vindicosuite.com,AdBlock -- DOMAIN-SUFFIX,addl.easetuner.com,AdBlock -- DOMAIN-SUFFIX,adds.weatherology.com,AdBlock -- DOMAIN-SUFFIX,addthis.com,AdBlock -- DOMAIN-SUFFIX,addthisedge.com,AdBlock -- DOMAIN-SUFFIX,adeaz.com,AdBlock -- DOMAIN-SUFFIX,ader.mobi,AdBlock -- DOMAIN-SUFFIX,adeventtracker.spotify.com,AdBlock -- DOMAIN-SUFFIX,adexprt.com,AdBlock -- DOMAIN-SUFFIX,adf.dahe.cn,AdBlock -- DOMAIN-SUFFIX,adfarm.mediaplex.com,AdBlock -- DOMAIN-SUFFIX,adform.net,AdBlock -- DOMAIN-SUFFIX,adfront.auction.co.kr,AdBlock -- DOMAIN-SUFFIX,adfurikun.jp,AdBlock -- DOMAIN-SUFFIX,adfuture.cn,AdBlock -- DOMAIN-SUFFIX,ad-gb.mgid.com,AdBlock -- DOMAIN-SUFFIX,adgeo.163.com,AdBlock -- DOMAIN-SUFFIX,adhai.com,AdBlock -- DOMAIN-SUFFIX,adhome.1fangchan.com,AdBlock -- DOMAIN-SUFFIX,adhouyi.com,AdBlock -- DOMAIN-SUFFIX,adi.bigmir.net,AdBlock -- DOMAIN-SUFFIX,adi.cnool.net,AdBlock -- DOMAIN-SUFFIX,adi2007.cnool.net,AdBlock -- DOMAIN-SUFFIX,adimages.go.com,AdBlock -- DOMAIN-SUFFIX,adimages.sina.com.hk,AdBlock -- DOMAIN-SUFFIX,adimg.bbcss.com,AdBlock -- DOMAIN-SUFFIX,adimg.cqnews.net,AdBlock -- DOMAIN-SUFFIX,adimg.daumcdn.net,AdBlock -- DOMAIN-SUFFIX,adimg.deviantart.net,AdBlock -- DOMAIN-SUFFIX,adimg.mobile.sina.cn,AdBlock -- DOMAIN-SUFFIX,adimg.qxlsjw.com,AdBlock -- DOMAIN-SUFFIX,adimg.uimserv.net,AdBlock -- DOMAIN-SUFFIX,adimg.uve.weibo.com,AdBlock -- DOMAIN-SUFFIX,adimg1.chosun.com,AdBlock -- DOMAIN-SUFFIX,adimg3.search.naver.net,AdBlock -- DOMAIN-SUFFIX,adimgs.xici.net,AdBlock -- DOMAIN-SUFFIX,adimp.excite.co.jp,AdBlock -- DOMAIN-SUFFIX,adinall.com,AdBlock -- DOMAIN-SUFFIX,adinf.cp11.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,adinf.voole.com,AdBlock -- DOMAIN-SUFFIX,adinfo.aol.com,AdBlock -- DOMAIN-SUFFIX,adinfo.ra1.xlmc.sec.miui.com,AdBlock -- DOMAIN-SUFFIX,adinfuse.com,AdBlock -- DOMAIN-SUFFIX,adingo.jp.eimg.jp,AdBlock -- DOMAIN-SUFFIX,adirects.com,AdBlock -- DOMAIN-SUFFIX,adjb.5nd.com,AdBlock -- DOMAIN-SUFFIX,adjust.io,AdBlock -- DOMAIN-SUFFIX,adk.funshion.com,AdBlock -- DOMAIN-SUFFIX,adk2.co,AdBlock -- DOMAIN-SUFFIX,adk2x.com,AdBlock -- DOMAIN-SUFFIX,adkmob.com,AdBlock -- DOMAIN-SUFFIX,adkongjian.com,AdBlock -- DOMAIN-SUFFIX,adlabs-sync.rutarget.ru,AdBlock -- DOMAIN-SUFFIX,adlaunch.moji.com,AdBlock -- DOMAIN-SUFFIX,adlefee.com,AdBlock -- DOMAIN-SUFFIX,adlink.shopsafe.co.nz,AdBlock -- DOMAIN-SUFFIX,adlive.cn,AdBlock -- DOMAIN-SUFFIX,adlocus.com,AdBlock -- DOMAIN-SUFFIX,ad-locus.com,AdBlock -- DOMAIN-SUFFIX,adlog.flurry.com,AdBlock -- DOMAIN-SUFFIX,adm.10jqka.com.cn,AdBlock -- DOMAIN-SUFFIX,adm.265g.com,AdBlock -- DOMAIN-SUFFIX,adm.72zx.com,AdBlock -- DOMAIN-SUFFIX,adm.86wan.com,AdBlock -- DOMAIN-SUFFIX,adm.baidu.com,AdBlock -- DOMAIN-SUFFIX,adm.cloud.cnfol.com,AdBlock -- DOMAIN-SUFFIX,adm.easou.com,AdBlock -- DOMAIN-SUFFIX,adm.funshion.com,AdBlock -- DOMAIN-SUFFIX,adm.icast.cn,AdBlock -- DOMAIN-SUFFIX,adm.leju.com,AdBlock -- DOMAIN-SUFFIX,adm.leju.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,adm.myzaker.com,AdBlock -- DOMAIN-SUFFIX,adm.xmfish.com,AdBlock -- DOMAIN-SUFFIX,adm.zbinfo.net,AdBlock -- DOMAIN-SUFFIX,adm.zookingsoft.com,AdBlock -- DOMAIN-SUFFIX,adm0.autoimg.cn,AdBlock -- DOMAIN-SUFFIX,adm1.autoimg.cn,AdBlock -- DOMAIN-SUFFIX,adm2.autoimg.cn,AdBlock -- DOMAIN-SUFFIX,adm3.autoimg.cn,AdBlock -- DOMAIN-SUFFIX,admaji.com,AdBlock -- DOMAIN-SUFFIX,admarket.21cn.com,AdBlock -- DOMAIN-SUFFIX,admarket.mobi,AdBlock -- DOMAIN-SUFFIX,admd.yam.com,AdBlock -- DOMAIN-SUFFIX,admedia.com,AdBlock -- DOMAIN-SUFFIX,admeta.vo.llnwd.net,AdBlock -- DOMAIN-SUFFIX,admgr.qingting.fm,AdBlock -- DOMAIN-SUFFIX,admin.cooguo.com,AdBlock -- DOMAIN-SUFFIX,admin.louxia.org,AdBlock -- DOMAIN-SUFFIX,admin.ninebox.cn,AdBlock -- DOMAIN-SUFFIX,admin6.com,AdBlock -- DOMAIN-SUFFIX,admob.com,AdBlock -- DOMAIN-SUFFIX,admon.cn,AdBlock -- DOMAIN-SUFFIX,admtpmp124.com,AdBlock -- DOMAIN-SUFFIX,admx.baixing.com,AdBlock -- DOMAIN-SUFFIX,adn.ebay.com,AdBlock -- DOMAIN-SUFFIX,adn.insight.ucweb.com,AdBlock -- DOMAIN-SUFFIX,adnetpub.yaolan.com,AdBlock -- DOMAIN-SUFFIX,adnew.wifi8.com,AdBlock -- DOMAIN-SUFFIX,adnxs.com,AdBlock -- DOMAIN-SUFFIX,adobe-dns.adobe.com,AdBlock -- DOMAIN-SUFFIX,adobe-dns-2.adobe.com,AdBlock -- DOMAIN-SUFFIX,adobe-dns-3.adobe.com,AdBlock -- DOMAIN-SUFFIX,adomv.com,AdBlock -- DOMAIN-SUFFIX,adp.cnool.net,AdBlock -- DOMAIN-SUFFIX,adp.s8bbs.com,AdBlock -- DOMAIN-SUFFIX,adp1.cnool.net,AdBlock -- DOMAIN-SUFFIX,adpai.thepaper.cn,AdBlock -- DOMAIN-SUFFIX,adperium.com,AdBlock -- DOMAIN-SUFFIX,adping.qq.com,AdBlock -- DOMAIN-SUFFIX,adplatform.vrtcal.com,AdBlock -- DOMAIN-SUFFIX,ad-plus.cn,AdBlock -- DOMAIN-SUFFIX,adplus.goo.mx,AdBlock -- DOMAIN-SUFFIX,adplxmd.com,AdBlock -- DOMAIN-SUFFIX,adpm.app.qq.com,AdBlock -- DOMAIN-SUFFIX,adpolestar.net,AdBlock -- DOMAIN-SUFFIX,adpro.cn,AdBlock -- DOMAIN-SUFFIX,adpro.pro.cn,AdBlock -- DOMAIN-SUFFIX,adpub.yaolan.com,AdBlock -- DOMAIN-SUFFIX,adpublish.ydstatic.com,AdBlock -- DOMAIN-SUFFIX,adpubs.yaolan.com,AdBlock -- DOMAIN-SUFFIX,adpush.cn,AdBlock -- DOMAIN-SUFFIX,adq.chinaso.com,AdBlock -- DOMAIN-SUFFIX,adrdir.qq.com,AdBlock -- DOMAIN-SUFFIX,adreal.cn,AdBlock -- DOMAIN-SUFFIX,adres.myaora.net,AdBlock -- DOMAIN-SUFFIX,adriver.ru,AdBlock -- DOMAIN-SUFFIX,adriver-sync.rutarget.ru,AdBlock -- DOMAIN-SUFFIX,adroll.com,AdBlock -- DOMAIN-SUFFIX,adrotator.se,AdBlock -- DOMAIN-SUFFIX,adrs.sdo.com,AdBlock -- DOMAIN-SUFFIX,adrunnr.com,AdBlock -- DOMAIN-SUFFIX,ads1.msads.net,AdBlock -- DOMAIN-SUFFIX,ads1.msn.com,AdBlock -- DOMAIN-SUFFIX,ads2.contentabc.com,AdBlock -- DOMAIN-SUFFIX,ads2.msads.net,AdBlock -- DOMAIN-SUFFIX,ads2.msn.com,AdBlock -- DOMAIN-SUFFIX,ads2.opensubtitles.org,AdBlock -- DOMAIN-SUFFIX,ads8.com,AdBlock -- DOMAIN-SUFFIX,ads80.com,AdBlock -- DOMAIN-SUFFIX,adsame.com,AdBlock -- DOMAIN-SUFFIX,adsapi.manhuaren.com,AdBlock -- DOMAIN-SUFFIX,adsatt.abcnews.starwave.com,AdBlock -- DOMAIN-SUFFIX,adsatt.disney.starwave.com,AdBlock -- DOMAIN-SUFFIX,adsatt.espn.go.com,AdBlock -- DOMAIN-SUFFIX,adsatt.espn.starwave.com,AdBlock -- DOMAIN-SUFFIX,adsatt.familyfun.starwave.com,AdBlock -- DOMAIN-SUFFIX,adsatt.go.starwave.com,AdBlock -- DOMAIN-SUFFIX,adsatt.movies.starwave.com,AdBlock -- DOMAIN-SUFFIX,adscaspion.appspot.com,AdBlock -- DOMAIN-SUFFIX,adscdn.baidu.com,AdBlock -- DOMAIN-SUFFIX,adsclick.qq.com,AdBlock -- DOMAIN-SUFFIX,adsclick.yx.js.cn,AdBlock -- DOMAIN-SUFFIX,adsco.re,AdBlock -- DOMAIN-SUFFIX,adscript.gmarket.co.kr,AdBlock -- DOMAIN-SUFFIX,adsdk.9imobi.com,AdBlock -- DOMAIN-SUFFIX,adsdk.dmzj.com,AdBlock -- DOMAIN-SUFFIX,adse.test.ximalaya.com,AdBlock -- DOMAIN-SUFFIX,adse.ximalaya.com,AdBlock -- DOMAIN-SUFFIX,adsence.sogou.com,AdBlock -- DOMAIN-SUFFIX,adsense.html5.qq.com,AdBlock -- DOMAIN-SUFFIX,adserve2.tom.com,AdBlock -- DOMAIN-SUFFIX,adsfactor.net,AdBlock -- DOMAIN-SUFFIX,adsfile.bssdlbig.kugou.com,AdBlock -- DOMAIN-SUFFIX,adsfile.qq.com,AdBlock -- DOMAIN-SUFFIX,adsfs.oppomobile.com,AdBlock -- DOMAIN-SUFFIX,adsgroup.qq.com,AdBlock -- DOMAIN-SUFFIX,adshare.freedocast.com,AdBlock -- DOMAIN-SUFFIX,adshmct.qq.com,AdBlock -- DOMAIN-SUFFIX,adshmmsg.qq.com,AdBlock -- DOMAIN-SUFFIX,adshost2.com,AdBlock -- DOMAIN-SUFFIX,adshow.58.com,AdBlock -- DOMAIN-SUFFIX,adshow.it168.com,AdBlock -- DOMAIN-SUFFIX,adshows.21cn.com,AdBlock -- DOMAIN-SUFFIX,adsin.zhangyoubao.com,AdBlock -- DOMAIN-SUFFIX,adsinstant.com,AdBlock -- DOMAIN-SUFFIX,adslvfile.qq.com,AdBlock -- DOMAIN-SUFFIX,adslvseed.qq.com,AdBlock -- DOMAIN-SUFFIX,adsmart.yicha.cn,AdBlock -- DOMAIN-SUFFIX,adsolution.imtt.qq.com,AdBlock -- DOMAIN-SUFFIX,adsor.openrunner.com,AdBlock -- DOMAIN-SUFFIX,adsp.xunlei.com,AdBlock -- DOMAIN-SUFFIX,ad-specs.guoshipartners.com,AdBlock -- DOMAIN-SUFFIX,adsqqclick.qq.com,AdBlock -- DOMAIN-SUFFIX,adsremote.scrippsnetworks.com,AdBlock -- DOMAIN-SUFFIX,adsrvr.org,AdBlock -- DOMAIN-SUFFIX,adss.dotdo.net,AdBlock -- DOMAIN-SUFFIX,adss.yahoo.com,AdBlock -- DOMAIN-SUFFIX,adstat.cp11.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,adstextview.qq.com,AdBlock -- DOMAIN-SUFFIX,adstil.indiatimes.com,AdBlock -- DOMAIN-SUFFIX,ad-stir.com,AdBlock -- DOMAIN-SUFFIX,adstream.123.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,ads-twitter.com,AdBlock -- DOMAIN-SUFFIX,adsunflower.com,AdBlock -- DOMAIN-SUFFIX,adsunion.com,AdBlock -- DOMAIN-SUFFIX,ad-survey.com,AdBlock -- DOMAIN-SUFFIX,adsview.qq.com,AdBlock -- DOMAIN-SUFFIX,adsview2.qq.com,AdBlock -- DOMAIN-SUFFIX,adsymptotic.com,AdBlock -- DOMAIN-SUFFIX,adsyndication.msn.com,AdBlock -- DOMAIN-SUFFIX,adsys.chinacloudapp.cn,AdBlock -- DOMAIN-SUFFIX,adsys.sinovision.net,AdBlock -- DOMAIN-SUFFIX,adtaily.com,AdBlock -- DOMAIN-SUFFIX,adtechjp.com,AdBlock -- DOMAIN-SUFFIX,adtechus.com,AdBlock -- DOMAIN-SUFFIX,adtest.theonion.com,AdBlock -- DOMAIN-SUFFIX,adthor.com,AdBlock -- DOMAIN-SUFFIX,adtrack.ucweb.com,AdBlock -- DOMAIN-SUFFIX,adtrk.me,AdBlock -- DOMAIN-SUFFIX,adui.tg.meitu.com,AdBlock -- DOMAIN-SUFFIX,adultfriendfinder.com,AdBlock -- DOMAIN-SUFFIX,adups.com,AdBlock -- DOMAIN-SUFFIX,aduu.cn,AdBlock -- DOMAIN-SUFFIX,adv.app.qq.com,AdBlock -- DOMAIN-SUFFIX,adv.ccb.com,AdBlock -- DOMAIN-SUFFIX,adv.fjtv.net,AdBlock -- DOMAIN-SUFFIX,adv.jxnews.com.cn,AdBlock -- DOMAIN-SUFFIX,adv.madserving.com,AdBlock -- DOMAIN-SUFFIX,adv.s8bbs.com,AdBlock -- DOMAIN-SUFFIX,adv.sec.miui.com,AdBlock -- DOMAIN-SUFFIX,adv2.downsave.com,AdBlock -- DOMAIN-SUFFIX,advapi.ahtv.cn,AdBlock -- DOMAIN-SUFFIX,adver.qq.com,AdBlock -- DOMAIN-SUFFIX,adview.cn,AdBlock -- DOMAIN-SUFFIX,advmob.cn,AdBlock -- DOMAIN-SUFFIX,advombat.ru,AdBlock -- DOMAIN-SUFFIX,adwasu.wasu.tv,AdBlock -- DOMAIN-SUFFIX,adweb.test.ximalaya.com,AdBlock -- DOMAIN-SUFFIX,adweb.ximalaya.com,AdBlock -- DOMAIN-SUFFIX,adwhirl.com,AdBlock -- DOMAIN-SUFFIX,adwo.com,AdBlock -- DOMAIN-SUFFIX,adx.adxglobal.com,AdBlock -- DOMAIN-SUFFIX,adx.chip.de,AdBlock -- DOMAIN-SUFFIX,adx.dlads.cn,AdBlock -- DOMAIN-SUFFIX,adx.kat.ph,AdBlock -- DOMAIN-SUFFIX,adx.pro.cn,AdBlock -- DOMAIN-SUFFIX,adx.xiaodutv.com,AdBlock -- DOMAIN-SUFFIX,adx3.iq39.com,AdBlock -- DOMAIN-SUFFIX,adxmi.com,AdBlock -- DOMAIN-SUFFIX,adxpansion.com,AdBlock -- DOMAIN-SUFFIX,adxserver.ad.cmvideo.cn,AdBlock -- DOMAIN-SUFFIX,adytx.com,AdBlock -- DOMAIN-SUFFIX,adyun.com,AdBlock -- DOMAIN-SUFFIX,adz.zwee.ly,AdBlock -- DOMAIN-SUFFIX,adzerk.net,AdBlock -- DOMAIN-SUFFIX,aec.shjk123.net,AdBlock -- DOMAIN-SUFFIX,aecpm.alicdn.com,AdBlock -- DOMAIN-SUFFIX,ae-gb.mgid.com,AdBlock -- DOMAIN-SUFFIX,aercxy.com,AdBlock -- DOMAIN-SUFFIX,aerserv.com,AdBlock -- DOMAIN-SUFFIX,aes01.com,AdBlock -- DOMAIN-SUFFIX,afd.baidu.com,AdBlock -- DOMAIN-SUFFIX,afd.l.google.com,AdBlock -- DOMAIN-SUFFIX,aff.eteachergroup.com,AdBlock -- DOMAIN-SUFFIX,aff.lmgtfy.com,AdBlock -- DOMAIN-SUFFIX,aff.marathonbet.com,AdBlock -- DOMAIN-SUFFIX,aff.svjump.com,AdBlock -- DOMAIN-SUFFIX,affil.mupromo.com,AdBlock -- DOMAIN-SUFFIX,affiliategroove.com,AdBlock -- DOMAIN-SUFFIX,affiliateprogram.keywordspy.com,AdBlock -- DOMAIN-SUFFIX,affiliates.allposters.com,AdBlock -- DOMAIN-SUFFIX,affiliates.goodvibes.com,AdBlock -- DOMAIN-SUFFIX,affiliates.thrixxx.com,AdBlock -- DOMAIN-SUFFIX,affiliatesmedia.sbobet.com,AdBlock -- DOMAIN-SUFFIX,affiliation.fotovista.com,AdBlock -- DOMAIN-SUFFIX,afjlb.com,AdBlock -- DOMAIN-SUFFIX,afp.alicdn.com,AdBlock -- DOMAIN-SUFFIX,afp.chinanews.com,AdBlock -- DOMAIN-SUFFIX,afp.csbew.com,AdBlock -- DOMAIN-SUFFIX,afp.m1905.com,AdBlock -- DOMAIN-SUFFIX,afp.wasu.cn,AdBlock -- DOMAIN-SUFFIX,afp.zol-img.com.cn,AdBlock -- DOMAIN-SUFFIX,afpcreative.wasu.cn,AdBlock -- DOMAIN-SUFFIX,afpimages.eastday,AdBlock -- DOMAIN-SUFFIX,afpimages.eastday.com,AdBlock -- DOMAIN-SUFFIX,afpmm.alicdn.com,AdBlock -- DOMAIN-SUFFIX,afptrack.csbew.com,AdBlock -- DOMAIN-SUFFIX,ag.nukefans.net,AdBlock -- DOMAIN-SUFFIX,agenda.complex.com,AdBlock -- DOMAIN-SUFFIX,ag-gb.marketgid.com,AdBlock -- DOMAIN-SUFFIX,agn.aty.cp45.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,agn.aty.snmsohu.aisee.tv,AdBlock -- DOMAIN-SUFFIX,agoodm.m.taobao.com,AdBlock -- DOMAIN-SUFFIX,agr.voiceads.cn,AdBlock -- DOMAIN-SUFFIX,agrant.cn,AdBlock -- DOMAIN-SUFFIX,agrantsem.com,AdBlock -- DOMAIN-SUFFIX,ahhuazhen.com,AdBlock -- DOMAIN-SUFFIX,ahyau.com,AdBlock -- DOMAIN-SUFFIX,ahyuns.com,AdBlock -- DOMAIN-SUFFIX,ai.bioon.com,AdBlock -- DOMAIN-SUFFIX,ai.m.taobao.com,AdBlock -- DOMAIN-SUFFIX,ai.taobao.com,AdBlock -- DOMAIN-SUFFIX,ai.xinju.cc,AdBlock -- DOMAIN-SUFFIX,ai.yimg.jp,AdBlock -- DOMAIN-SUFFIX,aibangzs.com,AdBlock -- DOMAIN-SUFFIX,aiclk.com,AdBlock -- DOMAIN-SUFFIX,aicydb.com,AdBlock -- DOMAIN-SUFFIX,aid.chinayk.com,AdBlock -- DOMAIN-SUFFIX,aider-res.meizu.com,AdBlock -- DOMAIN-SUFFIX,aihaoduo.cn,AdBlock -- DOMAIN-SUFFIX,aikan6.com,AdBlock -- DOMAIN-SUFFIX,ailicee.com,AdBlock -- DOMAIN-SUFFIX,aim.yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,air.yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,airpush.com,AdBlock -- DOMAIN-SUFFIX,airpushmarketing.s3.amazonaws.com,AdBlock -- DOMAIN-SUFFIX,ais.abacast.com,AdBlock -- DOMAIN-SUFFIX,aishang.bid,AdBlock -- DOMAIN-SUFFIX,aishiguolong.com,AdBlock -- DOMAIN-SUFFIX,aishowbger.com,AdBlock -- DOMAIN-SUFFIX,aiwen.cc,AdBlock -- DOMAIN-SUFFIX,ajapk.com,AdBlock -- DOMAIN-SUFFIX,ajaxcdn.org,AdBlock -- DOMAIN-SUFFIX,aj-gb.mgid.com,AdBlock -- DOMAIN-SUFFIX,ajhdf.com,AdBlock -- DOMAIN-SUFFIX,ajialive.com,AdBlock -- DOMAIN-SUFFIX,ajnad.aljazeera.net,AdBlock -- DOMAIN-SUFFIX,ajuhd.com,AdBlock -- DOMAIN-SUFFIX,ak.sascdn.com,AdBlock -- DOMAIN-SUFFIX,ak47.cooguo.com,AdBlock -- DOMAIN-SUFFIX,akrwi.cn,AdBlock -- DOMAIN-SUFFIX,akuai.top,AdBlock -- DOMAIN-SUFFIX,akxsrsdbursfpx.bid,AdBlock -- DOMAIN-SUFFIX,al.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,alertserver.ushaqi.com,AdBlock -- DOMAIN-SUFFIX,alipay.dajiadou6.com,AdBlock -- DOMAIN-SUFFIX,aliqqjd.cn,AdBlock -- DOMAIN-SUFFIX,alisinak.com,AdBlock -- DOMAIN-SUFFIX,alissl.ucdl.pp.uc.cn,AdBlock -- DOMAIN-SUFFIX,alistatic.cn,AdBlock -- DOMAIN-SUFFIX,alitianxia168.com,AdBlock -- DOMAIN-SUFFIX,alitui.weibo.com,AdBlock -- DOMAIN-SUFFIX,aliunion.cn.yahoo.com,AdBlock -- DOMAIN-SUFFIX,aliyuncss.com,AdBlock -- DOMAIN-SUFFIX,aliyunxin.com,AdBlock -- DOMAIN-SUFFIX,all.orfr.adgtw.orangeads.fr,AdBlock -- DOMAIN-SUFFIX,all.rising.com.cn,AdBlock -- DOMAIN-SUFFIX,allnews.uodoo.com,AdBlock -- DOMAIN-SUFFIX,allxin.com,AdBlock -- DOMAIN-SUFFIX,als.baidu.com,AdBlock -- DOMAIN-SUFFIX,alvares.esportsheaven.com,AdBlock -- DOMAIN-SUFFIX,am.6park.com,AdBlock -- DOMAIN-SUFFIX,am.g.ireader.com,AdBlock -- DOMAIN-SUFFIX,am.szhome.com,AdBlock -- DOMAIN-SUFFIX,am.zdnet.com.cn,AdBlock -- DOMAIN-SUFFIX,am15.net,AdBlock -- DOMAIN-SUFFIX,amazingmagics.com,AdBlock -- DOMAIN-SUFFIX,amdc.m.taobao.com,AdBlock -- DOMAIN-SUFFIX,amfi.gou.sogou.com,AdBlock -- DOMAIN-SUFFIX,amiok.org,AdBlock -- DOMAIN-SUFFIX,amps.yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,ams.fx678.com,AdBlock -- DOMAIN-SUFFIX,ams.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,a-m-s.poco.cn,AdBlock -- DOMAIN-SUFFIX,amz.steamprices.com,AdBlock -- DOMAIN-SUFFIX,an.m.liebao.cn,AdBlock -- DOMAIN-SUFFIX,an.wikigifth.com,AdBlock -- DOMAIN-SUFFIX,an.yandex.ru,AdBlock -- DOMAIN-SUFFIX,ana.tatahn.com,AdBlock -- DOMAIN-SUFFIX,analy.qq.com,AdBlock -- DOMAIN-SUFFIX,andmejs.com,AdBlock -- DOMAIN-SUFFIX,android.push.126.net,AdBlock -- DOMAIN-SUFFIX,android.rqd.qq.com,AdBlock -- DOMAIN-SUFFIX,androidlog.shouji.baofeng.com,AdBlock -- DOMAIN-SUFFIX,android-lrcresource.wps.cn,AdBlock -- DOMAIN-SUFFIX,andrqd.play.aiseet.atianqi.com,AdBlock -- DOMAIN-SUFFIX,anfeng.com,AdBlock -- DOMAIN-SUFFIX,angsrvr.com,AdBlock -- DOMAIN-SUFFIX,anioscp.com,AdBlock -- DOMAIN-SUFFIX,ann5.net,AdBlock -- DOMAIN-SUFFIX,anquan.baidu.com,AdBlock -- DOMAIN-SUFFIX,anquan.org,AdBlock -- DOMAIN-SUFFIX,anreson.net,AdBlock -- DOMAIN-SUFFIX,antivirus.baidu.com,AdBlock -- DOMAIN-SUFFIX,anyangruisi.com,AdBlock -- DOMAIN-SUFFIX,anysdk.com,AdBlock -- DOMAIN-SUFFIX,aodongjiaosu.com,AdBlock -- DOMAIN-SUFFIX,aombjl099.com,AdBlock -- DOMAIN-SUFFIX,aoodoo.feng.com,AdBlock -- DOMAIN-SUFFIX,aoodoo.weiphone.com,AdBlock -- DOMAIN-SUFFIX,aos.wall.youmi.net,AdBlock -- DOMAIN-SUFFIX,aos-creative.prf.hn,AdBlock -- DOMAIN-SUFFIX,apas.aipai.com,AdBlock -- DOMAIN-SUFFIX,api.0.0.0.0.cn,AdBlock -- DOMAIN-SUFFIX,api.adv.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,api.ahjinshu.com,AdBlock -- DOMAIN-SUFFIX,api.android.dianru.com,AdBlock -- DOMAIN-SUFFIX,api.anti.wauee.com,AdBlock -- DOMAIN-SUFFIX,api.appodeal.com,AdBlock -- DOMAIN-SUFFIX,api.apps.sina.cn,AdBlock -- DOMAIN-SUFFIX,api.bailingjiankang.com,AdBlock -- DOMAIN-SUFFIX,api.bs.zui.com,AdBlock -- DOMAIN-SUFFIX,api.cmt.mob.com,AdBlock -- DOMAIN-SUFFIX,api.coolguang.com,AdBlock -- DOMAIN-SUFFIX,api.dewmobile.net,AdBlock -- DOMAIN-SUFFIX,api.dianru.com,AdBlock -- DOMAIN-SUFFIX,api.doumob.com,AdBlock -- DOMAIN-SUFFIX,api.dreamfull.cn,AdBlock -- DOMAIN-SUFFIX,api.dsp.yhd.com,AdBlock -- DOMAIN-SUFFIX,api.exc.mob.com,AdBlock -- DOMAIN-SUFFIX,api.g1.junfull.com,AdBlock -- DOMAIN-SUFFIX,api.g2.junfull.com,AdBlock -- DOMAIN-SUFFIX,api.gi.igexin.com,AdBlock -- DOMAIN-SUFFIX,api.goulegu.com,AdBlock -- DOMAIN-SUFFIX,api.growingio.com,AdBlock -- DOMAIN-SUFFIX,api.iapps.ifeng.com,AdBlock -- DOMAIN-SUFFIX,api.iimedia.cn,AdBlock -- DOMAIN-SUFFIX,api.ijunhai.com,AdBlock -- DOMAIN-SUFFIX,api.itaoxiaoshuo.com,AdBlock -- DOMAIN-SUFFIX,api.joybj.com,AdBlock -- DOMAIN-SUFFIX,api.ketedata.com,AdBlock -- DOMAIN-SUFFIX,api.koudaikj.com,AdBlock -- DOMAIN-SUFFIX,api.leadbolt.net,AdBlock -- DOMAIN-SUFFIX,api.mobgi.com,AdBlock -- DOMAIN-SUFFIX,api.mobula.sdk.duapps.com,AdBlock -- DOMAIN-SUFFIX,api.moogos.com,AdBlock -- DOMAIN-SUFFIX,api.mp.uc.cn,AdBlock -- DOMAIN-SUFFIX,api.newad.ifeng.com,AdBlock -- DOMAIN-SUFFIX,api.newbelden.com,AdBlock -- DOMAIN-SUFFIX,api.open.uc.cn,AdBlock -- DOMAIN-SUFFIX,api.pingstart.com,AdBlock -- DOMAIN-SUFFIX,api.ppoi.org,AdBlock -- DOMAIN-SUFFIX,api.primecaster.net,AdBlock -- DOMAIN-SUFFIX,api.push.daoyoudao.com,AdBlock -- DOMAIN-SUFFIX,api.ra2.xlmc.sec.miui.com,AdBlock -- DOMAIN-SUFFIX,api.rees46.com,AdBlock -- DOMAIN-SUFFIX,api.rideraid.net,AdBlock -- DOMAIN-SUFFIX,api.share.mob.com,AdBlock -- DOMAIN-SUFFIX,api.shuzilm.cn,AdBlock -- DOMAIN-SUFFIX,api.similarweb.com,AdBlock -- DOMAIN-SUFFIX,api.tr.blismedia.com,AdBlock -- DOMAIN-SUFFIX,api.tw06.xlmc.sec.miui.com,AdBlock -- DOMAIN-SUFFIX,api.ujian.cc,AdBlock -- DOMAIN-SUFFIX,api.union.vip.com,AdBlock -- DOMAIN-SUFFIX,api.uniplayad.com,AdBlock -- DOMAIN-SUFFIX,api.userstyles.org,AdBlock -- DOMAIN-SUFFIX,api.viglink.com,AdBlock -- DOMAIN-SUFFIX,api.waptest.taobao.com,AdBlock -- DOMAIN-SUFFIX,api.whizzone.com,AdBlock -- DOMAIN-SUFFIX,api.xk.miui.com,AdBlock -- DOMAIN-SUFFIX,api.y.igexin.com,AdBlock -- DOMAIN-SUFFIX,api.youxiaoad.com,AdBlock -- DOMAIN-SUFFIX,api.zol.com,AdBlock -- DOMAIN-SUFFIX,api2.play.cn,AdBlock -- DOMAIN-SUFFIX,api-flow.flyme.cn,AdBlock -- DOMAIN-SUFFIX,api-game.meizu.com,AdBlock -- DOMAIN-SUFFIX,apihk.growingio.com,AdBlock -- DOMAIN-SUFFIX,api-push.meizu.com,AdBlock -- DOMAIN-SUFFIX,api-shoulei-ssl.xunlei.com,AdBlock -- DOMAIN-SUFFIX,apisoft.df0535.com,AdBlock -- DOMAIN-SUFFIX,apk.idate520.com,AdBlock -- DOMAIN-SUFFIX,apk.supfast.net,AdBlock -- DOMAIN-SUFFIX,apkdo.com,AdBlock -- DOMAIN-SUFFIX,apkinfo.voole.com,AdBlock -- DOMAIN-SUFFIX,apklog.cp11.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,apnmedia.ask.com,AdBlock -- DOMAIN-SUFFIX,apns.ios.ijinshan.com,AdBlock -- DOMAIN-SUFFIX,apoll.m.taobao.com,AdBlock -- DOMAIN-SUFFIX,apollo.caixin.com,AdBlock -- DOMAIN-SUFFIX,app.3987.com,AdBlock -- DOMAIN-SUFFIX,app.9yyg.cn,AdBlock -- DOMAIN-SUFFIX,app.abc000.today,AdBlock -- DOMAIN-SUFFIX,app.acm.dzwww.com,AdBlock -- DOMAIN-SUFFIX,app.adjust.com,AdBlock -- DOMAIN-SUFFIX,app.eduancm.com,AdBlock -- DOMAIN-SUFFIX,app.houyi.baofeng.net,AdBlock -- DOMAIN-SUFFIX,app.hytdsm.com,AdBlock -- DOMAIN-SUFFIX,app.ibaiducdn.com,AdBlock -- DOMAIN-SUFFIX,app.jgyee.com,AdBlock -- DOMAIN-SUFFIX,app.jiuzhilan.com,AdBlock -- DOMAIN-SUFFIX,app.juwang.com,AdBlock -- DOMAIN-SUFFIX,app.lz55.cn,AdBlock -- DOMAIN-SUFFIX,app.moji001.com,AdBlock -- DOMAIN-SUFFIX,app.starschina.com,AdBlock -- DOMAIN-SUFFIX,app.tanwan.com,AdBlock -- DOMAIN-SUFFIX,app.uu.cc,AdBlock -- DOMAIN-SUFFIX,app.waps.cn,AdBlock -- DOMAIN-SUFFIX,app.wapx.cn,AdBlock -- DOMAIN-SUFFIX,app.wumii.com,AdBlock -- DOMAIN-SUFFIX,app.xizi.com,AdBlock -- DOMAIN-SUFFIX,app.xyjqy.com,AdBlock -- DOMAIN-SUFFIX,app01.nodes.gslb.mi-idc.com,AdBlock -- DOMAIN-SUFFIX,app02.nodes.gslb.mi-idc.com,AdBlock -- DOMAIN-SUFFIX,appads.com,AdBlock -- DOMAIN-SUFFIX,appboy.com,AdBlock -- DOMAIN-SUFFIX,appc.baidu.com,AdBlock -- DOMAIN-SUFFIX,appcdn.wapx.cn,AdBlock -- DOMAIN-SUFFIX,appcdn.wapx.com,AdBlock -- DOMAIN-SUFFIX,appcpa.net,AdBlock -- DOMAIN-SUFFIX,appdriver.cn,AdBlock -- DOMAIN-SUFFIX,appdriver.com.cn,AdBlock -- DOMAIN-SUFFIX,appfh.com,AdBlock -- DOMAIN-SUFFIX,app-g.39.net,AdBlock -- DOMAIN-SUFFIX,appget.cn,AdBlock -- DOMAIN-SUFFIX,appgift.sinaapp.com,AdBlock -- DOMAIN-SUFFIX,appjiagu.com,AdBlock -- DOMAIN-SUFFIX,applifier.com,AdBlock -- DOMAIN-SUFFIX,applog.uc.cn,AdBlock -- DOMAIN-SUFFIX,applogapi.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,applogios.uc.cn,AdBlock -- DOMAIN-SUFFIX,app-monitor.ele.me,AdBlock -- DOMAIN-SUFFIX,appnext.com,AdBlock -- DOMAIN-SUFFIX,appodealx.com,AdBlock -- DOMAIN-SUFFIX,apppic.yingyongbei.com,AdBlock -- DOMAIN-SUFFIX,apps.mobilityware.com,AdBlock -- DOMAIN-SUFFIX,apps.outfit7.com,AdBlock -- DOMAIN-SUFFIX,apps.supfast.net,AdBlock -- DOMAIN-SUFFIX,apps2.outfit7.com,AdBlock -- DOMAIN-SUFFIX,appsdk.tanv.com,AdBlock -- DOMAIN-SUFFIX,appservices.comcsoft.com,AdBlock -- DOMAIN-SUFFIX,appspromote.wostore.cn,AdBlock -- DOMAIN-SUFFIX,appsrv1.madserving.com,AdBlock -- DOMAIN-SUFFIX,appsrv4.madserving.com,AdBlock -- DOMAIN-SUFFIX,appsupdate.sinaapp.com,AdBlock -- DOMAIN-SUFFIX,appsupport.stargame.com,AdBlock -- DOMAIN-SUFFIX,apptentive.com,AdBlock -- DOMAIN-SUFFIX,appuu.cn,AdBlock -- DOMAIN-SUFFIX,apt.qumi.com,AdBlock -- DOMAIN-SUFFIX,aqgyju.cn,AdBlock -- DOMAIN-SUFFIX,aqqgli3vle.bid,AdBlock -- DOMAIN-SUFFIX,aqw.quanliyouxi.cn,AdBlock -- DOMAIN-SUFFIX,ar.atwola.com,AdBlock -- DOMAIN-SUFFIX,ar1.atwola.com,AdBlock -- DOMAIN-SUFFIX,ar7.atwola.com,AdBlock -- DOMAIN-SUFFIX,ar9.atwola.com,AdBlock -- DOMAIN-SUFFIX,aralego.com,AdBlock -- DOMAIN-SUFFIX,ard.ihookup.com,AdBlock -- DOMAIN-SUFFIX,ard.sweetdiscreet.com,AdBlock -- DOMAIN-SUFFIX,ard.yahoo.co.jp,AdBlock -- DOMAIN-SUFFIX,ardmall.com,AdBlock -- DOMAIN-SUFFIX,arealx.com,AdBlock -- DOMAIN-SUFFIX,aries.mzres.com,AdBlock -- DOMAIN-SUFFIX,ark.cocounion.com,AdBlock -- DOMAIN-SUFFIX,ark.cp21.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,art.theta.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,as.bjmama.net,AdBlock -- DOMAIN-SUFFIX,as.casalemedia.com,AdBlock -- DOMAIN-SUFFIX,as.inbox.com,AdBlock -- DOMAIN-SUFFIX,as.kejet.com,AdBlock -- DOMAIN-SUFFIX,as.kejet.net,AdBlock -- DOMAIN-SUFFIX,as.sinahk.net,AdBlock -- DOMAIN-SUFFIX,as.trklinklog.com,AdBlock -- DOMAIN-SUFFIX,as.yuewz.com,AdBlock -- DOMAIN-SUFFIX,asd.projectfreetv.so,AdBlock -- DOMAIN-SUFFIX,asearch.alicdn.com,AdBlock -- DOMAIN-SUFFIX,ashiping.com,AdBlock -- DOMAIN-SUFFIX,ashow.pcpop.com,AdBlock -- DOMAIN-SUFFIX,asia.marketo.com,AdBlock -- DOMAIN-SUFFIX,ask.gaykes.com,AdBlock -- DOMAIN-SUFFIX,assets.210189.com,AdBlock -- DOMAIN-SUFFIX,assets.2343sdxs.com,AdBlock -- DOMAIN-SUFFIX,assets.258pcf.com,AdBlock -- DOMAIN-SUFFIX,assets.258ydh.com,AdBlock -- DOMAIN-SUFFIX,assets.easou.com,AdBlock -- DOMAIN-SUFFIX,asv.nuggad.net,AdBlock -- DOMAIN-SUFFIX,aswgbzsw.xingtangshuo.com,AdBlock -- DOMAIN-SUFFIX,aswl.d3kdh34.pw,AdBlock -- DOMAIN-SUFFIX,aswl.dfs3e4.pw,AdBlock -- DOMAIN-SUFFIX,aswl.zjhim.com,AdBlock -- DOMAIN-SUFFIX,aswlx.cn,AdBlock -- DOMAIN-SUFFIX,at.atwola.com,AdBlock -- DOMAIN-SUFFIX,at.mct01.com,AdBlock -- DOMAIN-SUFFIX,at98.com,AdBlock -- DOMAIN-SUFFIX,atanx.alicdn.com,AdBlock -- DOMAIN-SUFFIX,atanx2.alicdn.com,AdBlock -- DOMAIN-SUFFIX,atas.io,AdBlock -- DOMAIN-SUFFIX,atcryp.com,AdBlock -- DOMAIN-SUFFIX,atdmt.com,AdBlock -- DOMAIN-SUFFIX,athena.wan.sogou.com,AdBlock -- DOMAIN-SUFFIX,atiws.aipai.com,AdBlock -- DOMAIN-SUFFIX,atm.punchbox.org,AdBlock -- DOMAIN-SUFFIX,atm.sina.com,AdBlock -- DOMAIN-SUFFIX,atm.yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,atomicblast.lol,AdBlock -- DOMAIN-SUFFIX,atplay.cn,AdBlock -- DOMAIN-SUFFIX,att.stargame.com,AdBlock -- DOMAIN-SUFFIX,attach.s8bbs.com,AdBlock -- DOMAIN-SUFFIX,au.youmi.net,AdBlock -- DOMAIN-SUFFIX,audience.network,AdBlock -- DOMAIN-SUFFIX,authedmine.com,AdBlock -- DOMAIN-SUFFIX,avn.innity.com,AdBlock -- DOMAIN-SUFFIX,avpa.dzone.com,AdBlock -- DOMAIN-SUFFIX,avualrhg9p.bid,AdBlock -- DOMAIN-SUFFIX,aw.kejet.net,AdBlock -- DOMAIN-SUFFIX,award.sitekeuring.net,AdBlock -- DOMAIN-SUFFIX,awempire.com,AdBlock -- DOMAIN-SUFFIX,awkjs.com,AdBlock -- DOMAIN-SUFFIX,awyys.com,AdBlock -- DOMAIN-SUFFIX,ax.120ask.com,AdBlock -- DOMAIN-SUFFIX,ax.ggfeng.com,AdBlock -- DOMAIN-SUFFIX,axhxa.com,AdBlock -- DOMAIN-SUFFIX,axiba66.com,AdBlock -- DOMAIN-SUFFIX,axkxy.com,AdBlock -- DOMAIN-SUFFIX,ayabreya.xyz,AdBlock -- DOMAIN-SUFFIX,b.53yao.com,AdBlock -- DOMAIN-SUFFIX,b.77vcd.com,AdBlock -- DOMAIN-SUFFIX,b.9dreams.net,AdBlock -- DOMAIN-SUFFIX,b.ads1.msn.com,AdBlock -- DOMAIN-SUFFIX,b.aowugame.com,AdBlock -- DOMAIN-SUFFIX,b.babylon.com,AdBlock -- DOMAIN-SUFFIX,b.baiy.net,AdBlock -- DOMAIN-SUFFIX,b.bst.126.net,AdBlock -- DOMAIN-SUFFIX,b.clkservice.youdao.com,AdBlock -- DOMAIN-SUFFIX,b.code.tanwanyx.com,AdBlock -- DOMAIN-SUFFIX,b.cyone.com.cn,AdBlock -- DOMAIN-SUFFIX,b.epinv.com,AdBlock -- DOMAIN-SUFFIX,b.flyreading.cn,AdBlock -- DOMAIN-SUFFIX,b.gwylm.com,AdBlock -- DOMAIN-SUFFIX,b.kuangtuiguoo18888.com,AdBlock -- DOMAIN-SUFFIX,b.livesport.eu,AdBlock -- DOMAIN-SUFFIX,b.localpages.com,AdBlock -- DOMAIN-SUFFIX,b.nvrentao8.com,AdBlock -- DOMAIN-SUFFIX,b.qchannel03.cn,AdBlock -- DOMAIN-SUFFIX,b.rifub.com,AdBlock -- DOMAIN-SUFFIX,b.scorecardresearch.com,AdBlock -- DOMAIN-SUFFIX,b.thefile.me,AdBlock -- DOMAIN-SUFFIX,b.xcafe.com,AdBlock -- DOMAIN-SUFFIX,b0.qinsx.cn,AdBlock -- DOMAIN-SUFFIX,b1.51scw.net,AdBlock -- DOMAIN-SUFFIX,b1.91jucai.com,AdBlock -- DOMAIN-SUFFIX,b1.c1km4.com,AdBlock -- DOMAIN-SUFFIX,b17.8794.cn,AdBlock -- DOMAIN-SUFFIX,b17.shangc.net,AdBlock -- DOMAIN-SUFFIX,b17.xiumu.cn,AdBlock -- DOMAIN-SUFFIX,b1sync.zemanta.com,AdBlock -- DOMAIN-SUFFIX,b4xuj.zzhhts.com,AdBlock -- DOMAIN-SUFFIX,b7nkd.cn,AdBlock -- DOMAIN-SUFFIX,b92.putniktravel.com,AdBlock -- DOMAIN-SUFFIX,b9377h.com,AdBlock -- DOMAIN-SUFFIX,b99u.top,AdBlock -- DOMAIN-SUFFIX,ba.ccm2.net,AdBlock -- DOMAIN-SUFFIX,ba.fqzds.com,AdBlock -- DOMAIN-SUFFIX,ba.kioskea.net,AdBlock -- DOMAIN-SUFFIX,baby.yf898.com,AdBlock -- DOMAIN-SUFFIX,backup.lumion3d.com,AdBlock -- DOMAIN-SUFFIX,backup.lumion3d.net,AdBlock -- DOMAIN-SUFFIX,bad1.51gxqm.com,AdBlock -- DOMAIN-SUFFIX,badad.googleplex.com,AdBlock -- DOMAIN-SUFFIX,badao37.net,AdBlock -- DOMAIN-SUFFIX,bai3.gushiwen.org,AdBlock -- DOMAIN-SUFFIX,baiapk.com,AdBlock -- DOMAIN-SUFFIX,baichuan.baidu.com,AdBlock -- DOMAIN-SUFFIX,baidu.cybcyw.com,AdBlock -- DOMAIN-SUFFIX,baidu.dsp.tansuotv.com,AdBlock -- DOMAIN-SUFFIX,baidu.greenxf.cn,AdBlock -- DOMAIN-SUFFIX,baidu.jz5u.net,AdBlock -- DOMAIN-SUFFIX,baiduace.com,AdBlock -- DOMAIN-SUFFIX,baidujs.cnys.com,AdBlock -- DOMAIN-SUFFIX,baidulao.com,AdBlock -- DOMAIN-SUFFIX,baidustatic.com,AdBlock -- DOMAIN-SUFFIX,baidut.github.io,AdBlock -- DOMAIN-SUFFIX,baidutv.baidu.com,AdBlock -- DOMAIN-SUFFIX,baidu-union-js.xiachufang.com,AdBlock -- DOMAIN-SUFFIX,baidu-union-pos.xiachufang.com,AdBlock -- DOMAIN-SUFFIX,baiduyubaidu.com,AdBlock -- DOMAIN-SUFFIX,baiduzhidahao.cc,AdBlock -- DOMAIN-SUFFIX,baifen.music.baidu.com,AdBlock -- DOMAIN-SUFFIX,baifendian.com,AdBlock -- DOMAIN-SUFFIX,baigm.com,AdBlock -- DOMAIN-SUFFIX,baiwanchuangyi.com,AdBlock -- DOMAIN-SUFFIX,banlv.baidu.com,AdBlock -- DOMAIN-SUFFIX,banmamedia.com,AdBlock -- DOMAIN-SUFFIX,bannedbook.org,AdBlock -- DOMAIN-SUFFIX,banner.101xp.com,AdBlock -- DOMAIN-SUFFIX,banner.3ddownloads.com,AdBlock -- DOMAIN-SUFFIX,banner.automotiveworld.com,AdBlock -- DOMAIN-SUFFIX,banner.cooguo.com,AdBlock -- DOMAIN-SUFFIX,banner.europacasino.com,AdBlock -- DOMAIN-SUFFIX,banner.itweb.co.za,AdBlock -- DOMAIN-SUFFIX,banner.telefragged.com,AdBlock -- DOMAIN-SUFFIX,banner.titancasino.com,AdBlock -- DOMAIN-SUFFIX,banner1.pornhost.com,AdBlock -- DOMAIN-SUFFIX,banners.beevpn.com,AdBlock -- DOMAIN-SUFFIX,banners.beted.com,AdBlock -- DOMAIN-SUFFIX,banners.cams.com,AdBlock -- DOMAIN-SUFFIX,banners.clubworldgroup.com,AdBlock -- DOMAIN-SUFFIX,banners.expressindia.com,AdBlock -- DOMAIN-SUFFIX,banners.itweb.co.za,AdBlock -- DOMAIN-SUFFIX,banners.playocio.com,AdBlock -- DOMAIN-SUFFIX,bannershotlink.perfectgonzo.com,AdBlock -- DOMAIN-SUFFIX,baoyatu.cc,AdBlock -- DOMAIN-SUFFIX,bar.baidu.com,AdBlock -- DOMAIN-SUFFIX,bartender.cc,AdBlock -- DOMAIN-SUFFIX,base.filedot.xyz,AdBlock -- DOMAIN-SUFFIX,bat.bing.com,AdBlock -- DOMAIN-SUFFIX,bax.xiawu.com,AdBlock -- DOMAIN-SUFFIX,baxf.m.shuhuangge.org,AdBlock -- DOMAIN-SUFFIX,bay.xiawu.com,AdBlock -- DOMAIN-SUFFIX,baycode.cn,AdBlock -- DOMAIN-SUFFIX,bayimob.com,AdBlock -- DOMAIN-SUFFIX,bazinga.mse.sogou.com,AdBlock -- DOMAIN-SUFFIX,bb.tuku.cc,AdBlock -- DOMAIN-SUFFIX,bb1429.com,AdBlock -- DOMAIN-SUFFIX,bbcc.yxlady.com,AdBlock -- DOMAIN-SUFFIX,bbcoe.cn,AdBlock -- DOMAIN-SUFFIX,bbdm.051661.com,AdBlock -- DOMAIN-SUFFIX,bbsimages.zkxf119.com,AdBlock -- DOMAIN-SUFFIX,bc.geocities.yahoo.co.jp,AdBlock -- DOMAIN-SUFFIX,bccyyc.com,AdBlock -- DOMAIN-SUFFIX,bcjjg.bugsevent.com,AdBlock -- DOMAIN-SUFFIX,bcjxf.bugsevent.com,AdBlock -- DOMAIN-SUFFIX,bd.ershenghuo.com,AdBlock -- DOMAIN-SUFFIX,bd.gow100.com,AdBlock -- DOMAIN-SUFFIX,bd.haomagujia.com,AdBlock -- DOMAIN-SUFFIX,bd.soarfi.cn,AdBlock -- DOMAIN-SUFFIX,bd.wayqq.cn,AdBlock -- DOMAIN-SUFFIX,bd01.daqiso.com,AdBlock -- DOMAIN-SUFFIX,bd1.365qilu.com,AdBlock -- DOMAIN-SUFFIX,bd1.52che.com,AdBlock -- DOMAIN-SUFFIX,bd1.fengdu100.com,AdBlock -- DOMAIN-SUFFIX,bd1.flfgw.cn,AdBlock -- DOMAIN-SUFFIX,bd1.home8080.cn,AdBlock -- DOMAIN-SUFFIX,bd1.jobui.com,AdBlock -- DOMAIN-SUFFIX,bd1.nipic.com,AdBlock -- DOMAIN-SUFFIX,bd1.nxing.cn,AdBlock -- DOMAIN-SUFFIX,bd1.pipaw.com,AdBlock -- DOMAIN-SUFFIX,bd1.szhk.com,AdBlock -- DOMAIN-SUFFIX,bd1.wowoqq.com,AdBlock -- DOMAIN-SUFFIX,bd1.xiangha.com,AdBlock -- DOMAIN-SUFFIX,bd2.52che.com,AdBlock -- DOMAIN-SUFFIX,bd2.flfgw.cn,AdBlock -- DOMAIN-SUFFIX,bd2.home8080.cn,AdBlock -- DOMAIN-SUFFIX,bd2.jobui.com,AdBlock -- DOMAIN-SUFFIX,bd2.nipic.com,AdBlock -- DOMAIN-SUFFIX,bd2.pipaw.com,AdBlock -- DOMAIN-SUFFIX,bd3.chuiyue.com,AdBlock -- DOMAIN-SUFFIX,bd3.jobui.com,AdBlock -- DOMAIN-SUFFIX,bd4.chuiyue.com,AdBlock -- DOMAIN-SUFFIX,bdad.hao224.com,AdBlock -- DOMAIN-SUFFIX,bdcode.gaosan.com,AdBlock -- DOMAIN-SUFFIX,bdcode.youke.com,AdBlock -- DOMAIN-SUFFIX,bdd.hainan.net,AdBlock -- DOMAIN-SUFFIX,bddm.999d.com,AdBlock -- DOMAIN-SUFFIX,bdfpb1.8684.com,AdBlock -- DOMAIN-SUFFIX,bdfpb2.8684.com,AdBlock -- DOMAIN-SUFFIX,bdjiaoben.wmxa.cn,AdBlock -- DOMAIN-SUFFIX,bdjs.120askimages.com,AdBlock -- DOMAIN-SUFFIX,bdjs.6237237.com,AdBlock -- DOMAIN-SUFFIX,bdjs.99.com.cn,AdBlock -- DOMAIN-SUFFIX,bdjs.999d.com,AdBlock -- DOMAIN-SUFFIX,bd-js.baixing.net,AdBlock -- DOMAIN-SUFFIX,bdjs.faxingzhan.com,AdBlock -- DOMAIN-SUFFIX,bdjs.itechwall.com,AdBlock -- DOMAIN-SUFFIX,bdjs.ixiumei.com,AdBlock -- DOMAIN-SUFFIX,bdjs.jb51.net,AdBlock -- DOMAIN-SUFFIX,bdjs.kaixin100.com,AdBlock -- DOMAIN-SUFFIX,bdjs.laonanren.com,AdBlock -- DOMAIN-SUFFIX,bdjs.ylq.com,AdBlock -- DOMAIN-SUFFIX,bdjs1.ixiumei.com,AdBlock -- DOMAIN-SUFFIX,bdlm.120askimages.com,AdBlock -- DOMAIN-SUFFIX,bdlm1.hc360.com,AdBlock -- DOMAIN-SUFFIX,bdlncs1.familydoctor.com.cn,AdBlock -- DOMAIN-SUFFIX,bdmjs.xywy.com,AdBlock -- DOMAIN-SUFFIX,bdmm.xywy.com,AdBlock -- DOMAIN-SUFFIX,bdplus.baidu.com,AdBlock -- DOMAIN-SUFFIX,bdpuaw.com,AdBlock -- DOMAIN-SUFFIX,bd-s.baixing.net,AdBlock -- DOMAIN-SUFFIX,bds.hainan.net,AdBlock -- DOMAIN-SUFFIX,bds.soarfi.cn,AdBlock -- DOMAIN-SUFFIX,bdtongfei.cn,AdBlock -- DOMAIN-SUFFIX,bduserlog.eastmoney.com,AdBlock -- DOMAIN-SUFFIX,beacon.gtimg.com,AdBlock -- DOMAIN-SUFFIX,beacon.krxd.net,AdBlock -- DOMAIN-SUFFIX,beacon.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,beacon.tingyun.com,AdBlock -- DOMAIN-SUFFIX,beacon-us-sjc1.rubiconproject.com,AdBlock -- DOMAIN-SUFFIX,beap.adss.yahoo.com,AdBlock -- DOMAIN-SUFFIX,beap-bc.yahoo.com,AdBlock -- DOMAIN-SUFFIX,bebelait.com,AdBlock -- DOMAIN-SUFFIX,becode.qiushibaike.com,AdBlock -- DOMAIN-SUFFIX,beeho.site,AdBlock -- DOMAIN-SUFFIX,beerto.cn,AdBlock -- DOMAIN-SUFFIX,beha.ksmobile.com,AdBlock -- DOMAIN-SUFFIX,behe.com,AdBlock -- DOMAIN-SUFFIX,beilamusi.com,AdBlock -- DOMAIN-SUFFIX,beintoo.com,AdBlock -- DOMAIN-SUFFIX,benshiw.net,AdBlock -- DOMAIN-SUFFIX,bepolite.eu,AdBlock -- DOMAIN-SUFFIX,bes-progfree.com,AdBlock -- DOMAIN-SUFFIX,bet36500050.com,AdBlock -- DOMAIN-SUFFIX,beta.vpon.com,AdBlock -- DOMAIN-SUFFIX,betsonsport.ru,AdBlock -- DOMAIN-SUFFIX,betterzip.net,AdBlock -- DOMAIN-SUFFIX,bewaycare.com,AdBlock -- DOMAIN-SUFFIX,beyondcompare.cc,AdBlock -- DOMAIN-SUFFIX,bfdcdn.com,AdBlock -- DOMAIN-SUFFIX,bglog.bitauto.com,AdBlock -- DOMAIN-SUFFIX,bgrndi.com,AdBlock -- DOMAIN-SUFFIX,bh.contextweb.com,AdBlock -- DOMAIN-SUFFIX,bhjac.azvub.cn,AdBlock -- DOMAIN-SUFFIX,bianxianmao.com,AdBlock -- DOMAIN-SUFFIX,biddingos.com,AdBlock -- DOMAIN-SUFFIX,biddingx.com,AdBlock -- DOMAIN-SUFFIX,bidvertiser.com,AdBlock -- DOMAIN-SUFFIX,bigbos.top,AdBlock -- DOMAIN-SUFFIX,bigboy.eurogamer.net,AdBlock -- DOMAIN-SUFFIX,billionfocus.com,AdBlock -- DOMAIN-SUFFIX,binaryage-leechgate.herokuapp.com,AdBlock -- DOMAIN-SUFFIX,bingdianhuanyuan.cn,AdBlock -- DOMAIN-SUFFIX,bingyinq.com,AdBlock -- DOMAIN-SUFFIX,biq.keefung-zs.com,AdBlock -- DOMAIN-SUFFIX,bite.theta.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,bitsumactivationserver.com,AdBlock -- DOMAIN-SUFFIX,bivitr.com,AdBlock -- DOMAIN-SUFFIX,bixia.fymm.cn,AdBlock -- DOMAIN-SUFFIX,biyibia.com,AdBlock -- DOMAIN-SUFFIX,biz.gexing.com,AdBlock -- DOMAIN-SUFFIX,biz.live.xunlei.com,AdBlock -- DOMAIN-SUFFIX,biz.vpon.com,AdBlock -- DOMAIN-SUFFIX,biz.weibo.com,AdBlock -- DOMAIN-SUFFIX,biz37.net,AdBlock -- DOMAIN-SUFFIX,bizanti.youwatch.org,AdBlock -- DOMAIN-SUFFIX,bj.imp.voiceads.cn,AdBlock -- DOMAIN-SUFFIX,bj14.9669.cn,AdBlock -- DOMAIN-SUFFIX,bjcathay.com,AdBlock -- DOMAIN-SUFFIX,bjcu.u3.ucweb.com,AdBlock -- DOMAIN-SUFFIX,bjedpt.com,AdBlock -- DOMAIN-SUFFIX,bjs.9669.cn,AdBlock -- DOMAIN-SUFFIX,bkdg.net,AdBlock -- DOMAIN-SUFFIX,bl.wavecdn.de,AdBlock -- DOMAIN-SUFFIX,bla.gtimg.com,AdBlock -- DOMAIN-SUFFIX,blaaaa12.googlecode.com,AdBlock -- DOMAIN-SUFFIX,blb.winasdaq.com,AdBlock -- DOMAIN-SUFFIX,bllbaby.cn,AdBlock -- DOMAIN-SUFFIX,blogad01.myweb.hinet.net,AdBlock -- DOMAIN-SUFFIX,blogad02.myweb.hinet.net,AdBlock -- DOMAIN-SUFFIX,bluekai.com,AdBlock -- DOMAIN-SUFFIX,bluhostedbanners.blucigs.com,AdBlock -- DOMAIN-SUFFIX,bmg.wnbfw.com,AdBlock -- DOMAIN-SUFFIX,bmp.ali213.net,AdBlock -- DOMAIN-SUFFIX,bmp1.ali213.net,AdBlock -- DOMAIN-SUFFIX,bmw2ep.paomifen.cn,AdBlock -- DOMAIN-SUFFIX,bnrs.ilm.ee,AdBlock -- DOMAIN-SUFFIX,boardx.huanqiu.com,AdBlock -- DOMAIN-SUFFIX,bob.crazyshit.com,AdBlock -- DOMAIN-SUFFIX,bobo.163.com,AdBlock -- DOMAIN-SUFFIX,bolt.jebe.renren.com,AdBlock -- DOMAIN-SUFFIX,borsendental.com,AdBlock -- DOMAIN-SUFFIX,bosiwangzi.cn,AdBlock -- DOMAIN-SUFFIX,box.anchorfree.net,AdBlock -- DOMAIN-SUFFIX,boxercrazy.org,AdBlock -- DOMAIN-SUFFIX,boxshows.com,AdBlock -- DOMAIN-SUFFIX,boyxu.cn,AdBlock -- DOMAIN-SUFFIX,bp.mobad.ijinshan.com,AdBlock -- DOMAIN-SUFFIX,br.blackfling.com,AdBlock -- DOMAIN-SUFFIX,br.fling.com,AdBlock -- DOMAIN-SUFFIX,br.realitykings.com,AdBlock -- DOMAIN-SUFFIX,brakefluid.website,AdBlock -- DOMAIN-SUFFIX,brand.sogou.com,AdBlock -- DOMAIN-SUFFIX,brandshow.58.com,AdBlock -- DOMAIN-SUFFIX,brcache.madthumbs.com,AdBlock -- DOMAIN-SUFFIX,breeze.olclient.baofeng.com,AdBlock -- DOMAIN-SUFFIX,breezily168.com,AdBlock -- DOMAIN-SUFFIX,brizads.com,AdBlock -- DOMAIN-SUFFIX,bro.flyme.cn,AdBlock -- DOMAIN-SUFFIX,bryonypie.com,AdBlock -- DOMAIN-SUFFIX,bs.5442.com,AdBlock -- DOMAIN-SUFFIX,bs.serving-sys.com,AdBlock -- DOMAIN-SUFFIX,bs14.9669.cn,AdBlock -- DOMAIN-SUFFIX,bsch.serving-sys.com,AdBlock -- DOMAIN-SUFFIX,bsdev.cn,AdBlock -- DOMAIN-SUFFIX,bshare.cn,AdBlock -- DOMAIN-SUFFIX,bshare.optimix.asia,AdBlock -- DOMAIN-SUFFIX,bsiet.husky.sogou.com,AdBlock -- DOMAIN-SUFFIX,bss.pandora.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,bstatic.1kejian.com,AdBlock -- DOMAIN-SUFFIX,bstatic.diyifanwen.com,AdBlock -- DOMAIN-SUFFIX,bt.xitongmonitor.com,AdBlock -- DOMAIN-SUFFIX,bt641499.gotoip4.com,AdBlock -- DOMAIN-SUFFIX,bthergyuan.com,AdBlock -- DOMAIN-SUFFIX,btlaunch.baidu.com,AdBlock -- DOMAIN-SUFFIX,btn.onlylady.com,AdBlock -- DOMAIN-SUFFIX,btn.pchome.net,AdBlock -- DOMAIN-SUFFIX,btr.domywife.com,AdBlock -- DOMAIN-SUFFIX,bttrack.com,AdBlock -- DOMAIN-SUFFIX,btyou.com,AdBlock -- DOMAIN-SUFFIX,bu01.zybang.com,AdBlock -- DOMAIN-SUFFIX,bu02.zybang.com,AdBlock -- DOMAIN-SUFFIX,bu1.duba.com,AdBlock -- DOMAIN-SUFFIX,bu2.duba.com,AdBlock -- DOMAIN-SUFFIX,bugtags.com,AdBlock -- DOMAIN-SUFFIX,business.92wy.com,AdBlock -- DOMAIN-SUFFIX,business.inveno.com,AdBlock -- DOMAIN-SUFFIX,buyimg.bianxianmao.com,AdBlock -- DOMAIN-SUFFIX,buysellads.com,AdBlock -- DOMAIN-SUFFIX,buyu8001.com,AdBlock -- DOMAIN-SUFFIX,bwp.theinsider.com.com,AdBlock -- DOMAIN-SUFFIX,bx.optimix.asia,AdBlock -- DOMAIN-SUFFIX,bx01.optimix.asia,AdBlock -- DOMAIN-SUFFIX,bxgmb.com,AdBlock -- DOMAIN-SUFFIX,bxjpl.cn,AdBlock -- DOMAIN-SUFFIX,by.dm5.com,AdBlock -- DOMAIN-SUFFIX,by.mbai.cn,AdBlock -- DOMAIN-SUFFIX,by.tel.cdndm.com,AdBlock -- DOMAIN-SUFFIX,by8974.com,AdBlock -- DOMAIN-SUFFIX,bydonline.com,AdBlock -- DOMAIN-SUFFIX,bypbwm.cn,AdBlock -- DOMAIN-SUFFIX,c.0.0.0.0.cn,AdBlock -- DOMAIN-SUFFIX,c.28487.net,AdBlock -- DOMAIN-SUFFIX,c.35kds.com,AdBlock -- DOMAIN-SUFFIX,c.365yigou.cn,AdBlock -- DOMAIN-SUFFIX,c.45io.com,AdBlock -- DOMAIN-SUFFIX,c.51y5.net,AdBlock -- DOMAIN-SUFFIX,c.adbxb.cn,AdBlock -- DOMAIN-SUFFIX,c.anmeilai.net,AdBlock -- DOMAIN-SUFFIX,c.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,c.baidu.com,AdBlock -- DOMAIN-SUFFIX,c.betrad.com,AdBlock -- DOMAIN-SUFFIX,c.bigmir.net,AdBlock -- DOMAIN-SUFFIX,c.bing.com,AdBlock -- DOMAIN-SUFFIX,c.bxb.oupeng.com,AdBlock -- DOMAIN-SUFFIX,c.codeonclick.com,AdBlock -- DOMAIN-SUFFIX,c.cyhx98.com,AdBlock -- DOMAIN-SUFFIX,c.cyto-biotherapy.com,AdBlock -- DOMAIN-SUFFIX,c.danangmo.cn,AdBlock -- DOMAIN-SUFFIX,c.data.mob.com,AdBlock -- DOMAIN-SUFFIX,c.dokrmob.com,AdBlock -- DOMAIN-SUFFIX,c.dzytjqcc.com,AdBlock -- DOMAIN-SUFFIX,c.effectivemeasure.net,AdBlock -- DOMAIN-SUFFIX,c.f1zd.com,AdBlock -- DOMAIN-SUFFIX,c.gj.qq.com,AdBlock -- DOMAIN-SUFFIX,c.guangtui1999.com,AdBlock -- DOMAIN-SUFFIX,c.gzsanxiaomingshi.cn,AdBlock -- DOMAIN-SUFFIX,c.idasui.cn,AdBlock -- DOMAIN-SUFFIX,c.iogous.com,AdBlock -- DOMAIN-SUFFIX,c.k429fma.com,AdBlock -- DOMAIN-SUFFIX,c.kbf365.cn,AdBlock -- DOMAIN-SUFFIX,c.kl6636.net,AdBlock -- DOMAIN-SUFFIX,c.kuwo.cn,AdBlock -- DOMAIN-SUFFIX,c.lianwangtech.com,AdBlock -- DOMAIN-SUFFIX,c.live.com,AdBlock -- DOMAIN-SUFFIX,c.lucktui.com,AdBlock -- DOMAIN-SUFFIX,c.metrigo.com,AdBlock -- DOMAIN-SUFFIX,c.mightiger.net,AdBlock -- DOMAIN-SUFFIX,c.minisplat.cn,AdBlock -- DOMAIN-SUFFIX,c.mkmp365.com,AdBlock -- DOMAIN-SUFFIX,c.mnjkw.cn,AdBlock -- DOMAIN-SUFFIX,c.mobishu.com,AdBlock -- DOMAIN-SUFFIX,c.msn.com,AdBlock -- DOMAIN-SUFFIX,c.msn.com.cn,AdBlock -- DOMAIN-SUFFIX,c.netu.tv,AdBlock -- DOMAIN-SUFFIX,c.ningbojipiao.com,AdBlock -- DOMAIN-SUFFIX,c.ns8d.com,AdBlock -- DOMAIN-SUFFIX,c.okmgy.cn,AdBlock -- DOMAIN-SUFFIX,c.panqis.cn,AdBlock -- DOMAIN-SUFFIX,c.panqishu.com,AdBlock -- DOMAIN-SUFFIX,c.piliangzhuce.cn,AdBlock -- DOMAIN-SUFFIX,c.ptffw.net,AdBlock -- DOMAIN-SUFFIX,c.queene.cn,AdBlock -- DOMAIN-SUFFIX,c.rexuebi.com,AdBlock -- DOMAIN-SUFFIX,c.rscxwmj.cn,AdBlock -- DOMAIN-SUFFIX,c.shunlige.com,AdBlock -- DOMAIN-SUFFIX,c.silvinst.com,AdBlock -- DOMAIN-SUFFIX,c.sss1989.com,AdBlock -- DOMAIN-SUFFIX,c.sssgao999.com,AdBlock -- DOMAIN-SUFFIX,c.start280.com,AdBlock -- DOMAIN-SUFFIX,c.statcounter.com,AdBlock -- DOMAIN-SUFFIX,c.statstat888.com,AdBlock -- DOMAIN-SUFFIX,c.sy123888.com,AdBlock -- DOMAIN-SUFFIX,c.t98u8f.com,AdBlock -- DOMAIN-SUFFIX,c.tctyb.cn,AdBlock -- DOMAIN-SUFFIX,c.v4dwkcv.com,AdBlock -- DOMAIN-SUFFIX,c.vip97.net,AdBlock -- DOMAIN-SUFFIX,c.wechat.jx.cn,AdBlock -- DOMAIN-SUFFIX,c.wkanx.com,AdBlock -- DOMAIN-SUFFIX,c.wrating.com,AdBlock -- DOMAIN-SUFFIX,c.xianguonongchang.org,AdBlock -- DOMAIN-SUFFIX,c.xznykf.org,AdBlock -- DOMAIN-SUFFIX,c.ylist.cn,AdBlock -- DOMAIN-SUFFIX,c.ynlysg.com,AdBlock -- DOMAIN-SUFFIX,c.youdao.com,AdBlock -- DOMAIN-SUFFIX,c.zgnm.cc,AdBlock -- DOMAIN-SUFFIX,c.zlongad.com,AdBlock -- DOMAIN-SUFFIX,c.zmjuan.org,AdBlock -- DOMAIN-SUFFIX,c.zxyywdj.org,AdBlock -- DOMAIN-SUFFIX,c0.ifengimg.com,AdBlock -- DOMAIN-SUFFIX,c03.optimix.asia,AdBlock -- DOMAIN-SUFFIX,c0563.com,AdBlock -- DOMAIN-SUFFIX,c0594.com,AdBlock -- DOMAIN-SUFFIX,c0i8h8ac7e.bid,AdBlock -- DOMAIN-SUFFIX,c1.4qx.net,AdBlock -- DOMAIN-SUFFIX,c1.668559.com,AdBlock -- DOMAIN-SUFFIX,c1.ifengimg.com,AdBlock -- DOMAIN-SUFFIX,c1.keyrun.cn,AdBlock -- DOMAIN-SUFFIX,c1.lianwangtech.com,AdBlock -- DOMAIN-SUFFIX,c1.minisplat.cn,AdBlock -- DOMAIN-SUFFIX,c1.popads.net,AdBlock -- DOMAIN-SUFFIX,c1.statcounter.com,AdBlock -- DOMAIN-SUFFIX,c1.ulink.cc,AdBlock -- DOMAIN-SUFFIX,c1.wkanx.com,AdBlock -- DOMAIN-SUFFIX,c1.xcy8.com,AdBlock -- DOMAIN-SUFFIX,c16cp358.com,AdBlock -- DOMAIN-SUFFIX,c2.58toto.net,AdBlock -- DOMAIN-SUFFIX,c2.popads.net,AdBlock -- DOMAIN-SUFFIX,c2.statcounter.com,AdBlock -- DOMAIN-SUFFIX,c3.gostats.cn,AdBlock -- DOMAIN-SUFFIX,c3.moogos.com,AdBlock -- DOMAIN-SUFFIX,c6.bjdianyue.com,AdBlock -- DOMAIN-SUFFIX,c6.lnymd.com,AdBlock -- DOMAIN-SUFFIX,c77777777.com,AdBlock -- DOMAIN-SUFFIX,c8.wangdq.com,AdBlock -- DOMAIN-SUFFIX,c8b.jcdb88.com,AdBlock -- DOMAIN-SUFFIX,ca.5173car.com,AdBlock -- DOMAIN-SUFFIX,ca.w8.com.cn,AdBlock -- DOMAIN-SUFFIX,caamei.com,AdBlock -- DOMAIN-SUFFIX,cacaca.0571yy.com,AdBlock -- DOMAIN-SUFFIX,cacaca.sp96878.com,AdBlock -- DOMAIN-SUFFIX,cacafly.net,AdBlock -- DOMAIN-SUFFIX,cache.betweendigital.com,AdBlock -- DOMAIN-SUFFIX,cache.soloth.com,AdBlock -- DOMAIN-SUFFIX,cache.xw126.com,AdBlock -- DOMAIN-SUFFIX,cachead.com,AdBlock -- DOMAIN-SUFFIX,cachenotice.cp11.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,cachesit.com,AdBlock -- DOMAIN-SUFFIX,cache-ssl.celtra.com,AdBlock -- DOMAIN-SUFFIX,cad.chosun.com,AdBlock -- DOMAIN-SUFFIX,c-adash.m.taobao.com,AdBlock -- DOMAIN-SUFFIX,cadvv.heraldm.com,AdBlock -- DOMAIN-SUFFIX,cadvv.koreaherald.com,AdBlock -- DOMAIN-SUFFIX,caiyifz.com,AdBlock -- DOMAIN-SUFFIX,cal.meizu.com,AdBlock -- DOMAIN-SUFFIX,caliyuna.cn,AdBlock -- DOMAIN-SUFFIX,calopenupdate.comm.miui.com,AdBlock -- DOMAIN-SUFFIX,cams.pornrabbit.com,AdBlock -- DOMAIN-SUFFIX,cangnews.com,AdBlock -- DOMAIN-SUFFIX,canvas.thenextweb.com,AdBlock -- DOMAIN-SUFFIX,caob5.info,AdBlock -- DOMAIN-SUFFIX,caolvch.com,AdBlock -- DOMAIN-SUFFIX,cap.cyberlink.com,AdBlock -- DOMAIN-SUFFIX,cap.touclick.com,AdBlock -- DOMAIN-SUFFIX,car.mobadme.jp,AdBlock -- DOMAIN-SUFFIX,carbonads.net,AdBlock -- DOMAIN-SUFFIX,cas.clickability.com,AdBlock -- DOMAIN-SUFFIX,cas.criteo.com,AdBlock -- DOMAIN-SUFFIX,casalemedia.com,AdBlock -- DOMAIN-SUFFIX,casee.cn,AdBlock -- DOMAIN-SUFFIX,cash.neweramediaworks.com,AdBlock -- DOMAIN-SUFFIX,cast.innity.com,AdBlock -- DOMAIN-SUFFIX,cast.ra.icast.cn,AdBlock -- DOMAIN-SUFFIX,cast-bid27-j.adtdp.com,AdBlock -- DOMAIN-SUFFIX,castplatform.com,AdBlock -- DOMAIN-SUFFIX,catalog.video.msn.com,AdBlock -- DOMAIN-SUFFIX,catch.gift,AdBlock -- DOMAIN-SUFFIX,cayanfang.com,AdBlock -- DOMAIN-SUFFIX,cb.baidu.com,AdBlock -- DOMAIN-SUFFIX,cb.h5.coffeedak.cn,AdBlock -- DOMAIN-SUFFIX,cbjs.baidu.com,AdBlock -- DOMAIN-SUFFIX,cbs.wondershare.com,AdBlock -- DOMAIN-SUFFIX,cc.0133hao.net,AdBlock -- DOMAIN-SUFFIX,cc.1515788.net,AdBlock -- DOMAIN-SUFFIX,cc.365yigou.cn,AdBlock -- DOMAIN-SUFFIX,cc.700ok.net,AdBlock -- DOMAIN-SUFFIX,cc.dace.hupu.com,AdBlock -- DOMAIN-SUFFIX,cc.idasui.cn,AdBlock -- DOMAIN-SUFFIX,cc.moquanad.com,AdBlock -- DOMAIN-SUFFIX,cc.piao.jianzhigg.com,AdBlock -- DOMAIN-SUFFIX,cc.st123.info,AdBlock -- DOMAIN-SUFFIX,cc.xtgreat.com,AdBlock -- DOMAIN-SUFFIX,cc.yac8.com,AdBlock -- DOMAIN-SUFFIX,cca.mob.com,AdBlock -- DOMAIN-SUFFIX,ccb.uncle-ad.com,AdBlock -- DOMAIN-SUFFIX,ccbaihehq.com,AdBlock -- DOMAIN-SUFFIX,cccrir.com,AdBlock -- DOMAIN-SUFFIX,ccr.yxdown.com,AdBlock -- DOMAIN-SUFFIX,cctyly.com,AdBlock -- DOMAIN-SUFFIX,cd.bendibao.com,AdBlock -- DOMAIN-SUFFIX,cdgxq.com,AdBlock -- DOMAIN-SUFFIX,cdhoc.piyaji.cn,AdBlock -- DOMAIN-SUFFIX,cdn.0i-i0.com,AdBlock -- DOMAIN-SUFFIX,cdn.5bong.com,AdBlock -- DOMAIN-SUFFIX,cdn.adsk2.co,AdBlock -- DOMAIN-SUFFIX,cdn.adstract.com,AdBlock -- DOMAIN-SUFFIX,cdn.aegins.com,AdBlock -- DOMAIN-SUFFIX,cdn.aiclicash.com,AdBlock -- DOMAIN-SUFFIX,cdn.app.kachapt.cn,AdBlock -- DOMAIN-SUFFIX,cdn.app.liuxingyul.cn,AdBlock -- DOMAIN-SUFFIX,cdn.at.atwola.com,AdBlock -- DOMAIN-SUFFIX,cdn.atwola.com,AdBlock -- DOMAIN-SUFFIX,cdn.cooguo.com,AdBlock -- DOMAIN-SUFFIX,cdn.districtm.io,AdBlock -- DOMAIN-SUFFIX,cdn.dragonstatic.com,AdBlock -- DOMAIN-SUFFIX,cdn.dsp.com,AdBlock -- DOMAIN-SUFFIX,cdn.earnify.com,AdBlock -- DOMAIN-SUFFIX,cdn.fastclick.net,AdBlock -- DOMAIN-SUFFIX,cdn.hivps.xyz,AdBlock -- DOMAIN-SUFFIX,cdn.hyperpromote.com,AdBlock -- DOMAIN-SUFFIX,cdn.iclicash.com,AdBlock -- DOMAIN-SUFFIX,cdn.img.kachapt.cn,AdBlock -- DOMAIN-SUFFIX,cdn.img.liuxingyul.cn,AdBlock -- DOMAIN-SUFFIX,cdn.innity.net,AdBlock -- DOMAIN-SUFFIX,cdn.jesgoo.com,AdBlock -- DOMAIN-SUFFIX,cdn.jiuzhilan.com,AdBlock -- DOMAIN-SUFFIX,cdn.jllstudio.com,AdBlock -- DOMAIN-SUFFIX,cdn.komentary.aol.com,AdBlock -- DOMAIN-SUFFIX,cdn.krxd.net,AdBlock -- DOMAIN-SUFFIX,cdn.lu.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,cdn.marketgid.com,AdBlock -- DOMAIN-SUFFIX,cdn.mdotm.com,AdBlock -- DOMAIN-SUFFIX,cdn.media.innity.net,AdBlock -- DOMAIN-SUFFIX,cdn.millennialmedia.com,AdBlock -- DOMAIN-SUFFIX,cdn.mingmingtehui.com,AdBlock -- DOMAIN-SUFFIX,cdn.moji.com,AdBlock -- DOMAIN-SUFFIX,cdn.moji002.com,AdBlock -- DOMAIN-SUFFIX,cdn.moogos.com,AdBlock -- DOMAIN-SUFFIX,cdn.ndapp.com,AdBlock -- DOMAIN-SUFFIX,cdn.newapi.com,AdBlock -- DOMAIN-SUFFIX,cdn.optaim.com,AdBlock -- DOMAIN-SUFFIX,cdn.outfit7.com,AdBlock -- DOMAIN-SUFFIX,cdn.popcash.net,AdBlock -- DOMAIN-SUFFIX,cdn.popmyads.com,AdBlock -- DOMAIN-SUFFIX,cdn.puata.info,AdBlock -- DOMAIN-SUFFIX,cdn.scdng.com,AdBlock -- DOMAIN-SUFFIX,cdn.sp.rizhao9.com,AdBlock -- DOMAIN-SUFFIX,cdn.tianmidian.com,AdBlock -- DOMAIN-SUFFIX,cdn.tinglian.com,AdBlock -- DOMAIN-SUFFIX,cdn.vamaker.com,AdBlock -- DOMAIN-SUFFIX,cdn.viglink.com,AdBlock -- DOMAIN-SUFFIX,cdn.xianliao.me,AdBlock -- DOMAIN-SUFFIX,cdn.zampda.net,AdBlock -- DOMAIN-SUFFIX,cdn0.mobmore.com,AdBlock -- DOMAIN-SUFFIX,cdn1.lbesec.com,AdBlock -- DOMAIN-SUFFIX,cdn1.res.nx5.com,AdBlock -- DOMAIN-SUFFIX,cdn1.res.uzham.com,AdBlock -- DOMAIN-SUFFIX,cdn1.srv.revdepo.com,AdBlock -- DOMAIN-SUFFIX,cdn2.moji002.com,AdBlock -- DOMAIN-SUFFIX,cdnads.com,AdBlock -- DOMAIN-SUFFIX,cdn-ads.oss-cn-shanghai.aliyuncs.com,AdBlock -- DOMAIN-SUFFIX,cdnas.hyperpromote.com,AdBlock -- DOMAIN-SUFFIX,cdn-gcs.outfit7.com,AdBlock -- DOMAIN-SUFFIX,cdnimg.liehu.ijinshan.com,AdBlock -- DOMAIN-SUFFIX,cdnis.hyperpromote.com,AdBlock -- DOMAIN-SUFFIX,cdnmaster.com,AdBlock -- DOMAIN-SUFFIX,cdnny.com,AdBlock -- DOMAIN-SUFFIX,cdnpa.hyperpromote.com,AdBlock -- DOMAIN-SUFFIX,cdn-rtb.sape.ru,AdBlock -- DOMAIN-SUFFIX,cdn-settings.segment.com,AdBlock -- DOMAIN-SUFFIX,cdntest.a8tiyu.com,AdBlock -- DOMAIN-SUFFIX,cds.51y5.net,AdBlock -- DOMAIN-SUFFIX,cdyqc.com,AdBlock -- DOMAIN-SUFFIX,ced.sascdn.com,AdBlock -- DOMAIN-SUFFIX,cee1.iteye.com,AdBlock -- DOMAIN-SUFFIX,cee2.iteye.com,AdBlock -- DOMAIN-SUFFIX,cerebral.typn.com,AdBlock -- DOMAIN-SUFFIX,cfdanet.com,AdBlock -- DOMAIN-SUFFIX,cferw.com,AdBlock -- DOMAIN-SUFFIX,cfg-md.gridsumdissector.com,AdBlock -- DOMAIN-SUFFIX,cfg-vd.gridsumdissector.com,AdBlock -- DOMAIN-SUFFIX,cgskqg.com,AdBlock -- DOMAIN-SUFFIX,chadegongxiao.com,AdBlock -- DOMAIN-SUFFIX,chance-ad.com,AdBlock -- DOMAIN-SUFFIX,chanet.com.cn,AdBlock -- DOMAIN-SUFFIX,changan.bama555.com,AdBlock -- DOMAIN-SUFFIX,changhehengqi.com,AdBlock -- DOMAIN-SUFFIX,channel.fanxing.kugou.com,AdBlock -- DOMAIN-SUFFIX,channeladvisor.com,AdBlock -- DOMAIN-SUFFIX,chaojilamei.cn,AdBlock -- DOMAIN-SUFFIX,chaoliangyun.com,AdBlock -- DOMAIN-SUFFIX,chartbeat.com,AdBlock -- DOMAIN-SUFFIX,chartboost.com,AdBlock -- DOMAIN-SUFFIX,chebse.com,AdBlock -- DOMAIN-SUFFIX,chemdraw.com,AdBlock -- DOMAIN-SUFFIX,chemdraw.com.cn,AdBlock -- DOMAIN-SUFFIX,chengadx.com,AdBlock -- DOMAIN-SUFFIX,chenggao.cn,AdBlock -- DOMAIN-SUFFIX,chengzhao95511.com,AdBlock -- DOMAIN-SUFFIX,chenwen7788.com,AdBlock -- DOMAIN-SUFFIX,chicken18.com,AdBlock -- DOMAIN-SUFFIX,chidir.com,AdBlock -- DOMAIN-SUFFIX,chinacsky.com,AdBlock -- DOMAIN-SUFFIX,chinaheh.com,AdBlock -- DOMAIN-SUFFIX,chinauma.net,AdBlock -- DOMAIN-SUFFIX,chinaweichu.net,AdBlock -- DOMAIN-SUFFIX,chjxzk.1555110.cn,AdBlock -- DOMAIN-SUFFIX,chmae.com,AdBlock -- DOMAIN-SUFFIX,chnhty.com,AdBlock -- DOMAIN-SUFFIX,chuantu.biz,AdBlock -- DOMAIN-SUFFIX,chushoushijian.cn,AdBlock -- DOMAIN-SUFFIX,c-hzgt2.getui.com,AdBlock -- DOMAIN-SUFFIX,ci.csefaazc.net,AdBlock -- DOMAIN-SUFFIX,ciajingman.com,AdBlock -- DOMAIN-SUFFIX,cilidaquan.pw,AdBlock -- DOMAIN-SUFFIX,cindy17club.com,AdBlock -- DOMAIN-SUFFIX,cip6.czpush.com,AdBlock -- DOMAIN-SUFFIX,cishantao.com,AdBlock -- DOMAIN-SUFFIX,ciyitan.com,AdBlock -- DOMAIN-SUFFIX,cj.qidian.com,AdBlock -- DOMAIN-SUFFIX,cjhq.baidu.com,AdBlock -- DOMAIN-SUFFIX,cjmakeding.com,AdBlock -- DOMAIN-SUFFIX,cjmkt.com,AdBlock -- DOMAIN-SUFFIX,cjmooter.xcache.kinxcdn.com,AdBlock -- DOMAIN-SUFFIX,cjroq.bealge.sogou.com,AdBlock -- DOMAIN-SUFFIX,ck.houyi.baofeng.net,AdBlock -- DOMAIN-SUFFIX,ck.kejet.net,AdBlock -- DOMAIN-SUFFIX,cl.he9630.com,AdBlock -- DOMAIN-SUFFIX,cl.webterren.com,AdBlock -- DOMAIN-SUFFIX,cl.xzqxzs.com,AdBlock -- DOMAIN-SUFFIX,cl0.webterren.com,AdBlock -- DOMAIN-SUFFIX,cl2.webterren.com,AdBlock -- DOMAIN-SUFFIX,cl3.webterren.com,AdBlock -- DOMAIN-SUFFIX,cl4.webterren.com,AdBlock -- DOMAIN-SUFFIX,cl5.webterren.com,AdBlock -- DOMAIN-SUFFIX,clarity.abacast.com,AdBlock -- DOMAIN-SUFFIX,cleaner.baidu.com,AdBlock -- DOMAIN-SUFFIX,click1n.soufun.com,AdBlock -- DOMAIN-SUFFIX,clickadu.com,AdBlock -- DOMAIN-SUFFIX,click-cn.plista.com,AdBlock -- DOMAIN-SUFFIX,clicki.cn,AdBlock -- DOMAIN-SUFFIX,clicklog.moviebox.baofeng.net,AdBlock -- DOMAIN-SUFFIX,clickm.fang.com,AdBlock -- DOMAIN-SUFFIX,clickn.fang.com,AdBlock -- DOMAIN-SUFFIX,clicks.beap.bc.yahoo.com,AdBlock -- DOMAIN-SUFFIX,clicks.superpages.com,AdBlock -- DOMAIN-SUFFIX,clickstrip.6wav.es,AdBlock -- DOMAIN-SUFFIX,clicktracks.com,AdBlock -- DOMAIN-SUFFIX,clickzs.com,AdBlock -- DOMAIN-SUFFIX,client.88tours.com,AdBlock -- DOMAIN-SUFFIX,client.sidesearch.lycos.com,AdBlock -- DOMAIN-SUFFIX,client.stats.yinyuetai.com,AdBlock -- DOMAIN-SUFFIX,client.tenddata.com,AdBlock -- DOMAIN-SUFFIX,client-api.ele.me,AdBlock -- DOMAIN-SUFFIX,client-dmp.suishenyun.cn,AdBlock -- DOMAIN-SUFFIX,cliushow.com,AdBlock -- DOMAIN-SUFFIX,clk.dxpmedia.com,AdBlock -- DOMAIN-SUFFIX,clk.gentags.net,AdBlock -- DOMAIN-SUFFIX,clk.madserving.com,AdBlock -- DOMAIN-SUFFIX,clk.optaim.com,AdBlock -- DOMAIN-SUFFIX,clk.pdb.madserving.com,AdBlock -- DOMAIN-SUFFIX,clk.taptica.com,AdBlock -- DOMAIN-SUFFIX,clk.uunt.com,AdBlock -- DOMAIN-SUFFIX,clkads.com,AdBlock -- DOMAIN-SUFFIX,clkrev.com,AdBlock -- DOMAIN-SUFFIX,clkservice.mail.youdao.com,AdBlock -- DOMAIN-SUFFIX,clkservice.union.youdao.com,AdBlock -- DOMAIN-SUFFIX,clkservice.youdao.com,AdBlock -- DOMAIN-SUFFIX,clkservice2.dict.youdao.com,AdBlock -- DOMAIN-SUFFIX,cloud.codenow.cn,AdBlock -- DOMAIN-SUFFIX,cloud.rovio.com,AdBlock -- DOMAIN-SUFFIX,cloud.zyiis.net,AdBlock -- DOMAIN-SUFFIX,cloudad.asia,AdBlock -- DOMAIN-SUFFIX,cloudcdn.yousee.com,AdBlock -- DOMAIN-SUFFIX,cloudmobi.net,AdBlock -- DOMAIN-SUFFIX,cm.adgrx.com,AdBlock -- DOMAIN-SUFFIX,cm.baidu.com,AdBlock -- DOMAIN-SUFFIX,cm.bilibili.com,AdBlock -- DOMAIN-SUFFIX,cm.ctnsnet.com,AdBlock -- DOMAIN-SUFFIX,cm.eyereturn.com,AdBlock -- DOMAIN-SUFFIX,cm.mct01.com,AdBlock -- DOMAIN-SUFFIX,cm.netseer.com,AdBlock -- DOMAIN-SUFFIX,cm.p4p.cn.yahoo.com,AdBlock -- DOMAIN-SUFFIX,cm8.lycos.com,AdBlock -- DOMAIN-SUFFIX,cmarket.kejet.net,AdBlock -- DOMAIN-SUFFIX,cmaxisolation.com,AdBlock -- DOMAIN-SUFFIX,cmcdl.cmcm.com,AdBlock -- DOMAIN-SUFFIX,cmcore.com,AdBlock -- DOMAIN-SUFFIX,cmm.xmfish.com,AdBlock -- DOMAIN-SUFFIX,cmp288.com,AdBlock -- DOMAIN-SUFFIX,cmpp.gentags.net,AdBlock -- DOMAIN-SUFFIX,cms.an.m.liebao.cn,AdBlock -- DOMAIN-SUFFIX,cms.quantserve.com,AdBlock -- DOMAIN-SUFFIX,cmsapi.wifi8.com,AdBlock -- DOMAIN-SUFFIX,cmshow.gtimg.cn,AdBlock -- DOMAIN-SUFFIX,cmslayue.com,AdBlock -- DOMAIN-SUFFIX,cmx.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,cn.pub.vpon.com,AdBlock -- DOMAIN-SUFFIX,cn.tatami-solutions.com,AdBlock -- DOMAIN-SUFFIX,cnbole.net,AdBlock -- DOMAIN-SUFFIX,cncy8.com,AdBlock -- DOMAIN-SUFFIX,cndjs-1251973891.coshk.myqcloud.com,AdBlock -- DOMAIN-SUFFIX,cnetdirectintl.com,AdBlock -- DOMAIN-SUFFIX,cnetwidget.creativemark.co.uk,AdBlock -- DOMAIN-SUFFIX,cnfanglei.com,AdBlock -- DOMAIN-SUFFIX,cnhbxx.com,AdBlock -- DOMAIN-SUFFIX,cnkok.com,AdBlock -- DOMAIN-SUFFIX,cnn.dyn.cnn.com,AdBlock -- DOMAIN-SUFFIX,cnnic.cn,AdBlock -- DOMAIN-SUFFIX,cnnic.net,AdBlock -- DOMAIN-SUFFIX,cnnic.net.cn,AdBlock -- DOMAIN-SUFFIX,cnpinzhuo.com,AdBlock -- DOMAIN-SUFFIX,cnscdj.com,AdBlock -- DOMAIN-SUFFIX,cnsjx.net,AdBlock -- DOMAIN-SUFFIX,cnxad.com,AdBlock -- DOMAIN-SUFFIX,cnxad.net,AdBlock -- DOMAIN-SUFFIX,cnzhqs.com,AdBlock -- DOMAIN-SUFFIX,cnzz.cn,AdBlock -- DOMAIN-SUFFIX,cnzz.com,AdBlock -- DOMAIN-SUFFIX,co.dtech.baofeng.com,AdBlock -- DOMAIN-SUFFIX,cocounion.com,AdBlock -- DOMAIN-SUFFIX,cod.southmoney.com,AdBlock -- DOMAIN-SUFFIX,code.3shangyou.com,AdBlock -- DOMAIN-SUFFIX,code.fastclick.net,AdBlock -- DOMAIN-SUFFIX,code.hajuwang.cn,AdBlock -- DOMAIN-SUFFIX,code.hot-mob.com,AdBlock -- DOMAIN-SUFFIX,code.kaixinjiehun.com,AdBlock -- DOMAIN-SUFFIX,code.kejet.com,AdBlock -- DOMAIN-SUFFIX,code.laojiayoufang.com,AdBlock -- DOMAIN-SUFFIX,code.ttpaper.com,AdBlock -- DOMAIN-SUFFIX,code.wantaico.com,AdBlock -- DOMAIN-SUFFIX,code11.onetad.com,AdBlock -- DOMAIN-SUFFIX,code12.onetad.com,AdBlock -- DOMAIN-SUFFIX,code1f.m.shushu8.com,AdBlock -- DOMAIN-SUFFIX,code1fa.m.shushu8.com,AdBlock -- DOMAIN-SUFFIX,code222.com,AdBlock -- DOMAIN-SUFFIX,code668.com,AdBlock -- DOMAIN-SUFFIX,codenow.cn,AdBlock -- DOMAIN-SUFFIX,codesoftchina.com,AdBlock -- DOMAIN-SUFFIX,coinblind.com,AdBlock -- DOMAIN-SUFFIX,coinerra.com,AdBlock -- DOMAIN-SUFFIX,coin-have.com,AdBlock -- DOMAIN-SUFFIX,coinhive.com,AdBlock -- DOMAIN-SUFFIX,coin-hive.com,AdBlock -- DOMAIN-SUFFIX,coinhive-manager.com,AdBlock -- DOMAIN-SUFFIX,coin-hive-proxy-ybydcnjgkl.now.sh,AdBlock -- DOMAIN-SUFFIX,coinminerz.com,AdBlock -- DOMAIN-SUFFIX,coinnebula.com,AdBlock -- DOMAIN-SUFFIX,col.hztags.net,AdBlock -- DOMAIN-SUFFIX,col.pagechoice.net,AdBlock -- DOMAIN-SUFFIX,collector.githubapp.com,AdBlock -- DOMAIN-SUFFIX,collector.viki.io,AdBlock -- DOMAIN-SUFFIX,collector.wasu.cn,AdBlock -- DOMAIN-SUFFIX,combine.urbanairship.com,AdBlock -- DOMAIN-SUFFIX,com-eonsun-owl.oss-cn-hangzhou.aliyuncs.com,AdBlock -- DOMAIN-SUFFIX,com-eonsun-owl-user.oss-cn-hangzhou.aliyuncs.com,AdBlock -- DOMAIN-SUFFIX,comesgo.com,AdBlock -- DOMAIN-SUFFIX,comet.yahoo.com,AdBlock -- DOMAIN-SUFFIX,conf.funshion.com,AdBlock -- DOMAIN-SUFFIX,conf.vidown.cn,AdBlock -- DOMAIN-SUFFIX,conf.xiniuz.com,AdBlock -- DOMAIN-SUFFIX,config.baofeng.net,AdBlock -- DOMAIN-SUFFIX,config.cocounion.com,AdBlock -- DOMAIN-SUFFIX,config.ioam.de,AdBlock -- DOMAIN-SUFFIX,config.kuyun.com,AdBlock -- DOMAIN-SUFFIX,config.mobisage.cn,AdBlock -- DOMAIN-SUFFIX,config.push.sogou.com,AdBlock -- DOMAIN-SUFFIX,config.unityads.unity3d.com,AdBlock -- DOMAIN-SUFFIX,config2.mparticle.com,AdBlock -- DOMAIN-SUFFIX,connect.summit.co.uk,AdBlock -- DOMAIN-SUFFIX,content.livesportmedia.eu,AdBlock -- DOMAIN-SUFFIX,content.s8bbs.com,AdBlock -- DOMAIN-SUFFIX,content.streamplay.to,AdBlock -- DOMAIN-SUFFIX,contentabc.com,AdBlock -- DOMAIN-SUFFIX,contentrecommend-out.mobile.sina.cn,AdBlock -- DOMAIN-SUFFIX,conv.youdao.com,AdBlock -- DOMAIN-SUFFIX,conversion.pro.cn,AdBlock -- DOMAIN-SUFFIX,conviva.com,AdBlock -- DOMAIN-SUFFIX,cooguo.com,AdBlock -- DOMAIN-SUFFIX,cookiemapping.wrating.com,AdBlock -- DOMAIN-SUFFIX,coolguang.com,AdBlock -- DOMAIN-SUFFIX,coolnay.com,AdBlock -- DOMAIN-SUFFIX,cooolyi.cn,AdBlock -- DOMAIN-SUFFIX,cooolyi.com,AdBlock -- DOMAIN-SUFFIX,coop.pop.baofeng.com,AdBlock -- DOMAIN-SUFFIX,cootek-dialer-download.oss-cn-hangzhou.aliyuncs.com,AdBlock -- DOMAIN-SUFFIX,cootek-file.cdn.cootekservice.com,AdBlock -- DOMAIN-SUFFIX,cop.my,AdBlock -- DOMAIN-SUFFIX,coreldrawchina.com,AdBlock -- DOMAIN-SUFFIX,coremetrics.com,AdBlock -- DOMAIN-SUFFIX,corner.houyi.baofeng.net,AdBlock -- DOMAIN-SUFFIX,coro.benbaisteel.com,AdBlock -- DOMAIN-SUFFIX,corocksi.com,AdBlock -- DOMAIN-SUFFIX,corp.meitu.com,AdBlock -- DOMAIN-SUFFIX,corp.sohu.com,AdBlock -- DOMAIN-SUFFIX,cosoyoo.com,AdBlock -- DOMAIN-SUFFIX,count.cpm.cm.kankan.com,AdBlock -- DOMAIN-SUFFIX,count.knowsky.com,AdBlock -- DOMAIN-SUFFIX,count.mail.163.com,AdBlock -- DOMAIN-SUFFIX,count.pcpop.com,AdBlock -- DOMAIN-SUFFIX,count.video.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,count.wk2.com,AdBlock -- DOMAIN-SUFFIX,count5.pconline.com.cn,AdBlock -- DOMAIN-SUFFIX,count6.pconline.com.cn,AdBlock -- DOMAIN-SUFFIX,counter.csdn.net,AdBlock -- DOMAIN-SUFFIX,counter.kingsoft.com,AdBlock -- DOMAIN-SUFFIX,counter.m1905.com,AdBlock -- DOMAIN-SUFFIX,counter.marketgid.com,AdBlock -- DOMAIN-SUFFIX,counter.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,counter.yadro.ru,AdBlock -- DOMAIN-SUFFIX,counter.yesky.com,AdBlock -- DOMAIN-SUFFIX,countpvn.light.fang.com,AdBlock -- DOMAIN-SUFFIX,countubn.light.soufun.com,AdBlock -- DOMAIN-SUFFIX,couqm.com.cn,AdBlock -- DOMAIN-SUFFIX,cp.5jjx.net,AdBlock -- DOMAIN-SUFFIX,cp.ggyapp.com,AdBlock -- DOMAIN-SUFFIX,cp.greenxf.cn,AdBlock -- DOMAIN-SUFFIX,cp.gs307.com,AdBlock -- DOMAIN-SUFFIX,cp.jfcdns.com,AdBlock -- DOMAIN-SUFFIX,cp.jz5u.net,AdBlock -- DOMAIN-SUFFIX,cpc.sogou.com,AdBlock -- DOMAIN-SUFFIX,cpc.sohu.com,AdBlock -- DOMAIN-SUFFIX,cpcv.cc,AdBlock -- DOMAIN-SUFFIX,cpm.amateurcommunity.com,AdBlock -- DOMAIN-SUFFIX,cpm.amateurcommunity.de,AdBlock -- DOMAIN-SUFFIX,cpm.cm.sandai.net,AdBlock -- DOMAIN-SUFFIX,cpmchina.co,AdBlock -- DOMAIN-SUFFIX,cpms.cc,AdBlock -- DOMAIN-SUFFIX,cpro.9xu.com,AdBlock -- DOMAIN-SUFFIX,cpro.baidu.cn,AdBlock -- DOMAIN-SUFFIX,cpro.baidu.com,AdBlock -- DOMAIN-SUFFIX,cpro.fangtoo.com,AdBlock -- DOMAIN-SUFFIX,cpro.zhidao.baidu.com,AdBlock -- DOMAIN-SUFFIX,cpro.zol.com.cn,AdBlock -- DOMAIN-SUFFIX,cpro1.edushi.com,AdBlock -- DOMAIN-SUFFIX,cpro2.baidu.com,AdBlock -- DOMAIN-SUFFIX,cps.360buy.com,AdBlock -- DOMAIN-SUFFIX,cpu-admin.baidu.com,AdBlock -- DOMAIN-SUFFIX,cpv.channelray,AdBlock -- DOMAIN-SUFFIX,cpv.czpush.com,AdBlock -- DOMAIN-SUFFIX,cpv.ty229.com,AdBlock -- DOMAIN-SUFFIX,cpv6.com,AdBlock -- DOMAIN-SUFFIX,cpva.cc,AdBlock -- DOMAIN-SUFFIX,cpv-adv.ggytc.com,AdBlock -- DOMAIN-SUFFIX,cpx24.com,AdBlock -- DOMAIN-SUFFIX,cqfangduan.com,AdBlock -- DOMAIN-SUFFIX,cqftonline.com,AdBlock -- DOMAIN-SUFFIX,cqhnm.com,AdBlock -- DOMAIN-SUFFIX,cqsta.com,AdBlock -- DOMAIN-SUFFIX,cqyhd.com,AdBlock -- DOMAIN-SUFFIX,cr.m.liebao.cn,AdBlock -- DOMAIN-SUFFIX,crashapi.growingio.com,AdBlock -- DOMAIN-SUFFIX,crashes.mo.wps.cn,AdBlock -- DOMAIN-SUFFIX,crasheye.cn,AdBlock -- DOMAIN-SUFFIX,crashlytics.163.com,AdBlock -- DOMAIN-SUFFIX,crashlytics.com,AdBlock -- DOMAIN-SUFFIX,crdrjs.info,AdBlock -- DOMAIN-SUFFIX,cre.dp.sina.cn,AdBlock -- DOMAIN-SUFFIX,cre.mix.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,cre99.com,AdBlock -- DOMAIN-SUFFIX,creatim.qtmojo.cn,AdBlock -- DOMAIN-SUFFIX,creative.1111cpc.com,AdBlock -- DOMAIN-SUFFIX,creative.jdkic.com,AdBlock -- DOMAIN-SUFFIX,creative.ltheanine.cn,AdBlock -- DOMAIN-SUFFIX,creatives.cliphunter.com,AdBlock -- DOMAIN-SUFFIX,creatives.ftchinese.com,AdBlock -- DOMAIN-SUFFIX,creatives.inmotionhosting.com,AdBlock -- DOMAIN-SUFFIX,creatives.livejasmin.com,AdBlock -- DOMAIN-SUFFIX,creatives.pichunter.com,AdBlock -- DOMAIN-SUFFIX,creatives.summitconnect.co.uk,AdBlock -- DOMAIN-SUFFIX,creatives1.ftimg.net,AdBlock -- DOMAIN-SUFFIX,cre-dp.sina.cn,AdBlock -- DOMAIN-SUFFIX,criteo.com,AdBlock -- DOMAIN-SUFFIX,criteo.net,AdBlock -- DOMAIN-SUFFIX,crl.microsoft.com,AdBlock -- DOMAIN-SUFFIX,crm-eve.b2b.alibaba-inc.com,AdBlock -- DOMAIN-SUFFIX,cr-nielsen.com,AdBlock -- DOMAIN-SUFFIX,crosschannel.com,AdBlock -- DOMAIN-SUFFIX,crossoverchina.com,AdBlock -- DOMAIN-SUFFIX,cr-p16.ladsp.com,AdBlock -- DOMAIN-SUFFIX,crs.baidu.com,AdBlock -- DOMAIN-SUFFIX,crwdcntrl.net,AdBlock -- DOMAIN-SUFFIX,cs.dqwjzm.com,AdBlock -- DOMAIN-SUFFIX,cs.twcczhu.com,AdBlock -- DOMAIN-SUFFIX,csad.cc,AdBlock -- DOMAIN-SUFFIX,csbew.com,AdBlock -- DOMAIN-SUFFIX,csi.gstatic.com,AdBlock -- DOMAIN-SUFFIX,csqiulong.com,AdBlock -- DOMAIN-SUFFIX,cstoa.com,AdBlock -- DOMAIN-SUFFIX,csxjys.com,AdBlock -- DOMAIN-SUFFIX,cszlks.com,AdBlock -- DOMAIN-SUFFIX,ct.210189.com,AdBlock -- DOMAIN-SUFFIX,ct.niu.xunlei.com,AdBlock -- DOMAIN-SUFFIX,cti.w55c.net,AdBlock -- DOMAIN-SUFFIX,ctrmi.com,AdBlock -- DOMAIN-SUFFIX,ctsywy.com,AdBlock -- DOMAIN-SUFFIX,cudaojia.com,AdBlock -- DOMAIN-SUFFIX,cupid.jebe.renren.com,AdBlock -- DOMAIN-SUFFIX,current.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,customad.cnn.com,AdBlock -- DOMAIN-SUFFIX,customer-security.online,AdBlock -- DOMAIN-SUFFIX,cut.qumi.com,AdBlock -- DOMAIN-SUFFIX,cvda.17173.com,AdBlock -- DOMAIN-SUFFIX,cvt.mydas.mobi,AdBlock -- DOMAIN-SUFFIX,cwpush.com,AdBlock -- DOMAIN-SUFFIX,cws-cctv.conviva.com,AdBlock -- DOMAIN-SUFFIX,cy123.cc,AdBlock -- DOMAIN-SUFFIX,cyacc.com,AdBlock -- DOMAIN-SUFFIX,cyad.cc,AdBlock -- DOMAIN-SUFFIX,cyad1.cyworld.com,AdBlock -- DOMAIN-SUFFIX,cyad1.nate.com,AdBlock -- DOMAIN-SUFFIX,cyad123.com,AdBlock -- DOMAIN-SUFFIX,cycy.kxrxh.com,AdBlock -- DOMAIN-SUFFIX,cylinderlongcheng.com,AdBlock -- DOMAIN-SUFFIX,cyylove.com,AdBlock -- DOMAIN-SUFFIX,cz.ifeng0.com,AdBlock -- DOMAIN-SUFFIX,cz01016102.cg2017.com,AdBlock -- DOMAIN-SUFFIX,cz01016102.ms758.com,AdBlock -- DOMAIN-SUFFIX,czdqhyo1.net,AdBlock -- DOMAIN-SUFFIX,czf.cchfjz.com,AdBlock -- DOMAIN-SUFFIX,czjiuding.cn,AdBlock -- DOMAIN-SUFFIX,czpush.com,AdBlock -- DOMAIN-SUFFIX,czpwm.com,AdBlock -- DOMAIN-SUFFIX,czxiangyue.com,AdBlock -- DOMAIN-SUFFIX,d.107788.com,AdBlock -- DOMAIN-SUFFIX,d.1391.com,AdBlock -- DOMAIN-SUFFIX,d.39.net,AdBlock -- DOMAIN-SUFFIX,d.admx.baixing.com,AdBlock -- DOMAIN-SUFFIX,d.agkn.com,AdBlock -- DOMAIN-SUFFIX,d.annarbor.com,AdBlock -- DOMAIN-SUFFIX,d.applovin.com,AdBlock -- DOMAIN-SUFFIX,d.beigedi.com,AdBlock -- DOMAIN-SUFFIX,d.businessinsider.com,AdBlock -- DOMAIN-SUFFIX,d.clkservice.youdao.com,AdBlock -- DOMAIN-SUFFIX,d.danangmo.cn,AdBlock -- DOMAIN-SUFFIX,d.elong.cn,AdBlock -- DOMAIN-SUFFIX,d.gossipcenter.com,AdBlock -- DOMAIN-SUFFIX,d.kugou.com,AdBlock -- DOMAIN-SUFFIX,d.ligatus.com,AdBlock -- DOMAIN-SUFFIX,d.mingyihui.net,AdBlock -- DOMAIN-SUFFIX,d.rexuebi.com,AdBlock -- DOMAIN-SUFFIX,d.ruiwen.com,AdBlock -- DOMAIN-SUFFIX,d.thelocal.com,AdBlock -- DOMAIN-SUFFIX,d.tjgxzs.com,AdBlock -- DOMAIN-SUFFIX,d.tonghua5.com,AdBlock -- DOMAIN-SUFFIX,d.turn.com,AdBlock -- DOMAIN-SUFFIX,d.union.ijinshan.com,AdBlock -- DOMAIN-SUFFIX,d.xinshipu.com,AdBlock -- DOMAIN-SUFFIX,d.yjbys.com,AdBlock -- DOMAIN-SUFFIX,d.yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,d.yoyi.tv,AdBlock -- DOMAIN-SUFFIX,d0.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,d0.sinaimg.cn,AdBlock -- DOMAIN-SUFFIX,d0.xcar.com.cn,AdBlock -- DOMAIN-SUFFIX,d00.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,d1.showself.com,AdBlock -- DOMAIN-SUFFIX,d1.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,d1.sinaimg.cn,AdBlock -- DOMAIN-SUFFIX,d1ad.com,AdBlock -- DOMAIN-SUFFIX,d1grtyyel8f1mh.cloudfront.net,AdBlock -- DOMAIN-SUFFIX,d1zgderxoe1a.cloudfront.net,AdBlock -- DOMAIN-SUFFIX,d2.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,d2.sinaimg.cn,AdBlock -- DOMAIN-SUFFIX,d2.yiche.com,AdBlock -- DOMAIN-SUFFIX,d29qt51jeyi6xb.cloudfront.net,AdBlock -- DOMAIN-SUFFIX,d2qkpebv23oowx.cloudfront.net,AdBlock -- DOMAIN-SUFFIX,d3.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,d3.sinaimg.cn,AdBlock -- DOMAIN-SUFFIX,d31qbv1cthcecs.cloudfront.net,AdBlock -- DOMAIN-SUFFIX,d36eyd5j1kt1m6.cloudfront.net,AdBlock -- DOMAIN-SUFFIX,d3f.houyi.baofeng.net,AdBlock -- DOMAIN-SUFFIX,d3g.qq.com,AdBlock -- DOMAIN-SUFFIX,d3v1lb83psg9di.cloudfront.net,AdBlock -- DOMAIN-SUFFIX,d4.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,d5.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,d520m.gzcl999.cn,AdBlock -- DOMAIN-SUFFIX,d5nxst8fruw4z.cloudfront.net,AdBlock -- DOMAIN-SUFFIX,d5p.de17a.com,AdBlock -- DOMAIN-SUFFIX,d6.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,d6.sinaimg.cn,AdBlock -- DOMAIN-SUFFIX,d7.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,d7.sinaimg.cn,AdBlock -- DOMAIN-SUFFIX,d77777777.com,AdBlock -- DOMAIN-SUFFIX,d8.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,d8.sinaimg.cn,AdBlock -- DOMAIN-SUFFIX,d8.zedo.com,AdBlock -- DOMAIN-SUFFIX,d8360.com,AdBlock -- DOMAIN-SUFFIX,d8885.com,AdBlock -- DOMAIN-SUFFIX,d9.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,daa.shuzilm.cn,AdBlock -- DOMAIN-SUFFIX,dacash.streamplay.to,AdBlock -- DOMAIN-SUFFIX,dadjia.com,AdBlock -- DOMAIN-SUFFIX,dads.new.digg.com,AdBlock -- DOMAIN-SUFFIX,dafahao.com,AdBlock -- DOMAIN-SUFFIX,dafahao.org,AdBlock -- DOMAIN-SUFFIX,dafapromo.com,AdBlock -- DOMAIN-SUFFIX,dahanedu.com,AdBlock -- DOMAIN-SUFFIX,dai.shuzilm.cn,AdBlock -- DOMAIN-SUFFIX,dailydeals.amarillo.com,AdBlock -- DOMAIN-SUFFIX,dailydeals.augustachronicle.com,AdBlock -- DOMAIN-SUFFIX,dailydeals.brainerddispatch.com,AdBlock -- DOMAIN-SUFFIX,dailydeals.lubbockonline.com,AdBlock -- DOMAIN-SUFFIX,dailydeals.onlineathens.com,AdBlock -- DOMAIN-SUFFIX,dailydeals.savannahnow.com,AdBlock -- DOMAIN-SUFFIX,dailylog.storm.baofeng.com,AdBlock -- DOMAIN-SUFFIX,dailyvideo.securejoin.com,AdBlock -- DOMAIN-SUFFIX,daima.23yy.com,AdBlock -- DOMAIN-SUFFIX,daima.chazidian.com,AdBlock -- DOMAIN-SUFFIX,daima.diaoben.net,AdBlock -- DOMAIN-SUFFIX,daima.dsxdn.com,AdBlock -- DOMAIN-SUFFIX,daima.huoche.net,AdBlock -- DOMAIN-SUFFIX,daima.ijq.tv,AdBlock -- DOMAIN-SUFFIX,daima.mubite.cn,AdBlock -- DOMAIN-SUFFIX,daima.youbian.com,AdBlock -- DOMAIN-SUFFIX,daima123.cc,AdBlock -- DOMAIN-SUFFIX,dairuqi.com,AdBlock -- DOMAIN-SUFFIX,daitdai.com,AdBlock -- DOMAIN-SUFFIX,dajean.com,AdBlock -- DOMAIN-SUFFIX,dajiyuan.com,AdBlock -- DOMAIN-SUFFIX,dajiyuan.org,AdBlock -- DOMAIN-SUFFIX,dalianhengtai.com,AdBlock -- DOMAIN-SUFFIX,dandan11.top,AdBlock -- DOMAIN-SUFFIX,dandan13.top,AdBlock -- DOMAIN-SUFFIX,dandan15.top,AdBlock -- DOMAIN-SUFFIX,danpinwu.com,AdBlock -- DOMAIN-SUFFIX,dante2007.com,AdBlock -- DOMAIN-SUFFIX,daohang.114so.cn,AdBlock -- DOMAIN-SUFFIX,daoyoudao.com,AdBlock -- DOMAIN-SUFFIX,dap.pagechoice.net,AdBlock -- DOMAIN-SUFFIX,dart.clearchannel.com,AdBlock -- DOMAIN-SUFFIX,dashet.com,AdBlock -- DOMAIN-SUFFIX,data.3975.com,AdBlock -- DOMAIN-SUFFIX,data.ad-score.com,AdBlock -- DOMAIN-SUFFIX,data.apn.co.nz,AdBlock -- DOMAIN-SUFFIX,data.danmu.baofeng.com,AdBlock -- DOMAIN-SUFFIX,data.doodlemobile.com,AdBlock -- DOMAIN-SUFFIX,data.gosquared.com,AdBlock -- DOMAIN-SUFFIX,data.mistat.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,data.neuroxmedia.com,AdBlock -- DOMAIN-SUFFIX,data2.doodlemobile.com,AdBlock -- DOMAIN-SUFFIX,data2.gosquared.com,AdBlock -- DOMAIN-SUFFIX,databank.air.yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,databank.yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,datacapture.serving-sys.com,AdBlock -- DOMAIN-SUFFIX,datafastguru.info,AdBlock -- DOMAIN-SUFFIX,data-news.cdn.cootekservice.com,AdBlock -- DOMAIN-SUFFIX,data-pic.cdn.cootekservice.com,AdBlock -- DOMAIN-SUFFIX,datax.baidu.com,AdBlock -- DOMAIN-SUFFIX,datouniao.com,AdBlock -- DOMAIN-SUFFIX,dawwx.com,AdBlock -- DOMAIN-SUFFIX,day66.com,AdBlock -- DOMAIN-SUFFIX,dazhantai.com,AdBlock -- DOMAIN-SUFFIX,dazhonghua.cn,AdBlock -- DOMAIN-SUFFIX,db1.fuz.cc,AdBlock -- DOMAIN-SUFFIX,db2.fuz.cc,AdBlock -- DOMAIN-SUFFIX,dbam.dashbida.com,AdBlock -- DOMAIN-SUFFIX,dbncp.com,AdBlock -- DOMAIN-SUFFIX,dbregistration.cuteftp.com,AdBlock -- DOMAIN-SUFFIX,dbwmjj.com,AdBlock -- DOMAIN-SUFFIX,dc.cp21.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,dc.csdn.net,AdBlock -- DOMAIN-SUFFIX,dc.liuliang100.com,AdBlock -- DOMAIN-SUFFIX,dc.meitustat.com,AdBlock -- DOMAIN-SUFFIX,dc.vmoters.com,AdBlock -- DOMAIN-SUFFIX,dc.xhct66.com,AdBlock -- DOMAIN-SUFFIX,dc2.csdn.net,AdBlock -- DOMAIN-SUFFIX,d-cache.microad-cn.com,AdBlock -- DOMAIN-SUFFIX,dcad.watersoul.com,AdBlock -- DOMAIN-SUFFIX,dcads.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,dcapps.disney.go.com,AdBlock -- DOMAIN-SUFFIX,dcjs.cig.com.cn,AdBlock -- DOMAIN-SUFFIX,dcw.hdswgc.com,AdBlock -- DOMAIN-SUFFIX,dd.70yst.com,AdBlock -- DOMAIN-SUFFIX,dd.dante2007.com,AdBlock -- DOMAIN-SUFFIX,dd.iask.cn,AdBlock -- DOMAIN-SUFFIX,dd.iaskgo.com,AdBlock -- DOMAIN-SUFFIX,dd.mangofortune.net,AdBlock -- DOMAIN-SUFFIX,dd.wx16999.com,AdBlock -- DOMAIN-SUFFIX,ddanq.com,AdBlock -- DOMAIN-SUFFIX,ddapp.cn,AdBlock -- DOMAIN-SUFFIX,ddd.haodizhi666.com,AdBlock -- DOMAIN-SUFFIX,ddd.yuyouge.com,AdBlock -- DOMAIN-SUFFIX,ddg1277.com,AdBlock -- DOMAIN-SUFFIX,ddhtek.com,AdBlock -- DOMAIN-SUFFIX,ddkkrrla.m.qxs.la,AdBlock -- DOMAIN-SUFFIX,ddomm.com,AdBlock -- DOMAIN-SUFFIX,ddpxhq.cn,AdBlock -- DOMAIN-SUFFIX,ddrrccck.m.qxs.la,AdBlock -- DOMAIN-SUFFIX,de.as.cp61.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,de.dzribao.com,AdBlock -- DOMAIN-SUFFIX,de.ioam.de,AdBlock -- DOMAIN-SUFFIX,de.pandora.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,deals.ledgertranscript.com,AdBlock -- DOMAIN-SUFFIX,debugreport.mobiledissector.com,AdBlock -- DOMAIN-SUFFIX,dejing.laobanfa.com,AdBlock -- DOMAIN-SUFFIX,deletemer.online,AdBlock -- DOMAIN-SUFFIX,deliver.kuwo.cn,AdBlock -- DOMAIN-SUFFIX,delivery.maihehd.com,AdBlock -- DOMAIN-SUFFIX,delivery.playallvideos.com,AdBlock -- DOMAIN-SUFFIX,delivery.porn.com,AdBlock -- DOMAIN-SUFFIX,delivery.wasu.cn,AdBlock -- DOMAIN-SUFFIX,delivery-pc.wasu.cn,AdBlock -- DOMAIN-SUFFIX,demo.jointreport-switch.com,AdBlock -- DOMAIN-SUFFIX,desk.cmix.org,AdBlock -- DOMAIN-SUFFIX,detuns.com,AdBlock -- DOMAIN-SUFFIX,dev.tg.youxi.com,AdBlock -- DOMAIN-SUFFIX,devs.data.mob.com,AdBlock -- DOMAIN-SUFFIX,dezfu.com,AdBlock -- DOMAIN-SUFFIX,df3n43m.com,AdBlock -- DOMAIN-SUFFIX,df77.com,AdBlock -- DOMAIN-SUFFIX,dfad.dfdaily.com,AdBlock -- DOMAIN-SUFFIX,dfc1.benbaisteel.com,AdBlock -- DOMAIN-SUFFIX,dfp.suning.com,AdBlock -- DOMAIN-SUFFIX,dfx.shhuixiangwuliu.com,AdBlock -- DOMAIN-SUFFIX,dfx.vnnv777.cn,AdBlock -- DOMAIN-SUFFIX,dgfggy.com,AdBlock -- DOMAIN-SUFFIX,dgpzx.com,AdBlock -- DOMAIN-SUFFIX,dh.holaworld.cn,AdBlock -- DOMAIN-SUFFIX,dhxyzx.cn,AdBlock -- DOMAIN-SUFFIX,diag-vd.gridsumdissector.com,AdBlock -- DOMAIN-SUFFIX,diag-wd.gridsumdissector.com,AdBlock -- DOMAIN-SUFFIX,dialer.cdn.cootekservice.com,AdBlock -- DOMAIN-SUFFIX,dianjoy.com,AdBlock -- DOMAIN-SUFFIX,dianru.com,AdBlock -- DOMAIN-SUFFIX,diaojiaoji168.com,AdBlock -- DOMAIN-SUFFIX,diaopic.14bobo.com,AdBlock -- DOMAIN-SUFFIX,diediao.com,AdBlock -- DOMAIN-SUFFIX,difnxm.cn,AdBlock -- DOMAIN-SUFFIX,digdug.divxnetworks.com,AdBlock -- DOMAIN-SUFFIX,dimg1.sz.net.cn,AdBlock -- DOMAIN-SUFFIX,dingon.com.cn,AdBlock -- DOMAIN-SUFFIX,dip.pyangzi.com,AdBlock -- DOMAIN-SUFFIX,dip.szhyzkj.com,AdBlock -- DOMAIN-SUFFIX,dip.wl963.com,AdBlock -- DOMAIN-SUFFIX,dip.zgydjr.com,AdBlock -- DOMAIN-SUFFIX,dipan.com,AdBlock -- DOMAIN-SUFFIX,directrev.com,AdBlock -- DOMAIN-SUFFIX,dis.crieto.com,AdBlock -- DOMAIN-SUFFIX,dis.criteo.com,AdBlock -- DOMAIN-SUFFIX,dis.us.criteo.com,AdBlock -- DOMAIN-SUFFIX,discuz.gtimg.cn,AdBlock -- DOMAIN-SUFFIX,dispenser-rtb.sape.ru,AdBlock -- DOMAIN-SUFFIX,display.360totalsecurity.com,AdBlock -- DOMAIN-SUFFIX,display.ad.daum.net,AdBlock -- DOMAIN-SUFFIX,display.adhudong.com,AdBlock -- DOMAIN-SUFFIX,display.digitalriver.com,AdBlock -- DOMAIN-SUFFIX,display.superbay.net,AdBlock -- DOMAIN-SUFFIX,disqusads.com,AdBlock -- DOMAIN-SUFFIX,distf.kankan.com,AdBlock -- DOMAIN-SUFFIX,diyxjd.com,AdBlock -- DOMAIN-SUFFIX,djs.baomihua.com,AdBlock -- DOMAIN-SUFFIX,dkdlsj.com,AdBlock -- DOMAIN-SUFFIX,dkeyn.com,AdBlock -- DOMAIN-SUFFIX,dl.2345.com,AdBlock -- DOMAIN-SUFFIX,dl.360safe.com,AdBlock -- DOMAIN-SUFFIX,dl.9xu.com,AdBlock -- DOMAIN-SUFFIX,dl.client.baidu.com,AdBlock -- DOMAIN-SUFFIX,dl.cm.ksmobile.com,AdBlock -- DOMAIN-SUFFIX,dl.eduancm.com,AdBlock -- DOMAIN-SUFFIX,dl.img80.net,AdBlock -- DOMAIN-SUFFIX,dl.jianshunrui.com,AdBlock -- DOMAIN-SUFFIX,dl.kinbest.cn,AdBlock -- DOMAIN-SUFFIX,dl.kjava.sina.cn,AdBlock -- DOMAIN-SUFFIX,dl.mbsea.com,AdBlock -- DOMAIN-SUFFIX,dl.nx5.com,AdBlock -- DOMAIN-SUFFIX,dl.ops.baidu.com,AdBlock -- DOMAIN-SUFFIX,dl.sybspools.com,AdBlock -- DOMAIN-SUFFIX,dl.union.ijinshan.com,AdBlock -- DOMAIN-SUFFIX,dl.uu.cc,AdBlock -- DOMAIN-SUFFIX,dl.wan.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,dl.xzqxzs.com,AdBlock -- DOMAIN-SUFFIX,dl.youjia2016.com,AdBlock -- DOMAIN-SUFFIX,dl1sw.baidu.com,AdBlock -- DOMAIN-SUFFIX,dl2.bav.baidu.com,AdBlock -- DOMAIN-SUFFIX,dleke.com,AdBlock -- DOMAIN-SUFFIX,dlimg.lovfp.com,AdBlock -- DOMAIN-SUFFIX,dload.qd.qingting.fm,AdBlock -- DOMAIN-SUFFIX,dlpifu.com,AdBlock -- DOMAIN-SUFFIX,dlrijiaele.com,AdBlock -- DOMAIN-SUFFIX,dlsw.baidu.com,AdBlock -- DOMAIN-SUFFIX,dlsw.br.baidu.com,AdBlock -- DOMAIN-SUFFIX,dl-vip.bav.baidu.com,AdBlock -- DOMAIN-SUFFIX,dl-vip.pcfaster.baidu.co.th,AdBlock -- DOMAIN-SUFFIX,dlzjdesign.com,AdBlock -- DOMAIN-SUFFIX,dm.388g.cc,AdBlock -- DOMAIN-SUFFIX,dm.51okc.com,AdBlock -- DOMAIN-SUFFIX,dm.92to.com,AdBlock -- DOMAIN-SUFFIX,dm.aizhan.com,AdBlock -- DOMAIN-SUFFIX,dm.bytedance.com,AdBlock -- DOMAIN-SUFFIX,dm.chalook.net,AdBlock -- DOMAIN-SUFFIX,dm.fsyzcs.com,AdBlock -- DOMAIN-SUFFIX,dm.gbeik.com,AdBlock -- DOMAIN-SUFFIX,dm.jb51.net,AdBlock -- DOMAIN-SUFFIX,dm.jinshasi.cn,AdBlock -- DOMAIN-SUFFIX,dm.jsyst.cn,AdBlock -- DOMAIN-SUFFIX,dm.jy135.com,AdBlock -- DOMAIN-SUFFIX,dm.ppzuowen.com,AdBlock -- DOMAIN-SUFFIX,dm.pstatp.com,AdBlock -- DOMAIN-SUFFIX,dm.pw0.cn,AdBlock -- DOMAIN-SUFFIX,dm.riji.cn,AdBlock -- DOMAIN-SUFFIX,dm.sanwen.net,AdBlock -- DOMAIN-SUFFIX,dm.sanwen8.com,AdBlock -- DOMAIN-SUFFIX,dm.sb580.com,AdBlock -- DOMAIN-SUFFIX,dm.toutiao.com,AdBlock -- DOMAIN-SUFFIX,dm.ws8.org,AdBlock -- DOMAIN-SUFFIX,dm.yjbys.com,AdBlock -- DOMAIN-SUFFIX,dm1.tom61.com,AdBlock -- DOMAIN-SUFFIX,dm50.jkyd.net,AdBlock -- DOMAIN-SUFFIX,dm50.yxlady.com,AdBlock -- DOMAIN-SUFFIX,dmacore.kejet.com,AdBlock -- DOMAIN-SUFFIX,dmacore.kejet.net,AdBlock -- DOMAIN-SUFFIX,dmg.digitaltarget.ru,AdBlock -- DOMAIN-SUFFIX,dmp.kejet.net,AdBlock -- DOMAIN-SUFFIX,dmp.sina.cn,AdBlock -- DOMAIN-SUFFIX,dmpclick.deliver.ifeng.com,AdBlock -- DOMAIN-SUFFIX,dmrtb.com,AdBlock -- DOMAIN-SUFFIX,dmt.qcrx.cn,AdBlock -- DOMAIN-SUFFIX,dmtrck.com,AdBlock -- DOMAIN-SUFFIX,dn3.ixinwei.com,AdBlock -- DOMAIN-SUFFIX,dn7788.com,AdBlock -- DOMAIN-SUFFIX,dn-growing.qbox.me,AdBlock -- DOMAIN-SUFFIX,dnvus.com,AdBlock -- DOMAIN-SUFFIX,do.lymstsc.com,AdBlock -- DOMAIN-SUFFIX,do69ifsly4.me,AdBlock -- DOMAIN-SUFFIX,doc.go.sohu.com,AdBlock -- DOMAIN-SUFFIX,dol.deliver.ifeng.com,AdBlock -- DOMAIN-SUFFIX,dolphin.deliver.ifeng.com,AdBlock -- DOMAIN-SUFFIX,dolphin.ftimg.net,AdBlock -- DOMAIN-SUFFIX,dolphin4.ftimg.net,AdBlock -- DOMAIN-SUFFIX,domed.shenbimall.com,AdBlock -- DOMAIN-SUFFIX,do-not-tracker.org,AdBlock -- DOMAIN-SUFFIX,dontblockme.modaco.com,AdBlock -- DOMAIN-SUFFIX,dopa.com,AdBlock -- DOMAIN-SUFFIX,dot.eporner.com,AdBlock -- DOMAIN-SUFFIX,dot2.eporner.com,AdBlock -- DOMAIN-SUFFIX,dotmore.com.tw,AdBlock -- DOMAIN-SUFFIX,dou777.com,AdBlock -- DOMAIN-SUFFIX,doubleclick.com,AdBlock -- DOMAIN-SUFFIX,doubleclick.ctfile.com,AdBlock -- DOMAIN-SUFFIX,doubleclick.net,AdBlock -- DOMAIN-SUFFIX,doubleclick.tv002.com,AdBlock -- DOMAIN-SUFFIX,doubleplay-conf-yql.media.yahoo.com,AdBlock -- DOMAIN-SUFFIX,doubleverify.com,AdBlock -- DOMAIN-SUFFIX,doudao.cn,AdBlock -- DOMAIN-SUFFIX,doudouguo.com,AdBlock -- DOMAIN-SUFFIX,dougou88.com,AdBlock -- DOMAIN-SUFFIX,doumob.com,AdBlock -- DOMAIN-SUFFIX,down.360safe.com,AdBlock -- DOMAIN-SUFFIX,down.91wangmeng.com,AdBlock -- DOMAIN-SUFFIX,down.bugeyu.com,AdBlock -- DOMAIN-SUFFIX,down.dashendown.com,AdBlock -- DOMAIN-SUFFIX,down.diannaodian.com,AdBlock -- DOMAIN-SUFFIX,down.laomaotao.net,AdBlock -- DOMAIN-SUFFIX,down.winads.cn,AdBlock -- DOMAIN-SUFFIX,down.winbaicai.com,AdBlock -- DOMAIN-SUFFIX,down.xiazaidc.com,AdBlock -- DOMAIN-SUFFIX,down.xiazaiyuan.net,AdBlock -- DOMAIN-SUFFIX,downlaod.xiaocen.com,AdBlock -- DOMAIN-SUFFIX,download.123cw.cn,AdBlock -- DOMAIN-SUFFIX,download.2345.com,AdBlock -- DOMAIN-SUFFIX,download.350.com,AdBlock -- DOMAIN-SUFFIX,download.bav.baidu.com,AdBlock -- DOMAIN-SUFFIX,download.coolguang.com,AdBlock -- DOMAIN-SUFFIX,download.fuyuncc.com,AdBlock -- DOMAIN-SUFFIX,download.mediaget.com,AdBlock -- DOMAIN-SUFFIX,download.qianka.com,AdBlock -- DOMAIN-SUFFIX,download.sd.baidu.com,AdBlock -- DOMAIN-SUFFIX,download.sj.qq.com,AdBlock -- DOMAIN-SUFFIX,download.zhushou.sogou.com,AdBlock -- DOMAIN-SUFFIX,download3.123cw.cn,AdBlock -- DOMAIN-SUFFIX,downloada.dewmobile.net,AdBlock -- DOMAIN-SUFFIX,downloadb.dewmobile.net,AdBlock -- DOMAIN-SUFFIX,downmobile.kugou.com,AdBlock -- DOMAIN-SUFFIX,dp.559.cc,AdBlock -- DOMAIN-SUFFIX,dp3.qq.com,AdBlock -- DOMAIN-SUFFIX,dpm.demdex.net,AdBlock -- DOMAIN-SUFFIX,dps.499.cn,AdBlock -- DOMAIN-SUFFIX,dps.shouji56.com,AdBlock -- DOMAIN-SUFFIX,dps.wtdtjs.com,AdBlock -- DOMAIN-SUFFIX,dpvc.39.net,AdBlock -- DOMAIN-SUFFIX,dpvc1.qqyy.com,AdBlock -- DOMAIN-SUFFIX,dpvc2.qqyy.com,AdBlock -- DOMAIN-SUFFIX,dpvchos.qqyy.com,AdBlock -- DOMAIN-SUFFIX,dpvcimg.qqyy.com,AdBlock -- DOMAIN-SUFFIX,dqq.lnfund.org.cn,AdBlock -- DOMAIN-SUFFIX,dqsft.com,AdBlock -- DOMAIN-SUFFIX,dr.holaworld.cn,AdBlock -- DOMAIN-SUFFIX,dragoncent.com,AdBlock -- DOMAIN-SUFFIX,drd.hauchi.com.tw,AdBlock -- DOMAIN-SUFFIX,drdj.m.gxwztv.com,AdBlock -- DOMAIN-SUFFIX,drdwy.com,AdBlock -- DOMAIN-SUFFIX,dreamfull.cn,AdBlock -- DOMAIN-SUFFIX,dressimage.img-cn-beijing.aliyuncs.com,AdBlock -- DOMAIN-SUFFIX,drlsf.com,AdBlock -- DOMAIN-SUFFIX,drm.cmgame.com,AdBlock -- DOMAIN-SUFFIX,drmcmm.baidu.com,AdBlock -- DOMAIN-SUFFIX,drsw.m.yuyouge.com,AdBlock -- DOMAIN-SUFFIX,drvmy.ats68.cn,AdBlock -- DOMAIN-SUFFIX,drxrc.com,AdBlock -- DOMAIN-SUFFIX,ds.jlbksy.com,AdBlock -- DOMAIN-SUFFIX,ds.serving-sys.com,AdBlock -- DOMAIN-SUFFIX,dsadas.hydp188.com,AdBlock -- DOMAIN-SUFFIX,dsaeerf.com,AdBlock -- DOMAIN-SUFFIX,dshrx.com,AdBlock -- DOMAIN-SUFFIX,dsjsee.dqgpb.com,AdBlock -- DOMAIN-SUFFIX,ds-ll.serving-sys.com,AdBlock -- DOMAIN-SUFFIX,dsp.adfarm1.adition.com,AdBlock -- DOMAIN-SUFFIX,dsp.com,AdBlock -- DOMAIN-SUFFIX,dsp.hypers.com.cn,AdBlock -- DOMAIN-SUFFIX,dsp.pro.cn,AdBlock -- DOMAIN-SUFFIX,dsp.send.microad-cn.com,AdBlock -- DOMAIN-SUFFIX,dsp.simba.taobao.com,AdBlock -- DOMAIN-SUFFIX,dsp.toutiao.com,AdBlock -- DOMAIN-SUFFIX,dsp.youdao.com,AdBlock -- DOMAIN-SUFFIX,ds-pc.admsger.com,AdBlock -- DOMAIN-SUFFIX,dsp-click.youdao.com,AdBlock -- DOMAIN-SUFFIX,dsp-impr.youdao.com,AdBlock -- DOMAIN-SUFFIX,dsp-impr2.youdao.com,AdBlock -- DOMAIN-SUFFIX,dspmnt.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,dspmy.ge95.com,AdBlock -- DOMAIN-SUFFIX,dspserver.ad.cmvideo.cn,AdBlock -- DOMAIN-SUFFIX,ds-pv.iqu-operation.com,AdBlock -- DOMAIN-SUFFIX,dsxdn.com,AdBlock -- DOMAIN-SUFFIX,dt.adsafeprotected.com,AdBlock -- DOMAIN-SUFFIX,d-track.send.microad-cn.com,AdBlock -- DOMAIN-SUFFIX,dtrk.slimcdn.com,AdBlock -- DOMAIN-SUFFIX,dts.akamai.startappexchange.com,AdBlock -- DOMAIN-SUFFIX,duanat.com,AdBlock -- DOMAIN-SUFFIX,duapp.com,AdBlock -- DOMAIN-SUFFIX,duapps.com,AdBlock -- DOMAIN-SUFFIX,dugbvb.com,AdBlock -- DOMAIN-SUFFIX,dugesheying.com,AdBlock -- DOMAIN-SUFFIX,duiwai.baidu.com,AdBlock -- DOMAIN-SUFFIX,dumedia.ru,AdBlock -- DOMAIN-SUFFIX,duoyidd.com,AdBlock -- DOMAIN-SUFFIX,dushimj.com,AdBlock -- DOMAIN-SUFFIX,duusuu.com,AdBlock -- DOMAIN-SUFFIX,duyihu.net,AdBlock -- DOMAIN-SUFFIX,dv8c1t.cn,AdBlock -- DOMAIN-SUFFIX,dvb.pandora.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,dvr8.com,AdBlock -- DOMAIN-SUFFIX,dvs.china.com,AdBlock -- DOMAIN-SUFFIX,dvsend.china.com,AdBlock -- DOMAIN-SUFFIX,dvser.china.com,AdBlock -- DOMAIN-SUFFIX,dvser02.china.com,AdBlock -- DOMAIN-SUFFIX,dvx-android.0.0.0.0.cn,AdBlock -- DOMAIN-SUFFIX,dw.koudaibl.com,AdBlock -- DOMAIN-SUFFIX,dw.xcar.com.cn,AdBlock -- DOMAIN-SUFFIX,dw998.com,AdBlock -- DOMAIN-SUFFIX,dwa.okwan.cn,AdBlock -- DOMAIN-SUFFIX,dx1200.com,AdBlock -- DOMAIN-SUFFIX,dxp.baidu.com,AdBlock -- DOMAIN-SUFFIX,dxpmedia.com,AdBlock -- DOMAIN-SUFFIX,dxprla.m.qxs.la,AdBlock -- DOMAIN-SUFFIX,dxssiyi.com,AdBlock -- DOMAIN-SUFFIX,dyb.jdcbuy.com,AdBlock -- DOMAIN-SUFFIX,dydab.com,AdBlock -- DOMAIN-SUFFIX,dyn.tnaflix.com,AdBlock -- DOMAIN-SUFFIX,dynamic.aol.com,AdBlock -- DOMAIN-SUFFIX,dynamic.zol.com.cn,AdBlock -- DOMAIN-SUFFIX,dz2017.zdzxyplyt.com,AdBlock -- DOMAIN-SUFFIX,dzais.com,AdBlock -- DOMAIN-SUFFIX,dzisou.com,AdBlock -- DOMAIN-SUFFIX,dzjzg.com,AdBlock -- DOMAIN-SUFFIX,dzl.baidu.com,AdBlock -- DOMAIN-SUFFIX,dzz.wankeedu.com,AdBlock -- DOMAIN-SUFFIX,e.0.0.0.0.cn,AdBlock -- DOMAIN-SUFFIX,e.0.0.0.0.com.cn,AdBlock -- DOMAIN-SUFFIX,e.027blzs.com,AdBlock -- DOMAIN-SUFFIX,e.0531mnk.net,AdBlock -- DOMAIN-SUFFIX,e.1919388.net,AdBlock -- DOMAIN-SUFFIX,e.28487.net,AdBlock -- DOMAIN-SUFFIX,e.51xmgys.com,AdBlock -- DOMAIN-SUFFIX,e.91.com,AdBlock -- DOMAIN-SUFFIX,e.aa985.cn,AdBlock -- DOMAIN-SUFFIX,e.acaog.com,AdBlock -- DOMAIN-SUFFIX,e.acaox.com,AdBlock -- DOMAIN-SUFFIX,e.admin60.com,AdBlock -- DOMAIN-SUFFIX,e.afvfe.cn,AdBlock -- DOMAIN-SUFFIX,e.anmeilai.net,AdBlock -- DOMAIN-SUFFIX,e.apxyz.com,AdBlock -- DOMAIN-SUFFIX,e.baidu.com,AdBlock -- DOMAIN-SUFFIX,e.bapkt.com,AdBlock -- DOMAIN-SUFFIX,e.bbvjs.com,AdBlock -- DOMAIN-SUFFIX,e.bentengcn.com,AdBlock -- DOMAIN-SUFFIX,e.bokanedu.net,AdBlock -- DOMAIN-SUFFIX,e.bsnnk.com,AdBlock -- DOMAIN-SUFFIX,e.bvoer.com,AdBlock -- DOMAIN-SUFFIX,e.cbeif.com,AdBlock -- DOMAIN-SUFFIX,e.ccunf.com,AdBlock -- DOMAIN-SUFFIX,e.cdfzcz.com,AdBlock -- DOMAIN-SUFFIX,e.chfuw.com,AdBlock -- DOMAIN-SUFFIX,e.cjieh.com,AdBlock -- DOMAIN-SUFFIX,e.ckikq.com,AdBlock -- DOMAIN-SUFFIX,e.cn-3drp.com,AdBlock -- DOMAIN-SUFFIX,e.codlw.com,AdBlock -- DOMAIN-SUFFIX,e.coenr.com,AdBlock -- DOMAIN-SUFFIX,e.crashlytics.com,AdBlock -- DOMAIN-SUFFIX,e.cuomm.com,AdBlock -- DOMAIN-SUFFIX,e.czggcj.com,AdBlock -- DOMAIN-SUFFIX,e.daishuxy.com,AdBlock -- DOMAIN-SUFFIX,e.danrs.com,AdBlock -- DOMAIN-SUFFIX,e.deimm.com,AdBlock -- DOMAIN-SUFFIX,e.diogv.com,AdBlock -- DOMAIN-SUFFIX,e.diupp.com,AdBlock -- DOMAIN-SUFFIX,e.dnfeu.com,AdBlock -- DOMAIN-SUFFIX,e.dsjre.com,AdBlock -- DOMAIN-SUFFIX,e.dunmm.com,AdBlock -- DOMAIN-SUFFIX,e.dxmci.com,AdBlock -- DOMAIN-SUFFIX,e.dzairen.com,AdBlock -- DOMAIN-SUFFIX,e.e7001.com,AdBlock -- DOMAIN-SUFFIX,e.e70123.com,AdBlock -- DOMAIN-SUFFIX,e.ehxyz.com,AdBlock -- DOMAIN-SUFFIX,e.emgwq.com,AdBlock -- DOMAIN-SUFFIX,e.enjuk.com,AdBlock -- DOMAIN-SUFFIX,e.ennmt.com,AdBlock -- DOMAIN-SUFFIX,e.fbaix.com,AdBlock -- DOMAIN-SUFFIX,e.fbaot.com,AdBlock -- DOMAIN-SUFFIX,e.fimky.com,AdBlock -- DOMAIN-SUFFIX,e.fkkse.com,AdBlock -- DOMAIN-SUFFIX,e.fkogs.com,AdBlock -- DOMAIN-SUFFIX,e.focuscat.com,AdBlock -- DOMAIN-SUFFIX,e.fstaw.com,AdBlock -- DOMAIN-SUFFIX,e.fwjoi.com,AdBlock -- DOMAIN-SUFFIX,e.fzyda.com,AdBlock -- DOMAIN-SUFFIX,e.gbieg.com,AdBlock -- DOMAIN-SUFFIX,e.gglay.com,AdBlock -- DOMAIN-SUFFIX,e.gxjfh.com,AdBlock -- DOMAIN-SUFFIX,e.gxkyl.com,AdBlock -- DOMAIN-SUFFIX,e.harbinbaojia.net,AdBlock -- DOMAIN-SUFFIX,e.hellomingpian.com,AdBlock -- DOMAIN-SUFFIX,e.hgrqp.com,AdBlock -- DOMAIN-SUFFIX,e.hissq.com,AdBlock -- DOMAIN-SUFFIX,e.hjryl.com,AdBlock -- DOMAIN-SUFFIX,e.hk7799.net,AdBlock -- DOMAIN-SUFFIX,e.hkmqp.com,AdBlock -- DOMAIN-SUFFIX,e.hmhqp.com,AdBlock -- DOMAIN-SUFFIX,e.hogyp.com,AdBlock -- DOMAIN-SUFFIX,e.hpzyl.com,AdBlock -- DOMAIN-SUFFIX,e.htper.com,AdBlock -- DOMAIN-SUFFIX,e.huaas.com,AdBlock -- DOMAIN-SUFFIX,e.hunpp.com,AdBlock -- DOMAIN-SUFFIX,e.huoas.com,AdBlock -- DOMAIN-SUFFIX,e.hurnt.com,AdBlock -- DOMAIN-SUFFIX,e.hyzui.com,AdBlock -- DOMAIN-SUFFIX,e.icyrd.com,AdBlock -- DOMAIN-SUFFIX,e.iierq.com,AdBlock -- DOMAIN-SUFFIX,e.infvb.com,AdBlock -- DOMAIN-SUFFIX,e.irauz.com,AdBlock -- DOMAIN-SUFFIX,e.irkuj.com,AdBlock -- DOMAIN-SUFFIX,e.iruad.com,AdBlock -- DOMAIN-SUFFIX,e.ishowms.com,AdBlock -- DOMAIN-SUFFIX,e.jdaot.com,AdBlock -- DOMAIN-SUFFIX,e.jgkto.com,AdBlock -- DOMAIN-SUFFIX,e.jiaas.com,AdBlock -- DOMAIN-SUFFIX,e.jiirz.com,AdBlock -- DOMAIN-SUFFIX,e.jioeg.com,AdBlock -- DOMAIN-SUFFIX,e.jkert.com,AdBlock -- DOMAIN-SUFFIX,e.jlkja.com,AdBlock -- DOMAIN-SUFFIX,e.jltdbyq.com,AdBlock -- DOMAIN-SUFFIX,e.jnsdkjzs.com,AdBlock -- DOMAIN-SUFFIX,e.joyxv.com,AdBlock -- DOMAIN-SUFFIX,e.juyzr.com,AdBlock -- DOMAIN-SUFFIX,e.jwiyr.com,AdBlock -- DOMAIN-SUFFIX,e.jxxiangchu.com,AdBlock -- DOMAIN-SUFFIX,e.kcooy.com,AdBlock -- DOMAIN-SUFFIX,e.kewro.com,AdBlock -- DOMAIN-SUFFIX,e.khuoy.com,AdBlock -- DOMAIN-SUFFIX,e.kjfhe.com,AdBlock -- DOMAIN-SUFFIX,e.kjhfy.com,AdBlock -- DOMAIN-SUFFIX,e.kl6636.net,AdBlock -- DOMAIN-SUFFIX,e.ksttwz.com,AdBlock -- DOMAIN-SUFFIX,e.kunpp.com,AdBlock -- DOMAIN-SUFFIX,e.kwjkd.com,AdBlock -- DOMAIN-SUFFIX,e.kxhie.com,AdBlock -- DOMAIN-SUFFIX,e.lancedu.com,AdBlock -- DOMAIN-SUFFIX,e.lfdydk.com,AdBlock -- DOMAIN-SUFFIX,e.lovezhishou.com,AdBlock -- DOMAIN-SUFFIX,e.lyjz001.com,AdBlock -- DOMAIN-SUFFIX,e.lzytt.com,AdBlock -- DOMAIN-SUFFIX,e.md0z4dh.com,AdBlock -- DOMAIN-SUFFIX,e.meizhuanghe.com,AdBlock -- DOMAIN-SUFFIX,e.miaoxinqipei.com,AdBlock -- DOMAIN-SUFFIX,e.mightiger.net,AdBlock -- DOMAIN-SUFFIX,e.miiuv.com,AdBlock -- DOMAIN-SUFFIX,e.mmkvi.com,AdBlock -- DOMAIN-SUFFIX,e.mozist.com,AdBlock -- DOMAIN-SUFFIX,e.mqgpo.com,AdBlock -- DOMAIN-SUFFIX,e.mrsasharingspace.com,AdBlock -- DOMAIN-SUFFIX,e.mrtuo.com,AdBlock -- DOMAIN-SUFFIX,e.mushizhubao.com,AdBlock -- DOMAIN-SUFFIX,e.nduop.com,AdBlock -- DOMAIN-SUFFIX,e.neijh.com,AdBlock -- DOMAIN-SUFFIX,e.nejup.com,AdBlock -- DOMAIN-SUFFIX,e.nernv.com,AdBlock -- DOMAIN-SUFFIX,e.nexac.com,AdBlock -- DOMAIN-SUFFIX,e.nfkos.com,AdBlock -- DOMAIN-SUFFIX,e.nmtouzi.com,AdBlock -- DOMAIN-SUFFIX,e.nnfiy.com,AdBlock -- DOMAIN-SUFFIX,e.nwxzs.com,AdBlock -- DOMAIN-SUFFIX,e.nxypz.com,AdBlock -- DOMAIN-SUFFIX,e.oesnw.com,AdBlock -- DOMAIN-SUFFIX,e.okfhn.com,AdBlock -- DOMAIN-SUFFIX,e.opqsr.com,AdBlock -- DOMAIN-SUFFIX,e.oyrim.com,AdBlock -- DOMAIN-SUFFIX,e.pbino.com,AdBlock -- DOMAIN-SUFFIX,e.picbr.com,AdBlock -- DOMAIN-SUFFIX,e.plerv.com,AdBlock -- DOMAIN-SUFFIX,e.pomkl.com,AdBlock -- DOMAIN-SUFFIX,e.poonscn.com,AdBlock -- DOMAIN-SUFFIX,e.pubbirdf.com,AdBlock -- DOMAIN-SUFFIX,e.puooi.com,AdBlock -- DOMAIN-SUFFIX,e.pwjhg.com,AdBlock -- DOMAIN-SUFFIX,e.pyerc.com,AdBlock -- DOMAIN-SUFFIX,e.qiaoyuwang.com,AdBlock -- DOMAIN-SUFFIX,e.qingzhencai.net,AdBlock -- DOMAIN-SUFFIX,e.qiyunmuye.com,AdBlock -- DOMAIN-SUFFIX,e.qsove.com,AdBlock -- DOMAIN-SUFFIX,e.qvxyz.com,AdBlock -- DOMAIN-SUFFIX,e.qxfly.com,AdBlock -- DOMAIN-SUFFIX,e.resmv.com,AdBlock -- DOMAIN-SUFFIX,e.ricpt.com,AdBlock -- DOMAIN-SUFFIX,e.rmwdn.com,AdBlock -- DOMAIN-SUFFIX,e.romgv.com,AdBlock -- DOMAIN-SUFFIX,e.sanitwealth.com,AdBlock -- DOMAIN-SUFFIX,e.shenyunkeji.com,AdBlock -- DOMAIN-SUFFIX,e.sjuqc.com,AdBlock -- DOMAIN-SUFFIX,e.sosjyx.com,AdBlock -- DOMAIN-SUFFIX,e.srrux.com,AdBlock -- DOMAIN-SUFFIX,e.suehy.com,AdBlock -- DOMAIN-SUFFIX,e.szqifu.com,AdBlock -- DOMAIN-SUFFIX,e.t71q.com,AdBlock -- DOMAIN-SUFFIX,e.tdtsd.com,AdBlock -- DOMAIN-SUFFIX,e.tiantianedu.net,AdBlock -- DOMAIN-SUFFIX,e.tick0.com,AdBlock -- DOMAIN-SUFFIX,e.tiojk.com,AdBlock -- DOMAIN-SUFFIX,e.tuoaa.com,AdBlock -- DOMAIN-SUFFIX,e.ueram.com,AdBlock -- DOMAIN-SUFFIX,e.uissm.com,AdBlock -- DOMAIN-SUFFIX,e.v02u9.cn,AdBlock -- DOMAIN-SUFFIX,e.vaxyz.com,AdBlock -- DOMAIN-SUFFIX,e.vbaiu.com,AdBlock -- DOMAIN-SUFFIX,e.vouky.com,AdBlock -- DOMAIN-SUFFIX,e.vvocm.com,AdBlock -- DOMAIN-SUFFIX,e.wcjup.com,AdBlock -- DOMAIN-SUFFIX,e.weixingshexiangji.net,AdBlock -- DOMAIN-SUFFIX,e.wikigifth.com,AdBlock -- DOMAIN-SUFFIX,e.wjhehaofc.com,AdBlock -- DOMAIN-SUFFIX,e.wkjhd.com,AdBlock -- DOMAIN-SUFFIX,e.wnxcg.com,AdBlock -- DOMAIN-SUFFIX,e.wonwg.com,AdBlock -- DOMAIN-SUFFIX,e.wsxxu.com,AdBlock -- DOMAIN-SUFFIX,e.x.cn.xtgreat.com,AdBlock -- DOMAIN-SUFFIX,e.xdkje.com,AdBlock -- DOMAIN-SUFFIX,e.xeihy.com,AdBlock -- DOMAIN-SUFFIX,e.xetvb.com,AdBlock -- DOMAIN-SUFFIX,e.xiangchim0.com,AdBlock -- DOMAIN-SUFFIX,e.xikdn.com,AdBlock -- DOMAIN-SUFFIX,e.xkqpco.com.com,AdBlock -- DOMAIN-SUFFIX,e.xlsschina15.net,AdBlock -- DOMAIN-SUFFIX,e.xmgysweb.com,AdBlock -- DOMAIN-SUFFIX,e.xpjis.com,AdBlock -- DOMAIN-SUFFIX,e.xxkio.com,AdBlock -- DOMAIN-SUFFIX,e.yageben.com,AdBlock -- DOMAIN-SUFFIX,e.yangjingbang.net,AdBlock -- DOMAIN-SUFFIX,e.yerpt.com,AdBlock -- DOMAIN-SUFFIX,e.yicang8.com,AdBlock -- DOMAIN-SUFFIX,e.yidulive.net,AdBlock -- DOMAIN-SUFFIX,e.yingchengtou.com,AdBlock -- DOMAIN-SUFFIX,e.ynnke.com,AdBlock -- DOMAIN-SUFFIX,e.yoiur.com,AdBlock -- DOMAIN-SUFFIX,e.youweiprint.com,AdBlock -- DOMAIN-SUFFIX,e.ysdangan.com,AdBlock -- DOMAIN-SUFFIX,e.ysdhe.com,AdBlock -- DOMAIN-SUFFIX,e.yuxyz.com,AdBlock -- DOMAIN-SUFFIX,e.ywbwsm.com,AdBlock -- DOMAIN-SUFFIX,e.yycqc.com,AdBlock -- DOMAIN-SUFFIX,e.yyeks.com,AdBlock -- DOMAIN-SUFFIX,e.yyjhf.com,AdBlock -- DOMAIN-SUFFIX,e.zabxb.com,AdBlock -- DOMAIN-SUFFIX,e.zhuyuanp.club,AdBlock -- DOMAIN-SUFFIX,e.zhuyuanp.shop,AdBlock -- DOMAIN-SUFFIX,e.zhuyuanp.top,AdBlock -- DOMAIN-SUFFIX,e.zjkdaikuan.com,AdBlock -- DOMAIN-SUFFIX,e.zkwsdf.com,AdBlock -- DOMAIN-SUFFIX,e.zunss.com,AdBlock -- DOMAIN-SUFFIX,e7001.com,AdBlock -- DOMAIN-SUFFIX,e7002.com,AdBlock -- DOMAIN-SUFFIX,e7009.com,AdBlock -- DOMAIN-SUFFIX,e701.net,AdBlock -- DOMAIN-SUFFIX,e70123.com,AdBlock -- DOMAIN-SUFFIX,e7015.com,AdBlock -- DOMAIN-SUFFIX,e704.net,AdBlock -- DOMAIN-SUFFIX,e705.net,AdBlock -- DOMAIN-SUFFIX,e706.net,AdBlock -- DOMAIN-SUFFIX,e708.net,AdBlock -- DOMAIN-SUFFIX,e719.net,AdBlock -- DOMAIN-SUFFIX,e9377f.com,AdBlock -- DOMAIN-SUFFIX,eacash.streamplay.to,AdBlock -- DOMAIN-SUFFIX,eap.big5.enorth.com.cn,AdBlock -- DOMAIN-SUFFIX,eap.enorth.com.cn,AdBlock -- DOMAIN-SUFFIX,easyrecoverychina.com,AdBlock -- DOMAIN-SUFFIX,ebook.res.meizu.com,AdBlock -- DOMAIN-SUFFIX,ebp.renren.com,AdBlock -- DOMAIN-SUFFIX,ec.kejet.net,AdBlock -- DOMAIN-SUFFIX,eclick.120ask.com,AdBlock -- DOMAIN-SUFFIX,eclick.360doc.com,AdBlock -- DOMAIN-SUFFIX,eclick.baidu.com,AdBlock -- DOMAIN-SUFFIX,eclkspbn.com,AdBlock -- DOMAIN-SUFFIX,ecma.bdimg.com,AdBlock -- DOMAIN-SUFFIX,ecmb.bdimg.com,AdBlock -- DOMAIN-SUFFIX,ecmc.bdimg.com,AdBlock -- DOMAIN-SUFFIX,ecuc123.net,AdBlock -- DOMAIN-SUFFIX,ed.aijielang.cn,AdBlock -- DOMAIN-SUFFIX,ed.sczhilong.cn,AdBlock -- DOMAIN-SUFFIX,eddong.com,AdBlock -- DOMAIN-SUFFIX,edesf.xyzxmark.cn,AdBlock -- DOMAIN-SUFFIX,edge.quantserve.com,AdBlock -- DOMAIN-SUFFIX,edge.sharethis.com,AdBlock -- DOMAIN-SUFFIX,edge.yunjiasu.com,AdBlock -- DOMAIN-SUFFIX,edigitalsurvey.com,AdBlock -- DOMAIN-SUFFIX,ediuschina.com,AdBlock -- DOMAIN-SUFFIX,edncui.net,AdBlock -- DOMAIN-SUFFIX,eduancm.com,AdBlock -- DOMAIN-SUFFIX,eduzzjy.com,AdBlock -- DOMAIN-SUFFIX,ee4kdushuba.com,AdBlock -- DOMAIN-SUFFIX,eee.eh39.co,AdBlock -- DOMAIN-SUFFIX,eee.kj78.org,AdBlock -- DOMAIN-SUFFIX,eee.ttyy888.co,AdBlock -- DOMAIN-SUFFIX,eeee500.com,AdBlock -- DOMAIN-SUFFIX,eezdx.erc.18183.com,AdBlock -- DOMAIN-SUFFIX,eff.inte.sogou.com,AdBlock -- DOMAIN-SUFFIX,effectivemeasure.com,AdBlock -- DOMAIN-SUFFIX,effectivemeasure.net,AdBlock -- DOMAIN-SUFFIX,ehd.baike.com,AdBlock -- DOMAIN-SUFFIX,ehxyz.com,AdBlock -- DOMAIN-SUFFIX,ein.51yingfa.com,AdBlock -- DOMAIN-SUFFIX,eiv.baidu.com,AdBlock -- DOMAIN-SUFFIX,ejzr.golden1.sogou.com,AdBlock -- DOMAIN-SUFFIX,ekeide.com,AdBlock -- DOMAIN-SUFFIX,eland.doublemax.net,AdBlock -- DOMAIN-SUFFIX,em.baidu.com,AdBlock -- DOMAIN-SUFFIX,emarbox.com,AdBlock -- DOMAIN-SUFFIX,emss.zjhim.com,AdBlock -- DOMAIN-SUFFIX,en.shenyun.com,AdBlock -- DOMAIN-SUFFIX,en.shenyun.org,AdBlock -- DOMAIN-SUFFIX,engine.lvehaisen.com,AdBlock -- DOMAIN-SUFFIX,engine.tuia.cn,AdBlock -- DOMAIN-SUFFIX,ent1.12584.cn,AdBlock -- DOMAIN-SUFFIX,entry.baidu.com,AdBlock -- DOMAIN-SUFFIX,e-p4p.163.com,AdBlock -- DOMAIN-SUFFIX,epernn.cn,AdBlock -- DOMAIN-SUFFIX,epochtimes.org,AdBlock -- DOMAIN-SUFFIX,epochweekly.com,AdBlock -- DOMAIN-SUFFIX,epowernetworktrackerimages.s3.amazonaws.com,AdBlock -- DOMAIN-SUFFIX,er.dlhygj.com,AdBlock -- DOMAIN-SUFFIX,erdoscs.com,AdBlock -- DOMAIN-SUFFIX,erebor.douban.com,AdBlock -- DOMAIN-SUFFIX,ereg.adobe.com,AdBlock -- DOMAIN-SUFFIX,ereg.wip3.adobe.com,AdBlock -- DOMAIN-SUFFIX,ers.baidu.com,AdBlock -- DOMAIN-SUFFIX,erwqw.zh1155.com,AdBlock -- DOMAIN-SUFFIX,erwr.ydjskvpd.com,AdBlock -- DOMAIN-SUFFIX,espn-ak.starwave.com,AdBlock -- DOMAIN-SUFFIX,esptj.com,AdBlock -- DOMAIN-SUFFIX,esrpxyahzna.bid,AdBlock -- DOMAIN-SUFFIX,eteun.cn,AdBlock -- DOMAIN-SUFFIX,ethod.gzgmjcx.com,AdBlock -- DOMAIN-SUFFIX,etl.xlmc.sandai.net,AdBlock -- DOMAIN-SUFFIX,etl.xlmc.sec.miui.com,AdBlock -- DOMAIN-SUFFIX,eu-gmtdmp.gd1.mookie1.com,AdBlock -- DOMAIN-SUFFIX,eum-appdynamics.com,AdBlock -- DOMAIN-SUFFIX,eus.rubiconproject.com,AdBlock -- DOMAIN-SUFFIX,euwidget.imshopping.com,AdBlock -- DOMAIN-SUFFIX,eva.ucas.com,AdBlock -- DOMAIN-SUFFIX,evefashion.cn,AdBlock -- DOMAIN-SUFFIX,event.ksosoft.com,AdBlock -- DOMAIN-SUFFIX,eventlog.hd.baofeng.com,AdBlock -- DOMAIN-SUFFIX,events.kalooga.com,AdBlock -- DOMAIN-SUFFIX,events.pingan.com,AdBlock -- DOMAIN-SUFFIX,events-api.outfit7.net,AdBlock -- DOMAIN-SUFFIX,eviltracker.net,AdBlock -- DOMAIN-SUFFIX,ew16d.package12.com,AdBlock -- DOMAIN-SUFFIX,ex.mobmore.com,AdBlock -- DOMAIN-SUFFIX,ex.puata.info,AdBlock -- DOMAIN-SUFFIX,exdynsrv.com,AdBlock -- DOMAIN-SUFFIX,exit.macandbumble.com,AdBlock -- DOMAIN-SUFFIX,exoclick.com,AdBlock -- DOMAIN-SUFFIX,exp.17wo.cn,AdBlock -- DOMAIN-SUFFIX,exp.3g.ifeng.com,AdBlock -- DOMAIN-SUFFIX,exp.qumi.com,AdBlock -- DOMAIN-SUFFIX,expo123.net,AdBlock -- DOMAIN-SUFFIX,ext.theglobalweb.com,AdBlock -- DOMAIN-SUFFIX,extmoney.i1608.com,AdBlock -- DOMAIN-SUFFIX,extstat.com,AdBlock -- DOMAIN-SUFFIX,eyd77s.com,AdBlock -- DOMAIN-SUFFIX,eye.swfchan.com,AdBlock -- DOMAIN-SUFFIX,eyouv.cn,AdBlock -- DOMAIN-SUFFIX,ez33.org.cn,AdBlock -- DOMAIN-SUFFIX,ezine.oupeng.com,AdBlock -- DOMAIN-SUFFIX,ezucods.cn,AdBlock -- DOMAIN-SUFFIX,f.520tingshu.com,AdBlock -- DOMAIN-SUFFIX,f.doodlemobile.com,AdBlock -- DOMAIN-SUFFIX,f.f70123.com,AdBlock -- DOMAIN-SUFFIX,f.fj95560.com,AdBlock -- DOMAIN-SUFFIX,f.haoxinjaju.com,AdBlock -- DOMAIN-SUFFIX,f.hongm.com,AdBlock -- DOMAIN-SUFFIX,f.qcwzx.net.cn,AdBlock -- DOMAIN-SUFFIX,f.yijikm.com,AdBlock -- DOMAIN-SUFFIX,f.yueyetiyu.com,AdBlock -- DOMAIN-SUFFIX,f1.06ps.com,AdBlock -- DOMAIN-SUFFIX,f1.bizhiku.net,AdBlock -- DOMAIN-SUFFIX,f1.luoshenbest.cn,AdBlock -- DOMAIN-SUFFIX,f1.meishichina.com,AdBlock -- DOMAIN-SUFFIX,f1.p0y.cn,AdBlock -- DOMAIN-SUFFIX,f1.pig66.com,AdBlock -- DOMAIN-SUFFIX,f1190.com,AdBlock -- DOMAIN-SUFFIX,f1c.i.biquge5200.com,AdBlock -- DOMAIN-SUFFIX,f2.p0y.cn,AdBlock -- DOMAIN-SUFFIX,f2zd.com,AdBlock -- DOMAIN-SUFFIX,f3.mi-stat.gslb.mi-idc.com,AdBlock -- DOMAIN-SUFFIX,f3.vedeh.com,AdBlock -- DOMAIN-SUFFIX,f5.dfcwg.com,AdBlock -- DOMAIN-SUFFIX,f5.mtqys.com,AdBlock -- DOMAIN-SUFFIX,f56g.me,AdBlock -- DOMAIN-SUFFIX,f6ce.com,AdBlock -- DOMAIN-SUFFIX,f70123.com,AdBlock -- DOMAIN-SUFFIX,f8272.com,AdBlock -- DOMAIN-SUFFIX,fa.163.com,AdBlock -- DOMAIN-SUFFIX,facebookma.cn,AdBlock -- DOMAIN-SUFFIX,faggrim.com,AdBlock -- DOMAIN-SUFFIX,fair.sogou.com,AdBlock -- DOMAIN-SUFFIX,falundata.com,AdBlock -- DOMAIN-SUFFIX,falundata.org,AdBlock -- DOMAIN-SUFFIX,fan.liuxiaoer.com,AdBlock -- DOMAIN-SUFFIX,fan.twitch.tv,AdBlock -- DOMAIN-SUFFIX,fancyapi.com,AdBlock -- DOMAIN-SUFFIX,fanqianbb.com,AdBlock -- DOMAIN-SUFFIX,fans.bestvogue.com,AdBlock -- DOMAIN-SUFFIX,fansi365.com,AdBlock -- DOMAIN-SUFFIX,fanxing.kugou.com,AdBlock -- DOMAIN-SUFFIX,fan-yong.com,AdBlock -- DOMAIN-SUFFIX,farm-cn.plista.com,AdBlock -- DOMAIN-SUFFIX,fastable.com,AdBlock -- DOMAIN-SUFFIX,fastapi.net,AdBlock -- DOMAIN-SUFFIX,fastcache.com.cn,AdBlock -- DOMAIN-SUFFIX,fast-cdn.dianjoy.com,AdBlock -- DOMAIN-SUFFIX,fastclick.com,AdBlock -- DOMAIN-SUFFIX,fastclick.net,AdBlock -- DOMAIN-SUFFIX,fastly.bench.cedexis.com,AdBlock -- DOMAIN-SUFFIX,fastpopunder.com,AdBlock -- DOMAIN-SUFFIX,fathionmall.com,AdBlock -- DOMAIN-SUFFIX,fav.simba.taobao.com,AdBlock -- DOMAIN-SUFFIX,fb.xk.miui.com,AdBlock -- DOMAIN-SUFFIX,fbc.ffychb.com,AdBlock -- DOMAIN-SUFFIX,fccxgjg.com,AdBlock -- DOMAIN-SUFFIX,fc-feed.cdn.bcebos.com,AdBlock -- DOMAIN-SUFFIX,fclick.baidu.com,AdBlock -- DOMAIN-SUFFIX,fcsass.org.cn,AdBlock -- DOMAIN-SUFFIX,fd.anzhi.com,AdBlock -- DOMAIN-SUFFIX,fd.qchannel03.cn,AdBlock -- DOMAIN-SUFFIX,fd7c.com,AdBlock -- DOMAIN-SUFFIX,fds.api.moji.com,AdBlock -- DOMAIN-SUFFIX,fe.lea.lycos.co.uk,AdBlock -- DOMAIN-SUFFIX,fe1-au.imrworldwide.com,AdBlock -- DOMAIN-SUFFIX,fe2-au.imrworldwide.com,AdBlock -- DOMAIN-SUFFIX,fe3-au.imrworldwide.com,AdBlock -- DOMAIN-SUFFIX,fe-au.imrworldwide.com,AdBlock -- DOMAIN-SUFFIX,feed.baidu.com,AdBlock -- DOMAIN-SUFFIX,feed.theta.sogou.com,AdBlock -- DOMAIN-SUFFIX,feedback.whalecloud.com,AdBlock -- DOMAIN-SUFFIX,feeds.logicbuy.com,AdBlock -- DOMAIN-SUFFIX,feeds.videosz.com,AdBlock -- DOMAIN-SUFFIX,fei232.bhzje7ua9.com,AdBlock -- DOMAIN-SUFFIX,feidalu.com,AdBlock -- DOMAIN-SUFFIX,feifish66.com,AdBlock -- DOMAIN-SUFFIX,feih.com.cn,AdBlock -- DOMAIN-SUFFIX,feitianma.com,AdBlock -- DOMAIN-SUFFIX,feixin2.com,AdBlock -- DOMAIN-SUFFIX,fembsflungod.com,AdBlock -- DOMAIN-SUFFIX,fen.dkdlsj.com,AdBlock -- DOMAIN-SUFFIX,fengbuy.com,AdBlock -- DOMAIN-SUFFIX,fenggejiaju.com,AdBlock -- DOMAIN-SUFFIX,fenqihome.com,AdBlock -- DOMAIN-SUFFIX,fenvm.com,AdBlock -- DOMAIN-SUFFIX,fexclick.baidu.com,AdBlock -- DOMAIN-SUFFIX,ff.nsg.org.ua,AdBlock -- DOMAIN-SUFFIX,ffb.feihuo.com,AdBlock -- DOMAIN-SUFFIX,fff.yuyouge.com,AdBlock -- DOMAIN-SUFFIX,ffhtek.com,AdBlock -- DOMAIN-SUFFIX,fflsn.com,AdBlock -- DOMAIN-SUFFIX,ffre.ffrepair.com,AdBlock -- DOMAIN-SUFFIX,ffychb.com,AdBlock -- DOMAIN-SUFFIX,fge9vbrzwt.bid,AdBlock -- DOMAIN-SUFFIX,fghm.ga25.com,AdBlock -- DOMAIN-SUFFIX,fghmc.ga25.com,AdBlock -- DOMAIN-SUFFIX,fghmimg.ga25.com,AdBlock -- DOMAIN-SUFFIX,fgmtv.org,AdBlock -- DOMAIN-SUFFIX,file.bmob.cn,AdBlock -- DOMAIN-SUFFIX,files2.sogou.com,AdBlock -- DOMAIN-SUFFIX,fimserve.ign.com,AdBlock -- DOMAIN-SUFFIX,findicons.com,AdBlock -- DOMAIN-SUFFIX,finding.hardwareheaven.com,AdBlock -- DOMAIN-SUFFIX,findnsave.idahostatesman.com,AdBlock -- DOMAIN-SUFFIX,finead.cn,AdBlock -- DOMAIN-SUFFIX,fips.uimserv.net,AdBlock -- DOMAIN-SUFFIX,firefang.cn,AdBlock -- DOMAIN-SUFFIX,fjkst.com,AdBlock -- DOMAIN-SUFFIX,fjlqqc.com,AdBlock -- DOMAIN-SUFFIX,fjmeyer.com,AdBlock -- DOMAIN-SUFFIX,fkku194.com,AdBlock -- DOMAIN-SUFFIX,flash.2144.com,AdBlock -- DOMAIN-SUFFIX,flashtalking.com,AdBlock -- DOMAIN-SUFFIX,flowcodeapp.com,AdBlock -- DOMAIN-SUFFIX,flstudiochina.com,AdBlock -- DOMAIN-SUFFIX,flurry.cachefly.net,AdBlock -- DOMAIN-SUFFIX,flurry.com,AdBlock -- DOMAIN-SUFFIX,flux.faloo.com,AdBlock -- DOMAIN-SUFFIX,flv.dotmore.com.tw,AdBlock -- DOMAIN-SUFFIX,flv.ytshuirun.com,AdBlock -- DOMAIN-SUFFIX,flwja.com,AdBlock -- DOMAIN-SUFFIX,fm.p0y.cn,AdBlock -- DOMAIN-SUFFIX,fmgoal.com,AdBlock -- DOMAIN-SUFFIX,fnkjj.com,AdBlock -- DOMAIN-SUFFIX,focuscat.com,AdBlock -- DOMAIN-SUFFIX,focusprolight.com,AdBlock -- DOMAIN-SUFFIX,formysql.com,AdBlock -- DOMAIN-SUFFIX,fota4.adups.cn,AdBlock -- DOMAIN-SUFFIX,fotao9.com,AdBlock -- DOMAIN-SUFFIX,founseezb.cn,AdBlock -- DOMAIN-SUFFIX,fozhu.rrsdl.com,AdBlock -- DOMAIN-SUFFIX,fp.fraudmetrix.cn,AdBlock -- DOMAIN-SUFFIX,fpb.51edu.com,AdBlock -- DOMAIN-SUFFIX,fpb.kuhou.com,AdBlock -- DOMAIN-SUFFIX,fpb.mn586.com,AdBlock -- DOMAIN-SUFFIX,fpbbdx1.51240.com,AdBlock -- DOMAIN-SUFFIX,fpbjiansuo.mn586.com,AdBlock -- DOMAIN-SUFFIX,fpdownload.macromedia.com,AdBlock -- DOMAIN-SUFFIX,fptest.fraudmetrix.cn,AdBlock -- DOMAIN-SUFFIX,fqtra.com,AdBlock -- DOMAIN-SUFFIX,frame.enet.com.cn,AdBlock -- DOMAIN-SUFFIX,fraudmetrix.cn,AdBlock -- DOMAIN-SUFFIX,frdhq.cn,AdBlock -- DOMAIN-SUFFIX,free.aol.com,AdBlock -- DOMAIN-SUFFIX,freecodecs.us.intellitxt.com,AdBlock -- DOMAIN-SUFFIX,freedrive.cn,AdBlock -- DOMAIN-SUFFIX,freexxxvideoclip.aebn.net,AdBlock -- DOMAIN-SUFFIX,fs.uc.nearme.com.cn,AdBlock -- DOMAIN-SUFFIX,fsjsp.com,AdBlock -- DOMAIN-SUFFIX,fsr.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,fst360.com,AdBlock -- DOMAIN-SUFFIX,fs-uc-nearme-com-cn.oss-cn-hangzhou.aliyuncs.com,AdBlock -- DOMAIN-SUFFIX,fsyzcs.com,AdBlock -- DOMAIN-SUFFIX,ft.moad.cn,AdBlock -- DOMAIN-SUFFIX,ft.pnop.com,AdBlock -- DOMAIN-SUFFIX,fthcz.com,AdBlock -- DOMAIN-SUFFIX,fu68.com,AdBlock -- DOMAIN-SUFFIX,fucnm.com,AdBlock -- DOMAIN-SUFFIX,fujianryt.com,AdBlock -- DOMAIN-SUFFIX,fun.ynet.com,AdBlock -- DOMAIN-SUFFIX,funshion.net.cn,AdBlock -- DOMAIN-SUFFIX,fus.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,fusion.qq.com,AdBlock -- DOMAIN-SUFFIX,fv99.com,AdBlock -- DOMAIN-SUFFIX,fw.adsafeprotected.com,AdBlock -- DOMAIN-SUFFIX,fw.vpon.com,AdBlock -- DOMAIN-SUFFIX,fwmrm.net,AdBlock -- DOMAIN-SUFFIX,fwt0.com,AdBlock -- DOMAIN-SUFFIX,fxc.aiquxs.com,AdBlock -- DOMAIN-SUFFIX,fxmacd.com,AdBlock -- DOMAIN-SUFFIX,fxtducb.cn,AdBlock -- DOMAIN-SUFFIX,fxxgw.com,AdBlock -- DOMAIN-SUFFIX,fych.uranus.sogou.com,AdBlock -- DOMAIN-SUFFIX,fydgold132.com,AdBlock -- DOMAIN-SUFFIX,fytza.cn,AdBlock -- DOMAIN-SUFFIX,fz863.com,AdBlock -- DOMAIN-SUFFIX,fzz.cloud.1234507.com,AdBlock -- DOMAIN-SUFFIX,fzz.shgqjr.com,AdBlock -- DOMAIN-SUFFIX,g.163.com,AdBlock -- DOMAIN-SUFFIX,g.51network.com,AdBlock -- DOMAIN-SUFFIX,g.6sfg.com,AdBlock -- DOMAIN-SUFFIX,g.ad8.cc,AdBlock -- DOMAIN-SUFFIX,g.aligames.com,AdBlock -- DOMAIN-SUFFIX,g.baidu.com,AdBlock -- DOMAIN-SUFFIX,g.bitauto.com,AdBlock -- DOMAIN-SUFFIX,g.brothersoft.com,AdBlock -- DOMAIN-SUFFIX,g.chuiyao.com,AdBlock -- DOMAIN-SUFFIX,g.d.yoyi.tv,AdBlock -- DOMAIN-SUFFIX,g.daman.cc,AdBlock -- DOMAIN-SUFFIX,g.f11w.com,AdBlock -- DOMAIN-SUFFIX,g.f5gh.com,AdBlock -- DOMAIN-SUFFIX,g.gridsum.com,AdBlock -- DOMAIN-SUFFIX,g.haluoha.com,AdBlock -- DOMAIN-SUFFIX,g.hsw.cn,AdBlock -- DOMAIN-SUFFIX,g.koowo.com,AdBlock -- DOMAIN-SUFFIX,g.mnw.cn,AdBlock -- DOMAIN-SUFFIX,g.ousns.net,AdBlock -- DOMAIN-SUFFIX,g.rs.yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,g.s8dj.com,AdBlock -- DOMAIN-SUFFIX,g.szdn1ms.com,AdBlock -- DOMAIN-SUFFIX,g.usingde.com,AdBlock -- DOMAIN-SUFFIX,g.w5b454.com,AdBlock -- DOMAIN-SUFFIX,g.wan.2345.com,AdBlock -- DOMAIN-SUFFIX,g.wan.douyu.com,AdBlock -- DOMAIN-SUFFIX,g.wrating.com,AdBlock -- DOMAIN-SUFFIX,g.x.cn.xtgreat.com,AdBlock -- DOMAIN-SUFFIX,g.x.evolife.cn,AdBlock -- DOMAIN-SUFFIX,g.yccdn.com,AdBlock -- DOMAIN-SUFFIX,g.zx-jsp.com,AdBlock -- DOMAIN-SUFFIX,g1.0573ren.com,AdBlock -- DOMAIN-SUFFIX,g1.08160.cn,AdBlock -- DOMAIN-SUFFIX,g1.163.com,AdBlock -- DOMAIN-SUFFIX,g1.tagtic.cn,AdBlock -- DOMAIN-SUFFIX,g1.taijuba.com,AdBlock -- DOMAIN-SUFFIX,g1c5.com,AdBlock -- DOMAIN-SUFFIX,g1f5.com,AdBlock -- DOMAIN-SUFFIX,g2.ousns.net,AdBlock -- DOMAIN-SUFFIX,g3.iqilu.com,AdBlock -- DOMAIN-SUFFIX,g4.iqilu.com,AdBlock -- DOMAIN-SUFFIX,g9s.sgzs999.com,AdBlock -- DOMAIN-SUFFIX,gad.kugou.com,AdBlock -- DOMAIN-SUFFIX,gadwhy.com,AdBlock -- DOMAIN-SUFFIX,gafxa.code.mytanwan.com,AdBlock -- DOMAIN-SUFFIX,galaxy.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,game.9xzj.com,AdBlock -- DOMAIN-SUFFIX,game.baichuanhd.cn,AdBlock -- DOMAIN-SUFFIX,game.html5.qq.com,AdBlock -- DOMAIN-SUFFIX,game.kugou.com,AdBlock -- DOMAIN-SUFFIX,game.kuwo.cn,AdBlock -- DOMAIN-SUFFIX,game.qidian.com,AdBlock -- DOMAIN-SUFFIX,game.res.meizu.com,AdBlock -- DOMAIN-SUFFIX,game.rising.cn,AdBlock -- DOMAIN-SUFFIX,game.subway.uu.cc,AdBlock -- DOMAIN-SUFFIX,game.weibo.cn,AdBlock -- DOMAIN-SUFFIX,game.weibo.com,AdBlock -- DOMAIN-SUFFIX,gamead.swjoy.com,AdBlock -- DOMAIN-SUFFIX,gameads.digyourowngrave.com,AdBlock -- DOMAIN-SUFFIX,gamebox.kugou.com,AdBlock -- DOMAIN-SUFFIX,game-res.meizu.com,AdBlock -- DOMAIN-SUFFIX,ganjituiguang.ganji.com,AdBlock -- DOMAIN-SUFFIX,gao.ynet.com,AdBlock -- DOMAIN-SUFFIX,gas.data.pplive.com,AdBlock -- DOMAIN-SUFFIX,gateway.fortunelounge.com,AdBlock -- DOMAIN-SUFFIX,gateways.s3.amazonaws.com,AdBlock -- DOMAIN-SUFFIX,gb.corp.163.com,AdBlock -- DOMAIN-SUFFIX,gc.keefung-zs.com,AdBlock -- DOMAIN-SUFFIX,gcapi.sy.kugou.com,AdBlock -- DOMAIN-SUFFIX,gclick.cn,AdBlock -- DOMAIN-SUFFIX,gcs1.cn,AdBlock -- DOMAIN-SUFFIX,gd.cnhange.cn,AdBlock -- DOMAIN-SUFFIX,gd.jqgc.com,AdBlock -- DOMAIN-SUFFIX,gd.vodtw.com,AdBlock -- DOMAIN-SUFFIX,gdbly.com,AdBlock -- DOMAIN-SUFFIX,gdgy56.com,AdBlock -- DOMAIN-SUFFIX,gdskywings.com,AdBlock -- DOMAIN-SUFFIX,gdsqwy.org,AdBlock -- DOMAIN-SUFFIX,gdyn.cnn.com,AdBlock -- DOMAIN-SUFFIX,ge95.com,AdBlock -- DOMAIN-SUFFIX,geili.co,AdBlock -- DOMAIN-SUFFIX,geiyujieda.com,AdBlock -- DOMAIN-SUFFIX,gemini.yahoo.com,AdBlock -- DOMAIN-SUFFIX,gen.alicdn.com,AdBlock -- DOMAIN-SUFFIX,gentags.com,AdBlock -- DOMAIN-SUFFIX,geo.cliphunter.com,AdBlock -- DOMAIN-SUFFIX,geo.connexionsecure.com,AdBlock -- DOMAIN-SUFFIX,geo.frtya.com,AdBlock -- DOMAIN-SUFFIX,geo.frtyd.com,AdBlock -- DOMAIN-SUFFIX,geo.gridsumdissector.com,AdBlock -- DOMAIN-SUFFIX,geo.moatads.com,AdBlock -- DOMAIN-SUFFIX,geo.yahoo.com,AdBlock -- DOMAIN-SUFFIX,geo2.adobe.com,AdBlock -- DOMAIN-SUFFIX,geobanner.alt.com,AdBlock -- DOMAIN-SUFFIX,geobanner.friendfinder.com,AdBlock -- DOMAIN-SUFFIX,geobanner.passion.com,AdBlock -- DOMAIN-SUFFIX,geobanner.socialflirt.com,AdBlock -- DOMAIN-SUFFIX,geoshopping.nzherald.co.nz,AdBlock -- DOMAIN-SUFFIX,geryi.com,AdBlock -- DOMAIN-SUFFIX,get.thefile.me,AdBlock -- DOMAIN-SUFFIX,get3.adobe.com,AdBlock -- DOMAIN-SUFFIX,getnormalizedurl.com,AdBlock -- DOMAIN-SUFFIX,gewuwen.com,AdBlock -- DOMAIN-SUFFIX,gf108.com,AdBlock -- DOMAIN-SUFFIX,gf1352.com,AdBlock -- DOMAIN-SUFFIX,gfd80.com,AdBlock -- DOMAIN-SUFFIX,gfh.ahfzly.com,AdBlock -- DOMAIN-SUFFIX,gfx.infomine.com,AdBlock -- DOMAIN-SUFFIX,gg.0598yu.com,AdBlock -- DOMAIN-SUFFIX,gg.5173.com,AdBlock -- DOMAIN-SUFFIX,gg.51cto.com,AdBlock -- DOMAIN-SUFFIX,gg.amblrgg.live,AdBlock -- DOMAIN-SUFFIX,gg.anqu.com,AdBlock -- DOMAIN-SUFFIX,gg.blueidea.com,AdBlock -- DOMAIN-SUFFIX,gg.caixin.com,AdBlock -- DOMAIN-SUFFIX,gg.cs090.com,AdBlock -- DOMAIN-SUFFIX,gg.dsxdn.com,AdBlock -- DOMAIN-SUFFIX,gg.gao7.com,AdBlock -- DOMAIN-SUFFIX,gg.haianw.com,AdBlock -- DOMAIN-SUFFIX,gg.huangye88.com,AdBlock -- DOMAIN-SUFFIX,gg.jkmeishi.com,AdBlock -- DOMAIN-SUFFIX,gg.kugou.com,AdBlock -- DOMAIN-SUFFIX,gg.meitu.com,AdBlock -- DOMAIN-SUFFIX,gg.ptfish.com,AdBlock -- DOMAIN-SUFFIX,gg.sonhoo.com,AdBlock -- DOMAIN-SUFFIX,gg.stargame.com,AdBlock -- DOMAIN-SUFFIX,gg.uuu9.com,AdBlock -- DOMAIN-SUFFIX,gg.vidown.cn,AdBlock -- DOMAIN-SUFFIX,gg.xywy.com,AdBlock -- DOMAIN-SUFFIX,gg.yxdown.com,AdBlock -- DOMAIN-SUFFIX,gg.zhongyao1.com,AdBlock -- DOMAIN-SUFFIX,gg0376.com,AdBlock -- DOMAIN-SUFFIX,gg1.yszyz.com,AdBlock -- DOMAIN-SUFFIX,gg2.51cto.com,AdBlock -- DOMAIN-SUFFIX,gg2.dss9927.com,AdBlock -- DOMAIN-SUFFIX,gg3.51cto.com,AdBlock -- DOMAIN-SUFFIX,gg570.com,AdBlock -- DOMAIN-SUFFIX,gg86.pinggu.org,AdBlock -- DOMAIN-SUFFIX,gg8888.cnfol.com,AdBlock -- DOMAIN-SUFFIX,ggb.douguo.com,AdBlock -- DOMAIN-SUFFIX,ggcode.2345.com,AdBlock -- DOMAIN-SUFFIX,ggdoubi.com,AdBlock -- DOMAIN-SUFFIX,ggg.zj.com,AdBlock -- DOMAIN-SUFFIX,ggle.lywf.me,AdBlock -- DOMAIN-SUFFIX,ggmm777.com,AdBlock -- DOMAIN-SUFFIX,ggmmqq.com,AdBlock -- DOMAIN-SUFFIX,ggr.yxdown.com,AdBlock -- DOMAIN-SUFFIX,ggs.myzaker.com,AdBlock -- DOMAIN-SUFFIX,ggw.gusuwang.com,AdBlock -- DOMAIN-SUFFIX,ggw.watertu.com,AdBlock -- DOMAIN-SUFFIX,ggxt.net,AdBlock -- DOMAIN-SUFFIX,gi.xi.gxabj.com,AdBlock -- DOMAIN-SUFFIX,gif.lu.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,gimg.baidu.com,AdBlock -- DOMAIN-SUFFIX,gimg.bitauto.com,AdBlock -- DOMAIN-SUFFIX,girlcc.cc,AdBlock -- DOMAIN-SUFFIX,gj500.com,AdBlock -- DOMAIN-SUFFIX,gjghy.com,AdBlock -- DOMAIN-SUFFIX,gjreg.code.weddingeeos.com,AdBlock -- DOMAIN-SUFFIX,glasszz.com,AdBlock -- DOMAIN-SUFFIX,gload.adhood.com,AdBlock -- DOMAIN-SUFFIX,global.msads.net,AdBlock -- DOMAIN-SUFFIX,global.ymtracking.com,AdBlock -- DOMAIN-SUFFIX,gm682.com,AdBlock -- DOMAIN-SUFFIX,gma1.com,AdBlock -- DOMAIN-SUFFIX,gmota.g188.net,AdBlock -- DOMAIN-SUFFIX,gmtdmp.mookie1.com,AdBlock -- DOMAIN-SUFFIX,go.gogolm.xyz,AdBlock -- DOMAIN-SUFFIX,go.gotourl.xyz,AdBlock -- DOMAIN-SUFFIX,go.gotourls.bid,AdBlock -- DOMAIN-SUFFIX,go.hangzhou.com.cn,AdBlock -- DOMAIN-SUFFIX,go.onclasrv.com,AdBlock -- DOMAIN-SUFFIX,go.util.zlibs.com,AdBlock -- DOMAIN-SUFFIX,godloveme.cn,AdBlock -- DOMAIN-SUFFIX,gog9.qzdfc.com,AdBlock -- DOMAIN-SUFFIX,go-mpulse.net,AdBlock -- DOMAIN-SUFFIX,good.ta80.com,AdBlock -- DOMAIN-SUFFIX,googlecommerce.com,AdBlock -- DOMAIN-SUFFIX,googlesyndication.com,AdBlock -- DOMAIN-SUFFIX,googletagmanager.com,AdBlock -- DOMAIN-SUFFIX,googletagservices.com,AdBlock -- DOMAIN-SUFFIX,goolpter.com,AdBlock -- DOMAIN-SUFFIX,gopig.io,AdBlock -- DOMAIN-SUFFIX,gorgon.youdao.com,AdBlock -- DOMAIN-SUFFIX,gosquared.com,AdBlock -- DOMAIN-SUFFIX,goto.sogou.com,AdBlock -- DOMAIN-SUFFIX,goto.www.iciba.com,AdBlock -- DOMAIN-SUFFIX,gotourl.xyz,AdBlock -- DOMAIN-SUFFIX,goufanli100.com,AdBlock -- DOMAIN-SUFFIX,gouwubang.com,AdBlock -- DOMAIN-SUFFIX,gouzhibao.cn,AdBlock -- DOMAIN-SUFFIX,govgift.com,AdBlock -- DOMAIN-SUFFIX,govids.net,AdBlock -- DOMAIN-SUFFIX,gp.jstv.com,AdBlock -- DOMAIN-SUFFIX,gpydym.cn,AdBlock -- DOMAIN-SUFFIX,gqswg.com,AdBlock -- DOMAIN-SUFFIX,grand.ele.me,AdBlock -- DOMAIN-SUFFIX,green.erne.co,AdBlock -- DOMAIN-SUFFIX,greenhouseglobal.cn,AdBlock -- DOMAIN-SUFFIX,greenxfs.down.123ch.cn,AdBlock -- DOMAIN-SUFFIX,gridsum.com,AdBlock -- DOMAIN-SUFFIX,gridsumdissector.cn,AdBlock -- DOMAIN-SUFFIX,gridsumdissector.com,AdBlock -- DOMAIN-SUFFIX,groupa.onlylady.com,AdBlock -- DOMAIN-SUFFIX,growingio.com,AdBlock -- DOMAIN-SUFFIX,gs307.com,AdBlock -- DOMAIN-SUFFIX,gso0.com,AdBlock -- DOMAIN-SUFFIX,gstat.bitauto.com,AdBlock -- DOMAIN-SUFFIX,gt.yy.com,AdBlock -- DOMAIN-SUFFIX,gt4ec.net,AdBlock -- DOMAIN-SUFFIX,gtags.net,AdBlock -- DOMAIN-SUFFIX,gtmucs.cn,AdBlock -- DOMAIN-SUFFIX,gu.qlogo.cn,AdBlock -- DOMAIN-SUFFIX,guang.lesports.com,AdBlock -- DOMAIN-SUFFIX,guang.sdsgwy.com,AdBlock -- DOMAIN-SUFFIX,guangzhuiyuan.com,AdBlock -- DOMAIN-SUFFIX,guangzizai.com,AdBlock -- DOMAIN-SUFFIX,guanjia.baidu.com,AdBlock -- DOMAIN-SUFFIX,guduopu.com,AdBlock -- DOMAIN-SUFFIX,guess.h.qhimg.com,AdBlock -- DOMAIN-SUFFIX,guestworld.tripod.lycos.com,AdBlock -- DOMAIN-SUFFIX,gugulonger.cn,AdBlock -- DOMAIN-SUFFIX,guidashu.com,AdBlock -- DOMAIN-SUFFIX,guitarpro.cc,AdBlock -- DOMAIN-SUFFIX,gum.criteo.com,AdBlock -- DOMAIN-SUFFIX,guohead.com,AdBlock -- DOMAIN-SUFFIX,guomob.com,AdBlock -- DOMAIN-SUFFIX,guoshennet.com,AdBlock -- DOMAIN-SUFFIX,gw5.push.mcp.weibo.cn,AdBlock -- DOMAIN-SUFFIX,gw6.push.mcp.weibo.cn,AdBlock -- DOMAIN-SUFFIX,gw630.com,AdBlock -- DOMAIN-SUFFIX,gx38.cn,AdBlock -- DOMAIN-SUFFIX,gxdhgb.com,AdBlock -- DOMAIN-SUFFIX,gxe.husky.sogou.com,AdBlock -- DOMAIN-SUFFIX,gyca9f.dahuangcheng.cn,AdBlock -- DOMAIN-SUFFIX,gydag.com,AdBlock -- DOMAIN-SUFFIX,gyrtg.com,AdBlock -- DOMAIN-SUFFIX,gz.hxdaka.com,AdBlock -- DOMAIN-SUFFIX,gz00005.top,AdBlock -- DOMAIN-SUFFIX,gzktpf.com,AdBlock -- DOMAIN-SUFFIX,gzlykj.cn,AdBlock -- DOMAIN-SUFFIX,gzmjnx.cn,AdBlock -- DOMAIN-SUFFIX,gzqudou.com,AdBlock -- DOMAIN-SUFFIX,h.canmg.cn,AdBlock -- DOMAIN-SUFFIX,h.holder.com.ua,AdBlock -- DOMAIN-SUFFIX,h.irs01.com,AdBlock -- DOMAIN-SUFFIX,h.laojiayoufang.com,AdBlock -- DOMAIN-SUFFIX,h.msn.com,AdBlock -- DOMAIN-SUFFIX,h.pcd.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,h.sora.yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,h01.hotrank.com.tw,AdBlock -- DOMAIN-SUFFIX,h1.18sd.cn,AdBlock -- DOMAIN-SUFFIX,h2.18sd.cn,AdBlock -- DOMAIN-SUFFIX,h5.holalauncher.com,AdBlock -- DOMAIN-SUFFIX,h5.jiumaster.com,AdBlock -- DOMAIN-SUFFIX,h5.pk1179.com,AdBlock -- DOMAIN-SUFFIX,h5.super-dreamers.com,AdBlock -- DOMAIN-SUFFIX,h5.taihao.cc,AdBlock -- DOMAIN-SUFFIX,h8.bec.com,AdBlock -- DOMAIN-SUFFIX,h9377c.com,AdBlock -- DOMAIN-SUFFIX,haitaoad.nosdn.127.net,AdBlock -- DOMAIN-SUFFIX,haiwai-ic.ksosoft.com,AdBlock -- DOMAIN-SUFFIX,haiwengji.net,AdBlock -- DOMAIN-SUFFIX,haiyunpush.com,AdBlock -- DOMAIN-SUFFIX,hanju18.net,AdBlock -- DOMAIN-SUFFIX,hao.7654.com,AdBlock -- DOMAIN-SUFFIX,hao.qquu8.com,AdBlock -- DOMAIN-SUFFIX,hao.tiandi.com,AdBlock -- DOMAIN-SUFFIX,hao.uc.cn,AdBlock -- DOMAIN-SUFFIX,hao123.xywy.com,AdBlock -- DOMAIN-SUFFIX,hao123rt.com,AdBlock -- DOMAIN-SUFFIX,hao549.com,AdBlock -- DOMAIN-SUFFIX,hao61.net,AdBlock -- DOMAIN-SUFFIX,hao916.com,AdBlock -- DOMAIN-SUFFIX,hao934.com,AdBlock -- DOMAIN-SUFFIX,haoghost.com,AdBlock -- DOMAIN-SUFFIX,haohaowan8.com,AdBlock -- DOMAIN-SUFFIX,haolew.com,AdBlock -- DOMAIN-SUFFIX,haoshengtoys.com,AdBlock -- DOMAIN-SUFFIX,haostat.qihoo.com,AdBlock -- DOMAIN-SUFFIX,hapic1.jhkxwl.com,AdBlock -- DOMAIN-SUFFIX,hascosafety.com,AdBlock -- DOMAIN-SUFFIX,hats.haibao.cn,AdBlock -- DOMAIN-SUFFIX,hbalx.cn,AdBlock -- DOMAIN-SUFFIX,hbdt.luomi.com,AdBlock -- DOMAIN-SUFFIX,hblinwei.com,AdBlock -- DOMAIN-SUFFIX,hbngfy.com,AdBlock -- DOMAIN-SUFFIX,hbyyzm.com,AdBlock -- DOMAIN-SUFFIX,hc.baidu.com,AdBlock -- DOMAIN-SUFFIX,hccms.com.cn,AdBlock -- DOMAIN-SUFFIX,hcreditx.com,AdBlock -- DOMAIN-SUFFIX,hd.jiedaibao.com,AdBlock -- DOMAIN-SUFFIX,hd.ylddq.com,AdBlock -- DOMAIN-SUFFIX,hda.maxli.cn,AdBlock -- DOMAIN-SUFFIX,hdad.baike.com,AdBlock -- DOMAIN-SUFFIX,hdb.maxli.cn,AdBlock -- DOMAIN-SUFFIX,hdggcdn.bayimob.com,AdBlock -- DOMAIN-SUFFIX,hdhkwl.com,AdBlock -- DOMAIN-SUFFIX,hdj.baidu.com,AdBlock -- DOMAIN-SUFFIX,he2d.com,AdBlock -- DOMAIN-SUFFIX,health1.12584.cn,AdBlock -- DOMAIN-SUFFIX,heavenmedia.v3g4s.com,AdBlock -- DOMAIN-SUFFIX,hechaocheng.cn,AdBlock -- DOMAIN-SUFFIX,heefwozhlxgz.com,AdBlock -- DOMAIN-SUFFIX,hefan365.com,AdBlock -- DOMAIN-SUFFIX,heib10.top,AdBlock -- DOMAIN-SUFFIX,heib12.top,AdBlock -- DOMAIN-SUFFIX,heimo.rrsdl.com,AdBlock -- DOMAIN-SUFFIX,hejban.youwatch.org,AdBlock -- DOMAIN-SUFFIX,hejingroup.cn,AdBlock -- DOMAIN-SUFFIX,help.baotangwang.cn,AdBlock -- DOMAIN-SUFFIX,help.yunaq.com,AdBlock -- DOMAIN-SUFFIX,hesxz.com,AdBlock -- DOMAIN-SUFFIX,heyzap.com,AdBlock -- DOMAIN-SUFFIX,hfjuki.com,AdBlock -- DOMAIN-SUFFIX,hfsteel.net,AdBlock -- DOMAIN-SUFFIX,hg417.bet,AdBlock -- DOMAIN-SUFFIX,hg89038.com,AdBlock -- DOMAIN-SUFFIX,hg89068.com,AdBlock -- DOMAIN-SUFFIX,hg89078.com,AdBlock -- DOMAIN-SUFFIX,hgame.com,AdBlock -- DOMAIN-SUFFIX,hh6666.com,AdBlock -- DOMAIN-SUFFIX,hhlian.com,AdBlock -- DOMAIN-SUFFIX,hhly88.com,AdBlock -- DOMAIN-SUFFIX,hhppyt.com,AdBlock -- DOMAIN-SUFFIX,hhqda.pop.t5yx.cn,AdBlock -- DOMAIN-SUFFIX,hi686.com,AdBlock -- DOMAIN-SUFFIX,hi760.com,AdBlock -- DOMAIN-SUFFIX,hi9377.com,AdBlock -- DOMAIN-SUFFIX,hiad.myweb.hinet.net,AdBlock -- DOMAIN-SUFFIX,hiad.vmall.com,AdBlock -- DOMAIN-SUFFIX,higame123.com,AdBlock -- DOMAIN-SUFFIX,hilltopads.net,AdBlock -- DOMAIN-SUFFIX,himandy.com,AdBlock -- DOMAIN-SUFFIX,hipersushiads.com,AdBlock -- DOMAIN-SUFFIX,histats.com,AdBlock -- DOMAIN-SUFFIX,hit.webcentre.lycos.co.uk,AdBlock -- DOMAIN-SUFFIX,hitlog2.chosun.com,AdBlock -- DOMAIN-SUFFIX,hitslink.com,AdBlock -- DOMAIN-SUFFIX,hivecn.cn,AdBlock -- DOMAIN-SUFFIX,hivedata.cc,AdBlock -- DOMAIN-SUFFIX,hjc1990.com,AdBlock -- DOMAIN-SUFFIX,hk.jtsh123.com,AdBlock -- DOMAIN-SUFFIX,hk.napi.ucweb.com,AdBlock -- DOMAIN-SUFFIX,hk9600.com,AdBlock -- DOMAIN-SUFFIX,hk-cdn.effectivemeasure.net,AdBlock -- DOMAIN-SUFFIX,hkfuy.com,AdBlock -- DOMAIN-SUFFIX,hl.kuzu.com,AdBlock -- DOMAIN-SUFFIX,hl.quw18.com,AdBlock -- DOMAIN-SUFFIX,hl2rcv.adobe.com,AdBlock -- DOMAIN-SUFFIX,hldwmly.com,AdBlock -- DOMAIN-SUFFIX,hlrcv.stage.adobe.com,AdBlock -- DOMAIN-SUFFIX,hm.baidu.com,AdBlock -- DOMAIN-SUFFIX,hmma.baidu.com,AdBlock -- DOMAIN-SUFFIX,hmp33.com,AdBlock -- DOMAIN-SUFFIX,hmttoly.com,AdBlock -- DOMAIN-SUFFIX,hmyangshengji.com,AdBlock -- DOMAIN-SUFFIX,hnasd.com,AdBlock -- DOMAIN-SUFFIX,hnctsm.com,AdBlock -- DOMAIN-SUFFIX,hndiyikj.com,AdBlock -- DOMAIN-SUFFIX,hnxxjn.com,AdBlock -- DOMAIN-SUFFIX,hnyny.com,AdBlock -- DOMAIN-SUFFIX,hoisin.coocaatv.com,AdBlock -- DOMAIN-SUFFIX,home520.com,AdBlock -- DOMAIN-SUFFIX,hoplink.ksosoft.com,AdBlock -- DOMAIN-SUFFIX,hosting.miarroba.info,AdBlock -- DOMAIN-SUFFIX,hot.browser.miui.com,AdBlock -- DOMAIN-SUFFIX,hot.m.shouji.360tpcdn.com,AdBlock -- DOMAIN-SUFFIX,hot-mob.com,AdBlock -- DOMAIN-SUFFIX,hotrank.com.tw,AdBlock -- DOMAIN-SUFFIX,houdaolj.com,AdBlock -- DOMAIN-SUFFIX,houtai.2345.com,AdBlock -- DOMAIN-SUFFIX,hpd.baidu.com,AdBlock -- DOMAIN-SUFFIX,hpqxznpb.bid,AdBlock -- DOMAIN-SUFFIX,hqgjcm.com,AdBlock -- DOMAIN-SUFFIX,hr41.cn,AdBlock -- DOMAIN-SUFFIX,hr44.com,AdBlock -- DOMAIN-SUFFIX,hs.qhupdate.com,AdBlock -- DOMAIN-SUFFIX,hslyqs.com,AdBlock -- DOMAIN-SUFFIX,ht.www.sogou.com,AdBlock -- DOMAIN-SUFFIX,htfmbt.com,AdBlock -- DOMAIN-SUFFIX,htjsk.com,AdBlock -- DOMAIN-SUFFIX,html.350.com,AdBlock -- DOMAIN-SUFFIX,html.sunday8.com,AdBlock -- DOMAIN-SUFFIX,html.yuntzs.com,AdBlock -- DOMAIN-SUFFIX,httpdns.push.oppomobile.com,AdBlock -- DOMAIN-SUFFIX,huahuaka.com,AdBlock -- DOMAIN-SUFFIX,huashengtai.net,AdBlock -- DOMAIN-SUFFIX,huashuowork.com,AdBlock -- DOMAIN-SUFFIX,huaxinxunye.cn,AdBlock -- DOMAIN-SUFFIX,huayi65.com,AdBlock -- DOMAIN-SUFFIX,hub5pn.wap.sandai.net,AdBlock -- DOMAIN-SUFFIX,hubojd.com,AdBlock -- DOMAIN-SUFFIX,huichuan.sm.cn,AdBlock -- DOMAIN-SUFFIX,huimee.net,AdBlock -- DOMAIN-SUFFIX,huishenghuiying.com,AdBlock -- DOMAIN-SUFFIX,huishenghuiying.com.cn,AdBlock -- DOMAIN-SUFFIX,humanding.com,AdBlock -- DOMAIN-SUFFIX,hunpingou.com,AdBlock -- DOMAIN-SUFFIX,huodonghezi.com,AdBlock -- DOMAIN-SUFFIX,huoying666.com,AdBlock -- DOMAIN-SUFFIX,hv.code.tanwanyx.com,AdBlock -- DOMAIN-SUFFIX,hw6.com,AdBlock -- DOMAIN-SUFFIX,hwt.player888.cn,AdBlock -- DOMAIN-SUFFIX,hxadt.com,AdBlock -- DOMAIN-SUFFIX,hxspc.com,AdBlock -- DOMAIN-SUFFIX,hxstfxx.cn,AdBlock -- DOMAIN-SUFFIX,hxueu.code.weddingeeos.com,AdBlock -- DOMAIN-SUFFIX,hxyifu.com,AdBlock -- DOMAIN-SUFFIX,hxyx360.com,AdBlock -- DOMAIN-SUFFIX,hyfh.benbaisteel.com,AdBlock -- DOMAIN-SUFFIX,hyfyuan.com,AdBlock -- DOMAIN-SUFFIX,hyperpromote.com,AdBlock -- DOMAIN-SUFFIX,hypersnap.net,AdBlock -- DOMAIN-SUFFIX,hys4.com,AdBlock -- DOMAIN-SUFFIX,hystq.com,AdBlock -- DOMAIN-SUFFIX,hytgj.com,AdBlock -- DOMAIN-SUFFIX,hyz86.com,AdBlock -- DOMAIN-SUFFIX,hz.miercn.com,AdBlock -- DOMAIN-SUFFIX,hz.shouyoutv.com,AdBlock -- DOMAIN-SUFFIX,hzaibi.com,AdBlock -- DOMAIN-SUFFIX,hzdmacore.kejet.net,AdBlock -- DOMAIN-SUFFIX,hzhyhm.com,AdBlock -- DOMAIN-SUFFIX,hzsod71wov.me,AdBlock -- DOMAIN-SUFFIX,hzxfmc.com,AdBlock -- DOMAIN-SUFFIX,hzyuw.com,AdBlock -- DOMAIN-SUFFIX,i.bigmir.net,AdBlock -- DOMAIN-SUFFIX,i.clkservice.youdao.com,AdBlock -- DOMAIN-SUFFIX,i.dreamfull.cn,AdBlock -- DOMAIN-SUFFIX,i.flow.browser.oppomobile.com,AdBlock -- DOMAIN-SUFFIX,i.go.sohu.com,AdBlock -- DOMAIN-SUFFIX,i.haloapps.com,AdBlock -- DOMAIN-SUFFIX,i.hao61.net,AdBlock -- DOMAIN-SUFFIX,i.holalauncher.com,AdBlock -- DOMAIN-SUFFIX,i.huilixieye.net,AdBlock -- DOMAIN-SUFFIX,i.jiathis.com,AdBlock -- DOMAIN-SUFFIX,i.jyhwt.cn,AdBlock -- DOMAIN-SUFFIX,i.l.cnn.net,AdBlock -- DOMAIN-SUFFIX,i.liadm.com,AdBlock -- DOMAIN-SUFFIX,i.ma.social-touch.com,AdBlock -- DOMAIN-SUFFIX,i.mmcdn.cn,AdBlock -- DOMAIN-SUFFIX,i.ssix.io,AdBlock -- DOMAIN-SUFFIX,i.syasn.com,AdBlock -- DOMAIN-SUFFIX,i.tansuotv.com,AdBlock -- DOMAIN-SUFFIX,i.w55c.net,AdBlock -- DOMAIN-SUFFIX,i.zhuoyaju.com,AdBlock -- DOMAIN-SUFFIX,i1236.net,AdBlock -- DOMAIN-SUFFIX,i2.akjunshi.com,AdBlock -- DOMAIN-SUFFIX,i3818.com,AdBlock -- DOMAIN-SUFFIX,i5.akjunshi.com,AdBlock -- DOMAIN-SUFFIX,i92xue.com,AdBlock -- DOMAIN-SUFFIX,ia.ctags.cn,AdBlock -- DOMAIN-SUFFIX,iad.g.163.com,AdBlock -- DOMAIN-SUFFIX,iadc.qwapi.com,AdBlock -- DOMAIN-SUFFIX,iadmat.nosdn.127.net,AdBlock -- DOMAIN-SUFFIX,iadmatvideo.nosdn.127.net,AdBlock -- DOMAIN-SUFFIX,iadmusicmat.music.126.net,AdBlock -- DOMAIN-SUFFIX,iads.xinmin.cn,AdBlock -- DOMAIN-SUFFIX,iadsdk.apple.com,AdBlock -- DOMAIN-SUFFIX,ib.adnxs.co,AdBlock -- DOMAIN-SUFFIX,ibafnw.cn,AdBlock -- DOMAIN-SUFFIX,ibanners.empoweredcomms.com.au,AdBlock -- DOMAIN-SUFFIX,ic.wps.cn,AdBlock -- DOMAIN-SUFFIX,icast.cn,AdBlock -- DOMAIN-SUFFIX,icdxc.com,AdBlock -- DOMAIN-SUFFIX,ichaosheng.com,AdBlock -- DOMAIN-SUFFIX,icn.southmoney.com,AdBlock -- DOMAIN-SUFFIX,ico.58pic.com,AdBlock -- DOMAIN-SUFFIX,icon.cnmo.com,AdBlock -- DOMAIN-SUFFIX,icons.mydrivers.com,AdBlock -- DOMAIN-SUFFIX,iconworkshop.cn,AdBlock -- DOMAIN-SUFFIX,id.jiathis.com,AdBlock -- DOMAIN-SUFFIX,id528.com,AdBlock -- DOMAIN-SUFFIX,ida.cnool.net,AdBlock -- DOMAIN-SUFFIX,idasai.com,AdBlock -- DOMAIN-SUFFIX,idcot.com,AdBlock -- DOMAIN-SUFFIX,idcqi.com,AdBlock -- DOMAIN-SUFFIX,identified.cn,AdBlock -- DOMAIN-SUFFIX,idianfang.com,AdBlock -- DOMAIN-SUFFIX,idm-su.baidu.com,AdBlock -- DOMAIN-SUFFIX,ids.deliver.ifeng.com,AdBlock -- DOMAIN-SUFFIX,ids1.deliver.ifeng.com,AdBlock -- DOMAIN-SUFFIX,idx.m.hub.sandai.net,AdBlock -- DOMAIN-SUFFIX,ie8eamus.com,AdBlock -- DOMAIN-SUFFIX,iebar.baidu.com,AdBlock -- DOMAIN-SUFFIX,ieonline.microsoft.com,AdBlock -- DOMAIN-SUFFIX,if1512.com,AdBlock -- DOMAIN-SUFFIX,ifengad.3g.ifeng.com,AdBlock -- DOMAIN-SUFFIX,iflyad.bj.openstorage.cn,AdBlock -- DOMAIN-SUFFIX,iframe.travel.yahoo.com,AdBlock -- DOMAIN-SUFFIX,ig.nukefans.net,AdBlock -- DOMAIN-SUFFIX,igj5y.yongchanghengyuan.com,AdBlock -- DOMAIN-SUFFIX,ih.adscale.de,AdBlock -- DOMAIN-SUFFIX,ihualun.com,AdBlock -- DOMAIN-SUFFIX,ihuanmei.com,AdBlock -- DOMAIN-SUFFIX,iia1.pikacn.com,AdBlock -- DOMAIN-SUFFIX,iiad.com,AdBlock -- DOMAIN-SUFFIX,iiewl.com,AdBlock -- DOMAIN-SUFFIX,iii.6park.com,AdBlock -- DOMAIN-SUFFIX,iis1.deliver.ifeng.com,AdBlock -- DOMAIN-SUFFIX,iis3g.deliver.ifeng.com,AdBlock -- DOMAIN-SUFFIX,iisl7wpf.me,AdBlock -- DOMAIN-SUFFIX,ikcode.baidu.com,AdBlock -- DOMAIN-SUFFIX,il8r.com,AdBlock -- DOMAIN-SUFFIX,im.jpush.cn,AdBlock -- DOMAIN-SUFFIX,im.ov.yahoo.co.jp,AdBlock -- DOMAIN-SUFFIX,im1.56zzw.com,AdBlock -- DOMAIN-SUFFIX,im64.jpush.cn,AdBlock -- DOMAIN-SUFFIX,ima3vpaid.appspot.com,AdBlock -- DOMAIN-SUFFIX,imads.rediff.com,AdBlock -- DOMAIN-SUFFIX,image.139y.com,AdBlock -- DOMAIN-SUFFIX,image.9duw.com,AdBlock -- DOMAIN-SUFFIX,image.box.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,image.fsyule.net,AdBlock -- DOMAIN-SUFFIX,image.gentags.com,AdBlock -- DOMAIN-SUFFIX,image.haiyunx.com,AdBlock -- DOMAIN-SUFFIX,image.hh010.com,AdBlock -- DOMAIN-SUFFIX,image.hj217.com,AdBlock -- DOMAIN-SUFFIX,image.p4p.sogou.com,AdBlock -- DOMAIN-SUFFIX,image.qj175.com,AdBlock -- DOMAIN-SUFFIX,image.zzd.sm.cn,AdBlock -- DOMAIN-SUFFIX,imagelx.yidianzixun.com,AdBlock -- DOMAIN-SUFFIX,images.avsmt.cn,AdBlock -- DOMAIN-SUFFIX,images.chinaz.com,AdBlock -- DOMAIN-SUFFIX,images.enet.com.cn,AdBlock -- DOMAIN-SUFFIX,images.fastclick.net,AdBlock -- DOMAIN-SUFFIX,images.gxsky.com,AdBlock -- DOMAIN-SUFFIX,images.intellitxt.com,AdBlock -- DOMAIN-SUFFIX,images.millennialmedia.com,AdBlock -- DOMAIN-SUFFIX,images.pagechoice.net,AdBlock -- DOMAIN-SUFFIX,images.sohu.com,AdBlock -- DOMAIN-SUFFIX,images.startappservice.com,AdBlock -- DOMAIN-SUFFIX,images.tyyjzs.cn,AdBlock -- DOMAIN-SUFFIX,images9999.com,AdBlock -- DOMAIN-SUFFIX,imageter.com,AdBlock -- DOMAIN-SUFFIX,imagzine.oppomobile.com,AdBlock -- DOMAIN-SUFFIX,imedia.bokecc.com,AdBlock -- DOMAIN-SUFFIX,imeijiajia.com,AdBlock -- DOMAIN-SUFFIX,imfsr.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,img.12584.cn,AdBlock -- DOMAIN-SUFFIX,img.3sjt.com,AdBlock -- DOMAIN-SUFFIX,img.88ads.com,AdBlock -- DOMAIN-SUFFIX,img.9duw.com,AdBlock -- DOMAIN-SUFFIX,img.ad.zhangyue.com,AdBlock -- DOMAIN-SUFFIX,img.adbox.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,img.adnyg.com,AdBlock -- DOMAIN-SUFFIX,img.amp.ad.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,img.cmm.xmfish.com,AdBlock -- DOMAIN-SUFFIX,img.cxxyft.com,AdBlock -- DOMAIN-SUFFIX,img.dawenxue.org,AdBlock -- DOMAIN-SUFFIX,img.dydab.com,AdBlock -- DOMAIN-SUFFIX,img.ercfh.com,AdBlock -- DOMAIN-SUFFIX,img.fd7c.com,AdBlock -- DOMAIN-SUFFIX,img.feitian001.com,AdBlock -- DOMAIN-SUFFIX,img.gaore.com,AdBlock -- DOMAIN-SUFFIX,img.gz9d.com,AdBlock -- DOMAIN-SUFFIX,img.il8r.com,AdBlock -- DOMAIN-SUFFIX,img.img18.com,AdBlock -- DOMAIN-SUFFIX,img.jgchq.com,AdBlock -- DOMAIN-SUFFIX,img.jizzads.com,AdBlock -- DOMAIN-SUFFIX,img.kanuxian.cn,AdBlock -- DOMAIN-SUFFIX,img.khlxw.com,AdBlock -- DOMAIN-SUFFIX,img.kuwanpx.com,AdBlock -- DOMAIN-SUFFIX,img.libdd.com,AdBlock -- DOMAIN-SUFFIX,img.ma.social-touch.com,AdBlock -- DOMAIN-SUFFIX,img.meipic.net,AdBlock -- DOMAIN-SUFFIX,img.qdscgj.com,AdBlock -- DOMAIN-SUFFIX,img.qqgeshou.com,AdBlock -- DOMAIN-SUFFIX,img.s8bbs.com,AdBlock -- DOMAIN-SUFFIX,img.scupio.com,AdBlock -- DOMAIN-SUFFIX,img.sheyuansu.com,AdBlock -- DOMAIN-SUFFIX,img.supfast.net,AdBlock -- DOMAIN-SUFFIX,img.tan5858.com,AdBlock -- DOMAIN-SUFFIX,img.taotaosou.cn,AdBlock -- DOMAIN-SUFFIX,img.tcdxt.com,AdBlock -- DOMAIN-SUFFIX,img.toppr.com.cn,AdBlock -- DOMAIN-SUFFIX,img.twcczhu.com,AdBlock -- DOMAIN-SUFFIX,img.uyangyong.cn,AdBlock -- DOMAIN-SUFFIX,img.wan.sogou.com,AdBlock -- DOMAIN-SUFFIX,img.wuben56.com,AdBlock -- DOMAIN-SUFFIX,img.xa9t.com,AdBlock -- DOMAIN-SUFFIX,img.xcy8.com,AdBlock -- DOMAIN-SUFFIX,img.xiacaidd.com,AdBlock -- DOMAIN-SUFFIX,img.xuenb.com,AdBlock -- DOMAIN-SUFFIX,img.yingshidiguo.cn,AdBlock -- DOMAIN-SUFFIX,img.yuyue007.cn,AdBlock -- DOMAIN-SUFFIX,img.zsj18.com,AdBlock -- DOMAIN-SUFFIX,img.zuowen8.com,AdBlock -- DOMAIN-SUFFIX,img.zx590.com,AdBlock -- DOMAIN-SUFFIX,img0.egou.com,AdBlock -- DOMAIN-SUFFIX,img01.taotaosou.cn,AdBlock -- DOMAIN-SUFFIX,img1.126.net,AdBlock -- DOMAIN-SUFFIX,img1.18183.com,AdBlock -- DOMAIN-SUFFIX,img1.jintang114.org,AdBlock -- DOMAIN-SUFFIX,img1.km.com,AdBlock -- DOMAIN-SUFFIX,img1.mekbet.com,AdBlock -- DOMAIN-SUFFIX,img1.nend.net,AdBlock -- DOMAIN-SUFFIX,img1.pcfg.cache.wps.cn,AdBlock -- DOMAIN-SUFFIX,img1.pszyzxh.org,AdBlock -- DOMAIN-SUFFIX,img18.com,AdBlock -- DOMAIN-SUFFIX,img2.126.net,AdBlock -- DOMAIN-SUFFIX,img2.578965.com,AdBlock -- DOMAIN-SUFFIX,img2.cs153.com,AdBlock -- DOMAIN-SUFFIX,img2.hrccb.com,AdBlock -- DOMAIN-SUFFIX,img2.jiuzhilan.com,AdBlock -- DOMAIN-SUFFIX,img2.km.com,AdBlock -- DOMAIN-SUFFIX,img2.qekun.com,AdBlock -- DOMAIN-SUFFIX,img3.126.net,AdBlock -- DOMAIN-SUFFIX,img3.fy1g.com,AdBlock -- DOMAIN-SUFFIX,img3.km.com,AdBlock -- DOMAIN-SUFFIX,img6.126.net,AdBlock -- DOMAIN-SUFFIX,img80.net,AdBlock -- DOMAIN-SUFFIX,img-ad.oupeng.com,AdBlock -- DOMAIN-SUFFIX,imgad.thepaper.cn,AdBlock -- DOMAIN-SUFFIX,imgad0.3conline.com,AdBlock -- DOMAIN-SUFFIX,imgad0.pconline.com.cn,AdBlock -- DOMAIN-SUFFIX,imgadpai.thepaper.cn,AdBlock -- DOMAIN-SUFFIX,imgapp.yeyou.com,AdBlock -- DOMAIN-SUFFIX,imgc.cymzc.com,AdBlock -- DOMAIN-SUFFIX,imgcdn.wapx.cn,AdBlock -- DOMAIN-SUFFIX,img-cdn-spot.ymcdn.cn,AdBlock -- DOMAIN-SUFFIX,img-dsp.oss-cn-beijing.aliyuncs.com,AdBlock -- DOMAIN-SUFFIX,imges.wu65.com,AdBlock -- DOMAIN-SUFFIX,imgg.marketgid.com,AdBlock -- DOMAIN-SUFFIX,imgg.mgid.com,AdBlock -- DOMAIN-SUFFIX,imgp.cymzc.com,AdBlock -- DOMAIN-SUFFIX,imgsreview.dftoutiao.com,AdBlock -- DOMAIN-SUFFIX,imindmap.cc,AdBlock -- DOMAIN-SUFFIX,immob.cn,AdBlock -- DOMAIN-SUFFIX,imneinei.com,AdBlock -- DOMAIN-SUFFIX,i-mobile.co.jp,AdBlock -- DOMAIN-SUFFIX,imp.asahi.com,AdBlock -- DOMAIN-SUFFIX,imp.gentags.net,AdBlock -- DOMAIN-SUFFIX,imp.go.sohu.com,AdBlock -- DOMAIN-SUFFIX,imp.madserving.com,AdBlock -- DOMAIN-SUFFIX,imp.pdb.madserving.com,AdBlock -- DOMAIN-SUFFIX,imp.xgo.com.cn,AdBlock -- DOMAIN-SUFFIX,imp.zdnet.com.cn,AdBlock -- DOMAIN-SUFFIX,imp.zol.com.cn,AdBlock -- DOMAIN-SUFFIX,impression.gridsumdissector.com,AdBlock -- DOMAIN-SUFFIX,impservice.dictapp.youdao.com,AdBlock -- DOMAIN-SUFFIX,impservice.youdao.com,AdBlock -- DOMAIN-SUFFIX,impservice2.youdao.com,AdBlock -- DOMAIN-SUFFIX,impservicetest.dictapp.youdao.com,AdBlock -- DOMAIN-SUFFIX,impservice-test.dictapp.youdao.com,AdBlock -- DOMAIN-SUFFIX,imrworldwide.com,AdBlock -- DOMAIN-SUFFIX,in.gyeet.com,AdBlock -- DOMAIN-SUFFIX,in.jxhcyc.com,AdBlock -- DOMAIN-SUFFIX,in.mengpr.com,AdBlock -- DOMAIN-SUFFIX,in.mgwcn.com,AdBlock -- DOMAIN-SUFFIX,in.qzkxt.com,AdBlock -- DOMAIN-SUFFIX,in.zog.link,AdBlock -- DOMAIN-SUFFIX,in1.feed.uu.cc,AdBlock -- DOMAIN-SUFFIX,in1.secure.uu.cc,AdBlock -- DOMAIN-SUFFIX,inad.com,AdBlock -- DOMAIN-SUFFIX,inapp.1sapp.com,AdBlock -- DOMAIN-SUFFIX,inccnd.com,AdBlock -- DOMAIN-SUFFIX,inclk.com,AdBlock -- DOMAIN-SUFFIX,include.xs2345.com,AdBlock -- DOMAIN-SUFFIX,index.woai310.com,AdBlock -- DOMAIN-SUFFIX,indieclick.3janecdn.com,AdBlock -- DOMAIN-SUFFIX,info.downsave.com,AdBlock -- DOMAIN-SUFFIX,info.gomlab.com,AdBlock -- DOMAIN-SUFFIX,info.meihua.docer.com,AdBlock -- DOMAIN-SUFFIX,info.pinyin.sogou.com,AdBlock -- DOMAIN-SUFFIX,info.sec.miui.com,AdBlock -- DOMAIN-SUFFIX,info.stockstar.com,AdBlock -- DOMAIN-SUFFIX,info.yitsoftware.com,AdBlock -- DOMAIN-SUFFIX,infocenter.meizu.com,AdBlock -- DOMAIN-SUFFIX,ingameads.gameloft.com,AdBlock -- DOMAIN-SUFFIX,ini.litingxin.cn,AdBlock -- DOMAIN-SUFFIX,ini.update.360safe.com,AdBlock -- DOMAIN-SUFFIX,init.phpwind.com,AdBlock -- DOMAIN-SUFFIX,init.phpwind.net,AdBlock -- DOMAIN-SUFFIX,init.startappexchange.com,AdBlock -- DOMAIN-SUFFIX,innity.com,AdBlock -- DOMAIN-SUFFIX,innity.net,AdBlock -- DOMAIN-SUFFIX,inoprosport.su,AdBlock -- DOMAIN-SUFFIX,insenz.com,AdBlock -- DOMAIN-SUFFIX,inside.bitcomet.com,AdBlock -- DOMAIN-SUFFIX,inskin.vo.llnwd.net,AdBlock -- DOMAIN-SUFFIX,inst.360safe.com,AdBlock -- DOMAIN-SUFFIX,instabug.com,AdBlock -- DOMAIN-SUFFIX,install.kugou.com,AdBlock -- DOMAIN-SUFFIX,install.sidesearch.lycos.com,AdBlock -- DOMAIN-SUFFIX,install2.kugou.com,AdBlock -- DOMAIN-SUFFIX,instreet.cn,AdBlock -- DOMAIN-SUFFIX,int.dpool.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,inte.theta.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,intellitxt.com,AdBlock -- DOMAIN-SUFFIX,intely.cn,AdBlock -- DOMAIN-SUFFIX,inter1ads.com,AdBlock -- DOMAIN-SUFFIX,interaction.bayimob.com,AdBlock -- DOMAIN-SUFFIX,interactive.huanqiu.com,AdBlock -- DOMAIN-SUFFIX,interest.mix.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,ioc.mmakd.top,AdBlock -- DOMAIN-SUFFIX,ios.bugly.qq.com,AdBlock -- DOMAIN-SUFFIX,ios-dc.51y5.net,AdBlock -- DOMAIN-SUFFIX,ios-informationplatform.wps.cn,AdBlock -- DOMAIN-SUFFIX,iosipa.b0.upaiyun.com,AdBlock -- DOMAIN-SUFFIX,ip.hivps.xyz,AdBlock -- DOMAIN-SUFFIX,ip2.pxene.com,AdBlock -- DOMAIN-SUFFIX,ipengtai.huanqiu.com,AdBlock -- DOMAIN-SUFFIX,iperceptions.com,AdBlock -- DOMAIN-SUFFIX,iphonelog.shouji.baofeng.com,AdBlock -- DOMAIN-SUFFIX,ipic.staticsdo.com,AdBlock -- DOMAIN-SUFFIX,ipinyou.com,AdBlock -- DOMAIN-SUFFIX,ipm.atm.cp31.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,ipm.atm.youku.com,AdBlock -- DOMAIN-SUFFIX,iqiyi.irs01.com,AdBlock -- DOMAIN-SUFFIX,ir.mail.126.com,AdBlock -- DOMAIN-SUFFIX,ir.mail.163.com,AdBlock -- DOMAIN-SUFFIX,ir.mail.yeah.net,AdBlock -- DOMAIN-SUFFIX,iroby.com,AdBlock -- DOMAIN-SUFFIX,irpmt.mail.163.com,AdBlock -- DOMAIN-SUFFIX,irs01.com,AdBlock -- DOMAIN-SUFFIX,irs01.net,AdBlock -- DOMAIN-SUFFIX,irs09.com,AdBlock -- DOMAIN-SUFFIX,ishop789.com,AdBlock -- DOMAIN-SUFFIX,ishowbg.com,AdBlock -- DOMAIN-SUFFIX,istreamsche.com,AdBlock -- DOMAIN-SUFFIX,itaoxiaoshuo.com,AdBlock -- DOMAIN-SUFFIX,item.ttkvod.com,AdBlock -- DOMAIN-SUFFIX,items.bingdiantao.com,AdBlock -- DOMAIN-SUFFIX,its.fugetech.com,AdBlock -- DOMAIN-SUFFIX,its-dori.tumblr.com,AdBlock -- DOMAIN-SUFFIX,iutr.uozwys.top,AdBlock -- DOMAIN-SUFFIX,iuuff.com,AdBlock -- DOMAIN-SUFFIX,ivy.pcauto.com.cn,AdBlock -- DOMAIN-SUFFIX,ivy.pcbaby.com.cn,AdBlock -- DOMAIN-SUFFIX,ivy.pclady.com.cn,AdBlock -- DOMAIN-SUFFIX,ivy.pconline.com.cn,AdBlock -- DOMAIN-SUFFIX,iwan.sogou.com,AdBlock -- DOMAIN-SUFFIX,iwanad.baidu.com,AdBlock -- DOMAIN-SUFFIX,ixpub.net,AdBlock -- DOMAIN-SUFFIX,j.6avz.com,AdBlock -- DOMAIN-SUFFIX,j.baminw.cn,AdBlock -- DOMAIN-SUFFIX,j.biquge520.cc,AdBlock -- DOMAIN-SUFFIX,j.br.baidu.com,AdBlock -- DOMAIN-SUFFIX,j.ccnovel.com,AdBlock -- DOMAIN-SUFFIX,j.chaorenjiaoshi.com,AdBlock -- DOMAIN-SUFFIX,j.dipowang.cn,AdBlock -- DOMAIN-SUFFIX,j.fd7c.com,AdBlock -- DOMAIN-SUFFIX,j.hbwcl.com,AdBlock -- DOMAIN-SUFFIX,j.hongyangpai.com,AdBlock -- DOMAIN-SUFFIX,j.jimeilm.com,AdBlock -- DOMAIN-SUFFIX,j.kfd3sm2c.com,AdBlock -- DOMAIN-SUFFIX,j.qijijs.top,AdBlock -- DOMAIN-SUFFIX,j.qiqivv.com,AdBlock -- DOMAIN-SUFFIX,j.qiqiww.com,AdBlock -- DOMAIN-SUFFIX,j.s11.cn,AdBlock -- DOMAIN-SUFFIX,j.sc1369.com,AdBlock -- DOMAIN-SUFFIX,j.sdqoi2d.com,AdBlock -- DOMAIN-SUFFIX,j.wan.liebao.cn,AdBlock -- DOMAIN-SUFFIX,j.wit.qq.com,AdBlock -- DOMAIN-SUFFIX,j.xinshipu.com,AdBlock -- DOMAIN-SUFFIX,j.yljiaoluo.com,AdBlock -- DOMAIN-SUFFIX,j.ytbt.cc,AdBlock -- DOMAIN-SUFFIX,j.zhdap.com,AdBlock -- DOMAIN-SUFFIX,j1.piaobing.com,AdBlock -- DOMAIN-SUFFIX,j17.shangc.net,AdBlock -- DOMAIN-SUFFIX,j17.xiumu.cn,AdBlock -- DOMAIN-SUFFIX,j520s.gzcl999.cn,AdBlock -- DOMAIN-SUFFIX,j7182.hfxcsl.cn,AdBlock -- DOMAIN-SUFFIX,ja.gamersky.com,AdBlock -- DOMAIN-SUFFIX,ja1.gamersky.com,AdBlock -- DOMAIN-SUFFIX,ja9377.com,AdBlock -- DOMAIN-SUFFIX,jack.okkkk.com,AdBlock -- DOMAIN-SUFFIX,jackaow.com,AdBlock -- DOMAIN-SUFFIX,jagcn.com,AdBlock -- DOMAIN-SUFFIX,jav23.com,AdBlock -- DOMAIN-SUFFIX,javhd.com,AdBlock -- DOMAIN-SUFFIX,jb.4hw.com.cn,AdBlock -- DOMAIN-SUFFIX,jb.asqql.com,AdBlock -- DOMAIN-SUFFIX,jb.dianshu119.com,AdBlock -- DOMAIN-SUFFIX,jb.eastlady.cn,AdBlock -- DOMAIN-SUFFIX,jb.ecar168.cn,AdBlock -- DOMAIN-SUFFIX,jb.mbaidu.top,AdBlock -- DOMAIN-SUFFIX,jb.mnkan.com,AdBlock -- DOMAIN-SUFFIX,jb.tupianzj.com,AdBlock -- DOMAIN-SUFFIX,jbcbuy.com,AdBlock -- DOMAIN-SUFFIX,jbflil.cn,AdBlock -- DOMAIN-SUFFIX,jbyy010.com,AdBlock -- DOMAIN-SUFFIX,jc.anhuilitian.net,AdBlock -- DOMAIN-SUFFIX,jc.xuqinqi.cn,AdBlock -- DOMAIN-SUFFIX,jc1.dayfund.cn,AdBlock -- DOMAIN-SUFFIX,jct.maptu.cn,AdBlock -- DOMAIN-SUFFIX,jczzjx.com,AdBlock -- DOMAIN-SUFFIX,jd.c-ptsp.com.cn,AdBlock -- DOMAIN-SUFFIX,jdb.jiudingcapital.cn,AdBlock -- DOMAIN-SUFFIX,jdb.jiudingcapital.com,AdBlock -- DOMAIN-SUFFIX,jddaw.com,AdBlock -- DOMAIN-SUFFIX,jdg.bjygfd.com,AdBlock -- DOMAIN-SUFFIX,jdkic.com,AdBlock -- DOMAIN-SUFFIX,jdlcg.cn,AdBlock -- DOMAIN-SUFFIX,jdlhg.com,AdBlock -- DOMAIN-SUFFIX,jdw.zjuwjdc.com,AdBlock -- DOMAIN-SUFFIX,jebe.renren.com,AdBlock -- DOMAIN-SUFFIX,jebe.xnimg.cn,AdBlock -- DOMAIN-SUFFIX,jellyfish.pandora.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,jermr.com,AdBlock -- DOMAIN-SUFFIX,jesgoo.com,AdBlock -- DOMAIN-SUFFIX,jf.winads.cn,AdBlock -- DOMAIN-SUFFIX,jfhe.0769371.com,AdBlock -- DOMAIN-SUFFIX,jfm4.pop.baofeng.net,AdBlock -- DOMAIN-SUFFIX,jfqkj.com,AdBlock -- DOMAIN-SUFFIX,jgchq.com,AdBlock -- DOMAIN-SUFFIX,jghcy.com,AdBlock -- DOMAIN-SUFFIX,jhakie.com,AdBlock -- DOMAIN-SUFFIX,jhtcdj.com,AdBlock -- DOMAIN-SUFFIX,jhzl001.com,AdBlock -- DOMAIN-SUFFIX,ji.dazhantai.com,AdBlock -- DOMAIN-SUFFIX,jiaheyonggu.com,AdBlock -- DOMAIN-SUFFIX,jiajv.net,AdBlock -- DOMAIN-SUFFIX,jianbaimei.com,AdBlock -- DOMAIN-SUFFIX,jianduankm.com,AdBlock -- DOMAIN-SUFFIX,jianmei123.com,AdBlock -- DOMAIN-SUFFIX,jiansuo.dsxdn.com,AdBlock -- DOMAIN-SUFFIX,jiaoben.eastday.com,AdBlock -- DOMAIN-SUFFIX,jiaoben.ganji.cn,AdBlock -- DOMAIN-SUFFIX,jiaoben.jucanw.com,AdBlock -- DOMAIN-SUFFIX,jiaoben.junmeng.com,AdBlock -- DOMAIN-SUFFIX,jiaoben.xinshipu.cn,AdBlock -- DOMAIN-SUFFIX,jias.haotxt.com,AdBlock -- DOMAIN-SUFFIX,jiathis.com,AdBlock -- DOMAIN-SUFFIX,jiawen88.com,AdBlock -- DOMAIN-SUFFIX,jiayi1.oss-cn-shanghai.aliyuncs.com,AdBlock -- DOMAIN-SUFFIX,jiedaibao.com,AdBlock -- DOMAIN-SUFFIX,jiehantai.com,AdBlock -- DOMAIN-SUFFIX,jiehunmishu.com,AdBlock -- DOMAIN-SUFFIX,jifeidandar.com,AdBlock -- DOMAIN-SUFFIX,jifen.2345.com,AdBlock -- DOMAIN-SUFFIX,jihehuaban.com,AdBlock -- DOMAIN-SUFFIX,jihehuaban.com.cn,AdBlock -- DOMAIN-SUFFIX,jimdo.com,AdBlock -- DOMAIN-SUFFIX,jimeilm.com,AdBlock -- DOMAIN-SUFFIX,jindu179.com,AdBlock -- DOMAIN-SUFFIX,jing.58.com,AdBlock -- DOMAIN-SUFFIX,jingdian230.meilika.net,AdBlock -- DOMAIN-SUFFIX,jinghuazhijia.com,AdBlock -- DOMAIN-SUFFIX,jinsha11833.com,AdBlock -- DOMAIN-SUFFIX,jinshagt222.com,AdBlock -- DOMAIN-SUFFIX,jira.vpon.com,AdBlock -- DOMAIN-SUFFIX,jisucn.com,AdBlock -- DOMAIN-SUFFIX,jiu.njdkgm.com,AdBlock -- DOMAIN-SUFFIX,jiubuhua.com,AdBlock -- DOMAIN-SUFFIX,jiuku.cc,AdBlock -- DOMAIN-SUFFIX,jiyou2014.com,AdBlock -- DOMAIN-SUFFIX,jizzads.com,AdBlock -- DOMAIN-SUFFIX,jj123.com.cn,AdBlock -- DOMAIN-SUFFIX,jjhd47.115seo.com,AdBlock -- DOMAIN-SUFFIX,jjx.xjtxcj.com,AdBlock -- DOMAIN-SUFFIX,jjxgly.com,AdBlock -- DOMAIN-SUFFIX,jjyy.gaopengqcdz.cn,AdBlock -- DOMAIN-SUFFIX,jk939.com,AdBlock -- DOMAIN-SUFFIX,jkjjkj.top,AdBlock -- DOMAIN-SUFFIX,jkmxy.com,AdBlock -- DOMAIN-SUFFIX,jl027.com,AdBlock -- DOMAIN-SUFFIX,jlssbz.com,AdBlock -- DOMAIN-SUFFIX,jmonitor.jiuzhilan.com,AdBlock -- DOMAIN-SUFFIX,jmsyzj.com,AdBlock -- DOMAIN-SUFFIX,jmxlaser.com,AdBlock -- DOMAIN-SUFFIX,jndczg.com,AdBlock -- DOMAIN-SUFFIX,jnrsjm.com,AdBlock -- DOMAIN-SUFFIX,jnsdkjzs.com,AdBlock -- DOMAIN-SUFFIX,jnsz.net.cn,AdBlock -- DOMAIN-SUFFIX,jnyngg.cn,AdBlock -- DOMAIN-SUFFIX,johtzj.com,AdBlock -- DOMAIN-SUFFIX,jointreport-switch.com,AdBlock -- DOMAIN-SUFFIX,jossuer.net,AdBlock -- DOMAIN-SUFFIX,joyfuldoors.com,AdBlock -- DOMAIN-SUFFIX,jp88.cc,AdBlock -- DOMAIN-SUFFIX,jpg.cooguo.com,AdBlock -- DOMAIN-SUFFIX,jpg.inte.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,jph.itiexue.net,AdBlock -- DOMAIN-SUFFIX,jpush.cn,AdBlock -- DOMAIN-SUFFIX,jpush.html5.qq.com,AdBlock -- DOMAIN-SUFFIX,jqmt.qq.com,AdBlock -- DOMAIN-SUFFIX,jqz9.com,AdBlock -- DOMAIN-SUFFIX,jrdkc.com,AdBlock -- DOMAIN-SUFFIX,jrhaigou.com,AdBlock -- DOMAIN-SUFFIX,jrpt.jrptweb.org,AdBlock -- DOMAIN-SUFFIX,js.05sun.com,AdBlock -- DOMAIN-SUFFIX,js.133u.com,AdBlock -- DOMAIN-SUFFIX,js.139y.com,AdBlock -- DOMAIN-SUFFIX,js.1688988.com,AdBlock -- DOMAIN-SUFFIX,js.2011.8684.com,AdBlock -- DOMAIN-SUFFIX,js.45bubu.com,AdBlock -- DOMAIN-SUFFIX,js.4hw.com.cn,AdBlock -- DOMAIN-SUFFIX,js.5068.com,AdBlock -- DOMAIN-SUFFIX,js.51taifu.com,AdBlock -- DOMAIN-SUFFIX,js.578965.com,AdBlock -- DOMAIN-SUFFIX,js.5iydz.com,AdBlock -- DOMAIN-SUFFIX,js.9669.cn,AdBlock -- DOMAIN-SUFFIX,js.adxkj.com,AdBlock -- DOMAIN-SUFFIX,js.bju888.com,AdBlock -- DOMAIN-SUFFIX,js.bxwns.com,AdBlock -- DOMAIN-SUFFIX,js.bxwxtxt.com,AdBlock -- DOMAIN-SUFFIX,js.cdjqjy.com,AdBlock -- DOMAIN-SUFFIX,js.cncrk.com,AdBlock -- DOMAIN-SUFFIX,js.cnmo.com,AdBlock -- DOMAIN-SUFFIX,js.cnscdj.com,AdBlock -- DOMAIN-SUFFIX,js.ctags.cn,AdBlock -- DOMAIN-SUFFIX,js.daxueshengqiandai.com,AdBlock -- DOMAIN-SUFFIX,js.dkqapp.cn,AdBlock -- DOMAIN-SUFFIX,js.duotegame.com,AdBlock -- DOMAIN-SUFFIX,js.ea3w.com,AdBlock -- DOMAIN-SUFFIX,js.feitian001.com,AdBlock -- DOMAIN-SUFFIX,js.fengniao.com,AdBlock -- DOMAIN-SUFFIX,js.firefang.cn,AdBlock -- DOMAIN-SUFFIX,js.gewuwen.com,AdBlock -- DOMAIN-SUFFIX,js.hkslg520.com,AdBlock -- DOMAIN-SUFFIX,js.hslyqs.com,AdBlock -- DOMAIN-SUFFIX,js.icast.cn,AdBlock -- DOMAIN-SUFFIX,js.idgdmg.com.cn,AdBlock -- DOMAIN-SUFFIX,js.jianbaimei.com,AdBlock -- DOMAIN-SUFFIX,js.jxabp.com.cn,AdBlock -- DOMAIN-SUFFIX,js.lieqitianxia.cn,AdBlock -- DOMAIN-SUFFIX,js.mbaidu.top,AdBlock -- DOMAIN-SUFFIX,js.mingxianshanghang.cn,AdBlock -- DOMAIN-SUFFIX,js.mnkan.com,AdBlock -- DOMAIN-SUFFIX,js.moatads.com,AdBlock -- DOMAIN-SUFFIX,js.mumayi.net,AdBlock -- DOMAIN-SUFFIX,js.paochala.net,AdBlock -- DOMAIN-SUFFIX,js.ptmind.com,AdBlock -- DOMAIN-SUFFIX,js.pub.tom.com,AdBlock -- DOMAIN-SUFFIX,js.pyangzi.com,AdBlock -- DOMAIN-SUFFIX,js.revsci.net,AdBlock -- DOMAIN-SUFFIX,js.ruiwen.com,AdBlock -- DOMAIN-SUFFIX,js.saiqizhi.com,AdBlock -- DOMAIN-SUFFIX,js.sanwen.net,AdBlock -- DOMAIN-SUFFIX,js.soduso.cc,AdBlock -- DOMAIN-SUFFIX,js.soonyou123.com,AdBlock -- DOMAIN-SUFFIX,js.start1999.com,AdBlock -- DOMAIN-SUFFIX,js.szande.com.cn,AdBlock -- DOMAIN-SUFFIX,js.ubaike.cn,AdBlock -- DOMAIN-SUFFIX,js.um0592.com,AdBlock -- DOMAIN-SUFFIX,js.union-wifi.com,AdBlock -- DOMAIN-SUFFIX,js.wo-x.cn,AdBlock -- DOMAIN-SUFFIX,js.wu65.com,AdBlock -- DOMAIN-SUFFIX,js.xiansuper.com,AdBlock -- DOMAIN-SUFFIX,js.xtgreat.com,AdBlock -- DOMAIN-SUFFIX,js.xuexila.com,AdBlock -- DOMAIN-SUFFIX,js.ydeprint.com,AdBlock -- DOMAIN-SUFFIX,js.yixui.com,AdBlock -- DOMAIN-SUFFIX,js.ylunion.com,AdBlock -- DOMAIN-SUFFIX,js.yoyi.tv,AdBlock -- DOMAIN-SUFFIX,js.zol.com.cn,AdBlock -- DOMAIN-SUFFIX,js.zyrfanli.com,AdBlock -- DOMAIN-SUFFIX,js1.2abc8.com,AdBlock -- DOMAIN-SUFFIX,js1.nend.net,AdBlock -- DOMAIN-SUFFIX,js-1.pchome.net,AdBlock -- DOMAIN-SUFFIX,js1.xbaixing.com,AdBlock -- DOMAIN-SUFFIX,js1.zuocai.tv,AdBlock -- DOMAIN-SUFFIX,js1151.yongkang6.com,AdBlock -- DOMAIN-SUFFIX,js1151.zhudiaosz.com,AdBlock -- DOMAIN-SUFFIX,js1157.yongkang6.com,AdBlock -- DOMAIN-SUFFIX,js123.0937jyg.com,AdBlock -- DOMAIN-SUFFIX,js1516.0937jyg.com,AdBlock -- DOMAIN-SUFFIX,js1517.0937jyg.com,AdBlock -- DOMAIN-SUFFIX,js205.dupinpu.com,AdBlock -- DOMAIN-SUFFIX,js2254.hfxcsl.cn,AdBlock -- DOMAIN-SUFFIX,js2553.xjzyq.com,AdBlock -- DOMAIN-SUFFIX,js257.0937jyg.com,AdBlock -- DOMAIN-SUFFIX,js2672.xjzyq.com,AdBlock -- DOMAIN-SUFFIX,js3492.yongkang6.com,AdBlock -- DOMAIN-SUFFIX,js3743.yongkang6.com,AdBlock -- DOMAIN-SUFFIX,js3768.zhudiaosz.com,AdBlock -- DOMAIN-SUFFIX,js3810.yongkang6.com,AdBlock -- DOMAIN-SUFFIX,js3810.zhudiaosz.com,AdBlock -- DOMAIN-SUFFIX,js4.eastmoney.com,AdBlock -- DOMAIN-SUFFIX,js412.0937jyg.com,AdBlock -- DOMAIN-SUFFIX,js412.yexfes.com,AdBlock -- DOMAIN-SUFFIX,js412.yqjxzw.com,AdBlock -- DOMAIN-SUFFIX,js4163.yongkang6.com,AdBlock -- DOMAIN-SUFFIX,js4273.zhudiaosz.com,AdBlock -- DOMAIN-SUFFIX,js453.zhudiaosz.com,AdBlock -- DOMAIN-SUFFIX,js50.yxlady.com,AdBlock -- DOMAIN-SUFFIX,js5162.yongkang6.com,AdBlock -- DOMAIN-SUFFIX,js6882.jianbangjiaoyu.com,AdBlock -- DOMAIN-SUFFIX,js6882.mengchengbao.com,AdBlock -- DOMAIN-SUFFIX,js7004.hnfpgm.com,AdBlock -- DOMAIN-SUFFIX,js7129.dlkjgjmy.com,AdBlock -- DOMAIN-SUFFIX,js7129.shxqeps.com,AdBlock -- DOMAIN-SUFFIX,js7152.shxqeps.com,AdBlock -- DOMAIN-SUFFIX,js74.0937jyg.com,AdBlock -- DOMAIN-SUFFIX,js74.yexfes.com,AdBlock -- DOMAIN-SUFFIX,js74.yqjxzw.com,AdBlock -- DOMAIN-SUFFIX,js7405.mengchengbao.com,AdBlock -- DOMAIN-SUFFIX,js84.enyayinxiang.com,AdBlock -- DOMAIN-SUFFIX,js883.hnfpgm.com,AdBlock -- DOMAIN-SUFFIX,js883.yongkang6.com,AdBlock -- DOMAIN-SUFFIX,js9318.bllzgqbyp.com,AdBlock -- DOMAIN-SUFFIX,jsadt.com,AdBlock -- DOMAIN-SUFFIX,js-apac-ss.ysm.yahoo.com,AdBlock -- DOMAIN-SUFFIX,jsb.qianzhan.com,AdBlock -- DOMAIN-SUFFIX,jsc.adskeeper.co.uk,AdBlock -- DOMAIN-SUFFIX,jsc.marketgid.com,AdBlock -- DOMAIN-SUFFIX,jsc.mgid.com,AdBlock -- DOMAIN-SUFFIX,jscdn.99pps.com,AdBlock -- DOMAIN-SUFFIX,jscode.jbzj.com,AdBlock -- DOMAIN-SUFFIX,jsjs.nthyn.com,AdBlock -- DOMAIN-SUFFIX,jskrnekewe.mofans.net,AdBlock -- DOMAIN-SUFFIX,jsm.39yst.com,AdBlock -- DOMAIN-SUFFIX,jsm.9939.com,AdBlock -- DOMAIN-SUFFIX,jsmwd.com,AdBlock -- DOMAIN-SUFFIX,jsnp.golden1.sogou.com,AdBlock -- DOMAIN-SUFFIX,jsnywl.kfi8.com,AdBlock -- DOMAIN-SUFFIX,json.gewuwen.com,AdBlock -- DOMAIN-SUFFIX,jspg.cc,AdBlock -- DOMAIN-SUFFIX,jsqmt.qq.com,AdBlock -- DOMAIN-SUFFIX,jssd.uumeitu.com,AdBlock -- DOMAIN-SUFFIX,jt.yunxiufang.net,AdBlock -- DOMAIN-SUFFIX,jtug.code.poyang.com,AdBlock -- DOMAIN-SUFFIX,jtxh.net,AdBlock -- DOMAIN-SUFFIX,jtys8.com,AdBlock -- DOMAIN-SUFFIX,ju33.com,AdBlock -- DOMAIN-SUFFIX,juicyads.com,AdBlock -- DOMAIN-SUFFIX,jump.luna.58.com,AdBlock -- DOMAIN-SUFFIX,jumpe.58xmgys.com,AdBlock -- DOMAIN-SUFFIX,jumpluna.58.com,AdBlock -- DOMAIN-SUFFIX,jumpm.58xmgys.com,AdBlock -- DOMAIN-SUFFIX,jundazulin.com,AdBlock -- DOMAIN-SUFFIX,junfull.com,AdBlock -- DOMAIN-SUFFIX,juren0.com,AdBlock -- DOMAIN-SUFFIX,jusha.com,AdBlock -- DOMAIN-SUFFIX,jutou5.com,AdBlock -- DOMAIN-SUFFIX,juzi.cn,AdBlock -- DOMAIN-SUFFIX,juzilm.com,AdBlock -- DOMAIN-SUFFIX,jwg365.cn,AdBlock -- DOMAIN-SUFFIX,jwpltx.com,AdBlock -- DOMAIN-SUFFIX,jwqj.net,AdBlock -- DOMAIN-SUFFIX,jwz.3conline.com,AdBlock -- DOMAIN-SUFFIX,jx5m.com,AdBlock -- DOMAIN-SUFFIX,jxad.jx163.com,AdBlock -- DOMAIN-SUFFIX,jxbjt.com,AdBlock -- DOMAIN-SUFFIX,jxfxsw.com,AdBlock -- DOMAIN-SUFFIX,jxjzny.com,AdBlock -- DOMAIN-SUFFIX,jxlog.istreamsche.com,AdBlock -- DOMAIN-SUFFIX,jxlqgs.com,AdBlock -- DOMAIN-SUFFIX,jxxiangchu.com,AdBlock -- DOMAIN-SUFFIX,jyc.njxczy.com,AdBlock -- DOMAIN-SUFFIX,jyd.fjzdmy.com,AdBlock -- DOMAIN-SUFFIX,jystea.com,AdBlock -- DOMAIN-SUFFIX,jyz.fjtzjy.com,AdBlock -- DOMAIN-SUFFIX,jzkapp.com,AdBlock -- DOMAIN-SUFFIX,jzm81.com,AdBlock -- DOMAIN-SUFFIX,k.85wa.cn,AdBlock -- DOMAIN-SUFFIX,k.ctsywy.com,AdBlock -- DOMAIN-SUFFIX,k1w5.me,AdBlock -- DOMAIN-SUFFIX,k2team.kyiv.ua,AdBlock -- DOMAIN-SUFFIX,k3bos.com,AdBlock -- DOMAIN-SUFFIX,kafka8.com,AdBlock -- DOMAIN-SUFFIX,kaitongyewu.com,AdBlock -- DOMAIN-SUFFIX,karma.mdpcdn.com,AdBlock -- DOMAIN-SUFFIX,kas.keydot.net,AdBlock -- DOMAIN-SUFFIX,kawa11.space,AdBlock -- DOMAIN-SUFFIX,kbnetworkz.s3.amazonaws.com,AdBlock -- DOMAIN-SUFFIX,kddtri.cn,AdBlock -- DOMAIN-SUFFIX,kejet.com,AdBlock -- DOMAIN-SUFFIX,kejet.net,AdBlock -- DOMAIN-SUFFIX,kele4.com,AdBlock -- DOMAIN-SUFFIX,ker.pic2pic.site,AdBlock -- DOMAIN-SUFFIX,kermit.macnn.com,AdBlock -- DOMAIN-SUFFIX,keryt.jnservo.com,AdBlock -- DOMAIN-SUFFIX,ketchapp.org,AdBlock -- DOMAIN-SUFFIX,keydot.net,AdBlock -- DOMAIN-SUFFIX,keyrun.cn,AdBlock -- DOMAIN-SUFFIX,keyrun.com,AdBlock -- DOMAIN-SUFFIX,keyshot.cc,AdBlock -- DOMAIN-SUFFIX,keystone.mwbsys.com,AdBlock -- DOMAIN-SUFFIX,keyyou.net,AdBlock -- DOMAIN-SUFFIX,kfewaz.zh1155.com,AdBlock -- DOMAIN-SUFFIX,kfhuihe.net,AdBlock -- DOMAIN-SUFFIX,kfluoa.com,AdBlock -- DOMAIN-SUFFIX,kgcjgsa8.net,AdBlock -- DOMAIN-SUFFIX,kgmobilestat.kugou.com,AdBlock -- DOMAIN-SUFFIX,kguke.com,AdBlock -- DOMAIN-SUFFIX,kho3au7l4z.me,AdBlock -- DOMAIN-SUFFIX,kicnse.com,AdBlock -- DOMAIN-SUFFIX,kingdeecn.cn,AdBlock -- DOMAIN-SUFFIX,kingwam.com,AdBlock -- DOMAIN-SUFFIX,kio.quanliyouxi.cn,AdBlock -- DOMAIN-SUFFIX,kiss.blockplus.cc,AdBlock -- DOMAIN-SUFFIX,kjgen.com,AdBlock -- DOMAIN-SUFFIX,kk7kk.com,AdBlock -- DOMAIN-SUFFIX,kkcaicai.com,AdBlock -- DOMAIN-SUFFIX,kkpgv.kankan.com,AdBlock -- DOMAIN-SUFFIX,kkpgv2.kankan.com,AdBlock -- DOMAIN-SUFFIX,kld666.com,AdBlock -- DOMAIN-SUFFIX,kldmm.com,AdBlock -- DOMAIN-SUFFIX,klsdmr.com,AdBlock -- DOMAIN-SUFFIX,kl-toys.com,AdBlock -- DOMAIN-SUFFIX,klz28.com,AdBlock -- DOMAIN-SUFFIX,km.jianduankm.com,AdBlock -- DOMAIN-SUFFIX,kmadou.com,AdBlock -- DOMAIN-SUFFIX,kmd365.com,AdBlock -- DOMAIN-SUFFIX,kmwqxqh.com,AdBlock -- DOMAIN-SUFFIX,kn.aishake.cn,AdBlock -- DOMAIN-SUFFIX,kn.archrug.com,AdBlock -- DOMAIN-SUFFIX,kn.barnfps.com,AdBlock -- DOMAIN-SUFFIX,kn.bjbrtc.com,AdBlock -- DOMAIN-SUFFIX,kn.chapnap.com,AdBlock -- DOMAIN-SUFFIX,kn.chgdf.cn,AdBlock -- DOMAIN-SUFFIX,kn.czzdf.com,AdBlock -- DOMAIN-SUFFIX,kn.dyscsm.cn,AdBlock -- DOMAIN-SUFFIX,kn.gzcce.cn,AdBlock -- DOMAIN-SUFFIX,kn.jzhrty.cn,AdBlock -- DOMAIN-SUFFIX,kn.nykps.com,AdBlock -- DOMAIN-SUFFIX,kn.qhdfxkj.com,AdBlock -- DOMAIN-SUFFIX,kn.qqqmdq.com,AdBlock -- DOMAIN-SUFFIX,kn.qzdaren.com,AdBlock -- DOMAIN-SUFFIX,kn.ynmhg.cn,AdBlock -- DOMAIN-SUFFIX,kn.zstjy.com,AdBlock -- DOMAIN-SUFFIX,kn.zzdahan.com,AdBlock -- DOMAIN-SUFFIX,knet.cn,AdBlock -- DOMAIN-SUFFIX,knnwdyou.com,AdBlock -- DOMAIN-SUFFIX,kob.adxkj.com,AdBlock -- DOMAIN-SUFFIX,kochava.com,AdBlock -- DOMAIN-SUFFIX,kod4pc293.com,AdBlock -- DOMAIN-SUFFIX,koowo.com,AdBlock -- DOMAIN-SUFFIX,koukou7.com,AdBlock -- DOMAIN-SUFFIX,kovjo.com,AdBlock -- DOMAIN-SUFFIX,kqy1.com,AdBlock -- DOMAIN-SUFFIX,kr.sybspools.com,AdBlock -- DOMAIN-SUFFIX,krux.net,AdBlock -- DOMAIN-SUFFIX,ksdsuzhou.com,AdBlock -- DOMAIN-SUFFIX,ksr.juuhe.com,AdBlock -- DOMAIN-SUFFIX,ksrsy.com,AdBlock -- DOMAIN-SUFFIX,kstj.baidu.com,AdBlock -- DOMAIN-SUFFIX,kt220.com,AdBlock -- DOMAIN-SUFFIX,ktivn.uranus.sogou.com,AdBlock -- DOMAIN-SUFFIX,ktunions.com,AdBlock -- DOMAIN-SUFFIX,ktv0311.com,AdBlock -- DOMAIN-SUFFIX,ku63.com,AdBlock -- DOMAIN-SUFFIX,ku9377.com,AdBlock -- DOMAIN-SUFFIX,kuaigao.rrsdl.com,AdBlock -- DOMAIN-SUFFIX,kuaikaiapp.com,AdBlock -- DOMAIN-SUFFIX,kuaikan.netmon.360safe.com,AdBlock -- DOMAIN-SUFFIX,kuaipai666.cn,AdBlock -- DOMAIN-SUFFIX,kuaizip.com,AdBlock -- DOMAIN-SUFFIX,kualianyingxiao.cn,AdBlock -- DOMAIN-SUFFIX,kudifish.com,AdBlock -- DOMAIN-SUFFIX,kuguopush.com,AdBlock -- DOMAIN-SUFFIX,kumihua.com,AdBlock -- DOMAIN-SUFFIX,kuwoyy.com,AdBlock -- DOMAIN-SUFFIX,kuyic.m.gxwztv.com,AdBlock -- DOMAIN-SUFFIX,kuzai.cooguo.com,AdBlock -- DOMAIN-SUFFIX,kw.ra.icast.cn,AdBlock -- DOMAIN-SUFFIX,kwmsg.kuwo.cn,AdBlock -- DOMAIN-SUFFIX,kwurl.ucweb.com,AdBlock -- DOMAIN-SUFFIX,kxlogo.knet.cn,AdBlock -- DOMAIN-SUFFIX,kxmav2.com,AdBlock -- DOMAIN-SUFFIX,kxrxh.com,AdBlock -- DOMAIN-SUFFIX,kyad88.com,AdBlock -- DOMAIN-SUFFIX,kyzhecmvpiaw.com,AdBlock -- DOMAIN-SUFFIX,l.adiers.com,AdBlock -- DOMAIN-SUFFIX,l.betrad.com,AdBlock -- DOMAIN-SUFFIX,l.minisplat.cn,AdBlock -- DOMAIN-SUFFIX,l.mnjkw.cn,AdBlock -- DOMAIN-SUFFIX,l.supfast.net,AdBlock -- DOMAIN-SUFFIX,l.ujian.cc,AdBlock -- DOMAIN-SUFFIX,l.yidianzixun.com,AdBlock -- DOMAIN-SUFFIX,l1.soarfi.cn,AdBlock -- DOMAIN-SUFFIX,l2.soarfi.cn,AdBlock -- DOMAIN-SUFFIX,l9bdhcgihw.neihanw.com,AdBlock -- DOMAIN-SUFFIX,labs.ra.icast.cn,AdBlock -- DOMAIN-SUFFIX,laigame7.com,AdBlock -- DOMAIN-SUFFIX,laiququan.com,AdBlock -- DOMAIN-SUFFIX,lajizhan.org,AdBlock -- DOMAIN-SUFFIX,lan.btwan5.com,AdBlock -- DOMAIN-SUFFIX,langchars.com,AdBlock -- DOMAIN-SUFFIX,langjiyisheng.com,AdBlock -- DOMAIN-SUFFIX,lansha.tv,AdBlock -- DOMAIN-SUFFIX,lanxiangji.com,AdBlock -- DOMAIN-SUFFIX,laomaotao.net,AdBlock -- DOMAIN-SUFFIX,laoqu123.com,AdBlock -- DOMAIN-SUFFIX,lashou1000.com,AdBlock -- DOMAIN-SUFFIX,lb.gtimg.com,AdBlock -- DOMAIN-SUFFIX,lb.statsevent.com,AdBlock -- DOMAIN-SUFFIX,lbstatic-a.akamaihd.net,AdBlock -- DOMAIN-SUFFIX,lbszb.tongbu.com,AdBlock -- DOMAIN-SUFFIX,lc.jiathis.com,AdBlock -- DOMAIN-SUFFIX,lcs.dev.surepush.cn,AdBlock -- DOMAIN-SUFFIX,ld.mediaget.com,AdBlock -- DOMAIN-SUFFIX,ldpgl.code.mytanwan.com,AdBlock -- DOMAIN-SUFFIX,lds.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,lds.zui.com,AdBlock -- DOMAIN-SUFFIX,ldy.350.com,AdBlock -- DOMAIN-SUFFIX,ldy.adqku.cn,AdBlock -- DOMAIN-SUFFIX,le4le.com,AdBlock -- DOMAIN-SUFFIX,leadbolt.net,AdBlock -- DOMAIN-SUFFIX,leadboltads.net,AdBlock -- DOMAIN-SUFFIX,leadboltapps.net,AdBlock -- DOMAIN-SUFFIX,leadboltmobile.net,AdBlock -- DOMAIN-SUFFIX,ledou.dl.uu.cc,AdBlock -- DOMAIN-SUFFIX,leeyuoxs.com,AdBlock -- DOMAIN-SUFFIX,legozu.com,AdBlock -- DOMAIN-SUFFIX,lele999.com,AdBlock -- DOMAIN-SUFFIX,lenzmx.com,AdBlock -- DOMAIN-SUFFIX,lessplay.com,AdBlock -- DOMAIN-SUFFIX,letv.irs01.com,AdBlock -- DOMAIN-SUFFIX,leztc.com,AdBlock -- DOMAIN-SUFFIX,lflili.com,AdBlock -- DOMAIN-SUFFIX,lfyuanai.com,AdBlock -- DOMAIN-SUFFIX,lg2.jointreport-switch.com,AdBlock -- DOMAIN-SUFFIX,lg4.jointreport-switch.com,AdBlock -- DOMAIN-SUFFIX,lhafy.com,AdBlock -- DOMAIN-SUFFIX,lhengilin.com,AdBlock -- DOMAIN-SUFFIX,lhusy.com,AdBlock -- DOMAIN-SUFFIX,li.anyysz.com,AdBlock -- DOMAIN-SUFFIX,liangao.com,AdBlock -- DOMAIN-SUFFIX,liangziweixg.com,AdBlock -- DOMAIN-SUFFIX,lib.haotv8.com,AdBlock -- DOMAIN-SUFFIX,liba.haotv8.com,AdBlock -- DOMAIN-SUFFIX,libs.tvmao.cn,AdBlock -- DOMAIN-SUFFIX,license.lumion3d.com,AdBlock -- DOMAIN-SUFFIX,license.lumion3d.net,AdBlock -- DOMAIN-SUFFIX,licenses.ashampoo.com,AdBlock -- DOMAIN-SUFFIX,licensing.tableausoftware.com,AdBlock -- DOMAIN-SUFFIX,life.e0575.com,AdBlock -- DOMAIN-SUFFIX,life.imagepix.org,AdBlock -- DOMAIN-SUFFIX,lightson.vpsboard.com,AdBlock -- DOMAIN-SUFFIX,linezing.com,AdBlock -- DOMAIN-SUFFIX,lingdian98.com,AdBlock -- DOMAIN-SUFFIX,linkbide.com,AdBlock -- DOMAIN-SUFFIX,linkeye.ximalaya.com,AdBlock -- DOMAIN-SUFFIX,linkpage.cn,AdBlock -- DOMAIN-SUFFIX,links.services.disqus.com,AdBlock -- DOMAIN-SUFFIX,linktech.cn,AdBlock -- DOMAIN-SUFFIX,linyao.dxsdb.com,AdBlock -- DOMAIN-SUFFIX,lishuanghao.com,AdBlock -- DOMAIN-SUFFIX,listenother.com,AdBlock -- DOMAIN-SUFFIX,listlog.baofeng.net,AdBlock -- DOMAIN-SUFFIX,liuliguo.com,AdBlock -- DOMAIN-SUFFIX,live.tvpot.daum.net,AdBlock -- DOMAIN-SUFFIX,livehapp.com,AdBlock -- DOMAIN-SUFFIX,livep.l.ott.video.qq.com,AdBlock -- DOMAIN-SUFFIX,lives.l.cp81.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,lives.l.ott.video.qq.com,AdBlock -- DOMAIN-SUFFIX,lives.l.qq.com,AdBlock -- DOMAIN-SUFFIX,liveupdate.mac.sandai.net,AdBlock -- DOMAIN-SUFFIX,lixiangmo.com,AdBlock -- DOMAIN-SUFFIX,ljrtb.cn,AdBlock -- DOMAIN-SUFFIX,lkf1.m.sanhao3.com,AdBlock -- DOMAIN-SUFFIX,ll.a.hulu.com,AdBlock -- DOMAIN-SUFFIX,ll.gxsky.com,AdBlock -- DOMAIN-SUFFIX,ll.hudong.com,AdBlock -- DOMAIN-SUFFIX,ll.songlaoban.cn,AdBlock -- DOMAIN-SUFFIX,ll38.com,AdBlock -- DOMAIN-SUFFIX,lm.dawenxue.org,AdBlock -- DOMAIN-SUFFIX,lm.licenses.adobe.com,AdBlock -- DOMAIN-SUFFIX,lm.souid.com,AdBlock -- DOMAIN-SUFFIX,lm.xiashu.la,AdBlock -- DOMAIN-SUFFIX,lml.jfjsp.com,AdBlock -- DOMAIN-SUFFIX,lmlicenses.wip4.adobe.com,AdBlock -- DOMAIN-SUFFIX,lmwap.awtks.com,AdBlock -- DOMAIN-SUFFIX,lndjj.com,AdBlock -- DOMAIN-SUFFIX,lnk0.com,AdBlock -- DOMAIN-SUFFIX,lnk8z.com,AdBlock -- DOMAIN-SUFFIX,lnr2.com,AdBlock -- DOMAIN-SUFFIX,load77.exelator.com,AdBlock -- DOMAIN-SUFFIX,loading.baofeng5.baofeng.net,AdBlock -- DOMAIN-SUFFIX,loadm.exelator.com,AdBlock -- DOMAIN-SUFFIX,loandatec.com,AdBlock -- DOMAIN-SUFFIX,localnetwork.uop,AdBlock -- DOMAIN-SUFFIX,localytics.com,AdBlock -- DOMAIN-SUFFIX,location.ximalaya.com,AdBlock -- DOMAIN-SUFFIX,locdrop.query.yahoo.com,AdBlock -- DOMAIN-SUFFIX,log1.17173.com,AdBlock -- DOMAIN-SUFFIX,log1.molitv.cn,AdBlock -- DOMAIN-SUFFIX,log2.air.yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,log2.molitv.cn,AdBlock -- DOMAIN-SUFFIX,log-dmp.suishenyun.cn,AdBlock -- DOMAIN-SUFFIX,logonext.tv.kuyun.com,AdBlock -- DOMAIN-SUFFIX,logoshejishi.com,AdBlock -- DOMAIN-SUFFIX,logstat.caixin.com,AdBlock -- DOMAIN-SUFFIX,logupdate.avlyun.sec.miui.com,AdBlock -- DOMAIN-SUFFIX,lol.pnhfc.com,AdBlock -- DOMAIN-SUFFIX,loldy.jiangmg.com,AdBlock -- DOMAIN-SUFFIX,lomark.cn,AdBlock -- DOMAIN-SUFFIX,londonprivaterentals.standard.co.uk,AdBlock -- DOMAIN-SUFFIX,looky.hyves.org,AdBlock -- DOMAIN-SUFFIX,lottery.kuaiya.cn,AdBlock -- DOMAIN-SUFFIX,lotuseed.com,AdBlock -- DOMAIN-SUFFIX,lovestyl.com,AdBlock -- DOMAIN-SUFFIX,lovfp.com,AdBlock -- DOMAIN-SUFFIX,lp.jiuzhilan.com,AdBlock -- DOMAIN-SUFFIX,lp.startapp.com,AdBlock -- DOMAIN-SUFFIX,lp1901.com,AdBlock -- DOMAIN-SUFFIX,lpsxssm.com,AdBlock -- DOMAIN-SUFFIX,lqmohun.com,AdBlock -- DOMAIN-SUFFIX,lrswl.com,AdBlock -- DOMAIN-SUFFIX,ls.webmd.com,AdBlock -- DOMAIN-SUFFIX,lsxmg.com,AdBlock -- DOMAIN-SUFFIX,ltcprtc.com,AdBlock -- DOMAIN-SUFFIX,ltheanine.cn,AdBlock -- DOMAIN-SUFFIX,lthxz.cn,AdBlock -- DOMAIN-SUFFIX,lu.sogou.com,AdBlock -- DOMAIN-SUFFIX,lubosheng.cn,AdBlock -- DOMAIN-SUFFIX,lucting.cn,AdBlock -- DOMAIN-SUFFIX,lufax.com,AdBlock -- DOMAIN-SUFFIX,luotediao.net,AdBlock -- DOMAIN-SUFFIX,lvjian66.com,AdBlock -- DOMAIN-SUFFIX,lw1.cdmediaworld.com,AdBlock -- DOMAIN-SUFFIX,lw2.gamecopyworld.com,AdBlock -- DOMAIN-SUFFIX,lwnne.cn,AdBlock -- DOMAIN-SUFFIX,lwq.wangketuan.com,AdBlock -- DOMAIN-SUFFIX,lx167.com,AdBlock -- DOMAIN-SUFFIX,lxcdn.dl.files.xiaomi.net,AdBlock -- DOMAIN-SUFFIX,lxqcgj.com,AdBlock -- DOMAIN-SUFFIX,lxting.com,AdBlock -- DOMAIN-SUFFIX,lx-upload-log.yidianzixun.com,AdBlock -- DOMAIN-SUFFIX,lyaeccn.com,AdBlock -- DOMAIN-SUFFIX,lyapi.1391.com,AdBlock -- DOMAIN-SUFFIX,lycos-eu.imrworldwide.com,AdBlock -- DOMAIN-SUFFIX,lyhdream.com,AdBlock -- DOMAIN-SUFFIX,lyjk.1391.com,AdBlock -- DOMAIN-SUFFIX,lynndollin.com,AdBlock -- DOMAIN-SUFFIX,lyrymy.com,AdBlock -- DOMAIN-SUFFIX,lytubaobao.com,AdBlock -- DOMAIN-SUFFIX,lyunsd.cn,AdBlock -- DOMAIN-SUFFIX,lyztdz.com,AdBlock -- DOMAIN-SUFFIX,lz.chaelc.com,AdBlock -- DOMAIN-SUFFIX,lz.whafwl.com,AdBlock -- DOMAIN-SUFFIX,lzjycy.com,AdBlock -- DOMAIN-SUFFIX,lzmm8.com,AdBlock -- DOMAIN-SUFFIX,m.027blzs.com,AdBlock -- DOMAIN-SUFFIX,m.0531mnk.net,AdBlock -- DOMAIN-SUFFIX,m.107279.com,AdBlock -- DOMAIN-SUFFIX,m.118ex.cn,AdBlock -- DOMAIN-SUFFIX,m.1768.com,AdBlock -- DOMAIN-SUFFIX,m.1919388.net,AdBlock -- DOMAIN-SUFFIX,m.28487.net,AdBlock -- DOMAIN-SUFFIX,m.3987.com,AdBlock -- DOMAIN-SUFFIX,m.495495.com,AdBlock -- DOMAIN-SUFFIX,m.51xmgys.com,AdBlock -- DOMAIN-SUFFIX,m.52tushuo.com,AdBlock -- DOMAIN-SUFFIX,m.551144.com,AdBlock -- DOMAIN-SUFFIX,m.640640.com,AdBlock -- DOMAIN-SUFFIX,m.649649.com,AdBlock -- DOMAIN-SUFFIX,m.7180443.com,AdBlock -- DOMAIN-SUFFIX,m.77vcd.com,AdBlock -- DOMAIN-SUFFIX,m.937920.com,AdBlock -- DOMAIN-SUFFIX,m.abfirst.cn,AdBlock -- DOMAIN-SUFFIX,m.acaox.com,AdBlock -- DOMAIN-SUFFIX,m.achig.com,AdBlock -- DOMAIN-SUFFIX,m.ad.zhangyue.com,AdBlock -- DOMAIN-SUFFIX,m.adaog.com,AdBlock -- DOMAIN-SUFFIX,m.adxpop.com,AdBlock -- DOMAIN-SUFFIX,m.afoux.com,AdBlock -- DOMAIN-SUFFIX,m.anmeilai.net,AdBlock -- DOMAIN-SUFFIX,m.anzhuotan.com,AdBlock -- DOMAIN-SUFFIX,m.apxyz.com,AdBlock -- DOMAIN-SUFFIX,m.aqiudaohang.com,AdBlock -- DOMAIN-SUFFIX,m.assigned.cn,AdBlock -- DOMAIN-SUFFIX,m.aty.cp45.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,m.aty.snmsohu.aisee.tv,AdBlock -- DOMAIN-SUFFIX,m.axsre.com,AdBlock -- DOMAIN-SUFFIX,m.baidu.com.yiqisee.cn,AdBlock -- DOMAIN-SUFFIX,m.baidu.com.zhiduo.org,AdBlock -- DOMAIN-SUFFIX,m.bailingjiankang.com,AdBlock -- DOMAIN-SUFFIX,m.baiyangzs.com,AdBlock -- DOMAIN-SUFFIX,m.bapkt.com,AdBlock -- DOMAIN-SUFFIX,m.bbvjs.com,AdBlock -- DOMAIN-SUFFIX,m.bdiae.com,AdBlock -- DOMAIN-SUFFIX,m.beacon.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,m.bentengcn.com,AdBlock -- DOMAIN-SUFFIX,m.biquge5200.cc,AdBlock -- DOMAIN-SUFFIX,m.bokanedu.net,AdBlock -- DOMAIN-SUFFIX,m.bsnnk.com,AdBlock -- DOMAIN-SUFFIX,m.bss.pandora.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,m.bvoer.com,AdBlock -- DOMAIN-SUFFIX,m.bvosv.com,AdBlock -- DOMAIN-SUFFIX,m.casbanlly.com,AdBlock -- DOMAIN-SUFFIX,m.cbeif.com,AdBlock -- DOMAIN-SUFFIX,m.ccunf.com,AdBlock -- DOMAIN-SUFFIX,m.cdfzcz.com,AdBlock -- DOMAIN-SUFFIX,m.cenrs.com,AdBlock -- DOMAIN-SUFFIX,m.chenhuia.com,AdBlock -- DOMAIN-SUFFIX,m.chexiw.com,AdBlock -- DOMAIN-SUFFIX,m.chfuw.com,AdBlock -- DOMAIN-SUFFIX,m.cjieh.com,AdBlock -- DOMAIN-SUFFIX,m.ckikq.com,AdBlock -- DOMAIN-SUFFIX,m.clkservice.youdao.com,AdBlock -- DOMAIN-SUFFIX,m.cocounion.com,AdBlock -- DOMAIN-SUFFIX,m.codlw.com,AdBlock -- DOMAIN-SUFFIX,m.coenr.com,AdBlock -- DOMAIN-SUFFIX,m.couas.com,AdBlock -- DOMAIN-SUFFIX,m.cqytjzgc.com,AdBlock -- DOMAIN-SUFFIX,m.ctsywy.com,AdBlock -- DOMAIN-SUFFIX,m.cudaojia.com,AdBlock -- DOMAIN-SUFFIX,m.cuoas.com,AdBlock -- DOMAIN-SUFFIX,m.cuoss.com,AdBlock -- DOMAIN-SUFFIX,m.daishuxy.com,AdBlock -- DOMAIN-SUFFIX,m.dante2007.com,AdBlock -- DOMAIN-SUFFIX,m.data.mob.com,AdBlock -- DOMAIN-SUFFIX,m.dbaiz.com,AdBlock -- DOMAIN-SUFFIX,m.dgaoz.com,AdBlock -- DOMAIN-SUFFIX,m.diogv.com,AdBlock -- DOMAIN-SUFFIX,m.djhhy.com,AdBlock -- DOMAIN-SUFFIX,m.dnfeu.com,AdBlock -- DOMAIN-SUFFIX,m.doodlemobile.com,AdBlock -- DOMAIN-SUFFIX,m.dsjre.com,AdBlock -- DOMAIN-SUFFIX,m.du1du.org,AdBlock -- DOMAIN-SUFFIX,m.duias.com,AdBlock -- DOMAIN-SUFFIX,m.duobao999.com,AdBlock -- DOMAIN-SUFFIX,m.dxmci.com,AdBlock -- DOMAIN-SUFFIX,m.edo5.com,AdBlock -- DOMAIN-SUFFIX,m.ee-skin.com,AdBlock -- DOMAIN-SUFFIX,m.ee-vip.net,AdBlock -- DOMAIN-SUFFIX,m.efeiy.com,AdBlock -- DOMAIN-SUFFIX,m.ehxyz.com,AdBlock -- DOMAIN-SUFFIX,m.emgwq.com,AdBlock -- DOMAIN-SUFFIX,m.enjuk.com,AdBlock -- DOMAIN-SUFFIX,m.ennmt.com,AdBlock -- DOMAIN-SUFFIX,m.fbaix.com,AdBlock -- DOMAIN-SUFFIX,m.fbaot.com,AdBlock -- DOMAIN-SUFFIX,m.fcaot.com,AdBlock -- DOMAIN-SUFFIX,m.fcuit.com,AdBlock -- DOMAIN-SUFFIX,m.fecjf.cn,AdBlock -- DOMAIN-SUFFIX,m.feirs.com,AdBlock -- DOMAIN-SUFFIX,m.fengwanwl.com,AdBlock -- DOMAIN-SUFFIX,m.fenrs.com,AdBlock -- DOMAIN-SUFFIX,m.fhxsw.org,AdBlock -- DOMAIN-SUFFIX,m.fimky.com,AdBlock -- DOMAIN-SUFFIX,m.fkkse.com,AdBlock -- DOMAIN-SUFFIX,m.fkogs.com,AdBlock -- DOMAIN-SUFFIX,m.focuscat.com,AdBlock -- DOMAIN-SUFFIX,m.fouas.com,AdBlock -- DOMAIN-SUFFIX,m.foumm.com,AdBlock -- DOMAIN-SUFFIX,m.fstaw.com,AdBlock -- DOMAIN-SUFFIX,m.fwjoi.com,AdBlock -- DOMAIN-SUFFIX,m.fxbga.com,AdBlock -- DOMAIN-SUFFIX,m.fzyda.com,AdBlock -- DOMAIN-SUFFIX,m.gameyun907.net,AdBlock -- DOMAIN-SUFFIX,m.ganrs.com,AdBlock -- DOMAIN-SUFFIX,m.gbieg.com,AdBlock -- DOMAIN-SUFFIX,m.gcaij.com,AdBlock -- DOMAIN-SUFFIX,m.gcheg.com,AdBlock -- DOMAIN-SUFFIX,m.gdt.vip1790.cn,AdBlock -- DOMAIN-SUFFIX,m.gglay.com,AdBlock -- DOMAIN-SUFFIX,m.gtiou.com,AdBlock -- DOMAIN-SUFFIX,m.gtnde.com,AdBlock -- DOMAIN-SUFFIX,m.guaas.com,AdBlock -- DOMAIN-SUFFIX,m.guanren11.com,AdBlock -- DOMAIN-SUFFIX,m.guanren5.com,AdBlock -- DOMAIN-SUFFIX,m.guanren6.com,AdBlock -- DOMAIN-SUFFIX,m.guanren9.com,AdBlock -- DOMAIN-SUFFIX,m.guifei99.com,AdBlock -- DOMAIN-SUFFIX,m.gujinyue.com,AdBlock -- DOMAIN-SUFFIX,m.gwdqp.com,AdBlock -- DOMAIN-SUFFIX,m.gxkyl.com,AdBlock -- DOMAIN-SUFFIX,m.haowj.com.cn,AdBlock -- DOMAIN-SUFFIX,m.harbinbaojia.net,AdBlock -- DOMAIN-SUFFIX,m.hellomingpian.com,AdBlock -- DOMAIN-SUFFIX,m.heygugu.com,AdBlock -- DOMAIN-SUFFIX,m.hhllyt.com,AdBlock -- DOMAIN-SUFFIX,m.hissq.com,AdBlock -- DOMAIN-SUFFIX,m.hk7799.net,AdBlock -- DOMAIN-SUFFIX,m.hkmqp.com,AdBlock -- DOMAIN-SUFFIX,m.hmzsfmjc.com,AdBlock -- DOMAIN-SUFFIX,m.hogyp.com,AdBlock -- DOMAIN-SUFFIX,m.hot-mob.com,AdBlock -- DOMAIN-SUFFIX,m.hpfjy.com,AdBlock -- DOMAIN-SUFFIX,m.hpzyl.com,AdBlock -- DOMAIN-SUFFIX,m.hsbkr.com,AdBlock -- DOMAIN-SUFFIX,m.htper.com,AdBlock -- DOMAIN-SUFFIX,m.huanyuexpress.com,AdBlock -- DOMAIN-SUFFIX,m.huyulh.com,AdBlock -- DOMAIN-SUFFIX,m.hyzui.com,AdBlock -- DOMAIN-SUFFIX,m.icyrd.com,AdBlock -- DOMAIN-SUFFIX,m.ienkdaged.cn,AdBlock -- DOMAIN-SUFFIX,m.ienkdago.cn,AdBlock -- DOMAIN-SUFFIX,m.infvb.com,AdBlock -- DOMAIN-SUFFIX,m.irauz.com,AdBlock -- DOMAIN-SUFFIX,m.irkuj.com,AdBlock -- DOMAIN-SUFFIX,m.iruad.com,AdBlock -- DOMAIN-SUFFIX,m.ishowms.com,AdBlock -- DOMAIN-SUFFIX,m.jcwwxn.com,AdBlock -- DOMAIN-SUFFIX,m.jdaot.com,AdBlock -- DOMAIN-SUFFIX,m.jgkto.com,AdBlock -- DOMAIN-SUFFIX,m.jhcgood.com,AdBlock -- DOMAIN-SUFFIX,m.jieyixiu.com,AdBlock -- DOMAIN-SUFFIX,m.jiirz.com,AdBlock -- DOMAIN-SUFFIX,m.jinchaoyu.com,AdBlock -- DOMAIN-SUFFIX,m.jioeg.com,AdBlock -- DOMAIN-SUFFIX,m.jkert.com,AdBlock -- DOMAIN-SUFFIX,m.jlkja.com,AdBlock -- DOMAIN-SUFFIX,m.jltdbyq.com,AdBlock -- DOMAIN-SUFFIX,m.joyxv.com,AdBlock -- DOMAIN-SUFFIX,m.juyzr.com,AdBlock -- DOMAIN-SUFFIX,m.jwiyr.com,AdBlock -- DOMAIN-SUFFIX,m.jyhwt.cn,AdBlock -- DOMAIN-SUFFIX,m.kcooy.com,AdBlock -- DOMAIN-SUFFIX,m.kejet.net,AdBlock -- DOMAIN-SUFFIX,m.kewro.com,AdBlock -- DOMAIN-SUFFIX,m.khuoy.com,AdBlock -- DOMAIN-SUFFIX,m.kjfhe.com,AdBlock -- DOMAIN-SUFFIX,m.kjhfy.com,AdBlock -- DOMAIN-SUFFIX,m.kl6636.net,AdBlock -- DOMAIN-SUFFIX,m.ksttwz.com,AdBlock -- DOMAIN-SUFFIX,m.kubiqq.com,AdBlock -- DOMAIN-SUFFIX,m.kwjkd.com,AdBlock -- DOMAIN-SUFFIX,m.kxhie.com,AdBlock -- DOMAIN-SUFFIX,m.laigame7.net,AdBlock -- DOMAIN-SUFFIX,m.lancedu.com,AdBlock -- DOMAIN-SUFFIX,m.laojiayoufang.com,AdBlock -- DOMAIN-SUFFIX,m.laoqu123.com,AdBlock -- DOMAIN-SUFFIX,m.lfdydk.com,AdBlock -- DOMAIN-SUFFIX,m.lovezhishou.com,AdBlock -- DOMAIN-SUFFIX,m.lusrg.cn,AdBlock -- DOMAIN-SUFFIX,m.lyjz001.com,AdBlock -- DOMAIN-SUFFIX,m.lzida.com,AdBlock -- DOMAIN-SUFFIX,m.lzytt.com,AdBlock -- DOMAIN-SUFFIX,m.maopuzw.com,AdBlock -- DOMAIN-SUFFIX,m.mgogo.com,AdBlock -- DOMAIN-SUFFIX,m.mgsue.cn,AdBlock -- DOMAIN-SUFFIX,m.miaoxinqipei.com,AdBlock -- DOMAIN-SUFFIX,m.mightiger.net,AdBlock -- DOMAIN-SUFFIX,m.miiuv.com,AdBlock -- DOMAIN-SUFFIX,m.miupp.com,AdBlock -- DOMAIN-SUFFIX,m.mmkvi.com,AdBlock -- DOMAIN-SUFFIX,m.mouaa.com,AdBlock -- DOMAIN-SUFFIX,m.mqgpo.com,AdBlock -- DOMAIN-SUFFIX,m.mrtuo.com,AdBlock -- DOMAIN-SUFFIX,m.mtuoa.com,AdBlock -- DOMAIN-SUFFIX,m.mushizhubao.com,AdBlock -- DOMAIN-SUFFIX,m.mxguan.com,AdBlock -- DOMAIN-SUFFIX,m.nduop.com,AdBlock -- DOMAIN-SUFFIX,m.neijh.com,AdBlock -- DOMAIN-SUFFIX,m.nejup.com,AdBlock -- DOMAIN-SUFFIX,m.nernv.com,AdBlock -- DOMAIN-SUFFIX,m.nfkos.com,AdBlock -- DOMAIN-SUFFIX,m.niegg.com,AdBlock -- DOMAIN-SUFFIX,m.nmtouzi.com,AdBlock -- DOMAIN-SUFFIX,m.nnfiy.com,AdBlock -- DOMAIN-SUFFIX,m.nouaa.com,AdBlock -- DOMAIN-SUFFIX,m.nthtcs.com,AdBlock -- DOMAIN-SUFFIX,m.ntxiangtai.com,AdBlock -- DOMAIN-SUFFIX,m.nuxyz.cn,AdBlock -- DOMAIN-SUFFIX,m.nwxzs.com,AdBlock -- DOMAIN-SUFFIX,m.nxypz.com,AdBlock -- DOMAIN-SUFFIX,m.oesnw.com,AdBlock -- DOMAIN-SUFFIX,m.opqsr.com,AdBlock -- DOMAIN-SUFFIX,m.osndy.com,AdBlock -- DOMAIN-SUFFIX,m.ourlj.com,AdBlock -- DOMAIN-SUFFIX,m.oyrim.com,AdBlock -- DOMAIN-SUFFIX,m.panda.voiceads.cn,AdBlock -- DOMAIN-SUFFIX,m.pbino.com,AdBlock -- DOMAIN-SUFFIX,m.phonthing.com,AdBlock -- DOMAIN-SUFFIX,m.picbr.com,AdBlock -- DOMAIN-SUFFIX,m.pieaa.com,AdBlock -- DOMAIN-SUFFIX,m.plerv.com,AdBlock -- DOMAIN-SUFFIX,m.pomkl.com,AdBlock -- DOMAIN-SUFFIX,m.poonscn.com,AdBlock -- DOMAIN-SUFFIX,m.pougg.com,AdBlock -- DOMAIN-SUFFIX,m.prazpf.cn,AdBlock -- DOMAIN-SUFFIX,m.pubbirdf.com,AdBlock -- DOMAIN-SUFFIX,m.puooi.com,AdBlock -- DOMAIN-SUFFIX,m.pwjhg.com,AdBlock -- DOMAIN-SUFFIX,m.pyerc.com,AdBlock -- DOMAIN-SUFFIX,m.qcw.com,AdBlock -- DOMAIN-SUFFIX,m.qhuik.com,AdBlock -- DOMAIN-SUFFIX,m.qianka.com,AdBlock -- DOMAIN-SUFFIX,m.qingzhencai.net,AdBlock -- DOMAIN-SUFFIX,m.qiyunmuye.com,AdBlock -- DOMAIN-SUFFIX,m.qsove.com,AdBlock -- DOMAIN-SUFFIX,m.qulishi.com,AdBlock -- DOMAIN-SUFFIX,m.qusub.com,AdBlock -- DOMAIN-SUFFIX,m.qvxyz.com,AdBlock -- DOMAIN-SUFFIX,m.rhcapass.com,AdBlock -- DOMAIN-SUFFIX,m.ricpt.com,AdBlock -- DOMAIN-SUFFIX,m.rmuqvq.cn,AdBlock -- DOMAIN-SUFFIX,m.rmwdn.com,AdBlock -- DOMAIN-SUFFIX,m.romgv.com,AdBlock -- DOMAIN-SUFFIX,m.rrsdl.com,AdBlock -- DOMAIN-SUFFIX,m.rwganw.cn,AdBlock -- DOMAIN-SUFFIX,m.sanitwealth.com,AdBlock -- DOMAIN-SUFFIX,m.sanjiangge.com,AdBlock -- DOMAIN-SUFFIX,m.sbenx.com,AdBlock -- DOMAIN-SUFFIX,m.sbinx.com,AdBlock -- DOMAIN-SUFFIX,m.sewxi.com,AdBlock -- DOMAIN-SUFFIX,m.shenyunkeji.com,AdBlock -- DOMAIN-SUFFIX,m.simba.taobao.com,AdBlock -- DOMAIN-SUFFIX,m.sjaidu.com,AdBlock -- DOMAIN-SUFFIX,m.sjuqc.com,AdBlock -- DOMAIN-SUFFIX,m.sjzhushou.com,AdBlock -- DOMAIN-SUFFIX,m.smsksx.com,AdBlock -- DOMAIN-SUFFIX,m.sosjyx.com,AdBlock -- DOMAIN-SUFFIX,m.srrux.com,AdBlock -- DOMAIN-SUFFIX,m.suehy.com,AdBlock -- DOMAIN-SUFFIX,m.sxxca.com,AdBlock -- DOMAIN-SUFFIX,m.symaa.cn,AdBlock -- DOMAIN-SUFFIX,m.symab.cn,AdBlock -- DOMAIN-SUFFIX,m.symac.cn,AdBlock -- DOMAIN-SUFFIX,m.symad.cn,AdBlock -- DOMAIN-SUFFIX,m.symag.cn,AdBlock -- DOMAIN-SUFFIX,m.symaj.cn,AdBlock -- DOMAIN-SUFFIX,m.szqifu.com,AdBlock -- DOMAIN-SUFFIX,m.tansuotv.com,AdBlock -- DOMAIN-SUFFIX,m.tcksbz888.com,AdBlock -- DOMAIN-SUFFIX,m.tiantianedu.net,AdBlock -- DOMAIN-SUFFIX,m.tiaopimiao.net,AdBlock -- DOMAIN-SUFFIX,m.tick0.com,AdBlock -- DOMAIN-SUFFIX,m.tiojk.com,AdBlock -- DOMAIN-SUFFIX,m.tuopp.com,AdBlock -- DOMAIN-SUFFIX,m.twldmx.com,AdBlock -- DOMAIN-SUFFIX,m.txtxr.com,AdBlock -- DOMAIN-SUFFIX,m.uc123.com,AdBlock -- DOMAIN-SUFFIX,m.uczzd.cn,AdBlock -- DOMAIN-SUFFIX,m.ueram.com,AdBlock -- DOMAIN-SUFFIX,m.uissm.com,AdBlock -- DOMAIN-SUFFIX,m.vaxyz.com,AdBlock -- DOMAIN-SUFFIX,m.vbaou.com,AdBlock -- DOMAIN-SUFFIX,m.vbieu.com,AdBlock -- DOMAIN-SUFFIX,m.vbinu.com,AdBlock -- DOMAIN-SUFFIX,m.verpt.com,AdBlock -- DOMAIN-SUFFIX,m.vichc.com,AdBlock -- DOMAIN-SUFFIX,m.vouky.com,AdBlock -- DOMAIN-SUFFIX,m.vpon.com,AdBlock -- DOMAIN-SUFFIX,m.vsxet.com,AdBlock -- DOMAIN-SUFFIX,m.wcjup.com,AdBlock -- DOMAIN-SUFFIX,m.weboser.com,AdBlock -- DOMAIN-SUFFIX,m.weixingshexiangji.net,AdBlock -- DOMAIN-SUFFIX,m.wervp.com,AdBlock -- DOMAIN-SUFFIX,m.wgewj.cn,AdBlock -- DOMAIN-SUFFIX,m.wikigifth.com,AdBlock -- DOMAIN-SUFFIX,m.wjhehaofc.com,AdBlock -- DOMAIN-SUFFIX,m.wkjhd.com,AdBlock -- DOMAIN-SUFFIX,m.wnxcg.com,AdBlock -- DOMAIN-SUFFIX,m.wonwg.com,AdBlock -- DOMAIN-SUFFIX,m.wooboo.com.cn,AdBlock -- DOMAIN-SUFFIX,m.wrating.com,AdBlock -- DOMAIN-SUFFIX,m.wshufa.com,AdBlock -- DOMAIN-SUFFIX,m.wsxxu.com,AdBlock -- DOMAIN-SUFFIX,m.wuqutu.com,AdBlock -- DOMAIN-SUFFIX,m.wxhh678.com,AdBlock -- DOMAIN-SUFFIX,m.xcy8.com,AdBlock -- DOMAIN-SUFFIX,m.xdkje.com,AdBlock -- DOMAIN-SUFFIX,m.xeihy.com,AdBlock -- DOMAIN-SUFFIX,m.xetvb.com,AdBlock -- DOMAIN-SUFFIX,m.xhaiu.com,AdBlock -- DOMAIN-SUFFIX,m.xiangchim0.com,AdBlock -- DOMAIN-SUFFIX,m.xikdn.com,AdBlock -- DOMAIN-SUFFIX,m.xingxd.com,AdBlock -- DOMAIN-SUFFIX,m.xkqpco.com,AdBlock -- DOMAIN-SUFFIX,m.xkqpco.com.com,AdBlock -- DOMAIN-SUFFIX,m.xlsschina15.net,AdBlock -- DOMAIN-SUFFIX,m.xmgysweb.com,AdBlock -- DOMAIN-SUFFIX,m.xpjis.com,AdBlock -- DOMAIN-SUFFIX,m.xxkio.com,AdBlock -- DOMAIN-SUFFIX,m.yalayi.com,AdBlock -- DOMAIN-SUFFIX,m.yangjingbang.net,AdBlock -- DOMAIN-SUFFIX,m.yicang8.com,AdBlock -- DOMAIN-SUFFIX,m.yingchengtou.com,AdBlock -- DOMAIN-SUFFIX,m.ynnke.com,AdBlock -- DOMAIN-SUFFIX,m.yoiur.com,AdBlock -- DOMAIN-SUFFIX,m.yooli.com,AdBlock -- DOMAIN-SUFFIX,m.youweiprint.com,AdBlock -- DOMAIN-SUFFIX,m.yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,m.ysdhe.com,AdBlock -- DOMAIN-SUFFIX,m.yuandajiayuan.com,AdBlock -- DOMAIN-SUFFIX,m.yuxyz.com,AdBlock -- DOMAIN-SUFFIX,m.ywbwsm.com,AdBlock -- DOMAIN-SUFFIX,m.yyeks.com,AdBlock -- DOMAIN-SUFFIX,m.yyjhf.com,AdBlock -- DOMAIN-SUFFIX,m.yzjlsb.com,AdBlock -- DOMAIN-SUFFIX,m.zabxb.com,AdBlock -- DOMAIN-SUFFIX,m.zaoss.com,AdBlock -- DOMAIN-SUFFIX,m.zeiaa.com,AdBlock -- DOMAIN-SUFFIX,m.zenffs.cn,AdBlock -- DOMAIN-SUFFIX,m.zenwq.com,AdBlock -- DOMAIN-SUFFIX,m.zhuyuanp.club,AdBlock -- DOMAIN-SUFFIX,m.zhuyuanp.shop,AdBlock -- DOMAIN-SUFFIX,m.zhuyuanp.top,AdBlock -- DOMAIN-SUFFIX,m.zkwsdf.com,AdBlock -- DOMAIN-SUFFIX,m.zougg.com,AdBlock -- DOMAIN-SUFFIX,m.zuopp.com,AdBlock -- DOMAIN-SUFFIX,m1.baidu.com,AdBlock -- DOMAIN-SUFFIX,m1.daumcdn.net,AdBlock -- DOMAIN-SUFFIX,m1.mgogo.com,AdBlock -- DOMAIN-SUFFIX,m1.xcy8.com,AdBlock -- DOMAIN-SUFFIX,m2.qinsx.cn,AdBlock -- DOMAIN-SUFFIX,m3bnqqqw.com,AdBlock -- DOMAIN-SUFFIX,m5.apk.67mo.com,AdBlock -- DOMAIN-SUFFIX,m9.xcdf.cn,AdBlock -- DOMAIN-SUFFIX,m9.xcy8.com,AdBlock -- DOMAIN-SUFFIX,ma.baidu.com,AdBlock -- DOMAIN-SUFFIX,ma1.meishij.net,AdBlock -- DOMAIN-SUFFIX,ma2.meishij.net,AdBlock -- DOMAIN-SUFFIX,maccms.tan5858.com,AdBlock -- DOMAIN-SUFFIX,mackeeper.com,AdBlock -- DOMAIN-SUFFIX,macplatform.wondershare.com,AdBlock -- DOMAIN-SUFFIX,mad.kuuad.com,AdBlock -- DOMAIN-SUFFIX,mad.m.maxthon.cn,AdBlock -- DOMAIN-SUFFIX,m-adash.m.taobao.com,AdBlock -- DOMAIN-SUFFIX,madhouse.cn,AdBlock -- DOMAIN-SUFFIX,madmini.com,AdBlock -- DOMAIN-SUFFIX,mads.amazon.com,AdBlock -- DOMAIN-SUFFIX,mads.aol.com,AdBlock -- DOMAIN-SUFFIX,mads.dailymail.co.uk,AdBlock -- DOMAIN-SUFFIX,madserving.com,AdBlock -- DOMAIN-SUFFIX,magicwindow.cn,AdBlock -- DOMAIN-SUFFIX,magnetic.t.domdex.com,AdBlock -- DOMAIN-SUFFIX,maibahe300cc.com,AdBlock -- DOMAIN-SUFFIX,main.exdynsrv.com,AdBlock -- DOMAIN-SUFFIX,main.exoclick.com,AdBlock -- DOMAIN-SUFFIX,mainbx.com,AdBlock -- DOMAIN-SUFFIX,maipinshangmao.com,AdBlock -- DOMAIN-SUFFIX,mairuan.cn,AdBlock -- DOMAIN-SUFFIX,mairuan.com,AdBlock -- DOMAIN-SUFFIX,mairuan.com.cn,AdBlock -- DOMAIN-SUFFIX,mairuan.net,AdBlock -- DOMAIN-SUFFIX,mairuanwang.com,AdBlock -- DOMAIN-SUFFIX,maisoncherry.com,AdBlock -- DOMAIN-SUFFIX,makeding.com,AdBlock -- DOMAIN-SUFFIX,malacca.inveno.com,AdBlock -- DOMAIN-SUFFIX,manage.wdfans.cn,AdBlock -- DOMAIN-SUFFIX,maomaotang.com,AdBlock -- DOMAIN-SUFFIX,map.dxpmedia.com,AdBlock -- DOMAIN-SUFFIX,map.media6degrees.com,AdBlock -- DOMAIN-SUFFIX,mapping.yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,market.178.com,AdBlock -- DOMAIN-SUFFIX,market.21cn.com,AdBlock -- DOMAIN-SUFFIX,market.52pk.com,AdBlock -- DOMAIN-SUFFIX,market.duowan.com,AdBlock -- DOMAIN-SUFFIX,marketgid.com,AdBlock -- DOMAIN-SUFFIX,marketing.888.com,AdBlock -- DOMAIN-SUFFIX,marketing.etouch.cn,AdBlock -- DOMAIN-SUFFIX,marketingsolutions.yahoo.com,AdBlock -- DOMAIN-SUFFIX,marketo.com,AdBlock -- DOMAIN-SUFFIX,marketo.net,AdBlock -- DOMAIN-SUFFIX,masdk.3g.qq.com,AdBlock -- DOMAIN-SUFFIX,maskbaby.com.cn,AdBlock -- DOMAIN-SUFFIX,mass.mall044.com,AdBlock -- DOMAIN-SUFFIX,master.wap.dphub.sandai.net,AdBlock -- DOMAIN-SUFFIX,match.adsby.bidtheatre.com,AdBlock -- DOMAIN-SUFFIX,match.c8.net.ua,AdBlock -- DOMAIN-SUFFIX,match.p4p.1688.com,AdBlock -- DOMAIN-SUFFIX,match.prod.bidr.io,AdBlock -- DOMAIN-SUFFIX,match.rundsp.com,AdBlock -- DOMAIN-SUFFIX,matching.targeterra.com,AdBlock -- DOMAIN-SUFFIX,material.istreamsche.com,AdBlock -- DOMAIN-SUFFIX,material.mtty.xin,AdBlock -- DOMAIN-SUFFIX,mathtag.com,AdBlock -- DOMAIN-SUFFIX,mathtype.cn,AdBlock -- DOMAIN-SUFFIX,maw.wnbfw.com,AdBlock -- DOMAIN-SUFFIX,maxwebsearch.com,AdBlock -- DOMAIN-SUFFIX,maysunmedia.com,AdBlock -- DOMAIN-SUFFIX,mb.hockeybuzz.com,AdBlock -- DOMAIN-SUFFIX,mb.yidianzixun.com,AdBlock -- DOMAIN-SUFFIX,mb.zam.com,AdBlock -- DOMAIN-SUFFIX,mbai.cn,AdBlock -- DOMAIN-SUFFIX,mbd.weathercn.com,AdBlock -- DOMAIN-SUFFIX,mbrowser.news.haosou.com,AdBlock -- DOMAIN-SUFFIX,mbrowser.news.so.com,AdBlock -- DOMAIN-SUFFIX,mbs.weathercn.com,AdBlock -- DOMAIN-SUFFIX,mc.hujiang.com,AdBlock -- DOMAIN-SUFFIX,mc.yandex.ru,AdBlock -- DOMAIN-SUFFIX,mclick.simba.taobao.com,AdBlock -- DOMAIN-SUFFIX,mcore.vcgame.cn,AdBlock -- DOMAIN-SUFFIX,md.1drj.com,AdBlock -- DOMAIN-SUFFIX,md.he9630.com,AdBlock -- DOMAIN-SUFFIX,md.sh5e.com,AdBlock -- DOMAIN-SUFFIX,md0z4dh.com,AdBlock -- DOMAIN-SUFFIX,mdc.meitustat.com,AdBlock -- DOMAIN-SUFFIX,mdotm.com,AdBlock -- DOMAIN-SUFFIX,mdpjnppsbjv.bid,AdBlock -- DOMAIN-SUFFIX,mdrecv.app.cntvwb.cn,AdBlock -- DOMAIN-SUFFIX,me.afp.chinanews.com,AdBlock -- DOMAIN-SUFFIX,mealsandsteals.sandiego6.com,AdBlock -- DOMAIN-SUFFIX,me-cdn.effectivemeasure.net,AdBlock -- DOMAIN-SUFFIX,med.heyzap.com,AdBlock -- DOMAIN-SUFFIX,medal.blog.csdn.net,AdBlock -- DOMAIN-SUFFIX,media.2011.8684.com,AdBlock -- DOMAIN-SUFFIX,media.cheshi-img.com,AdBlock -- DOMAIN-SUFFIX,media.fastclick.net,AdBlock -- DOMAIN-SUFFIX,media.jointreport-switch.com,AdBlock -- DOMAIN-SUFFIX,media.tianjimedia.com,AdBlock -- DOMAIN-SUFFIX,media.trafficfactory.biz,AdBlock -- DOMAIN-SUFFIX,media.trafficjunky.net,AdBlock -- DOMAIN-SUFFIX,media8.cn,AdBlock -- DOMAIN-SUFFIX,mediamgr.ugo.com,AdBlock -- DOMAIN-SUFFIX,mediaplex.com,AdBlock -- DOMAIN-SUFFIX,mediapro.pro.cn,AdBlock -- DOMAIN-SUFFIX,media-static.jointreport-switch.com,AdBlock -- DOMAIN-SUFFIX,mediav.com,AdBlock -- DOMAIN-SUFFIX,medrx.telstra.com.au,AdBlock -- DOMAIN-SUFFIX,megajoy.com,AdBlock -- DOMAIN-SUFFIX,meimeidaren.com,AdBlock -- DOMAIN-SUFFIX,meiti1.net,AdBlock -- DOMAIN-SUFFIX,meitubeauty.meitudata.com,AdBlock -- DOMAIN-SUFFIX,meitumq.com,AdBlock -- DOMAIN-SUFFIX,menghuanzs.com,AdBlock -- DOMAIN-SUFFIX,mengmengdas.com,AdBlock -- DOMAIN-SUFFIX,mengyuanwei.com,AdBlock -- DOMAIN-SUFFIX,message.meitu.com,AdBlock -- DOMAIN-SUFFIX,metok.sys.miui.com,AdBlock -- DOMAIN-SUFFIX,metrics.cnn.com,AdBlock -- DOMAIN-SUFFIX,mfan.iclick.com.cn,AdBlock -- DOMAIN-SUFFIX,mfm.video.qq.com,AdBlock -- DOMAIN-SUFFIX,mfp.deliver.ifeng.com,AdBlock -- DOMAIN-SUFFIX,mfsr.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,mg.5pk,AdBlock -- DOMAIN-SUFFIX,mg.games.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,mg.yadro.ru,AdBlock -- DOMAIN-SUFFIX,mgid.com,AdBlock -- DOMAIN-SUFFIX,mgldzcls.com,AdBlock -- DOMAIN-SUFFIX,mgogo.com,AdBlock -- DOMAIN-SUFFIX,mgwcn.com,AdBlock -- DOMAIN-SUFFIX,mgwl668.com,AdBlock -- DOMAIN-SUFFIX,mhd.1391.com,AdBlock -- DOMAIN-SUFFIX,mhdpay.1391.com,AdBlock -- DOMAIN-SUFFIX,mhdtestks3.1391.com,AdBlock -- DOMAIN-SUFFIX,mhdufile.1391.com,AdBlock -- DOMAIN-SUFFIX,mhjk.1391.com,AdBlock -- DOMAIN-SUFFIX,mhuodong.elong.com,AdBlock -- DOMAIN-SUFFIX,miam4.cn,AdBlock -- DOMAIN-SUFFIX,miaobeichina.com,AdBlock -- DOMAIN-SUFFIX,miaozhen.com,AdBlock -- DOMAIN-SUFFIX,mibook-10006092.cos.myqcloud.com,AdBlock -- DOMAIN-SUFFIX,microad-cn.com,AdBlock -- DOMAIN-SUFFIX,mid.houyi.baofeng.net,AdBlock -- DOMAIN-SUFFIX,midas.rong360.com,AdBlock -- DOMAIN-SUFFIX,midinfo.baofeng.com,AdBlock -- DOMAIN-SUFFIX,mie99.net,AdBlock -- DOMAIN-SUFFIX,migc.g.mi.com,AdBlock -- DOMAIN-SUFFIX,migcreport.g.mi.com,AdBlock -- DOMAIN-SUFFIX,migrate.driveapi.micloud.xiaomi.net,AdBlock -- DOMAIN-SUFFIX,migu.kssws.ks-cdn.com,AdBlock -- DOMAIN-SUFFIX,mihui.com,AdBlock -- DOMAIN-SUFFIX,miidi.net,AdBlock -- DOMAIN-SUFFIX,mijifen.com,AdBlock -- DOMAIN-SUFFIX,milk.yesky.com.cn,AdBlock -- DOMAIN-SUFFIX,millennialmedia.com,AdBlock -- DOMAIN-SUFFIX,millwardbrownacsr.com,AdBlock -- DOMAIN-SUFFIX,mimg.126.net,AdBlock -- DOMAIN-SUFFIX,mimg.7791.com.cn,AdBlock -- DOMAIN-SUFFIX,mindmanager.cc,AdBlock -- DOMAIN-SUFFIX,mindmapper.cc,AdBlock -- DOMAIN-SUFFIX,minesage.com,AdBlock -- DOMAIN-SUFFIX,minfo.wps.cn,AdBlock -- DOMAIN-SUFFIX,mingxianshanghang.cn,AdBlock -- DOMAIN-SUFFIX,mingysh.com,AdBlock -- DOMAIN-SUFFIX,mini.cpc.sogou.com,AdBlock -- DOMAIN-SUFFIX,mini.eastday.com,AdBlock -- DOMAIN-SUFFIX,mini.hao123.com,AdBlock -- DOMAIN-SUFFIX,mini.jijiplayer.com,AdBlock -- DOMAIN-SUFFIX,mini2015.qq.com,AdBlock -- DOMAIN-SUFFIX,miniapp.bilibili.com,AdBlock -- DOMAIN-SUFFIX,minidcsc.kugou.com,AdBlock -- DOMAIN-SUFFIX,minipage.2345.com,AdBlock -- DOMAIN-SUFFIX,minisite.vidown.cn,AdBlock -- DOMAIN-SUFFIX,minisplat.cn,AdBlock -- DOMAIN-SUFFIX,miniye.xjts.cn,AdBlock -- DOMAIN-SUFFIX,mip.yuelvxing.com,AdBlock -- DOMAIN-SUFFIX,mipcache.bdstatic.com,AdBlock -- DOMAIN-SUFFIX,mipujia.com,AdBlock -- DOMAIN-SUFFIX,mis.g.mi.com,AdBlock -- DOMAIN-SUFFIX,miui.hdfdm.com,AdBlock -- DOMAIN-SUFFIX,miui.hftaili.com,AdBlock -- DOMAIN-SUFFIX,mivideo.g.mi.com,AdBlock -- DOMAIN-SUFFIX,mj70.cn,AdBlock -- DOMAIN-SUFFIX,mjs.csyymp4.com,AdBlock -- DOMAIN-SUFFIX,mkitgfs.com,AdBlock -- DOMAIN-SUFFIX,mlb.did.ijinshan.com,AdBlock -- DOMAIN-SUFFIX,mlgrrqymdsyk.com,AdBlock -- DOMAIN-SUFFIX,mlnbike.com,AdBlock -- DOMAIN-SUFFIX,mlog.aipai.com,AdBlock -- DOMAIN-SUFFIX,mlog.hiido.com,AdBlock -- DOMAIN-SUFFIX,mlog.m1905.cn,AdBlock -- DOMAIN-SUFFIX,mlog.search.xiaomi.net,AdBlock -- DOMAIN-SUFFIX,mlt01.com,AdBlock -- DOMAIN-SUFFIX,mm.2436.cn,AdBlock -- DOMAIN-SUFFIX,mm.anqu.com,AdBlock -- DOMAIN-SUFFIX,mm.jgchq.com,AdBlock -- DOMAIN-SUFFIX,mm.moquanad.com,AdBlock -- DOMAIN-SUFFIX,mmcc.yxlady.com,AdBlock -- DOMAIN-SUFFIX,mmg.aty.cp45.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,mmg.aty.snmsohu.aisee.tv,AdBlock -- DOMAIN-SUFFIX,mng-ads.com,AdBlock -- DOMAIN-SUFFIX,mnkan.com,AdBlock -- DOMAIN-SUFFIX,mnwan.com,AdBlock -- DOMAIN-SUFFIX,mnxtu.com,AdBlock -- DOMAIN-SUFFIX,mo.haloapps.cn,AdBlock -- DOMAIN-SUFFIX,mo.kugou.com,AdBlock -- DOMAIN-SUFFIX,mo.res.wpscdn.cn,AdBlock -- DOMAIN-SUFFIX,mo.test.haloapps.com,AdBlock -- DOMAIN-SUFFIX,moad.cn,AdBlock -- DOMAIN-SUFFIX,moatads.com,AdBlock -- DOMAIN-SUFFIX,mob.huimee.net,AdBlock -- DOMAIN-SUFFIX,mobad.ijinshan.com,AdBlock -- DOMAIN-SUFFIX,mobadme.jp,AdBlock -- DOMAIN-SUFFIX,mobads.baidu.com,AdBlock -- DOMAIN-SUFFIX,mobads-logs.baidu.com,AdBlock -- DOMAIN-SUFFIX,mobclix.com,AdBlock -- DOMAIN-SUFFIX,mobfox.com,AdBlock -- DOMAIN-SUFFIX,mobgi.com,AdBlock -- DOMAIN-SUFFIX,mobilead.kuwo.cn,AdBlock -- DOMAIN-SUFFIX,mobileads.google.com,AdBlock -- DOMAIN-SUFFIX,mobileads.msn.com,AdBlock -- DOMAIN-SUFFIX,mobileapptracking.com,AdBlock -- DOMAIN-SUFFIX,mobiledissector.com,AdBlock -- DOMAIN-SUFFIX,mobilelog.kugou.com,AdBlock -- DOMAIN-SUFFIX,mobile-pubt.ele.me,AdBlock -- DOMAIN-SUFFIX,mobile-service.segment.com,AdBlock -- DOMAIN-SUFFIX,mobilityware.com,AdBlock -- DOMAIN-SUFFIX,mobiorg8.com,AdBlock -- DOMAIN-SUFFIX,mobisage.cn,AdBlock -- DOMAIN-SUFFIX,mobvista.com,AdBlock -- DOMAIN-SUFFIX,mohecm.com,AdBlock -- DOMAIN-SUFFIX,moka.inte.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,mon.xtgreat.com,AdBlock -- DOMAIN-SUFFIX,monero.how,AdBlock -- DOMAIN-SUFFIX,money.qz828.com,AdBlock -- DOMAIN-SUFFIX,monitor.uu.qq.com,AdBlock -- DOMAIN-SUFFIX,moodoocrv.com.cn,AdBlock -- DOMAIN-SUFFIX,moogos.com,AdBlock -- DOMAIN-SUFFIX,mookie1.com,AdBlock -- DOMAIN-SUFFIX,moons.66bhy.com,AdBlock -- DOMAIN-SUFFIX,moonwish.com.cn,AdBlock -- DOMAIN-SUFFIX,mopub.com,AdBlock -- DOMAIN-SUFFIX,moquanad.com,AdBlock -- DOMAIN-SUFFIX,moren-1252794300.file.myqcloud.com,AdBlock -- DOMAIN-SUFFIX,mosa86.com,AdBlock -- DOMAIN-SUFFIX,mostat.wps.cn,AdBlock -- DOMAIN-SUFFIX,motohelpr.com,AdBlock -- DOMAIN-SUFFIX,motu.p4p.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,motu.pagechoice.net,AdBlock -- DOMAIN-SUFFIX,mou.niu.xunlei.com,AdBlock -- DOMAIN-SUFFIX,moupdate10332052.wps.cn,AdBlock -- DOMAIN-SUFFIX,moutaihotel.cn,AdBlock -- DOMAIN-SUFFIX,movie.miaiche.cn,AdBlock -- DOMAIN-SUFFIX,mpb1.iteye.com,AdBlock -- DOMAIN-SUFFIX,mpb2.iteye.com,AdBlock -- DOMAIN-SUFFIX,mpp.vindicosuite.com,AdBlock -- DOMAIN-SUFFIX,mpro.baidu.com,AdBlock -- DOMAIN-SUFFIX,mps.nbcuni.com,AdBlock -- DOMAIN-SUFFIX,mps.weekslw.com,AdBlock -- DOMAIN-SUFFIX,mpush.cn,AdBlock -- DOMAIN-SUFFIX,mpzw.com,AdBlock -- DOMAIN-SUFFIX,mqq.zgdmsj.cn,AdBlock -- DOMAIN-SUFFIX,mqqad.cs0309.html5.qq.com,AdBlock -- DOMAIN-SUFFIX,mqqad.html5.qq.com,AdBlock -- DOMAIN-SUFFIX,mqqadr.reader.qq.com,AdBlock -- DOMAIN-SUFFIX,mr.da.netease.com,AdBlock -- DOMAIN-SUFFIX,mrelko.com,AdBlock -- DOMAIN-SUFFIX,mrksys.com,AdBlock -- DOMAIN-SUFFIX,ms.awqsaged.cn,AdBlock -- DOMAIN-SUFFIX,ms.cmcm.com,AdBlock -- DOMAIN-SUFFIX,ms.cnczjy.com,AdBlock -- DOMAIN-SUFFIX,ms.continuedsys.cn,AdBlock -- DOMAIN-SUFFIX,ms.ienkdaccessible.cn,AdBlock -- DOMAIN-SUFFIX,ms.ienkdaccessory.cn,AdBlock -- DOMAIN-SUFFIX,ms.jyhwt.cn,AdBlock -- DOMAIN-SUFFIX,ms.myyage.com,AdBlock -- DOMAIN-SUFFIX,ms.vipstatic.com,AdBlock -- DOMAIN-SUFFIX,msads.net,AdBlock -- DOMAIN-SUFFIX,mscimg.com,AdBlock -- DOMAIN-SUFFIX,msclick2.kuwo.cn,AdBlock -- DOMAIN-SUFFIX,msg.mobile.kugou.com,AdBlock -- DOMAIN-SUFFIX,msg.ptqy.gitv.tv,AdBlock -- DOMAIN-SUFFIX,msg.push.51y5.net,AdBlock -- DOMAIN-SUFFIX,mshow.fang.com,AdBlock -- DOMAIN-SUFFIX,msite.baidu.com,AdBlock -- DOMAIN-SUFFIX,msltzer.cn,AdBlock -- DOMAIN-SUFFIX,msn.wrating.com,AdBlock -- DOMAIN-SUFFIX,msnclick.wrating.com,AdBlock -- DOMAIN-SUFFIX,msphoneclick.kuwo.cn,AdBlock -- DOMAIN-SUFFIX,mssp.baidu.com,AdBlock -- DOMAIN-SUFFIX,mstat.zol.com.cn,AdBlock -- DOMAIN-SUFFIX,mstzym.com,AdBlock -- DOMAIN-SUFFIX,msypr.com,AdBlock -- DOMAIN-SUFFIX,mti.35kds.com,AdBlock -- DOMAIN-SUFFIX,mtj.baidu.com,AdBlock -- DOMAIN-SUFFIX,mtl.ttsqgs.com,AdBlock -- DOMAIN-SUFFIX,mtrace.qq.com,AdBlock -- DOMAIN-SUFFIX,mtty-cdn.mtty.xin,AdBlock -- DOMAIN-SUFFIX,mtxsk.com,AdBlock -- DOMAIN-SUFFIX,mubite.cn,AdBlock -- DOMAIN-SUFFIX,munchkin.marketo.net,AdBlock -- DOMAIN-SUFFIX,musik-mp3.info,AdBlock -- DOMAIN-SUFFIX,mvads.kugou.com,AdBlock -- DOMAIN-SUFFIX,mvip.zhuba8.com,AdBlock -- DOMAIN-SUFFIX,mwa.xingyimin.com,AdBlock -- DOMAIN-SUFFIX,mwlucuvbyrff.com,AdBlock -- DOMAIN-SUFFIX,mxmrt.com,AdBlock -- DOMAIN-SUFFIX,mxpnl.com,AdBlock -- DOMAIN-SUFFIX,mxvp-ad-config-prod-1.zenmxapps.com,AdBlock -- DOMAIN-SUFFIX,mxvp-feature-toggle-prod-1.zenmxapps.com,AdBlock -- DOMAIN-SUFFIX,my.mobfox.com,AdBlock -- DOMAIN-SUFFIX,my1fc.m.b5200.net,AdBlock -- DOMAIN-SUFFIX,my1fimg.m.b5200.net,AdBlock -- DOMAIN-SUFFIX,myad.toocle.com,AdBlock -- DOMAIN-SUFFIX,mycleanmymac.com,AdBlock -- DOMAIN-SUFFIX,mydas.mobi,AdBlock -- DOMAIN-SUFFIX,mydisplay.ctfile.com,AdBlock -- DOMAIN-SUFFIX,myjsym.zichenit.com,AdBlock -- DOMAIN-SUFFIX,mymm.zichenit.com,AdBlock -- DOMAIN-SUFFIX,mytanwan.com,AdBlock -- DOMAIN-SUFFIX,mytzdhz.cn,AdBlock -- DOMAIN-SUFFIX,myycrw.com,AdBlock -- DOMAIN-SUFFIX,myzk1.com,AdBlock -- DOMAIN-SUFFIX,myzwqwe12.com,AdBlock -- DOMAIN-SUFFIX,mzy2014.com,AdBlock -- DOMAIN-SUFFIX,n.a.mosenni.com,AdBlock -- DOMAIN-SUFFIX,n.ads3-adnow.com,AdBlock -- DOMAIN-SUFFIX,n.amoad.com,AdBlock -- DOMAIN-SUFFIX,n.cosbot.cn,AdBlock -- DOMAIN-SUFFIX,n.gemini.yahoo.com,AdBlock -- DOMAIN-SUFFIX,n.ma.social-touch.com,AdBlock -- DOMAIN-SUFFIX,n.wjr1x.cn,AdBlock -- DOMAIN-SUFFIX,n.yfi8.com,AdBlock -- DOMAIN-SUFFIX,n.zqqf0.cn,AdBlock -- DOMAIN-SUFFIX,na1r.services.adobe.com,AdBlock -- DOMAIN-SUFFIX,na2m-pr.licenses.adobe.com,AdBlock -- DOMAIN-SUFFIX,nai.cpxkvc.com,AdBlock -- DOMAIN-SUFFIX,namedq.com,AdBlock -- DOMAIN-SUFFIX,namemek.com,AdBlock -- DOMAIN-SUFFIX,naqigs.com,AdBlock -- DOMAIN-SUFFIX,nativeapp.toutiao.com,AdBlock -- DOMAIN-SUFFIX,nav.winasdaq.com,AdBlock -- DOMAIN-SUFFIX,navi.gd.chinamobile.com,AdBlock -- DOMAIN-SUFFIX,nbhxgjz.com,AdBlock -- DOMAIN-SUFFIX,nbjjd.com,AdBlock -- DOMAIN-SUFFIX,nbzq.net,AdBlock -- DOMAIN-SUFFIX,nc004x.corp.youdao.com,AdBlock -- DOMAIN-SUFFIX,nc045x.corp.youdao.com,AdBlock -- DOMAIN-SUFFIX,ncachear.com,AdBlock -- DOMAIN-SUFFIX,nch.xnghmc.com,AdBlock -- DOMAIN-SUFFIX,nchte.com,AdBlock -- DOMAIN-SUFFIX,nclog.mars.baofeng.net,AdBlock -- DOMAIN-SUFFIX,nclog.pad.baofeng.net,AdBlock -- DOMAIN-SUFFIX,ncoyqc.com,AdBlock -- DOMAIN-SUFFIX,ndtzx.com,AdBlock -- DOMAIN-SUFFIX,ndy.code.weddingeeos.com,AdBlock -- DOMAIN-SUFFIX,ne.1rtb.com,AdBlock -- DOMAIN-SUFFIX,ne9377.com,AdBlock -- DOMAIN-SUFFIX,neirong.baidu.com,AdBlock -- DOMAIN-SUFFIX,nend.net,AdBlock -- DOMAIN-SUFFIX,nest.youwatch.org,AdBlock -- DOMAIN-SUFFIX,net.rayjump.com,AdBlock -- DOMAIN-SUFFIX,netko0o.com,AdBlock -- DOMAIN-SUFFIX,netshelter.net,AdBlock -- DOMAIN-SUFFIX,netspidermm.indiatimes.com,AdBlock -- DOMAIN-SUFFIX,network.aufeminin.com,AdBlock -- DOMAIN-SUFFIX,network.business.com,AdBlock -- DOMAIN-SUFFIX,network.sofeminine.co.uk,AdBlock -- DOMAIN-SUFFIX,networkbench.com,AdBlock -- DOMAIN-SUFFIX,new.ltheanine.cn,AdBlock -- DOMAIN-SUFFIX,new.yokaunion.com,AdBlock -- DOMAIN-SUFFIX,new.zhqiu.com,AdBlock -- DOMAIN-SUFFIX,newapi.com,AdBlock -- DOMAIN-SUFFIX,newloc.map.n.shifen.com,AdBlock -- DOMAIN-SUFFIX,news.51y5.net,AdBlock -- DOMAIN-SUFFIX,news.58.com,AdBlock -- DOMAIN-SUFFIX,news.cxxtv.com,AdBlock -- DOMAIN-SUFFIX,news.mpush.qq.com,AdBlock -- DOMAIN-SUFFIX,news.push.126.net,AdBlock -- DOMAIN-SUFFIX,news.s9377.com,AdBlock -- DOMAIN-SUFFIX,news.xueyanshan.com,AdBlock -- DOMAIN-SUFFIX,news-img.51y5.net,AdBlock -- DOMAIN-SUFFIX,news-l.play.aiseet.atianqi.com,AdBlock -- DOMAIN-SUFFIX,news-l.play.cp81.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,news-l.play.ott.video.qq.com,AdBlock -- DOMAIN-SUFFIX,news-log.51y5.net,AdBlock -- DOMAIN-SUFFIX,newspage.xilu.com,AdBlock -- DOMAIN-SUFFIX,newspush.sinajs.cn,AdBlock -- DOMAIN-SUFFIX,newswifiapi.dfshurufa.com,AdBlock -- DOMAIN-SUFFIX,newton-api.ele.me,AdBlock -- DOMAIN-SUFFIX,nex.163.com,AdBlock -- DOMAIN-SUFFIX,nexage.com,AdBlock -- DOMAIN-SUFFIX,nexstep.zdworks.com,AdBlock -- DOMAIN-SUFFIX,nextcps.com,AdBlock -- DOMAIN-SUFFIX,nextlnk9.com,AdBlock -- DOMAIN-SUFFIX,nexus.ensighten.com,AdBlock -- DOMAIN-SUFFIX,nfh.cnshef.com,AdBlock -- DOMAIN-SUFFIX,ngads.go.com,AdBlock -- DOMAIN-SUFFIX,nicelabel.cc,AdBlock -- DOMAIN-SUFFIX,ninebox.cn,AdBlock -- DOMAIN-SUFFIX,ninemsn.imrworldwide.com,AdBlock -- DOMAIN-SUFFIX,niurenw.com,AdBlock -- DOMAIN-SUFFIX,niux88.com,AdBlock -- DOMAIN-SUFFIX,niuxgame77.com,AdBlock -- DOMAIN-SUFFIX,niwd.zhybw88.com,AdBlock -- DOMAIN-SUFFIX,njdijiani.com,AdBlock -- DOMAIN-SUFFIX,njfsk.com,AdBlock -- DOMAIN-SUFFIX,njmpacc.com,AdBlock -- DOMAIN-SUFFIX,njq.net,AdBlock -- DOMAIN-SUFFIX,njs.imagicskin.com,AdBlock -- DOMAIN-SUFFIX,njs.myyage.com,AdBlock -- DOMAIN-SUFFIX,njs.reliancevalve.com,AdBlock -- DOMAIN-SUFFIX,njxczy.com,AdBlock -- DOMAIN-SUFFIX,nkeo.top,AdBlock -- DOMAIN-SUFFIX,nlog.baidu.com,AdBlock -- DOMAIN-SUFFIX,nmbtedu.com,AdBlock -- DOMAIN-SUFFIX,nmkgs.cn,AdBlock -- DOMAIN-SUFFIX,nmpcdn.com,AdBlock -- DOMAIN-SUFFIX,nmqbg.com,AdBlock -- DOMAIN-SUFFIX,nnedbx.com,AdBlock -- DOMAIN-SUFFIX,nngft.com,AdBlock -- DOMAIN-SUFFIX,noberlmall.com,AdBlock -- DOMAIN-SUFFIX,nongsalei.com,AdBlock -- DOMAIN-SUFFIX,nop.xpanama.net,AdBlock -- DOMAIN-SUFFIX,notice.game.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,notice.uchome.manyou.com,AdBlock -- DOMAIN-SUFFIX,notifiter.youmi.net,AdBlock -- DOMAIN-SUFFIX,notify.oupeng.com,AdBlock -- DOMAIN-SUFFIX,novelsns.html5.qq.com,AdBlock -- DOMAIN-SUFFIX,nowskip.com,AdBlock -- DOMAIN-SUFFIX,npdaqy6x1j.me,AdBlock -- DOMAIN-SUFFIX,nr1234.com,AdBlock -- DOMAIN-SUFFIX,nryiou.cn,AdBlock -- DOMAIN-SUFFIX,nsclick.baidu.com,AdBlock -- DOMAIN-SUFFIX,nsclickvideo.baidu.com,AdBlock -- DOMAIN-SUFFIX,nsnmiaomu.cn,AdBlock -- DOMAIN-SUFFIX,nsy.hnzyfs.com,AdBlock -- DOMAIN-SUFFIX,nt.phpwind.com,AdBlock -- DOMAIN-SUFFIX,ntalker.com,AdBlock -- DOMAIN-SUFFIX,nterbx.com,AdBlock -- DOMAIN-SUFFIX,ntfsformac.cc,AdBlock -- DOMAIN-SUFFIX,ntfsformac.cn,AdBlock -- DOMAIN-SUFFIX,nthyn.com,AdBlock -- DOMAIN-SUFFIX,ntx.quanliyouxi.cn,AdBlock -- DOMAIN-SUFFIX,nv.souid.com,AdBlock -- DOMAIN-SUFFIX,nvrentao8.com,AdBlock -- DOMAIN-SUFFIX,nvshenfan.com,AdBlock -- DOMAIN-SUFFIX,nwejs.alcryp.com,AdBlock -- DOMAIN-SUFFIX,nwejs.myzcoffice.com,AdBlock -- DOMAIN-SUFFIX,nwwap.com,AdBlock -- DOMAIN-SUFFIX,nxrhs.com,AdBlock -- DOMAIN-SUFFIX,nxrxt.con,AdBlock -- DOMAIN-SUFFIX,ny7f6goy.bid,AdBlock -- DOMAIN-SUFFIX,nylalobghyhirgh.com,AdBlock -- DOMAIN-SUFFIX,nysita.com,AdBlock -- DOMAIN-SUFFIX,nzezn.com,AdBlock -- DOMAIN-SUFFIX,o.08jm.cn,AdBlock -- DOMAIN-SUFFIX,o.if.qidian.com,AdBlock -- DOMAIN-SUFFIX,o.minisplat.cn,AdBlock -- DOMAIN-SUFFIX,o091i.com,AdBlock -- DOMAIN-SUFFIX,o2o.api.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,o2omobi.com,AdBlock -- DOMAIN-SUFFIX,o7xs6runw.bkt.clouddn.com,AdBlock -- DOMAIN-SUFFIX,oa129.com,AdBlock -- DOMAIN-SUFFIX,oadz.com,AdBlock -- DOMAIN-SUFFIX,oa-panther.data.aliyun.com,AdBlock -- DOMAIN-SUFFIX,oas.autotrader.co.uk,AdBlock -- DOMAIN-SUFFIX,oas.luxweb.com,AdBlock -- DOMAIN-SUFFIX,oas.skyscanner.net,AdBlock -- DOMAIN-SUFFIX,oasc07.citywire.co.uk,AdBlock -- DOMAIN-SUFFIX,oascentral.abclocal.go.com,AdBlock -- DOMAIN-SUFFIX,oascentral.chron.com,AdBlock -- DOMAIN-SUFFIX,oascentral.hosted.ap.org,AdBlock -- DOMAIN-SUFFIX,oascentral.lycos.com,AdBlock -- DOMAIN-SUFFIX,oascentral.newsmax.com,AdBlock -- DOMAIN-SUFFIX,oascentral.sina.com,AdBlock -- DOMAIN-SUFFIX,oascentral.sina.com.hk,AdBlock -- DOMAIN-SUFFIX,oask.xulizui6.com,AdBlock -- DOMAIN-SUFFIX,obeyter.com,AdBlock -- DOMAIN-SUFFIX,ocbv0.baiyangzs.com,AdBlock -- DOMAIN-SUFFIX,odc.starwave.com,AdBlock -- DOMAIN-SUFFIX,odin.goo.mx,AdBlock -- DOMAIN-SUFFIX,officeme.cn,AdBlock -- DOMAIN-SUFFIX,offline-adv.oray.com,AdBlock -- DOMAIN-SUFFIX,oikxlcv.wang,AdBlock -- DOMAIN-SUFFIX,oimagea2.ydstatic.com,AdBlock -- DOMAIN-SUFFIX,ojngisbfwwyp.com,AdBlock -- DOMAIN-SUFFIX,ok.432kkk.com,AdBlock -- DOMAIN-SUFFIX,ok365.com,AdBlock -- DOMAIN-SUFFIX,okkkk.com,AdBlock -- DOMAIN-SUFFIX,okm918.com,AdBlock -- DOMAIN-SUFFIX,okokw.com,AdBlock -- DOMAIN-SUFFIX,olcdn.com,AdBlock -- DOMAIN-SUFFIX,olpv.onlylady.com,AdBlock -- DOMAIN-SUFFIX,olpvimg.onlylady.com,AdBlock -- DOMAIN-SUFFIX,olstats.onlylady.com,AdBlock -- DOMAIN-SUFFIX,omega7o.com,AdBlock -- DOMAIN-SUFFIX,omg.inte.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,omnikool.discovery.com,AdBlock -- DOMAIN-SUFFIX,omtrdc.net,AdBlock -- DOMAIN-SUFFIX,on.maxspeedcdn.com,AdBlock -- DOMAIN-SUFFIX,onclickads.net,AdBlock -- DOMAIN-SUFFIX,onclicktop.com,AdBlock -- DOMAIN-SUFFIX,onclkds.com,AdBlock -- DOMAIN-SUFFIX,one.520319.cn,AdBlock -- DOMAIN-SUFFIX,onepush.query.yahoo.com,AdBlock -- DOMAIN-SUFFIX,onesoft.im,AdBlock -- DOMAIN-SUFFIX,onetad.com,AdBlock -- DOMAIN-SUFFIX,onetag-sys.com,AdBlock -- DOMAIN-SUFFIX,onewhee.com,AdBlock -- DOMAIN-SUFFIX,onlifjj.net,AdBlock -- DOMAIN-SUFFIX,onlinetips.baofeng5.baofeng.net,AdBlock -- DOMAIN-SUFFIX,oomyv.com,AdBlock -- DOMAIN-SUFFIX,ooniu.com,AdBlock -- DOMAIN-SUFFIX,ooss.oss.aliyuncs.com,AdBlock -- DOMAIN-SUFFIX,op00w.baiyangzs.com,AdBlock -- DOMAIN-SUFFIX,open.play.cn,AdBlock -- DOMAIN-SUFFIX,openapi-news.meizu.com,AdBlock -- DOMAIN-SUFFIX,openrcv.baidu.com,AdBlock -- DOMAIN-SUFFIX,openstat.net,AdBlock -- DOMAIN-SUFFIX,openstorage.ad.cmvideo.cn,AdBlock -- DOMAIN-SUFFIX,opgirl-tmp.adbxb.cn,AdBlock -- DOMAIN-SUFFIX,oppo.yidianzixun.com,AdBlock -- DOMAIN-SUFFIX,optaim.com,AdBlock -- DOMAIN-SUFFIX,optimix.asia,AdBlock -- DOMAIN-SUFFIX,optimix.cn,AdBlock -- DOMAIN-SUFFIX,optimized-by.rubiconproject.com,AdBlock -- DOMAIN-SUFFIX,optimizelyapis.com,AdBlock -- DOMAIN-SUFFIX,oq68.com,AdBlock -- DOMAIN-SUFFIX,orchidscape.net,AdBlock -- DOMAIN-SUFFIX,oredero.com,AdBlock -- DOMAIN-SUFFIX,orz.hupu.com,AdBlock -- DOMAIN-SUFFIX,osc.uranus.sogou.com,AdBlock -- DOMAIN-SUFFIX,osfota.cdn.aliyun.com,AdBlock -- DOMAIN-SUFFIX,oss-asq-static.11222.cn,AdBlock -- DOMAIN-SUFFIX,otf.msn.com,AdBlock -- DOMAIN-SUFFIX,oth.eve.mdt.qq.com,AdBlock -- DOMAIN-SUFFIX,oth.str.mdt.qq.com,AdBlock -- DOMAIN-SUFFIX,oth.update.mdt.qq.com,AdBlock -- DOMAIN-SUFFIX,otheve.play.aiseet.atianqi.com,AdBlock -- DOMAIN-SUFFIX,othstr.play.aiseet.atianqi.com,AdBlock -- DOMAIN-SUFFIX,ou188.com,AdBlock -- DOMAIN-SUFFIX,output.nend.net,AdBlock -- DOMAIN-SUFFIX,overture.com,AdBlock -- DOMAIN-SUFFIX,overturechina.com,AdBlock -- DOMAIN-SUFFIX,ow.biqugego.com,AdBlock -- DOMAIN-SUFFIX,ow.s1.shuhuangge.org,AdBlock -- DOMAIN-SUFFIX,ow.s2.shuhuangge.org,AdBlock -- DOMAIN-SUFFIX,owin.biqugego.com,AdBlock -- DOMAIN-SUFFIX,ox.furaffinity.net,AdBlock -- DOMAIN-SUFFIX,oyzsverimywg.com,AdBlock -- DOMAIN-SUFFIX,p.7060.la,AdBlock -- DOMAIN-SUFFIX,p.99mssj.com,AdBlock -- DOMAIN-SUFFIX,p.abcache.com,AdBlock -- DOMAIN-SUFFIX,p.bdjiazanmiaomu.com,AdBlock -- DOMAIN-SUFFIX,p.bjdianyue.com,AdBlock -- DOMAIN-SUFFIX,p.bnuni.com,AdBlock -- DOMAIN-SUFFIX,p.clkservice.youdao.com,AdBlock -- DOMAIN-SUFFIX,p.ecwan77.net,AdBlock -- DOMAIN-SUFFIX,p.inte.sogou.com,AdBlock -- DOMAIN-SUFFIX,p.kf3msfm.com,AdBlock -- DOMAIN-SUFFIX,p.kjwx8.com,AdBlock -- DOMAIN-SUFFIX,p.kugou.com,AdBlock -- DOMAIN-SUFFIX,p.m5bn.com,AdBlock -- DOMAIN-SUFFIX,p.mendoc.cn,AdBlock -- DOMAIN-SUFFIX,p.niudashu.com,AdBlock -- DOMAIN-SUFFIX,p.qiailm.com,AdBlock -- DOMAIN-SUFFIX,p.qijijs.top,AdBlock -- DOMAIN-SUFFIX,p.raidmedia.com.cn,AdBlock -- DOMAIN-SUFFIX,p.rfihub.com,AdBlock -- DOMAIN-SUFFIX,p.saozhu1.top,AdBlock -- DOMAIN-SUFFIX,p.sdu8cvc.com,AdBlock -- DOMAIN-SUFFIX,p.shagent.com,AdBlock -- DOMAIN-SUFFIX,p.skimresources.com,AdBlock -- DOMAIN-SUFFIX,p.szonline.net,AdBlock -- DOMAIN-SUFFIX,p.tamenshuo.com,AdBlock -- DOMAIN-SUFFIX,p.tencentmind.com,AdBlock -- DOMAIN-SUFFIX,p.twitter.com,AdBlock -- DOMAIN-SUFFIX,p.vq6nsu.cn,AdBlock -- DOMAIN-SUFFIX,p.yizuya.com,AdBlock -- DOMAIN-SUFFIX,p.ynjczy.net,AdBlock -- DOMAIN-SUFFIX,p0y.cn,AdBlock -- DOMAIN-SUFFIX,p1.18zhongyao.com,AdBlock -- DOMAIN-SUFFIX,p1.qinsx.cn,AdBlock -- DOMAIN-SUFFIX,p2.hyz86.com,AdBlock -- DOMAIN-SUFFIX,p2.qinsx.cn,AdBlock -- DOMAIN-SUFFIX,p2.ykauto.cn,AdBlock -- DOMAIN-SUFFIX,p215223.clksite.com,AdBlock -- DOMAIN-SUFFIX,p215223.inclk.com,AdBlock -- DOMAIN-SUFFIX,p215223.mycdn2.co,AdBlock -- DOMAIN-SUFFIX,p2pmid.baofeng.com,AdBlock -- DOMAIN-SUFFIX,p3p.sogou.com,AdBlock -- DOMAIN-SUFFIX,p3p.yahoo.com,AdBlock -- DOMAIN-SUFFIX,p3tt.com,AdBlock -- DOMAIN-SUFFIX,p4p.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,p4psearch.china.alibaba.com,AdBlock -- DOMAIN-SUFFIX,p555.cc,AdBlock -- DOMAIN-SUFFIX,p8u.hinet.net,AdBlock -- DOMAIN-SUFFIX,package01.com,AdBlock -- DOMAIN-SUFFIX,pad.zhywyl.cn,AdBlock -- DOMAIN-SUFFIX,padsdel2.cdnads.com,AdBlock -- DOMAIN-SUFFIX,page.acm.dzwww.com,AdBlock -- DOMAIN-SUFFIX,page.xywy.com,AdBlock -- DOMAIN-SUFFIX,pagead.google.com,AdBlock -- DOMAIN-SUFFIX,pagead.l.google.com,AdBlock -- DOMAIN-SUFFIX,pagead-tpc.l.google.com,AdBlock -- DOMAIN-SUFFIX,pagechoice.com,AdBlock -- DOMAIN-SUFFIX,pagechoice.net,AdBlock -- DOMAIN-SUFFIX,pagechoicemotu.gentags.net,AdBlock -- DOMAIN-SUFFIX,pages2.marketo.com,AdBlock -- DOMAIN-SUFFIX,paimgcdn.baidu.com,AdBlock -- DOMAIN-SUFFIX,painiuimg.com,AdBlock -- DOMAIN-SUFFIX,palmnews.sina.cn,AdBlock -- DOMAIN-SUFFIX,panda.kdnet.net,AdBlock -- DOMAIN-SUFFIX,pangu.cc,AdBlock -- DOMAIN-SUFFIX,panoramio.com,AdBlock -- DOMAIN-SUFFIX,papajia55.com,AdBlock -- DOMAIN-SUFFIX,parking.zunmi.cn,AdBlock -- DOMAIN-SUFFIX,parser.houyi.baofeng.net,AdBlock -- DOMAIN-SUFFIX,partner.bargaindomains.com,AdBlock -- DOMAIN-SUFFIX,partner.catchy.com,AdBlock -- DOMAIN-SUFFIX,partner.premiumdomains.com,AdBlock -- DOMAIN-SUFFIX,partner.toutiao.com,AdBlock -- DOMAIN-SUFFIX,partners.fshealth.com,AdBlock -- DOMAIN-SUFFIX,partners.keezmovies.com,AdBlock -- DOMAIN-SUFFIX,partners.optiontide.com,AdBlock -- DOMAIN-SUFFIX,partners.pornerbros.com,AdBlock -- DOMAIN-SUFFIX,partners.rochen.com,AdBlock -- DOMAIN-SUFFIX,partners.sportingbet.com.au,AdBlock -- DOMAIN-SUFFIX,partners.vouchedfor.co.uk,AdBlock -- DOMAIN-SUFFIX,partners.xpertmarket.com,AdBlock -- DOMAIN-SUFFIX,party-nngvitbizn.now.sh,AdBlock -- DOMAIN-SUFFIX,pasco.cc,AdBlock -- DOMAIN-SUFFIX,pass1.soogif.com,AdBlock -- DOMAIN-SUFFIX,pass2.soogif.com,AdBlock -- DOMAIN-SUFFIX,passwordrecovery.cn,AdBlock -- DOMAIN-SUFFIX,passwz.com,AdBlock -- DOMAIN-SUFFIX,pat.farvd.com,AdBlock -- DOMAIN-SUFFIX,patriot.cs.pp.cn,AdBlock -- DOMAIN-SUFFIX,pay.holaq.com,AdBlock -- DOMAIN-SUFFIX,pay.mobile.sina.cn,AdBlock -- DOMAIN-SUFFIX,pay838.com,AdBlock -- DOMAIN-SUFFIX,pb.funshion.net.cn,AdBlock -- DOMAIN-SUFFIX,pb.s3wfg.com,AdBlock -- DOMAIN-SUFFIX,pb.sogou.com,AdBlock -- DOMAIN-SUFFIX,pb.sys.pp8.com,AdBlock -- DOMAIN-SUFFIX,pb.wang502.com,AdBlock -- DOMAIN-SUFFIX,pb3.pstatp.com,AdBlock -- DOMAIN-SUFFIX,pbd.sogou.com,AdBlock -- DOMAIN-SUFFIX,pbs.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,pc.107788.com,AdBlock -- DOMAIN-SUFFIX,pc.5151gj.com,AdBlock -- DOMAIN-SUFFIX,pc.ctsywy.com,AdBlock -- DOMAIN-SUFFIX,pc.quansj.cn,AdBlock -- DOMAIN-SUFFIX,pc.videoclick.baidu.com,AdBlock -- DOMAIN-SUFFIX,pcauto.irs01.com,AdBlock -- DOMAIN-SUFFIX,pcbrowser.dd.qq.com,AdBlock -- DOMAIN-SUFFIX,pcd.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,pcfg.wps.cn,AdBlock -- DOMAIN-SUFFIX,pclog.dftoutiao.com,AdBlock -- DOMAIN-SUFFIX,pclog.suishenyun.net,AdBlock -- DOMAIN-SUFFIX,pcmx.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,pcmzn.com,AdBlock -- DOMAIN-SUFFIX,pcsoftwords.dftoutiao.com,AdBlock -- DOMAIN-SUFFIX,pcxzo.pluto.sogou.com,AdBlock -- DOMAIN-SUFFIX,pd7-imp.revsci.net,AdBlock -- DOMAIN-SUFFIX,pdfexpert.cc,AdBlock -- DOMAIN-SUFFIX,pdl.gionee.com,AdBlock -- DOMAIN-SUFFIX,pdsjycm.com,AdBlock -- DOMAIN-SUFFIX,pear.dleke.com,AdBlock -- DOMAIN-SUFFIX,pedailyu.com,AdBlock -- DOMAIN-SUFFIX,pee.cn,AdBlock -- DOMAIN-SUFFIX,pegasus.cmcm.com,AdBlock -- DOMAIN-SUFFIX,pei-ads.playboy.com,AdBlock -- DOMAIN-SUFFIX,pf.h5game.cn,AdBlock -- DOMAIN-SUFFIX,pf.pchome.net,AdBlock -- DOMAIN-SUFFIX,pf-2.pchome.net,AdBlock -- DOMAIN-SUFFIX,pfp.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,pfpip.sina.com,AdBlock -- DOMAIN-SUFFIX,pgdt.gtimg.cn,AdBlock -- DOMAIN-SUFFIX,pgdt.ugdtimg.com,AdBlock -- DOMAIN-SUFFIX,photo.dhford.cn,AdBlock -- DOMAIN-SUFFIX,photo.lyghjzs.cn,AdBlock -- DOMAIN-SUFFIX,photo.qianerbai.cn,AdBlock -- DOMAIN-SUFFIX,photo.shyexiang.cn,AdBlock -- DOMAIN-SUFFIX,photo.welldex.cn,AdBlock -- DOMAIN-SUFFIX,photo.xunhuaji.cn,AdBlock -- DOMAIN-SUFFIX,photo.zhanhevr.cn,AdBlock -- DOMAIN-SUFFIX,phpad.cqnews.net,AdBlock -- DOMAIN-SUFFIX,pic.0597kk.com,AdBlock -- DOMAIN-SUFFIX,pic.14bobo.com,AdBlock -- DOMAIN-SUFFIX,pic.2u.com.cn,AdBlock -- DOMAIN-SUFFIX,pic.adver.com.tw,AdBlock -- DOMAIN-SUFFIX,pic.aihaogou.com.cn,AdBlock -- DOMAIN-SUFFIX,pic.by175.com,AdBlock -- DOMAIN-SUFFIX,pic.casee.cn,AdBlock -- DOMAIN-SUFFIX,pic.cnmo-img.com.cn,AdBlock -- DOMAIN-SUFFIX,pic.dotmore.com.tw,AdBlock -- DOMAIN-SUFFIX,pic.ea3w.com,AdBlock -- DOMAIN-SUFFIX,pic.eduancm.com,AdBlock -- DOMAIN-SUFFIX,pic.fengniao.com,AdBlock -- DOMAIN-SUFFIX,pic.haowj.com.cn,AdBlock -- DOMAIN-SUFFIX,pic.jdbbs.com,AdBlock -- DOMAIN-SUFFIX,pic.jd-bbs.com,AdBlock -- DOMAIN-SUFFIX,pic.jdunion.com,AdBlock -- DOMAIN-SUFFIX,pic.moad.cn,AdBlock -- DOMAIN-SUFFIX,pic.neiyicun.net,AdBlock -- DOMAIN-SUFFIX,pic.new400.cn,AdBlock -- DOMAIN-SUFFIX,pic.pic-img.com,AdBlock -- DOMAIN-SUFFIX,pic.punchbox.org,AdBlock -- DOMAIN-SUFFIX,pic.pxstda.com,AdBlock -- DOMAIN-SUFFIX,pic.usingde.com,AdBlock -- DOMAIN-SUFFIX,pic.zol-img.com.cn,AdBlock -- DOMAIN-SUFFIX,pic1.59wd.com,AdBlock -- DOMAIN-SUFFIX,pic1.onetad.com,AdBlock -- DOMAIN-SUFFIX,pic183025.images9999.com,AdBlock -- DOMAIN-SUFFIX,pic2.onetad.com,AdBlock -- DOMAIN-SUFFIX,pic2016.5442.com,AdBlock -- DOMAIN-SUFFIX,pic2016.ytqmx.com,AdBlock -- DOMAIN-SUFFIX,pic3.onetad.com,AdBlock -- DOMAIN-SUFFIX,pic494036.images9999.com,AdBlock -- DOMAIN-SUFFIX,pic8.onetad.com,AdBlock -- DOMAIN-SUFFIX,pic837013.images9999.com,AdBlock -- DOMAIN-SUFFIX,picsinfog.com,AdBlock -- DOMAIN-SUFFIX,picture.duokan.com,AdBlock -- DOMAIN-SUFFIX,picturesquefilms.net,AdBlock -- DOMAIN-SUFFIX,pikacn.com,AdBlock -- DOMAIN-SUFFIX,pimg1.126.net,AdBlock -- DOMAIN-SUFFIX,ping.acc.sogou.com,AdBlock -- DOMAIN-SUFFIX,ping.chartbeat.net,AdBlock -- DOMAIN-SUFFIX,ping.pinyin.sogou.com,AdBlock -- DOMAIN-SUFFIX,ping.weiduofan.com,AdBlock -- DOMAIN-SUFFIX,pingbi.diudou.com,AdBlock -- DOMAIN-SUFFIX,pingdom.net,AdBlock -- DOMAIN-SUFFIX,pingma.qq.com,AdBlock -- DOMAIN-SUFFIX,pingshetrip.com,AdBlock -- DOMAIN-SUFFIX,pintour.com,AdBlock -- DOMAIN-SUFFIX,pinzhitmall.com,AdBlock -- DOMAIN-SUFFIX,pix.impdesk.com,AdBlock -- DOMAIN-SUFFIX,pix.tagcdn.com,AdBlock -- DOMAIN-SUFFIX,pix04.revsci.net,AdBlock -- DOMAIN-SUFFIX,pixel.adsafeprotected.com,AdBlock -- DOMAIN-SUFFIX,pixel.mathtag.com,AdBlock -- DOMAIN-SUFFIX,pixel.quantserve.com,AdBlock -- DOMAIN-SUFFIX,pixel.rubiconproject.com,AdBlock -- DOMAIN-SUFFIX,pixel.tapad.com,AdBlock -- DOMAIN-SUFFIX,pixel.vihub.ru,AdBlock -- DOMAIN-SUFFIX,pixel.wp.com,AdBlock -- DOMAIN-SUFFIX,pixel-hk.pixelinteractivemedia.com,AdBlock -- DOMAIN-SUFFIX,pixels.asia,AdBlock -- DOMAIN-SUFFIX,pixfuture.net,AdBlock -- DOMAIN-SUFFIX,pj3456.com,AdBlock -- DOMAIN-SUFFIX,pj39330.com,AdBlock -- DOMAIN-SUFFIX,pj50.com,AdBlock -- DOMAIN-SUFFIX,pj5189.com,AdBlock -- DOMAIN-SUFFIX,pj550077.com,AdBlock -- DOMAIN-SUFFIX,pjbjzf.com,AdBlock -- DOMAIN-SUFFIX,pjogndc8ixoidna.360doc.cn,AdBlock -- DOMAIN-SUFFIX,pjtymy.cn,AdBlock -- DOMAIN-SUFFIX,pjyu.golden1.sogou.com,AdBlock -- DOMAIN-SUFFIX,pk840.com,AdBlock -- DOMAIN-SUFFIX,p-l.play.aiseet.atianqi.com,AdBlock -- DOMAIN-SUFFIX,pl108258.puserving.com,AdBlock -- DOMAIN-SUFFIX,pl14369502.puserving.com,AdBlock -- DOMAIN-SUFFIX,platform.wondershare.com,AdBlock -- DOMAIN-SUFFIX,playad.xjmg.com,AdBlock -- DOMAIN-SUFFIX,player.1800coupon.com,AdBlock -- DOMAIN-SUFFIX,player.1stcreditrepairs.com,AdBlock -- DOMAIN-SUFFIX,player.800directories.com,AdBlock -- DOMAIN-SUFFIX,player.accoona.com,AdBlock -- DOMAIN-SUFFIX,player.alloutwedding.com,AdBlock -- DOMAIN-SUFFIX,player.insuranceandhealth.com,AdBlock -- DOMAIN-SUFFIX,playinfo.gomlab.com,AdBlock -- DOMAIN-SUFFIX,plista.com,AdBlock -- DOMAIN-SUFFIX,plmkolp.m.58xs.tw,AdBlock -- DOMAIN-SUFFIX,plt.data.pplive.com,AdBlock -- DOMAIN-SUFFIX,plwan.com,AdBlock -- DOMAIN-SUFFIX,plz.jandan.net,AdBlock -- DOMAIN-SUFFIX,pm.sdaiv.com,AdBlock -- DOMAIN-SUFFIX,pmir.3g.qq.com,AdBlock -- DOMAIN-SUFFIX,pmm.people.com.cn,AdBlock -- DOMAIN-SUFFIX,pmptrack-autohome.gentags.net,AdBlock -- DOMAIN-SUFFIX,pmptrack-letv.gentags.net,AdBlock -- DOMAIN-SUFFIX,pmptrack-yidianzixunxm.gentags.net,AdBlock -- DOMAIN-SUFFIX,pmptrack-youku.gentags.net,AdBlock -- DOMAIN-SUFFIX,png.lu.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,pnhfc.com,AdBlock -- DOMAIN-SUFFIX,pofang.com,AdBlock -- DOMAIN-SUFFIX,polkoa.com,AdBlock -- DOMAIN-SUFFIX,pomhz.com,AdBlock -- DOMAIN-SUFFIX,pop.91mangrandi.com,AdBlock -- DOMAIN-SUFFIX,pop.code.mytanwan.com,AdBlock -- DOMAIN-SUFFIX,pop.code.poyang.cn,AdBlock -- DOMAIN-SUFFIX,pop.sjk.ijinshan.com,AdBlock -- DOMAIN-SUFFIX,popads.net,AdBlock -- DOMAIN-SUFFIX,popme.163.com,AdBlock -- DOMAIN-SUFFIX,poppyta.com,AdBlock -- DOMAIN-SUFFIX,popup.jointreport-switch.com,AdBlock -- DOMAIN-SUFFIX,popup.msn.com,AdBlock -- DOMAIN-SUFFIX,popupad.cn,AdBlock -- DOMAIN-SUFFIX,pos.baidu.com,AdBlock -- DOMAIN-SUFFIX,post.ra.icast.cn,AdBlock -- DOMAIN-SUFFIX,poster.weather.com.cn,AdBlock -- DOMAIN-SUFFIX,powergg.top,AdBlock -- DOMAIN-SUFFIX,poyang.com,AdBlock -- DOMAIN-SUFFIX,pp.sxjkc.cn,AdBlock -- DOMAIN-SUFFIX,pp2.dhzw.org,AdBlock -- DOMAIN-SUFFIX,pp9899.com,AdBlock -- DOMAIN-SUFFIX,ppjia55.com,AdBlock -- DOMAIN-SUFFIX,ppoi.org,AdBlock -- DOMAIN-SUFFIX,ppurifier.game.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,ppx.hgo7r.cn,AdBlock -- DOMAIN-SUFFIX,pr.atwola.com,AdBlock -- DOMAIN-SUFFIX,pr.da.netease.com,AdBlock -- DOMAIN-SUFFIX,pr.ybp.yahoo.com,AdBlock -- DOMAIN-SUFFIX,pr00001.com,AdBlock -- DOMAIN-SUFFIX,practivate.adobe.com,AdBlock -- DOMAIN-SUFFIX,pr-bh.ybp.yahoo.com,AdBlock -- DOMAIN-SUFFIX,prc.rjje4.com,AdBlock -- DOMAIN-SUFFIX,prcappzone.intel.com,AdBlock -- DOMAIN-SUFFIX,pre.api.tw06.xlmc.sandai.net,AdBlock -- DOMAIN-SUFFIX,pre.ra.icast.cn,AdBlock -- DOMAIN-SUFFIX,prerollads.ign.com,AdBlock -- DOMAIN-SUFFIX,priceinfo.comuv.com,AdBlock -- DOMAIN-SUFFIX,pro.cn,AdBlock -- DOMAIN-SUFFIX,pro.heiguang.com,AdBlock -- DOMAIN-SUFFIX,pro.iweihai.cn,AdBlock -- DOMAIN-SUFFIX,probes.cedexis.com,AdBlock -- DOMAIN-SUFFIX,profile.ssp.rambler.ru,AdBlock -- DOMAIN-SUFFIX,projectwonderful.com,AdBlock -- DOMAIN-SUFFIX,prom.gome.com.cn,AdBlock -- DOMAIN-SUFFIX,promo.fileforum.com,AdBlock -- DOMAIN-SUFFIX,promos.fling.com,AdBlock -- DOMAIN-SUFFIX,promote.biz.weibo.cn,AdBlock -- DOMAIN-SUFFIX,promote.caixin.com,AdBlock -- DOMAIN-SUFFIX,promote.pair.com,AdBlock -- DOMAIN-SUFFIX,promotion.aliyun.com,AdBlock -- DOMAIN-SUFFIX,promotion.gomlab.com,AdBlock -- DOMAIN-SUFFIX,promotions.iasbet.com,AdBlock -- DOMAIN-SUFFIX,propellerads.com,AdBlock -- DOMAIN-SUFFIX,prophet.heise.de,AdBlock -- DOMAIN-SUFFIX,proton.flurry.com,AdBlock -- DOMAIN-SUFFIX,proxy.sec.miui.com,AdBlock -- DOMAIN-SUFFIX,prw.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,ps.3fenge.com,AdBlock -- DOMAIN-SUFFIX,psb.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,psfq.gou.sogou.com,AdBlock -- DOMAIN-SUFFIX,psma02.com,AdBlock -- DOMAIN-SUFFIX,ptdrw.com,AdBlock -- DOMAIN-SUFFIX,ptkhy.com,AdBlock -- DOMAIN-SUFFIX,ptw.la,AdBlock -- DOMAIN-SUFFIX,pub.betclick.com,AdBlock -- DOMAIN-SUFFIX,pub.chinadailyasia.com,AdBlock -- DOMAIN-SUFFIX,pub.funshion.com,AdBlock -- DOMAIN-SUFFIX,pub.mop.com,AdBlock -- DOMAIN-SUFFIX,pub1.cope.es,AdBlock -- DOMAIN-SUFFIX,pubbirdf.com,AdBlock -- DOMAIN-SUFFIX,public.app.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,public6.com,AdBlock -- DOMAIN-SUFFIX,publicidad.net,AdBlock -- DOMAIN-SUFFIX,publicidad.tv,AdBlock -- DOMAIN-SUFFIX,publish.ad.youth.cn,AdBlock -- DOMAIN-SUFFIX,pubmatic.com,AdBlock -- DOMAIN-SUFFIX,pubnative.net,AdBlock -- DOMAIN-SUFFIX,pubnub.com,AdBlock -- DOMAIN-SUFFIX,pubs.hiddennetwork.com,AdBlock -- DOMAIN-SUFFIX,puds.test.uae.uc.cn,AdBlock -- DOMAIN-SUFFIX,puds.ucweb.com,AdBlock -- DOMAIN-SUFFIX,pull.push.sogou.com,AdBlock -- DOMAIN-SUFFIX,punchbox.org,AdBlock -- DOMAIN-SUFFIX,punuomisi.cn,AdBlock -- DOMAIN-SUFFIX,pups.bdimg.com,AdBlock -- DOMAIN-SUFFIX,pupu.xnhh120.com,AdBlock -- DOMAIN-SUFFIX,push.126.net,AdBlock -- DOMAIN-SUFFIX,push.5z5zw.com,AdBlock -- DOMAIN-SUFFIX,push.air-matters.com,AdBlock -- DOMAIN-SUFFIX,push.app.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,push.com2us.net,AdBlock -- DOMAIN-SUFFIX,push.feng.com,AdBlock -- DOMAIN-SUFFIX,push.mobile.kugou.com,AdBlock -- DOMAIN-SUFFIX,push.res.meizu.com,AdBlock -- DOMAIN-SUFFIX,push.wandoujia.com,AdBlock -- DOMAIN-SUFFIX,push.wapx.cn,AdBlock -- DOMAIN-SUFFIX,push.yuedu.163.com,AdBlock -- DOMAIN-SUFFIX,push.zdworks.com,AdBlock -- DOMAIN-SUFFIX,push.zhangyue.com,AdBlock -- DOMAIN-SUFFIX,push.zhanzhang.baidu.com,AdBlock -- DOMAIN-SUFFIX,push-android.myzaker.com,AdBlock -- DOMAIN-SUFFIX,pushapi.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,push-dc.51y5.net,AdBlock -- DOMAIN-SUFFIX,pv.alert.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,pv.anzhi.com,AdBlock -- DOMAIN-SUFFIX,pv.cheshi.com,AdBlock -- DOMAIN-SUFFIX,pv.enet.com.cn,AdBlock -- DOMAIN-SUFFIX,pv.focus.cn,AdBlock -- DOMAIN-SUFFIX,pv.ra.icast.cn,AdBlock -- DOMAIN-SUFFIX,pv.sogou.com,AdBlock -- DOMAIN-SUFFIX,pv.xcar.com.cn,AdBlock -- DOMAIN-SUFFIX,pv.zdnet.com.cn,AdBlock -- DOMAIN-SUFFIX,pv.zol.com.cn,AdBlock -- DOMAIN-SUFFIX,pvc.zol.com.cn,AdBlock -- DOMAIN-SUFFIX,pvdata.ku6.com,AdBlock -- DOMAIN-SUFFIX,pvlog.hd.baofeng.com,AdBlock -- DOMAIN-SUFFIX,pvlog.moviebox.baofeng.net,AdBlock -- DOMAIN-SUFFIX,pvm.zol.com.cn,AdBlock -- DOMAIN-SUFFIX,pvmsite.zol.com.cn,AdBlock -- DOMAIN-SUFFIX,pvsite.zol.com.cn,AdBlock -- DOMAIN-SUFFIX,pvstat.html5.qq.com,AdBlock -- DOMAIN-SUFFIX,pvtest.zol.com.cn,AdBlock -- DOMAIN-SUFFIX,pvx.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,pwj.biqugezw.com,AdBlock -- DOMAIN-SUFFIX,px.adhigh.net,AdBlock -- DOMAIN-SUFFIX,px.media-serving.com,AdBlock -- DOMAIN-SUFFIX,px.moatads.com,AdBlock -- DOMAIN-SUFFIX,px.owneriq.net,AdBlock -- DOMAIN-SUFFIX,px.powerlinks.com,AdBlock -- DOMAIN-SUFFIX,px.steelhousemedia.com,AdBlock -- DOMAIN-SUFFIX,pxene.com,AdBlock -- DOMAIN-SUFFIX,pxl.connexity.net,AdBlock -- DOMAIN-SUFFIX,py.qlogo.cn,AdBlock -- DOMAIN-SUFFIX,py.wikigifth.com,AdBlock -- DOMAIN-SUFFIX,py2.qlogo.cn,AdBlock -- DOMAIN-SUFFIX,pyerc.com,AdBlock -- DOMAIN-SUFFIX,pyzkk.com,AdBlock -- DOMAIN-SUFFIX,q.ox11.com,AdBlock -- DOMAIN-SUFFIX,q.s.cr-nielsen.com,AdBlock -- DOMAIN-SUFFIX,q1scv.vov0.com,AdBlock -- DOMAIN-SUFFIX,q6rwa.eschangchi.com,AdBlock -- DOMAIN-SUFFIX,qbyy010.com,AdBlock -- DOMAIN-SUFFIX,qchannel01.cn,AdBlock -- DOMAIN-SUFFIX,qchannel02.cn,AdBlock -- DOMAIN-SUFFIX,qchannel03.cn,AdBlock -- DOMAIN-SUFFIX,qchannel04.cn,AdBlock -- DOMAIN-SUFFIX,qcjslm.com,AdBlock -- DOMAIN-SUFFIX,qcl777.com,AdBlock -- DOMAIN-SUFFIX,qd.dhzw.org,AdBlock -- DOMAIN-SUFFIX,qd.js.sanjiangge.com,AdBlock -- DOMAIN-SUFFIX,qd.moutaihotel.cn,AdBlock -- DOMAIN-SUFFIX,qd.wanjuanba.com,AdBlock -- DOMAIN-SUFFIX,qd.x4399.com,AdBlock -- DOMAIN-SUFFIX,qdchunyu.com,AdBlock -- DOMAIN-SUFFIX,qeoa.hawbfa.com,AdBlock -- DOMAIN-SUFFIX,qgss8.com,AdBlock -- DOMAIN-SUFFIX,qhaif.com,AdBlock -- DOMAIN-SUFFIX,qhl.bealge.sogou.com,AdBlock -- DOMAIN-SUFFIX,qiailm.com,AdBlock -- DOMAIN-SUFFIX,qianclick.baidu.com,AdBlock -- DOMAIN-SUFFIX,qiaopiguniang.com,AdBlock -- DOMAIN-SUFFIX,qichexin.com,AdBlock -- DOMAIN-SUFFIX,qihaoqu.com,AdBlock -- DOMAIN-SUFFIX,qinchugudao.com,AdBlock -- DOMAIN-SUFFIX,qingqu.la,AdBlock -- DOMAIN-SUFFIX,qiqipower.com,AdBlock -- DOMAIN-SUFFIX,qiqivv.com,AdBlock -- DOMAIN-SUFFIX,qiqiww.com,AdBlock -- DOMAIN-SUFFIX,qiqiyii.com,AdBlock -- DOMAIN-SUFFIX,qiye11.ejunshi.net,AdBlock -- DOMAIN-SUFFIX,qiyem.ejunshi.com,AdBlock -- DOMAIN-SUFFIX,qiyezs.ejunshi.com,AdBlock -- DOMAIN-SUFFIX,qiyou.com,AdBlock -- DOMAIN-SUFFIX,qjfcdn1220.0101122.com,AdBlock -- DOMAIN-SUFFIX,qjjtc.com,AdBlock -- DOMAIN-SUFFIX,qlisv.siemens6es7.com,AdBlock -- DOMAIN-SUFFIX,qlmho.renhengshangmao.com,AdBlock -- DOMAIN-SUFFIX,qloer.com,AdBlock -- DOMAIN-SUFFIX,qlonglong.com,AdBlock -- DOMAIN-SUFFIX,qmkdy.com,AdBlock -- DOMAIN-SUFFIX,qoiusky.com,AdBlock -- DOMAIN-SUFFIX,qooic.com,AdBlock -- DOMAIN-SUFFIX,qp.yunanfuwuqi.com,AdBlock -- DOMAIN-SUFFIX,qq.guansenff.cn,AdBlock -- DOMAIN-SUFFIX,qq.irs01.com,AdBlock -- DOMAIN-SUFFIX,qq.tapiche.cn,AdBlock -- DOMAIN-SUFFIX,qq2.co,AdBlock -- DOMAIN-SUFFIX,qq61.com,AdBlock -- DOMAIN-SUFFIX,qqhuhu.com,AdBlock -- DOMAIN-SUFFIX,qqm98.com,AdBlock -- DOMAIN-SUFFIX,qqshow2-item.qq.com,AdBlock -- DOMAIN-SUFFIX,qqx.cqqytgpt.com,AdBlock -- DOMAIN-SUFFIX,qqzu.com,AdBlock -- DOMAIN-SUFFIX,qsbz2011.com,AdBlock -- DOMAIN-SUFFIX,qshxc.com,AdBlock -- DOMAIN-SUFFIX,qt.biqugezw.com,AdBlock -- DOMAIN-SUFFIX,qt002x.corp.youdao.com,AdBlock -- DOMAIN-SUFFIX,qtmojo.cn,AdBlock -- DOMAIN-SUFFIX,qtmojo.com,AdBlock -- DOMAIN-SUFFIX,quanliyouxi.cn,AdBlock -- DOMAIN-SUFFIX,quansj.cn,AdBlock -- DOMAIN-SUFFIX,quantcount.com,AdBlock -- DOMAIN-SUFFIX,quantserve.com,AdBlock -- DOMAIN-SUFFIX,qucaigg.com,AdBlock -- DOMAIN-SUFFIX,queene.cn,AdBlock -- DOMAIN-SUFFIX,questionmarket.com,AdBlock -- DOMAIN-SUFFIX,qujishu.com,AdBlock -- DOMAIN-SUFFIX,qumi.com,AdBlock -- DOMAIN-SUFFIX,qupinhj.com,AdBlock -- DOMAIN-SUFFIX,qutaobi.com,AdBlock -- DOMAIN-SUFFIX,quw18.com,AdBlock -- DOMAIN-SUFFIX,quyaoya.com,AdBlock -- DOMAIN-SUFFIX,qweqwe.mctvhp.cn,AdBlock -- DOMAIN-SUFFIX,qxjdlf.com,AdBlock -- DOMAIN-SUFFIX,qxm.pluto.sogou.com,AdBlock -- DOMAIN-SUFFIX,qxxys.com,AdBlock -- DOMAIN-SUFFIX,qyctj.com,AdBlock -- DOMAIN-SUFFIX,qytyf.com,AdBlock -- DOMAIN-SUFFIX,qzdag.com,AdBlock -- DOMAIN-SUFFIX,qzdfc.com,AdBlock -- DOMAIN-SUFFIX,qzgjprj.com,AdBlock -- DOMAIN-SUFFIX,qzkxt.com,AdBlock -- DOMAIN-SUFFIX,r.0.0.0.0.cn,AdBlock -- DOMAIN-SUFFIX,r.254a.com,AdBlock -- DOMAIN-SUFFIX,r.5207470.com,AdBlock -- DOMAIN-SUFFIX,r.browser.miui.com,AdBlock -- DOMAIN-SUFFIX,r.bxb.oupeng.com,AdBlock -- DOMAIN-SUFFIX,r.dmp.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,r.mail.163.com,AdBlock -- DOMAIN-SUFFIX,r.msn.com,AdBlock -- DOMAIN-SUFFIX,r.myadx.net,AdBlock -- DOMAIN-SUFFIX,r.ow.0.0.0.0.cn,AdBlock -- DOMAIN-SUFFIX,r.pixgold.com,AdBlock -- DOMAIN-SUFFIX,r.radikal.ru,AdBlock -- DOMAIN-SUFFIX,r.xcycm.com,AdBlock -- DOMAIN-SUFFIX,r.youmi.net,AdBlock -- DOMAIN-SUFFIX,r.zlongad.com,AdBlock -- DOMAIN-SUFFIX,r8nu86wg.me,AdBlock -- DOMAIN-SUFFIX,ra.gtimg.com,AdBlock -- DOMAIN-SUFFIX,rabbit.meitustat.com,AdBlock -- DOMAIN-SUFFIX,rabbit.tg.meitu.com,AdBlock -- DOMAIN-SUFFIX,rack.bauermedia.co.uk,AdBlock -- DOMAIN-SUFFIX,rad.live.com,AdBlock -- DOMAIN-SUFFIX,rad.microsoft.com,AdBlock -- DOMAIN-SUFFIX,rad.msn.com,AdBlock -- DOMAIN-SUFFIX,rad.reporo.net,AdBlock -- DOMAIN-SUFFIX,radar.cedexis.com,AdBlock -- DOMAIN-SUFFIX,raeqqe.cn,AdBlock -- DOMAIN-SUFFIX,rank.hit.china.com,AdBlock -- DOMAIN-SUFFIX,rannabio.com,AdBlock -- DOMAIN-SUFFIX,ratings.lycos.com,AdBlock -- DOMAIN-SUFFIX,raw.okwan.cn,AdBlock -- DOMAIN-SUFFIX,rayjump.com,AdBlock -- DOMAIN-SUFFIX,rbp.emea.mxptint.net,AdBlock -- DOMAIN-SUFFIX,rbp.mxptint.net,AdBlock -- DOMAIN-SUFFIX,rbs.haiyunx.com,AdBlock -- DOMAIN-SUFFIX,rbywg.com,AdBlock -- DOMAIN-SUFFIX,rc.fthcz.com,AdBlock -- DOMAIN-SUFFIX,rc.haodongkeji.cn,AdBlock -- DOMAIN-SUFFIX,rc.mgwcn.com,AdBlock -- DOMAIN-SUFFIX,rc.xmcmn.com,AdBlock -- DOMAIN-SUFFIX,rc2waycm-atl.netmng.com,AdBlock -- DOMAIN-SUFFIX,rc-au.imrworldwide.com,AdBlock -- DOMAIN-SUFFIX,rcmd.pop.ijinshan.com,AdBlock -- DOMAIN-SUFFIX,rcp.c.appier.net,AdBlock -- DOMAIN-SUFFIX,rcv.iclicash.com,AdBlock -- DOMAIN-SUFFIX,rcv.jesgoo.com,AdBlock -- DOMAIN-SUFFIX,rcv.mobad.ijinshan.com,AdBlock -- DOMAIN-SUFFIX,rcv.moogos.com,AdBlock -- DOMAIN-SUFFIX,rcv.union-wifi.com,AdBlock -- DOMAIN-SUFFIX,rcyy3.kaopuwangjz.com,AdBlock -- DOMAIN-SUFFIX,rd.ane.yahoo.co.jp,AdBlock -- DOMAIN-SUFFIX,rd.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,rd.da.netease.com,AdBlock -- DOMAIN-SUFFIX,rd.e.sogou.com,AdBlock -- DOMAIN-SUFFIX,rdiqt.cn,AdBlock -- DOMAIN-SUFFIX,rdtuijian.com,AdBlock -- DOMAIN-SUFFIX,rdx.autohome.com.cn,AdBlock -- DOMAIN-SUFFIX,re.m.taobao.com,AdBlock -- DOMAIN-SUFFIX,re.taobao.com,AdBlock -- DOMAIN-SUFFIX,re.taotaosou.com,AdBlock -- DOMAIN-SUFFIX,reachmax.cn,AdBlock -- DOMAIN-SUFFIX,reader.browser.miui.com,AdBlock -- DOMAIN-SUFFIX,reader.meizu.com,AdBlock -- DOMAIN-SUFFIX,reader.res.meizu.com,AdBlock -- DOMAIN-SUFFIX,realtime.monitor.ppweb.com.cn,AdBlock -- DOMAIN-SUFFIX,rec.g.163.com,AdBlock -- DOMAIN-SUFFIX,rec.moviebox.baofeng.net,AdBlock -- DOMAIN-SUFFIX,recreativ.ru,AdBlock -- DOMAIN-SUFFIX,recv-vd.gridsumdissector.cn,AdBlock -- DOMAIN-SUFFIX,recv-vd.gridsumdissector.com,AdBlock -- DOMAIN-SUFFIX,recv-wd.gridsumdissector.com,AdBlock -- DOMAIN-SUFFIX,red.bayimg.net,AdBlock -- DOMAIN-SUFFIX,redirect.simba.taobao.com,AdBlock -- DOMAIN-SUFFIX,redpaper-10006092.cos.myqcloud.com,AdBlock -- DOMAIN-SUFFIX,redvase.bravenet.com,AdBlock -- DOMAIN-SUFFIX,referrer.disqus.com,AdBlock -- DOMAIN-SUFFIX,relap.io,AdBlock -- DOMAIN-SUFFIX,release.baidu.com,AdBlock -- DOMAIN-SUFFIX,reliancevalve.com,AdBlock -- DOMAIN-SUFFIX,remote88.com,AdBlock -- DOMAIN-SUFFIX,remotedu.cn,AdBlock -- DOMAIN-SUFFIX,rem-track.bild.de,AdBlock -- DOMAIN-SUFFIX,rencai56.com,AdBlock -- DOMAIN-SUFFIX,renren2.maoyun.tv,AdBlock -- DOMAIN-SUFFIX,req.startappservice.com,AdBlock -- DOMAIN-SUFFIX,res.cocounion.com,AdBlock -- DOMAIN-SUFFIX,res.dxpmedia.com,AdBlock -- DOMAIN-SUFFIX,res.icast.cn,AdBlock -- DOMAIN-SUFFIX,res.ipingke.com,AdBlock -- DOMAIN-SUFFIX,res.qhupdate.com,AdBlock -- DOMAIN-SUFFIX,res3.feedsportal.com,AdBlock -- DOMAIN-SUFFIX,rescn.u3.ucweb.com,AdBlock -- DOMAIN-SUFFIX,resetgey.com,AdBlock -- DOMAIN-SUFFIX,res-ga.smzdm.com,AdBlock -- DOMAIN-SUFFIX,resolver.gslb.mi-idc.com,AdBlock -- DOMAIN-SUFFIX,resolver.msg.xiaomi.net,AdBlock -- DOMAIN-SUFFIX,resource.baomihua.com,AdBlock -- DOMAIN-SUFFIX,responsys.net,AdBlock -- DOMAIN-SUFFIX,ret.xinlongrubber.com,AdBlock -- DOMAIN-SUFFIX,rev.fapdu.com,AdBlock -- DOMAIN-SUFFIX,revdepo.com,AdBlock -- DOMAIN-SUFFIX,revealads.appspot.com,AdBlock -- DOMAIN-SUFFIX,revsci.net,AdBlock -- DOMAIN-SUFFIX,rfir2.50w.me,AdBlock -- DOMAIN-SUFFIX,rh.code.jjyx.com,AdBlock -- DOMAIN-SUFFIX,rh.greenbetterkids.com,AdBlock -- DOMAIN-SUFFIX,rhgyg.com,AdBlock -- DOMAIN-SUFFIX,rich.kuwo.cn,AdBlock -- DOMAIN-SUFFIX,richmedia.yimg.com,AdBlock -- DOMAIN-SUFFIX,riqu2015.com,AdBlock -- DOMAIN-SUFFIX,river.zhidao.baidu.com,AdBlock -- DOMAIN-SUFFIX,rj.baidu.com,AdBlock -- DOMAIN-SUFFIX,rjgw.theta.sogou.com,AdBlock -- DOMAIN-SUFFIX,rjs.niuxgame77.com,AdBlock -- DOMAIN-SUFFIX,rk.rongchengxxw.com,AdBlock -- DOMAIN-SUFFIX,rlcdn.com,AdBlock -- DOMAIN-SUFFIX,rlogs.youdao.com,AdBlock -- DOMAIN-SUFFIX,rm.ra.icast.cn,AdBlock -- DOMAIN-SUFFIX,rm.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,rmads.eu.msn.com,AdBlock -- DOMAIN-SUFFIX,rmads.msn.com,AdBlock -- DOMAIN-SUFFIX,rmcxw.cn,AdBlock -- DOMAIN-SUFFIX,rmoeu.mercury.sogou.com,AdBlock -- DOMAIN-SUFFIX,rmtx.ra.icast.cn,AdBlock -- DOMAIN-SUFFIX,rmw.jdburl.com,AdBlock -- DOMAIN-SUFFIX,rnfrfxqztlno.com,AdBlock -- DOMAIN-SUFFIX,roia.com,AdBlock -- DOMAIN-SUFFIX,rosi.okkkk.com,AdBlock -- DOMAIN-SUFFIX,rotabanner.kulichki.net,AdBlock -- DOMAIN-SUFFIX,rotate.ymtracking.com,AdBlock -- DOMAIN-SUFFIX,rotator.tradetracker.net,AdBlock -- DOMAIN-SUFFIX,router.bittorrent.com,AdBlock -- DOMAIN-SUFFIX,rovio-news-app.angrybirdsgame.com,AdBlock -- DOMAIN-SUFFIX,rp.crasheye.cn,AdBlock -- DOMAIN-SUFFIX,rp.gwallet.com,AdBlock -- DOMAIN-SUFFIX,rpaulfrank.com,AdBlock -- DOMAIN-SUFFIX,rpc-php.trafficfactory.biz,AdBlock -- DOMAIN-SUFFIX,rplog.baidu.com,AdBlock -- DOMAIN-SUFFIX,rpnews.itaoxiaoshuo.com,AdBlock -- DOMAIN-SUFFIX,rpt.anchorfree.net,AdBlock -- DOMAIN-SUFFIX,rqgsf.com,AdBlock -- DOMAIN-SUFFIX,rr.knet.cn,AdBlock -- DOMAIN-SUFFIX,rrr.youle55.com,AdBlock -- DOMAIN-SUFFIX,rrsubway.com,AdBlock -- DOMAIN-SUFFIX,rs.sinajs.cn,AdBlock -- DOMAIN-SUFFIX,rs1.rensheng5.com,AdBlock -- DOMAIN-SUFFIX,rsas.szzek.com,AdBlock -- DOMAIN-SUFFIX,rsccs.com,AdBlock -- DOMAIN-SUFFIX,rt.funshion.net,AdBlock -- DOMAIN-SUFFIX,rt.gsspat.jp,AdBlock -- DOMAIN-SUFFIX,rtas.videocc.net,AdBlock -- DOMAIN-SUFFIX,rtax.criteo.com,AdBlock -- DOMAIN-SUFFIX,rtb.com.ru,AdBlock -- DOMAIN-SUFFIX,rtb.eanalyzer.de,AdBlock -- DOMAIN-SUFFIX,rtb.metrigo.com,AdBlock -- DOMAIN-SUFFIX,rtbasia.com,AdBlock -- DOMAIN-SUFFIX,rtb-p.kejet.net,AdBlock -- DOMAIN-SUFFIX,rtbstat.zcdsp.com,AdBlock -- DOMAIN-SUFFIX,rtlog.vidown.cn,AdBlock -- DOMAIN-SUFFIX,rtmonitor.kugou.com,AdBlock -- DOMAIN-SUFFIX,rto.steelhousemedia.com,AdBlock -- DOMAIN-SUFFIX,ruan88.com,AdBlock -- DOMAIN-SUFFIX,rubicon-match.dotomi.com,AdBlock -- DOMAIN-SUFFIX,rubiconproject.com,AdBlock -- DOMAIN-SUFFIX,rudy.adsnative.com,AdBlock -- DOMAIN-SUFFIX,ru-gmtdmp.mookie1.com,AdBlock -- DOMAIN-SUFFIX,rum-collector.pingdom.net,AdBlock -- DOMAIN-SUFFIX,rum-static.pingdom.net,AdBlock -- DOMAIN-SUFFIX,runetki.joyreactor.ru,AdBlock -- DOMAIN-SUFFIX,runiman.com,AdBlock -- DOMAIN-SUFFIX,rutrk.org,AdBlock -- DOMAIN-SUFFIX,ruxianke.com,AdBlock -- DOMAIN-SUFFIX,rvb.quanliyouxi.cn,AdBlock -- DOMAIN-SUFFIX,rwjfs.com,AdBlock -- DOMAIN-SUFFIX,rwq.youle55.com,AdBlock -- DOMAIN-SUFFIX,rxwan.com,AdBlock -- DOMAIN-SUFFIX,ry51w.cn,AdBlock -- DOMAIN-SUFFIX,s.0.0.0.0.cn,AdBlock -- DOMAIN-SUFFIX,s.051352.com,AdBlock -- DOMAIN-SUFFIX,s.0594529.com,AdBlock -- DOMAIN-SUFFIX,s.17173cdn.com,AdBlock -- DOMAIN-SUFFIX,s.35kds.com,AdBlock -- DOMAIN-SUFFIX,s.5jjx.net,AdBlock -- DOMAIN-SUFFIX,s.652748.com,AdBlock -- DOMAIN-SUFFIX,s.6travel.com,AdBlock -- DOMAIN-SUFFIX,s.abcache.com,AdBlock -- DOMAIN-SUFFIX,s.alitui.weibo.com,AdBlock -- DOMAIN-SUFFIX,s.baidu.com,AdBlock -- DOMAIN-SUFFIX,s.bmgan.com,AdBlock -- DOMAIN-SUFFIX,s.caduka.cn,AdBlock -- DOMAIN-SUFFIX,s.cdn.u17t.com,AdBlock -- DOMAIN-SUFFIX,s.cdxyb.cn,AdBlock -- DOMAIN-SUFFIX,s.clkservice.youdao.com,AdBlock -- DOMAIN-SUFFIX,s.com2us.net,AdBlock -- DOMAIN-SUFFIX,s.coveredsys.cn,AdBlock -- DOMAIN-SUFFIX,s.cr-nielsen.com,AdBlock -- DOMAIN-SUFFIX,s.csbew.com,AdBlock -- DOMAIN-SUFFIX,s.ddstu.com,AdBlock -- DOMAIN-SUFFIX,s.de123.net,AdBlock -- DOMAIN-SUFFIX,s.doyo.cn,AdBlock -- DOMAIN-SUFFIX,s.dpcq1.net,AdBlock -- DOMAIN-SUFFIX,s.dsjcfw.com,AdBlock -- DOMAIN-SUFFIX,s.effectivemeasure.net,AdBlock -- DOMAIN-SUFFIX,s.ekeide.com,AdBlock -- DOMAIN-SUFFIX,s.georgias.cn,AdBlock -- DOMAIN-SUFFIX,s.go.sohu.com,AdBlock -- DOMAIN-SUFFIX,s.haiyunx.com,AdBlock -- DOMAIN-SUFFIX,s.hk9600.com,AdBlock -- DOMAIN-SUFFIX,s.hkfuy.com,AdBlock -- DOMAIN-SUFFIX,s.hnhgw.cn,AdBlock -- DOMAIN-SUFFIX,s.hzht666.com,AdBlock -- DOMAIN-SUFFIX,s.img.mix.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,s.iroby.com,AdBlock -- DOMAIN-SUFFIX,s.iuuff.com,AdBlock -- DOMAIN-SUFFIX,s.jandan.com,AdBlock -- DOMAIN-SUFFIX,s.jimdo.com,AdBlock -- DOMAIN-SUFFIX,s.jlminte.com,AdBlock -- DOMAIN-SUFFIX,s.jpush.cn,AdBlock -- DOMAIN-SUFFIX,s.jzkelida.com,AdBlock -- DOMAIN-SUFFIX,s.khgj.cn,AdBlock -- DOMAIN-SUFFIX,s.l8l9.com,AdBlock -- DOMAIN-SUFFIX,s.maipubao.cn,AdBlock -- DOMAIN-SUFFIX,s.meimeidaren.com,AdBlock -- DOMAIN-SUFFIX,s.mgwcn.com,AdBlock -- DOMAIN-SUFFIX,s.mt145.com,AdBlock -- DOMAIN-SUFFIX,s.okmgy.cn,AdBlock -- DOMAIN-SUFFIX,s.phpwind.com,AdBlock -- DOMAIN-SUFFIX,s.qd.qingting.fm,AdBlock -- DOMAIN-SUFFIX,s.qd.qingtingfm.com,AdBlock -- DOMAIN-SUFFIX,s.qhupdate.com,AdBlock -- DOMAIN-SUFFIX,s.qtad.qingting.fm,AdBlock -- DOMAIN-SUFFIX,s.qzkxt.com,AdBlock -- DOMAIN-SUFFIX,s.ryre.cn,AdBlock -- DOMAIN-SUFFIX,s.sh.qihoo.com,AdBlock -- DOMAIN-SUFFIX,s.shiftrro.com,AdBlock -- DOMAIN-SUFFIX,s.staqnet.com,AdBlock -- DOMAIN-SUFFIX,s.temaidi.com,AdBlock -- DOMAIN-SUFFIX,s.trafficjam.cn,AdBlock -- DOMAIN-SUFFIX,s.uc627.com,AdBlock -- DOMAIN-SUFFIX,s.uuidksinc.net,AdBlock -- DOMAIN-SUFFIX,s.wapadv.com,AdBlock -- DOMAIN-SUFFIX,s.wrating.com,AdBlock -- DOMAIN-SUFFIX,s.wxktv.cn,AdBlock -- DOMAIN-SUFFIX,s.x.cn.xtgreat.com,AdBlock -- DOMAIN-SUFFIX,s.xcfe.cn,AdBlock -- DOMAIN-SUFFIX,s.xinghao89.com,AdBlock -- DOMAIN-SUFFIX,s.xmcmn.com,AdBlock -- DOMAIN-SUFFIX,s.yanpoly.com,AdBlock -- DOMAIN-SUFFIX,s.yfycy.com,AdBlock -- DOMAIN-SUFFIX,s.yidianzixun.com,AdBlock -- DOMAIN-SUFFIX,s.yjkyj.cn,AdBlock -- DOMAIN-SUFFIX,s.youmi.net,AdBlock -- DOMAIN-SUFFIX,s.ysxufeng.com,AdBlock -- DOMAIN-SUFFIX,s.yunpifu.cn,AdBlock -- DOMAIN-SUFFIX,s.zgclmw.cn,AdBlock -- DOMAIN-SUFFIX,s.zixuntop.com,AdBlock -- DOMAIN-SUFFIX,s.zjhoudao.com,AdBlock -- DOMAIN-SUFFIX,s.zlongad.com,AdBlock -- DOMAIN-SUFFIX,s.zxwdw.com,AdBlock -- DOMAIN-SUFFIX,s0.2mdn.net,AdBlock -- DOMAIN-SUFFIX,s03.optimix.asia,AdBlock -- DOMAIN-SUFFIX,s1.2mdn.net,AdBlock -- DOMAIN-SUFFIX,s1.cmfu.com,AdBlock -- DOMAIN-SUFFIX,s1.hiapk.com,AdBlock -- DOMAIN-SUFFIX,s1.hnhbyxdq.com,AdBlock -- DOMAIN-SUFFIX,s1.huiqituan.com,AdBlock -- DOMAIN-SUFFIX,s1.iigushi.com,AdBlock -- DOMAIN-SUFFIX,s1.kutongji.com,AdBlock -- DOMAIN-SUFFIX,s1.mingmingtehui.com,AdBlock -- DOMAIN-SUFFIX,s1.qiqutt.cn,AdBlock -- DOMAIN-SUFFIX,s1.qiqutt.com,AdBlock -- DOMAIN-SUFFIX,s1.qiuyi.cn,AdBlock -- DOMAIN-SUFFIX,s1.s8tu.com,AdBlock -- DOMAIN-SUFFIX,s1.tansuotv.com,AdBlock -- DOMAIN-SUFFIX,s10.histats.com,AdBlock -- DOMAIN-SUFFIX,s2.dnaxddnc.com,AdBlock -- DOMAIN-SUFFIX,s2.hiapk.com,AdBlock -- DOMAIN-SUFFIX,s2.huoying666.com,AdBlock -- DOMAIN-SUFFIX,s2.kuaibaopay.com,AdBlock -- DOMAIN-SUFFIX,s2.mingmingtehui.com,AdBlock -- DOMAIN-SUFFIX,s2.yandui.com,AdBlock -- DOMAIN-SUFFIX,s2.zdface.com,AdBlock -- DOMAIN-SUFFIX,s2.zdmimg.com,AdBlock -- DOMAIN-SUFFIX,s3.pfp.sina.net,AdBlock -- DOMAIN-SUFFIX,s3.rongnews.com,AdBlock -- DOMAIN-SUFFIX,s3d4.cn,AdBlock -- DOMAIN-SUFFIX,s4.55.la,AdBlock -- DOMAIN-SUFFIX,s4.histats.com,AdBlock -- DOMAIN-SUFFIX,s400cc.com,AdBlock -- DOMAIN-SUFFIX,s5.keydot.net,AdBlock -- DOMAIN-SUFFIX,s8.001fzc.com,AdBlock -- DOMAIN-SUFFIX,s8.dnaxddnc.com,AdBlock -- DOMAIN-SUFFIX,s8x1.com,AdBlock -- DOMAIN-SUFFIX,s9w.cc,AdBlock -- DOMAIN-SUFFIX,sa909.com,AdBlock -- DOMAIN-SUFFIX,sad.qeo.cn,AdBlock -- DOMAIN-SUFFIX,safe.tsgpay.cn,AdBlock -- DOMAIN-SUFFIX,safe-aisle.jointreport-switch.com,AdBlock -- DOMAIN-SUFFIX,saferwet.com,AdBlock -- DOMAIN-SUFFIX,same.chinadaily.com.cn,AdBlock -- DOMAIN-SUFFIX,same.eastmoney.com,AdBlock -- DOMAIN-SUFFIX,same.jrj.com.cn,AdBlock -- DOMAIN-SUFFIX,same.mzy2014.com,AdBlock -- DOMAIN-SUFFIX,same.stockstar.com,AdBlock -- DOMAIN-SUFFIX,same01.jrj.com.cn,AdBlock -- DOMAIN-SUFFIX,same02.jrj.com.cn,AdBlock -- DOMAIN-SUFFIX,same03.jrj.com.cn,AdBlock -- DOMAIN-SUFFIX,sams.nikonimaging.com,AdBlock -- DOMAIN-SUFFIX,sangxi.top,AdBlock -- DOMAIN-SUFFIX,sanya1.com,AdBlock -- DOMAIN-SUFFIX,sape.ru,AdBlock -- DOMAIN-SUFFIX,sapi.sina.cn,AdBlock -- DOMAIN-SUFFIX,savebt.net,AdBlock -- DOMAIN-SUFFIX,saxxaz.taohuayuan8888.com,AdBlock -- DOMAIN-SUFFIX,sb.scorecardresearch.com,AdBlock -- DOMAIN-SUFFIX,sb88b.com,AdBlock -- DOMAIN-SUFFIX,sbeacon.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,sbrqp.com,AdBlock -- DOMAIN-SUFFIX,sbw.ysjweb.com,AdBlock -- DOMAIN-SUFFIX,sc.58mingtian.cn,AdBlock -- DOMAIN-SUFFIX,sc.chinaiiss.com,AdBlock -- DOMAIN-SUFFIX,sc.ggdoubi.com,AdBlock -- DOMAIN-SUFFIX,sc.ggfeng.com,AdBlock -- DOMAIN-SUFFIX,sc.iasds01.com,AdBlock -- DOMAIN-SUFFIX,sc.sczxy.com,AdBlock -- DOMAIN-SUFFIX,sc.shayugg.com,AdBlock -- DOMAIN-SUFFIX,sc1369.com,AdBlock -- DOMAIN-SUFFIX,scc.0.0.0.0.cn,AdBlock -- DOMAIN-SUFFIX,sccdn.f2zd.com,AdBlock -- DOMAIN-SUFFIX,scdng.com,AdBlock -- DOMAIN-SUFFIX,scdown.qq.com,AdBlock -- DOMAIN-SUFFIX,scene.vip.xunlei.com,AdBlock -- DOMAIN-SUFFIX,schborg.com,AdBlock -- DOMAIN-SUFFIX,schemas.android.com,AdBlock -- DOMAIN-SUFFIX,schprompt.dangdang.com,AdBlock -- DOMAIN-SUFFIX,sciencelolb.com,AdBlock -- DOMAIN-SUFFIX,scimg.27admin.com,AdBlock -- DOMAIN-SUFFIX,sclick.6rooms.com,AdBlock -- DOMAIN-SUFFIX,sclick.baidu.com,AdBlock -- DOMAIN-SUFFIX,sclizhong.com,AdBlock -- DOMAIN-SUFFIX,sclog.moviebox.baofeng.com,AdBlock -- DOMAIN-SUFFIX,scorecardresearch.com,AdBlock -- DOMAIN-SUFFIX,scribe.twitter.com,AdBlock -- DOMAIN-SUFFIX,scrippsnetworks.com,AdBlock -- DOMAIN-SUFFIX,script.crazyegg.com,AdBlock -- DOMAIN-SUFFIX,script.vccoo.com,AdBlock -- DOMAIN-SUFFIX,script-bd.baixing.net,AdBlock -- DOMAIN-SUFFIX,scriptcc.cc,AdBlock -- DOMAIN-SUFFIX,scupio.com,AdBlock -- DOMAIN-SUFFIX,scw0.com,AdBlock -- DOMAIN-SUFFIX,sd.0.0.0.0.cn,AdBlock -- DOMAIN-SUFFIX,sd.kk3g.net,AdBlock -- DOMAIN-SUFFIX,sdac.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,sdapprecv.app.cntvwb.cn,AdBlock -- DOMAIN-SUFFIX,sdb.amazonaws.com,AdBlock -- DOMAIN-SUFFIX,sdhzstone.net,AdBlock -- DOMAIN-SUFFIX,sdk.appadhoc.com,AdBlock -- DOMAIN-SUFFIX,sdk.cdnmaster.com,AdBlock -- DOMAIN-SUFFIX,sdk.cmgame.com,AdBlock -- DOMAIN-SUFFIX,sdk.conf.igexin.com,AdBlock -- DOMAIN-SUFFIX,sdk.mobad.ijinshan.com,AdBlock -- DOMAIN-SUFFIX,sdk.open.amp.igexin.com,AdBlock -- DOMAIN-SUFFIX,sdk.open.lbs.igexin.com,AdBlock -- DOMAIN-SUFFIX,sdk.open.phone.igexin.com,AdBlock -- DOMAIN-SUFFIX,sdk.open.talk.gepush.com,AdBlock -- DOMAIN-SUFFIX,sdk.open.talk.igexin.com,AdBlock -- DOMAIN-SUFFIX,sdkapp.mobile.sina.cn,AdBlock -- DOMAIN-SUFFIX,sdkapp.uve.weibo.com,AdBlock -- DOMAIN-SUFFIX,sdkclick.mobile.sina.cn,AdBlock -- DOMAIN-SUFFIX,sdkconfig.ad.intl.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,sdkdm.com,AdBlock -- DOMAIN-SUFFIX,sdklog.cmgame.com,AdBlock -- DOMAIN-SUFFIX,sdklog.uu.cc,AdBlock -- DOMAIN-SUFFIX,sdkpay.uu.cc,AdBlock -- DOMAIN-SUFFIX,sdksitter.m.sjzhushou.com,AdBlock -- DOMAIN-SUFFIX,sdl.0.0.0.0.cn,AdBlock -- DOMAIN-SUFFIX,sdn.kugou.com,AdBlock -- DOMAIN-SUFFIX,sdn.penggua.com.cn,AdBlock -- DOMAIN-SUFFIX,sdownload.stargame.com,AdBlock -- DOMAIN-SUFFIX,sdqoi2d.com,AdBlock -- DOMAIN-SUFFIX,sdwfw.com,AdBlock -- DOMAIN-SUFFIX,sdycd.com,AdBlock -- DOMAIN-SUFFIX,sea.napi.ucweb.com,AdBlock -- DOMAIN-SUFFIX,searchignited.com,AdBlock -- DOMAIN-SUFFIX,searchswapper.com,AdBlock -- DOMAIN-SUFFIX,seavideo-ak.espn.go.com,AdBlock -- DOMAIN-SUFFIX,sebar.thand.info,AdBlock -- DOMAIN-SUFFIX,sec.resource.xiaomi.net,AdBlock -- DOMAIN-SUFFIX,secpay.wostore.cn,AdBlock -- DOMAIN-SUFFIX,secretmedia.s3.amazonaws.com,AdBlock -- DOMAIN-SUFFIX,secure.dsp.com,AdBlock -- DOMAIN-SUFFIX,secure.fastclick.net,AdBlock -- DOMAIN-SUFFIX,secure.img-cdn.mediaplex.com,AdBlock -- DOMAIN-SUFFIX,secure.quantserve.com,AdBlock -- DOMAIN-SUFFIX,secure.statcounter.com,AdBlock -- DOMAIN-SUFFIX,secure-asia.imrworldwide.com,AdBlock -- DOMAIN-SUFFIX,secure-assets.rubiconproject.com,AdBlock -- DOMAIN-SUFFIX,secure-chn.imrworldwide.com,AdBlock -- DOMAIN-SUFFIX,secure-ds.serving-sys.com,AdBlock -- DOMAIN-SUFFIX,security.browser.miui.com,AdBlock -- DOMAIN-SUFFIX,seen.h01ce.cn,AdBlock -- DOMAIN-SUFFIX,seen.hgo7r.cn,AdBlock -- DOMAIN-SUFFIX,seg.sharethis.com,AdBlock -- DOMAIN-SUFFIX,segment.com,AdBlock -- DOMAIN-SUFFIX,selfie.snapmobileasia.net,AdBlock -- DOMAIN-SUFFIX,sell1.etlong.com,AdBlock -- DOMAIN-SUFFIX,sensorsdata.ruguoapp.com,AdBlock -- DOMAIN-SUFFIX,serial.alcohol-soft.com,AdBlock -- DOMAIN-SUFFIX,serrano.hardwareheaven.com,AdBlock -- DOMAIN-SUFFIX,serve.popads.net,AdBlock -- DOMAIN-SUFFIX,servedby.keygamesnetwork.com,AdBlock -- DOMAIN-SUFFIX,server.m.pp.cn,AdBlock -- DOMAIN-SUFFIX,service.ad.adesk.com,AdBlock -- DOMAIN-SUFFIX,service.ad.duomi.com,AdBlock -- DOMAIN-SUFFIX,service.cocounion.com,AdBlock -- DOMAIN-SUFFIX,service.danmu.youku.com,AdBlock -- DOMAIN-SUFFIX,service.epro.sogou.com,AdBlock -- DOMAIN-SUFFIX,service.urchin.com,AdBlock -- DOMAIN-SUFFIX,servicer.adskeeper.co.uk,AdBlock -- DOMAIN-SUFFIX,serving-sys.com,AdBlock -- DOMAIN-SUFFIX,sestat.baidu.com,AdBlock -- DOMAIN-SUFFIX,setting.crashlytics.com,AdBlock -- DOMAIN-SUFFIX,setting.rayjump.com,AdBlock -- DOMAIN-SUFFIX,setting.snswin.qq.com,AdBlock -- DOMAIN-SUFFIX,settings.crashlytics.com,AdBlock -- DOMAIN-SUFFIX,sezvc.com,AdBlock -- DOMAIN-SUFFIX,sfloushi.com,AdBlock -- DOMAIN-SUFFIX,sg536.cn,AdBlock -- DOMAIN-SUFFIX,sgbfjs.info,AdBlock -- DOMAIN-SUFFIX,sg-cdn.effectivemeasure.net,AdBlock -- DOMAIN-SUFFIX,sgg.southcn.com,AdBlock -- DOMAIN-SUFFIX,sgvip.chinahdcm.com,AdBlock -- DOMAIN-SUFFIX,sh.qihoo.com,AdBlock -- DOMAIN-SUFFIX,sh.shuqw.com,AdBlock -- DOMAIN-SUFFIX,sha50.com,AdBlock -- DOMAIN-SUFFIX,shadu.baidu.com,AdBlock -- DOMAIN-SUFFIX,shaft.jebe.renren.com,AdBlock -- DOMAIN-SUFFIX,shama5.com,AdBlock -- DOMAIN-SUFFIX,shanghaironghua.com,AdBlock -- DOMAIN-SUFFIX,shanglinli.com,AdBlock -- DOMAIN-SUFFIX,shangz99991.com,AdBlock -- DOMAIN-SUFFIX,shankejingling.com,AdBlock -- DOMAIN-SUFFIX,share.gzdsw.com,AdBlock -- DOMAIN-SUFFIX,shared.youdao.com,AdBlock -- DOMAIN-SUFFIX,sharedaddomain.com,AdBlock -- DOMAIN-SUFFIX,sharrysweb.com,AdBlock -- DOMAIN-SUFFIX,shbywsd.cn,AdBlock -- DOMAIN-SUFFIX,shenghuo.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,shenleyuni.com,AdBlock -- DOMAIN-SUFFIX,shenyian.net,AdBlock -- DOMAIN-SUFFIX,shenyun.com,AdBlock -- DOMAIN-SUFFIX,shenyun.org,AdBlock -- DOMAIN-SUFFIX,shenyunperformingarts.org,AdBlock -- DOMAIN-SUFFIX,shglegle.com,AdBlock -- DOMAIN-SUFFIX,shibeiou.com,AdBlock -- DOMAIN-SUFFIX,shiftrro.com,AdBlock -- DOMAIN-SUFFIX,shili.downxia.com,AdBlock -- DOMAIN-SUFFIX,shili.wanyx.com,AdBlock -- DOMAIN-SUFFIX,shiwan.dl.gxpan.cn,AdBlock -- DOMAIN-SUFFIX,shixunjs.th21333.com,AdBlock -- DOMAIN-SUFFIX,shke.kuuad.com,AdBlock -- DOMAIN-SUFFIX,shop.admin.yinyuetai.com,AdBlock -- DOMAIN-SUFFIX,shop.yinyuetai.com,AdBlock -- DOMAIN-SUFFIX,shop265.com,AdBlock -- DOMAIN-SUFFIX,shoppingpartners2.futurenet.com,AdBlock -- DOMAIN-SUFFIX,shouyoutan.com,AdBlock -- DOMAIN-SUFFIX,show.kc.taotaosou.com,AdBlock -- DOMAIN-SUFFIX,show.qx15.com,AdBlock -- DOMAIN-SUFFIX,show.xiazai16.com,AdBlock -- DOMAIN-SUFFIX,showcase.vpsboard.com,AdBlock -- DOMAIN-SUFFIX,showing.hardwareheaven.com,AdBlock -- DOMAIN-SUFFIX,shows.21cn.com,AdBlock -- DOMAIN-SUFFIX,shtt.shuqw.com,AdBlock -- DOMAIN-SUFFIX,shucaihangjia.com,AdBlock -- DOMAIN-SUFFIX,shuiguo.com,AdBlock -- DOMAIN-SUFFIX,shuqw.com,AdBlock -- DOMAIN-SUFFIX,shushijiameng123.com,AdBlock -- DOMAIN-SUFFIX,shuttle.bayescom.com,AdBlock -- DOMAIN-SUFFIX,shuzilm.cn,AdBlock -- DOMAIN-SUFFIX,shxinjie.cn,AdBlock -- DOMAIN-SUFFIX,shzyjbr.wtdtjs.rocks,AdBlock -- DOMAIN-SUFFIX,si9377.com,AdBlock -- DOMAIN-SUFFIX,sicentlife.com,AdBlock -- DOMAIN-SUFFIX,sifubo.cn,AdBlock -- DOMAIN-SUFFIX,sifuce.cn,AdBlock -- DOMAIN-SUFFIX,sifuda.cn,AdBlock -- DOMAIN-SUFFIX,sifufu.cn,AdBlock -- DOMAIN-SUFFIX,sifuge.cn,AdBlock -- DOMAIN-SUFFIX,sifugu.cn,AdBlock -- DOMAIN-SUFFIX,sifuhe.cn,AdBlock -- DOMAIN-SUFFIX,sifuhu.cn,AdBlock -- DOMAIN-SUFFIX,sifuji.cn,AdBlock -- DOMAIN-SUFFIX,sifuka.cn,AdBlock -- DOMAIN-SUFFIX,sigbusa.com,AdBlock -- DOMAIN-SUFFIX,sigo99.com,AdBlock -- DOMAIN-SUFFIX,simba.m.taobao.com,AdBlock -- DOMAIN-SUFFIX,sina.wrating.com,AdBlock -- DOMAIN-SUFFIX,sina.yinstar.org,AdBlock -- DOMAIN-SUFFIX,sinaalicdn.com,AdBlock -- DOMAIN-SUFFIX,sinaaliyun.cn,AdBlock -- DOMAIN-SUFFIX,siqwqjza.m.yikanxiaoshuo.net,AdBlock -- DOMAIN-SUFFIX,sis.jpush.io,AdBlock -- DOMAIN-SUFFIX,sit.gentags.net,AdBlock -- DOMAIN-SUFFIX,sit.pagechoice.net,AdBlock -- DOMAIN-SUFFIX,site.cdnmaster.com,AdBlock -- DOMAIN-SUFFIX,site.img.4tube.com,AdBlock -- DOMAIN-SUFFIX,sitemeter.com,AdBlock -- DOMAIN-SUFFIX,sitemobia.com,AdBlock -- DOMAIN-SUFFIX,sitescout.com,AdBlock -- DOMAIN-SUFFIX,sitetag.us,AdBlock -- DOMAIN-SUFFIX,sj.uukanshu.com,AdBlock -- DOMAIN-SUFFIX,sj1.3987.com,AdBlock -- DOMAIN-SUFFIX,sjj.jsyjwj.com,AdBlock -- DOMAIN-SUFFIX,skatehot.net,AdBlock -- DOMAIN-SUFFIX,sl.xawjwl.com,AdBlock -- DOMAIN-SUFFIX,slb.sxuantang.com,AdBlock -- DOMAIN-SUFFIX,slb.upshengyi.com,AdBlock -- DOMAIN-SUFFIX,slib.tvmao.cn,AdBlock -- DOMAIN-SUFFIX,slides.discovery.tom.com,AdBlock -- DOMAIN-SUFFIX,slog.sina.cn,AdBlock -- DOMAIN-SUFFIX,slog.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,slot.union.ucweb.com,AdBlock -- DOMAIN-SUFFIX,slzs.52xiyou.com,AdBlock -- DOMAIN-SUFFIX,sm.0.0.0.0.cn,AdBlock -- DOMAIN-SUFFIX,sm1.todgo.com,AdBlock -- DOMAIN-SUFFIX,sm2.todgo.com,AdBlock -- DOMAIN-SUFFIX,smartmad.com,AdBlock -- DOMAIN-SUFFIX,smblock.s3.amazonaws.com,AdBlock -- DOMAIN-SUFFIX,smgru.net,AdBlock -- DOMAIN-SUFFIX,smucdn.com,AdBlock -- DOMAIN-SUFFIX,smxay.com,AdBlock -- DOMAIN-SUFFIX,smxsg.com,AdBlock -- DOMAIN-SUFFIX,snap.snapmobile.asia,AdBlock -- DOMAIN-SUFFIX,snapmobileasia.net,AdBlock -- DOMAIN-SUFFIX,sngmta.qq.com,AdBlock -- DOMAIN-SUFFIX,snnnyy.com,AdBlock -- DOMAIN-SUFFIX,snow001.com,AdBlock -- DOMAIN-SUFFIX,so9l.com,AdBlock -- DOMAIN-SUFFIX,soarfi.cn,AdBlock -- DOMAIN-SUFFIX,sobar.baidu.com,AdBlock -- DOMAIN-SUFFIX,sobartop.baidu.com,AdBlock -- DOMAIN-SUFFIX,social-touch.com,AdBlock -- DOMAIN-SUFFIX,sod.onelink.me,AdBlock -- DOMAIN-SUFFIX,soft.chaomeng8.com,AdBlock -- DOMAIN-SUFFIX,soft.zhidian3g.cn,AdBlock -- DOMAIN-SUFFIX,sohu.irs01.com,AdBlock -- DOMAIN-SUFFIX,sohu.wrating.com,AdBlock -- DOMAIN-SUFFIX,somecoding.com,AdBlock -- DOMAIN-SUFFIX,somennew.com,AdBlock -- DOMAIN-SUFFIX,song.fanxing.kugou.com,AdBlock -- DOMAIN-SUFFIX,song001.com,AdBlock -- DOMAIN-SUFFIX,sonomoyo.com,AdBlock -- DOMAIN-SUFFIX,sos0easy.com,AdBlock -- DOMAIN-SUFFIX,sou.dkdlsj.com,AdBlock -- DOMAIN-SUFFIX,sou.xanbhx.com,AdBlock -- DOMAIN-SUFFIX,souid.com,AdBlock -- DOMAIN-SUFFIX,source.youxiaoad.com,AdBlock -- DOMAIN-SUFFIX,sousuo.xm.sjzhushou.com,AdBlock -- DOMAIN-SUFFIX,sp.fastclick.net,AdBlock -- DOMAIN-SUFFIX,sp.gmossp-sp.jp,AdBlock -- DOMAIN-SUFFIX,sp.wndoor.com,AdBlock -- DOMAIN-SUFFIX,sp.yixui.com,AdBlock -- DOMAIN-SUFFIX,sp3.cndm.com,AdBlock -- DOMAIN-SUFFIX,spad.i-mobile.co.jp,AdBlock -- DOMAIN-SUFFIX,spade.twitch.tv,AdBlock -- DOMAIN-SUFFIX,spap.adingo.jp,AdBlock -- DOMAIN-SUFFIX,spap.adingo.jp.eimg.jp,AdBlock -- DOMAIN-SUFFIX,spapi.i-mobile.co.jp,AdBlock -- DOMAIN-SUFFIX,spb.bid.run,AdBlock -- DOMAIN-SUFFIX,spcdnpc.i-mobile.co.jp,AdBlock -- DOMAIN-SUFFIX,spcnv.i-mobile.co.jp,AdBlock -- DOMAIN-SUFFIX,spcode.baidu.com,AdBlock -- DOMAIN-SUFFIX,spdeliver.i-mobile.co.jp,AdBlock -- DOMAIN-SUFFIX,spdmg.i-mobile.co.jp,AdBlock -- DOMAIN-SUFFIX,spdmg-backend.i-mobile.co.jp,AdBlock -- DOMAIN-SUFFIX,sphwq.net,AdBlock -- DOMAIN-SUFFIX,spnet2-1.i-mobile.co.jp,AdBlock -- DOMAIN-SUFFIX,spnet33.i-mobile.co.jp,AdBlock -- DOMAIN-SUFFIX,sponsorpay.com,AdBlock -- DOMAIN-SUFFIX,sponsors.s2ki.com,AdBlock -- DOMAIN-SUFFIX,sponsors.webosroundup.com,AdBlock -- DOMAIN-SUFFIX,spproxy.autobytel.com,AdBlock -- DOMAIN-SUFFIX,spro.so.com,AdBlock -- DOMAIN-SUFFIX,spt.dictionary.com,AdBlock -- DOMAIN-SUFFIX,sqd.jstdjq.com,AdBlock -- DOMAIN-SUFFIX,sqext.com,AdBlock -- DOMAIN-SUFFIX,sqtpks3.1391.com,AdBlock -- DOMAIN-SUFFIX,squarespace.evyy.net,AdBlock -- DOMAIN-SUFFIX,src.duanxin520.com,AdBlock -- DOMAIN-SUFFIX,src.leju.com,AdBlock -- DOMAIN-SUFFIX,src.zf313.com,AdBlock -- DOMAIN-SUFFIX,srd.simba.taobao.com,AdBlock -- DOMAIN-SUFFIX,srhuafeng.com,AdBlock -- DOMAIN-SUFFIX,srv.carbonads.net,AdBlock -- DOMAIN-SUFFIX,srv.revdepo.com,AdBlock -- DOMAIN-SUFFIX,srv.thespacereporter.com,AdBlock -- DOMAIN-SUFFIX,ss.cnczjy.com,AdBlock -- DOMAIN-SUFFIX,ss.cnnic.cn,AdBlock -- DOMAIN-SUFFIX,ss.he9630.com,AdBlock -- DOMAIN-SUFFIX,ss.knet.cn,AdBlock -- DOMAIN-SUFFIX,ss.missyouxi.com,AdBlock -- DOMAIN-SUFFIX,ss.shicimingju.com,AdBlock -- DOMAIN-SUFFIX,ss.shuajuzu.com,AdBlock -- DOMAIN-SUFFIX,ss.subo.me,AdBlock -- DOMAIN-SUFFIX,ss.swagger1.com,AdBlock -- DOMAIN-SUFFIX,ss.sysad.cn,AdBlock -- DOMAIN-SUFFIX,ss.sysadult.cn,AdBlock -- DOMAIN-SUFFIX,ssac.suning.com,AdBlock -- DOMAIN-SUFFIX,sscefsol.com,AdBlock -- DOMAIN-SUFFIX,sscefsol.com.cn,AdBlock -- DOMAIN-SUFFIX,ssdaili.com,AdBlock -- DOMAIN-SUFFIX,ssh.hxlif.com,AdBlock -- DOMAIN-SUFFIX,ssh.jsyzw132.com,AdBlock -- DOMAIN-SUFFIX,ssh.lifu11.com,AdBlock -- DOMAIN-SUFFIX,ssh.szxiuchang.com,AdBlock -- DOMAIN-SUFFIX,ssh.yezijizhang.com,AdBlock -- DOMAIN-SUFFIX,ssjpx.com,AdBlock -- DOMAIN-SUFFIX,ssjy168.com,AdBlock -- DOMAIN-SUFFIX,ssl.google-analytics.com,AdBlock -- DOMAIN-SUFFIX,ssl.hyhzy.cn,AdBlock -- DOMAIN-SUFFIX,ssl.ymapp.com,AdBlock -- DOMAIN-SUFFIX,ssl-cdn.media.innity.net,AdBlock -- DOMAIN-SUFFIX,sso-cas.gridsumdissector.com,AdBlock -- DOMAIN-SUFFIX,ssp.08160.cn,AdBlock -- DOMAIN-SUFFIX,ssp.1rtb.com,AdBlock -- DOMAIN-SUFFIX,ssp.4hw.com.cn,AdBlock -- DOMAIN-SUFFIX,ssp.86str.com,AdBlock -- DOMAIN-SUFFIX,ssp.chaohutechan.com,AdBlock -- DOMAIN-SUFFIX,ssp.cibn.starschina.com,AdBlock -- DOMAIN-SUFFIX,ssp.daxueshengqiandai.com,AdBlock -- DOMAIN-SUFFIX,ssp.dmpdsp.com,AdBlock -- DOMAIN-SUFFIX,ssp.kjwx8.com,AdBlock -- DOMAIN-SUFFIX,ssp.kss.ksyun.com,AdBlock -- DOMAIN-SUFFIX,ssp.kssws.ks-cdn.com,AdBlock -- DOMAIN-SUFFIX,ssp.kxly360.com,AdBlock -- DOMAIN-SUFFIX,ssp.pro.cn,AdBlock -- DOMAIN-SUFFIX,ssp.tadseeker.com,AdBlock -- DOMAIN-SUFFIX,ssp.thescenseproject.com,AdBlock -- DOMAIN-SUFFIX,ssp.youxiaoad.com,AdBlock -- DOMAIN-SUFFIX,ssp.zf313.com,AdBlock -- DOMAIN-SUFFIX,ssp1.dmpdsp.com,AdBlock -- DOMAIN-SUFFIX,sspapi.youxiaoad.com,AdBlock -- DOMAIN-SUFFIX,ssp-bidder.i-mobile.co.jp,AdBlock -- DOMAIN-SUFFIX,ssp-rtb.sape.ru,AdBlock -- DOMAIN-SUFFIX,sss.jusha.com,AdBlock -- DOMAIN-SUFFIX,sss.sege.xxx,AdBlock -- DOMAIN-SUFFIX,sss.soarfi.cn,AdBlock -- DOMAIN-SUFFIX,sss.wzjmr.com,AdBlock -- DOMAIN-SUFFIX,sss.zbred.com,AdBlock -- DOMAIN-SUFFIX,sssvd.china.com,AdBlock -- DOMAIN-SUFFIX,sstc360.com,AdBlock -- DOMAIN-SUFFIX,ssum.casalemedia.com,AdBlock -- DOMAIN-SUFFIX,st.holalauncher.com,AdBlock -- DOMAIN-SUFFIX,st.holaworld.cn,AdBlock -- DOMAIN-SUFFIX,st.targetix.net,AdBlock -- DOMAIN-SUFFIX,st.yandexadexchange.net,AdBlock -- DOMAIN-SUFFIX,st.yengo.com,AdBlock -- DOMAIN-SUFFIX,sta.ganji.com,AdBlock -- DOMAIN-SUFFIX,sta.haloall.com,AdBlock -- DOMAIN-SUFFIX,sta.holagames.com,AdBlock -- DOMAIN-SUFFIX,sta.jcjk0451.com,AdBlock -- DOMAIN-SUFFIX,stadig.ifeng.com,AdBlock -- DOMAIN-SUFFIX,stadig0.ifeng.com,AdBlock -- DOMAIN-SUFFIX,staging.admin.e.mi.com,AdBlock -- DOMAIN-SUFFIX,staqnet.com,AdBlock -- DOMAIN-SUFFIX,star8.net,AdBlock -- DOMAIN-SUFFIX,startapp.com,AdBlock -- DOMAIN-SUFFIX,startappexchange.com,AdBlock -- DOMAIN-SUFFIX,startappservice.com,AdBlock -- DOMAIN-SUFFIX,startup.oupeng.com,AdBlock -- DOMAIN-SUFFIX,static1.kewaishu.info,AdBlock -- DOMAIN-SUFFIX,staticadm.leju.com,AdBlock -- DOMAIN-SUFFIX,staticadm.leju.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,staticjs.cn,AdBlock -- DOMAIN-SUFFIX,statics.3987.com,AdBlock -- DOMAIN-SUFFIX,statics.9669.com,AdBlock -- DOMAIN-SUFFIX,statics.woozooo.com,AdBlock -- DOMAIN-SUFFIX,statictest.fraudmetrix.cn,AdBlock -- DOMAIN-SUFFIX,static-xl9-ssl.xunlei.com,AdBlock -- DOMAIN-SUFFIX,staticxx.facebook.com,AdBlock -- DOMAIN-SUFFIX,statisticsv2.yinyuetai.com,AdBlock -- DOMAIN-SUFFIX,stat-y.xywy.com,AdBlock -- DOMAIN-SUFFIX,stat-z.xywy.com,AdBlock -- DOMAIN-SUFFIX,steelhousemedia.com,AdBlock -- DOMAIN-SUFFIX,stervapoimenialena.info,AdBlock -- DOMAIN-SUFFIX,stg8.com,AdBlock -- DOMAIN-SUFFIX,stjzh.gdtarget.com,AdBlock -- DOMAIN-SUFFIX,st-n.ads3-adnow.com,AdBlock -- DOMAIN-SUFFIX,stn88.com,AdBlock -- DOMAIN-SUFFIX,stocksbsc.com,AdBlock -- DOMAIN-SUFFIX,storeconfig.mistat.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,storewidget.pcauthority.com.au,AdBlock -- DOMAIN-SUFFIX,stream.heavenmedia.net,AdBlock -- DOMAIN-SUFFIX,stream.shuzilm.cn,AdBlock -- DOMAIN-SUFFIX,streaming.rtbiddingplatform.com,AdBlock -- DOMAIN-SUFFIX,strip.alicdn.com,AdBlock -- DOMAIN-SUFFIX,strip.taobaocdn.com,AdBlock -- DOMAIN-SUFFIX,su.8881919.cc,AdBlock -- DOMAIN-SUFFIX,su.bdimg.com,AdBlock -- DOMAIN-SUFFIX,su.bdstatic.com,AdBlock -- DOMAIN-SUFFIX,sub.powerapple.com,AdBlock -- DOMAIN-SUFFIX,sub.topber.com,AdBlock -- DOMAIN-SUFFIX,subswin.com,AdBlock -- DOMAIN-SUFFIX,sucodb.com,AdBlock -- DOMAIN-SUFFIX,sugar.zhihu.com,AdBlock -- DOMAIN-SUFFIX,sunjianhao.com,AdBlock -- DOMAIN-SUFFIX,suoooi.cn,AdBlock -- DOMAIN-SUFFIX,super.cat898.com,AdBlock -- DOMAIN-SUFFIX,super.kdnet.net,AdBlock -- DOMAIN-SUFFIX,supfast.net,AdBlock -- DOMAIN-SUFFIX,surv.xbizmedia.com,AdBlock -- DOMAIN-SUFFIX,susapi.dev.surepush.cn,AdBlock -- DOMAIN-SUFFIX,susapi.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,suvset.sohu.com,AdBlock -- DOMAIN-SUFFIX,sv719.dreamdays.cn,AdBlock -- DOMAIN-SUFFIX,sw.cailawyer.cn,AdBlock -- DOMAIN-SUFFIX,sw.mobile.sogou.com,AdBlock -- DOMAIN-SUFFIX,swa.gtimg.com,AdBlock -- DOMAIN-SUFFIX,swappdl.duoyi.com,AdBlock -- DOMAIN-SUFFIX,switchadhub.com,AdBlock -- DOMAIN-SUFFIX,switching.atm.punchbox.org,AdBlock -- DOMAIN-SUFFIX,swpgjai.pop.weddingeeos.com,AdBlock -- DOMAIN-SUFFIX,swx.0.0.0.0.cn,AdBlock -- DOMAIN-SUFFIX,sxbhzs.net,AdBlock -- DOMAIN-SUFFIX,sxdyrq.com,AdBlock -- DOMAIN-SUFFIX,sxjxhg.com,AdBlock -- DOMAIN-SUFFIX,sxz67.com,AdBlock -- DOMAIN-SUFFIX,sy.code.mytanwan.com,AdBlock -- DOMAIN-SUFFIX,sy.flash.mytanwan.com,AdBlock -- DOMAIN-SUFFIX,sy.jlhygy.com,AdBlock -- DOMAIN-SUFFIX,sy.kcxsyz.com,AdBlock -- DOMAIN-SUFFIX,sy.shongcheng.com,AdBlock -- DOMAIN-SUFFIX,sy.sxjxhg.com,AdBlock -- DOMAIN-SUFFIX,sycbbs.com,AdBlock -- DOMAIN-SUFFIX,sy-cdnres.unionsy.com,AdBlock -- DOMAIN-SUFFIX,syilm.net,AdBlock -- DOMAIN-SUFFIX,sykty.com,AdBlock -- DOMAIN-SUFFIX,symaj.cn,AdBlock -- DOMAIN-SUFFIX,synacast.com,AdBlock -- DOMAIN-SUFFIX,sync.1dmp.io,AdBlock -- DOMAIN-SUFFIX,sync.1rx.io,AdBlock -- DOMAIN-SUFFIX,sync.adotmob.com,AdBlock -- DOMAIN-SUFFIX,sync.audsp.com,AdBlock -- DOMAIN-SUFFIX,sync.audtd.com,AdBlock -- DOMAIN-SUFFIX,sync.crwdcntrl.net,AdBlock -- DOMAIN-SUFFIX,sync.extend.tv,AdBlock -- DOMAIN-SUFFIX,sync.fastclick.net,AdBlock -- DOMAIN-SUFFIX,sync.intentiq.com,AdBlock -- DOMAIN-SUFFIX,sync.ipredictive.com,AdBlock -- DOMAIN-SUFFIX,sync.mathtag.com,AdBlock -- DOMAIN-SUFFIX,sync.morgdm.ru,AdBlock -- DOMAIN-SUFFIX,sync.rambler.ru,AdBlock -- DOMAIN-SUFFIX,sync.republer.com,AdBlock -- DOMAIN-SUFFIX,sync.teamrtb.net,AdBlock -- DOMAIN-SUFFIX,sync.tidaltv.com,AdBlock -- DOMAIN-SUFFIX,sync2.audtd.com,AdBlock -- DOMAIN-SUFFIX,sync-dsp.ad-m.asia,AdBlock -- DOMAIN-SUFFIX,sync-eu.exe.bid,AdBlock -- DOMAIN-SUFFIX,sync-tm.everesttech.net,AdBlock -- DOMAIN-SUFFIX,syndication.exdynsrv.com,AdBlock -- DOMAIN-SUFFIX,syndication.exoclick.com,AdBlock -- DOMAIN-SUFFIX,syndication.intel.com,AdBlock -- DOMAIN-SUFFIX,syndication.jsadapi.com,AdBlock -- DOMAIN-SUFFIX,syndication.twitter.com,AdBlock -- DOMAIN-SUFFIX,syndication1.viraladnetwork.net,AdBlock -- DOMAIN-SUFFIX,syndication-o.twitter.com,AdBlock -- DOMAIN-SUFFIX,syofew6o.net,AdBlock -- DOMAIN-SUFFIX,sys.zhangyue.com,AdBlock -- DOMAIN-SUFFIX,sysdig.com,AdBlock -- DOMAIN-SUFFIX,sytcyf.com,AdBlock -- DOMAIN-SUFFIX,sytsr.com,AdBlock -- DOMAIN-SUFFIX,sytz1288.com,AdBlock -- DOMAIN-SUFFIX,szb.aiyole.com,AdBlock -- DOMAIN-SUFFIX,szdzbx.com,AdBlock -- DOMAIN-SUFFIX,szfaq.com,AdBlock -- DOMAIN-SUFFIX,szggdw.com,AdBlock -- DOMAIN-SUFFIX,szkdst.com,AdBlock -- DOMAIN-SUFFIX,szrk3.com,AdBlock -- DOMAIN-SUFFIX,szshouzhai.com,AdBlock -- DOMAIN-SUFFIX,szxc868.com,AdBlock -- DOMAIN-SUFFIX,szxpsg.com,AdBlock -- DOMAIN-SUFFIX,szyr474.com,AdBlock -- DOMAIN-SUFFIX,t.2d-c.cn,AdBlock -- DOMAIN-SUFFIX,t.3apf.com,AdBlock -- DOMAIN-SUFFIX,t.adbxb.cn,AdBlock -- DOMAIN-SUFFIX,t.adcrops.net,AdBlock -- DOMAIN-SUFFIX,t.adxchina.cn,AdBlock -- DOMAIN-SUFFIX,t.atpanel.com,AdBlock -- DOMAIN-SUFFIX,t.cnsjx.net,AdBlock -- DOMAIN-SUFFIX,t.collect.yinyuetai.com,AdBlock -- DOMAIN-SUFFIX,t.cr-nielsen.com,AdBlock -- DOMAIN-SUFFIX,t.cyuew.com,AdBlock -- DOMAIN-SUFFIX,t.d.yoyi.tv,AdBlock -- DOMAIN-SUFFIX,t.dangdang.com,AdBlock -- DOMAIN-SUFFIX,t.dmtrck.com,AdBlock -- DOMAIN-SUFFIX,t.go.sohu.com,AdBlock -- DOMAIN-SUFFIX,t.growingio.com,AdBlock -- DOMAIN-SUFFIX,t.iz55.com,AdBlock -- DOMAIN-SUFFIX,t.oq68.com,AdBlock -- DOMAIN-SUFFIX,t.pingzei.com,AdBlock -- DOMAIN-SUFFIX,t.qiuqiuqipai.com,AdBlock -- DOMAIN-SUFFIX,t.sj.qq.com,AdBlock -- DOMAIN-SUFFIX,t.supermario.xyz,AdBlock -- DOMAIN-SUFFIX,t.trafmag.com,AdBlock -- DOMAIN-SUFFIX,t.tzcccm.com,AdBlock -- DOMAIN-SUFFIX,t.ujian.cc,AdBlock -- DOMAIN-SUFFIX,t.uvcourse.net,AdBlock -- DOMAIN-SUFFIX,t.youmi.net,AdBlock -- DOMAIN-SUFFIX,t1.58cdn.com.cn,AdBlock -- DOMAIN-SUFFIX,t1.jzkapp.com,AdBlock -- DOMAIN-SUFFIX,t1.visualrevenue.com,AdBlock -- DOMAIN-SUFFIX,t1.wshufa.com,AdBlock -- DOMAIN-SUFFIX,t188.dazhonghua.cn,AdBlock -- DOMAIN-SUFFIX,t2.58cdn.com.cn,AdBlock -- DOMAIN-SUFFIX,t2.jzkapp.com,AdBlock -- DOMAIN-SUFFIX,t2.vbxx.net,AdBlock -- DOMAIN-SUFFIX,t2.wshufa.com,AdBlock -- DOMAIN-SUFFIX,t3.58cdn.com.cn,AdBlock -- DOMAIN-SUFFIX,t70123.com,AdBlock -- DOMAIN-SUFFIX,t75.qyqc4s.com,AdBlock -- DOMAIN-SUFFIX,ta.qq.com,AdBlock -- DOMAIN-SUFFIX,ta80.com,AdBlock -- DOMAIN-SUFFIX,taat00889.com,AdBlock -- DOMAIN-SUFFIX,tactics.bainv.net,AdBlock -- DOMAIN-SUFFIX,tad.suning.com,AdBlock -- DOMAIN-SUFFIX,tag.cdnmaster.cn,AdBlock -- DOMAIN-SUFFIX,tag.digitaltarget.ru,AdBlock -- DOMAIN-SUFFIX,tags.growingio.com,AdBlock -- DOMAIN-SUFFIX,tags2.adshell.net,AdBlock -- DOMAIN-SUFFIX,tags4.revdepo.com,AdBlock -- DOMAIN-SUFFIX,tajs.qq.com,AdBlock -- DOMAIN-SUFFIX,tajxgs.com,AdBlock -- DOMAIN-SUFFIX,talk.nz.igexin.com,AdBlock -- DOMAIN-SUFFIX,tangoutianxia.com,AdBlock -- DOMAIN-SUFFIX,tansuotv.com,AdBlock -- DOMAIN-SUFFIX,tanwanyx.com,AdBlock -- DOMAIN-SUFFIX,tanx.com,AdBlock -- DOMAIN-SUFFIX,tanxlog.istreamsche.com,AdBlock -- DOMAIN-SUFFIX,tanzanite.infomine.com,AdBlock -- DOMAIN-SUFFIX,taobaly.cn,AdBlock -- DOMAIN-SUFFIX,taobaoaliyun.cn,AdBlock -- DOMAIN-SUFFIX,taobaobo5.com,AdBlock -- DOMAIN-SUFFIX,taobayun.cn,AdBlock -- DOMAIN-SUFFIX,taoggou.com,AdBlock -- DOMAIN-SUFFIX,taohanpai.com,AdBlock -- DOMAIN-SUFFIX,taomato.com,AdBlock -- DOMAIN-SUFFIX,tap.rubiconproject.com,AdBlock -- DOMAIN-SUFFIX,tap-cdn.rubiconproject.com,AdBlock -- DOMAIN-SUFFIX,tapjoy.cn,AdBlock -- DOMAIN-SUFFIX,tapjoy.com,AdBlock -- DOMAIN-SUFFIX,tapjoyads.com,AdBlock -- DOMAIN-SUFFIX,tap-t.rubiconproject.com,AdBlock -- DOMAIN-SUFFIX,targetedinfo.com,AdBlock -- DOMAIN-SUFFIX,targetedmedia.com.cn,AdBlock -- DOMAIN-SUFFIX,targetedtopic.com,AdBlock -- DOMAIN-SUFFIX,tatagou.com.cn,AdBlock -- DOMAIN-SUFFIX,tb.code.twyxi.com,AdBlock -- DOMAIN-SUFFIX,tb060x.corp.youdao.com,AdBlock -- DOMAIN-SUFFIX,tb104x.corp.youdao.com,AdBlock -- DOMAIN-SUFFIX,tbaocdn.com,AdBlock -- DOMAIN-SUFFIX,tbjfw.com,AdBlock -- DOMAIN-SUFFIX,tc.51la.net,AdBlock -- DOMAIN-SUFFIX,tc.ci123.com,AdBlock -- DOMAIN-SUFFIX,tc600.com,AdBlock -- DOMAIN-SUFFIX,tcad.wedolook.com,AdBlock -- DOMAIN-SUFFIX,tcjy66.cc,AdBlock -- DOMAIN-SUFFIX,tcss.qq.com,AdBlock -- DOMAIN-SUFFIX,tcxshop.com,AdBlock -- DOMAIN-SUFFIX,td.mpush.cn,AdBlock -- DOMAIN-SUFFIX,td.xue63.com,AdBlock -- DOMAIN-SUFFIX,tdayi.com,AdBlock -- DOMAIN-SUFFIX,t-e.flyme.cn,AdBlock -- DOMAIN-SUFFIX,teen.77rog.com,AdBlock -- DOMAIN-SUFFIX,telstra.imrworldwide.com,AdBlock -- DOMAIN-SUFFIX,temai.snssdk.com,AdBlock -- DOMAIN-SUFFIX,temai.taobao.com,AdBlock -- DOMAIN-SUFFIX,temp.163.com,AdBlock -- DOMAIN-SUFFIX,tencentmind.com,AdBlock -- DOMAIN-SUFFIX,tenddata.com,AdBlock -- DOMAIN-SUFFIX,test.api.xlmc.sandai.net,AdBlock -- DOMAIN-SUFFIX,test.eduancm.com,AdBlock -- DOMAIN-SUFFIX,test.surepush.cn,AdBlock -- DOMAIN-SUFFIX,textlink.simba.taobao.com,AdBlock -- DOMAIN-SUFFIX,tf.caohua.com,AdBlock -- DOMAIN-SUFFIX,tf.hdfdm.com,AdBlock -- DOMAIN-SUFFIX,tf.hftaili.com,AdBlock -- DOMAIN-SUFFIX,t-flow.flyme.cn,AdBlock -- DOMAIN-SUFFIX,tfssl.caohua.com,AdBlock -- DOMAIN-SUFFIX,tg.1155t.cn,AdBlock -- DOMAIN-SUFFIX,tg.52digua.com,AdBlock -- DOMAIN-SUFFIX,tg.jifen.2345.com,AdBlock -- DOMAIN-SUFFIX,tg.m.37.com,AdBlock -- DOMAIN-SUFFIX,tga.csbew.com,AdBlock -- DOMAIN-SUFFIX,tgb.csbew.com,AdBlock -- DOMAIN-SUFFIX,th21333.com,AdBlock -- DOMAIN-SUFFIX,th7.cn,AdBlock -- DOMAIN-SUFFIX,thejesperbay.com,AdBlock -- DOMAIN-SUFFIX,themis.yahoo.com,AdBlock -- DOMAIN-SUFFIX,thescenseproject.com,AdBlock -- DOMAIN-SUFFIX,thetestpage.39.net,AdBlock -- DOMAIN-SUFFIX,thirdparty.biliapi.com,AdBlock -- DOMAIN-SUFFIX,thoughtleadr.com,AdBlock -- DOMAIN-SUFFIX,thxnr.com,AdBlock -- DOMAIN-SUFFIX,thyvjboy.com,AdBlock -- DOMAIN-SUFFIX,thztv.net,AdBlock -- DOMAIN-SUFFIX,ti.tradetracker.net,AdBlock -- DOMAIN-SUFFIX,tiads.time.com,AdBlock -- DOMAIN-SUFFIX,tiangoutai.com,AdBlock -- DOMAIN-SUFFIX,tiangu99.com,AdBlock -- DOMAIN-SUFFIX,tianmidian.com,AdBlock -- DOMAIN-SUFFIX,tianqi777.com,AdBlock -- DOMAIN-SUFFIX,tianyanzs.com,AdBlock -- DOMAIN-SUFFIX,ticcdn.com,AdBlock -- DOMAIN-SUFFIX,timelog.moviebox.baofeng.com,AdBlock -- DOMAIN-SUFFIX,tiqcdn.com,AdBlock -- DOMAIN-SUFFIX,titan.babytree.com,AdBlock -- DOMAIN-SUFFIX,titan.guestworld.tripod.lycos.com,AdBlock -- DOMAIN-SUFFIX,titan01.babytree.com,AdBlock -- DOMAIN-SUFFIX,titi.qifajiang.cn,AdBlock -- DOMAIN-SUFFIX,tjf.lyhuayun.com,AdBlock -- DOMAIN-SUFFIX,tjhuajiantang.com,AdBlock -- DOMAIN-SUFFIX,tjlog.easou.com,AdBlock -- DOMAIN-SUFFIX,tjlog.ps.easou.com,AdBlock -- DOMAIN-SUFFIX,tjqonline.cn,AdBlock -- DOMAIN-SUFFIX,tjs.sjs.sinajs.cn,AdBlock -- DOMAIN-SUFFIX,tk.baidu.com,AdBlock -- DOMAIN-SUFFIX,tk.optaim.com,AdBlock -- DOMAIN-SUFFIX,tkd777.cn,AdBlock -- DOMAIN-SUFFIX,tkmdng.cn,AdBlock -- DOMAIN-SUFFIX,tkweb.baidu.com,AdBlock -- DOMAIN-SUFFIX,t-l.play.aiseet.atianqi.com,AdBlock -- DOMAIN-SUFFIX,tmcs.net,AdBlock -- DOMAIN-SUFFIX,tmisc.home.news.cn,AdBlock -- DOMAIN-SUFFIX,tns-counter.ru,AdBlock -- DOMAIN-SUFFIX,token.rubiconproject.com,AdBlock -- DOMAIN-SUFFIX,tongji-res1.meizu.com,AdBlock -- DOMAIN-SUFFIX,tongqing2015.com,AdBlock -- DOMAIN-SUFFIX,tool.btrabbit.la,AdBlock -- DOMAIN-SUFFIX,toolbar.baidu.com,AdBlock -- DOMAIN-SUFFIX,toolbar.msn.com,AdBlock -- DOMAIN-SUFFIX,toourbb.com,AdBlock -- DOMAIN-SUFFIX,top.h.qhimg.com,AdBlock -- DOMAIN-SUFFIX,top.h.qhmsg.com,AdBlock -- DOMAIN-SUFFIX,top267.com,AdBlock -- DOMAIN-SUFFIX,topitme.com,AdBlock -- DOMAIN-SUFFIX,total.xinmin.cn,AdBlock -- DOMAIN-SUFFIX,touclick.com,AdBlock -- DOMAIN-SUFFIX,toutiao.2haha.com,AdBlock -- DOMAIN-SUFFIX,toutiao.jxnews.com.cn,AdBlock -- DOMAIN-SUFFIX,tp.sgcn.com,AdBlock -- DOMAIN-SUFFIX,tpe163.com,AdBlock -- DOMAIN-SUFFIX,tpush.html5.qq.com,AdBlock -- DOMAIN-SUFFIX,tqd.ntpddq.com,AdBlock -- DOMAIN-SUFFIX,track-east.mobileadtrading.com,AdBlock -- DOMAIN-SUFFIX,trackersimulator.org,AdBlock -- DOMAIN-SUFFIX,tracking-server-prod-1.zenmxapps.com,AdBlock -- DOMAIN-SUFFIX,tradeadexchange.com,AdBlock -- DOMAIN-SUFFIX,tradeccl.com,AdBlock -- DOMAIN-SUFFIX,trafficfactory.biz,AdBlock -- DOMAIN-SUFFIX,trafficjam.cn,AdBlock -- DOMAIN-SUFFIX,trafficjunky.net,AdBlock -- DOMAIN-SUFFIX,trafficmp.com,AdBlock -- DOMAIN-SUFFIX,tralog.ganji.com,AdBlock -- DOMAIN-SUFFIX,tran.news.so.com,AdBlock -- DOMAIN-SUFFIX,tredman.com,AdBlock -- DOMAIN-SUFFIX,trends.mobile.sina.cn,AdBlock -- DOMAIN-SUFFIX,trial.alcohol-soft.com,AdBlock -- DOMAIN-SUFFIX,trwba.com,AdBlock -- DOMAIN-SUFFIX,trzina.com,AdBlock -- DOMAIN-SUFFIX,ts.hivecn.cn,AdBlock -- DOMAIN-SUFFIX,tsdlp.com,AdBlock -- DOMAIN-SUFFIX,tsjdgzm.m.3dllc.cc,AdBlock -- DOMAIN-SUFFIX,tsrc8.com,AdBlock -- DOMAIN-SUFFIX,tt.biquge.la,AdBlock -- DOMAIN-SUFFIX,tt.shxinjie.cn,AdBlock -- DOMAIN-SUFFIX,tt.twzui6.com,AdBlock -- DOMAIN-SUFFIX,tt123.eastday.com,AdBlock -- DOMAIN-SUFFIX,tt321.eastday.com,AdBlock -- DOMAIN-SUFFIX,ttcdn.cn,AdBlock -- DOMAIN-SUFFIX,ttlm.cc,AdBlock -- DOMAIN-SUFFIX,ttlowe.com,AdBlock -- DOMAIN-SUFFIX,ttm.htfmbt.com,AdBlock -- DOMAIN-SUFFIX,ttts.leztc.com,AdBlock -- DOMAIN-SUFFIX,ttts.miyue17.com,AdBlock -- DOMAIN-SUFFIX,tu.baixing.com,AdBlock -- DOMAIN-SUFFIX,tu.njflfd.com,AdBlock -- DOMAIN-SUFFIX,tu.szefe.com,AdBlock -- DOMAIN-SUFFIX,tuadong.com,AdBlock -- DOMAIN-SUFFIX,tuanxue360.net,AdBlock -- DOMAIN-SUFFIX,tui.gtimg.com,AdBlock -- DOMAIN-SUFFIX,tui1999.com,AdBlock -- DOMAIN-SUFFIX,tui98.cn,AdBlock -- DOMAIN-SUFFIX,tuia.cn,AdBlock -- DOMAIN-SUFFIX,tuidang.epochtimes.org,AdBlock -- DOMAIN-SUFFIX,tuidang.org,AdBlock -- DOMAIN-SUFFIX,tuigoo.com,AdBlock -- DOMAIN-SUFFIX,tuiguang.178.com,AdBlock -- DOMAIN-SUFFIX,tuiguang.meitu.com,AdBlock -- DOMAIN-SUFFIX,tuiguang.yicha.cn,AdBlock -- DOMAIN-SUFFIX,tuijian.baidu.com,AdBlock -- DOMAIN-SUFFIX,tuipenguin.com,AdBlock -- DOMAIN-SUFFIX,tuisong.baidu.com,AdBlock -- DOMAIN-SUFFIX,tuitiger.com,AdBlock -- DOMAIN-SUFFIX,tuituigui19999.com,AdBlock -- DOMAIN-SUFFIX,tujidao.com,AdBlock -- DOMAIN-SUFFIX,tukeai.com,AdBlock -- DOMAIN-SUFFIX,tukexiu.com,AdBlock -- DOMAIN-SUFFIX,tukj.net,AdBlock -- DOMAIN-SUFFIX,tumblrprobes.cedexis.com,AdBlock -- DOMAIN-SUFFIX,tumblrreports.cedexis.com,AdBlock -- DOMAIN-SUFFIX,tunion-api.m.taobao.com,AdBlock -- DOMAIN-SUFFIX,turn.com,AdBlock -- DOMAIN-SUFFIX,tv.code.jjyx.com,AdBlock -- DOMAIN-SUFFIX,tw.adon.vpon.com,AdBlock -- DOMAIN-SUFFIX,tw.adx.nextmedia.com,AdBlock -- DOMAIN-SUFFIX,tw.api.vpon.com,AdBlock -- DOMAIN-SUFFIX,tw.fgmtv.org,AdBlock -- DOMAIN-SUFFIX,tw.pub.vpon.com,AdBlock -- DOMAIN-SUFFIX,tw13b093.sandai.net,AdBlock -- DOMAIN-SUFFIX,twb98.com,AdBlock -- DOMAIN-SUFFIX,twcczhu.com,AdBlock -- DOMAIN-SUFFIX,twh5.com,AdBlock -- DOMAIN-SUFFIX,twinplan.com,AdBlock -- DOMAIN-SUFFIX,twitterzs.com,AdBlock -- DOMAIN-SUFFIX,twldmx.com,AdBlock -- DOMAIN-SUFFIX,twzui6.com,AdBlock -- DOMAIN-SUFFIX,tx.lwinl.com,AdBlock -- DOMAIN-SUFFIX,txt.go.sohu.com,AdBlock -- DOMAIN-SUFFIX,txtad.jijiplayer.com,AdBlock -- DOMAIN-SUFFIX,tylll.com,AdBlock -- DOMAIN-SUFFIX,tyu.quanliyouxi.cn,AdBlock -- DOMAIN-SUFFIX,tyx.xtzxmy.com,AdBlock -- DOMAIN-SUFFIX,tz.1688988.com,AdBlock -- DOMAIN-SUFFIX,tz.zjhoudao.com,AdBlock -- DOMAIN-SUFFIX,tzbtw.com,AdBlock -- DOMAIN-SUFFIX,tz-dsp.com,AdBlock -- DOMAIN-SUFFIX,u.63kc.com,AdBlock -- DOMAIN-SUFFIX,u.cnzol.com,AdBlock -- DOMAIN-SUFFIX,u.ddvip.com,AdBlock -- DOMAIN-SUFFIX,u.diannaodian.com,AdBlock -- DOMAIN-SUFFIX,u.huoying666.com,AdBlock -- DOMAIN-SUFFIX,u.jimdo.com,AdBlock -- DOMAIN-SUFFIX,u.qijipc.com,AdBlock -- DOMAIN-SUFFIX,u.raidmedia.com.cn,AdBlock -- DOMAIN-SUFFIX,u.uc123.com,AdBlock -- DOMAIN-SUFFIX,u.ucfly.com,AdBlock -- DOMAIN-SUFFIX,u.xcy8.com,AdBlock -- DOMAIN-SUFFIX,u.yiiwoo.com,AdBlock -- DOMAIN-SUFFIX,u.yizuya.com,AdBlock -- DOMAIN-SUFFIX,u0.s.minisplat.cn,AdBlock -- DOMAIN-SUFFIX,u034024.nr1234.com,AdBlock -- DOMAIN-SUFFIX,u1.img.mobile.sina.cn,AdBlock -- DOMAIN-SUFFIX,u1.s.minisplat.cn,AdBlock -- DOMAIN-SUFFIX,u1.shuaiku.com,AdBlock -- DOMAIN-SUFFIX,u2.s.minisplat.cn,AdBlock -- DOMAIN-SUFFIX,u291014.nr1234.com,AdBlock -- DOMAIN-SUFFIX,u349036.ff112222.com,AdBlock -- DOMAIN-SUFFIX,ua.badongo.com,AdBlock -- DOMAIN-SUFFIX,uapi.punchbox.org,AdBlock -- DOMAIN-SUFFIX,ubm.fangtoo.com,AdBlock -- DOMAIN-SUFFIX,uc.haoyunyuan.cc,AdBlock -- DOMAIN-SUFFIX,uc.xiansuper.com,AdBlock -- DOMAIN-SUFFIX,uc2.atobo.com.cn,AdBlock -- DOMAIN-SUFFIX,uc610.com,AdBlock -- DOMAIN-SUFFIX,uc9.ucweb.com,AdBlock -- DOMAIN-SUFFIX,ucaliyun.cn,AdBlock -- DOMAIN-SUFFIX,ucan.25pp.com,AdBlock -- DOMAIN-SUFFIX,ucqq.cnsptv.com.cn,AdBlock -- DOMAIN-SUFFIX,ucrzgcs.cn,AdBlock -- DOMAIN-SUFFIX,ucstat.baidu.com,AdBlock -- DOMAIN-SUFFIX,ucus.ucweb.com,AdBlock -- DOMAIN-SUFFIX,ucxxii.com,AdBlock -- DOMAIN-SUFFIX,uczzd.com,AdBlock -- DOMAIN-SUFFIX,uczzd.com.cn,AdBlock -- DOMAIN-SUFFIX,uczzd.net,AdBlock -- DOMAIN-SUFFIX,udata.mixmarket.biz,AdBlock -- DOMAIN-SUFFIX,udc.msn.com,AdBlock -- DOMAIN-SUFFIX,udm.scorecardresearch.com,AdBlock -- DOMAIN-SUFFIX,udrig.com,AdBlock -- DOMAIN-SUFFIX,udrwyjpwjfeg.com,AdBlock -- DOMAIN-SUFFIX,ue.ueadlian.com,AdBlock -- DOMAIN-SUFFIX,ue.yeyoucdn.com,AdBlock -- DOMAIN-SUFFIX,ueadlian.com,AdBlock -- DOMAIN-SUFFIX,uebawtz7.me,AdBlock -- DOMAIN-SUFFIX,ugc.moji001.com,AdBlock -- DOMAIN-SUFFIX,ugg.keefung-zs.com,AdBlock -- DOMAIN-SUFFIX,ugg66.com,AdBlock -- DOMAIN-SUFFIX,ugvip.com,AdBlock -- DOMAIN-SUFFIX,ui37.net,AdBlock -- DOMAIN-SUFFIX,uid.ksosoft.com,AdBlock -- DOMAIN-SUFFIX,uid.mdbchina.com,AdBlock -- DOMAIN-SUFFIX,uimg.27admin.com,AdBlock -- DOMAIN-SUFFIX,uimserv.net,AdBlock -- DOMAIN-SUFFIX,ujian.cc,AdBlock -- DOMAIN-SUFFIX,ujikdd041o.cn,AdBlock -- DOMAIN-SUFFIX,uk3oi.adgze.cn,AdBlock -- DOMAIN-SUFFIX,ukeiae.com,AdBlock -- DOMAIN-SUFFIX,ulic.baidu.com,AdBlock -- DOMAIN-SUFFIX,ulink.cc,AdBlock -- DOMAIN-SUFFIX,ulog.imap.baidu.com,AdBlock -- DOMAIN-SUFFIX,ultraiso.net,AdBlock -- DOMAIN-SUFFIX,um.simpli.fi,AdBlock -- DOMAIN-SUFFIX,um0592.com,AdBlock -- DOMAIN-SUFFIX,um2.eqads.com,AdBlock -- DOMAIN-SUFFIX,um29.com,AdBlock -- DOMAIN-SUFFIX,umid.orion.meizu.com,AdBlock -- DOMAIN-SUFFIX,umiwi.com,AdBlock -- DOMAIN-SUFFIX,umyai.com,AdBlock -- DOMAIN-SUFFIX,un.52rkl.cn,AdBlock -- DOMAIN-SUFFIX,un.soarfi.cn,AdBlock -- DOMAIN-SUFFIX,un.winasdaq.com,AdBlock -- DOMAIN-SUFFIX,un1.takefoto.cn,AdBlock -- DOMAIN-SUFFIX,unconf.mobad.ijinshan.com,AdBlock -- DOMAIN-SUFFIX,undm.qibulo.com,AdBlock -- DOMAIN-SUFFIX,unicast.ign.com,AdBlock -- DOMAIN-SUFFIX,unicast.msn.com,AdBlock -- DOMAIN-SUFFIX,unilog.wostore.cn,AdBlock -- DOMAIN-SUFFIX,unimhk.com,AdBlock -- DOMAIN-SUFFIX,union.baidu.com,AdBlock -- DOMAIN-SUFFIX,union.baidustatic.guannin.com,AdBlock -- DOMAIN-SUFFIX,union.china.com.cn,AdBlock -- DOMAIN-SUFFIX,union.dbba.cn,AdBlock -- DOMAIN-SUFFIX,union.maccms.com,AdBlock -- DOMAIN-SUFFIX,union.mop.com,AdBlock -- DOMAIN-SUFFIX,union.sogou.com,AdBlock -- DOMAIN-SUFFIX,union.star-media.cn,AdBlock -- DOMAIN-SUFFIX,union.youdao.com,AdBlock -- DOMAIN-SUFFIX,union1.xiaojianjian.net,AdBlock -- DOMAIN-SUFFIX,uniondm.cz88.net,AdBlock -- DOMAIN-SUFFIX,unionimage.baidu.com,AdBlock -- DOMAIN-SUFFIX,unionsy.com,AdBlock -- DOMAIN-SUFFIX,union-wifi.com,AdBlock -- DOMAIN-SUFFIX,unipaydl.wostore.cn,AdBlock -- DOMAIN-SUFFIX,unipayupg.wostore.cn,AdBlock -- DOMAIN-SUFFIX,unitacs.m.taobao.com,AdBlock -- DOMAIN-SUFFIX,unjs.jfcdns.com,AdBlock -- DOMAIN-SUFFIX,unlitui.com,AdBlock -- DOMAIN-SUFFIX,uns.soarfi.cn,AdBlock -- DOMAIN-SUFFIX,untitled.dwstatic.com,AdBlock -- DOMAIN-SUFFIX,uodoo.com,AdBlock -- DOMAIN-SUFFIX,uoyrsd.com,AdBlock -- DOMAIN-SUFFIX,up.cm.ksmobile.com,AdBlock -- DOMAIN-SUFFIX,up.hiao.com,AdBlock -- DOMAIN-SUFFIX,up4.ucweb.com,AdBlock -- DOMAIN-SUFFIX,upd.faronicslabs.com,AdBlock -- DOMAIN-SUFFIX,update.360safe.com,AdBlock -- DOMAIN-SUFFIX,update.avlyun.sec.miui.com,AdBlock -- DOMAIN-SUFFIX,update.bainv.net,AdBlock -- DOMAIN-SUFFIX,update.coolyun.com,AdBlock -- DOMAIN-SUFFIX,update.juw37xqo3x.com,AdBlock -- DOMAIN-SUFFIX,update.minipage.2345.com,AdBlock -- DOMAIN-SUFFIX,update.mobile.kugou.com,AdBlock -- DOMAIN-SUFFIX,update.sdk.jiguang.cn,AdBlock -- DOMAIN-SUFFIX,updatecenter.qq.com,AdBlock -- DOMAIN-SUFFIX,updatepage.kuwo.cn,AdBlock -- DOMAIN-SUFFIX,updates-s3.binaryage.com,AdBlock -- DOMAIN-SUFFIX,uplze.code.weddingeeos.com,AdBlock -- DOMAIN-SUFFIX,ups.ksmobile.net,AdBlock -- DOMAIN-SUFFIX,upush.res.meizu.com,AdBlock -- DOMAIN-SUFFIX,uqszvk.code.weddingeeos.com,AdBlock -- DOMAIN-SUFFIX,uqum.52shouyou.com.cn,AdBlock -- DOMAIN-SUFFIX,urbanairship.com,AdBlock -- DOMAIN-SUFFIX,urchin.5173.com,AdBlock -- DOMAIN-SUFFIX,urh.tylll.com,AdBlock -- DOMAIN-SUFFIX,urhu.cn,AdBlock -- DOMAIN-SUFFIX,uri6.com,AdBlock -- DOMAIN-SUFFIX,url.222bz.com,AdBlock -- DOMAIN-SUFFIX,url.tudown.com,AdBlock -- DOMAIN-SUFFIX,urls.api.twitter.com,AdBlock -- DOMAIN-SUFFIX,us.bannyat.com,AdBlock -- DOMAIN-SUFFIX,us.bs.serving-sys.com,AdBlock -- DOMAIN-SUFFIX,user.tiankongzudui.com,AdBlock -- DOMAIN-SUFFIX,usercollection.chinadaily.com.cn,AdBlock -- DOMAIN-SUFFIX,ushaqi.com,AdBlock -- DOMAIN-SUFFIX,usingde.com,AdBlock -- DOMAIN-SUFFIX,usr.mgid.com,AdBlock -- DOMAIN-SUFFIX,uss-pid.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,usync.aws.rubiconproject.com,AdBlock -- DOMAIN-SUFFIX,ut2.shuqistat.com,AdBlock -- DOMAIN-SUFFIX,util.nphoto.net,AdBlock -- DOMAIN-SUFFIX,utility.baidu.com,AdBlock -- DOMAIN-SUFFIX,utility.rogersmedia.com,AdBlock -- DOMAIN-SUFFIX,utk.baidu.com,AdBlock -- DOMAIN-SUFFIX,utp.ucweb.com,AdBlock -- DOMAIN-SUFFIX,uu.feipukeplus.com,AdBlock -- DOMAIN-SUFFIX,uu.zeverdg.com,AdBlock -- DOMAIN-SUFFIX,uuidksinc.net,AdBlock -- DOMAIN-SUFFIX,uulucky.com,AdBlock -- DOMAIN-SUFFIX,uvclick.com,AdBlock -- DOMAIN-SUFFIX,uw9377.com,AdBlock -- DOMAIN-SUFFIX,uxip.meizu.com,AdBlock -- DOMAIN-SUFFIX,uyunad.com,AdBlock -- DOMAIN-SUFFIX,uzpmrbek.com,AdBlock -- DOMAIN-SUFFIX,v.dbncp.com,AdBlock -- DOMAIN-SUFFIX,v.e7002.com,AdBlock -- DOMAIN-SUFFIX,v.irs01.com,AdBlock -- DOMAIN-SUFFIX,v.oq68.com,AdBlock -- DOMAIN-SUFFIX,v.rmbn.net,AdBlock -- DOMAIN-SUFFIX,v.szpaopao.com,AdBlock -- DOMAIN-SUFFIX,v00087.com,AdBlock -- DOMAIN-SUFFIX,v02u9.cn,AdBlock -- DOMAIN-SUFFIX,v1.0594529.com,AdBlock -- DOMAIN-SUFFIX,v1.ujian.cc,AdBlock -- DOMAIN-SUFFIX,v12-r0566gbscjw.z.irs01.com,AdBlock -- DOMAIN-SUFFIX,v1-feed.idreamsky.com,AdBlock -- DOMAIN-SUFFIX,v2.fm.n.duokanbox.com,AdBlock -- DOMAIN-SUFFIX,v2.jiathis.com,AdBlock -- DOMAIN-SUFFIX,v3.jiathis.com,AdBlock -- DOMAIN-SUFFIX,v66v66.com,AdBlock -- DOMAIN-SUFFIX,v7.kawinhome.com,AdBlock -- DOMAIN-SUFFIX,v707070.com,AdBlock -- DOMAIN-SUFFIX,va.gxpan.cn,AdBlock -- DOMAIN-SUFFIX,vad1.jianshen8.com,AdBlock -- DOMAIN-SUFFIX,val.atm.cp31.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,valf.atm.cp31.ott.cibntv.net,AdBlock -- DOMAIN-SUFFIX,vamaker.com,AdBlock -- DOMAIN-SUFFIX,vangmobi.com,AdBlock -- DOMAIN-SUFFIX,vas.funshion.com,AdBlock -- DOMAIN-SUFFIX,vatrack.hinet.net,AdBlock -- DOMAIN-SUFFIX,vcfs6ip5h6.bid,AdBlock -- DOMAIN-SUFFIX,vda.17173.com,AdBlock -- DOMAIN-SUFFIX,vdapprecv.app.cntvwb.cn,AdBlock -- DOMAIN-SUFFIX,vdazz.net,AdBlock -- DOMAIN-SUFFIX,ve.tsdlp.com,AdBlock -- DOMAIN-SUFFIX,vedeh.com,AdBlock -- DOMAIN-SUFFIX,vegaschina.cn,AdBlock -- DOMAIN-SUFFIX,vegent.cn,AdBlock -- DOMAIN-SUFFIX,vendor1.fitschigogerl.com,AdBlock -- DOMAIN-SUFFIX,ver.touclick.com,AdBlock -- DOMAIN-SUFFIX,verdict.abc.go.com,AdBlock -- DOMAIN-SUFFIX,vers80.com,AdBlock -- DOMAIN-SUFFIX,vg02h8z1ul.me,AdBlock -- DOMAIN-SUFFIX,vi0.mzy2014.com,AdBlock -- DOMAIN-SUFFIX,vi1.ku6img.net,AdBlock -- DOMAIN-SUFFIX,vi1.mzy2014.com,AdBlock -- DOMAIN-SUFFIX,vi1.souid.com,AdBlock -- DOMAIN-SUFFIX,vi2.ku6img.net,AdBlock -- DOMAIN-SUFFIX,vichc.com,AdBlock -- DOMAIN-SUFFIX,victorjx.com,AdBlock -- DOMAIN-SUFFIX,video.cooguo.com,AdBlock -- DOMAIN-SUFFIX,video.ureport.push.qq.com,AdBlock -- DOMAIN-SUFFIX,video.wap.mpush.qq.com,AdBlock -- DOMAIN-SUFFIX,videondun.com,AdBlock -- DOMAIN-SUFFIX,videopush.baidu.com,AdBlock -- DOMAIN-SUFFIX,viglink.com,AdBlock -- DOMAIN-SUFFIX,vimg.dwstatic.com,AdBlock -- DOMAIN-SUFFIX,vip.cainiaofx.com,AdBlock -- DOMAIN-SUFFIX,vip.hyz86.com,AdBlock -- DOMAIN-SUFFIX,vip.id528.com,AdBlock -- DOMAIN-SUFFIX,vip.jindu179.com,AdBlock -- DOMAIN-SUFFIX,vip.mall044.com,AdBlock -- DOMAIN-SUFFIX,vip.media8.cn,AdBlock -- DOMAIN-SUFFIX,vip.pinghuhome.com,AdBlock -- DOMAIN-SUFFIX,vip.qqxwf.com,AdBlock -- DOMAIN-SUFFIX,vip.zhuba8.com,AdBlock -- DOMAIN-SUFFIX,vipads.cn,AdBlock -- DOMAIN-SUFFIX,vista.tgbus.com,AdBlock -- DOMAIN-SUFFIX,vista.tgbusdata.cn,AdBlock -- DOMAIN-SUFFIX,visualscience.external.bbc.co.uk,AdBlock -- DOMAIN-SUFFIX,vj.x-ssp.com,AdBlock -- DOMAIN-SUFFIX,vj0.42422277.com,AdBlock -- DOMAIN-SUFFIX,vjcyehtqm9.me,AdBlock -- DOMAIN-SUFFIX,vl8c4g7tmo.me,AdBlock -- DOMAIN-SUFFIX,vlive.qqvideo.tc.qq.com,AdBlock -- DOMAIN-SUFFIX,vmzqwz.cn,AdBlock -- DOMAIN-SUFFIX,vn543.com,AdBlock -- DOMAIN-SUFFIX,vns800600.net,AdBlock -- DOMAIN-SUFFIX,vodlog.m1905.cn,AdBlock -- DOMAIN-SUFFIX,voiceads.cn,AdBlock -- DOMAIN-SUFFIX,voiceads.com,AdBlock -- DOMAIN-SUFFIX,voila.refr.adgtw.orangeads.fr,AdBlock -- DOMAIN-SUFFIX,vol.lflili.com,AdBlock -- DOMAIN-SUFFIX,vpon.com,AdBlock -- DOMAIN-SUFFIX,vps.inte.sogou.com,AdBlock -- DOMAIN-SUFFIX,vs.funshion.com,AdBlock -- DOMAIN-SUFFIX,vs19.gzcu.u3.ucweb.com,AdBlock -- DOMAIN-SUFFIX,vs2.gzcu.u3.ucweb.com,AdBlock -- DOMAIN-SUFFIX,vs7.gzcu.u3.ucweb.com,AdBlock -- DOMAIN-SUFFIX,vs8.gzct.u3.ucweb.com,AdBlock -- DOMAIN-SUFFIX,vs8.gzcu.u3.ucweb.com,AdBlock -- DOMAIN-SUFFIX,v-sence.gentags.net,AdBlock -- DOMAIN-SUFFIX,vsnoon.com,AdBlock -- DOMAIN-SUFFIX,vt.bjhdonline.com,AdBlock -- DOMAIN-SUFFIX,vtale.org,AdBlock -- DOMAIN-SUFFIX,vungle.cn,AdBlock -- DOMAIN-SUFFIX,vungle.com,AdBlock -- DOMAIN-SUFFIX,vupload.duowan.com,AdBlock -- DOMAIN-SUFFIX,vvlog.moviebox.baofeng.com,AdBlock -- DOMAIN-SUFFIX,vvv.ieduw.com,AdBlock -- DOMAIN-SUFFIX,vvvulqn7.com,AdBlock -- DOMAIN-SUFFIX,vwkhdi.cn,AdBlock -- DOMAIN-SUFFIX,vwws6.net,AdBlock -- DOMAIN-SUFFIX,vz-cdn.contentabc.com,AdBlock -- DOMAIN-SUFFIX,vz-cdn.trafficjunky.net,AdBlock -- DOMAIN-SUFFIX,w.bobocn.cn,AdBlock -- DOMAIN-SUFFIX,w.cube3d.cn,AdBlock -- DOMAIN-SUFFIX,w.gdown.baidu.com,AdBlock -- DOMAIN-SUFFIX,w.homes.yahoo.net,AdBlock -- DOMAIN-SUFFIX,w.jscsd.cn,AdBlock -- DOMAIN-SUFFIX,w.m.taobao.com,AdBlock -- DOMAIN-SUFFIX,w.punchbox.org,AdBlock -- DOMAIN-SUFFIX,w.sharethis.com,AdBlock -- DOMAIN-SUFFIX,w.waacorp.com,AdBlock -- DOMAIN-SUFFIX,w.werpig.com,AdBlock -- DOMAIN-SUFFIX,w.x.baidu.com,AdBlock -- DOMAIN-SUFFIX,w.xiaopiaoyou.com,AdBlock -- DOMAIN-SUFFIX,w.yamaidei.cn,AdBlock -- DOMAIN-SUFFIX,w.yinyuehu.cn,AdBlock -- DOMAIN-SUFFIX,w.ymapp.com,AdBlock -- DOMAIN-SUFFIX,w1.diaoyou.com,AdBlock -- DOMAIN-SUFFIX,w2528.com,AdBlock -- DOMAIN-SUFFIX,w3.yinyuehu.cn,AdBlock -- DOMAIN-SUFFIX,w3989.com,AdBlock -- DOMAIN-SUFFIX,w5sac788c1.360doc.cn,AdBlock -- DOMAIN-SUFFIX,w6061.move7.com,AdBlock -- DOMAIN-SUFFIX,w65p.com,AdBlock -- DOMAIN-SUFFIX,w8.com.cn,AdBlock -- DOMAIN-SUFFIX,w88.go.com,AdBlock -- DOMAIN-SUFFIX,wa.kuwo.cn,AdBlock -- DOMAIN-SUFFIX,wallet.advcash.com,AdBlock -- DOMAIN-SUFFIX,wan.2345.com,AdBlock -- DOMAIN-SUFFIX,wan.douyu.com,AdBlock -- DOMAIN-SUFFIX,wan.rising.cn,AdBlock -- DOMAIN-SUFFIX,wan.sogou.com,AdBlock -- DOMAIN-SUFFIX,wancai.com,AdBlock -- DOMAIN-SUFFIX,wanfeng1.com,AdBlock -- DOMAIN-SUFFIX,wangdaizao.com,AdBlock -- DOMAIN-SUFFIX,wangdq.com,AdBlock -- DOMAIN-SUFFIX,wangmeng.baidu.com,AdBlock -- DOMAIN-SUFFIX,wangmeng.sogou.com,AdBlock -- DOMAIN-SUFFIX,wangsufast.com,AdBlock -- DOMAIN-SUFFIX,wanproxy.127.net,AdBlock -- DOMAIN-SUFFIX,wantaico.com,AdBlock -- DOMAIN-SUFFIX,wantfour.com,AdBlock -- DOMAIN-SUFFIX,wap.114so.cn,AdBlock -- DOMAIN-SUFFIX,wap.138lm.com,AdBlock -- DOMAIN-SUFFIX,wap.bytdzsw.com,AdBlock -- DOMAIN-SUFFIX,wap.cmgame.com,AdBlock -- DOMAIN-SUFFIX,wap.moad.cn,AdBlock -- DOMAIN-SUFFIX,wap.mpush.qq.com,AdBlock -- DOMAIN-SUFFIX,wap.tanwan.com,AdBlock -- DOMAIN-SUFFIX,wap.txwdn.com,AdBlock -- DOMAIN-SUFFIX,wap.wooboo.com.cn,AdBlock -- DOMAIN-SUFFIX,wap001.bytravel.cn,AdBlock -- DOMAIN-SUFFIX,wap3.ucweb.com,AdBlock -- DOMAIN-SUFFIX,wapadv.com,AdBlock -- DOMAIN-SUFFIX,wappv.zol.com.cn,AdBlock -- DOMAIN-SUFFIX,waps.cn,AdBlock -- DOMAIN-SUFFIX,wapscdn.wapx.cn,AdBlock -- DOMAIN-SUFFIX,wapssl.ff113300.com,AdBlock -- DOMAIN-SUFFIX,wapwbclick.mobile.sina.cn,AdBlock -- DOMAIN-SUFFIX,wapx.cn,AdBlock -- DOMAIN-SUFFIX,wapx.com,AdBlock -- DOMAIN-SUFFIX,watson.live.com,AdBlock -- DOMAIN-SUFFIX,watson.microsoft.com,AdBlock -- DOMAIN-SUFFIX,wazero.online,AdBlock -- DOMAIN-SUFFIX,wb.gtimg.com,AdBlock -- DOMAIN-SUFFIX,wbapp.mobile.sina.cn,AdBlock -- DOMAIN-SUFFIX,wbclick.mobile.sina.cn,AdBlock -- DOMAIN-SUFFIX,wbpctips.mobile.sina.cn,AdBlock -- DOMAIN-SUFFIX,wbwl.houyi.baofeng.net,AdBlock -- DOMAIN-SUFFIX,wda.ydt.com.cn,AdBlock -- DOMAIN-SUFFIX,wd-edge.sharethis.com,AdBlock -- DOMAIN-SUFFIX,wdgsl.com,AdBlock -- DOMAIN-SUFFIX,wds.inte.sogoucdn.com,AdBlock -- DOMAIN-SUFFIX,wdzsb.com.cn,AdBlock -- DOMAIN-SUFFIX,we.tm,AdBlock -- DOMAIN-SUFFIX,weareqy.com,AdBlock -- DOMAIN-SUFFIX,web.900.la,AdBlock -- DOMAIN-SUFFIX,web.ali213.net,AdBlock -- DOMAIN-SUFFIX,web.data.pplive.com,AdBlock -- DOMAIN-SUFFIX,web.houyi.baofeng.net,AdBlock -- DOMAIN-SUFFIX,web.kuaisouwifi.com,AdBlock -- DOMAIN-SUFFIX,web.sogou.com,AdBlock -- DOMAIN-SUFFIX,webd.home.news.cn,AdBlock -- DOMAIN-SUFFIX,webdissector.com,AdBlock -- DOMAIN-SUFFIX,webkooo.com,AdBlock -- DOMAIN-SUFFIX,weblb-wg.gslb.spotify.com,AdBlock -- DOMAIN-SUFFIX,webmaster.extabit.com,AdBlock -- DOMAIN-SUFFIX,webmine.cz,AdBlock -- DOMAIN-SUFFIX,webstat.kuwo.cn,AdBlock -- DOMAIN-SUFFIX,webstat.ws.126.net,AdBlock -- DOMAIN-SUFFIX,webterren.com,AdBlock -- DOMAIN-SUFFIX,webtrends.yccdn.com,AdBlock -- DOMAIN-SUFFIX,weibomingzi.com,AdBlock -- DOMAIN-SUFFIX,weiguizhizuo.com,AdBlock -- DOMAIN-SUFFIX,weiqiqu.cn,AdBlock -- DOMAIN-SUFFIX,weishi.baidu.com,AdBlock -- DOMAIN-SUFFIX,weixiangzu.cn,AdBlock -- DOMAIN-SUFFIX,weixin.renrenying.com,AdBlock -- DOMAIN-SUFFIX,weixinvip.ren,AdBlock -- DOMAIN-SUFFIX,weld.iefsf.com,AdBlock -- DOMAIN-SUFFIX,weld.uunice.com,AdBlock -- DOMAIN-SUFFIX,weld830.uunice.com,AdBlock -- DOMAIN-SUFFIX,weldc1.021ye.com,AdBlock -- DOMAIN-SUFFIX,werpig.com,AdBlock -- DOMAIN-SUFFIX,weyyae.com,AdBlock -- DOMAIN-SUFFIX,wgie.0z5jn.cn,AdBlock -- DOMAIN-SUFFIX,wgnlz.com,AdBlock -- DOMAIN-SUFFIX,wgnmp.com,AdBlock -- DOMAIN-SUFFIX,whafwl.com,AdBlock -- DOMAIN-SUFFIX,whalecloud.com,AdBlock -- DOMAIN-SUFFIX,whcrdz.com,AdBlock -- DOMAIN-SUFFIX,whistleout.s3.amazonaws.com,AdBlock -- DOMAIN-SUFFIX,whn.star-media.cn,AdBlock -- DOMAIN-SUFFIX,whpxy.com,AdBlock -- DOMAIN-SUFFIX,whu.cwpush.com,AdBlock -- DOMAIN-SUFFIX,whytoss.com,AdBlock -- DOMAIN-SUFFIX,widget.criteo.com,AdBlock -- DOMAIN-SUFFIX,widget.crowdignite.com,AdBlock -- DOMAIN-SUFFIX,widget.directory.dailycommercial.com,AdBlock -- DOMAIN-SUFFIX,widget.kelkoo.com,AdBlock -- DOMAIN-SUFFIX,widget.raaze.com,AdBlock -- DOMAIN-SUFFIX,widget.searchschoolsnetwork.com,AdBlock -- DOMAIN-SUFFIX,widget.shopstyle.com.au,AdBlock -- DOMAIN-SUFFIX,widget.solarquotes.com.au,AdBlock -- DOMAIN-SUFFIX,widgets.comcontent.net,AdBlock -- DOMAIN-SUFFIX,widgets.realestate.com.au,AdBlock -- DOMAIN-SUFFIX,widnd.dajiadou6.com,AdBlock -- DOMAIN-SUFFIX,wifiapi01.51y5.net,AdBlock -- DOMAIN-SUFFIX,wifiapi02.51y5.net,AdBlock -- DOMAIN-SUFFIX,wifijia.net,AdBlock -- DOMAIN-SUFFIX,wifishow.ggsafe.com,AdBlock -- DOMAIN-SUFFIX,wikigifth.com,AdBlock -- DOMAIN-SUFFIX,winads.cn,AdBlock -- DOMAIN-SUFFIX,winasdaq.com,AdBlock -- DOMAIN-SUFFIX,winbaicai.com,AdBlock -- DOMAIN-SUFFIX,windcdna.com,AdBlock -- DOMAIN-SUFFIX,winlinebet.ru,AdBlock -- DOMAIN-SUFFIX,winvestern.com.cn,AdBlock -- DOMAIN-SUFFIX,wip3.adobe.com,AdBlock -- DOMAIN-SUFFIX,wisepush.video.baidu.com,AdBlock -- DOMAIN-SUFFIX,wiyun.com,AdBlock -- DOMAIN-SUFFIX,wjguc.com,AdBlock -- DOMAIN-SUFFIX,wka8.com,AdBlock -- DOMAIN-SUFFIX,wkanc.com,AdBlock -- DOMAIN-SUFFIX,wl.51taifu.com,AdBlock -- DOMAIN-SUFFIX,wl.eastlady.cn,AdBlock -- DOMAIN-SUFFIX,wl.houyi.baofeng.net,AdBlock -- DOMAIN-SUFFIX,wlkpa.cn,AdBlock -- DOMAIN-SUFFIX,wlneteller.adsrv.eacdn.com,AdBlock -- DOMAIN-SUFFIX,wlpinnaclesports.eacdn.com,AdBlock -- DOMAIN-SUFFIX,wm.20150.net,AdBlock -- DOMAIN-SUFFIX,wm.69shi.cn,AdBlock -- DOMAIN-SUFFIX,wm.baidu.com,AdBlock -- DOMAIN-SUFFIX,wm.lrswl.com,AdBlock -- DOMAIN-SUFFIX,wm.mipcdn.com,AdBlock -- DOMAIN-SUFFIX,wmcdn.qtmojo.cn,AdBlock -- DOMAIN-SUFFIX,wo.iuni.com.cn,AdBlock -- DOMAIN-SUFFIX,wo685.com,AdBlock -- DOMAIN-SUFFIX,woaizhongguo.cdn111222.com,AdBlock -- DOMAIN-SUFFIX,wodhid.com,AdBlock -- DOMAIN-SUFFIX,wole.us,AdBlock -- DOMAIN-SUFFIX,womenbaby.com,AdBlock -- DOMAIN-SUFFIX,womenwan.com,AdBlock -- DOMAIN-SUFFIX,wooboo.com.cn,AdBlock -- DOMAIN-SUFFIX,woocall.sina.com.cn,AdBlock -- DOMAIN-SUFFIX,woodpecker.uc.cn,AdBlock -- DOMAIN-SUFFIX,worldh5.gamehz.cn,AdBlock -- DOMAIN-SUFFIX,wowips.com,AdBlock -- DOMAIN-SUFFIX,wpc.32df9.rhocdn.net,AdBlock -- DOMAIN-SUFFIX,wpwdf.com,AdBlock -- DOMAIN-SUFFIX,wqmobile.com,AdBlock -- DOMAIN-SUFFIX,wqqsa.puzihua.com,AdBlock -- DOMAIN-SUFFIX,wqsph.net,AdBlock -- DOMAIN-SUFFIX,wr.da.netease.com,AdBlock -- DOMAIN-SUFFIX,wrvdmh.cn,AdBlock -- DOMAIN-SUFFIX,ws.ksmobile.net,AdBlock -- DOMAIN-SUFFIX,ws.progrss.yahoo.com,AdBlock -- DOMAIN-SUFFIX,ws.sj.qq.com,AdBlock -- DOMAIN-SUFFIX,ws.tapjoyads.com,AdBlock -- DOMAIN-SUFFIX,ws.voiceads.cn,AdBlock -- DOMAIN-SUFFIX,ws1.datouniao.com,AdBlock -- DOMAIN-SUFFIX,ws2.cootekservice.com,AdBlock -- DOMAIN-SUFFIX,ws2.datouniao.com,AdBlock -- DOMAIN-SUFFIX,ws341.com,AdBlock -- DOMAIN-SUFFIX,ws7j.com,AdBlock -- DOMAIN-SUFFIX,wshufa.com,AdBlock -- DOMAIN-SUFFIX,wsoe.kwiago.com,AdBlock -- DOMAIN-SUFFIX,wsp.marketgid.com,AdBlock -- DOMAIN-SUFFIX,wstztt.com,AdBlock -- DOMAIN-SUFFIX,wtcpm.com,AdBlock -- DOMAIN-SUFFIX,wth.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,wtpn.twenga.co.uk,AdBlock -- DOMAIN-SUFFIX,wtpn.twenga.de,AdBlock -- DOMAIN-SUFFIX,wtrace.cmgame.com,AdBlock -- DOMAIN-SUFFIX,wtradv.market.xiaomi.com,AdBlock -- DOMAIN-SUFFIX,wu65.com,AdBlock -- DOMAIN-SUFFIX,wudang05.com,AdBlock -- DOMAIN-SUFFIX,wuliao.epro.sogou.com,AdBlock -- DOMAIN-SUFFIX,wuliao.ganji.cn,AdBlock -- DOMAIN-SUFFIX,wuliao.juqingba.cn,AdBlock -- DOMAIN-SUFFIX,wumii.cn,AdBlock -- DOMAIN-SUFFIX,wumii.com,AdBlock -- DOMAIN-SUFFIX,wuqdebjfhjas.bid,AdBlock -- DOMAIN-SUFFIX,wuwho.cn,AdBlock -- DOMAIN-SUFFIX,ww.xiaopiaoyou.com,AdBlock -- DOMAIN-SUFFIX,ww10.onetad.com,AdBlock -- DOMAIN-SUFFIX,ww101.onetad.com,AdBlock -- DOMAIN-SUFFIX,ww11.onetad.com,AdBlock -- DOMAIN-SUFFIX,ww12.onetad.com,AdBlock -- DOMAIN-SUFFIX,ww13.onetad.com,AdBlock -- DOMAIN-SUFFIX,ww202.keyyou.net,AdBlock -- DOMAIN-SUFFIX,ww202.onetad.com,AdBlock -- DOMAIN-SUFFIX,ww34.onetad.com,AdBlock -- DOMAIN-SUFFIX,ww346.onetad.com,AdBlock -- DOMAIN-SUFFIX,ww360.onetad.com,AdBlock -- DOMAIN-SUFFIX,ww363.onetad.com,AdBlock -- DOMAIN-SUFFIX,ww366.onetad.com,AdBlock -- DOMAIN-SUFFIX,ww78.onetad.com,AdBlock -- DOMAIN-SUFFIX,ww8.onetad.com,AdBlock -- DOMAIN-SUFFIX,ww9.onetad.com,AdBlock -- DOMAIN-SUFFIX,wwis-dubc1-vip60.adobe.com,AdBlock -- DOMAIN-SUFFIX,wwv.onetad.com,AdBlock -- DOMAIN-SUFFIX,www2.xinmin.cn,AdBlock -- DOMAIN-SUFFIX,www-777563.com,AdBlock -- DOMAIN-SUFFIX,www8.xitek.com,AdBlock -- DOMAIN-SUFFIX,www9.effectivemeasure.net,AdBlock -- DOMAIN-SUFFIX,www9.enet.com.cn,AdBlock -- DOMAIN-SUFFIX,www91.intel.com,AdBlock -- DOMAIN-SUFFIX,wwwokzyzy.com,AdBlock -- DOMAIN-SUFFIX,wwww.495495.com,AdBlock -- DOMAIN-SUFFIX,wwww.551144.com,AdBlock -- DOMAIN-SUFFIX,wwww.640640.com,AdBlock -- DOMAIN-SUFFIX,wwww.649649.com,AdBlock -- DOMAIN-SUFFIX,wx.houyi.baofeng.net,AdBlock -- DOMAIN-SUFFIX,wx.paigu.com,AdBlock -- DOMAIN-SUFFIX,wx.xwjqr.com,AdBlock -- DOMAIN-SUFFIX,wx16999.com,AdBlock -- DOMAIN-SUFFIX,wxaw.tiantongmaoyi.com,AdBlock -- DOMAIN-SUFFIX,wxb.wxbdfm.com,AdBlock -- DOMAIN-SUFFIX,wxmmh.net,AdBlock -- DOMAIN-SUFFIX,wxsnsdy.tc.qq.com,AdBlock -- DOMAIN-SUFFIX,wxsnsdy.video.qq.com,AdBlock -- DOMAIN-SUFFIX,wxtz.houmags.com,AdBlock -- DOMAIN-SUFFIX,wxwm1.ikuailian.com,AdBlock -- DOMAIN-SUFFIX,wxwm2.ikuailian.com,AdBlock -- DOMAIN-SUFFIX,wy.ce22d.cn,AdBlock -- DOMAIN-SUFFIX,wyhzzy.com,AdBlock -- DOMAIN-SUFFIX,wysa.2wxb5.cn,AdBlock -- DOMAIN-SUFFIX,wyt.wwetjy.com,AdBlock -- DOMAIN-SUFFIX,wyttech.cn,AdBlock -- DOMAIN-SUFFIX,wzaigo.com,AdBlock -- DOMAIN-SUFFIX,wzj.ywrjgzs.com,AdBlock -- DOMAIN-SUFFIX,wzjijia.com,AdBlock -- DOMAIN-SUFFIX,x.120ask.com,AdBlock -- DOMAIN-SUFFIX,x.9dagui.com,AdBlock -- DOMAIN-SUFFIX,x.bidswitch.net,AdBlock -- DOMAIN-SUFFIX,x.bikaer.com,AdBlock -- DOMAIN-SUFFIX,x.castanet.net,AdBlock -- DOMAIN-SUFFIX,x.cnxad.com,AdBlock -- DOMAIN-SUFFIX,x.eroticity.net,AdBlock -- DOMAIN-SUFFIX,x.heyzap.com,AdBlock -- DOMAIN-SUFFIX,x.infzm.com,AdBlock -- DOMAIN-SUFFIX,x.ligatus.com,AdBlock -- DOMAIN-SUFFIX,x.vamaker.com,AdBlock -- DOMAIN-SUFFIX,x.vipergirls.to,AdBlock -- DOMAIN-SUFFIX,x.zhuyuanp.top,AdBlock -- DOMAIN-SUFFIX,x01.aidata.io,AdBlock -- DOMAIN-SUFFIX,x1.go.sohu.com,AdBlock -- DOMAIN-SUFFIX,x9377a.com,AdBlock -- DOMAIN-SUFFIX,xa9t.com,AdBlock -- DOMAIN-SUFFIX,xabaitai.com,AdBlock -- DOMAIN-SUFFIX,xabmjr.com,AdBlock -- DOMAIN-SUFFIX,xacqp.com,AdBlock -- DOMAIN-SUFFIX,xau.sxmutan.com,AdBlock -- DOMAIN-SUFFIX,xavingtsun.com,AdBlock -- DOMAIN-SUFFIX,xbp.code.weddingeeos.com,AdBlock -- DOMAIN-SUFFIX,xbtw.com,AdBlock -- DOMAIN-SUFFIX,xbzzzx.com,AdBlock -- DOMAIN-SUFFIX,xc.08an.com,AdBlock -- DOMAIN-SUFFIX,xc.macd.cn,AdBlock -- DOMAIN-SUFFIX,xc.mydrivers.com,AdBlock -- DOMAIN-SUFFIX,xcclzs.com,AdBlock -- DOMAIN-SUFFIX,xcdf.cn,AdBlock -- DOMAIN-SUFFIX,xchgx.com,AdBlock -- DOMAIN-SUFFIX,xcjy876.com,AdBlock -- DOMAIN-SUFFIX,xco.qwxcs.com,AdBlock -- DOMAIN-SUFFIX,xcy8.com,AdBlock -- DOMAIN-SUFFIX,xcyjzs.net,AdBlock -- DOMAIN-SUFFIX,xcyrc.com,AdBlock -- DOMAIN-SUFFIX,xd.code.tanwanyx.com,AdBlock -- DOMAIN-SUFFIX,xdadevelopers.browsi.mobi,AdBlock -- DOMAIN-SUFFIX,xdbwc.com,AdBlock -- DOMAIN-SUFFIX,xdcqcyp.com,AdBlock -- DOMAIN-SUFFIX,xdcs-collector.ximalaya.com,AdBlock -- DOMAIN-SUFFIX,xdyjt.com,AdBlock -- DOMAIN-SUFFIX,xe2c.com,AdBlock -- DOMAIN-SUFFIX,xf.yellowto.com,AdBlock -- DOMAIN-SUFFIX,xfo.monesyy.com,AdBlock -- DOMAIN-SUFFIX,xfywn.com,AdBlock -- DOMAIN-SUFFIX,xgcsr.com,AdBlock -- DOMAIN-SUFFIX,xgmc6lu8fs.me,AdBlock -- DOMAIN-SUFFIX,xhbqczl.com,AdBlock -- DOMAIN-SUFFIX,xhmrv.com,AdBlock -- DOMAIN-SUFFIX,xhsxgmt.cn,AdBlock -- DOMAIN-SUFFIX,xhsxgnt.cn,AdBlock -- DOMAIN-SUFFIX,xhtd.99hg.wang,AdBlock -- DOMAIN-SUFFIX,xhxnkyy.com,AdBlock -- DOMAIN-SUFFIX,xhydrs.cn,AdBlock -- DOMAIN-SUFFIX,xi.liuxiaoer.com,AdBlock -- DOMAIN-SUFFIX,xia.huishenghuiying.com,AdBlock -- DOMAIN-SUFFIX,xia.jihehuaban.com,AdBlock -- DOMAIN-SUFFIX,xiacai.com,AdBlock -- DOMAIN-SUFFIX,xiacaidd.com,AdBlock -- DOMAIN-SUFFIX,xianliao.me,AdBlock -- DOMAIN-SUFFIX,xiaobiaoucai.cn,AdBlock -- DOMAIN-SUFFIX,xiaohei.com,AdBlock -- DOMAIN-SUFFIX,xiaohuau.xyz,AdBlock -- DOMAIN-SUFFIX,xiaohui2.cn,AdBlock -- DOMAIN-SUFFIX,xiaomiir.yaokantv.com,AdBlock -- DOMAIN-SUFFIX,XiaoQiang,AdBlock -- DOMAIN-SUFFIX,xiaoshuo.kp53.cn,AdBlock -- DOMAIN-SUFFIX,xiaoshuo.zhandao.net,AdBlock -- DOMAIN-SUFFIX,xiaoyang.mobi,AdBlock -- DOMAIN-SUFFIX,xiaoyuanzuqiu.cn,AdBlock -- DOMAIN-SUFFIX,xiaoyutiao.com,AdBlock -- DOMAIN-SUFFIX,xiaozhen.com,AdBlock -- DOMAIN-SUFFIX,xiaozhishi852.com,AdBlock -- DOMAIN-SUFFIX,xiaxuanfu.com,AdBlock -- DOMAIN-SUFFIX,xiazai.cdren.com,AdBlock -- DOMAIN-SUFFIX,xiazai.downok.com,AdBlock -- DOMAIN-SUFFIX,xibao100.com,AdBlock -- DOMAIN-SUFFIX,xibei70.com,AdBlock -- DOMAIN-SUFFIX,xifatime.com,AdBlock -- DOMAIN-SUFFIX,xihashuale.com,AdBlock -- DOMAIN-SUFFIX,xihuashuale.com,AdBlock -- DOMAIN-SUFFIX,xilele.com,AdBlock -- DOMAIN-SUFFIX,xiliweisha.cn,AdBlock -- DOMAIN-SUFFIX,xin.ygqczh.com,AdBlock -- DOMAIN-SUFFIX,xinasiaj.com,AdBlock -- DOMAIN-SUFFIX,xinghao89.com,AdBlock -- DOMAIN-SUFFIX,xingjuhe.com,AdBlock -- DOMAIN-SUFFIX,xiniuz.com,AdBlock -- DOMAIN-SUFFIX,xinju.cc,AdBlock -- DOMAIN-SUFFIX,xinray.com,AdBlock -- DOMAIN-SUFFIX,xinsheng.net,AdBlock -- DOMAIN-SUFFIX,xiongdong.com,AdBlock -- DOMAIN-SUFFIX,xiuxiu.android.dl.meitu.com,AdBlock -- DOMAIN-SUFFIX,xiuxiu.mobile.meitudata.com,AdBlock -- DOMAIN-SUFFIX,xj40666.vip,AdBlock -- DOMAIN-SUFFIX,xji.qwxcs.com,AdBlock -- DOMAIN-SUFFIX,xjidian.com,AdBlock -- DOMAIN-SUFFIX,xjq.jxmqkj.com,AdBlock -- DOMAIN-SUFFIX,xk2012.com,AdBlock -- DOMAIN-SUFFIX,xkwfao.com,AdBlock -- DOMAIN-SUFFIX,xlmc.sandai.net,AdBlock -- DOMAIN-SUFFIX,xls.go.sohu.com,AdBlock -- DOMAIN-SUFFIX,xlwnx.com,AdBlock -- DOMAIN-SUFFIX,xlylqx.com,AdBlock -- DOMAIN-SUFFIX,xm9178.com,AdBlock -- DOMAIN-SUFFIX,xmcmn.com,AdBlock -- DOMAIN-SUFFIX,xmcxz.com,AdBlock -- DOMAIN-SUFFIX,xmindchina.net,AdBlock -- DOMAIN-SUFFIX,xmnmeu.cn,AdBlock -- DOMAIN-SUFFIX,xmrts.com,AdBlock -- DOMAIN-SUFFIX,xmshqh.com,AdBlock -- DOMAIN-SUFFIX,xmsqz.com,AdBlock -- DOMAIN-SUFFIX,xnjpg.com,AdBlock -- DOMAIN-SUFFIX,xoredi.com,AdBlock -- DOMAIN-SUFFIX,xp3366.com,AdBlock -- DOMAIN-SUFFIX,xpcy.m.gxwztv.com,AdBlock -- DOMAIN-SUFFIX,xpe.cxaerp.com,AdBlock -- DOMAIN-SUFFIX,xpj1.net,AdBlock -- DOMAIN-SUFFIX,xpj2.net,AdBlock -- DOMAIN-SUFFIX,xpj3.net,AdBlock -- DOMAIN-SUFFIX,xpj4.net,AdBlock -- DOMAIN-SUFFIX,xpj8088.com,AdBlock -- DOMAIN-SUFFIX,xpjkf888.com,AdBlock -- DOMAIN-SUFFIX,xpjylc9977.com,AdBlock -- DOMAIN-SUFFIX,xpqfc.com,AdBlock -- DOMAIN-SUFFIX,xq12.com,AdBlock -- DOMAIN-SUFFIX,xq199.com,AdBlock -- DOMAIN-SUFFIX,xrain.net,AdBlock -- DOMAIN-SUFFIX,xray.jebe.renren.com,AdBlock -- DOMAIN-SUFFIX,xs.1drj.com,AdBlock -- DOMAIN-SUFFIX,xs.he9630.com,AdBlock -- DOMAIN-SUFFIX,xs.houyi.baofeng.net,AdBlock -- DOMAIN-SUFFIX,xs.swagger1.com,AdBlock -- DOMAIN-SUFFIX,xshellcn.com,AdBlock -- DOMAIN-SUFFIX,xstar.cc,AdBlock -- DOMAIN-SUFFIX,xszqapp.com,AdBlock -- DOMAIN-SUFFIX,xtcdbb.cn,AdBlock -- DOMAIN-SUFFIX,xtgreat.com,AdBlock -- DOMAIN-SUFFIX,xtruh.uranus.sogou.com,AdBlock -- DOMAIN-SUFFIX,xtwjx.cn,AdBlock -- DOMAIN-SUFFIX,xtxa.net,AdBlock -- DOMAIN-SUFFIX,xtzxmy.com,AdBlock -- DOMAIN-SUFFIX,xuanmeiguoji.com,AdBlock -- DOMAIN-SUFFIX,xue.zbyw.cn,AdBlock -- DOMAIN-SUFFIX,xul478.com,AdBlock -- DOMAIN-SUFFIX,xulizui6.com,AdBlock -- DOMAIN-SUFFIX,xx.m.gxwztv.com,AdBlock -- DOMAIN-SUFFIX,xxad.cc,AdBlock -- DOMAIN-SUFFIX,xxeden.com,AdBlock -- DOMAIN-SUFFIX,xxguan.cn,AdBlock -- DOMAIN-SUFFIX,xxhrd.com,AdBlock -- DOMAIN-SUFFIX,xxkhh.com,AdBlock -- DOMAIN-SUFFIX,xxlargepop.com,AdBlock -- DOMAIN-SUFFIX,xxp.gytygc.com,AdBlock -- DOMAIN-SUFFIX,xxwkjl.com,AdBlock -- DOMAIN-SUFFIX,xxxa.aikeapp.com,AdBlock -- DOMAIN-SUFFIX,xxyzwtsylw.com,AdBlock -- DOMAIN-SUFFIX,xy.com,AdBlock -- DOMAIN-SUFFIX,xy.shijialianzuishuai.com,AdBlock -- DOMAIN-SUFFIX,xycnz.com,AdBlock -- DOMAIN-SUFFIX,xyd.sxmdxy.com,AdBlock -- DOMAIN-SUFFIX,xyimg.net,AdBlock -- DOMAIN-SUFFIX,xyly2016.com,AdBlock -- DOMAIN-SUFFIX,xyqptm.com,AdBlock -- DOMAIN-SUFFIX,xyqxr.com,AdBlock -- DOMAIN-SUFFIX,xyrhd.com,AdBlock -- DOMAIN-SUFFIX,xyrkl.com,AdBlock -- DOMAIN-SUFFIX,xyssp.com,AdBlock -- DOMAIN-SUFFIX,xytom.com,AdBlock -- DOMAIN-SUFFIX,xyxy01.com,AdBlock -- DOMAIN-SUFFIX,xyy.code.weddingeeos.com,AdBlock -- DOMAIN-SUFFIX,xz.ercfh.com,AdBlock -- DOMAIN-SUFFIX,xz-development.oss-cn-beijing.aliyuncs.com,AdBlock -- DOMAIN-SUFFIX,xzq.greenxf.net,AdBlock -- DOMAIN-SUFFIX,xztms.com,AdBlock -- DOMAIN-SUFFIX,xzyituo.com,AdBlock -- DOMAIN-SUFFIX,xzzyi.com,AdBlock -- DOMAIN-SUFFIX,y.3957957.com,AdBlock -- DOMAIN-SUFFIX,y.damifan.cn,AdBlock -- DOMAIN-SUFFIX,y.gwylm.com,AdBlock -- DOMAIN-SUFFIX,y.hk9600.com,AdBlock -- DOMAIN-SUFFIX,y.hzht666.com,AdBlock -- DOMAIN-SUFFIX,y.shuoshuocm.com,AdBlock -- DOMAIN-SUFFIX,y.xinghao89.com,AdBlock -- DOMAIN-SUFFIX,y.zxwdw.com,AdBlock -- DOMAIN-SUFFIX,y0.cn,AdBlock -- DOMAIN-SUFFIX,yadro.ru,AdBlock -- DOMAIN-SUFFIX,yads.c.yimg.jp,AdBlock -- DOMAIN-SUFFIX,yads.yahoo.co.jp,AdBlock -- DOMAIN-SUFFIX,yageben.com,AdBlock -- DOMAIN-SUFFIX,yam.adsbro.com,AdBlock -- DOMAIN-SUFFIX,yandui.com,AdBlock -- DOMAIN-SUFFIX,yangdasen.cn,AdBlock -- DOMAIN-SUFFIX,yanglaopt.net,AdBlock -- DOMAIN-SUFFIX,yao.zzsdjq.com,AdBlock -- DOMAIN-SUFFIX,yaohq.com,AdBlock -- DOMAIN-SUFFIX,yatemy.cn,AdBlock -- DOMAIN-SUFFIX,yb.torchbrowser.com,AdBlock -- DOMAIN-SUFFIX,ybtianxi.com,AdBlock -- DOMAIN-SUFFIX,yccdn.com,AdBlock -- DOMAIN-SUFFIX,ychml.com,AdBlock -- DOMAIN-SUFFIX,ychun03.com,AdBlock -- DOMAIN-SUFFIX,yd126.com,AdBlock -- DOMAIN-SUFFIX,ydjs.zol.com.cn,AdBlock -- DOMAIN-SUFFIX,ydlnt.com,AdBlock -- DOMAIN-SUFFIX,ydpushserver.youdao.com,AdBlock -- DOMAIN-SUFFIX,ydqzkj.com,AdBlock -- DOMAIN-SUFFIX,yea.uploadimagex.com,AdBlock -- DOMAIN-SUFFIX,yeabble.com,AdBlock -- DOMAIN-SUFFIX,yeas.yahoo.co.jp,AdBlock -- DOMAIN-SUFFIX,yee.js.cn,AdBlock -- DOMAIN-SUFFIX,yellowto.com,AdBlock -- DOMAIN-SUFFIX,yengo.com,AdBlock -- DOMAIN-SUFFIX,yesbeby.whies.info,AdBlock -- DOMAIN-SUFFIX,yess.imneinei.com,AdBlock -- DOMAIN-SUFFIX,yezilm.com,AdBlock -- DOMAIN-SUFFIX,yf898.com,AdBlock -- DOMAIN-SUFFIX,yfcode.m.gxwztv.com,AdBlock -- DOMAIN-SUFFIX,yfxpcode.m.gxwztv.com,AdBlock -- DOMAIN-SUFFIX,yfycy.com,AdBlock -- DOMAIN-SUFFIX,yhtcd.com,AdBlock -- DOMAIN-SUFFIX,yhzm.cc,AdBlock -- DOMAIN-SUFFIX,yicha.cn,AdBlock -- DOMAIN-SUFFIX,yidulive.net,AdBlock -- DOMAIN-SUFFIX,yieldmanager.com,AdBlock -- DOMAIN-SUFFIX,yigao.com,AdBlock -- DOMAIN-SUFFIX,yigyx.com,AdBlock -- DOMAIN-SUFFIX,yihuifu.cn,AdBlock -- DOMAIN-SUFFIX,yiiwoo.com,AdBlock -- DOMAIN-SUFFIX,yijia2009.com,AdBlock -- DOMAIN-SUFFIX,yijifen.com,AdBlock -- DOMAIN-SUFFIX,yiluup.com,AdBlock -- DOMAIN-SUFFIX,yin1.zgpingshu.com,AdBlock -- DOMAIN-SUFFIX,yingxiao.baidu.com,AdBlock -- DOMAIN-SUFFIX,yinhaijuan.com,AdBlock -- DOMAIN-SUFFIX,yinmong.com,AdBlock -- DOMAIN-SUFFIX,yinooo.com,AdBlock -- DOMAIN-SUFFIX,yinyuehu.cn,AdBlock -- DOMAIN-SUFFIX,yiqifa.com,AdBlock -- DOMAIN-SUFFIX,yiranxian.cn,AdBlock -- DOMAIN-SUFFIX,yitaopt.com,AdBlock -- DOMAIN-SUFFIX,yiwk.com,AdBlock -- DOMAIN-SUFFIX,yiwuds.com,AdBlock -- DOMAIN-SUFFIX,yixui.com,AdBlock -- DOMAIN-SUFFIX,yizhenya.com,AdBlock -- DOMAIN-SUFFIX,yjqiqi.com,AdBlock -- DOMAIN-SUFFIX,yk0712.com,AdBlock -- DOMAIN-SUFFIX,ykbei.com,AdBlock -- DOMAIN-SUFFIX,ykjmy.com,AdBlock -- DOMAIN-SUFFIX,yktj.yzz.cn,AdBlock -- DOMAIN-SUFFIX,ykxwn.com,AdBlock -- DOMAIN-SUFFIX,yl850555.com,AdBlock -- DOMAIN-SUFFIX,ylads.yaolan.com,AdBlock -- DOMAIN-SUFFIX,ylog.hiido.com,AdBlock -- DOMAIN-SUFFIX,ylunion.com,AdBlock -- DOMAIN-SUFFIX,ylwy168.com,AdBlock -- DOMAIN-SUFFIX,ymapp.com,AdBlock -- DOMAIN-SUFFIX,ymcdn.cn,AdBlock -- DOMAIN-SUFFIX,ymcqb.com,AdBlock -- DOMAIN-SUFFIX,ymrzr.com,AdBlock -- DOMAIN-SUFFIX,yn.001fzc.com,AdBlock -- DOMAIN-SUFFIX,ynbojie.com,AdBlock -- DOMAIN-SUFFIX,yndianju.com,AdBlock -- DOMAIN-SUFFIX,ynmbz.com,AdBlock -- DOMAIN-SUFFIX,yongkang6.com,AdBlock -- DOMAIN-SUFFIX,yongv.com,AdBlock -- DOMAIN-SUFFIX,yoo.yiiyoo.net,AdBlock -- DOMAIN-SUFFIX,yooli.com,AdBlock -- DOMAIN-SUFFIX,you1ad.com,AdBlock -- DOMAIN-SUFFIX,youfumei.com,AdBlock -- DOMAIN-SUFFIX,youjia2016.com,AdBlock -- DOMAIN-SUFFIX,youka.la,AdBlock -- DOMAIN-SUFFIX,youle.tom.com,AdBlock -- DOMAIN-SUFFIX,youle55.com,AdBlock -- DOMAIN-SUFFIX,youmi.net,AdBlock -- DOMAIN-SUFFIX,youmsm.com,AdBlock -- DOMAIN-SUFFIX,yousee.com,AdBlock -- DOMAIN-SUFFIX,youxi.kugou.com,AdBlock -- DOMAIN-SUFFIX,youxiaoad.com,AdBlock -- DOMAIN-SUFFIX,youxicool.net,AdBlock -- DOMAIN-SUFFIX,youzehui.com,AdBlock -- DOMAIN-SUFFIX,yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,yoyi.tv,AdBlock -- DOMAIN-SUFFIX,ypmeiwen.com,AdBlock -- DOMAIN-SUFFIX,ypmob.com,AdBlock -- DOMAIN-SUFFIX,yqjxzw.com,AdBlock -- DOMAIN-SUFFIX,yqw88.com,AdBlock -- DOMAIN-SUFFIX,yrt7dgkf.exashare.com,AdBlock -- DOMAIN-SUFFIX,yrxmr.com,AdBlock -- DOMAIN-SUFFIX,ysej.code.weddingeeos.com,AdBlock -- DOMAIN-SUFFIX,ysjwj.com,AdBlock -- DOMAIN-SUFFIX,ysm.hauchi.com.tw,AdBlock -- DOMAIN-SUFFIX,ysm.yahoo.com,AdBlock -- DOMAIN-SUFFIX,yt-adp.nosdn.127.net,AdBlock -- DOMAIN-SUFFIX,ytapi1.nagezan.net,AdBlock -- DOMAIN-SUFFIX,ytdksb.com,AdBlock -- DOMAIN-SUFFIX,ytguowang.com,AdBlock -- DOMAIN-SUFFIX,ytmx.2r3485.cn,AdBlock -- DOMAIN-SUFFIX,yts.ytsyyey.com,AdBlock -- DOMAIN-SUFFIX,ytsyyey.com,AdBlock -- DOMAIN-SUFFIX,yuanchengxiezuo.com,AdBlock -- DOMAIN-SUFFIX,yuanming.net,AdBlock -- DOMAIN-SUFFIX,yueyelive.com,AdBlock -- DOMAIN-SUFFIX,yug8.com,AdBlock -- DOMAIN-SUFFIX,yukhj.com,AdBlock -- DOMAIN-SUFFIX,yule8.net,AdBlock -- DOMAIN-SUFFIX,yulzs.com,AdBlock -- DOMAIN-SUFFIX,yumcs.xiaohuau.xyz,AdBlock -- DOMAIN-SUFFIX,yun.lvehaisen.com,AdBlock -- DOMAIN-SUFFIX,yun.rili.cn,AdBlock -- DOMAIN-SUFFIX,yun.sifuhe.cn,AdBlock -- DOMAIN-SUFFIX,yun.tuia.cn,AdBlock -- DOMAIN-SUFFIX,yun.tuisnake.com,AdBlock -- DOMAIN-SUFFIX,yun.yuyiya.com,AdBlock -- DOMAIN-SUFFIX,yun1.yahoo001.com,AdBlock -- DOMAIN-SUFFIX,yunanfuwuqi.com,AdBlock -- DOMAIN-SUFFIX,yunbofangbt.com,AdBlock -- DOMAIN-SUFFIX,yundingjiayuan.com,AdBlock -- DOMAIN-SUFFIX,yunjiasu.com,AdBlock -- DOMAIN-SUFFIX,yunshipei.com,AdBlock -- DOMAIN-SUFFIX,yunxuu.com,AdBlock -- DOMAIN-SUFFIX,yuyue008.cn,AdBlock -- DOMAIN-SUFFIX,ywjxsp168.cn,AdBlock -- DOMAIN-SUFFIX,yx.lenovomm.com,AdBlock -- DOMAIN-SUFFIX,yxhxs.com,AdBlock -- DOMAIN-SUFFIX,yxjad.com,AdBlock -- DOMAIN-SUFFIX,yxs.tymsyx.com,AdBlock -- DOMAIN-SUFFIX,yxszy.com,AdBlock -- DOMAIN-SUFFIX,yxxwyz.com,AdBlock -- DOMAIN-SUFFIX,yy58ju.com,AdBlock -- DOMAIN-SUFFIX,yyb.pc6.com,AdBlock -- DOMAIN-SUFFIX,yyffeicd.m.qxs.la,AdBlock -- DOMAIN-SUFFIX,yyjxgm.net,AdBlock -- DOMAIN-SUFFIX,yyp17.com,AdBlock -- DOMAIN-SUFFIX,yyt.irs01.com,AdBlock -- DOMAIN-SUFFIX,yzaosite.com,AdBlock -- DOMAIN-SUFFIX,yzh.jyjhkz.com,AdBlock -- DOMAIN-SUFFIX,yzh360.com,AdBlock -- DOMAIN-SUFFIX,yzygo.com,AdBlock -- DOMAIN-SUFFIX,yzytb.com,AdBlock -- DOMAIN-SUFFIX,z.clickvip.shop,AdBlock -- DOMAIN-SUFFIX,z.moatads.com,AdBlock -- DOMAIN-SUFFIX,z.nowscore.com,AdBlock -- DOMAIN-SUFFIX,z.sora.yoyi.com.cn,AdBlock -- DOMAIN-SUFFIX,z1.zedo.com,AdBlock -- DOMAIN-SUFFIX,z1hihu.xmcimg.com,AdBlock -- DOMAIN-SUFFIX,z2.lnymd.com,AdBlock -- DOMAIN-SUFFIX,zads.care2.com,AdBlock -- DOMAIN-SUFFIX,zae.gzzena.com,AdBlock -- DOMAIN-SUFFIX,zamar.cn,AdBlock -- DOMAIN-SUFFIX,zampdsp.com,AdBlock -- DOMAIN-SUFFIX,zantainet.com,AdBlock -- DOMAIN-SUFFIX,zapads.zapak.com,AdBlock -- DOMAIN-SUFFIX,zb.nxing.cn,AdBlock -- DOMAIN-SUFFIX,zbrushcn.com,AdBlock -- DOMAIN-SUFFIX,zbz.m.qxs.la,AdBlock -- DOMAIN-SUFFIX,zcdsp.com,AdBlock -- DOMAIN-SUFFIX,zcrtd.com,AdBlock -- DOMAIN-SUFFIX,zdjby.cn,AdBlock -- DOMAIN-SUFFIX,zdw.w8.com.cn,AdBlock -- DOMAIN-SUFFIX,ze5.com,AdBlock -- DOMAIN-SUFFIX,zedo.com,AdBlock -- DOMAIN-SUFFIX,zeus.qj.net,AdBlock -- DOMAIN-SUFFIX,zgc66.com,AdBlock -- DOMAIN-SUFFIX,zgdfz6h7po.me,AdBlock -- DOMAIN-SUFFIX,zgfszs.com,AdBlock -- DOMAIN-SUFFIX,zgjkv.com,AdBlock -- DOMAIN-SUFFIX,zgksb.com,AdBlock -- DOMAIN-SUFFIX,zgty365.com,AdBlock -- DOMAIN-SUFFIX,zgunion.cn,AdBlock -- DOMAIN-SUFFIX,zgyemy.com,AdBlock -- DOMAIN-SUFFIX,zhanzhang.net,AdBlock -- DOMAIN-SUFFIX,zhao258.com,AdBlock -- DOMAIN-SUFFIX,zhaoshang8.com,AdBlock -- DOMAIN-SUFFIX,zhaozecheng.cn,AdBlock -- DOMAIN-SUFFIX,zh-cn.shenyun.com,AdBlock -- DOMAIN-SUFFIX,zh-cn.shenyun.org,AdBlock -- DOMAIN-SUFFIX,zheng.cs12d.com,AdBlock -- DOMAIN-SUFFIX,zhengjian.org,AdBlock -- DOMAIN-SUFFIX,zhenxinet.com,AdBlock -- DOMAIN-SUFFIX,zhichi08.com,AdBlock -- DOMAIN-SUFFIX,zhidian3g.cn,AdBlock -- DOMAIN-SUFFIX,zhifenjie.com,AdBlock -- DOMAIN-SUFFIX,zhihei.com,AdBlock -- DOMAIN-SUFFIX,zhihu.xmcimg.com,AdBlock -- DOMAIN-SUFFIX,zhiong.net,AdBlock -- DOMAIN-SUFFIX,zhiyuanteam.com,AdBlock -- DOMAIN-SUFFIX,zhiziyun.com,AdBlock -- DOMAIN-SUFFIX,zhongchouyan.com,AdBlock -- DOMAIN-SUFFIX,zhongzicili.cc,AdBlock -- DOMAIN-SUFFIX,zhtjdl.com,AdBlock -- DOMAIN-SUFFIX,zhuanfakong.com,AdBlock -- DOMAIN-SUFFIX,zhuba8.com,AdBlock -- DOMAIN-SUFFIX,zhudiaosz.com,AdBlock -- DOMAIN-SUFFIX,zhuichaguoji.org,AdBlock -- DOMAIN-SUFFIX,zhushou.2345.com,AdBlock -- DOMAIN-SUFFIX,zhuuv.maoyumao.net,AdBlock -- DOMAIN-SUFFIX,zhwnlapi.etouch.cn,AdBlock -- DOMAIN-SUFFIX,zhybzp.cn,AdBlock -- DOMAIN-SUFFIX,zhzzx.com,AdBlock -- DOMAIN-SUFFIX,zisunion.com,AdBlock -- DOMAIN-SUFFIX,zizcy.com,AdBlock -- DOMAIN-SUFFIX,zjbdt.com,AdBlock -- DOMAIN-SUFFIX,zjhim.com,AdBlock -- DOMAIN-SUFFIX,zjjgtz.com,AdBlock -- DOMAIN-SUFFIX,zjm.zzmmkj.com,AdBlock -- DOMAIN-SUFFIX,zkrdy.com,AdBlock -- DOMAIN-SUFFIX,zlongad.com,AdBlock -- DOMAIN-SUFFIX,zlsw.nnjxqd.com,AdBlock -- DOMAIN-SUFFIX,zmj.guanqinjie.cn,AdBlock -- DOMAIN-SUFFIX,znsv.baidu.com,AdBlock -- DOMAIN-SUFFIX,zo66.com,AdBlock -- DOMAIN-SUFFIX,zp22938576.com,AdBlock -- DOMAIN-SUFFIX,zpe.klre.18183.com,AdBlock -- DOMAIN-SUFFIX,zq84.com,AdBlock -- DOMAIN-SUFFIX,zqworks.com,AdBlock -- DOMAIN-SUFFIX,zqzxz.com,AdBlock -- DOMAIN-SUFFIX,zreder.com,AdBlock -- DOMAIN-SUFFIX,zrpfk.com,AdBlock -- DOMAIN-SUFFIX,zs0613.mengchengbao.com,AdBlock -- DOMAIN-SUFFIX,zs1111.youzue.com,AdBlock -- DOMAIN-SUFFIX,zsdexun.com.cn,AdBlock -- DOMAIN-SUFFIX,zshacker.com,AdBlock -- DOMAIN-SUFFIX,zst.jzntxs.com,AdBlock -- DOMAIN-SUFFIX,zsxpx.com,AdBlock -- DOMAIN-SUFFIX,zszwcp.cn,AdBlock -- DOMAIN-SUFFIX,zt2088.com,AdBlock -- DOMAIN-SUFFIX,ztidu.com,AdBlock -- DOMAIN-SUFFIX,ztxbd.com,AdBlock -- DOMAIN-SUFFIX,zuche321.com,AdBlock -- DOMAIN-SUFFIX,zuiceshi.net,AdBlock -- DOMAIN-SUFFIX,zuimeitianqi.inveno.com,AdBlock -- DOMAIN-SUFFIX,zunmi.cn,AdBlock -- DOMAIN-SUFFIX,zws.avvo.com,AdBlock -- DOMAIN-SUFFIX,zx.baosmx.com,AdBlock -- DOMAIN-SUFFIX,zxcs.ggwan.com,AdBlock -- DOMAIN-SUFFIX,zxcs.linghit.com,AdBlock -- DOMAIN-SUFFIX,zxh.bzshzx.com,AdBlock -- DOMAIN-SUFFIX,zxjjzx.com,AdBlock -- DOMAIN-SUFFIX,zxr.fzxrjx.com,AdBlock -- DOMAIN-SUFFIX,zxziyuan.com,AdBlock -- DOMAIN-SUFFIX,zybpj.com,AdBlock -- DOMAIN-SUFFIX,zyf.fzdfwy.com,AdBlock -- DOMAIN-SUFFIX,zymo.mps.weibo.com,AdBlock -- DOMAIN-SUFFIX,zymro.com,AdBlock -- DOMAIN-SUFFIX,zytwq.net,AdBlock -- DOMAIN-SUFFIX,zyz.91friend.com,AdBlock -- DOMAIN-SUFFIX,zyz1.91friend.com,AdBlock -- DOMAIN-SUFFIX,zz.bdstatic.com,AdBlock -- DOMAIN-SUFFIX,zz123.com,AdBlock -- DOMAIN-SUFFIX,zzbaowen.com,AdBlock -- DOMAIN-SUFFIX,zzcw.office-mall.net,AdBlock -- DOMAIN-SUFFIX,zzd6.com,AdBlock -- DOMAIN-SUFFIX,zzjs2.firefang.cn,AdBlock -- DOMAIN-SUFFIX,zzpush.58.com,AdBlock -- DOMAIN-SUFFIX,zzrcz.com,AdBlock -- DOMAIN-SUFFIX,zzsx8.com,AdBlock -- DOMAIN-SUFFIX,zzy.mipujia.com,AdBlock -- DOMAIN-SUFFIX,zzy1.mipujia.com,AdBlock -- DOMAIN-SUFFIX,zzy1.quyaoya.com,AdBlock -- DOMAIN-SUFFIX,zzz7.52896368.com,AdBlock -- DOMAIN-SUFFIX,zzzzz4.52896368.com,AdBlock - -- IP-CIDR,1.3.0.10/32,AdBlock -- IP-CIDR,10.72.25.0/24,AdBlock -- IP-CIDR,101.201.29.182/32,AdBlock -- IP-CIDR,101.251.211.235/32,AdBlock -- IP-CIDR,103.249.254.113/32,AdBlock -- IP-CIDR,104.195.62.12/32,AdBlock -- IP-CIDR,104.197.140.120/32,AdBlock -- IP-CIDR,104.198.198.188/32,AdBlock -- IP-CIDR,106.187.95.251/32,AdBlock -- IP-CIDR,106.75.65.90/32,AdBlock -- IP-CIDR,106.75.65.92/32,AdBlock -- IP-CIDR,107.21.113.76/32,AdBlock -- IP-CIDR,108.171.248.234/32,AdBlock -- IP-CIDR,111.175.220.160/29,AdBlock -- IP-CIDR,111.175.220.164/32,AdBlock -- IP-CIDR,111.206.22.0/24,AdBlock -- IP-CIDR,111.30.135.167/32,AdBlock -- IP-CIDR,111.63.135.0/24,AdBlock -- IP-CIDR,111.73.45.147/32,AdBlock -- IP-CIDR,112.124.115.215/32,AdBlock -- IP-CIDR,112.74.95.46/32,AdBlock -- IP-CIDR,113.207.57.24/32,AdBlock -- IP-CIDR,113.57.230.88/32,AdBlock -- IP-CIDR,114.247.28.96/32,AdBlock -- IP-CIDR,114.55.123.44/32,AdBlock -- IP-CIDR,114.95.102.77/32,AdBlock -- IP-CIDR,115.182.16.79/32,AdBlock -- IP-CIDR,115.29.141.121/32,AdBlock -- IP-CIDR,115.29.247.48/32,AdBlock -- IP-CIDR,116.206.22.7/32,AdBlock -- IP-CIDR,116.55.227.242/32,AdBlock -- IP-CIDR,117.144.242.32/32,AdBlock -- IP-CIDR,117.25.133.209/32,AdBlock -- IP-CIDR,118.144.88.126/32,AdBlock -- IP-CIDR,118.144.88.215/28,AdBlock -- IP-CIDR,118.144.88.215/32,AdBlock -- IP-CIDR,119.188.13.0/24,AdBlock -- IP-CIDR,119.4.249.166/32,AdBlock -- IP-CIDR,120.132.57.41/32,AdBlock -- IP-CIDR,120.132.63.203/32,AdBlock -- IP-CIDR,120.197.89.239/32,AdBlock -- IP-CIDR,120.198.116.0/24,AdBlock -- IP-CIDR,120.26.151.246/32,AdBlock -- IP-CIDR,120.27.34.156/32,AdBlock -- IP-CIDR,120.55.199.139/32,AdBlock -- IP-CIDR,120.76.189.132/32,AdBlock -- IP-CIDR,120.80.57.123/32,AdBlock -- IP-CIDR,121.15.207.243/32,AdBlock -- IP-CIDR,121.199.73.185/32,AdBlock -- IP-CIDR,121.201.108.2/32,AdBlock -- IP-CIDR,121.201.11.95/32,AdBlock -- IP-CIDR,121.251.255.0/24,AdBlock -- IP-CIDR,121.43.75.169/32,AdBlock -- IP-CIDR,122.225.103.120/32,AdBlock -- IP-CIDR,122.226.223.163/32,AdBlock -- IP-CIDR,122.227.254.195/32,AdBlock -- IP-CIDR,122.228.236.165/32,AdBlock -- IP-CIDR,123.125.111.0/24,AdBlock -- IP-CIDR,123.139.154.201/24,AdBlock -- IP-CIDR,123.56.152.96/32,AdBlock -- IP-CIDR,123.57.162.39/32,AdBlock -- IP-CIDR,123.57.94.184/32,AdBlock -- IP-CIDR,123.59.152.170/32,AdBlock -- IP-CIDR,123.59.78.229/32,AdBlock -- IP-CIDR,124.14.21.147/32,AdBlock -- IP-CIDR,124.14.21.151/32,AdBlock -- IP-CIDR,124.160.194.11/32,AdBlock -- IP-CIDR,124.232.160.178/32,AdBlock -- IP-CIDR,125.46.61.28/32,AdBlock -- IP-CIDR,125.89.69.5/32,AdBlock -- IP-CIDR,139.159.32.82/32,AdBlock -- IP-CIDR,139.196.239.52/32,AdBlock -- IP-CIDR,139.224.26.92/32,AdBlock -- IP-CIDR,139.224.74.148/32,AdBlock -- IP-CIDR,146.148.85.61/32,AdBlock -- IP-CIDR,162.212.181.32/32,AdBlock -- IP-CIDR,173.208.177.227/32,AdBlock -- IP-CIDR,175.6.223.15/32,AdBlock -- IP-CIDR,180.166.52.24/32,AdBlock -- IP-CIDR,180.76.155.58/32,AdBlock -- IP-CIDR,180.76.162.60/32,AdBlock -- IP-CIDR,180.76.171.28/32,AdBlock -- IP-CIDR,180.76.172.149/32,AdBlock -- IP-CIDR,180.76.181.213/32,AdBlock -- IP-CIDR,182.92.81.104/32,AdBlock -- IP-CIDR,183.131.79.130/32,AdBlock -- IP-CIDR,183.131.79.30/32,AdBlock -- IP-CIDR,183.59.53.187/29,AdBlock -- IP-CIDR,183.59.53.237/32,AdBlock -- IP-CIDR,183.6.188.226/29,AdBlock -- IP-CIDR,198.40.52.11/32,AdBlock -- IP-CIDR,202.104.1.27/32,AdBlock -- IP-CIDR,202.105.165.202/32,AdBlock -- IP-CIDR,205.209.138.102/32,AdBlock -- IP-CIDR,211.103.159.32/32,AdBlock -- IP-CIDR,211.137.132.89/32,AdBlock -- IP-CIDR,211.139.178.49/32,AdBlock -- IP-CIDR,211.149.225.23/32,AdBlock -- IP-CIDR,211.167.105.131/32,AdBlock -- IP-CIDR,211.98.71.195/29,AdBlock -- IP-CIDR,218.25.246.118/32,AdBlock -- IP-CIDR,218.93.127.37/32,AdBlock -- IP-CIDR,219.234.83.60/32,AdBlock -- IP-CIDR,220.115.251.25/32,AdBlock -- IP-CIDR,220.196.52.141/32,AdBlock -- IP-CIDR,221.179.140.0/24,AdBlock -- IP-CIDR,221.179.183.0/24,AdBlock -- IP-CIDR,221.179.191.0/24,AdBlock -- IP-CIDR,221.179.46.190/25,AdBlock -- IP-CIDR,221.204.213.222/32,AdBlock -- IP-CIDR,221.228.17.152/32,AdBlock -- IP-CIDR,221.228.214.101/32,AdBlock -- IP-CIDR,221.231.6.79/32,AdBlock -- IP-CIDR,222.186.61.91/32,AdBlock -- IP-CIDR,222.186.61.95/32,AdBlock -- IP-CIDR,222.186.61.96/32,AdBlock -- IP-CIDR,222.186.61.97/32,AdBlock -- IP-CIDR,222.187.226.96/32,AdBlock -- IP-CIDR,222.73.156.235/32,AdBlock -- IP-CIDR,223.6.255.99/32,AdBlock -- IP-CIDR,23.235.156.167/32,AdBlock -- IP-CIDR,23.42.186.24/32,AdBlock -- IP-CIDR,23.66.147.48/32,AdBlock -- IP-CIDR,27.255.67.120/32,AdBlock -- IP-CIDR,42.51.146.207/32,AdBlock -- IP-CIDR,45.34.240.72/32,AdBlock -- IP-CIDR,46.165.197.153/32,AdBlock -- IP-CIDR,46.165.197.231/32,AdBlock -- IP-CIDR,47.89.59.182/32,AdBlock -- IP-CIDR,47.90.50.177/32,AdBlock -- IP-CIDR,47.93.103.196/32,AdBlock -- IP-CIDR,47.94.89.32/32,AdBlock -- IP-CIDR,47.96.162.122/32,AdBlock -- IP-CIDR,58.215.179.159/32,AdBlock -- IP-CIDR,58.221.28.166/32,AdBlock -- IP-CIDR,60.19.29.21/28,AdBlock -- IP-CIDR,60.190.139.164/32,AdBlock -- IP-CIDR,60.191.124.196/32,AdBlock -- IP-CIDR,60.210.17.12/24,AdBlock -- IP-CIDR,61.129.70.132/32,AdBlock -- IP-CIDR,61.132.216.232/32,AdBlock -- IP-CIDR,61.132.221.146/32,AdBlock -- IP-CIDR,61.132.255.212/32,AdBlock -- IP-CIDR,61.132.255.222/25,AdBlock -- IP-CIDR,61.147.184.18/32,AdBlock -- IP-CIDR,61.152.223.15/32,AdBlock -- IP-CIDR,61.160.200.223/32,AdBlock -- IP-CIDR,61.160.200.242/32,AdBlock -- IP-CIDR,61.160.200.252/32,AdBlock -- IP-CIDR,61.174.50.167/25,AdBlock -- IP-CIDR,61.191.12.74/32,AdBlock -- IP-CIDR,61.191.206.4/32,AdBlock -- IP-CIDR,67.229.224.28/32,AdBlock -- IP-CIDR,69.28.57.245/32,AdBlock -- IP-CIDR,74.117.182.77/32,AdBlock -- IP-CIDR,78.140.131.214/32,AdBlock - - - -# > Dler Cloud -- DOMAIN-SUFFIX,dler.cloud,DIRECT - -# > Google -- DOMAIN-KEYWORD,mtalk.google.com,DIRECT -- DOMAIN,safebrowsing.googleapis.com,DIRECT -- DOMAIN-SUFFIX,dl.google.com,DIRECT - -# > Steam -# - USER-AGENT,Steam*,DIRECT -- DOMAIN-SUFFIX,pinyuncloud.com,DIRECT -- DOMAIN-SUFFIX,steamcontent.com,DIRECT - -# > Windows -- DOMAIN-SUFFIX,windows.com,DIRECT -- DOMAIN-SUFFIX,windows.net,DIRECT -- DOMAIN-SUFFIX,windowsupdate.com,DIRECT - -# > Xunlei -# - PROCESS-NAME,Thunder,DIRECT -# - USER-AGENT,%E8%BF%85%E9%9B%B7,DIRECT -- DOMAIN-SUFFIX,xunlei.com,DIRECT - -# > Private Tracker -- DOMAIN-SUFFIX,awesome-hd.me,DIRECT -- DOMAIN-SUFFIX,broadcasthe.net,DIRECT -- DOMAIN-SUFFIX,chdbits.co,DIRECT -- DOMAIN-SUFFIX,classix-unlimited.co.uk,DIRECT -- DOMAIN-SUFFIX,empornium.me,DIRECT -- DOMAIN-SUFFIX,gazellegames.net,DIRECT -- DOMAIN-SUFFIX,hdchina.org,DIRECT -- DOMAIN-SUFFIX,hdsky.me,DIRECT -- DOMAIN-SUFFIX,icetorrent.org,DIRECT -- DOMAIN-SUFFIX,jpopsuki.eu,DIRECT -- DOMAIN-SUFFIX,keepfrds.com,DIRECT -- DOMAIN-SUFFIX,madsrevolution.net,DIRECT -- DOMAIN-SUFFIX,m-team.cc,DIRECT -- DOMAIN-SUFFIX,nanyangpt.com,DIRECT -- DOMAIN-SUFFIX,ncore.cc,DIRECT -- DOMAIN-SUFFIX,open.cd,DIRECT -- DOMAIN-SUFFIX,ourbits.club,DIRECT -- DOMAIN-SUFFIX,passthepopcorn.me,DIRECT -- DOMAIN-SUFFIX,privatehd.to,DIRECT -- DOMAIN-SUFFIX,redacted.ch,DIRECT -- DOMAIN-SUFFIX,springsunday.net,DIRECT -- DOMAIN-SUFFIX,tjupt.org,DIRECT -- DOMAIN-SUFFIX,totheglory.im,DIRECT - -# > Accelerate direct sites -- DOMAIN-KEYWORD,announce,DIRECT -- DOMAIN-KEYWORD,torrent,DIRECT -- DOMAIN-KEYWORD,tracker,DIRECT -- DOMAIN-SUFFIX,smtp,DIRECT -# - URL-REGEX,(Subject|HELO|SMTP),DIRECT -# - URL-REGEX,(api|ps|sv|offnavi|newvector|ulog\.imap|newloc)(\.map|)\.(baidu|n\.shifen)\.com,DIRECT -# - URL-REGEX,(.+\.|^)(360|so|qihoo|360safe|qhimg|360totalsecurity|yunpan)\.(cn|com),DIRECT -# - URL-REGEX,(.+\.)?(torrent|announce\.php\?passkey=|tracker|BitTorrent|bt_key|ed2k|find_node|get_peers|info_hash|magnet:|peer_id=|sandai|Thunder|XLLiveUD|xunlei)(\..+)?,DIRECT - - - -# > Bilibili -# - USER-AGENT,bili*,AsianTV -# - USER-AGENT,Bilibili*,AsianTV -- DOMAIN-SUFFIX,acg.tv,AsianTV -- DOMAIN-SUFFIX,acgvideo.com,AsianTV -- DOMAIN-SUFFIX,b23.tv,AsianTV -- DOMAIN-SUFFIX,biliapi.com,AsianTV -- DOMAIN-SUFFIX,biliapi.net,AsianTV -- DOMAIN-SUFFIX,bilibili.com,AsianTV -- DOMAIN-SUFFIX,biligame.com,AsianTV -- DOMAIN-SUFFIX,biligame.net,AsianTV -- DOMAIN-SUFFIX,bilivideo.com,AsianTV -- DOMAIN-SUFFIX,hdslb.com,AsianTV -- DOMAIN-SUFFIX,im9.com,AsianTV -- DOMAIN-SUFFIX,smtcdns.net,AsianTV - -# > IQIYI -- DOMAIN-KEYWORD,qiyi,AsianTV -- DOMAIN-SUFFIX,qy.net,AsianTV -- IP-CIDR,101.227.0.0/16,AsianTV -- IP-CIDR,101.224.0.0/13,AsianTV -- IP-CIDR,119.176.0.0/12,AsianTV - -# > letv -- DOMAIN-SUFFIX,api.mob.app.letv.com,AsianTV - -# > MOO -# - USER-AGENT,MOO*,AsianTV -# - USER-AGENT,TencentMidasConnect*,AsianTV - -# > Tencent Video -- DOMAIN-SUFFIX,v.smtcdns.com,AsianTV -- DOMAIN-SUFFIX,vv.video.qq.com,AsianTV - -# > Youku -- IP-CIDR,106.11.0.0/16,AsianTV - - - -# > ABC -- DOMAIN-SUFFIX,edgedatg.com,GlobalTV -- DOMAIN-SUFFIX,go.com,GlobalTV - -# > Abema TV -# - USER-AGENT,AbemaTV*,GlobalTV -- DOMAIN-SUFFIX,abema.io,GlobalTV -- DOMAIN-SUFFIX,abema.tv,GlobalTV -- DOMAIN-SUFFIX,akamaized.net,GlobalTV -- DOMAIN-SUFFIX,ameba.jp,GlobalTV -- DOMAIN-SUFFIX,hayabusa.io,GlobalTV - -# > Amazon Prime Video -# - USER-AGENT,InstantVideo.US*,GlobalTV -# - USER-AGENT,Prime%20Video*,GlobalTV -- DOMAIN-SUFFIX,aiv-cdn.net,GlobalTV -- DOMAIN-SUFFIX,amazonaws.co.uk,GlobalTV -- DOMAIN-SUFFIX,amazonaws.com,GlobalTV -- DOMAIN-SUFFIX,amazonvideo.com,GlobalTV -- DOMAIN-SUFFIX,llnwd.net,GlobalTV -- DOMAIN-SUFFIX,primevideo.com,GlobalTV - -# > Apple News and Apple Map TOMTOM Version -# - USER-AGENT,AppleNews*,GlobalTV -# - USER-AGENT,com.apple.news*,GlobalTV -# - DOMAIN,gspe1-ssl.ls.apple.com,GlobalTV -# - USER-AGENT,News*,GlobalTV -# - DOMAIN,apple.comscoreresearch.com,GlobalTV -# - DOMAIN,gateway.icloud.com,GlobalTV -# - DOMAIN,news-client.apple.com,GlobalTV -# - DOMAIN,news-edge.apple.com,GlobalTV -# - DOMAIN,news-events.apple.com,GlobalTV -# - DOMAIN-SUFFIX,apple.news,GlobalTV - -# > Apple TV -- DOMAIN,np-edge.itunes.apple.com,GlobalTV -- DOMAIN,play-edge.itunes.apple.com,GlobalTV -- DOMAIN-SUFFIX,tv.apple.com,GlobalTV - -# > Bahamut -# - USER-AGENT,Anime*,GlobalTV -- DOMAIN-SUFFIX,bahamut.com.tw,GlobalTV -- DOMAIN-SUFFIX,gamer.com.tw,GlobalTV -- DOMAIN-SUFFIX,hinet.net,GlobalTV - -# > BBC iPlayer -# - USER-AGENT,BBCiPlayer*,GlobalTV -- DOMAIN-KEYWORD,bbcfmt,GlobalTV -- DOMAIN,aod-dash-uk-live.akamaized.net,GlobalTV -- DOMAIN,aod-hls-uk-live.akamaized.net,GlobalTV -- DOMAIN,vod-dash-uk-live.akamaized.net,GlobalTV -- DOMAIN,vod-thumb-uk-live.akamaized.net,GlobalTV -- DOMAIN-SUFFIX,bbc.co,GlobalTV -- DOMAIN-SUFFIX,bbc.co.uk,GlobalTV -- DOMAIN-SUFFIX,bbc.com,GlobalTV -- DOMAIN-SUFFIX,bbcfmt.hs.llnwd.net,GlobalTV -- DOMAIN-SUFFIX,bbci.co,GlobalTV -- DOMAIN-SUFFIX,bbci.co.uk,GlobalTV - -# > DAZN -- DOMAIN-SUFFIX,d151l6v8er5bdm.cloudfront.net,GlobalTV -- DOMAIN-SUFFIX,dazn.com,GlobalTV -- DOMAIN-SUFFIX,dazn-api.com,GlobalTV -- DOMAIN-SUFFIX,dazndn.com,GlobalTV -- DOMAIN-SUFFIX,indazn.com,GlobalTV -- DOMAIN-SUFFIX,intercom.io,GlobalTV - -# > 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 -- DOMAIN-SUFFIX,disney-plus.net,GlobalTV -- DOMAIN-SUFFIX,dssott.com,GlobalTV -- DOMAIN-SUFFIX,execute-api.us-east-1.amazonaws.com,GlobalTV - -# > encoreTVB -# - USER-AGENT,encoreTVB*,GlobalTV -- DOMAIN-SUFFIX,encoretvb.com,GlobalTV -- DOMAIN,content.jwplatform.com,GlobalTV -- DOMAIN,videos-f.jwpsrv.com,GlobalTV - -# > Fox Now -# - USER-AGENT,FOX%20NOW*,GlobalTV -- DOMAIN-SUFFIX,fox.com,GlobalTV -- DOMAIN-SUFFIX,foxdcg.com,GlobalTV -- DOMAIN-SUFFIX,uplynk.com,GlobalTV - -# > Fox+ (HK|TW|SG) -# - USER-AGENT,FOXPlus*,GlobalTV -- DOMAIN-SUFFIX,akamaized.net,GlobalTV -- DOMAIN-SUFFIX,foxplus.com,GlobalTV -- DOMAIN-SUFFIX,theplatform.com,GlobalTV - -# > HBO NOW & HBO GO -# - USER-AGENT,HBO%20NOW*,GlobalTV -- DOMAIN-SUFFIX,execute-api.ap-southeast-1.amazonaws.com,GlobalTV -- DOMAIN-SUFFIX,hbo.com,GlobalTV -- DOMAIN-SUFFIX,hboasia.com,GlobalTV -- DOMAIN-SUFFIX,hbogo.com,GlobalTV -- DOMAIN-SUFFIX,hbogoasia.com,GlobalTV -- DOMAIN-SUFFIX,hbogoasia.hk,GlobalTV -- DOMAIN-SUFFIX,hbonow.com,GlobalTV -- DOMAIN-SUFFIX,hbomax.com,GlobalTV - -# > Hulu(フールー) -- DOMAIN-SUFFIX,happyon.jp,GlobalTV -- DOMAIN-SUFFIX,hulu.jp,GlobalTV - -# > Hulu -- DOMAIN-SUFFIX,hulu.com,GlobalTV -- DOMAIN-SUFFIX,huluim.com,GlobalTV -- DOMAIN-SUFFIX,hulustream.com,GlobalTV - -# > Japonx -- DOMAIN-KEYWORD,japonx,GlobalTV -- DOMAIN-KEYWORD,japronx,GlobalTV -- DOMAIN-SUFFIX,japonx.com,GlobalTV -- DOMAIN-SUFFIX,japonx.tv,GlobalTV -- DOMAIN-SUFFIX,japonx.net,GlobalTV -- DOMAIN-SUFFIX,japonx.vip,GlobalTV -- DOMAIN-SUFFIX,japronx.com,GlobalTV -- DOMAIN-SUFFIX,japronx.tv,GlobalTV -- DOMAIN-SUFFIX,japronx.net,GlobalTV -- DOMAIN-SUFFIX,japronx.vip,GlobalTV - -# > JOOX -# - USER-AGENT,WeMusic*,GlobalTV -# - USER-AGENT,JOOX*,GlobalTV -- DOMAIN-SUFFIX,joox.com,GlobalTV - -# > KKBOX -- DOMAIN-SUFFIX,kkbox.com,GlobalTV -- DOMAIN-SUFFIX,kkbox.com.tw,GlobalTV -- DOMAIN-SUFFIX,kfs.io,GlobalTV - -# > KKTV -# - USER-AGENT,KKTV*,GlobalTV -# - USER-AGENT,com.kktv*,GlobalTV -- DOMAIN-SUFFIX,kktv.me,GlobalTV -- DOMAIN-SUFFIX,kktv.com.tw,GlobalTV -- DOMAIN,kktv-theater.kk.stream,GlobalTV - -# > Line TV -# - USER-AGENT,LINE*,GlobalTV -- DOMAIN-SUFFIX,d3c7rimkq79yfu.cloudfront.net,GlobalTV -- DOMAIN-SUFFIX,linetv.tw,GlobalTV - -# > myTV_SUPER -# - USER-AGENT,mytv*,GlobalTV -- DOMAIN-SUFFIX,mytvsuper.com,GlobalTV -- DOMAIN-SUFFIX,tvb.com,GlobalTV - -# > Pandora -- DOMAIN-SUFFIX,pandora.com,GlobalTV - -# > PBS -# - USER-AGENT,PBS*,GlobalTV -- DOMAIN-SUFFIX,pbs.org,GlobalTV - -# > Pornhub -- DOMAIN-SUFFIX,phncdn.com,GlobalTV -- DOMAIN-SUFFIX,phprcdn.com,GlobalTV -- DOMAIN-SUFFIX,pornhub.com,GlobalTV -- DOMAIN-SUFFIX,pornhubpremium.com,GlobalTV - -# > SoundCloud -# - USER-AGENT,SoundCloud*,GlobalTV -- DOMAIN-SUFFIX,sndcdn.com,GlobalTV -- DOMAIN-SUFFIX,soundcloud.com,GlobalTV - -# > 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 - - - -# > Netflix -# - USER-AGENT,Argo*,Netflix -- DOMAIN,netflix.com.edgesuite.net,Netflix -- DOMAIN-SUFFIX,netflix.com,Netflix -- DOMAIN-SUFFIX,netflix.net,Netflix -- DOMAIN-SUFFIX,nflxext.com,Netflix -- DOMAIN-SUFFIX,nflximg.com,Netflix -- DOMAIN-SUFFIX,nflximg.net,Netflix -- DOMAIN-SUFFIX,nflxso.net,Netflix -- DOMAIN-SUFFIX,nflxvideo.net,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.132.126/32,Netflix -- IP-CIDR,172.56.133.126/32,Netflix -- IP-CIDR,172.56.138.126/32,Netflix -- IP-CIDR,172.56.139.126/32,Netflix -- IP-CIDR,172.56.140.126/32,Netflix -- IP-CIDR,172.56.141.126/32,Netflix -- IP-CIDR,172.56.143.126/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.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.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,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.149/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.38/32,Netflix -- IP-CIDR,193.247.193.72/32,Netflix -- IP-CIDR,193.247.193.74/32,Netflix -- IP-CIDR,193.247.193.99/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.135/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.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.197/32,Netflix -- IP-CIDR,203.116.210.198/32,Netflix -- IP-CIDR,203.116.210.199/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.37.30/32,Netflix -- IP-CIDR,208.54.66.30/32,Netflix -- IP-CIDR,208.54.67.30/32,Netflix -- IP-CIDR,208.54.70.30/32,Netflix -- IP-CIDR,208.54.80.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,23.246.0.0/18,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.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,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.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 -- DOMAIN-SUFFIX,pscdn.co,Spotify -- DOMAIN-SUFFIX,scdn.co,Spotify -- DOMAIN-SUFFIX,spoti.fi,Spotify -- DOMAIN-SUFFIX,spotify.com,Spotify -- DOMAIN-SUFFIX,spotifycdn.net,Spotify - -# > Youtube Music -# - USER-AGENT,*YouTubeMusic*,Youtube -# - USER-AGENT,*com.google.ios.youtubemusic*,Youtube - -# > Youtube -# - USER-AGENT,*youtube*,Youtube -# - USER-AGENT,YouTube*,Youtube -- DOMAIN-KEYWORD,youtube,Youtube -- DOMAIN,yt3.ggpht.com,Youtube -- DOMAIN-SUFFIX,googlevideo.com,Youtube -- DOMAIN-SUFFIX,gvt2.com,Youtube -- DOMAIN-SUFFIX,youtu.be,Youtube -- DOMAIN-SUFFIX,ytimg.com,Youtube - - - -# > Telegram -- DOMAIN-SUFFIX,t.me,Telegram -- DOMAIN-SUFFIX,tdesktop.com,Telegram -- DOMAIN-SUFFIX,telegra.ph,Telegram -- DOMAIN-SUFFIX,telegram.me,Telegram -- DOMAIN-SUFFIX,telegram.org,Telegram -- IP-CIDR,91.108.0.0/16,Telegram -- IP-CIDR,109.239.140.0/24,Telegram -- IP-CIDR,149.154.160.0/20,Telegram -- IP-CIDR6,2001:67c:4e8::/48,Telegram -- IP-CIDR6,2001:b28:f23d::/48,Telegram -- IP-CIDR6,2001:b28:f23f::/48,Telegram - - - -# > Fast -- DOMAIN-SUFFIX,fast.com,Speedtest - -# > Speedtest by Ookla -# - USER-AGENT,SpeedTest* -- DOMAIN-KEYWORD,speedtest,Speedtest -- DOMAIN-SUFFIX,ooklaserver.net,Speedtest - - - -# > PayPal -# - USER-AGENT,PayPal*,PayPal -- DOMAIN-KEYWORD,paypal,PayPal -- DOMAIN-SUFFIX,paypal.com,PayPal -- DOMAIN-SUFFIX,paypalobjects.com,PayPal - - - -# > Microsoft -# - USER-AGENT,OneDrive*,Microsoft -- DOMAIN-KEYWORD,onedrive,Microsoft -- DOMAIN-SUFFIX,azure.com,Microsoft -- DOMAIN-SUFFIX,fabric.io,Microsoft -- DOMAIN-SUFFIX,files.1drv.com,Microsoft -- DOMAIN-SUFFIX,hotmail.com,Microsoft -- DOMAIN-SUFFIX,live.com,Microsoft -- DOMAIN-SUFFIX,live.net,Microsoft -- DOMAIN-SUFFIX,livefilestore.com,Microsoft -- DOMAIN-SUFFIX,mesh.com,Microsoft -- DOMAIN-SUFFIX,microsoft.com,Microsoft -- DOMAIN-SUFFIX,microsoftonline.com,Microsoft -- DOMAIN-SUFFIX,microsoft-tst.com,Microsoft -- DOMAIN-SUFFIX,msn.com,Microsoft -- DOMAIN-SUFFIX,office.com,Microsoft -- DOMAIN-SUFFIX,office.net,Microsoft -- DOMAIN-SUFFIX,onedrive.com,Microsoft -- DOMAIN-SUFFIX,outlook.com,Microsoft -- DOMAIN-SUFFIX,p.sfx.ms,Microsoft -- DOMAIN-SUFFIX,sharepoint.com,Microsoft -- DOMAIN-SUFFIX,skype.com,Microsoft -- DOMAIN-SUFFIX,spoprod-a.akamaihd.net,Microsoft -- DOMAIN-SUFFIX,storage.msn.com,Microsoft -- DOMAIN-SUFFIX,windows.net,Microsoft -- DOMAIN-SUFFIX,xbox.com,Microsoft -- DOMAIN-SUFFIX,xboxlive.com,Microsoft - -- DOMAIN-SUFFIX,msftconnecttest.com,DIRECT - - - -# > Netease Music -- DOMAIN,apm.music.163.com,Netease Music -- DOMAIN,apm3.music.163.com,Netease Music -- DOMAIN,interface.music.163.com,Netease Music -- DOMAIN,interface3.music.163.com,Netease Music -- DOMAIN,music.126.com,Netease Music -- DOMAIN,music.163.com,Netease Music -- IP-CIDR,101.71.154.241/32,Netease Music -- IP-CIDR,103.126.92.132/32,Netease Music -- IP-CIDR,103.126.92.133/32,Netease Music -- IP-CIDR,112.13.119.17/32,Netease Music -- IP-CIDR,112.13.122.1/32,Netease Music -- IP-CIDR,115.236.118.33/32,Netease Music -- IP-CIDR,115.236.121.1/32,Netease Music -- IP-CIDR,118.24.63.156/32,Netease Music -- IP-CIDR,193.112.159.225/32,Netease Music -- IP-CIDR,223.252.199.66/32,Netease Music -- IP-CIDR,223.252.199.67/32,Netease Music -- IP-CIDR,39.105.63.80/32,Netease Music -- IP-CIDR,45.254.48.1/32,Netease Music -- IP-CIDR,47.100.127.239/32,Netease Music -- IP-CIDR,59.111.160.195/32,Netease Music -- IP-CIDR,59.111.160.197/32,Netease Music -- IP-CIDR,59.111.181.35/32,Netease Music -- IP-CIDR,59.111.181.38/32,Netease Music -- IP-CIDR,59.111.181.60/32,Netease Music - - - -# > Line -- DOMAIN-SUFFIX,lin.ee,Proxy -- DOMAIN-SUFFIX,line.me,Proxy -- DOMAIN-SUFFIX,line.naver.jp,Proxy -- DOMAIN-SUFFIX,line-apps.com,Proxy -- DOMAIN-SUFFIX,line-cdn.net,Proxy -- DOMAIN-SUFFIX,line-scdn.net,Proxy -- DOMAIN-SUFFIX,nhncorp.jp,Proxy - -# > Sony -- DOMAIN-SUFFIX,playstation.com,Proxy -- DOMAIN-SUFFIX,playstation.net,Proxy -- DOMAIN-SUFFIX,playstationnetwork.com,Proxy -- DOMAIN-SUFFIX,sony.com,Proxy -- DOMAIN-SUFFIX,sonyentertainmentnetwork.com,Proxy - -# > Spark -- DOMAIN-SUFFIX,api.amplitude.com,Proxy -- DOMAIN-SUFFIX,app.smartmailcloud.com,Proxy -- DOMAIN-SUFFIX,gate.hockeyapp.net,Proxy -- DOMAIN-SUFFIX,smartmailcloud.com,Proxy - -# > Steam -- DOMAIN-SUFFIX,fanatical.com,Steam -- DOMAIN-SUFFIX,humblebundle.com,Steam -- DOMAIN-SUFFIX,steamcommunity.com,Steam -- DOMAIN-SUFFIX,steampowered.com,Steam -- DOMAIN-SUFFIX,steamstatic.com,Steam - -# > Top blocked sites -- DOMAIN-SUFFIX,2o7.net,Proxy -- DOMAIN-SUFFIX,4everProxy.com,Proxy -- DOMAIN-SUFFIX,4shared.com,Proxy -- DOMAIN-SUFFIX,4sqi.net,Proxy -- DOMAIN-SUFFIX,9to5mac.com,Proxy -- DOMAIN-SUFFIX,abpchina.org,Proxy -- DOMAIN-SUFFIX,accountkit.com,Proxy -- DOMAIN-SUFFIX,adblockplus.org,Proxy -- DOMAIN-SUFFIX,adobe.com,Proxy -- DOMAIN-SUFFIX,adobedtm.com,Proxy -- DOMAIN-SUFFIX,aerisapi.com,Proxy -- DOMAIN-SUFFIX,akamaihd.net,Proxy -- DOMAIN-SUFFIX,airtable.com,Proxy -- DOMAIN-SUFFIX,alfredapp.com,Proxy -- DOMAIN-SUFFIX,allconnected.co,Proxy -- DOMAIN-SUFFIX,amazon.co,Proxy -- DOMAIN-SUFFIX,amazon.co.jp,Proxy -- DOMAIN-SUFFIX,amazon.com,Proxy -- DOMAIN-SUFFIX,amazonaws.com,Proxy -- DOMAIN-SUFFIX,ampproject.com,Proxy -- DOMAIN-SUFFIX,ampproject.net,Proxy -- DOMAIN-SUFFIX,ampproject.org,Proxy -- DOMAIN-SUFFIX,anaconda.com,Proxy -- DOMAIN-SUFFIX,ancsconf.org,Proxy -- DOMAIN-SUFFIX,android.com,Proxy -- DOMAIN-SUFFIX,androidify.com,Proxy -- DOMAIN-SUFFIX,android-x86.org,Proxy -- DOMAIN-SUFFIX,angularjs.org,Proxy -- DOMAIN-SUFFIX,anthonycalzadilla.com,Proxy -- DOMAIN-SUFFIX,aol.com,Proxy -- DOMAIN-SUFFIX,aolcdn.com,Proxy -- DOMAIN-SUFFIX,apache.org,Proxy -- DOMAIN-SUFFIX,api.mixpanel.com,Proxy -- DOMAIN-SUFFIX,api.termius.com,Proxy -- DOMAIN-SUFFIX,api.tiktokv.com,Proxy -- DOMAIN-SUFFIX,api.urbandictionary.com,Proxy -- DOMAIN-SUFFIX,apigee.com,Proxy -- DOMAIN-SUFFIX,apk-dl.com,Proxy -- DOMAIN-SUFFIX,apkpure.com,Proxy -- DOMAIN-SUFFIX,appdownloader.net,Proxy -- DOMAIN-SUFFIX,Apple-dns.net,Proxy -- DOMAIN-SUFFIX,app-measurement.com,Proxy -- DOMAIN-SUFFIX,appshopper.com,Proxy -- DOMAIN-SUFFIX,arcgis.com,Proxy -- DOMAIN-SUFFIX,archive.is,Proxy -- DOMAIN-SUFFIX,archive.org,Proxy -- DOMAIN-SUFFIX,archives.gov,Proxy -- DOMAIN-SUFFIX,armorgames.com,Proxy -- DOMAIN-SUFFIX,aspnetcdn.com,Proxy -- DOMAIN-SUFFIX,async.be,Proxy -- DOMAIN-SUFFIX,att.com,Proxy -- DOMAIN-SUFFIX,avgle.com,Proxy -- DOMAIN-SUFFIX,awsstatic.com,Proxy -- DOMAIN-SUFFIX,azure.com,Proxy -- DOMAIN-SUFFIX,azureedge.net,Proxy -- DOMAIN-SUFFIX,azurewebsites.net,Proxy -- DOMAIN-SUFFIX,badoo.com,Proxy -- DOMAIN-SUFFIX,bandisoft.com,Proxy -- DOMAIN-SUFFIX,bbtoystore.com,Proxy -- DOMAIN-SUFFIX,betvictor.com,Proxy -- DOMAIN-SUFFIX,bigsound.org,Proxy -- DOMAIN-SUFFIX,bing.com,Proxy -- DOMAIN-SUFFIX,bing.net,Proxy -- DOMAIN-SUFFIX,bintray.com,Proxy -- DOMAIN-SUFFIX,bit.com,Proxy -- DOMAIN-SUFFIX,bit.do,Proxy -- DOMAIN-SUFFIX,bit.ly,Proxy -- DOMAIN-SUFFIX,bitbucket.org,Proxy -- DOMAIN-SUFFIX,bitcointalk.org,Proxy -- DOMAIN-SUFFIX,bitshare.com,Proxy -- DOMAIN-SUFFIX,bkrtx.com,Proxy -- DOMAIN-SUFFIX,blog.com,Proxy -- DOMAIN-SUFFIX,blogcdn.com,Proxy -- DOMAIN-SUFFIX,blogger.com,Proxy -- DOMAIN-SUFFIX,bloglovin.com,Proxy -- DOMAIN-SUFFIX,blogsmithmedia.com,Proxy -- DOMAIN-SUFFIX,blogspot.hk,Proxy -- DOMAIN-SUFFIX,bloomberg.cn,Proxy -- DOMAIN-SUFFIX,bloomberg.com,Proxy -- DOMAIN-SUFFIX,books.com.tw,Proxy -- DOMAIN-SUFFIX,boomtrain.com,Proxy -- DOMAIN-SUFFIX,botanwang.com,Proxy -- DOMAIN-SUFFIX,box.com,Proxy -- DOMAIN-SUFFIX,box.net,Proxy -- DOMAIN-SUFFIX,boxun.com,Proxy -- DOMAIN-SUFFIX,cachefly.net,Proxy -- DOMAIN-SUFFIX,cbc.ca,Proxy -- DOMAIN-SUFFIX,cdn.angruo.com,Proxy -- DOMAIN-SUFFIX,cdn.segment.com,Proxy -- DOMAIN-SUFFIX,cdnst.net,Proxy -- DOMAIN-SUFFIX,celestrak.com,Proxy -- DOMAIN-SUFFIX,census.gov,Proxy -- DOMAIN-SUFFIX,certificate-transparency.org,Proxy -- DOMAIN-SUFFIX,chinadigitaltimes.net,Proxy -- DOMAIN-SUFFIX,chinatimes.com,Proxy -- DOMAIN-SUFFIX,chrome.com,Proxy -- DOMAIN-SUFFIX,chromecast.com,Proxy -- DOMAIN-SUFFIX,chromercise.com,Proxy -- DOMAIN-SUFFIX,chromestatus.com,Proxy -- DOMAIN-SUFFIX,chromium.org,Proxy -- DOMAIN-SUFFIX,cl.ly,Proxy -- DOMAIN-SUFFIX,clien.net,Proxy -- DOMAIN-SUFFIX,cloudflare.com,Proxy -- DOMAIN-SUFFIX,cloudfront.net,Proxy -- DOMAIN-SUFFIX,cloudgarage.jp,Proxy -- DOMAIN-SUFFIX,cloudmagic.com,Proxy -- DOMAIN-SUFFIX,cmail19.com,Proxy -- DOMAIN-SUFFIX,cnet.com,Proxy -- DOMAIN-SUFFIX,cnn.com,Proxy -- DOMAIN-SUFFIX,cocoapods.org,Proxy -- DOMAIN-SUFFIX,comodoca.com,Proxy -- DOMAIN-SUFFIX,content.office.net,Proxy -- DOMAIN-SUFFIX,culturedcode.com,Proxy -- DOMAIN-SUFFIX,cygames.jp,Proxy -- DOMAIN-SUFFIX,d.pr,Proxy -- DOMAIN-SUFFIX,danilo.to,Proxy -- DOMAIN-SUFFIX,daolan.net,Proxy -- DOMAIN-SUFFIX,data-vocabulary.org,Proxy -- DOMAIN-SUFFIX,dayone.me,Proxy -- DOMAIN-SUFFIX,db.tt,Proxy -- DOMAIN-SUFFIX,dcmilitary.com,Proxy -- DOMAIN-SUFFIX,deja.com,Proxy -- DOMAIN-SUFFIX,demdex.net,Proxy -- DOMAIN-SUFFIX,deskconnect.com,Proxy -- DOMAIN-SUFFIX,digisfera.com,Proxy -- DOMAIN-SUFFIX,digitaltrends.com,Proxy -- DOMAIN-SUFFIX,disconnect.me,Proxy -- DOMAIN-SUFFIX,disq.us,Proxy -- DOMAIN-SUFFIX,disqus.com,Proxy -- DOMAIN-SUFFIX,disquscdn.com,Proxy -- DOMAIN-SUFFIX,dmm.co.jp,Proxy -- DOMAIN-SUFFIX,dnsimple.com,Proxy -- DOMAIN-SUFFIX,docker.com,Proxy -- DOMAIN-SUFFIX,doub.io,Proxy -- DOMAIN-SUFFIX,dowjones.com,Proxy -- DOMAIN-SUFFIX,dribbble.com,Proxy -- DOMAIN-SUFFIX,droplr.com,Proxy -- DOMAIN-SUFFIX,duckduckgo.com,Proxy -- DOMAIN-SUFFIX,dueapp.com,Proxy -- DOMAIN-SUFFIX,dw.com,Proxy -- DOMAIN-SUFFIX,easybib.com,Proxy -- DOMAIN-SUFFIX,economist.com,Proxy -- DOMAIN-SUFFIX,edgecastcdn.net,Proxy -- DOMAIN-SUFFIX,edgekey.net,Proxy -- DOMAIN-SUFFIX,edgesuite.net,Proxy -- DOMAIN-SUFFIX,engadget.com,Proxy -- DOMAIN-SUFFIX,entrust.net,Proxy -- DOMAIN-SUFFIX,eurekavpt.com,Proxy -- DOMAIN-SUFFIX,evernote.com,Proxy -- DOMAIN-SUFFIX,extmatrix.com,Proxy -- DOMAIN-SUFFIX,eyny.com,Proxy -- DOMAIN-SUFFIX,fabric.io,Proxy -- DOMAIN-SUFFIX,fastly.net,Proxy -- DOMAIN-SUFFIX,fastmail.com,Proxy -- DOMAIN-SUFFIX,fc2.com,Proxy -- DOMAIN-SUFFIX,feedburner.com,Proxy -- DOMAIN-SUFFIX,feedly.com,Proxy -- DOMAIN-SUFFIX,feedsportal.com,Proxy -- DOMAIN-SUFFIX,fiftythree.com,Proxy -- DOMAIN-SUFFIX,firebaseio.com,Proxy -- DOMAIN-SUFFIX,flexibits.com,Proxy -- DOMAIN-SUFFIX,flickr.com,Proxy -- DOMAIN-SUFFIX,flipboard.com,Proxy -- DOMAIN-SUFFIX,flipkart.com,Proxy -- DOMAIN-SUFFIX,flitto.com,Proxy -- DOMAIN-SUFFIX,flurry.com,Proxy -- DOMAIN-SUFFIX,freeopenProxy.com,Proxy -- DOMAIN-SUFFIX,fubo.tv,Proxy -- DOMAIN-SUFFIX,fullstory.com,Proxy -- DOMAIN-SUFFIX,fzlm.net,Proxy -- DOMAIN-SUFFIX,g.co,Proxy -- DOMAIN-SUFFIX,gabia.net,Proxy -- DOMAIN-SUFFIX,garena.com,Proxy -- DOMAIN-SUFFIX,geni.us,Proxy -- DOMAIN-SUFFIX,get.how,Proxy -- DOMAIN-SUFFIX,getcloudapp.com,Proxy -- DOMAIN-SUFFIX,getfoxyProxy.org,Proxy -- DOMAIN-SUFFIX,getlantern.org,Proxy -- DOMAIN-SUFFIX,getmdl.io,Proxy -- DOMAIN-SUFFIX,getpricetag.com,Proxy -- DOMAIN-SUFFIX,gfw.press,Proxy -- DOMAIN-SUFFIX,gfx.ms,Proxy -- DOMAIN-SUFFIX,ggpht.com,Proxy -- DOMAIN-SUFFIX,ghostnoteapp.com,Proxy -- DOMAIN-SUFFIX,git.io,Proxy -- DOMAIN-SUFFIX,gitbook.com,Proxy -- DOMAIN-SUFFIX,globalsign.com,Proxy -- DOMAIN-SUFFIX,gmocloud.com,Proxy -- DOMAIN-SUFFIX,gmodules.com,Proxy -- DOMAIN-SUFFIX,go.com,Proxy -- DOMAIN-SUFFIX,go.jp,Proxy -- DOMAIN-SUFFIX,godaddy.com,Proxy -- DOMAIN-SUFFIX,golang.org,Proxy -- DOMAIN-SUFFIX,gongm.in,Proxy -- DOMAIN-SUFFIX,goo.gl,Proxy -- DOMAIN-SUFFIX,goodreaders.com,Proxy -- DOMAIN-SUFFIX,goodreads.com,Proxy -- DOMAIN-SUFFIX,gravatar.com,Proxy -- DOMAIN-SUFFIX,gstatic.cn,Proxy -- DOMAIN-SUFFIX,gstatic.com,Proxy -- DOMAIN-SUFFIX,gunsamerica.com,Proxy -- DOMAIN-SUFFIX,gvt0.com,Proxy -- DOMAIN-SUFFIX,gvt1.com,Proxy -- DOMAIN-SUFFIX,helpshift.com,Proxy -- DOMAIN-SUFFIX,hitun.io,Proxy -- DOMAIN-SUFFIX,hockeyapp.net,Proxy -- DOMAIN-SUFFIX,homedepot.com,Proxy -- DOMAIN-SUFFIX,hootsuite.com,Proxy -- DOMAIN-SUFFIX,howtoforge.com,Proxy -- DOMAIN-SUFFIX,i-cable.com,Proxy -- DOMAIN-SUFFIX,iam.soy,Proxy -- DOMAIN-SUFFIX,icoco.com,Proxy -- DOMAIN-SUFFIX,icons8.com,Proxy -- DOMAIN-SUFFIX,ift.tt,Proxy -- DOMAIN-SUFFIX,ifttt.com,Proxy -- DOMAIN-SUFFIX,imageshack.us,Proxy -- DOMAIN-SUFFIX,img.ly,Proxy -- DOMAIN-SUFFIX,imgur.com,Proxy -- DOMAIN-SUFFIX,imore.com,Proxy -- DOMAIN-SUFFIX,ingress.com,Proxy -- DOMAIN-SUFFIX,inoreader.com,Proxy -- DOMAIN-SUFFIX,insder.co,Proxy -- DOMAIN-SUFFIX,instapaper.com,Proxy -- DOMAIN-SUFFIX,instructables.com,Proxy -- DOMAIN-SUFFIX,io.io,Proxy -- DOMAIN-SUFFIX,ip.sb,Proxy -- DOMAIN-SUFFIX,ipaddress.com,Proxy -- DOMAIN-SUFFIX,ipn.li,Proxy -- DOMAIN-SUFFIX,is.gd,Proxy -- DOMAIN-SUFFIX,ishowsapp.com,Proxy -- DOMAIN-SUFFIX,issuu.com,Proxy -- DOMAIN-SUFFIX,itgonglun.com,Proxy -- DOMAIN-SUFFIX,itun.es,Proxy -- DOMAIN-SUFFIX,ixquick.com,Proxy -- DOMAIN-SUFFIX,j.mp,Proxy -- DOMAIN-SUFFIX,javbus.com,Proxy -- DOMAIN-SUFFIX,js.revsci.net,Proxy -- DOMAIN-SUFFIX,jshint.com,Proxy -- DOMAIN-SUFFIX,jtvnw.net,Proxy -- DOMAIN-SUFFIX,justgetflux.com,Proxy -- DOMAIN-SUFFIX,kakao.co.kr,Proxy -- DOMAIN-SUFFIX,kakao.com,Proxy -- DOMAIN-SUFFIX,kakaocdn.net,Proxy -- DOMAIN-SUFFIX,kat.cr,Proxy -- DOMAIN-SUFFIX,kenengba.com,Proxy -- DOMAIN-SUFFIX,kik.com,Proxy -- DOMAIN-SUFFIX,klip.me,Proxy -- DOMAIN-SUFFIX,leancloud.com,Proxy -- DOMAIN-SUFFIX,leetcode.com,Proxy -- DOMAIN-SUFFIX,lhie1.com,Proxy -- DOMAIN-SUFFIX,libsyn.com,Proxy -- DOMAIN-SUFFIX,licdn.com,Proxy -- DOMAIN-SUFFIX,lightboxcdn.com,Proxy -- DOMAIN-SUFFIX,like.com,Proxy -- DOMAIN-SUFFIX,linkedin.com,Proxy -- DOMAIN-SUFFIX,linode.com,Proxy -- DOMAIN-SUFFIX,lithium.com,Proxy -- DOMAIN-SUFFIX,littlehj.com,Proxy -- DOMAIN-SUFFIX,livefilestore.com,Proxy -- DOMAIN-SUFFIX,llnwd.net,Proxy -- DOMAIN-SUFFIX,localnetwork.uop,Proxy -- DOMAIN-SUFFIX,logmein.com,Proxy -- DOMAIN-SUFFIX,macid.co,Proxy -- DOMAIN-SUFFIX,macromedia.com,Proxy -- DOMAIN-SUFFIX,macrumors.com,Proxy -- DOMAIN-SUFFIX,mangaup.jp,Proxy -- DOMAIN-SUFFIX,manhuaren.com,Proxy -- DOMAIN-SUFFIX,marketwatch.com,Proxy -- DOMAIN-SUFFIX,mashable.com,Proxy -- DOMAIN-SUFFIX,mathjax.org,Proxy -- DOMAIN-SUFFIX,maven.org,Proxy -- DOMAIN-SUFFIX,medium.com,Proxy -- DOMAIN-SUFFIX,mega.co.nz,Proxy -- DOMAIN-SUFFIX,mega.nz,Proxy -- DOMAIN-SUFFIX,megaupload.com,Proxy -- DOMAIN-SUFFIX,microsofttranslator.com,Proxy -- DOMAIN-SUFFIX,mindnode.com,Proxy -- DOMAIN-SUFFIX,mlssoccer.com,Proxy -- DOMAIN-SUFFIX,mobile01.com,Proxy -- DOMAIN-SUFFIX,modmyi.com,Proxy -- DOMAIN-SUFFIX,moves-export.com,Proxy -- DOMAIN-SUFFIX,mp3buscador.com,Proxy -- DOMAIN-SUFFIX,msedge.net,Proxy -- DOMAIN-SUFFIX,mycnnews.com,Proxy -- DOMAIN-SUFFIX,myfontastic.com,Proxy -- DOMAIN-SUFFIX,name.com,Proxy -- DOMAIN-SUFFIX,nasa.gov,Proxy -- DOMAIN-SUFFIX,ndr.de,Proxy -- DOMAIN-SUFFIX,netdna-cdn.com,Proxy -- DOMAIN-SUFFIX,newipnow.com,Proxy -- DOMAIN-SUFFIX,nextmedia.com,Proxy -- DOMAIN-SUFFIX,nicovideo.jp,Proxy -- DOMAIN-SUFFIX,nih.gov,Proxy -- DOMAIN-SUFFIX,nimg.jp,Proxy -- DOMAIN-SUFFIX,nintendo.com,Proxy -- DOMAIN-SUFFIX,nintendo.net,Proxy -- DOMAIN-SUFFIX,notion.so,Proxy -- DOMAIN-SUFFIX,novafile.com,Proxy -- DOMAIN-SUFFIX,nrk.no,Proxy -- DOMAIN-SUFFIX,nsstatic.net,Proxy -- DOMAIN-SUFFIX,nssurge.com,Proxy -- DOMAIN-SUFFIX,nyt.com,Proxy -- DOMAIN-SUFFIX,nytimes.com,Proxy -- DOMAIN-SUFFIX,nytimg.com,Proxy -- DOMAIN-SUFFIX,nytstyle.com,Proxy -- DOMAIN-SUFFIX,office365.com,Proxy -- DOMAIN-SUFFIX,omnigroup.com,Proxy -- DOMAIN-SUFFIX,onenote.com,Proxy -- DOMAIN-SUFFIX,ooyala.com,Proxy -- DOMAIN-SUFFIX,openvpn.net,Proxy -- DOMAIN-SUFFIX,openwrt.org,Proxy -- DOMAIN-SUFFIX,optimizely.com,Proxy -- DOMAIN-SUFFIX,orkut.com,Proxy -- DOMAIN-SUFFIX,osha.gov,Proxy -- DOMAIN-SUFFIX,osxdaily.com,Proxy -- DOMAIN-SUFFIX,overcast.fm,Proxy -- DOMAIN-SUFFIX,ow.ly,Proxy -- DOMAIN-SUFFIX,paddle.com,Proxy -- DOMAIN-SUFFIX,paddleapi.com,Proxy -- DOMAIN-SUFFIX,panoramio.com,Proxy -- DOMAIN-SUFFIX,parallels.com,Proxy -- DOMAIN-SUFFIX,parse.com,Proxy -- DOMAIN-SUFFIX,pdfexpert.com,Proxy -- DOMAIN-SUFFIX,periscope.tv,Proxy -- DOMAIN-SUFFIX,piaotian.net,Proxy -- DOMAIN-SUFFIX,picacomic.com,Proxy -- DOMAIN-SUFFIX,picasaweb.com,Proxy -- DOMAIN-SUFFIX,pinboard.in,Proxy -- DOMAIN-SUFFIX,ping.pe,Proxy -- DOMAIN-SUFFIX,pinterest.com,Proxy -- DOMAIN-SUFFIX,pixelmator.com,Proxy -- DOMAIN-SUFFIX,pixiv.net,Proxy -- DOMAIN-SUFFIX,pixnet.net,Proxy -- DOMAIN-SUFFIX,playpcesor.com,Proxy -- DOMAIN-SUFFIX,pokemon.com,Proxy -- DOMAIN-SUFFIX,polymer-project.org,Proxy -- DOMAIN-SUFFIX,popo.tw,Proxy -- DOMAIN-SUFFIX,potato.im,Proxy -- DOMAIN-SUFFIX,redd.it,Proxy -- DOMAIN-SUFFIX,rthk.hk,Proxy -- DOMAIN-SUFFIX,prfct.co,Proxy -- DOMAIN-SUFFIX,proxfree.com,Proxy -- DOMAIN-SUFFIX,psiphon3.com,Proxy -- DOMAIN-SUFFIX,ptt.cc,Proxy -- DOMAIN-SUFFIX,pubu.com.tw,Proxy -- DOMAIN-SUFFIX,puffinbrowser.com,Proxy -- DOMAIN-SUFFIX,pushbullet.com,Proxy -- DOMAIN-SUFFIX,pushwoosh.com,Proxy -- DOMAIN-SUFFIX,pximg.net,Proxy -- DOMAIN-SUFFIX,quora.com,Proxy -- DOMAIN-SUFFIX,quoracdn.net,Proxy -- DOMAIN-SUFFIX,readingtimes.com.tw,Proxy -- DOMAIN-SUFFIX,readmoo.com,Proxy -- DOMAIN-SUFFIX,recaptcha.net,Proxy -- DOMAIN-SUFFIX,reddit.com,Proxy -- DOMAIN-SUFFIX,redditmedia.com,Proxy -- DOMAIN-SUFFIX,reuters.com,Proxy -- DOMAIN-SUFFIX,rfi.fr,Proxy -- DOMAIN-SUFFIX,rileyguide.com,Proxy -- DOMAIN-SUFFIX,rime.im,Proxy -- DOMAIN-SUFFIX,rsf.org,Proxy -- DOMAIN-SUFFIX,sciencedaily.com,Proxy -- DOMAIN-SUFFIX,sciencemag.org,Proxy -- DOMAIN-SUFFIX,scribd.com,Proxy -- DOMAIN-SUFFIX,search.com,Proxy -- DOMAIN-SUFFIX,servebom.com,Proxy -- DOMAIN-SUFFIX,sexinsex.net,Proxy -- DOMAIN-SUFFIX,sfx.ms,Proxy -- DOMAIN-SUFFIX,shadowsocks.org,Proxy -- DOMAIN-SUFFIX,shadowverse.jp,Proxy -- DOMAIN-SUFFIX,sharethis.com,Proxy -- DOMAIN-SUFFIX,shazam.com,Proxy -- DOMAIN-SUFFIX,shutterstock.com,Proxy -- DOMAIN-SUFFIX,sidelinesnews.com,Proxy -- DOMAIN-SUFFIX,simp.ly,Proxy -- DOMAIN-SUFFIX,simplenote.com,Proxy -- DOMAIN-SUFFIX,sketchappsources.com,Proxy -- DOMAIN-SUFFIX,slack.com,Proxy -- DOMAIN-SUFFIX,slack-edge.com,Proxy -- DOMAIN-SUFFIX,slack-msgs.com,Proxy -- DOMAIN-SUFFIX,slideshare.net,Proxy -- DOMAIN-SUFFIX,smartdnsproxy.com,Proxy -- DOMAIN-SUFFIX,smh.com.au,Proxy -- DOMAIN-SUFFIX,snapchat.com,Proxy -- DOMAIN-SUFFIX,sndcdn.com,Proxy -- DOMAIN-SUFFIX,sockslist.net,Proxy -- DOMAIN-SUFFIX,soundcloud.com,Proxy -- DOMAIN-SUFFIX,sourceforge.net,Proxy -- DOMAIN-SUFFIX,sowers.org.hk,Proxy -- DOMAIN-SUFFIX,speedsmart.net,Proxy -- DOMAIN-SUFFIX,spike.com,Proxy -- DOMAIN-SUFFIX,squarespace.com,Proxy -- DOMAIN-SUFFIX,ssa.gov,Proxy -- DOMAIN-SUFFIX,sstatic.net,Proxy -- DOMAIN-SUFFIX,st.luluku.pw,Proxy -- DOMAIN-SUFFIX,stackoverflow.com,Proxy -- DOMAIN-SUFFIX,starp2p.com,Proxy -- DOMAIN-SUFFIX,startpage.com,Proxy -- DOMAIN-SUFFIX,state.gov,Proxy -- DOMAIN-SUFFIX,staticflickr.com,Proxy -- DOMAIN-SUFFIX,storify.com,Proxy -- DOMAIN-SUFFIX,stumbleupon.com,Proxy -- DOMAIN-SUFFIX,sugarsync.com,Proxy -- DOMAIN-SUFFIX,supermariorun.com,Proxy -- DOMAIN-SUFFIX,surfeasy.com.au,Proxy -- DOMAIN-SUFFIX,surge.run,Proxy -- DOMAIN-SUFFIX,surrenderat20.net,Proxy -- DOMAIN-SUFFIX,sydneytoday.com,Proxy -- DOMAIN-SUFFIX,symauth.com,Proxy -- DOMAIN-SUFFIX,symcb.com,Proxy -- DOMAIN-SUFFIX,symcd.com,Proxy -- DOMAIN-SUFFIX,t66y.com,Proxy -- DOMAIN-SUFFIX,tablesgenerator.com,Proxy -- DOMAIN-SUFFIX,tabtter.jp,Proxy -- DOMAIN-SUFFIX,talk853.com,Proxy -- DOMAIN-SUFFIX,talkboxapp.com,Proxy -- DOMAIN-SUFFIX,talkonly.net,Proxy -- DOMAIN-SUFFIX,tapbots.com,Proxy -- DOMAIN-SUFFIX,tapbots.net,Proxy -- DOMAIN-SUFFIX,techcrunch.com,Proxy -- DOMAIN-SUFFIX,technorati.com,Proxy -- DOMAIN-SUFFIX,techsmith.com,Proxy -- DOMAIN-SUFFIX,teddysun.com,Proxy -- DOMAIN-SUFFIX,textnow.me,Proxy -- DOMAIN-SUFFIX,thebobs.com,Proxy -- DOMAIN-SUFFIX,theinitium.com,Proxy -- DOMAIN-SUFFIX,thepiratebay.org,Proxy -- DOMAIN-SUFFIX,theverge.com,Proxy -- DOMAIN-SUFFIX,thewgo.org,Proxy -- DOMAIN-SUFFIX,tiltbrush.com,Proxy -- DOMAIN-SUFFIX,time.com,Proxy -- DOMAIN-SUFFIX,timeinc.net,Proxy -- DOMAIN-SUFFIX,tinder.com,Proxy -- DOMAIN-SUFFIX,tiny.cc,Proxy -- DOMAIN-SUFFIX,tinychat.com,Proxy -- DOMAIN-SUFFIX,tinypic.com,Proxy -- DOMAIN-SUFFIX,tmblr.co,Proxy -- DOMAIN-SUFFIX,todoist.com,Proxy -- DOMAIN-SUFFIX,togetter.com,Proxy -- DOMAIN-SUFFIX,tokyocn.com,Proxy -- DOMAIN-SUFFIX,tomshardware.com,Proxy -- DOMAIN-SUFFIX,torcn.com,Proxy -- DOMAIN-SUFFIX,torrentprivacy.com,Proxy -- DOMAIN-SUFFIX,torrentproject.se,Proxy -- DOMAIN-SUFFIX,torrentz.eu,Proxy -- DOMAIN-SUFFIX,tradingview.com,Proxy -- DOMAIN-SUFFIX,traffichaus.com,Proxy -- DOMAIN-SUFFIX,trakt.tv,Proxy -- DOMAIN-SUFFIX,transparency.org,Proxy -- DOMAIN-SUFFIX,trello.com,Proxy -- DOMAIN-SUFFIX,trendsmap.com,Proxy -- DOMAIN-SUFFIX,trulyergonomic.com,Proxy -- DOMAIN-SUFFIX,trustasiassl.com,Proxy -- DOMAIN-SUFFIX,tt-rss.org,Proxy -- DOMAIN-SUFFIX,ttvnw.net,Proxy -- DOMAIN-SUFFIX,tumblr.co,Proxy -- DOMAIN-SUFFIX,tumblr.com,Proxy -- DOMAIN-SUFFIX,turbobit.net,Proxy -- DOMAIN-SUFFIX,tv.com,Proxy -- DOMAIN-SUFFIX,tweetdeck.com,Proxy -- DOMAIN-SUFFIX,tweetmarker.net,Proxy -- DOMAIN-SUFFIX,twimg.co,Proxy -- DOMAIN-SUFFIX,twitch.tv,Proxy -- DOMAIN-SUFFIX,twitthat.com,Proxy -- DOMAIN-SUFFIX,twtkr.com,Proxy -- DOMAIN-SUFFIX,twttr.com,Proxy -- DOMAIN-SUFFIX,txmblr.com,Proxy -- DOMAIN-SUFFIX,typcn.com,Proxy -- DOMAIN-SUFFIX,typekit.net,Proxy -- DOMAIN-SUFFIX,typography.com,Proxy -- DOMAIN-SUFFIX,ubertags.com,Proxy -- DOMAIN-SUFFIX,ublock.org,Proxy -- DOMAIN-SUFFIX,ubnt.com,Proxy -- DOMAIN-SUFFIX,uchicago.edu,Proxy -- DOMAIN-SUFFIX,udn.com,Proxy -- DOMAIN-SUFFIX,ugo.com,Proxy -- DOMAIN-SUFFIX,uhdwallpapers.org,Proxy -- DOMAIN-SUFFIX,ulyssesapp.com,Proxy -- DOMAIN-SUFFIX,unblockdmm.com,Proxy -- DOMAIN-SUFFIX,unblocksites.co,Proxy -- DOMAIN-SUFFIX,unpo.org,Proxy -- DOMAIN-SUFFIX,unsplash.com,Proxy -- DOMAIN-SUFFIX,untraceable.us,Proxy -- DOMAIN-SUFFIX,uploaded.net,Proxy -- DOMAIN-SUFFIX,uProxy.org,Proxy -- DOMAIN-SUFFIX,upwork.com,Proxy -- DOMAIN-SUFFIX,urchin.com,Proxy -- DOMAIN-SUFFIX,urlparser.com,Proxy -- DOMAIN-SUFFIX,us.to,Proxy -- DOMAIN-SUFFIX,usertrust.com,Proxy -- DOMAIN-SUFFIX,usgs.gov,Proxy -- DOMAIN-SUFFIX,usma.edu,Proxy -- DOMAIN-SUFFIX,uspto.gov,Proxy -- DOMAIN-SUFFIX,ustream.tv,Proxy -- DOMAIN-SUFFIX,v.gd,Proxy -- DOMAIN-SUFFIX,v2ex.co,Proxy -- DOMAIN-SUFFIX,v2ex.com,Proxy -- DOMAIN-SUFFIX,v2ray.com,Proxy -- DOMAIN-SUFFIX,van001.com,Proxy -- DOMAIN-SUFFIX,vanpeople.com,Proxy -- DOMAIN-SUFFIX,vansky.com,Proxy -- DOMAIN-SUFFIX,vbstatic.co,Proxy -- DOMAIN-SUFFIX,venchina.com,Proxy -- DOMAIN-SUFFIX,venturebeat.com,Proxy -- DOMAIN-SUFFIX,veoh.com,Proxy -- DOMAIN-SUFFIX,verizonwireless.com,Proxy -- DOMAIN-SUFFIX,viber.com,Proxy -- DOMAIN-SUFFIX,vid.me,Proxy -- DOMAIN-SUFFIX,videomega.tv,Proxy -- DOMAIN-SUFFIX,vidinfo.org,Proxy -- DOMAIN-SUFFIX,vimeo.com,Proxy -- DOMAIN-SUFFIX,vimeocdn.com,Proxy -- DOMAIN-SUFFIX,vimperator.org,Proxy -- DOMAIN-SUFFIX,vine.co,Proxy -- DOMAIN-SUFFIX,visibletweets.com,Proxy -- DOMAIN-SUFFIX,viu.com,Proxy -- DOMAIN-SUFFIX,vivaldi.com,Proxy -- DOMAIN-SUFFIX,voachinese.com,Proxy -- DOMAIN-SUFFIX,vocativ.com,Proxy -- DOMAIN-SUFFIX,vox-cdn.com,Proxy -- DOMAIN-SUFFIX,vpnaccount.org,Proxy -- DOMAIN-SUFFIX,vpnbook.com,Proxy -- DOMAIN-SUFFIX,vpngate.net,Proxy -- DOMAIN-SUFFIX,vsco.co,Proxy -- DOMAIN-SUFFIX,vultr.com,Proxy -- DOMAIN-SUFFIX,vzw.com,Proxy -- DOMAIN-SUFFIX,w.org,Proxy -- DOMAIN-SUFFIX,w3schools.com,Proxy -- DOMAIN-SUFFIX,wattpad.com,Proxy -- DOMAIN-SUFFIX,web2project.net,Proxy -- DOMAIN-SUFFIX,webfreer.com,Proxy -- DOMAIN-SUFFIX,weblagu.com,Proxy -- DOMAIN-SUFFIX,websnapr.com,Proxy -- DOMAIN-SUFFIX,webtype.com,Proxy -- DOMAIN-SUFFIX,webwarper.net,Proxy -- DOMAIN-SUFFIX,wenxuecity.com,Proxy -- DOMAIN-SUFFIX,westca.com,Proxy -- DOMAIN-SUFFIX,westpoint.edu,Proxy -- DOMAIN-SUFFIX,whatbrowser.org,Proxy -- DOMAIN-SUFFIX,wikiwand.com,Proxy -- DOMAIN-SUFFIX,wikileaks.info,Proxy -- DOMAIN-SUFFIX,wikileaks.org,Proxy -- DOMAIN-SUFFIX,wikileaks-forum.com,Proxy -- DOMAIN-SUFFIX,wikimedia.org,Proxy -- DOMAIN-SUFFIX,wikipedia.com,Proxy -- DOMAIN-SUFFIX,wikipedia.org,Proxy -- DOMAIN-SUFFIX,wn.com,Proxy -- DOMAIN-SUFFIX,wordpress.com,Proxy -- DOMAIN-SUFFIX,workflow.is,Proxy -- DOMAIN-SUFFIX,workflowy.com,Proxy -- DOMAIN-SUFFIX,worldcat.org,Proxy -- DOMAIN-SUFFIX,wow.com,Proxy -- DOMAIN-SUFFIX,wp.com,Proxy -- DOMAIN-SUFFIX,wsj.com,Proxy -- DOMAIN-SUFFIX,wsj.net,Proxy -- DOMAIN-SUFFIX,wwitv.com,Proxy -- DOMAIN-SUFFIX,xanga.com,Proxy -- DOMAIN-SUFFIX,xclient.info,Proxy -- DOMAIN-SUFFIX,xda-developers.com,Proxy -- DOMAIN-SUFFIX,xeeno.com,Proxy -- DOMAIN-SUFFIX,xiti.com,Proxy -- DOMAIN-SUFFIX,xteko.com,Proxy -- DOMAIN-SUFFIX,xuite.net,Proxy -- DOMAIN-SUFFIX,xvideos.com,Proxy -- DOMAIN-SUFFIX,yahoo.com,Proxy -- DOMAIN-SUFFIX,yahooapis.com,Proxy -- DOMAIN-SUFFIX,yasni.co.uk,Proxy -- DOMAIN-SUFFIX,yastatic.net,Proxy -- DOMAIN-SUFFIX,yeeyi.com,Proxy -- DOMAIN-SUFFIX,yesasia.com,Proxy -- DOMAIN-SUFFIX,yes-news.com,Proxy -- DOMAIN-SUFFIX,yidio.com,Proxy -- DOMAIN-SUFFIX,yimg.com,Proxy -- DOMAIN-SUFFIX,ying.com,Proxy -- DOMAIN-SUFFIX,yorkbbs.ca,Proxy -- DOMAIN-SUFFIX,youmaker.com,Proxy -- DOMAIN-SUFFIX,yourlisten.com,Proxy -- DOMAIN-SUFFIX,youtu.be,Proxy -- DOMAIN-SUFFIX,yoyo.org,Proxy -- DOMAIN-SUFFIX,ytimg.com,Proxy -- DOMAIN-SUFFIX,zacebook.com,Proxy -- DOMAIN-SUFFIX,zalmos.com,Proxy -- DOMAIN-SUFFIX,zaobao.com.sg,Proxy -- DOMAIN-SUFFIX,zeutch.com,Proxy -- DOMAIN-SUFFIX,zynamics.com,Proxy - -# > Force some domains which are fucked by GFW while resolving DNS,or do not respect the system Proxy -# - USER-AGENT,WhatsApp*,Proxy - -- DOMAIN-KEYWORD,Appledaily,Proxy -- DOMAIN-KEYWORD,beetalk,Proxy -- DOMAIN-KEYWORD,blogspot,Proxy -- DOMAIN-KEYWORD,dropbox,Proxy -- DOMAIN-KEYWORD,facebook,Proxy -- DOMAIN-KEYWORD,github,Proxy -- DOMAIN-KEYWORD,instagram,Proxy -- DOMAIN-KEYWORD,porn,Proxy -- DOMAIN-KEYWORD,twitter,Proxy -- DOMAIN-KEYWORD,whatsapp,Proxy -- DOMAIN-KEYWORD,google,Proxy -- DOMAIN-SUFFIX,1e100.net,Proxy -- DOMAIN-SUFFIX,2mdn.net,Proxy -- DOMAIN-SUFFIX,abc.xyz,Proxy -- DOMAIN-SUFFIX,akamai.net,Proxy -- DOMAIN-SUFFIX,appspot.com,Proxy -- DOMAIN-SUFFIX,autodraw.com,Proxy -- DOMAIN-SUFFIX,bandwagonhost.com,Proxy -- DOMAIN-SUFFIX,blogblog.com,Proxy -- DOMAIN-SUFFIX,chromeexperiments.com,Proxy -- DOMAIN-SUFFIX,creativelab5.com,Proxy -- DOMAIN-SUFFIX,crittercism.com,Proxy -- DOMAIN-SUFFIX,culturalspot.org,Proxy -- DOMAIN-SUFFIX,dartlang.org,Proxy -- DOMAIN-SUFFIX,fb.com,Proxy -- DOMAIN-SUFFIX,fb.me,Proxy -- DOMAIN-SUFFIX,fbcdn.net,Proxy -- DOMAIN-SUFFIX,fbsbx.com,Proxy -- DOMAIN-SUFFIX,gcr.io,Proxy -- DOMAIN-SUFFIX,gmail.com,Proxy -- DOMAIN-SUFFIX,gosetsuden.jp,Proxy -- DOMAIN-SUFFIX,gwtproject.org,Proxy -- DOMAIN-SUFFIX,heroku.com,Proxy -- DOMAIN-SUFFIX,html5rocks.com,Proxy -- DOMAIN-SUFFIX,keyhole.com,Proxy -- DOMAIN-SUFFIX,kobo.com,Proxy -- DOMAIN-SUFFIX,kobobooks.com,Proxy -- DOMAIN-SUFFIX,madewithcode.com,Proxy -- DOMAIN-SUFFIX,material.io,Proxy -- DOMAIN-SUFFIX,messenger.com,Proxy -- DOMAIN-SUFFIX,netmarble.com,Proxy -- DOMAIN-SUFFIX,nianticlabs.com,Proxy -- DOMAIN-SUFFIX,pinimg.com,Proxy -- DOMAIN-SUFFIX,pubnub.com,Proxy -- DOMAIN-SUFFIX,scdn.co,Proxy -- DOMAIN-SUFFIX,t.co,Proxy -- DOMAIN-SUFFIX,tensorflow.org,Proxy -- DOMAIN-SUFFIX,toggleable.com,Proxy -- DOMAIN-SUFFIX,torproject.org,Proxy -- DOMAIN-SUFFIX,twimg.com,Proxy -- DOMAIN-SUFFIX,twitpic.com,Proxy -- DOMAIN-SUFFIX,unfiltered.news,Proxy -- DOMAIN-SUFFIX,waveprotocol.org,Proxy -- DOMAIN-SUFFIX,webmproject.org,Proxy -- DOMAIN-SUFFIX,webrtc.org,Proxy - -# > Amazon -- IP-CIDR,13.32.0.0/16,Proxy -- IP-CIDR,13.33.0.0/16,Proxy -- IP-CIDR,13.35.0.0/17,Proxy -- IP-CIDR,18.184.0.0/15,Proxy -- IP-CIDR,18.194.0.0/15,Proxy -- IP-CIDR,18.208.0.0/13,Proxy -- IP-CIDR,18.232.0.0/14,Proxy -- IP-CIDR,52.200.0.0/13,Proxy -- IP-CIDR,52.58.0.0/15,Proxy -- IP-CIDR,52.74.0.0/16,Proxy -- IP-CIDR,52.77.0.0/16,Proxy -- IP-CIDR,52.84.0.0/15,Proxy -- IP-CIDR,54.156.0.0/14,Proxy -- IP-CIDR,54.226.0.0/15,Proxy -- IP-CIDR,54.230.156.0/22,Proxy -- IP-CIDR,54.93.0.0/16,Proxy - -# > Facebook -- IP-CIDR,103.4.96.0/22,Proxy -- IP-CIDR,129.134.0.0/17,Proxy -- IP-CIDR,157.240.0.0/17,Proxy -- IP-CIDR,173.252.64.0/19,Proxy -- IP-CIDR,173.252.96.0/19,Proxy -- IP-CIDR,179.60.192.0/22,Proxy -- IP-CIDR,185.60.216.0/22,Proxy -- IP-CIDR,204.15.20.0/22,Proxy -- IP-CIDR,31.13.24.0/21,Proxy -- IP-CIDR,31.13.64.0/18,Proxy -- IP-CIDR,45.64.40.0/22,Proxy -- IP-CIDR,66.220.144.0/20,Proxy -- IP-CIDR,69.171.224.0/19,Proxy -- IP-CIDR,69.63.176.0/20,Proxy -- IP-CIDR,74.119.76.0/22,Proxy - -# > Google -- IP-CIDR,173.194.0.0/16,Proxy -- IP-CIDR,74.125.0.0/16,Proxy - -# > Kakao Talk -- IP-CIDR,1.201.0.0/24,Proxy -- IP-CIDR,103.246.56.0/22,Proxy -- IP-CIDR,103.27.148.0/22,Proxy -- IP-CIDR,110.76.140.0/22,Proxy -- IP-CIDR,113.61.104.0/22,Proxy -- IP-CIDR,27.0.236.0/22,Proxy - -# > LINE -- IP-CIDR,103.2.28.0/22,Proxy -- IP-CIDR,119.235.224.0/21,Proxy -- IP-CIDR,119.235.232.0/23,Proxy -- IP-CIDR,119.235.235.0/24,Proxy -- IP-CIDR,119.235.236.0/23,Proxy -- IP-CIDR,125.6.146.0/24,Proxy -- IP-CIDR,125.6.149.0/24,Proxy -- IP-CIDR,125.6.190.0/24,Proxy -- IP-CIDR,125.209.208.0/20,Proxy -- IP-CIDR,203.104.103.0/24,Proxy -- IP-CIDR,203.104.128.0/20,Proxy -- IP-CIDR,203.174.66.64/26,Proxy -- IP-CIDR,203.174.77.0/24,Proxy - -# > Potato Chat -- IP-CIDR,13.251.24.157/24,Proxy -- IP-CIDR,13.251.41.203/24,Proxy -- IP-CIDR,17.252.156.147/24,Proxy -- IP-CIDR,17.252.157.26/24,Proxy - -# > SoftLayer -- IP-CIDR,74.86.0.0/16,Proxy -- IP-CIDR,75.126.0.0/16,Proxy -- IP-CIDR,174.37.0.0/16,Proxy -- IP-CIDR,208.43.0.0/16,Proxy - - - -# > Beplay -- DOMAIN-KEYWORD,beplay,Domestic - -# > Blizzard -# - USER-AGENT,hearthstone*,Domestic -- DOMAIN,cdp.cloud.unity3d.com,Domestic -- DOMAIN-SUFFIX,battle.net,Domestic -- DOMAIN-SUFFIX,battlenet.com,Domestic -- DOMAIN-SUFFIX,blizzard.com,Domestic - -# > Prior -- DOMAIN,client.amplifi.com,Domestic -- DOMAIN,ip.bjango.com,Domestic -- DOMAIN-SUFFIX,alphassl.com,Domestic -- DOMAIN-SUFFIX,edu.cn,Domestic - -# > TeamViewer -- IP-CIDR,185.188.32.0/24,Domestic -- IP-CIDR,185.188.33.0/24,Domestic -- IP-CIDR,185.188.34.0/24,Domestic -- IP-CIDR,185.188.35.0/24,Domestic -- IP-CIDR6,2a0b:b580::/48,Domestic -- IP-CIDR6,2a0b:b581::/48,Domestic -- IP-CIDR6,2a0b:b582::/48,Domestic -- IP-CIDR6,2a0b:b583::/48,Domestic - -# > Tencent -- IP-CIDR,182.254.116.0/24,Domestic - -- DOMAIN-SUFFIX,12306.cn,Domestic -- DOMAIN-SUFFIX,12306.com,Domestic -- DOMAIN-SUFFIX,126.net,Domestic -- DOMAIN-SUFFIX,163.com,Domestic -- DOMAIN-SUFFIX,360.cn,Domestic -- DOMAIN-SUFFIX,360.com,Domestic -- DOMAIN-SUFFIX,360buy.com,Domestic -- DOMAIN-SUFFIX,360buyimg.com,Domestic -- DOMAIN-SUFFIX,36kr.com,Domestic -- DOMAIN-SUFFIX,51ym.me,Domestic -- DOMAIN-SUFFIX,58.com,Domestic -- DOMAIN-SUFFIX,8686c.com,Domestic -- DOMAIN-SUFFIX,abercrombie.com,Domestic -- DOMAIN-SUFFIX,acfun.tv,Domestic -- DOMAIN-SUFFIX,adobesc.com,Domestic -- DOMAIN-SUFFIX,air-matters.com,Domestic -- DOMAIN-SUFFIX,air-matters.io,Domestic -- DOMAIN-SUFFIX,aixifan.com,Domestic -- DOMAIN-SUFFIX,akadns.net,Domestic -- DOMAIN-SUFFIX,alibabacloud.com,Domestic -- DOMAIN-SUFFIX,alicdn.com,Domestic -- DOMAIN-SUFFIX,alipay.com,Domestic -- DOMAIN-SUFFIX,alipayobjects.com,Domestic -- DOMAIN-SUFFIX,aliyun.com,Domestic -- DOMAIN-SUFFIX,aliyuncs.com,Domestic -- DOMAIN-SUFFIX,amap.com,Domestic -- DOMAIN-SUFFIX,api.crisp.chat,Domestic -- DOMAIN-SUFFIX,appshike.com,Domestic -- DOMAIN-SUFFIX,appstore.com,Domestic -- DOMAIN-SUFFIX,autonavi.com,Domestic -- DOMAIN-SUFFIX,aweme.snssdk.com,Domestic -- DOMAIN-SUFFIX,bababian.com,Domestic -- DOMAIN-SUFFIX,baidu.com,Domestic -- DOMAIN-SUFFIX,baidupcs.com,Domestic -- DOMAIN-SUFFIX,bdimg.com,Domestic -- DOMAIN-SUFFIX,bdstatic.com,Domestic -- DOMAIN-SUFFIX,beatsbydre.com,Domestic -- DOMAIN-SUFFIX,bet365.com,Domestic -- DOMAIN-SUFFIX,broadcasthe.net,Domestic -- DOMAIN-SUFFIX,caiyunapp.com,Domestic -- DOMAIN-SUFFIX,ccgslb.com,Domestic -- DOMAIN-SUFFIX,ccgslb.net,Domestic -- DOMAIN-SUFFIX,chinacache.net,Domestic -- DOMAIN-SUFFIX,chunbo.com,Domestic -- DOMAIN-SUFFIX,chunboimg.com,Domestic -- DOMAIN-SUFFIX,clashroyaleapp.com,Domestic -- DOMAIN-SUFFIX,clouddn.com,Domestic -- DOMAIN-SUFFIX,cloudsigma.com,Domestic -- DOMAIN-SUFFIX,cloudxns.net,Domestic -- DOMAIN-SUFFIX,cmct.tv,Domestic -- DOMAIN-SUFFIX,cmfu.com,Domestic -- DOMAIN-SUFFIX,cnbeta.com,Domestic -- DOMAIN-SUFFIX,cnbetacdn.com,Domestic -- DOMAIN-SUFFIX,chdbits.co,Domestic -- DOMAIN-SUFFIX,cnlang.org,Domestic -- DOMAIN-SUFFIX,culturedcode.com,Domestic -- DOMAIN-SUFFIX,dct-cloud.com,Domestic -- DOMAIN-SUFFIX,didialift.com,Domestic -- DOMAIN-SUFFIX,digicert.com,Domestic -- DOMAIN-SUFFIX,douban.com,Domestic -- DOMAIN-SUFFIX,doubanio.com,Domestic -- DOMAIN-SUFFIX,douyin.com,Domestic -- DOMAIN-SUFFIX,douyu.com,Domestic -- DOMAIN-SUFFIX,douyu.tv,Domestic -- DOMAIN-SUFFIX,douyutv.com,Domestic -- DOMAIN-SUFFIX,duokan.com,Domestic -- DOMAIN-SUFFIX,duoshuo.com,Domestic -- DOMAIN-SUFFIX,dytt8.net,Domestic -- DOMAIN-SUFFIX,easou.com,Domestic -- DOMAIN-SUFFIX,ecitic.com,Domestic -- DOMAIN-SUFFIX,ecitic.net,Domestic -- DOMAIN-SUFFIX,eclipse.org,Domestic -- DOMAIN-SUFFIX,eudic.net,Domestic -- DOMAIN-SUFFIX,ewqcxz.com,Domestic -- DOMAIN-SUFFIX,feng.com,Domestic -- DOMAIN-SUFFIX,fir.im,Domestic -- DOMAIN-SUFFIX,firefox.com,Domestic -- DOMAIN-SUFFIX,frdic.com,Domestic -- DOMAIN-SUFFIX,fresh-ideas.cc,Domestic -- DOMAIN-SUFFIX,gameloft.com,Domestic -- DOMAIN-SUFFIX,geetest.com,Domestic -- DOMAIN-SUFFIX,godic.net,Domestic -- DOMAIN-SUFFIX,goodread.com,Domestic -- DOMAIN-SUFFIX,google.cn,Domestic -- DOMAIN-SUFFIX,gtimg.com,Domestic -- DOMAIN-SUFFIX,haibian.com,Domestic -- DOMAIN-SUFFIX,hao123.com,Domestic -- DOMAIN-SUFFIX,haosou.com,Domestic -- DOMAIN-SUFFIX,hdchina.org,Domestic -- DOMAIN-SUFFIX,hdcmct.org,Domestic -- DOMAIN-SUFFIX,hkserversolution.com,Domestic -- DOMAIN-SUFFIX,hollisterco.com,Domestic -- DOMAIN-SUFFIX,hongxiu.com,Domestic -- DOMAIN-SUFFIX,hxcdn.net,Domestic -- DOMAIN-SUFFIX,icedropper.com,Domestic -- DOMAIN-SUFFIX,iciba.com,Domestic -- DOMAIN-SUFFIX,ifeng.com,Domestic -- DOMAIN-SUFFIX,ifengimg.com,Domestic -- DOMAIN-SUFFIX,images-amazon.com,Domestic -- DOMAIN-SUFFIX,img4me.com,Domestic -- DOMAIN-SUFFIX,ithome.com,Domestic -- DOMAIN-SUFFIX,ixdzs.com,Domestic -- DOMAIN-SUFFIX,jd.com,Domestic -- DOMAIN-SUFFIX,jd.hk,Domestic -- DOMAIN-SUFFIX,jianshu.com,Domestic -- DOMAIN-SUFFIX,jianshu.io,Domestic -- DOMAIN-SUFFIX,jianshuapi.com,Domestic -- DOMAIN-SUFFIX,jiathis.com,Domestic -- DOMAIN-SUFFIX,jomodns.com,Domestic -- DOMAIN-SUFFIX,jsboxbbs.com,Domestic -- DOMAIN-SUFFIX,knewone.com,Domestic -- DOMAIN-SUFFIX,kuaidi100.com,Domestic -- DOMAIN-SUFFIX,kugou.com,Domestic -- DOMAIN-SUFFIX,lecloud.com,Domestic -- DOMAIN-SUFFIX,lemicp.com,Domestic -- DOMAIN-SUFFIX,letv.com,Domestic -- DOMAIN-SUFFIX,letvcloud.com,Domestic -- DOMAIN-SUFFIX,lizhi.io,Domestic -- DOMAIN-SUFFIX,localizecdn.com,Domestic -- DOMAIN-SUFFIX,lucifr.com,Domestic -- DOMAIN-SUFFIX,luoo.net,Domestic -- DOMAIN-SUFFIX,lxdns.com,Domestic -- DOMAIN-SUFFIX,mai.tn,Domestic -- DOMAIN-SUFFIX,meizu.com,Domestic -- DOMAIN-SUFFIX,metatrader4.com,Domestic -- DOMAIN-SUFFIX,metatrader5.com,Domestic -- DOMAIN-SUFFIX,mi.com,Domestic -- DOMAIN-SUFFIX,miaopai.com,Domestic -- DOMAIN-SUFFIX,miui.com,Domestic -- DOMAIN-SUFFIX,miwifi.com,Domestic -- DOMAIN-SUFFIX,mob.com,Domestic -- DOMAIN-SUFFIX,moji.com,Domestic -- DOMAIN-SUFFIX,moke.com,Domestic -- DOMAIN-SUFFIX,mxhichina.com,Domestic -- DOMAIN-SUFFIX,myqcloud.com,Domestic -- DOMAIN-SUFFIX,myunlu.com,Domestic -- DOMAIN-SUFFIX,ngabbs.com,Domestic -- DOMAIN-SUFFIX,netease.com,Domestic -- DOMAIN-SUFFIX,nfoservers.com,Domestic -- DOMAIN-SUFFIX,nssurge.com,Domestic -- DOMAIN-SUFFIX,nuomi.com,Domestic -- DOMAIN-SUFFIX,ourbits.club,Domestic -- DOMAIN-SUFFIX,ourdvs.com,Domestic -- DOMAIN-SUFFIX,passthepopcorn.me,Domestic -- DOMAIN-SUFFIX,pgyer.com,Domestic -- DOMAIN-SUFFIX,pniao.com,Domestic -- DOMAIN-SUFFIX,privatehd.to,Domestic -- DOMAIN-SUFFIX,pstatp.com,Domestic -- DOMAIN-SUFFIX,qbox.me,Domestic -- DOMAIN-SUFFIX,qcloud.com,Domestic -- DOMAIN-SUFFIX,qdaily.com,Domestic -- DOMAIN-SUFFIX,qdmm.com,Domestic -- DOMAIN-SUFFIX,qhimg.com,Domestic -- DOMAIN-SUFFIX,qidian.com,Domestic -- DOMAIN-SUFFIX,qihucdn.com,Domestic -- DOMAIN-SUFFIX,qin.io,Domestic -- DOMAIN-SUFFIX,qingmang.me,Domestic -- DOMAIN-SUFFIX,qingmang.mobi,Domestic -- DOMAIN-SUFFIX,qiniucdn.com,Domestic -- DOMAIN-SUFFIX,qiniudn.com,Domestic -- DOMAIN-SUFFIX,qq.com,Domestic -- DOMAIN-SUFFIX,qqurl.com,Domestic -- DOMAIN-SUFFIX,rarbg.to,Domestic -- DOMAIN-SUFFIX,redacted.ch,Domestic -- DOMAIN-SUFFIX,rrmj.tv,Domestic -- DOMAIN-SUFFIX,ruguoapp.com,Domestic -- DOMAIN-SUFFIX,sandai.net,Domestic -- DOMAIN-SUFFIX,sf-express.com,Domestic -- DOMAIN-SUFFIX,sinaapp.com,Domestic -- DOMAIN-SUFFIX,sinaimg.cn,Domestic -- DOMAIN-SUFFIX,sinaimg.com,Domestic -- DOMAIN-SUFFIX,sm.ms,Domestic -- DOMAIN-SUFFIX,smzdm.com,Domestic -- DOMAIN-SUFFIX,snssdk.com,Domestic -- DOMAIN-SUFFIX,snwx.com,Domestic -- DOMAIN-SUFFIX,so.com,Domestic -- DOMAIN-SUFFIX,sogou.com,Domestic -- DOMAIN-SUFFIX,sogoucdn.com,Domestic -- DOMAIN-SUFFIX,sohu.com,Domestic -- DOMAIN-SUFFIX,soku.com,Domestic -- DOMAIN-SUFFIX,soso.com,Domestic -- DOMAIN-SUFFIX,sspai.com,Domestic -- DOMAIN-SUFFIX,startssl.com,Domestic -- DOMAIN-SUFFIX,store.steampowered.com,Domestic -- DOMAIN-SUFFIX,suning.com,Domestic -- DOMAIN-SUFFIX,symcd.com,Domestic -- DOMAIN-SUFFIX,taobao.com,Domestic -- DOMAIN-SUFFIX,tawk.link,Domestic -- DOMAIN-SUFFIX,tawk.to,Domestic -- DOMAIN-SUFFIX,teamviewer.com,Domestic -- DOMAIN-SUFFIX,tenpay.com,Domestic -- DOMAIN-SUFFIX,tietuku.com,Domestic -- DOMAIN-SUFFIX,tmall.com,Domestic -- DOMAIN-SUFFIX,tmzvps.com,Domestic -- DOMAIN-SUFFIX,trello.com,Domestic -- DOMAIN-SUFFIX,trellocdn.com,Domestic -- DOMAIN-SUFFIX,totheglory.im,Domestic -- DOMAIN-SUFFIX,ttmeiju.com,Domestic -- DOMAIN-SUFFIX,tudou.com,Domestic -- DOMAIN-SUFFIX,udache.com,Domestic -- DOMAIN-SUFFIX,umengcloud.com,Domestic -- DOMAIN-SUFFIX,upaiyun.com,Domestic -- DOMAIN-SUFFIX,upyun.com,Domestic -- DOMAIN-SUFFIX,uxengine.net,Domestic -- DOMAIN-SUFFIX,wandoujia.com,Domestic -- DOMAIN-SUFFIX,weather.bjango.com,Domestic -- DOMAIN-SUFFIX,weather.com,Domestic -- DOMAIN-SUFFIX,webqxs.com,Domestic -- DOMAIN-SUFFIX,weibo.cn,Domestic -- DOMAIN-SUFFIX,weibo.com,Domestic -- DOMAIN-SUFFIX,weico.cc,Domestic -- DOMAIN-SUFFIX,weiphone.com,Domestic -- DOMAIN-SUFFIX,weiphone.net,Domestic -- DOMAIN-SUFFIX,wenku8.net,Domestic -- DOMAIN-SUFFIX,werewolf.53site.com,Domestic -- DOMAIN-SUFFIX,windowsupdate.com,Domestic -- DOMAIN-SUFFIX,wkcdn.com,Domestic -- DOMAIN-SUFFIX,workflowy.com,Domestic -- DOMAIN-SUFFIX,xdrig.com,Domestic -- DOMAIN-SUFFIX,xhostfire.com,Domestic -- DOMAIN-SUFFIX,xiami.com,Domestic -- DOMAIN-SUFFIX,xiami.net,Domestic -- DOMAIN-SUFFIX,xiaojukeji.com,Domestic -- DOMAIN-SUFFIX,xiaomi.com,Domestic -- DOMAIN-SUFFIX,xiaomi.net,Domestic -- DOMAIN-SUFFIX,xiaomicp.com,Domestic -- DOMAIN-SUFFIX,ximalaya.com,Domestic -- DOMAIN-SUFFIX,xitek.com,Domestic -- DOMAIN-SUFFIX,xmcdn.com,Domestic -- DOMAIN-SUFFIX,xslb.net,Domestic -- DOMAIN-SUFFIX,yach.me,Domestic -- DOMAIN-SUFFIX,yeepay.com,Domestic -- DOMAIN-SUFFIX,yhd.com,Domestic -- DOMAIN-SUFFIX,yinxiang.com,Domestic -- DOMAIN-SUFFIX,yixia.com,Domestic -- DOMAIN-SUFFIX,ykimg.com,Domestic -- DOMAIN-SUFFIX,youdao.com,Domestic -- DOMAIN-SUFFIX,youku.com,Domestic -- DOMAIN-SUFFIX,yunjiasu-cdn.net,Domestic -- DOMAIN-SUFFIX,zealer.com,Domestic -- DOMAIN-SUFFIX,zgslb.net,Domestic -- DOMAIN-SUFFIX,zhihu.com,Domestic -- DOMAIN-SUFFIX,zhimg.com,Domestic -- DOMAIN-SUFFIX,zimuzu.tv,Domestic -- DOMAIN-SUFFIX,zmz002.com,Domestic - -- IP-CIDR,1.255.62.0/24,Domestic - -# > CN -- DOMAIN-SUFFIX,cn,Domestic - - - -# > Apple API -- DOMAIN-SUFFIX,aaplimg.com,Apple -- DOMAIN-SUFFIX,apple.co,Apple -- DOMAIN-SUFFIX,apple.com,Apple -- DOMAIN-SUFFIX,apple-cloudkit.com,Apple -- DOMAIN-SUFFIX,appsto.re,Apple -- DOMAIN-SUFFIX,cdn-apple.com,Apple -- DOMAIN-SUFFIX,icloud.com,Apple -- DOMAIN-SUFFIX,icloud-content.com,Apple -- DOMAIN-SUFFIX,itunes.com,Apple -- DOMAIN-SUFFIX,me.com,Apple -- IP-CIDR,17.0.0.0/8,Apple -- IP-CIDR,63.92.224.0/19,Apple -- IP-CIDR,65.199.22.0/23,Apple -- IP-CIDR,139.178.128.0/18,Apple -- IP-CIDR,144.178.0.0/19,Apple -- IP-CIDR,144.178.36.0/22,Apple -- IP-CIDR,144.178.48.0/20,Apple -- IP-CIDR,192.35.50.0/24,Apple -- IP-CIDR,198.183.17.0/24,Apple -- IP-CIDR,205.180.175.0/24,Apple - -# > Apple News -- DOMAIN-SUFFIX,apple.news,Apple - -# > Apple CDN -# - PROCESS-NAME,storedownloadd,DIRECT -# - USER-AGENT,com.apple.appstored*,DIRECT -- DOMAIN,aod.itunes.apple.com,DIRECT -- DOMAIN,api.smoot.apple.cn,DIRECT -- DOMAIN,appldnld.apple.com,DIRECT -- DOMAIN,apptrailers.itunes.apple.com,DIRECT -- DOMAIN,gs-loc-cn.apple.com,DIRECT -- DOMAIN,iosapps.itunes.apple.com,DIRECT -- DOMAIN,music.apple.com,DIRECT -- DOMAIN,mvod.itunes.apple.com,DIRECT -- DOMAIN,osxapps.itunes.apple.com,DIRECT -- DOMAIN,supportdownload.apple.com,DIRECT -- DOMAIN,swcdn.apple.com,DIRECT -- DOMAIN,updates-http.cdn-apple.com,DIRECT -- DOMAIN-SUFFIX,ls.apple.com,DIRECT -- DOMAIN-SUFFIX,mzstatic.com,DIRECT - - - -- IP-CIDR,10.0.0.0/8,DIRECT -- IP-CIDR,100.64.0.0/10,DIRECT -- IP-CIDR,127.0.0.0/8,DIRECT -- IP-CIDR,172.16.0.0/12,DIRECT -- IP-CIDR,192.168.0.0/16,DIRECT +- RULE-SET,Reject,AdBlock +- RULE-SET,Special,DIRECT + +- RULE-SET,Netflix,Netflix +- RULE-SET,Spotify,Spotify + +# - RULE-SET,YouTube Music,YouTube +- RULE-SET,YouTube,YouTube + +- RULE-SET,Bilibili,AsianTV +- RULE-SET,iQiyi,AsianTV +- RULE-SET,Letv,AsianTV +# - RULE-SET,MOO,AsianTV +- RULE-SET,Netease Music,AsianTV +- RULE-SET,Tencent Video,AsianTV +- RULE-SET,Youku,AsianTV + +- RULE-SET,ABC,GlobalTV +- RULE-SET,Abema TV,GlobalTV +- RULE-SET,Amazon,GlobalTV +- RULE-SET,Apple News,GlobalTV +- RULE-SET,Apple TV,GlobalTV +- RULE-SET,Bahamut,GlobalTV +- RULE-SET,BBC iPlayer,GlobalTV +- RULE-SET,DAZN,GlobalTV +- RULE-SET,Disney Plus,GlobalTV +- RULE-SET,encoreTVB,GlobalTV +- RULE-SET,Fox Now,GlobalTV +- RULE-SET,Fox+,GlobalTV +- RULE-SET,HBO,GlobalTV +- RULE-SET,Hulu Japan,GlobalTV +- RULE-SET,Hulu,GlobalTV +- RULE-SET,Japonx,GlobalTV +- RULE-SET,JOOX,GlobalTV +- RULE-SET,KKBOX,GlobalTV +- RULE-SET,KKTV,GlobalTV +- RULE-SET,Line TV,GlobalTV +- RULE-SET,myTV SUPER,GlobalTV +- RULE-SET,Pandora,GlobalTV +- RULE-SET,PBS,GlobalTV +- RULE-SET,Pornhub,GlobalTV +- RULE-SET,Soundcloud,GlobalTV +- RULE-SET,ViuTV,GlobalTV + +- RULE-SET,Telegram,Telegram +- RULE-SET,Steam,Steam +- RULE-SET,Speedtest,Speedtest +- RULE-SET,PayPal,PayPal +- RULE-SET,Microsoft,Microsoft + +- RULE-SET,PROXY,Proxy +- RULE-SET,Domestic,Domestic +- RULE-SET,Domestic IPs,Domestic +- RULE-SET,Apple,Apple - GEOIP,CN,Domestic - MATCH,Others + 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 31a7f69f91..29d5e938c4 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.39.8-beta -data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXMAAAAqCAMAAAB2kksrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkFFNzIyRDU3RTQ1NDExRUFCRTYyREEyNDk0OERDMjQ1IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkFFNzIyRDU4RTQ1NDExRUFCRTYyREEyNDk0OERDMjQ1Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QUU3MjJENTVFNDU0MTFFQUJFNjJEQTI0OTQ4REMyNDUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QUU3MjJENTZFNDU0MTFFQUJFNjJEQTI0OTQ4REMyNDUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6a3gRQAAADAFBMVEVJns4HZp1ISEjB1eDR0dEkhLtlnr1FmsptbW0GcKw9PT2EvN2EhIQGVYKGv98HXpG6urpTiqkEXI5YpdIJdbQ6lcqCgoIJa6Genp4JeLg1dJra2toka5OlpaV4eHix0ePf39/n5+fR4uwFbak/Pz/GxsahoaF2ttrOzs5jlLFpaWmizOUJca3R5vJmrdYHXI02ibeRkZFxcXEEYJW/v7+StchFRUWsrKy1tbUEU4AXYo3KyspzorwJZJliYmIqjcZHirGy1elkq9NLS0tDQ0Pg4ODB2eYXgL2Li4uDs86iwNEEWYmjxdiyzd2UxuLw9fd2dnYHdLLAwMCcnJzCwsJBQUFFkbwneKZFgKJCQkImcJuDrcUFaaK2traXl5dHnM2TxOFlZWUnicGNjY1yn7gZdas2kMUFcrCTutDR3+gIbKQchsOvr68JWIWhv9BgYGAahMGiyN6UlJQKcasFZZsIYZSkzuYEYpiRuM90dHSyytiDqsGTvdaJweIwk8tDfqF0sdURgsMCc7QBcrNRUVFUVFRVVVVSUlILfL1WVlYFdrcHeLkKe7wOf8AEdbYEdrYDdLUOgMADdLQDdbUSg8NXV1cSg8QShMQThMUAcrIGd7gOf78Nfr8Nfr4Mfb4Mfb0IebkJe7sJersJero6OjqqqqrU1NTV1dWrq6upqak7OzuAgIB+fn4HVoTw9/vC3u6BgYHh7/fq6ur19fVMTEzz8/P09PR/f3+DvNyFvt7v9Pfg6u/A1N/B3e2CqcCJiYnB3e4Lerng6vDB3u7o6Oh0s9iErMLC3+8UXomDq8ILdK+Evd3W1taEtNDD3+/g7vYFa6aDu9wFZ58JaaBGm8tVos/g7/cZg78EVYMEV4cLb6hXk7YIWYiDr8gKeLfv9voGdbRGhKcVaJdln8AFdLNkmbcHd7aAudk2g67P5PHB2+ujxNY4k8czeqMHV4ZTU1MPgMEQgcJZWVlaWlpfX19bW1tcXFxNTU1eXl5PT09QUFBYWFhdXV1OTk7///////+1MYmNAAABAHRSTlP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AU/cHJQAADG1JREFUeNrsVwlUFOcdHxYPWBdQULPh2IisCgoYPBZWBY8FRY0arSTGqKjPxHhgEkWNmpq0FYFAj7Slh0kNmOUysMgZBbxviYlVE01iziZN26TZ1tqAGH70/30zuzuzgOE1eb63+/y9x3z/8/ef+X2zM4PQ3l69dvgNd8AfXADbf2xpbxfak7bccA/83iWwPapdqB7V4ib4nWtgu0VY6y6St/zWRfBjYdS37oKfuAi2C9/e1fxOw400/7erQPjGbXBX8zuPf7kKhP+6De5qfufxoqtA+I/b4Oeugk4118TGxsZ4/fCqLNNoltkdL42mOz06ja6b7C91hRcHDPMdNqBDdE2Ar6+vYHcnRss8Ra9vwBrnsC98X/q/IVx3RsLianAkLUm4/j2hidUo/GossdvzML47FG/gjW4Oe7kLrHmTX86baxTRiWIUlQGiP1v0hE57Lb5OnKR5V+NeFnyFl2+LDprrqoCgEq02nEZpvq/msYiVu9ljkGTfWiDmh9X8T13gNAb3mtRrME4rogKw6tSpGXMAgbmbYJkw6f2pkmfDmkrW+/6XwGwl5wEc6GrcbXPi6FtKJCSh1kvNYNLWDrz1PUGaK/xRgJdkLkFtZncoDGpDN4ft7hzRODYuLS1t3BxEy8PCjOA0Fj6GTbxozrhr19LSZqBSXnRA7E2bAKzZrUwc2N0VbpcTR3dQqTZBnagymQxqdfbw7mqrG6jYnoEDvTrXXBWKoZJZjMVtUrGuc8YEJ829lEMSbBU2vNIpdk/GBL/3zr3ndwqT5fFzaWl+99wTf+0UTpN3GmOvrT63YSPtTICs6DROUe+G+DS6/xWspOsrr0wUBshCgs3jOXtQUSMFna61Glr9Dm5lm5hRjH3c24di6bgkCSi5VYKShBJ6DLFsCXsBVJfwOiCBu8UJ3BFhZ9+hRZUkIN3xeSTcPJavSr6lIL81tIqHGWUJROJkHpqXIFV68cbF8lPPkhCASsmqREBWlgWfHCX76CewZMlwLv5Dthx9Ak/T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 \ No newline at end of file +v0.40.2-beta +data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXMAAAAqCAMAAAB2kksrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTQ4IDc5LjE2NDAzNiwgMjAxOS8wOC8xMy0wMTowNjo1NyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkM1NkRDMDYyRjNGRTExRUFCNTJGQUNGREZDQ0Q1OTJGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkM1NkRDMDYzRjNGRTExRUFCNTJGQUNGREZDQ0Q1OTJGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QzU2REMwNjBGM0ZFMTFFQUI1MkZBQ0ZERkNDRDU5MkYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QzU2REMwNjFGM0ZFMTFFQUI1MkZBQ0ZERkNDRDU5MkYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4YkcPgAAADAFBMVEU6lcrh7/cGcKyEhIS6uroGZp1FgKIla5KjzeVYpdIHXpGCgoIFXI6enp4GVYLa2to1dZqlpaVknbx4eHgFbakJeLix0eMJdbPR5vLf39/n5+c/Pz8KaqHGxsaGv9+hoaF2ttrOzs5TiqppaWksfKpHjLORkZFxcXFjlbG/v79GRkasrKy1tbUIW4rKyspmrNUXYYxiYmIJZJmStchLS0tDQ0MEU4Dg4OAJca6Li4vw9feDs85zobuSuM52dnZFmsrAwMCcnJyiwNEFWYgFYJXCwsJBQUGz1upCQkImcJsFZZsGdLKUxuJsbGy2trajxdlHnM2Xl5eTvdbS0tLQ0NBFkbxlZWWDqsGNjY3B1eBJns42kcYdh8MqjcYJaJ4HVoQmicKTxODR3+iDrcXR4uwFaaKCudmvr69gYGBvb28Xgb4ZdaqUlJQJWIUhhL0HbKXB2ecFcrAEYphyn7hKns90dHSyytlFhamJweIwk8tDfqAahMEJYpR0sdUUX4k1h7UGV4YRgsMCc7QBcrNRUVFUVFRVVVVSUlILfL0FdrcKe7xWVlYHeLkDdbUOf8AEdrYEdbYOgMADdLUDdLQSg8MSg8RXV1cShMQAcrIThMUGd7gOf78Nfr8Nfr4Mfb4Mfb0JersJe7sJeroIebk6OjqqqqrU1NTV1dWrq6tISEg9PT2pqak7OzuAgIB+fn7w9/s8PDzC3u5JSUmCqcCBgYGEvN3q6uqEvd1MTEzz8/P19fX09PSDvNzB3u5/f3/v9PfB3e2Fvt6JiYng6u/B3e7o6OiEtNBVos9kq9OErMLA1N/W1tYFZ6Chv9BHm8yDq8ILdK9Inc1Gm8vD3+8Lerng6vBortfC3++Du9wFa6YlhLoEVYNEmcoKbqgKeLcVaJcGdbQnhrzv9voZg8DB1+OiyN6Eu9oJcKyDr8iTu9F/uNiFvd6yz9+ErcVFia9TU1MPgMEQgcJZWVlaWlpfX19bW1tcXFxNTU1eXl5PT09QUFBYWFhdXV1OTk7///////+fcikrAAABAHRSTlP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AU/cHJQAADApJREFUeNrsWAtYVGUaPsN4AWREHEpkvKGJOpCJDiBe0vWCCWKZqy5qopZrmlReyyxzd0Vohr20F3bX2hK5DhgDoyIXCfKuWdrNct3uF6ttm13XDcR46fv/c5lzBjCercfnmXl8n4fzf9f3O+f9Z845g9DaWrNyyGVfwF+9AJsfdbS2Cq3xGy/7Bv7sFdgc1irUDGvyEfzJO7DZIaz0Fcmb/ugleFQY9q2v4Bdegs3Ctzc0v97wIc3/4y0QvvEZ3ND8+uPf3gLhfz6DG5pffzztLRD+6zP4jbegXc31UVFRP1v146syX6+frzir9PrO9Bj1xk6yP9MRnhYGDRgktJ/bsGGxZC0OGDAgYLFnnkXb6R2AAc/83xAueSJmdg044ufEXPqB0EfpNX4N5ij2ZIzsDMXLeLmTw57tAIvf4JfzxuJ2crOADaJ1zsGKHOc06XvEVoQJHn2keUfjnt0wYMOz10QbzY2VQHCxwRBBo/Q/VPMoRKld2wjEK1sLRP64mv+tA7yN+3oP7X0f3m6bOkcXuZBbC4Evhg79QnYlUDT15Mkp4+BYrG18CS91NO6aOQ7hqhYx8aheZWKwGKp7XP2BIM01/jAgRTLnoDqzMxRmk7mTw55rH+fw1qj09PRR43DOMxWAcSQyN3WYQEXpJ6FTFyyc0p1Fe43DIG0n6fpcR7hWjkNoo1J1jCnWabGYTSbbkM5qa+yh2Z4ePVLa19wejoGSWYTZLVKxsX3GGA/NU7RDYuQKGc+3jxmYEPju2XcDT2KGR0ZwjOtFmnMT49KXnD27hHZGUFWcTU9/vF+/0beOwdvaVtL1+efvWaiuXSh7PKcENTXSXI9rrYHBtJ1bNgszirCPe/tQJB3nxAPFV4tRHFNMtyGWLWYPgJpiXgfEcLcohjsiFPbtBlRKAgKrbCTcZJavTLiqIb86sJKHGWUxROIEHpocI1Wm8MbZ6lPPkhAAnWTpEJCV5cAjb5L95iNwZGmwxYHh6cBrzB6E1IfY2i8Vg1QlZ0e/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 \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/etc/openclash/rule_provider/ChinaIP.yaml b/package/ctcgfw/luci-app-openclash/files/etc/openclash/rule_provider/ChinaIP.yaml index 816d5dada3..af12e0638d 100644 --- a/package/ctcgfw/luci-app-openclash/files/etc/openclash/rule_provider/ChinaIP.yaml +++ b/package/ctcgfw/luci-app-openclash/files/etc/openclash/rule_provider/ChinaIP.yaml @@ -61,11 +61,7 @@ payload: - '3.5.214.0/23' - '3.5.216.0/24' - '8.128.0.0/10' - - '8.209.36.0/22' - '8.209.40.0/21' - - '8.211.128.0/17' - - '8.212.0.0/14' - - '8.216.0.0/13' - '14.0.0.0/21' - '14.0.12.0/22' - '14.1.0.0/22' @@ -86,14 +82,11 @@ payload: - '14.204.0.0/15' - '14.208.0.0/12' - '15.230.41.0/24' - - '20.62.0.0/24' + - '15.230.49.0/24' - '20.81.0.0/24' - '20.139.160.0/20' - '20.249.255.0/24' - '20.251.0.0/22' - - '23.236.64.0/25' - - '23.236.64.128/26' - - '23.236.64.192/27' - '27.0.128.0/22' - '27.0.132.0/24' - '27.0.134.0/23' @@ -311,6 +304,7 @@ payload: - '42.247.64.0/18' - '42.247.128.0/17' - '42.248.0.0/13' + - '43.0.0.0/9' - '43.224.12.0/22' - '43.224.24.0/22' - '43.224.44.0/22' @@ -321,7 +315,7 @@ payload: - '43.224.80.0/22' - '43.224.100.0/22' - '43.224.144.0/22' - - '43.224.160.0/22' + - '43.224.161.0/24' - '43.224.176.0/22' - '43.224.184.0/22' - '43.224.200.0/21' @@ -389,7 +383,6 @@ payload: - '43.230.124.0/22' - '43.230.220.0/22' - '43.230.224.0/19' - - '43.231.12.0/22' - '43.231.32.0/20' - '43.231.80.0/20' - '43.231.96.0/20' @@ -464,6 +457,16 @@ payload: - '43.246.64.0/19' - '43.246.96.0/22' - '43.246.147.0/24' + - '43.246.148.0/24' + - '43.246.150.0/24' + - '43.246.151.0/30' + - '43.246.151.4/32' + - '43.246.151.6/31' + - '43.246.151.8/29' + - '43.246.151.16/28' + - '43.246.151.32/27' + - '43.246.151.64/26' + - '43.246.151.128/25' - '43.246.228.0/22' - '43.247.4.0/22' - '43.247.8.0/22' @@ -964,8 +967,8 @@ payload: - '101.2.172.0/22' - '101.4.0.0/14' - '101.16.0.0/12' - - '101.32.112.0/20' - - '101.32.128.0/17' + - '101.32.176.0/20' + - '101.32.192.0/18' - '101.33.0.0/16' - '101.34.0.0/15' - '101.36.0.0/18' @@ -1325,7 +1328,7 @@ payload: - '103.43.104.0/22' - '103.43.124.0/22' - '103.43.184.0/22' - - '103.43.192.0/21' + - '103.43.196.0/22' - '103.43.208.0/22' - '103.43.220.0/22' - '103.43.224.0/22' @@ -1392,7 +1395,6 @@ payload: - '103.50.48.0/20' - '103.50.64.0/21' - '103.50.72.0/22' - - '103.50.92.0/22' - '103.50.108.0/22' - '103.50.112.0/20' - '103.50.132.0/22' @@ -1755,10 +1757,11 @@ payload: - '103.94.88.0/22' - '103.94.116.0/22' - '103.94.160.0/22' - - '103.94.182.0/24' - '103.94.200.0/22' - - '103.95.31.0/24' + - '103.95.28.0/24' + - '103.95.30.0/23' - '103.95.52.0/22' + - '103.95.69.0/24' - '103.95.70.0/23' - '103.95.88.0/21' - '103.95.136.0/21' @@ -1849,6 +1852,7 @@ payload: - '103.103.72.0/22' - '103.103.188.0/22' - '103.103.204.0/22' + - '103.103.225.0/24' - '103.104.36.0/22' - '103.104.40.0/22' - '103.104.64.0/22' @@ -1924,7 +1928,6 @@ payload: - '103.114.100.0/22' - '103.114.148.0/22' - '103.114.156.0/23' - - '103.114.159.0/24' - '103.114.212.0/22' - '103.114.236.0/22' - '103.114.240.0/22' @@ -2040,7 +2043,7 @@ payload: - '103.137.180.0/22' - '103.137.236.0/22' - '103.138.2.0/23' - - '103.138.134.0/23' + - '103.138.135.0/24' - '103.138.208.0/23' - '103.138.220.0/23' - '103.138.248.0/23' @@ -2076,6 +2079,7 @@ payload: - '103.143.16.0/22' - '103.143.31.0/24' - '103.143.74.0/23' + - '103.143.120.0/24' - '103.143.124.0/23' - '103.143.132.0/22' - '103.143.174.0/23' @@ -2086,12 +2090,11 @@ payload: - '103.144.136.0/23' - '103.144.158.0/23' - '103.145.42.0/23' - - '103.145.92.0/22' + - '103.145.94.0/23' - '103.145.98.0/23' - '103.145.188.0/23' - '103.146.6.0/23' - '103.146.72.0/23' - - '103.146.91.0/24' - '103.146.126.0/23' - '103.146.138.0/23' - '103.146.236.0/23' @@ -2099,6 +2102,7 @@ payload: - '103.147.124.0/23' - '103.147.198.0/23' - '103.147.206.0/23' + - '103.147.211.0/24' - '103.148.174.0/23' - '103.149.6.0/23' - '103.149.17.0/24' @@ -2109,7 +2113,6 @@ payload: - '103.149.220.0/23' - '103.149.242.0/23' - '103.149.244.0/22' - - '103.149.248.0/23' - '103.150.24.0/23' - '103.150.66.0/23' - '103.150.72.0/23' @@ -2125,21 +2128,44 @@ payload: - '103.151.142.0/23' - '103.151.148.0/22' - '103.151.158.0/23' - - '103.151.178.0/23' - - '103.151.206.0/23' - - '103.151.216.0/23' - - '103.151.228.0/23' - - '103.152.14.0/23' - - '103.152.24.0/23' - '103.152.28.0/22' - '103.152.76.0/23' - '103.152.80.0/23' - - '103.152.98.0/23' - - '103.152.112.0/23' + - '103.152.113.0/24' - '103.152.120.0/22' - - '103.152.132.0/23' - '103.152.152.0/23' - '103.152.168.0/23' + - '103.152.186.0/23' + - '103.152.190.0/23' + - '103.152.192.0/23' + - '103.152.200.0/23' + - '103.152.208.0/23' + - '103.152.224.0/23' + - '103.152.247.0/24' + - '103.152.250.0/23' + - '103.153.4.0/23' + - '103.153.36.0/23' + - '103.153.99.0/24' + - '103.153.100.0/23' + - '103.153.114.0/23' + - '103.153.122.0/23' + - '103.153.128.0/23' + - '103.153.132.0/23' + - '103.153.138.0/23' + - '103.153.146.0/23' + - '103.153.160.0/23' + - '103.154.18.0/23' + - '103.154.30.0/23' + - '103.154.32.0/23' + - '103.154.40.0/23' + - '103.154.66.0/23' + - '103.154.162.0/23' + - '103.154.164.0/23' + - '103.154.168.0/23' + - '103.154.243.0/24' + - '103.155.14.0/23' + - '103.155.16.0/23' + - '103.155.34.0/23' - '103.192.0.0/19' - '103.192.48.0/21' - '103.192.56.0/22' @@ -2164,7 +2190,6 @@ payload: - '103.193.216.0/21' - '103.193.224.0/20' - '103.194.16.0/22' - - '103.194.230.0/23' - '103.195.112.0/22' - '103.195.152.0/22' - '103.195.160.0/22' @@ -2372,7 +2397,8 @@ payload: - '103.220.240.0/21' - '103.220.252.0/22' - '103.221.0.0/19' - - '103.221.32.0/21' + - '103.221.32.0/22' + - '103.221.40.0/24' - '103.221.44.0/22' - '103.221.88.0/22' - '103.221.92.0/23' @@ -3120,7 +3146,10 @@ payload: - '118.26.40.0/21' - '118.26.48.0/20' - '118.26.64.0/19' - - '118.26.112.0/20' + - '118.26.112.0/21' + - '118.26.121.0/24' + - '118.26.122.0/23' + - '118.26.124.0/23' - '118.26.128.0/17' - '118.28.0.0/15' - '118.30.0.0/20' @@ -3165,8 +3194,8 @@ payload: - '118.178.0.0/16' - '118.180.0.0/14' - '118.184.5.0/24' - - '118.184.10.0/24' - - '118.184.115.0/24' + - '118.184.109.0/24' + - '118.184.110.0/23' - '118.184.116.0/22' - '118.184.120.0/23' - '118.184.122.0/24' @@ -3321,7 +3350,10 @@ payload: - '120.0.0.0/12' - '120.24.0.0/14' - '120.30.0.0/15' - - '120.32.0.0/12' + - '120.32.0.0/13' + - '120.40.0.0/14' + - '120.44.0.0/15' + - '120.46.0.0/16' - '120.48.0.0/15' - '120.52.0.0/14' - '120.64.0.0/13' @@ -3375,7 +3407,7 @@ payload: - '121.59.28.0/24' - '121.59.31.0/24' - '121.59.33.0/24' - - '121.59.34.0/23' + - '121.59.35.0/24' - '121.59.36.0/22' - '121.59.40.0/21' - '121.59.48.0/20' @@ -3415,7 +3447,19 @@ payload: - '122.48.0.0/16' - '122.49.0.0/18' - '122.51.0.0/16' - - '122.64.0.0/11' + - '122.64.0.0/14' + - '122.68.0.0/15' + - '122.70.0.0/18' + - '122.70.64.0/19' + - '122.70.96.0/20' + - '122.70.112.0/21' + - '122.70.120.0/22' + - '122.70.124.0/23' + - '122.70.126.0/24' + - '122.70.128.0/17' + - '122.71.0.0/16' + - '122.72.0.0/13' + - '122.80.0.0/12' - '122.96.0.0/15' - '122.98.144.0/20' - '122.98.160.0/21' @@ -3471,13 +3515,7 @@ payload: - '123.49.136.0/22' - '123.49.152.0/21' - '123.49.160.0/19' - - '123.49.192.0/19' - - '123.49.224.0/20' - - '123.49.240.0/23' - - '123.49.243.0/24' - - '123.49.245.0/24' - - '123.49.246.0/23' - - '123.49.248.0/21' + - '123.49.192.0/18' - '123.50.160.0/19' - '123.52.0.0/14' - '123.56.0.0/15' @@ -3530,8 +3568,6 @@ payload: - '123.242.192.0/21' - '123.244.0.0/14' - '123.249.0.0/16' - - '123.253.109.0/24' - - '123.253.110.0/24' - '123.253.240.0/22' - '123.254.96.0/21' - '124.6.64.0/18' @@ -3550,7 +3586,13 @@ payload: - '124.64.0.0/15' - '124.66.0.0/17' - '124.67.0.0/16' - - '124.68.0.0/17' + - '124.68.0.0/19' + - '124.68.32.0/20' + - '124.68.48.0/21' + - '124.68.56.0/22' + - '124.68.60.0/23' + - '124.68.63.0/24' + - '124.68.64.0/18' - '124.68.128.0/18' - '124.68.192.0/19' - '124.68.224.0/23' @@ -3593,7 +3635,11 @@ payload: - '124.151.0.0/16' - '124.152.0.0/16' - '124.160.0.0/13' - - '124.172.0.0/14' + - '124.172.0.0/16' + - '124.173.32.0/19' + - '124.173.64.0/18' + - '124.173.128.0/17' + - '124.174.0.0/15' - '124.192.0.0/15' - '124.196.0.0/16' - '124.200.0.0/13' @@ -3646,7 +3692,7 @@ payload: - '132.237.134.0/24' - '134.175.0.0/16' - '135.84.247.0/24' - - '135.84.255.0/24' + - '135.84.254.0/23' - '135.159.208.0/20' - '135.244.80.0/20' - '137.59.59.0/24' @@ -3750,6 +3796,7 @@ payload: - '144.211.138.0/24' - '144.255.0.0/16' - '146.56.192.0/18' + - '146.88.175.0/24' - '146.196.56.0/22' - '146.196.68.0/22' - '146.196.92.0/22' @@ -3848,7 +3895,7 @@ payload: - '159.75.0.0/16' - '159.221.232.0/22' - '159.226.0.0/16' - - '160.19.208.0/21' + - '160.19.212.0/22' - '160.19.216.0/22' - '160.20.48.0/22' - '160.62.10.0/24' @@ -3872,8 +3919,9 @@ payload: - '161.207.0.0/16' - '162.14.0.0/21' - '162.14.12.0/22' - - '162.14.20.0/22' - - '162.14.24.0/21' + - '162.14.16.0/21' + - '162.14.26.0/23' + - '162.14.28.0/22' - '162.14.32.0/19' - '162.14.64.0/18' - '162.14.128.0/17' @@ -3901,6 +3949,7 @@ payload: - '163.204.0.0/16' - '163.244.246.0/24' - '164.52.80.0/24' + - '165.84.197.0/24' - '165.84.251.0/25' - '165.84.251.128/26' - '165.84.251.192/27' @@ -3925,7 +3974,6 @@ payload: - '170.225.224.0/23' - '170.252.152.0/21' - '171.8.0.0/13' - - '171.22.147.0/24' - '171.34.0.0/15' - '171.36.0.0/14' - '171.40.0.0/13' @@ -3977,6 +4025,7 @@ payload: - '180.78.0.0/15' - '180.84.0.0/15' - '180.86.0.0/16' + - '180.87.93.98/32' - '180.88.0.0/14' - '180.94.56.0/21' - '180.94.96.0/20' @@ -5625,7 +5674,6 @@ payload: - '211.152.140.0/22' - '211.152.150.0/23' - '211.152.157.0/24' - - '211.152.158.0/23' - '211.152.160.0/19' - '211.152.192.0/18' - '211.153.0.0/16' @@ -5697,7 +5745,13 @@ payload: - '218.192.0.0/12' - '218.240.0.0/14' - '218.244.0.0/15' - - '218.246.0.0/17' + - '218.246.0.0/19' + - '218.246.32.0/20' + - '218.246.48.0/21' + - '218.246.56.0/23' + - '218.246.58.0/24' + - '218.246.60.0/22' + - '218.246.64.0/18' - '218.246.129.0/24' - '218.246.131.0/24' - '218.246.132.0/23' @@ -5780,12 +5834,13 @@ payload: - '220.242.197.0/24' - '220.242.205.0/24' - '220.242.207.0/24' - - '220.242.216.0/21' + - '220.242.217.0/24' + - '220.242.218.0/23' + - '220.242.220.0/22' - '220.242.224.0/19' - '220.243.0.0/17' - '220.243.128.0/18' - '220.243.192.0/23' - - '220.243.194.0/24' - '220.243.196.0/24' - '220.243.198.0/23' - '220.243.201.0/24' @@ -5898,7 +5953,6 @@ payload: - '223.166.0.0/15' - '223.192.0.0/15' - '223.198.0.0/15' - - '223.201.4.0/22' - '223.201.8.0/21' - '223.201.16.0/20' - '223.201.32.0/19' 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 15cf67f625..85fdbe32b1 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 @@ -14,6 +14,8 @@ function index() entry({"admin", "services", "openclash", "status"},call("action_status")).leaf=true entry({"admin", "services", "openclash", "state"},call("action_state")).leaf=true entry({"admin", "services", "openclash", "startlog"},call("action_start")).leaf=true + entry({"admin", "services", "openclash", "close_all_connection"},call("action_close_all_connection")) + entry({"admin", "services", "openclash", "restore_history"},call("action_restore_history")) entry({"admin", "services", "openclash", "currentversion"},call("action_currentversion")) entry({"admin", "services", "openclash", "lastversion"},call("action_lastversion")) entry({"admin", "services", "openclash", "update"},call("action_update")) @@ -25,6 +27,8 @@ function index() entry({"admin", "services", "openclash", "ping"}, call("act_ping")) entry({"admin", "services", "openclash", "download_rule"}, call("action_download_rule")) entry({"admin", "services", "openclash", "restore"}, call("action_restore_config")) + entry({"admin", "services", "openclash", "one_key_update"}, call("action_one_key_update")) + entry({"admin", "services", "openclash", "one_key_update_check"}, call("action_one_key_update_check")) entry({"admin", "services", "openclash", "switch_mode"}, call("action_switch_mode")) entry({"admin", "services", "openclash", "op_mode"}, call("action_op_mode")) entry({"admin", "services", "openclash", "settings"},cbi("openclash/settings"),_("Global Settings"), 30).leaf = true @@ -32,6 +36,8 @@ function index() entry({"admin", "services", "openclash", "rule-providers-settings"},cbi("openclash/rule-providers-settings"),_("Rule Providers and Groups"), 50).leaf = true entry({"admin", "services", "openclash", "game-rules-manage"},form("openclash/game-rules-manage"), nil).leaf = true entry({"admin", "services", "openclash", "rule-providers-manage"},form("openclash/rule-providers-manage"), nil).leaf = true + entry({"admin", "services", "openclash", "proxy-provider-file-manage"},form("openclash/proxy-provider-file-manage"), nil).leaf = true + entry({"admin", "services", "openclash", "rule-providers-file-manage"},form("openclash/rule-providers-file-manage"), nil).leaf = true entry({"admin", "services", "openclash", "config-subscribe"},cbi("openclash/config-subscribe"),_("Config Update"), 60).leaf = true entry({"admin", "services", "openclash", "servers-config"},cbi("openclash/servers-config"), nil).leaf = true entry({"admin", "services", "openclash", "groups-config"},cbi("openclash/groups-config"), nil).leaf = true @@ -52,7 +58,12 @@ local function is_web() end local function is_watchdog() - return luci.sys.call("ps |grep openclash_watchdog.sh |grep -v grep >/dev/null") == 0 + local ps_version = luci.sys.exec("ps --version 2>&1 |grep -c procps-ng |tr -d '\n'") + if ps_version == "0" then + return luci.sys.call("ps |grep openclash_watchdog.sh |grep -v grep >/dev/null") == 0 + else + return luci.sys.call("ps -ef |grep openclash_watchdog.sh |grep -v grep >/dev/null") == 0 + end end local function cn_port() @@ -79,6 +90,10 @@ local function ConnersHua_return() return os.date("%Y-%m-%d %H:%M:%S",fs.mtime("/etc/openclash/ConnersHua_return.yaml")) end +local function chnroute() + return os.date("%Y-%m-%d %H:%M:%S",fs.mtime("/etc/openclash/rule_provider/ChinaIP.yaml")) +end + local function daip() local daip = luci.sys.exec("ifstatus lan 2>/dev/null |jsonfilter -e '@[\"ipv4-address\"][0].address' 2>/dev/null") if not daip or daip == "" then @@ -202,6 +217,17 @@ local function upchecktime() end end +local function historychecktime() + local CONFIG_FILE = string.sub(luci.sys.exec("uci get openclash.config.config_path 2>/dev/null"), 1, -2) + local CONFIG_NAME = fs.basename(CONFIG_FILE) + local HISTORY_PATH = "/etc/openclash/history/" .. CONFIG_NAME + if not nixio.fs.access(HISTORY_PATH) then + return "0" + else + return os.date("%Y-%m-%d %H:%M:%S",fs.mtime(HISTORY_PATH)) + end +end + function download_rule() local filename = luci.http.formvalue("filename") local state = luci.sys.call(string.format('/usr/share/openclash/openclash_download_rule_list.sh "%s" >/dev/null 2>&1',filename)) @@ -218,6 +244,20 @@ function action_restore_config() luci.sys.call("cp '/usr/share/openclash/backup/openclash_custom_domain_dns.list' '/etc/openclash/custom/openclash_custom_domain_dns.list' >/dev/null 2>&1 &") end +function action_one_key_update() + return luci.sys.call("sh /usr/share/openclash/openclash_update.sh 'one_key_update' >/dev/null 2>&1 &") +end + +function action_one_key_update_check() + luci.sys.call("rm -rf /tmp/*_last_version 2>/dev/null") + luci.http.prepare_content("application/json") + luci.http.write_json({ + corever = corever(), + corelv = corelv(), + oplv = oplv(); + }) +end + function action_op_mode() local op_mode = luci.sys.exec("uci get openclash.config.operation_mode 2>/dev/null |tr -d '\n'") luci.http.prepare_content("application/json") @@ -259,7 +299,9 @@ function action_state() lhie1 = lhie1(), ConnersHua = ConnersHua(), ConnersHua_return = ConnersHua_return(), - ipdb = ipdb(); + ipdb = ipdb(), + historychecktime = historychecktime(), + chnroute = chnroute(); }) end @@ -336,6 +378,14 @@ function action_core_game_update() }) end +function action_close_all_connection() + return luci.sys.call("sh /usr/share/openclash/openclash_history_set.sh close_all_conection") +end + +function action_restore_history() + return luci.sys.call("sh /usr/share/openclash/openclash_history_set.sh") +end + function act_ping() local e={} e.index=luci.http.formvalue("index") diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/client.lua b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/client.lua index 23c276a450..cd6305b823 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/client.lua +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/client.lua @@ -45,6 +45,9 @@ function config_check(CONFIG_FILE) rule = luci.sys.call(string.format('egrep "^ {0,}Rule:" "%s" >/dev/null 2>&1',CONFIG_FILE)) if (rule ~= 0) then rule = luci.sys.call(string.format('egrep "^ {0,}rules:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + if (rule ~= 0) then + rule = luci.sys.call(string.format('egrep "^ {0,}script:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + end end end if yaml then diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/config.lua b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/config.lua index ec9fc31805..f5d5f05418 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/config.lua +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/config.lua @@ -43,6 +43,9 @@ function config_check(CONFIG_FILE) rule = luci.sys.call(string.format('egrep "^ {0,}Rule:" "%s" >/dev/null 2>&1',CONFIG_FILE)) if (rule ~= 0) then rule = luci.sys.call(string.format('egrep "^ {0,}rules:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + if (rule ~= 0) then + rule = luci.sys.call(string.format('egrep "^ {0,}script:" "%s" >/dev/null 2>&1',CONFIG_FILE)) + end end end if yaml then @@ -263,137 +266,31 @@ if a then table.remove(e,t)end return a end -local p,r={} -for x,y in ipairs(fs.glob("/etc/openclash/proxy_provider/*"))do -r=fs.stat(y) -if r then -p[x]={} -p[x].name=fs.basename(y) -p[x].mtime=os.date("%Y-%m-%d %H:%M:%S",r.mtime) -p[x].size=i(r.size) -p[x].remove=0 -p[x].enable=false -end +p = SimpleForm("provider_file_manage",translate("Provider File Manage")) +p.reset = false +p.submit = false + +local provider_manage = { + {proxy_mg, rule_mg} +} + +promg = p:section(Table, provider_manage) + +o = promg:option(Button, "proxy_mg") +o.inputtitle = translate("Proxy Provider File List") +o.inputstyle = "reload" +o.write = function() + HTTP.redirect(DISP.build_url("admin", "services", "openclash", "proxy-provider-file-manage")) end -proxy_form=SimpleForm("proxy_provider_file_list",translate("Proxy Provider File List")) -proxy_form.reset=false -proxy_form.submit=false -tb1=proxy_form:section(Table,p) -nm1=tb1:option(DummyValue,"name",translate("File Name")) -mt1=tb1:option(DummyValue,"mtime",translate("Update Time")) -sz1=tb1:option(DummyValue,"size",translate("Size")) - -btndl1 = tb1:option(Button,"download1",translate("Download Configurations")) -btndl1.template="openclash/other_button" -btndl1.render=function(y,x,r) -y.inputstyle="remove" -Button.render(y,x,r) -end -btndl1.write = function (r,x) - local sPath, sFile, fd, block - sPath = "/etc/openclash/proxy_provider/"..p[x].name - sFile = NXFS.basename(sPath) - if fs.isdirectory(sPath) then - fd = io.popen('tar -C "%s" -cz .' % {sPath}, "r") - sFile = sFile .. ".tar.gz" - else - fd = nixio.open(sPath, "r") - end - if not fd then - return - end - HTTP.header('Content-Disposition', 'attachment; filename="%s"' % {sFile}) - HTTP.prepare_content("application/octet-stream") - while true do - block = fd:read(nixio.const.buffersize) - if (not block) or (#block ==0) then - break - else - HTTP.write(block) - end - end - fd:close() - HTTP.close() +o = promg:option(Button, "rule_mg") +o.inputtitle = translate("Rule Providers File List") +o.inputstyle = "reload" +o.write = function() + HTTP.redirect(DISP.build_url("admin", "services", "openclash", "rule-providers-file-manage")) end -btnrm1=tb1:option(Button,"remove1",translate("Remove")) -btnrm1.render=function(p,x,r) -p.inputstyle="reset" -Button.render(p,x,r) -end -btnrm1.write=function(r,x) -local r=fs.unlink("/etc/openclash/proxy_provider/"..luci.openclash.basename(p[x].name)) -if r then table.remove(p,x)end -return r -end - -local g,h={} -for n,m in ipairs(fs.glob("/etc/openclash/rule_provider/*"))do -h=fs.stat(m) -if h then -g[n]={} -g[n].name=fs.basename(m) -g[n].mtime=os.date("%Y-%m-%d %H:%M:%S",h.mtime) -g[n].size=i(h.size) -g[n].remove=0 -g[n].enable=false -end -end - -rule_form=SimpleForm("rule_provider_file_list",translate("Rule Providers File List")) -rule_form.reset=false -rule_form.submit=false -tb2=rule_form:section(Table,g) -nm2=tb2:option(DummyValue,"name",translate("File Name")) -mt2=tb2:option(DummyValue,"mtime",translate("Update Time")) -sz2=tb2:option(DummyValue,"size",translate("Size")) - -btndl2 = tb2:option(Button,"download2",translate("Download Configurations")) -btndl2.template="openclash/other_button" -btndl2.render=function(m,n,h) -m.inputstyle="remove" -Button.render(m,n,h) -end -btndl2.write = function (h,n) - local sPath, sFile, fd, block - sPath = "/etc/openclash/rule_provider/"..g[n].name - sFile = NXFS.basename(sPath) - if fs.isdirectory(sPath) then - fd = io.popen('tar -C "%s" -cz .' % {sPath}, "r") - sFile = sFile .. ".tar.gz" - else - fd = nixio.open(sPath, "r") - end - if not fd then - return - end - HTTP.header('Content-Disposition', 'attachment; filename="%s"' % {sFile}) - HTTP.prepare_content("application/octet-stream") - while true do - block = fd:read(nixio.const.buffersize) - if (not block) or (#block ==0) then - break - else - HTTP.write(block) - end - end - fd:close() - HTTP.close() -end - -btnrm2=tb2:option(Button,"remove2",translate("Remove")) -btnrm2.render=function(g,n,h) -g.inputstyle="reset" -Button.render(g,n,h) -end -btnrm2.write=function(h,n) -local h=fs.unlink("/etc/openclash/rule_provider/"..luci.openclash.basename(g[n].name)) -if h then table.remove(g,n)end -return h -end - -m = SimpleForm("openclash") +m = SimpleForm("config_file_edit",translate("Config File Edit")) m.reset = false m.submit = false @@ -461,4 +358,4 @@ o.write = function() HTTP.redirect(DISP.build_url("admin", "services", "openclash")) end -return ful , form , proxy_form , rule_form , m +return ful , form , p , m diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/groups-config.lua b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/groups-config.lua index c59ea55704..a7f592382c 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/groups-config.lua +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/groups-config.lua @@ -76,6 +76,11 @@ o:depends("type", "url-test") o:depends("type", "fallback") o:depends("type", "load-balance") +o = s:option(Value, "tolerance", translate("Tolerance(ms)")) +o.default = "150" +o.rmempty = true +o:depends("type", "url-test") + o = s:option(DynamicList, "other_group", translate("Other Group")) o.description = font_red..bold_on..translate("The Added Proxy Groups Must Exist Except 'DIRECT' & 'REJECT'")..bold_off..font_off uci:foreach("openclash", "groups", @@ -100,7 +105,7 @@ o.inputtitle = translate("Commit Configurations") o.inputstyle = "apply" o.write = function() m.uci:commit(openclash) - sys.call("/usr/share/openclash/yml_groups_name_ch.sh start") + sys.call("/usr/share/openclash/yml_groups_name_ch.sh") luci.http.redirect(m.redirect) end diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/proxy-provider-file-manage.lua b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/proxy-provider-file-manage.lua new file mode 100644 index 0000000000..5576994b6a --- /dev/null +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/proxy-provider-file-manage.lua @@ -0,0 +1,114 @@ + +local proxy_form +local openclash = "openclash" +local NXFS = require "nixio.fs" +local SYS = require "luci.sys" +local HTTP = require "luci.http" +local DISP = require "luci.dispatcher" +local UTIL = require "luci.util" +local fs = require "luci.openclash" +local uci = require "luci.model.uci".cursor() + +local function i(e) +local t=0 +local a={' KB',' MB',' GB',' TB'} +repeat +e=e/1024 +t=t+1 +until(e<=1024) +return string.format("%.1f",e)..a[t] +end + +local p,r={} +for x,y in ipairs(fs.glob("/etc/openclash/proxy_provider/*"))do +r=fs.stat(y) +if r then +p[x]={} +p[x].name=fs.basename(y) +p[x].mtime=os.date("%Y-%m-%d %H:%M:%S",r.mtime) +p[x].size=i(r.size) +p[x].remove=0 +p[x].enable=false +end +end + +proxy_form=SimpleForm("proxy_provider_file_list",translate("Proxy Provider File List")) +proxy_form.reset=false +proxy_form.submit=false +tb1=proxy_form:section(Table,p) +nm1=tb1:option(DummyValue,"name",translate("File Name")) +mt1=tb1:option(DummyValue,"mtime",translate("Update Time")) +sz1=tb1:option(DummyValue,"size",translate("Size")) + +btndl1 = tb1:option(Button,"download1",translate("Download Configurations")) +btndl1.template="openclash/other_button" +btndl1.render=function(y,x,r) +y.inputstyle="remove" +Button.render(y,x,r) +end +btndl1.write = function (r,x) + local sPath, sFile, fd, block + sPath = "/etc/openclash/proxy_provider/"..p[x].name + sFile = NXFS.basename(sPath) + if fs.isdirectory(sPath) then + fd = io.popen('tar -C "%s" -cz .' % {sPath}, "r") + sFile = sFile .. ".tar.gz" + else + fd = nixio.open(sPath, "r") + end + if not fd then + return + end + HTTP.header('Content-Disposition', 'attachment; filename="%s"' % {sFile}) + HTTP.prepare_content("application/octet-stream") + while true do + block = fd:read(nixio.const.buffersize) + if (not block) or (#block ==0) then + break + else + HTTP.write(block) + end + end + fd:close() + HTTP.close() +end + +btnrm1=tb1:option(Button,"remove1",translate("Remove")) +btnrm1.render=function(p,x,r) +p.inputstyle="reset" +Button.render(p,x,r) +end +btnrm1.write=function(r,x) +local r=fs.unlink("/etc/openclash/proxy_provider/"..luci.openclash.basename(p[x].name)) +if r then table.remove(p,x)end +return r +end + +local t = { + {Refresh, Delete_all, Apply} +} + +a = proxy_form:section(Table, t) + +o = a:option(Button, "Refresh") +o.inputtitle = translate("Refresh Page") +o.inputstyle = "apply" +o.write = function() + HTTP.redirect(DISP.build_url("admin", "services", "openclash", "proxy-provider-file-manage")) +end + +o = a:option(Button, "Delete_all") +o.inputtitle = translate("Delete All File") +o.inputstyle = "remove" +o.write = function() + luci.sys.call("rm -rf /etc/openclash/proxy_provider/* >/dev/null 2>&1") +end + +o = a:option(Button, "Apply") +o.inputtitle = translate("Back Configurations") +o.inputstyle = "reset" +o.write = function() + HTTP.redirect(DISP.build_url("admin", "services", "openclash", "config")) +end + +return proxy_form diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/rule-providers-config.lua b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/rule-providers-config.lua index 4f32eda867..b4095ee84a 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/rule-providers-config.lua +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/rule-providers-config.lua @@ -113,7 +113,7 @@ o.inputtitle = translate("Commit Configurations") o.inputstyle = "apply" o.write = function() m.uci:commit(openclash) - sys.call("/usr/share/openclash/yml_groups_name_ch.sh start") + sys.call("/usr/share/openclash/yml_groups_name_ch.sh") luci.http.redirect(m.redirect) end diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/rule-providers-file-manage.lua b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/rule-providers-file-manage.lua new file mode 100644 index 0000000000..5283a2b249 --- /dev/null +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/model/cbi/openclash/rule-providers-file-manage.lua @@ -0,0 +1,114 @@ + +local rule_form +local openclash = "openclash" +local NXFS = require "nixio.fs" +local SYS = require "luci.sys" +local HTTP = require "luci.http" +local DISP = require "luci.dispatcher" +local UTIL = require "luci.util" +local fs = require "luci.openclash" +local uci = require "luci.model.uci".cursor() + +local function i(e) +local t=0 +local a={' KB',' MB',' GB',' TB'} +repeat +e=e/1024 +t=t+1 +until(e<=1024) +return string.format("%.1f",e)..a[t] +end + +local g,h={} +for n,m in ipairs(fs.glob("/etc/openclash/rule_provider/*"))do +h=fs.stat(m) +if h then +g[n]={} +g[n].name=fs.basename(m) +g[n].mtime=os.date("%Y-%m-%d %H:%M:%S",h.mtime) +g[n].size=i(h.size) +g[n].remove=0 +g[n].enable=false +end +end + +rule_form=SimpleForm("rule_provider_file_list",translate("Rule Providers File List")) +rule_form.reset=false +rule_form.submit=false +tb2=rule_form:section(Table,g) +nm2=tb2:option(DummyValue,"name",translate("File Name")) +mt2=tb2:option(DummyValue,"mtime",translate("Update Time")) +sz2=tb2:option(DummyValue,"size",translate("Size")) + +btndl2 = tb2:option(Button,"download2",translate("Download Configurations")) +btndl2.template="openclash/other_button" +btndl2.render=function(m,n,h) +m.inputstyle="remove" +Button.render(m,n,h) +end +btndl2.write = function (h,n) + local sPath, sFile, fd, block + sPath = "/etc/openclash/rule_provider/"..g[n].name + sFile = NXFS.basename(sPath) + if fs.isdirectory(sPath) then + fd = io.popen('tar -C "%s" -cz .' % {sPath}, "r") + sFile = sFile .. ".tar.gz" + else + fd = nixio.open(sPath, "r") + end + if not fd then + return + end + HTTP.header('Content-Disposition', 'attachment; filename="%s"' % {sFile}) + HTTP.prepare_content("application/octet-stream") + while true do + block = fd:read(nixio.const.buffersize) + if (not block) or (#block ==0) then + break + else + HTTP.write(block) + end + end + fd:close() + HTTP.close() +end + +btnrm2=tb2:option(Button,"remove2",translate("Remove")) +btnrm2.render=function(g,n,h) +g.inputstyle="reset" +Button.render(g,n,h) +end +btnrm2.write=function(h,n) +local h=fs.unlink("/etc/openclash/rule_provider/"..luci.openclash.basename(g[n].name)) +if h then table.remove(g,n)end +return h +end + +local t = { + {Refresh, Delete_all, Apply} +} + +a = rule_form:section(Table, t) + +o = a:option(Button, "Refresh") +o.inputtitle = translate("Refresh Page") +o.inputstyle = "apply" +o.write = function() + HTTP.redirect(DISP.build_url("admin", "services", "openclash", "rule-providers-file-manage")) +end + +o = a:option(Button, "Delete_all") +o.inputtitle = translate("Delete All File") +o.inputstyle = "remove" +o.write = function() + luci.sys.call("rm -rf /etc/openclash/rule_provider/* >/dev/null 2>&1") +end + +o = a:option(Button, "Apply") +o.inputtitle = translate("Back Configurations") +o.inputstyle = "reset" +o.write = function() + HTTP.redirect(DISP.build_url("admin", "services", "openclash", "config")) +end + +return rule_form 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 03886f4ea1..971b72efd2 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 @@ -33,6 +33,7 @@ end s:tab("dashboard", translate("Dashboard Settings")) s:tab("rules_update", translate("Rules Update")) s:tab("geo_update", translate("GEOIP Update")) +s:tab("chnr_update", translate("Chnroute Update")) s:tab("version_update", translate("Version Update")) s:tab("debug", translate("Debug Logs")) @@ -170,7 +171,6 @@ o = s:taboption("dns", ListValue, "ipv6_enable", translate("Enable ipv6 Resolve" o.description = font_red..bold_on..translate("Enable Clash 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")) @@ -218,7 +218,7 @@ end end o = s:taboption("dns", Value, "custom_domain_dns_server", translate("Specify DNS Server")) -o.description = translate("Specify DNS Server For List, Only One IP Server Address Support") +o.description = translate("Specify DNS Server For List and Server Nodes With Fake-IP Mode, Only One IP Server Address Support") o.default="114.114.114.114" o.placeholder = translate("114.114.114.114 or 127.0.0.1#5300") o:depends("dns_advanced_setting", "1") @@ -361,12 +361,6 @@ o:depends("rule_source", "lhie1") end file:seek("set") o = s:taboption("rules", ListValue, "PayPal", translate("PayPal")) -o:depends("rule_source", "lhie1") - for l in file:lines() do - o:value(l) - end - file:seek("set") -o = s:taboption("rules", ListValue, "Netease_Music", translate("Netease Music")) o:depends("rule_source", "lhie1") for l in file:lines() do o:value(l) @@ -465,6 +459,42 @@ o.write = function() HTTP.redirect(DISP.build_url("admin", "services", "openclash")) end +if op_mode == "redir-host" then +o = s:taboption("chnr_update", ListValue, "chnr_auto_update", translate("Auto Update")) +o.description = translate("Auto Update Chnroute Lists") +o:value("0", translate("Disable")) +o:value("1", translate("Enable")) +o.default=0 + +o = s:taboption("chnr_update", ListValue, "chnr_update_week_time", translate("Update Time (Every Week)")) +o:value("*", translate("Every Day")) +o:value("1", translate("Every Monday")) +o:value("2", translate("Every Tuesday")) +o:value("3", translate("Every Wednesday")) +o:value("4", translate("Every Thursday")) +o:value("5", translate("Every Friday")) +o:value("6", translate("Every Saturday")) +o:value("0", translate("Every Sunday")) +o.default=1 + +o = s:taboption("chnr_update", ListValue, "chnr_update_day_time", translate("Update time (every day)")) +for t = 0,23 do +o:value(t, t..":00") +end +o.default=0 + +o = s:taboption("chnr_update", Button, translate("Chnroute Lists Update")) +o.title = translate("Update Chnroute Lists") +o.inputtitle = translate("Check And Update") +o.inputstyle = "reload" +o.write = function() + m.uci:set("openclash", "config", "enable", 1) + m.uci:commit("openclash") + SYS.call("/usr/share/openclash/openclash_chnroute.sh >/dev/null 2>&1 &") + HTTP.redirect(DISP.build_url("admin", "services", "openclash")) +end +end + ---- Dashboard Settings local lan_ip=SYS.exec("uci get network.lan.ipaddr 2>/dev/null |awk -F '/' '{print $1}' 2>/dev/null |tr -d '\n'") local cn_port=SYS.exec("uci get openclash.config.cn_port 2>/dev/null |tr -d '\n'") diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/state.htm b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/state.htm index 0ae9314d94..1bf0200552 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/state.htm +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/state.htm @@ -6,8 +6,9 @@ 组件的状态显示,运行前请确保各项目显示正常,需要更新请到全局设置页面操作

- GEOIP(By MaxMind)数据库日期 <%:Collecting data...%> lhie1 规则更新日期 <%:Collecting data...%> + 策略组节点选择 备份日期 <%:Collecting data...%> lhie1 规则更新日期 <%:Collecting data...%> ConnersHua 规则更新日期 <%:Collecting data...%> ConnersHua 回国规则更新日期 <%:Collecting data...%> + 大陆IP白名单 更新日期 <%:Collecting data...%> GEOIP(By MaxMind)数据库日期 <%:Collecting data...%> @@ -16,12 +17,21 @@ var lhie1 = document.getElementById('_lhie1'); var ConnersHua = document.getElementById('_ConnersHua'); var ConnersHua_return = document.getElementById('_ConnersHua_return'); + var chnroute = document.getElementById('_chnroute'); + var historychecktime = document.getElementById('_historychecktime'); XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "state")%>', null, function(x, status) { if ( x && x.status == 200 ) { ipdb.innerHTML = status.ipdb ? ""+status.ipdb+"" : ""+"<%:File Not Exist%>"+""; lhie1.innerHTML = status.lhie1 ? ""+status.lhie1+"" : ""+"<%:File Not Exist%>"+""; ConnersHua.innerHTML = status.ConnersHua ? ""+status.ConnersHua+"" : ""+"<%:File Not Exist%>"+""; ConnersHua_return.innerHTML = status.ConnersHua_return ? ""+status.ConnersHua_return+"" : ""+"<%:File Not Exist%>"+""; + chnroute.innerHTML = status.chnroute ? ""+status.chnroute+"" : ""+"<%:File Not Exist%>"+""; + if ( status.historychecktime != "0" ) { + historychecktime.innerHTML = ""+status.historychecktime+""; + } + else { + historychecktime.innerHTML = ""+"<%:暂未备份%>"+""; + } } }); XHR.poll(10, '<%=luci.dispatcher.build_url("admin", "services", "openclash", "state")%>', null, function(x, status) { @@ -30,6 +40,13 @@ lhie1.innerHTML = status.lhie1 ? ""+status.lhie1+"" : ""+"<%:File Not Exist%>"+""; ConnersHua.innerHTML = status.ConnersHua ? ""+status.ConnersHua+"" : ""+"<%:File Not Exist%>"+""; ConnersHua_return.innerHTML = status.ConnersHua_return ? ""+status.ConnersHua_return+"" : ""+"<%:File Not Exist%>"+""; + chnroute.innerHTML = status.chnroute ? ""+status.chnroute+"" : ""+"<%:File Not Exist%>"+""; + if ( status.historychecktime != "0" ) { + historychecktime.innerHTML = ""+status.historychecktime+""; + } + else { + historychecktime.innerHTML = ""+"<%:暂未备份%>"+""; + } } }); //]]> \ No newline at end of file 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 80e7293fa5..7870fea865 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 @@ -31,6 +31,7 @@ OpenClash 守护程序 <%:Collecting data...%> 控制面板登录端口 <%:Collecting data...%> OpenClash 运行模式 <%:Collecting data...%> 控制面板登录密钥 <%:Collecting data...%> Yacd 控制面板 <%:Collecting data...%> Dashboard 控制面板 <%:Collecting data...%> + @@ -44,6 +45,9 @@ var dase = document.getElementById('_dase'); var dapo = document.getElementById('_dapo'); var clashversion = document.getElementById('_clashversion'); + var close_all_connection = document.getElementById('_close_all_connection'); + var restore_history = document.getElementById('_restore_history'); + var get_history = document.getElementById('_get_history'); XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "services", "openclash", "status")%>', null, function(x, status) { if ( x && x.status == 200 ) { @@ -97,6 +101,43 @@ } } + function b_close_all_connection(btn) + { + btn.disabled = true; + btn.value = '<%:正在重置...%>'; + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "close_all_connection")%>', null, function(x, status) { + if ( x && x.status == 200 ) { + btn.disabled = false; + btn.value = '<%:重置所有链接%>'; + } + return false; + }); + } + function b_restore_history(btn) + { + btn.disabled = true; + btn.value = '<%:正在还原...%>'; + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "restore_history")%>', null, function(x, status) { + if ( x && x.status == 200 ) { + btn.disabled = false; + btn.value = '<%:手动还原策略组选择%>'; + } + return false; + }); + } + function b_get_history(btn) + { + btn.disabled = true; + btn.value = '<%:正在保存...%>'; + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "get_history")%>', null, function(x, status) { + if ( x && x.status == 200 ) { + btn.disabled = false; + btn.value = '<%:手动保存策略组选择%>'; + } + return false; + }); + } + function ycad_dashboard(btn) { XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "status")%>', status.cn_port, function(x, status) { diff --git a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/update.htm b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/update.htm index b87fc4f2af..1db8cefc23 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/update.htm +++ b/package/ctcgfw/luci-app-openclash/files/usr/lib/lua/luci/view/openclash/update.htm @@ -44,10 +44,15 @@
- +
+

<%:Collecting data...%>

+
+

+ <%:Collecting data...%> +

@@ -75,6 +80,7 @@ var ma_core_game_up = document.getElementById('ma_core_game_up'); var ma_op_up = document.getElementById('ma_op_up'); var restore = document.getElementById('restore'); + var one_key_update = document.getElementById('one_key_update'); XHR.poll(6, '<%=luci.dispatcher.build_url("admin", "services", "openclash", "update")%>', null, function(x, status) { if ( x && x.status == 200 ) { @@ -181,6 +187,7 @@ ma_core_game_up.innerHTML = ''; ma_op_up.innerHTML = ''; restore.innerHTML = ''; + one_key_update.innerHTML = ''; function winOpen(url) { @@ -307,7 +314,7 @@ return false; } - function restore_config(btn) + function restore_config(btn) { btn.value = '<%:还原默认配置%>'; btn.disabled = true; @@ -329,6 +336,39 @@ return false; } + function all_one_key_update(btn) + { + btn.value = '<%:一键检查更新%>'; + btn.disabled = true; + var r = confirm("确定要一键检查并更新所有内核及插件吗?") + if (r == true) { + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "one_key_update_check")%>', null, function(x, status) { + if ( x && x.status == 200 ) { + if ( status.corever != "0\n" ) { + XHR.get('<%=luci.dispatcher.build_url("admin", "services", "openclash", "one_key_update")%>', null, function(x, status) { + if ( x && x.status == 200 ) { + alert('一键检查更新正在进行...') + } + else { + alert('一键检查更新失败,请稍后再试!') + } + }); + } + else { + alert('未选择编译版本,请到常规设置标签中配置!') + } + } + else { + alert('一键检查更新失败,请稍后再试!') + } + }); + } + else { + } + btn.disabled = false; + return false; + } + XHR.poll(7, '<%=luci.dispatcher.build_url("admin", "services", "openclash", "startlog")%>', status.startlog, function(x, status) { if ( x && x.status == 200 ) { if ( status.startlog == "\n" || status.startlog == "" ) { diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/cfg_servers_address_fake_filter.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/cfg_servers_address_fake_filter.sh index 8dd977b26f..fa127187fe 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/cfg_servers_address_fake_filter.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/cfg_servers_address_fake_filter.sh @@ -1,6 +1,7 @@ #!/bin/sh +. /usr/share/openclash/openclash_ps.sh -status=$(ps|grep -c /usr/share/openclash/cfg_servers_address_fake_filter.sh) +status=$(unify_ps_status "cfg_servers_address_fake_filter.sh") [ "$status" -gt "3" ] && exit 0 START_LOG="/tmp/openclash_start.log" diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/cfg_unused_servers_del.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/cfg_unused_servers_del.sh index 5f91a33336..61d8918b2f 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/cfg_unused_servers_del.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/cfg_unused_servers_del.sh @@ -1,5 +1,6 @@ #!/bin/sh . /lib/functions.sh +. /usr/share/openclash/openclash_ps.sh cfg_unused_servers_del() { @@ -15,7 +16,7 @@ cfg_unused_servers_del() uci delete openclash."$section" 2>/dev/null } -status=$(ps|grep -c /usr/share/openclash/cfg_unused_servers_del.sh) +status=$(unify_ps_status "cfg_unused_servers_del.sh") [ "$status" -gt "3" ] && exit 0 config_load "openclash" config_foreach cfg_unused_servers_del "servers" diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/clash_version.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/clash_version.sh index 31c14e2888..0fab04c87b 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/clash_version.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/clash_version.sh @@ -1,7 +1,8 @@ #!/bin/sh +. /usr/share/openclash/openclash_ps.sh #禁止多个实例 -status=$(ps|grep -c /usr/share/openclash/clash_version.sh) +status=$(unify_ps_status "clash_version.sh") [ "$status" -gt "3" ] && exit 0 CKTIME=$(date "+%Y-%m-%d-%H") diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash.sh index bbe600a337..cca7f3a683 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash.sh @@ -1,7 +1,8 @@ #!/bin/bash . /lib/functions.sh +. /usr/share/openclash/openclash_ps.sh -status=$(ps|grep -c /usr/share/openclash/openclash.sh) +status=$(unify_ps_status "openclash.sh") [ "$status" -gt 3 ] && exit 0 START_LOG="/tmp/openclash_start.log" @@ -27,10 +28,11 @@ urlencode() { } kill_watchdog() { - watchdog_pids=$(ps |grep openclash_watchdog.sh |grep -v grep |awk '{print $1}' 2>/dev/null) - for watchdog_pid in $watchdog_pids; do - kill -9 "$watchdog_pid" >/dev/null 2>&1 - done + + watchdog_pids=$(unify_ps_pids "openclash_watchdog.sh") + for watchdog_pid in $watchdog_pids; do + kill -9 "$watchdog_pid" >/dev/null 2>&1 + done } config_download() diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_chnroute.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_chnroute.sh new file mode 100644 index 0000000000..f609dfd5ef --- /dev/null +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_chnroute.sh @@ -0,0 +1,57 @@ +#!/bin/sh +. /usr/share/openclash/openclash_ps.sh + + status=$(unify_ps_status "openclash_chnroute.sh") + [ "$status" -gt 3 ] && exit 0 + + START_LOG="/tmp/openclash_start.log" + LOGTIME=$(date "+%Y-%m-%d %H:%M:%S") + LOG_FILE="/tmp/openclash.log" + HTTP_PORT=$(uci get openclash.config.http_port 2>/dev/null) + PROXY_ADDR=$(uci get network.lan.ipaddr 2>/dev/null |awk -F '/' '{print $1}' 2>/dev/null) + china_ip_route=$(uci get openclash.config.china_ip_route 2>/dev/null) + + if [ -s "/tmp/openclash.auth" ]; then + PROXY_AUTH=$(cat /tmp/openclash.auth |awk -F '- ' '{print $2}' |sed -n '1p' 2>/dev/null) + fi + echo "开始下载大陆IP白名单..." >$START_LOG + if pidof clash >/dev/null; then + curl -sL --connect-timeout 10 --retry 2 -x http://$PROXY_ADDR:$HTTP_PORT -U "$PROXY_AUTH" https://raw.githubusercontent.com/DivineEngine/Profiles/master/Clash/RuleSet/Extra/ChinaIP.yaml -o /tmp/ChinaIP.yaml >/dev/null 2>&1 + else + curl -sL --connect-timeout 10 --retry 2 https://raw.githubusercontent.com/DivineEngine/Profiles/master/Clash/RuleSet/Extra/ChinaIP.yaml -o /tmp/ChinaIP.yaml >/dev/null 2>&1 + fi + if [ "$?" -eq "0" ] && [ -s "/tmp/ChinaIP.yaml" ]; then + echo "大陆IP白名单下载成功,检查版本是否更新..." >$START_LOG + cmp -s /tmp/ChinaIP.yaml /etc/openclash/rule_provider/ChinaIP.yaml + if [ "$?" -ne "0" ]; then + status=$(unify_ps_prevent) + while ( [ "$status" -gt 1 ] ) + do + sleep 5 + status=$(unify_ps_prevent) + done + [ "$china_ip_route" -eq 1 ] && /etc/init.d/openclash stop + echo "大陆IP白名单有更新,开始替换旧版本..." >$START_LOG\ + && mv /tmp/ChinaIP.yaml /etc/openclash/rule_provider/ChinaIP.yaml >/dev/null 2>&1\ + && echo "删除下载缓存..." >$START_LOG\ + && rm -rf /tmp/ChinaIP.yaml >/dev/null 2>&1\ + && rm -rf /etc/openclash/china_ip_route.ipset >/dev/null 2>&1 + [ "$china_ip_route" -eq 1 ] && /etc/init.d/openclash start + echo "大陆IP白名单更新成功!" >$START_LOG + echo "${LOGTIME} Chnroute Lists Update Successful" >>$LOG_FILE + sleep 10 + echo "" >$START_LOG + else + echo "大陆IP白名单没有更新,停止继续操作..." >$START_LOG + echo "${LOGTIME} Updated Chnroute Lists No Change, Do Nothing" >>$LOG_FILE + rm -rf /tmp/ChinaIP.yaml >/dev/null 2>&1 + sleep 5 + echo "" >$START_LOG + fi + else + echo "大陆IP白名单下载失败,请检查网络或稍后再试!" >$START_LOG + rm -rf /tmp/ChinaIP.yaml >/dev/null 2>&1 + echo "${LOGTIME} Chnroute Lists Update Error" >>$LOG_FILE + sleep 10 + echo "" >$START_LOG + fi \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_core.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_core.sh index 76c2214344..b5590cda2b 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_core.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_core.sh @@ -5,11 +5,12 @@ START_LOG="/tmp/openclash_start.log" LOGTIME=$(date "+%Y-%m-%d %H:%M:%S") LOG_FILE="/tmp/openclash.log" CORE_TYPE="$1" -[ -z "$CORE_TYPE" ] && CORE_TYPE="Dev" +[ -z "$CORE_TYPE" ] || [ "$1" = "one_key_update" ] && CORE_TYPE="Dev" en_mode=$(uci get openclash.config.en_mode 2>/dev/null) CPU_MODEL=$(uci get openclash.config.core_version 2>/dev/null) HTTP_PORT=$(uci get openclash.config.http_port 2>/dev/null) PROXY_ADDR=$(uci get network.lan.ipaddr 2>/dev/null |awk -F '/' '{print $1}' 2>/dev/null) +mkdir -p /etc/openclash/core [ -s "/tmp/openclash.auth" ] && { PROXY_AUTH=$(cat /tmp/openclash.auth |awk -F '- ' '{print $2}' |sed -n '1p' 2>/dev/null) @@ -19,6 +20,13 @@ case $CORE_TYPE in "Tun") CORE_CV=$(/etc/openclash/core/clash_tun -v 2>/dev/null |awk -F ' ' '{print $2}') CORE_LV=$(sed -n 2p /tmp/clash_last_version 2>/dev/null) + if [ -z "$CORE_LV" ]; then + echo "获取【Tun】内核最新版本信息失败,请稍后再试..." >$START_LOG + echo "${LOGTIME} 【Tun】Core Version Check Error, Please Try Again After A few seconds" >>$LOG_FILE + sleep 5 + echo "" >$START_LOG + exit 0 + fi if [ "$en_mode" = "fake-ip-tun" ] || [ "$en_mode" = "redir-host-tun" ] || [ "$en_mode" = "redir-host-mix" ] || [ "$en_mode" = "fake-ip-mix" ]; then if_restart=1 fi @@ -39,6 +47,7 @@ case $CORE_TYPE in esac [ -z "$(pidof clash)" ] && if_restart=0 +[ -n "$2" ] || [ "$1" = "one_key_update" ] && if_restart=0 if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then if [ "$CPU_MODEL" != 0 ]; then @@ -72,6 +81,7 @@ if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then esac fi if [ "$?" -eq "0" ]; then + echo "【"$CORE_TYPE"】版本内核下载成功,开始更新..." >$START_LOG case $CORE_TYPE in "Tun") [ -s "/tmp/clash_tun.gz" ] && { @@ -84,7 +94,8 @@ if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then ;; "Game") [ -s "/tmp/clash_game.tar.gz" ] && { - tar zxvf /tmp/clash_game.tar.gz -C /tmp >/dev/null 2>&1 && mv /tmp/clash /tmp/clash_game >/dev/null 2>&1 + tar zxvf /tmp/clash_game.tar.gz -C /tmp >/dev/null 2>&1 + mv /tmp/clash /tmp/clash_game >/dev/null 2>&1 rm -rf /tmp/clash_game.tar.gz >/dev/null 2>&1 rm -rf /etc/openclash/core/clash_game >/dev/null 2>&1 chmod 4755 /tmp/clash_game >/dev/null 2>&1 @@ -93,19 +104,36 @@ if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then ;; *) [ -s "/tmp/clash.tar.gz" ] && { - tar zxvf /tmp/clash.tar.gz -C /tmp - rm -rf /tmp/clash.tar.gz >/dev/null 2>&1 rm -rf /etc/openclash/core/clash >/dev/null 2>&1 - chmod 4755 /tmp/clash >/dev/null 2>&1 - chown root:root /tmp/clash >/dev/null 2>&1 + tar zxvf /tmp/clash.tar.gz -C /etc/openclash/core + rm -rf /tmp/clash.tar.gz >/dev/null 2>&1 + chmod 4755 /etc/openclash/core/clash >/dev/null 2>&1 + chown root:root /etc/openclash/core/clash >/dev/null 2>&1 } esac - mkdir -p /etc/openclash/core + + if [ "$?" -ne "0" ]; then + echo "【"$CORE_TYPE"】版本内核更新失败,请检查网络或稍后再试!" >$START_LOG + echo "${LOGTIME} OpenClash 【"$CORE_TYPE"】 Core Update Error" >>$LOG_FILE + case $CORE_TYPE in + "Tun") + rm -rf /tmp/clash_tun >/dev/null 2>&1 + ;; + "Game") + rm -rf /tmp/clash_game >/dev/null 2>&1 + ;; + *) + esac + sleep 5 + echo "" >$START_LOG + exit 0 + fi + if [ "$if_restart" -eq 1 ]; then kill -9 "$(pidof clash|sed 's/$//g')" 2>/dev/null /etc/init.d/openclash stop fi - echo "【"$CORE_TYPE"】版本内核下载成功,开始更新..." >$START_LOG + case $CORE_TYPE in "Tun") mv /tmp/clash_tun /etc/openclash/core/clash_tun >/dev/null 2>&1 @@ -114,12 +142,15 @@ if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then mv /tmp/clash_game /etc/openclash/core/clash_game >/dev/null 2>&1 ;; *) - mv /tmp/clash /etc/openclash/core/clash >/dev/null 2>&1 esac if [ "$?" -eq "0" ]; then echo "【"$CORE_TYPE"】版本内核更新成功!" >$START_LOG echo "${LOGTIME} OpenClash 【"$CORE_TYPE"】 Core Update Successful" >>$LOG_FILE sleep 3 + if [ -n "$2" ] || [ "$1" = "one_key_update" ]; then + uci set openclash.config.config_reload=0 + uci commit openclash + fi [ "$if_restart" -eq 1 ] && /etc/init.d/openclash start echo "" >$START_LOG else @@ -133,7 +164,6 @@ if [ "$CORE_CV" != "$CORE_LV" ] || [ -z "$CORE_CV" ]; then rm -rf /tmp/clash_game >/dev/null 2>&1 ;; *) - rm -rf /tmp/clash >/dev/null 2>&1 esac sleep 5 echo "" >$START_LOG diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_custom_domain_dns.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_custom_domain_dns.sh index 86ec158374..c2021a8855 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_custom_domain_dns.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_custom_domain_dns.sh @@ -1,6 +1,7 @@ #!/bin/sh +. /usr/share/openclash/openclash_ps.sh -status=$(ps|grep -c /usr/share/openclash/openclash_custom_domain_dns.sh) +status=$(unify_ps_status "openclash_custom_domain_dns.sh") [ "$status" -gt "3" ] && exit 0 START_LOG="/tmp/openclash_start.log" diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_debug.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_debug.sh index c7950d0e09..d53a38a7dc 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_debug.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_debug.sh @@ -1,7 +1,8 @@ #!/bin/bash . /lib/functions.sh +. /usr/share/openclash/openclash_ps.sh -status=$(ps|grep -c /usr/share/openclash/openclash_debug.sh) +status=$(unify_ps_status "openclash_debug.sh") [ "$status" -gt "3" ] && exit 0 DEBUG_LOG="/tmp/openclash_debug.log" diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_fake_filter.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_fake_filter.sh index 5b9e1dce01..10c6165ace 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_fake_filter.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_fake_filter.sh @@ -32,15 +32,19 @@ cfg_server_address() config_get "server" "$section" "server" "" IFIP=$(echo $server |grep -E "^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$") - if [ -z "$IFIP" ] && [ ! -z "$server" ]; then - echo "server=/$server/114.114.114.114" >> "$SER_FAKE_FILTER_FILE" + if [ -z "$IFIP" ] && [ ! -z "$server" ] && [ -z "$(grep "/$server/" "$SER_FAKE_FILTER_FILE" 2>/dev/null)" ]; then + echo "server=/$server/$custom_domain_dns_server" >> "$SER_FAKE_FILTER_FILE" else return fi } -#Fake下正确检测节点延迟 +#Fake下正确检测节点延迟及获取真实地址 rm -rf "$SER_FAKE_FILTER_FILE" 2>/dev/null +custom_domain_dns_server=$(uci get openclash.config.custom_domain_dns_server 2>/dev/null) + [ -z "$custom_domain_dns_server" ] && { + custom_domain_dns_server="114.114.114.114" + } config_load "openclash" config_foreach cfg_server_address "servers" \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_history_get.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_history_get.sh index 1be9c5bc56..6099cbfc2b 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_history_get.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_history_get.sh @@ -1,9 +1,10 @@ #!/bin/sh +. /usr/share/openclash/openclash_ps.sh CURL_GROUP_CACHE="/tmp/openclash_history_gorup.json" CURL_NOW_CACHE="/tmp/openclash_history_now.json" CURL_CACHE="/tmp/openclash_history_curl.json" -CONFIG_FILE=$(ps -w|grep /etc/openclash/clash 2>/dev/null |grep -v grep |awk -F '-f ' '{print $2}' 2>/dev/null) +CONFIG_FILE=$(unify_ps_cfgname) CONFIG_NAME=$(echo "$CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null) HISTORY_PATH="/etc/openclash/history/$CONFIG_NAME" SECRET=$(uci get openclash.config.dashboard_password 2>/dev/null) diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_history_set.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_history_set.sh index 71472562fe..9af4c68b19 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_history_set.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_history_set.sh @@ -1,4 +1,5 @@ -#!/bin/bash +#!/bin/sh +. /lib/functions.sh CONFIG_FILE=$(uci get openclash.config.config_path 2>/dev/null) CONFIG_NAME=$(echo "$CONFIG_FILE" |awk -F '/' '{print $5}' 2>/dev/null) @@ -35,8 +36,12 @@ restore_history() { curl -m 5 --retry 2 -H "Authorization: Bearer ${SECRET}" -H "Content-Type:application/json" -X PUT -d '{"name":"'"$NOW_NAME"'"}' http://"$LAN_IP":"$PORT"/proxies/"$GROUP_NAME" >/dev/null 2>&1 } +close_all_conection() { + curl -m 5 --retry 2 -H "Authorization: Bearer ${SECRET}" -H "Content-Type:application/json" -X DELETE http://"$LAN_IP":"$PORT"/connections >/dev/null 2>&1 +} + if [ -s "$HISTORY_PATH" ]; then - cat $HISTORY_PATH |while read line + cat "$HISTORY_PATH" |while read line do GROUP_NAME=$(echo $line |awk -F '#*#' '{print $1}') if [ "$GROUP_NAME" != "GLOBAL" ]; then @@ -49,4 +54,5 @@ if [ -s "$HISTORY_PATH" ]; then restore_history fi done >/dev/null 2>&1 + close_all_conection fi \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_ipdb.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_ipdb.sh index edaafa189b..8bff190b4a 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_ipdb.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_ipdb.sh @@ -1,5 +1,7 @@ #!/bin/sh - status=$(ps|grep -c /usr/share/openclash/openclash_ipdb.sh) +. /usr/share/openclash/openclash_ps.sh + + status=$(unify_ps_status "openclash_ipdb.sh") [ "$status" -gt 3 ] && exit 0 START_LOG="/tmp/openclash_start.log" @@ -20,11 +22,11 @@ echo "GEOIP 数据库下载成功,检查数据库版本是否更新..." >$START_LOG cmp -s /tmp/Country.mmdb /etc/openclash/Country.mmdb if [ "$?" -ne "0" ]; then - status=$(ps |grep -v openclash_watchdog |grep -c openclash.sh) + status=$(unify_ps_prevent) while ( [ "$status" -gt 1 ] ) do sleep 5 - status=$(ps |grep -v openclash_watchdog |grep -c openclash.sh) + status=$(unify_ps_prevent) done /etc/init.d/openclash stop echo "数据库版本有更新,开始替换数据库版本..." >$START_LOG\ diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_ps.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_ps.sh new file mode 100644 index 0000000000..ee93fcd040 --- /dev/null +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_ps.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +unify_ps_status() { + if [ "$(ps --version 2>&1 |grep -c procps-ng)" -eq 1 ];then + echo "$(ps -ef |grep -v grep |grep -c "$1")" + else + echo "$(ps |grep -v grep |grep -c "$1")" + fi +} + +unify_ps_pids() { + if [ "$(ps --version 2>&1 |grep -c procps-ng)" -eq 1 ];then + echo "$(ps -ef |grep "$1" |grep -v grep |awk '{print $2}' 2>/dev/null)" + else + echo "$(ps |grep "$1" |grep -v grep |awk '{print $1}' 2>/dev/null)" + fi +} + +unify_ps_prevent() { + if [ "$(ps --version 2>&1 |grep -c procps-ng)" -eq 1 ];then + echo "$(ps -ef |grep -v openclash_watchdog |grep -c openclash.sh 2>/dev/null)" + else + echo "$(ps |grep -v openclash_watchdog |grep -c openclash.sh 2>/dev/null)" + fi +} + +unify_ps_cfgname() { + if [ "$(ps --version 2>&1 |grep -c procps-ng)" -eq 1 ];then + echo "$(ps -efw |grep /etc/openclash/clash 2>/dev/null |grep -v grep |awk -F '-f ' '{print $2}' 2>/dev/null)" + else + echo "$(ps -w |grep /etc/openclash/clash 2>/dev/null |grep -v grep |awk -F '-f ' '{print $2}' 2>/dev/null)" + fi +} \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_rule.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_rule.sh index abdda6fcaf..e290688a65 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_rule.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_rule.sh @@ -1,5 +1,43 @@ #!/bin/sh - status=$(ps|grep -c /usr/share/openclash/openclash_rule.sh) +. /usr/share/openclash/openclash_ps.sh +. /lib/functions.sh + +field_cut() +{ + local i lines end_len + rule_len=$(sed -n '/^ \{0,\}rules:/=' "$3" 2>/dev/null) + rule_provider_len=$(sed -n '/^ \{0,\}rule-providers:/=' "$3" 2>/dev/null) + script_len=$(sed -n '/^ \{0,\}script:/=' "$3" 2>/dev/null) + lines="$rule_len $rule_provider_len $script_len" + + for i in $lines; do + if [ -z "$1" ]; then + break + fi + + if [ "$1" -ge "$i" ]; then + continue + fi + + if [ "$end_len" -gt "$i" ] || [ -z "$end_len" ]; then + end_len="$i" + fi + done 2>/dev/null + + if [ -n "$1" ] && [ -z "$end_len" ]; then + end_len=$(sed -n '$=' "$3") + elif [ -n "$end_len" ]; then + end_len=$(expr "$end_len" - 1) + fi + + sed -n "${1},${end_len}p" "$3" > "$2" 2>/dev/null + + if [ -z "$4" ]; then + sed -i "${1},${end_len}d" "$3" 2>/dev/null + fi +} + + status=$(unify_ps_status "openclash_rule.sh") [ "$status" -gt 3 ] && exit 0 START_LOG="/tmp/openclash_start.log" @@ -9,6 +47,9 @@ RUlE_SOURCE=$(uci get openclash.config.rule_source 2>/dev/null) HTTP_PORT=$(uci get openclash.config.http_port 2>/dev/null) PROXY_ADDR=$(uci get network.lan.ipaddr 2>/dev/null |awk -F '/' '{print $1}' 2>/dev/null) + OTHER_RULE_PROVIDER_FILE="/tmp/other_rule_provider.yaml" + OTHER_SCRIPT_FILE="/tmp/other_rule_script.yaml" + OTHER_RULE_FILE="/tmp/other_rule.yaml" if [ -s "/tmp/openclash.auth" ]; then PROXY_AUTH=$(cat /tmp/openclash.auth |awk -F '- ' '{print $2}' |sed -n '1p' 2>/dev/null) @@ -41,6 +82,26 @@ if [ "$?" -eq "0" ] && [ "$RUlE_SOURCE" != 0 ] && [ -s "/tmp/rules.yaml" ]; then echo "下载成功,开始预处理规则文件..." >$START_LOG sed -i "/^rules:/a\##source:${RUlE_SOURCE}" /tmp/rules.yaml >/dev/null 2>&1 + + #处理rule_provider位置 + rule_provider_len=$(sed -n '/^ \{0,\}rule-providers:/=' "/tmp/rules.yaml" 2>/dev/null) + if [ -n "$rule_provider_len" ]; then + field_cut "$rule_provider_len" "$OTHER_RULE_PROVIDER_FILE" "/tmp/rules.yaml" + fi 2>/dev/null + #处理script位置 + script_len=$(sed -n '/^ \{0,\}script:/=' "/tmp/rules.yaml" 2>/dev/null) + if [ -n "$script_len" ]; then + field_cut "$script_len" "$OTHER_SCRIPT_FILE" "/tmp/rules.yaml" + fi 2>/dev/null + #处理备份rule位置 + rule_bak_len=$(sed -n '/^ \{0,\}rules:/=' "/tmp/rules.yaml" 2>/dev/null) + if [ -n "$rule_bak_len" ]; then + field_cut "$rule_bak_len" "$OTHER_RULE_FILE" "/tmp/rules.yaml" + fi 2>/dev/null + #合并 + cat "$OTHER_RULE_PROVIDER_FILE" "$OTHER_SCRIPT_FILE" "$OTHER_RULE_FILE" > "/tmp/rules.yaml" 2>/dev/null + rm -rf /tmp/other_rule* 2>/dev/null + echo "检查下载的规则文件是否有更新..." >$START_LOG cmp -s /etc/openclash/"$RUlE_SOURCE".yaml /tmp/rules.yaml if [ "$?" -ne "0" ]; then @@ -48,11 +109,11 @@ mv /tmp/rules.yaml /etc/openclash/"$RUlE_SOURCE".yaml >/dev/null 2>&1 sed -i '/^rules:/a\##updated' /etc/openclash/"$RUlE_SOURCE".yaml >/dev/null 2>&1 echo "替换成功,重新加载 OpenClash 应用新规则..." >$START_LOG - status=$(ps |grep -v openclash_watchdog |grep -c openclash.sh) + status=$(unify_ps_prevent) while ( [ "$status" -gt 1 ] ) do sleep 5 - status=$(ps |grep -v openclash_watchdog |grep -c openclash.sh) + status=$(unify_ps_prevent) done /etc/init.d/openclash restart 2>/dev/null echo "${LOGTIME} Other Rules 【$RUlE_SOURCE】 Update Successful" >>$LOG_FILE @@ -66,7 +127,7 @@ elif [ "$RUlE_SOURCE" = 0 ]; then echo "未启用第三方规则,更新程序终止!" >$START_LOG rm -rf /tmp/rules.yaml >/dev/null 2>&1 - echo "${LOGTIME} Other Rules 【$RUlE_SOURCE】 Not Enable, Update Stop" >>$LOG_FILE + echo "${LOGTIME} Other Rules Not Enable, Update Stop" >>$LOG_FILE sleep 10 echo "" >$START_LOG else diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_update.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_update.sh index b5af33e484..2119088538 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_update.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_update.sh @@ -1,8 +1,20 @@ #!/bin/sh +. /usr/share/openclash/openclash_ps.sh + #禁止多个实例 -status=$(ps|grep -c /usr/share/openclash/openclash_update.sh) +status=$(unify_ps_status "openclash_update.sh") [ "$status" -gt "3" ] && exit 0 +#一键更新 +if [ "$1" = "one_key_update" ]; then + uci set openclash.config.enable=1 + uci commit openclash + /usr/share/openclash/openclash_core.sh "$1" >/dev/null 2>&1 & + /usr/share/openclash/openclash_core.sh "Tun" "$1" >/dev/null 2>&1 & + /usr/share/openclash/openclash_core.sh "Game" "$1" >/dev/null 2>&1 & + wait +fi + START_LOG="/tmp/openclash_start.log" LOGTIME=$(date "+%Y-%m-%d %H:%M:%S") LOG_FILE="/tmp/openclash.log" @@ -41,6 +53,8 @@ if [ "$?" -eq "0" ]; then echo "OpenClash 更新成功,即将进行重启!" >$START_LOG echo "${LOGTIME} OpenClash Update Successful" >>$LOG_FILE sleep 3 + uci set openclash.config.enable=1 + uci commit openclash /etc/init.d/openclash restart 2>/dev/null else echo "OpenClash 更新失败,文件保存在/tmp/openclash.ipk,请尝试手动更新!" >$START_LOG @@ -57,17 +71,29 @@ EOF echo "OpenClash-$LAST_VER 下载失败,请检查网络或稍后再试!" >$START_LOG rm -rf /tmp/openclash.ipk >/dev/null 2>&1 echo "${LOGTIME} OpenClash Update Error" >>$LOG_FILE - sleep 10 + sleep 5 echo "" >$START_LOG + if [ "$(uci get openclash.config.config_reload 2>/dev/null)" -eq 0 ]; then + uci set openclash.config.config_reload=1 + uci commit openclash + /etc/init.d/openclash restart 2>/dev/null + fi fi -elif [ ! -f "$LAST_OPVER" ]; then +else + if [ ! -f "$LAST_OPVER" ]; then echo "获取版本信息失败,请稍后再试..." >$START_LOG echo "${LOGTIME} OpenClash Version Check Error, Please Try Again After A few seconds" >>$LOG_FILE sleep 5 echo "" >$START_LOG -else + else echo "OpenClash 没有更新,停止继续操作!" >$START_LOG echo "${LOGTIME} OpenClash Version No Change, Do Nothing" >>$LOG_FILE sleep 5 echo "" >$START_LOG + fi + if [ "$(uci get openclash.config.config_reload 2>/dev/null)" -eq 0 ]; then + uci set openclash.config.config_reload=1 + uci commit openclash + /etc/init.d/openclash restart 2>/dev/null + fi fi diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_version.sh b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_version.sh index abacd38057..c193279b6d 100755 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_version.sh +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/openclash_version.sh @@ -22,7 +22,7 @@ if [ "$CKTIME" != "$(grep "CheckTime" $LAST_OPVER 2>/dev/null |awk -F ':' '{prin if [ "$(expr "$OP_CV" \>= "$OP_LV")" -eq 1 ]; then sed -i "/^https:/i\CheckTime:${CKTIME}" "$LAST_OPVER" 2>/dev/null sed -i '/^https:/,$d' $LAST_OPVER - elif [ "$(expr "$OP_LV" \> "$OP_CV")" -eq 1 ]; then + elif [ "$(expr "$OP_LV" \> "$OP_CV")" -eq 1 ] && [ -n "$OP_LV" ]; then sed -i "/^https:/i\CheckTime:${CKTIME}" "$LAST_OPVER" 2>/dev/null return 2 fi @@ -32,6 +32,6 @@ if [ "$CKTIME" != "$(grep "CheckTime" $LAST_OPVER 2>/dev/null |awk -F ':' '{prin elif [ "$(expr "$OP_CV" \>= "$OP_LV")" -eq 1 ]; then sed -i '/^CheckTime:/,$d' $LAST_OPVER echo "CheckTime:$CKTIME" >> $LAST_OPVER -elif [ "$(expr "$OP_LV" \> "$OP_CV")" -eq 1 ]; then +elif [ "$(expr "$OP_LV" \> "$OP_CV")" -eq 1 ] && [ -n "$OP_LV" ]; then return 2 fi 2>/dev/null diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/14.2b1ab3375a2b9a48edab.js b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/14.2b1ab3375a2b9a48edab.js index 8ddc0d1a01..f24d2c52bb 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/14.2b1ab3375a2b9a48edab.js +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/14.2b1ab3375a2b9a48edab.js @@ -1 +1,2 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{"+924":function(t,e,n){"use strict";n.d(e,"d",(function(){return o})),n.d(e,"c",(function(){return i})),n.d(e,"b",(function(){return a})),n.d(e,"a",(function(){return c}));var r=n("9AQC");function o(t,e){return void 0===e&&(e=0),"string"!=typeof t||0===e||t.length<=e?t:t.substr(0,e)+"..."}function i(t,e){var n=t,r=n.length;if(r<=150)return n;e>r&&(e=r);var o=Math.max(e-60,0);o<5&&(o=0);var i=Math.min(o+140,r);return i>r-5&&(i=r),i===r&&(o=Math.max(i-140,0)),n=n.slice(o,i),o>0&&(n="'{snip} "+n),i"}try{c.currentTarget=Object(r.c)(a.currentTarget)?Object(i.h)(a.currentTarget):Object.prototype.toString.call(a.currentTarget)}catch(t){c.currentTarget=""}for(var o in"undefined"!=typeof CustomEvent&&Object(r.g)(t,CustomEvent)&&(c.detail=a.detail),a)Object.prototype.hasOwnProperty.call(a,o)&&(c[o]=a);return c}return t}function p(t){return function(t){return~-encodeURI(t).split(/%..|./).length}(JSON.stringify(t))}function l(t,e,n){void 0===e&&(e=3),void 0===n&&(n=102400);var r=d(t,e);return p(r)>n?l(t,e-1,n):r}function f(e,n){return"domain"===n&&e&&"object"==typeof e&&e._events?"[Domain]":"domainEmitter"===n?"[DomainEmitter]":void 0!==t&&e===t?"[Global]":"undefined"!=typeof window&&e===window?"[Window]":"undefined"!=typeof document&&e===document?"[Document]":Object(r.l)(e)?"[SyntheticEvent]":"number"==typeof e&&e!=e?"[NaN]":void 0===e?"[undefined]":"function"==typeof e?"[Function: "+Object(i.e)(e)+"]":e}function h(t,e,n,i){if(void 0===n&&(n=1/0),void 0===i&&(i=new o.a),0===n)return function(t){var e=Object.prototype.toString.call(t);if("string"==typeof t)return t;if("[object Object]"===e)return"[Object]";if("[object Array]"===e)return"[Array]";var n=f(t);return Object(r.i)(n)?n:e}(e);if(null!=e&&"function"==typeof e.toJSON)return e.toJSON();var a=f(e,t);if(Object(r.i)(a))return a;var c=u(e),s=Array.isArray(e)?[]:{};if(i.memoize(e))return"[Circular ~]";for(var p in c)Object.prototype.hasOwnProperty.call(c,p)&&(s[p]=h(p,c[p],n-1,i));return i.unmemoize(e),s}function d(t,e){try{return JSON.parse(JSON.stringify(t,(function(t,n){return h(t,n,e)})))}catch(t){return"**non-serializable**"}}function v(t,e){void 0===e&&(e=40);var n=Object.keys(u(t));if(n.sort(),!n.length)return"[object has no keys]";if(n[0].length>=e)return Object(a.d)(n[0],e);for(var r=n.length;r>0;r--){var o=n.slice(0,r).join(", ");if(!(o.length>e))return r===n.length?o:Object(a.d)(o,e)}return""}}).call(this,n("yLpj"))},"8oxB":function(t,e){var n,r,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function c(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(t){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var s,u=[],p=!1,l=-1;function f(){p&&s&&(p=!1,s.length?u=s.concat(u):l=-1,u.length&&h())}function h(){if(!p){var t=c(f);p=!0;for(var e=u.length;e;){for(s=u,u=[];++l1)for(var n=1;n"}return t.event_id||""}function f(t){var e=s();if(!("console"in e))return t();var n=e.console,r={};["debug","info","warn","error","log","assert"].forEach((function(t){t in e.console&&n[t].__sentry_original__&&(r[t]=n[t],n[t]=n[t].__sentry_original__)}));var o=t();return Object.keys(r).forEach((function(t){n[t]=r[t]})),o}function h(t,e,n){t.exception=t.exception||{},t.exception.values=t.exception.values||[],t.exception.values[0]=t.exception.values[0]||{},t.exception.values[0].value=t.exception.values[0].value||e||"",t.exception.values[0].type=t.exception.values[0].type||n||"Error"}function d(t,e){void 0===e&&(e={});try{t.exception.values[0].mechanism=t.exception.values[0].mechanism||{},Object.keys(e).forEach((function(n){t.exception.values[0].mechanism[n]=e[n]}))}catch(t){}}function v(){try{return document.location.href}catch(t){return""}}function _(t){try{for(var e=t,n=[],r=0,o=0,i=" > ".length,a=void 0;e&&r++<5&&!("html"===(a=y(e))||r>1&&o+n.length*i+a.length>=80);)n.push(a),o+=a.length,e=e.parentNode;return n.reverse().join(" > ")}catch(t){return""}}function y(t){var e,n,r,o,a,c=t,s=[];if(!c||!c.tagName)return"";if(s.push(c.tagName.toLowerCase()),c.id&&s.push("#"+c.id),(e=c.className)&&Object(i.k)(e))for(n=e.split(/\s+/),a=0;a"}catch(t){return""}}}).call(this,n("8oxB"),n("yLpj"),n("3UD+")(t))},"9AQC":function(t,e,n){"use strict";function r(t){switch(Object.prototype.toString.call(t)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return v(t,Error)}}function o(t){return"[object ErrorEvent]"===Object.prototype.toString.call(t)}function i(t){return"[object DOMError]"===Object.prototype.toString.call(t)}function a(t){return"[object DOMException]"===Object.prototype.toString.call(t)}function c(t){return"[object String]"===Object.prototype.toString.call(t)}function s(t){return null===t||"object"!=typeof t&&"function"!=typeof t}function u(t){return"[object Object]"===Object.prototype.toString.call(t)}function p(t){return"undefined"!=typeof Event&&v(t,Event)}function l(t){return"undefined"!=typeof Element&&v(t,Element)}function f(t){return"[object RegExp]"===Object.prototype.toString.call(t)}function h(t){return Boolean(t&&t.then&&"function"==typeof t.then)}function d(t){return u(t)&&"nativeEvent"in t&&"preventDefault"in t&&"stopPropagation"in t}function v(t,e){try{return t instanceof e}catch(t){return!1}}n.d(e,"d",(function(){return r})),n.d(e,"e",(function(){return o})),n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return a})),n.d(e,"k",(function(){return c})),n.d(e,"i",(function(){return s})),n.d(e,"h",(function(){return u})),n.d(e,"f",(function(){return p})),n.d(e,"c",(function(){return l})),n.d(e,"j",(function(){return f})),n.d(e,"m",(function(){return h})),n.d(e,"l",(function(){return d})),n.d(e,"g",(function(){return v}))},WSEr:function(t,e,n){"use strict";n.r(e),n.d(e,"Severity",(function(){return a})),n.d(e,"Status",(function(){return c})),n.d(e,"addGlobalEventProcessor",(function(){return v})),n.d(e,"addBreadcrumb",(function(){return N})),n.d(e,"captureException",(function(){return T})),n.d(e,"captureEvent",(function(){return R})),n.d(e,"captureMessage",(function(){return I})),n.d(e,"configureScope",(function(){return D})),n.d(e,"getHubFromCarrier",(function(){return w})),n.d(e,"getCurrentHub",(function(){return E})),n.d(e,"Hub",(function(){return m})),n.d(e,"makeMain",(function(){return j})),n.d(e,"Scope",(function(){return h})),n.d(e,"startTransaction",(function(){return M})),n.d(e,"setContext",(function(){return C})),n.d(e,"setExtra",(function(){return A})),n.d(e,"setExtras",(function(){return U})),n.d(e,"setTag",(function(){return P})),n.d(e,"setTags",(function(){return L})),n.d(e,"setUser",(function(){return F})),n.d(e,"withScope",(function(){return B})),n.d(e,"BrowserClient",(function(){return Vt})),n.d(e,"injectReportDialog",(function(){return It})),n.d(e,"eventFromException",(function(){return ht})),n.d(e,"eventFromMessage",(function(){return dt})),n.d(e,"defaultIntegrations",(function(){return ae})),n.d(e,"forceLoad",(function(){return pe})),n.d(e,"init",(function(){return ce})),n.d(e,"lastEventId",(function(){return ue})),n.d(e,"onLoad",(function(){return le})),n.d(e,"showReportDialog",(function(){return se})),n.d(e,"flush",(function(){return fe})),n.d(e,"close",(function(){return he})),n.d(e,"wrap",(function(){return de})),n.d(e,"SDK_NAME",(function(){return zt})),n.d(e,"SDK_VERSION",(function(){return $t})),n.d(e,"Integrations",(function(){return ye})),n.d(e,"Transports",(function(){return i}));var r={};n.r(r),n.d(r,"FunctionToString",(function(){return Qt})),n.d(r,"InboundFilters",(function(){return Zt}));var o={};n.r(o),n.d(o,"GlobalHandlers",(function(){return ne})),n.d(o,"TryCatch",(function(){return ee})),n.d(o,"Breadcrumbs",(function(){return Jt})),n.d(o,"LinkedErrors",(function(){return re})),n.d(o,"UserAgent",(function(){return ie}));var i={};n.r(i),n.d(i,"BaseTransport",(function(){return mt})),n.d(i,"FetchTransport",(function(){return jt})),n.d(i,"XHRTransport",(function(){return Et}));var a,c,s=n("mrSG");!function(t){t.Fatal="fatal",t.Error="error",t.Warning="warning",t.Log="log",t.Info="info",t.Debug="debug",t.Critical="critical"}(a||(a={})),function(t){t.fromString=function(e){switch(e){case"debug":return t.Debug;case"info":return t.Info;case"warn":case"warning":return t.Warning;case"error":return t.Error;case"fatal":return t.Fatal;case"critical":return t.Critical;case"log":default:return t.Log}}}(a||(a={})),function(t){t.Unknown="unknown",t.Skipped="skipped",t.Success="success",t.RateLimit="rate_limit",t.Invalid="invalid",t.Failed="failed"}(c||(c={})),function(t){t.fromHttpCode=function(e){return e>=200&&e<300?t.Success:429===e?t.RateLimit:e>=400&&e<500?t.Invalid:e>=500?t.Failed:t.Unknown}}(c||(c={}));var u,p=n("9AQC"),l=n("9/Zf");!function(t){t.PENDING="PENDING",t.RESOLVED="RESOLVED",t.REJECTED="REJECTED"}(u||(u={}));var f=function(){function t(t){var e=this;this._state=u.PENDING,this._handlers=[],this._resolve=function(t){e._setResult(u.RESOLVED,t)},this._reject=function(t){e._setResult(u.REJECTED,t)},this._setResult=function(t,n){e._state===u.PENDING&&(Object(p.m)(n)?n.then(e._resolve,e._reject):(e._state=t,e._value=n,e._executeHandlers()))},this._attachHandler=function(t){e._handlers=e._handlers.concat(t),e._executeHandlers()},this._executeHandlers=function(){if(e._state!==u.PENDING){var t=e._handlers.slice();e._handlers=[],t.forEach((function(t){t.done||(e._state===u.RESOLVED&&t.onfulfilled&&t.onfulfilled(e._value),e._state===u.REJECTED&&t.onrejected&&t.onrejected(e._value),t.done=!0)}))}};try{t(this._resolve,this._reject)}catch(t){this._reject(t)}}return t.resolve=function(e){return new t((function(t){t(e)}))},t.reject=function(e){return new t((function(t,n){n(e)}))},t.all=function(e){return new t((function(n,r){if(Array.isArray(e))if(0!==e.length){var o=e.length,i=[];e.forEach((function(e,a){t.resolve(e).then((function(t){i[a]=t,0===(o-=1)&&n(i)})).then(null,r)}))}else n([]);else r(new TypeError("Promise.all requires an array as input."))}))},t.prototype.then=function(e,n){var r=this;return new t((function(t,o){r._attachHandler({done:!1,onfulfilled:function(n){if(e)try{return void t(e(n))}catch(t){return void o(t)}else t(n)},onrejected:function(e){if(n)try{return void t(n(e))}catch(t){return void o(t)}else o(e)}})}))},t.prototype.catch=function(t){return this.then((function(t){return t}),t)},t.prototype.finally=function(e){var n=this;return new t((function(t,r){var o,i;return n.then((function(t){i=!1,o=t,e&&e()}),(function(t){i=!0,o=t,e&&e()})).then((function(){i?r(o):t(o)}))}))},t.prototype.toString=function(){return"[object SyncPromise]"},t}(),h=function(){function t(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._user={},this._tags={},this._extra={},this._contexts={}}return t.clone=function(e){var n=new t;return e&&(n._breadcrumbs=Object(s.e)(e._breadcrumbs),n._tags=Object(s.a)({},e._tags),n._extra=Object(s.a)({},e._extra),n._contexts=Object(s.a)({},e._contexts),n._user=e._user,n._level=e._level,n._span=e._span,n._transactionName=e._transactionName,n._fingerprint=e._fingerprint,n._eventProcessors=Object(s.e)(e._eventProcessors)),n},t.prototype.addScopeListener=function(t){this._scopeListeners.push(t)},t.prototype.addEventProcessor=function(t){return this._eventProcessors.push(t),this},t.prototype.setUser=function(t){return this._user=t||{},this._notifyScopeListeners(),this},t.prototype.setTags=function(t){return this._tags=Object(s.a)(Object(s.a)({},this._tags),t),this._notifyScopeListeners(),this},t.prototype.setTag=function(t,e){var n;return this._tags=Object(s.a)(Object(s.a)({},this._tags),((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setExtras=function(t){return this._extra=Object(s.a)(Object(s.a)({},this._extra),t),this._notifyScopeListeners(),this},t.prototype.setExtra=function(t,e){var n;return this._extra=Object(s.a)(Object(s.a)({},this._extra),((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setFingerprint=function(t){return this._fingerprint=t,this._notifyScopeListeners(),this},t.prototype.setLevel=function(t){return this._level=t,this._notifyScopeListeners(),this},t.prototype.setTransactionName=function(t){return this._transactionName=t,this._notifyScopeListeners(),this},t.prototype.setTransaction=function(t){return this.setTransactionName(t)},t.prototype.setContext=function(t,e){var n;return this._contexts=Object(s.a)(Object(s.a)({},this._contexts),((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setSpan=function(t){return this._span=t,this._notifyScopeListeners(),this},t.prototype.getSpan=function(){return this._span},t.prototype.getTransaction=function(){var t=this.getSpan();if(t&&t.spanRecorder&&t.spanRecorder.spans[0])return t.spanRecorder.spans[0]},t.prototype.update=function(e){if(!e)return this;if("function"==typeof e){var n=e(this);return n instanceof t?n:this}return e instanceof t?(this._tags=Object(s.a)(Object(s.a)({},this._tags),e._tags),this._extra=Object(s.a)(Object(s.a)({},this._extra),e._extra),this._contexts=Object(s.a)(Object(s.a)({},this._contexts),e._contexts),e._user&&(this._user=e._user),e._level&&(this._level=e._level),e._fingerprint&&(this._fingerprint=e._fingerprint)):Object(p.h)(e)&&(e=e,this._tags=Object(s.a)(Object(s.a)({},this._tags),e.tags),this._extra=Object(s.a)(Object(s.a)({},this._extra),e.extra),this._contexts=Object(s.a)(Object(s.a)({},this._contexts),e.contexts),e.user&&(this._user=e.user),e.level&&(this._level=e.level),e.fingerprint&&(this._fingerprint=e.fingerprint)),this},t.prototype.clear=function(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._span=void 0,this._notifyScopeListeners(),this},t.prototype.addBreadcrumb=function(t,e){var n=Object(s.a)({timestamp:Object(l.l)()},t);return this._breadcrumbs=void 0!==e&&e>=0?Object(s.e)(this._breadcrumbs,[n]).slice(-e):Object(s.e)(this._breadcrumbs,[n]),this._notifyScopeListeners(),this},t.prototype.clearBreadcrumbs=function(){return this._breadcrumbs=[],this._notifyScopeListeners(),this},t.prototype.applyToEvent=function(t,e){return this._extra&&Object.keys(this._extra).length&&(t.extra=Object(s.a)(Object(s.a)({},this._extra),t.extra)),this._tags&&Object.keys(this._tags).length&&(t.tags=Object(s.a)(Object(s.a)({},this._tags),t.tags)),this._user&&Object.keys(this._user).length&&(t.user=Object(s.a)(Object(s.a)({},this._user),t.user)),this._contexts&&Object.keys(this._contexts).length&&(t.contexts=Object(s.a)(Object(s.a)({},this._contexts),t.contexts)),this._level&&(t.level=this._level),this._transactionName&&(t.transaction=this._transactionName),this._span&&(t.contexts=Object(s.a)({trace:this._span.getTraceContext()},t.contexts)),this._applyFingerprint(t),t.breadcrumbs=Object(s.e)(t.breadcrumbs||[],this._breadcrumbs),t.breadcrumbs=t.breadcrumbs.length>0?t.breadcrumbs:void 0,this._notifyEventProcessors(Object(s.e)(d(),this._eventProcessors),t,e)},t.prototype._notifyEventProcessors=function(t,e,n,r){var o=this;return void 0===r&&(r=0),new f((function(i,a){var c=t[r];if(null===e||"function"!=typeof c)i(e);else{var u=c(Object(s.a)({},e),n);Object(p.m)(u)?u.then((function(e){return o._notifyEventProcessors(t,e,n,r+1).then(i)})).then(null,a):o._notifyEventProcessors(t,u,n,r+1).then(i).then(null,a)}}))},t.prototype._notifyScopeListeners=function(){var t=this;this._notifyingListeners||(this._notifyingListeners=!0,setTimeout((function(){t._scopeListeners.forEach((function(e){e(t)})),t._notifyingListeners=!1})))},t.prototype._applyFingerprint=function(t){t.fingerprint=t.fingerprint?Array.isArray(t.fingerprint)?t.fingerprint:[t.fingerprint]:[],this._fingerprint&&(t.fingerprint=t.fingerprint.concat(this._fingerprint)),t.fingerprint&&!t.fingerprint.length&&delete t.fingerprint},t}();function d(){var t=Object(l.f)();return t.__SENTRY__=t.__SENTRY__||{},t.__SENTRY__.globalEventProcessors=t.__SENTRY__.globalEventProcessors||[],t.__SENTRY__.globalEventProcessors}function v(t){d().push(t)}var _=Object(l.f)(),y="Sentry Logger ",b=function(){function t(){this._enabled=!1}return t.prototype.disable=function(){this._enabled=!1},t.prototype.enable=function(){this._enabled=!0},t.prototype.log=function(){for(var t=[],e=0;e0?t[t.length-1].scope:void 0,n=h.clone(e);return this.getStack().push({client:this.getClient(),scope:n}),n},t.prototype.popScope=function(){return void 0!==this.getStack().pop()},t.prototype.withScope=function(t){var e=this.pushScope();try{t(e)}finally{this.popScope()}},t.prototype.getClient=function(){return this.getStackTop().client},t.prototype.getScope=function(){return this.getStackTop().scope},t.prototype.getStack=function(){return this._stack},t.prototype.getStackTop=function(){return this._stack[this._stack.length-1]},t.prototype.captureException=function(t,e){var n=this._lastEventId=Object(l.m)(),r=e;if(!e){var o=void 0;try{throw new Error("Sentry syntheticException")}catch(t){o=t}r={originalException:t,syntheticException:o}}return this._invokeClient("captureException",t,Object(s.a)(Object(s.a)({},r),{event_id:n})),n},t.prototype.captureMessage=function(t,e,n){var r=this._lastEventId=Object(l.m)(),o=n;if(!n){var i=void 0;try{throw new Error(t)}catch(t){i=t}o={originalException:t,syntheticException:i}}return this._invokeClient("captureMessage",t,e,Object(s.a)(Object(s.a)({},o),{event_id:r})),r},t.prototype.captureEvent=function(t,e){var n=this._lastEventId=Object(l.m)();return this._invokeClient("captureEvent",t,Object(s.a)(Object(s.a)({},e),{event_id:n})),n},t.prototype.lastEventId=function(){return this._lastEventId},t.prototype.addBreadcrumb=function(t,e){var n=this.getStackTop();if(n.scope&&n.client){var r=n.client.getOptions&&n.client.getOptions()||{},o=r.beforeBreadcrumb,i=void 0===o?null:o,a=r.maxBreadcrumbs,c=void 0===a?100:a;if(!(c<=0)){var u=Object(l.l)(),p=Object(s.a)({timestamp:u},t),f=i?Object(l.c)((function(){return i(p,e)})):p;null!==f&&n.scope.addBreadcrumb(f,Math.min(c,100))}}},t.prototype.setUser=function(t){var e=this.getStackTop();e.scope&&e.scope.setUser(t)},t.prototype.setTags=function(t){var e=this.getStackTop();e.scope&&e.scope.setTags(t)},t.prototype.setExtras=function(t){var e=this.getStackTop();e.scope&&e.scope.setExtras(t)},t.prototype.setTag=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setTag(t,e)},t.prototype.setExtra=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setExtra(t,e)},t.prototype.setContext=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setContext(t,e)},t.prototype.configureScope=function(t){var e=this.getStackTop();e.scope&&e.client&&t(e.scope)},t.prototype.run=function(t){var e=j(this);try{t(this)}finally{j(e)}},t.prototype.getIntegration=function(t){var e=this.getClient();if(!e)return null;try{return e.getIntegration(t)}catch(e){return g.warn("Cannot retrieve integration "+t.id+" from the current Hub"),null}},t.prototype.startSpan=function(t){return this._callExtensionMethod("startSpan",t)},t.prototype.startTransaction=function(t){return this._callExtensionMethod("startTransaction",t)},t.prototype.traceHeaders=function(){return this._callExtensionMethod("traceHeaders")},t.prototype._invokeClient=function(t){for(var e,n=[],r=1;r1&&(l=h.slice(0,-1).join("/"),f=h.pop()),f){var d=f.match(/^\d+/);d&&(f=d[0])}this._fromComponents({host:c,pass:a,path:l,projectId:f,port:p,protocol:r,user:o})},t.prototype._fromComponents=function(t){this.protocol=t.protocol,this.user=t.user,this.pass=t.pass||"",this.host=t.host,this.port=t.port||"",this.path=t.path||"",this.projectId=t.projectId},t.prototype._validate=function(){var t=this;if(["protocol","user","host","projectId"].forEach((function(e){if(!t[e])throw new q("Invalid Dsn: "+e+" missing")})),!this.projectId.match(/^\d+$/))throw new q("Invalid Dsn: Invalid projectId "+this.projectId);if("http"!==this.protocol&&"https"!==this.protocol)throw new q("Invalid Dsn: Invalid protocol "+this.protocol);if(this.port&&isNaN(parseInt(this.port,10)))throw new q("Invalid Dsn: Invalid port "+this.port)},t}(),G=n("6PXS"),X=n("+924"),J=[];function z(t){var e={};return function(t){var e=t.defaultIntegrations&&Object(s.e)(t.defaultIntegrations)||[],n=t.integrations,r=[];if(Array.isArray(n)){var o=n.map((function(t){return t.name})),i=[];e.forEach((function(t){-1===o.indexOf(t.name)&&-1===i.indexOf(t.name)&&(r.push(t),i.push(t.name))})),n.forEach((function(t){-1===i.indexOf(t.name)&&(r.push(t),i.push(t.name))}))}else"function"==typeof n?(r=n(e),r=Array.isArray(r)?r:[r]):r=Object(s.e)(e);var a=r.map((function(t){return t.name}));return-1!==a.indexOf("Debug")&&r.push.apply(r,Object(s.e)(r.splice(a.indexOf("Debug"),1))),r}(t).forEach((function(t){e[t.name]=t,function(t){-1===J.indexOf(t.name)&&(t.setupOnce(v,E),J.push(t.name),g.log("Integration installed: "+t.name))}(t)})),e}var $=function(){function t(t,e){this._integrations={},this._processing=!1,this._backend=new t(e),this._options=e,e.dsn&&(this._dsn=new Y(e.dsn))}return t.prototype.captureException=function(t,e,n){var r=this,o=e&&e.event_id;return this._processing=!0,this._getBackend().eventFromException(t,e).then((function(t){o=r.captureEvent(t,e,n)})),o},t.prototype.captureMessage=function(t,e,n,r){var o=this,i=n&&n.event_id;return this._processing=!0,(Object(p.i)(t)?this._getBackend().eventFromMessage(""+t,e,n):this._getBackend().eventFromException(t,n)).then((function(t){i=o.captureEvent(t,n,r)})),i},t.prototype.captureEvent=function(t,e,n){var r=this,o=e&&e.event_id;return this._processing=!0,this._processEvent(t,e,n).then((function(t){o=t&&t.event_id,r._processing=!1})).then(null,(function(t){g.error(t),r._processing=!1})),o},t.prototype.getDsn=function(){return this._dsn},t.prototype.getOptions=function(){return this._options},t.prototype.flush=function(t){var e=this;return this._isClientProcessing(t).then((function(n){return clearInterval(n.interval),e._getBackend().getTransport().close(t).then((function(t){return n.ready&&t}))}))},t.prototype.close=function(t){var e=this;return this.flush(t).then((function(t){return e.getOptions().enabled=!1,t}))},t.prototype.setupIntegrations=function(){this._isEnabled()&&(this._integrations=z(this._options))},t.prototype.getIntegration=function(t){try{return this._integrations[t.id]||null}catch(e){return g.warn("Cannot retrieve integration "+t.id+" from the current Client"),null}},t.prototype._isClientProcessing=function(t){var e=this;return new f((function(n){var r=0,o=0;clearInterval(o),o=setInterval((function(){e._processing?(r+=1,t&&r>=t&&n({interval:o,ready:!1})):n({interval:o,ready:!0})}),1)}))},t.prototype._getBackend=function(){return this._backend},t.prototype._isEnabled=function(){return!1!==this.getOptions().enabled&&void 0!==this._dsn},t.prototype._prepareEvent=function(t,e,n){var r=this,o=this.getOptions().normalizeDepth,i=void 0===o?3:o,a=Object(s.a)(Object(s.a)({},t),{event_id:t.event_id||(n&&n.event_id?n.event_id:Object(l.m)()),timestamp:t.timestamp||Object(l.l)()});this._applyClientOptions(a),this._applyIntegrationsMetadata(a);var c=e;n&&n.captureContext&&(c=h.clone(c).update(n.captureContext));var u=f.resolve(a);return c&&(u=c.applyToEvent(a,n)),u.then((function(t){return"number"==typeof i&&i>0?r._normalizeEvent(t,i):t}))},t.prototype._normalizeEvent=function(t,e){if(!t)return null;var n=Object(s.a)(Object(s.a)(Object(s.a)(Object(s.a)(Object(s.a)({},t),t.breadcrumbs&&{breadcrumbs:t.breadcrumbs.map((function(t){return Object(s.a)(Object(s.a)({},t),t.data&&{data:Object(G.c)(t.data,e)})}))}),t.user&&{user:Object(G.c)(t.user,e)}),t.contexts&&{contexts:Object(G.c)(t.contexts,e)}),t.extra&&{extra:Object(G.c)(t.extra,e)});return t.contexts&&t.contexts.trace&&(n.contexts.trace=t.contexts.trace),n},t.prototype._applyClientOptions=function(t){var e=this.getOptions(),n=e.environment,r=e.release,o=e.dist,i=e.maxValueLength,a=void 0===i?250:i;void 0===t.environment&&void 0!==n&&(t.environment=n),void 0===t.release&&void 0!==r&&(t.release=r),void 0===t.dist&&void 0!==o&&(t.dist=o),t.message&&(t.message=Object(X.d)(t.message,a));var c=t.exception&&t.exception.values&&t.exception.values[0];c&&c.value&&(c.value=Object(X.d)(c.value,a));var s=t.request;s&&s.url&&(s.url=Object(X.d)(s.url,a))},t.prototype._applyIntegrationsMetadata=function(t){var e=t.sdk,n=Object.keys(this._integrations);e&&n.length>0&&(e.integrations=n)},t.prototype._sendEvent=function(t){this._getBackend().sendEvent(t)},t.prototype._processEvent=function(t,e,n){var r=this,o=this.getOptions(),i=o.beforeSend,a=o.sampleRate;if(!this._isEnabled())return f.reject("SDK not enabled, will not send event.");var c="transaction"===t.type;return!c&&"number"==typeof a&&Math.random()>a?f.reject("This event has been sampled, will not send event."):new f((function(o,a){r._prepareEvent(t,n,e).then((function(t){if(null!==t){var n=t;if(e&&e.data&&!0===e.data.__sentry__||!i||c)return r._sendEvent(n),void o(n);var s=i(t,e);if(void 0===s)g.error("`beforeSend` method has to return `null` or a valid event.");else if(Object(p.m)(s))r._handleAsyncBeforeSend(s,o,a);else{if(null===(n=s))return g.log("`beforeSend` returned `null`, will not send event."),void o(null);r._sendEvent(n),o(n)}}else a("An event processor returned null, will not send event.")})).then(null,(function(t){r.captureException(t,{data:{__sentry__:!0},originalException:t}),a("Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: "+t)}))}))},t.prototype._handleAsyncBeforeSend=function(t,e,n){var r=this;t.then((function(t){null!==t?(r._sendEvent(t),e(t)):n("`beforeSend` returned `null`, will not send event.")})).then(null,(function(t){n("beforeSend rejected with "+t)}))},t}(),V=function(){function t(){}return t.prototype.sendEvent=function(t){return f.resolve({reason:"NoopTransport: Event has been skipped because no Dsn is configured.",status:c.Skipped})},t.prototype.close=function(t){return f.resolve(!0)},t}(),Q=function(){function t(t){this._options=t,this._options.dsn||g.warn("No DSN provided, backend will not do anything."),this._transport=this._setupTransport()}return t.prototype.eventFromException=function(t,e){throw new q("Backend has to implement `eventFromException` method")},t.prototype.eventFromMessage=function(t,e,n){throw new q("Backend has to implement `eventFromMessage` method")},t.prototype.sendEvent=function(t){this._transport.sendEvent(t).then(null,(function(t){g.error("Error while sending event: "+t)}))},t.prototype.getTransport=function(){return this._transport},t.prototype._setupTransport=function(){return new V},t}();function K(){if(!("fetch"in Object(l.f)()))return!1;try{return new Headers,new Request(""),new Response,!0}catch(t){return!1}}function Z(t){return t&&/^function fetch\(\)\s+\{\s+\[native code\]\s+\}$/.test(t.toString())}function tt(){if(!K())return!1;try{return new Request("_",{referrerPolicy:"origin"}),!0}catch(t){return!1}}var et=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,nt=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js))(?::(\d+))?(?::(\d+))?\s*$/i,rt=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,ot=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,it=/\((\S*)(?::(\d+))(?::(\d+))\)/,at=/Minified React error #\d+;/i;function ct(t){var e=null,n=0;t&&("number"==typeof t.framesToPop?n=t.framesToPop:at.test(t.message)&&(n=1));try{if(e=function(t){if(!t||!t.stacktrace)return null;for(var e,n=t.stacktrace,r=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,o=/ line (\d+), column (\d+)\s*(?:in (?:]+)>|([^)]+))\((.*)\))? in (.*):\s*$/i,i=n.split("\n"),a=[],c=0;c eval")>-1&&(e=ot.exec(n[3]))?(n[1]=n[1]||"eval",n[3]=e[1],n[4]=e[2],n[5]=""):0!==a||n[5]||void 0===t.columnNumber||(o[0].column=t.columnNumber+1),r={url:n[3],func:n[1]||"?",args:n[2]?n[2].split(","):[],line:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}!r.func&&r.line&&(r.func="?"),o.push(r)}if(!o.length)return null;return{message:ut(t),name:t.name,stack:o}}(t))return st(e,n)}catch(t){}return{message:ut(t),name:t&&t.name,stack:[],failed:!0}}function st(t,e){try{return Object(s.a)(Object(s.a)({},t),{stack:t.stack.slice(e)})}catch(e){return t}}function ut(t){var e=t&&t.message;return e?e.error&&"string"==typeof e.error.message?e.error.message:e:"No error message"}function pt(t){var e=ft(t.stack),n={type:t.name,value:t.message};return e&&e.length&&(n.stacktrace={frames:e}),void 0===n.type&&""===n.value&&(n.value="Unrecoverable error caught"),n}function lt(t){return{exception:{values:[pt(t)]}}}function ft(t){if(!t||!t.length)return[];var e=t,n=e[0].func||"",r=e[e.length-1].func||"";return-1===n.indexOf("captureMessage")&&-1===n.indexOf("captureException")||(e=e.slice(1)),-1!==r.indexOf("sentryWrapped")&&(e=e.slice(0,-1)),e.slice(0,50).map((function(t){return{colno:null===t.column?void 0:t.column,filename:t.url||e[0].url,function:t.func||"?",in_app:!0,lineno:null===t.line?void 0:t.line}})).reverse()}function ht(t,e,n){var r=vt(e,n&&n.syntheticException||void 0,{attachStacktrace:t.attachStacktrace});return Object(l.a)(r,{handled:!0,type:"generic"}),r.level=a.Error,n&&n.event_id&&(r.event_id=n.event_id),f.resolve(r)}function dt(t,e,n,r){void 0===n&&(n=a.Info);var o=_t(e,r&&r.syntheticException||void 0,{attachStacktrace:t.attachStacktrace});return o.level=n,r&&r.event_id&&(o.event_id=r.event_id),f.resolve(o)}function vt(t,e,n){var r;if(void 0===n&&(n={}),Object(p.e)(t)&&t.error)return r=lt(ct(t=t.error));if(Object(p.a)(t)||Object(p.b)(t)){var o=t,i=o.name||(Object(p.a)(o)?"DOMError":"DOMException"),a=o.message?i+": "+o.message:i;return r=_t(a,e,n),Object(l.b)(r,a),r}return Object(p.d)(t)?r=lt(ct(t)):Object(p.h)(t)||Object(p.f)(t)?(r=function(t,e,n){var r={exception:{values:[{type:Object(p.f)(t)?t.constructor.name:n?"UnhandledRejection":"Error",value:"Non-Error "+(n?"promise rejection":"exception")+" captured with keys: "+Object(G.a)(t)}]},extra:{__serialized__:Object(G.d)(t)}};if(e){var o=ft(ct(e).stack);r.stacktrace={frames:o}}return r}(t,e,n.rejection),Object(l.a)(r,{synthetic:!0}),r):(r=_t(t,e,n),Object(l.b)(r,""+t,void 0),Object(l.a)(r,{synthetic:!0}),r)}function _t(t,e,n){void 0===n&&(n={});var r={message:t};if(n.attachStacktrace&&e){var o=ft(ct(e).stack);r.stacktrace={frames:o}}return r}function yt(t,e){var n="transaction"===t.type,r={body:JSON.stringify(t),url:n?e.getEnvelopeEndpointWithUrlEncodedAuth():e.getStoreEndpointWithUrlEncodedAuth()};if(n){var o=JSON.stringify({event_id:t.event_id,sent_at:new Date(1e3*Object(l.l)()).toISOString()})+"\n"+JSON.stringify({type:t.type})+"\n"+r.body;r.body=o}return r}var bt=function(){function t(t){this.dsn=t,this._dsnObject=new Y(t)}return t.prototype.getDsn=function(){return this._dsnObject},t.prototype.getBaseApiEndpoint=function(){var t=this._dsnObject,e=t.protocol?t.protocol+":":"",n=t.port?":"+t.port:"";return e+"//"+t.host+n+(t.path?"/"+t.path:"")+"/api/"},t.prototype.getStoreEndpoint=function(){return this._getIngestEndpoint("store")},t.prototype.getStoreEndpointWithUrlEncodedAuth=function(){return this.getStoreEndpoint()+"?"+this._encodedAuth()},t.prototype.getEnvelopeEndpointWithUrlEncodedAuth=function(){return this._getEnvelopeEndpoint()+"?"+this._encodedAuth()},t.prototype.getStoreEndpointPath=function(){var t=this._dsnObject;return(t.path?"/"+t.path:"")+"/api/"+t.projectId+"/store/"},t.prototype.getRequestHeaders=function(t,e){var n=this._dsnObject,r=["Sentry sentry_version=7"];return r.push("sentry_client="+t+"/"+e),r.push("sentry_key="+n.user),n.pass&&r.push("sentry_secret="+n.pass),{"Content-Type":"application/json","X-Sentry-Auth":r.join(", ")}},t.prototype.getReportDialogEndpoint=function(t){void 0===t&&(t={});var e=this._dsnObject,n=this.getBaseApiEndpoint()+"embed/error-page/",r=[];for(var o in r.push("dsn="+e.toString()),t)if("user"===o){if(!t.user)continue;t.user.name&&r.push("name="+encodeURIComponent(t.user.name)),t.user.email&&r.push("email="+encodeURIComponent(t.user.email))}else r.push(encodeURIComponent(o)+"="+encodeURIComponent(t[o]));return r.length?n+"?"+r.join("&"):n},t.prototype._getEnvelopeEndpoint=function(){return this._getIngestEndpoint("envelope")},t.prototype._getIngestEndpoint=function(t){return""+this.getBaseApiEndpoint()+this._dsnObject.projectId+"/"+t+"/"},t.prototype._encodedAuth=function(){var t={sentry_key:this._dsnObject.user,sentry_version:"7"};return Object(G.e)(t)},t}(),gt=function(){function t(t){this._limit=t,this._buffer=[]}return t.prototype.isReady=function(){return void 0===this._limit||this.length()0&&n(!1)}),t);f.all(e._buffer).then((function(){clearTimeout(r),n(!0)})).then(null,(function(){n(!0)}))}))},t}(),mt=function(){function t(t){this.options=t,this._buffer=new gt(30),this._api=new bt(this.options.dsn),this.url=this._api.getStoreEndpointWithUrlEncodedAuth()}return t.prototype.sendEvent=function(t){throw new q("Transport Class has to implement `sendEvent` method")},t.prototype.close=function(t){return this._buffer.drain(t)},t}(),Ot=Object(l.f)(),jt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._disabledUntil=new Date(Date.now()),e}return Object(s.b)(e,t),e.prototype.sendEvent=function(t){var e=this;if(new Date(Date.now())0}function kt(){wt+=1,setTimeout((function(){wt-=1}))}function Tt(t,e,n){if(void 0===e&&(e={}),"function"!=typeof t)return t;try{if(t.__sentry__)return t;if(t.__sentry_wrapped__)return t.__sentry_wrapped__}catch(e){return t}var r=function(){var r=Array.prototype.slice.call(arguments);try{n&&"function"==typeof n&&n.apply(this,arguments);var o=r.map((function(t){return Tt(t,e)}));return t.handleEvent?t.handleEvent.apply(this,o):t.apply(this,o)}catch(t){throw kt(),B((function(n){n.addEventProcessor((function(t){var n=Object(s.a)({},t);return e.mechanism&&(Object(l.b)(n,void 0,void 0),Object(l.a)(n,e.mechanism)),n.extra=Object(s.a)(Object(s.a)({},n.extra),{arguments:r}),n})),T(t)})),t}};try{for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[o]=t[o])}catch(t){}t.prototype=t.prototype||{},r.prototype=t.prototype,Object.defineProperty(t,"__sentry_wrapped__",{enumerable:!1,value:r}),Object.defineProperties(r,{__sentry__:{enumerable:!1,value:!0},__sentry_original__:{enumerable:!1,value:t}});try{Object.getOwnPropertyDescriptor(r,"name").configurable&&Object.defineProperty(r,"name",{get:function(){return t.name}})}catch(t){}return r}function It(t){if(void 0===t&&(t={}),t.eventId)if(t.dsn){var e=document.createElement("script");e.async=!0,e.src=new bt(t.dsn).getReportDialogEndpoint(t),t.onLoad&&(e.onload=t.onLoad),(document.head||document.body).appendChild(e)}else g.error("Missing dsn option in showReportDialog call");else g.error("Missing eventId option in showReportDialog call")}var Rt,Dt=Object(l.f)(),Nt={},Ct={};function Ut(t){if(!Ct[t])switch(Ct[t]=!0,t){case"console":!function(){if(!("console"in Dt))return;["debug","info","warn","error","log","assert"].forEach((function(t){t in Dt.console&&Object(G.b)(Dt.console,t,(function(e){return function(){for(var n=[],r=0;r2?e[2]:void 0;if(r){var o=Rt,i=String(r);Rt=i,At("history",{from:o,to:i})}return t.apply(this,e)}}Dt.onpopstate=function(){for(var t=[],e=0;e"}0!==e.length&&E().addBreadcrumb({category:"ui."+t.name,message:e},{event:t.event,name:t.name})},t.prototype._xhrBreadcrumb=function(t){if(t.endTimestamp){if(t.xhr.__sentry_own_request__)return;E().addBreadcrumb({category:"xhr",data:t.xhr.__sentry_xhr__,type:"http"},{xhr:t.xhr})}else;},t.prototype._fetchBreadcrumb=function(t){t.endTimestamp&&(t.fetchData.url.match(/sentry_key/)&&"POST"===t.fetchData.method||(t.error?E().addBreadcrumb({category:"fetch",data:t.fetchData,level:a.Error,type:"http"},{data:t.error,input:t.args}):E().addBreadcrumb({category:"fetch",data:Object(s.a)(Object(s.a)({},t.fetchData),{status_code:t.response.status}),type:"http"},{input:t.args,response:t.response})))},t.prototype._historyBreadcrumb=function(t){var e=Object(l.f)(),n=t.from,r=t.to,o=Object(l.k)(e.location.href),i=Object(l.k)(n),a=Object(l.k)(r);i.path||(i=o),o.protocol===a.protocol&&o.host===a.host&&(r=a.relative),o.protocol===i.protocol&&o.host===i.host&&(n=i.relative),E().addBreadcrumb({category:"navigation",data:{from:n,to:r}})},t.id="Breadcrumbs",t}(),zt="sentry.javascript.browser",$t="5.22.3",Vt=function(t){function e(e){return void 0===e&&(e={}),t.call(this,xt,e)||this}return Object(s.b)(e,t),e.prototype.showReportDialog=function(t){void 0===t&&(t={}),Object(l.f)().document&&(this._isEnabled()?It(Object(s.a)(Object(s.a)({},t),{dsn:t.dsn||this.getDsn()})):g.error("Trying to call showReportDialog with Sentry Client disabled"))},e.prototype._prepareEvent=function(e,n,r){return e.platform=e.platform||"javascript",e.sdk=Object(s.a)(Object(s.a)({},e.sdk),{name:zt,packages:Object(s.e)(e.sdk&&e.sdk.packages||[],[{name:"npm:@sentry/browser",version:$t}]),version:$t}),t.prototype._prepareEvent.call(this,e,n,r)},e.prototype._sendEvent=function(e){var n=this.getIntegration(Jt);n&&n.addSentryBreadcrumb(e),t.prototype._sendEvent.call(this,e)},e}($),Qt=function(){function t(){this.name=t.id}return t.prototype.setupOnce=function(){Xt=Function.prototype.toString,Function.prototype.toString=function(){for(var t=[],e=0;e0?e:Object(l.g)();return 0===t.exception.values[0].stacktrace.frames.length&&t.exception.values[0].stacktrace.frames.push({colno:o,filename:a,function:"?",in_app:!0,lineno:i}),t},t.id="GlobalHandlers",t}(),re=function(){function t(e){void 0===e&&(e={}),this.name=t.id,this._key=e.key||"cause",this._limit=e.limit||5}return t.prototype.setupOnce=function(){v((function(e,n){var r=E().getIntegration(t);return r?r._handler(e,n):e}))},t.prototype._handler=function(t,e){if(!(t.exception&&t.exception.values&&e&&Object(p.g)(e.originalException,Error)))return t;var n=this._walkErrorTree(e.originalException,this._key);return t.exception.values=Object(s.e)(n,t.exception.values),t},t.prototype._walkErrorTree=function(t,e,n){if(void 0===n&&(n=[]),!Object(p.g)(t[e],Error)||n.length+1>=this._limit)return n;var r=pt(ct(t[e]));return this._walkErrorTree(t[e],e,Object(s.e)([r],n))},t.id="LinkedErrors",t}(),oe=Object(l.f)(),ie=function(){function t(){this.name=t.id}return t.prototype.setupOnce=function(){v((function(e){if(E().getIntegration(t)){if(!oe.navigator||!oe.location)return e;var n=e.request||{};return n.url=n.url||oe.location.href,n.headers=n.headers||{},n.headers["User-Agent"]=oe.navigator.userAgent,Object(s.a)(Object(s.a)({},e),{request:n})}return e}))},t.id="UserAgent",t}(),ae=[new r.InboundFilters,new r.FunctionToString,new ee,new Jt,new ne,new re,new ie];function ce(t){if(void 0===t&&(t={}),void 0===t.defaultIntegrations&&(t.defaultIntegrations=ae),void 0===t.release){var e=Object(l.f)();e.SENTRY_RELEASE&&e.SENTRY_RELEASE.id&&(t.release=e.SENTRY_RELEASE.id)}!function(t,e){!0===e.debug&&g.enable();var n=E(),r=new t(e);n.bindClient(r)}(Vt,t)}function se(t){void 0===t&&(t={}),t.eventId||(t.eventId=E().lastEventId());var e=E().getClient();e&&e.showReportDialog(t)}function ue(){return E().lastEventId()}function pe(){}function le(t){t()}function fe(t){var e=E().getClient();return e?e.flush(t):f.reject(!1)}function he(t){var e=E().getClient();return e?e.close(t):f.reject(!1)}function de(t){return Tt(t)()}var ve={},_e=Object(l.f)();_e.Sentry&&_e.Sentry.Integrations&&(ve=_e.Sentry.Integrations);var ye=Object(s.a)(Object(s.a)(Object(s.a)({},ve),r),o)},wCA9:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var r=function(){function t(){this._hasWeakSet="function"==typeof WeakSet,this._inner=this._hasWeakSet?new WeakSet:[]}return t.prototype.memoize=function(t){if(this._hasWeakSet)return!!this._inner.has(t)||(this._inner.add(t),!1);for(var e=0;er&&(e=r);var o=Math.max(e-60,0);o<5&&(o=0);var i=Math.min(o+140,r);return i>r-5&&(i=r),i===r&&(o=Math.max(i-140,0)),n=n.slice(o,i),o>0&&(n="'{snip} "+n),i"}try{c.currentTarget=Object(r.c)(a.currentTarget)?Object(i.h)(a.currentTarget):Object.prototype.toString.call(a.currentTarget)}catch(t){c.currentTarget=""}for(var o in"undefined"!=typeof CustomEvent&&Object(r.g)(t,CustomEvent)&&(c.detail=a.detail),a)Object.prototype.hasOwnProperty.call(a,o)&&(c[o]=a);return c}return t}function p(t){return function(t){return~-encodeURI(t).split(/%..|./).length}(JSON.stringify(t))}function l(t,e,n){void 0===e&&(e=3),void 0===n&&(n=102400);var r=d(t,e);return p(r)>n?l(t,e-1,n):r}function f(e,n){return"domain"===n&&e&&"object"==typeof e&&e._events?"[Domain]":"domainEmitter"===n?"[DomainEmitter]":void 0!==t&&e===t?"[Global]":"undefined"!=typeof window&&e===window?"[Window]":"undefined"!=typeof document&&e===document?"[Document]":Object(r.l)(e)?"[SyntheticEvent]":"number"==typeof e&&e!=e?"[NaN]":void 0===e?"[undefined]":"function"==typeof e?"[Function: "+Object(i.e)(e)+"]":e}function h(t,e,n,i){if(void 0===n&&(n=1/0),void 0===i&&(i=new o.a),0===n)return function(t){var e=Object.prototype.toString.call(t);if("string"==typeof t)return t;if("[object Object]"===e)return"[Object]";if("[object Array]"===e)return"[Array]";var n=f(t);return Object(r.i)(n)?n:e}(e);if(null!=e&&"function"==typeof e.toJSON)return e.toJSON();var a=f(e,t);if(Object(r.i)(a))return a;var c=u(e),s=Array.isArray(e)?[]:{};if(i.memoize(e))return"[Circular ~]";for(var p in c)Object.prototype.hasOwnProperty.call(c,p)&&(s[p]=h(p,c[p],n-1,i));return i.unmemoize(e),s}function d(t,e){try{return JSON.parse(JSON.stringify(t,(function(t,n){return h(t,n,e)})))}catch(t){return"**non-serializable**"}}function v(t,e){void 0===e&&(e=40);var n=Object.keys(u(t));if(n.sort(),!n.length)return"[object has no keys]";if(n[0].length>=e)return Object(a.d)(n[0],e);for(var r=n.length;r>0;r--){var o=n.slice(0,r).join(", ");if(!(o.length>e))return r===n.length?o:Object(a.d)(o,e)}return""}}).call(this,n("yLpj"))},"8oxB":function(t,e){var n,r,o=t.exports={};function i(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function c(t){if(n===setTimeout)return setTimeout(t,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:i}catch(t){n=i}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(t){r=a}}();var s,u=[],p=!1,l=-1;function f(){p&&s&&(p=!1,s.length?u=s.concat(u):l=-1,u.length&&h())}function h(){if(!p){var t=c(f);p=!0;for(var e=u.length;e;){for(s=u,u=[];++l1)for(var n=1;n"}return t.event_id||""}function f(t){var e=s();if(!("console"in e))return t();var n=e.console,r={};["debug","info","warn","error","log","assert"].forEach((function(t){t in e.console&&n[t].__sentry_original__&&(r[t]=n[t],n[t]=n[t].__sentry_original__)}));var o=t();return Object.keys(r).forEach((function(t){n[t]=r[t]})),o}function h(t,e,n){t.exception=t.exception||{},t.exception.values=t.exception.values||[],t.exception.values[0]=t.exception.values[0]||{},t.exception.values[0].value=t.exception.values[0].value||e||"",t.exception.values[0].type=t.exception.values[0].type||n||"Error"}function d(t,e){void 0===e&&(e={});try{t.exception.values[0].mechanism=t.exception.values[0].mechanism||{},Object.keys(e).forEach((function(n){t.exception.values[0].mechanism[n]=e[n]}))}catch(t){}}function v(){try{return document.location.href}catch(t){return""}}function _(t){try{for(var e=t,n=[],r=0,o=0,i=" > ".length,a=void 0;e&&r++<5&&!("html"===(a=y(e))||r>1&&o+n.length*i+a.length>=80);)n.push(a),o+=a.length,e=e.parentNode;return n.reverse().join(" > ")}catch(t){return""}}function y(t){var e,n,r,o,a,c=t,s=[];if(!c||!c.tagName)return"";if(s.push(c.tagName.toLowerCase()),c.id&&s.push("#"+c.id),(e=c.className)&&Object(i.k)(e))for(n=e.split(/\s+/),a=0;a"}catch(t){return""}}}).call(this,n("8oxB"),n("yLpj"),n("3UD+")(t))},"9AQC":function(t,e,n){"use strict";function r(t){switch(Object.prototype.toString.call(t)){case"[object Error]":case"[object Exception]":case"[object DOMException]":return!0;default:return v(t,Error)}}function o(t){return"[object ErrorEvent]"===Object.prototype.toString.call(t)}function i(t){return"[object DOMError]"===Object.prototype.toString.call(t)}function a(t){return"[object DOMException]"===Object.prototype.toString.call(t)}function c(t){return"[object String]"===Object.prototype.toString.call(t)}function s(t){return null===t||"object"!=typeof t&&"function"!=typeof t}function u(t){return"[object Object]"===Object.prototype.toString.call(t)}function p(t){return"undefined"!=typeof Event&&v(t,Event)}function l(t){return"undefined"!=typeof Element&&v(t,Element)}function f(t){return"[object RegExp]"===Object.prototype.toString.call(t)}function h(t){return Boolean(t&&t.then&&"function"==typeof t.then)}function d(t){return u(t)&&"nativeEvent"in t&&"preventDefault"in t&&"stopPropagation"in t}function v(t,e){try{return t instanceof e}catch(t){return!1}}n.d(e,"d",(function(){return r})),n.d(e,"e",(function(){return o})),n.d(e,"a",(function(){return i})),n.d(e,"b",(function(){return a})),n.d(e,"k",(function(){return c})),n.d(e,"i",(function(){return s})),n.d(e,"h",(function(){return u})),n.d(e,"f",(function(){return p})),n.d(e,"c",(function(){return l})),n.d(e,"j",(function(){return f})),n.d(e,"m",(function(){return h})),n.d(e,"l",(function(){return d})),n.d(e,"g",(function(){return v}))},WSEr:function(t,e,n){"use strict";n.r(e),n.d(e,"Severity",(function(){return a})),n.d(e,"Status",(function(){return c})),n.d(e,"addGlobalEventProcessor",(function(){return v})),n.d(e,"addBreadcrumb",(function(){return N})),n.d(e,"captureException",(function(){return T})),n.d(e,"captureEvent",(function(){return R})),n.d(e,"captureMessage",(function(){return I})),n.d(e,"configureScope",(function(){return D})),n.d(e,"getHubFromCarrier",(function(){return w})),n.d(e,"getCurrentHub",(function(){return E})),n.d(e,"Hub",(function(){return m})),n.d(e,"makeMain",(function(){return j})),n.d(e,"Scope",(function(){return h})),n.d(e,"startTransaction",(function(){return M})),n.d(e,"setContext",(function(){return C})),n.d(e,"setExtra",(function(){return A})),n.d(e,"setExtras",(function(){return U})),n.d(e,"setTag",(function(){return P})),n.d(e,"setTags",(function(){return L})),n.d(e,"setUser",(function(){return F})),n.d(e,"withScope",(function(){return B})),n.d(e,"BrowserClient",(function(){return Vt})),n.d(e,"injectReportDialog",(function(){return It})),n.d(e,"eventFromException",(function(){return ht})),n.d(e,"eventFromMessage",(function(){return dt})),n.d(e,"defaultIntegrations",(function(){return ae})),n.d(e,"forceLoad",(function(){return pe})),n.d(e,"init",(function(){return ce})),n.d(e,"lastEventId",(function(){return ue})),n.d(e,"onLoad",(function(){return le})),n.d(e,"showReportDialog",(function(){return se})),n.d(e,"flush",(function(){return fe})),n.d(e,"close",(function(){return he})),n.d(e,"wrap",(function(){return de})),n.d(e,"SDK_NAME",(function(){return zt})),n.d(e,"SDK_VERSION",(function(){return $t})),n.d(e,"Integrations",(function(){return ye})),n.d(e,"Transports",(function(){return i}));var r={};n.r(r),n.d(r,"FunctionToString",(function(){return Qt})),n.d(r,"InboundFilters",(function(){return Zt}));var o={};n.r(o),n.d(o,"GlobalHandlers",(function(){return ne})),n.d(o,"TryCatch",(function(){return ee})),n.d(o,"Breadcrumbs",(function(){return Jt})),n.d(o,"LinkedErrors",(function(){return re})),n.d(o,"UserAgent",(function(){return ie}));var i={};n.r(i),n.d(i,"BaseTransport",(function(){return mt})),n.d(i,"FetchTransport",(function(){return jt})),n.d(i,"XHRTransport",(function(){return Et}));var a,c,s=n("mrSG");!function(t){t.Fatal="fatal",t.Error="error",t.Warning="warning",t.Log="log",t.Info="info",t.Debug="debug",t.Critical="critical"}(a||(a={})),function(t){t.fromString=function(e){switch(e){case"debug":return t.Debug;case"info":return t.Info;case"warn":case"warning":return t.Warning;case"error":return t.Error;case"fatal":return t.Fatal;case"critical":return t.Critical;case"log":default:return t.Log}}}(a||(a={})),function(t){t.Unknown="unknown",t.Skipped="skipped",t.Success="success",t.RateLimit="rate_limit",t.Invalid="invalid",t.Failed="failed"}(c||(c={})),function(t){t.fromHttpCode=function(e){return e>=200&&e<300?t.Success:429===e?t.RateLimit:e>=400&&e<500?t.Invalid:e>=500?t.Failed:t.Unknown}}(c||(c={}));var u,p=n("9AQC"),l=n("9/Zf");!function(t){t.PENDING="PENDING",t.RESOLVED="RESOLVED",t.REJECTED="REJECTED"}(u||(u={}));var f=function(){function t(t){var e=this;this._state=u.PENDING,this._handlers=[],this._resolve=function(t){e._setResult(u.RESOLVED,t)},this._reject=function(t){e._setResult(u.REJECTED,t)},this._setResult=function(t,n){e._state===u.PENDING&&(Object(p.m)(n)?n.then(e._resolve,e._reject):(e._state=t,e._value=n,e._executeHandlers()))},this._attachHandler=function(t){e._handlers=e._handlers.concat(t),e._executeHandlers()},this._executeHandlers=function(){if(e._state!==u.PENDING){var t=e._handlers.slice();e._handlers=[],t.forEach((function(t){t.done||(e._state===u.RESOLVED&&t.onfulfilled&&t.onfulfilled(e._value),e._state===u.REJECTED&&t.onrejected&&t.onrejected(e._value),t.done=!0)}))}};try{t(this._resolve,this._reject)}catch(t){this._reject(t)}}return t.resolve=function(e){return new t((function(t){t(e)}))},t.reject=function(e){return new t((function(t,n){n(e)}))},t.all=function(e){return new t((function(n,r){if(Array.isArray(e))if(0!==e.length){var o=e.length,i=[];e.forEach((function(e,a){t.resolve(e).then((function(t){i[a]=t,0===(o-=1)&&n(i)})).then(null,r)}))}else n([]);else r(new TypeError("Promise.all requires an array as input."))}))},t.prototype.then=function(e,n){var r=this;return new t((function(t,o){r._attachHandler({done:!1,onfulfilled:function(n){if(e)try{return void t(e(n))}catch(t){return void o(t)}else t(n)},onrejected:function(e){if(n)try{return void t(n(e))}catch(t){return void o(t)}else o(e)}})}))},t.prototype.catch=function(t){return this.then((function(t){return t}),t)},t.prototype.finally=function(e){var n=this;return new t((function(t,r){var o,i;return n.then((function(t){i=!1,o=t,e&&e()}),(function(t){i=!0,o=t,e&&e()})).then((function(){i?r(o):t(o)}))}))},t.prototype.toString=function(){return"[object SyncPromise]"},t}(),h=function(){function t(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._user={},this._tags={},this._extra={},this._contexts={}}return t.clone=function(e){var n=new t;return e&&(n._breadcrumbs=Object(s.e)(e._breadcrumbs),n._tags=Object(s.a)({},e._tags),n._extra=Object(s.a)({},e._extra),n._contexts=Object(s.a)({},e._contexts),n._user=e._user,n._level=e._level,n._span=e._span,n._transactionName=e._transactionName,n._fingerprint=e._fingerprint,n._eventProcessors=Object(s.e)(e._eventProcessors)),n},t.prototype.addScopeListener=function(t){this._scopeListeners.push(t)},t.prototype.addEventProcessor=function(t){return this._eventProcessors.push(t),this},t.prototype.setUser=function(t){return this._user=t||{},this._notifyScopeListeners(),this},t.prototype.setTags=function(t){return this._tags=Object(s.a)(Object(s.a)({},this._tags),t),this._notifyScopeListeners(),this},t.prototype.setTag=function(t,e){var n;return this._tags=Object(s.a)(Object(s.a)({},this._tags),((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setExtras=function(t){return this._extra=Object(s.a)(Object(s.a)({},this._extra),t),this._notifyScopeListeners(),this},t.prototype.setExtra=function(t,e){var n;return this._extra=Object(s.a)(Object(s.a)({},this._extra),((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setFingerprint=function(t){return this._fingerprint=t,this._notifyScopeListeners(),this},t.prototype.setLevel=function(t){return this._level=t,this._notifyScopeListeners(),this},t.prototype.setTransactionName=function(t){return this._transactionName=t,this._notifyScopeListeners(),this},t.prototype.setTransaction=function(t){return this.setTransactionName(t)},t.prototype.setContext=function(t,e){var n;return this._contexts=Object(s.a)(Object(s.a)({},this._contexts),((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setSpan=function(t){return this._span=t,this._notifyScopeListeners(),this},t.prototype.getSpan=function(){return this._span},t.prototype.getTransaction=function(){var t=this.getSpan();if(t&&t.spanRecorder&&t.spanRecorder.spans[0])return t.spanRecorder.spans[0]},t.prototype.update=function(e){if(!e)return this;if("function"==typeof e){var n=e(this);return n instanceof t?n:this}return e instanceof t?(this._tags=Object(s.a)(Object(s.a)({},this._tags),e._tags),this._extra=Object(s.a)(Object(s.a)({},this._extra),e._extra),this._contexts=Object(s.a)(Object(s.a)({},this._contexts),e._contexts),e._user&&(this._user=e._user),e._level&&(this._level=e._level),e._fingerprint&&(this._fingerprint=e._fingerprint)):Object(p.h)(e)&&(e=e,this._tags=Object(s.a)(Object(s.a)({},this._tags),e.tags),this._extra=Object(s.a)(Object(s.a)({},this._extra),e.extra),this._contexts=Object(s.a)(Object(s.a)({},this._contexts),e.contexts),e.user&&(this._user=e.user),e.level&&(this._level=e.level),e.fingerprint&&(this._fingerprint=e.fingerprint)),this},t.prototype.clear=function(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._contexts={},this._level=void 0,this._transactionName=void 0,this._fingerprint=void 0,this._span=void 0,this._notifyScopeListeners(),this},t.prototype.addBreadcrumb=function(t,e){var n=Object(s.a)({timestamp:Object(l.l)()},t);return this._breadcrumbs=void 0!==e&&e>=0?Object(s.e)(this._breadcrumbs,[n]).slice(-e):Object(s.e)(this._breadcrumbs,[n]),this._notifyScopeListeners(),this},t.prototype.clearBreadcrumbs=function(){return this._breadcrumbs=[],this._notifyScopeListeners(),this},t.prototype.applyToEvent=function(t,e){return this._extra&&Object.keys(this._extra).length&&(t.extra=Object(s.a)(Object(s.a)({},this._extra),t.extra)),this._tags&&Object.keys(this._tags).length&&(t.tags=Object(s.a)(Object(s.a)({},this._tags),t.tags)),this._user&&Object.keys(this._user).length&&(t.user=Object(s.a)(Object(s.a)({},this._user),t.user)),this._contexts&&Object.keys(this._contexts).length&&(t.contexts=Object(s.a)(Object(s.a)({},this._contexts),t.contexts)),this._level&&(t.level=this._level),this._transactionName&&(t.transaction=this._transactionName),this._span&&(t.contexts=Object(s.a)({trace:this._span.getTraceContext()},t.contexts)),this._applyFingerprint(t),t.breadcrumbs=Object(s.e)(t.breadcrumbs||[],this._breadcrumbs),t.breadcrumbs=t.breadcrumbs.length>0?t.breadcrumbs:void 0,this._notifyEventProcessors(Object(s.e)(d(),this._eventProcessors),t,e)},t.prototype._notifyEventProcessors=function(t,e,n,r){var o=this;return void 0===r&&(r=0),new f((function(i,a){var c=t[r];if(null===e||"function"!=typeof c)i(e);else{var u=c(Object(s.a)({},e),n);Object(p.m)(u)?u.then((function(e){return o._notifyEventProcessors(t,e,n,r+1).then(i)})).then(null,a):o._notifyEventProcessors(t,u,n,r+1).then(i).then(null,a)}}))},t.prototype._notifyScopeListeners=function(){var t=this;this._notifyingListeners||(this._notifyingListeners=!0,setTimeout((function(){t._scopeListeners.forEach((function(e){e(t)})),t._notifyingListeners=!1})))},t.prototype._applyFingerprint=function(t){t.fingerprint=t.fingerprint?Array.isArray(t.fingerprint)?t.fingerprint:[t.fingerprint]:[],this._fingerprint&&(t.fingerprint=t.fingerprint.concat(this._fingerprint)),t.fingerprint&&!t.fingerprint.length&&delete t.fingerprint},t}();function d(){var t=Object(l.f)();return t.__SENTRY__=t.__SENTRY__||{},t.__SENTRY__.globalEventProcessors=t.__SENTRY__.globalEventProcessors||[],t.__SENTRY__.globalEventProcessors}function v(t){d().push(t)}var _=Object(l.f)(),y="Sentry Logger ",b=function(){function t(){this._enabled=!1}return t.prototype.disable=function(){this._enabled=!1},t.prototype.enable=function(){this._enabled=!0},t.prototype.log=function(){for(var t=[],e=0;e0?t[t.length-1].scope:void 0,n=h.clone(e);return this.getStack().push({client:this.getClient(),scope:n}),n},t.prototype.popScope=function(){return void 0!==this.getStack().pop()},t.prototype.withScope=function(t){var e=this.pushScope();try{t(e)}finally{this.popScope()}},t.prototype.getClient=function(){return this.getStackTop().client},t.prototype.getScope=function(){return this.getStackTop().scope},t.prototype.getStack=function(){return this._stack},t.prototype.getStackTop=function(){return this._stack[this._stack.length-1]},t.prototype.captureException=function(t,e){var n=this._lastEventId=Object(l.m)(),r=e;if(!e){var o=void 0;try{throw new Error("Sentry syntheticException")}catch(t){o=t}r={originalException:t,syntheticException:o}}return this._invokeClient("captureException",t,Object(s.a)(Object(s.a)({},r),{event_id:n})),n},t.prototype.captureMessage=function(t,e,n){var r=this._lastEventId=Object(l.m)(),o=n;if(!n){var i=void 0;try{throw new Error(t)}catch(t){i=t}o={originalException:t,syntheticException:i}}return this._invokeClient("captureMessage",t,e,Object(s.a)(Object(s.a)({},o),{event_id:r})),r},t.prototype.captureEvent=function(t,e){var n=this._lastEventId=Object(l.m)();return this._invokeClient("captureEvent",t,Object(s.a)(Object(s.a)({},e),{event_id:n})),n},t.prototype.lastEventId=function(){return this._lastEventId},t.prototype.addBreadcrumb=function(t,e){var n=this.getStackTop();if(n.scope&&n.client){var r=n.client.getOptions&&n.client.getOptions()||{},o=r.beforeBreadcrumb,i=void 0===o?null:o,a=r.maxBreadcrumbs,c=void 0===a?100:a;if(!(c<=0)){var u=Object(l.l)(),p=Object(s.a)({timestamp:u},t),f=i?Object(l.c)((function(){return i(p,e)})):p;null!==f&&n.scope.addBreadcrumb(f,Math.min(c,100))}}},t.prototype.setUser=function(t){var e=this.getStackTop();e.scope&&e.scope.setUser(t)},t.prototype.setTags=function(t){var e=this.getStackTop();e.scope&&e.scope.setTags(t)},t.prototype.setExtras=function(t){var e=this.getStackTop();e.scope&&e.scope.setExtras(t)},t.prototype.setTag=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setTag(t,e)},t.prototype.setExtra=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setExtra(t,e)},t.prototype.setContext=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setContext(t,e)},t.prototype.configureScope=function(t){var e=this.getStackTop();e.scope&&e.client&&t(e.scope)},t.prototype.run=function(t){var e=j(this);try{t(this)}finally{j(e)}},t.prototype.getIntegration=function(t){var e=this.getClient();if(!e)return null;try{return e.getIntegration(t)}catch(e){return g.warn("Cannot retrieve integration "+t.id+" from the current Hub"),null}},t.prototype.startSpan=function(t){return this._callExtensionMethod("startSpan",t)},t.prototype.startTransaction=function(t){return this._callExtensionMethod("startTransaction",t)},t.prototype.traceHeaders=function(){return this._callExtensionMethod("traceHeaders")},t.prototype._invokeClient=function(t){for(var e,n=[],r=1;r1&&(l=h.slice(0,-1).join("/"),f=h.pop()),f){var d=f.match(/^\d+/);d&&(f=d[0])}this._fromComponents({host:c,pass:a,path:l,projectId:f,port:p,protocol:r,user:o})},t.prototype._fromComponents=function(t){this.protocol=t.protocol,this.user=t.user,this.pass=t.pass||"",this.host=t.host,this.port=t.port||"",this.path=t.path||"",this.projectId=t.projectId},t.prototype._validate=function(){var t=this;if(["protocol","user","host","projectId"].forEach((function(e){if(!t[e])throw new q("Invalid Dsn: "+e+" missing")})),!this.projectId.match(/^\d+$/))throw new q("Invalid Dsn: Invalid projectId "+this.projectId);if("http"!==this.protocol&&"https"!==this.protocol)throw new q("Invalid Dsn: Invalid protocol "+this.protocol);if(this.port&&isNaN(parseInt(this.port,10)))throw new q("Invalid Dsn: Invalid port "+this.port)},t}(),G=n("6PXS"),X=n("+924"),J=[];function z(t){var e={};return function(t){var e=t.defaultIntegrations&&Object(s.e)(t.defaultIntegrations)||[],n=t.integrations,r=[];if(Array.isArray(n)){var o=n.map((function(t){return t.name})),i=[];e.forEach((function(t){-1===o.indexOf(t.name)&&-1===i.indexOf(t.name)&&(r.push(t),i.push(t.name))})),n.forEach((function(t){-1===i.indexOf(t.name)&&(r.push(t),i.push(t.name))}))}else"function"==typeof n?(r=n(e),r=Array.isArray(r)?r:[r]):r=Object(s.e)(e);var a=r.map((function(t){return t.name}));return-1!==a.indexOf("Debug")&&r.push.apply(r,Object(s.e)(r.splice(a.indexOf("Debug"),1))),r}(t).forEach((function(t){e[t.name]=t,function(t){-1===J.indexOf(t.name)&&(t.setupOnce(v,E),J.push(t.name),g.log("Integration installed: "+t.name))}(t)})),e}var $=function(){function t(t,e){this._integrations={},this._processing=!1,this._backend=new t(e),this._options=e,e.dsn&&(this._dsn=new Y(e.dsn))}return t.prototype.captureException=function(t,e,n){var r=this,o=e&&e.event_id;return this._processing=!0,this._getBackend().eventFromException(t,e).then((function(t){o=r.captureEvent(t,e,n)})),o},t.prototype.captureMessage=function(t,e,n,r){var o=this,i=n&&n.event_id;return this._processing=!0,(Object(p.i)(t)?this._getBackend().eventFromMessage(""+t,e,n):this._getBackend().eventFromException(t,n)).then((function(t){i=o.captureEvent(t,n,r)})),i},t.prototype.captureEvent=function(t,e,n){var r=this,o=e&&e.event_id;return this._processing=!0,this._processEvent(t,e,n).then((function(t){o=t&&t.event_id,r._processing=!1})).then(null,(function(t){g.error(t),r._processing=!1})),o},t.prototype.getDsn=function(){return this._dsn},t.prototype.getOptions=function(){return this._options},t.prototype.flush=function(t){var e=this;return this._isClientProcessing(t).then((function(n){return clearInterval(n.interval),e._getBackend().getTransport().close(t).then((function(t){return n.ready&&t}))}))},t.prototype.close=function(t){var e=this;return this.flush(t).then((function(t){return e.getOptions().enabled=!1,t}))},t.prototype.setupIntegrations=function(){this._isEnabled()&&(this._integrations=z(this._options))},t.prototype.getIntegration=function(t){try{return this._integrations[t.id]||null}catch(e){return g.warn("Cannot retrieve integration "+t.id+" from the current Client"),null}},t.prototype._isClientProcessing=function(t){var e=this;return new f((function(n){var r=0,o=0;clearInterval(o),o=setInterval((function(){e._processing?(r+=1,t&&r>=t&&n({interval:o,ready:!1})):n({interval:o,ready:!0})}),1)}))},t.prototype._getBackend=function(){return this._backend},t.prototype._isEnabled=function(){return!1!==this.getOptions().enabled&&void 0!==this._dsn},t.prototype._prepareEvent=function(t,e,n){var r=this,o=this.getOptions().normalizeDepth,i=void 0===o?3:o,a=Object(s.a)(Object(s.a)({},t),{event_id:t.event_id||(n&&n.event_id?n.event_id:Object(l.m)()),timestamp:t.timestamp||Object(l.l)()});this._applyClientOptions(a),this._applyIntegrationsMetadata(a);var c=e;n&&n.captureContext&&(c=h.clone(c).update(n.captureContext));var u=f.resolve(a);return c&&(u=c.applyToEvent(a,n)),u.then((function(t){return"number"==typeof i&&i>0?r._normalizeEvent(t,i):t}))},t.prototype._normalizeEvent=function(t,e){if(!t)return null;var n=Object(s.a)(Object(s.a)(Object(s.a)(Object(s.a)(Object(s.a)({},t),t.breadcrumbs&&{breadcrumbs:t.breadcrumbs.map((function(t){return Object(s.a)(Object(s.a)({},t),t.data&&{data:Object(G.c)(t.data,e)})}))}),t.user&&{user:Object(G.c)(t.user,e)}),t.contexts&&{contexts:Object(G.c)(t.contexts,e)}),t.extra&&{extra:Object(G.c)(t.extra,e)});return t.contexts&&t.contexts.trace&&(n.contexts.trace=t.contexts.trace),n},t.prototype._applyClientOptions=function(t){var e=this.getOptions(),n=e.environment,r=e.release,o=e.dist,i=e.maxValueLength,a=void 0===i?250:i;void 0===t.environment&&void 0!==n&&(t.environment=n),void 0===t.release&&void 0!==r&&(t.release=r),void 0===t.dist&&void 0!==o&&(t.dist=o),t.message&&(t.message=Object(X.d)(t.message,a));var c=t.exception&&t.exception.values&&t.exception.values[0];c&&c.value&&(c.value=Object(X.d)(c.value,a));var s=t.request;s&&s.url&&(s.url=Object(X.d)(s.url,a))},t.prototype._applyIntegrationsMetadata=function(t){var e=t.sdk,n=Object.keys(this._integrations);e&&n.length>0&&(e.integrations=n)},t.prototype._sendEvent=function(t){this._getBackend().sendEvent(t)},t.prototype._processEvent=function(t,e,n){var r=this,o=this.getOptions(),i=o.beforeSend,a=o.sampleRate;if(!this._isEnabled())return f.reject("SDK not enabled, will not send event.");var c="transaction"===t.type;return!c&&"number"==typeof a&&Math.random()>a?f.reject("This event has been sampled, will not send event."):new f((function(o,a){r._prepareEvent(t,n,e).then((function(t){if(null!==t){var n=t;if(e&&e.data&&!0===e.data.__sentry__||!i||c)return r._sendEvent(n),void o(n);var s=i(t,e);if(void 0===s)g.error("`beforeSend` method has to return `null` or a valid event.");else if(Object(p.m)(s))r._handleAsyncBeforeSend(s,o,a);else{if(null===(n=s))return g.log("`beforeSend` returned `null`, will not send event."),void o(null);r._sendEvent(n),o(n)}}else a("An event processor returned null, will not send event.")})).then(null,(function(t){r.captureException(t,{data:{__sentry__:!0},originalException:t}),a("Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: "+t)}))}))},t.prototype._handleAsyncBeforeSend=function(t,e,n){var r=this;t.then((function(t){null!==t?(r._sendEvent(t),e(t)):n("`beforeSend` returned `null`, will not send event.")})).then(null,(function(t){n("beforeSend rejected with "+t)}))},t}(),V=function(){function t(){}return t.prototype.sendEvent=function(t){return f.resolve({reason:"NoopTransport: Event has been skipped because no Dsn is configured.",status:c.Skipped})},t.prototype.close=function(t){return f.resolve(!0)},t}(),Q=function(){function t(t){this._options=t,this._options.dsn||g.warn("No DSN provided, backend will not do anything."),this._transport=this._setupTransport()}return t.prototype.eventFromException=function(t,e){throw new q("Backend has to implement `eventFromException` method")},t.prototype.eventFromMessage=function(t,e,n){throw new q("Backend has to implement `eventFromMessage` method")},t.prototype.sendEvent=function(t){this._transport.sendEvent(t).then(null,(function(t){g.error("Error while sending event: "+t)}))},t.prototype.getTransport=function(){return this._transport},t.prototype._setupTransport=function(){return new V},t}();function K(){if(!("fetch"in Object(l.f)()))return!1;try{return new Headers,new Request(""),new Response,!0}catch(t){return!1}}function Z(t){return t&&/^function fetch\(\)\s+\{\s+\[native code\]\s+\}$/.test(t.toString())}function tt(){if(!K())return!1;try{return new Request("_",{referrerPolicy:"origin"}),!0}catch(t){return!1}}var et=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,nt=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js))(?::(\d+))?(?::(\d+))?\s*$/i,rt=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,ot=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,it=/\((\S*)(?::(\d+))(?::(\d+))\)/,at=/Minified React error #\d+;/i;function ct(t){var e=null,n=0;t&&("number"==typeof t.framesToPop?n=t.framesToPop:at.test(t.message)&&(n=1));try{if(e=function(t){if(!t||!t.stacktrace)return null;for(var e,n=t.stacktrace,r=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,o=/ line (\d+), column (\d+)\s*(?:in (?:]+)>|([^)]+))\((.*)\))? in (.*):\s*$/i,i=n.split("\n"),a=[],c=0;c eval")>-1&&(e=ot.exec(n[3]))?(n[1]=n[1]||"eval",n[3]=e[1],n[4]=e[2],n[5]=""):0!==a||n[5]||void 0===t.columnNumber||(o[0].column=t.columnNumber+1),r={url:n[3],func:n[1]||"?",args:n[2]?n[2].split(","):[],line:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}!r.func&&r.line&&(r.func="?"),o.push(r)}if(!o.length)return null;return{message:ut(t),name:t.name,stack:o}}(t))return st(e,n)}catch(t){}return{message:ut(t),name:t&&t.name,stack:[],failed:!0}}function st(t,e){try{return Object(s.a)(Object(s.a)({},t),{stack:t.stack.slice(e)})}catch(e){return t}}function ut(t){var e=t&&t.message;return e?e.error&&"string"==typeof e.error.message?e.error.message:e:"No error message"}function pt(t){var e=ft(t.stack),n={type:t.name,value:t.message};return e&&e.length&&(n.stacktrace={frames:e}),void 0===n.type&&""===n.value&&(n.value="Unrecoverable error caught"),n}function lt(t){return{exception:{values:[pt(t)]}}}function ft(t){if(!t||!t.length)return[];var e=t,n=e[0].func||"",r=e[e.length-1].func||"";return-1===n.indexOf("captureMessage")&&-1===n.indexOf("captureException")||(e=e.slice(1)),-1!==r.indexOf("sentryWrapped")&&(e=e.slice(0,-1)),e.slice(0,50).map((function(t){return{colno:null===t.column?void 0:t.column,filename:t.url||e[0].url,function:t.func||"?",in_app:!0,lineno:null===t.line?void 0:t.line}})).reverse()}function ht(t,e,n){var r=vt(e,n&&n.syntheticException||void 0,{attachStacktrace:t.attachStacktrace});return Object(l.a)(r,{handled:!0,type:"generic"}),r.level=a.Error,n&&n.event_id&&(r.event_id=n.event_id),f.resolve(r)}function dt(t,e,n,r){void 0===n&&(n=a.Info);var o=_t(e,r&&r.syntheticException||void 0,{attachStacktrace:t.attachStacktrace});return o.level=n,r&&r.event_id&&(o.event_id=r.event_id),f.resolve(o)}function vt(t,e,n){var r;if(void 0===n&&(n={}),Object(p.e)(t)&&t.error)return r=lt(ct(t=t.error));if(Object(p.a)(t)||Object(p.b)(t)){var o=t,i=o.name||(Object(p.a)(o)?"DOMError":"DOMException"),a=o.message?i+": "+o.message:i;return r=_t(a,e,n),Object(l.b)(r,a),r}return Object(p.d)(t)?r=lt(ct(t)):Object(p.h)(t)||Object(p.f)(t)?(r=function(t,e,n){var r={exception:{values:[{type:Object(p.f)(t)?t.constructor.name:n?"UnhandledRejection":"Error",value:"Non-Error "+(n?"promise rejection":"exception")+" captured with keys: "+Object(G.a)(t)}]},extra:{__serialized__:Object(G.d)(t)}};if(e){var o=ft(ct(e).stack);r.stacktrace={frames:o}}return r}(t,e,n.rejection),Object(l.a)(r,{synthetic:!0}),r):(r=_t(t,e,n),Object(l.b)(r,""+t,void 0),Object(l.a)(r,{synthetic:!0}),r)}function _t(t,e,n){void 0===n&&(n={});var r={message:t};if(n.attachStacktrace&&e){var o=ft(ct(e).stack);r.stacktrace={frames:o}}return r}function yt(t,e){var n="transaction"===t.type,r={body:JSON.stringify(t),url:n?e.getEnvelopeEndpointWithUrlEncodedAuth():e.getStoreEndpointWithUrlEncodedAuth()};if(n){var o=JSON.stringify({event_id:t.event_id,sent_at:new Date(1e3*Object(l.l)()).toISOString()})+"\n"+JSON.stringify({type:t.type})+"\n"+r.body;r.body=o}return r}var bt=function(){function t(t){this.dsn=t,this._dsnObject=new Y(t)}return t.prototype.getDsn=function(){return this._dsnObject},t.prototype.getBaseApiEndpoint=function(){var t=this._dsnObject,e=t.protocol?t.protocol+":":"",n=t.port?":"+t.port:"";return e+"//"+t.host+n+(t.path?"/"+t.path:"")+"/api/"},t.prototype.getStoreEndpoint=function(){return this._getIngestEndpoint("store")},t.prototype.getStoreEndpointWithUrlEncodedAuth=function(){return this.getStoreEndpoint()+"?"+this._encodedAuth()},t.prototype.getEnvelopeEndpointWithUrlEncodedAuth=function(){return this._getEnvelopeEndpoint()+"?"+this._encodedAuth()},t.prototype.getStoreEndpointPath=function(){var t=this._dsnObject;return(t.path?"/"+t.path:"")+"/api/"+t.projectId+"/store/"},t.prototype.getRequestHeaders=function(t,e){var n=this._dsnObject,r=["Sentry sentry_version=7"];return r.push("sentry_client="+t+"/"+e),r.push("sentry_key="+n.user),n.pass&&r.push("sentry_secret="+n.pass),{"Content-Type":"application/json","X-Sentry-Auth":r.join(", ")}},t.prototype.getReportDialogEndpoint=function(t){void 0===t&&(t={});var e=this._dsnObject,n=this.getBaseApiEndpoint()+"embed/error-page/",r=[];for(var o in r.push("dsn="+e.toString()),t)if("user"===o){if(!t.user)continue;t.user.name&&r.push("name="+encodeURIComponent(t.user.name)),t.user.email&&r.push("email="+encodeURIComponent(t.user.email))}else r.push(encodeURIComponent(o)+"="+encodeURIComponent(t[o]));return r.length?n+"?"+r.join("&"):n},t.prototype._getEnvelopeEndpoint=function(){return this._getIngestEndpoint("envelope")},t.prototype._getIngestEndpoint=function(t){return""+this.getBaseApiEndpoint()+this._dsnObject.projectId+"/"+t+"/"},t.prototype._encodedAuth=function(){var t={sentry_key:this._dsnObject.user,sentry_version:"7"};return Object(G.e)(t)},t}(),gt=function(){function t(t){this._limit=t,this._buffer=[]}return t.prototype.isReady=function(){return void 0===this._limit||this.length()0&&n(!1)}),t);f.all(e._buffer).then((function(){clearTimeout(r),n(!0)})).then(null,(function(){n(!0)}))}))},t}(),mt=function(){function t(t){this.options=t,this._buffer=new gt(30),this._api=new bt(this.options.dsn),this.url=this._api.getStoreEndpointWithUrlEncodedAuth()}return t.prototype.sendEvent=function(t){throw new q("Transport Class has to implement `sendEvent` method")},t.prototype.close=function(t){return this._buffer.drain(t)},t}(),Ot=Object(l.f)(),jt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._disabledUntil=new Date(Date.now()),e}return Object(s.b)(e,t),e.prototype.sendEvent=function(t){var e=this;if(new Date(Date.now())0}function kt(){wt+=1,setTimeout((function(){wt-=1}))}function Tt(t,e,n){if(void 0===e&&(e={}),"function"!=typeof t)return t;try{if(t.__sentry__)return t;if(t.__sentry_wrapped__)return t.__sentry_wrapped__}catch(e){return t}var r=function(){var r=Array.prototype.slice.call(arguments);try{n&&"function"==typeof n&&n.apply(this,arguments);var o=r.map((function(t){return Tt(t,e)}));return t.handleEvent?t.handleEvent.apply(this,o):t.apply(this,o)}catch(t){throw kt(),B((function(n){n.addEventProcessor((function(t){var n=Object(s.a)({},t);return e.mechanism&&(Object(l.b)(n,void 0,void 0),Object(l.a)(n,e.mechanism)),n.extra=Object(s.a)(Object(s.a)({},n.extra),{arguments:r}),n})),T(t)})),t}};try{for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[o]=t[o])}catch(t){}t.prototype=t.prototype||{},r.prototype=t.prototype,Object.defineProperty(t,"__sentry_wrapped__",{enumerable:!1,value:r}),Object.defineProperties(r,{__sentry__:{enumerable:!1,value:!0},__sentry_original__:{enumerable:!1,value:t}});try{Object.getOwnPropertyDescriptor(r,"name").configurable&&Object.defineProperty(r,"name",{get:function(){return t.name}})}catch(t){}return r}function It(t){if(void 0===t&&(t={}),t.eventId)if(t.dsn){var e=document.createElement("script");e.async=!0,e.src=new bt(t.dsn).getReportDialogEndpoint(t),t.onLoad&&(e.onload=t.onLoad),(document.head||document.body).appendChild(e)}else g.error("Missing dsn option in showReportDialog call");else g.error("Missing eventId option in showReportDialog call")}var Rt,Dt=Object(l.f)(),Nt={},Ct={};function Ut(t){if(!Ct[t])switch(Ct[t]=!0,t){case"console":!function(){if(!("console"in Dt))return;["debug","info","warn","error","log","assert"].forEach((function(t){t in Dt.console&&Object(G.b)(Dt.console,t,(function(e){return function(){for(var n=[],r=0;r2?e[2]:void 0;if(r){var o=Rt,i=String(r);Rt=i,At("history",{from:o,to:i})}return t.apply(this,e)}}Dt.onpopstate=function(){for(var t=[],e=0;e"}0!==e.length&&E().addBreadcrumb({category:"ui."+t.name,message:e},{event:t.event,name:t.name})},t.prototype._xhrBreadcrumb=function(t){if(t.endTimestamp){if(t.xhr.__sentry_own_request__)return;E().addBreadcrumb({category:"xhr",data:t.xhr.__sentry_xhr__,type:"http"},{xhr:t.xhr})}else;},t.prototype._fetchBreadcrumb=function(t){t.endTimestamp&&(t.fetchData.url.match(/sentry_key/)&&"POST"===t.fetchData.method||(t.error?E().addBreadcrumb({category:"fetch",data:t.fetchData,level:a.Error,type:"http"},{data:t.error,input:t.args}):E().addBreadcrumb({category:"fetch",data:Object(s.a)(Object(s.a)({},t.fetchData),{status_code:t.response.status}),type:"http"},{input:t.args,response:t.response})))},t.prototype._historyBreadcrumb=function(t){var e=Object(l.f)(),n=t.from,r=t.to,o=Object(l.k)(e.location.href),i=Object(l.k)(n),a=Object(l.k)(r);i.path||(i=o),o.protocol===a.protocol&&o.host===a.host&&(r=a.relative),o.protocol===i.protocol&&o.host===i.host&&(n=i.relative),E().addBreadcrumb({category:"navigation",data:{from:n,to:r}})},t.id="Breadcrumbs",t}(),zt="sentry.javascript.browser",$t="5.22.3",Vt=function(t){function e(e){return void 0===e&&(e={}),t.call(this,xt,e)||this}return Object(s.b)(e,t),e.prototype.showReportDialog=function(t){void 0===t&&(t={}),Object(l.f)().document&&(this._isEnabled()?It(Object(s.a)(Object(s.a)({},t),{dsn:t.dsn||this.getDsn()})):g.error("Trying to call showReportDialog with Sentry Client disabled"))},e.prototype._prepareEvent=function(e,n,r){return e.platform=e.platform||"javascript",e.sdk=Object(s.a)(Object(s.a)({},e.sdk),{name:zt,packages:Object(s.e)(e.sdk&&e.sdk.packages||[],[{name:"npm:@sentry/browser",version:$t}]),version:$t}),t.prototype._prepareEvent.call(this,e,n,r)},e.prototype._sendEvent=function(e){var n=this.getIntegration(Jt);n&&n.addSentryBreadcrumb(e),t.prototype._sendEvent.call(this,e)},e}($),Qt=function(){function t(){this.name=t.id}return t.prototype.setupOnce=function(){Xt=Function.prototype.toString,Function.prototype.toString=function(){for(var t=[],e=0;e0?e:Object(l.g)();return 0===t.exception.values[0].stacktrace.frames.length&&t.exception.values[0].stacktrace.frames.push({colno:o,filename:a,function:"?",in_app:!0,lineno:i}),t},t.id="GlobalHandlers",t}(),re=function(){function t(e){void 0===e&&(e={}),this.name=t.id,this._key=e.key||"cause",this._limit=e.limit||5}return t.prototype.setupOnce=function(){v((function(e,n){var r=E().getIntegration(t);return r?r._handler(e,n):e}))},t.prototype._handler=function(t,e){if(!(t.exception&&t.exception.values&&e&&Object(p.g)(e.originalException,Error)))return t;var n=this._walkErrorTree(e.originalException,this._key);return t.exception.values=Object(s.e)(n,t.exception.values),t},t.prototype._walkErrorTree=function(t,e,n){if(void 0===n&&(n=[]),!Object(p.g)(t[e],Error)||n.length+1>=this._limit)return n;var r=pt(ct(t[e]));return this._walkErrorTree(t[e],e,Object(s.e)([r],n))},t.id="LinkedErrors",t}(),oe=Object(l.f)(),ie=function(){function t(){this.name=t.id}return t.prototype.setupOnce=function(){v((function(e){if(E().getIntegration(t)){if(!oe.navigator||!oe.location)return e;var n=e.request||{};return n.url=n.url||oe.location.href,n.headers=n.headers||{},n.headers["User-Agent"]=oe.navigator.userAgent,Object(s.a)(Object(s.a)({},e),{request:n})}return e}))},t.id="UserAgent",t}(),ae=[new r.InboundFilters,new r.FunctionToString,new ee,new Jt,new ne,new re,new ie];function ce(t){if(void 0===t&&(t={}),void 0===t.defaultIntegrations&&(t.defaultIntegrations=ae),void 0===t.release){var e=Object(l.f)();e.SENTRY_RELEASE&&e.SENTRY_RELEASE.id&&(t.release=e.SENTRY_RELEASE.id)}!function(t,e){!0===e.debug&&g.enable();var n=E(),r=new t(e);n.bindClient(r)}(Vt,t)}function se(t){void 0===t&&(t={}),t.eventId||(t.eventId=E().lastEventId());var e=E().getClient();e&&e.showReportDialog(t)}function ue(){return E().lastEventId()}function pe(){}function le(t){t()}function fe(t){var e=E().getClient();return e?e.flush(t):f.reject(!1)}function he(t){var e=E().getClient();return e?e.close(t):f.reject(!1)}function de(t){return Tt(t)()}var ve={},_e=Object(l.f)();_e.Sentry&&_e.Sentry.Integrations&&(ve=_e.Sentry.Integrations);var ye=Object(s.a)(Object(s.a)(Object(s.a)({},ve),r),o)},wCA9:function(t,e,n){"use strict";n.d(e,"a",(function(){return r}));var r=function(){function t(){this._hasWeakSet="function"==typeof WeakSet,this._inner=this._hasWeakSet?new WeakSet:[]}return t.prototype.memoize=function(t){if(this._hasWeakSet)return!!this._inner.has(t)||(this._inner.add(t),!1);for(var e=0;e ll) {\n // eslint-disable-next-line no-param-reassign\n colno = ll;\n }\n var start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n var end = Math.min(start + 140, ll);\n if (end > ll - 5) {\n end = ll;\n }\n if (end === ll) {\n start = Math.max(end - 140, 0);\n }\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = \"'{snip} \" + newLine;\n }\n if (end < ll) {\n newLine += ' {snip}';\n }\n return newLine;\n}\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function safeJoin(input, delimiter) {\n if (!Array.isArray(input)) {\n return '';\n }\n var output = [];\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (var i = 0; i < input.length; i++) {\n var value = input[i];\n try {\n output.push(String(value));\n }\n catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n return output.join(delimiter);\n}\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value, pattern) {\n if (!isString(value)) {\n return false;\n }\n if (isRegExp(pattern)) {\n return pattern.test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n//# sourceMappingURL=string.js.map","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import { __values } from \"tslib\";\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive, isSyntheticEvent } from './is';\nimport { Memo } from './memo';\nimport { getFunctionName, htmlTreeAsString } from './misc';\nimport { truncate } from './string';\n/**\n * Wrap a given object method with a higher-order function\n *\n * @param source An object that contains a method to be wrapped.\n * @param name A name of method to be wrapped.\n * @param replacement A function that should be used to wrap a given method.\n * @returns void\n */\nexport function fill(source, name, replacement) {\n if (!(name in source)) {\n return;\n }\n var original = source[name];\n var wrapped = replacement(original);\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n try {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __sentry_original__: {\n enumerable: false,\n value: original,\n },\n });\n }\n catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n source[name] = wrapped;\n}\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object) {\n return Object.keys(object)\n .map(function (key) { return encodeURIComponent(key) + \"=\" + encodeURIComponent(object[key]); })\n .join('&');\n}\n/**\n * Transforms any object into an object literal with all it's attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order to be usable by the serializer\n */\nfunction getWalkSource(value) {\n if (isError(value)) {\n var error = value;\n var err = {\n message: error.message,\n name: error.name,\n stack: error.stack,\n };\n for (var i in error) {\n if (Object.prototype.hasOwnProperty.call(error, i)) {\n err[i] = error[i];\n }\n }\n return err;\n }\n if (isEvent(value)) {\n var event_1 = value;\n var source = {};\n source.type = event_1.type;\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n source.target = isElement(event_1.target)\n ? htmlTreeAsString(event_1.target)\n : Object.prototype.toString.call(event_1.target);\n }\n catch (_oO) {\n source.target = '';\n }\n try {\n source.currentTarget = isElement(event_1.currentTarget)\n ? htmlTreeAsString(event_1.currentTarget)\n : Object.prototype.toString.call(event_1.currentTarget);\n }\n catch (_oO) {\n source.currentTarget = '';\n }\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n source.detail = event_1.detail;\n }\n for (var i in event_1) {\n if (Object.prototype.hasOwnProperty.call(event_1, i)) {\n source[i] = event_1;\n }\n }\n return source;\n }\n return value;\n}\n/** Calculates bytes size of input string */\nfunction utf8Length(value) {\n // eslint-disable-next-line no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n/** Calculates bytes size of input object */\nfunction jsonSize(value) {\n return utf8Length(JSON.stringify(value));\n}\n/** JSDoc */\nexport function normalizeToSize(object, \n// Default Node.js REPL depth\ndepth, \n// 100kB, as 200kB is max payload size, so half sounds reasonable\nmaxSize) {\n if (depth === void 0) { depth = 3; }\n if (maxSize === void 0) { maxSize = 100 * 1024; }\n var serialized = normalize(object, depth);\n if (jsonSize(serialized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n return serialized;\n}\n/** Transforms any input value into a string form, either primitive value or a type of the input */\nfunction serializeValue(value) {\n var type = Object.prototype.toString.call(value);\n // Node.js REPL notation\n if (typeof value === 'string') {\n return value;\n }\n if (type === '[object Object]') {\n return '[Object]';\n }\n if (type === '[object Array]') {\n return '[Array]';\n }\n var normalized = normalizeValue(value);\n return isPrimitive(normalized) ? normalized : type;\n}\n/**\n * normalizeValue()\n *\n * Takes unserializable input and make it serializable friendly\n *\n * - translates undefined/NaN values to \"[undefined]\"/\"[NaN]\" respectively,\n * - serializes Error objects\n * - filter global objects\n */\nfunction normalizeValue(value, key) {\n if (key === 'domain' && value && typeof value === 'object' && value._events) {\n return '[Domain]';\n }\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n if (typeof global !== 'undefined' && value === global) {\n return '[Global]';\n }\n if (typeof window !== 'undefined' && value === window) {\n return '[Window]';\n }\n if (typeof document !== 'undefined' && value === document) {\n return '[Document]';\n }\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n if (value === void 0) {\n return '[undefined]';\n }\n if (typeof value === 'function') {\n return \"[Function: \" + getFunctionName(value) + \"]\";\n }\n return value;\n}\n/**\n * Walks an object to perform a normalization on it\n *\n * @param key of object that's walked in current iteration\n * @param value object to be walked\n * @param depth Optional number indicating how deep should walking be performed\n * @param memo Optional Memo class handling decycling\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function walk(key, value, depth, memo) {\n if (depth === void 0) { depth = +Infinity; }\n if (memo === void 0) { memo = new Memo(); }\n // If we reach the maximum depth, serialize whatever has left\n if (depth === 0) {\n return serializeValue(value);\n }\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // If value implements `toJSON` method, call it and return early\n if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n return value.toJSON();\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further\n var normalized = normalizeValue(value, key);\n if (isPrimitive(normalized)) {\n return normalized;\n }\n // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself\n var source = getWalkSource(value);\n // Create an accumulator that will act as a parent for all future itterations of that branch\n var acc = Array.isArray(value) ? [] : {};\n // If we already walked that branch, bail out, as it's circular reference\n if (memo.memoize(value)) {\n return '[Circular ~]';\n }\n // Walk all keys of the source\n for (var innerKey in source) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {\n continue;\n }\n // Recursively walk through all the child nodes\n acc[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n }\n // Once walked through all the branches, remove the parent from memo storage\n memo.unmemoize(value);\n // Return accumulated values\n return acc;\n}\n/**\n * normalize()\n *\n * - Creates a copy to prevent original input mutation\n * - Skip non-enumerablers\n * - Calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format\n * - Translates known global objects/Classes to a string representations\n * - Takes care of Error objects serialization\n * - Optionally limit depth of final output\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function normalize(input, depth) {\n try {\n return JSON.parse(JSON.stringify(input, function (key, value) { return walk(key, value, depth); }));\n }\n catch (_oO) {\n return '**non-serializable**';\n }\n}\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function extractExceptionKeysForMessage(exception, maxLength) {\n if (maxLength === void 0) { maxLength = 40; }\n var keys = Object.keys(getWalkSource(exception));\n keys.sort();\n if (!keys.length) {\n return '[object has no keys]';\n }\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n for (var includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n var serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n return '';\n}\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys(val) {\n var e_1, _a;\n if (isPlainObject(val)) {\n var obj = val;\n var rv = {};\n try {\n for (var _b = __values(Object.keys(obj)), _c = _b.next(); !_c.done; _c = _b.next()) {\n var key = _c.value;\n if (typeof obj[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(obj[key]);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n return rv;\n }\n if (Array.isArray(val)) {\n return val.map(dropUndefinedKeys);\n }\n return val;\n}\n//# sourceMappingURL=object.js.map","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","import { isString } from './is';\nimport { snipLine } from './string';\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function dynamicRequire(mod, request) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv() {\n return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n}\nvar fallbackGlobalObject = {};\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject() {\n return (isNodeEnv()\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject);\n}\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4() {\n var global = getGlobalObject();\n var crypto = global.crypto || global.msCrypto;\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n var arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n // set 4 in byte 7\n // eslint-disable-next-line no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // eslint-disable-next-line no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n var pad = function (num) {\n var v = num.toString(16);\n while (v.length < 4) {\n v = \"0\" + v;\n }\n return v;\n };\n return (pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7]));\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n // eslint-disable-next-line no-bitwise\n var r = (Math.random() * 16) | 0;\n // eslint-disable-next-line no-bitwise\n var v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(url) {\n if (!url) {\n return {};\n }\n var match = url.match(/^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n if (!match) {\n return {};\n }\n // coerce to undefined values to empty string so we don't get 'undefined'\n var query = match[6] || '';\n var fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment,\n };\n}\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event) {\n if (event.message) {\n return event.message;\n }\n if (event.exception && event.exception.values && event.exception.values[0]) {\n var exception = event.exception.values[0];\n if (exception.type && exception.value) {\n return exception.type + \": \" + exception.value;\n }\n return exception.type || exception.value || event.event_id || '';\n }\n return event.event_id || '';\n}\n/** JSDoc */\nexport function consoleSandbox(callback) {\n var global = getGlobalObject();\n var levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n if (!('console' in global)) {\n return callback();\n }\n var originalConsole = global.console;\n var wrappedLevels = {};\n // Restore all wrapped console methods\n levels.forEach(function (level) {\n if (level in global.console && originalConsole[level].__sentry_original__) {\n wrappedLevels[level] = originalConsole[level];\n originalConsole[level] = originalConsole[level].__sentry_original__;\n }\n });\n // Perform callback manipulations\n var result = callback();\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(function (level) {\n originalConsole[level] = wrappedLevels[level];\n });\n return result;\n}\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event, value, type) {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].value = event.exception.values[0].value || value || '';\n event.exception.values[0].type = event.exception.values[0].type || type || 'Error';\n}\n/**\n * Adds exception mechanism to a given event.\n * @param event The event to modify.\n * @param mechanism Mechanism of the mechanism.\n * @hidden\n */\nexport function addExceptionMechanism(event, mechanism) {\n if (mechanism === void 0) { mechanism = {}; }\n // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better?\n try {\n // @ts-ignore Type 'Mechanism | {}' is not assignable to type 'Mechanism | undefined'\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values[0].mechanism = event.exception.values[0].mechanism || {};\n Object.keys(mechanism).forEach(function (key) {\n // @ts-ignore Mechanism has no index signature\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values[0].mechanism[key] = mechanism[key];\n });\n }\n catch (_oO) {\n // no-empty\n }\n}\n/**\n * A safe form of location.href\n */\nexport function getLocationHref() {\n try {\n return document.location.href;\n }\n catch (oO) {\n return '';\n }\n}\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem) {\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n var currentElem = elem;\n var MAX_TRAVERSE_HEIGHT = 5;\n var MAX_OUTPUT_LEN = 80;\n var out = [];\n var height = 0;\n var len = 0;\n var separator = ' > ';\n var sepLength = separator.length;\n var nextStr = void 0;\n // eslint-disable-next-line no-plusplus\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n out.push(nextStr);\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n return out.reverse().join(separator);\n }\n catch (_oO) {\n return '';\n }\n}\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el) {\n var elem = el;\n var out = [];\n var className;\n var classes;\n var key;\n var attr;\n var i;\n if (!elem || !elem.tagName) {\n return '';\n }\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push(\"#\" + elem.id);\n }\n // eslint-disable-next-line prefer-const\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(\".\" + classes[i]);\n }\n }\n var allowedAttrs = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < allowedAttrs.length; i++) {\n key = allowedAttrs[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(\"[\" + key + \"=\\\"\" + attr + \"\\\"]\");\n }\n }\n return out.join('');\n}\nvar INITIAL_TIME = Date.now();\nvar prevNow = 0;\nvar performanceFallback = {\n now: function () {\n var now = Date.now() - INITIAL_TIME;\n if (now < prevNow) {\n now = prevNow;\n }\n prevNow = now;\n return now;\n },\n timeOrigin: INITIAL_TIME,\n};\nexport var crossPlatformPerformance = (function () {\n if (isNodeEnv()) {\n try {\n var perfHooks = dynamicRequire(module, 'perf_hooks');\n return perfHooks.performance;\n }\n catch (_) {\n return performanceFallback;\n }\n }\n var performance = getGlobalObject().performance;\n if (!performance || !performance.now) {\n return performanceFallback;\n }\n // Polyfill for performance.timeOrigin.\n //\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n if (performance.timeOrigin === undefined) {\n // As of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always a\n // valid fallback. In the absence of a initial time provided by the browser, fallback to INITIAL_TIME.\n // @ts-ignore ignored because timeOrigin is a readonly property but we want to override\n // eslint-disable-next-line deprecation/deprecation\n performance.timeOrigin = (performance.timing && performance.timing.navigationStart) || INITIAL_TIME;\n }\n return performance;\n})();\n/**\n * Returns a timestamp in seconds with milliseconds precision since the UNIX epoch calculated with the monotonic clock.\n */\nexport function timestampWithMs() {\n return (crossPlatformPerformance.timeOrigin + crossPlatformPerformance.now()) / 1000;\n}\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nvar SEMVER_REGEXP = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input) {\n var match = input.match(SEMVER_REGEXP) || [];\n var major = parseInt(match[1], 10);\n var minor = parseInt(match[2], 10);\n var patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\nvar defaultRetryAfter = 60 * 1000; // 60 seconds\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param now current unix timestamp\n * @param header string representation of 'Retry-After' header\n */\nexport function parseRetryAfterHeader(now, header) {\n if (!header) {\n return defaultRetryAfter;\n }\n var headerDelay = parseInt(\"\" + header, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n var headerDate = Date.parse(\"\" + header);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n return defaultRetryAfter;\n}\nvar defaultFunctionName = '';\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn) {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n }\n catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines, frame, linesOfContext) {\n if (linesOfContext === void 0) { linesOfContext = 5; }\n var lineno = frame.lineno || 0;\n var maxLines = lines.length;\n var sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map(function (line) { return snipLine(line, 0); });\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map(function (line) { return snipLine(line, 0); });\n}\n//# sourceMappingURL=misc.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat) {\n switch (Object.prototype.toString.call(wat)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat) {\n return Object.prototype.toString.call(wat) === '[object ErrorEvent]';\n}\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat) {\n return Object.prototype.toString.call(wat) === '[object DOMError]';\n}\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat) {\n return Object.prototype.toString.call(wat) === '[object DOMException]';\n}\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat) {\n return Object.prototype.toString.call(wat) === '[object String]';\n}\n/**\n * Checks whether given value's is a primitive (undefined, null, number, boolean, string)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat) {\n return Object.prototype.toString.call(wat) === '[object Object]';\n}\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat) {\n return Object.prototype.toString.call(wat) === '[object RegExp]';\n}\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n }\n catch (_e) {\n return false;\n }\n}\n//# sourceMappingURL=is.js.map","/** JSDoc */\n// eslint-disable-next-line import/export\nexport var Severity;\n(function (Severity) {\n /** JSDoc */\n Severity[\"Fatal\"] = \"fatal\";\n /** JSDoc */\n Severity[\"Error\"] = \"error\";\n /** JSDoc */\n Severity[\"Warning\"] = \"warning\";\n /** JSDoc */\n Severity[\"Log\"] = \"log\";\n /** JSDoc */\n Severity[\"Info\"] = \"info\";\n /** JSDoc */\n Severity[\"Debug\"] = \"debug\";\n /** JSDoc */\n Severity[\"Critical\"] = \"critical\";\n})(Severity || (Severity = {}));\n// eslint-disable-next-line @typescript-eslint/no-namespace, import/export\n(function (Severity) {\n /**\n * Converts a string-based level into a {@link Severity}.\n *\n * @param level string representation of Severity\n * @returns Severity\n */\n function fromString(level) {\n switch (level) {\n case 'debug':\n return Severity.Debug;\n case 'info':\n return Severity.Info;\n case 'warn':\n case 'warning':\n return Severity.Warning;\n case 'error':\n return Severity.Error;\n case 'fatal':\n return Severity.Fatal;\n case 'critical':\n return Severity.Critical;\n case 'log':\n default:\n return Severity.Log;\n }\n }\n Severity.fromString = fromString;\n})(Severity || (Severity = {}));\n//# sourceMappingURL=severity.js.map","/** The status of an event. */\n// eslint-disable-next-line import/export\nexport var Status;\n(function (Status) {\n /** The status could not be determined. */\n Status[\"Unknown\"] = \"unknown\";\n /** The event was skipped due to configuration or callbacks. */\n Status[\"Skipped\"] = \"skipped\";\n /** The event was sent to Sentry successfully. */\n Status[\"Success\"] = \"success\";\n /** The client is currently rate limited and will try again later. */\n Status[\"RateLimit\"] = \"rate_limit\";\n /** The event could not be processed. */\n Status[\"Invalid\"] = \"invalid\";\n /** A server-side error ocurred during submission. */\n Status[\"Failed\"] = \"failed\";\n})(Status || (Status = {}));\n// eslint-disable-next-line @typescript-eslint/no-namespace, import/export\n(function (Status) {\n /**\n * Converts a HTTP status code into a {@link Status}.\n *\n * @param code The HTTP response status code.\n * @returns The send status or {@link Status.Unknown}.\n */\n function fromHttpCode(code) {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n if (code === 429) {\n return Status.RateLimit;\n }\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n if (code >= 500) {\n return Status.Failed;\n }\n return Status.Unknown;\n }\n Status.fromHttpCode = fromHttpCode;\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/typedef */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isThenable } from './is';\n/** SyncPromise internal states */\nvar States;\n(function (States) {\n /** Pending */\n States[\"PENDING\"] = \"PENDING\";\n /** Resolved / OK */\n States[\"RESOLVED\"] = \"RESOLVED\";\n /** Rejected / Error */\n States[\"REJECTED\"] = \"REJECTED\";\n})(States || (States = {}));\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nvar SyncPromise = /** @class */ (function () {\n function SyncPromise(executor) {\n var _this = this;\n this._state = States.PENDING;\n this._handlers = [];\n /** JSDoc */\n this._resolve = function (value) {\n _this._setResult(States.RESOLVED, value);\n };\n /** JSDoc */\n this._reject = function (reason) {\n _this._setResult(States.REJECTED, reason);\n };\n /** JSDoc */\n this._setResult = function (state, value) {\n if (_this._state !== States.PENDING) {\n return;\n }\n if (isThenable(value)) {\n value.then(_this._resolve, _this._reject);\n return;\n }\n _this._state = state;\n _this._value = value;\n _this._executeHandlers();\n };\n // TODO: FIXME\n /** JSDoc */\n this._attachHandler = function (handler) {\n _this._handlers = _this._handlers.concat(handler);\n _this._executeHandlers();\n };\n /** JSDoc */\n this._executeHandlers = function () {\n if (_this._state === States.PENDING) {\n return;\n }\n var cachedHandlers = _this._handlers.slice();\n _this._handlers = [];\n cachedHandlers.forEach(function (handler) {\n if (handler.done) {\n return;\n }\n if (_this._state === States.RESOLVED) {\n if (handler.onfulfilled) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler.onfulfilled(_this._value);\n }\n }\n if (_this._state === States.REJECTED) {\n if (handler.onrejected) {\n handler.onrejected(_this._value);\n }\n }\n handler.done = true;\n });\n };\n try {\n executor(this._resolve, this._reject);\n }\n catch (e) {\n this._reject(e);\n }\n }\n /** JSDoc */\n SyncPromise.resolve = function (value) {\n return new SyncPromise(function (resolve) {\n resolve(value);\n });\n };\n /** JSDoc */\n SyncPromise.reject = function (reason) {\n return new SyncPromise(function (_, reject) {\n reject(reason);\n });\n };\n /** JSDoc */\n SyncPromise.all = function (collection) {\n return new SyncPromise(function (resolve, reject) {\n if (!Array.isArray(collection)) {\n reject(new TypeError(\"Promise.all requires an array as input.\"));\n return;\n }\n if (collection.length === 0) {\n resolve([]);\n return;\n }\n var counter = collection.length;\n var resolvedCollection = [];\n collection.forEach(function (item, index) {\n SyncPromise.resolve(item)\n .then(function (value) {\n resolvedCollection[index] = value;\n counter -= 1;\n if (counter !== 0) {\n return;\n }\n resolve(resolvedCollection);\n })\n .then(null, reject);\n });\n });\n };\n /** JSDoc */\n SyncPromise.prototype.then = function (onfulfilled, onrejected) {\n var _this = this;\n return new SyncPromise(function (resolve, reject) {\n _this._attachHandler({\n done: false,\n onfulfilled: function (result) {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result);\n return;\n }\n try {\n resolve(onfulfilled(result));\n return;\n }\n catch (e) {\n reject(e);\n return;\n }\n },\n onrejected: function (reason) {\n if (!onrejected) {\n reject(reason);\n return;\n }\n try {\n resolve(onrejected(reason));\n return;\n }\n catch (e) {\n reject(e);\n return;\n }\n },\n });\n });\n };\n /** JSDoc */\n SyncPromise.prototype.catch = function (onrejected) {\n return this.then(function (val) { return val; }, onrejected);\n };\n /** JSDoc */\n SyncPromise.prototype.finally = function (onfinally) {\n var _this = this;\n return new SyncPromise(function (resolve, reject) {\n var val;\n var isRejected;\n return _this.then(function (value) {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n }, function (reason) {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n }).then(function () {\n if (isRejected) {\n reject(val);\n return;\n }\n resolve(val);\n });\n });\n };\n /** JSDoc */\n SyncPromise.prototype.toString = function () {\n return '[object SyncPromise]';\n };\n return SyncPromise;\n}());\nexport { SyncPromise };\n//# sourceMappingURL=syncpromise.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { getGlobalObject, isPlainObject, isThenable, SyncPromise, timestampWithMs } from '@sentry/utils';\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nvar Scope = /** @class */ (function () {\n function Scope() {\n /** Flag if notifiying is happening. */\n this._notifyingListeners = false;\n /** Callback for client to receive scope changes. */\n this._scopeListeners = [];\n /** Callback list that will be called after {@link applyToEvent}. */\n this._eventProcessors = [];\n /** Array of breadcrumbs. */\n this._breadcrumbs = [];\n /** User */\n this._user = {};\n /** Tags */\n this._tags = {};\n /** Extra */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._extra = {};\n /** Contexts */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this._contexts = {};\n }\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n Scope.clone = function (scope) {\n var newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = __spread(scope._breadcrumbs);\n newScope._tags = __assign({}, scope._tags);\n newScope._extra = __assign({}, scope._extra);\n newScope._contexts = __assign({}, scope._contexts);\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = __spread(scope._eventProcessors);\n }\n return newScope;\n };\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n Scope.prototype.addScopeListener = function (callback) {\n this._scopeListeners.push(callback);\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.addEventProcessor = function (callback) {\n this._eventProcessors.push(callback);\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setUser = function (user) {\n this._user = user || {};\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTags = function (tags) {\n this._tags = __assign(__assign({}, this._tags), tags);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTag = function (key, value) {\n var _a;\n this._tags = __assign(__assign({}, this._tags), (_a = {}, _a[key] = value, _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setExtras = function (extras) {\n this._extra = __assign(__assign({}, this._extra), extras);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setExtra = function (key, extra) {\n var _a;\n this._extra = __assign(__assign({}, this._extra), (_a = {}, _a[key] = extra, _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setFingerprint = function (fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setLevel = function (level) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setTransactionName = function (name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * Can be removed in major version.\n * @deprecated in favor of {@link this.setTransactionName}\n */\n Scope.prototype.setTransaction = function (name) {\n return this.setTransactionName(name);\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Scope.prototype.setContext = function (key, context) {\n var _a;\n this._contexts = __assign(__assign({}, this._contexts), (_a = {}, _a[key] = context, _a));\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.setSpan = function (span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getSpan = function () {\n return this._span;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.getTransaction = function () {\n var span = this.getSpan();\n if (span && span.spanRecorder && span.spanRecorder.spans[0]) {\n return span.spanRecorder.spans[0];\n }\n return undefined;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.update = function (captureContext) {\n if (!captureContext) {\n return this;\n }\n if (typeof captureContext === 'function') {\n var updatedScope = captureContext(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n if (captureContext instanceof Scope) {\n this._tags = __assign(__assign({}, this._tags), captureContext._tags);\n this._extra = __assign(__assign({}, this._extra), captureContext._extra);\n this._contexts = __assign(__assign({}, this._contexts), captureContext._contexts);\n if (captureContext._user) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n }\n else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext;\n this._tags = __assign(__assign({}, this._tags), captureContext.tags);\n this._extra = __assign(__assign({}, this._extra), captureContext.extra);\n this._contexts = __assign(__assign({}, this._contexts), captureContext.contexts);\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n }\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.clear = function () {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._span = undefined;\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.addBreadcrumb = function (breadcrumb, maxBreadcrumbs) {\n var mergedBreadcrumb = __assign({ timestamp: timestampWithMs() }, breadcrumb);\n this._breadcrumbs =\n maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0\n ? __spread(this._breadcrumbs, [mergedBreadcrumb]).slice(-maxBreadcrumbs)\n : __spread(this._breadcrumbs, [mergedBreadcrumb]);\n this._notifyScopeListeners();\n return this;\n };\n /**\n * @inheritDoc\n */\n Scope.prototype.clearBreadcrumbs = function () {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n };\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional informartion about the original exception.\n * @hidden\n */\n Scope.prototype.applyToEvent = function (event, hint) {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = __assign(__assign({}, this._extra), event.extra);\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = __assign(__assign({}, this._tags), event.tags);\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = __assign(__assign({}, this._user), event.user);\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = __assign(__assign({}, this._contexts), event.contexts);\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relys on that.\n if (this._span) {\n event.contexts = __assign({ trace: this._span.getTraceContext() }, event.contexts);\n }\n this._applyFingerprint(event);\n event.breadcrumbs = __spread((event.breadcrumbs || []), this._breadcrumbs);\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n return this._notifyEventProcessors(__spread(getGlobalEventProcessors(), this._eventProcessors), event, hint);\n };\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n Scope.prototype._notifyEventProcessors = function (processors, event, hint, index) {\n var _this = this;\n if (index === void 0) { index = 0; }\n return new SyncPromise(function (resolve, reject) {\n var processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n }\n else {\n var result = processor(__assign({}, event), hint);\n if (isThenable(result)) {\n result\n .then(function (final) { return _this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve); })\n .then(null, reject);\n }\n else {\n _this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n };\n /**\n * This will be called on every set call.\n */\n Scope.prototype._notifyScopeListeners = function () {\n var _this = this;\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n setTimeout(function () {\n _this._scopeListeners.forEach(function (callback) {\n callback(_this);\n });\n _this._notifyingListeners = false;\n });\n }\n };\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n Scope.prototype._applyFingerprint = function (event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n };\n return Scope;\n}());\nexport { Scope };\n/**\n * Retruns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n var global = getGlobalObject();\n global.__SENTRY__ = global.__SENTRY__ || {};\n global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n return global.__SENTRY__.globalEventProcessors;\n}\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n//# sourceMappingURL=scope.js.map","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { consoleSandbox, getGlobalObject } from './misc';\n// TODO: Implement different loggers for different environments\nvar global = getGlobalObject();\n/** Prefix for logging strings */\nvar PREFIX = 'Sentry Logger ';\n/** JSDoc */\nvar Logger = /** @class */ (function () {\n /** JSDoc */\n function Logger() {\n this._enabled = false;\n }\n /** JSDoc */\n Logger.prototype.disable = function () {\n this._enabled = false;\n };\n /** JSDoc */\n Logger.prototype.enable = function () {\n this._enabled = true;\n };\n /** JSDoc */\n Logger.prototype.log = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.log(PREFIX + \"[Log]: \" + args.join(' '));\n });\n };\n /** JSDoc */\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.warn(PREFIX + \"[Warn]: \" + args.join(' '));\n });\n };\n /** JSDoc */\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!this._enabled) {\n return;\n }\n consoleSandbox(function () {\n global.console.error(PREFIX + \"[Error]: \" + args.join(' '));\n });\n };\n return Logger;\n}());\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nvar logger = global.__SENTRY__.logger || (global.__SENTRY__.logger = new Logger());\nexport { logger };\n//# sourceMappingURL=logger.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { consoleSandbox, getGlobalObject, isNodeEnv, logger, timestampWithMs, uuid4 } from '@sentry/utils';\nimport { Scope } from './scope';\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nexport var API_VERSION = 3;\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nvar DEFAULT_BREADCRUMBS = 100;\n/**\n * Absolute maximum number of breadcrumbs added to an event. The\n * `maxBreadcrumbs` option cannot be higher than this value.\n */\nvar MAX_BREADCRUMBS = 100;\n/**\n * @inheritDoc\n */\nvar Hub = /** @class */ (function () {\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n function Hub(client, scope, _version) {\n if (scope === void 0) { scope = new Scope(); }\n if (_version === void 0) { _version = API_VERSION; }\n this._version = _version;\n /** Is a {@link Layer}[] containing the client and scope */\n this._stack = [];\n this._stack.push({ client: client, scope: scope });\n this.bindClient(client);\n }\n /**\n * @inheritDoc\n */\n Hub.prototype.isOlderThan = function (version) {\n return this._version < version;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.bindClient = function (client) {\n var top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.pushScope = function () {\n // We want to clone the content of prev scope\n var stack = this.getStack();\n var parentScope = stack.length > 0 ? stack[stack.length - 1].scope : undefined;\n var scope = Scope.clone(parentScope);\n this.getStack().push({\n client: this.getClient(),\n scope: scope,\n });\n return scope;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.popScope = function () {\n return this.getStack().pop() !== undefined;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.withScope = function (callback) {\n var scope = this.pushScope();\n try {\n callback(scope);\n }\n finally {\n this.popScope();\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.getClient = function () {\n return this.getStackTop().client;\n };\n /** Returns the scope of the top stack. */\n Hub.prototype.getScope = function () {\n return this.getStackTop().scope;\n };\n /** Returns the scope stack for domains or the process. */\n Hub.prototype.getStack = function () {\n return this._stack;\n };\n /** Returns the topmost scope layer in the order domain > local > process. */\n Hub.prototype.getStackTop = function () {\n return this._stack[this._stack.length - 1];\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n Hub.prototype.captureException = function (exception, hint) {\n var eventId = (this._lastEventId = uuid4());\n var finalHint = hint;\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n var syntheticException = void 0;\n try {\n throw new Error('Sentry syntheticException');\n }\n catch (exception) {\n syntheticException = exception;\n }\n finalHint = {\n originalException: exception,\n syntheticException: syntheticException,\n };\n }\n this._invokeClient('captureException', exception, __assign(__assign({}, finalHint), { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.captureMessage = function (message, level, hint) {\n var eventId = (this._lastEventId = uuid4());\n var finalHint = hint;\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n var syntheticException = void 0;\n try {\n throw new Error(message);\n }\n catch (exception) {\n syntheticException = exception;\n }\n finalHint = {\n originalException: message,\n syntheticException: syntheticException,\n };\n }\n this._invokeClient('captureMessage', message, level, __assign(__assign({}, finalHint), { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.captureEvent = function (event, hint) {\n var eventId = (this._lastEventId = uuid4());\n this._invokeClient('captureEvent', event, __assign(__assign({}, hint), { event_id: eventId }));\n return eventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.lastEventId = function () {\n return this._lastEventId;\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.addBreadcrumb = function (breadcrumb, hint) {\n var top = this.getStackTop();\n if (!top.scope || !top.client) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = (top.client.getOptions && top.client.getOptions()) || {}, _b = _a.beforeBreadcrumb, beforeBreadcrumb = _b === void 0 ? null : _b, _c = _a.maxBreadcrumbs, maxBreadcrumbs = _c === void 0 ? DEFAULT_BREADCRUMBS : _c;\n if (maxBreadcrumbs <= 0) {\n return;\n }\n var timestamp = timestampWithMs();\n var mergedBreadcrumb = __assign({ timestamp: timestamp }, breadcrumb);\n var finalBreadcrumb = beforeBreadcrumb\n ? consoleSandbox(function () { return beforeBreadcrumb(mergedBreadcrumb, hint); })\n : mergedBreadcrumb;\n if (finalBreadcrumb === null) {\n return;\n }\n top.scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setUser = function (user) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setUser(user);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setTags = function (tags) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTags(tags);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setExtras = function (extras) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtras(extras);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setTag = function (key, value) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTag(key, value);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.setExtra = function (key, extra) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtra(key, extra);\n };\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Hub.prototype.setContext = function (name, context) {\n var top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setContext(name, context);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.configureScope = function (callback) {\n var top = this.getStackTop();\n if (top.scope && top.client) {\n callback(top.scope);\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.run = function (callback) {\n var oldHub = makeMain(this);\n try {\n callback(this);\n }\n finally {\n makeMain(oldHub);\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.getIntegration = function (integration) {\n var client = this.getClient();\n if (!client) {\n return null;\n }\n try {\n return client.getIntegration(integration);\n }\n catch (_oO) {\n logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Hub\");\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.startSpan = function (context) {\n return this._callExtensionMethod('startSpan', context);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.startTransaction = function (context) {\n return this._callExtensionMethod('startTransaction', context);\n };\n /**\n * @inheritDoc\n */\n Hub.prototype.traceHeaders = function () {\n return this._callExtensionMethod('traceHeaders');\n };\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Hub.prototype._invokeClient = function (method) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var top = this.getStackTop();\n if (top && top.client && top.client[method]) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (_a = top.client)[method].apply(_a, __spread(args, [top.scope]));\n }\n };\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Hub.prototype._callExtensionMethod = function (method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var carrier = getMainCarrier();\n var sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n logger.warn(\"Extension method \" + method + \" couldn't be found, doing nothing.\");\n };\n return Hub;\n}());\nexport { Hub };\n/** Returns the global shim registry. */\nexport function getMainCarrier() {\n var carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub) {\n var registry = getMainCarrier();\n var oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub() {\n // Get main carrier (global for every environment)\n var registry = getMainCarrier();\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n/**\n * Try to read the hub from an active domain, and fallback to the registry if one doesn't exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry) {\n try {\n var property = 'domain';\n var carrier = getMainCarrier();\n var sentry = carrier.__SENTRY__;\n if (!sentry || !sentry.extensions || !sentry.extensions[property]) {\n return getHubFromCarrier(registry);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var domain = sentry.extensions[property];\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var activeDomain = domain.active;\n // If there's no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n var registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n }\n catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n return true;\n }\n return false;\n}\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier) {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n return carrier.__SENTRY__.hub;\n }\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = new Hub();\n return carrier.__SENTRY__.hub;\n}\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n */\nexport function setHubOnCarrier(carrier, hub) {\n if (!carrier) {\n return false;\n }\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = hub;\n return true;\n}\n//# sourceMappingURL=hub.js.map","import { __assign, __read, __spread } from \"tslib\";\nimport { getCurrentHub } from '@sentry/hub';\n/**\n * This calls a function on the current hub.\n * @param method function to call on hub.\n * @param args to pass to function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction callOnHub(method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n var hub = getCurrentHub();\n if (hub && hub[method]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return hub[method].apply(hub, __spread(args));\n }\n throw new Error(\"No hub defined or \" + method + \" was not found on the hub, please open a bug report.\");\n}\n/**\n * Captures an exception event and sends it to Sentry.\n *\n * @param exception An exception-like object.\n * @returns The generated eventId.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function captureException(exception, captureContext) {\n var syntheticException;\n try {\n throw new Error('Sentry syntheticException');\n }\n catch (exception) {\n syntheticException = exception;\n }\n return callOnHub('captureException', exception, {\n captureContext: captureContext,\n originalException: exception,\n syntheticException: syntheticException,\n });\n}\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param level Define the level of the message.\n * @returns The generated eventId.\n */\nexport function captureMessage(message, captureContext) {\n var syntheticException;\n try {\n throw new Error(message);\n }\n catch (exception) {\n syntheticException = exception;\n }\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arrity of the `captureMessage(message, level)` method.\n var level = typeof captureContext === 'string' ? captureContext : undefined;\n var context = typeof captureContext !== 'string' ? { captureContext: captureContext } : undefined;\n return callOnHub('captureMessage', message, level, __assign({ originalException: message, syntheticException: syntheticException }, context));\n}\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nexport function captureEvent(event) {\n return callOnHub('captureEvent', event);\n}\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nexport function configureScope(callback) {\n callOnHub('configureScope', callback);\n}\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nexport function addBreadcrumb(breadcrumb) {\n callOnHub('addBreadcrumb', breadcrumb);\n}\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function setContext(name, context) {\n callOnHub('setContext', name, context);\n}\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nexport function setExtras(extras) {\n callOnHub('setExtras', extras);\n}\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nexport function setTags(tags) {\n callOnHub('setTags', tags);\n}\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nexport function setExtra(key, extra) {\n callOnHub('setExtra', key, extra);\n}\n/**\n * Set key:value that will be sent as tags data with the event.\n * @param key String key of tag\n * @param value String value of tag\n */\nexport function setTag(key, value) {\n callOnHub('setTag', key, value);\n}\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nexport function setUser(user) {\n callOnHub('setUser', user);\n}\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nexport function withScope(callback) {\n callOnHub('withScope', callback);\n}\n/**\n * Calls a function on the latest client. Use this with caution, it's meant as\n * in \"internal\" helper so we don't need to expose every possible function in\n * the shim. It is not guaranteed that the client actually implements the\n * function.\n *\n * @param method The method to call on the client/client.\n * @param args Arguments to pass to the client/fontend.\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function _callOnClient(method) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n callOnHub.apply(void 0, __spread(['_invokeClient', method], args));\n}\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual\n * tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and\n * child spans to other spans. To start a new child span within the transaction\n * or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished,\n * otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at\n * which point the transaction with all its finished child spans will be sent to\n * Sentry.\n *\n * @param context Properties of the new `Transaction`.\n */\nexport function startTransaction(context) {\n return callOnHub('startTransaction', __assign({}, context));\n}\n//# sourceMappingURL=index.js.map","export var setPrototypeOf = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties);\n/**\n * setPrototypeOf polyfill using __proto__\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction setProtoOf(obj, proto) {\n // @ts-ignore __proto__ does not exist on obj\n obj.__proto__ = proto;\n return obj;\n}\n/**\n * setPrototypeOf polyfill using mixin\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction mixinProperties(obj, proto) {\n for (var prop in proto) {\n // eslint-disable-next-line no-prototype-builtins\n if (!obj.hasOwnProperty(prop)) {\n // @ts-ignore typescript complains about indexing so we remove\n obj[prop] = proto[prop];\n }\n }\n return obj;\n}\n//# sourceMappingURL=polyfill.js.map","import { __extends } from \"tslib\";\nimport { setPrototypeOf } from './polyfill';\n/** An error emitted by Sentry SDKs and related utilities. */\nvar SentryError = /** @class */ (function (_super) {\n __extends(SentryError, _super);\n function SentryError(message) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _newTarget.prototype.constructor.name;\n setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return SentryError;\n}(Error));\nexport { SentryError };\n//# sourceMappingURL=error.js.map","import { __read } from \"tslib\";\nimport { SentryError } from './error';\n/** Regular expression used to parse a Dsn. */\nvar DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w.-]+)(?::(\\d+))?\\/(.+)/;\n/** Error message */\nvar ERROR_MESSAGE = 'Invalid Dsn';\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nvar Dsn = /** @class */ (function () {\n /** Creates a new Dsn component */\n function Dsn(from) {\n if (typeof from === 'string') {\n this._fromString(from);\n }\n else {\n this._fromComponents(from);\n }\n this._validate();\n }\n /**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\n Dsn.prototype.toString = function (withPassword) {\n if (withPassword === void 0) { withPassword = false; }\n var _a = this, host = _a.host, path = _a.path, pass = _a.pass, port = _a.port, projectId = _a.projectId, protocol = _a.protocol, user = _a.user;\n return (protocol + \"://\" + user + (withPassword && pass ? \":\" + pass : '') +\n (\"@\" + host + (port ? \":\" + port : '') + \"/\" + (path ? path + \"/\" : path) + projectId));\n };\n /** Parses a string into this Dsn. */\n Dsn.prototype._fromString = function (str) {\n var match = DSN_REGEX.exec(str);\n if (!match) {\n throw new SentryError(ERROR_MESSAGE);\n }\n var _a = __read(match.slice(1), 6), protocol = _a[0], user = _a[1], _b = _a[2], pass = _b === void 0 ? '' : _b, host = _a[3], _c = _a[4], port = _c === void 0 ? '' : _c, lastPath = _a[5];\n var path = '';\n var projectId = lastPath;\n var split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop();\n }\n if (projectId) {\n var projectMatch = projectId.match(/^\\d+/);\n if (projectMatch) {\n projectId = projectMatch[0];\n }\n }\n this._fromComponents({ host: host, pass: pass, path: path, projectId: projectId, port: port, protocol: protocol, user: user });\n };\n /** Maps Dsn components into this instance. */\n Dsn.prototype._fromComponents = function (components) {\n this.protocol = components.protocol;\n this.user = components.user;\n this.pass = components.pass || '';\n this.host = components.host;\n this.port = components.port || '';\n this.path = components.path || '';\n this.projectId = components.projectId;\n };\n /** Validates this Dsn and throws on error. */\n Dsn.prototype._validate = function () {\n var _this = this;\n ['protocol', 'user', 'host', 'projectId'].forEach(function (component) {\n if (!_this[component]) {\n throw new SentryError(ERROR_MESSAGE + \": \" + component + \" missing\");\n }\n });\n if (!this.projectId.match(/^\\d+$/)) {\n throw new SentryError(ERROR_MESSAGE + \": Invalid projectId \" + this.projectId);\n }\n if (this.protocol !== 'http' && this.protocol !== 'https') {\n throw new SentryError(ERROR_MESSAGE + \": Invalid protocol \" + this.protocol);\n }\n if (this.port && isNaN(parseInt(this.port, 10))) {\n throw new SentryError(ERROR_MESSAGE + \": Invalid port \" + this.port);\n }\n };\n return Dsn;\n}());\nexport { Dsn };\n//# sourceMappingURL=dsn.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\nexport var installedIntegrations = [];\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options) {\n var defaultIntegrations = (options.defaultIntegrations && __spread(options.defaultIntegrations)) || [];\n var userIntegrations = options.integrations;\n var integrations = [];\n if (Array.isArray(userIntegrations)) {\n var userIntegrationsNames_1 = userIntegrations.map(function (i) { return i.name; });\n var pickedIntegrationsNames_1 = [];\n // Leave only unique default integrations, that were not overridden with provided user integrations\n defaultIntegrations.forEach(function (defaultIntegration) {\n if (userIntegrationsNames_1.indexOf(defaultIntegration.name) === -1 &&\n pickedIntegrationsNames_1.indexOf(defaultIntegration.name) === -1) {\n integrations.push(defaultIntegration);\n pickedIntegrationsNames_1.push(defaultIntegration.name);\n }\n });\n // Don't add same user integration twice\n userIntegrations.forEach(function (userIntegration) {\n if (pickedIntegrationsNames_1.indexOf(userIntegration.name) === -1) {\n integrations.push(userIntegration);\n pickedIntegrationsNames_1.push(userIntegration.name);\n }\n });\n }\n else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(defaultIntegrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n }\n else {\n integrations = __spread(defaultIntegrations);\n }\n // Make sure that if present, `Debug` integration will always run last\n var integrationsNames = integrations.map(function (i) { return i.name; });\n var alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push.apply(integrations, __spread(integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1)));\n }\n return integrations;\n}\n/** Setup given integration */\nexport function setupIntegration(integration) {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n logger.log(\"Integration installed: \" + integration.name);\n}\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options) {\n var integrations = {};\n getIntegrationsToSetup(options).forEach(function (integration) {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n return integrations;\n}\n//# sourceMappingURL=integration.js.map","import { __assign } from \"tslib\";\n/* eslint-disable max-lines */\nimport { Scope } from '@sentry/hub';\nimport { Dsn, isPrimitive, isThenable, logger, normalize, SyncPromise, timestampWithMs, truncate, uuid4, } from '@sentry/utils';\nimport { setupIntegrations } from './integration';\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient.prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nvar BaseClient = /** @class */ (function () {\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n function BaseClient(backendClass, options) {\n /** Array of used integrations. */\n this._integrations = {};\n /** Is the client still processing a call? */\n this._processing = false;\n this._backend = new backendClass(options);\n this._options = options;\n if (options.dsn) {\n this._dsn = new Dsn(options.dsn);\n }\n }\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n BaseClient.prototype.captureException = function (exception, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n this._processing = true;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._getBackend()\n .eventFromException(exception, hint)\n .then(function (event) {\n eventId = _this.captureEvent(event, hint, scope);\n });\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureMessage = function (message, level, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n this._processing = true;\n var promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(\"\" + message, level, hint)\n : this._getBackend().eventFromException(message, hint);\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n promisedEvent.then(function (event) {\n eventId = _this.captureEvent(event, hint, scope);\n });\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.captureEvent = function (event, hint, scope) {\n var _this = this;\n var eventId = hint && hint.event_id;\n this._processing = true;\n this._processEvent(event, hint, scope)\n .then(function (finalEvent) {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n _this._processing = false;\n })\n .then(null, function (reason) {\n logger.error(reason);\n _this._processing = false;\n });\n return eventId;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getDsn = function () {\n return this._dsn;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getOptions = function () {\n return this._options;\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.flush = function (timeout) {\n var _this = this;\n return this._isClientProcessing(timeout).then(function (status) {\n clearInterval(status.interval);\n return _this._getBackend()\n .getTransport()\n .close(timeout)\n .then(function (transportFlushed) { return status.ready && transportFlushed; });\n });\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.close = function (timeout) {\n var _this = this;\n return this.flush(timeout).then(function (result) {\n _this.getOptions().enabled = false;\n return result;\n });\n };\n /**\n * Sets up the integrations\n */\n BaseClient.prototype.setupIntegrations = function () {\n if (this._isEnabled()) {\n this._integrations = setupIntegrations(this._options);\n }\n };\n /**\n * @inheritDoc\n */\n BaseClient.prototype.getIntegration = function (integration) {\n try {\n return this._integrations[integration.id] || null;\n }\n catch (_oO) {\n logger.warn(\"Cannot retrieve integration \" + integration.id + \" from the current Client\");\n return null;\n }\n };\n /** Waits for the client to be done with processing. */\n BaseClient.prototype._isClientProcessing = function (timeout) {\n var _this = this;\n return new SyncPromise(function (resolve) {\n var ticked = 0;\n var tick = 1;\n var interval = 0;\n clearInterval(interval);\n interval = setInterval(function () {\n if (!_this._processing) {\n resolve({\n interval: interval,\n ready: true,\n });\n }\n else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n resolve({\n interval: interval,\n ready: false,\n });\n }\n }\n }, tick);\n });\n };\n /** Returns the current backend. */\n BaseClient.prototype._getBackend = function () {\n return this._backend;\n };\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n BaseClient.prototype._isEnabled = function () {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n };\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n BaseClient.prototype._prepareEvent = function (event, scope, hint) {\n var _this = this;\n var _a = this.getOptions().normalizeDepth, normalizeDepth = _a === void 0 ? 3 : _a;\n var prepared = __assign(__assign({}, event), { event_id: event.event_id || (hint && hint.event_id ? hint.event_id : uuid4()), timestamp: event.timestamp || timestampWithMs() });\n this._applyClientOptions(prepared);\n this._applyIntegrationsMetadata(prepared);\n // If we have scope given to us, use it as the base for further modifications.\n // This allows us to prevent unnecessary copying of data if `captureContext` is not provided.\n var finalScope = scope;\n if (hint && hint.captureContext) {\n finalScope = Scope.clone(finalScope).update(hint.captureContext);\n }\n // We prepare the result here with a resolved Event.\n var result = SyncPromise.resolve(prepared);\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (finalScope) {\n // In case we have a hub we reassign it.\n result = finalScope.applyToEvent(prepared, hint);\n }\n return result.then(function (evt) {\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return _this._normalizeEvent(evt, normalizeDepth);\n }\n return evt;\n });\n };\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n BaseClient.prototype._normalizeEvent = function (event, depth) {\n if (!event) {\n return null;\n }\n var normalized = __assign(__assign(__assign(__assign(__assign({}, event), (event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(function (b) { return (__assign(__assign({}, b), (b.data && {\n data: normalize(b.data, depth),\n }))); }),\n })), (event.user && {\n user: normalize(event.user, depth),\n })), (event.contexts && {\n contexts: normalize(event.contexts, depth),\n })), (event.extra && {\n extra: normalize(event.extra, depth),\n }));\n // event.contexts.trace stores information about a Transaction. Similarly,\n // event.spans[] stores information about child Spans. Given that a\n // Transaction is conceptually a Span, normalization should apply to both\n // Transactions and Spans consistently.\n // For now the decision is to skip normalization of Transactions and Spans,\n // so this block overwrites the normalized event to add back the original\n // Transaction information prior to normalization.\n if (event.contexts && event.contexts.trace) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n normalized.contexts.trace = event.contexts.trace;\n }\n return normalized;\n };\n /**\n * Enhances event using the client configuration.\n * It takes care of all \"static\" values like environment, release and `dist`,\n * as well as truncating overly long values.\n * @param event event instance to be enhanced\n */\n BaseClient.prototype._applyClientOptions = function (event) {\n var _a = this.getOptions(), environment = _a.environment, release = _a.release, dist = _a.dist, _b = _a.maxValueLength, maxValueLength = _b === void 0 ? 250 : _b;\n if (event.environment === undefined && environment !== undefined) {\n event.environment = environment;\n }\n if (event.release === undefined && release !== undefined) {\n event.release = release;\n }\n if (event.dist === undefined && dist !== undefined) {\n event.dist = dist;\n }\n if (event.message) {\n event.message = truncate(event.message, maxValueLength);\n }\n var exception = event.exception && event.exception.values && event.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n var request = event.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n };\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param sdkInfo The sdkInfo of the event that will be filled with all integrations.\n */\n BaseClient.prototype._applyIntegrationsMetadata = function (event) {\n var sdkInfo = event.sdk;\n var integrationsArray = Object.keys(this._integrations);\n if (sdkInfo && integrationsArray.length > 0) {\n sdkInfo.integrations = integrationsArray;\n }\n };\n /**\n * Tells the backend to send this event\n * @param event The Sentry event to send\n */\n BaseClient.prototype._sendEvent = function (event) {\n this._getBackend().sendEvent(event);\n };\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n BaseClient.prototype._processEvent = function (event, hint, scope) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/unbound-method\n var _a = this.getOptions(), beforeSend = _a.beforeSend, sampleRate = _a.sampleRate;\n if (!this._isEnabled()) {\n return SyncPromise.reject('SDK not enabled, will not send event.');\n }\n var isTransaction = event.type === 'transaction';\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n if (!isTransaction && typeof sampleRate === 'number' && Math.random() > sampleRate) {\n return SyncPromise.reject('This event has been sampled, will not send event.');\n }\n return new SyncPromise(function (resolve, reject) {\n _this._prepareEvent(event, scope, hint)\n .then(function (prepared) {\n if (prepared === null) {\n reject('An event processor returned null, will not send event.');\n return;\n }\n var finalEvent = prepared;\n var isInternalException = hint && hint.data && hint.data.__sentry__ === true;\n // We skip beforeSend in case of transactions\n if (isInternalException || !beforeSend || isTransaction) {\n _this._sendEvent(finalEvent);\n resolve(finalEvent);\n return;\n }\n var beforeSendResult = beforeSend(prepared, hint);\n if (typeof beforeSendResult === 'undefined') {\n logger.error('`beforeSend` method has to return `null` or a valid event.');\n }\n else if (isThenable(beforeSendResult)) {\n _this._handleAsyncBeforeSend(beforeSendResult, resolve, reject);\n }\n else {\n finalEvent = beforeSendResult;\n if (finalEvent === null) {\n logger.log('`beforeSend` returned `null`, will not send event.');\n resolve(null);\n return;\n }\n // From here on we are really async\n _this._sendEvent(finalEvent);\n resolve(finalEvent);\n }\n })\n .then(null, function (reason) {\n _this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n reject(\"Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: \" + reason);\n });\n });\n };\n /**\n * Resolves before send Promise and calls resolve/reject on parent SyncPromise.\n */\n BaseClient.prototype._handleAsyncBeforeSend = function (beforeSend, resolve, reject) {\n var _this = this;\n beforeSend\n .then(function (processedEvent) {\n if (processedEvent === null) {\n reject('`beforeSend` returned `null`, will not send event.');\n return;\n }\n // From here on we are really async\n _this._sendEvent(processedEvent);\n resolve(processedEvent);\n })\n .then(null, function (e) {\n reject(\"beforeSend rejected with \" + e);\n });\n };\n return BaseClient;\n}());\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map","import { Status } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n/** Noop transport */\nvar NoopTransport = /** @class */ (function () {\n function NoopTransport() {\n }\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.sendEvent = function (_) {\n return SyncPromise.resolve({\n reason: \"NoopTransport: Event has been skipped because no Dsn is configured.\",\n status: Status.Skipped,\n });\n };\n /**\n * @inheritDoc\n */\n NoopTransport.prototype.close = function (_) {\n return SyncPromise.resolve(true);\n };\n return NoopTransport;\n}());\nexport { NoopTransport };\n//# sourceMappingURL=noop.js.map","import { logger, SentryError } from '@sentry/utils';\nimport { NoopTransport } from './transports/noop';\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nvar BaseBackend = /** @class */ (function () {\n /** Creates a new backend instance. */\n function BaseBackend(options) {\n this._options = options;\n if (!this._options.dsn) {\n logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n BaseBackend.prototype.eventFromException = function (_exception, _hint) {\n throw new SentryError('Backend has to implement `eventFromException` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.eventFromMessage = function (_message, _level, _hint) {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.sendEvent = function (event) {\n this._transport.sendEvent(event).then(null, function (reason) {\n logger.error(\"Error while sending event: \" + reason);\n });\n };\n /**\n * @inheritDoc\n */\n BaseBackend.prototype.getTransport = function () {\n return this._transport;\n };\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n BaseBackend.prototype._setupTransport = function () {\n return new NoopTransport();\n };\n return BaseBackend;\n}());\nexport { BaseBackend };\n//# sourceMappingURL=basebackend.js.map","import { logger } from './logger';\nimport { getGlobalObject } from './misc';\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent() {\n try {\n new ErrorEvent('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError() {\n try {\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore It really needs 1 argument, not 0.\n new DOMError('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException() {\n try {\n new DOMException('');\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch() {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n try {\n new Headers();\n new Request('');\n new Response();\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction isNativeFetch(func) {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch() {\n if (!supportsFetch()) {\n return false;\n }\n var global = getGlobalObject();\n // Fast path to avoid DOM I/O\n // eslint-disable-next-line @typescript-eslint/unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n var result = false;\n var doc = global.document;\n // eslint-disable-next-line deprecation/deprecation\n if (doc && typeof doc.createElement === \"function\") {\n try {\n var sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n }\n catch (err) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n return result;\n}\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver() {\n return 'ReportingObserver' in getGlobalObject();\n}\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy() {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n if (!supportsFetch()) {\n return false;\n }\n try {\n new Request('_', {\n referrerPolicy: 'origin',\n });\n return true;\n }\n catch (e) {\n return false;\n }\n}\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n var global = getGlobalObject();\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var chrome = global.chrome;\n var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n var hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n return !isChromePackagedApp && hasHistoryApi;\n}\n//# sourceMappingURL=supports.js.map","/**\n * This was originally forked from https://github.com/occ/TraceKit, but has since been\n * largely modified and is now maintained as part of Sentry JS SDK.\n */\nimport { __assign } from \"tslib\";\n// global reference to slice\nvar UNKNOWN_FUNCTION = '?';\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nvar chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nvar gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension|capacitor).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js))(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nvar winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nvar geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nvar chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nvar reactMinifiedRegexp = /Minified React error #\\d+;/i;\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\nexport function computeStackTrace(ex) {\n var stack = null;\n var popSize = 0;\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n popSize = ex.framesToPop;\n }\n else if (reactMinifiedRegexp.test(ex.message)) {\n popSize = 1;\n }\n }\n try {\n // This must be tried first because Opera 10 *destroys*\n // its stacktrace property if you try to access the stack\n // property first!!\n stack = computeStackTraceFromStacktraceProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) {\n // no-empty\n }\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n }\n catch (e) {\n // no-empty\n }\n return {\n message: extractMessage(ex),\n name: ex && ex.name,\n stack: [],\n failed: true,\n };\n}\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any, complexity\nfunction computeStackTraceFromStackProp(ex) {\n if (!ex || !ex.stack) {\n return null;\n }\n var stack = [];\n var lines = ex.stack.split('\\n');\n var isEval;\n var submatch;\n var parts;\n var element;\n for (var i = 0; i < lines.length; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n // working with the regexp above is super painful. it is quite a hack, but just stripping the `address at `\n // prefix here seems like the quickest solution for now.\n url: parts[2] && parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null,\n };\n }\n else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null,\n };\n }\n else if ((parts = gecko.exec(lines[i]))) {\n isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || \"eval\";\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = ''; // no column when eval\n }\n else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = ex.columnNumber + 1;\n }\n element = {\n url: parts[3],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null,\n };\n }\n else {\n continue;\n }\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n if (!stack.length) {\n return null;\n }\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack: stack,\n };\n}\n/** JSDoc */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction computeStackTraceFromStacktraceProp(ex) {\n if (!ex || !ex.stacktrace) {\n return null;\n }\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n var stacktrace = ex.stacktrace;\n var opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n var opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^)]+))\\((.*)\\))? in (.*):\\s*$/i;\n var lines = stacktrace.split('\\n');\n var stack = [];\n var parts;\n for (var line = 0; line < lines.length; line += 2) {\n var element = null;\n if ((parts = opera10Regex.exec(lines[line]))) {\n element = {\n url: parts[2],\n func: parts[3],\n args: [],\n line: +parts[1],\n column: null,\n };\n }\n else if ((parts = opera11Regex.exec(lines[line]))) {\n element = {\n url: parts[6],\n func: parts[3] || parts[4],\n args: parts[5] ? parts[5].split(',') : [],\n line: +parts[1],\n column: +parts[2],\n };\n }\n if (element) {\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n }\n if (!stack.length) {\n return null;\n }\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack: stack,\n };\n}\n/** Remove N number of frames from the stack */\nfunction popFrames(stacktrace, popSize) {\n try {\n return __assign(__assign({}, stacktrace), { stack: stacktrace.stack.slice(popSize) });\n }\n catch (e) {\n return stacktrace;\n }\n}\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extractMessage(ex) {\n var message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n//# sourceMappingURL=tracekit.js.map","import { extractExceptionKeysForMessage, isEvent, normalizeToSize } from '@sentry/utils';\nimport { computeStackTrace } from './tracekit';\nvar STACKTRACE_LIMIT = 50;\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromStacktrace(stacktrace) {\n var frames = prepareFramesForEvent(stacktrace.stack);\n var exception = {\n type: stacktrace.name,\n value: stacktrace.message,\n };\n if (frames && frames.length) {\n exception.stacktrace = { frames: frames };\n }\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n return exception;\n}\n/**\n * @hidden\n */\nexport function eventFromPlainObject(exception, syntheticException, rejection) {\n var event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : rejection ? 'UnhandledRejection' : 'Error',\n value: \"Non-Error \" + (rejection ? 'promise rejection' : 'exception') + \" captured with keys: \" + extractExceptionKeysForMessage(exception),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n if (syntheticException) {\n var stacktrace = computeStackTrace(syntheticException);\n var frames_1 = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames: frames_1,\n };\n }\n return event;\n}\n/**\n * @hidden\n */\nexport function eventFromStacktrace(stacktrace) {\n var exception = exceptionFromStacktrace(stacktrace);\n return {\n exception: {\n values: [exception],\n },\n };\n}\n/**\n * @hidden\n */\nexport function prepareFramesForEvent(stack) {\n if (!stack || !stack.length) {\n return [];\n }\n var localStack = stack;\n var firstFrameFunction = localStack[0].func || '';\n var lastFrameFunction = localStack[localStack.length - 1].func || '';\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .slice(0, STACKTRACE_LIMIT)\n .map(function (frame) { return ({\n colno: frame.column === null ? undefined : frame.column,\n filename: frame.url || localStack[0].url,\n function: frame.func || '?',\n in_app: true,\n lineno: frame.line === null ? undefined : frame.line,\n }); })\n .reverse();\n}\n//# sourceMappingURL=parsers.js.map","import { Severity } from '@sentry/types';\nimport { addExceptionMechanism, addExceptionTypeValue, isDOMError, isDOMException, isError, isErrorEvent, isEvent, isPlainObject, SyncPromise, } from '@sentry/utils';\nimport { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';\nimport { computeStackTrace } from './tracekit';\n/**\n * Builds and Event from a Exception\n * @hidden\n */\nexport function eventFromException(options, exception, hint) {\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromUnknownInput(exception, syntheticException, {\n attachStacktrace: options.attachStacktrace,\n });\n addExceptionMechanism(event, {\n handled: true,\n type: 'generic',\n });\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n}\n/**\n * Builds and Event from a Message\n * @hidden\n */\nexport function eventFromMessage(options, message, level, hint) {\n if (level === void 0) { level = Severity.Info; }\n var syntheticException = (hint && hint.syntheticException) || undefined;\n var event = eventFromString(message, syntheticException, {\n attachStacktrace: options.attachStacktrace,\n });\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n}\n/**\n * @hidden\n */\nexport function eventFromUnknownInput(exception, syntheticException, options) {\n if (options === void 0) { options = {}; }\n var event;\n if (isErrorEvent(exception) && exception.error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n var errorEvent = exception;\n // eslint-disable-next-line no-param-reassign\n exception = errorEvent.error;\n event = eventFromStacktrace(computeStackTrace(exception));\n return event;\n }\n if (isDOMError(exception) || isDOMException(exception)) {\n // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n // then we just extract the name and message, as they don't provide anything else\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n var domException = exception;\n var name_1 = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n var message = domException.message ? name_1 + \": \" + domException.message : name_1;\n event = eventFromString(message, syntheticException, options);\n addExceptionTypeValue(event, message);\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n event = eventFromStacktrace(computeStackTrace(exception));\n return event;\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it is plain Object or Event, serialize it manually and extract options\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n var objectException = exception;\n event = eventFromPlainObject(objectException, syntheticException, options.rejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception, syntheticException, options);\n addExceptionTypeValue(event, \"\" + exception, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n}\n/**\n * @hidden\n */\nexport function eventFromString(input, syntheticException, options) {\n if (options === void 0) { options = {}; }\n var event = {\n message: input,\n };\n if (options.attachStacktrace && syntheticException) {\n var stacktrace = computeStackTrace(syntheticException);\n var frames_1 = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames: frames_1,\n };\n }\n return event;\n}\n//# sourceMappingURL=eventbuilder.js.map","import { timestampWithMs } from '@sentry/utils';\n/** Creates a SentryRequest from an event. */\nexport function eventToSentryRequest(event, api) {\n var useEnvelope = event.type === 'transaction';\n var req = {\n body: JSON.stringify(event),\n url: useEnvelope ? api.getEnvelopeEndpointWithUrlEncodedAuth() : api.getStoreEndpointWithUrlEncodedAuth(),\n };\n // https://develop.sentry.dev/sdk/envelopes/\n // Since we don't need to manipulate envelopes nor store them, there is no\n // exported concept of an Envelope with operations including serialization and\n // deserialization. Instead, we only implement a minimal subset of the spec to\n // serialize events inline here.\n if (useEnvelope) {\n var envelopeHeaders = JSON.stringify({\n event_id: event.event_id,\n // We need to add * 1000 since we divide it by 1000 by default but JS works with ms precision\n // The reason we use timestampWithMs here is that all clocks across the SDK use the same clock\n sent_at: new Date(timestampWithMs() * 1000).toISOString(),\n });\n var itemHeaders = JSON.stringify({\n type: event.type,\n });\n // The trailing newline is optional. We intentionally don't send it to avoid\n // sending unnecessary bytes.\n //\n // const envelope = `${envelopeHeaders}\\n${itemHeaders}\\n${req.body}\\n`;\n var envelope = envelopeHeaders + \"\\n\" + itemHeaders + \"\\n\" + req.body;\n req.body = envelope;\n }\n return req;\n}\n//# sourceMappingURL=request.js.map","import { Dsn, urlEncode } from '@sentry/utils';\nvar SENTRY_API_VERSION = '7';\n/** Helper class to provide urls to different Sentry endpoints. */\nvar API = /** @class */ (function () {\n /** Create a new instance of API */\n function API(dsn) {\n this.dsn = dsn;\n this._dsnObject = new Dsn(dsn);\n }\n /** Returns the Dsn object. */\n API.prototype.getDsn = function () {\n return this._dsnObject;\n };\n /** Returns the prefix to construct Sentry ingestion API endpoints. */\n API.prototype.getBaseApiEndpoint = function () {\n var dsn = this._dsnObject;\n var protocol = dsn.protocol ? dsn.protocol + \":\" : '';\n var port = dsn.port ? \":\" + dsn.port : '';\n return protocol + \"//\" + dsn.host + port + (dsn.path ? \"/\" + dsn.path : '') + \"/api/\";\n };\n /** Returns the store endpoint URL. */\n API.prototype.getStoreEndpoint = function () {\n return this._getIngestEndpoint('store');\n };\n /**\n * Returns the store endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n API.prototype.getStoreEndpointWithUrlEncodedAuth = function () {\n return this.getStoreEndpoint() + \"?\" + this._encodedAuth();\n };\n /**\n * Returns the envelope endpoint URL with auth in the query string.\n *\n * Sending auth as part of the query string and not as custom HTTP headers avoids CORS preflight requests.\n */\n API.prototype.getEnvelopeEndpointWithUrlEncodedAuth = function () {\n return this._getEnvelopeEndpoint() + \"?\" + this._encodedAuth();\n };\n /** Returns only the path component for the store endpoint. */\n API.prototype.getStoreEndpointPath = function () {\n var dsn = this._dsnObject;\n return (dsn.path ? \"/\" + dsn.path : '') + \"/api/\" + dsn.projectId + \"/store/\";\n };\n /**\n * Returns an object that can be used in request headers.\n * This is needed for node and the old /store endpoint in sentry\n */\n API.prototype.getRequestHeaders = function (clientName, clientVersion) {\n var dsn = this._dsnObject;\n var header = [\"Sentry sentry_version=\" + SENTRY_API_VERSION];\n header.push(\"sentry_client=\" + clientName + \"/\" + clientVersion);\n header.push(\"sentry_key=\" + dsn.user);\n if (dsn.pass) {\n header.push(\"sentry_secret=\" + dsn.pass);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n };\n /** Returns the url to the report dialog endpoint. */\n API.prototype.getReportDialogEndpoint = function (dialogOptions) {\n if (dialogOptions === void 0) { dialogOptions = {}; }\n var dsn = this._dsnObject;\n var endpoint = this.getBaseApiEndpoint() + \"embed/error-page/\";\n var encodedOptions = [];\n encodedOptions.push(\"dsn=\" + dsn.toString());\n for (var key in dialogOptions) {\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions.push(\"name=\" + encodeURIComponent(dialogOptions.user.name));\n }\n if (dialogOptions.user.email) {\n encodedOptions.push(\"email=\" + encodeURIComponent(dialogOptions.user.email));\n }\n }\n else {\n encodedOptions.push(encodeURIComponent(key) + \"=\" + encodeURIComponent(dialogOptions[key]));\n }\n }\n if (encodedOptions.length) {\n return endpoint + \"?\" + encodedOptions.join('&');\n }\n return endpoint;\n };\n /** Returns the envelope endpoint URL. */\n API.prototype._getEnvelopeEndpoint = function () {\n return this._getIngestEndpoint('envelope');\n };\n /** Returns the ingest API endpoint for target. */\n API.prototype._getIngestEndpoint = function (target) {\n var base = this.getBaseApiEndpoint();\n var dsn = this._dsnObject;\n return \"\" + base + dsn.projectId + \"/\" + target + \"/\";\n };\n /** Returns a URL-encoded string with auth config suitable for a query string. */\n API.prototype._encodedAuth = function () {\n var dsn = this._dsnObject;\n var auth = {\n // We send only the minimum set of required information. See\n // https://github.com/getsentry/sentry-javascript/issues/2572.\n sentry_key: dsn.user,\n sentry_version: SENTRY_API_VERSION,\n };\n return urlEncode(auth);\n };\n return API;\n}());\nexport { API };\n//# sourceMappingURL=api.js.map","import { SentryError } from './error';\nimport { SyncPromise } from './syncpromise';\n/** A simple queue that holds promises. */\nvar PromiseBuffer = /** @class */ (function () {\n function PromiseBuffer(_limit) {\n this._limit = _limit;\n /** Internal set of queued Promises */\n this._buffer = [];\n }\n /**\n * Says if the buffer is ready to take more requests\n */\n PromiseBuffer.prototype.isReady = function () {\n return this._limit === undefined || this.length() < this._limit;\n };\n /**\n * Add a promise to the queue.\n *\n * @param task Can be any PromiseLike\n * @returns The original promise.\n */\n PromiseBuffer.prototype.add = function (task) {\n var _this = this;\n if (!this.isReady()) {\n return SyncPromise.reject(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n if (this._buffer.indexOf(task) === -1) {\n this._buffer.push(task);\n }\n task\n .then(function () { return _this.remove(task); })\n .then(null, function () {\n return _this.remove(task).then(null, function () {\n // We have to add this catch here otherwise we have an unhandledPromiseRejection\n // because it's a new Promise chain.\n });\n });\n return task;\n };\n /**\n * Remove a promise to the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n PromiseBuffer.prototype.remove = function (task) {\n var removedTask = this._buffer.splice(this._buffer.indexOf(task), 1)[0];\n return removedTask;\n };\n /**\n * This function returns the number of unresolved promises in the queue.\n */\n PromiseBuffer.prototype.length = function () {\n return this._buffer.length;\n };\n /**\n * This will drain the whole queue, returns true if queue is empty or drained.\n * If timeout is provided and the queue takes longer to drain, the promise still resolves but with false.\n *\n * @param timeout Number in ms to wait until it resolves with false.\n */\n PromiseBuffer.prototype.drain = function (timeout) {\n var _this = this;\n return new SyncPromise(function (resolve) {\n var capturedSetTimeout = setTimeout(function () {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n SyncPromise.all(_this._buffer)\n .then(function () {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n })\n .then(null, function () {\n resolve(true);\n });\n });\n };\n return PromiseBuffer;\n}());\nexport { PromiseBuffer };\n//# sourceMappingURL=promisebuffer.js.map","import { API } from '@sentry/core';\nimport { PromiseBuffer, SentryError } from '@sentry/utils';\n/** Base Transport class implementation */\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport(options) {\n this.options = options;\n /** A simple buffer holding all requests. */\n this._buffer = new PromiseBuffer(30);\n this._api = new API(this.options.dsn);\n // eslint-disable-next-line deprecation/deprecation\n this.url = this._api.getStoreEndpointWithUrlEncodedAuth();\n }\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.sendEvent = function (_) {\n throw new SentryError('Transport Class has to implement `sendEvent` method');\n };\n /**\n * @inheritDoc\n */\n BaseTransport.prototype.close = function (timeout) {\n return this._buffer.drain(timeout);\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import { __extends } from \"tslib\";\nimport { eventToSentryRequest } from '@sentry/core';\nimport { Status } from '@sentry/types';\nimport { getGlobalObject, logger, parseRetryAfterHeader, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\nvar global = getGlobalObject();\n/** `fetch` based transport */\nvar FetchTransport = /** @class */ (function (_super) {\n __extends(FetchTransport, _super);\n function FetchTransport() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** Locks transport after receiving 429 response */\n _this._disabledUntil = new Date(Date.now());\n return _this;\n }\n /**\n * @inheritDoc\n */\n FetchTransport.prototype.sendEvent = function (event) {\n var _this = this;\n if (new Date(Date.now()) < this._disabledUntil) {\n return Promise.reject({\n event: event,\n reason: \"Transport locked till \" + this._disabledUntil + \" due to too many requests.\",\n status: 429,\n });\n }\n var sentryReq = eventToSentryRequest(event, this._api);\n var options = {\n body: sentryReq.body,\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : ''),\n };\n if (this.options.fetchParameters !== undefined) {\n Object.assign(options, this.options.fetchParameters);\n }\n if (this.options.headers !== undefined) {\n options.headers = this.options.headers;\n }\n return this._buffer.add(new SyncPromise(function (resolve, reject) {\n global\n .fetch(sentryReq.url, options)\n .then(function (response) {\n var status = Status.fromHttpCode(response.status);\n if (status === Status.Success) {\n resolve({ status: status });\n return;\n }\n if (status === Status.RateLimit) {\n var now = Date.now();\n /**\n * \"The name is case-insensitive.\"\n * https://developer.mozilla.org/en-US/docs/Web/API/Headers/get\n */\n var retryAfterHeader = response.headers.get('Retry-After');\n _this._disabledUntil = new Date(now + parseRetryAfterHeader(now, retryAfterHeader));\n logger.warn(\"Too many requests, backing off till: \" + _this._disabledUntil);\n }\n reject(response);\n })\n .catch(reject);\n }));\n };\n return FetchTransport;\n}(BaseTransport));\nexport { FetchTransport };\n//# sourceMappingURL=fetch.js.map","import { __extends } from \"tslib\";\nimport { eventToSentryRequest } from '@sentry/core';\nimport { Status } from '@sentry/types';\nimport { logger, parseRetryAfterHeader, SyncPromise } from '@sentry/utils';\nimport { BaseTransport } from './base';\n/** `XHR` based transport */\nvar XHRTransport = /** @class */ (function (_super) {\n __extends(XHRTransport, _super);\n function XHRTransport() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** Locks transport after receiving 429 response */\n _this._disabledUntil = new Date(Date.now());\n return _this;\n }\n /**\n * @inheritDoc\n */\n XHRTransport.prototype.sendEvent = function (event) {\n var _this = this;\n if (new Date(Date.now()) < this._disabledUntil) {\n return Promise.reject({\n event: event,\n reason: \"Transport locked till \" + this._disabledUntil + \" due to too many requests.\",\n status: 429,\n });\n }\n var sentryReq = eventToSentryRequest(event, this._api);\n return this._buffer.add(new SyncPromise(function (resolve, reject) {\n var request = new XMLHttpRequest();\n request.onreadystatechange = function () {\n if (request.readyState !== 4) {\n return;\n }\n var status = Status.fromHttpCode(request.status);\n if (status === Status.Success) {\n resolve({ status: status });\n return;\n }\n if (status === Status.RateLimit) {\n var now = Date.now();\n /**\n * \"The search for the header name is case-insensitive.\"\n * https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/getResponseHeader\n */\n var retryAfterHeader = request.getResponseHeader('Retry-After');\n _this._disabledUntil = new Date(now + parseRetryAfterHeader(now, retryAfterHeader));\n logger.warn(\"Too many requests, backing off till: \" + _this._disabledUntil);\n }\n reject(request);\n };\n request.open('POST', sentryReq.url);\n for (var header in _this.options.headers) {\n if (_this.options.headers.hasOwnProperty(header)) {\n request.setRequestHeader(header, _this.options.headers[header]);\n }\n }\n request.send(sentryReq.body);\n }));\n };\n return XHRTransport;\n}(BaseTransport));\nexport { XHRTransport };\n//# sourceMappingURL=xhr.js.map","import { __assign, __extends } from \"tslib\";\nimport { BaseBackend } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { supportsFetch } from '@sentry/utils';\nimport { eventFromException, eventFromMessage } from './eventbuilder';\nimport { FetchTransport, XHRTransport } from './transports';\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nvar BrowserBackend = /** @class */ (function (_super) {\n __extends(BrowserBackend, _super);\n function BrowserBackend() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromException = function (exception, hint) {\n return eventFromException(this._options, exception, hint);\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype.eventFromMessage = function (message, level, hint) {\n if (level === void 0) { level = Severity.Info; }\n return eventFromMessage(this._options, message, level, hint);\n };\n /**\n * @inheritDoc\n */\n BrowserBackend.prototype._setupTransport = function () {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return _super.prototype._setupTransport.call(this);\n }\n var transportOptions = __assign(__assign({}, this._options.transportOptions), { dsn: this._options.dsn });\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n if (supportsFetch()) {\n return new FetchTransport(transportOptions);\n }\n return new XHRTransport(transportOptions);\n };\n return BrowserBackend;\n}(BaseBackend));\nexport { BrowserBackend };\n//# sourceMappingURL=backend.js.map","import { __assign } from \"tslib\";\nimport { API, captureException, withScope } from '@sentry/core';\nimport { addExceptionMechanism, addExceptionTypeValue, logger } from '@sentry/utils';\nvar ignoreOnError = 0;\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n/**\n * @hidden\n */\nexport function ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(function () {\n ignoreOnError -= 1;\n });\n}\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(fn, options, before) {\n if (options === void 0) { options = {}; }\n if (typeof fn !== 'function') {\n return fn;\n }\n try {\n // We don't wanna wrap it twice\n if (fn.__sentry__) {\n return fn;\n }\n // If this has already been wrapped in the past, return that wrapped function\n if (fn.__sentry_wrapped__) {\n return fn.__sentry_wrapped__;\n }\n }\n catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n /* eslint-disable prefer-rest-params */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sentryWrapped = function () {\n var args = Array.prototype.slice.call(arguments);\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n var wrappedArguments = args.map(function (arg) { return wrap(arg, options); });\n if (fn.handleEvent) {\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return fn.handleEvent.apply(this, wrappedArguments);\n }\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n }\n catch (ex) {\n ignoreNextOnError();\n withScope(function (scope) {\n scope.addEventProcessor(function (event) {\n var processedEvent = __assign({}, event);\n if (options.mechanism) {\n addExceptionTypeValue(processedEvent, undefined, undefined);\n addExceptionMechanism(processedEvent, options.mechanism);\n }\n processedEvent.extra = __assign(__assign({}, processedEvent.extra), { arguments: args });\n return processedEvent;\n });\n captureException(ex);\n });\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (var property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n }\n catch (_oO) { } // eslint-disable-line no-empty\n fn.prototype = fn.prototype || {};\n sentryWrapped.prototype = fn.prototype;\n Object.defineProperty(fn, '__sentry_wrapped__', {\n enumerable: false,\n value: sentryWrapped,\n });\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n Object.defineProperties(sentryWrapped, {\n __sentry__: {\n enumerable: false,\n value: true,\n },\n __sentry_original__: {\n enumerable: false,\n value: fn,\n },\n });\n // Restore original function name (not all browsers allow that)\n try {\n var descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name');\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get: function () {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n }\n catch (_oO) { }\n return sentryWrapped;\n}\n/**\n * Injects the Report Dialog script\n * @hidden\n */\nexport function injectReportDialog(options) {\n if (options === void 0) { options = {}; }\n if (!options.eventId) {\n logger.error(\"Missing eventId option in showReportDialog call\");\n return;\n }\n if (!options.dsn) {\n logger.error(\"Missing dsn option in showReportDialog call\");\n return;\n }\n var script = document.createElement('script');\n script.async = true;\n script.src = new API(options.dsn).getReportDialogEndpoint(options);\n if (options.onLoad) {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n script.onload = options.onLoad;\n }\n (document.head || document.body).appendChild(script);\n}\n//# sourceMappingURL=helpers.js.map","import { __assign, __values } from \"tslib\";\nimport { isInstanceOf, isString } from './is';\nimport { logger } from './logger';\nimport { getFunctionName, getGlobalObject } from './misc';\nimport { fill } from './object';\nimport { supportsHistory, supportsNativeFetch } from './supports';\nvar global = getGlobalObject();\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\nvar handlers = {};\nvar instrumented = {};\n/** Instruments given API */\nfunction instrument(type) {\n if (instrumented[type]) {\n return;\n }\n instrumented[type] = true;\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n logger.warn('unknown instrumentation type:', type);\n }\n}\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(handler) {\n if (!handler || typeof handler.type !== 'string' || typeof handler.callback !== 'function') {\n return;\n }\n handlers[handler.type] = handlers[handler.type] || [];\n handlers[handler.type].push(handler.callback);\n instrument(handler.type);\n}\n/** JSDoc */\nfunction triggerHandlers(type, data) {\n var e_1, _a;\n if (!type || !handlers[type]) {\n return;\n }\n try {\n for (var _b = __values(handlers[type] || []), _c = _b.next(); !_c.done; _c = _b.next()) {\n var handler = _c.value;\n try {\n handler(data);\n }\n catch (e) {\n logger.error(\"Error while triggering instrumentation handler.\\nType: \" + type + \"\\nName: \" + getFunctionName(handler) + \"\\nError: \" + e);\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n}\n/** JSDoc */\nfunction instrumentConsole() {\n if (!('console' in global)) {\n return;\n }\n ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function (level) {\n if (!(level in global.console)) {\n return;\n }\n fill(global.console, level, function (originalConsoleLevel) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n triggerHandlers('console', { args: args, level: level });\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n };\n });\n });\n}\n/** JSDoc */\nfunction instrumentFetch() {\n if (!supportsNativeFetch()) {\n return;\n }\n fill(global, 'fetch', function (originalFetch) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var commonHandlerData = {\n args: args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n triggerHandlers('fetch', __assign({}, commonHandlerData));\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return originalFetch.apply(global, args).then(function (response) {\n triggerHandlers('fetch', __assign(__assign({}, commonHandlerData), { endTimestamp: Date.now(), response: response }));\n return response;\n }, function (error) {\n triggerHandlers('fetch', __assign(__assign({}, commonHandlerData), { endTimestamp: Date.now(), error: error }));\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the sentry.javascript SDK caught an error invoking your application code.\n // This is expected behavior and NOT indicative of a bug with sentry.javascript.\n throw error;\n });\n };\n });\n}\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs) {\n if (fetchArgs === void 0) { fetchArgs = []; }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs) {\n if (fetchArgs === void 0) { fetchArgs = []; }\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n/* eslint-enable @typescript-eslint/no-unsafe-member-access */\n/** JSDoc */\nfunction instrumentXHR() {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n var xhrproto = XMLHttpRequest.prototype;\n fill(xhrproto, 'open', function (originalOpen) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhr = this;\n var url = args[1];\n xhr.__sentry_xhr__ = {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n };\n // if Sentry key appears in URL, don't capture it as a request\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (isString(url) && xhr.__sentry_xhr__.method === 'POST' && url.match(/sentry_key/)) {\n xhr.__sentry_own_request__ = true;\n }\n var onreadystatechangeHandler = function () {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n if (xhr.__sentry_xhr__) {\n xhr.__sentry_xhr__.status_code = xhr.status;\n }\n }\n catch (e) {\n /* do nothing */\n }\n triggerHandlers('xhr', {\n args: args,\n endTimestamp: Date.now(),\n startTimestamp: Date.now(),\n xhr: xhr,\n });\n }\n };\n if ('onreadystatechange' in xhr && typeof xhr.onreadystatechange === 'function') {\n fill(xhr, 'onreadystatechange', function (original) {\n return function () {\n var readyStateArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n readyStateArgs[_i] = arguments[_i];\n }\n onreadystatechangeHandler();\n return original.apply(xhr, readyStateArgs);\n };\n });\n }\n else {\n xhr.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n return originalOpen.apply(xhr, args);\n };\n });\n fill(xhrproto, 'send', function (originalSend) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n triggerHandlers('xhr', {\n args: args,\n startTimestamp: Date.now(),\n xhr: this,\n });\n return originalSend.apply(this, args);\n };\n });\n}\nvar lastHref;\n/** JSDoc */\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n var oldOnPopState = global.onpopstate;\n global.onpopstate = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n var from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from: from,\n to: to,\n });\n if (oldOnPopState) {\n return oldOnPopState.apply(this, args);\n }\n };\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n var from = lastHref;\n var to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from: from,\n to: to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n/** JSDoc */\nfunction instrumentDOM() {\n if (!('document' in global)) {\n return;\n }\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n global.document.addEventListener('click', domEventHandler('click', triggerHandlers.bind(null, 'dom')), false);\n global.document.addEventListener('keypress', keypressEventHandler(triggerHandlers.bind(null, 'dom')), false);\n // After hooking into document bubbled up click and keypresses events, we also hook into user handled click & keypresses.\n ['EventTarget', 'Node'].forEach(function (target) {\n /* eslint-disable @typescript-eslint/no-unsafe-member-access */\n var proto = global[target] && global[target].prototype;\n // eslint-disable-next-line no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n /* eslint-enable @typescript-eslint/no-unsafe-member-access */\n fill(proto, 'addEventListener', function (original) {\n return function (eventName, fn, options) {\n if (fn && fn.handleEvent) {\n if (eventName === 'click') {\n fill(fn, 'handleEvent', function (innerOriginal) {\n return function (event) {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n if (eventName === 'keypress') {\n fill(fn, 'handleEvent', function (innerOriginal) {\n return function (event) {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n }\n else {\n if (eventName === 'click') {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'), true)(this);\n }\n if (eventName === 'keypress') {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(this);\n }\n }\n return original.call(this, eventName, fn, options);\n };\n });\n fill(proto, 'removeEventListener', function (original) {\n return function (eventName, fn, options) {\n try {\n original.call(this, eventName, fn.__sentry_wrapped__, options);\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, fn, options);\n };\n });\n });\n}\nvar debounceDuration = 1000;\nvar debounceTimer = 0;\nvar keypressTimeout;\nvar lastCapturedEvent;\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param name the event name (e.g. \"click\")\n * @param handler function that will be triggered\n * @param debounce decides whether it should wait till another event loop\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction domEventHandler(name, handler, debounce) {\n if (debounce === void 0) { debounce = false; }\n return function (event) {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n keypressTimeout = undefined;\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n lastCapturedEvent = event;\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n if (debounce) {\n debounceTimer = setTimeout(function () {\n handler({ event: event, name: name });\n });\n }\n else {\n handler({ event: event, name: name });\n }\n };\n}\n/**\n * Wraps addEventListener to capture keypress UI events\n * @param handler function that will be triggered\n * @returns wrapped keypress events handler\n * @hidden\n */\nfunction keypressEventHandler(handler) {\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return function (event) {\n var target;\n try {\n target = event.target;\n }\n catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n var tagName = target && target.tagName;\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (!tagName || (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable)) {\n return;\n }\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n if (!keypressTimeout) {\n domEventHandler('input', handler)(event);\n }\n clearTimeout(keypressTimeout);\n keypressTimeout = setTimeout(function () {\n keypressTimeout = undefined;\n }, debounceDuration);\n };\n}\nvar _oldOnErrorHandler = null;\n/** JSDoc */\nfunction instrumentError() {\n _oldOnErrorHandler = global.onerror;\n global.onerror = function (msg, url, line, column, error) {\n triggerHandlers('error', {\n column: column,\n error: error,\n line: line,\n msg: msg,\n url: url,\n });\n if (_oldOnErrorHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnErrorHandler.apply(this, arguments);\n }\n return false;\n };\n}\nvar _oldOnUnhandledRejectionHandler = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection() {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n global.onunhandledrejection = function (e) {\n triggerHandlers('unhandledrejection', e);\n if (_oldOnUnhandledRejectionHandler) {\n // eslint-disable-next-line prefer-rest-params\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n return true;\n };\n}\n//# sourceMappingURL=instrument.js.map","import { __assign, __read, __spread } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable max-lines */\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addInstrumentationHandler, getEventDescription, getGlobalObject, htmlTreeAsString, parseUrl, safeJoin, } from '@sentry/utils';\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nvar Breadcrumbs = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function Breadcrumbs(options) {\n /**\n * @inheritDoc\n */\n this.name = Breadcrumbs.id;\n this._options = __assign({ console: true, dom: true, fetch: true, history: true, sentry: true, xhr: true }, options);\n }\n /**\n * Create a breadcrumb of `sentry` from the events themselves\n */\n Breadcrumbs.prototype.addSentryBreadcrumb = function (event) {\n if (!this._options.sentry) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: \"sentry.\" + (event.type === 'transaction' ? 'transaction' : 'event'),\n event_id: event.event_id,\n level: event.level,\n message: getEventDescription(event),\n }, {\n event: event,\n });\n };\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n Breadcrumbs.prototype.setupOnce = function () {\n var _this = this;\n if (this._options.console) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._consoleBreadcrumb.apply(_this, __spread(args));\n },\n type: 'console',\n });\n }\n if (this._options.dom) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._domBreadcrumb.apply(_this, __spread(args));\n },\n type: 'dom',\n });\n }\n if (this._options.xhr) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._xhrBreadcrumb.apply(_this, __spread(args));\n },\n type: 'xhr',\n });\n }\n if (this._options.fetch) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._fetchBreadcrumb.apply(_this, __spread(args));\n },\n type: 'fetch',\n });\n }\n if (this._options.history) {\n addInstrumentationHandler({\n callback: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n _this._historyBreadcrumb.apply(_this, __spread(args));\n },\n type: 'history',\n });\n }\n };\n /**\n * Creates breadcrumbs from console API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._consoleBreadcrumb = function (handlerData) {\n var breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: Severity.fromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = \"Assertion failed: \" + (safeJoin(handlerData.args.slice(1), ' ') || 'console.assert');\n breadcrumb.data.arguments = handlerData.args.slice(1);\n }\n else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n };\n /**\n * Creates breadcrumbs from DOM API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._domBreadcrumb = function (handlerData) {\n var target;\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target)\n : htmlTreeAsString(handlerData.event);\n }\n catch (e) {\n target = '';\n }\n if (target.length === 0) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: \"ui.\" + handlerData.name,\n message: target,\n }, {\n event: handlerData.event,\n name: handlerData.name,\n });\n };\n /**\n * Creates breadcrumbs from XHR API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._xhrBreadcrumb = function (handlerData) {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n getCurrentHub().addBreadcrumb({\n category: 'xhr',\n data: handlerData.xhr.__sentry_xhr__,\n type: 'http',\n }, {\n xhr: handlerData.xhr,\n });\n return;\n }\n };\n /**\n * Creates breadcrumbs from fetch API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._fetchBreadcrumb = function (handlerData) {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n if (handlerData.fetchData.url.match(/sentry_key/) && handlerData.fetchData.method === 'POST') {\n // We will not create breadcrumbs for fetch requests that contain `sentry_key` (internal sentry requests)\n return;\n }\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb({\n category: 'fetch',\n data: handlerData.fetchData,\n level: Severity.Error,\n type: 'http',\n }, {\n data: handlerData.error,\n input: handlerData.args,\n });\n }\n else {\n getCurrentHub().addBreadcrumb({\n category: 'fetch',\n data: __assign(__assign({}, handlerData.fetchData), { status_code: handlerData.response.status }),\n type: 'http',\n }, {\n input: handlerData.args,\n response: handlerData.response,\n });\n }\n };\n /**\n * Creates breadcrumbs from history API calls\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Breadcrumbs.prototype._historyBreadcrumb = function (handlerData) {\n var global = getGlobalObject();\n var from = handlerData.from;\n var to = handlerData.to;\n var parsedLoc = parseUrl(global.location.href);\n var parsedFrom = parseUrl(from);\n var parsedTo = parseUrl(to);\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n from = parsedFrom.relative;\n }\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from: from,\n to: to,\n },\n });\n };\n /**\n * @inheritDoc\n */\n Breadcrumbs.id = 'Breadcrumbs';\n return Breadcrumbs;\n}());\nexport { Breadcrumbs };\n//# sourceMappingURL=breadcrumbs.js.map","var originalFunctionToString;\n/** Patch toString calls to return proper name for wrapped functions */\nvar FunctionToString = /** @class */ (function () {\n function FunctionToString() {\n /**\n * @inheritDoc\n */\n this.name = FunctionToString.id;\n }\n /**\n * @inheritDoc\n */\n FunctionToString.prototype.setupOnce = function () {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n originalFunctionToString = Function.prototype.toString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Function.prototype.toString = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = this.__sentry_original__ || this;\n return originalFunctionToString.apply(context, args);\n };\n };\n /**\n * @inheritDoc\n */\n FunctionToString.id = 'FunctionToString';\n return FunctionToString;\n}());\nexport { FunctionToString };\n//# sourceMappingURL=functiontostring.js.map","export var SDK_NAME = 'sentry.javascript.browser';\nexport var SDK_VERSION = '5.22.3';\n//# sourceMappingURL=version.js.map","import { __assign, __extends, __read, __spread } from \"tslib\";\nimport { BaseClient } from '@sentry/core';\nimport { getGlobalObject, logger } from '@sentry/utils';\nimport { BrowserBackend } from './backend';\nimport { injectReportDialog } from './helpers';\nimport { Breadcrumbs } from './integrations';\nimport { SDK_NAME, SDK_VERSION } from './version';\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nvar BrowserClient = /** @class */ (function (_super) {\n __extends(BrowserClient, _super);\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n function BrowserClient(options) {\n if (options === void 0) { options = {}; }\n return _super.call(this, BrowserBackend, options) || this;\n }\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n BrowserClient.prototype.showReportDialog = function (options) {\n if (options === void 0) { options = {}; }\n // doesn't work without a document (React Native)\n var document = getGlobalObject().document;\n if (!document) {\n return;\n }\n if (!this._isEnabled()) {\n logger.error('Trying to call showReportDialog with Sentry Client disabled');\n return;\n }\n injectReportDialog(__assign(__assign({}, options), { dsn: options.dsn || this.getDsn() }));\n };\n /**\n * @inheritDoc\n */\n BrowserClient.prototype._prepareEvent = function (event, scope, hint) {\n event.platform = event.platform || 'javascript';\n event.sdk = __assign(__assign({}, event.sdk), { name: SDK_NAME, packages: __spread(((event.sdk && event.sdk.packages) || []), [\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ]), version: SDK_VERSION });\n return _super.prototype._prepareEvent.call(this, event, scope, hint);\n };\n /**\n * @inheritDoc\n */\n BrowserClient.prototype._sendEvent = function (event) {\n var integration = this.getIntegration(Breadcrumbs);\n if (integration) {\n integration.addSentryBreadcrumb(event);\n }\n _super.prototype._sendEvent.call(this, event);\n };\n return BrowserClient;\n}(BaseClient));\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nvar DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n/** Inbound filters configurable by the user */\nvar InboundFilters = /** @class */ (function () {\n function InboundFilters(_options) {\n if (_options === void 0) { _options = {}; }\n this._options = _options;\n /**\n * @inheritDoc\n */\n this.name = InboundFilters.id;\n }\n /**\n * @inheritDoc\n */\n InboundFilters.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event) {\n var hub = getCurrentHub();\n if (!hub) {\n return event;\n }\n var self = hub.getIntegration(InboundFilters);\n if (self) {\n var client = hub.getClient();\n var clientOptions = client ? client.getOptions() : {};\n var options = self._mergeOptions(clientOptions);\n if (self._shouldDropEvent(event, options)) {\n return null;\n }\n }\n return event;\n });\n };\n /** JSDoc */\n InboundFilters.prototype._shouldDropEvent = function (event, options) {\n if (this._isSentryError(event, options)) {\n logger.warn(\"Event dropped due to being internal Sentry Error.\\nEvent: \" + getEventDescription(event));\n return true;\n }\n if (this._isIgnoredError(event, options)) {\n logger.warn(\"Event dropped due to being matched by `ignoreErrors` option.\\nEvent: \" + getEventDescription(event));\n return true;\n }\n if (this._isDeniedUrl(event, options)) {\n logger.warn(\"Event dropped due to being matched by `denyUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n return true;\n }\n if (!this._isAllowedUrl(event, options)) {\n logger.warn(\"Event dropped due to not being matched by `allowUrls` option.\\nEvent: \" + getEventDescription(event) + \".\\nUrl: \" + this._getEventFilterUrl(event));\n return true;\n }\n return false;\n };\n /** JSDoc */\n InboundFilters.prototype._isSentryError = function (event, options) {\n if (!options.ignoreInternal) {\n return false;\n }\n try {\n return ((event &&\n event.exception &&\n event.exception.values &&\n event.exception.values[0] &&\n event.exception.values[0].type === 'SentryError') ||\n false);\n }\n catch (_oO) {\n return false;\n }\n };\n /** JSDoc */\n InboundFilters.prototype._isIgnoredError = function (event, options) {\n if (!options.ignoreErrors || !options.ignoreErrors.length) {\n return false;\n }\n return this._getPossibleEventMessages(event).some(function (message) {\n // Not sure why TypeScript complains here...\n return options.ignoreErrors.some(function (pattern) { return isMatchingPattern(message, pattern); });\n });\n };\n /** JSDoc */\n InboundFilters.prototype._isDeniedUrl = function (event, options) {\n // TODO: Use Glob instead?\n if (!options.denyUrls || !options.denyUrls.length) {\n return false;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? false : options.denyUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n };\n /** JSDoc */\n InboundFilters.prototype._isAllowedUrl = function (event, options) {\n // TODO: Use Glob instead?\n if (!options.allowUrls || !options.allowUrls.length) {\n return true;\n }\n var url = this._getEventFilterUrl(event);\n return !url ? true : options.allowUrls.some(function (pattern) { return isMatchingPattern(url, pattern); });\n };\n /** JSDoc */\n InboundFilters.prototype._mergeOptions = function (clientOptions) {\n if (clientOptions === void 0) { clientOptions = {}; }\n return {\n allowUrls: __spread((this._options.whitelistUrls || []), (this._options.allowUrls || []), (clientOptions.whitelistUrls || []), (clientOptions.allowUrls || [])),\n denyUrls: __spread((this._options.blacklistUrls || []), (this._options.denyUrls || []), (clientOptions.blacklistUrls || []), (clientOptions.denyUrls || [])),\n ignoreErrors: __spread((this._options.ignoreErrors || []), (clientOptions.ignoreErrors || []), DEFAULT_IGNORE_ERRORS),\n ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,\n };\n };\n /** JSDoc */\n InboundFilters.prototype._getPossibleEventMessages = function (event) {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n var _a = (event.exception.values && event.exception.values[0]) || {}, _b = _a.type, type = _b === void 0 ? '' : _b, _c = _a.value, value = _c === void 0 ? '' : _c;\n return [\"\" + value, type + \": \" + value];\n }\n catch (oO) {\n logger.error(\"Cannot extract message for event \" + getEventDescription(event));\n return [];\n }\n }\n return [];\n };\n /** JSDoc */\n InboundFilters.prototype._getEventFilterUrl = function (event) {\n try {\n if (event.stacktrace) {\n var frames_1 = event.stacktrace.frames;\n return (frames_1 && frames_1[frames_1.length - 1].filename) || null;\n }\n if (event.exception) {\n var frames_2 = event.exception.values && event.exception.values[0].stacktrace && event.exception.values[0].stacktrace.frames;\n return (frames_2 && frames_2[frames_2.length - 1].filename) || null;\n }\n return null;\n }\n catch (oO) {\n logger.error(\"Cannot extract url for event \" + getEventDescription(event));\n return null;\n }\n };\n /**\n * @inheritDoc\n */\n InboundFilters.id = 'InboundFilters';\n return InboundFilters;\n}());\nexport { InboundFilters };\n//# sourceMappingURL=inboundfilters.js.map","import { __assign } from \"tslib\";\nimport { fill, getFunctionName, getGlobalObject } from '@sentry/utils';\nimport { wrap } from '../helpers';\nvar DEFAULT_EVENT_TARGET = [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n];\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nvar TryCatch = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function TryCatch(options) {\n /**\n * @inheritDoc\n */\n this.name = TryCatch.id;\n this._options = __assign({ XMLHttpRequest: true, eventTarget: true, requestAnimationFrame: true, setInterval: true, setTimeout: true }, options);\n }\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n TryCatch.prototype.setupOnce = function () {\n var global = getGlobalObject();\n if (this._options.setTimeout) {\n fill(global, 'setTimeout', this._wrapTimeFunction.bind(this));\n }\n if (this._options.setInterval) {\n fill(global, 'setInterval', this._wrapTimeFunction.bind(this));\n }\n if (this._options.requestAnimationFrame) {\n fill(global, 'requestAnimationFrame', this._wrapRAF.bind(this));\n }\n if (this._options.XMLHttpRequest && 'XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', this._wrapXHR.bind(this));\n }\n if (this._options.eventTarget) {\n var eventTarget = Array.isArray(this._options.eventTarget) ? this._options.eventTarget : DEFAULT_EVENT_TARGET;\n eventTarget.forEach(this._wrapEventTarget.bind(this));\n }\n };\n /** JSDoc */\n TryCatch.prototype._wrapTimeFunction = function (original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n };\n /** JSDoc */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n TryCatch.prototype._wrapRAF = function (original) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function (callback) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return original.call(this, wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }));\n };\n };\n /** JSDoc */\n TryCatch.prototype._wrapEventTarget = function (target) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var global = getGlobalObject();\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n var proto = global[target] && global[target].prototype;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n fill(proto, 'addEventListener', function (original) {\n return function (eventName, fn, options) {\n try {\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n }\n catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n return original.call(this, eventName, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n wrap(fn, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target: target,\n },\n handled: true,\n type: 'instrument',\n },\n }), options);\n };\n });\n fill(proto, 'removeEventListener', function (original) {\n return function (eventName, fn, options) {\n /**\n * There are 2 possible scenarios here:\n *\n * 1. Someone passes a callback, which was attached prior to Sentry initialization, or by using unmodified\n * method, eg. `document.addEventListener.call(el, name, handler). In this case, we treat this function\n * as a pass-through, and call original `removeEventListener` with it.\n *\n * 2. Someone passes a callback, which was attached after Sentry was initialized, which means that it was using\n * our wrapped version of `addEventListener`, which internally calls `wrap` helper.\n * This helper \"wraps\" whole callback inside a try/catch statement, and attached appropriate metadata to it,\n * in order for us to make a distinction between wrapped/non-wrapped functions possible.\n * If a function was wrapped, it has additional property of `__sentry_wrapped__`, holding the handler.\n *\n * When someone adds a handler prior to initialization, and then do it again, but after,\n * then we have to detach both of them. Otherwise, if we'd detach only wrapped one, it'd be impossible\n * to get rid of the initial handler and it'd stick there forever.\n */\n try {\n original.call(this, eventName, fn.__sentry_wrapped__, options);\n }\n catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, fn, options);\n };\n });\n };\n /** JSDoc */\n TryCatch.prototype._wrapXHR = function (originalSend) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var xhr = this;\n var xmlHttpRequestProps = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n xmlHttpRequestProps.forEach(function (prop) {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fill(xhr, prop, function (original) {\n var wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n // If Instrument integration has been called before TryCatch, get the name of original function\n if (original.__sentry_original__) {\n wrapOptions.mechanism.data.handler = getFunctionName(original.__sentry_original__);\n }\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n return originalSend.apply(this, args);\n };\n };\n /**\n * @inheritDoc\n */\n TryCatch.id = 'TryCatch';\n return TryCatch;\n}());\nexport { TryCatch };\n//# sourceMappingURL=trycatch.js.map","import { __assign } from \"tslib\";\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\nimport { getCurrentHub } from '@sentry/core';\nimport { Severity } from '@sentry/types';\nimport { addExceptionMechanism, addInstrumentationHandler, getLocationHref, isErrorEvent, isPrimitive, isString, logger, } from '@sentry/utils';\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n/** Global handlers */\nvar GlobalHandlers = /** @class */ (function () {\n /** JSDoc */\n function GlobalHandlers(options) {\n /**\n * @inheritDoc\n */\n this.name = GlobalHandlers.id;\n /** JSDoc */\n this._onErrorHandlerInstalled = false;\n /** JSDoc */\n this._onUnhandledRejectionHandlerInstalled = false;\n this._options = __assign({ onerror: true, onunhandledrejection: true }, options);\n }\n /**\n * @inheritDoc\n */\n GlobalHandlers.prototype.setupOnce = function () {\n Error.stackTraceLimit = 50;\n if (this._options.onerror) {\n logger.log('Global Handler attached: onerror');\n this._installGlobalOnErrorHandler();\n }\n if (this._options.onunhandledrejection) {\n logger.log('Global Handler attached: onunhandledrejection');\n this._installGlobalOnUnhandledRejectionHandler();\n }\n };\n /** JSDoc */\n GlobalHandlers.prototype._installGlobalOnErrorHandler = function () {\n var _this = this;\n if (this._onErrorHandlerInstalled) {\n return;\n }\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: function (data) {\n var error = data.error;\n var currentHub = getCurrentHub();\n var hasIntegration = currentHub.getIntegration(GlobalHandlers);\n var isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return;\n }\n var client = currentHub.getClient();\n var event = isPrimitive(error)\n ? _this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column)\n : _this._enhanceEventWithInitialFrame(eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: false,\n }), data.url, data.line, data.column);\n addExceptionMechanism(event, {\n handled: false,\n type: 'onerror',\n });\n currentHub.captureEvent(event, {\n originalException: error,\n });\n },\n type: 'error',\n });\n this._onErrorHandlerInstalled = true;\n };\n /** JSDoc */\n GlobalHandlers.prototype._installGlobalOnUnhandledRejectionHandler = function () {\n var _this = this;\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n addInstrumentationHandler({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: function (e) {\n var error = e;\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n }\n catch (_oO) {\n // no-empty\n }\n var currentHub = getCurrentHub();\n var hasIntegration = currentHub.getIntegration(GlobalHandlers);\n var isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return true;\n }\n var client = currentHub.getClient();\n var event = isPrimitive(error)\n ? _this._eventFromIncompleteRejection(error)\n : eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: true,\n });\n event.level = Severity.Error;\n addExceptionMechanism(event, {\n handled: false,\n type: 'onunhandledrejection',\n });\n currentHub.captureEvent(event, {\n originalException: error,\n });\n return;\n },\n type: 'unhandledrejection',\n });\n this._onUnhandledRejectionHandlerInstalled = true;\n };\n /**\n * This function creates a stack from an old, error-less onerror handler.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GlobalHandlers.prototype._eventFromIncompleteOnError = function (msg, url, line, column) {\n var ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n // If 'message' is ErrorEvent, get real message from inside\n var message = isErrorEvent(msg) ? msg.message : msg;\n var name;\n if (isString(message)) {\n var groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n var event = {\n exception: {\n values: [\n {\n type: name || 'Error',\n value: message,\n },\n ],\n },\n };\n return this._enhanceEventWithInitialFrame(event, url, line, column);\n };\n /**\n * This function creates an Event from an TraceKitStackTrace that has part of it missing.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GlobalHandlers.prototype._eventFromIncompleteRejection = function (error) {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n value: \"Non-Error promise rejection captured with value: \" + error,\n },\n ],\n },\n };\n };\n /** JSDoc */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n GlobalHandlers.prototype._enhanceEventWithInitialFrame = function (event, url, line, column) {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};\n event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];\n var colno = isNaN(parseInt(column, 10)) ? undefined : column;\n var lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n var filename = isString(url) && url.length > 0 ? url : getLocationHref();\n if (event.exception.values[0].stacktrace.frames.length === 0) {\n event.exception.values[0].stacktrace.frames.push({\n colno: colno,\n filename: filename,\n function: '?',\n in_app: true,\n lineno: lineno,\n });\n }\n return event;\n };\n /**\n * @inheritDoc\n */\n GlobalHandlers.id = 'GlobalHandlers';\n return GlobalHandlers;\n}());\nexport { GlobalHandlers };\n//# sourceMappingURL=globalhandlers.js.map","import { __read, __spread } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { isInstanceOf } from '@sentry/utils';\nimport { exceptionFromStacktrace } from '../parsers';\nimport { computeStackTrace } from '../tracekit';\nvar DEFAULT_KEY = 'cause';\nvar DEFAULT_LIMIT = 5;\n/** Adds SDK info to an event. */\nvar LinkedErrors = /** @class */ (function () {\n /**\n * @inheritDoc\n */\n function LinkedErrors(options) {\n if (options === void 0) { options = {}; }\n /**\n * @inheritDoc\n */\n this.name = LinkedErrors.id;\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event, hint) {\n var self = getCurrentHub().getIntegration(LinkedErrors);\n if (self) {\n return self._handler(event, hint);\n }\n return event;\n });\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype._handler = function (event, hint) {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n var linkedErrors = this._walkErrorTree(hint.originalException, this._key);\n event.exception.values = __spread(linkedErrors, event.exception.values);\n return event;\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.prototype._walkErrorTree = function (error, key, stack) {\n if (stack === void 0) { stack = []; }\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= this._limit) {\n return stack;\n }\n var stacktrace = computeStackTrace(error[key]);\n var exception = exceptionFromStacktrace(stacktrace);\n return this._walkErrorTree(error[key], key, __spread([exception], stack));\n };\n /**\n * @inheritDoc\n */\n LinkedErrors.id = 'LinkedErrors';\n return LinkedErrors;\n}());\nexport { LinkedErrors };\n//# sourceMappingURL=linkederrors.js.map","import { __assign } from \"tslib\";\nimport { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nvar global = getGlobalObject();\n/** UserAgent */\nvar UserAgent = /** @class */ (function () {\n function UserAgent() {\n /**\n * @inheritDoc\n */\n this.name = UserAgent.id;\n }\n /**\n * @inheritDoc\n */\n UserAgent.prototype.setupOnce = function () {\n addGlobalEventProcessor(function (event) {\n if (getCurrentHub().getIntegration(UserAgent)) {\n if (!global.navigator || !global.location) {\n return event;\n }\n var request = event.request || {};\n request.url = request.url || global.location.href;\n request.headers = request.headers || {};\n request.headers['User-Agent'] = global.navigator.userAgent;\n return __assign(__assign({}, event), { request: request });\n }\n return event;\n });\n };\n /**\n * @inheritDoc\n */\n UserAgent.id = 'UserAgent';\n return UserAgent;\n}());\nexport { UserAgent };\n//# sourceMappingURL=useragent.js.map","import { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject, SyncPromise } from '@sentry/utils';\nimport { BrowserClient } from './client';\nimport { wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';\nexport var defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new UserAgent(),\n];\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options) {\n if (options === void 0) { options = {}; }\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n var window_1 = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window_1.SENTRY_RELEASE && window_1.SENTRY_RELEASE.id) {\n options.release = window_1.SENTRY_RELEASE.id;\n }\n }\n initAndBind(BrowserClient, options);\n}\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options) {\n if (options === void 0) { options = {}; }\n if (!options.eventId) {\n options.eventId = getCurrentHub().lastEventId();\n }\n var client = getCurrentHub().getClient();\n if (client) {\n client.showReportDialog(options);\n }\n}\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId() {\n return getCurrentHub().lastEventId();\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad() {\n // Noop\n}\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback) {\n callback();\n}\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function flush(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n return SyncPromise.reject(false);\n}\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function close(timeout) {\n var client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n return SyncPromise.reject(false);\n}\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function wrap(fn) {\n return internalWrap(fn)();\n}\n//# sourceMappingURL=sdk.js.map","import { getCurrentHub } from '@sentry/hub';\nimport { logger } from '@sentry/utils';\n/**\n * Internal function to create a new SDK client instance. The client is\n * installed and then bound to the current scope.\n *\n * @param clientClass The client class to instanciate.\n * @param options Options to pass to the client.\n */\nexport function initAndBind(clientClass, options) {\n if (options.debug === true) {\n logger.enable();\n }\n var hub = getCurrentHub();\n var client = new clientClass(options);\n hub.bindClient(client);\n}\n//# sourceMappingURL=sdk.js.map","import { __assign } from \"tslib\";\nexport * from './exports';\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\nimport * as BrowserIntegrations from './integrations';\nimport * as Transports from './transports';\nvar windowIntegrations = {};\n// This block is needed to add compatibility with the integrations packages when used with a CDN\nvar _window = getGlobalObject();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\nvar INTEGRATIONS = __assign(__assign(__assign({}, windowIntegrations), CoreIntegrations), BrowserIntegrations);\nexport { INTEGRATIONS as Integrations, Transports };\n//# sourceMappingURL=index.js.map","/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/**\n * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n */\nvar Memo = /** @class */ (function () {\n function Memo() {\n this._hasWeakSet = typeof WeakSet === 'function';\n this._inner = this._hasWeakSet ? new WeakSet() : [];\n }\n /**\n * Sets obj to remember.\n * @param obj Object to remember\n */\n Memo.prototype.memoize = function (obj) {\n if (this._hasWeakSet) {\n if (this._inner.has(obj)) {\n return true;\n }\n this._inner.add(obj);\n return false;\n }\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (var i = 0; i < this._inner.length; i++) {\n var value = this._inner[i];\n if (value === obj) {\n return true;\n }\n }\n this._inner.push(obj);\n return false;\n };\n /**\n * Removes object from internal storage.\n * @param obj Object to forget\n */\n Memo.prototype.unmemoize = function (obj) {\n if (this._hasWeakSet) {\n this._inner.delete(obj);\n }\n else {\n for (var i = 0; i < this._inner.length; i++) {\n if (this._inner[i] === obj) {\n this._inner.splice(i, 1);\n break;\n }\n }\n }\n };\n return Memo;\n}());\nexport { Memo };\n//# sourceMappingURL=memo.js.map"],"sourceRoot":""} \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.57466da82c6534ab0c59.js b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.57466da82c6534ab0c59.js new file mode 100644 index 0000000000..3359a9bbe2 --- /dev/null +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.57466da82c6534ab0c59.js @@ -0,0 +1,3 @@ +/*! For license information please see app.57466da82c6534ab0c59.js.LICENSE.txt */ +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{"+FPD":function(t,e,n){"use strict";n.d(e,"c",(function(){return c})),n.d(e,"b",(function(){return l})),n.d(e,"e",(function(){return f})),n.d(e,"a",(function(){return p})),n.d(e,"d",(function(){return d}));n("TeQF"),n("yXV3");function r(t,e){return t===e}function o(t,e,n){if(null===e||null===n||e.length!==n.length)return!1;for(var r=e.length,o=0;o1?e-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:r,n=null,i=null;return function(){return o(e,n,arguments)||(i=t.apply(null,arguments)),n=arguments,i}}));var s=function(t){return t.logs.logs},u=function(t){return t.logs.tail},c=function(t){return t.logs.searchText},l=a(s,u,c,(function(t,e,n){for(var r=[],o=e;o>=0;o--)r.push(t[o]);if(300===t.length)for(var i=299;i>e;i--)r.push(t[i]);return""===n?r:r.filter((function(t){return t.payload.toLowerCase().indexOf(n)>=0}))}));function f(t){return function(e){e("logsUpdateSearchText",(function(e){e.logs.searchText=t.toLowerCase()}))}}function p(t){return function(e,n){var r=n(),o=s(r),i=u(r),a=i>=299?0:i+1;o[a]=t,e("logsAppendLog",(function(t){t.logs.tail=a}))}}var d={searchText:"",logs:[],tail:-1}},"+wdc":function(t,e,n){"use strict";var r,o,i,a,s;if(Object.defineProperty(e,"__esModule",{value:!0}),"undefined"==typeof window||"function"!=typeof MessageChannel){var u=null,c=null,l=function(){if(null!==u)try{var t=e.unstable_now();u(!0,t),u=null}catch(t){throw setTimeout(l,0),t}},f=Date.now();e.unstable_now=function(){return Date.now()-f},r=function(t){null!==u?setTimeout(r,0,t):(u=t,setTimeout(l,0))},o=function(t,e){c=setTimeout(t,e)},i=function(){clearTimeout(c)},a=function(){return!1},s=e.unstable_forceFrameRate=function(){}}else{var p=window.performance,d=window.Date,h=window.setTimeout,v=window.clearTimeout;if("undefined"!=typeof console){var m=window.cancelAnimationFrame;"function"!=typeof window.requestAnimationFrame&&console.error("This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills"),"function"!=typeof m&&console.error("This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills")}if("object"==typeof p&&"function"==typeof p.now)e.unstable_now=function(){return p.now()};else{var y=d.now();e.unstable_now=function(){return d.now()-y}}var b=!1,g=null,w=-1,O=5,x=0;a=function(){return e.unstable_now()>=x},s=function(){},e.unstable_forceFrameRate=function(t){0>t||125>>1,o=t[r];if(!(void 0!==o&&0T(a,n))void 0!==u&&0>T(u,a)?(t[r]=u,t[s]=n,r=s):(t[r]=a,t[i]=n,r=i);else{if(!(void 0!==u&&0>T(u,n)))break t;t[r]=u,t[s]=n,r=s}}}return e}return null}function T(t,e){var n=t.sortIndex-e.sortIndex;return 0!==n?n:t.id-e.id}var k=[],A=[],R=1,M=null,L=3,D=!1,_=!1,N=!1;function F(t){for(var e=C(A);null!==e;){if(null===e.callback)P(A);else{if(!(e.startTime<=t))break;P(A),e.sortIndex=e.expirationTime,j(k,e)}e=C(A)}}function V(t){if(N=!1,F(t),!_)if(null!==C(k))_=!0,r(B);else{var e=C(A);null!==e&&o(V,e.startTime-t)}}function B(t,n){_=!1,N&&(N=!1,i()),D=!0;var r=L;try{for(F(n),M=C(k);null!==M&&(!(M.expirationTime>n)||t&&!a());){var s=M.callback;if(null!==s){M.callback=null,L=M.priorityLevel;var u=s(M.expirationTime<=n);n=e.unstable_now(),"function"==typeof u?M.callback=u:M===C(k)&&P(k),F(n)}else P(k);M=C(k)}if(null!==M)var c=!0;else{var l=C(A);null!==l&&o(V,l.startTime-n),c=!1}return c}finally{M=null,L=r,D=!1}}function I(t){switch(t){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1e4;default:return 5e3}}var U=s;e.unstable_ImmediatePriority=1,e.unstable_UserBlockingPriority=2,e.unstable_NormalPriority=3,e.unstable_IdlePriority=5,e.unstable_LowPriority=4,e.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var n=L;L=t;try{return e()}finally{L=n}},e.unstable_next=function(t){switch(L){case 1:case 2:case 3:var e=3;break;default:e=L}var n=L;L=e;try{return t()}finally{L=n}},e.unstable_scheduleCallback=function(t,n,a){var s=e.unstable_now();if("object"==typeof a&&null!==a){var u=a.delay;u="number"==typeof u&&0s?(t.sortIndex=u,j(A,t),null===C(k)&&t===C(A)&&(N?i():N=!0,o(V,u-s))):(t.sortIndex=a,j(k,t),_||D||(_=!0,r(B))),t},e.unstable_cancelCallback=function(t){t.callback=null},e.unstable_wrapCallback=function(t){var e=L;return function(){var n=L;L=e;try{return t.apply(this,arguments)}finally{L=n}}},e.unstable_getCurrentPriorityLevel=function(){return L},e.unstable_shouldYield=function(){var t=e.unstable_now();F(t);var n=C(k);return n!==M&&null!==M&&null!==n&&null!==n.callback&&n.startTime<=t&&n.expirationTime=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var X=Object(r.forwardRef)((function(t,e){var n=t.color,r=void 0===n?"currentColor":n,i=t.size,a=void 0===i?24:i,s=G(t,["color","size"]);return o.a.createElement("svg",Q({ref:e,xmlns:"http://www.w3.org/2000/svg",width:a,height:a,viewBox:"0 0 24 24",fill:"none",stroke:r,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},s),o.a.createElement("path",{d:"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"}))}));X.propTypes={color:w.a.string,size:w.a.oneOfType([w.a.string,w.a.number])},X.displayName="GitHub";var Y=X,$=n("Qv+K"),K=n("o0o1"),Z=n.n(K),J=(n("ls82"),n("HaE+")),tt=n("YrXW");function et(t,e){return nt.apply(this,arguments)}function nt(){return(nt=Object(J.a)(Z.a.mark((function t(e,n){var r,o,i,a,s;return Z.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r={},t.prev=1,o=Object(tt.b)(n),i=o.url,a=o.init,t.next=5,fetch(i+e,a);case 5:if(!(s=t.sent).ok){t.next=10;break}return t.next=9,s.json();case 9:r=t.sent;case 10:t.next=15;break;case 12:t.prev=12,t.t0=t.catch(1),console.log("failed to fetch "+e,t.t0);case 15:return t.abrupt("return",r);case 16:case"end":return t.stop()}}),t,null,[[1,12]])})))).apply(this,arguments)}var rt=n("DKqX"),ot=n("WfPo"),it=n("OADI"),at=n("zZH+"),st=n.n(at);function ut(t){var e=t.name,n=t.link,o=t.version;return r.createElement("div",{className:st.a.root},r.createElement("h2",null,e),r.createElement("p",null,r.createElement("span",null,"Version "),r.createElement("span",{className:st.a.mono},o)),r.createElement("p",null,r.createElement("a",{className:st.a.link,href:n,target:"_blank",rel:"noopener noreferrer"},r.createElement(Y,{size:20}),r.createElement("span",null,"Source"))))}var ct=Object(ot.a)((function(t){return{apiConfig:Object(it.c)(t)}}))((function(t){var e=Object($.c)(["/version",t.apiConfig],et,{suspense:!0}).data;return r.createElement(r.Fragment,null,r.createElement(rt.a,{title:"About"}),e&&e.version?r.createElement(ut,{name:"Clash",version:e.version,link:"https://github.com/Dreamacro/clash"}):null,r.createElement(ut,{name:"Yacd",version:"0.2.6",link:"https://github.com/haishanh/yacd"}))})),lt=n("vJea"),ft=n("+FPD"),pt=n("LNGp"),dt=n("GmYy"),ht={app:Object(it.j)(),modals:pt.b,configs:lt.d,proxies:dt.j,logs:ft.d},vt={selectChartStyleIndex:it.k,updateAppConfig:it.m,app:{updateCollapsibleIsOpen:it.o,updateAppConfig:it.m},proxies:dt.b},mt={0:{message:"Browser not supported!",detail:'This browser does not support "fetch", please choose another one.'},default:{message:"Oops, something went wrong!"}};n("4mDm"),n("3bBZ"),n("Kz25");var yt=n("id3I"),bt=n("Plid"),gt=n.n(bt),wt=n("n57c"),Ot=n("wx14"),xt=n("Ff2n"),Et=n("iuhU"),St=n("SzcZ"),jt=n.n(St),Ct=o.a.useCallback;function Pt(t){var e=t.id,n=t.label,r=t.value,i=t.onChange,a=Object(xt.a)(t,["id","label","value","onChange"]),s=Ct((function(t){return i(t)}),[i]),u=Object(Et.a)({[jt.a.floatAbove]:"string"==typeof r&&""!==r});return o.a.createElement("div",{className:jt.a.root},o.a.createElement("input",Object(Ot.a)({id:e,value:r,onChange:s},a)),o.a.createElement("label",{htmlFor:e,className:u},n))}Pt.propTypes={value:w.a.oneOfType([w.a.string,w.a.number]),type:w.a.oneOf(["text","number"]),onChange:w.a.func,id:w.a.string,label:w.a.string};var Tt=n("VVUS"),kt=r.useState,At=r.useRef,Rt=r.useCallback;var Mt=Object(ot.a)((function(t){return{apiConfig:Object(it.c)(t)}}))((function(t){var e=t.apiConfig,n=t.dispatch,o=kt(e.baseURL),i=Object(c.a)(o,2),a=i[0],s=i[1],u=kt(e.secret),l=Object(c.a)(u,2),f=l[0],p=l[1],d=kt(""),h=Object(c.a)(d,2),v=h[0],m=h[1],y=At(!1),b=At(null),g=Rt((function(t){y.current=!0,m("");var e=t.target,n=e.name,r=e.value;switch(n){case"baseURL":s(r);break;case"secret":p(r);break;default:throw new Error("unknown input name "+n)}}),[]),w=Rt((function(){(function(t){return Lt.apply(this,arguments)})({baseURL:a,secret:f}).then((function(t){0!==t[0]?m(t[1]):n(Object(it.n)({baseURL:a,secret:f}))}))}),[a,f,n]),O=Rt((function(t){"Enter"===t.key&&w()}),[w]);return r.createElement("div",{className:gt.a.root,ref:b,onKeyDown:O},r.createElement("div",{className:gt.a.header},r.createElement("div",{className:gt.a.icon},r.createElement(Tt.a,{width:160,height:160}))),r.createElement("div",{className:gt.a.body},r.createElement("div",{className:gt.a.hostnamePort},r.createElement(Pt,{id:"baseURL",name:"baseURL",label:"API Base URL",type:"text",value:a,onChange:g}),r.createElement(Pt,{id:"secret",name:"secret",label:"Secret(optional)",value:f,type:"text",onChange:g}))),r.createElement("div",{className:gt.a.error},v||null),r.createElement("div",{className:gt.a.footer},r.createElement(wt.a,{label:"Confirm",onClick:w})))}));function Lt(){return(Lt=Object(J.a)(Z.a.mark((function t(e){var n;return Z.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:t.prev=0,new URL(e.baseURL),t.next=7;break;case 4:return t.prev=4,t.t0=t.catch(0),t.abrupt("return",[1,"Invalid URL"]);case 7:return t.prev=7,t.next=10,Object(yt.a)(e);case 10:if(!((n=t.sent).status>399)){t.next=13;break}return t.abrupt("return",[1,n.statusText]);case 13:return t.abrupt("return",[0]);case 16:return t.prev=16,t.t1=t.catch(7),t.abrupt("return",[1,"Failed to connect"]);case 19:case"end":return t.stop()}}),t,null,[[0,4],[7,16]])})))).apply(this,arguments)}var Dt=n("rRNg"),_t=n.n(Dt),Nt=n("Z9Yo"),Ft=n.n(Nt);function Vt(t){var e=t.isOpen,n=t.onRequestClose,r=t.className,i=t.overlayClassName,a=t.children,s=Object(xt.a)(t,["isOpen","onRequestClose","className","overlayClassName","children"]),c=Object(Et.a)(r,Ft.a.content),l=Object(Et.a)(i,Ft.a.overlay);return o.a.createElement(u.a,Object(Ot.a)({isOpen:e,onRequestClose:n,className:c,overlayClassName:l},s),a)}Vt.propTypes={isOpen:w.a.bool.isRequired,onRequestClose:w.a.func.isRequired,children:w.a.node.isRequired,className:w.a.string,overlayClassName:w.a.string};var Bt=o.a.memo(Vt),It=o.a.useCallback,Ut=o.a.useEffect;var qt=Object(ot.a)((function(t){return{modals:t.modals,apiConfig:Object(it.c)(t)}}))((function(t){var e=t.dispatch,n=t.apiConfig,r=t.modals;if(!window.fetch){var i=mt[0].detail,a=new Error(i);throw a.code=0,a}var s=It((function(){e(Object(pt.a)("apiConfig"))}),[e]);return Ut((function(){e(Object(lt.a)(n))}),[e,n]),o.a.createElement(Bt,{isOpen:r.apiConfig,className:_t.a.content,overlayClassName:_t.a.overlay,shouldCloseOnOverlayClick:!1,shouldCloseOnEsc:!1,onRequestClose:s},o.a.createElement("div",{className:_t.a.container},o.a.createElement(Mt,null)))}));n("ma9I"),n("SuFq"),n("JfAA");function Wt(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function zt(t,e){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:{},e=t.width,n=void 0===e?24:e,r=t.height,i=void 0===r?24:r;return o.a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:n,height:i,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},o.a.createElement("path",{d:"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"}))}ie.propTypes={width:w.a.number,height:w.a.number};function ae(t){var e=t.message,n=t.detail;return o.a.createElement("div",{className:oe.a.root},o.a.createElement("div",{className:oe.a.yacd},o.a.createElement(Tt.a,{width:150,height:150})),e?o.a.createElement("h1",null,e):null,n?o.a.createElement("p",null,n):null,o.a.createElement("p",null,o.a.createElement("a",{className:oe.a.link,href:"https://github.com/haishanh/yacd/issues"},o.a.createElement(ie,{width:16,height:16}),"haishanh/yacd")))}ae.propTypes={message:w.a.string};var se=ae;function ue(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var n,r=Kt(t);if(e){var o=Kt(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return $t(this,n)}}var ce=function(t){Xt(n,t);var e=ue(n);function n(){var t;Wt(this,n);for(var r=arguments.length,o=new Array(r),i=0;i=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var Ue=Object(r.forwardRef)((function(t,e){var n=t.color,r=void 0===n?"currentColor":n,i=t.size,a=void 0===i?24:i,s=Ie(t,["color","size"]);return o.a.createElement("svg",Be({ref:e,xmlns:"http://www.w3.org/2000/svg",width:a,height:a,viewBox:"0 0 24 24",fill:"none",stroke:r,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},s),o.a.createElement("circle",{cx:"12",cy:"12",r:"10"}),o.a.createElement("line",{x1:"12",y1:"16",x2:"12",y2:"12"}),o.a.createElement("line",{x1:"12",y1:"8",x2:"12.01",y2:"8"}))}));Ue.propTypes={color:w.a.string,size:w.a.oneOfType([w.a.string,w.a.number])},Ue.displayName="Info";var qe=Ue,We={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},ze=r.createContext&&r.createContext(We),He=function(){return(He=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0&&void 0!==arguments[0]&&arguments[0],e=o.a.useState(t),n=Object(c.a)(e,2),r=n[0],i=n[1],a=o.a.useCallback((function(){i((function(t){return!t}))}),[]);return[r,a]}(!1),e=Object(c.a)(t,2),n=e[0],r=e[1];return o.a.createElement(un.a,{checked:n,onChange:r})}r.PureComponent;var bn=Object(r.lazy)((function(){return Promise.all([n.e(0),n.e(12),n.e(4)]).then(n.bind(null,"rfEN"))})),gn=Object(r.lazy)((function(){return n.e(3).then(n.bind(null,"EeQf"))})),wn=Object(r.lazy)((function(){return Promise.all([n.e(1),n.e(6)]).then(n.bind(null,"aTX5"))})),On=Object(r.lazy)((function(){return Promise.all([n.e(0),n.e(13),n.e(7)]).then(n.bind(null,"kCV3"))})),xn=Object(r.lazy)((function(){return Promise.all([n.e(0),n.e(1),n.e(9)]).then(n.bind(null,"BVyM"))})),En=[["home","/",o.a.createElement(Me,null)],["connections","/connections",o.a.createElement(bn,null)],["configs","/configs",o.a.createElement(gn,null)],["logs","/logs",o.a.createElement(wn,null)],["proxies","/proxies",o.a.createElement(On,null)],["rules","/rules",o.a.createElement(xn,null)],["about","/about",o.a.createElement(ct,null)],!1].filter(Boolean),Sn=function(){return o.a.createElement(le,null,o.a.createElement(H.RecoilRoot,null,o.a.createElement(ot.b,{initialState:ht,actions:vt},o.a.createElement(W,null,o.a.createElement("div",{className:Fe.a.app},o.a.createElement(qt,null),o.a.createElement(rn,null),o.a.createElement("div",{className:Fe.a.content},o.a.createElement(r.Suspense,{fallback:o.a.createElement(_e,null)},o.a.createElement(k,null,En.map((function(t){var e=Object(c.a)(t,3),n=e[0],r=e[1],i=e[2];return o.a.createElement(P,{key:n,path:r,element:i})}))))))))))},jn=document.getElementById("app");u.a.setAppElement(jn),(0,a.a.createRoot)(jn).render(o.a.createElement(Sn,null)),console.log("Checkout the repo: https://github.com/haishanh/yacd"),console.log("Version:","0.2.6")},Ff2n:function(t,e,n){"use strict";function r(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},i=Object.keys(t);for(r=0;r=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}n.d(e,"a",(function(){return r}))},GmYy:function(t,e,n){"use strict";n.d(e,"j",(function(){return A})),n.d(e,"a",(function(){return M})),n.d(e,"e",(function(){return L})),n.d(e,"d",(function(){return D})),n.d(e,"f",(function(){return _})),n.d(e,"g",(function(){return N})),n.d(e,"h",(function(){return V})),n.d(e,"c",(function(){return B})),n.d(e,"n",(function(){return I})),n.d(e,"i",(function(){return W})),n.d(e,"m",(function(){return Y})),n.d(e,"l",(function(){return Z})),n.d(e,"b",(function(){return et})),n.d(e,"k",(function(){return nt}));n("pNMO"),n("4Brf"),n("TeQF"),n("QWBl"),n("pjDv"),n("yXV3"),n("4mDm"),n("2B1R"),n("+2oP"),n("ToJy"),n("27RR"),n("07d7"),n("5s+n"),n("JfAA"),n("FZtP"),n("3bBZ");var r=n("o0o1"),o=n.n(r),i=n("rePB"),a=n("ODXe"),s=(n("ls82"),n("HaE+")),u=n("dBaT"),c=n("Szw6"),l=n("YrXW");function f(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function p(t){for(var e=1;e2&&void 0!==c[2]?c[2]:"http://www.gstatic.com/generate_204",i=Object(l.b)(e),a=i.url,s=i.init,u=`${a}/proxies/${n}/delay?${"timeout=5000&url="+r}`,t.next=6,fetch(u,s);case 6:return t.abrupt("return",t.sent);case 7:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function g(t){return w.apply(this,arguments)}function w(){return(w=Object(s.a)(o.a.mark((function t(e){var n,r,i,a;return o.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return n=Object(l.b)(e),r=n.url,i=n.init,t.next=3,fetch(r+"/providers/proxies",i);case 3:if(404!==(a=t.sent).status){t.next=6;break}return t.abrupt("return",{providers:{}});case 6:return t.next=8,a.json();case 8:return t.abrupt("return",t.sent);case 9:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function O(t,e){return x.apply(this,arguments)}function x(){return(x=Object(s.a)(o.a.mark((function t(e,n){var r,i,a,s;return o.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=Object(l.b)(e),i=r.url,a=r.init,s=p(p({},a),{},{method:"PUT"}),t.next=4,fetch(i+"/providers/proxies/"+n,s);case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function E(t,e){return S.apply(this,arguments)}function S(){return(S=Object(s.a)(o.a.mark((function t(e,n){var r,i,a,s;return o.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=Object(l.b)(e),i=r.url,a=r.init,s=p(p({},a),{},{method:"GET"}),t.next=4,fetch(i+"/providers/proxies/"+n+"/healthcheck",s);case 4:return t.abrupt("return",t.sent);case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var j=n("OADI");function C(t,e){var n;if("undefined"==typeof Symbol||null==t[Symbol.iterator]){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return P(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return P(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){n=t[Symbol.iterator]()},n:function(){var t=n.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function P(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n-1&&p.chains.indexOf(r)<0&&u.push(p.id)}catch(t){l.e(t)}finally{l.f()}return t.next=13,Promise.all(u.map((function(t){return c.b(e,t).catch(R)})));case 13:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function H(t,e,n,r,o){return Q.apply(this,arguments)}function Q(){return(Q=Object(s.a)(o.a.mark((function t(e,n,r,i,a){var s;return o.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,v(r,i,a);case 3:if(!1!==t.sent.ok){t.next=6;break}throw new Error("failed to switch proxy: res.statusText");case 6:t.next=12;break;case 8:throw t.prev=8,t.t0=t.catch(0),console.log(t.t0,"failed to swith proxy"),t.t0;case 12:e(B(r)),Object(j.b)(n())&&(s=L(n()),X(r,s,{groupName:i,itemName:a}));case 15:case"end":return t.stop()}}),t,null,[[0,8]])})))).apply(this,arguments)}function G(){return function(t){t("closeModalClosePrevConns",(function(t){t.proxies.showModalClosePrevConns=!1}))}}function X(t,e,n){var r=function(t,e,n){for(var r,o=[n,e],i=n;(r=t[i])&&r.now;)o.unshift(r.now),i=r.now;return o}(e,n.groupName,n.itemName);!function(t,e,n){z.apply(this,arguments)}(t,n.groupName,r[0])}function Y(t,e,n){return function(){var r=Object(s.a)(o.a.mark((function r(i,a){return o.a.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:H(i,a,t,e,n).catch(R),i("store/proxies#switchProxy",(function(t){var r=t.proxies.proxies;r[e]&&r[e].now&&(r[e].now=n)}));case 2:case"end":return r.stop()}}),r)})));return function(t,e){return r.apply(this,arguments)}}()}function $(t,e){return function(){var n=Object(s.a)(o.a.mark((function n(r,i){var a,s,u,c,l,f,p;return o.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return a=Object(j.f)(i()),n.next=3,y(t,e,a);case 3:return s=n.sent,u="",!1===s.ok&&(u=s.statusText),n.next=8,s.json();case 8:c=n.sent,l=c.delay,f=D(i()),p=k(k({},f),{},{[e]:{error:u,number:l}}),r("requestDelayForProxyOnce",(function(t){t.proxies.delay=p}));case 13:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}()}function K(t,e){return function(){var n=Object(s.a)(o.a.mark((function n(r){return o.a.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,r($(t,e));case 2:case"end":return n.stop()}}),n)})));return function(t){return n.apply(this,arguments)}}()}function Z(t){return function(){var e=Object(s.a)(o.a.mark((function e(n,r){var i,a,s,u,c;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=F(r()),e.next=3,Promise.all(i.map((function(e){return n(K(t,e))})));case 3:a=N(r()),s=C(a),e.prev=5,s.s();case 7:if((u=s.n()).done){e.next=13;break}return c=u.value,e.next=11,U(t,c.name);case 11:e.next=7;break;case 13:e.next=18;break;case 15:e.prev=15,e.t0=e.catch(5),s.e(e.t0);case 18:return e.prev=18,s.f(),e.finish(18);case 21:return e.next=23,n(B(t));case 23:case"end":return e.stop()}}),e,null,[[5,15,18,21]])})));return function(t,n){return e.apply(this,arguments)}}()}function J(t){var e,n=[],r=[];for(var o in t){var i=t[o];i.all&&Array.isArray(i.all)?(n.push(o),"GLOBAL"===o&&(e=i.all)):M.indexOf(i.type)<0&&r.push(o)}return e&&(e.push("GLOBAL"),n=n.map((function(t){return[e.indexOf(t),t]})).sort((function(t,e){return t[0]-e[0]})).map((function(t){return t[1]}))),[n,r]}function tt(t){for(var e=Object.keys(t),n=[],r={},o=0;o-1})).map((function(e){return r(K(t,e))})),n.next=4,Promise.all(s);case 4:return n.next=6,r(B(t));case 6:case"end":return n.stop()}}),n)})));return function(t,e){return n.apply(this,arguments)}}()},closeModalClosePrevConns:G,closePrevConnsAndTheModal:function(t){return function(){var e=Object(s.a)(o.a.mark((function e(n,r){var i,a,s,u;return o.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=r(),s=null===(i=a.proxies.switchProxyCtx)||void 0===i?void 0:i.to){e.next=5;break}return n((function(t){t("closeModalClosePrevConns",(function(t){t.proxies.showModalClosePrevConns=!1}))})),e.abrupt("return");case 5:u=a.proxies.proxies,X(t,u,s),n("closePrevConnsAndTheModal",(function(t){t.proxies.showModalClosePrevConns=!1,t.proxies.switchProxyCtx=void 0}));case 8:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}()}},nt=Object(u.atom)({key:"proxyFilterText",default:""})},"HaE+":function(t,e,n){"use strict";function r(t,e,n,r,o,i,a){try{var s=t[i](a),u=s.value}catch(t){return void n(t)}s.done?e(u):Promise.resolve(u).then(r,o)}function o(t){return function(){var e=this,n=arguments;return new Promise((function(o,i){var a=t.apply(e,n);function s(t){r(a,o,i,s,u,"next",t)}function u(t){r(a,o,i,s,u,"throw",t)}s(void 0)}))}}n.d(e,"a",(function(){return o}))},"J3/6":function(t,e,n){t.exports={TrafficNow:"_2n4kL7wLDR"}},Jf6s:function(t,e,n){"use strict";n.d(e,"a",(function(){return l}));n("QWBl"),n("yXV3"),n("pDQq"),n("07d7"),n("5s+n"),n("EnZy"),n("FZtP");var r,o=n("YrXW"),i=new TextDecoder("utf-8"),a={labels:Array(150),up:Array(150),down:Array(150),size:150,subscribers:[],appendData(t){this.up.push(t.up),this.down.push(t.down);var e=new Date,n=""+e.getMinutes()+e.getSeconds();this.labels.push(n),this.up.length>this.size&&this.up.shift(),this.down.length>this.size&&this.down.shift(),this.labels.length>this.size&&this.labels.shift(),this.subscribers.forEach((function(e){return e(t)}))},subscribe(t){var e=this;return this.subscribers.push(t),function(){var n=e.subscribers.indexOf(t);e.subscribers.splice(n,1)}}},s=!1,u="";function c(t){a.appendData(JSON.parse(t))}function l(t){if(s||1===r)return a;r=1;var e=Object(o.a)(t,"/traffic"),n=new WebSocket(e);return n.addEventListener("error",(function(t){r=3})),n.addEventListener("close",(function(e){r=3,function(t){if(s)return a;s=!0;var e=Object(o.b)(t),n=e.url,r=e.init;fetch(n+"/traffic",r).then((function(t){t.ok?function t(e){return e.read().then((function(n){for(var r=n.done,o=n.value,a=i.decode(o,{stream:!r}),l=(u+=a).split("\n"),f=l[l.length-1],p=0;pT(null!=t?t:M,r,["TODO debug name",n]))},function(t){return{...t,nodeToComponentSubscriptions:k(t.nodeToComponentSubscriptions,e,t=>P(null!=t?t:M,r))}}]},fireNodeSubscriptions:function(t,e,n){var r;const o="enqueue"===n&&null!==(r=t.getState().nextTree)&&void 0!==r?r:t.getState().currentTree,i=function(t,e){const n=new Set,r=new Set,o=Array.from(e);for(let e=o.pop();e;e=o.pop()){var i;n.add(e),r.add(e);const a=null!==(i=t.nodeToNodeSubscriptions.get(e))&&void 0!==i?i:L;for(const t of a)r.has(t)||o.push(t)}return n}(o,e);for(const e of i){var a;(null!==(a=o.nodeToComponentSubscriptions.get(e))&&void 0!==a?a:[]).forEach(([e,r])=>{"enqueue"===n?t.getState().queuedComponentCallbacks.push(r):r(o)})}j("value became available, waking components",Array.from(e).join(", "),()=>{const e=t.getState().suspendedComponentResolvers;e.forEach(t=>t()),e.clear()})},detectCircularDependencies:function t(e,n){if(!n.length)return;const r=n[n.length-1],o=e.nodeToNodeSubscriptions.get(r);if(!(null==o?void 0:o.size))return;const i=n[0];if(o.has(i))throw new Error("Recoil selector has circular dependencies: "+[...n,i].reverse().join(" → "));for(const r of o)t(e,[...n,r])}},V=function(t,e){const n=new Map;return t.forEach((t,r)=>{n.set(r,e(t,r))}),n};const{getNodeLoadable:B,peekNodeLoadable:I,setNodeValue:U,setUnvalidatedAtomValue:q,subscribeComponentToNode:W}=F,{RecoilValueNotReady:z}=x,{AbstractRecoilValue:H,RecoilState:Q,RecoilValueReadOnly:G}=m;var X={RecoilValueReadOnly:G,AbstractRecoilValue:H,RecoilState:Q,valueFromValueOrUpdater:function(t,{key:e},n){if("function"==typeof n){var r;const o=t.getState(),i=null!==(r=o.nextTree)&&void 0!==r?r:o.currentTree,a=I(t,i,e);if("loading"===a.state)throw new z(e);if("hasError"===a.state)throw a.contents;return n(a.contents)}return n},getRecoilValueAsLoadable:function(t,{key:e}){let n;return j("get RecoilValue",e,()=>t.replaceState(C(r=>{const[o,i]=B(t,r,e);return n=i,o}))),n},setRecoilValue:function(t,{key:e},n){j("set RecoilValue",e,()=>t.replaceState(C(r=>{const[o,i]=U(t,r,e,n);return t.fireNodeSubscriptions(i,"enqueue"),o})))},setUnvalidatedRecoilValue:function(t,{key:e},n){j("set unvalidated persisted atom",e,()=>t.replaceState(C(r=>{const o=q(r,e,n);return t.fireNodeSubscriptions(new Set([e]),"enqueue"),o})))},subscribeToRecoilValue:function(t,{key:e},n){let r,o;return j("subscribe component to RecoilValue",e,()=>t.replaceState(C(t=>([r,o]=W(t,e,n),r)))),{release:t=>t.replaceState(o)}}};function Y(){return{transactionMetadata:{},atomValues:new Map,nonvalidatedAtoms:new Map,dirtyAtoms:new Set,nodeDeps:new Map,nodeToNodeSubscriptions:new Map,nodeToComponentSubscriptions:new Map}}function $(t){return{currentTree:t,nextTree:null,transactionSubscriptions:new Map,queuedComponentCallbacks:[],suspendedComponentResolvers:new Set}}var K={makeEmptyTreeState:Y,makeEmptyStoreState:function(){return $(Y())},makeStoreState:$};const{DEFAULT_VALUE:Z}=x,{getRecoilValueAsLoadable:J,setRecoilValue:tt,valueFromValueOrUpdater:et}=X,{makeEmptyTreeState:nt,makeStoreState:rt}=K;class ot{constructor(t){a(this,"_store",void 0),a(this,"getLoadable",t=>J(this._store,t)),a(this,"getPromise",t=>this.getLoadable(t).toPromise()),a(this,"map",t=>{const e=new st(this._store.getState().currentTree);return t(e),at(e.getStore_INTERNAL().getState().currentTree)}),a(this,"asyncMap",async t=>{const e=new st(this._store.getState().currentTree);return await t(e),at(e.getStore_INTERNAL().getState().currentTree)}),this._store=function(t){const e=rt(t);return{getState:()=>e,replaceState:t=>{e.currentTree=t(e.currentTree)},subscribeToTransactions:()=>{throw new Error("Cannot subscribe to Snapshots")},addTransactionMetadata:()=>{throw new Error("Cannot subscribe to Snapshots")},fireNodeSubscriptions:()=>{}}}(t)}getStore_INTERNAL(){return this._store}}function it(t){return{transactionMetadata:{...t.transactionMetadata},atomValues:new Map(t.atomValues),nonvalidatedAtoms:new Map(t.nonvalidatedAtoms),dirtyAtoms:new Set(t.dirtyAtoms),nodeDeps:new Map(t.nodeDeps),nodeToNodeSubscriptions:V(t.nodeToNodeSubscriptions,t=>new Set(t)),nodeToComponentSubscriptions:new Map}}function at(t){return new ot(it(t))}class st extends ot{constructor(t){super(it(t)),a(this,"set",(t,e)=>{const n=this.getStore_INTERNAL(),r=et(n,t,e);tt(n,t,r)}),a(this,"reset",t=>tt(this.getStore_INTERNAL(),t,Z))}}var ut={Snapshot:ot,MutableSnapshot:st,freshSnapshot:function(){return new ot(nt())},cloneSnapshot:at},ct=ut.Snapshot,lt=ut.MutableSnapshot,ft=ut.freshSnapshot,pt=ut.cloneSnapshot,dt=function(t,e){if(null!=t)return t;throw new Error(null!=e?e:"Got unexpected null or undefined")},ht=v(Object.freeze({__proto__:null,Snapshot:ct,MutableSnapshot:lt,freshSnapshot:ft,cloneSnapshot:pt}));const{useContext:vt,useEffect:mt,useRef:yt,useState:bt}=o,{fireNodeSubscriptions:gt,setNodeValue:wt,setUnvalidatedAtomValue:Ot}=F,{freshSnapshot:xt}=ht,{makeEmptyStoreState:Et,makeStoreState:St}=K;function jt(){throw new Error("This component must be used inside a component.")}const Ct=Object.freeze({getState:jt,replaceState:jt,subscribeToTransactions:jt,addTransactionMetadata:jt,fireNodeSubscriptions:jt});function Pt(t){null===t.nextTree&&(t.nextTree={...t.currentTree,dirtyAtoms:new Set,transactionMetadata:{}})}const Tt=o.createContext({current:Ct}),kt=()=>vt(Tt);function At(t){const e=kt(),[n,r]=bt([]);return t.setNotifyBatcherOfChange(()=>r({})),mt(()=>{E("Batcher",()=>{const t=e.current.getState(),{nextTree:n}=t;null!==n&&(n.dirtyAtoms.size&&t.transactionSubscriptions.forEach(t=>t(e.current)),t.queuedComponentCallbacks.forEach(t=>t(n)),t.queuedComponentCallbacks.splice(0,t.queuedComponentCallbacks.length),t.currentTree=n,t.nextTree=null)})}),null}let Rt=0;var Mt={useStoreRef:kt,RecoilRoot:function({initializeState_DEPRECATED:t,initializeState:e,children:n}){let r;const i=yt(null),a={getState:()=>r.current,replaceState:t=>{const e=s.current.getState();Pt(e);const n=dt(e.nextTree),r=t(n);r!==n&&(e.nextTree=r,dt(i.current)())},subscribeToTransactions:t=>{const e=Rt++;return s.current.getState().transactionSubscriptions.set(e,t),{release:()=>{s.current.getState().transactionSubscriptions.delete(e)}}},addTransactionMetadata:t=>{Pt(s.current.getState());for(const e of Object.keys(t))dt(s.current.getState().nextTree).transactionMetadata[e]=t[e]},fireNodeSubscriptions:function(t,e){gt(s.current,t,e)}},s=yt(a);return r=yt(null!=t?function(t,e){const n=Et();return e({set:(e,r)=>{n.currentTree=wt(t,n.currentTree,e.key,r)[0]},setUnvalidatedAtomValues:t=>{t.forEach((t,e)=>{n.currentTree=Ot(n.currentTree,e,t)})}}),n}(a,t):null!=e?function(t){const e=xt().map(t);return St(e.getStore_INTERNAL().getState().currentTree)}(e):Et()),o.createElement(Tt.Provider,{value:s},o.createElement(At,{setNotifyBatcherOfChange:function(t){i.current=t}}),n)}},Lt=function(t,...e){const n=new Set;t:for(const r of t){for(const t of e)if(t.has(r))continue t;n.add(r)}return n};const{useCallback:Dt,useEffect:_t,useMemo:Nt,useRef:Ft,useState:Vt}=o,{peekNodeLoadable:Bt,setNodeValue:It}=F,{DEFAULT_VALUE:Ut,getNode:qt,nodes:Wt}=x,{useStoreRef:zt}=Mt,{AbstractRecoilValue:Ht,getRecoilValueAsLoadable:Qt,setRecoilValue:Gt,setUnvalidatedRecoilValue:Xt,subscribeToRecoilValue:Yt,valueFromValueOrUpdater:$t}=X,{Snapshot:Kt,cloneSnapshot:Zt}=ht,{setByAddingToSet:Jt}=S;function te(){const t=zt(),[e,n]=Vt([]),r=Ft(new Set);r.current=new Set;const o=Ft(new Set),i=Ft(new Map),a=Dt(e=>{const n=i.current.get(e);n&&(n.release(t.current),i.current.delete(e))},[t,i]);return _t(()=>{const e=t.current;function s(t,e){i.current.has(e)&&n([])}Lt(r.current,o.current).forEach(t=>{if(i.current.has(t))return;const n=Yt(e,new Ht(t),e=>{j("RecoilValue subscription fired",t,()=>{s(0,t)})});i.current.set(t,n),j("initial update on subscribing",t,()=>{s(e.getState(),t)})}),Lt(o.current,r.current).forEach(t=>{a(t)}),o.current=r.current}),_t(()=>{const t=i.current;return()=>t.forEach((t,e)=>a(e))},[a]),Nt(()=>{function e(e){return n=>{const r=$t(t.current,e,n);Gt(t.current,e,r)}}function n(e){return r.current.has(e.key)||(r.current=Jt(r.current,e.key)),Qt(t.current,e)}function o(e){return function(t,e,n){if("hasValue"===t.state)return t.contents;if("loading"===t.state)throw new Promise(t=>{n.current.getState().suspendedComponentResolvers.add(t)});throw"hasError"===t.state?t.contents:new Error(`Invalid value of loadable atom "${e.key}"`)}(n(e),e,t)}return{getRecoilValue:o,getRecoilValueLoadable:n,getRecoilState:function(t){return[o(t),e(t)]},getRecoilStateLoadable:function(t){return[n(t),e(t)]},getSetRecoilState:e,getResetRecoilState:function(e){return()=>Gt(t.current,e,Ut)}}},[r,t])}function ee(t){const e=zt();_t(()=>e.current.subscribeToTransactions(t).release,[t,e])}function ne(t){const e=t.atomValues,n=V(function(t,e){const n=new Map;for(const[r,o]of t)e(o,r)&&n.set(r,o);return n}(e,(t,e)=>{var n;const r=null===(n=qt(e).options)||void 0===n?void 0:n.persistence_UNSTABLE;return null!=r&&"none"!==r.type&&"hasValue"===t.state}),t=>t.contents);return function(...t){const e=new Map;for(let n=0;n{i.unstable_batchedUpdates(()=>{t.current.replaceState(n=>{const r=e.getStore_INTERNAL().getState().currentTree,o=new Set;for(const t of[n.atomValues.keys(),r.atomValues.keys()])for(const e of t){var i,a;(null===(i=n.atomValues.get(e))||void 0===i?void 0:i.contents)!==(null===(a=r.atomValues.get(e))||void 0===a?void 0:a.contents)&&o.add(e)}return t.current.fireNodeSubscriptions(o,"enqueue"),{...r,nodeToComponentSubscriptions:n.nodeToComponentSubscriptions}})})},[t])}class oe{}const ie=new oe;var ae={useRecoilCallback:function(t,e){const n=zt(),r=re();return Dt((...e)=>{const o=Zt(n.current.getState().currentTree);function a(t,e){const r=$t(n.current,t,e);Gt(n.current,t,r)}function s(t){Gt(n.current,t,Ut)}let u=ie;return i.unstable_batchedUpdates(()=>{u=t({set:a,reset:s,snapshot:o,gotoSnapshot:r})(...e)}),u instanceof oe&&function(t,e){if(!t)throw new Error(e)}(!1),u},null!=e?[...e,n]:void 0)},useRecoilValue:function(t){return te().getRecoilValue(t)},useRecoilValueLoadable:function(t){return te().getRecoilValueLoadable(t)},useRecoilState:function(t){const e=te(),[n]=e.getRecoilState(t);return[n,Dt(e.getSetRecoilState(t),[t])]},useRecoilStateLoadable:function(t){const e=te(),[n]=e.getRecoilStateLoadable(t);return[n,Dt(e.getSetRecoilState(t),[t])]},useSetRecoilState:function(t){return Dt(te().getSetRecoilState(t),[t])},useResetRecoilState:function(t){return Dt(te().getResetRecoilState(t),[t])},useRecoilInterface:te,useSnapshotWithStateChange_DEPRECATED:function(t){const e=zt();let n=function(){const[t,e]=Vt(0);return ee(Dt(()=>e(t=>t+1),[])),{transactionMetadata:{...(n=zt().current.getState().currentTree).transactionMetadata},atomValues:new Map(n.atomValues),nonvalidatedAtoms:new Map(n.nonvalidatedAtoms),dirtyAtoms:new Set(n.dirtyAtoms),nodeDeps:new Map(n.nodeDeps),nodeToNodeSubscriptions:V(n.nodeToNodeSubscriptions,t=>new Set(t)),nodeToComponentSubscriptions:V(n.nodeToComponentSubscriptions,t=>new Map(t))};var n}();t(({key:t},r)=>{[n]=It(e.current,n,t,Bt(e.current,n,t).map(r))});const r=V(n.atomValues,t=>t.contents),o=function(t,...e){const n=new Set;t:for(const r of t){for(const t of e)if(!t.has(r))continue t;n.add(r)}return n}(n.dirtyAtoms,new Set(r.keys()));return{atomValues:r,updatedAtoms:o}},useTransactionSubscription_DEPRECATED:ee,useTransactionObservation_DEPRECATED:function(t){ee(Dt(e=>{const n=e.getState().currentTree;let r=e.getState().nextTree;r||(r=e.getState().currentTree);const o=ne(r),i=ne(n),a=V(Wt,t=>{var e,n,r,o,i,a;return{persistence_UNSTABLE:{type:null!==(e=null===(n=t.options)||void 0===n||null===(r=n.persistence_UNSTABLE)||void 0===r?void 0:r.type)&&void 0!==e?e:"none",backButton:null!==(o=null===(i=t.options)||void 0===i||null===(a=i.persistence_UNSTABLE)||void 0===a?void 0:a.backButton)&&void 0!==o&&o}}}),s=new Set(r.dirtyAtoms);t({atomValues:o,previousAtomValues:i,atomInfo:a,modifiedAtoms:s,transactionMetadata:{...r.transactionMetadata}})},[t]))},useRecoilTransactionObserver:function(t){ee(Dt(e=>{const n=e.getState().currentTree;let r=e.getState().nextTree;r||(r=n),t({snapshot:Zt(r),previousSnapshot:Zt(n)})},[t]))},useRecoilSnapshot:function(){const t=zt(),[e,n]=Vt(()=>Zt(t.current.getState().currentTree));return ee(Dt(t=>{var e;return n(Zt(null!==(e=t.getState().nextTree)&&void 0!==e?e:t.getState().currentTree))},[])),e},useGoToSnapshot_DEPRECATED:function(){const t=zt();return e=>{i.unstable_batchedUpdates(()=>{e.updatedAtoms.forEach(n=>{Gt(t.current,new Ht(n),e.atomValues.get(n))})})}},useGotoRecoilSnapshot:re,useSetUnvalidatedAtomValues:function(){const t=zt();return(e,n={})=>{i.unstable_batchedUpdates(()=>{t.current.addTransactionMetadata(n),e.forEach((e,n)=>Xt(t.current,new Ht(n),e))})}}},se=function(t){return!!t&&"function"==typeof t.then};const ue={getValue(){if("hasValue"!==this.state)throw this.contents;return this.contents},toPromise(){return"hasValue"===this.state?Promise.resolve(this.contents):"hasError"===this.state?Promise.reject(this.contents):this.contents},valueMaybe(){return"hasValue"===this.state?this.contents:void 0},valueOrThrow(){if("hasValue"!==this.state)throw new Error(`Loadable expected value, but in "${this.state}" state`);return this.contents},errorMaybe(){return"hasError"===this.state?this.contents:void 0},errorOrThrow(){if("hasError"!==this.state)throw new Error(`Loadable expected error, but in "${this.state}" state`);return this.contents},promiseMaybe(){return"loading"===this.state?this.contents:void 0},promiseOrThrow(){if("loading"!==this.state)throw new Error(`Loadable expected promise, but in "${this.state}" state`);return this.contents},map(t){if("hasError"===this.state)return this;if("hasValue"===this.state)try{const e=t(this.contents);return se(e)?fe(e):ce(e)}catch(e){return se(e)?fe(e.next(()=>t(this.contents))):le(e)}if("loading"===this.state)return fe(this.contents.then(t).catch(e=>{if(se(e))return e.then(()=>t(this.contents));throw e}));throw new Error("Invalid Loadable state")}};function ce(t){return Object.freeze({state:"hasValue",contents:t,...ue})}function le(t){return Object.freeze({state:"hasError",contents:t,...ue})}function fe(t){return Object.freeze({state:"loading",contents:t,...ue})}var pe={loadableWithValue:ce,loadableWithError:le,loadableWithPromise:fe,loadableLoading:function(){return fe(new Promise(()=>{}))},loadableAll:function(t){return t.every(t=>"hasValue"===t.state)?ce(t.map(t=>t.contents)):t.some(t=>"hasError"===t.state)?le(dt(t.find(t=>"hasError"===t.state),"Invalid loadable passed to loadableAll").contents):fe(Promise.all(t.map(t=>t.contents)))}},de=function t(e){if("object"==typeof e&&!function(t){if(null===t||"object"!=typeof t)return!0;switch(typeof t.$$typeof){case"symbol":case"number":return!0}return null!=t["@@__IMMUTABLE_ITERABLE__@@"]||null!=t["@@__IMMUTABLE_KEYED__@@"]||null!=t["@@__IMMUTABLE_INDEXED__@@"]||null!=t["@@__IMMUTABLE_ORDERED__@@"]||null!=t["@@__IMMUTABLE_RECORD__@@"]||!!function(t){var e,n;if("undefined"==typeof window)return!1;const r=null!==(n=(null!=t?null!==(e=t.ownerDocument)&&void 0!==e?e:t:document).defaultView)&&void 0!==n?n:window;return!(null==t||!("function"==typeof r.Node?t instanceof r.Node:"object"==typeof t&&"number"==typeof t.nodeType&&"string"==typeof t.nodeName))}(t)||!!se(t)}(e)){Object.freeze(e);for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)){const r=e[n];"object"!=typeof r||null==r||Object.isFrozen(r)||t(r)}Object.seal(e)}};const he=Symbol("ArrayKeyedMap"),ve=new Map;class me{constructor(t){if(this._base=new Map,t instanceof me)for(const[e,n]of t.entries())this.set(e,n);else if(t)for(const[e,n]of t)this.set(e,n);return this}get(t){const e=Array.isArray(t)?t:[t];let n=this._base;return e.forEach(t=>{var e;n=null!==(e=n.get(t))&&void 0!==e?e:ve}),void 0===n?void 0:n.get(he)}set(t,e){const n=Array.isArray(t)?t:[t];let r=this._base,o=r;return n.forEach(t=>{o=r.get(t),o||(o=new Map,r.set(t,o)),r=o}),o.set(he,e),this}delete(t){const e=Array.isArray(t)?t:[t];let n=this._base,r=n;return e.forEach(t=>{r=n.get(t),r||(r=new Map,n.set(t,r)),n=r}),r.delete(he),this}entries(){const t=[];return function e(n,r){n.forEach((n,o)=>{o===he?t.push([r,n]):e(n,r.concat(o))})}(this._base,[]),t.values()}toBuiltInMap(){return new Map(this.entries())}}var ye=me,be=function(){return new ye},ge=function(t,e,n){const r=t.entries();let o=r.next();for(;!o.done;){const i=o.value;if(!e.call(n,i[1],i[0],t))return!1;o=r.next()}return!0};Object.freeze(new Set);const{mapBySettingInMap:we,mapByUpdatingInMap:Oe,setByAddingToSet:xe,setByDeletingFromSet:Ee}=S,{detectCircularDependencies:Se,getNodeLoadable:je,setNodeValue:Ce}=F,{loadableWithError:Pe,loadableWithPromise:Te,loadableWithValue:ke}=pe,{DEFAULT_VALUE:Ae,RecoilValueNotReady:Re,registerNode:Me}=x,{startPerfBlock:Le}={startPerfBlock:function(t){return()=>null}},{isRecoilValue:De}=m,_e=Object.freeze(new Set);function Ne(t){const e=[];for(const n of Array.from(t.keys()).sort()){const r=dt(t.get(n));e.push(n),e.push(r.contents)}return e}var Fe=function(t){const{key:e,get:n,cacheImplementation_UNSTABLE:r}=t,o=null!=t.set?t.set:void 0;let i=null!=r?r:be();function a(r,o){var s;let u=o;const c=null!==(s=o.nodeDeps.get(e))&&void 0!==s?s:_e,l=Ne(new Map(Array.from(c).sort().map(t=>{const[e,n]=je(r,u,t);return u=e,[t,n]}))),f=i.get(l);if(null!=f)return[u,f];const[p,d,h]=function(t,r){var o;const[i,s,u]=function(t,r){const o=Le(e);let i=r;const s=new Map;function u({key:e}){let n;if([i,n]=je(t,i,e),s.set(e,n),"hasValue"===n.state)return n.contents;throw n.contents}try{const t=n({get:u}),e=De(t)?u(t):t,r=se(e)?Te(e.finally(o)):(o(),ke(e));return[i,r,s]}catch(e){const n=se(e)?Te(e.then(()=>{let e=Pe(new Error("Internal Recoil Selector Error"));if(t.replaceState(n=>{let r;return[r,e]=a(t,n),r}),"hasError"===e.state)throw e.contents;return e.contents}).finally(o)):(o(),Pe(e));return[i,n,s]}}(t,r);let c=i;const l=null!==(o=r.nodeDeps.get(e))&&void 0!==o?o:_e,f=new Set(u.keys());var p,d;d=f,c=(p=l).size===d.size&&ge(p,t=>d.has(t))?c:{...c,nodeDeps:we(c.nodeDeps,e,f)};const h=Lt(f,l),v=Lt(l,f);for(const t of h)c={...c,nodeToNodeSubscriptions:Oe(c.nodeToNodeSubscriptions,t,t=>xe(null!=t?t:_e,e))};for(const t of v)c={...c,nodeToNodeSubscriptions:Oe(c.nodeToNodeSubscriptions,t,t=>Ee(null!=t?t:_e,e))};return[c,s,u]}(r,u);u=p;const v=Ne(h);return function(n,r,o){"loading"!==o.state?1==!t.dangerouslyAllowMutability&&de(o.contents):o.contents.then(o=>(1==!t.dangerouslyAllowMutability&&de(o),i=i.set(r,ke(o)),n.fireNodeSubscriptions(new Set([e]),"now"),o)).catch(o=>(se(o)||(1==!t.dangerouslyAllowMutability&&de(o),i=i.set(r,Pe(o)),n.fireNodeSubscriptions(new Set([e]),"now")),o)),i=i.set(r,o)}(r,v,d),[u,d]}function s(t,e){return a(t,e)}return Me(null!=o?{key:e,options:t,get:s,set:function(t,e,n){let r=e;const i=new Set;function a({key:e}){const[n,o]=je(t,r,e);if(r=n,"hasValue"===o.state)return o.contents;throw"loading"===o.state?new Re(e):o.contents}function s(e,n){const o="function"==typeof n?n(a(e)):n;let s;[r,s]=Ce(t,r,e.key,o),s.forEach(t=>i.add(t))}return o({set:s,get:a,reset:function(t){s(t,Ae)}},n),[r,i]}}:{key:e,options:t,get:s})};const{loadableWithValue:Ve}=pe,{DEFAULT_VALUE:Be,DefaultValue:Ie,registerNode:Ue}=x,{isRecoilValue:qe}=m,{mapByDeletingFromMap:We,mapBySettingInMap:ze,setByAddingToSet:He}=S;var Qe=function t(e){const{default:n,...r}=e;return qe(n)||se(n)?function(e){const n=t({...e,default:Be,persistence_UNSTABLE:void 0===e.persistence_UNSTABLE?void 0:{...e.persistence_UNSTABLE,validator:t=>t instanceof Ie?t:dt(e.persistence_UNSTABLE).validator(t,Be)}});return Fe({key:e.key+"__withFallback",get:({get:t})=>{const r=t(n);return r instanceof Ie?e.default:r},set:({set:t},e)=>t(n,e),dangerouslyAllowMutability:e.dangerouslyAllowMutability})}({...r,default:n}):function(t){const{key:e,persistence_UNSTABLE:n}=t;return Ue({key:e,options:t,get:(r,o)=>{if(o.atomValues.has(e))return[o,dt(o.atomValues.get(e))];if(o.nonvalidatedAtoms.has(e)){if(null==n)return[o,Ve(t.default)];const r=o.nonvalidatedAtoms.get(e),i=n.validator(r,Be);return i instanceof Ie?[{...o,nonvalidatedAtoms:We(o.nonvalidatedAtoms,e)},Ve(t.default)]:[{...o,atomValues:ze(o.atomValues,e,Ve(i)),nonvalidatedAtoms:We(o.nonvalidatedAtoms,e)},Ve(i)]}return[o,Ve(t.default)]},set:(n,r,o)=>(!0!==t.dangerouslyAllowMutability&&de(o),[{...r,dirtyAtoms:He(r.dirtyAtoms,e),atomValues:o instanceof Ie?We(r.atomValues,e):ze(r.atomValues,e,Ve(o)),nonvalidatedAtoms:We(r.nonvalidatedAtoms,e)},new Set([e])])})}({...r,default:n})},Ge=function(t,e={allowFunctions:!1}){return function t(e,n,r){if("string"==typeof e&&!e.includes('"')&&!e.includes("\\"))return`"${e}"`;switch(typeof e){case"undefined":return"";case"boolean":return e?"true":"false";case"number":case"symbol":return String(e);case"string":return JSON.stringify(e);case"function":if(!0!==(null==n?void 0:n.allowFunctions))throw new Error("Attempt to serialize function in a Recoil cache key");return`__FUNCTION(${e.name})__`}return null===e?"null":"object"!=typeof e?null!==(o=JSON.stringify(e))&&void 0!==o?o:"":se(e)?"__PROMISE__":Array.isArray(e)?`[${e.map((e,r)=>t(e,n,r.toString()))}]`:"function"==typeof e.toJSON?t(e.toJSON(r),n,r):e instanceof Map?t(Array.from(e).reduce((e,[r,o])=>({...e,["string"==typeof r?r:t(r,n)]:o}),{}),n,r):e instanceof Set?t(Array.from(e).sort((e,r)=>t(e,n).localeCompare(t(r,n))),n,r):null!=e[Symbol.iterator]&&"function"==typeof e[Symbol.iterator]?t(Array.from(e),n,r):`{${Object.keys(e).filter(t=>void 0!==e[t]).sort().map(r=>`${t(r,n)}:${t(e[r],n,r)}`).join(",")}}`;var o}(t,e)},Xe=function(){const t=new Map,e={get:e=>t.get(Ge(e)),set:(n,r)=>(t.set(Ge(n),r),e),map:t};return e};let Ye=0;var $e=function(t){var e,n;let r=null!==(e=null===(n=t.cacheImplementationForParams_UNSTABLE)||void 0===n?void 0:n.call(t))&&void 0!==e?e:Xe();return e=>{var n,o;const i=r.get(e);if(null!=i)return i;const a=`${t.key}__selectorFamily/${null!==(n=Ge(e,{allowFunctions:!0}))&&void 0!==n?n:"void"}/${Ye++}`,s=n=>t.get(e)(n),u=null===(o=t.cacheImplementation_UNSTABLE)||void 0===o?void 0:o.call(t);let c;if(null!=t.set){const n=t.set;c=Fe({key:a,get:s,set:(t,r)=>n(e)(t,r),cacheImplementation_UNSTABLE:u,dangerouslyAllowMutability:t.dangerouslyAllowMutability})}else c=Fe({key:a,get:s,cacheImplementation_UNSTABLE:u,dangerouslyAllowMutability:t.dangerouslyAllowMutability});return r=r.set(e,c),c}},Ke=v(Object.freeze({__proto__:null}));const{DEFAULT_VALUE:Ze,DefaultValue:Je}=x;function tn(t,e){return ge(e,e=>t.has(e))}const en=(t,e)=>Array.from(e).reduce((e,n)=>({...e,[n]:t[n]}),{});function nn(t){if(null==t)return;const{...e}=t;return{...e,validator:t=>t instanceof Ke?new Ke(t.value.filter(([t,e])=>t instanceof Set&&e instanceof Map).map(([t,n])=>[t,Array.from(n.entries()).reduce((t,[n,r])=>{const o=e.validator(r,Ze);return o instanceof Je||t.set(n,o),t},new Map)])):e.validator(t,Ze)}}const rn=$e({key:"__constant",get:t=>()=>t,cacheImplementationForParams_UNSTABLE:be});const on=$e({key:"__error",get:t=>()=>{throw new Error(t)},cacheImplementationForParams_UNSTABLE:be});const{loadableWithError:an,loadableWithPromise:sn,loadableWithValue:un}=pe;function cn(t,e){const n=Array(e.length).fill(void 0),r=Array(e.length).fill(void 0);for(const[o,i]of e.entries())try{n[o]=t(i)}catch(t){r[o]=t}return[n,r]}function ln(t){return null!=t&&!se(t)}function fn(t){return Array.isArray(t)?t:Object.getOwnPropertyNames(t).map(e=>t[e])}function pn(t,e){return Array.isArray(t)?e:Object.getOwnPropertyNames(t).reduce((t,n,r)=>({...t,[n]:e[r]}),{})}function dn(t,e,n){return pn(t,n.map((t,n)=>null==t?un(e[n]):se(t)?sn(t):an(t)))}var hn={waitForNone:$e({key:"__waitForNone",get:t=>({get:e})=>{const n=fn(t),[r,o]=cn(e,n);return dn(t,r,o)}}),waitForAny:$e({key:"__waitForAny",get:t=>({get:e})=>{const n=fn(t),[r,o]=cn(e,n);if(o.some(t=>null==t))return dn(t,r,o);if(o.every(ln))throw o.find(ln);throw new Promise((e,n)=>{for(const[i,a]of o.entries())se(a)&&a.then(n=>{r[i]=n,o[i]=null,e(dn(t,r,o))}).catch(t=>{o[i]=t,o.every(ln)&&n(o[0])})})}}),waitForAll:$e({key:"__waitForAll",get:t=>({get:e})=>{const n=fn(t),[r,o]=cn(e,n);if(o.every(t=>null==t))return pn(t,r);const i=o.find(ln);if(null!=i)throw i;throw Promise.all(o).then(e=>pn(t,e))}}),noWait:$e({key:"__noWait",get:t=>({get:e})=>{try{return un(e(t))}catch(t){return se(t)?sn(t):an(t)}}})};const{DefaultValue:vn}=x,{RecoilRoot:mn}=Mt,{isRecoilValue:yn}=m,{useGotoRecoilSnapshot:bn,useRecoilCallback:gn,useRecoilSnapshot:wn,useRecoilState:On,useRecoilStateLoadable:xn,useRecoilTransactionObserver:En,useRecoilValue:Sn,useRecoilValueLoadable:jn,useResetRecoilState:Cn,useSetRecoilState:Pn,useSetUnvalidatedAtomValues:Tn,useTransactionObservation_DEPRECATED:kn}=ae,{noWait:An,waitForAll:Rn,waitForAny:Mn,waitForNone:Ln}=hn;var Dn={DefaultValue:vn,RecoilRoot:mn,atom:Qe,selector:Fe,atomFamily:function(t){let e=Xe();const n={key:t.key,default:Ze,persistence_UNSTABLE:nn(t.persistence_UNSTABLE)};let r;r=Qe(n);const o=$e({key:t.key+"__atomFamily/Default",get:e=>({get:n})=>{const o=n("function"==typeof r?r(e):r);if(!(o instanceof Je)){const t=function(t,e){if(!(t instanceof Ke))return t;if("object"!=typeof e||null==e||Array.isArray(e))return Ze;const n=t.value,r=new Set(Object.keys(e));for(const[t,o]of n)if(tn(r,t)){const n=r.size===t.size?e:en(e,t),i=o.get(Ge(n));if(void 0!==i)return i}return Ze}(o,e);if(!(t instanceof Je))return t}return"function"==typeof t.default?t.default(e):t.default},dangerouslyAllowMutability:t.dangerouslyAllowMutability});return n=>{var r;const i=e.get(n);if(null!=i)return i;const a=Qe({key:`${t.key}__${null!==(r=Ge(n))&&void 0!==r?r:"void"}`,default:o(n),persistence_UNSTABLE:t.persistence_UNSTABLE,dangerouslyAllowMutability:t.dangerouslyAllowMutability});return e=e.set(n,a),a}},selectorFamily:$e,constSelector:function(t){return rn(t)},errorSelector:function(t){return on(t)},readOnlySelector:function(t){return t},useRecoilValue:Sn,useRecoilValueLoadable:jn,useRecoilState:On,useRecoilStateLoadable:xn,useSetRecoilState:Pn,useResetRecoilState:Cn,useRecoilCallback:gn,useGotoRecoilSnapshot:bn,useRecoilSnapshot:wn,useRecoilTransactionObserver_UNSTABLE:En,useTransactionObservation_UNSTABLE:kn,useSetUnvalidatedAtomValues_UNSTABLE:Tn,noWait:An,waitForNone:Ln,waitForAny:Mn,waitForAll:Rn,isRecoilValue:yn},_n=Dn.DefaultValue,Nn=Dn.RecoilRoot,Fn=Dn.atom,Vn=Dn.selector,Bn=Dn.atomFamily,In=Dn.selectorFamily,Un=Dn.constSelector,qn=Dn.errorSelector,Wn=Dn.readOnlySelector,zn=Dn.useRecoilValue,Hn=Dn.useRecoilValueLoadable,Qn=Dn.useRecoilState,Gn=Dn.useRecoilStateLoadable,Xn=Dn.useSetRecoilState,Yn=Dn.useResetRecoilState,$n=Dn.useRecoilCallback,Kn=Dn.useGotoRecoilSnapshot,Zn=Dn.useRecoilSnapshot,Jn=Dn.useRecoilTransactionObserver_UNSTABLE,tr=Dn.useTransactionObservation_UNSTABLE,er=Dn.useSetUnvalidatedAtomValues_UNSTABLE,nr=Dn.noWait,rr=Dn.waitForNone,or=Dn.waitForAny,ir=Dn.waitForAll,ar=Dn.isRecoilValue;e.DefaultValue=_n,e.RecoilRoot=Nn,e.atom=Fn,e.atomFamily=Bn,e.constSelector=Un,e.default=Dn,e.errorSelector=qn,e.isRecoilValue=ar,e.noWait=nr,e.readOnlySelector=Wn,e.selector=Vn,e.selectorFamily=In,e.useGotoRecoilSnapshot=Kn,e.useRecoilCallback=$n,e.useRecoilSnapshot=Zn,e.useRecoilState=Qn,e.useRecoilStateLoadable=Gn,e.useRecoilTransactionObserver_UNSTABLE=Jn,e.useRecoilValue=zn,e.useRecoilValueLoadable=Hn,e.useResetRecoilState=Yn,e.useSetRecoilState=Xn,e.useSetUnvalidatedAtomValues_UNSTABLE=er,e.useTransactionObservation_UNSTABLE=tr,e.waitForAll=ir,e.waitForAny=or,e.waitForNone=rr},MgzW:function(t,e,n){"use strict";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}t.exports=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},n=0;n<10;n++)e["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(e).map((function(t){return e[t]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(t){r[t]=t})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var n,s,u=a(t),c=1;c0&&void 0!==arguments[0]?arguments[0]:"dark";"dark"===t?(S.classList.remove("light"),S.classList.add("dark")):(S.classList.remove("dark"),S.classList.add("light"))}function C(){return function(t,e){var n="light"===v(e())?"dark":"light";j(n),t("storeSwitchTheme",(function(t){t.app.theme=n})),u(e().app)}}function P(){!function(){try{localStorage.removeItem("yacd.haishan.me")}catch(t){}}();try{window.location.reload()}catch(t){}}function T(t){return function(e,n){e("appSelectChartStyleIndex",(function(e){e.app.selectedChartStyleIndex=t})),u(n().app)}}function k(t,e){return function(n,r){n("appUpdateAppConfig",(function(n){n.app[t]=e})),u(r().app)}}function A(t,e,n){return function(r,o){r("updateCollapsibleIsOpen",(function(r){r.app.collapsibleIsOpen[`${t}:${e}`]=n})),x(o().app)}}var R={selectedClashAPIConfigIndex:0,clashAPIConfigs:[{baseURL:"http://127.0.0.1:7892",secret:""}],latencyTestUrl:"http://www.gstatic.com/generate_204",selectedChartStyleIndex:0,theme:"dark",collapsibleIsOpen:{},proxySortBy:"Natural",hideUnavailableProxies:!1,autoCloseOldConns:!1};function M(){var t=function(){try{var t=localStorage.getItem("yacd.haishan.me");if(!t)return;return JSON.parse(t)}catch(t){return}}();t=d(d({},R),t);var e=function(){var t=window.location.search,e={};if("string"!=typeof t||""===t)return e;for(var n=t.replace(/^\?/,"").split("&"),r=0;r0&&0===(b-=1)&&f.show(e),n.props.shouldFocusAfterRender&&(n.props.shouldReturnFocusAfterClose?(c.returnFocus(),c.teardownScopedFocus()):c.popWithoutFocus()),n.props.onAfterClose&&n.props.onAfterClose(),h.default.deregister(n)},n.open=function(){n.beforeOpen(),n.state.afterOpen&&n.state.beforeClose?(clearTimeout(n.closeTimer),n.setState({beforeClose:!1})):(n.props.shouldFocusAfterRender&&(c.setupScopedFocus(n.node),c.markForFocusLater()),n.setState({isOpen:!0},(function(){n.setState({afterOpen:!0}),n.props.isOpen&&n.props.onAfterOpen&&n.props.onAfterOpen({overlayEl:n.overlay,contentEl:n.content})})))},n.close=function(){n.props.closeTimeoutMS>0?n.closeWithTimeout():n.closeWithoutTimeout()},n.focusContent=function(){return n.content&&!n.contentHasFocus()&&n.content.focus()},n.closeWithTimeout=function(){var t=Date.now()+n.props.closeTimeoutMS;n.setState({beforeClose:!0,closesAt:t},(function(){n.closeTimer=setTimeout(n.closeWithoutTimeout,n.state.closesAt-Date.now())}))},n.closeWithoutTimeout=function(){n.setState({beforeClose:!1,isOpen:!1,afterOpen:!1,closesAt:null},n.afterClose)},n.handleKeyDown=function(t){9===t.keyCode&&(0,l.default)(n.content,t),n.props.shouldCloseOnEsc&&27===t.keyCode&&(t.stopPropagation(),n.requestClose(t))},n.handleOverlayOnClick=function(t){null===n.shouldClose&&(n.shouldClose=!0),n.shouldClose&&n.props.shouldCloseOnOverlayClick&&(n.ownerHandlesClose()?n.requestClose(t):n.focusContent()),n.shouldClose=null},n.handleContentOnMouseUp=function(){n.shouldClose=!1},n.handleOverlayOnMouseDown=function(t){n.props.shouldCloseOnOverlayClick||t.target!=n.overlay||t.preventDefault()},n.handleContentOnClick=function(){n.shouldClose=!1},n.handleContentOnMouseDown=function(){n.shouldClose=!1},n.requestClose=function(t){return n.ownerHandlesClose()&&n.props.onRequestClose(t)},n.ownerHandlesClose=function(){return n.props.onRequestClose},n.shouldBeClosed=function(){return!n.state.isOpen&&!n.state.beforeClose},n.contentHasFocus=function(){return document.activeElement===n.content||n.content.contains(document.activeElement)},n.buildClassName=function(t,e){var r="object"===(void 0===e?"undefined":o(e))?e:{base:y[t],afterOpen:y[t]+"--after-open",beforeClose:y[t]+"--before-close"},i=r.base;return n.state.afterOpen&&(i=i+" "+r.afterOpen),n.state.beforeClose&&(i=i+" "+r.beforeClose),"string"==typeof e&&e?i+" "+e:i},n.attributesFromObject=function(t,e){return Object.keys(e).reduce((function(n,r){return n[t+"-"+r]=e[r],n}),{})},n.state={afterOpen:!1,beforeClose:!1},n.shouldClose=null,n.moveFromContentToOverlay=null,n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),i(e,[{key:"componentDidMount",value:function(){this.props.isOpen&&this.open()}},{key:"componentDidUpdate",value:function(t,e){this.props.isOpen&&!t.isOpen?this.open():!this.props.isOpen&&t.isOpen&&this.close(),this.props.shouldFocusAfterRender&&this.state.isOpen&&!e.isOpen&&this.focusContent()}},{key:"componentWillUnmount",value:function(){this.state.isOpen&&this.afterClose(),clearTimeout(this.closeTimer)}},{key:"beforeOpen",value:function(){var t=this.props,e=t.appElement,n=t.ariaHideApp,r=t.htmlOpenClassName,o=t.bodyOpenClassName;o&&p.add(document.body,o),r&&p.add(document.getElementsByTagName("html")[0],r),n&&(b+=1,f.hide(e)),h.default.register(this)}},{key:"render",value:function(){var t=this.props,e=t.id,n=t.className,o=t.overlayClassName,i=t.defaultStyles,a=n?{}:i.content,u=o?{}:i.overlay;return this.shouldBeClosed()?null:s.default.createElement("div",{ref:this.setOverlayRef,className:this.buildClassName("overlay",o),style:r({},u,this.props.style.overlay),onClick:this.handleOverlayOnClick,onMouseDown:this.handleOverlayOnMouseDown},s.default.createElement("div",r({id:e,ref:this.setContentRef,style:r({},a,this.props.style.content),className:this.buildClassName("content",n),tabIndex:"-1",onKeyDown:this.handleKeyDown,onMouseDown:this.handleContentOnMouseDown,onMouseUp:this.handleContentOnMouseUp,onClick:this.handleContentOnClick,role:this.props.role,"aria-label":this.props.contentLabel},this.attributesFromObject("aria",this.props.aria||{}),this.attributesFromObject("data",this.props.data||{}),{"data-testid":this.props.testId}),this.props.children))}}]),e}(a.Component);g.defaultProps={style:{overlay:{},content:{}},defaultStyles:{}},g.propTypes={isOpen:u.default.bool.isRequired,defaultStyles:u.default.shape({content:u.default.object,overlay:u.default.object}),style:u.default.shape({content:u.default.object,overlay:u.default.object}),className:u.default.oneOfType([u.default.string,u.default.object]),overlayClassName:u.default.oneOfType([u.default.string,u.default.object]),bodyOpenClassName:u.default.string,htmlOpenClassName:u.default.string,ariaHideApp:u.default.bool,appElement:u.default.instanceOf(d.default),onAfterOpen:u.default.func,onAfterClose:u.default.func,onRequestClose:u.default.func,closeTimeoutMS:u.default.number,shouldFocusAfterRender:u.default.bool,shouldCloseOnOverlayClick:u.default.bool,shouldReturnFocusAfterClose:u.default.bool,role:u.default.string,contentLabel:u.default.string,aria:u.default.object,data:u.default.object,children:u.default.node,shouldCloseOnEsc:u.default.bool,overlayRef:u.default.func,contentRef:u.default.func,id:u.default.string,testId:u.default.string},e.default=g,t.exports=e.default},"Qv+K":function(t,e,n){"use strict";n.d(e,"a",(function(){return W})),n.d(e,"b",(function(){return st})),n.d(e,"c",(function(){return ct}));var r,o=n("q1tI");function i(){return(i=Object.assign||function(t){for(var e=1;e=0&&t!==1/0}function h(){return"undefined"==typeof document||[void 0,"visible","prerender"].includes(document.visibilityState)}function v(){return void 0===navigator.onLine||navigator.onLine}function m(t){var e,n,r,o;return y(t[0])?(e=t[0].queryKey,n=t[0].queryFn,r=t[0].config,o=t[1]):y(t[1])?(e=t[0],r=t[1],o=t[2]):(e=t[0],n=t[1],r=t[2],o=t[3]),r=r?i({queryKey:e},r):{queryKey:e},n&&(r=i({},r,{queryFn:n})),[e,r,o]}function y(t){if(!b(t))return!1;var e=t.constructor;if(void 0===e)return!0;var n=e.prototype;return!!b(n)&&!!n.hasOwnProperty("isPrototypeOf")}function b(t){return"[object Object]"===Object.prototype.toString.call(t)}function g(t){return{status:t,isLoading:t===r.Loading,isSuccess:t===r.Success,isError:t===r.Error,isIdle:t===r.Idle}}function w(t){var e;return function(n){e&&e(),e=n(t)}}var O={queries:{cacheTime:3e5,enabled:!0,notifyOnStatusChange:!0,queryKeySerializerFn:function(t){try{var e=Array.isArray(t)?t:[t],n=(r=e,JSON.stringify(r,p));return[n,e=JSON.parse(n)]}catch(t){throw new Error("A valid query key is required!")}var r},refetchOnMount:!0,refetchOnReconnect:!0,refetchOnWindowFocus:!0,retry:3,retryDelay:function(t){return Math.min(1e3*Math.pow(2,t),3e4)},staleTime:0,structuralSharing:!0}};function x(t,e,n,r){return i({},O.shared,O.queries,null==t?void 0:t.shared,null==t?void 0:t.queries,null==e?void 0:e.shared,null==e?void 0:e.queries,n,r)}function E(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}function S(){}var j=function(){function t(t){this.config=t,this.queryCache=t.queryCache,this.initialFetchedCount=0,this.clear=this.clear.bind(this),this.refetch=this.refetch.bind(this),this.fetchMore=this.fetchMore.bind(this),this.updateQuery()}var e=t.prototype;return e.subscribe=function(t){return this.started=!0,this.updateListener=t,this.currentQuery.subscribeObserver(this),this.config.enabled&&this.config.forceFetchOnMount?this.fetch():this.optionalFetch(),this.updateTimers(),this.unsubscribe.bind(this)},e.unsubscribe=function(){this.started=!1,this.updateListener=void 0,this.clearTimers(),this.currentQuery.unsubscribeObserver(this)},e.updateConfig=function(t){var e=this.config;this.config=t;var n=this.updateQuery();if(this.started){if(n)return this.optionalFetch(),void this.updateTimers();t.enabled&&!e.enabled&&this.optionalFetch(),t.enabled===e.enabled&&t.staleTime===e.staleTime||this.updateStaleTimeout(),t.enabled===e.enabled&&t.refetchInterval===e.refetchInterval||this.updateRefetchInterval()}},e.getCurrentQuery=function(){return this.currentQuery},e.getCurrentResult=function(){return this.currentResult},e.clear=function(){return this.currentQuery.clear()},e.refetch=function(t){try{return this.currentQuery.refetch(t,this.config)}catch(t){return Promise.reject(t)}},e.fetchMore=function(t,e){try{return this.currentQuery.fetchMore(t,e,this.config)}catch(t){return Promise.reject(t)}},e.fetch=function(){var t=this;return E(function(t,e){try{var n=t()}catch(t){return e(t)}return n&&n.then?n.then(void 0,e):n}((function(){return E(t.currentQuery.fetch(void 0,t.config))}),S))},e.optionalFetch=function(){!this.config.enabled||this.config.suspense&&this.currentResult.isFetched||!this.currentResult.isStale||!this.config.refetchOnMount&&1!==this.currentQuery.observers.length||this.fetch()},e.notify=function(){var t;null==(t=this.updateListener)||t.call(this,this.currentResult)},e.updateStaleTimeout=function(){var t=this;if(!u&&(this.clearStaleTimeout(),!this.currentResult.isStale&&d(this.config.staleTime))){var e=Date.now()-this.currentResult.updatedAt,n=this.config.staleTime-e+1,r=Math.max(n,0);this.staleTimeoutId=setTimeout((function(){t.currentResult.isStale||(t.currentResult=i({},t.currentResult,{isStale:!0}),t.notify())}),r)}},e.updateRefetchInterval=function(){var t=this;u||(this.clearRefetchInterval(),this.config.enabled&&d(this.config.refetchInterval)&&(this.refetchIntervalId=setInterval((function(){(t.config.refetchIntervalInBackground||h())&&t.fetch()}),this.config.refetchInterval)))},e.updateTimers=function(){this.updateStaleTimeout(),this.updateRefetchInterval()},e.clearTimers=function(){this.clearStaleTimeout(),this.clearRefetchInterval()},e.clearStaleTimeout=function(){this.staleTimeoutId&&(clearInterval(this.staleTimeoutId),this.staleTimeoutId=void 0)},e.clearRefetchInterval=function(){this.refetchIntervalId&&(clearInterval(this.refetchIntervalId),this.refetchIntervalId=void 0)},e.updateResult=function(){var t,e=this.currentQuery,n=this.currentResult,r=this.previousQueryResult,o=this.config,a=e.state,s=a.data,u=a.status,c=a.updatedAt,l=!1;o.keepPreviousData&&(a.isIdle||a.isLoading)&&(null==r?void 0:r.isSuccess)&&(s=r.data,c=r.updatedAt,u=r.status,l=!0),t=n||a.isFetched?e.isStaleByTime(o.staleTime):"function"==typeof o.initialStale?o.initialStale():"boolean"==typeof o.initialStale?o.initialStale:void 0===a.data,this.currentResult=i({},g(u),{canFetchMore:a.canFetchMore,clear:this.clear,data:s,error:a.error,failureCount:a.failureCount,fetchMore:this.fetchMore,isFetched:a.isFetched,isFetchedAfterMount:a.fetchedCount>this.initialFetchedCount,isFetching:a.isFetching,isFetchingMore:a.isFetchingMore,isPreviousData:l,isStale:t,refetch:this.refetch,updatedAt:c})},e.updateQuery=function(){var t=this.currentQuery,e=this.config.keepPreviousData&&t?i({},this.config,{initialData:void 0}):this.config,n=this.queryCache.buildQuery(e.queryKey,e);return n!==t&&(this.previousQueryResult=this.currentResult,this.currentQuery=n,this.initialFetchedCount=n.state.fetchedCount,this.updateResult(),this.started&&(null==t||t.unsubscribeObserver(this),this.currentQuery.subscribeObserver(this)),!0)},e.onQueryUpdate=function(t){var e=t.type,n=this.currentResult;this.updateResult();var r=this.currentResult,o=this.config;2===e?(null==o.onSuccess||o.onSuccess(r.data),null==o.onSettled||o.onSettled(r.data,null),this.updateTimers()):3===e&&(null==o.onError||o.onError(r.error),null==o.onSettled||o.onSettled(void 0,r.error),this.updateTimers()),(r.data!==n.data||r.error!==n.error||o.notifyOnStatusChange)&&this.notify()},t}();function C(t,e,n){return n?e?e(t):t:(t&&t.then||(t=Promise.resolve(t)),e?t.then(e):t)}var P=0,T=1,k=2,A=3;function R(t,e){try{var n=t()}catch(t){return e(t)}return n&&n.then?n.then(void 0,e):n}function M(t,e){var n=t();return n&&n.then?n.then(e):e(n)}function L(t){return function(){for(var e=[],n=0;n0||!d(this.cacheTime)||(this.gcTimeout=setTimeout((function(){t.clear()}),this.cacheTime)))},e.cancel=function(){var t;null==(t=this.cancelFetch)||t.call(this)},e.continue=function(){var t;null==(t=this.continueFetch)||t.call(this)},e.clearTimersObservers=function(){this.observers.forEach((function(t){t.clearTimers()}))},e.clearGcTimeout=function(){this.gcTimeout&&(clearTimeout(this.gcTimeout),this.gcTimeout=void 0)},e.setData=function(t,e){var n,r,o=this.state.data,i=f(t,o);this.config.structuralSharing&&(i=function t(e,n){if(e===n)return e;var r=Array.isArray(e)&&Array.isArray(n);if(r||y(e)&&y(n)){for(var o=r?e.length:Object.keys(e).length,i=r?n:Object.keys(n),a=i.length,s=r?[]:{},u=0,c=0;c-1&&(c+=o?-1:1);if(void 0===(r=n[c]))return e.preventDefault(),void(r=o?s:a).focus();e.preventDefault(),r.focus()};var r,o=n("ZDLa"),i=(r=o)&&r.__esModule?r:{default:r};t.exports=e.default},SzcZ:function(t,e,n){t.exports={root:"_2uN43zExEi",floatAbove:"_2gQ0j5OHC8"}},Szw6:function(t,e,n){"use strict";n.d(e,"d",(function(){return d})),n.d(e,"a",(function(){return v})),n.d(e,"c",(function(){return y})),n.d(e,"b",(function(){return g}));n("pNMO"),n("TeQF"),n("QWBl"),n("yXV3"),n("pDQq"),n("27RR"),n("07d7"),n("5s+n"),n("FZtP");var r=n("o0o1"),o=n.n(r),i=n("rePB"),a=(n("ls82"),n("HaE+")),s=n("YrXW");function u(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function c(t){for(var e=1;e-1?n:void 0}),[e]),l=Object(i.useMemo)((function(){return{width:c(s)+"%",left:s*c(0)+"%"}}),[s,c]);return a.a.createElement("div",{className:u.a.ToggleSwitch},a.a.createElement("div",{className:u.a.slider,style:l}),e.map((function(t,e){var i=`${r}-${t.label}`,s=0===e?"":"border-left";return a.a.createElement("label",{htmlFor:i,key:i,className:s,style:{width:c(e)+"%"}},a.a.createElement("input",{id:i,name:r,type:"radio",value:t.value,checked:n===t.value,onChange:o}),a.a.createElement("div",null,t.label))})))}c.propTypes={options:o.a.array,value:o.a.string,name:o.a.string,onChange:o.a.func},e.a=a.a.memo(c)},V4mC:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n("q1tI"),o=n("QCnb"),i=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function a(t,e){var n=i.current;if(null===n)throw Error("react-cache: read and preload may only be called from within a component's render. They are not supported in event handlers or lifecycle methods.");return n.readContext(t,e)}function s(t){return t}var u=function(t){function e(){!1===s&&a>r&&(s=!0,o.unstable_scheduleCallback(n))}function n(){s=!1;var t=r;if(null!==i)for(var e=i.previous;a>t&&null!==e;){var n=e.onDelete,o=e.previous;e.onDelete=null,e.previous=e.next=null,e===i?i=e=null:(i.previous=o,o.next=i,e=o),--a,n()}}var r=500,i=null,a=0,s=!1;return{add:function(t,e){return t={value:t,onDelete:e,next:null,previous:null},null===i?t.previous=t.next=t:((e=i.previous).next=t,t.previous=e,i.previous=t,t.next=i),i=t,a+=1,t},update:function(t,e){t.value=e},access:function(t){var n=t.next;if(null!==n){var r=i;if(i!==t){var o=t.previous;o.next=n,n.previous=o,(n=r.previous).next=t,t.previous=n,r.previous=t,t.next=r,i=t}}return e(),t.value},setLimit:function(t){r=t,e()}}}(),c=new Map,l=r.createContext(null);function f(t,e,n,r){var o=c.get(t);void 0===o&&(o=new Map,c.set(t,o));var i=o.get(r);if(void 0===i){(e=e(n)).then((function(t){if(0===a.status){var e=a;e.status=1,e.value=t}}),(function(t){if(0===a.status){var e=a;e.status=2,e.value=t}}));var a={status:0,value:e};return t=u.add(a,p.bind(null,t,r)),o.set(r,t),a}return u.access(i)}function p(t,e){var n=c.get(t);void 0!==n&&(n.delete(e),0===n.size&&c.delete(t))}e.unstable_createResource=function(t,e){var n=void 0!==e?e:s,r={read:function(e){a(l);var o=n(e);switch((e=f(r,t,e,o)).status){case 0:throw e.value;case 1:return e.value;case 2:throw e.value}},preload:function(e){a(l);var o=n(e);f(r,t,e,o)}};return r},e.unstable_setGlobalCacheLimit=function(t){u.setLimit(t)}},VCL8:function(t,e,n){"use strict";function r(){var t=this.constructor.getDerivedStateFromProps(this.props,this.state);null!=t&&this.setState(t)}function o(t){this.setState(function(e){var n=this.constructor.getDerivedStateFromProps(t,e);return null!=n?n:null}.bind(this))}function i(t,e){try{var n=this.props,r=this.state;this.props=t,this.state=e,this.__reactInternalSnapshotFlag=!0,this.__reactInternalSnapshot=this.getSnapshotBeforeUpdate(n,r)}finally{this.props=n,this.state=r}}function a(t){var e=t.prototype;if(!e||!e.isReactComponent)throw new Error("Can only polyfill class components");if("function"!=typeof t.getDerivedStateFromProps&&"function"!=typeof e.getSnapshotBeforeUpdate)return t;var n=null,a=null,s=null;if("function"==typeof e.componentWillMount?n="componentWillMount":"function"==typeof e.UNSAFE_componentWillMount&&(n="UNSAFE_componentWillMount"),"function"==typeof e.componentWillReceiveProps?a="componentWillReceiveProps":"function"==typeof e.UNSAFE_componentWillReceiveProps&&(a="UNSAFE_componentWillReceiveProps"),"function"==typeof e.componentWillUpdate?s="componentWillUpdate":"function"==typeof e.UNSAFE_componentWillUpdate&&(s="UNSAFE_componentWillUpdate"),null!==n||null!==a||null!==s){var u=t.displayName||t.name,c="function"==typeof t.getDerivedStateFromProps?"getDerivedStateFromProps()":"getSnapshotBeforeUpdate()";throw Error("Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n"+u+" uses "+c+" but also contains the following legacy lifecycles:"+(null!==n?"\n "+n:"")+(null!==a?"\n "+a:"")+(null!==s?"\n "+s:"")+"\n\nThe above lifecycles should be removed. Learn more about this warning here:\nhttps://fb.me/react-async-component-lifecycle-hooks")}if("function"==typeof t.getDerivedStateFromProps&&(e.componentWillMount=r,e.componentWillReceiveProps=o),"function"==typeof e.getSnapshotBeforeUpdate){if("function"!=typeof e.componentDidUpdate)throw new Error("Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype");e.componentWillUpdate=i;var l=e.componentDidUpdate;e.componentDidUpdate=function(t,e,n){var r=this.__reactInternalSnapshotFlag?this.__reactInternalSnapshot:n;l.call(this,t,e,r)}}return t}n.r(e),n.d(e,"polyfill",(function(){return a})),r.__suppressDeprecationWarning=!0,o.__suppressDeprecationWarning=!0,i.__suppressDeprecationWarning=!0},VKEO:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.handleBlur=c,e.handleFocus=l,e.markForFocusLater=function(){a.push(document.activeElement)},e.returnFocus=function(){var t=null;try{return void(0!==a.length&&(t=a.pop()).focus())}catch(e){console.warn(["You tried to return focus to",t,"but it is not in the DOM anymore"].join(" "))}},e.popWithoutFocus=function(){a.length>0&&a.pop()},e.setupScopedFocus=function(t){s=t,window.addEventListener?(window.addEventListener("blur",c,!1),document.addEventListener("focus",l,!0)):(window.attachEvent("onBlur",c),document.attachEvent("onFocus",l))},e.teardownScopedFocus=function(){s=null,window.addEventListener?(window.removeEventListener("blur",c),document.removeEventListener("focus",l)):(window.detachEvent("onBlur",c),document.detachEvent("onFocus",l))};var r,o=n("ZDLa"),i=(r=o)&&r.__esModule?r:{default:r};var a=[],s=null,u=!1;function c(){u=!0}function l(){if(u){if(u=!1,!s)return;setTimeout((function(){s.contains(document.activeElement)||((0,i.default)(s)[0]||s).focus()}),0)}}},VVUS:function(t,e,n){"use strict";var r=n("iuhU"),o=n("17x9"),i=n.n(o),a=n("q1tI"),s=n.n(a),u=n("uG2Q"),c=n.n(u);function l(t){var e=t.width,n=void 0===e?320:e,o=t.height,i=void 0===o?320:o,a=t.animate,u=void 0!==a&&a,l=t.c0,f=void 0===l?"currentColor":l,p=t.c1,d=void 0===p?"#eee":p,h=Object(r.a)({[c.a.path]:u});return s.a.createElement("svg",{width:n,height:i,viewBox:"0 0 320 320",xmlns:"http://www.w3.org/2000/svg"},s.a.createElement("g",{fill:"none",fillRule:"evenodd"},s.a.createElement("path",{d:"M71.689 53.055c9.23-1.487 25.684 27.263 41.411 56.663 18.572-8.017 71.708-7.717 93.775 0 4.714-15.612 31.96-57.405 41.626-56.663 3.992.088 13.07 31.705 23.309 94.96 2.743 16.949 7.537 47.492 14.38 91.63-42.339 17.834-84.37 26.751-126.095 26.751-41.724 0-83.756-8.917-126.095-26.751C52.973 116.244 65.536 54.047 71.689 53.055z",stroke:d,strokeWidth:"4",strokeLinecap:"round",fill:f,className:h}),s.a.createElement("circle",{fill:d,cx:"216.5",cy:"181.5",r:"14.5"}),s.a.createElement("circle",{fill:d,cx:"104.5",cy:"181.5",r:"14.5"}),s.a.createElement("g",{stroke:d,strokeLinecap:"round",strokeWidth:"4"},s.a.createElement("path",{d:"M175.568 218.694c-2.494 1.582-5.534 2.207-8.563 1.508-3.029-.7-5.487-2.594-7.035-5.11M143.981 218.694c2.494 1.582 5.534 2.207 8.563 1.508 3.03-.7 5.488-2.594 7.036-5.11"}))))}l.propTypes={width:i.a.number,height:i.a.number},e.a=l},WbBG:function(t,e,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},WfPo:function(t,e,n){"use strict";n.d(e,"c",(function(){return bt})),n.d(e,"b",(function(){return gt})),n.d(e,"a",(function(){return wt}));n("pNMO"),n("TeQF"),n("QWBl"),n("27RR"),n("FZtP");var r=n("rePB"),o=n("ODXe");function i(t){for(var e=arguments.length,n=Array(e>1?e-1:0),r=1;r3?e.i-4:e.i:Array.isArray(t)?1:h(t)?2:v(t)?3:0}function l(t,e){return 2===c(t)?t.has(e):Object.prototype.hasOwnProperty.call(t,e)}function f(t,e){return 2===c(t)?t.get(e):t[e]}function p(t,e,n){var r=c(t);2===r?t.set(e,n):3===r?(t.delete(e),t.add(n)):t[e]=n}function d(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}function h(t){return q&&t instanceof Map}function v(t){return W&&t instanceof Set}function m(t){return t.o||t.t}function y(t){if(Array.isArray(t))return Array.prototype.slice.call(t);var e=Y(t);delete e[G];for(var n=X(e),r=0;r1&&(t.set=t.add=t.clear=t.delete=g),Object.freeze(t),e&&u(t,(function(t,e){return b(e,!0)}),!0))}function g(){i(2)}function w(t){return null==t||"object"!=typeof t||Object.isFrozen(t)}function O(t){var e=$[t];return e||i(19,t),e}function x(){return I}function E(t,e){e&&(O("Patches"),t.u=[],t.s=[],t.v=e)}function S(t){j(t),t.p.forEach(P),t.p=null}function j(t){t===I&&(I=t.l)}function C(t){return I={p:[],l:I,h:t,m:!0,_:0}}function P(t){var e=t[G];0===e.i||1===e.i?e.j():e.g=!0}function T(t,e){e._=e.p.length;var n=e.p[0],r=void 0!==t&&t!==n;return e.h.O||O("ES5").S(e,t,r),r?(n[G].P&&(S(e),i(4)),s(t)&&(t=k(e,t),e.l||R(e,t)),e.u&&O("Patches").M(n[G],t,e.u,e.s)):t=k(e,n,[]),S(e),e.u&&e.v(e.u,e.s),t!==H?t:void 0}function k(t,e,n){if(w(e))return e;var r=e[G];if(!r)return u(e,(function(o,i){return A(t,r,e,o,i,n)}),!0),e;if(r.A!==t)return e;if(!r.P)return R(t,r.t,!0),r.t;if(!r.I){r.I=!0,r.A._--;var o=4===r.i||5===r.i?r.o=y(r.k):r.o;u(3===r.i?new Set(o):o,(function(e,i){return A(t,r,o,e,i,n)})),R(t,o,!1),n&&t.u&&O("Patches").R(r,n,t.u,t.s)}return r.o}function A(t,e,n,r,o,i){if(a(o)){var u=k(t,o,i&&e&&3!==e.i&&!l(e.D,r)?i.concat(r):void 0);if(p(n,r,u),!a(u))return;t.m=!1}if(s(o)&&!w(o)){if(!t.h.N&&t._<1)return;k(t,o),e&&e.A.l||R(t,o)}}function R(t,e,n){void 0===n&&(n=!1),t.h.N&&t.m&&b(e,n)}function M(t,e){var n=t[G];return(n?m(n):t)[e]}function L(t,e){if(e in t)for(var n=Object.getPrototypeOf(t);n;){var r=Object.getOwnPropertyDescriptor(n,e);if(r)return r;n=Object.getPrototypeOf(n)}}function D(t){t.P||(t.P=!0,t.l&&D(t.l))}function _(t){t.o||(t.o=y(t.t))}function N(t,e,n){var r=h(e)?O("MapSet").T(e,n):v(e)?O("MapSet").F(e,n):t.O?function(t,e){var n=Array.isArray(t),r={i:n?1:0,A:e?e.A:x(),P:!1,I:!1,D:{},l:e,t:t,k:null,o:null,j:null,C:!1},o=r,i=K;n&&(o=[r],i=Z);var a=Proxy.revocable(o,i),s=a.revoke,u=a.proxy;return r.k=u,r.j=s,u}(e,n):O("ES5").J(e,n);return(n?n.A:x()).p.push(r),r}function F(t){return a(t)||i(22,t),function t(e){if(!s(e))return e;var n,r=e[G],o=c(e);if(r){if(!r.P&&(r.i<4||!O("ES5").K(r)))return r.t;r.I=!0,n=V(e,o),r.I=!1}else n=V(e,o);return u(n,(function(e,o){r&&f(r.t,e)===o||p(n,e,t(o))})),3===o?new Set(n):n}(t)}function V(t,e){switch(e){case 2:return new Map(t);case 3:return Array.from(t)}return y(t)}var B,I,U="undefined"!=typeof Symbol&&"symbol"==typeof Symbol("x"),q="undefined"!=typeof Map,W="undefined"!=typeof Set,z="undefined"!=typeof Proxy&&void 0!==Proxy.revocable&&"undefined"!=typeof Reflect,H=U?Symbol.for("immer-nothing"):((B={})["immer-nothing"]=!0,B),Q=U?Symbol.for("immer-draftable"):"__$immer_draftable",G=U?Symbol.for("immer-state"):"__$immer_state",X=("undefined"!=typeof Symbol&&Symbol.iterator,"undefined"!=typeof Reflect&&Reflect.ownKeys?Reflect.ownKeys:void 0!==Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:Object.getOwnPropertyNames),Y=Object.getOwnPropertyDescriptors||function(t){var e={};return X(t).forEach((function(n){e[n]=Object.getOwnPropertyDescriptor(t,n)})),e},$={},K={get:function(t,e){if(e===G)return t;var n=m(t);if(!l(n,e))return function(t,e,n){var r,o=L(e,n);return o?"value"in o?o.value:null===(r=o.get)||void 0===r?void 0:r.call(t.k):void 0}(t,n,e);var r=n[e];return t.I||!s(r)?r:r===M(t.t,e)?(_(t),t.o[e]=N(t.A.h,r,t)):r},has:function(t,e){return e in m(t)},ownKeys:function(t){return Reflect.ownKeys(m(t))},set:function(t,e,n){var r=L(m(t),e);if(null==r?void 0:r.set)return r.set.call(t.k,n),!0;if(t.D[e]=!0,!t.P){if(d(n,M(m(t),e))&&(void 0!==n||l(t.t,e)))return!0;_(t),D(t)}return t.o[e]=n,!0},deleteProperty:function(t,e){return void 0!==M(t.t,e)||e in t.t?(t.D[e]=!1,_(t),D(t)):delete t.D[e],t.o&&delete t.o[e],!0},getOwnPropertyDescriptor:function(t,e){var n=m(t),r=Reflect.getOwnPropertyDescriptor(n,e);return r?{writable:!0,configurable:1!==t.i||"length"!==e,enumerable:r.enumerable,value:n[e]}:r},defineProperty:function(){i(11)},getPrototypeOf:function(t){return Object.getPrototypeOf(t.t)},setPrototypeOf:function(){i(12)}},Z={};u(K,(function(t,e){Z[t]=function(){return arguments[0]=arguments[0][0],e.apply(this,arguments)}})),Z.deleteProperty=function(t,e){return K.deleteProperty.call(this,t[0],e)},Z.set=function(t,e,n){return K.set.call(this,t[0],e,n,t[0])};var J=new(function(){function t(t){this.O=z,this.N=!1,"boolean"==typeof(null==t?void 0:t.useProxies)&&this.setUseProxies(t.useProxies),"boolean"==typeof(null==t?void 0:t.autoFreeze)&&this.setAutoFreeze(t.autoFreeze),this.produce=this.produce.bind(this),this.produceWithPatches=this.produceWithPatches.bind(this)}var e=t.prototype;return e.produce=function(t,e,n){if("function"==typeof t&&"function"!=typeof e){var r=e;e=t;var o=this;return function(t){var n=this;void 0===t&&(t=r);for(var i=arguments.length,a=Array(i>1?i-1:0),s=1;s1?n-1:0),i=1;i=0;n--){var r=e[n];if(0===r.path.length&&"replace"===r.op){t=r.value;break}}var o=O("Patches").$;return a(t)?o(t,e):this.produce(t,(function(t){return o(t,e.slice(n+1))}))},t}()),tt=J.produce,et=(J.produceWithPatches.bind(J),J.setAutoFreeze.bind(J)),nt=(J.setUseProxies.bind(J),J.applyPatches.bind(J),J.createDraft.bind(J),J.finishDraft.bind(J),tt),rt=n("q1tI"),ot=n.n(rt);function it(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function at(t){for(var e=1;e0?(document.body.firstChild!==a&&document.body.insertBefore(a,document.body.firstChild),document.body.lastChild!==s&&document.body.appendChild(s)):(a.parentElement&&a.parentElement.removeChild(a),s.parentElement&&s.parentElement.removeChild(s))}))},XN28:function(t,e,n){t.exports={root:"_24ddJm1Q5s",h1:"B4QNkMu-0t"}},YKzy:function(t,e,n){t.exports={ToggleSwitch:"_2IgDTE__bQ",slider:"_2IfOm9qQ_4"}},Ye7m:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.assertNodeList=u,e.setElement=function(t){var e=t;if("string"==typeof e&&a.canUseDOM){var n=document.querySelectorAll(e);u(n,e),e="length"in n?n[0]:n}return s=e||s},e.validateElement=c,e.hide=function(t){c(t)&&(t||s).setAttribute("aria-hidden","true")},e.show=function(t){c(t)&&(t||s).removeAttribute("aria-hidden")},e.documentNotReadyOrSSRTesting=function(){s=null},e.resetForTesting=function(){s=null};var r,o=n("2W6z"),i=(r=o)&&r.__esModule?r:{default:r},a=n("2zs7");var s=null;function u(t,e){if(!t||!t.length)throw new Error("react-modal: No elements were found for selector "+e+".")}function c(t){return!(!t&&!s)||((0,i.default)(!1,["react-modal: App element is not defined.","Please use `Modal.setAppElement(el)` or set `appElement={el}`.","This is needed so screen readers don't see main content","when modal is opened. It is not recommended, but you can opt-out","by setting `ariaHideApp={false}`."].join(" ")),!1)}},YrXW:function(t,e,n){"use strict";n.d(e,"b",(function(){return u})),n.d(e,"a",(function(){return c}));n("pNMO"),n("TeQF"),n("QWBl"),n("4mDm"),n("27RR"),n("07d7"),n("FZtP"),n("3bBZ"),n("Kz25");var r=n("rePB"),o=n("72A5");function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}var a={"Content-Type":"application/json"};function s(t){var e=t.secret,n=function(t){for(var e=1;e=0)&&i(t,!n)}t.exports=e.default},ZMKu:function(t,e,n){"use strict";n.d(e,"a",(function(){return ci}));var r={};n.r(r),n.d(r,"angle",(function(){return Qt})),n.d(r,"animate",(function(){return qt})),n.d(r,"anticipate",(function(){return Mt})),n.d(r,"applyOffset",(function(){return Gt})),n.d(r,"attract",(function(){return $t})),n.d(r,"attractExpo",(function(){return Kt})),n.d(r,"backIn",(function(){return kt})),n.d(r,"backInOut",(function(){return Rt})),n.d(r,"backOut",(function(){return At})),n.d(r,"bounceIn",(function(){return Dt})),n.d(r,"bounceInOut",(function(){return _t})),n.d(r,"bounceOut",(function(){return Lt})),n.d(r,"circIn",(function(){return Ct})),n.d(r,"circInOut",(function(){return Tt})),n.d(r,"circOut",(function(){return Pt})),n.d(r,"clamp",(function(){return dt})),n.d(r,"createAnticipate",(function(){return Ot})),n.d(r,"createAttractor",(function(){return Yt})),n.d(r,"createBackIn",(function(){return wt})),n.d(r,"createExpoIn",(function(){return gt})),n.d(r,"cubicBezier",(function(){return ve})),n.d(r,"decay",(function(){return Vt})),n.d(r,"degreesToRadians",(function(){return Zt})),n.d(r,"distance",(function(){return ne})),n.d(r,"easeIn",(function(){return Et})),n.d(r,"easeInOut",(function(){return jt})),n.d(r,"easeOut",(function(){return St})),n.d(r,"inertia",(function(){return zt})),n.d(r,"interpolate",(function(){return mt})),n.d(r,"isPoint",(function(){return Jt})),n.d(r,"isPoint3D",(function(){return te})),n.d(r,"keyframes",(function(){return Ft})),n.d(r,"linear",(function(){return xt})),n.d(r,"mirrorEasing",(function(){return bt})),n.d(r,"mix",(function(){return Z})),n.d(r,"mixColor",(function(){return rt})),n.d(r,"mixComplex",(function(){return pt})),n.d(r,"pipe",(function(){return st})),n.d(r,"pointFromVector",(function(){return re})),n.d(r,"progress",(function(){return K})),n.d(r,"radiansToDegrees",(function(){return Ht})),n.d(r,"reverseEasing",(function(){return yt})),n.d(r,"smooth",(function(){return ae})),n.d(r,"smoothFrame",(function(){return ie})),n.d(r,"snap",(function(){return se})),n.d(r,"spring",(function(){return Y})),n.d(r,"steps",(function(){return me})),n.d(r,"toDecimal",(function(){return oe})),n.d(r,"velocityPerFrame",(function(){return ue})),n.d(r,"velocityPerSecond",(function(){return Wt})),n.d(r,"wrap",(function(){return ce}));var o=n("mrSG");var i=0,a="undefined"!=typeof window&&void 0!==window.requestAnimationFrame?function(t){return window.requestAnimationFrame(t)}:function(t){var e=Date.now(),n=Math.max(0,16.7-(e-i));i=e+n,setTimeout((function(){return t(i)}),n)},s=1/60*1e3,u=!0,c=!1,l=!1,f={delta:0,timestamp:0},p=["read","update","preRender","render","postRender"],d=function(t){return c=t},h=p.reduce((function(t,e){var n,r,o,i,a,s,u,c,l;return t[e]=(n=d,r=[],o=[],i=0,a=!1,s=0,u=new WeakSet,c=new WeakSet,l={cancel:function(t){var e=o.indexOf(t);u.add(t),-1!==e&&o.splice(e,1)},process:function(t){var e,f;if(a=!0,r=(e=[o,r])[0],(o=e[1]).length=0,i=r.length)for(s=0;s4?(e=t.substr(1,2),n=t.substr(3,2),r=t.substr(5,2)):(e=t.substr(1,1),n=t.substr(2,1),r=t.substr(3,1),e+=e,n+=n,r+=r),{red:parseInt(e,16),green:parseInt(n,16),blue:parseInt(r,16),alpha:1}}}),Q={test:function(t){return"string"==typeof t&&C.test(t)||V(t)||B(t)},parse:function(t){return W.test(t)?W.parse(t):z.test(t)?z.parse(t):H.test(t)?H.parse(t):t},transform:function(t){return V(t)?W.transform(t):B(t)?z.transform(t):t}},G=function(t){return"number"==typeof t?0:t},X={test:function(t){if("string"!=typeof t||!isNaN(t))return!1;var e=0,n=t.match(S),r=t.match(j);return n&&(e+=n.length),r&&(e+=r.length),e>0},parse:function(t){var e=t,n=[],r=e.match(j);r&&(e=e.replace(j,"${c}"),n.push.apply(n,r.map(Q.parse)));var o=e.match(S);return o&&n.push.apply(n,o.map(P.parse)),n},createTransformer:function(t){var e=t,n=0,r=t.match(j),o=r?r.length:0;if(r)for(var i=0;it[u-1]&&(t=[].concat(t),e=[].concat(e),t.reverse(),e.reverse());var c=vt(e,a,s),l=2===u?function(t,e){var n=t[0],r=t[1],o=e[0];return function(t){return o(K(n,r,t))}}(t,c):function(t,e){var n=t.length,r=n-1;return function(o){var i=0,a=!1;if(o<=t[0]?a=!0:o>=t[r]&&(i=r-1,a=!0),!a){for(var s=1;so||s===r);s++);i=s-1}var u=K(t[i],t[i+1],o);return e[i](u)}}(t,c);return i?function(e){return l(dt(t[0],t[u-1],e))}:l}var yt=function(t){return function(e){return 1-t(1-e)}},bt=function(t){return function(e){return e<=.5?t(2*e)/2:(2-t(2*(1-e)))/2}},gt=function(t){return function(e){return Math.pow(e,t)}},wt=function(t){return function(e){return e*e*((t+1)*e-t)}},Ot=function(t){var e=wt(t);return function(t){return(t*=2)<1?.5*e(t):.5*(2-Math.pow(2,-10*(t-1)))}},xt=function(t){return t},Et=gt(2),St=yt(Et),jt=bt(Et),Ct=function(t){return 1-Math.sin(Math.acos(t))},Pt=yt(Ct),Tt=bt(Pt),kt=wt(1.525),At=yt(kt),Rt=bt(kt),Mt=Ot(1.525),Lt=function(t){if(1===t||0===t)return t;var e=t*t;return t<.36363636363636365?7.5625*e:t<.7272727272727273?9.075*e-9.9*t+3.4:t<.9?12.066481994459833*e-19.63545706371191*t+8.898060941828255:10.8*t*t-20.52*t+10.72},Dt=yt(Lt),_t=function(t){return t<.5?.5*(1-Lt(1-2*t)):.5*Lt(2*t-1)+.5};function Nt(t,e){return t.map((function(){return e||jt})).splice(0,t.length-1)}function Ft(t){var e=t.from,n=void 0===e?0:e,r=t.to,o=void 0===r?1:r,i=t.ease,a=t.offset,s=t.duration,u=void 0===s?300:s,c={done:!1,value:n},l=Array.isArray(o)?o:[n,o],f=function(t,e){return t.map((function(t){return t*e}))}(null!=a?a:function(t){var e=t.length;return t.map((function(t,n){return 0!==n?n/(e-1):0}))}(l),u);function p(){return mt(f,l,{ease:Array.isArray(i)?i:Nt(l,i)})}var d=p();return{next:function(t){return c.value=d(t),c.done=t>=u,c},flipTarget:function(){l.reverse(),d=p()}}}function Vt(t){var e=t.velocity,n=void 0===e?0:e,r=t.from,o=void 0===r?0:r,i=t.power,a=void 0===i?.8:i,s=t.timeConstant,u=void 0===s?350:s,c=t.restDelta,l=void 0===c?.5:c,f=t.modifyTarget,p={done:!1,value:o},d=a*n,h=o+d,v=void 0===f?h:f(h);return v!==h&&(d=v-o),{next:function(t){var e=-d*Math.exp(-t/u);return p.done=!(e>l||e<-l),p.value=p.done?v:v+e,p},flipTarget:function(){}}}var Bt={keyframes:Ft,spring:Y,decay:Vt};function It(t,e,n){return void 0===n&&(n=0),t-e-n}var Ut=function(t){var e=function(e){var n=e.delta;return t(n)};return{start:function(){return O.update(e,!0,!0)},stop:function(){return m.update(e)}}};function qt(t){var e,n,r,i,a,s=t.from,u=t.autoplay,c=void 0===u||u,l=t.driver,f=void 0===l?Ut:l,p=t.elapsed,d=void 0===p?0:p,h=t.repeat,v=void 0===h?0:h,m=t.repeatType,y=void 0===m?"loop":m,b=t.repeatDelay,g=void 0===b?0:b,w=t.onPlay,O=t.onStop,x=t.onComplete,E=t.onRepeat,S=t.onUpdate,j=Object(o.d)(t,["from","autoplay","driver","elapsed","repeat","repeatType","repeatDelay","onPlay","onStop","onComplete","onRepeat","onUpdate"]),C=j.to,P=0,T=j.duration,k=!1,A=!0,R=function(t){if(Array.isArray(t.to))return Ft;if(Bt[t.type])return Bt[t.type];var e=new Set(Object.keys(t));return e.has("ease")||e.has("duration")?Ft:e.has("stiffness")||e.has("mass")||e.has("damping")||e.has("restSpeed")||e.has("restDelta")?Y:Ft}(j);(null===(n=(e=R).needsInterpolation)||void 0===n?void 0:n.call(e,s,C))&&(a=mt([0,100],[s,C],{clamp:!1}),s=0,C=100);var M=R(Object(o.a)(Object(o.a)({},j),{from:s,to:C}));function L(){P++,"reverse"===y?d=function(t,e,n,r){return void 0===n&&(n=0),void 0===r&&(r=!0),r?It(e+-t,e,n):e-(t-e)+n}(d,T,g,A=P%2==0):(d=It(d,T,g),"mirror"===y&&M.flipTarget()),k=!1,E&&E()}function D(t){if(A||(t=-t),d+=t,!k){var e=M.next(Math.max(0,d));i=e.value,a&&(i=a(i)),k=A?e.done:d<=0}null==S||S(i),k&&(0===P&&(null!=T||(T=d)),P=e+n:t<=-n}(d,T,g,A)&&L():(r.stop(),x&&x()))}return c&&(null==w||w(),(r=f(D)).start()),{stop:function(){null==O||O(),r.stop()}}}function Wt(t,e){return e?t*(1e3/e):0}function zt(t){var e,n=t.from,r=void 0===n?0:n,i=t.velocity,a=void 0===i?0:i,s=t.min,u=t.max,c=t.power,l=void 0===c?.8:c,f=t.timeConstant,p=void 0===f?750:f,d=t.bounceStiffness,h=void 0===d?500:d,v=t.bounceDamping,m=void 0===v?10:v,y=t.restDelta,b=void 0===y?1:y,g=t.modifyTarget,O=t.driver,x=t.onUpdate,E=t.onComplete;function S(t){return void 0!==s&&tu}function j(t){return void 0===s?u:void 0===u||Math.abs(s-t)R||-1===M&&to)return t[e-1];if(e===n-1)return i;o=a}}};function ue(t,e){return t/(1e3/e)}var ce=function(t,e,n){var r=e-t;return((n-t)%r+r)%r+t},le=function(t,e){return 1-3*e+3*t},fe=function(t,e){return 3*e-6*t},pe=function(t){return 3*t},de=function(t,e,n){return((le(e,n)*t+fe(e,n))*t+pe(e))*t},he=function(t,e,n){return 3*le(e,n)*t*t+2*fe(e,n)*t+pe(e)};function ve(t,e,n,r){if(t===e&&n===r)return xt;for(var o=new Float32Array(11),i=0;i<11;++i)o[i]=de(.1*i,t,n);function a(e){for(var r=0,i=1;10!==i&&o[i]<=e;++i)r+=.1;--i;var a=r+.1*((e-o[i])/(o[i+1]-o[i])),s=he(a,t,n);return s>=.001?function(t,e,n,r){for(var o=0;o<8;++o){var i=he(e,n,r);if(0===i)return e;e-=(de(e,n,r)-t)/i}return e}(e,a,t,n):0===s?a:function(t,e,n,r,o){var i,a,s=0;do{(i=de(a=e+(n-e)/2,r,o)-t)>0?n=a:e=a}while(Math.abs(i)>1e-7&&++s<10);return a}(e,r,r+.1,t,n)}return function(t){return 0===t||1===t?t:de(a(t),e,r)}}var me=function(t,e){return void 0===e&&(e="end"),function(n){var r=(n="end"===e?Math.min(n,.999):Math.max(n,.001))*t,o="end"===e?Math.floor(r):Math.ceil(r);return dt(0,1,o/t)}},ye=n("q1tI"),be=n.n(ye),ge=function(t){return"object"==typeof t&&t.hasOwnProperty("current")},we=function(){function t(){this.subscriptions=new Set}return t.prototype.add=function(t){var e=this;return this.subscriptions.add(t),function(){e.subscriptions.delete(t)}},t.prototype.notify=function(t,e,n){var r,i;if(this.subscriptions.size)try{for(var a=Object(o.g)(this.subscriptions),s=a.next();!s.done;s=a.next()){(0,s.value)(t,e,n)}}catch(t){r={error:t}}finally{try{s&&!s.done&&(i=a.return)&&i.call(a)}finally{if(r)throw r.error}}},t.prototype.clear=function(){this.subscriptions.clear()},t}(),Oe=function(){function t(t){var e,n=this;this.timeDelta=0,this.lastUpdated=0,this.updateSubscribers=new we,this.renderSubscribers=new we,this.canTrackVelocity=!1,this.updateAndNotify=function(t,e){void 0===e&&(e=!0),n.prev=n.current,n.current=t,n.prev!==n.current&&n.updateSubscribers.notify(n.current),e&&n.renderSubscribers.notify(n.current);var r=w(),o=r.delta,i=r.timestamp;n.lastUpdated!==i&&(n.timeDelta=o,n.lastUpdated=i,O.postRender(n.scheduleVelocityCheck))},this.scheduleVelocityCheck=function(){return O.postRender(n.velocityCheck)},this.velocityCheck=function(t){t.timestamp!==n.lastUpdated&&(n.prev=n.current)},this.set(t,!1),this.canTrackVelocity=(e=this.current,!isNaN(parseFloat(e)))}return t.prototype.onChange=function(t){return this.updateSubscribers.add(t)},t.prototype.clearListeners=function(){this.updateSubscribers.clear()},t.prototype.onRenderRequest=function(t){return t(this.get()),this.renderSubscribers.add(t)},t.prototype.attach=function(t){this.passiveEffect=t},t.prototype.set=function(t,e){void 0===e&&(e=!0),e&&this.passiveEffect?this.passiveEffect(t,this.updateAndNotify):this.updateAndNotify(t,e)},t.prototype.get=function(){return this.current},t.prototype.getPrevious=function(){return this.prev},t.prototype.getVelocity=function(){return this.canTrackVelocity?Wt(parseFloat(this.current)-parseFloat(this.prev),this.timeDelta):0},t.prototype.start=function(t){var e=this;return this.stop(),new Promise((function(n){e.stopAnimation=t(n)})).then((function(){return e.clearAnimation()}))},t.prototype.stop=function(){this.stopAnimation&&this.stopAnimation(),this.clearAnimation()},t.prototype.isAnimating=function(){return!!this.stopAnimation},t.prototype.clearAnimation=function(){this.stopAnimation=null},t.prototype.destroy=function(){this.updateSubscribers.clear(),this.renderSubscribers.clear(),this.stop()},t}();function xe(t){return new Oe(t)}var Ee=function(){function t(t,e){var n=this;this.children=new Set,this.latest={},this.values=new Map,this.valueSubscriptions=new Map,this.config={},this.update=function(){return n.config.onUpdate(n.latest)},this.triggerRender=function(){return n.render()},this.ref=function(t){t?n.mount(t):n.unmount(),n.externalRef&&("function"==typeof n.externalRef?n.externalRef(t):ge(n.externalRef)&&(n.externalRef.current=t))},this.parent=t,this.rootParent=t?t.rootParent:this,this.treePath=t?Object(o.e)(t.treePath,[t]):[],this.depth=t?t.depth+1:0,this.externalRef=e}return t.prototype.subscribe=function(t){var e=this;return this.children.add(t),function(){return e.children.delete(t)}},t.prototype.hasValue=function(t){return this.values.has(t)},t.prototype.addValue=function(t,e){this.hasValue(t)&&this.removeValue(t),this.values.set(t,e),this.setSingleStaticValue(t,e.get()),this.subscribeToValue(t,e)},t.prototype.removeValue=function(t){var e;null===(e=this.valueSubscriptions.get(t))||void 0===e||e(),this.valueSubscriptions.delete(t),this.values.delete(t),delete this.latest[t]},t.prototype.getValue=function(t,e){var n=this.values.get(t);return void 0===n&&void 0!==e&&(n=new Oe(e),this.addValue(t,n)),n},t.prototype.forEachValue=function(t){this.values.forEach(t)},t.prototype.getInstance=function(){return this.element},t.prototype.updateConfig=function(t){void 0===t&&(t={}),this.config=Object(o.a)({},t)},t.prototype.setSingleStaticValue=function(t,e){this.latest[t]=e},t.prototype.setStaticValues=function(t,e){if("string"==typeof t)this.setSingleStaticValue(t,e);else for(var n in t)this.setSingleStaticValue(n,t[n])},t.prototype.scheduleRender=function(){O.render(this.triggerRender,!1,!0)},t.prototype.scheduleUpdateLayoutDelta=function(){O.preRender(this.rootParent.updateLayoutDelta,!1,!0)},t.prototype.subscribeToValue=function(t,e){var n=this,r=e.onChange((function(e){n.setSingleStaticValue(t,e),n.element&&n.config.onUpdate&&O.update(n.update,!1,!0)})),o=e.onRenderRequest((function(){n.element&&n.scheduleRender()}));this.valueSubscriptions.set(t,(function(){r(),o()}))},t.prototype.mount=function(t){this.parent&&(this.removeFromParent=this.parent.subscribe(this)),this.element=this.current=t},t.prototype.unmount=function(){var t=this;this.forEachValue((function(e,n){return t.removeValue(n)})),m.update(this.update),m.render(this.render),this.removeFromParent&&this.removeFromParent()},t}();function Se(t){return t}function je(t){var e=t.top;return{x:{min:t.left,max:t.right},y:{min:e,max:t.bottom}}}function Ce(t){return{x:Object(o.a)({},t.x),y:Object(o.a)({},t.y)}}var Pe={translate:0,scale:1,origin:0,originPoint:0};function Te(){return{x:Object(o.a)({},Pe),y:Object(o.a)({},Pe)}}var ke=Object(o.a)(Object(o.a)({},P),{transform:Math.round}),Ae={color:Q,backgroundColor:Q,outlineColor:Q,fill:Q,stroke:Q,borderColor:Q,borderTopColor:Q,borderRightColor:Q,borderBottomColor:Q,borderLeftColor:Q,borderWidth:L,borderTopWidth:L,borderRightWidth:L,borderBottomWidth:L,borderLeftWidth:L,borderRadius:L,radius:L,borderTopLeftRadius:L,borderTopRightRadius:L,borderBottomRightRadius:L,borderBottomLeftRadius:L,width:L,maxWidth:L,height:L,maxHeight:L,size:L,top:L,right:L,bottom:L,left:L,padding:L,paddingTop:L,paddingRight:L,paddingBottom:L,paddingLeft:L,margin:L,marginTop:L,marginRight:L,marginBottom:L,marginLeft:L,rotate:R,rotateX:R,rotateY:R,rotateZ:R,scale:k,scaleX:k,scaleY:k,scaleZ:k,skew:R,skewX:R,skewY:R,distance:L,translateX:L,translateY:L,translateZ:L,x:L,y:L,z:L,perspective:L,transformPerspective:L,opacity:T,originX:N,originY:N,originZ:L,zIndex:ke,fillOpacity:T,strokeOpacity:T,numOctaves:ke},Re=[P,L,M,R,_,D,{test:function(t){return"auto"===t},parse:function(t){return t}}],Me=function(t){return function(e){return e.test(t)}},Le=function(t){return Re.find(Me(t))},De=Object(o.e)(Re,[Q,X]),_e=function(t){return De.find(Me(t))},Ne=function(t){return Ae[t]},Fe=function(t,e){return e&&"number"==typeof t?e.transform(t):t},Ve=["","X","Y","Z"],Be=new Set,Ie=["transformPerspective","x","y","z"];function Ue(t,e){return Ie.indexOf(t)-Ie.indexOf(e)}["perspective","translate","scale","rotate","skew"].forEach((function(t){var e=new Set(["rotate","skew"]).has(t);Ve.forEach((function(n){var r=t+n;Ie.push(r),e&&Be.add(r)}))}));var qe=new Set(Ie);function We(t){return qe.has(t)}var ze=new Set(["originX","originY","originZ"]);function He(t){return ze.has(t)}var Qe={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"};function Ge(t,e){var n=t.x,r=t.y;return"translate3d("+n.translate/e.x+"px, "+r.translate/e.y+"px, 0) scale("+n.scale+", "+r.scale+")"}var Xe=Ge(Te(),{x:1,y:1});function Ye(t){return t.startsWith("--")}function $e(t){return"string"==typeof t&&t.startsWith("var(--")}var Ke=/var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/;function Ze(t,e,n){void 0===n&&(n=1);var r=Object(o.c)(function(t){var e=Ke.exec(t);if(!e)return[,];var n=Object(o.c)(e,3);return[n[1],n[2]]}(t),2),i=r[0],a=r[1];if(i){var s=window.getComputedStyle(e).getPropertyValue(i);return s||($e(a)?Ze(a,e,n+1):a)}}function Je(t,e){return t/(e.max-e.min)*100}var tn={process:function(t,e){if("string"==typeof t){if(!L.test(t))return t;t=parseFloat(t)}return Je(t,e.x)+"% "+Je(t,e.y)+"%"}},en={borderRadius:Object(o.a)(Object(o.a)({},tn),{applyTo:["borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]}),borderTopLeftRadius:tn,borderTopRightRadius:tn,borderBottomLeftRadius:tn,borderBottomRightRadius:tn,boxShadow:{process:function(t,e,n,r){var o=t,i=t.includes("var("),a=[];i&&(t=t.replace(Ke,(function(t){return a.push(t),"_$css"})));var s=X.parse(t);if(s.length>5)return o;var u=X.createTransformer(t),c="number"!=typeof s[0]?1:0,l=n.x.scale*r.x,f=n.y.scale*r.y;s[0+c]/=l,s[1+c]/=f;var p=Z(l,f,.5);"number"==typeof s[2+c]&&(s[2+c]/=p),"number"==typeof s[3+c]&&(s[3+c]/=p);var d=u(s);if(i){var h=0;d=d.replace("_$css",(function(){var t=a[h];return h++,t}))}return d}}};function nn(t,e,n,r,o,i,a,s,u,c,l,f){var p=a.enableHardwareAcceleration,d=a.transformTemplate,h=a.allowTransformNone;i.length=0;var v=!1,m=!1,y=!0;for(var b in t){var g=t[b],w=Ne(b),O=Fe(g,w);if(We(b)){if(v=!0,r[b]=O,i.push(b),!y)continue;g!==(void 0!==w.default?w.default:0)&&(y=!1)}else if(He(b))o[b]=O,m=!0;else if("transform"!==b||"function"!=typeof g){var x=Ye(b)?n:e;if(s&&en[b]){var E=en[b].process(g,f,u,l),S=en[b].applyTo;if(S)for(var j=S.length,C=0;Cr?n=K(e.min,e.max-r,t.min):r>o&&(n=K(t.min,t.max-o,e.min)),dt(0,1,n)}function mn(t,e,n,r){var o=e.max-e.min,i=n.max-n.min;t.origin=void 0===r?vn(e,n):r,t.originPoint=Z(e.min,e.max,t.origin),t.scale=i/o,hn(t.scale,1,1e-4)&&(t.scale=1),t.translate=function(t,e,n){var r=Z(t.min,t.max,n);return Z(e.min,e.max,n)-r}(e,n,t.origin),hn(t.translate)&&(t.translate=0)}function yn(t,e,n,r){mn(t.x,e.x,n.x,r),mn(t.y,e.y,n.y,r)}function bn(t){return[t("x"),t("y")]}var gn=function(t){return 1e3*t},wn=function(t){if(Array.isArray(t)){t.length;var e=Object(o.c)(t,4);return ve(e[0],e[1],e[2],e[3])}return"string"==typeof t?r[t]:t},On=function(t,e){return"zIndex"!==t&&(!("number"!=typeof e&&!Array.isArray(e))||!("string"!=typeof e||!X.test(e)||e.startsWith("url(")))},xn=function(t){return Array.isArray(t)},En=function(){return{type:"spring",stiffness:500,damping:25,restDelta:.5,restSpeed:10}},Sn=function(t){return{type:"spring",stiffness:550,damping:0===t?100:30,restDelta:.01,restSpeed:10}},jn=function(){return{type:"keyframes",ease:"linear",duration:.3}},Cn=function(t){return{type:"keyframes",duration:.8,values:t}},Pn={x:En,y:En,z:En,rotate:En,rotateX:En,rotateY:En,rotateZ:En,scaleX:Sn,scaleY:Sn,scale:Sn,opacity:jn,backgroundColor:jn,color:jn,default:Sn};function Tn(t){var e=t.yoyo,n=t.loop,r=t.flip,i=t.ease,a=t.times,s=Object(o.d)(t,["yoyo","loop","flip","ease","times"]),u=Object(o.a)({},s);return a&&(u.offset=a),s.duration&&(u.duration=gn(s.duration)),s.repeatDelay&&(u.repeatDelay=gn(s.repeatDelay)),i&&(u.ease=function(t){return Array.isArray(t)&&"number"!=typeof t[0]}(i)?i.map(wn):wn(i)),"tween"===s.type&&(u.type="keyframes"),e?u.repeatType="reverse":n?u.repeatType="loop":r&&(u.repeatType="mirror"),u.repeat=n||e||r||s.repeat,"spring"!==s.type&&(u.type="keyframes"),u}function kn(t,e,n){var r,i,a;return function(t){Array.isArray(t.to)&&null===t.to[0]&&(t.to=Object(o.e)(t.to),t.to[0]=t.from)}(e),function(t){t.when,t.delay,t.delayChildren,t.staggerChildren,t.staggerDirection,t.repeat,t.repeatType,t.repeatDelay,t.from;var e=Object(o.d)(t,["when","delay","delayChildren","staggerChildren","staggerDirection","repeat","repeatType","repeatDelay","from"]);return!!Object.keys(e).length}(t)||(t=Object(o.a)(Object(o.a)({},t),(r=n,i=e.to,a=xn(i)?Cn:Pn[r]||Pn.default,Object(o.a)({to:i},a(i))))),Object(o.a)(Object(o.a)({},e),Tn(t))}function An(t,e,n,r){return void 0===r&&(r={}),e.start((function(i){var a,s,u=function(t,e,n,r,i){var a=r[t]||r.default||r,s=e.get(),u=On(t,n);return"none"===s&&u&&"string"==typeof n&&(s=X.getAnimatableNone(n)),On(t,s)&&u&&!1!==a.type?function(){var r={from:s,to:n,velocity:e.getVelocity(),onComplete:i,onUpdate:function(t){return e.set(t)}};return"inertia"===a.type||"decay"===a.type?zt(Object(o.a)(Object(o.a)({},r),a)):qt(kn(a,r,t))}:function(){return e.set(n),i(),{stop:function(){}}}}(t,e,n,r,i),c=function(t,e){var n,r,o,i,a;return null!==(a=null!==(i=null!==(r=null===(n=t[e])||void 0===n?void 0:n.delay)&&void 0!==r?r:null===(o=t.default)||void 0===o?void 0:o.delay)&&void 0!==i?i:t.delay)&&void 0!==a?a:0}(r,t),l=function(){return s=u()};return c?a=setTimeout(l,gn(c)):l(),function(){clearTimeout(a),null==s||s.stop()}}))}function Rn(t,e){return je(function(t,e){var n=t.top,r=t.left,o=t.bottom,i=t.right;void 0===e&&(e=Se);var a=e({x:r,y:n}),s=e({x:i,y:o});return{top:a.y,left:a.x,bottom:s.y,right:s.x}}(t.getBoundingClientRect(),e))}var Mn=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.defaultConfig={enableHardwareAcceleration:!0,allowTransformNone:!0},e.style={},e.reactStyle={},e.vars={},e.transform={},e.transformOrigin={},e.transformKeys=[],e.config=e.defaultConfig,e.isLayoutProjectionEnabled=!1,e.layoutUpdateListeners=new we,e.layoutMeasureListeners=new we,e.viewportBoxUpdateListeners=new we,e.hasViewportBoxUpdated=!1,e.targetBoxFinal={x:{min:0,max:1},y:{min:0,max:1}},e.treeScale={x:1,y:1},e.prevTreeScale={x:1,y:1},e.delta=Te(),e.deltaFinal=Te(),e.deltaTransform=Xe,e.stopLayoutAxisAnimation={x:function(){},y:function(){}},e.isTargetBoxLocked=!1,e.axisProgress={x:xe(0),y:xe(0)},e.updateLayoutDelta=function(){e.isLayoutProjectionEnabled&&e.box&&e.updateLayoutDeltas(),e.children.forEach(Ln)},e}return Object(o.b)(e,t),e.prototype.removeValue=function(e){t.prototype.removeValue.call(this,e),delete this.vars[e],delete this.style[e]},e.prototype.clean=function(){this.style={},this.vars={},this.transform={}},e.prototype.updateConfig=function(t){void 0===t&&(t={}),this.config=Object(o.a)(Object(o.a)({},this.defaultConfig),t)},e.prototype.read=function(t){return this.getComputedStyle()[t]||0},e.prototype.addValue=function(e,n){t.prototype.addValue.call(this,e,n),e.startsWith("rotate")&&(this.layoutOrigin=.5)},e.prototype.readNativeValue=function(t){if(We(t)){var e=Ne(t);return e&&e.default||0}return this.read(t)},e.prototype.enableLayoutProjection=function(){this.isLayoutProjectionEnabled=!0},e.prototype.hide=function(){!1!==this.isVisible&&(this.isVisible=!1,this.scheduleRender())},e.prototype.show=function(){!0!==this.isVisible&&(this.isVisible=!0,this.scheduleRender())},e.prototype.onLayoutUpdate=function(t){return this.layoutUpdateListeners.add(t)},e.prototype.onLayoutMeasure=function(t){return this.layoutMeasureListeners.add(t)},e.prototype.onViewportBoxUpdate=function(t){return this.viewportBoxUpdateListeners.add(t)},e.prototype.layoutReady=function(t){this.layoutUpdateListeners.notify(this.box,this.prevViewportBox||this.box,t)},e.prototype.getBoundingBox=function(){var t=this.config.transformPagePoint;return Rn(this.element,t)},e.prototype.getBoundingBoxWithoutTransforms=function(){var t,e,n=this.getBoundingBox();return t=n,e=this.latest,dn(t.x,e,ln),dn(t.y,e,fn),n},e.prototype.getComputedStyle=function(){return window.getComputedStyle(this.element)},e.prototype.snapshotBoundingBox=function(){this.prevViewportBox=this.getBoundingBoxWithoutTransforms(),this.rebaseTargetBox(!1,this.prevViewportBox)},e.prototype.rebaseTargetBox=function(t,e){var n=this;void 0===t&&(t=!1),void 0===e&&(e=this.box);var r=this.axisProgress,o=r.x,i=r.y,a=this.box&&!this.isTargetBoxLocked&&!o.isAnimating()&&!i.isAnimating();(t||a)&&bn((function(t){var r=e[t],o=r.min,i=r.max;n.setAxisTarget(t,o,i)}))},e.prototype.measureLayout=function(){var t=this;this.box=this.getBoundingBox(),this.boxCorrected=Ce(this.box),this.targetBox||(this.targetBox=Ce(this.box)),this.layoutMeasureListeners.notify(this.box,this.prevViewportBox||this.box),O.update((function(){return t.rebaseTargetBox()}))},e.prototype.lockTargetBox=function(){this.isTargetBoxLocked=!0},e.prototype.unlockTargetBox=function(){this.stopLayoutAnimation(),this.isTargetBoxLocked=!1},e.prototype.resetTransform=function(){var t=this.config.transformTemplate;this.element.style.transform=t?t({},""):"none",this.scheduleRender()},e.prototype.setAxisTarget=function(t,e,n){var r=this.targetBox[t];r.min=e,r.max=n,this.hasViewportBoxUpdated=!0,this.rootParent.scheduleUpdateLayoutDelta()},e.prototype.startLayoutAxisAnimation=function(t,e){var n=this,r=this.axisProgress[t],o=this.targetBox[t],i=o.min,a=o.max-i;return r.clearListeners(),r.set(i),r.set(i),r.onChange((function(e){return n.setAxisTarget(t,e,e+a)})),An(t,r,0,e)},e.prototype.stopLayoutAnimation=function(){var t=this;bn((function(e){return t.axisProgress[e].stop()}))},e.prototype.updateLayoutDeltas=function(){var t,e,n,r,o;t=this.boxCorrected,e=this.box,rn(t.x,e.x),rn(t.y,e.y),this.parent&&(this.prevTreeScale.x=this.treeScale.x,this.prevTreeScale.y=this.treeScale.y,n=this.treeScale,r=this.parent.treeScale,o=this.parent.delta,n.x=r.x*o.x.scale,n.y=r.y*o.y.scale),function(t,e){for(var n=e.length,r=0;r=3;if(e||n){var i=t.point,a=w().timestamp;r.history.push(Object(o.a)(Object(o.a)({},i),{timestamp:a}));var s=r.handlers,u=s.onStart,c=s.onMove;e||(u&&u(r.lastMoveEvent,t),r.startEvent=r.lastMoveEvent),c&&c(r.lastMoveEvent,t)}}},!($r(t)&&t.touches.length>1)){this.handlers=e,this.transformPagePoint=i;var a=fo(to(t),this.transformPagePoint),s=a.point,u=w().timestamp;this.history=[Object(o.a)(Object(o.a)({},s),{timestamp:u})];var c=e.onSessionStart;c&&c(t,po(a,this.history));var l=uo(window,"pointermove",(function(t,e){return r.handlePointerMove(t,e)})),f=uo(window,"pointerup",(function(t,e){return r.handlePointerUp(t,e)}));this.removeListeners=function(){l&&l(),f&&f()}}}return t.prototype.handlePointerMove=function(t,e){this.lastMoveEvent=t,this.lastMoveEventInfo=fo(e,this.transformPagePoint),Yr(t)&&0===t.buttons?this.handlePointerUp(t,e):O.update(this.updatePoint,!0)},t.prototype.handlePointerUp=function(t,e){this.end();var n=this.handlers.onEnd;if(n){var r=po(fo(e,this.transformPagePoint),this.history);n&&n(t,r)}},t.prototype.updateHandlers=function(t){this.handlers=t},t.prototype.end=function(){this.removeListeners&&this.removeListeners(),m.update(this.updatePoint),Gr()},t}();function fo(t,e){return e?{point:e(t.point)}:t}function po(t,e){var n=t.point;return{point:n,delta:no.subtract(n,vo(e)),offset:no.subtract(n,ho(e)),velocity:mo(e,.1)}}function ho(t){return t[0]}function vo(t){return t[t.length-1]}function mo(t,e){if(t.length<2)return{x:0,y:0};for(var n=t.length-1,r=null,o=vo(t);n>=0&&(r=t[n],!(o.timestamp-r.timestamp>gn(e)));)n--;if(!r)return{x:0,y:0};var i=(o.timestamp-r.timestamp)/1e3;if(0===i)return{x:0,y:0};var a={x:(o.x-r.x)/i,y:(o.y-r.y)/i};return a.x===1/0&&(a.x=0),a.y===1/0&&(a.y=0),a}function yo(t,e,n){var r=e.min,o=e.max;return void 0!==r&&to&&(t=n?Z(o,t,n):Math.min(t,o)),t}function bo(t,e,n){return{min:void 0!==e?t.min+e:void 0,max:void 0!==n?t.max+n-(t.max-t.min):void 0}}function go(t,e){var n,r=e.min-t.min,i=e.max-t.max;return e.max-e.mine?n="y":Math.abs(t.x)>e&&(n="x");return n}(l),void(null!==n.currentDirection&&(null===(o=(r=n.props).onDirectionLock)||void 0===o||o.call(r,n.currentDirection)));n.updateAxis("x",t,l),n.updateAxis("y",t,l),null===(a=(i=n.props).onDrag)||void 0===a||a.call(i,t,e),wo=t}},onEnd:function(t,e){return n.stop(t,e)}},{transformPagePoint:s})},t.prototype.prepareBoundingBox=function(){var t=this.visualElement.getInstance(),e=t.style.transform;this.visualElement.resetTransform(),this.visualElement.measureLayout(),t.style.transform=e,this.visualElement.rebaseTargetBox(!0)},t.prototype.resolveDragConstraints=function(){var t,e,n,r,o,i,a=this,s=this.props.dragConstraints;this.constraints=!!s&&(ge(s)?this.resolveRefConstraints(this.visualElement.box,s):(t=this.visualElement.box,n=(e=s).top,r=e.left,o=e.bottom,i=e.right,{x:bo(t.x,r,i),y:bo(t.y,n,o)})),this.constraints&&!this.hasMutatedConstraints&&bn((function(t){var e,n,r;a.getAxisMotionValue(t)&&(a.constraints[t]=(e=a.visualElement.box[t],n=a.constraints[t],r={},void 0!==n.min&&(r.min=n.min-e.min),void 0!==n.max&&(r.max=n.max-e.min),r))}))},t.prototype.resolveRefConstraints=function(t,e){var n=this.props,r=n.onMeasureDragConstraints,o=n.transformPagePoint,i=e.current;this.constraintsBox=Rn(i,o);var a=function(t,e){return{x:go(t.x,e.x),y:go(t.y,e.y)}}(t,this.constraintsBox);if(r){var s=r(function(t){var e=t.x,n=t.y;return{top:n.min,bottom:n.max,left:e.min,right:e.max}}(a));this.hasMutatedConstraints=!!s,s&&(a=je(s))}return a},t.prototype.cancelDrag=function(){Gr(),this.isDragging=!1,this.panSession&&this.panSession.end(),this.panSession=null,!this.props.dragPropagation&&this.openGlobalLock&&(this.openGlobalLock(),this.openGlobalLock=null)},t.prototype.stop=function(t,e){var n;this.visualElement.unlockTargetBox(),null===(n=this.panSession)||void 0===n||n.end(),this.panSession=null;var r=this.isDragging;if(this.cancelDrag(),r){var o=this.props,i=o.dragMomentum,a=o.dragElastic,s=o.onDragEnd;if(i||a){var u=e.velocity;this.animateDragEnd(u)}null==s||s(t,e)}},t.prototype.snapToCursor=function(t){var e=this;this.prepareBoundingBox(),bn((function(n){var r=e.getAxisMotionValue(n);if(r){var o=eo(t).point,i=e.visualElement.box,a=i[n].max-i[n].min,s=i[n].min+a/2,u=o[n]-s;e.originPoint[n]=o[n],r.set(u)}else e.cursorProgress[n]=.5,e.updateVisualElementAxis(n,t)}))},t.prototype.updateAxis=function(t,e,n){if(Eo(t,this.props.drag,this.currentDirection))return this.getAxisMotionValue(t)?this.updateAxisMotionValue(t,n):this.updateVisualElementAxis(t,e)},t.prototype.updateAxisMotionValue=function(t,e){var n=this.getAxisMotionValue(t);if(e&&n){var r=this.props.dragElastic,o=this.originPoint[t]+e[t],i=this.constraints?yo(o,this.constraints[t],r):o;n.set(i)}},t.prototype.updateVisualElementAxis=function(t,e){var n,r=this.props.dragElastic,o=this.visualElement.box[t],i=o.max-o.min,a=this.cursorProgress[t],s=function(t,e,n,r,o){var i=t-e*n;return r?yo(i,r,o):i}(eo(e).point[t],i,a,null===(n=this.constraints)||void 0===n?void 0:n[t],r);this.visualElement.setAxisTarget(t,s,s+i)},t.prototype.updateProps=function(t){var e=t.drag,n=void 0!==e&&e,r=t.dragDirectionLock,i=void 0!==r&&r,a=t.dragPropagation,s=void 0!==a&&a,u=t.dragConstraints,c=void 0!==u&&u,l=t.dragElastic,f=void 0===l?.35:l,p=t.dragMomentum,d=void 0===p||p,h=Object(o.d)(t,["drag","dragDirectionLock","dragPropagation","dragConstraints","dragElastic","dragMomentum"]);this.props=Object(o.a)({drag:n,dragDirectionLock:i,dragPropagation:s,dragConstraints:c,dragElastic:f,dragMomentum:d},h)},t.prototype.getAxisMotionValue=function(t){var e=this.props,n=e.layout,r=e.layoutId,o="_drag"+t.toUpperCase();return this.props[o]?this.props[o]:n||void 0!==r?void 0:this.visualElement.getValue(t,0)},t.prototype.animateDragEnd=function(t){var e=this,n=this.props,r=n.drag,i=n.dragMomentum,a=n.dragElastic,s=n.dragTransition,u=bn((function(n){if(Eo(n,r,e.currentDirection)){var u=e.constraints?e.constraints[n]:{},c=a?200:1e6,l=a?40:1e7,f=Object(o.a)(Object(o.a)({type:"inertia",velocity:i?t[n]:0,bounceStiffness:c,bounceDamping:l,timeConstant:750,restDelta:1,restSpeed:10},s),u);return e.getAxisMotionValue(n)?e.startAxisValueAnimation(n,f):e.visualElement.startLayoutAxisAnimation(n,f)}}));return Promise.all(u).then((function(){var t,n;null===(n=(t=e.props).onDragTransitionEnd)||void 0===n||n.call(t)}))},t.prototype.stopMotion=function(){var t=this;bn((function(e){var n=t.getAxisMotionValue(e);n?n.stop():t.visualElement.stopLayoutAnimation()}))},t.prototype.startAxisValueAnimation=function(t,e){var n=this.getAxisMotionValue(t);if(n){var r=n.get();return n.set(r),n.set(r),An(t,n,0,e)}},t.prototype.scalePoint=function(){var t=this,e=this.props,n=e.drag,r=e.dragConstraints;if(ge(r)&&this.constraintsBox){this.stopMotion();var o={x:0,y:0};bn((function(e){o[e]=vn(t.visualElement.targetBox[e],t.constraintsBox[e])})),this.prepareBoundingBox(),this.resolveDragConstraints(),bn((function(e){if(Eo(e,n,null)){var r=function(t,e,n){var r=t.max-t.min,o=Z(e.min,e.max-r,n);return{min:o,max:o+r}}(t.visualElement.targetBox[e],t.constraintsBox[e],o[e]),i=r.min,a=r.max;t.visualElement.setAxisTarget(e,i,a)}}))}},t.prototype.mount=function(t){var e=this,n=uo(t.getInstance(),"pointerdown",(function(t){var n=e.props,r=n.drag,o=n.dragListener;r&&(void 0===o||o)&&e.start(t)})),r=Xr(window,"resize",(function(){e.scalePoint()})),o=t.onLayoutUpdate((function(){e.isDragging&&e.resolveDragConstraints()})),i=t.prevSnapshot;return(null==i?void 0:i.isDragging)&&this.start(wo,{cursorProgress:i.cursorProgress}),function(){null==n||n(),null==r||r(),null==o||o(),e.cancelDrag()}},t}();function Eo(t,e,n){return!(!0!==e&&e!==t||null!==n&&n!==t)}var So=function(t){return function(e){return t(e),null}},jo=So((function(t){var e=t.visualElement;return function(t,e){var n=t.dragControls,r=Object(ye.useContext)(Dr).transformPagePoint,i=Dn((function(){return new xo({visualElement:e})}));i.updateProps(Object(o.a)(Object(o.a)({},t),{transformPagePoint:r})),Object(ye.useEffect)((function(){return n&&n.subscribe(i)}),[i]),Object(ye.useEffect)((function(){return i.mount(e)}),[])}(Object(o.d)(t,["visualElement"]),e)})),Co={key:"drag",shouldRender:function(t){return!!t.drag},getComponent:function(){return jo}};function Po(t){return Object(ye.useEffect)((function(){return function(){return t()}}),[])}var To=function(t,e){return!!e&&(t===e||To(t,e.parentElement))},ko=["whileHover","whileTap","whileDrag"],Ao=function(t){return ko.indexOf(t)+1},Ro=Ao("whileTap");var Mo=Ao("whileHover"),Lo=function(t){return function(e,n){Yr(e)&&t(e,n)}};function Do(t,e){!function(t,e){var n=t.onPan,r=t.onPanStart,o=t.onPanEnd,i=t.onPanSessionStart,a=n||r||o||i,s=Object(ye.useRef)(null),u=Object(ye.useContext)(Dr).transformPagePoint,c={onSessionStart:i,onStart:r,onMove:n,onEnd:function(t,e){s.current=null,o&&o(t,e)}};Object(ye.useEffect)((function(){null!==s.current&&s.current.updateHandlers(c)})),co(e,"pointerdown",a&&function(t){s.current=new lo(t,c,{transformPagePoint:u})}),Po((function(){return s.current&&s.current.end()}))}(t,e),function(t,e){var n=t.onTap,r=t.onTapStart,o=t.onTapCancel,i=t.whileTap,a=t.controls,s=n||r||o||i,u=Object(ye.useRef)(!1),c=Object(ye.useRef)(null);function l(){c.current&&c.current(),c.current=null}i&&a&&a.setOverride(i,Ro);var f=Object(ye.useRef)(null);f.current=function(t,r){var s=e.current;if(l(),u.current&&s){u.current=!1,a&&i&&a.clearOverride(Ro);var c=Hr(!0);c&&(c(),To(s,t.target)?n&&n(t,r):o&&o(t,r))}},co(e,"pointerdown",s?function(t,n){l(),c.current=uo(window,"pointerup",(function(t,e){return f.current(t,e)})),e.current&&!u.current&&(u.current=!0,r&&r(t,n),a&&i&&a.startOverride(Ro))}:void 0),Po(l)}(t,e),function(t,e){var n=t.whileHover,r=t.onHoverStart,o=t.onHoverEnd,i=t.controls;n&&i&&i.setOverride(n,Mo),co(e,"pointerenter",Lo((function(t,e){r&&r(t,e),n&&i&&i.startOverride(Mo)}))),co(e,"pointerleave",Lo((function(t,e){o&&o(t,e),n&&i&&i.clearOverride(Mo)})))}(t,e)}var _o,No=["onPan","onPanStart","onPanEnd","onPanSessionStart","onTap","onTapStart","onTapCancel","whileTap","whileHover","onHoverStart","onHoverEnd"],Fo=So((function(t){var e=t.visualElement;Do(Object(o.d)(t,["visualElement"]),e)})),Vo={key:"gestures",shouldRender:function(t){return No.some((function(e){return t.hasOwnProperty(e)}))},getComponent:function(){return Fo}},Bo=So((function(t){var e=t.animate,n=t.controls,r=t.exit,i=Object(o.c)(Xn(),2),a=i[0],s=i[1],u=Object(ye.useContext)(Gn),c=Object(ye.useRef)(!1),l=void 0!==(null==u?void 0:u.custom)?u.custom:t.custom;Object(ye.useEffect)((function(){a?!c.current||!e||"boolean"==typeof e||e instanceof yr||n.start(e):(!c.current&&r&&n.start(r,{custom:l}).then(s),c.current=!0),a&&(c.current=!1)}),[e,n,l,r,a,s,t])})),Io={key:"exit",shouldRender:function(t){return!!t.exit&&!xr(t)},getComponent:function(){return Bo}};!function(t){t.Target="Target",t.VariantLabel="VariantLabel",t.AnimationSubscription="AnimationSubscription"}(_o||(_o={}));function Uo(t,e){void 0===e&&(e=!1);t.transition;var n=t.transitionEnd,r=Object(o.d)(t,["transition","transitionEnd"]);return e?Object(o.a)(Object(o.a)({},r),n):r}var qo,Wo,zo=function(t){var e,n=t instanceof Oe?t.get():t;return Array.from(new Set((e=n)?Array.isArray(e)?e:[e]:[]))};var Ho=((qo={})[_o.Target]=So((function(t){return function(t,e,n,r){var i=Object(ye.useRef)(!0),a=Object(ye.useRef)(null);a.current||(a.current=Uo(t,!0)),Object(ye.useEffect)((function(){var s,u,c={},l=Uo(t),f=Uo(t,!0);for(var p in l){var d=i.current&&(!n.hasValue(p)||n.getValue(p).get()!==f[p]),h=null!==f[p],v=(s=a.current[p],void 0!==(u=f[p])&&(Array.isArray(s)&&Array.isArray(u)?!function(t,e){if(null===e)return!1;var n=e.length;if(n!==t.length)return!1;for(var r=0;re?1:n(K(t,e,r))}}var ni=ei(0,.5,Pt),ri=ei(.5,.95,xt),oi={key:"animate-layout",shouldRender:function(t){return!!t.layout||!!t.layoutId},getComponent:function(){return Ko}},ii=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return Object(o.b)(e,t),e.prototype.componentDidMount=function(){var t=this.props,e=t.syncLayout,n=t.visualElement;Vr(e)&&e.register(n)},e.prototype.getSnapshotBeforeUpdate=function(){var t=this.props,e=t.syncLayout,n=t.visualElement;return Vr(e)?e.syncUpdate():(n.snapshotBoundingBox(),e.add(n)),null},e.prototype.componentDidUpdate=function(){var t=this.props,e=t.syncLayout,n=t.visualElement;Vr(e)||e.flush(),n.rebaseTargetBox()},e.prototype.render=function(){return null},e}(be.a.Component);function ai(t){var e=Object(ye.useContext)(Br);return be.a.createElement(ii,Object(o.a)({},t,{syncLayout:e}))}var si={key:"measure-layout",shouldRender:function(t){return!!t.drag||!!t.layout||!!t.layoutId},getComponent:function(){return ai}};function ui(t){var e={defaultFeatures:t,useVisualElement:Zn,render:rr,animationControlsConfig:{makeTargetAnimatable:mr}};var n=new Map;return new Proxy({custom:function(t){return Ur(t,e)}},{get:function(t,r){return"custom"===r?t.custom:(n.has(r)||n.set(r,Ur(r,e)),n.get(r))}})}var ci=ui([si,Yo,Co,Vo,Io,oi]);function li(t,e){return e&&t!==e.lead?{visibilityAction:Lr.Hide}:e&&t.presence!==Mr.Entering&&t===e.lead&&e.lead!==e.prevLead?{visibilityAction:Lr.Show}:(t.presence===Mr.Entering?n=null==e?void 0:e.getFollowOrigin():t.presence===Mr.Exiting&&(r=null==e?void 0:e.getFollowTarget()),{originBox:n,targetBox:r});var n,r}function fi(t,e){var n,r,o,i={},a=e&&e.lead,s=null==a?void 0:a.presence;return e&&t===a?t.presence===Mr.Entering?i.originBox=e.getFollowOrigin():t.presence===Mr.Exiting&&(i.targetBox=e.getFollowTarget()):e&&t===e.follow&&(i.transition=e.getLeadTransition(),s===Mr.Entering?i.targetBox=e.getLeadTarget():s===Mr.Exiting&&(i.originBox=e.getLeadOrigin())),(null===(n=null==e?void 0:e.follow)||void 0===n?void 0:n.isPresenceRoot)||(null==a?void 0:a.isPresenceRoot)?(e&&t!==a?e&&t===e.follow?a&&s!==Mr.Entering&&s===Mr.Exiting&&(i.crossfadeOpacity=null===(o=null==e?void 0:e.lead)||void 0===o?void 0:o.getValue("opacity",1)):i.visibilityAction=Lr.Hide:t.presence===Mr.Entering&&(i.crossfadeOpacity=null===(r=null==e?void 0:e.follow)||void 0===r?void 0:r.getValue("opacity",0)),i):i}var pi=function(){function t(){this.order=[],this.hasChildren=!1}return t.prototype.add=function(t){var e;if(this.order.push(t),this.snapshot){t.prevSnapshot=this.snapshot,t.prevViewportBox=this.snapshot.boundingBox;var n=this.snapshot.latestMotionValues;for(var r in n)t.hasValue(r)?null===(e=t.getValue(r))||void 0===e||e.set(n[r]):t.addValue(r,xe(n[r]))}this.hasChildren=!0},t.prototype.remove=function(t){var e=this.order.findIndex((function(e){return t===e}));-1!==e&&this.order.splice(e,1)},t.prototype.updateLeadAndFollow=function(){this.prevLead=this.lead,this.prevFollow=this.follow;var t=Object(o.c)(function(t,e){for(var n=Object(o.c)(e,2),r=n[0],i=n[1],a=void 0,s=0,u=void 0,c=t.length,l=!1,f=c-1;f>=0;f--){var p=t[f];if(f===c-1&&(l=p.isPresent),l)a=p;else{var d=t[f-1];d&&d.isPresent&&(a=p)}if(a){s=f;break}}if(a||(a=t[0]),u=t[s-1],a)for(f=s-1;f>=0;f--)if((p=t[f]).isPresent){u=p;break}return a!==r&&!l&&u===i&&t.find((function(t){return t===r}))&&(a=r),[a,u]}(this.order,[this.lead,this.follow]),2),e=t[0],n=t[1];this.lead=e,this.follow=n},t.prototype.updateSnapshot=function(){if(this.lead){var t={boundingBox:this.lead.prevViewportBox,latestMotionValues:{}};this.lead.forEachValue((function(e,n){var r=e.get();We(r)||(t.latestMotionValues[n]=r)}));var e=Oo.get(this.lead);e&&e.isDragging&&(t.isDragging=!0,t.cursorProgress=e.cursorProgress),this.snapshot=t}},t.prototype.isLeadPresent=function(){var t;return this.lead&&(null===(t=this.lead)||void 0===t?void 0:t.presence)!==Mr.Exiting},t.prototype.getFollowOrigin=function(){var t;return this.follow?this.follow.prevViewportBox:null===(t=this.snapshot)||void 0===t?void 0:t.boundingBox},t.prototype.getFollowTarget=function(){var t;return null===(t=this.follow)||void 0===t?void 0:t.box},t.prototype.getLeadOrigin=function(){var t;return null===(t=this.lead)||void 0===t?void 0:t.prevViewportBox},t.prototype.getLeadTarget=function(){var t;return null===(t=this.lead)||void 0===t?void 0:t.box},t.prototype.getLeadTransition=function(){var t;return null===(t=this.lead)||void 0===t?void 0:t.config.transition},t}();!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.children=new Set,e.stacks=new Map,e.hasMounted=!1,e.updateScheduled=!1,e.renderScheduled=!1,e.syncContext=Object(o.a)(Object(o.a)({},Fr()),{syncUpdate:function(t){return e.scheduleUpdate(t)},forceUpdate:function(){e.syncContext=Object(o.a)({},e.syncContext),e.scheduleUpdate(!0)},register:function(t){return e.addChild(t)},remove:function(t){return e.removeChild(t)}}),e}Object(o.b)(e,t),e.prototype.componentDidMount=function(){this.hasMounted=!0,this.updateStacks()},e.prototype.componentDidUpdate=function(){this.startLayoutAnimation()},e.prototype.shouldComponentUpdate=function(){return this.renderScheduled=!0,!0},e.prototype.startLayoutAnimation=function(){var t=this;this.renderScheduled=this.updateScheduled=!1;var e=this.props.type;this.children.forEach((function(t){t.isPresent?t.presence!==Mr.Entering&&(t.presence=t.presence===Mr.Exiting?Mr.Entering:Mr.Present):t.presence=Mr.Exiting})),this.updateStacks();var n="crossfade"===e?fi:li,r={measureLayout:function(t){return t.measureLayout()},layoutReady:function(e){var r=e.layoutId;e.layoutReady(n(e,t.getStack(r)))}};this.children.forEach((function(e){return t.syncContext.add(e)})),this.syncContext.flush(r),this.stacks.forEach((function(t){return t.snapshot=void 0}))},e.prototype.updateStacks=function(){this.stacks.forEach((function(t){return t.updateLeadAndFollow()}))},e.prototype.scheduleUpdate=function(t){void 0===t&&(t=!1),!t&&this.updateScheduled||(this.updateScheduled=!0,this.children.forEach((function(t){return t.snapshotBoundingBox()})),this.stacks.forEach((function(t){return t.updateSnapshot()})),!t&&this.renderScheduled||(this.renderScheduled=!0,this.forceUpdate()))},e.prototype.addChild=function(t){this.children.add(t),this.addToStack(t),t.presence=this.hasMounted?Mr.Entering:Mr.Present},e.prototype.removeChild=function(t){this.scheduleUpdate(),this.children.delete(t),this.removeFromStack(t)},e.prototype.addToStack=function(t){var e=this.getStack(t.layoutId);null==e||e.add(t)},e.prototype.removeFromStack=function(t){var e=this.getStack(t.layoutId);null==e||e.remove(t)},e.prototype.getStack=function(t){if(void 0!==t)return!this.stacks.has(t)&&this.stacks.set(t,new pi),this.stacks.get(t)},e.prototype.render=function(){return Object(ye.createElement)(Br.Provider,{value:this.syncContext},this.props.children)}}(ye.Component);function di(){return{scrollX:xe(0),scrollY:xe(0),scrollXProgress:xe(0),scrollYProgress:xe(0)}}di();var hi=xe(null);if("undefined"!=typeof window)if(window.matchMedia){var vi=window.matchMedia("(prefers-reduced-motion)"),mi=function(){return hi.set(vi.matches)};vi.addListener(mi),mi()}else hi.set(!1);!function(){function t(){this.componentControls=new Set}t.prototype.subscribe=function(t){var e=this;return this.componentControls.add(t),function(){return e.componentControls.delete(t)}},t.prototype.start=function(t,e){this.componentControls.forEach((function(n){n.start(t.nativeEvent||t,e)}))}}();!function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.initialState={},e}Object(o.b)(e,t),e.prototype.updateLayoutDelta=function(){},e.prototype.build=function(){},e.prototype.clean=function(){},e.prototype.getBoundingBox=function(){return{x:{min:0,max:0},y:{min:0,max:0}}},e.prototype.readNativeValue=function(t){return this.initialState[t]||0},e.prototype.render=function(){this.build()}}(Ee)},a3WO:function(t,e,n){"use strict";function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n4&&void 0!==arguments[4]?arguments[4]:{};c((function(){var i=document.getElementById(e).getContext("2d"),a=new t(i,{type:"line",data:n,options:u(u({},l),o)}),s=r&&r.subscribe((function(){return a.update()}));return function(){s&&s(),a.destroy()}}),[t,e,n,r,o])}},btwz:function(t,e,n){t.exports={lo:"_2fg1R7Zu62"}},dBaT:function(t,e,n){"use strict";t.exports=n("MF5s")},ewTs:function(t,e,n){},fbhf:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.dumpClassLists=function(){0};var r={},o={};e.add=function(t,e){return n=t.classList,i="html"==t.nodeName.toLowerCase()?r:o,void e.split(" ").forEach((function(t){!function(t,e){t[e]||(t[e]=0),t[e]+=1}(i,t),n.add(t)}));var n,i},e.remove=function(t,e){return n=t.classList,i="html"==t.nodeName.toLowerCase()?r:o,void e.split(" ").forEach((function(t){!function(t,e){t[e]&&(t[e]-=1)}(i,t),0===i[t]&&n.remove(t)}));var n,i}},gjz0:function(t,e,n){t.exports={root:"_2kr0S-YLqE"}},"hN5/":function(t,e,n){},hkBY:function(t,e,n){"use strict";var r=n("q1tI"),o=n.n(r),i=n("ohBo"),a=n.n(i),s=n("OADI"),u=n("WfPo");e.a=Object(u.a)((function(t){return{theme:Object(s.i)(t)}}))((function(t){var e=t.checked,n=void 0!==e&&e,r=t.onChange,i=t.theme,s=t.name,u="dark"===i?"#393939":"#e9e9e9";return o.a.createElement(a.a,{onChange:r,checked:n,uncheckedIcon:!1,checkedIcon:!1,offColor:u,onColor:"#047aff",offHandleColor:"#fff",onHandleColor:"#fff",handleDiameter:24,height:28,width:44,className:"rs",name:s})}))},id3I:function(t,e,n){"use strict";n.d(e,"a",(function(){return l})),n.d(e,"b",(function(){return d}));n("pNMO"),n("TeQF"),n("QWBl"),n("27RR"),n("07d7"),n("5s+n"),n("FZtP");var r=n("rePB"),o=n("o0o1"),i=n.n(o),a=(n("ls82"),n("HaE+")),s=n("YrXW");function u(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function c(t){for(var e=1;e=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(s&&u){if(this.prev=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),x(n),l}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;x(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:S(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=undefined),l}},t}(t.exports);try{regeneratorRuntime=r}catch(t){Function("r","regeneratorRuntime = r")(r)}},mrSG:function(t,e,n){"use strict";n.d(e,"b",(function(){return o})),n.d(e,"a",(function(){return i})),n.d(e,"d",(function(){return a})),n.d(e,"g",(function(){return s})),n.d(e,"c",(function(){return u})),n.d(e,"e",(function(){return c})),n.d(e,"f",(function(){return l}));var r=function(t,e){return(r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])})(t,e)};function o(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var i=function(){return(i=Object.assign||function(t){for(var e,n=1,r=arguments.length;n=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function u(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function c(){for(var t=[],e=0;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var c=Object(r.forwardRef)((function(t,e){var n=t.color,r=void 0===n?"currentColor":n,i=t.size,a=void 0===i?24:i,c=u(t,["color","size"]);return o.a.createElement("svg",s({ref:e,xmlns:"http://www.w3.org/2000/svg",width:a,height:a,viewBox:"0 0 24 24",fill:"none",stroke:r,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},c),o.a.createElement("polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2"}))}));c.propTypes={color:a.a.string,size:a.a.oneOfType([a.a.string,a.a.number])},c.displayName="Zap",e.a=c},"zZH+":function(t,e,n){t.exports={root:"cHbZy_rAHf",mono:"_2SNe_x81Ib",link:"LUI6m76ply"}},zouR:function(t,e,n){"use strict";n.d(e,"a",(function(){return i})),n.d(e,"d",(function(){return a})),n.d(e,"c",(function(){return s})),n.d(e,"b",(function(){return u}));n("07d7"),n("5s+n");var r=n("xaHF"),o=n("KGqP"),i=Object(r.unstable_createResource)((function(){return n.e(11).then(n.t.bind(null,"JVhT",7)).then((function(t){return t.default}))})),a={borderWidth:1,lineTension:0,pointRadius:0},s={responsive:!0,maintainAspectRatio:!0,title:{display:!1},legend:{display:!0,position:"top",labels:{fontColor:"#ccc",boxWidth:20}},tooltips:{enabled:!1,mode:"index",intersect:!1,animationDuration:100},hover:{mode:"nearest",intersect:!0},scales:{xAxes:[{display:!1,gridLines:{display:!1}}],yAxes:[{display:!0,gridLines:{display:!0,color:"#555",borderDash:[3,6],drawBorder:!1},ticks:{callback:t=>Object(o.a)(t)+"/s "}}]}},u=[{down:{backgroundColor:"rgba(176, 209, 132, 0.8)",borderColor:"rgb(176, 209, 132)"},up:{backgroundColor:"rgba(181, 220, 231, 0.8)",borderColor:"rgb(181, 220, 231)"}},{up:{backgroundColor:"rgb(98, 190, 100)",borderColor:"rgb(78,146,79)"},down:{backgroundColor:"rgb(160, 230, 66)",borderColor:"rgb(110, 156, 44)"}},{up:{backgroundColor:"rgba(94, 175, 223, 0.3)",borderColor:"rgb(94, 175, 223)"},down:{backgroundColor:"rgba(139, 227, 195, 0.3)",borderColor:"rgb(139, 227, 195)"}},{up:{backgroundColor:"rgba(242, 174, 62, 0.3)",borderColor:"rgb(242, 174, 62)"},down:{backgroundColor:"rgba(69, 154, 248, 0.3)",borderColor:"rgb(69, 154, 248)"}}]}},[[0,10,5,8]],[0,12,4,1,9,13,7,6,3,11]]); +//# sourceMappingURL=app.57466da82c6534ab0c59.js.map \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.9446db28fec78551ca86.js.LICENSE.txt b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.57466da82c6534ab0c59.js.LICENSE.txt similarity index 100% rename from package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.9446db28fec78551ca86.js.LICENSE.txt rename to package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.57466da82c6534ab0c59.js.LICENSE.txt diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.57466da82c6534ab0c59.js.map b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.57466da82c6534ab0c59.js.map new file mode 100644 index 0000000000..e70cf3a680 --- /dev/null +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/app.57466da82c6534ab0c59.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./node_modules/reselect/es/index.js","webpack:///./src/store/logs.js","webpack:///./node_modules/scheduler/cjs/scheduler.production.min.js","webpack:///./src/components/Input.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/react-switch/dist/react-switch.min.js","webpack:///./node_modules/warning/warning.js","webpack:///./node_modules/exenv/index.js","webpack:///./node_modules/react-modal/lib/helpers/safeHTMLElement.js","webpack:///./src/misc/utils.ts","webpack:///./src/components/Loading.module.css","webpack:///./node_modules/react-modal/lib/index.js","webpack:///./node_modules/@emotion/memoize/dist/memoize.browser.esm.js","webpack:///./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js","webpack:///./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./src/components/ContentHeader.js","webpack:///./node_modules/history/node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/history/index.js","webpack:///./node_modules/react-router/index.js","webpack:///./node_modules/react-router-dom/index.js","webpack:///./node_modules/react-feather/dist/icons/github.js","webpack:///./src/api/version.ts","webpack:///./src/components/about/About.tsx","webpack:///./src/store/index.js","webpack:///./src/misc/errors.js","webpack:///./src/components/Field.js","webpack:///./src/components/APIConfig.tsx","webpack:///./src/components/Modal.js","webpack:///./src/components/APIDiscovery.js","webpack:///./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack:///./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack:///./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack:///./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack:///./src/misc/sentry.js","webpack:///./src/components/SvgGithub.js","webpack:///./src/components/ErrorBoundaryFallback.js","webpack:///./src/components/ErrorBoundary.js","webpack:///./src/components/Loading.js","webpack:///./src/components/TrafficChart.js","webpack:///./src/components/TrafficNow.js","webpack:///./src/components/Home.js","webpack:///./src/components/Loading2.js","webpack:///./node_modules/react-feather/dist/icons/info.js","webpack:///./node_modules/react-icons/lib/esm/iconContext.js","webpack:///./node_modules/react-icons/lib/esm/iconBase.js","webpack:///./src/components/SideBar.js","webpack:///./node_modules/react-icons/fc/index.esm.js","webpack:///./src/components/StyleGuide.js","webpack:///./src/components/Root.js","webpack:///./src/app.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack:///./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack:///./src/api/proxies.js","webpack:///./src/store/proxies.tsx","webpack:///./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack:///./src/components/TrafficNow.module.css","webpack:///./src/api/traffic.js","webpack:///./src/misc/pretty-bytes.js","webpack:///./src/store/modals.js","webpack:///./node_modules/recoil/dist/recoil.production.js","webpack:///./node_modules/object-assign/index.js","webpack:///./src/misc/storage.js","webpack:///./src/store/app.js","webpack:///./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack:///./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack:///./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack:///./src/components/APIConfig.module.css","webpack:///./src/components/Button.module.css","webpack:///./node_modules/scheduler/index.js","webpack:///./node_modules/react-modal/lib/components/ModalPortal.js","webpack:///./node_modules/react-query/dist/react-query.mjs","webpack:///./node_modules/react-modal/lib/helpers/scopeTab.js","webpack:///./src/components/Field.module.css","webpack:///./src/api/connections.ts","webpack:///./src/components/ErrorBoundaryFallback.module.css","webpack:///./node_modules/react-modal/lib/helpers/portalOpenInstances.js","webpack:///./src/components/ToggleSwitch.js","webpack:///./node_modules/@hsjs/react-cache/cjs/react-cache.production.min.js","webpack:///./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack:///./node_modules/react-modal/lib/helpers/focusManager.js","webpack:///./src/components/SvgYacd.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/immer/dist/immer.esm.js","webpack:///./src/components/StateProvider.js","webpack:///./src/components/Input.module.css","webpack:///./node_modules/react-modal/lib/helpers/bodyTrap.js","webpack:///./src/components/ContentHeader.module.css","webpack:///./src/components/ToggleSwitch.module.css","webpack:///./node_modules/react-modal/lib/helpers/ariaAppHider.js","webpack:///./src/misc/request-helper.ts","webpack:///./src/components/Modal.module.css","webpack:///./node_modules/react-modal/lib/helpers/tabbable.js","webpack:///./node_modules/framesync/dist/framesync.es.js","webpack:///./node_modules/style-value-types/dist/style-value-types.es.js","webpack:///./node_modules/popmotion/dist/popmotion.es.js","webpack:///./node_modules/framer-motion/dist/framer-motion.es.js","webpack:///./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./src/hooks/useLineChart.js","webpack:///./src/components/Loading2.module.css","webpack:///./node_modules/recoil/dist/index.js","webpack:///./node_modules/react-modal/lib/helpers/classList.js","webpack:///./src/components/Home.module.css","webpack:///./src/components/SwitchThemed.js","webpack:///./src/api/configs.ts","webpack:///./node_modules/clsx/dist/clsx.m.js","webpack:///./src/components/SideBar.module.css","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./src/components/Button.tsx","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/react-switch/index.js","webpack:///./node_modules/react-modal/lib/components/Modal.js","webpack:///./src/components/shared/Basic.module.css","webpack:///./src/components/APIDiscovery.module.css","webpack:///./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack:///./src/components/shared/Basic.js","webpack:///./src/components/Root.module.css","webpack:///./src/components/SvgYacd.module.css","webpack:///./src/store/configs.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/@hsjs/react-cache/index.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/react-feather/dist/icons/zap.js","webpack:///./src/components/about/About.module.css","webpack:///./src/misc/chart.js"],"names":["defaultEqualityCheck","a","b","areArgumentsShallowlyEqual","equalityCheck","prev","next","length","i","getDependencies","funcs","dependencies","Array","isArray","every","dep","dependencyTypes","map","join","Error","createSelector","memoize","_len","arguments","memoizeOptions","_key","_len2","_key2","recomputations","resultFunc","pop","memoizedResultFunc","apply","undefined","concat","selector","params","push","resetRecomputations","createSelectorCreator","func","lastArgs","lastResult","getLogs","s","logs","getTail","tail","getSearchText","searchText","getLogsForDisplay","x","LogSize","filter","r","payload","toLowerCase","indexOf","updateSearchText","text","dispatch","appendLog","log","getState","tailCurr","initialState","f","g","h","k","l","Object","defineProperty","exports","value","window","MessageChannel","p","q","t","unstable_now","setTimeout","u","Date","now","clearTimeout","unstable_forceFrameRate","w","performance","y","z","console","A","cancelAnimationFrame","requestAnimationFrame","error","B","C","D","E","F","G","Math","floor","H","I","port2","port1","onmessage","postMessage","J","c","d","e","K","L","M","m","n","v","sortIndex","id","N","O","P","Q","R","S","T","U","V","callback","startTime","expirationTime","W","X","priorityLevel","Y","Z","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_NormalPriority","unstable_IdlePriority","unstable_LowPriority","unstable_runWithPriority","unstable_next","unstable_scheduleCallback","delay","timeout","unstable_cancelCallback","unstable_wrapCallback","this","unstable_getCurrentPriorityLevel","unstable_shouldYield","unstable_requestPaint","unstable_continueExecution","unstable_pauseExecution","unstable_getFirstCallbackNode","unstable_Profiling","useState","React","useRef","useEffect","useCallback","Input","props","className","s0","input","SelfControlledInput","restProps","internalValue","setInternalValue","refValue","current","onChange","target","propTypes","PropTypes","oneOfType","string","number","type","name","placeholder","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","module","shim","propName","componentName","location","propFullName","secret","err","getShim","isRequired","ReactPropTypes","array","bool","object","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","shape","exact","checkPropTypes","_extends","assign","o","prototype","hasOwnProperty","call","uncheckedIcon","createElement","viewBox","height","width","style","position","top","fill","fillRule","checkedIcon","convertShorthandColor","getBackgroundColor","parseInt","substr","round","toString","createBackgroundColor","ReactSwitch","checked","handleDiameter","max","state","bind","__proto__","create","constructor","componentDidUpdate","setState","focus","min","preventDefault","button","clientX","addEventListener","removeEventListener","$","touches","render","disabled","offColor","onColor","offHandleColor","onHandleColor","boxShadow","activeBoxShadow","objectWithoutProperties","display","textAlign","opacity","direction","borderRadius","WebkitTransition","MozTransition","transition","touchAction","WebkitTapHighlightColor","WebkitUserSelect","MozUserSelect","msUserSelect","userSelect","margin","background","cursor","pointerEvents","right","transform","outline","border","onClick","onMouseDown","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","role","clip","overflow","padding","ref","onFocus","onBlur","onKeyUp","Component","defaultProps","default","warning","canUseDOM","document","ExecutionEnvironment","canUseWorkers","Worker","canUseEventListeners","attachEvent","canUseViewport","screen","obj","_exenv","EE","__esModule","SafeHTMLElement","HTMLElement","debounce","fn","timeoutId","args","trimTrailingSlash","replace","_Modal","_Modal2","reactPropsRegex","index","cache","arg","prop","test","charCodeAt","_unsupportedIterableToArray","minLen","slice","from","ContentHeader","title","root","h1","memo","source","key","Pop","Push","Replace","returnValue","forEach","random","pathname","search","hash","static","outlet","route","children","action","navigator","Provider","basename","path","caseSensitive","go","startsWith","reduce","split","some","sort","end","reduceRight","endsWith","RegExp","aa","match","decodeURIComponent","ba","keys","idx","usr","retry","querySelector","getAttribute","href","defaultView","history","replaceState","createHref","pushState","back","forward","listen","block","createHashHistory","to","useHref","defaultPrevented","metaKey","altKey","ctrlKey","shiftKey","activeClassName","activeStyle","Boolean","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","GitHub","_ref","_ref$color","color","_ref$size","size","rest","xmlns","stroke","strokeWidth","strokeLinecap","strokeLinejoin","displayName","fetchVersion","endpoint","apiConfig","json","getURLAndInit","url","init","fetch","res","ok","Version","link","version","mono","rel","About","connect","getClashAPIConfig","useQuery","suspense","data","__VERSION__","app","modals","configs","proxies","actions","selectChartStyleIndex","updateAppConfig","updateCollapsibleIsOpen","proxiesActions","errors","message","detail","Field","label","valueOnChange","labelClassName","cx","floatAbove","htmlFor","baseURL","setBaseURL","setSecret","errMsg","setErrMsg","userTouchedFlagRef","contentEl","handleInputOnChange","onConfirm","verify","then","ret","updateClashAPIConfig","handleContentOnKeyDown","onKeyDown","header","icon","SvgYacd","body","hostnamePort","footer","Button","URL","fetchConfigs","status","statusText","ModalAPIConfig","isOpen","onRequestClose","overlayClassName","otherProps","contentCls","content","overlayCls","overlay","code","closeApiConfigModal","closeModal","Modal","shouldCloseOnOverlayClick","shouldCloseOnEsc","container","_classCallCheck","instance","Constructor","TypeError","_defineProperties","descriptor","enumerable","configurable","writable","_createClass","protoProps","staticProps","_assertThisInitialized","self","ReferenceError","_setPrototypeOf","setPrototypeOf","_inherits","subClass","superClass","_typeof","Symbol","iterator","_possibleConstructorReturn","_getPrototypeOf","getPrototypeOf","Sentry","dsn","getSentry","SvgGithub","ErrorBoundaryFallback","yacd","ErrorBoundary","sentry","loadSentry","showReportDialog","_info","Loading","loading","pulse","chartWrapperStyle","maxWidth","selectedChartStyleIndex","getSelectedChartStyleIndex","Chart","chartJSResource","read","hostname","port","traffic","fetchData","useMemo","labels","datasets","commonDataSetProps","chartStyles","up","down","useLineChart","upStr","downStr","speed","setSpeed","subscribe","prettyBytes","useSpeed","upTotal","dlTotal","connNumber","downloadTotal","uploadTotal","connections","connAPI","useConnection","TrafficNow","Home","chart","fallback","TrafficChart","lo","animate","c0","c1","Info","cy","x1","y1","x2","y2","DefaultContext","attr","IconContext","__assign","__rest","GenIcon","IconBase","Tree2Element","tree","tag","child","elem","conf","computedSize","svgProps","Consumer","icons","activity","globe","command","file","settings","SideBarRow","isActive","iconId","labelText","Comp","row","rowActive","pages","MoonA","initial","rotate","duration","Sun","scale","theme","getTheme","useLocation","switchThemeHooked","switchTheme","logoPlaceholder","rows","iconWrapper","themeSwitchContainer","noop","paneStyle","optionsRule","Pane","SwitchExample","onoff","setonoff","handleChange","useToggle","SwitchThemed","PureComponent","Connections","lazy","Config","Logs","Proxies","Rules","routes","Root","StateProvider","Loading2","rootEl","getElementById","setAppElement","createRoot","ReactDOM","fetchProxies","config","requestToSwitchProxy","name1","name2","fullURL","method","JSON","stringify","requestDelayForProxy","latencyTestUrl","fetchProviderProxies","providers","updateProviderByName","options","healthcheckProviderByName","groupNames","showModalClosePrevConns","NonProxyTypes","getProxies","getDelay","getProxyGroupNames","getProxyProviders","proxyProviders","getDangleProxyNames","dangleProxyNames","getShowModalClosePrevConns","Promise","all","proxiesAPI","proxiesData","providersData","formatProxyProviders","providerProxies","retrieveGroupNamesFrom","proxyNames","delayPrev","delayNext","healthcheckProviderByNameInternal","groupName","exceptionItemName","idsToClose","conn","chains","catch","switchProxyImpl","itemName","getAutoCloseOldConns","closePrevConns","closeModalClosePrevConns","switchTo","chain","childKey","unshift","resolveChain","closeGroupConns","switchProxy","requestDelayForProxyOnce","getLatencyTestUrl","requestDelayAll","globalAll","group","providersInput","provider","vehicleType","proxiesArr","names","j","proxy","requestDelayForProxies","works","closePrevConnsAndTheModal","switchProxyCtx","proxyFilterText","atom","asyncGeneratorStep","gen","resolve","reject","_next","_throw","info","done","_asyncToGenerator","wsState","textDecoder","TextDecoder","subscribers","appendData","getMinutes","getSeconds","shift","listener","splice","fetched","decoded","parseAndAppend","parse","buildWebSocketURL","ws","WebSocket","_ev","response","pump","reader","str","decode","stream","splits","lastSplit","getReader","fetchDataWithFetch","event","UNITS","exponent","log10","Number","pow","toPrecision","openModal","modalName","_interopDefault","ex","react","reactDom","_defineProperty","AbstractRecoilValue","newKey","RecoilState","RecoilValueReadOnly","Recoil_RecoilValue","isRecoilValue","Recoil_RecoilValue_1","Recoil_RecoilValue_2","Recoil_RecoilValue_3","Recoil_RecoilValue_4","getCjsExportFromNamespace","require$$2","freeze","DefaultValue","DEFAULT_VALUE","RecoilValueNotReady","super","nodes","Map","NodeMissingError","Recoil_Node","registerNode","has","set","getNode","get","Recoil_Queue","Recoil_CopyOnWrite","setByAddingToSet","Set","add","setByDeletingFromSet","delete","mapBySettingInMap","mapByUpdatingInMap","updater","mapByDeletingFromMap","Recoil_Tracing","mapByDeletingFromMap$1","mapBySettingInMap$1","mapByUpdatingInMap$1","setByAddingToSet$1","getNode$1","emptyMap","emptySet","ReadOnlyRecoilValueError","getNodeLoadable","store","subscriptionID","Recoil_FunctionalCore","peekNodeLoadable","setNodeValue","newValue","newState","writtenNodes","setUnvalidatedAtomValue","atomValues","nonvalidatedAtoms","dirtyAtoms","subscribeComponentToNode","subID","nodeToComponentSubscriptions","subsForAtom","fireNodeSubscriptions","updatedNodes","when","_store$getState$nextT","nextTree","currentTree","dependentNodes","visitedNodes","visitingNodes","_state$nodeToNodeSubs","subscribedNodes","nodeToNodeSubscriptions","downstreamNode","_state$nodeToComponen","_debugName","cb","queuedComponentCallbacks","resolvers","suspendedComponentResolvers","clear","detectCircularDependencies","stack","leaf","downstream","reverse","Recoil_mapMap","result","getNodeLoadable$1","peekNodeLoadable$1","setNodeValue$1","setUnvalidatedAtomValue$1","subscribeComponentToNode$1","RecoilValueNotReady$1","AbstractRecoilValue$1","RecoilState$1","RecoilValueReadOnly$1","Recoil_RecoilValueInterface","valueFromValueOrUpdater","valueOrUpdater","_storeState$nextTree","storeState","contents","getRecoilValueAsLoadable","loadable","setRecoilValue","setUnvalidatedRecoilValue","subscribeToRecoilValue","releaseFn","release","makeEmptyTreeState","transactionMetadata","nodeDeps","makeStoreState","treeState","transactionSubscriptions","Recoil_State","makeEmptyStoreState","DEFAULT_VALUE$1","getRecoilValueAsLoadable$1","setRecoilValue$1","valueFromValueOrUpdater$1","makeEmptyTreeState$1","makeStoreState$1","Snapshot","recoilValue","_store","getLoadable","toPromise","mapper","mutableSnapshot","MutableSnapshot","cloneSnapshot","getStore_INTERNAL","async","replacer","subscribeToTransactions","addTransactionMetadata","cloneTreeState","recoilState","newValueOrUpdater","Recoil_Snapshot","freshSnapshot","Recoil_Snapshot_1","Recoil_Snapshot_2","Recoil_Snapshot_3","Recoil_Snapshot_4","Recoil_nullthrows","require$$6","useContext","fireNodeSubscriptions$1","setNodeValue$2","setUnvalidatedAtomValue$2","freshSnapshot$1","makeEmptyStoreState$1","makeStoreState$2","notInAContext","defaultStore","startNextTreeIfNeeded","AppContext","createContext","useStoreRef","Batcher","storeRef","_","setNotifyBatcherOfChange","sub","nextID","Recoil_RecoilRoot_react","RecoilRoot","initializeState_DEPRECATED","initializeState","notifyBatcherOfChange","replaced","metadata","setUnvalidatedAtomValues","snapshot","Recoil_differenceSets","setsWithValuesToRemove","FIRST","otherSet","useEffect$1","useRef$1","useState$1","peekNodeLoadable$2","setNodeValue$3","DEFAULT_VALUE$2","getNode$2","nodes$1","useStoreRef$1","AbstractRecoilValue$2","getRecoilValueAsLoadable$2","setRecoilValue$2","setUnvalidatedRecoilValue$1","subscribeToRecoilValue$1","valueFromValueOrUpdater$2","Snapshot$1","cloneSnapshot$1","setByAddingToSet$2","useInterface","forceUpdate","recoilValuesUsed","previousSubscriptions","subscriptions","unsubscribeFrom","updateState","_state","subs","useSetRecoilState","useRecoilValueLoadable","useRecoilValue","getRecoilValue","getRecoilValueLoadable","getRecoilState","getRecoilStateLoadable","getSetRecoilState","getResetRecoilState","useTransactionSubscription","externallyVisibleAtomValuesInState","persistedAtomContentsValues","Recoil_filterMap","_node$options","persistence","persistence_UNSTABLE","maps","nextKey","Recoil_mergeMaps","useGotoRecoilSnapshot","unstable_batchedUpdates","prevState","nextState","updatedKeys","_prevState$atomValues","_nextState$atomValues","Sentinel","SENTINEL","Recoil_Hooks","useRecoilCallback","deps","gotoSnapshot","reset","condition","Recoil_invariant","useRecoilState","recoilInterface","useRecoilStateLoadable","useResetRecoilState","useRecoilInterface","useSnapshotWithStateChange_DEPRECATED","transaction","subsByAtom","useTreeStateClone_DEPRECATED","updatedAtoms","first","Recoil_intersectSets","useTransactionSubscription_DEPRECATED","useTransactionObservation_DEPRECATED","previousState","previousAtomValues","atomInfo","_node$options$persist","_node$options2","_node$options2$persis","_node$options$persist2","_node$options3","_node$options3$persis","backButton","modifiedAtoms","useRecoilTransactionObserver","previousSnapshot","useRecoilSnapshot","setSnapshot","useGoToSnapshot_DEPRECATED","useSetUnvalidatedAtomValues","values","Recoil_isPromise","loadableAccessors","loadableWithPromise","loadableWithValue","loadableWithError","promise","Recoil_Loadable","loadableLoading","loadableAll","inputs","find","Recoil_deepFreezeValue","deepFreezeValue","$$typeof","_ownerDocument","_doc$defaultView","ownerDocument","Node","nodeType","nodeName","Recoil_isNode","isFrozen","seal","LEAF","emptyMap$1","ArrayKeyedMap","existing","_base","entries","ks","_map$get","answer","recurse","level","prefix","Recoil_ArrayKeyedMap","Recoil_cacheWithReferenceEquality","Recoil_everySet","context","entry","mapBySettingInMap$2","mapByUpdatingInMap$2","setByAddingToSet$3","setByDeletingFromSet$1","detectCircularDependencies$1","getNodeLoadable$2","setNodeValue$4","loadableWithError$1","loadableWithPromise$1","loadableWithValue$1","DEFAULT_VALUE$3","RecoilValueNotReady$2","registerNode$1","startPerfBlock","startPerfBlock$1","_id","isRecoilValue$1","emptySet$2","cacheKeyFromDepValues","depValues","Recoil_selector","cacheImplementation_UNSTABLE","cacheImplementation","getFromCache","_state$nodeDeps$get","currentDeps","cacheKey","depKey","cached","newDepValues","_state$nodeDeps$get2","newStateFromEvaluate","endPerfBlock","output","finally","errorOrDepPromise","asyncState","newAsyncState","oldDeps","newDeps","one","two","addedDeps","removedDeps","upstreamNode","newCacheKey","dangerouslyAllowMutability","myGet","setRecoilState","written","loadableWithValue$2","DEFAULT_VALUE$4","DefaultValue$1","registerNode$2","isRecoilValue$2","mapByDeletingFromMap$2","mapBySettingInMap$3","setByAddingToSet$4","Recoil_atom","optionsDefault","restOptions","base","validator","storedValue","baseValue","nonvalidatedValue","validatedValue","Recoil_stableStringify","opt","allowFunctions","includes","String","_JSON$stringify","toJSON","localeCompare","Recoil_cacheWithValueEquality","nextIndex","Recoil_selectorFamily","_options$cacheImpleme","_options$cacheImpleme2","selectorCache","cacheImplementationForParams_UNSTABLE","_stableStringify","_options$cacheImpleme3","cachedSelector","myKey","callbacks","myCacheImplementation","newSelector","ParameterizedAtomTaggedValue_DEPRECATED","DEFAULT_VALUE$5","DefaultValue$2","isSuperset","setA","setB","pick","chosenKeys","mapPersistenceSettings_DEPRECATED","passthrough","acc","constantSelector","constant","throwingSelector","loadableWithError$2","loadableWithPromise$2","loadableWithValue$3","concurrentRequests","results","exceptions","isError","exp","unwrapDependencies","getOwnPropertyNames","wrapResults","out","wrapLoadables","exception","Recoil_WaitFor","waitForNone","waitForAny","waitForAll","noWait","dependency","DefaultValue$3","RecoilRoot$1","isRecoilValue$3","useGotoRecoilSnapshot$1","useRecoilCallback$1","useRecoilSnapshot$1","useRecoilState$1","useRecoilStateLoadable$1","useRecoilTransactionObserver$1","useRecoilValue$1","useRecoilValueLoadable$1","useResetRecoilState$1","useSetRecoilState$1","useSetUnvalidatedAtomValues$1","useTransactionObservation_DEPRECATED$1","noWait$1","waitForAll$1","waitForAny$1","waitForNone$1","Recoil_index","atomFamily","atomCache","legacyAtomOptions","legacyAtom","atomFamilyDefault","param","legacyValue","upgradedValue","parameter","parameterKeys","entryParameterKeys","entryMap","contextOrSubcontext","cachedAtom","newAtom","selectorFamily","constSelector","errorSelector","readOnlySelector","useRecoilTransactionObserver_UNSTABLE","useTransactionObservation_UNSTABLE","useSetUnvalidatedAtomValues_UNSTABLE","Recoil_index_1","Recoil_index_2","Recoil_index_3","Recoil_index_4","Recoil_index_5","Recoil_index_6","Recoil_index_7","Recoil_index_8","Recoil_index_9","Recoil_index_10","Recoil_index_11","Recoil_index_12","Recoil_index_13","Recoil_index_14","Recoil_index_15","Recoil_index_16","Recoil_index_17","Recoil_index_18","Recoil_index_19","Recoil_index_20","Recoil_index_21","Recoil_index_22","Recoil_index_23","Recoil_index_24","Recoil_index_25","Recoil_index_26","propIsEnumerable","toObject","val","test1","test2","fromCharCode","test3","letter","shouldUseNative","symbols","saveState","serialized","localStorage","setItem","selectedClashAPIConfigIndex","clashAPIConfigs","getCollapsibleIsOpen","collapsibleIsOpen","getProxySortBy","proxySortBy","getHideUnavailableProxies","hideUnavailableProxies","autoCloseOldConns","saveStateDebounced","clashAPIConfig","bodyElement","setTheme","classList","remove","clearStorage","removeItem","clearState","reload","defaultState","getItem","loadState","query","collector","qs","encodeURIComponent","parseConfigQueryString","_slicedToArray","arr","_arr","_n","_d","_e","_s","_i","unsupportedIterableToArray","defineProperties","_react","_react2","_interopRequireDefault","_propTypes2","focusManager","_interopRequireWildcard","_scopeTab2","ariaAppHider","_safeHTMLElement2","_portalOpenInstances2","newObj","CLASS_NAMES","ariaHiddenInstances","ModalPortal","_Component","_this","setOverlayRef","overlayRef","setContentRef","contentRef","afterClose","_this$props","appElement","ariaHideApp","htmlOpenClassName","bodyOpenClassName","getElementsByTagName","show","shouldFocusAfterRender","shouldReturnFocusAfterClose","returnFocus","teardownScopedFocus","popWithoutFocus","onAfterClose","deregister","open","beforeOpen","afterOpen","beforeClose","closeTimer","setupScopedFocus","markForFocusLater","onAfterOpen","overlayEl","close","closeTimeoutMS","closeWithTimeout","closeWithoutTimeout","focusContent","contentHasFocus","closesAt","handleKeyDown","keyCode","stopPropagation","requestClose","handleOverlayOnClick","shouldClose","ownerHandlesClose","handleContentOnMouseUp","handleOverlayOnMouseDown","handleContentOnClick","handleContentOnMouseDown","shouldBeClosed","activeElement","contains","buildClassName","which","additional","classNames","attributesFromObject","items","moveFromContentToOverlay","prevProps","_props","hide","register","_props2","defaultStyles","contentStyles","overlayStyles","tabIndex","onMouseUp","contentLabel","aria","testId","QueryStatus","CancelledError","_uid","isServer","Console","warn","functionalUpdate","stableStringifyReplacer","isPlainObject","isValidTimeout","Infinity","isDocumentVisible","visibilityState","isOnline","onLine","getQueryArgs","queryKey","queryFn","hasObjectPrototype","ctor","prot","getStatusProps","isLoading","isSuccess","Success","isIdle","Idle","createSetHandler","removePreviousHandler","DEFAULT_CONFIG","queries","cacheTime","enabled","notifyOnStatusChange","queryKeySerializerFn","arrayQueryKey","queryHash","_unused","refetchOnMount","refetchOnReconnect","refetchOnWindowFocus","retryDelay","attemptIndex","staleTime","structuralSharing","getDefaultedQueryConfig","queryCacheConfig","contextConfig","configOverrides","shared","_await","direct","_empty","QueryObserver","queryCache","initialFetchedCount","refetch","fetchMore","updateQuery","_proto","started","updateListener","currentQuery","subscribeObserver","forceFetchOnMount","optionalFetch","updateTimers","unsubscribe","clearTimers","unsubscribeObserver","updateConfig","prevConfig","updated","updateStaleTimeout","refetchInterval","updateRefetchInterval","getCurrentQuery","getCurrentResult","currentResult","fetchMoreVariable","_this5","recover","_catch","isFetched","isStale","observers","notify","_this$updateListener","_this6","clearStaleTimeout","timeElapsed","updatedAt","timeUntilStale","staleTimeoutId","_this7","clearRefetchInterval","refetchIntervalId","setInterval","refetchIntervalInBackground","clearInterval","updateResult","previousQueryResult","isPreviousData","keepPreviousData","isStaleByTime","initialStale","canFetchMore","failureCount","isFetchedAfterMount","fetchedCount","isFetching","isFetchingMore","prevQuery","initialData","newQuery","buildQuery","onQueryUpdate","prevResult","onSuccess","onSettled","onError","_await$1","ActionType","_catch$1","_invoke","_async","_empty$1","Query","initialStatus","initialFetched","hasMorePages","getDefaultState","scheduleGc","_action$updatedAt","throwInErrorBoundary","queryReducer","observer","notifyGlobalListeners","clearGcTimeout","gcTimeout","cancel","_this$cancelFetch","cancelFetch","continue","_this$continueFetch","continueFetch","clearTimersObservers","setData","_this$config$isDataEq","_this$config","prevData","replaceEqualDeep","aSize","bItems","bSize","copy","equalItems","isDataEqual","removeQuery","destroy","isEnabled","onInteraction","staleObserver","isTransportCancelable","_this3","throwOnError","previous","queryFnParamsFilter","infinite","startInfiniteFetch","_this7$startInfiniteF","startFetch","_this7$startFetch","_options","tryFetchData","prevPages","fetchPage","prepend","lastPage","getLastPage","getFetchMore","page","_this13","outerResolve","outerReject","continueLoop","cancelTransport","resolved","run","promiseOrValue","_promiseOrValue","_awaitIgnored","continueResolve","_empty$2","_awaitIgnored$1","_catch$2","_invoke$1","QueryCache","globalListeners","queriesArray","getQueries","getDefaultConfig","defaultConfig","_this2","removeQueries","predicate","predicateFn","_queryKey","deepIncludes","getQuery","getQueryData","_this$getQuery","cancelQueries","invalidateQueries","_ref2","_ref2$refetchActive","refetchActive","_ref2$refetchInactive","refetchInactive","resetErrorBoundaries","userQueryKey","queryConfig","_ref3","frozen","prefetchQuery","_getQueryArgs","_queryKey2","_config2","configWithoutRetry","force","setQueryData","defaultQueryCache","makeQueryCache","queryCaches","onVisibilityOrOnlineChange","setFocusHandler","handleFocus","_window","setOnlineHandler","handleOnline","queryCacheContext","useQueryCache","configContext","useContextConfig","useIsMounted","mountedRef","isMounted","useSafeState","_React$useState","useDefaultedMutationConfig","contextQueryCache","mutations","getDefaultedMutationConfig","_await$2","ActionType$1","getDefaultState$1","mutationReducer","useMutation","mutationFn","_React$useReducer","useReducer","unsafeDispatch","latestMutationRef","latestMutationFnRef","latestConfigRef","mutate","variables","mutateConfig","latestConfig","mutationId","snapshotValue","isLatest","_catch$3","onMutate","_latestConfig$onMutat","latestMutationFn","useErrorBoundary","useBaseQuery","useDefaultedQueryConfig","rerender","observerRef","firstRender","tabbable","_tabbable2","head","checkSafari","exec","userAgent","_tabbable","closeAllConnections","fetchConns","closeConnById","portalOpenInstances","PortalOpenInstances","openInstance","openInstances","emit","eventType","subscriber","ToggleSwitch","idxSelected","getPortionPercentage","sliderStyle","left","slider","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","readContext","onDelete","update","access","setLimit","unstable_createResource","preload","unstable_setGlobalCacheLimit","componentWillMount","getDerivedStateFromProps","componentWillReceiveProps","nextProps","componentWillUpdate","__reactInternalSnapshotFlag","__reactInternalSnapshot","getSnapshotBeforeUpdate","polyfill","isReactComponent","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate","newApiName","maybeSnapshot","__suppressDeprecationWarning","handleBlur","focusLaterElements","toFocus","modalElement","detachEvent","needToFocus","faceClasName","nn","tn","getOwnPropertyDescriptor","rn","en","Proxy","revocable","revoke","Reflect","for","ownKeys","getOwnPropertyDescriptors","deleteProperty","un","useProxies","setUseProxies","autoFreeze","setAutoFreeze","produce","produceWithPatches","createDraft","finishDraft","applyPatches","op","an","cn","immer","StateContext","DispatchContext","ActionsContext","useStoreActions","stateRef","process","actionId","stateNext","boundActions","bindActions","bindAction","mapStateToProps","MemoComponent","mapped","_portalOpenInstances","before","after","instances","setAttribute","cloneNode","firstChild","insertBefore","lastChild","appendChild","parentElement","removeChild","assertNodeList","setElement","useElement","_safeHTMLElement","el","querySelectorAll","globalElement","validateElement","removeAttribute","documentNotReadyOrSSRTesting","resetForTesting","_warning","_warning2","nodeList","headersCommon","genCommonHeaders","headers","protocol","tabbableNode","hidesContents","zeroSize","offsetWidth","offsetHeight","innerHTML","getComputedStyle","getPropertyValue","scrollWidth","scrollHeight","focusable","isTabIndexNotNaN","parentNode","visible","isTabIndexNaN","isNaN","prevTime","onNextFrame","timestamp","timeToCall","defaultElapsed","useDefaultElapsed","willRunNextFrame","delta","stepsOrder","setWillRunNextFrame","willRun","steps","setRunNextFrame","processToRun","processToRunNextFrame","numThisFrame","isProcessing","cancelled","toKeepAlive","renderStep","WeakSet","indexOfCallback","frame","_a","process_1","schedule","keepAlive","immediate","addToCurrentBuffer","buffer","sync","step","startLoop","cancelSync","processStep","stepId","processFrame","getFrameData","clamp","sanitize","toFixed","floatRegex","colorRegex","singleColorRegex","parseFloat","alpha","createUnitType","unit","degrees","percent","px","vh","vw","progressPercentage","clampRgbUnit","isRgba","red","isHsla","hue","splitColorValues","terms","valuesArray","substring","lastIndexOf","getValueFromFunctionString","rgbUnit","isColorString","colorType","rgba","green","blue","_b","alpha$1","rgbaTemplate","hsla","saturation","lightness","hslaTemplate","hex","convertNumbersToZero","complex","numValues","foundNumbers","foundColors","parsed","createTransformer","template","token","numColors","numNumbers","getAnimatableNone","parsedTarget","targetTransformer","spring","_c","velocity","stiffness","_f","damping","_g","mass","_h","restSpeed","restDelta","resolveSpring","zero","resolveVelocity","createSpring","initialVelocity","initialDelta","dampingRatio","sqrt","angularFreq","abs","envelope","expoDecay","sin","cos","dampedAngularFreq_1","sinh","cosh","isBelowVelocityThreshold","isBelowDisplacementThreshold","flipTarget","needsInterpolation","_t","toFromDifference","mix","progress","mixLinearColor","fromExpo","toExpo","colorTypes","getColorType","notAnimatable","mixColor","fromColorType","toColorType","fromColor","toColor","blended","mixFunc","zeroPoint","isNum","combineFunctions","pipe","transformers","getMixer","origin","mixComplex","mixArray","blendValue","fromThis","mixObject","analyse","numRGB","numHSL","originStats","targetStats","mixNumber","createMixers","ease","customMixer","mixers","mixerFactory","numMixers","mixer","easingFunction","interpolate","isClamp","inputLength","interpolator","fastInterpolate","lastInputIndex","mixerIndex","foundMixerIndex","progressInRange","slowInterpolate","reverseEasing","easing","mirrorEasing","createExpoIn","power","createBackIn","createAnticipate","backEasing","linear","easeIn","easeOut","easeInOut","circIn","acos","circOut","circInOut","backIn","backOut","backInOut","anticipate","bounceOut","p2","bounceIn","bounceInOut","defaultEasing","keyframes","offset","times","convertOffsetToTimes","_value","defaultOffset","createInterpolator","decay","timeConstant","modifyTarget","amplitude","ideal","types","loopElapsed","elapsed","framesync","passTimestamp","start","stop","driverControls","latest","interpolateFromNumber","autoplay","driver","repeat","repeatMax","repeatType","_j","repeatDelay","onPlay","onStop","onComplete","onRepeat","onUpdate","repeatCount","computedDuration","isComplete","isForwardPlayback","animator","detectAnimationFromOptions","animation","reverseElapsed","hasRepeatDelayElapsed","velocityPerSecond","frameDuration","currentAnimation","bounceStiffness","bounceDamping","isOutOfBounds","boundaryNearest","startAnimation","startSpring","prev_1","current_1","boundary_1","heading_1","radiansToDegrees","radians","PI","angle","atan2","applyOffset","hasReceivedFrom","identity","createAttractor","alterDisplacement","displacement","springModifiedDisplacement","attract","attractExpo","degreesToRadians","isPoint","point","isPoint3D","distance1D","distance","xDelta","yDelta","zDelta","pointFromVector","toDecimal","num","precision","smoothFrame","prevValue","nextValue","smoothing","smooth","strength","previousValue","lastUpdated","currentFramestamp","timeDelta","snap","points","i_1","numPoints_1","lastDistance","velocityPerFrame","xps","wrap","rangeSize","a1","a2","calcBezier","getSlope","cubicBezier","mX1","mY1","mX2","mY2","sampleValues","Float32Array","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","expanded","rounded","ceil","isRefObject","SubscriptionManager","handler","e_1","e_1_1","return","MotionValue","updateSubscribers","renderSubscribers","canTrackVelocity","updateAndNotify","postRender","scheduleVelocityCheck","velocityCheck","subscription","clearListeners","onRenderRequest","attach","passiveEffect","getPrevious","getVelocity","stopAnimation","clearAnimation","isAnimating","motionValue","VisualElement","parent","valueSubscriptions","triggerRender","mount","unmount","externalRef","rootParent","treePath","depth","hasValue","addValue","removeValue","setSingleStaticValue","subscribeToValue","getValue","defaultValue","forEachValue","getInstance","setStaticValues","scheduleRender","scheduleUpdateLayoutDelta","preRender","updateLayoutDelta","unsubscribeOnChange","unsubscribeOnRender","removeFromParent","convertBoundingBoxToAxisBox","bottom","copyAxisBox","box","zeroDelta","translate","originPoint","defaultValueTypes","backgroundColor","outlineColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderWidth","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","radius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","maxHeight","paddingTop","paddingRight","paddingBottom","paddingLeft","marginTop","marginRight","marginBottom","marginLeft","rotateX","rotateY","rotateZ","scaleX","scaleY","scaleZ","skew","skewX","skewY","translateX","translateY","translateZ","perspective","transformPerspective","originX","originY","originZ","zIndex","fillOpacity","strokeOpacity","numOctaves","dimensionValueTypes","testValueType","findDimensionValueType","valueTypes","findValueType","getDefaultValueType","getValueAsType","transformAxes","boxDistortingKeys","transformProps","sortTransformProps","operationKey","isDistorting","axesKey","transformPropSet","isTransformProp","transformOriginProps","isTransformOriginProp","translateAlias","buildLayoutProjectionTransform","treeScale","identityProjection","isCSSVariable","isCSSVariable$1","cssVariableRegex","getVariableValue","parseCSSVariable","pixelsToPercent","pixels","axis","borderCorrectionDefinition","viewportBox","valueScaleCorrection","applyTo","_viewportBox","original","containsCSSVariables","cssVariables","shadow","xScale","yScale","averageScale","cssVariable","buildHTMLStyles","vars","transformOrigin","transformKeys","isLayoutProjectionEnabled","deltaFinal","targetBox","enableHardwareAcceleration","transformTemplate","allowTransformNone","hasTransform","hasTransformOrigin","transformIsNone","valueType","valueAsType","bucket","corrected","transformString","numTransformKeys","buildBoxDistortingTransforms","trim","buildLayoutProjectionTransformOrigin","transformIsDefault","transformHasZ","buildTransform","buildTransformOrigin","resetAxis","originAxis","scalePoint","applyPointDelta","boxScale","applyAxisDelta","applyBoxDelta","applyAxisTransforms","final","transforms","scaleKey","originKey","axisOrigin","xKeys","yKeys","removePointDelta","removeAxisTransforms","removeAxisDelta","isNear","maxDistance","calcOrigin","sourceLength","targetLength","updateAxisDelta","sourcePoint","calcTranslate","updateBoxDelta","eachAxis","secondsToMilliseconds","seconds","easingDefinitionToFunction","definition","isAnimatable","isKeyframesTarget","underDampedSpring","overDampedSpring","linearTween","defaultTransitions","convertTransitionToAnimationOptions","yoyo","loop","flip","isEasingArray","getPopmotionAnimationOptions","valueKey","transitionFactory","hydrateKeyframes","delayChildren","staggerChildren","staggerDirection","isTransitionDefined","delayTimer","controls","valueTransition","isTargetAnimatable","getDelayFromTransition","getBoundingBox","transformPagePoint","transformPoint","topLeft","bottomRight","transformBoundingBox","getBoundingClientRect","_super","HTMLVisualElement","reactStyle","layoutUpdateListeners","layoutMeasureListeners","viewportBoxUpdateListeners","hasViewportBoxUpdated","targetBoxFinal","prevTreeScale","deltaTransform","stopLayoutAxisAnimation","isTargetBoxLocked","axisProgress","updateLayoutDeltas","fireUpdateLayoutDelta","clean","layoutOrigin","readNativeValue","defaultValueType","enableLayoutProjection","isVisible","onLayoutUpdate","onLayoutMeasure","onViewportBoxUpdate","layoutReady","prevViewportBox","getBoundingBoxWithoutTransforms","bbox","snapshotBoundingBox","rebaseTargetBox","shouldRebase","setAxisTarget","measureLayout","boxCorrected","lockTargetBox","unlockTargetBox","stopLayoutAnimation","resetTransform","targetAxis","startLayoutAxisAnimation","originBox","parentTreeScale","parentDelta","treeLength","applyTreeDeltas","updateTransformDeltas","finalBox","build","visibility","setProperty","useConstant","calcOrigin$1","progressToPixels","dashKeys","camelKeys","unmeasured","buildSVGAttrs","attrs","dimensions","totalPathLength","attrX","attrY","pathLength","pathSpacing","pathOffset","calcSVGTransformOrigin","totalLength","spacing","useDashCase","buildSVGPath","camelCaseAttributes","CAMEL_CASE_PATTERN","camelToDash","SVGVisualElement","measure","getBBox","tagName","getTotalLength","svgTagNames","isSVGComponent","PresenceContext","usePresence","isPresent","onExitComplete","useUniqueId","counter","incrementId","useDomVisualElement","isStatic","visualElement","layoutId","validMotionProps","isValidMotionProp","isPropValid","emotionIsPropValid_1","forwardedProps","domProps","filterProps","visualProps","buildSVGProps","drag","htmlProps","draggable","buildHTMLProps","BoundingBoxDimension","positionalKeys","isPositionalKey","setAndResetVelocity","isNumOrPxType","getPosFromMatrix","matrix","pos","getTranslateFromMatrix","pos2","pos3","_bbox","matrix3d","nonTranslationalTransformKeys","positionalValues","checkAndConvertChangedValueTypes","transitionEnd","targetPositionalKeys","removedTransformValues","hasAttemptedToRemoveTransformValues","changedValueTypeKeys","toType","fromType","numKeyframes","removedTransforms","removeNonTranslationalTransform","convertedTarget","changedKeys","originBbox","elementComputedStyle","originComputedStyle","targetBbox","convertChangedValueTypes","unitConversion","hasPositionalKey","parseDomVariant","resolveCSSVariables","AnimationControls","hasMounted","pendingAnimations","componentControls","setVariants","variants","setDefaultTransition","defaultTransition","transitionOverride","animations_1","MotionContext","isVariantLabel","isAnimationControls","useMotionContext","parentContext","whileTap","whileHover","presenceContext","presenceId","isPresenceRoot","shouldPropagateControls","targetInitial","targetAnimate","initialDependency","animateDependency","isReducedMotion","isInitialOnly","isInitialRender","useInitialOrEveryRender","initialToApply","checkShouldInheritVariant","inherit","isMotionValue","isForcedMotionValue","layout","addMotionValues","isStyle","foundMotionValue","reservedNames","empty","resolveFinalValueInKeyframes","VisualElementAnimationControls","makeTargetAnimatable","baseTarget","overrides","resolvedOverrides","activeOverrides","setProps","setValues","priority","resolveVariant","transformValues","targetValue","checkForNewValues","newValueKeys","numNewValues","readValue","variant","custom","getHighestPriority","setOverride","overrideIndex","startOverride","override","clearOverride","highest","resetIsAnimating","overrideTarget","remainingValues","onStart","applyVariantLabels","variantLabelList","opts","animateVariantLabels","animateVariant","animationDefinition","getOriginFromTransition","getOrigin","animatable","animations","valueTarget","allAnimations","variantLabels","variantLabel","getAnimation","getChildrenAnimations","forwardDelay","animateChildren","last","maxStaggerDuration","generateStaggerDuration","childControls","onAnimationStart","onAnimationComplete","checkOverrideIsAnimating","numOverrides","resolvedOverride","addChild","resetChildren","useVisualElementAnimation","subscribeToParentControls","parentControls","unmountProps","Presence","VisibilityAction","MotionConfigContext","features","defaultHandler","sortByDepth","createBatcher","queue","flush","order","presence","Present","isSharedLayout","SharedLayoutContext","useIsomorphicLayoutEffect","createMotionComponent","defaultFeatures","useVisualElement","animationControlsConfig","shouldInheritVariant","isForced","existsAsProp","existsAsStyle","propIsMotionValue","styleIsMotionValue","useMotionValues","plugins","allFeatures","numFeatures","shouldRender","getComponent","localContext","useFeatures","component","syncLayout","useSnapshotOnUnmount","createLock","lock","globalHorizontalLock","globalVerticalLock","getGlobalLock","openHorizontal_1","openVertical_1","isViewportScrollBlocked","passive","unblockViewportScroll","addDomEvent","eventName","isMouseEvent","PointerEvent","pointerType","MouseEvent","isTouchEvent","defaultPagePoint","pageX","pageY","pointFromTouch","pointType","changedTouches","pointFromMouse","extractEventInfo","getViewportPointFromEvent","Point","wrapHandler","shouldFilterPrimaryPointer","eventHandler","filterPrimaryPointer","isBrowser$2","mouseEventNames","pointerdown","pointermove","pointerup","pointercancel","pointerover","pointerout","pointerenter","pointerleave","touchEventNames","getPointerEventName","onpointerdown","ontouchstart","onmousedown","addPointerEvent","usePointerEvent","useDomEvent","subtract","relativeTo","idOrElem","localElem","rect","scrollX","scrollY","PanSession","handlers","startEvent","lastMoveEvent","lastMoveEventInfo","updatePoint","getPanInfo","isPanStarted","isDistancePastThreshold","onMove","initialInfo","onSessionStart","removeOnPointerMove","handlePointerMove","removeOnPointerUp","handlePointerUp","removeListeners","buttons","onEnd","panInfo","updateHandlers","lastDevicePoint","startDevicePoint","getVelocity$1","timestampedPoint","lastPoint","time","currentVelocity","applyConstraints","elastic","calcRelativeAxisConstraints","calcViewportAxisConstraints","layoutAxis","constraintsAxis","lastPointerEvent","elementDragControls","WeakMap","VisualElementDragControls","isDragging","currentDirection","constraints","hasMutatedConstraints","cursorProgress","openGlobalLock","panSession","originEvent","snapToCursor","stopMotion","dragPropagation","prepareBoundingBox","resolveDragConstraints","axisValue","getAxisMotionValue","onDragStart","dragDirectionLock","lockThreshold","getCurrentDirection","onDirectionLock","updateAxis","onDrag","layoutBox","dragConstraints","resolveRefConstraints","relativeConstraints","onMeasureDragConstraints","constraintsElement","constraintsBox","measuredConstraints","calcViewportConstraints","userConstraints","convertAxisBoxToBoundingBox","cancelDrag","dragMomentum","dragElastic","onDragEnd","animateDragEnd","length_1","center","updateVisualElementAxis","shouldDrag","updateAxisMotionValue","axisLayout","axisLength","calcConstrainedMinPoint","updateProps","remainingProps","dragKey","toUpperCase","dragTransition","momentumAnimations","inertia","startAxisValueAnimation","onDragTransitionEnd","currentValue","boxProgress","calcPositionFromProgress","stopPointerListener","dragListener","stopResizeListener","stopLayoutUpdateListener","prevSnapshot","makeRenderlessComponent","hook","groupDragControls","dragControls","useDrag","Drag","useUnmountEffect","isNodeOrChild","order$1","getGesturePriority","gesture","tapGesturePriority","hoverPriority","filterTouch","useGestures","onPan","onPanStart","onPanEnd","onPanSessionStart","hasPanEvents","usePanGesture","onTap","onTapStart","onTapCancel","hasTapListeners","isTapping","cancelPointerEventListener","removePointerUp","onPointerUp","openGestureLock","useTapGesture","onHoverStart","onHoverEnd","useHoverGesture","AnimatePropType","gestureProps","GestureComponent","Gestures","ExitComponent","exit","isPlayingExitAnimation","Exit","targetWithoutTransition","mergeTransitionEnd","resolveVariantLabels","unresolvedVariant","AnimatePropComponents","Target","targetAndTransition","prevValues","targetToAnimate","animatingTarget","finalTarget","shouldAnimateOnMount","isValidValue","valueHasUpdated","prevLength","shallowCompare","useAnimateProp","VariantLabel","targetVariants","parentAlreadyMounted","oldVariant","newVariant","shouldAnimate","useVariants","AnimationSubscription","useAnimationGroupSubscription","isAnimationSubscription","animationProps","animatePropTypeTests","Animation","animatePropType","Animate","frameTarget","stopAxisAnimation","visibilityAction","shouldStackAnimate","safeToRemove","boxHasMoved","hasMoved","animateAxis","Hide","onLayoutAnimationComplete","componentDidMount","unsubLayoutReady","componentWillUnmount","crossfadeOpacity","crossfade","layoutProgress","createCrossfadeAnimation","tweenAxis","unsubscribeProgress","easeCrossfadeIn","easeCrossfadeOut","AnimateLayoutContextProvider","hasAxisMoved","compress","AnimateLayout","Measure","syncUpdate","MeasureContextProvider","MeasureLayout","createMotionProxy","componentCache","motion","createSwitchAnimation","lead","Entering","prevLead","Show","getFollowOrigin","Exiting","getFollowTarget","stackLead","stackLeadPresence","follow","getLeadTransition","getLeadTarget","getLeadOrigin","LayoutStack","hasChildren","boundingBox","latestMotionValues","findIndex","stackChild","updateLeadAndFollow","prevFollow","leadIndex","numInStack","lastIsPresent","findLeadAndFollow","updateSnapshot","isLeadPresent","AnimateSharedLayout","stacks","updateScheduled","renderScheduled","syncContext","scheduleUpdate","updateStacks","startLayoutAnimation","shouldComponentUpdate","createAnimation","getStack","addToStack","removeFromStack","createScrollMotionValues","scrollXProgress","scrollYProgress","prefersReducedMotion","matchMedia","motionMediaQuery_1","setReducedMotionPreferences","matches","addListener","DragControls","nativeEvent","StateVisualElement","_arrayLikeToArray","len","arr2","commonChartOptions","elementId","extraChartOptions","ctx","getContext","dumpClassLists","htmlClassList","docBodyClassList","classString","classListRef","poll","incrementReference","decrementReference","configsPatchWorkaround","updateConfigs","toVal","tmp","runtime","Op","hasOwn","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","invoke","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","mark","awrap","iter","skipTempReset","charAt","rootRecord","rval","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","extendStatics","__extends","__","__values","__read","ar","__spread","__spreadArrays","il","jl","forwardRef","ButtonInternal","btnStart","kind","internalOnClick","btnClassName","btn","minimal","loadingContainer","portalClassName","_reactDom2","_ModalPortal2","_reactLifecyclesCompat","isReact16","createPortal","getCreatePortal","unstable_renderSubtreeIntoContainer","getParentElement","parentSelector","_temp","removePortal","unmountComponentAtNode","portalRef","portal","renderPortal","prevParent","nextParent","WebkitOverflowScrolling","SectionNameType","sectionNameType","LoadingDot","loadingDot","getConfigs","getLogLevel","configsAPI","haveFetchedConfig","trafficAPI","partialConfg","mode","Zap","createResource","lineTension","pointRadius","responsive","maintainAspectRatio","legend","fontColor","boxWidth","tooltips","intersect","animationDuration","hover","scales","xAxes","gridLines","yAxes","borderDash","drawBorder","ticks"],"mappings":"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","file":"app.57466da82c6534ab0c59.js","sourcesContent":["function defaultEqualityCheck(a, b) {\n return a === b;\n}\n\nfunction areArgumentsShallowlyEqual(equalityCheck, prev, next) {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n var length = prev.length;\n for (var i = 0; i < length; i++) {\n if (!equalityCheck(prev[i], next[i])) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function defaultMemoize(func) {\n var equalityCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultEqualityCheck;\n\n var lastArgs = null;\n var lastResult = null;\n // we reference arguments instead of spreading them for performance reasons\n return function () {\n if (!areArgumentsShallowlyEqual(equalityCheck, lastArgs, arguments)) {\n // apply arguments instead of spreading for performance.\n lastResult = func.apply(null, arguments);\n }\n\n lastArgs = arguments;\n return lastResult;\n };\n}\n\nfunction getDependencies(funcs) {\n var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n if (!dependencies.every(function (dep) {\n return typeof dep === 'function';\n })) {\n var dependencyTypes = dependencies.map(function (dep) {\n return typeof dep;\n }).join(', ');\n throw new Error('Selector creators expect all input-selectors to be functions, ' + ('instead received the following types: [' + dependencyTypes + ']'));\n }\n\n return dependencies;\n}\n\nexport function createSelectorCreator(memoize) {\n for (var _len = arguments.length, memoizeOptions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n memoizeOptions[_key - 1] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, funcs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n funcs[_key2] = arguments[_key2];\n }\n\n var recomputations = 0;\n var resultFunc = funcs.pop();\n var dependencies = getDependencies(funcs);\n\n var memoizedResultFunc = memoize.apply(undefined, [function () {\n recomputations++;\n // apply arguments instead of spreading for performance.\n return resultFunc.apply(null, arguments);\n }].concat(memoizeOptions));\n\n // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n var selector = memoize(function () {\n var params = [];\n var length = dependencies.length;\n\n for (var i = 0; i < length; i++) {\n // apply arguments instead of spreading and mutate a local list of params for performance.\n params.push(dependencies[i].apply(null, arguments));\n }\n\n // apply arguments instead of spreading for performance.\n return memoizedResultFunc.apply(null, params);\n });\n\n selector.resultFunc = resultFunc;\n selector.dependencies = dependencies;\n selector.recomputations = function () {\n return recomputations;\n };\n selector.resetRecomputations = function () {\n return recomputations = 0;\n };\n return selector;\n };\n}\n\nexport var createSelector = createSelectorCreator(defaultMemoize);\n\nexport function createStructuredSelector(selectors) {\n var selectorCreator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : createSelector;\n\n if (typeof selectors !== 'object') {\n throw new Error('createStructuredSelector expects first argument to be an object ' + ('where each property is a selector, instead received a ' + typeof selectors));\n }\n var objectKeys = Object.keys(selectors);\n return selectorCreator(objectKeys.map(function (key) {\n return selectors[key];\n }), function () {\n for (var _len3 = arguments.length, values = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n values[_key3] = arguments[_key3];\n }\n\n return values.reduce(function (composition, value, index) {\n composition[objectKeys[index]] = value;\n return composition;\n }, {});\n });\n}","import { createSelector } from 'reselect';\n\nconst LogSize = 300;\n\nconst getLogs = (s) => s.logs.logs;\nconst getTail = (s) => s.logs.tail;\nexport const getSearchText = (s) => s.logs.searchText;\nexport const getLogsForDisplay = createSelector(\n getLogs,\n getTail,\n getSearchText,\n (logs, tail, searchText) => {\n const x = [];\n for (let i = tail; i >= 0; i--) {\n x.push(logs[i]);\n }\n if (logs.length === LogSize) {\n for (let i = LogSize - 1; i > tail; i--) {\n x.push(logs[i]);\n }\n }\n\n if (searchText === '') return x;\n return x.filter((r) => r.payload.toLowerCase().indexOf(searchText) >= 0);\n }\n);\n\nexport function updateSearchText(text) {\n return (dispatch) => {\n dispatch('logsUpdateSearchText', (s) => {\n s.logs.searchText = text.toLowerCase();\n });\n };\n}\n\nexport function appendLog(log) {\n return (dispatch, getState) => {\n const s = getState();\n const logs = getLogs(s);\n const tailCurr = getTail(s);\n const tail = tailCurr >= LogSize - 1 ? 0 : tailCurr + 1;\n // mutate intentionally for performance\n logs[tail] = log;\n\n dispatch('logsAppendLog', (s) => {\n s.logs.tail = tail;\n });\n };\n}\n\nexport const initialState = {\n searchText: '',\n logs: [],\n // tail's initial value must be -1\n tail: -1,\n};\n","/** @license React v0.0.0-experimental-241c4467e\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});var f,g,h,k,l;\nif(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var p=null,q=null,t=function(){if(null!==p)try{var a=exports.unstable_now();p(!0,a);p=null}catch(b){throw setTimeout(t,0),b;}},u=Date.now();exports.unstable_now=function(){return Date.now()-u};f=function(a){null!==p?setTimeout(f,0,a):(p=a,setTimeout(t,0))};g=function(a,b){q=setTimeout(a,b)};h=function(){clearTimeout(q)};k=function(){return!1};l=exports.unstable_forceFrameRate=function(){}}else{var w=window.performance,x=window.Date,\ny=window.setTimeout,z=window.clearTimeout;if(\"undefined\"!==typeof console){var A=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\");\"function\"!==typeof A&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://fb.me/react-polyfills\")}if(\"object\"===\ntypeof w&&\"function\"===typeof w.now)exports.unstable_now=function(){return w.now()};else{var B=x.now();exports.unstable_now=function(){return x.now()-B}}var C=!1,D=null,E=-1,F=5,G=0;k=function(){return exports.unstable_now()>=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_ImmediatePriority=1;exports.unstable_UserBlockingPriority=2;exports.unstable_NormalPriority=3;exports.unstable_IdlePriority=5;exports.unstable_LowPriority=4;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};exports.unstable_cancelCallback=function(a){a.callback=null};\nexports.unstable_wrapCallback=function(a){var b=R;return function(){var c=R;R=b;try{return a.apply(this,arguments)}finally{R=c}}};exports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime;\n}\n\nexport function SelfControlledInput({ value, ...restProps }) {\n const [internalValue, setInternalValue] = useState(value);\n const refValue = useRef(value);\n useEffect(() => {\n if (refValue.current !== value) {\n // ideally we should only do this when this input is not focused\n setInternalValue(value);\n }\n refValue.current = value;\n }, [value]);\n const onChange = useCallback((e) => setInternalValue(e.target.value), [\n setInternalValue,\n ]);\n\n return (\n \n );\n}\n\nInput.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n type: PropTypes.string,\n onChange: PropTypes.func,\n name: PropTypes.string,\n placeholder: PropTypes.string,\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","Object.defineProperty(exports,\"__esModule\",{value:!0});var React=require(\"react\");function _extends(){return(_extends=Object.assign||function(t){for(var i=1;i 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\tdefine(function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t});\n\t} else if (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = ExecutionEnvironment;\n\t} else {\n\t\twindow.ExecutionEnvironment = ExecutionEnvironment;\n\t}\n\n}());\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canUseDOM = undefined;\n\nvar _exenv = require(\"exenv\");\n\nvar _exenv2 = _interopRequireDefault(_exenv);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar EE = _exenv2.default;\n\nvar SafeHTMLElement = EE.canUseDOM ? window.HTMLElement : {};\n\nvar canUseDOM = exports.canUseDOM = EE.canUseDOM;\n\nexports.default = SafeHTMLElement;","export function throttle(\n fn: (...args: T) => unknown,\n timeout: number\n) {\n let pending = false;\n\n return (...args: T) => {\n if (!pending) {\n pending = true;\n fn(...args);\n setTimeout(() => {\n pending = false;\n }, timeout);\n }\n };\n}\n\nexport function debounce(\n fn: (...args: T) => unknown,\n timeout: number\n) {\n let timeoutId: number;\n return (...args: T) => {\n if (timeoutId) clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n fn(...args);\n }, timeout);\n };\n}\n\nexport function trimTrailingSlash(s: string) {\n return s.replace(/\\/$/, '');\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loading\":\"_12V5kDiPEH\",\"pulse\":\"_2FcudZSVil\",\"pulseScaleOut\":\"_3gvFm3l86P\"};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _Modal = require(\"./components/Modal\");\n\nvar _Modal2 = _interopRequireDefault(_Modal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _Modal2.default;\nmodule.exports = exports[\"default\"];","function memoize(fn) {\n var cache = {};\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport default memoize;\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar index = memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default index;\n","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport s0 from './ContentHeader.module.css';\n\nfunction ContentHeader({ title }) {\n return (\n
\n

{title}

\n
\n );\n}\n\nContentHeader.propTypes = {\n title: PropTypes.string.isRequired,\n};\n\nexport default React.memo(ContentHeader);\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import _extends from'@babel/runtime/helpers/esm/extends';var m,x=m||(m={});x.Pop=\"POP\";x.Push=\"PUSH\";x.Replace=\"REPLACE\";var y=\"production\"!==process.env.NODE_ENV?function(a){return Object.freeze(a)}:function(a){return a};function z(a,b){if(!a){\"undefined\"!==typeof console&&console.warn(b);try{throw Error(b);}catch(g){}}}function A(a){a.preventDefault();a.returnValue=\"\"}\nfunction B(){var a=[];return{get length(){return a.length},push:function(b){a.push(b);return function(){a=a.filter(function(a){return a!==b})}},call:function(b){a.forEach(function(a){return a&&a(b)})}}}function D(){return Math.random().toString(36).substr(2,8)}function E(a){var b=a.pathname,g=a.search;a=a.hash;return(void 0===b?\"/\":b)+(void 0===g?\"\":g)+(void 0===a?\"\":a)}\nfunction F(a){var b={};if(a){var g=a.indexOf(\"#\");0<=g&&(b.hash=a.substr(g),a=a.substr(0,g));g=a.indexOf(\"?\");0<=g&&(b.search=a.substr(g),a=a.substr(0,g));a&&(b.pathname=a)}return b}\nfunction createBrowserHistory(a){function b(){var a=h.location,d=f.state||{};return[d.idx,y({pathname:a.pathname,search:a.search,hash:a.hash,state:d.usr||null,key:d.key||\"default\"})]}function g(a){return\"string\"===typeof a?a:E(a)}function t(a,d){void 0===d&&(d=null);return y(_extends({},l,{},\"string\"===typeof a?F(a):a,{state:d,key:D()}))}function v(a){n=a;a=b();q=a[0];l=a[1];c.call({action:n,location:l})}function w(a,d){function c(){w(a,d)}var k=m.Push,C=t(a,d);if(!e.length||(e.call({action:k,\nlocation:C,retry:c}),!1)){var b=[{usr:C.state,key:C.key,idx:q+1},g(C)];C=b[0];b=b[1];try{f.pushState(C,\"\",b)}catch(G){h.location.assign(b)}v(k)}}function u(a,d){function c(){u(a,d)}var b=m.Replace,k=t(a,d);e.length&&(e.call({action:b,location:k,retry:c}),1)||(k=[{usr:k.state,key:k.key,idx:q},g(k)],f.replaceState(k[0],\"\",k[1]),v(b))}function r(a){f.go(a)}void 0===a&&(a={});a=a.window;var h=void 0===a?document.defaultView:a,f=h.history,p=null;h.addEventListener(\"popstate\",function(){if(p)e.call(p),\np=null;else{var a=m.Pop,d=b(),c=d[0];d=d[1];if(e.length)if(null!=c){var f=q-c;f&&(p={action:a,location:d,retry:function(){r(-1*f)}},r(f))}else\"production\"!==process.env.NODE_ENV?z(!1,\"You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation.\"):void 0;else v(a)}});var n=\nm.Pop;a=b();var q=a[0],l=a[1],c=B(),e=B();null==q&&(q=0,f.replaceState(_extends({},f.state,{idx:q}),\"\"));return{get action(){return n},get location(){return l},createHref:g,push:w,replace:u,go:r,back:function(){r(-1)},forward:function(){r(1)},listen:function(a){return c.push(a)},block:function(a){var d=e.push(a);1===e.length&&h.addEventListener(\"beforeunload\",A);return function(){d();e.length||h.removeEventListener(\"beforeunload\",A)}}}};\nfunction createHashHistory(a){function b(){var a=F(f.location.hash.substr(1)),c=a.pathname,b=a.search;a=a.hash;var e=p.state||{};return[e.idx,y({pathname:void 0===c?\"/\":c,search:void 0===b?\"\":b,hash:void 0===a?\"\":a,state:e.usr||null,key:e.key||\"default\"})]}function g(){if(n)k.call(n),n=null;else{var a=m.Pop,c=b(),e=c[0];c=c[1];if(k.length)if(null!=e){var f=l-e;f&&(n={action:a,location:c,retry:function(){h(-1*f)}},h(f))}else\"production\"!==process.env.NODE_ENV?z(!1,\"You are trying to block a POP navigation to a location that was not created by the history library. The block will fail silently in production, but in general you should do all navigation with the history library (instead of using window.history.pushState directly) to avoid this situation.\"):\nvoid 0;else w(a)}}function t(a){var d=document.querySelector(\"base\"),c=\"\";d&&d.getAttribute(\"href\")&&(d=f.location.href,c=d.indexOf(\"#\"),c=-1===c?d:d.slice(0,c));return c+\"#\"+(\"string\"===typeof a?a:E(a))}function v(a,b){void 0===b&&(b=null);return y(_extends({},c,{},\"string\"===typeof a?F(a):a,{state:b,key:D()}))}function w(a){q=a;a=b();l=a[0];c=a[1];e.call({action:q,location:c})}function u(a,c){function d(){u(a,c)}var b=m.Push,e=v(a,c);\"production\"!==process.env.NODE_ENV?z(\"/\"===e.pathname.charAt(0),\n\"Relative pathnames are not supported in hash history.push(\"+JSON.stringify(a)+\")\"):void 0;if(!k.length||(k.call({action:b,location:e,retry:d}),!1)){var g=[{usr:e.state,key:e.key,idx:l+1},t(e)];e=g[0];g=g[1];try{p.pushState(e,\"\",g)}catch(H){f.location.assign(g)}w(b)}}function r(a,c){function d(){r(a,c)}var e=m.Replace,b=v(a,c);\"production\"!==process.env.NODE_ENV?z(\"/\"===b.pathname.charAt(0),\"Relative pathnames are not supported in hash history.replace(\"+JSON.stringify(a)+\")\"):void 0;k.length&&(k.call({action:e,\nlocation:b,retry:d}),1)||(b=[{usr:b.state,key:b.key,idx:l},t(b)],p.replaceState(b[0],\"\",b[1]),w(e))}function h(a){p.go(a)}void 0===a&&(a={});a=a.window;var f=void 0===a?document.defaultView:a,p=f.history,n=null;f.addEventListener(\"popstate\",g);f.addEventListener(\"hashchange\",function(){var a=b()[1];E(a)!==E(c)&&g()});var q=m.Pop;a=b();var l=a[0],c=a[1],e=B(),k=B();null==l&&(l=0,p.replaceState(_extends({},p.state,{idx:l}),\"\"));return{get action(){return q},get location(){return c},createHref:t,push:u,\nreplace:r,go:h,back:function(){h(-1)},forward:function(){h(1)},listen:function(a){return e.push(a)},block:function(a){var c=k.push(a);1===k.length&&f.addEventListener(\"beforeunload\",A);return function(){c();k.length||f.removeEventListener(\"beforeunload\",A)}}}};\nfunction createMemoryHistory(a){function b(a,b){void 0===b&&(b=null);return y(_extends({},n,{},\"string\"===typeof a?F(a):a,{state:b,key:D()}))}function g(a,b,f){return!l.length||(l.call({action:a,location:b,retry:f}),!1)}function t(a,b){p=a;n=b;q.call({action:p,location:n})}function v(a,e){var c=m.Push,d=b(a,e);\"production\"!==process.env.NODE_ENV?z(\"/\"===n.pathname.charAt(0),\"Relative pathnames are not supported in memory history.push(\"+JSON.stringify(a)+\")\"):void 0;g(c,d,function(){v(a,e)})&&\n(f+=1,h.splice(f,h.length,d),t(c,d))}function w(a,e){var c=m.Replace,d=b(a,e);\"production\"!==process.env.NODE_ENV?z(\"/\"===n.pathname.charAt(0),\"Relative pathnames are not supported in memory history.replace(\"+JSON.stringify(a)+\")\"):void 0;g(c,d,function(){w(a,e)})&&(h[f]=d,t(c,d))}function u(a){var b=Math.min(Math.max(f+a,0),h.length-1),c=m.Pop,d=h[b];g(c,d,function(){u(a)})&&(f=b,t(c,d))}void 0===a&&(a={});var r=a;a=r.initialEntries;r=r.initialIndex;var h=(void 0===a?[\"/\"]:a).map(function(a){var b=\ny(_extends({pathname:\"/\",search:\"\",hash:\"\",state:null,key:D()},\"string\"===typeof a?F(a):a));\"production\"!==process.env.NODE_ENV?z(\"/\"===b.pathname.charAt(0),\"Relative pathnames are not supported in createMemoryHistory({ initialEntries }) (invalid entry: \"+JSON.stringify(a)+\")\"):void 0;return b}),f=Math.min(Math.max(null==r?h.length-1:r,0),h.length-1),p=m.Pop,n=h[f],q=B(),l=B();return{get index(){return f},get action(){return p},get location(){return n},createHref:function(a){return\"string\"===typeof a?\na:E(a)},push:v,replace:w,go:u,back:function(){u(-1)},forward:function(){u(1)},listen:function(a){return q.push(a)},block:function(a){return l.push(a)}}};export{m as Action,createBrowserHistory,createHashHistory,createMemoryHistory,E as createPath,F as parsePath}\n//# sourceMappingURL=index.js.map\n","import{createMemoryHistory,Action,parsePath}from'history';import PropTypes from'prop-types';import{createContext,useRef,useReducer,useLayoutEffect,createElement,useContext,useEffect,useMemo,useCallback,Children,isValidElement,Fragment}from'react';function f(){f=Object.assign||function(a){for(var b=1;b may be used only in the context of a component.\"):l(!1);\"production\"!==process.env.NODE_ENV?m(!useContext(r).static,\" must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.\"):void 0;var e=A();useEffect(function(){e(b,{replace:c,\nstate:d})});return null}\"production\"!==process.env.NODE_ENV&&(y.displayName=\"Navigate\",y.propTypes={to:PropTypes.oneOfType([PropTypes.string,PropTypes.shape({pathname:PropTypes.string,search:PropTypes.string,hash:PropTypes.string})]).isRequired,replace:PropTypes.bool,state:PropTypes.object});function B(){return C()}\"production\"!==process.env.NODE_ENV&&(B.displayName=\"Outlet\",B.propTypes={});function D(a){a=a.element;return void 0===a?createElement(B,null):a}\n\"production\"!==process.env.NODE_ENV&&(D.displayName=\"Route\",D.propTypes={caseSensitive:PropTypes.bool,children:PropTypes.node,element:PropTypes.element,path:PropTypes.string});\nfunction x(a){var b=a.children;b=void 0===b?null:b;var c=a.action;c=void 0===c?Action.Pop:c;var d=a.location,e=a.navigator;a=a.static;a=void 0===a?!1:a;z()?\"production\"!==process.env.NODE_ENV?l(!1,\"You cannot render a inside another . You never need more than one.\"):l(!1):void 0;return createElement(r.Provider,{children:b,value:{action:c,location:d,navigator:e,static:a}})}\n\"production\"!==process.env.NODE_ENV&&(x.displayName=\"Router\",x.propTypes={children:PropTypes.node,action:PropTypes.oneOf([\"POP\",\"PUSH\",\"REPLACE\"]),location:PropTypes.object.isRequired,navigator:PropTypes.shape({createHref:PropTypes.func.isRequired,push:PropTypes.func.isRequired,replace:PropTypes.func.isRequired,go:PropTypes.func.isRequired,block:PropTypes.func.isRequired}).isRequired,static:PropTypes.bool});function E(a){var b=a.basename;b=void 0===b?\"\":b;a=F(a.children);return G(a,b)}\n\"production\"!==process.env.NODE_ENV&&(E.displayName=\"Routes\",E.propTypes={basename:PropTypes.string,children:PropTypes.node});function z(){return null!=useContext(r).location}function H(){z()?void 0:\"production\"!==process.env.NODE_ENV?l(!1,\"useLocation() may be used only in the context of a component.\"):l(!1);return useContext(r).location}\nfunction A(){z()?void 0:\"production\"!==process.env.NODE_ENV?l(!1,\"useNavigate() may be used only in the context of a component.\"):l(!1);var a=useContext(r).navigator,b=useContext(v).pathname,c=useRef(!1);useEffect(function(){c.current=!0});return useCallback(function(d,e){void 0===e&&(e={});c.current?\"number\"===typeof d?a.go(d):(d=J(d,b),(e.replace?a.replace:a.push)(d,e.state)):\"production\"!==process.env.NODE_ENV?m(!1,\"You should call navigate() in a useEffect, not when your component is first rendered.\"):\nvoid 0},[a,b])}function C(){return useContext(v).outlet}function K(a){var b=useContext(v).pathname;return useMemo(function(){return J(a,b)},[a,b])}\nfunction G(a,b){void 0===b&&(b=\"\");var c=useContext(v),d=c.route,e=c.pathname,g=c.params;\"production\"!==process.env.NODE_ENV&&(c=d&&d.path,q(e,!d||d.path.endsWith(\"*\"),'You rendered descendant (or called `useRoutes`) at \"'+e+'\" (under ) but the parent route path has no trailing \"*\". This means if you navigate deeper, the parent won\\'t match anymore and therefore the child routes will never render.\\n\\nPlease change the parent to .')));b=b?L([e,b]):e;var h=H();return(d=useMemo(function(){return M(a,h,b)},[h,a,b]))?d.reduceRight(function(a,c){var d=c.pathname,e=c.route;return createElement(v.Provider,{children:e.element,value:{outlet:a,params:k(f({},g,{},c.params)),pathname:L([b,d]),route:e}})},null):null}function N(a){return a.map(function(a){var c={path:a.path||\"/\",caseSensitive:!0===a.caseSensitive,element:a.element||createElement(B,null)};a.children&&(c.children=N(a.children));return c})}\nfunction F(a){var b=[];Children.forEach(a,function(a){if(isValidElement(a))if(a.type===Fragment)b.push.apply(b,F(a.props.children));else{var c={path:a.props.path||\"/\",caseSensitive:!0===a.props.caseSensitive,element:a};a.props.children&&(a=F(a.props.children),a.length&&(c.children=a));b.push(c)}});return b}\nfunction M(a,b,c){void 0===c&&(c=\"\");\"string\"===typeof b&&(b=parsePath(b));b=b.pathname||\"/\";if(c)if(c=c.replace(/^\\/*/,\"/\").replace(/\\/+$/,\"\"),b.startsWith(c))b=b===c?\"/\":b.slice(c.length);else return null;a=O(a);P(a);var d=null;for(c=0;null==d&&c component.\"):l(!1);var c=useContext(r).navigator;useEffect(function(){if(b){var d=c.block(function(b){var c=f({},b,{retry:function(){d();b.retry()}});a(c)});return d}},[c,a,b])};\nfunction useHref(a){z()?void 0:\"production\"!==process.env.NODE_ENV?l(!1,\"useHref() may be used only in the context of a component.\"):l(!1);var b=useContext(r).navigator;a=K(a);return b.createHref(a)};function useMatch(a){z()?void 0:\"production\"!==process.env.NODE_ENV?l(!1,\"useMatch() may be used only in the context of a component.\"):l(!1);var b=H();return Q(a,b.pathname)};\nfunction useParams(){return useContext(v).params};function useRoutes(a,b){void 0===b&&(b=\"\");z()?void 0:\"production\"!==process.env.NODE_ENV?l(!1,\"useRoutes() may be used only in the context of a component.\"):l(!1);var c=useMemo(function(){return N(a)},[a]);return G(c,b)};export{w as MemoryRouter,y as Navigate,B as Outlet,D as Route,x as Router,E as Routes,N as createRoutesFromArray,F as createRoutesFromChildren,generatePath,Q as matchPath,M as matchRoutes,J as resolvePath,useBlocker,useHref,z as useInRouterContext,H as useLocation,useMatch,A as useNavigate,C as useOutlet,useParams,K as useResolvedPath,useRoutes}\n//# sourceMappingURL=index.js.map\n","import{Router,useHref,useNavigate,useLocation,useResolvedPath,useBlocker}from'react-router';import{createBrowserHistory,createHashHistory,createPath}from'history';import PropTypes from'prop-types';import{useRef,useReducer,useLayoutEffect,createElement,forwardRef,useCallback,useMemo}from'react';export{MemoryRouter,Navigate,Outlet,Route,Router,Routes,createRoutesFromArray,createRoutesFromChildren,generatePath,matchPath,matchRoutes,resolvePath,useBlocker,useHref,useInRouterContext,useLocation,useMatch,useNavigate,useOutlet,useParams,useResolvedPath,useRoutes}from'react-router';function n(){n=Object.assign||function(a){for(var d=1;da.length)d=a.length;for(var b=0,c=Array(d);b=a.length?{done:!0}:{done:!1,value:a[d++]}};throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");}d=a[Symbol.iterator]();return d.next.bind(d)}function v(a,d){if(!a){\"undefined\"!==typeof console&&console.warn(d);try{throw Error(d);}catch(b){}}}\nfunction w(a){var d=a.children;a=a.window;var b=useRef();null==b.current&&(b.current=createBrowserHistory({window:a}));var c=b.current;a=useReducer(function(a,b){return b},{action:c.action,location:c.location});b=a[0];var e=a[1];useLayoutEffect(function(){return c.listen(e)},[c]);return createElement(Router,{children:d,action:b.action,location:b.location,navigator:c})}\"production\"!==process.env.NODE_ENV&&(w.displayName=\"BrowserRouter\",w.propTypes={children:PropTypes.node,window:PropTypes.object});\nfunction x(a){var d=a.children;a=a.window;var b=useRef();null==b.current&&(b.current=createHashHistory({window:a}));var c=b.current;a=useReducer(function(a,b){return b},{action:c.action,location:c.location});b=a[0];var e=a[1];useLayoutEffect(function(){return c.listen(e)},[c]);return createElement(Router,{children:d,action:b.action,location:b.location,navigator:c})}\"production\"!==process.env.NODE_ENV&&(x.displayName=\"HashRouter\",x.propTypes={children:PropTypes.node,window:PropTypes.object});\nvar y=forwardRef(function(a,d){var b=a.onClick,c=a.replace,e=void 0===c?!1:c,f=a.state,g=a.target,m=a.to;a=p(a,[\"onClick\",\"replace\",\"state\",\"target\",\"to\"]);c=useHref(m);var k=useNavigate(),u=useLocation(),h=useResolvedPath(m);return createElement(\"a\",Object.assign({},a,{href:c,onClick:function(a){b&&b(a);a.defaultPrevented||0!==a.button||g&&\"_self\"!==g||a.metaKey||a.altKey||a.ctrlKey||a.shiftKey||(a.preventDefault(),a=!!e||createPath(u)===createPath(h),k(m,{replace:a,state:f}))},ref:d,target:g}))});\n\"production\"!==process.env.NODE_ENV&&(y.displayName=\"Link\",y.propTypes={onClick:PropTypes.func,replace:PropTypes.bool,state:PropTypes.object,target:PropTypes.string,to:PropTypes.oneOfType([PropTypes.string,PropTypes.shape({pathname:PropTypes.string,search:PropTypes.string,hash:PropTypes.string})]).isRequired});\nvar z=forwardRef(function(a,d){var b=a[\"aria-current\"],c=void 0===b?\"page\":b;b=a.activeClassName;var e=void 0===b?\"active\":b;b=a.activeStyle;var f=a.caseSensitive,g=void 0===f?!1:f;f=a.className;var m=void 0===f?\"\":f;f=a.end;var k=void 0===f?!1:f,u=a.style;f=a.to;a=p(a,\"aria-current activeClassName activeStyle caseSensitive className end style to\".split(\" \"));var h=useLocation(),l=useResolvedPath(f);h=h.pathname;l=l.pathname;g||(h=h.toLowerCase(),l=l.toLowerCase());c=(g=k?h===l:h.startsWith(l))?c:\nvoid 0;e=[m,g?e:null].filter(Boolean).join(\" \");b=n({},u,{},g?b:null);return createElement(y,Object.assign({},a,{\"aria-current\":c,className:e,ref:d,style:b,to:f}))});\n\"production\"!==process.env.NODE_ENV&&(z.displayName=\"NavLink\",z.propTypes=n({},y.propTypes,{\"aria-current\":PropTypes.oneOf(\"page step location date time true\".split(\" \")),activeClassName:PropTypes.string,activeStyle:PropTypes.object,className:PropTypes.string,style:PropTypes.object,to:PropTypes.oneOfType([PropTypes.string,PropTypes.shape({pathname:PropTypes.string,search:PropTypes.string,hash:PropTypes.string})]).isRequired}));function A(a){B(a.message,a.when);return null}\n\"production\"!==process.env.NODE_ENV&&(A.displayName=\"Prompt\",A.propTypes={message:PropTypes.string,when:PropTypes.bool});function B(a,d){void 0===d&&(d=!0);var b=useCallback(function(b){window.confirm(a)&&b.retry()},[a]);useBlocker(b,d)}function C(a){void 0===a&&(a=\"\");return new URLSearchParams(\"string\"===typeof a||Array.isArray(a)||a instanceof URLSearchParams?a:Object.keys(a).reduce(function(d,b){var c=a[b];return d.concat(Array.isArray(c)?c.map(function(a){return[b,a]}):[[b,c]])},[]))}\n\n\nfunction useSearchParams(a){\"production\"!==process.env.NODE_ENV?v(\"undefined\"!==typeof URLSearchParams,\"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params\\n\\nIf you're unsure how to load polyfills, we recommend you check out https://polyfill.io/v3/ which provides some recommendations about how to load polyfills only for users that need them, instead of for every user.\"):void 0;\nvar d=useRef(C(a)),b=useLocation();a=useMemo(function(){function a(){var a=k.value;c.has(a)||d.current.getAll(a).forEach(function(b){c.append(a,b)})}for(var c=C(b.search),e=t(d.current.keys()),k;!(k=e()).done;)a();return c},[b.search]);var c=useNavigate(),e=useCallback(function(a,b){c(\"?\"+C(a),b)},[c]);return[a,e]};export{w as BrowserRouter,x as HashRouter,y as Link,z as NavLink,A as Prompt,C as createSearchParams,B as usePrompt,useSearchParams}\n//# sourceMappingURL=index.js.map\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar GitHub = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\"\n }));\n});\nGitHub.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nGitHub.displayName = 'GitHub';\nexport default GitHub;","import { getURLAndInit } from 'src/misc/request-helper';\nimport { ClashAPIConfig } from 'src/types';\n\ntype VersionData = {\n version?: string;\n premium?: boolean;\n};\n\nexport async function fetchVersion(\n endpoint: string,\n apiConfig: ClashAPIConfig\n): Promise {\n let json = {};\n try {\n const { url, init } = getURLAndInit(apiConfig);\n const res = await fetch(url + endpoint, init);\n if (res.ok) {\n json = await res.json();\n }\n } catch (err) {\n // log and ignore\n // eslint-disable-next-line no-console\n console.log(`failed to fetch ${endpoint}`, err);\n }\n return json;\n}\n","import * as React from 'react';\nimport { GitHub } from 'react-feather';\nimport { useQuery } from 'react-query';\nimport { fetchVersion } from 'src/api/version';\nimport ContentHeader from 'src/components/ContentHeader';\nimport { connect } from 'src/components/StateProvider';\nimport { getClashAPIConfig } from 'src/store/app';\nimport { ClashAPIConfig } from 'src/types';\n\nimport s from './About.module.css';\n\ntype Props = { apiConfig: ClashAPIConfig };\n\nfunction Version({\n name,\n link,\n version,\n}: {\n name: string;\n link: string;\n version: string;\n}) {\n return (\n
\n );\n}\n\nfunction AboutImpl(props: Props) {\n const { data: version } = useQuery(\n ['/version', props.apiConfig],\n fetchVersion,\n {\n suspense: true,\n }\n );\n return (\n <>\n \n {version && version.version ? (\n \n ) : null}\n \n \n );\n}\n\nconst mapState = (s) => ({\n apiConfig: getClashAPIConfig(s),\n});\n\nexport const About = connect(mapState)(AboutImpl);\n","import {\n initialState as app,\n selectChartStyleIndex,\n updateAppConfig,\n updateCollapsibleIsOpen,\n} from './app';\nimport { initialState as configs } from './configs';\nimport { initialState as logs } from './logs';\nimport { initialState as modals } from './modals';\nimport { actions as proxiesActions, initialState as proxies } from './proxies';\n\nexport const initialState = {\n app: app(),\n modals,\n configs,\n proxies,\n logs,\n};\n\nexport const actions = {\n selectChartStyleIndex,\n updateAppConfig,\n\n app: {\n updateCollapsibleIsOpen,\n updateAppConfig,\n },\n proxies: proxiesActions,\n};\n","export const DOES_NOT_SUPPORT_FETCH = 0;\n\nexport const errors = {\n [DOES_NOT_SUPPORT_FETCH]: {\n message: 'Browser not supported!',\n detail: 'This browser does not support \"fetch\", please choose another one.'\n },\n default: {\n message: 'Oops, something went wrong!'\n }\n};\n\nexport function deriveMessageFromError(err) {\n const { code } = err;\n if (typeof code === 'number') {\n return errors[code];\n }\n return errors.default;\n}\n","import cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport s from './Field.module.css';\n\nconst { useCallback } = React;\n\nexport default function Field({ id, label, value, onChange, ...props }) {\n const valueOnChange = useCallback((e) => onChange(e), [onChange]);\n const labelClassName = cx({\n [s.floatAbove]: typeof value === 'string' && value !== '',\n });\n return (\n
\n \n \n
\n );\n}\n\nField.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n type: PropTypes.oneOf(['text', 'number']),\n onChange: PropTypes.func,\n id: PropTypes.string,\n label: PropTypes.string,\n};\n","import * as React from 'react';\nimport { fetchConfigs } from 'src/api/configs';\nimport { ClashAPIConfig } from 'src/types';\n\nimport { getClashAPIConfig, updateClashAPIConfig } from '../store/app';\nimport s0 from './APIConfig.module.css';\nimport Button from './Button';\nimport Field from './Field';\nimport { connect } from './StateProvider';\nimport SvgYacd from './SvgYacd';\n\nconst { useState, useRef, useCallback } = React;\nconst Ok = 0;\n\nconst mapState = (s) => ({\n apiConfig: getClashAPIConfig(s),\n});\n\nfunction APIConfig({ apiConfig, dispatch }) {\n const [baseURL, setBaseURL] = useState(apiConfig.baseURL);\n const [secret, setSecret] = useState(apiConfig.secret);\n const [errMsg, setErrMsg] = useState('');\n\n const userTouchedFlagRef = useRef(false);\n const contentEl = useRef(null);\n\n const handleInputOnChange = useCallback((e) => {\n userTouchedFlagRef.current = true;\n setErrMsg('');\n const target = e.target;\n const { name } = target;\n const value = target.value;\n switch (name) {\n case 'baseURL':\n setBaseURL(value);\n break;\n case 'secret':\n setSecret(value);\n break;\n default:\n throw new Error(`unknown input name ${name}`);\n }\n }, []);\n\n const onConfirm = useCallback(() => {\n verify({ baseURL, secret }).then((ret) => {\n if (ret[0] !== Ok) {\n setErrMsg(ret[1]);\n } else {\n dispatch(updateClashAPIConfig({ baseURL, secret }));\n }\n });\n }, [baseURL, secret, dispatch]);\n\n const handleContentOnKeyDown = useCallback(\n (e) => {\n if (e.key !== 'Enter') return;\n onConfirm();\n },\n [onConfirm]\n );\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n
\n
\n
\n \n
\n
\n
\n
\n \n \n
\n
\n
{errMsg ? errMsg : null}
\n
\n
\n
\n );\n}\n\nexport default connect(mapState)(APIConfig);\n\nasync function verify(apiConfig: ClashAPIConfig): Promise<[number, string?]> {\n try {\n new URL(apiConfig.baseURL);\n } catch (e) {\n return [1, 'Invalid URL'];\n }\n try {\n const res = await fetchConfigs(apiConfig);\n if (res.status > 399) {\n return [1, res.statusText];\n }\n return [Ok];\n } catch (e) {\n return [1, 'Failed to connect'];\n }\n}\n","import cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport Modal from 'react-modal';\n\nimport s0 from './Modal.module.css';\n\nfunction ModalAPIConfig({\n isOpen,\n onRequestClose,\n className,\n overlayClassName,\n children,\n ...otherProps\n}) {\n const contentCls = cx(className, s0.content);\n const overlayCls = cx(overlayClassName, s0.overlay);\n return (\n \n {children}\n \n );\n}\n\nModalAPIConfig.propTypes = {\n isOpen: PropTypes.bool.isRequired,\n onRequestClose: PropTypes.func.isRequired,\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n overlayClassName: PropTypes.string,\n};\n\nexport default React.memo(ModalAPIConfig);\n","import React from 'react';\n\nimport { DOES_NOT_SUPPORT_FETCH, errors } from '../misc/errors';\nimport { getClashAPIConfig } from '../store/app';\nimport { fetchConfigs } from '../store/configs';\nimport { closeModal } from '../store/modals';\nimport APIConfig from './APIConfig';\nimport s0 from './APIDiscovery.module.css';\nimport Modal from './Modal';\nimport { connect } from './StateProvider';\n\nconst { useCallback, useEffect } = React;\n\nfunction APIDiscovery({ dispatch, apiConfig, modals }) {\n if (!window.fetch) {\n const { detail } = errors[DOES_NOT_SUPPORT_FETCH];\n const err = new Error(detail);\n err.code = DOES_NOT_SUPPORT_FETCH;\n throw err;\n }\n\n const closeApiConfigModal = useCallback(() => {\n dispatch(closeModal('apiConfig'));\n }, [dispatch]);\n useEffect(() => {\n dispatch(fetchConfigs(apiConfig));\n }, [dispatch, apiConfig]);\n\n return (\n \n
\n \n
\n \n );\n}\n\nconst mapState = (s) => ({\n modals: s.modals,\n apiConfig: getClashAPIConfig(s),\n});\n\nexport default connect(mapState)(APIDiscovery);\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","const dsn = 'https://7068a15928ae45cf884dd8398fe8649c@sentry.io/1359284';\nlet Sentry;\nexport async function getSentry() {\n if (Sentry) return Sentry;\n const s = await import('@sentry/browser');\n s.init({ dsn });\n // eslint-disable-next-line require-atomic-updates\n Sentry = s;\n return Sentry;\n}\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nexport default function SvgGithub({ width = 24, height = 24 } = {}) {\n return (\n \n \n \n );\n}\n\nSvgGithub.propTypes = {\n width: PropTypes.number,\n height: PropTypes.number,\n};\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport s0 from './ErrorBoundaryFallback.module.css';\nimport SvgGithub from './SvgGithub';\nimport SvgYacd from './SvgYacd';\nconst yacdRepoIssueUrl = 'https://github.com/haishanh/yacd/issues';\n\nfunction ErrorBoundaryFallback({ message, detail }) {\n return (\n
\n
\n \n
\n {message ?

{message}

: null}\n {detail ?

{detail}

: null}\n

\n \n \n haishanh/yacd\n \n

\n
\n );\n}\n\nErrorBoundaryFallback.propTypes = {\n message: PropTypes.string,\n};\n\nexport default ErrorBoundaryFallback;\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\n\nimport { deriveMessageFromError } from '../misc/errors';\nimport { getSentry } from '../misc/sentry';\nimport ErrorBoundaryFallback from './ErrorBoundaryFallback';\n\n// XXX this is no Hook equivalents for componentDidCatch\n// we have to use class for now\n\nclass ErrorBoundary extends Component {\n static propTypes = {\n children: PropTypes.node,\n };\n\n state = { error: null };\n\n loadSentry = async () => {\n if (this.sentry) return this.sentry;\n const x = await getSentry();\n this.sentry = x;\n return this.sentry;\n };\n\n // static getDerivedStateFromError(error) {\n // return { error };\n // }\n\n componentDidMount() {\n // this.loadSentry();\n }\n\n componentDidCatch(error, _info) {\n this.setState({ error });\n // eslint-disable-next-line no-console\n // console.log(error, errorInfo);\n // this.setState({ error });\n // this.loadSentry().then(Sentry => {\n // Sentry.withScope(scope => {\n // Object.keys(errorInfo).forEach(key => {\n // scope.setExtra(key, errorInfo[key]);\n // });\n // Sentry.captureException(error);\n // });\n // });\n }\n\n showReportDialog = () => {\n this.loadSentry().then((Sentry) => Sentry.showReportDialog());\n };\n\n render() {\n if (this.state.error) {\n const { message, detail } = deriveMessageFromError(this.state.error);\n //render fallback UI\n return ;\n } else {\n return this.props.children;\n }\n }\n}\n\nexport default ErrorBoundary;\n","import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport s0 from './Loading.module.css';\n\nconst Loading = ({ height }) => {\n const style = height ? { height } : {};\n return (\n
\n
\n
\n );\n};\n\nLoading.propTypes = {\n height: PropTypes.string,\n};\n\nexport default Loading;\n","import React, { useMemo } from 'react';\n\nimport { fetchData } from '../api/traffic';\nimport useLineChart from '../hooks/useLineChart';\nimport {\n chartJSResource,\n chartStyles,\n commonDataSetProps,\n} from '../misc/chart';\nimport { getClashAPIConfig, getSelectedChartStyleIndex } from '../store/app';\nimport { connect } from './StateProvider';\n\nconst chartWrapperStyle = {\n // make chartjs chart responsive\n position: 'relative',\n maxWidth: 1000,\n};\n\nconst mapState = (s) => ({\n apiConfig: getClashAPIConfig(s),\n selectedChartStyleIndex: getSelectedChartStyleIndex(s),\n});\n\nexport default connect(mapState)(TrafficChart);\n\nfunction TrafficChart({ apiConfig, selectedChartStyleIndex }) {\n const Chart = chartJSResource.read();\n const { hostname, port, secret } = apiConfig;\n const traffic = fetchData({ hostname, port, secret });\n const data = useMemo(\n () => ({\n labels: traffic.labels,\n datasets: [\n {\n ...commonDataSetProps,\n ...chartStyles[selectedChartStyleIndex].up,\n label: 'Up',\n data: traffic.up,\n },\n {\n ...commonDataSetProps,\n ...chartStyles[selectedChartStyleIndex].down,\n label: 'Down',\n data: traffic.down,\n },\n ],\n }),\n [traffic, selectedChartStyleIndex]\n );\n\n useLineChart(Chart, 'trafficChart', data, traffic);\n\n return (\n
\n \n
\n );\n}\n","import React from 'react';\n\nimport * as connAPI from '../api/connections';\nimport { fetchData } from '../api/traffic';\nimport prettyBytes from '../misc/pretty-bytes';\nimport { getClashAPIConfig } from '../store/app';\nimport { connect } from './StateProvider';\nimport s0 from './TrafficNow.module.css';\n\nconst { useState, useEffect, useCallback } = React;\n\nconst mapState = (s) => ({\n apiConfig: getClashAPIConfig(s),\n});\nexport default connect(mapState)(TrafficNow);\n\nfunction TrafficNow({ apiConfig }) {\n const { upStr, downStr } = useSpeed(apiConfig);\n const { upTotal, dlTotal, connNumber } = useConnection(apiConfig);\n return (\n
\n
\n
Upload
\n
{upStr}
\n
\n
\n
Download
\n
{downStr}
\n
\n
\n
Upload Total
\n
{upTotal}
\n
\n
\n
Download Total
\n
{dlTotal}
\n
\n
\n
Active Connections
\n
{connNumber}
\n
\n
\n );\n}\n\nfunction useSpeed(apiConfig) {\n const [speed, setSpeed] = useState({ upStr: '0 B/s', downStr: '0 B/s' });\n useEffect(() => {\n return fetchData(apiConfig).subscribe((o) =>\n setSpeed({\n upStr: prettyBytes(o.up) + '/s',\n downStr: prettyBytes(o.down) + '/s',\n })\n );\n }, [apiConfig]);\n return speed;\n}\n\nfunction useConnection(apiConfig) {\n const [state, setState] = useState({\n upTotal: '0 B',\n dlTotal: '0 B',\n connNumber: 0,\n });\n const read = useCallback(\n ({ downloadTotal, uploadTotal, connections }) => {\n setState({\n upTotal: prettyBytes(uploadTotal),\n dlTotal: prettyBytes(downloadTotal),\n connNumber: connections.length,\n });\n },\n [setState]\n );\n useEffect(() => {\n return connAPI.fetchData(apiConfig, read);\n }, [apiConfig, read]);\n return state;\n}\n","import React, { Suspense } from 'react';\n\nimport ContentHeader from './ContentHeader';\nimport s0 from './Home.module.css';\nimport Loading from './Loading';\nimport TrafficChart from './TrafficChart';\nimport TrafficNow from './TrafficNow';\n\nexport default function Home() {\n return (\n
\n \n
\n
\n \n
\n
\n }>\n \n \n
\n
\n
\n );\n}\n","import React from 'react';\n\nimport s0 from './Loading2.module.css';\nimport SvgYacd from './SvgYacd';\n\nfunction Loading() {\n return (\n
\n \n
\n );\n}\n\nexport default Loading;\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React, { forwardRef } from 'react';\nimport PropTypes from 'prop-types';\nvar Info = forwardRef(function (_ref, ref) {\n var _ref$color = _ref.color,\n color = _ref$color === void 0 ? 'currentColor' : _ref$color,\n _ref$size = _ref.size,\n size = _ref$size === void 0 ? 24 : _ref$size,\n rest = _objectWithoutProperties(_ref, [\"color\", \"size\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n ref: ref,\n xmlns: \"http://www.w3.org/2000/svg\",\n width: size,\n height: size,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }, rest), /*#__PURE__*/React.createElement(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"16\",\n x2: \"12\",\n y2: \"12\"\n }), /*#__PURE__*/React.createElement(\"line\", {\n x1: \"12\",\n y1: \"8\",\n x2: \"12.01\",\n y2: \"8\"\n }));\n});\nInfo.propTypes = {\n color: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n};\nInfo.displayName = 'Info';\nexport default Info;","import * as React from 'react';\nexport var DefaultContext = {\n color: undefined,\n size: undefined,\n className: undefined,\n style: undefined,\n attr: undefined\n};\nexport var IconContext = React.createContext && React.createContext(DefaultContext);","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]];\n return t;\n};\n\nimport * as React from 'react';\nimport { IconContext, DefaultContext } from './iconContext';\n\nfunction Tree2Element(tree) {\n return tree && tree.map(function (node, i) {\n return React.createElement(node.tag, __assign({\n key: i\n }, node.attr), Tree2Element(node.child));\n });\n}\n\nexport function GenIcon(data) {\n return function (props) {\n return React.createElement(IconBase, __assign({\n attr: __assign({}, data.attr)\n }, props), Tree2Element(data.child));\n };\n}\nexport function IconBase(props) {\n var elem = function (conf) {\n var computedSize = props.size || conf.size || \"1em\";\n var className;\n if (conf.className) className = conf.className;\n if (props.className) className = (className ? className + ' ' : '') + props.className;\n\n var attr = props.attr,\n title = props.title,\n svgProps = __rest(props, [\"attr\", \"title\"]);\n\n return React.createElement(\"svg\", __assign({\n stroke: \"currentColor\",\n fill: \"currentColor\",\n strokeWidth: \"0\"\n }, conf.attr, attr, svgProps, {\n className: className,\n style: __assign({\n color: props.color || conf.color\n }, conf.style, props.style),\n height: computedSize,\n width: computedSize,\n xmlns: \"http://www.w3.org/2000/svg\"\n }), title && React.createElement(\"title\", null, title), props.children);\n };\n\n return IconContext !== undefined ? React.createElement(IconContext.Consumer, null, function (conf) {\n return elem(conf);\n }) : elem(DefaultContext);\n}","import cx from 'clsx';\nimport { motion } from 'framer-motion';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { Info } from 'react-feather';\nimport {\n FcAreaChart,\n FcDocument,\n FcGlobe,\n FcLink,\n FcRuler,\n FcSettings,\n} from 'react-icons/fc';\nimport { Link, useLocation } from 'react-router-dom';\n\nimport { getTheme, switchTheme } from '../store/app';\nimport s from './SideBar.module.css';\nimport { connect } from './StateProvider';\n\nconst { useCallback } = React;\n\n// testing color icons\n\n// const icons = {\n// activity: Activity,\n// globe: Globe,\n// command: Command,\n// file: File,\n// settings: Settings,\n// link: Link2\n// };\n\nconst icons = {\n activity: FcAreaChart,\n globe: FcGlobe,\n command: FcRuler,\n file: FcDocument,\n settings: FcSettings,\n link: FcLink,\n};\n\nconst SideBarRow = React.memo(function SideBarRow({\n isActive,\n to,\n iconId,\n labelText,\n}) {\n const Comp = icons[iconId];\n const className = cx(s.row, isActive ? s.rowActive : null);\n return (\n \n \n
{labelText}
\n \n );\n});\n\nSideBarRow.propTypes = {\n isActive: PropTypes.bool.isRequired,\n to: PropTypes.string.isRequired,\n iconId: PropTypes.string,\n labelText: PropTypes.string,\n};\n\nconst pages = [\n {\n to: '/',\n iconId: 'activity',\n labelText: 'Overview',\n },\n {\n to: '/proxies',\n iconId: 'globe',\n labelText: 'Proxies',\n },\n {\n to: '/rules',\n iconId: 'command',\n labelText: 'Rules',\n },\n {\n to: '/connections',\n iconId: 'link',\n labelText: 'Conns',\n },\n {\n to: '/configs',\n iconId: 'settings',\n labelText: 'Config',\n },\n {\n to: '/logs',\n iconId: 'file',\n labelText: 'Logs',\n },\n];\n\nfunction SideBar({ dispatch, theme }) {\n const location = useLocation();\n const switchThemeHooked = useCallback(() => {\n dispatch(switchTheme());\n }, [dispatch]);\n return (\n
\n
\n
\n {pages.map(({ to, iconId, labelText }) => (\n \n ))}\n
\n
\n \n {theme === 'light' ? : }\n \n \n \n \n
\n
\n );\n}\n\nfunction MoonA() {\n return (\n \n \n \n );\n}\n\nfunction Sun() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nconst mapState = (s) => ({ theme: getTheme(s) });\nexport default connect(mapState)(SideBar);\n","// THIS FILE IS AUTO GENERATED\nimport { GenIcon } from '../lib';\nexport function FcAbout (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#2196F3\",\"d\":\"M37,40H11l-6,6V12c0-3.3,2.7-6,6-6h26c3.3,0,6,2.7,6,6v22C43,37.3,40.3,40,37,40z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#fff\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"20\",\"width\":\"4\",\"height\":\"11\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"15\",\"r\":\"2\"}}]}]})(props);\n};\nexport function FcAcceptDatabase (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#D1C4E9\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#43A047\",\"cx\":\"38\",\"cy\":\"38\",\"r\":\"10\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#DCEDC8\",\"points\":\"42.5,33.3 36.8,39 34.1,36.3 32,38.5 36.8,43.3 44.6,35.5\"}}]})(props);\n};\nexport function FcAddColumn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M30,5H18c-2.2,0-4,1.8-4,4v30c0,2.2,1.8,4,4,4h12c2.2,0,4-1.8,4-4V9C34,6.8,32.2,5,30,5z M18,39V9h12l0,30 H18z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#43A047\",\"cx\":\"38\",\"cy\":\"38\",\"r\":\"10\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#fff\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"36\",\"y\":\"32\",\"width\":\"4\",\"height\":\"12\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"36\",\"width\":\"12\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcAddDatabase (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#D1C4E9\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#43A047\",\"cx\":\"38\",\"cy\":\"38\",\"r\":\"10\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#fff\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"36\",\"y\":\"32\",\"width\":\"4\",\"height\":\"12\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"36\",\"width\":\"12\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcAddImage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#8CBCD6\",\"d\":\"M40,41H8c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v26C44,39.2,42.2,41,40,41z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#B3DDF5\",\"cx\":\"35\",\"cy\":\"16\",\"r\":\"3\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#9AC9E3\",\"points\":\"20,16 9,32 31,32\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#B3DDF5\",\"points\":\"31,22 23,32 39,32\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#43A047\",\"cx\":\"38\",\"cy\":\"38\",\"r\":\"10\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#fff\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"36\",\"y\":\"32\",\"width\":\"4\",\"height\":\"12\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"36\",\"width\":\"12\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcAddRow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M43,30V18c0-2.2-1.8-4-4-4H9c-2.2,0-4,1.8-4,4v12c0,2.2,1.8,4,4,4h30C41.2,34,43,32.2,43,30z M9,18h30v12 L9,30V18z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#43A047\",\"cx\":\"38\",\"cy\":\"38\",\"r\":\"10\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#fff\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"36\",\"width\":\"12\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"36\",\"y\":\"32\",\"width\":\"4\",\"height\":\"12\"}}]}]})(props);\n};\nexport function FcAddressBook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#673AB7\",\"d\":\"M38,44H12V4h26c2.2,0,4,1.8,4,4v32C42,42.2,40.2,44,38,44z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#311B92\",\"d\":\"M10,4h2v40h-2c-2.2,0-4-1.8-4-4V8C6,5.8,7.8,4,10,4z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#fff\",\"d\":\"M36,24.2c-0.1,4.8-3.1,6.9-5.3,6.7c-0.6-0.1-2.1-0.1-2.9-1.6c-0.8,1-1.8,1.6-3.1,1.6c-2.6,0-3.3-2.5-3.4-3.1 c-0.1-0.7-0.2-1.4-0.1-2.2c0.1-1,1.1-6.5,5.7-6.5c2.2,0,3.5,1.1,3.7,1.3L30,27.2c0,0.3-0.2,1.6,1.1,1.6c2.1,0,2.4-3.9,2.4-4.6 c0.1-1.2,0.3-8.2-7-8.2c-6.9,0-7.9,7.4-8,9.2c-0.5,8.5,6,8.5,7.2,8.5c1.7,0,3.7-0.7,3.9-0.8l0.4,2c-0.3,0.2-2,1.1-4.4,1.1 c-2.2,0-10.1-0.4-9.8-10.8C16.1,23.1,17.4,14,26.6,14C35.8,14,36,22.1,36,24.2z M24.1,25.5c-0.1,1,0,1.8,0.2,2.3 c0.2,0.5,0.6,0.8,1.2,0.8c0.1,0,0.3,0,0.4-0.1c0.2-0.1,0.3-0.1,0.5-0.3c0.2-0.1,0.3-0.3,0.5-0.6c0.2-0.2,0.3-0.6,0.4-1l0.5-5.4 c-0.2-0.1-0.5-0.1-0.7-0.1c-0.5,0-0.9,0.1-1.2,0.3c-0.3,0.2-0.6,0.5-0.9,0.8c-0.2,0.4-0.4,0.8-0.6,1.3S24.2,24.8,24.1,25.5z\"}}]})(props);\n};\nexport function FcAdvance (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#1565C0\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"46.1,24 33,35 33,13\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"10\",\"y\":\"20\",\"width\":\"4\",\"height\":\"8\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"20\",\"width\":\"4\",\"height\":\"8\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"20\",\"width\":\"4\",\"height\":\"8\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"20\",\"width\":\"14\",\"height\":\"8\"}}]}]})(props);\n};\nexport function FcAdvertising (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#90CAF9\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.4,33H15v-4h4l0.4,1.5C19.7,31.8,18.7,33,17.4,33z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M37,36c0,0-11.8-7-18-7V15c5.8,0,18-7,18-7V36z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#283593\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"9\",\"cy\":\"22\",\"r\":\"5\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M40,19h-3v6h3c1.7,0,3-1.3,3-3S41.7,19,40,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18.6,41.2c-0.9,0.6-2.5,1.2-4.6,1.4c-0.6,0.1-1.2-0.3-1.4-1L8.2,27.9c0,0,8.8-6.2,8.8,1.1 c0,5.5,1.5,8.4,2.2,9.5c0.5,0.7,0.5,1.6,0,2.3C19,41,18.8,41.1,18.6,41.2z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M9,29h10V15H9c-1.1,0-2,0.9-2,2v10C7,28.1,7.9,29,9,29z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#42A5F5\",\"d\":\"M38,38L38,38c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h0c1.1,0,2,0.9,2,2v28C40,37.1,39.1,38,38,38z\"}}]})(props);\n};\nexport function FcAlarmClock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M38.5,44.6l-4-4l2.1-2.1l4,4c0.6,0.6,0.6,1.5,0,2.1l0,0C40.1,45.1,39.1,45.1,38.5,44.6z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.5,44.6l4-4l-2.1-2.1l-4,4c-0.6,0.6-0.6,1.5,0,2.1l0,0C7.9,45.1,8.9,45.1,9.5,44.6z\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#C62828\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"20\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#eee\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"16\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"22.1\",\"transform\":\"matrix(-.707 -.707 .707 -.707 12.904 62.537)\",\"fill\":\"#E53935\",\"width\":\".8\",\"height\":\"13\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"23\",\"y\":\"11\",\"width\":\"2\",\"height\":\"13\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"26.1\",\"y\":\"22.7\",\"transform\":\"matrix(-.707 .707 -.707 -.707 65.787 27.25)\",\"width\":\"2.3\",\"height\":\"9.2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"24\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#C62828\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"1\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"1\",\"fill\":\"#37474F\",\"width\":\"4\",\"height\":\"3\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M44.4,16.2c2.5-3.5,2.1-8.4-1-11.5c-3.1-3.1-8-3.5-11.5-1L44.4,16.2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M3.6,16.2c-2.5-3.5-2.1-8.4,1-11.5c3.1-3.1,8-3.5,11.5-1L3.6,16.2z\"}}]}]})(props);\n};\nexport function FcAlphabeticalSortingAz (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#546E7A\",\"points\":\"38,33 38,5 34,5 34,33 28,33 36,43 44,33\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.8,17.2h-5.3l-1.1,3H6.9L12.6,5h2.9l5.7,15.2h-3.2L16.8,17.2z M12.2,14.5H16l-1.9-5.7L12.2,14.5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12.4,40.5H20V43H8.4v-1.9L16,30.3H8.4v-2.5h11.4v1.7L12.4,40.5z\"}}]}]})(props);\n};\nexport function FcAlphabeticalSortingZa (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.8,40h-5.3l-1.1,3H6.9l5.7-15.2h2.9L21.1,43h-3.2L16.8,40z M12.2,37.3H16l-1.9-5.7L12.2,37.3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M12.4,17.7H20v2.5H8.4v-1.9L16,7.5H8.4V5h11.4v1.7L12.4,17.7z\"}}]},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#546E7A\",\"points\":\"38,33 38,5 34,5 34,33 28,33 36,43 44,33\"}}]})(props);\n};\nexport function FcAndroidOs (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#7CB342\",\"d\":\"M12,29.001c0,1.104-0.896,2-2,2l0,0c-1.104,0-2-0.896-2-2v-9c0-1.104,0.896-2,2-2l0,0c1.104,0,2,0.896,2,2\\r\\n\\t\\tV29.001z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#7CB342\",\"d\":\"M40,29.001c0,1.104-0.896,2-2,2l0,0c-1.104,0-2-0.896-2-2v-9c0-1.104,0.896-2,2-2l0,0c1.104,0,2,0.896,2,2\\r\\n\\t\\tV29.001z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#7CB342\",\"d\":\"M22,40c0,1.104-0.896,2-2,2l0,0c-1.104,0-2-0.896-2-2v-9c0-1.104,0.896-2,2-2l0,0c1.104,0,2,0.896,2,2V40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#7CB342\",\"d\":\"M30,40c0,1.104-0.896,2-2,2l0,0c-1.104,0-2-0.896-2-2v-9c0-1.104,0.896-2,2-2l0,0c1.104,0,2,0.896,2,2V40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#7CB342\",\"d\":\"M14,18.001V33c0,1.104,0.896,2,2,2h16c1.104,0,2-0.896,2-2V18.001H14z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#7CB342\",\"d\":\"M24,8c-6,0-9.655,3.645-10,8h20C33.654,11.645,30,8,24,8z M20,13.598c-0.552,0-1-0.448-1-1s0.448-1,1-1\\r\\n\\t\\ts1,0.448,1,1S20.552,13.598,20,13.598z M28,13.598c-0.553,0-1-0.448-1-1s0.447-1,1-1s1,0.448,1,1S28.553,13.598,28,13.598z\"}},{\"tag\":\"line\",\"attr\":{\"fill\":\"none\",\"stroke\":\"#7CB342\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"x1\":\"30\",\"y1\":\"7\",\"x2\":\"28.334\",\"y2\":\"9.499\"}},{\"tag\":\"line\",\"attr\":{\"fill\":\"none\",\"stroke\":\"#7CB342\",\"strokeWidth\":\"2\",\"strokeLinecap\":\"round\",\"x1\":\"18\",\"y1\":\"7\",\"x2\":\"19.333\",\"y2\":\"9.082\"}}]}]})(props);\n};\nexport function FcAnswers (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#42A5F5\",\"points\":\"36,44 8,44 8,8 28,8 36,16\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#90CAF9\",\"points\":\"40,40 12,40 12,4 32,4 40,12\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#E1F5FE\",\"points\":\"38.5,13 31,13 31,5.5\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#1976D2\",\"d\":\"M23.4,29.9c0-0.2,0-0.4,0.1-0.6s0.2-0.3,0.3-0.5s0.3-0.2,0.5-0.3s0.4-0.1,0.6-0.1s0.5,0,0.7,0.1 s0.4,0.2,0.5,0.3s0.2,0.3,0.3,0.5s0.1,0.4,0.1,0.6s0,0.4-0.1,0.6s-0.2,0.3-0.3,0.5s-0.3,0.2-0.5,0.3s-0.4,0.1-0.7,0.1 s-0.5,0-0.6-0.1s-0.4-0.2-0.5-0.3s-0.2-0.3-0.3-0.5S23.4,30.1,23.4,29.9z M26.1,26.8h-2.3L23.4,17h3L26.1,26.8z\"}}]})(props);\n};\nexport function FcApproval (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#8BC34A\",\"points\":\"24,3 28.7,6.6 34.5,5.8 36.7,11.3 42.2,13.5 41.4,19.3 45,24 41.4,28.7 42.2,34.5 36.7,36.7 34.5,42.2 28.7,41.4 24,45 19.3,41.4 13.5,42.2 11.3,36.7 5.8,34.5 6.6,28.7 3,24 6.6,19.3 5.8,13.5 11.3,11.3 13.5,5.8 19.3,6.6\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#CCFF90\",\"points\":\"34.6,14.6 21,28.2 15.4,22.6 12.6,25.4 21,33.8 37.4,17.4\"}}]})(props);\n};\nexport function FcApprove (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFCC80\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z\"}}]},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#4CAF50\",\"points\":\"32.6,18.6 22.3,28.9 17.4,24 14.6,26.8 22.3,34.5 35.4,21.4\"}}]})(props);\n};\nexport function FcAreaChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"42,37 6,37 6,25 16,10 30,17 42,6\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#00BCD4\",\"points\":\"42,42 6,42 6,32 16,24 30,26 42,17\"}}]})(props);\n};\nexport function FcAssistant (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFA726\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"26\",\"r\":\"4\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF5722\",\"d\":\"M24,3C14.6,3,7,10.6,7,20c0,1.2,0,3.4,0,3.4L9,25v-3l21-9.8l9,9.8v3l2-1.6c0,0,0-2.1,0-3.4 C41,12,35.3,3,24,3z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#784719\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"31\",\"cy\":\"26\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17\",\"cy\":\"26\",\"r\":\"2\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#757575\",\"d\":\"M43,24c-0.6,0-1,0.4-1,1v-7c0-8.8-7.2-16-16-16h-7c-0.6,0-1,0.4-1,1s0.4,1,1,1h7c7.7,0,14,6.3,14,14v10 c0,0.6,0.4,1,1,1s1-0.4,1-1v2c0,3.9-3.1,7-7,7H24c-0.6,0-1,0.4-1,1s0.4,1,1,1h11c5,0,9-4,9-9v-5C44,24.4,43.6,24,43,24z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M43,22h-1c-1.1,0-2,0.9-2,2v4c0,1.1,0.9,2,2,2h1c1.1,0,2-0.9,2-2v-4C45,22.9,44.1,22,43,22z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"38\",\"r\":\"2\"}}]}]})(props);\n};\nexport function FcAudioFile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"204\",\"fill\":\"none\",\"width\":\"48\",\"height\":\"48\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#90CAF9\",\"points\":\"244,45 212,45 212,3 234,3 244,13\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#E1F5FE\",\"points\":\"242.5,14 233,14 233,4.5\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1976D2\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"227\",\"cy\":\"30\",\"r\":\"4\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"234,21 229,19 229,30 231,30 231,22.9 234,24\"}}]},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#90CAF9\",\"points\":\"40,45 8,45 8,3 30,3 40,13\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#E1F5FE\",\"points\":\"38.5,14 29,14 29,4.5\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1976D2\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"23\",\"cy\":\"30\",\"r\":\"4\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"30,21 25,19 25,30 27,30 27,22.9 30,24\"}}]}]})(props);\n};\nexport function FcAutomatic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M39,43H9c-2.2,0-4-1.8-4-4V9c0-2.2,1.8-4,4-4h30c2.2,0,4,1.8,4,4v30C43,41.2,41.2,43,39,43z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B3E5FC\",\"d\":\"M33.6,25.4c0.1-0.4,0.1-0.9,0.1-1.4s0-0.9-0.1-1.4l2.8-2c0.3-0.2,0.4-0.6,0.2-0.9l-2.7-4.6 c-0.2-0.3-0.5-0.4-0.8-0.3L30,16.3c-0.7-0.6-1.5-1-2.4-1.4l-0.3-3.4c0-0.3-0.3-0.6-0.6-0.6h-5.3c-0.3,0-0.6,0.3-0.6,0.6L20.4,15 c-0.9,0.3-1.6,0.8-2.4,1.4l-3.1-1.4c-0.3-0.1-0.7,0-0.8,0.3l-2.7,4.6c-0.2,0.3-0.1,0.7,0.2,0.9l2.8,2c-0.1,0.4-0.1,0.9-0.1,1.4 s0,0.9,0.1,1.4l-2.8,2c-0.3,0.2-0.4,0.6-0.2,0.9l2.7,4.6c0.2,0.3,0.5,0.4,0.8,0.3l3.1-1.4c0.7,0.6,1.5,1,2.4,1.4l0.3,3.4 c0,0.3,0.3,0.6,0.6,0.6h5.3c0.3,0,0.6-0.3,0.6-0.6l0.3-3.4c0.9-0.3,1.6-0.8,2.4-1.4l3.1,1.4c0.3,0.1,0.7,0,0.8-0.3l2.7-4.6 c0.2-0.3,0.1-0.7-0.2-0.9L33.6,25.4z M24,29c-2.8,0-5-2.2-5-5c0-2.8,2.2-5,5-5c2.8,0,5,2.2,5,5C29,26.8,26.8,29,24,29z\"}}]})(props);\n};\nexport function FcAutomotive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"none\",\"stroke\":\"#F44336\",\"strokeWidth\":\"4\",\"strokeMiterlimit\":\"10\",\"d\":\"M7,20v-8c0-2.2,1.8-4,4-4h14c1.2,0,2.4,0.6,3.2,1.6 L35,18\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"35\",\"cy\":\"37\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"13\",\"cy\":\"37\",\"r\":\"5\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M40.2,17L33,14H7c-1.2,0-2,0.8-2,2v10c0,1.2,0.8,2,2,2h1c0-2.8,2.2-5,5-5s5,2.2,5,5h12c0-2.8,2.2-5,5-5 s5,2.2,5,5h1c1.2,0,2-0.8,2-2v-5.2C43,19.2,41.8,17.6,40.2,17z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#546E7A\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"37\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"35\",\"cy\":\"37\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"13\",\"cy\":\"37\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M30.4,39c-0.3-0.6-0.4-1.3-0.4-2s0.2-1.4,0.4-2H17.6c0.3,0.6,0.4,1.3,0.4,2s-0.2,1.4-0.4,2H30.4z\"}}]}]})(props);\n};\nexport function FcBadDecision (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFCC80\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z\"}}]},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"24\",\"fill\":\"#F44336\",\"width\":\"16\",\"height\":\"4\"}}]})(props);\n};\nexport function FcBarChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#00BCD4\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"22\",\"width\":\"10\",\"height\":\"20\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"12\",\"width\":\"10\",\"height\":\"30\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"6\",\"width\":\"10\",\"height\":\"36\"}}]}]})(props);\n};\nexport function FcBbc (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M0,17v14h14V17H0z M34,17v14h14V17H34z M17,17v14h14V17H17z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFFFFF\",\"d\":\"M8.2,23.7c0,0,1.3-0.5,1.3-2c0,0,0.2-2.4-3-2.7H3v10h4c0,0,3.4,0,3.4-2.8C10.4,26.2,10.5,24.3,8.2,23.7z\\r\\n\\t M4.8,20.6h1.4c1.5,0.1,1.4,1.2,1.4,1.2c0,1.4-1.6,1.4-1.6,1.4H4.8V20.6z M6.7,27.5H4.8v-2.7h1.9c1.9,0,1.9,1.3,1.9,1.3\\r\\n\\tC8.5,27.5,6.7,27.5,6.7,27.5z M25.2,23.7c0,0,1.3-0.5,1.3-2c0,0,0.2-2.4-3-2.7H20v10h4c0,0,3.4,0,3.4-2.8\\r\\n\\tC27.4,26.2,27.5,24.3,25.2,23.7z M21.8,20.6h1.4c1.5,0.1,1.4,1.2,1.4,1.2c0,1.4-1.6,1.4-1.6,1.4h-1.2V20.6z M23.7,27.5h-1.9v-2.7\\r\\n\\th1.9c1.9,0,1.9,1.3,1.9,1.3C25.5,27.5,23.7,27.5,23.7,27.5z M45.3,28.1c0,0-2.9,1.8-6.3,0.4c0,0-2.9-1.1-3-4.5c0,0-0.1-3.5,3.7-4.7\\r\\n\\tc0,0,1-0.4,2.8-0.2c0,0,1.1,0.1,2.7,0.8v1.8c0,0-1.7-1.1-3.7-1.1c0,0-3.6-0.1-3.8,3.5c0,0-0.1,3.3,3.7,3.4c0,0,1.6,0.2,3.8-1.2\\r\\n\\tL45.3,28.1L45.3,28.1z\"}}]})(props);\n};\nexport function FcBearish (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#F44336\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"40\",\"y\":\"34\",\"width\":\"4\",\"height\":\"10\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"34\",\"y\":\"29\",\"width\":\"4\",\"height\":\"15\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"28\",\"y\":\"33\",\"width\":\"4\",\"height\":\"11\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"25\",\"width\":\"4\",\"height\":\"19\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"28\",\"width\":\"4\",\"height\":\"16\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"10\",\"y\":\"24\",\"width\":\"4\",\"height\":\"20\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"19\",\"width\":\"4\",\"height\":\"25\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#D32F2F\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"34,13.2 30,17.2 20,7.2 15,12.2 7.4,4.6 4.6,7.4 15,17.8 20,12.8 30,22.8 34,18.8 40.1,24.9 42.9,22.1\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"44,26 35,26 44,17\"}}]}]})(props);\n};\nexport function FcBinoculars (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"33\",\"cy\":\"16\",\"r\":\"6\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"16\",\"r\":\"6\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M46.7,25l-15.3,3H16.7L1.4,25l4.3-7.9c1.1-1.9,3.1-3.1,5.3-3.1h26.2c2.2,0,4.2,1.2,5.3,3.1L46.7,25z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"30\",\"r\":\"10\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"30\",\"r\":\"10\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"28\",\"r\":\"5\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#546E7A\",\"cx\":\"24\",\"cy\":\"28\",\"r\":\"2\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#a0f\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"30\",\"r\":\"7\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"30\",\"r\":\"7\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#CE93D8\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M41.7,27.7c-1-1.1-2.3-1.7-3.7-1.7s-2.8,0.6-3.7,1.7c-0.4,0.4-0.3,1,0.1,1.4c0.4,0.4,1,0.3,1.4-0.1 c1.2-1.3,3.3-1.3,4.5,0c0.2,0.2,0.5,0.3,0.7,0.3c0.2,0,0.5-0.1,0.7-0.3C42.1,28.7,42.1,28.1,41.7,27.7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,26c-1.4,0-2.8,0.6-3.7,1.7c-0.4,0.4-0.3,1,0.1,1.4c0.4,0.4,1,0.3,1.4-0.1c1.2-1.3,3.3-1.3,4.5,0 c0.2,0.2,0.5,0.3,0.7,0.3c0.2,0,0.5-0.1,0.7-0.3c0.4-0.4,0.4-1,0.1-1.4C12.8,26.6,11.4,26,10,26z\"}}]}]})(props);\n};\nexport function FcBiohazard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#00A344\",\"d\":\"M24,13c-7.2,0-13,5.8-13,13s5.8,13,13,13s13-5.8,13-13S31.2,13,24,13z M24,35c-5,0-9-4-9-9s4-9,9-9s9,4,9,9 S29,35,24,35z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#00C853\",\"d\":\"M8.5,25.4c4-2.2,9-1.1,11.5,2.5c0.1,0.1,0.2,0.1,0.3,0.1l1.2-0.7c0.1-0.1,0.2-0.2,0.1-0.3 c0-0.2-0.1-0.4-0.1-0.6c0,0,0,0,0,0c0-0.1,0-0.1,0-0.2c0,0,0,0,0,0c0-0.1,0-0.1,0-0.2c0,0,0,0,0,0c0-0.1,0-0.1,0-0.2l0,0 c0-0.1,0-0.1,0.1-0.2c0,0,0,0,0,0c0-0.1,0-0.1,0.1-0.2c0,0,0,0,0,0c0,0,0-0.1,0.1-0.1c0,0,0-0.1,0.1-0.1c0,0,0-0.1,0.1-0.1 c0,0,0.1-0.1,0.1-0.1c0,0,0,0,0,0c0,0,0.1-0.1,0.1-0.1c0,0,0,0,0,0c0,0,0.1-0.1,0.1-0.1c0,0,0,0,0,0c0,0,0.1-0.1,0.1-0.1 c0,0,0,0,0,0c0,0,0.1-0.1,0.1-0.1c0,0,0,0,0.1,0c0.2-0.1,0.4-0.2,0.5-0.2c0.1,0,0.2-0.1,0.2-0.3v-1.3c0-0.1-0.1-0.2-0.2-0.2 c-4.5-0.4-8-4.1-8-8.6c0-4.1,3-7.6,6.9-8.4c0.1,0,0.2-0.1,0.2-0.3V4.8c0-0.1-0.1-0.2-0.2-0.2C16.4,5.5,12,10.4,12,16.3 c0,1.3,0.2,2.6,0.6,3.8c-1.2,0.2-2.5,0.7-3.6,1.3c-5.2,3-7.3,9.2-5.2,14.5C3.9,36,4,36,4.1,36l0.3-0.2c0.1-0.1,0.2-0.2,0.1-0.3 C3.3,31.7,4.8,27.4,8.5,25.4L8.5,25.4z M39,21.4c-1.2-0.7-2.4-1.1-3.6-1.3c0.4-1.2,0.6-2.4,0.6-3.8c0-5.9-4.4-10.8-10.2-11.7 c-0.1,0-0.2,0.1-0.2,0.2v0.4c0,0.1,0.1,0.2,0.2,0.3c4,0.8,6.9,4.3,6.9,8.4c0,4.5-3.5,8.2-8,8.6c-0.1,0-0.2,0.1-0.2,0.2v1.3 c0,0.1,0.1,0.2,0.2,0.3c0.2,0.1,0.4,0.1,0.6,0.2c0,0,0,0,0,0c0,0,0.1,0.1,0.1,0.1c0,0,0,0,0,0c0.1,0,0.1,0.1,0.1,0.1c0,0,0,0,0,0 c0.1,0.1,0.2,0.2,0.3,0.3c0,0,0,0,0,0c0,0,0.1,0.1,0.1,0.1c0,0,0,0,0,0c0,0,0.1,0.1,0.1,0.1c0,0,0,0.1,0,0.1c0,0,0,0.1,0,0.1 c0,0,0,0.1,0.1,0.1c0,0,0,0,0,0c0,0.1,0,0.1,0.1,0.2c0,0,0,0,0,0c0,0.1,0,0.1,0,0.2c0,0,0,0,0,0c0,0.1,0,0.1,0,0.2c0,0,0,0,0,0.1 c0,0,0,0.1,0,0.1c0,0,0,0,0,0.1c0,0.2,0,0.4-0.1,0.6c0,0.1,0,0.2,0.1,0.3l1.2,0.7c0.1,0.1,0.2,0,0.3-0.1c2.6-3.6,7.6-4.8,11.5-2.5 c3.6,2.1,5.2,6.3,3.9,10.1c0,0.1,0,0.2,0.1,0.3l0.3,0.2c0.1,0.1,0.2,0,0.3-0.1C46.3,30.5,44.2,24.3,39,21.4L39,21.4z M30.8,40.3 c-4-2.2-5.5-7.1-3.5-11.1c0.1-0.1,0-0.2-0.1-0.3L26,28.2c-0.1-0.1-0.2,0-0.3,0c-0.2,0.1-0.3,0.3-0.5,0.3c0,0,0,0,0,0 c-0.1,0-0.1,0.1-0.2,0.1c0,0,0,0,0,0c-0.1,0-0.1,0-0.2,0.1c0,0,0,0,0,0c-0.1,0-0.3,0.1-0.4,0.1c0,0,0,0,0,0c-0.1,0-0.1,0-0.2,0 c0,0,0,0-0.1,0c0,0-0.1,0-0.1,0c0,0-0.1,0-0.1,0c0,0-0.1,0-0.1,0c0,0-0.1,0-0.1,0c0,0,0,0-0.1,0c-0.1,0-0.1,0-0.2,0c0,0,0,0,0,0 c-0.1,0-0.1,0-0.2,0c0,0,0,0,0,0c-0.1,0-0.1,0-0.2-0.1c0,0,0,0,0,0c0,0-0.1,0-0.1-0.1c0,0,0,0-0.1,0c-0.2-0.1-0.3-0.2-0.5-0.3 c-0.1-0.1-0.2-0.1-0.3,0l-1.2,0.7c-0.1,0.1-0.1,0.2-0.1,0.3c1.9,4,0.4,8.8-3.5,11.1c-3.6,2.1-8.2,1.3-10.9-1.7 c-0.1-0.1-0.2-0.1-0.3-0.1l-0.3,0.2c-0.1,0.1-0.1,0.2-0.1,0.3c3.6,4.5,10.2,5.8,15.4,2.8c1.2-0.7,2.2-1.5,3-2.4 c0.8,0.9,1.8,1.8,3,2.4c5.2,3,11.7,1.6,15.4-2.8c0.1-0.1,0-0.2-0.1-0.3L42,38.5c-0.1-0.1-0.2,0-0.3,0.1C39,41.5,34.4,42.3,30.8,40.3 L30.8,40.3z\"}}]})(props);\n};\nexport function FcBiomass (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#9CCC65\",\"d\":\"M32,15V7H16v8L6.2,40c-0.6,1.5,0.5,3,2.1,3h31.5c1.6,0,2.6-1.6,2.1-3L32,15z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#8BC34A\",\"d\":\"M32,9H16c-1.1,0-2-0.9-2-2v0c0-1.1,0.9-2,2-2h16c1.1,0,2,0.9,2,2v0C34,8.1,33.1,9,32,9z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#2E7D32\",\"d\":\"M28,30c0,4.4-4,8-4,8s-4-3.6-4-8s4-8,4-8S28,25.6,28,30z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#388E3C\",\"d\":\"M31.1,32.6c-2,4-7.1,5.4-7.1,5.4s-2-5,0-8.9s7.1-5.4,7.1-5.4S33.1,28.6,31.1,32.6z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#43A047\",\"d\":\"M16.9,32.6c2,4,7.1,5.4,7.1,5.4s2-5,0-8.9s-7.1-5.4-7.1-5.4S14.9,28.6,16.9,32.6z\"}}]})(props);\n};\nexport function FcBiotech (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#AD1457\",\"d\":\"M36,4c0,9.3-6,13.2-12.8,17.8C16.1,26.5,8,31.8,8,44h4c0-10.1,6.5-14.4,13.4-18.9C32.2,20.6,40,15.4,40,4 H36z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#AD1457\",\"d\":\"M38,41H11c-0.6,0-1-0.4-1-1s0.4-1,1-1h27c0.6,0,1,0.4,1,1S38.6,41,38,41z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#AD1457\",\"d\":\"M36,37H12c-0.6,0-1-0.4-1-1s0.4-1,1-1h24c0.6,0,1,0.4,1,1S36.6,37,36,37z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#AD1457\",\"d\":\"M34,33H14c-0.6,0-1-0.4-1-1s0.4-1,1-1h20c0.6,0,1,0.4,1,1S34.6,33,34,33z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#AD1457\",\"d\":\"M29,29H19c-0.6,0-1-0.4-1-1s0.4-1,1-1h10c0.6,0,1,0.4,1,1S29.6,29,29,29z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E91E63\",\"d\":\"M37,9H10C9.4,9,9,8.6,9,8s0.4-1,1-1h27c0.6,0,1,0.4,1,1S37.6,9,37,9z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E91E63\",\"d\":\"M36,13H12c-0.6,0-1-0.4-1-1s0.4-1,1-1h24c0.6,0,1,0.4,1,1S36.6,13,36,13z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E91E63\",\"d\":\"M34,17H14c-0.6,0-1-0.4-1-1s0.4-1,1-1h20c0.6,0,1,0.4,1,1S34.6,17,34,17z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E91E63\",\"d\":\"M29,21H19c-0.6,0-1-0.4-1-1s0.4-1,1-1h10c0.6,0,1,0.4,1,1S29.6,21,29,21z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E91E63\",\"d\":\"M40,44h-4c0-10.1-6.5-14.4-13.4-18.9C15.8,20.6,8,15.4,8,4h4c0,9.3,6,13.2,12.8,17.8 C31.9,26.5,40,31.8,40,44z\"}}]})(props);\n};\nexport function FcBookmark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M37,43l-13-6l-13,6V9c0-2.2,1.8-4,4-4h18c2.2,0,4,1.8,4,4V43z\"}}]})(props);\n};\nexport function FcBriefcase (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#424242\",\"d\":\"M27,7h-6c-1.7,0-3,1.3-3,3v3h2v-3c0-0.6,0.4-1,1-1h6c0.6,0,1,0.4,1,1v3h2v-3C30,8.3,28.7,7,27,7z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E65100\",\"d\":\"M40,43H8c-2.2,0-4-1.8-4-4V15c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,41.2,42.2,43,40,43z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF6E40\",\"d\":\"M40,28H8c-2.2,0-4-1.8-4-4v-9c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v9C44,26.2,42.2,28,40,28z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFF3E0\",\"d\":\"M26,26h-4c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h4c0.6,0,1,0.4,1,1v2C27,25.6,26.6,26,26,26z\"}}]})(props);\n};\nexport function FcBrokenLink (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#1976D2\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M17.5,27c-1.1,1.2-2.7,2-4.5,2h-3c-3.3,0-6-2.7-6-6s2.7-6,6-6h3c1.8,0,3.4,0.8,4.5,2h4.7 c-1.5-3.5-5.1-6-9.2-6h-3C4.5,13,0,17.5,0,23s4.5,10,10,10h3c4.1,0,7.6-2.5,9.2-6H17.5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,13h-3c-4.1,0-7.6,2.5-9.2,6h4.7c1.1-1.2,2.7-2,4.5-2h3c3.3,0,6,2.7,6,6s-2.7,6-6,6h-3 c-1.8,0-3.4-0.8-4.5-2h-4.7c1.5,3.5,5.1,6,9.2,6h3c5.5,0,10-4.5,10-10S43.5,13,38,13z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#00BCD4\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"19.5,4 16,6 22.1,14.1 23.4,13.3\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"28.5,4 32,6 25.9,14.1 24.6,13.3\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"28.5,44 32,42 25.9,33.9 24.6,34.7\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"19.5,44 16,42 22.1,33.9 23.4,34.7\"}}]}]})(props);\n};\nexport function FcBullish (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#4CAF50\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"40\",\"y\":\"21\",\"width\":\"4\",\"height\":\"23\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"34\",\"y\":\"28\",\"width\":\"4\",\"height\":\"16\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"28\",\"y\":\"23\",\"width\":\"4\",\"height\":\"21\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"29\",\"width\":\"4\",\"height\":\"15\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"32\",\"width\":\"4\",\"height\":\"12\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"10\",\"y\":\"30\",\"width\":\"4\",\"height\":\"14\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"34\",\"width\":\"4\",\"height\":\"10\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#388E3C\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"40.1,9.1 34,15.2 30,11.2 20,21.2 15,16.2 4.6,26.6 7.4,29.4 15,21.8 20,26.8 30,16.8 34,20.8 42.9,11.9\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"44,8 35,8 44,17\"}}]}]})(props);\n};\nexport function FcBusinessContact (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#673AB7\",\"d\":\"M40,7H8c-2.2,0-4,1.8-4,4v26c0,2.2,1.8,4,4,4h5v-1.3c-0.6-0.3-1-1-1-1.7c0-1.1,0.9-2,2-2s2,0.9,2,2 c0,0.7-0.4,1.4-1,1.7V41h18v-1.3c-0.6-0.3-1-1-1-1.7c0-1.1,0.9-2,2-2s2,0.9,2,2c0,0.7-0.4,1.4-1,1.7V41h5c2.2,0,4-1.8,4-4V11 C44,8.8,42.2,7,40,7z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#D1C4E9\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"18\",\"r\":\"4\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M31,28c0,0-1.9-4-7-4c-5.1,0-7,4-7,4v2h14V28z\"}}]}]})(props);\n};\nexport function FcBusiness (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#263238\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M11,44H9c-0.6,0-1-0.4-1-1v-2h4v2C12,43.6,11.6,44,11,44z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M39,44h-2c-0.6,0-1-0.4-1-1v-2h4v2C40,43.6,39.6,44,39,44z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M27,7h-6c-1.7,0-3,1.3-3,3v3h2v-3c0-0.6,0.4-1,1-1h6c0.6,0,1,0.4,1,1v3h2v-3C30,8.3,28.7,7,27,7z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#78909C\",\"d\":\"M40,43H8c-2.2,0-4-1.8-4-4V15c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,41.2,42.2,43,40,43z\"}}]})(props);\n};\nexport function FcBusinessman (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FF9800\",\"points\":\"24,37 19,31 19,25 29,25 29,31\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFA726\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"33\",\"cy\":\"19\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"19\",\"r\":\"2\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M33,13c0-7.6-18-5-18,0c0,1.1,0,5.9,0,7c0,5,4,9,9,9s9-4,9-9C33,18.9,33,14.1,33,13z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#424242\",\"d\":\"M24,4c-6.1,0-10,4.9-10,11c0,0.8,0,2.3,0,2.3l2,1.7v-5l12-4l4,4v5l2-1.7c0,0,0-1.5,0-2.3c0-4-1-8-6-9l-1-2 H24z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#784719\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"28\",\"cy\":\"19\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"20\",\"cy\":\"19\",\"r\":\"1\"}}]},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#fff\",\"points\":\"24,43 19,31 24,32 29,31\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#D32F2F\",\"points\":\"23,35 22.3,39.5 24,43.5 25.7,39.5 25,35 26,34 24,32 22,34\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#546E7A\",\"d\":\"M29,31L29,31l-5,12l-5-12c0,0-11,2-11,13h32C40,33,29,31,29,31z\"}}]})(props);\n};\nexport function FcBusinesswoman (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"15\",\"fill\":\"#BF360C\",\"width\":\"16\",\"height\":\"18\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#78909C\",\"d\":\"M40,44H8c0-11,11-13,11-13h10C29,31,40,33,40,44z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF9800\",\"d\":\"M24,37c-2.2,0-5-6-5-6v-6h10v6C29,31,26.2,37,24,37z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M33,14c0-7.6-18-5-18,0c0,1.1,0,5.9,0,7c0,5,4,9,9,9s9-4,9-9C33,19.9,33,15.1,33,14z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF5722\",\"d\":\"M24,4C17.9,4,9,7.4,9,27.3l7,4.7V19l12-7l4,5v15l7-6c0-4-0.7-20-11-20l-1-2H24z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M24,38c-4.4,0-5-7-5-7s2.5,4,5,4s5-4,5-4S28.4,38,24,38z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#784719\",\"cx\":\"28\",\"cy\":\"21\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#784719\",\"cx\":\"20\",\"cy\":\"21\",\"r\":\"1\"}}]})(props);\n};\nexport function FcButtingIn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#CFD8DC\",\"d\":\"M24,3C12.4,3,3,12.4,3,24c0,11.6,9.4,21,21,21c0.3,0,0.7,0,1-0.1V3.1C24.7,3,24.3,3,24,3z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M25,3.1v41.9c4.1-0.2,7.9-1.5,11-3.7V6.8C32.9,4.6,29.1,3.2,25,3.1z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M20.5,13C14.1,13.3,8.9,18.7,9,25.1c0,2.8,1,5.4,2.7,7.5c1.4,1.7,2.3,3.9,2.3,6.1v3.8c3,1.6,6.4,2.5,10,2.5 c0.3,0,0.7,0,1-0.1c0.7,0,1.3-0.1,2-0.2v-9.4c3.6-2.1,6-5.9,6-10.4C33,18.2,27.4,12.7,20.5,13z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M29,38.6L25,38v-9h8l-0.7,7C32.1,37.6,30.7,38.8,29,38.6z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FFB74D\",\"points\":\"39,29 32,31 31,26 32,22\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#784719\",\"cx\":\"29.5\",\"cy\":\"25.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF5722\",\"d\":\"M21,12c-7.2,0-13,5.8-13,13c0,7.6,5.1,9,6,13l4-3v-8l5-2l1-4c3.2,0,6-3.9,6-6.1C27.9,13,24.4,12,21,12z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFB74D\",\"cx\":\"19\",\"cy\":\"27\",\"r\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#CFD8DC\",\"d\":\"M45,24c0-7.1-3.6-13.4-9-17.2v34.4C41.4,37.4,45,31.1,45,24z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF9800\",\"d\":\"M20,44.6c1.3,0.2,2.6,0.4,4,0.4c0.3,0,0.7,0,1-0.1c0.7,0,1.3-0.1,2-0.2v-6.5l-7-1V44.6z\"}}]})(props);\n};\nexport function FcCableRelease (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M34.9,29.1c-2.7-2.7-7.1-2.7-9.8,0l-4,4c-1.7,1.7-4.5,1.7-6.2,0c-1.7-1.7-1.7-4.5,0-6.2l4.5-4.5l-2.8-2.8 l-4.5,4.5c-3.3,3.3-3.3,8.6,0,11.8c3.3,3.3,8.6,3.3,11.8,0l4-4c1.2-1.1,3-1.1,4.2,0c1.1,1.2,1.1,3,0,4.2L27,41.2l2.8,2.8l5.1-5.1 C37.6,36.2,37.6,31.8,34.9,29.1z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#0277BD\",\"d\":\"M16.1,22.9L16.1,22.9c-2.8-2.8-2.8-7.3,0-10l6.8-6.8c2.8-2.8,7.3-2.8,10,0l0,0c2.8,2.8,2.8,7.3,0,10 l-6.8,6.8C23.3,25.7,18.9,25.7,16.1,22.9z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#B3E5FC\",\"cx\":\"28\",\"cy\":\"11\",\"r\":\"4\"}}]})(props);\n};\nexport function FcCalculator (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#616161\",\"d\":\"M40,16H8v24c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V16z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#424242\",\"d\":\"M36,4H12C9.8,4,8,5.8,8,8v9h32V8C40,5.8,38.2,4,36,4z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#9CCC65\",\"d\":\"M36,14H12c-0.6,0-1-0.4-1-1V8c0-0.6,0.4-1,1-1h24c0.6,0,1,0.4,1,1v5C37,13.6,36.6,14,36,14z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#33691E\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"33\",\"y\":\"10\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"29\",\"y\":\"10\",\"width\":\"2\",\"height\":\"2\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF5252\",\"d\":\"M36,23h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C37,22.6,36.6,23,36,23z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#E0E0E0\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15,23h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C16,22.6,15.6,23,15,23z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M22,23h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C23,22.6,22.6,23,22,23z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M29,23h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C30,22.6,29.6,23,29,23z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15,29h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C16,28.6,15.6,29,15,29z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M22,29h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C23,28.6,22.6,29,22,29z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M29,29h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C30,28.6,29.6,29,29,29z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15,35h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C16,34.6,15.6,35,15,35z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M22,35h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C23,34.6,22.6,35,22,35z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M29,35h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C30,34.6,29.6,35,29,35z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15,41h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C16,40.6,15.6,41,15,41z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M22,41h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C23,40.6,22.6,41,22,41z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M29,41h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C30,40.6,29.6,41,29,41z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#BDBDBD\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M36,29h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C37,28.6,36.6,29,36,29z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M36,35h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C37,34.6,36.6,35,36,35z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M36,41h-3c-0.6,0-1-0.4-1-1v-2c0-0.6,0.4-1,1-1h3c0.6,0,1,0.4,1,1v2C37,40.6,36.6,41,36,41z\"}}]}]})(props);\n};\nexport function FcCalendar (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#CFD8DC\",\"d\":\"M5,38V14h38v24c0,2.2-1.8,4-4,4H9C6.8,42,5,40.2,5,38z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M43,10v6H5v-6c0-2.2,1.8-4,4-4h30C41.2,6,43,7.8,43,10z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#B71C1C\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"33\",\"cy\":\"10\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"10\",\"r\":\"3\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#B0BEC5\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M33,3c-1.1,0-2,0.9-2,2v5c0,1.1,0.9,2,2,2s2-0.9,2-2V5C35,3.9,34.1,3,33,3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15,3c-1.1,0-2,0.9-2,2v5c0,1.1,0.9,2,2,2s2-0.9,2-2V5C17,3.9,16.1,3,15,3z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#90A4AE\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"20\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"20\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"25\",\"y\":\"20\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"20\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"26\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"26\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"25\",\"y\":\"26\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"26\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"32\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"32\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"25\",\"y\":\"32\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"32\",\"width\":\"4\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcCallTransfer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#009688\",\"d\":\"M39.2,8.4l-1.8,1.8c-6.3,6.5-5.4,22,0,27.6l1.8,1.8c0.5,0.5,1.3,0.5,1.8,0l3.6-3.7c0.5-0.5,0.5-1.3,0-1.8 l-3.4-3.4h-4.8c-1.3-1.3-1.3-12.1,0-13.4h4.8l3.3-3.4c0.5-0.5,0.5-1.3,0-1.8L41,8.4C40.5,7.9,39.7,7.9,39.2,8.4z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#009688\",\"d\":\"M11.2,8.4l-1.8,1.8c-6.3,6.5-5.4,22,0,27.6l1.8,1.8c0.5,0.5,1.3,0.5,1.8,0l3.6-3.7c0.5-0.5,0.5-1.3,0-1.8 l-3.4-3.4H8.5c-1.3-1.3-1.3-12.1,0-13.4h4.8l3.3-3.4c0.5-0.5,0.5-1.3,0-1.8L13,8.4C12.5,7.9,11.7,7.9,11.2,8.4z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"25.3,18.6 30.7,24 25.3,29.4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"22\",\"width\":\"11\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcCallback (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#2196F3\",\"d\":\"M26.4,33.9c0,0,4-2.6,4.8-3c0.8-0.4,1.7-0.6,2.2-0.2c0.8,0.5,7.5,4.9,8.1,5.3c0.6,0.4,0.8,1.5,0.1,2.6 c-0.8,1.1-4.3,5.5-5.8,5.4c-1.5,0-8.4,0.4-20.3-11.4C3.6,20.7,4,13.8,4,12.3c0-1.5,4.3-5.1,5.4-5.8c1.1-0.8,2.2-0.5,2.6,0.1 c0.4,0.6,4.8,7.3,5.3,8.1c0.3,0.5,0.2,1.4-0.2,2.2c-0.4,0.8-3,4.8-3,4.8s0.7,2.8,5,7.2C23.5,33.2,26.4,33.9,26.4,33.9z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M35,9H25v4h10c1.1,0,2,0.9,2,2v10h4V15C41,11.7,38.3,9,35,9z\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"28,16 21.3,11 28,6\"}}]}]})(props);\n};\nexport function FcCamcorderPro (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"27\",\"y\":\"8\",\"fill\":\"#37474F\",\"width\":\"10\",\"height\":\"4\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M27,8h-9.7c-1.5,0-2.8,0.8-3.5,2.1l-3.3,6L14,18l3.3-6H27v7.2h4V12C31,9.8,29.2,8,27,8z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M30,40H6c-2.2,0-4-1.8-4-4V20c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v16C34,38.2,32.2,40,30,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M38,35l5,5h3V18h-3l-5,5V35z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#546E7A\",\"d\":\"M22,35H8c-1.1,0-2-0.9-2-2V23c0-1.1,0.9-2,2-2h14c1.1,0,2,0.9,2,2v10C24,34.1,23.1,35,22,35z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"34\",\"y\":\"23\",\"fill\":\"#455A64\",\"width\":\"4\",\"height\":\"12\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#263238\",\"d\":\"M41,13h-4c-0.6,0-1-0.4-1-1V8c0-0.6,0.4-1,1-1h4c1.7,0,3,1.3,3,3v0C44,11.7,42.7,13,41,13z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"8\",\"y\":\"23\",\"fill\":\"#03A9F4\",\"width\":\"14\",\"height\":\"10\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#4FC3F7\",\"points\":\"13.5,25.5 9,32 18,32\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#B3E5FC\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"19.5\",\"cy\":\"25.5\",\"r\":\"1.5\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"17.5,27.6 14,32 21,32\"}}]}]})(props);\n};\nexport function FcCamcorder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M20,42H10c-2.2,0-4-1.8-4-4V15c0-5,4-9,9-9h0c5,0,9,4,9,9v23C24,40.2,22.2,42,20,42z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#455A64\",\"cx\":\"15\",\"cy\":\"15\",\"r\":\"7\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#42A5F5\",\"cx\":\"15\",\"cy\":\"15\",\"r\":\"5.2\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M18.3,13c-0.8-0.9-2-1.5-3.3-1.5S12.6,12,11.7,13c-0.3,0.4-0.3,0.9,0.1,1.2c0.4,0.3,0.9,0.3,1.2-0.1 c1-1.2,2.9-1.2,3.9,0c0.2,0.2,0.4,0.3,0.7,0.3c0.2,0,0.4-0.1,0.6-0.2C18.6,13.9,18.6,13.3,18.3,13z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M40,31H28c-1.1,0-2-0.9-2-2V19c0-1.1,0.9-2,2-2h12c1.1,0,2,0.9,2,2v10C42,30.1,41.1,31,40,31z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"24\",\"y\":\"19\",\"fill\":\"#455A64\",\"width\":\"2\",\"height\":\"10\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"28\",\"y\":\"19\",\"fill\":\"#03A9F4\",\"width\":\"12\",\"height\":\"10\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#4FC3F7\",\"points\":\"33,22.2 29,28 37,28\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#B3E5FC\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"37.5\",\"cy\":\"21.5\",\"r\":\"1\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"36,24.2 33,28 39,28\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#455A64\",\"cx\":\"15\",\"cy\":\"35\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#F44336\",\"cx\":\"15\",\"cy\":\"35\",\"r\":\"2\"}}]})(props);\n};\nexport function FcCameraAddon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#512DA8\",\"d\":\"M33.9,12.1H14.2L17.6,7c0.4-0.6,1-0.9,1.7-0.9h9.6c0.7,0,1.3,0.3,1.7,0.9L33.9,12.1z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#8667C4\",\"d\":\"M14,11H8V9.2C8,8.5,8.5,8,9.2,8h3.6C13.5,8,14,8.5,14,9.2V11z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#5E35B1\",\"d\":\"M40,42H8c-2.2,0-4-1.8-4-4V14c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,40.2,42.2,42,40,42z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#512DA8\",\"cx\":\"24\",\"cy\":\"26\",\"r\":\"12\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#B388FF\",\"cx\":\"24\",\"cy\":\"26\",\"r\":\"9\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#C7A7FF\",\"d\":\"M28.8,23c-1.2-1.4-3-2.2-4.8-2.2s-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C29.2,24.4,29.3,23.5,28.8,23z\"}},{\"tag\":\"ellipse\",\"attr\":{\"fill\":\"#8667C4\",\"cx\":\"11\",\"cy\":\"13.5\",\"rx\":\"2\",\"ry\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#8BC34A\",\"d\":\"M48,33.8c0-1.3-1.1-2.4-2.4-2.4H42c-0.4,0-0.7-0.5-0.4-0.8c0.4-0.6,0.5-1.3,0.4-2.1 c-0.2-1.2-1.1-2.1-2.3-2.4C37.7,25.7,36,27.1,36,29c0,0.6,0.2,1.1,0.4,1.6c0.2,0.4,0,0.8-0.5,0.8h-3.6c-1.3,0-2.4,1.1-2.4,2.4V37 c0,0.4,0.5,0.7,0.8,0.4c0.6-0.4,1.3-0.5,2.1-0.4c1.2,0.2,2.1,1.1,2.4,2.3c0.4,1.9-1.1,3.6-2.9,3.6c-0.6,0-1.1-0.2-1.6-0.4 c-0.4-0.2-0.8,0-0.8,0.5v2.6c0,1.3,1.1,2.4,2.4,2.4h13.2c1.3,0,2.4-1.1,2.4-2.4V33.8z\"}}]})(props);\n};\nexport function FcCameraIdentification (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#512DA8\",\"d\":\"M33.9,12.1H14.2L17.6,7c0.4-0.6,1-0.9,1.7-0.9h9.6c0.7,0,1.3,0.3,1.7,0.9L33.9,12.1z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#8667C4\",\"d\":\"M14,11H8V9.2C8,8.5,8.5,8,9.2,8h3.6C13.5,8,14,8.5,14,9.2V11z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#5E35B1\",\"d\":\"M40,42H8c-2.2,0-4-1.8-4-4V14c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,40.2,42.2,42,40,42z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#512DA8\",\"cx\":\"24\",\"cy\":\"26\",\"r\":\"12\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#B388FF\",\"cx\":\"24\",\"cy\":\"26\",\"r\":\"9\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#616161\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"42.2\",\"y\":\"38.3\",\"transform\":\"matrix(.707 -.707 .707 .707 -18.002 43.46)\",\"width\":\"2.4\",\"height\":\"10.4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"35\",\"cy\":\"35\",\"r\":\"10\"}}]},{\"tag\":\"rect\",\"attr\":{\"x\":\"43.9\",\"y\":\"42.4\",\"transform\":\"matrix(.707 -.707 .707 .707 -18.709 45.167)\",\"fill\":\"#37474F\",\"width\":\"2.4\",\"height\":\"5.6\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#64B5F6\",\"cx\":\"35\",\"cy\":\"35\",\"r\":\"8\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BBDEFB\",\"d\":\"M39.3,31.4c-1.1-1.3-2.6-2-4.2-2s-3.2,0.7-4.2,2c-0.2,0.3-0.2,0.6,0.1,0.9c0.3,0.2,0.6,0.2,0.9-0.1 c0.8-1,2-1.5,3.3-1.5s2.5,0.6,3.3,1.5c0.1,0.1,0.3,0.2,0.5,0.2c0.1,0,0.3,0,0.4-0.1C39.5,32.1,39.5,31.7,39.3,31.4z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#C7A7FF\",\"d\":\"M29,23c-1.2-1.4-3-2.2-4.8-2.2c-1.8,0-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C29.4,24.4,29.5,23.5,29,23z\"}},{\"tag\":\"ellipse\",\"attr\":{\"fill\":\"#8667C4\",\"cx\":\"11\",\"cy\":\"13.5\",\"rx\":\"2\",\"ry\":\"1.5\"}}]})(props);\n};\nexport function FcCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#512DA8\",\"d\":\"M33.9,12.1H14.2L17.6,7c0.4-0.6,1-0.9,1.7-0.9h9.6c0.7,0,1.3,0.3,1.7,0.9L33.9,12.1z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#8667C4\",\"d\":\"M14,11H8V9.2C8,8.5,8.5,8,9.2,8h3.6C13.5,8,14,8.5,14,9.2V11z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#5E35B1\",\"d\":\"M40,42H8c-2.2,0-4-1.8-4-4V14c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,40.2,42.2,42,40,42z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#512DA8\",\"cx\":\"24\",\"cy\":\"26\",\"r\":\"12\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#B388FF\",\"cx\":\"24\",\"cy\":\"26\",\"r\":\"9\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#C7A7FF\",\"d\":\"M29,23c-1.2-1.4-3-2.2-4.8-2.2c-1.8,0-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C29.4,24.4,29.5,23.5,29,23z\"}},{\"tag\":\"ellipse\",\"attr\":{\"fill\":\"#8667C4\",\"cx\":\"11\",\"cy\":\"13.5\",\"rx\":\"2\",\"ry\":\"1.5\"}}]})(props);\n};\nexport function FcCancel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#D50000\",\"d\":\"M24,6C14.1,6,6,14.1,6,24s8.1,18,18,18s18-8.1,18-18S33.9,6,24,6z M24,10c3.1,0,6,1.1,8.4,2.8L12.8,32.4 C11.1,30,10,27.1,10,24C10,16.3,16.3,10,24,10z M24,38c-3.1,0-6-1.1-8.4-2.8l19.6-19.6C36.9,18,38,20.9,38,24C38,31.7,31.7,38,24,38 z\"}}]})(props);\n};\nexport function FcCandleSticks (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#546E7A\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"38\",\"y\":\"4\",\"width\":\"2\",\"height\":\"20\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"7\",\"width\":\"2\",\"height\":\"17\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"8\",\"y\":\"27\",\"width\":\"2\",\"height\":\"17\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"28\",\"y\":\"19\",\"width\":\"2\",\"height\":\"22\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#4CAF50\",\"d\":\"M36,7h6c1.1,0,2,0.9,2,2v10c0,1.1-0.9,2-2,2h-6c-1.1,0-2-0.9-2-2V9C34,7.9,34.9,7,36,7z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#4CAF50\",\"d\":\"M13,10h6c1.1,0,2,0.9,2,2v7c0,1.1-0.9,2-2,2h-6c-1.1,0-2-0.9-2-2v-7C11,10.9,11.9,10,13,10z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M6,30h6c1.1,0,2,0.9,2,2v7c0,1.1-0.9,2-2,2H6c-1.1,0-2-0.9-2-2v-7C4,30.9,4.9,30,6,30z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M26,22h6c1.1,0,2,0.9,2,2v12c0,1.1-0.9,2-2,2h-6c-1.1,0-2-0.9-2-2V24C24,22.9,24.9,22,26,22z\"}}]})(props);\n};\nexport function FcCapacitor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FF9800\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"y\":\"27\",\"width\":\"25\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"y\":\"17\",\"width\":\"25\",\"height\":\"4\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M46,35c1.1,0,2-0.9,2-2V15c0-1.1-0.9-2-2-2H27v22H46z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M21,13c-1.1,0-2,0.9-2,2v18c0,1.1,0.9,2,2,2h2V13H21z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#303F9F\",\"d\":\"M25,33c1.1,0,2,0.9,2,2V13c0,1.1-0.9,2-2,2c-1.1,0-2-0.9-2-2v22C23,33.9,23.9,33,25,33z\"}}]})(props);\n};\nexport function FcCdLogo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#2196F3\",\"d\":\"M17.814,18H20.2c0.5,0,0.8,0.4,0.8,0.8v16.4c0,0.399-0.4,0.8-0.8,0.8h-2.384c-0.4,0-0.8-0.4-0.8-0.8V18.8\\r\\n\\t\\tC16.916,18.3,17.314,18,17.814,18z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#2196F3\",\"d\":\"M14.2,11h-3.3c-0.5,0-0.9,0.403-0.9,0.807V17H2.2C1.6,17,1,17.605,1,18.21v16.58C1,35.396,1.6,36,2.2,36h12\\r\\n\\t\\tc0.4,0,0.8-0.305,0.8-0.809V11.807C15,11.403,14.7,11,14.2,11z M10,31.283c0,0.398-0.4,0.8-0.8,0.8H6.8c-0.4,0-0.8-0.399-0.8-0.8\\r\\n\\t\\tV21.8C6,21.4,6.3,21,6.8,21h2.4c0.5,0,0.8,0.4,0.8,0.8V31.283z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#2196F3\",\"d\":\"M33.2,25c0.5,0,0.8,0.6,0.8,0.8v9.4c0,0.399-0.422,0.8-0.8,0.8h-9.4c-0.425,0-0.8-0.4-0.8-0.8v-2.386\\r\\n\\t\\tc0-0.5,0.4-0.799,0.8-0.799L30,32v-3h-6.2c-0.331,0-0.8-0.4-0.8-0.801V18.8c0-0.5,0.4-0.8,0.8-0.8h9.4c0.399,0,0.8,0.4,0.8,0.8v2.4\\r\\n\\t\\tc0,0.3-0.266,0.8-0.8,0.8H27v3H33.2z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#2196F3\",\"d\":\"M48,28v7.2c0,0.399-0.4,0.8-0.801,0.8H36.8c-0.2,0-0.8-0.4-0.8-0.8V18.8c0-0.5,0.432-0.8,0.831-0.8H47.2\\r\\n\\t\\tc0,0,0.8,0,0.8,0.8V25h-4v-2.2c0,0,0.1-0.8-0.8-0.8h-2.4c-0.5,0-0.8,0.4-0.8,0.8v8.4c0,0.399,0.5,0.8,0.8,0.8h2.4\\r\\n\\t\\tc0.399,0,0.8-0.4,0.8-0.8V28H48z\"}}]},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#0D47A1\",\"points\":\"45.799,15.98 46.9,15.98 46.9,12.881 48,12.881 48,11.98 44.799,11.98 44.799,12.881 \\r\\n\\t\\t45.799,12.881 \\t\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#0D47A1\",\"d\":\"M44.014,14.476h-1.143v0.095c0,0.382-0.096,0.573-0.572,0.573c-0.475,0-0.57-0.191-0.57-0.762v-0.668\\r\\n\\t\\tc0-0.572,0-0.762,0.57-0.762c0.381,0,0.572,0.095,0.572,0.477v0.095h1.047v-0.095c0-1.047-0.381-1.429-1.523-1.429h-0.287\\r\\n\\t\\tc-1.141,0-1.523,0.382-1.523,1.618v0.764c0,1.142,0.381,1.618,1.523,1.618h0.383c1.047,0,1.428-0.477,1.428-1.43v-0.095H44.014z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#0D47A1\",\"points\":\"29.516,12 28.717,14.9 27.816,12 26.217,12 26.217,16 27.316,16 27.316,13 28.115,16 29.217,16 \\r\\n\\t\\t30.115,13.1 30.115,16 31.115,16 31.115,12 \\t\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#0D47A1\",\"d\":\"M38.713,12h-0.9h-0.898l-1.199,4h1.199l0.199-0.7h0.602h0.799l0.199,0.7h1.199L38.713,12z M37.914,14.5\\r\\n\\t\\th-0.4l0.4-1.7l0,0l0,0l0.398,1.7H37.914z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#0D47A1\",\"d\":\"M33.92,12h-0.199H32.02v4h1.102v-1.1h0.6h0.199c1.102,0,1.5-0.4,1.5-1.4v-0.3C35.42,12.3,35.02,12,33.92,12\\r\\n\\t\\tz M34.32,13.6c0,0.4-0.1,0.5-0.4,0.5h-0.199h-0.6v-1.2h0.6h0.1c0.4,0,0.5,0.1,0.5,0.4V13.6z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#0D47A1\",\"d\":\"M23.594,12h-0.286h-0.286c-1.143,0-1.523,0.382-1.523,1.618v0.762c0,1.144,0.381,1.62,1.523,1.62h0.286\\r\\n\\t\\th0.286c1.143,0,1.523-0.477,1.523-1.62v-0.762C25.117,12.382,24.737,12,23.594,12z M23.975,14.19c0,0.571,0,0.763-0.571,0.763\\r\\n\\t\\th-0.095h-0.095c-0.571,0-0.571-0.191-0.571-0.763v-0.572c0-0.57,0-0.762,0.571-0.762h0.095h0.095c0.571,0,0.571,0.191,0.571,0.762\\r\\n\\t\\tV14.19z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#0D47A1\",\"d\":\"M20.422,14.477h-1.144v0.095c0,0.382-0.095,0.571-0.571,0.571c-0.476,0-0.571-0.189-0.571-0.762v-0.666\\r\\n\\t\\tc0-0.573,0-0.762,0.571-0.762c0.381,0,0.571,0.095,0.571,0.475v0.096h1.048v-0.096c0-1.047-0.381-1.428-1.523-1.428h-0.286\\r\\n\\t\\tc-1.143,0-1.524,0.381-1.524,1.618v0.763c0,1.143,0.381,1.619,1.524,1.619h0.381c1.048,0,1.429-0.477,1.429-1.429v-0.095H20.422z\"}}]}]})(props);\n};\nexport function FcCellPhone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#546E7A\",\"d\":\"M12,40V10h20c2.2,0,4,1.8,4,4v26c0,2.2-1.8,4-4,4H16C13.8,44,12,42.2,12,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#4FC3F7\",\"d\":\"M32,13H16c-0.6,0-1,0.4-1,1v8c0,0.6,0.4,1,1,1h16c0.6,0,1-0.4,1-1v-8C33,13.4,32.6,13,32,13z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B3E5FC\",\"d\":\"M19,30h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C20,29.6,19.6,30,19,30z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B3E5FC\",\"d\":\"M25,30h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C26,29.6,25.6,30,25,30z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B3E5FC\",\"d\":\"M31,30h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C32,29.6,31.6,30,31,30z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B3E5FC\",\"d\":\"M19,35h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C20,34.6,19.6,35,19,35z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B3E5FC\",\"d\":\"M25,35h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C26,34.6,25.6,35,25,35z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B3E5FC\",\"d\":\"M31,35h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C32,34.6,31.6,35,31,35z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B3E5FC\",\"d\":\"M19,40h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C20,39.6,19.6,40,19,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B3E5FC\",\"d\":\"M25,40h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C26,39.6,25.6,40,25,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B3E5FC\",\"d\":\"M31,40h-2c-0.6,0-1-0.4-1-1v-1c0-0.6,0.4-1,1-1h2c0.6,0,1,0.4,1,1v1C32,39.6,31.6,40,31,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M16,10h-4V4c0-1.1,0.9-2,2-2h0c1.1,0,2,0.9,2,2V10z\"}}]})(props);\n};\nexport function FcChargeBattery (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#8BC34A\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M34,44H14c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v34C36,43.1,35.1,44,34,44z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M28,13h-8c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1v7C29,12.6,28.6,13,28,13z\"}}]},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FFEB3B\",\"points\":\"30,24 24.5,24 26.7,13 18,26 23.5,26 21.3,37\"}}]})(props);\n};\nexport function FcCheckmark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#43A047\",\"points\":\"40.6,12.1 17,35.7 7.4,26.1 4.6,29 17,41.3 43.4,14.9\"}}]})(props);\n};\nexport function FcCircuit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#4CAF50\",\"d\":\"M6,10v28c0,2.2,1.8,4,4,4h28c2.2,0,4-1.8,4-4V10c0-2.2-1.8-4-4-4H10C7.8,6,6,7.8,6,10z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFC107\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M6.6,8l6,6c-0.4,0.6-0.6,1.3-0.6,2c0,2.2,1.8,4,4,4s4-1.8,4-4s-1.8-4-4-4c-0.7,0-1.4,0.2-2,0.6l-6-6 C7.4,6.9,6.9,7.4,6.6,8z M16,14.5c0.8,0,1.5,0.7,1.5,1.5s-0.7,1.5-1.5,1.5s-1.5-0.7-1.5-1.5S15.2,14.5,16,14.5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M41.4,40l-6-6c0.4-0.6,0.6-1.3,0.6-2c0-2.2-1.8-4-4-4s-4,1.8-4,4s1.8,4,4,4c0.7,0,1.4-0.2,2-0.6l6,6 C40.6,41.1,41.1,40.6,41.4,40z M32,33.5c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5S32.8,33.5,32,33.5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16,36c2.2,0,4-1.8,4-4c0-0.7-0.2-1.4-0.6-2L30,19.4c0.6,0.4,1.3,0.6,2,0.6c2.2,0,4-1.8,4-4s-1.8-4-4-4 s-4,1.8-4,4c0,0.7,0.2,1.4,0.6,2L18,28.6c-0.6-0.4-1.3-0.6-2-0.6c-2.2,0-4,1.8-4,4S13.8,36,16,36z M32,14.5c0.8,0,1.5,0.7,1.5,1.5 s-0.7,1.5-1.5,1.5s-1.5-0.7-1.5-1.5S31.2,14.5,32,14.5z M16,30.5c0.8,0,1.5,0.7,1.5,1.5s-0.7,1.5-1.5,1.5s-1.5-0.7-1.5-1.5 S15.2,30.5,16,30.5z\"}}]}]})(props);\n};\nexport function FcClapperboard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M43.4,8.3L4,15l-0.3-2c-0.4-2.2,1.1-4.2,3.3-4.6l31.6-5.3c2.2-0.4,4.2,1.1,4.6,3.3L43.4,8.3z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M40,41H8c-2.2,0-4-1.8-4-4V15h40v22C44,39.2,42.2,41,40,41z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#9FA8DA\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"18.8,6.4 23.7,11.7 27.7,11 22.7,5.7\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"10.9,7.7 15.8,13 19.8,12.3 14.8,7.1\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"26.7,5.1 31.6,10.3 35.5,9.7 30.6,4.4\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"34.5,3.8 39.5,9 43.4,8.3 38.5,3.1\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#9FA8DA\",\"cx\":\"7.5\",\"cy\":\"11.5\",\"r\":\"1.5\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#9FA8DA\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"40,15 36,21 40,21 44,15\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"32,15 28,21 32,21 36,15\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"24,15 20,21 24,21 28,15\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"16,15 12,21 16,21 20,15\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"8,15 4,21 8,21 12,15\"}}]}]})(props);\n};\nexport function FcClearFilters (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#F57C00\",\"points\":\"29,23 19,23 7,9 41,9\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FF9800\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"29,38 19,44 19,23 29,23\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M41.5,9h-35C5.7,9,5,8.3,5,7.5v0C5,6.7,5.7,6,6.5,6h35C42.3,6,43,6.7,43,7.5v0C43,8.3,42.3,9,41.5,9z\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#F44336\",\"cx\":\"38\",\"cy\":\"38\",\"r\":\"10\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"36\",\"fill\":\"#fff\",\"width\":\"12\",\"height\":\"4\"}}]})(props);\n};\nexport function FcClock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#00ACC1\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"20\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#eee\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"16\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"23\",\"y\":\"11\",\"width\":\"2\",\"height\":\"13\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"26.1\",\"y\":\"22.7\",\"transform\":\"matrix(-.707 .707 -.707 -.707 65.787 27.25)\",\"width\":\"2.3\",\"height\":\"9.2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"24\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#00ACC1\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"1\"}}]})(props);\n};\nexport function FcCloseUpMode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#2E7D32\",\"d\":\"M5,24c0,18.9,14.8,19,17,19s4,0,4,0S24.1,26.5,5,24z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"26\",\"fill\":\"#388E3C\",\"width\":\"4\",\"height\":\"17\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#C62828\",\"d\":\"M34,16c0,5.1-5.2,8.2-8,8.2s-2-3.1-2-8.2s5-9.2,5-9.2S34,10.9,34,16z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#C62828\",\"d\":\"M14,16c0,5.1,5.2,8.2,8,8.2s2-3.1,2-8.2s-5-9.2-5-9.2S14,10.9,14,16z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E53935\",\"d\":\"M24,27c-2.2-1.6-1.9-4.5,2.4-8.8C30.8,13.8,32,7,32,7s5,3.4,5,9C37,21.9,31.3,27,24,27z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E53935\",\"d\":\"M24,27c2.2-1.6,1.9-4.5-2.4-8.8C17.2,13.8,16,7,16,7s-5,3.4-5,9C11,21.9,16.7,27,24,27z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M30,16c0,6.1-2.7,11-6,11s-6-4.9-6-11s6-11,6-11S30,9.9,30,16z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#4CAF50\",\"d\":\"M22,43c0,0,1.8,0,4,0s17-0.1,17-19C23.9,26.5,22,43,22,43z\"}}]})(props);\n};\nexport function FcCloth (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF5722\",\"d\":\"M6,10v28c0,2.2,1.8,4,4,4h28c2.2,0,4-1.8,4-4V10c0-2.2-1.8-4-4-4H10C7.8,6,6,7.8,6,10z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#BF360C\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"35\",\"width\":\"36\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"31\",\"width\":\"36\",\"height\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6.1,39c0.2,0.8,0.6,1.5,1.2,2h33.2c0.6-0.5,1-1.2,1.2-2H6.1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M6.1,9h35.7c-0.2-0.8-0.6-1.5-1.2-2H7.4C6.8,7.5,6.3,8.2,6.1,9z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"23\",\"width\":\"36\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"27\",\"width\":\"36\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"15\",\"width\":\"36\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"11\",\"width\":\"36\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"19\",\"width\":\"36\",\"height\":\"2\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FF8A65\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"27\",\"y\":\"6\",\"width\":\"2\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"27\",\"y\":\"13\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"27\",\"y\":\"29\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"6\",\"width\":\"2\",\"height\":\"1\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"29\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"9\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"23\",\"y\":\"6\",\"width\":\"2\",\"height\":\"1\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"23\",\"y\":\"25\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"23\",\"y\":\"9\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"21\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"23\",\"y\":\"17\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"23\",\"y\":\"33\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"27\",\"y\":\"21\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"39\",\"y\":\"33\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"39\",\"y\":\"17\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"39\",\"y\":\"25\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M39,6.1V7h1.6C40.2,6.6,39.6,6.3,39,6.1z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"17\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M40.6,41H39v0.9C39.6,41.7,40.2,41.4,40.6,41z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"35\",\"y\":\"13\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"33\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"35\",\"y\":\"29\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"39\",\"y\":\"9\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"35\",\"y\":\"21\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"25\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"35\",\"y\":\"37\",\"width\":\"2\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"35\",\"y\":\"6\",\"width\":\"2\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"41\",\"width\":\"2\",\"height\":\"1\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"23\",\"y\":\"41\",\"width\":\"2\",\"height\":\"1\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"27\",\"y\":\"37\",\"width\":\"2\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"37\",\"width\":\"2\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"7\",\"y\":\"17\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9,41H7.4c0.5,0.4,1,0.7,1.6,0.9V41z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7.4,7H9V6.1C8.4,6.3,7.8,6.6,7.4,7z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"7\",\"y\":\"33\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"7\",\"y\":\"25\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"7\",\"y\":\"9\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"29\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"17\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"33\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"9\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"6\",\"width\":\"2\",\"height\":\"1\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"6\",\"width\":\"2\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"25\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"41\",\"width\":\"2\",\"height\":\"1\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"21\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"6\",\"width\":\"2\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"37\",\"width\":\"2\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"13\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"13\",\"width\":\"2\",\"height\":\"6\"}}]}]})(props);\n};\nexport function FcCollaboration (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#1565C0\",\"d\":\"M25,22h13l6,6V11c0-2.2-1.8-4-4-4H25c-2.2,0-4,1.8-4,4v7C21,20.2,22.8,22,25,22z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#2196F3\",\"d\":\"M23,19H10l-6,6V8c0-2.2,1.8-4,4-4h15c2.2,0,4,1.8,4,4v7C27,17.2,25.2,19,23,19z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFA726\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"31\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"36\",\"cy\":\"31\",\"r\":\"5\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#607D8B\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20,42c0,0-2.2-4-8-4s-8,4-8,4v2h16V42z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M44,42c0,0-2.2-4-8-4s-8,4-8,4v2h16V42z\"}}]}]})(props);\n};\nexport function FcCollapse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#2196F3\",\"points\":\"5,30.9 8.1,34 24,18.1 39.9,34 43,30.9 24,12\"}}]})(props);\n};\nexport function FcCollect (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#009688\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"35\",\"width\":\"4\",\"height\":\"11\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"24,29.6 31,38 17,38\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#009688\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"2\",\"width\":\"4\",\"height\":\"11\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"24,18.4 17,10 31,10\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#009688\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"2\",\"y\":\"22\",\"width\":\"11\",\"height\":\"4\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"18.4,24 10,31 10,17\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#009688\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"35\",\"y\":\"22\",\"width\":\"11\",\"height\":\"4\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"29.6,24 38,17 38,31\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#F44336\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"3\"}}]})(props);\n};\nexport function FcComboChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#00BCD4\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"37\",\"y\":\"18\",\"width\":\"6\",\"height\":\"24\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"29\",\"y\":\"26\",\"width\":\"6\",\"height\":\"16\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"22\",\"width\":\"6\",\"height\":\"20\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"32\",\"width\":\"6\",\"height\":\"10\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"5\",\"y\":\"28\",\"width\":\"6\",\"height\":\"14\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"16\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"18\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"11\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"32\",\"cy\":\"13\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"40\",\"cy\":\"9\",\"r\":\"3\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"39.1,7.2 31.8,10.9 23.5,8.8 15.5,15.8 8.5,14.1 7.5,17.9 16.5,20.2 24.5,13.2 32.2,15.1 40.9,10.8\"}}]}]})(props);\n};\nexport function FcCommandLine (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#CFD8DC\",\"d\":\"M41,6H7C6.4,6,6,6.4,6,7v35h36V7C42,6.4,41.6,6,41,6z\"}}]},{\"tag\":\"rect\",\"attr\":{\"x\":\"8\",\"y\":\"13\",\"fill\":\"#263238\",\"width\":\"32\",\"height\":\"27\"}},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#76FF03\",\"d\":\"M22,27.6c-0.1,1.1-0.4,1.9-1,2.5c-0.6,0.6-1.4,0.9-2.5,0.9c-1.1,0-2-0.4-2.6-1.1c-0.6-0.7-0.9-1.8-0.9-3.1\\r\\n\\t\\tv-1.6c0-1.3,0.3-2.4,0.9-3.1c0.6-0.7,1.5-1.1,2.6-1.1c1.1,0,1.9,0.3,2.5,0.9c0.6,0.6,0.9,1.4,1,2.6h-2c0-0.7-0.1-1.2-0.3-1.4\\r\\n\\t\\tc-0.2-0.3-0.6-0.4-1.1-0.4c-0.5,0-0.9,0.2-1.2,0.6c-0.2,0.4-0.3,1-0.4,1.8v1.8c0,1,0.1,1.6,0.3,2c0.2,0.4,0.6,0.5,1.1,0.5\\r\\n\\t\\tc0.5,0,0.9-0.1,1.1-0.4c0.2-0.3,0.3-0.7,0.3-1.4H22z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#76FF03\",\"d\":\"M24,24c0-0.3,0.1-0.5,0.3-0.7c0.2-0.2,0.4-0.3,0.7-0.3c0.3,0,0.5,0.1,0.7,0.3c0.2,0.2,0.3,0.4,0.3,0.7\\r\\n\\t\\tc0,0.3-0.1,0.5-0.3,0.7S25.3,25,25,25c-0.3,0-0.5-0.1-0.7-0.3S24,24.3,24,24z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#76FF03\",\"d\":\"M24,30c0-0.3,0.1-0.5,0.3-0.7c0.2-0.2,0.4-0.3,0.7-0.3c0.3,0,0.5,0.1,0.7,0.3c0.2,0.2,0.3,0.4,0.3,0.7\\r\\n\\t\\tc0,0.3-0.1,0.5-0.3,0.7S25.3,31,25,31c-0.3,0-0.5-0.1-0.7-0.3S24,30.3,24,30z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#76FF03\",\"d\":\"M28,21h2l3,10h-2L28,21z\"}}]},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#90A4AE\",\"cx\":\"13.5\",\"cy\":\"9.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#90A4AE\",\"cx\":\"9.5\",\"cy\":\"9.5\",\"r\":\"1.5\"}}]}]})(props);\n};\nexport function FcComments (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#8BC34A\",\"d\":\"M37,39H11l-6,6V11c0-3.3,2.7-6,6-6h26c3.3,0,6,2.7,6,6v22C43,36.3,40.3,39,37,39z\"}}]})(props);\n};\nexport function FcCompactCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M40,39H8c-2.2,0-4-1.8-4-4V13c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v22C44,37.2,42.2,39,40,39z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#455A64\",\"cx\":\"29\",\"cy\":\"24\",\"r\":\"12\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#42A5F5\",\"cx\":\"29\",\"cy\":\"24\",\"r\":\"9\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M33.8,21c-1.2-1.4-3-2.2-4.8-2.2s-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C34.2,22.4,34.3,21.5,33.8,21z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"8\",\"y\":\"13\",\"fill\":\"#ADD8FB\",\"width\":\"6\",\"height\":\"3\"}}]})(props);\n};\nexport function FcConferenceCall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFA726\",\"cx\":\"12\",\"cy\":\"21\",\"r\":\"5\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#455A64\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M2,34.7c0,0,2.8-6.3,10-6.3s10,6.3,10,6.3V38H2V34.7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M46,34.7c0,0-2.8-6.3-10-6.3s-10,6.3-10,6.3V38h20V34.7z\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFB74D\",\"cx\":\"24\",\"cy\":\"17\",\"r\":\"6\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M36,34.1c0,0-3.3-7.5-12-7.5s-12,7.5-12,7.5V38h24V34.1z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFA726\",\"cx\":\"36\",\"cy\":\"21\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFA726\",\"cx\":\"12\",\"cy\":\"21\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFA726\",\"cx\":\"36\",\"cy\":\"21\",\"r\":\"5\"}}]})(props);\n};\nexport function FcContacts (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF7043\",\"d\":\"M38,44H12V4h26c2.2,0,4,1.8,4,4v32C42,42.2,40.2,44,38,44z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BF360C\",\"d\":\"M10,4h2v40h-2c-2.2,0-4-1.8-4-4V8C6,5.8,7.8,4,10,4z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#AB300B\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"26\",\"cy\":\"20\",\"r\":\"4\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M33,30c0,0-1.9-4-7-4c-5.1,0-7,4-7,4v2h14V30z\"}}]}]})(props);\n};\nexport function FcCopyleft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#9C27B0\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"21\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E1BEE7\",\"d\":\"M19.3,28.1c0.3,1.3,0.2,4.1,4.6,4.1c0.9,0,4.8,0.2,4.7-7.2v-1.6c0-6.7-3.2-7.2-4.8-7.2 c-2.3,0-4.2,0.6-4.5,4.3h-4.8c0.1-1.2,0.8-8.2,9.3-8.2c4.2,0,9.7,2.5,9.7,11.2V25c0,9.6-6.5,11.2-9.6,11.2c-3.7,0-8.7-1.6-9.3-8.1 H19.3z\"}}]})(props);\n};\nexport function FcCopyright (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#9C27B0\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"21\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E1BEE7\",\"d\":\"M33.5,28.1c-0.6,6.4-5.6,8.1-9.3,8.1c-3.1,0-9.6-1.6-9.6-11.2v-1.5c0-8.7,5.5-11.2,9.7-11.2 c8.5,0,9.2,7,9.3,8.2h-4.8c-0.3-3.6-2.2-4.3-4.5-4.3c-1.6,0-4.8,0.5-4.8,7.2V25c-0.1,7.5,3.8,7.2,4.7,7.2c4.3,0,4.3-2.9,4.6-4.1 H33.5z\"}}]})(props);\n};\nexport function FcCrystalOscillator (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FF9800\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"28\",\"width\":\"26\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"16\",\"width\":\"26\",\"height\":\"4\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#2196F3\",\"d\":\"M43,11H20v26h23c1.1,0,2-0.9,2-2V13C45,11.9,44.1,11,43,11z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#64B5F6\",\"d\":\"M20,9h-2v30h2c1.1,0,2-0.9,2-2V11C22,9.9,21.1,9,20,9z\"}}]})(props);\n};\nexport function FcCurrencyExchange (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#3F51B5\",\"cx\":\"18\",\"cy\":\"18\",\"r\":\"15\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFF59D\",\"d\":\"M20.3,16v1.7h-3.8v1.4h3.8v1.7h-3.8c0,0.6,0.1,1.2,0.3,1.6c0.2,0.4,0.4,0.8,0.7,1c0.3,0.3,0.7,0.4,1.1,0.6 c0.4,0.1,0.9,0.2,1.4,0.2c0.4,0,0.7,0,1.1-0.1c0.4-0.1,0.7-0.1,1-0.3l0.4,2.7c-0.4,0.1-0.9,0.2-1.4,0.2c-0.5,0.1-1,0.1-1.5,0.1 c-0.9,0-1.8-0.1-2.6-0.4c-0.8-0.2-1.5-0.6-2-1.1c-0.6-0.5-1-1.1-1.4-1.9c-0.3-0.7-0.5-1.6-0.5-2.6h-1.9v-1.7h1.9v-1.4h-1.9V16h1.9 c0.1-1,0.3-1.8,0.6-2.6c0.4-0.7,0.8-1.4,1.4-1.9c0.6-0.5,1.3-0.9,2.1-1.1c0.8-0.3,1.7-0.4,2.6-0.4c0.4,0,0.9,0,1.3,0.1 c0.4,0.1,0.9,0.1,1.3,0.3l-0.4,2.7c-0.3-0.1-0.6-0.2-1-0.3c-0.4-0.1-0.7-0.1-1.1-0.1c-0.5,0-1,0.1-1.4,0.2c-0.4,0.1-0.8,0.3-1,0.6 c-0.3,0.3-0.5,0.6-0.7,1s-0.3,0.9-0.3,1.5H20.3z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#4CAF50\",\"cx\":\"30\",\"cy\":\"30\",\"r\":\"15\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#fff\",\"d\":\"M28.4,27c0.1,0.2,0.2,0.4,0.4,0.6c0.2,0.2,0.4,0.4,0.7,0.5c0.3,0.2,0.7,0.3,1.1,0.5c0.7,0.3,1.4,0.6,2,0.9 c0.6,0.3,1.1,0.7,1.5,1.1c0.4,0.4,0.8,0.9,1,1.4c0.2,0.5,0.4,1.2,0.4,1.9c0,0.7-0.1,1.3-0.3,1.8c-0.2,0.5-0.5,1-0.9,1.4 s-0.9,0.7-1.4,0.9c-0.6,0.2-1.2,0.4-1.8,0.5v2.2h-1.8v-2.2c-0.6-0.1-1.2-0.2-1.8-0.4s-1.1-0.5-1.5-1c-0.5-0.4-0.8-1-1.1-1.6 c-0.3-0.6-0.4-1.4-0.4-2.3h3.3c0,0.5,0.1,1,0.2,1.3c0.1,0.4,0.3,0.6,0.6,0.9c0.2,0.2,0.5,0.4,0.8,0.5c0.3,0.1,0.6,0.1,0.9,0.1 c0.4,0,0.7,0,0.9-0.1c0.3-0.1,0.5-0.2,0.7-0.4c0.2-0.2,0.3-0.4,0.4-0.6c0.1-0.2,0.1-0.5,0.1-0.8c0-0.3,0-0.6-0.1-0.8 c-0.1-0.2-0.2-0.5-0.4-0.7s-0.4-0.4-0.7-0.5c-0.3-0.2-0.7-0.3-1.1-0.5c-0.7-0.3-1.4-0.6-2-0.9c-0.6-0.3-1.1-0.7-1.5-1.1 c-0.4-0.4-0.8-0.9-1-1.4c-0.2-0.5-0.4-1.2-0.4-1.9c0-0.6,0.1-1.2,0.3-1.7c0.2-0.5,0.5-1,0.9-1.4c0.4-0.4,0.9-0.7,1.4-1 c0.5-0.2,1.2-0.4,1.8-0.5v-2.4h1.8v2.4c0.6,0.1,1.2,0.3,1.8,0.6c0.5,0.3,1,0.6,1.3,1.1c0.4,0.4,0.7,1,0.9,1.6c0.2,0.6,0.3,1.3,0.3,2 h-3.3c0-0.9-0.2-1.6-0.6-2c-0.4-0.4-0.9-0.7-1.5-0.7c-0.3,0-0.6,0.1-0.9,0.2c-0.2,0.1-0.4,0.2-0.6,0.4c-0.2,0.2-0.3,0.4-0.3,0.6 c-0.1,0.2-0.1,0.5-0.1,0.8C28.3,26.5,28.4,26.8,28.4,27z\"}}]})(props);\n};\nexport function FcCursor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E0E0E0\",\"d\":\"M27.8,39.7c-0.1,0-0.2,0-0.4-0.1c-0.2-0.1-0.4-0.3-0.6-0.5l-3.7-8.6l-4.5,4.2C18.5,34.9,18.3,35,18,35 c-0.1,0-0.3,0-0.4-0.1C17.3,34.8,17,34.4,17,34l0-22c0-0.4,0.2-0.8,0.6-0.9C17.7,11,17.9,11,18,11c0.2,0,0.5,0.1,0.7,0.3l16,15 c0.3,0.3,0.4,0.7,0.3,1.1c-0.1,0.4-0.5,0.6-0.9,0.7l-6.3,0.6l3.9,8.5c0.1,0.2,0.1,0.5,0,0.8c-0.1,0.2-0.3,0.5-0.5,0.6l-2.9,1.3 C28.1,39.7,27.9,39.7,27.8,39.7z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#212121\",\"d\":\"M18,12l16,15l-7.7,0.7l4.5,9.8l-2.9,1.3l-4.3-9.9L18,34L18,12 M18,10c-0.3,0-0.5,0.1-0.8,0.2 c-0.7,0.3-1.2,1-1.2,1.8l0,22c0,0.8,0.5,1.5,1.2,1.8C17.5,36,17.8,36,18,36c0.5,0,1-0.2,1.4-0.5l3.4-3.2l3.1,7.3 c0.2,0.5,0.6,0.9,1.1,1.1c0.2,0.1,0.5,0.1,0.7,0.1c0.3,0,0.5-0.1,0.8-0.2l2.9-1.3c0.5-0.2,0.9-0.6,1.1-1.1c0.2-0.5,0.2-1.1,0-1.5 l-3.3-7.2l4.9-0.4c0.8-0.1,1.5-0.6,1.7-1.3c0.3-0.7,0.1-1.6-0.5-2.1l-16-15C19,10.2,18.5,10,18,10L18,10z\"}}]})(props);\n};\nexport function FcCustomerSupport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M29,43v-4.6l2.6,0.5c2.9,0.6,5.6-1.5,5.8-4.4L38,28l2.9-1.2c1-0.4,1.4-1.6,0.8-2.6L38,18 c-0.6-7.6-4.9-15-16-15C10.6,3,5,11.4,5,20c0,3.7,1.3,6.9,3.3,9.6c1.8,2.5,2.7,5.5,2.7,8.5l0,4.8H29z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FF9800\",\"points\":\"29,43 29,38.4 22,37 22,43\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#784719\",\"cx\":\"33.5\",\"cy\":\"21.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF5722\",\"d\":\"M21.4,3C12.3,3,5,10.3,5,19.4c0,11.1,6,11.4,6,18.6l2.6-0.9c2.1-0.7,3.9-2.3,4.7-4.4l2.8-6.8L27,23v-6 c0,0,7-3.8,7-10.3C31,4.2,25.7,3,21.4,3z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#546E7A\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M21,2.1c-0.6,0-1,0.4-1,1v13.9c0,0.6,0.4,1,1,1s1-0.4,1-1V3.1C22,2.5,21.6,2.1,21,2.1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M36.9,31.9c-7.9,0-10.3-4.9-10.4-5.1c-0.2-0.5-0.8-0.7-1.3-0.5c-0.5,0.2-0.7,0.8-0.5,1.3 c0.1,0.3,3,6.3,12.2,6.3c0.6,0,1-0.4,1-1S37.4,31.9,36.9,31.9z\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#37474F\",\"cx\":\"37\",\"cy\":\"33\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#37474F\",\"cx\":\"21\",\"cy\":\"23\",\"r\":\"7\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#546E7A\",\"cx\":\"21\",\"cy\":\"23\",\"r\":\"4\"}}]})(props);\n};\nexport function FcDam (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#81D4FA\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"24\",\"y\":\"28\",\"width\":\"18\",\"height\":\"14\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"10\",\"width\":\"12\",\"height\":\"32\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1976D2\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16,8h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2H8c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C16.9,10,16,9.1,16,8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16,14h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2H8c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C16.9,16,16,15.1,16,14z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16,20h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2H8c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C16.9,22,16,21.1,16,20z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16,26h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2H8c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C16.9,28,16,27.1,16,26z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16,32h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2H8c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C16.9,34,16,33.1,16,32z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16,38h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2H8c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C16.9,40,16,39.1,16,38z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M40,32h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2h-2c0,1.1-0.9,2-2,2v2 c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2 C40.9,34,40,33.1,40,32z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M40,26h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2h-2c0,1.1-0.9,2-2,2v2 c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2 C40.9,28,40,27.1,40,26z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M40,38h-2c0,1.1-0.9,2-2,2s-2-0.9-2-2h-2c0,1.1-0.9,2-2,2v2c1.2,0,2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4 s2.3-0.5,3-1.4c0.7,0.8,1.8,1.4,3,1.4v-2C40.9,40,40,39.1,40,38z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M25.1,9.2L31.5,42H18V6h3.2C23.1,6,24.8,7.4,25.1,9.2z\"}}]})(props);\n};\nexport function FcDataBackup (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#D1C4E9\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"31,30 38,35.6 38,24.4\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,28c-0.3,0-0.7,0-1,0.1v4c0.3-0.1,0.7-0.1,1-0.1c3.3,0,6,2.7,6,6s-2.7,6-6,6s-6-2.7-6-6 c0-0.3,0-0.6,0.1-0.9l-3.4-2.7C28.3,35.5,28,36.7,28,38c0,5.5,4.5,10,10,10s10-4.5,10-10S43.5,28,38,28z\"}}]}]})(props);\n};\nexport function FcDataConfiguration (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#D1C4E9\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M45.2,38.1c0.1-0.4,0.1-0.8,0.1-1.1s0-0.8-0.1-1.1l2.3-1.7c0.2-0.2,0.3-0.5,0.2-0.7l-2.3-3.9 c-0.1-0.2-0.4-0.3-0.7-0.2l-2.6,1.2c-0.6-0.5-1.3-0.9-2-1.2l-0.3-2.9c0-0.3-0.3-0.5-0.5-0.5h-4.5c-0.3,0-0.5,0.2-0.5,0.5l-0.3,2.9 c-0.7,0.3-1.4,0.7-2,1.2l-2.6-1.2c-0.3-0.1-0.6,0-0.7,0.2l-2.3,3.9c-0.1,0.2-0.1,0.6,0.2,0.7l2.3,1.7c-0.1,0.4-0.1,0.8-0.1,1.1 s0,0.8,0.1,1.1l-2.3,1.7c-0.2,0.2-0.3,0.5-0.2,0.7l2.3,3.9c0.1,0.2,0.4,0.3,0.7,0.2l2.6-1.2c0.6,0.5,1.3,0.9,2,1.2l0.3,2.9 c0,0.3,0.3,0.5,0.5,0.5h4.5c0.3,0,0.5-0.2,0.5-0.5l0.3-2.9c0.7-0.3,1.4-0.7,2-1.2l2.6,1.2c0.3,0.1,0.6,0,0.7-0.2l2.3-3.9 c0.1-0.2,0.1-0.6-0.2-0.7L45.2,38.1z M37,42.2c-2.9,0-5.2-2.3-5.2-5.2c0-2.9,2.3-5.2,5.2-5.2c2.9,0,5.2,2.3,5.2,5.2 C42.2,39.9,39.9,42.2,37,42.2z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M37,31c-3.3,0-6,2.7-6,6c0,3.3,2.7,6,6,6s6-2.7,6-6C43,33.7,40.3,31,37,31z M37,40c-1.7,0-3-1.3-3-3 c0-1.7,1.3-3,3-3s3,1.3,3,3C40,38.7,38.7,40,37,40z\"}}]})(props);\n};\nexport function FcDataEncryption (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#D1C4E9\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h25.1c1.3-1.3,4.9-0.9,4.9-2v-6C40,19.9,39.1,19,38,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M34.4,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-2.4C40,33.5,37.5,31,34.4,31z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFA000\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"43,46 41,48 39,48 37,46 37,35.4 43,35.4 43,40 42,41 43,42 43,43 42,44 43,45\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M47.5,28.5c-0.3-0.9-1-1.6-2-1.8C44.2,26.4,42.2,26,40,26s-4.2,0.4-5.5,0.6c-1,0.2-1.7,0.9-2,1.8 C32.3,29.4,32,30.6,32,32c0,1.4,0.3,2.6,0.5,3.5c0.3,0.9,1,1.6,2,1.8c1.3,0.3,3.2,0.6,5.5,0.6s4.2-0.4,5.5-0.6c1-0.2,1.7-0.9,2-1.8 c0.3-0.9,0.5-2.1,0.5-3.5C48,30.6,47.7,29.4,47.5,28.5z M42.9,31h-5.7c-0.6,0-1.1-0.5-1.1-1.1v-1.4c0-0.3,1.8-0.6,4-0.6 s4,0.3,4,0.6v1.4C44,30.5,43.5,31,42.9,31z\"}}]},{\"tag\":\"rect\",\"attr\":{\"x\":\"39\",\"y\":\"37.1\",\"fill\":\"#D68600\",\"width\":\"1\",\"height\":\"10.9\"}}]})(props);\n};\nexport function FcDataProtection (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#D1C4E9\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h25.1c1.3-1.3,4.9-0.9,4.9-2v-6C40,19.9,39.1,19,38,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M34.4,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-2.4C40,33.5,37.5,31,34.4,31z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#009688\",\"d\":\"M46,25H32c-1.1,0-2,0.9-2,2v11.8c0,1.3,0.6,2.4,1.6,3.2l7.4,5.5l7.4-5.5c1-0.8,1.6-1.9,1.6-3.2V27 C48,25.9,47.1,25,46,25z\"}}]})(props);\n};\nexport function FcDataRecovery (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#D1C4E9\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#F44336\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"35\",\"y\":\"28\",\"width\":\"6\",\"height\":\"20\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"28\",\"y\":\"35\",\"width\":\"20\",\"height\":\"6\"}}]}]})(props);\n};\nexport function FcDataSheet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M39,16v7h-6v-7h-2v7h-6v-7h-2v7h-7v2h7v6h-7v2h7v6h-7v2h25V16H39z M39,25v6h-6v-6H39z M25,25h6v6h-6V25z M25,33h6v6h-6V33z M33,39v-6h6v6H33z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#00BCD4\",\"points\":\"40,8 8,8 8,40 16,40 16,16 40,16\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#0097A7\",\"d\":\"M7,7v34h10V17h24V7H7z M9,23v-6h6v6H9z M15,25v6H9v-6H15z M17,9h6v6h-6V9z M25,9h6v6h-6V9z M15,9v6H9V9H15z M9,39v-6h6v6H9z M39,15h-6V9h6V15z\"}}]})(props);\n};\nexport function FcDatabase (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#D1C4E9\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z\"}}]}]})(props);\n};\nexport function FcDebian (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E91E63\",\"d\":\"M26.763,24.548c-0.614,0.01,0.117,0.317,0.918,0.44c0.22-0.172,0.419-0.348,0.6-0.515\\r\\n\\tC27.781,24.592,27.274,24.594,26.763,24.548 M30.054,23.727c0.364-0.5,0.631-1.055,0.723-1.624c-0.082,0.405-0.303,0.755-0.51,1.128\\r\\n\\tc-1.146,0.721-0.108-0.43,0-0.865C29.035,23.913,30.098,23.293,30.054,23.727 M31.269,20.568c0.073-1.105-0.219-0.756-0.317-0.336\\r\\n\\tC31.068,20.294,31.156,21.013,31.269,20.568 M24.439,5.478c0.327,0.058,0.706,0.104,0.653,0.183\\r\\n\\tC25.449,5.582,25.531,5.51,24.439,5.478 M25.093,5.66l-0.232,0.047l0.215-0.017L25.093,5.66 M35.294,20.986\\r\\n\\tc0.038,0.991-0.29,1.472-0.585,2.322l-0.529,0.266c-0.435,0.841,0.041,0.535-0.268,1.202c-0.679,0.603-2.055,1.883-2.496,2.004\\r\\n\\tc-0.321-0.009,0.218-0.382,0.289-0.526c-0.906,0.62-0.728,0.934-2.113,1.313l-0.041-0.09c-3.419,1.607-8.166-1.576-8.103-5.928\\r\\n\\tc-0.037,0.275-0.104,0.209-0.18,0.32c-0.175-2.237,1.033-4.486,3.073-5.403c1.995-0.987,4.335-0.58,5.763,0.75\\r\\n\\tc-0.785-1.028-2.348-2.119-4.199-2.017c-1.814,0.029-3.51,1.182-4.077,2.434c-0.929,0.585-1.038,2.256-1.441,2.563\\r\\n\\tc-0.545,4.003,1.024,5.733,3.68,7.768c0.417,0.282,0.118,0.326,0.175,0.541c-0.883-0.412-1.69-1.037-2.354-1.801\\r\\n\\tc0.353,0.517,0.733,1.017,1.223,1.41c-0.831-0.279-1.942-2.013-2.267-2.084c1.435,2.567,5.818,4.502,8.113,3.541\\r\\n\\tc-1.062,0.04-2.412,0.021-3.604-0.42c-0.501-0.257-1.183-0.791-1.062-0.893c3.133,1.171,6.369,0.887,9.078-1.286\\r\\n\\tc0.689-0.537,1.443-1.449,1.662-1.464c-0.327,0.493,0.057,0.239-0.197,0.674c0.688-1.109-0.299-0.449,0.711-1.913l0.373,0.512\\r\\n\\tc-0.139-0.917,1.143-2.033,1.012-3.489c0.291-0.445,0.326,0.478,0.015,1.502c0.434-1.136,0.113-1.317,0.224-2.254\\r\\n\\tc0.121,0.315,0.279,0.648,0.359,0.981c-0.281-1.097,0.289-1.848,0.433-2.485c-0.142-0.063-0.435,0.485-0.503-0.812\\r\\n\\tc0.01-0.562,0.156-0.295,0.214-0.435c-0.111-0.064-0.4-0.496-0.577-1.323c0.127-0.193,0.342,0.506,0.516,0.533\\r\\n\\tc-0.112-0.655-0.304-1.159-0.313-1.665c-0.51-1.061-0.181,0.143-0.592-0.458c-0.543-1.687,0.449-0.39,0.514-1.156\\r\\n\\tc0.82,1.188,1.289,3.029,1.504,3.792c-0.164-0.93-0.428-1.832-0.752-2.704c0.249,0.108-0.401-1.911,0.324-0.575\\r\\n\\tc-0.772-2.848-3.314-5.511-5.65-6.76c0.286,0.262,0.646,0.591,0.517,0.642c-1.163-0.69-0.959-0.745-1.124-1.041\\r\\n\\tc-0.946-0.383-1.01,0.034-1.636,0c-1.786-0.943-2.129-0.845-3.772-1.437l0.078,0.349c-1.184-0.394-1.379,0.146-2.657,0.002\\r\\n\\tc-0.078-0.062,0.41-0.219,0.811-0.278c-1.143,0.15-1.09-0.228-2.208,0.042c0.277-0.197,0.566-0.322,0.861-0.486\\r\\n\\tc-0.932,0.059-2.226,0.542-1.825,0.103c-1.521,0.676-4.22,1.63-5.735,3.051l-0.047-0.322c-0.694,0.835-3.028,2.492-3.215,3.57\\r\\n\\tl-0.185,0.043c-0.361,0.613-0.595,1.305-0.881,1.935c-0.474,0.806-0.692,0.311-0.626,0.436c-0.929,1.883-1.39,3.467-1.79,4.768\\r\\n\\tc0.284,0.424,0.007,2.558,0.113,4.264c-0.467,8.429,5.916,16.609,12.891,18.5c1.023,0.365,2.542,0.354,3.836,0.39\\r\\n\\tc-1.525-0.438-1.722-0.232-3.209-0.749c-1.074-0.506-1.308-1.082-2.066-1.74l0.3,0.53c-1.49-0.526-0.867-0.652-2.078-1.034\\r\\n\\tl0.321-0.424c-0.482-0.032-1.279-0.811-1.497-1.241l-0.528,0.021c-0.634-0.783-0.972-1.348-0.948-1.785l-0.17,0.305\\r\\n\\tc-0.194-0.332-2.335-2.937-1.224-2.33c-0.207-0.188-0.481-0.307-0.779-0.85l0.227-0.258c-0.535-0.686-0.983-1.568-0.949-1.86\\r\\n\\tc0.284,0.384,0.482,0.454,0.679,0.522c-1.351-3.349-1.426-0.187-2.448-3.409l0.216-0.019c-0.166-0.246-0.265-0.521-0.399-0.785\\r\\n\\tl0.094-0.938c-0.972-1.125-0.272-4.781-0.132-6.783c0.097-0.816,0.811-1.684,1.354-3.045l-0.332-0.055\\r\\n\\tc0.632-1.104,3.612-4.433,4.99-4.26c0.669-0.841-0.132-0.002-0.263-0.215c1.469-1.52,1.93-1.073,2.92-1.349\\r\\n\\tc1.068-0.633-0.917,0.251-0.41-0.239c1.848-0.473,1.31-1.073,3.718-1.311c0.254,0.145-0.59,0.223-0.8,0.41\\r\\n\\tc1.538-0.753,4.87-0.584,7.034,0.417c2.511,1.173,5.33,4.642,5.443,7.904l0.126,0.035c-0.063,1.298,0.198,2.798-0.257,4.175\\r\\n\\tL35.294,20.986 M20.072,25.389l-0.086,0.431c0.403,0.547,0.724,1.142,1.237,1.567C20.853,26.664,20.577,26.364,20.072,25.389\\r\\n\\t M21.023,25.353c-0.213-0.237-0.34-0.518-0.48-0.802c0.135,0.495,0.411,0.922,0.669,1.357L21.023,25.353 M37.877,21.688\\r\\n\\tl-0.088,0.226c-0.166,1.174-0.523,2.332-1.068,3.412C37.324,24.189,37.714,22.947,37.877,21.688 M24.56,5.185\\r\\n\\tC24.974,5.031,25.579,5.101,26.019,5c-0.573,0.048-1.144,0.079-1.706,0.151L24.56,5.185 M10.007,12.923\\r\\n\\tc0.095,0.882-0.667,1.229,0.167,0.644C10.623,12.562,10,13.286,10.007,12.923 M9.028,17.016c0.191-0.592,0.226-0.943,0.3-1.285\\r\\n\\tC8.797,16.41,9.084,16.553,9.028,17.016\"}}]})(props);\n};\nexport function FcDebt (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M10,12c-2.8,0-5-2.2-5-5s2.2-5,5-5s5,2.2,5,5S12.8,12,10,12z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M2,22v8l3,2l1,14h8l1-14l3-2v-8c0-4.4-3.6-8-8-8h0C5.6,14,2,17.6,2,22z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#263238\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M22.4,40.4c-0.6,2.5-1,3.6-2.4,3.6c-0.6,0-1.2-0.5-1.9-1.1c-1-0.8-2.2-1.9-4.1-1.9v2c1.1,0,1.9,0.7,2.8,1.4 c0.9,0.7,1.9,1.6,3.2,1.6c3.1,0,3.8-2.9,4.4-5.2C25,38.2,25.4,37,27,37v-2C23.7,35,22.9,38.1,22.4,40.4z\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"14.4,40 10,40 10,44 14.1,44\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#4CAF50\",\"cx\":\"36\",\"cy\":\"36\",\"r\":\"10\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#fff\",\"d\":\"M35,34c0.1,0.2,0.1,0.3,0.3,0.4c0.1,0.1,0.3,0.2,0.5,0.4c0.2,0.1,0.5,0.2,0.8,0.3c0.5,0.2,0.9,0.4,1.3,0.6 c0.4,0.2,0.7,0.4,1,0.7c0.3,0.3,0.5,0.6,0.7,0.9c0.2,0.4,0.2,0.8,0.2,1.3c0,0.4-0.1,0.8-0.2,1.2c-0.1,0.4-0.3,0.7-0.6,0.9 c-0.3,0.3-0.6,0.5-0.9,0.6c-0.4,0.2-0.8,0.3-1.2,0.3v1.5h-1.2v-1.5c-0.4,0-0.8-0.1-1.2-0.3c-0.4-0.2-0.7-0.4-1-0.6 c-0.3-0.3-0.5-0.6-0.7-1.1c-0.2-0.4-0.3-0.9-0.3-1.5h2.2c0,0.4,0,0.7,0.1,0.9c0.1,0.2,0.2,0.4,0.4,0.6c0.2,0.1,0.3,0.2,0.5,0.3 c0.2,0.1,0.4,0.1,0.6,0.1c0.2,0,0.4,0,0.6-0.1c0.2-0.1,0.3-0.2,0.4-0.3c0.1-0.1,0.2-0.3,0.3-0.4c0.1-0.2,0.1-0.3,0.1-0.5 c0-0.2,0-0.4-0.1-0.6c-0.1-0.2-0.1-0.3-0.3-0.4c-0.1-0.1-0.3-0.3-0.5-0.4c-0.2-0.1-0.4-0.2-0.7-0.3c-0.5-0.2-0.9-0.4-1.3-0.6 c-0.4-0.2-0.7-0.4-1-0.7c-0.3-0.3-0.5-0.6-0.7-0.9c-0.2-0.4-0.2-0.8-0.2-1.3c0-0.4,0.1-0.8,0.2-1.2c0.1-0.3,0.3-0.7,0.6-0.9 c0.3-0.3,0.6-0.5,0.9-0.6c0.4-0.2,0.8-0.3,1.2-0.3v-1.6h1.2v1.6c0.4,0.1,0.8,0.2,1.2,0.4c0.4,0.2,0.6,0.4,0.9,0.7 c0.2,0.3,0.4,0.6,0.6,1c0.1,0.4,0.2,0.9,0.2,1.4h-2.2c0-0.6-0.1-1-0.4-1.3c-0.2-0.3-0.6-0.4-1-0.4c-0.2,0-0.4,0-0.6,0.1 c-0.2,0.1-0.3,0.2-0.4,0.3C35.1,32.7,35,32.8,35,33s-0.1,0.3-0.1,0.5C34.9,33.7,34.9,33.9,35,34z\"}}]})(props);\n};\nexport function FcDecision (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFCC80\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#0277BD\",\"d\":\"M21.8,29.6c0-6.6,5.1-6.2,5.1-10.2c0-1-0.3-3-2.9-3c-2.8,0-3,2.3-3,2.8h-3.8c0-1,0.4-6,6.8-6 c6.5,0,6.7,5.1,6.7,6c0,4.9-5.4,5.6-5.4,10.3H21.8z M21.5,34.5c0-0.3,0.1-2.1,2.1-2.1c2,0,2.2,1.8,2.2,2.1c0,0.6-0.3,2-2.2,2 C21.8,36.5,21.5,35.1,21.5,34.5z\"}}]})(props);\n};\nexport function FcDeleteColumn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M30,5H18c-2.2,0-4,1.8-4,4v30c0,2.2,1.8,4,4,4h12c2.2,0,4-1.8,4-4V9C34,6.8,32.2,5,30,5z M18,39V9h12l0,30 H18z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#F44336\",\"cx\":\"38\",\"cy\":\"38\",\"r\":\"10\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#fff\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"36.5\",\"y\":\"32\",\"transform\":\"matrix(-.707 .707 -.707 -.707 91.74 38)\",\"width\":\"3\",\"height\":\"12\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"36.5\",\"y\":\"32\",\"transform\":\"matrix(-.707 -.707 .707 -.707 38 91.74)\",\"width\":\"3\",\"height\":\"12\"}}]}]})(props);\n};\nexport function FcDeleteDatabase (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#D1C4E9\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M38,7H10C8.9,7,8,7.9,8,9v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2V9C40,7.9,39.1,7,38,7z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,19H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,19.9,39.1,19,38,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,31H10c-1.1,0-2,0.9-2,2v6c0,1.1,0.9,2,2,2h28c1.1,0,2-0.9,2-2v-6C40,31.9,39.1,31,38,31z\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#F44336\",\"cx\":\"38\",\"cy\":\"38\",\"r\":\"10\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#fff\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"36.5\",\"y\":\"32\",\"transform\":\"matrix(-.707 .707 -.707 -.707 91.74 38)\",\"width\":\"3\",\"height\":\"12\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"36.5\",\"y\":\"32\",\"transform\":\"matrix(-.707 -.707 .707 -.707 38 91.74)\",\"width\":\"3\",\"height\":\"12\"}}]}]})(props);\n};\nexport function FcDeleteRow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M43,30V18c0-2.2-1.8-4-4-4H9c-2.2,0-4,1.8-4,4v12c0,2.2,1.8,4,4,4h30C41.2,34,43,32.2,43,30z M9,18h30v12 L9,30V18z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#F44336\",\"cx\":\"38\",\"cy\":\"38\",\"r\":\"10\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#fff\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"36.5\",\"y\":\"32\",\"transform\":\"matrix(-.707 .707 -.707 -.707 91.74 38)\",\"width\":\"3\",\"height\":\"12\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"36.5\",\"y\":\"32\",\"transform\":\"matrix(-.707 -.707 .707 -.707 38 91.74)\",\"width\":\"3\",\"height\":\"12\"}}]}]})(props);\n};\nexport function FcDepartment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#C5CAE9\",\"points\":\"42,42 6,42 6,9 24,2 42,9\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"42\",\"fill\":\"#9FA8DA\",\"width\":\"36\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"35\",\"fill\":\"#BF360C\",\"width\":\"8\",\"height\":\"9\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1565C0\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"27\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"27\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"27\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"35\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"35\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"19\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"19\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"19\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"11\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"11\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"11\",\"width\":\"6\",\"height\":\"5\"}}]}]})(props);\n};\nexport function FcDeployment (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#B0BEC5\",\"d\":\"M37,42H5V32h32c2.8,0,5,2.2,5,5v0C42,39.8,39.8,42,37,42z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M10,34c-1.7,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S11.7,34,10,34z M10,38c-0.6,0-1-0.4-1-1c0-0.6,0.4-1,1-1 s1,0.4,1,1C11,37.6,10.6,38,10,38z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M19,34c-1.7,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S20.7,34,19,34z M19,38c-0.6,0-1-0.4-1-1c0-0.6,0.4-1,1-1 s1,0.4,1,1C20,37.6,19.6,38,19,38z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M37,34c-1.7,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S38.7,34,37,34z M37,38c-0.6,0-1-0.4-1-1c0-0.6,0.4-1,1-1 s1,0.4,1,1C38,37.6,37.6,38,37,38z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M28,34c-1.7,0-3,1.3-3,3s1.3,3,3,3s3-1.3,3-3S29.7,34,28,34z M28,38c-0.6,0-1-0.4-1-1c0-0.6,0.4-1,1-1 s1,0.4,1,1C29,37.6,28.6,38,28,38z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF9800\",\"d\":\"M35,31H11c-1.1,0-2-0.9-2-2V7c0-1.1,0.9-2,2-2h24c1.1,0,2,0.9,2,2v22C37,30.1,36.1,31,35,31z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#8A5100\",\"d\":\"M26.5,13h-7c-0.8,0-1.5-0.7-1.5-1.5v0c0-0.8,0.7-1.5,1.5-1.5h7c0.8,0,1.5,0.7,1.5,1.5v0 C28,12.3,27.3,13,26.5,13z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M37,31H5v2h32c2.2,0,4,1.8,4,4s-1.8,4-4,4H5v2h32c3.3,0,6-2.7,6-6S40.3,31,37,31z\"}}]})(props);\n};\nexport function FcDiploma1 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"9\",\"fill\":\"#E8EAF6\",\"width\":\"40\",\"height\":\"30\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#5C6BC0\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"30,34 32.8,34 27.8,29 25,31.8 30,36.8\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"18,34 15.2,34 20.2,29 23,31.8 18,36.8\"}}]},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"15\",\"fill\":\"#9FA8DA\",\"width\":\"26\",\"height\":\"4\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#9FA8DA\",\"d\":\"M24,23c-2.8,0-5,2.2-5,5s2.2,5,5,5s5-2.2,5-5S26.8,23,24,23z M24,31c-1.7,0-3-1.3-3-3s1.3-3,3-3s3,1.3,3,3 S25.7,31,24,31z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#9FA8DA\",\"d\":\"M3,8v32h42V8H3z M43,35c-1.7,0-3,1.3-3,3H8c0-1.7-1.3-3-3-3V13c1.7,0,3-1.3,3-3h32c0,1.7,1.3,3,3,3V35z\"}}]})(props);\n};\nexport function FcDiploma2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"4\",\"fill\":\"#FBE9E7\",\"width\":\"30\",\"height\":\"40\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#F4511E\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"30,37 32.8,37 27.8,32 25,34.8 30,39.8\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"18,37 15.2,37 20.2,32 23,34.8 18,39.8\"}}]},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"13\",\"fill\":\"#FF8A65\",\"width\":\"18\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"20\",\"fill\":\"#FF8A65\",\"width\":\"18\",\"height\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF8A65\",\"d\":\"M24,26c-2.8,0-5,2.2-5,5s2.2,5,5,5s5-2.2,5-5S26.8,26,24,26z M24,34c-1.7,0-3-1.3-3-3s1.3-3,3-3s3,1.3,3,3 S25.7,34,24,34z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF8A65\",\"d\":\"M8,3v42h32V3H8z M38,40c-1.7,0-3,1.3-3,3H13c0-1.7-1.3-3-3-3V8c1.7,0,3-1.3,3-3h22c0,1.7,1.3,3,3,3V40z\"}}]})(props);\n};\nexport function FcDisapprove (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFCC80\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#F44336\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"16.8\",\"transform\":\"matrix(.707 -.707 .707 .707 -11.355 24.586)\",\"width\":\"4\",\"height\":\"18.5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"16.8\",\"transform\":\"matrix(.707 .707 -.707 .707 25.414 -9.355)\",\"width\":\"4\",\"height\":\"18.5\"}}]}]})(props);\n};\nexport function FcDisclaimer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFCC80\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13,22H8v-8.5c0-1.4,1.1-2.5,2.5-2.5h0c1.4,0,2.5,1.1,2.5,2.5V22z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20,22h-5V7.5C15,6.1,16.1,5,17.5,5h0C18.9,5,20,6.1,20,7.5V22z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M27,22h-5V5.5C22,4.1,23.1,3,24.5,3h0C25.9,3,27,4.1,27,5.5V22z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M34,22h-5V8.5C29,7.1,30.1,6,31.5,6h0C32.9,6,34,7.1,34,8.5V22z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M32.1,43L27.1,38l10-10c1.4-1.4,3.6-1.4,4.9,0l0,0c1.4,1.4,1.4,3.6,0,4.9L32.1,43z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M29,21c0,0.6-0.4,1-1,1s-1-0.4-1-1h-5c0,0.6-0.4,1-1,1s-1-0.4-1-1h-5c0,0.6-0.4,1-1,1s-1-0.4-1-1H8v16 c0,4.4,3.6,8,8,8h11.2c3.7,0,6.8-3,6.8-6.8V21H29z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#F44336\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"20.2\",\"y\":\"25.5\",\"transform\":\"matrix(.707 -.707 .707 .707 -16.897 25.224)\",\"width\":\"3.5\",\"height\":\"15\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20.2\",\"y\":\"25.6\",\"transform\":\"matrix(.707 .707 -.707 .707 29.811 -5.877)\",\"width\":\"3.5\",\"height\":\"15\"}}]}]})(props);\n};\nexport function FcDislike (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M34,9c-4.2,0-7.9,2.1-10,5.4C21.9,11.1,18.2,9,14,9C7.4,9,2,14.4,2,21c0,11.9,22,24,22,24s22-12,22-24 C46,14.4,40.6,9,34,9z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"-2.9\",\"transform\":\"matrix(.707 -.707 .707 .707 -9.941 24)\",\"fill\":\"#37474F\",\"width\":\"4\",\"height\":\"53.7\"}}]})(props);\n};\nexport function FcDisplay (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#80DEEA\",\"d\":\"M40,41H8c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v26C44,39.2,42.2,41,40,41z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#2962FF\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"36,17 31,17 29,15 31,13 36,13 38,15\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"36,35 31,35 29,33 31,31 36,31 38,33\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"37,30 37,18 39,16 41,18 41,30 39,32\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"26,30 26,18 28,16 30,18 30,30 28,32\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"17,17 12,17 10,15 12,13 17,13 19,15\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"17,35 12,35 10,33 12,31 17,31 19,33\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"18,30 18,18 20,16 22,18 22,30 20,32\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"7,30 7,18 9,16 11,18 11,30 9,32\"}}]}]})(props);\n};\nexport function FcDoNotInhale (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFA726\",\"d\":\"M33.5,20C31.2,17.7,30,13.9,30,9c0-3.2,0-3,0-3H18c0,0,0-0.2,0,3c0,4.9-1.2,8.7-3.5,11 C12.1,20.2,9,22,9,25.4c0,4.5,5.1,4.6,6,4.6c1.2,0,6.1,4,8,4c0,0,0.7,0,1,0s1,0,1,0c1.9,0,6.8-4,8-4c0.9,0,6-0.1,6-4.6 C39,22,35.9,20.2,33.5,20z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFA726\",\"d\":\"M33.5,20C31.2,17.7,30,13.9,30,9c0-3.2,0-3,0-3H18c0,0,0-0.2,0,3c0,4.9-1.2,8.7-3.5,11 C12.1,20.2,9,22,9,25.4c0,4.5,5.1,4.6,6,4.6c1.2,0,6.1,4,8,4c0,0,0.7,0,1,0s1,0,1,0c1.9,0,6.8-4,8-4c0.9,0,6-0.1,6-4.6 C39,22,35.9,20.2,33.5,20z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M26,9c0-3.2,0-3,0-3h-4c0,0,0-0.2,0,3c0,4.9-3,19-3,19s1.6,2,5,2s5-2,5-2S26,13.9,26,9z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#CC861E\",\"d\":\"M23,34c-3.3,0-6.4-3.1-8-4c0,0,0.7,0,1.8,0C19.9,30,21.3,34,23,34z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#CC861E\",\"d\":\"M25,34c3.3,0,6.4-3.1,8-4c0,0-0.7,0-1.8,0C28.1,30,26.7,34,25,34z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"-2.9\",\"transform\":\"matrix(.707 -.707 .707 .707 -9.941 24)\",\"fill\":\"#37474F\",\"width\":\"4\",\"height\":\"53.7\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FF5722\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"18,35 22,39 14,39\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"17\",\"y\":\"38\",\"width\":\"2\",\"height\":\"4\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"30,35 34,39 26,39\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"29\",\"y\":\"38\",\"width\":\"2\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcDoNotInsert (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#7CB342\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"31,29 24,36 17,29\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"7\",\"width\":\"4\",\"height\":\"25\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M42,18c-3.3,0-6,2.7-6,6v12c0,1.1-0.9,2-2,2H14c-1.1,0-2-0.9-2-2V24c0-3.3-2.7-6-6-6H4v4h2c1.1,0,2,0.9,2,2 v12c0,3.3,2.7,6,6,6h20c3.3,0,6-2.7,6-6V24c0-1.1,0.9-2,2-2h2v-4H42z\"}}]},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"-2.9\",\"transform\":\"matrix(.707 -.707 .707 .707 -9.941 24)\",\"fill\":\"#37474F\",\"width\":\"4\",\"height\":\"53.7\"}}]})(props);\n};\nexport function FcDoNotMix (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#00BCD4\",\"points\":\"26.9,42 17,42 17,32.1\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#00BCD4\",\"points\":\"30,6 30,26.2 19.8,36.4 22.6,39.2 34,27.8 34,6\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#2196F3\",\"points\":\"15.9,31 6,31 6,21.1\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#2196F3\",\"points\":\"20.2,14 8.8,25.4 11.6,28.2 21.8,18 41,18 41,14\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"-2.9\",\"transform\":\"matrix(.707 -.707 .707 .707 -9.941 24)\",\"fill\":\"#37474F\",\"width\":\"4\",\"height\":\"53.7\"}}]})(props);\n};\nexport function FcDocument (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#90CAF9\",\"points\":\"40,45 8,45 8,3 30,3 40,13\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#E1F5FE\",\"points\":\"38.5,14 29,14 29,4.5\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1976D2\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"21\",\"width\":\"17\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"25\",\"width\":\"13\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"29\",\"width\":\"17\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"33\",\"width\":\"13\",\"height\":\"2\"}}]}]})(props);\n};\nexport function FcDonate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#E69329\",\"points\":\"11.7,21.6 16.8,31.5 26.3,27.6 30.7,14.9 15.9,15.7\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#546E7A\",\"cx\":\"15\",\"cy\":\"36\",\"r\":\"7.8\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#90A4AE\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15,27c-5,0-9,4-9,9c0,5,4,9,9,9s9-4,9-9C24,31,20,27,15,27z M15,43c-3.9,0-7-3.1-7-7c0-3.9,3.1-7,7-7 s7,3.1,7,7C22,39.9,18.9,43,15,43z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"33\",\"width\":\"2\",\"height\":\"8\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFB74D\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M12.9,36L12.9,36c1,1.9,3.2,2.7,5.1,1.7l16.5-8.5c1-0.5,1.7-1.2,2.2-1.9c1.7-3.2,5.6-10.7,8.2-17.2 l-18.2,8.7L21.9,26l-6.8,3.6C12.5,30.9,11.7,33.8,12.9,36z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M30.2,3L13.7,9.3c-0.7,0.2-1.5,1-2.2,1.7l-5.6,7.5c-1,1.5-1.2,3.4-0.5,5.1c0.4,1,1.7,3.4,3.1,6.1 c1.6-1.7,3.9-2.7,6.5-2.7c0.4,0,0.9,0,1.3,0.1l-2.1-4.2l4.6-4.1h8c0,0,15.5-2.2,18.2-8.7L30.2,3z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFCDD2\",\"d\":\"M18.2,36c-1.3,0.6-2.8,0-3.3-1.3c-0.6-1.3,0-2.8,1.3-3.3C17.4,30.8,19.4,35.4,18.2,36z\"}}]})(props);\n};\nexport function FcDoughnutChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#00BCD4\",\"d\":\"M24,30c-3.3,0-6-2.7-6-6s2.7-6,6-6V5C13.5,5,5,13.5,5,24s8.5,19,19,19c4.4,0,8.5-1.5,11.8-4.1l-8-10.2 C26.7,29.5,25.4,30,24,30z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#448AFF\",\"d\":\"M30,24h13c0-10.5-8.5-19-19-19v13C27.3,18,30,20.7,30,24z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M43,24H30c0,1.9-0.9,3.6-2.3,4.7l8,10.2C40.2,35.4,43,30,43,24z\"}}]})(props);\n};\nexport function FcDownLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"4,29 18,17.3 18,40.7\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M42,21V8h-8v13c0,2.2-1.8,4-4,4H13v8h17C36.6,33,42,27.6,42,21z\"}}]})(props);\n};\nexport function FcDownRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"44,29 30,17.3 30,40.7\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M6,21V8h8v13c0,2.2,1.8,4,4,4h17v8H18C11.4,33,6,27.6,6,21z\"}}]})(props);\n};\nexport function FcDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"24,44 12.3,30 35.7,30\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"6\",\"width\":\"8\",\"height\":\"27\"}}]}]})(props);\n};\nexport function FcDownload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#1565C0\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"24,37.1 13,24 35,24\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"4\",\"width\":\"8\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"10\",\"width\":\"8\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"16\",\"width\":\"8\",\"height\":\"11\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"40\",\"width\":\"36\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcDribbble (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF4081\",\"d\":\"M42,37c0,2.762-2.238,5-5,5H11c-2.761,0-5-2.238-5-5V11c0-2.762,2.239-5,5-5h26c2.762,0,5,2.238,5,5V37z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFFFFF\",\"d\":\"M33.061,26.273c-0.703-0.221-1.464,0.175-1.686,0.895c-0.824,2.658-2.316,5.419-2.993,5.57\\r\\n\\tc-0.507,0-1.236-0.43-1.958-1.44c1.674-3.594,2.551-8.106,2.551-11.118c0-8.413-2.124-10.18-3.908-10.18\\r\\n\\tc-3.757,0-3.8,9.912-3.8,10.012c0,1.166,0.042,2.248,0.121,3.256c-0.518-0.189-1.113-0.319-1.77-0.319\\r\\n\\tc-3.86,0-5.618,3.809-5.618,7.347C14,33.63,15.871,37,20.046,37c1.972,0,3.634-1.291,4.975-3.221\\r\\n\\tc1.188,1.235,2.432,1.696,3.36,1.696c2.923,0,4.858-5.233,5.556-7.486C34.16,27.27,33.767,26.502,33.061,26.273z M20.048,34.264\\r\\n\\tc-3.031,0-3.36-2.775-3.36-3.969c0-0.188,0.034-4.611,2.932-4.611c1.144,0,2.022,0.885,2.022,0.885\\r\\n\\tc0.065,0.07,0.137,0.131,0.212,0.184c0.375,1.904,0.904,3.426,1.516,4.632C22.366,33.123,21.203,34.264,20.048,34.264z\\r\\n\\t M24.901,27.926c-0.559-1.93-0.946-4.521-0.946-7.914c0-3.126,0.666-6.068,1.219-7.073c0.424,0.644,1.115,2.65,1.115,7.241\\r\\n\\tC26.289,22.616,25.75,25.446,24.901,27.926z\"}}]})(props);\n};\nexport function FcDvdLogo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#42A5F5\",\"d\":\"M24.002,27c-12.154,0-22,1.343-22,3.006c0,1.653,9.845,2.994,22,2.994c12.156,0,22-1.341,22-2.994\\r\\n\\tC46.002,28.343,36.158,27,24.002,27z M24.002,30.972c-2.863,0-5.191-0.494-5.191-1.104c0-0.609,2.329-1.104,5.191-1.104\\r\\n\\tc2.862,0,5.193,0.495,5.193,1.104C29.195,30.478,26.864,30.972,24.002,30.972z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#1565C0\",\"d\":\"M21.29,15l2.371,6.43L29.25,15h9.486c4.647,0,7.906,2.148,7.158,4.904c-0.745,2.756-5.178,4.904-9.803,4.904\\r\\n\\th-6.295c0,0,0.141-0.043,0.172-0.126c0.246-0.944,1.707-6.264,1.725-6.347c0.02-0.102-0.105-0.133-0.105-0.133h4.572\\r\\n\\tc0,0-0.088-0.006-0.125,0.133c-0.023,0.078-0.947,3.429-1.145,4.176c-0.023,0.094-0.162,0.139-0.162,0.139h1.094\\r\\n\\tc2.594,0,5.047-0.828,5.563-2.748c0.473-1.752-1.244-2.746-4.039-2.746h-1.014l-4.375,0.004l-10.043,9.932l-3.845-9.754\\r\\n\\tc0,0-0.036-0.066-0.065-0.147c-0.014-0.026-0.108-0.106-0.206-0.063c-0.065,0.036-0.074,0.117-0.066,0.146\\r\\n\\tc0.036,0.066,0.042,0.08,0.048,0.111c0.569,0.93,0.467,2.009,0.33,2.52c-0.774,2.75-5.186,4.904-9.812,4.904H2.002\\r\\n\\tc0,0,0.149-0.043,0.172-0.126c0.254-0.946,1.717-6.294,1.726-6.347c0.018-0.09-0.099-0.133-0.099-0.133h4.604\\r\\n\\tc0,0-0.132,0.037-0.158,0.131c-0.024,0.078-0.954,3.432-1.151,4.178c-0.023,0.094-0.178,0.139-0.178,0.139h1.118\\r\\n\\tc2.597,0,5.032-0.828,5.547-2.748c0.472-1.752-1.23-2.746-4.021-2.746H8.539h-4.45c0,0,0.125-0.059,0.147-0.139\\r\\n\\tc0.123-0.443,0.497-1.834,0.515-1.899C4.771,15.047,4.646,15,4.646,15H21.29L21.29,15z\"}}]})(props);\n};\nexport function FcEditImage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#8CBCD6\",\"d\":\"M31,41H8c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v17C44,35.2,38.2,41,31,41z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#B3DDF5\",\"cx\":\"35\",\"cy\":\"16\",\"r\":\"3\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#9AC9E3\",\"points\":\"20,16 9,32 31,32\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#B3DDF5\",\"points\":\"31,22 23,32 39,32\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E57373\",\"d\":\"M47.7,29.1l-2.8-2.8c-0.4-0.4-1.1-0.4-1.6,0L42,27.6l4.4,4.4l1.3-1.3C48.1,30.3,48.1,29.6,47.7,29.1z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"27.1\",\"y\":\"35.1\",\"transform\":\"matrix(.707 -.707 .707 .707 -16.508 36.511)\",\"fill\":\"#FF9800\",\"width\":\"17.4\",\"height\":\"6.2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"41.5\",\"y\":\"27.8\",\"transform\":\"matrix(-.707 .707 -.707 -.707 95.395 22.352)\",\"fill\":\"#B0BEC5\",\"width\":\"3.1\",\"height\":\"6.2\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FFC107\",\"points\":\"27.5,42.2 26,48 31.8,46.5\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#37474F\",\"points\":\"26.7,45 26,48 29,47.3\"}}]})(props);\n};\nexport function FcElectricalSensor (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#B2EBF2\",\"cx\":\"32\",\"cy\":\"24\",\"r\":\"9\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#4DD0E1\",\"d\":\"M32,12c-6.6,0-12,5.4-12,12c0,6.6,5.4,12,12,12s12-5.4,12-12C44,17.4,38.6,12,32,12z M32,32 c-4.4,0-8-3.6-8-8s3.6-8,8-8s8,3.6,8,8S36.4,32,32,32z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"25.4,22 19.8,5.1 13.6,27.7 11.4,22 4,22 4,26 8.6,26 14.4,40.3 20.2,18.9 22.6,26 30,26 30,22\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"32\",\"cy\":\"24\",\"r\":\"4\"}}]}]})(props);\n};\nexport function FcElectricalThreshold (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"12\",\"fill\":\"#80DEEA\",\"width\":\"42\",\"height\":\"24\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"23\",\"fill\":\"#03A9F4\",\"width\":\"42\",\"height\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"none\",\"stroke\":\"#3F51B5\",\"strokeWidth\":\"4\",\"strokeMiterlimit\":\"10\",\"d\":\"M4,18l4.5-1.5c0.9-0.3,1.9,0.1,2.3,0.9l8.7,14.3 c0.7,1.2,2.4,1.3,3.2,0.2l2.3-2.8c0.5-0.6,1.4-0.9,2.2-0.6l3,1c1,0.3,2.1-0.2,2.5-1.1l4.3-10.1c0.5-1.1,1.9-1.6,2.9-0.9l4,2.7\"}}]})(props);\n};\nexport function FcElectricity (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#00BCD4\",\"d\":\"M33.7,5L22,17l15,5L21.3,36.7l5.1,2.8L12,43l2.7-14.8l2.9,5.1L27,24l-15-5L25,5H33.7z\"}}]})(props);\n};\nexport function FcElectroDevices (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M39,43H9c-2.2,0-4-1.8-4-4V9c0-2.2,1.8-4,4-4h30c2.2,0,4,1.8,4,4v30C43,41.2,41.2,43,39,43z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#80DEEA\",\"d\":\"M33.2,5l-9.8,10.1L36,19.3L22.8,31.7l4.3,2.4L15,37l2.3-12.5l2.4,4.3l8-7.8L15,16.8L25.9,5H33.2z\"}}]})(props);\n};\nexport function FcElectronics (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF9800\",\"d\":\"M44,18v-4H34V4h-4v10h-4V4h-4v10h-4V4h-4v10H4v4h10v4H4v4h10v4H4v4h10v10h4V34h4v10h4V34h4v10h4V34h10v-4H34 v-4h10v-4H34v-4H44z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#4CAF50\",\"d\":\"M8,12v24c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V12c0-2.2-1.8-4-4-4H12C9.8,8,8,9.8,8,12z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M31,31H17c-1.1,0-2-0.9-2-2V19c0-1.1,0.9-2,2-2h14c1.1,0,2,0.9,2,2v10C33,30.1,32.1,31,31,31z\"}}]})(props);\n};\nexport function FcEmptyBattery (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#CFD8DC\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M34,44H14c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v34C36,43.1,35.1,44,34,44z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M28,13h-8c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1v7C29,12.6,28.6,13,28,13z\"}}]}]})(props);\n};\nexport function FcEmptyFilter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFCC80\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"29,23 19,23 7,9 41,9\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"29,38 19,44 19,23 29,23\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M41.5,9h-35C5.7,9,5,8.3,5,7.5v0C5,6.7,5.7,6,6.5,6h35C42.3,6,43,6.7,43,7.5v0C43,8.3,42.3,9,41.5,9z\"}}]}]})(props);\n};\nexport function FcEmptyTrash (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#B39DDB\",\"d\":\"M30.6,44H17.4c-2,0-3.7-1.4-4-3.4L9,11h30l-4.5,29.6C34.2,42.6,32.5,44,30.6,44z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#7E57C2\",\"d\":\"M38,13H10c-1.1,0-2-0.9-2-2v0c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v0C40,12.1,39.1,13,38,13z\"}}]})(props);\n};\nexport function FcEndCall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M43.5,16.8l-2.3-2.3c-8.1-7.9-27.5-6.8-34.5,0l-2.3,2.3c-0.6,0.6-0.6,1.6,0,2.3l4.6,4.5 c0.6,0.6,1.7,0.6,2.3,0l5.1-4.9L16,13.4c1.6-1.6,14.4-1.6,16,0l-0.3,5.5l4.9,4.7c0.6,0.6,1.7,0.6,2.3,0l4.6-4.5 C44.2,18.4,44.2,17.4,43.5,16.8z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#B71C1C\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"24,40.5 16,31 32,31\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"24\",\"width\":\"6\",\"height\":\"7.5\"}}]}]})(props);\n};\nexport function FcEngineering (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#EF6C00\",\"d\":\"M37.4,24.6l-11.6-2.2l-3.9-11.2l-3.8,1.3L22,23.6l-7.8,9l3,2.6l7.8-9l11.6,2.2L37.4,24.6z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FF9800\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M24,19c-2.8,0-5,2.2-5,5c0,2.8,2.2,5,5,5s5-2.2,5-5C29,21.2,26.8,19,24,19z M24,26c-1.1,0-2-0.9-2-2 c0-1.1,0.9-2,2-2s2,0.9,2,2C26,25.1,25.1,26,24,26z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M40.7,27c0.2-1,0.3-2,0.3-3c0-1-0.1-2-0.3-3l3.3-2.4c0.4-0.3,0.6-0.9,0.3-1.4L40,9.8 c-0.3-0.5-0.8-0.7-1.3-0.4L35,11c-1.5-1.3-3.3-2.3-5.2-3l-0.4-4.1c-0.1-0.5-0.5-0.9-1-0.9h-8.6c-0.5,0-1,0.4-1,0.9L18.2,8 c-1.9,0.7-3.7,1.7-5.2,3L9.3,9.3C8.8,9.1,8.2,9.3,8,9.8l-4.3,7.4c-0.3,0.5-0.1,1.1,0.3,1.4L7.3,21C7.1,22,7,23,7,24 c0,1,0.1,2,0.3,3L4,29.4c-0.4,0.3-0.6,0.9-0.3,1.4L8,38.2c0.3,0.5,0.8,0.7,1.3,0.4L13,37c1.5,1.3,3.3,2.3,5.2,3l0.4,4.1 c0.1,0.5,0.5,0.9,1,0.9h8.6c0.5,0,1-0.4,1-0.9l0.4-4.1c1.9-0.7,3.7-1.7,5.2-3l3.7,1.7c0.5,0.2,1.1,0,1.3-0.4l4.3-7.4 c0.3-0.5,0.1-1.1-0.3-1.4L40.7,27z M24,35c-6.1,0-11-4.9-11-11c0-6.1,4.9-11,11-11s11,4.9,11,11C35,30.1,30.1,35,24,35z\"}}]}]})(props);\n};\nexport function FcEnteringHeavenAlive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"17\",\"y\":\"29\",\"fill\":\"#039BE5\",\"width\":\"14\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"33\",\"fill\":\"#039BE5\",\"width\":\"22\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"37\",\"fill\":\"#039BE5\",\"width\":\"30\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"5\",\"y\":\"41\",\"fill\":\"#039BE5\",\"width\":\"38\",\"height\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#81D4FA\",\"d\":\"M35,13c-0.4,0-0.8,0-1.2,0.1C32.9,8.5,28.9,5,24,5c-4.1,0-7.6,2.5-9.2,6c-0.3,0-0.5,0-0.8,0 c-4.4,0-8,3.6-8,8s3.6,8,8,8c2.4,0,18.5,0,21,0c3.9,0,7-3.1,7-7C42,16.1,38.9,13,35,13z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#039BE5\",\"d\":\"M28,21c0-2.2-1.8-4-4-4s-4,1.8-4,4c0,0.5,0,6,0,6h8C28,27,28,21.5,28,21z\"}}]})(props);\n};\nexport function FcExpand (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#2196F3\",\"points\":\"43,17.1 39.9,14 24,29.9 8.1,14 5,17.1 24,36\"}}]})(props);\n};\nexport function FcExpired (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#00ACC1\",\"cx\":\"17\",\"cy\":\"17\",\"r\":\"14\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#eee\",\"cx\":\"17\",\"cy\":\"17\",\"r\":\"11\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"8\",\"width\":\"2\",\"height\":\"9\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"18.2\",\"y\":\"16\",\"transform\":\"matrix(-.707 .707 -.707 -.707 46.834 19.399)\",\"width\":\"2.4\",\"height\":\"6.8\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"17\",\"cy\":\"17\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#00ACC1\",\"cx\":\"17\",\"cy\":\"17\",\"r\":\"1\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFC107\",\"d\":\"M11.9,42l14.4-24.1c0.8-1.3,2.7-1.3,3.4,0L44.1,42c0.8,1.3-0.2,3-1.7,3H13.6C12.1,45,11.1,43.3,11.9,42z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#263238\",\"d\":\"M26.4,39.9c0-0.2,0-0.4,0.1-0.6s0.2-0.3,0.3-0.5s0.3-0.2,0.5-0.3s0.4-0.1,0.6-0.1s0.5,0,0.7,0.1 s0.4,0.2,0.5,0.3s0.2,0.3,0.3,0.5s0.1,0.4,0.1,0.6s0,0.4-0.1,0.6s-0.2,0.3-0.3,0.5s-0.3,0.2-0.5,0.3s-0.4,0.1-0.7,0.1 s-0.5,0-0.6-0.1s-0.4-0.2-0.5-0.3s-0.2-0.3-0.3-0.5S26.4,40.1,26.4,39.9z M29.2,36.8h-2.3L26.5,27h3L29.2,36.8z\"}}]})(props);\n};\nexport function FcExport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFCCBC\",\"d\":\"M7,40V8c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v32c0,2.2-1.8,4-4,4H11C8.8,44,7,42.2,7,40z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FF5722\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"42.7,24 32,33 32,15\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"21\",\"width\":\"23\",\"height\":\"6\"}}]}]})(props);\n};\nexport function FcExternal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#B2DFDB\",\"cx\":\"24\",\"cy\":\"31\",\"r\":\"14\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#009688\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"24,3.3 33,14 15,14\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"11\",\"width\":\"6\",\"height\":\"23\"}}]}]})(props);\n};\nexport function FcFactoryBreakdown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#E64A19\",\"points\":\"29,23 29,17 21,21 21,23 17,23 17,27 13,27 13,23 5,23 5,43 33,43 33,23\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"25\",\"y\":\"27\",\"fill\":\"#992B0A\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"35\",\"fill\":\"#992B0A\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"25\",\"y\":\"35\",\"fill\":\"#992B0A\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"17\",\"y\":\"35\",\"fill\":\"#992B0A\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"17\",\"y\":\"27\",\"fill\":\"#992B0A\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#BF360C\",\"points\":\"41.2,5 38,5 38,7 36,7 36,9 33.7,9 32,43 43,43\"}}]})(props);\n};\nexport function FcFactory (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#BF360C\",\"d\":\"M41.2,5h-7.3L32,43h11L41.2,5z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E64A19\",\"d\":\"M33,23h-4v-6l-12,6v-6L5,23v20h28V23z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"27\",\"fill\":\"#FFC107\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"17\",\"y\":\"27\",\"fill\":\"#FFC107\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"25\",\"y\":\"27\",\"fill\":\"#FFC107\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"35\",\"fill\":\"#FFC107\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"17\",\"y\":\"35\",\"fill\":\"#FFC107\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"25\",\"y\":\"35\",\"fill\":\"#FFC107\",\"width\":\"4\",\"height\":\"4\"}}]})(props);\n};\nexport function FcFaq (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#558B2F\",\"d\":\"M15,40h23l6,6V25c0-2.2-1.8-4-4-4H15c-2.2,0-4,1.8-4,4v11C11,38.2,12.8,40,15,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#1B5E20\",\"d\":\"M28.8,32.8h-3.6l-0.7,2.1h-2.2l3.7-10h1.9l3.7,10h-2.2L28.8,32.8z M25.7,31.2h2.5L27,27.4L25.7,31.2z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#8BC34A\",\"d\":\"M33,25H10l-6,6V8c0-2.2,1.8-4,4-4h25c2.2,0,4,1.8,4,4v13C37,23.2,35.2,25,33,25z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#fff\",\"d\":\"M25.4,14.2c0,1-0.2,1.8-0.5,2.5c-0.3,0.7-0.7,1.3-1.3,1.7l1.7,1.3L24,20.9l-2.2-1.7c-0.2,0-0.5,0.1-0.8,0.1 c-0.6,0-1.2-0.1-1.8-0.3c-0.5-0.2-1-0.6-1.4-1c-0.4-0.4-0.7-1-0.9-1.6c-0.2-0.6-0.3-1.3-0.3-2.1v-0.4c0-0.8,0.1-1.5,0.3-2.1 c0.2-0.6,0.5-1.2,0.9-1.6c0.4-0.4,0.8-0.8,1.4-1c0.5-0.2,1.1-0.3,1.8-0.3c0.6,0,1.2,0.1,1.8,0.3c0.5,0.2,1,0.6,1.4,1 c0.4,0.4,0.7,1,0.9,1.6c0.2,0.6,0.3,1.3,0.3,2.1V14.2z M23.2,13.7c0-1.1-0.2-1.9-0.6-2.4c-0.4-0.6-0.9-0.8-1.6-0.8 c-0.7,0-1.3,0.3-1.6,0.8c-0.4,0.6-0.6,1.4-0.6,2.4v0.5c0,0.5,0.1,1,0.2,1.4c0.1,0.4,0.2,0.8,0.4,1c0.2,0.3,0.4,0.5,0.7,0.6 c0.3,0.1,0.6,0.2,0.9,0.2c0.7,0,1.3-0.3,1.6-0.8c0.4-0.6,0.6-1.4,0.6-2.5V13.7z\"}}]})(props);\n};\nexport function FcFeedIn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#2196F3\",\"d\":\"M38,24v12c0,1.1-0.9,2-2,2H12c-1.1,0-2-0.9-2-2V24c0-3.3-2.7-6-6-6h0v4h0c1.1,0,2,0.9,2,2v12 c0,3.3,2.7,6,6,6h24c3.3,0,6-2.7,6-6V24c0-1.1,0.9-2,2-2h0v-4h0C40.7,18,38,20.7,38,24z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"38.6,5.6 29,15.2 29,28 33,28 33,16.8 41.4,8.4\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"6.6,8.4 15,16.8 15,28 19,28 19,15.2 9.4,5.6\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"37,27 31,33 25,27\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"23,27 17,33 11,27\"}}]}]})(props);\n};\nexport function FcFeedback (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#78909C\",\"d\":\"M40,41H8c-2.2,0-4-1.8-4-4l0-20.9c0-1.3,0.6-2.5,1.7-3.3L24,0l18.3,12.8c1.1,0.7,1.7,2,1.7,3.3V37 C44,39.2,42.2,41,40,41z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"12\",\"y\":\"11\",\"fill\":\"#fff\",\"width\":\"24\",\"height\":\"22\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#9C27B0\",\"points\":\"24,13.6 18,21.4 30,21.4\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#CFD8DC\",\"d\":\"M40,41H8c-2.2,0-4-1.8-4-4l0-20l20,13l20-13v20C44,39.2,42.2,41,40,41z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#9C27B0\",\"points\":\"24,28 26,26.7 26,20 22,20 22,26.7\"}}]})(props);\n};\nexport function FcFile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#90CAF9\",\"points\":\"40,45 8,45 8,3 30,3 40,13\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#E1F5FE\",\"points\":\"38.5,14 29,14 29,4.5\"}}]})(props);\n};\nexport function FcFilingCabinet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"12\",\"y\":\"44\",\"fill\":\"#263238\",\"width\":\"4\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"44\",\"fill\":\"#263238\",\"width\":\"4\",\"height\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M8,41V7c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v34c0,2.2-1.8,4-4,4H12C9.8,45,8,43.2,8,41z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B0BEC5\",\"d\":\"M12,17V8c0-0.6,0.4-1,1-1h22c0.6,0,1,0.4,1,1v9H12z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"12\",\"y\":\"19\",\"fill\":\"#B0BEC5\",\"width\":\"24\",\"height\":\"10\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B0BEC5\",\"d\":\"M12,40v-9h24v9c0,0.6-0.4,1-1,1H13C12.4,41,12,40.6,12,40z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"11\",\"fill\":\"#546E7A\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"23\",\"fill\":\"#546E7A\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"35\",\"fill\":\"#546E7A\",\"width\":\"8\",\"height\":\"2\"}}]})(props);\n};\nexport function FcFilledFilter (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#F57C00\",\"points\":\"29,23 19,23 7,9 41,9\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FF9800\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"29,38 19,44 19,23 29,23\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M41.5,9h-35C5.7,9,5,8.3,5,7.5v0C5,6.7,5.7,6,6.5,6h35C42.3,6,43,6.7,43,7.5v0C43,8.3,42.3,9,41.5,9z\"}}]}]})(props);\n};\nexport function FcFilmReel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M43,39V24h-4v15c0,5,4,9,9,9v-4C45.2,44,43,41.8,43,39z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#90A4AE\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"19\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#37474F\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"2\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#253278\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"14\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"34\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"34\",\"cy\":\"24\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"14\",\"cy\":\"24\",\"r\":\"5\"}}]}]})(props);\n};\nexport function FcFilm (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M45,9H3v30h42V9z M22,37v-4h4v4H22z M30,37v-4h4v4H30z M38,37v-4h4v4H38z M14,37v-4h4v4H14z M6,37v-4h4v4H6 z M22,15v-4h4v4H22z M30,15v-4h4v4H30z M38,15v-4h4v4H38z M14,15v-4h4v4H14z M6,15v-4h4v4H6z\"}}]})(props);\n};\nexport function FcFinePrint (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#90CAF9\",\"points\":\"33,42 5,42 5,4 24,4 33,13\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#E1F5FE\",\"points\":\"31.5,14 23,14 23,5.5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"38.3\",\"y\":\"34.8\",\"transform\":\"matrix(.707 -.707 .707 .707 -17.177 40.055)\",\"fill\":\"#616161\",\"width\":\"2.8\",\"height\":\"12\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#616161\",\"cx\":\"28\",\"cy\":\"29\",\"r\":\"11\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#90CAF9\",\"cx\":\"28\",\"cy\":\"29\",\"r\":\"9\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"39.5\",\"y\":\"37.6\",\"transform\":\"matrix(.707 -.707 .707 .707 -17.661 41.223)\",\"fill\":\"#37474F\",\"width\":\"2.8\",\"height\":\"8.7\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1976D2\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M30,31h-9.7c0.4,1.6,1.3,3,2.5,4H30V31z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.3,27H30v-4h-7.3C21.5,24,20.7,25.4,20.3,27z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20.1,20H11v2h7.3C18.8,21.3,19.4,20.6,20.1,20z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17.1,24H11v2h5.4C16.6,25.3,16.8,24.6,17.1,24z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16,29c0-0.3,0-0.7,0.1-1H11v2h5.1C16,29.7,16,29.3,16,29z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.4,32H11v2h6.1C16.8,33.4,16.6,32.7,16.4,32z\"}}]}]})(props);\n};\nexport function FcFlashAuto (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FFC107\",\"points\":\"33,22 23.6,22 30,5 19,5 13,26 21.6,26 17,45\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M40.8,14.5h-4.3L35.6,17H33l4.5-12h2.3l4.5,12h-2.6L40.8,14.5z M37.1,12.5h3L38.6,8L37.1,12.5z\"}}]})(props);\n};\nexport function FcFlashOff (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FFC107\",\"points\":\"33,22 23.6,22 30,5 19,5 13,26 21.6,26 17,45\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"-2.9\",\"transform\":\"matrix(.707 -.707 .707 .707 -9.941 24)\",\"fill\":\"#37474F\",\"width\":\"4\",\"height\":\"53.7\"}}]})(props);\n};\nexport function FcFlashOn (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FFC107\",\"points\":\"33,22 23.6,22 30,5 19,5 13,26 21.6,26 17,45\"}}]})(props);\n};\nexport function FcFlowChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#CFD8DC\",\"points\":\"35,36 39,36 39,22 26,22 26,13 22,13 22,22 9,22 9,36 13,36 13,26 22,26 22,36 26,36 26,26 35,26\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"17\",\"y\":\"6\",\"fill\":\"#3F51B5\",\"width\":\"14\",\"height\":\"10\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"32\",\"fill\":\"#00BCD4\",\"width\":\"10\",\"height\":\"10\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"32\",\"fill\":\"#00BCD4\",\"width\":\"10\",\"height\":\"10\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"32\",\"fill\":\"#00BCD4\",\"width\":\"10\",\"height\":\"10\"}}]})(props);\n};\nexport function FcFolder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFA000\",\"d\":\"M40,12H22l-4-4H8c-2.2,0-4,1.8-4,4v8h40v-4C44,13.8,42.2,12,40,12z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFCA28\",\"d\":\"M40,12H8c-2.2,0-4,1.8-4,4v20c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V16C44,13.8,42.2,12,40,12z\"}}]})(props);\n};\nexport function FcFrame (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#3949AB\",\"d\":\"M40.6,40.1h-1.4c-0.2,0-0.3,0-0.5,0l-3.1-0.4c-2.4-0.3-4.9-0.2-7.3,0.4l-3.6,0.9c-0.5,0.1-1.1,0.1-1.6,0 L19.6,40c-2.4-0.6-4.8-0.7-7.3-0.4l-3.1,0.4c-0.2,0-0.3,0-0.5,0H7.4c-1.9,0-3.4-1.5-3.4-3.4v0c0-0.4,0.1-0.9,0.2-1.3l0.2-0.6 c1-2.5,1.1-5.3,0.4-7.9l-0.6-2c-0.2-0.7-0.2-1.3,0-2l0.3-0.8c0.9-2.7,0.8-5.7-0.2-8.4l-0.1-0.3C4.1,13.1,4,12.7,4,12.3v-1 c0-1.9,1.5-3.4,3.4-3.4l1.4,0c0.2,0,0.3,0,0.5,0l3.1,0.4c2.4,0.3,4.9,0.2,7.3-0.4l3.6-0.9c0.5-0.1,1.1-0.1,1.6,0L28.4,8 c2.4,0.6,4.8,0.7,7.3,0.4l3.1-0.4c0.2,0,0.3,0,0.5,0l1.4,0c1.9,0,3.4,1.5,3.4,3.4v1c0,0.4-0.1,0.9-0.2,1.3l-0.1,0.3 c-1.1,2.7-1.2,5.6-0.2,8.4l0.3,0.8c0.2,0.6,0.2,1.3,0,2l-0.6,2c-0.7,2.6-0.6,5.4,0.4,7.9l0.2,0.6c0.2,0.4,0.2,0.8,0.2,1.3v0 C44,38.6,42.5,40.1,40.6,40.1z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BBDEFB\",\"d\":\"M38,36H10c-0.6,0-1-0.4-1-1V13c0-0.6,0.4-1,1-1h28c0.6,0,1,0.4,1,1v22C39,35.6,38.6,36,38,36z\"}}]})(props);\n};\nexport function FcFullBattery (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#8BC34A\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M34,44H14c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v34C36,43.1,35.1,44,34,44z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M28,13h-8c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1v7C29,12.6,28.6,13,28,13z\"}}]}]})(props);\n};\nexport function FcFullTrash (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FF8A65\",\"points\":\"24,21.3 12.7,10 26,1.7 38.3,10\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FFAB91\",\"points\":\"24,21.3 12.7,10 17,4.7 38.3,10\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B39DDB\",\"d\":\"M30.6,44H17.4c-2,0-3.7-1.4-4-3.4L9,11h30l-4.5,29.6C34.2,42.6,32.5,44,30.6,44z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#7E57C2\",\"d\":\"M38,13H10c-1.1,0-2-0.9-2-2v0c0-1.1,0.9-2,2-2h28c1.1,0,2,0.9,2,2v0C40,12.1,39.1,13,38,13z\"}}]})(props);\n};\nexport function FcGallery (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E65100\",\"d\":\"M41,42H13c-2.2,0-4-1.8-4-4V18c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v20C45,40.2,43.2,42,41,42z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#F57C00\",\"d\":\"M35,36H7c-2.2,0-4-1.8-4-4V12c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v20C39,34.2,37.2,36,35,36z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFF9C4\",\"cx\":\"30\",\"cy\":\"16\",\"r\":\"3\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#942A09\",\"points\":\"17,17.9 8,31 26,31\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#BF360C\",\"points\":\"28,23.5 22,31 34,31\"}}]})(props);\n};\nexport function FcGenealogy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#CFD8DC\",\"points\":\"40,9 40,7 31,7 31,12 24,12 15,12 15,23 8,23 8,25 15,25 15,36 24,36 31,36 31,41 40,41 40,39 33,39 33,31 40,31 40,29 31,29 31,34 24,34 17,34 17,14 24,14 31,14 31,19 40,19 40,17 33,17 33,9\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"20\",\"fill\":\"#00BCD4\",\"width\":\"8\",\"height\":\"8\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"36\",\"y\":\"14\",\"width\":\"8\",\"height\":\"8\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"36\",\"y\":\"4\",\"width\":\"8\",\"height\":\"8\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"9\",\"width\":\"8\",\"height\":\"8\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"31\",\"width\":\"8\",\"height\":\"8\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"36\",\"y\":\"36\",\"width\":\"8\",\"height\":\"8\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"36\",\"y\":\"26\",\"width\":\"8\",\"height\":\"8\"}}]}]})(props);\n};\nexport function FcGenericSortingAsc (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"6\",\"fill\":\"#2196F3\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"14\",\"fill\":\"#2196F3\",\"width\":\"12\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"22\",\"fill\":\"#2196F3\",\"width\":\"20\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"30\",\"fill\":\"#2196F3\",\"width\":\"28\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"38\",\"fill\":\"#2196F3\",\"width\":\"36\",\"height\":\"4\"}}]})(props);\n};\nexport function FcGenericSortingDesc (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"38\",\"fill\":\"#2196F3\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"30\",\"fill\":\"#2196F3\",\"width\":\"12\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"22\",\"fill\":\"#2196F3\",\"width\":\"20\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"14\",\"fill\":\"#2196F3\",\"width\":\"28\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"6\",\"fill\":\"#2196F3\",\"width\":\"36\",\"height\":\"4\"}}]})(props);\n};\nexport function FcGlobe (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#7CB342\",\"d\":\"M24,4C13,4,4,13,4,24s9,20,20,20s20-9,20-20S35,4,24,4z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#0277BD\",\"d\":\"M45,24c0,11.7-9.5,21-21,21S3,35.7,3,24S12.3,3,24,3S45,12.3,45,24z M23.8,33.7c0-0.4-0.2-0.6-0.6-0.8 c-1.3-0.4-2.5-0.4-3.6-1.5c-0.2-0.4-0.2-0.8-0.4-1.3c-0.4-0.4-1.5-0.6-2.1-0.8c-0.8,0-1.7,0-2.7,0c-0.4,0-1.1,0-1.5,0 c-0.6-0.2-1.1-1.1-1.5-1.7c0-0.2,0-0.6-0.4-0.6c-0.4-0.2-0.8,0.2-1.3,0c-0.2-0.2-0.2-0.4-0.2-0.6c0-0.6,0.4-1.3,0.8-1.7 c0.6-0.4,1.3,0.2,1.9,0.2c0.2,0,0.2,0,0.4,0.2c0.6,0.2,0.8,1,0.8,1.7c0,0.2,0,0.4,0,0.4c0,0.2,0.2,0.2,0.4,0.2 c0.2-1.1,0.2-2.1,0.4-3.2c0-1.3,1.3-2.5,2.3-2.9c0.4-0.2,0.6,0.2,1.1,0c1.3-0.4,4.4-1.7,3.8-3.4c-0.4-1.5-1.7-2.9-3.4-2.7 c-0.4,0.2-0.6,0.4-1,0.6c-0.6,0.4-1.9,1.7-2.5,1.7c-1.1-0.2-1.1-1.7-0.8-2.3c0.2-0.8,2.1-3.6,3.4-3.1c0.2,0.2,0.6,0.6,0.8,0.8 c0.4,0.2,1.1,0.2,1.7,0.2c0.2,0,0.4,0,0.6-0.2c0.2-0.2,0.2-0.2,0.2-0.4c0-0.6-0.6-1.3-1-1.7c-0.4-0.4-1.1-0.8-1.7-1.1 c-2.1-0.6-5.5,0.2-7.1,1.7s-2.9,4-3.8,6.1c-0.4,1.3-0.8,2.9-1,4.4c-0.2,1-0.4,1.9,0.2,2.9c0.6,1.3,1.9,2.5,3.2,3.4 c0.8,0.6,2.5,0.6,3.4,1.7c0.6,0.8,0.4,1.9,0.4,2.9c0,1.3,0.8,2.3,1.3,3.4c0.2,0.6,0.4,1.5,0.6,2.1c0,0.2,0.2,1.5,0.2,1.7 c1.3,0.6,2.3,1.3,3.8,1.7c0.2,0,1-1.3,1-1.5c0.6-0.6,1.1-1.5,1.7-1.9c0.4-0.2,0.8-0.4,1.3-0.8c0.4-0.4,0.6-1.3,0.8-1.9 C23.8,35.1,24,34.3,23.8,33.7z M24.2,14.3c0.2,0,0.4-0.2,0.8-0.4c0.6-0.4,1.3-1.1,1.9-1.5c0.6-0.4,1.3-1.1,1.7-1.5 c0.6-0.4,1.1-1.3,1.3-1.9c0.2-0.4,0.8-1.3,0.6-1.9c-0.2-0.4-1.3-0.6-1.7-0.8c-1.7-0.4-3.1-0.6-4.8-0.6c-0.6,0-1.5,0.2-1.7,0.8 c-0.2,1.1,0.6,0.8,1.5,1.1c0,0,0.2,1.7,0.2,1.9c0.2,1-0.4,1.7-0.4,2.7c0,0.6,0,1.7,0.4,2.1L24.2,14.3z M41.8,29 c0.2-0.4,0.2-1.1,0.4-1.5c0.2-1,0.2-2.1,0.2-3.1c0-2.1-0.2-4.2-0.8-6.1c-0.4-0.6-0.6-1.3-0.8-1.9c-0.4-1.1-1-2.1-1.9-2.9 c-0.8-1.1-1.9-4-3.8-3.1c-0.6,0.2-1,1-1.5,1.5c-0.4,0.6-0.8,1.3-1.3,1.9c-0.2,0.2-0.4,0.6-0.2,0.8c0,0.2,0.2,0.2,0.4,0.2 c0.4,0.2,0.6,0.2,1,0.4c0.2,0,0.4,0.2,0.2,0.4c0,0,0,0.2-0.2,0.2c-1,1.1-2.1,1.9-3.1,2.9c-0.2,0.2-0.4,0.6-0.4,0.8 c0,0.2,0.2,0.2,0.2,0.4c0,0.2-0.2,0.2-0.4,0.4c-0.4,0.2-0.8,0.4-1.1,0.6c-0.2,0.4,0,1.1-0.2,1.5c-0.2,1.1-0.8,1.9-1.3,2.9 c-0.4,0.6-0.6,1.3-1,1.9c0,0.8-0.2,1.5,0.2,2.1c1,1.5,2.9,0.6,4.4,1.3c0.4,0.2,0.8,0.2,1.1,0.6c0.6,0.6,0.6,1.7,0.8,2.3 c0.2,0.8,0.4,1.7,0.8,2.5c0.2,1,0.6,2.1,0.8,2.9c1.9-1.5,3.6-3.1,4.8-5.2C40.6,32.4,41.2,30.7,41.8,29z\"}}]})(props);\n};\nexport function FcGoodDecision (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFCC80\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#4CAF50\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"16\",\"width\":\"4\",\"height\":\"18\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"23\",\"width\":\"18\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcGoogle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFC107\",\"d\":\"M43.611,20.083H42V20H24v8h11.303c-1.649,4.657-6.08,8-11.303,8c-6.627,0-12-5.373-12-12\\r\\n\\tc0-6.627,5.373-12,12-12c3.059,0,5.842,1.154,7.961,3.039l5.657-5.657C34.046,6.053,29.268,4,24,4C12.955,4,4,12.955,4,24\\r\\n\\tc0,11.045,8.955,20,20,20c11.045,0,20-8.955,20-20C44,22.659,43.862,21.35,43.611,20.083z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF3D00\",\"d\":\"M6.306,14.691l6.571,4.819C14.655,15.108,18.961,12,24,12c3.059,0,5.842,1.154,7.961,3.039l5.657-5.657\\r\\n\\tC34.046,6.053,29.268,4,24,4C16.318,4,9.656,8.337,6.306,14.691z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#4CAF50\",\"d\":\"M24,44c5.166,0,9.86-1.977,13.409-5.192l-6.19-5.238C29.211,35.091,26.715,36,24,36\\r\\n\\tc-5.202,0-9.619-3.317-11.283-7.946l-6.522,5.025C9.505,39.556,16.227,44,24,44z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#1976D2\",\"d\":\"M43.611,20.083H42V20H24v8h11.303c-0.792,2.237-2.231,4.166-4.087,5.571\\r\\n\\tc0.001-0.001,0.002-0.001,0.003-0.002l6.19,5.238C36.971,39.205,44,34,44,24C44,22.659,43.862,21.35,43.611,20.083z\"}}]})(props);\n};\nexport function FcGraduationCap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"20\",\"width\":\"30\",\"height\":\"13\"}},{\"tag\":\"ellipse\",\"attr\":{\"cx\":\"24\",\"cy\":\"33\",\"rx\":\"15\",\"ry\":\"6\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#78909C\",\"d\":\"M23.1,8.2L0.6,18.1c-0.8,0.4-0.8,1.5,0,1.9l22.5,9.9c0.6,0.2,1.2,0.2,1.8,0l22.5-9.9c0.8-0.4,0.8-1.5,0-1.9 L24.9,8.2C24.3,7.9,23.7,7.9,23.1,8.2z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M43.2,20.4l-20-3.4c-0.5-0.1-1.1,0.3-1.2,0.8c-0.1,0.5,0.3,1.1,0.8,1.2L42,22.2V37c0,0.6,0.4,1,1,1 s1-0.4,1-1V21.4C44,20.9,43.6,20.5,43.2,20.4z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"43\",\"cy\":\"37\",\"r\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M46,40c0,1.7-3,6-3,6s-3-4.3-3-6s1.3-3,3-3S46,38.3,46,40z\"}}]}]})(props);\n};\nexport function FcGrid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M7,7v34h34V7H7z M39,15h-6V9h6V15z M25,15V9h6v6H25z M31,17v6h-6v-6H31z M23,15h-6V9h6V15z M23,17v6h-6v-6 H23z M15,23H9v-6h6V23z M15,25v6H9v-6H15z M17,25h6v6h-6V25z M23,33v6h-6v-6H23z M25,33h6v6h-6V33z M25,31v-6h6v6H25z M33,25h6v6h-6 V25z M33,23v-6h6v6H33z M15,9v6H9V9H15z M9,33h6v6H9V33z M33,39v-6h6v6H33z\"}}]})(props);\n};\nexport function FcHeadset (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#0097A7\",\"d\":\"M24,5C14.1,5,6,13.1,6,23v15h4V23c0-7.7,6.3-14,14-14s14,6.3,14,14v15h4V23C42,13.1,33.9,5,24,5z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M38,43h-4V31h4c2.2,0,4,1.8,4,4v4C42,41.2,40.2,43,38,43z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M10,43h4V31h-4c-2.2,0-4,1.8-4,4v4C6,41.2,7.8,43,10,43z\"}}]})(props);\n};\nexport function FcHeatMap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#CFD8DC\",\"points\":\"9,39 9,6 7,6 7,41 42,41 42,39\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#00BCD4\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"14\",\"cy\":\"11\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"32\",\"cy\":\"11\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"39\",\"cy\":\"11\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"23\",\"cy\":\"11\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"14\",\"cy\":\"33\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"30\",\"cy\":\"33\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"22\",\"cy\":\"33\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"33\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"14\",\"cy\":\"22\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"39\",\"cy\":\"22\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"32\",\"cy\":\"22\",\"r\":\"3\"}}]}]})(props);\n};\nexport function FcHighBattery (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#CFD8DC\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M34,44H14c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v34C36,43.1,35.1,44,34,44z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M28,13h-8c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1v7C29,12.6,28.6,13,28,13z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#8BC34A\",\"d\":\"M34,44H14c-1.1,0-2-0.9-2-2V13h24v29C36,43.1,35.1,44,34,44z\"}}]})(props);\n};\nexport function FcHighPriority (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M21.2,44.8l-18-18c-1.6-1.6-1.6-4.1,0-5.7l18-18c1.6-1.6,4.1-1.6,5.7,0l18,18c1.6,1.6,1.6,4.1,0,5.7l-18,18 C25.3,46.4,22.7,46.4,21.2,44.8z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#fff\",\"d\":\"M21.6,32.7c0-0.3,0.1-0.6,0.2-0.9c0.1-0.3,0.3-0.5,0.5-0.7c0.2-0.2,0.5-0.4,0.8-0.5s0.6-0.2,1-0.2 s0.7,0.1,1,0.2c0.3,0.1,0.6,0.3,0.8,0.5c0.2,0.2,0.4,0.4,0.5,0.7c0.1,0.3,0.2,0.6,0.2,0.9s-0.1,0.6-0.2,0.9s-0.3,0.5-0.5,0.7 c-0.2,0.2-0.5,0.4-0.8,0.5c-0.3,0.1-0.6,0.2-1,0.2s-0.7-0.1-1-0.2s-0.5-0.3-0.8-0.5c-0.2-0.2-0.4-0.4-0.5-0.7S21.6,33.1,21.6,32.7z M25.8,28.1h-3.6L21.7,13h4.6L25.8,28.1z\"}}]})(props);\n};\nexport function FcHome (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#E8EAF6\",\"points\":\"42,39 6,39 6,23 24,6 42,23\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#C5CAE9\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"39,21 34,16 34,9 39,9\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"39\",\"width\":\"36\",\"height\":\"5\"}}]},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#B71C1C\",\"points\":\"24,4.3 4,22.9 6,25.1 24,8.4 42,25.1 44,22.9\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"18\",\"y\":\"28\",\"fill\":\"#D84315\",\"width\":\"12\",\"height\":\"16\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"17\",\"fill\":\"#01579B\",\"width\":\"6\",\"height\":\"6\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF8A65\",\"d\":\"M27.5,35.5c-0.3,0-0.5,0.2-0.5,0.5v2c0,0.3,0.2,0.5,0.5,0.5S28,38.3,28,38v-2C28,35.7,27.8,35.5,27.5,35.5z\"}}]})(props);\n};\nexport function FcIcons8Cup (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#4CAF50\",\"d\":\"M40,14H8l3.8,28.3c0.1,1,1,1.7,2,1.7h20.5c1,0,1.8-0.7,2-1.7L40,14z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#81C784\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M42,14H6v-3c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4V14z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M37.2,10H10.8l1.7-4.7c0.3-0.8,1-1.3,1.9-1.3h19.2c0.8,0,1.6,0.5,1.9,1.3L37.2,10z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E8F5E9\",\"d\":\"M28,28.5c1.2-1.1,2-2.7,2-4.5c0-3.3-2.7-6-6-6c-3.3,0-6,2.7-6,6c0,1.8,0.8,3.4,2,4.5c-1.2,1.1-2,2.7-2,4.5 c0,3.3,2.7,6,6,6c3.3,0,6-2.7,6-6C30,31.2,29.2,29.6,28,28.5z M24,36c-1.7,0-3-1.3-3-3c0-1.7,1.3-3,3-3c1.7,0,3,1.3,3,3 C27,34.7,25.7,36,24,36z M24,27c-1.7,0-3-1.3-3-3c0-1.7,1.3-3,3-3c1.7,0,3,1.3,3,3C27,25.7,25.7,27,24,27z\"}}]})(props);\n};\nexport function FcIdea (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFF59D\",\"cx\":\"24\",\"cy\":\"22\",\"r\":\"20\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FBC02D\",\"d\":\"M37,22c0-7.7-6.6-13.8-14.5-12.9c-6,0.7-10.8,5.5-11.4,11.5c-0.5,4.6,1.4,8.7,4.6,11.3 c1.4,1.2,2.3,2.9,2.3,4.8V37h12v-0.1c0-1.8,0.8-3.6,2.2-4.8C35.1,29.7,37,26.1,37,22z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFF59D\",\"d\":\"M30.6,20.2l-3-2c-0.3-0.2-0.8-0.2-1.1,0L24,19.8l-2.4-1.6c-0.3-0.2-0.8-0.2-1.1,0l-3,2 c-0.2,0.2-0.4,0.4-0.4,0.7s0,0.6,0.2,0.8l3.8,4.7V37h2V26c0-0.2-0.1-0.4-0.2-0.6l-3.3-4.1l1.5-1l2.4,1.6c0.3,0.2,0.8,0.2,1.1,0 l2.4-1.6l1.5,1l-3.3,4.1C25.1,25.6,25,25.8,25,26v11h2V26.4l3.8-4.7c0.2-0.2,0.3-0.5,0.2-0.8S30.8,20.3,30.6,20.2z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#5C6BC0\",\"cx\":\"24\",\"cy\":\"44\",\"r\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#9FA8DA\",\"d\":\"M26,45h-4c-2.2,0-4-1.8-4-4v-5h12v5C30,43.2,28.2,45,26,45z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#5C6BC0\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M30,41l-11.6,1.6c0.3,0.7,0.9,1.4,1.6,1.8l9.4-1.3C29.8,42.5,30,41.8,30,41z\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"18,38.7 18,40.7 30,39 30,37\"}}]}]})(props);\n};\nexport function FcImageFile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#90CAF9\",\"points\":\"40,45 8,45 8,3 30,3 40,13\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#E1F5FE\",\"points\":\"38.5,14 29,14 29,4.5\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#1565C0\",\"points\":\"21,23 14,33 28,33\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#1976D2\",\"points\":\"28,26.4 23,33 33,33\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#1976D2\",\"cx\":\"31.5\",\"cy\":\"24.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function FcImport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#F8BBD0\",\"d\":\"M7,40V8c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v32c0,2.2-1.8,4-4,4H11C8.8,44,7,42.2,7,40z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#E91E63\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"13.3,24 24,15 24,33\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"21\",\"width\":\"23\",\"height\":\"6\"}}]}]})(props);\n};\nexport function FcInTransit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFC107\",\"d\":\"M44,36H30V16c0-1.1,0.9-2,2-2h8c0.6,0,1.2,0.3,1.6,0.8l6,7.7c0.3,0.4,0.4,0.8,0.4,1.2V32 C48,34.2,46.2,36,44,36z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#9575CD\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M8,36h22V13c0-2.2-1.8-4-4-4H4v23C4,34.2,5.8,36,8,36z\"}},{\"tag\":\"rect\",\"attr\":{\"y\":\"9\",\"width\":\"10\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"y\":\"14\",\"width\":\"10\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"y\":\"19\",\"width\":\"10\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"y\":\"24\",\"width\":\"10\",\"height\":\"2\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#7E57C2\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"11\",\"width\":\"16\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"16\",\"width\":\"12\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"21\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"26\",\"width\":\"4\",\"height\":\"2\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"39\",\"cy\":\"36\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"36\",\"r\":\"5\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#78909C\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"39\",\"cy\":\"36\",\"r\":\"2.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"36\",\"r\":\"2.5\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M44,26h-3.6c-0.3,0-0.5-0.1-0.7-0.3l-1.4-1.4c-0.2-0.2-0.4-0.3-0.7-0.3H34c-0.6,0-1-0.4-1-1v-6 c0-0.6,0.4-1,1-1h5.5c0.3,0,0.6,0.1,0.8,0.4l4.5,5.4c0.1,0.2,0.2,0.4,0.2,0.6V25C45,25.6,44.6,26,44,26z\"}}]})(props);\n};\nexport function FcInfo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#2196F3\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"21\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"22\",\"fill\":\"#fff\",\"width\":\"4\",\"height\":\"11\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#fff\",\"cx\":\"24\",\"cy\":\"16.5\",\"r\":\"2.5\"}}]})(props);\n};\nexport function FcInspection (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M36,4H26c0,1.1-0.9,2-2,2s-2-0.9-2-2H12C9.8,4,8,5.8,8,8v32c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V8 C40,5.8,38.2,4,36,4z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#fff\",\"d\":\"M36,41H12c-0.6,0-1-0.4-1-1V8c0-0.6,0.4-1,1-1h24c0.6,0,1,0.4,1,1v32C37,40.6,36.6,41,36,41z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#90A4AE\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M26,4c0,1.1-0.9,2-2,2s-2-0.9-2-2h-7v4c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V4H26z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,0c-2.2,0-4,1.8-4,4s1.8,4,4,4s4-1.8,4-4S26.2,0,24,0z M24,6c-1.1,0-2-0.9-2-2s0.9-2,2-2s2,0.9,2,2 S25.1,6,24,6z\"}}]},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#4CAF50\",\"points\":\"30.6,18.6 21.6,27.6 17.4,23.3 14.9,25.8 21.7,32.5 33.1,21.1\"}}]})(props);\n};\nexport function FcIntegratedWebcam (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M38,42H10c-2.2,0-4-1.8-4-4V10c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v28C42,40.2,40.2,42,38,42z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#455A64\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"12\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#42A5F5\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"9\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M28.8,21c-1.2-1.4-3-2.2-4.8-2.2s-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C29.2,22.4,29.3,21.5,28.8,21z\"}}]})(props);\n};\nexport function FcInternal (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#B3E5FC\",\"cx\":\"24\",\"cy\":\"30\",\"r\":\"15\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1565C0\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"24,38.7 15,28 33,28\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"5\",\"width\":\"6\",\"height\":\"26\"}}]}]})(props);\n};\nexport function FcInvite (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#78909C\",\"d\":\"M40,41H8c-2.2,0-4-1.8-4-4l0-20.9c0-1.3,0.6-2.5,1.7-3.3L24,0l18.3,12.8c1.1,0.7,1.7,2,1.7,3.3V37 C44,39.2,42.2,41,40,41z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"12\",\"y\":\"11\",\"fill\":\"#fff\",\"width\":\"24\",\"height\":\"22\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#CFD8DC\",\"d\":\"M40,41H8c-2.2,0-4-1.8-4-4l0-20l20,13l20-13v20C44,39.2,42.2,41,40,41z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#4CAF50\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"14\",\"width\":\"4\",\"height\":\"12\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"18\",\"y\":\"18\",\"width\":\"12\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcIpad (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E38939\",\"d\":\"M8,41V7c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v34c0,2.2-1.8,4-4,4H12C9.8,45,8,43.2,8,41z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFF3E0\",\"d\":\"M36,6H12c-0.6,0-1,0.4-1,1v31c0,0.6,0.4,1,1,1h24c0.6,0,1-0.4,1-1V7C37,6.4,36.6,6,36,6z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#A6642A\",\"cx\":\"24\",\"cy\":\"42\",\"r\":\"1.5\"}}]})(props);\n};\nexport function FcIphone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E38939\",\"d\":\"M12,40V8c0-2.2,1.8-4,4-4h16c2.2,0,4,1.8,4,4v32c0,2.2-1.8,4-4,4H16C13.8,44,12,42.2,12,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFF3E0\",\"d\":\"M32,7H16c-0.6,0-1,0.4-1,1v29c0,0.6,0.4,1,1,1h16c0.6,0,1-0.4,1-1V8C33,7.4,32.6,7,32,7z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#A6642A\",\"cx\":\"24\",\"cy\":\"41\",\"r\":\"1.5\"}}]})(props);\n};\nexport function FcKey (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFA000\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"30,41 26,45 22,45 18,41 18,21 30,21 30,29 28,31 30,33 30,35 28,37 30,39\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,7.8C37.5,6,36,4.7,34.3,4.2C31.9,3.7,28.2,3,24,3s-7.9,0.7-10.3,1.2C12,4.7,10.5,6,10,7.8 c-0.5,1.7-1,4.1-1,6.7c0,2.6,0.5,5,1,6.7c0.5,1.8,1.9,3.1,3.7,3.5C16.1,25.3,19.8,26,24,26s7.9-0.7,10.3-1.2 c1.8-0.4,3.2-1.8,3.7-3.5c0.5-1.7,1-4.1,1-6.7C39,11.9,38.5,9.5,38,7.8z M29,13H19c-1.1,0-2-0.9-2-2V9c0-0.6,3.1-1,7-1s7,0.4,7,1v2 C31,12.1,30.1,13,29,13z\"}}]},{\"tag\":\"rect\",\"attr\":{\"x\":\"23\",\"y\":\"26\",\"fill\":\"#D68600\",\"width\":\"2\",\"height\":\"19\"}}]})(props);\n};\nexport function FcKindle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M8,41V7c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v34c0,2.2-1.8,4-4,4H12C9.8,45,8,43.2,8,41z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#eee\",\"d\":\"M35,6H13c-0.6,0-1,0.4-1,1v29c0,0.6,0.4,1,1,1h22c0.6,0,1-0.4,1-1V7C36,6.4,35.6,6,35,6z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"40\",\"fill\":\"#546E7A\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#A1A1A1\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"11\",\"width\":\"16\",\"height\":\"3\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"18\",\"width\":\"16\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"22\",\"width\":\"12\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"26\",\"width\":\"16\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"30\",\"width\":\"12\",\"height\":\"2\"}}]}]})(props);\n};\nexport function FcLandscape (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FF9800\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"36.1\",\"y\":\"8.1\",\"transform\":\"matrix(.707 .707 -.707 .707 21.201 -25.184)\",\"width\":\"9.9\",\"height\":\"9.9\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"36\",\"y\":\"8\",\"width\":\"10\",\"height\":\"10\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFEB3B\",\"cx\":\"41\",\"cy\":\"13\",\"r\":\"3\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#2E7D32\",\"points\":\"16.5,18 0,42 33,42\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#4CAF50\",\"points\":\"33.6,24 19.2,42 48,42\"}}]})(props);\n};\nexport function FcLeave (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFCDD2\",\"d\":\"M5,38V14h38v24c0,2.2-1.8,4-4,4H9C6.8,42,5,40.2,5,38z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M43,10v6H5v-6c0-2.2,1.8-4,4-4h30C41.2,6,43,7.8,43,10z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#B71C1C\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"33\",\"cy\":\"10\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"10\",\"r\":\"3\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#BDBDBD\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M33,3c-1.1,0-2,0.9-2,2v5c0,1.1,0.9,2,2,2s2-0.9,2-2V5C35,3.9,34.1,3,33,3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15,3c-1.1,0-2,0.9-2,2v5c0,1.1,0.9,2,2,2s2-0.9,2-2V5C17,3.9,16.1,3,15,3z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M22.2,35.3c0-0.2,0-0.5,0.1-0.7c0.1-0.2,0.2-0.4,0.4-0.5s0.3-0.3,0.5-0.3c0.2-0.1,0.5-0.1,0.7-0.1 s0.5,0,0.7,0.1c0.2,0.1,0.4,0.2,0.6,0.3s0.3,0.3,0.4,0.5c0.1,0.2,0.1,0.4,0.1,0.7c0,0.2,0,0.5-0.1,0.7c-0.1,0.2-0.2,0.4-0.4,0.5 c-0.2,0.1-0.3,0.3-0.6,0.3S24.3,37,24,37s-0.5,0-0.7-0.1c-0.2-0.1-0.4-0.2-0.5-0.3c-0.2-0.1-0.3-0.3-0.4-0.5 C22.3,35.8,22.2,35.6,22.2,35.3z M25.3,31h-2.6l-0.4-11h3.3L25.3,31z\"}}]})(props);\n};\nexport function FcLeftDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"7,41 7,23 25,41\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22.6\",\"y\":\"5\",\"transform\":\"matrix(.707 .707 -.707 .707 22.912 -12.567)\",\"fill\":\"#3F51B5\",\"width\":\"8\",\"height\":\"32.7\"}}]})(props);\n};\nexport function FcLeftDown2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"19,44 30.7,30 7.3,30\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M27,6h13v8H27c-2.2,0-4,1.8-4,4v17h-8V18C15,11.4,20.4,6,27,6z\"}}]})(props);\n};\nexport function FcLeftUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"7,7 25,7 7,25\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22.6\",\"y\":\"10.3\",\"transform\":\"matrix(-.707 .707 -.707 -.707 64.28 26.626)\",\"fill\":\"#3F51B5\",\"width\":\"8\",\"height\":\"32.7\"}}]})(props);\n};\nexport function FcLeftUp2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"19,4 30.7,18 7.3,18\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M27,42h13v-8H27c-2.2,0-4-1.8-4-4V13h-8v17C15,36.6,20.4,42,27,42z\"}}]})(props);\n};\nexport function FcLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"4,24 18,12.3 18,35.7\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"20\",\"width\":\"27\",\"height\":\"8\"}}]}]})(props);\n};\nexport function FcLibrary (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FF9800\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"1\",\"y\":\"38\",\"width\":\"46\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"25\",\"y\":\"18\",\"width\":\"4\",\"height\":\"16\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"18\",\"width\":\"4\",\"height\":\"16\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"37\",\"y\":\"18\",\"width\":\"4\",\"height\":\"16\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"18\",\"width\":\"4\",\"height\":\"16\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"18\",\"width\":\"4\",\"height\":\"16\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"7\",\"y\":\"18\",\"width\":\"4\",\"height\":\"16\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"43,16 5,16 5,13 24,4 43,13\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"5\",\"y\":\"34\",\"width\":\"38\",\"height\":\"2\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#EF6C00\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"25\",\"y\":\"16\",\"width\":\"4\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"16\",\"width\":\"4\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"37\",\"y\":\"16\",\"width\":\"4\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"16\",\"width\":\"4\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"16\",\"width\":\"4\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"7\",\"y\":\"16\",\"width\":\"4\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"36\",\"width\":\"42\",\"height\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"11\",\"r\":\"2\"}}]}]})(props);\n};\nexport function FcLightAtTheEndOfTunnel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M6,10v28c0,2.2,1.8,4,4,4h28c2.2,0,4-1.8,4-4V10c0-2.2-1.8-4-4-4H10C7.8,6,6,7.8,6,10z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#CCF2F6\",\"d\":\"M27.9,28.9h-5.8l-8.4,7.2l6-7.2v-2.4l-3,0.8l3-1.9v-1.5c0-0.8,0.1-1.7,0.6-2.4l-7.5-8.3l8.7,7.2 c0.7-0.7,1.5-1.1,2.5-1.2l0.6-7.3l1.1,7.3c0.3,0,0.6,0.1,0.8,0.1l1.2-1.2l-0.3,1.7c0.3,0.1,0.4,0.3,0.7,0.6l4.4-2.8l-3.6,3.9 c0.3,0.4,0.6,1,0.7,1.7l2.2,0.1l-2.2,0.8c0,0.3,0,1.5,0,1.5l2.6,1.4l-2.6-0.3c0,0,0,1.8,0,2.2l6.2,7.1L27.9,28.9z\"}}]})(props);\n};\nexport function FcLikePlaceholder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFCDD2\",\"d\":\"M34,9c-4.2,0-7.9,2.1-10,5.4C21.9,11.1,18.2,9,14,9C7.4,9,2,14.4,2,21c0,11.9,22,24,22,24s22-12,22-24 C46,14.4,40.6,9,34,9z\"}}]})(props);\n};\nexport function FcLike (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M34,9c-4.2,0-7.9,2.1-10,5.4C21.9,11.1,18.2,9,14,9C7.4,9,2,14.4,2,21c0,11.9,22,24,22,24s22-12,22-24 C46,14.4,40.6,9,34,9z\"}}]})(props);\n};\nexport function FcLineChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"38\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"40\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"33\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"32\",\"cy\":\"35\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"40\",\"cy\":\"31\",\"r\":\"3\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"39.1,29.2 31.8,32.9 23.5,30.8 15.5,37.8 8.5,36.1 7.5,39.9 16.5,42.2 24.5,35.2 32.2,37.1 40.9,32.8\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#00BCD4\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"8\",\"cy\":\"20\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"22\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"15\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"32\",\"cy\":\"20\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"40\",\"cy\":\"8\",\"r\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38.3,6.9c-2.1,3.2-5.3,8-6.9,10.4c-1.2-0.7-3.1-2-6.4-4l-1.3-0.8l-8.3,7.3l-7-1.7l-1,3.9l9,2.3l7.7-6.7 c2.6,1.6,5.8,3.6,6.5,4.1l0.5,0.5l0.9-0.1c1.1-0.1,1.1-0.1,9.5-12.9L38.3,6.9z\"}}]}]})(props);\n};\nexport function FcLink (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#1976D2\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M38,13h-3c-5.5,0-10,4.5-10,10s4.5,10,10,10h3c5.5,0,10-4.5,10-10S43.5,13,38,13z M38,29h-3 c-3.3,0-6-2.7-6-6s2.7-6,6-6h3c3.3,0,6,2.7,6,6S41.3,29,38,29z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M13,13h-3C4.5,13,0,17.5,0,23s4.5,10,10,10h3c5.5,0,10-4.5,10-10S18.5,13,13,13z M13,29h-3 c-3.3,0-6-2.7-6-6s2.7-6,6-6h3c3.3,0,6,2.7,6,6S16.3,29,13,29z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#42A5F5\",\"d\":\"M33,21H15c-1.1,0-2,0.9-2,2s0.9,2,2,2h18c1.1,0,2-0.9,2-2S34.1,21,33,21z\"}}]})(props);\n};\nexport function FcLinux (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 2 48 48\",\"enableBackground\":\"new 0 2 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#ECEFF1\",\"points\":\"20.1,18.2 20.2,20.5 18.6,23.5 16.1,28.4 15.6,32.5 17.4,38.3 21.5,40.6 27.7,40.6 33.5,36.2 \\r\\n\\t36.1,29.3 30.1,22 28.4,17.9 \"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#263238\",\"d\":\"M34.3,23.9c-1.6-2.3-2.9-3.7-3.6-6.6c-0.7-2.9,0.2-2.1-0.4-4.6c-0.3-1.3-0.8-2.2-1.3-2.9\\r\\n\\tc-0.6-0.7-1.3-1.1-1.7-1.2c-0.9-0.5-3-1.3-5.6,0.1c-2.7,1.4-2.4,4.4-1.9,10.5c0,0.4-0.1,0.9-0.3,1.3c-0.4,0.9-1.1,1.7-1.7,2.4\\r\\n\\tc-0.7,1-1.4,2-1.9,3.1c-1.2,2.3-2.3,5.2-2,6.3c0.5-0.1,6.8,9.5,6.8,9.7c0.4-0.1,2.1-0.1,3.6-0.1c2.1-0.1,3.3-0.2,5,0.2\\r\\n\\tc0-0.3-0.1-0.6-0.1-0.9c0-0.6,0.1-1.1,0.2-1.8c0.1-0.5,0.2-1,0.3-1.6c-1,0.9-2.8,1.9-4.5,2.2c-1.5,0.3-4-0.2-5.2-1.7\\r\\n\\tc0.1,0,0.3,0,0.4-0.1c0.3-0.1,0.6-0.2,0.7-0.4c0.3-0.5,0.1-1-0.1-1.3c-0.2-0.3-1.7-1.4-2.4-2c-0.7-0.6-1.1-0.9-1.5-1.3\\r\\n\\tc0,0-0.6-0.6-0.8-0.8c-0.2-0.2-0.3-0.4-0.4-0.5c-0.2-0.5-0.3-1.1-0.2-1.9c0.1-1.1,0.5-2,1-3c0.2-0.4,0.7-1.2,0.7-1.2\\r\\n\\ts-1.7,4.2-0.8,5.5c0,0,0.1-1.3,0.5-2.6c0.3-0.9,0.8-2.2,1.4-2.9s2.1-3.3,2.2-4.9c0-0.7,0.1-1.4,0.1-1.9c-0.4-0.4,6.6-1.4,7-0.3\\r\\n\\tc0.1,0.4,1.5,4,2.3,5.9c0.4,0.9,0.9,1.7,1.2,2.7c0.3,1.1,0.5,2.6,0.5,4.1c0,0.3,0,0.8-0.1,1.3c0.2,0,4.1-4.2-0.5-7.7\\r\\n\\tc0,0,2.8,1.3,2.9,3.9c0.1,2.1-0.8,3.8-1,4.1c0.1,0,2.1,0.9,2.2,0.9c0.4,0,1.2-0.3,1.2-0.3c0.1-0.3,0.4-1.1,0.4-1.4\\r\\n\\tC37.6,29.9,35.9,26.2,34.3,23.9z\"}},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"ellipse\",\"attr\":{\"fill\":\"#ECEFF1\",\"cx\":\"21.6\",\"cy\":\"15.3\",\"rx\":\"1.3\",\"ry\":\"2\"}},{\"tag\":\"ellipse\",\"attr\":{\"fill\":\"#ECEFF1\",\"cx\":\"26.1\",\"cy\":\"15.2\",\"rx\":\"1.7\",\"ry\":\"2.3\"}}]},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"ellipse\",\"attr\":{\"transform\":\"matrix(-0.1254 -0.9921 0.9921 -0.1254 8.9754 38.9969)\",\"fill\":\"#212121\",\"cx\":\"21.7\",\"cy\":\"15.5\",\"rx\":\"1.2\",\"ry\":\"0.7\"}},{\"tag\":\"ellipse\",\"attr\":{\"fill\":\"#212121\",\"cx\":\"26\",\"cy\":\"15.6\",\"rx\":\"1\",\"ry\":\"1.3\"}}]},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFC107\",\"d\":\"M39.3,37.6c-0.4-0.2-1.1-0.5-1.7-1.4c-0.3-0.5-0.2-1.9-0.7-2.5c-0.3-0.4-0.7-0.2-0.8-0.2\\r\\n\\t\\tc-0.9,0.2-3,1.6-4.4,0c-0.2-0.2-0.5-0.5-1-0.5c-0.5,0-0.7,0.2-0.9,0.6s-0.2,0.7-0.2,1.7c0,0.8,0,1.7-0.1,2.4\\r\\n\\t\\tc-0.2,1.7-0.5,2.7-0.5,3.7c0,1.1,0.3,1.8,0.7,2.1c0.3,0.3,0.8,0.5,1.9,0.5c1.1,0,1.8-0.4,2.5-1.1c0.5-0.5,0.9-0.7,2.3-1.7\\r\\n\\t\\tc1.1-0.7,2.8-1.6,3.1-1.9c0.2-0.2,0.5-0.3,0.5-0.9C40,37.9,39.6,37.7,39.3,37.6z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFC107\",\"d\":\"M19.2,37.9c-1-1.6-1.1-1.9-1.8-2.9c-0.6-1-1.9-2.9-2.7-2.9c-0.6,0-0.9,0.3-1.3,0.7\\r\\n\\t\\tc-0.4,0.4-0.8,1.3-1.5,1.8c-0.6,0.5-2.3,0.4-2.7,1c-0.4,0.6,0.4,1.5,0.4,3c0,0.6-0.5,1-0.6,1.4c-0.1,0.5-0.2,0.8,0,1.2\\r\\n\\t\\tc0.4,0.6,0.9,0.8,4.3,1.5c1.8,0.4,3.5,1.4,4.6,1.5c1.1,0.1,3,0,3-2.7C21,39.9,20.1,39.5,19.2,37.9z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFC107\",\"d\":\"M21.1,19.8C20.5,19.4,20,19,20,18.4c0-0.6,0.4-0.8,1-1.3c0.1-0.1,1.2-1.1,2.3-1.1s2.4,0.7,2.9,0.9\\r\\n\\t\\tc0.9,0.2,1.8,0.4,1.7,1.1c-0.1,1-0.2,1.2-1.2,1.7c-0.7,0.2-2,1.3-2.9,1.3c-0.4,0-1,0-1.4-0.1C22.1,20.8,21.6,20.3,21.1,19.8z\"}}]},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#634703\",\"d\":\"M20.9,19c0.2,0.2,0.5,0.4,0.8,0.5c0.2,0.1,0.5,0.2,0.5,0.2c0.4,0,0.7,0,0.9,0c0.5,0,1.2-0.2,1.9-0.6\\r\\n\\t\\tc0.7-0.3,0.8-0.5,1.3-0.7c0.5-0.3,1-0.6,0.8-0.7c-0.2-0.1-0.4,0-1.1,0.4c-0.6,0.4-1.1,0.6-1.7,0.9c-0.3,0.1-0.7,0.3-1,0.3\\r\\n\\t\\tc-0.3,0-0.6,0-0.9,0c-0.3,0-0.5-0.1-0.8-0.2c-0.2-0.1-0.3-0.2-0.4-0.2c-0.2-0.1-0.6-0.5-0.8-0.6c0,0-0.2,0-0.1,0.1\\r\\n\\t\\tC20.6,18.7,20.7,18.8,20.9,19z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#634703\",\"d\":\"M23.9,16.8c0.1,0.2,0.3,0.2,0.4,0.3c0.1,0.1,0.2,0.1,0.2,0.1c0.1-0.1,0-0.3-0.1-0.3\\r\\n\\t\\tC24.4,16.7,23.9,16.7,23.9,16.8z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#634703\",\"d\":\"M22.3,17c0,0.1,0.2,0.2,0.2,0.1c0.1-0.1,0.2-0.2,0.3-0.2c0.2-0.1,0.1-0.2-0.2-0.2\\r\\n\\t\\tC22.4,16.8,22.4,16.9,22.3,17z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M32,34.7c0,0.1,0,0.2,0,0.3c0.2,0.4,0.7,0.5,1.1,0.5c0.6,0,1.2-0.4,1.5-0.8c0-0.1,0.1-0.2,0.2-0.3\\r\\n\\tc0.2-0.3,0.3-0.5,0.4-0.6c0,0-0.1-0.1-0.1-0.2c-0.1-0.2-0.4-0.4-0.8-0.5c-0.3-0.1-0.8-0.2-1-0.2c-0.9-0.1-1.4,0.2-1.7,0.5\\r\\n\\tc0,0,0.1,0,0.1,0.1c0.2,0.2,0.3,0.4,0.3,0.7C32.1,34.4,32,34.5,32,34.7z\"}}]})(props);\n};\nexport function FcList (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"22\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"14\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"30\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"6\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"38\",\"width\":\"4\",\"height\":\"4\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"22\",\"width\":\"28\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"14\",\"width\":\"28\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"30\",\"width\":\"28\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"6\",\"width\":\"28\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"38\",\"width\":\"28\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcLockLandscape (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M7,10h34c2.2,0,4,1.8,4,4v20c0,2.2-1.8,4-4,4H7c-2.2,0-4-1.8-4-4V14C3,11.8,4.8,10,7,10z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BBDEFB\",\"d\":\"M42,34V14c0-0.6-0.4-1-1-1H7c-0.6,0-1,0.4-1,1v20c0,0.6,0.4,1,1,1h34C41.6,35,42,34.6,42,34z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M29,31H19c-0.6,0-1-0.4-1-1v-6c0-0.6,0.4-1,1-1h10c0.6,0,1,0.4,1,1v6C30,30.6,29.6,31,29,31z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,17c-2.2,0-4,1.8-4,4v3h2v-3c0-1.1,0.9-2,2-2s2,0.9,2,2v3h2v-3C28,18.8,26.2,17,24,17z\"}}]}]})(props);\n};\nexport function FcLockPortrait (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M10,41V7c0-2.2,1.8-4,4-4h20c2.2,0,4,1.8,4,4v34c0,2.2-1.8,4-4,4H14C11.8,45,10,43.2,10,41z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BBDEFB\",\"d\":\"M34,6H14c-0.6,0-1,0.4-1,1v34c0,0.6,0.4,1,1,1h20c0.6,0,1-0.4,1-1V7C35,6.4,34.6,6,34,6z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M29,30H19c-0.6,0-1-0.4-1-1v-6c0-0.6,0.4-1,1-1h10c0.6,0,1,0.4,1,1v6C30,29.6,29.6,30,29,30z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,16c-2.2,0-4,1.8-4,4v3h2v-3c0-1.1,0.9-2,2-2s2,0.9,2,2v3h2v-3C28,17.8,26.2,16,24,16z\"}}]}]})(props);\n};\nexport function FcLock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#424242\",\"d\":\"M24,4c-5.5,0-10,4.5-10,10v4h4v-4c0-3.3,2.7-6,6-6s6,2.7,6,6v4h4v-4C34,8.5,29.5,4,24,4z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FB8C00\",\"d\":\"M36,44H12c-2.2,0-4-1.8-4-4V22c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v18C40,42.2,38.2,44,36,44z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#C76E00\",\"cx\":\"24\",\"cy\":\"31\",\"r\":\"3\"}}]})(props);\n};\nexport function FcLowBattery (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#CFD8DC\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M34,44H14c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v34C36,43.1,35.1,44,34,44z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M28,13h-8c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1v7C29,12.6,28.6,13,28,13z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#8BC34A\",\"d\":\"M34,44H14c-1.1,0-2-0.9-2-2v-9h24v9C36,43.1,35.1,44,34,44z\"}}]})(props);\n};\nexport function FcLowPriority (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#4CAF50\",\"d\":\"M21.2,44.8l-18-18c-1.6-1.6-1.6-4.1,0-5.7l18-18c1.6-1.6,4.1-1.6,5.7,0l18,18c1.6,1.6,1.6,4.1,0,5.7l-18,18 C25.3,46.4,22.7,46.4,21.2,44.8z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFEB3B\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"24,33.4 17,25 31,25\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"14.8\",\"width\":\"4\",\"height\":\"12.3\"}}]}]})(props);\n};\nexport function FcMakeDecision (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFCC80\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z\"}}]},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FF5722\",\"points\":\"24,23.5 24,12.5 30.6,18\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF5722\",\"d\":\"M28.9,24.4c0,0.2,0.1,0.4,0.1,0.6c0,2.8-2.2,5-5,5s-5-2.2-5-5s2.2-5,5-5c0.7,0,1.4,0.2,2,0.4v-4.2 c-0.6-0.1-1.3-0.2-2-0.2c-5,0-9,4-9,9s4,9,9,9s9-4,9-9c0-1.2-0.2-2.4-0.7-3.4L28.9,24.4z\"}}]})(props);\n};\nexport function FcManager (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FF9800\",\"points\":\"24,37 19,31 19,25 29,25 29,31\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFA726\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"33\",\"cy\":\"19\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"19\",\"r\":\"2\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M33,13c0-7.6-18-5-18,0c0,1.1,0,5.9,0,7c0,5,4,9,9,9s9-4,9-9C33,18.9,33,14.1,33,13z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF5722\",\"d\":\"M24,4c-6.1,0-10,4.9-10,11c0,0.8,0,2.3,0,2.3l2,1.7v-5l12-4l4,4v5l2-1.7c0,0,0-1.5,0-2.3c0-4-1-8-6-9l-1-2 H24z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#784719\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"28\",\"cy\":\"19\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"20\",\"cy\":\"19\",\"r\":\"1\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#CFD8DC\",\"d\":\"M29,31L29,31l-5,1l-5-1c0,0-11,2-11,13h32C40,33,29,31,29,31z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"23,35 22,44 26,44 25,35 26,34 24,32 22,34\"}}]})(props);\n};\nexport function FcMediumPriority (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFC107\",\"d\":\"M21.2,44.8l-18-18c-1.6-1.6-1.6-4.1,0-5.7l18-18c1.6-1.6,4.1-1.6,5.7,0l18,18c1.6,1.6,1.6,4.1,0,5.7l-18,18 C25.3,46.4,22.7,46.4,21.2,44.8z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"24\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"32\",\"cy\":\"24\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"24\",\"r\":\"2\"}}]}]})(props);\n};\nexport function FcMenu (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#607D8B\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"22\",\"width\":\"36\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"10\",\"width\":\"36\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"34\",\"width\":\"36\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcMiddleBattery (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#CFD8DC\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M34,44H14c-1.1,0-2-0.9-2-2V8c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v34C36,43.1,35.1,44,34,44z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M28,13h-8c-0.6,0-1-0.4-1-1V5c0-0.6,0.4-1,1-1h8c0.6,0,1,0.4,1,1v7C29,12.6,28.6,13,28,13z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#8BC34A\",\"d\":\"M34,44H14c-1.1,0-2-0.9-2-2V23h24v19C36,43.1,35.1,44,34,44z\"}}]})(props);\n};\nexport function FcMindMap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#CFD8DC\",\"points\":\"39.4,23 38.6,19 26,21.6 26,8 22,8 22,20.3 8.1,11.3 5.9,14.7 21.1,24.5 9.4,39.8 12.6,42.2 23.9,27.4 32.3,40.1 35.7,37.9 27.3,25.4\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#3F51B5\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"7\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#00BCD4\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"8\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"39\",\"cy\":\"21\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"7\",\"cy\":\"13\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"11\",\"cy\":\"41\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"34\",\"cy\":\"39\",\"r\":\"5\"}}]}]})(props);\n};\nexport function FcMinus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"8\",\"y\":\"21\",\"fill\":\"#5C6BC0\",\"width\":\"32\",\"height\":\"6\"}}]})(props);\n};\nexport function FcMissedCall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#F44336\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"30.3,12.9 24,19.2 15.7,10.9 12.9,13.7 24,24.8 33.1,15.7\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"36,19 27,10 36,10\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#009688\",\"d\":\"M44.5,30.8l-2.4-2.4c-8.5-8.3-28.9-7.1-36.2,0l-2.4,2.4c-0.7,0.7-0.7,1.7,0,2.4l4.8,4.7 c0.7,0.7,1.7,0.7,2.4,0l5.3-5.1l-0.4-5.6c1.7-1.7,15.1-1.7,16.8,0L32.1,33l5.1,4.9c0.7,0.7,1.7,0.7,2.4,0l4.8-4.7 C45.2,32.5,45.2,31.4,44.5,30.8z\"}}]})(props);\n};\nexport function FcMms (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E91E63\",\"d\":\"M37,39H11l-6,6V11c0-3.3,2.7-6,6-6h26c3.3,0,6,2.7,6,6v22C43,36.3,40.3,39,37,39z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#F48FB1\",\"points\":\"20,16.5 10,31 30,31\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#F8BBD0\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"34\",\"cy\":\"15\",\"r\":\"3\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"30,21 22,31 38,31\"}}]}]})(props);\n};\nexport function FcMoneyTransfer (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#78909C\",\"d\":\"M40,41H8c-2.2,0-4-1.8-4-4l0-20.9c0-1.3,0.6-2.5,1.7-3.3L24,0l18.3,12.8c1.1,0.7,1.7,2,1.7,3.3V37 C44,39.2,42.2,41,40,41z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"1\",\"fill\":\"#AED581\",\"width\":\"20\",\"height\":\"31\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#558B2F\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13,0v33h22V0H13z M33,31H15V2h18V31z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M34,3c0,1.7-0.3,3-2,3c-1.7,0-3-1.3-3-3s1.3-2,3-2C33.7,1,34,1.3,34,3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16,1c1.7,0,3,0.3,3,2s-1.3,3-3,3s-2-1.3-2-3S14.3,1,16,1z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"8\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"20\",\"r\":\"6\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#CFD8DC\",\"d\":\"M40,41H8c-2.2,0-4-1.8-4-4l0-20l20,13l20-13v20C44,39.2,42.2,41,40,41z\"}}]})(props);\n};\nexport function FcMultipleCameras (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M42,41H12c-2.2,0-4-1.8-4-4V17c0-2.2,1.8-4,4-4h30c2.2,0,4,1.8,4,4v20C46,39.2,44.2,41,42,41z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#78909C\",\"d\":\"M36,36H6c-2.2,0-4-1.8-4-4V12c0-2.2,1.8-4,4-4h30c2.2,0,4,1.8,4,4v20C40,34.2,38.2,36,36,36z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#455A64\",\"cx\":\"26\",\"cy\":\"22\",\"r\":\"10\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#42A5F5\",\"cx\":\"26\",\"cy\":\"22\",\"r\":\"7\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M29.7,19.7c-1-1.1-2.3-1.7-3.7-1.7s-2.8,0.6-3.7,1.7c-0.4,0.4-0.3,1,0.1,1.4c0.4,0.4,1,0.3,1.4-0.1 c1.2-1.3,3.3-1.3,4.5,0c0.2,0.2,0.5,0.3,0.7,0.3c0.2,0,0.5-0.1,0.7-0.3C30.1,20.7,30.1,20.1,29.7,19.7z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"12\",\"fill\":\"#ADD8FB\",\"width\":\"6\",\"height\":\"3\"}}]})(props);\n};\nexport function FcMultipleDevices (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#546E7A\",\"d\":\"M4,28V8c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v20c0,2.2-1.8,4-4,4H8C5.8,32,4,30.2,4,28z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BBDEFB\",\"d\":\"M36,7H8C7.4,7,7,7.4,7,8v20c0,0.6,0.4,1,1,1h28c0.6,0,1-0.4,1-1V8C37,7.4,36.6,7,36,7z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M38,33H6c-2.2,0-4-1.8-4-4v0h40v0C42,31.2,40.2,33,38,33z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E38939\",\"d\":\"M24,40V16c0-2.2,1.8-4,4-4h12c2.2,0,4,1.8,4,4v24c0,2.2-1.8,4-4,4H28C25.8,44,24,42.2,24,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFF3E0\",\"d\":\"M40,15H28c-0.6,0-1,0.4-1,1v22c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V16C41,15.4,40.6,15,40,15z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#A6642A\",\"cx\":\"34\",\"cy\":\"41.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function FcMultipleInputs (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#90A4AE\",\"d\":\"M40,35v5H8v-5H4v5c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4v-5H40z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1565C0\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"24,23.4 17,15 31,15\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"4\",\"width\":\"4\",\"height\":\"14\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M31.5,26.9L30.8,28l3.5,1.9l0.6-1.2c1.6-3,2.6-4.7,3.5-5.2C39.3,23,41,23,44,23v-4 C36.3,19,35.6,19.4,31.5,26.9z\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"38.4,31 29.4,35 28,25\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.5,26.9l0.6,1.2L13.6,30L13,28.8c-1.6-3-2.6-4.7-3.5-5.2C8.7,23,7,23,4,23v-4 C11.7,19,12.4,19.4,16.5,26.9z\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"20,25 18.6,35 9.6,31\"}}]}]})(props);\n};\nexport function FcMultipleSmartphones (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M4,31V8c0-2.2,1.8-4,4-4h12c2.2,0,4,1.8,4,4v23c0,2.2-1.8,4-4,4H8C5.8,35,4,33.2,4,31z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BBDEFB\",\"d\":\"M20,7H8C7.4,7,7,7.4,7,8v21c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V8C21,7.4,20.6,7,20,7z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#37474F\",\"cx\":\"14\",\"cy\":\"32.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#546E7A\",\"d\":\"M14,36V13c0-2.2,1.8-4,4-4h12c2.2,0,4,1.8,4,4v23c0,2.2-1.8,4-4,4H18C15.8,40,14,38.2,14,36z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BBDEFB\",\"d\":\"M30,12H18c-0.6,0-1,0.4-1,1v21c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V13C31,12.4,30.6,12,30,12z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#37474F\",\"cx\":\"24\",\"cy\":\"37.5\",\"r\":\"1.5\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E38939\",\"d\":\"M24,40V18c0-2.2,1.8-4,4-4h12c2.2,0,4,1.8,4,4v22c0,2.2-1.8,4-4,4H28C25.8,44,24,42.2,24,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFF3E0\",\"d\":\"M40,17H28c-0.6,0-1,0.4-1,1v20c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V18C41,17.4,40.6,17,40,17z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#A6642A\",\"cx\":\"34\",\"cy\":\"41.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function FcMusic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#E91E63\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"19\",\"cy\":\"33\",\"r\":\"9\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"24,6 24,33 28,33 28,14 39,17 39,10\"}}]}]})(props);\n};\nexport function FcNegativeDynamic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#00BCD4\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"22\",\"width\":\"10\",\"height\":\"20\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"8\",\"width\":\"10\",\"height\":\"34\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"30\",\"width\":\"10\",\"height\":\"12\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"42,12 32,22 42,22\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"6.9\",\"transform\":\"matrix(.707 -.707 .707 .707 .059 28.142)\",\"width\":\"4\",\"height\":\"14.1\"}}]}]})(props);\n};\nexport function FcNeutralDecision (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFCC80\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,4C15.2,4,8,11.2,8,20c0,1.2,0,3.5,0,3.5l2.1,0.6V19l19.5-6.3l8.2,6.3v5.1l2.1-0.6c0,0,0-2.3,0-3.5 C40,12.5,34.6,4,24,4z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"25\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"32\",\"cy\":\"25\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"25\",\"r\":\"2\"}}]}]})(props);\n};\nexport function FcNeutralTrading (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#1565C0\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"43.4,13 35,20 35,6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"11\",\"width\":\"34\",\"height\":\"4\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"40\",\"y\":\"23\",\"width\":\"4\",\"height\":\"19\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"34\",\"y\":\"23\",\"width\":\"4\",\"height\":\"19\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"28\",\"y\":\"23\",\"width\":\"4\",\"height\":\"19\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"23\",\"width\":\"4\",\"height\":\"19\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"23\",\"width\":\"4\",\"height\":\"19\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"10\",\"y\":\"23\",\"width\":\"4\",\"height\":\"19\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"23\",\"width\":\"4\",\"height\":\"19\"}}]}]})(props);\n};\nexport function FcNews (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF5722\",\"d\":\"M32,15v28H10c-2.2,0-4-1.8-4-4V15H32z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFCCBC\",\"d\":\"M14,5v34c0,2.2-1.8,4-4,4h29c2.2,0,4-1.8,4-4V5H14z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FF5722\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"10\",\"width\":\"18\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"17\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"30\",\"y\":\"17\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"21\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"30\",\"y\":\"21\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"25\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"30\",\"y\":\"25\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"29\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"30\",\"y\":\"29\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"33\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"30\",\"y\":\"33\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"37\",\"width\":\"8\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"30\",\"y\":\"37\",\"width\":\"8\",\"height\":\"2\"}}]}]})(props);\n};\nexport function FcNext (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#2196F3\",\"points\":\"17.1,5 14,8.1 29.9,24 14,39.9 17.1,43 36,24\"}}]})(props);\n};\nexport function FcNfcSign (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#2196F3\",\"d\":\"M37,42c-0.3,0-0.7-0.1-1-0.3c-1-0.5-1.3-1.8-0.8-2.7c0-0.1,3.7-6.8,3.7-15S35.3,9,35.3,9\\r\\n\\tc-0.5-1-0.2-2.2,0.8-2.7c1-0.5,2.2-0.2,2.7,0.8c0.2,0.3,4.3,7.6,4.3,17s-4.1,16.7-4.3,17C38.4,41.6,37.7,42,37,42z M32.8,35.8\\r\\n\\tc0.1-0.2,2.2-5,2.2-11.8c0-6.8-2.1-11.6-2.2-11.8c-0.4-1-1.6-1.5-2.6-1c-1,0.4-1.5,1.6-1,2.6c0,0,1.8,4.3,1.8,10.2\\r\\n\\tc0,5.9-1.8,10.2-1.8,10.2c-0.4,1,0,2.2,1,2.6c0.3,0.1,0.5,0.2,0.8,0.2C31.8,37,32.5,36.6,32.8,35.8z M23.3,33c0.6-0.1,1.1-0.5,1.4-1\\r\\n\\tc0.1-0.2,2.3-3.9,2.3-8c0-4.1-2.2-7.9-2.3-8c-0.6-1-1.8-1.3-2.7-0.7c-1,0.6-1.3,1.8-0.7,2.7c0,0,1.7,3,1.7,6c0,1.3-0.3,2.7-0.7,3.7\\r\\n\\tl-13-11.2c-0.5-0.4-1.2-0.6-1.8-0.4c-0.6,0.2-1.2,0.6-1.4,1.3C6.1,17.5,5,20.5,5,24c0,3.5,1.1,6.5,1.1,6.7c0.4,1,1.5,1.6,2.6,1.2\\r\\n\\tc1-0.4,1.6-1.5,1.2-2.6c0,0-0.9-2.6-0.9-5.3c0-0.8,0.1-1.6,0.2-2.3l12.5,10.8c0.4,0.3,0.8,0.5,1.3,0.5C23.1,33,23.2,33,23.3,33z\"}}]})(props);\n};\nexport function FcNightLandscape (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#673AB7\",\"points\":\"16.5,18 0,42 33,42\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#9575CD\",\"points\":\"33.6,24 19.2,42 48,42\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#40C4FF\",\"d\":\"M42.9,6.3C43.6,7.4,44,8.6,44,10c0,3.9-3.1,7-7,7c-0.7,0-1.3-0.1-1.9-0.3c1.2,2,3.4,3.3,5.9,3.3 c3.9,0,7-3.1,7-7C48,9.8,45.9,7.1,42.9,6.3z\"}}]})(props);\n};\nexport function FcNightPortrait (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#40C4FF\",\"d\":\"M42.9,6.3C43.6,7.4,44,8.6,44,10c0,3.9-3.1,7-7,7c-0.7,0-1.3-0.1-1.9-0.3c1.2,2,3.4,3.3,5.9,3.3 c3.9,0,7-3.1,7-7C48,9.8,45.9,7.1,42.9,6.3z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#B39DDB\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"31\",\"cy\":\"19\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"13\",\"cy\":\"19\",\"r\":\"2\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"22,37 17,31 17,25 27,25 27,31\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D1C4E9\",\"d\":\"M31,13c0-7.6-18-5-18,0c0,1.1,0,5.9,0,7c0,5,4,9,9,9s9-4,9-9C31,18.9,31,14.1,31,13z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#673AB7\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"26\",\"cy\":\"19\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"19\",\"r\":\"1\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M22,4c-6.1,0-10,4.9-10,11c0,0.8,0,2.3,0,2.3l2,1.7v-5l12-4l4,4v5l2-1.7c0,0,0-1.5,0-2.3c0-4-1-8-6-9l-1-2 H22z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M27,31L27,31c0,0-2,1-5,1s-5-1-5-1S6,33,6,44h32C38,33,27,31,27,31z\"}}]}]})(props);\n};\nexport function FcNoIdea (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FBC02D\",\"d\":\"M37,22c0-7.7-6.6-13.8-14.5-12.9c-6,0.7-10.8,5.5-11.4,11.5c-0.5,4.6,1.4,8.7,4.6,11.3 c1.4,1.2,2.3,2.9,2.3,4.8V37h12v-0.1c0-1.8,0.8-3.6,2.2-4.8C35.1,29.7,37,26.1,37,22z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFF59D\",\"d\":\"M30.6,20.2l-3-2c-0.3-0.2-0.8-0.2-1.1,0L24,19.8l-2.4-1.6c-0.3-0.2-0.8-0.2-1.1,0l-3,2 c-0.2,0.2-0.4,0.4-0.4,0.7s0,0.6,0.2,0.8l3.8,4.7V37h2V26c0-0.2-0.1-0.4-0.2-0.6l-3.3-4.1l1.5-1l2.4,1.6c0.3,0.2,0.8,0.2,1.1,0 l2.4-1.6l1.5,1l-3.3,4.1C25.1,25.6,25,25.8,25,26v11h2V26.4l3.8-4.7c0.2-0.2,0.3-0.5,0.2-0.8S30.8,20.3,30.6,20.2z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#5C6BC0\",\"cx\":\"24\",\"cy\":\"44\",\"r\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#9FA8DA\",\"d\":\"M26,45h-4c-2.2,0-4-1.8-4-4v-5h12v5C30,43.2,28.2,45,26,45z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#5C6BC0\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M30,41l-11.6,1.6c0.3,0.7,0.9,1.4,1.6,1.8l9.4-1.3C29.8,42.5,30,41.8,30,41z\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"18,38.7 18,40.7 30,39 30,37\"}}]},{\"tag\":\"rect\",\"attr\":{\"x\":\"22\",\"y\":\"-2.9\",\"transform\":\"matrix(.707 -.707 .707 .707 -9.941 24)\",\"fill\":\"#37474F\",\"width\":\"4\",\"height\":\"53.7\"}}]})(props);\n};\nexport function FcNoVideo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#4CAF50\",\"d\":\"M8,12h22c2.2,0,4,1.8,4,4v16c0,2.2-1.8,4-4,4H8c-2.2,0-4-1.8-4-4V16C4,13.8,5.8,12,8,12z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#388E3C\",\"points\":\"44,35 34,29 34,19 44,13\"}},{\"tag\":\"line\",\"attr\":{\"fill\":\"none\",\"stroke\":\"#212121\",\"strokeWidth\":\"4\",\"strokeLinejoin\":\"round\",\"strokeMiterlimit\":\"10\",\"x1\":\"5\",\"y1\":\"5\",\"x2\":\"43\",\"y2\":\"43\"}}]})(props);\n};\nexport function FcNook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#90A4AE\",\"d\":\"M8,39V9c0-3.3,2.7-6,6-6h20c3.3,0,6,2.7,6,6v30c0,3.3-2.7,6-6,6H14C10.7,45,8,42.3,8,39z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#ECEFF1\",\"d\":\"M34,7H14c-1.1,0-2,0.9-2,2v26c0,1.1,0.9,2,2,2h20c1.1,0,2-0.9,2-2V9C36,7.9,35.1,7,34,7z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#B0BEC5\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"12\",\"width\":\"16\",\"height\":\"3\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"19\",\"width\":\"16\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"23\",\"width\":\"12\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"27\",\"width\":\"16\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"31\",\"width\":\"12\",\"height\":\"2\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"none\",\"stroke\":\"#eee\",\"strokeWidth\":\"2\",\"strokeMiterlimit\":\"10\",\"d\":\"M22,43v-1c0-1.1,0.9-2,2-2h0c1.1,0,2,0.9,2,2v1\"}}]})(props);\n};\nexport function FcNumericalSorting12 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#546E7A\",\"points\":\"38,33 38,5 34,5 34,33 28,33 36,43 44,33\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.4,20h-3V8.6L9.9,9.7V7.3L16,5.1h0.3V20z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M19.4,43H9.2v-2l4.8-5.1c0.4-0.4,0.7-0.8,0.9-1.1c0.2-0.3,0.5-0.6,0.6-0.9c0.2-0.3,0.3-0.5,0.3-0.8 c0.1-0.2,0.1-0.5,0.1-0.7c0-0.7-0.2-1.2-0.5-1.6c-0.3-0.4-0.8-0.6-1.4-0.6c-0.3,0-0.7,0.1-0.9,0.2c-0.3,0.1-0.5,0.3-0.7,0.5 c-0.2,0.2-0.3,0.5-0.4,0.8s-0.1,0.6-0.1,1h-3c0-0.7,0.1-1.3,0.4-1.9c0.2-0.6,0.6-1.1,1-1.6c0.5-0.4,1-0.8,1.6-1.1 c0.6-0.3,1.4-0.4,2.2-0.4c0.8,0,1.5,0.1,2.1,0.3c0.6,0.2,1.1,0.5,1.5,0.8s0.7,0.8,0.9,1.3s0.3,1.1,0.3,1.8c0,0.5-0.1,1-0.2,1.4 S18.3,34.5,18,35s-0.6,0.9-1,1.4c-0.4,0.5-0.9,1-1.4,1.5L13,40.6h6.4V43z\"}}]}]})(props);\n};\nexport function FcNumericalSorting21 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#546E7A\",\"points\":\"38,33 38,5 34,5 34,33 28,33 36,43 44,33\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M19.2,20H9v-2l4.8-5.1c0.4-0.4,0.7-0.8,0.9-1.1c0.2-0.3,0.5-0.6,0.6-0.9c0.2-0.3,0.3-0.5,0.3-0.8 c0.1-0.2,0.1-0.5,0.1-0.7c0-0.7-0.2-1.2-0.5-1.6c-0.3-0.4-0.8-0.6-1.4-0.6c-0.3,0-0.7,0.1-0.9,0.2c-0.3,0.1-0.5,0.3-0.7,0.5 c-0.2,0.2-0.3,0.5-0.4,0.8s-0.1,0.6-0.1,1h-3c0-0.7,0.1-1.3,0.4-1.9c0.2-0.6,0.6-1.1,1-1.6c0.5-0.4,1-0.8,1.6-1.1 c0.6-0.3,1.4-0.4,2.2-0.4c0.8,0,1.5,0.1,2.1,0.3c0.6,0.2,1.1,0.5,1.5,0.8s0.7,0.8,0.9,1.3c0.2,0.5,0.3,1.1,0.3,1.8 c0,0.5-0.1,1-0.2,1.4s-0.4,0.9-0.7,1.4s-0.6,0.9-1,1.4c-0.4,0.5-0.9,1-1.4,1.5l-2.6,2.8h6.4V20z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.2,43h-3V31.6l-3.5,1.1v-2.4l6.2-2.2h0.3V43z\"}}]}]})(props);\n};\nexport function FcOk (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#4CAF50\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"21\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#CCFF90\",\"points\":\"34.6,14.6 21,28.2 15.4,22.6 12.6,25.4 21,33.8 37.4,17.4\"}}]})(props);\n};\nexport function FcOldTimeCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#546E7A\",\"d\":\"M14,13H8v-1.8C8,10.5,8.5,10,9.2,10h3.6c0.7,0,1.2,0.5,1.2,1.2V13z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#5E35B1\",\"d\":\"M40,40H8c-2.2,0-4-1.8-4-4V22h40v14C44,38.2,42.2,40,40,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#42257A\",\"d\":\"M12.7,22c-0.4,1.3-0.7,2.6-0.7,4c0,6.6,5.4,12,12,12s12-5.4,12-12c0-1.4-0.3-2.7-0.7-4H12.7z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#78909C\",\"d\":\"M8,12h32c2.2,0,4,1.8,4,4v6H4v-6C4,13.8,5.8,12,8,12z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#78909C\",\"d\":\"M33.9,13.1H14.2L17.6,8c0.4-0.6,1-0.9,1.7-0.9h9.6c0.7,0,1.3,0.3,1.7,0.9L33.9,13.1z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M35.3,22c-1.6-4.7-6.1-8-11.3-8s-9.7,3.3-11.3,8H35.3z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#B388FF\",\"cx\":\"24\",\"cy\":\"26\",\"r\":\"9\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#C7A7FF\",\"d\":\"M29,23c-1.2-1.4-3-2.2-4.8-2.2c-1.8,0-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C29.4,24.4,29.5,23.5,29,23z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"36\",\"y\":\"15\",\"fill\":\"#DBE2E5\",\"width\":\"5\",\"height\":\"4\"}}]})(props);\n};\nexport function FcOnlineSupport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"30\",\"fill\":\"#BF360C\",\"width\":\"22\",\"height\":\"12\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFA726\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"26\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"26\",\"r\":\"4\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M39,19c0-12.7-30-8.3-30,0c0,1.8,0,8.2,0,10c0,8.3,6.7,15,15,15s15-6.7,15-15C39,27.2,39,20.8,39,19z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#784719\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"30\",\"cy\":\"26\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"26\",\"r\":\"2\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF5722\",\"d\":\"M24,2C15.5,2,3,7.8,3,35.6L13,42V24l16.8-9.8L35,21v21l10-8.2c0-5.6-0.9-29-15.4-29L28.2,2H24z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#757575\",\"d\":\"M45,24c-0.6,0-1,0.4-1,1v-7c0-8.8-7.2-16-16-16h-9c-0.6,0-1,0.4-1,1s0.4,1,1,1h9c7.7,0,14,6.3,14,14v10 c0,0.6,0.4,1,1,1s1-0.4,1-1v2c0,3.9-3.1,7-7,7H24c-0.6,0-1,0.4-1,1s0.4,1,1,1h13c5,0,9-4,9-9v-5C46,24.4,45.6,24,45,24z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M45,22h-1c-1.1,0-2,0.9-2,2v4c0,1.1,0.9,2,2,2h1c1.1,0,2-0.9,2-2v-4C47,22.9,46.1,22,45,22z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"38\",\"r\":\"2\"}}]}]})(props);\n};\nexport function FcOpenedFolder (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFA000\",\"d\":\"M38,12H22l-4-4H8c-2.2,0-4,1.8-4,4v24c0,2.2,1.8,4,4,4h31c1.7,0,3-1.3,3-3V16C42,13.8,40.2,12,38,12z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFCA28\",\"d\":\"M42.2,18H15.3c-1.9,0-3.6,1.4-3.9,3.3L8,40h31.7c1.9,0,3.6-1.4,3.9-3.3l2.5-14C46.6,20.3,44.7,18,42.2,18z\"}}]})(props);\n};\nexport function FcOrgUnit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M10,10v28h28V10H10z M34,34H14V14h20V34z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"6\",\"fill\":\"#D81B60\",\"width\":\"12\",\"height\":\"12\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"30\",\"y\":\"6\",\"width\":\"12\",\"height\":\"12\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"30\",\"width\":\"12\",\"height\":\"12\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"30\",\"y\":\"30\",\"width\":\"12\",\"height\":\"12\"}}]}]})(props);\n};\nexport function FcOrganization (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M42,42H6V10c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4V42z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"42\",\"fill\":\"#64B5F6\",\"width\":\"36\",\"height\":\"2\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1565C0\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"27\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"27\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"27\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"35\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"35\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"19\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"19\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"19\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31\",\"y\":\"11\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"11\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"11\",\"width\":\"6\",\"height\":\"5\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"35\",\"width\":\"6\",\"height\":\"9\"}}]}]})(props);\n};\nexport function FcOvertime (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#CFD8DC\",\"d\":\"M12,40V20h32v20c0,2.2-1.8,4-4,4H16C13.8,44,12,42.2,12,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#78909C\",\"d\":\"M44,16v6H12v-6c0-2.2,1.8-4,4-4h24C42.2,12,44,13.8,44,16z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"37\",\"cy\":\"16\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"20\",\"cy\":\"16\",\"r\":\"3\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#B0BEC5\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M37,10c-1.1,0-2,0.9-2,2v4c0,1.1,0.9,2,2,2s2-0.9,2-2v-4C39,10.9,38.1,10,37,10z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20,10c-1.1,0-2,0.9-2,2v4c0,1.1,0.9,2,2,2s2-0.9,2-2v-4C22,10.9,21.1,10,20,10z\"}}]},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"34\",\"fill\":\"#90A4AE\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"26\",\"y\":\"34\",\"fill\":\"#90A4AE\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"34\",\"fill\":\"#90A4AE\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"28\",\"fill\":\"#90A4AE\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"26\",\"y\":\"28\",\"fill\":\"#90A4AE\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"28\",\"fill\":\"#90A4AE\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#F44336\",\"cx\":\"16\",\"cy\":\"15\",\"r\":\"12\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#eee\",\"cx\":\"16\",\"cy\":\"15\",\"r\":\"9\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"8\",\"width\":\"2\",\"height\":\"7\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16.9\",\"y\":\"14.2\",\"transform\":\"matrix(-.707 .707 -.707 -.707 42.506 16.192)\",\"width\":\"1.9\",\"height\":\"5.4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16\",\"cy\":\"15\",\"r\":\"1.5\"}}]})(props);\n};\nexport function FcPackage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF9800\",\"d\":\"M38,42H10c-2.2,0-4-1.8-4-4V10c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v28C42,40.2,40.2,42,38,42z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#8A5100\",\"d\":\"M29.5,16h-11c-0.8,0-1.5-0.7-1.5-1.5v0c0-0.8,0.7-1.5,1.5-1.5h11c0.8,0,1.5,0.7,1.5,1.5v0 C31,15.3,30.3,16,29.5,16z\"}}]})(props);\n};\nexport function FcPaid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#2E7D32\",\"d\":\"M25.4,5.6c-0.8-0.8-2-0.8-2.8,0l-12,12c-0.8,0.8-0.8,2,0,2.8C11,20.8,11.5,21,12,21s1-0.2,1.4-0.6l12-12 C26.2,7.6,26.2,6.4,25.4,5.6z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#1B5E20\",\"d\":\"M37.4,17.6l-12-12c-0.8-0.8-2-0.8-2.8,0c-0.8,0.8-0.8,2,0,2.8l12,12C35,20.8,35.5,21,36,21s1-0.2,1.4-0.6 C38.2,19.6,38.2,18.4,37.4,17.6z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#388E3C\",\"d\":\"M37.4,41H10.6c-1,0-1.8-0.7-2-1.6L5,21h38l-3.7,18.4C39.1,40.3,38.3,41,37.4,41z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#4CAF50\",\"d\":\"M43,23H5c-1.1,0-2-0.9-2-2v-2c0-1.1,0.9-2,2-2h38c1.1,0,2,0.9,2,2v2C45,22.1,44.1,23,43,23z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#DCEDC8\",\"points\":\"30.8,24.8 22.9,32.7 19.2,28.9 17,31.1 22.9,37 33,26.9\"}}]})(props);\n};\nexport function FcPanorama (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#F57C00\",\"d\":\"M4,9v32c0,0,8.4-3,20-3s20,3,20,3V9c0,0-6.7,3-20,3S4,9,4,9z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#942A09\",\"d\":\"M24,34c0.1,0,0.3,0,0.4,0L15,19L6.9,36.2C10.3,35.3,16.5,34,24,34z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BF360C\",\"d\":\"M24,34c3.3,0,6.3,0.2,9,0.6l-8-11.8l-7.8,11.5C19.3,34.1,21.6,34,24,34z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E65100\",\"d\":\"M40.7,36L35,26.5l-5,7.8C34.5,34.7,38.2,35.4,40.7,36z\"}},{\"tag\":\"ellipse\",\"attr\":{\"fill\":\"#FFF9C4\",\"cx\":\"36\",\"cy\":\"19.5\",\"rx\":\"2\",\"ry\":\"2.5\"}}]})(props);\n};\nexport function FcParallelTasks (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#90CAF9\",\"points\":\"36,13 36,9 22,9 22,22 13,22 13,26 22,26 22,39 36,39 36,35 26,35 26,26 36,26 36,22 26,22 26,13\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"17\",\"fill\":\"#D81B60\",\"width\":\"10\",\"height\":\"14\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"6\",\"fill\":\"#2196F3\",\"width\":\"10\",\"height\":\"10\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"32\",\"fill\":\"#2196F3\",\"width\":\"10\",\"height\":\"10\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"19\",\"fill\":\"#2196F3\",\"width\":\"10\",\"height\":\"10\"}}]})(props);\n};\nexport function FcPhoneAndroid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M12,40V8c0-2.2,1.8-4,4-4h16c2.2,0,4,1.8,4,4v32c0,2.2-1.8,4-4,4H16C13.8,44,12,42.2,12,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BBDEFB\",\"d\":\"M32,7H16c-0.6,0-1,0.4-1,1v29c0,0.6,0.4,1,1,1h16c0.6,0,1-0.4,1-1V8C33,7.4,32.6,7,32,7z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"40\",\"fill\":\"#78909C\",\"width\":\"6\",\"height\":\"2\"}}]})(props);\n};\nexport function FcPhone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#009688\",\"d\":\"M39.1,7l-3.7,0C22.2,7.2,7.1,24.1,7,35.4l0,3.7c0,1,0.8,1.9,1.9,1.9l7.5-0.1c1,0,1.9-0.9,1.9-1.9l0.2-8.2 l-4.7-4c0-2.6,10.5-13.1,13.2-13.2l4.3,4.7l7.9-0.2c1,0,1.9-0.9,1.9-1.9L41,8.9C41,7.8,40.2,7,39.1,7z\"}}]})(props);\n};\nexport function FcPhotoReel (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#673AB7\",\"d\":\"M10,9c-2.2,0-4,1.8-4,4v26c0,2.2,1.8,4,4,4h16c2.2,0,4-1.8,4-4V13c0-2.2-1.8-4-4-4\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#311B92\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"13\",\"width\":\"2\",\"height\":\"26\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,9V7c0-1.2-0.8-2-2-2h-8c-1.2,0-2,0.8-2,2v2H24z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#D84315\",\"d\":\"M30,13H16v26h14V13z M21,37h-3v-4h3V37z M21,19h-3v-4h3V19z M27,37h-3v-4h3V37z M24,19v-4h3v4H24z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF5722\",\"d\":\"M30,13v2h3v4h-3v14h3v4h-3v2h12V13H30z M39,37h-3v-4h3V37z M39,19h-3v-4h3V19z\"}}]})(props);\n};\nexport function FcPicture (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#F57C00\",\"d\":\"M40,41H8c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v26C44,39.2,42.2,41,40,41z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFF9C4\",\"cx\":\"35\",\"cy\":\"16\",\"r\":\"3\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#942A09\",\"points\":\"20,16 9,32 31,32\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#BF360C\",\"points\":\"31,22 23,32 39,32\"}}]})(props);\n};\nexport function FcPieChart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#00BCD4\",\"d\":\"M24,6C14.1,6,6,14.1,6,24s8.1,18,18,18c5.2,0,9.9-2.2,13.1-5.7L24,24V6z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#448AFF\",\"d\":\"M42,24c0-9.9-8.1-18-18-18v18H42z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M24,24l13.1,12.3c3-3.2,4.9-7.5,4.9-12.3H24z\"}}]})(props);\n};\nexport function FcPlanner (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#CFD8DC\",\"d\":\"M5,38V14h38v24c0,2.2-1.8,4-4,4H9C6.8,42,5,40.2,5,38z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M43,10v6H5v-6c0-2.2,1.8-4,4-4h30C41.2,6,43,7.8,43,10z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#B71C1C\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"33\",\"cy\":\"10\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"10\",\"r\":\"3\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#B0BEC5\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M33,3c-1.1,0-2,0.9-2,2v5c0,1.1,0.9,2,2,2s2-0.9,2-2V5C35,3.9,34.1,3,33,3z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M15,3c-1.1,0-2,0.9-2,2v5c0,1.1,0.9,2,2,2s2-0.9,2-2V5C17,3.9,16.1,3,15,3z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#B0BEC5\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"21\",\"width\":\"6\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"21\",\"width\":\"6\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"29\",\"y\":\"21\",\"width\":\"6\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"29\",\"width\":\"6\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"29\",\"width\":\"6\",\"height\":\"6\"}}]},{\"tag\":\"rect\",\"attr\":{\"x\":\"29\",\"y\":\"29\",\"fill\":\"#F44336\",\"width\":\"6\",\"height\":\"6\"}}]})(props);\n};\nexport function FcPlus (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#4CAF50\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"21\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#fff\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"14\",\"width\":\"6\",\"height\":\"20\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"21\",\"width\":\"20\",\"height\":\"6\"}}]}]})(props);\n};\nexport function FcPodiumWithAudience (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#B0BEC5\",\"points\":\"41,12 7,12 6,16 11,19 9,16 39,16 37,19 42,16\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#78909C\",\"points\":\"9,16 39,16 35,28 13,28\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFB74D\",\"cx\":\"24\",\"cy\":\"28\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFB74D\",\"cx\":\"36\",\"cy\":\"28\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFB74D\",\"cx\":\"12\",\"cy\":\"28\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFB74D\",\"cx\":\"18\",\"cy\":\"37\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFB74D\",\"cx\":\"30\",\"cy\":\"37\",\"r\":\"5\"}}]})(props);\n};\nexport function FcPodiumWithSpeaker (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFB74D\",\"cx\":\"24\",\"cy\":\"11\",\"r\":\"6\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M36,26.1c0,0-3.3-7.1-12-7.1s-12,7.1-12,7.1V30h24V26.1z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#B0BEC5\",\"points\":\"41,25 7,25 6,29 11,32 9,29 39,29 37,32 42,29\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#78909C\",\"points\":\"9,29 39,29 35,41 13,41\"}}]})(props);\n};\nexport function FcPodiumWithoutSpeaker (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#B0BEC5\",\"points\":\"43,16 5,16 4,20 9,23 7,20 41,20 39,23 44,20\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#78909C\",\"points\":\"7,20 41,20 37,36 11,36\"}}]})(props);\n};\nexport function FcPortraitMode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF9800\",\"d\":\"M22,38c-4.8,0-5-7-5-7v-6h10v6C27,31,26.8,38,22,38z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFA726\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"31\",\"cy\":\"19\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"13\",\"cy\":\"19\",\"r\":\"2\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M31,13c0-7.6-18-5-18,0c0,1.1,0,5.9,0,7c0,5,4,9,9,9s9-4,9-9C31,18.9,31,14.1,31,13z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#424242\",\"d\":\"M22,4c-6.1,0-10,4.9-10,11c0,0.8,0,2.3,0,2.3l2,1.7v-5l12-4l4,4v5l2-1.7c0,0,0-1.5,0-2.3c0-4-1-8-6-9l-1-2 H22z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#784719\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"26\",\"cy\":\"19\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"19\",\"r\":\"1\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#009688\",\"d\":\"M27,31L27,31c0,0-1.8,2-5,2s-5-2-5-2S6,33,6,44h32C38,33,27,31,27,31z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FF9800\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"36.1\",\"y\":\"6.1\",\"transform\":\"matrix(.707 .707 -.707 .707 19.787 -25.77)\",\"width\":\"9.9\",\"height\":\"9.9\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"36\",\"y\":\"6\",\"width\":\"10\",\"height\":\"10\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFEB3B\",\"cx\":\"41\",\"cy\":\"11\",\"r\":\"3\"}}]})(props);\n};\nexport function FcPositiveDynamic (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#00BCD4\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"22\",\"width\":\"10\",\"height\":\"20\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"8\",\"width\":\"10\",\"height\":\"34\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"30\",\"width\":\"10\",\"height\":\"12\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"11,8 21,18 21,8\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"8.9\",\"transform\":\"matrix(-.707 -.707 .707 -.707 10.879 36.506)\",\"width\":\"4\",\"height\":\"14.1\"}}]}]})(props);\n};\nexport function FcPrevious (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#2196F3\",\"points\":\"30.9,43 34,39.9 18.1,24 34,8.1 30.9,5 12,24\"}}]})(props);\n};\nexport function FcPrint (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"11\",\"fill\":\"#424242\",\"width\":\"30\",\"height\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#616161\",\"d\":\"M4,25h40v-7c0-2.2-1.8-4-4-4H8c-2.2,0-4,1.8-4,4V25z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#424242\",\"d\":\"M8,36h32c2.2,0,4-1.8,4-4v-8H4v8C4,34.2,5.8,36,8,36z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#00E676\",\"cx\":\"40\",\"cy\":\"18\",\"r\":\"1\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"4\",\"fill\":\"#90CAF9\",\"width\":\"26\",\"height\":\"10\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#242424\",\"d\":\"M37.5,31h-27C9.7,31,9,30.3,9,29.5v0c0-0.8,0.7-1.5,1.5-1.5h27c0.8,0,1.5,0.7,1.5,1.5v0 C39,30.3,38.3,31,37.5,31z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"31\",\"fill\":\"#90CAF9\",\"width\":\"26\",\"height\":\"11\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"29\",\"fill\":\"#42A5F5\",\"width\":\"26\",\"height\":\"2\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1976D2\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"33\",\"width\":\"17\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"37\",\"width\":\"13\",\"height\":\"2\"}}]}]})(props);\n};\nexport function FcPrivacy (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#424242\",\"d\":\"M24,4c-5.5,0-10,4.5-10,10v4h4v-4c0-3.3,2.7-6,6-6s6,2.7,6,6v4h4v-4C34,8.5,29.5,4,24,4z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FB8C00\",\"d\":\"M36,44H12c-2.2,0-4-1.8-4-4V22c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v18C40,42.2,38.2,44,36,44z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#EFEBE9\",\"cx\":\"24\",\"cy\":\"31\",\"r\":\"6\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#1E88E5\",\"cx\":\"24\",\"cy\":\"31\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#fff\",\"cx\":\"26\",\"cy\":\"29\",\"r\":\"1\"}}]})(props);\n};\nexport function FcProcess (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#9C27B0\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"31,8 42.9,9.6 33.1,19.4\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"17,40 5.1,38.4 14.9,28.6\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"8,17 9.6,5.1 19.4,14.9\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M9.3,21.2L5.1,22C5,22.7,5,23.3,5,24c0,4.6,1.6,9,4.6,12.4l3-2.6C10.3,31.1,9,27.6,9,24 C9,23.1,9.1,22.1,9.3,21.2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,5c-5.4,0-10.2,2.3-13.7,5.9l2.8,2.8C15.9,10.8,19.7,9,24,9c0.9,0,1.9,0.1,2.8,0.3l0.7-3.9 C26.4,5.1,25.2,5,24,5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38.7,26.8l4.2-0.8c0.1-0.7,0.1-1.3,0.1-2c0-4.4-1.5-8.7-4.3-12.1l-3.1,2.5c2.2,2.7,3.4,6.1,3.4,9.5 C39,24.9,38.9,25.9,38.7,26.8z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M34.9,34.3C32.1,37.2,28.3,39,24,39c-0.9,0-1.9-0.1-2.8-0.3l-0.7,3.9c1.2,0.2,2.4,0.3,3.5,0.3 c5.4,0,10.2-2.3,13.7-5.9L34.9,34.3z\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"40,31 38.4,42.9 28.6,33.1\"}}]}]})(props);\n};\nexport function FcPuzzle (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#8BC34A\",\"d\":\"M39,15c0-2.2-1.8-4-4-4h-6c-0.7,0-1.1-0.8-0.7-1.4c0.6-1,0.9-2.2,0.6-3.5c-0.4-2-1.9-3.6-3.8-4 C21.8,1.4,19,3.9,19,7c0,1,0.3,1.8,0.7,2.6c0.4,0.6,0,1.4-0.8,1.4h-6c-2.2,0-4,1.8-4,4v7c0,0.7,0.8,1.1,1.4,0.7 c1-0.6,2.2-0.9,3.5-0.6c2,0.4,3.6,1.9,4,3.8c0.7,3.2-1.8,6.1-4.9,6.1c-1,0-1.8-0.3-2.6-0.7C9.8,30.9,9,31.3,9,32v6c0,2.2,1.8,4,4,4 h22c2.2,0,4-1.8,4-4V15z\"}}]})(props);\n};\nexport function FcQuestions (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#42A5F5\",\"points\":\"36,44 8,44 8,8 28,8 36,16\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#90CAF9\",\"points\":\"40,40 12,40 12,4 32,4 40,12\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#E1F5FE\",\"points\":\"38.5,13 31,13 31,5.5\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#1976D2\",\"d\":\"M24.5,28.3c0-4.7,3.6-4.4,3.6-7.2c0-0.7-0.2-2.1-2-2.1c-2,0-2.1,1.6-2.1,2h-2.7c0-0.7,0.3-4.2,4.8-4.2 c4.6,0,4.7,3.6,4.7,4.3c0,3.5-3.8,4-3.8,7.3H24.5z M24.3,31.8c0-0.2,0-1.5,1.5-1.5c1.4,0,1.5,1.3,1.5,1.5c0,0.4-0.2,1.4-1.5,1.4 C24.5,33.2,24.3,32.2,24.3,31.8z\"}}]})(props);\n};\nexport function FcRadarPlot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#CFD8DC\",\"d\":\"M38.4,13L24.1,6.4L4.6,12.1l8.8,13.2l-2.2,15.1h22.7l6.6-13.3L38.4,13z M32.1,37.5H14.7l1.8-12.9L9.4,13.9 l14.5-4.3L35.6,15l1.8,11.7L32.1,37.5z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#00BCD4\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"8\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"37\",\"cy\":\"14\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"39\",\"cy\":\"27\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"7\",\"cy\":\"13\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"13\",\"cy\":\"39\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"15\",\"cy\":\"25\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"33\",\"cy\":\"39\",\"r\":\"4\"}}]}]})(props);\n};\nexport function FcRating (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#F44336\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"21\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FFCA28\",\"points\":\"24,11 27.9,18.9 36.6,20.2 30.3,26.3 31.8,35 24,30.9 16.2,35 17.7,26.3 11.4,20.2 20.1,18.9\"}}]})(props);\n};\nexport function FcRatings (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#42A5F5\",\"points\":\"36,44 8,44 8,8 28,8 36,16\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#90CAF9\",\"points\":\"40,40 12,40 12,4 32,4 40,12\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#E1F5FE\",\"points\":\"38.5,13 31,13 31,5.5\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#1976D2\",\"points\":\"34,20 27,20 29.4,22.4 27,24.9 23,20.9 16.9,26.9 19.1,29.1 23,25.1 27,29.1 31.6,24.6 34,27\"}}]})(props);\n};\nexport function FcReadingEbook (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#2196F3\",\"d\":\"M33.5,27c-2.2-3-5.2-5-9.5-5s-7.3,2-9.5,5H33.5z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#546E7A\",\"d\":\"M34.1,43H13.9c-1.1,0-1.9-0.8-2-1.9l-0.8-13C11.1,27,12,26,13.1,26h21.8c1.2,0,2.1,1,2,2.1l-0.8,13 C36,42.2,35.2,43,34.1,43z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#B0BEC5\",\"cx\":\"34\",\"cy\":\"29\",\"r\":\"1\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFB74D\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"12\",\"r\":\"8\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16.1,42.4L15,43.5c-0.6,0.6-1.6,0.6-2.2,0l-3.3-3.3c-0.6-0.6-0.6-1.6,0-2.2l1.1-1.1c1.3-1.3,3.1-1.3,4.4,0 l1.1,1.1C17.3,39.3,17.3,41.2,16.1,42.4z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M31.9,38l1.1-1.1c1.3-1.3,3.1-1.3,4.4,0l1.1,1.1c0.6,0.6,0.6,1.6,0,2.2l-3.3,3.3c-0.6,0.6-1.6,0.6-2.2,0 l-1.1-1.1C30.7,41.2,30.7,39.3,31.9,38z\"}}]}]})(props);\n};\nexport function FcReading (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#5C6BC0\",\"d\":\"M40,40c-6.9,0-16,4-16,4V22c0,0,9-4,18-4L40,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#7986CB\",\"d\":\"M8,40c6.9,0,16,4,16,4V22c0,0-9-4-18-4L8,40z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFB74D\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"12\",\"r\":\"8\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M41,32h1c0.6,0,1-0.4,1-1v-4c0-0.6-0.4-1-1-1h-1c-1.7,0-3,1.3-3,3v0C38,30.7,39.3,32,41,32z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M7,26H6c-0.6,0-1,0.4-1,1v4c0,0.6,0.4,1,1,1h1c1.7,0,3-1.3,3-3v0C10,27.3,8.7,26,7,26z\"}}]}]})(props);\n};\nexport function FcReddit (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFFFFF\",\"d\":\"M12.193,19.555c-1.94-1.741-4.79-1.727-6.365,0.029c-1.576,1.756-1.301,5.023,0.926,6.632L12.193,19.555z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFFFFF\",\"d\":\"M35.807,19.555c1.939-1.741,4.789-1.727,6.365,0.029c1.575,1.756,1.302,5.023-0.927,6.632L35.807,19.555z\"}},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFFFFF\",\"cx\":\"38.32\",\"cy\":\"10.475\",\"r\":\"3.5\"}}]},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"ellipse\",\"attr\":{\"fill\":\"#FFFFFF\",\"cx\":\"24.085\",\"cy\":\"28.611\",\"rx\":\"18.085\",\"ry\":\"12.946\"}}]}]},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#D84315\",\"cx\":\"30.365\",\"cy\":\"26.39\",\"r\":\"2.884\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#D84315\",\"cx\":\"17.635\",\"cy\":\"26.39\",\"r\":\"2.884\"}}]},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M24.002,34.902c-3.252,0-6.14-0.745-8.002-1.902c1.024,2.044,4.196,4,8.002,4c3.802,0,6.976-1.956,7.998-4\\r\\n\\t\\tC30.143,34.157,27.254,34.902,24.002,34.902z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M41.83,27.026l-1.17-1.621c0.831-0.6,1.373-1.556,1.488-2.623c0.105-0.98-0.157-1.903-0.721-2.531\\r\\n\\t\\tc-0.571-0.637-1.391-0.99-2.307-0.994c-0.927,0.013-1.894,0.365-2.646,1.041l-1.336-1.488c1.123-1.008,2.545-1.523,3.991-1.553\\r\\n\\t\\tc1.488,0.007,2.833,0.596,3.786,1.658c0.942,1.05,1.387,2.537,1.221,4.081C43.961,24.626,43.121,26.096,41.83,27.026z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M6.169,27.026c-1.29-0.932-2.131-2.401-2.306-4.031c-0.166-1.543,0.279-3.03,1.221-4.079\\r\\n\\t\\tc0.953-1.062,2.297-1.651,3.785-1.658c0.009,0,0.018,0,0.027,0c1.441,0,2.849,0.551,3.965,1.553l-1.336,1.488\\r\\n\\t\\tc-0.753-0.676-1.689-1.005-2.646-1.041c-0.916,0.004-1.735,0.357-2.306,0.994c-0.563,0.628-0.826,1.55-0.721,2.53\\r\\n\\t\\tc0.115,1.067,0.657,2.023,1.488,2.624L6.169,27.026z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M25,16.84h-2c0-2.885,0-10.548,4.979-10.548c2.154,0,3.193,1.211,3.952,2.096\\r\\n\\t\\tc0.629,0.734,0.961,1.086,1.616,1.086h1.37v2h-1.37c-1.604,0-2.453-0.99-3.135-1.785c-0.67-0.781-1.198-1.398-2.434-1.398\\r\\n\\t\\tC25.975,8.292,25,11.088,25,16.84z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M24.085,16.95c9.421,0,17.085,5.231,17.085,11.661c0,6.431-7.664,11.662-17.085,11.662S7,35.042,7,28.611\\r\\n\\t\\tC7,22.181,14.664,16.95,24.085,16.95 M24.085,14.95C13.544,14.95,5,21.066,5,28.611c0,7.546,8.545,13.662,19.085,13.662\\r\\n\\t\\tc10.54,0,19.085-6.116,19.085-13.662C43.17,21.066,34.625,14.95,24.085,14.95L24.085,14.95z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M38.32,7.975c1.379,0,2.5,1.122,2.5,2.5s-1.121,2.5-2.5,2.5s-2.5-1.122-2.5-2.5S36.941,7.975,38.32,7.975\\r\\n\\t\\t M38.32,5.975c-2.484,0-4.5,2.015-4.5,4.5s2.016,4.5,4.5,4.5c2.486,0,4.5-2.015,4.5-4.5S40.807,5.975,38.32,5.975L38.32,5.975z\"}}]}]})(props);\n};\nexport function FcRedo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#00BCD4\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"43,18 29,6.3 29,29.7\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M20,14h12v8H20c-2.8,0-5,2.2-5,5s2.2,5,5,5h3v8h-3c-7.2,0-13-5.8-13-13S12.8,14,20,14z\"}}]}]})(props);\n};\nexport function FcRefresh (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#1565C0\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M13,13c0-3.3,2.7-6,6-6h10c3.3,0,6,2.7,6,6h4c0-5.5-4.5-10-10-10H19C13.5,3,9,7.5,9,13v11.2h4V13z\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"4.6,22 11,30.4 17.4,22\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1565C0\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M35,35c0,3.3-2.7,6-6,6H19c-3.3,0-6-2.7-6-6H9c0,5.5,4.5,10,10,10h10c5.5,0,10-4.5,10-10V23h-4V35z\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"30.6,26 37,17.6 43.4,26\"}}]}]})(props);\n};\nexport function FcRegisteredTrademark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#9C27B0\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"21\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E1BEE7\",\"d\":\"M25,26.8h-4.5v9h-4V12.5h8.2c1.3,0,2.5,0.2,3.6,0.5c1,0.3,1.9,0.8,2.6,1.3c0.7,0.6,1.3,1.3,1.6,2.2 s0.6,1.9,0.6,3c0,1.6-0.4,2.9-1.1,3.9c-0.8,1-1.8,1.9-3.1,2.4l5.2,9.7v0.2h-4.3L25,26.8z M20.5,23.6h4.2c0.7,0,1.4-0.1,1.9-0.3 c0.5-0.2,1-0.5,1.4-0.8c0.4-0.3,0.6-0.7,0.8-1.2c0.2-0.5,0.3-1,0.3-1.6c0-0.6-0.1-1.1-0.3-1.6c-0.2-0.5-0.4-0.9-0.8-1.2 c-0.4-0.3-0.8-0.6-1.4-0.8c-0.5-0.2-1.2-0.3-2-0.3h-4.1V23.6z\"}}]})(props);\n};\nexport function FcRemoveImage (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#8CBCD6\",\"d\":\"M40,41H8c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v26C44,39.2,42.2,41,40,41z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#B3DDF5\",\"cx\":\"35\",\"cy\":\"16\",\"r\":\"3\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#9AC9E3\",\"points\":\"20,16 9,32 31,32\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#B3DDF5\",\"points\":\"31,22 23,32 39,32\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#F44336\",\"cx\":\"38\",\"cy\":\"38\",\"r\":\"10\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#fff\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"36.5\",\"y\":\"32\",\"transform\":\"matrix(-.707 .707 -.707 -.707 91.74 38)\",\"width\":\"3\",\"height\":\"12\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"36.5\",\"y\":\"32\",\"transform\":\"matrix(-.707 -.707 .707 -.707 38 91.74)\",\"width\":\"3\",\"height\":\"12\"}}]}]})(props);\n};\nexport function FcReuse (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#455A64\",\"points\":\"12.1,42 17.2,42 16.5,18.2 10.9,20.2\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFB74D\",\"cx\":\"36.5\",\"cy\":\"10\",\"r\":\"5\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#607D8B\",\"points\":\"11,42 6,42 7.8,18.6 14.2,20.9\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M31.7,15.9c-0.6-2-1.3-4-2.5-5.8c-1.3-1.6-3.2-3.1-6.1-2c-3.1,1.3-9.2,3.6-11.2,4.5 c-2.3,1.1-4.1,2.7-4.1,5.9c0,3.4,4.3,5.3,4.3,5.3l14.7-6.1l1.7,4.5l5.3,0.1C33.8,22.4,32.3,17.9,31.7,15.9z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#B39DDB\",\"d\":\"M37.9,42h-7.9c-1,0-1.8-0.7-2-1.7l-2.6-17.1h17l-2.6,17.1C39.8,41.3,38.9,42,37.9,42z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#7E57C2\",\"d\":\"M42,24H26c-0.6,0-1-0.4-1-1v0c0-0.6,0.4-1,1-1h16c0.6,0,1,0.4,1,1v0C43,23.6,42.6,24,42,24z\"}}]})(props);\n};\nexport function FcRightDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"41,41 23,41 41,23\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"17.4\",\"y\":\"5\",\"transform\":\"matrix(.707 -.707 .707 .707 -8.854 21.374)\",\"fill\":\"#3F51B5\",\"width\":\"8\",\"height\":\"32.7\"}}]})(props);\n};\nexport function FcRightDown2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"29,44 17.3,30 40.7,30\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M21,6H8v8h13c2.2,0,4,1.8,4,4v17h8V18C33,11.4,27.6,6,21,6z\"}}]})(props);\n};\nexport function FcRightUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"41,7 41,25 23,7\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"17.4\",\"y\":\"10.3\",\"transform\":\"matrix(-.707 -.707 .707 -.707 17.661 60.567)\",\"fill\":\"#3F51B5\",\"width\":\"8\",\"height\":\"32.7\"}}]})(props);\n};\nexport function FcRightUp2 (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"29,4 17.3,18 40.7,18\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M21,42H8v-8h13c2.2,0,4-1.8,4-4V13h8v17C33,36.6,27.6,42,21,42z\"}}]})(props);\n};\nexport function FcRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"44,24 30,35.7 30,12.3\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"20\",\"width\":\"27\",\"height\":\"8\"}}]}]})(props);\n};\nexport function FcRotateCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#5E35B1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M33.9,12.1H14.2L17.6,7c0.4-0.6,1-0.9,1.7-0.9h9.6c0.7,0,1.3,0.3,1.7,0.9L33.9,12.1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14,11H8V9.2C8,8.5,8.5,8,9.2,8h3.6C13.5,8,14,8.5,14,9.2V11z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M40,42H8c-2.2,0-4-1.8-4-4V14c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,40.2,42.2,42,40,42z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E8EAF6\",\"d\":\"M34,25c0-5.5-4.5-10-10-10s-10,4.5-10,10s4.5,10,10,10v-2c-4.4,0-8-3.6-8-8s3.6-8,8-8s8,3.6,8,8h-3.5 l4.5,5.6l4.5-5.6H34z\"}}]})(props);\n};\nexport function FcRotateToLandscape (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M10,41V7c0-2.2,1.8-4,4-4h20c2.2,0,4,1.8,4,4v34c0,2.2-1.8,4-4,4H14C11.8,45,10,43.2,10,41z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#F3E5F5\",\"d\":\"M34,6H14c-0.6,0-1,0.4-1,1v34c0,0.6,0.4,1,1,1h20c0.6,0,1-0.4,1-1V7C35,6.4,34.6,6,34,6z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#9C27B0\",\"points\":\"22,34 27.9,27 16.1,27\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#9C27B0\",\"d\":\"M26,16c-3.3,0-6,2.7-6,6v6h4v-6c0-1.1,0.9-2,2-2s2,0.9,2,2v2h4v-2C32,18.7,29.3,16,26,16z\"}}]})(props);\n};\nexport function FcRotateToPortrait (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M41,38H7c-2.2,0-4-1.8-4-4V14c0-2.2,1.8-4,4-4h34c2.2,0,4,1.8,4,4v20C45,36.2,43.2,38,41,38z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#F3E5F5\",\"d\":\"M6,14v20c0,0.6,0.4,1,1,1h34c0.6,0,1-0.4,1-1V14c0-0.6-0.4-1-1-1H7C6.4,13,6,13.4,6,14z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#9C27B0\",\"points\":\"26,15 20.1,22 31.9,22\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#9C27B0\",\"d\":\"M24,21v6c0,1.1-0.9,2-2,2s-2-0.9-2-2v-2h-4v2c0,3.3,2.7,6,6,6s6-2.7,6-6v-6H24z\"}}]})(props);\n};\nexport function FcRuler (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"16.7\",\"y\":\"1.6\",\"transform\":\"matrix(-.707 -.707 .707 -.707 24 57.941)\",\"fill\":\"#FFA000\",\"width\":\"14.6\",\"height\":\"44.8\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#9E6400\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"17.9\",\"y\":\"20.2\",\"transform\":\"matrix(-.707 -.707 .707 -.707 21.177 51.125)\",\"width\":\"6.6\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"22.3\",\"y\":\"15.2\",\"transform\":\"matrix(-.707 -.707 .707 -.707 29.833 44.71)\",\"width\":\"3.7\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"25.9\",\"y\":\"12.2\",\"transform\":\"matrix(-.707 -.707 .707 -.707 40.49 43.125)\",\"width\":\"6.6\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"31.2\",\"y\":\"6.3\",\"transform\":\"matrix(.707 -.707 .707 .707 3.643 25.147)\",\"width\":\"2\",\"height\":\"3.7\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6.3\",\"y\":\"31.2\",\"transform\":\"matrix(-.707 -.707 .707 -.707 -8.794 60.71)\",\"width\":\"3.7\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"9.9\",\"y\":\"28.2\",\"transform\":\"matrix(-.707 -.707 .707 -.707 1.863 59.125)\",\"width\":\"6.6\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14.3\",\"y\":\"23.2\",\"transform\":\"matrix(-.707 -.707 .707 -.707 10.52 52.71)\",\"width\":\"3.7\",\"height\":\"2\"}}]}]})(props);\n};\nexport function FcRules (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#42A5F5\",\"d\":\"M39,45H9c0,0-3-0.1-3-8h36C42,44.9,39,45,39,45z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"8\",\"y\":\"3\",\"fill\":\"#90CAF9\",\"width\":\"32\",\"height\":\"34\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1976D2\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"18\",\"y\":\"15\",\"width\":\"16\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"18\",\"y\":\"19\",\"width\":\"16\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"18\",\"y\":\"23\",\"width\":\"16\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"18\",\"y\":\"27\",\"width\":\"16\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"18\",\"y\":\"31\",\"width\":\"16\",\"height\":\"2\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1976D2\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"15\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"19\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"23\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"27\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"31\",\"width\":\"2\",\"height\":\"2\"}}]}]})(props);\n};\nexport function FcSafe (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"8\",\"y\":\"39\",\"fill\":\"#455A64\",\"width\":\"6\",\"height\":\"3\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"34\",\"y\":\"39\",\"fill\":\"#455A64\",\"width\":\"6\",\"height\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#78909C\",\"d\":\"M40,41H8c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v26C44,39.2,42.2,41,40,41z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#90A4AE\",\"d\":\"M40,38H8c-0.6,0-1-0.4-1-1V11c0-0.6,0.4-1,1-1h32c0.6,0,1,0.4,1,1v26C41,37.6,40.6,38,40,38z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M29,14c-5.5,0-10,4.5-10,10c0,5.5,4.5,10,10,10s10-4.5,10-10C39,18.5,34.5,14,29,14z M29,31 c-3.9,0-7-3.1-7-7c0-3.9,3.1-7,7-7s7,3.1,7,7C36,27.9,32.9,31,29,31z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#B0BEC5\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M35.3,19.1l0.4-0.4c0.4-0.4,0.4-1,0-1.4s-1-0.4-1.4,0l-0.4,0.4C34.4,18.1,34.9,18.6,35.3,19.1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M22.7,19.1c0.4-0.5,0.9-1,1.4-1.4l-0.4-0.4c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4L22.7,19.1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M21,24c0-0.3,0-0.7,0.1-1h-0.6c-0.6,0-1,0.4-1,1s0.4,1,1,1h0.6C21,24.7,21,24.3,21,24z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M29,16c0.3,0,0.7,0,1,0.1v-0.6c0-0.6-0.4-1-1-1s-1,0.4-1,1v0.6C28.3,16,28.7,16,29,16z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M35.3,28.9c-0.4,0.5-0.9,1-1.4,1.4l0.4,0.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3c0.4-0.4,0.4-1,0-1.4 L35.3,28.9z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M22.7,28.9l-0.4,0.4c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l0.4-0.4 C23.6,29.9,23.1,29.4,22.7,28.9z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M37.5,23h-0.6c0,0.3,0.1,0.7,0.1,1s0,0.7-0.1,1h0.6c0.6,0,1-0.4,1-1S38.1,23,37.5,23z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M29,32c-0.3,0-0.7,0-1-0.1v0.6c0,0.6,0.4,1,1,1s1-0.4,1-1v-0.6C29.7,32,29.3,32,29,32z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M12,20c-1.1,0-2,0.9-2,2v8c0,1.1,0.9,2,2,2s2-0.9,2-2v-8C14,20.9,13.1,20,12,20z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#CFD8DC\",\"d\":\"M12,18c-1.1,0-2,0.9-2,2v8c0,1.1,0.9,2,2,2s2-0.9,2-2v-8C14,18.9,13.1,18,12,18z\"}}]})(props);\n};\nexport function FcSalesPerformance (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFA000\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M38,13c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,12.1,41.3,13,38,13 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,10c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,9.1,41.3,10,38,10z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,16c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,15.1,41.3,16,38,16 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,19c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,18.1,41.3,19,38,19 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,22c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,21.1,41.3,22,38,22 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,25c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,24.1,41.3,25,38,25 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,28c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,27.1,41.3,28,38,28 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,31c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,30.1,41.3,31,38,31 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,34c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,33.1,41.3,34,38,34 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,37c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,36.1,41.3,37,38,37 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,40c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C44,39.1,41.3,40,38,40 z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFC107\"},\"child\":[{\"tag\":\"ellipse\",\"attr\":{\"cx\":\"38\",\"cy\":\"8\",\"rx\":\"6\",\"ry\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,12c-2.8,0-5.1-0.6-5.8-1.5C32.1,10.7,32,10.8,32,11c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,11.4,40.8,12,38,12z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,15c-2.8,0-5.1-0.6-5.8-1.5C32.1,13.7,32,13.8,32,14c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,14.4,40.8,15,38,15z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,18c-2.8,0-5.1-0.6-5.8-1.5C32.1,16.7,32,16.8,32,17c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,17.4,40.8,18,38,18z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,21c-2.8,0-5.1-0.6-5.8-1.5C32.1,19.7,32,19.8,32,20c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,20.4,40.8,21,38,21z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,24c-2.8,0-5.1-0.6-5.8-1.5C32.1,22.7,32,22.8,32,23c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,23.4,40.8,24,38,24z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,27c-2.8,0-5.1-0.6-5.8-1.5C32.1,25.7,32,25.8,32,26c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,26.4,40.8,27,38,27z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,30c-2.8,0-5.1-0.6-5.8-1.5C32.1,28.7,32,28.8,32,29c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,29.4,40.8,30,38,30z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,33c-2.8,0-5.1-0.6-5.8-1.5C32.1,31.7,32,31.8,32,32c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,32.4,40.8,33,38,33z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,36c-2.8,0-5.1-0.6-5.8-1.5C32.1,34.7,32,34.8,32,35c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,35.4,40.8,36,38,36z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M38,39c-2.8,0-5.1-0.6-5.8-1.5C32.1,37.7,32,37.8,32,38c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C43.1,38.4,40.8,39,38,39z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFA000\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10,19c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,18.1,13.3,19,10,19 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,16c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,15.1,13.3,16,10,16 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,22c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,21.1,13.3,22,10,22 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,25c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,24.1,13.3,25,10,25 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,28c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,27.1,13.3,28,10,28 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,31c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,30.1,13.3,31,10,31 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,34c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,33.1,13.3,34,10,34 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,37c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,36.1,13.3,37,10,37 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,40c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C16,39.1,13.3,40,10,40 z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFC107\"},\"child\":[{\"tag\":\"ellipse\",\"attr\":{\"cx\":\"10\",\"cy\":\"14\",\"rx\":\"6\",\"ry\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,18c-2.8,0-5.1-0.6-5.8-1.5C4.1,16.7,4,16.8,4,17c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,17.4,12.8,18,10,18z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,21c-2.8,0-5.1-0.6-5.8-1.5C4.1,19.7,4,19.8,4,20c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,20.4,12.8,21,10,21z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,24c-2.8,0-5.1-0.6-5.8-1.5C4.1,22.7,4,22.8,4,23c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,23.4,12.8,24,10,24z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,27c-2.8,0-5.1-0.6-5.8-1.5C4.1,25.7,4,25.8,4,26c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,26.4,12.8,27,10,27z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,30c-2.8,0-5.1-0.6-5.8-1.5C4.1,28.7,4,28.8,4,29c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,29.4,12.8,30,10,30z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,33c-2.8,0-5.1-0.6-5.8-1.5C4.1,31.7,4,31.8,4,32c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,32.4,12.8,33,10,33z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,36c-2.8,0-5.1-0.6-5.8-1.5C4.1,34.7,4,34.8,4,35c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,35.4,12.8,36,10,36z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M10,39c-2.8,0-5.1-0.6-5.8-1.5C4.1,37.7,4,37.8,4,38c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C15.1,38.4,12.8,39,10,39z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFA000\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M24,28c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C30,27.1,27.3,28,24,28 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,25c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C30,24.1,27.3,25,24,25 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,31c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C30,30.1,27.3,31,24,31 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,34c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C30,33.1,27.3,34,24,34 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,37c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C30,36.1,27.3,37,24,37 z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,40c-3.3,0-6-0.9-6-2c0,0.4,0,1.6,0,2c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.4,0-1.6,0-2C30,39.1,27.3,40,24,40 z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFC107\"},\"child\":[{\"tag\":\"ellipse\",\"attr\":{\"cx\":\"24\",\"cy\":\"23\",\"rx\":\"6\",\"ry\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,27c-2.8,0-5.1-0.6-5.8-1.5C18.1,25.7,18,25.8,18,26c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C29.1,26.4,26.8,27,24,27z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,30c-2.8,0-5.1-0.6-5.8-1.5C18.1,28.7,18,28.8,18,29c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C29.1,29.4,26.8,30,24,30z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,33c-2.8,0-5.1-0.6-5.8-1.5C18.1,31.7,18,31.8,18,32c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C29.1,32.4,26.8,33,24,33z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,36c-2.8,0-5.1-0.6-5.8-1.5C18.1,34.7,18,34.8,18,35c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C29.1,35.4,26.8,36,24,36z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,39c-2.8,0-5.1-0.6-5.8-1.5C18.1,37.7,18,37.8,18,38c0,1.1,2.7,2,6,2s6-0.9,6-2c0-0.2-0.1-0.3-0.2-0.5 C29.1,38.4,26.8,39,24,39z\"}}]}]})(props);\n};\nexport function FcScatterPlot (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#CFD8DC\",\"points\":\"9,39 9,6 7,6 7,41 42,41 42,39\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#00BCD4\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"39\",\"cy\":\"11\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"31\",\"cy\":\"13\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"37\",\"cy\":\"19\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"34\",\"cy\":\"26\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"28\",\"cy\":\"20\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"26\",\"cy\":\"28\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"20\",\"cy\":\"23\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"21\",\"cy\":\"33\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"14\",\"cy\":\"30\",\"r\":\"3\"}}]}]})(props);\n};\nexport function FcSearch (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#616161\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"34.6\",\"y\":\"28.1\",\"transform\":\"matrix(.707 -.707 .707 .707 -15.154 36.586)\",\"width\":\"4\",\"height\":\"17\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"20\",\"cy\":\"20\",\"r\":\"16\"}}]},{\"tag\":\"rect\",\"attr\":{\"x\":\"36.2\",\"y\":\"32.1\",\"transform\":\"matrix(.707 -.707 .707 .707 -15.839 38.239)\",\"fill\":\"#37474F\",\"width\":\"4\",\"height\":\"12.3\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#64B5F6\",\"cx\":\"20\",\"cy\":\"20\",\"r\":\"13\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BBDEFB\",\"d\":\"M26.9,14.2c-1.7-2-4.2-3.2-6.9-3.2s-5.2,1.2-6.9,3.2c-0.4,0.4-0.3,1.1,0.1,1.4c0.4,0.4,1.1,0.3,1.4-0.1 C16,13.9,17.9,13,20,13s4,0.9,5.4,2.5c0.2,0.2,0.5,0.4,0.8,0.4c0.2,0,0.5-0.1,0.6-0.2C27.2,15.3,27.2,14.6,26.9,14.2z\"}}]})(props);\n};\nexport function FcSelfServiceKiosk (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#546E7A\",\"d\":\"M44,30H4V11c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4V30z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#64B5F6\",\"d\":\"M40,27H8c-0.6,0-1-0.4-1-1V11c0-0.6,0.4-1,1-1h32c0.6,0,1,0.4,1,1v15C41,26.6,40.6,27,40,27z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#78909C\",\"d\":\"M40,41H8c-2.2,0-4-1.8-4-4v-7h40v7C44,39.2,42.2,41,40,41z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"27\",\"y\":\"34\",\"width\":\"12\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"34\",\"width\":\"12\",\"height\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M18,35c0,1.1-1.3,2-3,2s-3-0.9-3-2H18z\"}}]}]})(props);\n};\nexport function FcSelfie (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M32.9,22c0-0.3,0.1-0.7,0.1-1c0-1.1,0-5.9,0-7c0-7.6-18-5-18,0c0,1.1,0,5.9,0,7c0,0.3,0,0.7,0.1,1H32.9z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M40,44H8c-2.2,0-4-1.8-4-4V26c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v14C44,42.2,42.2,44,40,44z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BBDEFB\",\"d\":\"M7,26v14c0,0.6,0.4,1,1,1h29c0.6,0,1-0.4,1-1V26c0-0.6-0.4-1-1-1H8C7.4,25,7,25.4,7,26z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"40\",\"y\":\"30\",\"fill\":\"#78909C\",\"width\":\"2\",\"height\":\"6\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"32\",\"fill\":\"#BF360C\",\"width\":\"8\",\"height\":\"9\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20.5\",\"y\":\"37.5\",\"fill\":\"#FF9800\",\"width\":\"5\",\"height\":\"3.5\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFB74D\",\"d\":\"M27.5,32c0-3.8-9-2.5-9,0c0,0.5,0,3,0,3.5c0,2.5,2,4.5,4.5,4.5s4.5-2,4.5-4.5C27.5,35,27.5,32.5,27.5,32z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#784719\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"28\",\"cy\":\"21\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"20\",\"cy\":\"21\",\"r\":\"1\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"25\",\"cy\":\"35.5\",\"r\":\".5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"21\",\"cy\":\"35.5\",\"r\":\".5\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FF5722\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M23,27c-3,0-8,1.3-8,11l4,3v-6.5l6-3.5l2,2.5V41l4-3c0-2-0.8-10-6-10l-0.5-1H23z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M16,22v-3l12-7l4,5v5h6.8C38.3,15.8,36.1,6,28,6l-1-2h-3C18.5,4,10.7,6.8,9.2,22H16z\"}}]}]})(props);\n};\nexport function FcSerialTasks (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M33,9H11v4h22c1.1,0,2,0.9,2,2v20H23v4h16V15C39,11.7,36.3,9,33,9z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"6\",\"fill\":\"#D81B60\",\"width\":\"10\",\"height\":\"10\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"32\",\"y\":\"17\",\"width\":\"10\",\"height\":\"10\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"16\",\"y\":\"32\",\"width\":\"10\",\"height\":\"10\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"26\",\"cy\":\"11\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"37\",\"cy\":\"37\",\"r\":\"5\"}}]}]})(props);\n};\nexport function FcServiceMark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#9C27B0\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"21\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#E1BEE7\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M16.7,28.2c0-3.8-7.3-2.2-7.3-8.1c0-0.7,0.4-4.8,5.5-4.8c5.1,0,5.4,4.5,5.4,5.3h-3.5c0-0.4,0-2.5-2-2.5 c-1.8,0-1.9,1.7-1.9,2c0,3,7.4,2,7.4,8.1c0,2-1.1,4.8-5.3,4.8C10.3,33,9,29.6,9,27.3h3.5c0,0.5-0.2,2.8,2.5,2.8 C16.8,30.2,16.7,28.5,16.7,28.2z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M27.1,15.6L30.3,28l3.2-12.4h4.5v17.2h-3.5v-4.6l0.3-7.2l-3.4,11.8h-2.4l-3.4-11.8l0.3,7.2v4.6h-3.5V15.6 H27.1z\"}}]}]})(props);\n};\nexport function FcServices (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E65100\",\"d\":\"M25.6,34.4c0.1-0.4,0.1-0.9,0.1-1.4s0-0.9-0.1-1.4l2.8-2c0.3-0.2,0.4-0.6,0.2-0.9l-2.7-4.6 c-0.2-0.3-0.5-0.4-0.8-0.3L22,25.3c-0.7-0.6-1.5-1-2.4-1.4l-0.3-3.4c0-0.3-0.3-0.6-0.6-0.6h-5.3c-0.3,0-0.6,0.3-0.6,0.6L12.4,24 c-0.9,0.3-1.6,0.8-2.4,1.4l-3.1-1.4c-0.3-0.1-0.7,0-0.8,0.3l-2.7,4.6c-0.2,0.3-0.1,0.7,0.2,0.9l2.8,2c-0.1,0.4-0.1,0.9-0.1,1.4 s0,0.9,0.1,1.4l-2.8,2c-0.3,0.2-0.4,0.6-0.2,0.9l2.7,4.6c0.2,0.3,0.5,0.4,0.8,0.3l3.1-1.4c0.7,0.6,1.5,1,2.4,1.4l0.3,3.4 c0,0.3,0.3,0.6,0.6,0.6h5.3c0.3,0,0.6-0.3,0.6-0.6l0.3-3.4c0.9-0.3,1.6-0.8,2.4-1.4l3.1,1.4c0.3,0.1,0.7,0,0.8-0.3l2.7-4.6 c0.2-0.3,0.1-0.7-0.2-0.9L25.6,34.4z M16,38c-2.8,0-5-2.2-5-5c0-2.8,2.2-5,5-5c2.8,0,5,2.2,5,5C21,35.8,18.8,38,16,38z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFA000\",\"d\":\"M41.9,15.3C42,14.8,42,14.4,42,14s0-0.8-0.1-1.3l2.5-1.8c0.3-0.2,0.3-0.5,0.2-0.8l-2.5-4.3 c-0.2-0.3-0.5-0.4-0.8-0.2l-2.9,1.3c-0.7-0.5-1.4-0.9-2.2-1.3l-0.3-3.1C36,2.2,35.8,2,35.5,2h-4.9c-0.3,0-0.6,0.2-0.6,0.5l-0.3,3.1 c-0.8,0.3-1.5,0.7-2.2,1.3l-2.9-1.3c-0.3-0.1-0.6,0-0.8,0.2l-2.5,4.3c-0.2,0.3-0.1,0.6,0.2,0.8l2.5,1.8C24,13.2,24,13.6,24,14 s0,0.8,0.1,1.3l-2.5,1.8c-0.3,0.2-0.3,0.5-0.2,0.8l2.5,4.3c0.2,0.3,0.5,0.4,0.8,0.2l2.9-1.3c0.7,0.5,1.4,0.9,2.2,1.3l0.3,3.1 c0,0.3,0.3,0.5,0.6,0.5h4.9c0.3,0,0.6-0.2,0.6-0.5l0.3-3.1c0.8-0.3,1.5-0.7,2.2-1.3l2.9,1.3c0.3,0.1,0.6,0,0.8-0.2l2.5-4.3 c0.2-0.3,0.1-0.6-0.2-0.8L41.9,15.3z M33,19c-2.8,0-5-2.2-5-5c0-2.8,2.2-5,5-5c2.8,0,5,2.2,5,5C38,16.8,35.8,19,33,19z\"}}]})(props);\n};\nexport function FcSettings (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M39.6,27.2c0.1-0.7,0.2-1.4,0.2-2.2s-0.1-1.5-0.2-2.2l4.5-3.2c0.4-0.3,0.6-0.9,0.3-1.4L40,10.8 c-0.3-0.5-0.8-0.7-1.3-0.4l-5,2.3c-1.2-0.9-2.4-1.6-3.8-2.2l-0.5-5.5c-0.1-0.5-0.5-0.9-1-0.9h-8.6c-0.5,0-1,0.4-1,0.9l-0.5,5.5 c-1.4,0.6-2.7,1.3-3.8,2.2l-5-2.3c-0.5-0.2-1.1,0-1.3,0.4l-4.3,7.4c-0.3,0.5-0.1,1.1,0.3,1.4l4.5,3.2c-0.1,0.7-0.2,1.4-0.2,2.2 s0.1,1.5,0.2,2.2L4,30.4c-0.4,0.3-0.6,0.9-0.3,1.4L8,39.2c0.3,0.5,0.8,0.7,1.3,0.4l5-2.3c1.2,0.9,2.4,1.6,3.8,2.2l0.5,5.5 c0.1,0.5,0.5,0.9,1,0.9h8.6c0.5,0,1-0.4,1-0.9l0.5-5.5c1.4-0.6,2.7-1.3,3.8-2.2l5,2.3c0.5,0.2,1.1,0,1.3-0.4l4.3-7.4 c0.3-0.5,0.1-1.1-0.3-1.4L39.6,27.2z M24,35c-5.5,0-10-4.5-10-10c0-5.5,4.5-10,10-10c5.5,0,10,4.5,10,10C34,30.5,29.5,35,24,35z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M24,13c-6.6,0-12,5.4-12,12c0,6.6,5.4,12,12,12s12-5.4,12-12C36,18.4,30.6,13,24,13z M24,30 c-2.8,0-5-2.2-5-5c0-2.8,2.2-5,5-5s5,2.2,5,5C29,27.8,26.8,30,24,30z\"}}]})(props);\n};\nexport function FcShare (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#1976D2\",\"d\":\"M38.1,31.2L19.4,24l18.7-7.2c1.5-0.6,2.3-2.3,1.7-3.9c-0.6-1.5-2.3-2.3-3.9-1.7l-26,10C8.8,21.6,8,22.8,8,24 s0.8,2.4,1.9,2.8l26,10c0.4,0.1,0.7,0.2,1.1,0.2c1.2,0,2.3-0.7,2.8-1.9C40.4,33.5,39.6,31.8,38.1,31.2z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#1E88E5\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"11\",\"cy\":\"24\",\"r\":\"7\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"37\",\"cy\":\"14\",\"r\":\"7\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"37\",\"cy\":\"34\",\"r\":\"7\"}}]}]})(props);\n};\nexport function FcShipped (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#8BC34A\",\"d\":\"M43,36H29V14h10.6c0.9,0,1.6,0.6,1.9,1.4L45,26v8C45,35.1,44.1,36,43,36z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#388E3C\",\"d\":\"M29,36H5c-1.1,0-2-0.9-2-2V9c0-1.1,0.9-2,2-2h22c1.1,0,2,0.9,2,2V36z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"37\",\"cy\":\"36\",\"r\":\"5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"13\",\"cy\":\"36\",\"r\":\"5\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#78909C\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"37\",\"cy\":\"36\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"13\",\"cy\":\"36\",\"r\":\"2\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M41,25h-7c-0.6,0-1-0.4-1-1v-7c0-0.6,0.4-1,1-1h5.3c0.4,0,0.8,0.3,0.9,0.7l1.7,5.2c0,0.1,0.1,0.2,0.1,0.3V24 C42,24.6,41.6,25,41,25z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#DCEDC8\",\"points\":\"21.8,13.8 13.9,21.7 10.2,17.9 8,20.1 13.9,26 24,15.9\"}}]})(props);\n};\nexport function FcShop (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"5\",\"y\":\"19\",\"fill\":\"#CFD8DC\",\"width\":\"38\",\"height\":\"19\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"5\",\"y\":\"38\",\"fill\":\"#B0BEC5\",\"width\":\"38\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"27\",\"y\":\"24\",\"fill\":\"#455A64\",\"width\":\"12\",\"height\":\"18\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"24\",\"fill\":\"#E3F2FD\",\"width\":\"14\",\"height\":\"11\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"10\",\"y\":\"25\",\"fill\":\"#1E88E5\",\"width\":\"12\",\"height\":\"9\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#90A4AE\",\"d\":\"M36.5,33.5c-0.3,0-0.5,0.2-0.5,0.5v2c0,0.3,0.2,0.5,0.5,0.5S37,36.3,37,36v-2C37,33.7,36.8,33.5,36.5,33.5z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#558B2F\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"19\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"36\",\"cy\":\"19\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"12\",\"cy\":\"19\",\"r\":\"3\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#7CB342\",\"d\":\"M40,6H8C6.9,6,6,6.9,6,8v3h36V8C42,6.9,41.1,6,40,6z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"11\",\"fill\":\"#7CB342\",\"width\":\"6\",\"height\":\"8\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#7CB342\",\"points\":\"37,11 32,11 33,19 39,19\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#7CB342\",\"points\":\"11,11 16,11 15,19 9,19\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFA000\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"30\",\"cy\":\"19\",\"r\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M45,19c0,1.7-1.3,3-3,3s-3-1.3-3-3s1.3-3,3-3L45,19z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"18\",\"cy\":\"19\",\"r\":\"3\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M3,19c0,1.7,1.3,3,3,3s3-1.3,3-3s-1.3-3-3-3L3,19z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFC107\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"32,11 27,11 27,19 33,19\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"42,11 37,11 39,19 45,19\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"16,11 21,11 21,19 15,19\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"6,11 11,11 9,19 3,19\"}}]}]})(props);\n};\nexport function FcSignature (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#1565C0\",\"d\":\"M38.8,28.2C41.5,24.8,45,20.1,45,12c0-0.6-0.4-1-1-1s-1,0.4-1,1c0,6.7-2.5,10.7-5,13.9c-0.6-1.9-1-4.2-1-6.9 c0-0.5-0.4-1-1-1c-0.5,0-1,0.4-1,1c-0.1,1.7-0.6,3.6-1,3.8c-0.4,0-0.9-1.4-1-2.8c0-0.5-0.5-0.9-1-0.9c-0.5,0-1,0.3-1,0.9 c-0.3,1.7-1.1,4.1-2,4.1c-0.4,0-0.6-0.1-0.7-0.3c-0.3-0.3-0.4-1-0.4-1.6c0-0.4,0.1-0.8,0.1-1.2c0-0.5-0.4-1-0.9-1 c-0.5,0-1,0.3-1.1,0.8c0,0.1-0.1,0.5-0.1,1.1C25.7,23.6,25.1,27,23,27c-0.7,0-1.1-0.2-1.4-0.7c-0.5-0.8-0.5-2.1,0-3.3c0,0,0,0,0-0.1 c0.1-0.1,0.1-0.3,0.2-0.4c0,0,0,0,0,0c0.8-1.6,1.7-2.5,3.2-2.5c0.6,0,1-0.4,1-1s-0.4-1-1-1c-4.2,0-5.4,4.1-6.6,8 c-1.4,4.8-2.7,8-6.4,8c-5.1,0-7-6.6-7-11c0-8.6,4.7-14,9-14c2.9,0,4,2.3,4.1,2.4c0.2,0.5,0.8,0.7,1.3,0.5c0.5-0.2,0.7-0.8,0.5-1.3 C19.8,10.4,18.2,7,14,7C8.6,7,3,13,3,23c0,10.3,5.9,13,9,13c5.1,0,6.8-4.5,8.1-8.5c0.7,0.9,1.7,1.5,2.9,1.5c2.2,0,3.5-1.6,4.2-3.6 c0.5,0.4,1.1,0.6,1.8,0.6c1.4,0,2.4-1.2,3-2.4c0.4,0.7,1.1,1.2,2,1.2c0.6,0,1.1-0.3,1.5-0.7c0.3,1.4,0.7,2.7,1,3.8 C35.1,29.7,34,31.2,34,33c0,1.7,1.3,3,3,3c1.8,0,3-1.6,3-3c0-1.3-0.5-2.7-1.1-4.3C38.9,28.5,38.8,28.4,38.8,28.2z M37,34 c-0.7,0-1-0.5-1-1c0-0.9,0.5-1.8,1.3-2.9c0.4,1.2,0.7,2.1,0.7,2.9C38,33.3,37.7,34,37,34z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"40\",\"fill\":\"#90A4AE\",\"width\":\"42\",\"height\":\"2\"}}]})(props);\n};\nexport function FcSimCardChip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF9800\",\"d\":\"M5,35V13c0-2.2,1.8-4,4-4h30c2.2,0,4,1.8,4,4v22c0,2.2-1.8,4-4,4H9C6.8,39,5,37.2,5,35z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFD54F\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M43,21v-2H31c-1.1,0-2-0.9-2-2s0.9-2,2-2h1v-2h-1c-2.2,0-4,1.8-4,4s1.8,4,4,4h3v6h-3c-2.8,0-5,2.2-5,5 s2.2,5,5,5h2v-2h-2c-1.7,0-3-1.3-3-3s1.3-3,3-3h12v-2h-7v-6H43z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M17,27h-3v-6h3c2.2,0,4-1.8,4-4s-1.8-4-4-4h-3v2h3c1.1,0,2,0.9,2,2s-0.9,2-2,2H5v2h7v6H5v2h12 c1.7,0,3,1.3,3,3s-1.3,3-3,3h-2v2h2c2.8,0,5-2.2,5-5S19.8,27,17,27z\"}}]}]})(props);\n};\nexport function FcSimCard (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#009688\",\"d\":\"M36,45H12c-2.2,0-4-1.8-4-4V7c0-2.2,1.8-4,4-4h16.3c1.1,0,2.1,0.4,2.8,1.2l7.7,7.7c0.8,0.8,1.2,1.8,1.2,2.8 V41C40,43.2,38.2,45,36,45z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF9800\",\"d\":\"M32,38H16c-1.1,0-2-0.9-2-2V24c0-1.1,0.9-2,2-2h16c1.1,0,2,0.9,2,2v12C34,37.1,33.1,38,32,38z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFD54F\",\"d\":\"M29,30v3h5v2h-5v3h-2V22h2v6h5v2H29z M14,29v2h5v2h-5v2h5v3h2v-9H14z\"}}]})(props);\n};\nexport function FcSlrBackSide (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#5E35B1\",\"d\":\"M40,10h-7.6l-2-3c-0.4-0.6-1-0.9-1.7-0.9h-9.6c-0.7,0-1.3,0.3-1.7,0.9l-2,3H8c-2.2,0-4,1.8-4,4v24 c0,2.2,1.8,4,4,4h32c2.2,0,4-1.8,4-4V14C44,11.8,42.2,10,40,10z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#F57C00\",\"d\":\"M11,16h20c0.6,0,1,0.4,1,1v16c0,0.6-0.4,1-1,1H11c-0.6,0-1-0.4-1-1V17C10,16.4,10.4,16,11,16z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#942A09\",\"points\":\"18.9,22 12,32 25.8,32\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFF9C4\",\"cx\":\"27\",\"cy\":\"21\",\"r\":\"2\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#BF360C\",\"points\":\"25.2,26 20.4,32 30,32\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#8667C4\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M34,10h6V9.2C40,8.5,39.5,8,38.8,8h-3.6C34.5,8,34,8.5,34,9.2V10z\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"18\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"24\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"38\",\"cy\":\"30\",\"r\":\"2\"}}]}]})(props);\n};\nexport function FcSmartphoneTablet (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M4,39V7c0-2.2,1.8-4,4-4h22c2.2,0,4,1.8,4,4v32c0,2.2-1.8,4-4,4H8C5.8,43,4,41.2,4,39z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BBDEFB\",\"d\":\"M30,6H8C7.4,6,7,6.4,7,7v29c0,0.6,0.4,1,1,1h22c0.6,0,1-0.4,1-1V7C31,6.4,30.6,6,30,6z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"39\",\"fill\":\"#78909C\",\"width\":\"6\",\"height\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E38939\",\"d\":\"M24,41V17c0-2.2,1.8-4,4-4h12c2.2,0,4,1.8,4,4v24c0,2.2-1.8,4-4,4H28C25.8,45,24,43.2,24,41z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFF3E0\",\"d\":\"M40,16H28c-0.6,0-1,0.4-1,1v22c0,0.6,0.4,1,1,1h12c0.6,0,1-0.4,1-1V17C41,16.4,40.6,16,40,16z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#A6642A\",\"cx\":\"34\",\"cy\":\"42.5\",\"r\":\"1.5\"}}]})(props);\n};\nexport function FcSms (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#009688\",\"d\":\"M37,39H11l-6,6V11c0-3.3,2.7-6,6-6h26c3.3,0,6,2.7,6,6v22C43,36.3,40.3,39,37,39z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#fff\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"24\",\"cy\":\"22\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"34\",\"cy\":\"22\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"14\",\"cy\":\"22\",\"r\":\"3\"}}]}]})(props);\n};\nexport function FcSoundRecordingCopyright (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#9C27B0\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"21\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E1BEE7\",\"d\":\"M20.7,27.2v8.4h-3.9V12.9h8.7c1.3,0,2.5,0.2,3.5,0.5c1,0.4,1.9,0.9,2.6,1.5c0.7,0.6,1.2,1.4,1.6,2.3 c0.4,0.9,0.6,1.8,0.6,2.9c0,1.1-0.2,2.1-0.6,3c-0.4,0.9-0.9,1.6-1.6,2.2c-0.7,0.6-1.6,1.1-2.6,1.4c-1,0.3-2.2,0.5-3.5,0.5H20.7z M20.7,24h4.7c0.8,0,1.4-0.1,2-0.3c0.5-0.2,1-0.5,1.4-0.8c0.4-0.3,0.6-0.8,0.8-1.2c0.2-0.5,0.2-1,0.2-1.6c0-0.5-0.1-1-0.2-1.5 c-0.2-0.5-0.4-0.9-0.8-1.3c-0.4-0.4-0.8-0.7-1.4-0.9c-0.5-0.2-1.2-0.3-2-0.3h-4.7V24z\"}}]})(props);\n};\nexport function FcSpeaker (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#81D4FA\",\"d\":\"M28,7.1v2c7.3,1,13,7.3,13,14.9s-5.7,13.9-13,14.9v2c8.4-1,15-8.2,15-16.9S36.4,8.1,28,7.1z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#546E7A\",\"d\":\"M14,32H7c-1.1,0-2-0.9-2-2V18c0-1.1,0.9-2,2-2h7V32z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#78909C\",\"points\":\"26,42 14,32 14,16 26,6\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#03A9F4\",\"d\":\"M28,17.3v2.1c1.8,0.8,3,2.5,3,4.6s-1.2,3.8-3,4.6v2.1c2.9-0.9,5-3.5,5-6.7S30.9,18.2,28,17.3z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#4FC3F7\",\"d\":\"M28,12.2v2c4.6,0.9,8,5,8,9.8s-3.4,8.9-8,9.8v2c5.7-1,10-5.9,10-11.8S33.7,13.1,28,12.2z\"}}]})(props);\n};\nexport function FcSportsMode (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FF9800\",\"cx\":\"28\",\"cy\":\"9\",\"r\":\"5\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#00796B\",\"d\":\"M29,27.3l-9.2-4.1c-1-0.5-1.5,1-2,2c-0.5,1-4.1,7.2-3.8,8.3c0.3,0.9,1.1,1.4,1.9,1.4c0.2,0,0.4,0,0.6-0.1 L28.8,31c0.8-0.2,1.4-1,1.4-1.8C30.2,28.4,29.7,27.6,29,27.3z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#009688\",\"d\":\"M26.8,15.2l-2.2-1c-1.3-0.6-2.9,0-3.5,1.3L9.2,41.1c-0.5,1,0,2.2,1,2.7c0.3,0.1,0.6,0.2,0.9,0.2 c0.8,0,1.5-0.4,1.8-1.1c0,0,9.6-13.3,10.4-14.9s4.9-9.3,4.9-9.3C28.7,17.4,28.2,15.8,26.8,15.2z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF9800\",\"d\":\"M40.5,15.7c-0.7-0.8-2-1-2.8-0.3l-5,4.2l-6.4-3.5c-1.1-0.6-2.6-0.4-3.3,0.9c-0.8,1.3-0.4,2.9,0.8,3.4 l8.3,3.4c0.3,0.1,0.6,0.2,0.9,0.2c0.5,0,0.9-0.2,1.3-0.5l6-5C41.1,17.8,41.2,16.6,40.5,15.7z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF9800\",\"d\":\"M11.7,23.1l3.4-5.1l4.6,0.6l1.5-3.1c0.4-0.9,1.2-1.4,2.1-1.5c-0.1,0-0.2,0-0.2,0h-9c-0.7,0-1.3,0.3-1.7,0.9 l-4,6c-0.6,0.9-0.4,2.2,0.6,2.8C9.2,23.9,9.6,24,10,24C10.6,24,11.3,23.7,11.7,23.1z\"}}]})(props);\n};\nexport function FcStackOfPhotos (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"12.3\",\"y\":\"12.3\",\"transform\":\"matrix(.948 .318 -.318 .948 9.725 -6.994)\",\"fill\":\"#64B5F6\",\"width\":\"28\",\"height\":\"28\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15.6\",\"y\":\"15.4\",\"transform\":\"matrix(.951 .31 -.31 .951 9.176 -6.977)\",\"fill\":\"#1E88E5\",\"width\":\"22\",\"height\":\"20\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"8.1\",\"y\":\"8.1\",\"transform\":\"matrix(.983 .181 -.181 .983 4.385 -3.65)\",\"fill\":\"#90CAF9\",\"width\":\"28\",\"height\":\"28\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"11.3\",\"y\":\"11.2\",\"transform\":\"matrix(.985 .175 -.175 .985 4.048 -3.566)\",\"fill\":\"#42A5F5\",\"width\":\"22\",\"height\":\"20\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"4\",\"fill\":\"#BBDEFB\",\"width\":\"28\",\"height\":\"28\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"7\",\"y\":\"7\",\"fill\":\"#4CAF50\",\"width\":\"22\",\"height\":\"20\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#fff\",\"d\":\"M16,13c0-1.1,0.9-2,2-2s2,0.9,2,2s-2,4-2,4S16,14.1,16,13z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#fff\",\"d\":\"M20,21c0,1.1-0.9,2-2,2s-2-0.9-2-2s2-4,2-4S20,19.9,20,21z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#fff\",\"d\":\"M13.5,16.7c-1-0.6-1.3-1.8-0.7-2.7c0.6-1,1.8-1.3,2.7-0.7c1,0.6,2.5,3.7,2.5,3.7S14.5,17.3,13.5,16.7z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#fff\",\"d\":\"M22.5,17.3c1,0.6,1.3,1.8,0.7,2.7c-0.6,1-1.8,1.3-2.7,0.7C19.5,20.2,18,17,18,17S21.5,16.7,22.5,17.3z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#fff\",\"d\":\"M22.5,16.7c1-0.6,1.3-1.8,0.7-2.7c-0.6-1-1.8-1.3-2.7-0.7C19.5,13.8,18,17,18,17S21.5,17.3,22.5,16.7z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#fff\",\"d\":\"M13.5,17.3c-1,0.6-1.3,1.8-0.7,2.7c0.6,1,1.8,1.3,2.7,0.7c1-0.6,2.5-3.7,2.5-3.7S14.5,16.7,13.5,17.3z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFC107\",\"cx\":\"18\",\"cy\":\"17\",\"r\":\"2\"}}]})(props);\n};\nexport function FcStart (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#F44336\",\"d\":\"M38,42H10c-2.2,0-4-1.8-4-4V10c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v28C42,40.2,40.2,42,38,42z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#fff\",\"points\":\"31,24 20,16 20,32\"}}]})(props);\n};\nexport function FcStatistics (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"23\",\"y\":\"5\",\"width\":\"2\",\"height\":\"36\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20.5\",\"y\":\"31.4\",\"transform\":\"matrix(.707 .707 -.707 .707 33.523 -3.921)\",\"width\":\"2\",\"height\":\"14.2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"25.5\",\"y\":\"31.4\",\"transform\":\"matrix(-.707 .707 -.707 -.707 72.487 46.995)\",\"width\":\"2\",\"height\":\"14.2\"}}]},{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"8\",\"fill\":\"#CFD8DC\",\"width\":\"40\",\"height\":\"28\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#607D8B\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"7\",\"width\":\"42\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"3\",\"y\":\"35\",\"width\":\"42\",\"height\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"31.5\",\"cy\":\"43.5\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"16.5\",\"cy\":\"43.5\",\"r\":\"1.5\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#C51162\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"31.9,18.9 26,24.9 20,18.9 11.9,26.9 14.1,29.1 20,23.1 26,29.1 34.1,21.1\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"36,24 29,17 36,17\"}}]}]})(props);\n};\nexport function FcSteam (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFFFFF\",\"d\":\"M42,38c0,2.209-1.791,4-4,4H10c-2.209,0-4-1.791-4-4V10c0-2.209,1.791-4,4-4h28c2.209,0,4,1.791,4,4V38z\"}},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M18.459,33.645c-0.288,0-0.56-0.057-0.822-0.141l-0.005,0.02l-3.67-1.062\\r\\n\\t\\tc0.644,1.878,2.406,3.237,4.5,3.237c2.641,0,4.776-2.136,4.776-4.776s-2.135-4.777-4.776-4.777c-1.141,0-2.175,0.418-2.998,1.087\\r\\n\\t\\tL19,28.255c0.029,0.007,0.055,0.018,0.084,0.024l0.049,0.016v0.002c1.177,0.301,2.049,1.359,2.049,2.626\\r\\n\\t\\tC21.184,32.424,19.964,33.645,18.459,33.645z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M30.923,24.299c3.222,0,5.837-2.615,5.837-5.838c0-3.222-2.615-5.837-5.837-5.837\\r\\n\\t\\tc-3.221,0-5.837,2.615-5.837,5.837C25.086,21.684,27.702,24.299,30.923,24.299z M30.92,14.409c2.24,0,4.056,1.813,4.056,4.052\\r\\n\\t\\tc0,2.241-1.815,4.053-4.056,4.053c-2.236,0-4.049-1.812-4.049-4.053C26.871,16.223,28.684,14.409,30.92,14.409z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M38,6h-2.75h-22.5H10c-2.209,0-4,1.791-4,4v2.75v4.236v7.509l7.027,2.033\\r\\n\\t\\tc1.287-1.59,3.229-2.626,5.434-2.626c0.07,0,0.135,0.02,0.204,0.021l3.876-5.355c0-0.035-0.005-0.072-0.005-0.105\\r\\n\\t\\tc0-4.63,3.755-8.388,8.387-8.388c4.633,0,8.386,3.757,8.386,8.386c0,4.633-3.753,8.387-8.386,8.387\\r\\n\\t\\tc-0.044,0-0.087-0.006-0.132-0.007l-5.33,3.871c0.002,0.07,0.021,0.14,0.021,0.211c0,3.878-3.142,7.021-7.021,7.021\\r\\n\\t\\tc-3.593,0-6.52-2.707-6.937-6.188L6,30.158v2.583v2.509V38c0,2.209,1.791,4,4,4h2.75h22.5H38c2.209,0,4-1.791,4-4v-2.75v-22.5V10\\r\\n\\t\\tC42,7.791,40.209,6,38,6z\"}}]}]})(props);\n};\nexport function FcStumbleupon (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E64A19\",\"d\":\"M24.001,5c-10.494,0-19,8.506-19,19c0,10.493,8.506,19,19,19c10.493,0,19-8.507,19-19\\r\\n\\tC43.001,13.506,34.494,5,24.001,5z\"}},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFFFFF\",\"d\":\"M24.001,19C23.998,19,24.004,19,24.001,19c-0.062-0.004-1,0-1,1v7.876C22.916,29.888,21.504,33,17.959,33\\r\\n\\t\\tc-3.607,0-4.958-3.065-4.958-4.958V24h4v4c0.038,0.709,0.629,1,1,1c0.665,0,0.972-0.361,1-1v-8.124c0-2.01,1.332-5,5-5\\r\\n\\t\\tc0.045,0,0.086,0.006,0.131,0.007c0,0,4.869-0.009,4.869,5.117c0,1.104-0.896,1.876-2,1.876s-2-0.771-2-1.876\\r\\n\\t\\tC25.001,19.124,24.041,19.003,24.001,19z M35.001,27.876c0,2.01-1.331,5.124-5,5.124s-5-3.114-5-5.124v-3.439\\r\\n\\t\\tc0.614,0.272,1.285,0.439,2,0.439c0.712,0,1.386-0.154,2-0.424V28c0.038,1,0.663,1,1,1c0.247,0,1,0,1-1v-4h4V27.876z\"}}]}]})(props);\n};\nexport function FcSupport (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M44.7,11L36,19.6c0,0-2.6,0-5.2-2.6s-2.6-5.2-2.6-5.2l8.7-8.7c-4.9-1.2-10.8,0.4-14.4,4 c-5.4,5.4-0.6,12.3-2,13.7C12.9,28.7,5.1,34.7,4.9,35c-2.3,2.3-2.4,6-0.2,8.2c2.2,2.2,5.9,2.1,8.2-0.2c0.3-0.3,6.7-8.4,14.2-15.9 c1.4-1.4,8,3.7,13.6-1.8C44.2,21.7,45.9,15.9,44.7,11z M9.4,41.1c-1.4,0-2.5-1.1-2.5-2.5C6.9,37.1,8,36,9.4,36 c1.4,0,2.5,1.1,2.5,2.5C11.9,39.9,10.8,41.1,9.4,41.1z\"}}]})(props);\n};\nexport function FcSurvey (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M36,4H26c0,1.1-0.9,2-2,2s-2-0.9-2-2H12C9.8,4,8,5.8,8,8v32c0,2.2,1.8,4,4,4h24c2.2,0,4-1.8,4-4V8 C40,5.8,38.2,4,36,4z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#fff\",\"d\":\"M36,41H12c-0.6,0-1-0.4-1-1V8c0-0.6,0.4-1,1-1h24c0.6,0,1,0.4,1,1v32C37,40.6,36.6,41,36,41z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#90A4AE\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M26,4c0,1.1-0.9,2-2,2s-2-0.9-2-2h-7v4c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V4H26z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M24,0c-2.2,0-4,1.8-4,4s1.8,4,4,4s4-1.8,4-4S26.2,0,24,0z M24,6c-1.1,0-2-0.9-2-2s0.9-2,2-2s2,0.9,2,2 S25.1,6,24,6z\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#CFD8DC\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"20\",\"width\":\"12\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"19\",\"width\":\"4\",\"height\":\"4\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#03A9F4\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"29\",\"width\":\"12\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"15\",\"y\":\"28\",\"width\":\"4\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcSwitchCamera (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#5E35B1\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M33.9,12.1H14.2L17.6,7c0.4-0.6,1-0.9,1.7-0.9h9.6c0.7,0,1.3,0.3,1.7,0.9L33.9,12.1z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M14,11H8V9.2C8,8.5,8.5,8,9.2,8h3.6C13.5,8,14,8.5,14,9.2V11z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M40,42H8c-2.2,0-4-1.8-4-4V14c0-2.2,1.8-4,4-4h32c2.2,0,4,1.8,4,4v24C44,40.2,42.2,42,40,42z\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E8EAF6\",\"d\":\"M34,25c0-5.5-4.5-10-10-10c-2.4,0-4.6,0.8-6.3,2.2l1.2,1.6c1.4-1.1,3.1-1.8,5.1-1.8c4.4,0,8,3.6,8,8h-3.5 l4.5,5.6l4.5-5.6H34z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E8EAF6\",\"d\":\"M29.1,31.2C27.7,32.3,25.9,33,24,33c-4.4,0-8-3.6-8-8h3.5L15,19.4L10.5,25H14c0,5.5,4.5,10,10,10 c2.4,0,4.6-0.8,6.3-2.2L29.1,31.2z\"}}]})(props);\n};\nexport function FcSynchronize (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF6F00\",\"d\":\"M38.7,11.9l-3.1,2.5c2.2,2.7,3.4,6.1,3.4,9.5c0,8.3-6.7,15-15,15c-0.9,0-1.9-0.1-2.8-0.3l-0.7,3.9 c1.2,0.2,2.4,0.3,3.5,0.3c10.5,0,19-8.5,19-19C43,19.6,41.5,15.3,38.7,11.9z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FF6F02\",\"points\":\"31,8 42.9,9.6 33.1,19.4\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF6F00\",\"d\":\"M24,5C13.5,5,5,13.5,5,24c0,4.6,1.6,9,4.6,12.4l3-2.6C10.3,31.1,9,27.6,9,24c0-8.3,6.7-15,15-15 c0.9,0,1.9,0.1,2.8,0.3l0.7-3.9C26.4,5.1,25.2,5,24,5z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FF6F02\",\"points\":\"17,40 5.1,38.4 14.9,28.6\"}}]})(props);\n};\nexport function FcTabletAndroid (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M8,41V7c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v34c0,2.2-1.8,4-4,4H12C9.8,45,8,43.2,8,41z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BBDEFB\",\"d\":\"M36,6H12c-0.6,0-1,0.4-1,1v31c0,0.6,0.4,1,1,1h24c0.6,0,1-0.4,1-1V7C37,6.4,36.6,6,36,6z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"41\",\"fill\":\"#78909C\",\"width\":\"6\",\"height\":\"2\"}}]})(props);\n};\nexport function FcTemplate (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"4\",\"y\":\"7\",\"fill\":\"#BBDEFB\",\"width\":\"40\",\"height\":\"34\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"12\",\"fill\":\"#3F51B5\",\"width\":\"30\",\"height\":\"5\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"21\",\"width\":\"13\",\"height\":\"16\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"26\",\"y\":\"21\",\"width\":\"13\",\"height\":\"16\"}}]}]})(props);\n};\nexport function FcTimeline (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M42,29H20.8c-0.5,0-1-0.2-1.4-0.6l-3.7-3.7c-0.4-0.4-0.4-1,0-1.4l3.7-3.7c0.4-0.4,0.9-0.6,1.4-0.6H42 c0.6,0,1,0.4,1,1v8C43,28.6,42.6,29,42,29z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"6\",\"fill\":\"#CFD8DC\",\"width\":\"2\",\"height\":\"36\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#90A4AE\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"10\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"24\",\"r\":\"3\"}},{\"tag\":\"circle\",\"attr\":{\"cx\":\"10\",\"cy\":\"38\",\"r\":\"3\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#448AFF\",\"d\":\"M34,43H20.8c-0.5,0-1-0.2-1.4-0.6l-3.7-3.7c-0.4-0.4-0.4-1,0-1.4l3.7-3.7c0.4-0.4,0.9-0.6,1.4-0.6H34 c0.6,0,1,0.4,1,1v8C35,42.6,34.6,43,34,43z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#00BCD4\",\"d\":\"M35,15H20.8c-0.5,0-1-0.2-1.4-0.6l-3.7-3.7c-0.4-0.4-0.4-1,0-1.4l3.7-3.7C19.8,5.2,20.3,5,20.8,5H35 c0.6,0,1,0.4,1,1v8C36,14.6,35.6,15,35,15z\"}}]})(props);\n};\nexport function FcTodoList (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"17.8,18.1 10.4,25.4 6.2,21.3 4,23.5 10.4,29.9 20,20.3\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"17.8,5.1 10.4,12.4 6.2,8.3 4,10.5 10.4,16.9 20,7.3\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"17.8,31.1 10.4,38.4 6.2,34.3 4,36.5 10.4,42.9 20,33.3\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#90CAF9\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"24\",\"y\":\"22\",\"width\":\"20\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"24\",\"y\":\"9\",\"width\":\"20\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"24\",\"y\":\"35\",\"width\":\"20\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcTouchscreenSmartphone (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#E38939\",\"d\":\"M12,40V8c0-2.2,1.8-4,4-4h16c2.2,0,4,1.8,4,4v32c0,2.2-1.8,4-4,4H16C13.8,44,12,42.2,12,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFF3E0\",\"d\":\"M32,7H16c-0.6,0-1,0.4-1,1v29c0,0.6,0.4,1,1,1h16c0.6,0,1-0.4,1-1V8C33,7.4,32.6,7,32,7z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#A6642A\",\"cx\":\"24\",\"cy\":\"41\",\"r\":\"1.5\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#E91E63\",\"cx\":\"24\",\"cy\":\"23\",\"r\":\"2\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"none\",\"stroke\":\"#F48FB1\",\"strokeWidth\":\"2\",\"strokeMiterlimit\":\"10\",\"cx\":\"24\",\"cy\":\"23\",\"r\":\"4\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"none\",\"stroke\":\"#F8BBD0\",\"strokeMiterlimit\":\"10\",\"cx\":\"24\",\"cy\":\"23\",\"r\":\"6.5\"}}]})(props);\n};\nexport function FcTrademark (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"circle\",\"attr\":{\"fill\":\"#9C27B0\",\"cx\":\"24\",\"cy\":\"24\",\"r\":\"21\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#E1BEE7\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M20.6,18.5h-4.2v14.2h-3.5V18.5H8.7v-2.9h11.9V18.5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M27.1,15.6L30.3,28l3.2-12.4h4.5v17.1h-3.5v-4.6l0.3-7.1l-3.4,11.8h-2.4L25.7,21l0.3,7.1v4.6h-3.5V15.6 H27.1z\"}}]}]})(props);\n};\nexport function FcTreeStructure (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#90CAF9\",\"points\":\"36.9,13.8 35.1,10.2 7.5,24 35.1,37.8 36.9,34.2 16.5,24\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"18\",\"fill\":\"#D81B60\",\"width\":\"12\",\"height\":\"12\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"30\",\"y\":\"6\",\"width\":\"12\",\"height\":\"12\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"30\",\"y\":\"30\",\"width\":\"12\",\"height\":\"12\"}}]}]})(props);\n};\nexport function FcTwoSmartphones (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M6,36V8c0-2.2,1.8-4,4-4h14c2.2,0,4,1.8,4,4v28c0,2.2-1.8,4-4,4H10C7.8,40,6,38.2,6,36z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#BBDEFB\",\"d\":\"M24,7H10C9.4,7,9,7.4,9,8v25c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1V8C25,7.4,24.6,7,24,7z\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"14\",\"y\":\"36\",\"fill\":\"#78909C\",\"width\":\"6\",\"height\":\"2\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E38939\",\"d\":\"M20,40V12c0-2.2,1.8-4,4-4h14c2.2,0,4,1.8,4,4v28c0,2.2-1.8,4-4,4H24C21.8,44,20,42.2,20,40z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFF3E0\",\"d\":\"M38,11H24c-0.6,0-1,0.4-1,1v25c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1V12C39,11.4,38.6,11,38,11z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#A6642A\",\"cx\":\"31\",\"cy\":\"41\",\"r\":\"1.5\"}}]})(props);\n};\nexport function FcUndo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#00BCD4\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"5,18 19,6.3 19,29.7\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M28,14H16v8h12c2.8,0,5,2.2,5,5s-2.2,5-5,5h-3v8h3c7.2,0,13-5.8,13-13S35.2,14,28,14z\"}}]}]})(props);\n};\nexport function FcUnlock (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#424242\",\"d\":\"M24,4c-5.5,0-10,4.5-10,10v4h4v-4c0-3.3,2.7-6,6-6s6,2.7,6,6h4C34,8.5,29.5,4,24,4z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FB8C00\",\"d\":\"M36,44H12c-2.2,0-4-1.8-4-4V22c0-2.2,1.8-4,4-4h24c2.2,0,4,1.8,4,4v18C40,42.2,38.2,44,36,44z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#C76E00\",\"cx\":\"24\",\"cy\":\"31\",\"r\":\"3\"}}]})(props);\n};\nexport function FcUpLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"4,19 18,30.7 18,7.3\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M42,27v13h-8V27c0-2.2-1.8-4-4-4H13v-8h17C36.6,15,42,20.4,42,27z\"}}]})(props);\n};\nexport function FcUpRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"44,19 30,30.7 30,7.3\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M6,27v13h8V27c0-2.2,1.8-4,4-4h17v-8H18C11.4,15,6,20.4,6,27z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#3F51B5\",\"points\":\"44,19 30,30.7 30,7.3\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M6,27v13h8V27c0-2.2,1.8-4,4-4h17v-8H18C11.4,15,6,20.4,6,27z\"}}]})(props);\n};\nexport function FcUp (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#3F51B5\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"24,4 35.7,18 12.3,18\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"15\",\"width\":\"8\",\"height\":\"27\"}}]}]})(props);\n};\nexport function FcUpload (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#009688\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"points\":\"24,10.9 35,24 13,24\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"40\",\"width\":\"8\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"34\",\"width\":\"8\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"21\",\"width\":\"8\",\"height\":\"11\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"6\",\"y\":\"4\",\"width\":\"36\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcUsb (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#1565C0\",\"d\":\"M38.701,24.355h-2.189l-0.467,2.265c0,0,2.277,0,2.51,0c0.233,0,1.545-0.167,1.545-1.267\\r\\n\\tC40.1,24.266,38.701,24.355,38.701,24.355z M39.521,20.339h-2.15l-0.374,1.796c0,0,2.161,0,2.337,0c0.188,0,1.113-0.146,1.113-1.006\\r\\n\\tC40.447,20.271,39.521,20.339,39.521,20.339z M44.064,23.109c0,0,1.436-0.743,1.436-3.093c0-3.715-4.377-3.516-4.377-3.516h-2.865\\r\\n\\tl0.674-3c0,0-12.4,0-20.971,0c-9.344,0-12.158,6.774-12.158,6.774L5.736,20.5H2.547l-1.047,6h3.37l0.001,0.143\\r\\n\\tc0,0-0.285,6.857,10.463,6.857c10.747,0,19.042,0,19.042,0l0.679-3c0.84,0,2.2,0,4.389,0c4.729,0,5.591-3.354,5.591-4.9\\r\\n\\tC45.032,23.838,44.064,23.109,44.064,23.109z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFFFFF\",\"d\":\"M38.701,24.355h-2.189l-0.467,2.265c0,0,2.277,0,2.51,0c0.233,0,1.545-0.167,1.545-1.267\\r\\n\\tC40.1,24.266,38.701,24.355,38.701,24.355z M39.521,20.339h-2.15l-0.374,1.796c0,0,2.161,0,2.337,0c0.188,0,1.113-0.146,1.113-1.006\\r\\n\\tC40.447,20.271,39.521,20.339,39.521,20.339z M14.022,29.5c-5.306,0-5.306-3.624-5.238-3.986c0.069-0.363,1.789-8.014,1.789-8.014\\r\\n\\th3.84l-1.358,6.354c0,0-0.971,2.728,1.251,2.728c2.081,0,2.336-2.535,2.336-2.535l1.465-6.543h3.839l-1.582,6.979\\r\\n\\tC20.365,24.48,20.258,29.5,14.022,29.5z M26.098,29.521c-2.674,0-4.958-1.262-4.856-4.14h3.438c0,0.576,0.086,1.627,1.633,1.627\\r\\n\\tc0.627,0,1.688-0.266,1.688-1.133c0-1.631-5.597-0.785-5.597-4.57c0-2.063,1.899-3.785,4.989-3.785c4.976,0,4.613,3.749,4.613,3.749\\r\\n\\th-3.369c0-1.044-0.664-1.204-1.463-1.204c-0.8,0-1.372,0.343-1.372,0.944c0,1.471,5.634,0.456,5.634,4.531\\r\\n\\tC31.436,27.305,30.012,29.521,26.098,29.521z M39.366,29.5c-0.419,0-7.515,0-7.515,0l2.601-12c0,0,5.444,0,6.556,0\\r\\n\\tc1.113,0,3.43,0.234,3.43,2.542c0,2.602-2.227,3.013-2.227,3.013s1.764,0.407,1.764,2.473C43.975,29.457,39.775,29.5,39.366,29.5z\"}}]})(props);\n};\nexport function FcVideoCall (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#4CAF50\",\"d\":\"M8,12h22c2.2,0,4,1.8,4,4v16c0,2.2-1.8,4-4,4H8c-2.2,0-4-1.8-4-4V16C4,13.8,5.8,12,8,12z\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#388E3C\",\"points\":\"44,35 34,29 34,19 44,13\"}}]})(props);\n};\nexport function FcVideoFile (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#90CAF9\",\"points\":\"40,45 8,45 8,3 30,3 40,13\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#E1F5FE\",\"points\":\"38.5,14 29,14 29,4.5\"}},{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#1976D2\",\"points\":\"30,28 20,22 20,34\"}}]})(props);\n};\nexport function FcVideoProjector (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{\"fill\":\"#546E7A\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"5\",\"y\":\"34\",\"width\":\"6\",\"height\":\"3\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"37\",\"y\":\"34\",\"width\":\"6\",\"height\":\"3\"}}]},{\"tag\":\"path\",\"attr\":{\"fill\":\"#78909C\",\"d\":\"M44,35H4c-2.2,0-4-1.8-4-4V17c0-2.2,1.8-4,4-4h40c2.2,0,4,1.8,4,4v14C48,33.2,46.2,35,44,35z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#37474F\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"5\",\"y\":\"19\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"5\",\"y\":\"23\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"5\",\"y\":\"27\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"19\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"23\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"9\",\"y\":\"27\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"19\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"23\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"27\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"17\",\"y\":\"19\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"17\",\"y\":\"23\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"17\",\"y\":\"27\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"19\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"23\",\"width\":\"2\",\"height\":\"2\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"27\",\"width\":\"2\",\"height\":\"2\"}}]},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#37474F\",\"cx\":\"37\",\"cy\":\"24\",\"r\":\"8\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#a0f\",\"cx\":\"37\",\"cy\":\"24\",\"r\":\"6\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#EA80FC\",\"d\":\"M40.7,21.7c-1-1.1-2.3-1.7-3.7-1.7s-2.8,0.6-3.7,1.7c-0.4,0.4-0.3,1,0.1,1.4c0.4,0.4,1,0.3,1.4-0.1 c1.2-1.3,3.3-1.3,4.5,0c0.2,0.2,0.5,0.3,0.7,0.3c0.2,0,0.5-0.1,0.7-0.3C41.1,22.7,41.1,22.1,40.7,21.7z\"}}]})(props);\n};\nexport function FcViewDetails (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"7\",\"y\":\"4\",\"fill\":\"#BBDEFB\",\"width\":\"34\",\"height\":\"40\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#2196F3\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"26\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"18\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"34\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"13\",\"y\":\"10\",\"width\":\"4\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"26\",\"width\":\"14\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"18\",\"width\":\"14\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"34\",\"width\":\"14\",\"height\":\"4\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"21\",\"y\":\"10\",\"width\":\"14\",\"height\":\"4\"}}]}]})(props);\n};\nexport function FcVip (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#880E4F\",\"d\":\"M38,43H10c-2.2,0-4-1.8-4-4V11c0-2.2,1.8-4,4-4h28c2.2,0,4,1.8,4,4v28C42,41.2,40.2,43,38,43z\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#FFD54F\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M15.9,28l2.1-9.1h2.8l-3.6,12.6h-2.6L11,18.9h2.8L15.9,28z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M25.6,31.5h-2.5V18.9h2.5V31.5z\"}},{\"tag\":\"path\",\"attr\":{\"d\":\"M31.2,27.1v4.4h-2.5V18.9h4.3c3.7,0,4.1,3.4,4.1,4.2c0,1.2-0.5,4-4.1,4H31.2z M31.2,24.9h1.7 c1.3,0,1.5-1.1,1.5-1.9c0-1.6-0.9-2.1-1.5-2.1h-1.7V24.9z\"}}]}]})(props);\n};\nexport function FcVlc (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#F57C00\",\"d\":\"M36.258,28.837c0,0-0.11-0.837-1.257-0.837c-0.216,0-2.392,0-3.719,0c0.798,2.671,1.497,5.135,1.497,5.279\\r\\n\\tc0,2.387-3.401,3.393-8.917,3.393c-5.515,0-8.651-0.94-8.651-3.326c0-0.167,0.998-2.692,1.791-5.346c-1.591,0-3.863,0-4.063,0\\r\\n\\tc-0.806,0-0.937,0.749-0.937,0.749L8.159,40.986L8.815,42h30.652l0.376-1.014L36.258,28.837z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#E0E0E0\",\"d\":\"M24.001,6c-1.029,0-1.864,0.179-1.864,0.398c-0.492,1.483-8.122,26.143-8.122,26.774\\r\\n\\tc0,2.388,4.471,3.827,9.985,3.827s9.986-1.439,9.986-3.827c0-0.549-7.614-25.268-8.122-26.774C25.865,6.179,25.031,6,24.001,6\\r\\n\\tL24.001,6z\"}},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF9800\",\"d\":\"M33.196,30.447C32.032,32.232,28.341,34,24.046,34c-4.34,0-8.156-1.696-9.281-3.51\\r\\n\\t\\tc-0.499,1.483-0.892,2.647-0.892,3.28c0,2.386,4.533,4.229,10.128,4.229c5.595,0,10.131-1.844,10.131-4.229\\r\\n\\t\\tC34.132,33.222,33.713,31.955,33.196,30.447z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF9800\",\"d\":\"M31.387,24.314l-2.074-6.794c0,0-1.857,1.479-5.311,1.479c-3.453,0-5.316-1.479-5.316-1.479l-2.081,6.806\\r\\n\\t\\tc0,0,2.068,2.674,7.397,2.674C29.375,27,31.387,24.314,31.387,24.314z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FF9800\",\"d\":\"M27.241,10.809l-1.376-4.41c0,0-0.083-0.398-1.864-0.398c-1.844,0-1.864,0.398-1.864,0.398l-1.376,4.407\\r\\n\\t\\tc0,0,0.885,1.194,3.239,1.194C26.355,12,27.241,10.809,27.241,10.809z\"}}]}]})(props);\n};\nexport function FcVoicePresentation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#2196F3\",\"d\":\"M40,22h-8l-4,4V12c0-2.2,1.8-4,4-4h8c2.2,0,4,1.8,4,4v6C44,20.2,42.2,22,40,22z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#FFA726\",\"cx\":\"17\",\"cy\":\"19\",\"r\":\"8\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#607D8B\",\"d\":\"M30,36.7c0,0-3.6-6.7-13-6.7S4,36.7,4,36.7V40h26V36.7z\"}}]})(props);\n};\nexport function FcVoicemail (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#4CAF50\",\"d\":\"M48,24c0-6.1-4.9-11-11-11s-11,4.9-11,11c0,2.7,0.9,5.1,2.5,7h-9c1.6-1.9,2.5-4.3,2.5-7c0-6.1-4.9-11-11-11 S0,17.9,0,24s4.9,11,11,11h27v-0.1C43.6,34.4,48,29.7,48,24z M4,24c0-3.9,3.1-7,7-7s7,3.1,7,7s-3.1,7-7,7S4,27.9,4,24z M37,31 c-3.9,0-7-3.1-7-7s3.1-7,7-7c3.9,0,7,3.1,7,7S40.9,31,37,31z\"}}]})(props);\n};\nexport function FcWebcam (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M36.5,44H11.5c-1.1,0-1.8-1.2-1.3-2.2L13,37h22l2.7,4.8C38.3,42.8,37.6,44,36.5,44z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#78909C\",\"cx\":\"24\",\"cy\":\"23\",\"r\":\"18\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#455A64\",\"d\":\"M24,35c-6.6,0-12-5.4-12-12c0-6.6,5.4-12,12-12s12,5.4,12,12C36,29.6,30.6,35,24,35z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#42A5F5\",\"cx\":\"24\",\"cy\":\"23\",\"r\":\"9\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#90CAF9\",\"d\":\"M28.8,20c-1.2-1.4-3-2.2-4.8-2.2s-3.6,0.8-4.8,2.2c-0.5,0.5-0.4,1.3,0.1,1.8c0.5,0.5,1.3,0.4,1.8-0.1 c1.5-1.7,4.3-1.7,5.8,0c0.3,0.3,0.6,0.4,1,0.4c0.3,0,0.6-0.1,0.9-0.3C29.2,21.4,29.3,20.5,28.8,20z\"}}]})(props);\n};\nexport function FcWiFiLogo (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#3F51B5\",\"d\":\"M46,26.48c0,4.527-3.268,7.52-7.3,7.52H9.299C5.269,34,2,30.634,2,26.48V21.52C2,17.366,5.269,14,9.299,14\\r\\n\\t\\tH38.7c4.032,0,7.3,3.366,7.3,7.52V26.48z\"}},{\"tag\":\"ellipse\",\"attr\":{\"fill\":\"#3F51B5\",\"cx\":\"24\",\"cy\":\"24\",\"rx\":\"14.902\",\"ry\":\"15\"}}]},{\"tag\":\"g\",\"attr\":{},\"child\":[{\"tag\":\"polygon\",\"attr\":{\"fill\":\"#FFFFFF\",\"points\":\"17,19 14.264,19 13.427,24.859 12.388,19.028 9.93,19.028 8.864,24.859 8.054,19.028 5.266,19.028 \\r\\n\\t\\t7.597,29 10.056,29 11.12,22.854 12.209,29 14.693,29 \\t\"}},{\"tag\":\"rect\",\"attr\":{\"x\":\"19\",\"y\":\"22\",\"fill\":\"#FFFFFF\",\"width\":\"2.508\",\"height\":\"7\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFFFFF\",\"d\":\"M21.5,19.747C21.5,20.44,20.94,21,20.25,21S19,20.44,19,19.747c0-0.696,0.56-1.258,1.25-1.258\\r\\n\\t\\tS21.5,19.051,21.5,19.747z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#FFFFFF\",\"d\":\"M38.561,16c-4.818,0-7.979,0-7.979,0S25,16.193,25,21.914v4.336c0,0,0.101,2.941-3,5.75h16.785\\r\\n\\t\\tc0,0,5.215,0,5.215-5.553c0-4.879,0-4.879,0-4.879S43.772,16,38.561,16z M37.339,21.369h-5.651v2.236h5.094v2.344h-5.094V29H29V19\\r\\n\\t\\th8.339V21.369z M40.25,18.489c0.689,0,1.25,0.562,1.25,1.258C41.5,20.44,40.939,21,40.25,21S39,20.44,39,19.747\\r\\n\\t\\tC39,19.051,39.561,18.489,40.25,18.489z M41.508,29H39v-7h2.508V29z\"}}]}]})(props);\n};\nexport function FcWikipedia (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1.1\",\"x\":\"0px\",\"y\":\"0px\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fill\":\"#CFD8DC\",\"d\":\"M6,10c0-2.209,1.791-4,4-4h28c2.209,0,4,1.791,4,4v28c0,2.209-1.791,4-4,4H10c-2.209,0-4-1.791-4-4V10z\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#37474F\",\"d\":\"M39,17.271c0,0.191-0.148,0.349-0.334,0.349h-1.799l-8.164,18.179c-0.052,0.12-0.17,0.2-0.297,0.202h-0.004\\r\\n\\tc-0.127,0-0.242-0.074-0.298-0.193l-3.874-8.039l-4.18,8.049c-0.06,0.116-0.167,0.181-0.303,0.184\\r\\n\\tc-0.125-0.004-0.239-0.082-0.292-0.199l-8.252-18.182h-1.87C9.149,17.619,9,17.462,9,17.271V16.35C9,16.155,9.149,16,9.333,16h6.657\\r\\n\\tc0.184,0,0.333,0.155,0.333,0.35v0.921c0,0.191-0.149,0.349-0.333,0.349h-1.433l5.696,13.748l2.964-5.793l-3.757-7.953h-0.904\\r\\n\\tc-0.184,0-0.333-0.157-0.333-0.35V16.35c0-0.191,0.149-0.348,0.333-0.348h4.924c0.184,0,0.333,0.156,0.333,0.348v0.922\\r\\n\\tc0,0.192-0.149,0.35-0.333,0.35h-0.867l2.162,4.948l2.572-4.948H25.77c-0.187,0-0.334-0.157-0.334-0.35V16.35\\r\\n\\tc0-0.191,0.147-0.348,0.334-0.348h4.784c0.187,0,0.333,0.156,0.333,0.348v0.922c0,0.192-0.146,0.35-0.333,0.35h-1.05l-3.757,7.141\\r\\n\\tl3.063,6.584l5.905-13.725h-1.872c-0.184,0-0.334-0.157-0.334-0.35V16.35c0-0.191,0.15-0.348,0.334-0.348h5.822\\r\\n\\tc0.186,0,0.334,0.156,0.334,0.348V17.271z\"}}]})(props);\n};\nexport function FcWorkflow (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"version\":\"1\",\"viewBox\":\"0 0 48 48\",\"enableBackground\":\"new 0 0 48 48\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"7\",\"y\":\"31\",\"fill\":\"#00BCD4\",\"width\":\"10\",\"height\":\"10\"}},{\"tag\":\"path\",\"attr\":{\"fill\":\"#00BCD4\",\"d\":\"M35.3,19.3l-5.6-5.6c-0.4-0.4-0.4-1,0-1.4l5.6-5.6c0.4-0.4,1-0.4,1.4,0l5.6,5.6c0.4,0.4,0.4,1,0,1.4 l-5.6,5.6C36.3,19.7,35.7,19.7,35.3,19.3z\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#3F51B5\",\"cx\":\"12\",\"cy\":\"13\",\"r\":\"6\"}},{\"tag\":\"circle\",\"attr\":{\"fill\":\"#448AFF\",\"cx\":\"36\",\"cy\":\"36\",\"r\":\"6\"}},{\"tag\":\"g\",\"attr\":{\"fill\":\"#90A4AE\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"11\",\"y\":\"24\",\"width\":\"2\",\"height\":\"5\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"12,21 9,25 15,25\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#90A4AE\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"20\",\"y\":\"12\",\"width\":\"5\",\"height\":\"2\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"28,13 24,10 24,16\"}}]},{\"tag\":\"g\",\"attr\":{\"fill\":\"#90A4AE\"},\"child\":[{\"tag\":\"rect\",\"attr\":{\"x\":\"35\",\"y\":\"21\",\"width\":\"2\",\"height\":\"5\"}},{\"tag\":\"polygon\",\"attr\":{\"points\":\"36,29 39,25 33,25\"}}]}]})(props);\n};\n","import React, { PureComponent } from 'react';\nimport { Zap } from 'react-feather';\n\nimport Button from './Button';\nimport Input from './Input';\nimport { LoadingDot } from './shared/Basic';\nimport SwitchThemed from './SwitchThemed';\nimport ToggleSwitch from './ToggleSwitch';\n\nconst noop = () => {\n /* empty */\n};\n\nconst paneStyle = {\n padding: '20px 0',\n};\n\nconst optionsRule = [\n {\n label: 'Global',\n value: 'Global',\n },\n {\n label: 'Rule',\n value: 'Rule',\n },\n {\n label: 'Direct',\n value: 'Direct',\n },\n];\n\nconst Pane = ({ children, style }) => (\n
{children}
\n);\n\nfunction useToggle(initialState = false) {\n const [onoff, setonoff] = React.useState(initialState);\n const handleChange = React.useCallback(() => {\n setonoff((x) => !x);\n }, []);\n return [onoff, handleChange];\n}\n\nfunction SwitchExample() {\n const [checked, handleChange] = useToggle(false);\n return ;\n}\n\nclass StyleGuide extends PureComponent {\n render() {\n return (\n
\n \n \n \n \n \n \n \n \n \n \n
\n );\n }\n}\n\nexport default StyleGuide;\n","import './Root.css';\n\nimport React, { lazy, Suspense } from 'react';\nimport { HashRouter as Router, Route, Routes } from 'react-router-dom';\nimport { RecoilRoot } from 'recoil';\nimport { About } from 'src/components/about/About';\n\nimport { actions, initialState } from '../store';\nimport APIDiscovery from './APIDiscovery';\nimport ErrorBoundary from './ErrorBoundary';\nimport Home from './Home';\nimport Loading2 from './Loading2';\nimport s0 from './Root.module.css';\nimport SideBar from './SideBar';\nimport StateProvider from './StateProvider';\nimport StyleGuide from './StyleGuide';\n\nconst Connections = lazy(() =>\n import(\n /* webpackChunkName: \"conns\" */\n /* webpackPrefetch: true */\n './Connections'\n )\n);\nconst Config = lazy(() =>\n import(\n /* webpackChunkName: \"config\" */\n /* webpackPrefetch: true */\n './Config'\n )\n);\nconst Logs = lazy(() =>\n import(\n /* webpackChunkName: \"logs\" */\n /* webpackPrefetch: true */\n './Logs'\n )\n);\nconst Proxies = lazy(() =>\n import(\n /* webpackChunkName: \"proxies\" */\n /* webpackPrefetch: true */\n './proxies/Proxies'\n )\n);\nconst Rules = lazy(() =>\n import(\n /* webpackChunkName: \"rules\" */\n /* webpackPrefetch: true */\n './Rules'\n )\n);\n\nconst routes = [\n ['home', '/', ],\n ['connections', '/connections', ],\n ['configs', '/configs', ],\n ['logs', '/logs', ],\n ['proxies', '/proxies', ],\n ['rules', '/rules', ],\n ['about', '/about', ],\n __DEV__ ? ['style', '/style', ] : false,\n].filter(Boolean);\n\nconst Root = () => (\n \n \n \n \n
\n \n \n
\n }>\n \n {routes.map(([key, path, element]) => (\n \n ))}\n \n \n
\n
\n
\n
\n
\n
\n);\n\nexport default Root;\n","import 'modern-normalize/modern-normalize.css';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport Modal from 'react-modal';\n\nimport Root from './components/Root';\n\nconst rootEl = document.getElementById('app');\n\nModal.setAppElement(rootEl);\n\n// ReactDOM.render(, rootEl);\nconst { createRoot } = ReactDOM;\nconst root = createRoot(rootEl);\nroot.render();\n\n// eslint-disable-next-line no-console\nconsole.log('Checkout the repo: https://github.com/haishanh/yacd');\n// eslint-disable-next-line\nconsole.log('Version:', __VERSION__);\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import { getURLAndInit } from '../misc/request-helper';\nconst endpoint = '/proxies';\n\n/*\n$ curl \"http://127.0.0.1:8080/proxies/Proxy\" -XPUT -d '{ \"name\": \"ss3\" }' -i\nHTTP/1.1 400 Bad Request\nContent-Type: text/plain; charset=utf-8\n\n{\"error\":\"Selector update error: Proxy does not exist\"}\n\n~\n$ curl \"http://127.0.0.1:8080/proxies/GLOBAL\" -XPUT -d '{ \"name\": \"Proxy\" }' -i\nHTTP/1.1 204 No Content\n*/\n\nexport async function fetchProxies(config) {\n const { url, init } = getURLAndInit(config);\n const res = await fetch(url + endpoint, init);\n return await res.json();\n}\n\nexport async function requestToSwitchProxy(apiConfig, name1, name2) {\n const body = { name: name2 };\n const { url, init } = getURLAndInit(apiConfig);\n const fullURL = `${url}${endpoint}/${name1}`;\n return await fetch(fullURL, {\n ...init,\n method: 'PUT',\n body: JSON.stringify(body)\n });\n}\n\nexport async function requestDelayForProxy(\n apiConfig,\n name,\n latencyTestUrl = 'http://www.gstatic.com/generate_204'\n) {\n const { url, init } = getURLAndInit(apiConfig);\n const qs = `timeout=5000&url=${latencyTestUrl}`;\n const fullURL = `${url}${endpoint}/${name}/delay?${qs}`;\n return await fetch(fullURL, init);\n}\n\nexport async function fetchProviderProxies(config) {\n const { url, init } = getURLAndInit(config);\n const res = await fetch(url + '/providers/proxies', init);\n if (res.status === 404) {\n return { providers: {} };\n }\n return await res.json();\n}\n\nexport async function updateProviderByName(config, name) {\n const { url, init } = getURLAndInit(config);\n const options = { ...init, method: 'PUT' };\n return await fetch(url + '/providers/proxies/' + name, options);\n}\n\nexport async function healthcheckProviderByName(config, name) {\n const { url, init } = getURLAndInit(config);\n const options = { ...init, method: 'GET' };\n return await fetch(\n url + '/providers/proxies/' + name + '/healthcheck',\n options\n );\n}\n","import { atom } from 'recoil';\nimport { ClashAPIConfig } from 'src/types';\n\nimport * as connAPI from '../api/connections';\nimport * as proxiesAPI from '../api/proxies';\nimport { getAutoCloseOldConns, getLatencyTestUrl } from './app';\n\ntype PrimitiveProxyType = 'Shadowsocks' | 'Snell' | 'Socks5' | 'Http' | 'Vmess';\n\ntype LatencyHistory = Array<{ time: string; delay: number }>;\n\nexport type ProxyItem = {\n name: string;\n type: PrimitiveProxyType;\n history: LatencyHistory;\n all?: string[];\n now?: string;\n};\n\ntype ProxyProvider = {\n name: string;\n type: 'Proxy';\n updatedAt: string;\n vehicleType: 'HTTP' | 'File' | 'Compatible';\n proxies: Array;\n};\n\ntype FormattedProxyProvider = Omit & {\n proxies: string[];\n};\n\nexport type ProxiesMapping = Record;\nexport type DelayMapping = Record;\n\ntype SwitchProxyCtxItem = { groupName: string; itemName: string };\ntype SwitchProxyCtx = {\n to: SwitchProxyCtxItem;\n};\n\ntype ProxiesState = {\n proxies: ProxiesMapping;\n delay: DelayMapping;\n groupNames: string[];\n proxyProviders?: FormattedProxyProvider[];\n dangleProxyNames?: string[];\n\n showModalClosePrevConns: boolean;\n switchProxyCtx?: SwitchProxyCtx;\n};\n\ntype GlobalState = {\n proxies: ProxiesState;\n};\n\nexport const initialState: ProxiesState = {\n proxies: {},\n delay: {},\n groupNames: [],\n showModalClosePrevConns: false,\n};\n\nconst noop = () => null;\n\n// see all types:\n// https://github.com/Dreamacro/clash/blob/master/constant/adapters.go\n\n// const ProxyTypeBuiltin = ['DIRECT', 'GLOBAL', 'REJECT'];\n// const ProxyGroupTypes = ['Fallback', 'URLTest', 'Selector', 'LoadBalance'];\n// const ProxyTypes = ['Shadowsocks', 'Snell', 'Socks5', 'Http', 'Vmess'];\n\nexport const NonProxyTypes = [\n 'Direct',\n 'Fallback',\n 'Reject',\n 'Selector',\n 'URLTest',\n 'LoadBalance',\n 'Unknown',\n];\n\nexport const getProxies = (s: GlobalState) => s.proxies.proxies;\nexport const getDelay = (s: GlobalState) => s.proxies.delay;\nexport const getProxyGroupNames = (s: GlobalState) => s.proxies.groupNames;\nexport const getProxyProviders = (s: GlobalState) =>\n s.proxies.proxyProviders || [];\nexport const getDangleProxyNames = (s: GlobalState) =>\n s.proxies.dangleProxyNames;\nexport const getShowModalClosePrevConns = (s: GlobalState) =>\n s.proxies.showModalClosePrevConns;\n\nexport function fetchProxies(apiConfig: ClashAPIConfig) {\n return async (dispatch: any, getState: any) => {\n const [proxiesData, providersData] = await Promise.all([\n proxiesAPI.fetchProxies(apiConfig),\n proxiesAPI.fetchProviderProxies(apiConfig),\n ]);\n\n const {\n providers: proxyProviders,\n proxies: providerProxies,\n } = formatProxyProviders(providersData.providers);\n const proxies = { ...providerProxies, ...proxiesData.proxies };\n const [groupNames, proxyNames] = retrieveGroupNamesFrom(proxies);\n\n const delayPrev = getDelay(getState());\n const delayNext = { ...delayPrev };\n\n for (let i = 0; i < proxyNames.length; i++) {\n const name = proxyNames[i];\n const { history } = proxies[name] || { history: [] };\n const h = history[history.length - 1];\n if (h && typeof h.delay === 'number') {\n delayNext[name] = { number: h.delay };\n }\n }\n\n // proxies that are not from a provider\n const dangleProxyNames = [];\n for (const v of proxyNames) {\n if (!providerProxies[v]) dangleProxyNames.push(v);\n }\n\n dispatch('store/proxies#fetchProxies', (s: GlobalState) => {\n s.proxies.proxies = proxies;\n s.proxies.groupNames = groupNames;\n s.proxies.delay = delayNext;\n s.proxies.proxyProviders = proxyProviders;\n s.proxies.dangleProxyNames = dangleProxyNames;\n });\n };\n}\n\nexport function updateProviderByName(apiConfig: ClashAPIConfig, name: string) {\n return async (dispatch) => {\n try {\n await proxiesAPI.updateProviderByName(apiConfig, name);\n } catch (x) {\n // ignore\n }\n // should be optimized\n // but ¯\\_(ツ)_/¯\n dispatch(fetchProxies(apiConfig));\n };\n}\n\nasync function healthcheckProviderByNameInternal(apiConfig, name) {\n try {\n await proxiesAPI.healthcheckProviderByName(apiConfig, name);\n } catch (x) {\n // ignore\n }\n}\n\nexport function healthcheckProviderByName(apiConfig, name) {\n return async (dispatch) => {\n await healthcheckProviderByNameInternal(apiConfig, name);\n // should be optimized\n // but ¯\\_(ツ)_/¯\n await dispatch(fetchProxies(apiConfig));\n };\n}\n\nasync function closeGroupConns(\n apiConfig: ClashAPIConfig,\n groupName: string,\n exceptionItemName: string\n) {\n const res = await connAPI.fetchConns(apiConfig);\n if (!res.ok) {\n console.log('unable to fetch all connections', res.statusText);\n /* throw new Error(); */\n }\n const json = await res.json();\n const connections = json.connections;\n const idsToClose = [];\n for (const conn of connections) {\n if (\n // include the groupName\n conn.chains.indexOf(groupName) > -1 &&\n // but not include the itemName\n conn.chains.indexOf(exceptionItemName) < 0\n ) {\n idsToClose.push(conn.id);\n }\n }\n\n await Promise.all(\n idsToClose.map((id) => connAPI.closeConnById(apiConfig, id).catch(noop))\n );\n}\n\nfunction resolveChain(\n proxies: ProxiesMapping,\n groupName: string,\n itemName: string\n) {\n const chain = [itemName, groupName];\n\n let child: ProxyItem;\n let childKey = itemName;\n while ((child = proxies[childKey]) && child.now) {\n chain.unshift(child.now);\n childKey = child.now;\n }\n return chain;\n}\n\nasync function switchProxyImpl(\n dispatch: any,\n getState: () => GlobalState,\n apiConfig: ClashAPIConfig,\n groupName: string,\n itemName: string\n) {\n try {\n const res = await proxiesAPI.requestToSwitchProxy(\n apiConfig,\n groupName,\n itemName\n );\n if (res.ok === false) {\n throw new Error(`failed to switch proxy: res.statusText`);\n }\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log(err, 'failed to swith proxy');\n throw err;\n }\n\n dispatch(fetchProxies(apiConfig));\n const autoCloseOldConns = getAutoCloseOldConns(getState());\n if (autoCloseOldConns) {\n // use fresh state\n const proxies = getProxies(getState());\n // no wait\n closePrevConns(apiConfig, proxies, { groupName, itemName });\n }\n\n /* dispatch('showModalClosePrevConns', (s: GlobalState) => { */\n /* s.proxies.showModalClosePrevConns = true; */\n /* s.proxies.switchProxyCtx = { to: { groupName, itemName } }; */\n /* }); */\n}\n\nfunction closeModalClosePrevConns() {\n return (dispatch) => {\n dispatch('closeModalClosePrevConns', (s: GlobalState) => {\n s.proxies.showModalClosePrevConns = false;\n });\n };\n}\n\nfunction closePrevConns(\n apiConfig: ClashAPIConfig,\n proxies: ProxiesMapping,\n switchTo: SwitchProxyCtxItem\n) {\n // we must have fetched the proxies before\n // so the proxies here is fresh\n /* const proxies = s.proxies.proxies; */\n const chain = resolveChain(proxies, switchTo.groupName, switchTo.itemName);\n closeGroupConns(apiConfig, switchTo.groupName, chain[0]);\n}\n\nfunction closePrevConnsAndTheModal(apiConfig: ClashAPIConfig) {\n return async (dispatch, getState) => {\n const s = getState();\n const switchTo = s.proxies.switchProxyCtx?.to;\n if (!switchTo) {\n dispatch(closeModalClosePrevConns());\n return;\n }\n\n // we must have fetched the proxies before\n // so the proxies here is fresh\n const proxies = s.proxies.proxies;\n closePrevConns(apiConfig, proxies, switchTo);\n\n dispatch('closePrevConnsAndTheModal', (s: GlobalState) => {\n s.proxies.showModalClosePrevConns = false;\n s.proxies.switchProxyCtx = undefined;\n });\n };\n}\n\nexport function switchProxy(apiConfig, groupName, itemName) {\n return async (dispatch, getState) => {\n // switch proxy asynchronously\n switchProxyImpl(dispatch, getState, apiConfig, groupName, itemName).catch(\n noop\n );\n\n // optimistic UI update\n dispatch('store/proxies#switchProxy', (s) => {\n const proxies = s.proxies.proxies;\n if (proxies[groupName] && proxies[groupName].now) {\n proxies[groupName].now = itemName;\n }\n });\n };\n}\n\nfunction requestDelayForProxyOnce(apiConfig, name) {\n return async (dispatch, getState) => {\n const latencyTestUrl = getLatencyTestUrl(getState());\n const res = await proxiesAPI.requestDelayForProxy(\n apiConfig,\n name,\n latencyTestUrl\n );\n let error = '';\n if (res.ok === false) {\n error = res.statusText;\n }\n const { delay } = await res.json();\n\n const delayPrev = getDelay(getState());\n const delayNext = {\n ...delayPrev,\n [name]: {\n error,\n number: delay,\n },\n };\n\n dispatch('requestDelayForProxyOnce', (s) => {\n s.proxies.delay = delayNext;\n });\n };\n}\n\nexport function requestDelayForProxy(apiConfig, name) {\n return async (dispatch) => {\n await dispatch(requestDelayForProxyOnce(apiConfig, name));\n };\n}\n\nexport function requestDelayForProxies(apiConfig, names) {\n return async (dispatch, getState) => {\n const proxyNames = getDangleProxyNames(getState());\n\n const works = names\n // remove names that are provided by proxy providers\n .filter((p) => proxyNames.indexOf(p) > -1)\n .map((p) => dispatch(requestDelayForProxy(apiConfig, p)));\n await Promise.all(works);\n await dispatch(fetchProxies(apiConfig));\n };\n}\n\nexport function requestDelayAll(apiConfig) {\n return async (dispatch, getState) => {\n const proxyNames = getDangleProxyNames(getState());\n await Promise.all(\n proxyNames.map((p) => dispatch(requestDelayForProxy(apiConfig, p)))\n );\n const proxyProviders = getProxyProviders(getState());\n // one by one\n for (const p of proxyProviders) {\n await healthcheckProviderByNameInternal(apiConfig, p.name);\n }\n await dispatch(fetchProxies(apiConfig));\n };\n}\n\nfunction retrieveGroupNamesFrom(proxies) {\n let groupNames = [];\n let globalAll;\n const proxyNames = [];\n for (const prop in proxies) {\n const p = proxies[prop];\n if (p.all && Array.isArray(p.all)) {\n groupNames.push(prop);\n if (prop === 'GLOBAL') {\n globalAll = p.all;\n }\n } else if (NonProxyTypes.indexOf(p.type) < 0) {\n proxyNames.push(prop);\n }\n }\n if (globalAll) {\n // Put GLOBAL in the end\n globalAll.push('GLOBAL');\n // Sort groups according to its index in GLOBAL group\n groupNames = groupNames\n .map((name) => [globalAll.indexOf(name), name])\n .sort((a, b) => a[0] - b[0])\n .map((group) => group[1]);\n }\n return [groupNames, proxyNames];\n}\n\ntype ProvidersRaw = {\n [key: string]: ProxyProvider;\n};\n\nfunction formatProxyProviders(\n providersInput: ProvidersRaw\n): {\n providers: Array;\n proxies: { [key: string]: ProxyItem };\n} {\n const keys = Object.keys(providersInput);\n const providers = [];\n const proxies = {};\n for (let i = 0; i < keys.length; i++) {\n const provider: ProxyProvider = providersInput[keys[i]];\n if (provider.name === 'default' || provider.vehicleType === 'Compatible') {\n continue;\n }\n const proxiesArr = provider.proxies;\n const names = [];\n for (let j = 0; j < proxiesArr.length; j++) {\n const proxy = proxiesArr[j];\n proxies[proxy.name] = proxy;\n names.push(proxy.name);\n }\n\n // mutate directly\n provider.proxies = names;\n providers.push(provider);\n }\n\n return {\n providers,\n proxies,\n };\n}\n\nexport const actions = {\n requestDelayForProxies,\n closeModalClosePrevConns,\n closePrevConnsAndTheModal,\n};\n\nexport const proxyFilterText = atom({\n key: 'proxyFilterText',\n default: '',\n});\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"TrafficNow\":\"_2n4kL7wLDR\"};","import { buildWebSocketURL, getURLAndInit } from '../misc/request-helper';\nconst endpoint = '/traffic';\nconst textDecoder = new TextDecoder('utf-8');\n\nconst Size = 150;\n\nconst traffic = {\n labels: Array(Size),\n // labels: [],\n up: Array(Size),\n down: Array(Size),\n\n size: Size,\n subscribers: [],\n appendData(o) {\n this.up.push(o.up);\n this.down.push(o.down);\n const t = new Date();\n const l = '' + t.getMinutes() + t.getSeconds();\n this.labels.push(l);\n if (this.up.length > this.size) this.up.shift();\n if (this.down.length > this.size) this.down.shift();\n if (this.labels.length > this.size) this.labels.shift();\n\n this.subscribers.forEach((f) => f(o));\n },\n\n subscribe(listener) {\n this.subscribers.push(listener);\n return () => {\n const idx = this.subscribers.indexOf(listener);\n this.subscribers.splice(idx, 1);\n };\n },\n};\n\nlet fetched = false;\nlet decoded = '';\n\nfunction parseAndAppend(x) {\n traffic.appendData(JSON.parse(x));\n}\n\nfunction pump(reader) {\n return reader.read().then(({ done, value }) => {\n const str = textDecoder.decode(value, { stream: !done });\n decoded += str;\n\n const splits = decoded.split('\\n');\n\n const lastSplit = splits[splits.length - 1];\n\n for (let i = 0; i < splits.length - 1; i++) {\n parseAndAppend(splits[i]);\n }\n\n if (done) {\n parseAndAppend(lastSplit);\n decoded = '';\n\n // eslint-disable-next-line no-console\n console.log('GET /traffic streaming done');\n fetched = false;\n return;\n } else {\n decoded = lastSplit;\n }\n return pump(reader);\n });\n}\n\n// 1 OPEN\n// other value CLOSED\n// similar to ws readyState but not the same\n// https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/readyState\nlet wsState;\nfunction fetchData(apiConfig) {\n if (fetched || wsState === 1) return traffic;\n wsState = 1;\n const url = buildWebSocketURL(apiConfig, endpoint);\n const ws = new WebSocket(url);\n ws.addEventListener('error', function (_ev) {\n wsState = 3;\n });\n ws.addEventListener('close', function (_ev) {\n wsState = 3;\n fetchDataWithFetch(apiConfig);\n });\n ws.addEventListener('message', function (event) {\n parseAndAppend(event.data);\n });\n return traffic;\n}\n\nfunction fetchDataWithFetch(apiConfig) {\n if (fetched) return traffic;\n fetched = true;\n const { url, init } = getURLAndInit(apiConfig);\n fetch(url + endpoint, init).then(\n (response) => {\n if (response.ok) {\n const reader = response.body.getReader();\n pump(reader);\n } else {\n fetched = false;\n }\n },\n (err) => {\n // eslint-disable-next-line no-console\n console.log('fetch /traffic error', err);\n fetched = false;\n }\n );\n return traffic;\n}\n\nexport { fetchData };\n","// steal from https://github.com/sindresorhus/pretty-bytes/blob/master/index.js\n\nconst UNITS = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\nexport default number => {\n if (number < 1000) {\n return number + ' B';\n }\n const exponent = Math.min(\n Math.floor(Math.log10(number) / 3),\n UNITS.length - 1\n );\n number = Number((number / Math.pow(1000, exponent)).toPrecision(3));\n const unit = UNITS[exponent];\n return number + ' ' + unit;\n};\n","export function openModal(modalName) {\n return dispatch => {\n dispatch(`openModal:${modalName}`, s => {\n s.modals[modalName] = true;\n });\n };\n}\n\nexport function closeModal(modalName) {\n return dispatch => {\n dispatch(`closeModal:${modalName}`, s => {\n s.modals[modalName] = false;\n });\n };\n}\n\nexport const initialState = { apiConfig: false };\n","\"use strict\";function _interopDefault(ex){return ex&&\"object\"==typeof ex&&\"default\"in ex?ex.default:ex}Object.defineProperty(exports,\"__esModule\",{value:!0});var react=_interopDefault(require(\"react\")),reactDom=_interopDefault(require(\"react-dom\"));function _defineProperty(obj,key,value){return key in obj?Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}class AbstractRecoilValue{constructor(newKey){_defineProperty(this,\"key\",void 0),this.key=newKey}}class RecoilState extends AbstractRecoilValue{}class RecoilValueReadOnly extends AbstractRecoilValue{}var Recoil_RecoilValue={AbstractRecoilValue:AbstractRecoilValue,RecoilState:RecoilState,RecoilValueReadOnly:RecoilValueReadOnly,isRecoilValue:function(x){return x instanceof RecoilState||x instanceof RecoilValueReadOnly}},Recoil_RecoilValue_1=Recoil_RecoilValue.AbstractRecoilValue,Recoil_RecoilValue_2=Recoil_RecoilValue.RecoilState,Recoil_RecoilValue_3=Recoil_RecoilValue.RecoilValueReadOnly,Recoil_RecoilValue_4=Recoil_RecoilValue.isRecoilValue;function getCjsExportFromNamespace(n){return n&&n.default||n}var require$$2=getCjsExportFromNamespace(Object.freeze({__proto__:null,AbstractRecoilValue:Recoil_RecoilValue_1,RecoilState:Recoil_RecoilValue_2,RecoilValueReadOnly:Recoil_RecoilValue_3,isRecoilValue:Recoil_RecoilValue_4}));class DefaultValue{}const DEFAULT_VALUE=new DefaultValue;class RecoilValueNotReady extends Error{constructor(key){super(`Tried to set the value of Recoil selector ${key} using an updater function, but it is an async selector in a pending or error state; this is not supported.`)}}const nodes=new Map;class NodeMissingError extends Error{}var Recoil_Node={nodes:nodes,registerNode:function(node){if(nodes.has(node.key)){node.key}return nodes.set(node.key,node),null==node.set?new require$$2.RecoilValueReadOnly(node.key):new require$$2.RecoilState(node.key)},getNode:function(key){const node=nodes.get(key);if(null==node)throw new NodeMissingError(`Missing definition for RecoilValue: \"${key}\"\"`);return node},NodeMissingError:NodeMissingError,DefaultValue:DefaultValue,DEFAULT_VALUE:DEFAULT_VALUE,RecoilValueNotReady:RecoilValueNotReady};var Recoil_Queue={enqueueExecution:function(s,f){f()}};var Recoil_CopyOnWrite={setByAddingToSet:function(set,v){const next=new Set(set);return next.add(v),next},setByDeletingFromSet:function(set,v){const next=new Set(set);return next.delete(v),next},mapBySettingInMap:function(map,k,v){const next=new Map(map);return next.set(k,v),next},mapByUpdatingInMap:function(map,k,updater){const next=new Map(map);return next.set(k,updater(next.get(k))),next},mapByDeletingFromMap:function(map,k){const next=new Map(map);return next.delete(k),next}};var Recoil_Tracing={trace:function(message,node,fn){return fn()},wrap:function(fn){return fn}};const{mapByDeletingFromMap:mapByDeletingFromMap$1,mapBySettingInMap:mapBySettingInMap$1,mapByUpdatingInMap:mapByUpdatingInMap$1,setByAddingToSet:setByAddingToSet$1}=Recoil_CopyOnWrite,{getNode:getNode$1}=Recoil_Node,emptyMap=Object.freeze(new Map),emptySet=Object.freeze(new Set);class ReadOnlyRecoilValueError extends Error{}function getNodeLoadable(store,state,key){return getNode$1(key).get(store,state)}let subscriptionID=0;var Recoil_FunctionalCore={getNodeLoadable:getNodeLoadable,peekNodeLoadable:function(store,state,key){return getNodeLoadable(store,state,key)[1]},setNodeValue:function(store,state,key,newValue){const node=getNode$1(key);if(null==node.set)throw new ReadOnlyRecoilValueError(\"Attempt to set read-only RecoilValue: \"+key);const[newState,writtenNodes]=node.set(store,state,newValue);return[newState,writtenNodes]},setUnvalidatedAtomValue:function(state,key,newValue){return{...state,atomValues:mapByDeletingFromMap$1(state.atomValues,key),nonvalidatedAtoms:mapBySettingInMap$1(state.nonvalidatedAtoms,key,newValue),dirtyAtoms:setByAddingToSet$1(state.dirtyAtoms,key)}},subscribeComponentToNode:function(state,key,callback){const subID=subscriptionID++;return[{...state,nodeToComponentSubscriptions:mapByUpdatingInMap$1(state.nodeToComponentSubscriptions,key,subsForAtom=>mapBySettingInMap$1(null!=subsForAtom?subsForAtom:emptyMap,subID,[\"TODO debug name\",callback]))},function(state){return{...state,nodeToComponentSubscriptions:mapByUpdatingInMap$1(state.nodeToComponentSubscriptions,key,subsForAtom=>mapByDeletingFromMap$1(null!=subsForAtom?subsForAtom:emptyMap,subID))}}]},fireNodeSubscriptions:function(store,updatedNodes,when){var _store$getState$nextT;const state=\"enqueue\"===when&&null!==(_store$getState$nextT=store.getState().nextTree)&&void 0!==_store$getState$nextT?_store$getState$nextT:store.getState().currentTree,dependentNodes=function(state,keys){const dependentNodes=new Set,visitedNodes=new Set,visitingNodes=Array.from(keys);for(let key=visitingNodes.pop();key;key=visitingNodes.pop()){var _state$nodeToNodeSubs;dependentNodes.add(key),visitedNodes.add(key);const subscribedNodes=null!==(_state$nodeToNodeSubs=state.nodeToNodeSubscriptions.get(key))&&void 0!==_state$nodeToNodeSubs?_state$nodeToNodeSubs:emptySet;for(const downstreamNode of subscribedNodes)visitedNodes.has(downstreamNode)||visitingNodes.push(downstreamNode)}return dependentNodes}(state,updatedNodes);for(const key of dependentNodes){var _state$nodeToComponen;(null!==(_state$nodeToComponen=state.nodeToComponentSubscriptions.get(key))&&void 0!==_state$nodeToComponen?_state$nodeToComponen:[]).forEach(([_debugName,cb])=>{\"enqueue\"===when?store.getState().queuedComponentCallbacks.push(cb):cb(state)})}Recoil_Tracing.trace(\"value became available, waking components\",Array.from(updatedNodes).join(\", \"),()=>{const resolvers=store.getState().suspendedComponentResolvers;resolvers.forEach(r=>r()),resolvers.clear()})},detectCircularDependencies:function detectCircularDependencies(state,stack){if(!stack.length)return;const leaf=stack[stack.length-1],downstream=state.nodeToNodeSubscriptions.get(leaf);if(!(null==downstream?void 0:downstream.size))return;const root=stack[0];if(downstream.has(root))throw new Error(\"Recoil selector has circular dependencies: \"+[...stack,root].reverse().join(\" → \"));for(const next of downstream)detectCircularDependencies(state,[...stack,next])}};var Recoil_mapMap=function(map,callback){const result=new Map;return map.forEach((value,key)=>{result.set(key,callback(value,key))}),result};const{getNodeLoadable:getNodeLoadable$1,peekNodeLoadable:peekNodeLoadable$1,setNodeValue:setNodeValue$1,setUnvalidatedAtomValue:setUnvalidatedAtomValue$1,subscribeComponentToNode:subscribeComponentToNode$1}=Recoil_FunctionalCore,{RecoilValueNotReady:RecoilValueNotReady$1}=Recoil_Node,{AbstractRecoilValue:AbstractRecoilValue$1,RecoilState:RecoilState$1,RecoilValueReadOnly:RecoilValueReadOnly$1}=require$$2;var Recoil_RecoilValueInterface={RecoilValueReadOnly:RecoilValueReadOnly$1,AbstractRecoilValue:AbstractRecoilValue$1,RecoilState:RecoilState$1,valueFromValueOrUpdater:function(store,{key:key},valueOrUpdater){if(\"function\"==typeof valueOrUpdater){var _storeState$nextTree;const storeState=store.getState(),state=null!==(_storeState$nextTree=storeState.nextTree)&&void 0!==_storeState$nextTree?_storeState$nextTree:storeState.currentTree,current=peekNodeLoadable$1(store,state,key);if(\"loading\"===current.state)throw new RecoilValueNotReady$1(key);if(\"hasError\"===current.state)throw current.contents;return valueOrUpdater(current.contents)}return valueOrUpdater},getRecoilValueAsLoadable:function(store,{key:key}){let result;return Recoil_Tracing.trace(\"get RecoilValue\",key,()=>store.replaceState(Recoil_Tracing.wrap(state=>{const[newState,loadable]=getNodeLoadable$1(store,state,key);return result=loadable,newState}))),result},setRecoilValue:function(store,{key:key},newValue){Recoil_Tracing.trace(\"set RecoilValue\",key,()=>store.replaceState(Recoil_Tracing.wrap(state=>{const[newState,writtenNodes]=setNodeValue$1(store,state,key,newValue);return store.fireNodeSubscriptions(writtenNodes,\"enqueue\"),newState})))},setUnvalidatedRecoilValue:function(store,{key:key},newValue){Recoil_Tracing.trace(\"set unvalidated persisted atom\",key,()=>store.replaceState(Recoil_Tracing.wrap(state=>{const newState=setUnvalidatedAtomValue$1(state,key,newValue);return store.fireNodeSubscriptions(new Set([key]),\"enqueue\"),newState})))},subscribeToRecoilValue:function(store,{key:key},callback){let newState,releaseFn;return Recoil_Tracing.trace(\"subscribe component to RecoilValue\",key,()=>store.replaceState(Recoil_Tracing.wrap(state=>([newState,releaseFn]=subscribeComponentToNode$1(state,key,callback),newState)))),{release:store=>store.replaceState(releaseFn)}}};function makeEmptyTreeState(){return{transactionMetadata:{},atomValues:new Map,nonvalidatedAtoms:new Map,dirtyAtoms:new Set,nodeDeps:new Map,nodeToNodeSubscriptions:new Map,nodeToComponentSubscriptions:new Map}}function makeStoreState(treeState){return{currentTree:treeState,nextTree:null,transactionSubscriptions:new Map,queuedComponentCallbacks:[],suspendedComponentResolvers:new Set}}var Recoil_State={makeEmptyTreeState:makeEmptyTreeState,makeEmptyStoreState:function(){return makeStoreState(makeEmptyTreeState())},makeStoreState:makeStoreState};const{DEFAULT_VALUE:DEFAULT_VALUE$1}=Recoil_Node,{getRecoilValueAsLoadable:getRecoilValueAsLoadable$1,setRecoilValue:setRecoilValue$1,valueFromValueOrUpdater:valueFromValueOrUpdater$1}=Recoil_RecoilValueInterface,{makeEmptyTreeState:makeEmptyTreeState$1,makeStoreState:makeStoreState$1}=Recoil_State;class Snapshot{constructor(treeState){_defineProperty(this,\"_store\",void 0),_defineProperty(this,\"getLoadable\",recoilValue=>getRecoilValueAsLoadable$1(this._store,recoilValue)),_defineProperty(this,\"getPromise\",recoilValue=>this.getLoadable(recoilValue).toPromise()),_defineProperty(this,\"map\",mapper=>{const mutableSnapshot=new MutableSnapshot(this._store.getState().currentTree);mapper(mutableSnapshot);return cloneSnapshot(mutableSnapshot.getStore_INTERNAL().getState().currentTree)}),_defineProperty(this,\"asyncMap\",async mapper=>{const mutableSnapshot=new MutableSnapshot(this._store.getState().currentTree);await mapper(mutableSnapshot);return cloneSnapshot(mutableSnapshot.getStore_INTERNAL().getState().currentTree)}),this._store=function(treeState){const storeState=makeStoreState$1(treeState);return{getState:()=>storeState,replaceState:replacer=>{storeState.currentTree=replacer(storeState.currentTree)},subscribeToTransactions:()=>{throw new Error(\"Cannot subscribe to Snapshots\")},addTransactionMetadata:()=>{throw new Error(\"Cannot subscribe to Snapshots\")},fireNodeSubscriptions:()=>{}}}(treeState)}getStore_INTERNAL(){return this._store}}function cloneTreeState(treeState){return{transactionMetadata:{...treeState.transactionMetadata},atomValues:new Map(treeState.atomValues),nonvalidatedAtoms:new Map(treeState.nonvalidatedAtoms),dirtyAtoms:new Set(treeState.dirtyAtoms),nodeDeps:new Map(treeState.nodeDeps),nodeToNodeSubscriptions:Recoil_mapMap(treeState.nodeToNodeSubscriptions,keys=>new Set(keys)),nodeToComponentSubscriptions:new Map}}function cloneSnapshot(treeState){return new Snapshot(cloneTreeState(treeState))}class MutableSnapshot extends Snapshot{constructor(treeState){super(cloneTreeState(treeState)),_defineProperty(this,\"set\",(recoilState,newValueOrUpdater)=>{const store=this.getStore_INTERNAL(),newValue=valueFromValueOrUpdater$1(store,recoilState,newValueOrUpdater);setRecoilValue$1(store,recoilState,newValue)}),_defineProperty(this,\"reset\",recoilState=>setRecoilValue$1(this.getStore_INTERNAL(),recoilState,DEFAULT_VALUE$1))}}var Recoil_Snapshot={Snapshot:Snapshot,MutableSnapshot:MutableSnapshot,freshSnapshot:function(){return new Snapshot(makeEmptyTreeState$1())},cloneSnapshot:cloneSnapshot},Recoil_Snapshot_1=Recoil_Snapshot.Snapshot,Recoil_Snapshot_2=Recoil_Snapshot.MutableSnapshot,Recoil_Snapshot_3=Recoil_Snapshot.freshSnapshot,Recoil_Snapshot_4=Recoil_Snapshot.cloneSnapshot;var Recoil_nullthrows=function(x,message){if(null!=x)return x;throw new Error(null!=message?message:\"Got unexpected null or undefined\")},require$$6=getCjsExportFromNamespace(Object.freeze({__proto__:null,Snapshot:Recoil_Snapshot_1,MutableSnapshot:Recoil_Snapshot_2,freshSnapshot:Recoil_Snapshot_3,cloneSnapshot:Recoil_Snapshot_4}));const{useContext:useContext,useEffect:useEffect,useRef:useRef,useState:useState}=react,{fireNodeSubscriptions:fireNodeSubscriptions$1,setNodeValue:setNodeValue$2,setUnvalidatedAtomValue:setUnvalidatedAtomValue$2}=Recoil_FunctionalCore,{freshSnapshot:freshSnapshot$1}=require$$6,{makeEmptyStoreState:makeEmptyStoreState$1,makeStoreState:makeStoreState$2}=Recoil_State;function notInAContext(){throw new Error(\"This component must be used inside a component.\")}const defaultStore=Object.freeze({getState:notInAContext,replaceState:notInAContext,subscribeToTransactions:notInAContext,addTransactionMetadata:notInAContext,fireNodeSubscriptions:notInAContext});function startNextTreeIfNeeded(storeState){null===storeState.nextTree&&(storeState.nextTree={...storeState.currentTree,dirtyAtoms:new Set,transactionMetadata:{}})}const AppContext=react.createContext({current:defaultStore}),useStoreRef=()=>useContext(AppContext);function Batcher(props){const storeRef=useStoreRef(),[_,setState]=useState([]);return props.setNotifyBatcherOfChange(()=>setState({})),useEffect(()=>{Recoil_Queue.enqueueExecution(\"Batcher\",()=>{const storeState=storeRef.current.getState(),{nextTree:nextTree}=storeState;if(null===nextTree)return;nextTree.dirtyAtoms.size&&storeState.transactionSubscriptions.forEach(sub=>sub(storeRef.current)),storeState.queuedComponentCallbacks.forEach(cb=>cb(nextTree)),storeState.queuedComponentCallbacks.splice(0,storeState.queuedComponentCallbacks.length),storeState.currentTree=nextTree,storeState.nextTree=null})}),null}let nextID=0;var Recoil_RecoilRoot_react={useStoreRef:useStoreRef,RecoilRoot:function({initializeState_DEPRECATED:initializeState_DEPRECATED,initializeState:initializeState,children:children}){let storeState;const notifyBatcherOfChange=useRef(null),store={getState:()=>storeState.current,replaceState:replacer=>{const storeState=storeRef.current.getState();startNextTreeIfNeeded(storeState);const nextTree=Recoil_nullthrows(storeState.nextTree),replaced=replacer(nextTree);replaced!==nextTree&&(storeState.nextTree=replaced,Recoil_nullthrows(notifyBatcherOfChange.current)())},subscribeToTransactions:callback=>{const id=nextID++;return storeRef.current.getState().transactionSubscriptions.set(id,callback),{release:()=>{storeRef.current.getState().transactionSubscriptions.delete(id)}}},addTransactionMetadata:metadata=>{startNextTreeIfNeeded(storeRef.current.getState());for(const k of Object.keys(metadata))Recoil_nullthrows(storeRef.current.getState().nextTree).transactionMetadata[k]=metadata[k]},fireNodeSubscriptions:function(updatedNodes,when){fireNodeSubscriptions$1(storeRef.current,updatedNodes,when)}},storeRef=useRef(store);return storeState=useRef(null!=initializeState_DEPRECATED?function(store,initializeState){const initial=makeEmptyStoreState$1();return initializeState({set:(atom,value)=>{initial.currentTree=setNodeValue$2(store,initial.currentTree,atom.key,value)[0]},setUnvalidatedAtomValues:atomValues=>{atomValues.forEach((v,k)=>{initial.currentTree=setUnvalidatedAtomValue$2(initial.currentTree,k,v)})}}),initial}(store,initializeState_DEPRECATED):null!=initializeState?function(initializeState){const snapshot=freshSnapshot$1().map(initializeState);return makeStoreState$2(snapshot.getStore_INTERNAL().getState().currentTree)}(initializeState):makeEmptyStoreState$1()),react.createElement(AppContext.Provider,{value:storeRef},react.createElement(Batcher,{setNotifyBatcherOfChange:function(x){notifyBatcherOfChange.current=x}}),children)}};var Recoil_differenceSets=function(set,...setsWithValuesToRemove){const ret=new Set;FIRST:for(const value of set){for(const otherSet of setsWithValuesToRemove)if(otherSet.has(value))continue FIRST;ret.add(value)}return ret};var Recoil_filterMap=function(map,callback){const result=new Map;for(const[key,value]of map)callback(value,key)&&result.set(key,value);return result};var Recoil_intersectSets=function(first,...rest){const ret=new Set;FIRST:for(const value of first){for(const otherSet of rest)if(!otherSet.has(value))continue FIRST;ret.add(value)}return ret};var Recoil_invariant=function(condition,message){if(!condition)throw new Error(message)};var Recoil_mergeMaps=function(...maps){const result=new Map;for(let i=0;i{const sub=subscriptions.current.get(key);sub&&(sub.release(storeRef.current),subscriptions.current.delete(key))},[storeRef,subscriptions]);return useEffect$1(()=>{const store=storeRef.current;function updateState(_state,key){subscriptions.current.has(key)&&forceUpdate([])}Recoil_differenceSets(recoilValuesUsed.current,previousSubscriptions.current).forEach(key=>{if(subscriptions.current.has(key))return;const sub=subscribeToRecoilValue$1(store,new AbstractRecoilValue$2(key),state=>{Recoil_Tracing.trace(\"RecoilValue subscription fired\",key,()=>{updateState(0,key)})});subscriptions.current.set(key,sub),Recoil_Tracing.trace(\"initial update on subscribing\",key,()=>{updateState(store.getState(),key)})}),Recoil_differenceSets(previousSubscriptions.current,recoilValuesUsed.current).forEach(key=>{unsubscribeFrom(key)}),previousSubscriptions.current=recoilValuesUsed.current}),useEffect$1(()=>{const subs=subscriptions.current;return()=>subs.forEach((_,key)=>unsubscribeFrom(key))},[unsubscribeFrom]),useMemo(()=>{function useSetRecoilState(recoilState){return newValueOrUpdater=>{const newValue=valueFromValueOrUpdater$2(storeRef.current,recoilState,newValueOrUpdater);setRecoilValue$2(storeRef.current,recoilState,newValue)}}function useRecoilValueLoadable(recoilValue){return recoilValuesUsed.current.has(recoilValue.key)||(recoilValuesUsed.current=setByAddingToSet$2(recoilValuesUsed.current,recoilValue.key)),getRecoilValueAsLoadable$2(storeRef.current,recoilValue)}function useRecoilValue(recoilValue){return function(loadable,atom,storeRef){if(\"hasValue\"===loadable.state)return loadable.contents;if(\"loading\"===loadable.state){throw new Promise(resolve=>{storeRef.current.getState().suspendedComponentResolvers.add(resolve)})}throw\"hasError\"===loadable.state?loadable.contents:new Error(`Invalid value of loadable atom \"${atom.key}\"`)}(useRecoilValueLoadable(recoilValue),recoilValue,storeRef)}return{getRecoilValue:useRecoilValue,getRecoilValueLoadable:useRecoilValueLoadable,getRecoilState:function(recoilState){return[useRecoilValue(recoilState),useSetRecoilState(recoilState)]},getRecoilStateLoadable:function(recoilState){return[useRecoilValueLoadable(recoilState),useSetRecoilState(recoilState)]},getSetRecoilState:useSetRecoilState,getResetRecoilState:function(recoilState){return()=>setRecoilValue$2(storeRef.current,recoilState,DEFAULT_VALUE$2)}}},[recoilValuesUsed,storeRef])}function useTransactionSubscription(callback){const storeRef=useStoreRef$1();useEffect$1(()=>storeRef.current.subscribeToTransactions(callback).release,[callback,storeRef])}function useTreeStateClone_DEPRECATED(){const[_,setState]=useState$1(0);useTransactionSubscription(useCallback(()=>setState(x=>x+1),[]));const storeRef=useStoreRef$1();return{transactionMetadata:{...(state=storeRef.current.getState().currentTree).transactionMetadata},atomValues:new Map(state.atomValues),nonvalidatedAtoms:new Map(state.nonvalidatedAtoms),dirtyAtoms:new Set(state.dirtyAtoms),nodeDeps:new Map(state.nodeDeps),nodeToNodeSubscriptions:Recoil_mapMap(state.nodeToNodeSubscriptions,keys=>new Set(keys)),nodeToComponentSubscriptions:Recoil_mapMap(state.nodeToComponentSubscriptions,subsByAtom=>new Map(subsByAtom))};var state}function externallyVisibleAtomValuesInState(state){const atomValues=state.atomValues,persistedAtomContentsValues=Recoil_mapMap(Recoil_filterMap(atomValues,(v,k)=>{var _node$options;const persistence=null===(_node$options=getNode$2(k).options)||void 0===_node$options?void 0:_node$options.persistence_UNSTABLE;return null!=persistence&&\"none\"!==persistence.type&&\"hasValue\"===v.state}),v=>v.contents);return Recoil_mergeMaps(state.nonvalidatedAtoms,persistedAtomContentsValues)}function useGotoRecoilSnapshot(){const storeRef=useStoreRef$1();return useCallback(snapshot=>{reactDom.unstable_batchedUpdates(()=>{storeRef.current.replaceState(prevState=>{const nextState=snapshot.getStore_INTERNAL().getState().currentTree,updatedKeys=new Set;for(const keys of[prevState.atomValues.keys(),nextState.atomValues.keys()])for(const key of keys){var _prevState$atomValues,_nextState$atomValues;(null===(_prevState$atomValues=prevState.atomValues.get(key))||void 0===_prevState$atomValues?void 0:_prevState$atomValues.contents)!==(null===(_nextState$atomValues=nextState.atomValues.get(key))||void 0===_nextState$atomValues?void 0:_nextState$atomValues.contents)&&updatedKeys.add(key)}return storeRef.current.fireNodeSubscriptions(updatedKeys,\"enqueue\"),{...nextState,nodeToComponentSubscriptions:prevState.nodeToComponentSubscriptions}})})},[storeRef])}class Sentinel{}const SENTINEL=new Sentinel;var Recoil_Hooks={useRecoilCallback:function(fn,deps){const storeRef=useStoreRef$1(),gotoSnapshot=useGotoRecoilSnapshot();return useCallback((...args)=>{const snapshot=cloneSnapshot$1(storeRef.current.getState().currentTree);function set(recoilState,newValueOrUpdater){const newValue=valueFromValueOrUpdater$2(storeRef.current,recoilState,newValueOrUpdater);setRecoilValue$2(storeRef.current,recoilState,newValue)}function reset(recoilState){setRecoilValue$2(storeRef.current,recoilState,DEFAULT_VALUE$2)}let ret=SENTINEL;return reactDom.unstable_batchedUpdates(()=>{ret=fn({set:set,reset:reset,snapshot:snapshot,gotoSnapshot:gotoSnapshot})(...args)}),ret instanceof Sentinel&&Recoil_invariant(!1),ret},null!=deps?[...deps,storeRef]:void 0)},useRecoilValue:function(recoilValue){return useInterface().getRecoilValue(recoilValue)},useRecoilValueLoadable:function(recoilValue){return useInterface().getRecoilValueLoadable(recoilValue)},useRecoilState:function(recoilState){const recoilInterface=useInterface(),[value]=recoilInterface.getRecoilState(recoilState);return[value,useCallback(recoilInterface.getSetRecoilState(recoilState),[recoilState])]},useRecoilStateLoadable:function(recoilState){const recoilInterface=useInterface(),[value]=recoilInterface.getRecoilStateLoadable(recoilState);return[value,useCallback(recoilInterface.getSetRecoilState(recoilState),[recoilState])]},useSetRecoilState:function(recoilState){return useCallback(useInterface().getSetRecoilState(recoilState),[recoilState])},useResetRecoilState:function(recoilState){return useCallback(useInterface().getResetRecoilState(recoilState),[recoilState])},useRecoilInterface:useInterface,useSnapshotWithStateChange_DEPRECATED:function(transaction){const storeRef=useStoreRef$1();let snapshot=useTreeStateClone_DEPRECATED();transaction(({key:key},updater)=>{[snapshot]=setNodeValue$3(storeRef.current,snapshot,key,peekNodeLoadable$2(storeRef.current,snapshot,key).map(updater))});const atomValues=Recoil_mapMap(snapshot.atomValues,v=>v.contents),updatedAtoms=Recoil_intersectSets(snapshot.dirtyAtoms,new Set(atomValues.keys()));return{atomValues:atomValues,updatedAtoms:updatedAtoms}},useTransactionSubscription_DEPRECATED:useTransactionSubscription,useTransactionObservation_DEPRECATED:function(callback){useTransactionSubscription(useCallback(store=>{const previousState=store.getState().currentTree;let nextState=store.getState().nextTree;nextState||(nextState=store.getState().currentTree);const atomValues=externallyVisibleAtomValuesInState(nextState),previousAtomValues=externallyVisibleAtomValuesInState(previousState),atomInfo=Recoil_mapMap(nodes$1,node=>{var _node$options$persist,_node$options2,_node$options2$persis,_node$options$persist2,_node$options3,_node$options3$persis;return{persistence_UNSTABLE:{type:null!==(_node$options$persist=null===(_node$options2=node.options)||void 0===_node$options2||null===(_node$options2$persis=_node$options2.persistence_UNSTABLE)||void 0===_node$options2$persis?void 0:_node$options2$persis.type)&&void 0!==_node$options$persist?_node$options$persist:\"none\",backButton:null!==(_node$options$persist2=null===(_node$options3=node.options)||void 0===_node$options3||null===(_node$options3$persis=_node$options3.persistence_UNSTABLE)||void 0===_node$options3$persis?void 0:_node$options3$persis.backButton)&&void 0!==_node$options$persist2&&_node$options$persist2}}}),modifiedAtoms=new Set(nextState.dirtyAtoms);callback({atomValues:atomValues,previousAtomValues:previousAtomValues,atomInfo:atomInfo,modifiedAtoms:modifiedAtoms,transactionMetadata:{...nextState.transactionMetadata}})},[callback]))},useRecoilTransactionObserver:function(callback){useTransactionSubscription(useCallback(store=>{const previousState=store.getState().currentTree;let nextState=store.getState().nextTree;nextState||(nextState=previousState),callback({snapshot:cloneSnapshot$1(nextState),previousSnapshot:cloneSnapshot$1(previousState)})},[callback]))},useRecoilSnapshot:function(){const store=useStoreRef$1(),[snapshot,setSnapshot]=useState$1(()=>cloneSnapshot$1(store.current.getState().currentTree));return useTransactionSubscription(useCallback(store=>{var _store$getState$nextT;return setSnapshot(cloneSnapshot$1(null!==(_store$getState$nextT=store.getState().nextTree)&&void 0!==_store$getState$nextT?_store$getState$nextT:store.getState().currentTree))},[])),snapshot},useGoToSnapshot_DEPRECATED:function(){const storeRef=useStoreRef$1();return snapshot=>{reactDom.unstable_batchedUpdates(()=>{snapshot.updatedAtoms.forEach(key=>{setRecoilValue$2(storeRef.current,new AbstractRecoilValue$2(key),snapshot.atomValues.get(key))})})}},useGotoRecoilSnapshot:useGotoRecoilSnapshot,useSetUnvalidatedAtomValues:function(){const storeRef=useStoreRef$1();return(values,transactionMetadata={})=>{reactDom.unstable_batchedUpdates(()=>{storeRef.current.addTransactionMetadata(transactionMetadata),values.forEach((value,key)=>setUnvalidatedRecoilValue$1(storeRef.current,new AbstractRecoilValue$2(key),value))})}}};var Recoil_isPromise=function(p){return!!p&&\"function\"==typeof p.then};const loadableAccessors={getValue(){if(\"hasValue\"!==this.state)throw this.contents;return this.contents},toPromise(){return\"hasValue\"===this.state?Promise.resolve(this.contents):\"hasError\"===this.state?Promise.reject(this.contents):this.contents},valueMaybe(){return\"hasValue\"===this.state?this.contents:void 0},valueOrThrow(){if(\"hasValue\"!==this.state)throw new Error(`Loadable expected value, but in \"${this.state}\" state`);return this.contents},errorMaybe(){return\"hasError\"===this.state?this.contents:void 0},errorOrThrow(){if(\"hasError\"!==this.state)throw new Error(`Loadable expected error, but in \"${this.state}\" state`);return this.contents},promiseMaybe(){return\"loading\"===this.state?this.contents:void 0},promiseOrThrow(){if(\"loading\"!==this.state)throw new Error(`Loadable expected promise, but in \"${this.state}\" state`);return this.contents},map(map){if(\"hasError\"===this.state)return this;if(\"hasValue\"===this.state)try{const next=map(this.contents);return Recoil_isPromise(next)?loadableWithPromise(next):loadableWithValue(next)}catch(e){return Recoil_isPromise(e)?loadableWithPromise(e.next(()=>map(this.contents))):loadableWithError(e)}if(\"loading\"===this.state)return loadableWithPromise(this.contents.then(map).catch(e=>{if(Recoil_isPromise(e))return e.then(()=>map(this.contents));throw e}));throw new Error(\"Invalid Loadable state\")}};function loadableWithValue(value){return Object.freeze({state:\"hasValue\",contents:value,...loadableAccessors})}function loadableWithError(error){return Object.freeze({state:\"hasError\",contents:error,...loadableAccessors})}function loadableWithPromise(promise){return Object.freeze({state:\"loading\",contents:promise,...loadableAccessors})}var Recoil_Loadable={loadableWithValue:loadableWithValue,loadableWithError:loadableWithError,loadableWithPromise:loadableWithPromise,loadableLoading:function(){return loadableWithPromise(new Promise(()=>{}))},loadableAll:function(inputs){return inputs.every(i=>\"hasValue\"===i.state)?loadableWithValue(inputs.map(i=>i.contents)):inputs.some(i=>\"hasError\"===i.state)?loadableWithError(Recoil_nullthrows(inputs.find(i=>\"hasError\"===i.state),\"Invalid loadable passed to loadableAll\").contents):loadableWithPromise(Promise.all(inputs.map(i=>i.contents)))}};var Recoil_isNode=function(object){var _ownerDocument,_doc$defaultView;if(\"undefined\"==typeof window)return!1;const defaultView=null!==(_doc$defaultView=(null!=object?null!==(_ownerDocument=object.ownerDocument)&&void 0!==_ownerDocument?_ownerDocument:object:document).defaultView)&&void 0!==_doc$defaultView?_doc$defaultView:window;return!(null==object||!(\"function\"==typeof defaultView.Node?object instanceof defaultView.Node:\"object\"==typeof object&&\"number\"==typeof object.nodeType&&\"string\"==typeof object.nodeName))};var Recoil_deepFreezeValue=function deepFreezeValue(value){if(\"object\"==typeof value&&!function(value){if(null===value||\"object\"!=typeof value)return!0;switch(typeof value.$$typeof){case\"symbol\":case\"number\":return!0}return null!=value[\"@@__IMMUTABLE_ITERABLE__@@\"]||null!=value[\"@@__IMMUTABLE_KEYED__@@\"]||null!=value[\"@@__IMMUTABLE_INDEXED__@@\"]||null!=value[\"@@__IMMUTABLE_ORDERED__@@\"]||null!=value[\"@@__IMMUTABLE_RECORD__@@\"]||(!!Recoil_isNode(value)||!!Recoil_isPromise(value))}(value)){Object.freeze(value);for(const key in value)if(Object.prototype.hasOwnProperty.call(value,key)){const prop=value[key];\"object\"!=typeof prop||null==prop||Object.isFrozen(prop)||deepFreezeValue(prop)}Object.seal(value)}};const LEAF=Symbol(\"ArrayKeyedMap\"),emptyMap$1=new Map;class ArrayKeyedMap{constructor(existing){if(this._base=new Map,existing instanceof ArrayKeyedMap)for(const[k,v]of existing.entries())this.set(k,v);else if(existing)for(const[k,v]of existing)this.set(k,v);return this}get(key){const ks=Array.isArray(key)?key:[key];let map=this._base;return ks.forEach(k=>{var _map$get;map=null!==(_map$get=map.get(k))&&void 0!==_map$get?_map$get:emptyMap$1}),void 0===map?void 0:map.get(LEAF)}set(key,value){const ks=Array.isArray(key)?key:[key];let map=this._base,next=map;return ks.forEach(k=>{next=map.get(k),next||(next=new Map,map.set(k,next)),map=next}),next.set(LEAF,value),this}delete(key){const ks=Array.isArray(key)?key:[key];let map=this._base,next=map;return ks.forEach(k=>{next=map.get(k),next||(next=new Map,map.set(k,next)),map=next}),next.delete(LEAF),this}entries(){const answer=[];return function recurse(level,prefix){level.forEach((v,k)=>{k===LEAF?answer.push([prefix,v]):recurse(v,prefix.concat(k))})}(this._base,[]),answer.values()}toBuiltInMap(){return new Map(this.entries())}}var Recoil_ArrayKeyedMap=ArrayKeyedMap;var Recoil_cacheWithReferenceEquality=function(){return new Recoil_ArrayKeyedMap};var Recoil_everySet=function(set,callback,context){const iterator=set.entries();let current=iterator.next();for(;!current.done;){const entry=current.value;if(!callback.call(context,entry[1],entry[0],set))return!1;current=iterator.next()}return!0};var Recoil_equalsSet=function(one,two){return one.size===two.size&&Recoil_everySet(one,value=>two.has(value))};var Recoil_PerformanceTimings={startPerfBlock:function(_id){return()=>null}};Object.freeze(new Set);const{mapBySettingInMap:mapBySettingInMap$2,mapByUpdatingInMap:mapByUpdatingInMap$2,setByAddingToSet:setByAddingToSet$3,setByDeletingFromSet:setByDeletingFromSet$1}=Recoil_CopyOnWrite,{detectCircularDependencies:detectCircularDependencies$1,getNodeLoadable:getNodeLoadable$2,setNodeValue:setNodeValue$4}=Recoil_FunctionalCore,{loadableWithError:loadableWithError$1,loadableWithPromise:loadableWithPromise$1,loadableWithValue:loadableWithValue$1}=Recoil_Loadable,{DEFAULT_VALUE:DEFAULT_VALUE$3,RecoilValueNotReady:RecoilValueNotReady$2,registerNode:registerNode$1}=Recoil_Node,{startPerfBlock:startPerfBlock$1}=Recoil_PerformanceTimings,{isRecoilValue:isRecoilValue$1}=require$$2,emptySet$2=Object.freeze(new Set);function cacheKeyFromDepValues(depValues){const answer=[];for(const key of Array.from(depValues.keys()).sort()){const loadable=Recoil_nullthrows(depValues.get(key));answer.push(key),answer.push(loadable.contents)}return answer}var Recoil_selector=function(options){const{key:key,get:get,cacheImplementation_UNSTABLE:cacheImplementation}=options,set=null!=options.set?options.set:void 0;let cache=null!=cacheImplementation?cacheImplementation:Recoil_cacheWithReferenceEquality();function getFromCache(store,state){var _state$nodeDeps$get;let newState=state;const currentDeps=null!==(_state$nodeDeps$get=state.nodeDeps.get(key))&&void 0!==_state$nodeDeps$get?_state$nodeDeps$get:emptySet$2,cacheKey=cacheKeyFromDepValues(new Map(Array.from(currentDeps).sort().map(depKey=>{const[nextState,loadable]=getNodeLoadable$2(store,newState,depKey);return newState=nextState,[depKey,loadable]}))),cached=cache.get(cacheKey);if(null!=cached)return[newState,cached];const[nextState,loadable,newDepValues]=function(store,state){var _state$nodeDeps$get2;const[newStateFromEvaluate,loadable,newDepValues]=function(store,state){const endPerfBlock=startPerfBlock$1(key);let newState=state;const depValues=new Map;function getRecoilValue({key:key}){let loadable;if([newState,loadable]=getNodeLoadable$2(store,newState,key),depValues.set(key,loadable),\"hasValue\"===loadable.state)return loadable.contents;throw loadable.contents}try{const output=get({get:getRecoilValue}),result=isRecoilValue$1(output)?getRecoilValue(output):output,loadable=Recoil_isPromise(result)?loadableWithPromise$1(result.finally(endPerfBlock)):(endPerfBlock(),loadableWithValue$1(result));return[newState,loadable,depValues]}catch(errorOrDepPromise){const loadable=Recoil_isPromise(errorOrDepPromise)?loadableWithPromise$1(errorOrDepPromise.then(()=>{let loadable=loadableWithError$1(new Error(\"Internal Recoil Selector Error\"));if(store.replaceState(asyncState=>{let newAsyncState;return[newAsyncState,loadable]=getFromCache(store,asyncState),newAsyncState}),\"hasError\"===loadable.state)throw loadable.contents;return loadable.contents}).finally(endPerfBlock)):(endPerfBlock(),loadableWithError$1(errorOrDepPromise));return[newState,loadable,depValues]}}(store,state);let newState=newStateFromEvaluate;const oldDeps=null!==(_state$nodeDeps$get2=state.nodeDeps.get(key))&&void 0!==_state$nodeDeps$get2?_state$nodeDeps$get2:emptySet$2,newDeps=new Set(newDepValues.keys());newState=Recoil_equalsSet(oldDeps,newDeps)?newState:{...newState,nodeDeps:mapBySettingInMap$2(newState.nodeDeps,key,newDeps)};const addedDeps=Recoil_differenceSets(newDeps,oldDeps),removedDeps=Recoil_differenceSets(oldDeps,newDeps);for(const upstreamNode of addedDeps)newState={...newState,nodeToNodeSubscriptions:mapByUpdatingInMap$2(newState.nodeToNodeSubscriptions,upstreamNode,subs=>setByAddingToSet$3(null!=subs?subs:emptySet$2,key))};for(const upstreamNode of removedDeps)newState={...newState,nodeToNodeSubscriptions:mapByUpdatingInMap$2(newState.nodeToNodeSubscriptions,upstreamNode,subs=>setByDeletingFromSet$1(null!=subs?subs:emptySet$2,key))};return[newState,loadable,newDepValues]}(store,newState);newState=nextState;const newCacheKey=cacheKeyFromDepValues(newDepValues);return function(store,cacheKey,loadable){\"loading\"!==loadable.state?!0==!options.dangerouslyAllowMutability&&Recoil_deepFreezeValue(loadable.contents):loadable.contents.then(result=>(!0==!options.dangerouslyAllowMutability&&Recoil_deepFreezeValue(result),cache=cache.set(cacheKey,loadableWithValue$1(result)),store.fireNodeSubscriptions(new Set([key]),\"now\"),result)).catch(error=>(Recoil_isPromise(error)||(!0==!options.dangerouslyAllowMutability&&Recoil_deepFreezeValue(error),cache=cache.set(cacheKey,loadableWithError$1(error)),store.fireNodeSubscriptions(new Set([key]),\"now\")),error)),cache=cache.set(cacheKey,loadable)}(store,newCacheKey,loadable),[newState,loadable]}function myGet(store,state){return getFromCache(store,state)}if(null!=set){return registerNode$1({key:key,options:options,get:myGet,set:function(store,state,newValue){let newState=state;const writtenNodes=new Set;function getRecoilValue({key:key}){const[nextState,loadable]=getNodeLoadable$2(store,newState,key);if(newState=nextState,\"hasValue\"===loadable.state)return loadable.contents;throw\"loading\"===loadable.state?new RecoilValueNotReady$2(key):loadable.contents}function setRecoilState(recoilState,valueOrUpdater){const newValue=\"function\"==typeof valueOrUpdater?valueOrUpdater(getRecoilValue(recoilState)):valueOrUpdater;let written;[newState,written]=setNodeValue$4(store,newState,recoilState.key,newValue),written.forEach(atom=>writtenNodes.add(atom))}return set({set:setRecoilState,get:getRecoilValue,reset:function(recoilState){setRecoilState(recoilState,DEFAULT_VALUE$3)}},newValue),[newState,writtenNodes]}})}return registerNode$1({key:key,options:options,get:myGet})};const{loadableWithValue:loadableWithValue$2}=Recoil_Loadable,{DEFAULT_VALUE:DEFAULT_VALUE$4,DefaultValue:DefaultValue$1,registerNode:registerNode$2}=Recoil_Node,{isRecoilValue:isRecoilValue$2}=require$$2,{mapByDeletingFromMap:mapByDeletingFromMap$2,mapBySettingInMap:mapBySettingInMap$3,setByAddingToSet:setByAddingToSet$4}=Recoil_CopyOnWrite;function atom(options){const{default:optionsDefault,...restOptions}=options;return isRecoilValue$2(optionsDefault)||Recoil_isPromise(optionsDefault)?function(options){const base=atom({...options,default:DEFAULT_VALUE$4,persistence_UNSTABLE:void 0===options.persistence_UNSTABLE?void 0:{...options.persistence_UNSTABLE,validator:storedValue=>storedValue instanceof DefaultValue$1?storedValue:Recoil_nullthrows(options.persistence_UNSTABLE).validator(storedValue,DEFAULT_VALUE$4)}});return Recoil_selector({key:options.key+\"__withFallback\",get:({get:get})=>{const baseValue=get(base);return baseValue instanceof DefaultValue$1?options.default:baseValue},set:({set:set},newValue)=>set(base,newValue),dangerouslyAllowMutability:options.dangerouslyAllowMutability})}({...restOptions,default:optionsDefault}):function(options){const{key:key,persistence_UNSTABLE:persistence}=options;return registerNode$2({key:key,options:options,get:(_store,state)=>{if(state.atomValues.has(key))return[state,Recoil_nullthrows(state.atomValues.get(key))];if(state.nonvalidatedAtoms.has(key)){if(null==persistence)return[state,loadableWithValue$2(options.default)];const nonvalidatedValue=state.nonvalidatedAtoms.get(key),validatedValue=persistence.validator(nonvalidatedValue,DEFAULT_VALUE$4);return validatedValue instanceof DefaultValue$1?[{...state,nonvalidatedAtoms:mapByDeletingFromMap$2(state.nonvalidatedAtoms,key)},loadableWithValue$2(options.default)]:[{...state,atomValues:mapBySettingInMap$3(state.atomValues,key,loadableWithValue$2(validatedValue)),nonvalidatedAtoms:mapByDeletingFromMap$2(state.nonvalidatedAtoms,key)},loadableWithValue$2(validatedValue)]}return[state,loadableWithValue$2(options.default)]},set:(_store,state,newValue)=>(!0!==options.dangerouslyAllowMutability&&Recoil_deepFreezeValue(newValue),[{...state,dirtyAtoms:setByAddingToSet$4(state.dirtyAtoms,key),atomValues:newValue instanceof DefaultValue$1?mapByDeletingFromMap$2(state.atomValues,key):mapBySettingInMap$3(state.atomValues,key,loadableWithValue$2(newValue)),nonvalidatedAtoms:mapByDeletingFromMap$2(state.nonvalidatedAtoms,key)},new Set([key])])})}({...restOptions,default:optionsDefault})}var Recoil_atom=atom;var Recoil_stableStringify=function(x,opt={allowFunctions:!1}){return function stringify(x,opt,key){if(\"string\"==typeof x&&!x.includes('\"')&&!x.includes(\"\\\\\"))return`\"${x}\"`;switch(typeof x){case\"undefined\":return\"\";case\"boolean\":return x?\"true\":\"false\";case\"number\":case\"symbol\":return String(x);case\"string\":return JSON.stringify(x);case\"function\":if(!0!==(null==opt?void 0:opt.allowFunctions))throw new Error(\"Attempt to serialize function in a Recoil cache key\");return`__FUNCTION(${x.name})__`}return null===x?\"null\":\"object\"!=typeof x?null!==(_JSON$stringify=JSON.stringify(x))&&void 0!==_JSON$stringify?_JSON$stringify:\"\":Recoil_isPromise(x)?\"__PROMISE__\":Array.isArray(x)?`[${x.map((v,i)=>stringify(v,opt,i.toString()))}]`:\"function\"==typeof x.toJSON?stringify(x.toJSON(key),opt,key):x instanceof Map?stringify(Array.from(x).reduce((obj,[k,v])=>({...obj,[\"string\"==typeof k?k:stringify(k,opt)]:v}),{}),opt,key):x instanceof Set?stringify(Array.from(x).sort((a,b)=>stringify(a,opt).localeCompare(stringify(b,opt))),opt,key):null!=x[Symbol.iterator]&&\"function\"==typeof x[Symbol.iterator]?stringify(Array.from(x),opt,key):`{${Object.keys(x).filter(key=>void 0!==x[key]).sort().map(key=>`${stringify(key,opt)}:${stringify(x[key],opt,key)}`).join(\",\")}}`;var _JSON$stringify}(x,opt)};var Recoil_cacheWithValueEquality=function(){const map=new Map,cache={get:key=>map.get(Recoil_stableStringify(key)),set:(key,value)=>(map.set(Recoil_stableStringify(key),value),cache),map:map};return cache};let nextIndex=0;var Recoil_selectorFamily=function(options){var _options$cacheImpleme,_options$cacheImpleme2;let selectorCache=null!==(_options$cacheImpleme=null===(_options$cacheImpleme2=options.cacheImplementationForParams_UNSTABLE)||void 0===_options$cacheImpleme2?void 0:_options$cacheImpleme2.call(options))&&void 0!==_options$cacheImpleme?_options$cacheImpleme:Recoil_cacheWithValueEquality();return params=>{var _stableStringify,_options$cacheImpleme3;const cachedSelector=selectorCache.get(params);if(null!=cachedSelector)return cachedSelector;const myKey=`${options.key}__selectorFamily/${null!==(_stableStringify=Recoil_stableStringify(params,{allowFunctions:!0}))&&void 0!==_stableStringify?_stableStringify:\"void\"}/${nextIndex++}`,myGet=callbacks=>options.get(params)(callbacks),myCacheImplementation=null===(_options$cacheImpleme3=options.cacheImplementation_UNSTABLE)||void 0===_options$cacheImpleme3?void 0:_options$cacheImpleme3.call(options);let newSelector;if(null!=options.set){const set=options.set;newSelector=Recoil_selector({key:myKey,get:myGet,set:(callbacks,newValue)=>set(params)(callbacks,newValue),cacheImplementation_UNSTABLE:myCacheImplementation,dangerouslyAllowMutability:options.dangerouslyAllowMutability})}else newSelector=Recoil_selector({key:myKey,get:myGet,cacheImplementation_UNSTABLE:myCacheImplementation,dangerouslyAllowMutability:options.dangerouslyAllowMutability});return selectorCache=selectorCache.set(params,newSelector),newSelector}},ParameterizedAtomTaggedValue_DEPRECATED=getCjsExportFromNamespace(Object.freeze({__proto__:null}));const{DEFAULT_VALUE:DEFAULT_VALUE$5,DefaultValue:DefaultValue$2}=Recoil_Node;function isSuperset(setA,setB){return Recoil_everySet(setB,b=>setA.has(b))}const pick=(object,chosenKeys)=>Array.from(chosenKeys).reduce((obj,key)=>({...obj,[key]:object[key]}),{});function mapPersistenceSettings_DEPRECATED(settings){if(null==settings)return;const{...passthrough}=settings;return{...passthrough,validator:storedValue=>storedValue instanceof ParameterizedAtomTaggedValue_DEPRECATED?new ParameterizedAtomTaggedValue_DEPRECATED(storedValue.value.filter(([keys,map])=>keys instanceof Set&&map instanceof Map).map(([keys,map])=>[keys,Array.from(map.entries()).reduce((acc,[k,v])=>{const validatedValue=passthrough.validator(v,DEFAULT_VALUE$5);return validatedValue instanceof DefaultValue$2||acc.set(k,validatedValue),acc},new Map)])):passthrough.validator(storedValue,DEFAULT_VALUE$5)}}var Recoil_atomFamily=function(options){let atomCache=Recoil_cacheWithValueEquality();const legacyAtomOptions={key:options.key,default:DEFAULT_VALUE$5,persistence_UNSTABLE:mapPersistenceSettings_DEPRECATED(options.persistence_UNSTABLE)};let legacyAtom;legacyAtom=Recoil_atom(legacyAtomOptions);const atomFamilyDefault=Recoil_selectorFamily({key:options.key+\"__atomFamily/Default\",get:param=>({get:get})=>{const legacyValue=get(\"function\"==typeof legacyAtom?legacyAtom(param):legacyAtom);if(!(legacyValue instanceof DefaultValue$2)){const upgradedValue=function(baseValue,parameter){if(!(baseValue instanceof ParameterizedAtomTaggedValue_DEPRECATED))return baseValue;if(\"object\"!=typeof parameter||null==parameter||Array.isArray(parameter))return DEFAULT_VALUE$5;const entries=baseValue.value,parameterKeys=new Set(Object.keys(parameter));for(const[entryParameterKeys,entryMap]of entries)if(isSuperset(parameterKeys,entryParameterKeys)){const contextOrSubcontext=parameterKeys.size===entryParameterKeys.size?parameter:pick(parameter,entryParameterKeys),value=entryMap.get(Recoil_stableStringify(contextOrSubcontext));if(void 0!==value)return value}return DEFAULT_VALUE$5}(legacyValue,param);if(!(upgradedValue instanceof DefaultValue$2))return upgradedValue}return\"function\"==typeof options.default?options.default(param):options.default},dangerouslyAllowMutability:options.dangerouslyAllowMutability});return params=>{var _stableStringify;const cachedAtom=atomCache.get(params);if(null!=cachedAtom)return cachedAtom;const newAtom=Recoil_atom({key:`${options.key}__${null!==(_stableStringify=Recoil_stableStringify(params))&&void 0!==_stableStringify?_stableStringify:\"void\"}`,default:atomFamilyDefault(params),persistence_UNSTABLE:options.persistence_UNSTABLE,dangerouslyAllowMutability:options.dangerouslyAllowMutability});return atomCache=atomCache.set(params,newAtom),newAtom}};const constantSelector=Recoil_selectorFamily({key:\"__constant\",get:constant=>()=>constant,cacheImplementationForParams_UNSTABLE:Recoil_cacheWithReferenceEquality});var Recoil_constSelector=function(constant){return constantSelector(constant)};const throwingSelector=Recoil_selectorFamily({key:\"__error\",get:message=>()=>{throw new Error(message)},cacheImplementationForParams_UNSTABLE:Recoil_cacheWithReferenceEquality});var Recoil_errorSelector=function(message){return throwingSelector(message)};var Recoil_readOnlySelector=function(atom){return atom};const{loadableWithError:loadableWithError$2,loadableWithPromise:loadableWithPromise$2,loadableWithValue:loadableWithValue$3}=Recoil_Loadable;function concurrentRequests(getRecoilValue,deps){const results=Array(deps.length).fill(void 0),exceptions=Array(deps.length).fill(void 0);for(const[i,dep]of deps.entries())try{results[i]=getRecoilValue(dep)}catch(e){exceptions[i]=e}return[results,exceptions]}function isError(exp){return null!=exp&&!Recoil_isPromise(exp)}function unwrapDependencies(dependencies){return Array.isArray(dependencies)?dependencies:Object.getOwnPropertyNames(dependencies).map(key=>dependencies[key])}function wrapResults(dependencies,results){return Array.isArray(dependencies)?results:Object.getOwnPropertyNames(dependencies).reduce((out,key,idx)=>({...out,[key]:results[idx]}),{})}function wrapLoadables(dependencies,results,exceptions){return wrapResults(dependencies,exceptions.map((exception,idx)=>null==exception?loadableWithValue$3(results[idx]):Recoil_isPromise(exception)?loadableWithPromise$2(exception):loadableWithError$2(exception)))}var Recoil_WaitFor={waitForNone:Recoil_selectorFamily({key:\"__waitForNone\",get:dependencies=>({get:get})=>{const deps=unwrapDependencies(dependencies),[results,exceptions]=concurrentRequests(get,deps);return wrapLoadables(dependencies,results,exceptions)}}),waitForAny:Recoil_selectorFamily({key:\"__waitForAny\",get:dependencies=>({get:get})=>{const deps=unwrapDependencies(dependencies),[results,exceptions]=concurrentRequests(get,deps);if(exceptions.some(exp=>null==exp))return wrapLoadables(dependencies,results,exceptions);if(exceptions.every(isError))throw exceptions.find(isError);throw new Promise((resolve,reject)=>{for(const[i,exp]of exceptions.entries())Recoil_isPromise(exp)&&exp.then(result=>{results[i]=result,exceptions[i]=null,resolve(wrapLoadables(dependencies,results,exceptions))}).catch(error=>{exceptions[i]=error,exceptions.every(isError)&&reject(exceptions[0])})})}}),waitForAll:Recoil_selectorFamily({key:\"__waitForAll\",get:dependencies=>({get:get})=>{const deps=unwrapDependencies(dependencies),[results,exceptions]=concurrentRequests(get,deps);if(exceptions.every(exp=>null==exp))return wrapResults(dependencies,results);const error=exceptions.find(isError);if(null!=error)throw error;throw Promise.all(exceptions).then(results=>wrapResults(dependencies,results))}}),noWait:Recoil_selectorFamily({key:\"__noWait\",get:dependency=>({get:get})=>{try{return loadableWithValue$3(get(dependency))}catch(exception){return Recoil_isPromise(exception)?loadableWithPromise$2(exception):loadableWithError$2(exception)}}})};const{DefaultValue:DefaultValue$3}=Recoil_Node,{RecoilRoot:RecoilRoot$1}=Recoil_RecoilRoot_react,{isRecoilValue:isRecoilValue$3}=require$$2,{useGotoRecoilSnapshot:useGotoRecoilSnapshot$1,useRecoilCallback:useRecoilCallback$1,useRecoilSnapshot:useRecoilSnapshot$1,useRecoilState:useRecoilState$1,useRecoilStateLoadable:useRecoilStateLoadable$1,useRecoilTransactionObserver:useRecoilTransactionObserver$1,useRecoilValue:useRecoilValue$1,useRecoilValueLoadable:useRecoilValueLoadable$1,useResetRecoilState:useResetRecoilState$1,useSetRecoilState:useSetRecoilState$1,useSetUnvalidatedAtomValues:useSetUnvalidatedAtomValues$1,useTransactionObservation_DEPRECATED:useTransactionObservation_DEPRECATED$1}=Recoil_Hooks,{noWait:noWait$1,waitForAll:waitForAll$1,waitForAny:waitForAny$1,waitForNone:waitForNone$1}=Recoil_WaitFor;var Recoil_index={DefaultValue:DefaultValue$3,RecoilRoot:RecoilRoot$1,atom:Recoil_atom,selector:Recoil_selector,atomFamily:Recoil_atomFamily,selectorFamily:Recoil_selectorFamily,constSelector:Recoil_constSelector,errorSelector:Recoil_errorSelector,readOnlySelector:Recoil_readOnlySelector,useRecoilValue:useRecoilValue$1,useRecoilValueLoadable:useRecoilValueLoadable$1,useRecoilState:useRecoilState$1,useRecoilStateLoadable:useRecoilStateLoadable$1,useSetRecoilState:useSetRecoilState$1,useResetRecoilState:useResetRecoilState$1,useRecoilCallback:useRecoilCallback$1,useGotoRecoilSnapshot:useGotoRecoilSnapshot$1,useRecoilSnapshot:useRecoilSnapshot$1,useRecoilTransactionObserver_UNSTABLE:useRecoilTransactionObserver$1,useTransactionObservation_UNSTABLE:useTransactionObservation_DEPRECATED$1,useSetUnvalidatedAtomValues_UNSTABLE:useSetUnvalidatedAtomValues$1,noWait:noWait$1,waitForNone:waitForNone$1,waitForAny:waitForAny$1,waitForAll:waitForAll$1,isRecoilValue:isRecoilValue$3},Recoil_index_1=Recoil_index.DefaultValue,Recoil_index_2=Recoil_index.RecoilRoot,Recoil_index_3=Recoil_index.atom,Recoil_index_4=Recoil_index.selector,Recoil_index_5=Recoil_index.atomFamily,Recoil_index_6=Recoil_index.selectorFamily,Recoil_index_7=Recoil_index.constSelector,Recoil_index_8=Recoil_index.errorSelector,Recoil_index_9=Recoil_index.readOnlySelector,Recoil_index_10=Recoil_index.useRecoilValue,Recoil_index_11=Recoil_index.useRecoilValueLoadable,Recoil_index_12=Recoil_index.useRecoilState,Recoil_index_13=Recoil_index.useRecoilStateLoadable,Recoil_index_14=Recoil_index.useSetRecoilState,Recoil_index_15=Recoil_index.useResetRecoilState,Recoil_index_16=Recoil_index.useRecoilCallback,Recoil_index_17=Recoil_index.useGotoRecoilSnapshot,Recoil_index_18=Recoil_index.useRecoilSnapshot,Recoil_index_19=Recoil_index.useRecoilTransactionObserver_UNSTABLE,Recoil_index_20=Recoil_index.useTransactionObservation_UNSTABLE,Recoil_index_21=Recoil_index.useSetUnvalidatedAtomValues_UNSTABLE,Recoil_index_22=Recoil_index.noWait,Recoil_index_23=Recoil_index.waitForNone,Recoil_index_24=Recoil_index.waitForAny,Recoil_index_25=Recoil_index.waitForAll,Recoil_index_26=Recoil_index.isRecoilValue;exports.DefaultValue=Recoil_index_1,exports.RecoilRoot=Recoil_index_2,exports.atom=Recoil_index_3,exports.atomFamily=Recoil_index_5,exports.constSelector=Recoil_index_7,exports.default=Recoil_index,exports.errorSelector=Recoil_index_8,exports.isRecoilValue=Recoil_index_26,exports.noWait=Recoil_index_22,exports.readOnlySelector=Recoil_index_9,exports.selector=Recoil_index_4,exports.selectorFamily=Recoil_index_6,exports.useGotoRecoilSnapshot=Recoil_index_17,exports.useRecoilCallback=Recoil_index_16,exports.useRecoilSnapshot=Recoil_index_18,exports.useRecoilState=Recoil_index_12,exports.useRecoilStateLoadable=Recoil_index_13,exports.useRecoilTransactionObserver_UNSTABLE=Recoil_index_19,exports.useRecoilValue=Recoil_index_10,exports.useRecoilValueLoadable=Recoil_index_11,exports.useResetRecoilState=Recoil_index_15,exports.useSetRecoilState=Recoil_index_14,exports.useSetUnvalidatedAtomValues_UNSTABLE=Recoil_index_21,exports.useTransactionObservation_UNSTABLE=Recoil_index_20,exports.waitForAll=Recoil_index_25,exports.waitForAny=Recoil_index_24,exports.waitForNone=Recoil_index_23;\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","// manage localStorage\n\nconst StorageKey = 'yacd.haishan.me';\n\nfunction loadState() {\n try {\n const serialized = localStorage.getItem(StorageKey);\n if (!serialized) return undefined;\n return JSON.parse(serialized);\n } catch (err) {\n return undefined;\n }\n}\n\nfunction saveState(state) {\n try {\n const serialized = JSON.stringify(state);\n localStorage.setItem(StorageKey, serialized);\n } catch (err) {\n // ignore\n }\n}\n\nfunction clearState() {\n try {\n localStorage.removeItem(StorageKey);\n } catch (err) {\n // ignore\n }\n}\n\nexport { loadState, saveState, clearState };\n","import { clearState, loadState, saveState } from '../misc/storage';\nimport { debounce, trimTrailingSlash } from '../misc/utils';\nimport { fetchConfigs } from './configs';\nimport { closeModal } from './modals';\n\nexport const getClashAPIConfig = (s) => {\n const idx = s.app.selectedClashAPIConfigIndex;\n return s.app.clashAPIConfigs[idx];\n};\nexport const getTheme = (s) => s.app.theme;\nexport const getSelectedChartStyleIndex = (s) => s.app.selectedChartStyleIndex;\nexport const getLatencyTestUrl = (s) => s.app.latencyTestUrl;\nexport const getCollapsibleIsOpen = (s) => s.app.collapsibleIsOpen;\nexport const getProxySortBy = (s) => s.app.proxySortBy;\nexport const getHideUnavailableProxies = (s) => s.app.hideUnavailableProxies;\nexport const getAutoCloseOldConns = (s) => s.app.autoCloseOldConns;\n\nconst saveStateDebounced = debounce(saveState, 600);\n\nexport function updateClashAPIConfig({ baseURL, secret }) {\n return async (dispatch, getState) => {\n const clashAPIConfig = { baseURL, secret };\n dispatch('appUpdateClashAPIConfig', (s) => {\n s.app.clashAPIConfigs[0] = clashAPIConfig;\n });\n // side effect\n saveState(getState().app);\n dispatch(closeModal('apiConfig'));\n dispatch(fetchConfigs(clashAPIConfig));\n };\n}\n\nconst bodyElement = document.body;\nfunction setTheme(theme = 'dark') {\n if (theme === 'dark') {\n bodyElement.classList.remove('light');\n bodyElement.classList.add('dark');\n } else {\n bodyElement.classList.remove('dark');\n bodyElement.classList.add('light');\n }\n}\n\nexport function switchTheme() {\n return (dispatch, getState) => {\n const currentTheme = getTheme(getState());\n const theme = currentTheme === 'light' ? 'dark' : 'light';\n // side effect\n setTheme(theme);\n dispatch('storeSwitchTheme', (s) => {\n s.app.theme = theme;\n });\n // side effect\n saveState(getState().app);\n };\n}\n\nexport function clearStorage() {\n clearState();\n try {\n window.location.reload();\n } catch (err) {\n // ignore\n }\n}\n\nexport function selectChartStyleIndex(selectedChartStyleIndex) {\n return (dispatch, getState) => {\n dispatch('appSelectChartStyleIndex', (s) => {\n s.app.selectedChartStyleIndex = selectedChartStyleIndex;\n });\n // side effect\n saveState(getState().app);\n };\n}\n\nexport function updateAppConfig(name, value) {\n return (dispatch, getState) => {\n dispatch('appUpdateAppConfig', (s) => {\n s.app[name] = value;\n });\n // side effect\n saveState(getState().app);\n };\n}\n\nexport function updateCollapsibleIsOpen(prefix, name, v) {\n return (dispatch, getState) => {\n dispatch('updateCollapsibleIsOpen', (s) => {\n s.app.collapsibleIsOpen[`${prefix}:${name}`] = v;\n });\n // side effect\n saveStateDebounced(getState().app);\n };\n}\n\nconst defaultClashAPIConfig = {\n baseURL: 'http://127.0.0.1:7892',\n secret: '',\n};\n// type Theme = 'light' | 'dark';\nconst defaultState = {\n selectedClashAPIConfigIndex: 0,\n clashAPIConfigs: [defaultClashAPIConfig],\n\n latencyTestUrl: 'http://www.gstatic.com/generate_204',\n selectedChartStyleIndex: 0,\n theme: 'dark',\n\n // type { [string]: boolean }\n collapsibleIsOpen: {},\n // how proxies are sorted in a group or provider\n proxySortBy: 'Natural',\n hideUnavailableProxies: false,\n autoCloseOldConns: false,\n};\n\nfunction parseConfigQueryString() {\n const { search } = window.location;\n const collector = {};\n if (typeof search !== 'string' || search === '') return collector;\n const qs = search.replace(/^\\?/, '').split('&');\n for (let i = 0; i < qs.length; i++) {\n const [k, v] = qs[i].split('=');\n collector[k] = encodeURIComponent(v);\n }\n return collector;\n}\n\nexport function initialState() {\n let s = loadState();\n s = { ...defaultState, ...s };\n const query = parseConfigQueryString();\n\n const conf = s.clashAPIConfigs[s.selectedClashAPIConfigIndex];\n const url = new URL(conf.baseURL);\n if (query.hostname) {\n url.hostname = query.hostname;\n }\n if (query.port) {\n url.port = query.port;\n }\n // url.href is a stringifier and it appends a trailing slash\n // that is not we want\n conf.baseURL = trimTrailingSlash(url.href);\n\n if (query.secret) {\n conf.secret = query.secret;\n }\n\n if (query.theme) {\n if (query.theme === 'dark' || query.theme === 'light') {\n s.theme = query.theme;\n }\n }\n // set initial theme\n setTheme(s.theme);\n return s;\n}\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"_2-70itbuF1\",\"header\":\"JKE-0c5hxF\",\"icon\":\"o2VhY_cs6Z\",\"body\":\"_3QDGxJ_pWs\",\"hostnamePort\":\"tTZzzcEsTA\",\"error\":\"_2cCgtjpQZP\",\"footer\":\"_3OT00Mqmrw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"btn\":\"_796AqwOFs_\",\"minimal\":\"_1bLZvI40oA\",\"btnStart\":\"_1SrCTG7yDt\",\"loadingContainer\":\"_39VuJRXAmL\"};","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = require(\"react\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require(\"prop-types\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _focusManager = require(\"../helpers/focusManager\");\n\nvar focusManager = _interopRequireWildcard(_focusManager);\n\nvar _scopeTab = require(\"../helpers/scopeTab\");\n\nvar _scopeTab2 = _interopRequireDefault(_scopeTab);\n\nvar _ariaAppHider = require(\"../helpers/ariaAppHider\");\n\nvar ariaAppHider = _interopRequireWildcard(_ariaAppHider);\n\nvar _classList = require(\"../helpers/classList\");\n\nvar classList = _interopRequireWildcard(_classList);\n\nvar _safeHTMLElement = require(\"../helpers/safeHTMLElement\");\n\nvar _safeHTMLElement2 = _interopRequireDefault(_safeHTMLElement);\n\nvar _portalOpenInstances = require(\"../helpers/portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nrequire(\"../helpers/bodyTrap\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// so that our CSS is statically analyzable\nvar CLASS_NAMES = {\n overlay: \"ReactModal__Overlay\",\n content: \"ReactModal__Content\"\n};\n\nvar TAB_KEY = 9;\nvar ESC_KEY = 27;\n\nvar ariaHiddenInstances = 0;\n\nvar ModalPortal = function (_Component) {\n _inherits(ModalPortal, _Component);\n\n function ModalPortal(props) {\n _classCallCheck(this, ModalPortal);\n\n var _this = _possibleConstructorReturn(this, (ModalPortal.__proto__ || Object.getPrototypeOf(ModalPortal)).call(this, props));\n\n _this.setOverlayRef = function (overlay) {\n _this.overlay = overlay;\n _this.props.overlayRef && _this.props.overlayRef(overlay);\n };\n\n _this.setContentRef = function (content) {\n _this.content = content;\n _this.props.contentRef && _this.props.contentRef(content);\n };\n\n _this.afterClose = function () {\n var _this$props = _this.props,\n appElement = _this$props.appElement,\n ariaHideApp = _this$props.ariaHideApp,\n htmlOpenClassName = _this$props.htmlOpenClassName,\n bodyOpenClassName = _this$props.bodyOpenClassName;\n\n // Remove classes.\n\n bodyOpenClassName && classList.remove(document.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.remove(document.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n // Reset aria-hidden attribute if all modals have been removed\n if (ariaHideApp && ariaHiddenInstances > 0) {\n ariaHiddenInstances -= 1;\n\n if (ariaHiddenInstances === 0) {\n ariaAppHider.show(appElement);\n }\n }\n\n if (_this.props.shouldFocusAfterRender) {\n if (_this.props.shouldReturnFocusAfterClose) {\n focusManager.returnFocus();\n focusManager.teardownScopedFocus();\n } else {\n focusManager.popWithoutFocus();\n }\n }\n\n if (_this.props.onAfterClose) {\n _this.props.onAfterClose();\n }\n\n _portalOpenInstances2.default.deregister(_this);\n };\n\n _this.open = function () {\n _this.beforeOpen();\n if (_this.state.afterOpen && _this.state.beforeClose) {\n clearTimeout(_this.closeTimer);\n _this.setState({ beforeClose: false });\n } else {\n if (_this.props.shouldFocusAfterRender) {\n focusManager.setupScopedFocus(_this.node);\n focusManager.markForFocusLater();\n }\n\n _this.setState({ isOpen: true }, function () {\n _this.setState({ afterOpen: true });\n\n if (_this.props.isOpen && _this.props.onAfterOpen) {\n _this.props.onAfterOpen({\n overlayEl: _this.overlay,\n contentEl: _this.content\n });\n }\n });\n }\n };\n\n _this.close = function () {\n if (_this.props.closeTimeoutMS > 0) {\n _this.closeWithTimeout();\n } else {\n _this.closeWithoutTimeout();\n }\n };\n\n _this.focusContent = function () {\n return _this.content && !_this.contentHasFocus() && _this.content.focus();\n };\n\n _this.closeWithTimeout = function () {\n var closesAt = Date.now() + _this.props.closeTimeoutMS;\n _this.setState({ beforeClose: true, closesAt: closesAt }, function () {\n _this.closeTimer = setTimeout(_this.closeWithoutTimeout, _this.state.closesAt - Date.now());\n });\n };\n\n _this.closeWithoutTimeout = function () {\n _this.setState({\n beforeClose: false,\n isOpen: false,\n afterOpen: false,\n closesAt: null\n }, _this.afterClose);\n };\n\n _this.handleKeyDown = function (event) {\n if (event.keyCode === TAB_KEY) {\n (0, _scopeTab2.default)(_this.content, event);\n }\n\n if (_this.props.shouldCloseOnEsc && event.keyCode === ESC_KEY) {\n event.stopPropagation();\n _this.requestClose(event);\n }\n };\n\n _this.handleOverlayOnClick = function (event) {\n if (_this.shouldClose === null) {\n _this.shouldClose = true;\n }\n\n if (_this.shouldClose && _this.props.shouldCloseOnOverlayClick) {\n if (_this.ownerHandlesClose()) {\n _this.requestClose(event);\n } else {\n _this.focusContent();\n }\n }\n _this.shouldClose = null;\n };\n\n _this.handleContentOnMouseUp = function () {\n _this.shouldClose = false;\n };\n\n _this.handleOverlayOnMouseDown = function (event) {\n if (!_this.props.shouldCloseOnOverlayClick && event.target == _this.overlay) {\n event.preventDefault();\n }\n };\n\n _this.handleContentOnClick = function () {\n _this.shouldClose = false;\n };\n\n _this.handleContentOnMouseDown = function () {\n _this.shouldClose = false;\n };\n\n _this.requestClose = function (event) {\n return _this.ownerHandlesClose() && _this.props.onRequestClose(event);\n };\n\n _this.ownerHandlesClose = function () {\n return _this.props.onRequestClose;\n };\n\n _this.shouldBeClosed = function () {\n return !_this.state.isOpen && !_this.state.beforeClose;\n };\n\n _this.contentHasFocus = function () {\n return document.activeElement === _this.content || _this.content.contains(document.activeElement);\n };\n\n _this.buildClassName = function (which, additional) {\n var classNames = (typeof additional === \"undefined\" ? \"undefined\" : _typeof(additional)) === \"object\" ? additional : {\n base: CLASS_NAMES[which],\n afterOpen: CLASS_NAMES[which] + \"--after-open\",\n beforeClose: CLASS_NAMES[which] + \"--before-close\"\n };\n var className = classNames.base;\n if (_this.state.afterOpen) {\n className = className + \" \" + classNames.afterOpen;\n }\n if (_this.state.beforeClose) {\n className = className + \" \" + classNames.beforeClose;\n }\n return typeof additional === \"string\" && additional ? className + \" \" + additional : className;\n };\n\n _this.attributesFromObject = function (prefix, items) {\n return Object.keys(items).reduce(function (acc, name) {\n acc[prefix + \"-\" + name] = items[name];\n return acc;\n }, {});\n };\n\n _this.state = {\n afterOpen: false,\n beforeClose: false\n };\n\n _this.shouldClose = null;\n _this.moveFromContentToOverlay = null;\n return _this;\n }\n\n _createClass(ModalPortal, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if (this.props.isOpen) {\n this.open();\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (process.env.NODE_ENV !== \"production\") {\n if (prevProps.bodyOpenClassName !== this.props.bodyOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"bodyOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n if (prevProps.htmlOpenClassName !== this.props.htmlOpenClassName) {\n // eslint-disable-next-line no-console\n console.warn('React-Modal: \"htmlOpenClassName\" prop has been modified. ' + \"This may cause unexpected behavior when multiple modals are open.\");\n }\n }\n\n if (this.props.isOpen && !prevProps.isOpen) {\n this.open();\n } else if (!this.props.isOpen && prevProps.isOpen) {\n this.close();\n }\n\n // Focus only needs to be set once when the modal is being opened\n if (this.props.shouldFocusAfterRender && this.state.isOpen && !prevState.isOpen) {\n this.focusContent();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.state.isOpen) {\n this.afterClose();\n }\n clearTimeout(this.closeTimer);\n }\n }, {\n key: \"beforeOpen\",\n value: function beforeOpen() {\n var _props = this.props,\n appElement = _props.appElement,\n ariaHideApp = _props.ariaHideApp,\n htmlOpenClassName = _props.htmlOpenClassName,\n bodyOpenClassName = _props.bodyOpenClassName;\n\n // Add classes.\n\n bodyOpenClassName && classList.add(document.body, bodyOpenClassName);\n\n htmlOpenClassName && classList.add(document.getElementsByTagName(\"html\")[0], htmlOpenClassName);\n\n if (ariaHideApp) {\n ariaHiddenInstances += 1;\n ariaAppHider.hide(appElement);\n }\n\n _portalOpenInstances2.default.register(this);\n }\n\n // Don't steal focus from inner elements\n\n }, {\n key: \"render\",\n value: function render() {\n var _props2 = this.props,\n id = _props2.id,\n className = _props2.className,\n overlayClassName = _props2.overlayClassName,\n defaultStyles = _props2.defaultStyles;\n\n var contentStyles = className ? {} : defaultStyles.content;\n var overlayStyles = overlayClassName ? {} : defaultStyles.overlay;\n\n return this.shouldBeClosed() ? null : _react2.default.createElement(\n \"div\",\n {\n ref: this.setOverlayRef,\n className: this.buildClassName(\"overlay\", overlayClassName),\n style: _extends({}, overlayStyles, this.props.style.overlay),\n onClick: this.handleOverlayOnClick,\n onMouseDown: this.handleOverlayOnMouseDown\n },\n _react2.default.createElement(\n \"div\",\n _extends({\n id: id,\n ref: this.setContentRef,\n style: _extends({}, contentStyles, this.props.style.content),\n className: this.buildClassName(\"content\", className),\n tabIndex: \"-1\",\n onKeyDown: this.handleKeyDown,\n onMouseDown: this.handleContentOnMouseDown,\n onMouseUp: this.handleContentOnMouseUp,\n onClick: this.handleContentOnClick,\n role: this.props.role,\n \"aria-label\": this.props.contentLabel\n }, this.attributesFromObject(\"aria\", this.props.aria || {}), this.attributesFromObject(\"data\", this.props.data || {}), {\n \"data-testid\": this.props.testId\n }),\n this.props.children\n )\n );\n }\n }]);\n\n return ModalPortal;\n}(_react.Component);\n\nModalPortal.defaultProps = {\n style: {\n overlay: {},\n content: {}\n },\n defaultStyles: {}\n};\nModalPortal.propTypes = {\n isOpen: _propTypes2.default.bool.isRequired,\n defaultStyles: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n style: _propTypes2.default.shape({\n content: _propTypes2.default.object,\n overlay: _propTypes2.default.object\n }),\n className: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n overlayClassName: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.object]),\n bodyOpenClassName: _propTypes2.default.string,\n htmlOpenClassName: _propTypes2.default.string,\n ariaHideApp: _propTypes2.default.bool,\n appElement: _propTypes2.default.instanceOf(_safeHTMLElement2.default),\n onAfterOpen: _propTypes2.default.func,\n onAfterClose: _propTypes2.default.func,\n onRequestClose: _propTypes2.default.func,\n closeTimeoutMS: _propTypes2.default.number,\n shouldFocusAfterRender: _propTypes2.default.bool,\n shouldCloseOnOverlayClick: _propTypes2.default.bool,\n shouldReturnFocusAfterClose: _propTypes2.default.bool,\n role: _propTypes2.default.string,\n contentLabel: _propTypes2.default.string,\n aria: _propTypes2.default.object,\n data: _propTypes2.default.object,\n children: _propTypes2.default.node,\n shouldCloseOnEsc: _propTypes2.default.bool,\n overlayRef: _propTypes2.default.func,\n contentRef: _propTypes2.default.func,\n id: _propTypes2.default.string,\n testId: _propTypes2.default.string\n};\nexports.default = ModalPortal;\nmodule.exports = exports[\"default\"];","import React from 'react';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar QueryStatus;\n\n(function (QueryStatus) {\n QueryStatus[\"Idle\"] = \"idle\";\n QueryStatus[\"Loading\"] = \"loading\";\n QueryStatus[\"Error\"] = \"error\";\n QueryStatus[\"Success\"] = \"success\";\n})(QueryStatus || (QueryStatus = {}));\n\nvar CancelledError = function CancelledError() {}; // UTILS\n\nvar _uid = 0;\nvar uid = function uid() {\n return _uid++;\n};\nvar isServer = typeof window === 'undefined';\nfunction noop() {\n return void 0;\n}\nvar Console = console || {\n error: noop,\n warn: noop,\n log: noop\n};\nfunction setConsole(c) {\n Console = c;\n}\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\n\nfunction stableStringifyReplacer(_key, value) {\n if (typeof value === 'function') {\n throw new Error();\n }\n\n if (isPlainObject(value)) {\n return Object.keys(value).sort().reduce(function (result, key) {\n result[key] = value[key];\n return result;\n }, {});\n }\n\n return value;\n}\n\nfunction stableStringify(value) {\n return JSON.stringify(value, stableStringifyReplacer);\n}\nfunction deepIncludes(a, b) {\n if (a === b) {\n return true;\n }\n\n if (typeof a !== typeof b) {\n return false;\n }\n\n if (typeof a === 'object') {\n return !Object.keys(b).some(function (key) {\n return !deepIncludes(a[key], b[key]);\n });\n }\n\n return false;\n}\nfunction isValidTimeout(value) {\n return typeof value === 'number' && value >= 0 && value !== Infinity;\n}\nfunction isDocumentVisible() {\n // document global can be unavailable in react native\n if (typeof document === 'undefined') {\n return true;\n }\n\n return [undefined, 'visible', 'prerender'].includes(document.visibilityState);\n}\nfunction isOnline() {\n return navigator.onLine === undefined || navigator.onLine;\n}\nfunction getQueryArgs(args) {\n var queryKey;\n var queryFn;\n var config;\n var options;\n\n if (isPlainObject(args[0])) {\n queryKey = args[0].queryKey;\n queryFn = args[0].queryFn;\n config = args[0].config;\n options = args[1];\n } else if (isPlainObject(args[1])) {\n queryKey = args[0];\n config = args[1];\n options = args[2];\n } else {\n queryKey = args[0];\n queryFn = args[1];\n config = args[2];\n options = args[3];\n }\n\n config = config ? _extends({\n queryKey: queryKey\n }, config) : {\n queryKey: queryKey\n };\n\n if (queryFn) {\n config = _extends({}, config, {\n queryFn: queryFn\n });\n }\n\n return [queryKey, config, options];\n}\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\n\nfunction replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n\n var array = Array.isArray(a) && Array.isArray(b);\n\n if (array || isPlainObject(a) && isPlainObject(b)) {\n var aSize = array ? a.length : Object.keys(a).length;\n var bItems = array ? b : Object.keys(b);\n var bSize = bItems.length;\n var copy = array ? [] : {};\n var equalItems = 0;\n\n for (var i = 0; i < bSize; i++) {\n var key = array ? i : bItems[i];\n copy[key] = replaceEqualDeep(a[key], b[key]);\n\n if (copy[key] === a[key]) {\n equalItems++;\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n\n return b;\n} // Copied from: https://github.com/jonschlinkert/is-plain-object\n\nfunction isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n } // If has modified constructor\n\n\n var ctor = o.constructor;\n\n if (typeof ctor === 'undefined') {\n return true;\n } // If has modified prototype\n\n\n var prot = ctor.prototype;\n\n if (!hasObjectPrototype(prot)) {\n return false;\n } // If constructor does not have an Object-specific method\n\n\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false;\n } // Most likely a plain Object\n\n\n return true;\n}\n\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isCancelable(value) {\n return typeof (value == null ? void 0 : value.cancel) === 'function';\n}\nfunction isError(value) {\n return value instanceof Error;\n}\nfunction isCancelledError(value) {\n return value instanceof CancelledError;\n}\nfunction sleep(timeout) {\n return new Promise(function (resolve) {\n setTimeout(resolve, timeout);\n });\n}\nfunction getStatusProps(status) {\n return {\n status: status,\n isLoading: status === QueryStatus.Loading,\n isSuccess: status === QueryStatus.Success,\n isError: status === QueryStatus.Error,\n isIdle: status === QueryStatus.Idle\n };\n}\nfunction createSetHandler(fn) {\n var removePreviousHandler;\n return function (callback) {\n // Unsub the old handler\n if (removePreviousHandler) {\n removePreviousHandler();\n } // Sub the new handler\n\n\n removePreviousHandler = callback(fn);\n };\n}\n\n// CONFIG\nvar defaultQueryKeySerializerFn = function defaultQueryKeySerializerFn(queryKey) {\n try {\n var arrayQueryKey = Array.isArray(queryKey) ? queryKey : [queryKey];\n var queryHash = stableStringify(arrayQueryKey);\n arrayQueryKey = JSON.parse(queryHash);\n return [queryHash, arrayQueryKey];\n } catch (_unused) {\n throw new Error('A valid query key is required!');\n }\n};\n/**\n * Config merging strategy\n *\n * When using hooks the config will be merged in the following order:\n *\n * 1. These defaults.\n * 2. Defaults from the hook query cache.\n * 3. Combined defaults from any config providers in the tree.\n * 4. Query/mutation config provided to the hook.\n *\n * When using a query cache directly the config will be merged in the following order:\n *\n * 1. These defaults.\n * 2. Defaults from the query cache.\n * 3. Query/mutation config provided to the query cache method.\n */\n\nvar DEFAULT_STALE_TIME = 0;\nvar DEFAULT_CACHE_TIME = 5 * 60 * 1000;\nvar DEFAULT_CONFIG = {\n queries: {\n cacheTime: DEFAULT_CACHE_TIME,\n enabled: true,\n notifyOnStatusChange: true,\n queryKeySerializerFn: defaultQueryKeySerializerFn,\n refetchOnMount: true,\n refetchOnReconnect: true,\n refetchOnWindowFocus: true,\n retry: 3,\n retryDelay: function retryDelay(attemptIndex) {\n return Math.min(1000 * Math.pow(2, attemptIndex), 30000);\n },\n staleTime: DEFAULT_STALE_TIME,\n structuralSharing: true\n }\n};\nfunction mergeReactQueryConfigs(a, b) {\n return {\n shared: _extends({}, a.shared, b.shared),\n queries: _extends({}, a.queries, b.queries),\n mutations: _extends({}, a.mutations, b.mutations)\n };\n}\nfunction getDefaultedQueryConfig(queryCacheConfig, contextConfig, config, configOverrides) {\n return _extends({}, DEFAULT_CONFIG.shared, DEFAULT_CONFIG.queries, queryCacheConfig == null ? void 0 : queryCacheConfig.shared, queryCacheConfig == null ? void 0 : queryCacheConfig.queries, contextConfig == null ? void 0 : contextConfig.shared, contextConfig == null ? void 0 : contextConfig.queries, config, configOverrides);\n}\nfunction getDefaultedMutationConfig(queryCacheConfig, contextConfig, config, configOverrides) {\n return _extends({}, DEFAULT_CONFIG.shared, DEFAULT_CONFIG.mutations, queryCacheConfig == null ? void 0 : queryCacheConfig.shared, queryCacheConfig == null ? void 0 : queryCacheConfig.mutations, contextConfig == null ? void 0 : contextConfig.shared, contextConfig == null ? void 0 : contextConfig.mutations, config, configOverrides);\n}\n\nfunction _await(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n\n return then ? value.then(then) : value;\n}\n\nfunction _empty() {}\n\nfunction _catch(body, recover) {\n try {\n var result = body();\n } catch (e) {\n return recover(e);\n }\n\n if (result && result.then) {\n return result.then(void 0, recover);\n }\n\n return result;\n}\n\nvar QueryObserver = /*#__PURE__*/function () {\n function QueryObserver(config) {\n this.config = config;\n this.queryCache = config.queryCache;\n this.initialFetchedCount = 0; // Bind exposed methods\n\n this.clear = this.clear.bind(this);\n this.refetch = this.refetch.bind(this);\n this.fetchMore = this.fetchMore.bind(this); // Subscribe to the query\n\n this.updateQuery();\n }\n\n var _proto = QueryObserver.prototype;\n\n _proto.subscribe = function subscribe(listener) {\n this.started = true;\n this.updateListener = listener;\n this.currentQuery.subscribeObserver(this);\n\n if (this.config.enabled && this.config.forceFetchOnMount) {\n this.fetch();\n } else {\n this.optionalFetch();\n }\n\n this.updateTimers();\n return this.unsubscribe.bind(this);\n };\n\n _proto.unsubscribe = function unsubscribe() {\n this.started = false;\n this.updateListener = undefined;\n this.clearTimers();\n this.currentQuery.unsubscribeObserver(this);\n };\n\n _proto.updateConfig = function updateConfig(config) {\n var prevConfig = this.config;\n this.config = config;\n var updated = this.updateQuery(); // Take no further actions if the observer did not start yet\n\n if (!this.started) {\n return;\n } // If we subscribed to a new query, optionally fetch and update refetch\n\n\n if (updated) {\n this.optionalFetch();\n this.updateTimers();\n return;\n } // Optionally fetch if the query became enabled\n\n\n if (config.enabled && !prevConfig.enabled) {\n this.optionalFetch();\n } // Update stale interval if needed\n\n\n if (config.enabled !== prevConfig.enabled || config.staleTime !== prevConfig.staleTime) {\n this.updateStaleTimeout();\n } // Update refetch interval if needed\n\n\n if (config.enabled !== prevConfig.enabled || config.refetchInterval !== prevConfig.refetchInterval) {\n this.updateRefetchInterval();\n }\n };\n\n _proto.getCurrentQuery = function getCurrentQuery() {\n return this.currentQuery;\n };\n\n _proto.getCurrentResult = function getCurrentResult() {\n return this.currentResult;\n };\n\n _proto.clear = function clear() {\n return this.currentQuery.clear();\n };\n\n _proto.refetch = function refetch(options) {\n try {\n var _this2 = this;\n\n return _this2.currentQuery.refetch(options, _this2.config);\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n _proto.fetchMore = function fetchMore(fetchMoreVariable, options) {\n try {\n var _this4 = this;\n\n return _this4.currentQuery.fetchMore(fetchMoreVariable, options, _this4.config);\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n _proto.fetch = function fetch() {\n var _this5 = this;\n\n return _await(_catch(function () {\n return _await(_this5.currentQuery.fetch(undefined, _this5.config));\n }, _empty));\n };\n\n _proto.optionalFetch = function optionalFetch() {\n if (this.config.enabled && // Don't auto refetch if disabled\n !(this.config.suspense && this.currentResult.isFetched) && // Don't refetch if in suspense mode and the data is already fetched\n this.currentResult.isStale && ( // Only refetch if stale\n this.config.refetchOnMount || this.currentQuery.observers.length === 1)) {\n this.fetch();\n }\n };\n\n _proto.notify = function notify() {\n var _this$updateListener;\n\n (_this$updateListener = this.updateListener) == null ? void 0 : _this$updateListener.call(this, this.currentResult);\n };\n\n _proto.updateStaleTimeout = function updateStaleTimeout() {\n var _this6 = this;\n\n if (isServer) {\n return;\n }\n\n this.clearStaleTimeout();\n\n if (this.currentResult.isStale || !isValidTimeout(this.config.staleTime)) {\n return;\n }\n\n var timeElapsed = Date.now() - this.currentResult.updatedAt;\n var timeUntilStale = this.config.staleTime - timeElapsed + 1;\n var timeout = Math.max(timeUntilStale, 0);\n this.staleTimeoutId = setTimeout(function () {\n if (!_this6.currentResult.isStale) {\n _this6.currentResult = _extends({}, _this6.currentResult, {\n isStale: true\n });\n\n _this6.notify();\n }\n }, timeout);\n };\n\n _proto.updateRefetchInterval = function updateRefetchInterval() {\n var _this7 = this;\n\n if (isServer) {\n return;\n }\n\n this.clearRefetchInterval();\n\n if (!this.config.enabled || !isValidTimeout(this.config.refetchInterval)) {\n return;\n }\n\n this.refetchIntervalId = setInterval(function () {\n if (_this7.config.refetchIntervalInBackground || isDocumentVisible()) {\n _this7.fetch();\n }\n }, this.config.refetchInterval);\n };\n\n _proto.updateTimers = function updateTimers() {\n this.updateStaleTimeout();\n this.updateRefetchInterval();\n };\n\n _proto.clearTimers = function clearTimers() {\n this.clearStaleTimeout();\n this.clearRefetchInterval();\n };\n\n _proto.clearStaleTimeout = function clearStaleTimeout() {\n if (this.staleTimeoutId) {\n clearInterval(this.staleTimeoutId);\n this.staleTimeoutId = undefined;\n }\n };\n\n _proto.clearRefetchInterval = function clearRefetchInterval() {\n if (this.refetchIntervalId) {\n clearInterval(this.refetchIntervalId);\n this.refetchIntervalId = undefined;\n }\n };\n\n _proto.updateResult = function updateResult() {\n var currentQuery = this.currentQuery,\n currentResult = this.currentResult,\n previousQueryResult = this.previousQueryResult,\n config = this.config;\n var state = currentQuery.state;\n var data = state.data,\n status = state.status,\n updatedAt = state.updatedAt;\n var isPreviousData = false; // Keep previous data if needed\n\n if (config.keepPreviousData && (state.isIdle || state.isLoading) && (previousQueryResult == null ? void 0 : previousQueryResult.isSuccess)) {\n data = previousQueryResult.data;\n updatedAt = previousQueryResult.updatedAt;\n status = previousQueryResult.status;\n isPreviousData = true;\n }\n\n var isStale; // When the query has not been fetched yet and this is the initial render,\n // determine the staleness based on the initialStale or existence of initial data.\n\n if (!currentResult && !state.isFetched) {\n if (typeof config.initialStale === 'function') {\n isStale = config.initialStale();\n } else if (typeof config.initialStale === 'boolean') {\n isStale = config.initialStale;\n } else {\n isStale = typeof state.data === 'undefined';\n }\n } else {\n isStale = currentQuery.isStaleByTime(config.staleTime);\n }\n\n this.currentResult = _extends({}, getStatusProps(status), {\n canFetchMore: state.canFetchMore,\n clear: this.clear,\n data: data,\n error: state.error,\n failureCount: state.failureCount,\n fetchMore: this.fetchMore,\n isFetched: state.isFetched,\n isFetchedAfterMount: state.fetchedCount > this.initialFetchedCount,\n isFetching: state.isFetching,\n isFetchingMore: state.isFetchingMore,\n isPreviousData: isPreviousData,\n isStale: isStale,\n refetch: this.refetch,\n updatedAt: updatedAt\n });\n };\n\n _proto.updateQuery = function updateQuery() {\n var prevQuery = this.currentQuery; // Remove the initial data when there is an existing query\n // because this data should not be used for a new query\n\n var config = this.config.keepPreviousData && prevQuery ? _extends({}, this.config, {\n initialData: undefined\n }) : this.config;\n var newQuery = this.queryCache.buildQuery(config.queryKey, config);\n\n if (newQuery === prevQuery) {\n return false;\n }\n\n this.previousQueryResult = this.currentResult;\n this.currentQuery = newQuery;\n this.initialFetchedCount = newQuery.state.fetchedCount;\n this.updateResult();\n\n if (this.started) {\n prevQuery == null ? void 0 : prevQuery.unsubscribeObserver(this);\n this.currentQuery.subscribeObserver(this);\n }\n\n return true;\n };\n\n _proto.onQueryUpdate = function onQueryUpdate(action) {\n var type = action.type; // Store current result and get new result\n\n var prevResult = this.currentResult;\n this.updateResult();\n var currentResult = this.currentResult,\n config = this.config; // We need to check the action because the state could have\n // transitioned from success to success in case of `setQueryData`.\n\n if (type === 2) {\n config.onSuccess == null ? void 0 : config.onSuccess(currentResult.data);\n config.onSettled == null ? void 0 : config.onSettled(currentResult.data, null);\n this.updateTimers();\n } else if (type === 3) {\n config.onError == null ? void 0 : config.onError(currentResult.error);\n config.onSettled == null ? void 0 : config.onSettled(undefined, currentResult.error);\n this.updateTimers();\n }\n\n if ( // Always notify on data or error change\n currentResult.data !== prevResult.data || currentResult.error !== prevResult.error || // Maybe notify on other changes\n config.notifyOnStatusChange) {\n this.notify();\n }\n };\n\n return QueryObserver;\n}();\n\nfunction _await$1(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n\n return then ? value.then(then) : value;\n}\n\nvar ActionType = {\n Failed: 0,\n Fetch: 1,\n Success: 2,\n Error: 3\n};\n\n// CLASS\nfunction _catch$1(body, recover) {\n try {\n var result = body();\n } catch (e) {\n return recover(e);\n }\n\n if (result && result.then) {\n return result.then(void 0, recover);\n }\n\n return result;\n}\n\nfunction _invoke(body, then) {\n var result = body();\n\n if (result && result.then) {\n return result.then(then);\n }\n\n return then(result);\n}\n\nfunction _async(f) {\n return function () {\n for (var args = [], i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n try {\n return Promise.resolve(f.apply(this, args));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nfunction _empty$1() {}\n\nfunction _awaitIgnored(value, direct) {\n if (!direct) {\n return value && value.then ? value.then(_empty$1) : Promise.resolve();\n }\n}\n\nvar Query = /*#__PURE__*/function () {\n function Query(queryKey, queryHash, config) {\n this.config = config;\n this.queryKey = queryKey;\n this.queryHash = queryHash;\n this.queryCache = config.queryCache;\n this.observers = [];\n this.state = getDefaultState(config);\n this.cacheTime = config.cacheTime;\n this.scheduleGc();\n }\n\n var _proto = Query.prototype;\n\n _proto.updateConfig = function updateConfig(config) {\n this.config = config;\n this.cacheTime = Math.max(this.cacheTime, config.cacheTime || 0);\n };\n\n _proto.dispatch = function dispatch(action) {\n this.state = queryReducer(this.state, action);\n this.observers.forEach(function (observer) {\n observer.onQueryUpdate(action);\n });\n this.queryCache.notifyGlobalListeners(this);\n };\n\n _proto.scheduleGc = function scheduleGc() {\n var _this = this;\n\n if (isServer) {\n return;\n }\n\n this.clearGcTimeout();\n\n if (this.observers.length > 0 || !isValidTimeout(this.cacheTime)) {\n return;\n }\n\n this.gcTimeout = setTimeout(function () {\n _this.clear();\n }, this.cacheTime);\n };\n\n _proto.cancel = function cancel() {\n var _this$cancelFetch;\n\n (_this$cancelFetch = this.cancelFetch) == null ? void 0 : _this$cancelFetch.call(this);\n };\n\n _proto.continue = function _continue() {\n var _this$continueFetch;\n\n (_this$continueFetch = this.continueFetch) == null ? void 0 : _this$continueFetch.call(this);\n };\n\n _proto.clearTimersObservers = function clearTimersObservers() {\n this.observers.forEach(function (observer) {\n observer.clearTimers();\n });\n };\n\n _proto.clearGcTimeout = function clearGcTimeout() {\n if (this.gcTimeout) {\n clearTimeout(this.gcTimeout);\n this.gcTimeout = undefined;\n }\n };\n\n _proto.setData = function setData(updater, options) {\n var _this$config$isDataEq, _this$config;\n\n var prevData = this.state.data; // Get the new data\n\n var data = functionalUpdate(updater, prevData); // Structurally share data between prev and new data if needed\n\n if (this.config.structuralSharing) {\n data = replaceEqualDeep(prevData, data);\n } // Use prev data if an isDataEqual function is defined and returns `true`\n\n\n if ((_this$config$isDataEq = (_this$config = this.config).isDataEqual) == null ? void 0 : _this$config$isDataEq.call(_this$config, prevData, data)) {\n data = prevData;\n } // Try to determine if more data can be fetched\n\n\n var canFetchMore = hasMorePages(this.config, data); // Set data and mark it as cached\n\n this.dispatch({\n type: ActionType.Success,\n data: data,\n canFetchMore: canFetchMore,\n updatedAt: options == null ? void 0 : options.updatedAt\n });\n };\n\n _proto.clear = function clear() {\n this.queryCache.removeQuery(this);\n };\n\n _proto.destroy = function destroy() {\n this.clearGcTimeout();\n this.clearTimersObservers();\n this.cancel();\n };\n\n _proto.isEnabled = function isEnabled() {\n return this.observers.some(function (observer) {\n return observer.config.enabled;\n });\n };\n\n _proto.isStale = function isStale() {\n return this.observers.some(function (observer) {\n return observer.getCurrentResult().isStale;\n });\n };\n\n _proto.isStaleByTime = function isStaleByTime(staleTime) {\n if (staleTime === void 0) {\n staleTime = 0;\n }\n\n return !this.state.isSuccess || this.state.updatedAt + staleTime <= Date.now();\n };\n\n _proto.onInteraction = function onInteraction(type) {\n // Execute the first observer which is enabled,\n // stale and wants to refetch on this interaction.\n var staleObserver = this.observers.find(function (observer) {\n return observer.getCurrentResult().isStale && observer.config.enabled && (observer.config.refetchOnWindowFocus && type === 'focus' || observer.config.refetchOnReconnect && type === 'online');\n });\n\n if (staleObserver) {\n staleObserver.fetch().catch(noop);\n } // Continue any paused fetch\n\n\n this.continue();\n };\n\n _proto.subscribe = function subscribe(listener) {\n var observer = new QueryObserver(_extends({\n queryCache: this.queryCache,\n queryKey: this.queryKey\n }, this.config));\n observer.subscribe(listener);\n return observer;\n };\n\n _proto.subscribeObserver = function subscribeObserver(observer) {\n this.observers.push(observer); // Stop the query from being garbage collected\n\n this.clearGcTimeout();\n };\n\n _proto.unsubscribeObserver = function unsubscribeObserver(observer) {\n this.observers = this.observers.filter(function (x) {\n return x !== observer;\n });\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.isTransportCancelable) {\n this.cancel();\n }\n\n this.scheduleGc();\n }\n };\n\n _proto.refetch = function refetch(options, config) {\n try {\n var _this3 = this;\n\n return _catch$1(function () {\n return _await$1(_this3.fetch(undefined, config));\n }, function (error) {\n if ((options == null ? void 0 : options.throwOnError) === true) {\n throw error;\n }\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n _proto.fetchMore = function fetchMore(fetchMoreVariable, options, config) {\n try {\n var _this5 = this;\n\n return _this5.fetch({\n fetchMore: {\n fetchMoreVariable: fetchMoreVariable,\n previous: (options == null ? void 0 : options.previous) || false\n }\n }, config);\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n _proto.fetch = function fetch(options, config) {\n try {\n var _this7 = this;\n\n // If we are already fetching, return current promise\n if (_this7.promise) {\n return _this7.promise;\n } // Update config if passed, otherwise the config from the last execution is used\n\n\n if (config) {\n _this7.updateConfig(config);\n }\n\n config = _this7.config; // Check if there is a query function\n\n if (typeof config.queryFn !== 'function') {\n return;\n } // Get the query function params\n\n\n var filter = config.queryFnParamsFilter;\n var params = filter ? filter(_this7.queryKey) : _this7.queryKey;\n _this7.promise = _async(function () {\n return _catch$1(function () {\n var data;\n return _invoke(function () {\n if (config.infinite) {\n return _await$1(_this7.startInfiniteFetch(config, params, options), function (_this7$startInfiniteF) {\n data = _this7$startInfiniteF;\n });\n } else {\n return _await$1(_this7.startFetch(config, params, options), function (_this7$startFetch) {\n data = _this7$startFetch;\n });\n }\n }, function () {\n // Set success state\n _this7.setData(data); // Cleanup\n\n\n delete _this7.promise; // Return data\n\n return data;\n });\n }, function (error) {\n // Set error state\n _this7.dispatch({\n type: ActionType.Error,\n error: error\n }); // Log error\n\n\n if (!isCancelledError(error)) {\n Console.error(error);\n } // Cleanup\n\n\n delete _this7.promise; // Propagate error\n\n throw error;\n });\n })();\n return _this7.promise;\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n _proto.startFetch = function startFetch(config, params, _options) {\n try {\n var _this9 = this;\n\n // Create function to fetch the data\n var fetchData = function fetchData() {\n return config.queryFn.apply(void 0, params);\n }; // Set to fetching state if not already in it\n\n\n if (!_this9.state.isFetching) {\n _this9.dispatch({\n type: ActionType.Fetch\n });\n } // Try to fetch the data\n\n\n return _this9.tryFetchData(config, fetchData);\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n _proto.startInfiniteFetch = function startInfiniteFetch(config, params, options) {\n try {\n var _this11 = this;\n\n var fetchMore = options == null ? void 0 : options.fetchMore;\n\n var _ref = fetchMore || {},\n previous = _ref.previous,\n fetchMoreVariable = _ref.fetchMoreVariable;\n\n var isFetchingMore = fetchMore ? previous ? 'previous' : 'next' : false;\n var prevPages = _this11.state.data || []; // Create function to fetch a page\n\n var fetchPage = _async(function (pages, prepend, cursor) {\n var lastPage = getLastPage(pages, prepend);\n\n if (typeof cursor === 'undefined' && typeof lastPage !== 'undefined' && config.getFetchMore) {\n cursor = config.getFetchMore(lastPage, pages);\n }\n\n return _await$1(config.queryFn.apply(void 0, params.concat([cursor])), function (page) {\n return prepend ? [page].concat(pages) : [].concat(pages, [page]);\n });\n }); // Create function to fetch the data\n\n\n var fetchData = function fetchData() {\n if (isFetchingMore) {\n return fetchPage(prevPages, previous, fetchMoreVariable);\n } else if (!prevPages.length) {\n return fetchPage([]);\n } else {\n var promise = fetchPage([]);\n\n for (var i = 1; i < prevPages.length; i++) {\n promise = promise.then(fetchPage);\n }\n\n return promise;\n }\n }; // Set to fetching state if not already in it\n\n\n if (!_this11.state.isFetching) {\n _this11.dispatch({\n type: ActionType.Fetch,\n isFetchingMore: isFetchingMore\n });\n } // Try to get the data\n\n\n return _this11.tryFetchData(config, fetchData);\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n _proto.tryFetchData = function tryFetchData(config, fn) {\n try {\n var _this13 = this;\n\n return new Promise(function (outerResolve, outerReject) {\n var resolved = false;\n var continueLoop;\n var cancelTransport;\n\n var done = function done() {\n resolved = true;\n delete _this13.cancelFetch;\n delete _this13.continueFetch;\n delete _this13.isTransportCancelable; // End loop if currently paused\n\n continueLoop == null ? void 0 : continueLoop();\n };\n\n var resolve = function resolve(value) {\n done();\n outerResolve(value);\n };\n\n var reject = function reject(value) {\n done();\n outerReject(value);\n }; // Create callback to cancel this fetch\n\n\n _this13.cancelFetch = function () {\n reject(new CancelledError());\n\n try {\n cancelTransport == null ? void 0 : cancelTransport();\n } catch (_unused) {}\n }; // Create callback to continue this fetch\n\n\n _this13.continueFetch = function () {\n continueLoop == null ? void 0 : continueLoop();\n }; // Create loop function\n\n\n var run = _async(function () {\n return _catch$1(function () {\n // Execute query\n var promiseOrValue = fn(); // Check if the transport layer support cancellation\n\n if (isCancelable(promiseOrValue)) {\n cancelTransport = function cancelTransport() {\n promiseOrValue.cancel();\n };\n\n _this13.isTransportCancelable = true;\n } // Await data\n\n\n return _await$1(promiseOrValue, function (_promiseOrValue) {\n resolve(_promiseOrValue);\n });\n }, function (error) {\n // Stop if the fetch is already resolved\n if (resolved) {\n return;\n } // Do we need to retry the request?\n\n\n var failureCount = _this13.state.failureCount;\n var retry = config.retry,\n retryDelay = config.retryDelay;\n var shouldRetry = retry === true || failureCount < retry || typeof retry === 'function' && retry(failureCount, error);\n\n if (!shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error);\n return;\n } // Increase the failureCount\n\n\n _this13.dispatch({\n type: ActionType.Failed\n }); // Delay\n\n\n return _await$1(sleep(functionalUpdate(retryDelay, failureCount) || 0), function () {\n // Pause retry if the document is not visible or when the device is offline\n return _invoke(function () {\n if (!isDocumentVisible() || !isOnline()) {\n return _awaitIgnored(new Promise(function (continueResolve) {\n continueLoop = continueResolve;\n }));\n }\n }, function () {\n if (!resolved) {\n run();\n }\n }); // Try again if not resolved yet\n });\n });\n }); // Start loop\n\n\n run();\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n return Query;\n}();\n\nfunction getLastPage(pages, previous) {\n return previous ? pages[0] : pages[pages.length - 1];\n}\n\nfunction hasMorePages(config, pages, previous) {\n if (config.infinite && config.getFetchMore && Array.isArray(pages)) {\n return Boolean(config.getFetchMore(getLastPage(pages, previous), pages));\n }\n}\n\nfunction getDefaultState(config) {\n var initialData = typeof config.initialData === 'function' ? config.initialData() : config.initialData;\n var hasInitialData = typeof initialData !== 'undefined';\n var initialStatus = hasInitialData ? QueryStatus.Success : config.enabled ? QueryStatus.Loading : QueryStatus.Idle;\n return _extends({}, getStatusProps(initialStatus), {\n error: null,\n isFetched: Boolean(config.initialFetched),\n isFetching: initialStatus === QueryStatus.Loading,\n isFetchingMore: false,\n failureCount: 0,\n fetchedCount: config.initialFetched ? 1 : 0,\n data: initialData,\n updatedAt: Date.now(),\n canFetchMore: hasMorePages(config, initialData)\n });\n}\n\nfunction queryReducer(state, action) {\n var _action$updatedAt;\n\n switch (action.type) {\n case ActionType.Failed:\n return _extends({}, state, {\n failureCount: state.failureCount + 1\n });\n\n case ActionType.Fetch:\n var status = typeof state.data !== 'undefined' ? QueryStatus.Success : QueryStatus.Loading;\n return _extends({}, state, getStatusProps(status), {\n isFetching: true,\n isFetchingMore: action.isFetchingMore || false,\n failureCount: 0\n });\n\n case ActionType.Success:\n return _extends({}, state, getStatusProps(QueryStatus.Success), {\n data: action.data,\n error: null,\n fetchedCount: state.fetchedCount + 1,\n isFetched: true,\n isFetching: false,\n isFetchingMore: false,\n canFetchMore: action.canFetchMore,\n updatedAt: (_action$updatedAt = action.updatedAt) != null ? _action$updatedAt : Date.now(),\n failureCount: 0\n });\n\n case ActionType.Error:\n return _extends({}, state, getStatusProps(QueryStatus.Error), {\n error: action.error,\n fetchedCount: state.fetchedCount + 1,\n isFetched: true,\n isFetching: false,\n isFetchingMore: false,\n failureCount: state.failureCount + 1,\n throwInErrorBoundary: true\n });\n\n default:\n return state;\n }\n}\n\n// CLASS\nfunction _empty$2() {}\n\nfunction _awaitIgnored$1(value, direct) {\n if (!direct) {\n return value && value.then ? value.then(_empty$2) : Promise.resolve();\n }\n}\n\nfunction _catch$2(body, recover) {\n try {\n var result = body();\n } catch (e) {\n return recover(e);\n }\n\n if (result && result.then) {\n return result.then(void 0, recover);\n }\n\n return result;\n}\n\nfunction _invoke$1(body, then) {\n var result = body();\n\n if (result && result.then) {\n return result.then(then);\n }\n\n return then(result);\n}\n\nvar QueryCache = /*#__PURE__*/function () {\n function QueryCache(config) {\n this.config = config || {};\n this.globalListeners = [];\n this.queries = {};\n this.queriesArray = [];\n this.isFetching = 0;\n }\n\n var _proto = QueryCache.prototype;\n\n _proto.notifyGlobalListeners = function notifyGlobalListeners(query) {\n var _this = this;\n\n this.isFetching = this.getQueries().reduce(function (acc, q) {\n return q.state.isFetching ? acc + 1 : acc;\n }, 0);\n this.globalListeners.forEach(function (listener) {\n listener(_this, query);\n });\n };\n\n _proto.getDefaultConfig = function getDefaultConfig() {\n return this.config.defaultConfig;\n };\n\n _proto.getDefaultedQueryConfig = function getDefaultedQueryConfig$1(config) {\n return getDefaultedQueryConfig(this.getDefaultConfig(), undefined, config, {\n queryCache: this\n });\n };\n\n _proto.subscribe = function subscribe(listener) {\n var _this2 = this;\n\n this.globalListeners.push(listener);\n return function () {\n _this2.globalListeners = _this2.globalListeners.filter(function (x) {\n return x !== listener;\n });\n };\n };\n\n _proto.clear = function clear(options) {\n this.removeQueries();\n\n if (options == null ? void 0 : options.notify) {\n this.notifyGlobalListeners();\n }\n };\n\n _proto.getQueries = function getQueries(predicate, options) {\n if (predicate === true || typeof predicate === 'undefined') {\n return this.queriesArray;\n }\n\n var predicateFn;\n\n if (typeof predicate === 'function') {\n predicateFn = predicate;\n } else {\n var _config = this.getDefaultedQueryConfig();\n\n var _ref = _config.queryKeySerializerFn(predicate),\n queryHash = _ref[0],\n _queryKey = _ref[1];\n\n predicateFn = function predicateFn(d) {\n return (options == null ? void 0 : options.exact) ? d.queryHash === queryHash : deepIncludes(d.queryKey, _queryKey);\n };\n }\n\n return this.queriesArray.filter(predicateFn);\n };\n\n _proto.getQuery = function getQuery(predicate) {\n return this.getQueries(predicate, {\n exact: true\n })[0];\n };\n\n _proto.getQueryData = function getQueryData(predicate) {\n var _this$getQuery;\n\n return (_this$getQuery = this.getQuery(predicate)) == null ? void 0 : _this$getQuery.state.data;\n };\n\n _proto.removeQuery = function removeQuery(query) {\n if (this.queries[query.queryHash]) {\n query.destroy();\n delete this.queries[query.queryHash];\n this.queriesArray = this.queriesArray.filter(function (x) {\n return x !== query;\n });\n this.notifyGlobalListeners(query);\n }\n };\n\n _proto.removeQueries = function removeQueries(predicate, options) {\n var _this3 = this;\n\n this.getQueries(predicate, options).forEach(function (query) {\n _this3.removeQuery(query);\n });\n };\n\n _proto.cancelQueries = function cancelQueries(predicate, options) {\n this.getQueries(predicate, options).forEach(function (query) {\n query.cancel();\n });\n };\n\n _proto.invalidateQueries = function invalidateQueries(predicate, options) {\n try {\n var _this5 = this;\n\n var _ref2 = options || {},\n _ref2$refetchActive = _ref2.refetchActive,\n refetchActive = _ref2$refetchActive === void 0 ? true : _ref2$refetchActive,\n _ref2$refetchInactive = _ref2.refetchInactive,\n refetchInactive = _ref2$refetchInactive === void 0 ? false : _ref2$refetchInactive,\n throwOnError = _ref2.throwOnError;\n\n return _catch$2(function () {\n return _awaitIgnored$1(Promise.all(_this5.getQueries(predicate, options).map(function (query) {\n var enabled = query.isEnabled();\n\n if (enabled && refetchActive || !enabled && refetchInactive) {\n return query.fetch();\n }\n\n return undefined;\n })));\n }, function (err) {\n if (throwOnError) {\n throw err;\n }\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n _proto.resetErrorBoundaries = function resetErrorBoundaries() {\n this.getQueries().forEach(function (query) {\n query.state.throwInErrorBoundary = false;\n });\n };\n\n _proto.buildQuery = function buildQuery(userQueryKey, queryConfig) {\n var config = this.getDefaultedQueryConfig(queryConfig);\n\n var _ref3 = config.queryKeySerializerFn(userQueryKey),\n queryHash = _ref3[0],\n queryKey = _ref3[1];\n\n if (this.queries[queryHash]) {\n return this.queries[queryHash];\n }\n\n var query = new Query(queryKey, queryHash, config); // A frozen cache does not add new queries to the cache\n\n if (!this.config.frozen) {\n this.queries[queryHash] = query;\n this.queriesArray.push(query);\n this.notifyGlobalListeners(query);\n }\n\n return query;\n } // Parameter syntax with optional prefetch options\n ;\n\n // Implementation\n _proto.prefetchQuery = function prefetchQuery() {\n try {\n var _this7 = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (isPlainObject(args[1]) && (args[1].hasOwnProperty('throwOnError') || args[1].hasOwnProperty('force'))) {\n args[3] = args[1];\n args[1] = undefined;\n args[2] = undefined;\n }\n\n var _getQueryArgs = getQueryArgs(args),\n _queryKey2 = _getQueryArgs[0],\n _config2 = _getQueryArgs[1],\n _options = _getQueryArgs[2]; // https://github.com/tannerlinsley/react-query/issues/652\n\n\n var configWithoutRetry = _this7.getDefaultedQueryConfig(_extends({\n retry: false\n }, _config2));\n\n return _catch$2(function () {\n var query = _this7.buildQuery(_queryKey2, configWithoutRetry);\n\n return _invoke$1(function () {\n if ((_options == null ? void 0 : _options.force) || query.isStaleByTime(_config2.staleTime)) {\n return _awaitIgnored$1(query.fetch(undefined, configWithoutRetry));\n }\n }, function () {\n return query.state.data;\n });\n }, function (error) {\n if (_options == null ? void 0 : _options.throwOnError) {\n throw error;\n }\n });\n } catch (e) {\n return Promise.reject(e);\n }\n };\n\n _proto.setQueryData = function setQueryData(queryKey, updater, config) {\n var query = this.getQuery(queryKey);\n\n if (query) {\n query.setData(updater);\n return;\n }\n\n this.buildQuery(queryKey, _extends({\n initialFetched: true,\n initialData: functionalUpdate(updater, undefined)\n }, config));\n };\n\n return QueryCache;\n}();\nvar defaultQueryCache = makeQueryCache({\n frozen: isServer\n});\nvar queryCaches = [defaultQueryCache];\nfunction makeQueryCache(config) {\n return new QueryCache(config);\n}\nfunction onVisibilityOrOnlineChange(type) {\n if (isDocumentVisible() && isOnline()) {\n queryCaches.forEach(function (queryCache) {\n queryCache.getQueries().forEach(function (query) {\n query.onInteraction(type);\n });\n });\n }\n}\n\nvar setFocusHandler = createSetHandler(function () {\n return onVisibilityOrOnlineChange('focus');\n});\nsetFocusHandler(function (handleFocus) {\n var _window;\n\n if (isServer || !((_window = window) == null ? void 0 : _window.addEventListener)) {\n return;\n } // Listen to visibillitychange and focus\n\n\n window.addEventListener('visibilitychange', handleFocus, false);\n window.addEventListener('focus', handleFocus, false);\n return function () {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', handleFocus);\n window.removeEventListener('focus', handleFocus);\n };\n});\n\nvar setOnlineHandler = createSetHandler(function () {\n return onVisibilityOrOnlineChange('online');\n});\nsetOnlineHandler(function (handleOnline) {\n var _window;\n\n if (isServer || !((_window = window) == null ? void 0 : _window.addEventListener)) {\n return;\n } // Listen to online\n\n\n window.addEventListener('online', handleOnline, false);\n return function () {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', handleOnline);\n };\n});\n\nvar queryCacheContext = React.createContext(defaultQueryCache);\nvar useQueryCache = function useQueryCache() {\n return React.useContext(queryCacheContext);\n};\nvar ReactQueryCacheProvider = function ReactQueryCacheProvider(_ref) {\n var queryCache = _ref.queryCache,\n children = _ref.children;\n var resolvedQueryCache = React.useMemo(function () {\n return queryCache || makeQueryCache();\n }, [queryCache]);\n React.useEffect(function () {\n queryCaches.push(resolvedQueryCache);\n return function () {\n // remove the cache from the active list\n var i = queryCaches.indexOf(resolvedQueryCache);\n\n if (i > -1) {\n queryCaches.splice(i, 1);\n } // if the resolvedQueryCache was created by us, we need to tear it down\n\n\n if (queryCache == null) {\n resolvedQueryCache.clear({\n notify: false\n });\n }\n };\n }, [resolvedQueryCache, queryCache]);\n return /*#__PURE__*/React.createElement(queryCacheContext.Provider, {\n value: resolvedQueryCache\n }, children);\n};\n\nvar configContext = React.createContext(undefined);\nfunction useContextConfig() {\n return React.useContext(configContext);\n}\nvar ReactQueryConfigProvider = function ReactQueryConfigProvider(_ref) {\n var config = _ref.config,\n children = _ref.children;\n var parentConfig = useContextConfig();\n var mergedConfig = React.useMemo(function () {\n return parentConfig ? mergeReactQueryConfigs(parentConfig, config) : config;\n }, [config, parentConfig]);\n return /*#__PURE__*/React.createElement(configContext.Provider, {\n value: mergedConfig\n }, children);\n};\n\nfunction useIsMounted() {\n var mountedRef = React.useRef(false);\n var isMounted = React.useCallback(function () {\n return mountedRef.current;\n }, []);\n React[isServer ? 'useEffect' : 'useLayoutEffect'](function () {\n mountedRef.current = true;\n return function () {\n mountedRef.current = false;\n };\n }, []);\n return isMounted;\n}\n\nfunction useMountedCallback(callback) {\n var isMounted = useIsMounted();\n return React.useCallback(function () {\n if (isMounted()) {\n return callback.apply(void 0, arguments);\n }\n }, [callback, isMounted]);\n}\n/**\n * This hook is a safe useState version which schedules state updates in microtasks\n * to prevent updating a component state while React is rendering different components\n * or when the component is not mounted anymore.\n */\n\nfunction useSafeState(initialState) {\n var isMounted = useIsMounted();\n\n var _React$useState = React.useState(initialState),\n state = _React$useState[0],\n setState = _React$useState[1];\n\n var safeSetState = React.useCallback(function (value) {\n scheduleMicrotask(function () {\n if (isMounted()) {\n setState(value);\n }\n });\n }, [isMounted]);\n return [state, safeSetState];\n}\nfunction useRerenderer() {\n var _useSafeState = useSafeState({}),\n setState = _useSafeState[1];\n\n return React.useCallback(function () {\n return setState({});\n }, [setState]);\n}\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\n\nfunction scheduleMicrotask(callback) {\n Promise.resolve().then(callback).catch(function (error) {\n return setTimeout(function () {\n throw error;\n });\n });\n}\n\nfunction useIsFetching() {\n var queryCache = useQueryCache();\n\n var _useSafeState = useSafeState(queryCache.isFetching),\n isFetching = _useSafeState[0],\n setIsFetching = _useSafeState[1];\n\n React.useEffect(function () {\n return queryCache.subscribe(function () {\n setIsFetching(queryCache.isFetching);\n });\n }, [queryCache, setIsFetching]);\n return isFetching;\n}\n\nfunction useDefaultedMutationConfig(config) {\n var contextConfig = useContextConfig();\n var contextQueryCache = useQueryCache();\n var queryCache = (config == null ? void 0 : config.queryCache) || contextQueryCache;\n var queryCacheConfig = queryCache.getDefaultConfig();\n return getDefaultedMutationConfig(queryCacheConfig, contextConfig, config, {\n queryCache: queryCache\n });\n}\n\nfunction _await$2(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }\n\n if (!value || !value.then) {\n value = Promise.resolve(value);\n }\n\n return then ? value.then(then) : value;\n}\n\nvar ActionType$1 = {\n Reset: 0,\n Loading: 1,\n Resolve: 2,\n Reject: 3\n};\n\n// HOOK\nfunction _catch$3(body, recover) {\n try {\n var result = body();\n } catch (e) {\n return recover(e);\n }\n\n if (result && result.then) {\n return result.then(void 0, recover);\n }\n\n return result;\n}\n\nfunction _async$1(f) {\n return function () {\n for (var args = [], i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }\n\n try {\n return Promise.resolve(f.apply(this, args));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}\n\nfunction getDefaultState$1() {\n return _extends({}, getStatusProps(QueryStatus.Idle), {\n data: undefined,\n error: null\n });\n}\n\nfunction mutationReducer(state, action) {\n switch (action.type) {\n case ActionType$1.Reset:\n return getDefaultState$1();\n\n case ActionType$1.Loading:\n return _extends({}, getStatusProps(QueryStatus.Loading), {\n data: undefined,\n error: null\n });\n\n case ActionType$1.Resolve:\n return _extends({}, getStatusProps(QueryStatus.Success), {\n data: action.data,\n error: null\n });\n\n case ActionType$1.Reject:\n return _extends({}, getStatusProps(QueryStatus.Error), {\n data: undefined,\n error: action.error\n });\n\n default:\n return state;\n }\n}\n\nfunction useMutation(mutationFn, config) {\n if (config === void 0) {\n config = {};\n }\n\n config = useDefaultedMutationConfig(config);\n\n var _React$useReducer = React.useReducer(mutationReducer, null, getDefaultState$1),\n state = _React$useReducer[0],\n unsafeDispatch = _React$useReducer[1];\n\n var dispatch = useMountedCallback(unsafeDispatch);\n var latestMutationRef = React.useRef();\n var latestMutationFnRef = React.useRef(mutationFn);\n latestMutationFnRef.current = mutationFn;\n var latestConfigRef = React.useRef(config);\n latestConfigRef.current = config;\n var mutate = React.useCallback(_async$1(function (variables, mutateConfig) {\n if (mutateConfig === void 0) {\n mutateConfig = {};\n }\n\n var latestConfig = latestConfigRef.current;\n var mutationId = uid();\n latestMutationRef.current = mutationId;\n\n var isLatest = function isLatest() {\n return latestMutationRef.current === mutationId;\n };\n\n var snapshotValue;\n return _catch$3(function () {\n dispatch({\n type: ActionType$1.Loading\n });\n return _await$2(latestConfig.onMutate == null ? void 0 : latestConfig.onMutate(variables), function (_latestConfig$onMutat) {\n snapshotValue = _latestConfig$onMutat;\n var latestMutationFn = latestMutationFnRef.current;\n return _await$2(latestMutationFn(variables), function (data) {\n if (isLatest()) {\n dispatch({\n type: ActionType$1.Resolve,\n data: data\n });\n }\n\n return _await$2(latestConfig.onSuccess == null ? void 0 : latestConfig.onSuccess(data, variables), function () {\n return _await$2(mutateConfig.onSuccess == null ? void 0 : mutateConfig.onSuccess(data, variables), function () {\n return _await$2(latestConfig.onSettled == null ? void 0 : latestConfig.onSettled(data, null, variables), function () {\n return _await$2(mutateConfig.onSettled == null ? void 0 : mutateConfig.onSettled(data, null, variables), function () {\n return data;\n });\n });\n });\n });\n });\n });\n }, function (error) {\n Console.error(error);\n return _await$2(latestConfig.onError == null ? void 0 : latestConfig.onError(error, variables, snapshotValue), function () {\n return _await$2(mutateConfig.onError == null ? void 0 : mutateConfig.onError(error, variables, snapshotValue), function () {\n return _await$2(latestConfig.onSettled == null ? void 0 : latestConfig.onSettled(undefined, error, variables, snapshotValue), function () {\n return _await$2(mutateConfig.onSettled == null ? void 0 : mutateConfig.onSettled(undefined, error, variables, snapshotValue), function () {\n if (isLatest()) {\n dispatch({\n type: ActionType$1.Reject,\n error: error\n });\n }\n\n if (mutateConfig.throwOnError || latestConfig.throwOnError) {\n throw error;\n }\n });\n });\n });\n });\n });\n }), [dispatch]);\n React.useEffect(function () {\n var latestConfig = latestConfigRef.current;\n var suspense = latestConfig.suspense,\n useErrorBoundary = latestConfig.useErrorBoundary;\n\n if ((useErrorBoundary != null ? useErrorBoundary : suspense) && state.error) {\n throw state.error;\n }\n }, [state.error]);\n var reset = React.useCallback(function () {\n dispatch({\n type: ActionType$1.Reset\n });\n }, [dispatch]);\n\n var result = _extends({}, state, {\n reset: reset\n });\n\n return [mutate, result];\n}\n\nfunction useDefaultedQueryConfig(config) {\n var contextConfig = useContextConfig();\n var contextQueryCache = useQueryCache();\n var queryCache = (config == null ? void 0 : config.queryCache) || contextQueryCache;\n var queryCacheConfig = queryCache.getDefaultConfig();\n return getDefaultedQueryConfig(queryCacheConfig, contextConfig, config, {\n queryCache: queryCache\n });\n}\n\nfunction useBaseQuery(config) {\n if (config === void 0) {\n config = {};\n }\n\n config = useDefaultedQueryConfig(config); // Make a rerender function\n\n var rerender = useRerenderer(); // Create query observer\n\n var observerRef = React.useRef();\n var firstRender = !observerRef.current;\n var observer = observerRef.current || new QueryObserver(config);\n observerRef.current = observer; // Subscribe to the observer\n\n React.useEffect(function () {\n return observer.subscribe(function () {\n rerender();\n });\n }, [observer, rerender]); // Update config\n\n if (!firstRender) {\n observer.updateConfig(config);\n }\n\n var result = observer.getCurrentResult(); // Handle suspense\n\n if (config.suspense || config.useErrorBoundary) {\n var query = observer.getCurrentQuery();\n\n if (result.isError && query.state.throwInErrorBoundary) {\n throw result.error;\n }\n\n if (config.enabled && config.suspense && !result.isSuccess) {\n var unsubscribe = observer.subscribe();\n throw observer.fetch().finally(unsubscribe);\n }\n }\n\n return result;\n}\n\n// Implementation\nfunction useQuery() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var config = getQueryArgs(args)[1];\n return useBaseQuery(config);\n}\n\n// as the query key changes, we keep the results from the\n// last query and use them as placeholder data in the next one\n// We DON'T use it as initial data though. That's important\n// TYPES\n\n// Implementation\nfunction usePaginatedQuery() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var config = getQueryArgs(args)[1];\n var result = useBaseQuery(_extends({\n keepPreviousData: true\n }, config));\n return _extends({}, result, {\n resolvedData: result.data,\n latestData: result.isPreviousData ? undefined : result.data\n });\n}\n\n// Implementation\nfunction useInfiniteQuery() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var config = getQueryArgs(args)[1];\n return useBaseQuery(_extends({}, config, {\n infinite: true\n }));\n}\n\nexport { CancelledError, QueryStatus, ReactQueryCacheProvider, ReactQueryConfigProvider, isCancelledError, isError, makeQueryCache, defaultQueryCache as queryCache, queryCaches, setConsole, setFocusHandler, setOnlineHandler, useInfiniteQuery, useIsFetching, useMutation, usePaginatedQuery, useQuery, useQueryCache };\n//# sourceMappingURL=react-query.mjs.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = scopeTab;\n\nvar _tabbable = require(\"./tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction scopeTab(node, event) {\n var tabbable = (0, _tabbable2.default)(node);\n\n if (!tabbable.length) {\n // Do nothing, since there are no elements that can receive focus.\n event.preventDefault();\n return;\n }\n\n var target = void 0;\n\n var shiftKey = event.shiftKey;\n var head = tabbable[0];\n var tail = tabbable[tabbable.length - 1];\n\n // proceed with default browser behavior on tab.\n // Focus on last element on shift + tab.\n if (node === document.activeElement) {\n if (!shiftKey) return;\n target = tail;\n }\n\n if (tail === document.activeElement && !shiftKey) {\n target = head;\n }\n\n if (head === document.activeElement && shiftKey) {\n target = tail;\n }\n\n if (target) {\n event.preventDefault();\n target.focus();\n return;\n }\n\n // Safari radio issue.\n //\n // Safari does not move the focus to the radio button,\n // so we need to force it to really walk through all elements.\n //\n // This is very error prone, since we are trying to guess\n // if it is a safari browser from the first occurence between\n // chrome or safari.\n //\n // The chrome user agent contains the first ocurrence\n // as the 'chrome/version' and later the 'safari/version'.\n var checkSafari = /(\\bChrome\\b|\\bSafari\\b)\\//.exec(navigator.userAgent);\n var isSafariDesktop = checkSafari != null && checkSafari[1] != \"Chrome\" && /\\biPod\\b|\\biPad\\b/g.exec(navigator.userAgent) == null;\n\n // If we are not in safari desktop, let the browser control\n // the focus\n if (!isSafariDesktop) return;\n\n var x = tabbable.indexOf(document.activeElement);\n\n if (x > -1) {\n x += shiftKey ? -1 : 1;\n }\n\n target = tabbable[x];\n\n // If the tabbable element does not exist,\n // focus head/tail based on shiftKey\n if (typeof target === \"undefined\") {\n event.preventDefault();\n target = shiftKey ? tail : head;\n target.focus();\n return;\n }\n\n event.preventDefault();\n\n target.focus();\n}\nmodule.exports = exports[\"default\"];","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"_2uN43zExEi\",\"floatAbove\":\"_2gQ0j5OHC8\"};","import { ClashAPIConfig } from 'src/types';\n\nimport { buildWebSocketURL, getURLAndInit } from '../misc/request-helper';\n\nconst endpoint = '/connections';\n\nconst fetched = false;\nconst subscribers = [];\n\n// see also https://github.com/Dreamacro/clash/blob/dev/constant/metadata.go#L41\ntype UUID = string;\ntype ConnectionItem = {\n id: UUID;\n metadata: {\n network: 'tcp' | 'udp';\n type: 'HTTP' | 'HTTP Connect' | 'Socks5' | 'Redir' | 'Unknown';\n sourceIP: string;\n destinationIP: string;\n sourcePort: string;\n destinationPort: string;\n host: string;\n };\n upload: number;\n download: number;\n // e.g. \"2019-11-30T22:48:13.416668+08:00\",\n start: string;\n chains: Array;\n // e.g. 'Match', 'DomainKeyword'\n rule: string;\n};\ntype ConnectionsData = {\n downloadTotal: number;\n uploadTotal: number;\n connections: Array;\n};\n\nfunction appendData(s: string) {\n let o: ConnectionsData;\n try {\n o = JSON.parse(s);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.log('JSON.parse error', JSON.parse(s));\n }\n subscribers.forEach((f) => f(o));\n}\n\ntype UnsubscribeFn = () => void;\n\nlet wsState: number;\nexport function fetchData(\n apiConfig: ClashAPIConfig,\n listener: unknown\n): UnsubscribeFn | void {\n if (fetched || wsState === 1) {\n if (listener) return subscribe(listener);\n }\n wsState = 1;\n const url = buildWebSocketURL(apiConfig, endpoint);\n const ws = new WebSocket(url);\n ws.addEventListener('error', () => (wsState = 3));\n ws.addEventListener('message', (event) => appendData(event.data));\n if (listener) return subscribe(listener);\n}\n\nfunction subscribe(listener: unknown): UnsubscribeFn {\n subscribers.push(listener);\n return function unsubscribe() {\n const idx = subscribers.indexOf(listener);\n subscribers.splice(idx, 1);\n };\n}\n\nexport async function closeAllConnections(apiConfig: ClashAPIConfig) {\n const { url, init } = getURLAndInit(apiConfig);\n return await fetch(url + endpoint, { ...init, method: 'DELETE' });\n}\n\nexport async function fetchConns(apiConfig: ClashAPIConfig) {\n const { url, init } = getURLAndInit(apiConfig);\n return await fetch(url + endpoint, { ...init });\n}\n\nexport async function closeConnById(apiConfig: ClashAPIConfig, id: string) {\n const { url: baseURL, init } = getURLAndInit(apiConfig);\n const url = `${baseURL}${endpoint}/${id}`;\n return await fetch(url, { ...init, method: 'DELETE' });\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"_113JVByWGF\",\"yacd\":\"_1m2ZsnzFvt\",\"link\":\"_3TKFOM4Tgj\"};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// Tracks portals that are open and emits events to subscribers\n\nvar PortalOpenInstances = function PortalOpenInstances() {\n var _this = this;\n\n _classCallCheck(this, PortalOpenInstances);\n\n this.register = function (openInstance) {\n if (_this.openInstances.indexOf(openInstance) !== -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Cannot register modal instance that's already open\");\n }\n return;\n }\n _this.openInstances.push(openInstance);\n _this.emit(\"register\");\n };\n\n this.deregister = function (openInstance) {\n var index = _this.openInstances.indexOf(openInstance);\n if (index === -1) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Unable to deregister \" + openInstance + \" as \" + \"it was never registered\");\n }\n return;\n }\n _this.openInstances.splice(index, 1);\n _this.emit(\"deregister\");\n };\n\n this.subscribe = function (callback) {\n _this.subscribers.push(callback);\n };\n\n this.emit = function (eventType) {\n _this.subscribers.forEach(function (subscriber) {\n return subscriber(eventType,\n // shallow copy to avoid accidental mutation\n _this.openInstances.slice());\n });\n };\n\n this.openInstances = [];\n this.subscribers = [];\n};\n\nvar portalOpenInstances = new PortalOpenInstances();\n\nexports.default = portalOpenInstances;\nmodule.exports = exports[\"default\"];","import PropTypes from 'prop-types';\nimport React, { useCallback, useMemo } from 'react';\n\nimport s0 from './ToggleSwitch.module.css';\n\nfunction ToggleSwitch({ options, value, name, onChange }) {\n const idxSelected = useMemo(\n () => options.map((o) => o.value).indexOf(value),\n [options, value]\n );\n\n const getPortionPercentage = useCallback(\n (idx) => {\n const w = Math.floor(100 / options.length);\n if (idx === options.length - 1) {\n return 100 - options.length * w + w;\n } else if (idx > -1) {\n return w;\n }\n },\n [options]\n );\n\n const sliderStyle = useMemo(() => {\n return {\n width: getPortionPercentage(idxSelected) + '%',\n left: idxSelected * getPortionPercentage(0) + '%',\n };\n }, [idxSelected, getPortionPercentage]);\n\n return (\n
\n
\n {options.map((o, idx) => {\n const id = `${name}-${o.label}`;\n const className = idx === 0 ? '' : 'border-left';\n return (\n \n \n
{o.label}
\n \n );\n })}\n
\n );\n}\n\nToggleSwitch.propTypes = {\n options: PropTypes.array,\n value: PropTypes.string,\n name: PropTypes.string,\n onChange: PropTypes.func,\n};\n\nexport default React.memo(ToggleSwitch);\n","/** @license React v16.6.1\n * react-cache.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';Object.defineProperty(exports,\"__esModule\",{value:!0});var l=require(\"react\"),m=require(\"scheduler\"),n=l.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentDispatcher;function p(c,e){var f=n.current;if(null===f)throw Error(\"react-cache: read and preload may only be called from within a component's render. They are not supported in event handlers or lifecycle methods.\");return f.readContext(c,e)}function q(c){return c}\nvar r=function(c){function e(){!1===h&&k>g&&(h=!0,m.unstable_scheduleCallback(f))}function f(){h=!1;var d=g;if(null!==a)for(var b=a.previous;k>d&&null!==b;){var c=b.onDelete,e=b.previous;b.onDelete=null;b.previous=b.next=null;b===a?a=b=null:(a.previous=e,e.next=a,b=e);--k;c()}}var g=c,a=null,k=0,h=!1;return{add:function(d,b){d={value:d,onDelete:b,next:null,previous:null};null===a?d.previous=d.next=d:(b=a.previous,b.next=d,d.previous=b,a.previous=d,d.next=a);a=d;k+=1;return d},update:function(a,b){a.value=\nb},access:function(d){var b=d.next;if(null!==b){var c=a;if(a!==d){var f=d.previous;f.next=b;b.previous=f;b=c.previous;b.next=d;d.previous=b;c.previous=d;d.next=c;a=d}}e();return d.value},setLimit:function(a){g=a;e()}}}(500),t=new Map,u=l.createContext(null);\nfunction v(c,e,f,g){var a=t.get(c);void 0===a&&(a=new Map,t.set(c,a));var k=a.get(g);if(void 0===k){e=e(f);e.then(function(a){if(0===h.status){var b=h;b.status=1;b.value=a}},function(a){if(0===h.status){var b=h;b.status=2;b.value=a}});var h={status:0,value:e};c=r.add(h,w.bind(null,c,g));a.set(g,c);return h}return r.access(k)}function w(c,e){var f=t.get(c);void 0!==f&&(f.delete(e),0===f.size&&t.delete(c))}\nexports.unstable_createResource=function(c,e){var f=void 0!==e?e:q,g={read:function(a){p(u);var e=f(a);a=v(g,c,a,e);switch(a.status){case 0:throw a.value;case 1:return a.value;case 2:throw a.value;}},preload:function(a){p(u);var e=f(a);v(g,c,a,e)}};return g};exports.unstable_setGlobalCacheLimit=function(c){r.setLimit(c)};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction componentWillMount() {\n // Call this.constructor.gDSFP to support sub-classes.\n var state = this.constructor.getDerivedStateFromProps(this.props, this.state);\n if (state !== null && state !== undefined) {\n this.setState(state);\n }\n}\n\nfunction componentWillReceiveProps(nextProps) {\n // Call this.constructor.gDSFP to support sub-classes.\n // Use the setState() updater to ensure state isn't stale in certain edge cases.\n function updater(prevState) {\n var state = this.constructor.getDerivedStateFromProps(nextProps, prevState);\n return state !== null && state !== undefined ? state : null;\n }\n // Binding \"this\" is important for shallow renderer support.\n this.setState(updater.bind(this));\n}\n\nfunction componentWillUpdate(nextProps, nextState) {\n try {\n var prevProps = this.props;\n var prevState = this.state;\n this.props = nextProps;\n this.state = nextState;\n this.__reactInternalSnapshotFlag = true;\n this.__reactInternalSnapshot = this.getSnapshotBeforeUpdate(\n prevProps,\n prevState\n );\n } finally {\n this.props = prevProps;\n this.state = prevState;\n }\n}\n\n// React may warn about cWM/cWRP/cWU methods being deprecated.\n// Add a flag to suppress these warnings for this special case.\ncomponentWillMount.__suppressDeprecationWarning = true;\ncomponentWillReceiveProps.__suppressDeprecationWarning = true;\ncomponentWillUpdate.__suppressDeprecationWarning = true;\n\nfunction polyfill(Component) {\n var prototype = Component.prototype;\n\n if (!prototype || !prototype.isReactComponent) {\n throw new Error('Can only polyfill class components');\n }\n\n if (\n typeof Component.getDerivedStateFromProps !== 'function' &&\n typeof prototype.getSnapshotBeforeUpdate !== 'function'\n ) {\n return Component;\n }\n\n // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n // Error if any of these lifecycles are present,\n // Because they would work differently between older and newer (16.3+) versions of React.\n var foundWillMountName = null;\n var foundWillReceivePropsName = null;\n var foundWillUpdateName = null;\n if (typeof prototype.componentWillMount === 'function') {\n foundWillMountName = 'componentWillMount';\n } else if (typeof prototype.UNSAFE_componentWillMount === 'function') {\n foundWillMountName = 'UNSAFE_componentWillMount';\n }\n if (typeof prototype.componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'componentWillReceiveProps';\n } else if (typeof prototype.UNSAFE_componentWillReceiveProps === 'function') {\n foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n }\n if (typeof prototype.componentWillUpdate === 'function') {\n foundWillUpdateName = 'componentWillUpdate';\n } else if (typeof prototype.UNSAFE_componentWillUpdate === 'function') {\n foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n }\n if (\n foundWillMountName !== null ||\n foundWillReceivePropsName !== null ||\n foundWillUpdateName !== null\n ) {\n var componentName = Component.displayName || Component.name;\n var newApiName =\n typeof Component.getDerivedStateFromProps === 'function'\n ? 'getDerivedStateFromProps()'\n : 'getSnapshotBeforeUpdate()';\n\n throw Error(\n 'Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' +\n componentName +\n ' uses ' +\n newApiName +\n ' but also contains the following legacy lifecycles:' +\n (foundWillMountName !== null ? '\\n ' + foundWillMountName : '') +\n (foundWillReceivePropsName !== null\n ? '\\n ' + foundWillReceivePropsName\n : '') +\n (foundWillUpdateName !== null ? '\\n ' + foundWillUpdateName : '') +\n '\\n\\nThe above lifecycles should be removed. Learn more about this warning here:\\n' +\n 'https://fb.me/react-async-component-lifecycle-hooks'\n );\n }\n\n // React <= 16.2 does not support static getDerivedStateFromProps.\n // As a workaround, use cWM and cWRP to invoke the new static lifecycle.\n // Newer versions of React will ignore these lifecycles if gDSFP exists.\n if (typeof Component.getDerivedStateFromProps === 'function') {\n prototype.componentWillMount = componentWillMount;\n prototype.componentWillReceiveProps = componentWillReceiveProps;\n }\n\n // React <= 16.2 does not support getSnapshotBeforeUpdate.\n // As a workaround, use cWU to invoke the new lifecycle.\n // Newer versions of React will ignore that lifecycle if gSBU exists.\n if (typeof prototype.getSnapshotBeforeUpdate === 'function') {\n if (typeof prototype.componentDidUpdate !== 'function') {\n throw new Error(\n 'Cannot polyfill getSnapshotBeforeUpdate() for components that do not define componentDidUpdate() on the prototype'\n );\n }\n\n prototype.componentWillUpdate = componentWillUpdate;\n\n var componentDidUpdate = prototype.componentDidUpdate;\n\n prototype.componentDidUpdate = function componentDidUpdatePolyfill(\n prevProps,\n prevState,\n maybeSnapshot\n ) {\n // 16.3+ will not execute our will-update method;\n // It will pass a snapshot value to did-update though.\n // Older versions will require our polyfilled will-update value.\n // We need to handle both cases, but can't just check for the presence of \"maybeSnapshot\",\n // Because for <= 15.x versions this might be a \"prevContext\" object.\n // We also can't just check \"__reactInternalSnapshot\",\n // Because get-snapshot might return a falsy value.\n // So check for the explicit __reactInternalSnapshotFlag flag to determine behavior.\n var snapshot = this.__reactInternalSnapshotFlag\n ? this.__reactInternalSnapshot\n : maybeSnapshot;\n\n componentDidUpdate.call(this, prevProps, prevState, snapshot);\n };\n }\n\n return Component;\n}\n\nexport { polyfill };\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.handleBlur = handleBlur;\nexports.handleFocus = handleFocus;\nexports.markForFocusLater = markForFocusLater;\nexports.returnFocus = returnFocus;\nexports.popWithoutFocus = popWithoutFocus;\nexports.setupScopedFocus = setupScopedFocus;\nexports.teardownScopedFocus = teardownScopedFocus;\n\nvar _tabbable = require(\"../helpers/tabbable\");\n\nvar _tabbable2 = _interopRequireDefault(_tabbable);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar focusLaterElements = [];\nvar modalElement = null;\nvar needToFocus = false;\n\nfunction handleBlur() {\n needToFocus = true;\n}\n\nfunction handleFocus() {\n if (needToFocus) {\n needToFocus = false;\n if (!modalElement) {\n return;\n }\n // need to see how jQuery shims document.on('focusin') so we don't need the\n // setTimeout, firefox doesn't support focusin, if it did, we could focus\n // the element outside of a setTimeout. Side-effect of this implementation\n // is that the document.body gets focus, and then we focus our element right\n // after, seems fine.\n setTimeout(function () {\n if (modalElement.contains(document.activeElement)) {\n return;\n }\n var el = (0, _tabbable2.default)(modalElement)[0] || modalElement;\n el.focus();\n }, 0);\n }\n}\n\nfunction markForFocusLater() {\n focusLaterElements.push(document.activeElement);\n}\n\n/* eslint-disable no-console */\nfunction returnFocus() {\n var toFocus = null;\n try {\n if (focusLaterElements.length !== 0) {\n toFocus = focusLaterElements.pop();\n toFocus.focus();\n }\n return;\n } catch (e) {\n console.warn([\"You tried to return focus to\", toFocus, \"but it is not in the DOM anymore\"].join(\" \"));\n }\n}\n/* eslint-enable no-console */\n\nfunction popWithoutFocus() {\n focusLaterElements.length > 0 && focusLaterElements.pop();\n}\n\nfunction setupScopedFocus(element) {\n modalElement = element;\n\n if (window.addEventListener) {\n window.addEventListener(\"blur\", handleBlur, false);\n document.addEventListener(\"focus\", handleFocus, true);\n } else {\n window.attachEvent(\"onBlur\", handleBlur);\n document.attachEvent(\"onFocus\", handleFocus);\n }\n}\n\nfunction teardownScopedFocus() {\n modalElement = null;\n\n if (window.addEventListener) {\n window.removeEventListener(\"blur\", handleBlur);\n document.removeEventListener(\"focus\", handleFocus);\n } else {\n window.detachEvent(\"onBlur\", handleBlur);\n document.detachEvent(\"onFocus\", handleFocus);\n }\n}","import cx from 'clsx';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nimport s from './SvgYacd.module.css';\n\nfunction SvgYacd({\n width = 320,\n height = 320,\n animate = false,\n c0 = 'currentColor',\n c1 = '#eee',\n}) {\n const faceClasName = cx({ [s.path]: animate });\n return (\n \n \n {/* face */}\n \n \n \n {/* mouth */}\n \n \n \n \n \n );\n}\n\nSvgYacd.propTypes = {\n width: PropTypes.number,\n height: PropTypes.number,\n};\n\nexport default SvgYacd;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","function n(n){for(var t=arguments.length,r=Array(t>1?t-1:0),e=1;e3?t.i-4:t.i:Array.isArray(n)?1:s(n)?2:v(n)?3:0}function u(n,t){return 2===o(n)?n.has(t):Object.prototype.hasOwnProperty.call(n,t)}function a(n,t){return 2===o(n)?n.get(t):n[t]}function f(n,t,r){var e=o(n);2===e?n.set(t,r):3===e?(n.delete(t),n.add(r)):n[t]=r}function c(n,t){return n===t?0!==n||1/n==1/t:n!=n&&t!=t}function s(n){return X&&n instanceof Map}function v(n){return q&&n instanceof Set}function p(n){return n.o||n.t}function l(n){if(Array.isArray(n))return Array.prototype.slice.call(n);var t=nn(n);delete t[Q];for(var r=Z(t),e=0;e1&&(n.set=n.add=n.clear=n.delete=h),Object.freeze(n),e&&i(n,(function(n,t){return d(t,!0)}),!0))}function h(){n(2)}function y(n){return null==n||\"object\"!=typeof n||Object.isFrozen(n)}function b(t){var r=tn[t];return r||n(\"production\"!==process.env.NODE_ENV?18:19,t),r}function m(n,t){tn[n]=t}function _(){return\"production\"===process.env.NODE_ENV||U||n(0),U}function j(n,t){t&&(b(\"Patches\"),n.u=[],n.s=[],n.v=t)}function g(n){O(n),n.p.forEach(S),n.p=null}function O(n){n===U&&(U=n.l)}function w(n){return U={p:[],l:U,h:n,m:!0,_:0}}function S(n){var t=n[Q];0===t.i||1===t.i?t.j():t.g=!0}function P(t,e){e._=e.p.length;var i=e.p[0],o=void 0!==t&&t!==i;return e.h.O||b(\"ES5\").S(e,t,o),o?(i[Q].P&&(g(e),n(4)),r(t)&&(t=M(e,t),e.l||x(e,t)),e.u&&b(\"Patches\").M(i[Q],t,e.u,e.s)):t=M(e,i,[]),g(e),e.u&&e.v(e.u,e.s),t!==H?t:void 0}function M(n,t,r){if(y(t))return t;var e=t[Q];if(!e)return i(t,(function(i,o){return A(n,e,t,i,o,r)}),!0),t;if(e.A!==n)return t;if(!e.P)return x(n,e.t,!0),e.t;if(!e.I){e.I=!0,e.A._--;var o=4===e.i||5===e.i?e.o=l(e.k):e.o;i(3===e.i?new Set(o):o,(function(t,i){return A(n,e,o,t,i,r)})),x(n,o,!1),r&&n.u&&b(\"Patches\").R(e,r,n.u,n.s)}return e.o}function A(e,i,o,a,c,s){if(\"production\"!==process.env.NODE_ENV&&c===o&&n(5),t(c)){var v=M(e,c,s&&i&&3!==i.i&&!u(i.D,a)?s.concat(a):void 0);if(f(o,a,v),!t(v))return;e.m=!1}if(r(c)&&!y(c)){if(!e.h.N&&e._<1)return;M(e,c),i&&i.A.l||x(e,c)}}function x(n,t,r){void 0===r&&(r=!1),n.h.N&&n.m&&d(t,r)}function z(n,t){var r=n[Q];return(r?p(r):n)[t]}function I(n,t){if(t in n)for(var r=Object.getPrototypeOf(n);r;){var e=Object.getOwnPropertyDescriptor(r,t);if(e)return e;r=Object.getPrototypeOf(r)}}function E(n){n.P||(n.P=!0,n.l&&E(n.l))}function k(n){n.o||(n.o=l(n.t))}function R(n,t,r){var e=s(t)?b(\"MapSet\").T(t,r):v(t)?b(\"MapSet\").F(t,r):n.O?function(n,t){var r=Array.isArray(n),e={i:r?1:0,A:t?t.A:_(),P:!1,I:!1,D:{},l:t,t:n,k:null,o:null,j:null,C:!1},i=e,o=rn;r&&(i=[e],o=en);var u=Proxy.revocable(i,o),a=u.revoke,f=u.proxy;return e.k=f,e.j=a,f}(t,r):b(\"ES5\").J(t,r);return(r?r.A:_()).p.push(e),e}function D(e){return t(e)||n(22,e),function n(t){if(!r(t))return t;var e,u=t[Q],c=o(t);if(u){if(!u.P&&(u.i<4||!b(\"ES5\").K(u)))return u.t;u.I=!0,e=N(t,c),u.I=!1}else e=N(t,c);return i(e,(function(t,r){u&&a(u.t,t)===r||f(e,t,n(r))})),3===c?new Set(e):e}(e)}function N(n,t){switch(t){case 2:return new Map(n);case 3:return Array.from(n)}return l(n)}function T(){function r(n,t){var r=s[n];return r?r.enumerable=t:s[n]=r={configurable:!0,enumerable:t,get:function(){var t=this[Q];return\"production\"!==process.env.NODE_ENV&&f(t),rn.get(t,n)},set:function(t){var r=this[Q];\"production\"!==process.env.NODE_ENV&&f(r),rn.set(r,n,t)}},r}function e(n){for(var t=n.length-1;t>=0;t--){var r=n[t][Q];if(!r.P)switch(r.i){case 5:a(r)&&E(r);break;case 4:o(r)&&E(r)}}}function o(n){for(var t=n.t,r=n.k,e=Z(r),i=e.length-1;i>=0;i--){var o=e[i];if(o!==Q){var a=t[o];if(void 0===a&&!u(t,o))return!0;var f=r[o],s=f&&f[Q];if(s?s.t!==a:!c(f,a))return!0}}var v=!!t[Q];return e.length!==Z(t).length+(v?0:1)}function a(n){var t=n.k;if(t.length!==n.t.length)return!0;var r=Object.getOwnPropertyDescriptor(t,t.length-1);return!(!r||r.get)}function f(t){t.g&&n(3,JSON.stringify(p(t)))}var s={};m(\"ES5\",{J:function(n,t){var e=Array.isArray(n),i=function(n,t){if(n){for(var e=Array(t.length),i=0;i1?r-1:0),a=1;a1?r-1:0),o=1;o=0;e--){var i=r[e];if(0===i.path.length&&\"replace\"===i.op){n=i.value;break}}var o=b(\"Patches\").$;return t(n)?o(n,r):this.produce(n,(function(n){return o(n,r.slice(e+1))}))},e}(),un=new on,an=un.produce,fn=un.produceWithPatches.bind(un),cn=un.setAutoFreeze.bind(un),sn=un.setUseProxies.bind(un),vn=un.applyPatches.bind(un),pn=un.createDraft.bind(un),ln=un.finishDraft.bind(un);export default an;export{on as Immer,vn as applyPatches,K as castDraft,$ as castImmutable,pn as createDraft,D as current,J as enableAllPlugins,T as enableES5,C as enableMapSet,F as enablePatches,ln as finishDraft,L as immerable,t as isDraft,r as isDraftable,H as nothing,e as original,an as produce,fn as produceWithPatches,cn as setAutoFreeze,sn as setUseProxies};\n//# sourceMappingURL=immer.esm.js.map\n","import produce, * as immer from 'immer';\nimport React from 'react';\n\n// in logs store we update logs in place\n// outside of immer produce\n// this is just workaround\nimmer.setAutoFreeze(false);\n\nconst {\n createContext,\n memo,\n useMemo,\n useRef,\n useEffect,\n useCallback,\n useContext,\n useState,\n} = React;\n\nexport { immer };\n\nconst StateContext = createContext(null);\nconst DispatchContext = createContext(null);\nconst ActionsContext = createContext(null);\n\nexport function useStoreState() {\n return useContext(StateContext);\n}\n\nexport function useStoreDispatch() {\n return useContext(DispatchContext);\n}\n\nexport function useStoreActions() {\n return useContext(ActionsContext);\n}\n\n// boundActionCreators\nexport default function Provider({ initialState, actions = {}, children }) {\n const stateRef = useRef(initialState);\n const [state, setState] = useState(initialState);\n const getState = useCallback(() => stateRef.current, []);\n useEffect(() => {\n if (process.env.NODE_ENV === 'development') {\n window.getState2 = getState;\n }\n }, [getState]);\n const dispatch = useCallback(\n (actionId, fn) => {\n if (typeof actionId === 'function') return actionId(dispatch, getState);\n\n const stateNext = produce(getState(), fn);\n if (stateNext !== stateRef.current) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.log(actionId, stateNext);\n }\n stateRef.current = stateNext;\n setState(stateNext);\n }\n },\n [getState]\n );\n const boundActions = useMemo(() => bindActions(actions, dispatch), [\n actions,\n dispatch,\n ]);\n\n return (\n \n \n \n {children}\n \n \n \n );\n}\n\nexport function connect(mapStateToProps) {\n return (Component) => {\n const MemoComponent = memo(Component);\n function Connected(props) {\n const state = useContext(StateContext);\n const dispatch = useContext(DispatchContext);\n const mapped = mapStateToProps(state, props);\n const nextProps = { dispatch, ...props, ...mapped };\n return ;\n }\n return Connected;\n };\n}\n\n// steal from https://github.com/reduxjs/redux/blob/master/src/bindActionCreators.ts\nfunction bindAction(action, dispatch) {\n return function (...args) {\n return dispatch(action.apply(this, args));\n };\n}\n\nfunction bindActions(actions, dispatch) {\n const boundActions = {};\n for (const key in actions) {\n const action = actions[key];\n if (typeof action === 'function') {\n boundActions[key] = bindAction(action, dispatch);\n } else if (typeof action === 'object') {\n boundActions[key] = bindActions(action, dispatch);\n }\n }\n return boundActions;\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"input\":\"_2DECxrOsTa\"};","\"use strict\";\n\nvar _portalOpenInstances = require(\"./portalOpenInstances\");\n\nvar _portalOpenInstances2 = _interopRequireDefault(_portalOpenInstances);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Body focus trap see Issue #742\n\nvar before = void 0,\n after = void 0,\n instances = [];\n\nfunction focusContent() {\n if (instances.length === 0) {\n if (process.env.NODE_ENV !== \"production\") {\n // eslint-disable-next-line no-console\n console.warn(\"React-Modal: Open instances > 0 expected\");\n }\n return;\n }\n instances[instances.length - 1].focusContent();\n}\n\nfunction bodyTrap(eventType, openInstances) {\n if (!before || !after) {\n before = document.createElement(\"div\");\n before.setAttribute(\"data-react-modal-body-trap\", \"\");\n before.style.position = \"absolute\";\n before.style.opacity = \"0\";\n before.setAttribute(\"tabindex\", \"0\");\n before.addEventListener(\"focus\", focusContent);\n after = before.cloneNode();\n after.addEventListener(\"focus\", focusContent);\n }\n\n instances = openInstances;\n\n if (instances.length > 0) {\n // Add focus trap\n if (document.body.firstChild !== before) {\n document.body.insertBefore(before, document.body.firstChild);\n }\n if (document.body.lastChild !== after) {\n document.body.appendChild(after);\n }\n } else {\n // Remove focus trap\n if (before.parentElement) {\n before.parentElement.removeChild(before);\n }\n if (after.parentElement) {\n after.parentElement.removeChild(after);\n }\n }\n}\n\n_portalOpenInstances2.default.subscribe(bodyTrap);","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"_24ddJm1Q5s\",\"h1\":\"B4QNkMu-0t\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ToggleSwitch\":\"_2IgDTE__bQ\",\"slider\":\"_2IfOm9qQ_4\"};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.assertNodeList = assertNodeList;\nexports.setElement = setElement;\nexports.validateElement = validateElement;\nexports.hide = hide;\nexports.show = show;\nexports.documentNotReadyOrSSRTesting = documentNotReadyOrSSRTesting;\nexports.resetForTesting = resetForTesting;\n\nvar _warning = require(\"warning\");\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _safeHTMLElement = require(\"./safeHTMLElement\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar globalElement = null;\n\nfunction assertNodeList(nodeList, selector) {\n if (!nodeList || !nodeList.length) {\n throw new Error(\"react-modal: No elements were found for selector \" + selector + \".\");\n }\n}\n\nfunction setElement(element) {\n var useElement = element;\n if (typeof useElement === \"string\" && _safeHTMLElement.canUseDOM) {\n var el = document.querySelectorAll(useElement);\n assertNodeList(el, useElement);\n useElement = \"length\" in el ? el[0] : el;\n }\n globalElement = useElement || globalElement;\n return globalElement;\n}\n\nfunction validateElement(appElement) {\n if (!appElement && !globalElement) {\n (0, _warning2.default)(false, [\"react-modal: App element is not defined.\", \"Please use `Modal.setAppElement(el)` or set `appElement={el}`.\", \"This is needed so screen readers don't see main content\", \"when modal is opened. It is not recommended, but you can opt-out\", \"by setting `ariaHideApp={false}`.\"].join(\" \"));\n\n return false;\n }\n\n return true;\n}\n\nfunction hide(appElement) {\n if (validateElement(appElement)) {\n (appElement || globalElement).setAttribute(\"aria-hidden\", \"true\");\n }\n}\n\nfunction show(appElement) {\n if (validateElement(appElement)) {\n (appElement || globalElement).removeAttribute(\"aria-hidden\");\n }\n}\n\nfunction documentNotReadyOrSSRTesting() {\n globalElement = null;\n}\n\nfunction resetForTesting() {\n globalElement = null;\n}","import { trimTrailingSlash } from 'src/misc/utils';\nimport { ClashAPIConfig } from 'src/types';\n\nconst headersCommon = { 'Content-Type': 'application/json' };\n\nfunction genCommonHeaders({ secret }: { secret?: string }) {\n const h = { ...headersCommon };\n if (secret) {\n h['Authorization'] = `Bearer ${secret}`;\n }\n return h;\n}\n\nexport function getURLAndInit({ baseURL, secret }: ClashAPIConfig) {\n const headers = genCommonHeaders({ secret });\n return {\n url: baseURL,\n init: { headers },\n };\n}\n\nexport function buildWebSocketURL(apiConfig: ClashAPIConfig, endpoint: string) {\n const { baseURL, secret } = apiConfig;\n let qs = '';\n if (typeof secret === 'string' && secret !== '') {\n qs += '?token=' + encodeURIComponent(secret);\n }\n const url = new URL(baseURL);\n url.protocol === 'https:' ? (url.protocol = 'wss:') : (url.protocol = 'ws:');\n return `${trimTrailingSlash(url.href)}${endpoint}${qs}`;\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"overlay\":\"_2ueF0jmjym\",\"content\":\"UZ5fqyDCOb\"};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = findTabbableDescendants;\n/*!\n * Adapted from jQuery UI core\n *\n * http://jqueryui.com\n *\n * Copyright 2014 jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/category/ui-core/\n */\n\nvar tabbableNode = /input|select|textarea|button|object/;\n\nfunction hidesContents(element) {\n var zeroSize = element.offsetWidth <= 0 && element.offsetHeight <= 0;\n\n // If the node is empty, this is good enough\n if (zeroSize && !element.innerHTML) return true;\n\n // Otherwise we need to check some styles\n var style = window.getComputedStyle(element);\n return zeroSize ? style.getPropertyValue(\"overflow\") !== \"visible\" ||\n // if 'overflow: visible' set, check if there is actually any overflow\n element.scrollWidth <= 0 && element.scrollHeight <= 0 : style.getPropertyValue(\"display\") == \"none\";\n}\n\nfunction visible(element) {\n var parentElement = element;\n while (parentElement) {\n if (parentElement === document.body) break;\n if (hidesContents(parentElement)) return false;\n parentElement = parentElement.parentNode;\n }\n return true;\n}\n\nfunction focusable(element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n var res = tabbableNode.test(nodeName) && !element.disabled || (nodeName === \"a\" ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n return res && visible(element);\n}\n\nfunction tabbable(element) {\n var tabIndex = element.getAttribute(\"tabindex\");\n if (tabIndex === null) tabIndex = undefined;\n var isTabIndexNaN = isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN);\n}\n\nfunction findTabbableDescendants(element) {\n return [].slice.call(element.querySelectorAll(\"*\"), 0).filter(tabbable);\n}\nmodule.exports = exports[\"default\"];","import { invariant } from 'hey-listen';\n\nvar prevTime = 0;\nvar onNextFrame = typeof window !== 'undefined' && window.requestAnimationFrame !== undefined ? function (callback) {\n return window.requestAnimationFrame(callback);\n} : function (callback) {\n var timestamp = Date.now();\n var timeToCall = Math.max(0, 16.7 - (timestamp - prevTime));\n prevTime = timestamp + timeToCall;\n setTimeout(function () {\n return callback(prevTime);\n }, timeToCall);\n};\n\nvar createStep = function (setRunNextFrame) {\n var processToRun = [];\n var processToRunNextFrame = [];\n var numThisFrame = 0;\n var isProcessing = false;\n var i = 0;\n var cancelled = new WeakSet();\n var toKeepAlive = new WeakSet();\n var renderStep = {\n cancel: function (process) {\n var indexOfCallback = processToRunNextFrame.indexOf(process);\n cancelled.add(process);\n if (indexOfCallback !== -1) {\n processToRunNextFrame.splice(indexOfCallback, 1);\n }\n },\n process: function (frame) {\n var _a;\n isProcessing = true;\n _a = [processToRunNextFrame, processToRun], processToRun = _a[0], processToRunNextFrame = _a[1];\n processToRunNextFrame.length = 0;\n numThisFrame = processToRun.length;\n if (numThisFrame) {\n var process_1;\n for (i = 0; i < numThisFrame; i++) {\n process_1 = processToRun[i];\n process_1(frame);\n if (toKeepAlive.has(process_1) === true && !cancelled.has(process_1)) {\n renderStep.schedule(process_1);\n setRunNextFrame(true);\n }\n }\n }\n isProcessing = false;\n },\n schedule: function (process, keepAlive, immediate) {\n if (keepAlive === void 0) {\n keepAlive = false;\n }\n if (immediate === void 0) {\n immediate = false;\n }\n invariant(typeof process === \"function\", \"Argument must be a function\");\n var addToCurrentBuffer = immediate && isProcessing;\n var buffer = addToCurrentBuffer ? processToRun : processToRunNextFrame;\n cancelled.delete(process);\n if (keepAlive) toKeepAlive.add(process);\n if (buffer.indexOf(process) === -1) {\n buffer.push(process);\n if (addToCurrentBuffer) numThisFrame = processToRun.length;\n }\n }\n };\n return renderStep;\n};\n\nvar maxElapsed = 40;\nvar defaultElapsed = 1 / 60 * 1000;\nvar useDefaultElapsed = true;\nvar willRunNextFrame = false;\nvar isProcessing = false;\nvar frame = {\n delta: 0,\n timestamp: 0\n};\nvar stepsOrder = [\"read\", \"update\", \"preRender\", \"render\", \"postRender\"];\nvar setWillRunNextFrame = function (willRun) {\n return willRunNextFrame = willRun;\n};\nvar steps = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n acc[key] = createStep(setWillRunNextFrame);\n return acc;\n}, {});\nvar sync = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n var step = steps[key];\n acc[key] = function (process, keepAlive, immediate) {\n if (keepAlive === void 0) {\n keepAlive = false;\n }\n if (immediate === void 0) {\n immediate = false;\n }\n if (!willRunNextFrame) startLoop();\n step.schedule(process, keepAlive, immediate);\n return process;\n };\n return acc;\n}, {});\nvar cancelSync = /*#__PURE__*/stepsOrder.reduce(function (acc, key) {\n acc[key] = steps[key].cancel;\n return acc;\n}, {});\nvar processStep = function (stepId) {\n return steps[stepId].process(frame);\n};\nvar processFrame = function (timestamp) {\n willRunNextFrame = false;\n frame.delta = useDefaultElapsed ? defaultElapsed : Math.max(Math.min(timestamp - frame.timestamp, maxElapsed), 1);\n if (!useDefaultElapsed) defaultElapsed = frame.delta;\n frame.timestamp = timestamp;\n isProcessing = true;\n stepsOrder.forEach(processStep);\n isProcessing = false;\n if (willRunNextFrame) {\n useDefaultElapsed = false;\n onNextFrame(processFrame);\n }\n};\nvar startLoop = function () {\n willRunNextFrame = true;\n useDefaultElapsed = true;\n if (!isProcessing) onNextFrame(processFrame);\n};\nvar getFrameData = function () {\n return frame;\n};\n\nexport default sync;\nexport { cancelSync, getFrameData };\n","import { __assign } from 'tslib';\n\nvar clamp = function (min, max) { return function (v) {\r\n return Math.max(Math.min(v, max), min);\r\n}; };\r\nvar sanitize = function (v) { return (v % 1 ? Number(v.toFixed(5)) : v); };\r\nvar floatRegex = /(-)?(\\d[\\d\\.]*)/g;\r\nvar colorRegex = /(#[0-9a-f]{6}|#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))/gi;\r\nvar singleColorRegex = /^(#[0-9a-f]{3}|#(?:[0-9a-f]{2}){2,4}|(rgb|hsl)a?\\((-?[\\d\\.]+%?[,\\s]+){2,3}\\s*\\/*\\s*[\\d\\.]+%?\\))$/i;\n\nvar number = {\r\n test: function (v) { return typeof v === 'number'; },\r\n parse: parseFloat,\r\n transform: function (v) { return v; }\r\n};\r\nvar alpha = __assign(__assign({}, number), { transform: clamp(0, 1) });\r\nvar scale = __assign(__assign({}, number), { default: 1 });\n\nvar createUnitType = function (unit) { return ({\r\n test: function (v) {\r\n return typeof v === 'string' && v.endsWith(unit) && v.split(' ').length === 1;\r\n },\r\n parse: parseFloat,\r\n transform: function (v) { return \"\" + v + unit; }\r\n}); };\r\nvar degrees = createUnitType('deg');\r\nvar percent = createUnitType('%');\r\nvar px = createUnitType('px');\r\nvar vh = createUnitType('vh');\r\nvar vw = createUnitType('vw');\r\nvar progressPercentage = __assign(__assign({}, percent), { parse: function (v) { return percent.parse(v) / 100; }, transform: function (v) { return percent.transform(v * 100); } });\n\nvar getValueFromFunctionString = function (value) {\r\n return value.substring(value.indexOf('(') + 1, value.lastIndexOf(')'));\r\n};\r\nvar clampRgbUnit = clamp(0, 255);\r\nvar isRgba = function (v) { return v.red !== undefined; };\r\nvar isHsla = function (v) { return v.hue !== undefined; };\r\nfunction getValuesAsArray(value) {\r\n return getValueFromFunctionString(value)\r\n .replace(/(,|\\/)/g, ' ')\r\n .split(/ \\s*/);\r\n}\r\nvar splitColorValues = function (terms) {\r\n return function (v) {\r\n if (typeof v !== 'string')\r\n return v;\r\n var values = {};\r\n var valuesArray = getValuesAsArray(v);\r\n for (var i = 0; i < 4; i++) {\r\n values[terms[i]] =\r\n valuesArray[i] !== undefined ? parseFloat(valuesArray[i]) : 1;\r\n }\r\n return values;\r\n };\r\n};\r\nvar rgbaTemplate = function (_a) {\r\n var red = _a.red, green = _a.green, blue = _a.blue, _b = _a.alpha, alpha = _b === void 0 ? 1 : _b;\r\n return \"rgba(\" + red + \", \" + green + \", \" + blue + \", \" + alpha + \")\";\r\n};\r\nvar hslaTemplate = function (_a) {\r\n var hue = _a.hue, saturation = _a.saturation, lightness = _a.lightness, _b = _a.alpha, alpha = _b === void 0 ? 1 : _b;\r\n return \"hsla(\" + hue + \", \" + saturation + \", \" + lightness + \", \" + alpha + \")\";\r\n};\r\nvar rgbUnit = __assign(__assign({}, number), { transform: function (v) { return Math.round(clampRgbUnit(v)); } });\r\nfunction isColorString(color, colorType) {\r\n return color.startsWith(colorType) && singleColorRegex.test(color);\r\n}\r\nvar rgba = {\r\n test: function (v) { return (typeof v === 'string' ? isColorString(v, 'rgb') : isRgba(v)); },\r\n parse: splitColorValues(['red', 'green', 'blue', 'alpha']),\r\n transform: function (_a) {\r\n var red = _a.red, green = _a.green, blue = _a.blue, _b = _a.alpha, alpha$1 = _b === void 0 ? 1 : _b;\r\n return rgbaTemplate({\r\n red: rgbUnit.transform(red),\r\n green: rgbUnit.transform(green),\r\n blue: rgbUnit.transform(blue),\r\n alpha: sanitize(alpha.transform(alpha$1))\r\n });\r\n }\r\n};\r\nvar hsla = {\r\n test: function (v) { return (typeof v === 'string' ? isColorString(v, 'hsl') : isHsla(v)); },\r\n parse: splitColorValues(['hue', 'saturation', 'lightness', 'alpha']),\r\n transform: function (_a) {\r\n var hue = _a.hue, saturation = _a.saturation, lightness = _a.lightness, _b = _a.alpha, alpha$1 = _b === void 0 ? 1 : _b;\r\n return hslaTemplate({\r\n hue: Math.round(hue),\r\n saturation: percent.transform(sanitize(saturation)),\r\n lightness: percent.transform(sanitize(lightness)),\r\n alpha: sanitize(alpha.transform(alpha$1))\r\n });\r\n }\r\n};\r\nvar hex = __assign(__assign({}, rgba), { test: function (v) { return typeof v === 'string' && isColorString(v, '#'); }, parse: function (v) {\r\n var r = '';\r\n var g = '';\r\n var b = '';\r\n if (v.length > 4) {\r\n r = v.substr(1, 2);\r\n g = v.substr(3, 2);\r\n b = v.substr(5, 2);\r\n }\r\n else {\r\n r = v.substr(1, 1);\r\n g = v.substr(2, 1);\r\n b = v.substr(3, 1);\r\n r += r;\r\n g += g;\r\n b += b;\r\n }\r\n return {\r\n red: parseInt(r, 16),\r\n green: parseInt(g, 16),\r\n blue: parseInt(b, 16),\r\n alpha: 1\r\n };\r\n } });\r\nvar color = {\r\n test: function (v) {\r\n return (typeof v === 'string' && singleColorRegex.test(v)) ||\r\n isRgba(v) ||\r\n isHsla(v);\r\n },\r\n parse: function (v) {\r\n if (rgba.test(v)) {\r\n return rgba.parse(v);\r\n }\r\n else if (hsla.test(v)) {\r\n return hsla.parse(v);\r\n }\r\n else if (hex.test(v)) {\r\n return hex.parse(v);\r\n }\r\n return v;\r\n },\r\n transform: function (v) {\r\n if (isRgba(v)) {\r\n return rgba.transform(v);\r\n }\r\n else if (isHsla(v)) {\r\n return hsla.transform(v);\r\n }\r\n return v;\r\n }\r\n};\n\nvar COLOR_TOKEN = '${c}';\r\nvar NUMBER_TOKEN = '${n}';\r\nvar convertNumbersToZero = function (v) {\r\n return typeof v === 'number' ? 0 : v;\r\n};\r\nvar complex = {\r\n test: function (v) {\r\n if (typeof v !== 'string' || !isNaN(v))\r\n return false;\r\n var numValues = 0;\r\n var foundNumbers = v.match(floatRegex);\r\n var foundColors = v.match(colorRegex);\r\n if (foundNumbers)\r\n numValues += foundNumbers.length;\r\n if (foundColors)\r\n numValues += foundColors.length;\r\n return numValues > 0;\r\n },\r\n parse: function (v) {\r\n var input = v;\r\n var parsed = [];\r\n var foundColors = input.match(colorRegex);\r\n if (foundColors) {\r\n input = input.replace(colorRegex, COLOR_TOKEN);\r\n parsed.push.apply(parsed, foundColors.map(color.parse));\r\n }\r\n var foundNumbers = input.match(floatRegex);\r\n if (foundNumbers) {\r\n parsed.push.apply(parsed, foundNumbers.map(number.parse));\r\n }\r\n return parsed;\r\n },\r\n createTransformer: function (prop) {\r\n var template = prop;\r\n var token = 0;\r\n var foundColors = prop.match(colorRegex);\r\n var numColors = foundColors ? foundColors.length : 0;\r\n if (foundColors) {\r\n for (var i = 0; i < numColors; i++) {\r\n template = template.replace(foundColors[i], COLOR_TOKEN);\r\n token++;\r\n }\r\n }\r\n var foundNumbers = template.match(floatRegex);\r\n var numNumbers = foundNumbers ? foundNumbers.length : 0;\r\n if (foundNumbers) {\r\n for (var i = 0; i < numNumbers; i++) {\r\n template = template.replace(foundNumbers[i], NUMBER_TOKEN);\r\n token++;\r\n }\r\n }\r\n return function (v) {\r\n var output = template;\r\n for (var i = 0; i < token; i++) {\r\n output = output.replace(i < numColors ? COLOR_TOKEN : NUMBER_TOKEN, i < numColors ? color.transform(v[i]) : sanitize(v[i]));\r\n }\r\n return output;\r\n };\r\n },\r\n getAnimatableNone: function (target) {\r\n var parsedTarget = complex.parse(target);\r\n var targetTransformer = complex.createTransformer(target);\r\n return targetTransformer(parsedTarget.map(convertNumbersToZero));\r\n }\r\n};\n\nexport { alpha, color, complex, degrees, hex, hsla, number, percent, progressPercentage, px, rgbUnit, rgba, scale, vh, vw };\n","import { __assign, __spreadArrays, __rest } from 'tslib';\nimport { hex, rgba, hsla, complex, color } from 'style-value-types';\nimport { invariant } from 'hey-listen';\nimport sync, { cancelSync, getFrameData } from 'framesync';\n\nfunction spring(_a) {\n var _b = _a.from,\n from = _b === void 0 ? 0.0 : _b,\n _c = _a.to,\n to = _c === void 0 ? 0.0 : _c,\n _d = _a.velocity,\n velocity = _d === void 0 ? 0.0 : _d,\n _e = _a.stiffness,\n stiffness = _e === void 0 ? 100 : _e,\n _f = _a.damping,\n damping = _f === void 0 ? 10 : _f,\n _g = _a.mass,\n mass = _g === void 0 ? 1.0 : _g,\n _h = _a.restSpeed,\n restSpeed = _h === void 0 ? 2 : _h,\n restDelta = _a.restDelta;\n var state = { done: false, value: from };\n var resolveSpring = zero;\n var resolveVelocity = zero;\n function createSpring() {\n var initialVelocity = velocity ? -(velocity / 1000) : 0.0;\n var initialDelta = to - from;\n var dampingRatio = damping / (2 * Math.sqrt(stiffness * mass));\n var angularFreq = Math.sqrt(stiffness / mass) / 1000;\n restDelta !== null && restDelta !== void 0 ? restDelta : restDelta = Math.abs(to - from) <= 1 ? 0.01 : 0.4;\n if (dampingRatio < 1) {\n resolveSpring = function (t) {\n var envelope = Math.exp(-dampingRatio * angularFreq * t);\n var expoDecay = angularFreq * Math.sqrt(1.0 - dampingRatio * dampingRatio);\n return to - envelope * ((initialVelocity + dampingRatio * angularFreq * initialDelta) / expoDecay * Math.sin(expoDecay * t) + initialDelta * Math.cos(expoDecay * t));\n };\n resolveVelocity = function (t) {\n var envelope = Math.exp(-dampingRatio * angularFreq * t);\n var expoDecay = angularFreq * Math.sqrt(1.0 - dampingRatio * dampingRatio);\n return dampingRatio * angularFreq * envelope * (Math.sin(expoDecay * t) * (initialVelocity + dampingRatio * angularFreq * initialDelta) / expoDecay + initialDelta * Math.cos(expoDecay * t)) - envelope * (Math.cos(expoDecay * t) * (initialVelocity + dampingRatio * angularFreq * initialDelta) - expoDecay * initialDelta * Math.sin(expoDecay * t));\n };\n } else if (dampingRatio === 1) {\n resolveSpring = function (t) {\n var envelope = Math.exp(-angularFreq * t);\n return to - envelope * (initialDelta + (initialVelocity + angularFreq * initialDelta) * t);\n };\n } else {\n var dampedAngularFreq_1 = angularFreq * Math.sqrt(dampingRatio * dampingRatio - 1);\n resolveSpring = function (t) {\n var envelope = Math.exp(-dampingRatio * angularFreq * t);\n return to - envelope * ((initialVelocity + dampingRatio * angularFreq * initialDelta) * Math.sinh(dampedAngularFreq_1 * t) + dampedAngularFreq_1 * initialDelta * Math.cosh(dampedAngularFreq_1 * t)) / dampedAngularFreq_1;\n };\n }\n }\n createSpring();\n return {\n next: function (t) {\n var current = resolveSpring(t);\n var velocity = resolveVelocity(t) * 1000;\n var isBelowVelocityThreshold = Math.abs(velocity) <= restSpeed;\n var isBelowDisplacementThreshold = Math.abs(to - current) <= restDelta;\n state.done = isBelowVelocityThreshold && isBelowDisplacementThreshold;\n state.value = state.done ? to : current;\n return state;\n },\n flipTarget: function () {\n var _a;\n velocity = -velocity;\n _a = [to, from], from = _a[0], to = _a[1];\n createSpring();\n }\n };\n}\nspring.needsInterpolation = function (a, b) {\n return typeof a === \"string\" || typeof b === \"string\";\n};\nvar zero = function (_t) {\n return 0;\n};\n\nvar progress = function (from, to, value) {\n var toFromDifference = to - from;\n return toFromDifference === 0 ? 1 : (value - from) / toFromDifference;\n};\n\nvar mix = function (from, to, progress) {\n return -progress * from + progress * to + from;\n};\n\nvar mixLinearColor = function (from, to, v) {\n var fromExpo = from * from;\n var toExpo = to * to;\n return Math.sqrt(Math.max(0, v * (toExpo - fromExpo) + fromExpo));\n};\nvar colorTypes = [hex, rgba, hsla];\nvar getColorType = function (v) {\n return colorTypes.find(function (type) {\n return type.test(v);\n });\n};\nvar notAnimatable = function (color) {\n return \"'\" + color + \"' is not an animatable color. Use the equivalent color code instead.\";\n};\nvar mixColor = function (from, to) {\n var fromColorType = getColorType(from);\n var toColorType = getColorType(to);\n invariant(!!fromColorType, notAnimatable(from));\n invariant(!!toColorType, notAnimatable(to));\n invariant(fromColorType.transform === toColorType.transform, 'Both colors must be hex/RGBA, OR both must be HSLA.');\n var fromColor = fromColorType.parse(from);\n var toColor = toColorType.parse(to);\n var blended = __assign({}, fromColor);\n var mixFunc = fromColorType === hsla ? mix : mixLinearColor;\n return function (v) {\n for (var key in blended) {\n if (key !== 'alpha') {\n blended[key] = mixFunc(fromColor[key], toColor[key], v);\n }\n }\n blended.alpha = mix(fromColor.alpha, toColor.alpha, v);\n return fromColorType.transform(blended);\n };\n};\n\nvar zeroPoint = {\n x: 0,\n y: 0,\n z: 0\n};\nvar isNum = function (v) {\n return typeof v === 'number';\n};\n\nvar combineFunctions = function (a, b) {\n return function (v) {\n return b(a(v));\n };\n};\nvar pipe = function () {\n var transformers = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n transformers[_i] = arguments[_i];\n }\n return transformers.reduce(combineFunctions);\n};\n\nfunction getMixer(origin, target) {\n if (isNum(origin)) {\n return function (v) {\n return mix(origin, target, v);\n };\n } else if (color.test(origin)) {\n return mixColor(origin, target);\n } else {\n return mixComplex(origin, target);\n }\n}\nvar mixArray = function (from, to) {\n var output = __spreadArrays(from);\n var numValues = output.length;\n var blendValue = from.map(function (fromThis, i) {\n return getMixer(fromThis, to[i]);\n });\n return function (v) {\n for (var i = 0; i < numValues; i++) {\n output[i] = blendValue[i](v);\n }\n return output;\n };\n};\nvar mixObject = function (origin, target) {\n var output = __assign(__assign({}, origin), target);\n var blendValue = {};\n for (var key in output) {\n if (origin[key] !== undefined && target[key] !== undefined) {\n blendValue[key] = getMixer(origin[key], target[key]);\n }\n }\n return function (v) {\n for (var key in blendValue) {\n output[key] = blendValue[key](v);\n }\n return output;\n };\n};\nfunction analyse(value) {\n var parsed = complex.parse(value);\n var numValues = parsed.length;\n var numNumbers = 0;\n var numRGB = 0;\n var numHSL = 0;\n for (var i = 0; i < numValues; i++) {\n if (numNumbers || typeof parsed[i] === 'number') {\n numNumbers++;\n } else {\n if (parsed[i].hue !== undefined) {\n numHSL++;\n } else {\n numRGB++;\n }\n }\n }\n return { parsed: parsed, numNumbers: numNumbers, numRGB: numRGB, numHSL: numHSL };\n}\nvar mixComplex = function (origin, target) {\n var template = complex.createTransformer(target);\n var originStats = analyse(origin);\n var targetStats = analyse(target);\n invariant(originStats.numHSL === targetStats.numHSL && originStats.numRGB === targetStats.numRGB && originStats.numNumbers >= targetStats.numNumbers, \"Complex values '\" + origin + \"' and '\" + target + \"' too different to mix. Ensure all colors are of the same type.\");\n return pipe(mixArray(originStats.parsed, targetStats.parsed), template);\n};\n\nvar clamp = function (min, max, v) {\n return Math.min(Math.max(v, min), max);\n};\n\nvar mixNumber = function (from, to) {\n return function (p) {\n return mix(from, to, p);\n };\n};\nfunction detectMixerFactory(v) {\n if (typeof v === 'number') {\n return mixNumber;\n } else if (typeof v === 'string') {\n if (color.test(v)) {\n return mixColor;\n } else {\n return mixComplex;\n }\n } else if (Array.isArray(v)) {\n return mixArray;\n } else if (typeof v === 'object') {\n return mixObject;\n }\n}\nfunction createMixers(output, ease, customMixer) {\n var mixers = [];\n var mixerFactory = customMixer || detectMixerFactory(output[0]);\n var numMixers = output.length - 1;\n for (var i = 0; i < numMixers; i++) {\n var mixer = mixerFactory(output[i], output[i + 1]);\n if (ease) {\n var easingFunction = Array.isArray(ease) ? ease[i] : ease;\n mixer = pipe(easingFunction, mixer);\n }\n mixers.push(mixer);\n }\n return mixers;\n}\nfunction fastInterpolate(_a, _b) {\n var from = _a[0],\n to = _a[1];\n var mixer = _b[0];\n return function (v) {\n return mixer(progress(from, to, v));\n };\n}\nfunction slowInterpolate(input, mixers) {\n var inputLength = input.length;\n var lastInputIndex = inputLength - 1;\n return function (v) {\n var mixerIndex = 0;\n var foundMixerIndex = false;\n if (v <= input[0]) {\n foundMixerIndex = true;\n } else if (v >= input[lastInputIndex]) {\n mixerIndex = lastInputIndex - 1;\n foundMixerIndex = true;\n }\n if (!foundMixerIndex) {\n var i = 1;\n for (; i < inputLength; i++) {\n if (input[i] > v || i === lastInputIndex) {\n break;\n }\n }\n mixerIndex = i - 1;\n }\n var progressInRange = progress(input[mixerIndex], input[mixerIndex + 1], v);\n return mixers[mixerIndex](progressInRange);\n };\n}\nfunction interpolate(input, output, _a) {\n var _b = _a === void 0 ? {} : _a,\n _c = _b.clamp,\n isClamp = _c === void 0 ? true : _c,\n ease = _b.ease,\n mixer = _b.mixer;\n var inputLength = input.length;\n invariant(inputLength === output.length, 'Both input and output ranges must be the same length');\n invariant(!ease || !Array.isArray(ease) || ease.length === inputLength - 1, 'Array of easing functions must be of length `input.length - 1`, as it applies to the transitions **between** the defined values.');\n if (input[0] > input[inputLength - 1]) {\n input = [].concat(input);\n output = [].concat(output);\n input.reverse();\n output.reverse();\n }\n var mixers = createMixers(output, ease, mixer);\n var interpolator = inputLength === 2 ? fastInterpolate(input, mixers) : slowInterpolate(input, mixers);\n return isClamp ? function (v) {\n return interpolator(clamp(input[0], input[inputLength - 1], v));\n } : interpolator;\n}\n\nvar reverseEasing = function (easing) {\n return function (p) {\n return 1 - easing(1 - p);\n };\n};\nvar mirrorEasing = function (easing) {\n return function (p) {\n return p <= 0.5 ? easing(2 * p) / 2 : (2 - easing(2 * (1 - p))) / 2;\n };\n};\nvar createExpoIn = function (power) {\n return function (p) {\n return Math.pow(p, power);\n };\n};\nvar createBackIn = function (power) {\n return function (p) {\n return p * p * ((power + 1) * p - power);\n };\n};\nvar createAnticipate = function (power) {\n var backEasing = createBackIn(power);\n return function (p) {\n return (p *= 2) < 1 ? 0.5 * backEasing(p) : 0.5 * (2 - Math.pow(2, -10 * (p - 1)));\n };\n};\n\nvar DEFAULT_OVERSHOOT_STRENGTH = 1.525;\nvar BOUNCE_FIRST_THRESHOLD = 4.0 / 11.0;\nvar BOUNCE_SECOND_THRESHOLD = 8.0 / 11.0;\nvar BOUNCE_THIRD_THRESHOLD = 9.0 / 10.0;\nvar linear = function (p) {\n return p;\n};\nvar easeIn = /*#__PURE__*/createExpoIn(2);\nvar easeOut = /*#__PURE__*/reverseEasing(easeIn);\nvar easeInOut = /*#__PURE__*/mirrorEasing(easeIn);\nvar circIn = function (p) {\n return 1 - Math.sin(Math.acos(p));\n};\nvar circOut = /*#__PURE__*/reverseEasing(circIn);\nvar circInOut = /*#__PURE__*/mirrorEasing(circOut);\nvar backIn = /*#__PURE__*/createBackIn(DEFAULT_OVERSHOOT_STRENGTH);\nvar backOut = /*#__PURE__*/reverseEasing(backIn);\nvar backInOut = /*#__PURE__*/mirrorEasing(backIn);\nvar anticipate = /*#__PURE__*/createAnticipate(DEFAULT_OVERSHOOT_STRENGTH);\nvar ca = 4356.0 / 361.0;\nvar cb = 35442.0 / 1805.0;\nvar cc = 16061.0 / 1805.0;\nvar bounceOut = function (p) {\n if (p === 1 || p === 0) return p;\n var p2 = p * p;\n return p < BOUNCE_FIRST_THRESHOLD ? 7.5625 * p2 : p < BOUNCE_SECOND_THRESHOLD ? 9.075 * p2 - 9.9 * p + 3.4 : p < BOUNCE_THIRD_THRESHOLD ? ca * p2 - cb * p + cc : 10.8 * p * p - 20.52 * p + 10.72;\n};\nvar bounceIn = /*#__PURE__*/reverseEasing(bounceOut);\nvar bounceInOut = function (p) {\n return p < 0.5 ? 0.5 * (1.0 - bounceOut(1.0 - p * 2.0)) : 0.5 * bounceOut(p * 2.0 - 1.0) + 0.5;\n};\n\nfunction defaultEasing(values, easing) {\n return values.map(function () {\n return easing || easeInOut;\n }).splice(0, values.length - 1);\n}\nfunction defaultOffset(values) {\n var numValues = values.length;\n return values.map(function (_value, i) {\n return i !== 0 ? i / (numValues - 1) : 0;\n });\n}\nfunction convertOffsetToTimes(offset, duration) {\n return offset.map(function (o) {\n return o * duration;\n });\n}\nfunction keyframes(_a) {\n var _b = _a.from,\n from = _b === void 0 ? 0 : _b,\n _c = _a.to,\n to = _c === void 0 ? 1 : _c,\n ease = _a.ease,\n offset = _a.offset,\n _d = _a.duration,\n duration = _d === void 0 ? 300 : _d;\n var state = { done: false, value: from };\n var values = Array.isArray(to) ? to : [from, to];\n var times = convertOffsetToTimes(offset !== null && offset !== void 0 ? offset : defaultOffset(values), duration);\n function createInterpolator() {\n return interpolate(times, values, {\n ease: Array.isArray(ease) ? ease : defaultEasing(values, ease)\n });\n }\n var interpolator = createInterpolator();\n return {\n next: function (t) {\n state.value = interpolator(t);\n state.done = t >= duration;\n return state;\n },\n flipTarget: function () {\n values.reverse();\n interpolator = createInterpolator();\n }\n };\n}\n\nfunction decay(_a) {\n var _b = _a.velocity,\n velocity = _b === void 0 ? 0 : _b,\n _c = _a.from,\n from = _c === void 0 ? 0 : _c,\n _d = _a.power,\n power = _d === void 0 ? 0.8 : _d,\n _e = _a.timeConstant,\n timeConstant = _e === void 0 ? 350 : _e,\n _f = _a.restDelta,\n restDelta = _f === void 0 ? 0.5 : _f,\n modifyTarget = _a.modifyTarget;\n var state = { done: false, value: from };\n var amplitude = power * velocity;\n var ideal = from + amplitude;\n var target = modifyTarget === undefined ? ideal : modifyTarget(ideal);\n if (target !== ideal) amplitude = target - from;\n return {\n next: function (t) {\n var delta = -amplitude * Math.exp(-t / timeConstant);\n state.done = !(delta > restDelta || delta < -restDelta);\n state.value = state.done ? target : target + delta;\n return state;\n },\n flipTarget: function () {}\n };\n}\n\nvar types = { keyframes: keyframes, spring: spring, decay: decay };\nfunction detectAnimationFromOptions(config) {\n if (Array.isArray(config.to)) {\n return keyframes;\n } else if (types[config.type]) {\n return types[config.type];\n }\n var keys = new Set(Object.keys(config));\n if (keys.has(\"ease\") || keys.has(\"duration\")) {\n return keyframes;\n } else if (keys.has(\"stiffness\") || keys.has(\"mass\") || keys.has(\"damping\") || keys.has(\"restSpeed\") || keys.has(\"restDelta\")) {\n return spring;\n }\n return keyframes;\n}\n\nfunction loopElapsed(elapsed, duration, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return elapsed - duration - delay;\n}\nfunction reverseElapsed(elapsed, duration, delay, isForwardPlayback) {\n if (delay === void 0) {\n delay = 0;\n }\n if (isForwardPlayback === void 0) {\n isForwardPlayback = true;\n }\n return isForwardPlayback ? loopElapsed(duration + -elapsed, duration, delay) : duration - (elapsed - duration) + delay;\n}\nfunction hasRepeatDelayElapsed(elapsed, duration, delay, isForwardPlayback) {\n return isForwardPlayback ? elapsed >= duration + delay : elapsed <= -delay;\n}\n\nvar framesync = function (update) {\n var passTimestamp = function (_a) {\n var delta = _a.delta;\n return update(delta);\n };\n return {\n start: function () {\n return sync.update(passTimestamp, true, true);\n },\n stop: function () {\n return cancelSync.update(passTimestamp);\n }\n };\n};\nfunction animate(_a) {\n var _b, _c;\n var from = _a.from,\n _d = _a.autoplay,\n autoplay = _d === void 0 ? true : _d,\n _e = _a.driver,\n driver = _e === void 0 ? framesync : _e,\n _f = _a.elapsed,\n elapsed = _f === void 0 ? 0 : _f,\n _g = _a.repeat,\n repeatMax = _g === void 0 ? 0 : _g,\n _h = _a.repeatType,\n repeatType = _h === void 0 ? \"loop\" : _h,\n _j = _a.repeatDelay,\n repeatDelay = _j === void 0 ? 0 : _j,\n onPlay = _a.onPlay,\n onStop = _a.onStop,\n onComplete = _a.onComplete,\n onRepeat = _a.onRepeat,\n onUpdate = _a.onUpdate,\n options = __rest(_a, [\"from\", \"autoplay\", \"driver\", \"elapsed\", \"repeat\", \"repeatType\", \"repeatDelay\", \"onPlay\", \"onStop\", \"onComplete\", \"onRepeat\", \"onUpdate\"]);\n var to = options.to;\n var driverControls;\n var repeatCount = 0;\n var computedDuration = options.duration;\n var latest;\n var isComplete = false;\n var isForwardPlayback = true;\n var interpolateFromNumber;\n var animator = detectAnimationFromOptions(options);\n if ((_c = (_b = animator).needsInterpolation) === null || _c === void 0 ? void 0 : _c.call(_b, from, to)) {\n interpolateFromNumber = interpolate([0, 100], [from, to], {\n clamp: false\n });\n from = 0;\n to = 100;\n }\n var animation = animator(__assign(__assign({}, options), { from: from, to: to }));\n function repeat() {\n repeatCount++;\n if (repeatType === \"reverse\") {\n isForwardPlayback = repeatCount % 2 === 0;\n elapsed = reverseElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback);\n } else {\n elapsed = loopElapsed(elapsed, computedDuration, repeatDelay);\n if (repeatType === \"mirror\") animation.flipTarget();\n }\n isComplete = false;\n onRepeat && onRepeat();\n }\n function complete() {\n driverControls.stop();\n onComplete && onComplete();\n }\n function update(delta) {\n if (!isForwardPlayback) delta = -delta;\n elapsed += delta;\n if (!isComplete) {\n var state = animation.next(Math.max(0, elapsed));\n latest = state.value;\n if (interpolateFromNumber) latest = interpolateFromNumber(latest);\n isComplete = isForwardPlayback ? state.done : elapsed <= 0;\n }\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(latest);\n if (isComplete) {\n if (repeatCount === 0) computedDuration !== null && computedDuration !== void 0 ? computedDuration : computedDuration = elapsed;\n if (repeatCount < repeatMax) {\n hasRepeatDelayElapsed(elapsed, computedDuration, repeatDelay, isForwardPlayback) && repeat();\n } else {\n complete();\n }\n }\n }\n function play() {\n onPlay === null || onPlay === void 0 ? void 0 : onPlay();\n driverControls = driver(update);\n driverControls.start();\n }\n autoplay && play();\n return {\n stop: function () {\n onStop === null || onStop === void 0 ? void 0 : onStop();\n driverControls.stop();\n }\n };\n}\n\nfunction velocityPerSecond(velocity, frameDuration) {\n return frameDuration ? velocity * (1000 / frameDuration) : 0;\n}\n\nfunction inertia(_a) {\n var _b = _a.from,\n from = _b === void 0 ? 0 : _b,\n _c = _a.velocity,\n velocity = _c === void 0 ? 0 : _c,\n min = _a.min,\n max = _a.max,\n _d = _a.power,\n power = _d === void 0 ? 0.8 : _d,\n _e = _a.timeConstant,\n timeConstant = _e === void 0 ? 750 : _e,\n _f = _a.bounceStiffness,\n bounceStiffness = _f === void 0 ? 500 : _f,\n _g = _a.bounceDamping,\n bounceDamping = _g === void 0 ? 10 : _g,\n _h = _a.restDelta,\n restDelta = _h === void 0 ? 1 : _h,\n modifyTarget = _a.modifyTarget,\n driver = _a.driver,\n onUpdate = _a.onUpdate,\n onComplete = _a.onComplete;\n var currentAnimation;\n function isOutOfBounds(v) {\n return min !== undefined && v < min || max !== undefined && v > max;\n }\n function boundaryNearest(v) {\n if (min === undefined) return max;\n if (max === undefined) return min;\n return Math.abs(min - v) < Math.abs(max - v) ? min : max;\n }\n function startAnimation(options) {\n currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop();\n currentAnimation = animate(__assign(__assign({}, options), { driver: driver, onUpdate: function (v) {\n var _a;\n onUpdate === null || onUpdate === void 0 ? void 0 : onUpdate(v);\n (_a = options.onUpdate) === null || _a === void 0 ? void 0 : _a.call(options, v);\n }, onComplete: onComplete }));\n }\n function startSpring(options) {\n startAnimation(__assign({ type: \"spring\", stiffness: bounceStiffness, damping: bounceDamping, restDelta: restDelta }, options));\n }\n if (isOutOfBounds(from)) {\n startSpring({ from: from, velocity: velocity, to: boundaryNearest(from) });\n } else {\n var target = power * velocity + from;\n if (typeof modifyTarget !== \"undefined\") target = modifyTarget(target);\n var boundary_1 = boundaryNearest(target);\n var heading_1 = boundary_1 === min ? -1 : 1;\n var prev_1;\n var current_1;\n var checkBoundary = function (v) {\n prev_1 = current_1;\n current_1 = v;\n velocity = velocityPerSecond(v - prev_1, getFrameData().delta);\n if (heading_1 === 1 && v > boundary_1 || heading_1 === -1 && v < boundary_1) {\n startSpring({ from: v, to: boundary_1, velocity: velocity });\n }\n };\n startAnimation({\n type: \"decay\",\n from: from,\n velocity: velocity,\n timeConstant: timeConstant,\n power: power,\n restDelta: restDelta,\n modifyTarget: modifyTarget,\n onUpdate: isOutOfBounds(target) ? checkBoundary : undefined\n });\n }\n return {\n stop: function () {\n return currentAnimation === null || currentAnimation === void 0 ? void 0 : currentAnimation.stop();\n }\n };\n}\n\nvar radiansToDegrees = function (radians) {\n return radians * 180 / Math.PI;\n};\n\nvar angle = function (a, b) {\n if (b === void 0) {\n b = zeroPoint;\n }\n return radiansToDegrees(Math.atan2(b.y - a.y, b.x - a.x));\n};\n\nvar applyOffset = function (from, to) {\n var hasReceivedFrom = true;\n if (to === undefined) {\n to = from;\n hasReceivedFrom = false;\n }\n return function (v) {\n if (hasReceivedFrom) {\n return v - from + to;\n } else {\n from = v;\n hasReceivedFrom = true;\n return to;\n }\n };\n};\n\nvar identity = function (v) {\n return v;\n};\nvar createAttractor = function (alterDisplacement) {\n if (alterDisplacement === void 0) {\n alterDisplacement = identity;\n }\n return function (constant, origin, v) {\n var displacement = origin - v;\n var springModifiedDisplacement = -(0 - constant + 1) * (0 - alterDisplacement(Math.abs(displacement)));\n return displacement <= 0 ? origin + springModifiedDisplacement : origin - springModifiedDisplacement;\n };\n};\nvar attract = /*#__PURE__*/createAttractor();\nvar attractExpo = /*#__PURE__*/createAttractor(Math.sqrt);\n\nvar degreesToRadians = function (degrees) {\n return degrees * Math.PI / 180;\n};\n\nvar isPoint = function (point) {\n return point.hasOwnProperty('x') && point.hasOwnProperty('y');\n};\n\nvar isPoint3D = function (point) {\n return isPoint(point) && point.hasOwnProperty('z');\n};\n\nvar distance1D = function (a, b) {\n return Math.abs(a - b);\n};\nfunction distance(a, b) {\n if (isNum(a) && isNum(b)) {\n return distance1D(a, b);\n } else if (isPoint(a) && isPoint(b)) {\n var xDelta = distance1D(a.x, b.x);\n var yDelta = distance1D(a.y, b.y);\n var zDelta = isPoint3D(a) && isPoint3D(b) ? distance1D(a.z, b.z) : 0;\n return Math.sqrt(Math.pow(xDelta, 2) + Math.pow(yDelta, 2) + Math.pow(zDelta, 2));\n }\n}\n\nvar pointFromVector = function (origin, angle, distance) {\n angle = degreesToRadians(angle);\n return {\n x: distance * Math.cos(angle) + origin.x,\n y: distance * Math.sin(angle) + origin.y\n };\n};\n\nvar toDecimal = function (num, precision) {\n if (precision === void 0) {\n precision = 2;\n }\n precision = Math.pow(10, precision);\n return Math.round(num * precision) / precision;\n};\n\nvar smoothFrame = function (prevValue, nextValue, duration, smoothing) {\n if (smoothing === void 0) {\n smoothing = 0;\n }\n return toDecimal(prevValue + duration * (nextValue - prevValue) / Math.max(smoothing, duration));\n};\n\nvar smooth = function (strength) {\n if (strength === void 0) {\n strength = 50;\n }\n var previousValue = 0;\n var lastUpdated = 0;\n return function (v) {\n var currentFramestamp = getFrameData().timestamp;\n var timeDelta = currentFramestamp !== lastUpdated ? currentFramestamp - lastUpdated : 0;\n var newValue = timeDelta ? smoothFrame(previousValue, v, timeDelta, strength) : previousValue;\n lastUpdated = currentFramestamp;\n previousValue = newValue;\n return newValue;\n };\n};\n\nvar snap = function (points) {\n if (typeof points === 'number') {\n return function (v) {\n return Math.round(v / points) * points;\n };\n } else {\n var i_1 = 0;\n var numPoints_1 = points.length;\n return function (v) {\n var lastDistance = Math.abs(points[0] - v);\n for (i_1 = 1; i_1 < numPoints_1; i_1++) {\n var point = points[i_1];\n var distance = Math.abs(point - v);\n if (distance === 0) return point;\n if (distance > lastDistance) return points[i_1 - 1];\n if (i_1 === numPoints_1 - 1) return point;\n lastDistance = distance;\n }\n };\n }\n};\n\nfunction velocityPerFrame(xps, frameDuration) {\n return xps / (1000 / frameDuration);\n}\n\nvar wrap = function (min, max, v) {\n var rangeSize = max - min;\n return ((v - min) % rangeSize + rangeSize) % rangeSize + min;\n};\n\nvar a = function (a1, a2) {\n return 1.0 - 3.0 * a2 + 3.0 * a1;\n};\nvar b = function (a1, a2) {\n return 3.0 * a2 - 6.0 * a1;\n};\nvar c = function (a1) {\n return 3.0 * a1;\n};\nvar calcBezier = function (t, a1, a2) {\n return ((a(a1, a2) * t + b(a1, a2)) * t + c(a1)) * t;\n};\nvar getSlope = function (t, a1, a2) {\n return 3.0 * a(a1, a2) * t * t + 2.0 * b(a1, a2) * t + c(a1);\n};\nvar subdivisionPrecision = 0.0000001;\nvar subdivisionMaxIterations = 10;\nfunction binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX;\n var currentT;\n var i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > subdivisionPrecision && ++i < subdivisionMaxIterations);\n return currentT;\n}\nvar newtonIterations = 8;\nvar newtonMinSlope = 0.001;\nfunction newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < newtonIterations; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n}\nvar kSplineTableSize = 11;\nvar kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\nfunction cubicBezier(mX1, mY1, mX2, mY2) {\n if (mX1 === mY1 && mX2 === mY2) return linear;\n var sampleValues = new Float32Array(kSplineTableSize);\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n function getTForX(aX) {\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n --currentSample;\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n if (initialSlope >= newtonMinSlope) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n }\n return function (t) {\n return t === 0 || t === 1 ? t : calcBezier(getTForX(t), mY1, mY2);\n };\n}\n\nvar steps = function (steps, direction) {\n if (direction === void 0) {\n direction = 'end';\n }\n return function (progress) {\n progress = direction === 'end' ? Math.min(progress, 0.999) : Math.max(progress, 0.001);\n var expanded = progress * steps;\n var rounded = direction === 'end' ? Math.floor(expanded) : Math.ceil(expanded);\n return clamp(0, 1, rounded / steps);\n };\n};\n\nexport { angle, animate, anticipate, applyOffset, attract, attractExpo, backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, clamp, createAnticipate, createAttractor, createBackIn, createExpoIn, cubicBezier, decay, degreesToRadians, distance, easeIn, easeInOut, easeOut, inertia, interpolate, isPoint, isPoint3D, keyframes, linear, mirrorEasing, mix, mixColor, mixComplex, pipe, pointFromVector, progress, radiansToDegrees, reverseEasing, smooth, smoothFrame, snap, spring, steps, toDecimal, velocityPerFrame, velocityPerSecond, wrap };\n","import { __values, __assign, __spread, __rest, __read, __extends } from 'tslib';\nimport sync, { getFrameData, cancelSync } from 'framesync';\nimport * as easingLookup from 'popmotion';\nimport { velocityPerSecond, mix, clamp, distance, progress, cubicBezier, inertia, animate, linear, circOut, interpolate, wrap } from 'popmotion';\nimport { invariant, warning } from 'hey-listen';\nimport { number, color, complex, px, percent, degrees, vw, vh, scale, alpha, progressPercentage } from 'style-value-types';\nimport React, { useRef, createContext, useContext, useEffect, createElement, useMemo, useLayoutEffect, forwardRef, Fragment, Component as Component$1, useCallback, useState, cloneElement, Children, isValidElement } from 'react';\n\nvar isRefObject = function (ref) {\n return typeof ref === \"object\" && ref.hasOwnProperty(\"current\");\n};\n\n/**\n * A generic subscription manager.\n */\nvar SubscriptionManager = /** @class */ (function () {\n function SubscriptionManager() {\n this.subscriptions = new Set();\n }\n SubscriptionManager.prototype.add = function (handler) {\n var _this = this;\n this.subscriptions.add(handler);\n return function () { return void _this.subscriptions.delete(handler); };\n };\n SubscriptionManager.prototype.notify = function (\n /**\n * Using ...args would be preferable but it's array creation and this\n * might be fired every frame.\n */\n a, b, c) {\n var e_1, _a;\n if (!this.subscriptions.size)\n return;\n try {\n for (var _b = __values(this.subscriptions), _c = _b.next(); !_c.done; _c = _b.next()) {\n var handler = _c.value;\n handler(a, b, c);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n SubscriptionManager.prototype.clear = function () {\n this.subscriptions.clear();\n };\n return SubscriptionManager;\n}());\n\nvar isFloat = function (value) {\n return !isNaN(parseFloat(value));\n};\n/**\n * `MotionValue` is used to track the state and velocity of motion values.\n *\n * @public\n */\nvar MotionValue = /** @class */ (function () {\n /**\n * @param init - The initiating value\n * @param config - Optional configuration options\n *\n * - `transformer`: A function to transform incoming values with.\n *\n * @internal\n */\n function MotionValue(init) {\n var _this = this;\n /**\n * Duration, in milliseconds, since last updating frame.\n *\n * @internal\n */\n this.timeDelta = 0;\n /**\n * Timestamp of the last time this `MotionValue` was updated.\n *\n * @internal\n */\n this.lastUpdated = 0;\n /**\n * Functions to notify when the `MotionValue` updates.\n *\n * @internal\n */\n this.updateSubscribers = new SubscriptionManager();\n /**\n * Functions to notify when the `MotionValue` updates and `render` is set to `true`.\n *\n * @internal\n */\n this.renderSubscribers = new SubscriptionManager();\n /**\n * Tracks whether this value can output a velocity. Currently this is only true\n * if the value is numerical, but we might be able to widen the scope here and support\n * other value types.\n *\n * @internal\n */\n this.canTrackVelocity = false;\n this.updateAndNotify = function (v, render) {\n if (render === void 0) { render = true; }\n _this.prev = _this.current;\n _this.current = v;\n if (_this.prev !== _this.current) {\n _this.updateSubscribers.notify(_this.current);\n }\n if (render) {\n _this.renderSubscribers.notify(_this.current);\n }\n // Update timestamp\n var _a = getFrameData(), delta = _a.delta, timestamp = _a.timestamp;\n if (_this.lastUpdated !== timestamp) {\n _this.timeDelta = delta;\n _this.lastUpdated = timestamp;\n sync.postRender(_this.scheduleVelocityCheck);\n }\n };\n /**\n * Schedule a velocity check for the next frame.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.scheduleVelocityCheck = function () { return sync.postRender(_this.velocityCheck); };\n /**\n * Updates `prev` with `current` if the value hasn't been updated this frame.\n * This ensures velocity calculations return `0`.\n *\n * This is an instanced and bound function to prevent generating a new\n * function once per frame.\n *\n * @internal\n */\n this.velocityCheck = function (_a) {\n var timestamp = _a.timestamp;\n if (timestamp !== _this.lastUpdated) {\n _this.prev = _this.current;\n }\n };\n this.set(init, false);\n this.canTrackVelocity = isFloat(this.current);\n }\n /**\n * Adds a function that will be notified when the `MotionValue` is updated.\n *\n * It returns a function that, when called, will cancel the subscription.\n *\n * When calling `onChange` inside a React component, it should be wrapped with the\n * `useEffect` hook. As it returns an unsubscribe function, this should be returned\n * from the `useEffect` function to ensure you don't add duplicate subscribers..\n *\n * @library\n *\n * ```jsx\n * function MyComponent() {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.onChange(updateOpacity)\n * const unsubscribeY = y.onChange(updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \n * }\n * ```\n *\n * @motion\n *\n * ```jsx\n * export const MyComponent = () => {\n * const x = useMotionValue(0)\n * const y = useMotionValue(0)\n * const opacity = useMotionValue(1)\n *\n * useEffect(() => {\n * function updateOpacity() {\n * const maxXY = Math.max(x.get(), y.get())\n * const newOpacity = transform(maxXY, [0, 100], [1, 0])\n * opacity.set(newOpacity)\n * }\n *\n * const unsubscribeX = x.onChange(updateOpacity)\n * const unsubscribeY = y.onChange(updateOpacity)\n *\n * return () => {\n * unsubscribeX()\n * unsubscribeY()\n * }\n * }, [])\n *\n * return \n * }\n * ```\n *\n * @internalremarks\n *\n * We could look into a `useOnChange` hook if the above lifecycle management proves confusing.\n *\n * ```jsx\n * useOnChange(x, () => {})\n * ```\n *\n * @param subscriber - A function that receives the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @public\n */\n MotionValue.prototype.onChange = function (subscription) {\n return this.updateSubscribers.add(subscription);\n };\n MotionValue.prototype.clearListeners = function () {\n this.updateSubscribers.clear();\n };\n /**\n * Adds a function that will be notified when the `MotionValue` requests a render.\n *\n * @param subscriber - A function that's provided the latest value.\n * @returns A function that, when called, will cancel this subscription.\n *\n * @internal\n */\n MotionValue.prototype.onRenderRequest = function (subscription) {\n // Render immediately\n subscription(this.get());\n return this.renderSubscribers.add(subscription);\n };\n /**\n * Attaches a passive effect to the `MotionValue`.\n *\n * @internal\n */\n MotionValue.prototype.attach = function (passiveEffect) {\n this.passiveEffect = passiveEffect;\n };\n /**\n * Sets the state of the `MotionValue`.\n *\n * @remarks\n *\n * ```jsx\n * const x = useMotionValue(0)\n * x.set(10)\n * ```\n *\n * @param latest - Latest value to set.\n * @param render - Whether to notify render subscribers. Defaults to `true`\n *\n * @public\n */\n MotionValue.prototype.set = function (v, render) {\n if (render === void 0) { render = true; }\n if (!render || !this.passiveEffect) {\n this.updateAndNotify(v, render);\n }\n else {\n this.passiveEffect(v, this.updateAndNotify);\n }\n };\n /**\n * Returns the latest state of `MotionValue`\n *\n * @returns - The latest state of `MotionValue`\n *\n * @public\n */\n MotionValue.prototype.get = function () {\n return this.current;\n };\n /**\n * @public\n */\n MotionValue.prototype.getPrevious = function () {\n return this.prev;\n };\n /**\n * Returns the latest velocity of `MotionValue`\n *\n * @returns - The latest velocity of `MotionValue`. Returns `0` if the state is non-numerical.\n *\n * @public\n */\n MotionValue.prototype.getVelocity = function () {\n // This could be isFloat(this.prev) && isFloat(this.current), but that would be wasteful\n return this.canTrackVelocity\n ? // These casts could be avoided if parseFloat would be typed better\n velocityPerSecond(parseFloat(this.current) -\n parseFloat(this.prev), this.timeDelta)\n : 0;\n };\n /**\n * Registers a new animation to control this `MotionValue`. Only one\n * animation can drive a `MotionValue` at one time.\n *\n * ```jsx\n * value.start()\n * ```\n *\n * @param animation - A function that starts the provided animation\n *\n * @internal\n */\n MotionValue.prototype.start = function (animation) {\n var _this = this;\n this.stop();\n return new Promise(function (resolve) {\n _this.stopAnimation = animation(resolve);\n }).then(function () { return _this.clearAnimation(); });\n };\n /**\n * Stop the currently active animation.\n *\n * @public\n */\n MotionValue.prototype.stop = function () {\n if (this.stopAnimation)\n this.stopAnimation();\n this.clearAnimation();\n };\n /**\n * Returns `true` if this value is currently animating.\n *\n * @public\n */\n MotionValue.prototype.isAnimating = function () {\n return !!this.stopAnimation;\n };\n MotionValue.prototype.clearAnimation = function () {\n this.stopAnimation = null;\n };\n /**\n * Destroy and clean up subscribers to this `MotionValue`.\n *\n * The `MotionValue` hooks like `useMotionValue` and `useTransform` automatically\n * handle the lifecycle of the returned `MotionValue`, so this method is only necessary if you've manually\n * created a `MotionValue` via the `motionValue` function.\n *\n * @public\n */\n MotionValue.prototype.destroy = function () {\n this.updateSubscribers.clear();\n this.renderSubscribers.clear();\n this.stop();\n };\n return MotionValue;\n}());\n/**\n * @internal\n */\nfunction motionValue(init) {\n return new MotionValue(init);\n}\n\n/**\n * VisualElement is an abstract class that provides a generic animation-optimised interface to the\n * underlying renderer.\n *\n * Currently many features interact directly with HTMLVisualElement/SVGVisualElement\n * but the idea is we can create, for instance, a ThreeVisualElement that extends\n * VisualElement and we can quickly offer all the same features.\n */\nvar VisualElement = /** @class */ (function () {\n function VisualElement(parent, ref) {\n var _this = this;\n // An iterable list of current children\n this.children = new Set();\n // The latest resolved MotionValues\n this.latest = {};\n // A map of MotionValues used to animate this element\n this.values = new Map();\n // Unsubscription callbacks for MotionValue subscriptions\n this.valueSubscriptions = new Map();\n // A configuration for this VisualElement, each derived class can extend this.\n this.config = {};\n // A pre-bound call to the user-provided `onUpdate` callback. This won't\n // be called more than once per frame.\n this.update = function () { return _this.config.onUpdate(_this.latest); };\n // Pre-bound version of render\n this.triggerRender = function () { return _this.render(); };\n // This function gets passed to the rendered component's `ref` prop\n // and is used to mount/unmount the VisualElement\n this.ref = function (element) {\n element ? _this.mount(element) : _this.unmount();\n if (!_this.externalRef)\n return;\n if (typeof _this.externalRef === \"function\") {\n _this.externalRef(element);\n }\n else if (isRefObject(_this.externalRef)) {\n _this.externalRef.current = element;\n }\n };\n // Create a relationship with the provided parent.\n this.parent = parent;\n this.rootParent = parent ? parent.rootParent : this;\n this.treePath = parent ? __spread(parent.treePath, [parent]) : [];\n // Calculate the depth of this node in the VisualElement graph\n this.depth = parent ? parent.depth + 1 : 0;\n // A reference to any externally-defined React ref. This might live better\n // outside the VisualElement and be handled in a hook.\n this.externalRef = ref;\n }\n VisualElement.prototype.subscribe = function (child) {\n var _this = this;\n this.children.add(child);\n return function () { return _this.children.delete(child); };\n };\n // Check whether this element has a MotionValue of the provided key\n VisualElement.prototype.hasValue = function (key) {\n return this.values.has(key);\n };\n // Add a MotionValue\n VisualElement.prototype.addValue = function (key, value) {\n if (this.hasValue(key))\n this.removeValue(key);\n this.values.set(key, value);\n this.setSingleStaticValue(key, value.get());\n this.subscribeToValue(key, value);\n };\n // Remove a MotionValue\n VisualElement.prototype.removeValue = function (key) {\n var _a;\n (_a = this.valueSubscriptions.get(key)) === null || _a === void 0 ? void 0 : _a();\n this.valueSubscriptions.delete(key);\n this.values.delete(key);\n delete this.latest[key];\n };\n VisualElement.prototype.getValue = function (key, defaultValue) {\n var value = this.values.get(key);\n if (value === undefined && defaultValue !== undefined) {\n value = new MotionValue(defaultValue);\n this.addValue(key, value);\n }\n return value;\n };\n // Iterate over all MotionValues\n VisualElement.prototype.forEachValue = function (callback) {\n this.values.forEach(callback);\n };\n // Get the underlying rendered instance of this VisualElement. For instance in\n // HTMLVisualElement this will be a HTMLElement.\n VisualElement.prototype.getInstance = function () {\n return this.element;\n };\n VisualElement.prototype.updateConfig = function (config) {\n if (config === void 0) { config = {}; }\n this.config = __assign({}, config);\n };\n // Set a single `latest` value\n VisualElement.prototype.setSingleStaticValue = function (key, value) {\n this.latest[key] = value;\n };\n // Statically set values to `latest` without needing a MotionValue\n VisualElement.prototype.setStaticValues = function (values, value) {\n if (typeof values === \"string\") {\n this.setSingleStaticValue(values, value);\n }\n else {\n for (var key in values) {\n this.setSingleStaticValue(key, values[key]);\n }\n }\n };\n VisualElement.prototype.scheduleRender = function () {\n sync.render(this.triggerRender, false, true);\n };\n VisualElement.prototype.scheduleUpdateLayoutDelta = function () {\n sync.preRender(this.rootParent.updateLayoutDelta, false, true);\n };\n VisualElement.prototype.subscribeToValue = function (key, value) {\n var _this = this;\n var onChange = function (latest) {\n _this.setSingleStaticValue(key, latest);\n // Schedule onUpdate if we have an onUpdate listener and the component has mounted\n _this.element &&\n _this.config.onUpdate &&\n sync.update(_this.update, false, true);\n };\n var onRender = function () {\n _this.element && _this.scheduleRender();\n };\n var unsubscribeOnChange = value.onChange(onChange);\n var unsubscribeOnRender = value.onRenderRequest(onRender);\n this.valueSubscriptions.set(key, function () {\n unsubscribeOnChange();\n unsubscribeOnRender();\n });\n };\n // Mount the VisualElement with the actual DOM element\n VisualElement.prototype.mount = function (element) {\n invariant(!!element, \"No ref found. Ensure components created with motion.custom forward refs using React.forwardRef\");\n if (this.parent) {\n this.removeFromParent = this.parent.subscribe(this);\n }\n /**\n * Save the element to this.element as a semantic API, this.current to the VisualElement\n * is compatible with existing RefObject APIs.\n */\n this.element = this.current = element;\n };\n // Unmount the VisualElement and cancel any scheduled updates\n VisualElement.prototype.unmount = function () {\n var _this = this;\n this.forEachValue(function (_, key) { return _this.removeValue(key); });\n cancelSync.update(this.update);\n cancelSync.render(this.render);\n this.removeFromParent && this.removeFromParent();\n };\n return VisualElement;\n}());\n\nfunction noop(any) {\n return any;\n}\n\n/**\n * Bounding boxes tend to be defined as top, left, right, bottom. For various operations\n * it's easier to consider each axis individually. This function returns a bounding box\n * as a map of single-axis min/max values.\n */\nfunction convertBoundingBoxToAxisBox(_a) {\n var top = _a.top, left = _a.left, right = _a.right, bottom = _a.bottom;\n return {\n x: { min: left, max: right },\n y: { min: top, max: bottom },\n };\n}\nfunction convertAxisBoxToBoundingBox(_a) {\n var x = _a.x, y = _a.y;\n return {\n top: y.min,\n bottom: y.max,\n left: x.min,\n right: x.max,\n };\n}\n/**\n * Applies a TransformPoint function to a bounding box. TransformPoint is usually a function\n * provided by Framer to allow measured points to be corrected for device scaling. This is used\n * when measuring DOM elements and DOM event points.\n */\nfunction transformBoundingBox(_a, transformPoint) {\n var top = _a.top, left = _a.left, bottom = _a.bottom, right = _a.right;\n if (transformPoint === void 0) { transformPoint = noop; }\n var topLeft = transformPoint({ x: left, y: top });\n var bottomRight = transformPoint({ x: right, y: bottom });\n return {\n top: topLeft.y,\n left: topLeft.x,\n bottom: bottomRight.y,\n right: bottomRight.x,\n };\n}\n/**\n * Create an empty axis box of zero size\n */\nfunction axisBox() {\n return { x: { min: 0, max: 1 }, y: { min: 0, max: 1 } };\n}\nfunction copyAxisBox(box) {\n return {\n x: __assign({}, box.x),\n y: __assign({}, box.y),\n };\n}\n/**\n * Create an empty box delta\n */\nvar zeroDelta = {\n translate: 0,\n scale: 1,\n origin: 0,\n originPoint: 0,\n};\nfunction delta() {\n return {\n x: __assign({}, zeroDelta),\n y: __assign({}, zeroDelta),\n };\n}\n\n/**\n * ValueType for \"auto\"\n */\nvar auto = {\n test: function (v) { return v === \"auto\"; },\n parse: function (v) { return v; },\n};\n/**\n * ValueType for ints\n */\nvar int = __assign(__assign({}, number), { transform: Math.round });\n/**\n * A map of default value types for common values\n */\nvar defaultValueTypes = {\n // Color props\n color: color,\n backgroundColor: color,\n outlineColor: color,\n fill: color,\n stroke: color,\n // Border props\n borderColor: color,\n borderTopColor: color,\n borderRightColor: color,\n borderBottomColor: color,\n borderLeftColor: color,\n borderWidth: px,\n borderTopWidth: px,\n borderRightWidth: px,\n borderBottomWidth: px,\n borderLeftWidth: px,\n borderRadius: px,\n radius: px,\n borderTopLeftRadius: px,\n borderTopRightRadius: px,\n borderBottomRightRadius: px,\n borderBottomLeftRadius: px,\n // Positioning props\n width: px,\n maxWidth: px,\n height: px,\n maxHeight: px,\n size: px,\n top: px,\n right: px,\n bottom: px,\n left: px,\n // Spacing props\n padding: px,\n paddingTop: px,\n paddingRight: px,\n paddingBottom: px,\n paddingLeft: px,\n margin: px,\n marginTop: px,\n marginRight: px,\n marginBottom: px,\n marginLeft: px,\n // Transform props\n rotate: degrees,\n rotateX: degrees,\n rotateY: degrees,\n rotateZ: degrees,\n scale: scale,\n scaleX: scale,\n scaleY: scale,\n scaleZ: scale,\n skew: degrees,\n skewX: degrees,\n skewY: degrees,\n distance: px,\n translateX: px,\n translateY: px,\n translateZ: px,\n x: px,\n y: px,\n z: px,\n perspective: px,\n transformPerspective: px,\n opacity: alpha,\n originX: progressPercentage,\n originY: progressPercentage,\n originZ: px,\n // Misc\n zIndex: int,\n // SVG\n fillOpacity: alpha,\n strokeOpacity: alpha,\n numOctaves: int,\n};\n/**\n * A list of value types commonly used for dimensions\n */\nvar dimensionValueTypes = [number, px, percent, degrees, vw, vh, auto];\n/**\n * Tests a provided value against a ValueType\n */\nvar testValueType = function (v) { return function (type) { return type.test(v); }; };\n/**\n * Tests a dimensional value against the list of dimension ValueTypes\n */\nvar findDimensionValueType = function (v) {\n return dimensionValueTypes.find(testValueType(v));\n};\n/**\n * A list of all ValueTypes\n */\nvar valueTypes = __spread(dimensionValueTypes, [color, complex]);\n/**\n * Tests a value against the list of ValueTypes\n */\nvar findValueType = function (v) { return valueTypes.find(testValueType(v)); };\n/**\n * Gets the default ValueType for the provided value key\n */\nvar getDefaultValueType = function (key) { return defaultValueTypes[key]; };\n/**\n * Provided a value and a ValueType, returns the value as that value type.\n */\nvar getValueAsType = function (value, type) {\n return type && typeof value === \"number\"\n ? type.transform(value)\n : value;\n};\n\n/**\n * A list of all transformable axes. We'll use this list to generated a version\n * of each axes for each transform.\n */\nvar transformAxes = [\"\", \"X\", \"Y\", \"Z\"];\n/**\n * An ordered array of each transformable value. By default, transform values\n * will be sorted to this order.\n */\nvar order = [\"perspective\", \"translate\", \"scale\", \"rotate\", \"skew\"];\n/**\n * Used to store the keys of all transforms that will distorted a measured bounding box.\n */\nvar boxDistortingKeys = new Set();\n/**\n * Generate a list of every possible transform key.\n */\nvar transformProps = [\"transformPerspective\", \"x\", \"y\", \"z\"];\norder.forEach(function (operationKey) {\n var isDistorting = new Set([\"rotate\", \"skew\"]).has(operationKey);\n transformAxes.forEach(function (axesKey) {\n var key = operationKey + axesKey;\n transformProps.push(key);\n isDistorting && boxDistortingKeys.add(key);\n });\n});\n/**\n * A function to use with Array.sort to sort transform keys by their default order.\n */\nfunction sortTransformProps(a, b) {\n return transformProps.indexOf(a) - transformProps.indexOf(b);\n}\n/**\n * A quick lookup for transform props.\n */\nvar transformPropSet = new Set(transformProps);\nfunction isTransformProp(key) {\n return transformPropSet.has(key);\n}\n/**\n * A quick lookup for transform origin props\n */\nvar transformOriginProps = new Set([\"originX\", \"originY\", \"originZ\"]);\nfunction isTransformOriginProp(key) {\n return transformOriginProps.has(key);\n}\n\nvar translateAlias = {\n x: \"translateX\",\n y: \"translateY\",\n z: \"translateZ\",\n transformPerspective: \"perspective\",\n};\n/**\n * Build a CSS transform style from individual x/y/scale etc properties.\n *\n * This outputs with a default order of transforms/scales/rotations, this can be customised by\n * providing a transformTemplate function.\n */\nfunction buildTransform(transform, transformKeys, transformTemplate, transformIsDefault, enableHardwareAcceleration, allowTransformNone) {\n if (enableHardwareAcceleration === void 0) { enableHardwareAcceleration = true; }\n if (allowTransformNone === void 0) { allowTransformNone = true; }\n // The transform string we're going to build into.\n var transformString = \"\";\n // Transform keys into their default order - this will determine the output order.\n transformKeys.sort(sortTransformProps);\n // Track whether the defined transform has a defined z so we don't add a\n // second to enable hardware acceleration\n var transformHasZ = false;\n // Loop over each transform and build them into transformString\n var numTransformKeys = transformKeys.length;\n for (var i = 0; i < numTransformKeys; i++) {\n var key = transformKeys[i];\n transformString += (translateAlias[key] || key) + \"(\" + transform[key] + \") \";\n if (key === \"z\")\n transformHasZ = true;\n }\n if (!transformHasZ && enableHardwareAcceleration) {\n transformString += \"translateZ(0)\";\n }\n else {\n transformString = transformString.trim();\n }\n // If we have a custom `transform` template, pass our transform values and\n // generated transformString to that before returning\n if (transformTemplate) {\n transformString = transformTemplate(transform, transformIsDefault ? \"\" : transformString);\n }\n else if (allowTransformNone && transformIsDefault) {\n transformString = \"none\";\n }\n return transformString;\n}\n/**\n * Build a transformOrigin style. Uses the same defaults as the browser for\n * undefined origins.\n */\nfunction buildTransformOrigin(_a) {\n var _b = _a.originX, originX = _b === void 0 ? \"50%\" : _b, _c = _a.originY, originY = _c === void 0 ? \"50%\" : _c, _d = _a.originZ, originZ = _d === void 0 ? 0 : _d;\n return originX + \" \" + originY + \" \" + originZ;\n}\n/**\n * Build a transform style that takes a calculated delta between the element's current\n * space on screen and projects it into the desired space.\n */\nfunction buildLayoutProjectionTransform(_a, treeScale) {\n var x = _a.x, y = _a.y;\n /**\n * The translations we use to calculate are always relative to the viewport coordinate space.\n * But when we apply scales, we also scale the coordinate space of an element and its children.\n * For instance if we have a treeScale (the culmination of all parent scales) of 0.5 and we need\n * to move an element 100 pixels, we actually need to move it 200 in within that scaled space.\n */\n var xTranslate = x.translate / treeScale.x;\n var yTranslate = y.translate / treeScale.y;\n return \"translate3d(\" + xTranslate + \"px, \" + yTranslate + \"px, 0) scale(\" + x.scale + \", \" + y.scale + \")\";\n}\nvar identityProjection = buildLayoutProjectionTransform(delta(), {\n x: 1,\n y: 1,\n});\n/**\n * Take the calculated delta origin and apply it as a transform string.\n */\nfunction buildLayoutProjectionTransformOrigin(_a) {\n var x = _a.x, y = _a.y;\n return x.origin * 100 + \"% \" + y.origin * 100 + \"% 0\";\n}\n/**\n * Build a transform string only from the properties that distort bounding box measurements\n * (rotate and skew)\n */\nfunction buildBoxDistortingTransforms(transform, transformKeys) {\n var transformString = \"\";\n transformKeys.sort(sortTransformProps);\n var numTransformKeys = transformKeys.length;\n for (var i = 0; i < numTransformKeys; i++) {\n var key = transformKeys[i];\n if (boxDistortingKeys.has(key)) {\n transformString += key + \"(\" + transform[key] + \") \";\n }\n }\n return transformString;\n}\n\n/**\n * Returns true if the provided key is a CSS variable\n */\nfunction isCSSVariable(key) {\n return key.startsWith(\"--\");\n}\n\nfunction isCSSVariable$1(value) {\n return typeof value === \"string\" && value.startsWith(\"var(--\");\n}\n/**\n * Parse Framer's special CSS variable format into a CSS token and a fallback.\n *\n * ```\n * `var(--foo, #fff)` => [`--foo`, '#fff']\n * ```\n *\n * @param current\n */\nvar cssVariableRegex = /var\\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\\)/;\nfunction parseCSSVariable(current) {\n var match = cssVariableRegex.exec(current);\n if (!match)\n return [,];\n var _a = __read(match, 3), token = _a[1], fallback = _a[2];\n return [token, fallback];\n}\nvar maxDepth = 4;\nfunction getVariableValue(current, element, depth) {\n if (depth === void 0) { depth = 1; }\n invariant(depth <= maxDepth, \"Max CSS variable fallback depth detected in property \\\"\" + current + \"\\\". This may indicate a circular fallback dependency.\");\n var _a = __read(parseCSSVariable(current), 2), token = _a[0], fallback = _a[1];\n // No CSS variable detected\n if (!token)\n return;\n // Attempt to read this CSS variable off the element\n var resolved = window.getComputedStyle(element).getPropertyValue(token);\n if (resolved) {\n return resolved;\n }\n else if (isCSSVariable$1(fallback)) {\n // The fallback might itself be a CSS variable, in which case we attempt to resolve it too.\n return getVariableValue(fallback, element, depth + 1);\n }\n else {\n return fallback;\n }\n}\n/**\n * Resolve CSS variables from\n *\n * @internal\n */\nfunction resolveCSSVariables(visualElement, _a, transitionEnd) {\n var _b;\n var target = __rest(_a, []);\n var element = visualElement.getInstance();\n if (!(element instanceof HTMLElement))\n return { target: target, transitionEnd: transitionEnd };\n // If `transitionEnd` isn't `undefined`, clone it. We could clone `target` and `transitionEnd`\n // only if they change but I think this reads clearer and this isn't a performance-critical path.\n if (transitionEnd) {\n transitionEnd = __assign({}, transitionEnd);\n }\n // Go through existing `MotionValue`s and ensure any existing CSS variables are resolved\n visualElement.forEachValue(function (value) {\n var current = value.get();\n if (!isCSSVariable$1(current))\n return;\n var resolved = getVariableValue(current, element);\n if (resolved)\n value.set(resolved);\n });\n // Cycle through every target property and resolve CSS variables. Currently\n // we only read single-var properties like `var(--foo)`, not `calc(var(--foo) + 20px)`\n for (var key in target) {\n var current = target[key];\n if (!isCSSVariable$1(current))\n continue;\n var resolved = getVariableValue(current, element);\n if (!resolved)\n continue;\n // Clone target if it hasn't already been\n target[key] = resolved;\n // If the user hasn't already set this key on `transitionEnd`, set it to the unresolved\n // CSS variable. This will ensure that after the animation the component will reflect\n // changes in the value of the CSS variable.\n if (transitionEnd)\n (_b = transitionEnd[key]) !== null && _b !== void 0 ? _b : (transitionEnd[key] = current);\n }\n return { target: target, transitionEnd: transitionEnd };\n}\n\nfunction pixelsToPercent(pixels, axis) {\n return (pixels / (axis.max - axis.min)) * 100;\n}\n/**\n * We always correct borderRadius as a percentage rather than pixels to reduce paints.\n * For example, if you are projecting a box that is 100px wide with a 10px borderRadius\n * into a box that is 200px wide with a 20px borderRadius, that is actually a 10%\n * borderRadius in both states. If we animate between the two in pixels that will trigger\n * a paint each time. If we animate between the two in percentage we'll avoid a paint.\n */\nfunction correctBorderRadius(latest, viewportBox) {\n /**\n * If latest is a string, if it's a percentage we can return immediately as it's\n * going to be stretched appropriately. Otherwise, if it's a pixel, convert it to a number.\n */\n if (typeof latest === \"string\") {\n if (px.test(latest)) {\n latest = parseFloat(latest);\n }\n else {\n return latest;\n }\n }\n /**\n * If latest is a number, it's a pixel value. We use the current viewportBox to calculate that\n * pixel value as a percentage of each axis\n */\n var x = pixelsToPercent(latest, viewportBox.x);\n var y = pixelsToPercent(latest, viewportBox.y);\n return x + \"% \" + y + \"%\";\n}\nvar varToken = \"_$css\";\nfunction correctBoxShadow(latest, _viewportBox, delta, treeScale) {\n var original = latest;\n /**\n * We need to first strip and store CSS variables from the string.\n */\n var containsCSSVariables = latest.includes(\"var(\");\n var cssVariables = [];\n if (containsCSSVariables) {\n latest = latest.replace(cssVariableRegex, function (match) {\n cssVariables.push(match);\n return varToken;\n });\n }\n var shadow = complex.parse(latest);\n // TODO: Doesn't support multiple shadows\n if (shadow.length > 5)\n return original;\n var template = complex.createTransformer(latest);\n var offset = typeof shadow[0] !== \"number\" ? 1 : 0;\n // Calculate the overall context scale\n var xScale = delta.x.scale * treeScale.x;\n var yScale = delta.y.scale * treeScale.y;\n shadow[0 + offset] /= xScale;\n shadow[1 + offset] /= yScale;\n /**\n * Ideally we'd correct x and y scales individually, but because blur and\n * spread apply to both we have to take a scale average and apply that instead.\n * We could potentially improve the outcome of this by incorporating the ratio between\n * the two scales.\n */\n var averageScale = mix(xScale, yScale, 0.5);\n // Blur\n if (typeof shadow[2 + offset] === \"number\")\n shadow[2 + offset] /= averageScale;\n // Spread\n if (typeof shadow[3 + offset] === \"number\")\n shadow[3 + offset] /= averageScale;\n var output = template(shadow);\n if (containsCSSVariables) {\n var i_1 = 0;\n output = output.replace(varToken, function () {\n var cssVariable = cssVariables[i_1];\n i_1++;\n return cssVariable;\n });\n }\n return output;\n}\nvar borderCorrectionDefinition = {\n process: correctBorderRadius,\n};\nvar valueScaleCorrection = {\n borderRadius: __assign(__assign({}, borderCorrectionDefinition), { applyTo: [\n \"borderTopLeftRadius\",\n \"borderTopRightRadius\",\n \"borderBottomLeftRadius\",\n \"borderBottomRightRadius\",\n ] }),\n borderTopLeftRadius: borderCorrectionDefinition,\n borderTopRightRadius: borderCorrectionDefinition,\n borderBottomLeftRadius: borderCorrectionDefinition,\n borderBottomRightRadius: borderCorrectionDefinition,\n boxShadow: {\n process: correctBoxShadow,\n },\n};\n/**\n * @internal\n */\nfunction addScaleCorrection(correctors) {\n for (var key in correctors) {\n valueScaleCorrection[key] = correctors[key];\n }\n}\n\n/**\n * Build style and CSS variables\n *\n * This function converts a Motion style prop:\n *\n * { x: 100, width: 100, originX: 0.5 }\n *\n * Into an object with default value types applied and default\n * transform order set:\n *\n * {\n * transform: 'translateX(100px) translateZ(0)`,\n * width: '100px',\n * transformOrigin: '50% 50%'\n * }\n *\n * Styles are saved to `style` and CSS vars to `vars`.\n *\n * This function works with mutative data structures.\n */\nfunction buildHTMLStyles(latest, style, vars, transform, transformOrigin, transformKeys, _a, isLayoutProjectionEnabled, delta, deltaFinal, treeScale, targetBox) {\n var enableHardwareAcceleration = _a.enableHardwareAcceleration, transformTemplate = _a.transformTemplate, allowTransformNone = _a.allowTransformNone;\n // Empty the transformKeys array. As we're throwing out refs to its items\n // this might not be as cheap as suspected. Maybe using the array as a buffer\n // with a manual incrementation would be better.\n transformKeys.length = 0;\n // Track whether we encounter any transform or transformOrigin values.\n var hasTransform = false;\n var hasTransformOrigin = false;\n // Does the calculated transform essentially equal \"none\"?\n var transformIsNone = true;\n /**\n * Loop over all our latest animated values and decide whether to handle them\n * as a style or CSS variable. Transforms and transform origins are kept seperately\n * for further processing\n */\n for (var key in latest) {\n var value = latest[key];\n // Convert the value to its default value type, ie 0 -> \"0px\"\n var valueType = getDefaultValueType(key);\n var valueAsType = getValueAsType(value, valueType);\n if (isTransformProp(key)) {\n // If this is a transform, flag and enable further transform processing\n hasTransform = true;\n transform[key] = valueAsType;\n transformKeys.push(key);\n if (!transformIsNone)\n continue;\n // If all the transform keys we've so far encountered are their default value\n // then check to see if this one isn't\n var defaultValue = valueType.default !== undefined ? valueType.default : 0;\n if (value !== defaultValue)\n transformIsNone = false;\n }\n else if (isTransformOriginProp(key)) {\n // If this is a transform origin, flag and enable further transform-origin processing\n transformOrigin[key] = valueAsType;\n hasTransformOrigin = true;\n }\n else if (key !== \"transform\" || typeof value !== \"function\") {\n // Handle all remaining values. Decide which map to save to depending\n // on whether this is a CSS variable\n var bucket = isCSSVariable(key) ? vars : style;\n // If we need to perform scale correction, and we have a handler for this\n // value type (ie borderRadius), perform it\n if (isLayoutProjectionEnabled && valueScaleCorrection[key]) {\n var corrected = valueScaleCorrection[key].process(value, targetBox, delta, treeScale);\n /**\n * Scale-correctable values can define a number of other values to break\n * down into. For instance borderRadius needs applying to borderBottomLeftRadius etc\n */\n var applyTo = valueScaleCorrection[key].applyTo;\n if (applyTo) {\n var num = applyTo.length;\n for (var i = 0; i < num; i++) {\n bucket[applyTo[i]] = corrected;\n }\n }\n else {\n bucket[key] = corrected;\n }\n }\n else {\n bucket[key] = valueAsType;\n }\n }\n }\n /**\n * Build transform and transformOrigin. If we're performing layout projection these need\n * to be based off the deltaFinal data. Any user-set origins will have been pre-baked\n * into the deltaFinal.\n */\n if (isLayoutProjectionEnabled) {\n style.transform = buildLayoutProjectionTransform(deltaFinal, treeScale);\n if (style.transform === identityProjection)\n style.transform = \"\";\n /**\n * If we have transform styles, build only those that distort bounding boxes (rotate/skew)\n * as translations and scales will already have been used to calculate deltaFinal.\n */\n if (hasTransform) {\n style.transform +=\n \" \" + buildBoxDistortingTransforms(transform, transformKeys);\n style.transform = style.transform.trim();\n }\n if (transformTemplate) {\n style.transform = transformTemplate(transform, style.transform);\n }\n style.transformOrigin = buildLayoutProjectionTransformOrigin(deltaFinal);\n }\n else {\n if (hasTransform) {\n style.transform = buildTransform(transform, transformKeys, transformTemplate, transformIsNone, enableHardwareAcceleration, allowTransformNone);\n }\n if (hasTransformOrigin) {\n style.transformOrigin = buildTransformOrigin(transformOrigin);\n }\n }\n}\n\n/**\n * Reset an axis to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction resetAxis(axis, originAxis) {\n axis.min = originAxis.min;\n axis.max = originAxis.max;\n}\n/**\n * Reset a box to the provided origin box.\n *\n * This is a mutative operation.\n */\nfunction resetBox(box, originBox) {\n resetAxis(box.x, originBox.x);\n resetAxis(box.y, originBox.y);\n}\n/**\n * Scales a point based on a factor and an originPoint\n */\nfunction scalePoint(point, scale, originPoint) {\n var distanceFromOrigin = point - originPoint;\n var scaled = scale * distanceFromOrigin;\n return originPoint + scaled;\n}\n/**\n * Applies a translate/scale delta to a point\n */\nfunction applyPointDelta(point, translate, scale, originPoint, boxScale) {\n if (boxScale !== undefined) {\n point = scalePoint(point, boxScale, originPoint);\n }\n return scalePoint(point, scale, originPoint) + translate;\n}\n/**\n * Applies a translate/scale delta to an axis\n */\nfunction applyAxisDelta(axis, translate, scale, originPoint, boxScale) {\n if (translate === void 0) { translate = 0; }\n if (scale === void 0) { scale = 1; }\n axis.min = applyPointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = applyPointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Applies a translate/scale delta to a box\n */\nfunction applyBoxDelta(box, _a) {\n var x = _a.x, y = _a.y;\n applyAxisDelta(box.x, x.translate, x.scale, x.originPoint);\n applyAxisDelta(box.y, y.translate, y.scale, y.originPoint);\n}\n/**\n * Apply a transform to an axis from the latest resolved motion values.\n * This function basically acts as a bridge between a flat motion value map\n * and applyAxisDelta\n */\nfunction applyAxisTransforms(final, axis, transforms, _a) {\n var _b = __read(_a, 3), key = _b[0], scaleKey = _b[1], originKey = _b[2];\n // Copy the current axis to the final axis before mutation\n final.min = axis.min;\n final.max = axis.max;\n var axisOrigin = transforms[originKey] !== undefined ? transforms[originKey] : 0.5;\n var originPoint = mix(axis.min, axis.max, axisOrigin);\n // Apply the axis delta to the final axis\n applyAxisDelta(final, transforms[key], transforms[scaleKey], originPoint, transforms.scale);\n}\n/**\n * The names of the motion values we want to apply as translation, scale and origin.\n */\nvar xKeys = [\"x\", \"scaleX\", \"originX\"];\nvar yKeys = [\"y\", \"scaleY\", \"originY\"];\n/**\n * Apply a transform to a box from the latest resolved motion values.\n */\nfunction applyBoxTransforms(finalBox, box, transforms) {\n applyAxisTransforms(finalBox.x, box.x, transforms, xKeys);\n applyAxisTransforms(finalBox.y, box.y, transforms, yKeys);\n}\n/**\n * Remove a delta from a point. This is essentially the steps of applyPointDelta in reverse\n */\nfunction removePointDelta(point, translate, scale, originPoint, boxScale) {\n point -= translate;\n point = scalePoint(point, 1 / scale, originPoint);\n if (boxScale !== undefined) {\n point = scalePoint(point, 1 / boxScale, originPoint);\n }\n return point;\n}\n/**\n * Remove a delta from an axis. This is essentially the steps of applyAxisDelta in reverse\n */\nfunction removeAxisDelta(axis, translate, scale, origin, boxScale) {\n if (translate === void 0) { translate = 0; }\n if (scale === void 0) { scale = 1; }\n if (origin === void 0) { origin = 0.5; }\n var originPoint = mix(axis.min, axis.max, origin) - translate;\n axis.min = removePointDelta(axis.min, translate, scale, originPoint, boxScale);\n axis.max = removePointDelta(axis.max, translate, scale, originPoint, boxScale);\n}\n/**\n * Remove a transforms from an axis. This is essentially the steps of applyAxisTransforms in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeAxisTransforms(axis, transforms, _a) {\n var _b = __read(_a, 3), key = _b[0], scaleKey = _b[1], originKey = _b[2];\n removeAxisDelta(axis, transforms[key], transforms[scaleKey], transforms[originKey], transforms.scale);\n}\n/**\n * Remove a transforms from an box. This is essentially the steps of applyAxisBox in reverse\n * and acts as a bridge between motion values and removeAxisDelta\n */\nfunction removeBoxTransforms(box, transforms) {\n removeAxisTransforms(box.x, transforms, xKeys);\n removeAxisTransforms(box.y, transforms, yKeys);\n}\n/**\n * Apply a tree of deltas to a box. We do this to calculate the effect of all the transforms\n * in a tree upon our box before then calculating how to project it into our desired viewport-relative box\n *\n * This is the final nested loop within HTMLVisualElement.updateLayoutDelta\n */\nfunction applyTreeDeltas(box, treePath) {\n var treeLength = treePath.length;\n for (var i = 0; i < treeLength; i++) {\n applyBoxDelta(box, treePath[i].delta);\n }\n}\n\nvar clampProgress = function (v) { return clamp(0, 1, v); };\n/**\n * Returns true if the provided value is within maxDistance of the provided target\n */\nfunction isNear(value, target, maxDistance) {\n if (target === void 0) { target = 0; }\n if (maxDistance === void 0) { maxDistance = 0.01; }\n return distance(value, target) < maxDistance;\n}\n/**\n * Calculate the translate needed to be applied to source to get target\n */\nfunction calcTranslate(source, target, origin) {\n var sourcePoint = mix(source.min, source.max, origin);\n var targetPoint = mix(target.min, target.max, origin);\n return targetPoint - sourcePoint;\n}\n/**\n * Calculate a transform origin relative to the source axis, between 0-1, that results\n * in an asthetically pleasing scale/transform needed to project from source to target.\n */\nfunction calcOrigin(source, target) {\n var origin = 0.5;\n var sourceLength = source.max - source.min;\n var targetLength = target.max - target.min;\n if (targetLength > sourceLength) {\n origin = progress(target.min, target.max - sourceLength, source.min);\n }\n else if (sourceLength > targetLength) {\n origin = progress(source.min, source.max - targetLength, target.min);\n }\n return clampProgress(origin);\n}\n/**\n * Update the AxisDelta with a transform that projects source into target.\n *\n * The transform `origin` is optional. If not provided, it'll be automatically\n * calculated based on the relative positions of the two bounding boxes.\n */\nfunction updateAxisDelta(delta, source, target, origin) {\n var sourceLength = source.max - source.min;\n var targetLength = target.max - target.min;\n delta.origin = origin === undefined ? calcOrigin(source, target) : origin;\n delta.originPoint = mix(source.min, source.max, delta.origin);\n delta.scale = targetLength / sourceLength;\n if (isNear(delta.scale, 1, 0.0001))\n delta.scale = 1;\n delta.translate = calcTranslate(source, target, delta.origin);\n if (isNear(delta.translate))\n delta.translate = 0;\n}\n/**\n * Update the BoxDelta with a transform that projects the source into the target.\n *\n * The transform `origin` is optional. If not provided, it'll be automatically\n * calculated based on the relative positions of the two bounding boxes.\n */\nfunction updateBoxDelta(delta, source, target, origin) {\n updateAxisDelta(delta.x, source.x, target.x, origin);\n updateAxisDelta(delta.y, source.y, target.y, origin);\n}\n/**\n * Update the treeScale by incorporating the parent's latest scale into its treeScale.\n */\nfunction updateTreeScale(treeScale, parentTreeScale, parentDelta) {\n treeScale.x = parentTreeScale.x * parentDelta.x.scale;\n treeScale.y = parentTreeScale.y * parentDelta.y.scale;\n}\n\n// Call a handler once for each axis\nfunction eachAxis(handler) {\n return [handler(\"x\"), handler(\"y\")];\n}\n\n/**\n * Converts seconds to milliseconds\n *\n * @param seconds - Time in seconds.\n * @return milliseconds - Converted time in milliseconds.\n */\nvar secondsToMilliseconds = function (seconds) { return seconds * 1000; };\n\nvar easingDefinitionToFunction = function (definition) {\n if (Array.isArray(definition)) {\n // If cubic bezier definition, create bezier curve\n invariant(definition.length === 4, \"Cubic bezier arrays must contain four numerical values.\");\n var _a = __read(definition, 4), x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];\n return cubicBezier(x1, y1, x2, y2);\n }\n else if (typeof definition === \"string\") {\n // Else lookup from table\n invariant(easingLookup[definition] !== undefined, \"Invalid easing type '\" + definition + \"'\");\n return easingLookup[definition];\n }\n return definition;\n};\nvar isEasingArray = function (ease) {\n return Array.isArray(ease) && typeof ease[0] !== \"number\";\n};\n\n/**\n * Check if a value is animatable. Examples:\n *\n * ✅: 100, \"100px\", \"#fff\"\n * ❌: \"block\", \"url(2.jpg)\"\n * @param value\n *\n * @internal\n */\nvar isAnimatable = function (key, value) {\n // If the list of keys tat might be non-animatable grows, replace with Set\n if (key === \"zIndex\")\n return false;\n // If it's a number or a keyframes array, we can animate it. We might at some point\n // need to do a deep isAnimatable check of keyframes, or let Popmotion handle this,\n // but for now lets leave it like this for performance reasons\n if (typeof value === \"number\" || Array.isArray(value))\n return true;\n if (typeof value === \"string\" && // It's animatable if we have a string\n complex.test(value) && // And it contains numbers and/or colors\n !value.startsWith(\"url(\") // Unless it starts with \"url(\"\n ) {\n return true;\n }\n return false;\n};\n\nvar isKeyframesTarget = function (v) {\n return Array.isArray(v);\n};\n\nvar underDampedSpring = function () { return ({\n type: \"spring\",\n stiffness: 500,\n damping: 25,\n restDelta: 0.5,\n restSpeed: 10,\n}); };\nvar overDampedSpring = function (to) { return ({\n type: \"spring\",\n stiffness: 550,\n damping: to === 0 ? 100 : 30,\n restDelta: 0.01,\n restSpeed: 10,\n}); };\nvar linearTween = function () { return ({\n type: \"keyframes\",\n ease: \"linear\",\n duration: 0.3,\n}); };\nvar keyframes = function (values) { return ({\n type: \"keyframes\",\n duration: 0.8,\n values: values,\n}); };\nvar defaultTransitions = {\n x: underDampedSpring,\n y: underDampedSpring,\n z: underDampedSpring,\n rotate: underDampedSpring,\n rotateX: underDampedSpring,\n rotateY: underDampedSpring,\n rotateZ: underDampedSpring,\n scaleX: overDampedSpring,\n scaleY: overDampedSpring,\n scale: overDampedSpring,\n opacity: linearTween,\n backgroundColor: linearTween,\n color: linearTween,\n default: overDampedSpring,\n};\nvar getDefaultTransition = function (valueKey, to) {\n var transitionFactory;\n if (isKeyframesTarget(to)) {\n transitionFactory = keyframes;\n }\n else {\n transitionFactory =\n defaultTransitions[valueKey] || defaultTransitions.default;\n }\n return __assign({ to: to }, transitionFactory(to));\n};\n\n/**\n * Decide whether a transition is defined on a given Transition.\n * This filters out orchestration options and returns true\n * if any options are left.\n */\nfunction isTransitionDefined(_a) {\n var when = _a.when, delay = _a.delay, delayChildren = _a.delayChildren, staggerChildren = _a.staggerChildren, staggerDirection = _a.staggerDirection, repeat = _a.repeat, repeatType = _a.repeatType, repeatDelay = _a.repeatDelay, from = _a.from, transition = __rest(_a, [\"when\", \"delay\", \"delayChildren\", \"staggerChildren\", \"staggerDirection\", \"repeat\", \"repeatType\", \"repeatDelay\", \"from\"]);\n return !!Object.keys(transition).length;\n}\n/**\n * Convert Framer Motion's Transition type into Popmotion-compatible options.\n */\nfunction convertTransitionToAnimationOptions(_a) {\n var yoyo = _a.yoyo, loop = _a.loop, flip = _a.flip, ease = _a.ease, times = _a.times, transition = __rest(_a, [\"yoyo\", \"loop\", \"flip\", \"ease\", \"times\"]);\n var options = __assign({}, transition);\n if (times) {\n options.offset = times;\n }\n /**\n * Convert any existing durations from seconds to milliseconds\n */\n if (transition.duration)\n options[\"duration\"] = secondsToMilliseconds(transition.duration);\n if (transition.repeatDelay)\n options.repeatDelay = secondsToMilliseconds(transition.repeatDelay);\n /**\n * Map easing names to Popmotion's easing functions\n */\n if (ease) {\n options[\"ease\"] = isEasingArray(ease)\n ? ease.map(easingDefinitionToFunction)\n : easingDefinitionToFunction(ease);\n }\n /**\n * Support legacy transition API\n */\n if (transition.type === \"tween\")\n options.type = \"keyframes\";\n if (yoyo) {\n options.repeatType = \"reverse\";\n }\n else if (loop) {\n options.repeatType = \"loop\";\n }\n else if (flip) {\n options.repeatType = \"mirror\";\n }\n options.repeat = loop || yoyo || flip || transition.repeat;\n /**\n * TODO: Popmotion 9 has the ability to automatically detect whether to use\n * a keyframes or spring animation, but does so by detecting velocity and other spring options.\n * It'd be good to introduce a similar thing here.\n */\n if (transition.type !== \"spring\")\n options.type = \"keyframes\";\n return options;\n}\n/**\n * Get the delay for a value by checking Transition with decreasing specificity.\n */\nfunction getDelayFromTransition(transition, key) {\n var _a, _b, _c, _d, _e;\n return ((_e = (_d = (_b = (_a = transition[key]) === null || _a === void 0 ? void 0 : _a.delay) !== null && _b !== void 0 ? _b : (_c = transition[\"default\"]) === null || _c === void 0 ? void 0 : _c.delay) !== null && _d !== void 0 ? _d : transition.delay) !== null && _e !== void 0 ? _e : 0);\n}\nfunction hydrateKeyframes(options) {\n if (Array.isArray(options.to) && options.to[0] === null) {\n options.to = __spread(options.to);\n options.to[0] = options.from;\n }\n return options;\n}\nfunction getPopmotionAnimationOptions(transition, options, key) {\n hydrateKeyframes(options);\n /**\n * Get a default transition if none is determined to be defined.\n */\n if (!isTransitionDefined(transition)) {\n transition = __assign(__assign({}, transition), getDefaultTransition(key, options.to));\n }\n return __assign(__assign({}, options), convertTransitionToAnimationOptions(transition));\n}\n/**\n *\n */\nfunction getAnimation(key, value, target, transition, onComplete) {\n var valueTransition = transition[key] || transition[\"default\"] || transition;\n var origin = value.get();\n var isTargetAnimatable = isAnimatable(key, target);\n /**\n * If we're trying to animate from \"none\", try and get an animatable version\n * of the target. This could be improved to work both ways.\n */\n if (origin === \"none\" && isTargetAnimatable && typeof target === \"string\") {\n origin = complex.getAnimatableNone(target);\n }\n var isOriginAnimatable = isAnimatable(key, origin);\n warning(isOriginAnimatable === isTargetAnimatable, \"You are trying to animate \" + key + \" from \\\"\" + origin + \"\\\" to \\\"\" + target + \"\\\". \" + origin + \" is not an animatable value - to enable this animation set \" + origin + \" to a value animatable to \" + target + \" via the `style` property.\");\n function start() {\n var options = {\n from: origin,\n to: target,\n velocity: value.getVelocity(),\n onComplete: onComplete,\n onUpdate: function (v) { return value.set(v); },\n };\n return valueTransition.type === \"inertia\" ||\n valueTransition.type === \"decay\"\n ? inertia(__assign(__assign({}, options), valueTransition))\n : animate(getPopmotionAnimationOptions(valueTransition, options, key));\n }\n function set() {\n value.set(target);\n onComplete();\n return { stop: function () { } };\n }\n return !isOriginAnimatable ||\n !isTargetAnimatable ||\n valueTransition.type === false\n ? set\n : start;\n}\n/**\n * Start animation on a MotionValue. This function is an interface between\n * Framer Motion and Popmotion\n *\n * @internal\n */\nfunction startAnimation(key, value, target, transition) {\n if (transition === void 0) { transition = {}; }\n return value.start(function (onComplete) {\n var delayTimer;\n var controls;\n var animation = getAnimation(key, value, target, transition, onComplete);\n var delay = getDelayFromTransition(transition, key);\n var start = function () { return (controls = animation()); };\n if (delay) {\n delayTimer = setTimeout(start, secondsToMilliseconds(delay));\n }\n else {\n start();\n }\n return function () {\n clearTimeout(delayTimer);\n controls === null || controls === void 0 ? void 0 : controls.stop();\n };\n });\n}\n\n/**\n * Measure and return the element bounding box.\n *\n * We convert the box into an AxisBox2D to make it easier to work with each axis\n * individually and programmatically.\n *\n * This function optionally accepts a transformPagePoint function which allows us to compensate\n * for, for instance, measuring the element within a scaled plane like a Framer devivce preview component.\n */\nfunction getBoundingBox(element, transformPagePoint) {\n var box = element.getBoundingClientRect();\n return convertBoundingBoxToAxisBox(transformBoundingBox(box, transformPagePoint));\n}\n\n/**\n * A VisualElement for HTMLElements\n */\nvar HTMLVisualElement = /** @class */ (function (_super) {\n __extends(HTMLVisualElement, _super);\n function HTMLVisualElement() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n *\n */\n _this.defaultConfig = {\n enableHardwareAcceleration: true,\n allowTransformNone: true,\n };\n /**\n * A mutable record of styles we want to apply directly to the rendered Element\n * every frame. We use a mutable data structure to reduce GC during animations.\n */\n _this.style = {};\n /**\n * A record of styles we only want to apply via React. This gets set in useMotionValues\n * and applied in the render function. I'd prefer this to live somewhere else to decouple\n * VisualElement from React but works for now.\n */\n _this.reactStyle = {};\n /**\n * A mutable record of CSS variables we want to apply directly to the rendered Element\n * every frame. We use a mutable data structure to reduce GC during animations.\n */\n _this.vars = {};\n /**\n * A mutable record of transforms we want to apply directly to the rendered Element\n * every frame. We use a mutable data structure to reduce GC during animations.\n */\n _this.transform = {};\n /**\n * A mutable record of transform origins we want to apply directly to the rendered Element\n * every frame. We use a mutable data structure to reduce GC during animations.\n */\n _this.transformOrigin = {};\n /**\n * A mutable record of transform keys we want to apply to the rendered Element. We order\n * this to order transforms in the desired order. We use a mutable data structure to reduce GC during animations.\n */\n _this.transformKeys = [];\n _this.config = _this.defaultConfig;\n /**\n * ========================================\n * Layout\n * ========================================\n */\n _this.isLayoutProjectionEnabled = false;\n /**\n * A set of layout update event handlers. These are only called once all layouts have been read,\n * making it safe to perform DOM write operations.\n */\n _this.layoutUpdateListeners = new SubscriptionManager();\n _this.layoutMeasureListeners = new SubscriptionManager();\n _this.viewportBoxUpdateListeners = new SubscriptionManager();\n /**\n * Keep track of whether the viewport box has been updated since the last render.\n * If it has, we want to fire the onViewportBoxUpdate listener.\n */\n _this.hasViewportBoxUpdated = false;\n /**\n * The visual target we want to project our component into on a given frame\n * before applying transforms defined in `animate` or `style`.\n *\n * This is considered mutable to avoid object creation on each frame.\n */\n _this.targetBoxFinal = axisBox();\n /**\n * The overall scale of the local coordinate system as transformed by all parents\n * of this component. We use this for scale correction on our calculated layouts\n * and scale-affected values like `boxShadow`.\n *\n * This is considered mutable to avoid object creation on each frame.\n */\n _this.treeScale = { x: 1, y: 1 };\n _this.prevTreeScale = { x: 1, y: 1 };\n /**\n * The delta between the boxCorrected and the desired\n * targetBox (before user-set transforms are applied). The calculated output will be\n * handed to the renderer and used as part of the style correction calculations, for\n * instance calculating how to display the desired border-radius correctly.\n *\n * This is considered mutable to avoid object creation on each frame.\n */\n _this.delta = delta();\n /**\n * The delta between the boxCorrected and the desired targetBoxFinal. The calculated\n * output will be handed to the renderer and used to project the boxCorrected into\n * the targetBoxFinal.\n *\n * This is considered mutable to avoid object creation on each frame.\n */\n _this.deltaFinal = delta();\n /**\n * The computed transform string to apply deltaFinal to the element. Currently this is only\n * being used to diff and decide whether to render on the current frame, but a minor optimisation\n * could be to provide this to the buildHTMLStyle function.\n */\n _this.deltaTransform = identityProjection;\n /**\n *\n */\n _this.stopLayoutAxisAnimation = {\n x: function () { },\n y: function () { },\n };\n _this.isTargetBoxLocked = false;\n /**\n *\n */\n _this.axisProgress = {\n x: motionValue(0),\n y: motionValue(0),\n };\n _this.updateLayoutDelta = function () {\n _this.isLayoutProjectionEnabled && _this.box && _this.updateLayoutDeltas();\n /**\n * Ensure all children layouts are also updated.\n *\n * This uses a pre-bound function executor rather than a lamda to avoid creating a new function\n * multiple times per frame (source of mid-animation GC)\n */\n _this.children.forEach(fireUpdateLayoutDelta);\n };\n return _this;\n }\n /**\n * When a value is removed, we want to make sure it's removed from all rendered data structures.\n */\n HTMLVisualElement.prototype.removeValue = function (key) {\n _super.prototype.removeValue.call(this, key);\n delete this.vars[key];\n delete this.style[key];\n };\n /**\n * Empty the mutable data structures by re-creating them. We can do this every React render\n * as the comparative workload to the rest of the render is very low and this is also when\n * we want to reflect values that might have been removed by the render.\n */\n HTMLVisualElement.prototype.clean = function () {\n this.style = {};\n this.vars = {};\n this.transform = {};\n };\n HTMLVisualElement.prototype.updateConfig = function (config) {\n if (config === void 0) { config = {}; }\n this.config = __assign(__assign({}, this.defaultConfig), config);\n };\n /**\n * Read a value directly from the HTMLElement style.\n */\n HTMLVisualElement.prototype.read = function (key) {\n return this.getComputedStyle()[key] || 0;\n };\n HTMLVisualElement.prototype.addValue = function (key, value) {\n _super.prototype.addValue.call(this, key, value);\n // If we have rotate values we want to foce the layoutOrigin used in layout projection\n // to the center of the element.\n if (key.startsWith(\"rotate\"))\n this.layoutOrigin = 0.5;\n };\n /**\n * Read a value directly from the HTMLElement in case it's not defined by a Motion\n * prop. If it's a transform, we just return a pre-defined default value as reading these\n * out of a matrix is either error-prone or can incur a big payload for little benefit.\n */\n HTMLVisualElement.prototype.readNativeValue = function (key) {\n if (isTransformProp(key)) {\n var defaultValueType = getDefaultValueType(key);\n return defaultValueType ? defaultValueType.default || 0 : 0;\n }\n else {\n return this.read(key);\n }\n };\n HTMLVisualElement.prototype.enableLayoutProjection = function () {\n this.isLayoutProjectionEnabled = true;\n };\n HTMLVisualElement.prototype.hide = function () {\n if (this.isVisible === false)\n return;\n this.isVisible = false;\n this.scheduleRender();\n };\n HTMLVisualElement.prototype.show = function () {\n if (this.isVisible === true)\n return;\n this.isVisible = true;\n this.scheduleRender();\n };\n /**\n * Register an event listener to fire when the layout is updated. We might want to expose support\n * for this via a `motion` prop.\n */\n HTMLVisualElement.prototype.onLayoutUpdate = function (callback) {\n return this.layoutUpdateListeners.add(callback);\n };\n HTMLVisualElement.prototype.onLayoutMeasure = function (callback) {\n return this.layoutMeasureListeners.add(callback);\n };\n HTMLVisualElement.prototype.onViewportBoxUpdate = function (callback) {\n return this.viewportBoxUpdateListeners.add(callback);\n };\n /**\n * To be called when all layouts are successfully updated. In turn we can notify layoutUpdate\n * subscribers.\n */\n HTMLVisualElement.prototype.layoutReady = function (config) {\n this.layoutUpdateListeners.notify(this.box, this.prevViewportBox || this.box, config);\n };\n /**\n * Measure and return the Element's bounding box. We convert it to a AxisBox2D\n * structure to make it easier to work on each individual axis generically.\n */\n HTMLVisualElement.prototype.getBoundingBox = function () {\n var transformPagePoint = this.config.transformPagePoint;\n return getBoundingBox(this.element, transformPagePoint);\n };\n HTMLVisualElement.prototype.getBoundingBoxWithoutTransforms = function () {\n var bbox = this.getBoundingBox();\n removeBoxTransforms(bbox, this.latest);\n return bbox;\n };\n /**\n * Return the computed style after a render.\n */\n HTMLVisualElement.prototype.getComputedStyle = function () {\n return window.getComputedStyle(this.element);\n };\n /**\n * Record the bounding box as it exists before a re-render.\n */\n HTMLVisualElement.prototype.snapshotBoundingBox = function () {\n this.prevViewportBox = this.getBoundingBoxWithoutTransforms();\n /**\n * Update targetBox to match the prevViewportBox. This is just to ensure\n * that targetBox is affected by scroll in the same way as the measured box\n */\n this.rebaseTargetBox(false, this.prevViewportBox);\n };\n HTMLVisualElement.prototype.rebaseTargetBox = function (force, box) {\n var _this = this;\n if (force === void 0) { force = false; }\n if (box === void 0) { box = this.box; }\n var _a = this.axisProgress, x = _a.x, y = _a.y;\n var shouldRebase = this.box &&\n !this.isTargetBoxLocked &&\n !x.isAnimating() &&\n !y.isAnimating();\n if (force || shouldRebase) {\n eachAxis(function (axis) {\n var _a = box[axis], min = _a.min, max = _a.max;\n _this.setAxisTarget(axis, min, max);\n });\n }\n };\n HTMLVisualElement.prototype.measureLayout = function () {\n var _this = this;\n this.box = this.getBoundingBox();\n this.boxCorrected = copyAxisBox(this.box);\n if (!this.targetBox)\n this.targetBox = copyAxisBox(this.box);\n this.layoutMeasureListeners.notify(this.box, this.prevViewportBox || this.box);\n sync.update(function () { return _this.rebaseTargetBox(); });\n };\n HTMLVisualElement.prototype.lockTargetBox = function () {\n this.isTargetBoxLocked = true;\n };\n HTMLVisualElement.prototype.unlockTargetBox = function () {\n this.stopLayoutAnimation();\n this.isTargetBoxLocked = false;\n };\n /**\n * Reset the transform on the current Element. This is called as part\n * of a batched process across the entire layout tree. To remove this write\n * cycle it'd be interesting to see if it's possible to \"undo\" all the current\n * layout transforms up the tree in the same way this.getBoundingBoxWithoutTransforms\n * works\n */\n HTMLVisualElement.prototype.resetTransform = function () {\n var transformTemplate = this.config.transformTemplate;\n this.element.style.transform = transformTemplate\n ? transformTemplate({}, \"\")\n : \"none\";\n // Ensure that whatever happens next, we restore our transform\n this.scheduleRender();\n };\n /**\n * Set new min/max boundaries to project an axis into\n */\n HTMLVisualElement.prototype.setAxisTarget = function (axis, min, max) {\n var targetAxis = this.targetBox[axis];\n targetAxis.min = min;\n targetAxis.max = max;\n // Flag that we want to fire the onViewportBoxUpdate event handler\n this.hasViewportBoxUpdated = true;\n this.rootParent.scheduleUpdateLayoutDelta();\n };\n /**\n *\n */\n HTMLVisualElement.prototype.startLayoutAxisAnimation = function (axis, transition) {\n var _this = this;\n var progress = this.axisProgress[axis];\n var _a = this.targetBox[axis], min = _a.min, max = _a.max;\n var length = max - min;\n progress.clearListeners();\n progress.set(min);\n progress.set(min); // Set twice to hard-reset velocity\n progress.onChange(function (v) { return _this.setAxisTarget(axis, v, v + length); });\n return startAnimation(axis, progress, 0, transition);\n };\n HTMLVisualElement.prototype.stopLayoutAnimation = function () {\n var _this = this;\n eachAxis(function (axis) { return _this.axisProgress[axis].stop(); });\n };\n /**\n * Update the layout deltas to reflect the relative positions of the layout\n * and the desired target box\n */\n HTMLVisualElement.prototype.updateLayoutDeltas = function () {\n /**\n * Reset the corrected box with the latest values from box, as we're then going\n * to perform mutative operations on it.\n */\n resetBox(this.boxCorrected, this.box);\n /**\n * If this component has a parent, update this treeScale by incorporating the parent's\n * delta into its treeScale.\n */\n if (this.parent) {\n this.prevTreeScale.x = this.treeScale.x;\n this.prevTreeScale.y = this.treeScale.y;\n updateTreeScale(this.treeScale, this.parent.treeScale, this.parent.delta);\n }\n /**\n * Apply all the parent deltas to this box to produce the corrected box. This\n * is the layout box, as it will appear on screen as a result of the transforms of its parents.\n */\n applyTreeDeltas(this.boxCorrected, this.treePath);\n /**\n * Update the delta between the corrected box and the target box before user-set transforms were applied.\n * This will allow us to calculate the corrected borderRadius and boxShadow to compensate\n * for our layout reprojection, but still allow them to be scaled correctly by the user.\n * It might be that to simplify this we may want to accept that user-set scale is also corrected\n * and we wouldn't have to keep and calc both deltas, OR we could support a user setting\n * to allow people to choose whether these styles are corrected based on just the\n * layout reprojection or the final bounding box.\n */\n updateBoxDelta(this.delta, this.boxCorrected, this.targetBox, this.layoutOrigin);\n /**\n * If we have a listener for the viewport box, fire it.\n */\n this.hasViewportBoxUpdated &&\n this.viewportBoxUpdateListeners.notify(this.targetBox, this.delta);\n this.hasViewportBoxUpdated = false;\n /**\n * Ensure this element renders on the next frame if the projection transform has changed.\n */\n var deltaTransform = buildLayoutProjectionTransform(this.delta, this.treeScale);\n if (deltaTransform !== this.deltaTransform ||\n // Also compare calculated treeScale, for values that rely on only this for scale correction.\n this.prevTreeScale.x !== this.treeScale.x ||\n this.prevTreeScale.y !== this.treeScale.y) {\n this.scheduleRender();\n }\n this.deltaTransform = deltaTransform;\n };\n HTMLVisualElement.prototype.updateTransformDeltas = function () {\n if (!this.isLayoutProjectionEnabled || !this.box)\n return;\n /**\n * Apply the latest user-set transforms to the targetBox to produce the targetBoxFinal.\n * This is the final box that we will then project into by calculating a transform delta and\n * applying it to the corrected box.\n */\n applyBoxTransforms(this.targetBoxFinal, this.targetBox, this.latest);\n /**\n * Update the delta between the corrected box and the final target box, after\n * user-set transforms are applied to it. This will be used by the renderer to\n * create a transform style that will reproject the element from its actual layout\n * into the desired bounding box.\n */\n updateBoxDelta(this.deltaFinal, this.boxCorrected, this.targetBoxFinal, this.layoutOrigin);\n };\n /**\n * ========================================\n * Build & render\n * ========================================\n */\n /**\n * Build a style prop using the latest resolved MotionValues\n */\n HTMLVisualElement.prototype.build = function () {\n this.updateTransformDeltas();\n if (this.isVisible !== undefined) {\n this.style.visibility = this.isVisible ? \"visible\" : \"hidden\";\n }\n buildHTMLStyles(this.latest, this.style, this.vars, this.transform, this.transformOrigin, this.transformKeys, this.config, this.isLayoutProjectionEnabled && !!this.box, this.delta, this.deltaFinal, this.treeScale, this.targetBoxFinal);\n };\n /**\n * Render the Element by rebuilding and applying the latest styles and vars.\n */\n HTMLVisualElement.prototype.render = function () {\n // Rebuild the latest animated values into style and vars caches.\n this.build();\n // Directly assign style into the Element's style prop. In tests Object.assign is the\n // fastest way to assign styles.\n Object.assign(this.element.style, this.style);\n // Loop over any CSS variables and assign those.\n for (var key in this.vars) {\n this.element.style.setProperty(key, this.vars[key]);\n }\n };\n return HTMLVisualElement;\n}(VisualElement));\n/**\n * Pre-bound version of updateLayoutDelta so we're not creating a new function multiple\n * times per frame.\n */\nvar fireUpdateLayoutDelta = function (child) {\n return child.updateLayoutDelta();\n};\n\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */\nfunction useConstant(init) {\n var ref = useRef(null);\n if (ref.current === null) {\n ref.current = init();\n }\n return ref.current;\n}\n\nfunction calcOrigin$1(origin, offset, size) {\n return typeof origin === \"string\"\n ? origin\n : px.transform(offset + size * origin);\n}\n/**\n * The SVG transform origin defaults are different to CSS and is less intuitive,\n * so we use the measured dimensions of the SVG to reconcile these.\n */\nfunction calcSVGTransformOrigin(dimensions, originX, originY) {\n var pxOriginX = calcOrigin$1(originX, dimensions.x, dimensions.width);\n var pxOriginY = calcOrigin$1(originY, dimensions.y, dimensions.height);\n return pxOriginX + \" \" + pxOriginY;\n}\n\n// Convert a progress 0-1 to a pixels value based on the provided length\nvar progressToPixels = function (progress, length) {\n return px.transform(progress * length);\n};\nvar dashKeys = {\n offset: \"stroke-dashoffset\",\n array: \"stroke-dasharray\",\n};\nvar camelKeys = {\n offset: \"strokeDashoffset\",\n array: \"strokeDasharray\",\n};\n/**\n * Build SVG path properties. Uses the path's measured length to convert\n * our custom pathLength, pathSpacing and pathOffset into stroke-dashoffset\n * and stroke-dasharray attributes.\n *\n * This function is mutative to reduce per-frame GC.\n */\nfunction buildSVGPath(attrs, totalLength, length, spacing, offset, useDashCase) {\n if (spacing === void 0) { spacing = 1; }\n if (offset === void 0) { offset = 0; }\n if (useDashCase === void 0) { useDashCase = true; }\n // We use dash case when setting attributes directly to the DOM node and camel case\n // when defining props on a React component.\n var keys = useDashCase ? dashKeys : camelKeys;\n // Build the dash offset\n attrs[keys.offset] = progressToPixels(-offset, totalLength);\n // Build the dash array\n var pathLength = progressToPixels(length, totalLength);\n var pathSpacing = progressToPixels(spacing, totalLength);\n attrs[keys.array] = pathLength + \" \" + pathSpacing;\n}\n\nvar unmeasured = { x: 0, y: 0, width: 0, height: 0 };\n/**\n * Build SVG visual attrbutes, like cx and style.transform\n */\nfunction buildSVGAttrs(_a, style, vars, attrs, transform, transformOrigin, transformKeys, config, dimensions, totalPathLength, isLayoutProjectionEnabled, delta, deltaFinal, treeScale, targetBox) {\n var attrX = _a.attrX, attrY = _a.attrY, originX = _a.originX, originY = _a.originY, pathLength = _a.pathLength, _b = _a.pathSpacing, pathSpacing = _b === void 0 ? 1 : _b, _c = _a.pathOffset, pathOffset = _c === void 0 ? 0 : _c, \n // This is object creation, which we try to avoid per-frame.\n latest = __rest(_a, [\"attrX\", \"attrY\", \"originX\", \"originY\", \"pathLength\", \"pathSpacing\", \"pathOffset\"]);\n /**\n * With SVG we treat all animated values as attributes rather than CSS, so we build into attrs\n */\n buildHTMLStyles(latest, attrs, vars, transform, transformOrigin, transformKeys, config, isLayoutProjectionEnabled, delta, deltaFinal, treeScale, targetBox);\n /**\n * However, we apply transforms as CSS transforms. So if we detect a transform we take it from attrs\n * and copy it into style.\n */\n if (attrs.transform) {\n style.transform = attrs.transform;\n delete attrs.transform;\n }\n // Parse transformOrigin\n if (originX !== undefined || originY !== undefined || style.transform) {\n style.transformOrigin = calcSVGTransformOrigin(dimensions || unmeasured, originX !== undefined ? originX : 0.5, originY !== undefined ? originY : 0.5);\n }\n // Treat x/y not as shortcuts but as actual attributes\n if (attrX !== undefined)\n attrs.x = attrX;\n if (attrY !== undefined)\n attrs.y = attrY;\n // Build SVG path if one has been measured\n if (totalPathLength !== undefined && pathLength !== undefined) {\n buildSVGPath(attrs, totalPathLength, pathLength, pathSpacing, pathOffset, false);\n }\n return attrs;\n}\n\n/**\n * A set of attribute names that are always read/written as camel case.\n */\nvar camelCaseAttributes = new Set([\n \"baseFrequency\",\n \"diffuseConstant\",\n \"kernelMatrix\",\n \"kernelUnitLength\",\n \"keySplines\",\n \"keyTimes\",\n \"limitingConeAngle\",\n \"markerHeight\",\n \"markerWidth\",\n \"numOctaves\",\n \"targetX\",\n \"targetY\",\n \"surfaceScale\",\n \"specularConstant\",\n \"specularExponent\",\n \"stdDeviation\",\n \"tableValues\",\n \"viewBox\",\n]);\n\nvar CAMEL_CASE_PATTERN = /([a-z])([A-Z])/g;\nvar REPLACE_TEMPLATE = \"$1-$2\";\n/**\n * Convert camelCase to dash-case properties.\n */\nvar camelToDash = function (str) {\n return str.replace(CAMEL_CASE_PATTERN, REPLACE_TEMPLATE).toLowerCase();\n};\n\n/**\n * A VisualElement for SVGElements. Inherits from and extends HTMLVisualElement as the two\n * share data structures.\n */\nvar SVGVisualElement = /** @class */ (function (_super) {\n __extends(SVGVisualElement, _super);\n function SVGVisualElement() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * A mutable record of attributes we want to apply directly to the rendered Element\n * every frame. We use a mutable data structure to reduce GC during animations.\n */\n _this.attrs = {};\n /**\n * We disable hardware acceleration for SVG transforms as they're not currently able to be accelerated.\n */\n _this.defaultConfig = {\n enableHardwareAcceleration: false,\n };\n /**\n * Without duplicating this call from HTMLVisualElement we end up with HTMLVisualElement.defaultConfig\n * being assigned to config\n */\n _this.config = _this.defaultConfig;\n return _this;\n }\n /**\n * Measure the SVG element on mount. This can affect page rendering so there might be a\n * better time to perform this - for instance dynamically only if there's a transform-origin dependent\n * transform being set (like rotate)\n */\n SVGVisualElement.prototype.mount = function (element) {\n _super.prototype.mount.call(this, element);\n this.measure();\n };\n /**\n * Update the SVG dimensions and path length\n */\n SVGVisualElement.prototype.measure = function () {\n try {\n this.dimensions =\n typeof this.element.getBBox ===\n \"function\"\n ? this.element.getBBox()\n : this.element.getBoundingClientRect();\n }\n catch (e) {\n // Most likely trying to measure an unrendered element under Firefox\n this.dimensions = { x: 0, y: 0, width: 0, height: 0 };\n }\n if (isPath(this.element)) {\n this.totalPathLength = this.element.getTotalLength();\n }\n };\n /**\n * Empty the mutable data structures in case attrs have been removed between renders.\n */\n SVGVisualElement.prototype.clean = function () {\n _super.prototype.clean.call(this);\n this.attrs = {};\n };\n /**\n * Read an attribute directly from the SVGElement\n */\n SVGVisualElement.prototype.read = function (key) {\n key = !camelCaseAttributes.has(key) ? camelToDash(key) : key;\n return this.element.getAttribute(key);\n };\n SVGVisualElement.prototype.build = function () {\n this.updateTransformDeltas();\n buildSVGAttrs(this.latest, this.style, this.vars, this.attrs, this.transform, this.transformOrigin, this.transformKeys, this.config, this.dimensions, this.totalPathLength, this.isLayoutProjectionEnabled && !!this.box, this.delta, this.deltaFinal, this.treeScale, this.targetBoxFinal);\n };\n SVGVisualElement.prototype.render = function () {\n // Update HTML styles and CSS variables\n _super.prototype.render.call(this);\n // Loop through attributes and apply them to the SVGElement\n for (var key in this.attrs) {\n this.element.setAttribute(!camelCaseAttributes.has(key) ? camelToDash(key) : key, this.attrs[key]);\n }\n };\n return SVGVisualElement;\n}(HTMLVisualElement));\nfunction isPath(element) {\n return element.tagName === \"path\";\n}\n\n/**\n * @internal\n */\n/**\n * @internal\n */\nvar svgElements = [\n \"animate\",\n \"circle\",\n \"clipPath\",\n \"defs\",\n \"desc\",\n \"ellipse\",\n \"feBlend\",\n \"feColorMatrix\",\n \"feComponentTransfer\",\n \"feComposite\",\n \"feConvolveMatrix\",\n \"feDiffuseLighting\",\n \"feDisplacementMap\",\n \"feDistantLight\",\n \"feDropShadow\",\n \"feFlood\",\n \"feFuncA\",\n \"feFuncB\",\n \"feFuncG\",\n \"feFuncR\",\n \"feGaussianBlur\",\n \"feImage\",\n \"feMerge\",\n \"feMergeNode\",\n \"feMorphology\",\n \"feOffset\",\n \"fePointLight\",\n \"feSpecularLighting\",\n \"feSpotLight\",\n \"feTile\",\n \"feTurbulence\",\n \"filter\",\n \"foreignObject\",\n \"g\",\n \"image\",\n \"line\",\n \"linearGradient\",\n \"marker\",\n \"mask\",\n \"metadata\",\n \"path\",\n \"pattern\",\n \"polygon\",\n \"polyline\",\n \"radialGradient\",\n \"rect\",\n \"stop\",\n \"svg\",\n \"switch\",\n \"symbol\",\n \"text\",\n \"textPath\",\n \"tspan\",\n \"use\",\n \"view\",\n];\n\nvar svgTagNames = new Set(svgElements);\n/**\n * Determine whether this is a HTML or SVG component based on if the provided\n * Component is a string and a recognised SVG tag. A potentially better way to\n * do this would be to offer a `motion.customSVG` function and determine this\n * when we generate the `motion.circle` etc components.\n */\nfunction isSVGComponent(Component) {\n return typeof Component === \"string\" && svgTagNames.has(Component);\n}\n\n/**\n * @public\n */\nvar PresenceContext = createContext(null);\n\n/**\n * When a component is the child of `AnimatePresence`, it can use `usePresence`\n * to access information about whether it's still present in the React tree.\n *\n * ```jsx\n * import { usePresence } from \"framer-motion\"\n *\n * export const Component = () => {\n * const [isPresent, safeToRemove] = usePresence()\n *\n * useEffect(() => {\n * !isPresent && setTimeout(safeToRemove, 1000)\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * If `isPresent` is `false`, it means that a component has been removed the tree, but\n * `AnimatePresence` won't really remove it until `safeToRemove` has been called.\n *\n * @public\n */\nfunction usePresence() {\n var context = useContext(PresenceContext);\n if (context === null)\n return [true, null];\n var isPresent = context.isPresent, onExitComplete = context.onExitComplete, register = context.register;\n // It's safe to call the following hooks conditionally (after an early return) because the context will always\n // either be null or non-null for the lifespan of the component.\n // Replace with useOpaqueId when released in React\n var id = useUniqueId();\n useEffect(function () { return register(id); }, []);\n var safeToRemove = function () { return onExitComplete === null || onExitComplete === void 0 ? void 0 : onExitComplete(id); };\n return !isPresent && onExitComplete ? [false, safeToRemove] : [true];\n}\n/**\n * Similar to `usePresence`, except `useIsPresent` simply returns whether or not the component is present.\n * There is no `safeToRemove` function.\n *\n * ```jsx\n * import { useIsPresent } from \"framer-motion\"\n *\n * export const Component = () => {\n * const isPresent = useIsPresent()\n *\n * useEffect(() => {\n * !isPresent && console.log(\"I've been removed!\")\n * }, [isPresent])\n *\n * return
\n * }\n * ```\n *\n * @public\n */\nfunction useIsPresent() {\n var context = useContext(PresenceContext);\n return context === null ? true : context.isPresent;\n}\nvar counter = 0;\nvar incrementId = function () { return counter++; };\nvar useUniqueId = function () { return useConstant(incrementId); };\n\n/**\n * DOM-flavoured variation of the useVisualElement hook. Used to create either a HTMLVisualElement\n * or SVGVisualElement for the component.\n */\nvar useDomVisualElement = function (Component, props, parent, isStatic, ref) {\n var visualElement = useConstant(function () {\n var DOMVisualElement = isSVGComponent(Component)\n ? SVGVisualElement\n : HTMLVisualElement;\n return new DOMVisualElement(parent, ref);\n });\n visualElement.updateConfig(__assign({ enableHardwareAcceleration: !isStatic }, props));\n visualElement.layoutId = props.layoutId;\n var isPresent = useIsPresent();\n visualElement.isPresent =\n props.isPresent !== undefined ? props.isPresent : isPresent;\n useEffect(function () {\n if (props.onViewportBoxUpdate) {\n return visualElement.onViewportBoxUpdate(props.onViewportBoxUpdate);\n }\n }, [props.onViewportBoxUpdate]);\n return visualElement;\n};\n\n/**\n * A list of all valid MotionProps.\n *\n * @internalremarks\n * This doesn't throw if a `MotionProp` name is missing - it should.\n */\nvar validMotionProps = new Set([\n \"initial\",\n \"animate\",\n \"exit\",\n \"style\",\n \"variants\",\n \"transition\",\n \"transformTemplate\",\n \"transformValues\",\n \"custom\",\n \"inherit\",\n \"static\",\n \"layout\",\n \"layoutId\",\n \"onLayoutAnimationComplete\",\n \"onViewportBoxUpdate\",\n \"onAnimationStart\",\n \"onAnimationComplete\",\n \"onUpdate\",\n \"onDragStart\",\n \"onDrag\",\n \"onDragEnd\",\n \"onMeasureDragConstraints\",\n \"onDirectionLock\",\n \"onDragTransitionEnd\",\n \"drag\",\n \"dragControls\",\n \"dragListener\",\n \"dragConstraints\",\n \"dragDirectionLock\",\n \"_dragX\",\n \"_dragY\",\n \"dragElastic\",\n \"dragMomentum\",\n \"dragPropagation\",\n \"dragTransition\",\n \"onPan\",\n \"onPanStart\",\n \"onPanEnd\",\n \"onPanSessionStart\",\n \"onTap\",\n \"onTapStart\",\n \"onTapCancel\",\n \"whileHover\",\n \"whileTap\",\n \"onHoverEnd\",\n \"onHoverStart\",\n]);\n/**\n * Check whether a prop name is a valid `MotionProp` key.\n *\n * @param key - Name of the property to check\n * @returns `true` is key is a valid `MotionProp`.\n *\n * @public\n */\nfunction isValidMotionProp(key) {\n return validMotionProps.has(key);\n}\n\nvar isPropValid = function (key) { return !isValidMotionProp(key); };\n/**\n * Emotion and Styled Components both allow users to pass through arbitrary props to their components\n * to dynamically generate CSS. They both use the `@emotion/is-prop-valid` package to determine which\n * of these should be passed to the underlying DOM node.\n *\n * However, when styling a Motion component `styled(motion.div)`, both packages pass through *all* props\n * as it's seen as an arbitrary component rather than a DOM node. Motion only allows arbitrary props\n * passed through the `custom` prop so it doesn't *need* the payload or computational overhead of\n * `@emotion/is-prop-valid`, however to fix this problem we need to use it.\n *\n * By making it an optionalDependency we can offer this functionality only in the situations where it's\n * actually required.\n */\ntry {\n var emotionIsPropValid_1 = require(\"@emotion/is-prop-valid\").default;\n isPropValid = function (key) {\n // Handle events explicitly as Emotion validates them all as true\n if (key.startsWith(\"on\")) {\n return !isValidMotionProp(key);\n }\n else {\n return emotionIsPropValid_1(key);\n }\n };\n}\ncatch (_a) {\n // We don't need to actually do anything here - the fallback is the existing `isPropValid`.\n}\nfunction filterProps(props) {\n var domProps = {};\n for (var key in props) {\n if (isPropValid(key))\n domProps[key] = props[key];\n }\n return domProps;\n}\n\nfunction buildHTMLProps(visualElement, _a) {\n var drag = _a.drag;\n // The `any` isn't ideal but it is the type of createElement props argument\n var htmlProps = {\n style: __assign(__assign(__assign({}, visualElement.reactStyle), visualElement.style), visualElement.vars),\n };\n if (!!drag) {\n // Disable text selection\n htmlProps.style.userSelect = \"none\";\n // Disable the ghost element when a user drags\n htmlProps.draggable = false;\n }\n return htmlProps;\n}\n\n/**\n * Build React props for SVG elements\n */\nfunction buildSVGProps(visualElement) {\n return __assign(__assign({}, visualElement.attrs), { style: __assign({}, visualElement.reactStyle) });\n}\n\nfunction render(Component, props, visualElement) {\n // Only filter props from components we control, ie `motion.div`. If this\n // is a custom component pass along everything provided to it.\n var forwardedProps = typeof Component === \"string\" ? filterProps(props) : props;\n /**\n * Every render, empty and rebuild the animated values to be applied to our Element.\n * During animation these data structures are used in a mutable fashion to reduce\n * garbage collection, but between renders we can flush them to remove values\n * that might have been taken out of the provided props.\n */\n visualElement.clean();\n visualElement.build();\n // Generate props to visually render this component\n var visualProps = isSVGComponent(Component)\n ? buildSVGProps(visualElement)\n : buildHTMLProps(visualElement, props);\n return createElement(Component, __assign(__assign(__assign({}, forwardedProps), { ref: visualElement.ref }), visualProps));\n}\n\nvar positionalKeys = new Set([\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"x\",\n \"y\",\n]);\nvar isPositionalKey = function (key) { return positionalKeys.has(key); };\nvar hasPositionalKey = function (target) {\n return Object.keys(target).some(isPositionalKey);\n};\nvar setAndResetVelocity = function (value, to) {\n // Looks odd but setting it twice doesn't render, it'll just\n // set both prev and current to the latest value\n value.set(to, false);\n value.set(to);\n};\nvar isNumOrPxType = function (v) {\n return v === number || v === px;\n};\nvar BoundingBoxDimension;\n(function (BoundingBoxDimension) {\n BoundingBoxDimension[\"width\"] = \"width\";\n BoundingBoxDimension[\"height\"] = \"height\";\n BoundingBoxDimension[\"left\"] = \"left\";\n BoundingBoxDimension[\"right\"] = \"right\";\n BoundingBoxDimension[\"top\"] = \"top\";\n BoundingBoxDimension[\"bottom\"] = \"bottom\";\n})(BoundingBoxDimension || (BoundingBoxDimension = {}));\nvar getPosFromMatrix = function (matrix, pos) {\n return parseFloat(matrix.split(\", \")[pos]);\n};\nvar getTranslateFromMatrix = function (pos2, pos3) { return function (_bbox, _a) {\n var transform = _a.transform;\n if (transform === \"none\" || !transform)\n return 0;\n var matrix3d = transform.match(/^matrix3d\\((.+)\\)$/);\n if (matrix3d) {\n return getPosFromMatrix(matrix3d[1], pos3);\n }\n else {\n var matrix = transform.match(/^matrix\\((.+)\\)$/);\n if (matrix) {\n return getPosFromMatrix(matrix[1], pos2);\n }\n else {\n return 0;\n }\n }\n}; };\nvar transformKeys = new Set([\"x\", \"y\", \"z\"]);\nvar nonTranslationalTransformKeys = transformProps.filter(function (key) { return !transformKeys.has(key); });\nfunction removeNonTranslationalTransform(visualElement) {\n var removedTransforms = [];\n nonTranslationalTransformKeys.forEach(function (key) {\n var value = visualElement.getValue(key);\n if (value !== undefined) {\n removedTransforms.push([key, value.get()]);\n value.set(key.startsWith(\"scale\") ? 1 : 0);\n }\n });\n // Apply changes to element before measurement\n if (removedTransforms.length)\n visualElement.render();\n return removedTransforms;\n}\nvar positionalValues = {\n // Dimensions\n width: function (_a) {\n var x = _a.x;\n return x.max - x.min;\n },\n height: function (_a) {\n var y = _a.y;\n return y.max - y.min;\n },\n top: function (_bbox, _a) {\n var top = _a.top;\n return parseFloat(top);\n },\n left: function (_bbox, _a) {\n var left = _a.left;\n return parseFloat(left);\n },\n bottom: function (_a, _b) {\n var y = _a.y;\n var top = _b.top;\n return parseFloat(top) + (y.max - y.min);\n },\n right: function (_a, _b) {\n var x = _a.x;\n var left = _b.left;\n return parseFloat(left) + (x.max - x.min);\n },\n // Transform\n x: getTranslateFromMatrix(4, 13),\n y: getTranslateFromMatrix(5, 14),\n};\nvar convertChangedValueTypes = function (target, visualElement, changedKeys) {\n var originBbox = visualElement.getBoundingBox();\n var elementComputedStyle = visualElement.getComputedStyle();\n var display = elementComputedStyle.display, top = elementComputedStyle.top, left = elementComputedStyle.left, bottom = elementComputedStyle.bottom, right = elementComputedStyle.right, transform = elementComputedStyle.transform;\n var originComputedStyle = { top: top, left: left, bottom: bottom, right: right, transform: transform };\n // If the element is currently set to display: \"none\", make it visible before\n // measuring the target bounding box\n if (display === \"none\") {\n visualElement.setStaticValues(\"display\", target.display || \"block\");\n }\n // Apply the latest values (as set in checkAndConvertChangedValueTypes)\n visualElement.render();\n var targetBbox = visualElement.getBoundingBox();\n changedKeys.forEach(function (key) {\n // Restore styles to their **calculated computed style**, not their actual\n // originally set style. This allows us to animate between equivalent pixel units.\n var value = visualElement.getValue(key);\n setAndResetVelocity(value, positionalValues[key](originBbox, originComputedStyle));\n target[key] = positionalValues[key](targetBbox, elementComputedStyle);\n });\n return target;\n};\nvar checkAndConvertChangedValueTypes = function (visualElement, target, origin, transitionEnd) {\n if (origin === void 0) { origin = {}; }\n if (transitionEnd === void 0) { transitionEnd = {}; }\n target = __assign({}, target);\n transitionEnd = __assign({}, transitionEnd);\n var targetPositionalKeys = Object.keys(target).filter(isPositionalKey);\n // We want to remove any transform values that could affect the element's bounding box before\n // it's measured. We'll reapply these later.\n var removedTransformValues = [];\n var hasAttemptedToRemoveTransformValues = false;\n var changedValueTypeKeys = [];\n targetPositionalKeys.forEach(function (key) {\n var value = visualElement.getValue(key);\n if (!visualElement.hasValue(key))\n return;\n var from = origin[key];\n var to = target[key];\n var fromType = findDimensionValueType(from);\n var toType;\n // TODO: The current implementation of this basically throws an error\n // if you try and do value conversion via keyframes. There's probably\n // a way of doing this but the performance implications would need greater scrutiny,\n // as it'd be doing multiple resize-remeasure operations.\n if (isKeyframesTarget(to)) {\n var numKeyframes = to.length;\n for (var i = to[0] === null ? 1 : 0; i < numKeyframes; i++) {\n if (!toType) {\n toType = findDimensionValueType(to[i]);\n invariant(toType === fromType ||\n (isNumOrPxType(fromType) && isNumOrPxType(toType)), \"Keyframes must be of the same dimension as the current value\");\n }\n else {\n invariant(findDimensionValueType(to[i]) === toType, \"All keyframes must be of the same type\");\n }\n }\n }\n else {\n toType = findDimensionValueType(to);\n }\n if (fromType !== toType) {\n // If they're both just number or px, convert them both to numbers rather than\n // relying on resize/remeasure to convert (which is wasteful in this situation)\n if (isNumOrPxType(fromType) && isNumOrPxType(toType)) {\n var current = value.get();\n if (typeof current === \"string\") {\n value.set(parseFloat(current));\n }\n if (typeof to === \"string\") {\n target[key] = parseFloat(to);\n }\n else if (Array.isArray(to) && toType === px) {\n target[key] = to.map(parseFloat);\n }\n }\n else if ((fromType === null || fromType === void 0 ? void 0 : fromType.transform) && (toType === null || toType === void 0 ? void 0 : toType.transform) &&\n (from === 0 || to === 0)) {\n // If one or the other value is 0, it's safe to coerce it to the\n // type of the other without measurement\n if (from === 0) {\n value.set(toType.transform(from));\n }\n else {\n target[key] = fromType.transform(to);\n }\n }\n else {\n // If we're going to do value conversion via DOM measurements, we first\n // need to remove non-positional transform values that could affect the bbox measurements.\n if (!hasAttemptedToRemoveTransformValues) {\n removedTransformValues = removeNonTranslationalTransform(visualElement);\n hasAttemptedToRemoveTransformValues = true;\n }\n changedValueTypeKeys.push(key);\n transitionEnd[key] =\n transitionEnd[key] !== undefined\n ? transitionEnd[key]\n : target[key];\n setAndResetVelocity(value, to);\n }\n }\n });\n if (changedValueTypeKeys.length) {\n var convertedTarget = convertChangedValueTypes(target, visualElement, changedValueTypeKeys);\n // If we removed transform values, reapply them before the next render\n if (removedTransformValues.length) {\n removedTransformValues.forEach(function (_a) {\n var _b = __read(_a, 2), key = _b[0], value = _b[1];\n visualElement.getValue(key).set(value);\n });\n }\n // Reapply original values\n visualElement.render();\n return { target: convertedTarget, transitionEnd: transitionEnd };\n }\n else {\n return { target: target, transitionEnd: transitionEnd };\n }\n};\n/**\n * Convert value types for x/y/width/height/top/left/bottom/right\n *\n * Allows animation between `'auto'` -> `'100%'` or `0` -> `'calc(50% - 10vw)'`\n *\n * @internal\n */\nfunction unitConversion(visualElement, target, origin, transitionEnd) {\n return hasPositionalKey(target)\n ? checkAndConvertChangedValueTypes(visualElement, target, origin, transitionEnd)\n : { target: target, transitionEnd: transitionEnd };\n}\n\n/**\n * Parse a DOM variant to make it animatable. This involves resolving CSS variables\n * and ensuring animations like \"20%\" => \"calc(50vw)\" are performed in pixels.\n */\nvar parseDomVariant = function (visualElement, target, origin, transitionEnd) {\n var resolved = resolveCSSVariables(visualElement, target, transitionEnd);\n target = resolved.target;\n transitionEnd = resolved.transitionEnd;\n return unitConversion(visualElement, target, origin, transitionEnd);\n};\n\n/**\n * Use callback either only on the initial render or on all renders. In concurrent mode\n * the \"initial\" render might run multiple times\n *\n * @param callback - Callback to run\n * @param isInitialOnly - Set to `true` to only run on initial render, or `false` for all renders. Defaults to `false`.\n *\n * @public\n */\nfunction useInitialOrEveryRender(callback, isInitialOnly) {\n if (isInitialOnly === void 0) { isInitialOnly = false; }\n var isInitialRender = useRef(true);\n if (!isInitialOnly || (isInitialOnly && isInitialRender.current)) {\n callback();\n }\n isInitialRender.current = false;\n}\n\n/**\n * Control animations on one or more components.\n *\n * @public\n */\nvar AnimationControls = /** @class */ (function () {\n function AnimationControls() {\n /**\n * Track whether the host component has mounted.\n *\n * @internal\n */\n this.hasMounted = false;\n /**\n * Pending animations that are started before a component is mounted.\n *\n * @internal\n */\n this.pendingAnimations = [];\n /**\n * A collection of linked component animation controls.\n *\n * @internal\n */\n this.componentControls = new Set();\n }\n /**\n * Set variants on this and all child components.\n *\n * @param variants - The variants to set\n *\n * @internal\n */\n AnimationControls.prototype.setVariants = function (variants) {\n this.variants = variants;\n this.componentControls.forEach(function (controls) {\n return controls.setVariants(variants);\n });\n };\n /**\n * Set a default transition on this and all child components\n *\n * @param transition - The default transition to set\n *\n * @internal\n */\n AnimationControls.prototype.setDefaultTransition = function (transition) {\n this.defaultTransition = transition;\n this.componentControls.forEach(function (controls) {\n return controls.setDefaultTransition(transition);\n });\n };\n /**\n * Subscribes a component's animation controls to this.\n *\n * @param controls - The controls to subscribe\n * @returns An unsubscribe function.\n *\n * @internal\n */\n AnimationControls.prototype.subscribe = function (controls) {\n var _this = this;\n this.componentControls.add(controls);\n if (this.variants)\n controls.setVariants(this.variants);\n if (this.defaultTransition)\n controls.setDefaultTransition(this.defaultTransition);\n return function () { return _this.componentControls.delete(controls); };\n };\n /**\n * Starts an animation on all linked components.\n *\n * @remarks\n *\n * ```jsx\n * controls.start(\"variantLabel\")\n * controls.start({\n * x: 0,\n * transition: { duration: 1 }\n * })\n * ```\n *\n * @param definition - Properties or variant label to animate to\n * @param transition - Optional `transtion` to apply to a variant\n * @returns - A `Promise` that resolves when all animations have completed.\n *\n * @public\n */\n AnimationControls.prototype.start = function (definition, transitionOverride) {\n var _this = this;\n if (this.hasMounted) {\n var animations_1 = [];\n this.componentControls.forEach(function (controls) {\n var animation = controls.start(definition, {\n transitionOverride: transitionOverride,\n });\n animations_1.push(animation);\n });\n return Promise.all(animations_1);\n }\n else {\n return new Promise(function (resolve) {\n _this.pendingAnimations.push({\n animation: [definition, transitionOverride],\n resolve: resolve,\n });\n });\n }\n };\n /**\n * Instantly set to a set of properties or a variant.\n *\n * ```jsx\n * // With properties\n * controls.set({ opacity: 0 })\n *\n * // With variants\n * controls.set(\"hidden\")\n * ```\n *\n * @internalremarks\n * We could perform a similar trick to `.start` where this can be called before mount\n * and we maintain a list of of pending actions that get applied on mount. But the\n * expectation of `set` is that it happens synchronously and this would be difficult\n * to do before any children have even attached themselves. It's also poor practise\n * and we should discourage render-synchronous `.start` calls rather than lean into this.\n *\n * @public\n */\n AnimationControls.prototype.set = function (definition) {\n invariant(this.hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n return this.componentControls.forEach(function (controls) {\n return controls.apply(definition);\n });\n };\n /**\n * Stops animations on all linked components.\n *\n * ```jsx\n * controls.stop()\n * ```\n *\n * @public\n */\n AnimationControls.prototype.stop = function () {\n this.componentControls.forEach(function (controls) { return controls.stop(); });\n };\n /**\n * Initialises the animation controls.\n *\n * @internal\n */\n AnimationControls.prototype.mount = function () {\n var _this = this;\n this.hasMounted = true;\n this.pendingAnimations.forEach(function (_a) {\n var animation = _a.animation, resolve = _a.resolve;\n return _this.start.apply(_this, __spread(animation)).then(resolve);\n });\n };\n /**\n * Stops all child animations when the host component unmounts.\n *\n * @internal\n */\n AnimationControls.prototype.unmount = function () {\n this.hasMounted = false;\n this.stop();\n };\n return AnimationControls;\n}());\n/**\n * @internal\n */\nvar animationControls = function () { return new AnimationControls(); };\n\n/**\n * @internal\n */\nvar MotionContext = createContext({\n static: false,\n});\nvar isVariantLabel = function (v) {\n return typeof v === \"string\" || Array.isArray(v);\n};\nvar isAnimationControls = function (v) {\n return v instanceof AnimationControls;\n};\n/**\n * Set up the context for children motion components.\n *\n * We also use this opportunity to apply `initial` values\n */\nvar useMotionContext = function (parentContext, controls, visualElement, isStatic, _a) {\n if (isStatic === void 0) { isStatic = false; }\n var initial = _a.initial, animate = _a.animate, variants = _a.variants, whileTap = _a.whileTap, whileHover = _a.whileHover, layoutId = _a.layoutId;\n // Determine whether this is a root element of an AnimatePresence component\n var presenceContext = useContext(PresenceContext);\n var presenceId = presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.id;\n visualElement.isPresenceRoot = parentContext.presenceId !== presenceId;\n // Override initial with that from a parent context, if defined\n if ((presenceContext === null || presenceContext === void 0 ? void 0 : presenceContext.initial) !== undefined) {\n initial = presenceContext.initial;\n }\n var initialState;\n if (initial === false && !isAnimationControls(animate)) {\n initialState = animate;\n }\n else if (typeof initial !== \"boolean\") {\n initialState = initial;\n }\n // Track mounted status so children can detect whether they were present during their\n // parent's first render\n var hasMounted = useRef(false);\n // We propagate this component's VisualElementAnimationControls *if* we're being provided variants,\n // if we're being used to control variants, or if we're being passed animation controls.\n // Otherwise this component should be \"invisible\" to variant propagation. This is a slight concession\n // to Framer X where every `Frame` is a `motion` component and it might be if we change that in the future\n // that this restriction is removed.\n var shouldPropagateControls = variants ||\n isVariantLabel(animate) ||\n isVariantLabel(whileTap) ||\n isVariantLabel(whileHover) ||\n isAnimationControls(animate);\n // If this component's `initial` prop is a variant label, propagate it. Otherwise pass the parent's.\n var targetInitial = isVariantLabel(initialState)\n ? initialState\n : parentContext.initial;\n // If this is a variant tree we need to propagate the `animate` prop in case new children are added after\n // the tree initially animates.\n var targetAnimate = isVariantLabel(animate)\n ? animate\n : parentContext.animate;\n // Only allow `initial` to trigger context re-renders if this is a `static` component (ie we're on the Framer canvas)\n // or in another non-animation/interaction environment.\n var initialDependency = isStatic ? targetInitial : null;\n // Only allow `animate` to trigger context re-renders if it's a variant label. If this is an array of\n // variant labels there's probably an optimisation to deep-compare but it might be an over-optimisation.\n // We want to do this as we rely on React's component rendering order each render cycle to determine\n // the new order of any child components for the `staggerChildren` functionality.\n var animateDependency = shouldPropagateControls && isVariantLabel(targetAnimate)\n ? targetAnimate\n : null;\n // The context to provide to the child. We `useMemo` because although `controls` and `initial` are\n // unlikely to change, by making the context an object it'll be considered a new value every render.\n // So all child motion components will re-render as a result.\n var context = useMemo(function () { return ({\n controls: shouldPropagateControls\n ? controls\n : parentContext.controls,\n initial: targetInitial,\n animate: targetAnimate,\n visualElement: visualElement,\n hasMounted: hasMounted,\n isReducedMotion: parentContext.isReducedMotion,\n presenceId: presenceId,\n }); }, [\n initialDependency,\n animateDependency,\n parentContext.isReducedMotion,\n animate,\n layoutId,\n presenceId,\n ]);\n // Update the `static` property every render. This is unlikely to change but also essentially free.\n context.static = isStatic;\n // Set initial state. If this is a static component (ie in Framer canvas), respond to updates\n // in `initial`.\n useInitialOrEveryRender(function () {\n var initialToApply = initialState || parentContext.initial;\n initialToApply && controls.apply(initialToApply);\n }, !isStatic);\n useEffect(function () {\n hasMounted.current = true;\n }, []);\n return context;\n};\n\nvar checkShouldInheritVariant = function (_a) {\n var animate = _a.animate, variants = _a.variants, _b = _a.inherit, inherit = _b === void 0 ? true : _b;\n return (inherit &&\n !!variants &&\n (!animate || animate instanceof AnimationControls));\n};\n\nvar isMotionValue = function (value) {\n return value instanceof MotionValue;\n};\n\nfunction isForcedMotionValue(key, _a) {\n var layout = _a.layout, layoutId = _a.layoutId;\n return (isTransformProp(key) ||\n isTransformOriginProp(key) ||\n ((layout || layoutId !== undefined) && !!valueScaleCorrection[key]));\n}\n/**\n * Scrape props for MotionValues and add/remove them to this component's\n * VisualElement\n */\nfunction useMotionValues(visualElement, props) {\n var prev = useConstant(empty);\n /**\n * Remove MotionValues that are no longer present\n */\n for (var key in prev) {\n var isForced = isForcedMotionValue(key, props);\n var existsAsProp = props[key];\n var existsAsStyle = props.style && props.style[key];\n var propIsMotionValue = existsAsProp && isMotionValue(props[key]);\n var styleIsMotionValue = existsAsStyle && isMotionValue(props.style[key]);\n var transformRemoved = isForced && !existsAsProp && !existsAsStyle;\n var motionValueRemoved = !isForced && !propIsMotionValue && !styleIsMotionValue;\n if (transformRemoved || motionValueRemoved) {\n visualElement.removeValue(key);\n delete prev[key];\n }\n }\n /**\n * Add incoming MotionValues\n */\n addMotionValues(visualElement, prev, props, false, props);\n if (props.style)\n addMotionValues(visualElement, prev, props.style, true, props);\n /**\n * Transform custom values if provided a handler, ie size -> width/height\n * Ideally we'd ditch this by removing support for size and other custom values from Framer.\n */\n if (props.transformValues) {\n visualElement.reactStyle = props.transformValues(visualElement.reactStyle);\n }\n}\n/**\n * Add incoming MotionValues\n *\n * TODO: Type the VisualElements properly\n */\nfunction addMotionValues(visualElement, prev, source, isStyle, props) {\n if (isStyle === void 0) { isStyle = false; }\n if (isStyle)\n visualElement.reactStyle = {};\n for (var key in source) {\n var value = source[key];\n var foundMotionValue = false;\n if (isMotionValue(value)) {\n // If this is a MotionValue, add it if it isn't a reserved key\n if (!reservedNames.has(key)) {\n visualElement.addValue(key, value);\n foundMotionValue = true;\n }\n }\n else if (isForcedMotionValue(key, props)) {\n // If this is a transform prop, always create a MotionValue\n // to ensure we can reconcile them all together.\n if (!visualElement.hasValue(key)) {\n visualElement.addValue(key, motionValue(value));\n }\n else if (value !== prev[key]) {\n // If the MotionValue already exists, update it with the\n // latest incoming value\n var motion = visualElement.getValue(key);\n motion.set(value);\n }\n foundMotionValue = true;\n }\n else if (isStyle) {\n visualElement.reactStyle[key] = value;\n }\n if (foundMotionValue)\n prev[key] = value;\n }\n}\n/**\n * These are props we accept as MotionValues but don't want to add\n * to the VisualElement\n */\nvar reservedNames = new Set([]);\nvar empty = function () { return ({}); };\n\nvar isCustomValue = function (v) {\n return Boolean(v && typeof v === \"object\" && v.mix && v.toValue);\n};\nvar resolveFinalValueInKeyframes = function (v) {\n // TODO maybe throw if v.length - 1 is placeholder token?\n return isKeyframesTarget(v) ? v[v.length - 1] || 0 : v;\n};\n\n/**\n * Check if value is a numerical string, ie a string that is purely a number eg \"100\" or \"-100.1\"\n */\nvar isNumericalString = function (v) { return /^\\-?\\d*\\.?\\d+$/.test(v); };\n\n/**\n * Get the current value of every `MotionValue` in a `VisualElement`\n */\nvar getCurrent = function (visualElement) {\n var current = {};\n visualElement.forEachValue(function (value, key) { return (current[key] = value.get()); });\n return current;\n};\n/**\n * Get the current velocity of every `MotionValue` in a `VisualElement`\n */\nvar getVelocity = function (visualElement) {\n var velocity = {};\n visualElement.forEachValue(function (value, key) { return (velocity[key] = value.getVelocity()); });\n return velocity;\n};\n/**\n * Check if value is a function that returns a `Target`. A generic typeof === 'function'\n * check, just helps with typing.\n */\nvar isTargetResolver = function (p) {\n return typeof p === \"function\";\n};\n/**\n * Check if value is a list of variant labels\n */\nvar isVariantLabels = function (v) { return Array.isArray(v); };\n/**\n * Control animations for a single component\n *\n * @internal\n */\nvar VisualElementAnimationControls = /** @class */ (function () {\n function VisualElementAnimationControls(visualElement, _a) {\n var _this = this;\n var makeTargetAnimatable = _a.makeTargetAnimatable;\n /**\n * A reference to the component's latest props. We could probably ditch this in\n * favour to a reference to the `custom` prop now we don't send all props through\n * to target resolvers.\n */\n this.props = {};\n /**\n * The component's variants, as provided by `variants`\n */\n this.variants = {};\n /**\n * A set of values that we animate back to when a value is cleared of all overrides.\n */\n this.baseTarget = {};\n /**\n * A series of target overrides that we can animate to/from when overrides are set/cleared.\n */\n this.overrides = [];\n /**\n * A series of target overrides as they were originally resolved.\n */\n this.resolvedOverrides = [];\n /**\n * A Set of currently active override indexes\n */\n this.activeOverrides = new Set();\n /**\n * A Set of value keys that are currently animating.\n */\n this.isAnimating = new Set();\n /**\n * Check if the associated `VisualElement` has a key with the provided string.\n * Pre-bound to the class so we can provide directly to the `filter` in `checkForNewValues`.\n */\n this.hasValue = function (key) { return !_this.visualElement.hasValue(key); };\n this.visualElement = visualElement;\n this.makeTargetAnimatable = makeTargetAnimatable;\n this.visualElement.forEachValue(function (value, key) { return (_this.baseTarget[key] = value.get()); });\n }\n /**\n * Set the reference to the component's props.\n * @param props -\n */\n VisualElementAnimationControls.prototype.setProps = function (props) {\n this.props = props;\n };\n /**\n * Set the reference to the component's variants\n * @param variants -\n */\n VisualElementAnimationControls.prototype.setVariants = function (variants) {\n if (variants)\n this.variants = variants;\n };\n /**\n * Set the component's default transition\n * @param transition -\n */\n VisualElementAnimationControls.prototype.setDefaultTransition = function (transition) {\n if (transition)\n this.defaultTransition = transition;\n };\n /**\n * Set motion values without animation.\n *\n * @param definition -\n * @param isActive -\n */\n VisualElementAnimationControls.prototype.setValues = function (definition, _a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.isActive, isActive = _c === void 0 ? new Set() : _c, priority = _b.priority;\n var _d = this.resolveVariant(definition), target = _d.target, transitionEnd = _d.transitionEnd;\n target = this.transformValues(__assign(__assign({}, target), transitionEnd));\n for (var key in target) {\n if (isActive.has(key))\n return;\n isActive.add(key);\n if (target) {\n var targetValue = resolveFinalValueInKeyframes(target[key]);\n if (this.visualElement.hasValue(key)) {\n var value = this.visualElement.getValue(key);\n value && value.set(targetValue);\n }\n else {\n this.visualElement.addValue(key, motionValue(targetValue));\n }\n if (!priority)\n this.baseTarget[key] = targetValue;\n }\n }\n };\n /**\n * Allows `transformValues` to be set by a component that allows us to\n * transform the values in a given `Target`. This allows Framer Library\n * to extend Framer Motion to animate `Color` variables etc. Currently we have\n * to manually support these extended types here in Framer Motion.\n *\n * @param values -\n */\n VisualElementAnimationControls.prototype.transformValues = function (values) {\n var transformValues = this.props.transformValues;\n return transformValues ? transformValues(values) : values;\n };\n /**\n * Check a `Target` for new values we haven't animated yet, and add them\n * to the `MotionValueMap`.\n *\n * Currently there's functionality here that is DOM-specific, we should allow\n * this functionality to be injected by the factory that creates DOM-specific\n * components.\n *\n * @param target -\n */\n VisualElementAnimationControls.prototype.checkForNewValues = function (target) {\n var newValueKeys = Object.keys(target).filter(this.hasValue);\n var numNewValues = newValueKeys.length;\n if (!numNewValues)\n return;\n for (var i = 0; i < numNewValues; i++) {\n var key = newValueKeys[i];\n var targetValue = target[key];\n var value = null;\n // If this is a keyframes value, we can attempt to use the first value in the\n // array as that's going to be the first value of the animation anyway\n if (Array.isArray(targetValue)) {\n value = targetValue[0];\n }\n // If it isn't a keyframes or the first keyframes value was set as `null`, read the\n // value from the DOM. It might be worth investigating whether to check props (for SVG)\n // or props.style (for HTML) if the value exists there before attempting to read.\n if (value === null) {\n var readValue = this.visualElement.readNativeValue(key);\n value = readValue !== undefined ? readValue : target[key];\n invariant(value !== null, \"No initial value for \\\"\" + key + \"\\\" can be inferred. Ensure an initial value for \\\"\" + key + \"\\\" is defined on the component.\");\n }\n if (typeof value === \"string\" && isNumericalString(value)) {\n // If this is a number read as a string, ie \"0\" or \"200\", convert it to a number\n value = parseFloat(value);\n }\n else if (!findValueType(value) && complex.test(targetValue)) {\n // If value is not recognised as animatable, ie \"none\", create an animatable version origin based on the target\n value = complex.getAnimatableNone(targetValue);\n }\n this.visualElement.addValue(key, motionValue(value));\n this.baseTarget[key] = value;\n }\n };\n /**\n * Resolve a variant from its label or resolver into an actual `Target` we can animate to.\n * @param variant -\n */\n VisualElementAnimationControls.prototype.resolveVariant = function (variant, _a) {\n var custom = (_a === void 0 ? {} : _a).custom;\n if (!variant) {\n return {\n target: undefined,\n transition: undefined,\n transitionEnd: undefined,\n };\n }\n if (isTargetResolver(variant)) {\n // resolve current and velocity\n variant = variant(custom !== null && custom !== void 0 ? custom : this.props.custom, getCurrent(this.visualElement), getVelocity(this.visualElement));\n }\n var _b = variant.transition, transition = _b === void 0 ? this.defaultTransition : _b, transitionEnd = variant.transitionEnd, target = __rest(variant, [\"transition\", \"transitionEnd\"]);\n return { transition: transition, transitionEnd: transitionEnd, target: target };\n };\n /**\n * Get the highest active override priority index\n */\n VisualElementAnimationControls.prototype.getHighestPriority = function () {\n if (!this.activeOverrides.size)\n return 0;\n return Math.max.apply(Math, __spread(Array.from(this.activeOverrides)));\n };\n /**\n * Set an override. We add this layer of indirection so if, for instance, a tap gesture\n * starts and overrides a hover gesture, when we clear the tap gesture and fallback to the\n * hover gesture, if that hover gesture has changed in the meantime we can go to that rather\n * than the one that was resolved when the hover gesture animation started.\n *\n * @param definition -\n * @param overrideIndex -\n */\n VisualElementAnimationControls.prototype.setOverride = function (definition, overrideIndex) {\n this.overrides[overrideIndex] = definition;\n if (this.children) {\n this.children.forEach(function (child) {\n return child.setOverride(definition, overrideIndex);\n });\n }\n };\n /**\n * Start an override animation.\n * @param overrideIndex -\n */\n VisualElementAnimationControls.prototype.startOverride = function (overrideIndex) {\n var override = this.overrides[overrideIndex];\n if (override) {\n return this.start(override, { priority: overrideIndex });\n }\n };\n /**\n * Clear an override. We check every value we animated to in this override to see if\n * its present on any lower-priority overrides. If not, we animate it back to its base target.\n * @param overrideIndex -\n */\n VisualElementAnimationControls.prototype.clearOverride = function (overrideIndex) {\n var _this = this;\n if (this.children) {\n this.children.forEach(function (child) { return child.clearOverride(overrideIndex); });\n }\n var override = this.overrides[overrideIndex];\n if (!override)\n return;\n this.activeOverrides.delete(overrideIndex);\n var highest = this.getHighestPriority();\n this.resetIsAnimating();\n if (highest) {\n var highestOverride = this.overrides[highest];\n highestOverride && this.startOverride(highest);\n }\n // Figure out which remaining values were affected by the override and animate those\n var overrideTarget = this.resolvedOverrides[overrideIndex];\n if (!overrideTarget)\n return;\n var remainingValues = {};\n for (var key in this.baseTarget) {\n if (overrideTarget[key] !== undefined) {\n remainingValues[key] = this.baseTarget[key];\n }\n }\n this.onStart();\n this.animate(remainingValues).then(function () { return _this.onComplete(); });\n };\n /**\n * Apply a target/variant without any animation\n */\n VisualElementAnimationControls.prototype.apply = function (definition) {\n if (Array.isArray(definition)) {\n return this.applyVariantLabels(definition);\n }\n else if (typeof definition === \"string\") {\n return this.applyVariantLabels([definition]);\n }\n else {\n this.setValues(definition);\n }\n };\n /**\n * Apply variant labels without animation\n */\n VisualElementAnimationControls.prototype.applyVariantLabels = function (variantLabelList) {\n var _this = this;\n var isActive = new Set();\n var reversedList = __spread(variantLabelList).reverse();\n reversedList.forEach(function (key) {\n var _a = _this.resolveVariant(_this.variants[key]), target = _a.target, transitionEnd = _a.transitionEnd;\n target && _this.setValues(target, { isActive: isActive });\n transitionEnd && _this.setValues(transitionEnd, { isActive: isActive });\n if (_this.children && _this.children.size) {\n _this.children.forEach(function (child) {\n return child.applyVariantLabels(variantLabelList);\n });\n }\n });\n };\n VisualElementAnimationControls.prototype.start = function (definition, opts) {\n var _this = this;\n if (opts === void 0) { opts = {}; }\n if (opts.priority) {\n this.activeOverrides.add(opts.priority);\n }\n this.resetIsAnimating(opts.priority);\n var animation;\n if (isVariantLabels(definition)) {\n animation = this.animateVariantLabels(definition, opts);\n }\n else if (typeof definition === \"string\") {\n animation = this.animateVariant(definition, opts);\n }\n else {\n animation = this.animate(definition, opts);\n }\n this.onStart();\n return animation.then(function () { return _this.onComplete(); });\n };\n VisualElementAnimationControls.prototype.animate = function (animationDefinition, _a) {\n var _this = this;\n if (_a === void 0) { _a = {}; }\n var _b = _a.delay, delay = _b === void 0 ? 0 : _b, _c = _a.priority, priority = _c === void 0 ? 0 : _c, transitionOverride = _a.transitionOverride, opts = __rest(_a, [\"delay\", \"priority\", \"transitionOverride\"]);\n var _d = this.resolveVariant(animationDefinition, opts), target = _d.target, transition = _d.transition, transitionEnd = _d.transitionEnd;\n if (transitionOverride) {\n transition = transitionOverride;\n }\n if (!target)\n return Promise.resolve();\n target = this.transformValues(target);\n if (transitionEnd) {\n transitionEnd = this.transformValues(transitionEnd);\n }\n this.checkForNewValues(target);\n var origin = this.transformValues(getOrigin(target, transition, this.visualElement));\n if (this.makeTargetAnimatable) {\n var animatable = this.makeTargetAnimatable(this.visualElement, target, origin, transitionEnd);\n target = animatable.target;\n transitionEnd = animatable.transitionEnd;\n }\n if (priority) {\n this.resolvedOverrides[priority] = target;\n }\n this.checkForNewValues(target);\n var animations = [];\n for (var key in target) {\n var value = this.visualElement.getValue(key);\n if (!value || !target || target[key] === undefined)\n continue;\n var valueTarget = target[key];\n if (!priority) {\n this.baseTarget[key] = resolveFinalValueInKeyframes(valueTarget);\n }\n if (this.isAnimating.has(key))\n continue;\n this.isAnimating.add(key);\n animations.push(startAnimation(key, value, valueTarget, __assign({ delay: delay }, transition)));\n }\n var allAnimations = Promise.all(animations);\n return transitionEnd\n ? allAnimations.then(function () {\n _this.setValues(transitionEnd, { priority: priority });\n })\n : allAnimations;\n };\n VisualElementAnimationControls.prototype.animateVariantLabels = function (variantLabels, opts) {\n var _this = this;\n var animations = __spread(variantLabels).reverse()\n .map(function (label) { return _this.animateVariant(label, opts); });\n return Promise.all(animations);\n };\n VisualElementAnimationControls.prototype.animateVariant = function (variantLabel, opts) {\n var _this = this;\n var priority = (opts && opts.priority) || 0;\n var variant = this.variants[variantLabel];\n var transition = variant\n ? this.resolveVariant(variant, opts).transition || {}\n : {};\n /**\n * If we have a variant, create a callback that runs it as an animation.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n var getAnimation = variant\n ? function () { return _this.animate(variant, opts); }\n : function () { return Promise.resolve(); };\n /**\n * If we have children, create a callback that runs all their animations.\n * Otherwise, we resolve a Promise immediately for a composable no-op.\n */\n var getChildrenAnimations = this.children\n ? function (forwardDelay) {\n if (forwardDelay === void 0) { forwardDelay = 0; }\n var _a = transition.delayChildren, delayChildren = _a === void 0 ? 0 : _a;\n return _this.animateChildren(variantLabel, delayChildren + forwardDelay, transition.staggerChildren, transition.staggerDirection, priority, opts === null || opts === void 0 ? void 0 : opts.custom);\n }\n : function () { return Promise.resolve(); };\n /**\n * If the transition explicitly defines a \"when\" option, we need to resolve either\n * this animation or all children animations before playing the other.\n */\n var when = transition.when;\n if (when) {\n var _a = __read(when === \"beforeChildren\"\n ? [getAnimation, getChildrenAnimations]\n : [getChildrenAnimations, getAnimation], 2), first = _a[0], last = _a[1];\n return first().then(last);\n }\n else {\n return Promise.all([\n getAnimation(),\n getChildrenAnimations(opts === null || opts === void 0 ? void 0 : opts.delay),\n ]);\n }\n };\n VisualElementAnimationControls.prototype.animateChildren = function (variantLabel, delayChildren, staggerChildren, staggerDirection, priority, custom) {\n if (delayChildren === void 0) { delayChildren = 0; }\n if (staggerChildren === void 0) { staggerChildren = 0; }\n if (staggerDirection === void 0) { staggerDirection = 1; }\n if (priority === void 0) { priority = 0; }\n if (!this.children) {\n return Promise.resolve();\n }\n var animations = [];\n var maxStaggerDuration = (this.children.size - 1) * staggerChildren;\n var generateStaggerDuration = staggerDirection === 1\n ? function (i) { return i * staggerChildren; }\n : function (i) { return maxStaggerDuration - i * staggerChildren; };\n Array.from(this.children).forEach(function (childControls, i) {\n var animation = childControls.animateVariant(variantLabel, {\n priority: priority,\n delay: delayChildren + generateStaggerDuration(i),\n custom: custom,\n });\n animations.push(animation);\n });\n return Promise.all(animations);\n };\n VisualElementAnimationControls.prototype.onStart = function () {\n var onAnimationStart = this.props.onAnimationStart;\n onAnimationStart && onAnimationStart();\n };\n VisualElementAnimationControls.prototype.onComplete = function () {\n var onAnimationComplete = this.props.onAnimationComplete;\n onAnimationComplete && onAnimationComplete();\n };\n VisualElementAnimationControls.prototype.checkOverrideIsAnimating = function (priority) {\n var numOverrides = this.overrides.length;\n for (var i = priority + 1; i < numOverrides; i++) {\n var resolvedOverride = this.resolvedOverrides[i];\n if (resolvedOverride) {\n for (var key in resolvedOverride) {\n this.isAnimating.add(key);\n }\n }\n }\n };\n VisualElementAnimationControls.prototype.resetIsAnimating = function (priority) {\n if (priority === void 0) { priority = 0; }\n this.isAnimating.clear();\n // If this isn't the highest priority gesture, block the animation\n // of anything that's currently being animated\n if (priority < this.getHighestPriority()) {\n this.checkOverrideIsAnimating(priority);\n }\n if (this.children) {\n this.children.forEach(function (child) { return child.resetIsAnimating(priority); });\n }\n };\n VisualElementAnimationControls.prototype.stop = function () {\n this.visualElement.forEachValue(function (value) { return value.stop(); });\n };\n /**\n * Add the controls of a child component.\n * @param controls -\n */\n VisualElementAnimationControls.prototype.addChild = function (controls) {\n if (!this.children) {\n this.children = new Set();\n }\n this.children.add(controls);\n // We set child overrides when `setOverride` is called, but also have to do it here\n // as the first time `setOverride` is called all the children might not have been added yet.\n this.overrides.forEach(function (override, i) {\n override && controls.setOverride(override, i);\n });\n };\n VisualElementAnimationControls.prototype.removeChild = function (controls) {\n if (!this.children) {\n return;\n }\n this.children.delete(controls);\n };\n VisualElementAnimationControls.prototype.resetChildren = function () {\n if (this.children)\n this.children.clear();\n };\n return VisualElementAnimationControls;\n}());\nfunction getOriginFromTransition(key, transition) {\n if (!transition)\n return;\n var valueTransition = transition[key] || transition[\"default\"] || transition;\n return valueTransition.from;\n}\nfunction getOrigin(target, transition, visualElement) {\n var _a, _b;\n var origin = {};\n for (var key in target) {\n origin[key] = (_a = getOriginFromTransition(key, transition)) !== null && _a !== void 0 ? _a : (_b = visualElement.getValue(key)) === null || _b === void 0 ? void 0 : _b.get();\n }\n return origin;\n}\n\n/**\n * Creates an imperative set of controls to trigger animations.\n *\n * This allows a consolidated, uniform API for animations, to be triggered by other APIs like the `animate` prop, or the gesture handlers.\n *\n * @internal\n */\nfunction useVisualElementAnimation(visualElement, props, config) {\n var subscribeToParentControls = checkShouldInheritVariant(props);\n var variants = props.variants, transition = props.transition;\n var parentControls = useContext(MotionContext).controls;\n var presenceContext = useContext(PresenceContext);\n var controls = useConstant(function () { return new VisualElementAnimationControls(visualElement, config); });\n // Reset and resubscribe children every render to ensure stagger order is correct\n if (!presenceContext || presenceContext.isPresent) {\n controls.resetChildren();\n controls.setProps(props);\n controls.setVariants(variants);\n controls.setDefaultTransition(transition);\n }\n // We have to subscribe to the parent controls within a useEffect rather than during render,\n // as\n useEffect(function () {\n if (subscribeToParentControls && parentControls) {\n parentControls.addChild(controls);\n }\n });\n useEffect(function () {\n return function () {\n // Remove reference to onAnimationComplete from controls. All the MotionValues\n // are unsubscribed from this component separately. We let animations run out\n // as they might be animating other components.\n var onAnimationComplete = props.onAnimationComplete, unmountProps = __rest(props, [\"onAnimationComplete\"]);\n controls.setProps(unmountProps);\n parentControls && parentControls.removeChild(controls);\n };\n }, []);\n return controls;\n}\n\n/**\n * @public\n */\nvar MotionConfigContext = createContext({\n transformPagePoint: function (p) { return p; },\n features: [],\n});\n/**\n * MotionConfig can be used in combination with the `m` component to cut bundle size\n * and dynamically load only the features you use.\n *\n * ```jsx\n * import {\n * m as motion,\n * AnimationFeature,\n * MotionConfig\n * } from \"framer-motion\"\n *\n * export function App() {\n * return (\n * \n * \n * \n * )\n * }\n * ```\n *\n * @public\n */\nfunction MotionConfig(_a) {\n var children = _a.children, _b = _a.features, features = _b === void 0 ? [] : _b, props = __rest(_a, [\"children\", \"features\"]);\n var pluginContext = useContext(MotionConfigContext);\n var loadedFeatures = __spread(pluginContext.features, features);\n // We do want to rerender children when the number of loaded features changes\n var value = useMemo(function () { return ({ features: loadedFeatures }); }, [\n loadedFeatures.length,\n ]);\n // Mutative to prevent triggering rerenders in all listening\n // components every time this component renders\n for (var key in props) {\n value[key] = props[key];\n }\n return (createElement(MotionConfigContext.Provider, { value: value }, children));\n}\n\n/**\n * Load features via renderless components based on the provided MotionProps\n */\nfunction useFeatures(defaultFeatures, isStatic, visualElement, controls, props, context, parentContext, shouldInheritVariant) {\n var plugins = useContext(MotionConfigContext);\n // If this is a static component, or we're rendering on the server, we don't load\n // any feature components\n if (isStatic || typeof window === \"undefined\")\n return null;\n var allFeatures = __spread(defaultFeatures, plugins.features);\n var numFeatures = allFeatures.length;\n var features = [];\n // Decide which features we should render and add them to the returned array\n for (var i = 0; i < numFeatures; i++) {\n var _a = allFeatures[i], shouldRender = _a.shouldRender, key = _a.key, getComponent = _a.getComponent;\n if (shouldRender(props, parentContext)) {\n var Component = getComponent(props);\n Component &&\n features.push(createElement(Component, __assign({ key: key }, props, { localContext: context, parentContext: parentContext, visualElement: visualElement, controls: controls, inherit: shouldInheritVariant })));\n }\n }\n return features;\n}\n\nvar Presence;\n(function (Presence) {\n Presence[Presence[\"Entering\"] = 0] = \"Entering\";\n Presence[Presence[\"Present\"] = 1] = \"Present\";\n Presence[Presence[\"Exiting\"] = 2] = \"Exiting\";\n})(Presence || (Presence = {}));\nvar VisibilityAction;\n(function (VisibilityAction) {\n VisibilityAction[VisibilityAction[\"Hide\"] = 0] = \"Hide\";\n VisibilityAction[VisibilityAction[\"Show\"] = 1] = \"Show\";\n})(VisibilityAction || (VisibilityAction = {}));\n\n/**\n * Default handlers for batching VisualElements\n */\nvar defaultHandler = {\n measureLayout: function (child) { return child.measureLayout(); },\n layoutReady: function (child) { return child.layoutReady(); },\n};\n/**\n * Sort VisualElements by tree depth, so we process the highest elements first.\n */\nvar sortByDepth = function (a, b) {\n return a.depth - b.depth;\n};\n/**\n * Create a batcher to process VisualElements\n */\nfunction createBatcher() {\n var queue = new Set();\n var add = function (child) { return queue.add(child); };\n var flush = function (_a) {\n var _b = _a === void 0 ? defaultHandler : _a, measureLayout = _b.measureLayout, layoutReady = _b.layoutReady;\n var order = Array.from(queue).sort(sortByDepth);\n /**\n * Write: Reset any transforms on children elements so we can read their actual layout\n */\n order.forEach(function (child) { return child.resetTransform(); });\n /**\n * Read: Measure the actual layout\n */\n order.forEach(measureLayout);\n /**\n * Write: Notify the VisualElements they're ready for further write operations.\n */\n order.forEach(layoutReady);\n /**\n * After all children have started animating, ensure any Entering components are set to Present.\n * If we add deferred animations (set up all animations and then start them in two loops) this\n * could be moved to the start loop. But it needs to happen after all the animations configs\n * are generated in AnimateSharedLayout as this relies on presence data\n */\n order.forEach(function (child) {\n if (child.isPresent)\n child.presence = Presence.Present;\n });\n queue.clear();\n };\n return { add: add, flush: flush };\n}\nfunction isSharedLayout(context) {\n return !!context.forceUpdate;\n}\nvar SharedLayoutContext = createContext(createBatcher());\n\nvar isBrowser = typeof window !== \"undefined\";\nvar useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;\n\nfunction useSnapshotOnUnmount(visualElement) {\n var syncLayout = useContext(SharedLayoutContext);\n useIsomorphicLayoutEffect(function () { return function () {\n if (isSharedLayout(syncLayout)) {\n syncLayout.remove(visualElement);\n }\n }; }, []);\n}\n\n/**\n * Create a `motion` component.\n *\n * This function accepts a Component argument, which can be either a string (ie \"div\"\n * for `motion.div`), or an actual React component.\n *\n * Alongside this is a config option which provides a way of rendering the provided\n * component \"offline\", or outside the React render cycle.\n *\n * @internal\n */\nfunction createMotionComponent(Component, _a) {\n var defaultFeatures = _a.defaultFeatures, useVisualElement = _a.useVisualElement, render = _a.render, animationControlsConfig = _a.animationControlsConfig;\n function MotionComponent(props, externalRef) {\n var parentContext = useContext(MotionContext);\n var shouldInheritVariant = checkShouldInheritVariant(props);\n /**\n * If a component isStatic, we only visually update it as a\n * result of a React re-render, rather than any interactions or animations.\n * If this component or any ancestor isStatic, we disable hardware acceleration\n * and don't load any additional functionality.\n */\n var isStatic = parentContext.static || props.static || false;\n /**\n * Create a VisualElement for this component. A VisualElement provides a common\n * interface to renderer-specific APIs (ie DOM/Three.js etc) as well as\n * providing a way of rendering to these APIs outside of the React render loop\n * for more performant animations and interactions\n */\n var visualElement = useVisualElement(Component, props, parentContext.visualElement, isStatic, externalRef);\n /**\n * Scrape MotionValues from props and add/remove them to/from\n * the VisualElement as necessary.\n */\n useMotionValues(visualElement, props);\n /**\n * Create animation controls for the VisualElement. It might be\n * interesting to try and combine this with VisualElement itself in a further refactor.\n */\n var controls = useVisualElementAnimation(visualElement, props, animationControlsConfig);\n /**\n * Build the MotionContext to pass on to the next `motion` component.\n */\n var context = useMotionContext(parentContext, controls, visualElement, isStatic, props);\n /**\n * Load features as renderless components unless the component isStatic\n */\n var features = useFeatures(defaultFeatures, isStatic, visualElement, controls, props, context, parentContext, shouldInheritVariant);\n var component = render(Component, props, visualElement);\n /**\n * If this component is a child of AnimateSharedLayout, we need to snapshot the component\n * before it's unmounted. This lives here rather than in features/layout/Measure because\n * as a child component its unmount effect runs after this component has been unmounted.\n */\n useSnapshotOnUnmount(visualElement);\n // The mount order and hierarchy is specific to ensure our element ref is hydrated by the time\n // all plugins and features has to execute.\n return (createElement(Fragment, null,\n createElement(MotionContext.Provider, { value: context }, component),\n features));\n }\n return forwardRef(MotionComponent);\n}\n\nfunction createLock(name) {\n var lock = null;\n return function () {\n var openLock = function () {\n lock = null;\n };\n if (lock === null) {\n lock = name;\n return openLock;\n }\n return false;\n };\n}\nvar globalHorizontalLock = createLock(\"dragHorizontal\");\nvar globalVerticalLock = createLock(\"dragVertical\");\nfunction getGlobalLock(drag) {\n var lock = false;\n if (drag === \"y\") {\n lock = globalVerticalLock();\n }\n else if (drag === \"x\") {\n lock = globalHorizontalLock();\n }\n else {\n var openHorizontal_1 = globalHorizontalLock();\n var openVertical_1 = globalVerticalLock();\n if (openHorizontal_1 && openVertical_1) {\n lock = function () {\n openHorizontal_1();\n openVertical_1();\n };\n }\n else {\n // Release the locks because we don't use them\n if (openHorizontal_1)\n openHorizontal_1();\n if (openVertical_1)\n openVertical_1();\n }\n }\n return lock;\n}\n\nvar isViewportScrollBlocked = false;\nvar isBrowser$1 = typeof window !== \"undefined\";\nif (isBrowser$1) {\n document.addEventListener(\"touchmove\", function (event) {\n if (isViewportScrollBlocked) {\n event.preventDefault();\n }\n }, { passive: false });\n}\nvar blockViewportScroll = function () { return (isViewportScrollBlocked = true); };\nvar unblockViewportScroll = function () { return (isViewportScrollBlocked = false); };\n\nfunction addDomEvent(target, eventName, handler, options) {\n if (!handler)\n return;\n target.addEventListener(eventName, handler, options);\n return function () { return target.removeEventListener(eventName, handler, options); };\n}\n/**\n * Attaches an event listener directly to the provided DOM element.\n *\n * Bypassing React's event system can be desirable, for instance when attaching non-passive\n * event handlers.\n *\n * ```jsx\n * const ref = useRef(null)\n *\n * useDomEvent(ref, 'wheel', onWheel, { passive: false })\n *\n * return
\n * ```\n *\n * @param ref - React.RefObject that's been provided to the element you want to bind the listener to.\n * @param eventName - Name of the event you want listen for.\n * @param handler - Function to fire when receiving the event.\n * @param options - Options to pass to `Event.addEventListener`.\n *\n * @public\n */\nfunction useDomEvent(ref, eventName, handler, options) {\n useEffect(function () {\n var element = ref.current;\n if (handler && element) {\n return addDomEvent(element, eventName, handler, options);\n }\n }, [ref, eventName, handler, options]);\n}\n\nfunction isMouseEvent(event) {\n // PointerEvent inherits from MouseEvent so we can't use a straight instanceof check.\n if (typeof PointerEvent !== \"undefined\" && event instanceof PointerEvent) {\n return !!(event.pointerType === \"mouse\");\n }\n return event instanceof MouseEvent;\n}\nfunction isTouchEvent(event) {\n var hasTouches = !!event.touches;\n return hasTouches;\n}\n\n/**\n * Filters out events not attached to the primary pointer (currently left mouse button)\n * @param eventHandler\n */\nfunction filterPrimaryPointer(eventHandler) {\n if (!eventHandler)\n return undefined;\n return function (event) {\n var isMouseEvent = event instanceof MouseEvent;\n var isPrimaryPointer = !isMouseEvent ||\n (isMouseEvent && event.button === 0);\n if (isPrimaryPointer) {\n eventHandler(event);\n }\n };\n}\nvar defaultPagePoint = { pageX: 0, pageY: 0 };\nfunction pointFromTouch(e, pointType) {\n if (pointType === void 0) { pointType = \"page\"; }\n var primaryTouch = e.touches[0] || e.changedTouches[0];\n var point = primaryTouch || defaultPagePoint;\n return {\n x: point[pointType + \"X\"],\n y: point[pointType + \"Y\"],\n };\n}\nfunction pointFromMouse(point, pointType) {\n if (pointType === void 0) { pointType = \"page\"; }\n return {\n x: point[pointType + \"X\"],\n y: point[pointType + \"Y\"],\n };\n}\nfunction extractEventInfo(event, pointType) {\n if (pointType === void 0) { pointType = \"page\"; }\n return {\n point: isTouchEvent(event)\n ? pointFromTouch(event, pointType)\n : pointFromMouse(event, pointType),\n };\n}\nfunction getViewportPointFromEvent(event) {\n return extractEventInfo(event, \"client\");\n}\nvar wrapHandler = function (handler, shouldFilterPrimaryPointer) {\n if (shouldFilterPrimaryPointer === void 0) { shouldFilterPrimaryPointer = false; }\n if (!handler)\n return;\n var listener = function (event) { return handler(event, extractEventInfo(event)); };\n return shouldFilterPrimaryPointer\n ? filterPrimaryPointer(listener)\n : listener;\n};\n\nvar isBrowser$2 = typeof window !== \"undefined\";\n// We check for event support via functions in case they've been mocked by a testing suite.\nvar supportsPointerEvents = function () {\n return isBrowser$2 && window.onpointerdown === null;\n};\nvar supportsTouchEvents = function () {\n return isBrowser$2 && window.ontouchstart === null;\n};\nvar supportsMouseEvents = function () {\n return isBrowser$2 && window.onmousedown === null;\n};\n\nvar mouseEventNames = {\n pointerdown: \"mousedown\",\n pointermove: \"mousemove\",\n pointerup: \"mouseup\",\n pointercancel: \"mousecancel\",\n pointerover: \"mouseover\",\n pointerout: \"mouseout\",\n pointerenter: \"mouseenter\",\n pointerleave: \"mouseleave\",\n};\nvar touchEventNames = {\n pointerdown: \"touchstart\",\n pointermove: \"touchmove\",\n pointerup: \"touchend\",\n pointercancel: \"touchcancel\",\n};\nfunction getPointerEventName(name) {\n if (supportsPointerEvents()) {\n return name;\n }\n else if (supportsTouchEvents()) {\n return touchEventNames[name];\n }\n else if (supportsMouseEvents()) {\n return mouseEventNames[name];\n }\n return name;\n}\nfunction addPointerEvent(target, eventName, handler, options) {\n return addDomEvent(target, getPointerEventName(eventName), wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\nfunction usePointerEvent(ref, eventName, handler, options) {\n return useDomEvent(ref, getPointerEventName(eventName), wrapHandler(handler, eventName === \"pointerdown\"), options);\n}\n\n/** @public */\nvar Point;\n(function (Point) {\n /** @beta */\n Point.subtract = function (a, b) {\n return { x: a.x - b.x, y: a.y - b.y };\n };\n /** @beta */\n Point.relativeTo = function (idOrElem) {\n var elem;\n var getElem = function () {\n // Caching element here could be leaky because of React lifecycle\n if (elem !== undefined)\n return elem;\n if (typeof idOrElem === \"string\") {\n elem = document.getElementById(idOrElem);\n }\n else {\n elem = idOrElem;\n }\n return elem;\n };\n return function (_a) {\n var x = _a.x, y = _a.y;\n var localElem = getElem();\n if (!localElem)\n return undefined;\n var rect = localElem.getBoundingClientRect();\n return {\n x: x - rect.left - window.scrollX,\n y: y - rect.top - window.scrollY,\n };\n };\n };\n})(Point || (Point = {}));\n\n/**\n * @internal\n */\nvar PanSession = /** @class */ (function () {\n function PanSession(event, handlers, _a) {\n var _this = this;\n var transformPagePoint = (_a === void 0 ? {} : _a).transformPagePoint;\n /**\n * @internal\n */\n this.startEvent = null;\n /**\n * @internal\n */\n this.lastMoveEvent = null;\n /**\n * @internal\n */\n this.lastMoveEventInfo = null;\n /**\n * @internal\n */\n this.handlers = {};\n this.updatePoint = function () {\n if (!(_this.lastMoveEvent && _this.lastMoveEventInfo))\n return;\n var info = getPanInfo(_this.lastMoveEventInfo, _this.history);\n var isPanStarted = _this.startEvent !== null;\n // Only start panning if the offset is larger than 3 pixels. If we make it\n // any larger than this we'll want to reset the pointer history\n // on the first update to avoid visual snapping to the cursoe.\n var isDistancePastThreshold = distance(info.offset, { x: 0, y: 0 }) >= 3;\n if (!isPanStarted && !isDistancePastThreshold)\n return;\n var point = info.point;\n var timestamp = getFrameData().timestamp;\n _this.history.push(__assign(__assign({}, point), { timestamp: timestamp }));\n var _a = _this.handlers, onStart = _a.onStart, onMove = _a.onMove;\n if (!isPanStarted) {\n onStart && onStart(_this.lastMoveEvent, info);\n _this.startEvent = _this.lastMoveEvent;\n }\n onMove && onMove(_this.lastMoveEvent, info);\n };\n // If we have more than one touch, don't start detecting this gesture\n if (isTouchEvent(event) && event.touches.length > 1)\n return;\n this.handlers = handlers;\n this.transformPagePoint = transformPagePoint;\n var info = extractEventInfo(event);\n var initialInfo = transformPoint(info, this.transformPagePoint);\n var point = initialInfo.point;\n var timestamp = getFrameData().timestamp;\n this.history = [__assign(__assign({}, point), { timestamp: timestamp })];\n var onSessionStart = handlers.onSessionStart;\n onSessionStart &&\n onSessionStart(event, getPanInfo(initialInfo, this.history));\n var removeOnPointerMove = addPointerEvent(window, \"pointermove\", function (event, info) { return _this.handlePointerMove(event, info); });\n var removeOnPointerUp = addPointerEvent(window, \"pointerup\", function (event, info) { return _this.handlePointerUp(event, info); });\n this.removeListeners = function () {\n removeOnPointerMove && removeOnPointerMove();\n removeOnPointerUp && removeOnPointerUp();\n };\n }\n PanSession.prototype.handlePointerMove = function (event, info) {\n this.lastMoveEvent = event;\n this.lastMoveEventInfo = transformPoint(info, this.transformPagePoint);\n // Because Safari doesn't trigger mouseup events when it's above a `\n {options.map(([value, name]) => (\n \n ))}\n \n );\n}\n","import * as React from 'react';\n\nimport {\n getAutoCloseOldConns,\n getHideUnavailableProxies,\n getProxySortBy,\n} from '../../store/app';\nimport Select from '../shared/Select';\nimport { connect, useStoreActions } from '../StateProvider';\nimport Switch from '../SwitchThemed';\nimport s from './Settings.module.css';\n\nconst options = [\n ['Natural', 'Original order in config file'],\n ['LatencyAsc', 'By latency from small to big'],\n ['LatencyDesc', 'By latency from big to small'],\n ['NameAsc', 'By name alphabetically (A-Z)'],\n ['NameDesc', 'By name alphabetically (Z-A)'],\n];\n\nconst { useCallback } = React;\n\nfunction Settings({ appConfig }) {\n const {\n app: { updateAppConfig },\n } = useStoreActions();\n\n const handleProxySortByOnChange = useCallback(\n (e) => {\n updateAppConfig('proxySortBy', e.target.value);\n },\n [updateAppConfig]\n );\n\n const handleHideUnavailablesSwitchOnChange = useCallback(\n (v) => {\n updateAppConfig('hideUnavailableProxies', v);\n },\n [updateAppConfig]\n );\n return (\n <>\n
\n Sorting in group\n
\n \n
\n
\n
\n
\n Hide unavailable proxies\n
\n \n
\n
\n
\n Automatically close old connections\n
\n updateAppConfig('autoCloseOldConns', v)}\n />\n
\n
\n \n );\n}\n\nconst mapState = (s) => {\n const proxySortBy = getProxySortBy(s);\n const hideUnavailableProxies = getHideUnavailableProxies(s);\n const autoCloseOldConns = getAutoCloseOldConns(s);\n\n return {\n appConfig: {\n proxySortBy,\n hideUnavailableProxies,\n autoCloseOldConns,\n },\n };\n};\nexport default connect(mapState)(Settings);\n","import * as React from 'react';\nimport { useTextInut } from 'src/hooks/useTextInput';\n\nimport { proxyFilterText } from '../../store/proxies';\nimport shared from '../shared.module.css';\n\nexport function TextFilter() {\n const [onChange, text] = useTextInut(proxyFilterText);\n return (\n \n );\n}\n","import * as React from 'react';\nimport { Zap } from 'react-feather';\n\nimport { getClashAPIConfig } from '../../store/app';\nimport {\n fetchProxies,\n getDelay,\n getProxyGroupNames,\n getProxyProviders,\n getShowModalClosePrevConns,\n requestDelayAll,\n} from '../../store/proxies';\nimport Button from '../Button';\nimport ContentHeader from '../ContentHeader';\nimport BaseModal from '../shared/BaseModal';\nimport { Fab, position as fabPosition } from '../shared/Fab';\nimport { connect, useStoreActions } from '../StateProvider';\nimport Equalizer from '../svg/Equalizer';\nimport { ClosePrevConns } from './ClosePrevConns';\nimport s0 from './Proxies.module.css';\nimport { ProxyGroup } from './ProxyGroup';\nimport { ProxyProviderList } from './ProxyProviderList';\nimport Settings from './Settings';\nimport { TextFilter } from './TextFilter';\n\nconst { useState, useEffect, useCallback, useRef } = React;\n\nfunction Proxies({\n dispatch,\n groupNames,\n delay,\n proxyProviders,\n apiConfig,\n showModalClosePrevConns,\n}) {\n const refFetchedTimestamp = useRef<{ startAt?: number; completeAt?: number }>(\n {}\n );\n const [isTestingLatency, setIsTestingLatency] = useState(false);\n const requestDelayAllFn = useCallback(() => {\n if (isTestingLatency) return;\n\n setIsTestingLatency(true);\n dispatch(requestDelayAll(apiConfig)).then(\n () => setIsTestingLatency(false),\n () => setIsTestingLatency(false)\n );\n }, [apiConfig, dispatch, isTestingLatency]);\n\n const fetchProxiesHooked = useCallback(() => {\n refFetchedTimestamp.current.startAt = Date.now();\n dispatch(fetchProxies(apiConfig)).then(() => {\n refFetchedTimestamp.current.completeAt = Date.now();\n });\n }, [apiConfig, dispatch]);\n useEffect(() => {\n // fetch it now\n fetchProxiesHooked();\n\n // arm a window on focus listener to refresh it\n const fn = () => {\n if (\n refFetchedTimestamp.current.startAt &&\n Date.now() - refFetchedTimestamp.current.startAt > 3e4 // 30s\n ) {\n fetchProxiesHooked();\n }\n };\n window.addEventListener('focus', fn, false);\n return () => window.removeEventListener('focus', fn, false);\n }, [fetchProxiesHooked]);\n\n const [isSettingsModalOpen, setIsSettingsModalOpen] = useState(false);\n const closeSettingsModal = useCallback(() => {\n setIsSettingsModalOpen(false);\n }, []);\n\n const {\n proxies: { closeModalClosePrevConns, closePrevConnsAndTheModal },\n } = useStoreActions();\n\n return (\n <>\n \n \n \n
\n \n
\n
\n \n
\n \n
\n
\n
\n {groupNames.map((groupName: string) => {\n return (\n
\n \n
\n );\n })}\n
\n \n
\n : }\n onClick={requestDelayAllFn}\n text=\"Test Latency\"\n position={fabPosition}\n />\n \n closePrevConnsAndTheModal(apiConfig)}\n onClickSecondaryButton={closeModalClosePrevConns}\n />\n \n \n );\n}\n\nfunction ColorZap() {\n return (\n \n \n
\n );\n}\n\nconst mapState = (s) => ({\n apiConfig: getClashAPIConfig(s),\n groupNames: getProxyGroupNames(s),\n proxyProviders: getProxyProviders(s),\n delay: getDelay(s),\n showModalClosePrevConns: getShowModalClosePrevConns(s),\n});\n\nexport default connect(mapState)(Proxies);\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"proxy\":\"_5-kOJyYfSn\",\"now\":\"MbWebw2VH4\",\"error\":\"_2dlAYgAIKi\",\"selectable\":\"_3rB1UgDAL6\",\"proxyType\":\"nnjdzHZySt\",\"row\":\"_2E11-huRp7\",\"proxyName\":\"_2Eys6UMXCm\",\"proxySmall\":\"_2rRGWVNOYC\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"header\":\"v5oNKUwcTc\",\"zapWrapper\":\"_2fR1H0ysyY\"};"],"sourceRoot":""} \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/proxies.fe3172e32076eb8749e4.js b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/proxies.fe3172e32076eb8749e4.js deleted file mode 100644 index 09f7aa5cf5..0000000000 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/proxies.fe3172e32076eb8749e4.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{"/Uh6":function(e,t,n){e.exports={proxyLatency:"_1GlyjMFCSf"}},"0tMl":function(e,t,n){e.exports={topBar:"_2adLhYLrrV",topBarRight:"_1gc_yljm7w",textFilterContainer:"_1N0wXB7TV7",group:"_35E6rdJlPT",spining:"_3NWc4-pcFT",spining_keyframes:"_2zZyX5N3wc"}},"5JRb":function(e,t,n){e.exports={labeledInput:"_1tkxMBL44k"}},"9cvt":function(e,t,n){"use strict";n.d(t,"c",(function(){return r}));n("U20h");var a=n("cq0i");n.d(t,"b",(function(){return a.b})),n.d(t,"a",(function(){return a.a}));var r={right:10,bottom:10}},DsEz:function(e,t,n){e.exports={input:"_1I0EXOg8Vu"}},LhcJ:function(e,t,n){"use strict";n.d(t,"a",(function(){return s}));var a=n("ODXe"),r=n("hbEN"),c=n("q1tI"),l=n("dBaT"),o=c.useCallback,i=c.useState,u=c.useMemo;function s(e){var t=Object(l.useRecoilState)(e),n=Object(a.a)(t,2)[1],c=i(""),s=Object(a.a)(c,2),m=s[0],p=s[1],d=u((function(){return Object(r.a)(n,300)}),[n]);return[o((function(e){p(e.target.value),d(e.target.value)}),[d]),m]}},MR5J:function(e,t,n){e.exports={FlexCenter:"_1NNIVhRL-n"}},RL2M:function(e,t,n){e.exports={header:"_2qbBB1Sojw",arrow:"_1iuVspxe4f",isOpen:"_2CN_S7POBQ",btn:"_3504uhlYv5",qty:"_3Vynmp3NK4"}},U20h:function(e,t,n){},UVHL:function(e,t,n){e.exports={select:"_2epoA7G8CQ"}},UmKA:function(e,t,n){e.exports={overlay:"_25Hedjekvk",cnt:"_1tfU5GSa-_",afterOpen:"_2VMuy-HWwC"}},agpB:function(e,t,n){e.exports={updatedAt:"_113att7Ifr",body:"_26mH_RmGnl",actionFooter:"_2cXcxGEUNI",refresh:"_2NjdAt9CvG"}},drH3:function(e,t,n){e.exports={list:"_1pPZyUDtdp",listSummaryView:"_6uXcWV1Myk"}},kCV3:function(e,t,n){"use strict";n.r(t);n("2B1R");var a=n("ODXe"),r=n("q1tI"),c=n.n(r),l=n("ySHw"),o=n("OADI"),i=n("GmYy"),u=n("n57c"),s=n("DKqX"),m=n("iuhU"),p=n("9rZX"),d=n.n(p),f=n("Z9Yo"),v=n.n(f),y=n("UmKA"),b=n.n(y),E=r.useMemo;function h(e){var t=e.isOpen,n=e.onRequestClose,a=e.children,c=E((function(){return{base:Object(m.a)(v.a.content,b.a.cnt),afterOpen:b.a.afterOpen,beforeClose:""}}),[]);return r.createElement(d.a,{isOpen:t,onRequestClose:n,className:c,overlayClassName:Object(m.a)(v.a.overlay,b.a.overlay)},a)}var O=n("9cvt"),C=n("WfPo");function x(e){var t=e.color,n=void 0===t?"currentColor":t,a=e.size,c=void 0===a?24:a;return r.createElement("svg",{fill:"none",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:c,height:c,stroke:n,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("path",{d:"M2 6h9M18.5 6H22"}),r.createElement("circle",{cx:"16",cy:"6",r:"2"}),r.createElement("path",{d:"M22 18h-9M6 18H2"}),r.createElement("circle",{r:"2",transform:"matrix(-1 0 0 1 8 18)"}))}var g=n("MR5J"),w=n.n(g);function k(e){var t=e.children;return r.createElement("div",{className:w.a.FlexCenter},t)}var j=r.useRef,N=r.useEffect;function S(e){var t=e.onClickPrimaryButton,n=e.onClickSecondaryButton,a=j(null),c=j(null);N((function(){a.current.focus()}),[]);return r.createElement("div",{onKeyDown:function(e){39===e.keyCode?c.current.focus():37===e.keyCode&&a.current.focus()}},r.createElement("h2",null,"Close Connections?"),r.createElement("p",null,'Click "Yes" to close those connections that are still using the old selected proxy in this group'),r.createElement("div",{style:{height:30}}),r.createElement(k,null,r.createElement(u.a,{onClick:t,ref:a},"Yes"),r.createElement("div",{style:{width:20}}),r.createElement(u.a,{onClick:n,ref:c},"No")))}var _=n("0tMl"),B=n.n(_),M=n("o0o1"),A=n.n(M),L=(n("ls82"),n("HaE+")),P=n("j7o3"),U=13,R=32,D=n("RL2M"),T=n.n(D),I=n("riol");function H(e){var t=e.name,n=e.type,a=e.toggle,c=e.isOpen,l=e.qty,o=r.useCallback((function(e){e.preventDefault(),e.keyCode!==U&&e.keyCode!==R||a()}),[a]);return r.createElement("div",{className:T.a.header,onClick:a,style:{cursor:"pointer"},tabIndex:0,onKeyDown:o,role:"button"},r.createElement("div",null,r.createElement(I.b,{name:t,type:n})),"number"==typeof l?r.createElement("span",{className:T.a.qty},l):null,r.createElement(u.a,{kind:"minimal",onClick:a,className:T.a.btn},r.createElement("span",{className:Object(m.a)(T.a.arrow,{[T.a.isOpen]:c})},r.createElement(P.a,{size:20}))))}n("TeQF"),n("yXV3"),n("ToJy"),n("EnZy"),n("SYor");var V=n("KQm4"),q=n("dBaT"),K=r.useMemo;var z=function(e,t){if(e&&"number"==typeof e.number&&e.number>0)return e.number;var n=t&&t.type;return n&&i.a.indexOf(n)>-1?-1:999999},F={Natural:function(e){return e},LatencyAsc:function(e,t,n){return e.sort((function(e,a){return z(t[e],n&&n[e])-z(t[a],n&&n[a])}))},LatencyDesc:function(e,t,n){return e.sort((function(e,a){var r=z(t[e],n&&n[e]);return z(t[a],n&&n[a])-r}))},NameAsc:function(e){return e.sort()},NameDesc:function(e){return e.sort((function(e,t){return e>t?-1:e-1)return!0}return!1}))}(l,a)),F[r](l,t,c)}(e,t,n,o,r,c)}),[e,t,n,o,r,c])}var J=n("xKoM"),X=n.n(J),Z=n("wztZ"),G=n.n(Z),W=n("/Uh6"),Q=n.n(W);function $(e){var t=e.number,n=e.color;return r.createElement("span",{className:Q.a.proxyLatency,style:{color:n}},r.createElement("span",null,t," ms"))}var ee=r.useMemo,te="#67c23a",ne="#d4b75c",ae="#e67f3c",re="#909399";function ce(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.number;return 0===t?re:t<200?te:t<400?ne:"number"==typeof t?ae:re}var le=function(e,t){var n=t.name,a=Object(i.e)(e),r=Object(i.d)(e);return{proxy:a[n],latency:r[n]}},oe=Object(C.a)(le)((function(e){var t=e.now,n=e.name,a=e.proxy,c=e.latency,l=e.isSelectable,o=e.onClick,i=ee((function(){return ce(c)}),[c]),u=r.useCallback((function(){l&&o&&o(n)}),[n,o,l]),s=r.useCallback((function(e){e.keyCode===U&&u()}),[u]),p=ee((function(){return Object(m.a)(G.a.proxy,{[G.a.now]:t,[G.a.error]:c&&c.error,[G.a.selectable]:l})}),[l,t,c]);return r.createElement("div",{tabIndex:0,className:p,onClick:u,onKeyDown:s,role:l?"menuitem":""},r.createElement("div",{className:G.a.proxyName},n),r.createElement("div",{className:G.a.row},r.createElement("span",{className:G.a.proxyType,style:{opacity:t?.6:.2}},a.type),c&&c.number?r.createElement($,{number:c.number,color:i}):null))})),ie=Object(C.a)(le)((function(e){var t=e.now,n=e.name,a=e.proxy,c=e.latency,l=e.isSelectable,o=e.onClick,u=ee((function(){return function(e,t){return i.a.indexOf(t)>-1?"linear-gradient(135deg, white 15%, #999 15% 30%, white 30% 45%, #999 45% 60%, white 60% 75%, #999 75% 90%, white 90% 100%)":ce(e)}(c,a.type)}),[c,a]),s=ee((function(){var e=n;return c&&"number"==typeof c.number&&(e+=" "+c.number+" ms"),e}),[n,c]),p=r.useCallback((function(){l&&o&&o(n)}),[n,o,l]),d=ee((function(){return Object(m.a)(G.a.proxySmall,{[G.a.now]:t,[G.a.selectable]:l})}),[l,t]),f=r.useCallback((function(e){e.keyCode===U&&p()}),[p]);return r.createElement("div",{title:s,className:d,style:{background:u},onClick:p,onKeyDown:f,role:l?"menuitem":""})})),ue=n("drH3"),se=n.n(ue);function me(e){var t=e.all,n=e.now,a=e.isSelectable,c=e.itemOnTapCallback,l=t;return r.createElement("div",{className:se.a.list},l.map((function(e){return r.createElement(oe,{key:e,onClick:c,isSelectable:a,name:e,now:e===n})})))}function pe(e){var t=e.all,n=e.now,a=e.isSelectable,c=e.itemOnTapCallback;return r.createElement("div",{className:se.a.listSummaryView},t.map((function(e){return r.createElement(ie,{key:e,onClick:c,isSelectable:a,name:e,now:e===n})})))}var de=r.createElement,fe=r.useCallback,ve=r.useMemo,ye=r.useState;function be(){return r.createElement("div",{className:X.a.zapWrapper},r.createElement(l.a,{size:16}))}var Ee=Object(C.a)((function(e,t){var n=t.name,a=t.delay,r=Object(i.e)(e),c=Object(o.d)(e),l=Object(o.g)(e),u=Object(o.e)(e),s=r[n];return{all:s.all,delay:a,hideUnavailableProxies:u,proxySortBy:l,proxies:r,type:s.type,now:s.now,isOpen:c["proxyGroup:"+n]}}))((function(e){var t=e.name,n=e.all,c=e.delay,l=e.hideUnavailableProxies,o=e.proxySortBy,s=e.proxies,m=e.type,p=e.now,d=e.isOpen,f=e.apiConfig,v=e.dispatch,y=Y(n,c,l,o,s),b=ve((function(){return"Selector"===m}),[m]),E=Object(C.c)(),h=E.app.updateCollapsibleIsOpen,O=E.proxies.requestDelayForProxies,x=fe((function(){h("proxyGroup",t,!d)}),[d,h,t]),g=fe((function(e){b&&v(Object(i.m)(f,t,e))}),[f,v,t,b]),w=ye(!1),k=Object(a.a)(w,2),j=k[0],N=k[1],S=fe(Object(L.a)(A.a.mark((function e(){return A.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return N(!0),e.prev=1,e.next=4,O(f,y);case 4:e.next=8;break;case 6:e.prev=6,e.t0=e.catch(1);case 8:N(!1);case 9:case"end":return e.stop()}}),e,null,[[1,6]])}))),[y,f,O]);return r.createElement("div",{className:X.a.group},r.createElement("div",{style:{display:"flex",alignItems:"center"}},r.createElement(H,{name:t,type:m,toggle:x,qty:y.length,isOpen:d}),r.createElement(u.a,{kind:"minimal",onClick:S,isLoading:j},r.createElement(be,null))),de(d?me:pe,{all:y,now:p,isSelectable:b,itemOnTapCallback:g}))})),he=n("FVam"),Oe=n("ZMKu"),Ce=n("OAQO"),xe=n("bdgK"),ge=c.a.memo,we=c.a.useState,ke=c.a.useRef,je=c.a.useEffect;var Ne={initialOpen:{height:"auto",transition:{duration:0}},open:function(e){return{height:e,opacity:1,visibility:"visible",transition:{duration:.3}}},closed:{height:0,opacity:0,visibility:"hidden",transition:{duration:.3}}},Se={open:{x:0},closed:{x:20}},_e=ge((function(e){var t,n,r=e.children,l=e.isOpen,o=(t=l,n=ke(),je((function(){n.current=t}),[t]),n.current),i=function(){var e=ke(),t=we({height:0}),n=Object(a.a)(t,2),r=n[0],c=n[1];return je((function(){var t=new xe.a((function(e){var t=Object(a.a)(e,1)[0];return c(t.contentRect)}));return e.current&&t.observe(e.current),function(){return t.disconnect()}}),[]),[e,r]}(),u=Object(a.a)(i,2),s=u[0],m=u[1].height;return c.a.createElement("div",null,c.a.createElement(Oe.a.div,{animate:l&&o===l?"initialOpen":l?"open":"closed",custom:m,variants:Ne},c.a.createElement(Oe.a.div,{variants:Se,ref:s},r)))})),Be=n("agpB"),Me=n.n(Be),Ae=r.useState,Le=r.useCallback;var Pe={rest:{scale:1},pressed:{scale:.95}},Ue={rest:{rotate:0},hover:{rotate:360,transition:{duration:.3}}};function Re(){return r.createElement(Oe.a.div,{className:Me.a.refresh,variants:Pe,initial:"rest",whileHover:"hover",whileTap:"pressed"},r.createElement(Oe.a.div,{className:"flexCenter",variants:Ue},r.createElement(Ce.a,{size:16})))}var De=Object(C.a)((function(e,t){var n=t.proxies,a=t.name,r=Object(o.e)(e),c=Object(i.d)(e),l=Object(o.d)(e);return{apiConfig:Object(o.c)(e),proxies:n,delay:c,hideUnavailableProxies:r,proxySortBy:Object(o.g)(e),isOpen:l["proxyProvider:"+a]}}))((function(e){var t=e.name,n=e.proxies,c=e.delay,o=e.hideUnavailableProxies,s=e.proxySortBy,m=e.vehicleType,p=e.updatedAt,d=e.isOpen,f=e.dispatch,v=e.apiConfig,y=Y(n,c,o,s),b=Ae(!1),E=Object(a.a)(b,2),h=E[0],O=E[1],x=Le((function(){return f(Object(i.n)(v,t))}),[v,f,t]),g=Le(Object(L.a)(A.a.mark((function e(){return A.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return O(!0),e.next=3,f(Object(i.i)(v,t));case 3:O(!1);case 4:case"end":return e.stop()}}),e)}))),[v,f,t,O]),w=Object(C.c)().app.updateCollapsibleIsOpen,k=Le((function(){w("proxyProvider",t,!d)}),[d,w,t]),j=Object(he.a)(new Date(p),new Date);return r.createElement("div",{className:Me.a.body},r.createElement(H,{name:t,toggle:k,type:m,isOpen:d,qty:y.length}),r.createElement("div",{className:Me.a.updatedAt},r.createElement("small",null,"Updated ",j," ago")),r.createElement(_e,{isOpen:d},r.createElement(me,{all:y}),r.createElement("div",{className:Me.a.actionFooter},r.createElement(u.a,{text:"Update",start:r.createElement(Re,null),onClick:x}),r.createElement(u.a,{text:"Health Check",start:r.createElement(l.a,{size:16}),onClick:g,isLoading:h}))),r.createElement(_e,{isOpen:!d},r.createElement(pe,{all:y})))}));function Te(e){var t=e.items;return 0===t.length?null:r.createElement(r.Fragment,null,r.createElement(s.a,{title:"Proxy Provider"}),r.createElement("div",null,t.map((function(e){return r.createElement(De,{key:e.name,name:e.name,proxies:e.proxies,type:e.type,vehicleType:e.vehicleType,updatedAt:e.updatedAt})}))))}var Ie=n("UVHL"),He=n.n(Ie);function Ve(e){var t=e.options,n=e.selected,c=e.onChange;return r.createElement("select",{className:He.a.select,value:n,onChange:c},t.map((function(e){var t=Object(a.a)(e,2),n=t[0],c=t[1];return r.createElement("option",{key:n,value:n},c)})))}var qe=n("hkBY"),Ke=n("5JRb"),ze=n.n(Ke),Fe=[["Natural","Original order in config file"],["LatencyAsc","By latency from small to big"],["LatencyDesc","By latency from big to small"],["NameAsc","By name alphabetically (A-Z)"],["NameDesc","By name alphabetically (Z-A)"]],Ye=r.useCallback;var Je=Object(C.a)((function(e){return{appConfig:{proxySortBy:Object(o.g)(e),hideUnavailableProxies:Object(o.e)(e),autoCloseOldConns:Object(o.b)(e)}}}))((function(e){var t=e.appConfig,n=Object(C.c)().app.updateAppConfig,a=Ye((function(e){n("proxySortBy",e.target.value)}),[n]),c=Ye((function(e){n("hideUnavailableProxies",e)}),[n]);return r.createElement(r.Fragment,null,r.createElement("div",{className:ze.a.labeledInput},r.createElement("span",null,"Sorting in group"),r.createElement("div",null,r.createElement(Ve,{options:Fe,selected:t.proxySortBy,onChange:a}))),r.createElement("hr",null),r.createElement("div",{className:ze.a.labeledInput},r.createElement("span",null,"Hide unavailable proxies"),r.createElement("div",null,r.createElement(qe.a,{name:"hideUnavailableProxies",checked:t.hideUnavailableProxies,onChange:c}))),r.createElement("div",{className:ze.a.labeledInput},r.createElement("span",null,"Automatically close old connections"),r.createElement("div",null,r.createElement(qe.a,{name:"autoCloseOldConns",checked:t.autoCloseOldConns,onChange:function(e){return n("autoCloseOldConns",e)}}))))})),Xe=n("LhcJ"),Ze=n("DsEz"),Ge=n.n(Ze);function We(){var e=Object(Xe.a)(i.k),t=Object(a.a)(e,2),n=t[0],c=t[1];return r.createElement("input",{className:Ge.a.input,type:"text",value:c,onChange:n})}var Qe=r.useState,$e=r.useEffect,et=r.useCallback,tt=r.useRef;function nt(){return r.createElement("div",{className:B.a.spining,style:{width:48,height:48,display:"flex",justifyContent:"center",alignItems:"center"}},r.createElement(l.a,{width:16,height:16}))}t.default=Object(C.a)((function(e){return{apiConfig:Object(o.c)(e),groupNames:Object(i.f)(e),proxyProviders:Object(i.g)(e),delay:Object(i.d)(e),showModalClosePrevConns:Object(i.h)(e)}}))((function(e){var t=e.dispatch,n=e.groupNames,c=e.delay,o=e.proxyProviders,m=e.apiConfig,p=e.showModalClosePrevConns,d=tt({}),f=Qe(!1),v=Object(a.a)(f,2),y=v[0],b=v[1],E=et((function(){y||(b(!0),t(Object(i.l)(m)).then((function(){return b(!1)}),(function(){return b(!1)})))}),[m,t,y]),g=et((function(){d.current.startAt=Date.now(),t(Object(i.c)(m)).then((function(){d.current.completeAt=Date.now()}))}),[m,t]);$e((function(){g();var e=function(){d.current.startAt&&Date.now()-d.current.startAt>3e4&&g()};return window.addEventListener("focus",e,!1),function(){return window.removeEventListener("focus",e,!1)}}),[g]);var w=Qe(!1),k=Object(a.a)(w,2),j=k[0],N=k[1],_=et((function(){N(!1)}),[]),M=Object(C.c)().proxies,A=M.closeModalClosePrevConns,L=M.closePrevConnsAndTheModal;return r.createElement(r.Fragment,null,r.createElement(h,{isOpen:j,onRequestClose:_},r.createElement(Je,null)),r.createElement("div",{className:B.a.topBar},r.createElement(s.a,{title:"Proxies"}),r.createElement("div",{className:B.a.topBarRight},r.createElement("div",{className:B.a.textFilterContainer},r.createElement(We,null)),r.createElement(u.a,{kind:"minimal",onClick:function(){return N(!0)}},r.createElement(x,{size:16})))),r.createElement("div",null,n.map((function(e){return r.createElement("div",{className:B.a.group,key:e},r.createElement(Ee,{name:e,delay:c,apiConfig:m,dispatch:t}))}))),r.createElement(Te,{items:o}),r.createElement("div",{style:{height:60}}),r.createElement(O.b,{icon:y?r.createElement(nt,null):r.createElement(l.a,{width:16,height:16}),onClick:E,text:"Test Latency",position:O.c}),r.createElement(h,{isOpen:p,onRequestClose:A},r.createElement(S,{onClickPrimaryButton:function(){return L(m)},onClickSecondaryButton:A})))}))},wztZ:function(e,t,n){e.exports={proxy:"_5-kOJyYfSn",now:"MbWebw2VH4",error:"_2dlAYgAIKi",selectable:"_3rB1UgDAL6",proxyType:"nnjdzHZySt",row:"_2E11-huRp7",proxyName:"_2Eys6UMXCm",proxySmall:"_2rRGWVNOYC"}},xKoM:function(e,t,n){e.exports={header:"v5oNKUwcTc",zapWrapper:"_2fR1H0ysyY"}}}]); \ No newline at end of file diff --git a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/react~app.85a6af7ab221658559e3.js b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/react~app.85a6af7ab221658559e3.js index 746a0330c8..e15914934b 100644 --- a/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/react~app.85a6af7ab221658559e3.js +++ b/package/ctcgfw/luci-app-openclash/files/usr/share/openclash/yacd/react~app.85a6af7ab221658559e3.js @@ -1,2 +1,3 @@ /*! For license information please see react~app.85a6af7ab221658559e3.js.LICENSE.txt */ -(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{i8i4:function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n("yl30")},q1tI:function(e,t,n){"use strict";e.exports=n("viRO")},viRO:function(e,t,n){"use strict";var r=n("MgzW"),l="function"==typeof Symbol&&Symbol.for,i=l?Symbol.for("react.element"):60103,a=l?Symbol.for("react.portal"):60106,o=l?Symbol.for("react.fragment"):60107,u=l?Symbol.for("react.strict_mode"):60108,c=l?Symbol.for("react.profiler"):60114,s=l?Symbol.for("react.provider"):60109,f=l?Symbol.for("react.context"):60110,d=l?Symbol.for("react.forward_ref"):60112,p=l?Symbol.for("react.suspense"):60113,m=l?Symbol.for("react.suspense_list"):60120,h=l?Symbol.for("react.memo"):60115,g=l?Symbol.for("react.lazy"):60116,v=l?Symbol.for("react.chunk"):60121;l&&Symbol.for("react.fundamental"),l&&Symbol.for("react.responder"),l&&Symbol.for("react.scope");var y="function"==typeof Symbol&&Symbol.iterator;function b(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;nR.length&&R.push(e)}function D(e,t,n){return null==e?0:function e(t,n,r,l){var o=typeof t;"undefined"!==o&&"boolean"!==o||(t=null);var u=!1;if(null===t)u=!0;else switch(o){case"string":case"number":u=!0;break;case"object":switch(t.$$typeof){case i:case a:u=!0}}if(u)return r(l,t,""===n?"."+F(t,0):n),1;if(u=0,n=""===n?".":n+":",Array.isArray(t))for(var c=0;c