π
<-
Chat plein-écran
[^]

News 2022
January (29)

News 2021
October (24)
August (37)
July (50)
June (32)
May (48)
April (61)
March (35)
January (34)

News 2020
October (17)
August (43)
July (43)
June (45)
May (60)
April (78)
March (36)
January (39)

News 2019
October (13)
August (18)
July (23)
June (28)
May (31)
April (26)
March (38)
January (37)

News 2018
October (13)
August (32)
July (23)
June (64)
May (63)
April (45)
March (43)
January (45)

News 2017
October (26)
August (39)
July (52)
June (88)
May (51)
April (43)
March (37)
January (33)

News 2016
October (25)
August (42)
July (34)
June (109)
May (55)
April (34)
March (37)
January (24)

News 2015
October (22)
August (56)
July (22)
June (94)
May (56)
April (32)
March (40)
January (21)

News 2014
October (26)
August (18)
July (23)
June (101)
May (57)
April (59)
March (54)
January (31)

News 2013
October (67)
August (50)
July (43)
June (193)
May (93)
April (102)
March (45)
January (50)

News 2012
October (64)
August (63)
July (53)
June (132)
May (88)
April (73)
March (57)
January (58)

News 2011
October (56)
August (31)
July (27)
June (71)
May (61)
April (32)
March (36)
January (24)

News 2010
October (11)
August (8)
July (14)
June (10)
May (3)
April (3)
March (1)

News 2009
August (3)
July (1)
June (2)
May (1)
April (2)
March (1)

Mise à jour img2calc Python: miroir + optimisations palette

New postby critor » Yesterday, 17:45

13917Dans une série d'articles précédents nous te présentions , notre service en ligne gratuit sur
TI-Planet
te permettant de convertir facilement tes images pour tes projets sur calculatrices.

Un large choix de formats cible t'était proposé :
  • fichiers à appeler depuis tes programmes en langage
    Basic
    :
    • pour
      Casio Graph 90+E
      et
      fx-CG50/20/10
    • pour
      Casio fx-CP400
      et
      fx-CG500
    • .8ca
      ou
      .8ci
      pour
      TI-83 Premium CE
      ,
      TI-84 Plus CE
      et
      TI-84 Plus C Silver Edition
    • .8xi
      pour les
      TI-83 Plus
      (compatible
      TI-82 Advanced
      ,
      TI-82 Plus
      et
      TI-84 Plus
      monochromes)
      ,
    • .83i
      pour les
      TI-83
      (compatible
      TI-82 Stats
      et
      TI-76.fr
      )
    • .82i
      pour les autres
      TI-82
    • .86i
      pour les
      TI-86
    • .85i
      pour les
      TI-85
    • .73i
      pour les
      TI-73
  • fichiers à appeler depuis tes scripts en langage
    Python
    :
    • pour les éditions
      Python
      des
      TI-83 Premium CE
      et
      TI-84 Plus CE
  • scripts
    Python
    pour les différentes bibliothèques graphiques des calculatrices :
    • ti_draw
      (
      TI-Nspire CX II
      )
    • graphic
      (
      TI-Nspire CX II
      avec
      KhiCAS
      ,
      TI-Nspire CX
      avec
      KhiCAS
      et
      NumWorks
      avec
      KhiCAS
      )
    • nsp
      (
      TI-Nspire
      avec )
    • ti_graphics
      (
      TI-83 Premium CE
      et
      TI-84 Plus CE
      éditions
      Python
      )
    • casioplot
      (
      Casio Graph 90/35+E II
      ,
      fx-9750/9860GIII
      et
      fx-CG50
      )
    • hpprime
      (
      HP Prime
      )
    • kandinsky
      (
      NumWorks
      )
Après plusieurs semaines de bêta-test privé par , et , aujourd'hui
img2calc
bénéficie d'une mise à jour apportant plusieurs améliorations à ce dernier point, soit les images converties en scripts
Python
pour ta calculatrice. Découvrons-les ensemble








1) Retournement horizontal/vertical

Go to top

Prenons comme exemple le
sprite
ci-contre à convertir en un script
Python
pour affichage sur nos calculatrices.

Le script obtenu te fournissait une fonction d'affichage d'image draw_image(rle, x0, y0, w, pal, zoomx, zoomy, itransp), avec :
  • rle
    : les données de l'image selon une compression
    RLE
    , incluses dans le script obtenu
  • x0, y0
    : les coordonnées où positionner le coin supérieur gauche de l'image lors de l'affichage
  • w
    : la largeur de l'image originale
  • pal
    : la palette de couleurs à utiliser, également incluse dans le script obtenu
  • zoomx, zoomy
    : les coefficients de
    zoom
    horizontaux et verticaux éventuels pour l'affichage, ou 1 par défaut pour une absence de
    zoom
  • itransp
    : l'index d'une éventuelle couleur transparente dans la palette, ou -1 par défaut pour aucune transparence

Et bien nouveauté, la fonction
draw_image()
accepte maintenant des paramètres de
zoom
négatifs pour indiquer un retournement horizontal et/ou vertical.

Il t'est donc maintenant possible de retourner l'image horizontalement et/ou verticalement lors de l'affichage, y compris avec un
zoom
comme illustré ci-contre.
Code: Select all
#palette for your image
#18 RGB-888 colors
palette = (
(0,0,0),(32,32,32),(80,144,0),(120,180,24),(248,120,0),(240,160,104),(232,96,176),(184,104,24),(248,252,248),(48,52,48),(64,216,112),(48,144,104),(136,88,32),(32,32,200),(224,144,80),(128,128,240),(240,216,64),(192,16,24),
)

#your image data
#16x22 RLE-5 pixels
image = (
b"\xa0\1\xe1\0\xc0\2\1\"\3\2!\xe0\1\1\"\xe3\0\2\1\xe0\0\1\0!\4\"\3\2\4\1\2!\0\1\5\1\6!\xe4\0!\2\1\5!\5\1F\xe1\0&!\5!\a\5\1\xe6\1\1\5\a!\a\1\6\xe1\1\6\1\a\1\0\1\a\1\a('(\a\1\a\1@\1'\b\1%\1\b'\1\xe0\0!\a\5\1%\1\5\a!@\t\n\v\1\a\tE\a\1\v\n\1\0\t\b\xe9\0\b\t\a"
b"!+\1\f\1\t\xa8\1\t\1\v\n\v\1,\1\t\b\xed\0\b\tJ\v!\16\1\t\b\r/\r\b\t\nK\1.\1\t\b\r/\r\b\t\20\x010\v\1\16\1\t\b\r/\r\b\t0+A \t\b-\b\tK!\21\1\xe0\0\t(\t\xe1\0\21\4!\x80\1)\xe1\1\xe0\1\xa1\1\x80\1"
)

l = (
  (0,0,4,4),
  (64,0,3,3),
  (64,66,3,1),
  (112,0,2,3),
  (112,66,2,1),
  (144,0,1,3),
  (144,66,1,1),
)
for v in l:
  for ky in (-1, 1):
    for kx in (-1, 1):
      draw_image(image, 160 + v[0]*kx, 96 + v[1]*ky, 16, palette, zoomx=v[2]*kx, zoomy=v[3]*ky, itransp=0)

La fonction
draw_image()
affiche l'image en coloriant un rectangle pour chaque élément
RLE
. Cela a l'avantage d'être particulièrement rapide lorsque la bibliothèque graphique de la plateforme fournit une méthode optimisée en ce sens.
À ce jour le retournement est fonctionnel sur 4 des plateformes gérées par
img2calc
:
  • NumWorks
    où la méthode kandinsky.fill_rect(x, y, largeur, hauteur, couleur) a l'excellente idée d'accepter directement des paramètres de largeur et hauteur négatifs et d'effectuer directement le retournement adéquat
  • KhiCAS
    (éditions
    NumWorks
    et
    TI-Nspire CX
    )
    , même avantage avec la méthode graphic.fill_rect()
  • Casio Graph 90+E
    et
    Graph 35+E II
    , la bibliothèque graphique
    casioplot
    ne fournit pas de méthode optimisée pour colorier un rectangle, mais la boucle d'allumage de pixels alors générée pour le script converti gère directement les retournements
  • Micropython
    pour
    TI-Nspire
    , pour la même raison avec la bibliothèque graphique
    nsp


La
HP Prime
avec la bibliothèque
hpprime
ne trace hélas rien si on lui demande de colorier un rectangle avec une largeur ou hauteur négative.

La
TI-Nspire CX II
pour sa part génère dans ce cas une exception, suggérant donc qu'il n'est hélas pas dans les projets de
Texas Instruments
de supporter ce cas.

1513315134Les
TI-83 Premium CE Edition Python
,
TI-84 Plus CE-T Python
et
TI-84 Plus CE Python
quant à elles génèrent une exception si tu fais appel à la méthode
.fill_rect()
de la bibliothèque interface
ti_draw
. Pire, si tu fais directement appel à la méthode
.fillRect()
de la bibliothèque graphique
ti_graphics
, là tu obtiens un affichage incorrect avec selon le cas un blocage
(boucle infinie)
.

Nous verrons pour une prochaine mise à jour d'
img2calc
si nous injectons de quoi contourner les limitations de ces plateformes.




2) Optimisation palette : couleurs hexadécimales

Go to top

Rappelons que les interpréteurs
Python
sur nos calculatrices font appel à 3 types de mémoires :
  • La mémoire de stockage qui comme son nom l'indique stocke physiquement tes fichiers de scripts
    Python
    .
  • La pile
    (stack)
    qui référence, à l'exécution, les objets
    Python
    créés par tes scripts. Sa capacité limite donc le nombre d'objets
    Python
    pouvant coexister simultanément en mémoire.
  • Le tas
    (heap)
    qui reçoit, à l'exécution, le contenu des objets
    Python
    créés. Il limite donc la taille globale utilisée pour les données de ces différents objets.

Voici quelques indications de consommations
heap
valides pour les plateformes
32 bits
que sont à ce jour nos calculatrices :
  • pour un entier :
    24
    octets de base +
    4
    octets si non nul +
    4
    octets pour chaque groupe de 30 bits utilisés au-delà des premiers 31 bits dans sa représentation binaire
  • pour une liste :
    56
    octets de base +
    8
    octets par élément + les tailles de chaque élément
  • pour un tuple :
    40
    octets de base +
    8
    octets par élément + les tailles de chaque élément
  • pour une chaîne :
    49
    octets de base +
    1
    octet par caractère
  • pour un tableau d'octets
    (bytes)
    :
    33
    octets de base +
    1
    octet par octet
Comme tu peux le constater le langage
Python
a le très gros défaut d'être un énorme consommateur de
heap
, mémoire qui sera bien souvent le facteur le plus limitant pour tes projets sur calculatrices. Rappelons les plus mauvais modèles sur ce critère :
  • NumWorks
    avec seulement
    32,5 Ko
    de
    heap
    si ta machine est verrouillée sur le
    firmware
    officiel
  • éditions
    Python
    des
    TI-83 Premium CE
    et
    TI-84 Plus CE
    avec encore pire
    19,7 Ko
    de
    heap
La
NumWorks
cumule les inconvénients avec de plus une mémoire de stockage de seulement
32 Kio
si ta machine est verrouillée sur le
firmware
officiel.

Comme déjà expliqué,
img2calc
a justement été conçu pour minimiser la consommation de
heap
. Pour cela
img2calc
mutualise deux approches :
  • La compression de ton image au format
    RLE
    .
  • Le compactage des données, avec l'utilisation des types d'objets
    Python
    les moins gourmands en mémoire :
    • des tuples pour la palette de couleurs
    • des
      bytes
      pour les données de la compression
      RLE
      (type d'objet
      Python
      s'utilisant comme une chaîne de caractères mais optimisé pour le stockage d'octets)
Lors de la dernière mise à jour, nous optimisions l'écriture des données
RLE
afin d'économiser la mémoire de stockage.

Aujourd'hui, intéressons-nous à la palette de couleurs avec l'image ci-contre.

Jusqu'à présent,
img2calc
te générait ce genre de script :
Code: Select all
#palette for your image
#12 RGB-888 colors
palette = (
(0,0,0),(104,40,120),(136,112,80),(80,192,0),(248,132,24),(160,168,160),(248,252,0),(0,252,248),(248,0,0),(248,252,248),(248,172,176),(0,0,248),
)

