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

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

?? binfilefactory_text.cpp

?? Resource editor base speadrum Chinese mobile
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// BinFileFactory_Ring.cpp: implementation of the CBinFileFactory class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ResourceEditor.h"
#include "BinFileFactory.h"
#include "MMIRes.h"
#include "DirFileInfo.h"
#include "Converter.h"

#include "mmi_text_def.h"

#include <memory>

void CBinFileFactory::CalcTextInfo()
{
    _ASSERTE( m_dwTextOffset > 0 );

    CMMIRes        &mmires   = g_theApp.m_MMIRes;
    MMI_RESOURCE_T &res      = mmires.m_Resource;
    MMI_RES_DATA_T &TextData = res.mmi_data_table[MMI_RT_TEXT];
    TEXT_MAP       &txtMap   = mmires.m_mapText; 

    DWORD dwBase    = res.ToolUsedInfo.nStartAddress;
    BOOL  bIsOffset = res.ToolUsedInfo.bAddrIsOffset;

    TextData.pData  = (void *)CalcAddr(dwBase, m_dwTextOffset, bIsOffset);
    // 保持4字節對齊
    _ASSERTE((uint32)TextData.pData % sizeof(uint32) == 0);

    TextData.uCount = txtMap.GetCount();
    TextData.uSize  = 0;

    PTEXTINFO pTextInfo = NULL;
    CString   strID;
    POSITION pos = mmires.m_mapText.GetStartPosition();
    while( pos != NULL )
    {
        txtMap.GetNextAssoc( pos, strID, pTextInfo );

        TextData.uSize += sizeof(char *) + sizeof(uint8 *) + sizeof(char *);
        // 注意:需要包含結尾符0
        TextData.uSize += Addr4ByteAlign(strlen(pTextInfo->szEnglish) + 1);
        TextData.uSize += Addr4ByteAlign((UCHAR)(pTextInfo->szSimpleChinese[0]) + 1);
        TextData.uSize += Addr4ByteAlign((UCHAR)(pTextInfo->szTraditionalChinese[0]) + 1);
    }
    
    if( TextData.uCount > 0 )
    {
        TextData.uSize += sizeof(KSP_TEXT_T) * TT_MAX_NUM;
    }

    m_dwFontOffset = m_dwTextOffset + TextData.uSize;
    m_dwFontOffset = Addr4ByteAlign(m_dwFontOffset);
}

//xb
void CBinFileFactory::CalcTextInfoEx()
{
    _ASSERTE( m_dwTextOffset > 0 );

    CMMIRes        &mmires   = g_theApp.m_MMIRes;
    MMI_RESOURCE_T &res      = mmires.m_Resource;
    MMI_RES_DATA_T &TextData = res.mmi_data_table[MMI_RT_TEXT];
    TEXTEX_MAP       &txtExMap   = mmires.m_mapTextEx; 
    int              &nLangNum = g_theApp.m_nUsedLangNum;
    DWORD dwBase    = res.ToolUsedInfo.nStartAddress;
    BOOL  bIsOffset = res.ToolUsedInfo.bAddrIsOffset;

    TextData.pData  = (void *)CalcAddr(dwBase, m_dwTextOffset, bIsOffset);
    // 保持4字節對齊
    _ASSERTE((uint32)TextData.pData % sizeof(uint32) == 0);

    TextData.uCount = txtExMap.GetCount();
    TextData.uSize  = 0;

    PTEXTINFOEX pTextInfoEx = NULL;
    CString   strID;
    POSITION pos = mmires.m_mapTextEx.GetStartPosition();
	int nStrSize = 0;
    while( pos != NULL )
    {
        txtExMap.GetNextAssoc( pos, strID, pTextInfoEx );

        
		for(int i = 0; i < g_theApp.m_nUsedLangNum; i++)
		{
			//語言的指針所占的字節數
			TextData.uSize += sizeof(char *);
		
			if((UCHAR)pTextInfoEx->szLanguage[i][0]<0x80) //ASCII
			{
				// 注意:需要包含結尾符0
				TextData.uSize += Addr4ByteAlign(strlen(pTextInfoEx->szLanguage[i]) + 1 );
			}
			else //Unicode
			{			
				LPWORD lpwStrSize=(LPWORD) (pTextInfoEx->szLanguage[i]+1);
				nStrSize = *lpwStrSize;
				TextData.uSize += Addr4ByteAlign(nStrSize + 3);			
			}
		}
    }
    
    if( TextData.uCount > 0 )
    {
        
		TextData.uSize += sizeof(KSP_TEXT_T) * nLangNum;

    }

    m_dwFontOffset = m_dwTextOffset + TextData.uSize;
    m_dwFontOffset = Addr4ByteAlign(m_dwFontOffset);
}
//xe*/

