亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ybase64.cpp

?? 一個(gè)64位編碼解碼的動(dòng)態(tài)連接庫的例子
?? CPP
字號:
#include <windows.h>
#include <commctrl.h>
#include "resource.h"
#include "Base64.h"

#define	MSGBOXTITLE		"Yonatan's Base64 Encoder/Decoder 1.0"
#define ERROR_NODLG		"Error: Could not display dialog!"
#define ERROR_NOFILEIO	"Error: Could not access file!"
#define ERROR_NOENCODE	"Error: Could not encode file!"
#define ERROR_NODECODE	"Error: Could not decode file!"
#define FILTER_SHORT	"All Files (*.*)\0*.*\0"
#define FILTER_LONG		"Yonatan's Base64 Files (*.Y64)\0*.Y64\0All Files (*.*)\0*.*\0"
#define OPEN_ENCODE		"Select File To Be Encoded..."
#define OPEN_DECODE		"Select File To Be Decoded..."
#define SAVE_ENCODE		"Save Encoded File As..."
#define SAVE_DECODE		"Save Decoded File As..."
#define Y64_DEFEXT		"Y64"

#define SPEED_ACCURACY	15
#define TIMER_INTERVAL	500
#define IDT_ENCODE		1
#define IDT_DECODE		2

HINSTANCE	hInst;
HWND		hDialog;
HANDLE		hBase64Thread = INVALID_HANDLE_VALUE;
UINT		uSpeed[SPEED_ACCURACY], uPrevFinished;
BOOL		bEncodingAsync, bCanceledAsync;
UINT		uSizeAsync;
LPBYTE		lpFileDataAsync;
LPSTR		lpBase64Async;

BOOL CALLBACK	DialogProc(HWND, UINT, WPARAM, LPARAM);
void			Encode();
void			Decode();
BOOL			LoadFile(LPBYTE*, LPDWORD, BOOL, LPCSTR, LPCSTR, LPCSTR);
BOOL			SaveFile(LPBYTE, DWORD, LPCSTR, LPCSTR, LPCSTR);
void			EnableButtons(BOOL);
void CALLBACK	Base64Callback(HANDLE, BOOL, LPVOID);
void			EncodeFile();
void			DecodeFile();
void			CancelAsyncOperation();

#ifdef _DEBUG
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
{
	UINT uExitCode;

	hInst = hInstance;
	uExitCode = DialogBox(hInstance, MAKEINTRESOURCE(IDD_YBASE64), NULL, DialogProc);
	CancelAsyncOperation();

	return uExitCode;
}
#else
#pragma comment(linker, "/ENTRY:Main")
void WINAPI Main()
{
	UINT uExitCode;

	hInst = GetModuleHandle(NULL);
	uExitCode = DialogBox(hInst, MAKEINTRESOURCE(IDD_YBASE64), NULL, DialogProc);
	CancelAsyncOperation();

	ExitProcess(uExitCode);
}
#endif // !_DEBUG