#your image data
#160x154 RLE-4 pixels
image = (
b'P\x81\1P\x81\6\xf0\0\1\0\1\20\1\x90\3QP\2\23\1\0\21\xa0\1\xf1\0\0\1\xf0\0\x110\xb2\1\4\2\0\2\1\x92\6`\2\0\5\20\2\1\2\20\5\1 \1\xf0\1b \2\0\4\26\4\0\27\0\xf8\0\20\xf1\0\0\27`\22P\2\4\x92\1\4\2\20\1\xf2\5\x80\1\22\0\1\22\20\25\2@\2\20\2\0\xf2\0\0b \2\0\6'
b'\31\6\0\27\xb0\2\27\0\5\27\5\20\22\xf0\0\2\4\x92\1\4\2\20\xe2\5\xb0\1\2\20\5\2\25\0\x020\2\20\2\0\xf2\0\0b \2\0\6\31\6\0\27\0\x85\1\0\xf8\0\0\27\0\a\31\a\20\22\xa0\1\4\x82\1\24\2\0\1\xc2\5P\22\20\22\5\2\0\1\5\22\0\x020\2\0\22\0\xf2\0\0b \2\0\n\26\n\0\27'
b'\0\25G\25\0\bJ\4\b\0\27\0\a\31\a\20\22\xb0\1\2\4\x82\1\24\2\0\1\xa2\5@\2%\x025B\1\0\22\20\1"\0\xf2\0\0b \2P\27\0\25\27\31\a\25\0\bZ\b\0\27\0\5\27\5\20\22\xe0\1\1\x92\1\0\1\0\x92\5@\2%\x025"\5\1\5\21\5 "\1\xf2\0\0b \2\x001\0\27\0\25\a\t\'\25\0\bZ\b\0\27'
b'\x001\20\22\xf0\1\x92\1\4\2\20\21\xe2\4@\1\2\25\2\5\22\1\5"\0\5\21\2\5 \xa2\1\0b \2\0\'\5\0\27\0\25\a\t\'\25\0\bZ\b\0\27`\22\24\xf0\1\2\4\xf2\0\24 \1\xc2\4`\1" \25\2\20\5\0\22\25\20\xa2\1\0b \2\0\a\31\a\0\27\0\25\27\31\a\25\0\bZ\b\0\27\0\n\26\n\20B\24\2'
b'\xe0\1\4\x82\1\4\2\20\xb2\4\xf0\0\5\2 \2\25\22\25\0\2%\20\xa2\1\0b \2\0\a\31\a\0\27\0\25\a\t\'\25\0\bZ\b\0\27\0\6\31\6\20\xf2\0\24\xe0\1\4\xf2\0\24\2\0\1\x92\4P5\2\25\2\5\0R% \x1252\0b \2\0\5\27\x050\25G\25\0\bZ\20\27\0\6\31\6\20\xa2\1\24\xe0\1\xf2\0\24'
b'\2\0\1\xf2\3P\5\2\25\2\25\2\0\2\1\2\0"\5\2\5\2\xc0\1b \2P\27\1\0\1\x057\25\0\b:\30@\n\26\n\20\xe2\1\xd0\1\1\x82\1\0\1\0\xe2\3P\2\1"\5\22\x010"\5\2\25\x010Q\20b \2\0\2\23\1\0\'\1\0\x017\25\0\b*\b \21\20\2\23\1\20\xf2\1\4\xc0\1\22\1R\4\2\20\21\xb2\3\x80\1'
b'\1\22\1\x020b\x150b\0b \2\0\4\26\4\0G\0\5\'\25\0\b\32\b\20\x017`\x82\2\24\xd0\1\4b\4\2 \1\x92\3`\2\0\2\5\0\2@b\5" R\0b \2\0\6\31\6\0W\0\1\5\a\25\0\b\n\b\0\1W\0\5\27\5\20\22\0\24\xc2\1\4\xf0\1\24R\24\2\20\x82\3`\5 \1P25\2\5\2\5 B\0b \2\0\6\31\6\0W\1\0\1%'
b'\0\30\20g\0\a\31\a\20\22\4 \24\x92\1\4\xa0\2b\24\2\0\1\xe2\2\xf0\0"PB\25\0\22\5\x1202\0b \2\0\n\26\n\0\xf7\0\0\1\25\0\b\20\xf7\0\0\a\31\a\x102$ \24R\4\0\xf2\0\4\xa0\1\4R\24\2\0\1\xc2\2P\2\x90\1\22\5\2\0\25\0\22\25\2\1 \1"\0b \2P\x87\1\1P\xf7\0\0\5\27\5'
b'\20b\20\2\4\0R\4\0\xf1\0\4\22\x90\1\x82\1\0\1\0\xb2\2P\5\x90\1\22\25\0\5\0"\25\x120"\0b \2\x001\0W!@\2\0\1g\x001\20\x92\1\4\20\4B\x80\1\4"\4\x80\1\22\1B\4\2\20\1\x92\2P\5\x90\1\2%\0\1\0\x125\22\x102\0b \2\0\'\5\0\'\21P(\4\b\0a`\xb2\1\24 \4\x90\1\4B\24'
b'\x80\1\24B\4\2\20\1\xf2\1@\22\1\x80\1\2%\2\20\22%"\x102\0b \2\0\a\31\a\0\27\1\20\2D \30\x80\1\n\26\n\20\xe2\1\24\2\x90\1\4\x82\1\x80\1\2\4B\4\2 \xd2\1@\5\2@\22\1\20\2% \x025"\x102\0b \2\0\a\31\a\0\a\1\0\2\24\26\t\26\4\6\2P\5\27\5\0\6\31\6\20\xf2\1\4\xa0'
b'\1\4\x82\1\24\x90\1\x042$\2\0\1\xb2\1@\22 B\20\2\25\2 \2%\2\0\22`b \2\0\5\27\5 \x146\t6\4\0\n\26\4\0\a\31\a\0\6\31\6\20\xf2\1\4\xa0\1\24\xa2\1\24\xf0\0\2\4B\24\2\0\1\x92\x010\25\2\20b\0\2\25\2 \2\25\2\0\22\1\x102\0b \2P\24\6\t\6\31\6\24@\6\31\6\0\a\31\a'
b'\0\n\26\n\20\xf2\1\4\xd0\1\1\xc2\1\x80\1\1R\0\1\0\x82\x010\25\2\20b\0\2\25\22\x102\0\22 2\0b \2\0\2\23\1\0\4\5\6\t\6\t\n\4\2\x001\0\6\31\6\x007\0\2\23\1\20\xf2\1\4\xe0\1\4\xa2\1\24\x80\1\2\x012\4\2\20\1b0\25\2\0\xf2\0\0\2\25\22\20\1\22\20\22\20B\0b \2\0'
b'\4\26\4\0\4\t&\22 \'\5\0\6\t\n\6\0\1\27\1`\22\20Db\4\0\xa2\x014\x104R\4\xa0\1\x142\4\2\20\1B0"\0b\20\2\25\2@\2\0\5\22\20B\0b \2\0\6\31\6\0\4\31$0\a\31\a\0\n\26\2@\1\xa2\x0104"\4\xb0\1\x042$\20$"\4\xd0\1\4"\24\2\x102 \25\22\0R\1\x102P\2\25\2 2\0b \2\0\6'
b'\31\6\0$\2\0\n\26\n\0\a\31\1@\xd2\2 \22\24\xb0\1\4b$ $\0R\24`\24\22\24\2\20\22\0\5\0\25\22\0R\20%\22@B 2\0b \2\0\n\26\n\0\4\2 \6\31\6\0\5\27\20\xc2\3\xf0\1\4\x92\x014\x80\1\4\22\24`\x042\0B\25\22\0B\0\1\0B0R\1\20\1"\0b \2\xa0\1\6\31\6@\xe2\3\1\xd0\1\4'
b'\xd2\1\x80\1\4RP\1\2\24\0"\1\2\0\5\1\2\x001\20\2\21\2\1\x120!20\1\2\0b \2\x001\x001\0\4\n\6\4\20\21\xb2\1\xf1\0\xc2\1\4\xc0\1\4\xe2\1\xf0\0\4R\4P"\0\22\20\1\0\2\0\2`\2\20\2\0\22`\2\21\x120\2\0b \2\0\'\5\0\'\5\0$\5\1\xa2\1!\x80\1\xc2\1\4\0\xb2\x014\xa2\1'
b'\4\xf0\x0042\24\xf0\0\x120\2\0b\0\2\20\2\0\22\0\1"% \x020\2\0b \2\0\a\31\a\0\a\31\a\0\2\20\xa2\1\xd0\1\xc2\1\4\x80\x024b\4\0b\24\20$\22\4P2\0\x82\x035\2\xf0\0b \2\0\a\31\a\0\a\31 \x82\1\1\x80\1\t\x050\25\xc2\1\4\xd0\x01204\22\4\xf0\0\4\22$\20\4\2P2\0R@'
b'\22\0\2@BU\x010\2\0b \2\0\5\27\5\0\5\a\20\x92\1`\x82\3\4\0\xa2\1\20\x82\x010\4\2\xf0\0\4R\24`2\0\x120\1\0\2\20R \2\20\1\2\5\0E0\2\0b \2\xf0\0\1\xf2\0P\5\0\5\0\5\20\25\0\5\0\5\0\5\0\xc2\1\4\0\xa2\1\20\x82\x011\4\x80\1\4b\4`2\0B\0!\2\1b\1\20\22\0\21\20E '
b'\2\0b \2\0\2\23\1\20\xf2\0\1`\5\0\5\0\5\20\25\0\5\0\5\0\5\0\xc2\1\4\0\x91\1\2\20\xc2\1\4\x80\1\4b\4`2\0\2E \x92\1\1\0%\1\25\20\2% \2\0b \2\0\4\26\2\1\xf2\0P\25\1\5\1\5\1\5\0\1\25\1\5\1\5\1\5\0\xc2\1\4\xa0\1\2\20\xc2\1\4\0\xf2\0D"\4`2\0\2\25"\5\20\x82\1'
b'\x112%0\25 \2\0b \2\0\6\t\2\1b\1@\xc5\2\xc2\1\4\xa0\1\2\20\xc2\1\4\xd0\1\2$`2\0\2\5\2%\2\5\20b\1\0\22\25\2%\0\2\1\20\2 \2\0b \2\0\6\5\0b\x010\xb2\4\4\xf0\0\2\20\2\20\xc2\1\4\0\xf2\0\0" \22`2\0\2\5"\5\2\5\2\20R\20\2e\0\22P\2\0b \2\0\n\0b@\4@\4\0\4\0\4@\4'
b'\0\4\0\4 \xc2\1\x040\1\0\1\0\4\20\2\20\xc2\1\4\xf0\0\2\0R\4\xf0\x002\0\2\25\22\25\2\0\2\0\x012\20\22e\0\22\1 "\0b \2\20b@\2\0\22\5\x020\2\0\22\5\x020\2\0\22\5\xc2\1\x040\1\0\1\0\4\20\2\20\xc2\1\4\xf0\0\2\0R\4\xf0\x002\0\1E\2\1\0\5\x102\0\1\2\1"%\0"0"\0b'
b' \2\0\1R \1\5\1\5\0\1\2\x050\1\5\0\1\2\x050\1\5\0\1\2\5\xc2\1\x040\1\0\1\0\4\20\2\20\xc2\1\4\xf0\0\2\0R\4\xf0\x002\20\1%@\5\20\22\0\1\22\x102\21\22@!\0b \2\1R \2\25\2\5\20\1 \2\0\2\5\20\1 \2\0\2\5\20\1\0\xc2\1\x040\1\0\1\0\4\20\2\20\xc2\1\4\20\2@\2\0R\4'
b'\xf0\x002`\22 \5\0\22\x002\1\0\1\2\21\2\1\x90\1b R\1 \2\5"\5P\2\0\2\5P\2\0\2\x050\xc2\1\x040\1\0\1\0\4\20\2\20\xc2\1\4\20\2\0\24\2\0\2\0R\4\xf0\x002@\2\0\22\x010\22\0"\1\0\1 \2\1\20\xf2\0\0b B\x010\5\22\4\2\5P\2\0\2\5P\2\0\2\x050\xc2\1\x040\1\0\1\0\4\20'
b'\2\20\xc2\1\4\20\2\0$\0\2\0R\4\xf0\x002@\2\0R\20\x012\0"\5\22 2\5"\0b B \x052\4\2\5P\2\0\2\5P\2\0\2\x050\xc2\1\x040\1\0\1\0\4\20\2\20\xc2\1\4\20\2\0$\0\2\0R\4\xf0\x002@\2\0\2\xd0\1%\22 2\5"\0b 2 \5\22\24\2\4\2\5P\2\0\2\5P\2\0\2\x050\xc2\1\x040\1\0\x010'
b'\2\20\xc2\1\4\20\2\0$\0\2\0R\4\xf0\x002\x80\1!\x92\x015\22\x102\5"\0b "02\4\2\4\2\5P\2\0\2\5P\2\0\2\x050\xc2\1\4\xa0\1\2\20\xc2\1\4\20\2\0$\0\2\0R\4\xf0\x002`\1\22\21\xe5\1\2 "\5"\0b "\20\1\22\24\2\4\2\4\2\5P\2\0\2\5P\2\0\2\x050\xc2\1\4\0\xa2\1\20\xc2\1'
b'\4\20\2\0\24\2\0\2\0R\4\xf0\x00202\xc0\1"E\20"\5"\0b "\20"\24\2\4\2\4\2\5P\2\0\2\5P\2\0\2\x050\xc2\1\4\0\xa2\1\20\xc2\1\4\xf0\0\2\0R\4\xf0\x0020\2\x010\x82\1\1\0\x050\2\25\2\20R\0b \x020\2\4\2\24\2\4\2\4\2\5P\2\0\2\5P\2\0\2\x050\xc2\1\4\xa0\1\2\20\xc2\1'
b'\4\0\xf2\0\0R\4\xf0\x0020\2\20\2\0\xb2\1\5"\20\22 \22\5"\0b \2 \22\4\2\24\2\4\2\4\2\5P\2\0\2\5P\2\0\2\x050\xc2\1\x040(\0\30\0\2\20\xc2\1\4\0\xf2\0\0R\4\xf0\x0020\1\20\2\0\xb2\1\5\22\25\x020b\0b \2\20\22\24\2\4\2\5\4\2\4\2\5P\2\0\2\5P\2\0\2\x050\xc2\1'
b'\x040(\0\30\0\2\20\xc2\1\4\0a\2\0R\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\x020Q\20b \2\20\22\24\2\4\25\4\2\4\2\5P\2\0\2\5P\2\0\2\x050\xc2\1\x040(\0\30\0\2\20\xc2\1\4\xf0\0\2\0R\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2\xb0\1b \2\20"\4\2\4\5"\4\2\5P\2\0\2\5P\2\0\2'
b'\x050\xc2\1\x040(\0\30\0\2\20\xc2\1\4P\4\0\2\0R\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\0\1\22\5\4\2\4\22\5\2\4\2\5P\2\0\2\5P\2\0\2\x050\xc2\1\x040(\0\30\0\2\20\xc2\1\4P\4\0\2\0R\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\0\2\0\22%2\4\2\5'
b'P\2\0\2\5P\2\0\2\x050\xc2\1\x040(\0\30\0\2\20\xc2\1\4 \30\0\4\0\2\0R\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\0\2\0\x82\1\4\2\5P\2\0\2\5P\2\0\2\5\a \xc2\1\x040(\0\30\0\2\20\xc2\1\4 \30\0\4\0\2\0R\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2'
b'\0\2\0\2\5B\5\2\4\2\5P\2\0\2\5P\2\0\2\27 \xc2\1\x040(\0\30\0\2\20\xc2\1\4 \30\0\4\0\2\0R\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\0\2\0\x82\1\4\2\5P\2\0\2\5P\2\0\a\21\2\20\xc2\1\x040\30\20\b\20\2\20\xc2\1\4 \30\0\4\0\2\0R\4\xf0\x002@\2\0\2\0\xb2'
b'\1\5\22\25\2 \xf2\0\0b \2\0\2\0\2\0B\0\2\4\2\5P\2\0\2\5P\2\0\a\5\0\t\20\xc2\1\4\xa0\1\2\20\xc2\1\4 \30\0\2\0\2\0R\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\0\2\0\x82\1\4\2\5P\2\0\2\5P\2\0\a\5\0\a\20\xc2\1\4\0\xa2\1\20\xc2\1\4\xf0\0\2\0R\4\xf0\x00'
b'2@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\0\2\0\2\5\22\1\0"\4\2\5P\2\0\2\5P\2\0\a\5\0\t\20\xc2\1\4\0\xa2\1\20\xc2\1\4\0\xf2\0\0R\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\0\2\0\2\0\2\20\2\0\2\0\4\2\5P\2\0\2\5P\2\27\5\0\a\20\xc2\1\4\xa0\1\2\20\xc2\1'
b'\4\0\xf2\0\0R\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2\xb0\1b \2\0\2\x002\0\4\20\24\2\5P\2\0\2\5P\2\27\5\0\a\20\xc2\1\4\xf0\0\1\20\2\20\xc2\1\4\0a\2\0\22\1"\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \x012\21\20b \2\0\2\0\22\1\4\0\4\20\24\2\5P\2\0\2\5P\2\a\2\5\0\a'
b'\20\xc2\1\4P\33\22\0\2\20B\1b\4\xf0\0\2\0\2\0\2\24\2\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \x025"\0b \2\0"\20\4\0\4\2\0\24\2\5P\2\0\2\5P\2\a\2\5\0\a\20\xc2\1\4P\33\22\0\2\x102\1\0*2\4\20\24\0\21\0\2\0\2\0$\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b '
b'\2\20\22\20\4\2\4\22\24\2\5P\2\0\2\5P\2\0\2\5\0\a\20\xc2\1\4 \33\0\33\22\0\2\20"\1\0\2$\5"\4\20\24\0\21\0\2\0\2\0$\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\20"\0\4\2\4\22\24\2\5P\2\0\2\5P\2\a9\a\t"\20*B\4 \33\0\33\22\0\2\20"\0T"\4\20\24\0\21\0'
b'\2\0\2\0$\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\20\22\4\0\4\2\4\22\24\2\5P\2\0\2\5P\t\a\t\a\31\a\t\22\1\0\x0242\4 \33\0\33\22\0\2\20"\0T\n\22\4\20\24\0\21\0\2\0\2\0\4\20\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\20\22\4\2\4\2\4\22'
b'\24\2\5P\2\0\2\5P\a\20\t\20\a\0\22\0\2D\n"\4 \33\0\33\22\0\2\20"\0T\n\22\4\20\24\0\21\0\2\0\2\0\4\20\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 2\5"\0b \2\20\22\4\2\4\2\4\2\1"\5P\2\0\2\5P\a\2\5\t\22\a\22\20d\5\22\4 \33\0\33\22\0\2\20"\0$\22\4\n\22\4\20\24\0'
b'\21\0\2\0\2\0\24\2\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 2\5"\0b \2\20\22\4\2\4\2\4\2\0\5\1\0\5P\2\0\2\5P\a*\31\a\n\2\0\2d\n\22\4 \33\0\33\22\0\2\20"\0\24 \4\n\22\4\20\4\2\0\21\0\2\0\2\0\4\20\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 2\5"\0b \2\20\22\4\2\4'
b'\2\4\x020\5P\2\0\2\5P\a2\t\a\22\0\xf4\0\n\22\4 \33\0\33\22\0\2\20"\0\4\20\2\0\4\n\22\4\xf0\0\2\0\2\0\4\0\4\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 2\5"\0b \2\20\22\4\2\4\2\4\2\0\2\20\5\1@\2\0\2\5\1@\t2\5\2\5\2\0\4\2\0\2\0\2\0\4\n\22\4 \33\0\33\22\0\2\20"'
b'\0\24\2\0\2\0\n\22\4\0\xf2\0\0\2\0$\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2\xb0\1b \2\20\22\4\2\4\2\4\2\0\22\0\xc2\1\1 \a\5\2\31\2\5\t\2\0\4P\4\n\22\4\xa0\1\2\20"\0\4\0\4\0\4\0\n\22\4\0\xf2\0\0\2\0\4\20\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2'
b'\20\22\4\2\4\2\4\2\0\2\4\0\x85\2\a\t\5\2\5\2\t\5\2\0\4\2\4 \2\4\n\22\4\0\x91\1\2\20"\0\4\2\4\2\4\0\n\22\4\0a\2\0\2\0\4\20\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\20\22\4\2\4\2\4\2\0\2\4\0\x85\2\t\5\t\2\5\n\t\5\2\0\24\2\4\22\4\2\n\22\4\0\xa2\1'
b'\20"\0T\n\22\4\xf0\0\2\0\2\0$\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\20\22\4\2\4\2\4\2\0\2\4\0\xf2\1\a\t\5\t\25\31\5\2\0\4\20\4\20\4\0\n\22\4\0\xa2\1\20"\0T\n\22\4\20\4 \2\0\2\0\2\0$\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\20\22\4'
b'\2\4\2\4\2\0\2\4\0\xf5\1\aI\25\t\2\0\4\20\4\20\4\0\n\22\4\xf0\0\21\0\2\20"\x004\2\0\n\22\4\20\4 \2\0\2\0\2\0\4\2\0\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\20\22\4\2\4\2\4\2\0\2\4\0\xf5\1\a\x197\25\2\0\xf4\0\n\22\4 \30 \21\0\2\20"\0\4\0\4 \n'
b'\22\4\20\4\0\2\0\2\0\2\0\2\0\4\0\4\n\4\xf0\x002@\2\0\2\0\xb2\1\5\22\25\2 \xf2\0\0b \2\20\22\4\2\4\2\4\2\0\22\1\xf5\1\a\5i\2\0\xf4\0\n\22\4 \30\0\v\0\21\0\2\20"\0$\0\24\n\22\4\20\4\0\4\0\2\0\2\0\2\0\4\20\n\4\xf0\x002@\2\0\1\xc2\1\5\22\25\2 \xf2\0\0b \2'
b'\20\22\4\2\4\2\4\2 \x85\2\t\2e\2\0\xf4\0\n\22\4 \30\0\v\0\21\0\2\20"\0\4\2\4\0\2\4\n\22\4\20\4\0\4\0\2\0\2\0\2\0\24\0\n\4\xf0\x002@\2\20\xc2\1\5\22\25\2 \xf2\0\0b \2\20\22\4\2\4\2\4\2 \x85\2\t\5\2U\2\0\4\22\4\2\4\2\4\n\22\4 \30\0\v\0\21\0\2\20"\0\4\0\4'
b'\20\4\n\22\4\20\4\0\4\0\2\0\2\0\2\0$\n\4\xf0\x002@\2\20\xc2\1\5\22\25\2 \xf2\0\0b \2\20\22\4\2\4\2\4\2\0\1\0\x85\2\t%R\0\4\20\4\0\4\0\4\n\22\4 \30\0\v\0\21\0\2\20"\0T\n\22\4\20\2\0\2\0\2\0\2\0\2\0$\n\4\xf0\x002@\2\20\xb2\1\23%\1\b\2\b\0\xf2\0\0b \2\20'
b'\22\4\2\4\2\4\2\4\0\4\x85\2\aE2\0\4\2\0D\n\22\4 \30\0\v\0\21\0\2\20"\0T\n\22\4\xf0\0\2\0\2\0$\n\4\xf0\x002@\2\20\xb2\1\x035\b\5\30\x90\1b \2\20\22\4\2\4\2\4\2$\x85\2\aE2\0\xf4\0\n\22\4 \30\0\v\0\21\0\2\20"\x004\0\4\n\22\4\0\xf2\0\0\2\0$\n\4\xf0\x002@\2'
b'\20\xb2\1\23%8\0\x025\22\5\0b \2\20\22\4\2\4\2\4\2$\xf9\1\27I\2\5\22\0\xf4\0\n\22\4 \30\0\v\0\21\0\2\20"\0\4\20\4\0\4\n\22\4\0\xf2\0\0\2\0$\n\4\xf0\x002@\2\20\xb2\1\23%8\0\xf2\0\0b \2\20\22\4\2\4\2\4\2$\x85\2\aI\2\5\22\0\xf4\0\n\22\4 \30\0\v\0\21\0\2\20'
b'"\0\4\0\2\4\2\4\n\22\4\0a\2\0\2\0\2\24\2\4\xf0\0"\5\2\1 \2\x102E"\23%8\0%B\0b \2\20\22\4\2\4\2\4\2$\xb5\19\aU\2\25\2\0D\22\4\n\22\4 \30\0\v\0\21\0\2\20"\x004\2\4\n\22\4\xf0\0\2\0\22\0"\4\xf0\0"% \2\20"g\25\23%8\0%B\0b \2\x102\4\2\4\22\24\xb5\1:\a\5B%\2'
b'\0D\20\4\n\22\4 \30\0\v\0\21\0\2\20"\x004\0\4\n\22\4\20\x110\2\0R\4\xf0\0"\20\5 \2\20\22\x97\1\23%8\0%B\0b \2\0\1\2%\4\2\4\2\5\24\xb5\x012\a\t\27%)\2\0\4 \4\20\4\n\22\4\0\xa2\1\20"\0T\n\22\4\20\21\0\30\0\2\0R\4P\2%\2\20\5 \2\20\22\x97\1\23%8\0\22\5B\0b '
b'\2\0\2\0\2\25\4\2\4\5\2\24\xb5\1)\'\xf5\0\2\0D\20\4\n\22\4\0\xa2\1\20"\0T\n\22\4\20\21\0\30\0\2\0R\4P\2%\xba\1\x97\1\23%(EB\0b \2\0\2\0\22\25\24\5\2\5\4\xc5\1\xc9\1\2\0\4 \4\20\4\n\22\4\xa0\1\2\20"\0T\n\22\4\20\25\0\30\0\2\0R\4P\2%\b\4\xba\1\5g\23%(%\0'
b'\5B\0b \2\0\2\0\2\5\2%"\4\xb5\1\2\xc5\1\2\0\4\20\2\4\20\4\n\22\4\xa0\1\2\20"\0T\n\22\x045\4\30\0\2\0R\4P\2%(\24\x8a\1\2\1W\23\25\1(%\0\5B\0b \2\0\2\0"\25\22\5\2\4\xb9\1\1\2\xb5\1\2\0\4"\4\20\4\n\22\4 \x040\30\0\2\20"\0T"\x045\n\1\b\0\2\0R\4P\2%H\x85\1 !'
b'\27\23\1\20(%\0\5A\0b \2\0\2\0\2\0B\5\2\4\xb9\1\0Q\5\1\5\21\5\1\2\0\4 \24\0\4\n\22\4 \4\0\2\0\v\30\0\2\20"\0D\n"5*\b\0\2\0R\4P\2%\0\xd8\1@\27 \25 %\0\5Pb \2\0\2\0b\0\2\4\xc5\1\xc0\1\2\0$\2\0$\n\22\4 \4\0\2\0\v\30\0\2\20"\0D25\n\t\n\20\2\0R\4P\2\xb5\4\0'
b'\5B\0b \2\0\2\0\x82\1\4\x95\3\2\0\xf4\0\n\22\4 \4\0\2\0\v\30\0\2\20"\1\20\32\x0525\b\0\b"\0R\4P\2%\xd0\3%\0\5B\0b \2\0\2\0\2\5"\0\22\0\4\x95\3\2\0\24\0$\0\4\n\22\4 \4\0\2\0\v\30\0\2\20\xc2\1\25Z\22\0R\4P\2%@\xfa\0\5\xf2\1%\0\5B\0b \2\0\2\0\2\0\2\20\2\1'
b'\2\24\x95\3\2\0\4\20\4\20\2\4\n\22\4 \4\0\2\0\v\30\0\2\20\xc2\1\4\5\n\4:\1\2\0R\4P\2% \1\2\x8a\1\5\xf2\0c%\0\5B\0b \2\0\2\0\2\1\2\20\4\0\1\24\x95\3\2\0\4\20\4\0\2\24\n\22\4 \4\0\2\0\v\30\0\2\20\xc2\1\4\5\4\b*\5\0\2\0R\4P\2% \2\xaa\1R\x83\1%\1\5B\0b \2\0'
b'\2\0\22 \4\0\2\24\x95\3\2\0\xf4\0\n\22\4 \4\0\2\0\v\30\0\2\20\xc2\1\48\32\2\0\2\0R\4P\2% \5Y\5:U\xf3\0UB\0b \2\0\2\0\2\1\0\4\0\4\0$\x99\3\2\0\xf4\0\n\22\4 \4\0\2\0\v\30\0\2\20\xc2\1\27\2\30\n\31\0\2\0R\4P\2%\0\1\5\x8a\1\4( \x93\x015\0\5B\0b \2\0\2\0\2\0'
b'\24\0\4\2$\x99\3\2\0\xf4\0"\4 \4\0\2\0\v\30\0\2\20\xc2\1\4\0\1\a\0\v\0\v\0\2\0R\4P\x025\1\0\xc8\1\3\5\xb3\1%\0\5B\0b \2\0\1\22\4\2\4\2\4\2$\x97\3\2\0d\n"\4\xa0\1\2\20\xc2\1\4\1\20\a\v\0\v\0\2\0R\4P\2eY\5(\x023\xd5\1\0\5B\0b \2\20\22\4\2\4\2\4\2$\x99\3\2'
b'\0d\n"\4\0\x91\1\2\20\xc2\1!\20\v\0\v\0\2\0"\1\22\4P\2%2U\2\30\5\27#\xa2\1%\0\x051\20b \2\20\22\4\2\4\2\x042\x97\3\2\0d\n"\4\0\xa2\1\20\xb2\1P\1\0\v\0\2\0\2\1\20\22\4P\2%\0\23\x82\x017#\xa0\1%\0\5Pb \2\20\22\4\2\4R\x97\3\2\0d2\4\0\xa2\1\20\xa2\1\x80\1\v'
b'\0\2\1\20:\4\2@\2\25#\xd7\1#\x92\1\v%\0\5;\20b \2\20\x82\1\25\x97\3\2\1\0\x024\x052\4\xa0\1\2\20\xa2\1\xe0\1*$@\2UYW\5#\x92\1\v%\0E\2\0bPR\5\xd7\3\22\1\20\32R\4\xf0\0\4\2\0\2\20\xa2\1P\1\xf0\0\32\1\2\1\n@\2\5CYG\25#\xd5\1\0\25\2\25\2\xb0\1\x0252\x175\a'
b'\25\'\5\ae\a\xf5\0\xc2\1\4\xf0\0\24\0\2\20\xa2\1`\2`"\32\1@Z\xf7\x005\1\b#\xa0\1%\0\5\x82\2\xf8\0\xea\3\xc2\1\4 \x010\24\0\2\20\xa2\1\xf0\0\1P2\1\4@Z\xf7\0\25\21\30#\xa0\1%\0\2\5\2\5\2\5"\5R\5(R\xea\3\xc2\1\4 \x010\24\0\2\20B\1"\25 \1@\x020B\v\2\1\33\21'
b'\xd5\1\1H#\x90\1\1%\20\21\v\1\v!\vQ\v\30B\x85\4\xc2\1\4 \1\0"\24\0\2\20B\0E \21@R$0$Zi\58\x023$\n\x95\1 \xeb\1\b\228\x8a\4\xc2\1\4 \1\0"\24\0\2\20\22\0\xf5\x000\1\xf0\0\1\22\0Q\n\2e\xa8\1C\2$\n\xc0\1\xc5\1(\2\30\4\xaa\4\xc2\1\4 \1\0"\24\0\2\20\22\0\xf5'
b'\0@\2\x80\1\2\32Q9\1%\xc3\1\1\x134\n\xc0\x015\2E\22(\2\b\4\xca\4\xc2\1\4 \1\0"\24\0\2\20\22\0\xf5\0P\2\xf0\0\2:A\t\n\x015\xf9\0\5#\33$\n\24\0+\20\v \5\0B%\22\25\2(\2\b\xea\4\xc2\1\4 \1\0"\24\0\2\20\22\0\xf5\0\x80\1\22@\32\25\xf1\x002\xf5\0\23\1\33\a\24'
b'\n\24\2@+\20\5\0\2\25\22%\22\5\2(\2\b\4\xea\4\xc2\1\4 \1\0"\24\0\2\20\22\0\xf5\0\20\x110\b\31\b0\24\x81\x014\x93\1\33\27\5\4\n\4\22\0\x010;\0\2\0\2\25\2\5\1\2\5\22\1\2\30\22\b\xfa\4\xc2\1\4 \1\0"\4\2\0\2\20\22\0%\30\0\23\0\a\31\a\20\b\t\n\30\xa4\2\xc7\1'
b'\4\n$\20\n\5\33\0[\2\x002\5"\5\22\30\22\30\xfa\4\xc2\1\4\xa0\1\2\20\22\0\25\2\30#\a\5\t\27\0\1H\4\3\4\5\2\5\1\t\1\xa4\1i\5\'\2$\2\20\2\nU"E\22\1%\22(R\xd5\4\xc2\1\4\0\xa2\1\20\22\20\30\27\23\5G\2\58\4\x035\1\n\5\1\x94\1\x97\1\2\32\24\2 \4\n\xa5\2\22\xf8'
b'\5\xc2\1\4\0\xa2\1\20"\0\30\27\23\x027\5\22%\32\23%1\xf4\2\20\4\20\4\n\xa0\1\x9b\a\xc2\1\4\0\x91\1 "\0\30\27\3\2\4\a\5\27\5B\32\23%1\xb2\2\n\24\2\0\24\20\4\n\xb1\1k\1K!K\21\xbb\1!K\xd1\1\xc2\1\4\xd0\1"\0\30\27\3\24\a\2\a\25\22 \32\23%\1\2\21\xb2\2\n\22'
b'\0$\20\4\n\5\2\xe5\1"E\a\25\a\x95\1\a\xd5\1\a5\a\x85\1\xc2\1\4\0\xc2\1\4\2\25\30\27\3\24\a\2\a\25\22(\32\23%\1\2\21\2%\xf2\1\n\x104\20\4\n\25BU\2\5B\25\22\x87\1\5\a%\a\25\a%\27\xf5\0\a%\27%\27\5\a\5\xc2\1\4\xd0\1\4\2\20\30\27\3\24\'\25\22(\32\23%1\0%'
b'\x80\2\2D\20\4\n5\2%\22\x85\1B\5\2\5\a\x1575\a\x85\1\a%\'\5\a5\a%\'\5\xc2\1\4\xb0\1%\2\20\30\27\3\24\'\25\22(\32\23%1\0%\xd0\1\2\4\nT\20\4\n\22%B\5\22G\x052\25\x175\27\x95\1\27\25\x175\xf7\0\25\'\25\a\xc2\1\4\xb0\1%\2\20\30\27\3\24\'\25\22 \32\23%!E\x90'
b'\1"\0\24\nT\20\4\n\22\25\22\5"\5\x127%\2\5\2\5\22\27%\27\xa5\1\a\25\27\25g\25\'\25\a\25\a\xc2\1\4\xb0\1%\2\20\30\27\3\24\'\25B\32\23%!%\2\5\xf1\0\20"\0\24\nT\20\4\n\22\25\22\5\22\5\2\5G%\2\5B\a\xf5\1\a\5\27%g\x157E\xc2\1\4\xb0\1%\1\20\30\27\3\22\'\25\22'
b'%\32\23%!%\0\5\xf2\0\20"\0\24\nT\20\4\n\2%B\5\2\5\x1757B\xb5\1W\5\x175W\x157E\xc2\1\4\xb0\1% \30\20\3\20\'\25\22(\32\20% %\0\5\xf2\0\20"\0\24\nT\20\4\nE2U\a\5G\xb5\x017\5\aE\a\x85\1\x87\x015\a\xc2\1\4\0\xa2\1%\xd0\3%\0\5\xf2\0\20"\0\24\nT\20\4\n\2e\2e'
b'\x87\x012%\'5W%\xe7\1U\xb2\1$\33\x80\1\xb5\4\0\5\xf2\0\20"\0\24\nT\20\4\n\v\20[\xa5\3\x87\4\xa2\1\4\22\4\0\v\xf0\0\v%\v( \27 \24 \27\20\30 \22\20%\0\5\xf2\0\20"\0\24\nT\20\4\n\2\5\2%\2\27%G\25\a\5\a\x057\x152EW\x85\1\a%WE\a\xd2\1\4\x80\1\v\0%\v(\21\0\27'
b' \24 \25\21\30\21\0\22\20%\0\5\xf2\0\20"\0\24\nD\2\20\4\n\xd5\1\'%\27\x85\1"5\22\25\27\x85\1\a%\27\25\'5\a\xd2\1\4\v0;\20%\v(\21\3\27\24\0\24\0\x185\30\22\0\22\3\0%\0\5\xf2\0\20"\0\24\n4\2 \4\2%\22U\a\25\'%\27\x85\1\2\5\2\5B\25\'\5\a\25\27%G%\27%\27R\4b'
b'\4+ +\20%\v\b\2\b\21\3\27\24\0\24\0\30\27\25\30\22\0\22\3\0%\0\5\xf2\0\20"\0\24\n$\x020\2\0\5\2\5\2%\'\5\x87\1\5\'%2\25\2\25\22%\aB\a\5\a5G\5\aE\a\5\a\xd2\1\4\v\20[\0\v%\v\b\2\b\21\3\27\24\0\24\0\30\27\25\30\22\0\22\3\0%\0\5\xf2\0\20"\0\24\n\24`\xb5\1'
b'\27U\a\25\27%\2%\x025\22%\a5\2eB\25\xd2\2\4\0[\20\33%\v(\21\3\27\24\0\24\0\30\27\25\30\22\0\22\3\0%\0\5\xf2\0\20"\0\24\n\4`5\2%\'%\a\xf5\0\27U\2\5b\5\2\27\x92\1\5\1\5B%2\25\24\xb2\1\4\33@\33\0\v%\v(\21\3\27\24\0\24\0\x185\30\22\0\22\3\0E\xf2\0\20"\0\24'
b'\n \33\5\v\1%\x025\a\25gE\27E\a\x85\x017\5\2e\2\xa5\1\x025\xf2\1\33@\33\20%\0(\21\3\27 \24\0\30\25\21\30\22\20\1\3\0%\2\5\xf2\0\20"\0\24\n\20\33\25\1\5\22\5\2e\a\5\a\25\x175\'5\27%\a5\'\xa5\1\2\xa5\1\x015\xe2\1\1+\20\33\0\v\20%\1"\20\3\27 \22\0\22\27'
b'\x102 \3\0%\0\5\xf2\0\20"\0\24\n\33\1E\2\1\xf5\0\a\25\aU\a\5\'\25W\5\'\25\'U"\25\22\25B\xf5\0\xc2\1\4\1\33\20\33\0+\20\xb5\4\0\5\xf2\0\20"\0\24\n\0\5\x125\22\xa5\1\a\25\a57\x057\25G\5G5\27\25\27\5\2\25B\x85\1\xa2\1\4\33 \x8b\1% T\30\25\2\b`\23P%\0\5\xf2'
b'\0\20"\0\24\n\25\22\x052U\a\x85\1\27E\x97\x015\'\5\27\5\a\5\a\xb5\1\x125\2\5\2\25\x82\1\4\xf0\0K\x105\20\xf4\0\30\25\30@3K%\0\5\x90\1"\0\24\n\x025\2\x85\1\a%\27E\a5\x87\1U\xf7\0\x95\x0175\a%\22\5b\4;\0K\0\v\0\v\25\x005\x94\1\5\4\b\25\30\0Ck%\0\5\x90\1"'
b'\0\24\n5\2\25\a\xa5\1\'\25\xf7\0\25\27\5\'\25G\5W\x157\5\a\5\27\xc5\1\xf2\0\xe0\1\21\0\1%\4\x82\1\5\2\0\2\25\x183\25A\v%\0\5\x90\1"\0\24\2\x91\1e\x87\6\v\1\33\x81\1b\xa0\2%\4\xf5\0\22 \b\5\30#\0e\v%\0\2+\0;\20"\0\4\2\xa0\1e\x87\6\33\21\x80\1"\4\1+\0\x8b'
b'\1\25\0\25\2E\x94\x010(#\20k\0%\20\33\0\5+\5\v\0"\0\2\0\5"\25\x87\1\5\27EGE\x175\'%g\5\27U\a\x057\25\'E\22\5\2\24;\0\33\20;5\0\2\25\22\xb5\4 5\22\25P\a\2\5\22\5\27\5\x97\x015W\25\a\25\27\25\a\x157\5\x97\x015\a\25G\x057\25\a\25\22\5'
)

draw_image(image, 0, 0, 160, palette, zoomx=1, zoomy=1, itransp=-1)
draw_image(image, 320, 0, 160, palette, zoomx=-1, zoomy=1, itransp=-1)

Une image utilisant
12
couleurs. Les données de la palette occupaient donc :
  • 158
    octets en mémoire de stockage
  • $mathjax$40+12\times\left(8+40+3\times\left(8+24+4\right)\right)$mathjax$
    soit déjà
    1,912 Ko
    à l'exécution en mémoire
    heap

Mais gros avantage sur
NumWorks
, il est possible d'écrire les paramètres de couleur différemment. Les chaînes hexadécimales sont en effet acceptées, et désormais utilisées par
img2calc
lorsque tu choisis de convertir pour cette plateforme, une amélioration suggérée par :
Code: Select all
#palette for your image
#12 RGB-888 colors
palette = (
"#000000","#682878","#88705C","#50c000","#f88418","#a0a8a0","#f8fc00","#00fcf8","#f80000","#f8fcf8","#f8acb0","#0000f8",
)

Les données de la palette n'occupent maintenant plus que :
  • 133
    octets en mémoire de stockage
    (-15,82%)
  • $mathjax$40+12\times\left(8+49+7\right)$mathjax$
    soit
    808
    octets à l'exécution en mémoire
    heap
    (-57,74%)




3) Optimisation palette : noms de couleurs

Go to top

Il existe encore une façon d'écrire différemment certaines valeurs de couleurs, en fournissant simplement leur nom. Cette écriture est gérée uniquement sur
NumWorks
et
KhiCAS
(éditions
NumWorks
et
TI-Nspire CX
)
. Par contre les deux plateformes ne reconnaissent pas les mêmes noms.

