<p id="xjnxv"><delect id="xjnxv"><font id="xjnxv"></font></delect></p><video id="xjnxv"><output id="xjnxv"></output></video>

<video id="xjnxv"></video><video id="xjnxv"></video>

<video id="xjnxv"><delect id="xjnxv"><listing id="xjnxv"></listing></delect></video>
<p id="xjnxv"><delect id="xjnxv"></delect></p>

<p id="xjnxv"></p><p id="xjnxv"></p>

<p id="xjnxv"><delect id="xjnxv"><listing id="xjnxv"></listing></delect></p>
<p id="xjnxv"><delect id="xjnxv"></delect></p>
<p id="xjnxv"><output id="xjnxv"></output></p>
<p id="xjnxv"><delect id="xjnxv"></delect></p>

<p id="xjnxv"></p>
<video id="xjnxv"></video>

<video id="xjnxv"></video>
<p id="xjnxv"></p>
<p id="xjnxv"></p>
<p id="xjnxv"><delect id="xjnxv"></delect></p>
<p id="xjnxv"></p><p id="xjnxv"></p>

<video id="xjnxv"><output id="xjnxv"><font id="xjnxv"></font></output></video><p id="xjnxv"><delect id="xjnxv"></delect></p>

DONSEE東信智能 - 身份證社??ㄗx卡智能終端應用服務商

eastcoms@qq.com
400-6722-705
首頁 > 服務支持專區 > 產品支持 > SDK開發包和軟件下載

EST-100/EST-100GS/EST-J13X系列國產操作系統開發包(麒麟KylinOS、統信UOS等)

來源:www.eastcoms.com   標簽:麒麟 KylinOS 統信 UOS 國產系統 Linux   發布時間: 2023-3-17 14:23:33

廣東東信智能科技有限公司DONSEE系列產品

廣東東信智能科技有限公司DONSEE系列多功能身份證社??ㄗx卡器國產操作系統Linux開發包(麒麟KylinOS、統信UOS等),支持  EST-100、EST-100GS、EST-100M(HID)、EST-J13X、EST-100G、EST-100R等機型,功能包括身份證信息讀取、社??ㄐ畔⒆x取、IC卡、CPU卡讀取,僅供開發人員和測試人員使用。


國產系統開發包下載地址:

DONSEE SDK for 國產系統(麒麟、統信)(20240402)

DONSEE SDK for 國產系統Web開發包下載(20240325)

OpenHarmony鴻蒙系統開發包下載(V1.0.2)


更早版本:

DONSEE SDK for 國產系統(麒麟、統信)(20240325)

DONSEE SDK for 國產系統(麒麟、統信)(20231024)

DONSEE SDK for 國產系統(麒麟、統信)(20230826)

DONSEE SDK for 國產系統(麒麟、統信)

DONSEE SDK for 國產系統Web開發包下載

國產系統麒麟測試效果

國產操作系統統信測試效果

麒麟國產系統網頁測試截圖

統信國產系統網頁測試截圖

為更好的推廣信創適配產品認證,廣東東信智能科技有限公司EST-100、EST-100GS、EST-100R、EST-J13X等機型已完成國產系統麒麟KylinOS、統信UOS的適配認證。

EST-100多功能智能卡讀寫器-統信互認證書.jpg

EST-J13X多功能智能卡讀寫器模組國產系統麒麟系統認證.jpg

#include "donsee.h"

int main()

