日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

ClickHouse 源码阅读 —— SQL的前世今生

發布時間:2024/8/23 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ClickHouse 源码阅读 —— SQL的前世今生 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注:以下分析基于開源 v19.15.2.2-stable 版本進行,社區最新版本代碼改動較大,但是總體思路是不變的。

用戶提交一條查詢SQL背后發生了什么?

在傳統關系型數據庫中,SQL處理器的組件主要包括以下幾種:

? Query Parsing
負責進行詞法和語法分析,把程序從人類高可讀的格式(即SQL)轉化成機器高可讀的格式(AST,抽象語法樹)。

詞法分析指的是把SQL中的字符序列分解成一個個獨立的詞法單元——Token(<類型,值>)。
語法分析指的是從詞法分析器輸出的token中識別各類短語,并構造出一顆抽象語法樹。而按照構造抽象語法樹的方向,又可以把語法分析分成自頂向下和自底向上分析兩種。而ClickHouse采用的則是手寫一個遞歸下降的語法分析器。

? Query Rewrite
即通常我們說的"Logical Optimizer"或基于規則的優化器(Rule-Based Optimizer,即RBO)。

其負責應用一些啟發式規則,負責簡化和標準化查詢,無需改變查詢的語義。

常見操作有:謂詞和算子下推,視圖展開,簡化常量運算表達式,謂詞邏輯的重寫,語義的優化等。

? Query Optimizer
即通常我們所說的"Physical Optimizer",負責把內部查詢表達轉化成一個高效的查詢計劃,指導DBMS如何去取表,如何進行排序,如何Join。如下圖所示,一個查詢計劃可以被認為是一個數據流圖,在這個數據流圖中,表數據會像在管道中傳輸一樣,從一個查詢操作符(operator)傳遞到另一個查詢操作符。

?

一個查詢計劃

? Query Executor
查詢執行器,負責執行具體的查詢計劃,從存儲引擎中獲取數據并且對數據應用查詢計劃得到結果。
執行引擎也分為很多種,如經典的火山模型(Volcano Model),還有ClickHouse采用的向量化執行模型(Vectorization Model)。

?

?

(圖來自經典論文 Architecture Of Database System)

但不管是傳統的關系型數據庫,還是非關系型數據庫,SQL的解析和生成執行計劃過程都是大同小異的,而縱覽ClickHouse的源代碼,可以把用戶提交一條查詢SQL背后的過程總結如下:

1.服務端接收客戶端發來的SQL請求,具體形式是一個網絡包,Server的協議層需要拆包把SQL解析出來

2.Server負責初始化上下文與Network Handler,然后?Parser?對Query做詞法和語法分析,解析成AST

3.Interpreter的?SyntaxAnalyzer?會應用一些啟發式規則對AST進行優化重寫

4.Interpreter的?ExpressionAnalyzer?根據上下文信息以及優化重寫后的AST生成物理執行計劃

5.物理執行計劃分發到本地或者分布式的executor,各自從存儲引擎中獲取數據,應用執行計劃

6.Server把執行后的結果以Block流的形式輸出到Socket緩沖區,Client從Socket中讀取即可得到結果

接收客戶端請求

我們要以服務端的視角來出發,首先來看server.cpp大概做什么事情:

下面只挑選重要的邏輯:

? 初始化上下文

? 初始化Zookeeper(ClickHouse的副本復制機制需要依賴ZooKeeper)

? 常規配置初始化

? 綁定服務端的端口,根據網絡協議初始化Handler,對客戶端提供服務

