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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? codecwizarddlg.h

?? 多種編解碼的小程序
?? H
?? 第 1 頁 / 共 4 頁
字號:
			bi.InputQuart(y);
			--nInputSize;
			if(x<=0x08)
			{
				
#ifdef CSLCS_TRACE_CODEC
				sprintf(g_buf,"■發現%02x個相同的數據:%02x\n",x,y);
				TraceFile.Write(g_buf);
#endif
				for(;x>0;--x) bo.OutputQuart((BYTE)(y<<4));
			}
			else
			{
				x -= 0x08;
				assert(nInputSize>=x);
#ifdef CSLCS_TRACE_CODEC
				sprintf(g_buf,"☆發現%02x個不相同的數據:%02x",x,y);
				TraceFile.Write(g_buf);
#endif
				nInputSize -= x;
				for(;x>0;--x)
				{
					bi.InputQuart(y);
					bo.OutputQuart((BYTE)(y<<4));
				}
#ifdef CSLCS_TRACE_CODEC
				sprintf(g_buf,"-%02x\n",y);
				TraceFile.Write(g_buf);
#endif
			}
		}
		bi.InputQuart(x);
		if(x) bo.DiscardBits(x);
		bo.FlushOutput();
		byOutput.Append(bo.GetDataPBYTE(),bo.GetDataSize());
		return nEncodedSize;
	};
public:
	RLEHexCodec()
	{
#ifdef CSLCS_TRACE_CODEC
		TraceFile.Write("RLEHexCodec\n");
#endif
	};
	~RLEHexCodec()
	{
	};
};
//===RLEHexCodec===

class HexLine
{
protected:
	BYTE *m_byData;
	int m_nDataSize;
public:
	int GetDataSize() const
	{
		return m_nDataSize;
	};
	BYTE* GetData() const
	{
		return m_byData;
	};
protected:
	BOOL IsHex(char c)
	{
		return c>='0' && c<='9' || c>='A' && c<='F' || c>='a' && c<='f';
	};
	BYTE ToHex(char c)
	{
		return c<='9' ? c - '0' : c<='F' ? c - 'A' + 10 : c - 'a' + 10;
	};
	BYTE GetByte(LPCSTR& strHex)
	{
		if(!IsHex(*strHex)) return 0;
		BYTE by = ToHex(*strHex);
		++strHex;
		if(!IsHex(*strHex)) return by;
		by <<= 4;
		by |= ToHex(*strHex);
		++strHex;
		return by;
	};
public:
	void Free()
	{
		delete [] m_byData;
		m_byData = NULL;
		m_nDataSize = 0;
	};
	BOOL LoadLine(LPCSTR& strHexLine)
	{
		Free();
		for(;*strHexLine==' ' || *strHexLine=='\r' || *strHexLine=='\n';++strHexLine);
		if(!*strHexLine) return FALSE;
		if(*strHexLine==':') ++strHexLine;
		LPCSTR p = strstr(strHexLine,"\r\n");
		if(!p) p = strHexLine + strlen(strHexLine);
		LPCSTR q = strHexLine;
		for(;q<p;++q) if(!IsHex(*q)) return FALSE;
		m_nDataSize = p - strHexLine;
		BOOL bSingle = m_nDataSize % 2;
		if(bSingle) ++m_nDataSize;
		m_nDataSize >>= 1;
		m_byData = new BYTE[m_nDataSize];
		if(!m_byData)
		{
			m_nDataSize = 0;
			return FALSE;
		}
		int i = 0;
		q = strHexLine;
		strHexLine = p;
		if(bSingle) m_byData[i++] = ToHex(*q++);
		for(;q<p;i)
		{
			m_byData[i] = ToHex(*q++);
			m_byData[i] <<= 4;
			m_byData[i++] |= ToHex(*q++);
		}
		return TRUE;
	};
public:
	HexLine()
	{
		m_byData = NULL;
		m_nDataSize = 0;
	};
	~HexLine()
	{
		Free();
	};
};