BOOL CBinFileFactory::WriteTextInfo( FILE * pFile )
{
    _ASSERTE( pFile != NULL );

    CMMIRes        &mmires  = g_theApp.m_MMIRes;
    MMI_RESOURCE_T &res     = mmires.m_Resource;
    MMI_RES_DATA_T &TxtData = res.mmi_data_table[MMI_RT_TEXT];
    TEXT_MAP       &txtMap  = mmires.m_mapText;
    CDirFileInfo   * pInfo  = g_theApp.m_pTextInfo;
   
    int nCount = TxtData.uCount;
    if( nCount == 0 )
        return TRUE;

    _ASSERTE(( (uint32)ftell(pFile) == ((uint32)TxtData.pData +g_theApp.prj_arm_addr))||
		     ( (uint32)ftell(pFile) == ((uint32)TxtData.pData +g_theApp.prj_win_addr)));

///////////////////////////////////////////////////////////////////////////////
#define WRITE_FILE(des, st, num, file)      \
    if( fwrite(des, st, num, file) != num ) \
    {                                       \
        _ASSERTE(0);                        \
        _tcscpy(m_szErrMsg, _T("Write file error!"));  \
        return FALSE;                       \
    }
///////////////////////////////////////////////////////////////////////////////

    KSP_TEXT_T kspTxt[TT_MAX_NUM];
    kspTxt[TT_ENGLISH].pTxtTable = (char *)TxtData.pData + sizeof(kspTxt);
    kspTxt[TT_CHINESESIMPLE].pTxtTable = kspTxt[TT_ENGLISH].pTxtTable + sizeof(char *) * nCount;
    kspTxt[TT_CHINESETRADITIONAL].pTxtTable = kspTxt[TT_CHINESESIMPLE].pTxtTable + sizeof(uint8 *) * nCount;
    const BOOL bBigEdn = res.ToolUsedInfo.bBigEndian;
    CConverter conv;
    if( bBigEdn )
    {
        kspTxt[TT_ENGLISH].pTxtTable = (char *)conv.ConvEdn_INT((DWORD)kspTxt[TT_ENGLISH].pTxtTable);
        kspTxt[TT_CHINESESIMPLE].pTxtTable = (char *)conv.ConvEdn_INT((DWORD)kspTxt[TT_CHINESESIMPLE].pTxtTable);
		kspTxt[TT_CHINESETRADITIONAL].pTxtTable = (char *)conv.ConvEdn_INT((DWORD)kspTxt[TT_CHINESETRADITIONAL].pTxtTable);
    }
    WRITE_FILE(kspTxt, sizeof(kspTxt), 1, pFile);
    if( bBigEdn )
    {
        kspTxt[TT_ENGLISH].pTxtTable = (char *)conv.ConvEdn_INT((DWORD)kspTxt[TT_ENGLISH].pTxtTable);
        kspTxt[TT_CHINESESIMPLE].pTxtTable = (char *)conv.ConvEdn_INT((DWORD)kspTxt[TT_CHINESESIMPLE].pTxtTable);
		kspTxt[TT_CHINESETRADITIONAL].pTxtTable = (char *)conv.ConvEdn_INT((DWORD)kspTxt[TT_CHINESETRADITIONAL].pTxtTable);
    }

    CStringArray arrID;
    pInfo->CalcAllLeafID(arrID);
    _ASSERTE( nCount == arrID.GetSize() );
    _ASSERTE( nCount == txtMap.GetCount() );

    uint32 nAddr =(uint32)kspTxt[TT_CHINESETRADITIONAL].pTxtTable + sizeof(char *) * nCount;
    nAddr = Addr4ByteAlign(nAddr);
    int       i        = 0;
    PTEXTINFO pTxtInfo = NULL;
    for( i = 0; i < nCount; ++i )
    {
        VERIFY( txtMap.Lookup(arrID[i], pTxtInfo) );

        if( bBigEdn ) nAddr = conv.ConvEdn_INT(nAddr);
        WRITE_FILE(&nAddr, sizeof(nAddr), 1, pFile);
        if( bBigEdn ) nAddr = conv.ConvEdn_INT(nAddr);

        nAddr += (strlen(pTxtInfo->szEnglish) + 1);
        nAddr = Addr4ByteAlign(nAddr);
    }

    for( i = 0; i < nCount; ++i )
    {
        VERIFY( txtMap.Lookup(arrID[i], pTxtInfo) );

        if( bBigEdn ) nAddr = conv.ConvEdn_INT(nAddr);
        WRITE_FILE(&nAddr, sizeof(nAddr), 1, pFile);
        if( bBigEdn ) nAddr = conv.ConvEdn_INT(nAddr);

        nAddr += (UCHAR)(pTxtInfo->szSimpleChinese[0]) + 1;
        nAddr = Addr4ByteAlign(nAddr);
    }

    for( i = 0; i < nCount; ++i )
    {
        VERIFY( txtMap.Lookup(arrID[i], pTxtInfo) );

        if( bBigEdn ) nAddr = conv.ConvEdn_INT(nAddr);
        WRITE_FILE(&nAddr, sizeof(nAddr), 1, pFile);
        if( bBigEdn ) nAddr = conv.ConvEdn_INT(nAddr);
        if( pTxtInfo->szTraditionalChinese[0] == 0 )
            pTxtInfo->szTraditionalChinese[0] = 1;
        nAddr += (UCHAR)(pTxtInfo->szTraditionalChinese[0]) + 1;
        nAddr = Addr4ByteAlign(nAddr);
    }

    BYTE arrAlign[] = { 0x00, 0x00, 0x00, 0x00 };
    int  nSize = 0;
    for( i = 0; i < nCount; ++i )
    {
        VERIFY( txtMap.Lookup(arrID[i], pTxtInfo) );

        nSize = strlen(pTxtInfo->szEnglish) + 1;
        WRITE_FILE(pTxtInfo->szEnglish, nSize, 1, pFile);
        
        nAddr = Addr4ByteAlign(nSize);
        fwrite(arrAlign, nAddr - nSize, 1, pFile);
    }

    for( i = 0; i < nCount; ++i )
    {
        VERIFY( txtMap.Lookup(arrID[i], pTxtInfo) );

        nSize = (UCHAR)(pTxtInfo->szSimpleChinese[0]) + 1;

        WRITE_FILE(pTxtInfo->szSimpleChinese,  nSize, 1, pFile);

        nAddr = Addr4ByteAlign(nSize);
        fwrite(arrAlign, nAddr - nSize, 1, pFile);
    }

    for( i = 0; i < nCount; ++i )
    {
        VERIFY( txtMap.Lookup(arrID[i], pTxtInfo) );

        nSize = (UCHAR)(pTxtInfo->szTraditionalChinese[0]) + 1;

        WRITE_FILE(pTxtInfo->szTraditionalChinese,  nSize, 1, pFile);

        nAddr = Addr4ByteAlign(nSize);
        fwrite(arrAlign, nAddr - nSize, 1, pFile);
    }

    return TRUE;
}

