Просмотр исходного кода

Merge branch 'agile' of github.com:iapt-platform/mint into agile

Jeremy Zheng 2 лет назад
Родитель
Сommit
dd9310be56
32 измененных файлов с 7595 добавлено и 485 удалено
  1. 3 0
      dashboard/package.json
  2. 3 3
      dashboard/src/components/admin/relation/DataImport.tsx
  3. 25 0
      dashboard/src/components/api/Article.ts
  4. 1 1
      dashboard/src/components/api/Attachments.ts
  5. 16 0
      dashboard/src/components/article/Article.tsx
  6. 73 0
      dashboard/src/components/article/NavigateButton.tsx
  7. 155 0
      dashboard/src/components/article/TypePage.tsx
  8. 9 0
      dashboard/src/components/article/TypePali.tsx
  9. 0 1
      dashboard/src/components/article/TypeTerm.tsx
  10. 111 44
      dashboard/src/components/fts/FtsBookList.tsx
  11. 40 21
      dashboard/src/components/fts/PageNumberList.tsx
  12. 278 282
      dashboard/src/components/fts/book_name.csv
  13. 304 44
      dashboard/src/components/fts/book_name.json
  14. 304 44
      dashboard/src/components/fts/book_name.ts
  15. 3 3
      dashboard/src/components/fts/search.css
  16. 38 4
      dashboard/src/components/template/Article.tsx
  17. 7 1
      dashboard/src/components/template/MdTpl.tsx
  18. 7 10
      dashboard/src/components/template/MdView.tsx
  19. 59 13
      dashboard/src/components/template/ParaHandle.tsx
  20. 88 0
      dashboard/src/components/template/ParaShell.tsx
  21. 63 0
      dashboard/src/components/template/QuoteLink.tsx
  22. 7 5
      dashboard/src/components/template/Term.tsx
  23. 1 2
      dashboard/src/components/term/TermEdit.tsx
  24. 1 1
      dashboard/src/components/term/TermExport.tsx
  25. 5946 0
      dashboard/src/gfwlist.ts
  26. 4 0
      dashboard/src/locales/zh-Hans/label.ts
  27. 2 3
      dashboard/src/pages/library/article/show.tsx
  28. 2 2
      dashboard/src/pages/library/search/search.tsx
  29. 30 0
      dashboard/src/reducers/focus.ts
  30. 2 0
      dashboard/src/store.ts
  31. 12 0
      openapi/public/assets/protocol/resources/sentence/index.yaml
  32. 1 1
      rpc/morus/morus/server.php

+ 3 - 0
dashboard/package.json

@@ -94,5 +94,8 @@
       "last 1 firefox version",
       "last 1 firefox version",
       "last 1 safari version"
       "last 1 safari version"
     ]
     ]
+  },
+  "devDependencies": {
+    "@babel/plugin-proposal-private-property-in-object": "^7.21.11"
   }
   }
 }
 }

+ 3 - 3
dashboard/src/components/admin/relation/DataImport.tsx