class IntelHex
{
public:
	int m_nImgType;
	int m_nStartAddr;
	ByteArray m_baData;
public:
	int GetImgType() const
	{
		return m_nImgType;
	};
	void SetImgType(int nImgType)
	{
		assert(nImgType<=4);
		m_nImgType = nImgType;
	};
	int GetStartAddress() const
	{
		return m_nStartAddr;
	};
	void SetStartAddress(int nStartAddr)
	{
		assert(nStartAddr>=0 && nStartAddr<64*1024);
		m_nStartAddr = nStartAddr;
	};
	int GetDataSize() const
	{
		return m_baData.GetDataSize();
	};
	BYTE* GetData() const
	{
		return m_baData.GetDataPBYTE();
	};
	BOOL SetData(LPCVOID pvData,int nDataSize)
	{
		return m_baData.Clone(pvData,nDataSize);
	};
	BOOL ReplaceAt(int nPos,LPCVOID pvData,int nDataSize)
	{
		return m_baData.ReplaceAt(nPos,pvData,nDataSize);
	};
	void Empty()
	{
		m_baData.Free();
	};
	void Reset()
	{
		m_baData.Free();
		m_nImgType = 0;
		m_nStartAddr = 0;
	};
protected:
	BOOL IsValidLine(BYTE *byData,int nSize) const
	{
		if(nSize<5) return FALSE;
		if(byData[0]!=nSize-5) return FALSE;
		if(byData[3]>(BYTE)5) return FALSE;
		BYTE by = 0;
		for(int i=0;i<nSize-1;++i) by += byData[i];
		by = ~by;
		++by;
		return (by==byData[nSize-1]);//checksum
	};
	BYTE DoChecksum(BYTE *byData,int nSize) const
	{
		BYTE by = 0;
		for(;nSize>0;by += *byData++);
		by = ~by;
		++by;
		return by;
	};
public:
	BOOL Load(LPCSTR strFilePath)
	{
		DiskFile df;
		if(!df.Open(strFilePath,GENERIC_READ,OPEN_EXISTING)) return FALSE;
		DWORD dw = df.GetSize();
		GMemory<char>gm(dw + 4);
		if(!gm.m_pT) return FALSE;
		if(df.Read(gm.m_pT,dw)!=dw) return FALSE;
		Reset();
		LPCSTR p = (LPCSTR)gm.m_pT;
		HexLine hl;
		BYTE *by = NULL;
		int nSize;
		DWORD dwOffset = 0;
		for(;hl.LoadLine(p);)
		{
			by = hl.GetData();
			nSize = hl.GetDataSize();
			if(IsValidLine(by,nSize))
			{
				switch(by[3])
				{
				case 0:
					if(m_nImgType==0)
					{
						//TRACE("bad img type\n");
						return FALSE;//unknow img
					}
					if((DWORD)(by[1]<<8 | by[2]) != dwOffset)
					{
						//TRACE("bad offset\n");
						return FALSE;//there is a hole in memory
					}
					if(!m_baData.Append(by+4,by[0])) assert(FALSE);
					dwOffset+=by[0];
					break;
				case 1:
					return TRUE;
				default:
					assert(by[0]==2);
					assert(m_nImgType==0 && m_nStartAddr==0);
					if(by[0]!=2 || m_nImgType!=0 && m_nStartAddr!=0)
					{
						//TRACE("multiple img type\n");
						return FALSE;
					}
					m_nImgType = by[3];
					m_nStartAddr = (int)((by[4] << 8) | by[5]);
				}
			}
		}
		//TRACE("no end line\n");
		return FALSE;//no end line found
	};
	BOOL Save(LPCSTR strFilePath)
	{
		if(m_baData.GetDataSize()<=0) return FALSE;//empty file
		DiskFile df;
		if(!df.Open(strFilePath,GENERIC_WRITE,CREATE_ALWAYS)) return FALSE;
		df.Empty();
		char buf[128];
		BYTE temp[16];
		memset(buf,0,sizeof(buf));
		memset(temp,0,sizeof(temp));
		temp[0] = 0x02;
		temp[1] = 0x00;
		temp[2] = 0x00;
		temp[3] = (BYTE)m_nImgType;
		temp[4] = (BYTE)(m_nStartAddr>>8);
		temp[5] = (BYTE)m_nStartAddr;
		sprintf(buf,":020000%02X%04X%02X\r\n",(BYTE)m_nImgType,(WORD)m_nStartAddr,DoChecksum(temp,6));
		if(df.Write(buf)!=strlen(buf)) return FALSE;//write error
		BYTE *by = m_baData.GetDataPBYTE();
		int nLen = m_baData.GetDataSize();
		DWORD dwOffset = 0;
		for(;nLen>=16;nLen-=16,dwOffset+=16,by+=16)
		{
			sprintf(buf,":10%04X00%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X\r\n",
				dwOffset,by[0],by[1],by[2],by[3],by[4],by[5],by[6],by[7],by[8],by[9],by[10],by[11],
				by[12],by[13],by[14],by[15],
				DoChecksum(by,16));
			if(df.Write(buf)!=strlen(buf)) return FALSE;//write error
		}
		if(nLen>0)
		{
			char *p = buf;
			sprintf(p,":%02X%04X00",(BYTE)nLen,dwOffset);
			BYTE byChecksum = DoChecksum(by,nLen);
			for(p+=strlen(p);nLen>0;--nLen,p+=strlen(p)) sprintf(p,"%02X",*by++);
			sprintf(p,"%02X\r\n",byChecksum);
			if(df.Write(buf)!=strlen(buf)) return FALSE;//write error
		}
		if(df.Write(":00000001FF\r\n")!=strlen(":00000001FF\r\n")) return FALSE;
		return TRUE;
	};
public:
	IntelHex()
	{
		m_baData.SetGrowSize(1024);
	};
	IntelHex& operator=(const IntelHex& aih)
	{
		m_nImgType = aih.m_nImgType;
		m_nStartAddr = aih.m_nStartAddr;
		m_baData = aih.m_baData;
		return *this;
	};
	IntelHex(const IntelHex& aih)
	{
		*this = aih;
	};
	BOOL operator==(const IntelHex& aih)
	{
		return m_nImgType==aih.m_nImgType
			&& m_nStartAddr==aih.m_nStartAddr
			&& m_baData==aih.m_baData;
	};
	BOOL operator!=(const IntelHex& aih)
	{
		return !(*this==aih);
	};
	~IntelHex(){};
};

