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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python pytorch fft_看PyTorch源代码的心路历程

發(fā)布時(shí)間:2024/9/19 python 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python pytorch fft_看PyTorch源代码的心路历程 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 起因

曾經(jīng)碰到過(guò)別人的模型prelu在內(nèi)部的推理引擎算出的結(jié)果與其在原始框架PyTorch中不一致的情況,雖然理論上大家實(shí)現(xiàn)的都是一個(gè)算法,但是從參數(shù)上看,因?yàn)榻?jīng)過(guò)了模型轉(zhuǎn)換,中間做了一些調(diào)整。為了確定究竟是初始參數(shù)傳遞就出了問(wèn)題還是在后續(xù)傳遞過(guò)程中繼續(xù)做了更改、亦或者是最終算法實(shí)現(xiàn)方面有著細(xì)微差別導(dǎo)致最終輸出不同,就想著去看一看PyTorch一路下來(lái)是怎么做的。

但是代碼跟著跟著就跟丟了,才會(huì)發(fā)現(xiàn),PyTorch真的是一個(gè)很復(fù)雜的項(xiàng)目,但就像舌尖里面說(shuō)的,環(huán)境越是惡劣,回報(bào)越是豐厚。為了以后再想跟蹤的時(shí)候方便,因此決定以PReLU為例靜態(tài)梳理一下PyTorch的代碼結(jié)構(gòu)。搗鼓的這些天,對(duì)如何構(gòu)建一個(gè)帶有C/C++代碼的Python又有了新的了解,這也算是意外的收獲吧。

2. 歷程

首先,我們從PReLU的導(dǎo)入路徑torch.nn.PReLU中知道,他應(yīng)在徑進(jìn)torch\nn\之下,進(jìn)入該路徑雖然沒(méi)看到,但是我們?cè)谠撀窂较碌腳_init__.py中知道,其實(shí)它就在torch\nn\modules\activation.py中。類(lèi)PReLU最終調(diào)用了從torch\nn\functional.py導(dǎo)入的prelu方法。順騰摸瓜,找到prelu,它長(zhǎng)下面這樣:

def prelu(input, weight):

# type: (Tensor, Tensor) -> Tensor

if not torch.jit.is_scripting():

if type(input) is not Tensor and has_torch_function((input,)):

return handle_torch_function(prelu, (input,), input, weight)

return torch.prelu(input, weight)

經(jīng)過(guò)人腦對(duì)代碼的一番執(zhí)行你會(huì)發(fā)現(xiàn),第一個(gè)if條件滿(mǎn)足,而第二個(gè)if不滿(mǎn)足。因此,最終想看算法,得去看torch.prelu()。好吧,接著干……

一番搜尋之后你會(huì)發(fā)現(xiàn),Python代碼中在torch這個(gè)包下面你是找不到prelu的定義的。但是絕望之際我們?cè)趖orch包的__init__.py之中看到看下面幾行代碼:

# pytorch\torch\__init__.py

# 為了簡(jiǎn)潔,省去不必要代碼,詳細(xì)代碼參見(jiàn)pytorch\torch\__init__.py

try:

# _initExtension is chosen (arbitrarily) as a sentinel.

from torch._C import _initExtension

__all__ += [name for name in dir(_C)

if name[0] != '_' and

not name.endswith('Base')]

if TYPE_CHECKING:

# Some type signatures pulled in from _VariableFunctions here clash with

# signatures already imported. For now these clashes are ignored; see

# PR #43339 for details.

from torch._C._VariableFunctions import * # type: ignore

for name in dir(_C._VariableFunctions):

if name.startswith('__'):

continue

globals()[name] = getattr(_C._VariableFunctions, name)

__all__.append(name)

這是全村最后的希望了。我們知道__all__中的名字其實(shí)就是該模塊有意暴露出去的API。

什么意思呢?也就是說(shuō)雖然我們明文上已經(jīng)看不到了prelu的定義,但是這幾行代碼表明有一大堆身份不明的API被暗搓搓的導(dǎo)入了,這其中就很有可能存在我們朝思暮想的prelu。

那么我們?cè)趺磻{借這么一點(diǎn)微弱的線索確定我們的猜測(cè)到底對(duì)不對(duì)呢?這里我們就用到了Python的一個(gè)關(guān)鍵知識(shí):C/C++擴(kuò)展。(戳這里《使用C語(yǔ)言編寫(xiě)Python模塊-引子》《Python調(diào)用C++之PYBIND11簡(jiǎn)介》了解更多)

我們知道Python C/C++擴(kuò)展有著固定的格式,只要我們找到模塊初始化入口,就能順藤摸瓜找到該模塊暴露的給Python解釋器所有函數(shù)。Python 3中的初始化函數(shù)樣子為PyInit_,其中就是模塊的名字。例如在前面提到的from torch._C import *中,模塊torch下面必要有一個(gè)名字為_(kāi)C的子模塊。因此它的初始化函數(shù)應(yīng)該為PyInit__C,我們搜索該名字就能找到模塊入口。當(dāng)然另外還有一種方法,就是查看setup.py文件中關(guān)于擴(kuò)展的描述信息:

// pytorch\setup.py

main_sources = ["torch/csrc/stub.c"]

C = Extension("torch._C",

libraries=main_libraries,

sources=main_sources,

language='c',

extra_compile_args=main_compile_args + extra_compile_args,

include_dirs=[],

library_dirs=library_dirs,

extra_link_args=extra_link_args + main_link_args + make_relative_rpath_args('lib'))

extensions.append(C)

不管是通過(guò)搜索還是查看setup.py,我們最終都成功定位到了位于pytorch\torch\csrc\stub.c下的模塊初始化函數(shù)PyInit__C(void),并進(jìn)一步跟蹤其調(diào)用的函數(shù)initModule(),便可以知道具體都暴露了哪些API給Python解釋器。

// pytorch\torch\csrc\stub.c

PyMODINIT_FUNC PyInit__C(void)

{

return initModule();

}

// pytorch\torch\csrc\Module.cpp

initModule()

進(jìn)入initModule()尋找一番,你會(huì)發(fā)現(xiàn),模塊_C中依然沒(méi)有prelu的Python接口。怎么辦?莫慌,通過(guò)前面對(duì)torch.__init__.py的分析,我們知道我們還有希望——_C模塊下的子模塊_VariableFunctions,這真的是最后的希望了!沒(méi)了別的路可以走了,只能是硬著頭皮找。經(jīng)過(guò)一番驚天地泣鬼神、艱苦卓絕的尋找,我們?cè)趇nitModule()的調(diào)用鏈initModule()->THPVariable_initModule(module)->torch::autograd::initTorchFunctions(module)中發(fā)現(xiàn)了_VariableFunctions的蹤影。Aha,simple!

