{VERSION 3 0 "IBM INTEL NT" "3.0" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 }{CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 256 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Heading 1" 0 3 1 {CSTYLE "" -1 -1 "" 1 18 0 0 0 0 0 1 0 0 0 0 0 0 0 }1 0 0 0 8 4 0 0 0 0 0 0 -1 0 }{PSTYLE "H eading 2" 3 4 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 8 2 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 11 12 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 3 256 1 {CSTYLE "" -1 -1 "" 1 14 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {SECT 1 {PARA 3 "" 0 "" {TEXT -1 12 "Codage RSA :" }}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 19 "Choix des nombres :" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 73 "Effectuons une application num\351rique avec des nom bres de taille modeste :" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "x:=rand(1..100):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "p:=ith prime(x());q:=ithprime(x());k:=17;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6# >%\"pG\"$*Q" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"qG\"$n\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"kG\"#<" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "n:=p*q;phi:=(p-1)*(q-1);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"nG\"&j\\'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$phi G\"&3W'" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 37 "On r\351soud : (phi mo d k)*a+1=0 mod k ." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 51 "phi m od k;(phi mod k)*[1,2,3,4,5,6,7,8,9,10] mod k;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#7" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#7,\"#7\"\"(\"\" #\"#9\"\"*\"\"%\"#;\"#6\"\"'\"\"\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 35 "Donc a vaut 7 et alpha=(a*phi+1)/k." }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 19 "alpha:=(7*phi+1)/k;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%&alphaG\"&@l#" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "res tart;" }}}}{SECT 1 {PARA 256 "" 0 "" {TEXT -1 24 "Proc\351dures n\351c \351ssaires :" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 99 "On utilise des pr oc\351dures de chiffrement classiques qui seront d'ailleurs utilis\351 es plusieurs fois." }}{PARA 0 "" 0 "" {TEXT -1 68 "On prendra ici cell es qui sont bijectives pour \351viter tout probl\350me." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 1241 "alphabet:=abcdefghijklmnopqrstuvw xyzABCDEFGHIJKLMNOPQRSTUVWXYZ:\nnb_lettres:=length(alphabet):\nfor ni \+ to nb_lettres do\n lettre[ni]:=substring(alphabet,ni..ni) od:\nlet tre[0]:=` `:\nlettre[53]:=`\340`:lettre[54]:=`\351`:lettre[55]:=`\350` :lettre[56]:=`\371`:lettre[57]:=`.`:lettre[58]:=`,`:lettre[59]:=`;`:le ttre[60]:=`:`:lettre[61]:=`?`:lettre[62]:=`/`:lettre[63]:=`-`:lettre[6 4]:=`(`:lettre[65]:=`)`:lettre[66]:=`+`:lettre[67]:=`*`:lettre[68]:=`= `:lettre[69]:=`0`:lettre[70]:=`1`:lettre[71]:=`2`:lettre[72]:=`3`:lett re[73]:=`4`:lettre[74]:=`5`:lettre[75]:=`6`:lettre[76]:=`7`:lettre[77] :=`8`:lettre[78]:=`9`:lettre[79]:=`&`:lettre[80]:=`~`:lettre[81]:=` \343`:lettre[82]:=`\365`:lettre[83]:=`\361`:lettre[84]:=`\"`:lettre[85 ]:=`#`:lettre[86]:=`'`:lettre[87]:=`\{`:lettre[88]:=`\}`:lettre[89]:=` [`:lettre[90]:=`]`:lettre[91]:=`!`:lettre[92]:=`\247`:lettre[93]:=`@`: lettre[94]:=`_`:lettre[95]:=`>`:lettre[96]:=`^`:lettre[97]:=`\342`:let tre[98]:=`\352`:lettre[99]:=`\356`:lettre[100]:=`\364`:lettre[101]:=` \373`:lettre[102]:=`\250`:lettre[103]:=`\344`:lettre[104]:=`\353`:lett re[105]:=`\357`:lettre[106]:=`\366`:lettre[107]:=`\374`:lettre[108]:=` \243`:lettre[109]:=`$`:lettre[110]:=`\244`:lettre[111]:=`\265`:lettre[ 112]:=`<`:lettre[113]:=`\347`:nn:=114:\nfor ni from 0 to nn do\n i mage_lettre[lettre[ni]]:=ni od:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 161 "code:=proc(exp)\nlocal ni,res,element;\nres:=0;\nfor ni to le ngth(exp) do\n element:=image_lettre[substring(exp,ni..ni)];\n res :=res+element*(nn)^(ni-1);\nod;\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 122 "decode:=proc(nb)\nlocal ni,liste;\nliste:=convert(nb ,base,nn);\nseq(lettre[ni],ni=liste);\ncat(seq(lettre[ni],ni=liste)); \nend:" }}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 0 "" }{TEXT 256 16 "Proc \351dures RSA :" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 63 "Voici donc 2 pr oc\351dures qui utilisent le syst\350me de codage RSA." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 200 "codersa:=proc(mot,k,n)\nlocal m,i, c;\nc:=0;\nm:=code(mot);\nm:=convert(m,base,n);\nfor i from 1 to nops( m) do\n m[i]:=m[i]^k mod n;\nod;\nfor i from 1 to nops(m) do\n c:= c+m[i]*n^(i-1);\nod;\ndecode(c);\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 213 "decodersa:=proc(mot,k,n)\nlocal m,p,i,d;\np:=array;d :=0;\nm:=code(mot);\nm:=convert(m,base,n);\nfor i from 1 to nops(m) do \n p[i]:=m[i]^k mod n;\nod;\nfor i from 1 to nops(m) do\n d:=d+p[i ]*n^(i-1);\nod;\ndecode(d);\nend:" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 10 "Exemples :" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 183 "On peut util iser majuscules, ponctuation et tous les caract\350res particuliers qu i ont \351t\351 pr\351vus par les proc\351dures code et decode.(On cod e avec k et n puis on decode avec alpha et n)." }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 91 "codersa(`Bonjour tout le monde! Voici une appl ication du syst\350me de codage RSA.`,17,64963);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%bo|dyR8j|`z-33/cCZXk=vD|_yc@|_zFgq|cyPk|_u#i^|dz&:9ku \"XP " 0 "" {MPLTEXT 1 0 25 "decodersa(%,26521,64963);" }}{PARA 11 "" 1 " " {XPPMATH 20 "6#%aoBonjour~tout~le~monde!~Voici~une~application~du~sy st|cyme~de~codage~RSA.G" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 99 "Le pro bl\351me de ces proc\351dures , c'est qu'elles ont besoin d'\351lever \+ \340 des puissances gigantesques..." }}{PARA 0 "" 0 "" {TEXT -1 99 "Et , de ce fait , les calculs sont tr\350s long : le calcul de d\351coda ge ci dessus aura pris 2 minutes." }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 79 "Et cela fonctionne \351galement dans l'autre sens , dans le cadre \+ des signatures :" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 101 "coders a(`Plus les nombres sont grands, plus il sera difficile de \"pyrater\" le message.`,26521,64963);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%hokY|^ uujVIm|jy|`v?B\"Dmnh|eyp^c|cy^pQ~OzP|azQfR|`zsGlH|hrJ?|`zj/^7ZF_q8k~|_ u]|hr6o " 0 "" {MPLTEXT 1 0 22 "decodersa(%,17,64963);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%hoPlus~les~nombres~sont~grands,~plus~il~sera~difficile~de~\"pyr ater\"~le~message.G" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 25 "Exponent ielle modulaire :" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 86 "Pour \351vite r ces probl\350mes de temps de calcul on utilise une \"exponentielle m odulaire\":" }}{PARA 0 "" 0 "" {TEXT -1 204 "Elle utilise une methode \+ d'exponentiation tr\350s classique qui permet de faire beaucoup moins \+ de calculs et , de plus , en passant au modulo n a chaque fois , elle \+ se ram\350ne \340 des nombres plus petits que n." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 255 "expomodulaire:=proc(m,e,n)\nlocal L,i,facteu r,res;\nL:=convert(e,base,2);\nfacteur:=m mod n;\nif L[1]=1 then\n r es:=m;\n else res:=1;fi;\nfor i in subsop(1=NULL,L) do\n facteur:= facteur^2 mod n;\n if i=1 then\n res:=(res*facteur) mod n;fi;\n od;res;\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "expomodula ire(5247,17,11659);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"$l#" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "5247^17 mod 11659;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"$l#" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 26 "Nouvelles proc\351dures RSA :" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 84 "Reprennons les proc\351dures pr\351c\351dentes en y inserant notre \"exponentielle modulaire\"." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 212 "codersa2:=proc(mot,k,n)\nlocal m,i,c;\nc:=0;\nm:=code(mot);\nm: =convert(m,base,n);\nfor i from 1 to nops(m) do\n m[i]:=expomodulair e(m[i],k,n);\nod;\nfor i from 1 to nops(m) do\n c:=c+m[i]*n^(i-1);\n od;\ndecode(c);\nend:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 225 "d ecodersa2:=proc(mot,k,n)\nlocal m,p,i,d;\np:=array;d:=0;\nm:=code(mot) ;\nm:=convert(m,base,n);\nfor i from 1 to nops(m) do\n p[i]:=expomod ulaire(m[i],k,n);\nod;\nfor i from 1 to nops(m) do\n d:=d+p[i]*n^(i- 1);\nod;\ndecode(d);\nend:" }}}}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 22 "E xemples plus grands :" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 51 "Utilisons de plus grandes applications num\351riques :" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "p:=nextprime(9853417379137);k:=37;" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#>%\"pG\".f\"ztT`)*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"kG\"#P" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "q:=next prime(9849789961773);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"qG\".$yh* *y\\)*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 24 "n:=p*q;phi:=(p-1) *(q-1);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"nG\";(\\!oIYZ)\\!f\"4aq *" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%$phiG\";c&RLUr(y/f\"4aq*" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 37 "On r\351soud : (phi mod k)*a+1=0 m od k ." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 69 "phi mod k;(phi mo d k)*[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] mod k;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#\"#K" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#72\"#K\"#F\" #A\"#<\"#7\"\"(\"\"#\"#M\"#H\"#C\"#>\"#9\"\"*\"\"%\"#O\"#J" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 36 "Donc a vaut 15 et alpha=(a*phi+1)/k." }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "alpha:=(15*phi+1)/k;" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%&alphaG\";$zs-#QR\"\\ZLDY$R" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "restart;" }}}{EXCHG {PARA 0 " " 0 "" {TEXT -1 45 "Il n'y a plus qu'a relancer les proc\351dures..." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 172 "codersa2(`Ainsi, on peut crypter avec l'algorithme RSA en utilisant des nombres relativement g rands sans aucun probl\350me de temps de calcul.`,37,97054091590498474 630680497);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#%fs|_u=|dy|_zQ|\\z1oy|j y;d|`z7O?:VLp|bu^o2V:i|[ywcXX|eyBz|by#:|\\z|[yS|cy5B(gUvz4:6cI&ft2]d?| by|jy,C|iyV|]y!i$)qD|azh|fr?(S,]ZT|[yIg:[#i|_zr|`z6A'P|fr\"9)/h(MvU02X *HvK'58UgKhg|frV$lfG|[ygE|by@|hr|iyE):G" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 68 "decodersa2(%,39346253347491393820272793,9705409159049 8474630680497);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#%\\sAinsi,~on~peut~ crypter~avec~l'algorithme~RSA~en~utilisant~des~nombres~relativement~gr ands~sans~aucun~probl|cyme~de~temps~de~calcul.G" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 40 "Et pour finir , un exemple de signature." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 229 "codersa2(`Je t'envoies ce message \+ en le codant avec ma clef priv\351e, ce qui te permet, en le d\351coda nt, avec ma clef publique, d'\352tre s\373r que c'est bien moi qui te \+ l'envoies.`,39346253347491393820272793,97054091590498474630680497);" } }{PARA 12 "" 1 "" {XPPMATH 20 "6#%`uH)hNzTZ2-f**|_u+SY)7^|bucYzUu|gz|d yKcY3K|^y:Pdp!|fr|irqu|hrxy$P|^yj|\\zAEq|jyMYcrZC?mT-|^u5|\\z\"|\\zf0x k8e|frw|bu|fzE~!& " 0 "" {MPLTEXT 1 0 44 "decodersa2(%,37,9705409159 0498474630680497);" }}{PARA 12 "" 1 "" {XPPMATH 20 "6#%]uJe~t'envoies~ ce~message~en~le~codant~avec~ma~clef~priv|dye,~ce~qui~te~permet,~en~le ~d|dycodant,~avec~ma~clef~publique,~d'|eytre~s|fzr~que~c'est~bien~moi~ qui~te~l'envoies.G" }}}}}{SECT 1 {PARA 3 "" 0 "" {TEXT -1 10 "Piratage :" }}{SECT 1 {PARA 4 "" 0 "" {TEXT -1 18 "Petits piratages :" }} {EXCHG {PARA 0 "" 0 "" {TEXT -1 69 "Pour de petits nombres, il est tr \350s facile de pirater un code RSA ..." }}{PARA 0 "" 0 "" {TEXT -1 37 "Il suffit de factoriser le nombre n :" }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 15 "ifactor(64963);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6# *&-%!G6#\"$n\"\"\"\"-F%6#\"$*QF(" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 113 "On trouve ainsi p et q sans difficult\351s et on en deduit phi pu is a et enfin alpha et on peut finallement pirater." }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 86 "Ici, il est facile de pirater de telles applica tions num\351riques parce que n est petit." }}{PARA 0 "" 0 "" {TEXT -1 113 "Par contre la proc\351dure de factorisation de maple ne foncti onne ais\351ment que pour des nombres inf\351rieurs \340 10^30." }} {PARA 0 "" 0 "" {TEXT -1 30 "Au dela, il bug r\351guli\350rement." }}} }{SECT 1 {PARA 4 "" 0 "" {TEXT -1 13 "Plus grands :" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 112 "Pour trouver des nombres premiers de cette taill e dans maple, il vaut mieux utiliser \"nextprime\" que \"ithprime\"." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "p:=9853417379159;" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"pG\".f\"ztT`)*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "q:=9849789961783;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"qG\".$yh**y\\)*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "n:=p*q;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"nG\";( \\!oIYZ)\\!f\"4aq*" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "ifact or(n);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#*&-%!G6#\".$yh**y\\)*\"\"\"- F%6#\".f\"ztT`)*F(" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 95 "Ce calcul, \+ pour un nombre n de 26 chiffres a \351t\351 effectu\351 en une dizaine de secondes par maple." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 32 " p:=nextprime(52684*10^12+12345);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>% \"pG\"2hB,+++%o_" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 32 "q:=next prime(63485*10^12+56789);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"qG\"2 Bo0+++&[j" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "n:=p*q;" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#>%\"nG\"C.\"*Q-2+<5SyP+SPkWL" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "ifactor(n);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#*&-%!G6#\"2hB,+++%o_\"\"\"-F%6#\"2Bo0+++&[jF(" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 72 "Cette factorisation de 34 chiffres aura \351t\351 effectu\351e en 50 secondes ..." }}{PARA 0 "" 0 "" {TEXT -1 46 "Mais au del\340 cela devient vite tr\350s difficile." }}} }{SECT 1 {PARA 4 "" 0 "" {TEXT -1 18 "Nombres premiers :" }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 64 "Maple permet tout de m\352me de trouver d e grands nombres premiers." }}{PARA 0 "" 0 "" {TEXT -1 83 "(Mais il lu i sera impossible de calculer \"alpha\" avec des nombres de cette tail le)." }}{PARA 0 "" 0 "" {TEXT -1 53 "Par exemple, voici un nombre prem ier de 200 chiffres." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 66 "nex tprime(12548595956858748595*10^180+12545895784858698754685468);" }} {PARA 12 "" 1 "" {XPPMATH 20 "6#\"cwjeoa()pe[y&*ea7+++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++&f[(eo&ff[D \"" }}}}}}{MARK "1" 0 }{VIEWOPTS 1 1 0 1 1 1803 }