class DllLoader
{
public:
	HMODULE m_hLib;
public:
	void Unload()
	{
		if(m_hLib) FreeLibrary(m_hLib);
		m_hLib = NULL;
	};
	BOOL Load(LPCSTR strDllName)
	{
		m_hLib = LoadLibrary(strDllName);
		return m_hLib!=NULL;
	};
	HMODULE Detach()
	{
		HMODULE hLib = m_hLib;
		m_hLib = NULL;
		return hLib;
	};
	HMODULE GetHandle() const
	{
		return m_hLib;
	};
	void Attach(HMODULE hLib)
	{
		Unload();
		m_hLib = hLib;
	};
	operator HMODULE()
	{
		return m_hLib;
	};
public:
	DllLoader()
	{
		m_hLib = NULL;
	};
	DllLoader(LPCSTR strDllName)
	{
		Load(strDllName);
	};
	~DllLoader()
	{
		Unload();
	};
};

template<class T>
T FnFinder(HMODULE hLib,LPCSTR strFnName)
{
	if(!hLib) return NULL;
	return (T)GetProcAddress(hLib,strFnName);
};

class FileVerifier
{
public:
	FileVerifier(){};
	~FileVerifier(){};
public:
	BOOL IsExisting(LPCSTR strFileName) const
	{
		WIN32_FIND_DATA fd;
		HANDLE h = FindFirstFile(strFileName,&fd);
		if(h) FindClose(h);
		return h!=NULL;
	};
	BOOL IsNonempty(LPCSTR strFileName) const
	{
		WIN32_FIND_DATA fd;
		HANDLE h = FindFirstFile(strFileName,&fd);
		if(!h) return FALSE;
		DWORD dw = GetFileSize(h,NULL);
		FindClose(h);
		return (dw!=0);
	};
};

enum CODECMOTHOD
{
	CODEC_HEX,
	CODEC_HEX2C,
	CODEC_URL,
	CODEC_UTF7,	//SE64
	CODEC_RLE,
	CODEC_RLEHEX,
	CODEC_TRANS8,
	CODEC_TRANS2S,
	CODEC_TRANS1CYCLE,
	CODEC_UTF8,
	CODEC_ZIP,
	CODEC_RAR,
	CODEC_UU,
	CODEC_CAB,
	CODEC_ACE,
	CODEC_BZ2,
	CODEC_LZW,
	CODEC_LZ77,
};