Sur
KhiCAS
, nous avons 8 couleurs nommées :
  • "black" : (0, 0, 0)
  • "red" : (255, 0, 0)
  • "green" : (80, 193, 2)
  • "blue" : (0, 0, 255)
  • "yellow" : (255, 255, 0)
  • "cyan" : (0, 255, 255)
  • "magenta" : (255, 5, 136)
  • "white", "w" ou toute autre valeur : (255, 255, 255)

Sur
NumWorks
, nous avons 13 couleurs nommées :
  • "w" ou "white" : (255, 255, 255)
  • "k" ou "black" : (0, 0, 0)
  • "gray" ou "grey" : (167, 167, 167)
  • "r" ou "red" : (255, 0, 0)
  • "g" ou "green" : (80, 193, 2)
  • "b" ou "blue" : (0, 0, 255)
  • "y" ou "yellow" : (255, 255, 0)
  • "brown" : (141, 115, 80)
  • "pink" : (255, 171, 182)
  • "orange" : (254, 135, 31)
  • "purple" : (110, 45, 121)
  • "cyan" : (0, 255, 255)
  • "magenta" : (255, 5, 136)

Lorsque ton image utilise une de ces couleurs,
img2calc
utilisera désormais le nom le plus court associé si plus intéressant que l'écriture hexadécimale lorsque disponible, autre amélioration suggérée par .

Sur
NumWorks
, "magenta" est la couleur au nom le plus long, et est ici sans intérêt par rapport à l'écriture hexadécimale.
Sur
KhiCAS
, pour le blanc on peut donc utiliser "".

Les 12 couleurs de l'image ci-contre appartiennent justement à cette liste, la seule n'y figurant pas étant le magenta.

Voyons ce qu'elle donne maintenant, commençons par
KhiCAS
:
Code: Select all
#palette for your image
#12 RGB-888 colors
palette = (
"black",(104,40,120),(136,112,80),"green",(248,132,24),(160,168,160),"yellow","cyan","red","",(248,172,176),"blue",
)

Les données de la palette n'occupent maintenant plus que :
  • 129
    octets en mémoire de stockage
    (-18,35%)
  • $mathjax$40+12\times 8 + 5\times\left(40+3\times\left(8+24+4\right)\right)+7\times 49+5+5+6+4+3+0+4$mathjax$
    soit
    1,246 Ko
    à l'exécution en mémoire
    heap
    (-34,83%)

Et convertissons maintenant pour
NumWorks
:
Code: Select all
#palette for your image
#12 RGB-888 colors
palette = (
"k","#682878","brown","g","orange","#a0a8a0","y","cyan","r","w","#f8acb0","b",
)

Les données de la palette occupent donc maintenant :
  • 92
    octets en mémoire de stockage
    (soit -30,83% par rapport à l'écriture hexadécimale, et -41,77% par rapport à l'écriture tuple initiale)
  • $mathjax$40+12\times\left(8+49\right)+1+7+5+1+6+7+1+4+1+1+7+1$mathjax$
    soit
    766
    octets à l'exécution en mémoire
    heap
    (soit -5,20% par rapport à l'écriture hexadécimale, et -59,94% par rapport à l'écriture tuple initiale)

On peut remarquer toutefois que plusieurs couleurs n'ont pas été remplacées par leur nom associé et sont restées sous l'écriture hexadécimale, celles pour lesquelles les valeurs des composantes ne sont ni maximales ni minimales. En effet l'image lors de la conversion subit un prétraitement
(passage en
RGB-565
avec fusion des couleurs proches dont l'affichage est identique sur calculatrice)
, opération lors de laquelle les valeurs de couleurs peuvent légèrement varier. Et il suffit de quelques unités en plus ou en moins sur une seule des composantes pour que cela ne corresponde plus.




4) Contrôle du nombre de couleurs

Go to top

Une bizarrerie avait été signalée par et .

avait tenté de convertir l'image
Bomber
ci-contre, à première vue une image monochrome très simple, et donnant pourtant jusqu'à présent un énorme script de
18,9 Ko
, particulièrement douloureux à faire passer sur
NumWorks
, sa calculatrice préférée :
Code: Select all
#palette for your image
#87 RGB-888 colors
palette = (
(255,255,255),(255,251,255),(231,228,231),(182,183,182),(157,163,157),(190,191,190),(239,240,240),(107,101,107),(7,7,7),(2,2,2),(2,0,2),(2,4,2),(174,172,175),(247,247,247),(116,118,116),(0,0,0),(36,41,36),(223,228,223),(247,251,247),(223,224,223),(116,114,116),(99,101,99),(99,93,99),(99,97,99),(215,211,215),(239,243,240),(231,232,231),(149,151,149),(133,131,133),(207,207,207),(166,163,167),(7,4,7),(7,12,7),(73,76,73),(18,17,18),(27,31,27),(157,159,157),(174,176,175),(55,58,55),(149,147,149),(45,45,45),(223,220,223),(36,35,36),(133,135,133),(90,88,90),(107,105,107),(166,168,167),(149,155,149),(55,54,55),(90,84,90),(239,236,240),(27,26,27),(124,122,124),(18,21,18),(247,243,247),(81,84,81),(81,80,81),(198,199,198),(207,203,207),(182,179,182),(215,216,215),(166,172,167),(73,71,73),(64,67,64),(124,126,124),(107,109,107),(64,63,64),(215,220,215),(207,211,207),(27,21,27),(182,187,182),(55,50,55),(45,41,45),(141,143,141),(36,31,36),(73,67,73),(231,236,231),(190,187,190),(157,155,157),(141,139,141),(18,12,18),(198,195,198),(45,50,45),(198,203,198),(190,195,190),(90,93,90),(64,58,64),
)

#your image data
#240x74 RLE-7 pixels
image = (
b"\x80\xfe\x80\xfe\x80\xfe\x80\xfe\x80\xfe\x80\xfe\x80\xfe\x80\xfe\x80\x96\x81\0\x82\0\x83\0\x84\0\x85\0\x86\0\x80\xe8\x86\0\x87\0\x88\0\x89\0\x8a\0\x89\0\x8b\0\x8c\0\x81\0\x80\3\x8d\2\x80\xde\x8d\0\x8e\0\x8f\5\x90\0\x91\0\x92\0\x93\0\x8c\0\x94\0\x95\0\x96\0\x97\0\x94\0\x84\0\x98\0\x99\0\x80a\x9a\0\x9b\0\x94\0\x9c\0\x9d\0\x81\0\x80r\x9e\0\x9f\0\x8f\5\xa0\0\x9c\0\xa1\0\xa2\0\xa0\0\x8f\4\x8a\0\xa0\0\xa3\0\xa4\0\x91\0\x80^\xa5\0\xa6\0\x9f\0\x8f\1\xa0\0\xa7\0\x92\0\x80q\x95\0\x8f\24\xa8\0\x8c\0\x92\0\x80[\xa9\0\xaa\0\x8f\4\x88\0\xa5\0\x80p\x9a\0\x9f\0\x8f\26\xab\0\x81\0\x80Y\x8d\0\xac\0\x8f\6\xad\0\x92\0\x80o\xae\0\x8f\27\x8b\0\xaf\0\x81\0\x80X\x93\0\xb0\0\x8f\6\xb1\0\x8d\0\x80n\xb2\0\xa1\0\x8f\30\xb3\0\xa9\0\x80X\x9b\0\x89\0\x8f\6\xb4\0\x81\0\x80n\x9d\0\xaa\0\x8f\31\x8e\0\x80W\x81\0\xad\0\x8f\6\x89\0\xae\0\x80n\x81\0\xab\0\x89\0\x8f\31\xb5\0\xb6\0\x80V\x93\0\xa2\0\x8f\6\xb0\0\x98\0\x80n\x92\0\xa8\0\x8f\v\xb3\0\xb7\0\xac\0\xb8\0\xa2\0\x8f\t\x8b\0\xb9\0\x80V\xae\0\x8f\a\x97\0\x92\0\x80n\xba\0\x8f\t\x88\0\xb7\0\xbb\0\xbc\0\x86\0\x99\1\x9d\0\xa1\0\x8f\b\x89\0\xbd\0\x80U\xb6\0\xbe\0\x8f\a\xbb\0\x80n\x81\0\x94\0\x8f\b\xaa\0\x8c\0\x8d\0\x80\5\x93\0\xa8\0\x8f\b\x97\0\x80U\xbc\0\xa3\0\x8f\6\xb3\0\x86\0\x80n\x9a\0\xbf\0\x8f\a\x90\0\x83\0\x81\0\x80\6\x81\0\x94\0\x8f\b\x87\0\x80U\xa7\0\x8a\0\x8f\6\x8e\0\x81\0\x80n\xbb\0\xb3\0\x8f\a\xa4\0\x81\0\x80\b\xc0\0\x8f\a\x89\0\xbb\0\x80T\x92\0\xb7\0\x8f\6\x88\0\xbd\0\x80n\x81\0\xb4\0\x8f\a\xbf\0\x86\0\x80\b\x8d\0\xc1\0\x8f\a\x8b\0\xba\0\x80T\xbc\0\x9f\0\x8f\6\xc2\0\x91\0\x80.\x86\0\xc3\0\x85\0\x83\0\xc4\0\x8d\0\x809\x86\0\xaa\0\x8f\a\xab\0\x81\0\x80\b\x82\0\xbf\0\x8f\a\x9f\0\x99\0\x80T\xa7\0\x8f\a\xb4\0\x81\0\x80-\xbc\0\x94\0\xc5\0\x8f\1\x89\0\x95\0\xbc\0\x808\xc6\0\x8f\a\xaa\0\x85\0\x80\t\xbb\0\x89\0\x8f\a\x97\0\x80T\x86\0\xbe\0\x8f\a\x9d\0\x80-\x9a\0\xac\0\x8a\0\x8f\4\xaa\0\x99\0\x806\x92\0\xb7\0\x8f\a\xbf\0\x99\0\x80\1\xb2\0\x93\0\x9a\0\xb6\0\x80\1\x81\0\xb9\0\xb3\0\x8f\a\x9f\0\x83\0\x80T\x8c\0\xc5\0\x8f\6\xb0\0\x92\0\x80,\x92\0\x94\0\x8f\6\x8a\0\xc1\0\x8d\0\x805\xbc\0\x90\0\x8f\a\xa7\0\x80\0\xa9\0\xc1\0\xc7\0\xc8\0\xa8\0\xb0\0\xc9\0\xa9\0\xbb\0\xca\0\x8a\0\x8f\a\xcb\0\xcc\0\x80\n\x81\0\x86\0\x91\0\xcd\0\xa4\0\x9b\1\xce\0\xc6\0\x98\0\x92\0\x80\20\xb2\0\x98\0\xae\0\x9b\0\x9e\0\xbc\0\x80\0\x92\0\xcc\0\xb9\0\xa4\0\x9b\1\x9e\0\xb9\0\x86\0\x80\4\x81\0\x8d\0\xbc\0\x85\0\x9b\2\x9e\0\x85\0\x9a\0\x80\r\x8d\0\xc0\0\x8f\a\x87\0\xa5\0\x9b\2\xcd\0\x82\0\x80\22\x81\0\x8d\0\x93\0\x85\0\xa4\0\x9b\2\xcd\0\xa9\0\x92\0\x80\t\xa9\0\xa3\0\x8f\a\xca\0\xa9\0\x805\x9b\0\x8f\a\xa0\0\x93\0\xbb\0\xa6\0\x8f\20\x89\0\x85\0\x80\t\x81\0\xba\0\xcf\0\xbe\0\x8f\a\xa8\0\xcf\0\x93\0\x80\r\x86\0\x87\0\x8f\4\x95\0\x9c\0\xd0\0\x8f\5\xa3\0\xc0\0\xcc\0\x80\0\x81\0\x9a\0\xc9\0\xb7\0\x8f\a\x97\0\xbb\0\x92\0\x80\n\x9a\0\xb0\0\x8f\16\x97\0\xc6\0\x81\0\x80\16\x9a\0\x9b\0\x97\0\x8f\a\xbf\0\xcf\0\xb2\0\x80\a\xae\0\x88\0\x8f\b\xa5\0\x804\x92\0\xad\0\x8f\a\x97\0\x9d\0\xa6\0\x8f\20\x8a\0\xad\0\x92\0\x80\b\x9a\0\x94\0\x90\0\x8f\v\xa3\0\xa4\0\x80\v\x99\0\xc1\0\x8f\20\xa1\0\x9d\0\xa4\0\xa8\0\x8f\n\x88\0\x97\0\x86\0\x80\t\xd1\0\x8f\20\xd0\0\xc9\0\xb6\0\x80\v\x8d\0\xbb\0\xc2\0\x8f\v\xc2\0\x83\0\x80\6\xc0\0\x8f\b\x8a\0\xa5\0\x804\x93\0\x8f\a\x9f\0\xae\0\x9c\0\x8f\21\xbe\0\x91\0\x80\b\x98\0\xb8\0\x8f\16\x8a\0\x8e\0\x86\0\x80\t\xb9\0\xa3\0\x8f\21\xc5\0\x8f\16\xa1\0\x86\0\x80\a\x81\0\x94\0\x8f\22\x97\0\x8d\0\x80\t\xb2\0\x9c\0\x8f\17\xcf\0\x92\0\x80\3\x81\0\x94\0\x8f\b\x9f\0\x95\0\xbb\0\x86\0\x802\x9e\0\x8f\a\xd2\0\x98\0\xaa\0\x8f\20\x9f\0\xd1\0\x80\b\x98\0\xa1\0\x8f\20\x9f\0\xb4\0\x80\t\x9b\0\x8f#\xb7\0\x92\0\x80\6\x9a\0\xd2\0\x8f\22\x9f\0\xae\0\x80\b\x81\0\xc0\0\x89\0\x8f\17\x9f\0\xa4\0\x80\4\xce\0\x89\0\x8f\t\xd0\0\xc2\0\xc9\0\x91\0\x80/\x99\0\xb0\0\x8f\a\xc1\0\xa9\0\x9f\0\x8f\16\x8a\0\xc2\0\xd1\0\x80\b\x82\0\x90\0\x8f\22\x8b\0\xa5\0\x80\a\x81\0\xbf\0\x8f#\x8b\0\xcd\0\x80\6\xae\0\xa0\0\x8f\23\xc5\0\xa9\0\x80\6\x8d\0\xab\0\x8f\22\xc8\0\x9a\0\x80\3\xbc\0\xb3\0\x8f\r\xc0\0\x93\0\x80-\x9d\0\xa3\0\x8f\a\x9d\0\xc4\0\x8b\0\x8f\16\xd0\0\xa9\0\x80\b\x8d\0\x8e\0\x8f\24\xbe\0\x86\0\x80\6\x93\0\x8b\0\x8f$\xc0\0\x81\0\x80\4\x92\0\x94\0\x8f\24\x89\0\xab\0\x80\6\xd1\0\xb5\0\x8f\23\x9b\0\x80\3\x8d\0\xad\0\x8f\r\x89\0\xa8\0\xd3\0\x80+\x92\0\xb4\0\x8f\a\xa8\0\x8d\0\x9a\0\x9f\0\x8f\16\x89\0\x9b\0\x92\0\x80\a\xa5\0\xa0\0\x8f\a\xd2\0\xb7\0\x9b\0\xab\0\xc2\0\x9f\0\x8f\6\x9f\0\xd1\0\x80\5\x81\0\xab\0\x8a\0\x8f\b\xbe\0\x8e\0\xa4\0\xbe\0\x89\0\x8f\t\xc5\0\xb8\0\x8e\0\xb4\0\xca\0\x8f\a\x97\0\x8d\0\x80\4\x93\0\xaa\0\x8f\b\xd0\0\xb7\0\xae\0\xb4\0\xaa\0\x8f\a\xb8\0\x8d\0\x80\4\x9a\0\xbf\0\x8f\b\xb8\0\xc9\0\xc0\0\xd2\0\x8f\a\xca\0\xb2\0\x80\3\x9d\0\x8f\17\x9f\0\xc9\0\x92\0\x80)\x99\0\xbe\0\x8f\a\xab\0\x80\0\x92\0\xa8\0\x8f\17\xd0\0\x85\0\x80\a\x97\0\x8f\a\xbf\0\xba\0\x8d\0\x80\1\xb2\0\xc0\0\x89\0\x8f\6\xa7\0\x80\5\x86\0\xa1\0\x8f\b\xcb\0\x93\0\x81\0\x80\0\xcc\0\xb8\0\x8f\t\xa5\0\x86\0\x80\0\x81\0\xa4\0\x8f\a\xa1\0\x86\0\x80\4\xa5\0\x8f\b\xd2\0\x85\0\xb6\0\x80\0\x81\0\xc6\0\xa3\0\x8f\6\xa2\0\x9a\0\x80\4\xcd\0\x8f\b\x94\0\xb6\0\x80\0\x92\0\xbc\0\x88\0\x8f\6\xc5\0\xba\0\x80\3\xa5\0\x8f\20\xa0\0\x85\0\x80)\xd4\0\x8f\a\xa3\0\x9d\0\x80\1\xa5\0\x89\0\x8f\17\xcb\0\x81\0\x80\5\x9a\0\x8f\a\xb8\0\xcc\0\x80\4\x9a\0\xca\0\x8f\6\xb4\0\x80\5\x85\0\xb3\0\x8f\a\xac\0\xb6\0\x80\3\xc0\0\x8f\a\xaa\0\xa5\0\x80\3\x98\0\x90\0\x8f\6\xb7\0\x99\0\x80\3\x92\0\xb7\0\x8f\a\xbe\0\x98\0\x80\3\x92\0\xb7\0\x8f\a\x93\0\x80\3\x92\0\xb7\0\x8f\a\xad\0\x8d\0\x80\3\xa7\0\x8f\6\x89\0\xa5\0\x80\2\x8d\0\xb7\0\x8f\21\x90\0\x82\0\x80(\xab\0\x8f\a\xc2\0\x86\0\x80\1\x99\0\xc9\0\x89\0\x8f\16\x9f\0\xbc\0\x80\5\x8c\0\x8f\a\x83\0\x80\5\xb2\0\xaa\0\x8f\6\x95\0\x80\5\x9c\0\x8f\a\xb0\0\x82\0\x80\3\x8d\0\xc2\0\x8f\a\xa7\0\x92\0\x80\3\x83\0\x9f\0\x8f\6\xc1\0\x8d\0\x80\3\xa9\0\xb3\0\x8f\6\x8a\0\xd1\0\x80\4\x81\0\xd5\0\x8f\a\x93\0\x80\3\x93\0\xa3\0\x8f\a\x9d\0\x80\4\xae\0\x8f\a\xc0\0\x80\2\xbc\0\xb3\0\x8f\21\x89\0\xaf\0\x80'\x9a\0\xd2\0\x8f\a\xce\0\x80\4\x9d\0\xd5\0\xa8\0\xaa\1\xa8\0\xc7\0\x88\0\x8f\b\x87\0\x81\0\x80\3\xcc\0\xbf\0\x8f\6\xa6\0\xb6\0\x80\5\x91\0\xa3\0\x8f\6\x94\0\x80\4\x8d\0\xca\0\x8f\6\xd0\0\xa4\0\x80\4\xd1\0\xa2\0\x8f\6\xd2\0\xb6\0\x80\4\x94\0\x8f\6\x9f\0\x9b\0\x81\0\x80\2\x81\0\xb4\0\x8f\a\xb4\0\x80\5\x9a\0\xbe\0\x8f\6\x9f\0\x93\0\x80\3\xa4\0\x89\0\x8f\6\xca\0\x80\5\x84\0\x8f\6\xa0\0\x8c\0\x80\1\x81\0\x94\0\x8f\6\xb0\0\xc5\0\x8f\n\xc1\0\x8d\0\x80&\x9e\0\x89\0\x8f\a\x9a\0\x80\5\xb6\0\xa9\0\x9d\1\xa9\0\x9a\0\x9b\0\x89\0\x8f\a\xa1\0\xb2\0\x80\3\xb9\0\xa3\0\x8f\6\x94\0\x80\6\xb9\0\xb5\0\x8f\6\x9b\0\x80\4\xc4\0\x8f\a\xd2\0\xb2\0\x80\3\x92\0\x9c\0\x8a\0\x8f\6\xce\0\x80\4\x8d\0\xa2\0\x8f\6\xc5\0\xbc\0\x80\3\x8d\0\xb1\0\x8f\a\xae\0\x80\5\xcd\0\x88\0\x8f\6\xb0\0\x86\0\x80\2\x8d\0\xad\0\x8f\a\x9c\0\x80\5\xad\0\x8f\6\xc5\0\xba\0\x80\1\x99\0\xcb\0\x8f\5\xc8\0\x9a\0\xd1\0\x94\0\xa2\0\x8f\b\x95\0\x8d\0\x80%\x8d\0\x94\0\x8f\a\xad\0\x80\r\x97\0\x8f\a\x90\0\x93\0\x80\3\x9c\0\x8a\0\x8f\5\xb3\0\xc6\0\x80\5\x8d\0\x8e\0\x89\0\x8f\5\x9f\0\xcd\0\x80\3\x81\0\xc1\0\x8f\a\x9c\0\x80\4\xc3\0\xd6\0\x8f\6\xc8\0\x98\0\x80\4\xbb\0\x8f\a\xcb\0\x8d\0\x80\3\xbc\0\x89\0\x8f\6\xbf\0\xc3\0\x80\5\xab\0\x8f\a\x97\0\xb6\0\x80\2\xbc\0\x89\0\x8f\6\xa2\0\xbb\0\x80\3\x99\0\x9e\0\x88\0\x8f\6\xaa\0\x9a\0\x80\1\xb9\0\x8a\0\x8f\5\xaf\0\x80\2\xb9\0\x8f\b\x94\0\x8d\0\x80%\x91\0\xca\0\x8f\a\xce\0\x80\r\xa5\0\x8f\a\x89\0\xd1\0\x80\3\xca\0\x8f\6\xb0\0\x86\0\x80\5\x86\0\xb8\0\x8f\6\xa8\0\x91\0\x80\3\x9a\0\xb0\0\x8f\a\x85\0\x80\4\xcd\0\x8f\a\xa1\0\xb6\0\x80\3\x8d\0\xad\0\x8f\a\xae\0\x80\4\xa4\0\x8f\a\xac\0\x92\0\x80\4\x8d\0\xa8\0\x8f\6\x89\0\xa7\0\x80\3\xae\0\x8f\a\x88\0\xa1\0\xb9\0\xa9\0\x91\0\xd3\0\xb8\0\xd0\0\x8f\a\xd5\0\x81\0\x80\1\xc0\0\x8f\5\xb3\0\xc4\0\x80\2\x81\0\xc7\0\x8f\a\x9c\0\x81\0\x80%\xbb\0\x8f\a\xa6\0\xd1\0\xb9\0\xbd\0\xc9\0\xcf\2\xce\0\x83\0\x91\0\x8d\0\x80\3\x83\0\x8f\b\x85\0\x80\2\xbc\0\x8f\a\xa7\0\x80\3\x99\0\xcd\0\x9b\0\x8e\0\x89\0\x8f\6\xb7\0\xb6\0\x80\3\xae\0\x89\0\x8f\6\xbf\0\x9a\0\x80\4\x8e\0\x8f\6\x8a\0\xae\0\x80\4\x98\0\xd2\0\x8f\6\xa0\0\xbc\0\x80\3\x99\0\x90\0\x8f\6\x89\0\x85\0\x80\2\x91\0\xce\0\xcb\0\x88\0\x8f\a\xa3\0\xbc\0\x80\2\x92\0\x90\0\x8f\t\x89\0\x8b\0\x9f\0\x8b\0\x8f\b\x89\0\xd1\0\x80\1\x82\0\xaa\0\x8f\5\xb8\0\x86\0\x80\2\x81\0\xaa\0\x8f\6\xb3\0\xd4\0\x80\5\x99\0\x93\1\xcc\0\x92\0\x80\32\x92\0\xb8\0\x8f\a\xd0\0\xa6\0\xa0\0\x8f\6\xd2\0\xb7\0\xd1\0\x8d\0\x80\1\x83\0\x8f\b\x85\0\x80\1\x81\0\x94\0\x8f\a\x98\0\x80\2\xc4\0\xbe\0\x89\0\x8f\t\xce\0\x80\4\x94\0\x8f\a\xb4\0\x92\0\x80\3\xb2\0\xaa\0\x8f\6\x8b\0\x9a\0\x80\4\xa7\0\x8f\a\x87\0\x8d\0\x80\3\xc4\0\xc5\0\x8f\6\xa8\0\xb6\0\x80\1\x91\0\xa8\0\x8f\n\xd5\0\x81\0\x80\2\xc4\0\xc5\0\x8f\26\xb7\0\x99\0\x80\1\xaf\0\x89\0\x8f\5\x9b\0\x80\3\xbc\0\x8f\a\xb0\0\x86\0\x80\4\xba\0\xb1\0\xa8\0\xaa\0\xa6\0\x95\0\xb6\0\x80\31\xbc\0\xb3\0\x8f\24\xac\0\x9d\0\x81\0\xce\0\x8f\a\x88\0\xb9\0\x80\1\x82\0\xa6\0\x8f\6\xb1\0\x8d\0\x80\1\x93\0\xc5\0\x8f\n\xb5\0\x9a\0\x80\3\x8d\0\x89\0\x8f\6\xb3\0\xd4\0\x80\4\xae\0\xa0\0\x8f\6\xad\0\x80\4\x81\0\xbe\0\x8f\6\xa2\0\x83\0\x81\0\x80\2\x8d\0\x94\0\x89\0\x8f\6\xc9\0\x80\1\x93\0\xa6\0\x8f\v\x85\0\x80\2\x92\0\x94\0\x89\0\x8f\25\xa8\0\x9d\0\x81\0\x80\0\x86\0\xd5\0\x8f\5\xa2\0\x9a\0\x80\2\x81\0\x8e\0\x8f\a\xa7\0\x80\4\xc3\0\xc7\0\x8a\0\x8f\3\x87\0\x8d\0\x80\30\xc9\0\x8a\0\x8f\25\xca\0\xae\0\xbe\0\x8f\a\xa6\0\x93\0\x80\1\x8c\0\xa2\0\x8f\6\xb4\0\x81\0\x80\0\xb6\0\xc0\0\x8a\0\x8f\n\xb4\0\x80\4\xa5\0\x8f\a\xb0\0\x86\0\x80\3\xb6\0\x87\0\x8f\a\x8c\0\x80\4\x93\0\x8f\a\xd2\0\x9a\0\x80\3\x9a\0\xbe\0\x8f\a\x83\0\x80\1\xce\0\x9f\0\x8f\n\x90\0\x82\0\x80\2\x82\0\xc2\0\x8f\26\xce\0\x81\0\x80\1\xc4\0\xb3\0\x8f\5\xc2\0\x80\3\x9a\0\xc2\0\x8f\a\xbc\0\x80\4\x84\0\x8f\5\xd2\0\x93\0\x80\27\x99\0\xb1\0\x8f\30\x8b\0\x8f\a\xb1\0\x86\0\x80\0\x81\0\xc1\0\x8f\6\x8a\0\xa4\0\x80\1\x9d\0\xca\0\x8f\n\xd2\0\xbc\0\x80\3\x82\0\xc2\0\x8f\a\x9e\0\x80\4\x98\0\xa3\0\x8f\6\xbf\0\x93\0\x80\3\x81\0\x8e\0\x8f\a\xa7\0\x80\4\xcd\0\x8a\0\x8f\6\xc5\0\x9d\0\x80\0\x92\0\x95\0\x8f\v\xb4\0\x8d\0\x80\1\x92\0\xcf\0\x8a\0\x8f\24\xb3\0\xa4\0\x86\0\x80\2\xa4\0\x8f\6\xc1\0\x80\3\xce\0\x89\0\x8f\6\x95\0\x8d\0\x80\3\x99\0\xb3\0\x8f\5\xd6\0\x91\0\x80\27\xa9\0\xa2\0\x8f!\xc1\0\x81\0\x80\0\xb2\0\xb3\0\x8f\6\xca\0\x9d\0\x80\1\xa5\0\x8f\n\x8b\0\xa4\0\x92\0\x80\3\xc9\0\x88\0\x8f\a\xbc\0\x80\4\xae\0\x8f\a\x95\0\x8d\0\x80\3\x9a\0\xc2\0\x8f\a\x9d\0\x80\4\xcf\0\x8f\a\xbe\0\x86\0\x80\0\x8d\0\xa1\0\x8f\n\xb3\0\xc6\0\x80\1\x8d\0\xaf\0\x9f\0\x8f\24\xb0\0\x85\0\x81\0\x80\3\xad\0\x8f\6\xae\0\x80\2\x81\0\x94\0\x8f\a\x9b\0\x80\4\xcd\0\x88\0\x8f\5\x97\0\x8d\0\x80\27\xce\0\x8f!\x89\0\x83\0\x80\1\xa5\0\x8f\a\xa1\0\x8d\0\x80\1\xae\0\x8f\n\xb7\0\x8d\0\x80\2\x86\0\xce\0\xa0\0\x8f\a\xac\0\x8d\0\x80\3\x92\0\xaa\0\x8f\6\x89\0\x83\0\x80\4\xa4\0\x89\0\x8f\6\xa1\0\x8d\0\x80\3\x86\0\xd2\0\x8f\a\x9c\0\x80\1\x8d\0\xac\0\x8f\n\xb0\0\xcc\0\x86\0\x9d\0\x8e\0\x8b\0\x8f\a\x89\0\x8c\0\xa4\0\xaa\0\xa0\0\x8f\5\xb5\0\x90\0\xa4\0\x82\0\x80\4\x9d\0\x90\0\x8f\5\xbf\0\xbc\0\x80\2\x93\0\xa0\0\x8f\6\xaa\0\x9d\0\x80\3\x86\0\x95\0\x8a\0\x8f\4\xd0\0\xbb\0\x80\27\x8d\0\xbf\0\x8f\17\xd6\1\x8a\0\x8f\16\xbf\0\x8d\0\x80\0\xb2\0\xbe\0\x8f\a\x83\0\x80\2\xbb\0\x8f\n\xb3\0\x80\1\x8d\0\x9d\0\xac\0\xa2\0\x8f\b\xc9\0\x80\4\xbc\0\xa2\0\x8f\6\x9f\0\x86\0\x80\4\x94\0\x8f\a\xc0\0\x80\4\x9d\0\xc5\0\x8f\6\x8b\0\x93\0\x80\1\x92\0\xc0\0\x8f\n\x9f\0\x96\0\xb8\0\xa2\0\x8f\t\x9f\0\x8d\0\x80\0\x99\0\x9d\0\xab\0\x8e\0\x95\1\x8e\0\xcf\0\xba\0\x86\0\x80\5\x86\0\x96\0\x8f\5\x8a\0\xc0\0\x8d\0\x80\2\xbb\0\x8f\a\xb7\0\x8d\0\x80\3\x85\0\xa0\0\x8f\5\xb0\0\x86\0\x80\27\x85\0\xb3\0\x8f\f\xaa\0\x83\0\xbc\0\x86\1\x9d\0\xcf\0\xb5\0\x8f\f\xaf\0\x91\0\x83\0\xb7\0\x8b\0\x8f\6\xc2\0\x99\0\x80\2\xb2\0\xbe\0\x8f\t\x89\0\x8e\0\xc1\0\xb3\0\xa2\0\x8f\t\xaa\0\x9d\0\x80\3\x92\0\x9c\0\x89\0\x8f\6\x9c\0\x80\4\x86\0\xa0\0\x8f\6\xaa\0\xba\0\x80\4\xcf\0\x89\0\x8f\6\xc1\0\x80\3\xc4\0\xa2\0\x8f\27\xd5\0\x80\4\x92\0\x8d\1\x92\0\x80\a\x8d\0\x9c\0\x89\0\x8f\5\xca\0\x98\0\x80\2\x99\0\xb7\0\x8f\a\xa5\0\x80\3\x86\0\xb8\0\x8f\6\xae\0\x80\27\x92\0\x8e\0\x8f\f\xb5\0\xd4\0\x80\5\xd1\0\xb0\0\x8f\v\xc2\1\x89\0\x8f\b\xc0\0\x80\4\x85\0\xa0\0\x8f\27\xb0\0\x8d\0\x80\3\x86\0\xb7\0\x8f\6\xa0\0\x85\0\x80\4\x9d\0\x8f\a\xb8\0\x8d\0\x80\3\x92\0\x94\0\x8f\6\xa0\0\x85\0\x80\3\x8d\0\xc0\0\x8f\27\xb0\0\x80\17\x8d\0\xa4\0\x8b\0\x8f\6\xb4\0\x80\3\x93\0\xb0\0\x8f\6\xb3\0\x86\0\x80\2\x81\0\x84\0\x8b\0\x8f\5\x90\0\x93\0\x80\27\x91\0\xbe\0\x8f\f\xa7\0\x80\a\x91\0\xb3\0\x8f\26\xa4\0\x80\5\xae\0\x8f\27\xa4\0\x80\4\xcd\0\x89\0\x8f\6\xb8\0\x82\0\x80\4\xa7\0\x8f\a\xa5\0\x80\4\xbc\0\xd6\0\x8f\6\xbe\0\x91\0\x80\4\x86\0\x8f\27\x8b\0\xc3\0\x80\r\x9a\0\xc0\0\x8b\0\x8f\6\xbf\0\x98\0\x80\3\xbb\0\xb5\0\x8f\6\xb4\0\x81\0\x80\2\xb9\0\xa8\0\x8f\5\x88\0\x9b\0\x8d\0\x80\27\xcd\0\x8f\r\xb9\0\x80\a\xa9\0\xbf\0\x8f\26\xa7\0\x80\4\x81\0\xad\0\x8f\26\xa2\0\x91\0\x80\4\xab\0\x8f\6\x8a\0\xab\0\x81\0\x80\4\xb8\0\x8f\a\x82\0\x80\3\x99\0\x97\0\x8f\a\xbf\0\x9a\0\x80\4\x9d\0\x8f\27\x8a\0\xac\0\x9a\0\x80\n\x92\0\xcd\0\xa1\0\x8a\0\x8f\6\x8b\0\xa4\0\x81\0\x80\3\xa4\0\x8f\a\xaf\0\x80\2\x99\0\xa1\0\x8f\6\xa6\0\x86\0\x80\30\xc0\0\x8f\r\x9c\0\x92\0\x80\3\x81\0\x9a\0\xa4\0\xb0\0\x89\0\x8f\26\xc2\0\xcc\0\x80\2\x9a\0\xa7\0\xd0\0\x8f\26\xc1\0\x92\0\x80\3\xcc\0\x90\0\x8f\6\xa2\0\x9d\0\x80\5\xb8\0\x8f\a\x93\0\x80\1\x8d\0\xb9\0\xb7\0\x8b\0\x8f\b\x9e\0\x80\2\x8d\0\xd1\0\xbe\0\x8f\17\x88\0\x8f\b\xb8\0\x9d\0\xb6\0\x80\4\x81\0\xb6\0\x93\0\xbb\0\xb7\0\xc5\0\x8f\a\x9f\0\x9c\0\xb6\0\x80\4\xa4\0\x8f\a\xa7\0\x80\0\x81\0\x98\0\xd5\0\x8b\0\x8f\5\xd0\0\xa5\0\x80\30\xb2\0\xaa\0\x8f\r\xa2\0\x95\0\x9d\0\x91\0\x93\0\x9d\0\x9c\0\xa1\0\x8f\32\xac\0\x9e\0\x85\0\xce\0\xa1\0\x8f\27\x89\0\xae\0\x80\4\x83\0\x88\0\x8f\6\xbf\0\x8d\0\x80\5\xc0\0\x8f\a\x97\0\xbb\0\xa5\0\xc1\0\xaa\0\x8f\n\xc8\0\x9c\0\x83\0\xae\0\xc1\0\x90\0\x8f\16\xbe\0\xc1\0\x9b\0\xa0\0\x8f\b\xa0\0\xb8\0\x8e\0\xa5\0\x85\1\xa5\0\xb4\0\x97\0\xb0\0\x8f\t\x8a\0\x94\0\xb6\0\x80\5\xa5\0\x89\0\x8f\6\xa6\0\xbb\0\xc9\0\xd2\0\x8f\6\x9f\0\x9c\0\x92\0\x80\30\xbb\0\xa2\0\x8f\17\xc5\0\xa3\1\xb3\0\x8f\35\x89\0\xa2\0\x88\0\x8f\b\x89\0\xd0\0\x88\0\x8f\2\x9f\1\x8f\a\xb0\0\x98\0\x80\3\x99\0\x95\0\x8a\0\x8f\6\x9e\0\x80\6\x85\0\x8f\b\x88\0\xa2\0\x8f\16\xa0\0\xa2\0\x8f\b\x8a\0\xc1\0\xa4\0\xce\1\xa4\0\x83\0\xb9\0\x91\0\x8d\0\x92\0\x87\0\x8f\v\x89\0\xa2\2\x8f\v\x8a\0\x97\0\x9a\0\x80\6\xa9\0\xca\0\x8f\a\xa2\0\x9f\0\x8f\a\xb0\0\x82\0\x80\30\x8d\0\xad\0\x8f'\x9f\0\xa1\0\xd2\0\x8f\23\xd5\0\xbc\0\xb9\0\xc9\0\xc0\0\xab\0\xa5\0\xc1\0\x8f\a\xc1\0\x81\0\x80\3\x98\0\xc5\0\x8f\6\xa3\0\xa9\0\x80\6\x86\0\xa2\0\x8f#\xaa\0\x93\0\x80\b\x91\0\xbe\0\x8f\31\xa0\0\xc0\0\x86\0\x80\a\xb6\0\xbf\0\x8f\20\xa8\0\xbc\0\x80\31\x9a\0\xcb\0\x8f\6\x8b\0\x9f\0\x8f\25\xa3\0\x9b\0\xae\0\x9c\0\x8e\0\xc1\0\x8e\0\xab\0\xae\0\xd1\0\xcc\0\x85\0\xc5\0\x8f\21\xaa\0\x9d\0\x80\4\xb6\0\xbf\0\x8f\a\xc6\0\x80\4\xa5\0\x8f\a\xac\0\x99\0\x80\a\x94\0\x8f\"\xa2\0\xae\0\x81\0\x80\t\xc3\0\xb0\0\x8f\26\x8a\0\xd0\0\xa7\0\x99\0\x80\t\xd1\0\x8a\0\x8f\16\xd2\0\xd1\0\x81\0\x80\31\x9a\0\xd6\0\x8f\6\x97\0\xa5\0\xa2\0\x8f\23\x90\0\xa5\0\x92\0\x80\b\x81\0\xcd\0\xa2\0\x8f\17\xa8\0\xb9\0\x80\5\x99\0\xc7\0\x8f\6\x90\0\x9a\0\x80\4\xae\0\x8f\6\x8b\0\xa7\0\x80\b\x9a\0\xac\0\x8f\16\xa8\0\x90\0\x8f\17\xa2\0\xae\0\x81\0\x80\v\x91\0\xb1\0\x8f\25\x95\0\xb9\0\x81\0\x80\n\x8d\0\x97\0\x8f\r\xa8\0\xba\0\x80\33\x86\0\xbe\0\x8f\5\xa2\0\xa5\0\x81\0\xc6\0\xd2\0\x8f\20\x8b\0\x97\0\x9d\0\x92\0\x80\v\xc6\0\xd2\0\x8a\0\x8f\v\x8b\0\xd5\0\x9d\0\x81\0\x80\5\x92\0\xb8\0\x8f\5\x8b\0\xc9\0\x80\5\xb9\0\x8b\0\x8f\5\xb7\0\xb2\0\x80\t\xb2\0\xbe\0\x8f\v\x8b\0\xad\0\xc4\0\xa9\0\xb8\0\x8a\0\x8f\v\x8b\0\xa1\0\xcd\0\x8d\0\x80\r\xb6\0\x9b\0\xa8\0\x89\0\x8f\16\x89\0\xa0\0\xc7\0\x83\0\x9a\0\x80\r\xb6\0\xc0\0\x89\0\x8f\t\x8b\0\x94\0\x98\0\x81\0\x80\33\x81\0\xcf\0\x8a\0\x8f\4\x95\0\x92\0\x80\1\x93\0\xd5\0\x8b\0\x8f\f\xa0\0\xb7\0\xce\0\x8d\0\x80\16\x86\0\xab\0\xc2\0\x8f\b\xa0\0\xac\0\xce\0\x86\0\x80\b\xbc\0\xca\0\x8f\4\xab\0\x99\0\x80\5\x8d\0\x9c\0\x8f\3\x9f\0\xa1\0\x98\0\x80\v\x99\0\x9b\0\xa8\0\x8f\a\xa2\0\xd5\0\xa4\0\x8d\0\x80\1\x8d\0\xae\0\xbe\0\x89\0\x8f\a\x88\0\xb8\0\x9b\0\x99\0\x80\21\xb2\0\xa4\0\xb7\0\xb3\0\x8f\n\x88\0\xbe\0\xb4\0\x9d\0\x8d\0\x80\20\x92\0\xa4\0\xa6\0\x8f\6\xa0\0\xb7\0\xae\0\x8d\0\x80\36\x9a\0\xd5\0\x89\0\x8a\0\x89\0\xd0\0\x94\0\x91\0\x80\3\x8d\0\x98\0\xcf\0\xaa\0\x8b\0\x89\0\x8f\3\x89\1\x9f\0\x88\0\xb4\0\xcd\0\x9a\0\x80\21\x81\0\x9a\0\xa5\0\xcf\0\x96\0\xa3\0\x88\1\xbe\0\x8e\0\xce\0\xd1\0\x9a\0\x80\v\x98\0\xb4\0\xa8\0\x88\0\x94\0\x8c\0\x8d\0\x80\a\x99\0\xae\0\xbf\0\x88\0\xa6\0\xaf\0\x9a\0\x80\r\x81\0\xa9\0\x8c\0\x9c\0\xb8\0\xd0\0\x88\0\xaa\0\x94\0\x9b\0\xb9\0\xb2\0\x80\5\x86\0\x85\0\xc9\0\xad\0\xa8\0\x88\1\xbf\0\x94\0\xce\0\x85\0\x9a\0\x80\25\x99\0\xbc\0\x8c\0\xab\0\xad\0\xa6\0\x88\2\xaa\0\x95\0\xcf\0\xae\0\x85\0\x9a\0\x92\0\x80\24\xcc\0\xbd\0\xc0\0\xcb\0\x88\0\xc5\0\xac\0\xc9\0\x85\0\x9a\0\x80!\x81\0\xc4\0\xa5\0\xbb\0\xa9\0\x80\t\x91\0\xba\0\xa4\0\x94\2\xae\0\xd1\0\x93\0\x8d\0\x80\xfe\x80\xfe\x80\xfe\x80\xfe\x80\xfe\x80\xfe\x80\xfe\x80\xfe\x80\xfe\x80A"
)