BOOL CALLBACK DialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM)
{
	UINT uFinished, uTotal, i, uAverageSpeed, uNonzeroCount, uPercent;
	CHAR lpMessage[100];
	BOOL bSuccess;
	
	switch(uMsg) {
	case WM_CLOSE:
		EndDialog(hDlg, 0);
		break;
	
	case WM_INITDIALOG:
		SendMessage(hDialog = hDlg, WM_SETICON, ICON_BIG,
			(LPARAM)LoadIcon(hInst, MAKEINTRESOURCE(IDI_MAINICON)));
		SendDlgItemMessage(hDlg, IDC_ASYNC, BM_SETCHECK, BST_CHECKED, NULL);
		SendDlgItemMessage(hDlg, IDC_PROCESS, PBM_SETRANGE, 0, 100);

		break;
		
	case WM_COMMAND:
		if(wParam == MAKEWPARAM(IDC_PLAINTEXT, EN_CHANGE))
			Encode();

		if(wParam == MAKEWPARAM(IDC_BASE64TEXT, EN_CHANGE))
			Decode();

		if(wParam == MAKEWPARAM(IDC_ENCODEFILE, BN_CLICKED))
			EncodeFile();

		if(wParam == MAKEWPARAM(IDC_DECODEFILE, BN_CLICKED))
			DecodeFile();

		if(wParam == MAKEWPARAM(IDC_CANCEL, BN_CLICKED))
			CancelAsyncOperation();

		break;

	case WM_TIMER:
		if(wParam == IDT_ENCODE)
			bSuccess = GetEncodeAsyncState(hBase64Thread, &uFinished, &uTotal);

		if(wParam == IDT_DECODE)
			bSuccess = GetDecodeAsyncState(hBase64Thread, &uFinished, &uTotal);

		if(!bSuccess)
			break;

		for(i = 0; i < SPEED_ACCURACY - 1; i++)
			uSpeed[i] = uSpeed[i + 1];

		uSpeed[SPEED_ACCURACY - 1] = uFinished - uPrevFinished;
		uPrevFinished = uFinished;

		for(i = uAverageSpeed = uNonzeroCount = 0; i < SPEED_ACCURACY; uAverageSpeed += uSpeed[++i])
			if(uSpeed[i])
				uNonzeroCount++;
		
		uAverageSpeed /= (uNonzeroCount << 10);
		uFinished >>= 10;
		uTotal >>= 10;

		if(uTotal)
			uPercent = 100 * uFinished / uTotal;
		else
			uPercent = 100;
		
		wsprintf(lpMessage, "%d KB %scoded out of %d KB total (%d%%), average speed: %d KB/s.",
			uFinished, wParam == IDT_ENCODE ? "en" : "de", uTotal, uPercent, uAverageSpeed);
		
		SendDlgItemMessage(hDlg, IDC_PROCESS, PBM_SETPOS, uPercent, NULL);
		SetDlgItemText(hDlg, IDC_PERCENT, lpMessage);

		break;
		
	default:
		return FALSE;
	}

	return TRUE;
}

void Encode()
{
	LPSTR	lpText, lpBase64;
	UINT	uLenText, uLenBase64;

	uLenText = SendDlgItemMessage(hDialog, IDC_PLAINTEXT, WM_GETTEXTLENGTH, NULL, NULL);
	lpText = (LPSTR)LocalAlloc(LPTR, uLenText + 1);
	GetDlgItemText(hDialog, IDC_PLAINTEXT, lpText, uLenText + 1);
	
	uLenBase64 = CharsNeededToEncode(uLenText);
	lpBase64 = (LPSTR)LocalAlloc(LPTR, uLenBase64);

	Base64Encode((LPCBYTE)lpText, uLenText, lpBase64, uLenBase64);

	LocalFree(lpText);
	SetDlgItemText(hDialog, IDC_BASE64TEXT, lpBase64);
	LocalFree(lpBase64);
}

void Decode()
{
	LPSTR	lpBase64, lpText;
	UINT	uLenBase64, uEqualSigns, uLenText;
	
	uLenBase64 = SendDlgItemMessage(hDialog, IDC_BASE64TEXT, WM_GETTEXTLENGTH, NULL, NULL);
	lpBase64 = (LPSTR)LocalAlloc(LPTR, uLenBase64 + 1);
	GetDlgItemText(hDialog, IDC_BASE64TEXT, lpBase64, uLenBase64 + 1);

	uEqualSigns = CountEqualSigns(lpBase64);
	uLenText = BytesNeededToDecode(lstrlen(lpBase64), uEqualSigns);
	lpText = (LPSTR)LocalAlloc(LPTR, uLenText + 1);

	if(!Base64Decode(lpBase64, (LPBYTE)lpText, uLenText)) {
		SetDlgItemText(hDialog, IDC_PLAINTEXT, NULL);
		LocalFree(lpBase64);
		return;
	}
	
	LocalFree(lpBase64);
	SetDlgItemText(hDialog, IDC_PLAINTEXT, lpText);
	LocalFree(lpText);
}