class Hotkey
{
	ATOM m_hAtom;
	HWND m_hWnd;
	BOOL m_bRegistered;
	UINT m_nCmdID;
public:
	BOOL IsRegistered() const
	{
		return m_bRegistered;
	};
	void Unregister()
	{
		if(m_bRegistered) UnregisterHotKey(m_hWnd,m_hAtom);
		DeleteAtom(m_hAtom);
		m_nCmdID = 0;
		m_bRegistered = FALSE;
		m_hAtom = 0;
		m_hWnd = NULL;
	};
	BOOL Register(HWND hWnd,UINT unModifier,UINT unVirtualKey,UINT nCmdID)
	{
		char buf[128];
		sprintf(buf,"%p%d%d",hWnd,unModifier,unVirtualKey);
		m_hAtom = AddAtom(buf);
		if(!m_hAtom) return FALSE;
		m_hWnd = hWnd;
		m_nCmdID = nCmdID;
		ASSERT(nCmdID);
		m_bRegistered = RegisterHotKey(hWnd,m_hAtom,unModifier,unVirtualKey);
		return m_bRegistered;
	};
	BOOL ProcessCmd(ATOM hAtom)
	{
		if(hAtom==m_hAtom) return PostMessage(m_hWnd,WM_COMMAND,m_nCmdID,0);
		return FALSE;
	};
public:
	Hotkey()
	{
		m_nCmdID = 0;
		m_bRegistered = FALSE;
		m_hAtom = 0;
		m_hWnd = NULL;
	};
	~Hotkey()
	{
		Unregister();
	};
};

class Clipper
{
	BOOL m_bOpened;
public:
	void Close()
	{
		if(m_bOpened) CloseClipboard();
		m_bOpened = FALSE;
	};
	BOOL Open()
	{
		Close();
		m_bOpened = OpenClipboard(NULL);
		return m_bOpened;
	};
public:
	Clipper()
	{
		m_bOpened = FALSE;
	};
	~Clipper()
	{
		Close();
	};
};

class ClipperData
{
	UINT m_nFormat;
	int m_nDataLen;
	PSTR m_strData;
public:
	UINT GetDataFormat() const
	{
		return m_nFormat;
	};
	PSTR GetBuffer() const
	{
		return m_strData;
	};
	int GetDataSize() const
	{
		return m_nDataLen;
	};
	void Free()
	{
		if(m_strData) delete [] m_strData;
		m_strData = NULL;
		m_nDataLen = 0;
	};
	PSTR Dumplicate()
	{
		Free();
		Clipper c;
		if(!c.Open()) return NULL;
		m_nFormat = EnumClipboardFormats(0);
		if(!m_nFormat) return NULL;
		GMLock gl(GetClipboardData(m_nFormat));
		if(!gl.GetHandle() || gl.GetDataSize()<=0) return NULL;
		m_nDataLen = gl.GetDataSize();
		CCSAutoMem m;
		if(!m.Allocate(m_nDataLen)) return NULL;
		memcpy(m.m_pBuf,gl.GetBuffer(),m_nDataLen);
		m_strData = m.Detach(FALSE);
		return m_strData;
	};
	BOOL SetClipData(PSTR strData,int nDataLen,int nFormat)
	{
		GMAllocator ga;
		if(!ga.Allocate(strData,nDataLen)) return FALSE;
		Clipper c;
		if(!c.Open()) return FALSE;
		if(SetClipboardData(nFormat,ga.GetHandle()))
		{
			ga.Detach();
			return TRUE;
		}
		return FALSE;
	};
	BOOL SetClipData(PSTR strData,int nDataLen,LPCSTR strFormatName)
	{
		UINT nFormat = RegisterClipboardFormat(strFormatName);
		if(!nFormat) return FALSE;
		return SetClipData(strData,nDataLen,nFormat);
	};
	CCSAutoMem& Detach()
	{
		CCSAutoMem& m = *(new CCSAutoMem);
		if(m_strData && m_nDataLen) m.Attach(m_strData,m_nDataLen,TRUE);
		m_strData = NULL;
		m_nFormat = 0;
		m_nDataLen = 0;
		return m;
	};
public:
	ClipperData()
	{
		m_nFormat = 0;
		m_nDataLen = 0;
		m_strData = NULL;
	};
	~ClipperData()
	{
		Free();
	};
};