@@ -48,7 +48,7 @@ const DataImportWidget = ({
       }}
       }}
       submitTimeout={2000}
       submitTimeout={2000}
       onFinish={async (values) => {
       onFinish={async (values) => {
-        console.log(values);
+        console.log("values", values);
         let _filename: string = "";
         let _filename: string = "";
 
 
         if (
         if (
@@ -59,7 +59,7 @@ const DataImportWidget = ({
         } else if (typeof values.filename[0].response === "undefined") {
         } else if (typeof values.filename[0].response === "undefined") {
           _filename = values.filename[0].uid;
           _filename = values.filename[0].uid;
         } else {
         } else {
-          _filename = values.filename[0].response.data.url;
+          _filename = values.filename[0].response.data.filename;
         }
         }
 
 
         const queryUrl = `${url}?filename=${_filename}&${urlExtra}`;
         const queryUrl = `${url}?filename=${_filename}&${urlExtra}`;
@@ -91,7 +91,7 @@ const DataImportWidget = ({
         fieldProps={{
         fieldProps={{
           name: "file",
           name: "file",
         }}
         }}
-        action={`${API_HOST}/api/v2/attachments`}
+        action={`${API_HOST}/api/v2/attachments?is_tmp=true`}
       />
       />
     </ModalForm>
     </ModalForm>
   );
   );

+ 25 - 0
dashboard/src/components/api/Article.ts

@@ -178,3 +178,28 @@ export interface IDeleteResponse {
   message: string;
   message: string;
   data: number;
   data: number;
 }
 }
+
+export interface IPageNavResponse {
+  ok: boolean;
+  data: IPageNavData;
+  message: string;
+}
+
+export interface IPageNavData {
+  curr: IPageNavItem;
+  prev: IPageNavItem;
+  next: IPageNavItem;
+}
+
+export interface IPageNavItem {
+  id: number;
+  type: string;
+  volume: number;
+  page: number;
+  book: number;
+  paragraph: number;
+  wid: number;
+  pcd_book_id: number;
+  created_at: string;
+  updated_at: string;
+}

+ 1 - 1
dashboard/src/components/api/Attachments.ts

@@ -1,6 +1,6 @@
 export interface IAttachmentRequest {
 export interface IAttachmentRequest {
   id: string;
   id: string;
-  name: string;
+  filename: string;
   size: number;
   size: number;
   content_type: string;
   content_type: string;
   url: string;
   url: string;

+ 16 - 0
dashboard/src/components/article/Article.tsx

@@ -4,6 +4,7 @@ import TypeAnthology from "./TypeAnthology";
 import TypeTerm from "./TypeTerm";
 import TypeTerm from "./TypeTerm";
 import TypePali from "./TypePali";
 import TypePali from "./TypePali";
 import "./article.css";
 import "./article.css";
+import TypePage from "./TypePage";
 
 
 export type ArticleMode = "read" | "edit" | "wbw";
 export type ArticleMode = "read" | "edit" | "wbw";
 export type ArticleType =
 export type ArticleType =
@@ -49,6 +50,7 @@ interface IWidget {
   exerciseId?: string;
   exerciseId?: string;
   userName?: string;
   userName?: string;
   active?: boolean;
   active?: boolean;
+  focus?: string | null;
   onArticleChange?: Function;
   onArticleChange?: Function;
   onFinal?: Function;
   onFinal?: Function;
   onLoad?: Function;
   onLoad?: Function;
@@ -66,6 +68,7 @@ const ArticleWidget = ({
   userName,
   userName,
   mode = "read",
   mode = "read",
   active = false,
   active = false,
+  focus,
   onArticleChange,
   onArticleChange,
   onFinal,
   onFinal,
   onLoad,
   onLoad,
@@ -127,6 +130,19 @@ const ArticleWidget = ({
           mode={mode}
           mode={mode}
           book={book}
           book={book}
           para={para}
           para={para}
+          focus={focus}
+          onArticleChange={(type: ArticleType, id: string) => {
+            if (typeof onArticleChange !== "undefined") {
+              onArticleChange(type, id);
+            }
+          }}
+        />
+      ) : type === "page" ? (
+        <TypePage
+          articleId={articleId}
+          channelId={channelId}
+          focus={focus}
+          mode={mode}
           onArticleChange={(type: ArticleType, id: string) => {
           onArticleChange={(type: ArticleType, id: string) => {
             if (typeof onArticleChange !== "undefined") {
             if (typeof onArticleChange !== "undefined") {
               onArticleChange(type, id);
               onArticleChange(type, id);

+ 73 - 0
dashboard/src/components/article/NavigateButton.tsx

@@ -0,0 +1,73 @@
+import { Button, Space, Typography } from "antd";
+import { DoubleRightOutlined, DoubleLeftOutlined } from "@ant-design/icons";
+
+const { Paragraph, Text } = Typography;
+
+const EllipsisMiddle: React.FC<{
+  suffixCount: number;
+  maxWidth: number;
+  children?: string;
+}> = ({ suffixCount, maxWidth = 500, children = "" }) => {
+  const start = children.slice(0, children.length - suffixCount).trim();
+  const suffix = children.slice(-suffixCount).trim();
+  return (
+    <Text style={{ maxWidth: maxWidth }} ellipsis={{ suffix }}>
+      {start}
+    </Text>
+  );
+};
+
+interface IWidget {
+  title?: string;
+  prevTitle?: string;
+  nextTitle?: string;
+  onPrev?: Function;
+  onNext?: Function;
+}
+const NavigateButtonWidget = ({
+  title,
+  prevTitle,
+  nextTitle,
+  onPrev,
+  onNext,
+}: IWidget) => {
+  return (
+    <Paragraph style={{ display: "flex", justifyContent: "space-between" }}>
+      <Button
+        disabled={typeof prevTitle === "undefined"}
+        size="large"
+        onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) => {
+          if (typeof onPrev !== "undefined") {
+            onPrev(event);
+          }
+        }}
+      >
+        <Space>
+          <DoubleLeftOutlined />
+          <EllipsisMiddle maxWidth={300} suffixCount={7}>
+            {prevTitle}
+          </EllipsisMiddle>
+        </Space>
+      </Button>
+      <Text>{title}</Text>
+      <Button
+        size="large"
+        disabled={typeof nextTitle === "undefined"}
+        onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) => {
+          if (typeof onNext !== "undefined") {
+            onNext(event);
+          }
+        }}
+      >
+        <Space>
+          <EllipsisMiddle maxWidth={300} suffixCount={7}>
+            {nextTitle}
+          </EllipsisMiddle>
+          <DoubleRightOutlined />
+        </Space>
+      </Button>
+    </Paragraph>
+  );
+};
+
+export default NavigateButtonWidget;

+ 155 - 0
dashboard/src/components/article/TypePage.tsx

@@ -0,0 +1,155 @@
+import { useEffect, useState } from "react";
+
+import { get } from "../../request";
+import { IPageNavData, IPageNavResponse } from "../api/Article";
+
+import { ArticleMode, ArticleType } from "./Article";
+import "./article.css";
+import { message } from "antd";
+
+import { bookName } from "../fts/book_name";
+import TypePali from "./TypePali";
+import NavigateButton from "./NavigateButton";
+
+interface IParam {
+  articleId?: string;
+  mode?: ArticleMode | null;
+  channelId?: string | null;
+  book?: string | null;
+  para?: string | null;
+}
+interface IWidget {
+  articleId?: string;
+  mode?: ArticleMode | null;
+  channelId?: string | null;
+  focus?: string | null;
+  onArticleChange?: Function;
+  onFinal?: Function;
+  onLoad?: Function;
+}
+const TypeTermWidget = ({
+  channelId,
+  articleId,
+  focus,
+  mode = "read",
+  onArticleChange,
+}: IWidget) => {
+  /**
+   * 页面加载
+   * M 缅文页码
+   * P PTS页码
+   * V vri页码
+   * T 泰文页码
+   * O 其他
+   * para 缅文段落号
+   * url 格式 /article/page/M-dīghanikāya-2-10
+   * 书名在 dashboard\src\components\fts\book_name.ts
+   */
+
+  const [paramPali, setParamPali] = useState<IParam>();
+  const [nav, setNav] = useState<IPageNavData>();
+
+  useEffect(() => {
+    if (typeof articleId === "undefined") {
+      return;
+    }
+
+    const pageParam = articleId.split("_");
+    if (pageParam.length < 4) {
+      return;
+    }
+    //查询书号
+    const booksId = bookName
+      .filter((value) => value.term === pageParam[1])
+      .map((item) => item.id)
+      .join("_");
+    const url = `/v2/nav-page/${pageParam[0].toUpperCase()}-${booksId}-${
+      pageParam[2]
+    }-${pageParam[3]}`;
+
+    console.log("url", url);
+    get<IPageNavResponse>(url)
+      .then((json) => {
+        if (json.ok) {
+          const data = json.data;
+          setNav(data);
+          const begin = data.curr.paragraph;
+          const end = data.next.paragraph;
+          let para: number[] = [];
+          for (let index = begin; index <= end; index++) {
+            para.push(index);
+          }
+          setParamPali({
+            articleId: `${data.curr.book}-${data.curr.paragraph}`,
+            book: data.curr.book.toString(),
+            para: para.join(),
+            mode: mode,
+            channelId: channelId,
+          });
+        } else {
+          message.error(json.message);
+        }
+      })
+      .finally(() => {})
+      .catch((e) => {
+        console.error(e);
+      });
+  }, [articleId, channelId, mode]);
+
+  return (
+    <div>
+      {paramPali ? (
+        <>
+          <TypePali
+            type={"para"}
+            {...paramPali}
+            focus={focus}
+            onArticleChange={(type: ArticleType, id: string) => {
+              if (typeof onArticleChange !== "undefined") {
+                onArticleChange(type, id);
+              }
+            }}
+          />
+          <NavigateButton
+            prevTitle={nav?.prev.page.toString()}
+            nextTitle={nav?.next.page.toString()}
+            onNext={() => {
+              if (typeof onArticleChange !== "undefined") {
+                if (typeof articleId === "undefined") {
+                  return;
+                }
+                const pageParam = articleId.split("_");
+                if (pageParam.length < 4) {
+                  return;
+                }
+                const id = `${pageParam[0]}-${pageParam[1]}-${pageParam[2]}-${
+                  parseInt(pageParam[3]) + 1
+                }`;
+                onArticleChange("page", id);
+              }
+            }}
+            onPrev={() => {
+              if (typeof onArticleChange !== "undefined") {
+                if (typeof articleId === "undefined") {
+                  return;
+                }
+                const pageParam = articleId.split("_");
+                if (pageParam.length < 4) {
+                  return;
+                }
+                const id = `${pageParam[0]}-${pageParam[1]}-${pageParam[2]}-${
+                  parseInt(pageParam[3]) - 1
+                }`;
+                onArticleChange("page", id);
+              }
+            }}
+          />
+        </>
+      ) : (
+        <>loading</>
+      )}
+    </div>
+  );
+};
+
+export default TypeTermWidget;

+ 9 - 0
dashboard/src/components/article/TypePali.tsx

@@ -12,6 +12,8 @@ import { ArticleMode, ArticleType } from "./Article";
 import "./article.css";
 import "./article.css";
 import ArticleSkeleton from "./ArticleSkeleton";
 import ArticleSkeleton from "./ArticleSkeleton";
 import ErrorResult from "../general/ErrorResult";
 import ErrorResult from "../general/ErrorResult";
+import store from "../../store";
+import { refresh } from "../../reducers/focus";
 
 
 interface IWidget {
 interface IWidget {
   type?: ArticleType;
   type?: ArticleType;
@@ -21,6 +23,7 @@ interface IWidget {
   book?: string | null;
   book?: string | null;
   para?: string | null;
   para?: string | null;
   active?: boolean;
   active?: boolean;
+  focus?: string | null;
   onArticleChange?: Function;
   onArticleChange?: Function;
   onFinal?: Function;
   onFinal?: Function;
   onLoad?: Function;
   onLoad?: Function;
@@ -33,6 +36,7 @@ const TypePaliWidget = ({
   articleId,
   articleId,
   mode = "read",
   mode = "read",
   active = true,
   active = true,
+  focus,
   onArticleChange,
   onArticleChange,
   onFinal,
   onFinal,
   onLoad,
   onLoad,
@@ -48,6 +52,11 @@ const TypePaliWidget = ({
   const channels = channelId?.split("_");
   const channels = channelId?.split("_");
 
 
   const srcDataMode = mode === "edit" || mode === "wbw" ? "edit" : "read";
   const srcDataMode = mode === "edit" || mode === "wbw" ? "edit" : "read";
+
+  useEffect(() => {
+    store.dispatch(refresh({ type: "para", id: focus }));
+  }, [focus]);
+
   useEffect(() => {
   useEffect(() => {
     console.log("srcDataMode", srcDataMode);
     console.log("srcDataMode", srcDataMode);
     if (!active) {
     if (!active) {

+ 0 - 1
dashboard/src/components/article/TypeTerm.tsx

@@ -86,7 +86,6 @@ const TypeTermWidget = ({
         <ErrorResult code={errorCode} />
         <ErrorResult code={errorCode} />
       ) : (
       ) : (
         <>
         <>
-          {" "}
           <ArticleView
           <ArticleView
             id={articleData?.uid}
             id={articleData?.uid}
             title={articleData?.title}
             title={articleData?.title}

+ 111 - 44
dashboard/src/components/fts/FtsBookList.tsx

@@ -1,8 +1,10 @@
-import { Badge, List } from "antd";
+import { Badge, Card, Space, Tree, Typography } from "antd";
 import { useEffect, useState } from "react";
 import { useEffect, useState } from "react";
 
 
 import { get } from "../../request";
 import { get } from "../../request";
-
+import { Key } from "antd/es/table/interface";
+import { DataNode } from "antd/es/tree";
+const { Text } = Typography;
 interface IFtsData {
 interface IFtsData {
   book: number;
   book: number;
   paragraph: number;
   paragraph: number;
@@ -54,11 +56,31 @@ const FtsBookListWidget = ({
   view = "pali",
   view = "pali",
   onSelect,
   onSelect,
 }: IWidget) => {
 }: IWidget) => {
-  const [ftsData, setFtsData] = useState<IFtsItem[]>();
+  const [treeData, setTreeData] = useState<DataNode[]>();
   const [total, setTotal] = useState<number>();
   const [total, setTotal] = useState<number>();
+  const [checkedKeys, setCheckedKeys] = useState<
+    | {
+        checked: Key[];
+        halfChecked: Key[];
+      }
+    | Key[]
+  >([0]);
+  const [selectedKeys, setSelectedKeys] = useState<React.Key[]>([]);
+  const [expandedKeys, setExpandedKeys] = useState<React.Key[]>(["all"]);
 
 
   const focusBooks = bookId?.split(",");
   const focusBooks = bookId?.split(",");
   console.log("focusBooks", focusBooks);
   console.log("focusBooks", focusBooks);
+
+  useEffect(() => {
+    const currBooks = bookId?.split(",").map((item) => parseInt(item));
+    if (currBooks) {
+      console.log("currBooks", currBooks);
+      setCheckedKeys(currBooks);
+      setSelectedKeys(currBooks);
+      setExpandedKeys(["all"]);
+    }
+  }, [bookId, treeData]);
+
   useEffect(() => {
   useEffect(() => {
     let words;
     let words;
     let api = "";
     let api = "";
@@ -85,56 +107,101 @@ const FtsBookListWidget = ({
         for (const iterator of json.data.rows) {
         for (const iterator of json.data.rows) {
           totalResult += iterator.count;
           totalResult += iterator.count;
         }
         }
-        const result: IFtsItem[] = json.data.rows.map((item) => {
-          return item;
-        });
-        setFtsData([
+
+        setTreeData([
           {
           {
-            book: 0,
-            paragraph: 0,
-            title: "全部",
-            pcdBookId: 0,
-            count: totalResult,
+            key: "all",
+            title: "all " + totalResult + "个单词",
+            children: json.data.rows.map((item, id) => {
+              const title = item.title ? item.title : item.paliTitle;
+              return {
+                key: item.pcdBookId,
+                title: (
+                  <Space>
+                    <Text
+                      style={{ whiteSpace: "nowrap", width: 200 }}
+                      ellipsis={{ tooltip: { title } }}
+                    >
+                      {id + 1}.{title}
+                    </Text>
+                    <Badge size="small" color="geekblue" count={item.count} />
+                  </Space>
+                ),
+              };
+            }),
           },
           },
-          ...result,
         ]);
         ]);
+
         setTotal(json.data.count);
         setTotal(json.data.count);
       }
       }
     });
     });
   }, [keyWord, keyWords, match, tags, view]);
   }, [keyWord, keyWords, match, tags, view]);
+
+  const onExpand = (expandedKeysValue: React.Key[]) => {
+    console.log("onExpand", expandedKeysValue);
+    // if not set autoExpandParent to false, if children expanded, parent can not collapse.
+    // or, you can remove all expanded children keys.
+    setExpandedKeys(expandedKeysValue);
+  };
+
+  const onCheck = (
+    checked:
+      | {
+          checked: Key[];
+          halfChecked: Key[];
+        }
+      | Key[]
+  ) => {
+    console.log("onCheck", checked);
+    setCheckedKeys(checked);
+    if (typeof onSelect !== "undefined") {
+      onSelect(checked.toString());
+    }
+  };
+
   return (
   return (
-    <List
-      header={`总计:` + total}
-      itemLayout="vertical"
-      size="small"
-      dataSource={ftsData}
-      renderItem={(item, id) => (
-        <List.Item>
-          <div
-            style={{
-              padding: 4,
-              borderRadius: 4,
-              display: "flex",
-              justifyContent: "space-between",
-              cursor: "pointer",
-              backgroundColor: focusBooks?.includes(item.pcdBookId.toString())
-                ? "lightblue"
-                : "unset",
-            }}
-            onClick={() => {
-              if (typeof onSelect !== "undefined") {
-                onSelect(item.pcdBookId);
+    <div style={{ padding: 4 }}>
+      <Card
+        size="small"
+        title={
+          <Space>
+            {"总计"}
+            <Badge
+              size="small"
+              count={total}
+              overflowCount={999}
+              color="lime"
+            />
+            {"本书"}
+          </Space>
+        }
+      >
+        <Tree
+          checkable
+          defaultExpandAll
+          onExpand={onExpand}
+          onCheck={onCheck}
+          checkedKeys={checkedKeys}
+          expandedKeys={expandedKeys}
+          onSelect={(selectedKeysValue: React.Key[], info: any) => {
+            console.log("onSelect", selectedKeysValue);
+            setSelectedKeys(selectedKeysValue);
+            setCheckedKeys(selectedKeysValue);
+            if (typeof onSelect !== "undefined") {
+              if (selectedKeysValue.length > 0) {
+                if (selectedKeysValue[0] === "all") {
+                  onSelect(0);
+                } else {
+                  onSelect(selectedKeysValue[0]);
+                }
               }
               }
-            }}
-          >
-            <span>
-              {id + 1}.{item.title ? item.title : item.paliTitle}
-            </span>
-            <Badge color="geekblue" count={item.count} />
-          </div>
-        </List.Item>
-      )}
-    />
+            }
+          }}
+          selectedKeys={selectedKeys}
+          treeData={treeData}
+        />
+      </Card>
+    </div>
   );
   );
 };
 };
 
 

+ 40 - 21
dashboard/src/components/fts/PageNumberList.tsx

@@ -34,6 +34,44 @@ const CaseListWidget = ({ keyWord, onSelect }: IWidget) => {
   const [types, setTypes] = useState<IType[]>();
   const [types, setTypes] = useState<IType[]>();
   const [treeData, setTreeData] = useState<DataNode[]>();
   const [treeData, setTreeData] = useState<DataNode[]>();
 
 
+  const booksTitle = (type: string): [string[], Map<string, number[]>] => {
+    let bookNameMap = new Map<string, number[]>();
+    bookName.forEach((value) => {
+      let name: string;
+      switch (type) {
+        case "M":
+          name = value.m_title;
+          break;
+        case "P":
+          name = value.p_title;
+          break;
+        case "V":
+          name = value.v_title;
+          break;
+        default:
+          name = value.term;
+          break;
+      }
+
+      if (bookNameMap.has(name)) {
+        const id = bookNameMap.get(name);
+        if (id) {
+          id.push(value.id);
+          bookNameMap.set(name, id);
+        } else {
+          bookNameMap.set(name, [value.id]);
+        }
+      } else {
+        bookNameMap.set(name, [value.id]);
+      }
+    });
+    let bookNameList: string[] = [];
+    bookNameMap.forEach((value, key) => {
+      bookNameList.push(key);
+    });
+    return [bookNameList, bookNameMap];
+  };
+
   useEffect(() => {
   useEffect(() => {
     if (typeof keyWord === "undefined") {
     if (typeof keyWord === "undefined") {
       return;
       return;
@@ -57,28 +95,9 @@ const CaseListWidget = ({ keyWord, onSelect }: IWidget) => {
             mType.push({ key: key, value: value });
             mType.push({ key: key, value: value });
           });
           });
           setTypes(mType);
           setTypes(mType);
-          let bookNameMap = new Map<string, number[]>();
-          bookName.forEach((value) => {
-            const name = value.abbr ? value.abbr : value.name;
-            if (bookNameMap.has(name)) {
-              const id = bookNameMap.get(name);
-              if (id) {
-                id.push(value.id);
-                bookNameMap.set(name, id);
-              } else {
-                bookNameMap.set(name, [value.id]);
-              }
-            } else {
-              bookNameMap.set(name, [value.id]);
-            }
-          });
-          let bookNameList: string[] = [];
-          bookNameMap.forEach((value, key) => {
-            bookNameList.push(key);
-          });
+
           const tData = mType.map((item, id1) => {
           const tData = mType.map((item, id1) => {
             let volumes: number[] = [];
             let volumes: number[] = [];
-
             json.data
             json.data
               .filter((value) => value.type === item.key)
               .filter((value) => value.type === item.key)
               .forEach((value) => {
               .forEach((value) => {
@@ -95,7 +114,7 @@ const CaseListWidget = ({ keyWord, onSelect }: IWidget) => {
                 }
                 }
               })
               })
               .join();
               .join();
-
+            const [bookNameList, bookNameMap] = booksTitle(item.key);
             return {
             return {
               title: (
               title: (
                 <Space>
                 <Space>

+ 278 - 282
dashboard/src/components/fts/book_name.csv

@@ -1,282 +1,278 @@
-id,book,name,term,abbr
-1,1,Namakkārapāḷi,namakkārapāḷi,namakkārapāḷi
-2,1,namakkāraṭīkā,namakkāraṭīkā,namakkāraṭīkā
-3,2,Mahāpaṇāmapāṭha(Buddhavandanā),mahāpaṇāmapāṭha,mahāpaṇāmapāṭha
-4,2,tigumbacetiya thomanā,tigumbacetiya thomanā,tigumbacetiya thomanā
-5,2,vāsamālinīkya,vāsamālinīkya,vāsamālinīkya
-6,3,Lakkhaṇāto,lakkhaṇāto,lakkhaṇāto
-7,4,Suttavandanā,suttavandanā,suttavandanā
-8,5,Jinālaṅkāra,jinālaṅkāra,jinālaṅkāra
-9,6,Kamalāñjali,kamalāñjali,kamalāñjali
-10,7,Pajjamadhu,pajjamadhu,pajjamadhu
-11,8,Buddhaguṇagāthāvalī,buddhaguṇagāthāvalī,buddhaguṇagāthāvalī
-12,9,Abhidhānappadīpikāṭīkā,abhidhānappadīpikāṭīkā,abhidhānappadīpikāṭīkā
-13,10,Subodhālaṅkāro,subodhālaṅkāro,subodhālaṅkāro
-14,11,Subodhālaṅkāraṭīkā,subodhālaṅkāraṭīkā,subodhālaṅkāraṭīkā
-15,12,Bālāvatāra,bālāvatāra,bālāvatāra
-16,13,Moggallānasuttapāṭho,moggallānasuttapāṭho,moggallānasuttapāṭho
-17,13,moggallānabyākaraṇaṃ,moggallānabyākaraṇaṃ,moggallānabyākaraṇaṃ
-18,14,Kaccāyanabyākaraṇaṃ,kaccāyanabyākaraṇaṃ,kaccāyanabyākaraṇaṃ
-19,14,mahākaccāyanasaddāpāṭha,mahākaccāyanasaddāpāṭha,mahākaccāyanasaddāpāṭha
-20,15,Saddanītippakaraṇaṃ (padamālā),saddanītippakaraṇaṃ (padamālā),saddanītippakaraṇaṃ (padamālā)
-21,16,Saddanītippakaraṇaṃ,saddanītippakaraṇaṃ (dhātumālā),saddanītippakaraṇaṃ (dhātumālā)
-22,17,Padarūpasiddhi,padarūpasiddhi,padarūpasiddhi
-23,18,Moggallāna pañcikā ṭīkā,moggallāna pañcikā ṭīkā,moggallāna pañcikā ṭīkā
-24,19,Payogasiddhipāḷi,payogasiddhipāḷi,payogasiddhipāḷi
-25,20,Vuttodayaṃ,vuttodayaṃ,vuttodayaṃ
-26,21,Abhidhānappadīpikā,abhidhānappadīpikā,abhidhānappadīpikā
-27,22,Niruttidīpanīpāṭha,niruttidīpanīpāṭha,niruttidīpanīpāṭha
-28,23,Paramatthadīpanī,paramatthadīpanī,paramatthadīpanī
-29,24,Anudīpanīpāṭha,anudīpanīpāṭha,anudīpanīpāṭha
-30,25,Paṭṭhānuddesa dīpanīpāṭha,paṭṭhānuddesa dīpanīpāṭha,paṭṭhānuddesa dīpanīpāṭha
-31,26,Caturārakkhadīpanī,caturārakkhadīpanī,caturārakkhadīpanī
-32,27,Kavidappaṇanīti,kavidappaṇanīti,kavidappaṇanīti
-33,28,Nītimañjarī,nītimañjarī,nītimañjarī
-34,29,Dhammanīti,dhammanīti,dhammanīti
-35,30,Mahārahanīti,mahārahanīti,mahārahanīti
-36,31,Lokanīti,lokanīti,lokanīti
-37,32,Suttantanīti,suttantanīti,suttantanīti
-38,32,vasalasutta,vasalasutta,vasalasutta
-39,33,Sūrassatīnīti,sūrassatīnīti,sūrassatīnīti
-40,34,Cāṇakyanītipāḷi,cāṇakyanītipāḷi,cāṇakyanītipāḷi
-41,35,Naradakkhadīpanī,naradakkhadīpanī,naradakkhadīpanī
-42,36,Rasavāhinī,rasavāhinī,rasavāhinī
-43,37,Sīmavisodhanī,sīmavisodhanī,sīmavisodhanī
-44,38,Vessantarāgīti,vessantarāgīti,vessantarāgīti
-45,39,Dīghanikāye,(saṅgayana-puccha vissajjanā) dīghanikāye,(saṅgayana-puccha vissajjanā) dīghanikāye
-46,40,Majjhimanikāya,(saṅgayana-puccha vissajjanā) majjhimanikāya,(saṅgayana-puccha vissajjanā) majjhimanikāya
-47,41,Saṃyuttanikāye,(saṅgayana-puccha vissajjanā) saṃyuttanikāye,(saṅgayana-puccha vissajjanā) saṃyuttanikāye
-48,42,Aṅguttaranikāye,(saṅgayana-puccha vissajjanā) aṅguttaranikāye,(saṅgayana-puccha vissajjanā) aṅguttaranikāye
-49,43,Vinayapiṭaka,(saṅgayana-puccha vissajjanā) vinayapiṭaka,(saṅgayana-puccha vissajjanā) vinayapiṭaka
-50,44,Abhidhammapiṭaka,(saṅgayana-puccha vissajjanā) abhidhammapiṭaka,(saṅgayana-puccha vissajjanā) abhidhammapiṭaka
-51,45,Aṭṭhakathā,(saṅgayana-puccha vissajjanā) aṭṭhakathā,(saṅgayana-puccha vissajjanā) aṭṭhakathā
-52,46,Milidaṭīkā,milidaṭīkā,milidaṭīkā
-53,47,Padamañjarī,padamañjarī,padamañjarī
-54,48,Padasādhanaṃ,padasādhanaṃ,padasādhanaṃ
-55,49,Saddabindu pakaraṇaṃ,saddabindu pakaraṇaṃ,saddabindu pakaraṇaṃ
-56,50,Kaccāyana dhātu mañjūsā,kaccāyana  dhātu mañjūsā,kaccāyana  dhātu mañjūsā
-57,51,Samantakūṭavaṇṇanā,samantakūṭavaṇṇanā,samantakūṭavaṇṇanā
-58,52,Vuttisametā,moggallāna vuttivivaraṇapañcikā.,moggallāna vuttivivaraṇapañcikā.
-59,53,Thupavaṃso,thupavaṃso,thupavaṃso
-60,54,Dāṭhāvaṃso,dāṭhāvaṃso,dāṭhāvaṃso
-61,55,Dhātupāṭha vilāsiniyā,dhātupāṭha  vilāsiniyā,dhātupāṭha  vilāsiniyā
-62,56,Dhātuvaṃso,dhātuvaṃso,dhātuvaṃso
-63,57,Hatthavanagallavihāra vaṃso,hatthavanagallavihāra  vaṃso,hatthavanagallavihāra  vaṃso
-64,58,Jinacaritaya,jinacaritaya,jinacaritaya
-65,59,Jinavaṃsadīpaṃ,jinavaṃsadīpaṃ,jinavaṃsadīpaṃ
-66,60,Telakaṭāhagāthā,telakaṭāhagāthā,telakaṭāhagāthā
-67,61,Cūḷaganthavaṃsapāḷi,cūḷaganthavaṃsapāḷi,cūḷaganthavaṃsapāḷi
-68,62,Sāsanavaṃsappadīpikā,sāsanavaṃsappadīpikā,sāsanavaṃsappadīpikā
-69,63,Mahāvaṃsapāḷi,mahāvaṃsapāḷi,mahāvaṃsapāḷi
-70,64,Visuddhimaggo(Paṭhamo bhāgo),visuddhimagga,visuddhi.
-71,65,Visuddhimaggo(Dutiyo bhāgo),visuddhimagga,visuddhi.
-72,66,Visuddhimagga-mahāṭīkā(Paṭhamo bhāgo),Visuddhimagga-mahāṭīkā,visuddhi. ṭī.
-73,67,Visuddhimagga-mahāṭīkā(Dutiyo bhāgo),Visuddhimagga-mahāṭīkā,visuddhi. ṭī.
-74,68,Visuddhimagga nidānakathā,visuddhimagga-nidānakathā,visuddhimagga-nidānakathā
-75,69,Paṭṭhānapāḷi(Dutiyo bhāgo),paṭṭhānapāḷi,paṭṭhāna.
-76,70,Paṭṭhānapāḷi(Tatiyo bhāgo),paṭṭhānapāḷi,paṭṭhāna.
-77,71,Paṭṭhānapāḷi(Catuttho bhāgo),paṭṭhānapāḷi,paṭṭhāna.
-78,72,Paṭṭhānapāḷi(Pañcamo bhāgo),paṭṭhānapāḷi,paṭṭhāna.
-79,73,Dhammasaṅgaṇīpāḷi,dhammasaṅgaṇīpāḷi,abhi. dha.
-80,74,Vibhaṅgapāḷi,vibhaṅgapāḷi,abhi. vi.
-81,75,Dhātukathāpāḷi,dhātukathāpāḷi,abhi. dhā.
-82,76,Puggalapaññattipāḷi,puggalapaññattipāḷi,abhi. pu.
-83,77,Kathāvatthupāḷi,kathāvatthupāḷi,abhi. ka.
-84,78,Yamakapāḷi (paṭhamo bhāgo),yamakapāḷi,yamaka.
-85,79,Yamakapāḷi (dutiyo bhāgo),yamakapāḷi,yamaka.
-86,80,Yamakapāḷi (tatiyo bhāgo),yamakapāḷi,yamaka.
-87,81,Paṭṭhānapāḷi(Paṭhamo bhāgo),paṭṭhānapāḷi,paṭṭhāna.
-88,82,Dasakanipātapāḷi,aṅguttaranikāya,aṃ.
-89,83,Ekādasakanipātapāḷi,aṅguttaranikāya,aṃ.
-90,84,Ekakanipātapāḷi,aṅguttaranikāya,aṃ.
-91,85,Dukanipātapāḷi,aṅguttaranikāya,aṃ.
-92,86,Tikanipātapāḷi,aṅguttaranikāya,aṃ.
-93,87,Catukkanipātapāḷi,aṅguttaranikāya,aṃ.
-94,88,Pañcakanipātapāḷi,aṅguttaranikāya,aṃ.
-95,89,Chakkanipātapāḷi,aṅguttaranikāya,aṃ.
-96,90,Sattakanipātapāḷi,aṅguttaranikāya,aṃ.
-97,91,Aṭṭhakanipātapāḷi,aṅguttaranikāya,aṃ.
-98,92,Navakanipātapāḷi,aṅguttaranikāya,aṃ.
-99,93,Sīlakkhandhavaggapāḷi,dīghanikāya,dī.
-100,94,Mahāvaggapāḷi,dīghanikāya,dī.
-101,95,Pāthikavaggapāḷi,dīghanikāya,dī.
-102,96,Dhammasaṅgaṇī-aṭṭhakathā,abhidhamma-aṭṭhakathā,abhi. ṭṭha.
-103,97,Vibhaṅga-aṭṭhakathā,abhidhamma-aṭṭhakathā,abhi. ṭṭha.
-104,98,Pañcapakaraṇa-aṭṭhakathā,abhidhamma-aṭṭhakathā,abhi. ṭṭha.
-105,98,puggalapaññatti-aṭṭhakathā,abhidhamma-aṭṭhakathā,abhi. ṭṭha.
-106,98,kathāvatthu-aṭṭhakathā,abhidhamma-aṭṭhakathā,abhi. ṭṭha.
-107,98,yamakappakaraṇa-aṭṭhakathā,abhidhamma-aṭṭhakathā,abhi. ṭṭha.
-108,98,paṭṭhānappakaraṇa-aṭṭhakathā,abhidhamma-aṭṭhakathā,abhi. ṭṭha.
-109,99,Ekakanipāta-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
-110,100,Dukanipāta-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
-111,100,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
-112,100,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
-113,101,Pañcakanipāta-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
-114,101,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
-115,101,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
-116,102,Aṭṭhakanipāta-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
-117,102,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
-118,102,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
-119,102,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
-120,103,Sīlakkhandhavaggaṭṭhakathā,dīghanikāya-aṭṭhakathā,dī. ṭṭha.
-121,104,Mahāvaggaṭṭhakathā,dīghanikāya-aṭṭhakathā,dī. ṭṭha.
-122,105,Pāthikavaggaṭṭhakathā,dīghanikāya-aṭṭhakathā,dī. ṭṭha.
-123,106,Therīgāthā-aṭṭhakathā,therīgāthā-aṭṭhakathā,therī. ṭṭha.
-124,107,Apadāna-aṭṭhakathā,apadāna-aṭṭhakathā,apa. ṭṭha.
-125,108,Buddhavaṃsa-aṭṭhakathā,buddhavaṃsa-aṭṭhakathā,buddhavaṃ. ṭṭha.
-126,109,Cariyāpiṭaka-aṭṭhakathā,cariyāpiṭaka-aṭṭhakathā,cariyā. ṭṭha.
-127,110,Jātaka-aṭṭhakathā(Paṭhamo bhāgo),jātaka-aṭṭhakathā,jā. ṭṭha.
-128,111,Jātaka-aṭṭhakathā(Dutiyo bhāgo),jātaka-aṭṭhakathā,jā. ṭṭha.
-129,112,Jātaka-aṭṭhakathā(Tatiyo bhāgo),jātaka-aṭṭhakathā,jā. ṭṭha.
-130,113,Jātaka-aṭṭhakathā(Catuttho bhāgo),jātaka-aṭṭhakathā,jā. ṭṭha.
-131,113,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jā. ṭṭha.
-132,114,Jātaka-aṭṭhakathā(Pañcamo bhāgo),jātaka-aṭṭhakathā,jā. ṭṭha.
-133,115,Jātaka-aṭṭhakathā(Chaṭṭho bhāgo),jātaka-aṭṭhakathā,jā. ṭṭha.
-134,116,Khuddakapāṭha-aṭṭhakathā,khuddakapāṭha-aṭṭhakathā,khuddaka. ṭṭha.
-135,117,Jātaka-aṭṭhakathā(Sattamo bhāgo),jātaka-aṭṭhakathā,jā. ṭṭha.
-136,118,Mahāniddesa-aṭṭhakathā,mahāniddesa-aṭṭhakathā,mahāni. ṭṭha.
-137,119,Cūḷaniddesa-aṭṭhakathā,cūḷaniddesa-aṭṭhakathā,cūḷani. ṭṭha.
-138,120,Paṭisambhidāmagga-aṭṭhakathā,paṭisambhidāmagga-aṭṭhakathā,paṭisaṃ. ṭṭha.
-139,121,Nettippakaraṇa-aṭṭhakathā,nettippakaraṇa-aṭṭhakathā,netti. ṭṭha.
-140,122,Dhammapada-aṭṭhakathā,dhammapada-aṭṭhakathā,dhamma. ṭṭha.
-141,123,Udāna-aṭṭhakathā,udāna-aṭṭhakathā,udāna. ṭṭha.
-142,124,Itivuttaka-aṭṭhakathā,itivuttaka-aṭṭhakathā,itivutta. ṭṭha.
-143,125,Suttanipāta-aṭṭhakathā,suttanipāta-aṭṭhakathā,suttani. ṭṭha.
-144,126,Vimānavatthu-aṭṭhakathā,vimānavatthu-aṭṭhakathā,vimāna. ṭṭha.
-145,127,Petavatthu-aṭṭhakathā,petavatthu-aṭṭhakathā,peta. ṭṭha.
-146,128,Theragāthā-aṭṭhakathā(Paṭhamo bhāgo),Theragāthā-aṭṭhakathā,thera. ṭṭha.
-147,129,Theragāthā-aṭṭhakathā(Dutiyo bhāgo),Theragāthā-aṭṭhakathā,thera. ṭṭha.
-148,130,Mūlapaṇṇāsa-aṭṭhakathā,majimanikaya-aṭṭhakathā,ma. ṭṭha.
-149,131,Majjhimapaṇṇāsa-aṭṭhakathā,majimanikaya-aṭṭhakathā,ma. ṭṭha.
-150,132,Uparipaṇṇāsa-aṭṭhakathā,majimanikaya-aṭṭhakathā,ma. ṭṭha.
-151,133,Sagāthāvagga-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃ. ṭṭha.
-152,134,Nidānavagga-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃ. ṭṭha.
-153,135,Khandhavagga-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃ. ṭṭha.
-154,136,Saḷāyatanavagga-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃ. ṭṭha.
-155,137,Mahāvagga-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃ. ṭṭha.
-156,138,Pārājikakaṇḍa-aṭṭhakathā,vinaya-aṭṭhakathā,vi. ṭṭha.
-157,139,Pācittiya-aṭṭhakathā,pācittiya-aṭṭhakathā,vi. ṭṭha.
-158,140,Mahāvagga-aṭṭhakathā,vinaya-aṭṭhakathā,vi. ṭṭha.
-159,141,Cūḷavagga-aṭṭhakathā,vinaya-aṭṭhakathā,vi. ṭṭha.
-160,142,Parivāra-aṭṭhakathā,vinaya-aṭṭhakathā,vi. ṭṭha.
-161,143,Therāpadānapāḷi(Paṭhamo bhāgo),therāpadānapāḷi,apa.
-162,144,Therāpadānapāḷi(Dutiyo bhāgo),therāpadānapāḷi,apa.
-163,144,therīapadānapāḷi,therīapadānapāḷi,therīapadānapāḷi
-164,145,Buddhavaṃsapāḷi,buddhavaṃsapāḷi,buddhavaṃ.
-165,146,Cariyāpiṭakapāḷi,cariyāpiṭakapāḷi,cariyā.
-166,147,Jātakapāḷi(Dutiyo bhāgo),jātakapāḷi,jā.
-167,148,Jātakapāḷi(Paṭhamo bhāgo),jātakapāḷi,jā.
-168,149,Mahāniddesapāḷi,mahāniddesapāḷi,mahāni.
-169,150,Cūḷaniddesapāḷi,cūḷaniddesapāḷi,cūḷani.
-170,151,Paṭisambhidāmaggapāḷi,paṭisambhidāmaggapāḷi,paṭisaṃ.
-171,152,Milindapañhapāḷi,milindapañhapāḷi,milinda.
-172,153,Nettippakaraṇapāḷi,nettippakaraṇapāḷi,netti.
-173,154,Khuddakapāṭhapāḷi,khuddakapāṭhapāḷi,khuddaka.
-174,155,Peṭakopadesapāḷi,peṭakopadesapāḷi,peṭako.
-175,156,Dhammapadapāḷi,dhammapadapāḷi,dhamma.
-176,157,Udānapāḷi,udānapāḷi,udāna.
-177,158,Itivuttakapāḷi,itivuttakapāḷi,itivutta.
-178,159,Suttanipātapāḷi,suttanipātapāḷi,suttani.
-179,160,Vimānavatthupāḷi,vimānavatthupāḷi,vimāna.
-180,161,Petavatthupāḷi,petavatthupāḷi,peta.
-181,162,Theragāthāpāḷi,theragāthāpāḷi,theragāthā.
-182,163,Therīgāthāpāḷi,therīgāthāpāḷi,therī.
-183,164,Mūlapaṇṇāsapāḷi,majimanikaya,ma.
-184,165,Majjhimapaṇṇāsapāḷi,majimanikaya,ma.
-185,166,Uparipaṇṇāsapāḷi,majimanikaya,ma.
-186,167,Sagāthāvaggo,saṃyuttanikāya,saṃ.
-187,168,Nidānavaggo,saṃyuttanikāya,saṃ.
-188,169,Khandhavaggo,saṃyuttanikāya,saṃ.
-189,170,Saḷāyatanavaggo,saṃyuttanikāya,saṃ.
-190,171,Mahāvaggo,saṃyuttanikāya,saṃ.
-191,172,Dhammasaṅgaṇī-mūlaṭīkā,mūlaṭīkā,mūlaṭī.
-192,173,Vibhaṅga-mūlaṭīkā,mūlaṭīkā,mūlaṭī.
-193,173,Vibhaṅga-anuṭīkā,anuṭīkā,anuṭī.
-194,174,Pañcapakaraṇa-mūlaṭīkā,mūlaṭīkā,mūlaṭī.
-195,174,mūlaṭīkā,mūlaṭīkā,mūlaṭīkā
-196,174,mūlaṭīkā,mūlaṭīkā,mūlaṭīkā
-197,174,mūlaṭīkā,mūlaṭīkā,mūlaṭīkā
-198,174,mūlaṭīkā,mūlaṭīkā,mūlaṭīkā
-199,175,Dhammasaṅgaṇī-anuṭīkā,anuṭīkā,anuṭī. 1
-200,176,Pañcapakaraṇa-anuṭīkā,anuṭīkā,anuṭī. 3
-201,176,anuṭīkā,anuṭīkā,anuṭīkā
-202,176,anuṭīkā,anuṭīkā,anuṭīkā
-203,176,anuṭīkā,anuṭīkā,anuṭīkā
-204,176,anuṭīkā,anuṭīkā,anuṭīkā
-205,177,Ganthārambhakathā,abhidhammāvatāro,abhidhammāvatāro
-206,177,nāmarūpaparicchedo,nāmarūpaparicchedo,nāmarūpaparicchedo
-207,177,paramatthavinicchayo,paramatthavinicchayo,paramatthavinicchayo
-208,177,saccasaṅkhepo,saccasaṅkhepo,saccasaṅkhepo
-209,178,Abhidhammatthasaṅgaho,abhidhammatthasaṅgaho,abhidhammatthasaṅgaho
-210,178,abhidhammatthavibhāvinīṭīkā,abhidhammatthavibhāvinīṭīkā,abhidhammatthavibhāvinīṭīkā
-211,179,Paṭhamo paricchedo,abhidhammāvatāra-purāṇaṭīkā,abhidhammāvatāra-purāṇaṭīkā
-212,179,abhidhammāvatāra-abhinavaṭīkā,abhidhammāvatāra-abhinavaṭīkā,abhidhammāvatāra-abhinavaṭīkā
-213,180,Abhidhammamātikāpāḷi,abhidhammamātikāpāḷi,abhidhammamātikāpāḷi
-214,180,mohavicchedanī,mohavicchedanī,mohavicchedanī
-215,181,Ekakanipāta-ṭīkā,aṅguttaranikāya-ṭīkā,aṃ. ṭī.
-216,182,Dukanipāta-ṭīkā,aṅguttaranikāya-ṭīkā,aṃ. ṭī.
-217,182,tikanipāta-ṭīkā,tikanipāta-ṭīkā,aṃ. ṭī.
-218,182,catukkanipāta-ṭīkā,catukkanipāta-ṭīkā,aṃ. ṭī.
-219,183,Pañcakanipāta-ṭīkā,aṅguttaranikāya-ṭīkā,aṃ. ṭī.
-220,183,chakkanipāta-ṭīkā,chakkanipāta-ṭīkā,aṃ. ṭī.
-221,183,sattakanipāta-ṭīkā,sattakanipāta-ṭīkā,aṃ. ṭī.
-222,184,Aṭṭhakanipāta-ṭīkā,aṅguttaranikāya-ṭīkā,aṃ. ṭī.
-223,184,navakanipāta-ṭīkā,navakanipāta-ṭīkā,aṃ. ṭī.
-224,184,dasakanipāta-ṭīkā,dasakanipāta-ṭīkā,aṃ. ṭī.
-225,184,ekādasakanipāta-ṭīkā,ekādasakanipāta-ṭīkā,aṃ. ṭī.
-226,185,Sīlakkhandhavaggaṭīkā,dīghanikāya-ṭīkā,dī. ṭī.
-227,186,Mahāvaggaṭīkā,dīghanikāya-ṭīkā,dī. ṭī.
-228,187,Pāthikavaggaṭīkā,dīghanikāya-ṭīkā,dī. ṭī.
-229,188,Sīlakkhandhavaggaabhinavaṭīkā,dīghanikāya-abhinavaṭīkā,dī. abhi. ṭī.
-230,189,Sīlakkhandhavaggaabhinavaṭīkā,dīghanikāya-abhinavaṭīkā,dī. abhi. ṭī.
-231,190,Nettippakaraṇa-ṭīkā,nettippakaraṇa-ṭīkā,netti. ṭī.
-232,191,Nettivibhāvinī,nettivibhāvinī,netti. vibhā.
-233,192,Mūlapaṇṇāsa-ṭīkā,majjhimanikaya-ṭīkā,ma. ṭī.
-234,193,Majjhimapaṇṇāsaṭīkā,majjhimanikaya-ṭīkā,ma. ṭī.
-235,194,Uparipaṇṇāsa-ṭīkā,majjhimanikaya-ṭīkā,ma. ṭī.
-236,195,Sagāthāvaggaṭīkā,saṃyuttanikāya-ṭīkā,saṃ. ṭī.
-237,196,Nidānavaggaṭīkā,saṃyuttanikāya-ṭīkā,saṃ. ṭī.
-238,197,Khandhavaggaṭīkā,saṃyuttanikāya-ṭīkā,saṃ. ṭī.
-239,198,Saḷāyatanavaggaṭīkā,saṃyuttanikāya-ṭīkā,saṃ. ṭī.
-240,199,Mahāvaggaṭīkā,saṃyuttanikāya-ṭīkā,saṃ. ṭī.
-241,200,Vinayavinicchayo,vinayavinicchayo,vinayavinicchayo
-242,200,uttaravinicchayo,uttaravinicchayo,uttaravinicchayo
-243,201,Vinayavinicchayaṭīkā(Paṭhamo bhāgo),vinayavinicchaya-ṭīkā,vinayavinicchaya-ṭīkā
-244,201,uttaravinicchaya-ṭīkā,uttaravinicchaya-ṭīkā,uttaravinicchaya-ṭīkā
-245,202,Pācityādiyojanā,pācityādiyojanā,pācityādiyojanā
-246,203,Khuddasikkhā-mūlasikkhā,khuddasikkhā,khuddasikkhā
-247,203,khuddasikkhā,khuddasikkhā,khuddasikkhā
-248,203,khuddasikkhā,khuddasikkhā,khuddasikkhā
-249,203,mūlasikkhā,mūlasikkhā,mūlasikkhā
-250,203,mūlasikkhā,mūlasikkhā,mūlasikkhā
-251,204,Sāratthadīpanī-ṭīkā (paṭhamo bhāgo),Sāratthadīpanī-ṭīkā,sārattha. ṭī.
-252,205,Sāratthadīpanī-ṭīkā (dutiyo bhāgo),Sāratthadīpanī-ṭīkā,sārattha. ṭī.
-253,206,Sāratthadīpanī-ṭīkā (tatiyo bhāgo),Sāratthadīpanī-ṭīkā,sārattha. ṭī.
-254,206,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sārattha. ṭī.
-255,206,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sārattha. ṭī.
-256,206,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sārattha. ṭī.
-257,207,Bhikkhupātimokkhapāḷi,pātimokkhapāḷi,pātimokkha
-258,207,pātimokkhapāḷi,pātimokkhapāḷi,pātimokkha
-259,207,kaṅkhāvitaraṇī,kaṅkhāvitaraṇī,kaṅkhā.
-260,208,Vinayasaṅgaha-aṭṭhakathā,vinayasaṅgaha-aṭṭhakathā,vinayasaṅgaha-aṭṭhakathā
-261,209,Vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajīra. ṭī.
-262,209,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajīra. ṭī.
-263,209,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajīra. ṭī.
-264,209,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajīra. ṭī.
-265,209,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajīra. ṭī.
-266,209,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajīra. ṭī.
-267,210,Vimativinodanī-ṭīkā,vimativinodanī-ṭīkā,vimati. ṭī.
-268,210,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,vimati. ṭī.
-269,210,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,vimati. ṭī.
-270,210,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,vimati. ṭī.
-271,210,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,vimati. ṭī.
-272,211,Vinayālaṅkāra-ṭīkā,vinayālaṅkāra-ṭīkā,ālaṅkāra. ṭī.
-273,212,Kaṅkhāvitaraṇīpurāṇa-ṭīkā,kaṅkhāvitaraṇī,kaṅkhā. ṭī.
-274,212,Kaṅkhāvitaraṇī-abhinavaṭīkā,kaṅkhāvitaraṇī,kaṅkhā.
-275,213,Pārājikapāḷi,vinayapitaka,vi.
-276,214,Pācittiyapāḷi,vinayapitaka,vi.
-277,215,Mahāvaggapāḷi,vinayapitaka,vi.
-278,216,Cūḷavaggapāḷi,vinayapitaka,vi.
-279,217,Parivārapāḷi,vinayapitaka,vi.
-280,139,samantapāsādikā,samantapāsādikā,samantapāsādikā
-281,214,(VN)Bhikkhunīvibhaṅgo,(VN)Bhikkhunīvibhaṅgo,vi.
+id,book,name,term,v_title,m_title,p_title,abbr
+1,1,Namakkārapāḷi,namakkārapāḷi,namakkārapāḷi,namakkārapāḷi,namakkārapāḷi,namakkārapāḷi
+2,1,namakkāraṭīkā,namakkāraṭīkā,namakkāraṭīkā,namakkāraṭīkā,namakkāraṭīkā,namakkāraṭīkā
+3,2,Mahāpaṇāmapāṭha(Buddhavandanā),mahāpaṇāmapāṭha,mahāpaṇāmapāṭha,mahāpaṇāmapāṭha,mahāpaṇāmapāṭha,mahāpaṇāmapāṭha
+4,2,tigumbacetiya thomanā,tigumbacetiya thomanā,tigumbacetiya thomanā,tigumbacetiya thomanā,tigumbacetiya thomanā,tigumbacetiya thomanā
+5,2,vāsamālinīkya,vāsamālinīkya,vāsamālinīkya,vāsamālinīkya,vāsamālinīkya,vāsamālinīkya
+6,3,Lakkhaṇāto,lakkhaṇāto,lakkhaṇāto,lakkhaṇāto,lakkhaṇāto,lakkhaṇāto
+7,4,Suttavandanā,suttavandanā,suttavandanā,suttavandanā,suttavandanā,suttavandanā
+12,9,Abhidhānappadīpikāṭīkā,abhidhānappadīpikāṭīkā,abhidhānappadīpikāṭīkā,abhidhānappadīpikāṭīkā,abhidhānappadīpikāṭīkā,abhidhānappadīpikāṭīkā
+13,10,Subodhālaṅkāro,subodhālaṅkāro,subodhālaṅkāro,subodhālaṅkāro,subodhālaṅkāro,subodhālaṅkāro
+14,11,Subodhālaṅkāraṭīkā,subodhālaṅkāraṭīkā,subodhālaṅkāraṭīkā,subodhālaṅkāraṭīkā,subodhālaṅkāraṭīkā,subodhālaṅkāraṭīkā
+15,12,Bālāvatāra,bālāvatāra,bālāvatāra,bālāvatāra,bālāvatāra,bālāvatāra
+16,13,Moggallānasuttapāṭho,moggallānasuttapāṭho,moggallānasuttapāṭho,moggallānasuttapāṭho,moggallānasuttapāṭho,moggallānasuttapāṭho
+17,13,moggallānabyākaraṇaṃ,moggallānabyākaraṇaṃ,moggallānabyākaraṇaṃ,moggallānabyākaraṇaṃ,moggallānabyākaraṇaṃ,moggallānabyākaraṇaṃ
+18,14,Kaccāyanabyākaraṇaṃ,kaccāyanabyākaraṇaṃ,kaccāyanabyākaraṇaṃ,kaccāyanabyākaraṇaṃ,kaccāyanabyākaraṇaṃ,kaccāyanabyākaraṇaṃ
+19,14,mahākaccāyanasaddāpāṭha,mahākaccāyanasaddāpāṭha,mahākaccāyanasaddāpāṭha,mahākaccāyanasaddāpāṭha,mahākaccāyanasaddāpāṭha,mahākaccāyanasaddāpāṭha
+20,15,Saddanītippakaraṇaṃ (padamālā),saddanītippakaraṇaṃ (padamālā),saddanītippakaraṇaṃ (padamālā),saddanītippakaraṇaṃ (padamālā),saddanītippakaraṇaṃ (padamālā),saddanītippakaraṇaṃ (padamālā)
+21,16,Saddanītippakaraṇaṃ,saddanītippakaraṇaṃ (dhātumālā),saddanītippakaraṇaṃ (dhātumālā),saddanītippakaraṇaṃ (dhātumālā),saddanītippakaraṇaṃ (dhātumālā),saddanītippakaraṇaṃ (dhātumālā)
+22,17,Padarūpasiddhi,padarūpasiddhi,padarūpasiddhi,padarūpasiddhi,padarūpasiddhi,padarūpasiddhi
+23,18,Moggallāna pañcikā ṭīkā,moggallāna pañcikā ṭīkā,moggallāna pañcikā ṭīkā,moggallāna pañcikā ṭīkā,moggallāna pañcikā ṭīkā,moggallāna pañcikā ṭīkā
+24,19,Payogasiddhipāḷi,payogasiddhipāḷi,payogasiddhipāḷi,payogasiddhipāḷi,payogasiddhipāḷi,payogasiddhipāḷi
+25,20,Vuttodayaṃ,vuttodayaṃ,vuttodayaṃ,vuttodayaṃ,vuttodayaṃ,vuttodayaṃ
+26,21,Abhidhānappadīpikā,abhidhānappadīpikā,abhidhānappadīpikā,abhidhānappadīpikā,abhidhānappadīpikā,abhidhānappadīpikā
+27,22,Niruttidīpanīpāṭha,niruttidīpanīpāṭha,niruttidīpanīpāṭha,niruttidīpanīpāṭha,niruttidīpanīpāṭha,niruttidīpanīpāṭha
+28,23,Paramatthadīpanī,paramatthadīpanī,paramatthadīpanī,paramatthadīpanī,paramatthadīpanī,paramatthadīpanī
+29,24,Anudīpanīpāṭha,anudīpanīpāṭha,anudīpanīpāṭha,anudīpanīpāṭha,anudīpanīpāṭha,anudīpanīpāṭha
+30,25,Paṭṭhānuddesa dīpanīpāṭha,paṭṭhānuddesa dīpanīpāṭha,paṭṭhānuddesa dīpanīpāṭha,paṭṭhānuddesa dīpanīpāṭha,paṭṭhānuddesa dīpanīpāṭha,paṭṭhānuddesa dīpanīpāṭha
+31,26,Caturārakkhadīpanī,caturārakkhadīpanī,caturārakkhadīpanī,caturārakkhadīpanī,caturārakkhadīpanī,caturārakkhadīpanī
+32,27,Kavidappaṇanīti,kavidappaṇanīti,kavidappaṇanīti,kavidappaṇanīti,kavidappaṇanīti,kavidappaṇanīti
+33,28,Nītimañjarī,nītimañjarī,nītimañjarī,nītimañjarī,nītimañjarī,nītimañjarī
+34,29,Dhammanīti,dhammanīti,dhammanīti,dhammanīti,dhammanīti,dhammanīti
+35,30,Mahārahanīti,mahārahanīti,mahārahanīti,mahārahanīti,mahārahanīti,mahārahanīti
+36,31,Lokanīti,lokanīti,lokanīti,lokanīti,lokanīti,lokanīti
+37,32,Suttantanīti,suttantanīti,suttantanīti,suttantanīti,suttantanīti,suttantanīti
+38,32,vasalasutta,vasalasutta,vasalasutta,vasalasutta,vasalasutta,vasalasutta
+39,33,Sūrassatīnīti,sūrassatīnīti,sūrassatīnīti,sūrassatīnīti,sūrassatīnīti,sūrassatīnīti
+40,34,Cāṇakyanītipāḷi,cāṇakyanītipāḷi,cāṇakyanītipāḷi,cāṇakyanītipāḷi,cāṇakyanītipāḷi,cāṇakyanītipāḷi
+41,35,Naradakkhadīpanī,naradakkhadīpanī,naradakkhadīpanī,naradakkhadīpanī,naradakkhadīpanī,naradakkhadīpanī
+42,36,Rasavāhinī,rasavāhinī,rasavāhinī,rasavāhinī,rasavāhinī,rasavāhinī
+43,37,Sīmavisodhanī,sīmavisodhanī,sīmavisodhanī,sīmavisodhanī,sīmavisodhanī,sīmavisodhanī
+44,38,Vessantarāgīti,vessantarāgīti,vessantarāgīti,vessantarāgīti,vessantarāgīti,vessantarāgīti
+45,39,Dīghanikāye,saṅgayana-puccha vissajjanā dīghanikāye,saṅgayana-puccha vissajjanā dīghanikāye,saṅgayana-puccha vissajjanā dīghanikāye,saṅgayana-puccha vissajjanā dīghanikāye,(saṅgayana-puccha vissajjanā) dīghanikāye
+46,40,Majjhimanikāya,saṅgayana-puccha vissajjanā majjhimanikāya,saṅgayana-puccha vissajjanā majjhimanikāya,saṅgayana-puccha vissajjanā majjhimanikāya,saṅgayana-puccha vissajjanā majjhimanikāya,(saṅgayana-puccha vissajjanā) majjhimanikāya
+47,41,Saṃyuttanikāye,saṅgayana-puccha vissajjanā saṃyuttanikāye,saṅgayana-puccha vissajjanā saṃyuttanikāye,saṅgayana-puccha vissajjanā saṃyuttanikāye,saṅgayana-puccha vissajjanā saṃyuttanikāye,(saṅgayana-puccha vissajjanā) saṃyuttanikāye
+48,42,Aṅguttaranikāye,saṅgayana-puccha vissajjanā aṅguttaranikāye,saṅgayana-puccha vissajjanā aṅguttaranikāye,saṅgayana-puccha vissajjanā aṅguttaranikāye,saṅgayana-puccha vissajjanā aṅguttaranikāye,(saṅgayana-puccha vissajjanā) aṅguttaranikāye
+49,43,Vinayapiṭaka,saṅgayana-puccha vissajjanā vinayapiṭaka,saṅgayana-puccha vissajjanā vinayapiṭaka,saṅgayana-puccha vissajjanā vinayapiṭaka,saṅgayana-puccha vissajjanā vinayapiṭaka,(saṅgayana-puccha vissajjanā) vinayapiṭaka
+50,44,Abhidhammapiṭaka,saṅgayana-puccha vissajjanā abhidhammapiṭaka,saṅgayana-puccha vissajjanā abhidhammapiṭaka,saṅgayana-puccha vissajjanā abhidhammapiṭaka,saṅgayana-puccha vissajjanā abhidhammapiṭaka,(saṅgayana-puccha vissajjanā) abhidhammapiṭaka
+51,45,Aṭṭhakathā,saṅgayana-puccha vissajjanā aṭṭhakathā,saṅgayana-puccha vissajjanā aṭṭhakathā,saṅgayana-puccha vissajjanā aṭṭhakathā,saṅgayana-puccha vissajjanā aṭṭhakathā,(saṅgayana-puccha vissajjanā) aṭṭhakathā
+52,46,Milidaṭīkā,milidaṭīkā,milidaṭīkā,milidaṭīkā,milidaṭīkā,milidaṭīkā
+53,47,Padamañjarī,padamañjarī,padamañjarī,padamañjarī,padamañjarī,padamañjarī
+54,48,Padasādhanaṃ,padasādhanaṃ,padasādhanaṃ,padasādhanaṃ,padasādhanaṃ,padasādhanaṃ
+55,49,Saddabindu pakaraṇaṃ,saddabindu pakaraṇaṃ,saddabindu pakaraṇaṃ,saddabindu pakaraṇaṃ,saddabindu pakaraṇaṃ,saddabindu pakaraṇaṃ
+56,50,Kaccāyana dhātu mañjūsā,kaccāyana  dhātu mañjūsā,kaccāyana  dhātu mañjūsā,kaccāyana  dhātu mañjūsā,kaccāyana  dhātu mañjūsā,kaccāyana  dhātu mañjūsā
+57,51,Samantakūṭavaṇṇanā,samantakūṭavaṇṇanā,samantakūṭavaṇṇanā,samantakūṭavaṇṇanā,samantakūṭavaṇṇanā,samantakūṭavaṇṇanā
+58,52,Vuttisametā,moggallāna vuttivivaraṇapañcikā.,moggallāna vuttivivaraṇapañcikā.,moggallāna vuttivivaraṇapañcikā.,moggallāna vuttivivaraṇapañcikā.,moggallāna vuttivivaraṇapañcikā.
+59,53,Thupavaṃsa,thupavaṃsa,thupavaṃsa,thupavaṃsa,thupavaṃsa,thupavaṃsa
+60,54,Dāṭhāvaṃsa,dāṭhāvaṃsa,dāṭhāvaṃsa,dāṭhāvaṃsa,dāṭhāvaṃsa,dāṭhāvaṃsa
+61,55,Dhātupāṭha vilāsiniyā,dhātupāṭha  vilāsiniyā,dhātupāṭha  vilāsiniyā,dhātupāṭha  vilāsiniyā,dhātupāṭha  vilāsiniyā,dhātupāṭha  vilāsiniyā
+62,56,Dhātuvaṃsa,dhātuvaṃsa,dhātuvaṃsa,dhātuvaṃsa,dhātuvaṃsa,dhātuvaṃsa
+63,57,Hatthavanagallavihāra vaṃso,hatthavanagallavihāra  vaṃso,hatthavanagallavihāra  vaṃso,hatthavanagallavihāra  vaṃso,hatthavanagallavihāra  vaṃso,hatthavanagallavihāra  vaṃso
+64,58,Jinacaritaya,jinacaritaya,jinacaritaya,jinacaritaya,jinacaritaya,jinacaritaya
+65,59,Jinavaṃsadīpaṃ,jinavaṃsadīpaṃ,jinavaṃsadīpaṃ,jinavaṃsadīpaṃ,jinavaṃsadīpaṃ,jinavaṃsadīpaṃ
+66,60,Telakaṭāhagāthā,telakaṭāhagāthā,telakaṭāhagāthā,telakaṭāhagāthā,telakaṭāhagāthā,telakaṭāhagāthā
+67,61,Cūḷaganthavaṃsapāḷi,cūḷaganthavaṃsapāḷi,cūḷaganthavaṃsapāḷi,cūḷaganthavaṃsapāḷi,cūḷaganthavaṃsapāḷi,cūḷaganthavaṃsapāḷi
+68,62,Sāsanavaṃsappadīpikā,sāsanavaṃsappadīpikā,sāsanavaṃsappadīpikā,sāsanavaṃsappadīpikā,sāsanavaṃsappadīpikā,sāsanavaṃsappadīpikā
+69,63,Mahāvaṃsapāḷi,mahāvaṃsapāḷi,mahāvaṃsapāḷi,mahāvaṃsapāḷi,mahāvaṃsapāḷi,mahāvaṃsapāḷi
+70,64,Visuddhimaggo(Paṭhamo bhāgo),visuddhimagga,visuddhimagga,visuddhimagga,visuddhimagga,visuddhi.
+71,65,Visuddhimaggo(Dutiyo bhāgo),visuddhimagga,visuddhimagga,visuddhimagga,visuddhimagga,visuddhi.
+72,66,Visuddhimagga-mahāṭīkā(Paṭhamo bhāgo),Visuddhimagga-mahāṭīkā,Visuddhimagga-mahāṭīkā,Visuddhimagga-mahāṭīkā,Visuddhimagga-mahāṭīkā,visuddhi. ṭī.
+73,67,Visuddhimagga-mahāṭīkā(Dutiyo bhāgo),Visuddhimagga-mahāṭīkā,Visuddhimagga-mahāṭīkā,Visuddhimagga-mahāṭīkā,Visuddhimagga-mahāṭīkā,visuddhi. ṭī.
+74,68,Visuddhimagga nidānakathā,visuddhimagga-nidānakathā,visuddhimagga-nidānakathā,visuddhimagga-nidānakathā,visuddhimagga-nidānakathā,visuddhimagga-nidānakathā
+75,69,Paṭṭhānapāḷi(Dutiyo bhāgo),paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhāna.
+76,70,Paṭṭhānapāḷi(Tatiyo bhāgo),paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhāna.
+77,71,Paṭṭhānapāḷi(Catuttho bhāgo),paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhāna.
+78,72,Paṭṭhānapāḷi(Pañcamo bhāgo),paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhāna.
+79,73,Dhammasaṅgaṇīpāḷi,dhammasaṅgaṇīpāḷi,dhammasaṅgaṇīpāḷi,dhammasaṅgaṇīpāḷi,dhammasaṅgaṇīpāḷi,abhi. dha.
+80,74,Vibhaṅgapāḷi,vibhaṅgapāḷi,vibhaṅgapāḷi,vibhaṅgapāḷi,vibhaṅgapāḷi,abhi. vi.
+81,75,Dhātukathāpāḷi,dhātukathāpāḷi,dhātukathāpāḷi,dhātukathāpāḷi,dhātukathāpāḷi,abhi. dhā.
+82,76,Puggalapaññattipāḷi,puggalapaññattipāḷi,puggalapaññattipāḷi,puggalapaññattipāḷi,puggalapaññattipāḷi,abhi. pu.
+83,77,Kathāvatthupāḷi,kathāvatthupāḷi,kathāvatthupāḷi,kathāvatthupāḷi,kathāvatthupāḷi,abhi. ka.
+84,78,Yamakapāḷi (paṭhamo bhāgo),yamakapāḷi,yamakapāḷi,yamakapāḷi,yamakapāḷi,yamaka.
+85,79,Yamakapāḷi (dutiyo bhāgo),yamakapāḷi,yamakapāḷi,yamakapāḷi,yamakapāḷi,yamaka.
+86,80,Yamakapāḷi (tatiyo bhāgo),yamakapāḷi,yamakapāḷi,yamakapāḷi,yamakapāḷi,yamaka.
+87,81,Paṭṭhānapāḷi(Paṭhamo bhāgo),paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhānapāḷi,paṭṭhāna.
+88,82,Dasakanipātapāḷi,aṅguttaranikāya,aṅguttaranikāya-2,aṅguttaranikāya,aṅguttaranikāya,aṃ.
+89,83,Ekādasakanipātapāḷi,aṅguttaranikāya,aṅguttaranikāya-2,aṅguttaranikāya,aṅguttaranikāya,aṃ.
+90,84,Ekakanipātapāḷi,aṅguttaranikāya,aṅguttaranikāya-1,aṅguttaranikāya,aṅguttaranikāya,aṃ.
+91,85,Dukanipātapāḷi,aṅguttaranikāya,aṅguttaranikāya-1,aṅguttaranikāya,aṅguttaranikāya,aṃ.
+92,86,Tikanipātapāḷi,aṅguttaranikāya,aṅguttaranikāya-1,aṅguttaranikāya,aṅguttaranikāya,aṃ.
+93,87,Catukkanipātapāḷi,aṅguttaranikāya,aṅguttaranikāya-2,aṅguttaranikāya,aṅguttaranikāya,aṃ.
+94,88,Pañcakanipātapāḷi,aṅguttaranikāya,aṅguttaranikāya-1,aṅguttaranikāya,aṅguttaranikāya,aṃ.
+95,89,Chakkanipātapāḷi,aṅguttaranikāya,aṅguttaranikāya-2,aṅguttaranikāya,aṅguttaranikāya,aṃ.
+96,90,Sattakanipātapāḷi,aṅguttaranikāya,aṅguttaranikāya-2,aṅguttaranikāya,aṅguttaranikāya,aṃ.
+97,91,Aṭṭhakanipātapāḷi,aṅguttaranikāya,aṅguttaranikāya-1,aṅguttaranikāya,aṅguttaranikāya,aṃ.
+98,92,Navakanipātapāḷi,aṅguttaranikāya,aṅguttaranikāya-1,aṅguttaranikāya,aṅguttaranikāya,aṃ.
+99,93,Sīlakkhandhavaggapāḷi,dīghanikāya,dīghanikāya,dīghanikāya,dīghanikāya,dī.
+100,94,Mahāvaggapāḷi,dīghanikāya,dīghanikāya,dīghanikāya,dīghanikāya,dī.
+101,95,Pāthikavaggapāḷi,dīghanikāya,dīghanikāya,dīghanikāya,dīghanikāya,dī.
+102,96,Dhammasaṅgaṇī-aṭṭhakathā,dhammasaṅgaṇī-aṭṭhakathā,dhammasaṅgaṇī-aṭṭhakathā,dhammasaṅgaṇī-aṭṭhakathā,dhammasaṅgaṇī-aṭṭhakathā,abhi. ṭṭha. 1
+103,97,Vibhaṅga-aṭṭhakathā,vibhaṅga-aṭṭhakathā,vibhaṅga-aṭṭhakathā,vibhaṅga-aṭṭhakathā,vibhaṅga-aṭṭhakathā,abhi. ṭṭha. 2
+104,98,Pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,abhi. ṭṭha. 3
+105,98,puggalapaññatti-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,abhi. ṭṭha. 3
+106,98,kathāvatthu-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,abhi. ṭṭha. 3
+107,98,yamakappakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,abhi. ṭṭha. 3
+108,98,paṭṭhānappakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,pañcapakaraṇa-aṭṭhakathā,abhi. ṭṭha. 3
+109,99,Ekakanipāta-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
+110,100,Dukanipāta-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
+111,100,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
+112,100,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
+113,101,Pañcakanipāta-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
+114,101,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
+115,101,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
+116,102,Aṭṭhakanipāta-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
+117,102,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
+118,102,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
+119,102,manorathapūraṇī,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṅguttaranikāya-aṭṭhakathā,aṃ. ṭṭha.
+120,103,Sīlakkhandhavaggaṭṭhakathā,dīghanikāya-aṭṭhakathā,dīghanikāya-aṭṭhakathā,dīghanikāya-aṭṭhakathā,dīghanikāya-aṭṭhakathā,dī. ṭṭha.
+121,104,Mahāvaggaṭṭhakathā,dīghanikāya-aṭṭhakathā,dīghanikāya-aṭṭhakathā,dīghanikāya-aṭṭhakathā,dīghanikāya-aṭṭhakathā,dī. ṭṭha.
+122,105,Pāthikavaggaṭṭhakathā,dīghanikāya-aṭṭhakathā,dīghanikāya-aṭṭhakathā,dīghanikāya-aṭṭhakathā,dīghanikāya-aṭṭhakathā,dī. ṭṭha.
+123,106,Therīgāthā-aṭṭhakathā,therīgāthā-aṭṭhakathā,therīgāthā-aṭṭhakathā,therīgāthā-aṭṭhakathā,therīgāthā-aṭṭhakathā,therī. ṭṭha.
+124,107,Apadāna-aṭṭhakathā,apadāna-aṭṭhakathā,apadāna-aṭṭhakathā,apadāna-aṭṭhakathā,apadāna-aṭṭhakathā,apa. ṭṭha.
+125,108,Buddhavaṃsa-aṭṭhakathā,buddhavaṃsa-aṭṭhakathā,buddhavaṃsa-aṭṭhakathā,buddhavaṃsa-aṭṭhakathā,buddhavaṃsa-aṭṭhakathā,buddhavaṃ. ṭṭha.
+126,109,Cariyāpiṭaka-aṭṭhakathā,cariyāpiṭaka-aṭṭhakathā,cariyāpiṭaka-aṭṭhakathā,cariyāpiṭaka-aṭṭhakathā,cariyāpiṭaka-aṭṭhakathā,cariyā. ṭṭha.
+127,110,Jātaka-aṭṭhakathā(Paṭhamo bhāgo),jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jā. ṭṭha.
+128,111,Jātaka-aṭṭhakathā(Dutiyo bhāgo),jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jā. ṭṭha.
+129,112,Jātaka-aṭṭhakathā(Tatiyo bhāgo),jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jā. ṭṭha.
+130,113,Jātaka-aṭṭhakathā(Catuttho bhāgo),jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jā. ṭṭha.
+131,113,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jā. ṭṭha.
+132,114,Jātaka-aṭṭhakathā(Pañcamo bhāgo),jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jā. ṭṭha.
+133,115,Jātaka-aṭṭhakathā(Chaṭṭho bhāgo),jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jā. ṭṭha.
+134,116,Khuddakapāṭha-aṭṭhakathā,khuddakapāṭha-aṭṭhakathā,khuddakapāṭha-aṭṭhakathā,khuddakapāṭha-aṭṭhakathā,khuddakapāṭha-aṭṭhakathā,khuddaka. ṭṭha.
+135,117,Jātaka-aṭṭhakathā(Sattamo bhāgo),jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jātaka-aṭṭhakathā,jā. ṭṭha.
+136,118,Mahāniddesa-aṭṭhakathā,mahāniddesa-aṭṭhakathā,mahāniddesa-aṭṭhakathā,mahāniddesa-aṭṭhakathā,mahāniddesa-aṭṭhakathā,mahāni. ṭṭha.
+137,119,Cūḷaniddesa-aṭṭhakathā,cūḷaniddesa-aṭṭhakathā,cūḷaniddesa-aṭṭhakathā,cūḷaniddesa-aṭṭhakathā,cūḷaniddesa-aṭṭhakathā,cūḷani. ṭṭha.
+138,120,Paṭisambhidāmagga-aṭṭhakathā,paṭisambhidāmagga-aṭṭhakathā,paṭisambhidāmagga-aṭṭhakathā,paṭisambhidāmagga-aṭṭhakathā,paṭisambhidāmagga-aṭṭhakathā,paṭisaṃ. ṭṭha.
+139,121,Nettippakaraṇa-aṭṭhakathā,nettippakaraṇa-aṭṭhakathā,nettippakaraṇa-aṭṭhakathā,nettippakaraṇa-aṭṭhakathā,nettippakaraṇa-aṭṭhakathā,netti. ṭṭha.
+140,122,Dhammapada-aṭṭhakathā,dhammapada-aṭṭhakathā,dhammapada-aṭṭhakathā,dhammapada-aṭṭhakathā,dhammapada-aṭṭhakathā,dhamma. ṭṭha.
+141,123,Udāna-aṭṭhakathā,udāna-aṭṭhakathā,udāna-aṭṭhakathā,udāna-aṭṭhakathā,udāna-aṭṭhakathā,udāna. ṭṭha.
+142,124,Itivuttaka-aṭṭhakathā,itivuttaka-aṭṭhakathā,itivuttaka-aṭṭhakathā,itivuttaka-aṭṭhakathā,itivuttaka-aṭṭhakathā,itivutta. ṭṭha.
+143,125,Suttanipāta-aṭṭhakathā,suttanipāta-aṭṭhakathā,suttanipāta-aṭṭhakathā,suttanipāta-aṭṭhakathā,suttanipāta-aṭṭhakathā,suttani. ṭṭha.
+144,126,Vimānavatthu-aṭṭhakathā,vimānavatthu-aṭṭhakathā,vimānavatthu-aṭṭhakathā,vimānavatthu-aṭṭhakathā,vimānavatthu-aṭṭhakathā,vimāna. ṭṭha.
+145,127,Petavatthu-aṭṭhakathā,petavatthu-aṭṭhakathā,petavatthu-aṭṭhakathā,petavatthu-aṭṭhakathā,petavatthu-aṭṭhakathā,peta. ṭṭha.
+146,128,Theragāthā-aṭṭhakathā(Paṭhamo bhāgo),Theragāthā-aṭṭhakathā,Theragāthā-aṭṭhakathā,Theragāthā-aṭṭhakathā,Theragāthā-aṭṭhakathā,thera. ṭṭha.
+147,129,Theragāthā-aṭṭhakathā(Dutiyo bhāgo),Theragāthā-aṭṭhakathā,Theragāthā-aṭṭhakathā,Theragāthā-aṭṭhakathā,Theragāthā-aṭṭhakathā,thera. ṭṭha.
+148,130,Mūlapaṇṇāsa-aṭṭhakathā,majimanikaya-aṭṭhakathā,majimanikaya-aṭṭhakathā,majimanikaya-aṭṭhakathā,majimanikaya-aṭṭhakathā,ma. ṭṭha.
+149,131,Majjhimapaṇṇāsa-aṭṭhakathā,majimanikaya-aṭṭhakathā,majimanikaya-aṭṭhakathā,majimanikaya-aṭṭhakathā,majimanikaya-aṭṭhakathā,ma. ṭṭha.
+150,132,Uparipaṇṇāsa-aṭṭhakathā,majimanikaya-aṭṭhakathā,majimanikaya-aṭṭhakathā,majimanikaya-aṭṭhakathā,majimanikaya-aṭṭhakathā,ma. ṭṭha.
+151,133,Sagāthāvagga-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃ. ṭṭha.
+152,134,Nidānavagga-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃ. ṭṭha.
+153,135,Khandhavagga-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃ. ṭṭha.
+154,136,Saḷāyatanavagga-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃ. ṭṭha.
+155,137,Mahāvagga-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃyuttanikāya-aṭṭhakathā,saṃ. ṭṭha.
+156,138,Pārājikakaṇḍa-aṭṭhakathā,vinaya-aṭṭhakathā,vinaya-aṭṭhakathā,pārājikakaṇḍa-aṭṭhakathā,vinaya-aṭṭhakathā,vi. ṭṭha.
+157,139,Pācittiya-aṭṭhakathā,vinaya-aṭṭhakathā,vinaya-aṭṭhakathā,pācittiyādi-aṭṭhakathā,vinaya-aṭṭhakathā,vi. ṭṭha.
+158,140,Mahāvagga-aṭṭhakathā,vinaya-aṭṭhakathā,vinaya-aṭṭhakathā,mahāvagga-aṭṭhakathā,vinaya-aṭṭhakathā,vi. ṭṭha.
+159,141,Cūḷavagga-aṭṭhakathā,vinaya-aṭṭhakathā,vinaya-aṭṭhakathā,cūḷavaggādi-aṭṭhakathā,vinaya-aṭṭhakathā,vi. ṭṭha.
+160,142,Parivāra-aṭṭhakathā,vinaya-aṭṭhakathā,vinaya-aṭṭhakathā,parivāra-aṭṭhakathā,vinaya-aṭṭhakathā,vi. ṭṭha.
+161,143,Therāpadānapāḷi(Paṭhamo bhāgo),therāpadānapāḷi,therāpadānapāḷi,therāpadānapāḷi,therāpadānapāḷi,apa.
+162,144,Therāpadānapāḷi(Dutiyo bhāgo),therāpadānapāḷi,therāpadānapāḷi,therāpadānapāḷi,therāpadānapāḷi,apa.
+163,144,therīapadānapāḷi,therīapadānapāḷi,therīapadānapāḷi,therīapadānapāḷi,therīapadānapāḷi,therīapadānapāḷi
+164,145,Buddhavaṃsapāḷi,buddhavaṃsapāḷi,buddhavaṃsapāḷi,buddhavaṃsapāḷi,buddhavaṃsapāḷi,buddhavaṃ.
+165,146,Cariyāpiṭakapāḷi,cariyāpiṭakapāḷi,cariyāpiṭakapāḷi,cariyāpiṭakapāḷi,cariyāpiṭakapāḷi,cariyā.
+166,147,Jātakapāḷi(Dutiyo bhāgo),jātakapāḷi,jātakapāḷi,jātakapāḷi,jātakapāḷi,jā.
+167,148,Jātakapāḷi(Paṭhamo bhāgo),jātakapāḷi,jātakapāḷi,jātakapāḷi,jātakapāḷi,jā.
+168,149,Mahāniddesapāḷi,mahāniddesapāḷi,mahāniddesapāḷi,mahāniddesapāḷi,mahāniddesapāḷi,mahāni.
+169,150,Cūḷaniddesapāḷi,cūḷaniddesapāḷi,cūḷaniddesapāḷi,cūḷaniddesapāḷi,cūḷaniddesapāḷi,cūḷani.
+170,151,Paṭisambhidāmaggapāḷi,paṭisambhidāmaggapāḷi,paṭisambhidāmaggapāḷi,paṭisambhidāmaggapāḷi,paṭisambhidāmaggapāḷi,paṭisaṃ.
+171,152,Milindapañhapāḷi,milindapañhapāḷi,milindapañhapāḷi,milindapañhapāḷi,milindapañhapāḷi,milinda.
+172,153,Nettippakaraṇapāḷi,nettippakaraṇapāḷi,nettippakaraṇapāḷi,nettippakaraṇapāḷi,nettippakaraṇapāḷi,netti.
+173,154,Khuddakapāṭhapāḷi,khuddakapāṭhapāḷi,khuddakapāṭhapāḷi,khuddakapāṭhapāḷi,khuddakapāṭhapāḷi,khuddaka.
+174,155,Peṭakopadesapāḷi,peṭakopadesapāḷi,peṭakopadesapāḷi,peṭakopadesapāḷi,peṭakopadesapāḷi,peṭako.
+175,156,Dhammapadapāḷi,dhammapadapāḷi,dhammapadapāḷi,dhammapadapāḷi,dhammapadapāḷi,dhamma.
+176,157,Udānapāḷi,udānapāḷi,udānapāḷi,udānapāḷi,udānapāḷi,udāna.
+177,158,Itivuttakapāḷi,itivuttakapāḷi,itivuttakapāḷi,itivuttakapāḷi,itivuttakapāḷi,itivutta.
+178,159,Suttanipātapāḷi,suttanipātapāḷi,suttanipātapāḷi,suttanipātapāḷi,suttanipātapāḷi,suttani.
+179,160,Vimānavatthupāḷi,vimānavatthupāḷi,vimānavatthupāḷi,vimānavatthupāḷi,vimānavatthupāḷi,vimāna.
+180,161,Petavatthupāḷi,petavatthupāḷi,petavatthupāḷi,petavatthupāḷi,petavatthupāḷi,peta.
+181,162,Theragāthāpāḷi,theragāthāpāḷi,theragāthāpāḷi,theragāthāpāḷi,theragāthāpāḷi,theragāthā.
+182,163,Therīgāthāpāḷi,therīgāthāpāḷi,therīgāthāpāḷi,therīgāthāpāḷi,therīgāthāpāḷi,therī.
+183,164,Mūlapaṇṇāsapāḷi,majimanikaya,majimanikaya,majimanikaya,majimanikaya,ma.
+184,165,Majjhimapaṇṇāsapāḷi,majimanikaya,majimanikaya,majimanikaya,majimanikaya,ma.
+185,166,Uparipaṇṇāsapāḷi,majimanikaya,majimanikaya,majimanikaya,majimanikaya,ma.
+186,167,Sagāthāvaggo,saṃyuttanikāya,saṃyuttanikāya,saṃyuttanikāya,saṃyuttanikāya,saṃ.
+187,168,Nidānavaggo,saṃyuttanikāya,saṃyuttanikāya,saṃyuttanikāya,saṃyuttanikāya,saṃ.
+188,169,Khandhavaggo,saṃyuttanikāya,saṃyuttanikāya,saṃyuttanikāya,saṃyuttanikāya,saṃ.
+189,170,Saḷāyatanavaggo,saṃyuttanikāya,saṃyuttanikāya,saṃyuttanikāya,saṃyuttanikāya,saṃ.
+190,171,Mahāvaggo,saṃyuttanikāya,saṃyuttanikāya,saṃyuttanikāya,saṃyuttanikāya,saṃ.
+191,172,dhammasaṅgaṇī-mūlaṭīkā,dhammasaṅgaṇī-mūlaṭīkā,dhammasaṅgaṇī-mūlaṭīkā,dhammasaṅgaṇī-mūlaṭīkā,dhammasaṅgaṇī-mūlaṭīkā,mūlaṭī. 1
+192,173,vibhaṅga-mūlaṭīkā,vibhaṅga-mūlaṭīkā,vibhaṅga-mūlaṭīkā,vibhaṅga-mūlaṭīkā,vibhaṅga-mūlaṭīkā,mūlaṭī. 2
+193,173,Vibhaṅga-anuṭīkā,vibhaṅga-anuṭīkā,vibhaṅga-anuṭīkā,vibhaṅga-anuṭīkā,vibhaṅga-anuṭīkā,anuṭī. 2
+194,174,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,mūlaṭī. 3
+195,174,mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,mūlaṭī. 3
+196,174,mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,mūlaṭī. 3
+197,174,mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,mūlaṭī. 3
+198,174,mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,pañcapakaraṇa-mūlaṭīkā,mūlaṭī. 3
+199,175,dhammasaṅgaṇī-anuṭīkā,dhammasaṅgaṇī-anuṭīkā,dhammasaṅgaṇī-anuṭīkā,dhammasaṅgaṇī-anuṭīkā,dhammasaṅgaṇī-anuṭīkā,anuṭī. 1
+200,176,dhātukathāpakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,anuṭī. 3
+201,176,puggalapaññattipakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,anuṭī. 3
+202,176,kathāvatthupakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,anuṭī. 3
+203,176,anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,anuṭī. 3
+204,176,anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,pañcapakaraṇa-anuṭīkā,anuṭī. 3
+205,177,Ganthārambhakathā,abhidhammāvatāro,abhidhammāvatāro,abhidhammāvatāro,abhidhammāvatāro,abhidhammāvatāro
+206,177,nāmarūpaparicchedo,nāmarūpaparicchedo,nāmarūpaparicchedo,nāmarūpaparicchedo,nāmarūpaparicchedo,nāmarūpaparicchedo
+207,177,paramatthavinicchayo,paramatthavinicchayo,paramatthavinicchayo,paramatthavinicchayo,paramatthavinicchayo,paramatthavinicchayo
+208,177,saccasaṅkhepo,saccasaṅkhepo,saccasaṅkhepo,saccasaṅkhepo,saccasaṅkhepo,saccasaṅkhepo
+209,178,Abhidhammatthasaṅgaho,abhidhammatthasaṅgaho,abhidhammatthasaṅgaho,abhidhammatthasaṅgaho,abhidhammatthasaṅgaho,abhidhammatthasaṅgaho
+210,178,abhidhammatthavibhāvinīṭīkā,abhidhammatthavibhāvinīṭīkā,abhidhammatthavibhāvinīṭīkā,abhidhammatthavibhāvinīṭīkā,abhidhammatthavibhāvinīṭīkā,abhidhammatthavibhāvinīṭīkā
+211,179,Paṭhamo paricchedo,abhidhammāvatāra-purāṇaṭīkā,abhidhammāvatāra-purāṇaṭīkā,abhidhammāvatāra-purāṇaṭīkā,abhidhammāvatāra-purāṇaṭīkā,abhidhammāvatāra-purāṇaṭīkā
+212,179,abhidhammāvatāra-abhinavaṭīkā,abhidhammāvatāra-abhinavaṭīkā,abhidhammāvatāra-abhinavaṭīkā,abhidhammāvatāra-abhinavaṭīkā,abhidhammāvatāra-abhinavaṭīkā,abhidhammāvatāra-abhinavaṭīkā
+213,180,Abhidhammamātikāpāḷi,abhidhammamātikāpāḷi,abhidhammamātikāpāḷi,abhidhammamātikāpāḷi,abhidhammamātikāpāḷi,abhidhammamātikāpāḷi
+214,180,mohavicchedanī,mohavicchedanī,mohavicchedanī,mohavicchedanī,mohavicchedanī,mohavicchedanī
+215,181,Ekakanipāta-ṭīkā,aṅguttaranikāya-ṭīkā,aṅguttaranikāya-ṭīkā,aṅguttaranikāya-ṭīkā,aṅguttaranikāya-ṭīkā,aṃ. ṭī.
+216,182,Dukanipāta-ṭīkā,aṅguttaranikāya-ṭīkā,aṅguttaranikāya-ṭīkā,aṅguttaranikāya-ṭīkā,aṅguttaranikāya-ṭīkā,aṃ. ṭī.
+217,182,tikanipāta-ṭīkā,tikanipāta-ṭīkā,tikanipāta-ṭīkā,tikanipāta-ṭīkā,tikanipāta-ṭīkā,aṃ. ṭī.
+218,182,catukkanipāta-ṭīkā,catukkanipāta-ṭīkā,catukkanipāta-ṭīkā,catukkanipāta-ṭīkā,catukkanipāta-ṭīkā,aṃ. ṭī.
+219,183,Pañcakanipāta-ṭīkā,aṅguttaranikāya-ṭīkā,aṅguttaranikāya-ṭīkā,aṅguttaranikāya-ṭīkā,aṅguttaranikāya-ṭīkā,aṃ. ṭī.
+220,183,chakkanipāta-ṭīkā,chakkanipāta-ṭīkā,chakkanipāta-ṭīkā,chakkanipāta-ṭīkā,chakkanipāta-ṭīkā,aṃ. ṭī.
+221,183,sattakanipāta-ṭīkā,sattakanipāta-ṭīkā,sattakanipāta-ṭīkā,sattakanipāta-ṭīkā,sattakanipāta-ṭīkā,aṃ. ṭī.
+222,184,Aṭṭhakanipāta-ṭīkā,aṅguttaranikāya-ṭīkā,aṅguttaranikāya-ṭīkā,aṅguttaranikāya-ṭīkā,aṅguttaranikāya-ṭīkā,aṃ. ṭī.
+223,184,navakanipāta-ṭīkā,navakanipāta-ṭīkā,navakanipāta-ṭīkā,navakanipāta-ṭīkā,navakanipāta-ṭīkā,aṃ. ṭī.
+224,184,dasakanipāta-ṭīkā,dasakanipāta-ṭīkā,dasakanipāta-ṭīkā,dasakanipāta-ṭīkā,dasakanipāta-ṭīkā,aṃ. ṭī.
+225,184,ekādasakanipāta-ṭīkā,ekādasakanipāta-ṭīkā,ekādasakanipāta-ṭīkā,ekādasakanipāta-ṭīkā,ekādasakanipāta-ṭīkā,aṃ. ṭī.
+226,185,Sīlakkhandhavaggaṭīkā,dīghanikāya-ṭīkā,dīghanikāya-ṭīkā,dīghanikāya-ṭīkā,dīghanikāya-ṭīkā,dī. ṭī.
+227,186,Mahāvaggaṭīkā,dīghanikāya-ṭīkā,dīghanikāya-ṭīkā,dīghanikāya-ṭīkā,dīghanikāya-ṭīkā,dī. ṭī.
+228,187,Pāthikavaggaṭīkā,dīghanikāya-ṭīkā,dīghanikāya-ṭīkā,dīghanikāya-ṭīkā,dīghanikāya-ṭīkā,dī. ṭī.
+229,188,Sīlakkhandhavaggaabhinavaṭīkā,dīghanikāya-abhinavaṭīkā,dīghanikāya-abhinavaṭīkā,dīghanikāya-abhinavaṭīkā,dīghanikāya-abhinavaṭīkā,dī. abhi. ṭī.
+230,189,Sīlakkhandhavaggaabhinavaṭīkā,dīghanikāya-abhinavaṭīkā,dīghanikāya-abhinavaṭīkā,dīghanikāya-abhinavaṭīkā,dīghanikāya-abhinavaṭīkā,dī. abhi. ṭī.
+231,190,Nettippakaraṇa-ṭīkā,nettippakaraṇa-ṭīkā,nettippakaraṇa-ṭīkā,nettippakaraṇa-ṭīkā,nettippakaraṇa-ṭīkā,netti. ṭī.
+232,191,Nettivibhāvinī,nettivibhāvinī,nettivibhāvinī,nettivibhāvinī,nettivibhāvinī,netti. vibhā.
+233,192,Mūlapaṇṇāsa-ṭīkā,majjhimanikaya-ṭīkā,majjhimanikaya-ṭīkā,majjhimanikaya-ṭīkā,majjhimanikaya-ṭīkā,ma. ṭī.
+234,193,Majjhimapaṇṇāsaṭīkā,majjhimanikaya-ṭīkā,majjhimanikaya-ṭīkā,majjhimanikaya-ṭīkā,majjhimanikaya-ṭīkā,ma. ṭī.
+235,194,Uparipaṇṇāsa-ṭīkā,majjhimanikaya-ṭīkā,majjhimanikaya-ṭīkā,majjhimanikaya-ṭīkā,majjhimanikaya-ṭīkā,ma. ṭī.
+236,195,Sagāthāvaggaṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃ. ṭī.
+237,196,Nidānavaggaṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃ. ṭī.
+238,197,Khandhavaggaṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃ. ṭī.
+239,198,Saḷāyatanavaggaṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃ. ṭī.
+240,199,Mahāvaggaṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃyuttanikāya-ṭīkā,saṃ. ṭī.
+241,200,Vinayavinicchayo,vinayavinicchayo,vinayavinicchayo,vinayavinicchayo,vinayavinicchayo,vinayavinicchayo
+242,200,uttaravinicchayo,uttaravinicchayo,uttaravinicchayo,uttaravinicchayo,uttaravinicchayo,uttaravinicchayo
+243,201,Vinayavinicchayaṭīkā(Paṭhamo bhāgo),vinayavinicchaya-ṭīkā,vinayavinicchaya-ṭīkā,vinayavinicchaya-ṭīkā,vinayavinicchaya-ṭīkā,vinayavinicchaya-ṭīkā
+244,201,uttaravinicchaya-ṭīkā,uttaravinicchaya-ṭīkā,uttaravinicchaya-ṭīkā,uttaravinicchaya-ṭīkā,uttaravinicchaya-ṭīkā,uttaravinicchaya-ṭīkā
+245,202,Pācityādiyojanā,pācityādiyojanā,pācityādiyojanā,pācityādiyojanā,pācityādiyojanā,pācityādiyojanā
+246,203,Khuddasikkhā-mūlasikkhā,khuddasikkhā,khuddasikkhā,khuddasikkhā,khuddasikkhā,khuddasikkhā
+247,203,khuddasikkhā,khuddasikkhā,khuddasikkhā,khuddasikkhā,khuddasikkhā,khuddasikkhā
+248,203,khuddasikkhā,khuddasikkhā,khuddasikkhā,khuddasikkhā,khuddasikkhā,khuddasikkhā
+249,203,mūlasikkhā,mūlasikkhā,mūlasikkhā,mūlasikkhā,mūlasikkhā,mūlasikkhā
+250,203,mūlasikkhā,mūlasikkhā,mūlasikkhā,mūlasikkhā,mūlasikkhā,mūlasikkhā
+251,204,sāratthadīpanī-ṭīkā (paṭhamo bhāgo),sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sārattha. ṭī.
+252,205,sāratthadīpanī-ṭīkā (dutiyo bhāgo),sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sārattha. ṭī.
+253,206,sāratthadīpanī-ṭīkā (tatiyo bhāgo),sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sārattha. ṭī.
+254,206,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sārattha. ṭī.
+255,206,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sārattha. ṭī.
+256,206,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sāratthadīpanī-ṭīkā,sārattha. ṭī.
+257,207,Bhikkhupātimokkhapāḷi,pātimokkhapāḷi,pātimokkhapāḷi,pātimokkhapāḷi,pātimokkhapāḷi,pātimokkha
+258,207,pātimokkhapāḷi,pātimokkhapāḷi,pātimokkhapāḷi,pātimokkhapāḷi,pātimokkhapāḷi,pātimokkha
+259,207,kaṅkhāvitaraṇī,kaṅkhāvitaraṇī,kaṅkhāvitaraṇī,kaṅkhāvitaraṇī,kaṅkhāvitaraṇī,kaṅkhā.
+260,208,Vinayasaṅgaha-aṭṭhakathā,vinayasaṅgaha-aṭṭhakathā,vinayasaṅgaha-aṭṭhakathā,vinayasaṅgaha-aṭṭhakathā,vinayasaṅgaha-aṭṭhakathā,vinayasaṅgaha-aṭṭhakathā
+261,209,Vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajīra. ṭī.
+262,209,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajīra. ṭī.
+263,209,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajīra. ṭī.
+264,209,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajīra. ṭī.
+265,209,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajīra. ṭī.
+266,209,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajirabuddhi-ṭīkā,vajīra. ṭī.
+267,210,Vimativinodanī-ṭīkā,vimativinodanī-ṭīkā,vimativinodanī-ṭīkā,vimativinodanī-ṭīkā,vimativinodanī-ṭīkā,vimati. ṭī.
+268,210,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,vimati. ṭī.
+269,210,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,vimati. ṭī.
+270,210,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,vimati. ṭī.
+271,210,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,Vimativinodanī-ṭīkā,vimati. ṭī.
+272,211,Vinayālaṅkāra-ṭīkā,vinayālaṅkāra-ṭīkā,vinayālaṅkāra-ṭīkā,vinayālaṅkāra-ṭīkā,vinayālaṅkāra-ṭīkā,ālaṅkāra. ṭī.
+273,212,Kaṅkhāvitaraṇīpurāṇa-ṭīkā,kaṅkhāvitaraṇīpurāṇa-ṭīkā,kaṅkhāvitaraṇīpurāṇa-ṭīkā,kaṅkhāvitaraṇīpurāṇa-ṭīkā,kaṅkhāvitaraṇīpurāṇa-ṭīkā,kaṅkhā. ṭī.
+274,212,Kaṅkhāvitaraṇī-abhinavaṭīkā,kaṅkhāvitaraṇī-abhinavaṭīkā,kaṅkhāvitaraṇī-abhinavaṭīkā,kaṅkhāvitaraṇī-abhinavaṭīkā,kaṅkhāvitaraṇī-abhinavaṭīkā,kaṅkhā.
+275,213,Pārājikapāḷi,pārājikapāḷi,pārājikapāḷi,pārājikapāḷi,vinayapiṭaka,vi.
+276,214,Pācittiyapāḷi,pācittiyapāḷi,pācittiyapāḷi,pācittiyapāḷi,vinayapiṭaka,vi.
+277,215,Mahāvaggapāḷi,mahāvaggapāḷi,mahāvaggapāḷi,mahāvaggapāḷi,vinayapiṭaka,vi.
+278,216,Cūḷavaggapāḷi,cūḷavaggapāḷi,cūḷavaggapāḷi,cūḷavaggapāḷi,vinayapiṭaka,vi.
+279,217,Parivārapāḷi,parivārapāḷi,parivārapāḷi,parivārapāḷi,vinayapiṭaka,vi.
+280,139,samantapāsādikā,vinaya-aṭṭhakathā,vinaya-aṭṭhakathā,vinaya-aṭṭhakathā,vinaya-aṭṭhakathā,vi. ṭṭha.
+281,214,(VN)Bhikkhunīvibhaṅgo,pācittiyapāḷi,pācittiyapāḷi,pācittiyapāḷi,vinayapiṭaka,vi.

Разница между файлами не показана из-за своего большого размера
+ 304 - 44
dashboard/src/components/fts/book_name.json


Разница между файлами не показана из-за своего большого размера
+ 304 - 44
dashboard/src/components/fts/book_name.ts


+ 3 - 3
dashboard/src/components/fts/search.css

@@ -1,10 +1,10 @@
 .search_content > p > del {
 .search_content > p > del {
-  background-color: yellow;
+  background-color: rgba(255, 255, 0, 0.5);
   color: black;
   color: black;
   text-decoration: none;
   text-decoration: none;
 }
 }
 .search_content > p > strong > del {
 .search_content > p > strong > del {
-  background-color: yellow;
+  background-color: rgba(255, 255, 0, 0.5);
   color: black;
   color: black;
   font-weight: 700;
   font-weight: 700;
   text-decoration: none;
   text-decoration: none;
@@ -19,7 +19,7 @@
 }
 }
 
 
 .hl {
 .hl {
-  background-color: yellow;
+  background-color: rgba(255, 255, 0, 0.5);
 }
 }
 .note {
 .note {
   color: #177ddc;
   color: #177ddc;

+ 38 - 4
dashboard/src/components/template/Article.tsx

@@ -3,13 +3,17 @@ import { Typography } from "antd";
 import { useState } from "react";
 import { useState } from "react";
 import Article, { ArticleType } from "../article/Article";
 import Article, { ArticleType } from "../article/Article";
 import { Link } from "react-router-dom";
 import { Link } from "react-router-dom";
+import { fullUrl } from "../../utils";
+
+const { Text } = Typography;
 
 
 export type TDisplayStyle = "modal" | "card" | "toggle" | "link";
 export type TDisplayStyle = "modal" | "card" | "toggle" | "link";
 interface IWidgetChapterCtl {
 interface IWidgetChapterCtl {
   type?: ArticleType;
   type?: ArticleType;
   id?: string;
   id?: string;
   channel?: string;
   channel?: string;
-  title?: string;
+  title?: React.ReactNode;
+  focus?: string | null;
   style?: TDisplayStyle;
   style?: TDisplayStyle;
 }
 }
 
 
@@ -18,6 +22,7 @@ export const ArticleCtl = ({
   id,
   id,
   channel,
   channel,
   title,
   title,
+  focus,
   style = "modal",
   style = "modal",
 }: IWidgetChapterCtl) => {
 }: IWidgetChapterCtl) => {
   const [isModalOpen, setIsModalOpen] = useState(false);
   const [isModalOpen, setIsModalOpen] = useState(false);
@@ -39,19 +44,48 @@ export const ArticleCtl = ({
       type={type}
       type={type}
       articleId={id}
       articleId={id}
       channelId={channel}
       channelId={channel}
+      focus={focus}
       mode="read"
       mode="read"
     />
     />
   );
   );
   let output = <></>;
   let output = <></>;
+  let articleLink = `/article/${type}/${id}?mode=read`;
+  articleLink += channel ? `&channel=${channel}` : "";
+
   switch (style) {
   switch (style) {
     case "modal":
     case "modal":
       output = (
       output = (
         <>
         <>
-          <Typography.Link onClick={showModal}>{aTitle}</Typography.Link>
+          <Typography.Link
+            onClick={(event: React.MouseEvent<HTMLElement, MouseEvent>) => {
+              if (event.ctrlKey || event.metaKey) {
+                let link = `/article/${type}/${id}?mode=read`;
+                link += channel ? `&channel=${channel}` : "";
+                window.open(fullUrl(link), "_blank");
+              } else {
+                showModal();
+              }
+            }}
+          >
+            {aTitle}
+          </Typography.Link>
           <Modal
           <Modal
             width={"80%"}
             width={"80%"}
-            style={{ maxWidth: 1000 }}
-            title={aTitle}
+            style={{ maxWidth: 1000, top: 20 }}
+            title={
+              <div
+                style={{
+                  display: "flex",
+                  justifyContent: "space-between",
+                  marginRight: 30,
+                }}
+              >
+                <Text>{aTitle}</Text>
+                <Link to={articleLink} target="_blank">
+                  {"新窗口打开"}
+                </Link>
+              </div>
+            }
             open={isModalOpen}
             open={isModalOpen}
             onOk={handleOk}
             onOk={handleOk}
             onCancel={handleCancel}
             onCancel={handleCancel}

+ 7 - 1
dashboard/src/components/template/MdTpl.tsx

@@ -1,11 +1,13 @@
-import GrammarPop, { GrammarPopShell } from "../dict/GrammarPop";
+import { GrammarPopShell } from "../dict/GrammarPop";
 import Article from "./Article";
 import Article from "./Article";
 import Exercise from "./Exercise";
 import Exercise from "./Exercise";
 import Mermaid from "./Mermaid";
 import Mermaid from "./Mermaid";
 import Nissaya from "./Nissaya";
 import Nissaya from "./Nissaya";
 import Note from "./Note";
 import Note from "./Note";
 import ParaHandle from "./ParaHandle";
 import ParaHandle from "./ParaHandle";
+import ParaShell from "./ParaShell";
 import Quote from "./Quote";
 import Quote from "./Quote";
+import QuoteLink from "./QuoteLink";
 import SentEdit from "./SentEdit";
 import SentEdit from "./SentEdit";
 import SentRead from "./SentRead";
 import SentRead from "./SentRead";
 import Term from "./Term";
 import Term from "./Term";
@@ -48,6 +50,10 @@ const Widget = ({ tpl, props, children }: IWidgetMdTpl) => {
       return <Mermaid props={props ? props : ""} />;
       return <Mermaid props={props ? props : ""} />;
     case "grammar-pop":
     case "grammar-pop":
       return <GrammarPopShell props={props ? props : ""} />;
       return <GrammarPopShell props={props ? props : ""} />;
+    case "quote-link":
+      return <QuoteLink props={props ? props : ""} />;
+    case "para-shell":
+      return <ParaShell props={props ? props : ""}>{children}</ParaShell>;
     default:
     default:
       return <>未定义模版({tpl})</>;
       return <>未定义模版({tpl})</>;
   }
   }

+ 7 - 10
dashboard/src/components/template/MdView.tsx

@@ -1,5 +1,6 @@
 import { Typography } from "antd";
 import { Typography } from "antd";
 import { TCodeConvertor, XmlToReact } from "./utilities";
 import { TCodeConvertor, XmlToReact } from "./utilities";
+import { gfwClear } from "../../gfwlist";
 const { Paragraph, Text } = Typography;
 const { Paragraph, Text } = Typography;
 
 
 interface IWidget {
 interface IWidget {
@@ -18,17 +19,13 @@ const Widget = ({
   convertor,
   convertor,
   style,
   style,
 }: IWidget) => {
 }: IWidget) => {
-  const jsx =
-    html && html.trim() !== "" ? (
-      XmlToReact(html, wordWidget, convertor)
-    ) : (
-      <Text type="secondary">{placeholder}</Text>
+  if (html && html.trim() !== "") {
+    return (
+      <Paragraph>{XmlToReact(gfwClear(html), wordWidget, convertor)}</Paragraph>
     );
     );
-  return (
-    <Paragraph style={style} className={className}>
-      {jsx}
-    </Paragraph>
-  );
+  } else {
+    return <Text type="secondary">{placeholder}</Text>;
+  }
 };
 };
 
 
 export default Widget;
 export default Widget;

+ 59 - 13
dashboard/src/components/template/ParaHandle.tsx

@@ -1,6 +1,7 @@
-import { Button, Divider, Dropdown, MenuProps, message } from "antd";
+import { Button, Dropdown, MenuProps, message } from "antd";
 import { useNavigate, useSearchParams } from "react-router-dom";
 import { useNavigate, useSearchParams } from "react-router-dom";
 import { fullUrl } from "../../utils";
 import { fullUrl } from "../../utils";
+import { useIntl } from "react-intl";
 
 
 interface IWidgetParaHandleCtl {
 interface IWidgetParaHandleCtl {
   book: number;
   book: number;
@@ -9,7 +10,7 @@ interface IWidgetParaHandleCtl {
   channels?: string[];
   channels?: string[];
   sentences: string[];
   sentences: string[];
 }
 }
-const ParaHandleCtl = ({
+export const ParaHandleCtl = ({
   book,
   book,
   para,
   para,
   mode = "read",
   mode = "read",
@@ -18,21 +19,59 @@ const ParaHandleCtl = ({
 }: IWidgetParaHandleCtl) => {
 }: IWidgetParaHandleCtl) => {
   const navigate = useNavigate();
   const navigate = useNavigate();
   const [searchParams] = useSearchParams();
   const [searchParams] = useSearchParams();
+  const intl = useIntl();
 
 
   const items: MenuProps["items"] = [
   const items: MenuProps["items"] = [
     {
     {
       key: "solo",
       key: "solo",
-      label: "仅显示此段",
+      label: intl.formatMessage({
+        id: "labels.curr.paragraph.only",
+      }),
     },
     },
     {
     {
       key: "solo-in-tab",
       key: "solo-in-tab",
-      label: "在标签页打开此段",
+      label: intl.formatMessage({
+        id: "labels.curr.paragraph.open",
+      }),
     },
     },
     {
     {
       key: "copy-sent",
       key: "copy-sent",
-      label: "复制句子链接",
+      label: intl.formatMessage({
+        id: "labels.curr.paragraph.copy.tpl",
+      }),
+    },
+    {
+      key: "quote-link-tpl",
+      label: intl.formatMessage({
+        id: "labels.curr.paragraph.quote.link.tpl",
+      }),
+      children: [
+        {
+          key: "quote-link-tpl-m",
+          label: intl.formatMessage({
+            id: "labels.page.number.type.M",
+          }),
+        },
+        {
+          key: "quote-link-tpl-p",
+          label: intl.formatMessage({
+            id: "labels.page.number.type.P",
+          }),
+        },
+        {
+          key: "quote-link-tpl-t",
+          label: intl.formatMessage({
+            id: "labels.page.number.type.T",
+          }),
+        },
+      ],
     },
     },
   ];
   ];
+  const copyToClipboard = (text: string) => {
+    navigator.clipboard.writeText(text).then(() => {
+      message.success("链接地址已经拷贝到剪贴板");
+    });
+  };
   const onClick: MenuProps["onClick"] = (e) => {
   const onClick: MenuProps["onClick"] = (e) => {
     /**
     /**
      * TODO 临时的解决方案。以后应该从传参获取其他参数,然后reducer 通知更新。
      * TODO 临时的解决方案。以后应该从传参获取其他参数,然后reducer 通知更新。
@@ -56,26 +95,33 @@ const ParaHandleCtl = ({
         window.open(fullUrl(url), "_blank");
         window.open(fullUrl(url), "_blank");
         break;
         break;
       case "copy-sent":
       case "copy-sent":
-        navigator.clipboard
-          .writeText(sentences.map((item) => `{{${item}}}`).join(""))
-          .then(() => {
-            message.success("链接地址已经拷贝到剪贴板");
-          });
+        copyToClipboard(sentences.map((item) => `{{${item}}}`).join(""));
+        break;
+      case "quote-link-tpl-m":
+        copyToClipboard(`{{ql|type=m|book=${book}|para=${para}}}`);
+        break;
+      case "quote-link-tpl-p":
+        copyToClipboard(`{{ql|type=p|book=${book}|para=${para}}}`);
+        break;
+      case "quote-link-tpl-t":
+        copyToClipboard(`{{ql|type=t|book=${book}|para=${para}}}`);
         break;
         break;
       default:
       default:
         break;
         break;
     }
     }
   };
   };
   return (
   return (
-    <Divider orientation="left">
+    <div>
       <Dropdown
       <Dropdown
         menu={{ items, onClick }}
         menu={{ items, onClick }}
         placement="bottomLeft"
         placement="bottomLeft"
         trigger={["click"]}
         trigger={["click"]}
       >
       >
-        <Button type="text">{para}</Button>
+        <Button size="small" type="text">
+          {para}
+        </Button>
       </Dropdown>
       </Dropdown>
-    </Divider>
+    </div>
   );
   );
 };
 };
 
 

+ 88 - 0
dashboard/src/components/template/ParaShell.tsx

@@ -0,0 +1,88 @@
+import { useEffect, useState } from "react";
+import { useAppSelector } from "../../hooks";
+import { currFocus } from "../../reducers/focus";
+import { ParaHandleCtl } from "./ParaHandle";
+
+interface IWidgetParaShellCtl {
+  book: number;
+  para: number;
+  mode?: string;
+  channels?: string[];
+  sentences: string[];
+  children?: React.ReactNode | React.ReactNode[];
+}
+const ParaShellCtl = ({
+  book,
+  para,
+  mode = "read",
+  channels,
+  sentences,
+  children,
+}: IWidgetParaShellCtl) => {
+  const focus = useAppSelector(currFocus);
+  const [isFocus, setIsFocus] = useState(false);
+  useEffect(() => {
+    if (focus) {
+      if (focus.focus?.type === "para") {
+        if (focus.focus.id) {
+          const arrId = focus.focus.id.split("-");
+          if (arrId.length > 1) {
+            const focusBook = parseInt(arrId[0]);
+            const focusPara = arrId[1].split(",").map((item) => parseInt(item));
+            if (focusBook === book && focusPara.includes(para)) {
+              setIsFocus(true);
+            }
+          }
+        } else {
+          setIsFocus(false);
+        }
+      }
+    } else {
+      setIsFocus(false);
+    }
+  }, [book, focus, para]);
+  return (
+    <div
+      style={{
+        border: isFocus ? "2px solid #e35f00bd " : "1px solid #006bffc7",
+        borderRadius: 6,
+        marginTop: 20,
+        paddingTop: 16,
+      }}
+    >
+      <div
+        style={{
+          position: "absolute",
+          marginTop: "-2em",
+          marginLeft: "1em",
+          backgroundColor: "#d9e9ff",
+          borderRadius: "4px",
+        }}
+      >
+        <ParaHandleCtl
+          book={book}
+          para={para}
+          mode={mode}
+          channels={channels}
+          sentences={sentences}
+        />
+      </div>
+      {children}
+    </div>
+  );
+};
+
+interface IWidget {
+  props: string;
+  children?: React.ReactNode | React.ReactNode[];
+}
+const Widget = ({ props, children }: IWidget) => {
+  const prop = JSON.parse(atob(props)) as IWidgetParaShellCtl;
+  return (
+    <>
+      <ParaShellCtl {...prop}>{children}</ParaShellCtl>
+    </>
+  );
+};
+
+export default Widget;

+ 63 - 0
dashboard/src/components/template/QuoteLink.tsx

@@ -0,0 +1,63 @@
+import { bookName as _bookName } from "../fts/book_name";
+import { ArticleCtl, TDisplayStyle } from "./Article";
+import { IWidgetTermCtl, TermCtl } from "./Term";
+
+interface IWidgetQuoteLinkCtl {
+  type: string;
+  bookName: string;
+  bookNameLocal?: string;
+  volume: string;
+  page: string;
+  style: TDisplayStyle;
+  book?: number;
+  para?: number;
+  term?: IWidgetTermCtl;
+}
+const QuoteLinkCtl = ({
+  type,
+  bookName,
+  bookNameLocal,
+  volume,
+  page,
+  style,
+  book,
+  para,
+  term,
+}: IWidgetQuoteLinkCtl) => {
+  const abbr = bookNameLocal
+    ? bookNameLocal
+    : _bookName.find((value) => value.term === bookName)?.abbr;
+  let textShow = ` ${volume}.${page}`;
+
+  return (
+    <>
+      <ArticleCtl
+        title={
+          <>
+            <TermCtl {...term} compact={true} />
+            {textShow}
+          </>
+        }
+        type={"page"}
+        focus={book && para ? `${book}-${para}` : undefined}
+        id={`${type}_${bookName}_${volume}_${page}`}
+        style={style}
+      />
+    </>
+  );
+};
+
+interface IWidget {
+  props: string;
+}
+const Widget = ({ props }: IWidget) => {
+  const prop = JSON.parse(atob(props)) as IWidgetQuoteLinkCtl;
+  console.log(prop);
+  return (
+    <>
+      <QuoteLinkCtl {...prop} />
+    </>
+  );
+};
+
+export default Widget;

+ 7 - 5
dashboard/src/components/template/Term.tsx

@@ -37,7 +37,7 @@ interface ITermSummary {
   data: string;
   data: string;
 }
 }
 
 
-interface IWidgetTermCtl {
+export interface IWidgetTermCtl {
   id?: string;
   id?: string;
   word?: string;
   word?: string;
   meaning?: string;
   meaning?: string;
@@ -47,8 +47,9 @@ interface IWidgetTermCtl {
   parentStudioId?: string /**该术语所在译文的studio_id */;
   parentStudioId?: string /**该术语所在译文的studio_id */;
   summary?: string;
   summary?: string;
   isCommunity?: boolean;
   isCommunity?: boolean;
+  compact?: boolean;
 }
 }
-const TermCtl = ({
+export const TermCtl = ({
   id,
   id,
   word,
   word,
   meaning,
   meaning,
@@ -58,6 +59,7 @@ const TermCtl = ({
   parentStudioId,
   parentStudioId,
   summary,
   summary,
   isCommunity,
   isCommunity,
+  compact = false,
 }: IWidgetTermCtl) => {
 }: IWidgetTermCtl) => {
   const [openPopover, setOpenPopover] = useState(false);
   const [openPopover, setOpenPopover] = useState(false);
   const [termData, setTermData] = useState<ITerm>({
   const [termData, setTermData] = useState<ITerm>({
@@ -75,7 +77,6 @@ const TermCtl = ({
   const [uid, setUid] = useState<string>(
   const [uid, setUid] = useState<string>(
     lodash.times(20, () => lodash.random(35).toString(36)).join("")
     lodash.times(20, () => lodash.random(35).toString(36)).join("")
   );
   );
-
   const termOrder = useAppSelector(order);
   const termOrder = useAppSelector(order);
 
 
   useEffect(() => {
   useEffect(() => {
@@ -167,8 +168,9 @@ const TermCtl = ({
                   }}
                   }}
                   trigger={
                   trigger={
                     <Button
                     <Button
-                      onClick={() => {
+                      onClick={(event: React.MouseEvent<any, MouseEvent>) => {
                         setOpenPopover(false);
                         setOpenPopover(false);
+                        //event.stopPropagation();
                       }}
                       }}
                       type="link"
                       type="link"
                       size="small"
                       size="small"
@@ -237,7 +239,7 @@ const TermCtl = ({
               : "unknown"}
               : "unknown"}
           </Typography.Link>
           </Typography.Link>
         </Popover>
         </Popover>
-        {isFirst ? (
+        {isFirst && !compact ? (
           <TermExtra pali={word} meaning2={termData?.meaning2} />
           <TermExtra pali={word} meaning2={termData?.meaning2} />
         ) : undefined}
         ) : undefined}
       </>
       </>

+ 1 - 2
dashboard/src/components/term/TermEdit.tsx

@@ -84,7 +84,6 @@ const TermEditWidget = ({
   const [isSaveAs, setIsSaveAs] = useState(false);
   const [isSaveAs, setIsSaveAs] = useState(false);
   const [currChannel, setCurrChannel] = useState<ValueType[]>([]);
   const [currChannel, setCurrChannel] = useState<ValueType[]>([]);
   const user = useAppSelector(_currentUser);
   const user = useAppSelector(_currentUser);
-
   //console.log("word", id, word, channelId, studioName);
   //console.log("word", id, word, channelId, studioName);
 
 
   const [form] = Form.useForm<ITerm>();
   const [form] = Form.useForm<ITerm>();
@@ -383,7 +382,7 @@ const TermEditWidget = ({
                 disabled: user?.id !== parentStudioId,
                 disabled: user?.id !== parentStudioId,
               },
               },
               {
               {
-                value: parentChannelId,
+                value: parentChannelId ? parentChannelId : channelId,
                 label: "仅用于此版本",
                 label: "仅用于此版本",
                 disabled: !community && readonly,
                 disabled: !community && readonly,
               },
               },

+ 1 - 1
dashboard/src/components/term/TermExport.tsx

@@ -37,7 +37,7 @@ const TermExportWidget = ({ channelId, studioName }: IWidget) => {
         get<IExportResponse>(url)
         get<IExportResponse>(url)
           .then((json) => {
           .then((json) => {
             if (json.ok) {
             if (json.ok) {
-              const link = `${API_HOST}/api/v2/download/${json.data.type}/${json.data.uuid}/${json.data.filename}`;
+              const link = `${API_HOST}/api/v2/terms-export/${json.data.uuid}`;
               modal.info({
               modal.info({
                 title: intl.formatMessage({ id: "buttons.download" }),
                 title: intl.formatMessage({ id: "buttons.download" }),
                 content: (
                 content: (

+ 5946 - 0
dashboard/src/gfwlist.ts

@@ -0,0 +1,5946 @@
+export const gfwClear = (input: string): string => {
+  if (process.env.REACT_APP_ICP_CODE) {
+    gfwBlackList.forEach((value) => {
+      input = input.replaceAll(value, "wikipali.org");
+    });
+  }
+  return input;
+};
+export const gfwBlackList = [
+  "000webhost.com",
+  "030buy.com",
+  "0rz.tw",
+  "1-apple.com.tw",
+  "10.tt",
+  "1000giri.net",
+  "100ke.org",
+  "10beasts.net",
+  "10conditionsoflove.com",
+  "10musume.com",
+  "123rf.com",
+  "12bet.com",
+  "12vpn.com",
+  "12vpn.net",
+  "1337x.to",
+  "138.com",
+  "141hongkong.com",
+  "141jj.com",
+  "141tube.com",
+  "1688.com.au",
+  "173ng.com",
+  "177pic.info",
+  "17t17p.com",
+  "18board.com",
+  "18board.info",
+  "18onlygirls.com",
+  "18p2p.com",
+  "18virginsex.com",
+  "1949er.org",
+  "1984.city",
+  "1984bbs.com",
+  "1984bbs.org",
+  "1991way.com",
+  "1998cdp.org",
+  "1bao.org",
+  "1dumb.com",
+  "1e100.net",
+  "1eew.com",
+  "1mobile.com",
+  "1mobile.tw",
+  "1pondo.tv",
+  "2-hand.info",
+  "2000fun.com",
+  "2008xianzhang.info",
+  "2017.hk",
+  "2021hkcharter.com",
+  "2047.name",
+  "21andy.com",
+  "21join.com",
+  "21pron.com",
+  "21sextury.com",
+  "228.net.tw",
+  "233abc.com",
+  "24hrs.ca",
+  "24smile.org",
+  "25u.com",
+  "2lipstube.com",
+  "2shared.com",
+  "2waky.com",
+  "3-a.net",
+  "30boxes.com",
+  "315lz.com",
+  "32red.com",
+  "36rain.com",
+  "3a5a.com",
+  "3arabtv.com",
+  "3boys2girls.com",
+  "3d-game.com",
+  "3proxy.ru",
+  "3ren.ca",
+  "3tui.net",
+  "404museum.com",
+  "43110.cf",
+  "466453.com",
+  "4bluestones.biz",
+  "4chan.com",
+  "4dq.com",
+  "4everproxy.com",
+  "4irc.com",
+  "4mydomain.com",
+  "4pu.com",
+  "4rbtv.com",
+  "4shared.com",
+  "4sqi.net",
+  "50webs.com",
+  "51.ca",
+  "51jav.org",
+  "51luoben.com",
+  "5278.cc",
+  "5299.tv",
+  "5aimiku.com",
+  "5i01.com",
+  "5isotoi5.org",
+  "5maodang.com",
+  "63i.com",
+  "64museum.org",
+  "64tianwang.com",
+  "64wiki.com",
+  "66.ca",
+  "666kb.com",
+  "6do.news",
+  "6park.com",
+  "6parkbbs.com",
+  "6parker.com",
+  "6parknews.com",
+  "7capture.com",
+  "7cow.com",
+  "8-d.com",
+  "85cc.net",
+  "85cc.us",
+  "85st.com",
+  "881903.com",
+  "888.com",
+  "888poker.com",
+  "89-64.org",
+  "8964museum.com",
+  "8news.com.tw",
+  "8z1.net",
+  "9001700.com",
+  "908taiwan.org",
+  "91porn.com",
+  "91vps.club",
+  "92ccav.com",
+  "991.com",
+  "99btgc01.com",
+  "99cn.info",
+  "9bis.com",
+  "9bis.net",
+  "9cache.com",
+  "9gag.com",
+  "9news.com.au",
+  "a-normal-day.com",
+  "aamacau.com",
+  "abc.com",
+  "abc.net.au",
+  "abc.xyz",
+  "abchinese.com",
+  "abclite.net",
+  "abebooks.com",
+  "ablwang.com",
+  "aboluowang.com",
+  "about.google",
+  "about.me",
+  "aboutgfw.com",
+  "abs.edu",
+  "acast.com",
+  "accim.org",
+  "accountkit.com",
+  "aceros-de-hispania.com",
+  "acevpn.com",
+  "acg18.me",
+  "acgbox.org",
+  "acgkj.com",
+  "acgnx.se",
+  "acmedia365.com",
+  "acmetoy.com",
+  "acnw.com.au",
+  "actfortibet.org",
+  "actimes.com.au",
+  "activpn.com",
+  "aculo.us",
+  "adcex.com",
+  "addictedtocoffee.de",
+  "addyoutube.com",
+  "adelaidebbs.com",
+  "admob.com",
+  "adpl.org.hk",
+  "ads-twitter.com",
+  "adsense.com",
+  "adult-sex-games.com",
+  "adultfriendfinder.com",
+  "adultkeep.net",
+  "advanscene.com",
+  "advertfan.com",
+  "advertisercommunity.com",
+  "ae.org",
+  "aei.org",
+  "aenhancers.com",
+  "aex.com",
+  "af.mil",
+  "afantibbs.com",
+  "afr.com",
+  "afreecatv.com",
+  "agnesb.fr",
+  "agoogleaday.com",
+  "agro.hk",
+  "ai-kan.net",
+  "ai-wen.net",
+  "ai.google",
+  "aiph.net",
+  "airasia.com",
+  "airconsole.com",
+  "aircrack-ng.org",
+  "airvpn.org",
+  "aisex.com",
+  "ait.org.tw",
+  "aiweiwei.com",
+  "aiweiweiblog.com",
+  "ajsands.com",
+  "akademiye.org",
+  "akamai.net",
+  "akamaihd.net",
+  "akamaistream.net",
+  "akamaized.net",
+  "akiba-online.com",
+  "akiba-web.com",
+  "akow.org",
+  "al-islam.com",
+  "al-qimmah.net",
+  "alabout.com",
+  "alanhou.com",
+  "alarab.qa",
+  "alasbarricadas.org",
+  "alexlur.org",
+  "alforattv.net",
+  "alhayat.com",
+  "alicejapan.co.jp",
+  "aliengu.com",
+  "alive.bar",
+  "alkasir.com",
+  "all4mom.org",
+  "allcoin.com",
+  "allconnected.co",
+  "alldrawnsex.com",
+  "allervpn.com",
+  "allfinegirls.com",
+  "allgirlmassage.com",
+  "allgirlsallowed.org",
+  "allgravure.com",
+  "alliance.org.hk",
+  "allinfa.com",
+  "alljackpotscasino.com",
+  "allmovie.com",
+  "allowed.org",
+  "almasdarnews.com",
+  "almostmy.com",
+  "alphaporno.com",
+  "alternate-tools.com",
+  "alternativeto.net",
+  "altrec.com",
+  "alvinalexander.com",
+  "alwaysdata.com",
+  "alwaysdata.net",
+  "alwaysvpn.com",
+  "am730.com.hk",
+  "amazon.co.jp",
+  "amazon.com",
+  "amazonaws.com",
+  "ameblo.jp",
+  "america.gov",
+  "american.edu",
+  "americangreencard.com",
+  "americanunfinished.com",
+  "americorps.gov",
+  "amiblockedornot.com",
+  "amigobbs.net",
+  "amitabhafoundation.us",
+  "amnesty.org",
+  "amnesty.org.hk",
+  "amnesty.tw",
+  "amnestyusa.org",
+  "amnyemachen.org",
+  "amoiist.com",
+  "ampproject.org",
+  "amtb-taipei.org",
+  "anchor.fm",
+  "anchorfree.com",
+  "ancsconf.org",
+  "andfaraway.net",
+  "android-x86.org",
+  "android.com",
+  "androidify.com",
+  "androidplus.co",
+  "androidtv.com",
+  "andygod.com",
+  "angela-merkel.de",
+  "angelfire.com",
+  "angola.org",
+  "angularjs.org",
+  "animecrazy.net",
+  "aniscartujo.com",
+  "annatam.com",
+  "anobii.com",
+  "anonfiles.com",
+  "anontext.com",
+  "anonymitynetwork.com",
+  "anonymizer.com",
+  "anonymouse.org",
+  "anpopo.com",
+  "answering-islam.org",
+  "antd.org",
+  "anthonycalzadilla.com",
+  "anti1984.com",
+  "antichristendom.com",
+  "antiwave.net",
+  "anws.gov.tw",
+  "anyporn.com",
+  "anysex.com",
+  "ao3.org",
+  "aobo.com.au",
+  "aofriend.com",
+  "aofriend.com.au",
+  "aojiao.org",
+  "aol.ca",
+  "aol.co.uk",
+  "aol.com",
+  "aolnews.com",
+  "aomiwang.com",
+  "ap.org",
+  "apartmentratings.com",
+  "apartments.com",
+  "apat1989.org",
+  "apetube.com",
+  "api.ai",
+  "apiary.io",
+  "apigee.com",
+  "apk-dl.com",
+  "apk.support",
+  "apkcombo.com",
+  "apkmirror.com",
+  "apkmonk.com",
+  "apkplz.com",
+  "apkpure.com",
+  "aplusvpn.com",
+  "appbrain.com",
+  "appdownloader.net",
+  "appledaily.com",
+  "appledaily.com.hk",
+  "appledaily.com.tw",
+  "appshopper.com",
+  "appsocks.net",
+  "appspot.com",
+  "appsto.re",
+  "aptoide.com",
+  "archive.fo",
+  "archive.is",
+  "archive.li",
+  "archive.org",
+  "archive.ph",
+  "archive.today",
+  "archiveofourown.com",
+  "archiveofourown.org",
+  "archives.gov",
+  "archives.gov.tw",
+  "arctosia.com",
+  "areca-backup.org",
+  "arena.taipei",
+  "arethusa.su",
+  "arlingtoncemetery.mil",
+  "army.mil",
+  "art4tibet1998.org",
+  "arte.tv",
+  "artofpeacefoundation.org",
+  "artstation.com",
+  "artsy.net",
+  "asacp.org",
+  "asdfg.jp",
+  "asg.to",
+  "asia-gaming.com",
+  "asiaharvest.org",
+  "asianage.com",
+  "asianews.it",
+  "asianfreeforum.com",
+  "asiansexdiary.com",
+  "asianspiss.com",
+  "asianwomensfilm.de",
+  "asiaone.com",
+  "asiatgp.com",
+  "asiatoday.us",
+  "askstudent.com",
+  "askynz.net",
+  "aspi.org.au",
+  "aspistrategist.org.au",
+  "assembla.com",
+  "assimp.org",
+  "astrill.com",
+  "atc.org.au",
+  "atchinese.com",
+  "atdmt.com",
+  "atgfw.org",
+  "athenaeizou.com",
+  "atlanta168.com",
+  "atlaspost.com",
+  "atnext.com",
+  "audionow.com",
+  "authorizeddns.net",
+  "authorizeddns.org",
+  "authorizeddns.us",
+  "autodraw.com",
+  "av-e-body.com",
+  "av.com",
+  "av.movie",
+  "avaaz.org",
+  "avbody.tv",
+  "avcity.tv",
+  "avcool.com",
+  "avdb.in",
+  "avdb.tv",
+  "avfantasy.com",
+  "avg.com",
+  "avgle.com",
+  "avidemux.org",
+  "avmo.pw",
+  "avmoo.com",
+  "avmoo.net",
+  "avmoo.pw",
+  "avoision.com",
+  "avyahoo.com",
+  "axios.com",
+  "axureformac.com",
+  "azerbaycan.tv",
+  "azerimix.com",
+  "azubu.tv",
+  "azurewebsites.net",
+  "b-ok.cc",
+  "b0ne.com",
+  "baby-kingdom.com",
+  "babylonbee.com",
+  "babynet.com.hk",
+  "backchina.com",
+  "backpackers.com.tw",
+  "backtotiananmen.com",
+  "badiucao.com",
+  "badjojo.com",
+  "badoo.com",
+  "baidu.jp",
+  "baijie.org",
+  "bailandaily.com",
+  "baixing.me",
+  "baizhi.org",
+  "bakgeekhome.tk",
+  "banana-vpn.com",
+  "band.us",
+  "bandcamp.com",
+  "bandwagonhost.com",
+  "bangbrosnetwork.com",
+  "bangchen.net",
+  "bangdream.space",
+  "bangkokpost.com",
+  "bangyoulater.com",
+  "bankmobilevibe.com",
+  "bannedbook.org",
+  "bannednews.org",
+  "banorte.com",
+  "baramangaonline.com",
+  "barenakedislam.com",
+  "barnabu.co.uk",
+  "barton.de",
+  "bastillepost.com",
+  "bayvoice.net",
+  "baywords.com",
+  "bb-chat.tv",
+  "bbc.co.uk",
+  "bbc.com",
+  "bbc.in",
+  "bbcchinese.com",
+  "bbchat.tv",
+  "bbci.co.uk",
+  "bbg.gov",
+  "bbkz.com",
+  "bbnradio.org",
+  "bbs-tw.com",
+  "bbsdigest.com",
+  "bbsfeed.com",
+  "bbsland.com",
+  "bbsmo.com",
+  "bbsone.com",
+  "bbtoystore.com",
+  "bcast.co.nz",
+  "bcc.com.tw",
+  "bcchinese.net",
+  "bcex.ca",
+  "bcmorning.com",
+  "bdsmvideos.net",
+  "beaconevents.com",
+  "bebo.com",
+  "beeg.com",
+  "beevpn.com",
+  "behance.net",
+  "behindkink.com",
+  "beijing1989.com",
+  "beijing2022.art",
+  "beijingspring.com",
+  "beijingzx.org",
+  "belamionline.com",
+  "bell.wiki",
+  "bemywife.cc",
+  "beric.me",
+  "berlinerbericht.de",
+  "berlintwitterwall.com",
+  "berm.co.nz",
+  "bestforchina.org",
+  "bestgore.com",
+  "bestpornstardb.com",
+  "bestvpn.com",
+  "bestvpnanalysis.com",
+  "bestvpnserver.com",
+  "bestvpnservice.com",
+  "bestvpnusa.com",
+  "bet365.com",
+  "betfair.com",
+  "betternet.co",
+  "bettervpn.com",
+  "bettween.com",
+  "betvictor.com",
+  "bewww.net",
+  "beyondfirewall.com",
+  "bfnn.org",
+  "bfsh.hk",
+  "bgvpn.com",
+  "bianlei.com",
+  "biantailajiao.com",
+  "biantailajiao.in",
+  "biblesforamerica.org",
+  "bibox.com",
+  "bic2011.org",
+  "biedian.me",
+  "big.one",
+  "bigfools.com",
+  "bigjapanesesex.com",
+  "bigmoney.biz",
+  "bignews.org",
+  "bigone.com",
+  "bigsound.org",
+  "bild.de",
+  "biliworld.com",
+  "billypan.com",
+  "binance.com",
+  "bing.com",
+  "binux.me",
+  "binwang.me",
+  "bird.so",
+  "bit-z.com",
+  "bit.do",
+  "bit.ly",
+  "bitbay.net",
+  "bitchute.com",
+  "bitcointalk.org",
+  "bitcoinworld.com",
+  "bitfinex.com",
+  "bithumb.com",
+  "bitinka.com.ar",
+  "bitmex.com",
+  "bitshare.com",
+  "bitsnoop.com",
+  "bitterwinter.org",
+  "bitvise.com",
+  "bitz.ai",
+  "bizhat.com",
+  "bjnewlife.org",
+  "bjs.org",
+  "bjzc.org",
+  "bl-doujinsouko.com",
+  "blacklogic.com",
+  "blackvpn.com",
+  "blewpass.com",
+  "blingblingsquad.net",
+  "blinkx.com",
+  "blinw.com",
+  "blip.tv",
+  "blockcast.it",
+  "blockcn.com",
+  "blockedbyhk.com",
+  "blockless.com",
+  "blog.de",
+  "blog.google",
+  "blog.jp",
+  "blogblog.com",
+  "blogcatalog.com",
+  "blogcity.me",
+  "blogdns.org",
+  "blogger.com",
+  "blogimg.jp",
+  "bloglines.com",
+  "bloglovin.com",
+  "blogs.com",
+  "blogspot.com",
+  "blogspot.hk",
+  "blogspot.jp",
+  "blogspot.tw",
+  "blogtd.net",
+  "blogtd.org",
+  "bloodshed.net",
+  "bloomberg.cn",
+  "bloomberg.com",
+  "bloomberg.de",
+  "bloombergview.com",
+  "bloomfortune.com",
+  "blubrry.com",
+  "blueangellive.com",
+  "bmfinn.com",
+  "bnews.co",
+  "bnext.com.tw",
+  "bnn.co",
+  "bnrmetal.com",
+  "boardreader.com",
+  "bod.asia",
+  "bodog88.com",
+  "bolehvpn.net",
+  "bonbonme.com",
+  "bonbonsex.com",
+  "bonfoundation.org",
+  "bongacams.com",
+  "boobstagram.com",
+  "book.com.tw",
+  "bookdepository.com",
+  "bookepub.com",
+  "books.com.tw",
+  "booktopia.com.au",
+  "boomssr.com",
+  "borgenmagazine.com",
+  "bot.nu",
+  "botanwang.com",
+  "bowenpress.com",
+  "box.com",
+  "box.net",
+  "boxpn.com",
+  "boxun.com",
+  "boxun.tv",
+  "boxunblog.com",
+  "boxunclub.com",
+  "boyangu.com",
+  "boyfriendtv.com",
+  "boysfood.com",
+  "boysmaster.com",
+  "br.st",
+  "brainyquote.com",
+  "brandonhutchinson.com",
+  "braumeister.org",
+  "brave.com",
+  "bravotube.net",
+  "brazzers.com",
+  "breached.to",
+  "break.com",
+  "breakgfw.com",
+  "breaking911.com",
+  "breakingtweets.com",
+  "breakwall.net",
+  "briefdream.com",
+  "briian.com",
+  "brill.com",
+  "brizzly.com",
+  "brkmd.com",
+  "broadbook.com",
+  "broadpressinc.com",
+  "brockbbs.com",
+  "brookings.edu",
+  "brucewang.net",
+  "brutaltgp.com",
+  "bt2mag.com",
+  "bt95.com",
+  "btaia.com",
+  "btbtav.com",
+  "btc98.com",
+  "btcbank.bank",
+  "btctrade.im",
+  "btdig.com",
+  "btdigg.org",
+  "btku.me",
+  "btku.org",
+  "btspread.com",
+  "btsynckeys.com",
+  "budaedu.org",
+  "buddhanet.com.tw",
+  "buffered.com",
+  "bullguard.com",
+  "bullog.org",
+  "bullogger.com",
+  "bumingbai.net",
+  "bunbunhk.com",
+  "busayari.com",
+  "business-humanrights.org",
+  "business.page",
+  "businessinsider.com",
+  "businessinsider.com.au",
+  "businesstoday.com.tw",
+  "businessweek.com",
+  "busu.org",
+  "busytrade.com",
+  "buugaa.com",
+  "buzzhand.com",
+  "buzzhand.net",
+  "buzzorange.com",
+  "bvpn.com",
+  "bwbx.io",
+  "bwgyhw.com",
+  "bwh1.net",
+  "bwsj.hk",
+  "bx.in.th",
+  "bx.tl",
+  "bybit.com",
+  "bynet.co.il",
+  "bypasscensorship.org",
+  "byrut.org",
+  "c-est-simple.com",
+  "c-span.org",
+  "c-spanvideo.org",
+  "c100tibet.org",
+  "c2cx.com",
+  "cablegatesearch.net",
+  "cachinese.com",
+  "cacnw.com",
+  "cactusvpn.com",
+  "cafepress.com",
+  "cahr.org.tw",
+  "caijinglengyan.com",
+  "calameo.com",
+  "calebelston.com",
+  "calgarychinese.ca",
+  "calgarychinese.com",
+  "calgarychinese.net",
+  "calibre-ebook.com",
+  "caltech.edu",
+  "cam4.com",
+  "cam4.jp",
+  "cam4.sg",
+  "camfrog.com",
+  "campaignforuyghurs.org",
+  "cams.com",
+  "cams.org.sg",
+  "canadameet.com",
+  "canalporno.com",
+  "cantonese.asia",
+  "canyu.org",
+  "cao.im",
+  "caobian.info",
+  "caochangqing.com",
+  "cap.org.hk",
+  "carabinasypistolas.com",
+  "cardinalkungfoundation.org",
+  "careerengine.us",
+  "carfax.com",
+  "cari.com.my",
+  "caribbeancom.com",
+  "carmotorshow.com",
+  "carrd.co",
+  "carryzhou.com",
+  "cartoonmovement.com",
+  "casadeltibetbcn.org",
+  "casatibet.org.mx",
+  "casinobellini.com",
+  "casinoking.com",
+  "casinoriva.com",
+  "castbox.fm",
+  "catch22.net",
+  "catchgod.com",
+  "catfightpayperview.xxx",
+  "catholic.org.hk",
+  "catholic.org.tw",
+  "cathvoice.org.tw",
+  "cato.org",
+  "cattt.com",
+  "cbc.ca",
+  "cbsnews.com",
+  "cbtc.org.hk",
+  "cc.com",
+  "cccat.cc",
+  "cccat.co",
+  "ccdtr.org",
+  "cchere.com",
+  "ccim.org",
+  "cclife.ca",
+  "cclife.org",
+  "cclifefl.org",
+  "ccthere.com",
+  "ccthere.net",
+  "cctmweb.net",
+  "cctongbao.com",
+  "ccue.ca",
+  "ccue.com",
+  "ccvoice.ca",
+  "ccw.org.tw",
+  "cdbook.org",
+  "cdcparty.com",
+  "cdef.org",
+  "cdig.info",
+  "cdjp.org",
+  "cdnews.com.tw",
+  "cdninstagram.com",
+  "cdp1989.org",
+  "cdp1998.org",
+  "cdp2006.org",
+  "cdpeu.org",
+  "cdpusa.org",
+  "cdpweb.org",
+  "cdpwu.org",
+  "cdw.com",
+  "cecc.gov",
+  "cellulo.info",
+  "cenews.eu",
+  "centauro.com.br",
+  "centerforhumanreprod.com",
+  "centralnation.com",
+  "centurys.net",
+  "certificate-transparency.org",
+  "cfhks.org.hk",
+  "cfos.de",
+  "cfr.org",
+  "cftfc.com",
+  "cgdepot.org",
+  "cgst.edu",
+  "change.org",
+  "changeip.name",
+  "changeip.net",
+  "changeip.org",
+  "changp.com",
+  "changsa.net",
+  "channelnewsasia.com",
+  "chaoex.com",
+  "chapm25.com",
+  "chatnook.com",
+  "chaturbate.com",
+  "checkgfw.com",
+  "chengmingmag.com",
+  "chenguangcheng.com",
+  "chenpokong.com",
+  "chenpokong.net",
+  "chenpokongvip.com",
+  "cherrysave.com",
+  "chhongbi.org",
+  "chicagoncmtv.com",
+  "china-mmm.net",
+  "china-review.com.ua",
+  "china-week.com",
+  "china101.com",
+  "china18.org",
+  "china21.com",
+  "china21.org",
+  "china5000.us",
+  "chinaaffairs.org",
+  "chinaaid.me",
+  "chinaaid.net",
+  "chinaaid.org",
+  "chinaaid.us",
+  "chinachange.org",
+  "chinachannel.hk",
+  "chinacitynews.be",
+  "chinacomments.org",
+  "chinadialogue.net",
+  "chinadigitaltimes.net",
+  "chinaelections.org",
+  "chinaeweekly.com",
+  "chinafile.com",
+  "chinafreepress.org",
+  "chinagate.com",
+  "chinageeks.org",
+  "chinagfw.org",
+  "chinagonet.com",
+  "chinagreenparty.org",
+  "chinahorizon.org",
+  "chinahush.com",
+  "chinainperspective.com",
+  "chinainterimgov.org",
+  "chinalaborwatch.org",
+  "chinalawandpolicy.com",
+  "chinalawtranslate.com",
+  "chinamule.com",
+  "chinamz.org",
+  "chinanewscenter.com",
+  "chinapost.com.tw",
+  "chinapress.com.my",
+  "chinarightsia.org",
+  "chinasmile.net",
+  "chinasocialdemocraticparty.com",
+  "chinasoul.org",
+  "chinasucks.net",
+  "chinatimes.com",
+  "chinatopsex.com",
+  "chinatown.com.au",
+  "chinatweeps.com",
+  "chinaway.org",
+  "chinaworker.info",
+  "chinaxchina.com",
+  "chinayouth.org.hk",
+  "chinayuanmin.org",
+  "chinese-hermit.net",
+  "chinese-leaders.org",
+  "chinese-memorial.org",
+  "chinesedaily.com",
+  "chinesedailynews.com",
+  "chinesedemocracy.com",
+  "chinesegay.org",
+  "chinesen.de",
+  "chinesenews.net.au",
+  "chinesepen.org",
+  "chineseradioseattle.com",
+  "chinesetalks.net",
+  "chineseupress.com",
+  "chingcheong.com",
+  "chinman.net",
+  "chithu.org",
+  "chobit.cc",
+  "chosun.com",
+  "chrdnet.com",
+  "christianfreedom.org",
+  "christianstudy.com",
+  "christiantimes.org.hk",
+  "christusrex.org",
+  "chrlawyers.hk",
+  "chrome.com",
+  "chromecast.com",
+  "chromeenterprise.google",
+  "chromeexperiments.com",
+  "chromercise.com",
+  "chromestatus.com",
+  "chromium.org",
+  "chuang-yen.org",
+  "chubold.com",
+  "chubun.com",
+  "churchinhongkong.org",
+  "chushigangdrug.ch",
+  "cienen.com",
+  "cineastentreff.de",
+  "cipfg.org",
+  "circlethebayfortibet.org",
+  "cirosantilli.com",
+  "citizencn.com",
+  "citizenlab.ca",
+  "citizenlab.org",
+  "citizenscommission.hk",
+  "citizensradio.org",
+  "city365.ca",
+  "city9x.com",
+  "citypopulation.de",
+  "citytalk.tw",
+  "civicparty.hk",
+  "civildisobediencemovement.org",
+  "civilhrfront.org",
+  "civiliangunner.com",
+  "civilmedia.tw",
+  "civisec.org",
+  "civitai.com",
+  "ck101.com",
+  "clarionproject.org",
+  "classicalguitarblog.net",
+  "clb.org.hk",
+  "cleansite.biz",
+  "cleansite.info",
+  "cleansite.us",
+  "clearharmony.net",
+  "clearsurance.com",
+  "clearwisdom.net",
+  "clementine-player.org",
+  "clinica-tibet.ru",
+  "clipfish.de",
+  "cloakpoint.com",
+  "cloudcone.com",
+  "cloudflare-ipfs.com",
+  "cloudfront.net",
+  "cloudfunctions.net",
+  "club1069.com",
+  "clubhouseapi.com",
+  "clyp.it",
+  "cmcn.org",
+  "cmi.org.tw",
+  "cmoinc.org",
+  "cms.gov",
+  "cmu.edu",
+  "cmule.com",
+  "cmule.org",
+  "cmx.im",
+  "cn-proxy.com",
+  "cn.com",
+  "cn6.eu",
+  "cna.com.tw",
+  "cnabc.com",
+  "cnd.org",
+  "cnet.com",
+  "cnex.org.cn",
+  "cnineu.com",
+  "cnitter.com",
+  "cnn.com",
+  "cnpolitics.org",
+  "cnproxy.com",
+  "cnyes.com",
+  "co.tv",
+  "coat.co.jp",
+  "cobinhood.com",
+  "cochina.co",
+  "cochina.org",
+  "code1984.com",
+  "codeplex.com",
+  "codeshare.io",
+  "codeskulptor.org",
+  "coin2co.in",
+  "coinbene.com",
+  "coinegg.com",
+  "coinex.com",
+  "coingecko.com",
+  "coingi.com",
+  "coinmarketcap.com",
+  "coinrail.co.kr",
+  "cointiger.com",
+  "cointobe.com",
+  "coinut.com",
+  "collateralmurder.com",
+  "collateralmurder.org",
+  "com.google",
+  "com.ru",
+  "com.uk",
+  "comedycentral.com",
+  "comefromchina.com",
+  "comic-mega.me",
+  "comico.tw",
+  "commandarms.com",
+  "commentshk.com",
+  "communistcrimes.org",
+  "communitychoicecu.com",
+  "comparitech.com",
+  "compileheart.com",
+  "compress.to",
+  "compython.net",
+  "conoha.jp",
+  "constitutionalism.solutions",
+  "contactmagazine.net",
+  "convio.net",
+  "coobay.com",
+  "cool18.com",
+  "coolaler.com",
+  "coolder.com",
+  "coolloud.org.tw",
+  "coolncute.com",
+  "coolstuffinc.com",
+  "corumcollege.com",
+  "cos-moe.com",
+  "cosplayjav.pl",
+  "costco.com",
+  "cotweet.com",
+  "counter.social",
+  "coursehero.com",
+  "cpj.org",
+  "cq99.us",
+  "crackle.com",
+  "crazys.cc",
+  "crazyshit.com",
+  "crbug.com",
+  "crchina.org",
+  "crd-net.org",
+  "creaders.net",
+  "creadersnet.com",
+  "creativelab5.com",
+  "crisisresponse.google",
+  "cristyli.com",
+  "crocotube.com",
+  "crossfire.co.kr",
+  "crossthewall.net",
+  "crossvpn.net",
+  "croxyproxy.com",
+  "crrev.com",
+  "crucial.com",
+  "crunchyroll.com",
+  "cryptographyengineering.com",
+  "csdparty.com",
+  "csis.org",
+  "csmonitor.com",
+  "csuchen.de",
+  "csw.org.uk",
+  "ct.org.tw",
+  "ctao.org",
+  "ctfriend.net",
+  "ctitv.com.tw",
+  "ctowc.org",
+  "cts.com.tw",
+  "ctwant.com",
+  "cuhk.edu.hk",
+  "cuhkacs.org",
+  "cuihua.org",
+  "cuiweiping.net",
+  "culture.tw",
+  "cumlouder.com",
+  "curvefish.com",
+  "cusp.hk",
+  "cusu.hk",
+  "cutscenes.net",
+  "cw.com.tw",
+  "cwb.gov.tw",
+  "cyberctm.com",
+  "cyberghostvpn.com",
+  "cynscribe.com",
+  "cytode.us",
+  "cz.cc",
+  "d-fukyu.com",
+  "d0z.net",
+  "d100.net",
+  "d2bay.com",
+  "d2pass.com",
+  "dabr.co.uk",
+  "dabr.eu",
+  "dabr.me",
+  "dabr.mobi",
+  "dadazim.com",
+  "dadi360.com",
+  "dafabet.com",
+  "dafagood.com",
+  "dafahao.com",
+  "dafoh.org",
+  "daftporn.com",
+  "dagelijksestandaard.nl",
+  "daidostup.ru",
+  "dailidaili.com",
+  "dailymail.co.uk",
+  "dailymotion.com",
+  "dailysabah.com",
+  "dailyview.tw",
+  "daiphapinfo.net",
+  "dajiyuan.com",
+  "dajiyuan.de",
+  "dajiyuan.eu",
+  "dalailama-archives.org",
+  "dalailama.com",
+  "dalailama.mn",
+  "dalailama.ru",
+  "dalailama80.org",
+  "dalailamacenter.org",
+  "dalailamafellows.org",
+  "dalailamafilm.com",
+  "dalailamafoundation.org",
+  "dalailamahindi.com",
+  "dalailamainaustralia.org",
+  "dalailamajapanese.com",
+  "dalailamaprotesters.info",
+  "dalailamaquotes.org",
+  "dalailamatrust.org",
+  "dalailamavisit.org.nz",
+  "dalailamaworld.com",
+  "dalianmeng.org",
+  "daliulian.org",
+  "danke4china.net",
+  "daolan.net",
+  "darktech.org",
+  "darktoy.net",
+  "darpa.mil",
+  "darrenliuwei.com",
+  "dastrassi.org",
+  "data-vocabulary.org",
+  "data.gov.tw",
+  "daum.net",
+  "david-kilgour.com",
+  "dawangidc.com",
+  "daxa.cn",
+  "dayabook.com",
+  "daylife.com",
+  "db.tt",
+  "dbc.hk",
+  "dbgjd.com",
+  "dcard.tw",
+  "dcmilitary.com",
+  "ddc.com.tw",
+  "ddhw.info",
+  "ddns.info",
+  "ddns.me.uk",
+  "ddns.mobi",
+  "ddns.ms",
+  "ddns.name",
+  "ddns.net",
+  "ddns.us",
+  "de-sci.org",
+  "deadline.com",
+  "deaftone.com",
+  "debug.com",
+  "deck.ly",
+  "decodet.co",
+  "deepmind.com",
+  "deezer.com",
+  "definebabe.com",
+  "deja.com",
+  "delcamp.net",
+  "delicious.com",
+  "democrats.org",
+  "demosisto.hk",
+  "depositphotos.com",
+  "desc.se",
+  "design.google",
+  "desipro.de",
+  "dessci.com",
+  "destroy-china.jp",
+  "deutsche-welle.de",
+  "deviantart.com",
+  "deviantart.net",
+  "devio.us",
+  "devpn.com",
+  "dfas.mil",
+  "dfn.org",
+  "dharamsalanet.com",
+  "dharmakara.net",
+  "dhcp.biz",
+  "diaoyuislands.org",
+  "difangwenge.org",
+  "digiland.tw",
+  "digisfera.com",
+  "digitalnomadsproject.org",
+  "diigo.com",
+  "dilber.se",
+  "dingchin.com.tw",
+  "dipity.com",
+  "directcreative.com",
+  "discoins.com",
+  "disconnect.me",
+  "discord.com",
+  "discord.gg",
+  "discordapp.com",
+  "discordapp.net",
+  "discuss.com.hk",
+  "discuss4u.com",
+  "dish.com",
+  "disp.cc",
+  "disqus.com",
+  "dit-inc.us",
+  "dizhidizhi.com",
+  "dizhuzhishang.com",
+  "djangosnippets.org",
+  "djorz.com",
+  "dl-laby.jp",
+  "dlive.tv",
+  "dlsite.com",
+  "dlsite.jp",
+  "dlyoutube.com",
+  "dm530.net",
+  "dmc.nico",
+  "dmcdn.net",
+  "dmhy.org",
+  "dmm.co.jp",
+  "dmm.com",
+  "dns-dns.com",
+  "dns-stuff.com",
+  "dns.google",
+  "dns04.com",
+  "dns05.com",
+  "dns1.us",
+  "dns2.us",
+  "dns2go.com",
+  "dnscrypt.org",
+  "dnset.com",
+  "dnsrd.com",
+  "dnssec.net",
+  "dnvod.tv",
+  "docker.com",
+  "doctorvoice.org",
+  "documentingreality.com",
+  "dogfartnetwork.com",
+  "dojin.com",
+  "dok-forum.net",
+  "dolc.de",
+  "dolf.org.hk",
+  "dollf.com",
+  "domain.club.tw",
+  "domains.google",
+  "domaintoday.com.au",
+  "donga.com",
+  "dongtaiwang.com",
+  "dongtaiwang.net",
+  "dongyangjing.com",
+  "donmai.us",
+  "dontfilter.us",
+  "dontmovetochina.com",
+  "dorjeshugden.com",
+  "dotplane.com",
+  "dotsub.com",
+  "dotvpn.com",
+  "doub.io",
+  "doubibackup.com",
+  "doublethinklab.org",
+  "doubmirror.cf",
+  "dougscripts.com",
+  "douhokanko.net",
+  "doujincafe.com",
+  "dowei.org",
+  "dowjones.com",
+  "dphk.org",
+  "dpp.org.tw",
+  "dpr.info",
+  "dragonex.io",
+  "dragonsprings.org",
+  "dreamamateurs.com",
+  "drepung.org",
+  "drgan.net",
+  "drmingxia.org",
+  "dropbooks.tv",
+  "dropbox.com",
+  "dropboxapi.com",
+  "dropboxusercontent.com",
+  "drsunacademy.com",
+  "drtuber.com",
+  "dscn.info",
+  "dsmtp.com",
+  "dstk.dk",
+  "dtdns.net",
+  "dtiblog.com",
+  "dtic.mil",
+  "dtwang.org",
+  "duanzhihu.com",
+  "dubox.com",
+  "duck.com",
+  "duckdns.org",
+  "duckduckgo.com",
+  "duckload.com",
+  "duckmylife.com",
+  "duga.jp",
+  "duihua.org",
+  "duihuahrjournal.org",
+  "dumb1.com",
+  "dunyabulteni.net",
+  "duoweitimes.com",
+  "duping.net",
+  "duplicati.com",
+  "dupola.com",
+  "dupola.net",
+  "dushi.ca",
+  "duyaoss.com",
+  "dvdpac.com",
+  "dvorak.org",
+  "dw-world.com",
+  "dw-world.de",
+  "dw.com",
+  "dw.de",
+  "dwheeler.com",
+  "dwnews.com",
+  "dwnews.net",
+  "dxiong.com",
+  "dynamic-dns.net",
+  "dynamicdns.biz",
+  "dynamicdns.co.uk",
+  "dynamicdns.me.uk",
+  "dynamicdns.org.uk",
+  "dynawebinc.com",
+  "dyndns-ip.com",
+  "dyndns-pics.com",
+  "dyndns.org",
+  "dyndns.pro",
+  "dynssl.com",
+  "dynu.com",
+  "dynu.net",
+  "dysfz.cc",
+  "dzze.com",
+  "e-classical.com.tw",
+  "e-gold.com",
+  "e-hentai.org",
+  "e-hentaidb.com",
+  "e-info.org.tw",
+  "e-traderland.net",
+  "e-zone.com.hk",
+  "e123.hk",
+  "earlytibet.com",
+  "earthcam.com",
+  "earthvpn.com",
+  "eastern-ark.com",
+  "easternlightning.org",
+  "eastturkestan.com",
+  "eastturkistan-gov.org",
+  "eastturkistan.net",
+  "eastturkistancc.org",
+  "eastturkistangovernmentinexile.us",
+  "easyca.ca",
+  "easypic.com",
+  "ebc.net.tw",
+  "ebony-beauty.com",
+  "ebookbrowse.com",
+  "ebookee.com",
+  "ebtcbank.com",
+  "ecfa.org.tw",
+  "echainhost.com",
+  "echofon.com",
+  "ecimg.tw",
+  "ecministry.net",
+  "economist.com",
+  "ecstart.com",
+  "edgecastcdn.net",
+  "edgesuite.net",
+  "edicypages.com",
+  "edmontonchina.cn",
+  "edmontonservice.com",
+  "edns.biz",
+  "edoors.com",
+  "edubridge.com",
+  "edupro.org",
+  "eesti.ee",
+  "eevpn.com",
+  "efcc.org.hk",
+  "effers.com",
+  "efksoft.com",
+  "efukt.com",
+  "eic-av.com",
+  "eireinikotaerukai.com",
+  "eisbb.com",
+  "eksisozluk.com",
+  "electionsmeter.com",
+  "elgoog.im",
+  "ellawine.org",
+  "elpais.com",
+  "eltondisney.com",
+  "emaga.com",
+  "emanna.com",
+  "emilylau.org.hk",
+  "emory.edu",
+  "empfil.com",
+  "emule-ed2k.com",
+  "emulefans.com",
+  "emuparadise.me",
+  "enanyang.my",
+  "encrypt.me",
+  "encyclopedia.com",
+  "enewstree.com",
+  "enfal.de",
+  "engadget.com",
+  "engagedaily.org",
+  "englishforeveryone.org",
+  "englishfromengland.co.uk",
+  "englishpen.org",
+  "enlighten.org.tw",
+  "entermap.com",
+  "environment.google",
+  "epa.gov.tw",
+  "epac.to",
+  "episcopalchurch.org",
+  "epochhk.com",
+  "epochtimes-bg.com",
+  "epochtimes-romania.com",
+  "epochtimes.co.il",
+  "epochtimes.co.kr",
+  "epochtimes.com",
+  "epochtimes.cz",
+  "epochtimes.de",
+  "epochtimes.fr",
+  "epochtimes.ie",
+  "epochtimes.it",
+  "epochtimes.jp",
+  "epochtimes.ru",
+  "epochtimes.se",
+  "epochtimestr.com",
+  "epochweek.com",
+  "epochweekly.com",
+  "eporner.com",
+  "equinenow.com",
+  "erabaru.net",
+  "eracom.com.tw",
+  "eraysoft.com.tr",
+  "erepublik.com",
+  "erights.net",
+  "eriversoft.com",
+  "erktv.com",
+  "ernestmandel.org",
+  "erodaizensyu.com",
+  "erodoujinlog.com",
+  "erodoujinworld.com",
+  "eromanga-kingdom.com",
+  "eromangadouzin.com",
+  "eromon.net",
+  "eroprofile.com",
+  "eroticsaloon.net",
+  "eslite.com",
+  "esmtp.biz",
+  "esu.dog",
+  "esu.im",
+  "esurance.com",
+  "etaa.org.au",
+  "etadult.com",
+  "etaiwannews.com",
+  "etherdelta.com",
+  "etherscan.io",
+  "etizer.org",
+  "etokki.com",
+  "etowns.net",
+  "etowns.org",
+  "etsy.com",
+  "ettoday.net",
+  "etvonline.hk",
+  "eu.org",
+  "eucasino.com",
+  "eulam.com",
+  "eurekavpt.com",
+  "euronews.com",
+  "europa.eu",
+  "evozi.com",
+  "evschool.net",
+  "exblog.co.jp",
+  "exblog.jp",
+  "exchristian.hk",
+  "excite.co.jp",
+  "exhentai.org",
+  "exmo.com",
+  "exmormon.org",
+  "expatshield.com",
+  "expecthim.com",
+  "expekt.com",
+  "experts-univers.com",
+  "exploader.net",
+  "expofutures.com",
+  "expressvpn.com",
+  "exrates.me",
+  "extmatrix.com",
+  "extremetube.com",
+  "exx.com",
+  "eyevio.jp",
+  "eyny.com",
+  "ezpc.tk",
+  "ezpeer.com",
+  "ezua.com",
+  "f8.com",
+  "fa.gov.tw",
+  "facebook.br",
+  "facebook.com",
+  "facebook.design",
+  "facebook.hu",
+  "facebook.in",
+  "facebook.net",
+  "facebook.nl",
+  "facebook.se",
+  "facebookmail.com",
+  "facebookquotes4u.com",
+  "faceless.me",
+  "facesofnyfw.com",
+  "facesoftibetanselfimmolators.info",
+  "factpedia.org",
+  "fail.hk",
+  "faith100.org",
+  "faithfuleye.com",
+  "faiththedog.info",
+  "fakku.net",
+  "fallenark.com",
+  "falsefire.com",
+  "falun-co.org",
+  "falun-ny.net",
+  "falunart.org",
+  "falunasia.info",
+  "falunau.org",
+  "falunaz.net",
+  "falundafa-dc.org",
+  "falundafa-florida.org",
+  "falundafa-nc.org",
+  "falundafa-pa.net",
+  "falundafa-sacramento.org",
+  "falundafa.org",
+  "falundafaindia.org",
+  "falundafamuseum.org",
+  "falungong.club",
+  "falungong.de",
+  "falungong.org.uk",
+  "falunhr.org",
+  "faluninfo.de",
+  "faluninfo.net",
+  "falunpilipinas.net",
+  "falunworld.net",
+  "familyfed.org",
+  "famunion.com",
+  "fan-qiang.com",
+  "fandom.com",
+  "fangbinxing.com",
+  "fangeming.com",
+  "fangeqiang.com",
+  "fanglizhi.info",
+  "fangmincn.org",
+  "fangong.org",
+  "fangongheike.com",
+  "fanhaodang.com",
+  "fanhaolou.com",
+  "fanqiang.network",
+  "fanqiang.tk",
+  "fanqiangdang.com",
+  "fanqianghou.com",
+  "fanqiangyakexi.net",
+  "fanqiangzhe.com",
+  "fanswong.com",
+  "fantv.hk",
+  "fanyue.info",
+  "fapdu.com",
+  "faproxy.com",
+  "faqserv.com",
+  "fartit.com",
+  "farwestchina.com",
+  "fastestvpn.com",
+  "fastly.net",
+  "fastpic.ru",
+  "fastssh.com",
+  "faststone.org",
+  "fatbtc.com",
+  "favotter.net",
+  "favstar.fm",
+  "fawanghuihui.org",
+  "faydao.com",
+  "faz.net",
+  "fb.com",
+  "fb.me",
+  "fb.watch",
+  "fbaddins.com",
+  "fbcdn.net",
+  "fbsbx.com",
+  "fbworkmail.com",
+  "fc2.com",
+  "fc2blog.net",
+  "fc2china.com",
+  "fc2cn.com",
+  "fc2web.com",
+  "fda.gov.tw",
+  "fdbox.com",
+  "fdc64.de",
+  "fdc64.org",
+  "fdc89.jp",
+  "feedburner.com",
+  "feeder.co",
+  "feedly.com",
+  "feedx.net",
+  "feelssh.com",
+  "feer.com",
+  "feifeiss.com",
+  "feitian-california.org",
+  "feitianacademy.org",
+  "feixiaohao.com",
+  "feministteacher.com",
+  "fengzhenghu.com",
+  "fengzhenghu.net",
+  "fevernet.com",
+  "ff.im",
+  "fffff.at",
+  "fflick.com",
+  "ffvpn.com",
+  "fgmtv.net",
+  "fgmtv.org",
+  "fhreports.net",
+  "figprayer.com",
+  "fileflyer.com",
+  "fileforum.com",
+  "files2me.com",
+  "fileserve.com",
+  "filesor.com",
+  "fillthesquare.org",
+  "filmingfortibet.org",
+  "filthdump.com",
+  "financetwitter.com",
+  "finchvpn.com",
+  "findmespot.com",
+  "findyoutube.com",
+  "findyoutube.net",
+  "fingerdaily.com",
+  "finler.net",
+  "firearmsworld.net",
+  "firebaseio.com",
+  "firefox.com",
+  "fireofliberty.org",
+  "firetweet.io",
+  "firstfivefollowers.com",
+  "firstpost.com",
+  "firstrade.com",
+  "fizzik.com",
+  "flagsonline.it",
+  "flecheinthepeche.fr",
+  "fleshbot.com",
+  "fleursdeslettres.com",
+  "flgg.us",
+  "flgjustice.org",
+  "flickr.com",
+  "flickrhivemind.net",
+  "flickriver.com",
+  "fling.com",
+  "flipboard.com",
+  "flipkart.com",
+  "flitto.com",
+  "flnet.org",
+  "flog.tw",
+  "flurry.com",
+  "flyvpn.com",
+  "flyzy2005.com",
+  "fmnnow.com",
+  "fnac.be",
+  "fnac.com",
+  "fochk.org",
+  "focustaiwan.tw",
+  "focusvpn.com",
+  "fofg-europe.net",
+  "fofg.org",
+  "fofldfradio.org",
+  "foolsmountain.com",
+  "fooooo.com",
+  "foreignaffairs.com",
+  "foreignpolicy.com",
+  "forum4hk.com",
+  "forums-free.com",
+  "fotile.me",
+  "fourthinternational.org",
+  "foxbusiness.com",
+  "foxdie.us",
+  "foxgay.com",
+  "foxsub.com",
+  "foxtang.com",
+  "fpmt-osel.org",
+  "fpmt.org",
+  "fpmt.tw",
+  "fpmtmexico.org",
+  "fqok.org",
+  "fqrouter.com",
+  "franklc.com",
+  "freakshare.com",
+  "free-gate.org",
+  "free-hada-now.org",
+  "free-proxy.cz",
+  "free-ss.site",
+  "free-ssh.com",
+  "free.fr",
+  "free4u.com.ar",
+  "freealim.com",
+  "freebeacon.com",
+  "freebearblog.org",
+  "freebrowser.org",
+  "freechal.com",
+  "freechina.net",
+  "freechina.news",
+  "freechinaforum.org",
+  "freechinaweibo.com",
+  "freeddns.com",
+  "freeddns.org",
+  "freedomchina.info",
+  "freedomcollection.org",
+  "freedomhouse.org",
+  "freedomsherald.org",
+  "freeforums.org",
+  "freefq.com",
+  "freefuckvids.com",
+  "freegao.com",
+  "freehongkong.org",
+  "freeilhamtohti.org",
+  "freekazakhs.org",
+  "freekwonpyong.org",
+  "freelotto.com",
+  "freeman2.com",
+  "freemoren.com",
+  "freemorenews.com",
+  "freemuse.org",
+  "freenet-china.org",
+  "freenetproject.org",
+  "freenewscn.com",
+  "freeones.com",
+  "freeopenvpn.com",
+  "freeoz.org",
+  "freerk.com",
+  "freessh.us",
+  "freetcp.com",
+  "freetibet.net",
+  "freetibet.org",
+  "freetibetanheroes.org",
+  "freetribe.me",
+  "freeviewmovies.com",
+  "freevpn.me",
+  "freevpn.nl",
+  "freewallpaper4.me",
+  "freewebs.com",
+  "freewechat.com",
+  "freeweibo.com",
+  "freewww.biz",
+  "freewww.info",
+  "freexinwen.com",
+  "freeyellow.com",
+  "freeyoutubeproxy.net",
+  "frienddy.com",
+  "friendfeed-media.com",
+  "friendfeed.com",
+  "friendfinder.com",
+  "friends-of-tibet.org",
+  "friendsoftibet.org",
+  "fring.com",
+  "fringenetwork.com",
+  "from-pr.com",
+  "from-sd.com",
+  "fromchinatousa.net",
+  "frommel.net",
+  "frontlinedefenders.org",
+  "frootvpn.com",
+  "fscked.org",
+  "fsurf.com",
+  "ftchinese.com",
+  "ftp1.biz",
+  "ftpserver.biz",
+  "ftv.com.tw",
+  "ftvnews.com.tw",
+  "ftx.com",
+  "fucd.com",
+  "fuckcnnic.net",
+  "fuckgfw.org",
+  "fuckgfw233.org",
+  "fulione.com",
+  "fullerconsideration.com",
+  "fulue.com",
+  "funf.tw",
+  "funkyimg.com",
+  "funp.com",
+  "fuq.com",
+  "furbo.org",
+  "furhhdl.org",
+  "furinkan.com",
+  "furl.net",
+  "futurechinaforum.org",
+  "futuremessage.org",
+  "fux.com",
+  "fuyin.net",
+  "fuyindiantai.org",
+  "fuyu.org.tw",
+  "fw.cm",
+  "fxcm-chinese.com",
+  "fxnetworks.com",
+  "fzh999.com",
+  "fzh999.net",
+  "fzlm.com",
+  "g-area.org",
+  "g-queen.com",
+  "g.co",
+  "g0v.social",
+  "g6hentai.com",
+  "gab.com",
+  "gabocorp.com",
+  "gaeproxy.com",
+  "gaforum.org",
+  "gagaoolala.com",
+  "galaxymacau.com",
+  "galenwu.com",
+  "galstars.net",
+  "game735.com",
+  "gamebase.com.tw",
+  "gamejolt.com",
+  "gamer.com.tw",
+  "gamerp.jp",
+  "gamez.com.tw",
+  "gamousa.com",
+  "ganges.com",
+  "ganjing.com",
+  "ganjingworld.com",
+  "gaoming.net",
+  "gaopi.net",
+  "gaozhisheng.net",
+  "gaozhisheng.org",
+  "gardennetworks.com",
+  "gardennetworks.org",
+  "gartlive.com",
+  "gate-project.com",
+  "gate.io",
+  "gatecoin.com",
+  "gather.com",
+  "gatherproxy.com",
+  "gati.org.tw",
+  "gaybubble.com",
+  "gaycn.net",
+  "gayhub.com",
+  "gaymap.cc",
+  "gaymenring.com",
+  "gaytube.com",
+  "gaywatch.com",
+  "gazotube.com",
+  "gcc.org.hk",
+  "gclooney.com",
+  "gclubs.com",
+  "gcmasia.com",
+  "gcpnews.com",
+  "gcr.io",
+  "gdbt.net",
+  "gdzf.org",
+  "geek-art.net",
+  "geekerhome.com",
+  "geekheart.info",
+  "gekikame.com",
+  "gelbooru.com",
+  "genius.com",
+  "geocities.co.jp",
+  "geocities.com",
+  "geocities.jp",
+  "geph.io",
+  "gerefoundation.org",
+  "get.app",
+  "get.dev",
+  "get.how",
+  "get.page",
+  "getastrill.com",
+  "getchu.com",
+  "getcloak.com",
+  "getfoxyproxy.org",
+  "getfreedur.com",
+  "getgom.com",
+  "geti2p.net",
+  "getiton.com",
+  "getjetso.com",
+  "getlantern.org",
+  "getmalus.com",
+  "getmdl.io",
+  "getoutline.org",
+  "getsocialscope.com",
+  "getsync.com",
+  "gettr.com",
+  "gettrials.com",
+  "gettyimages.com",
+  "getuploader.com",
+  "gfbv.de",
+  "gfgold.com.hk",
+  "gfsale.com",
+  "gfw.org.ua",
+  "gfw.press",
+  "gfw.report",
+  "ggpht.com",
+  "ggssl.com",
+  "ghidra-sre.org",
+  "ghostpath.com",
+  "ghut.org",
+  "giantessnight.com",
+  "gifree.com",
+  "giga-web.jp",
+  "gigacircle.com",
+  "giganews.com",
+  "gigporno.ru",
+  "girlbanker.com",
+  "git.io",
+  "gitbooks.io",
+  "githack.com",
+  "github.blog",
+  "github.com",
+  "github.io",
+  "githubassets.com",
+  "githubusercontent.com",
+  "gizlen.net",
+  "gjczz.com",
+  "glass8.eu",
+  "globaljihad.net",
+  "globalmediaoutreach.com",
+  "globalmuseumoncommunism.org",
+  "globalrescue.net",
+  "globaltm.org",
+  "globalvoices.org",
+  "globalvoicesonline.org",
+  "globalvpn.net",
+  "glock.com",
+  "gloryhole.com",
+  "glorystar.me",
+  "gluckman.com",
+  "glype.com",
+  "gmail.com",
+  "gmgard.com",
+  "gmhz.org",
+  "gmiddle.com",
+  "gmiddle.net",
+  "gmll.org",
+  "gmodules.com",
+  "gmx.net",
+  "gnci.org.hk",
+  "gnews.org",
+  "go-pki.com",
+  "go141.com",
+  "goagent.biz",
+  "goagentplus.com",
+  "gobet.cc",
+  "godaddy.com",
+  "godfootsteps.org",
+  "godns.work",
+  "godoc.org",
+  "godsdirectcontact.co.uk",
+  "godsdirectcontact.org",
+  "godsdirectcontact.org.tw",
+  "godsimmediatecontact.com",
+  "gofundme.com",
+  "gogotunnel.com",
+  "gohappy.com.tw",
+  "gokbayrak.com",
+  "golang.org",
+  "goldbet.com",
+  "goldbetsports.com",
+  "golden-ages.org",
+  "goldeneyevault.com",
+  "goldenfrog.com",
+  "goldjizz.com",
+  "goldstep.net",
+  "goldwave.com",
+  "gongm.in",
+  "gongmeng.info",
+  "gongminliliang.com",
+  "gongwt.com",
+  "goo.gl",
+  "goo.gle",
+  "goo.ne.jp",
+  "gooday.xyz",
+  "gooddns.info",
+  "goodhope.school",
+  "goodreaders.com",
+  "goodreads.com",
+  "goodtv.com.tw",
+  "goodtv.tv",
+  "goofind.com",
+  "google.ac",
+  "google.ad",
+  "google.ae",
+  "google.af",
+  "google.ai",
+  "google.al",
+  "google.am",
+  "google.as",
+  "google.at",
+  "google.az",
+  "google.ba",
+  "google.be",
+  "google.bf",
+  "google.bg",
+  "google.bi",
+  "google.bj",
+  "google.bs",
+  "google.bt",
+  "google.by",
+  "google.ca",
+  "google.cat",
+  "google.cd",
+  "google.cf",
+  "google.cg",
+  "google.ch",
+  "google.ci",
+  "google.cl",
+  "google.cm",
+  "google.cn",
+  "google.co.ao",
+  "google.co.bw",
+  "google.co.ck",
+  "google.co.cr",
+  "google.co.id",
+  "google.co.il",
+  "google.co.in",
+  "google.co.jp",
+  "google.co.ke",
+  "google.co.kr",
+  "google.co.ls",
+  "google.co.ma",
+  "google.co.mz",
+  "google.co.nz",
+  "google.co.th",
+  "google.co.tz",
+  "google.co.ug",
+  "google.co.uk",
+  "google.co.uz",
+  "google.co.ve",
+  "google.co.vi",
+  "google.co.za",
+  "google.co.zm",
+  "google.co.zw",
+  "google.com",
+  "google.com.af",
+  "google.com.ag",
+  "google.com.ai",
+  "google.com.ar",
+  "google.com.au",
+  "google.com.bd",
+  "google.com.bh",
+  "google.com.bn",
+  "google.com.bo",
+  "google.com.br",
+  "google.com.bz",
+  "google.com.co",
+  "google.com.cu",
+  "google.com.cy",
+  "google.com.do",
+  "google.com.ec",
+  "google.com.eg",
+  "google.com.et",
+  "google.com.fj",
+  "google.com.gh",
+  "google.com.gi",
+  "google.com.gt",
+  "google.com.hk",
+  "google.com.jm",
+  "google.com.kh",
+  "google.com.kw",
+  "google.com.lb",
+  "google.com.ly",
+  "google.com.mm",
+  "google.com.mt",
+  "google.com.mx",
+  "google.com.my",
+  "google.com.na",
+  "google.com.nf",
+  "google.com.ng",
+  "google.com.ni",
+  "google.com.np",
+  "google.com.om",
+  "google.com.pa",
+  "google.com.pe",
+  "google.com.pg",
+  "google.com.ph",
+  "google.com.pk",
+  "google.com.pr",
+  "google.com.py",
+  "google.com.qa",
+  "google.com.sa",
+  "google.com.sb",
+  "google.com.sg",
+  "google.com.sl",
+  "google.com.sv",
+  "google.com.tj",
+  "google.com.tr",
+  "google.com.tw",
+  "google.com.ua",
+  "google.com.uy",
+  "google.com.vc",
+  "google.com.vn",
+  "google.cv",
+  "google.cz",
+  "google.de",
+  "google.dev",
+  "google.dj",
+  "google.dk",
+  "google.dm",
+  "google.dz",
+  "google.ee",
+  "google.es",
+  "google.eu",
+  "google.fi",
+  "google.fm",
+  "google.fr",
+  "google.ga",
+  "google.ge",
+  "google.gg",
+  "google.gl",
+  "google.gm",
+  "google.gp",
+  "google.gr",
+  "google.gy",
+  "google.hk",
+  "google.hn",
+  "google.hr",
+  "google.ht",
+  "google.hu",
+  "google.ie",
+  "google.im",
+  "google.iq",
+  "google.is",
+  "google.it",
+  "google.it.ao",
+  "google.je",
+  "google.jo",
+  "google.kg",
+  "google.ki",
+  "google.kz",
+  "google.la",
+  "google.li",
+  "google.lk",
+  "google.lt",
+  "google.lu",
+  "google.lv",
+  "google.md",
+  "google.me",
+  "google.mg",
+  "google.mk",
+  "google.ml",
+  "google.mn",
+  "google.ms",
+  "google.mu",
+  "google.mv",
+  "google.mw",
+  "google.mx",
+  "google.ne",
+  "google.nl",
+  "google.no",
+  "google.nr",
+  "google.nu",
+  "google.org",
+  "google.pl",
+  "google.pn",
+  "google.ps",
+  "google.pt",
+  "google.ro",
+  "google.rs",
+  "google.ru",
+  "google.rw",
+  "google.sc",
+  "google.se",
+  "google.sh",
+  "google.si",
+  "google.sk",
+  "google.sm",
+  "google.sn",
+  "google.so",
+  "google.sr",
+  "google.st",
+  "google.td",
+  "google.tg",
+  "google.tk",
+  "google.tl",
+  "google.tm",
+  "google.tn",
+  "google.to",
+  "google.tt",
+  "google.us",
+  "google.vg",
+  "google.vn",
+  "google.vu",
+  "google.ws",
+  "googleapis.cn",
+  "googleapis.com",
+  "googleapps.com",
+  "googlearth.com",
+  "googleartproject.com",
+  "googleblog.com",
+  "googlebot.com",
+  "googlechinawebmaster.com",
+  "googlecode.com",
+  "googlecommerce.com",
+  "googledomains.com",
+  "googledrive.com",
+  "googleearth.com",
+  "googlefiber.net",
+  "googlegroups.com",
+  "googlehosted.com",
+  "googleideas.com",
+  "googleinsidesearch.com",
+  "googlelabs.com",
+  "googlemail.com",
+  "googlemashups.com",
+  "googlepagecreator.com",
+  "googleplay.com",
+  "googleplus.com",
+  "googlesile.com",
+  "googlesource.com",
+  "googleusercontent.com",
+  "googlevideo.com",
+  "googleweblight.com",
+  "googlezip.net",
+  "gopetition.com",
+  "goproxing.net",
+  "goreforum.com",
+  "goregrish.com",
+  "gospelherald.com",
+  "got-game.org",
+  "gotdns.ch",
+  "gotgeeks.com",
+  "gotrusted.com",
+  "gotw.ca",
+  "gov.taipei",
+  "gr8domain.biz",
+  "gr8name.biz",
+  "gradconnection.com",
+  "grammaly.com",
+  "grandtrial.org",
+  "grangorz.org",
+  "graphis.ne.jp",
+  "graphql.org",
+  "gravatar.com",
+  "greasespot.net",
+  "great-firewall.com",
+  "great-roc.org",
+  "greatfire.org",
+  "greatfirewall.biz",
+  "greatfirewallofchina.net",
+  "greatfirewallofchina.org",
+  "greatroc.org",
+  "greatroc.tw",
+  "greatzhonghua.org",
+  "greenfieldbookstore.com.hk",
+  "greenparty.org.tw",
+  "greenpeace.com.tw",
+  "greenpeace.org",
+  "greenreadings.com",
+  "greenvpn.net",
+  "greenvpn.org",
+  "grindr.com",
+  "grotty-monday.com",
+  "grow.google",
+  "gs-discuss.com",
+  "gsearch.media",
+  "gstatic.com",
+  "gtricks.com",
+  "gts-vpn.com",
+  "gtv.org",
+  "gtv1.org",
+  "gu-chu-sum.org",
+  "guaguass.com",
+  "guaguass.org",
+  "guancha.org",
+  "guaneryu.com",
+  "guangming.com.my",
+  "guangnianvpn.com",
+  "guardster.com",
+  "guishan.org",
+  "gumroad.com",
+  "gun-world.net",
+  "gunsamerica.com",
+  "gunsandammo.com",
+  "guo.media",
+  "guruonline.hk",
+  "gutteruncensored.com",
+  "gvlib.com",
+  "gvm.com.tw",
+  "gvt0.com",
+  "gvt1.com",
+  "gvt3.com",
+  "gwins.org",
+  "gwtproject.org",
+  "gyalwarinpoche.com",
+  "gyatsostudio.com",
+  "gzm.tv",
+  "gzone-anime.info",
+  "h-china.org",
+  "h-moe.com",
+  "h1n1china.org",
+  "h528.com",
+  "h5dm.com",
+  "h5galgame.me",
+  "hacg.club",
+  "hacg.in",
+  "hacg.li",
+  "hacg.me",
+  "hacg.red",
+  "hacken.cc",
+  "hacker.org",
+  "hackmd.io",
+  "hackthatphone.net",
+  "hahlo.com",
+  "hakkatv.org.tw",
+  "handcraftedsoftware.org",
+  "hanime.tv",
+  "hanminzu.org",
+  "hanunyi.com",
+  "hao.news",
+  "hao123.com",
+  "hao123img.com",
+  "happy-vpn.com",
+  "haproxy.org",
+  "hardsextube.com",
+  "harunyahya.com",
+  "hasi.wang",
+  "hautelook.com",
+  "hautelookcdn.com",
+  "have8.com",
+  "hbg.com",
+  "hbo.com",
+  "hclips.com",
+  "hdlt.me",
+  "hdtvb.net",
+  "hdzog.com",
+  "he.net",
+  "heartyit.com",
+  "heavy-r.com",
+  "hec.su",
+  "hecaitou.net",
+  "hechaji.com",
+  "heeact.edu.tw",
+  "hegre-art.com",
+  "helixstudios.net",
+  "helloandroid.com",
+  "helloqueer.com",
+  "helloss.pw",
+  "hellotxt.com",
+  "hellouk.org",
+  "helpeachpeople.com",
+  "helplinfen.com",
+  "helpster.de",
+  "helpuyghursnow.org",
+  "helpzhuling.org",
+  "hentai.to",
+  "hentaitube.tv",
+  "hentaivideoworld.com",
+  "heqinglian.net",
+  "here.com",
+  "heritage.org",
+  "heroku.com",
+  "heungkongdiscuss.com",
+  "hexieshe.com",
+  "hexieshe.xyz",
+  "hexxeh.net",
+  "heyuedi.com",
+  "heywire.com",
+  "heyzo.com",
+  "hgseav.com",
+  "hhdcb3office.org",
+  "hhthesakyatrizin.org",
+  "hi-on.org.tw",
+  "hiccears.com",
+  "hidden-advent.org",
+  "hide.me",
+  "hidecloud.com",
+  "hidein.net",
+  "hideipvpn.com",
+  "hideman.net",
+  "hideme.nl",
+  "hidemy.name",
+  "hidemyass.com",
+  "hidemycomp.com",
+  "higfw.com",
+  "highpeakspureearth.com",
+  "highrockmedia.com",
+  "hightail.com",
+  "hihiforum.com",
+  "hihistory.net",
+  "hiitch.com",
+  "hikinggfw.org",
+  "hilive.tv",
+  "himalayan-foundation.org",
+  "himalayanglacier.com",
+  "himemix.com",
+  "himemix.net",
+  "hinet.net",
+  "hitbtc.com",
+  "hitomi.la",
+  "hiwifi.com",
+  "hizb-ut-tahrir.info",
+  "hizb-ut-tahrir.org",
+  "hizbuttahrir.org",
+  "hjclub.info",
+  "hk-pub.com",
+  "hk01.com",
+  "hk32168.com",
+  "hkacg.com",
+  "hkacg.net",
+  "hkatvnews.com",
+  "hkbc.net",
+  "hkbf.org",
+  "hkbookcity.com",
+  "hkchronicles.com",
+  "hkchurch.org",
+  "hkci.org.hk",
+  "hkcmi.edu",
+  "hkcnews.com",
+  "hkcoc.com",
+  "hkctu.org.hk",
+  "hkdailynews.com.hk",
+  "hkday.net",
+  "hkdc.us",
+  "hkdf.org",
+  "hkej.com",
+  "hkepc.com",
+  "hket.com",
+  "hkfaa.com",
+  "hkfreezone.com",
+  "hkfront.org",
+  "hkgalden.com",
+  "hkgolden.com",
+  "hkgpao.com",
+  "hkgreenradio.org",
+  "hkheadline.com",
+  "hkhkhk.com",
+  "hkhrc.org.hk",
+  "hkhrm.org.hk",
+  "hkip.org.uk",
+  "hkja.org.hk",
+  "hkjc.com",
+  "hkjp.org",
+  "hklft.com",
+  "hklts.org.hk",
+  "hkmap.live",
+  "hkopentv.com",
+  "hkpeanut.com",
+  "hkptu.org",
+  "hkreporter.com",
+  "hku.hk",
+  "hkusu.net",
+  "hkvwet.com",
+  "hkwcc.org.hk",
+  "hkzone.org",
+  "hmoegirl.com",
+  "hmonghot.com",
+  "hmv.co.jp",
+  "hmvdigital.ca",
+  "hmvdigital.com",
+  "hnjhj.com",
+  "hnntube.com",
+  "hojemacau.com.mo",
+  "hola.com",
+  "hola.org",
+  "holymountaincn.com",
+  "holyspiritspeaks.org",
+  "homedepot.com",
+  "homeip.net",
+  "homeperversion.com",
+  "homeservershow.com",
+  "honeynet.org",
+  "hongkongfp.com",
+  "hongmeimei.com",
+  "hongzhi.li",
+  "honven.xyz",
+  "hootsuite.com",
+  "hoover.org",
+  "hoovers.com",
+  "hopedialogue.org",
+  "hopto.org",
+  "hornygamer.com",
+  "hornytrip.com",
+  "horrorporn.com",
+  "hostloc.com",
+  "hotair.com",
+  "hotav.tv",
+  "hotcoin.com",
+  "hotels.cn",
+  "hotfrog.com.tw",
+  "hotgoo.com",
+  "hotpornshow.com",
+  "hotpot.hk",
+  "hotshame.com",
+  "hotspotshield.com",
+  "hottg.com",
+  "hotvpn.com",
+  "hougaige.com",
+  "howtoforge.com",
+  "hoxx.com",
+  "hpa.gov.tw",
+  "hqcdp.org",
+  "hqjapanesesex.com",
+  "hqmovies.com",
+  "hrcchina.org",
+  "hrcir.com",
+  "hrea.org",
+  "hrichina.org",
+  "hrtsea.com",
+  "hrw.org",
+  "hrweb.org",
+  "hsjp.net",
+  "hsselite.com",
+  "hst.net.tw",
+  "hstern.net",
+  "hstt.net",
+  "ht.ly",
+  "htkou.net",
+  "htl.li",
+  "html5rocks.com",
+  "https443.net",
+  "https443.org",
+  "hua-yue.net",
+  "huaglad.com",
+  "huanghuagang.org",
+  "huangyiyu.com",
+  "huaren.us",
+  "huaren4us.com",
+  "huashangnews.com",
+  "huasing.org",
+  "huaxia-news.com",
+  "huaxiabao.org",
+  "huaxin.ph",
+  "huayuworld.org",
+  "hudatoriq.web.id",
+  "hudson.org",
+  "huffingtonpost.com",
+  "hugoroy.eu",
+  "huhaitai.com",
+  "huhamhire.com",
+  "huhangfei.com",
+  "huiyi.in",
+  "hulkshare.com",
+  "hulu.com",
+  "huluim.com",
+  "humanrightspressawards.org",
+  "hung-ya.com",
+  "hungerstrikeforaids.org",
+  "huobi.co",
+  "huobi.com",
+  "huobi.me",
+  "huobi.pro",
+  "huobi.sc",
+  "huobipro.com",
+  "huping.net",
+  "hurgokbayrak.com",
+  "hurriyet.com.tr",
+  "hustler.com",
+  "hustlercash.com",
+  "hut2.ru",
+  "hutianyi.net",
+  "hutong9.net",
+  "huyandex.com",
+  "hwadzan.tw",
+  "hwayue.org.tw",
+  "hwinfo.com",
+  "hxwk.org",
+  "hxwq.org",
+  "hybrid-analysis.com",
+  "hyperrate.com",
+  "hyread.com.tw",
+  "i-cable.com",
+  "i-part.com.tw",
+  "i-scmp.com",
+  "i1.hk",
+  "i2p2.de",
+  "i2runner.com",
+  "i818hk.com",
+  "iam.soy",
+  "iamtopone.com",
+  "iask.bz",
+  "iask.ca",
+  "iav19.com",
+  "ibiblio.org",
+  "ibit.am",
+  "iblist.com",
+  "iblogserv-f.net",
+  "ibros.org",
+  "ibtimes.com",
+  "ibvpn.com",
+  "icams.com",
+  "icerocket.com",
+  "icij.org",
+  "icl-fi.org",
+  "icoco.com",
+  "iconfactory.net",
+  "iconpaper.org",
+  "icu-project.org",
+  "idaiwan.com",
+  "idemocracy.asia",
+  "identi.ca",
+  "idiomconnection.com",
+  "idlcoyote.com",
+  "idouga.com",
+  "idreamx.com",
+  "idsam.com",
+  "ieasy5.com",
+  "ied2k.net",
+  "ienergy1.com",
+  "iepl.us",
+  "ifanqiang.com",
+  "ifcss.org",
+  "ifjc.org",
+  "ifreewares.com",
+  "ift.tt",
+  "igcd.net",
+  "igfw.net",
+  "igfw.tech",
+  "igmg.de",
+  "ignitedetroit.net",
+  "igoogle.com",
+  "igotmail.com.tw",
+  "igvita.com",
+  "ihakka.net",
+  "ihao.org",
+  "iicns.com",
+  "ikstar.com",
+  "ikwb.com",
+  "ilbe.com",
+  "ilhamtohtiinstitute.org",
+  "illusionfactory.com",
+  "ilove80.be",
+  "ilovelongtoes.com",
+  "im.tv",
+  "im88.tw",
+  "imageab.com",
+  "imagefap.com",
+  "imageflea.com",
+  "images-gaytube.com",
+  "imageshack.us",
+  "imagevenue.com",
+  "imagezilla.net",
+  "imb.org",
+  "imdb.com",
+  "img.ly",
+  "imgasd.com",
+  "imgchili.net",
+  "imgmega.com",
+  "imgur.com",
+  "imkev.com",
+  "imlive.com",
+  "immigration.gov.tw",
+  "immoral.jp",
+  "impact.org.au",
+  "impp.mn",
+  "in-disguise.com",
+  "in.com",
+  "in99.org",
+  "incapdns.net",
+  "incloak.com",
+  "incredibox.fr",
+  "independent.co.uk",
+  "indiablooms.com",
+  "indianarrative.com",
+  "indiandefensenews.in",
+  "indiatimes.com",
+  "indiemerch.com",
+  "info-graf.fr",
+  "informer.com",
+  "initiativesforchina.org",
+  "inkui.com",
+  "inmediahk.net",
+  "innermongolia.org",
+  "inoreader.com",
+  "inote.tw",
+  "insecam.org",
+  "inside.com.tw",
+  "insidevoa.com",
+  "instagram.com",
+  "instanthq.com",
+  "institut-tibetain.org",
+  "interactivebrokers.com",
+  "internet.org",
+  "internetdefenseleague.org",
+  "internetfreedom.org",
+  "internetpopculture.com",
+  "inthenameofconfuciusmovie.com",
+  "inxian.com",
+  "iownyour.biz",
+  "iownyour.org",
+  "ipalter.com",
+  "ipfire.org",
+  "ipfs.io",
+  "iphone4hongkong.com",
+  "iphonehacks.com",
+  "iphonetaiwan.org",
+  "iphonix.fr",
+  "ipicture.ru",
+  "ipjetable.net",
+  "ipobar.com",
+  "ipoock.com",
+  "iportal.me",
+  "ippotv.com",
+  "ipredator.se",
+  "iptv.com.tw",
+  "iptvbin.com",
+  "ipvanish.com",
+  "iqiyi.com",
+  "iredmail.org",
+  "irib.ir",
+  "ironpython.net",
+  "ironsocket.com",
+  "is-a-hunter.com",
+  "is.gd",
+  "isaacmao.com",
+  "isasecret.com",
+  "isgreat.org",
+  "islahhaber.net",
+  "islam.org.hk",
+  "islamawareness.net",
+  "islamhouse.com",
+  "islamicity.com",
+  "islamicpluralism.org",
+  "islamtoday.net",
+  "ismaelan.com",
+  "ismalltits.com",
+  "ismprofessional.net",
+  "isohunt.com",
+  "israbox.com",
+  "issuu.com",
+  "istars.co.nz",
+  "istarshine.com",
+  "istef.info",
+  "istiqlalhewer.com",
+  "istockphoto.com",
+  "isunaffairs.com",
+  "isuntv.com",
+  "isupportuyghurs.org",
+  "itaboo.info",
+  "itaiwan.gov.tw",
+  "italiatibet.org",
+  "itasoftware.com",
+  "itemdb.com",
+  "itemfix.com",
+  "ithome.com.tw",
+  "itsaol.com",
+  "itshidden.com",
+  "itsky.it",
+  "itweet.net",
+  "iu45.com",
+  "iuhrdf.org",
+  "iuksky.com",
+  "ivacy.com",
+  "iverycd.com",
+  "ivpn.net",
+  "ixquick.com",
+  "ixxx.com",
+  "iyouport.com",
+  "iyouport.org",
+  "izaobao.us",
+  "izihost.org",
+  "izles.net",
+  "izlesem.org",
+  "j.mp",
+  "jable.tv",
+  "jackjia.com",
+  "jamaat.org",
+  "jamestown.org",
+  "jamyangnorbu.com",
+  "jandyx.com",
+  "janwongphoto.com",
+  "japan-whores.com",
+  "japantimes.co.jp",
+  "jav.com",
+  "jav101.com",
+  "jav2be.com",
+  "jav68.tv",
+  "javakiba.org",
+  "javbus.com",
+  "javfor.me",
+  "javhd.com",
+  "javhip.com",
+  "javhub.net",
+  "javhuge.com",
+  "javlibrary.com",
+  "javmobile.net",
+  "javmoo.com",
+  "javmoo.xyz",
+  "javseen.com",
+  "javtag.com",
+  "javzoo.com",
+  "jbtalks.cc",
+  "jbtalks.com",
+  "jbtalks.my",
+  "jcpenney.com",
+  "jdwsy.com",
+  "jeanyim.com",
+  "jetos.com",
+  "jex.com",
+  "jfqu36.club",
+  "jfqu37.xyz",
+  "jgoodies.com",
+  "jiangweiping.com",
+  "jiaoyou8.com",
+  "jichangtj.com",
+  "jiehua.cz",
+  "jiepang.com",
+  "jieshibaobao.com",
+  "jigglegifs.com",
+  "jigong1024.com",
+  "jigsy.com",
+  "jihadology.net",
+  "jiji.com",
+  "jims.net",
+  "jinbushe.org",
+  "jingpin.org",
+  "jingsim.org",
+  "jinhai.de",
+  "jinpianwang.com",
+  "jinroukong.com",
+  "jintian.net",
+  "jinx.com",
+  "jiruan.net",
+  "jitouch.com",
+  "jizzthis.com",
+  "jjgirls.com",
+  "jkb.cc",
+  "jkforum.net",
+  "jkub.com",
+  "jma.go.jp",
+  "jmscult.com",
+  "joachims.org",
+  "jobso.tv",
+  "joinbbs.net",
+  "joinclubhouse.com",
+  "joinmastodon.org",
+  "joins.com",
+  "jornaldacidadeonline.com.br",
+  "journalchretien.net",
+  "journalofdemocracy.org",
+  "joymiihub.com",
+  "joyourself.com",
+  "jp.net",
+  "jpopforum.net",
+  "jqueryui.com",
+  "jsdelivr.net",
+  "jshell.net",
+  "jtvnw.net",
+  "jubushoushen.com",
+  "juhuaren.com",
+  "jukujo-club.com",
+  "juliepost.com",
+  "juliereyc.com",
+  "junauza.com",
+  "june4commemoration.org",
+  "junefourth-20.net",
+  "jungleheart.com",
+  "junglobal.net",
+  "juoaa.com",
+  "justdied.com",
+  "justfreevpn.com",
+  "justhost.ru",
+  "justicefortenzin.org",
+  "justmysocks1.net",
+  "justpaste.it",
+  "justtristan.com",
+  "juyuange.org",
+  "juziyue.com",
+  "jwmusic.org",
+  "jyxf.net",
+  "k-doujin.net",
+  "ka-wai.com",
+  "kadokawa.co.jp",
+  "kagyu.org",
+  "kagyu.org.za",
+  "kagyumonlam.org",
+  "kagyunews.com.hk",
+  "kagyuoffice.org",
+  "kagyuoffice.org.tw",
+  "kaiyuan.de",
+  "kakao.com",
+  "kalachakralugano.org",
+  "kangye.org",
+  "kankan.today",
+  "kannewyork.com",
+  "kanshifang.com",
+  "kantie.org",
+  "kanzhongguo.com",
+  "kanzhongguo.eu",
+  "kaotic.com",
+  "karayou.com",
+  "karkhung.com",
+  "karmapa-teachings.org",
+  "karmapa.org",
+  "kawaiikawaii.jp",
+  "kawase.com",
+  "kba-tx.org",
+  "kcoolonline.com",
+  "kebrum.com",
+  "kechara.com",
+  "keepandshare.com",
+  "keezmovies.com",
+  "kendatire.com",
+  "kendincos.net",
+  "kenengba.com",
+  "keontech.net",
+  "kepard.com",
+  "keso.cn",
+  "kex.com",
+  "keycdn.com",
+  "khabdha.org",
+  "khatrimaza.org",
+  "khmusic.com.tw",
+  "kichiku-doujinko.com",
+  "kik.com",
+  "killwall.com",
+  "kimy.com.tw",
+  "kindleren.com",
+  "kingdomsalvation.org",
+  "kinghost.com",
+  "kingstone.com.tw",
+  "kink.com",
+  "kinmen.org.tw",
+  "kinmen.travel",
+  "kinokuniya.com",
+  "kir.jp",
+  "kissbbao.cn",
+  "kiwi.kz",
+  "kk-whys.co.jp",
+  "kkbox.com",
+  "kknews.cc",
+  "klip.me",
+  "kmuh.org.tw",
+  "knowledgerush.com",
+  "knowyourmeme.com",
+  "kobo.com",
+  "kobobooks.com",
+  "kodingen.com",
+  "kompozer.net",
+  "konachan.com",
+  "kone.com",
+  "koolsolutions.com",
+  "koornk.com",
+  "koranmandarin.com",
+  "korenan2.com",
+  "kqes.net",
+  "kraken.com",
+  "krtco.com.tw",
+  "ksdl.org",
+  "ksnews.com.tw",
+  "kspcoin.com",
+  "ktzhk.com",
+  "kucoin.com",
+  "kui.name",
+  "kukuku.uk",
+  "kun.im",
+  "kurashsultan.com",
+  "kurtmunger.com",
+  "kusocity.com",
+  "kwcg.ca",
+  "kwok7.com",
+  "kwongwah.com.my",
+  "kxsw.life",
+  "kyofun.com",
+  "kyohk.net",
+  "kyoyue.com",
+  "kyzyhello.com",
+  "kzeng.info",
+  "la-forum.org",
+  "labiennale.org",
+  "ladbrokes.com",
+  "lagranepoca.com",
+  "lala.im",
+  "lalulalu.com",
+  "lama.com.tw",
+  "lamayeshe.com",
+  "lamenhu.com",
+  "lamnia.co.uk",
+  "lamrim.com",
+  "landofhope.tv",
+  "lanterncn.cn",
+  "lantosfoundation.org",
+  "laod.cn",
+  "laogai.org",
+  "laogairesearch.org",
+  "laomiu.com",
+  "laoyang.info",
+  "laptoplockdown.com",
+  "laqingdan.net",
+  "larsgeorge.com",
+  "lastcombat.com",
+  "lastfm.es",
+  "latelinenews.com",
+  "lausan.hk",
+  "law.com",
+  "lbank.info",
+  "le-vpn.com",
+  "leafyvpn.net",
+  "lecloud.net",
+  "ledger.com",
+  "leeao.com.cn",
+  "lefora.com",
+  "left21.hk",
+  "legalporno.com",
+  "legsjapan.com",
+  "leirentv.ca",
+  "leisurecafe.ca",
+  "leisurepro.com",
+  "lematin.ch",
+  "lemonde.fr",
+  "lenwhite.com",
+  "leorockwell.com",
+  "lerosua.org",
+  "lers.google",
+  "lesoir.be",
+  "lester850.info",
+  "letou.com",
+  "letscorp.net",
+  "letsencrypt.org",
+  "levyhsu.com",
+  "lflink.com",
+  "lflinkup.com",
+  "lflinkup.net",
+  "lflinkup.org",
+  "lfpcontent.com",
+  "lhakar.org",
+  "lhasocialwork.org",
+  "li.taipei",
+  "liangyou.net",
+  "liangzhichuanmei.com",
+  "lianyue.net",
+  "liaowangxizang.net",
+  "liberal.org.hk",
+  "libertytimes.com.tw",
+  "libraryinformationtechnology.com",
+  "libredd.it",
+  "lifemiles.com",
+  "lighten.org.tw",
+  "lighti.me",
+  "lightnovel.cn",
+  "lightyearvpn.com",
+  "lihkg.com",
+  "like.com",
+  "limiao.net",
+  "line-apps.com",
+  "line-scdn.net",
+  "line.me",
+  "linglingfa.com",
+  "lingvodics.com",
+  "link-o-rama.com",
+  "linkedin.com",
+  "linkideo.com",
+  "linksalpha.com",
+  "linkuswell.com",
+  "linpie.com",
+  "linux.org.hk",
+  "linuxtoy.org",
+  "lionsroar.com",
+  "lipuman.com",
+  "liquiditytp.com",
+  "liquidvpn.com",
+  "list-manage.com",
+  "listennotes.com",
+  "listentoyoutube.com",
+  "listorious.com",
+  "lithium.com",
+  "liu-xiaobo.org",
+  "liudejun.com",
+  "liuhanyu.com",
+  "liujianshu.com",
+  "liuxiaobo.net",
+  "liuxiaotong.com",
+  "live.com",
+  "livecoin.net",
+  "livedoor.jp",
+  "liveleak.com",
+  "livemint.com",
+  "livestation.com",
+  "livestream.com",
+  "livevideo.com",
+  "livingonline.us",
+  "livingstream.com",
+  "liwangyang.com",
+  "lizhizhuangbi.com",
+  "lkcn.net",
+  "llss.me",
+  "lncn.org",
+  "load.to",
+  "lobsangwangyal.com",
+  "localbitcoins.com",
+  "localdomain.ws",
+  "localpresshk.com",
+  "lockestek.com",
+  "logbot.net",
+  "logiqx.com",
+  "logmein.com",
+  "logos.com.hk",
+  "londonchinese.ca",
+  "longhair.hk",
+  "longmusic.com",
+  "longtermly.net",
+  "longtoes.com",
+  "lookpic.com",
+  "looktoronto.com",
+  "lotsawahouse.org",
+  "lotuslight.org.hk",
+  "lotuslight.org.tw",
+  "loved.hk",
+  "lovetvshow.com",
+  "lpsg.com",
+  "lrfz.com",
+  "lrip.org",
+  "lsd.org.hk",
+  "lsforum.net",
+  "lsm.org",
+  "lsmchinese.org",
+  "lsmkorean.org",
+  "lsmradio.com",
+  "lsmwebcast.com",
+  "lsxszzg.com",
+  "ltn.com.tw",
+  "luckydesigner.space",
+  "luke54.com",
+  "luke54.org",
+  "lupm.org",
+  "lushstories.com",
+  "luxebc.com",
+  "lvhai.org",
+  "lvv2.com",
+  "lyfhk.net",
+  "lzjscript.com",
+  "lzmtnews.org",
+  "m-sport.co.uk",
+  "m-team.cc",
+  "m.me",
+  "macgamestore.com",
+  "macrovpn.com",
+  "macts.com.tw",
+  "mad-ar.ch",
+  "madewithcode.com",
+  "madonna-av.com",
+  "madrau.com",
+  "madthumbs.com",
+  "magic-net.info",
+  "mahabodhi.org",
+  "maiio.net",
+  "mail-archive.com",
+  "mail.ru",
+  "mailchimp.com",
+  "maildns.xyz",
+  "maiplus.com",
+  "maizhong.org",
+  "makemymood.com",
+  "makkahnewspaper.com",
+  "malaysiakini.com",
+  "mamingzhe.com",
+  "manchukuo.net",
+  "mandiant.com",
+  "mangafox.com",
+  "mangafox.me",
+  "maniash.com",
+  "manicur4ik.ru",
+  "mansion.com",
+  "mansionpoker.com",
+  "manta.com",
+  "manyvoices.news",
+  "maplew.com",
+  "marc.info",
+  "marguerite.su",
+  "martau.com",
+  "martincartoons.com",
+  "martinoei.com",
+  "martsangkagyuofficial.org",
+  "maruta.be",
+  "marxist.com",
+  "marxist.net",
+  "marxists.org",
+  "mash.to",
+  "maskedip.com",
+  "mastodon.cloud",
+  "mastodon.host",
+  "mastodon.social",
+  "mastodon.xyz",
+  "matainja.com",
+  "material.io",
+  "mathable.io",
+  "mathiew-badimon.com",
+  "matome-plus.com",
+  "matome-plus.net",
+  "matrix.org",
+  "matsushimakaede.com",
+  "matters.news",
+  "mattwilcox.net",
+  "maturejp.com",
+  "maxing.jp",
+  "mayimayi.com",
+  "mcadforums.com",
+  "mcaf.ee",
+  "mcfog.com",
+  "mcreasite.com",
+  "md-t.org",
+  "me.me",
+  "meansys.com",
+  "media.org.hk",
+  "mediachinese.com",
+  "mediafire.com",
+  "mediafreakcity.com",
+  "medium.com",
+  "meetav.com",
+  "meetup.com",
+  "mefeedia.com",
+  "meforum.org",
+  "mefound.com",
+  "mega.co.nz",
+  "mega.io",
+  "mega.nz",
+  "megaproxy.com",
+  "megarotic.com",
+  "megavideo.com",
+  "megurineluka.com",
+  "meizhong.blog",
+  "meizhong.report",
+  "meltoday.com",
+  "memehk.com",
+  "memorybbs.com",
+  "memri.org",
+  "memrijttm.org",
+  "mercatox.com",
+  "mercdn.net",
+  "mercyprophet.org",
+  "mergersandinquisitions.org",
+  "meridian-trust.org",
+  "meripet.biz",
+  "meripet.com",
+  "merit-times.com.tw",
+  "meshrep.com",
+  "mesotw.com",
+  "messenger.com",
+  "metacafe.com",
+  "metafilter.com",
+  "metart.com",
+  "metarthunter.com",
+  "meteorshowersonline.com",
+  "metro.taipei",
+  "metrohk.com.hk",
+  "metrolife.ca",
+  "metroradio.com.hk",
+  "mewe.com",
+  "meyou.jp",
+  "meyul.com",
+  "mfxmedia.com",
+  "mgoon.com",
+  "mgstage.com",
+  "mh4u.org",
+  "mhradio.org",
+  "michaelanti.com",
+  "michaelmarketl.com",
+  "microvpn.com",
+  "middle-way.net",
+  "mihk.hk",
+  "mihr.com",
+  "mihua.org",
+  "mikesoltys.com",
+  "mikocon.com",
+  "milph.net",
+  "milsurps.com",
+  "mimiai.net",
+  "mimivip.com",
+  "mimivv.com",
+  "mindrolling.org",
+  "mingdemedia.org",
+  "minghui-a.org",
+  "minghui-b.org",
+  "minghui-school.org",
+  "minghui.or.kr",
+  "minghui.org",
+  "mingjinglishi.com",
+  "mingjingnews.com",
+  "mingjingtimes.com",
+  "mingpao.com",
+  "mingpaocanada.com",
+  "mingpaomonthly.com",
+  "mingpaonews.com",
+  "mingpaony.com",
+  "mingpaosf.com",
+  "mingpaotor.com",
+  "mingpaovan.com",
+  "mingshengbao.com",
+  "minhhue.net",
+  "miniforum.org",
+  "ministrybooks.org",
+  "minzhuhua.net",
+  "minzhuzhanxian.com",
+  "minzhuzhongguo.org",
+  "miroguide.com",
+  "mirrorbooks.com",
+  "mirrormedia.mg",
+  "mist.vip",
+  "mit.edu",
+  "mitao.com.tw",
+  "mitbbs.com",
+  "mitbbsau.com",
+  "mixero.com",
+  "mixi.jp",
+  "mixpod.com",
+  "mixx.com",
+  "mizzmona.com",
+  "mjib.gov.tw",
+  "mk5000.com",
+  "mlcool.com",
+  "mlzs.work",
+  "mm-cg.com",
+  "mmaaxx.com",
+  "mmmca.com",
+  "mnewstv.com",
+  "mobatek.net",
+  "mobile01.com",
+  "mobileways.de",
+  "moby.to",
+  "mobypicture.com",
+  "mod.io",
+  "modernchinastudies.org",
+  "moeaic.gov.tw",
+  "moeerolibrary.com",
+  "moegirl.org",
+  "mofa.gov.tw",
+  "mofaxiehui.com",
+  "mofos.com",
+  "mog.com",
+  "mohu.club",
+  "mohu.ml",
+  "mohu.rocks",
+  "mojim.com",
+  "mol.gov.tw",
+  "molihua.org",
+  "monar.ch",
+  "mondex.org",
+  "money-link.com.tw",
+  "moneyhome.biz",
+  "monica.im",
+  "monitorchina.org",
+  "monitorware.com",
+  "monlamit.org",
+  "monocloud.me",
+  "monster.com",
+  "moodyz.com",
+  "moon.fm",
+  "moonbbs.com",
+  "moonbingo.com",
+  "moptt.tw",
+  "morbell.com",
+  "morningsun.org",
+  "moroneta.com",
+  "mos.ru",
+  "motherless.com",
+  "motiyun.com",
+  "motor4ik.ru",
+  "mousebreaker.com",
+  "movements.org",
+  "moviefap.com",
+  "moztw.org",
+  "mp3buscador.com",
+  "mpettis.com",
+  "mpfinance.com",
+  "mpinews.com",
+  "mponline.hk",
+  "mqxd.org",
+  "mrbasic.com",
+  "mrbonus.com",
+  "mrface.com",
+  "mrslove.com",
+  "mrtweet.com",
+  "msa-it.org",
+  "msguancha.com",
+  "msha.gov",
+  "msn.com",
+  "msn.com.tw",
+  "mswe1.org",
+  "mthruf.com",
+  "mtw.tl",
+  "mubi.com",
+  "muchosucko.com",
+  "mullvad.net",
+  "multiply.com",
+  "multiproxy.org",
+  "multiupload.com",
+  "mummysgold.com",
+  "murmur.tw",
+  "musicade.net",
+  "muslimvideo.com",
+  "muzi.com",
+  "muzi.net",
+  "muzu.tv",
+  "mvdis.gov.tw",
+  "mvg.jp",
+  "mx981.com",
+  "my-formosa.com",
+  "my-private-network.co.uk",
+  "my-proxy.com",
+  "my03.com",
+  "my903.com",
+  "myactimes.com",
+  "myanniu.com",
+  "myaudiocast.com",
+  "myav.com.tw",
+  "mybbs.us",
+  "mybet.com",
+  "myca168.com",
+  "mycanadanow.com",
+  "mychat.to",
+  "mychinamyhome.com",
+  "mychinanet.com",
+  "mychinanews.com",
+  "mychinese.news",
+  "mycnnews.com",
+  "mycould.com",
+  "mydad.info",
+  "myddns.com",
+  "myeasytv.com",
+  "myeclipseide.com",
+  "myforum.com.hk",
+  "myfreecams.com",
+  "myfreepaysite.com",
+  "myfreshnet.com",
+  "myftp.info",
+  "myftp.name",
+  "myiphide.com",
+  "mykomica.org",
+  "mylftv.com",
+  "mymaji.com",
+  "mymediarom.com",
+  "mymoe.moe",
+  "mymom.info",
+  "mymusic.net.tw",
+  "mynetav.net",
+  "mynetav.org",
+  "mynumber.org",
+  "myparagliding.com",
+  "mypicture.info",
+  "mypikpak.com",
+  "mypop3.net",
+  "mypop3.org",
+  "mypopescu.com",
+  "myradio.hk",
+  "myreadingmanga.info",
+  "mysecondarydns.com",
+  "mysinablog.com",
+  "myspace.com",
+  "myspacecdn.com",
+  "mytalkbox.com",
+  "mytizi.com",
+  "mywww.biz",
+  "myz.info",
+  "naacoalition.org",
+  "nabble.com",
+  "naitik.net",
+  "nakido.com",
+  "nakuz.com",
+  "nalandabodhi.org",
+  "nalandawest.org",
+  "namgyal.org",
+  "namgyalmonastery.org",
+  "namsisi.com",
+  "nanyang.com",
+  "nanyangpost.com",
+  "nanzao.com",
+  "naol.ca",
+  "naol.cc",
+  "narod.ru",
+  "nasa.gov",
+  "nat.gov.tw",
+  "nat.moe",
+  "natado.com",
+  "national-lottery.co.uk",
+  "nationalawakening.org",
+  "nationalgeographic.com",
+  "nationalinterest.org",
+  "nationalreview.com",
+  "nationsonline.org",
+  "nationwide.com",
+  "naughtyamerica.com",
+  "naver.jp",
+  "navy.mil",
+  "naweeklytimes.com",
+  "nbc.com",
+  "nbcnews.com",
+  "nbtvpn.com",
+  "nccwatch.org.tw",
+  "nch.com.tw",
+  "nchrd.org",
+  "ncn.org",
+  "ncol.com",
+  "nde.de",
+  "ndi.org",
+  "ndr.de",
+  "ned.org",
+  "nekoslovakia.net",
+  "neo-miracle.com",
+  "neowin.net",
+  "nepusoku.com",
+  "nesnode.com",
+  "net-fits.pro",
+  "netalert.me",
+  "netbig.com",
+  "netbirds.com",
+  "netcolony.com",
+  "netfirms.com",
+  "netflav.com",
+  "netflix.com",
+  "netflix.net",
+  "netme.cc",
+  "netsarang.com",
+  "netsneak.com",
+  "network54.com",
+  "networkedblogs.com",
+  "networktunnel.net",
+  "neverforget8964.org",
+  "new-3lunch.net",
+  "new-akiba.com",
+  "new96.ca",
+  "newcenturymc.com",
+  "newcenturynews.com",
+  "newchen.com",
+  "newgrounds.com",
+  "newhighlandvision.com",
+  "newipnow.com",
+  "newlandmagazine.com.au",
+  "newmitbbs.com",
+  "newnews.ca",
+  "news100.com.tw",
+  "newsancai.com",
+  "newschinacomment.org",
+  "newscn.org",
+  "newsdetox.ca",
+  "newsdh.com",
+  "newsmagazine.asia",
+  "newsmax.com",
+  "newspeak.cc",
+  "newstamago.com",
+  "newstapa.org",
+  "newstarnet.com",
+  "newstatesman.com",
+  "newsweek.com",
+  "newtaiwan.com.tw",
+  "newtalk.tw",
+  "newyorker.com",
+  "newyorktimes.com",
+  "nexon.com",
+  "next11.co.jp",
+  "nextdigital.com.hk",
+  "nextmag.com.tw",
+  "nextmedia.com",
+  "nexton-net.jp",
+  "nexttv.com.tw",
+  "nf.id.au",
+  "nfjtyd.com",
+  "nflxext.com",
+  "nflximg.com",
+  "nflximg.net",
+  "nflxso.net",
+  "nflxvideo.net",
+  "ng.mil",
+  "nga.mil",
+  "ngensis.com",
+  "ngodupdongchung.com",
+  "nhentai.net",
+  "nhi.gov.tw",
+  "nhk-ondemand.jp",
+  "nic.google",
+  "nic.gov",
+  "nicovideo.jp",
+  "nighost.org",
+  "nightlife141.com",
+  "nike.com",
+  "nikkei.com",
+  "ninecommentaries.com",
+  "ning.com",
+  "ninjacloak.com",
+  "ninjaproxy.ninja",
+  "nintendium.com",
+  "ninth.biz",
+  "nitter.cc",
+  "nitter.net",
+  "niu.moe",
+  "niusnews.com",
+  "njactb.org",
+  "njuice.com",
+  "nlfreevpn.com",
+  "nmsl.website",
+  "nnews.eu",
+  "no-ip.com",
+  "no-ip.org",
+  "nobel.se",
+  "nobelprize.org",
+  "nobodycanstop.us",
+  "nodesnoop.com",
+  "nofile.io",
+  "nokogiri.org",
+  "nokola.com",
+  "noodlevpn.com",
+  "norbulingka.org",
+  "nordstrom.com",
+  "nordstromimage.com",
+  "nordstromrack.com",
+  "nordvpn.com",
+  "notepad-plus-plus.org",
+  "nottinghampost.com",
+  "novelasia.com",
+  "now.com",
+  "now.im",
+  "nownews.com",
+  "nowtorrents.com",
+  "noxinfluencer.com",
+  "noypf.com",
+  "npa.go.jp",
+  "npa.gov.tw",
+  "npnt.me",
+  "nps.gov",
+  "npsboost.com",
+  "nradio.me",
+  "nrk.no",
+  "ns01.biz",
+  "ns01.info",
+  "ns01.us",
+  "ns02.biz",
+  "ns02.info",
+  "ns02.us",
+  "ns1.name",
+  "ns2.name",
+  "ns3.name",
+  "nsc.gov.tw",
+  "ntbk.gov.tw",
+  "ntbna.gov.tw",
+  "ntbt.gov.tw",
+  "ntd.tv",
+  "ntdtv.ca",
+  "ntdtv.co.kr",
+  "ntdtv.com",
+  "ntdtv.com.tw",
+  "ntdtv.cz",
+  "ntdtv.org",
+  "ntdtv.ru",
+  "ntdtvla.com",
+  "ntrfun.com",
+  "ntsna.gov.tw",
+  "ntu.edu.tw",
+  "nu.nl",
+  "nubiles.net",
+  "nudezz.com",
+  "nuexpo.com",
+  "nukistream.com",
+  "nurgo-software.com",
+  "nusatrip.com",
+  "nutaku.net",
+  "nutsvpn.work",
+  "nuuvem.com",
+  "nuvid.com",
+  "nuzcom.com",
+  "nvdst.com",
+  "nvquan.org",
+  "nvtongzhisheng.org",
+  "nwtca.org",
+  "nyaa.eu",
+  "nyaa.si",
+  "nybooks.com",
+  "nydus.ca",
+  "nylon-angel.com",
+  "nylonstockingsonline.com",
+  "nypost.com",
+  "nyt.com",
+  "nytchina.com",
+  "nytcn.me",
+  "nytco.com",
+  "nyti.ms",
+  "nytimes.com",
+  "nytimg.com",
+  "nytlog.com",
+  "nytstyle.com",
+  "nzchinese.com",
+  "nzchinese.net.nz",
+  "oanda.com",
+  "oann.com",
+  "oauth.net",
+  "observechina.net",
+  "obutu.com",
+  "ocaspro.com",
+  "occupytiananmen.com",
+  "oclp.hk",
+  "ocreampies.com",
+  "ocry.com",
+  "october-review.org",
+  "oculus.com",
+  "oculuscdn.com",
+  "odysee.com",
+  "oex.com",
+  "offbeatchina.com",
+  "officeoftibet.com",
+  "ofile.org",
+  "ogaoga.org",
+  "ogate.org",
+  "ohchr.org",
+  "ohmyrss.com",
+  "oikos.com.tw",
+  "oiktv.com",
+  "oizoblog.com",
+  "ok.ru",
+  "okayfreedom.com",
+  "okex.com",
+  "okk.tw",
+  "okx.com",
+  "olabloga.pl",
+  "old-cat.net",
+  "olehdtv.com",
+  "olevod.com",
+  "olumpo.com",
+  "olympicwatch.org",
+  "omct.org",
+  "omgili.com",
+  "omni7.jp",
+  "omnitalk.com",
+  "omnitalk.org",
+  "omny.fm",
+  "omy.sg",
+  "on.cc",
+  "on2.com",
+  "onapp.com",
+  "onedumb.com",
+  "onejav.com",
+  "onion.city",
+  "onion.ly",
+  "onlinecha.com",
+  "onlineyoutube.com",
+  "onlygayvideo.com",
+  "onlytweets.com",
+  "onmoon.com",
+  "onmoon.net",
+  "onmypc.biz",
+  "onmypc.info",
+  "onmypc.net",
+  "onmypc.org",
+  "onmypc.us",
+  "onthehunt.com",
+  "ontrac.com",
+  "oopsforum.com",
+  "open.com.hk",
+  "openai.com",
+  "openallweb.com",
+  "opendemocracy.net",
+  "opendn.xyz",
+  "openervpn.in",
+  "openid.net",
+  "openleaks.org",
+  "opensea.io",
+  "opensource.google",
+  "openstreetmap.org",
+  "opentech.fund",
+  "openvpn.net",
+  "openvpn.org",
+  "openwebster.com",
+  "openwrt.org.cn",
+  "opera-mini.net",
+  "opera.com",
+  "opus-gaming.com",
+  "orchidbbs.com",
+  "organcare.org.tw",
+  "organharvestinvestigation.net",
+  "organiccrap.com",
+  "orgasm.com",
+  "orgfree.com",
+  "oricon.co.jp",
+  "orient-doll.com",
+  "orientaldaily.com.my",
+  "orn.jp",
+  "orzdream.com",
+  "orzistic.org",
+  "osfoora.com",
+  "otcbtc.com",
+  "otnd.org",
+  "otto.de",
+  "otzo.com",
+  "ourdearamy.com",
+  "ourhobby.com",
+  "oursogo.com",
+  "oursteps.com.au",
+  "oursweb.net",
+  "ourtv.hk",
+  "over-blog.com",
+  "overcast.fm",
+  "overdaily.org",
+  "overplay.net",
+  "ovi.com",
+  "ovpn.com",
+  "ow.ly",
+  "owind.com",
+  "owl.li",
+  "owltail.com",
+  "oxfordscholarship.com",
+  "oxid.it",
+  "oyax.com",
+  "oyghan.com",
+  "ozchinese.com",
+  "ozvoice.org",
+  "ozxw.com",
+  "ozyoyo.com",
+  "pachosting.com",
+  "pacificpoker.com",
+  "packetix.net",
+  "pacopacomama.com",
+  "padmanet.com",
+  "page.link",
+  "page.tl",
+  "page2rss.com",
+  "pagodabox.com",
+  "palacemoon.com",
+  "paldengyal.com",
+  "paljorpublications.com",
+  "palmislife.com",
+  "paltalk.com",
+  "pandapow.co",
+  "pandapow.net",
+  "pandavpn-jp.com",
+  "pandavpnpro.com",
+  "pandora.com",
+  "pandora.tv",
+  "panluan.net",
+  "panoramio.com",
+  "pao-pao.net",
+  "paper.li",
+  "paperb.us",
+  "paradisehill.cc",
+  "paradisepoker.com",
+  "parkansky.com",
+  "parler.com",
+  "parse.com",
+  "parsevideo.com",
+  "partycasino.com",
+  "partypoker.com",
+  "passion.com",
+  "passiontimes.hk",
+  "paste.ee",
+  "pastebin.com",
+  "pastie.org",
+  "pathtosharepoint.com",
+  "patreon.com",
+  "pawoo.net",
+  "paxful.com",
+  "pbs.org",
+  "pbwiki.com",
+  "pbworks.com",
+  "pbxes.com",
+  "pbxes.org",
+  "pcanywhere.net",
+  "pcc.gov.tw",
+  "pcdvd.com.tw",
+  "pchome.com.tw",
+  "pcij.org",
+  "pcloud.com",
+  "pcstore.com.tw",
+  "pct.org.tw",
+  "pdetails.com",
+  "pdproxy.com",
+  "peace.ca",
+  "peacefire.org",
+  "peacehall.com",
+  "pearlher.org",
+  "peeasian.com",
+  "peing.net",
+  "pekingduck.org",
+  "pemulihan.or.id",
+  "pen.io",
+  "penchinese.com",
+  "penchinese.net",
+  "pengyulong.com",
+  "penisbot.com",
+  "pentalogic.net",
+  "penthouse.com",
+  "pentoy.hk",
+  "peoplebookcafe.com",
+  "peoplenews.tw",
+  "peopo.org",
+  "percy.in",
+  "perfect-privacy.com",
+  "perfectgirls.net",
+  "periscope.tv",
+  "persecutionblog.com",
+  "persiankitty.com",
+  "phapluan.org",
+  "phayul.com",
+  "philborges.com",
+  "philly.com",
+  "phmsociety.org",
+  "phncdn.com",
+  "phonegap.com",
+  "photodharma.net",
+  "photofocus.com",
+  "phuquocservices.com",
+  "picacomic.com",
+  "picacomiccn.com",
+  "picasaweb.com",
+  "picidae.net",
+  "picturedip.com",
+  "picturesocial.com",
+  "pimg.tw",
+  "pin-cong.com",
+  "pin6.com",
+  "pincong.rocks",
+  "ping.fm",
+  "pinimg.com",
+  "pinkrod.com",
+  "pinoy-n.com",
+  "pinterest.at",
+  "pinterest.ca",
+  "pinterest.co.kr",
+  "pinterest.co.uk",
+  "pinterest.com",
+  "pinterest.com.mx",
+  "pinterest.de",
+  "pinterest.dk",
+  "pinterest.fr",
+  "pinterest.jp",
+  "pinterest.nl",
+  "pinterest.se",
+  "pipii.tv",
+  "piposay.com",
+  "piraattilahti.org",
+  "piring.com",
+  "pixelqi.com",
+  "pixiv.net",
+  "pixnet.in",
+  "pixnet.net",
+  "pk.com",
+  "pki.goog",
+  "placemix.com",
+  "playboy.com",
+  "playboyplus.com",
+  "player.fm",
+  "playno1.com",
+  "playpcesor.com",
+  "plays.com.tw",
+  "plexvpn.pro",
+  "plixi.com",
+  "plm.org.hk",
+  "plunder.com",
+  "plurk.com",
+  "plus.codes",
+  "plus28.com",
+  "plusbb.com",
+  "pmatehunter.com",
+  "pmates.com",
+  "po2b.com",
+  "pobieramy.top",
+  "podbean.com",
+  "podcast.co",
+  "podictionary.com",
+  "poe.com",
+  "pokerstars.com",
+  "pokerstars.net",
+  "pokerstrategy.com",
+  "politicalchina.org",
+  "politicalconsultation.org",
+  "politiscales.net",
+  "poloniex.com",
+  "polymer-project.org",
+  "polymerhk.com",
+  "poolin.com",
+  "popo.tw",
+  "popvote.hk",
+  "popxi.click",
+  "popyard.com",
+  "popyard.org",
+  "porn.com",
+  "porn2.com",
+  "porn5.com",
+  "pornbase.org",
+  "pornerbros.com",
+  "pornhd.com",
+  "pornhost.com",
+  "pornhub.com",
+  "pornhubdeutsch.net",
+  "pornmm.net",
+  "pornoxo.com",
+  "pornrapidshare.com",
+  "pornsharing.com",
+  "pornsocket.com",
+  "pornstarclub.com",
+  "porntube.com",
+  "porntubenews.com",
+  "porntvblog.com",
+  "pornvisit.com",
+  "port25.biz",
+  "portablevpn.nl",
+  "poskotanews.com",
+  "post01.com",
+  "post76.com",
+  "post852.com",
+  "postadult.com",
+  "postimg.org",
+  "potato.im",
+  "potvpn.com",
+  "power.com",
+  "powerapple.com",
+  "powercx.com",
+  "powerphoto.org",
+  "powerpointninja.com",
+  "pp.ru",
+  "prayforchina.net",
+  "premeforwindows7.com",
+  "premproxy.com",
+  "presentationzen.com",
+  "presidentlee.tw",
+  "prestige-av.com",
+  "pride.google",
+  "printfriendly.com",
+  "prism-break.org",
+  "prisoneralert.com",
+  "pritunl.com",
+  "privacybox.de",
+  "private.com",
+  "privateinternetaccess.com",
+  "privatepaste.com",
+  "privatetunnel.com",
+  "privatevpn.com",
+  "privoxy.org",
+  "procopytips.com",
+  "project-syndicate.org",
+  "prosiben.de",
+  "proton.me",
+  "protonvpn.com",
+  "provideocoalition.com",
+  "provpnaccounts.com",
+  "proxfree.com",
+  "proxifier.com",
+  "proxlet.com",
+  "proxomitron.info",
+  "proxpn.com",
+  "proxyanonimo.es",
+  "proxydns.com",
+  "proxylist.org.uk",
+  "proxynetwork.org.uk",
+  "proxypy.net",
+  "proxyroad.com",
+  "proxytunnel.net",
+  "proyectoclubes.com",
+  "prozz.net",
+  "psblog.name",
+  "pscp.tv",
+  "pshvpn.com",
+  "psiphon.ca",
+  "psiphon3.com",
+  "psiphontoday.com",
+  "pt.im",
+  "pts.org.tw",
+  "ptt.cc",
+  "pttgame.com",
+  "pttvan.org",
+  "pubu.com.tw",
+  "puffinbrowser.com",
+  "puffstore.com",
+  "pullfolio.com",
+  "punyu.com",
+  "pure18.com",
+  "pureapk.com",
+  "pureconcepts.net",
+  "pureinsight.org",
+  "purepdf.com",
+  "purevpn.com",
+  "purplelotus.org",
+  "pursuestar.com",
+  "pushchinawall.com",
+  "pussthecat.org",
+  "pussyspace.com",
+  "putihome.org",
+  "putlocker.com",
+  "putty.org",
+  "puuko.com",
+  "pwned.com",
+  "pximg.net",
+  "python.com",
+  "python.com.tw",
+  "pythonhackers.com",
+  "pythonic.life",
+  "pytorch.org",
+  "qanote.com",
+  "qgirl.com.tw",
+  "qhigh.com",
+  "qi-gong.me",
+  "qianbai.tw",
+  "qiandao.today",
+  "qiangwaikan.com",
+  "qiangyou.org",
+  "qidian.ca",
+  "qienkuen.org",
+  "qiwen.lu",
+  "qixianglu.cn",
+  "qkshare.com",
+  "qmzdd.com",
+  "qoos.com",
+  "qooza.hk",
+  "qpoe.com",
+  "qq.co.za",
+  "qstatus.com",
+  "qtrac.eu",
+  "qtweeter.com",
+  "quannengshen.org",
+  "quantumbooter.net",
+  "questvisual.com",
+  "quitccp.net",
+  "quitccp.org",
+  "quora.com",
+  "quoracdn.net",
+  "quran.com",
+  "quranexplorer.com",
+  "qusi8.net",
+  "qvodzy.org",
+  "qx.net",
+  "qxbbs.org",
+  "qz.com",
+  "r0.ru",
+  "r18.com",
+  "ra.gg",
+  "radicalparty.org",
+  "radiko.jp",
+  "radio.garden",
+  "radioaustralia.net.au",
+  "radiohilight.net",
+  "radioline.co",
+  "radiotime.com",
+  "radiovaticana.org",
+  "radiovncr.com",
+  "rael.org",
+  "raggedbanner.com",
+  "raidcall.com.tw",
+  "raidtalk.com.tw",
+  "rainbowplan.org",
+  "raindrop.io",
+  "raizoji.or.jp",
+  "ramcity.com.au",
+  "rangwang.biz",
+  "rangzen.com",
+  "rangzen.net",
+  "rangzen.org",
+  "ranxiang.com",
+  "ranyunfei.com",
+  "rapbull.net",
+  "rapidgator.net",
+  "rapidmoviez.com",
+  "rapidvpn.com",
+  "rarbgprx.org",
+  "raremovie.cc",
+  "raremovie.net",
+  "rateyourmusic.com",
+  "rationalwiki.org",
+  "rawgit.com",
+  "rawgithub.com",
+  "raxcdn.com",
+  "razyboard.com",
+  "rcinet.ca",
+  "rd.com",
+  "rdio.com",
+  "read01.com",
+  "read100.com",
+  "readingtimes.com.tw",
+  "readmoo.com",
+  "readydown.com",
+  "realcourage.org",
+  "realitykings.com",
+  "realraptalk.com",
+  "realsexpass.com",
+  "reason.com",
+  "rebatesrule.net",
+  "recaptcha.net",
+  "recordhistory.org",
+  "recovery.org.tw",
+  "recoveryversion.com.tw",
+  "recoveryversion.org",
+  "red-lang.org",
+  "redballoonsolidarity.org",
+  "redbubble.com",
+  "redchinacn.net",
+  "redchinacn.org",
+  "redd.it",
+  "reddit.com",
+  "redditlist.com",
+  "redditmedia.com",
+  "redditstatic.com",
+  "redhotlabs.com",
+  "redtube.com",
+  "referer.us",
+  "reflectivecode.com",
+  "registry.google",
+  "relaxbbs.com",
+  "relay.com.tw",
+  "releaseinternational.org",
+  "religionnews.com",
+  "religioustolerance.org",
+  "renminbao.com",
+  "renyurenquan.org",
+  "rerouted.org",
+  "research.google",
+  "resilio.com",
+  "resistchina.org",
+  "retweeteffect.com",
+  "retweetist.com",
+  "retweetrank.com",
+  "reuters.com",
+  "reutersmedia.net",
+  "revleft.com",
+  "revocationcheck.com",
+  "revver.com",
+  "rfa.org",
+  "rfachina.com",
+  "rfamobile.org",
+  "rfaweb.org",
+  "rferl.org",
+  "rfi.fr",
+  "rfi.my",
+  "rightbtc.com",
+  "rightster.com",
+  "rigpa.org",
+  "riku.me",
+  "rileyguide.com",
+  "riseup.net",
+  "ritouki.jp",
+  "ritter.vg",
+  "rixcloud.com",
+  "rixcloud.us",
+  "rlwlw.com",
+  "rmbl.ws",
+  "rmjdw.com",
+  "rmjdw132.info",
+  "roadshow.hk",
+  "roboforex.com",
+  "robustnessiskey.com",
+  "rocket-inc.net",
+  "rocketbbs.com",
+  "rocksdb.org",
+  "rojo.com",
+  "rolfoundation.org",
+  "rolia.net",
+  "rolsociety.org",
+  "ronjoneswriter.com",
+  "roodo.com",
+  "rosechina.net",
+  "rotten.com",
+  "rsdlmonitor.com",
+  "rsf-chinese.org",
+  "rsf.org",
+  "rsgamen.org",
+  "rsshub.app",
+  "rssing.com",
+  "rssmeme.com",
+  "rtalabel.org",
+  "rthk.hk",
+  "rthk.org.hk",
+  "rti.org.tw",
+  "rti.tw",
+  "rtycminnesota.org",
+  "ruanyifeng.com",
+  "rukor.org",
+  "rule34.xxx",
+  "rumble.com",
+  "runbtx.com",
+  "rushbee.com",
+  "rusvpn.com",
+  "ruten.com.tw",
+  "rutracker.net",
+  "rutube.ru",
+  "ruyiseek.com",
+  "rxhj.net",
+  "s-cute.com",
+  "s-dragon.org",
+  "s1heng.com",
+  "s1s1s1.com",
+  "s4miniarchive.com",
+  "s8forum.com",
+  "sa.com",
+  "saboom.com",
+  "sacks.com",
+  "sacom.hk",
+  "sadistic-v.com",
+  "sadpanda.us",
+  "safechat.com",
+  "safeguarddefenders.com",
+  "safervpn.com",
+  "safety.google",
+  "saintyculture.com",
+  "saiq.me",
+  "sakuralive.com",
+  "sakya.org",
+  "salvation.org.hk",
+  "samair.ru",
+  "sambhota.org",
+  "sandscotaicentral.com",
+  "sankakucomplex.com",
+  "sankei.com",
+  "sanmin.com.tw",
+  "sans.edu",
+  "sapikachu.net",
+  "saveliuxiaobo.com",
+  "savemedia.com",
+  "savethedate.foo",
+  "savethesounds.info",
+  "savetibet.de",
+  "savetibet.fr",
+  "savetibet.nl",
+  "savetibet.org",
+  "savetibet.ru",
+  "savetibetstore.org",
+  "saveuighur.org",
+  "savevid.com",
+  "say2.info",
+  "sbme.me",
+  "sbs.com.au",
+  "scasino.com",
+  "schema.org",
+  "sciencemag.org",
+  "sciencenets.com",
+  "scieron.com",
+  "scmp.com",
+  "scmpchinese.com",
+  "scramble.io",
+  "scribd.com",
+  "scriptspot.com",
+  "search.com",
+  "search.xxx",
+  "searchtruth.com",
+  "searx.me",
+  "seatguru.com",
+  "seattlefdc.com",
+  "secretchina.com",
+  "secretgarden.no",
+  "secretsline.biz",
+  "secureservercdn.net",
+  "securetunnel.com",
+  "securityinabox.org",
+  "securitykiss.com",
+  "seed4.me",
+  "seehua.com",
+  "seesmic.com",
+  "seevpn.com",
+  "seezone.net",
+  "sejie.com",
+  "sellclassics.com",
+  "sendsmtp.com",
+  "sendspace.com",
+  "sensortower.com",
+  "seraph.me",
+  "servehttp.com",
+  "serveuser.com",
+  "serveusers.com",
+  "sesawe.net",
+  "sesawe.org",
+  "sethwklein.net",
+  "setn.com",
+  "settv.com.tw",
+  "setty.com.tw",
+  "sevenload.com",
+  "sex-11.com",
+  "sex.com",
+  "sex3.com",
+  "sex8.cc",
+  "sexandsubmission.com",
+  "sexbot.com",
+  "sexhu.com",
+  "sexhuang.com",
+  "sexidude.com",
+  "sexinsex.net",
+  "sextvx.com",
+  "sexxxy.biz",
+  "sf.net",
+  "sfileydy.com",
+  "sfshibao.com",
+  "sftindia.org",
+  "sftuk.org",
+  "shadeyouvpn.com",
+  "shadow.ma",
+  "shadowsky.xyz",
+  "shadowsocks-r.com",
+  "shadowsocks.asia",
+  "shadowsocks.be",
+  "shadowsocks.com",
+  "shadowsocks.com.hk",
+  "shadowsocks.org",
+  "shadowsocks9.com",
+  "shafaqna.com",
+  "shahit.biz",
+  "shambalapost.com",
+  "shambhalasun.com",
+  "shangfang.org",
+  "shapeservices.com",
+  "sharebee.com",
+  "sharecool.org",
+  "sharpdaily.com.hk",
+  "sharpdaily.hk",
+  "sharpdaily.tw",
+  "shat-tibet.com",
+  "shattered.io",
+  "sheikyermami.com",
+  "shellfire.de",
+  "shemalez.com",
+  "shenshou.org",
+  "shenyun.com",
+  "shenyunperformingarts.org",
+  "shenyunshop.com",
+  "shenzhoufilm.com",
+  "shenzhouzhengdao.org",
+  "sherabgyaltsen.com",
+  "shiatv.net",
+  "shicheng.org",
+  "shiksha.com",
+  "shinychan.com",
+  "shipcamouflage.com",
+  "shireyishunjian.com",
+  "shitaotv.org",
+  "shixiao.org",
+  "shizhao.org",
+  "shkspr.mobi",
+  "shodanhq.com",
+  "shooshtime.com",
+  "shop2000.com.tw",
+  "shopee.tw",
+  "shopping.com",
+  "showhaotu.com",
+  "showtime.jp",
+  "showwe.tw",
+  "shutterstock.com",
+  "shvoong.com",
+  "shwchurch.org",
+  "shwchurch3.com",
+  "siddharthasintent.org",
+  "sidelinesnews.com",
+  "sidelinessportseatery.com",
+  "sierrafriendsoftibet.org",
+  "signal.org",
+  "sijihuisuo.club",
+  "sijihuisuo.com",
+  "silkbook.com",
+  "simbolostwitter.com",
+  "simplecd.org",
+  "simpleproductivityblog.com",
+  "sina.com",
+  "sina.com.hk",
+  "sina.com.tw",
+  "sinchew.com.my",
+  "singaporepools.com.sg",
+  "singfortibet.com",
+  "singpao.com.hk",
+  "singtao.ca",
+  "singtao.com",
+  "singtaousa.com",
+  "sino-monthly.com",
+  "sinoants.com",
+  "sinoca.com",
+  "sinocast.com",
+  "sinocism.com",
+  "sinoinsider.com",
+  "sinomontreal.ca",
+  "sinonet.ca",
+  "sinopitt.info",
+  "sinoquebec.com",
+  "sipml5.org",
+  "sis.xxx",
+  "sis001.com",
+  "sis001.us",
+  "site2unblock.com",
+  "site90.net",
+  "sitebro.tw",
+  "sitekreator.com",
+  "sitemaps.org",
+  "six-degrees.io",
+  "sixth.biz",
+  "sjrt.org",
+  "sjum.cn",
+  "sketchappsources.com",
+  "skimtube.com",
+  "skk.moe",
+  "skybet.com",
+  "skyking.com.tw",
+  "skykiwi.com",
+  "skynet.be",
+  "skype.com",
+  "skyvegas.com",
+  "skyxvpn.com",
+  "slacker.com",
+  "slandr.net",
+  "slaytizle.com",
+  "sleazydream.com",
+  "slheng.com",
+  "slickvpn.com",
+  "slideshare.net",
+  "slime.com.tw",
+  "slinkset.com",
+  "slutload.com",
+  "slutmoonbeam.com",
+  "slyip.com",
+  "slyip.net",
+  "sm-miracle.com",
+  "smartdnsproxy.com",
+  "smarthide.com",
+  "smartmailcloud.com",
+  "smchbooks.com",
+  "smh.com.au",
+  "smhric.org",
+  "smith.edu",
+  "smyxy.org",
+  "snapchat.com",
+  "snaptu.com",
+  "sndcdn.com",
+  "sneakme.net",
+  "snowlionpub.com",
+  "so-net.net.tw",
+  "sobees.com",
+  "soc.mil",
+  "socialblade.com",
+  "socialwhale.com",
+  "socks-proxy.net",
+  "sockscap64.com",
+  "sockslist.net",
+  "socrec.org",
+  "sod.co.jp",
+  "softether-download.com",
+  "softether.co.jp",
+  "softether.org",
+  "softfamous.com",
+  "softlayer.net",
+  "softnology.biz",
+  "softsmirror.cf",
+  "softwarebychuck.com",
+  "sogclub.com",
+  "sogoo.org",
+  "sogrady.me",
+  "soh.tw",
+  "sohcradio.com",
+  "sohfrance.org",
+  "soifind.com",
+  "sokamonline.com",
+  "sokmil.com",
+  "solana.com",
+  "solidaritetibet.org",
+  "solidfiles.com",
+  "solv.finance",
+  "somee.com",
+  "songjianjun.com",
+  "sonicbbs.cc",
+  "sonidodelaesperanza.org",
+  "sopcast.com",
+  "sopcast.org",
+  "sophos.com",
+  "sorazone.net",
+  "sorting-algorithms.com",
+  "sos.org",
+  "sosreader.com",
+  "sostibet.org",
+  "sou-tong.org",
+  "soubory.com",
+  "soul-plus.net",
+  "soulcaliburhentai.net",
+  "soumo.info",
+  "soundcloud.com",
+  "soundofhope.kr",
+  "soundofhope.org",
+  "soup.io",
+  "soupofmedia.com",
+  "sourceforge.net",
+  "sourcewadio.com",
+  "south-plus.org",
+  "southnews.com.tw",
+  "sowers.org.hk",
+  "sowiki.net",
+  "soylent.com",
+  "soylentnews.org",
+  "spankbang.com",
+  "spankingtube.com",
+  "spankwire.com",
+  "spb.com",
+  "speakerdeck.com",
+  "speedify.com",
+  "spem.at",
+  "spencertipping.com",
+  "spendee.com",
+  "spicevpn.com",
+  "spideroak.com",
+  "spike.com",
+  "spotflux.com",
+  "spotify.com",
+  "spreadshirt.es",
+  "spring4u.info",
+  "springboardplatform.com",
+  "springwood.me",
+  "sprite.org",
+  "sproutcore.com",
+  "sproxy.info",
+  "squirly.info",
+  "squirrelvpn.com",
+  "srocket.us",
+  "ss-link.com",
+  "ssglobal.co",
+  "ssglobal.me",
+  "ssh91.com",
+  "ssl443.org",
+  "sspanel.net",
+  "sspro.ml",
+  "ssr.tools",
+  "ssrshare.com",
+  "sss.camp",
+  "sstm.moe",
+  "sstmlt.moe",
+  "sstmlt.net",
+  "stackoverflow.com",
+  "stage64.hk",
+  "standupfortibet.org",
+  "standwithhk.org",
+  "stanford.edu",
+  "starfishfx.com",
+  "starp2p.com",
+  "startpage.com",
+  "startuplivingchina.com",
+  "stat.gov.tw",
+  "state.gov",
+  "static-economist.com",
+  "staticflickr.com",
+  "statueofdemocracy.org",
+  "stboy.net",
+  "stc.com.sa",
+  "steamcommunity.com",
+  "steampowered.com",
+  "steel-storm.com",
+  "steemit.com",
+  "steganos.com",
+  "steganos.net",
+  "stepchina.com",
+  "stephaniered.com",
+  "stgloballink.com",
+  "stheadline.com",
+  "sthoo.com",
+  "stickam.com",
+  "stickeraction.com",
+  "stileproject.com",
+  "sto.cc",
+  "stoporganharvesting.org",
+  "stoptibetcrisis.net",
+  "storagenewsletter.com",
+  "stories.google",
+  "storify.com",
+  "storm.mg",
+  "stormmediagroup.com",
+  "stoweboyd.com",
+  "straitstimes.com",
+  "stranabg.com",
+  "straplessdildo.com",
+  "streamable.com",
+  "streamate.com",
+  "streamingthe.net",
+  "streema.com",
+  "streetvoice.com",
+  "strikingly.com",
+  "strongvpn.com",
+  "strongwindpress.com",
+  "student.tw",
+  "studentsforafreetibet.org",
+  "stumbleupon.com",
+  "stupidvideos.com",
+  "substack.com",
+  "successfn.com",
+  "sueddeutsche.de",
+  "sugarsync.com",
+  "sugobbs.com",
+  "sugumiru18.com",
+  "suissl.com",
+  "sulian.me",
+  "summify.com",
+  "sumrando.com",
+  "sun1911.com",
+  "sundayguardianlive.com",
+  "sunmedia.ca",
+  "sunporno.com",
+  "sunskyforum.com",
+  "sunta.com.tw",
+  "sunvpn.net",
+  "suoluo.org",
+  "supchina.com",
+  "superfreevpn.com",
+  "superokayama.com",
+  "superpages.com",
+  "supervpn.net",
+  "superzooi.com",
+  "suppig.net",
+  "suprememastertv.com",
+  "surfeasy.com",
+  "surfeasy.com.au",
+  "surfshark.com",
+  "suroot.com",
+  "surrenderat20.net",
+  "sustainability.google",
+  "svsfx.com",
+  "swagbucks.com",
+  "swissinfo.ch",
+  "swissvpn.net",
+  "switch1.jp",
+  "switchvpn.net",
+  "sydneytoday.com",
+  "sylfoundation.org",
+  "syncback.com",
+  "synergyse.com",
+  "sysresccd.org",
+  "sytes.net",
+  "syx86.cn",
+  "syx86.com",
+  "szbbs.net",
+  "szetowah.org.hk",
+  "t-g.com",
+  "t.co",
+  "t.me",
+  "t35.com",
+  "t66y.com",
+  "t91y.com",
+  "taa-usa.org",
+  "taaze.tw",
+  "tablesgenerator.com",
+  "tabtter.jp",
+  "tacem.org",
+  "taconet.com.tw",
+  "taedp.org.tw",
+  "tafm.org",
+  "tagwa.org.au",
+  "tagwalk.com",
+  "tahr.org.tw",
+  "taipei.gov.tw",
+  "taipeisociety.org",
+  "taipeitimes.com",
+  "taiwan-sex.com",
+  "taiwanbible.com",
+  "taiwancon.com",
+  "taiwandaily.net",
+  "taiwandc.org",
+  "taiwanhot.net",
+  "taiwanjobs.gov.tw",
+  "taiwanjustice.com",
+  "taiwanjustice.net",
+  "taiwankiss.com",
+  "taiwannation.com",
+  "taiwannation.com.tw",
+  "taiwanncf.org.tw",
+  "taiwannews.com.tw",
+  "taiwanonline.cc",
+  "taiwantp.net",
+  "taiwantt.org.tw",
+  "taiwanus.net",
+  "taiwanyes.com",
+  "talk853.com",
+  "talkboxapp.com",
+  "talkcc.com",
+  "talkonly.net",
+  "tamiaode.tk",
+  "tampabay.com",
+  "tanc.org",
+  "tangben.com",
+  "tangren.us",
+  "taoism.net",
+  "taolun.info",
+  "tapanwap.com",
+  "tapatalk.com",
+  "taragana.com",
+  "target.com",
+  "tascn.com.au",
+  "taup.net",
+  "taup.org.tw",
+  "taweet.com",
+  "tbcollege.org",
+  "tbi.org.hk",
+  "tbicn.org",
+  "tbjyt.org",
+  "tbpic.info",
+  "tbrc.org",
+  "tbs-rainbow.org",
+  "tbsec.org",
+  "tbsmalaysia.org",
+  "tbsn.org",
+  "tbsseattle.org",
+  "tbssqh.org",
+  "tbswd.org",
+  "tbtemple.org.uk",
+  "tbthouston.org",
+  "tccwonline.org",
+  "tcewf.org",
+  "tchrd.org",
+  "tcnynj.org",
+  "tcpspeed.co",
+  "tcpspeed.com",
+  "tcsofbc.org",
+  "tcsovi.org",
+  "tdesktop.com",
+  "tdm.com.mo",
+  "teachparentstech.org",
+  "teamamericany.com",
+  "technews.tw",
+  "techspot.com",
+  "techviz.net",
+  "teck.in",
+  "teco-hk.org",
+  "teco-mo.org",
+  "teddysun.com",
+  "teeniefuck.net",
+  "teensinasia.com",
+  "tehrantimes.com",
+  "telecomspace.com",
+  "telegra.ph",
+  "telegram.dog",
+  "telegram.me",
+  "telegram.org",
+  "telegramdownload.com",
+  "telegraph.co.uk",
+  "telesco.pe",
+  "tellme.pw",
+  "tenacy.com",
+  "tensorflow.org",
+  "tenzinpalmo.com",
+  "terabox.com",
+  "tew.org",
+  "textnow.me",
+  "tfhub.dev",
+  "tfiflve.com",
+  "thaicn.com",
+  "thb.gov.tw",
+  "theatlantic.com",
+  "theatrum-belli.com",
+  "theaustralian.com.au",
+  "thebcomplex.com",
+  "theblaze.com",
+  "theblemish.com",
+  "thebobs.com",
+  "thebodyshop-usa.com",
+  "thechinabeat.org",
+  "thechinacollection.org",
+  "thechinastory.org",
+  "theconversation.com",
+  "thedalailamamovie.com",
+  "thediplomat.com",
+  "thedw.us",
+  "theepochtimes.com",
+  "thefacebook.com",
+  "thefrontier.hk",
+  "thegay.com",
+  "thegioitinhoc.vn",
+  "thegly.com",
+  "theguardian.com",
+  "thehots.info",
+  "thehousenews.com",
+  "thehun.net",
+  "theinitium.com",
+  "themoviedb.org",
+  "thenewslens.com",
+  "thepiratebay.org",
+  "theporndude.com",
+  "theportalwiki.com",
+  "theprint.in",
+  "thereallove.kr",
+  "therock.net.nz",
+  "thesaturdaypaper.com.au",
+  "thestandnews.com",
+  "thetibetcenter.org",
+  "thetibetconnection.org",
+  "thetibetmuseum.org",
+  "thetibetpost.com",
+  "thetinhat.com",
+  "thetrotskymovie.com",
+  "thetvdb.com",
+  "thevivekspot.com",
+  "thewgo.org",
+  "theync.com",
+  "thinkgeek.com",
+  "thinkingtaiwan.com",
+  "thinkwithgoogle.com",
+  "thisav.com",
+  "thlib.org",
+  "thomasbernhard.org",
+  "thongdreams.com",
+  "threadreaderapp.com",
+  "threatchaos.com",
+  "throughnightsfire.com",
+  "thumbzilla.com",
+  "thywords.com",
+  "thywords.com.tw",
+  "tiananmenduizhi.com",
+  "tiananmenmother.org",
+  "tiananmenuniv.com",
+  "tiananmenuniv.net",
+  "tiandixing.org",
+  "tianhuayuan.com",
+  "tianlawoffice.com",
+  "tianti.io",
+  "tiantibooks.org",
+  "tianyantong.org.cn",
+  "tianzhu.org",
+  "tibet-envoy.eu",
+  "tibet-foundation.org",
+  "tibet-house-trust.co.uk",
+  "tibet-initiative.de",
+  "tibet-munich.de",
+  "tibet.a.se",
+  "tibet.at",
+  "tibet.ca",
+  "tibet.com",
+  "tibet.fr",
+  "tibet.net",
+  "tibet.nu",
+  "tibet.org",
+  "tibet.org.tw",
+  "tibet.sk",
+  "tibet.to",
+  "tibet3rdpole.org",
+  "tibetaction.net",
+  "tibetaid.org",
+  "tibetalk.com",
+  "tibetan-alliance.org",
+  "tibetan.fr",
+  "tibetanaidproject.org",
+  "tibetanarts.org",
+  "tibetanbuddhistinstitute.org",
+  "tibetancommunity.org",
+  "tibetancommunityuk.net",
+  "tibetanculture.org",
+  "tibetanentrepreneurs.org",
+  "tibetanfeministcollective.org",
+  "tibetanhealth.org",
+  "tibetanjournal.com",
+  "tibetanlanguage.org",
+  "tibetanliberation.org",
+  "tibetanpaintings.com",
+  "tibetanphotoproject.com",
+  "tibetanpoliticalreview.org",
+  "tibetanreview.net",
+  "tibetansports.org",
+  "tibetanwomen.org",
+  "tibetanyouth.org",
+  "tibetanyouthcongress.org",
+  "tibetcharity.dk",
+  "tibetcharity.in",
+  "tibetchild.org",
+  "tibetcity.com",
+  "tibetcollection.com",
+  "tibetcorps.org",
+  "tibetexpress.net",
+  "tibetfocus.com",
+  "tibetfund.org",
+  "tibetgermany.com",
+  "tibetgermany.de",
+  "tibethaus.com",
+  "tibetheritagefund.org",
+  "tibethouse.jp",
+  "tibethouse.org",
+  "tibethouse.us",
+  "tibetinfonet.net",
+  "tibetjustice.org",
+  "tibetkomite.dk",
+  "tibetmuseum.org",
+  "tibetnetwork.org",
+  "tibetoffice.ch",
+  "tibetoffice.com.au",
+  "tibetoffice.eu",
+  "tibetoffice.org",
+  "tibetonline.com",
+  "tibetonline.tv",
+  "tibetoralhistory.org",
+  "tibetpolicy.eu",
+  "tibetrelieffund.co.uk",
+  "tibetsites.com",
+  "tibetsociety.com",
+  "tibetsun.com",
+  "tibetsupportgroup.org",
+  "tibetswiss.ch",
+  "tibettelegraph.com",
+  "tibettimes.net",
+  "tibetwrites.org",
+  "ticket.com.tw",
+  "tigervpn.com",
+  "tiktok.com",
+  "tiltbrush.com",
+  "timdir.com",
+  "time.com",
+  "timesnownews.com",
+  "timsah.com",
+  "timtales.com",
+  "tinc-vpn.org",
+  "tiney.com",
+  "tineye.com",
+  "tintuc101.com",
+  "tiny.cc",
+  "tinychat.com",
+  "tinypaste.com",
+  "tipas.net",
+  "tipo.gov.tw",
+  "tistory.com",
+  "tkcs-collins.com",
+  "tl.gd",
+  "tma.co.jp",
+  "tmagazine.com",
+  "tmdfish.com",
+  "tmi.me",
+  "tmpp.org",
+  "tnaflix.com",
+  "tngrnow.com",
+  "tngrnow.net",
+  "tnp.org",
+  "to-porno.com",
+  "togetter.com",
+  "toh.info",
+  "tokyo-247.com",
+  "tokyo-hot.com",
+  "tokyo-porn-tube.com",
+  "tokyocn.com",
+  "tomonews.net",
+  "tongil.or.kr",
+  "tono-oka.jp",
+  "tonyyan.net",
+  "toodoc.com",
+  "toonel.net",
+  "top.tv",
+  "top10vpn.com",
+  "top81.ws",
+  "topbtc.com",
+  "topnews.in",
+  "toppornsites.com",
+  "topshareware.com",
+  "topsy.com",
+  "toptip.ca",
+  "tora.to",
+  "torcn.com",
+  "torguard.net",
+  "torlock.com",
+  "torproject.org",
+  "torrentkitty.tv",
+  "torrentprivacy.com",
+  "torrentproject.se",
+  "torrenty.org",
+  "torrentz.eu",
+  "torvpn.com",
+  "totalvpn.com",
+  "toutiaoabc.com",
+  "towngain.com",
+  "toypark.in",
+  "toythieves.com",
+  "toytractorshow.com",
+  "tparents.org",
+  "tpi.org.tw",
+  "tracfone.com",
+  "tradingview.com",
+  "translate.goog",
+  "transparency.org",
+  "treemall.com.tw",
+  "trendsmap.com",
+  "trialofccp.org",
+  "trickip.net",
+  "trickip.org",
+  "trimondi.de",
+  "tronscan.org",
+  "trouw.nl",
+  "trt.net.tr",
+  "trtc.com.tw",
+  "truebuddha-md.org",
+  "trulyergonomic.com",
+  "truthontour.org",
+  "truthsocial.com",
+  "truveo.com",
+  "tryheart.jp",
+  "tsctv.net",
+  "tsemtulku.com",
+  "tsquare.tv",
+  "tsu.org.tw",
+  "tsunagarumon.com",
+  "tt1069.com",
+  "tttan.com",
+  "ttv.com.tw",
+  "ttvnw.net",
+  "tu8964.com",
+  "tubaholic.com",
+  "tube.com",
+  "tube8.com",
+  "tube911.com",
+  "tubecup.com",
+  "tubegals.com",
+  "tubeislam.com",
+  "tubepornclassic.com",
+  "tubestack.com",
+  "tubewolf.com",
+  "tuibeitu.net",
+  "tuidang.net",
+  "tuidang.org",
+  "tuidang.se",
+  "tuitui.info",
+  "tuitwit.com",
+  "tumblr.com",
+  "tumutanzi.com",
+  "tumview.com",
+  "tunein.com",
+  "tunnelbear.com",
+  "tunnelblick.net",
+  "tunnelr.com",
+  "tunsafe.com",
+  "turansam.org",
+  "turbobit.net",
+  "turbohide.com",
+  "turbotwitter.com",
+  "turkistantimes.com",
+  "turntable.fm",
+  "tushycash.com",
+  "tutanota.com",
+  "tuvpn.com",
+  "tuzaijidi.com",
+  "tv.com",
+  "tv.google",
+  "tvants.com",
+  "tvb.com",
+  "tvboxnow.com",
+  "tvbs.com.tw",
+  "tvider.com",
+  "tvmost.com.hk",
+  "tvplayvideos.com",
+  "tvunetworks.com",
+  "tw-blog.com",
+  "tw-npo.org",
+  "tw01.org",
+  "twaitter.com",
+  "twapperkeeper.com",
+  "twaud.io",
+  "twavi.com",
+  "twbbs.net.tw",
+  "twbbs.org",
+  "twbbs.tw",
+  "twblogger.com",
+  "tweepguide.com",
+  "tweeplike.me",
+  "tweepmag.com",
+  "tweepml.org",
+  "tweetbackup.com",
+  "tweetboard.com",
+  "tweetboner.biz",
+  "tweetcs.com",
+  "tweetdeck.com",
+  "tweetedtimes.com",
+  "tweetmylast.fm",
+  "tweetphoto.com",
+  "tweetrans.com",
+  "tweetree.com",
+  "tweettunnel.com",
+  "tweetwally.com",
+  "tweetymail.com",
+  "tweez.net",
+  "twelve.today",
+  "twerkingbutt.com",
+  "twftp.org",
+  "twgreatdaily.com",
+  "twibase.com",
+  "twibble.de",
+  "twibbon.com",
+  "twibs.com",
+  "twicountry.org",
+  "twicsy.com",
+  "twiends.com",
+  "twifan.com",
+  "twiffo.com",
+  "twiggit.org",
+  "twilightsex.com",
+  "twilio.com",
+  "twilog.org",
+  "twimbow.com",
+  "twimg.com",
+  "twindexx.com",
+  "twip.me",
+  "twipple.jp",
+  "twishort.com",
+  "twistar.cc",
+  "twister.net.co",
+  "twisterio.com",
+  "twisternow.com",
+  "twistory.net",
+  "twit2d.com",
+  "twitbrowser.net",
+  "twitcause.com",
+  "twitch.tv",
+  "twitchcdn.net",
+  "twitgether.com",
+  "twitgoo.com",
+  "twitiq.com",
+  "twitlonger.com",
+  "twitmania.com",
+  "twitoaster.com",
+  "twitonmsn.com",
+  "twitpic.com",
+  "twitstat.com",
+  "twittbot.net",
+  "twitter.com",
+  "twitter.jp",
+  "twitter4j.org",
+  "twittercounter.com",
+  "twitterfeed.com",
+  "twittergadget.com",
+  "twitterkr.com",
+  "twittermail.com",
+  "twitterrific.com",
+  "twittertim.es",
+  "twitthat.com",
+  "twitturk.com",
+  "twitturly.com",
+  "twitvid.com",
+  "twitzap.com",
+  "twiyia.com",
+  "twnorth.org.tw",
+  "twreporter.org",
+  "twskype.com",
+  "twstar.net",
+  "twt.tl",
+  "twtkr.com",
+  "twtrland.com",
+  "twttr.com",
+  "twurl.nl",
+  "twyac.org",
+  "txxx.com",
+  "tycool.com",
+  "typepad.com",
+  "typora.io",
+  "u15.info",
+  "u9un.com",
+  "ub0.cc",
+  "ubddns.org",
+  "uberproxy.net",
+  "uc-japan.org",
+  "ucam.org",
+  "ucanews.com",
+  "ucdc1998.org",
+  "uchicago.edu",
+  "uderzo.it",
+  "udn.com",
+  "udn.com.tw",
+  "udnbkk.com",
+  "uforadio.com.tw",
+  "ufreevpn.com",
+  "ugo.com",
+  "uhdwallpapers.org",
+  "uhrp.org",
+  "uighur.nl",
+  "uighurbiz.net",
+  "uk.to",
+  "ukcdp.co.uk",
+  "ukliferadio.co.uk",
+  "uku.im",
+  "ulike.net",
+  "ulop.net",
+  "ultravpn.fr",
+  "ultraxs.com",
+  "umich.edu",
+  "unblock-us.com",
+  "unblockdmm.com",
+  "unblocker.yt",
+  "unblocksit.es",
+  "uncyclomedia.org",
+  "uncyclopedia.hk",
+  "uncyclopedia.tw",
+  "underwoodammo.com",
+  "unholyknight.com",
+  "uni.cc",
+  "unicode.org",
+  "unification.net",
+  "unification.org.tw",
+  "unirule.cloud",
+  "unitedsocialpress.com",
+  "unix100.com",
+  "unknownspace.org",
+  "unodedos.com",
+  "unpo.org",
+  "unseen.is",
+  "unstable.icu",
+  "untraceable.us",
+  "uocn.org",
+  "updatestar.com",
+  "upghsbc.com",
+  "upholdjustice.org",
+  "upload4u.info",
+  "uploaded.net",
+  "uploaded.to",
+  "uploadstation.com",
+  "upmedia.mg",
+  "upornia.com",
+  "uproxy.org",
+  "uptodown.com",
+  "upwill.org",
+  "ur7s.com",
+  "uraban.me",
+  "urbandictionary.com",
+  "urbansurvival.com",
+  "urchin.com",
+  "url.com.tw",
+  "url.tw",
+  "urlborg.com",
+  "urlparser.com",
+  "us.to",
+  "usacn.com",
+  "usaip.eu",
+  "usc.edu",
+  "uscnpm.org",
+  "usembassy.gov",
+  "usfk.mil",
+  "usma.edu",
+  "usmc.mil",
+  "usocctn.com",
+  "uspto.gov",
+  "ustibetcommittee.org",
+  "ustream.tv",
+  "usus.cc",
+  "utopianpal.com",
+  "uu-gg.com",
+  "uukanshu.com",
+  "uvwxyz.xyz",
+  "uwants.com",
+  "uwants.net",
+  "uyghur-j.org",
+  "uyghur.co.uk",
+  "uyghuraa.org",
+  "uyghuramerican.org",
+  "uyghurbiz.org",
+  "uyghurcanadian.ca",
+  "uyghurcongress.org",
+  "uyghurpen.org",
+  "uyghurpress.com",
+  "uyghurstudies.org",
+  "uyghurtribunal.com",
+  "uygur.org",
+  "uymaarip.com",
+  "v2ex.com",
+  "v2fly.org",
+  "v2ray.com",
+  "v2raycn.com",
+  "v2raytech.com",
+  "valeursactuelles.com",
+  "van001.com",
+  "van698.com",
+  "vanemu.cn",
+  "vanilla-jp.com",
+  "vanpeople.com",
+  "vansky.com",
+  "vaticannews.va",
+  "vatn.org",
+  "vcf-online.org",
+  "vcfbuilder.org",
+  "vegasred.com",
+  "velkaepocha.sk",
+  "venbbs.com",
+  "venchina.com",
+  "venetianmacao.com",
+  "ventureswell.com",
+  "veoh.com",
+  "vercel.app",
+  "verizon.net",
+  "vermonttibet.org",
+  "versavpn.com",
+  "verybs.com",
+  "vevo.com",
+  "vft.com.tw",
+  "viber.com",
+  "vica.info",
+  "victimsofcommunism.org",
+  "vid.me",
+  "vidble.com",
+  "videobam.com",
+  "videodetective.com",
+  "videomega.tv",
+  "videomo.com",
+  "videopediaworld.com",
+  "videopress.com",
+  "vidinfo.org",
+  "vietdaikynguyen.com",
+  "vijayatemple.org",
+  "vilavpn.com",
+  "vimeo.com",
+  "vimperator.org",
+  "vincnd.com",
+  "vine.co",
+  "vinniev.com",
+  "vip-enterprise.com",
+  "virginia.edu",
+  "virtualrealporn.com",
+  "visibletweets.com",
+  "visiontimes.com",
+  "vital247.org",
+  "viu.com",
+  "viu.tv",
+  "vivahentai4u.net",
+  "vivaldi.com",
+  "vivatube.com",
+  "vivthomas.com",
+  "vizvaz.com",
+  "vjav.com",
+  "vjmedia.com.hk",
+  "vllcs.org",
+  "vmixcore.com",
+  "vmpsoft.com",
+  "vnet.link",
+  "voa.mobi",
+  "voacambodia.com",
+  "voacantonese.com",
+  "voachinese.com",
+  "voachineseblog.com",
+  "voagd.com",
+  "voaindonesia.com",
+  "voanews.com",
+  "voatibetan.com",
+  "voatibetanenglish.com",
+  "vocativ.com",
+  "vocn.tv",
+  "vocus.cc",
+  "voicettank.org",
+  "vot.org",
+  "vovo2000.com",
+  "voxer.com",
+  "voy.com",
+  "vpn.ac",
+  "vpn4all.com",
+  "vpnaccount.org",
+  "vpnaccounts.com",
+  "vpnbook.com",
+  "vpncomparison.org",
+  "vpncoupons.com",
+  "vpncup.com",
+  "vpndada.com",
+  "vpnfan.com",
+  "vpnfire.com",
+  "vpnfires.biz",
+  "vpnforgame.net",
+  "vpngate.jp",
+  "vpngate.net",
+  "vpngratis.net",
+  "vpnhq.com",
+  "vpnhub.com",
+  "vpninja.net",
+  "vpnintouch.com",
+  "vpnintouch.net",
+  "vpnjack.com",
+  "vpnmaster.com",
+  "vpnmentor.com",
+  "vpnpick.com",
+  "vpnpop.com",
+  "vpnpronet.com",
+  "vpnreactor.com",
+  "vpnreviewz.com",
+  "vpnsecure.me",
+  "vpnshazam.com",
+  "vpnshieldapp.com",
+  "vpnsp.com",
+  "vpntraffic.com",
+  "vpntunnel.com",
+  "vpnuk.info",
+  "vpnunlimitedapp.com",
+  "vpnvip.com",
+  "vpnworldwide.com",
+  "vporn.com",
+  "vpser.net",
+  "vraiesagesse.net",
+  "vrmtr.com",
+  "vrsmash.com",
+  "vs.com",
+  "vtunnel.com",
+  "vuku.cc",
+  "vultryhw.com",
+  "vzw.com",
+  "w3.org",
+  "w3schools.com",
+  "waffle1999.com",
+  "wahas.com",
+  "waigaobu.com",
+  "waikeung.org",
+  "wailaike.net",
+  "wainao.me",
+  "waiwaier.com",
+  "wallmama.com",
+  "wallornot.org",
+  "wallpapercasa.com",
+  "wallproxy.com",
+  "wallsttv.com",
+  "waltermartin.com",
+  "waltermartin.org",
+  "wan-press.org",
+  "wanderinghorse.net",
+  "wangafu.net",
+  "wangjinbo.org",
+  "wanglixiong.com",
+  "wango.org",
+  "wangruoshui.net",
+  "wangruowang.org",
+  "want-daily.com",
+  "wanz-factory.com",
+  "wapedia.mobi",
+  "warehouse333.com",
+  "warroom.org",
+  "waselpro.com",
+  "washeng.net",
+  "washingtonpost.com",
+  "watch8x.com",
+  "watchinese.com",
+  "watchmygf.net",
+  "watchout.tw",
+  "wattpad.com",
+  "wav.tv",
+  "waveprotocol.org",
+  "waymo.com",
+  "wda.gov.tw",
+  "wdf5.com",
+  "wealth.com.tw",
+  "wearehairy.com",
+  "wearn.com",
+  "weather.com.hk",
+  "web.dev",
+  "web2project.net",
+  "webbang.net",
+  "webevader.org",
+  "webfreer.com",
+  "webjb.org",
+  "weblagu.com",
+  "webmproject.org",
+  "webpack.de",
+  "webpkgcache.com",
+  "webrtc.org",
+  "webrush.net",
+  "webs-tv.net",
+  "websitepulse.com",
+  "websnapr.com",
+  "webwarper.net",
+  "webworkerdaily.com",
+  "wechatlawsuit.com",
+  "weekmag.info",
+  "wefightcensorship.org",
+  "wefong.com",
+  "weiboleak.com",
+  "weihuo.org",
+  "weijingsheng.org",
+  "weiming.info",
+  "weiquanwang.org",
+  "weisuo.ws",
+  "welovecock.com",
+  "welt.de",
+  "wemigrate.org",
+  "wengewang.com",
+  "wengewang.org",
+  "wenhui.ch",
+  "wenweipo.com",
+  "wenxuecity.com",
+  "wenyunchao.com",
+  "wenzhao.ca",
+  "westca.com",
+  "westernshugdensociety.org",
+  "westernwolves.com",
+  "westkit.net",
+  "westpoint.edu",
+  "wetplace.com",
+  "wetpussygames.com",
+  "wexiaobo.org",
+  "wezhiyong.org",
+  "wezone.net",
+  "wforum.com",
+  "wha.la",
+  "whatblocked.com",
+  "whatbrowser.org",
+  "whatsapp.com",
+  "whatsapp.net",
+  "whatsonweibo.com",
+  "wheatseeds.org",
+  "wheelockslatin.com",
+  "whereiswerner.com",
+  "wheretowatch.com",
+  "whippedass.com",
+  "whispersystems.org",
+  "whodns.xyz",
+  "whoer.net",
+  "whotalking.com",
+  "whylover.com",
+  "whyx.org",
+  "widevine.com",
+  "wikaba.com",
+  "wikia.com",
+  "wikileaks-forum.com",
+  "wikileaks.ch",
+  "wikileaks.com",
+  "wikileaks.de",
+  "wikileaks.eu",
+  "wikileaks.lu",
+  "wikileaks.org",
+  "wikileaks.pl",
+  "wikilivres.info",
+  "wikimapia.org",
+  "wikimedia.org",
+  "wikinews.org",
+  "wikipedia.org",
+  "wikiquote.org",
+  "wikisource.org",
+  "wikiwand.com",
+  "wikiwiki.jp",
+  "wildammo.com",
+  "williamhill.com",
+  "willw.net",
+  "windowsphoneme.com",
+  "windscribe.com",
+  "windy.com",
+  "wingamestore.com",
+  "wingy.site",
+  "winning11.com",
+  "winwhispers.info",
+  "wionews.com",
+  "wire.com",
+  "wiredbytes.com",
+  "wiredpen.com",
+  "wireguard.com",
+  "wisdompubs.org",
+  "wisevid.com",
+  "wistia.com",
+  "withgoogle.com",
+  "withyoutube.com",
+  "witnessleeteaching.com",
+  "witopia.net",
+  "wizcrafts.net",
+  "wjbk.org",
+  "wn.com",
+  "wnacg.com",
+  "wnacg.org",
+  "wo.tc",
+  "woeser.com",
+  "woesermiddle-way.net",
+  "wokar.org",
+  "wolfax.com",
+  "wombo.ai",
+  "woolyss.com",
+  "woopie.jp",
+  "woopie.tv",
+  "wordpress.com",
+  "workatruna.com",
+  "workerdemo.org.hk",
+  "workerempowerment.org",
+  "workers.dev",
+  "workersthebig.net",
+  "workflow.is",
+  "worldcat.org",
+  "worldjournal.com",
+  "worldvpn.net",
+  "wow-life.net",
+  "wow.com",
+  "wowgirls.com",
+  "wowhead.com",
+  "wowlegacy.ml",
+  "wowporn.com",
+  "wowrk.com",
+  "woxinghuiguo.com",
+  "woyaolian.org",
+  "wozy.in",
+  "wp.com",
+  "wpoforum.com",
+  "wqyd.org",
+  "wrchina.org",
+  "wretch.cc",
+  "wsj.com",
+  "wsj.net",
+  "wsjhk.com",
+  "wtbn.org",
+  "wtfpeople.com",
+  "wuerkaixi.com",
+  "wufafangwen.com",
+  "wufi.org.tw",
+  "wuguoguang.com",
+  "wujie.net",
+  "wujieliulan.com",
+  "wukangrui.net",
+  "wuw.red",
+  "wuyanblog.com",
+  "wwe.com",
+  "wwitv.com",
+  "www1.biz",
+  "wwwhost.biz",
+  "wzyboy.im",
+  "x-art.com",
+  "x-berry.com",
+  "x-wall.org",
+  "x.co",
+  "x.company",
+  "x1949x.com",
+  "x24hr.com",
+  "x365x.com",
+  "xanga.com",
+  "xbabe.com",
+  "xbookcn.com",
+  "xbtce.com",
+  "xcafe.in",
+  "xcity.jp",
+  "xcritic.com",
+  "xda-developers.com",
+  "xerotica.com",
+  "xfiles.to",
+  "xfinity.com",
+  "xgmyd.com",
+  "xhamster.com",
+  "xianba.net",
+  "xianchawang.net",
+  "xianjian.tw",
+  "xianqiao.net",
+  "xiaobaiwu.com",
+  "xiaochuncnjp.com",
+  "xiaod.in",
+  "xiaohexie.com",
+  "xiaolan.me",
+  "xiaoma.org",
+  "xiaomi.eu",
+  "xiaxiaoqiang.net",
+  "xiezhua.com",
+  "xihua.es",
+  "xinbao.de",
+  "xing.com",
+  "xinhuanet.org",
+  "xinjiangpolicefiles.org",
+  "xinmiao.com.hk",
+  "xinsheng.net",
+  "xinshijue.com",
+  "xinyubbs.net",
+  "xiongpian.com",
+  "xiuren.org",
+  "xixicui.icu",
+  "xizang-zhiye.org",
+  "xjp.cc",
+  "xjtravelguide.com",
+  "xkiwi.tk",
+  "xlfmtalk.com",
+  "xlfmwz.info",
+  "xm.com",
+  "xml-training-guide.com",
+  "xmovies.com",
+  "xn--4gq171p.com",
+  "xn--9pr62r24a.com",
+  "xn--czq75pvv1aj5c.org",
+  "xn--i2ru8q2qg.com",
+  "xn--ngstr-lra8j.com",
+  "xn--oiq.cc",
+  "xn--p8j9a0d9c9a.xn--q9jyb4c",
+  "xnxx.com",
+  "xpdo.net",
+  "xpud.org",
+  "xrentdvd.com",
+  "xsden.info",
+  "xskywalker.com",
+  "xskywalker.net",
+  "xtube.com",
+  "xuchao.net",
+  "xuchao.org",
+  "xuehua.us",
+  "xuite.net",
+  "xuzhiyong.net",
+  "xvbelink.com",
+  "xvideo.cc",
+  "xvideos-cdn.com",
+  "xvideos.com",
+  "xvideos.es",
+  "xvinlink.com",
+  "xxbbx.com",
+  "xxlmovies.com",
+  "xxuz.com",
+  "xxx.com",
+  "xxx.xxx",
+  "xxxfuckmom.com",
+  "xxxx.com.au",
+  "xxxy.biz",
+  "xxxy.info",
+  "xxxymovies.com",
+  "xys.org",
+  "xysblogs.org",
+  "xyy69.com",
+  "xyy69.info",
+  "y2mate.com",
+  "yadi.sk",
+  "yahoo.co.jp",
+  "yahoo.com",
+  "yahoo.com.hk",
+  "yahoo.com.tw",
+  "yahoo.net",
+  "yakbutterblues.com",
+  "yam.com",
+  "yam.org.tw",
+  "yande.re",
+  "yandex.com",
+  "yanghengjun.com",
+  "yangjianli.com",
+  "yasni.co.uk",
+  "yayabay.com",
+  "ycombinator.com",
+  "ydy.com",
+  "yeahteentube.com",
+  "yecl.net",
+  "yeelou.com",
+  "yeeyi.com",
+  "yegle.net",
+  "yes-news.com",
+  "yes.xxx",
+  "yes123.com.tw",
+  "yesasia.com",
+  "yesasia.com.hk",
+  "yespornplease.com",
+  "yeyeclub.com",
+  "ygto.com",
+  "yhcw.net",
+  "yibada.com",
+  "yibaochina.com",
+  "yidio.com",
+  "yigeni.com",
+  "yilubbs.com",
+  "yimg.com",
+  "yingsuoss.com",
+  "yinlei.org",
+  "yipub.com",
+  "yiyechat.com",
+  "yizhihongxing.com",
+  "yobit.net",
+  "yobt.com",
+  "yobt.tv",
+  "yogichen.org",
+  "yolasite.com",
+  "yomiuri.co.jp",
+  "yong.hu",
+  "yorkbbs.ca",
+  "you-get.org",
+  "you.com",
+  "youdontcare.com",
+  "youjizz.com",
+  "youmaker.com",
+  "youngpornvideos.com",
+  "youngspiration.hk",
+  "youpai.org",
+  "youporn.com",
+  "youporngay.com",
+  "your-freedom.net",
+  "yourepeat.com",
+  "yourlisten.com",
+  "yourlust.com",
+  "yourprivatevpn.com",
+  "yourtrap.com",
+  "yousendit.com",
+  "youshun12.com",
+  "youthforfreechina.org",
+  "youthnetradio.org",
+  "youthwant.com.tw",
+  "youtu.be",
+  "youtube-nocookie.com",
+  "youtube.com",
+  "youtubecn.com",
+  "youtubeeducation.com",
+  "youtubegaming.com",
+  "youtubekids.com",
+  "youversion.com",
+  "youwin.com",
+  "youxu.info",
+  "yt.be",
+  "ytht.net",
+  "ytimg.com",
+  "ytn.co.kr",
+  "yuanming.net",
+  "yuanzhengtang.org",
+  "yulghun.com",
+  "yunchao.net",
+  "yuntipub.com",
+  "yuvutu.com",
+  "yvesgeleyn.com",
+  "ywpw.com",
+  "yx51.net",
+  "yyii.org",
+  "yyjlymb.xyz",
+  "yzzk.com",
+  "z-lib.org",
+  "zacebook.com",
+  "zalmos.com",
+  "zannel.com",
+  "zaobao.com",
+  "zaobao.com.sg",
+  "zaozon.com",
+  "zapto.org",
+  "zattoo.com",
+  "zb.com",
+  "zdnet.com.tw",
+  "zello.com",
+  "zengjinyan.org",
+  "zenmate.com",
+  "zerohedge.com",
+  "zeronet.io",
+  "zeutch.com",
+  "zfreet.com",
+  "zgsddh.com",
+  "zgzcjj.net",
+  "zhanbin.net",
+  "zhangboli.net",
+  "zhangtianliang.com",
+  "zhanlve.org",
+  "zhenghui.org",
+  "zhengjian.org",
+  "zhengwunet.org",
+  "zhenlibu.info",
+  "zhenlibu1984.com",
+  "zhenxiang.biz",
+  "zhinengluyou.com",
+  "zhongguo.ca",
+  "zhongguorenquan.org",
+  "zhongguotese.net",
+  "zhongmeng.org",
+  "zhoushuguang.com",
+  "zhreader.com",
+  "zhuangbi.me",
+  "zhuanxing.cn",
+  "zhuatieba.com",
+  "zhuichaguoji.org",
+  "zi.media",
+  "zi5.me",
+  "ziddu.com",
+  "zillionk.com",
+  "zim.vn",
+  "zinio.com",
+  "ziporn.com",
+  "zippyshare.com",
+  "zkaip.com",
+  "zkiz.com",
+  "zmw.cn",
+  "zodgame.us",
+  "zoho.com",
+  "zomobo.net",
+  "zonaeuropa.com",
+  "zonghexinwen.com",
+  "zonghexinwen.net",
+  "zoogvpn.com",
+  "zootool.com",
+  "zoozle.net",
+  "zophar.net",
+  "zorrovpn.com",
+  "zozotown.com",
+  "zpn.im",
+  "zspeeder.me",
+  "zsrhao.com",
+  "zuo.la",
+  "zuobiao.me",
+  "zuola.com",
+  "zvereff.com",
+  "zynaima.com",
+  "zynamics.com",
+  "zyns.com",
+  "zyxel.com",
+  "zyzc9.com",
+  "zzcartoon.com",
+  "zzcloud.me",
+  "zzux.com",
+];

+ 4 - 0
dashboard/src/locales/zh-Hans/label.ts

@@ -25,6 +25,10 @@ const items = {
   "labels.page.number.type.V": "印度内观中心版",
   "labels.page.number.type.V": "印度内观中心版",
   "labels.page.number.type.O": "其他",
   "labels.page.number.type.O": "其他",
   "labels.page.number.type.para": "缅文段落",
   "labels.page.number.type.para": "缅文段落",
+  "labels.curr.paragraph.only": "仅显示此段",
+  "labels.curr.paragraph.open": "在新标签页打开",
+  "labels.curr.paragraph.copy.tpl": "复制句子模版",
+  "labels.curr.paragraph.quote.link.tpl": "引用链接模版",
 };
 };
 
 
 export default items;
 export default items;

+ 2 - 3
dashboard/src/pages/library/article/show.tsx

@@ -48,7 +48,6 @@ import { TResType } from "../../../components/discussion/DiscussionListCard";
 import { modeChange } from "../../../reducers/article-mode";
 import { modeChange } from "../../../reducers/article-mode";
 import SearchButton from "../../../components/general/SearchButton";
 import SearchButton from "../../../components/general/SearchButton";
 import ToStudio from "../../../components/auth/ToStudio";
 import ToStudio from "../../../components/auth/ToStudio";
-import { currentUser as _currentUser } from "../../../reducers/current-user";
 import LoginAlertModal from "../../../components/auth/LoginAlertModal";
 import LoginAlertModal from "../../../components/auth/LoginAlertModal";
 import ShareButton from "../../../components/export/ShareButton";
 import ShareButton from "../../../components/export/ShareButton";
 
 
@@ -76,7 +75,6 @@ const Widget = () => {
     useState<IArticleDataResponse>();
     useState<IArticleDataResponse>();
 
 
   const paraChange = useAppSelector(paraParam);
   const paraChange = useAppSelector(paraParam);
-  const user = useAppSelector(_currentUser);
 
 
   useEffect(() => {
   useEffect(() => {
     if (typeof paraChange === "undefined") {
     if (typeof paraChange === "undefined") {
@@ -331,6 +329,7 @@ const Widget = () => {
               book={searchParams.get("book")}
               book={searchParams.get("book")}
               para={searchParams.get("par")}
               para={searchParams.get("par")}
               channelId={searchParams.get("channel")}
               channelId={searchParams.get("channel")}
+              focus={searchParams.get("focus")}
               articleId={id}
               articleId={id}
               anthologyId={searchParams.get("anthology")}
               anthologyId={searchParams.get("anthology")}
               mode={searchParams.get("mode") as ArticleMode}
               mode={searchParams.get("mode") as ArticleMode}
@@ -340,7 +339,7 @@ const Widget = () => {
                 target?: string
                 target?: string
               ) => {
               ) => {
                 console.log("article change", newType, article, target);
                 console.log("article change", newType, article, target);
-
+                scrollToTop();
                 let url = `/article/${newType}/${article}?mode=${currMode}`;
                 let url = `/article/${newType}/${article}?mode=${currMode}`;
                 searchParams.forEach((value, key) => {
                 searchParams.forEach((value, key) => {
                   console.log(value, key);
                   console.log(value, key);

+ 2 - 2
dashboard/src/pages/library/search/search.tsx

@@ -61,7 +61,7 @@ const Widget = () => {
                 }}
                 }}
               />
               />
             </Col>
             </Col>
-            <Col xs={24} sm={18} md={14}>
+            <Col xs={24} sm={18} md={13}>
               <Space direction="vertical" style={{ padding: 10 }}>
               <Space direction="vertical" style={{ padding: 10 }}>
                 <Space>
                 <Space>
                   <FullSearchInput
                   <FullSearchInput
@@ -162,7 +162,7 @@ const Widget = () => {
                 />
                 />
               </Space>
               </Space>
             </Col>
             </Col>
-            <Col xs={0} sm={0} md={5}>
+            <Col xs={0} sm={0} md={6}>
               {key && parseInt(key) ? (
               {key && parseInt(key) ? (
                 <PageNumberList
                 <PageNumberList
                   keyWord={key}
                   keyWord={key}

+ 30 - 0
dashboard/src/reducers/focus.ts

@@ -0,0 +1,30 @@
+import { createSlice, PayloadAction } from "@reduxjs/toolkit";
+
+import type { RootState } from "../store";
+
+export interface IFocus {
+  type: string;
+  id?: string | null;
+}
+
+interface IState {
+  focus?: IFocus;
+}
+
+const initialState: IState = {};
+
+export const slice = createSlice({
+  name: "focus",
+  initialState,
+  reducers: {
+    refresh: (state, action: PayloadAction<IFocus>) => {
+      state.focus = action.payload;
+    },
+  },
+});
+
+export const { refresh } = slice.actions;
+
+export const currFocus = (state: RootState): IState => state.focus;
+
+export default slice.reducer;

+ 2 - 0
dashboard/src/store.ts

@@ -25,6 +25,7 @@ import netStatusReducer from "./reducers/net-status";
 import discussionReducer from "./reducers/discussion";
 import discussionReducer from "./reducers/discussion";
 import wbwReducer from "./reducers/wbw";
 import wbwReducer from "./reducers/wbw";
 import termOrderReducer from "./reducers/term-order";
 import termOrderReducer from "./reducers/term-order";
+import focusReducer from "./reducers/focus";
 
 
 const store = configureStore({
 const store = configureStore({
   reducer: {
   reducer: {
@@ -53,6 +54,7 @@ const store = configureStore({
     discussion: discussionReducer,
     discussion: discussionReducer,
     wbw: wbwReducer,
     wbw: wbwReducer,
     termOrder: termOrderReducer,
     termOrder: termOrderReducer,
+    focus: focusReducer,
   },
   },
 });
 });
 
 

+ 12 - 0
openapi/public/assets/protocol/resources/sentence/index.yaml

@@ -37,6 +37,18 @@ get:
       description: 是否由服务器渲染content 默认false
       description: 是否由服务器渲染content 默认false
       schema:
       schema:
         type: boolean
         type: boolean
+    - name: format
+      in: query
+      description: 服务器渲染content的格式。默认react
+      schema:
+        type: string
+        enum:
+          - react
+          - unity
+          - html
+          - text
+          - tex
+          - simple
     - name: limit
     - name: limit
       in: query
       in: query
       description: 每次提取记录数
       description: 每次提取记录数

+ 1 - 1
rpc/morus/morus/server.php

@@ -9,7 +9,7 @@ class Greeter extends \Mint\Morus\V1\MarkdownStub
         \Grpc\ServerContext $context
         \Grpc\ServerContext $context
     ): ?\Mint\Morus\V1\MarkdownToHtmlResponse {
     ): ?\Mint\Morus\V1\MarkdownToHtmlResponse {
         $text = $request->getPayload();
         $text = $request->getPayload();
-        echo 'Received request: ' . $text . PHP_EOL;
+        //echo 'Received request: ' . $text . PHP_EOL;
         $response = new \Mint\Morus\V1\MarkdownToHtmlResponse();
         $response = new \Mint\Morus\V1\MarkdownToHtmlResponse();
         $Parsedown = new Parsedown();
         $Parsedown = new Parsedown();
         $response->setPayload($Parsedown->text($text));
         $response->setPayload($Parsedown->text($text));

Некоторые файлы не были показаны из-за большого количества измененных файлов