void initTorchFunctions(PyObject* module) {

if (PyType_Ready(&THPVariableFunctions) < 0) {

throw python_error();

}

Py_INCREF(&THPVariableFunctions);

// Steals

Py_INCREF(&THPVariableFunctions);

if (PyModule_AddObject(module, "_VariableFunctionsClass", reinterpret_cast(&THPVariableFunctions)) < 0) {

throw python_error();

}

// PyType_GenericNew returns a new reference

THPVariableFunctionsModule = PyType_GenericNew(&THPVariableFunctions, Py_None, Py_None);

// PyModule_AddObject steals a reference

if (PyModule_AddObject(module, "_VariableFunctions", THPVariableFunctionsModule) < 0) {

throw python_error();

}

}

但是!!別高興太早!查看模塊_VariableFunctions中暴露的接口你會(huì)發(fā)現(xiàn),根本就沒(méi)有我們想要的!如下面的代碼所示:

static PyMethodDef torch_functions[] = {

{"arange", castPyCFunctionWithKeywords(THPVariable_arange),

METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"as_tensor", castPyCFunctionWithKeywords(THPVariable_as_tensor),

METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"dsmm", castPyCFunctionWithKeywords(THPVariable_mm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"from_numpy", THPVariable_from_numpy, METH_STATIC | METH_O, NULL},

{"full", castPyCFunctionWithKeywords(THPVariable_full), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"hsmm", castPyCFunctionWithKeywords(THPVariable_hspmm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"nonzero", castPyCFunctionWithKeywords(THPVariable_nonzero), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"randint", castPyCFunctionWithKeywords(THPVariable_randint), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"range", castPyCFunctionWithKeywords(THPVariable_range), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"saddmm", castPyCFunctionWithKeywords(THPVariable_sspaddmm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"sparse_coo_tensor", castPyCFunctionWithKeywords(THPVariable_sparse_coo_tensor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"_sparse_coo_tensor_unsafe", castPyCFunctionWithKeywords(THPVariable__sparse_coo_tensor_unsafe), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"_validate_sparse_coo_tensor_args", castPyCFunctionWithKeywords(THPVariable__validate_sparse_coo_tensor_args), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"spmm", castPyCFunctionWithKeywords(THPVariable_mm), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"tensor", castPyCFunctionWithKeywords(THPVariable_tensor), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"get_device", castPyCFunctionWithKeywords(THPVariable_get_device), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

{"numel", castPyCFunctionWithKeywords(THPVariable_numel), METH_VARARGS | METH_KEYWORDS | METH_STATIC, NULL},

${py_method_defs}

{NULL}

};

上面的代碼中我們找不到prelu的任何身影。會(huì)不會(huì)prelu可以繞開(kāi)C/C++擴(kuò)展的方式直接被Python使用呢?所以不會(huì)出現(xiàn)在這里?答案是不會(huì),自古華山一條路,程序是不會(huì)跟你講潛規(guī)則的。那么既然最終代碼已經(jīng)跟丟了,作者一定是使用了黑魔法,作為麻瓜的我無(wú)計(jì)可施,本文也該結(jié)束了……

等等,上面的C代碼中好像混入了奇怪的東西——${py_method_defs}。這種語(yǔ)法好像C/C++語(yǔ)法里面是沒(méi)有的,反而是Shell這類(lèi)腳本里面才會(huì)有,難道是新特性?費(fèi)勁查找了一圈,并沒(méi)有發(fā)現(xiàn)C/C++中有這種語(yǔ)法,既然不是正經(jīng)語(yǔ)法,那么混入C/C++中肯定會(huì)導(dǎo)致編譯失敗,但是它確實(shí)就在那里。那么真相只有一個(gè):它就是個(gè)占位符,后面肯定會(huì)有真正的代碼替換它!

接下來(lái)怎么辦?搜索!使用py_method_defs作為關(guān)鍵字全局搜索,最終我們會(huì)發(fā)現(xiàn),確實(shí)是有一個(gè)Python腳本對(duì)這個(gè)占位符進(jìn)行了替換,而替換的結(jié)果就是我們一直尋找的prelu終于出現(xiàn)在了模塊_VariableFunctions之中。好,破案了。

但是就像警察破案,即便有單個(gè)證據(jù),也要找到其他證據(jù)形成完整證據(jù)鏈才能使得證據(jù)具有說(shuō)服力。雖然我們通過(guò)搜索得知了prelu會(huì)出現(xiàn)在模塊_VariableFunctions中,但是它究竟怎么來(lái)的目前還是很模糊:占位符在什么時(shí)候被誰(shuí)調(diào)用的腳本進(jìn)行了替換?

實(shí)際上,這一切都是有跡可循的。蹤跡依舊在setup.py中。進(jìn)入setup.py的主函數(shù),在調(diào)用setup函數(shù)之前會(huì)看到一個(gè)名為build_deps()的函數(shù)調(diào)用,此函數(shù)最終會(huì)調(diào)用指定平臺(tái)的CMake去按照根目錄下CMakeLists.txt中的腳本進(jìn)行構(gòu)建。根目錄下的CMakeLists.txt最終又會(huì)調(diào)用到caffe2目錄下的CMakeLists.txt(add_subdirectory(caffe2)),而caffe2/CMakeLists.txt中就會(huì)調(diào)用到進(jìn)行代碼生成的Python腳本,如下所示:

代碼生成腳本起調(diào)過(guò)程示意圖

// pytorch\caffe2\CMakeLists.txt

add_custom_command( OUTPUT

${TORCH_GENERATED_CODE}

COMMAND

"${PYTHON_EXECUTABLE}" tools/setup_helpers/generate_code.py

--declarations-path "${CMAKE_BINARY_DIR}/aten/src/ATen/Declarations.yaml"

--native-functions-path "aten/src/ATen/native/native_functions.yaml"

--nn-path "aten/src"

$:--disable-autograd>

$:--selected-op-list-path="${SELECTED_OP_LIST}">

--force_schema_registration

進(jìn)行代碼生成的主要流程如下面代碼塊所示,其大概流程是main()先解析傳遞給腳本的參數(shù),之后將參數(shù)傳遞給generate_code()。結(jié)合caffe2/CMakeLists.txt中腳本調(diào)用時(shí)傳遞的參數(shù)可知,generate_code()中的是三個(gè)gen_*()函數(shù)都得到了調(diào)用,而在gen_autograd_python()會(huì)調(diào)用到一個(gè)名為create_python_bindings()的函數(shù),這個(gè)函數(shù)就是真正執(zhí)行代碼生成的地方。

代碼生成器調(diào)用流程示意圖

// tools/setup_helpers/generate_code.py

def generate_code(ninja_global=None,

declarations_path=None,

nn_path=None,

native_functions_path=None,

install_dir=None,

subset=None,

disable_autograd=False,

force_schema_registration=False,

operator_selector=None):

if subset == "pybindings" or not subset:

gen_autograd_python(

declarations_path or DECLARATIONS_PATH,

native_functions_path or NATIVE_FUNCTIONS_PATH,

autograd_gen_dir,

autograd_dir)

if operator_selector is None:

operator_selector = SelectiveBuilder.get_nop_selector()

if subset == "libtorch" or not subset:

gen_autograd(

declarations_path or DECLARATIONS_PATH,

native_functions_path or NATIVE_FUNCTIONS_PATH,

autograd_gen_dir,

autograd_dir,

disable_autograd=disable_autograd,

operator_selector=operator_selector,

)

if subset == "python" or not subset:

gen_annotated(

native_functions_path or NATIVE_FUNCTIONS_PATH,

python_install_dir,

autograd_dir)

def main():

parser = argparse.ArgumentParser(description='Autogenerate code')

parser.add_argument('--declarations-path')

parser.add_argument('--native-functions-path')

parser.add_argument('--nn-path')

parser.add_argument('--ninja-global')

parser.add_argument('--install_dir')

parser.add_argument(

'--subset',

help='Subset of source files to generate. Can be "libtorch" or "pybindings". Generates both when omitted.'

)

parser.add_argument(

'--disable-autograd',

default=False,

action='store_true',

help='It can skip generating autograd related code when the flag is set',

)

parser.add_argument(

'--selected-op-list-path',

help='Path to the YAML file that contains the list of operators to include for custom build.',

)

parser.add_argument(

'--operators_yaml_path',

help='Path to the model YAML file that contains the list of operators to include for custom build.',

)

parser.add_argument(

'--force_schema_registration',

action='store_true',

help='force it to generate schema-only registrations for ops that are not'

'listed on --selected-op-list'

)

options = parser.parse_args()

generate_code(

options.ninja_global,

options.declarations_path,

options.nn_path,

options.native_functions_path,

options.install_dir,

options.subset,

options.disable_autograd,

options.force_schema_registration,

# options.selected_op_list

operator_selector=get_selector(options.selected_op_list_path, options.operators_yaml_path),

)

if __name__ == "__main__":

main()

// pytorch\tools\autograd\gen_autograd.py

def gen_autograd_python(aten_path, native_functions_path, out, autograd_dir):

from .load_derivatives import load_derivatives

differentiability_infos = load_derivatives(

os.path.join(autograd_dir, 'derivatives.yaml'), native_functions_path)

template_path = os.path.join(autograd_dir, 'templates')

# Generate Functions.h/cpp

from .gen_autograd_functions import gen_autograd_functions_python

gen_autograd_functions_python(

out, differentiability_infos, template_path)

# Generate Python bindings

from . import gen_python_functions

deprecated_path = os.path.join(autograd_dir, 'deprecated.yaml')

gen_python_functions.gen(

out, native_functions_path, deprecated_path, template_path)

// pytorch\tools\autograd\gen_python_functions.py

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #

#

# Main Function

#

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #

def gen(out: str, native_yaml_path: str, deprecated_yaml_path: str, template_path: str) -> None:

fm = FileManager(install_dir=out, template_dir=template_path, dry_run=False)

methods = load_signatures(native_yaml_path, deprecated_yaml_path, method=True)

create_python_bindings(

fm, methods, is_py_variable_method, None, 'python_variable_methods.cpp', method=True)

functions = load_signatures(native_yaml_path, deprecated_yaml_path, method=False)

create_python_bindings(

fm, functions, is_py_torch_function, 'torch', 'python_torch_functions.cpp', method=False)

create_python_bindings(

fm, functions, is_py_nn_function, 'torch.nn', 'python_nn_functions.cpp', method=False)

create_python_bindings(

fm, functions, is_py_fft_function, 'torch.fft', 'python_fft_functions.cpp', method=False)

create_python_bindings(

fm, functions, is_py_linalg_function, 'torch.linalg', 'python_linalg_functions.cpp', method=False)

def create_python_bindings(

fm: FileManager,

pairs: Sequence[PythonSignatureNativeFunctionPair],

pred: Callable[[NativeFunction], bool],

module: Optional[str],

filename: str,

*,

method: bool,

) -> None:

"""Generates Python bindings to ATen functions"""

py_methods: List[str] = []

py_method_defs: List[str] = []

py_forwards: List[str] = []

grouped: Dict[BaseOperatorName, List[PythonSignatureNativeFunctionPair]] = defaultdict(list)

for pair in pairs:

if pred(pair.function):

grouped[pair.function.func.name.name].append(pair)

for name in sorted(grouped.keys(), key=lambda x: str(x)):

overloads = grouped[name]

py_methods.append(method_impl(name, module, overloads, method=method))

py_method_defs.append(method_def(name, module, overloads, method=method))

py_forwards.extend(forward_decls(name, overloads, method=method))

fm.write_with_template(filename, filename, lambda: {

'generated_comment': '@' + f'generated from {fm.template_dir}/{filename}',

'py_forwards': py_forwards,

'py_methods': py_methods,

'py_method_defs': py_method_defs,

})

最終通過(guò)查看native_functions.yaml的內(nèi)容以及深入跟蹤加載native_functions.yaml的代碼發(fā)現(xiàn),native_functions.yaml中的prelu最終會(huì)被寫(xiě)到以python_torch_functions.cpp為模板的文件中,也就是調(diào)用

create_python_bindings(

fm, functions, is_py_torch_function, 'torch', 'python_torch_functions.cpp', method=False)

的時(shí)候被生成。整個(gè)生成的過(guò)程其實(shí)是很繁瑣的,一層層跟蹤后可以發(fā)現(xiàn),最終生成的代碼可以實(shí)現(xiàn)將一個(gè)名為at::的函數(shù)暴露給Python。例如我們的prelu,暴露給Python的API最終會(huì)調(diào)用一個(gè)名為at::prelu()的函數(shù)來(lái)做真正的計(jì)算。那么這個(gè)at::(例如at::prelu())的定義又在哪里呢?

還是一樣,故技重施!仍然使用Python腳本根據(jù)native_functions.yaml文件中的內(nèi)容去以pytorch\aten\src\ATen\templates目錄下的各種模板去生成對(duì)應(yīng)的實(shí)際C++源文件。最終結(jié)果是得到at::,在這個(gè)函數(shù)中,它調(diào)用了Dispatcher這個(gè)類(lèi)尋找到目標(biāo)函數(shù)的句柄。通常情況下能夠使用的函數(shù)句柄都通過(guò)一個(gè)叫Library的類(lèi)來(lái)管理。Python腳本以RegisterSchema.cpp為模板,生成了注冊(cè)這些目標(biāo)函數(shù)的注冊(cè)代碼,并通過(guò)一個(gè)名為T(mén)ORCH_LIBRARY的宏調(diào)用Library類(lèi)來(lái)注冊(cè)管理。

#define TORCH_LIBRARY(ns, m) \

static void TORCH_LIBRARY_init_ ## ns (torch::Library&); \

static const torch::detail::TorchLibraryInit TORCH_LIBRARY_static_init_ ## ns ( \

torch::Library::DEF, \

&TORCH_LIBRARY_init_ ## ns, \

#ns, c10::nullopt, __FILE__, __LINE__ \

); \

void TORCH_LIBRARY_init_ ## ns (torch::Library& m)

class TorchLibraryInit final {

private:

using InitFn = void(Library&);

Library lib_;

public:

TorchLibraryInit(Library::Kind kind, InitFn* fn, const char* ns, c10::optional<:dispatchkey> k, const char* file, uint32_t line)

: lib_(kind, ns, k, file, line) {

fn(lib_);

}

};

PyTorch組成示意圖

3. 總結(jié)

PyTorch雖然在使用上是非常的Pythonic,但實(shí)際上Python只不過(guò)是為了方便使用裹在C++代碼上的一層糖衣。用起來(lái)雖然好用,但是看起來(lái)實(shí)在是非常費(fèi)勁,特別是如果靜態(tài)的梳理代碼,很多用于連接Python C/C++接口與實(shí)際邏輯代碼之間的C++代碼都是通過(guò)Python腳本生成的。至此,整個(gè)大的線索已經(jīng)摸清了,剩下的就是去查看具體細(xì)節(jié)的實(shí)現(xiàn)。

說(shuō)實(shí)話(huà),人腦執(zhí)行Python代碼之后再去理解C++代碼實(shí)在是費(fèi)勁,也費(fèi)頭發(fā)。因此我決定的讓電腦去生成C++代碼再接著看更具體的細(xì)節(jié),比如究竟每一個(gè)算子是怎么注冊(cè)到Library之中的。

4. Bonus

我真心懷疑我們生活在一個(gè)虛擬機(jī)里,為什么呢?因?yàn)榈教幙梢?jiàn)運(yùn)用于計(jì)算機(jī)里面的空間和時(shí)間局部性原理的實(shí)例。就在我寫(xiě)完這個(gè)博客的時(shí)候,意外的發(fā)現(xiàn)了一篇PyTorch工程師講解PyTorch內(nèi)部原理的博文,這對(duì)后續(xù)讀代碼應(yīng)該會(huì)有很大幫助。等不及就戳它吧 http://blog.ezyang.com/2019/05/pytorch-internals/

與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的python pytorch fft_看PyTorch源代码的心路历程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

www.eeuss影院av撸 | 日本精品一 | 一区二区三区免费在线观看 | 免费在线精品视频 | 五月天婷亚洲天综合网鲁鲁鲁 | 国产69精品久久久久久久久久 | 超碰公开97 | 最新av网站在线观看 | 色多多视频在线观看 | 麻豆成人网 | 国产精品v欧美精品 | 欧美性生活大片 | 国产精品久久久久久吹潮天美传媒 | 欧美久久九九 | 久久久亚洲精品 | 夜夜爽www| 香蕉视频久久 | 日韩精品视频免费专区在线播放 | 97自拍超碰 | 91成人网页版 | 在线亚洲激情 | 亚洲在线高清 | av国产网站 | 国产中文字幕在线免费观看 | 狠狠狠狠狠色综合 | 成人手机在线视频 | 高清国产午夜精品久久久久久 | 免费精品在线视频 | 日韩精品一区二区三区免费观看视频 | 国产精品va在线播放 | 精品国产一二三四区 | 五月天婷婷免费视频 | 久久精品亚洲国产 | 日本少妇久久久 | 天天曰天天射 | 91精品啪在线观看国产81旧版 | 在线观看岛国片 | 韩国一区在线 | 久久一区二区免费视频 | 久久精品9 | 国产黄色免费观看 | 欧美日韩中文在线视频 | 欧美 国产 视频 | 国产色拍| 国产网红在线 | 欧美a√大片| 久久人人爽人人爽 | 日日夜色 | 国产成人在线观看免费 | 在线v片| 国产免费激情久久 | 免费观看av网站 | 五月婷婷在线视频观看 | 国内成人精品视频 | 欧美日韩国产一区 | www.91国产| 二区三区毛片 | 久久国产精品久久久久 | 精品国产一区二区在线 | 黄色录像av| 久久久影院一区二区三区 | 亚洲国产精品激情在线观看 | 久久久久久久久久免费 | 91精品免费视频 | 久久久久黄 | 天天天操天天天干 | 超级av在线| 狠狠躁夜夜躁人人爽超碰97香蕉 | 最新国产一区二区三区 | 国产精选在线 | 欧美欧美 | 婷婷五综合 | 国产中年夫妇高潮精品视频 | 在线免费试看 | 精品久久久久久亚洲综合网站 | 91精品国产综合久久福利 | 国产精品手机播放 | 在线国产欧美 | 在线国产欧美 | 成人毛片一区二区三区 | 91在线porny国产在线看 | 国产手机免费视频 | 中文字幕在线网址 | 久久深夜福利免费观看 | 五月激情视频 | 久久久久久久久久久国产精品 | 久久久人人爽 | 中文字幕在线一二 | 91经典在线 | 国产亚洲精品久久久久久电影 | 国产精品18毛片一区二区 | 久久免费av | 91九色视频在线 | 人人玩人人添人人澡超碰 | 日韩精品免费一线在线观看 | 在线 视频 亚洲 | 中文字幕二区在线观看 | 丁香午夜婷婷 | 亚洲成人999 | 四虎在线永久免费观看 | 国产精品久久久久毛片大屁完整版 | 中文在线中文资源 | 91香蕉视频黄色 | 精品国产一区二区三区久久久久久 | 国产精品日韩高清 | 亚洲精品视频 | 久久久www成人免费毛片麻豆 | 国产99久久久久久免费看 | 精品人人人人 | 亚洲黄色免费在线 | www视频在线免费观看 | 国产打女人屁股调教97 | 500部大龄熟乱视频使用方法 | 一级精品视频在线观看宜春院 | 欧美日韩在线视频观看 | 免费看的毛片 | 97国产一区二区 | 国产精品18久久久久久久网站 | 成人影片免费 | 亚洲精品一区二区久 | 在线播放日韩 | 国产九色视频在线观看 | 日日夜夜亚洲 | 九九99靖品 | 免费网站色| 成人污视频在线观看 | 午夜影院一级 | 免费av网站在线 | 久久久久久久国产精品视频 | 亚洲国产福利视频 | 亚洲国产成人精品电影在线观看 | 在线观影网站 | 欧美日韩高清一区二区三区 | 蜜桃av人人夜夜澡人人爽 | 黄色小视频在线观看免费 | 欧美一级特黄高清视频 | 日本三级久久 | 久久久精品网 | 免费观看性生活大片3 | 黄网站色欧美视频 | 亚洲乱码在线观看 | 亚洲午夜av | av看片网址| 四虎影院在线观看av | .精品久久久麻豆国产精品 亚洲va欧美 | 欧美日韩不卡一区二区三区 | 亚洲午夜久久久综合37日本 | 精品久久久久久久久久久久久久久久久久 | 国产99久久久精品 | 国产黄色理论片 | 久久爱资源网 | 久久精品艹| 日韩黄视频 | 97香蕉久久国产在线观看 | 欧美夫妻性生活电影 | 国产精品成人一区二区 | 天天干天天操天天入 | 99操视频| 欧美性视频网站 | a午夜电影| 日日操夜夜操狠狠操 | 精品国产诱惑 | 精品国产电影一区二区 | 日韩试看| 久久综合激情 | 国产九九九视频 | 国产区精品视频 | 人九九精品 | 久99久在线视频 | 亚洲成成品网站 | 在线韩国电影免费观影完整版 | 免费看黄网站在线 | 91av在线视频免费观看 | 亚洲精品国产拍在线 | 亚洲乱码久久久 | 久久精品国产久精国产 | 91网址在线 | 狠狠色2019综合网 | 国产精品专区一 | 欧美一二三视频 | 亚洲国产中文字幕 | 最近高清中文字幕在线国语5 | 欧美精品久久久久久久久免 | 99久久日韩精品免费热麻豆美女 | 国产一区二区在线观看免费 | 免费黄色网址大全 | 国产精品一区二区三区久久久 | 91片黄在线观看动漫 | 在线免费视 | 日韩有码中文字幕在线 | sesese图片| 欧美成天堂网地址 | 97超碰资源站 | 欧美视频99| 国产精品美女久久久久久 | 中文av在线免费观看 | 久久精美视频 | 天天天综合 | 97在线免费 | 国内久久久久久 | 久久国产二区 | 黄在线免费观看 | 久久久久久久国产精品视频 | 国产精久久久久久妇女av | 国产五月天婷婷 | jizz999| 免费观看一级成人毛片 | 国产精品久久久久久久av大片 | 中文字幕在线观看1 | 最近中文字幕免费观看 | 日韩欧美一区二区三区视频 | 综合久久网站 | 国产视频综合在线 | 看全黄大色黄大片 | 最近2019好看的中文字幕免费 | 久久在草 | 国产亚洲精品久久久久久久久久久久 | 久久成熟 | 在线免费高清一区二区三区 | 婷婷色在线 | www.天天射.com | 黄色一级在线观看 | 中文字幕日韩电影 | 国产精品高 | 成人片在线播放 | 色网免费观看 | 国产h在线播放 | 91看片在线 | 99视频一区 | 米奇四色影视 | 亚洲色影爱久久精品 | 免费看的黄色小视频 | 精品在线一区二区三区 | 天天操天天摸天天射 | 免费日韩av片 | 久久久久亚洲国产精品 | av片中文字幕 | 亚洲欧洲精品一区 | 韩国一区二区在线观看 | 欧日韩在线视频 | 国产91aaa | 成人网页在线免费观看 | 婷婷激情久久 | 婷婷色在线播放 | 在线视频亚洲 | 久久久久99精品成人片三人毛片 | www色网站 | av丝袜在线 | 丁香视频在线观看 | 99精品在线视频观看 | 久久精品毛片基地 | 丁香五香天综合情 | 成人h动漫在线看 | 成 人 黄 色 免费播放 | 天堂久色| 91高清视频在线 | 中文字幕久久精品一区 | 色综合久久久久综合体 | 免费观看一级 | 五月天激情视频 | 国产精品99久久久久的智能播放 | 国产精品av免费观看 | 色婷五月| 免费黄色在线播放 | 女人18精品一区二区三区 | 人人澡人人澡人人 | 色综合天天干 | 日韩精品中文字幕在线不卡尤物 | 日韩av片免费在线观看 | 丝袜制服天堂 | 日韩在线观看视频一区二区三区 | 天天做天天爱天天爽综合网 | 九九九九九九精品 | 久久久久久免费毛片精品 | 美女精品网站 | 亚洲有 在线 | 久久国产精品一国产精品 | 91成人网在线观看 | 国产视频精品免费 | 日韩电影在线观看中文字幕 | 丁香伊人网 | 亚洲国产成人av网 | 男女激情免费网站 | 正在播放国产一区 | 久久av影视 | 亚洲精品在线观看不卡 | 大片网站久久 | 成人在线视频一区 | 97精品国产97久久久久久免费 | 亚州成人av在线 | 色婷久久 | 国内精品久久久久久久久久久久 | 国产中文字幕视频在线观看 | 91少妇精拍在线播放 | 日产乱码一二三区别在线 | 九九免费精品视频 | 97在线视频网站 | 国产精品中文字幕在线播放 | 日韩电影在线观看一区二区三区 | 久草久热 | 日韩午夜精品 | 深夜免费福利网站 | 国精产品999国精产 久久久久 | 中文字幕精品三级久久久 | 日本中文字幕视频 | 日韩av在线免费看 | 免费a v网站| 亚洲精品国产自产拍在线观看 | av免费线看 | 久久久久北条麻妃免费看 | 亚洲一级免费电影 | 99性视频| 亚洲精品美女免费 | 久久不卡av | 欧美日韩亚洲在线观看 | 亚洲最新精品 | 久久国产精品久久w女人spa | 少妇bbb| 久草视频在线资源站 | 日韩av在线看| 久久久久日本精品一区二区三区 | 亚洲精品国产精品久久99 | 久久 一区 | 久久精品一区 | 国产字幕在线观看 | 夜夜操狠狠操 | 黄色网址中文字幕 | 久久97超碰 | 国产精品久久久久久久久久妇女 | 国产黄色片久久久 | 99免费看片| 久久99网站 | 国产美女精彩久久 | 97超碰成人 | 97在线观视频免费观看 | 国产欧美日韩精品一区二区免费 | 国产麻豆成人传媒免费观看 | 丁香激情视频 | 免费涩涩网站 | 欧美精品九九 | 狠狠插狠狠操 | 日韩精品一区在线播放 | 免费看久久久 | 又长又大又黑又粗欧美 | 天天爱天天色 | 97精品一区二区三区 | 亚洲自拍偷拍色图 | 337p日本欧洲亚洲大胆裸体艺术 | 999一区二区三区 | 婷婷六月在线 | 午夜国产一区二区 | 成人午夜电影久久影院 | 亚洲精品理论片 | 综合精品久久 | 久久精品亚洲精品国产欧美 | 精品在线看 | 色欧美综合 | 国产香蕉视频 | 亚洲精品视频在线免费播放 | 一区二区三区av在线 | 超碰公开在线 | 中文字幕中文字幕中文字幕 | 热久久精品在线 | 天天操夜夜拍 | 日本中文字幕久久 | 日韩精品在线免费播放 | 91精品国自产在线观看 | 国产成人精品一区二 | 国产亚洲视频在线观看 | 在线观看日本高清mv视频 | 99视频这里有精品 | 在线观看一区视频 | 国产亚州av | 99视频免费观看 | 91精品啪在线观看国产 | 天天爽夜夜操 | 在线国产视频观看 | 亚洲欧美视频在线播放 | 欧美性色黄| 国产色视频一区二区三区qq号 | 久久免费片| 色资源在线观看 | 国产亚洲婷婷 | 免费在线电影网址大全 | 欧美一级片免费观看 | 人人看97 | 亚洲区视频在线观看 | 欧美天天综合网 | 精品国产一区在线观看 | 一区二三国产 | 69国产盗摄一区二区三区五区 | 91成人在线免费观看 | 国产精品女人网站 | 91在线视频在线观看 | 亚洲天天草 | 中文在线中文资源 | 国产午夜剧场 | 中文字幕精品三级久久久 | 在线视频观看亚洲 | 在线观看av不卡 | 日韩av中文字幕在线免费观看 | 伊人欧美 | 丁香六月婷婷综合 | 91在线蜜桃臀 | 久久久免费精品视频 | 国产91精品看黄网站在线观看动漫 | 久操视频在线观看 | 欧美视频网址 | 久久综合影院 | 亚洲国产精品一区二区久久,亚洲午夜 | 超碰在线人人草 | 国产成人久久av977小说 | 天天操导航| 欧美与欧洲交xxxx免费观看 | 国产精品成人免费一区久久羞羞 | 天天综合网久久综合网 | 91一区二区三区久久久久国产乱 | 国产精品第72页 | 国产精品福利久久久 | 久久人人爽人人片av | 免费在线观看日韩视频 | 久久久久久福利 | 91免费观看网站 | 久草久草视频 | 久久久久二区 | 手机在线永久免费观看av片 | 久久综合九色综合久久久精品综合 | 992tv人人网tv亚洲精品 | 久久久久国产精品厨房 | 中文字幕在线人 | 久久精品影视 | 九九热免费在线观看 | 国产精品久久久久久一二三四五 | 欧美在线观看视频一区二区 | 免费三级a | av线上免费观看 | 国产精品久久久网站 | 亚洲午夜电影网 | 久久久久北条麻妃免费看 | 亚洲一区二区视频在线 | 久热免费在线观看 | 久久高清毛片 | 人人澡人人模 | 国产精品黄色av | 中文在线最新版天堂 | 黄色三级免费看 | a黄色片在线观看 | 99久久er热在这里只有精品66 | 国产破处视频在线播放 | 久久国产精品99精国产 | 久久久久久久久久久黄色 | 欧美日韩亚洲一 | 亚洲天天在线日亚洲洲精 | 欧美一二区视频 | 狠狠的干 | 2020天天干夜夜爽 | 成人一区二区三区在线 | 天天色棕合合合合合合 | 黄色免费看片网站 | 在线观看91久久久久久 | 久久毛片高清国产 | 亚洲成人国产精品 | 日韩av进入 | 日韩福利在线观看 | 婷婷亚洲最大 | 五月天激情电影 | www.夜色.com | 日韩在线不卡视频 | 一区久久久 | 四虎影视www | 中文国产成人精品久久一 | 成x99人av在线www | 在线中文字幕网站 | 成年人网站免费观看 | 日韩国产欧美在线播放 | 国产精品国内免费一区二区三区 | 亚洲成人中文在线 | 国产精品大尺度 | 欧美性生活小视频 | 性色在线视频 | 在线观看中文字幕亚洲 | 久久久九九 | 中文av一区二区 | 五月天欧美精品 | 亚洲乱亚洲乱亚洲 | 日韩一区精品 | 亚洲日韩中文字幕 | 免费视频91蜜桃 | 粉嫩aⅴ一区二区三区 | 久久免费黄色大片 | 一级α片免费看 | 国产伦理剧 | 91精品在线观看视频 | 精品久久毛片 | av三级av| 欧美成人黄色片 | 日韩乱码中文字幕 | 国产成人精品网站 | 国产这里只有精品 | 五月婷婷在线播放 | 亚洲首页 | 欧美日韩精品在线视频 | 免费在线国产视频 | 高清色免费 | 久草在线在线视频 | 国产成人免费 | 日韩福利在线观看 | 亚洲伊人天堂 | 玖玖视频 | 一区 在线观看 | av在线日韩 | 亚洲精品小视频在线观看 | 热久久影视 | 青青啪| 国产视频精品在线 | 91福利区一区二区三区 | 亚洲乱码在线 | 免费一级片在线观看 | 日本在线精品视频 | 亚洲欧美乱综合图片区小说区 | 日韩免费播放 | 欧美日韩国产页 | 免费美女久久99 | 成人va在线观看 | 久久无码精品一区二区三区 | 精品在线免费观看 | 日韩二区在线播放 | 日韩在线视频免费播放 | 欧美日韩视频精品 | 亚洲综合在线五月 | 日韩精品一区二区三区视频播放 | 国产不卡精品视频 | 黄色国产精品 | 成人免费看片网址 | 欧美久久久一区二区三区 | 麻豆视频一区 | 少妇性色午夜淫片aaaze | 日韩高清www | 欧美在线一二区 | 999视频网| 992tv在线观看网站 | 99久久www | 日韩精品欧美专区 | 久草免费在线 | 久久99久久99精品 | 美女视频a美女大全免费下载蜜臀 | 国产精品亚洲精品 | 成人精品99 | 色综合久久精品 | 狠狠艹夜夜干 | 天天看天天干 | 日韩区欧美久久久无人区 | a级免费观看 | 日韩最新理论电影 | 国产高清不卡在线 | 欧美a级一区二区 | 成年人免费在线观看 | 天天拍天天爽 | 最新国产在线视频 | 亚洲激情在线观看 | 日本中文字幕久久 | av成人免费观看 | 狠狠色噜噜狠狠狠合久 | 青青草国产精品 | 精品一二三四在线 | 国产精品久久久久久爽爽爽 | 日韩中文字幕在线看 | 在线观看电影av | 国产精品ⅴa有声小说 | 青青河边草免费直播 | 麻豆91精品91久久久 | 国产91在| 国产精品日韩欧美 | 中文字幕久久精品亚洲乱码 | 婷婷丁香久久五月婷婷 | 丁香花在线视频观看免费 | 天天操天天曰 | 一级精品视频在线观看宜春院 | 六月婷婷网| 久99久中文字幕在线 | 亚洲欧洲精品一区二区精品久久久 | 免费av在线 | 一区二区亚洲精品 | 国产视频精选在线 | 干干操操| 亚洲精品五月天 | 成人黄色片在线播放 | 久久一区二区三区超碰国产精品 | 欧美精品在线免费 | 欧美日本啪啪无遮挡网站 | 9在线观看免费高清完整版 玖玖爱免费视频 | 91人网站 | 麻豆久久一区二区 | 欧美a视频在线观看 | 92中文资源在线 | 久久久久激情 | 午夜精品久久久久久99热明星 | 99视频在线观看视频 | 免费在线观看成年人视频 | 日韩欧美国产激情在线播放 | 99精品成人| 五月婷婷综合在线视频 | 97日日碰人人模人人澡分享吧 | 狠狠五月婷婷 | 中文字幕影视 | 韩国av永久免费 | 国产精品免费视频久久久 | 99精品福利 | av在线小说 | av女优中文字幕在线观看 | 操老逼免费视频 | www国产精品com| av在线电影网站 | 欧美影片 | 久久成人午夜 | 免费午夜视频在线观看 | 亚洲精品视频国产 | 国产精品18久久久久久首页狼 | 日韩中文字幕国产 | 探花视频在线观看免费 | 91av视频在线观看免费 | 国产91在线播放 | 一级黄色在线视频 | 亚洲精品一区二区三区新线路 | 国产成人一二三 | 欧美久草视频 | 亚洲综合射 | 丁香五月缴情综合网 | 五月婷婷激情网 | 美女福利视频一区二区 | 九色自拍视频 | 黄色三级网站在线观看 | www99久久 | 少妇搡bbbb搡bbb搡忠贞 | 午夜精品中文字幕 | 国产精品久久久久久模特 | 欧美日本高清视频 | 久草精品资源 | 国产精品高潮呻吟久久av无 | 啪啪肉肉污av国网站 | 九九热99视频 | 久草99 | 91高清视频免费 | 中文久草| 国产精品一区二区三区观看 | 久久黄色免费观看 | 亚洲国产精品500在线观看 | 日日干网 | 碰超在线97人人 | 国产中文字幕视频在线观看 | 成人三级网站在线观看 | av不卡免费在线观看 | 亚洲精品在线资源 | 国产精品一区二区久久国产 | 国产99久久九九精品免费 | 日韩激情av在线 | 麻豆91网站 | 国产色视频网站2 | 超碰av在线播放 | 97成人资源站 | 99热这里只有精品8 久久综合毛片 | 超级碰碰碰免费视频 | 亚洲综合色视频在线观看 | 狠色狠色综合久久 | 99免费在线播放99久久免费 | 欧美a级片免费看 | 久久久久久在线观看 | 香蕉视频国产在线观看 | 免费在线观看av网站 | 亚洲va综合va国产va中文 | 91网免费看| 91在线视频观看免费 | 欧美久久久一区二区三区 | 久久成 | 伊人午夜 | 日日干天天爽 | 日本中文字幕在线视频 | 欧美aa一级 | 人人爽人人爽人人爽人人爽 | 免费看黄色大全 | 91成人精品一区在线播放69 | 精品专区一区二区 | 日韩一级电影在线 | 午夜影视av| 国产日本高清 | 久草91视频 | 久久久久久久久久久福利 | www五月婷婷 | 成人影音在线 | 综合网天天 | 亚洲五月激情 | 国产黑丝袜在线 | 日韩久久精品一区二区 | 国产精品亚洲片夜色在线 | 欧美日韩xxx| 天天射天天舔天天干 | 黄毛片在线观看 | 男女全黄一级一级高潮免费看 | 日韩狠狠操| 日本中文字幕在线观看 | 国产中文字幕三区 | 综合伊人av | 国产午夜精品一区二区三区四区 | 一区二区三区视频在线 | 国产一区免费在线观看 | 日韩精品一区二区三区在线视频 | 精品国产乱子伦一区二区 | 欧美久久精品 | 日韩欧美在线观看一区二区 | www.香蕉视频 | 色一色在线| 在线中文字幕视频 | 在线 欧美 日韩 | 精品在线一区二区三区 | 五月天久久激情 | 在线播放国产精品 | 日韩国产精品久久 | 成人精品国产免费网站 | 女人高潮特级毛片 | 中文字幕在线视频国产 | 国产精品欧美一区二区三区不卡 | 美女av在线免费 | 永久av免费在线观看 | 欧美aa级 | 中文字幕最新精品 | 免费观看xxxx9999片 | 黄色影院在线观看 | 亚洲最新精品 | 亚洲色综合 | 免费看三级网站 | 91成人精品一区在线播放 | 久久久久久欧美二区电影网 | 91麻豆精品国产91久久久久久 | 亚洲aⅴ一区二区三区 | 91在线观看视频网站 | 香蕉免费 | 九九热在线精品视频 | 精精国产xxxx视频在线播放 | 91麻豆国产福利在线观看 | 国产成年人av | 最新av在线网站 | а天堂中文最新一区二区三区 | 成人一区二区在线观看 | 亚洲国产成人精品久久 | 五月综合在线观看 | 人人爽人人澡人人添人人人人 | 99在线免费观看 | 日韩资源在线 | 最近免费中文字幕大全高清10 | 深夜免费福利网站 | 夜夜骑日日操 | 成人精品久久久 | 日韩久久精品一区二区 | 99热精品视 | 欧美日韩在线观看一区 | 综合网天天 | 国产一级高清视频 | 久久精品中文字幕一区二区三区 | 一级欧美日韩 | 日本久久中文 | 国产成人一区二区精品非洲 | av成人免费观看 | 亚洲国产精品视频在线观看 | 九九视频精品在线 | 黄色一级在线观看 | 久久综合五月婷婷 | 丝袜一区在线 | 欧美久久久久久久久久久久久 | 久久人人添人人爽添人人88v | 日韩r级电影在线观看 | 久久精品艹| 色午夜影院 | av电影不卡 | 久久国产精品99久久人人澡 | 久久精品久久精品久久 | 在线香蕉视频 | 成人观看视频 | 国产成人一区在线 | 五月天免费网站 | 亚洲国产经典视频 | 性日韩欧美在线视频 | 午夜三级福利 | 久久久久免费精品国产小说色大师 | 成人丝袜 | 一二区电影 | 狠狠的日 | 伊人手机在线 | 国产一二三四在线视频 | 欧美电影黄色 | 国产一级特黄毛片在线毛片 | 亚洲国产精品日韩 | 欧美日韩亚洲第一页 | 免费看片日韩 | 日韩网站在线观看 | 999电影免费在线观看 | 麻豆国产精品一区二区三区 | 97视频在线观看免费 | 色婷婷88av视频一二三区 | www.91av在线| 国产资源在线免费观看 | 午夜黄色 | av福利在线导航 | 国产福利在线免费 | 成人免费观看网站 | 亚洲 欧美 综合 在线 精品 | 久久九九影视 | 国产精品综合久久久久 | 久久久久亚洲精品男人的天堂 | 91精品国产自产在线观看永久 | 天天操欧美 | 精品国产免费av | 玖玖玖国产精品 | 欧美 日韩 国产 成人 在线 | 国产精品一区电影 | 精品久久久久久亚洲综合网站 | 99视频偷窥在线精品国自产拍 | 久操视频在线播放 | 狠狠色狠狠色 | 美女网站色在线观看 | 91黄在线看 | av在线免费播放网站 | 欧美专区日韩专区 | 久久欧美综合 | 最近中文字幕国语免费av | 最新国产精品久久精品 | 日韩精品免费在线播放 | 久久久国产精品一区二区中文 | 欧美日韩一区二区三区在线观看视频 | 国产中文伊人 | 99热最新地址 | 国产精品久久久久久吹潮天美传媒 | 91精品久 | www日 | 国产99久久久国产精品成人免费 | 色中文字幕在线观看 | 国产精品久久久久av免费 | 久久精品视频国产 | 成人av片免费观看app下载 | 精品国产日本 | 成人性生交大片免费观看网站 | 欧美视频日韩 | 久色小说 | 国产99久久久精品 | 992tv成人免费看片 | 国产一区在线视频 | 久草视频首页 | 精品国产诱惑 | 中文字幕专区高清在线观看 | 国产中文字幕网 | 色婷婷视频网 | 欧美在线91 | 久久久久久激情 | 亚洲国产美女精品久久久久∴ | 久久综合中文色婷婷 | 国产精品久久久久久久久久了 | 国产欧美精品一区二区三区四区 | 成人av在线看| 丁香激情视频 | 中文字幕免费一区二区 | 美女视频黄,久久 | 公与妇乱理三级xxx 在线观看视频在线观看 | 中文av一区二区 | 精品人人人人 | 我爱av激情网 | 毛片网免费 | 黄色小网站免费看 | av网址在线播放 | 国产无套精品久久久久久 | 免费a级毛片在线看 | 国产日韩精品一区二区在线观看播放 | 波多野结衣一区二区 | 成人在线观看av | 91在线视频精品 | 一 级 黄 色 片免费看的 | 黄免费在线观看 | 狠狠狠色丁香综合久久天下网 | 五月天综合色激情 | 91精品久久久久久久99蜜桃 | 一区二区三区日韩在线 | 亚洲黄色av| 久久久久这里只有精品 | 一二三四精品 | 日韩欧美专区 | 亚洲精品18日本一区app | 狠狠色丁香婷婷 | 精品久久久久久久久久久久 | 成人国产精品免费观看 | 中文成人字幕 | 日韩午夜在线播放 | 夜夜摸夜夜爽 | 日韩啪啪小视频 | 亚洲一区视频免费观看 | 亚洲在线免费视频 | 国产美女视频网站 | 天天av在线播放 | www.天天综合| 国产一级做a爱片久久毛片a | 国产中文字幕在线 | 在线国产视频一区 | 色多多视频在线 | 欧美日本中文字幕 | 精品一区二区免费视频 | 欧美在线aaa | 久久爱影视i| 久久免费视频99 | 在线观看91精品国产网站 | 97视频免费观看 | 国产免费激情久久 | 视频在线观看入口黄最新永久免费国产 | 最近中文字幕免费av | 黄色在线成人 | 日韩精品一区二区三区免费观看 | 久久精品婷婷 | av成人在线观看 | 国产精品美女久久久久久久久久久 | 免费看黄的| 久久综合免费 | 久久精品久久国产 | 久久男人中文字幕资源站 | www五月天| 一级黄色视屏 | 91正在播放 | 美女免费视频黄 | 久久伊人精品一区二区三区 | 欧美成人精品xxx | 色五月激情五月 | 精品国产一区二区三区噜噜噜 | www.888.av| 亚洲精品www.| 91精品国产一区二区在线观看 | 青青草久草在线 | 欧美日韩国产二区三区 | 亚洲综合色站 | 日韩h在线观看 | 久久综合九色综合久久久精品综合 | 久久国产精品久久国产精品 | 国产电影黄色av | 一区二区中文字幕在线 | 国产一级三级 | 国产一级视频在线免费观看 | 国产a精品 | 国产精品成人久久久久久久 | 国产一区二区不卡视频 | 久久久亚洲麻豆日韩精品一区三区 | www.夜夜爱 | 天天摸天天操天天舔 | 看片的网址 | 欧美日韩中文国产一区发布 | 国产精品18久久久久久不卡孕妇 | 99视频播放 | 九九热在线免费观看 | 日韩在线高清免费视频 | 天堂在线成人 | 日本在线视频网址 | 婷婷色在线播放 | 日韩中文字幕在线看 | 亚洲五月综合 | 日韩欧美网址 | 最近高清中文字幕在线国语5 | 天堂中文在线视频 | 成人av电影在线观看 | 国产一级黄色电影 | 日韩最新理论电影 | 亚洲日韩精品欧美一区二区 | 国产欧美精品xxxx另类 | 亚洲国产中文字幕 | 国产亚洲高清视频 | 亚洲精品在线免费观看视频 | 久久精品一区二区国产 | 精品毛片在线 | 91大神精品视频在线观看 | 久久综合色综合88 | 日韩夜夜爽 | 久久久久久久免费看 | 欧美成年性 | 亚洲理论片 | 国产精品尤物视频 | 美女在线观看网站 | 一区二区精品在线视频 | 欧美激情亚洲综合 | 嫩嫩影院理论片 | 欧美激情精品久久久久久变态 | 91久久奴性调教 | 亚洲成av人影片在线观看 | 亚洲精品久久激情国产片 | 天天干,天天操 | 中文字幕在线观看第三页 | 日韩久久久久久久久久 | 免费看搞黄视频网站 | 久久99久久99精品 | 亚洲综合在线发布 | 99久久精品国产网站 | 91精品一区二区三区久久久久久 | 成人久久久精品国产乱码一区二区 | 在线观看中文av | 亚洲一区日韩 | 久久久久久国产精品免费 | 亚洲国产一区在线观看 |