int Server::main() {// 初始化上下文global_context = std::make_unique<Context>(Context::createGlobal());global_context->setApplicationType(Context::ApplicationType::SERVER);// zk初始化zkutil::ZooKeeperNodeCache main_config_zk_node_cache([&] { return global_context->getZooKeeper(); });//其他config的初始化//...//綁定端口,對外提供服務auto address = make_socket_address(host, port);socket.bind(address, /* reuseAddress = */ true);//根據網絡協議建立不同的server類型//現在支持的server類型有: HTTP,HTTPS,TCP,Interserver,mysql//以TCP版本為例:create_server("tcp_port", [&](UInt16 port){Poco::Net::ServerSocket socket;auto address = socket_bind_listen(socket, listen_host, port);servers.emplace_back(std::make_unique<Poco::Net::TCPServer>(new TCPHandlerFactory(*this),server_pool,socket,new Poco::Net::TCPServerParams));});//啟動serverfor (auto & server : servers)server->start();}

客戶端發來的請求是由各自網絡協議所對應的?Handler?來進行的,server在啟動的時候?Handler?會被初始化并綁定在指定端口中。我們以TCPHandler為例,看看服務端是如何處理客戶端發來的請求的,重點關注?TCPHandler::runImpl?的函數實現:

? 初始化輸入和輸出流的緩沖區

? 接受請求報文,拆包

? 執行Query(包括整個詞法語法分析,Query重寫,物理計劃生成和生成結果)

? 把Query結果保存到輸出流,然后發送到Socket的緩沖區,等待發送回客戶端

void TCPHandler::runImpl() {//實例化套接字對應的輸入和輸出流緩沖區in = std::make_shared<ReadBufferFromPocoSocket>(socket());out = std::make_shared<WriteBufferFromPocoSocket>(socket());while (1){// 接收請求報文receivePacket();// 執行Query state.io = executeQuery(state.query, *query_context, false, state.stage, may_have_embedded_data);//根據Query種類來處理不同的Query//處理insert QueryprocessInsertQuery();//并發處理普通QueryprocessOrdinaryQueryWithProcessors();//單線程處理普通QueryprocessOrdinaryQuery();}}

那CK處理客戶端發送過來的Query的具體邏輯是怎樣的呢?

我們可以在dbms/src/Interpreters/executeQuery.cpp?中一探究竟:

具體邏輯在?executeQueryImpl?函數中,挑選核心的邏輯進行講解:

static std::tuple<ASTPtr, BlockIO> executeQueryImpl() {//構造ParserParserQuery parser(end, settings.enable_debug_queries);ASTPtr ast;//把Query轉化為抽象語法樹ast = parseQuery(parser, begin, end, "", max_query_size);//生成interpreter實例auto interpreter = InterpreterFactory::get(ast, context, stage);// interpreter解析AST,結果是BlockIOres = interpreter->execute();//返回結果是抽象語法樹和解析后的結果組成的二元組return std::make_tuple(ast, res); }

該函數所做的事情:

? 構建Parser,把Query解析成AST(抽象語法樹)

? InterpreterFactory根據AST生成對應的Interpreter實例

? AST是由Interpreter來解析的,執行結果是一個BlockIO,BlockIO是對?BlockInputStream?和?BlockOutputStream的一個封裝。

總結:
? 服務端調用?executeQuery?來處理client發送的Query,執行后的結果保存在state這個結構體的io成員中。

每一條Query都會對應一個state結構體,記錄了這條Query的id,處理狀態,壓縮算法,Query的文本和Query所處理數據對應的IO流等元信息。

? 然后服務端調用?processOrdinaryQuery?等方法把輸出流結果封裝成異步的IO流,發送到回client。

解析請求(Parser)

CK選擇采用手寫一個遞歸下降的Parser來對SQL進行解析,生成的結果是這個SQL對應的抽象語法樹(AST),抽象語法樹由表示各個操作的節點(IAST)表示。而本節主要介紹Parser背后的核心邏輯:

詞法分析和語法分析的核心邏輯可以在parseQuery.cpp的?tryParseQuery?中一覽無余。

該函數利用lexer將掃描Query字符流,將其分割為一個個的Token, token_iterator 即一個Token流迭代器,然后parser再對Token流進行解析生成AST抽象語法樹。

ASTPtr tryParseQuery() {//Token為lexer詞法分析后的基本單位,詞法分析后生成的是Token流Tokens tokens(pos, end, max_query_size);IParser::Pos token_iterator(tokens);ASTPtr res;//Token流經過語法分析生成AST抽象語法樹bool parse_res = parser.parse(token_iterator, res, expected);return res;}

我們可以看到,語法分析的核心就在于parser執行的parse方法。parse 方法具體的實現在?ParserQuery.cpp??parseImpl?中。

bool ParserQuery::parseImpl(Pos & pos, ASTPtr & node, Expected & expected) {ParserQueryWithOutput query_with_output_p(enable_explain);ParserInsertQuery insert_p(end);ParserUseQuery use_p;ParserSetQuery set_p;ParserSystemQuery system_p;bool res = query_with_output_p.parse(pos, node, expected)|| insert_p.parse(pos, node, expected)|| use_p.parse(pos, node, expected)|| set_p.parse(pos, node, expected)|| system_p.parse(pos, node, expected);return res; }

我們可以看到,這個方法粗略地把Query分為了五種,但是本質上可以歸納為兩種(第一種為有結果輸出,對應show,select,create等語句;第二種為無結果輸出,對應insert,use,set和與系統相關的語句(如exit))

? QueryWithOutput
? InsertQuery
? UseQuery
? SetQuery
? SystemQuery

每一種Query都自定義了其專屬的Parser,所以代碼邏輯是當接收到一個Query輸入的時候,會嘗試各種Query的Parser,直到成功為止。

我們可以select語句對應的parser進行分析:

核心邏輯可以總結為:

1.先給出select語句中可能出現的關鍵詞

2.在詞法分析生成的Token流中爬取這些關鍵詞

3.如果成功爬取,則?setExpression?函數會組裝該關鍵字對應的AST節點

每一種SQL語句(如select,drop,insert,create)都有對應的AST類,并且分別包含了這些語句中特有的關鍵字。

bool ParserSelectQuery::parseImpl(Pos & pos, ASTPtr & node, Expected & expected) {//創建AST樹節點auto select_query = std::make_shared<ASTSelectQuery>();node = select_query;//select語句中會出現的關鍵詞ParserKeyword s_select("SELECT");ParserKeyword s_distinct("DISTINCT");ParserKeyword s_from("FROM");ParserKeyword s_prewhere("PREWHERE");ParserKeyword s_where("WHERE");ParserKeyword s_group_by("GROUP BY");ParserKeyword s_with("WITH");ParserKeyword s_totals("TOTALS");ParserKeyword s_having("HAVING");ParserKeyword s_order_by("ORDER BY");ParserKeyword s_limit("LIMIT");ParserKeyword s_settings("SETTINGS");ParserKeyword s_by("BY");ParserKeyword s_rollup("ROLLUP");ParserKeyword s_cube("CUBE");ParserKeyword s_top("TOP");ParserKeyword s_with_ties("WITH TIES");ParserKeyword s_offset("OFFSET");//...//依次對Token流爬取上述關鍵字ParserTablesInSelectQuery().parse(pos, tables, expected)//根據語法分析結果設置AST的Expression屬性,可以理解為如果SQL存在該關鍵字,這個關鍵字都會轉化為AST上的一個節點select_query->setExpression(ASTSelectQuery::Expression::WITH, std::move(with_expression_list));select_query->setExpression(ASTSelectQuery::Expression::SELECT, std::move(select_expression_list));select_query->setExpression(ASTSelectQuery::Expression::TABLES, std::move(tables));select_query->setExpression(ASTSelectQuery::Expression::PREWHERE, std::move(prewhere_expression));select_query->setExpression(ASTSelectQuery::Expression::WHERE, std::move(where_expression));select_query->setExpression(ASTSelectQuery::Expression::GROUP_BY, std::move(group_expression_list));select_query->setExpression(ASTSelectQuery::Expression::HAVING, std::move(having_expression));select_query->setExpression(ASTSelectQuery::Expression::ORDER_BY, std::move(order_expression_list));select_query->setExpression(ASTSelectQuery::Expression::LIMIT_BY_OFFSET, std::move(limit_by_offset));select_query->setExpression(ASTSelectQuery::Expression::LIMIT_BY_LENGTH, std::move(limit_by_length));select_query->setExpression(ASTSelectQuery::Expression::LIMIT_BY, std::move(limit_by_expression_list));select_query->setExpression(ASTSelectQuery::Expression::LIMIT_OFFSET, std::move(limit_offset));select_query->setExpression(ASTSelectQuery::Expression::LIMIT_LENGTH, std::move(limit_length));select_query->setExpression(ASTSelectQuery::Expression::SETTINGS, std::move(settings));}

整個Parser的流程圖:

執行請求(Interpreter)

解釋器(Interpreter)負責從抽象語法樹中創建查詢執行的流水線,整條流水線以?BlockInputStream?和?BlockOutputStream?進行組織。比方說"select"是基于"from"的Block輸出流來進行選擇的,選擇后的結果也會以Block輸出流的形式輸出到結果。 首先我們來看:

dbms/src/Interpreters/InterpreterFactory.cpp

每一種Query都會有對應的Interpreter,這個工廠方法就是根據AST的種類來實例化其對應的Interpreter,由其來具體執行對應AST的執行計劃:

std::unique_ptr<IInterpreter> InterpreterFactory::get(ASTPtr & query, Context & context, QueryProcessingStage::Enum stage) {//舉個例子,如果該AST是由select語句轉化過來,if (query->as<ASTSelectQuery>()){/// This is internal part of ASTSelectWithUnionQuery./// Even if there is SELECT without union, it is represented by ASTSelectWithUnionQuery with single ASTSelectQuery as a child.return std::make_unique<InterpreterSelectQuery>(query, context, SelectQueryOptions(stage));} }

我們就以?InterpreterSelectQuery?為例,了解其實例化的核心邏輯:

InterpreterSelectQuery::InterpreterSelectQuery(){//獲取ASTauto & query = getSelectQuery();//對AST做進一步語法分析,對語法樹做優化重寫syntax_analyzer_result = SyntaxAnalyzer(context, options).analyze(query_ptr, source_header.getNamesAndTypesList(), required_result_column_names, storage, NamesAndTypesList());//每一種Query都會對應一個特有的表達式分析器,用于爬取AST生成執行計劃(操作鏈)query_analyzer = std::make_unique<SelectQueryExpressionAnalyzer>(query_ptr, syntax_analyzer_result, context,NameSet(required_result_column_names.begin(), required_result_column_names.end()),options.subquery_depth, !options.only_analyze); }

語法分析直接生成的AST轉化成執行計劃可能性能上并不是最優的,因此需要SyntaxAnalyzer 對其進行優化重寫,在其源碼中可以看到其涉及到非常多?基規則優化(rule based optimization)?的trick。
SyntaxAnalyzer 會逐個針對這些規則對查詢進行檢查,確定其是否滿足轉換規則,一旦滿足就會對其進行轉換。

SyntaxAnalyzerResultPtr SyntaxAnalyzer::analyze() {// 剔除冗余列removeDuplicateColumns(result.source_columns);// 根據settings中enable_optimize_predicate_expression配置判斷是否進行謂詞下移replaceJoinedTable(node);// 根據settings中distributed_product_mode配置重寫IN 與 JOIN 表達式InJoinSubqueriesPreprocessor(context).visit(query);// 優化Query內部的布爾表達式LogicalExpressionsOptimizer().perform();// 創建一個從別名到AST節點的映射字典 QueryAliasesVisitor(query_aliases_data, log.stream()).visit(query);// 公共子表達式的消除QueryNormalizer(normalizer_data).visit(query);// 消除select從句后的冗余列removeUnneededColumnsFromSelectClause(select_query, required_result_columns, remove_duplicates);// 執行標量子查詢,并且用常量替代標量子查詢結果executeScalarSubqueries(query, context, subquery_depth);// 如果是select語句還會做下列優化:// 謂詞下移優化PredicateExpressionsOptimizer(select_query, settings, context).optimize();/// GROUP BY 從句的優化optimizeGroupBy(select_query, source_columns_set, context);/// ORDER BY 從句的冗余項剔除optimizeOrderBy(select_query);/// LIMIT BY 從句的冗余列剔除optimizeLimitBy(select_query);/// USING語句的冗余列剔除optimizeUsing(select_query);}

這里挑選幾個簡單介紹一下:
? 公共子表達式消除(Common Subexpression Elimination)
如果表達式?x op y?先前被計算過,并且從先前的計算到現在其計算表達式對應的值沒有改變,那么?x op y?就稱為公共子表達式。公共子表達式消除會搜索所有相同計算表達式的實例,并分析是否值得用保存計算值的單個變量來替換它們,以減少計算的開銷。

? 標量子查詢(Scala Subquery)的常量替換
標量子查詢就是返回單一值的子查詢,和公共子表達式消除相似,可以用常量來替換SQL中所有的標量子查詢結果以減少計算開銷。

? 謂詞下移(Predicate Pushdown)
把外層查詢塊中的WHERE子句的謂詞下移到較低層查詢塊如視圖,以盡可能把過濾數據的操作移動到靠近數據源的位置。提前進行數據過濾能夠大幅減少網絡傳輸或者內存讀取訪問的數據量,以提高查詢效率。
?query_analyzer?的作用可以理解為解析優化重寫后的AST,然后對所要進行的操作組成一條操作鏈,即物理執行計劃,如:

ExpressionActionsChain chain; analyzer.appendWhere(chain); chain.addStep(); analyzer.appendSelect(chain); analyzer.appendOrderBy(chain); chain.finalize();

上述代碼把where,select,orderby操作都加入到操作鏈中,接下來就可以從Storage層讀取Block,對Block數據應用上述操作鏈的操作。而執行的核心邏輯,就在對應Interpreter的?executeImpl?方法實現中,這里以select語句的Interpreter來了解下讀取Block數據并且對block數據進行相應操作的流程。

void InterpreterSelectQuery::executeImpl(TPipeline & pipeline, const BlockInputStreamPtr & prepared_input) {// 對應Query的ASTauto & query = getSelectQuery();AnalysisResult expressions;// 物理計劃,判斷表達式是否有where,aggregate,having,order_by,litmit_by等字段expressions = analyzeExpressions(getSelectQuery(),*query_analyzer,QueryProcessingStage::FetchColumns,options.to_stage,context,storage,true,filter_info);// 從Storage讀取數據executeFetchColumns(from_stage, pipeline, sorting_info, expressions.prewhere_info, expressions.columns_to_remove_after_prewhere);// eg:根據SQL的關鍵字在BlockStream流水線中執行相應的操作, 如where,aggregate,distinct都分別由一個函數負責執行executeWhere(pipeline, expressions.before_where, expressions.remove_where_filter);executeAggregation(pipeline, expressions.before_aggregation, aggregate_overflow_row, aggregate_final);executeDistinct(pipeline, true, expressions.selected_columns); }

既然我們知道了執行計劃AnalysisResult(即物理執行計劃),接下來就需要從storage層中讀取數據來執行對應的操作,核心邏輯在?executeFetchColumns?中: 核心操作就是從storage層讀取所要處理列的Block,并組織成BlockStream。

void InterpreterSelectQuery::executeFetchColumns(QueryProcessingStage::Enum processing_stage, TPipeline & pipeline,const SortingInfoPtr & sorting_info, const PrewhereInfoPtr & prewhere_info, const Names & columns_to_remove_after_prewhere) { // 實例化Block Streamauto streams = storage->read(required_columns, query_info, context, processing_stage, max_block_size, max_streams)// 讀取列對應的Block,并且組織成Block Streamstreams = {std::make_shared<NullBlockInputStream>(storage->getSampleBlockForColumns(required_columns))};streams.back() = std::make_shared<ExpressionBlockInputStream>(streams.back(), query_info.prewhere_info->remove_columns_actions); }

讀取完Block Stream之后就是對其執行各種execute操作如?executeAggregation , executeWhere?操作,詳見?InterpreterSelectQuery::executeImpl?的代碼。

因此Interpreter的處理過程可以總結為:

? 對AST進行優化重寫
? 解析重寫后的AST并生成操作鏈(執行計劃)
? 從存儲引擎中讀取要處理的Block數據
? 對讀取的Block數據應用操作鏈上的操作

那我們讀取Block Stream并進行處理后,生成的結果如何寫回到storage層呢? 我們這里以insert語句的Interpreter來了解下:

BlockIO InterpreterInsertQuery::execute() {// table為存儲引擎接口StoragePtr table = getTable(query);BlockOutputStreamPtr out;// 從存儲引擎讀取Block Streamauto query_sample_block = getSampleBlock(query, table);out = std::make_shared<AddingDefaultBlockOutputStream>(out, query_sample_block, out->getHeader(), table->getColumns().getDefaults(), context);//執行結果封裝成BlockIOBlockIO res;res.out = std::move(out); }

上面代碼中的StoragePtr實際上就是IStorage這個存儲引擎的接口

using StoragePtr = std::shared_ptr<IStorage>;

無論是寫入還是讀取操作都是依靠底層存儲引擎(如MergeTree)的write和read接口來實現的,關于存儲引擎的細節實現這里暫時不贅述,這里我們只需要知道我們從存儲引擎接口中以流方式讀取Block數據,而結果組織成BlockIO流輸出。Interpreter的流程總結如下:

返回請求結果

TCPHandler::runImpl?中,執行完?executeQuery?之后需要調用各種processQuery的方法來給client返回執行SQL后的結果。
我們以?TCPHandler::processOrdinaryQuery?為例做簡單分析:

void TCPHandler::processOrdinaryQuery() {//把BlockStream封裝成異步的Stream,那么從流中讀取數據將會是異步操作AsynchronousBlockInputStream async_in(state.io.in);while(true){Block block;//從IO流讀取block數據block = async_in.read();//發送block數據sendData(block);} }

Server負責在?sendData?函數中把輸出結果寫入到套接字輸出緩沖區中,client只要從這個輸出緩沖區讀取就能夠得到結果。

void TCPHandler::sendData(const Block & block) {//初始化OutputStream的參數initBlockOutput(block);// 調用BlockOutputStream的write函數,把Block寫到輸出流state.block_out->write(block);state.maybe_compressed_out->next();out->next(); }

結語

了解ClickHouse背后SQL的查詢整個流程,不僅能讓數據庫使用者更清晰地認識到如何編寫最優化的SQL,也能夠讓數據庫內核開發者加深對數據庫體系結構的理解,提高開發效率。本文并沒有涉及到太深入的技術細節,諸如向量化執行引擎,SIMD,基于llvm的動態代碼生成,類MergeTree存儲引擎等CK的技術細節也沒有提及,只是從宏觀角度給讀者介紹了執行SQL背后內核到底發生了什么。后續我們會推出更多內核源碼解讀文章,敬請關注。

寫在最后

阿里云已經率先推出了ClickHouse的云托管產品,產品首頁地址:云數據庫ClickHouse,目前正在免費公測中,歡迎大家點擊鏈接申請免費試用。

?

原文鏈接
本文為阿里云原創內容,未經允許不得轉載。

總結

以上是生活随笔為你收集整理的ClickHouse 源码阅读 —— SQL的前世今生的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

九九电影在线 | 99亚洲精品| 日韩中文字幕视频在线 | 亚洲视频免费视频 | 99久久久成人国产精品 | 国内精品视频一区二区三区八戒 | 国产精品免费久久久 | 精品国产伦一区二区三区观看体验 | 免费成视频 | 欧美乱熟臀69xxxxxx | 91视频一8mav | 91天天视频 | 亚洲精品videossex少妇 | 亚洲综合国产精品 | 国产麻豆精品一区 | 欧美久久久久久久久中文字幕 | 欧美另类重口 | 狠狠色丁香久久婷婷综合丁香 | 四虎www com| 色婷婷中文 | 久久精品综合一区 | 久久精品国产亚洲aⅴ | 特级毛片网 | 黄色小视频在线观看免费 | av在线播放快速免费阴 | 国产在线资源 | av片在线看 | 国产成人精品国内自产拍免费看 | 国产精品资源网 | 97超碰人人看| 久久精品99久久 | 天天天综合 | 久久人人精 | 91精品国产91久久久久久三级 | 91在线免费视频 | 久久国产精品成人免费浪潮 | 2019中文最近的2019中文在线 | 天天摸日日摸人人看 | 亚洲精品毛片一级91精品 | 免费无遮挡动漫网站 | 亚洲欧美视频网站 | 国产成人一区二区三区影院在线 | 91爱爱免费观看 | 91精品国产综合久久福利 | 国产成人综合图片 | 人人爽人人爽人人 | 国产精品综合久久久久久 | 婷婷综合久久 | 成人在线黄色 | 欧美永久视频 | 狠狠激情中文字幕 | 中文字幕精品一区二区三区电影 | 丁香花在线视频观看免费 | 日韩丝袜| 天天天天天天操 | 插插插色综合 | 欧美日韩高清一区 | 精品福利片| 激情开心色 | 久久久精品免费看 | 日韩电影中文字幕 | 欧美性生活久久 | 密桃av在线| www久草 | 天堂av最新网址 | 狠狠干 狠狠操 | 免费av高清 | 成人午夜剧场在线观看 | 国产欧美最新羞羞视频在线观看 | 国产手机视频在线观看 | 蜜臀久久99精品久久久无需会员 | 国产麻豆视频网站 | 日韩激情影院 | 中文字幕免费高清 | 久久99精品国产99久久6尤 | 五月婷丁香网 | 亚洲精品理论片 | 国产一级视频 | 97电影网站 | 在线观看视频色 | 久久久96| 色噜噜狠狠狠狠色综合 | 国产精品一区二区你懂的 | 久久久久亚洲精品男人的天堂 | 国产亚洲一区二区在线观看 | 91你懂的 | 一区中文字幕在线观看 | 欧美一区二区视频97 | 99免费看片 | 成人在线视频观看 | 色五丁香 | 久久午夜国产精品 | 亚洲成a人片在线www | 日韩手机在线观看 | 欧美aaaxxxx做受视频 | 国产在线一区观看 | 97色在线观看 | 欧美精品久久久久久久久老牛影院 | 国产成人精品一区二区三区网站观看 | 欧美激情综合色综合啪啪五月 | 91免费高清观看 | 欧美一区二区在线免费观看 | 久久av在线 | 99色资源 | 久久躁日日躁aaaaxxxx | 欧美在线观看视频免费 | 91av久久| 精品久久久久久国产 | 亚洲精品天天 | 视频1区2区 | 成人午夜网 | 国产精品一区二区精品视频免费看 | 中文字幕av一区二区三区四区 | 久久伦理| 日本中文字幕在线电影 | www.天天成人国产电影 | 久草在线 | 亚洲精品中文字幕在线观看 | 麻豆一区二区三区视频 | 在线看成人片 | 亚洲婷婷综合色高清在线 | 久久国际影院 | 狠狠色噜噜狠狠狠 | 91尤物国产尤物福利在线播放 | 五月婷婷中文网 | 香蕉在线观看视频 | 午夜视频播放 | 久久久久久看片 | 99视频+国产日韩欧美 | 亚洲精品免费在线播放 | 黄色免费网站 | 日本一区二区高清不卡 | 干综合网| 免费成人av电影 | 日本中文字幕在线看 | 亚洲狠狠婷婷综合久久久 | 久久色在线播放 | 国产a级精品| 婷婷在线五月 | 日本久久久久久科技有限公司 | 狠狠操在线 | 欧美精品你懂的 | 97超视频在线观看 | 国产高清精品在线观看 | 国产高清在线视频 | 色视频网站在线 | 国产精品美女免费看 | 国产91小视频 | 色欧美日韩 | av天天在线观看 | 日韩免费一级电影 | 91免费国产在线观看 | www.黄色网.com | 亚洲动漫在线观看 | 在线小视频你懂得 | 五月天激情综合网 | 国产精品18久久久久白浆 | 久久亚洲国产精品 | 高清中文字幕 | 欧美精品国产精品 | 国产精品男女 | 国内外成人在线视频 | 亚洲精品国产拍在线 | 操操操av| 在线视频免费观看 | 视频精品一区二区三区 | 高清不卡毛片 | 国产视频精品免费播放 | 99热手机在线观看 | 99久久精品国产亚洲 | 99热精品国产一区二区在线观看 | 丁香五月亚洲综合在线 | 久久福利综合 | 欧美另类成人 | 超碰在线最新网址 | 日本久久电影网 | 92精品国产成人观看免费 | 国产日韩视频在线 | 99视频网址 | 国产玖玖精品视频 | 亚洲 av网站 | 在线之家免费在线观看电影 | 伊人六月| 国产精品精| 午夜av在线 | 久久av中文字幕片 | 中文字幕韩在线第一页 | 久久人人看 | 色婷婷视频 | 91麻豆国产| 97免费公开视频 | 国产亚洲精品久久久久久网站 | av网站有哪些 | 人人插人人射 | 97精品国产一二三产区 | 黄色毛片观看 | 视频在线观看99 | 久草视频首页 | 91干干干| 九九av | 免费看日韩 | 91精品国产自产在线观看永久 | 高潮久久久 | 开心激情网五月天 | 午夜视频一区二区 | 日韩免费电影一区二区 | www.亚洲精品视频 | www.香蕉视频 | 国产黄大片 | 国产日韩欧美网站 | 91在线中文字幕 | 在线观看视频中文字幕 | 色视频在线免费 | 久久成人精品电影 | 久久久久免费精品国产 | 亚洲精品日韩在线观看 | 中文字幕在线观看2018 | 六月激情丁香 | 欧美91精品久久久久国产性生爱 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 中文字幕国产一区二区 | 美女黄网站视频免费 | av在线播放亚洲 | 成人在线免费视频 | 99九九热只有国产精品 | 成人资源在线观看 | 亚洲成年人免费网站 | av在线8| 欧美色噜噜噜 | 91高清免费观看 | 玖玖爱国产在线 | 九九九毛片 | 国产人成精品一区二区三 | 99热99| 久久无码av一区二区三区电影网 | 久久久人人爽 | 国产精品99久久久久久武松影视 | 久久国产乱 | 欧美aaa级片| 精品九九九 | 免费99精品国产自在在线 | 色网站中文字幕 | 99这里只有 | 中文字幕亚洲欧美日韩 | 国产成年免费视频 | 亚洲国产影院av久久久久 | 国产人成看黄久久久久久久久 | 97超碰中文字幕 | 中文字幕一区二区三区四区视频 | 在线免费观看黄色av | 99高清视频有精品视频 | 九九九国产 | 亚洲综合欧美日韩狠狠色 | 亚洲欧美日韩精品久久奇米一区 | 欧美激情在线看 | 91色欧美| 手机成人av | 蜜桃视频在线视频 | 国产精品theporn | 久久高清免费观看 | 国产精品日韩欧美一区二区 | 国产欧美日韩视频 | 亚洲精品高清在线观看 | 成人亚洲精品久久久久 | 久草网站 | 综合激情婷婷 | 欧美日韩国产伦理 | 欧美热久久 | 中文字幕免费观看全部电影 | 中文字幕av免费在线观看 | 91亚洲国产 | 国产在线不卡 | 18久久久 | 亚洲精品乱码 | 成人免费在线观看电影 | 久久久精品国产一区二区三区 | 激情五月网站 | 亚洲高清视频在线观看免费 | 欧美va天堂va视频va在线 | 国产理论一区二区三区 | 日韩精品在线免费播放 | 91精品国产三级a在线观看 | 亚洲国产欧美一区二区三区丁香婷 | 二区三区毛片 | 九九视频精品免费 | 日韩av在线资源 | 国产精品系列在线播放 | 色婷婷啪啪免费在线电影观看 | 日本久久久久久 | 亚洲激情视频 | 亚洲区精品视频 | 天天插天天操天天干 | 国产护士hd高朝护士1 | 天天射天天射天天射 | 一区二区三区中文字幕在线 | 国产成人一级 | 国产资源中文字幕 | 亚洲精品午夜一区人人爽 | 日韩精品一区二区三区在线视频 | 五月天六月婷婷 | 黄色av免费在线 | 99精品久久久久久久 | 欧美大片在线观看一区 | 手机在线看a | 精品国产乱码久久久久久久 | 国产一级电影在线 | 久久久久国产成人免费精品免费 | 五月天久久狠狠 | 久久久久久网站 | 久久少妇免费视频 | av高清免费 | 青青河边草免费直播 | av在线成人 | 9999在线| 国产午夜精品久久 | 婷婷深爱五月 | 九九涩涩av台湾日本热热 | 成人免费视频免费观看 | 国产小视频在线免费观看 | 国产自偷自拍 | 国产成人精品午夜在线播放 | 鲁一鲁影院 | 伊人狠狠色 | 奇米影视777影音先锋 | 亚洲女人天堂成人av在线 | 日韩精品2区| 91视频91自拍 | 天天草夜夜 | 久久伊人八月婷婷综合激情 | 香蕉久草 | 日韩欧美大片免费观看 | 免费一级特黄录像 | 五月综合激情婷婷 | 国产精品高清在线观看 | 91夫妻视频 | 中文字幕在线影院 | 日韩国产欧美在线播放 | 成人精品电影 | 久久免费国产电影 | 亚洲午夜精品一区二区三区电影院 | 丁香综合av | 一级黄色大片 | 97视频免费在线观看 | 91网页版免费观看 | 91视频 - 114av| 欧美老少交 | 成片视频在线观看 | 免费亚洲精品视频 | 欧美国产日韩在线观看 | 狠狠操天天射 | 国产精品普通话 | 激情婷婷综合网 | 亚洲国产丝袜在线观看 | 香蕉97视频观看在线观看 | 天天爱天天操天天射 | 亚洲一区二区三区四区精品 | 伊人电影在线观看 | 日日爽天天爽 | av在线播放观看 | 一区二区视频免费在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 久久精品国产免费看久久精品 | 国产美女在线精品免费观看 | 国产成人久久av977小说 | 久久久精品99 | 91在线porny国产在线看 | 97精品国产91久久久久久久 | 婷婷在线网站 | 麻豆视频国产在线观看 | 国产亚州精品视频 | 国产精品女教师 | 亚洲精品乱码久久久久久蜜桃不爽 | 色偷偷男人的天堂av | 极品美女被弄高潮视频网站 | 久久精品国产亚洲精品 | 国产又黄又爽又猛视频日本 | 人人超在线公开视频 | 国产伦精品一区二区三区无广告 | 成人高清av在线 | www.久久成人 | 久久久久久久久亚洲精品 | 国产亚洲成av人片在线观看桃 | 亚洲成人一二三 | 一本一本久久a久久精品综合 | 国产精品麻豆视频 | 日韩在线不卡 | 在线黄色av电影 | 欧美成人黄色片 | 久草91视频 | 开心激情五月网 | 国产精品久久久久久久久大全 | 96视频在线 | av在线小说 | 精品视频亚洲 | 深爱五月激情网 | 日韩精品一区二区三区三炮视频 | 天堂网在线视频 | 麻豆首页 | 人人舔人人插 | 中文字幕免费高清在线 | 一级成人免费 | 久久av网址 | 国产视频在线播放 | 日韩免费一区二区三区 | 91在线区 | 久草精品视频在线观看 | 日女人免费视频 | 国产视频欧美视频 | 欧美一区日韩精品 | 国产精品自产拍 | 国产一在线精品一区在线观看 | 亚洲高清91 | 中文字幕在线日 | 波多野结衣久久精品 | 不卡电影一区二区三区 | 天堂网一区二区三区 | 亚洲国产精品一区二区久久,亚洲午夜 | 91亚州| 国产亚洲精品久久久网站好莱 | 久久精品人人做人人综合老师 | 99热高清 | 国产精品欧美在线 | 国产精品精品久久久久久 | 久久精品香蕉视频 | 欧美性成人 | 亚洲综合色网站 | 欧美亚洲成人xxx | 亚洲精品视频一二三 | 99精品在线观看 | 久久精品一区 | 激情综合网五月激情 | av网站在线观看免费 | 国产福利在线免费 | 91精品成人| 亚洲欧美视频 | 中文字幕第一页在线 | 五月婷婷播播 | 精品亚洲免费视频 | 在线观看亚洲专区 | 天天爱天天草 | 久久精品99国产精品亚洲最刺激 | 免费精品视频 | 成人动漫视频在线 | 三上悠亚一区二区在线观看 | 激情综合五月天 | 久久久久欧美精品999 | 久久国产亚洲精品 | av片在线看| 免费看搞黄视频网站 | 久草在线最新免费 | 亚洲六月丁香色婷婷综合久久 | 欧美日韩精品在线播放 | 亚洲一级特黄 | 欧美日产一区 | 久久久精品99 | 欧美激情视频在线观看免费 | 国产精品一区二区三区在线播放 | 久久精品草 | 久久精品亚洲综合专区 | 日韩精品亚洲专区在线观看 | 在线免费精品视频 | 97免费公开视频 | 激情五月婷婷综合 | av资源在线观看 | 久久久久久久久影院 | 日本精品视频在线观看 | 日韩夜夜爽 | 黄色小网站免费看 | 一级片免费观看 | 91av资源网| 九九热在线视频免费观看 | 天天操人| 亚洲高清视频在线 | 日韩精品一区二区三区三炮视频 | 日本公妇色中文字幕 | 国际精品久久 | 97超碰人人网 | 国产精品video爽爽爽爽 | 日韩欧美一区视频 | 国产精品观看在线亚洲人成网 | 国产精品视频你懂的 | 五月婷婷综合在线 | 中文字幕一区二 | 国产视频黄 | 懂色av一区二区在线播放 | 欧美亚洲精品一区 | 91精品少妇偷拍99 | 碰天天操天天 | 欧美成人精品三级在线观看播放 | 欧洲激情综合 | 亚洲综合色丁香婷婷六月图片 | 亚洲国产精品成人精品 | 久草99 | 丝袜精品视频 | 成人黄色在线观看视频 | 91激情小视频 | 福利片视频区 | 99视频久久 | 三级在线播放视频 | 狠狠色丁香久久婷婷综合五月 | 免费看av片网站 | 久草热久草视频 | 亚洲国产日韩在线 | 久草久热 | 国产91精品久久久久久 | 热99在线视频 | 福利片视频区 | 日韩黄色软件 | 国语久久| 日日夜夜免费精品视频 | 国产成人精品一区二区在线观看 | 欧美精品久久久久久 | 高清免费在线视频 | 天天插天天干天天操 | 亚洲黄色成人网 | 91精品啪在线观看国产 | 干天天| 免费人成在线观看网站 | 97人人澡人人添人人爽超碰 | 国产美女在线精品免费观看 | 欧美日韩亚洲在线 | 中文字幕在线观看视频一区二区三区 | 99久久精品免费 | 2024国产精品视频 | 91香蕉视频色版 | 91香蕉视频在线下载 | 亚洲欧美色婷婷 | 国产精品99久久久久久久久久久久 | 欧美另类tv | 97超在线 | 午夜黄网 | 欧美日本在线视频 | 高清在线一区 | 综合久久影院 | 欧美精品久久久久久久亚洲调教 | 国产免费又粗又猛又爽 | 日韩精品一区二区三区在线播放 | 在线观看韩国av | 性色av一区二区三区在线观看 | 成人国产网址 | 亚洲精品国产精品国自产观看浪潮 | 最近日本韩国中文字幕 | 国产黄色大片免费看 | 97国产精品久久 | 国产精品网红直播 | 国产精品青草综合久久久久99 | 免费视频三区 | 人人爽爽人人 | 欧美久久久久久久 | 欧美日韩国产精品久久 | 欧美一级片免费在线观看 | 中文字幕免费成人 | 国产在线精品观看 | 国产免费嫩草影院 | 永久黄网站色视频免费观看w | 亚洲国产三级在线 | 狠狠综合久久av | 欧美一区二区三区在线播放 | 亚洲 欧洲 国产 日本 综合 | 中文字幕中文字幕在线中文字幕三区 | 99热只有精品在线观看 | 欧美另类巨大 | 看国产黄色片 | 欧美日韩一区二区在线观看 | 一区二区视频免费在线观看 | 99精品国产99久久久久久97 | 国产a网站 | 一区二区三区免费播放 | 91精品国产91p65 | 黄色日视频 | 在线观看91网站 | 欧美日韩亚洲在线 | 超级碰碰碰视频 | 91av网址| www最近高清中文国语在线观看 | 久久精品国产精品亚洲 | 久久久综合| 欧美成人视| 丁香网五月天 | 日韩,精品电影 | 国产成人免费高清 | 在线观看aaa | 91看成人| 成年人在线观看免费视频 | 97人人超碰在线 | 黄色毛片电影 | 国产色视频网站2 | 激情五月婷婷丁香 | 欧美精品少妇xxxxx喷水 | 天天爱天天操天天爽 | 丰满少妇在线观看 | 亚洲成人av片在线观看 | 国产福利免费在线观看 | 又爽又黄又无遮挡网站动态图 | 午夜精品一区二区三区在线视频 | 亚洲精品免费在线 | 婷婷色在线观看 | www.久久色| 国产中文在线观看 | 四虎国产精品成人免费4hu | 午夜精品视频福利 | 天天干夜夜干 | 97av视频在线| 欧美日韩不卡一区二区三区 | 在线黄色av电影 | 久久精品这里热有精品 | 精品一区二区三区久久 | 日韩影视精品 | 日韩午夜大片 | 婷婷激情五月 | 中文字幕在线一区观看 | 狠狠色丁婷婷日日 | 日韩精品免费在线观看 | 久久精品99国产精品 | 久草免费在线观看视频 | 免费99视频 | 日韩理论电影在线观看 | 不卡的av电影在线观看 | 最近中文字幕高清字幕免费mv | 可以免费观看的av片 | 热久久免费视频精品 | 99久久婷婷国产综合精品 | 黄网站免费久久 | 色综合婷婷久久 | 天天干天天做 | 热久久精品在线 | 国产va精品免费观看 | 操操碰| 成人午夜黄色影院 | 天天干天天玩天天操 | 日韩激情片在线观看 | 香蕉网址 | 久久精品一二三区白丝高潮 | 在线涩涩 | 久久福利小视频 | 91av官网| 久久亚洲视频 | 懂色av懂色av粉嫩av分享吧 | 精品国产欧美一区二区三区不卡 | 成年人免费看片 | 激情久久久 | 毛片黄色一级 | 久久午夜电影院 | 一级全黄毛片 | 黄色软件视频大全免费下载 | 国产第一页在线观看 | 日韩在线在线 | 婷婷色综合网 | 免费在线观看日韩 | 久久人人爽人人爽人人 | 精品在线播放视频 | 国产成人精品在线观看 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 91探花在线视频 | 国产一区自拍视频 | 精品免费一区 | 亚洲国产午夜精品 | 五月天天天操 | 日日精品 | 中文字幕色婷婷在线视频 | 国产精品免费视频一区二区 | 久久综合中文字幕 | 国产精品久久精品 | 精品国产乱码久久久久久久 | 丁香视频全集免费观看 | 欧美精品免费视频 | 国产美女视频免费观看的网站 | 婷婷在线播放 | 日韩在线视频免费播放 | 日韩中文字幕电影 | 国产精品美女久久久久久网站 | 精品福利视频在线 | 日韩视频一区二区在线观看 | av九九| 人人插人人射 | 国产精品中文在线 | 欧美精品在线一区二区 | 成人一区二区三区在线 | 久久久久女教师免费一区 | 插婷婷| 国产精品刺激对白麻豆99 | 免费成人在线观看 | 亚洲精品动漫成人3d无尽在线 | 欧美一区中文字幕 | 在线免费视频 你懂得 | av一区在线播放 | 久久久伦理 | 国产精品黄色在线观看 | 国内精品毛片 | 日韩欧美在线观看一区二区三区 | 91在线在线观看 | 精品专区一区二区 | 久久久国产精品成人免费 | 久久精品日本啪啪涩涩 | 亚洲欧洲精品一区二区精品久久久 | 992tv人人网tv亚洲精品 | 亚洲三级精品 | 日韩精品短视频 | 欧美成人日韩 | 婷婷久久综合网 | 久久久久久国产精品久久 | 黄av免费 | 九九热精品在线 | 欧美做受高潮1 | 亚洲综合视频在线 | 91在线播放视频 | 在线观看免费黄色 | 婷婷激情网站 | 91成人在线视频观看 | 五月天婷婷丁香花 | 国产成人av免费在线观看 | 欧美黑人xxxx猛性大交 | 欧美va天堂va视频va在线 | 国产综合福利在线 | 日韩精品电影在线播放 | 免费视频成人 | 91成人免费在线视频 | 亚洲伦理电影在线 | 欧美色图东方 | 亚洲天天| 99精品欧美一区二区三区 | 久久人人爽人人爽人人片av软件 | 日韩视频一区二区三区 | 干干操操 | 日日干网| 亚洲精品午夜久久久久久久 | 中文字幕三区 | 中文字幕美女免费在线 | 国内精品视频一区二区三区八戒 | 亚洲经典在线 | 亚洲国产无 | 久久婷婷亚洲 | 亚洲精品一区二区网址 | 能在线看的av | 久久激情小说 | 欧美激情奇米色 | 免费又黄又爽视频 | 我爱av激情网 | 日韩久久精品一区二区 | 精品久久久久久电影 | 欧美视频日韩视频 | 77国产精品 | 91麻豆国产福利在线观看 | 日韩特黄一级欧美毛片特黄 | av一区二区三区在线观看 | 国产一区二区观看 | 亚洲精品国产麻豆 | 久久黄色小说 | 人人添人人澡人人澡人人人爽 | www.色午夜| 日本韩国精品在线 | 久久国产片 | 欧美天天射 | 国产精品视频免费 | 一区 二区电影免费在线观看 | 中文字幕电影在线 | 久久黄色免费 | 天天天射| 国产美女主播精品一区二区三区 | 911香蕉 | 日本中文字幕网 | 亚洲国产午夜精品 | 欧美精品亚洲精品 | 国产日产欧美在线观看 | 日韩精品久久久久 | 黄色国产精品 | 久久另类小说 | 一级国产视频 | 久久国产精品一二三区 | 99热在| 亚洲精品国偷拍自产在线观看蜜桃 | 性色视频在线 | 91九色老 | 免费99精品国产自在在线 | 国产极品尤物在线 | 色网站视频 | 一区二区在线影院 | 亚洲六月丁香色婷婷综合久久 | 日韩精品久久中文字幕 | 久久久999| 视频在线观看亚洲 | 国产一级二级在线 | 国产二区免费视频 | 国产美女视频免费观看的网站 | 久久精品视频免费播放 | 成人在线观看资源 | av资源网在线播放 | 日韩区欠美精品av视频 | av成人黄色| 天天操狠狠干 | 麻豆手机在线 | 亚洲视频一区二区三区在线观看 | 午夜av大片 | 午夜三级大片 | 黄色激情网址 | 亚洲电影一区二区 | 日韩伦理一区二区三区av在线 | 免费网站黄 | 亚洲成人动漫在线观看 | 久久国产片 | 免费色视频 | 国产中文字幕视频在线 | 国产精品黑丝在线观看 | 午夜视频播放 | 人人爽人人爽av | 狠狠色丁香婷婷综合最新地址 | 欧美在线91 | 欧美一级片在线免费观看 | 五月婷婷在线观看 | 欧美日韩视频在线 | 亚洲 成人 欧美 | 天天做天天爱天天综合网 | 国产伦精品一区二区三区无广告 | 亚洲高清激情 | 中文字幕精品一区二区精品 | 又黄又爽又湿又无遮挡的在线视频 | 亚洲欧美视屏 | 17videosex性欧美| 成年人视频在线观看免费 | 国内精品小视频 | 激情久久一区二区三区 | 一区二区三区在线免费播放 | 狠狠干激情 | 久草com | 91尤物国产尤物福利在线播放 | 免费观看成年人视频 | 免费av网址在线观看 | 91夫妻视频| 久久久伦理 | 国产精品不卡视频 | 国产一区二区免费看 | 亚洲精品高清一区二区三区四区 | 国产日韩欧美在线播放 | 五月天婷亚洲天综合网精品偷 | 五月宗合网 | 亚洲片在线资源 | 日日综合网| 四虎影视av | 国产精品丝袜久久久久久久不卡 | 免费色视频 | 精选久久| 国产精品成人在线 | www.亚洲精品在线 | 美女国产网站 | 五月婷婷欧美视频 | 黄色资源在线观看 | 在线免费看黄色 | 丁香婷五月 | 播五月综合 | 国产精品亚州 | 亚洲欧美国产精品 | 欧美一级电影片 | 一区二区三区精品在线 | 96视频免费在线观看 | 精品国产区在线 | 久久www免费视频 | 91精品在线视频观看 | 国产麻豆视频网站 | 中文字幕在线观看网 | 国产小视频免费在线网址 | 久久天天躁夜夜躁狠狠85麻豆 | 99精品在线看 | 日韩高清免费无专码区 | 五月婷婷av在线 | 国产一区在线观看视频 | 欧美日韩另类在线 | 久久久久一区二区三区四区 | 久久综合久久综合这里只有精品 | 最近中文字幕免费视频 | 91av在| 2021国产精品 | www久久国产 | 久久精品人人做人人综合老师 | 久久精品人人做人人综合老师 | 国产午夜在线 | 黄色软件网站在线观看 | 成人激情开心网 | 在线成人中文字幕 | 中文字幕区 | 国产精品久久久久久久久搜平片 | 天天色天天艹 | a黄色 | 丁香激情婷婷 | 免费观看久久久 | 中文字幕在线看视频国产中文版 | 日本最新一区二区三区 | 国产黄色高清 | 久久综合毛片 | 91在线观看视频网站 | 亚洲永久精品在线 | 日韩欧美一区二区三区在线 | 国产免费视频在线 | 黄色成品视频 | 91一区在线观看 | 欧美精品久久久久久 | 国产黄在线 | 国产精品久久久久久久久久不蜜月 | 在线免费观看国产黄色 | 日本韩国精品在线 | 91av在线电影 | 国产又黄又爽无遮挡 | 中文字幕在线影院 | 国产精品18久久久久久首页狼 | 亚洲国产欧美在线人成大黄瓜 | 99精品国产免费久久久久久下载 | 色婷五月 | 精品久久久久一区二区国产 | 国产精品门事件 | 9在线观看免费高清完整版 玖玖爱免费视频 | 亚洲丁香久久久 | 久久久久国产精品免费免费搜索 | 欧美日韩国产精品爽爽 | 久久国产精品视频免费看 | 91视频成人免费 | 一区二区三区在线观看免费 | 色综合天天天天做夜夜夜夜做 | 国产高清在线免费视频 | 日日夜夜艹 | av电影在线观看完整版一区二区 | 欧美日韩免费观看一区=区三区 | 五月激情天 | 日韩理论片在线 | 婷婷视频在线观看 | 九九热在线观看视频 | 激情网站五月天 | 青青射| 国产一区二区在线免费播放 | 国产精品久久久久久久婷婷 | 91亚洲夫妻 | 一区二区三区 中文字幕 | 伊人狠狠 | 91久久丝袜国产露脸动漫 | 91激情视频在线观看 | 国内精品久久久久影院日本资源 | 久久免费视频1 | 在线免费观看亚洲视频 | 天天舔夜夜操 | 国产午夜亚洲精品 | 99精品国产在热久久 | 亚洲男人天堂2018 | 国产免费不卡 | 天天操天天谢 | 免费在线观看黄 | 精品国产大片 | 在线观看韩日电影免费 | 亚洲欧洲国产日韩精品 | 免费一级片久久 | 97成人超碰 | 黄色国产大片 | 久久一区二区三区四区 | 女人18精品一区二区三区 | 黄色a视频 | 中文字幕在线一区二区三区 | 黄色免费大全 | 欧美怡红院视频 | 97香蕉超级碰碰久久免费软件 | 天天操天天干天天爱 | 日本精品中文字幕 | 国产一区二区三区免费在线 | 91精品天码美女少妇 | 国产成人精品网站 | 999毛片| 国产高清视频 | 久久久久久久久久久网 | 国产看片 色 | 欧美一级电影 | 亚洲www天堂com | 精品视频国产 | 久章操 | 黄色av一区二区三区 | 久久一区精品 | 一区电影 | 99久久精品免费看国产免费软件 | 7799av | 欧美999| 丰满少妇在线 | 亚洲女欲精品久久久久久久18 | 国产精品麻豆99久久久久久 | 在线观看av黄色 | 免费色视频网站 | 久久久久久久久爱 | 精品久久久久久久久久久久久久久久久久 | 97在线影视 | 91精品国产92久久久久 | 九九视频精品在线 | 久热色超碰| 女人18片| 成人综合日日夜夜 | 91精品人成在线观看 | 欧美一级电影片 | 狠狠的操| 久草视频网 | 五月婷婷电影网 | av免费观看网站 | 国产精品毛片一区视频播不卡 | 亚洲性视频| 亚洲人成免费网站 | 国产一区二区在线免费视频 |