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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark MLlib: Decision Tree源码分析

發布時間:2024/1/17 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark MLlib: Decision Tree源码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://spark.apache.org/docs/latest/mllib-decision-tree.html

以決策樹作為開始,因為簡單,而且也比較容易用到,當前的boosting或random forest也是常以其為基礎的

決策樹算法本身參考之前的blog,其實就是貪婪算法,每次切分使得數據變得最為有序

?

那么如何來定義有序或無序?

無序node impurity?

對于分類問題,我們可以用熵entropy或Gini來表示信息的無序程度?
對于回歸問題,我們用方差Variance來表示無序程度,方差越大,說明數據間差異越大

information gain

用于表示,由父節點劃分后得到子節點,所帶來的impurity的下降,即有序性的增益

?

MLib決策樹的例子

下面直接看個regression的例子,分類的case,差不多,

import org.apache.spark.mllib.tree.DecisionTree import org.apache.spark.mllib.util.MLUtils// Load and parse the data file. // Cache the data since we will use it again to compute training error. val data = MLUtils.loadLibSVMFile(sc, "data/mllib/sample_libsvm_data.txt").cache()// Train a DecisionTree model. // Empty categoricalFeaturesInfo indicates all features are continuous. val categoricalFeaturesInfo = Map[Int, Int]() val impurity = "variance" val maxDepth = 5 val maxBins = 100val model = DecisionTree.trainRegressor(data, categoricalFeaturesInfo, impurity,maxDepth, maxBins)// Evaluate model on training instances and compute training error val labelsAndPredictions = data.map { point =>val prediction = model.predict(point.features)(point.label, prediction) } val trainMSE = labelsAndPredictions.map{ case(v, p) => math.pow((v - p), 2)}.mean() println("Training Mean Squared Error = " + trainMSE) println("Learned regression tree model:\n" + model)

還是比較簡單的,

由于是回歸,所以impurity的定義為variance?
maxDepth,最大樹深,設為5?
maxBins,最大的劃分數?
先理解什么是bin,決策樹的算法就是對feature的取值不斷的進行劃分?
對于離散的feature,比較簡單,如果有m個值,最多?個劃分,如果值是有序的,那么就最多m-1個劃分?
比如年齡feature,有老,中,少3個值,如果無序有個,即3種劃分,老|中,少;老,中|少;老,少|中?
但如果是有序的,即按老,中,少的序,那么只有m-1個,即2種劃分,老|中,少;老,中|少

對于連續的feature,其實就是進行范圍劃分,而劃分的點就是split,劃分出的區間就是bin?
對于連續feature,理論上劃分點是無數的,但是出于效率我們總要選取合適的劃分點?
有個比較常用的方法是取出訓練集中該feature出現過的值作為劃分點,?
但對于分布式數據,取出所有的值進行排序也比較費資源,所以可以采取sample的方式

?

源碼分析

首先調用,DecisionTree.trainRegressor,類似調用靜態函數(object DecisionTree)

org.apache.spark.mllib.tree.DecisionTree.scala

/*** Method to train a decision tree model for regression.** @param input Training dataset: RDD of [[org.apache.spark.mllib.regression.LabeledPoint]].* Labels are real numbers.* @param categoricalFeaturesInfo Map storing arity of categorical features.* E.g., an entry (n -> k) indicates that feature n is categorical* with k categories indexed from 0: {0, 1, ..., k-1}.* @param impurity Criterion used for information gain calculation.* Supported values: "variance".* @param maxDepth Maximum depth of the tree.* E.g., depth 0 means 1 leaf node; depth 1 means 1 internal node + 2 leaf nodes.* (suggested value: 5)* @param maxBins maximum number of bins used for splitting features* (suggested value: 32)* @return DecisionTreeModel that can be used for prediction*/def trainRegressor(input: RDD[LabeledPoint],categoricalFeaturesInfo: Map[Int, Int],impurity: String,maxDepth: Int,maxBins: Int): DecisionTreeModel = {val impurityType = Impurities.fromString(impurity)train(input, Regression, impurityType, maxDepth, 0, maxBins, Sort, categoricalFeaturesInfo)}

調用靜態函數train

def train(input: RDD[LabeledPoint],algo: Algo,impurity: Impurity,maxDepth: Int,numClassesForClassification: Int,maxBins: Int,quantileCalculationStrategy: QuantileStrategy,categoricalFeaturesInfo: Map[Int,Int]): DecisionTreeModel = {val strategy = new Strategy(algo, impurity, maxDepth, numClassesForClassification, maxBins,quantileCalculationStrategy, categoricalFeaturesInfo)new DecisionTree(strategy).train(input)}

可以看到將所有參數封裝到Strategy類,然后初始化DecisionTree類對象,繼續調用成員函數train

