Thanks. That should workout good. Could you explain the __init__.py
line a little more though please.
lewashby 56 Junior Poster
(Linux)
I just installed eyed3 for python using apt-get, everything installed fine but when I tried to import eyed3 I got a trackback error, no such module. Do I need to do something special to let python know where the module is at or do I need to move the module manually. Oh, I tried this with python 2.7 and 3 and I got the same result.
On the same topic, if I write my own module how can I set it up to be imported as if it was a built in module rather than having to have a copy in every project directory?
Wasnt sure if this belonged here or in the Linux section.
lewashby 56 Junior Poster
I'm trying to copy a file to my new iBasso DX50 music player but I can't create or removes files from the device, it worked fine the first day I got it. Any, this is what I'm getting if I try to move a file to the device.
Error opening file '/media/garrett/DX50/update.img': Input/output error
I would maybe expect a permission denied error but I've never seen this with a simple file copy. Any ideas? Oh, and the device is set as USB storage.
lewashby 56 Junior Poster
pyinstaller to make an executable, wouldn't that eliminate the need for the python to be installed on the system?
lewashby 56 Junior Poster
I know that all you really need to execute a python program is the python interpriter, what what if your program uses config files that might be in /etc, ~/.program, or C:\users\Name\Appdata ? How would you go about creating an installer for you python program and all of it's files and assets? Secondly, if you want your program to work with Linux and Windows would you use a one smart insaller or a different installers for each version? Thanks.
lewashby 56 Junior Poster
Gribouillis I'm trying your re method but I'm running into a bump.
#!/usr/bin/env python3
import sys
import re
file = sys.argv[1]
f = open(file, 'rb')
#search_string = b"br'(?i)artist\="
for line in f:
expr = re.compile(br'(?i)artist\=')
match = expr.search(line)
if match:
i = match.end()
print(line[i:i+20])
f.seek(i)
tag = b''
string = f.read(20)
print(string)
f.close()
I'm trying to get the re.comile line to use the variable search_string because I will need to change that variable at least once as the program runs through. When I tried to insrert the variable as an argument of compile I get the error -> builtins.TypeError: can't use a string pattern on a bytes-like object
search_string = b"br'(?i)artist\="
&
expr = re.compile(search_string)
I also tried preceding the search_string string with 'b' but then nothing printed out. Secondly, why are my two print functions returning different strings? They both begin at index 'i' and continue 20 bytes but yet this is what I get.
OUTPUT
b'Mad Season#\x00\x00\x00ALBUM='
b'f Deceit\x11\x00\x00\x00ARTIST=M'
lewashby 56 Junior Poster
Why did s[20:10] not return from index 20 plus the next ten bytes? My thinking was this is how it works, clearly I'm wrong. One other thing, if I do use a for loop to run this program line by line do I not run the risk of having the artist or album strings broken across two lines and therefore undetectable by the program.
lewashby 56 Junior Poster
wooee, in that program line is 658 bytes long so starting from index 0 and moving 10 bytes shouldn't be a problem but if I change print(line[seek_position:]) to print(line[seek_position:10]) it returns -> b'', an empty string of bytes? And I've done a few test on bytes strings and this same scheme works fine. Any ideas?
lewashby 56 Junior Poster
Thanks woooee. I'm not getting the whole line but I have two more questions. Can I always be sure that the metadata artist & album tags will not be split between two lines and thus never dectected?
Secondly, this line -> print line[seek_position:]
gave me the whole line, so I changed it to print line[seek_position:10]
in order to try and grab artist=, plus the next three bytes but then it gave me nothing but an empty byte b''. Shouldn't :10 give me up and but not including the next 10 bytes?
lewashby 56 Junior Poster
I mean the code within the if block. Even when I take away all the extra 'or' conditions in the while loop and have it only search for the exact string that I know is in the file the word variable still never contains any upper or lower case for of 'artist=', yet line does get the correct line containing 'artist='.
#!/usr/bin/env python3
import sys
import re
file = sys.argv[1]
f = open(file, 'rb')
seek_positoin = 0
artist_string = b'ARTIST='
line = b''
f.seek(seek_positoin)
while artist_string not in line:
line = f.readline()
if artist_string in line:
seek_positoin = line.find(artist_string)
f.seek(seek_positoin, 1)
word = f.read(10)
#line = str(line)
#position = line.find('Artist')
#print(position)
print(line)
print(word)
f.close()
Outputs this->
b"\xc4B\xf0\x00\xcc\xacP\r\xeb\x9d\x10\xb4\xa2\xae\xd0\xfc\xd4\xdeGE}R\xa8\x03\x00\x02.\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x06\xb0\x00\x00\x00\x00\x00\x00\t\xc7\xcd\x10\x00\x00\x00\x00\x00\x00\rp\x00\x00\x00\x00\x00\x00\x13\xf8\xea\x10\x00\x00\x00\x00\x00\x00\x14 \x00\x00\x00\x00\x00\x00 j\x1a\x10\x00\x00\x00\x00\x00\x00\x1a\xe0\x00\x00\x00\x00\x00\x00/1\x14\x10\x00\x00\x00\x00\x00\x00!\xa0\x00\x00\x00\x00\x00\x00>C\xd3\x10\x00\x00\x00\x00\x00\x00(P\x00\x00\x00\x00\x00\x00Mcx\x10\x00\x00\x00\x00\x00\x00/\x10\x00\x00\x00\x00\x00\x00\\xed\x18\x10\x00\x00\x00\x00\x00\x005\xd0\x00\x00\x00\x00\x00\x00l\xe9\x9b\x10\x00\x00\x00\x00\x00\x00<\x80\x00\x00\x00\x00\x00\x00|u{\x10\x00\x00\x00\x00\x00\x00C@\x00\x00\x00\x00\x00\x00\x8cq\xaf\x10\x00\x00\x00\x00\x00\x00J\x00\x00\x00\x00\x00\x00\x00\x9c\xfd\xe0\x10\x00\x00\x00\x00\x00\x00P\xb0\x00\x00\x00\x00\x00\x00\xad\x93|\x10\x00\x00\x00\x00\x00\x00Wp\x00\x00\x00\x00\x00\x00\xbc\xe3\xb2\x10\x00\x00\x00\x00\x00\x00^0\x00\x00\x00\x00\x00\x00\xcc\x16\x16\x10\x00\x00\x00\x00\x00\x00d\xe0\x00\x00\x00\x00\x00\x00\xdbd\x9d\x10\x00\x00\x00\x00\x00\x00k\xa0\x00\x00\x00\x00\x00\x00\xea\xfb\xa6\x10\x00\x00\x00\x00\x00\x00r\x00\x00\x00\x00\x00\x00\xfaQP\x10\x00\x00\x00\x00\x00\x00y\x10\x00\x00\x00\x00\x00\x01\t\xca\xcf\x10\x00\x00\x00\x00\x00\x00\x7f\xd0\x00\x00\x00\x00\x00\x01\x19\x8a\x85\x10\x00\x00\x00\x00\x00\x00\x86\x90\x00\x00\x00\x00\x00\x01)gR\x10\x00\x00\x00\x00\x00\x00\x8d@\x00\x00\x00\x00\x00\x019p&\x10\x00\x00\x00\x00\x00\x00\x94\x00\x00\x00\x00\x00\x00\x01J9i\x10\x00\x00\x00\x00\x00\x00\x9a\xc0\x00\x00\x00\x00\x00\x01Z\xe3)\x10\x00\x00\x00\x00\x00\x00\xa1p\x00\x00\x00\x00\x00\x01i\xd3^\x10\x00\x00\x00\x00\x00\x00\xa80\x00\x00\x00\x00\x00\x01x\xfc\xa3\x10\x00\x00\x00\x00\x00\x00\xae\xf0\x00\x00\x00\x00\x00\x01\x88b\xa9\x10\x00\x00\x00\x00\x00\x00\xb5\xa0\x00\x00\x00\x00\x00\x01\x97\xb4j\x10\x00\x00\x00\x00\x00\x00\xbc
\x00\x00\x00\x00\x00\x01\xa7\x0e.\x10\x00\x00\x00\x00\x00\x00\xc3 \x00\x00\x00\x00\x00\x01\xb5\xbd\xa6\x10\x00\x00\x00\x00\x00\x00\xc9\xd0\x00\x00\x00\x00\x00\x01\xc2\x023\x10\x00\x04\x00\x00\x9e \x00\x00\x00reference libFLAC 1.2.1 20070917\x05\x00\x00\x00\x15\x00\x00\x00TITLE=River Of Deceit\x11\x00\x00\x00ARTIST=Mad Season#\x00\x00\x00ALBUM=Above (Deluxe Edition) [CD 1]\t\x00\x00\x00YEAR=2013\x10\x00\x00\x00TRACKNUMBER=3/15\x81\x00 (\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf8\xc9\x18\x00\xc2@\x00\x01\xb5\xc8\xb8!>fO0\xcc\x99Nz\x1f0\xfd9K>RI\xcc\x9e\x932R\xe6OJd\xa1\x932g\xf9\x86L\xc9\x94\xf2\x7f\xa6\x1f2~a\x92N\x9e\x99\xff9C&s9\x9f\xd0\xcc\x92S9\x99&\x19\xcc\x9c\xcc\x9f\xff0\xe5)\xca~R\xf2\x9c\xcc\xfd33=\x0c\xd39\x9f\xdd2S2\x932g)\x932S?\xbf\xd3=3\xd0\xa4\xcas\xd3\xe9O\x94\xc9\x992\x9f\xd33\xd0\xc9\xf2\x84\xc2\x972O\xf4\xc9\xfd%):g)I<\xcez~d\xa6fg\xa6\x7fL\xe6J\x14\xe4\x9f\xfee)2\x9e\x9fL\xcc\xfe\x99\x86g(s\xf9\x99&d\xcc\x9f3\xe9\x9333\xe6L\xc9\xd3\xd3%\x0c\x99\x92\x94\x9332P\xa4\x93332P\xcf\xe6fg3\xf3\t3)\x93\xa1\x9f\xd0\xc9%\xd3\x99(a\xe6|\xc9L\x9e\x92\x97\xff\xff2e$\x9f\xd0\xcf\xd3?s=2|\xf4\xc9JS\xcf\xff\x9c\xc33$\x9d33'33\xe7\xa5$\xcc\xcc\xcf\xd3)\x99\x92J~d\xcad\x92\x86L\xa4\xcc$\xcc\xcc\x99\x84\x92\x93)\x99\x9f\xfd3\xd333\xfc\xa6I9\x87\xf42~a\x93\xa7\xf4\xcc\x9d3>fP\xc9\x94\xf4\xcf\xf39L\xcc\x93(d\x92a\x92\x86OJS>R\x99\x99\xfb\xa52f\x1f0\x92\x7fC<\xf9\x9f\xcc\xcea\xe4\xf3\x0c\x99\x9f\xffIJr\x87(RI\xd32e.I\x99\x9e\x99\x99\x9f\x949\x93332\x7f\xfad\xe6d\xf32f\x12zRt\xe6d\xf43\xe6fe?\x99\x92\x87\xf92\x99\x92J\x19\xe6\x14\x92|\xcc\xe5)3&S\xe6s'\xe6\x1c\xa5\x99\x99\x99\x86d\x99\x86O\x99)O\x0c\xc9'L0\xcet\xcfJd\x9f\xa6d\xa6r\x94\xe7\xe9\x9f\x98I>\xe8SJL\xc9\xa6s)\xe6L\xc3<\x99N\x7fC\xe6M2g\xcf\x99rS\x98r\x86r\x9c\xa7\xff\xd3\xf32S%\x0c?2\x9c\xa1\x9ee$\x94\xc9\x99L\xc9\x98d\x930\xfd\xf3\x03'I\xd2\x9f\xa7\xa7\xa7)\xcf\x94\x9d33\x98I(d\xcaRI\xfe\x9f\xd3?3\xd3?\xcc\x949\x99\x99\x93\xd32iL\x93\xe6zzRIOK\x933\xe9L\xc9\t\x84\x9aN/\x7fa!Y)\x92\x12\x10\xa4\x932S2y\x99\xcc3\x94\xf4\x99\x99\x99\xff&a$\xa6OC&g3)\xe4\xa70\xc9)L\x99L\x99\x86L\xc32fJ\x16P\xe532\x93\xa6fO\xf32~a\x93\xa4\xd2\xf32y\x9fL\xfe\x98d\x93\xd3%\x0c\x92fd\xf4\xc9\xff\xf3&z\x12JS$\x9f\xd3\xff\xe8d\xe9\xf3'I\x99\x99\x9e\x97\x94\xe7\xcc\xe6d\xcc\xe5&RL\xc3$\xcc\xc3$\x94\xfe\x9c\xc2a\x9c\xc9\xffONr\x9f\xd3\x0c\xfe\x94\xcc\xc9=330\xc3\x99I\xfeg0\xe4K\xcd9\x87\x93\xa7\xcc\x9d'\xa1\x86I\xe6d\xc9C<\x9e\x99\x99\x93\xd2\xff\x99L\x92~fzg\xa6f\x7f\xf9\x99\xfe\x99\x993?\xe9\x99\x93\x99\x9f\xcc$\x94\xa6~\x99(a$\x93\xe9\x84\x99L\x9f\xf7OC\xcc\x9c\xc3\xf7\xcc3\x94\xc9\xff\xf4\xcf\xfae3$\x9d<\xcc\x9939\x9f\xffJ\x19?\xe9\x93\xd3'\xa6S<\xc9\xcc\xcf\x99?\xf3\x0f\x98L\xa7)O2f\x1eO\xf9\x94\xf9\x84\xca\x19\xf3\x98r\x86d\x93==2~zffJS\xff\xd32fN\x99\x92\x97\x99<\xc2\x9c(fI3'NfJr\x86\x7f\xa7\xcc\xcc\x9ea\xfefO\xf3\x0eS%=\xd3%2d\xcc\x94\xa4\x93=3\x94\x92S\x94\xf33\xfad\xf49C&Y\x930\x99L\x93=33\xf3\x0c\xf2\x7f\xff\xe9\xcar\x9c\xcc\xcc\xc3\xf4\x99\x86\x7f\x94\xc9\x98|\xc39\x932S\xf3\t\x94\xfc\xcc\x9e\x99\x94\xc9'\xe9e\x0f\x93):\x19\xcc\xc9\x94\xe6a\x99\x86L\xa4\xf9NS'\x99\x92\x86r\x9c\xc3?Jd\xcaL)2\x87\x99\xe9\x9f\xff\xd3\xd0\xc9\x9f3'\xa1\xfeL\xc3\xc9\x94\xe52P\xc932P\xc9\xd3)\x9c\xceh\x00\x006\xb9\x1b\x04!\x9c\xa7\xd3%\x0c\xc9&\x7f\xa6L\xcfL\xffL\xcc\xa1\xc2\x85%)0\xceS\xd32\x9f\xa6fL\xcc\x99\x87)e)$\xa6Na\x99\xe4\xfc\xcc\xfe\x94\xf9\x9c\xc9\xe6\x19\x93)$\xa1\xca\x19\x930\xe6\x7f\xfefJYK\xcc\xe6JRfzg3&\x94\x99\x86I9\x98fd\x93\xff\xf4\x9ezfJg\xcc\xb93'L\xcc\xcc\xcc2L\xcc\xc9\x9f\xf333\xe8a\x93)\x939\x9c\xc2IL\xc9\xfe\x99\x93\xd3\x0c\xc9\xd3\xfe\x93\x99\x87\x993?)$\xff3\xd3%3\xd3%)\xff\xe9\xffO\x99\x99\x87\xcea\xc8\x96a\x9c\xfad\xa1\x92O\xfe\x94\x92S\xd3\xff3\xe6d\xf3\x0c\xc9\x94\xe7\xa1\xf3\x0f\xd3\x94\xb3\xe5$\x9c\xc9\xe93%.d\xf4\xa6J\x193&\x7f\x98d\xcc\x99O'\xfaa\xf3'\xe6\x19$\xe9\xe9\x9f\xf3\x942g3\x99\xfd\x0c\xc9%3\x99\x92a\x9c\xc9\xcc\xc9\xff\xf3\x0eR\x9c\xa7\xe5/)\xcc\xcf\xd333\xd0\xcd3\x99\xfd\xd3%3)3&r\x993%3\xfb\xfd3\xd3=\n"
b'\xe6Na\xfb\xe6\x19\xcad\xff\xfa'
lewashby 56 Junior Poster
vim is good, for a graphical editor I would go with WingIDE.
lewashby 56 Junior Poster
Thanks Gribouillis, I'll give that a try. Do you see where my logic went wrong?
lewashby 56 Junior Poster
#!/usr/bin/env python3
import sys
import re
file = sys.argv[1]
f = open(file, 'rb')
seek_positoin = 0
artist_string = b'artist='
line = b''
f.seek(seek_positoin)
while artist_string.upper() or artist_string.lower() not in line:
line = f.readline()
if artist_string.upper() or artist_string.lower() in line:
seek_positoin = line.find(artist_string)
f.seek(seek_positoin, 1)
word = f.read(10)
#line = str(line)
#position = line.find('Artist')
#print(position)
print(line)
print(word)
f.close()
In the above program I'm running it with the command line argument River_Of_Deceit.flac, which I got from http://melodishop.com/
When I look through the meta data I see that the artist is preceded by 'ARTIST='. If I run the program with artist_string.upper() or hard code artist_string = 'ARTIST=' it works, but the second I put in 'or' artist_sting.loser() and, 'or' artist_string.title() the program stops giving me any output at all. I need to be able to catch upper, lower, and titled tags because I have found .flac files with upper case and Titled case both so far, so need to be able to cover multiple possiblilties. I would thing they would all have to be the same but go figure. Also, after removing the 'or's the program gives me the line containing artist but the variable word always gives me garbage, do you see anything wrong with how I'm coming up with word? It should print 'arist=' pluse 3 characters of the actual title.
lewashby 56 Junior Poster
I like WingIDE, you can det it from http://www.wingware.com It's not free but it's a good IDE designed specifically for python.
lewashby 56 Junior Poster
Thanks Gribourillis, I think I've got it now.
lewashby 56 Junior Poster
Gribouillis thanks, this line worked ->newchar = newchar + char[counter:counter + 1]
The only problem now is that the title is wrapped in b'', so it comes out like this b'Rooster'. Any idea how I can get rid of it? Could you explain the line above a little to me though please? I thought my line would simply select the byte residing at the index held by the counter variable. What does it mean to have counter:counter? And why the + 1? If you could point me towards a good resource for reading about the differences between the bytes and strings that would be helpfull as well. I think that's going to continue to byte me in the future.
snippsat, A simple slice would have workd but I'll have no way of knowing how long each title or artist is going to be for any given mp3. If I slice all 30 bytes I'll end up with all the extra '\x00' junk, which so far I've had no luck getting rid of with rstrip. I know there are libraries but I kinda wanted to do this myself. In the end I hope to have a program to auto move all my mp3, ogg, and flac files into their appropriate artist and album directories within /home/garrett/Music/.
#!/usr/bin/env python3
import sys
file = sys.argv[1]
f = open(file, 'rb')
f.seek(-125, 2)
char = f.read(30)
newchar = b''
counter = 0
while char[counter] is not 0:
newchar = newchar + char[counter:counter + …
lewashby 56 Junior Poster
Gribouillis shouldn't char[counter] give me the byte residing at the index of counter, and not an actual int? I also tried your rstrip example but this is what I got. ->
builtins.TypeError: Type str doesn't support the buffer API
#!/usr/bin/env python3
import sys
file = sys.argv[1]
f = open(file, 'rb')
f.seek(-125, 2)
artist = f.read(30)
newartist = artist.rstrip('\x00')
print(new)
f.close()
lewashby 56 Junior Poster
Why am I getting the above error message when I run this program? I'm running this program with an mp3 file as an argument, the mp3 file is in the same directory as the python program. There are 30 space reserved for the Title at positoin 125 from the end of an mp3 file, what the title doesn't take up is padded with '\x00', I'm trying to get the title and avoid the 0('\x00') values.
#!/usr/bin/env python3
import sys
file = sys.argv[1]
f = open(file, 'rb')
f.seek(-125, 2)
char = f.read(30)
newchar = ''
counter = 0
while char[counter] is not 0:
newchar = newchar + char[counter]
counter = counter + 1
print(newchar)
f.close()
lewashby 56 Junior Poster
I need to make sure that file.read()
stops after hitting '\x00' I tried a while loop but it isn't working. Also, does file.read()
step one byte forward each time through a loop or do I need to manually move the pointer? Thanks.
#!/usr/bin/env python3
import sys
file = sys.argv[1]
f = open(file, 'rb')
f.seek(-125, 2)
artist = f.read()
char = f.read()
while char is not '\x00':
char = f.read(1)
artist = artist + f.read()
print(artist)
f.close()
lewashby 56 Junior Poster
I'm trying to write a program to get the artist and album from mp3 files. A simple test run on the Alice in Chanins song Rooster yielded this result -> b'Rooster\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
I set read to read(20) and if you count Rooster plus all the \x00s you'll see that it 20, I'm confused because that chould be 20 bytes and \x00 is 4 bytes. I need to be able to tell the program to stop building the artist string after it hits \x00, how can represent that? Thanks.
lewashby 56 Junior Poster
Below is what I have so far. I'm getting the TAG which is what I'm looking for but I don't understand why it has b'' wrapped around it. It's coming back like this b'TAG'
#!/usr/bin/env python3
import sys
file = sys.argv[1]
f = open(file, 'rb')
f.seek(-128, 2)
char = f.read(3)
print(char)
f.close()
lewashby 56 Junior Poster
I don't want to use an API because that would take all the work out of it. Looking at existing OSS code is over my head, I tried to take a look at the code for rhythmbox once, it was a sea of confusion.
lewashby 56 Junior Poster
I'm going to try and extract the artist and album from the meta data of an mp3 file with python but I need a little help.
This is what I get on the tag line when I open an mp3 file in vim:
----> ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿTAGRooster^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@Alice In Chains^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@DIRT^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@1992
This is what I get when I tail the same mp3 file
---->������������������������������������������������������������������TAGRoosterAlice In ChainsDIRT1992
I need to know the structure of the file but when I tail the file ir runs everything together, when I open it in vim the artist and the album each of up to 30 characters and thereamining characters are padded with ^@
Any ideas how the file is actually laid out?
lewashby 56 Junior Poster
Tor is doing the exact same thing again. Last time this happened I uncheck 'Use Network Time' and then Tor started working, now nothing seems to work and my the date and time on my screen are correct. Any ideas?
lewashby 56 Junior Poster
I have time and date set to network time, I'm using Mint Linux, I don't know what else to do.
lewashby 56 Junior Poster
Below is what I'm getting when I try nad start tor, any ideas?
M
ay 25 14:38:35.000 [notice] Bootstrapped 25%: Loading networkstatus consensus.
May 25 14:38:45.000 [warn] Received directory with skewed time (server '193.23.244.244:443'): It seems that our clock is behind by 6 hours, 59 minutes, or that theirs is ahead. Tor requires an accurate clock to work: please check your time, timezone, and date settings.
May 25 14:38:45.000 [warn] Our clock is 6 hours, 21 minutes behind the time published in the consensus network status document (2014-05-26 02:00:00 UTC). Tor needs an accurate clock to work correctly. Please check your time and date settings!
May 25 14:38:45.000 [notice] I learned some more directory information, but not enough to build a circuit: We have no recent usable consensus.
May 25 14:38:57.000 [notice] Application request when we haven't used client functionality lately. Optimistically trying directory fetches again.
May 25 14:39:22.000 [notice] Application request when we haven't used client functionality lately. Optimistically trying directory fetches again.
May 25 14:39:47.000 [notice] Application request when we haven't used client functionality lately. Optimistically trying directory fetches again.
lewashby 56 Junior Poster
When I try to compile the program at the bottom this is what I get.
-> qtprogram.cpp:1:24: fatal error: QApplication: No such file or directory
I got this code from a C++ QT book and I'm compiling this on Linux with this command.
-> g++ -g -Wall "${ARG}" -o "${ARG:: -4}"
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello Qt!");
label->show();
return app.exe();
}
lewashby 56 Junior Poster
In your config file above, what is Alias /support refering to? I see that it's pointing to /var/www/html/support but where does Alias support actually come into play?
lewashby 56 Junior Poster
In my /var/www/ directory I have a lot of sub directories, one is learning/, which is where I place all my web projects that I'm following from different PHP or CSS/HTML books, another called projects/, for actualy projects I might undertake. I currently have port forwarding set up on my router but it alwasy points to /var/www/, never to an acutal project I might be running from the projects/ directory. Any idea on how I can set my apache to pull up a specific site under projects when a particular domian is entered in the URL? Thanks.
lewashby 56 Junior Poster
When I plug it in to auto mounts so I'm assuming I can run the commands on it. Will I need to know the format to do that? Thanks.
lewashby 56 Junior Poster
I just set up a samba media server and I got it up and running but it currently has to have a username and password to access the files. Do you know lines I need to edit in these two files to allow anyone, user or not to access the files, read only obviously?
garrett@bedroom /etc/samba $ cat smbshared.conf
[Movies]
comment = Linux Media Server
path = /home/garrett/Videos
browsable = yes
guest ok = yes
read only = yes
available = yes
public = no
writable = no
valid users = garrett
garrett@bedroom /etc/samba $ cat smb.conf
[global]
server string = Media Server
workgroup = workgroup
netbios name = bedroom
security = user
encrypt password = yes
guest account = nobody
name resolve order = bcast host
include = /etc/samba/smbshared.conf
lewashby 56 Junior Poster
I have a 120 Gig iPod classic but I think it's HD must be getting some bad places, it at leat 3 years old, but I think a few years older. A lot of the songs will not play, I have to plug it into my Mint desktop and delete the song with Banshee then re-sync. Is there any file system tools I could run on the iPod to keep bad sectors(or whatever they're called with SSDs) from being written to again? Thanks.
lewashby 56 Junior Poster
greens = dict(green="#0080000", olive="#808000", lime="#00FF00")
>>> print("{green} {olive} {lime}".format(**greens))
-> #0080000 #808000 #00FF00
In the program above what are green, olive, and lime in the dict function? I've seen and read about supplying a function with keyword arguments but only when the function was written with default argument. Even then your keyword arguments would have to match the default arguments written in for that function. I don't think dict() has the default args green, olive, and or lime so what am I missing here?
Also, what does **greens do?
lewashby 56 Junior Poster
I don't see topbar anywhere in your css but it's referenced in your html?
lewashby 56 Junior Poster
Thanks, I'll give this a try. Kinda new to CSS, when position is relative, what is it relative to? Thanks again.
lewashby 56 Junior Poster
I'm trying to create this site with a solid black top bar the extends from the left img all the way to the right of the screen, then add some text on top of the horizontal block. I created the block just find but when I went to add text on top of it, it extended the block down under the text and to the rest of the screen to the right. What I want is the the text to be aligned 50% left right of the black bar and 50% vertical of the black bar. Which is why I tried wrapping my divs the way they are. The image is w=200, h=266, here is my html and css.
CSS
body { background-color:#5E5858; margin:0px }
#topbar div
{
display: block;
position:relative;
left:200px;
position:absolute;
top:0px;
width:100%;
height:266px;
background:black;
}
#heading div
{
position:relative;
color:green;
top:50%;
right:50%;
}
html
<!DOCTYPE html>
<html>
<head>
<title>Test Site</title>
<link rel="stylesheet" type="text/css" href="style.css">
<style="text/css" />
</title>
</head>
<body>
<img src='assets/pic.jpg' />
<div id='topbar'>
<div id='1'>
<div id='heading'>
<div id='1'>Welcome to</div>
</div></div></div>
</body>
</html
>
lewashby 56 Junior Poster
Assuming they support the same protocols will a 5.2 not even see a 2.4 and vise versa?
lewashby 56 Junior Poster
I have a Ubiquiti radio in the house and I think it's a 5.2 GHz. I did a scan to see if it could see my router's SSID but it could not. Could that be becaue my router may be a 2.4 GHz AP? Can one see the tother, does it matter?
lewashby 56 Junior Poster
Server
#!/usr/bin/python3
import socket
from time import ctime
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
udpSerSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udpSerSock.bind(ADDR)
while(True):
print('waiting for message...')
data, addr = udpSerSock.recvfrom(BUFSIZ)
udpSerSock.sendto(data, addr)
print('...received from and returned to:', addr)
udpSerSock.close()
#END#
Client
#!/usr/bin/python3
import socket
HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
udpCliSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while(True):
data = input('> ')
if not data:
break
udpCliSock.sendto(data, ADDR)
data, ADDR = udpCliSock.recvfrom(BUFSIZ)
if not data:
break
print(data)
udpCliSock.close()
#END#
What is the relevance of BUFSIZE? When and why do I need to wory aobut BUFSIZ? Also, when I run this program this is the message I get on the client screen after typing anything and pressing enter.
udpCliSock.sendto(data, ADDR)
TypeError: 'str' does not support the buffer interface
One last thing, how could these to programs me modified so that the server and client simply sent and received a simple 'hello world'? Thanks.
lewashby 56 Junior Poster
I need to link a momentary push swith to a raspberry pi. I need to know if it's possible to make the mps issue either a command to the Linux OS or a command to the browser that replicates pushing a specific HTML button a page in the browser? What's possible and which is the best option?
lewashby 56 Junior Poster
Thanks, got it working. I didn't have all my '()' symbols inserted correctly. One last thing, what BUFSIZ all about, when and why do I need to wory about bufsize, what is it?
lewashby 56 Junior Poster
Thank, I made those changes and all though the errors are gone after pressing RETURN it goes back to the prompt and I don't get any output.
I also figured out the connection issue, I chagned '172.0.0.1' to 'localhost' and now it works fine, I know that doesn't make any sence but go figure.
One last thing, what is all this encode/decode stuff? Thanks, I appreciate your help.
lewashby 56 Junior Poster
In this line -> tcpSerSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
what is the first 'socket' after the '=' sign, is that refering to a socket class making tcpSerSock an object or just to a module called socket?
After reading the documentation I see that socket.accept returns a connection and an address pair, but it doesn't say what is returns them in, a list or a tuple or something else? So how would this line work
-> tcpCliSock, addr = tcpSerSock.accept()
?
And can anyone tell me why the following two server/client programs are not working on my system (Linux)? When I run the client it says -> tcpCliSock.connect(ADDR) -> OSError: [Errno 101] Network is unreachable
Client
#!/usr/bin/python3
from socket import *
HOST = '127.0.0.1' # or 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)
while(True):
data = input('> ')
if not data:
break
tcpCliSock.send(data)
data = tcpCliSock.recv(BUFSIZ)
if not data:
break
print(data.decode('utf-8'))
tcpCliSock.close()
Server
#!/usr/bin/python3
from socket import *
from time import ctime
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
print('waiting for connection...')
tcpCliSock, addr = tcpSerSock.accept()
print('...connected from:', addr)
while True:
data = tcpCliSock.recv(BUFSIZ)
if not data:
break
tcpCliSock.send('[%s] %s' % (bytes(ctime(), 'utf-8'), data))
tcpCliSock.close()
tcpSerSock.clsoe()
lewashby 56 Junior Poster
In the following program how does the line r.size = 150, 100
actually set the values using this line -> size = property(getSize, setSize)
? property has two arguments, getSize & setSize, it seems to me that would only allow it so get one value and set one value.
#!/usr/bin/python3
class Rectangle:
def __init__(self):
self.width = 0
self.height = 0
def setSize(self, size):
self.width, self.height = size
def getSize(self):
return self.width, self.height
size = property(getSize, setSize)
r = Rectangle()
r.width = 10
r.height = 5
print(r.size)
r.size = 150, 100
print(r.width)
Also, what are some small projects I can do the improve me python OOP?
lewashby 56 Junior Poster
I know python is an interpreted language but is there a way to compile your code? What if you write a program in python 3 and the user has python 2.x, or worse yet, doesn't have python at all. How can you create an executable via compiling or any other means so the you don't have to worry about what your users may or may not have. I know there is a way to do this in Windows because I seen it in one of my python books.
lewashby 56 Junior Poster
Thanks, I'm reading up on that page now.
lewashby 56 Junior Poster
class MemberCounter:
members = 0
def init(self):
MemberCounter.members += 1
# m1 = MemberCounter()
# m1.init()
# MemberCounter.members
-> 1
# m2 = MemberCounter()
# m2.init()
# MemberCounter.members
-> 2
# m1.members
-> 2
#m2.members
-> 2
# m1.members = 'Two'
# m1.members
-> 'Two'
# m2.members
-> 2
In the above code how is it that in the upper portion m1 and m2 are sharing the same members variable but after I re-assign m1 to 'Two' and are suddenly two different variables? Also, what is init?
lewashby 56 Junior Poster
I'm having trouble understanding the keyword 'this' in php. When and where does it need to be used? Why can you not simply use the variable name as you would normally do when not placing a variable inside a class? In the small test case program below I can't even get the 'this' keyword to work.
#!/usr/bin/php5
<?php
class A
{
public $attribute = 'first attribute';
function myFunction()
{
echo "This is my attribute without the keyword this --> $attribute";
echo "This is my attribute with the keyword this --> $this->$attribute";
}
}
$a = new A();
$a->myFunction();
?>
lewashby 56 Junior Poster
How can I write bash script to force pre-written sql quaries and inserts into my sqlite3 DB? I am currently having to run my page in a browser and then the sqlite4 DB gets edited by php commands then I have to go back into sqlite3 and manually set everything back to a known state. I would like to be able to run a simple script that would re-set my DB back to original test state. I know how to handle permissions and command paths, I just need the bash to sqlite knowledge. Thanks.