BOOL LoadFile(LPBYTE* lpFileData, LPDWORD lpFileSize, BOOL bAllocateExtraByte,
			  LPCSTR lpFilter, LPCSTR lpTitle, LPCSTR lpDefExt)
{
	OPENFILENAME ofn = {
		sizeof(OPENFILENAME),									// lStructSize
		hDialog,												// hWndOwner
		hInst,													// hInstance
		lpFilter,												// lpstrFilter
		NULL,													// lpstrCustomFilter
		NULL,													// nMaxCustFilter
		1,														// nFilterIndex
		(LPSTR)LocalAlloc(LPTR, MAX_PATH),						// lpstrFile
		MAX_PATH,												// nMaxFile
		NULL,													// lpstrFileTitle
		NULL,													// nMaxFileTitle
		NULL,													// lpstrInitialDir
		lpTitle,												// lpstrTitle
		OFN_FILEMUSTEXIST | OFN_HIDEREADONLY | OFN_LONGNAMES,	// Flags
		NULL,													// nFileOffset
		NULL,													// nFileExtension
		lpDefExt,												// lpstrDefExt
		NULL,													// lCustData
		NULL,													// lpfnHook
		NULL													// lpTemplateName
	};

	HANDLE	hFile;
	DWORD	dwBytesRead;
	BOOL	bFailure;

	if(!GetOpenFileName(&ofn)) {
		if(CommDlgExtendedError())
			MessageBox(hDialog, ERROR_NODLG, MSGBOXTITLE, MB_ICONSTOP);
		LocalFree(ofn.lpstrFile);
		return FALSE;
	}

	bFailure = ((hFile = CreateFile(ofn.lpstrFile, GENERIC_READ, FILE_SHARE_READ,
		NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE);
	LocalFree(ofn.lpstrFile);
	
	if(bFailure) {
		MessageBox(hDialog, ERROR_NOFILEIO, MSGBOXTITLE, MB_ICONSTOP);
		return FALSE;
	}

	if((*lpFileSize = GetFileSize(hFile, NULL)) == INVALID_FILE_SIZE) {
		CloseHandle(hFile);
		MessageBox(hDialog, ERROR_NOFILEIO, MSGBOXTITLE, MB_ICONSTOP);
		return FALSE;
	}
	
	*lpFileData = (LPBYTE)LocalAlloc(LPTR, *lpFileSize + bAllocateExtraByte);
	bFailure = !ReadFile(hFile, *lpFileData, *lpFileSize, &dwBytesRead, NULL)
		|| *lpFileSize != dwBytesRead;
	CloseHandle(hFile);

	if(bFailure) {
		LocalFree(*lpFileData);
		MessageBox(hDialog, ERROR_NOFILEIO, MSGBOXTITLE, MB_ICONSTOP);
		return FALSE;
	}

	return TRUE;
}

BOOL SaveFile(LPBYTE lpFileData, DWORD dwFileSize, LPCSTR lpFilter, LPCSTR lpTitle, LPCSTR lpDefExt)
{
	OPENFILENAME ofn = {
		sizeof(OPENFILENAME),									// lStructSize
		hDialog,												// hWndOwner
		hInst,													// hInstance
		lpFilter,												// lpstrFilter
		NULL,													// lpstrCustomFilter
		NULL,													// nMaxCustFilter
		1,														// nFilterIndex
		(LPSTR)LocalAlloc(LPTR, MAX_PATH),						// lpstrFile
		MAX_PATH,												// nMaxFile
		NULL,													// lpstrFileTitle
		NULL,													// nMaxFileTitle
		NULL,													// lpstrInitialDir
		lpTitle,												// lpstrTitle
		OFN_HIDEREADONLY | OFN_LONGNAMES | OFN_OVERWRITEPROMPT,	// Flags
		NULL,													// nFileOffset
		NULL,													// nFileExtension
		lpDefExt,												// lpstrDefExt
		NULL,													// lCustData
		NULL,													// lpfnHook
		NULL													// lpTemplateName
	};

	HANDLE	hFile;
	DWORD	dwBytesWritten;
	BOOL	bFailure;

	if(!GetSaveFileName(&ofn)) {
		if(CommDlgExtendedError())
			MessageBox(hDialog, ERROR_NODLG, MSGBOXTITLE, MB_ICONSTOP);
		LocalFree(ofn.lpstrFile);
		return FALSE;
	}

	bFailure = ((hFile = CreateFile(ofn.lpstrFile, GENERIC_WRITE, FILE_SHARE_READ,
		NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL)) == INVALID_HANDLE_VALUE);
	LocalFree(ofn.lpstrFile);

	if(bFailure) {
		MessageBox(hDialog, ERROR_NOFILEIO, MSGBOXTITLE, MB_ICONSTOP);
		return FALSE;
	}

	bFailure = !WriteFile(hFile, lpFileData, dwFileSize, &dwBytesWritten, NULL)
		|| dwFileSize != dwBytesWritten;
	CloseHandle(hFile);
	
	if(bFailure) {
		MessageBox(hDialog, ERROR_NOFILEIO, MSGBOXTITLE, MB_ICONSTOP);
		return FALSE;
	}

	return TRUE;
}

void EnableButtons(BOOL bEnable)
{
	EnableWindow(GetDlgItem(hDialog, IDC_ENCODEFILE), bEnable);
	EnableWindow(GetDlgItem(hDialog, IDC_DECODEFILE), bEnable);
	EnableWindow(GetDlgItem(hDialog, IDC_ASYNC), bEnable);
	EnableWindow(GetDlgItem(hDialog, IDC_CANCEL), !bEnable);
}

void CALLBACK Base64Callback(HANDLE hThread, BOOL bSuccess, LPVOID)
{
	if(bEncodingAsync) {
		KillTimer(hDialog, IDT_ENCODE);

		if(bSuccess)
			SaveFile((LPBYTE)lpBase64Async, uSizeAsync - 1, FILTER_LONG, SAVE_ENCODE, Y64_DEFEXT);
		else if(!bCanceledAsync)
			MessageBox(hDialog, ERROR_NOENCODE, MSGBOXTITLE, MB_ICONSTOP);
	} else {
		KillTimer(hDialog, IDT_DECODE);

		if(bSuccess)
			SaveFile(lpFileDataAsync, uSizeAsync, FILTER_SHORT, SAVE_DECODE, NULL);
		else if(!bCanceledAsync)
			MessageBox(hDialog, ERROR_NODECODE, MSGBOXTITLE, MB_ICONSTOP);
	}

	EnableButtons(TRUE);
	CloseHandle(hThread);
	hBase64Thread = INVALID_HANDLE_VALUE;
	LocalFree(lpFileDataAsync);
	LocalFree(lpBase64Async);
	SendDlgItemMessage(hDialog, IDC_PROCESS, PBM_SETPOS, 0, NULL);
	SetDlgItemText(hDialog, IDC_PERCENT, NULL);
	SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));
}