{

long t_nHandle = -99;

int i = 0;

char pszError[128];

unsigned char Response[1024] = {0};

long t_nRe;

printf("********************************************************\n");

printf("請輸入數字選擇需要測試的功能:\n");

printf("0、測試蜂鳴器和版本號\n");

printf("1、測試 身份證\n");

printf("2、測試 社??╘n");

printf("3、測試 M1 卡\n");

printf("4、測試 非接觸CPU卡\n");

printf("5、測試 銀行卡\n");

printf("6、測試 15693卡\n");

printf("7、測試 接觸CPU卡\n");

printf("8、測試 磁條卡\n");

printf("9、測試 4442卡\n");

printf("10、測試 北京通卡\n");

printf("11、關閉射頻天線\n");

printf("********************************************************\n");

int t_nIndex;

scanf("%d", &t_nIndex);

if (t_nIndex == 0) //測試版本號和蜂鳴器

{

t_nHandle = Donsee_Open("USB");

if (t_nHandle != 0)

{

printf("連接讀卡器失敗,t_nRe = %ld\n", t_nHandle);

return -1;

}

t_nRe = Donsee_Version(Response);

printf("設備版本號:%s\n", Response);

Donsee_Beep(t_nHandle, 0x16);

Donsee_Close();

}

if (t_nIndex == 1) //測試身份證

{

t_nHandle = Donsee_Open("USB");

if (t_nHandle != 0)

{

printf("連接讀卡器失敗,t_nRe = %ld\n", t_nHandle);

return -1;

}

memset(Response, 0, 1024);

// t_nRe = Donsee_ReadIDCardUid(Response);   //身份證Uid,有需要的可以這里獲取

// printf("Donsee_ReadIDCardUid返回:%s\n", Response);

IDINFO idInfo;

char t_arrMsg[256];

// nType [in]:設置身份證讀卡類型:0,文本信息;1,文本+照片;2,文本+照片+指紋

// nMode [in]:設置讀卡模式:0,讀卡1次、拿開后放上重讀;1,連續讀卡

int nType = 1;

int nMode = 1;

memset(&idInfo, 0, sizeof(IDINFO));

char t_szPath[256] = "IDPhoto.bmp";

// char t_szPath[256] = "";

// char t_szPath[256] = NULL;

t_nRe = Donsee_ReadIDCard(nType, nMode, t_szPath, &idInfo, t_arrMsg);

if (t_nRe != 0)

{

printf("讀身份證失敗\n");

Donsee_Close();

return -2;

}

else

{

Donsee_Beep(t_nHandle, 0x16);

printf("讀身份證成功\n");

printf(("中文姓名:%s\n"), idInfo.name);

printf(("英文姓名:%s\n"), idInfo.ENfullname);

printf(("性    別:%s\n"), idInfo.sex);

printf(("民    族:%s\n"), idInfo.people);

printf(("出身日期:%s\n"), idInfo.birthday);

printf(("住    址:%s\n"), idInfo.address);

printf(("身份證號:%s\n"), idInfo.number);

printf(("簽發機關:%s\n"), idInfo.organs);

printf(("有效期開始:%s\n"), idInfo.signdate);

printf(("有效期結束:%s\n"), idInfo.validterm);

printf(("證件類別:%s\n"), idInfo.certType);

printf(("證件版本:%s\n"), idInfo.certVersion);

printf(("通行證號:%s\n"), idInfo.passNu);

printf(("簽發數次:%s\n"), idInfo.signCount);

// printf(("照片文件名:%s\n"), t_cValue);

// printf("1024相片原始數據:\n");

// int i ;

// for ( i = 0; i < 1024; i++)

//{

//printf("%02X ", idInfo.Photo[i]);

//}

// printf("\n");

// if (nType == 2)

//{

//printf("1024指紋數據:\n");

//for ( i = 0; i < 1024; i++)

//{

//;//printf("%02X ", (unsigned char)idInfo.figData[i]);

//}

// }

Donsee_Close();

}

}

if (t_nIndex == 2) //測試社???,三代社??ㄐ枰狿sam秘鑰才能讀取,二代卡不需要(只能插卡讀?。?/p>

{

t_nHandle = Donsee_Open("USB");

if (t_nHandle != 0)

{

printf("連接讀卡器失敗,t_nRe = %ld\n", t_nHandle);

return -1;

}

SSCard_IDINFO cardInfo;

memset(&cardInfo, 0, sizeof(cardInfo));

long t_nRead = Donsee_ReadSSCard(0x11, &cardInfo, pszError);

if (t_nRead != 0)

{

printf("讀社??ㄊ?MSG:%s\n", pszError);

Donsee_Close();

return -2;

}

else

{

Donsee_Beep(t_nHandle, 0x16);

printf("讀社??ǔ晒n");

printf("姓名:%s\n", cardInfo.name);

printf("性別:%s\n", cardInfo.sex);

printf("民族:%s\n", cardInfo.nation);

printf("出生日期:%s\n", cardInfo.birthday);

printf("發證日期:%s\n", cardInfo.signdate);

printf("有效日期:%s\n", cardInfo.validterm);

printf("卡號:%s\n", cardInfo.cardnumber);

printf("社會保障號碼(身份證號):%s\n", cardInfo.idnumber);

printf("城市代碼:%s\n", cardInfo.city);

printf("社??ò姹?%s\n", cardInfo.cardveVrsion);

Donsee_Close();

}

}

if (t_nIndex == 3) //測試M1卡

{

t_nHandle = Donsee_Open("USB");

if (t_nHandle != 0)

{

printf("連接讀卡器失敗,t_nRe = %ld\n", t_nHandle);

return -1;

}

char t_chMsgM1[256] = "";

// t_nRe = Donsee_ReadICUid(t_chMsgM1);  //功能未實現

// if (t_nRe == 0)

//{

//printf("M1 卡 獲取UID成功,UID:%s\n", t_chMsgM1);

// }

// M1尋卡

t_nRe = Donsee_ICRequest();

if (t_nRe != 0)

{

printf("M1 卡片請求 失敗,返回值:%ld\n", t_nRe);

}

t_nRe = Donsee_ICAnticoll(t_chMsgM1); //防碰撞可以出來uid,M1和cpu卡都支持

if (t_nRe != 0)

{

printf("M1 卡片防碰撞 失敗,返回值:%ld\n", t_nRe);

}

t_nRe = Donsee_ICSelect(0x41);

if (t_nRe != 0)

{

printf("TypeA 卡片選擇 失敗,返回值:%ld\n", t_nRe);

}

printf("M1 尋卡成功");

printf("M1 卡 獲取UID成功,UID:%s\n", t_chMsgM1);

int t_nKeyMode = 0x60; // KeyA

int t_nAdd = 5;

t_nRe = Donsee_M1VerifyPass(t_nKeyMode, t_nAdd / 4, "FFFFFFFFFFFF");

if (t_nRe != 0)

{

printf("M1 卡片 Donsee_M1VerifyPass 密鑰認證 失敗,返回值:%ld", t_nRe);

}

else

printf("M1 卡 Donsee_M1VerifyPass 密鑰認證 成功\n");

unsigned char t_chKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};

t_nRe = Donsee_M1VerifyPassHex(t_nKeyMode, t_nAdd / 4, t_chKey);

if (t_nRe != 0)

{

printf("M1 卡片 Donsee_M1VerifyPassHex 密鑰認證 失敗,返回值:%ld", t_nRe);

}

else

printf("M1 卡 Donsee_M1VerifyPassHex 密鑰認證 成功\n");

char t_pszReadData[128] = "";

t_nRe = Donsee_M1Read(t_nAdd, t_pszReadData);

if (t_nRe != 0)

{

printf("M1 卡片讀卡 失敗,返回值:%ld\n", t_nRe);

}

else

printf("M1 卡 讀取第 %d 塊數據 成功,Data:%s\n", t_nAdd, t_pszReadData);


t_nRe = Donsee_M1Write(t_nAdd, "0102030405060708090001020304050A");

if (t_nRe != 0)

{

printf("M1 卡片寫卡 失敗,返回值:%ld\n", t_nRe);

}

else

printf("M1 卡 寫入第 %d 塊數據: 0102030405060708090001020304050A, 成功\n", t_nAdd);

memset(t_pszReadData, 0, 128);

t_nRe = Donsee_M1Read(t_nAdd, t_pszReadData);

if (t_nRe != 0)

{

printf("M1 卡片讀卡 失敗,返回值:%ld\n", t_nRe);

}

else

printf("M1 卡 讀取第 %d 塊數據 成功,Data:%s\n", t_nAdd, t_pszReadData);


unsigned long t_nValue = 256;

t_nRe = Donsee_M1Initval(t_nAdd, t_nValue);

if (t_nRe != 0)

{

printf("M1 卡片初始化值 失敗,返回值:%ld\n", t_nRe);

}

else

printf("M1 卡 卡片初始化第 %d 塊 值  成功\n", t_nAdd);

t_nRe = Donsee_M1Increment(t_nAdd, 100);

if (t_nRe != 0)

{

printf("M1 卡片增值 失敗,返回值:%ld\n", t_nRe);

}

else

printf("M1 卡 卡片增值 第 %d 塊  成功\n", t_nAdd);

t_nRe = Donsee_M1Decrement(t_nAdd, 20);

if (t_nRe != 0)

{

printf("M1 卡片減值 失敗,返回值:%ld\n", t_nRe);

}

else

printf("M1 卡 卡片減值第 %d 塊 成功\n", t_nAdd);


t_nRe = Donsee_M1Readval(t_nAdd, &t_nValue);

if (t_nRe != 0)

{

printf("M1 卡片讀值 失敗,返回值:%ld\n", t_nRe);

}

else

printf("M1 卡 卡片讀值 %d 塊   成功,Value = %ld\n", t_nAdd, t_nValue);

t_nRe = Donsee_M1LoadKey(t_nKeyMode, t_nAdd / 4, "FFFFFFFFFFFF");

if (t_nRe != 0)

{

printf("M1 卡片加載密鑰 失敗,返回值:%ld\n", t_nRe);

}

else

printf("M1 卡 卡片加載到密鑰 第%d扇區   成功\n", t_nAdd / 4);

t_nRe = Donsee_M1Verify(t_nKeyMode, t_nAdd / 4);

if (t_nRe != 0)

{

printf("M1 卡片認證加載密鑰 第%d扇區 失敗,返回值:%ld\n", t_nAdd / 4, t_nRe);

}

else

printf("M1 卡 卡片認證加載密鑰 第%d扇區   成功\n", t_nAdd / 4);

Donsee_Beep(t_nHandle, 0x16);

Donsee_Close();

}

