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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

以太坊源码系列之miner解析(2)

發(fā)布時間:2024/1/18 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 以太坊源码系列之miner解析(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

// 工作者是負責將消息應用到新狀態(tài)的主要對象

type worker struct {config *ConfigchainConfig *params.ChainConfigengine consensus.Engineeth Backendchain *core.BlockChain// FeedspendingLogsFeed event.Feed// Subscriptionsmux *event.TypeMuxtxsCh chan core.NewTxsEvent // 用來接受txPool里面的交易的通道txsSub event.Subscription // 用來接受txPool里面的交易的訂閱器chainHeadCh chan core.ChainHeadEvent // 用來接受區(qū)塊頭的通道chainHeadSub event.SubscriptionchainSideCh chan core.ChainSideEvent chainSideSub event.Subscription// ChannelsnewWorkCh chan *newWorkReqtaskCh chan *taskresultCh chan *types.BlockstartCh chan struct{}exitCh chan struct{}resubmitIntervalCh chan time.DurationresubmitAdjustCh chan *intervalAdjustcurrent *environment // An environment for current running cycle.localUncles map[common.Hash]*types.Block // A set of side blocks generated locally as the possible uncle blocks.remoteUncles map[common.Hash]*types.Block // A set of side blocks as the possible uncle blocks.unconfirmed *unconfirmedBlocks // A set of locally mined blocks pending canonicalness confirmations.mu sync.RWMutex // The lock used to protect the coinbase and extra fieldscoinbase common.Address extra []bytependingMu sync.RWMutexpendingTasks map[common.Hash]*tasksnapshotMu sync.RWMutex // The lock used to protect the block snapshot and state snapshotsnapshotBlock *types.Block // 快照 BlocksnapshotState *state.StateDB // 快照 StateDB// atomic status countersrunning int32 // The indicator whether the consensus engine is running or not.newTxs int32 // New arrival transaction count since last sealing work submitting.// noempty is the flag used to control whether the feature of pre-seal empty// block is enabled. The default value is false(pre-seal is enabled by default).// But in some special scenario the consensus engine will seal blocks instantaneously,// in this case this feature will add all empty blocks into canonical chain// non-stop and no real transaction will be included.noempty uint32// External functionsisLocalBlock func(block *types.Block) bool // Function used to determine whether the specified block is mined by local miner.// Test hooksnewTaskHook func(*task) // Method to call upon receiving a new sealing task.skipSealHook func(*task) bool // Method to decide whether skipping the sealing.fullTaskHook func() // Method to call before pushing the full sealing task.resubmitHook func(time.Duration, time.Duration) // Method to call upon updating resubmitting interval. } func newWorker(config *Config, chainConfig *params.ChainConfig, engine consensus.Engine, eth Backend, mux *event.TypeMux, isLocalBlock func(*types.Block) bool, init bool) *worker {worker := &worker{config: config,chainConfig: chainConfig,engine: engine,eth: eth,mux: mux,chain: eth.BlockChain(),isLocalBlock: isLocalBlock,localUncles: make(map[common.Hash]*types.Block),remoteUncles: make(map[common.Hash]*types.Block),unconfirmed: newUnconfirmedBlocks(eth.BlockChain(), miningLogAtDepth),pendingTasks: make(map[common.Hash]*task),txsCh: make(chan core.NewTxsEvent, txChanSize),chainHeadCh: make(chan core.ChainHeadEvent, chainHeadChanSize),chainSideCh: make(chan core.ChainSideEvent, chainSideChanSize),newWorkCh: make(chan *newWorkReq),taskCh: make(chan *task),resultCh: make(chan *types.Block, resultQueueSize),exitCh: make(chan struct{}),startCh: make(chan struct{}, 1),resubmitIntervalCh: make(chan time.Duration),resubmitAdjustCh: make(chan *intervalAdjust, resubmitAdjustChanSize),}// Subscribe NewTxsEvent for tx poolworker.txsSub = eth.TxPool().SubscribeNewTxsEvent(worker.txsCh)// Subscribe events for blockchainworker.chainHeadSub = eth.BlockChain().SubscribeChainHeadEvent(worker.chainHeadCh)worker.chainSideSub = eth.BlockChain().SubscribeChainSideEvent(worker.chainSideCh)// Sanitize recommit interval if the user-specified one is too short.recommit := worker.config.Recommitif recommit < minRecommitInterval {log.Warn("Sanitizing miner recommit interval", "provided", recommit, "updated", minRecommitInterval)recommit = minRecommitInterval}go worker.mainLoop()go worker.newWorkLoop(recommit)go worker.resultLoop()go worker.taskLoop()// Submit first work to initialize pending state.if init {worker.startCh <- struct{}{}}return worker }

// newWorkLoop 是一個獨立goroutine,用于在接收到的事件上提交新的挖掘工作。

func (w *worker) newWorkLoop(recommit time.Duration) {var (interrupt *int32minRecommit = recommit // minimal resubmit interval specified by user.timestamp int64 // timestamp for each round of mining.)timer := time.NewTimer(0)defer timer.Stop()<-timer.C // discard the initial tick// commit使用給定信號中止正在執(zhí)行的事務,并重新提交一個新的事務。commit := func(noempty bool, s int32) {if interrupt != nil {atomic.StoreInt32(interrupt, s)}interrupt = new(int32)w.newWorkCh <- &newWorkReq{interrupt: interrupt, noempty: noempty, timestamp: timestamp}timer.Reset(recommit)atomic.StoreInt32(&w.newTxs, 0)}//清除掛起的陳舊任務。clearPending := func(number uint64) {w.pendingMu.Lock()for h, t := range w.pendingTasks {if t.block.NumberU64()+staleThreshold <= number {delete(w.pendingTasks, h)}}w.pendingMu.Unlock()}for {select {//提交一個新的任務case <-w.startCh:clearPending(w.chain.CurrentBlock().NumberU64())timestamp = time.Now().Unix()commit(false, commitInterruptNewHead)case head := <-w.chainHeadCh:clearPending(head.Block.NumberU64())timestamp = time.Now().Unix()commit(false, commitInterruptNewHead)case <-timer.C:// If mining is running resubmit a new work cycle periodically to pull in// higher priced transactions. Disable this overhead for pending blocks.if w.isRunning() && (w.chainConfig.Clique == nil || w.chainConfig.Clique.Period > 0) {// Short circuit if no new transaction arrives.if atomic.LoadInt32(&w.newTxs) == 0 {timer.Reset(recommit)continue}commit(true, commitInterruptResubmit)}case interval := <-w.resubmitIntervalCh://由用戶顯式調(diào)整重新提交的時間間隔。if interval < minRecommitInterval {log.Warn("Sanitizing miner recommit interval", "provided", interval, "updated", minRecommitInterval)interval = minRecommitInterval}log.Info("Miner recommit interval update", "from", minRecommit, "to", interval)minRecommit, recommit = interval, intervalif w.resubmitHook != nil {w.resubmitHook(minRecommit, recommit)}case adjust := <-w.resubmitAdjustCh://通過反饋調(diào)整重新提交的時間間隔。if adjust.inc {before := recommittarget := float64(recommit.Nanoseconds()) / adjust.ratiorecommit = recalcRecommit(minRecommit, recommit, target, true)log.Trace("Increase miner recommit interval", "from", before, "to", recommit)} else {before := recommitrecommit = recalcRecommit(minRecommit, recommit, float64(minRecommit.Nanoseconds()), false)log.Trace("Decrease miner recommit interval", "from", before, "to", recommit)}if w.resubmitHook != nil {w.resubmitHook(minRecommit, recommit)}case <-w.exitCh:return}} }

// mainLoop是一個獨立的goroutine,根據(jù)接收到的事件重新生成密封任務。

func (w *worker) mainLoop() {defer w.txsSub.Unsubscribe()defer w.chainHeadSub.Unsubscribe()defer w.chainSideSub.Unsubscribe()for {select {//從newWorkLoop接受一個新任務case req := <-w.newWorkCh://提交新的任務w.commitNewWork(req.interrupt, req.noempty, req.timestamp)case ev := <-w.chainSideCh:// Short circuit for duplicate side blocksif _, exist := w.localUncles[ev.Block.Hash()]; exist {continue}if _, exist := w.remoteUncles[ev.Block.Hash()]; exist {continue}// Add side block to possible uncle block set depending on the author.if w.isLocalBlock != nil && w.isLocalBlock(ev.Block) {w.localUncles[ev.Block.Hash()] = ev.Block} else {w.remoteUncles[ev.Block.Hash()] = ev.Block}// If our mining block contains less than 2 uncle blocks,// add the new uncle block if valid and regenerate a mining block.if w.isRunning() && w.current != nil && w.current.uncles.Cardinality() < 2 {start := time.Now()if err := w.commitUncle(w.current, ev.Block.Header()); err == nil {var uncles []*types.Headerw.current.uncles.Each(func(item interface{}) bool {hash, ok := item.(common.Hash)if !ok {return false}uncle, exist := w.localUncles[hash]if !exist {uncle, exist = w.remoteUncles[hash]}if !exist {return false}uncles = append(uncles, uncle.Header())return false})w.commit(uncles, nil, true, start)}}case ev := <-w.txsCh://如果不進行挖掘,則將事務應用到掛起狀態(tài)。//注:所有收到的交易可能不是連續(xù)的已經(jīng)包含在當前挖掘塊中。這些交易將自動消除。if !w.isRunning() && w.current != nil {// If block is already full, abortif gp := w.current.gasPool; gp != nil && gp.Gas() < params.TxGas {continue}w.mu.RLock()coinbase := w.coinbasew.mu.RUnlock()txs := make(map[common.Address]types.Transactions)for _, tx := range ev.Txs {acc, _ := types.Sender(w.current.signer, tx)txs[acc] = append(txs[acc], tx)}txset := types.NewTransactionsByPriceAndNonce(w.current.signer, txs)tcount := w.current.tcountw.commitTransactions(txset, coinbase, nil)// Only update the snapshot if any new transactons were added// to the pending blockif tcount != w.current.tcount {w.updateSnapshot()}} else {//如果不進行挖掘,則將事務應用到掛起狀態(tài)。特殊情況,如果共識引擎為0周期派系(dev模式),//在這里提交挖礦,因為所有的空提交將被拒絕,預先密封(空提交)是禁用的。if w.chainConfig.Clique != nil && w.chainConfig.Clique.Period == 0 {w.commitNewWork(nil, true, time.Now().Unix())}}atomic.AddInt32(&w.newTxs, int32(len(ev.Txs)))......}} }

如果不進行挖掘,則將事務應用到掛起狀態(tài)。taskLoop是一個獨立的goroutine,用于從生成器獲取密封任務并將其推送到共識引擎。

// taskLoop is a standalone goroutine to fetch sealing task from the generator and // push them to consensus engine. func (w *worker) taskLoop() {var (stopCh chan struct{}prev common.Hash)// interrupt aborts the in-flight sealing task.interrupt := func() {if stopCh != nil {close(stopCh)stopCh = nil}}for {select {case task := <-w.taskCh:if w.newTaskHook != nil {w.newTaskHook(task)}//因重新提交而拒絕重復密封工作。sealHash := w.engine.SealHash(task.block.Header())if sealHash == prev {continue}// Interrupt previous sealing operationinterrupt()stopCh, prev = make(chan struct{}), sealHashif w.skipSealHook != nil && w.skipSealHook(task) {continue}w.pendingMu.Lock()w.pendingTasks[sealHash] = taskw.pendingMu.Unlock()if err := w.engine.Seal(w.chain, task.block, w.resultCh, stopCh); err != nil {log.Warn("Block sealing failed", "err", err)}case <-w.exitCh:interrupt()return}} }

resultLoop是一個獨立的goroutine處理密封結(jié)果提交并將相關(guān)數(shù)據(jù)刷新到數(shù)據(jù)庫。

func (w *worker) resultLoop() {for {select {case block := <-w.resultCh:// Short circuit when receiving empty result.if block == nil {continue}// Short circuit when receiving duplicate result caused by resubmitting.if w.chain.HasBlock(block.Hash(), block.NumberU64()) {continue}var (sealhash = w.engine.SealHash(block.Header())hash = block.Hash())w.pendingMu.RLock()task, exist := w.pendingTasks[sealhash]w.pendingMu.RUnlock()if !exist {log.Error("Block found but no relative pending task", "number", block.Number(), "sealhash", sealhash, "hash", hash)continue}// Different block could share same sealhash, deep copy here to prevent write-write conflict.var (receipts = make([]*types.Receipt, len(task.receipts))logs []*types.Log)for i, receipt := range task.receipts {// add block location fieldsreceipt.BlockHash = hashreceipt.BlockNumber = block.Number()receipt.TransactionIndex = uint(i)receipts[i] = new(types.Receipt)*receipts[i] = *receipt// Update the block hash in all logs since it is now available and not when the// receipt/log of individual transactions were created.for _, log := range receipt.Logs {log.BlockHash = hash}logs = append(logs, receipt.Logs...)}// Commit block and state to database._, err := w.chain.WriteBlockWithState(block, receipts, logs, task.state, true)if err != nil {log.Error("Failed writing block to chain", "err", err)continue}log.Info("Successfully sealed new block", "number", block.Number(), "sealhash", sealhash, "hash", hash,"elapsed", common.PrettyDuration(time.Since(task.createdAt)))// 廣播塊并宣布鏈插入事件w.mux.Post(core.NewMinedBlockEvent{Block: block})// 將該塊插入到resultLoop中等待的塊中以進行確認w.unconfirmed.Insert(block.NumberU64(), block.Hash())case <-w.exitCh:return}} }

為當前周期創(chuàng)建一個新環(huán)境。

func (w *worker) makeCurrent(parent *types.Block, header *types.Header) error {state, err := w.chain.StateAt(parent.Root())if err != nil {return err}env := &environment{signer: types.NewEIP155Signer(w.chainConfig.ChainID),state: state,ancestors: mapset.NewSet(),family: mapset.NewSet(),uncles: mapset.NewSet(),header: header,}// when 08 is processed ancestors contain 07 (quick block)for _, ancestor := range w.chain.GetBlocksFromHash(parent.Hash(), 7) {for _, uncle := range ancestor.Uncles() {env.family.Add(uncle.Hash())}env.family.Add(ancestor.Hash())env.ancestors.Add(ancestor.Hash())}// Keep track of transactions which return errors so they can be removedenv.tcount = 0w.current = envreturn nil }

更新掛起的快照塊和狀態(tài)。注意:此函數(shù)假設(shè)當前變量是線程安全的。

func (w *worker) updateSnapshot() {w.snapshotMu.Lock()defer w.snapshotMu.Unlock()var uncles []*types.Headerw.current.uncles.Each(func(item interface{}) bool {hash, ok := item.(common.Hash)if !ok {return false}uncle, exist := w.localUncles[hash]if !exist {uncle, exist = w.remoteUncles[hash]}if !exist {return false}uncles = append(uncles, uncle.Header())return false})w.snapshotBlock = types.NewBlock(w.current.header,w.current.txs,uncles,w.current.receipts,new(trie.Trie),)w.snapshotState = w.current.state.Copy() } func (w *worker) commitTransactions(txs *types.TransactionsByPriceAndNonce, coinbase common.Address, interrupt *int32) bool {// Short circuit if current is nilif w.current == nil {return true}if w.current.gasPool == nil {w.current.gasPool = new(core.GasPool).AddGas(w.current.header.GasLimit)}var coalescedLogs []*types.Logfor {//在以下三種情況下,我們將中斷事務的執(zhí)行。//(1)新頭塊事件到達時,中斷信號為1//(2)worker啟動或重啟時,中斷信號為1// (3) worker用任何新到達的事務重新創(chuàng)建挖掘塊,中斷信號為2。//對于前兩種情況,半成品將被丟棄。//對于第三種情況,半成品工作將提交給consensus engine。if interrupt != nil && atomic.LoadInt32(interrupt) != commitInterruptNone {// Notify resubmit loop to increase resubmitting interval due to too frequent commits.if atomic.LoadInt32(interrupt) == commitInterruptResubmit {ratio := float64(w.current.header.GasLimit-w.current.gasPool.Gas()) / float64(w.current.header.GasLimit)if ratio < 0.1 {ratio = 0.1}w.resubmitAdjustCh <- &intervalAdjust{ratio: ratio,inc: true,}}return atomic.LoadInt32(interrupt) == commitInterruptNewHead}// If we don't have enough gas for any further transactions then we're doneif w.current.gasPool.Gas() < params.TxGas {log.Trace("Not enough gas for further transactions", "have", w.current.gasPool, "want", params.TxGas)break}// Retrieve the next transaction and abort if all donetx := txs.Peek()if tx == nil {break}// Error may be ignored here. The error has already been checked// during transaction acceptance is the transaction pool.//// We use the eip155 signer regardless of the current hf.from, _ := types.Sender(w.current.signer, tx)// Check whether the tx is replay protected. If we're not in the EIP155 hf// phase, start ignoring the sender until we do.if tx.Protected() && !w.chainConfig.IsEIP155(w.current.header.Number) {log.Trace("Ignoring reply protected transaction", "hash", tx.Hash(), "eip155", w.chainConfig.EIP155Block)txs.Pop()continue}// Start executing the transactionw.current.state.Prepare(tx.Hash(), common.Hash{}, w.current.tcount)logs, err := w.commitTransaction(tx, coinbase)......if !w.isRunning() && len(coalescedLogs) > 0 {// We don't push the pendingLogsEvent while we are mining. The reason is that// when we are mining, the worker will regenerate a mining block every 3 seconds.// In order to avoid pushing the repeated pendingLog, we disable the pending log pushing.// make a copy, the state caches the logs and these logs get "upgraded" from pending to mined// logs by filling in the block hash when the block was mined by the local miner. This can// cause a race condition if a log was "upgraded" before the PendingLogsEvent is processed.cpy := make([]*types.Log, len(coalescedLogs))for i, l := range coalescedLogs {cpy[i] = new(types.Log)*cpy[i] = *l}w.pendingLogsFeed.Send(cpy)}//如果當前間隔較大,通知重新提交循環(huán)以減少重新提交的時間間隔而不是用戶指定的。if interrupt != nil {w.resubmitAdjustCh <- &intervalAdjust{inc: false}}return false } func (w *worker) commitTransaction(tx *types.Transaction, coinbase common.Address) ([]*types.Log, error) {snap := w.current.state.Snapshot()//嘗試將一個事務應用到給定的狀態(tài)數(shù)據(jù)庫并為其環(huán)境使用輸入?yún)?shù)。它會返回收據(jù)對于事務,使用了gas,如果事務失敗則出現(xiàn)錯誤,表示該塊無效。receipt, err := core.ApplyTransaction(w.chainConfig, w.chain, &coinbase, w.current.gasPool, w.current.state, w.current.header, tx, &w.current.header.GasUsed, *w.chain.GetVMConfig())if err != nil {w.current.state.RevertToSnapshot(snap)return nil, err}w.current.txs = append(w.current.txs, tx)w.current.receipts = append(w.current.receipts, receipt)return receipt.Logs, nil }

基于父塊生成幾個新的密封任務。

func (w *worker) commitNewWork(interrupt *int32, noempty bool, timestamp int64) {w.mu.RLock()defer w.mu.RUnlock()tstart := time.Now()parent := w.chain.CurrentBlock()if parent.Time() >= uint64(timestamp) {timestamp = int64(parent.Time() + 1)}// this will ensure we're not going off too far in the futureif now := time.Now().Unix(); timestamp > now+1 {wait := time.Duration(timestamp-now) * time.Secondlog.Info("Mining too far in the future", "wait", common.PrettyDuration(wait))time.Sleep(wait)}num := parent.Number()header := &types.Header{ParentHash: parent.Hash(),Number: num.Add(num, common.Big1),GasLimit: core.CalcGasLimit(parent, w.config.GasFloor, w.config.GasCeil),Extra: w.extra,Time: uint64(timestamp),}// 只有在我們的共識引擎運行時才設(shè)置coinbase(避免虛假的塊獎勵)if w.isRunning() {if w.coinbase == (common.Address{}) {log.Error("Refusing to mine without etherbase")return}header.Coinbase = w.coinbase}if err := w.engine.Prepare(w.chain, header); err != nil {log.Error("Failed to prepare header for mining", "err", err)return}// 如果硬分叉,請檢查是否覆蓋額外數(shù)據(jù)if daoBlock := w.chainConfig.DAOForkBlock; daoBlock != nil {// Check whether the block is among the fork extra-override rangelimit := new(big.Int).Add(daoBlock, params.DAOForkExtraRange)if header.Number.Cmp(daoBlock) >= 0 && header.Number.Cmp(limit) < 0 {// Depending whether we support or oppose the fork, override differentlyif w.chainConfig.DAOForkSupport {header.Extra = common.CopyBytes(params.DAOForkBlockExtra)} else if bytes.Equal(header.Extra, params.DAOForkBlockExtra) {header.Extra = []byte{} // If miner opposes, don't let it use the reserved extra-data}}}// Could potentially happen if starting to mine in an odd state.err := w.makeCurrent(parent, header)if err != nil {log.Error("Failed to create mining context", "err", err)return}// Create the current work task and check any fork transitions neededenv := w.currentif w.chainConfig.DAOForkSupport && w.chainConfig.DAOForkBlock != nil && w.chainConfig.DAOForkBlock.Cmp(header.Number) == 0 {misc.ApplyDAOHardFork(env.state)}// Accumulate the uncles for the current blockuncles := make([]*types.Header, 0, 2)commitUncles := func(blocks map[common.Hash]*types.Block) {// Clean up stale uncle blocks firstfor hash, uncle := range blocks {if uncle.NumberU64()+staleThreshold <= header.Number.Uint64() {delete(blocks, hash)}}for hash, uncle := range blocks {if len(uncles) == 2 {break}if err := w.commitUncle(env, uncle.Header()); err != nil {log.Trace("Possible uncle rejected", "hash", hash, "reason", err)} else {log.Debug("Committing new uncle to block", "hash", hash)uncles = append(uncles, uncle.Header())}}}// Prefer to locally generated unclecommitUncles(w.localUncles)commitUncles(w.remoteUncles)//根據(jù)臨時復制的狀態(tài)創(chuàng)建一個空塊提前封口,無需等待封口執(zhí)行完成。if !noempty && atomic.LoadUint32(&w.noempty) == 0 {w.commit(uncles, nil, false, tstart)}// Fill the block with all available pending transactions.pending, err := w.eth.TxPool().Pending()if err != nil {log.Error("Failed to fetch pending transactions", "err", err)return}// Short circuit if there is no available pending transactions.// But if we disable empty precommit already, ignore it. Since// empty block is necessary to keep the liveness of the network.if len(pending) == 0 && atomic.LoadUint32(&w.noempty) == 0 {w.updateSnapshot()return}// Split the pending transactions into locals and remoteslocalTxs, remoteTxs := make(map[common.Address]types.Transactions), pendingfor _, account := range w.eth.TxPool().Locals() {if txs := remoteTxs[account]; len(txs) > 0 {delete(remoteTxs, account)localTxs[account] = txs}}if len(localTxs) > 0 {txs := types.NewTransactionsByPriceAndNonce(w.current.signer, localTxs)if w.commitTransactions(txs, w.coinbase, interrupt) {return}}if len(remoteTxs) > 0 {txs := types.NewTransactionsByPriceAndNonce(w.current.signer, remoteTxs)if w.commitTransactions(txs, w.coinbase, interrupt) {return}}w.commit(uncles, w.fullTaskHook, true, tstart) }

計算ETH的總消費費用。區(qū)塊交易和收據(jù)必須有相同的順序。

func totalFees(block *types.Block, receipts []*types.Receipt) *big.Float {feesWei := new(big.Int)for i, tx := range block.Transactions() {feesWei.Add(feesWei, new(big.Int).Mul(new(big.Int).SetUint64(receipts[i].GasUsed), tx.GasPrice()))}return new(big.Float).Quo(new(big.Float).SetInt(feesWei), new(big.Float).SetInt(big.NewInt(params.Ether))) }

總結(jié)

以上是生活随笔為你收集整理的以太坊源码系列之miner解析(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

亚洲天堂毛片 | 欧美黑人性猛交 | 黄色的网站在线 | 天天色成人 | 欧美日韩二三区 | 色88久久| 一区二区三区电影大全 | 日韩精品在线观看视频 | www视频免费在线观看 | 欧美韩日视频 | 成人亚洲精品国产www | 黄色在线观看www | www.一区二区三区 | 色综合久久88色综合天天免费 | 韩国三级av在线 | 日韩有码在线播放 | 九九激情视频 | 91资源在线视频 | 久久伊人操 | 夜夜躁天天躁很躁波 | 午夜精品一区二区三区免费 | 一本之道乱码区 | 免费观看91视频大全 | 天天在线操| 亚洲成aⅴ人在线观看 | 久久精品亚洲精品国产欧美 | av中文在线播放 | 国产一区二区在线免费观看 | 亚洲成人在线免费 | 亚洲午夜精品一区二区三区电影院 | 色婷在线| 亚洲视频免费视频 | 国产成人精品一二三区 | 美女网站视频一区 | 日韩啪啪小视频 | 成人黄大片 | 国产午夜精品一区二区三区嫩草 | 精品国产一区二区三区四区在线观看 | 国产亚洲永久域名 | 91成版人在线观看入口 | 色姑娘综合天天 | 天天射天天射天天射 | 久久视频在线视频 | 国产精品粉嫩 | 精品欧美日韩 | 国产精品视频全国免费观看 | 久久视频国产精品免费视频在线 | 久久国产精品网站 | 国产精品一区在线观看 | 亚洲91视频| 日韩精品一区二区三区高清免费 | 国产精品久久久久久久久久99 | 亚洲视频在线视频 | 亚洲综合视频在线 | 久久久久精 | 99热最新 | 98涩涩国产露脸精品国产网 | 欧美激情h | 日韩在线一区二区免费 | 国产对白av | 国产午夜三级 | 亚洲国产精品一区二区尤物区 | 中文字幕成人 | 免费成人在线电影 | 96视频免费在线观看 | 99九九免费视频 | 大型av综合网站 | 尤物九九久久国产精品的分类 | 亚州日韩中文字幕 | 99热国内精品 | 99热这里精品 | 亚洲国产97在线精品一区 | 国产亚洲一区二区在线观看 | 在线高清 | 久久成人高清视频 | 成人精品一区二区三区电影免费 | 中文字幕一区三区 | 丁香六月综合网 | 色视频在线观看 | 五月激情丁香图片 | 国产精品久久久久久影院 | 国产午夜精品一区二区三区 | 成人国产精品久久久久久亚洲 | 亚洲女同ⅹxx女同tv | 丁香激情综合久久伊人久久 | 国产高清不卡 | 97在线视| 亚洲二级片| 免费91麻豆精品国产自产在线观看 | www.人人干| 香蕉影院在线播放 | 亚洲免费av一区二区 | 丁香激情五月 | 99精品国产福利在线观看免费 | 亚洲综合色视频 | 99在线国产 | 日日射av| 97福利社 | 久久久久观看 | av黄色av| 99久久精品网 | 骄小bbw搡bbbb揉bbbb | 国产精品久久久免费 | 亚洲综合色婷婷 | 欧美激情综合五月色丁香小说 | www.午夜视频 | 久久国产精品一区二区三区 | 黄色亚洲大片免费在线观看 | 美女黄频免费 | 国产99精品在线观看 | 一区二区三区四区五区在线视频 | 五月婷婷六月丁香激情 | 久久久久福利视频 | 久久成人资源 | 五月婷婷六月丁香 | 亚洲 精品在线视频 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 四虎成人精品 | 日韩免费视频观看 | 91精品国产一区 | 在线观看一区视频 | 97操碰| 在线视频 日韩 | 国产精品系列在线 | 欧美日韩免费一区二区 | 亚洲精品高清视频在线观看 | 日韩女同一区二区三区在线观看 | 午夜.dj高清免费观看视频 | 国产在线观看国语版免费 | 久久er99热精品一区二区三区 | 亚洲特级片 | 午夜视频在线瓜伦 | 久草在线网址 | 精品国产_亚洲人成在线 | 国产老熟| 日韩av电影网站在线观看 | 天天操天天操一操 | 久久高清国产视频 | 在线观看av的网站 | 国产精品1024 | 奇米影视777影音先锋 | 激情av资源网 | 五月天电影免费在线观看一区 | 偷拍区另类综合在线 | 成人毛片100免费观看 | av在线免费在线观看 | 91精品视频免费看 | 中文字幕观看av | 亚洲精品国产区 | 国产美腿白丝袜足在线av | 久久精品中文视频 | 日韩精品一区二区在线视频 | 国产精品欧美激情在线观看 | 欧美午夜a | 欧美精品中文字幕亚洲专区 | 日韩专区在线 | 久久成| 韩国av一区二区三区在线观看 | 久久久久一区二区三区 | 精品主播网红福利资源观看 | 亚洲aⅴ一区二区三区 | 国产日韩欧美在线观看 | 99国产精品免费网站 | 亚洲专区欧美专区 | 永久免费av在线播放 | 九九九九色 | 99精品国产视频 | 国产一级二级视频 | 亚洲精品乱码久久久久久高潮 | 精品伊人久久久 | 九九九电影免费看 | 国产不卡一二三区 | 美腿丝袜一区二区三区 | 五月婷婷色播 | 正在播放 久久 | 国产精品欧美一区二区 | 婷婷四房综合激情五月 | 香蕉视频在线视频 | 亚洲精品视频在线免费 | 天天色欧美 | 国产精品扒开做爽爽的视频 | 久久精品视频播放 | 国产精品一区二区久久精品 | 女女av在线 | 激情大尺度视频 | 免费www视频 | 97人人添人澡人人爽超碰动图 | 久久免费播放 | 久久久一本精品99久久精品 | 91精品网站在线观看 | 欧美动漫一区二区三区 | 贫乳av女优大全 | 在线视频你懂得 | 日韩高清在线一区二区三区 | 日韩视频在线不卡 | 久热香蕉视频 | 欧美精品中文在线免费观看 | 亚洲干 | 久草在线看片 | 国产在线p| 久操视频在线免费看 | 中文字幕有码在线 | 久久国产精品99久久人人澡 | 国内精自线一二区永久 | 丁香电影小说免费视频观看 | 国产精品久久视频 | 2020天天干夜夜爽 | 国产中文字幕一区 | 天天操天天干天天操天天干 | 婷婷色综| 亚洲视频免费在线 | 性色视频在线 | 最新av免费 | 在线免费观看视频 | 婷婷色中文 | 毛片永久免费 | 男女免费视频观看 | 国产在线观看网站 | 婷婷丁香在线 | 久久久久久久久福利 | 天天曰天天干 | 人人搞人人干 | 国产丝袜一区二区三区 | 精品999在线观看 | 永久免费的啪啪网站免费观看浪潮 | 国产一卡二卡在线 | 日韩精品大片 | 久久久久激情视频 | 97在线视频免费播放 | 丁香婷婷色| 在线播放日韩av | 久久综合干| 黄色成人av在线 | 婷婷亚洲最大 | 欧美激情视频一区二区三区 | 欧美精品久久久久久久久老牛影院 | 五月婷婷狠狠 | 91精品黄色| 日韩黄色软件 | 国产一级久久久 | 成年人黄色在线观看 | av中文字幕免费在线观看 | 日韩成人精品一区二区三区 | 黄色三几片 | 一区二区三区免费网站 | 96超碰在线 | 久久精品国产第一区二区三区 | 亚洲精品国产拍在线 | 青青河边草免费观看完整版高清 | 狠狠色综合网站久久久久久久 | 日日夜夜操av | 免费观看久久 | 中文字幕日韩精品有码视频 | 久久无码精品一区二区三区 | 国产91在线免费视频 | 亚洲国产字幕 | www.久久久.cum| 久久国产亚洲视频 | 中文字幕亚洲综合久久五月天色无吗'' | 成人一级黄色片 | 亚洲国产视频在线 | 国产97视频在线 | 人人澡人人澡人人 | 绯色av一区 | 亚洲 欧美日韩 国产 中文 | 国产精品12 | 久久国产精品久久精品 | 亚洲激情在线播放 | 91精品国自产在线偷拍蜜桃 | 国产精品黄网站在线观看 | 日韩久久久久久久久久久久 | 不卡的av电影 | 国产精品一区在线观看你懂的 | 日日精品| 成人午夜剧场在线观看 | 亚洲免费公开视频 | 天天综合久久 | 国产一区二区三区四区大秀 | 日韩高清免费在线 | 日本丶国产丶欧美色综合 | 成人a毛片 | 亚洲黄色软件 | 一个色综合网站 | 欧美激情视频在线观看免费 | 国产黄色理论片 | 国产精品久久久久久久99 | 一区二区视频在线观看免费 | 在线a人片免费观看视频 | 久久刺激视频 | 免费福利在线视频 | 国产亚洲在 | 国产成人三级三级三级97 | 高清av免费观看 | 99视频在线免费看 | 亚洲国产无 | 日韩一区二区三区高清免费看看 | 久久免费av | 欧美尹人 | 日韩理论片中文字幕 | 国产手机视频在线播放 | 国产精品国产三级国产专区53 | 2018好看的中文在线观看 | 久久1区| 狠狠干电影 | 波多野结衣视频一区二区 | 色吊丝在线永久观看最新版本 | 黄色软件在线观看 | 经典三级一区 | 操高跟美女 | 深爱五月激情五月 | 日韩特黄一级欧美毛片特黄 | 亚洲精品网页 | 久久99国产精品视频 | 九色最新网址 | 日韩av不卡在线播放 | 成人综合婷婷国产精品久久免费 | 日本精品va在线观看 | 日韩精品在线观看视频 | 四虎成人精品永久免费av九九 | 国产精品一区二区精品视频免费看 | 狠狠色噜噜狠狠狠狠2022 | 久久男人免费视频 | 开心激情网五月天 | 久久久久亚洲精品 | free. 性欧美.com | 最新av免费在线 | 超碰成人网 | 中文字幕91 | 亚洲一区二区精品在线 | 欧美精品国产精品 | 国产色网| 国产专区视频 | 国产成人一区二区三区在线观看 | 少妇按摩av | 日韩毛片在线免费观看 | 国产精品久久一区二区三区不卡 | 日免费视频 | 日韩中文久久 | 特级免费毛片 | 在线免费观看的av | 精品黄色在线观看 | 精品视频免费观看 | 亚洲做受高潮欧美裸体 | 麻豆视屏| www.xxx.性狂虐| 久久久久久久久久久久国产精品 | 久久精品看 | 亚洲精品成人av在线 | 一区在线播放 | 成人一级电影在线观看 | 丁香婷婷成人 | 亚洲精选国产 | a在线一区 | 激情综合五月天 | 色婷婷影视 | 夜夜骑首页| 99精品免费在线 | 日韩啪啪小视频 | 日产乱码一二三区别在线 | 美女网站视频色 | 麻豆精品在线视频 | 国产精品九九九九九 | 日韩高清国产精品 | 黄色小视频在线观看免费 | 欧美少妇xx | 欧美一区免费观看 | 久久久国产精品电影 | 精品一区二区久久久久久久网站 | 亚洲精品国产精品久久99热 | 天天五月天色 | 国产精品亚洲a | 日韩av不卡在线 | 国产一区二区三区视频在线 | 五月婷网| 色停停五月天 | 中文字幕免费在线看 | 国产99久久99热这里精品5 | 黄色三级免费网址 | 黄色亚洲在线 | 奇米影视999 | 精品在线看 | 99热这里只有精品免费 | 一级特黄aaa大片在线观看 | 99久久一区 | 免费日韩电影 | 成人看片| www.午夜色.com | 亚洲精品在线免费 | 成人av动漫在线 | 久久精品国产亚洲 | 亚洲国产日韩在线 | 国产精品久久二区 | 在线视频 精品 | 国内精品久久久久久久久久清纯 | 欧美成人中文字幕 | 成人av中文字幕 | 国产精品 亚洲精品 | 欧美另类xxx | 国产91精品久久久久久 | 国产精品美女久久久久久 | 日日摸日日碰 | 九九视频免费 | 国产美女精品视频 | 国产精品美女999 | 99热国产在线中文 | 亚洲专区欧美 | 精品久久久久国产免费第一页 | 日韩av在线看 | 美女天天操 | 一区二区三区中文字幕在线观看 | 91久久久久久久一区二区 | 操操操综合 | 天天av资源 | 婷婷精品国产一区二区三区日韩 | 午夜色站 | 色婷婷狠 | 99re亚洲国产精品 | 二区三区在线视频 | 亚洲国产精品第一区二区 | 久久久免费视频播放 | 国产精品www| 亚洲乱码久久久 | 亚洲国产经典视频 | 黄色毛片视频免费 | 日日操天天操夜夜操 | 欧美日本不卡视频 | 色姑娘综合天天 | 天天玩天天干天天操 | 99re国产视频 | 爱爱一区| 久久久久久久久久网站 | 久久影视中文字幕 | 国产资源网站 | 婷婷成人综合 | 久久综合免费 | 欧美性生活久久 | 美女网站久久 | 九九激情视频 | 黄色tv视频 | 久久精品视频免费观看 | 亚洲理论电影网 | 国产在线不卡视频 | 久久欧美视频 | 国产精品午夜久久久久久99热 | 日韩在线电影观看 | 久久香蕉电影网 | 成人免费视频播放 | 久草视频在线免费播放 | 99久久精品国产亚洲 | 国产99在线播放 | 国产精品永久免费观看 | 夜夜嗨av色一区二区不卡 | 久久伊人综合 | 婷婷视频 | 一区二区三区在线观看免费 | 天天操夜操 | 国产精品毛片一区视频 | 成人超碰97 | 国产在线精品国自产拍影院 | 中文字幕在线视频免费播放 | 天天操天天操天天操 | 看污网站 | av网站在线观看免费 | 日本高清dvd| 人操人| 国产不卡在线视频 | 亚洲精品国产拍在线 | 国产一区二区在线免费 | 国产精品 中文字幕 亚洲 欧美 | 日韩中字在线观看 | 激情综合啪啪 | 在线观看亚洲视频 | 色瓜| 久久线视频 | 亚洲午夜精品久久久久久久久久久久 | 国产中文| 久久婷婷国产色一区二区三区 | a天堂最新版中文在线地址 久久99久久精品国产 | 日躁夜躁狠狠躁2001 | 911久久香蕉国产线看观看 | 日韩欧美一区二区在线观看 | 亚洲激情久久 | av+在线播放在线播放 | 国产五月天婷婷 | 97视频资源 | 91激情视频在线观看 | 91亚洲精品视频 | 搡bbbb搡bbb视频 | 在线综合 亚洲 欧美在线视频 | 91精品啪在线观看国产81旧版 | 91免费在线 | 久久精品网站免费观看 | 国产精品第2页 | 国产日韩欧美在线观看视频 | 丁香六月国产 | 丁香五香天综合情 | 久久99精品一区二区三区三区 | 又粗又长又大又爽又黄少妇毛片 | 精品国产免费av | 亚洲精品资源在线观看 | 日本精品久久久一区二区三区 | 色综合天天综合网国产成人网 | 欧美日韩免费观看一区二区三区 | 丰满少妇在线观看资源站 | 国产日韩精品一区二区 | 亚洲精品午夜久久久久久久久久久 | 亚洲精品免费视频 | 天天干夜夜爽 | 麻豆视传媒官网免费观看 | 天天干天天爽 | 欧美了一区在线观看 | 天堂视频一区 | 最新国产一区二区三区 | 91黄色在线观看 | 一区二区中文字幕在线播放 | 激情视频一区二区三区 | 蜜桃久久久 | 国内免费久久久久久久久久久 | 在线观看亚洲国产精品 | 在线天堂视频 | 日韩一级成人av | 天天操天天操天天 | 久久国产精品一区二区 | 99久高清在线观看视频99精品热在线观看视频 | 欧美一级电影免费观看 | 激情五月色播五月 | 久久久久久久久久影院 | 香蕉视频在线免费看 | 日本中文字幕网址 | 99精品欧美一区二区蜜桃免费 | 超碰97成人| 91av视频在线观看免费 | 天天操天天干天天插 | 国产精品岛国久久久久久久久红粉 | 激情网五月天 | 欧美91av| 亚洲精品国产综合99久久夜夜嗨 | 国产资源中文字幕 | 久久99亚洲网美利坚合众国 | 日韩av二区 | 青青视频一区 | 综合亚洲视频 | 亚洲第一av在线 | 免费午夜视频在线观看 | 日本精品久久久一区二区三区 | 不卡电影免费在线播放一区 | 丰满少妇高潮在线观看 | 国产一区免费看 | 欧美成人高清 | 午夜精品一二三区 | 99视频在线免费播放 | 91成人免费在线 | 婷婷www| 91精品国自产在线偷拍蜜桃 | 天天操夜操 | 免费69视频| 午夜美女av| 久久综合国产伦精品免费 | 亚州av网站大全 | 日韩av男人的天堂 | 天天草网站 | 91禁在线观看 | 久久精品五月 | 成人一级视频在线观看 | 99re国产视频 | 黄色小说网站在线 | 人人爽人人爽人人片 | 久久久午夜剧场 | 免费日韩一区二区三区 | 国产精品久久久久久久毛片 | 亚洲毛片一区二区三区 | 国产剧情一区二区在线观看 | 久久精品欧美一区 | 911国产 | 欧美日韩xx| 狠狠色丁香久久婷婷综 | 国产午夜精品一区二区三区在线观看 | 999久久久精品视频 日韩高清www | 亚洲最新av在线网址 | 久久99欧美| 少妇高潮冒白浆 | 亚洲激情在线播放 | 国产精品福利在线观看 | 国产精品久久久久免费 | 国产麻豆精品久久一二三 | 99精品热视频只有精品10 | 精品久久久久久国产偷窥 | 免费看麻豆 | 久久系列 | 日韩一级黄色片 | 色婷婷免费视频 | 天天综合91 | 91中文字幕在线播放 | 国产精品一区二区免费在线观看 | 婷婷色影院 | 91av久久 | 婷婷国产在线观看 | 国产一区二区三区高清播放 | 99精品视频免费观看视频 | 日韩a在线播放 | 一区二区视频在线免费观看 | www.色爱 | 热久久这里只有精品 | 亚洲一区二区三区在线看 | 四虎国产精品免费观看视频优播 | 中文字幕之中文字幕 | av网站地址 | 国产99久久久国产精品 | 人人爱天天操 | 亚洲色图22p| 精品人妖videos欧美人妖 | 久久综合色一综合色88 | 精品99久久久久久 | 亚洲最新av在线网址 | 免费一级片视频 | 日韩在线电影一区 | 激情在线网站 | 四虎成人精品永久免费av | 国产视频精品免费 | 91丨精品丨蝌蚪丨白丝jk | 免费看一级 | 久草视频免费 | 久久国产精品一区二区三区 | 99re热精品视频| 国产黄色精品在线 | 少妇搡bbbb搡bbb搡忠贞 | a极黄色片 | 精品国产伦一区二区三区免费 | aa一级片 | 久久久精品 一区二区三区 国产99视频在线观看 | 久久久精选 | 日韩视频图片 | 18av在线视频 | 国产不卡免费av | 欧美精品乱码久久久久久 | 91精品国产福利 | 亚洲欧美国产精品18p | 国产亚洲精品成人av久久影院 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 国产精品嫩草影视久久久 | 天天看天天干天天操 | 国产免费人成xvideos视频 | 超碰在线人人爱 | 欧美污污视频 | 亚洲三级在线免费观看 | 国产精品视频全国免费观看 | 欧美男男激情videos | 国产剧情一区二区 | 五月天综合在线 | 欧美先锋影音 | 精品免费久久久久 | 亚洲精品国偷自产在线91正片 | 最近日韩中文字幕中文 | 久久高清视频免费 | 夜夜夜草 | 久久久18| 日韩欧美在线观看一区二区三区 | 国产精品成人自产拍在线观看 | 国产精品自产拍 | 九色精品免费永久在线 | 精品成人久久 | 中文字幕刺激在线 | 91毛片在线观看 | 激情综合网婷婷 | 久久免费在线观看视频 | 黄色成人在线网站 | 日韩精品久久久免费观看夜色 | 高清不卡一区二区在线 | 色噜噜在线观看 | 免费的黄色的网站 | 免费福利在线 | 日韩丝袜视频 | ,久久福利影视 | 在线观看中文字幕第一页 | 欧美性色网站 | 日韩一区二区免费在线观看 | 在线99视频 | 狠狠色伊人亚洲综合网站野外 | 国产主播大尺度精品福利免费 | 日韩色在线 | 狠狠躁夜夜躁人人爽视频 | 亚洲欧美日韩国产一区二区 | 日韩大片在线免费观看 | 亚洲精品久久久蜜桃 | 久久精品欧美 | 国产精品美 | 欧美日韩在线视频免费 | 国产精品专区在线 | 日韩免费观看一区二区 | 911免费视频 | 99精品久久精品一区二区 | 日韩一区二区久久 | 国内精品久久久久久久久 | 国产最新在线 | 久久高清免费 | 九九免费在线视频 | 久久se视频 | 最新超碰 | 欧美日韩国产精品一区二区 | 三级黄色网址 | 国产一区二区三区免费在线观看 | 欧美午夜一区二区福利视频 | 国产精品对白一区二区三区 | 中文av在线免费观看 | 亚洲狠狠操 | 精品国产乱码一区二 | 天堂av免费在线 | 亚洲开心色 | 成年人视频在线观看免费 | 人人射av | 精品九九久久 | 国产123区在线观看 国产精品麻豆91 | 在线日韩亚洲 | 久久99国产精品久久99 | 99在线热播精品免费 | 精品久久久久久国产偷窥 | 国产精品第三页 | 97色婷婷成人综合在线观看 | 日韩欧三级 | 久久精品视频免费 | 日日夜夜综合网 | 国产亚洲精品成人av久久ww | 国产精品少妇 | 国产日本三级 | 午夜美女av | 一本一道久久a久久精品蜜桃 | 夜夜嗨av色一区二区不卡 | 日韩精品高清视频 | 日韩欧美v | avlulu久久精品 | 免费的黄色的网站 | 亚洲精品乱码久久久久久蜜桃91 | 91成人精品国产刺激国语对白 | 国产精品免费观看在线 | 国产精品久久久久久一区二区三区 | 国产精品久久久久aaaa | 国产第一页精品 | 精品国产一区二区久久 | 人人干天天射 | 日韩系列 | 国产尤物在线视频 | 色欧美88888久久久久久影院 | 国产高清一区二区 | 99久久精品国 | 一区精品久久 | 97操碰| 激情丁香 | 婷婷丁香激情网 | 亚洲精品99久久久久中文字幕 | 中文字幕888| 久久久91精品国产一区二区精品 | 精品国产乱子伦一区二区 | 在线黄av | 1000部18岁以下禁看视频 | 天天摸天天舔天天操 | 日韩在线观看第一页 | 久久免费视频网站 | 久久黄页| 99视频在线观看一区三区 | 亚洲影院国产 | 午夜美女av | 永久免费的av电影 | 成人在线电影观看 | 色瓜| 9草在线| 成年人在线看视频 | 91亚洲影院 | 日韩精品一区二区三区不卡 | 亚洲精品日韩一区二区电影 | 日韩在线国产精品 | 亚洲激情p | 久久精品导航 | 一区二区理论片 | 在线国产99 | 91九色精品 | 国产成人一区二区啪在线观看 | 色在线视频网 | 人人涩| 福利视频一二区 | 超碰在线人人艹 | 99热在 | 国产亚洲视频在线免费观看 | 国产精品久久二区 | 999国内精品永久免费视频 | 国产精品亚洲片在线播放 | 日韩av中文字幕在线 | 久久久久福利视频 | 欧美另类性| 一本一道波多野毛片中文在线 | 日韩av视屏在线观看 | 久久99精品视频 | 国产精品女人久久久 | 国产成人在线播放 | 91九色蝌蚪在线 | 国产超碰在线观看 | 免费视频色 | 91看片黄色| 免费在线观看成人小视频 | 国产色综合天天综合网 | 深爱激情婷婷网 | 99热999 | 亚洲免费av一区二区 | 激情综合色播五月 | 香蕉网在线 | 狠狠色狠狠综合久久 | av福利在线导航 | 在线观看亚洲专区 | 一区二区三区中文字幕在线观看 | 久久在线观看视频 | 久久久久夜色 | 欧美激情综合色 | 91爱看片 | 国产精品久免费的黄网站 | 亚洲精品国产精品乱码不99热 | 精品国产区在线 | 亚洲综合精品视频 | 免费久久久久久久 | www黄| 精品国产一区二区三区久久久蜜月 | 日韩午夜精品 | .国产精品成人自产拍在线观看6 | 亚洲欧洲美洲av | 美女黄频 | 在线观看免费成人av | 国产91综合一区在线观看 | 天天干天天干天天干 | 亚洲1区在线 | 人人狠| 中文av资源站 | 国产精品系列在线观看 | 国产视频二区三区 | 婷婷在线色 | 日韩av图片| 五月婷婷色播 | 国产精品av免费观看 | 在线播放 日韩专区 | 91新人在线观看 | 亚洲日本中文字幕在线观看 | www.888av| a级一a一级在线观看 | 成人一区二区在线 | 中文字幕网站视频在线 | 超碰99在线 | 成人久久久久久久久久 | 2024国产精品视频 | 日本爱爱免费视频 | 亚洲经典在线 | 午夜10000 | 午夜视频99 | 免费在线电影网址大全 | 亚洲一区黄色 | 手机av永久免费 | 麻豆视频在线免费看 | 天天干天天操天天 | 日韩免费一级a毛片在线播放一级 | 一区二区精品在线观看 | 91秒拍国产福利一区 | 日韩啪视频 | 波多野结衣在线中文字幕 | 亚洲国产精品第一区二区 | 国产精品久久久久久久久久久久午夜 | 香蕉免费| 99精品久久久久 | 欧美日韩一区二区三区不卡 | 成人免费xxx在线观看 | 青草视频在线看 | 精品在线观看一区二区 | 国产在线观看h | 在线中文字幕播放 | 国产麻豆精品久久一二三 | 亚洲精品国偷自产在线91正片 | 狠狠狠狠狠狠操 | 四川bbb搡bbb爽爽视频 | 三上悠亚一区二区在线观看 | 婷婷电影在线观看 | 亚洲精品久久在线 | 中文字幕在线影院 | 久久精品4 | 在线观看视频h | 狠狠操狠狠插 | 激情久久综合 | 精品一区二区在线播放 | 日韩精品一区二区三区在线视频 | 成人xxxx| 久久久久久久久久毛片 | 日本久久中文 | 综合网婷婷 | 天天干天天想 | 中文字幕在线观看视频免费 | 亚洲欧洲一区二区在线观看 | 99在线热播精品免费99热 | 人人爽人人舔 | 欧美久久影院 | 麻豆小视频在线观看 | 午夜视频在线观看一区二区 | 黄色特级片 | 国产精品久久久久久久7电影 | 国产尤物视频在线 | 亚洲黄色免费电影 | 一区二区三区av在线 | 亚洲国产免费看 | 久久人人爽人人爽人人片av软件 | 91资源在线视频 | 手机色站| 美女av电影| 精品久久久久久亚洲综合网站 | 免费看污污视频的网站 | 久久久久久97三级 | 欧美另类调教 | 91手机电视 | 欧美狠狠色 | 丁香九月激情 | 91精选在线 | 人人爱夜夜操 | 91在线播放视频 | 国产黄色片网站 | 狠狠五月天 | 精品美女在线视频 | 亚洲国产免费 | 在线免费观看视频一区 | 成人国产精品一区二区 | av线上免费观看 | 日本久久综合视频 | 成人小视频在线观看免费 | japanese黑人亚洲人4k | 偷拍精偷拍精品欧洲亚洲网站 | 69国产精品成人在线播放 | 国产精品免费人成网站 | 久久精品视频在线免费观看 | 韩国视频一区二区三区 | 狠狠躁日日躁夜夜躁av | 国产在线视频不卡 | 久久y| 九九久久精品 | 久久精品电影网 | 欧美精品久 | 一区二区三区四区不卡 | 欧美了一区在线观看 | 免费观看十分钟 | 五月婷婷激情六月 | 国产在线观看午夜 | 国产精品视频在线观看 | 五月婷婷另类国产 | 天天插天天爱 | 国产精品一区二区美女视频免费看 | 99久久精品无免国产免费 | 亚洲人片在线观看 | www.亚洲视频.com| 四虎成人精品在永久免费 | 欧美久久影院 | 久久99精品久久久久蜜臀 | 精品在线免费视频 | 国产精品12345 | 99在线视频观看 | 热久久国产精品 | 亚洲天天看 | 五月天婷亚洲天综合网鲁鲁鲁 | 日本久久久久久久久久久 | 视频一区在线免费观看 | 日韩免费在线网站 | 在线播放 日韩专区 | 永久av免费在线观看 | 在线观看的av | 久9在线| 日韩av一区二区三区在线观看 | 欧美日韩1区| 日本爱爱片 | 国内精品在线观看视频 | 精品国产91亚洲一区二区三区www | 97看片吧 | 欧美日韩xxx| 欧美激情视频一二三区 | 波多野结衣视频一区 | 国产一区二区免费在线观看 | 欧美天天干 | 免费看国产曰批40分钟 | 国产精品系列在线 | 亚洲黄色免费观看 | 麻豆传媒电影在线观看 | 国产精品久久免费看 | 在线天堂视频 | 最近日本mv字幕免费观看 | 国产精品免费观看久久 | 激情五月六月婷婷 | 中文字幕在线一区二区三区 | 免费视频区 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 成人高清在线观看 | 亚洲一二区精品 | a级国产片| 手机av电影在线观看 | 亚洲日日射 | 在线天堂v | 亚洲影视九九影院在线观看 | 久久精品视频在线看 | 麻豆视频在线播放 | 免费观看福利视频 | 激情av资源网 |