Le problème venait en fait de l'image qui est loin d'être aussi simple qu'il n'y paraît. L'image en réalité n'est absolument pas monochrome ; l'inscription bénéficie en effet d'un lissage en niveaux de gris avec pas moins de 252 tons différents, qu'
img2calc
réduisait malgré tout à 87.

pour sa part avait signalé la miniature de
Super Dupont
ci-contre, donnant quant à elle un script de
34,4 Ko
ne rentrant même pas sur une
NumWorks
:
Code: Select all
#palette for your image
#252 RGB-888 colors
palette = (
(0,67,116),(2,63,107),(2,54,99),(7,71,116),(7,71,107),(2,50,107),(0,63,99),(7,63,99),(0,63,90),(0,54,107),(7,80,124),(27,80,107),(7,84,133),(45,97,124),(7,76,116),(7,63,90),(0,54,99),(0,45,90),(0,35,81),(0,50,81),(2,80,116),(0,12,45),(7,54,81),(0,2,7),(0,31,64),(0,45,99),(0,54,116),(7,31,45),(0,12,27),(7,50,73),(7,12,27),(0,31,45),(0,45,73),(7,35,64),(0,7,7),(0,84,133),(2,4,45),(2,2,2),(27,50,73),(0,0,2),(7,12,7),(2,109,175),(2,7,2),(0,101,157),(0,0,18),(7,31,36),(7,2,7),(0,80,182),(0,0,0),(0,114,207),(0,2,27),(7,135,190),(0,50,149),(0,67,167),(0,80,149),(0,35,90),(27,118,175),(116,118,141),(107,151,175),(27,0,0),(149,155,167),(27,31,27),(116,76,73),(182,88,99),(157,84,107),(215,109,107),(0,21,73),(0,35,99),(0,84,207),(81,114,141),(141,122,133),(231,59,64),(239,80,73),(141,84,73),(255,54,45),(255,35,27),(239,105,99),(141,45,36),(255,84,64),(81,54,73),(107,45,36),(81,84,90),(215,76,73),(255,31,8),(223,63,45),(0,12,64),(247,67,45),(239,101,90),(239,41,36),(45,67,73),(255,67,55),(215,50,45),(174,80,73),(81,71,81),(174,50,45),(0,35,157),(7,101,149),(255,50,27),(45,50,45),(255,71,64),(207,114,81),(36,45,45),(0,0,7),(0,17,81),(157,105,81),(81,101,107),(73,41,45),(36,88,141),(141,76,45),(73,101,167),(124,84,81),(0,58,207),(90,88,99),(81,58,99),(64,54,64),(223,35,27),(247,8,2),(73,84,107),(116,67,45),(174,80,55),(45,54,64),(81,67,64),(141,105,81),(73,67,81),(107,88,107),(182,114,107),(64,63,64),(0,26,81),(90,21,18),(99,58,64),(81,63,55),(174,26,27),(45,31,27),(7,35,99),(207,7,2),(207,31,27),(190,12,7),(157,17,7),(215,26,18),(247,31,7),(174,26,18),(107,4,2),(157,22,18),(190,31,27),(133,17,18),(198,12,27),(207,35,27),(45,17,27),(99,101,107),(141,114,107),(174,4,2),(124,97,90),(149,4,2),(174,155,149),(116,12,7),(73,80,81),(223,0,0),(73,4,2),(174,114,81),(215,151,141),(215,183,175),(207,203,207),(215,211,207),(231,232,231),(255,247,240),(149,168,157),(190,172,149),(239,155,141),(124,12,7),(215,172,149),(223,232,240),(215,240,247),(207,216,223),(223,220,223),(239,236,240),(223,228,231),(141,131,116),(157,172,175),(239,220,223),(215,143,107),(207,199,190),(182,179,175),(190,187,190),(190,199,190),(174,172,175),(207,191,198),(124,135,141),(190,199,207),(255,255,255),(239,251,255),(0,26,73),(182,224,231),(157,155,149),(141,139,141),(141,143,149),(255,251,255),(36,4,7),(190,207,215),(166,168,157),(45,35,45),(223,224,231),(247,232,215),(27,31,45),(27,17,27),(107,109,116),(133,12,7),(116,118,124),(36,31,18),(0,17,64),(133,0,0),(174,183,190),(239,240,240),(247,247,247),(174,139,116),(149,151,141),(255,236,223),(239,240,247),(247,243,247),(239,187,175),(166,159,167),(239,151,116),(247,203,175),(73,151,182),(239,183,157),(255,216,190),(255,203,190),(239,203,190),(36,101,141),(255,172,133),(239,216,207),(190,135,99),(255,240,240),(124,139,149),(255,187,157),(182,187,198),(247,179,149),(223,155,116),(141,176,198),(27,151,207),(36,168,215),(7,0,0),(36,139,182),(7,109,149),(255,220,207),(239,172,141),(247,168,124),(215,155,107),(255,199,175),(255,199,149),(207,220,231),(182,135,90),(107,172,207),
)

