ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙ  jdZddlmZmZmZmZddlmZddlm Z ddl m Z m Z ddl mZmZmZmZmZmZmZmZGdd eZGd d eZGd d eZGddeZGddeZGddeeZGddeZGddeZGddeZGddeZ GddeZ!GddeZ"Gd d!eeZ#Gd"d#eZ$Gd$d%eZ%Gd&d'eZ&Gd(d)eZ'Gd*d+eZ(Gd,d-eZ)Gd.d/eZ*Gd0d1eZ+Gd2d3eZ,Gd4d5eZ-Gd6d7eZ.Gd8d9eZ/Gd:d;eZ0Gd<d=eZ1Gd>d?eZ2Gd@dAeZ3GdBdCeZ4GdDdEeeZ5GdFdGeZ6GdHdIeZ7GdJdKeZ8GdLdMeZ9e6e5jtdN<GdOdPeZ;GdQdReeZ>8 8 $++Dt&t,,   # #t'7'7 7Krrctt| ||}|dk7r|S|dj|jvr|S|dj t k7r|St|d<|S)Nrr)superr! __setitem__r1r2 __class__rr)r3keyvalueresr9s rr8z _ForceNullParameters.__setitem___sk($;CG + J   # #4+;+; ;J   ' '4 /J!V\ r) rrr__doc__setr2r5_spec_callbacksr8 __classcell__)r9s@rr!r!2s7  K  &O  rr!c *eZdZddddddddd d d d d Zy)HmacAlgorithmIddes_macsha1sha224sha256sha384sha512 sha512_224 sha512_256sha3_224sha3_256sha3_384sha3_512) z 1.3.14.3.2.10z1.2.840.113549.2.7z1.2.840.113549.2.8z1.2.840.113549.2.9z1.2.840.113549.2.10z1.2.840.113549.2.11z1.2.840.113549.2.12z1.2.840.113549.2.13z2.16.840.1.101.3.4.2.13z2.16.840.1.101.3.4.2.14z2.16.840.1.101.3.4.2.15z2.16.840.1.101.3.4.2.16Nrrr_maprrrrBrBks-"$&&''++#-#-#-#- DrrBc"eZdZdefdeddifgZy) HmacAlgorithmrrrTN)rrrrBr rrrrrRrR|s o& sZ./GrrRcveZdZiddddddddd d d d d ddddddddddddddddddd d!d"Zy#)$DigestAlgorithmIdz1.2.840.113549.2.2md2z1.2.840.113549.2.5md5r'rDr(rEr)rFr*rGr+rHz2.16.840.1.101.3.4.2.5rIz2.16.840.1.101.3.4.2.6rJz2.16.840.1.101.3.4.2.7rKz2.16.840.1.101.3.4.2.8rLz2.16.840.1.101.3.4.2.9rMz2.16.840.1.101.3.4.2.10rNz2.16.840.1.101.3.4.2.11shake128z2.16.840.1.101.3.4.2.12shake256z2.16.840.1.101.3.4.2.17 shake128_lenz2.16.840.1.101.3.4.2.18 shake256_lenNrOrrrrTrTs e e    !(   !(   !(   !(  !,  !,  !*  !*  !*  ":  ":  ":  ">! " "># DrrTc"eZdZdefdeddifgZy)DigestAlgorithmrrrTN)rrrrTr rrrrr\r\s! '( sZ./Grr\ceZdZdefdefgZy) DigestInfodigest_algorithmdigestN)rrrr\rrrrrr^r^s _- ;Grr^ceZdZddiZy)MaskGenAlgorithmIdz1.2.840.113549.1.1.8mgf1NrOrrrrbrbs Drrbc.eZdZdefdeddifgZdZdeiZy)MaskGenAlgorithmrrrTr-rcN) rrrrbr rr.r\r0rrrreres4 () sZ./G ,IJrreceZdZddiZy) TrailerFieldrtrailer_field_bcNrOrrrrgrgs  DrrgcVeZdZdedddidfdeddddid dfd ed d dfd edddfgZy)RSASSAPSSParamshash_algorithmrrrDexplicitdefaultmask_gen_algorithmrrcr- salt_length trailer_fieldrhN)rrrr\rerrgrrrrrjrjs{  '0   ! !'#."7        -  9$GrrjceZdZiddddddddddd dd d d d ddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+ Zid'd,d(d-ddddd&d.dddddddd dddd/d d dddd0d d d d1ddd2dd3d4d5d6d7d8d9Zy:);SignedDigestAlgorithmIdz 1.3.14.3.2.3md5_rsaz 1.3.14.3.2.29sha1_rsaz1.3.14.7.2.3.1md2_rsaz1.2.840.113549.1.1.2z1.2.840.113549.1.1.4z1.2.840.113549.1.1.5r& sha224_rsar# sha256_rsar$ sha384_rsar% sha512_rsaz1.2.840.113549.1.1.10 rsassa_pssz1.2.840.10040.4.3sha1_dsaz 1.3.14.3.2.13z 1.3.14.3.2.27z2.16.840.1.101.3.4.3.1 sha224_dsaz2.16.840.1.101.3.4.3.2 sha256_dsaz1.2.840.10045.4.1 sha1_ecdsa sha224_ecdsa sha256_ecdsa sha384_ecdsa sha512_ecdsasha3_224_ecdsasha3_256_ecdsasha3_384_ecdsasha3_512_ecdsarsassa_pkcs1v15dsaecdsaed25519ed448) 1.2.840.10045.4.3.11.2.840.10045.4.3.21.2.840.10045.4.3.31.2.840.10045.4.3.42.16.840.1.101.3.4.3.92.16.840.1.101.3.4.3.102.16.840.1.101.3.4.3.112.16.840.1.101.3.4.3.12r"1.2.840.10040.4.11.2.840.10045.4 1.3.101.112 1.3.101.113rrr"rrrrrrrrrr)rr}rrrrrrN)rrrrP _reverse_maprrrrvrvs!  ! !  )!   !   !   !  !  !  !  !  !  Z!  !  !  !,!  !,!! " \#! $ .---"2#3#3#3 1"" A! DF "" ) )  1  -  ' ) * . - - . - - -!" -#$.-2333 3LrrvcNeZdZdefdeddifgZdZdeiZe dZ e dZ y ) SignedDigestAlgorithmrrrTr-r~c |dj}iddddddddddddd dddd d d d d d dd d d ddddddddddddddddd}||vr||Sttd|)z :return: A unicode string of "rsassa_pkcs1v15", "rsassa_pss", "dsa", "ecdsa", "ed25519" or "ed448" rryrrwrxrzr{r|r}r~rrrrrrrrrrr)rrrrrrrrz> Signature algorithm not known for %s r/ ValueErrorrr3ralgo_maps rsignature_algoz$SignedDigestAlgorithm.signature_algo4s=%,,  ( (  )  +  +  +   +  0  ,    %  %  5  '  G G! " G# $$%%%% 3 6  I& &      rc|dj}idddddddd d d d d dddddd dd dddd dd dd dddddd}||vr||S|dk(r|dddjSttd|)z :return: A unicode string of "md2", "md5", "sha1", "sha224", "sha256", "sha384", "sha512", "sha512_224", "sha512_256" or "shake256" rryrUrwrVrxrDrzrEr{rFr|rGr}rHrrrrrrrrrrrXr~rrkz9 Hash algorithm not known for %s rrs r hash_algozSignedDigestAlgorithm.hash_algocs:%,,  u u    (  (  (   (    (  (  &  H  H  H  H x! " Z# &  I& &  $ %&67 DKK K      rN) rrrrvr rr.rjr0propertyrrrrrrr)s] -. sZ./G ,IoJ, , \' ' rrceZdZdefdefgZy) Pbkdf2Salt specified other_sourceN)rrrrr _alternativesrrrrrs k" ,-Mrrc8eZdZdefdefdeddifdeddd iifgZy ) Pbkdf2Paramssaltiteration_count key_lengthrTprfrnrrDN)rrrrrrRrrrrrrs<  G$ wT 23  K+@AB GrrceZdZddiZy)KdfAlgorithmIdz1.2.840.113549.1.5.12pbkdf2NrOrrrrr Drrc.eZdZdefdeddifgZdZdeiZy) KdfAlgorithmrrrTr-rN) rrrrr rr.rr0rrrrrs3 n% sZ./G,I,Jrrc,eZdZdZdefdefdeddifgZy) DHParameterszn Original Name: DHParameter Source: ftp://ftp.rsasecurity.com/pub/pkcs/ascii/pkcs-3.asc section 9 pgprivate_value_lengthrTN)rrrr=rrrrrrrs- g g :t*<=GrrceZdZddiZy)KeyExchangeAlgorithmIdz1.2.840.113549.1.3.1dhNrOrrrrrs Drrc.eZdZdefdeddifgZdZdeiZy)KeyExchangeAlgorithmrrrTr-rN) rrrrr rr.rr0rrrrrs4 ,- sZ./G,I lJrrc"eZdZdeddifdefgZy) Rc2Paramsrc2_parameter_versionrTivN)rrrrrrrrrrrs 'J+=> {GrrceZdZddiZy)Rc5ParamVersionzv1-0NrOrrrrrs F Drrc.eZdZdefdefdefdeddifgZy) Rc5Paramsversionroundsblock_size_in_bitsrrTN)rrrrrrrrrrrrs0 O$ 7 w' {Z./ GrrceZdZdefdefgZy) Pbes1Paramsr iterationsNrrrrrrrrrrrs  wGrrceZdZdefdefgZy) CcmParams aes_nonce aes_icvlenNrrrrrrs k" wGrrceZdZddiZy)PSourceAlgorithmIdz1.2.840.113549.1.1.9 p_specifiedNrOrrrrrs  Drrc.eZdZdefdeddifgZdZdeiZy)PSourceAlgorithmrrrTr-rN) rrrrr rr.rr0rrrrrs4 () sZ./G ,I{JrrcNeZdZdedddidfdeddddid dfd ed d d d dfgZy)RSAESOAEPParamsrkrrrDrlrorrcr-p_source_algorithmrqrrN)rrrr\rerrrrrrrsk  '0   ! !'#."7   ! !."%  )Grrc6eZdZdZdefdefgZedZdZy) DSASignaturea  An ASN.1 class for translating between the OS crypto library's representation of an (EC)DSA signature and the ASN.1 structure that is part of various RFCs. Original Name: DSS-Sig-Value Source: https://tools.ietf.org/html/rfc3279#section-2.2.2 rsct|dt|dz}t|t|dzd}|||dS)a Reads a signature from a byte string encoding accordint to IEEE P1363, which is used by Microsoft's BCryptSignHash() function. :param data: A byte string from BCryptSignHash() :return: A DSASignature object rrqN)rr)r len)clsdatarrs r from_p1363zDSASignature.from_p13637sF 4#d)q.1 2 4D Q0 1#$$rct|dj}t|dj}tt|t|}t ||}t ||}||zS)z Dumps a signature to a byte string compatible with Microsoft's BCryptVerifySignature() function. :return: A byte string compatible with BCryptVerifySignature() rr)r r/maxrr )r3r_bytess_bytesint_byte_lengths rto_p1363zDSASignature.to_p1363HsctCy//0tCy//0c'lCL9Wo6Wo6  rN) rrrr=rr classmethodrrrrrrr(s7 g gG %% !rrc eZdZiddddddddd d d d d ddddddddddddddddddd d!d"id#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdO ZyP)QEncryptionAlgorithmIdz 1.3.14.3.2.7desz1.2.840.113549.3.7tripledes_3keyz1.2.840.113549.3.2rc2z1.2.840.113549.3.4rc4z1.2.840.113549.3.9rc5z2.16.840.1.101.3.4.1.1 aes128_ecbz2.16.840.1.101.3.4.1.2 aes128_cbcz2.16.840.1.101.3.4.1.3 aes128_ofbz2.16.840.1.101.3.4.1.4 aes128_cfbz2.16.840.1.101.3.4.1.5 aes128_wrapz2.16.840.1.101.3.4.1.6 aes128_gcmz2.16.840.1.101.3.4.1.7 aes128_ccmz2.16.840.1.101.3.4.1.8aes128_wrap_padz2.16.840.1.101.3.4.1.21 aes192_ecbz2.16.840.1.101.3.4.1.22 aes192_cbcz2.16.840.1.101.3.4.1.23 aes192_ofbz2.16.840.1.101.3.4.1.24 aes192_cfbz2.16.840.1.101.3.4.1.25 aes192_wrapz2.16.840.1.101.3.4.1.26 aes192_gcmz2.16.840.1.101.3.4.1.27 aes192_ccmz2.16.840.1.101.3.4.1.28aes192_wrap_padz2.16.840.1.101.3.4.1.41 aes256_ecbz2.16.840.1.101.3.4.1.42 aes256_cbcz2.16.840.1.101.3.4.1.43 aes256_ofbz2.16.840.1.101.3.4.1.44 aes256_cfbz2.16.840.1.101.3.4.1.45 aes256_wrapz2.16.840.1.101.3.4.1.46 aes256_gcmz2.16.840.1.101.3.4.1.47 aes256_ccmz2.16.840.1.101.3.4.1.48aes256_wrap_padz1.2.840.113549.1.5.13pbes2z1.2.840.113549.1.5.1 pbes1_md2_desz1.2.840.113549.1.5.3 pbes1_md5_desz1.2.840.113549.1.5.4 pbes1_md2_rc2z1.2.840.113549.1.5.6 pbes1_md5_rc2pbes1_sha1_despbes1_sha1_rc2pkcs12_sha1_rc4_128pkcs12_sha1_rc4_40pkcs12_sha1_tripledes_3keypkcs12_sha1_tripledes_2keypkcs12_sha1_rc2_128pkcs12_sha1_rc2_40rsaes_pkcs1v15 rsaes_oaep) z1.2.840.113549.1.5.10z1.2.840.113549.1.5.11z1.2.840.113549.1.12.1.1z1.2.840.113549.1.12.1.2z1.2.840.113549.1.12.1.3z1.2.840.113549.1.12.1.4z1.2.840.113549.1.12.1.5z1.2.840.113549.1.12.1.6r"z1.2.840.113549.1.1.7NrOrrrrr[s1 1 .1  e1  e 1  e 1  !,1  !,1  !,1  !,1  !-1  !,1  !,1  !"31  "<1  ">>V        rc |dj}|dddk(r dddd|dd Sd dd }||vr||S|d k(r?|d dj}dd dd}||vr||S|dk\r|S|yttd|dk(r.|d dd dj}||S|d djS|j ddk(rd d d d d d ddddddd |Sttd|)a Returns the key length to pass to the cipher/kdf. The PKCS#5 spec does not specify a way to store the RC5 key length, however this tends not to be a problem since OpenSSL does not support RC5 in PKCS#8 and OS X does not provide an RC5 cipher for use in the Security Transforms library. :raises: ValueError - when the key length can not be determined :return: An integer representing the length in bytes rrrtaesr aes128_aes192_aes256_)rrrrr)x:zw Invalid RC2 parameter version found in EncryptionAlgorithm parameters rr rencryption_schemer!r" rrrrrrrrrrrr@ Unrecognized encryption algorithm "%s" )r/rrrr*)r3r,cipher_lengthsrencoded_key_bits_maprs rrzEncryptionAlgorithm.key_lengthTs {+22 1Q 5 (a" $ $   n ,!/2 2 e #$($67N$O$V$V ! $ %(<<+,ABB$+,,$,V  g %l+,AB<PQ]^eeJ%!! %&9:EE E    $ *!"!"!"!""#"#')&'.0.0')&'         rc|dj}|ddtgdvr|ddS|dddk(ry|ddd k(ry|tgd vry|d k(r|d d jStt d|)z Returns the name of the encryption mode to use. :return: A unicode string from one of the following: "cbc", "ecb", "ofb", "cfb", "wrap", "gcm", "ccm", "wrap_pad" rrr?r;Npbes1_cbcpkcs12_)rrrrrrrGrI)r/r>encryption_moderrr5s rrQz#EncryptionAlgorithm.encryption_modes{+22 1Q 3'H#I I"12& & 1Q 8 + 1Q 9 , c"IJ J g % %&9:JJ J      rc |dj}|ddtgdvry|tgdvr|S|dk(ry|d k(r|d d jS|jd d k(rddddddddddddd |St t d|)al Returns the name of the symmetric encryption cipher to use. The key length can be retrieved via the .key_length property to disabiguate between different variations of TripleDES, AES, and the RC* ciphers. :return: A unicode string from one of the following: "rc2", "rc5", "des", "tripledes", "aes" rrr?r;r8)rrrr tripledesrrrGr!r"rrrrHrI)r/r>encryption_cipherr*rrr5s rrTz%EncryptionAlgorithm.encryption_ciphers{+22 1Q 3'H#I I c"78 8" " . . g % %&9:LL L    $ *!&!&!&!&"'"'',&+.9.9',&+         rc <|dj}|ddtgdvrydddd}||vr||S|dk(r|d d jdzS|d k(r|d d jS|jd dk(rddddddddddddd |St t d|)z Returns the block size of the encryption cipher, in bytes. :return: An integer that is the block size in bytes rrr?r;rr@)rrrrrrrrGr!r"rHrI)r/r>encryption_block_sizer*rr)r3r, cipher_maps rrVz)EncryptionAlgorithm.encryption_block_sizes{+22 1Q 3'H#I I j (o. . e # %&:;BBaG G g % %&9:PP P    $ *!"!"!"!""#"#'(&'././'(&'         rc$|dj}|tddgvr|ddjStgd}||vr|djS|dk(r|ddjS|jd d k(ry t t d |) a Returns the byte string of the initialization vector for the encryption scheme. Only the PBES2 stores the IV in the params. For PBES1, the IV is derived from the KDF and this property will return None. :return: A byte string or None rrrrr)rrrrrrrrrrGr!r"NrI)r/r> encryption_ivr*rr)r3r,octet_string_iv_oidss rrYz!EncryptionAlgorithm.encryption_iv9s{+22 c5%.1 1 %d+22 2 # $  2 2 %,, , g % %&9:HH H    $ *      rN)rrrrr rr.rrrrrrr0rr-r0r3r6rrQrTrVrYrrrrrs +, sZ./G ,I {+ y y  k  k  k k k k i i i !" #$ %& '(&%*)&1&1*)%=JB& & P! ! F* * X  B\ \ |  B. . `0 0 d- - rrceZdZdefdefgZy) Pbes2Paramsr rGN)rrrrrrrrrr\r\js  - 12Grr\ceZdZdefdefgZy) Pbmac1Paramsr message_auth_schemeN)rrrrrRrrrrr^r^qs  -  .Grr^ceZdZddiZy) Pkcs5MacIdz1.2.840.113549.1.5.14pbmac1NrOrrrraraxrrrac(eZdZdefdefgZdZdeiZy)Pkcs5MacAlgorithmrrr-rbN) rrrrar rr.r^r0rrrrdrd~s, j! sG ,I,JrrdrceZdZiZdZy)AnyAlgorithmIdc|jj}tttfD])}|jj D] \}}|||< +yN)r9rPrrvrTitems)r3rP other_clsoidr2s r_setupzAnyAlgorithmId._setupsI~~""/1HJ[\I&^^113 T S 4]rN)rrrrPrlrrrrfrfs D!rrfc0eZdZdefdeddifgZdZiZdZy)AnyAlgorithmIdentifierrrrTr-ctj||jj}tt fD])}|jj D] \}}|||< +yrh)rrlr9r0rrri)r3specsrjrkspecs rrlzAnyAlgorithmIdentifier._setupsT))-/DEI&11779 T!c :FrN) rrrrfr rr.r0rlrrrrnrns1 n% sZ./G ,IJ"rrnN)=r= __future__rrrr_errorsr_intr utilr r corer r rrrrrrrobjectr!rBrRrTr\r^rbrergrjrvrrrrrrrrrrrrrrrrrrrr\r^rardr0rfrnrrrrxs$SR.   "(666r&"H(,*H) x 7 %h%P>.>Bb 0(b J8% 8 8 - 8g () x  h F0!80!f2,2jW .W t(8!  +6w'!%!"18"r