if (t_nIndex == 4) //測試非接觸式CPU卡

{

t_nHandle = Donsee_Open("USB");

if (t_nHandle != 0)

{

printf("連接讀卡器失敗,t_nRe = %ld\n", t_nHandle);

return -1;

}

char t_arrDataRe[32] = {0};

char t_arrDataUID[8] = {0};

long t_nSet = Donsee_SetTypeA();

if (t_nSet != 0)

{

printf("TypeA 設置失敗\n") ;

Donsee_Close() ;

return false;

}

long t_nReq = Donsee_ICRequest();

{

printf("TypeA 請求失敗\n") ;

Donsee_Close() ;

return false;

}

long t_nAtl = Donsee_ICAnticoll(t_arrDataUID);

{

printf("TypeA 防碰撞失敗\n") ;

Donsee_Close() ;

return false;

}

printf("TypeA_Anticoll:%s\n", t_arrDataUID);


long t_nSel = Donsee_ICSelect(0x41);

{

printf("TypeA 選卡失敗\n") ;

Donsee_Close() ;

return false;

}

t_nRe = Donsee_PowerOnTypeA(t_arrDataRe);

{

printf("TypeA 上電失敗") ;

Donsee_Close() ;

return false;

}

printf("TypeA_ATR:%s\n", t_arrDataRe);

memset(Response, 0, 1024);

printf("TypeA-APDU發送:0084000008\n");

t_nRe = Donsee_APDUType("0084000008", Response);

printf("TypeA-APDU返回:%s\n", Response);

Donsee_Beep(t_nHandle, 0x16);

Donsee_Close();

}