#your image data
#75x100 RLE-8 pixels
image = (
b"\0\0\1\0\2\0\1\2\0\0\3\1\1\1\3\0\4\2\5\0\1\0\6\0\2\0\a\0\b\0\6\0\a\1\6\1\b\0\6\0\4\1\t\0\4\1\2\0\n\0\v\0\f\0\r\0\3\0\n\1\4\0\16\0\n\3\r\0\n\2\4\1\n\0\v\0\n\0\r\0\n\1\v\0\n\0\4\2\v\0\4\0\v\0\17\0\4\1\v\0\4\1\v\0\4\0\t\0\20\0\t\1\20\0\t\2\1\3\t\0\0\0\1\1\6\3\21\0\22\0\23\0\21\0\23\0\21\0\2\1\1\0\2\0\6\0\3\1\1\0\6\0\n\0\2\0\4\0\3\0\4\0\3\0\1\0\4\0\16\0\n\0\16\0\3\1\n\0\4\0\n\0\a\0\4\0\20\0\a\0\24\0\3\0\4\0\6\0\4\0\v\0\4\3\a\0\b\0\6\0\4\0\b\1\a\0\17\0\b\0\17\0\1\0\20\1\t\5\1\1\24\1\25\0\2\0\3\0\t\0\1\0\t\0\26\0\23\0\21\0\2\1\6\0\t\0\6\0\24\0\1\2\3\2\0\0\n\0\27\0\t\0\16\0\30\0\3\0\n\0\4\1\3\1\n\0\3\0\n\0\3\0\n\0\4\0\n\0\4\3\1\0\4\1\v\0\4\0\b\0\24\0\v\0\4\0\a\1\24\0\17\0\a\0\4\0\17\0\b\0\24\0\1\0\31\1\1\1\32\0\6\0\t\1\1\0\20\0\0\0\33\0\34\0\35\0\26\0\36\0\24\0\20\0\37\0 \0\23\0\0\0\20\0 \0\37\0\23\0\2\0\1\0\t\0\3\0\16\0\n\1\f\0!\0\"\0\n\1\26\0\a\0\4\1\6\0\3\0\n\0\3\1\16\0\24\0\4\0\16\0\3\2\n\0\v\0\4\0\a\0\4\0\24\0\17\0\b\1\a\0\4\2\17\0\4\0\17\0\4\0\17\1\4\0\t\0\31\0\t\2\1\0\6\0\1\1\24\0\0\0\22\0\37\0\0\0\25\0\36\0\37\0\24\0#\0\a\0\"\0$\0\21\0\0\0\30\0\27\0 \0\23\0\t\0\2\0\30\0\4\0\26\1\f\0\34\0\35\0!\0\26\0\33\1\n\1\4\0\3\0\16\0\n\1\4\0\n\1\4\0\n\0\4\1\n\2\3\0\n\0\4\1\n\0\4\3\v\0\4\0\16\0\a\0\17\0\4\0\17\0\24\0\t\0\31\0\t\1\1\1\t\0\0\1\1\0#\0\37\0\30\0\24\0\"\0\36\0\23\0\0\0\23\0\25\0\33\0\23\0\34\0\23\0\34\0\30\0\f\0 \0\33\0\30\0\27\0\33\0\36\0\16\0\26\0%\0!\0\34\1\36\0\26\0\f\2\n\0\f\0\r\0\n\0\f\0\n\0\v\0\24\0\3\0\24\0\n\0\26\0\35\0\n\1\26\0\35\0\17\1\35\1\26\0\35\1&\0\35\0\4\1\17\1\4\0\3\0\t\0\31\2\20\0\6\0\1\0\4\0\t\1\30\0\"\0\37\0'\0$\0#\0\6\0\27\0\34\0\30\0\37\0\33\1\34\0 \0\0\0\25\0\34\0\"\0$\0\27\0!\0\f\0\2\0\"\0\33\0\35\0(\1\4\0\f\0\2\0\26\2\5\0\35\0\33\0\4\0\23\0\35\0\17\0\v\0\23\0\0\0\4\0\26\0\"\0\37\0)\0\34\0*\0)\0\22\0\37\0+\0#\0\0\1!\0\b\0\4\0\17\1\1\0\t\1\20\0\31\0\21\0\1\0\0\0\6\0\20\1\t\1\34\0\27\0\23\0\3\0\30\0\25\0\26\0,\0\"\1\27\0\"\0\35\0\3\0\36\0\34\0-\0\26\0\34\0\36\0\4\0\36\0!\1\t\0\0\0\t\0\26\0\4\0.\0\0\0/\x000\0\23\x001\0\34\0\21\x001\0/\0\0\0\27\0\20\x001\0)\0/\x002\x000\0\f\x001\0\25\x011\0\32\0\0\x003\x001\x003\0+\0\30\0\17\1\v\0\5\0\21\0\20\0\31\0\20\1\t\0\23\1\30\0\21\0\t\0\0\0\25\0\34\0\37\0\0\0\23\0\34\0\37\0\"\0\34\0 \0\0\0\30\0 \0\23\0\35\x004\0\23\0\36\x005\x006\0\0\0\34\0\4\0\36\x007\x001\0/\0+\0 \x000\0\"\x001\0/\x000\0\32\x001\0\25\0\32\0)\x001\0\0\0\34\0\0\0)\08\09\0\33\0'\0\r\0:\0;\0\34\0<\0=\0>\0?\0@\0A\0?\0\37\0\4\1\2\0\21\0\20\0\31\0\t\0\6\0\30\0B\0\22\0C\0\22\0-\0\27\0 \0\23\0\33\0\23\0\30\0!\0\5\0\31\0\5\0\26\0\4\0\34\x004\x005\2/\0\25\0\31\0D\0/\0D\0\5\x000\x014\0/\1D\0\34\x000\0\34\08\0E\x000\0E\0F\0(\0@\0G\0H\0I\0\25\0E\0J\0K\0L\0\33\0M\0N\0O\0P\0N\0Q\0R\0K\0S\0T\0P\0\6\0\17\1\2\x007\0\t\2\30\0C\x005\x024\x002\0\25\0\22\0\23\0\30\x004\0\32\0\27\x005\0/\x005\1C\x000\0\30\0/\x005\x006\x005\x012\0\32\x005\1/\0U\x000\1E\0@\0?\0F\0-\0*\0V\0W\0\17\0V\0X\0Y\0Z\0[\0X\0V\0Q\0K\0H\0\\\0J\0]\0^\0S\0>\0\\\0H\0(\0\33\0W\0R\0 \0\23\0\4\0\17\1\1\0\31\0\t\0\0\0\34\x002\x004\x025\1_\x005\x004\0\34\0\27\x005\0D\0\25\1/\x004\x005\0D\0\25\x000\0C\x005\2`\0\v\0(\09\0@\0?\09\0\"\x000\0H\0K\0J\0a\0\\\0\17\0J\0^\0\37\0N\0M\0b\0Z\0\26\0>\0c\0d\0J\0e\0\34\0T\0\\\0H\0S\0A\0L\0M\x000\0=\0N\0P\0\31\0\4\0 \0\17\0\v\0\t\0\31\0\t\x010\0'\0\32\0_\x004\0_\x005\x014\0/\0C\x000\x002\0D\0/\0f\0g\0/\x005\0/\1'\x000\09\0?\0[\0a\0A\0Y\0a\0K\0a\1h\0\33\0Z\0R\0i\0X\0J\0Q\0c\0P\0e\0H\0j\0P\0N\0k\0J\0\\\0T\0R\x000\0%\0H\0\\\0R\0A\0S\0N\0b\0'\0l\0N\0\35\0\23\0\35\0\17\2\1\0\20\0\t\0\22\x000\1$\0C\0_\0m\0n\0?\0n\0_\0o\0$\x000\x007\0D\0\n\0,\0p\0@\0R\0?\0q\0\34\0N\0K\0Z\0V\0>\0b\0J\0>\0Q\0K\0c\0\r\0c\0l\x000\0R\0Z\0I\0Z\0b\0P\0W\0r\0\\\0K\0Z\0V\0e\0s\0R\x004\0M\0H\0R\0^\0O\0S\0T\0\27\1N\0T\0\b\1\17\1\26\0\17\0\t\0\31\0\t\0\23\0%\x000\1\4\0d\0a\0S\0a\0\\\0\25\0m\x010\0(\0A\0R\0Y\0c\0S\0a\0t\0c\0u\0a\0G\0D\0B\x000\0v\0N\0\5\0\35\0Z\0w\0r\0N\0q\0\23\0Z\0\\\1c\0#\0M\0Z\0\17\0[\0S\0\\\0\4\0\"\0R\0a\0R\0N\0n\0H\0M\0\36\0L\0n\0\30\0&\0h\0x\0\6\0\a\0\17\1\23\0\4\0\2\0\20\0\21\0\0\0\25\x000\0=\0W\0S\1N\0A\0y\0e\0N\1\"\0&\0J\0s\0Y\0c\0R\0Q\0[\0a\0z\0X\0R\0k\0u\x000\0M\0N\09\0c\1\37\0P\0Z\0`\0@\0Z\0&\0M\0J\0E\0J\0^\0b\0N\0I\0\1\0#\0\6\0{\0R\0a\0|\0 \0n\0&\0\17\0\4\0\26\0\4\0\33\0\27\0\21\0\4\0\17\3\4\0\2\0\20\0\31\0\0\0\t\0'\0I\0J\0K\0}\0\v\0\27\x000\0~\0J\0R\0%\0Y\0c\0^\0Y\0N\0I\0\0V\0[\0Q\0J\0S\0a\0d\0\27\0I\0J\0S\0H\0e\x000\0\\\0c\0}\0K\0@\0\x80\0\x81\0R\0a\0R\0 \0y\0A\0 \0#\0\4\0\f\0\0\0 \0\37\2\"\0\23\0\"\0,\0\"\1\27\0\34\0\a\2\17\0\a\0\26\0\4\0\2\0\31\x007\0\31\0\32\0 \0T\0S\0N\0/\0_\x000\1\x82\0Z\0R\0%\0y\0c\0^\0r\0N\09\0@\0Z\0y\0r\0a\0R\09\0!\0\27\0[\0c\0N\0R\0\30\0'\0H\0K\0J\0I\0j\0t\0\x83\0v\0I\0P\0\x84\0\30\0\21\0+\0k\0\4\0\f\0\33\0'\0\"\0,\0(\0\34\0\26\0\33\0\35\0\26\0\a\0\16\0\4\0\a\3\26\0\b\0\4\0\1\0\t\1\22\1\30\0\\\0K\0S\0?\0D\0\x85\x000\0y\0Z\0\\\x000\0y\0Z\0I\0j\0c\0K\1}\0\"\0M\0J\0m\0o\0C\0=\0J\0\\\0u\0V\0W\0\v\0@\0I\0n\0P\0\x86\0\x87\1\x88\0\x89\0\x8a\0\x8b\0\x8c\0\x80\0\26\0#\0+\0\f\0\2\0\a\1\n\3\f\0\n\0\3\0\16\1\4\1\2\0\4\0\a\0\4\0\17\0\4\0\t\1\0\0\37\0U\x004\0\35\0W\0S\1W\0m\0\27\0j\0N\0R\0%\0>\0c\0P\0O\0J\0K\0?\0\34\x000\0\\\0J\0@\0^\0R\0Y\0L\0l\0\x8d\0I\0l\0P\0M\0\x8e\0\x86\0\x8a\0\x8f\2\x87\1\x8f\1s\0\x8a\0\x88\0\x80\0\23\x006\0`\0\f\2\n\0\3\0\4\0\3\3\4\4\26\0\2\0\17\0\4\0\2\0\21\0\0\0 \x000\0/\x004\0=\0d\0c\0t\0Z\0n\0x\0J\0A\0\25\0M\0N\0\x82\0j\0J\0@\0\x90\0\x8d\0,\0R\0J\0Z\1I\0j\0n\0M\0\x86\0\x88\0\x89\0\x8a\1s\0\x91\0\x87\4\x8f\4\x92\0\x8b\0\x88\0\x93\0\0\0+\0\f\0\16\0\f\0\3\0\16\2\3\2\4\3\26\0\a\0\26\0\4\0\2\0\31\0\32\0\21\x000\x007\0D\0$\0\"\0\x94\0H\0t\0Z\0\x95\0K\0?\x005\0I\0J\0~\0P\0c\0>\0\x96\0\x8a\0j\0\x97\0I\0>\0\x81\0\x90\0\x8a\0\x86\0\x91\0\x87\1\x92\0\x8f\0\x87\0\x92\0\x87\0\x92\1\x87\a\x8f\1[\0\x8b\0\x98\0\22\0+\0\f\0\16\0\n\0\16\1\n\0\3\1\16\0\3\0\4\1\a\0\5\0\a\0\17\1\2\0\20\0\t\0\0\0\27\x000\0/\0_\x000\1i\0J\0S\0\x99\0J\0t\0}\0X\0Z\0Y\0I\0A\0j\0\x88\1\x8f\0\x9a\0\x8e\0\x86\0\x8a\0\x86\0\x8a\0\x92\0\x91\0\x86\0\x91\0\x86\2\x91\0\x8a\1\x92\0\x87\0\x92\1\x87\2\x92\0\x87\2\x8f\0\x87\0\x8b\0\x86\0\36\0#\0`\0\16\2\3\4\4\0\5\0\4\1\a\1\4\0\2\0\31\1\0\0\22\0%\0?\0m\0\26\0-\0@\0K\0J\0\x9b\0Q\0Z\0S\0J\0@\0\x80\0\x81\0P\0\x89\0\x87\0\x83\0\x87\0s\0\x8a\0\x87\0\x88\0\x96\2\x88\0\x87\0[\0^\0[\1J\0\x86\1\x9c\0\x86\0\x8a\0s\1\x87\1\x92\1\x8a\0\x92\0\x87\1\x8f\0s\0t\0\x9d\0#\0`\0\16\1\3\0\16\1\3\1\4\4\a\0\16\0\2\0\31\0\20\0\t\0\21\0\37\0Z\0S\0H\0W\0S\1d\0-\0\x80\0>\0@\0n\0P\0\x86\0\x96\0\x88\0\x8f\0\x83\0\x8f\1\x88\0\x9c\0\x96\0\x92\0\x9e\0\x9f\0\xa0\1\xa1\0\xa2\1\xa3\0\xa4\0\xa5\0\xa6\0\x9f\0\xa7\0R\0\x86\0\x9c\0\x86\0\x92\0s\0\x92\0\x87\0s\0\x87\0\x92\0\x87\0\x91\0\x8f\0\x92\0\x8b\0\x9d\0\24\0`\0\n\0\16\3\5\0\3\1\4\1\a\0\4\0\v\0C\0\21\0\20\1\32\0\21\0d\0a\0K\0S\0a\0A\0Y\0\xa8\0\x88\0\xa8\0\x9a\0\x98\0\x96\0\x83\0\x8c\0\x83\0\x88\0\x8f\0\x88\0\x96\0\x91\0\x9e\0\xa9\0\xa2\0\xaa\0\xab\0\xac\0\xad\0\xae\1\xaf\0\xa2\0\xb0\0Y\0\xab\1\xb1\0\xaa\0\xb2\0\x9f\0[\0\x9c\1[\0s\3\x92\0\x87\0\x92\1s\0\x8b\0\x8d\0#\0+\0\16\0\f\0\16\1\3\0\5\0\3\0\4\2\a\0\4\0\23\x007\0\21\1\20\0\31\0\23\0u\0n\0I\0u\0\37\0\x8d\0\x8a\0\x89\0\x8c\0\x88\0\x83\0\x8c\1\x83\0\x8f\0\x88\0\x96\1\xb3\0\xa2\0\xab\0\xad\0\xa2\0\xb4\0\xa1\0\xa3\0\xa2\0\xb4\0\xb5\0\xb6\0\xb7\0\xb8\0\xa3\0\xb6\0\xb5\0\xb9\0\xba\0\xbb\0\xbc\0\xbd\0\xa0\0R\0\x9c\0\x86\0X\0\x87\0s\2\x92\3S\0\x9d\x006\0\f\0\16\1\3\0\16\0\n\0\3\0\4\2\2\0\16\0\26\0\21\1\31\0\21\0\20\0\31\x007\0\xbe\x004\0$\0\x8d\0\x8f\0\x89\1\x83\1\x8e\0\x8c\0\x83\1\x96\0\x9c\0\x9e\0\xa1\0\xbf\0\xa1\0\xb4\0\xa1\1\xa2\0\xaf\0\xb5\0\xc0\0\xc1\0\xc0\0\xb5\0\xc2\0\x94\0e\x000\1~\0\xa2\0\xc1\0F\0\xaf\0\xc3\0\xbd\0\xa9\0\x8a\0\x9c\0s\4\x92\1\x87\0s\0\x8b\0\xc4\0+\0\f\0\16\0\3\0\0\0\16\2\4\3\23\0C\0\21\0\20\0\31\0\20\1\t\0#\x007\0\x8d\0\x88\0\x89\2\x83\0\x8e\0\x8c\1\x83\0\x96\1\xa9\0\xc5\1\xb6\0\xb4\0\xa1\0\xb4\0\xad\0\xa3\0\xc6\0~\0b\0\xc7\0(\x000\6=\0\xa1\0\xb6\0F\0\xc1\0\xc8\0\xbd\0\xb2\0R\0\x9c\0s\0X\0s\3\x92\0\x87\0X\0t\0\33\0+\0\16\0\f\0\16\0\n\0\3\0\16\1\4\1\16\0\23\0\22\0\0\21\0\31\0\20\0\31\0\t\0\32\0\xc4\0\x88\0\x89\0M\0\x89\2\x8e\0\x83\0\x8c\0\x96\0\x8f\0\xb7\0\xbf\0\xb5\0\xb6\0\xb4\0\xa1\0\xb7\0\xc9\0\xaf\0\xb0\0\xca\1\xcb\0\36\0\xcb\1\xca\1=\0\"\x000\2'\0\xcc\0\xb8\0\xc0\0F\0\xad\0\xbd\1\xa7\0\x9c\0\x8a\0s\2\x92\0s\0\x92\0\x87\0X\0\x96\x007\0+\0\f\0\16\1\3\1\5\0\3\0\5\0\16\0\22\1\1\22\1\31\0\0\0$\0\x96\0\x8e\0\xcd\0\x89\1\x83\0\x8c\1\x88\0\x96\0\\\0\xc5\0\xbb\0\xb5\0\xb7\0\xb4\0\xb7\0\xb4\0\xc9\0\xad\0y\0(\0\xca\0{\0\xca\0'\x000\0.\0\xca\1\27\x000\6\xb5\0\xc1\0\xc6\0\xc3\0\xaf\0\xbd\0\xa0\0\x9c\0\x8b\0X\0s\2\x92\0s\0\x87\0S\0\xa8\0#\x006\0\16\0#\0\16\0#\0\3\1\4\0\v\0\22\0\30\0\22\0\0\22\1\32\0\21\0\x8d\0\x88\0\x90\0\x89\3\x8c\0\x83\0\x98\0l\0\xbb\0\xb7\0\xa6\0\xb7\2\xb4\0\xad\0\xaf\0~\0(\0b\0=\0'\x000\1\xcb\0r\0x\0(\0'\x000\3%\0<\0\xb6\0\xaf\0\xce\0\xa1\0\xa4\0\xa3\1\xbd\0\xb9\0\x9c\0\x8b\0s\0X\0s\2\x92\0[\0\x8b\0\xca\0+\0\16\1\f\0\n\1\16\0\3\0\16\x007\0\0\22\1\0\21\1\xcf\0\x8c\0\x90\1\x89\3\x8e\0\x98\0l\0\xb7\0\xb5\0\xc6\0\xb4\1\xb5\0\xb4\0\xa1\0\xa2\0\x94\0e\0\xc7\0.\x000\0'\0\xca\0]\0u\0r\0.\0'\x010\4\x94\0\xbc\1\xc2\0\xaa\0\xae\0\xa3\1\xaf\0\xbd\0\xa0\0\x9c\0S\0X\0s\3\x87\0K\0\x96\0\32\0`\0#\0\16\0\n\0\0\0\f\0\0\0\3\0\22\0\21\0 \0\22\1\32\0\xd0\0\xd1\0\x89\0\x90\0\x89\3\x8c\0\x98\0\x96\0\xb5\0\xd2\0\xc6\0\xa6\0\xb5\1\xb4\2\xc0\0{\0r\0.\1\xc7\0p\0\xcc\0]\0(\x000\6=\0\xc2\0\xb5\0\xd3\0\xbc\0\xa0\0\xa2\0\xd4\0\xa3\2\xae\0\xbd\0A\0\x9c\0X\0s\1X\0s\2S\0\x93\0)\0\f\0#\0\3\1\n\0\0\0\16\0\t\0\21\0\x007\0\21\0\31\0\xc4\0\x96\0\xcd\1\xa8\0\x90\0\x89\2\x98\0\xd5\0\xb1\0\xd6\0\xc6\0\xb5\0\xb7\0\xb6\1\xb4\0\xb6\0p\0u\0\xca\0\xc7\0]\0|\0\xcc\0r\0\27\x000\6=\0\xce\0\x94\0(\0*\09\0\xa0\0\xad\0\xd4\0\xae\0\xd7\0\xae\2\xbc\0R\0t\0X\1s\1X\0s\0X\0\x96\0\t\0`\0\f\2\n\0\16\0\n\0\2\0\t\0\22\1\31\0\30\0\xa8\0\x89\0\xcd\2\x8e\0\x90\0\x89\0\xd1\0I\0\xb7\0\xb0\0\xc6\0\xb5\2\xb7\0\xb4\0\xc6\0\x94\0u\0{\0x\0]\0p\1q\0%\x000\a%\x000\1(\0'\0%\0\xbb\0\xbc\0\xc3\1\xd3\0\xae\1\xa3\0\xbd\0\xa3\0\x9c\0\x8b\0X\1s\1X\0s\0S\0\xc7\0/\0\f\0#\0\f\0\n\0\16\0\f\0\2\0\31\x007\0\22\x007\0\xcb\0\x98\0\xcd\0\x90\0\xcd\0\x89\0\x90\0\xcd\0\x98\0\x89\0\xa5\1\xd5\0\xa5\0\xc6\1\xb7\0\xa2\0\xc6\0{\0Y\0q\0x\0{\1]\0r\0.\x000\6'\1.\0\xc1\0\xb6\0\xb5\0\xc1\0p\0\xa1\0\xd8\0\xa3\0\xc8\0\xa3\0\xd9\0\xbc\0\xd9\0\xa3\0\xbd\0\xa7\0\x9c\0X\2s\1\x8a\0K\0\x89\x004\0`\0\f\1#\0\3\0\16\0\23\x007\0\22\0\21\0\30\0\x9d\0\x98\0\xcd\1\x90\1\x89\1\xd1\0\x95\0\xd2\0\xb0\0\xa5\0\xc6\1\xa6\0\xa2\0\xb0\0e\0=\0.\1\36\0.\0(\0\36\x000\6\xca\0]\0r\0%\0Q\0\xbc\09\x000\0\xa1\0\xd6\0\xc0\0\xa2\0\xa1\0\xac\0\xad\0\xb5\0\xb6\0\xd3\0\xc3\0\xd8\1s\0t\0G\0X\4t\0!\0)\0\f\2#\0\f\0\23\0\0\22\0\20\0\37\0\x8d\0\xcd\2\x90\2\xd1\0\xcd\0\xa5\1\xc6\0\xd6\0\xc6\1\xb4\0\xb0\0'\x000\2'\x000\6,\0b\0\x95\0\x99\1\xda\0\xa9\0%\0(\0\xd4\0\xd3\0(\0\xc4\0|\0p\0\xca\0=\0r\0\xce\0\xa2\0\xb5\0\xc2\0\xae\0\xd9\0\xbd\0\xa7\0\x9c\0X\5K\0\x80\0+\0\f\x006\0\n\0\f\1\22\1\21\0\t\0\xcf\0\x98\0\xcd\1\x90\1\x89\0\x90\0\x8d\0z\0\xa5\0\xc1\0\xd5\0\xc6\2\xb5\0y\x000\v\x84\0\x9f\0\x99\0\x95\0\xa6\0z\0\xcf\x000\1\xcc\0\xbc\0\xdb\0\xcf\0Y\0\xb8\0\27\0f\0.\x000\0\x94\0\xbc\0\xad\0\xc1\0\xbc\0\xd8\0\xd3\0\x8b\0S\0X\1s\0X\0s\0K\0\x96\0#\0+\0\f\1#\0\f\0\23\0\xbe\0\22\1\x9d\0\x98\0\xa8\2\xcd\2\x98\0\xc1\0\xa5\0\xb0\0\xa5\0\xc6\0\xd6\0\xb0\2\33\0-\1\"\2%\0(\2b\0\xca\0\"\0(\0I\0j\x000\0(\0\"\0~\0\x84\0\x95\0\xbc\1\x95\0j\0\xb9\0%\0\36\0\27\x000\0\xa2\0\xd4\0Q\0\xc2\0\xbc\0\xd4\0\xbc\0L\0t\0K\0X\2s\0X\0t\0\2\0)\x006\0\f\0#\0\f\0\22\0\xbe\1\25\0\x8d\0\x89\0\xa8\1\x9a\0\xcd\0\xa8\0\xd1\0M\0\xa5\0\xd6\0\xa5\1\xd6\0\xb0\0\xcc\1i\0\4\0\v\1\n\0\6\0\v\0\x9b\0)\0=\0l\0\xd5\0\xb4\0\x95\0P\0\xdc\0\x9e\0\x93\0}\0\xc6\0\xd6\0\xdd\0\x95\0\xc0\0\xbc\0\x95\0\xa0\0r\0\27\x000\0*\0\xa2\0\xa1\0!\0{\0\xbc\0\xc8\0\xac\0\xd8\0\xa0\0\x9c\0t\1S\0K\0X\1S\0j\0)\x006\0`\0#\0\f\0\23\0\xbe\x007\0\25\0\xa8\0\xcd\0\x90\0\xcd\0\xa8\0\xcd\0\x90\0\xd1\0I\0\xa5\0\xb0\3\xce\0\xcc\0\xce\0Y\0\b\0\17\1 \0\x97\0\xa9\0\xde\0)\0\xcb\0R\0\xdf\0\xda\0}\0\\\0\xe0\0\x9e\0\x93\0}\0\xa7\0\xe1\0\xbc\0\x9e\0~\0\xaf\0\xe2\0\xb5\x000\0%\0\36\0\xa3\0\xc0\0$\x000\0\xc2\0\xaf\0\xa1\1\xa3\0\xd3\0\xa0\0A\0R\0s\0\x9c\1\x8b\0a\0\x80\x006\0`\x006\0\f\0#\0\35\0\x007\0\36\0\xd1\0\xa8\0\xcd\0\x90\0\xcd\0\x90\0\xcd\0\xd1\0\xce\0\xa5\0\xd6\1\xc6\0\xd6\2\xba\0\b\0\v\0\b\0\34\0\xb0\0\xe0\0\xa7\0\xe3\x003\0\4\0M\0\xe4\0\xe5\0\xa9\0\x9e\0W\0\x80\0b\0\xe6\0\xdf\0\xe7\0\xe4\0\x9d\0\xd2\0\xae\0\x94\0~\x000\0e\0\xad\0p\0'\0Y\0\xa0\0\xad\0\xb2\0\xe5\0\xa2\0\xe2\0\xe5\0\xc3\0\xbc\0\xc3\0\xd4\0\xe2\0A\0\x8a\0t\0\xd1\x006\0+\0#\x006\0`\0\22\2\xc4\0\xcd\0\x9a\0\xa8\0\x90\2\xd1\0\xcd\0\xd6\0\xa5\0\xd6\2\xc6\1\xb4\0\xe8\0\24\x003\0\17\0\x99\0\xe9\0\xa9\0\xe1\0\xde\0+\1O\0L\0\xa9\0\xc4\0R\0\xe2\0\x9f\0\xdc\0v\0j\0\xda\0d\x000\0\x99\0\xbc\0\xcb\x000\0x\0\xea\0j\0\27\0\xc0\0\xa0\0\x95\0~\0\35\0\4\0\v\0\4\1\v\0u\0i\0\xc1\0\xd2\0\xd9\0\xd4\0\xa7\0\x89\0U\0/\0+\0\f\1\23\0\22\x007\0\xc4\0\x98\0\xa8\3\x9a\0\xcd\0\x90\0\xa5\0\xd6\2\xa5\0\xc6\0\xa6\0\xb4\0\xba\0#\0\37\0\xa6\0\xd4\0\xe2\0\xc8\0\xd4\0\xb5\x006\0#\0i\0\xdc\0}\0(\0I\0\xe1\0\xdc\0\xa8\0\xcb\0\xc7\0\xeb\0\xec\0\xcb\0n\0\xad\0=\0-\0\xed\0\x84\0\"\0\xba\0\x94\0 \0\22\0+\0)\x003\0\xee\0\xef\0\xee\x003\0)\0`\0\0\0\a\0x\0\xba\0\xa2\0\xd4\0\xb1\0\16\0C\x006\0`\0\22\1\30\0\xc4\0\xcd\0\xa8\0\x9a\0\xa8\1\xcd\0\x98\0M\0\xe8\0\xb0\0\xd6\0\xa5\0\xd6\0\xc6\0\xa6\0\xb4\0\xe3\0\b\0\x9b\0\xe0\0\xe5\2\xd4\0\xa0\0C\0\t\0\4\0\xa7\0v\0-\0\36\0\xf0\0;\0'\0\34\x000\0>\0z\0\x94\0\xbc\0\xd6\0\27\0m\0\"\0\37\0\v\0\37\0\6\0\xee\0\xef\x003\0\xee\0\xf1\0\xf2\0#\0\xf2\0\xf1\0\xee\0\xef\0\xee\x003\08\0\0\0\33\0Q\0\xe5\0\xbc\0<\0C\0\32\0\30\0\22\0\30\0\x9d\0\xcd\0\x9a\0\xa8\0\x90\0\xcd\0\xa8\0\xd1\0v\0\xa5\0\xd6\3\xb5\1\xc6\0\r\0\37\0z\0\xe4\0\xa7\0\xda\0\xf3\0\xad\0\xce\0\xc1\0U\1}\0\xd5\0%\0\x80\0I\0j\0h\0\\\0I\0\x84\0\xcf\0\xae\0\xbc\0(\0\f\0-\0\37\0\26\1\xee\0\xef\x003\0#\0\23\0\34\0'\0\36\0\x9b\0b\x000\0\37\0\r\0\xf1\0\xee\08\0\xf1\0\xee\0\a\0,\0\x95\0\xbc\0\xc3\0E\0\22\1\30\0\x9d\0\xcd\1\xa8\0\xcd\1\xa8\0\xd1\0I\0\xa5\0\xc1\0\xd6\0\xc0\0\xc6\1\xc0\0\xce\0\17\0\37\0P\0\xb3\0\xf4\0\xe9\0\xe1\0\xb0\0\xb1\0\xbb\0p\0\34\0,\0\xb4\0\xe2\0\x9d\0M\0l\0w\0I\0j\1\xad\0\xbc\0\xcf\0\35\0\v\0\36\0&\0k\0\xef\0\xf2\0\30\0\33\x000\0\xc4\0\x81\0j\0y\0\xc0\0\xb9\0\xb6\0\xcf\x000\1\v\0\xee\x003\1\xf1\1 \0(\0\xa0\0\xbc\0\22\0\xbe\0$\0\xc4\0\xcd\0\xa8\0\x8d\0\xa8\0\xcd\0\x90\0\xd1\0l\0\xa5\0\xc1\0\xd6\1\xc6\0\xd6\0\xb0\0\xce\0\17\0\30\0v\0\x9e\0A\0\xe4\0\x99\0\xb1\0\xaa\09\0z\0\xa0\0\x95\0Q\0\xdd\0\x9e\0\xc2\0\xa0\0\xa6\0h\0%\0\xb2\0\xbc\0=\0'\0\26\0\30\0\5\0)\1\37\0.\0|\0\xcc\0\xb3\0\xa9\0\xda\0\xdd\0\xa9\0\xd5\0j\0\xea\0\xbc\0\xc2\0%\x000\0\34\0\xe3\0\xf1\2\xee\0\n\0\34\0F\0\30\0\xbe\0\xd0\0\x9d\0\x98\0\x9a\0\xa8\1\xcd\0\x90\0\x98\0v\0\xa5\0\xc2\0\xd6\0\xa5\1\xc2\0\xb0\0\xcc\0\17\0 \0n\0\x9e\0l\0h\0\xdb\0\xc8\0\xc3\0\xe8\0\xf0\0\xdc\0\xeb\0\xb4\0\x95\0\xe4\0\xf3\0\xbc\1\xe9\0n\0\xa3\0b\x000\0!\0Y\0x\0\v\0\r\0{\0j\0\xb1\0<\0\xec\0\xf3\0\xd7\0\xb2\0\xe2\0\xd7\0\xbc\0\xa0\0\xf0\0\xc2\0\xbc\0\xa3\0=\x000\1\35\08\0\xf1\08\0\xee\x003\0\37\0\30\0B\0\xbe\0\x9d\0\x98\0\xa8\0\x90\0\xcd\1\xa8\0\xd1\0M\0\xa5\0\xc0\0\xd6\0\xc6\0\xc0\0\xc2\0\x95\0\xcc\0\17\0\37\0Y\0\x9e\0l\0v\0\xac\0\xd8\0\xbc\0Q\0\x9d\0\xdc\0d\0\xf5\0\xa6\0z\0h\0\x80\0d\0v\0\x95\0y\0'\0\34\0}\0\xe1\1\xdd\0\xf4\0F\0\xea\0\xbf\0I\0\xe4\0\xf3\0\xe7\0\xb2\0\xf3\0\xe2\0\xb2\0\xa4\0\xdf\0\x80\0|\0\xbc\0\xae\0%\x000\1(\0\r\08\0\xf1\0\xde\0\xf1\0\30\0B\0\0\xc4\0\x98\0\xcd\0\x90\0\xa8\0\xcd\1\x8d\0M\0\xd6\0\xc1\0\xd6\0\xa5\0\xc0\0\xb0\1\xce\0\v\0 \0\xc7\0I\0h\0>\0\xd8\1\xc3\0{\0l\0\xdc\2\xf5\0}\0z\0\x95\x000\0(\1%\0'\0\xcf\0\xf6\0\xdc\0\xe4\0\xe0\0\xdb\0\xc2\0\xbc\0\xce\0\\\0\xe4\0\xe1\0\xb2\0\xe7\1\xd7\0\xf3\0\xa4\0\xd7\0\xf7\0\x80\0\xcc\0\xc3\0\xc0\x000\2\xf0\0\xe3\0\xf1\1\xde\0\22\0\xbe\0C\0\xc4\0\xcd\2\xa8\0\xcd\1\x98\0\xcd\0\xd6\0\xa5\0\xd6\1\xc0\0\xc1\0\xce\0\x95\0Y\0\33\0?\0P\0v\0F\0\xd8\0\xbc\1\x94\0w\0\xdc\1\xda\0\xdc\1\xe9\0\xbc\0\xd6\x000\2(\0d\0\xdc\0\xec\0\xeb\0\x9f\0<\0\xaa\0\xae\0\x82\0d\0\xf4\0\xdf\0\xf3\0\xd7\0\xae\0\xd7\0\xe7\0\xa4\0\xe7\0\xf3\0\xf5\0;\0\xb9\0\xbc\0.\x000\3\r\0\xf1\0\xde\0\5\0\30\0\31\0(\0\xd1\0\xcd\1\xa8\0\xcd\2\x98\0\xb0\0\xa5\0\xd6\0\xc0\0\xa5\0\xc1\0\xc2\0\xcc\0x\0h\0I\0P\0j\0\xc2\0\xbd\0\xe7\0\xbc\0\xce\0l\0\xb3\0\xec\0\xdd\0\xf7\0\xa7\0\xda\1\xf7\0\xa9\0\x95\0\xd5\0\xf3\1\xa1\0\xe5\0\xdd\0\xdb\0\xac\0\xbd\0\xea\0l\0\xdc\0\xb3\0\xeb\0\xdd\0\xf3\0\xd7\1\xe7\0\xa4\1\xc9\0\xf8\0l\0O\0\xbc\0\xc2\x000\4\r\0\xde\0\22\1\31\0\25\0\x8d\0\x89\0\x90\0\xa8\0\xcd\0\x90\1\xd1\0I\0\xa5\0\xc1\0\xc6\1\xb1\0i\0y\0}\0P\0O\0P\0\xcb\0\xc0\0\xd8\0\xe7\0\xbc\0\xc1\0l\0\xe6\0\xb3\0\xf4\0\xda\0\xe5\0\xf3\0\xdc\0\xb3\0\xf8\0\xe0\0\xf3\0\xe1\0\xb4\0\xad\0\xe5\0\xa9\0\xbb\0\xc3\0\xd8\09\0\x9e\0\xf6\0d\0\xdc\0\xf4\0\xe1\0\xd7\0\xf3\0\xd7\2\xc9\0\xe4\0\x9e\0\x84\0\xd3\0\xc3\0\"\x000\4\r\0\22\0\0\31\0\xd0\0\x8d\0\x89\0\xcd\0\x90\0\xa8\1\x90\0\xd1\0M\0\xa5\0\xc1\0\xc0\0\xa5\0x\0\xcf\0\xf4\0\xa4\0=\0.\0j\0\xc7\0\xdb\0\xaa\0\xd4\0\xc3\0<\0P\0\xb3\1\xa9\0\x9f\0\xe5\0\xdd\0\xb3\1\xa7\0\xf4\0\xdf\0\xa9\0\xda\0\xb4\0\xda\0\xb5\0\xaa\0\xbc\0\xc8\0I\0d\0\xb3\0d\0\xb3\0\xe4\0\xe1\0\xf3\2\xc9\0\xd7\0\xf3\0\xeb\0A\0\xc4\0\xc0\0\xbc\0p\x000\5\22\0\x007\1\x9d\0\x89\0\x90\2\xa8\1\xcd\0\xd1\0\xb0\0\xb1\0\xb8\0e\0\x80\0\xe9\0\xd7\0\xf3\0\xd5\x000\0.\0r\0\xad\0\xd9\0\xd3\0\xa4\0\xab\0\x97\0\x9e\0\xd5\0\x9f\0\xec\0\xdd\0\xec\0h\0\xb3\0\xec\0\xa9\1\xda\0\xe5\0\xdd\0\x9f\0\xc5\0\xc3\0\xd4\0\xc5\0\x95\0\xb3\0A\0\xb3\0d\0\xa7\0\xda\0\xe0\0\xc9\0\xf3\1\xd7\0\xf3\0\xda\0\xec\0\x80\0]\0\xbc\0\xc2\x000\5\30\0\22\1\31\0\xcb\0\x98\0\x90\0\xa8\1\xcd\0\xa8\0\xcd\0\xd1\0h\0\xd2\0Y\0(\0\xf4\0\xe5\0\xb2\0\xf5\0\xe4\0y\x000\0(\0\xa3\0\xbc\0\xd3\0\xd9\0\xbc\0<\0v\0}\0\xb3\0\xec\0\xdd\0h\0I\0\xe6\0\xb3\0\xa9\1\xb4\0\xda\0\xe9\0\xb5\0\xd9\0\xc3\0\xd4\0\xea\0\xd5\0\xdc\1\xf6\0\xec\0\xa7\0\xdf\0\xf3\1\xe5\0\xd7\1\xf3\0\xf7\0\xdc\0>\0\36\0\xc3\0\xb5\x000\4%\0\22\x007\1\31\0\37\0\x8d\0\x98\0\xa8\2\x90\1\x98\0\x9a\0u\0\"\0\x9e\0\xe1\0\xb2\0\xdf\0\xf5\0\xf4\0\xb3\0\xc4\x000\0\xa1\0\xbc\0\xd8\0\xd3\0\xc3\0\xd8\0|\0I\0\xe6\0\xb3\0\xdf\0n\0P\0z\0\xd5\0\xa9\0\xb3\1\x9f\0\xa6\0\xaa\0\xbc\0\xd4\0\xd8\0\xea\0\xd5\0\xe4\0\xa7\0\xdc\0\xa7\0\xf4\0\xe9\0\xdd\0\xe1\1\xe5\0\xf3\1\xf7\0\xdc\0I\0.\0\xb9\0\xa2\x000\4%\0\22\x017\1\xbe\0\x9d\0\x89\0\xa8\0\xcd\0\xa8\0\xcd\0\xa8\0\x8d\0\x9d\0;\0y\0\xda\0\xb2\0\xd7\0\xf5\0\xeb\0\xec\0A\0j\x000\0\xc0\0\xbc\0\xd4\0\xe7\0\xd3\0\xbc\0\xac\0>\0w\0\xec\1\x82\0j\0z\0\xe6\0\xd5\0\xb3\0\x99\0\xa9\0\xac\0\xc3\0\xd3\0\xe7\0\xd4\0\xd2\0\x9f\0\xdd\0\xe9\0\xeb\0\xa7\0\xeb\0\xa7\0\xe9\0\xda\2\xe9\0\xda\0\xe9\0\xdc\0>\0.\0\xa0\0\xd4\x000\4%\0\22\0\xbe\0\22\1C\0\xcb\0\x98\0\xa8\1\xcd\0\xa8\0\x8d\0\x9d\0;\x000\0z\0\xf3\0\xe7\0\xf7\0\xec\1\xdc\0h\0j\x000\0\xce\0\xc3\0\xd4\0\xe7\0\xd3\0\xd4\0\xbc\0\xbb\0z\0\x9e\0h\0\x93\0j\0l\0h\0}\1\xb4\0\xaa\0\xc3\0\xd4\0\xd3\0\xae\0\xd4\0\xd2\0\xa0\0\xe0\0\xda\2\xf4\0\xeb\0\xe9\0\xda\1\xe9\0\xeb\0\xe9\0\xeb\0d\0>\0.\0\xa2\0\xbc\0\xce\x000\3%\0\22\0\0\22\0\xbe\0\31\0\xbe\0\x8d\0\xcd\0\xa8\1\x8d\0\x9d\1\xf0\0\xc4\0\x9f\0\xe7\0\xf3\0\xf4\0\xda\1\xb3\0O\1\xf0\0Y\0\xab\0\xd8\0\xbc\0\xd8\0\xd3\0\xd4\0\xbd\0\xc5\0\xd6\0\x95\0b\0\x81\0>\0\x97\0\xb5\0\xaa\0\xbd\0\xbc\0\xe7\0\xd8\0\xd3\0\xae\0\xd9\0\xb8\0\xa0\0\xc9\0\xf3\0\xe5\0\xf3\0\xda\1\xdf\0\xeb\0\xe9\1\xeb\0\xe9\0\xe4\0h\0.\0|\0\xbc\1\xc3\0(\x000\2%\0\22\0\x027\0\30\0.\0\x98\0\x9a\0\x8d\1\x9d\0;\x000\0\x95\0\xa4\0\xf3\0\xf5\0\xb3\0\xf3\0\xf8\0>\0j\0\x81\0\x84\0(\0\xd2\0\xf9\0\xa3\0\xd4\0\xd3\0\xa3\0\xae\0\xc3\0\xab\0\xbb\0\xb6\0\xbf\0\xf9\0\xae\0\xc3\0\xbc\0\xd4\0\xd8\0\xd4\0\xd3\0\xae\0\xa3\0\xd3\0<\0\xa0\0\xc9\0\xf3\0\xda\1\xdf\0\xe9\0\xdf\0\xeb\0\xe9\0\xeb\0\xe9\0\xeb\0\xf5\0w\0\xc4\0\xae\0\xbc\2\xb6\x000\2%\0\23\0\1\22\0\x007\0U\0\x8d\0\x89\0\x8d\0\x9d\0%\x000\0x\0\x94\0\xb8\0\xe1\0\x9e\0\xda\0\xeb\0}\0\x84\0j\0O\0\xc7\0.\0p\0\xc5\0\xac\0\xf9\0\xd8\0\xe7\0\xd4\0\xd3\0\xeb\0H\0\xd1\0?\0\xda\0\xd4\0\xc3\0\xe7\0\xd3\2\xae\0\xa3\0\xe7\0\xd3\0<\0\xa6\0\xf7\0\xe4\0\xeb\0l\0(\0\xb3\0\xe0\0\xe1\3\xe0\0\xf3\0\xe0\0z\0\xb8\0\xc3\1\xbc\1b\x000\1%\0\22\0\30\0\x007\2C\0\xc4\0\x98\0\x9d\0\x84\0\xb0\0b\0\xca\0\x94\0\x9b\0\x94\0\x99\0\xf6\0\xe6\0\x81\0r\0j\1\xcb\0{\0=\0Q\0\xb7\0\xbb\0\xac\0\xaa\0\xd3\0W\0^\0\x80\0P\0\x9d\0\x86\0A\0\xc3\0\xae\0\xd3\1\xa3\0\xd7\0\xae\0\xe7\0\xbc\0\xed\0\x95\0\xdc\0\xb3\0v\0(\x000\0\xb3\0\xe1\0\xf3\1\xc9\0\xd7\0\xa4\0\xbc\0\xc3\0\xe9\0P\0\xa2\0\xbc\2\xc0\x000\1%\0\22\0\xbe\0\22\x007\0\0\22\0\31\0B\0;\0\xf0\0\xa6\0\xa4\0\xdf\0Q\0\xc3\0\xc1\0'\0\xcc\0h\0n\0j\1(\0e\0Y\0{\0x\0\xc7\0x\0<\0\xb1\0\xc5\0\x99\0\x96\0\xcf\0:\0\xab\0Y\0\xc4\0\x96\0\xe2\0\xc3\0\xd7\0\xd3\0\xae\0\xa3\0\xae\0\xe7\0\xae\0\xc8\0<\0n\0\x93\1\27\0\xcf\0\xf5\0\xeb\0\xe2\0\xd7\0\xc9\0\xd7\0\xa4\0\xbc\1\xe0\0d\0\x84\0\xa3\0\xbc\1\xad\0'\x000\1\30\0\xd0\0\x017\0\0g\0\25\0\"\0v\0\x97\0\xa9\0\xb3\0\xdd\0Q\0(\0\xcb\0(\0Y\0j\0~\0e\0b\0x\2!\0\xcc\0\x94\0\36\0p\0\xa5\0y\0\x9d\0j\0\v\0)\0i\0Y\0\x9d\0@\0\xc3\0\xa3\1\xae\0\xe7\0\xae\2\xb9\0\xbb\0\xe8\0r\1.\0\36\0\xdc\0\xe9\0\xda\0\xe2\0\xf3\0\xd7\0\xa4\1\xbc\0\xe1\0\xf5\0\x9d\0\x94\0\xbc\2=\x000\0%\0\30\0B\0\1\xbe\0B\0,\0j\0\xd5\0y\x000\0>\0\xec\0\xd5\0b\0.\0\36\x000\0\34\0\xc4\0\x9d\0\x94\0\xce\0Y\0e\0x\0\33\0p\0\xbb\0\xc0\0p\0\x9b\0\xca\0\xf0\0O\0-\x000\0&\0\xb1\x000\0\xc7\0\xa3\0\xf9\0\xac\0\xaf\0\xa3\0\xaa\0\xac\0\xc8\0\xac\0\xd2\1\xc1\0]\0\36\0\27\0\xe6\0\xe9\0\xdf\0\xda\0\xf3\0\xc9\0\xd7\0\xa4\0\xd7\0\xe1\0\xe4\0v\0\x84\0\xd4\0\xbc\1=\x000\0*\0\30\0\x007\0\0\25\0,\0\xcf\0\xdf\0\xda\0\x97\0\x95\0\xe6\0\xd5\0\xf4\0\x95\0\x84\0(\x000\0(\0\xa8\0\xd1\0\xa8\0y\0Q\0Y\0&\0\36\0\xa1\0\xac\0\xb1\0\xc8\1\x99\0\x8d\0\x95\09\0 \0i\0\xc2\0\x80\0\xc4\0\xcc\0\xd2\0\xac\0\xc8\0\xac\0\xaf\0\xa2\0\xbb\0\xb7\0\xb1\0p\0\x93\0%\x000\1y\0\xe4\0\xe9\0\xdd\1\xe0\0\xf3\0\xd7\0\xf3\0\xf7\0\xf5\0j\1\xa3\0\xbc\0\xc3\0\36\x000\0%\0\22\0\1U\0\25\0%\0\xd5\0\xc3\0\xe0\2\xf6\0\x84\0\xd5\0n\0.\0\"\1\x8d\0\x89\0\x90\0\xa8\0\x9d\1x\0\33\0=\0\xa2\0\xbc\0\xa1\0\xb8\0\xab\0\xf9\0G\0M\0Y\0\xc2\0{\0M\0[\0@\0\xe8\0Q\0p\0\xcc\09\0\xba\1\x94\0x\0\xcb\2\xc7\0.\0'\0\27\0h\0\xe4\0\xe9\0\xda\0\xf7\1\xe2\0\xe1\0\xf5\0I\0\x80\0>\0\xe7\0\xbc\1b\x000\x017\0U\0\25\0\"\x000\0\xcf\0\xdd\0\xf4\0\xfa\0l\0\xb3\0h\0z\0\x84\x000\0j\0\"\0\x8d\0\x8c\0\xcd\0\x90\0\x9a\0\x8d\0;\1(\0x\0\xf9\0\xae\0\xd4\0\xd8\0\xa2\0\xab\0}\0\x98\0[\0T\0\x83\0\x87\0?\0\xd8\0\xbc\0\xac\0<\09\0\xcc\1F\0\xba\09\0i\0\xce\0\xc1\0]\0(\0x\x000\0%\0\x95\0\xdc\0\xf5\1\xe4\0\xf5\0\xdc\0\x9e\0O\1\x80\0\xa1\0\xbc\0\xd8\0F\x000\1\22\0\25\0$\0'\0f\0\27\0\x84\0P\0v\0\x97\0y\0\x97\0\xe4\0z\0\xcf\0\x82\0x\0\x8d\0\xcd\0\x90\0\x8d\1\x9d\0;\x010\0~\0\xab\0\xc8\0\xd3\0\xd4\0\xd9\0\xbc\0\xab\0\x95\0R\0^\0?\0\xa6\0\xbd\0\xd4\0\xa3\0\xc3\0\xbc\2\xc3\0\xa3\0\xac\0\xbb\29\0{\0\xea\0~\x000\0\36\1I\0h\0\x9e\1h\0v\0P\0>\0I\0P\0\x97\0\xbc\0\xea\0\xc2\0(\x000\0\22\0U\0\25\x002\0,\0'\x000\0\xec\0\xe0\1\xf8\0\xf5\0\x95\0\xb3\0h\0\xcf\0r\0\x8d\0\xcd\0\x90\0\x8d\1\x9d\0;\x010\0b\0\xf9\1\xae\0\xd8\0\xc3\0\xd4\0\xbc\1\xac\1\xbd\0\xbc\0\xd4\0\xd3\0\xe7\0\xd3\1\xd8\0\xc3\0\xae\0\xaa\0\xad\0\xa3\0\xaa\0\xe8\0\xcc\0\xaa\0i\x000\0\xc7\0]\0\36\0'\0j\0>\0v\0>\2I\2v\0\x95\0\xae\0\xa0\0\xce\x000\0\xbe\x002\1f\0,\0f\0\"\0\xd5\0\xb0\0v\0\x82\0j\0\xd5\0\xa9\0v\0\x82\0\x9d\0\xcd\0\xa8\1\x8d\0\x9d\1;\1.\0\v\0\xbb\0\xea\0\xc5\0\xac\0\xbc\0\xd4\0\xae\0\xd3\0\xbc\1\xd4\0\xae\0\xd3\0\xd8\0\xd3\0\xe7\0\xd4\2\xbc\0\xc3\0\xd4\0\xbc\0\xbb\0\xea\0\xbc\0\x94\x000\0<\09\0\xc7\0%\0\27\0'\0\xc7\0P\0j\0P\0v\0h\0\xfa\0h\1l\0\x95\0\xbc\0\xd3\0(\0\30\0\25\0$\x002\0f\x020\0(\0\xfa\2I\0Q\0\xf6\0y\0;\0\x89\1\x9a\0\x8d\0\x9d\0\xc4\0\xf0\2 \0\xcc\0\xd2\0\xb8\0\xbb\0\xc8\0\xbc\0\xe7\0\xd4\1\xd3\0\xd4\1\xd3\0\xe7\0\xd8\0\xd4\2\xd9\0\xd4\0\xa3\0\xbc\0\xea\0\xbb\0\xbc\0\xce\x000\0<\0\xf9\0\xcc\0'\0\xcb\x010\1y\0P\0h\0\xa9\0\xdd\0\xf3\0\xc9\0\xf8\0\xf6\0v\0F\0\xbc\0\x94\0\22\0g\0\25\0$\0,\0f\0,\0f\0(\0h\0\xfa\0z\0\xcf\0P\0z\0\30\0\0(\0\xd1\0\x89\0\x8d\0\x9d\0;\0\xf0\2\36\0\2\0\xc1\0\xc0\0<\0\xc5\0\xae\0\xd4\0\xd8\0\xd9\0\xd4\5\xd9\0\xe7\0\xd8\1\xd3\0\xbc\0\xad\09\0\xbd\0\xe8\x000\0\xc2\0\xbb\0\x94\0\36\0\x9b\0r\x000\1,\0}\0\xf8\0\xf7\0\xc9\0\xe7\0\xa4\1\xd7\0\xe0\0\xf5\0\x80\0\xa1\0\xd2\0\22\0U\0$\0,\0f\0,\2\27\0%\0'\0j\0I\0j\0$\0g\0C\1\34\0\x9d\0\x8d\0\x9d\0;\0\xf0\2\30\0#\0\26\0\xe8\0\x95\0\xea\0\xc5\0\xaa\0\xc3\0\xd4\0\xd9\0\xd4\5\xd8\0\xd4\0\xd8\0\xd3\0\xd4\0\xba\0\xac\0\xb1\x000\0\xc2\0\xea\0y\0\x84\0\xce\1%\x002\0$\0\x95\0\xf8\0\xf7\0\xe0\0\xe7\0\xa4\0\xc3\0\xa4\0\xd7\0\xe0\0\xf5\0\x84\0|\0\xb6\0\22\0\0U\0\25\0,\0'\0\27\0f\0,\x002\0$\0\33\0B\0g\0\1\xbe\0\22\0\31\0\xd0\0.\0;\1\xf0\2(\08\0C\0\16\0Y\0\x95\0\xaa\0\xbb\0\xf9\0\xd4\1\xe7\0\xd3\0\xd8\0\xd4\0\xd3\0\xd4\1\xe7\0\xa4\0\xbc\0\xac\0\xbb\0\xb6\0j\0\xce\0\xcc\0\x97\0\5\0k\0r\0\"\0\30\0$\0\x95\0\xf8\0\xe9\0\xf3\0\xd7\0\xa4\1\xc9\1\xe2\0\xf6\1j\0|\0\xc2\0\22\0\0\xbe\0\25\x002\0,\1f\0'\0\34\0\25\0U\0\xbe\0\0\xbe\0\1\22\0\0\30\0B\0\34\0\27\0\xf0\x020\0\xde\0)\0\0#\0\32\0\xc2\0\xc8\0\xd3\0\xc3\0\xbc\4\xc3\2\xbc\0\xd4\0\xd8\0\xc5\0\xa5\0\v\2&\18\0\22\0B\0\t\0B\0]\0\xf8\0\xe9\0\xe0\0\xe7\0\xa4\1\xc9\0\xd7\0\xf3\0\xf5\0\xfa\0\x9e\0\xc4\0F\09\0B\0U\0\0B\1\25\x002\0,\0\25\0\xd0\0\2\xbe\0\x027\1\xbe\0\xd0\0\25\1,\0\27\x000\1\xb0\0\xfb\0C\0\0\32\0\20\0E\0\xfb\0\xde\0:\0\xfb\0\xed\0\xbf\0\xc5\0\xed\0:\0E\1\xe3\0\4\0\0\0\31\0\1\0\t\0\22\0r\0\xde\0\xf2\0\30\0`\0\0\0\37\0\xec\0\xf8\0\xdd\0\xae\0\xa4\1\xd7\0\xc9\0\xdd\0\xf5\0\xb3\0d\0\x81\0f\0\x99\0\xce\0\22\0\25\0B\x007\1\xbe\0\xd0\0B\0\xbe\0\0\xbe\1\5\22\0\0B\0\25\x002\1,\x002\0'\0\xcf\0\xbc\0\xfb\0\31\0\22\0\32\0\31\0\32\0\t\0C\x007\0C\0\31\0\32\x004\0#\0\0\1\24\0#\0\xf2\1`\1\xc1\0\xe8\x003\0\n\0\0\x012\0y\0\xf8\0\xe1\0\xd7\0\xc9\0\xe2\0\xc9\0\xe5\0\xdf\0\xec\0\xfa\0}\0h\0x\0r\0b\0%\0\22\0$\0\25\0\xbe\x007\0B\0\xd0\0\xbe\0B\0\xbe\1B\0\xbe\0\2\xbe\1\1\xd0\0\25\0\34\x002\1,\x002\x000\0\xc0\0\xbc\0\xea\0k\0\32\x006\0)\0`\0+\0#\0\24\x006\0#\x006\08\0)\x013\0\xee\x003\0\xf1\0\xee\0\xf1\08\0\xf1\x003\0\a\0\xbe\0\36\0f\0\x9e\0\xf7\0\xd7\0\xc9\0\xe5\0\xdd\0\xdf\0\xa9\0\xec\0\xd5\0\xfa\0\x95\0\x81\0\x93\0r\x000\1\22\0B\1\25\0U\0B\2\xbe\0B\0\xbe\0B\1\x057\0\xbe\0\25\x002\1,\2'\0(\0\xb9\0\xbd\0\xab\0<\0\xf1\0\xf2\0+\0)\x013\0\xf2\0`\1)\08\0E\0\r\0\24\1\xe3\0\f\x003\1)\0\xe8\0\xc7\1-\0O\0\xf8\0\xe0\0\xe5\0\xe0\1\xb4\0\xa9\0\xf6\1z\0\xfa\0z\0\xc7\x010\1%\0\22\0\0g\0\0g\0\1U\0B\1\xbe\2\0\22\0\3\22\0\xbe\0\25\0$\x002\1,\0f\x002\x000\0\x9d\0\x9f\0\xab\1\xa2\0\xea\0\xde\08\0)\0+\2)\0+\0y\0\xeb\0\xdd\0\xb4\0\xa9\0\xf4\0\xa9\0u\0E\0\xcc\0\xce\0Y\0-\0\xca\0\xeb\0\xe1\0\xe2\0\xdd\2\xc6\0\xd5\0\xf6\0z\0h\1j\0]\0(\x000\1%\0\22\0B\0U\0C\x007\0\0B\1\xd0\0\xbe\0\0B\0\xbe\0\0\22\0\1\22\2\0\xbe\0\25\x012\0,\x012\0,\0\xf0\0\xd1\0\\\0\xb6\0\xbf\1\xae\0\xad\0\xed\0:\0\xde\3\xa9\0d\0\xdc\0\xf7\1\xf5\0\xf8\0\xb3\0b\09\0i\0\x9b\0>\0\xd5\0\xf3\1\xe2\0\xdd\0\xa9\0\xf6\1\xe6\0\x97\0z\0h\0O\1\xc7\0'\x000\1%\0\30\0B\0\0B\0U\0\xbe\2B\1\xbe\0B\0\xbe\0\2\xbe\1\x017\0\xbe\0\xd0\0\25\x002\0f\0,\x002\0,\0\x9d\0\x80\0\x9d\0\xd1\0}\0\xa2\0\xf9\1\xd3\0\xc3\0\xbc\1\xb2\0\xec\0\xf5\0P\0j\0l\0\x9e\0\xdc\1\xc9\0\x99\0-\0Y\0\x97\0\xfa\0\xf6\0\xa6\0\xa0\0\xf7\0\xdd\0\xe6\1\xb3\0z\0h\0z\0\x84\0O\0\xc7\x000\3%\0\22\0\0B\0\25\0\xd0\0\xbe\0\3U\0B\0\xbe\1B\3\xbe\0\x007\0\0\xd0\0\25\x002\2,\0\36\0\x94\0\x80\0\x9d\0\xc4\0\x8d\0\x83\0\x9f\0\xa1\0\xab\2\xbc\0}\0\x80\0h\0z\0\xf0\x000\0(\0l\0\xf5\0\xe0\1z\1\xfa\0v\0\x97\0\xec\0\xfa\0\xf4\0\xf5\0\xe6\0\xfa\0n\0z\0h\0j\0]\0\xc7\x000\4%\0\22\0g\0B\0U\0B\1\xbe\0\22\0\0B\1\1U\0\xbe\0B\1\xbe\2\1\xbe\0\25\x012\x010\0~\0\xbc\0\xe8\0\x9d\0P\0\x80\0\x9a\0\x89\0\x8f\0A\0\xa0\0\xb9\0\xbc\0\xab\0\x95\0\xf5\0\x9e\0j\x000\0\xf0\0I\0\xeb\0\xf3\0\xdd\0\xe0\0\xf8\0\xf7\0\xd7\0\x97\0z\0\xf8\0\xfa\1z\0>\0n\0>\0j\0O\0\xcb\0'\x000\4%\0C\0U\1\2\22\0B\0\xbe\2\0B\2\1\xbe\0B\0\xbe\0\2B\0$\x002\0'\19\0\xc2\0\xbd\0Q\0\x9d\0\x80\0\x9a\0^\0\x8e\0\x96\0\x91\0G\0W\0\xb3\0z\0\xf6\0\xdf\0\xe2\0\xe6\0\xb3\0\xec\0\xe5\0\xf3\1\xf7\0\xe1\0\xf3\0\xf7\0\xf5\0>\0\xd5\0\x97\0>\0P\1n\0O\0b\0.\x000\6%\0\22\0g\0B\0\xbe\0B\0\xbe\0B\0\xbe\1B\0\xd0\2\xbe\0B\0\xbe\0\1B\0\xbe\0B\0\0B\0\25\x002\0f\x000\0\xc0\0\xbd\0\xba\0\xc2\0\xac\0e\0\xc1\0\x82\0\x8d\0\x8e\0^\0M\0\x8e\0\x91\0\x8e\0\xf6\0v\0\xdf\0\xa4\0\xd7\0\xc9\0\xb4\0\xf3\0\xe0\0\xf8\1\xf4\0\xf8\0\xf5\0\x9e\1\xb0\0\xce\0\x82\0j\0y\0\x84\0*\x000\b%\0\22\x007\0\0B\0\xd0\0B\0\xd0\1B\1\xd0\0B\0\xbe\3\2\xbe\0B\1\25\1'\x000\0\xb1\0\xbd\0\xbf\0\xbd\0\xcc\0\xb7\0\xba\0p\0\xba\09\0\x81\0\x8d\0\x98\0\x8e\0^\0\x80\0n\0\xf6\0\x82\0\xf6\0\xf8\0\xeb\0\xf7\1\xf8\0\xe9\0\xa9\0\xdc\0\xfa\0\xf6\0z\0\x95\0\x94\0<\0~\0*\x000\2'\x010\6%\0C\0B\0\xd0\0B\2\xd0\2\xbe\1\1B\0\1\xbe\0\3\xd0\0U\0,\x000\0\xb1\0\xbd\0\xac\0\xaa\0\xbd\0\xae\0p\0\xbb\0\x94\0p\0\xb1\0\xc5\0\xbb\0\xc2\0I\0\x8e\0P\0j\0I\0\xf6\0v\0\xdc\0\xf5\0\xf4\0\xf6\0\xec\1\xdc\0\xf6\0\xfa\0}\0n\0\x97\0\xb8\0\xba\x000\1'\x020\0%\x000\6%\0\22\0B\0\xd0\1B\1\25\0\30\0\xd0\1\xbe\1\x057\1\xd0\0$\0f\x000\0<\0\xd8\0\xac\0\xad\0\xd3\0\xad\0\xd3\0<\0\xcc\0\xac\0\xc2\0\xcc\0\xa2\0\xbc\1\xab\0\xc8\0F\0\x80\0v\0\x9e\0\xf6\0P\0\xb0\0\x9e\0\xb3\1\xf6\1\xe6\0h\0I\0P\0\xcb\0e\0'\x000\1%\x000\0'\1\27\x000\6%\0\30\0U\0\xd0\1B\2\xd0\0B\0\xbe\0B\1g\0\3C\x007\0\25\0$\0,\x000\0\xc2\0\xbd\0\xac\1\xc8\0\xaa\0\xae\0\xc2\0\xc8\0Q\0\xb1\0\xbc\0\xe8\0\xd2\0\xad\0Q\0\xc2\0\xac\0\xaf\0\x82\0P\0v\0\x9e\0\xe6\0h\0\xe6\1\x9e\0n\0v\0P\0\x84\0\xc4\x000\0'\x000\0'\0.\0(\0.\1(\0.\x010\6%\0B\0U\0\xbe\0B\0\xd0\0\25\1B\0\xbe\0B\1\4C\0\0$\0!\0\33\x000\0\xcc\0\xbd\0\xac\0\xc8\0\xb2\0\xa3\0\xaf\0\xad\0\xb1\09\0\xd2\0\xc7\0\xae\0\xa3\0\xb9\0\xb8\0\xba\0\xc2\0\xcc\0\xbb\1j\0v\0z\0h\1j\0\x84\0\xc4\x000\0'\0%\0\27\0%\0.\0(\0.\0(\0.\4(\0.\x000\6%\0!\0\25\0\xbe\0B\1U\0\37\0B\0\xd0\0B\0\1\xbe\0\30\0\1\xbe\0$\0'\0\xcc\0\33\0x\0\xbc\0\xc8\0\xad\0\xb2\0\xa3\0\xad\0\xd9\0\xa1\1F\0\xe8\0{\0\x94\0\xc3\0\xad\0\xd2\1\xdb\0Y\0\xdb\0\xd2\0\xbb\0\x93\0v\0\x80\0\xc4\0\x93\0\xcb\0r\09\1\xcc\0\x94\0Q\0]\1r\0x\1.\1\36\0(\0\36\0(\x000\6%\0U\1B\2\xd0\0B\2\xbe\3\x007\0\xbe\0$\1u\0x\0'\0\xaa\1\xad\0\xa3\0\xc8\1\xf9\0\xa1\0\xa3\0\xdb\0\xd2\0\xce\0\xba\0e\0\xb1\0\xac\1<\0\xc1\0\xb9\0\xb8\0\x9b\0\xcc\0\xc0\0O\0b\0\x9b\0\xc1\0\xb5\0\xc0\0\xc1\0\xcc\0Q\3]\0{\0r\0\xc7\0\xca\0\xcb\0\36\0.\0\xc7\0(\x000\6%\0U\0\25\0B\1U\2g\0\1\xbe\1B\0\0B\0\25\0,\0\xcb\0p\x000\0\xea\0\xbc\0\xa2\0\xc8\0\xac\0\xc8\0\xac\0\xa1\0\xc5\0\xb9\0\xb6\0\xc2\0\xb8\0\x94\0r\0b\0\xb1\0\xbb\0\xd8\1\xbd\0<\x000\0~\0\xbd\0\xce\0\xe8\0\xaa\0\xdb\0\x9b\0~\0{\0Q\0p\0\xcc\0p\0\x94\0p\0]\0{\0r\0\xcb\0\36\0.\0\xcb\0b\0%\0'\x000\6!\0\25\0\30\3\22\0\30\0\22\0\30\0\22\2\30\1$\x002\x010\0\xba\0\xbc\0\xc8\0\xa3\0\xc8\2\xf9\0\xa1\0\xac\0\xb9\0\xd2\0<\0\xc1\0\xba\0Q\0=\0{\0\xbb\0\xb8\0\xc1\0\xb8\0\xc1\0(\0\xd2\0\x94\0\xba\0\xa2\0p\0\xc7\0\x94\0\xc0\0\xb1\0\xd2\0\xbb\0\xb6\0<\0\xc2\09\0\xce\0p\0{\0r\0x\1]\1%\x000\0%\2\27\0%\x000\0%\0"
)


