| 1 |
# -*- coding: utf-8 -*- |
|---|
| 2 |
################################################################################ |
|---|
| 3 |
# Copyright (C) 2007 Travis Shirk <travis@pobox.com> |
|---|
| 4 |
# |
|---|
| 5 |
# This program is free software; you can redistribute it and/or modify |
|---|
| 6 |
# it under the terms of the GNU General Public License as published by |
|---|
| 7 |
# the Free Software Foundation; either version 2 of the License, or |
|---|
| 8 |
# (at your option) any later version. |
|---|
| 9 |
# |
|---|
| 10 |
# This program is distributed in the hope that it will be useful, |
|---|
| 11 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|---|
| 12 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|---|
| 13 |
# GNU General Public License for more details. |
|---|
| 14 |
# |
|---|
| 15 |
# You should have received a copy of the GNU General Public License |
|---|
| 16 |
# along with this program; if not, write to the Free Software |
|---|
| 17 |
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|---|
| 18 |
# |
|---|
| 19 |
################################################################################ |
|---|
| 20 |
import urllib, time |
|---|
| 21 |
|
|---|
| 22 |
import ecs |
|---|
| 23 |
ecs.setLicenseKey('0XMTPCQ85ZMFF2PAT402') |
|---|
| 24 |
|
|---|
| 25 |
import mesk |
|---|
| 26 |
import mesk.plugin |
|---|
| 27 |
from mesk.i18n import _ |
|---|
| 28 |
from mesk.plugin.plugin import PluginInfo, Plugin |
|---|
| 29 |
from mesk.plugin.interfaces import MetaDataSearch |
|---|
| 30 |
|
|---|
| 31 |
def soundex(name, len=6): |
|---|
| 32 |
# digits holds the soundex values for the alphabet |
|---|
| 33 |
digits = '01230120022455012623010202' |
|---|
| 34 |
sndx = '' |
|---|
| 35 |
fc = '' |
|---|
| 36 |
|
|---|
| 37 |
# translate alpha chars in name to soundex digits |
|---|
| 38 |
for c in name.upper(): |
|---|
| 39 |
if c.isalpha(): |
|---|
| 40 |
if not fc: |
|---|
| 41 |
fc = c # remember first letter |
|---|
| 42 |
try: |
|---|
| 43 |
d = digits[ord(c)-ord('A')] |
|---|
| 44 |
except IndexError, ex: |
|---|
| 45 |
# Most likely c is not an ascii character |
|---|
| 46 |
mesk.log.warning("Invalid character '%s' (%x) in soundex " |
|---|
| 47 |
"algorithm, skipping" % (c, ord(c))) |
|---|
| 48 |
continue |
|---|
| 49 |
# duplicate consecutive soundex digits are skipped |
|---|
| 50 |
if not sndx or (d != sndx[-1]): |
|---|
| 51 |
sndx += d |
|---|
| 52 |
|
|---|
| 53 |
sndx = fc + sndx[1:] # replace first digit with first char |
|---|
| 54 |
sndx = sndx.replace('0','') # remove all 0s |
|---|
| 55 |
return (sndx + (len * '0'))[:len] # padded to len characters |
|---|
| 56 |
|
|---|
| 57 |
class AmazonAlbum(object): |
|---|
| 58 |
# Image sizes |
|---|
| 59 |
IMG_SMALL = 0x1; |
|---|
| 60 |
IMG_MEDIUM = 0x2; |
|---|
| 61 |
IMG_LARGE = 0x4; |
|---|
| 62 |
|
|---|
| 63 |
def __init__(self, bag): |
|---|
| 64 |
self.bag = bag; |
|---|
| 65 |
|
|---|
| 66 |
def get_title(self): |
|---|
| 67 |
return self.bag.ProductName.encode("utf-8"); |
|---|
| 68 |
|
|---|
| 69 |
def get_artists(self): |
|---|
| 70 |
try: |
|---|
| 71 |
if type(self.bag.Artists.Artist) is list: |
|---|
| 72 |
return [a.encode("utf-8") for a in self.bag.Artists.Artist] |
|---|
| 73 |
else: |
|---|
| 74 |
return [self.bag.Artists.Artist.encode("utf-8")] |
|---|
| 75 |
except AttributeError: |
|---|
| 76 |
return [] |
|---|
| 77 |
|
|---|
| 78 |
def get_release_date(self): |
|---|
| 79 |
if hasattr(self.bag, "ReleaseDate"): |
|---|
| 80 |
return self.bag.ReleaseDate.encode("utf-8"); |
|---|
| 81 |
else: |
|---|
| 82 |
return None; |
|---|
| 83 |
|
|---|
| 84 |
def get_label(self): |
|---|
| 85 |
if hasattr(self.bag, "Manufacturer"): |
|---|
| 86 |
return self.bag.Manufacturer.encode("utf-8"); |
|---|
| 87 |
else: |
|---|
| 88 |
return None; |
|---|
| 89 |
|
|---|
| 90 |
def get_num_tracks(self): |
|---|
| 91 |
t = self.get_tracks(); |
|---|
| 92 |
if t: |
|---|
| 93 |
return len(t); |
|---|
| 94 |
else: |
|---|
| 95 |
return 0; |
|---|
| 96 |
|
|---|
| 97 |
def get_tracks(self): |
|---|
| 98 |
if hasattr(self.bag, "Tracks"): |
|---|
| 99 |
tracks = []; |
|---|
| 100 |
for t in self.bag.Tracks.Track: |
|---|
| 101 |
tracks.append(t.encode("utf-8")); |
|---|
| 102 |
return tracks; |
|---|
| 103 |
else: |
|---|
| 104 |
return None; |
|---|
| 105 |
|
|---|
| 106 |
def get_img_url(self, size): |
|---|
| 107 |
if size == self.IMG_SMALL and hasattr(self.bag, "ImageUrlSmall"): |
|---|
| 108 |
return self.bag.ImageUrlSmall.encode("utf-8"); |
|---|
| 109 |
elif size == self.IMG_MEDIUM and hasattr(self.bag, "ImageUrlMedium"): |
|---|
| 110 |
return self.bag.ImageUrlMedium.encode("utf-8"); |
|---|
| 111 |
elif size == self.IMG_LARGE and hasattr(self.bag, "ImageUrlLarge"): |
|---|
| 112 |
return self.bag.ImageUrlLarge.encode("utf-8"); |
|---|
| 113 |
else: |
|---|
| 114 |
return None; |
|---|
| 115 |
|
|---|
| 116 |
def get_amazon_url(self): |
|---|
| 117 |
return self.bag.URL.encode("utf-8"); |
|---|
| 118 |
|
|---|
| 119 |
def get_amazon_price(self): |
|---|
| 120 |
try: |
|---|
| 121 |
return self.bag.OurPrice.encode("utf-8"); |
|---|
| 122 |
except AttributeError: |
|---|
| 123 |
return None; |
|---|
| 124 |
|
|---|
| 125 |
def get_used_price(self): |
|---|
| 126 |
if hasattr(self.bag, "UsedPrice"): |
|---|
| 127 |
return self.bag.UsedPrice.encode("utf-8"); |
|---|
| 128 |
else: |
|---|
| 129 |
return None; |
|---|
| 130 |
|
|---|
| 131 |
def __str__(self): |
|---|
| 132 |
s = ""; |
|---|
| 133 |
s += "\nTitle: %s" % self.get_title(); |
|---|
| 134 |
s += "\nArtists:\n" |
|---|
| 135 |
for a in self.get_artists(): |
|---|
| 136 |
s += "\t%s\n" % a |
|---|
| 137 |
|
|---|
| 138 |
s += "\nRelease Date: %s" % self.get_release_date(); |
|---|
| 139 |
s += "\nLabel: %s" % self.get_label(); |
|---|
| 140 |
s += "\nTracks:" |
|---|
| 141 |
c = 1; |
|---|
| 142 |
n = self.get_num_tracks(); |
|---|
| 143 |
tracks = self.get_tracks(); |
|---|
| 144 |
if tracks: |
|---|
| 145 |
for t in tracks: |
|---|
| 146 |
s += "\n\t(%d/%d) %s" % (c, n, t) |
|---|
| 147 |
c += 1; |
|---|
| 148 |
else: |
|---|
| 149 |
s += "\nNo tracks! :("; |
|---|
| 150 |
s += "\nImage URL (Large): %s" % self.get_img_url(self.IMG_LARGE); |
|---|
| 151 |
s += "\nImage URL (Medium): %s" % self.get_img_url(self.IMG_MEDIUM); |
|---|
| 152 |
s += "\nImage URL (Small): %s" % self.get_img_url(self.IMG_SMALL); |
|---|
| 153 |
s += "\nAmazon Price: %s" % self.get_amazon_price(); |
|---|
| 154 |
s += "\nUsed Price: %s" % self.get_used_price(); |
|---|
| 155 |
s += "\nSee Amazon: %s" % self.get_amazon_url(); |
|---|
| 156 |
# XXX: There is a lot of other stuff in the amazon search result. |
|---|
| 157 |
# See the README |
|---|
| 158 |
return s; |
|---|
| 159 |
|
|---|
| 160 |
|
|---|
| 161 |
MAX_SEARCH_RESULTS = 25 |
|---|
| 162 |
MAX_CACHE_SIZE = 8 |
|---|
| 163 |
class AlbumArtPlugin(Plugin, MetaDataSearch): |
|---|
| 164 |
def __init__(self): |
|---|
| 165 |
Plugin.__init__(self, PLUGIN_INFO) |
|---|
| 166 |
MetaDataSearch.__init__(self, MetaDataSearch.CAP_ALBUM_ART) |
|---|
| 167 |
self._cache = {} # query: (last_time, {cap: img}) |
|---|
| 168 |
|
|---|
| 169 |
def plugin_metadata_search(self, artist, album, track): |
|---|
| 170 |
artist = artist.lower() |
|---|
| 171 |
artist_soundex = soundex(artist) |
|---|
| 172 |
query = artist.encode('utf-8') |
|---|
| 173 |
|
|---|
| 174 |
if album: |
|---|
| 175 |
album = album.lower() |
|---|
| 176 |
query += ' %s ' % album.encode('utf-8') |
|---|
| 177 |
album_soundex = soundex(album) |
|---|
| 178 |
|
|---|
| 179 |
# Check cache |
|---|
| 180 |
if self._cache.has_key(query): |
|---|
| 181 |
self.log.debug("Returning cached album cover: %s" % query) |
|---|
| 182 |
retval = self._cache[query][1] |
|---|
| 183 |
retval[0] = time.time() |
|---|
| 184 |
self._cache[query] = (time.time(), retval) |
|---|
| 185 |
return retval |
|---|
| 186 |
|
|---|
| 187 |
self.log.debug("Searching amazon.com: %s" % query) |
|---|
| 188 |
results = amazon.OnDemandAmazonList(amazon.searchByKeyword, |
|---|
| 189 |
{'keyword': query, |
|---|
| 190 |
'product_line': 'music'}) |
|---|
| 191 |
search_match = None |
|---|
| 192 |
search_fuzzy_matches = {} |
|---|
| 193 |
|
|---|
| 194 |
result_count = 0 |
|---|
| 195 |
for result in results: |
|---|
| 196 |
if search_match: |
|---|
| 197 |
# Found a match, bail |
|---|
| 198 |
break |
|---|
| 199 |
|
|---|
| 200 |
result_count += 1 |
|---|
| 201 |
if result_count > MAX_SEARCH_RESULTS: |
|---|
| 202 |
# Stop looking, there could be hundreds and each batch hits the |
|---|
| 203 |
# network |
|---|
| 204 |
self.log.verbose("No album cover found for artist: %s," |
|---|
| 205 |
"album: %s" % |
|---|
| 206 |
(artist, album)) |
|---|
| 207 |
break |
|---|
| 208 |
|
|---|
| 209 |
amazon_album = AmazonAlbum(result) |
|---|
| 210 |
self.log.debug("Amazon result:\n%s" % str(amazon_album)) |
|---|
| 211 |
|
|---|
| 212 |
am_artists = amazon_album.get_artists() |
|---|
| 213 |
am_artists = [a.lower() for a in am_artists] |
|---|
| 214 |
am_album = amazon_album.get_title().lower() |
|---|
| 215 |
|
|---|
| 216 |
if artist in am_artists and album == am_album: |
|---|
| 217 |
# Definite match |
|---|
| 218 |
self.log.debug("albumart found exact match") |
|---|
| 219 |
search_match = amazon_album |
|---|
| 220 |
else: |
|---|
| 221 |
# Fuzzy matching results go into an ordered list |
|---|
| 222 |
|
|---|
| 223 |
# Compare soundex values and insert fuzzy matches in priority |
|---|
| 224 |
# order |
|---|
| 225 |
am_artist_soundex = [soundex(a) for a in am_artists] |
|---|
| 226 |
am_album_soundex = soundex(am_album) |
|---|
| 227 |
if (artist_soundex in am_artist_soundex and |
|---|
| 228 |
album == am_album): |
|---|
| 229 |
self.log.debug("amazon artist soundex AND album match") |
|---|
| 230 |
search_fuzzy_matches[1] = amazon_album |
|---|
| 231 |
elif (artist in am_artists and |
|---|
| 232 |
album_soundex == am_album_soundex): |
|---|
| 233 |
self.log.debug("amazon artist match AND album soundex") |
|---|
| 234 |
search_fuzzy_matches[2] = amazon_album |
|---|
| 235 |
elif (artist_soundex in am_artist_soundex and |
|---|
| 236 |
album_soundex == am_album_soundex): |
|---|
| 237 |
self.log.debug("amazon artist soundex AND album soundex") |
|---|
| 238 |
search_fuzzy_matches[3] = amazon_album |
|---|
| 239 |
found = True |
|---|
| 240 |
elif (artist_soundex in am_artist_soundex) or \ |
|---|
| 241 |
(album_soundex == am_album_soundex): |
|---|
| 242 |
self.log.debug("amazon artist soundex OR album soundex") |
|---|
| 243 |
search_fuzzy_matches[4] = amazon_album |
|---|
| 244 |
else: |
|---|
| 245 |
continue |
|---|
| 246 |
|
|---|
| 247 |
if not search_match and search_fuzzy_matches: |
|---|
| 248 |
# No exact match, use highest prority fuzzy result |
|---|
| 249 |
keys = search_fuzzy_matches.keys() |
|---|
| 250 |
keys.sort() |
|---|
| 251 |
search_match = search_fuzzy_matches[keys[0]] |
|---|
| 252 |
|
|---|
| 253 |
cover_image = None |
|---|
| 254 |
if search_match: |
|---|
| 255 |
for url in [search_match.get_img_url(AmazonAlbum.IMG_LARGE), |
|---|
| 256 |
search_match.get_img_url(AmazonAlbum.IMG_MEDIUM), |
|---|
| 257 |
search_match.get_img_url(AmazonAlbum.IMG_SMALL)]: |
|---|
| 258 |
img = self._fetch_image(url) |
|---|
| 259 |
if img and len(img) == 807: |
|---|
| 260 |
# 807 is the size of an empty image result from amazon |
|---|
| 261 |
continue |
|---|
| 262 |
elif img: |
|---|
| 263 |
# Got a cover |
|---|
| 264 |
cover_image = img |
|---|
| 265 |
break |
|---|
| 266 |
else: |
|---|
| 267 |
self.log.debug("amazon.com no match found") |
|---|
| 268 |
|
|---|
| 269 |
if not cover_image: |
|---|
| 270 |
self.log.debug("amazon.com no image available") |
|---|
| 271 |
|
|---|
| 272 |
retval = {MetaDataSearch.CAP_ALBUM_ART: cover_image} |
|---|
| 273 |
|
|---|
| 274 |
# Update/clean cache |
|---|
| 275 |
now = time.time() |
|---|
| 276 |
self._cache[query] = (now, retval) |
|---|
| 277 |
|
|---|
| 278 |
# Prune cache |
|---|
| 279 |
cached_keys = [] |
|---|
| 280 |
for key in self._cache: |
|---|
| 281 |
if self._cache[key][1][1]: |
|---|
| 282 |
# Only add if there is an image, this is the mem being saved |
|---|
| 283 |
cached_keys.append(key) |
|---|
| 284 |
|
|---|
| 285 |
if len(cached_keys) > MAX_CACHE_SIZE: |
|---|
| 286 |
access_times_to_keys = {} |
|---|
| 287 |
for key in cached_keys: |
|---|
| 288 |
access_times_to_keys[self._cache[key][0]] = key |
|---|
| 289 |
times = access_times_to_keys.keys() |
|---|
| 290 |
times.sort() |
|---|
| 291 |
|
|---|
| 292 |
size = len(cached_keys) |
|---|
| 293 |
while size > MAX_CACHE_SIZE: |
|---|
| 294 |
t = times.pop(0) |
|---|
| 295 |
key = access_times_to_keys[t] |
|---|
| 296 |
self.log.debug('Removing \'%s\' from album cover cache' % key) |
|---|
| 297 |
size -= 1 |
|---|
| 298 |
del self._cache[key] |
|---|
| 299 |
|
|---|
| 300 |
return retval |
|---|
| 301 |
|
|---|
| 302 |
def _fetch_image(self, url): |
|---|
| 303 |
if not url: |
|---|
| 304 |
return None |
|---|
| 305 |
else: |
|---|
| 306 |
self.log.debug("Fetching image URL: " + url) |
|---|
| 307 |
resp = urllib.urlopen(url) |
|---|
| 308 |
img_data = resp.read() |
|---|
| 309 |
resp.close() |
|---|
| 310 |
return img_data |
|---|
| 311 |
|
|---|
| 312 |
XPM = [ |
|---|
| 313 |
"150 60 158 2", |
|---|
| 314 |
" c #030303", |
|---|
| 315 |
". c #070708", |
|---|
| 316 |
"+ c #080707", |
|---|
| 317 |
"@ c #090708", |
|---|
| 318 |
"# c #0C0B0B", |
|---|
| 319 |
"$ c #110E0F", |
|---|
| 320 |
"% c #120F10", |
|---|
| 321 |
"& c #141212", |
|---|
| 322 |
"* c #191616", |
|---|
| 323 |
"= c #1A1718", |
|---|
| 324 |
"- c #1D1A1B", |
|---|
| 325 |
"; c #211D1E", |
|---|
| 326 |
"> c #221F20", |
|---|
| 327 |
", c #21201F", |
|---|
| 328 |
"' c #252223", |
|---|
| 329 |
") c #282626", |
|---|
| 330 |
"! c #2A2728", |
|---|
| 331 |
"~ c #2C2B2C", |
|---|
| 332 |
"{ c #312E2F", |
|---|
| 333 |
"] c #312F30", |
|---|
| 334 |
"^ c #333233", |
|---|
| 335 |
"/ c #383637", |
|---|
| 336 |
"( c #393738", |
|---|
| 337 |
"_ c #3C3B3C", |
|---|
| 338 |
": c #403E3E", |
|---|
| 339 |
"< c #413F40", |
|---|
| 340 |
"[ c #444343", |
|---|
| 341 |
"} c #484647", |
|---|
| 342 |
"| c #4A4748", |
|---|
| 343 |
"1 c #4D4B4C", |
|---|
| 344 |
"2 c #504E4F", |
|---|
| 345 |
"3 c #504F50", |
|---|
| 346 |
"4 c #545354", |
|---|
| 347 |
"5 c #575857", |
|---|
| 348 |
"6 c #585757", |
|---|
| 349 |
"7 c #595758", |
|---|
| 350 |
"8 c #5B5A5B", |
|---|
| 351 |
"9 c #625F5D", |
|---|
| 352 |
"0 c #636263", |
|---|
| 353 |
"a c #686766", |
|---|
| 354 |
"b c #6A6966", |
|---|
| 355 |
"c c #6D6B6C", |
|---|
| 356 |
"d c #706E6D", |
|---|
| 357 |
"e c #706F70", |
|---|
| 358 |
"f c #747374", |
|---|
| 359 |
"g c #787676", |
|---|
| 360 |
"h c #797778", |
|---|
| 361 |
"i c #797876", |
|---|
| 362 |
"j c #7D7C7C", |
|---|
| 363 |
"k c #807F7E", |
|---|
| 364 |
"l c #817F80", |
|---|
| 365 |
"m c #F7A505", |
|---|
| 366 |
"n c #F7A709", |
|---|
| 367 |
"o c #F7A80D", |
|---|
| 368 |
"p c #F7AA13", |
|---|
| 369 |
"q c #F7AD1A", |
|---|
| 370 |
"r c #F8AB16", |
|---|
| 371 |
"s c #F8AE1D", |
|---|
| 372 |
"t c #F7AF21", |
|---|
| 373 |
"u c #F8AF21", |
|---|
| 374 |
"v c #F7B023", |
|---|
| 375 |
"w c #F8B124", |
|---|
| 376 |
"x c #F8B42C", |
|---|
| 377 |
"y c #F8B633", |
|---|
| 378 |
"z c #F8B738", |
|---|
| 379 |
"A c #F8B93A", |
|---|
| 380 |
"B c #F9BC44", |
|---|
| 381 |
"C c #F9BF4C", |
|---|
| 382 |
"D c #F9C04F", |
|---|
| 383 |
"E c #F9C253", |
|---|
| 384 |
"F c #F9C55D", |
|---|
| 385 |
"G c #F9C662", |
|---|
| 386 |
"H c #FAC866", |
|---|
| 387 |
"I c #F9CA6C", |
|---|
| 388 |
"J c #FACD75", |
|---|
| 389 |
"K c #FACF7C", |
|---|
| 390 |
"L c #FBD17E", |
|---|
| 391 |
"M c #848383", |
|---|
| 392 |
"N c #888687", |
|---|
| 393 |
"O c #898788", |
|---|
| 394 |
"P c #8A8886", |
|---|
| 395 |
"Q c #8C8B8C", |
|---|
| 396 |
"R c #908F8F", |
|---|
| 397 |
"S c #908F90", |
|---|
| 398 |
"T c #94928C", |
|---|
| 399 |
"U c #949394", |
|---|
| 400 |
"V c #989697", |
|---|
| 401 |
"W c #989798", |
|---|
| 402 |
"X c #9C9B9B", |
|---|
| 403 |
"Y c #A09E9D", |
|---|
| 404 |
"Z c #A19FA0", |
|---|
| 405 |
"` c #A5A29C", |
|---|
| 406 |
" . c #A4A3A4", |
|---|
| 407 |
".. c #A8A7A7", |
|---|
| 408 |
"+. c #A9A7A8", |
|---|
| 409 |
"@. c #ACABAB", |
|---|
| 410 |
"#. c #B1AEA7", |
|---|
| 411 |
"$. c #B0AFAF", |
|---|
| 412 |
"%. c #B1AFB0", |
|---|
| 413 |
"&. c #B5B2AE", |
|---|
| 414 |
"*. c #B3B3B3", |
|---|
| 415 |
"=. c #B8B7B7", |
|---|
| 416 |
"-. c #B8B7B8", |
|---|
| 417 |
";. c #BCB8B2", |
|---|
| 418 |
">. c #BCBBBB", |
|---|
| 419 |
",. c #C0BFBF", |
|---|
| 420 |
"'. c #C0BFC0", |
|---|
| 421 |
"). c #C5C2BD", |
|---|
| 422 |
"!. c #FBD383", |
|---|
| 423 |
"~. c #FBD68B", |
|---|
| 424 |
"{. c #FBD88F", |
|---|
| 425 |
"]. c #FCD791", |
|---|
| 426 |
"^. c #FBD994", |
|---|
| 427 |
"/. c #FBDB9B", |
|---|
| 428 |
"(. c #FCDEA3", |
|---|
| 429 |
"_. c #FCE0A7", |
|---|
| 430 |
":. c #FCE1AC", |
|---|
| 431 |
"<. c #FCE4B3", |
|---|
| 432 |
"[. c #FDE7BB", |
|---|
| 433 |
"}. c #FDE8BD", |
|---|
| 434 |
"|. c #C5C4C5", |
|---|
| 435 |
"1. c #C8C7C7", |
|---|
| 436 |
"2. c #C8C7C8", |
|---|
| 437 |
"3. c #CBC9C7", |
|---|
| 438 |
"4. c #CCCCCC", |
|---|
| 439 |
"5. c #D1CECC", |
|---|
| 440 |
"6. c #D1CFD0", |
|---|
| 441 |
"7. c #D3D2CF", |
|---|
| 442 |
"8. c #D3D3D3", |
|---|
| 443 |
"9. c #D9D7D4", |
|---|
| 444 |
"0. c #DBD9D7", |
|---|
| 445 |
"a. c #DCDBDB", |
|---|
| 446 |
"b. c #E0DEDF", |
|---|
| 447 |
"c. c #E0DFE0", |
|---|
| 448 |
"d. c #E3E0DA", |
|---|
| 449 |
"e. c #FDEAC4", |
|---|
| 450 |
"f. c #FDEDCC", |
|---|
| 451 |
"g. c #FCEED3", |
|---|
| 452 |
"h. c #FAEFDB", |
|---|
| 453 |
"i. c #FDF0D6", |
|---|
| 454 |
"j. c #FDF2DC", |
|---|
| 455 |
"k. c #E3E3E3", |
|---|
| 456 |
"l. c #E8E7E6", |
|---|
| 457 |
"m. c #E8E7E8", |
|---|
| 458 |
"n. c #EBE9E4", |
|---|
| 459 |
"o. c #ECEBEC", |
|---|
| 460 |
"p. c #F0EDE7", |
|---|
| 461 |
"q. c #F2EFEB", |
|---|
| 462 |
"r. c #F6F3EC", |
|---|
| 463 |
"s. c #FEF6E5", |
|---|
| 464 |
"t. c #FEF7E9", |
|---|
| 465 |
"u. c #FEF8EC", |
|---|
| 466 |
"v. c #F4F4F4", |
|---|
| 467 |
"w. c #F7F7F8", |
|---|
| 468 |
"x. c #F9F7F6", |
|---|
| 469 |
"y. c #F8F7F8", |
|---|
| 470 |
"z. c #FEFBF4", |
|---|
| 471 |
"A. c #FFFFFF", |
|---|
| 472 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 473 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 474 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 475 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.t.g.e./.<.e.j.z.A.A.A.A.A.A.A.A.A.A.A.t.e.}./.}.f.u.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 476 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.j.<.<.J x o n n o C ^.<.e.z.A.A.A.A.A.e.:.{.H p n n n r J <.<.j.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 477 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.}.I y m m n o o n m o A !.u.A.A.A.A.A.{.C q m n o o n m m y I }.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 478 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.s.(.:.s.A.e.!.J y n n A J ~.j.A.f.<.z.f.].[.A.z.(.K B o m y F !.e.A.i./.e.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 479 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.s.C q E K :.s.y.e.~.~.f.A.j./.K A F z.K m y J !.e.A.i.{.~.[.z.A.:.L D n J A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 480 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.y.I m m m t C J <.A.A.(.I C p m m I A.L m n m m y I L y.A.e.K I w m n m J A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 481 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.I m o o t o n x r.h.w m n o o m I A.L m n o s p m n {.s.A m m o o o m J A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 482 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.y.I m o o q o o r h.j.p o o o o m I A.L m o o p o o o K s.x o o o o o m J A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 483 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.I m o o o o o q h.h.r o o o o m F z.L m o o o o n p ~.s.z o o o o o m J A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 484 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.I m o o o o o q h.s.r o o o o n B i.!.m o o o o o p ~.s.z o o o o o m J A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 485 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.I m o o o o o q h.g.r o o o o m B g.!.m o o o o o p ~.s.z o o o o o m J A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 486 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.y.I m o o t p o q h.g.r o o o o n B g.!.m o o o o o p ~.s.z o o o o o m J A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 487 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.I m p o o o o q h.g.p o o o o m B g.!.m o o o o o p ~.s.z o o o o o m K A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 488 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.I m s p o o o q h.g.p p p o o n B g.!.m n o o o o p ~.s.z o o o o n m J A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 489 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.{.z y q n n o q h.g.p p t n p w H i.:.B x p n n n p ~.s.z o o n o u z ].A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 490 |
"A.A.A.A.A.A.A.A.A.s.i.u.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.u.g.h.A.s.~.C B t p h.g.p m q A I f.A.A.A.A.f.H B v o o ~.s.y n o y F <.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 491 |
"A.A.A.A.A.z.e.<.(.H B I _.}.i.A.A.A.A.A.A.A.A.A.i.[.:.K x B /.<.f.u.x.(.H s.g.t F ~.s.A.A.A.A.A.A.A.A.A.(.G A ~.s.y B H e.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 492 |
"A.A.A.u.(.J v m n n n n m p B /.j.A.A.A.A.A.i.~.B p m m o o m m w I e.A.A.A.u.^.A.A.A.A.A.A.A.A.A.A.A.A.A.A.e.[.z.:.s.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 493 |
"A.s.z.u.!.J F q m n n m p B I ~.i.y.y.z.f.A.f.J I B o m m m m u G J <.A.i.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 494 |
"z.(.I {.f.y.z.(.!.F A I ^.i.A.j.^.!.g.s.B !.^.s.A.g.].K C C K (.A.z._.~.F u.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 495 |
"z.!.n o y G ~.f.A.s.f.z.z./.J C o p f.s.p m p D J ^.t.A.g.i.A.f.!.F v n p u.A.A.A.A.A.A.v.-.l c c c N |.A.A.A.A.A.x.|.|.,.1.A.q. .Q Q X o.A.A.y...V V Y A.A.A.A.A.A.A.A.k.+.j c e c Q 4.A.A.A.A.A.q.=.|.|.|.|.|.|.|.|.|.|.v.A.A.A.A.A.+.N V U @.o.A.A.A.A.A.c.2.|.=.l.A.o.X V U =.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 496 |
"z.!.p o n m p z E <.A.(.E q m n o q j.s.p o o o m r D ~.s.[.I z o m n o q u.A.A.A.A.A.6.3 ^ = # # # - ( 7 m.A.A.A.k._ ^ ~ 0 9.6 = & ; ; 4 9.o.e - ' ) = a k.A.A.A.A.v...} ~ * # # # > _ f w.A.A.A.7.) ^ ] ^ ] ] ^ ^ ^ ^ _ a.A.A.A.=.7 ' - ) ; ' 1 @.A.A.A.A.j / ] ~ i n.5 ) ' ; ) U A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 497 |
"z.!.o o o o n n m !.w.G m o o o o q h.s.p o o p v n m B i.~.o m o o o o q u.A.A.A.A.6.^ $ * ; & * > - & 4 o.A.A.c.. % % : d & * ; * S 0 * & - - & & 8 A.A.A.A. .> $ = - $ = > - % . j w.A.A.|. & & % & % % % $ $ ~ a.A.A.Z ~ $ & ; - - & & ) @.A.A.A.b * % & _ [ & ; ; = & = U A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 498 |
"z.!.p o o o o o m K w.H m o o o o p j.s.p p w p p o m C i.{.r o o o o o q u.A.A.A.m.c ; ; $ ^ ( # * ; * # 4.A.A.c.# ; ; ' ) $ + & ; ; = ' = # + = ; ; = = >.A.A.-.; * > & & } - # = - = , q.A.A.1. + + + . & ; ; ; # / a.A.k.~ & ; = & ^ & $ ; * { -.A.A.f ' ; ; ' & + # ; ; ; # 1 o.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 499 |
"z.!.p o o o o q q !.w.H m o o o o q j.t.p o p o o o m B i.{.r n o o o o q u.A.A.A.2.& - ; = f a.a.W ) * ; . j v.A.k.# ; ; - - 2 c - & ; ; * # ] j { ; ; = # f A.A.V ; & - W c.9.7 ' ; - & 8.A.A.v.).-.-.|...^ % ; ; . +.y.y.f - - * ~ 5.a. .; # ' . V A.A.f ' ; ; - & f g $ ; ; $ / 3.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 500 |
"z.!.o o o o o o n K w.G m o o o o q h.s.p o o o o o o B i.{.r n o o o o q u.A.A.A.4.= # $ 5 m.A.A.q.[ $ ; . j v.A.k.# - ; & 1 o.q.M = - > # 1 4.v.0.- - - ; b A.A.$.& # # N w.A.A...- = - & 9.A.A.A.A.A.A.z.S & - ; # 8 k.A.v.' - ; - | A.A.v.M ; # 1 9.A.f ' - ; # l o.o.Q + ; $ ^ |.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 501 |
"z.!.p o o o o o m K w.G n o o o o p h.s.p o o o o o n B i.{.r o o o o o q u.A.A.A.y.o.k.k.m.v.q.q.o.| % ; . k v.A.c.# - - > M A.A.9.[ % > #.A.A.v.- - ; ' b A.A.v.k.k.k.o.v.q.o.*.; = - & a.A.A.A.A.A.A.X & = ; - $ *.A.A.4.= - - = @.A.A.A.X ; - = $.A.f ' ; - % k.A.A.4. ; $ / |.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 502 |
"z.!.p p o o o o m !.w.G m o o o o q h.s.p o o o o o n B i.{.r o o o o o q u.A.A.A.A.A.w.9. .c _ - & * ; ; + k v.A.k.# ; & - ..A.A.4._ # > ;.A.A.v.= - ; > c A.A.A.A.v.|.N 8 ) & & = ; - & a.A.A.A.A.A.a.1 # - - % ..y.A.A.Y % - = & X A.A.A. .@ ; ; .A.g ' - ; & o.A.A.4.. ; % ^ |.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 503 |
"z.L r w o o o o m !.A.G n o o o o q g.s.p o o o o o o B i.{.p o o o o o q u.A.A.A.A.v.T # # & = - ' ; ; ; + M v.A.k.# ; & ) -.A.A.4._ $ > ,.A.A.v.= - ; > b A.A.y.4.5 # # & * - - - ; ; & a.A.A.A.A.v.Q # - - # j v.A.A.A.X % - = ' r.A.A.A.=.{ ; ; .A.g ' ; ; ] o.A.A.4.. ; % ^ |.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 504 |
"z.L v m n o o o m !.y.H n o o o n t e.t.y p n n o o n B i.{.p o o o n n y u.A.A.A.v.l # ; - = ~ 4 b ] - ; + M v.A.c.# ; & ) -.A.A.4._ # ; ,.A.A.v.= ; ; > b A.A.3.( $ ; = ) ^ 7 } - - - & a.A.A.A.w.W + ; ; # ^ |.A.A.A.A.X & = = ' d.A.A.A.=.~ - ; .A.g > ; ; 1 q.A.A.4.. ; $ ^ |.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 505 |
"A.z./.B y p n n m !.A.G m n n v B ~.z.A.e.G B v m n m C g.{.p n n q B C e.A.A.A.A.*.. ; - & b l.A.A.1 % ; + k v.A.k.# - & ) -.A.A.5._ $ ; . ,.A.A.v.= - ; > c A.v.h . ; = - %.A.A.'., = - & a.A.A.A.|.' $ ; * ) *.A.A.A.A.A.W % - = & U A.A.A...& ; ; .A.g > - ; 1 v.A.A.4.. ; $ ^ |.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 506 |
"A.A.A.A.f.!.C v m K y.F p A E (.A.A.A.i.z.A.A./.E z p z f.~.n v C !.z.A.A.A.A.A.o.j . ; # _ 8.A.A.v.[ % ; . Q v.A.k.# ; & ) -.A.A.4._ $ ; . '.A.A.v.= - ; > b A.|.- % ; + h v.A.A...* = - & k.A.A.o.c # ; ; # c ).4.k.A.A.A.%.& - - = U A.A.A.Y ; ; % ..A.g > - ; | v.A.A.4. ; % ^ 1.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 507 |
"A.A.A.A.A.A.u.^.E /.y./.~.g.A.z.}._./.D !._.[.s.A.f.!.K i.(.F /.z.A.A.A.A.A.A.A.o.c . ; # 7 v.A.A.-.~ * ; $ 0 v.A.k.# - & ) -.A.A.4._ # ; >.A.A.v.= ; ; > b A.,.' - ; . U A.A.A.f * = - & 2.A.v. . > ; - ; ~ ' ^ 8 U |.w.o.= - - - 4 A.A.v.N ; * ( 2.A.g ' - ; 1 q.A.A.4.. ; $ ^ |.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 508 |
"A.A.A.A.A.A.A.A.z.t.A.A.A.<.~.J v m m o m o v F ~.[.A.A.A.A.A.A.A.A.A.A.A.A.A.A.m.0 + ; * ~ *.A.9.[ * ; ; ; . 3.A.c.# - & ) -.A.A.4._ $ ; . >.A.A.v.= - ; > c A.|.' ; ; $ 7 b.A.>.~ * ; - & 4 A.k._ $ ; ; ; ; - ; & # . ] a.z.1 & ; * - |.A.|.{ & > c o.A.f ' ; ; 1 v.A.A.3.. ; % ^ 1.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 509 |
"A.A.A.A.A.A.A.A.A.A.u.A.A.(.K C o m n o o m p E L :.A.z.u.A.A.A.A.A.A.A.A.A.A.A.v.R + ; ; % [ j [ % + = ; - & 4 v.c.# ; & ) -.A.A.4._ $ ; ,.A.A.v.- - ; > c A.8._ & ; ; * 6 j / - # - - - # U 0.~ ; ; * # + + . # = ; ).A.|.# - - & : j 1 $ ; & ~ >.A.A.g ' - ; 1 v.A.A.4.. ; % ^ |.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 510 |
"A.A.A.A.A.A.A.A.A.A.(.H !.g.A.s.(.^.D o B ~.(.t.A.f.L ~.i.A.A.A.A.A.A.A.A.A.A.A.A.3.+ $ ; ; & # 7 ) = ; # N v.k.# - & ) -.A.A.4._ $ ; . >.A.A.v.= ; ; ' b A.y.Q ; ; ; % # # & 3 = = # . Z a.' + # ~ 5 c P b ^ # . *.A.z.Q # $ ; * # % > & # N v.A.A.g ' - > 1 v.A.A.4.. ; $ ^ |.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 511 |
"A.A.A.A.A.A.A.A.A.A.!.m o A G /.j.A.s.:.f.A.i.^.F z m B f.A.A.A.A.A.A.A.A.A.A.A.A.o.N * . . . . c c.X - . Q A.A.c. . - @.A.A.|.] . >.A.A.v.& . # 0 A.A.a.a @ . . + = Q a.[ . ~ .A.k.8 8 .>.a.v.A.o.2...h ' |.A.A.A.V $ . + @ + ~ U k.A.A.A.9 + . ] q.A.A.3. . ) >.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 512 |
"A.A.A.A.A.A.A.A.A.A.{.p n n n s A F L A.f.E A s m o n B f.A.A.A.A.A.A.A.A.A.A.A.A.A.v.>...V W .*.o.A.v.$.@.y.A.A.v.@.V W ..k.A.A.o.@.W W +.o.A.A.A.=.W X X 8.A.A.A.o.$.X X V .>.w.A.4. .2.A.A.y.a.k.A.A.A.A.A.A.A.A.v.|.v.A.A.A.A.>. .f 7 0 ..3.y.A.A.A.A.3.X X W -.y.A.A.v.+.W W @.o.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 513 |
"A.A.A.A.A.A.A.A.A.A.{.p o o o n o n v s.~.o v o o o n B f.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.y.A.A.A.A.A.A.A.A.A.A.A.A.y.A.A.A.A.o.o.A.y.A.A.A.A.A.A.A.y.A.A.A.A.A.A.A.A.A.A.y.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.o.A.A.A.A.A.o.k.o.A.A.A.A.A.A.A.A.A.A.y.A.A.A.A.A.A.A.y.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 514 |
"A.A.A.A.A.A.A.A.A.A.{.p t p o o o o s s.!.o p o o o n B f.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.b.b ~ .A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.5 { X w.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 515 |
"A.A.A.A.A.A.A.A.A.A.{.p p p o o o o t s.!.o o o o o n C f.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.9.1 P A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.^ 4 v.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 516 |
"A.A.A.A.A.A.A.A.A.A.{.p o o o o o o s s.!.p o o o o n B f.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.v.v.v.y.A.A.a.1 Q z.y.y.A.A.A.A.A.A.A.A.A.v.z.A.A.A.A.A.A.A.w.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.8.M c.A.A.A.y.x.A.A.A.A.A.A.A.A.y.y.A.A.A.A.A.A.A.z.x.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 517 |
"A.A.A.A.A.A.A.A.A.A.{.p o o o o o o s t.!.o o o o p o B f.A.A.A.A.A.A.A.A.A.A.A.A.w.a.6.v.A.A.8.6.v.A.A.o.>.v.A.a.3 } 1 R o.A.a.1 l =.N N 4.y.A.A.A.A.w.k.-.j -.o.w.A.A.A.o.|.M .a.w.A.A.k.m.v.9.8.v.8.1.v.A.A.A.o.8.v.o.9.o.A.A.k.|.U |.o.z.A.A.A.r.2.N U 9.w.A.A.A.v.c.+.M |.o.A.v.k.l.k.o.o.y.A.o.v.A.", |
|---|
| 518 |
"A.A.A.A.A.A.A.A.A.A.^.q o o o o o o s s.!.o o o o q s B f.A.A.A.A.A.A.A.A.A.A.A.A.4.* * Q A.k.7 . ..A.A._ . 4.'.= . ; = . } k.a.1 # * . # # # *.y.A.A.y.X & . # . ~ ` v.A.9.| + # . $ U w.m.* ) Q + ^ M & = X A.A.v.4 . |._ # i v.|.$ . . . _ 8.A.A.o.0 . # # # U v.A.o.0 # . # + [ 9.@.~ > ) 0 ) *.v.^ l v.", |
|---|
| 519 |
"A.A.A.A.A.A.A.A.A.A.e.A n o o o o o s s.!.o o o o o n B f.A.A.A.A.A.A.A.A.A.A.A.A.o.f 8 A.-.{ W A.v.^ # 3.- * [ a.@.' # 8 k.1 # # - f < * # 4.A.A.8.# = _ 7 ~ # , @.o.8 # ) 5 < * # 4.a.% = & 2 Y 1 f z.A.=.) # 3.^ Q a.$ ' [ ~ # 4 o.o.0 + ) 5 4 - # &.v.V # ; _ 7 ~ + 4 l.8.[ V $.- } X ' c v.", |
|---|
| 520 |
"A.A.A.A.A.A.A.A.A.A.f.B m n o p o o s s.!.p o o o n m D i.A.A.A.A.A.A.A.A.A.A.A.A.A.+. 1 v.T & # 8 k.*.- 1 N $ ' r.A.A... 1 8.3 . ^ -.A.1.~ V v.y.f ~ A.A.7._ ~ X U % - >.A.A.5 . 5 c.& * % Q v.q.f 5 k.A.M # 8 k.^ W .. * -.A.|.# # U ..& & =.A.A.0 = ; a.[ : A.A.|.~ 4 3.v.4 V $.~ # _ b q.", |
|---|
| 521 |
"A.A.A.A.A.A.A.A.A.A.t./.F y o s p o s s.!.o o m p B D /.A.A.A.A.A.A.A.A.A.A.A.A.A.A.>.# ~ >.P + ; ' |.c # .[ # [ +.*.*.N . ~ .9 P A.A.A.[ 6 o.y.O . ' *.3.k.k.9.y.e 7 -.3.2.U - # 4.% * 5 A.A.A.+.# ~ @.y.5 R v.^ V 0 . ^ A.A.k.e ) X N 1 @.1.1.@.' + 0.: . ^ *.5.k.9.k.A.o.4 V *.1 ~ ' Q 0 o.", |
|---|
| 522 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.}.J E s m q s.!.m p E L i.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.9._ # M j # ' @.[ 6.) = # ' X 0 Q A.A.A.0 . _ o.A.3.# # # / 7 U 4.b.| # ' ' - - # # . .# - 8.A.A.A.4._ N k.< # |.A.{ X ] # l A.A.A.a.=.k.k @ ' ' - ; ; $ 5. . + ( c Y 3.A.y. .|.9.V @.*.=.$.w.", |
|---|
| 523 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.t./.J B t./.J {.u.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.v.M ( _ } 1 # 0 { # 8.' & [ c c c c f N *.6 Q A.A.A.g # _ l.A.v.k [ ' _ .4 . _ 8 0 0 0 b a -.# , q.A.A.A.v.h j ..= [ a.A.{ . +.* % .A.A.A.A.A.A.f . : 0 9 0 0 b 0 a.v.f [ & _ 8.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 524 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.}.A.s.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.@. * N Y ' & $ _ a.~ . 0 A.A.A.A.4.b.a.1 Q A.A.A.7 . 2 o.A.A.A.9.X k 0 * 4 0 Q w.z.y.A.x.A.k.# , k.A.A.A.A.X # 4 1 U v.A.~ . X / # f A.A.A.3.k |.l h q.y.y.A.x.A.A.A.v.0.X j 9 & $ l A.A.A.A.A.A.A.A.A.A.", |
|---|
| 525 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.=.& & . Q k._ $ . j o.0 . - a.A.A.>./ 0 2.5 f v.A.A._ j v.v.M c @.A.A.r.f a c 0 o.A.A.6.c e 9.# , m.A.A.A.A.'.] = ) @.A.A.^ V c . _ A.A.a.[ k Q [ 8.A.A.c.f c k.f 0 l.A.A.a.1 d A.A.A.A.A.A.A.A.A.A.", |
|---|
| 526 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.a.1 + - X x.4 $ . -.A.4.& * 3 +.W _ [ 6.4 . ' V y.S ' >.A.v.^ ~ >.A.a.4 . i X # * j q.6.1 ' a.$ , k.A.A.A.A.q.d . & ~ |.A.A.~ Q |.. - Q v.j ) -.@., % 8 k.k.8 . # 9.. & 5 1.A.3.{ + c A.A.A.A.A.A.A.A.A.A.", |
|---|
| 527 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.x.U ^ -.A.b . # 4.A.A.W # > * / 4.8.< = | ' . f v.A.y.=. ~ 1 ( - .k.4 & [ ^ $.a.# , c.A.A.A.A.A.N h v.A.A.] f o.3 # ' [ * 4 w.o.0 . _ _ . .v.` # { 1 ( @ ^ ).A.A.A.A.A.A.A.A.A.A.", |
|---|
| 528 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.+.# f v.A.=.^ a k.A.A.y.>.0 = _ k 8.A.v.e 7 W ) ' O m.A.A.A.A.$.~ ' X o.A.a.b # } $.A.m.# - q.A.A.A.A.A.>._ $ ..A.A.A.: = ).y.9.0 . . 9 0.A.A.a.e # ) ..y.A.A.*.~ } |.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 529 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.o.6.o.A.A.v.a.o.A.A.A.A.A.o.9.a.v.A.A.A.l.m.y.a.4.9.v.A.A.A.A.A.A.a.4.4.4.9.v.A.A.A.o.8.4.4.k.A.A.A.6.9.A.A.A.A.A.A.x.a.8.o.A.A.A.a.9.y.A.A.k.4.4.6.m.A.A.A.A.o.8.6.4.0.A.A.A.A.A.a.4.4.4.c.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 530 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.", |
|---|
| 531 |
"A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A.A." |
|---|
| 532 |
] |
|---|
| 533 |
|
|---|
| 534 |
## Required for plugins ## |
|---|
| 535 |
PLUGIN_INFO = PluginInfo(name='albumart', display_name='Album Artwork', |
|---|
| 536 |
desc=_('Download missing album art from amazon.com.'), |
|---|
| 537 |
author='Travis Shirk <travis@pobox.com>', |
|---|
| 538 |
url='http://mesk.nicfit.net/', |
|---|
| 539 |
copyright=\ |
|---|
| 540 |
'''Copyright © 2007-2008 Travis Shirk |
|---|
|
|---|