void EncodeFile()
{
	LPBYTE	lpFileData;
	DWORD	dwFileSize;
	LPSTR	lpBase64;
	UINT	uLenBase64, i;
	BOOL	bFailure, bAsync;

	if(!LoadFile(&lpFileData, &dwFileSize, FALSE, FILTER_SHORT, OPEN_ENCODE, NULL))
		return;

	uLenBase64 = CharsNeededToEncode(dwFileSize);
	lpBase64 = (LPSTR)LocalAlloc(LPTR, uLenBase64);
	bAsync = (SendDlgItemMessage(hDialog, IDC_ASYNC, BM_GETCHECK, NULL, NULL) == BST_CHECKED);
	SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_WAIT)));

	if(bAsync) {
		EnableButtons(FALSE);
		bEncodingAsync = TRUE;
		bCanceledAsync = FALSE;
		lpFileDataAsync = lpFileData;
		lpBase64Async = lpBase64;
		uSizeAsync = uLenBase64;
		uPrevFinished = 0;
		for(i = 0; i < SPEED_ACCURACY; i++)
			uSpeed[i] = 0;
		SetTimer(hDialog, IDT_ENCODE, TIMER_INTERVAL, NULL);
		
		bFailure = ((hBase64Thread = Base64EncodeAsync(lpFileData, dwFileSize, lpBase64,
			uLenBase64, Base64Callback, NULL)) == INVALID_HANDLE_VALUE);
	} else {
		bFailure = !Base64Encode(lpFileData, dwFileSize, lpBase64, uLenBase64);
		SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));
	}

	if(bFailure) {
		LocalFree(lpFileData);
		LocalFree(lpBase64);
		SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));
		MessageBox(hDialog, ERROR_NOENCODE, MSGBOXTITLE, MB_ICONSTOP);
	}
	
	if(bAsync || bFailure)
		return;

	SaveFile((LPBYTE)lpBase64, uLenBase64 - 1, FILTER_LONG, SAVE_ENCODE, Y64_DEFEXT);
	LocalFree(lpBase64);
	LocalFree(lpFileData);
}