Ici encore, le problème venait de l'image. Bien qu'ayant l'air d'une miniature de rien du tout, l'image comportait pas moins de 253 couleurs différentes, qu'
img2calc
ici ne réduisait automatiquement qu'à 252 couleurs.

Bref,
img2calc
s'en sortait très bien niveau compression
RLE
lorsque tu lui fournissais des images propres ou simples, soit avec un jeu de couleurs réduit ou de larges formes de couleur unie. Facile lorsque c'est toi qui conçois l'image.
Mais si tu convertis une image récupérée en ligne, ce ne sera pas forcément le cas :
  • photo
  • image au format
    JPEG
  • miniature obtenue par réduction d'une image originale plus grande avec interpolation de couleurs
    (cas de
    Super Dupont
    )
  • ...
Comment fait pour gérer ce cas et obtenir malgré tout des tailles de script acceptables ?

Et bien dès aujourd'hui nous te proposons une solution.
img2calc
te permet dès maintenant de préciser le nombre maximal de couleurs à retenir pour la conversion, par défaut à
256
dans le cas de la compression
RLE
.

Pour
Bomber
par exemple, on peut tenter de limiter à
8
couleurs au maximum, pour un script qui ne fait maintenant plus que
5,9 Ko
(-68,78%)
:
Code: Select all
#palette for your image
#7 RGB-888 colors
palette = (
"w","#d0d4d0","#b8c0b8","#a0a0a0","#585c58","k","#282828",
)

