$  __text__TEXTП__data__DATA C__cstring__TEXT`3__literal8__TEXTH(__literal4__TEXTp__bss__DATA__const__TEXTt__picsymbolstub2__TEXTx,8P__la_sym_ptr2__DATA88__nl_symbol_ptr__DATA,p__textcoal_nt__TEXT @dVw P)x{UWVUS/9PtT$@$?E@Z]f.M E܋?9ptt$@$Rt\M9qtt$A$7tAME܋qQxEЃ\$T$ t$D$<$$ƒL[^_]ËE܋;9ptt$@$tJM9qtt$A$t/ME܋qEЋxP A D$ \$t$T$<$]끉|$D$7$1f|$3t$ى|$ÐUWVSi}<$4E<$!EF }܉FM؉;}so)EԋuF;t$L$uF 4U9VtT$F$t4F M܉FM؉;}rEu܉0E}؉8u܉4$E؉$M |$ L$Et yE܉${E D$ eE D$1SEp 'UWVU܍MSulET$E T$t$L$D$ D$$1҅EE܋9PtT$@$iE܋x}u9~t|$F$3yFEHẺE̋u9~t|$F$#FIЃ} ȨE܉$}EBD$ E؉t$D$Ẻ$dEЍ}D$ D$E؉|$$"EM؉ME}ԉ$EuE9us`U$UƋ @F G$FG $oFMȋA Mĉ4EM9r}ԉ<$5EЉ$*Uȃl[^_]ËE؅EOEЉ$vԍOT$$&uЉ4$1뫋E܉$yEtYD$ E؉t$D$Ẻ$uMԉ $E܃UbOt$$Eԉ$OuD$ $iD$߉4$4$4$eE4$ms뤋E܋9ptt$@$iU9rtt$B$JUE܋rJxU؃T$L$ t$D$<$@Eԋ}ԅE؉EE}ԉ$EuE9us`U$BUƋ @F G$FG $FMA M4EM9r}ԉ<$UE؅E_E܋9ptt$@$>tMU9rtt$B$#t2UE܋rR xH E؉D$T$ t$L$<$UWVU܍MSulET$E T$t$L$D$ D$$1҅E E܋9PtT$@$anE܋@uE9~t|$F$3FEHEȉEȋu9~t|$F$?FIЃ} ȨE܉$ vEaD$ E؉t$D$Eȉ$Eȉt$M؉D$ uЋE؉L$t$$pEE؉EE}̉$EEċE9Es|u$UƋ @F G$}FG$oFG $aFG$PFMċA M4EM9r}̉<$EЉ$ Uăl[^_]ËE؅E3}Љ<$WԍGT$$EЉ$1뫋E܉$vEtVD$ E؉t$D$Eȉ$uủ4$xE܃UbGT$$E3uD$$mlǿ|$߉4$m4$w4$IEg4$QWE܋ 9ptt$@$UuU9rtt$B$6VUE܋rJxU؃T$L$ t$D$<$,EЋEЅM؉MEЍUԉ|$ D$ET$t$$E̋EЉ$}̅EԉEM}̉ $.EEE9Es|E$UƋ @F G$FG$FG $FG$FMA M4EM9r}̉<$]UMuԅuC]E؅EJE܋9ptt$@$tMU9rtt$B$t2UE܋rR xH E؉D$T$ t$L$<$izUWVUS\T$E D$ D$T$$=E䋓v9PtT$@$EHɉMuE\[^_]É$qED$E$E}܉$;EEE9Es`u$UĉƋ @F G$FG $FMԋA MЉ4EM9r}܉<$ECE$frED$E$E}؉$EEE9Es|u$CUĉƋ @F G$FG$ FG $FG$FM̋A Mȉ4EM9r}؉<$Eot1_ƺT$$ݐUWVU܍MSKu\T$E T$t$L$D$ D$$1҅t|E܋;9PtT$@$E܋xOE9ptt$@$E9ptt$@$quEU\[^_]ËuFEԋEPủEȋE܉UЉ$knD$ EЉ|$D$Eԉ$bupEȍM؉|$D$ UЋE̋}ԉL$t$T$D$<$耿lj4$t E؉D$<$Ɖ<$HE؅tf5˸C|$$4$1 E܉$otSD$ EЉ|$D$Eԉ$.uEȍM؉|$D$ UЋE̋}ԉL$t$T$D$<$螾2Cu D$G$}mEK9ptt$@$GE9ptt$@$(+UBEԋEpuЋr uċ@ EE܉$lD$ EЉ|$D$Eԉ$蠾.EM؉|$D$ UЋEċ}ԉL$t$T$D$<$臽lj4$XtE؉D$<$4E؅t@E܉$n.D$ EЉ|$D$Eԉ$n.EM؋UԉD$ EЉL$D$Eĉt$|$D$$ؼeKpUWVU܍MSulT$E t$L$D$ D$T$$3VE܋w9pt9t$@$1E9ptt$@$ֿE܋@ucE9~t|$F$訿FEHẺE̋u9~t|$F$vTFEHEȉEȃ}} ȨE܉$zjyD$ EԉD$EȉD$Ẻ$n+U؋M̋}ԋEȉT$ $t$ |$D$/4$E1EЅu؉uE}Ѓ$GEEċE9Er[$ƋẺ$F Eȉ$F$ڽFMċ}A 4EЉ$譼Eăl[^_]$赻Ƌ$蝽F G$菽FG $~FMċA M4EM9rME؅E讽닍T$$`4$1bE܉$jHD$ MԋEȋ}̉L$D$<$D.uEԍ}؉t$ D$Eȉ|$D$Ẻ$苹4$E覻EЅE؉EE}Ѓ$輺EME9MrX$腺ƋẺ$lF Eȉ$^F$OFM}A 4EЉ$"Ep$-Ƌ$F G$FG $FMA M4EM9rPu؅us藹ǴD$$ͻpǵ|$߉4$ͺE4$չ4$詺ER4$豹BUWVUMS\T$E L$D$ D$T$$袻yU߼9BtD$B$dTUE@EuE\[^_]ËBE$jf%E$UfD$ EԍU܉D$E؉T$|$$EЉ<$44$,EЅE܉EM}Љ $EEE̋E9Es`E$UĉƋ @F G$۹FG $ʹFM̋A Mȉ4EM9ruЉ4$萸Eu܃u^ϱ|$$褹1<$P8u荓T$UWVS <~iT$D$D$ L$$蝵 ub Eu1}D7$@M1|11EуL0 E}v$<[^_]UWVSP MEi `w ``i dw ddi hw hhi lw 耉l΍1Ѓ1΃ 14 1Ƌl11׍1ƒ 1Љ1ʃ 1э11։ 11׍1ƒ 1Љ1ʃ 1э11։ 11׍1ƒ 1Љ1ʃ 1э11։ 11׍1ƒ 1Љ1ʃ 1э11։ 11׍1ƒ 1Љ1ʃ 1э11։ 11׍1ƒ 1Љ1ʃ 1э11։ 11׍1ƒ 1Љ1ʃ 1э11։ 11׍1ƒ 1Љ1ʃ 1э11։ 11׍1ƒ 1Љ1ʃ 1щ` 11΍ d1 1 11lh [^_]ÐUWV`E}E!ȨtMU 8ZEE!ȨtuUM D2u8DMEuEM9vU uEEuUE }NEEuuu4$軲EMEETEU+E9EsMu ME}9}sVUUԋUuԋE L;u}Mw&8EDы9Gщ;uvڃEE9EruU$M>E`^_]ËU}+UJEu9u.sŋEUM}E؋Et@M܉uڃŰUE LMM9֋}E)΋Mủ}E:׋9G׉E9EwEEEE+E܃E;Mw9EEEE}:|019G׃9G։;MvNjE9EwE}:|09G׉EEEE9EMEUEMM9Mt3}E u|$U$L$EduE t$EL$$ǭ)7mm!Ȩ.UMu DU8D2tE Emm!Ȩ.UE  8tsUWVpE}E!ȨtMU 94EE!ȨtuUMDu 9DME*uEM9vU uEEuUE }SEEEuE4$EMMEDEE+E9EsUMUEu9uscEE̋}U űD}M}}E;uw*EE9UA>EȍW9Gʉ;uvփEM9Mr}U$EsEp^_]ËUu+Uz>EE9E.sŋEU؋uLvEЋEMEԋE؍@ڃUċUM }؋t9}uEM)EMMEE;0׋9G׉E9EwEEEE+EԃE;Mw2E}܃E;8|019G׃9G։;Mv΋E9EwE܋};|09G׉EuEE9uMEUEUU9UE UEEt9tmu1EsEhmm!Ȩ.UMuDU 9DtE Emm!Ȩ.Uu 9tUWVEM} ut8UuE^_]ÐUWVEM} ut9UuE^_]UWVSEh9Es'Z}ЋE Ή}Ћh9rEE9Eu1EWP,$]MEЋ}ЋU1ɉEE E]QEEP,$ݝpp^UYEXEU$ƈ}E fEm}mEE$E膈M}E fEm}mE;EG}9lsUmX,9,rEU 1ҋlRP,$ݝpp\eYeX$$΋EL1WP,$ݝpp\}Y}}4\u4΃EE9E}ȋEEl9EЉhs'}ЋU f. Gȃl9lj}rً}̋EĈ Eԉ}94$蓊uȉ4$舊ED$4$PEĉ$`4$X1Eĉ$UWVSEEZ-9Ef(UsH}1ɋU QPE,$ݝp$pY̋EXXM9lj}Mrf.u!zD$$߆Ĭ[^_]U^XUE$Ou}UE fEm}mE؉EԉEԅtE$E1}ą.t$D$U EMuD$t$ T$ $;CEEE9E~E1ɍ9B 9ttZ-Rt@ E}vEM9M1EVP,$]MEЋUЋuEEE ]41PV,$ݝpp^]YEXE]$}E fEm}mEE$E貄}E fEm}mE9FuuE9Ɖus9tI 9u1EVP,$ݝpp\uYuXqquET4 >9tI 9u1EVP,$ݝpp\eYeey\}yEE9EF1E1 >Q 9t!tt If.Hvȅ҉tR E}vŋűUĉEԉu9EDž||D9 9ttƉv $:uE|}vlj<$}ȉ<$ESEĉ$EDžxxD9 9ttƉv $ʅuEx}vlj<$誅1Eĉ$쐐UWVSmEE!Ȩt9E E;u-E9ҋ0Eы8ummEEE E뱋EE!Ȩt=ME uT};Tu'E}MtE|9҉u mm뭋EuE1VP,$Č[^_]ËEuEߋu9uv!EM }EEuE EME}EEu4$1EEE|u9u}s#1ɋEUQPE,$ЃEU9rEu9u}Z}ME}DU 1ɉE؋uDQUEԋEUP},$;u]Mf(f(\w6EEuWf(Xf(]X]6f(;uvʃEE9Enu܋E$]lEMD$MЉD$ U]D$E؃D$Eԉ$_U]tJ1ҋEZRP1,$Q]Pm,$^̓]eYZXU$‚كUWVS艩EE!Ȩt>M U;u2} U7:9ummEEE E묋uE!ȨtBUM }DU;Du,M}UtM| 9u mm먋EuE1WP,$Č[^_]ËuuEߋu9uv!EM }EEMMuE M}EEu4$CEEE|E9E}s#1EUVMP,$уEU9rEE9E}Z~}ME}DU 1ɉE؋uDQUEԋEUP},$;u]Mf(f(\w6EEuWf(Xf(]X]6f(;uvʃEE9Enu܋E$]~EMD$MЉD$ U]D$E؃D$Eԉ$1U]tJ1ҋEZ~RP1,$Q]Pm,$^̓]eYZ~XU$ك~UWVS蝦lEuE1QP,$l[^_]ËEuEE9Ev$EUM EE}E EUME}EE$ ƉExE}9}seEMUE̋EEEEE$pE\EE9EsUEuU9rE}9}EuU4MEu9rE9MMEEEFEF-AEE .t9:.űE;B.uËE;Bt빃uE .t9:.uE;B.uE;Bt돃E .t9:.yE;B.lE;Bt_E1.7z9}r9us E}uEtrw?t EE .9.uً};z.uЋ};ztƃuE .9.u};z.u};zt똃E .9.u};z.u};zthrCUWV EuE$gEEtq}ttWv2F+F EuEM +ED$E$Dd ^_]ËF V)EMT$$L$d뮋FV)E ދE 1뿐UWV EuE$6gEE}t"tiv>FU+F  MuދEU +ED$E$c ^_]ËFV M)D$ED$$d뜋FVM ؋E 1UVuU t+BJ B BJJBJtuՃ^]ÐUW1V0EEMUt!t uE9E;}  ȨUE  $eEE6M1UEtuNt u@uE9E;}  ȨtMEx)MUPE}E0^_]Å.tu;rr;zs%uE0xB)uFBEzE tkw;t ^rE .^9.uڋu;r.u;ztʃuŃE .39.uu;r.u;zt럃 .9.uu;r.u;ztw}1.vr9uur9s }E}tkw;t 8E .$9.uڋu;r.u;ztʃuŃE .9.uu;r.u;zt럃 .9.uu;r.u;ztwrTUWV EUMt$uEtttu܋E  $xcljthUMt@u2A҉A Ft<ut.tt$A+F uEu0 ^_]Ë)MEFE1ߐUWVS\EEEEE9EsU 1Ƀ:EE M9ErEU9Us+U1Ƀ:EE M9Eru19ud})}EEME9MEE_EEuEMċ}ȋuM UD:9AE9Es?t,U2AED2AD2EEЉD2 EE EE 멋}9}uȋU}̋2EU EMЃE 9UuaE9EsYM܋uԍAt$UMD$ L$<$T$^t L[^_]^E`9ptt$@$^tXM9qtt$A$^t=MEqxE>EP A ML$D$ t$T$<$'^jFP|$`L$$]]UWVUMSo\EEEuT$EȋE ủD$EEEEL$D$ D$$]1҅tlE$\E D$E$T\Nj__9GtD$G$]GEċUąu+[_t \[^_]ËG<$PEċu D$Et$$[ETEčU܍M؉D$E T$L$ D$<$~[ƋtJ} VW_|$T$$c\E܉$[E$[E؉$ZU3EMԉD$ E܉L$D$E؉D$Eĉ$U̅tEԉD$4$ZE4$Z됋Eԅt\E|E܍uԋ}D$E؉t$D$Eĉ|$ $UȅtEԉD$4$GZ룋Eԅt뮋E$JZ1G<$PuG<$PՋOM5E WD$|$k_$8[UWVU܍MSu輀\EEE}T$EȋE }̉D$EEEEEt$L$D$ D$$8[1҅E܋\9PtT$@$ZeEE$Y(E D$E$fYNj\9GtD$G$Zwu+\t \[^_]ËG<$PM Et$L$$XEM؍UԋE L$T$ t$D$<$X;E4E}tJE CTD$t$\$YE؉$6XEĉ$+XEԉ$ XU6E܍UЋH xEĉD$E؉t$D$EԉT$D$ L$<$U̅tEЉD$4$WE4$W낋EЅt.YEnE܍UЋxHEĉD$E؉t$D$EԉT$D$ L$<$UȅtEЉD$4$NW땋EЅt렋G<$P} T\|$t$$rXEĉ$"W19uG<$PE D$MD$\$)XE܋\9PtT$@$nXt EuE D$T뮐UxE]Up}uMكRu EȉT$EU]}MEEEET$D$ D$t$$WEu ]u}]؋E$sVu#t$QD$lY$2WE뿋E$AVu t$I̋Et$$ Vt$EE$U`YEE9xt|$@$5WE@EċE9xt|$@$WExMċEEąuCUt*Ut1VP,$B$PB$P˅u7UtUtE붋B$PB$P׋EčU؍M܉D$ET$ L$t$$^UE{EPUЍMԋET$ L$|$t$$EU EE9EtOQt$lY|$$qUE܉$!TEԉ$TE؉$ TEЉ$TEte}tt$PXYt$뢋Eԉ|$ D$EЉD$E܉D$E؉D$Eĉ$U]ZRf.Mm UcEԉ|$ D$EЉD$E܉D$E؉D$Eĉ$U뵋E؉$YSEIB$PUDB$P6B$PwUWVSyLE@@E$REEE9EoEMEuUF UE9PtT$@$CTIE؃x<U؋Ur 9FtD$F$TEEE;0*E }v닃U9FtD$F$StA~}ԋNEEM̋ŰMċE;TEE }v߹tzEUE؋p9~t|$F$VSt`FUBE؋p9~t|$F$/St*FMA E}܉M9}EL[^_]Ëu4$MQ1E$|9҉ыuM89GM?R믐UWVSwLE@E$PE8EE9EMUM}uG E؋SM9AtD$A$8RE؃xU؋Sr 9FtD$F$RzEEE;0E }v닃S9FtD$F$QtA~}ԋNEEM̋ŰMċE;TEE }v߹ESE؋p9~t|$F$GQFUBE؋p9~t|$F$QSFMAE؋p9~t|$F$PtWSFuF U؋r9~t|$F$Pt*FMAE}܉M9}7EL[^_]ËE$N1u4$|9҉ыuM8MP믐UWV0D$$KEEE9EsQMEu 1UU 9s*u0f9tu#EE}v<$IEP^_]ÉƉv$IuEEUЋD:9tu&EE}v<$IE1롉Ɖv $eIuEEM̋D99tu$EE}v<$)I}릉Ɖv$IuljFEuE hUWVSo|EZEu\EE9Es=M܋u }1VPE,$]UYȃE9XʉMrME|[^_]EU9U.sM$MċE܋u U 1$>UWVED$ ED$E D$E$h1t&} E uD$$};^_]É$=1.tEM |$D$$0;ȐUWVSd\EE݃9]E44$=EиMЅUЉt$D$$K:E9EEuԋU1U;}ԉE̋E ZY:4usOUf.vDEԋUЍH4*؋UY;}Xs ef.wЃ;}mf.w&E}9}cuЉ4$<E\[^_]ËED$UD$ EȍOD$wM D$uM$UЉMxG*EY4;}Xs}f.wbUf.SEM؉ECEЉ$N<LED$UD$ EȋM D$D$M$HM멐UWVED$ ED$E D$E$p1t&} E uD$$8^_]$M;1.tM M|$D$$8UWVS=b\EE݃6]E44$:EиUЅUЉt$D$$7E9EEuԋU1U;}ԉE̋E Z74usOUf.vDEԋUЍH4*؋UY;}Xs ef.wЃ;}mf.w&E}9}cuЉ4$K:E\[^_]ËED$UD$ EȍOD$wM D$uM$UЉMxG*EY4;}Xs}f.wbUf.SEM؉ECEЉ$9LED$UD$ EȋM D$D$M$XM멐`xܢ`xl=`xɬ(ydydyytz  l пrh @[XYlVS xNJD8>2distanceCompute absolute Levenshtein distance of two strings. distance(string1, string2) Examples (it's hard to spell Levenshtein correctly): >>> distance('Levenshtein', 'Lenvinsten') 4 >>> distance('Levenshtein', 'Levensthein') 2 >>> distance('Levenshtein', 'Levenshten') 1 >>> distance('Levenshtein', 'Levenshtein') 0 Yeah, we've managed it at last. ratioCompute similarity of two strings. ratio(string1, string2) The similarity is a number between 0 and 1, it's usually equal or somewhat higher than difflib.SequenceMatcher.ratio(), becuase it's based on real minimal edit distance. Examples: >>> ratio('Hello world!', 'Holly grail!') 0.58333333333333337 >>> ratio('Brian', 'Jesus') 0.0 Really? I thought there was some similarity. hammingCompute Hamming distance of two strings. hamming(string1, string2) The Hamming distance is simply the number of differing characters. That means the length of the strings must be the same. Examples: >>> hamming('Hello world!', 'Holly grail!') 7 >>> hamming('Brian', 'Jesus') 5 jaroCompute Jaro string similarity metric of two strings. jaro(string1, string2) The Jaro string similarity metric is intended for short strings like personal last names. It is 0 for completely different strings and 1 for identical strings. Examples: >>> jaro('Brian', 'Jesus') 0.0 >>> jaro('Thorkel', 'Thorgier') 0.77976190476190477 >>> jaro('Dinsdale', 'D') 0.70833333333333337 jaro_winklerCompute Jaro string similarity metric of two strings. jaro_winkler(string1, string2[, prefix_weight]) The Jaro-Winkler string similarity metric is a modification of Jaro metric giving more weight to common prefix, as spelling mistakes are more likely to occur near ends of words. The prefix weight is inverse value of common prefix length sufficient to consider the strings `identical'. If no prefix weight is specified, 1/10 is used. Examples: >>> jaro_winkler('Brian', 'Jesus') 0.0 >>> jaro_winkler('Thorkel', 'Thorgier') 0.86785714285714288 >>> jaro_winkler('Dinsdale', 'D') 0.73750000000000004 >>> jaro_winkler('Thorkel', 'Thorgier', 0.25) 1.0 medianFind an approximate generalized median string using greedy algorithm. median(string_sequence[, weight_sequence]) You can optionally pass a weight for each string as the second argument. The weights are interpreted as item multiplicities, although any non-negative real numbers are accepted. Use them to improve computation speed when strings often appear multiple times in the sequence. Examples: >>> median(['SpSm', 'mpamm', 'Spam', 'Spa', 'Sua', 'hSam']) 'Spam' >>> fixme = ['Levnhtein', 'Leveshein', 'Leenshten', ... 'Leveshtei', 'Lenshtein', 'Lvenstein', ... 'Levenhtin', 'evenshtei'] >>> median(fixme) 'Levenshtein' Hm. Even a computer program can spell Levenshtein better than me. median_improveImprove an approximate generalized median string by perturbations. median_improve(string, string_sequence[, weight_sequence]) The first argument is the estimated generalized median string you want to improve, the others are the same as in median(). It returns a string with total distance less or equal to that of the given string. Note this is much slower than median(). Also note it performs only one improvement step, calling median_improve() again on the result may improve it further, though this is unlikely to happen unless the given string was not very similar to the actual generalized median. Examples: >>> fixme = ['Levnhtein', 'Leveshein', 'Leenshten', ... 'Leveshtei', 'Lenshtein', 'Lvenstein', ... 'Levenhtin', 'evenshtei'] >>> median_improve('spam', fixme) 'enhtein' >>> median_improve(median_improve('spam', fixme), fixme) 'Levenshtein' It takes some work to change spam to Levenshtein. quickmedianFind a very approximate generalized median string, but fast. quickmedian(string[, weight_sequence]) See median() for argument description. This method is somewhere between setmedian() and picking a random string from the set; both speedwise and quality-wise. Examples: >>> fixme = ['Levnhtein', 'Leveshein', 'Leenshten', ... 'Leveshtei', 'Lenshtein', 'Lvenstein', ... 'Levenhtin', 'evenshtei'] >>> quickmedian(fixme) 'Levnshein' setmedianFind set median of a string set (passed as a sequence). setmedian(string[, weight_sequence]) See median() for argument description. The returned string is always one of the strings in the sequence. Examples: >>> setmedian(['ehee', 'cceaes', 'chees', 'chreesc', ... 'chees', 'cheesee', 'cseese', 'chetese']) 'chees' You haven't asked me about Limburger, sir. seqratioCompute similarity ratio of two sequences of strings. seqratio(string_sequence1, string_sequence2) This is like ratio(), but for string sequences. A kind of ratio() is used to to measure the cost of item change operation for the strings. Examples: >>> seqratio(['newspaper', 'litter bin', 'tinny', 'antelope'], ... ['caribou', 'sausage', 'gorn', 'woody']) 0.21517857142857144 setratioCompute similarity ratio of two strings sets (passed as sequences). setratio(string_sequence1, string_sequence2) The best match between any strings in the first set and the second set (passed as sequences) is attempted. I.e., the order doesn't matter here. Examples: >>> setratio(['newspaper', 'litter bin', 'tinny', 'antelope'], ... ['caribou', 'sausage', 'gorn', 'woody']) 0.28184523809523809 No, even reordering doesn't help the tinny words to match the woody ones. editopsFind sequence of edit operations transforming one string to another. editops(source_string, destination_string) editops(edit_operations, source_length, destination_length) The result is a list of triples (operation, spos, dpos), where operation is one of `equal', `replace', `insert', or `delete'; spos and dpos are position of characters in the first (source) and the second (destination) strings. These are operations on signle characters. In fact the returned list doesn't contain the `equal', but all the related functions accept both lists with and without `equal's. Examples: >>> editops('spam', 'park') [('delete', 0, 0), ('insert', 3, 2), ('replace', 3, 3)] The alternate form editops(opcodes, source_string, destination_string) can be used for conversion from opcodes (5-tuples) to editops (you can pass strings or their lengths, it doesn't matter). opcodesFind sequence of edit operations transforming one string to another. opcodes(source_string, destination_string) opcodes(edit_operations, source_length, destination_length) The result is a list of 5-tuples with the same meaning as in SequenceMatcher's get_opcodes() output. But since the algorithms differ, the actual sequences from Levenshtein and SequenceMatcher may differ too. Examples: >>> for x in opcodes('spam', 'park'): ... print x ... ('delete', 0, 1, 0, 0) ('equal', 1, 3, 0, 2) ('insert', 3, 3, 2, 3) ('replace', 3, 4, 3, 4) The alternate form opcodes(editops, source_string, destination_string) can be used for conversion from editops (triples) to opcodes (you can pass strings or their lengths, it doesn't matter). inverseInvert the sense of an edit operation sequence. inverse(edit_operations) In other words, it returns a list of edit operations transforming the second (destination) string to the first (source). It can be used with both editops and opcodes. Examples: >>> inverse(editops('spam', 'park')) [('insert', 0, 0), ('delete', 2, 3), ('replace', 3, 3)] >>> editops('park', 'spam') [('insert', 0, 0), ('delete', 2, 3), ('replace', 3, 3)] apply_editApply a sequence of edit operations to a string. apply_edit(edit_operations, source_string, destination_string) In the case of editops, the sequence can be arbitrary ordered subset of the edit sequence transforming source_string to destination_string. Examples: >>> e = editops('man', 'scotsman') >>> apply_edit(e, 'man', 'scotsman') 'scotsman' >>> apply_edit(e[:3], 'man', 'scotsman') 'scoman' The other form of edit operations, opcodes, is not very suitable for such a tricks, because it has to always span over complete strings, subsets can be created by carefully replacing blocks with `equal' blocks, or by enlarging `equal' block at the expense of other blocks and adjusting the other blocks accordingly. Examples: >>> a, b = 'spam and eggs', 'foo and bar' >>> e = opcodes(a, b) >>> apply_edit(inverse(e), b, a) 'spam and eggs' >>> e[4] = ('equal', 10, 13, 8, 11) >>> apply_edit(e, a, b) 'foo and ggs' matching_blocksFind identical blocks in two strings. matching_blocks(edit_operations, source_length, destination_length) The result is a list of triples with the same meaning as in SequenceMatcher's get_matching_blocks() output. It can be used with both editops and opcodes. The second and third arguments don't have to be actually strings, their lengths are enough. Examples: >>> a, b = 'spam', 'park' >>> matching_blocks(editops(a, b), a, b) [(1, 0, 2), (4, 4, 0)] >>> matching_blocks(editops(a, b), len(a), len(b)) [(1, 0, 2), (4, 4, 0)] The last zero-length block is not an error, but it's there for compatibility with difflib which always emits it. One can join the matching blocks to get two identical strings: >>> a, b = 'dog kennels', 'mattresses' >>> mb = matching_blocks(editops(a,b), a, b) >>> ''.join([a[x[0]:x[0]+x[2]] for x in mb]) 'ees' >>> ''.join([b[x[1]:x[1]+x[2]] for x in mb]) 'ees' subtract_editSubtract an edit subsequence from a sequence. subtract_edit(edit_operations, subsequence) The result is equivalent to editops(apply_edit(subsequence, s1, s2), s2), except that is constructed directly from the edit operations. That is, if you apply it to the result of subsequence application, you get the same final string as from application complete edit_operations. It may be not identical, though (in amibuous cases, like insertion of a character next to the same character). The subtracted subsequence must be an ordered subset of edit_operations. Note this function does not accept difflib-style opcodes as no one in his right mind wants to create subsequences from them. Examples: >>> e = editops('man', 'scotsman') >>> e1 = e[:3] >>> bastard = apply_edit(e1, 'man', 'scotsman') >>> bastard 'scoman' >>> apply_edit(subtract_edit(e, e1), bastard, 'scotsman') 'scotsman' equalreplaceinsertdelete%s expected two strings of the same length%s expected two unicodes of the same length%s expected two Strings or two Unicodes%s negative prefix weight%s third argument must be a Float%s got %i strings but %i weights%s weight #%i is negative%s weight #%i is not a Number%s second argument must be a Sequence%s item #%i is not a String%s cannot allocate memory%s item #%i is not a Unicode%s expected list of Strings or Unicodes%s undecomposable Sequence???editops edit operation list is invalideditops first argument must be a List of edit operationseditops second and third argument must specify sizeseditops expected two Strings or two Unicodesopcodes edit operation list is invalidopcodes first argument must be a List of edit operationsopcodes second and third argument must specify sizesopcodes expected two Strings or two Unicodesinverse expected a list of edit operationsapply_edit edit oprations are invalid or inapplicableapply_edit first argument must be a List of edit operationsapply_edit expected two Strings or two Unicodesmatching_blocks second and third argument must specify sizesmatching_blocks first argument must be a List of edit operationssubtract_edit subsequence is not a subsequence or is invalidsubtract_edit expected two lists of edit operationsA C extension module for fast computation of: - Levenshtein (edit) distance and edit sequence manipluation - string similarity - approximate median strings, and generally string averaging - string sequence and set similarity Levenshtein has a some overlap with difflib (SequenceMatcher). It supports only strings, not arbitrary sequence types, but on the other hand it's much faster. It supports both normal and Unicode strings, but can't mix them, all arguments to a function (method) have to be of the same type (or its subclasses). Levenshtein%s internal error%s first argument must be a Sequence%s argument types don't match%s first argument must be a String or Unicode%s both sequences must consist of items of the same type?}Ô%IT}Ô%ITB?B?+=}Ô%IT}Ô%IT}Ô%IT???@@??@@???@?@????w*s⍀sPc*^*^⍀^PJ*E*I⍀IP1*,*4⍀4P**⍀P)) ⍀ P))⍀P))⍀P))⍀P))⍀P)})⍀Pi)d)⍀PP)K)w⍀wP7)2)b⍀bP))M⍀MP))8⍀8P((#⍀#P((⍀P((⍀P((⍀P((⍀Po(j(⍀PV(Q(⍀P=(8(⍀P$(({⍀{P ((f⍀fP''Q⍀QP''<⍀<P'''⍀'P''⍀P''⍀Pu'p'⍀P\'W'⍀PC'>'⍀P*'%'⍀P' '⍀P&&⍀P&&j⍀jP&&U⍀UP&&@⍀@P&&+⍀+P{&v&⍀Pb&]&⍀PI&D&⍀P0&+&⍀P&&⍀P%%⍀P%%⍀P%%⍀P%%n⍀nP%%Y⍀YP%|%D⍀DPh%c%/⍀/PO%J%⍀P6%1%⍀P%%⍀P%'@Yr!:Sl4Mf.G`y(AZs$Ë$üҞIpÝҝÝ sD Ϝn"lg=" ښ˚q\GfdGhGdGaC |M`C? `GĎs؍Ō\ kP }AۉcÈwY5 ЇpTlQ- ąyX?9ل@jwq_N`@0&T uDXDD9/D%`DށD؁DfXM܀ҀDĀDf+D DD@ * ||~~{~m~b~ ~~ ~}}|}|}}K}|0}}|}||| w|i|{_|`{T||{{{{{{l{X{{F{{ zzP}zzL}zzz}zz0}zz4}zyz Ez;zHyzDyzzyy8yy<yy yy@yyDyydyy y~yHmyxyLmyrymyiy YyByP1y >>>k>R>G>>=G==<<<<z<o<d<Y<<: :999f9!9988t8U8.88 877777o7R7G7.7&777764343434333>3%33 2[22W2 2111 1{/Y1&1{/0{/0{/0//{//{/w/ d/?-/.?-.?-.?-.--?-g-?-;- *)(m(&&K%!E%! %!$!f"!1"!&"!"!"!"!!!!!!!!!!!!!! !!S!8! .! (! !{ !`         f U 7 (  bN=   yy@yy@ys:)wlC yypVG9,Pyyryu \Q_&iWOA;.U6 п z@zxkD3%zp_A2z zzv bW& zlN?'q]O8)@uf[MG@=8nO#|eQ3  t P)   | ] I  > 3        @ w V G < . ( @         k L #     ] I +       u j ' td^U7-#yN;% |n``M?;2!~rjM tj]SI`= t`I3= z`z]B.zzzv ]S`H 9{`L=  |xtplhd`\XTPH<0$ |tpld`\TPLD@<40,$  t nf` [ UMG B <4. ) #    kk  RR  99       z tlf a [SM H B:4 / )!    qq  XX  ??  &&      zrl g aYS N H@: 5 /|'|!  xx  twtw  p^p^  lElE  h,h,  dd  `x`r m g\_\Y T NXFX@ ; 5T-T' " PP  L}L}  HdHd  DKDK  @2@2  <<  8~8x s m4e4_ Z T0L0F A ;,3,- ( "((  $$  j j  QQ  88    ~ y s k e ` ZRL G A93 . (    |xtplhd`\XTPLHD@<840,($  ):@ stL 3\H4):@ stL 3\H4dd<x`x)l2CxN(yadyqyytz lhDDDDDDGDDDDDDD DDDDDD"D'D*D-DBD Q$*h:R^p}~)9Jdw 5J`z6Kas  @ @6@zLT@@+@<=>@n\`@@@@@@#$%@6@GHI@Z@klQmjn$lDlDqDtD}DDD D!D#D D"D$D5D&)D*hD+kD*nD,qD-tD.wD1D3o$l~ @@@@}@@@(@()*"+",7B@P@^@l)m@(~@(h$HD9D?D9D<D:D;D?D;D?DBDCDE?DGBDHEDGMDHPDN[DRDSDUDRDVDTDVDkDZD^D_DbD^ D`#Da&Db)DgCDiaDIhDD~$988 @8:::; @<*@=8@=FG@PX@Pijk@\|@\:::;@<@=@=@\@\C$D)D.D/D4D5D6D9 DP DQ.D_0D<CD=QD<SD=UD?[D@bDADCDADCDJDKDLD?DTD^DMDNDD.DE6DY_D0iD2DWDXDWDXDZD[DZ'$)L(Y( g(r@*}@+,@@@A%F@@@Ae@@@A_$@DiDpDsDyD}1D~?D}AD~DDJDRDTDWD]DeDmDDDDDDDDDDD DD;DNDYDrDDDDDDDDDDDDDD D/ D8 DA DI DQ DY Dc Dc Dn Dy D D D D D Dt $ig)g 7hBhfhw@j@kz{4@@''z{E@EQx*+@78A 9@Ef F G H I$D D D D D D D D9 DD Di Dl Do Dq Dt Dz D} D D D D D D D D  D D  D JD D/ DP DR DU Da Dd Dg Do Dy D| D D D D D D D D D D D D D D D DP D D DL D& D@ D%K DIK D O [ D!a D' D( D) D" D$ D+ D, D  D D D< D2D D6 D7 D9 D6 D: D8 D: DK D D D D D D D D DDD DDDD"D%D0D<DNIDOTD<oD@DADCD@DBDDDGl$ ~ @@@C"Z Pm  n @| z } @    @  @    @ d   g @ @   @ @   ! ! ! !!!$!@2!@@!J!V!c! d!@r! s! t!@! !< !@4!@4! ! !@>!@>! ! !@! !!! !@!@" "" "@"@ "%!"<""L#"L$"@>5"@>F"G"H"I"$DjDqDjDqDjDkDqDvADwLDzqD|tDwDzD|DDDDDDDDDDDDD D/DSDUDXDXdDTgDXjDYrDXyDY|DZD[DZD[D\D]D^D_D`DaDYDaDbDYDD DDD1D<D<DED_DjDjDnDDDDDDDDDDD4DXDDDDDDDDDDDD DXDT DX#DY+DX2DY5DZFD[RDZUD[WD\_D]bD^eD_sD`DaDYDaDbDYDDDD1D4D7D:D=D@D`J"$j\"ih"i t"@i"k"k"k"@m"@m"m"m"n"o""@"w""@ # #@####@(#)#@5#6#7#8#@TF#gG#UR#V\#j]#@Zj#@[t#u#v#@Z#@[######k#k#k#@m#@m#m#m#n#o###@ $ $4$@$4$X$@/$@@$A$B$@S$@d$e$f$@Tt$ u$U$V$#$@Z$@[$F$$@Z$@[$$$$$@$@$1$`$k$$DlDqDtD}DDDDDDDDDDDDDD!D9DEDHDJDRDUDXDfDiDlDwDDDDDDXDTDXDYDZD[DZD[D\ D] D^D_D`,Da:DY=Da@DbKDYWDdDoDwDD$$l$% %@%&%0%<%I%}J%@W%X%c%m%n%@{%@%9%i%@%@%l%%%%@T%%U%V%%@Z%@[%%=%@Z%@[%@%W%g%g%%$8DDDDDDDDDDDaD<eD=kDonD xD ~D D DD DDD DDDD)D*D+D, DaDbD_-DV9DXSDY[Dn[D bD!sD'DeDfD7D;2D?:D@CDALDBRDDXDEmDKD]D^D`DTDUD[&DlZ%$&& *&@6&A&@O&Z&e&@p&|&&&@&@&&&&@&a&e&9&9&@9 'e 'q 'q ''@&'1'<'@G'S'`'m'@z'@'x'''@'x''9'9'@9''&''(@(&(-(9 (90(@9;(-<([=(M(](@h(bi(j(9z(9(@9(((9(9(@9(2(Z(e($DshDzmDssDzyDs|DzD}DDDDDD DD*D-D=D@D\D_DoDDDDDDDDDDDDDDD$D2D@DND]DiDtDwDDDDDDDDDDDDDDD*DLDpDsDvD{DDDDDDDDDDDDDDDD"D0D3D6DADMDrDDDDD($sh(r(r (@r)t)t)t%)u/)u;)@vH)@wV)x)W))@))@)*):)=)@)=)@*\*l *o *@**'*@4*>*?*l@*lA*@R*S*^*@k*u*v*w*x*@***@*****@***@***_*_*@***@++++$DDD DDnDqDwDyD|D~DDDDDDDDDDDDD D D D D D D D/ D; D> D@ DH DK DN D\ D_ Db Dm Dy D D D D D D D +$ +,+ 8+@D+O+Y+c+n+y+@+@+++@+ +++ +@+@+/ +_ +@+@+b +y + + + +$D D D,!D6!DH!D]!Dw!D!D!D!+$ ,, ,! ,$!,*,!DU!D*!DU!D*!D-!D.!D-!D.!D/!D1!D2!D1!D2!D3!D5!D6"D5"D6 "D7 "D9"D:!"D9$"D:*"D;,"D5"D7"D>"DA"DC"DF"DH"DK"DN"DQ"DV"D]"Db"Dd"Dj"Dl"Do"Dr"Dw"D "D"D "D"D"D"D"D"D"D"D"D"D"D"D"D"D "D"D "D"D"D"D"D"D"D"D"D"D#D#D #D#D #D#D #D##D*#D-#D0#D5#D>#DA#DD#DI#DP#DS#DV#D[#D d#Dg#D j#Do#Dv#Dy#D|#D#D#D#D#D#D#D#D#D#D #D#D #D#D#D#D#D#D#D#D#D#D#D#D#D#D #D#D $D$D$D$D$D$D"$D%$D($D-$D4$D7$D:$D?$D H$DK$D N$DS$DZ$D]$D`$De$Dn$Dq$Dt$Dy$D$D$D$D$D $D$D $D$D$D$D$D$D$D$D$D$D$D$D$D$D $D$D $D$D$D$D$D%D %D%D%D%D%D$%D&%D(%D +%D.%D1%D3%D 6%D9%D<%D ?%DA%D C%DI%DYO%8,$U!M,T[,(V,,!,W%,$,X%DtX%D{`%Dtc%D{f%D%D%D%D%D%D%D%D%D%D%D%D%D%D&D&D &D&D.&D1&D8&D<&D?&DB&DR&D[&Dc&Dk&D&D&D&D&D&D&D&D&D&D&D&D&D&D&D&D&D&D&D&D&D&D&D&D8'DF'DQ'DS'DV'DZ'D\'D_'Da'Dd'Dg'Di'D|'D'D'D'D'D'D'D'D'D'D'D'D'D'D'D'D'D'D'D'D(D (D (D*(D-(D0(D3(D6(D9(DK(DO(D(D(D~(D(,$tX%-q-q 5-rC-rT-sa-@sn-ux-v-w-x-`%-@-@-%-%-@--@-@-@-&-&-@..!.@,.@7.>'8.@H.@T.Z'U.'V.@b.'c.'d.@p.'q. (r. (s.@~...@.@.0(.C(.).$.)D% )D, )D% #)D, &)D4 I)D: y)D< )D@ )DB )DC )DD )DE )DC )DF )DE )DI )DR )DS )DT )DW )DT )DW )DT )DW )DX )DZ )D[ )DZ )D[ )D\ *D[ *Da !*Db )*Dd A*Dc G*Dd J*De N*Dg Q*De T*Df W*Dd Z*Df ]*Dh `*Di e*Dm x*Di z*Dn }*Dp *Db *D *D *D *D *D *D *D *D *Dy *Dz *D| +D +D| +D +D| +D +D +D +D "+D $+D ,+D 1+D G+D L+D N+D P+D S+D X+D `+D u+D z+D +D +D +D +D +D +D +D +D +D +D +D +D +Dz +D +D +D +D +D +D +DJ ,DK ,DJ ,DL ,DM ,DL ),DP /,DN >,D6 I,D/ },D0 ,.$% )." ." /# &/# 7/$ D/@$ Q/& [/' g/( s/) / )/@A /@B /)/)/@c /d /e /@f /@g /J*/*/@{ /| /} 0@~ 0@~ 0 +0@ *0@ 60"+70[+80@ D0+E0+F0@ R0+S0+T0+U0@{ `0| n0} }0@~ 0@~ 0+0,0@J 0@K 0,0I,0,0$0,D ,D ,D ,D ,D ,D ,D ,D ,0$ ,0 0 1 1@ #1@ 41 A1@ L1,M1,N1$DO1,D ,D ,D -D -D -D -D %-D *-g1$ ,1 1 1 1@ 1@ 1 1@ 1,1*-1$@14-D 4-D B-D E-D H-D [-D c-D` k-DP {-D -D# -D' -D$ -D( -D% -D) -D, -D- -D, -D- -D. -D- -D. -D: -D8 -D: -D; -D< -D; -D: -DD .DE .DD .DE .DD .DE .DF .DG ).DF 2.DE :.DN B.DT M.DS O.DU Q.DV X.DW b.DX e.DU o.D\ w.D_ z.D\ |.D^ .D_ .D^ .D_ .D^ .D_ .D^ .D_ .D^ .D_ .DO /DH 5/DI 9/DJ ?/D= Q/D> U/D? [/D/ `/2$ 4-2 )2 :2 H2 Y2@ j2@ u2@ 2 2@ 2 2 2 2@ 2B-2@! 2-2-2m/2$<2p/Dr p/Dw ~/Dr /Dw /Dx /Dy /D /D /D} /D /D /D /D /D /D /D /D /D /D /D /D /D /D 0D 0D 0D 0D #0D ,0D 40D <0D ?0D B0D L0D N0D Q0D S0D c0D l0D t0D |0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D R1D o1D s1D y1D 1D 1D 1D 12$r p/ 3p 3p +3q 93q J3@p [3@s f3@s q3s 3@s 3s 3s 3t 3@u 3~/3@~ 3/3/313$831D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 2D %2D *2D .2D 12D :2D H23$ 1 4 4 (4 64 G4 Y4@ g4@ x4 4@ 4@ 4@ 414P24$4P2D P2D ^2D a2D j2D q2D t2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 24$ P24 4 5 5 '5 95@ G5@ X5 i5@ t5@ 5@ 5j2525$52DQ 2Di 2DQ 3Di 35Dj )3Di +3Dj .3Ds 43Dt B3Ds D3Dt G3Dv M3Dy M3Dx W3Dy ^3D{ c3D| i3D{ l3D| o3D~ r3D| y3D~ |3D| 3D~ 3D 3D~ 3D 3D 3D 3D 3Dy 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 4D 4D 4D 4D !4D 44D @4D C4D Z4D _4D c4D o4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 4D 5D 5D 5D 5D 5D "5D %5D (5D -5D 55D :5D ?5D Y5D [5D `5D a5D h5D i5D m5D s5D v5D y5D }5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 5D 6D 6D 6D 6D 6D 6D 6D 6D $6D '6D ,6D /6D 26D 46D 76D 96D <6D ?6D B6D F6D M6D P6D S6D d6D l6D n6D q6D s6D v6D ~6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 7D 7D 7D *7D 27D 47D 67D 87D K7D V7D [7D ]7D h7D s7D w7D 7D 7D 7D 7D 7D 7D 7D 7D 7D 7D 7D 7D 7D 8D 8D 8D !8D 28D @8D N8D Y8D d8D m8D p8D x8D 8D 8D 8D 8D 8Du 8Dk 8Dl 8Do 85$Q 25M 5M 5N 6O 46P G6R Q6S [6T g6U w6X 6Y 6Z 6] 6_ 6a 6b 6@f 636@{ 7l3737 7@ (74)7@ <7@ L74M7 Z7@ e7@ s7 7@ 7@ 747@ 757:57a57 7@ 7@ 7 7@ 7@ 7h57s57 7@  8@ 8 $8@ 18@ <8y5=85>85?8 L8 [8 h8@ s86t8@ 8@ 8@ 8M68v686868@ 8*78}78 8@ 87878@{ 8888888$88Dw 8D 8Dw 8D 8D 9D 9D 9D 9D %9D '9D *9D 09D 09D :9D A9D F9D L9D O9D R9D U9D \9D _9D b9D e9D s9D }9D }9D 9D 9D 9D 9D 9D 9D 9D 9D 9D 9D 9D 9D 9D 9D 9D 9D 98D $:D +:D .:D 4:D 7:D ;:D =:D D:D G:D M:D P:D c:D z:D :D :D :D :D :D :D :D :D :D ;D ;D ;D ;D ";D 0;D ;;D Y;D c;D i;D l;D p;D s;D v;D {;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D ;D" ;D ;D! ;D" ;D ;D! ;D" ;D# ;D$ ;D# ;D$ ;D% ;D ;D' <D !<D) 1<D 7<D. C<D0 R<D1 ]<D2 h<D6 s<D7 ~<D6 <D7 <D; <D< <D= <D< <D> <D? <DA <D8 <D9 <D/ <D. <D/ <D. <D <D <D =D #=D ,=D K=D Q=D U=D Z=D =D =D =D =D =D =D >D >D >D >D >D +>D 7>D @>D K>D V>D ^>D d>D g>D o>D v>D >D >D >D >D >D >D >D >D >D >D >D >D >D >9$w 829r ?9r J9s U9s f9t w9u 9v 9@r 9x 9@y 9z 9| 9 9 9 : : !: 0: B:8C:@ Q:O9R:9S: g: v: :@ :7:: : : :@ :;:@ :@! :@" :;:;:!<::<:@6 ;v<;<; ; (; :;@ G;<H;:>I;@ W;>X;>Y;>Z;$[;>D >D >D >D ?p;D %?D '?D *?D 0?D >?D @?D C?D I?D I?D S?D Z?D _?D e?D h?D k?D n?D u?D x?D {?D ~?D ?D ?D ?D ?D?D ?D ?D?D?D?D?D?D?D?D?D?D?D?D?D@D@D@D! @D"@D#.@D":@D#=@D"T@D#Y@D"]@D'i@D*|@D)@D*@D,@D/@D1@D/@D1@D-@D1@D.@D/@D1@D2@D3@D2@D4@D3@D2@D3@D4@D6@D5@D7@D:@D5@D:@D;AD<AD;AD?AD;AD?AD= AD?%ADA-ADB2ADD7ADEQADDSADEXAD1YADE`ADDaADEeAD1kADEnADDqADEuAD1ADHADJADIADJADKAD,ADQADXADYADXADYADXADYADZBD[BDZ BD\BDZBD[BD\BD[BD\ BD_#BD\*BD_-BD`/BDa2BD`5BDa8BDb; ; ; ; ; ; < < < &< 9< H< X< e< q< < <@ < ?<@ <h?<?<(<@)<@<@-<@.<@<2 =@3=@4"=5.=@6;=@7F=@G=@;R=AS=2AT=YAU=2b=@3m=@4{=5=@6=@7=`A=kA=2=@3=@4=5=@6=@7=qA=A=A=Z=[ >\>@]"> B#>@`/>@a;>@bG>BBH>kBI>BJ>BK>@|[>#C\>C]>(l>@)>C>C>@ >D>D>D>$>DDDDDDDDDDEDEDEDED-ED/ED2ED8ED8EDBEDIEDNEDWED]EDdEDgEDjEDmED#{ED!ED$ED#EDED'ED(ED'ED(ED1ED2ED1ED2ED8ED;ED:ED<ED;ED<ED=E>8DB2FD=4FDG7FDK:FDG=FDH@FDGGFDKJFDMPFDLUFDMXFDNmFDZFD_FD`FD_FD`FD_FD`FDaFDbFDeFDf GDg GDhGDgGDk$GDn.GDx7GDUGD_GDeGDhGDkGDsGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDGDHD'HDB*HD3HDBHDMHDXHDcHDqHDsHDuHDwHDHDHDHDHDHDHDHDHDHDHDzHD{HDHDID~ID>IDGIDKIDoPIDrIDsIDtID`IDPIDQIDTIDUJDVJDW JDVJDMJD3)JD52JD6=JD7HJD4PJD3VJD4YJD3aJD)hJD+qJD,|JD*JD)JD*JD)JDJDJDJDJDJDJD JD J>$D>> > ??+?MD2AMD3DMD9IMD3LMD6eMD3hMD6jMD9nMD:{MD9MD:MD9MD:MD9MD;MD<MD,ND@$NDA'ND@*NDA-NDBENDA\NDElND"uNDHNDINDKND)NDNDNDNDN3A$JMAXA iAzAAA@AAAAA@AAB@B)B@5BJ6B-CB.SB/cB0qB1}B2B@3BLBNBNB$BNDNDNDNDNDNDOD OD2OD5OD9ODQDNQDTQDbQDhQDlQDsQDxQD{QDQDQD QD QD QD QD QDQDQDQDQDRD RDCRDSRD!URD"^RD#aRD%hRD&lRD'|RD(~RD!RD+RDRD]RD_RDaRDcRDdRDeRD]RDhRD0SD2SDSD]%SD_6SDaHSDcJSDdLSDeOSD][SDhoSDwSD~SB$NBB B CC1C@DCWCcCmCwC@CCC@COC"D-D@9DN:D@ED@PFDfPGDTDdD@uDDDDDPD@D@D@DQQDxQD@D@D@D{QDQD@D@ E@  EQEQE@E@#E@.EQ/ECR0ECR1E@>ESR?E@"JE^RKERLERME[WERXE@^cERdE@coERpERqERrE SsE[}E%S~E@^EYDBYDCYDBYDCYDEYDFYDGYDFYDGYDIYDJZDIZDJ ZDG ZDJZDHZDJZDLZDM&ZDJ2ZDT9ZDJ`D]I`D\K`D]S`D_``D^c`D_f`D^i`D_k`D]s`Di~`Dk`Dj`Dk`Dj`Dk`Di`Dq`Ds`Dr`Ds`Dr`Ds`Dq`Du`Dv`Dw`Dv`Dw`Dx`Du`DyaDuaDm aDnaDmaDnaDm#aDa-aDb?aDaUaDeXaDa[aDDeaDE}aDDaDTaDDaDGaDHaDKaDLaDMaDaDaDaDaDaDaDaDaDaDaDaDaD bDbD3bD>bDIbDTbDZbD\bDabDlbDqbDxbDbDbD!bD bD!bD"bD!bD(bD!bD$bD%bD$bD%bD&bDbDcD cDcD!cD(cD3cM$@^+M7M CMRM@]M@hMuMMMMMQ^MM@M@M@ M_M_M@1M_M`M@AN1`N>`N@\NI`N@^Nf`Ns`N@j(N`)N`*N@r5N`6N`7N@rBN`CN aDN@jON aPN-aQN@^\N-a]Nea^Nea_N@AjNeakNalN@wNaxNayNN@N@N@ NbNbN;cN$NgD[gD^gDhgDqgiQ$DfQQ QQQQQ Q@Q@R RR'R1R@R$4?RxgD;xgDAgDBgDLgDPgDQgDTgDUgDTgDUgDYhDZhDYhD[)hD\?hD[HhD_XhD`hDahD`hDahD`hDchD`hDahDbhDfhDbhDghDchDehDchDdhDghDhhDihDhhDlhDhhDjhDlhDmhDohD_iDt iQRؔDwYiDV`iDWiiDNmiDEiDFiDGikR$;xgR8R8 R9R9R:R<R=R>RgR@`S@aSbSc)Sd8S@eCShDS@hPShQShRSiSSiTS$dUSiDiDiDiD jD AjDEjDIjD[jD]jD`jDfjDujD~jDjDjDjDjDjDjDjDjDjD jDjDkDkD# kDkD$kD kD"kD kD!kD$%kD%'kD&>kD%AkD)DkD%FkD'IkD)NkD*QkD,VkD`kD1kiSD4kDkDkD kDlDlD lS$iSS SSSSSTTiT@T@*T6T DT!ST@"^Tj_T@%kT'klT[kmTcknT7loT$\pT8lDF8lDL@lDMIlDNRlDYRlDPUlDYXlDSclDTflDSllDUolDRwlDUzlDR|lDalDblDalDblDglDflDglDjlDglDlDlD~lDlDlD~lDlDlD~lDmDmDmDmD$mD'mD*mDl9mDm@mDnOmDoUmDp]mDmbmDpemDmhmDvzmDwmDxmDymDvmDymDvmDcmDdmD[mDZmD[mDZmD\mD[mD\mDYmD\mDYmT$F8lTDTD TETET@GT@HTIT@I UCl U@SU@T#Ucl$Uwl%U@S1U@T=Uzl>U|l?U@hJUlKUlLU@hWUlXUmYU@ZeU[pUmqUmrU@Z~U[UmUmUmU$UmDmDnD nDnDnDnDnD#nD2nDDnDcnDtnDvnD{nDnDnDnDnDnDnDnDnDnD nD!nD"nD#nD$nD)nD*nD+nDnDnDoD oDoD!oD*oD3oD6oDpDFpDKpDOpDSpDVpD}pDpDpDpDpDpDpU$mUU UUUVV@V)V6V@AVNV@YV@gVnhVpiV$jVpDCpDJpDKpDJpDKqDPqDQ qDaqDPqDaqDP!qDd&qDf1qDg@qDTGqDYgqDLtqDM}q}V$CpV?V? V@V@VAVAVB V@@ W@AWD%WD2W@F=Wp>Wq?W$@WqDqDqDqDqDqDqDqDqDqDqDqDqDqDqDqD$rD/rD8rUW$qrW{W{ W|W|W}W}W~ W@|W@}WW X@XqXwD@#wDE/wD4;wDEBwD4EwDFHwDELwDFOwD4SwDI_wDJwDKwDLwDMwDOwDSwDTwDUwDAwDBw[Z$uyZZ ZZZZ&t [[![+[6[A[M[uN[xO[$<DxD$xP[ {DNxDXxd[$xw[[ [@[[@['x[[x[$HD`xDlxDxDxDxDx[$`x[[ [@[[@ \ox \x\$DoxDqxDpxDq y\|Dr!y\$ox/\n;\n G\@nS\@p\A\8\= ]x]'y]$<Dv(yDx4yDw:yDxFy]0Dy]y']$v(y@]uL]u X]@ud]@w]R]H^N3^4y4^cy5^$<D}dyDpyD~vyDyDy6^$}dyL^|X^| d^@|p^@~^py^y^$<DyDyDyDyDy^$y^^ ^@^@^y^y^$<DyDyDyDy^|DzD zD#zD%zD*zD0zD7zDIzDOz^$y^^ _@_@_d_Y____@_y_rz_$DtzDzDzDzDzDzDzDzDzDzDzDzDz_$tz` ` `@$`@5`D`@O`zP` {Q`$D {D{D{D {DS{D{D{D{D{D{D{D{D{D{D{D{D{D{D{D{D{D{D#|D&|D)|D,|D4|D:|D=|D]|R`$ {m`y` ```@```@`@` {`@`@ a{ a@a{a{a@"a{#a{$a{%a@6a@Ga{Ha@Sa{Ta{Ua{Va{Wabama@{a@a{a@a@a{a@a{a{a{a@a@a&|a@a@|a]|a]|a|a$tD|D|D|D|D|D|D|D|D|D|D|D|D|D|D|D|D}D}DB}DI}DR}D]}D_}Dt}D}D}D}D}D}D}D}D}D}D~D~D~D$~D,~DQ~DS~DU~DZ~Di~Dz~D~D~D~D~D~D~D~D~D~D D.a$|bb b*b6b@bLb\bjbxbb@bb@bb|bb}bbbbbcc@c/c@AcNci}Oc@_c2~`c~ac@qc~rc~sc0tc$D0D5D;D<D?DGDNDUD[D_DbDeDhDoDvD}DDDDDDDD%D)D2D=D%?DTDjDlDoDuDDDDD!D"D#D$D D DDDD<D>D@DEDTDeD rD uD xD {D ~D D D D DDӁDDDDD=D?D`Dluc$0cc ccc@ccccddd@-d=dNd[d[\dB]d@hdtdddddd@ddddId@d@ e@e ere@ 'e@ 2e@ BerCeŁDe{Ee$LD|DDDDDDDDDDÂDʂDтD7DDDD4D64D9DHDTDcDgDjDuD{D~DDDŃD̃D ڃD D D D!D/DJDnDqDtDDDDĄD τD!ׄD2D3D4 D5D%&D*-D03D+ID,uD-D&DDȅDޅFe$|]eie weee@ee@ee@eeeff$f3fAfOfafsf}f~f f$DV DZD\ DZ#D\&D]1D\3D]6D_<Da^DcjDapDcsDgDhDgDhD?ĆD@цD?نDFDI DK DI DJDKDJ!DL$DK7DOED;JDmODoRDmXDnZDo`DsxDtDuDyD_D{D|DjɇDkԇDd؇D^ f$V fUfWfXfZff@`fafdf<f=f=fdžgJgg@`gaġg<%g=/g=;gg?g$DD"D(D+D.D9D;D>DDDDDDDfDuDDDDD?ψD@܈D?DFDIDKDIDJDKDJ,DL/DKBDOPD;UD^DaDgDiDoDDDDDʼnDˉDDDDDD/D2D:DEDID|@g$Ygegrg|gg%g@gglg<g=g=g҈gUgg@gg=g<g=g=gQg|g|hh$pD D D D D D D D ŠD ȊD ˊD ΊD ЊD ӊD ݊D D D D D D" D$ D+ D* $D+ &D1 )D2 2D3 9D1 BD6 LD8 TD9 WD- ^D. gD/ oD sD |h$ h #h 4h Eh Yh@ hh h@ h hh hˊh@ hhhh@* hhLh@* hahvh~i$D D" D D" D# D$ D# ؋D$ D# D[ D) D* D+ D* D, !D- 'D0 -D- /D0 5D6 [D7 bD) DW D) D: D; D: D; D< DA DD ɌDB ӌDD ֌DB ތDD DF DE DF DJ DG DK DF DG DJ DK DL DM DL DQ $DN &DQ +DR .DT 3DD =DW ID2 Si$ 'i 5i Fi Qi bi si i i $i i i i i@ ii@* i@+ i, j- jjj@* (j@+ 6j, Bj- RjSjTj@* bj@+ pj, |j- jj@E jF jG j@H j@H jj@L jj8j=jjj$De Dj Dk Dl Dk Dl Dk Dn Do ÍDs ЍD} ܍Ds D} Dv D~ D} D D D D 'D *D 5D >D @D CD MD PD gD kD wD yD |D D D D D D D D D ȎD юD ԎD D D D DQ DS #DQ 2D\ CD KD NDU UDW WDX YDY \DQ jDS xDQ D\ D D DU DW DX DY DQ DS ЏDQ ߏD\ D D DU DW DX DY D D D !D 'j$e jc kc kd "kd 6kf Fkg Pkg Zk@h kD kkk kk k@ k@ k;kkk@ ll@ llllO ll@R )l&*l2+lK,lO 6lU7l@R BlUCl@W NlWOldPljQljRl@ _lj`lO jljkl@R vl{wlxlylO ll@R ll@W llllll ll l@ l@ llO ll@R lӏlߏllO ll@R ll@W m m m m m5 m5m5m$D8DFDIDQDUDdDDDDDDʐDАD֐DِDߐDDDDDD!D$D<DCDGDNDPDRDUDWD^DDDDDDDDDDDDDDDDÑDґDՑDܑDޑDDDDDD m$87mEm Vmamrmmm m$mmmmm@mFm@m@ nn(nӐ)n<*n@8n@FnRnbnCcnGdn@rn@nnnNn@nnn@n@nn@nɑnnn;n;n$D<DMDUDeDnDDDDDDDDDÒDɒDݒDDDDDDD DD D&D1D9DBDFDOn$<oo #o4oHoXo@horo@}o@oMooo@ooݒoo@ooIoQo$DtTDyXDtZDx^DyeDzlDyrDzuDyxD|}D}DDDDDDDDDD“DɓD̓DԓDݓDDDDDDDDD D#D)D0D5DADJDVDYD[D]D_DjDsDuDwDDDDDDDDÔDŔD̔DҔo$tToqoq orprps%p@u6p@vApvKpXLpYpZpbp@mp@xpړypAzpJ{p@pYp@pzpppppp@p@ppהpהpהp$DؔDDDDDDDDDDDDD#D)D,D0D6D9DRDtDDĕD DD6D!@D#KD$NDUDYD\D_DiDrD~DD DDDDDDDDDƖDʖD͖DЖDӖD֖DݖDDDDDDDD"D%D(D*D.D1D4D>DGDSDXD\D_DbDlDuDDDDDDp$ؔpp qq%q6qDq Tq$_q@jqtq@q@q@qqqqq$DDDDD×DƗD͗DϗDїDחDDDDDDDDD D"DDDpDDDޘDDDDD%D)D,D/D9DBDNDUD]DaDdDgDqDzDDDDDDDDDDDD™D˙DҙDDDDDDDDDDD DD"D'D+D.D1D;DDDPDUD`DfDmDuq$qq qq rr)r 9r$Dr@OrYr@dr@or@|rrrrwr$rxDxDrDDDDDϚD֚DDr$xrr rss$s@5s@Hs@Xs@hsisjs$DNDODTDP DT&DP)DT,DUDDXTDYkD\~DZD\D]D_D\D]D[D]D_DběDkΛDl՛Dk؛DlݛDkDlDnDpDY DD&D)Dr1DqFDrIDqMDrPDqSDrVDq]Dr_DqbDreDtxDxDyDxDyD|D~D}D~DVȜDhȜDuȜDvӜDeݜDfks$NsKsK sLsMsOsPsQsR t t@Zt@[$t\1t]>t?t@aItěJtKt@aUtVtWt Xt@Zct@[qt\~t]t4t@qt4tt@qttt@qt˜tt@attttt$t D D(tD JD QD\DcDwD~DDt$ u u 1uBuSufu@wu@u@u@u+uu$DDƝD͝DНD֝DٝDܝDDDD.D4D6D9D<D?DBDEDMDSDtD~DDDDDDDDD˞D֞DٞDDDDDDDD DDDD(D1D=DCDGDYDhDkDpDxDxDxDDDu$uu uu vv*v4vFvƝGv@Rv@`vmvzv4{v@vtvv@vvvv@v@vvvv@vv@v@vCvGv@v{vv@w wϟ wϟ wϟ w$ w&