class CCodecWizardDlg : public CDialog
{
// Construction
	int m_nMinHeight;
	int m_nMinWidth;
	Hotkey m_hotKey;
	Hotkey m_Encode;
	Hotkey m_Decode;
public:
	void SetOutput(ByteArray& mem,int nMethod,BOOL bEncode);
	CCSAutoMem& GetInput(int nMethod,BOOL bEncode);
	void ClearAll();
	BOOL TryGetText(CCSAutoMem& m);
	CCSAutoMem& TryGetBin(CCSAutoMem& m);
	BOOL m_bInitOK;
	HACCEL m_hAccel;
	CCodecWizardDlg(CWnd* pParent = NULL);	// standard constructor

// Dialog Data
	//{{AFX_DATA(CCodecWizardDlg)
	enum { IDD = IDD_CODECWIZARD_DIALOG };
		// NOTE: the ClassWizard will add data members here
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CCodecWizardDlg)
	public:
	virtual BOOL PreTranslateMessage(MSG* pMsg);
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	HICON m_hIcon;

	// Generated message map functions
	//{{AFX_MSG(CCodecWizardDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	virtual void OnCancel();
	afx_msg void OnPaste();
	afx_msg void OnCopy();
	virtual void OnOK();
	afx_msg void OnDecode();
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnSizing(UINT fwSide, LPRECT pRect);
	afx_msg void OnAlldone();
	afx_msg void OnAllundo();
	afx_msg void OnShow();
	afx_msg void OnHotkey(ATOM hAtom,DWORD dwKey);
	afx_msg void OnFile();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_CODECWIZARDDLG_H__945F034D_C3CB_4CCB_8D8A_2B048B70D693__INCLUDED_)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂久久一区二区三区| 久久久久久久久伊人| 亚洲国产人成综合网站| 在线观看成人免费视频| 亚洲aaa精品| 日韩欧美一二三| 激情综合色综合久久综合| 欧美激情综合五月色丁香小说| 成人免费观看av| 亚洲制服丝袜一区| 日韩精品一区二区三区中文精品| 国产高清不卡一区| 国产精品系列在线| 福利电影一区二区| 中文字幕在线不卡一区二区三区| 成人美女视频在线看| 国产成人啪午夜精品网站男同| 精品国产成人在线影院| 成人教育av在线| 亚洲一区二区三区免费视频| 欧美一级视频精品观看| 成人在线综合网站| 亚洲网友自拍偷拍| 久久噜噜亚洲综合| 91丨porny丨国产| 毛片基地黄久久久久久天堂| 中文字幕成人在线观看| 91精品国产色综合久久久蜜香臀| 国产精品亚洲专一区二区三区| 一区二区三区日韩欧美| 一区二区三区免费网站| 欧美日韩国产综合一区二区| 国产一区91精品张津瑜| 亚洲一区二区精品久久av| 久久久精品欧美丰满| 欧美日韩国产不卡| 成人a区在线观看| 美国十次了思思久久精品导航| 欧美激情一二三区| 欧美成人女星排名| 欧美影片第一页| 高清不卡在线观看av| 美女在线一区二区| 亚洲自拍偷拍麻豆| 最新国产の精品合集bt伙计| 日韩一级完整毛片| 欧美亚洲免费在线一区| yourporn久久国产精品| 狠狠色2019综合网| 日本欧美在线观看| 亚洲不卡av一区二区三区| 国产精品麻豆网站| 国产日韩欧美精品在线| 欧美白人最猛性xxxxx69交| 在线一区二区三区| 一本久道久久综合中文字幕| 成人午夜av电影| 国产成人午夜电影网| 久久电影网电视剧免费观看| 五月婷婷久久综合| 亚洲高清视频在线| 亚洲香肠在线观看| 亚洲一级二级在线| 亚洲国产综合人成综合网站| 亚洲精选免费视频| 亚洲欧美激情一区二区| 国产精品白丝在线| 国产精品电影一区二区| 国产精品色眯眯| 国产精品少妇自拍| 中文字幕国产一区| 国产精品传媒视频| 国产精品九色蝌蚪自拍| 国产精品成人网| 亚洲裸体在线观看| 一区二区三区欧美日韩| 一区二区三区影院| 亚洲电影在线播放| 欧美bbbbb| 国内精品免费**视频| 成人午夜碰碰视频| 日韩黄色小视频| 久久99日本精品| 午夜视频一区在线观看| 亚洲精品少妇30p| 国产精品成人免费精品自在线观看| 91麻豆精品91久久久久久清纯| 国产成人aaa| 国产精品99久久久久久有的能看| 亚洲欧美国产毛片在线| 精品国产污污免费网站入口 | 在线视频国内一区二区| 成人av在线资源网| 色中色一区二区| 69p69国产精品| 日韩你懂的在线播放| 久久免费美女视频| 国产精品日韩成人| 一区二区欧美在线观看| 午夜精品久久久久久久| 精品在线观看视频| av激情成人网| 制服丝袜av成人在线看| 久久久久青草大香线综合精品| 中文字幕国产精品一区二区| 亚洲国产日韩a在线播放| 久久www免费人成看片高清| 波多野结衣在线一区| 欧美三电影在线| 久久久久久亚洲综合影院红桃 | 亚洲精品ww久久久久久p站| 水蜜桃久久夜色精品一区的特点| 国产一区二区精品久久91| 99re这里都是精品| 欧美电影免费观看高清完整版在线 | 亚洲国产乱码最新视频| 久久99国产乱子伦精品免费| 成人a级免费电影| 91精品在线观看入口| 国产精品日韩成人| 美国毛片一区二区| 在线看国产一区二区| 久久亚洲二区三区| 亚洲综合一区二区三区| 国产成人综合亚洲网站| 欧美精品亚洲一区二区在线播放| 久久久亚洲午夜电影| 日韩和欧美一区二区| 91亚洲大成网污www| 久久综合色8888| 亚洲444eee在线观看| 成人av在线一区二区三区| 欧美电影免费观看高清完整版 | 日本中文字幕一区二区视频 | 成人免费毛片片v| 日韩免费一区二区| 亚洲高清视频在线| 91精品福利在线| 中文字幕高清一区| 激情综合一区二区三区| 5566中文字幕一区二区电影| 亚洲综合图片区| 色综合一个色综合亚洲| 久久精品夜夜夜夜久久| 精品中文字幕一区二区| 这里只有精品视频在线观看| 一区二区在线观看视频| 成人福利视频网站| 激情丁香综合五月| 欧美亚洲另类激情小说| 国产精品免费视频一区| 国产在线国偷精品免费看| 欧美日韩高清一区| 亚洲欧美aⅴ...| 91丨porny丨户外露出| 国产精品妹子av| 成人夜色视频网站在线观看| 久久久久九九视频| 国产麻豆午夜三级精品| 精品国产一区二区三区四区四| 日本免费新一区视频| 日韩亚洲电影在线| 蜜臀精品一区二区三区在线观看| 91精品国产综合久久久蜜臀图片| 亚洲一区二区三区四区的| 欧美性感一区二区三区| 亚洲一二三区在线观看| 欧美日韩成人综合天天影院 | 综合色天天鬼久久鬼色| 成人黄色网址在线观看| 亚洲欧美自拍偷拍色图| 91精品国产高清一区二区三区蜜臀| 一区二区三区四区激情| 97久久精品人人爽人人爽蜜臀| 中文字幕不卡的av| 99精品久久久久久| 一区二区在线观看av| 欧美日本在线播放| 日本不卡视频在线| 国产喂奶挤奶一区二区三区| 高清不卡一区二区| 亚洲人成在线观看一区二区| 欧美亚洲一区三区| 蜜桃视频在线观看一区二区| 2024国产精品视频| 99精品在线观看视频| 亚洲高清在线视频| 精品国产一区a| 97se狠狠狠综合亚洲狠狠| 亚洲国产精品久久久久秋霞影院| 欧美一区二区三区免费大片| 国产在线国偷精品免费看| 综合久久综合久久| 欧美三级电影一区| 国产福利一区二区| 亚洲综合男人的天堂| 欧美精品一区二区三区蜜桃视频| 成人永久免费视频| 五月婷婷色综合| 国产精品久线观看视频|