ÿØÿà JFIF    ÿÛ „  ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----ÿÀ  ß â" ÿÄ     ÿÄ H    !1AQaq"‘¡2B±ÁÑð#R“Ò Tbr‚²á3csƒ’ÂñDS¢³$CÿÄ   ÿÄ %  !1AQa"23‘ÿÚ   ? ôÿ ¨pŸªáÿ —åYõõ\?àÒü©ŠÄï¨pŸªáÿ —åYõõ\?àÓü©ŠÄá 0Ÿªáÿ Ÿå[úƒ ú®ði~TÁbqÐ8OÕpÿ ƒOò¤Oè`–RÂáœá™êi€ßÉ< FtŸI“öÌ8úDf´°å}“¾œ6  öFá°y¥jñÇh†ˆ¢ã/ÃÐ:ªcÈ "Y¡ðÑl>ÿ ”ÏËte:qž\oäŠe÷󲍷˜HT4&ÿ ÓÐü6ö®¿øþßèô Ÿ•7Ñi’•j|“ñì>b…þS?*Óôÿ ÓÐü*h¥£ír¶ü UãS炟[AÐaè[ûª•õ&õj?†Éö+EzP—WeÒírJFt ‘BŒ†Ï‡%#tE Øz ¥OÛ«!1›üä±Í™%ºÍãö]°î(–:@<‹ŒÊö×òÆt¦ãº+‡¦%ÌÁ²h´OƒJŒtMÜ>ÀÜÊw3Y´•牋4ǍýʏTì>œú=Íwhyë,¾Ôò×õ¿ßÊa»«þˆѪQ|%6ž™A õ%:øj<>É—ÿ Å_ˆCbõ¥š±ý¯Ýƒï…¶|RëócÍf溪“t.СøTÿ *Ä¿-{†çàczůŽ_–^XþŒ±miB[X±d 1,é”zEù»& î9gœf™9Ð'.;—™i}!ôšåîqêÛ٤ёý£½ÆA–àôe"A$˝Úsäÿ ÷Û #°xŸëí(l »ý3—¥5m! rt`†0~'j2(]S¦¦kv,ÚÇ l¦øJA£Šƒ J3E8ÙiŽ:cÉžúeZ°€¯\®kÖ(79«Ž:¯X”¾³Š&¡* ….‰Ž(ÜíŸ2¥ª‡×Hi²TF¤ò[¨íÈRëÉ䢍mgÑ.Ÿ<öäS0í„ǹÁU´f#Vß;Õ–…P@3ío<ä-±»Ž.L|kªÀê›fÂ6@»eu‚|ÓaÞÆŸ…¨ááå>åŠ?cKü6ùTÍÆ”†sĤÚ;H2RÚ†õ\Ö·Ÿn'¾ ñ#ºI¤Å´%çÁ­‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"i¸vdÄ÷.iõ®§)¿]¤À†–‡É&ä{V¶iŽ”.Ó×Õÿ û?h¬Mt–íª[ÿ Ñÿ ÌV(í}=ibÔ¡›¥¢±b Lô¥‡piη_Z<‡z§èŒ)iÖwiÇ 2hÙ3·=’d÷8éŽ1¦¸c¤µ€7›7Ø ð\á)} ¹fËí›pAÃL%âc2 í§æQz¿;T8sæ°qø)QFMð‰XŒÂ±N¢aF¨…8¯!U  Z©RÊ ÖPVÄÀÍin™Ì-GˆªÅËŠ›•zË}º±ŽÍFò¹}Uw×#ä5B¤{î}Ð<ÙD é©¤&‡ïDbàÁôMÁ." ¤‡ú*õ'VŽ|¼´Úgllº¼klz[Æüï÷Aób‡Eÿ dÑ»Xx9ÃÜ£ÁT/`¼¸vI±Ýµ·Ë‚“G³þ*Ÿû´r|*}<¨îºœ @¦mÄ’M¹”.œ«Y–|6ÏU¤jç¥ÕÞqO ˜kDÆÁ¨5ÿ š;ÐЦ¦€GÙk \ –Þ=â¼=SͧµªS°ÚÍpÜãQűÀõ¬?ÃÁ1Ñ•õZà?hóœ€ L¦l{Y*K˜Ù›zc˜–ˆâ ø+¾ ­-Ök¥%ùEÜA'}ˆ><ÊIè“bpÍ/qÞâvoX€w,\úªò6Z[XdÒæ­@Ö—€$òJí#é>'°Ú ôª˜<)4ryÙ£|óAÅn5žêŸyÒäMÝ2{"}‰–¤l÷ûWX\l¾Á¸góÉOÔ /óñB¤f¸çñ[.P˜ZsÊË*ßT܈§QN¢’¡¨§V¼(Üù*eÕ“”5T¨‹Âê¥FŒã½Dü[8'Ò¥a…Ú¶k7a *•›¼'Ò·\8¨ª\@\õ¢¦íq+DÙrmÎ…_ªæ»ŠÓœ¡¯’Ré9MÅ×D™lælffc+ŒÑ,ý™ÿ ¯þǤ=Å’Á7µ÷ÚÛ/“Ü€ñýã¼àí¾ÕÑ+ƒ,uµMâÀÄbm:ÒÎPæ{˜Gz[ƒ¯«® KHà`ߨŠéí¯P8Aq.C‰ à€kòpj´kN¶qô€…Õ,ÜNŠª-­{Zö’æû44‰sŽè‰îVíRœÕm" 6?³D9¡ÇTíÅꋇ`4«¸ÝÁô ï’ýorqКÇZ«x4Žâéþuïf¹µö[P ,Q£éaX±`PÉÍZ ¸äYúg üAx ’6Lê‚xÝÓ*äQ  Ï’¨hÍ =²,6ï#rÃ<¯–£»ƒ‹,–ê•€ aÛsñ'%Æ"®ÛüìBᝠHÚ3ß°©$“XnœÖ’î2ËTeûìxîß ¦å¿çÉ ðK§þ{‘t‚Ϋ¬jéîZ[ ”š7L¥4VÚCE×]m¤Øy”ä4-dz£œ§¸x.*ãÊÊ b÷•h:©‡¦s`BTÁRû¾g⻩‹jø sF¢àJøFl‘È•Xᓁà~*j¯ +(ÚÕ6-£¯÷GŠØy‚<Ç’.F‹Hœw(+)ÜÜâÈzÄäT§FߘãÏ;DmVœ3Àu@mÚüXÝü•3B¨òÌÁÛ<·ÃÜ z,Ì@õÅ·d2]ü8s÷IôÞ¯^Ç9¢u„~ëAŸï4«M? K]­ÅàPl@s_ p:°¬ZR”´›JC[CS.h‹ƒïËœ«Æ]–÷ó‚wR×k7X‰k›‘´ù¦=¡«‰¨¨Â')—71ó’c‡Ðúµ `é.{§p¹ój\Ž{1h{o±Ý=áUÊïGÖŒõ–-BÄm+AZX¶¡ ïHðæ¥JmÙ;…䡟ˆ¦ ° äšiÉg«$üMk5¤L“’çÊvïâï ,=f“"íἊ5ô¬x6{ɏžID0e¸vçmi'︧ºð9$ò¹÷*£’9ÿ ²TÔ…×>JV¥}Œ}$p[bÔ®*[jzS*8 ”·T›Í–ñUîƒwo$áè=LT™ç—~ô·¤ÈÚ$榍q‰„+´kFm)ž‹©i–ËqÞŠ‰à¶ü( ‚•§ •°ò·‡#5ª•µÊ﯅¡X¨šÁ*F#TXJÊ ušJVÍ&=iÄs1‚3•'fý§5Ñ<=[íÞ­ PÚ;ѱÌ_~Ä££8rÞ ²w;’hDT°>ÈG¬8Á²ÚzŽ®ò®qZcqJêäÞ-ö[ܘbň±çb“ж31²n×iƒðÕ;1¶þÉ ªX‰,ßqÏ$>•î íZ¥Z 1{ç൵+ƒÕµ¥°T$§K]á»Ûï*·¤tMI’ÂZbŽÕiÒ˜}bÓ0£ª5›¨ [5Ž^ÝœWøÂÝh° ¢OWun£¤5 a2Z.G2³YL]jåtì”ä ÁÓ‘%"©<Ôúʰsº UZvä‡ÄiÆÒM .÷V·™ø#kèýiíÌ–ª)µT[)BˆõÑ xB¾B€ÖT¨.¥~ð@VĶr#¸ü*åZNDŽH;âi ],©£öØpù(šºãö¼T.uCê•4@ÿ GÕÛ)Cx›®0ø#:ÏðFÒbR\(€€Ä®fã4Þ‰Fä¯HXƒÅ,†öEÑÔÜ]Öv²?tLÃvBY£ú6Êu5ÅAQ³1‘’¬x–HŒÐ‡ ^ ¸KwJôÖŽ5×CÚ¨vÜ«/B0$×k°=ðbÇ(Ï)w±A†Á† 11Í=èQšµ626ŒÜ/`G«µ<}—-Ö7KEHÈÉðóȤmݱû±·ø«Snmá=“䫚mݱŸ¡¶~ó·“äUóJæúòB|E LêŽy´jDÔ$G¢þÐñ7óR8ýÒ…Ç› WVe#·Ÿ p·Fx~•ݤF÷0Èÿ K¯æS<6’¡WШ; ´ÿ ¥Êø\Òuî†åÝ–VNœkÒ7oòX¨Á­Ø÷FÎÑä±g÷ÿ M~Çî=p,X´ ÝÌÚÅ‹’ÃjÖ.ØöÏñ qïQ¤ÓZE†° =6·]܈ s¸>v•Ž^Ý\wq9r‰Î\¸¡kURÒ$­*‹Nq?Þª*!sŠÆ:TU_u±T+øX¡ ®¹¡,ÄâÃBTsÜ$Ø›4m椴zÜK]’’›Pƒ @€#â˜`é¹=I‡fiV•Ôî“nRm+µFPOhÍ0B£ €+¬5c v•:P'ÒyÎ ‰V~‚Ó†ÖuókDoh$å\*ö%Ю=£«…aȼ½÷Û.-½VŒŠ¼'lyî±1¬3ó#ÞE¿ÔS¤gV£m›=§\û"—WU¤ÚǼÿ ÂnÁGŒÃ ‚õN D³õNÚíŒÕ;HôyÄÈ©P¹Ä{:?R‘Ô¨âF÷ø£bÅó® JS|‚R÷ivýáâ€Æé¡è³´IئÑT!§˜•ت‚¬â@q€wnïCWÄ@JU€ê¯m6]Ï:£âx'+ÒðXvÓ¦Úm=–´7œ $ì“B£~p%ÕŸUþ« N@¼üï~w˜ñø5®—'Ôe»¤5ã//€ž~‰Tþ›Å7•#¤× Íö pÄ$ùeåì*«ÓŠEØWEÈsßg ¦ûvžSsLpºÊW–âµEWöˬH; ™!CYõZ ÃÄf æ#1W. \uWâ\,\Çf j’<qTbên›Î[vxx£ë 'ö¨1›˜ÀM¼Pÿ H)ƒêêŒA7s,|F“ 꺸k³9Ìö*ç®;Ö!Ö$Eiž•¹ÒÚ†ýóéÝû¾ÕS®ó$’NÝäŸz¤5r¦ãÄÃD÷Üø!°ø‡Ô&@m™Ì^Ãä­d q5Lnÿ N;.6½·N|#ä"1Nƒx“ã<3('&ñßt  ~ªu”1Tb㫨9ê–›–bìd$ߣ=#ÕãÒmU¯eí$EFù5ýYô櫨æì™Ç—±ssM]·á¿0ÕåJRÓªîiƒ+O58ÖñªŠÒx" \µâá¨i’¤i —Ö ” M+M¤ë9‚‰A¦°Qõ¾ßøK~¼Ã‘g…Ö´~÷Ï[3GUœÒ½#…kàÔ®Ò”‰³·dWV‰IP‰Ú8u¹”E ÖqLj¾êÕCBš{A^Âß;–¨`¯¬ìö ˼ ×tìø.tƐm*n¨y4o&Àx¥n¦×î‡aupáÛj8¿m›è¶ã!o½;ß0y^ý×^EÑ¿ÒjzŒ­)vÚÑnÄL …^ªô× ‡—‚3k Îý­hï]içå–îÏ*÷ñþ»Ô CÒjøjÍznˆ´ ¹#b'Fô‹ ‰v¥'’à'T´ƒHýÍ%M‰ ƒ&ÆÇŒï1 ‘ –Þ ‰i¬s žR-Ÿ kЬá¬7:þ 0ŒÅÒÕ/aÙ¬ÃÝ#Úøœ ©aiVc‰. ¹¦ãµ” ›Yg¦›ÆÎýº°f³7ƒhá·¸­}&D9¡ÂsÉÙÞèŠõØàC™¨ñbFC|´Ü(ŸƒÚÒ-%»'a Ì¿)ËÇn¿úÿ ÞŽX…4ÊÅH^ôΑí@ù¹Eh¶“L8Çjù ¼ÎåVªóR©Ï5uà V4lZß®=€xÖŸ–ÑÈ ÷”¨°¾__yM1tÉ?uÆþIkÄgæ@þ[¢†°XÃJ£j·:nkÅ¢u ‘}âGzö­/IµèЬ¼48q¦F°ŽR¼=ûì{´¯RýicS ÕÛ íNtÍÙï£,w4rêì®»~x(©Uñ§#Ñ&œÕ¤>ÎåÍÓ9’Ö{9eV­[Öjâ²ãu]˜å2›qÑšÕJç0€sÄ|Êëè0튔bÁ>“{×_F`Ø©ºê:µä,v¤ðfc1±"«ÔÍän1#=· Âøv~H½ÐßA¾¿Ü€Óš]Õ; I¾÷ç‚Qi†î¹9ywÔKG˜áñ zQY—§ÃÕZ07§X‚ Áh;ÁM)iÌCH-¯T‘ë|A0{Ò½LÚ–TâÖkÜ’dÀ“rmm»”جPF³ÖcbE§T€ÒxKºû’Ó®7±²(\4ŽÃ¸Uu@j™yĵ;³µ!Á¢b.W¤=mõ´êµK k ¸K^ÜÛ#p*Ü14qkZç5ïë †°5Ï%ÍÛ<Õ¤×Ô¥ê†C Õ´¼ú$ƒÖ“”]Ù¬qÞÚ[4©ý!ûÏ—Áb쳐XµA¬â~`›Çr¸8ìùÝ䫦<>ä÷«?xs´ÇÑ /á;¹øüÊÈÙà{"@Žïzâ¬[âß‚ U_<ÇŸ½4èN˜ú61®qŠu ¦þF£»äJ_ˆÙÎ~ ÞAã–݄ϗrŠD;xTž‘ô`É«…suãO`?³à™ô Lý#Íc5öoæØ‚y´´÷«ZR§<&JÇ+éâô´€i!Àˆ0æAoàðLèÖ-2ŸõW.’t^–(KÁmHµV@xÜÇy®Ñø­â^:Ú3w· 7½¹°ñ¸â¹®:',«Mœ—n­Á+Ãbš LÈ‘ÄnRÓÅœ%¦²‰¨ùQ:¤f‚ "PÕtô¸…cæl…&˜Ú˜Ôkv‹ž+vŠ,=¢v­6—Xy*¥t£«<™:“aîϲ=¦6rO]XI¿Œ÷¤zÚ­›¶ 6÷”w\d ü~v®ˆÌk«^m<ÿ ¢‰Õ\)ùºŽ;… lîÙÅEŠ®cѾ@vnMÏ,¼“ñ•ŽBxðÃzãÇç%3ˆ"}Ù•Åî> BÉú;Ò]V+P˜F_´ßé> Øše|ï‡ÄOmFæÇ ãqÞ$/xÐx­z`ï9"œÜij‚!7.\Td…9M‡•iŽ‹¾‘50ÞŽn¥ß4ÉôO ¹*í^QêËÜÇÌ8=ާs‰'ÂëÙ«á%Pú[O †ÅP¯Vsް.‰,kc¶ ¬A9n˜XÎ-ÞšN["¹QÕ‰ƒMýÁߺXJæÍaLj¾×Ãmã¾ãÚ uñÒþåQô¦¥ /ÄUx:‚ÍÜ’ Đ©ØÝ3V¨‰ÕnÐ6ó*óúK­«…c ¯U òhsý­jóÔj#,ímŒRµ«lbïUTŒÑ8†Ä0œÏr`ð¡¬É Ї ë"À² ™ 6¥ f¶ ¢ÚoܱԷ-<Àî)†a¶ž'Ú»¨TXqØæ¶÷YÄHy˜9ÈIW­YÀuMFë ºÏ’AqÌ4·/Ú †ô'i$øä­=Ä Ý|öK×40è|È6p‘0§)o¥ctî§H+CA-“ xØ|ÐXАç l8íºð3Ø:³¤¬KX¯UÿÙ  Y:Zc @sddlmZddlmZmZmZmZmZmZddl Z ddl m Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlmZmZmZddlmZmZmZmZmZddlmZdd l m!Z!dd l"m#Z#dd l$m%Z%m&Z&dd lm'Z'yddl(Z(e)Z*Wne+k re,Z(e-Z*nXyddl.Z.e.j/Z0[.Wne+e1fk re,Z0nXe-Z2ej3d Z4ernhe4ddfkrDge5dD].Z6e6dkr"e7e6n e7e6d^qZ8dZ9n dZ9eoWe rvddl:m;Z;dZ<n dZ<e=ej>ej?ej@ejAejBejCejDejEejFg ZGe e jHdZIdZJdZKdZLdZMdZNdZOd ddZPdZQd ZRd!ZSd"ZTd#ZUd$eVfd%YZWd&ZXd'ZYd(ZZd)Z[d*eVfd+YZ\d,e\fd-YZ]d.eVfd/YZ^d0eVfd1YZ_d2eVfd3YZ`d4eVfd5YZad6eVfd7YZbd8eVfd9YZcdS(:i(tprint_functioni(tPY2t range_typet text_typetstr_typetJYTHONt IRONPYTHONN(tpartial(tMBLENGTHtcharset_by_namet charset_by_id(tCLIENTtCOMMANDtCRt FIELD_TYPEt SERVER_STATUS(t converters(tCursor(tParser(tbyte2inttint2byte(terriiiiiicCs|jdjtS(Ntlatin1(tdecodet translatet_surrogateescape_table(ts((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt_fast_surrogateescape5scCs|jddS(Ntasciitsurrogateescape(R(R((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyR8s(tSocketIOcCstjt||S(N(tiotBufferedReaderR(tsocktmode((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt _makefileCscCs |j|S(N(tmakefile(R!R"((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyR#Gstsha1iiiiRicsHdyntdt|xFtddD]5}tj|}td||jj|jfq/WtddWntk rnXgt dt t|d d D]}|||d !^q}xb|D]Z}td j t d |d d t|ddj t fd|qWtddtdS(NcSsCdt|kodknr?t|tr;t|S|SdS(NiAizt.(Rt isinstancetinttchr(tdata((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytis_asciids " spacket length:iiscall[%d]: %s (line %d)t-iBiiit cSsdjt|S(Ns{:02X}(tformatR(tx((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytuts iR1csdj|S(Ns{}(R.(R/(R+(s7/usr/lib/python2.7/site-packages/pymysql/connections.pyR0wR1s ( tprinttlentrangetsyst _getframetf_codetco_nametf_linenot ValueErrorRtmintjointmap(R*titft dump_datatd((R+s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt dump_packetcs  $ ? .'icCs|s dStr'tdt|nt|j}t|j}t}|j|t |j||j}t||S(NR1s password=(tDEBUGR2tstrtsha_newtdigesttupdatetSCRAMBLE_LENGTHt _my_crypt(tpasswordtmessagetstage1tstage2Rtresult((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt _scramble~s   cCst|}d}xjt|D]\}tjd|||d!dtjd|||d!dA}|tjd|7}qW|S(NR1tBii(R3Rtstructtunpacktpack(tmessage1tmessage2tlengthRNR>R/((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRIs "itRandStruct_323cBseZdZdZRS(cCs-d|_||j|_||j|_dS(Ni?(t max_valuetseed1tseed2(tselfRYRZ((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt__init__s cCsV|jd|j|j|_|j|jd|j|_t|jt|jS(Nii!(RYRZRXtfloat(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytmy_rnds(t__name__t __module__R\R^(((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRWs c Cs2t|}t|t }tjd|}tjd|}t|d|dA|d|dA}tj}xJtttt |D]-}|j t t |j ddqWt t |j d} |j} tj}x1| D])} |j t t| t| AqW|jS(Ns>LLiiii@(t_hash_password_323tSCRAMBLE_LENGTH_323RQRRRWRtBytesIORR;R3twriteRR(R^tgetvalueR( RJRKt hash_passt hash_messaget hash_pass_nthash_message_ntrand_sttoutbuft_textratouttc((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt _scramble_323s  "+   'cCsd}d}d}xyg|D]}|dkrt|^qD]L}||d@|||d >d @N}||d >|Ad @}||d @}q>W|d@}|d@}tjd ||S(Ni5W0PiiqV4R-s i i i?iIiis>LL(R-s i i IiIi(RRQRS(RJtnrtaddtnr2R/Rotr1tr2((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRas2"  cCstjd|d S(Ns((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt lenenc_ints      t MysqlPacketcBseZdZdZdZdZdZdZdZdd Z d d Z e rid Z n d Z dZ dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZRS(srRepresentation of a MySQL response packet. Provides an interface for reading/parsing the packet results. t _positiont_datacCsd|_||_dS(Ni(RzR{(R[R*tencoding((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyR\s cCs|jS(N(R{(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt get_all_datascCs|j|j|j|!}t||krd|t||jt|jf}trqt||jnt|n|j|7_|S(sCRead the first 'size' bytes in packet and advance cursor past them.s\Result length not requested length: Expected=%s. Actual=%s. Position: %s. Data Length: %s(R{RzR3RCR2tdumptAssertionError(R[tsizeRNterror((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytreads%  cCs|j|j}d|_|S(s`Read all remaining data in the packet. (Subsequent read() will return errors.) N(R{RztNone(R[RN((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytread_alls cCsT|j|}|dks.|t|jkrGtd||fn||_dS(s1Advance the cursor in data buffer 'length' bytes.is4Invalid advance amount (%s) for cursor. Position=%sN(RzR3R{t Exception(R[RVt new_position((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytadvances  !icCsA|dks!|t|jkr4td|n||_dS(s9Set the position of the data buffer cursor to 'position'.is)Invalid position to rewind cursor to: %s.N(R3R{RRz(R[tposition((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytrewinds!icCs|j|||!S(s>Get 'length' bytes starting at 'position'. Position is start of payload (first four packet header bytes are not included) starting at index '0'. No error checking is done. If requesting outside end of buffer an empty string (or string shorter than 'length') may be returned! (R{(R[RRV((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt get_bytes s cCs)t|j|j}|jd7_|S(Ni(tordR{Rz(R[RN((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt read_uint8scCs#|j|j}|jd7_|S(Ni(R{Rz(R[RN((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRscCs2tjd|j|jd}|jd7_|S(NsS(Nss        cCs)|j}|dkrdS|j|S(sRead a 'Length Coded String' from the data buffer. A 'Length Coded String' consists first of a length coded (unsigned, positive) integer represented in 1-9 bytes followed by that many bytes of binary data. (For example "cat" would be "3cat".) N(RRR(R[RV((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytread_length_coded_stringPs  cCs=tj|}|j|j|j}|j|j7_|S(N(RQtStructRR{RzR(R[tfmtRRN((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt read_struct\scCs)|jdd!dko(t|jdkS(Niisi(R{R3(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt is_ok_packetbscCs)|jdd!dko(t|jdkS(Niisi (R{R3(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt is_eof_packetfscCs|jdd!dkS(Niis(R{(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytis_auth_switch_requestlscCs.t|jdd!}d|ko+dkSS(Niii(RR{(R[t field_count((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytis_resultset_packetpscCs|jdd!dkS(Niis(R{(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytis_load_local_packettscCs|jdd!dkS(Niis(R{(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytis_error_packetwscCs\|jrX|j|jd|j}trEtd|ntj|jndS(Niserrno =( RRRRRCR2Rtraise_mysql_exceptionR{(R[terrno((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt check_errorzs    cCst|jdS(N(RBR{(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyR~s(RzR{(R_R`t__doc__t __slots__R\R}RRRRRRRRRRRRRRRRRRRRRRR~(((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRys8                      tFieldDescriptorPacketcBs;eZdZdZdZdZdZdZRS(sA MysqlPacket that represents a specific column's metadata in the result. Parsing is automatically done and the results are exported via public attributes on the class such as: db, table_name, name, length, type_code. cCs$tj||||j|dS(N(RyR\t_parse_field_descriptor(R[R*R|((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyR\scCs|j|_|j|_|jj||_|jj||_|jj||_|jj||_|jd\|_ |_ |_ |_ |_ dS(sParse the 'Field Descriptor' (Metadata) packet. This is compatible with MySQL 4.1+ (not compatible with MySQL 4.0). s Z>e8j?Z?e8j@Z@e8jAZAe8jBZBRS(4s Representation of a socket with a mysql server. The proper way to get an instance of this class is to call connect(). Establish a connection to the MySQL database. Accepts several arguments: :param host: Host where the database server is located :param user: Username to log in as :param password: Password to use. :param database: Database to use, None to not use a particular one. :param port: MySQL port to use, default is usually OK. (default: 3306) :param bind_address: When the client has multiple network interfaces, specify the interface from which to connect to the host. Argument can be a hostname or an IP address. :param unix_socket: Optionally, you can use a unix socket rather than TCP/IP. :param charset: Charset you want to use. :param sql_mode: Default SQL_MODE to use. :param read_default_file: Specifies my.cnf file to read these parameters from under the [client] section. :param conv: Conversion dictionary to use instead of the default one. This is used to provide custom marshalling and unmarshaling of types. See converters. :param use_unicode: Whether or not to default to unicode strings. This option defaults to true for Py3k. :param client_flag: Custom flags to send to MySQL. Find potential values in constants.CLIENT. :param cursorclass: Custom cursor class to use. :param init_command: Initial SQL statement to run when connection is established. :param connect_timeout: Timeout before throwing an exception when connecting. (default: 10, min: 1, max: 31536000) :param ssl: A dict of arguments similar to mysql_ssl_set()'s parameters. For now the capath and cipher arguments are not supported. :param read_default_group: Group to read from in the configuration file. :param compress: Not supported :param named_pipe: Not supported :param autocommit: Autocommit mode. None means use server default. (default: False) :param local_infile: Boolean to enable the use of LOAD DATA LOCAL command. (default: False) :param max_allowed_packet: Max size of packet sent to server in bytes. (default: 16MB) Only used to limit size of "LOAD LOCAL INFILE" data packet smaller than default (16KB). :param defer_connect: Don't explicitly connect on contruction - wait for connect call. (default: False) :param auth_plugin_map: A dict of plugin names to a class that processes that plugin. The class will take the Connection object as the argument to the constructor. The class needs an authenticate method taking an authentication packet as an argument. For the dialog plugin, a prompt(echo, prompt) method can be used (if no authenticate method) for returning a string from the user. (experimental) :param db: Alias for database. (for compatibility to MySQLdb) :param passwd: Alias for password. (for compatibility to MySQLdb) :param binary_prefix: Add _binary prefix on bytes and bytearray. (default: False) R1ii iic %s|dk rtjdtn| dkrGtjddkrGt} n|dk rh|dkrh|}n|dk r| r|}n|s|rtdnt||_ |j r| t j O} nr| rtj j drd} qd} n| r2s dntjtjj| fd } | d |}| d |}| d |}| d |}| d|}t| d|}| d|}| d|}|si}nt|tr2xOdddddgD]5}!| d|!|j|!}"|"r|"||!||_?||_@|r d|_An |jBdS(!Nsno_delay option is deprecatediis3compress and named_pipe arguments are not supportedtwins c:\my.inis /etc/my.cnftclientcs7|r |Syj|SWntk r2|SXdS(N(RR(Rtarg(tcfgtread_default_group(s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt_configcs  tuserRJthosttdatabasetsockettports bind-addresssdefault-character-settcatcapathtcertRtciphersssl-sssl module not foundt localhosti R1i3s+connect_timeout should be >0 and <=31536000sread_timeout should be >= 0swrite_timeout should be >= 0s Not connected(CRtwarningstwarntDeprecationWarningR5t version_infotTruetNotImplementedErrortboolt _local_infileR t LOCAL_FILEStplatformt startswithRRtostpatht expanduserR(R'tdictRtFalsetsslt SSL_ENABLEDtSSLt_create_ssl_ctxtctxRRt DEFAULT_USERRRJRt unix_sockett bind_addressR:tconnect_timeoutt _read_timeoutt_write_timeouttcharsett use_unicodetDEFAULT_CHARSETR R|t CAPABILITIEStCONNECT_WITH_DBt client_flagt cursorclasst_resultt_affected_rowst host_infotautocommit_modeRt conversionstitemsttypetencoderstdecoderstsql_modet init_commandtmax_allowed_packett_auth_plugin_mapt_binary_prefixt_socktconnect(%R[RRRJRRRRR tread_default_filetconvRRRR RRRtcompresst named_pipetno_delayt autocommitRtpasswdt local_infileR t defer_connecttauth_plugin_mapt read_timeoutt write_timeoutRt binary_prefixRRtvaluetktv((RRs7/usr/lib/python2.7/site-packages/pymysql/connections.pyR\9s                                    FF      cCst|tjr|S|jd}|jd}|dkoI|dk}tjd|d|}| oz|jdt|_|rtjntj |_ d|kr|j |dd|jdnd|kr|j |dn|j tjO_ |j tjO_ |S( NRRtcafiletcheck_hostnameRtkeyfileRR(R'Rt SSLContextRRtcreate_default_contextRR#t CERT_NONEt CERT_REQUIREDt verify_modetload_cert_chaint set_cipherstoptionst OP_NO_SSLv2t OP_NO_SSLv3(R[tsslpRRthasnocaR((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRs # cCs|jrtjdnt|_|jdkr7dStjddtj }z)y|j |Wnt k rvnXWd|j XdS(s*Send the quit message and close the socketsAlready closedNsR(R[RR|((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt set_charset}s    cCst|_yU|dkr|jr|jdkrtjtjtj}|j|j |j |jd|_ t rdt dqdni}|jdk r|jdf|d}||jkr|j|dkrtjtj dntj d||jfn|jdd |_|j|}t rt |n||7}|d krq n|t kr Pq q W|||j} | j| S( sRead an entire "mysql packet" in its entirety from the network and return a MysqlPacket type that represents the results. R1iss4         cCs|jj|jx{try|jj|}PWqttfk r}|jtj krcqn|j t j t jd|fqXqWt||kr|j t j t jdn|S(Ns1Lost connection to MySQL server during query (%s)s,Lost connection to MySQL server during query(RRuRRR9RRxRwRRyR5RR?R RR3(R[t num_bytesR*R((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRs"   cCsg|jj|jy|jj|Wn9tk rb}|jtjtj d|fnXdS(NsMySQL server has gone away (%r)( RRuRtsendallRxR5RR?R tCR_SERVER_GONE_ERROR(R[R*R((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyR4s cCs|rByt|}|jWqXt|_d|_qXXnt|}|j||_|jdk r|j|_n|j S(N( RLtinit_unbuffered_queryRtunbuffered_activeRt connectionRRRR(R[RdRN((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRfs       cCs|jr|jjSdSdS(Ni(RR(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyR+s  cCs|jstjdn|jdk r||jjrStjd|jjnx|jj ro|j qVWd|_nt |t r|j |j}nttt|d}tjd||}|||d }|j|trt|nd|_|tkrdS||d}xQtrzttt|}|j|| ||}| r*|tkr*Pq*q*WdS(Ns(0, '')s.Previous unbuffered result was left incompleteisRRRt _process_authRp(R[t charset_idt data_initR*tauthrespRt auth_packett plugin_name((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRWsP% !!#      " c Cs|jj|}|s6|jj|jd}n|ry||}|j|SWqtk r|dkrtjdd||fqqtk rtjdd||fqXnd}|dkrt |j j d|j }n|dkr1t |j j d|j d }n|d krV|j j dd }n}|dkr|}xNtr|j}|d @d k}|d @d k} |j } | dkr|j|j j dd n|rmd} y'|j|| } |j| d Wqtk r7tjdd||fqtk ritjdd||| | fqXntjdd||f|j}|j|js| rkPqkqkW|Stjdd||j||j}|j|S(NRtdialogi sGAuthentication plugin '%s' not loaded: - %r missing authenticate methodsXAuthentication plugin '%s' not loaded: - %r cannot be constructed with connection objectRRtmysql_old_passwordstmysql_clear_passwordiiis Password: s3no response - TypeError within plugin.prompt methodsAAuthentication plugin '%s' not loaded: - %r missing prompt methodi sTAuthentication plugin '%s' %r didn't respond with string. Returned '%r' to prompt %rs.Authentication plugin '%s' (%r) not configureds)Authentication plugin '%s' not configured(RRRt authenticatetAttributeErrorRR?t TypeErrorRRORJReRRpRRRtpromptR>RR( R[RRt plugin_classthandlerR*R@tflagtechotlastRtresp((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRsh       $ (                cCs |jdS(Ni(tserver_thread_id(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRkscCs|jS(N(R(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytcharacter_set_namescCs|jS(N(R(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt get_host_infoscCs|jS(N(tprotocol_version(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytget_proto_infosc Csd}|j}|j}t|||d!|_|d7}|jd|}|||!jd|_|d}tjd|||d!|_ |d7}|||d!|_ |d7}tjd |||d !d|_ |d 7}t ||d krtjd |||d !\}}}}|d 7}||_ yt|j|_Wntk rqd|_nX||_trtd |n|j |d>O_ trtd|ntd|d}n|d7}t |||kr|j ||||!7_ ||7}n|d7}|j tj@rt ||kr|jd|}|dkr{||jd|_q|||!jd|_ndS(NiisRsR}RRRRRRQRRRRRR3tserver_languageR Rtserver_charsettKeyErrorRRRCR2tmaxR RR( R[R>RR*t server_endtlangtstattcap_htsalt_len((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRsN       $ )        " cCs|jS(N(R(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pytget_server_infosNi@i(CR_R`RRRRRR1RR\RR7tpropertyR8R5t__del__RR:RBR;RGRIRKRNRPRER[RTRWR_R`RcRhRiRRlRRnRpRRRyR>RR4RfRRCRRRkRRRRRRtWarningR2Rt DatabaseErrort DataErrorR?tIntegrityErrorRtProgrammingErrortNotSupportedError(((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRs7        z                        H $    & = ?     ?          RLcBs}eZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z d ZRS( cCsg||_d|_d|_d|_d|_d|_d|_d|_d|_ d|_ t |_ dS(s. :type connection: Connection iN( RRRRRRRKRRRMRRR(R[R((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyR\/s          cCs|jr|jndS(N(RR(R[((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyR?s cCsizX|jj}|jr.|j|n)|jrJ|j|n |j|Wdd|_XdS(N(RR>RRBRt_read_load_local_packett_read_result_packetR(R[t first_packet((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRCs  cCst|_|jj}|jrF|j|t|_d|_nP|jrt|j |t|_d|_n"|j |_ |j d|_ dS(Nl(RRRR>RRBRRRRRRt_get_descriptionsR(R[R((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRPs          cCsXt|}|j|_|j|_|j|_|j|_|j|_|j|_dS(N(RRRRRRKR(R[Rt ok_packet((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRBes      cCs|jjstdnt|}t|j|j}y|jWn|jjnX|jj}|jst j ddn|j |dS(NsF**WARN**: Received LOAD_LOCAL packet but local_infile option is false.isCommands Out of Sync( RRt RuntimeErrorRt LoadLocalFileRR6R>RRR?RB(R[Rt load_packettsenderR((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRns     cCs8|jstSt|}|j|_|j|_tS(N(RRRRRR(R[Rtwp((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt_check_packet_is_eofs     cCs'|j|_|j|jdS(N(RRRt_read_rowdata_packet(R[R((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRs cCsr|js dS|jj}|j|rJt|_d|_d|_dS|j|}d|_|f|_|S(Ni( RRR>RRRRMt_read_row_from_packetR(R[Rtrow((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyt_read_rowdata_packet_unbuffereds      cCsGx@|jrB|jj}|j|rt|_d|_qqWdS(N(RRR>RRR(R[R((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRs   cCsvg}xKtrS|jj}|j|r:d|_Pn|j|j|q Wt||_t ||_ dS(s:Read a rowdata packet for each data row in the result set.N( RRR>RRtappendRR3RttupleRM(R[RMR((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRs  cCsg}x|jD]\}}y|j}Wntk r@PnX|dk r|dk rk|j|}ntrtd|n|dk r||}qn|j|qWt|S(NsDEBUG: DATA = ( RRt IndexErrorRRRCR2RR(R[RRR|t converterR*((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRs    c Csfg|_g|_|jj}|jj}g}xt|jD]}|jjt}|jj ||j |j |j }|r|t j kr|}q|tkr|jdkrd}q|}qd}nd}|jjj|}|tjkr d}ntr*tdj||n|jj ||fq@W|jj} t||_ dS(s>Read a column descriptor packet for each column in the result.i?RsDEBUG: field={}, converter={}N(tfieldsRRRR|RRR>RRRRRtJSONt TEXT_TYPESRRR RtthroughRCR2R.R( R[Rt conn_encodingRR>tfieldt field_typeR|Rt eof_packet((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRs6           (R_R`R\RRRRBRRRRRRRR(((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRL-s       RcBseZdZdZRS(cCs||_||_dS(N(RR(R[RR((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyR\s cCs|jjstjdn|j}zydt|jdL}t|jd }x0tr|j |}|svPn|j |qWWWdQXWn/t k rtj ddj |jnXWd|j dXdS( s3Send data packets from the local file to the servers(0, '')RriiNisCan't find file '{0}'R1i@(RRRRR8RR;R RRRRxR?R.(R[tconnt open_fileRtchunk((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyR6s    &(R_R`R\R6(((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyRs (dt __future__Rt_compatRRRRRRRt functoolsRthashlibRRRRQR5RbRRRR R t constantsR R R RRR1RtcursorsRt optionfileRtutilRRRRRRt ImportErrorRRtgetpasstgetuserRRRCRt _py_versionR4R>R)RRt _socketioRR#tsettBITtBLOBt LONG_BLOBt MEDIUM_BLOBtSTRINGt TINY_BLOBRtVARCHARtGEOMETRYRtnewRERRRRRRRRBRHRORIRbtobjectRWRpRaRwRxRyRRRRRRLR(((s7/usr/lib/python2.7/site-packages/pymysql/connections.pyts.         (        A           24