if (t_nIndex == 5) //測試銀行卡

{

t_nHandle = Donsee_Open("USB");

if (t_nHandle != 0)

{

printf("連接讀卡器失敗,t_nRe = %ld\n", t_nHandle);

return -1;

}

char t_szBankNo[128] = "";

char *p, *q;

unsigned char tmp;

t_nRe = Donsee_GetBankCardNo(t_szBankNo);

if (t_nRe != 0)

printf("讀取銀行卡號失敗\n");

else

{

tmp = (unsigned char)(strchr(t_szBankNo, 'D') - t_szBankNo);

q = (tmp > 0) ? strndup(t_szBankNo, tmp) : strdup(t_szBankNo);

printf("讀取銀行卡號成功:%s\n", q);

Donsee_Beep(t_nHandle, 0x16);

}

Donsee_Close();

}

if (t_nIndex == 6) //測試15693卡

{

t_nHandle = Donsee_Open("USB");

if (t_nHandle != 0)

{

printf("連接讀卡器失敗,t_nRe = %ld\n", t_nHandle);

return -1;

}

char t_chMsg15693[256] = "";

t_nRe = Donsee_15693_Find(t_chMsg15693);

if (t_nRe != 0)

{

printf("15693 尋卡失敗,返回值:%ld\n", t_nRe);

}

else

printf("15693 尋卡成功,UID:%s\n", t_chMsg15693);


t_nRe = Donsee_15693_Info(t_chMsg15693);

if (t_nRe != 0)

{

printf("15693 卡信息獲取失敗,返回值:%ld\n", t_nRe);

}

else

printf("15693 卡信息獲取成功,CardInfo:%s\n", t_chMsg15693);

unsigned char t_nBlkAdd = 0x00;

memset(t_chMsg15693, 0, 256);

t_nRe = Donsee_15693_Read(t_nBlkAdd, t_chMsg15693);

if (t_nRe != 0)

{

printf("15693 卡讀卡失敗,返回值:%ld\n", t_nRe);

}

else

printf("15693 卡讀卡成功,Data:%s\n", t_chMsg15693);


t_nRe = Donsee_15693_Write(t_nBlkAdd, "88898685");

if (t_nRe != 0)

{

printf("15693 卡寫卡失敗,返回值:%ld\n", t_nRe);

}

else

printf("15693 卡寫卡成功,Data:88898685\n");


memset(t_chMsg15693, 0, 256);

t_nRe = Donsee_15693_Read(t_nBlkAdd, t_chMsg15693);

if (t_nRe != 0)

{

printf("15693 卡讀卡失敗,返回值:%ld\n", t_nRe);

}

else

printf("15693 卡讀卡成功,Data:%s\n", t_chMsg15693);

Donsee_Beep(t_nHandle, 0x16);

Donsee_Close();

}