void DecodeFile()
{
	LPSTR	lpBase64;
	UINT	uLenBase64, uEqualSigns, i;
	LPBYTE	lpFileData;
	DWORD	dwFileSize;
	BOOL	bFailure, bAsync;

	if(!LoadFile((LPBYTE*)&lpBase64, (LPDWORD)&uLenBase64, TRUE, FILTER_LONG, OPEN_DECODE, Y64_DEFEXT))
		return;

	uEqualSigns = CountEqualSigns(lpBase64);
	dwFileSize = BytesNeededToDecode(uLenBase64, uEqualSigns);
	lpFileData = (LPBYTE)LocalAlloc(LPTR, dwFileSize);
	bAsync = (SendDlgItemMessage(hDialog, IDC_ASYNC, BM_GETCHECK, NULL, NULL) == BST_CHECKED);
	SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_WAIT)));

	if(bAsync) {
		EnableButtons(FALSE);
		bEncodingAsync = FALSE;
		bCanceledAsync = FALSE;
		lpFileDataAsync = lpFileData;
		lpBase64Async = lpBase64;
		uSizeAsync = dwFileSize;
		uPrevFinished = 0;
		for(i = 0; i < SPEED_ACCURACY; i++)
			uSpeed[i] = 0;
		SetTimer(hDialog, IDT_DECODE, TIMER_INTERVAL, NULL);
		
		bFailure = ((hBase64Thread = Base64DecodeAsync(lpBase64, lpFileData,
			dwFileSize, Base64Callback, NULL)) == INVALID_HANDLE_VALUE);
	} else {
		bFailure = !Base64Decode(lpBase64, lpFileData, dwFileSize);
		SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));
	}

	if(bFailure) {
		LocalFree(lpFileData);
		LocalFree(lpBase64);
		SetCursor(LoadCursor(NULL, MAKEINTRESOURCE(IDC_ARROW)));
		MessageBox(hDialog, ERROR_NODECODE, MSGBOXTITLE, MB_ICONSTOP);
	}

	if(bAsync || bFailure)
		return;

	SaveFile(lpFileData, dwFileSize, FILTER_SHORT, SAVE_DECODE, NULL);
	LocalFree(lpFileData);
	LocalFree(lpBase64);
}