/*** :: Experimental ::* A class which implements a decision tree learning algorithm for classification and regression.* It supports both continuous and categorical features.* @param strategy The configuration parameters for the tree algorithm which specify the type* of algorithm (classification, regression, etc.), feature type (continuous,* categorical), depth of the tree, quantile calculation strategy, etc.*/ @Experimental class DecisionTree (private val strategy: Strategy) extends Serializable with Logging {strategy.assertValid()/*** Method to train a decision tree model over an RDD* @param input Training data: RDD of [[org.apache.spark.mllib.regression.LabeledPoint]]* @return DecisionTreeModel that can be used for prediction*/def train(input: RDD[LabeledPoint]): DecisionTreeModel = {// Note: random seed will not be used since numTrees = 1.val rf = new RandomForest(strategy, numTrees = 1, featureSubsetStrategy = "all", seed = 0)val rfModel = rf.train(input)rfModel.trees(0)}}

可以看到,這里DecisionTree的設計是基于RandomForest的特例,即單顆樹的RandomForest?
所以調用RandomForest.train(),最終因為只有一棵樹,所以取trees(0)

?

org.apache.spark.mllib.tree.RandomForest.scala

重點看下,RandomForest里面的train做了什么?

/*** Method to train a decision tree model over an RDD* @param input Training data: RDD of [[org.apache.spark.mllib.regression.LabeledPoint]]* @return RandomForestModel that can be used for prediction*/def train(input: RDD[LabeledPoint]): RandomForestModel = {//1. metadataval retaggedInput = input.retag(classOf[LabeledPoint])val metadata =DecisionTreeMetadata.buildMetadata(retaggedInput, strategy, numTrees, featureSubsetStrategy)// 2. Find the splits and the corresponding bins (interval between the splits) using a sample// of the input data.val (splits, bins) = DecisionTree.findSplitsBins(retaggedInput, metadata)// 3. Bin feature values (TreePoint representation).// Cache input RDD for speedup during multiple passes.val treeInput = TreePoint.convertToTreeRDD(retaggedInput, bins, metadata)val baggedInput = if (numTrees > 1) {BaggedPoint.convertToBaggedRDD(treeInput, numTrees, seed)} else {BaggedPoint.convertToBaggedRDDWithoutSampling(treeInput)}.persist(StorageLevel.MEMORY_AND_DISK)// set maxDepth and compute memory usage // depth of the decision tree// Max memory usage for aggregates// TODO: Calculate memory usage more precisely.//......../** The main idea here is to perform group-wise training of the decision tree nodes thus* reducing the passes over the data from (# nodes) to (# nodes / maxNumberOfNodesPerGroup).* Each data sample is handled by a particular node (or it reaches a leaf and is not used* in lower levels).*/// FIFO queue of nodes to train: (treeIndex, node)val nodeQueue = new mutable.Queue[(Int, Node)]()val rng = new scala.util.Random()rng.setSeed(seed)// Allocate and queue root nodes.val topNodes: Array[Node] = Array.fill[Node](numTrees)(Node.emptyNode(nodeIndex = 1))Range(0, numTrees).foreach(treeIndex => nodeQueue.enqueue((treeIndex, topNodes(treeIndex))))while (nodeQueue.nonEmpty) {// Collect some nodes to split, and choose features for each node (if subsampling).// Each group of nodes may come from one or multiple trees, and at multiple levels.val (nodesForGroup, treeToNodeToIndexInfo) =RandomForest.selectNodesToSplit(nodeQueue, maxMemoryUsage, metadata, rng) // 對decision tree沒有意義,nodeQueue只有一個node,不需要選// 4. Choose node splits, and enqueue new nodes as needed.DecisionTree.findBestSplits(baggedInput, metadata, topNodes, nodesForGroup,treeToNodeToIndexInfo, splits, bins, nodeQueue, timer)}val trees = topNodes.map(topNode => new DecisionTreeModel(topNode, strategy.algo))RandomForestModel.build(trees)}

1. DecisionTreeMetadata.buildMetadata

org.apache.spark.mllib.tree.impl.DecisionTreeMetadata.scala

這里生成一些后面需要用到的metadata?
最關鍵的是計算每個feature的bins和splits的數目,

計算bins的數目

//bins數目最大不能超過訓練集中樣本的sizeval maxPossibleBins = math.min(strategy.maxBins, numExamples).toInt//設置默認值val numBins = Array.fill[Int](numFeatures)(maxPossibleBins)if (numClasses > 2) {// Multiclass classificationval maxCategoriesForUnorderedFeature =((math.log(maxPossibleBins / 2 + 1) / math.log(2.0)) + 1).floor.toIntstrategy.categoricalFeaturesInfo.foreach { case (featureIndex, numCategories) =>// Decide if some categorical features should be treated as unordered features,// which require 2 * ((1 << numCategories - 1) - 1) bins.// We do this check with log values to prevent overflows in case numCategories is large.// The next check is equivalent to: 2 * ((1 << numCategories - 1) - 1) <= maxBinsif (numCategories <= maxCategoriesForUnorderedFeature) {unorderedFeatures.add(featureIndex)numBins(featureIndex) = numUnorderedBins(numCategories)} else {numBins(featureIndex) = numCategories}}} else {// Binary classification or regressionstrategy.categoricalFeaturesInfo.foreach { case (featureIndex, numCategories) =>numBins(featureIndex) = numCategories}}

其他case,bins數目等于feature的numCategories?
對于unordered情況,比較特殊,

/*** Given the arity of a categorical feature (arity = number of categories),* return the number of bins for the feature if it is to be treated as an unordered feature.* There is 1 split for every partitioning of categories into 2 disjoint, non-empty sets;* there are math.pow(2, arity - 1) - 1 such splits.* Each split has 2 corresponding bins.*/def numUnorderedBins(arity: Int): Int = 2 * ((1 << arity - 1) - 1)

根據bins數目,計算splits

/*** Number of splits for the given feature.* For unordered features, there are 2 bins per split.* For ordered features, there is 1 more bin than split.*/def numSplits(featureIndex: Int): Int = if (isUnordered(featureIndex)) {numBins(featureIndex) >> 1} else {numBins(featureIndex) - 1}

?

2. DecisionTree.findSplitsBins

首先找出每個feature上可能出現的splits和相應的bins,這是后續算法的基礎?
這里的注釋解釋了上面如何計算splits和bins數目的算法

a,對于連續數據,對于一個feature,splits = numBins - 1;上面也說了對于連續值,其實splits可以無限的,如何找到numBins - 1個splits,很簡單,這里用sample?
b,對于離散數據,兩個case?
??? b.1, 無序的feature,用于low-arity(參數較少)的multiclass分類,這種case下劃分的可能性比較多,,所以用subsets of categories來作為劃分?
??? b.2, 有序的feature,用于regression,二元分類,或high-arity的多元分類,這種case下劃分的可能比較少,m-1,所以用每個category作為劃分

/*** Returns splits and bins for decision tree calculation.* Continuous and categorical features are handled differently.** Continuous features:* For each feature, there are numBins - 1 possible splits representing the possible binary* decisions at each node in the tree.* This finds locations (feature values) for splits using a subsample of the data.** Categorical features:* For each feature, there is 1 bin per split.* Splits and bins are handled in 2 ways:* (a) "unordered features"* For multiclass classification with a low-arity feature* (i.e., if isMulticlass && isSpaceSufficientForAllCategoricalSplits),* the feature is split based on subsets of categories.* (b) "ordered features"* For regression and binary classification,* and for multiclass classification with a high-arity feature,* there is one bin per category.** @param input Training data: RDD of [[org.apache.spark.mllib.regression.LabeledPoint]]* @param metadata Learning and dataset metadata* @return A tuple of (splits, bins).* Splits is an Array of [[org.apache.spark.mllib.tree.model.Split]]* of size (numFeatures, numSplits).* Bins is an Array of [[org.apache.spark.mllib.tree.model.Bin]]* of size (numFeatures, numBins).*/protected[tree] def findSplitsBins(input: RDD[LabeledPoint],metadata: DecisionTreeMetadata): (Array[Array[Split]], Array[Array[Bin]]) = {val numFeatures = metadata.numFeatures// Sample the input only if there are continuous features.val hasContinuousFeatures = Range(0, numFeatures).exists(metadata.isContinuous)val sampledInput = if (hasContinuousFeatures) { // 對于連續特征,取值會比較多,需要做抽樣// Calculate the number of samples for approximate quantile calculation.val requiredSamples = math.max(metadata.maxBins * metadata.maxBins, 10000) // 抽樣數要遠大于桶數val fraction = if (requiredSamples < metadata.numExamples) { // 設置抽樣比例requiredSamples.toDouble / metadata.numExamples} else {1.0}input.sample(withReplacement = false, fraction, new XORShiftRandom().nextInt()).collect()} else {new Array[LabeledPoint](0)}metadata.quantileStrategy match {case Sort =>val splits = new Array[Array[Split]](numFeatures) // 初始化splits和bins val bins = new Array[Array[Bin]](numFeatures)// Find all splits.// Iterate over all features.var featureIndex = 0while (featureIndex < numFeatures) { // 遍歷所有的featureval numSplits = metadata.numSplits(featureIndex) // 取出前面算出的splits和bins的數目val numBins = metadata.numBins(featureIndex)if (metadata.isContinuous(featureIndex)) { // 對于連續的featureval numSamples = sampledInput.lengthsplits(featureIndex) = new Array[Split](numSplits)bins(featureIndex) = new Array[Bin](numBins)val featureSamples = sampledInput.map(lp => lp.features(featureIndex)).sorted // 從sampledInput里面取出該feature的所有取值,排序val stride: Double = numSamples.toDouble / metadata.numBins(featureIndex) // 取樣數/桶數,決定split(劃分)的步長logDebug("stride = " + stride)for (splitIndex <- 0 until numSplits) { // 開始劃分val sampleIndex = splitIndex * stride.toInt // 劃分數×步長,得到劃分所用的sample的index// Set threshold halfway in between 2 samples.val threshold = (featureSamples(sampleIndex) + featureSamples(sampleIndex + 1)) / 2.0 // 劃分點選取在前后兩個sample的均值splits(featureIndex)(splitIndex) =new Split(featureIndex, threshold, Continuous, List()) // 創建Split對象}bins(featureIndex)(0) = new Bin(new DummyLowSplit(featureIndex, Continuous), // 初始化第一個split,DummyLowSplit,取值是Double.MinValuesplits(featureIndex)(0), Continuous, Double.MinValue)for (splitIndex <- 1 until numSplits) { // 創建所有的bins bins(featureIndex)(splitIndex) = new Bin(splits(featureIndex)(splitIndex - 1), splits(featureIndex)(splitIndex),Continuous, Double.MinValue)}bins(featureIndex)(numSplits) = new Bin(splits(featureIndex)(numSplits - 1), // 初始化最后一個split,DummyHighSplit,取值是Double.MaxValuenew DummyHighSplit(featureIndex, Continuous), Continuous, Double.MinValue)} else { // 對于分類的feature // Categorical featureval featureArity = metadata.featureArity(featureIndex) // 離散特征中的取值個數if (metadata.isUnordered(featureIndex)) { // 無序的離散特征// TODO: The second half of the bins are unused. Actually, we could just use// splits and not build bins for unordered features. That should be part of// a later PR since it will require changing other code (using splits instead// of bins in a few places).// Unordered features// 2^(maxFeatureValue - 1) - 1 combinationssplits(featureIndex) = new Array[Split](numSplits)bins(featureIndex) = new Array[Bin](numBins)var splitIndex = 0while (splitIndex < numSplits) {val categories: List[Double] =extractMultiClassCategories(splitIndex + 1, featureArity)splits(featureIndex)(splitIndex) =new Split(featureIndex, Double.MinValue, Categorical, categories)bins(featureIndex)(splitIndex) = {if (splitIndex == 0) {new Bin(new DummyCategoricalSplit(featureIndex, Categorical),splits(featureIndex)(0),Categorical,Double.MinValue)} else {new Bin(splits(featureIndex)(splitIndex - 1),splits(featureIndex)(splitIndex),Categorical,Double.MinValue)}}splitIndex += 1}} else { // 有序的離散特征,不需要事先算,因為splits就等于featureArity // Ordered features// Bins correspond to feature values, so we do not need to compute splits or bins// beforehand. Splits are constructed as needed during training.splits(featureIndex) = new Array[Split](0)bins(featureIndex) = new Array[Bin](0)}}featureIndex += 1}(splits, bins)case MinMax =>throw new UnsupportedOperationException("minmax not supported yet.")case ApproxHist =>throw new UnsupportedOperationException("approximate histogram not supported yet.")}}

?

3. TreePoint和BaggedPoint

TreePoint是LabeledPoint的內部數據結構,這里需要做轉換,

private def labeledPointToTreePoint(labeledPoint: LabeledPoint,bins: Array[Array[Bin]],featureArity: Array[Int],isUnordered: Array[Boolean]): TreePoint = {val numFeatures = labeledPoint.features.sizeval arr = new Array[Int](numFeatures)var featureIndex = 0while (featureIndex < numFeatures) {arr(featureIndex) = findBin(featureIndex, labeledPoint, featureArity(featureIndex),isUnordered(featureIndex), bins)featureIndex += 1}new TreePoint(labeledPoint.label, arr) //只是將labeledPoint中的value替換成arr}

arr是findBin的結果,?
這里主要是針對連續特征做處理,將連續的值通過二分查找轉換為相應bin的index?
對于離散數據,bin等同于featureValue.toInt

BaggedPoint,由于random forest是比較典型的bagging算法,所以需要對訓練集做bootstrap sample?
而對于decision tree是特殊的單根random forest,所以不需要做抽樣?
BaggedPoint.convertToBaggedRDDWithoutSampling(treeInput)?
其實只是做簡單的封裝

?

4. DecisionTree.findBestSplits

這段代碼寫的有點復雜,尤其和randomForest混雜一起

總之,關鍵在

// find best split for each nodeval (split: Split, stats: InformationGainStats, predict: Predict) =binsToBestSplit(aggStats, splits, featuresForNode, nodes(nodeIndex))(nodeIndex, (split, stats, predict))}.collectAsMap()

看看binsToBestSplit的實現,為了清晰一點,我們只看continuous feature

四個參數,

binAggregates: DTStatsAggregator, 就是ImpurityAggregator,給出如果算出impurity的邏輯?
splits: Array[Array[Split]], feature對應的splits?
featuresForNode: Option[Array[Int]], tree node對應的feature??
node: Node, 哪個tree node

返回值,

(Split, InformationGainStats, Predict),?
Split,最優的split對象(包含featureindex和splitindex)?
InformationGainStats,該split產生的Gain對象,表明產生多少增益,多大程度降低impurity?
Predict,該節點的預測值,對于連續feature就是平均值,看后面的分析

private def binsToBestSplit(binAggregates: DTStatsAggregator,splits: Array[Array[Split]],featuresForNode: Option[Array[Int]],node: Node): (Split, InformationGainStats, Predict) = {// For each (feature, split), calculate the gain, and select the best (feature, split).val (bestSplit, bestSplitStats) =Range(0, binAggregates.metadata.numFeaturesPerNode).map { featureIndexIdx => //遍歷每個feature//......取出feature對應的splits // Find best split.val (bestFeatureSplitIndex, bestFeatureGainStats) =Range(0, numSplits).map { case splitIdx => //遍歷每個splitsval leftChildStats = binAggregates.getImpurityCalculator(nodeFeatureOffset, splitIdx)val rightChildStats = binAggregates.getImpurityCalculator(nodeFeatureOffset, numSplits)rightChildStats.subtract(leftChildStats)predictWithImpurity = Some(predictWithImpurity.getOrElse(calculatePredictImpurity(leftChildStats, rightChildStats)))val gainStats = calculateGainForSplit(leftChildStats, //算出gain,InformationGainStats對象rightChildStats, binAggregates.metadata, predictWithImpurity.get._2)(splitIdx, gainStats)}.maxBy(_._2.gain) //找到gain最大的split的index (splits(featureIndex)(bestFeatureSplitIndex), bestFeatureGainStats)}//......省略離散特征的case}.maxBy(_._2.gain) //找到gain最大的feature的split (bestSplit, bestSplitStats, predictWithImpurity.get._1)}

?

Predict,這個需要分析一下?
predictWithImpurity.get._1,predictWithImpurity元組的第一個元素?
calculatePredictImpurity的返回值中的predict

private def calculatePredictImpurity(leftImpurityCalculator: ImpurityCalculator,rightImpurityCalculator: ImpurityCalculator): (Predict, Double) = {val parentNodeAgg = leftImpurityCalculator.copyparentNodeAgg.add(rightImpurityCalculator)val predict = calculatePredict(parentNodeAgg)val impurity = parentNodeAgg.calculate()(predict, impurity)} private def calculatePredict(impurityCalculator: ImpurityCalculator): Predict = {val predict = impurityCalculator.predictval prob = impurityCalculator.prob(predict)new Predict(predict, prob)}

這里predict和impurity有什么不同,可以看出?
impurity = ImpurityCalculator.calculate()?
predict = ImpurityCalculator.predict

對于連續feature,我們就看Variance的實現,

/*** Calculate the impurity from the stored sufficient statistics.*/def calculate(): Double = Variance.calculate(stats(0), stats(1), stats(2)) @DeveloperApioverride def calculate(count: Double, sum: Double, sumSquares: Double): Double = {if (count == 0) {return 0}val squaredLoss = sumSquares - (sum * sum) / countsquaredLoss / count}

從calculate的實現可以看到,impurity求的就是方差, 不是標準差(均方差)

/*** Prediction which should be made based on the sufficient statistics.*/def predict: Double = if (count == 0) {0} else {stats(1) / count}

predict求的就是平均值

總結

以上是生活随笔為你收集整理的Spark MLlib: Decision Tree源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

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

91视频首页 | 在线观看视频国产一区 | 91看片淫黄大片在线播放 | 99亚洲视频 | 96av在线| 日韩av进入 | 丁香六月综合网 | 久久久伊人网 | 精品久久网| 国产夫妻av在线 | 国产精品理论片在线播放 | 狠狠色2019综合网 | 久久人人爽人人人人片 | 亚洲春色成人 | 久久久精品久久日韩一区综合 | 久久99精品视频 | 91视频麻豆 | 国产小视频在线观看免费 | 免费av在| 成人精品国产 | 日本久久免费电影 | 婷婷在线色| av电影在线观看 | 色综合a| 91xav| 色欲综合视频天天天 | 亚洲高清视频在线 | 在线国产日韩 | 日操操 | 色欧美88888久久久久久影院 | 色播五月婷婷 | 黄a在线 | 午夜视频在线观看一区二区 | 天天色棕合合合合合合 | 五月开心网 | 国产精品一区二区免费 | 午夜精品福利一区二区三区蜜桃 | 激情偷乱人伦小说视频在线观看 | 日韩二区三区 | 日韩精品播放 | 国产69久久精品成人看 | www.久久视频 | 99在线观看精品 | 五月天堂网 | 丁香六月婷婷开心 | 日韩欧美视频一区 | 精品美女在线视频 | 四川bbb搡bbb爽爽视频 | 免费视频久久久久 | 亚洲精品国偷拍自产在线观看蜜桃 | 片网址| 精品视频在线免费观看 | 国产一二区免费视频 | 日韩免费视频网站 | 国产一区二区日本 | 欧美一区二区三区在线看 | 在线看黄网站 | 久草在线高清视频 | 91传媒在线观看 | 亚州黄色一级 | 免费在线观看不卡av | 久久国产欧美日韩 | 国产精品精品久久久 | 欧美性生交大片免网 | 久久精品亚洲 | 国产一区二区精品久久 | 久久99精品久久久久蜜臀 | 九九免费在线观看视频 | 色综合亚洲精品激情狠狠 | 亚洲片在线 | 精品久久久久久国产91 | 精品国产一区二区三区久久 | 久久九九影院 | 激情在线免费视频 | 午夜在线看片 | 国产99精品在线观看 | 久久久久久免费毛片精品 | 天堂视频中文在线 | 国产96av| 久久试看 | 在线视频婷婷 | 国产黄色免费电影 | 免费在线观看日韩视频 | 日韩网站一区二区 | 日日操夜 | 97人人澡人人爽人人模亚洲 | 亚洲精品国产自产拍在线观看 | 国产精选在线 | 欧美视频99| 97在线观看免费高清完整版在线观看 | 99精品在线免费在线观看 | 中文字幕国产精品一区二区 | 特级西西www44高清大胆图片 | 国产九九九精品视频 | 人人要人人澡人人爽人人dvd | 日本黄色免费播放 | 久久久久久久影视 | 色播六月天 | 久久小视频 | 日批在线看 | 黄色午夜 | 国产91精品一区二区 | 91一区二区三区久久久久国产乱 | 在线中文字幕网站 | 中文字幕在线播放一区 | 欧美日韩高清不卡 | 在线视频第一页 | 欧亚久久| 最新日韩在线观看 | 国产精品免费成人 | 久久9精品 | 亚洲视频在线视频 | 日韩中文字幕在线不卡 | 欧美日韩视频在线 | 亚洲人在线视频 | 亚洲成人精品在线观看 | 久久亚洲私人国产精品va | 天天干,天天插 | 蜜臀av免费一区二区三区 | 国产美女视频免费观看的网站 | 麻豆视频在线免费看 | 欧美日韩在线精品一区二区 | 福利一区视频 | 欧亚日韩精品一区二区在线 | 天天干.com | 韩国视频一区二区三区 | 国产成视频在线观看 | 久久欧美视频 | 国产日韩在线观看一区 | 国产一级电影在线 | a天堂中文在线 | www视频在线播放 | 亚洲 欧洲av | 男女免费视频观看 | 激情视频网页 | www.狠狠| 免费日韩一区二区三区 | 久久成人国产 | 天天操网站 | 日韩在线免费播放 | 亚洲免费高清视频 | 91高清视频 | 99精品在这里 | 91视频 - v11av | 中文字幕 91 | av片在线观看 | 久久国产精品一国产精品 | 久久久久一区二区三区 | 天天操狠狠操网站 | 嫩草av在线 | 成片免费观看视频999 | 欧日韩在线视频 | 亚洲精品午夜久久久久久久久久久 | 欧美日韩一区二区视频在线观看 | 九月婷婷人人澡人人添人人爽 | 久操视频在线 | 欧美日韩国产页 | 91黄色小视频 | 国产福利在线免费观看 | 91成版人在线观看入口 | 国产精品大片免费观看 | 久久草草影视免费网 | 在线视频免费观看 | a级免费观看 | 亚洲黄色一级电影 | www.色com| 天天操操操操操 | 99久久精品久久久久久清纯 | 三级黄色网络 | 成人午夜电影在线播放 | av网在线观看| 蜜桃av人人夜夜澡人人爽 | 中文字幕视频在线播放 | 97成人在线免费视频 | 激情五月激情综合网 | 中文字幕在线观看的网站 | 91人人澡人人爽 | 久久女教师 | 天天天天射 | 精品久久久久免费极品大片 | 国产无吗一区二区三区在线欢 | 国产精品久久久久9999吃药 | 成人黄色在线播放 | 亚洲欧洲精品一区二区精品久久久 | 一区二区三区三区在线 | 激情五月婷婷丁香 | 欧美日韩视频免费 | 最近中文字幕在线 | 午夜免费福利片 | zzijzzij亚洲成熟少妇 | 粉嫩一区二区三区粉嫩91 | 日日操夜夜操狠狠操 | 免费久久精品视频 | 亚洲精品久久久蜜桃直播 | 天天操比 | 在线国产欧美 | 久久福利国产 | 久久精品人人做人人综合老师 | 国产麻豆视频网站 | 亚洲aⅴ在线 | 香蕉视频网站在线观看 | av中文字幕第一页 | 五月婷婷黄色 | 热99在线视频 | 免费看三级网站 | 91网免费观看 | 97超碰免费在线观看 | 国产在线观看你懂的 | 99c视频高清免费观看 | 国产成人精品在线 | 18女毛片 | 精品久久久久久电影 | 色婷婷激情五月 | 五月婷婷中文字幕 | 97av视频 | 97碰视频| 国产美女无遮挡永久免费 | 久久伦理影院 | 99re久久精品国产 | 色婷婷午夜 | 日韩综合一区二区三区 | 欧美日本不卡视频 | 天天天射 | 97色婷婷人人爽人人 | 亚洲精品中文字幕在线观看 | 亚洲精品国产精品国自产观看 | 中文字幕在线观看视频免费 | 欧美日韩高清免费 | 久草久草在线观看 | 91电影福利 | 97色视频在线 | 国产成人一区二 | 久久国产精品一区二区 | 免费观看一级成人毛片 | 亚洲精品视频第一页 | 国产精品女人网站 | 成人片在线播放 | 日韩精品一区二区三区三炮视频 | 在线精品观看 | 美女网站在线观看 | 久艹视频在线免费观看 | 日韩高清免费观看 | 999日韩| 欧美 日韩 久久 | 亚洲精品高清一区二区三区四区 | 91视频首页 | 久久婷婷综合激情 | 欧美亚洲国产日韩 | 91丨九色丨蝌蚪丨对白 | 国产 一区二区三区 在线 | 婷婷九月激情 | 国产不卡在线看 | 毛片区 | 日韩三级不卡 | 久久视 | 色999五月色 | 中文字幕免费看 | 免费91麻豆精品国产自产在线观看 | 精品亚洲午夜久久久久91 | 久久精品视频免费观看 | 国产丝袜制服在线 | 中文字幕亚洲国产 | 成人黄色视 | 精品久久久久久久久久岛国gif | 亚洲在线成人精品 | 99超碰在线观看 | 人人爱人人舔 | 免费色视频在线 | 公开超碰在线 | 91精品国产一区二区在线观看 | 午夜精品999 | 色综合天天综合 | 狠狠干激情 | 天天操网站 | 五月婷婷六月综合 | 国产午夜在线观看 | 亚洲国产精品一区二区尤物区 | 国产精品69av | 免费观看的黄色 | 久久99精品久久久久婷婷 | 久久国产精品系列 | 99国产精品视频免费观看一公开 | 亚洲欧美在线综合 | 黄色一级网 | 欧美一区二区三区免费观看 | 日本少妇高清做爰视频 | 色吊丝av中文字幕 | 日韩大片在线免费观看 | 中文字幕久久网 | 在线有码中文 | 国产一级片观看 | 最近高清中文字幕在线国语5 | 91精品综合在线观看 | 欧美日韩国产综合网 | 国产又黄又爽又猛视频日本 | 欧美日韩高清国产 | 00av视频 | 综合色在线 | 一区二区三区国产精品 | 99人成在线观看视频 | 特级西西444www高清大视频 | 波多野结衣在线播放视频 | av观看在线观看 | av电影免费在线 | 夜夜爽天天爽 | 91av在线国产 | 香蕉视频网站在线观看 | 成人午夜毛片 | 人人舔人人舔 | 亚欧日韩成人h片 | 久久久国产毛片 | 久久精品最新 | 五月婷婷激情五月 | 婷婷电影在线观看 | 一本一道久久a久久综合蜜桃 | av888.com | 国产成人精品区 | 丁香 婷婷 激情 | 国产视频一区在线播放 | 狠狠色丁香久久婷婷综合五月 | 91麻豆网 | 亚洲视频电影在线 | 在线亚洲成人 | 欧美美女一级片 | 丁香六月五月婷婷 | 色欧美综合 | 婷婷久操| 349k.cc看片app | 黄色福利网 | 婷婷丁香色 | av天天在线观看 | 日韩高清一区 | 色婷婷啪啪免费在线电影观看 | 国产精品原创av片国产免费 | 亚洲aⅴ乱码精品成人区 | 综合久久2023 | 99爱在线| 日韩免费久久 | av在线精品 | 97精品国产97久久久久久春色 | 人人草网站 | 欧美日韩在线视频免费 | 久久亚洲视频 | 99性视频 | 久久久精品国产一区二区 | 午夜视频一区二区 | 一性一交视频 | 日本中文字幕免费观看 | 伊人久久国产精品 | 99在线观看精品 | 美女网站在线看 | 男女靠逼app| 色综合天天天天做夜夜夜夜做 | 九九久久成人 | 国产精品激情偷乱一区二区∴ | 精品在线观看国产 | 香蕉在线观看视频 | 激情综合五月婷婷 | 日韩大陆欧美高清视频区 | 视频国产在线观看18 | 国产精品自产拍在线观看中文 | a一片一级| 热久久国产| 三级黄色片子 | 婷婷婷国产在线视频 | 日韩黄色大片在线观看 | 中文av网 | 成人午夜剧场在线观看 | 国产网站色 | 日日日视频 | 欧美色插 | 午夜精品久久久久 | 99视频精品免费观看, | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 最新色视频 | 日韩免费三级 | 99精品免费久久久久久久久日本 | 精品中文字幕在线播放 | 久久天天躁 | 国产中文字幕国产 | 国产91学生粉嫩喷水 | 日韩精品免费一线在线观看 | 亚洲国产精品久久久久婷婷884 | 草草草影院 | 98精品国产自产在线观看 | 亚洲一区精品人人爽人人躁 | 免费一级毛毛片 | 日韩亚洲欧美中文字幕 | 国产在线国偷精品产拍 | 99视 | 国产精品久久久久影院日本 | 久久深夜福利免费观看 | 国产亚洲在线 | 国产一级在线 | 亚洲国产三级 | 久久久人| 一区二区三区国产欧美 | 91免费网址 | 日韩毛片精品 | 免费麻豆 | 91精品国产亚洲 | 99精品在线观看 | 日韩综合第一页 | 国内精自线一二区永久 | 国产一区二区三精品久久久无广告 | 91亚洲免费| 99久久99久久精品国产片果冰 | 一级黄视频 | 国产黄色观看 | 大荫蒂欧美视频另类xxxx | 99视频国产精品免费观看 | 91免费视频国产 | 久久午夜精品影院一区 | 亚洲91在线 | 日韩视频一区二区三区在线播放免费观看 | 黄色小说18 | 久久av一区二区三区亚洲 | 在线中文字幕电影 | 久久成人高清 | av免费电影在线观看 | 欧美在线观看视频一区二区三区 | 亚洲开心激情 | 91亚洲精品国偷拍自产在线观看 | 999视频在线播放 | www.色综合.com| 精品一区二区三区在线播放 | 中文字幕精品一区二区精品 | 久久久久久激情 | 蜜臀av一区| 国产视频久久久久 | 91中文字幕一区 | 911精品视频 | 亚洲日本va中文字幕 | www免费黄色| 中文字幕影片免费在线观看 | 丁香六月婷婷激情 | 91禁在线观看 | 日韩av看片| 日韩久久激情 | 久久久午夜精品理论片中文字幕 | 成人a免费看 | 亚洲波多野结衣 | 天天干天天干天天干 | 久99视频| 99色亚洲 | 国产精品美女久久久久久久久久久 | 国产精品第一页在线观看 | 精品国产一区二区在线 | 国产偷国产偷亚洲清高 | 最近中文字幕国语免费高清6 | 国产成人精品一区二区 | 啪啪动态视频 | 亚洲人成在线电影 | 天天操狠狠操网站 | 国产真实精品久久二三区 | 97超级碰 | 91黄色免费看 | 国产亚洲精品中文字幕 | 免费av网站在线 | 五月天色中色 | 91亚洲欧美| 夜夜操天天操 | 精品国产一区二 | 五月天狠狠操 | 99精品久久只有精品 | 在线不卡视频 | 中文字幕免费观看视频 | 亚洲极色 | 国产99久久久国产精品 | 日韩经典一区二区三区 | 久久久久久亚洲精品 | 亚洲激情中文 | av黄色一级片 | 激情欧美国产 | 国产精品久久久亚洲 | 久久伊人国产精品 | 亚洲一区动漫 | 精品国产欧美一区二区三区不卡 | 成人午夜黄色 | 欧美一区二区三区免费观看 | 狠狠色噜噜狠狠狠狠2022 | 日韩电影中文字幕在线观看 | 欧美日韩一区三区 | 久久久首页 | 天天综合网在线观看 | 中文字幕欧美三区 | 日日操操操 | 天天搞天天 | 欧美精彩视频在线观看 | 精品无人国产偷自产在线 | 亚洲激情p| 成人91视频| 99精品国产免费久久久久久下载 | 国产成人精品久久久久蜜臀 | 狠狠躁夜夜a产精品视频 | 色婷婷综合久久久久中文字幕1 | 久久久久国产精品一区 | 日韩久久网站 | 亚洲涩涩网| 99久久精品国产一区二区三区 | 欧美日本在线视频 | 99精品一区二区三区 | 人人干人人艹 | 91精品电影 | 国产黄大片 | 国产精品你懂的在线观看 | 国产成人精品在线播放 | 悠悠av资源片 | 中文字幕av一区二区三区四区 | 蜜臀久久99精品久久久无需会员 | 日韩一级电影网站 | 三级在线播放视频 | 日韩免费在线网站 | 国产98色在线 | 日韩 | 国产手机精品视频 | 欧美天天综合 | 成人理论在线观看 | 亚洲精品成人免费 | 天天综合日日夜夜 | 99精品国自产在线 | 成人一区在线观看 | 亚洲欧美精品一区 | www.成人精品| 国产超碰在线 | 夜夜操天天 | 天天干 夜夜操 | 国产日产在线观看 | av软件在线观看 | 波多野结衣理论片 | 日韩黄色大片在线观看 | 免费亚洲黄色 | 久久久亚洲麻豆日韩精品一区三区 | 欧美日性视频 | 亚洲一二视频 | 极品久久久| 在线观看日韩中文字幕 | 岛国av在线不卡 | 久久视频在线观看中文字幕 | 99视频网站 | 成年人黄色大片在线 | 久久人人97超碰国产公开结果 | 操操综合 | 99视频精品免费观看, | 日韩电影精品 | 日韩黄色影院 | 免费日韩 精品中文字幕视频在线 | 日韩爱爱网站 | 精品国产诱惑 | 曰本免费av | 99热九九这里只有精品10 | 久久精品综合 | 免费成人在线电影 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 久久国内免费视频 | 亚洲欧美日韩在线一区二区 | 天天夜操| 国产在线p | 激情片av| 五月婷婷毛片 | av免费线看| 日韩精品视 | 国产精品久久久久久av | 在线观看亚洲免费视频 | 97成人精品视频在线观看 | 欧美在线观看视频免费 | 99夜色 | 伊人久久精品久久亚洲一区 | 中文字幕网站 | av日韩av| 在线v片 | 探花视频在线观看免费 | 亚洲伊人av | 五月婷婷丁香网 | 热久在线 | 久久网站免费 | 日韩a欧美 | 天天干人人 | 人人狠狠综合久久亚洲婷 | 中文字幕免费观看 | 97电影手机版| av怡红院| 波多野结衣在线播放一区 | 91在线最新| 久久精品久久久精品美女 | 亚洲一区网站 | 国产96在线观看 | 91超碰在线播放 | 日韩av电影一区 | 黄色99视频 | 精品久久久一区二区 | 精品久久久久久国产偷窥 | 天天se天天cao天天干 | 亚洲欧洲一区二区在线观看 | 国内外成人在线 | 美女黄视频免费 | 五月天网页 | 国产 字幕 制服 中文 在线 | 在线视频免费观看 | 色婷婷狠狠五月综合天色拍 | 在线国产欧美 | 天天干天天射天天操 | 久久久午夜精品理论片中文字幕 | 97超碰超碰久久福利超碰 | 国产中文字幕第一页 | 日本夜夜草视频网站 | 丁香网五月天 | 97色免费视频 | 天天综合日 | 天天射射天天 | av东方在线 | 日韩久久片 | 久久精品1区 | 一本一本久久a久久精品牛牛影视 | 中文字幕日韩国产 | 欧美大荫蒂xxx | 亚洲,国产成人av | 成人一级片在线观看 | 99人久久精品视频最新地址 | 久久视频中文字幕 | 夜夜操狠狠操 | 亚洲最大av网站 | 久久99精品一区二区三区三区 | 精品久久久久久久久久久久久久久久久久 | 国产日韩中文字幕 | 国产在线高清精品 | 在线观看中文字幕 | 久久99国产精品免费 | 欧美精品亚洲精品 | 四虎海外影库www4hu | 久久精品国产成人精品 | 婷婷网站天天婷婷网站 | 日日夜夜天天射 | 在线观看精品国产 | 国产精品久久久久999 | 久久国产精品久久精品国产演员表 | 国产精品成人一区二区 | av在线亚洲天堂 | 久久精品国产美女 | 欧美成年人在线观看 | 狠狠躁日日躁狂躁夜夜躁av | 国产精品一区二区免费视频 | 久久久精品久久日韩一区综合 | 91激情视频在线观看 | 天天操天天操天天操天天操天天操天天操 | av黄色av | 久久精品视频网址 | 成人wwwxxx视频| wwxxxx日本| 夜夜夜夜爽 | 黄色片软件网站 | 99精品视频免费 | av一级二级 | 天天曰天天 | 久久国产成人午夜av影院宅 | 精品亚洲成人 | 成人午夜剧场在线观看 | 探花国产在线 | 草莓视频在线观看免费观看 | 91精品视频一区 | 狠狠干天天射 | 深爱激情亚洲 | 久久美女高清视频 | 国产高清不卡av | 免费看特级毛片 | 99精品久久只有精品 | 成人av地址 | 九色琪琪久久综合网天天 | 亚洲 综合 专区 | 国产在线高清视频 | 国产高清在线视频 | 成人黄色在线视频 | 亚洲闷骚少妇在线观看网站 | 久久免费毛片视频 | 中文字幕色在线视频 | 欧美精品一级视频 | 欧美另类老妇 | 精品一二三区视频 | 婷婷色在线视频 | 成年人免费av | 五月天精品视频 | 丝袜+亚洲+另类+欧美+变态 | 麻豆视频免费入口 | 欧美资源| 在线视频a| 日韩激情久久 | 久久综合成人 | 免费看色视频 | 中文字幕在线久一本久 | 日本久久久久久久久 | 很污的网站 | 亚洲精品2区 | 日本一区二区高清不卡 | av高清一区 | 在线电影 一区 | 日日摸日日添夜夜爽97 | 国产精品免费不卡 | 在线观看一级片 | 中文字幕一区二区三区四区在线视频 | 超碰个人在线 | 国产精品2018| 欧美日韩久久不卡 | 亚洲综合国产精品 | 久久久黄视频 | 美女免费视频观看网站 | 久操中文字幕在线观看 | 国产一区二区视频在线 | 性色av免费在线观看 | 九九在线视频免费观看 | 91视视频在线直接观看在线看网页在线看 | 久久久久影视 | 国产一线二线三线在线观看 | 国产精品国产毛片 | 99视频在线看 | 国产一级二级三级视频 | 日韩理论影院 | 久久国产精品一区二区三区四区 | 国产午夜激情视频 | 人人玩人人添人人澡超碰 | 日日摸日日碰 | 欧美一进一出抽搐大尺度视频 | 免费在线观看av网站 | 久久久久久久久网站 | 激情av综合| 日批视频 | 欧美精品999 | 国产成人精品一区在线 | 五月天综合色激情 | 国产精品毛片久久久久久久久久99999999 | 色视频国产直接看 | 九九久久国产精品 | 9999亚洲| 新av在线| 中文区中文字幕免费看 | 人成在线免费视频 | 色香蕉在线视频 | 国产精品18久久久久久久久 | 国产一区高清在线观看 | 国产97碰免费视频 | 亚洲国产综合在线 | 国产99久久精品 | 国产精品女教师 | 久草在线手机观看 | 亚洲综合精品在线 | 福利av在线| 中文字幕在线免费看 | 色网站在线看 | 人人视频网站 | 久久久久久片 | av蜜桃在线 | 色99中文字幕 | 亚洲国产精品成人女人久久 | 色综合久久久久 | 久久久免费网站 | 国内精品中文字幕 | av在线网站免费观看 | 日本高清xxxx | 五月激情在线 | 久草爱视频| 欧美亚洲三级 | 97国产大学生情侣酒店的特点 | 亚洲三级性片 | 高清av中文在线字幕观看1 | 99免费看片 | 亚洲精品午夜久久久久久久 | 日韩艹 | 在线看v片成人 | 日本中文在线播放 | 日日躁你夜夜躁你av蜜 | 精品uu| 又黄又刺激视频 | 在线观看精品国产 | 色婷婷在线观看视频 | www亚洲精品 | 黄色片网站av | 欧美日韩xxxxx | 欧美日韩中文字幕视频 | 伊人婷婷色| 国产高清不卡 | 岛国av在线免费 | 香蕉视频网址 | 久久午夜精品视频 | 亚洲欧洲av在线 | 国产精品亚洲片在线播放 | 国产不卡在线观看视频 | 免费高清在线视频一区· | 免费久久网 | 超碰97免费观看 | 五月天激情综合 | 久草精品视频 | 不卡视频在线 | 欧美日韩中文在线视频 | 久一久久| 香蕉视频导航 | 国产在线精 | 欧美日韩免费观看一区=区三区 | 91系列在线观看 | 国产精品久久久久久久免费大片 | 色窝资源 | 在线av资源| 2020天天干夜夜爽 | 日批视频 | 国产亚洲午夜高清国产拍精品 | 在线亚洲观看 | 成人国产网址 | 伊人色播 | 超碰97中文 | 国产又粗又猛又色又黄网站 | 国产精品美女在线 | 国产精品v欧美精品v日韩 | 国内精品久久久久影院男同志 | 国产成在线观看免费视频 | 中文字幕免费久久 | 亚洲精品小视频 | 久草在线综合网 | 国产成人精品综合久久久久99 | 久久久久伊人 | 国产精品毛片一区二区 | 久久tv | 久av在线 | 精品999久久久 | 欧美性生活小视频 | 五月开心激情网 | av成人在线观看 | se视频网址| 天天爱天天射天天干天天 | 色综合久久中文字幕综合网 | 久草在线视频在线观看 | 国产麻豆电影在线观看 | 成人网页在线免费观看 | 欧美日韩视频免费 | 在线观看亚洲精品视频 | 99在线精品视频观看 | 丰满少妇对白在线偷拍 | 国产精品综合在线观看 | 日韩中文字幕免费视频 | 成人一区二区三区在线观看 | 久操视频在线播放 | www.天天操| 国产破处视频在线播放 | 一本色道久久综合亚洲二区三区 | 久久激情小视频 | 91黄色免费网站 | 成年人在线电影 | 亚洲首页 | 色网站在线观看 | av色综合网 | av电影免费在线看 | 欧美日韩一区二区三区免费视频 | 日韩激情片在线观看 | 成人av网站在线播放 | 少妇自拍av | 日日夜夜精品视频天天综合网 | www.伊人网 | 9免费视频 | 欧美另类tv| 色91在线| 午夜美女福利直播 | 欧美日韩在线视频一区二区 | 欧美中文字幕第一页 | 中文字幕在线一二 | 欧美日韩亚洲精品在线 | 国产精品女同一区二区三区久久夜 | 免费麻豆网站 | 国产美女视频一区 | 欧美一级久久久久 | 91看片淫黄大片一级在线观看 | 国产精品igao视频网入口 | 国语麻豆 | 国产黄网站在线观看 | 91视频高清免费 | 亚洲成人精品av | 黄色亚洲精品 | 综合激情久久 | 欧美久久成人 | 少妇bbb搡bbbb搡bbbb | 婷婷色网 | 亚洲黄色免费 | 最新av中文字幕 | 亚洲成人av片 | 天天色天| 久久国产精品久久国产精品 | 亚洲二区精品 | 麻豆视频www | 婷婷在线看 | 久99久精品视频免费观看 | sesese图片 | 日韩欧美高清一区二区 | 亚洲丝袜中文 | 96视频免费在线观看 | 视频在线观看日韩 | 久久国产精品99久久久久久进口 | 97精品在线观看 | 国内精品中文字幕 | 在线观看深夜视频 | 最近更新中文字幕 | 五月天视频网站 | 久久综合九色综合久久久精品综合 | 草久久精品 | 欧美 亚洲 另类 激情 另类 | 中文字幕在线看片 | 久久99这里只有精品 | 中文在线字幕免费观看 | 97日日 | 欧美精品在线免费 | 亚洲高清av在线 | 91在线麻豆 | 国产黄色片免费看 | 久草在线免费看视频 | 亚洲精品成人 | www.久草视频 | 中文字幕在线观看1 | 亚洲作爱视频 | 精品国产乱码 | 久精品视频免费观看2 | a天堂在线看 | 日日干夜夜干 | 99热这里只有精品国产首页 | 91日韩精品一区 | 日韩视频在线一区 | 日韩电影一区二区在线观看 | 黄色小说在线观看视频 | 日日夜夜精品视频天天综合网 | 国语麻豆 | 久久99精品久久久久蜜臀 | 欧美一级视频免费 | 香蕉久久国产 | 国产在线色站 | 玖草在线观看 | 国产精品久久久视频 | 色九九影院 | 国产精品9999久久久久仙踪林 | 四虎在线观看网址 | 亚洲视频 中文字幕 | 黄色一级大片在线免费看国产一 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 99精品国产在热久久 | 久久97超碰 | 日日操操操 | 精品久久久久久国产偷窥 | 国产精品永久在线观看 | 在线观看视频国产一区 | 操操操com| 国产视频一二区 | 免费a视频在线 | 国产激情电影综合在线看 | 久草久草在线 | 亚洲网站在线 | 六月婷婷久香在线视频 | 最新中文字幕在线资源 | 青青啪 | 久久久91精品国产一区二区精品 | 涩涩网站在线观看 | 亚洲乱亚洲乱妇 | 91人人在线 | 成年美女黄网站色大片免费看 | 国产成人精品一区二区三区网站观看 | 精品美女在线视频 | 99久久国产免费,99久久国产免费大片 | 国产.精品.日韩.另类.中文.在线.播放 | 色综合天天综合网国产成人网 | av动图| 欧美亚洲精品一区 | 91九色成人蝌蚪首页 | 97视频在线| 中文在线最新版天堂 | 日本久久免费视频 | 日韩素人在线观看 | 伊人久久在线观看 | 日韩免费播放 | 日本中文字幕高清 | 日韩精品一区二区三区外面 | 久久免费一 | 一区中文字幕 | 亚洲国产欧美一区二区三区丁香婷 | 三级av片 | 亚洲国产影院 | 9热精品 | 久久99亚洲精品久久久久 | 亚洲国产精品影院 | 亚洲视频播放 | 黄色毛片在线看 | 日韩精品久久久免费观看夜色 | 欧美精品在线一区 | 中文字幕免费观看视频 | 国产午夜精品一区二区三区四区 | 四季av综合网站 | 日韩网站在线免费观看 | av电影免费在线看 | 成人黄在线观看 | 国产成人亚洲精品自产在线 | 国产精品久久久久久久久久新婚 | 免费特级黄毛片 | 国产99久久九九精品免费 | 亚洲高清视频一区二区三区 | 九九亚洲精品 | 久久久久久久国产精品影院 | 五月婷婷中文网 | 国产一级在线免费观看 |