if (t_nIndex == 7) //測試接觸式CPU卡

{

t_nHandle = Donsee_Open("USB");

if (t_nHandle != 0)

{

printf("連接讀卡器失敗,t_nRe = %ld\n", t_nHandle);

return -1;

}

memset(Response, 0, 1024);

t_nRe = Donsee_ColdPowerOn(0x01, Response);

printf("cpu冷復位:%s\n", Response);

memset(Response, 0, 1024);

t_nRe = Donsee_HotPowerOn(0x01, Response);

printf("cpu熱復位:%s\n", Response);

memset(Response, 0, 1024);

t_nRe = Donsee_PowerOn(0x01, Response);

printf("cpu復位:%s\n", Response);

memset(Response, 0, 1024);

printf("cpu-APDU發送:0084000008\n");

t_nRe = Donsee_APDU(0x01, "0084000008", Response);

printf("cpu-APDU返回:%s\n", Response);

Donsee_Beep(t_nHandle, 0x16);

Donsee_Close();

}

if (t_nIndex == 8) //測試磁條卡

{

t_nHandle = Donsee_Open("USB");

if (t_nHandle != 0)

{

printf("連接讀卡器失敗,t_nRe = %ld\n", t_nHandle);

return -1;

}

unsigned char t_nTime = 15;

int t_nTrack = 2;

char t_pszTrackData[512] = "";

t_nRe = Donsee_ReadMagCard(t_nTime, t_nTrack, t_pszTrackData);

if (t_nRe != 0)

{

printf("磁條卡刷卡失敗,返回值:%ld\n", t_nRe);

}

else

printf("磁條卡刷卡成功,TrackData:%s\n", t_pszTrackData);

//設置主動輸出

unsigned char szConfig[3] = {0x02, 0x00, 0x01};

// t_nRe = Donsee_ReadMagType(0x00,szConfig) ;

// if (t_nRe != 0)

// printf("磁條卡設置主動輸出失敗,返回值:%ld\n", t_nRe);

// else

// printf("磁條卡設置主動輸出成功\n");

//設置被動輸出

// t_nRe = Donsee_ReadMagType(0x01,szConfig) ;

// if (t_nRe != 0)

// printf("磁條卡設置被動輸出失敗,返回值:%ld\n", t_nRe);

// else

// printf("磁條卡設置被動輸出成功\n");

Donsee_Beep(t_nHandle, 0x16);

Donsee_Close();

}

if (t_nIndex == 9) //測試4442卡