#your image data
#240x74 RLE-3 pixels
image = (
b"\xf8\x88\1\2\3\2\xd0\16\4%\3\xb8\16\4-\6\1\0\1\3$\3\1\x90\6\1\3\4\3\1\x98\a\3=\3\4\6=\6\3\1\xf0\5\3\6\35\3\x90\a\4\xa5\1\6\3\xe0\5\1\6-\3\x80\a\1\xbd\1\3\xd8\5\x045\4\x80\a\3\xc5\1\3\xc8\5\1\x065\4\x80\a\4\xc5\1\6\1\xc0\5\3=\4\xf8\6\1\6\xcd\1\4\xc0\5\4=\3\xf8\6\3\xd5\1\6\xb8\5\1\x065\6\1\xf8\6\6]\6\24\6U\2\xb0\5\3=\4\xf8\6\1U\4\2\1\20\1\4M\3\xb0\5\4=\2\xf8\6\4E\6\x030\1\6E\4\xa8\5\1\x065\6\xf8\6\1\6=\6\2@\4E\4\xa8\5\3=\4\xf8\6\2\6=\3H\4E\2\xa8\5\4=\3\xf8\6\4=\6P\4E\1\xa0\5\1=\6\1\xf8\2\1\n\1\xd8\3\6=\3H\1\6E\xa8\5\3=\4\xf0\2\1\4\6\25\4\1\xc0\3\2=\6\2H\2E\4\xa8\5\4=\1\xe8\2\1\4-\6\xc0\3\4=\6\30\t\30\2\6E\2\xa0\5\3\x065\6\xf0\2\4=\4\xb0\3\1\6=\3\0\1\4\36\3\1\2\6E\4\1`\1\2\33\2\1\x90\1\1\23\1\b\1\2\33\28\1\2\33\2\1p\4=\4\33\2\1\xa0\1\1\2\33\2\1P\1\6=\6\1\xa8\3\3E\1\2\6\x8d\1\2P\1\3\4=\6\3\1p\4%\4\3\6-\6\4\1\b\1\3\4=\4\2X\1\6u\4\2\xf8\0\1\3\4=\6\3@\3M\3\xa8\3\4=\4\1\6\x8d\1\4H\1\4\6]\6\3`\4\x85\1\4\1\3\6]\4P\2\x85\1\6\3h\2\6]\6\x020\4M\3\xa0\3\1E\v\x8d\1\4\1@\1\4\xfd\0\4P\2\6\x8d\1\6u\4H\4\x95\1\4X\3\xfd\0\3(\4M\4\2\x98\3\3=\6\1\6\x8d\1\2@\1\4\x8d\1\4H\3\x9d\2\48\1\6\x9d\1\3H\4\x8d\1\3 \3U\16\3\1\x80\3\6=\4\1\x85\1\6\2@\1\6\x9d\1\3@\6\xa5\2\x020\3\xa5\1\6\18\3\x95\1\6\1\30\1\6m\4\1\xe8\2\1\6=\t\xfd\0\6\1H\4\xa5\1\48\1\xad\2\x040\4\xad\1\x030\2\6\x9d\1\3 \4u\6\2\xe0\2\4=\6\0\1\x85\1\3@\3E\6\4\v\6E\x020\3M\f\3\4U\6\24\6=\4(\1\6E\6\4\3\4\6=\4(\1\6E\4\3\4\6=\6 \1\x85\1\3\xd8\2\4=\3\b\6\xfd\0\6\28\4=\6\1\30\4=\x030\4E\4\1\b\1\4M\3\20\3=\4(\3E\6\2\20\2\x065\6\1 \2E\4\20\1=\6\1\30\3\x8d\1\2\xc8\2\2=\6\1\b\3\x85\1\x040\1=\4\1 \1\x065\4(\2\6=\4 \4=\6\3\30\1\x065\4(\4=\4\1 \4=\1 \4=\4 \3=\3\30\4\x8d\1\6\1\xc0\2\3=\6\30\3\x85\1\1(\3=\x020\x065\4(\3=\6\1 \6=\3 \2=\4 \1\6=\2(\4=\1\30\1\6=\1 \3=\4\20\1\6\x95\1\3\xb8\2\1\6=\3 \1\4&M\4 \1\x065\x060\1\x065\4(\x065\6\3 \2\x065\6(\4=\3 \4=\4(\1\4=\1\30\3=\6(\3=\3\20\x045\16U\4\xb8\2\3E\x010!\3E\4 \2\x065\x040\2\x065\3 \1=\6(\3=\3(\x065\6\1 \4=\3(\2=\6 \4=\3(\x045\6\1\20\4-\6\1\2\4\6E\4\xb8\2\4=\4h\4=\6\1\30\x035\6\x020\4=\2 \4=\3 \1\x065\6\1 \2=\4 \1=\6\1(\3=\4\30\1=\6\2 \3=\6\1\b\x025\3\20\2E\4\xb0\2\1\6=\3h\3E\2\30\x065\68\x045\6\1\30\1\6=\2 \2=\4(\4=\3 \3=\x040\6=\3\30\3E\4\2\t\2\4\6=\4\20\4-\6\1\30\6=\3\xb0\2\2=\6\n+\2\1 \2E\2\20\1=\3 \2\3\4=\4 \3=\6\1 \4=\3 \1\6=\1 \6=\2\20\1\3\4E\6\1\30\6\xbd\1\2\b\1\6-\4 \x065\6\x020\21\xe0\1\4=\16=\6\4\2\20\2E\2\20\4=\1\20\1\4U\3 \4=\4(\6=\1 \3=\4 \1\x065\6\20\1\6U\4\30\1\6\xb5\1\4\20\x035\3\30\1=\6(\1\4\26\4\xd0\1\1\6\xa5\1\4\1\0\3E\2\b\1\x065\4\20\1\6U\6\1 =\6\2 \3=\4(\x045\6\2 \4=\3\b\1\6]\2\30\4\xb5\1\6\1\20\4-\6\1\30\4=\3 \1\6%\4\xc8\1\3\xb5\1\6\3\4=\6\1\b\3\x065\4\20\4]\4 \3=\6(\4=\3 \1=\6\1\30\1\4=\2\b\3]\6\1\20\1\6\xb5\1\3\20\1\6-\6\30\1\6=\1 \3-\6\1\xc0\1\4\x8d\2\4\20\4=\3\b\1\6U\6\1\30\1\6=\3 \1\x065\6\1 \4=\3 \2=\6\1\b\4]\4\30\3\xad\1\6\3\30\x035\4\30\3=\4(\6-\6\1\xb8\1\1\6\x8d\2\4\20\x065\6\1\b\3]\3 \3E\1 \3=\4 \1\6=\1 \3=\4\20\4U\6\2\20\3\xad\1\6\2 \x045\3\30\4=\3 \x025\4\xc0\1\3\x95\2\2\b\3=\4\20\3U\4 \3E\4(\6=\2 \3=\4(\6=\3\20\4U\6\1\0\1\4M\v\x065\16\3\1 \1\6-\6\1\20\1=\6\1 \4-\6\2\xc0\1\6\xfd\0\16\xfd\0\6\20\4=\2\20\2U\6\20\1\4\6E\3 \1\6=(\4=\4 \1\6=\1\20\4]\f\6U\20\1\3\34\3\18\x045\4\30\2=\4 \x025\6\xc0\1\2\6e\6\2\1\b\1\3\6e\3\1\2\4=\6 \4U\f\16M\6\1 \3=\3(=\6\1 \3=\4\30\1\6\xbd\1\4\x88\1\x035\6\1\30\4=\3 \x045\3\xc0\1\4e\6\2(\2\6]\16M\4 \2\xc5\1\6(\4=\2 \1=\4(\4=\2 \4\xbd\1\6\x80\1\3=\4\30\1\x065\6 \x035\6\1\xb8\1\1\4e\38\1\6\xb5\1\3(\3\xbd\1\3 \2=\4\1 \3=\3 \1\x065\4\1(\xc5\1\1h\1\4=\6\1\30\2\x065\4\30\2\x065\3\xc0\1\2m\28\1\6\xb5\1\3(\4\xb5\1\6\1 \3=\3(\4=\1 \4=\6\1 \1\xc5\1\4\1X\2\4E\3 \3=\3\30\x045\6\xc8\1\4m\3(\1\3\6\xbd\1\6\1\20\1\3\6\xb5\1\4 \1\x065\6\1(\4=\1\20\2\4M\3\30\2\4\xcd\1\4\18\1\2\4\6E\3(\3=\3\b\1\x045\6\3\xc8\1\6m\6\4\31\3\4\xd5\1\4\3\2\3\4\xc5\1\3 \2=\x060\4=\4\2\3\4\6U\6\3\2\3\4\6u\f\3U\f\3\n\3\f\6U\x040\3=\6\2\3\6=\3\xc8\1\2\6\xfd\0\36\xf5\1\6U\6m\6\1 \4=\x030\2M\6\xfd\0\6M\4\33\n\1\b\4e\26e\4\x010\1\6=\6E\6\1\xc8\1\4\xc5\2\4\6\x9d\1\4\1\2\3\4\v\4=\4 \1\x065\6\18\6\x9d\2\6\1@\1\4\xd5\1\4H\6\x85\1\6\1\xc8\1\1\4\xf5\1\6\23\24\v\2\1\2\6\x8d\1\6\1(\6=\2 \3=\4@\4\x95\2\6\3P\1\6\xbd\1\6\3P\2\xfd\0\6\2\xd0\1\1\x065\4\3\6\x9d\1\6\3P\2\6\xfd\0\6\x020\x065\6\1 \3=\3@\1\4u\16\xfd\0\6\3`\1\4\xad\1\4\2`\4m\6\1\xe0\1\4-\6\3\0\2\6\x8d\1\4\1`\2\6m\4\18\x045\3(\x025\4X\4e\4\t\4m\4\2\xf8\0\3\6\x8d\1\6\2\1p\4]\4\1\xe8\1\3-\4\20\1\4u\4\3\x80\1\3\6M\4\3H\1\6%\38\3%\4\1`\3\6=\6\4\3\30\3\4M\4\3\x98\1\3\4\6]\f\1\x90\1\3\6=\4\3\xf8\1\1\4\25\6\4\1 \1\3\6M\4\2\1\x90\1\1\v\4\6\r\f\3\2\1X\1\4\6\5\4\3H\3\6\5\6\3\1p\1\v\4\6\5\6\4\3\28\2\3\4\6\r\6\4\3\2\1\xb0\1\1\v\4\6\25\6\4\v\2\1\xa8\1\1\3\f\5\6\4\3\2\1\x90\2\1\3\2\1H\t\3\24\3\2\1\xc8\x93"
)

Un choix judicieux, la dégradation du lissage de l'inscription sur seulement 4 niveau de gris n'est pas flagrante.

Pour
Super Dupont
qui est une image certes miniature mais en couleur, soyons moins extrêmes. Mettons la taille maximale de la palette à par exemple
16
couleurs, pour un script de seulement
9,8 Ko
(-71,51%)
:
Code: Select all
#palette for your image
#16 RGB-888 colors
palette = (
"#004468","#002450","#085898","#002048","#081020","k","#488ca8","#a0a098","#605458","#b85c50","#c89068","#e02018","#981008","#602018","#e0bca8","#e8ece8",
)