//ex
BOOL CBinFileFactory::WriteTextInfoEx( FILE * pFile )
{
    _ASSERTE( pFile != NULL );

    CMMIRes        &mmires  = g_theApp.m_MMIRes;
    MMI_RESOURCE_T &res     = mmires.m_Resource;
    MMI_RES_DATA_T &TxtData = res.mmi_data_table[MMI_RT_TEXT];
    TEXTEX_MAP       &txtExMap  = mmires.m_mapTextEx;
    CDirFileInfo   * pInfo  = g_theApp.m_pTextInfo;
	int            &nLangNum = g_theApp.m_nUsedLangNum;
   
    int nCount = TxtData.uCount;
    if( nCount == 0 )
        return TRUE;

    _ASSERTE(( (uint32)ftell(pFile) == ((uint32)TxtData.pData +g_theApp.prj_arm_addr))||
		     ( (uint32)ftell(pFile) == ((uint32)TxtData.pData +g_theApp.prj_win_addr)));

///////////////////////////////////////////////////////////////////////////////
#define WRITE_FILE_EX(des, st, num, file)      \
    if( fwrite(des, st, num, file) != num ) \
    {                                       \
        _ASSERTE(0);                        \
        _tcscpy(m_szErrMsg, _T("Write file error!"));  \
        return FALSE;                       \
    }
///////////////////////////////////////////////////////////////////////////////

	PKSP_TEXT_T pKspText = (PKSP_TEXT_T)new KSP_TEXT_T[nLangNum];
	if(NULL== pKspText)
	  return FALSE;
    pKspText[0].pTxtTable = (char *)TxtData.pData + sizeof(KSP_TEXT_T)*nLangNum;
	pKspText[0].nbText =  nLangNum;

	int i = 0,j=0;

	for(i = 1; i < nLangNum; i++)
	{
		pKspText[i].pTxtTable = pKspText[i-1].pTxtTable + sizeof(char *) * nCount;
		pKspText[i].nbText = nLangNum;
	}

    const BOOL bBigEdn = res.ToolUsedInfo.bBigEndian;
    CConverter conv;

    if( bBigEdn )
    {
		for(i=0;i<nLangNum;i++)
		{			
			pKspText[i].pTxtTable = (char *)conv.ConvEdn_INT((DWORD)pKspText[i].pTxtTable);
		}        
    }

	WRITE_FILE_EX(pKspText, sizeof(KSP_TEXT_T)*nLangNum, 1, pFile);

    if( bBigEdn )
    {
 		for(i=0;i<nLangNum;i++)
		{			
			pKspText[i].pTxtTable = (char *)conv.ConvEdn_INT((DWORD)pKspText[i].pTxtTable);
		} 
    }

    CStringArray arrID;
    pInfo->CalcAllLeafID(arrID);
    _ASSERTE( nCount == arrID.GetSize() );
    _ASSERTE( nCount == txtExMap.GetCount() );
  
	uint32 nAddr =(uint32)pKspText[nLangNum-1].pTxtTable + sizeof(char *) * nCount;
    nAddr = Addr4ByteAlign(nAddr);

    PTEXTINFOEX pTxtInfoEx = NULL;
	int nStrSize = 0;
	for(j=0; j < nLangNum; j++)
	{
		for( i = 0; i < nCount; ++i )
		{
			VERIFY( txtExMap.Lookup(arrID[i], pTxtInfoEx) );

			if( bBigEdn ) 
				nAddr = conv.ConvEdn_INT(nAddr);

			WRITE_FILE_EX(&nAddr, sizeof(nAddr), 1, pFile);

			if( bBigEdn ) 
				nAddr = conv.ConvEdn_INT(nAddr);
			//@hongliang.xin 2006-11-23
			if((UCHAR)(pTxtInfoEx->szLanguage[j][0])<(UCHAR)0x80) //ASCII
			{
				nAddr += (strlen(pTxtInfoEx->szLanguage[j]) + 1 );
			}
			else //Unicode
			{			
				LPWORD lpwStrSize=(LPWORD) (pTxtInfoEx->szLanguage[j]+1);
				nStrSize = (int)*lpwStrSize;
				nAddr += (nStrSize + 3);
				
			}	 
/*			if(g_theApp.m_nArrLangCBN[j]==1)
				nAddr += (strlen(pTxtInfoEx->szLanguage[j]) + 1);
			else
			{
				if( pTxtInfoEx->szLanguage[j][0] == 1 )
					pTxtInfoEx->szLanguage[j][0] = 0;
				nAddr += ((UCHAR)(pTxtInfoEx->szLanguage[j][0]) + 1);
			}
*/
			nAddr = Addr4ByteAlign(nAddr);
		}
	}


    BYTE arrAlign[] = { 0x00, 0x00, 0x00, 0x00 };
    int  nSize = 0;

	for( j = 0; j < nLangNum; j++ )
	{
		for( i = 0; i < nCount; ++i )
		{
			VERIFY( txtExMap.Lookup(arrID[i], pTxtInfoEx) );
			//@hongliang.xin 2006-11-23
			if((UCHAR)(pTxtInfoEx->szLanguage[j][0])<(UCHAR)0x80) //ASCII
			{
				nSize = strlen(pTxtInfoEx->szLanguage[j]) + 1;
				WRITE_FILE_EX(pTxtInfoEx->szLanguage[j], nSize, 1, pFile);
			}
			else //Unicode
			{			
				LPWORD lpwStrSize=(LPWORD) (pTxtInfoEx->szLanguage[j]+1);
				WORD wStrSize = *lpwStrSize;
				nStrSize = wStrSize;
				nSize = nStrSize + 3;

				//@hongliang.xin 2006-12-22
				//都要存為Big Endian,都需要轉換
				//if(bBigEdn) //轉換
					conv.LitEdnToBigEdn((LPWORD)(pTxtInfoEx->szLanguage[j]+1),nStrSize/2+1);

				WRITE_FILE_EX(pTxtInfoEx->szLanguage[j], nSize, 1, pFile);
				
				//if(bBigEdn)//轉換回來
					conv.BigEdnToLitEdn((LPWORD)(pTxtInfoEx->szLanguage[j]+1),nStrSize/2+1);
				
			}	 
/*			if(g_theApp.m_nArrLangCBN[j]==1)
				nSize = strlen(pTxtInfoEx->szLanguage[j]) + 1;
			else
				nSize = (UCHAR)(pTxtInfoEx->szLanguage[j][0]) + 1;

			WRITE_FILE_EX(pTxtInfoEx->szLanguage[j], nSize, 1, pFile);
*/       
			nAddr = Addr4ByteAlign(nSize);
			fwrite(arrAlign, nAddr - nSize, 1, pFile);
		}
	}

    return TRUE;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区导航在线播放| 制服丝袜一区二区三区| 美女一区二区久久| 久久激五月天综合精品| 日韩精品成人一区二区在线| 亚洲国产精品一区二区www在线| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产精品嫩草久久久久| 欧美少妇性性性| 懂色av一区二区三区免费观看| 亚洲自拍欧美精品| 性做久久久久久免费观看欧美| 亚洲乱码国产乱码精品精的特点 | 日韩午夜电影av| 欧美成人精品二区三区99精品| 欧美日韩高清在线| 精品久久久久久久一区二区蜜臀| 色综合咪咪久久| 99久久综合国产精品| 欧美在线视频全部完| 日韩写真欧美这视频| 99热精品国产| 成人一区二区三区中文字幕| 国产91精品欧美| 色综合久久88色综合天天免费| 欧美无乱码久久久免费午夜一区| 色国产综合视频| 精品国产一区二区三区不卡| 精品国产一区二区三区四区四| 中文字幕欧美国产| 亚洲欧美日韩在线不卡| 亚洲国产成人av网| 国产精品亚洲专一区二区三区| 91麻豆国产自产在线观看| 麻豆精品国产91久久久久久| 五月天精品一区二区三区| 国产乱理伦片在线观看夜一区| 在线中文字幕不卡| 国产欧美日韩视频一区二区| 日韩精品福利网| 欧美三级在线看| 中文字幕欧美国产| 蜜桃视频第一区免费观看| 欧美亚洲综合另类| 日韩电影免费在线| 成人av动漫在线| 欧美日韩在线播放一区| 日韩理论片网站| 国产99久久久国产精品潘金网站| 制服视频三区第一页精品| 日韩一区在线播放| 色八戒一区二区三区| 亚洲日本在线a| 97久久精品人人澡人人爽| 中文一区二区在线观看| 91亚洲精品一区二区乱码| 国产精品短视频| 国产一区不卡在线| 国产精品久久久久久久久免费樱桃| 国产成人自拍在线| 亚洲欧洲日韩一区二区三区| 99在线精品观看| 亚洲永久免费av| 日韩视频免费观看高清完整版| 亚洲国产成人91porn| 欧美视频三区在线播放| 精品一区二区三区香蕉蜜桃| 91丝袜呻吟高潮美腿白嫩在线观看| 精品一区在线看| 久久精品在这里| 精品视频在线视频| 久久国产精品99久久人人澡| 国产精品理论在线观看| 在线播放视频一区| 国产成人在线视频播放| 久久亚洲影视婷婷| 99综合影院在线| 亚洲亚洲精品在线观看| 91精品黄色片免费大全| 不卡电影一区二区三区| 麻豆精品一二三| 中文字幕一区二区三区四区 | 五月综合激情婷婷六月色窝| 欧洲视频一区二区| 国产大陆亚洲精品国产| 一区二区三区在线播放| 久久久久久免费| 欧美成人aa大片| 日韩精品一区二区三区swag| 欧美自拍丝袜亚洲| av在线播放成人| jizzjizzjizz欧美| 99久久婷婷国产综合精品| 美女在线视频一区| 日韩激情av在线| 欧美激情综合五月色丁香小说| 欧美偷拍一区二区| 欧美性受xxxx黑人xyx性爽| 91在线国产观看| 在线观看一区日韩| 欧美亚洲丝袜传媒另类| 69成人精品免费视频| 7777精品伊人久久久大香线蕉的| 日韩欧美精品在线视频| 日韩一区二区免费在线观看| 国产精品一区二区免费不卡| 色狠狠色狠狠综合| 精品国产凹凸成av人导航| 中文字幕一区二区在线观看| 一区二区三区精品视频| 日韩精品欧美精品| 午夜电影一区二区三区| 国产乱国产乱300精品| 裸体一区二区三区| 亚洲成av人影院| 国产在线麻豆精品观看| 一本色道a无线码一区v| 制服丝袜激情欧洲亚洲| 国产欧美一区二区在线| 国产精品久久久久天堂| 一级女性全黄久久生活片免费| 麻豆久久久久久久| 91久久精品国产91性色tv| 精品处破学生在线二十三| 亚洲欧美一区二区三区国产精品| 一区二区三区四区乱视频| 国产精品综合一区二区三区| 欧美日韩国产乱码电影| 中文字幕一区二区三区在线不卡| 日本欧美一区二区在线观看| 91在线码无精品| 中文欧美字幕免费| 美女看a上一区| 91精品国产色综合久久不卡电影 | 在线不卡免费av| 亚洲一区二区高清| 成人免费毛片aaaaa**| 日韩精品一区二区在线观看| 午夜亚洲国产au精品一区二区| 99riav一区二区三区| 国产精品嫩草影院av蜜臀| 国产a级毛片一区| 亚洲欧洲精品一区二区三区不卡| 成人一道本在线| 国产精品女同互慰在线看| 成人午夜又粗又硬又大| 亚洲天堂2016| 91精品91久久久中77777| 亚洲综合在线第一页| 精品久久久久99| 丰满岳乱妇一区二区三区| 综合久久久久久| 欧美四级电影网| 久久99精品久久久久久| 99精品欧美一区二区三区小说| 日韩久久久精品| 成人精品鲁一区一区二区| 日韩一区有码在线| 91在线视频在线| 亚洲精品视频在线观看免费| 欧美性猛交xxxxxxxx| 捆绑变态av一区二区三区| 国产精品久久久久久久久晋中 | 成人久久视频在线观看| 依依成人精品视频| 欧美va亚洲va在线观看蝴蝶网| 国产原创一区二区| 国产日产精品一区| 欧美色精品在线视频| 99久久99久久精品免费观看| 亚洲成人福利片| 国产精品国产三级国产有无不卡| 欧美亚洲国产怡红院影院| 成人av免费在线观看| 极品瑜伽女神91| 日韩av网站免费在线| 亚洲狠狠爱一区二区三区| 国产精品日韩成人| 国产日韩精品一区二区三区在线| 99视频精品在线| 在线中文字幕一区| 91精品福利在线| 欧洲国产伦久久久久久久| 91丨porny丨中文| 欧美性大战xxxxx久久久| 99国产一区二区三精品乱码| 粉嫩久久99精品久久久久久夜| 久久成人免费网站| 亚洲欧美一区二区不卡| 夜夜亚洲天天久久| 亚洲a一区二区| 美女免费视频一区| 国产精品一区二区视频| 极品少妇一区二区| 99久久99久久精品免费看蜜桃| 91看片淫黄大片一级在线观看| 99精品视频一区| 6080国产精品一区二区| 久久精品日韩一区二区三区| 日本一区二区三区免费乱视频|