{

t_nHandle = Donsee_Open("USB");

if (t_nHandle != 0)

{

printf("連接讀卡器失敗,t_nRe = %ld\n", t_nHandle);

return -1;

}

char t_chMsg4442[256] = "";

t_nRe = Donsee_4442_PowerOn(t_chMsg4442);

if (t_nRe == 0)

{

printf("4442 卡 上電成功,UID:%s\n", t_chMsg4442);

}

int t_nCount;

t_nRe = Donsee_4442_ReadCount(&t_nCount);

if (t_nRe == 0)

{

printf("4442 卡 密鑰認證剩余次數:%d次\n", t_nCount);

}

memset(t_chMsg4442, 0, 256);

t_nRe = Donsee_4442_Read(32, 16, t_chMsg4442);

if (t_nRe == 0)

{

printf("4442 卡 讀卡成功,Data:%s\n", t_chMsg4442);

}

t_nRe = Donsee_4442_Verify("FFFFFF");

if (t_nRe == 0)

{

printf("4442 卡 密鑰認證成功\n");

}

t_nRe = Donsee_4442_Write(32, 16, "AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDD");

if (t_nRe == 0)

{

printf("4442 卡 寫卡成功,Data:AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDD\n");

}


t_nRe = Donsee_4442_Read(32, 16, t_chMsg4442);

if (t_nRe == 0)

{

printf("4442 卡 讀卡成功,Data:%s\n", t_chMsg4442);

}

t_nRe = Donsee_4442_WriteProtect(0, 16, "AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDD");

if (t_nRe == 0)

{

printf("4442 卡 寫卡保護成功,Data:AAAAAAAAAABBBBBBBBBBCCCCCCCCCCDD\n");

}


t_nRe = Donsee_4442_ReadProtect(0, 16, t_chMsg4442);

if (t_nRe == 0)

{

printf("4442 卡 讀卡保護成功,Data:%s\n", t_chMsg4442);

}

t_nRe = Donsee_4442_PowerOff();

if (t_nRe == 0)

{

printf("4442 卡 下電成功\n");

}

Donsee_Beep(t_nHandle, 0x16);

Donsee_Close();

}

if (t_nIndex == 10) //測試北京通卡

{

t_nHandle = Donsee_Open("USB");

if (t_nHandle != 0)

{

printf("連接讀卡器失敗,t_nRe = %ld\n", t_nHandle);

return -1;

}

BJT_IDINFO idInfo;

char t_arrMsg[256];

memset(&idInfo, 0, sizeof(BJT_IDINFO));

t_nRe = Donsee_ReadBJTIDCard(&idInfo, t_arrMsg);

if (t_nRe != 0)

{

printf("讀取北京通失敗\n");

Donsee_Close();

return -2;

}

else

Donsee_Beep(t_nHandle, 0x16);

printf("讀取北京通成功\n");

printf(("姓名:%s\n"), idInfo.name);

printf(("性 別:%s\n"), idInfo.sex);

printf(("北京通號:%s\n"), idInfo.cardnumber);

printf(("卡片類型:%s\n"), idInfo.nType);

printf(("證件名稱:%s\n"), idInfo.cardName);

printf(("發卡機構:%s\n"), idInfo.organs);

t_nRe = Donsee_ReadBJTIDCard_Photo("./bjt.jpg", t_arrMsg);

if (t_nRe != 0)

{

printf("讀取北京通頭像失敗\n");

Donsee_Close();

return -2;

}

else

printf("讀取北京通頭像成功\n");

Donsee_Close();

}

if (t_nIndex == 11) //關閉射頻天線

{

t_nHandle = Donsee_Open("USB");

if (t_nHandle != 0)

{

printf("連接讀卡器失敗,t_nRe = %ld\n", t_nHandle);

return -1;

}

Donsee_SwitchRF(0); // 0 關閉天線,1 打開天線

Donsee_Close();

}

}


以下為老的SDK保留備份使用:

DONSEE SDK for 麒麟KylinOS下載(舊SDK)

DONSEE SDK for 統信UOS下載(舊SDK)





 

 
QQ在線咨詢
天天操天天操天天操天天操天天操_黄片在线免费视频观看_免费看无码级毛片_国产欧美另类久久精品蜜芽

<p id="xjnxv"><delect id="xjnxv"><font id="xjnxv"></font></delect></p><video id="xjnxv"><output id="xjnxv"></output></video>

<video id="xjnxv"></video><video id="xjnxv"></video>

<video id="xjnxv"><delect id="xjnxv"><listing id="xjnxv"></listing></delect></video>
<p id="xjnxv"><delect id="xjnxv"></delect></p>

<p id="xjnxv"></p><p id="xjnxv"></p>

<p id="xjnxv"><delect id="xjnxv"><listing id="xjnxv"></listing></delect></p>
<p id="xjnxv"><delect id="xjnxv"></delect></p>
<p id="xjnxv"><output id="xjnxv"></output></p>
<p id="xjnxv"><delect id="xjnxv"></delect></p>

<p id="xjnxv"></p>
<video id="xjnxv"></video>

<video id="xjnxv"></video>
<p id="xjnxv"></p>
<p id="xjnxv"></p>
<p id="xjnxv"><delect id="xjnxv"></delect></p>
<p id="xjnxv"></p><p id="xjnxv"></p>

<video id="xjnxv"><output id="xjnxv"><font id="xjnxv"></font></output></video><p id="xjnxv"><delect id="xjnxv"></delect></p>