void CancelAsyncOperation()
{
	if(hBase64Thread == INVALID_HANDLE_VALUE)
		return;

	TerminateThread(hBase64Thread, 0);
	bCanceledAsync = TRUE;
	Base64Callback(hBase64Thread, FALSE, NULL);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本91福利区| 日韩黄色小视频| 欧美高清dvd| 不卡av在线网| 久久精品国产久精国产爱| 亚洲天堂精品视频| 久久综合色播五月| 欧美绝品在线观看成人午夜影视| 国产不卡免费视频| 美女视频黄免费的久久| 尤物视频一区二区| 中文字幕一区二区三区色视频| 国产精品美女久久久久久久久久久| 欧美三级电影网站| 91蝌蚪porny九色| 国产v综合v亚洲欧| 国产一区在线观看麻豆| 日本女人一区二区三区| 一区二区三区美女视频| 国产精品激情偷乱一区二区∴| 欧美mv和日韩mv的网站| 3d成人动漫网站| 在线观看视频一区| 色综合久久99| 99re这里只有精品视频首页| 国产不卡视频在线播放| 国产一区二三区| 极品少妇一区二区三区精品视频 | 五月天一区二区| 亚洲三级小视频| 中文字幕一区二区三区蜜月| 亚洲国产成人自拍| 蜜臀av一级做a爰片久久| 在线播放91灌醉迷j高跟美女| 不卡一区在线观看| 日本人妖一区二区| 午夜视黄欧洲亚洲| 欧美日韩dvd在线观看| 99精品视频中文字幕| 成人午夜免费av| 丰满白嫩尤物一区二区| 国产成人a级片| 国产一区91精品张津瑜| 国产成人av一区二区| 国产成a人无v码亚洲福利| 成人免费看片app下载| 波多野结衣在线一区| 99久久综合国产精品| 99riav一区二区三区| 在线视频欧美精品| 欧美日韩国产片| 日韩欧美在线观看一区二区三区| 日韩一区二区在线免费观看| 欧美videos大乳护士334| 精品免费日韩av| 日韩色视频在线观看| 国产成人精品亚洲日本在线桃色 | 亚洲韩国精品一区| 亚洲国产精品一区二区尤物区| 亚洲成人在线网站| 日本不卡视频一二三区| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美精品一卡二卡| 欧美一区二区播放| 久久欧美一区二区| 国产精品久久久久桃色tv| 一区二区三区日韩在线观看| 日韩国产在线一| 国产精品资源网| 91亚洲精品一区二区乱码| 欧美日韩在线综合| 久久综合九色欧美综合狠狠| 国产精品灌醉下药二区| 亚洲国产视频一区| 激情文学综合插| 91视视频在线观看入口直接观看www| 欧美色图在线观看| 久久婷婷国产综合精品青草| 亚洲人妖av一区二区| 97精品超碰一区二区三区| 在线观看免费亚洲| www国产精品av| 亚洲精品一卡二卡| 精品一区二区免费视频| 91亚洲午夜精品久久久久久| 欧美一区二区在线看| 国产精品视频第一区| 奇米影视在线99精品| 99久久久国产精品免费蜜臀| 欧美一级爆毛片| 亚洲人成在线观看一区二区| 老司机免费视频一区二区| 91麻豆福利精品推荐| 欧美精品一区二区三区在线| 一区二区三区精品在线| 国产在线精品不卡| 欧美日本韩国一区| 中文字幕欧美一| 国产一区在线视频| 3d成人h动漫网站入口| 最近中文字幕一区二区三区| 国模套图日韩精品一区二区| 欧美三级三级三级| 中文字幕亚洲不卡| 国模一区二区三区白浆| 91精品欧美综合在线观看最新| 亚洲视频在线一区观看| 国产精品18久久久久| 日韩视频在线一区二区| 亚洲一区精品在线| 91啪在线观看| 国产精品全国免费观看高清| 激情图区综合网| 日韩欧美国产小视频| 偷拍日韩校园综合在线| 色国产综合视频| 亚洲日本一区二区| 成人午夜激情影院| 久久人人爽人人爽| 激情文学综合插| 日韩精品在线看片z| 日本网站在线观看一区二区三区| 91官网在线观看| 日韩伦理电影网| 99精品久久久久久| 国产精品国产精品国产专区不蜜| 国产 日韩 欧美大片| 久久久99精品免费观看| 国产又粗又猛又爽又黄91精品| 日韩一级高清毛片| 麻豆精品视频在线观看| 欧美一级淫片007| 奇米影视在线99精品| 日韩欧美一级二级三级| 麻豆免费精品视频| 精品成人一区二区三区| 九一九一国产精品| 久久久www成人免费无遮挡大片| 久久99国产精品久久99| 337p粉嫩大胆噜噜噜噜噜91av| 久久国产三级精品| 亚洲精品一区二区三区99| 国产在线精品一区在线观看麻豆| 久久亚洲影视婷婷| 成人avav影音| 亚洲少妇最新在线视频| 在线影院国内精品| 午夜精品国产更新| 欧美xxxx在线观看| 大桥未久av一区二区三区中文| 综合色中文字幕| 欧美色图激情小说| 免费看欧美女人艹b| 国产亚洲一区二区在线观看| 成人aa视频在线观看| 一区二区三区高清| 欧美一区二区三区白人| 国产成人午夜视频| 亚洲欧美日韩国产手机在线| 欧美日韩电影一区| 激情综合网天天干| 成人欧美一区二区三区在线播放| 91久久精品网| 久久成人免费网| 中文字幕在线一区二区三区| 欧美日韩亚洲国产综合| 精品一区二区在线播放| 亚洲欧洲无码一区二区三区| 欧美性生活一区| 国产麻豆日韩欧美久久| 亚洲最大色网站| 精品久久一区二区三区| 91丨九色丨尤物| 青青青伊人色综合久久| 国产精品久久久久久久久图文区 | 精品一区二区三区在线视频| 国产精品美女久久久久久久| 欧美日韩午夜影院| 国产成人啪免费观看软件| 亚洲一区二区在线免费看| 久久久久久久久免费| 欧美在线观看18| 国产精品白丝av| 石原莉奈一区二区三区在线观看| 国产欧美日韩在线看| 欧美日韩高清不卡| av不卡一区二区三区| 久久疯狂做爰流白浆xx| 亚洲已满18点击进入久久| 久久久久久久网| 欧美一区二区三区在线视频 | 在线观看国产精品网站| 国产剧情一区二区| 亚洲成av人片观看| 国产精品久久久久毛片软件| 精品日韩在线观看| 精品视频在线免费观看| www..com久久爱| 国产在线不卡视频| 丝瓜av网站精品一区二区|