#your image data
#75x100 RLE-4 pixels
image = (
b'\20\1\xe0\1\1\0\1@\1P\1\20\2\xe0\4\1\20\1\xe0\1\1\3Q\0\1P\1\xf0\1\1\xb0\1\1\20\21\20\1\20\21\x90\1\4\x010A\xb0\1\5\20\3\xd0\2\1\x90\1\1\20\21`\1\0\24\3\1\4\0\1\4\3\1\0\1\3\4\21P\2\3\5\20\1\xd0\2\21\xb0\1\1\x80\1\3\4\0$\0\2\0\5\4\1\0\3\5\3\1\0\1\3\0\21\2\4\23\1\24\xa0\4\1\xf0\0\2\4\3\0\5\4\1\0\1\24\1\4\1\4\3\2\3\4\3\5\24\0\1\5\3$\1"\0\2\20\2P\1\3\20\1\3\20\23\1\23\1\3`1@\3\5\4\5\4\2\0\5\4\x034\3\0\24\5\4\5\3\2\1\5\4\3\25\0\x021\0\3\4\0\1\3\20\1\20\1\5\4\2\4\5\2\3\4\22\20\3\1P! \21\20\4\5\1\0\3\4\1E\3\0$\1\24\0\4\23 \1\0\5\0\2\5\1\2\4\1\22\0\5\1"\25\22\24\2\x102\x030A\0\21\3\1\20$\0\1\24\5\4\3\0\23\1\3\2\1\4\22\0\4\0\4\1"\3\25\22\5\0\2\4\0\22\0\4\0\22\6\4\5\0\6\5\4\a\4\b\31\n\t\4\x101\20#\1\3\4\5\3\1\4\1\23\0\1\0\1\0\4B\4\1"\0\x152\4\5\4\2\6\5\6\a\5\t\v\31\4\6\33\n\4\f\v\b\r\v\b\t+\r \21 \3\x012\5\4\3\1\3\2\0\x052\1\5\3B\5\0"\3\25\6\31\a\4\5\v\t\0\33\0;\b\v\31\v\b\f\v\b\31\5\4\31\3\x010\1\20\4\5\xf2\0\4\5\22\x142\4\5\x012\0\5\6\31\6\25\t+\t\0\v\f\4\v\f\4\v\1\b\v\t\v\24\v\31\v\32\f\5\4\v\r\1\0\3 \1\20\25\0b\1\25\22\5\x032\25\6\t\33\n\0;\t\4\v\t\b\33\b\v\r\4\t\35\v\2\v\t\v\t\25)\n\33\4\5\t\v\3\1\x030\1\0\3\25\4\1\2\6\b\t\b\22\4\5\1\2\0\5\b)\b\4;\b\4\v\30\33\0\v\t\5\t\v\t\v\4\r\t\r\t+\4\v\t\2\f\31\f\b\33\25\33\21\20\1\20\1\0\1%\0\t+\t\4\26\25\n\t\0K\b\33\2\3\5\r\v\0\3\v\t\r\v\b\1\v\31\v\2\f\v\0\33\t\0\5\t\v\t\v\b\t\f\4\n\b\3\1\t\x040\1\0!\0\4\5\4\t+\n\b\4\33\5\1\33\0\v\t\b\33\t\v\t\2\b\5\f\v\6\33\4\r\v\2\t\v\1\f\v\6\v\f\4\v\t\0\2\0\b\t\v\b\3\b\1\20\1\0\4\5\1P!\20\5\t\33\t\0\25\b\v\t\5\0\v\f\0\v\t\3\33\b+\t\5\t\33\t\4\5\t\v\t\v\t\r\b\t\v\t\3\b\n\3\2\0\2\0\3$\5\1E\4@\1\x001\0\3+\22\25\r\v\t\5\b\v\f\r\v\6\t\v\b\r\v\t\6\3\5+\t\3\5\t\33\t\r\v\f\r\t\r\4\3\1\22\0\2\x045\4\1\4\3\1`\x110#\t\33\t\2\1\5\b\v\t\5\b\v\t\r+\t\5\f\v\6\2\1\4\v\t\b\v\t\0\31\b\r+\34\33\f\r\1"\1P\2P\1\xf0\0\4\3\2\3\t\33\t\6\5\r\v\t\5\b\v\r\b\33\t\4\5\t\v\t\f\t\0\n\t\r\31\r\34\xab\1\f\r\1B\xb0\1\21\20\21\0\3\5\22\4\t+\b\4\v\n\4\f\v\35\v\t\f\r\5\t+\t\r\b\f\v\34\xfb\1\f\4\0\22\0\2\xa0\1\1\0\1\0\21\0\1\5\1\2\4\5\b\t\33\b\v\t\2\t\v\b\r\v\b\f\v\r\b\t\30\f\xfb\2\f\3\22\xf0\1\21\20\25\22\25\b\33\a\33\t\33\0\t\n\r\34\v\r\f\xcb\3\4\22\xe0\1!\0\3\5\t\6\1\4\t\33\30+\t\r\b\r\f\v\f;L\33\f\xcb\2\r\22\xd0\1!\0\1\4\33\31\33\t\4\r\b\t\b\r\v\34\v\f\33\f\v\f\v\t\nN\37\27\32\t\xeb\1\r\0\2\xc0\x011\0\1\t;\n\0,\r\\\v\34\v\t\36o\16\a\0\37\a\37\n\xdb\1\r\22\0\2\x90\1a\30\t\b\4\r\vl\v,\n\16\37.\17\36\a\36\a\17\16\a\16\a\16\37\16\t\xbb\1\r\22\x80\1\1\0\xf1\0\3\2\4\r\v\x8c\1\v\t\16\17N\17W\b\4\25\b\16\27/\16\xbb\1\4\22\x90\1a\0\2\1\r\xac\1n\37\a\b\24\xf5\0\4\36\27/\t\xab\1\4\2\0\2\xf0\0\1\x131\20\4\x9c\1\v\16\17\a>\37\a\x84\1E\b\'/\n\x9b\1\f\1\22\xf0\0S\1\0\4\x9c\1\t\36\a>\37\b\5\4\b\4%\24\xf5\0\'/\16\x9b\1\f\22\0\2\0\x020S\0\1\r\x8c\1\t\36\a>\37\b\5\24%\4\r\4e\a\16\17\b\16?\16\x9b\1\4\2\20\2@\x013\21\4\x8c\1\t\16\27\36\a.\b\24%\4\30\r\xf5\0\b\37\a_\16\x8b\1\f\0\22 \2\20\3\1#\0\3\x9c\1W.\a\b\r\25\4(\xf5\0\4\27\37\36_\n\x8b\1\4"P\1\3!\4\x8c\1\n7N\30\24(\r\xf5\0\4\30\25\6\16\xff\0\t\xfb\0\f\x002 \1\0\23\1\3\x8c\1\t\16G\36\a(\48\xe5\1\16\x8f\1\x8b\1\x042\20\2!\3\1\4\x8c\1\27\n\'\36\a\b\0\b\4(\r\xa5\1\a\16\27\b\16\x8f\1\n\xfb\0\fB\20\21\3\1\3\r\xfc\0\bW\16\a\24\25\4\25\4e\4\b\r\5\b\17\6\5\16\27\36\37\a\16?\x8b\1\3R\1\23\1\4\r\xfc\0W\16\a\xc5\1\4\b\27\36\25\37\5\4\30\24\r\b\16\27/\n\xfb\0\r"\0\22\23\1\0\4l\r\t\27\n7\b\xb5\1\4\n\a\b\a\t\4\25\b\17\a\4\0\a5\b\37\a/\xfb\0\fR\1#\r\xfc\0\x87\1$e\24\25\t\r%\b\4\b\37\b\r\16\5\4\25\16\17\b\a/\n\xfb\0\1B#\4\r,\r<W(P\b\2\4\t\n\16\b\r\n\t\4\t\27\16\b\a\17\b\16\r%\36\3\b?\16\xfb\0\rB\1\3\1\4\xfc\0\tG(\0\1\20\3\b\16\6\2\4\t\36\31\16\t\4\t\n\16\17\t\b\17\16\a\25\4\17\a\4\5\a\17\36\37\16\n\tK\rB\23\1\4\xfc\0\b\xf7\0\1\0\1\4\a\16\n\22\0\f\16\17\16\31\r\4\n\16\17\16\r\a\17\30\5\4\17\b\5\0\16/\36O\16\n\33\fB#\4\f\r\\g\16\a\0\2\0\a.\6\22\b\n\16\4\t\16\32\35\16\t\5\a\17\4\5\4\a\r\5\a\16\30\3@\30\27\37\n\f\x032\1\3\1\4L\r\34g\16\a\2\4\a\17\16\37\a\22\b\n\t\5\t\16\n\f\24\16\n\4\b\17\24\a\4\5\a\b\23"&"\20\4\a\16\17\a\0\1\22#\4\34\rLg\16\2\1\b\16?\16\1\20\n\r\24%\4\5\b\t\b\17\a\5\6\5\4\0\4\0\26\2\26"6\22\0\4\b\37\a\1\0#\r\f\rL\r\xf7\0\0\4\t\16\n\16\37\b\a\23\t\n\5\r\t\r)\24\37\5\2\24\21\26\22\1\4\5\4\b\4\5\4\0\26\2\26\0\5\b\37\6#\rl\tg\b\0\4\r\n.\27\16\b\4\5\36\r\f)\35\37\4\3\0\4\1\2\6\2\3\4\5\4\b\r\b\a\36\4\25\0\6\22\26\3\5\16\17\23\24\34\r<\tg\b\0\3\r\t\n\16\27\17\6\t\16\30\16\t\a\16\a\t\5\37\4\5\1\3\0\22\4\5\30\n>\n\r\a\17\a\25\4\x026\0\4\a#\r\f\rL\rg\b\0\3\b)\a\37\a\5\n\36\b\16/\16\b\17\4\5\3\0\4\20\b\r\27\n/\16\37\16\5\a\37\4\25\3\2\6\2\6\2\4#\r\xfc\0W\30\0\4\0\31\r/\b\r\n\t\n\a\31\r\t\r\30\5\4\t>\27\17\t\16?\16\37\16\r\b\x1f5\0\2&#\4\\\r\fg\b\0\3\4\31\b/\b\t:\31\bE\4\32\36\27\17\b\t\36o\16\r\b\17\a5\2&\23\1\4\xfc\0W\30\0\4\t\35\a/\b\t\32\16\32\16\17\a5\t\32\16\n\a\37\r\t\36\xff\0\n\5\16\17E\0\26\0\3\1\5\xfc\0g\b\4\31\35\a/\b\t\32\36\n>\b\n\37\16\17\16\a\37\a\t\32\36o\16\t\b\17\aE\0\6\23\1\4\rl\tG\30\t\r\b\r\4\a/\a\t\32\36\37\32\36\17\36\37\36\37\6\t\n\t\n\36_\16\t\4\37U\0\23\1\3\r\xfc\x007\24\16\17\4\5\r\4\a/\a\r\32\16\n\17\16*^\a/\31\n\t\n\36_\16\n\4\a\17\bU\23\21\r\xfc\0\'\4\r\16\37\n\25\rO\b\t*\16\n\t\32.\17\16\n\16\37\16\b*\t\n\36O\16\n\r\b\17\aU#\1\4\xfc\0\t\a\0\5\16\37\n\16\b\25O\a\r\t\32\16\31\32N\a/\aZ\16_\16\n\b\4\17\aU\3!\4\rl\r\b\5\t\16\17\16\n\16\n\4\5\16O\b\t\32\16\b\r\t\n\16*\a?\a\n\16*N/\16\n\t\5\36U\23\21\3\r\\\35\5\b\16\37\n\16\32\r\5\a_\b\t\32\35\t*\a\16O\a\n.\n\16\nn\n\b\5\16\17U3\1\4L\35\25\t\37\16*\t\r\5\b_\16)\4\r9\16_\a\xde\1\t\b\5\16\17\bE3\1\3\r,-\5\4\n\37.\n\30\5\0o\16\a\b\4(\a\xff\0\a\16?\x8e\1\t\5\b/E3\1\3\5\f=\25\b\37\32\17\16\b\r\b\4\5\a\xff\0\36\xbf\1\a\16\37\x9e\1\n\t\4?\x0e5\x013\1\3\r\f\35\25\4\b\a\16\t\36\t\4\r\b\4\5\b\16_\16\t\f\t\16\x9f\1\27.\t\5\n^\17\16\t\a?\4%#1\4\f\r\4\a\24(\a\32\b-\4\b\4\b\36/\t\f-\v\n\x8f\1\a\b\32\r\25\n\16o\16\r\16/\a%#\1\23\1\3\25\a\17\16\b\17\a\5\b\t\b\35\5\4\0\b$\27\16\a\f\4\6\17\0\4\f\16\x8f\1\a\b\24\5\4\n\36_\16\t\4?%3\1\23\4\5\r\b\16\n\16\b\5\4\5\0\r\bD\3\30\4\b\a\b\35\0\2\b\0\r\t\xff\0\36\a\35\5\4\n.O\16\n\r\b/\4\25S\5\r\n\b\5\b\32\4\5\4\5\24\r\30\0$\b\16\a\30\4\5\b\4\5\1\a\5\4\x8f\1\'\b\4\5\n.O\36\r\4/\4\25\23\1\3\4\5\4\36\30\32\16\b\4%,\30\0\1\4\16\17\a\37\a\r\b\6\3\b\a\r\4\b\a?.\a\b\4%\bN/\16\n\35/\4\x153\4\5\n\17.\n\4\n\b%\r,\35$\16\17\16\a\37\v\f\0\a\b\f\v\t\a(\6\27\bD%\tn\n\t\r\b/\4\25\1\3\4\25\4\36\n\t\n\31\4\5\r\5\r,\35%\4?\16\17\t\f\33\f\v\t/\a\6\30\27\6\30\a\b\5\4\25\b*\16\32\t\30\r\16\37\a\25\3\24%\4\35(\16\t\4\r\4\r\34-%\bo\b\t\f\t\a\x9f\1.\6\b\a\b\5\24I\35\b\t\r\b\17\27\25\23\x045\n.\n\b\n\t\4\35\34-%\4\xff\2\a\b\17\b\5\4\b\4\5\r\b\r()\r\b\17\16\b\5\3U\n\a-\n\16-,-%\0\16\a\16\xbf\2\16\a\17\b\5\a\6\4%\4=\t\n)\b\37\5\3\24U*\t\b\n\b\5\34-\4%\3\b\27\16\x9f\2\a\16\17\b\5\a\17\b\5\24\25\b\r\t\36\37\16\n\r\a\17\b\23\24E\t\n\t\4\r\t\23\5\34\x1d5\4\1\'\16\x8f\2\6\17\a\5\a\16\b\4\b\r%\t\36O\16\n\r\16\a\23\4\xf5\0\r\t\r\4\3\21\4-5\3\2\1\a\b\a\16\xef\1\a\17\a\5\27\b\4\30\25\4\b.O\16\n\4\b\16#\4U\24S\1\3e\2\1\20\b\17\16\xdf\1\36\r(\0\2\r\5\3\4\b\36_\16\32\r\b\a#\4E\24\x93\1\4E\6\2\3\2\0\a\xdf\1\16\a \21\2\23\0\3\b._\32\t\4\a\6C\4\25\4\xf3\0\21\23\x145\a\6\1\3\0\1F\a\17\16\a&\2\20\1\20\3\r\6\2\3\2\0\4\n\36O\16\32\t\b\5\a\b\3\4\3\21\xf3\1\4E\4\17\6\1\3\0\1\x101\0\22 B\27\2 \5\b\36\37\16\37\16\32\31\4\r\4\5\3\24\3\1\xf3\1\24E\a\17\a\2\0B\0b\6\2&\2\6\2\0\3\4\5\t\16/.*\30\4\r\25#\4\xe3\1\1\3\4e\16\37\a\6\x92\1\6 B\a$\b\36\17>\32\t\n\t\24%\xc3\2\24U\r\n\37\16\a\6b\b^\b\6\30\0\24^\a\32)\r\b5#\21\x83\2\24U\f\t\16?\aF\16\t\n\36\n\16\n\4\6(\n\37.*\b\31\30\x045\xb3\2\1\23\4E-\f\t\16o\32\35\31\32\17\a\4\0\b\32\a.*)\4\b\4E#\4\xf3\1\1\23\x045\4\b\35\4\r\f\n\16?\t\r\31%\t\n\36\31\n\r\b\32\16*\b\31\r\b\4U\xe3\2\24%\b\17\a=\f\v\n\36\37\b\n\t\r\25\t\16\17>\17\b\t\16\32\t(\r\b\4e\1\xe3\2\4%\6\a\17\b-,\33\t\n\t\n\36*/\36\17\16\n\b\n\30\35\30\4\x85\1\xe3\2\4%\a\17\27\17\4\a\35<\v\f\n\r\16/\16\17N\n\31\a\b\35\b\4\xa5\1\3\1\xb3\2\24\25\a/\b\16\a\b\a\6\b\r,\r\b\n\r\nn*\t\30\a\b\xd5\1\1\xd3\2\25\aO\b\16\30\a\36\a\t\f\35\t\n\r\32\16Z\t\30\27\xe5\1S\4\xa3\1\21\3\4\25\a_\a\b\17\a\b\16?\a\35\t\n\r\a\tJ\31\r\24\xf5\1\x83\2\21\24\25\a_\a\17\b\a\17\27\17\b\a\37-\t\n\t\32\t\b\35\24\xa5\2C\24\x83\1\1\3\4\3\4\5\bo\a\6\a\4\37\16\'\b\36\35)\r\24\xf5\2\3\x043\4\x93\1\4\5\b\24o\36\27\30\37\'\0\27\16\4\35$\r\26H\r\24\25\4\5\4\x85\1\xd3\1\1\3\24\b\4\5o\16\17\27\b\a\4\a\37\27\16\a\30\a\b\4\b7h\r4\5\4\x85\1\3\4\xc3\1\4\5\4\b\5\a\17\16?>\27\b\r\4\a\16/\a\5\b\17\b\a\17\a\xa8\1\r\24\5\24\x85\1\3\4\xc3\1\4%\ao\16\17\x0e7\b\4\b\x0e7\5\a\b\a\16\b\4\b\'\36\27\6(\r\24\30\x85\1'
)

Choix ici aussi bien dosé, l'affichage de
Super Dupont
semble toujours correct en 16 couleurs.

Voilà, si tu es sur une des plateformes aux mémoire de stockage et
heap
limités, et si tu juges le script converti par défaut trop gros relativement à la complexité de l'image que tu as fournie, c'est très probablement qu'il y a surabondance de couleurs et il te suffira tout simplement d'en réduire le nombre maximal.

Un gros merci à , et qui ont rendu cette mise à jour possible ! :favorite:


Liens
:


CEleste classic/Pico-8, porté sur ta TI-83 Premium CE

New postby critor » 25 Jan 2022, 21:02

1146310913Nombre de jeux sortant pour smartphones, tablettes, ordinateurs et consoles de jeux, se retrouvent plusieurs années plus tard disponibles sur calculatrices graphiques.

Parlons aujourd'hui
TI-83 Premium CE
(ou
TI-84 Plus CE
pour nos lecteurs internationaux)
.

La calculatrice permet de jouer directement à l'ensemble des jeux compatibles avec la console
Nintendo Game Boy
monochrome
(
1989
)
, grâce à l'émulateur dédié
TI-Boy CE
par .

Pour les consoles de jeux et plus généralement plateformes ne disposant pas encore d'un émulateur dédié sur
TI-83 Premium CE
, les jeux doivent être adaptés au cas par cas. Parmi ces adaptations souvent très réussies de jeux sortis pour d'autres plateformes, on peut citer de façon absolument pas exhaustive :
  • (d'après
    Space Invaders
    sur bornes d'arcade -
    1978
    )
  • (d'après le jeu sur bornes d'arcade -
    1980
    )
  • (d'après le jeu sur bornes d'arcade -
    1981
    )
  • (d'après
    Tetris
    -
    1984
    )
  • (d'après le jeu sur microordinateurs
    Thomson
    -
    1985
    )
  • (d'après le jeu sur microordinateurs
    Thomson
    -
    1985
    )
  • (d'après le jeu sur console
    Sega Master System
    -
    1986
    )
  • (d'après
    Arkanoid
    sur bornes d'arcade -
    1986
    )
  • (d'après
    Super Mario Bros 3
    sur console
    Nintendo NES
    -
    1988
    )
  • (d'après le jeu sur console
    Nintendo Super NES
    -
    1992
    )
  • (d'après
    Portal
    -
    2007
    )
  • (d'après le jeu sur microordinateurs
    Thomson
    -
    2010
    )
  • (d'après le jeu mobile -
    2013
    )
  • (d'après le jeu mobile -
    2013
    )
659753328548589762226264632965687698137475329656668887581

Il existe même des consoles de jeux sans aucun émulateur associé, parmi elles les plus récentes ou encore les plus exotiques à la diffusion confidentielle.

Mais inversement, savais-tu qu'il existait également des émulateurs sans console associée ? ;)

La
Pico-8
par exemple, à ne surtout pas confondre avec la console
Sega Pico
, est une console de jeux rétro imaginaire. C'est-à-dire qu'elle est initialement sortie sous la forme d'un émulateur. Il s'agit donc à l'origine d'une machine virtuelle pouvant être installée sur nombre de plateformes, avec ses propres limitations censées stimuler le développement de jeux.

Ecran de
128×128
pixels en
16
couleurs, voilà qui est largement dans les capacités de nos calculatrices, n'est-ce pas ?... ;)

15132Et bien justement, aujourd'hui voici donc
CEleste
, l'un des jeux de plateformes les plus emblématiques de la
Pico-8
, initialement dévelopé par
Noel Berry
et
Maddy Thorson
lors d'une
game jam
de 4 jours en
2015
, enfin porté pour
TI-83 Premium CE
et
TI-84 Plus CE
! :bj:

Une performance absolument remarquable par , le jeu tournant à près de 30fps sans avoir à rien sacrifier de l'original, même pas le fond d'écran animé ! :bj:

Tu y incarnes donc
Madeline
, une jeune femme souhaitant gravir le
Mont Celeste
, une montagne de 2041 mètres située sur l'Île de Vancouver dans l'ouest canadien. À la différence qu'ici la montagne fait 3100 mètres, et que ton ascension sera ainsi découpée en 32 tableaux très exigeants de 100 mètres de dénivelé chacun. Mais pas de
game over
à craindre ici, chaque chute te ramenant simplement au début du tableau en cours.

Madeline
peut donc sauter
(touche
2nde
)
y compris sur les murs verticaux et possède une autre capacité spéciale : une fois en l'air elle peut effectuer un
dash
(touche
alpha
)
dans l'une des 8 directions à indiquer avec les 4 touches fléchées, de quoi gagner en vitesse et atteindre des zones non accessibles avec un saut normal. Au début du jeu ce mouvement remaquable ne peut être effectué qu'une seule fois par saut ;
Madeline
aura besoin d'atterrir au sol pour recharger cette capacité, sauf à trouver des cristaux verts flottants qui permettront directement de le faire en vol.

Attention,
CEleste
rentre dans la catégorie des programmes en langage machine dits
ASM
.

Or, suite à un acte irresponsable d'un enseignant de Mathématiques français avec ses gesticulations aveugles dans le contexte de la réforme du lycée,
Texas Instruments
a réagi en supprimant la gestion de tels programmes depuis la mise à jour
5.5.1
.

Si tu es sur une des versions ainsi bridées, tu peux quand même jouer sans trop d'efforts. Il te faut :
  1. installer
    arTIfiCE
    pour remettre la possibilité de lancer des programmes
    ASM
  2. ensuite de préférence installer
    Cesium
    pour pouvoir lancer les programmes
    ASM
    plus facilement, ou même
    AsmHook
    pour pouvoir les lancer comme avant
  3. installer les bibliothèques
    C
    nécessaires au fonctionnement de certains jeux dont celui-ci
    (mais rien de compliqué, juste à transférer le fichier et c'est tout)

Téléchargements
:

Code source
:
https://github.com/commandblockguy/CEleste

Crafti, clone Minecraft TI-Nspire, porté sur Nintendo 64

New postby critor » 25 Jan 2022, 10:25

Depuis plusieurs années, est le principal dévelopeur de , le
jailbreak
te permettant de lancer du code machine tiers sur les
TI-Nspire
.

Pour la rentrée 2015 justement
Vogtinator
t'avait sorti
Crafti
, un très impressionnant clone de
Minecraft
pour les
TI-Nspire
capables d'exploiter le
jailbreak
Ndless
.

Te souviens-tu également de notre cher et très prolifique ? Il t'avait porté des émulateurs de consoles de jeux par 10aines pour
TI-Nspire CX
et
Ndless
, t'ouvrant ainsi la porte à plusieurs milliers de jeux sur ta calculatrice ! :favorite:

De façon générale, nombre de jeux pour nos calculatrices sont des adaptations ou portages de jeux sortis pour ordinateurs et consoles plusieurs années auparavant.

En janvier 2017,
gameblabla
innovait en nous emmenant hors des sentiers battus, réalisant en effet exactement le contraire : des portages de
Crafti
pour la console de jeux
Sega Dreamcast
, ainsi que pour les bornes d'arcade
Sega Naomi
car utilisant un matériel très similaire.

En ce mois de janvier 2021 pour fêter les 4 ans de son exploit,
gameblabla
récidive. Comme nous t'en informions déjà dans deux actualités précédentes, il vient en effet de réaliser de nouveaux portages de
Crafti
pour les consoles de jeux
Microsoft Xbox
et
Sony Playstation 2
.

Et bien ce n'est pas fini. Aujourd'hui
gameblabla
multirécidive, nous signant cette fois-ci un portage de
Crafti
pour la console de jeux
Nintendo 64
! :D

Ndless
ayant hélas visiblement cessé d'être adapté aux nouvelles mises à jour
TI-Nspire CX
depuis bientôt une année, retrouve donc maintenant également sur ta
Nintendo 64
les meilleurs délices des
TI-Nspire CX Ndlessées
:

Téléchargements
:


Nouvel emballage carton TI-Nspire CX II-T CAS pour l'Europe

New postby critor » 24 Jan 2022, 13:36

14115Comme nous te l'avons déjà annoncé pour cette année scolaire 2021-2022, l'ensemble de la gamme
Texas Instruments
passe progressivement aux emballages carton. Fini les emballages historiques à coque blister rigide très difficiles à ouvrir proprement, quasiment impossibles à réutiliser une fois ouverts, pénibles et encombrants à ranger, et n'ayant donc dans la plupart des cas que la poubelle comme seule destination possible après ouverture ! :bj:

À ce sujet nous t'avons déjà présenté les nouveaux emballages :
150591399414124

1412014117Pour cette année 2021-2022 tu peux donc encore te retrouver en rayon avec un même modèle de calculatrice à la fois sous emballage carton et blister, exactement au même prix puisque utilisant le même code barre.

Rappelons que pour les
TI-83 Premium CE Edition Python
il est dans ton intérêt de choisir l'emballage carton, et pas seulement pour l'écologie et la planète.

En effet, grande nouveauté de la rentrée 2021, pour le même prix le nouvel emballage carton a l'avantage exclusif d'intégrer également le logiciel d'émulation sous la forme d'une licence d'utilisation de 3 ans, ce qui n'est pas le cas des anciens emballages
blister
. :#non#:

Aujourd'hui, vient enfin de nous dénicher des images du nouvel emballage carton
TI-Nspire CX II-T CAS
.

Ici il s'agit d'un modèle distribué dans l'ensemble de l'Europe et son emballage non spécifique à la France est visiblement unique,
Texas Instruments
ayant en effet fait le choix du multilingue. On ne manque apparemment pas de polyglottes chez
Texas Instruments
, pas moins de 8 lignes avec dans l'ordre :
  • Allemand
  • Finlandais
  • Suédois
  • Italien
  • Anglais
  • Français
  • Espagnol
  • Néerlandais
Le dos de l'emballage met en avant les fonctionnalités du logiciel de Mathématiques intégré
TI-Nspire
et entre autres son langage de programmation
Python
, à ce jour hélas sans aucune concurrence sérieuse parmi le haut de gamme.

Source
:
viewtopic.php?f=49&t=25097&p=266147#p266147

TI-84 translucide avec éclairage écran par BigMC-OG

New postby critor » 24 Jan 2022, 09:36

Texas Instruments
a un temps produit des calculatrices graphiques translucides permettant plus ou moins de voir l'intérieur sans avoir à les ouvrir. À la fois une réussite esthétique et un bijou pour les esprits les plus curieux. On peut citer en ce sens la très éphémère
TI-83 Plus Silver Edition
sortie pour la rentrée 2001. :favorite:
Il s'agissait d'une version avancée de la
TI-83 Plus
de la rentrée 1999, avec :
  • processeur qui passe de
    6 MHz
    à
    15 MHz
  • puce
    Flash
    qui passe de
    512 Kio
    à
    2 Mio
  • dont la mémoire de stockage qui passe de
    160 Kio
    à
    1,5 Mio
  • mémoire
    RAM
    qui passe de
    32 Kio
    à
    128 Kio
872Hélas la superbe
TI-83 Plus Silver Edition
fut arrêtée dès la rentrée 2004 afin de faire de la place pour la sortie des
TI-84 Plus
et
TI-84 Plus Silver Edition
. Et ici pas de boîtier translucide, même la version
Silver Edition
ne s'habillant que de tons de gris totalement opaques.


Toutefois, pour la rentrée 2008 an Amérique du Nord, la chaîne de grande distribution
Wal-Mart
a commercialisé une édition limitée translucide de la
TI-84 Plus
, devenue absolument
collector
de nos jours.

6538Sur un autre sujet, quand on est habitué aux calculatrices
TI-82/83/84
monochromes, on ne peut que tomber amoureux de l'écran éclairé des
Casio Graph 75/95
sorties pour la rentrée 2009, une capacité reprise pour la
Graph 75+E
de la rentrée 2015. :favorite:
Hélas la
Graph 75+E
fut arrêtée pour la rentrée 2017. L'actuelle
Graph 35+E II
sortie pour la rentrée 2019 qui en reprend et fait évoluer le matériel, n'a hélas pas retenu cette capacité.


151311513015129Et bien aujourd'hui te propose de fusionner le meilleur des deux mondes ! :favorite:

Il a en effet modifié sa version translucide
collector
de la
TI-84 Plus
, afin de lui rajouter un éclairage de l'écran. Une modification très bien réussie permettant une lisibilité remarquable, et qui est ici du plus bel effet avec le boîtier translucide !

Rappelons que ta
TI-82 Advanced
monochrome utilise le même boîtier, et que tu peux donc toi aussi t'amuser à l'améliorer de façon similaire. Nous avons hâte de voir ça... ;)

Crédits images
:


Google doodle Pony Express adapté pour TI-83 Premium CE

New postby critor » 21 Jan 2022, 13:50

Apparu le 3 avril 1860, le
Pony Express
était un service d'acheminement rapide du courrier en Amérique du Nord, de la Californie au Missouri et vice-versa. Le courrier jusqu'alors acheminé par diligence avec la côte ouest pouvait prendre jusqu'à 6 mois, alors que l'acheminement par les cavaliers solitaires du
Pony Express
à travers les plaines asséchées de l'ouest à une vitesse moyenne de 16 km/h, réduisait le délai à seulement 10 à 11 jours. Rapidement supplanté par le télégraphe, il cessa toute activité le 24 octobre 1861. Malgré sa courte histoire de 18 mois le
Pony Express
, emblématique de la conquête de l'Ouest, fait partie intégrante de la culture populaire américaine.

Le 3 avril 2015, c'était le 155ème anniversaire du
Pony Express
et
Google
avait sorti un
doodle
tout spécialement dédié pour ses pages de recherche. Un clic sur le
doodle
activait un jeu te permettant de revivre l'aventure du
Pony Express
. À cheval sur ton propre destrier, tu te devrais de collecter 100 lettres à destination du Missouri, réparties à travers 3 niveaux couvrant tout l'ouest américain. Tu te devais d'éviter les nombreux obstacles et dangers
(rochers, cactus, clôtures, arbres, rivières, lacs, falaises, chutes de neige, voleurs, ... tout un programme)
. Pour cela les flèches haut et bas te permettaient à tout moment de choisir entre 6 chemins différents pour ta monture.

15124Et bien justement aujourd'hui
Candledark
se propose de faire revivre ce
doodle
dans ta calculatrice
TI-83 Premium CE
ou
TI-84 Plus CE
.

Son jeu
Pony Express CE
se veut être une adaptation du
doodle
de
Google
et est toujours en phase de développement mais est déjà parfaitement jouable et très fluide
(entre 30 et 40fps sur calculatrice)
, avec qui plus est des menus bilingues en Anglais et Français.

Le jeu est codé en langage
C
puis compilé en langage machine pour ta calculatrice.

Attention,
Pony Express CE
rentre dans la catégorie des programmes en langage machine dits
ASM
.

Or, suite à un acte irresponsable d'un enseignant de Mathématiques français avec ses gesticulations aveugles dans le contexte de la réforme du lycée,
Texas Instruments
a réagi en supprimant la gestion de tels programmes depuis la mise à jour
5.5.1
.

Si tu es sur une des versions ainsi bridées, tu peux quand même jouer sans trop d'efforts. Il te faut :
  1. installer
    arTIfiCE
    pour remettre la possibilité de lancer des programmes
    ASM
  2. ensuite de préférence installer
    Cesium
    pour pouvoir lancer les programmes
    ASM
    plus facilement, ou même
    AsmHook
    pour pouvoir les lancer comme avant
  3. installer les bibliothèques
    C
    nécessaires au fonctionnement de certains jeux dont celui-ci
    (mais rien de compliqué, juste à transférer le fichier et c'est tout)

Téléchargements
:


Liens
:


-
Search
-
Social
-
Featured topics
Concours de dessin de Noël 2021 Jusqu'au 31 janvier 2022 inclus par Casio. Dessine ta liste au Père Noël sur calculatrice/émulateur Graph 90/35+E II en Python ou fx-92+ Spéciale Collège. Ouvert aux élèves et enseignants, classement séparé. À gagner 2 consoles Nintendo Switch pour les élèves, 2 trottinettes électriques pour les enseignants, 10 calculatrices Graph 90/35+E II au choix, 72 montres Casio G-Shock ou Vintage. Pas de perdant, goodies Casio pour tous les autres !
Coque NumWorks édition limitée Janvier 2022 à gagner.
Comparaisons des meilleurs prix pour acheter sa calculatrice !
123
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
550 utilisateurs:
>516 invités
>28 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)

-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)