Help me finish this c/8 search

For discussion of specific patterns or specific families of patterns, both newly-discovered and well-known.
John Goodman
Posts: 32
Joined: December 13th, 2019, 10:00 am

Re: Help me finish this c/8 search

Post by John Goodman » January 15th, 2020, 3:04 pm

dvgrn wrote:
January 15th, 2020, 1:56 pm
Sounds like several people have hit hard-to-search pieces by this time, though presumably a day or a week's worth of patience will eventually get them completed.

For the first few pieces, my system was able to handle doing the search in the background in 6-12 hours with no apparent strain. But now piece #0103 looks like it will take a full day or two.
Yes, I've hit a long one here too. I noticed that the time between dumps starts small, lengthens to a maximum, and then reverses (although not completely smoothly -- for example, here is piece0041, which took a total of 1h46m):
piece0041TimeDeltas.png
piece0041TimeDeltas.png (7.01 KiB) Viewed 8267 times
So I'm on piece 0042 now (and have been for over 24 hours), and after 31 dumps, the time delta is almost 13,000 seconds and continuing to lengthen! So this will apparently be a long haul.

User avatar
rowett
Moderator
Posts: 3832
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Help me finish this c/8 search

Post by rowett » January 15th, 2020, 5:53 pm

Here's the bash script I use to search multiple pieces over night. Save it in the search folder as "runsearch". I'm using this on Linux and Cygwin64.

Features:
  • Run multiple searches (just list them on the command line)
    • ./runsearch piece0001 piece0002 piece0003
  • Resume a partial search using just the piece name (otherwise they are skipped)
    • ./runsearch --resume piece0002
  • Provide verbose output while searches run
    • ./runsearch --verbose piece0004 piece0005
  • Specify number of threads (default is 4)
    • ./runsearch --threads 2 piece0004 piece0005
  • Automatically skips already searched pieces
  • Puts date stamps in the output file so you can see start and end time

Code: Select all

#! /bin/bash
#
# runsearch
# Run a set of searches
#
# Author: Chris Rowett
# Version: 1.0 - 15Jan2020

# pieces directory
piecedir=./pieces

# search executable
searchexe=./qfind-c8

# default number of threads
defaultthreads=4

# interrupt handler
function tidy() {
        printf "\n\n"
        echo -e "${yellow}*** User interrupt!${off}"

        exit
}

# setup color code
function setcolors() {
        if [ $nocolor -eq 1 ] ; then
                # do not use color
                off=""
                red=""
                green=""
                yellow=""
                blue=""
                magenta=""
                cyan=""
                white=""
        else
                # terminal escape codes for text colours
                off="\e[m"
                red="\e[31m"
                green="\e[32m"
                yellow="\e[33m"
                blue="\e[34m"
                magenta="\e[35m"
                cyan="\e[36m"
                white="\e[37m"
        fi
}

# show command usage
function showusage() {
        setcolors
        echo -e "Usage: ${yellow}${BASH_SOURCE} [--all] [--resume] [--verbose] [--nocolor] [--help] ${cyan}piece...${off}"
        echo -e "Where: \t${yellow}-a | --all${off} search all pieces"
        echo -e "\t${yellow}-r | --resume${off} resume partially searched pieces"
	echo -e "\t${yellow}-t | --threads${off} define number of threads (default ${defaultthreads})"
	echo -e "\t${yellow}-v | --verbose${off} display search output"
        echo -e "\t${yellow}-n | --nocolor${off} do not use terminal colors"
        echo -e "\t${yellow}-h | --help${off} display command help"
	echo -e "\nRuns the search for each specified piece: e.g. ${yellow}${BASH_SOURCE} ${cyan}piece0001 piece0002 piece0003${off}"
	echo -e "Pieces must be located in: ${cyan}${piecedir}/${off}"
        echo -e "Search all pieces using ${yellow}--all${off}: e.g. ${yellow}${BASH_SOURCE} --all${off}"
	echo -e "Partially completed searches can be resumed using ${yellow}--resume ${off}: e.g. ${yellow}${BASH_SOURCE} --resume ${cyan}piece0002${off}"
	echo -e "Already completed searches will by skipped if ${cyan}./reportNNNN${off} exists."
}

# trap ctrl-c
trap tidy INT

# check command line arguments
processall=0
nocolor=0
showhelp=0
allowresume=0
threads=4
verbose=0
reg="^-"
[[ $1 =~ $reg ]] ; match=$?
while [ $match -eq 0 ] ; do
        case $1 in
                -a | --all )
                        processall=1
                        ;;
		-r | --resume )
			allowresume=1
                        ;;
		-t | --threads )
			shift
			threads=$1
			;;
		-v | --verbose )
			verbose=1
			;;
                -n | --nocolor )
                        nocolor=1
                        ;;
                -h | --help )
                        showhelp=1
                        ;;
        esac
        shift
        [[ $1 =~ $reg ]] ; match=$?
done

# check if help was requested
if [ ${showhelp} -eq 1 ] ; then
        showusage
        exit
fi

# check if there are any pieces specified
if [ $# -eq 0 ] && [ ${processall} -eq 0 ] ; then
        showusage
        exit 1
fi

# set colors
setcolors

# check if process all was specified
if [ ${processall} -eq 1 ] ; then
	pieces=`ls ${piecedir}/piece* | sed "s@.*/@@"`
else
	pieces=${@}
fi

# process each piece
for piece in ${pieces} ; do
	piecefile=${piecedir}/${piece}
	# check if the piece exists
	if [ -f ${piecefile} ] ; then
		# check if there is a report file
		reportfile="${piece/piece/report}"
		if [ -f ${reportfile} ] ; then
			# report already exists so skip
			echo -e "${yellow}Skipping completed search: ${off}${piecefile} ${yellow}report:${off} ${reportfile}"
		else
			# create output file name
			outputfile="${piece/piece/output}"

			# check for dump files
			dumpbase="${piece/piece/dump}-"
			dumpfile=${piecedir}/${dumpbase}0001
			if [ -f ${dumpfile} ] ; then
				# check if resume allowed
				if [ ${allowresume} -eq 0 ] ; then
					echo -e "${cyan}Ignoring partially searched piece: ${off}${piecefile}"
					echo -e "Use ${yellow}--resume${off} to resume search."
				else
					# find latest dump file
					dumpfiles=(`ls ${piecedir}/${dumpbase}* | sed "s@.*/@@"`)
					lastindex=${#dumpfiles[@]}
					lastindex=$((lastindex-1))
					latestdumpfile=${dumpfiles[${lastindex}]}

					# resume search
					echo -e "${cyan}Resuming search in piece: ${off}${piecefile} ${cyan}from${off} ${latestdumpfile}"
					echo -e "\nResume `date`" >> ${outputfile}
					if [ ${verbose} -eq 1 ] ; then
						echo -e "${magenta}Resume `date`${off}"
						${searchexe} ${latestdumpfile} t${threads} | tee -a ${outputfile}
						echo -e "${magenta}End `date`${off}"
					else
						${searchexe} ${latestdumpfile} t${threads} >> ${outputfile}
					fi
					echo "End `date`" >> ${outputfile}
				fi
			else
				# start search
				echo -e "${green}Searching piece: ${off}${piece}"
				echo "Start `date`" > ${outputfile}
				if [ ${verbose} -eq 1 ] ; then
					echo -e "${magenta}Start `date`${off}"
					${searchexe} ${piece} t${threads} | tee -a ${outputfile}
					echo -e "${magenta}End `date`${off}"
				else
					${searchexe} ${piece} t${threads} >> ${outputfile}
				fi
				echo "End `date`" >> ${outputfile}
			fi
		fi
	else
		echo -e "${red}Could not find piece: ${off}${piecefile}"
	fi
done

runsearch.png
runsearch.png (24.78 KiB) Viewed 8244 times

John Goodman
Posts: 32
Joined: December 13th, 2019, 10:00 am

Re: Help me finish this c/8 search

Post by John Goodman » January 15th, 2020, 6:33 pm

rowett wrote:
January 15th, 2020, 5:53 pm
Here's the bash script I use to search multiple pieces over night. Save it in the search folder as "runsearch". I'm using this on Linux and Cygwin64.
That's really nice. Just a note: I had to change '\e' to '\033' to get the colors to work on a Mac using iTerm2 app.

Can you get it to beep like mad if it notices a ship000x file in the directory? :D

wildmyron
Posts: 1545
Joined: August 9th, 2013, 12:45 am
Location: Western Australia

Re: Help me finish this c/8 search

Post by wildmyron » January 15th, 2020, 8:45 pm

@Sokwe: In addition to my speculation about search time efficiency vs deepening amount (which is complex) I considered increasing the lookahead cache. After mentioning this idea on Discord, Pavgran looked into testing this idea but found the relevant code is disabled in qfind-c8 and it's not a simple matter to re-enable it. Is there a possibility of increasing the efficiency of this search with that mechanism and could you elaborate on the changes and how that cache works with qfind's multithreading?
The 5S project (Smallest Spaceships Supporting Specific Speeds) is now maintained by AforAmpere. The latest collection is hosted on GitHub and contains well over 1,000,000 spaceships.

Semi-active here - recovering from a severe case of LWTDS.

Sokwe
Moderator
Posts: 2694
Joined: July 9th, 2009, 2:44 pm

Re: Help me finish this c/8 search

Post by Sokwe » January 15th, 2020, 10:42 pm

wildmyron wrote:
January 15th, 2020, 8:45 pm
I considered increasing the lookahead cache. After mentioning this idea on Discord, Pavgran looked into testing this idea but found the relevant code is disabled in qfind-c8 and it's not a simple matter to re-enable it. Is there a possibility of increasing the efficiency of this search with that mechanism and could you elaborate on the changes and how that cache works with qfind's multithreading?
When I first incorporated the lookahead cache into qfind (based on Tom's additions to zfind) I found that it improved the speed of searches at speeds above about c/5, but it slowed searches for slower ships. I'm not sure if a larger cache would be enough to overcome this.

The way the cache works with multithreading is the easiest, most naive implementation I could think of. Each thread gets its own cache, so if the cache memory per thread is large it can eat up a lot of RAM.

The only parts of the caching that I removed were the option to set cachemem and the allocation of the cache in main(). This could be added back in easily, but if you just want to test the speed with caching you could use qfind-s. To make the dump or piece files compatible with qfind-s, copy them, open the copy in a text editer, remove lines 2 and 3 (just above the rule), and save. Of course you will also have to edit qfind-s to have the correct period, width, and offset.

Again, I found that caching slowed down the search for slow spaceships. If anyone can find a way to make caching improve the search speed instead, I'd be interested to hear it. I never tested caching on any of these pieces.
On Discord, wildmyron wrote:i have a feelinv that gfind searches like this can progess more efficiently if the search parameters don't require deepening too far, and splitting up the search would help with that. However, I don't have any empirical evidence from my experience with gfind to actually back that up.
I think this is true, and this is why I set the minimum deepening increment to 3 instead of the default 8. I considered putting a limit on the level of deepening before publishing the project, but I decided not to simply because I was impatient to get started and didn't want to bother testing a new feature. Now that I see how the search is progressing, and how everyone is getting caught on long pieces, it might be a good addition.

By the way, every piece should eventually reach a depth of at least 260. The length of a partial result is approximately (depth/period), so every report should give a partial result of length at least 31 or 32.
-Matthias Merzenich

wildmyron
Posts: 1545
Joined: August 9th, 2013, 12:45 am
Location: Western Australia

Re: Help me finish this c/8 search

Post by wildmyron » January 16th, 2020, 4:49 am

Thank you for your comments. I'm surprised to hear that the lookahead cache actually slowed some searches down. It would be very interesting to get a better insight into what's going on there.

I think deepening amount of 3 was quite reasonable, but it always seemed to me that the high deepening levels in difficult parts of the search were problematic. Often i would interrupt gfind searches to reduce mindeep, or to make oneoff changes to the current level. My main concern wrt efficiency is/was that the deepening rounds are often repeating a lot of work that's already been done, and the deeper the DFS has to go the more work that is repeated. I think your idea of setting a maximum deepening level could be a good compromise, but absent hard data it's presumably better to carry on with the search as is.
The 5S project (Smallest Spaceships Supporting Specific Speeds) is now maintained by AforAmpere. The latest collection is hosted on GitHub and contains well over 1,000,000 spaceships.

Semi-active here - recovering from a severe case of LWTDS.

User avatar
rowett
Moderator
Posts: 3832
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Help me finish this c/8 search

Post by rowett » January 16th, 2020, 6:44 am

After thinking about Amdahl's Law I did some testing on running different numbers of threads vs different number of processes.

I used piece0167 as my test since it completes the fastest and all tests were done on my desktop PC using Cygwin64:
  • CPU: i7 2600K (quad core, hyper threaded)
  • Memory: 16Gb
  • Operating system: Windows 10 64bit
First I ran a single process with different numbers of threads:

Code: Select all

Threads	Elapsed
1	13:36
2	08:19
3	06:54
4	06:04
To process 4 pieces (of the same size as piece0167) would require 4x the elasped time if we run them sequentially:

Code: Select all

Threads	Elapsed x 4
1	54:24
2	33:16
3	27:36
4	24:16
runthreads.png
runthreads.png (37.91 KiB) Viewed 8194 times

Then I ran a number of single threaded processes in parallel:

Code: Select all

Number	Elapsed
1	13:36
2	14:41
4	18:24
To process 4 pieces would require 4x1, 2x2 and 1x4:

Code: Select all

Number	Elapsed for 4
1	54:24
2	29:22
4	18:24
runprocess.png
runprocess.png (34.96 KiB) Viewed 8194 times
Conclusion:
  • If you have enough memory then it's faster to run single threaded searches in parallel.

Sokwe
Moderator
Posts: 2694
Joined: July 9th, 2009, 2:44 pm

Re: Help me finish this c/8 search

Post by Sokwe » January 16th, 2020, 7:35 am

rowett wrote:
January 16th, 2020, 6:44 am
If you have enough memory then it's faster to run single threaded searches in parallel.
This is true. I figured that most people would not have the available memory to run more than one search. I certainly don't, but my computer is getting rather old.

I should note that only the deepening portion of the search is multi-threaded (so Amdahl's law is quite applicable). The breadth-first portion is just performed with a single thread. This was easier than trying to schedule reading and writing to the queue between multiple threads. It also means that two searches with the same settings will give identical dump files.

It might be that piece 0167 spends a smaller proportion of its time in the deepening stage and so can take less advantage of the multi-threading. Even in longer searches, however, there is enough time that threads are idle such that you might make more efficient use of your processors by running multiple instances.
wildmyron wrote:
January 16th, 2020, 4:49 am
My main concern wrt efficiency is/was that the deepening rounds are often repeating a lot of work that's already been done, and the deeper the DFS has to go the more work that is repeated.
I am certain that this is true, although I've never gathered hard evidence for it. I've wondered what might be a way to address this shortcoming, but I've never had the time to try anything.
-Matthias Merzenich

thunk
Posts: 170
Joined: October 3rd, 2015, 8:50 pm
Location: Central USA

Re: Help me finish this c/8 search

Post by thunk » January 16th, 2020, 11:19 pm

Claiming pieces 93-98 for now. Let's see how this goes.
Edit: Piece 94 has completed.

Code: Select all

#C Search 0094 complete.
#C 0 spaceships found.
#C Longest partial:
x = 19, y = 49, rule = B3/S23
5b2o5b2o$2o3bo2bobo2bo3b2o$5bo2bobo2bo$ob2o3b2ob2o3b2obo$ob4o2b
obo2b4obo$bobo2b2o3b2o2bobo$3bo3b2ob2o3bo$bo7bo7bo$bo2bo3b3o3bo2b
o$2bobo9bobo$5b2o5b2o$5b2o5b2o$3bo11bo$3b2ob2o3b2ob2o$8bobo2$b5o
2bobo2b5o$4b3o5b3o$8b3o$2b2o3b5o3b2o$2b4o3bo3b4o$4b2obo3bob2o$5b
o2bobo2bo$6bo2bo2bo$b2o3bo2bo2bo3b2o$b2o4b5o4b2o$b2o13b2o$6b3ob3o
$6b3ob3o2$4b5ob5o$8bobo$b2o2b2obobob2o2b2o$b2o2b2obobob2o2b2o$2b
2o5bo5b2o$3b2o9b2o$2bobo9bobo$bo2bo9bo2bo$bob4o5b4obo$2obo2bo5bo
2bob2o$bo4bo5bo4bo$2bo13bo$2bobo9bobo$4b2ob2ob2ob2o$3bo4bobo4bo$
2bo4bo3bo4bo$2bo13bo$5b3o3b3o$5b3o3b3o!
"What's purple and commutes?
The Evanston Express."

User avatar
Hdjensofjfnen
Posts: 1743
Joined: March 15th, 2016, 6:41 pm
Location: re^jθ

Re: Help me finish this c/8 search

Post by Hdjensofjfnen » January 18th, 2020, 1:35 am

Before I start...
Can anyone give me an Explanation for Dummies on how to run the C++ file in the ZIP archive?

Code: Select all

x = 5, y = 9, rule = B3-jqr/S01c2-in3
3bo$4bo$o2bo$2o2$2o$o2bo$4bo$3bo!

Code: Select all

x = 7, y = 5, rule = B3/S2-i3-y4i
4b3o$6bo$o3b3o$2o$bo!

User avatar
dvgrn
Moderator
Posts: 10713
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Help me finish this c/8 search

Post by dvgrn » January 18th, 2020, 7:05 am

Hdjensofjfnen wrote:
January 18th, 2020, 1:35 am
Before I start...
Can anyone give me an Explanation for Dummies on how to run the C++ file in the ZIP archive?
The first few posts walk through all the steps -- assuming you have a C++ compiler installed. What's your operating system? If it's Windows, your first step is probably to download and install 64-bit Cygwin.

Scroll down in the apgmera install instructions to find the "Windows users (pre-Windows 10, Cygwin)" section, and do what it says there. If you don't understand a step, don't go on to the next step; Google until you understand that step. This may take a while, but when you're done, you will in fact have a C++ compiler installed.

If you haven't tried this kind of thing before, the whole process is kind of like suddenly getting teleported to the middle of a busy city on another planet. You'll have no idea what the rules are, or how to avoid getting run over by whatever passes for the local buses -- so you just have to stay really alert all the time. Basically, start inventing theories about how things are supposed to work, test your theories, and when they totally don't work at all (this happens a lot and is perfectly normal) make sure you remember that they _are_ theories so you can quickly discard them and try the next thing.

Your Mission, Should You Choose To Accept It
Again assuming Windows and therefore Cygwin, your eventual goal will be to get a Cygwin terminal open, use the "cd" command to get to the folder where you've put the unzipped contents of the ZIP archive, type the compilation command testitemqlstudop suggested (starts with "g++" -- that's the compiler), and get a new file to appear in the folder that's called "qfind-c8.exe". You can't run a C++ file, but you can run a compiled executable file made from that C++ file, and "qfind-c8.exe" is what it will be called by default.

Other Random Useful Factoids
Be warned that in a Cygwin terminal, copying and pasting and editing the lines you type in won't work the way you expect them to. Up and down arrows are useful for re-trying commands you've typed before; left and right arrows let you move the cursor to edit the current command. The mouse is mostly only useful for selecting, and then you'll have to hit [Enter] or Ctrl+Insert to copy, rather than Ctrl+C. Ctrl+C does something completely different: if there's a program running in that terminal window, it stops it with no warnings or second chances. Right-clicking in the Terminal window will help with pasting.

User avatar
dvgrn
Moderator
Posts: 10713
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Help me finish this c/8 search

Post by dvgrn » January 18th, 2020, 9:50 am

Piece #0104 gave me the longest partial I've seen yet -- length 69. Just looked through the other reports so far, and there don't seem to be any others above length 60, and very few even in the 50s. Seems almost as if this one actually wants to be a c/8 spaceship. It takes 80+ ticks for the front end to stop working:

Code: Select all

x = 19, y = 69, rule = B3/S23
2bobo2b5o2bobo$3o3bo2bo2bo3b3o$2ob2o2bo3bo2b2ob2o$b2obo9bob2o$2bob2o7b
2obo$5bobo3bobo$bo15bo$bo5bo3bo5bo$bob5o3b5obo$2bo2bob2ob2obo2bo$b3o4b
obo4b3o$2bobobo5bobobo$2b3obo5bob3o$3b2o9b2o$6b2obob2o$6b3ob3o2$3b2o9b
2o$2b2obo3bo3bob2o$2b3o2b2ob2o2b3o$bo15bo$bob4o5b4obo$3bo11bo$3b2obobo
bobob2o$4b4o3b4o3$6bo5bo$2bob2obo3bob2obo$bobo4bobo4bobo$2b2o4bobo4b2o
$5b2obobob2o$5b2obobob2o$6bobobobo$6b3ob3o2$4b2o7b2o2$4b2o7b2o$5bob2ob
2obo$6bobobobo$b3o2b3ob3o2b3o$2b3obo5bob3o$3b2o9b2o$3bo11bo$2bo2bobo3b
obo2bo$2bobo3bobo3bobo$5bob2ob2obo$4b2o7b2o2$8b3o$3bo3b2ob2o3bo$3b2o2b
2ob2o2b2o$5bo7bo2$3bobo2b3o2bobo$2b2ob2ob3ob2ob2o$bo6b3o6bo$2b3o9b3o$
2bo2b3o3b3o2bo$4bo3bobo3bo$b2ob3o5b3ob2o$b2obo3bobo3bob2o$2bo3bobobobo
3bo$3bo4bobo4bo$3bo2bobobobo2bo$6bobobobo$6bobobobo$6b2o3b2o!

User avatar
muzik
Posts: 5652
Joined: January 28th, 2016, 2:47 pm
Location: Scotland

Re: Help me finish this c/8 search

Post by muzik » January 18th, 2020, 11:30 am

I might try doing a couple searches for this thread later.

User avatar
_zM
Posts: 186
Joined: June 26th, 2016, 3:07 pm

Re: Help me finish this c/8 search

Post by _zM » January 18th, 2020, 4:45 pm

I'm starting piece #0039 now.
moment

User avatar
Hdjensofjfnen
Posts: 1743
Joined: March 15th, 2016, 6:41 pm
Location: re^jθ

Re: Help me finish this c/8 search

Post by Hdjensofjfnen » January 19th, 2020, 2:57 am

Okay, haphazardly running on Repl.it:

Code: Select all

clang version 7.0.0-3~ubuntu0.18.04.1 (tags/RELEASE_700/final)
> clang++-7 -pthread -o main main.cpp qfind-c8.cpp tab.cpp
qfind-c8.cpp:893:38: warning: operator '<<' has lower
      precedence than '+'; '+' will be evaluated first
      [-Wshift-op-parentheses]
            srows[i] = r << MAXWIDTH + 1;
                         ~~ ~~~~~~~~~^~~
qfind-c8.cpp:893:38: note: place parentheses around the '+'
      expression to silence this warning
            srows[i] = r << MAXWIDTH + 1;
                            ~~~~~~~~~^~~
1 warning generated.
/tmp/qfind-c8-80c968.o: In function `main':
qfind-c8.cpp:(.text+0x5eb0): multiple definition of `main'
/tmp/main-03d742.o:main.cpp:(.text+0x0): first defined here
/tmp/tab-f2836e.o: In function `parseRule(char const*, int*)':
tab.cpp:(.text+0x0): multiple definition of `parseRule(char const*, int*)'
/tmp/qfind-c8-80c968.o:qfind-c8.cpp:(.text+0x0): first defined here
/tmp/tab-f2836e.o:(.data+0x0): multiple definition of `rulekeys'
/tmp/qfind-c8-80c968.o:(.data+0x0): first defined here
/tmp/qfind-c8-80c968.o: In function `makeRow(int, int)':
qfind-c8.cpp:(.text+0xc55): undefined reference to `omp_get_thread_num'
/tmp/qfind-c8-80c968.o: In function `loadState(char*)':
qfind-c8.cpp:(.text+0x4e67): undefined reference to `omp_set_num_threads'
clang: error: linker command failed with exit code 1 (use -vto see invocation)
compiler exit status 1
> g++ qfind-c8.cpp -O3 -fopenmp -march=native -o qfind-c8
> ./qfind-c8 piece0091 t2 > output0091
>
I hope that all is going well, but I'm pretty sure that nothing is happening right now.

EDIT:
output0091 shows:

Code: Select all

qfind-simple v1.1 by Matthias Merzenich, 7 January 2020
- ./qfind-c8 piece0091 t2

Load from file pieces/piece0091 failed
EDIT: Doh! I didn't put piece0091 in the pieces folder!
EDIT: Okay, things should be going relatively smoothly now. Both output0091 and push0091 were created without problems.
EDIT: Okay, uh, it says "Killed" in the command line, although I didn't do anything. Here's the contents of push0091:

Code: Select all

x = 13, y = 6, rule = B3/S23
3o7b3o$bobo5bobo$3bo5bo$2bobo3bobo$2bobo3bobo$3bo5bo!
and the contents of output0091:

Code: Select all

qfind-simple v1.1 by Matthias Merzenich, 7 January 2020
- ./qfind-c8 piece0091 t2

State successfully loaded from file pieces/piece0091
Rule: B3/S23
Period: 8
Offset: 1
Width:  10
Symmetry: odd
Dump state after queue compaction
Queue size: 2^22
Hash table size: 2^21
Minimum deepening increment: 3
Number of threads: 2
Starting search
Queue full, depth 58, deepening 3, 524k/551k
From what I can infer, I don't have enough RAM to continue the search.

Code: Select all

x = 5, y = 9, rule = B3-jqr/S01c2-in3
3bo$4bo$o2bo$2o2$2o$o2bo$4bo$3bo!

Code: Select all

x = 7, y = 5, rule = B3/S2-i3-y4i
4b3o$6bo$o3b3o$2o$bo!

User avatar
testitemqlstudop
Posts: 1367
Joined: July 21st, 2016, 11:45 am
Location: in catagolue
Contact:

Re: Help me finish this c/8 search

Post by testitemqlstudop » January 19th, 2020, 7:36 am

dvgrn wrote:
January 18th, 2020, 9:50 am
Piece #0104 gave me the longest partial I've seen yet -- length 69. Just looked through the other reports so far, and there don't seem to be any others above length 60, and very few even in the 50s. Seems almost as if this one actually wants to be a c/8 spaceship. It takes 80+ ticks for the front end to stop working:

Code: Select all

x = 19, y = 69, rule = B3/S23
2bobo2b5o2bobo$3o3bo2bo2bo3b3o$2ob2o2bo3bo2b2ob2o$b2obo9bob2o$2bob2o7b
2obo$5bobo3bobo$bo15bo$bo5bo3bo5bo$bob5o3b5obo$2bo2bob2ob2obo2bo$b3o4b
obo4b3o$2bobobo5bobobo$2b3obo5bob3o$3b2o9b2o$6b2obob2o$6b3ob3o2$3b2o9b
2o$2b2obo3bo3bob2o$2b3o2b2ob2o2b3o$bo15bo$bob4o5b4obo$3bo11bo$3b2obobo
bobob2o$4b4o3b4o3$6bo5bo$2bob2obo3bob2obo$bobo4bobo4bobo$2b2o4bobo4b2o
$5b2obobob2o$5b2obobob2o$6bobobobo$6b3ob3o2$4b2o7b2o2$4b2o7b2o$5bob2ob
2obo$6bobobobo$b3o2b3ob3o2b3o$2b3obo5bob3o$3b2o9b2o$3bo11bo$2bo2bobo3b
obo2bo$2bobo3bobo3bobo$5bob2ob2obo$4b2o7b2o2$8b3o$3bo3b2ob2o3bo$3b2o2b
2ob2o2b2o$5bo7bo2$3bobo2b3o2bobo$2b2ob2ob3ob2ob2o$bo6b3o6bo$2b3o9b3o$
2bo2b3o3b3o2bo$4bo3bobo3bo$b2ob3o5b3ob2o$b2obo3bobo3bob2o$2bo3bobobobo
3bo$3bo4bobo4bo$3bo2bobobobo2bo$6bobobobo$6bobobobo$6b2o3b2o!
0069 is done with a partial of length 74. Doesn't look promising though.

Code: Select all

x = 19, y = 74, rule = B3/S23
3b3o7b3o$3b3o7b3o3$7bo3bo$5b2o5b2o$6bo5bo$4bobobobobobo$2bob4o3b4obo$b
o15bo$2b2o2bo5bo2b2o$2b2o3b5o3b2o$7b5o$2b2o11b2o$2b3o9b3o$3bob2o5b2obo
$3bob2o5b2obo$3b2o3b3o3b2o$2b2o5bo5b2o$3bo11bo$bo15bo$b2o3bo5bo3b2o$b
2o3bo5bo3b2o$4bo2bo3bo2bo$7bo3bo$b4o2bo3bo2b4o$bob2ob2o3b2ob2obo$5bobo
3bobo$5b2o5b2o$5bo7bo$5b2o5b2o2$2b3o9b3o$2b2o11b2o$2bob3obobob3obo$3bo
b2o2bo2b2obo$b2obobobobobobob2o$3bo11bo$3b2o2bo3bo2b2o$4bo2bo3bo2bo$4b
o9bo$2b3o9b3o$b4o9b4o$o3bo9bo3bo$ob3o2bo3bo2b3obo$2b2obobobobobob2o$b
4o3bobo3b4o$3b3o2bobo2b3o$7b2ob2o$8bobo$3b3o2bobo2b3o$2bo13bo$bo2bo9bo
2bo$bobo11bobo$6o7b6o$b2o3b2obob2o3b2o$2bo3bob3obo3bo$7bobobo$2bo4bo3b
o4bo$2bo13bo$3bobo7bobo$4b3o5b3o$2bo4bo3bo4bo$bo3bob2ob2obo3bo$2bo4b2o
b2o4bo$4b3obobob3o$4b2o7b2o2$8b3o$3b3obobobob3o$b3o2bobobobo2b3o$2bo4b
5o4bo$7bo3bo$2b2o3bo3bo3b2o!

AforAmpere
Posts: 1334
Joined: July 1st, 2016, 3:58 pm

Re: Help me finish this c/8 search

Post by AforAmpere » January 19th, 2020, 12:55 pm

As of this post, this summarizes the so far completed searches:

EDIT, at 20:33 EST:

Code: Select all

x = 5020, y = 74, rule = B3/S23
o28b3o28bo28b3o29bo23b2o2b3o2b2o23bobo28bo29bo24bobo5bobo24bo28b3o28bo
28b3o28bo29bo29bo29bo29bo29bo29bo29bo29bo29bo29bo29bo29bo29bo29bo28b3o
28bo29bo29bo29bo29bo29bo29bo29bo29bo29bo25bo3bo3bo17b2o3b2o3b2o3b2o21b
o29bo22b3o9b3o16bo11bo17bo11bo23bo23bo11bo23bo29bo29bo23b2o9b2o23bo29b
o29bo29bo29bo23b3o7b3o17bob2o5b2obo23bo29bo29bo29bo29bo29bo29bo29bo24b
o9bo18b3o7b3o23bo29bo29bo29bo23b2o9b2o17bobo7bobo23bo26bo5bo26bo29bo
25b3o3b3o22bo5bo22b2o5b2o25bo29bo26bo5bo23bo5bo23bo5bo22b2o5b2o25bo26b
o5bo26bo29bo25b3o3b3o21b3o3b3o22b2o3b2o26bo26bo5bo26bo26bo5bo22b3o3b3o
22bo5bo23b2o3b2o23b2o3b2o23b2o3b2o23b2o3b2o23bo5bo26bo29bo29bo29bo29bo
29bo29bo29bo29bo29bo29bo29bo29bo29bo29bo29bo29bo29bo29bo29bo24b2o3bo3b
2o24bo29bo29bo29bo29bo29bo29bo29bo29bo29bo26b2o3b2o26bo29bo29bo29bo29b
o29bo29bo29bo22bo13bo15bo13bo15bo13bo15b2o5bo5b2o15bo13bo21b3o23b11o
21b7o26bo28b3o28bo29bo28b3o28bo29bo28b3o28bo27b5o27bo29bo29bo$30bo29bo
27bo3bo51bo11bo20b2obob2o26bo29bo23bo2b7o2bo21b5o25bo3bo27bo24b2ob2ob
2ob2o23b3o27bobo146b2ob2o26bobo57bobo57bobo26b2ob2o86b3o323bobob3obobo
16b2o3bobobobo3b2o104bobo9bobo15bobo9bobo45bobo9bobo105b2obo2b3o2bob2o
196bo3b2ob2o3bo257bobo7bobo17b3o7b3o136bobob2o3b2obobo15bo3bo5bo3bo49b
o5bo111b3o5b3o19bob2o3b2obo80bobo3bobo20b2obo3bob2o20bobo3bobo20bo2b2o
b2o2bo50bobo3bobo81b3o3b3o21b3o3b3o17b3obobo3bobob3o47bobo3bobo51b2o5b
2o20b2o2bobo2b2o21b2o3b2o21bo2bo3bo2bo20bo2bobo2bo22bobobobo22bo2bobo
2bo22b2o3b2o621bobo2bo2bobo323bobo260bobo11bobo12b2ob2o9b2ob2o12bobo
11bobo12b2o2bo3bobo3bo2b2o13b3o9b3o19bo5bo24b5o24b7o54b5o85bo3bo27bo
29bo27bo3bo26b3o26bobobo27bo29bo29bo$60bo84b3o5b3o19b2o7b2o24bo27b2ob
2o22bob7obo21b2obob2o23bo2bo2bo22b2o5b2o19bob2obobob2obo232bobo57bobo
57bobo444bo2b3o2bo17b2o3bobobobo3b2o107bo7bo18bobo9bobo45bobo9bobo108b
o7bo198bo5bobo5bo256bobo7bobo165bo2bo9bo2bo14bo3b2o3b2o3bo48bobo3bobo
82bo5bo21bo3bobo3bo18b2obobobobob2o79bobo3bobo23b2ob2o23bobo3bobo80bo
2b2ob2o2bo79bo9bo17bo13bo18bo7bo51bob2ob2obo50bo2bo3bo2bo18bo2bobobobo
2bo19bobo3bobo24bobo23b5ob5o21bobobobo22b2obobob2o24bobo624bo3bo3bo
321b2obobob2o257bobo11bobo43bo2bo9bo2bo20bobo21bob2o7b2obo19bo5bo22b2o
bobob2o22bo5bo53bo5bo84bo3bo85bo3bo21b2o2b2ob2o2b2o18b2o7b2o23b3o27b3o
27b3o$28b2ob2o55b2ob2o53bo7bo20b2o7b2o19bo9bo50bobo3bobo22b3ob3o22bo7b
o21b2obobob2o19bo3bo3bo3bo22b3o22bo5bo5bo173bo59bo59bo444bo9bo21bo5bo
86bo21bo3bo7bo3bo15bo11bo47bo5bo5bo109bobo3bobo170bo9bo20bob2ob2obo
260bobo5bobo166b5o7b5o13b2ob2o2bobo2b2ob2o137bobo3bobo21bo7bo20bobobob
obobo81bo5bo21b2ob2ob2ob2o20b2o5b2o18bo13bo48bob2ob2obo108bo4bo3bo4bo
18bo2bobo2bo49bobob2ob2obobo50bo5bo20bobobo3bobobo20bo2bo2bo19bo2bob2o
b2obo2bo20b2ob2o21bo2bobobobo2bo20bobobobo24bo3bo624bo5bo321bo3bobo3bo
257bo13bo45b2o11b2o19bo2bo2bo20bo11bo20bo5bo22b2ob3ob2o25bo55bo3bo3bo
82b2obob2o25bobo27bobo21b3ob2obob2ob3o16b2ob2o3b2ob2o18b2o7b2o$25b3o5b
3o22b2ob2o84b3ob3o23b3ob3o20b2o4bo4b2o22bobo23bo9bo50b2o5b2o22b3ob3o
19b2obo7bob2o17bo4bo4bo16b2obo4bo4bob2o140bobo175bo5bo86bo323bo11bo22b
obo81b2o3b2ob2o3b2o16bob2o5b2obo82bobo114bobo3bobo169b3o7b3o19b3o3b3o
260b3o5b3o22bo3bo141bo11bo18b2ob2ob2ob2o50bobo3bobo80b2ob2ob2ob2o16b8o
b8o16bo3bobo3bo113bobo24b2o5b2o18bo13bo48bo2bobo2bo109bo4bobo4bo21b2ob
2o50b2obobo3bobob2o48bo7bo19b3o7b3o19bobo3bobo18b3o2b2ob2o2b3o20b2ob2o
21bo4bobo4bo22bobo26bo3bo624b2obob2o322bo7bo292b3ob3o18bo15bo15bo3bo3b
o3bo17b3o7b3o16bo3b2obob2o3bo17b2obo3bob2o22b2ob2o54bob3obo84bobobo25b
obobo25bobobo20b3o2bobobo2b3o19bo5bo21bo9bo$25bo9bo21bobobobo23bo5bo
51b3o5b3o48bo3b5o3bo19b2ob3ob2o20b2o7b2o22b5o23b2o5b2o48b2ob2o5b2ob2o
16b6ob6o14b2ob2o4bo4b2ob2o134b3ob2ob2ob3o81bobobo85b2ob2o87bo322b2o11b
2o20bo3bo80b2ob4ob4ob2o16bo3bo3bo3bo81b2ob2o112bo2bo3bo2bo168bobo7bobo
18bob2o3b2obo259b2obo3bob2o20b2o5b2o140bo9bo16bob6ob6obo46b2ob2ob2ob2o
79bo3bobo3bo15bobo4b2ob2o4bobo19bobo85bo5bo21b3obobob3o18bo2bo5bo2bo
18bo9bo51b2o3b2o81b2ob2ob2ob2o19b2ob2ob2ob2o19b2o7b2o47bob2obo3bob2obo
48bobo3bobo20b2o7b2o20bobo3bobo18bo13bo16b5o3b5o16bo3bobobobo3bo20b2ob
2o654b7o320bo4bobo4bo255b3o11b3o12b2o15b2o12b3o11b3o16bo2bo3bo2bo18b3o
b2ob2ob3o15bobo3b2ob2o3bobo15bo3bo3bo3bo21bo3bo55bo3bo81b2o3b3o3b2o22b
obo27bobo22bo4b3o4bo18bo9bo22bo3bo21b2o9b2o48bo9bo$28b2ob2o19b2o2b3o3b
3o2b2o16bo2b2ob2o2bo48bo2bo5bo2bo22b3o21bo4bo3bo4bo17bo2b5o2bo19bo9bo
21b3ob3o22b2o5b2o20b3o5b3o20bo7bo18b4o2bobo2b4o13b3o5bobo5b3o133bo3bob
3obo3bo79b2o3b2o50bo4bobo4bo109b2o5b2o319bobo7bobo15bo3bo7bo3bo74bo2b
2o2bo2b2o2bo15bo4bo3bo4bo15b3o9b3o44b2o4b2ob2o4b2o106bo4bo4bo169bobobo
bobobo17b3o9b3o261bobo25bo5bo139bobo9bobo16bobo7bobo48b2o2bobo2b2o80bo
2bobo2bo17bo5b2ob2o5bo16bo4bo4bo80b3o3b3o19bo4bobo4bo16bo3bo5bo3bo15bo
b2o7b2obo48bo7bo83bo3bo20bobo9bobo17b2ob2ob2ob2o49b2o7b2o51bo5bo21b2o
7b2o18b3obobobob3o19bo3bo3bo19b4o5b4o15b2obo3bobo3bob2o17bob2ob2obo22b
2o3b2o624bo3bo321bobob2ob2obobo255b3o11b3o12b5o9b5o11b2ob2o9b2ob2o15bo
b2o3b2obo17b3o3bobo3b3o14bo3b2obobob2o3bo16b2o2b3o2b2o20bo2bobo2bo49b
2o9b2o76bo2bo3bo3bo2bo14bo15bo15bobo7bobo23bo23bobob2ob2obobo16b4obo3b
ob4o16b3o3bo3b3o47b3o3bo3b3o$25b3o5b3o16b3obobo3bobob3o16b2obo3bob2o
49b2ob2ob2ob2o47b3o3bobo3b3o17b2o7b2o17b2o11b2o14b3o4bobo4b3o16b2ob5ob
2o19bo2bo3bo2bo19bo4bo4bo18bo3bo3bo3bo18bo2bo3bo2bo142bo3bo24b7o51b2o
7b2o47bobob2obob2obobo19bo5bo80b2o2b2ob2o2b2o317b5o3b5o15bob2obo5bob2o
bo75b3o7b3o17bo11bo15bo3bo7bo3bo43bob13obo111bo172b2o11b2o16b3ob2ob2ob
3o258bob7obo19bobobobobobo136b2o2bo7bo2b2o20bobo52bo2bobobobo2bo82bobo
26bobobo21b2o3b3o3b2o79b3o3b3o20bob2o3b2obo18b2o3bobo3b2o15bo2bobo5bob
o2bo43b2o3b2o3b2o3b2o76bo2bo3bo2bo17bo13bo15b2obob2ob2obob2o47bo3bobo
3bo50b2o5b2o49bo2b3ob3o2bo14b3o2bo2b3o2bo2b3o13b2o11b2o14b2ob3o5b3ob2o
17bo7bo18b2o3bo3bo3b2o617b2o7b2o589bo9bo22b2ob2o22b3o5b3o17bobo9bobo
19bobobobo21bo3bobo3bo18b2o9b2o19b2obobob2o48bo2bo7bo2bo75bob3o5b3obo
14bo15bo15bobo7bobo18b2o7b2o17bo2b4ob4o2bo20bo3bo21bo2bob3obo2bo20b7o
24b2ob2o$22b6o5b6o13b2o3bo5bo3b2o15b2obo5bob2o49bobo3bobo21b4ob4o21bo
2b3o2bo18b2ob2o5b2ob2o15bo2b3o3b3o2bo13b2obo2bobobobo2bob2o15b2o7b2o
23bobo20bobo2b7o2bobo15bo11bo17b4o5b4o138bo9bo16b3ob9ob3o46b2ob5ob2o
47bobo9bobo18b2o5b2o79b3ob2ob2ob3o320b3ob3o18bob2obo5bob2obo75b2ob2o3b
2ob2o17bo11bo16b2o11b2o46bob2o5b2obo109bo2bobo2bo167bobo3b2ob2o3bobo
15b3o7b3o257b2obo5bob2o16bob4o3b4obo134b2obob2o3b2obob2o16b3obobob3o
49bob2obob2obo80bo7bo51bob5obo79b2o9b2o47bo11bo15bo2bo9bo2bo43bobobobo
3bobobobo75b5o3b5o15bo4bo5bo4bo14b3o9b3o47b5ob5o79b4o3b4o18b2o3bobo3b
2o16bob2o3bo3b2obo19bo5bo21bo3bobo3bo18bob2o5b2obo15bo2bo3bobo3bo2bo
616b3ob3ob3o318b2obobobobob2o255b2obo9bob2o18b3ob3o22b2o5b2o19b2o9b2o
19bo7bo49b2o9b2o19b2obobob2o51bo7bo79bo2b2o3b2o2bo15bo15bo15bo2b2o3b2o
2bo19b3o3b3o17b2o2bo7bo2b2o16bo4bo4bo21b7o22bobobobobo19b2o9b2o$21bo4b
ob2ob2obo4bo14b2obo5bob2o81b2ob2o22bo4bo4bo20bo7bo21b2o5b2o18bo5bobo5b
o13b2obo4bobo4bob2o46bo2bobo2bo49bo11bo16bo13bo135bobo9bobo14b3o4b3o4b
3o44b2o11b2o46bo5bo5bo18bob2o3b2obo77bo5bobo5bo316bobo2bobo2bobo21bo3b
o83b3o3b3o20bob2o3b2obo18b3o7b3o47bo2bo5bo2bo108bo3bobo3bo166b4obo5bob
4o15b2o4bo4b2o262bobo20bo15bo133b2o13b2o15bo2bobobobo2bo51bo3bo83b3o3b
3o21b9o21b2o5b2o79b2o2b5o2b2o19b2o5b2o21bo2bobo2bo17bo6b3o6bo43b3ob2o
5b2ob3o74bobo9bobo13b2obo2bo5bo2bob2o15bo9bo49bo9bo49b2o2b3o2b2o18bo2b
2o3b2o2bo18bo3bobo3bo19b3o5b3o16bo4bo5bo4bo14bo2b3o3b3o2bo15bo13bo15b
2o4bobo4b2o616bo2b2obob2o2bo317bob2obobob2obo258b3o5b3o17bo13bo17b2obo
3bob2o17b2o2bo5bo2b2o43bo4bo7bo4bo13bo5b3o5bo19bobobobo51b2o7b2o79bo9b
o18bo2bobobobo2bo18b2obo3bob2o17b5obobob5o14b2o4b2ob2o4b2o21bo21b2obo
9bob2o19b2ob2o21b2o2bo3bo2b2o$24bo2b3ob3o2bo17b2o9b2o17bob2obobob2obo
51bo3bo26bobo20bo4bo5bo4bo14bo2bo7bo2bo19bobobobo21bobobobobobo20bo2b
3o2bo20b3o5b3o16b4o9b4o16bo2bo3bo2bo17bo3b2o3b2o3bo136b2o2bo3bo2b2o15b
obo2bo5bo2bobo50b3o57bobo26bo3bo79b2ob3o5b3ob2o314bobob2o3b2obobo17bo
2bo3bo2bo82bo3bo22bob2o3b2obo22bo3bo52b2o7b2o106b2obobo5bobob2o163b6o
5b6o314b2o2bo5bo2b2o135bo13bo20b2ob2o55bo3bo82b3o5b3o20bo3bo3bo20bo9bo
81bo5bo21bo4bo4bo17b4o3bo3b4o18bo7bo48bo3bo5bo3bo77bo9bo16bob4o5b4obo
14b2o11b2o48b4ob4o50b2o2b3o2b2o18bob4ob4obo22bobo23b3o5b3o21bo5bo19b3o
9b3o14b2ob2o7b2ob2o14b5o5b5o617bo4bo4bo317b2o2b2o3b2o2b2o261bobo20bo3b
o2bobo2bo3bo14b2obobo3bobob2o15b2o2b3ob3o2b2o16bo5bo5bo15b3ob2o5b2ob3o
18b7o22b2o5b2o48bo4b2ob2o4bo106b2ob2o3b2ob2o18b3obobob3o17bobo2bo3bo2b
obo14b2o4b2ob2o4b2o21bo21b2ob2o7b2ob2o16b3o5b3o18b2obo5bob2o$25bo9bo
17bo3bo5bo3bo16bo4bobo4bo53bo25bobobobobo17bo2b2o7b2o2bo15bobob2ob2obo
bo18bo3bobo3bo19bo3bobo3bo18b2o9b2o18bo9bo16b2obo9bob2o18b2o3b2o20bo
11bo142bobo22b2obo5bob2o46bo13bo75bo3bo5bo3bo75b3ob2o3b2ob3o318b2o5b2o
20bo3bobo3bo80bobo3bobo23bo3bo21bo4bobo4bo51bobobo292bo2bo3bo2bo20bo7b
o288b2o3b5o3b2o136b3o2bobo2b3o18b5ob5o50b4ob4o82bo5bo22bo3bo3bo19bo3bo
3bo3bo80bo5bo19b2o5bo5b2o15b2ob4ob4ob2o18b2o5b2o47bo4bo5bo4bo74bo2bo7b
o2bo14bo2bo9bo2bo15b2o9b2o49b3obob3o46b2obob2o2bo2b2obob2o16bo2bobo2bo
20bobobobobobo19bo9bo17b2o11b2o14bo6b3o6bo13b3o11b3o15bo11bo618b4obob
4o316b4o9b4o257b4ob4o16bo2b3ob2ob2ob3o2bo11b2obob2o5b2obob2o15bo3bobo
3bo17bobobob3obobobo46b2o2b5o2b2o18bo9bo46bo3b3o3b3o3bo79bo3bo21bob3o
3b3obo19bo3bo3bo48bobo3bobo3bobo18bo7bo17bo2bo9bo2bo15bo11bo19bo2bobo
2bo$23b3o9b3o15bo2bo7bo2bo14b2o3bobobobo3b2o47b2o5b2o20bo2b2ob2o2bo16b
o15bo16b2o7b2o20bob2ob2obo18b6o3b6o17bo9bo21bo5bo23bo2bo2bo25bobo21b4o
7b4o136b2o2bo3bo2b2o16b3ob2o3b2ob3o46b2o9b2o45b3o2b3ob3o2b3o14bo3bo5bo
3bo75b3o9b3o317b2o7b2o20bob5obo81bo2b3o2bo18bo2bo7bo2bo16b4o5b4o47b2o
9b2o104bobob3o5b3obobo168bo3bo21b3o7b3o291b5o142bo2b2ob2o2bo19b3o5b3o
49bo3b3o3bo79bobo5bobo23bobo22bo2b2o3b2o2bo80bo5bo19b2obo3bo3bob2o14bo
2bo9bo2bo14bo2b2o5b2o2bo44bo4bo5bo4bo75b2ob2o3b2ob2o16bobo9bobo15b2o
11b2o50bobobo48b2obobo7bobob2o13bo5bobo5bo17b11o18bo2bo5bo2bo14bobo4bo
3bo4bobo13b2ob2ob3ob2ob2o14b3o2b2o3b2o2b3o14bo4bo3bo4bo616bo5bo5bo315b
o3bob2ob2obo3bo257bobo3bobo16bo4bo7bo4bo12b4o9b4o19bo3bo20bo3bobobobo
3bo15bobo2b5o2bobo17bobo5bobo17bob2o7b2obo44bo3b2o5b2o3bo78b3ob3o20bo
3bo3bo3bo21b2ob2o22b3o5b3o16bo2bo2b2ob2o2bo2bo16b3o5b3o17b2o11b2o16b2o
9b2o19bo3bo3bo$24bobo7bobo16bo13bo16bo2bobobobo2bo48b2o7b2o18b3obobobo
b3o16bobo9bobo14bo2b2ob2ob2ob2o2bo16b2obo3bob2o18b2o9b2o18b3o5b3o19bo
9bo22b2ob2o24b3ob3o19bo6bo6bo136bo2bo5bo2bo20b2o3b2o111bo9bo16bo15bo
76bo9bo317b2ob2ob3ob2ob2o19b2obob2o83b7o19b2o11b2o17bo3bobo3bo47bo13bo
104bob2o2bo3bo2b2obo169b2ob2o21b2o9b2o258b11o17b2o11b2o140b2ob2o21bo2b
o5bo2bo47bo11bo78bobo5bobo23bobo118bo23bo2bo5bo2bo17bo11bo15b2o13b2o
48bo5bo80b2o2bo3bo2b2o17b2o9b2o16bo3b3ob3o3bo50bo3bo49bo4b2o3b2o4bo14b
obo3bobo3bobo17b3o5b3o20b2o5b2o17bo3bo2bobo2bo3bo15bobo2b3o2bobo20b3ob
3o650b2obo5bob2o318bo2b2ob2o2bo260bo7bo17bo2bo4bo4bo2bo13b2o13b2o18bob
obobo21b2o2bobo2b2o16bo5bo3bo5bo16b4o3b4o16bo15bo45bo11bo79bo7bo20b3o
5b3o20bo7bo20b3o5b3o18bo2b3ob3o2bo17bo2b3ob3o2bo17bo5bo5bo16b3o9b3o21b
obo$26b2o5b2o18bo13bo18b2obobob2o50b2o7b2o21bobobobo21b2obo3bob2o15bo
4bobo3bobo4bo14b3o7b3o14b2ob2o3b3o3b2ob2o14bo2bo5bo2bo18b4o3b4o18b3ob
2ob2ob3o20b2obob2o19b4o2b3o2b4o137bo9bo17bobobo5bobobo45b2o5bo5b2o44bo
3bo3bo3bo3bo14bob3o5b3obo75b3o3b3o3b3o314b2o3b7o3b2o17b3o3b3o84b3o21b
2o2b3ob3o2b2o17bob2o3b2obo49b2ob5ob2o111b3ob3o173bo5bo19bo3bo5bo3bo
256bo2b7o2bo16b3o9b3o135bo3bo5bo3bo15b2o3bo3bo3b2o46bo11bo78b3o5b3o
141b2o3b2o20bo2bo5bo2bo18bo9bo17bo3b2o3b2o3bo48b2o5b2o108b2o5bo5b2o14b
o15bo49bo3bo55b2ob2o18b2o6bobo6b2o44bobo7bobo19bo2bobo2bo49b3obo3bob3o
18bob2o3b2obo621bo5bo321bob3ob3obo255b6o7b6o15bo4bo4bo15bo2bob3o3b3obo
2bo12bo4b3ob3o4bo17bo7bo18bobob2obob2obobo21bobo81bo13bo77b4o3b4o19bo
9bo19b5ob5o18bo2bo5bo2bo16b2obobo3bobob2o15bo2bob2ob2obo2bo15bo4b2ob2o
4bo15bo13bo19b2o3b2o$25bo2bo3bo2bo21b2o3b2o20bobo2bobo2bobo47b2o9b2o
16b4o7b4o17b3obobob3o51b3ob3o19bob11obo15bob4o3b4obo20b2ob2o56bobo22bo
2b2obob2o2bo137b5o3b5o16bob3o5b3obo45b3o9b3o49bob3obo18bob4o5b4obo73bo
b2o9b2obo313b2ob2ob5ob2ob2o17bo7bo80b2o7b2o17bob2ob2ob2ob2obo17bob2o3b
2obo50b2o5b2o109bo4bobo4bo196b2ob2o5b2ob2o255bobo9bobo16bob2o5b2obo
135bobob3o3b3obobo14b2obo7bob2o50b2ob2o81bobo7bobo15b3o2b3ob3o2b3o14bo
b2o7b2obo75b3obobobobob3o19bo5bo19bo13bo18b2obobob2o49bo11bo76bo3bo5bo
3bo14b2o2b2obobob2o2b2o17b2o5b2o54b3o51bo13bo21bobo52bo2b2o3b2o2bo19bo
7bo21bo7bo19b3o7b3o19b3o3b3o618b3obo5bob3o317bo2bo3bo2bo255b3o3bo5bo3b
3o13b2o5bo5b2o13bo3bo2bo3bo2bo3bo12bobo2bobobobo2bobo14b4obo3bob4o14b
4ob2obob2ob4o18b3ob3o22bob2ob2obo49bo11bo78b2o7b2o17b5o5b5o17b3o5b3o
18bo4b3o4bo17b2o9b2o17b3o7b3o16bo13bo13b3o13b3o15bo2bo3bo2bo$22b5o7b5o
15b2ob2o3b2ob2o16bobo3bobo3bobo51bobo20bo3bo7bo3bo14bob2o2bobo2b2obo
16b3o7b3o15bobo4bobo4bobo14bo5b3o5bo15bobo9bobo16b2o3bobo3b2o17b2o9b2o
47bobo7bobo139bobo3bobo23bo3bo52bo9bo48b3o2b3o2b3o15bo2bo2bo3bo2bo2bo
73bob2o9b2obo317bo7bo17b3obobobobobob3o76b3o5b3o22b2ob2o82bo9bo107b3o
3b3o3b3o167b2o7b2o16bo2bo9bo2bo253b2o2b2obobob2o2b2o15bob2o5b2obo135bo
bo11bobo17b4ob4o49bob2o5b2obo76b3o9b3o17b2o3bo3b2o19bob2o3b2obo111bo5b
o21bo9bo19bo3bobo3bo47bobo9bobo74bo6bobo6bo13b2o2b2obobob2o2b2o16b2o7b
2o53bobo51b2ob2o5b2ob2o15bo13bo16b2obobobobob2o16bo3b2o3b2o3bo19b3ob3o
20b2o2b2ob2o2b2o21bo3bo19b2o13b2o615bo4bobo4bo317b2o2bo3bo2b2o255bob2o
b2o3b2ob2obo13bo15bo18b2o3b2o18b3o11b3o13bo4bo5bo4bo14bo4bobobo4bo14bo
2b2o7b2o2bo15b3o2bobo2b3o47b2o3bobo3b2o76bo5b3o5bo14bob3o7b3obo14b2o3b
o3bo3b2o16bo11bo15b2o3bo5bo3b2o17bobo3bobo50bo9bo19b3o5b3o$24b2o9b2o
18bo2bo3bo2bo18b2obobobobob2o50b2o3b2o21b3o5b3o16bo4b2o3b2o4bo15b3o7b
3o18b3o5b3o17bo5b3o5bo14b2o3b2o3b2o3b2o15bobo2bobo2bobo16b3o9b3o15bo2b
obo3bobo2bo16bobobo3bobobo141bo3bo79bobo3bo3bo3bobo44b2o11b2o13bo2bo2b
o5bo2bo2bo73b3o2bo3bo2b3o314b3o11b3o13b2o4b2ob2o4b2o74b2o2bo2bo2bo2b2o
17b3o5b3o17bo13bo47bobo5bobo107b2o2b3ob3o2b2o166b3o7b3o285b2o5bobo5b2o
15b2o3b3o3b2o135bo2b3o5b3o2bo15b4obobob4o50bo5bo111b2obobobob2o21b3ob
3o112b3o3b3o21b2o5b2o20bob3ob3obo46b2o13b2o74bob3o5b3obo21bobo21bo3bo
5bo3bo48b9o48b3o9b3o15b2ob2o2bo2b2ob2o18b2o5b2o19bo3bo3bo3bo19bob2ob2o
bo19bo3b2ob2o3bo17b3o2bobo2b3o15bob2o9b2obo616bo3bobo3bo320bo3bo3bo
259b4o5b4o16bo13bo15bobo9bobo48bo7bo17b4obo5bob4o13bo4bo5bo4bo17bo2bob
o2bo55bo82b3o9b3o16bo11bo15bobo3bo3bo3bobo16bobo5bobo16b2o13b2o18b2o3b
2o20b2obobobobob2o18b3o5b3o18bo2bo5bo2bo$24bo4b3o4bo18bob2o3b2obo18bo
11bo50bobobobo21bo2b2ob2o2bo16bo4bo5bo4bo15b2ob3ob3ob2o22bobo24b9o17bo
bo11bobo15bobobo3bobobo46bob2o3bo3b2obo16b5o3b5o139b3o3b3o19b2o9b2o49b
obo3bobo46bobo13bobo12bobo2bo5bo2bobo77bo7bo316bo6b2ob2o6bo13bo3bo5bo
3bo75bo5b3o5bo16bo3b5o3bo15b3o3bo3bo3b3o165bobob2ob2obobo167bo3bo3bo3b
o15bobob2o5b2obobo253bo15bo14b2o5bo5b2o136bo2bo5bo2bo16bob2obo3bob2obo
46b3obo3bob3o112b3o25b3ob3o83b3ob3o24bo3bo23bobo3bobo23b2ob2o50bob2o7b
2obo107b5ob5o18bo2bo5bo2bo48bob7obo48b2o9b2o14b2obo2bob3obo2bob2o15bo
2bo3bo2bo19bob2o3b2obo19b2o7b2o23b3o22b2o3bobo3b2o16bo3bo5bo3bo617bo2b
o3bo2bo590bo7bo17b2o3bo5bo3b2o15b13o17b4o5b4o15b17o14bobo9bobo14bo3b3o
3b3o3bo18bobobobo49bobo3bobo3bobo75bo5b3o5bo13bo3bo9bo3bo11bobo5bobo5b
obo14b2o3bobo3b2o16bobo9bobo19b2o3b2o17b3ob2ob2ob2ob2ob3o15b4o3b4o18b
4o5b4o$28b2ob2o51b2ob2o3b2ob2o50b2o3b2o22bobo3bobo23bo3bo21bobo7bobo
17b2o9b2o15b3o11b3o13b3o11b3o44b6o3b6o15bobo3b3o3bobo15bo4b2ob2o4bo
140b2ob2o20b3o9b3o44b2obo9bob2o42bo3bo9bo3bo17b2o3b2o80bobo7bobo314bob
o4b2ob2o4bobo13b2o5bo5b2o75bob2o2b3o2b2obo15b2obo7bob2o17bobobobobobo
50b3o3b3o109bo11bo168b4o3b4o16bob5o3b5obo259bo3bo21bo11bo135bo15bo14bo
bo9bobo46b2o3bobo3b2o79bo7bo16bo3bo9bo3bo11b3o13b3o76b2obobob2o22b2o3b
2o108bo2bo9bo2bo76bo9bo48bo4b3o4bo47b2o2bo3bo2b2o47b2o9b2o14b2o4bo5bo
4b2o14b2obo5bob2o20bo5bo85bobo653b3o5b3o321bobobobo264b2ob2o19bobo2b3o
b3o2bobo18bob3obo18bo4bo5bo4bo19bo3bo21bo2b2o3b2o2bo18bo9bo18b3o2bobo
2b3o47b2o9b2o76bo4b2ob2o4bo13b2o5b2ob2o5b2o12bo5b2ob2o5bo14bo2bo2b3o2b
o2bo15bo2b4ob4o2bo16b2o4bo4b2o14b2o5bo3bo5b2o19bobo21bo2b2o5b2o2bo$23b
2o2bo5bo2b2o15bobo9bobo15b2o3b5o3b2o47b3o5b3o20bo3bo3bo17bo5bo3bo5bo
17bobobobobo17b4obo5bob4o14b2o5bo5b2o48b3o3b3o20bo9bo21bob3obo18bo2b2o
2bobo2b2o2bo138b3ob3o19bob2o7b2obo44bo4b2obob2o4bo44bo2b2o5b2o2bo18b2o
b3ob2o81bo2b3o2bo348bo13bo106bo11bo15b2obo9bob2o46bo2bobobo2bo109bo2bo
bobo2bo169bo2bo3bo2bo16bo5bo3bo5bo253bob2obobobobob2obo13bo15bo132bo8b
o8bo12bo4bo5bo4bo43b2o3b2o3b2o3b2o73bo2b2ob2ob2ob2o2bo16bo2b2ob2o2bo
16bo2b2obo3bob2o2bo78bo5bo20b2ob2o3b2ob2o16bo3b2o3b2o3bo73b3o13b3o74bo
bobo3bobobo20b3ob3o21bo2b5o2bo51b2o3b2o50bobo7bobo15bo3b2obobob2o3bo
15bob2o5b2obo16bo5bobo5bo19bo5bo21b2o7b2o17bobobobobobobobo15b2o3bo3bo
3b2o616bo11bo316b3ob3ob3ob3o260b2ob2o20b2o11b2o19bob3obo18bo2bob2o3b2o
bo2bo13bo15bo14b2o2bo5bo2b2o21bobo21b2obobobobobob2o49bob3obo78b2o2b2o
bobob2o2b2o14b3o2bo3bo2b3o19bo5bo18bo2bo2b2ob2o2bo2bo17bob2ob2obo18b3o
9b3o15bo3b2o3b2o3bo16b2o3bobo3b2o16b3o9b3o$23b2o3b2ob2o3b2o14bo3b3o3b
3o3bo13b2o5b3o5b2o43b2o13b2o16bob2o3b2obo15bo6bo3bo6bo12bo7bo7bo12b2o
4b3ob3o4b2o14b3ob2ob2ob3o18bo9bo19bo9bo20b3o3b3o17b2o13b2o13bobob2obob
ob2obobo136b2ob2ob2ob2o16b2o3bo5bo3b2o43bob2o3b3o3b2obo44bo4bo3bo4bo
107bo2bo3bo2bo318bo11bo16bob2o7b2obo76bobo7bobo17bo11bo15b2obob2o3b2ob
ob2o46bobo2bo2bobo106b2o6bo6b2o169b2ob2o22b2ob2ob2ob2o256bo4bobobobo4b
o13b2o3bo5bo3b2o133b2o4b5o4b2o14b2ob2o5b2ob2o45bobobo5bobobo73bob2o3b
2ob2o3b2obo15bo2bo3bo2bo16b2obob2o3b2obob2o76bob2o3b2obo19b2obo3bob2o
17bobo9bobo16b3o7b3o44b7o5b7o77bo5bo23b3ob3o18b2o3bo5bo3b2o48b2o3b2o
50b3o7b3o14b2o3b2obobob2o3b2o42bo4bo5bo4bo15bo2bo5bo2bo19bob2ob2obo18b
3obobobobob3o15bo2bobo3bobo2bo615bo13bo315b2o3b2ob2o3b2o259b3ob3o20bo
11bo20bo5bo17b2obob3o3b3obob2o13bo3b2o3b2o3bo19bo5bo22b2obobob2o17bobo
bobo3bobobobo43bo15bo73b3ob2obobob2ob3o18bo5bo23b7o19b2o4bobo4b2o16bo
3bo3bo3bo15bo15bo20bobo22b2o3bobo3b2o16b3o2bo3bo2b3o$52bobo2bo5bo2bobo
12bobo4b5o4bobo42b2o4bo3bo4b2o15b2obo5bob2o15bo3bobo3bobo3bo13bo2bo3bo
bo3bo2bo19bo3bo20bo2bob2ob2obo2bo13bo4bo7bo4bo19bobo26bo3bo23b2o5b2o
18bo4bo3bo4bo134b2o13b2o16b2o2bobo2b2o53bobo53bo3bobo3bo16b4o3b3o3b4o
73b3o2bo5bo2b3o313bob2o9b2obo103b3ob2o5b2ob3o18bobobobo18b3ob2o5b2ob3o
45bo3b2ob2o3bo110b3ob3o173bo5bo21bo2bo3bo2bo261bobobobo18b2o3bo5bo3b2o
134bo2b2o5b2o2bo18bo7bo49bob2o2bo2b2obo105bo2bo2b2ob2o2bo2bo12bo3bobo
5bobo3bo108bo3bo19b3o3bo3bo3b3o15bo2bo2bo2bo2bo141b5o19b2o13b2o13b2o
13b2o47bo3bo3bo51bo7bo17bo2bo3bobo3bo2bo16bobob3obobo20bobo3bobo20b2o
7b2o17bobo3bobo3bobo21bobo20b2o2b3o3b3o2b2o613b3o2b2o3b2o2b3o315b2o3bo
bo3b2o260b2o3b2o51b4o3b4o15b3o2bo7bo2b3o13bo13bo13bo2b3o3bo3b3o2bo19bo
bo20b3obo7bob3o42bobo2bobobobobo2bobo77bobobobo24b2ob2o19b2ob2o7b2ob2o
14b3ob2o3b2ob3o17b2obo3bob2o17b6obob6o16b3o7b3o20bobobobo21b5ob5o$23b
2o11b2o13b2obobo7bobob2o11b2o2b3o5b3o2b2o42b2o4bo3bo4b2o15b2o9b2o16b2o
b3o3b3ob2o15bobo9bobo15bob2o7b2obo14bo4b3ob3o4bo13bo4bo5bo4bo16b2obobo
bob2o17b2o11b2o16b3o7b3o16b2o11b2o134b2obo9bob2o16b2o7b2o46b3obo7bob3o
47bo2bobo2bo16bo4bobo3bobo4bo71bobo2bo7bo2bobo311bo17bo15b3o2bo2b3o76b
3obo7bob3o16bo3b3o3bo17b2o11b2o49bo5bo114b5o170b2o2bo5bo2b2o13bo3b3o5b
3o3bo252b3o4bobo4b3o16bo2bo3bo2bo136b2o13b2o16b3o5b3o49b2ob5ob2o79bo9b
o16b2obo4bo4bob2o12bo17bo74bo11bo18bo9bo15bo6b2ob2o6bo14bo11bo51b2ob2o
81b2obo5bob2o15b2o4b5o4b2o14b6o3b6o43b2ob6ob6ob2o48bo3bo20b2o11b2o19b
2o3b2o18bobob2o5b2obobo44bo2bobo3bobo2bo16bobobo3bobobo15b2o2b2o5b2o2b
2o615bo4bobo4bo320bobobobo325bobo20b2o4bo3bo4b2o19bo3bo19b3o2bo2bo2bo
2b3o14b3o9b3o14b2ob3o5b3ob2o133b2o4b2ob2o4b2o20bobo20b2ob2ob2ob2ob2ob
2o14b4o2bobo2b4o47b3o5b3o17b3o9b3o16b4obobob4o16bobo3bobo3bobo$24bob2o
5b2obo14b2o5bo3bo5b2o17bo5bo51bo9bo16b3o5bo5b3o18bo5bo20b2o3bobo3b2o
15bob2ob7ob2obo18b2o3b2o20b2o9b2o17bob2o5b2obo17b2o2b2ob2o2b2o46bo13bo
133bo3bo9bo3bo11bo7bobo7bo42b2o2b2ob3ob2o2b2o46b2o7b2o18bobo3bo3bobo
75bob4obobob4obo312b2ob2o9b2ob2o14bo3b5o3bo78b2ob5ob2o16b2ob2obo3bob2o
b2o18bo5bo48b2o4bo3bo4b2o107b2o5b2o172bobobobo21b3o5b3o257bob3obobob3o
bo20bo3bo140bobo4bo4bobo22bo53bo2b7o2bo76bo2bo7bo2bo14b2ob2o3bo3b2ob2o
16bobo5bobo78b2o9b2o18b4o3b4o22b2ob2o20b2o11b2o51bobo86b5o19b2o3bo2bo
2bo3b2o14bo3bobobobo3bo44bo2bo4bo4bo2bo43b2o3b3ob3o3b2o15bo3bo3bo3bo
20bo5bo20bob2o5b2obo47bo11bo19bobobobobo16b3o2b2o5b2o2b3o612b3o5bo5b3o
317b2o5b2o261bo3bo3bo18bobo9bobo21bobo20b2ob2obo3bob2ob2o13b2o4bobobo
4b2o15bo5bo5bo15bob5o3b5obo15b2o9b2o44b2obobo7bobob2o104bobo7bobo19b2o
bobob2o17b2o2bo7bo2b2o16b2obobobob2o24bo20b2o5bo3bo5b2o13bo3bobobobo3b
o14bo2bob2o3b2obo2bo$22bobobobo3bobobobo14b2o2b7o2b2o18bo7bo49b2o3b3o
3b2o15b2o6bo6b2o15b2o9b2o17b4obobob4o16bo2bo3bo3bo2bo19b2o3b2o20b3ob2o
b2ob3o15bo3b2ob3ob2o3bo13bobo3b2ob2o3bobo13b3o11b3o15b2o3b3o3b2o135bo
2bo4bo4bo2bo12b2o2b4o3b4o2b2o44b13o47bob2ob3ob2obo14b2o3bo2b3o2bo3b2o
74bobo7bobo315bo2b2o7b2o2bo16b3obobob3o80b3o3b3o17b3o3bo3bo3b3o18bobob
obo47bo17bo104b5o3b5o166bob4obob4obo14bo15bo253b2o2b2o5b2o2b2o13b4o2bo
3bo2b4o134b4o7b4o17b3o2bo2b3o47bo13bo76b2ob2o3b2ob2o15b3o4bobo4b3o12b
5obo5bob5o72b3o2b2o3b2o2b3o16b4o3b4o15bob4o7b4obo14bo11bo47b5o3b5o77b
2ob2o3b2ob2o20bo2bo2bo18bo2b3obobob3o2bo43bo4b2o3b2o4bo43b2o2bo7bo2b2o
14b5o5b5o16b4o5b4o19bob2ob2obo18b4o7b4o16b2o9b2o21bo3bo25bobobo619b2o
2bo2b3o2bo2b2o318bo5bo261bo2b5o2bo17b15o14b3o4bobo4b3o12b2o3bo7bo3b2o
12b2obo2bo3bo2bob2o12bo7b3o7bo12bo15bo19b5o51bo3b2ob2o3bo76bo3bo5bo3bo
15b4obo3bob4o19bobobobo18b2o2bob2ob2obo2b2o15bob3obob3obo21b5o18b2ob2o
3b3o3b2ob2o12bo2bobobobobobo2bo12bo5b2o3b2o5bo$22b2o2bo7bo2b2o15b3o2b
3o2b3o18bob2obob2obo47b2obobo3bobob2o16b2o3b3o3b2o15b2o2bobo3bobo2b2o
15b2o2bo3bo2b2o16bo2bo7bo2bo16bo11bo17b3o2bobo2b3o15bo3bob2ob2obo3bo
13bo2bo3bobo3bo2bo44b2o2b7o2b2o137bo4bo4bo19bo2bo3bo2bo47b2obo7bob2o
45b2o11b2o21b3o81bo3bo5bo3bo314bo4b2o3b2o4bo14b2obo7bob2o78bo7bo20bo3b
3o3bo18bobo7bobo47bobob2ob2obobo106bo13bo169bo5bo22bo7bo258bo4bo3bo4bo
14bob2ob2o3b2ob2obo134bo4b2ob2o4bo18bo2bobo2bo47bo3b2o5b2o3bo78b2o3b2o
19b2o11b2o20bobobo78bo5bo5bo5bo18bo3bo24b3ob3o19b2obo2b3o2bob2o45bo3b
2o3b2o3bo76bo3bo3bo3bo19bo2bobo2bo17b2o13b2o47bobobobobo51bo7bo17b3o2b
o5bo2b3o14b2obo2bobo2bob2o15b2obo2bobo2bob2o14bo4b2o3b2o4bo14b3obo5bob
3o14b3o2bo5bo2b3o13b2o2bob5obo2b2o612bobobobobobobobobobo314b2o9b2o
257bo11bo16bo3b7o3bo15b3o3bobo3b3o17b2obo3bob2o20b3o3b3o16bo5b7o5bo15b
4o3b4o16bobo2bo5bo2bobo44b2ob2o5b2ob2o77bob2o3b2obo21bo5bo21bo3bobo3bo
19b2ob2ob2ob2o17bobo4bo4bobo18b2ob3ob2o47bo2bobobobobobo2bo12b2ob4o5b
4ob2o$22b2o13b2o14b2o3bo3bo3b2o17bob2o3b2obo46bobobobo3bobobobo16bob2o
bob2obo15bo5b2o3b2o5bo41b2o3bobo3bobo3b2o15b2ob2ob2ob2o17bo2b9o2bo13b
2o6bobo6b2o12bo3b2obobob2o3bo15bob3o3b3obo20b2obob2o141bo4bo4bo19b3o5b
3o48bob2o5b2obo51b5o23bo7bo78bo3b7o3bo315bobob2o3b2obobo15b2ob2o5b2ob
2o74bo2bob2o3b2obo2bo18b2o3b2o19bobob3ob3obobo43bo17bo102bo4b7o4bo164b
2o11b2o18b2o5b2o262bob3obo22bobo3bobo139b2o9b2o23bo51bobo2b2o3b2o2bobo
76b4o3b4o47b4o2b3o2b4o74bo2bobob3obobo2bo17b2obobob2o47b2ob3obobob3ob
2o45bo2bo5bo2bo78b2obo3bob2o19b2obo3bob2o16bo5bo3bo5bo44bo3b3ob3o3bo
46bo4bobo4bo17bo3b2ob2o3bo16b4o2bobo2b4o15bo2bo7bo2bo14b2ob5ob5ob2o13b
3o2b3ob3o2b3o12bob2o2bo5bo2b2obo13bobo9bobo619b2obob2o318b3obo2bobo2bo
b3o256bobo5bobo19bo4bo4bo18bo4bobo4bo16bo3b2o3b2o3bo45bo5b3o5bo15bo4bo
3bo4bo14bo6bobo6bo44b2ob2o5b2ob2o76bo4bobo4bo15b4o3b3o3b4o13bob2o3bobo
3b2obo13bo5bo3bo5bo13bo3b3o3b3o3bo14b2ob2o5b2ob2o13b2o3b2o5b2o3b2o19bo
bo20b2o13b2o$23bo2bo2bobo2bo2bo14bo15bo16bob2o3b2obo47b2ob3o3b3ob2o14b
4o2b5o2b4o13bob5o3b5obo16bob2o3b2obo15bobob2ob2ob2ob2obobo16bo7bo18bo
4bo3bo4bo14bob4o5b4obo13bobob2o5b2obobo43b2obobo5bobob2o135b3o7b3o18b
2o7b2o48bo4b3o4bo50bob3obo19bo2bo7bo2bo75bo13bo320bo3bo22bo4bo4bo77b2o
3bo3bo3b2o16bob2obobob2obo15b2ob3o5b3ob2o43b3o3bo3bo3b3o106bob2obob2ob
o167b2o2bobobobo2b2o15bo5bobo5bo255bo13bo18b2o5b2o137bo15bo16b2o7b2o
48b2o2b2ob2o2b2o108bo3bobo3bo16bob4o5b4obo73bo2bob2obob2obo2bo16b2o2bo
bo2b2o17b2o11b2o14b2o6bo6b2o45bo2bo5bo2bo78b2o7b2o17b4o3bo3b4o19b7o49b
o13bo46b4o5b4o17b2o3bobo3b2o16b3obo5bob3o14b4o3bobo3b4o16b2o2bobo2b2o
21bobobobo17bob2o3b2ob2o3b2obo15b3obobob3o616b2obobo5bobob2o320bobo
262bo3bo3bo3bo18bo9bo18bob2o5b2obo75bo2bob2o3b2obo2bo15bo5bo5bo15bo6bo
bo6bo45bobo7bobo77bobobo3bobobo16bo4b2ob2o4bo14bo6bobo6bo13b3o3bo3bo3b
3o13bo2b2o2bobo2b2o2bo14b2ob2o5b2ob2o13b2obob2o5b2obob2o14bobo2bobo2bo
bo15b2o13b2o$22bobo2bobobobo2bobo14b2o3b2ob2o3b2o16bo2bo5bo2bo45bo2b2o
2b3o2b2o2bo16bo9bo16bobo3bo3bo3bobo15bobo7bobo15bo3bo2bobo2bo3bo16b2ob
2ob2ob2o18b2o4bo4b2o17b4o2bo2b4o16bo13bo16b2o9b2o20b2o3b2o142bo7bo20b
3o5b3o46bo6b3o6bo43bo15bo13bo3bo2b3o2bo3bo74b2o2bo5bo2b2o315b4o2bobo2b
4o15b2o4bobo4b2o76bob2o5b2obo16b3o2b2ob2o2b3o14b5o7b5o44bo4b5o4bo107bo
9bo171bo5bo19b3ob3ob3ob3o254b2o2bo7bo2b2o17bo7bo140b2o7b2o17b5o5b5o46b
2o9b2o83bo24b3ob3ob3o16bobo3bobobo3bobo75b3o2bobo2b3o17bo3bo3bo3bo15b
3o2b3ob3o2b3o14b2o2bo2bo2bo2b2o47b3o5b3o79b2obo3bob2o17b2o3b5o3b2o15bo
13bo45bo5b3o5bo46bo3bo3bo3bo18b2o2bobo2b2o17b2ob3o3b3ob2o15b3o3bobo3b
3o18bobo3bobo21bob2ob2obo17b2o5b3o5b2o15bob4ob4obo616bobo2b2ob2o2bobo
314b3ob2o5b2ob3o254bobo2bobobo2bobo16bo11bo18b2ob2ob2ob2o15bo2bo2bo5bo
2bo2bo13b3o3b3o3b3o15b3obo5bob3o16bo5bo5bo16bo2b3o3b3o2bo45bo4bo3bo4bo
76bo11bo15bo5bo3bo5bo13bob2o2bo3bo2b2obo19bo3bo19bo15bo21bo23bo11bo15b
obobobo3bobobobo14b4o2bobo2b4o$22bo4bobobobo4bo14b2o11b2o21b3o50bo2b2o
2b3o2b2o2bo13bobo11bobo17bobo3bobo17bobobo7bobobo17bo3bo3bo19bobo7bobo
18b2o2b3o2b2o17b3obo2bo2bob3o47bo9bo16b2o2bob2ob2obo2b2o138bo5bo19b2o
3bo3bo3b2o44bobobobobobobobobo43bo2b2obo3bob2o2bo15b3o7b3o77bo4bobo4bo
315bo6bobo6bo15bo3b2ob2o3bo80b7o20b2o2b2ob2o2b2o15b2o5b3o5b2o45b2obo5b
ob2o108bo3bobo3bo167bo4b2ob2o4bo19bo5bo258bo2bo2b5o2bo2bo17b2o5b2o137b
o3bo3bo3bo3bo17b2ob3ob2o50b2obo3bob2o80bobo3bobo16b2o2bo3bobo3bo2b2o
16bo3bo3bo78bo13bo16b3o7b3o15b2o3bobobobo3b2o15b4o5b4o47b4o5b4o77bo2b
2obob2o2bo22b3o20b3o5bo5b3o44b2o4b3o4b2o49b2o3b2o18bobob2obobob2obobo
19bo3bo22bo9bo18bo2bo5bo2bo18b2o7b2o17b2o5bo5b2o15bobo9bobo616bo4bobo
4bo315b2o3bo5bo3b2o254bob4o3b4obo18bo2bobo2bo20b2ob2ob2ob2o16bob13obo
13bo2b2o2b3o2b2o2bo13b2obobo5bobob2o17bo7bo17b2o3bo2bo2bo3b2o43b2o4b2o
b2o4b2o73bo3b4ob4o3bo13b2o6bo6b2o15bo11bo17bo3b5o3bo15bo4b3ob3o4bo14bo
4bo3bo4bo15bo2b3o3b3o2bo20bo3bo21bobobobobobobo$21b2o3b4ob4o3b2o18b2ob
2o20bo3b7o3bo47b2o7b2o18b5o3b5o18bo3bobo3bo16bo7bo7bo17b2o5b2o22bo5bo
22bo7bo18bo2b2o5b2o2bo15bob5ob5obo16b3o7b3o15b2obo2bo3bo2bob2o163bobo
11bobo43bo5bo3bo5bo44bo3bobobobo3bo16b2o9b2o79bobo3bobo320bobobobobobo
17b2o3b2ob2o3b2o76b2o4bo4b2o21bo3bo24bob3obo169bo4bo3bo4bo164bob2ob2o
3b2ob2obo14bo3bo5bo3bo253bo2bobo2b3o2bobo2bo163b2o3bobobo3b2o14bo3bo7b
o3bo44b3o2bo3bo2b3o76b2o2bo3bo2b2o18b2obo3bob2o17bobo9bobo74b2o13b2o
17bo7bo19bob3o3b3obo16bo13bo45b2o11b2o79bo5bo21b3o5b3o16b2o13b2o43b2ob
2o7b2ob2o45b2ob2o3b2ob2o15b3o2bobobobo2b3o15bo3bo3bo3bo18b2obo3bob2o
17bo3bo5bo3bo46b2o2bo3bo2b2o15bo3b2o5b2o3bo615bo2bo5bo2bo314b4obobo3bo
bob4o253bobobo5bobobo17b2o2bobo2b2o15b3ob2o7b2ob3o41bo5bob3obo5bo15bob
2o3b2obo16b2ob2obobobob2ob2o12bobo3bo5bo3bobo44b2o2bobobo2b2o74bo3bo4b
o4bo3bo11b2o2bo3b3o3bo2b2o41bo5bo2bo2bo5bo13bobo9bobo14bobo11bobo14b4o
b2ob2ob4o22bo26b7o$21b2o5b2ob2o5b2o13b5obobob5o16bo2bob3obo2bo45b2o2b
2o5b2o2b2o14b3o9b3o13b3ob2o7b2ob3o12b2obo2b2ob2o2bob2o15bobo2bobo2bobo
17b2o9b2o15b2o2bo2bobo2bo2b2o14bo13bo14bo5b2ob2o5bo15b2o9b2o18b3o5b3o
136b4obo5bob4o14bo2b2o5b2o2bo48b3o3b3o48bob2o2bobo2b2obo14bo4b3ob3o4bo
72b2o15b2o313bo3b2o3b2o3bo16bo2bo5bo2bo78bobo5bobo21bo5bo21bobob3obobo
48b2obobobobob2o107b2o2bo3bo2b2o165bob2o9b2obo14bo4bo3bo4bo257b2o3bo3b
2o17b3o9b3o137bo2bobobo2bo16bo15bo44bo5b3o5bo78bob5obo17bo3b3o3b3o3bo
13bo3b2o5b2o3bo73b5o7b5o43bo3bo2bobo2bo3bo14b2o2bobobobo2b2o44b2o5bobo
5b2o103b5o2bobo2b5o18b7o48b2o2b2o5b2o2b2o43b2o4bo3bo4b2o20bobo22b2o3bo
bo3b2o19b2o5b2o18bo3bo5bo3bo17b2o7b2o17bo3b3ob3o3bo13b2ob2ob2o3b2ob2ob
2o617b7o323bob3obo293bo2bo2bo17b3o3bo5bo3b3o13b2o2b2o3b2o2b2o14bo3bo3b
o3bo3bo13bo15bo13bo4b7o4bo12b3o3bo5bo3b3o46bob2ob2obo77b2ob2ob5ob2ob2o
18b2o3b2o19bo2bobo3bobo2bo15b2o2b2o3b2o2b2o16bo3b5o3bo14b3o4bo3bo4b3o
11bo6b2ob2o6bo15b3ob3ob3o16bo5bo3bo5bo$23b2o3b2ob2o3b2o14bo2b2o7b2o2bo
15bob2o5b2obo49b3obob3o17b3o2b2o3b2o2b3o12b3o4bobobo4b3o14bo11bo15b2ob
o9bob2o18b3ob3o18bo3bo7bo3bo17bo7bo17bo3bo7bo3bo18b2o3b2o17bo2bob2o5b
2obo2bo132bo6b3o6bo20b3o51bo3b2o3b2o3bo50bo3bo18bobo3b3ob3o3bobo73bobo
bobobobobobo316bobo7bobo17bob2o5b2obo77b2ob2o3b2ob2o14b3ob2o3bo3b2ob3o
13b2obob2ob2obob2o46bobo7bobo106bobobo5bobobo166b2o2bo3bo2b2o18b2obo3b
ob2o259b4o3b4o17b2o11b2o135b2o2bob3obo2b2o14bo4bo5bo4bo44bobo4bo4bobo
81b3o20bob5obob5obo13bo6b3o6bo73bo2b2o3bo3b2o2bo17bobobobobo16b3obo3bo
bo3bob3o13b2obobobobobob2o45b3o4bo4b3o77bo9bo48bo5bo5bo108b5ob5o16b2o
3bo5bo3b2o15bobo2bobo2bobo15b3o11b3o14bo4b2ob2o4bo45bo2b2obobob2o2bo
13b3o5bobo5b3o613bo2b2o5b2o2bo318b2o2bo2b2o256b5o9b5o42b2o3b3ob3o3b2o
14b2o2b7o2b2o14bo2bo4bo4bo2bo13b6o5b6o18bo5bo26bo51bo15bo74b2obo3bo3bo
b2o19bo2bo2bo19b3o9b3o19bobobobo24bobobo19bob13obo14bo13bo16b4ob3ob4o
15bob2o2bo3bo2b2obo$52bobo2bo5bo2bobo17bo7bo49bo5bo5bo17b2o9b2o16bo4bo
bobo4bo16b2obo5bob2o15bob2o9b2obo14bo6bo6bo13bo3b3o2bo2b3o3bo11bo3b2o
7b2o3bo13bo3bobobobo3bo15bo4bo3bo4bo13bo2bo2bo5bo2bo2bo139b3o25b2obob
2o48bo2bo2b2ob2o2bo2bo46bobo5bobo15bo5bo5bo5bo71b3ob2o7b2ob3o314bob2o
5b2obo17bo3b5o3bo110b3ob3o19bob4obob4obo43bobo3bo5bo3bobo103bobo2b2ob
2o2bobo164b7o3b7o18bo5bo261bo9bo17bob3obobob3obo136b2o3b3o3b2o17bo2b7o
2bo46b3o9b3o77bo3b3o3bo16bobo3bobobo3bobo12bo2b2o3b3o3b2o2bo75bobob3ob
obo17bob2o3bo3b2obo18bo7bo21bobo3bobo49bobobo3bobobo77b2ob2o3b2ob2o22b
obo82bob3o3b3obo46bo5bobo5bo13bo3bobo5bobo3bo13b3o9b3o14bobo5bo5bobo
20bobo25b3ob3o17bo3bo9bo3bo13bo4bo3bo4bo615b3obobobobob3o584b4o9b4o16b
o3bobo3bo23bobo23bo4bo4bo18b2o4bo4b2o15bob3o3bo3b3obo13bo15bo17bobobob
obo46bobo2bo2bobo2bo2bobo72b2obo2bo3bo2bob2o15bo3bo3bo3bo16b3o2bo3bo2b
3o15bobobo5bobobo18b3o3b3o17b3o2bo5bo2b3o12bobo2b2o5b2o2bobo13bobo2b2o
b2o2bobo13bob3obo5bob3obo$25b3obobob3o18bo2bo5bo2bo16bo2bo7bo2bo44bobo
3b5o3bobo17b2ob3ob2o16b3o2bo7bo2b3o12bo4bob3obo4bo12b2o2bobob3obobo2b
2o12bo6bobo6bo16bo4bo4bo15bob2obo7bob2obo14bo2bobobobo2bo17bobo7bobo
17bo2bobobobo2bo136b2o11b2o18bo7bo46b2obo3b2ob2o3bob2o43b2o3b2ob2o3b2o
14bobo2bo5bo2bobo72b3o2bobobobobo2b3o317b2o3b2o19b5o5b5o77b3o5b3o21bob
3obo18bo6b3o6bo43bo5b2ob2o5bo103bo2bobobobobobo2bo163b4obo5bob4o15bobo
7bobo255b4o4bo4b4o15bob2o2bo2b2obo137bo11bo20b2obob2o47b2ob2o9b2ob2o
74bob2o5b2obo15bo2b3o2bo2b3o2bo18b7o78bob3o7b3obo13b2obo4bo4bob2o12b2o
4bo2bo2bo4b2o15b2obobobob2o47b2obo2b3o2bob2o75bobo3bobo3bobo16b2ob2o3b
2ob2o75b2ob2ob2ob2ob2ob2o45b6ob6o19bo2bobo2bo16b2obobobo3bobobob2o12bo
2bobob3obobo2bo13b2o3b2o3b2o3b2o18bobobobo17bob2o11b2obo11b2o5bobobo5b
2o613bobo3bobo3bobo314b4o2bo3bo2b4o253bo4b2o3b2o4bo16b4o3b4o15b2o2bobo
5bobo2b2o15b2o2bobo2b2o15bob2obo3bo3bob2obo12bo4bobobobo4bo14b3o3b3o3b
3o13b3o2bob5obo2b3o41bo17bo103b5o5b5o19b2obob2o48b2obo4bo4bob2o14bo13b
o18b3o3b3o18bobo2b2ob2o2bobo17bo9bo$23bob11obo15bobo2bo3bo2bobo15b2o2b
o5bo2b2o43bo5bo5bo5bo12bo15bo15b3o2bobo2b3o15bo5b2ob2o5bo13b2ob3o5b3ob
2o14bo5bobo5bo46bob2o2bo2b2obo47bo11bo15b2o4bobobo4b2o140bobo23b2obobo
bob2o45b2o2bo9bo2b2o43bo13bo16bo2bob3obo2bo75bobo3b2ob2o3bobo313bob2ob
2obob2ob2obo15bo2bo5bo2bo74b4o11b4o15b2o7b2o16bob3o7b3obo46b3o5b3o106b
o3b3obob3o3bo169b5o20bo13bo284b2obobobobobobob2o132b2obo3bo3bo3bob2o
13bo5b3o5bo44bobo11bobo74bo13bo17bo4bo4bo111bo5bo18bo3bo7bo3bo13bo5b2o
b2o5bo12b7o2bo2b7o43b2o2bo5bo2b2o74bo4bobobobo4bo15bo11bo75b2o13b2o48b
o5bo18b2ob2o7b2ob2o17bobo3bobo18b2obo7bob2o13b2o6bobo6b2o16b2obobob2o
18bo13bo646b2o9b2o315b2obo2bo3bo2bob2o253b5o2bobo2b5o16bo2bo3bo2bo18bo
bo7bobo15b2ob5ob5ob2o13bobo4b3o4bobo15bo2bo5bo2bo16b4obo3bob4o77bobo2b
o2bobo106bo2bo9bo2bo15b2o3b3o3b2o45bo2b2obo3bob2o2bo15b2o9b2o16b2o3bo
3bo3b2o15bob2o2bobo2b2obo$24bo11bo17bo11bo15bo3b3o3b3o3bo43bo3bo7bo3bo
13b2o3bo5bo3b2o74bobo9bobo16b2o3bobo3b2o14b2o4bobobobo4b2o11bo5bob3obo
5bo43b3obo5bob3o17b3o5b3o138bo11bo17bo4b3o4bo48b2o2b3o2b2o46b2obob3ob
3obob2o16bo3bobo3bo75b2ob6ob6ob2o313bo3b7o3bo14bo5b2ob2o5bo74b7ob7o45b
2o3bo3bo3b2o165b3o2bo3bo2b3o166bo2bob3obo2bo16bo2b2o5b2o2bo286bo11bo
134b2obobo7bobob2o12b2o6bo6b2o43b2o4b5o4b2o74bobobo5bobobo15bob2o3bo3b
2obo104b2o3b2o3b2o3b2o15b2o2b2ob2o2b2o14b2o2b2obobobob2o2b2o15b2o3bo3b
2o50b2obobob2o78bob2o7b2obo18b2o5b2o84b3o111bo2bo2bobo2bo2bo15b3o3b3o
3b3o16bo2bobobobo2bo19b2obobob2o16b2o2b3o5b3o2b2o976b2o2bo2b2o257bobob
obo3bobobobo12b2obo3bo3bo3bob2o11b2o3bo7bo3b2o45bob2obob2obo47bo13bo
74b2o3bo2bo2bo3b2o103bo2bobo5bobo2bo13b5o7b5o47bob2ob2obo20bo9bo15bo3b
3ob3ob3o3bo13bo3bo5bo3bo$23bo13bo15b2obobo3bobob2o14bo6bobo6bo47bo7bo
17b3obo3bo3bob3o104bob2obo3bob2obo13b2ob2obo5bob2ob2o15b2obo3bob2o51b
2o3b2o168b6o5b6o14b2o4bobo4b2o50b5o49b5o3bo3b5o15bo4bobo4bo75bo4bobobo
bo4bo313bobo3b5o3bobo104bo5bobo5bo49b2o3b2o169bo2b2o5b2o2bo164b3ob2o2b
o2b2ob3o14bo13bo286b2o2bo3bo2b2o135bo3bo7bo3bo14b2ob2o2bo2b2ob2o47b3ob
3ob3o77bob2o3bo3b2obo14bo2b11o2bo108b3ob3o17b2obob4ob4obob2o41bo6b2ob
2o6bo43b2o2bo5bo2b2o75bob3obobob3obo18b2o5b2o77b2obo9bob2o44bo2b3o3b3o
2bo50b2ob2o48b2ob2obo5bob2ob2o13b2o4bobo4b2o17bo9bo976bo2b2o3bo3b2o2bo
258b2o3b2o18b8ob8o13bobobobobobobobobo104b3obo5bob3o195bobo2b5o2bobo
20b2ob2o49bo3bob2ob2obo3bo51bo22bo2bo3bo3bo2bo$22bo4bobobobo4bo14b2obo
b2ob2obob2o22bo83b2ob2o3b2ob2o106b2ob2o5b2ob2o14bob2o9b2obo12bobo5bobo
5bobo42bo4b2o3b2o4bo169bo3bo20b6o3b6o47bobo5bobo46b2o2bobo3bobo2b2o14b
o4bo3bo4bo75bo3bobobobo3bo314b7o3b7o107bo7bo51bo7bo172bob3obo168b3ob3o
3b3ob3o15bo3bo3bo3bo288bo2bo3bo2bo137b2ob9ob2o14bo2bob2o3b2obo2bo133b
3o2b2obob2o2b3o13bo4bo5bo4bo132b2o3bo3bo3bo3b2o41bo3b2o7b2o3bo43bobo9b
obo76bobo2bobo2bobo16bobo9bobo136bo4bobo4bo44b4ob2o5b2ob4o11bo4b2o5b2o
4bo42bobo4bobo4bobo1273b5o7b5o13bo6bobo6bo14b2o3bo3bo3b2o105bobob2o3b
2obobo223bo5b2o3b2o5bo42bobo2bobobobo2bobo15b2obo5bob2o14bo3bob2obob2o
bo3bo13bobob2o3b2obobo$21bo2bobobobobobobo2bo17b3ob3o19bob2o7b2obo194b
o4b2o3b2o4bo14bo2bo2b3o2bo2bo15bobo9bobo44bo4bo5bo4bo162bo3b3o5b3o3bo
12bo4b2o3b2o4bo44b2o2bo5bo2b2o74bo5bo3bo5bo78b2o3b2o438b2o4b2ob2o4b2o
47b2obobob2o167bo4bo5bo4bo162b2o5bo3bo5b2o12bo4b2o3b2o4bo286bo9bo319bo
2bobobo2bo16bo2bobo5bobo2bo133bo2b2o7b2o2bo105bo4b3o4bo76b2obob2ob2obo
b2o14bo2bo3b3o3bo2bo140bobo87bobo19bobo3b2o3b2o3bobo13bob2obo3bob2obo
15bobo3b3o3bobo1244bo3bo7bo3bo13b3o3b5o3b3o14bob3obobob3obo104b2o2bob
5obo2b2o314bobo9bobo46bo2bo2bo2bo2bo$22b4o4bo4b4o47bo7bo200bobo5bobo
18b5obob5o75bobo2bo5bo2bobo163bo4b2obob2o4bo13bobo3b2ob2o3bobo43bobobo
7bobobo43bo3bo7bo3bo16b2o7b2o525bob2o3bo3bo3b2obo46b9o167bo3b2o5b2o3bo
167bobo3bobo17b3obobo3bobob3o284b3o9b3o345b2ob2o5b2ob2o258bo3bo3bo78bo
2bo7bo2bo14bo7bo7bo135b2o2bo3bo2b2o74b2o3b4ob4o3b2o11bo3bo9bo3bo17bo5b
o17b2o2b4obob4o2b2o1242bo3bo7bo3bo42b2obo11bob2o102b2obo9bob2o378b7o$
23bo4bobobo4bo44b2o4bo3bo4b2o193b6ob3ob6o14b2o11b2o74bo3b3o3b3o3bo166b
o4bo4bo15b2o2bob3ob3obo2b2o42bo7bo7bo42b3o2b2obobob2o2b3o552bobobo7bob
obo44b2obobobobobob2o164b3o4bobo4b3o165bobob2ob2obobo22bobo290b4o9b4o
612b2obob3obob3obob2o73bobo2bo3bo2bobo16bo3b2ob2o3bo134b2ob2o9b2ob2o
73b3ob2o3b2ob3o15bobo4bo4bobo49b2obob2o1251bo9bo15bo6bo3bo6bo12b7o3b7o
433bo2bo9bo2bo42bob2o11b2obo$25bo2bo3bo2bo45bo4bobobobobo4bo221bo2bo2b
3ob3o2bo2bo73b2o3bo3bo3b2o171bobo22b2o2b2ob2o2b2o45b2ob11ob2o42b2o4bob
obobo4b2o554b2o9b2o52b3o171b2o11b2o163bo2bobob2ob2obobo2bo13b2o4bobo4b
2o283bo3bo9bo3bo611b3o2b2ob3ob2o2b3o72bo4b7o4bo13bobo2b2o3b2o2bobo132b
3obo9bob3o73bo13bo17bo2b2ob2o2bo45bo8bo8bo1243bobo3b3o3bobo44bo4bo2bo
2bo4bo435b2o9b2o48bob7obo$322bobo3bo3bo3bobo78b2o3b2o168b2ob2obo3bob2o
b2o14bo4bo3bo4bo104b2obo9bob2o553bo7bo7bo48bo5bo169b3o2b2ob2o2b3o163b
3o13b3o13bo2bob5obo2bo283bob3o2bo3bo2b3obo702b3o11b3o12bob4o2bobo2b4ob
o133b4o7b4o75bo2bo2b3o2bo2bo14bo3b3obob3o3bo16b4o3b4o15bobo4bo3bo4bobo
1242b2ob2obo3bob2ob2o50bobo442b2o2b5o2b2o44bo17bo$325bobob3obobo78b2ob
o5bob2o165b2obo9bob2o19bo3bo743b2obobob2o167bo5bo3bo5bo193bo4bo5bo4bo
284b2obobobobobob2o704bo3bo7bo3bo12bob2o3b2ob2o3b2obo133bo2bob5obo2bo
79b3ob3o21bobobobobobo18b2obobobobob2o17b2o3bobo3b2o1245b3obob2ob2obob
3o43bo6bobo6bo432b2o4bo5bo4b2o41b5ob2obob2ob5o$413b2ob2o5b2ob2o168b2o
5b2o17b3o3b2ob2o3b3o734b2ob2o5b2ob2o164b2o2bo7bo2b2o198bo5bo288b4o3bob
o3b4o704b2o11b2o18bo2bobo2bo138b3o4bo4b3o136bo11bo16b2obobo3bobob2o
1244b2o13b2o493b3o11b3o44b2o11b2o$412bobob2o5b2obobo163b3ob2ob3ob2ob3o
12b2ob2o2b2ob2o2b2ob2o732b2o3bo2bo2bo3b2o163b2o4bobobo4b2o193bo4bo5bo
4bo285b3o2bobo2b3o706b3obob3obob3o13b2o3bo2bobo2bo3b2o133bobobobobobob
obo134bob4o5b4obo1272b3o3b3ob3o3b3o492bo4bobobobo4bo49b2ob2o$412bo15bo
168b2o3b2o21b2ob5ob2o735bob2o3bo3bo3b2obo372b2o3bob3obo3b2o289b2ob2o
710bo13bo18b2o5b2o137bo4bo5bo4bo133bo15bo1280bobo502bobobo3bobobo45bob
obobobobobobobo$412bo2bo9bo2bo166bo3bobo3bo20bo2bobo2bo1129b2o2bobobo
2b2o292bobo711b5o5b5o168b2o5b2o138b3o2b2ob2o2b3o1277b3obobob3o495b2o5b
2ob2o5b2o$415b2o7b2o1638b3o2bobo2b3o707bobo3bo3bobo167bob4ob4obo136b2o
bo3bo3bob2o1275b3o2b2ob2o2b3o494b2ob2o2bobo2b2ob2o$413b2o11b2o1635bo
13bo707bo9bo166bob2o9b2obo135b2o9b2o1275b2ob2ob2ob2ob2ob2o493b2o5bobo
5b2o$412b3o2b3ob3o2b3o1633bo2bo9bo2bo706bo3bobo3bo167bobo9bobo1423bobo
bo3bobo3bobobo493bo5bobo5bo$2062bobo11bobo706bob2obob2obo166bo2bob3ob
3obo2bo138b3ob3o1278bobo4bobo4bobo496b4o3b4o$2061b6o7b6o701b2ob3obo3bo
b3ob2o317b2obob2o1278bobobo2bobo2bobobo497bobo3bobo$2062b2o3b2obob2o3b
2o702bo2bo3b2ob2o3bo2bo314b2o9b2o1274b3o2b2o5b2o2b3o494b2o2b2ob2o2b2o$
2063bo3bob3obo3bo706b5obob5o316b3obo5bob3o1786b4obobob4o$2068bobobo
709bo2b3ob3ob3o2bo314bobobo5bobobo1784bo3bo7bo3bo$2063bo4bo3bo4bo703bo
2bo11bo2bo312b3o4bobo4b3o1783bob3ob2ob2ob3obo$2063bo13bo1035bo2bob2ob
2obo2bo1784bo15bo$2064bobo7bobo1035bob5o3b5obo$2065b3o5b3o1036bo5bo3bo
5bo$2063bo4bo3bo4bo1034bo15bo$2062bo3bob2ob2obo3bo1037bobo3bobo$2063bo
4b2ob2o4bo1035bob2o7b2obo$2065b3obobob3o1036b2obo9bob2o$2065b2o7b2o
1035b2ob2o2bo3bo2b2ob2o$3111b3o3bo2bo2bo3b3o$2069b3o1041bobo2b5o2bobo$
2064b3obobobob3o$2062b3o2bobobobo2b3o$2063bo4b5o4bo$2068bo3bo$2063b2o
3bo3bo3b2o!

I manage the 5S project, which collects all known spaceship speeds in Isotropic Non-totalistic rules. I also wrote EPE, a tool for searching in the INT rulespace.

Things to work on:
- Find (7,1)c/8 and 9c/10 ships in non-B0 INT.
- EPE improvements.

User avatar
dvgrn
Moderator
Posts: 10713
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Help me finish this c/8 search

Post by dvgrn » January 20th, 2020, 11:21 am

In case anyone is interested, I did successfully get a search running on a Microsoft Azure VM, using a 30-day $200 credit that they give you when you first sign up. You do have to give a credit card number, but they say they'll only charge anything on it if and when I upgrade -- will report on how that works out in practice, but so far I can do everything I need to with the $200 credit.

I've taken a bunch of notes on the detailed steps to do the setup on a cheap 2-thread Red Hat VM, and am about to start a second more expensive VM to burn through the credit a bit faster. If anyone would like to give this a try, let me know and I'll post an updated list of instructions. It seems like it should be possible to complete at least a few pieces without spending any actual money. And it's quite an interesting learning experience, or at least it was for me.

User avatar
dvgrn
Moderator
Posts: 10713
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Help me finish this c/8 search

Post by dvgrn » January 22nd, 2020, 11:42 am

A couple of questions have come up on Discord:

1) What exactly would one do to split a piece into several pieces? (I'd like to test the theory that a long-running search can be completed more efficiently by splitting it up.)

2) How much memory would be needed for a width-21 search? Do the queue and hashtable sizes just double, because you're going from base width 10 to base width 11, or does memory use increase faster than that?

Sokwe
Moderator
Posts: 2694
Joined: July 9th, 2009, 2:44 pm

Re: Help me finish this c/8 search

Post by Sokwe » January 22nd, 2020, 12:31 pm

dvgrn wrote:
January 22nd, 2020, 11:42 am
What exactly would one do to split a piece into several pieces? (I'd like to test the theory that a long-running search can be completed more efficiently by splitting it up.)
In short, and without providing any code, there is a precompiler directive MAKEEMPTY that flags an element in the queue for removal. This is normally used during the depth-first stage. If a sufficient partial is not found for a node in the queue, then MAKEEPTY is applied, and it will be removed during the next queue compaction.

If you want to run only a piece of a search, you can load the current state and apply MAKEEMPTY to all queue nodes that are not in your desired piece. Then compact the queue and dump the state. You can run this piece of the search by loading from the dump file.
dvgrn wrote:
January 22nd, 2020, 11:42 am
How much memory would be needed for a width-21 search? Do the queue and hashtable sizes just double, because you're going from base width 10 to base width 11, or does memory use increase faster than that?
The queue and hash table sizes would not change and are negligible anyway. The lookup table would take about 20 gigabytes, and the search itself would take quite a long time.

Edit: my biggest fear with regards to this search is that I didn't implement the "push" detection properly. If so, it could be throwing out valid search paths. Has anyone ever seen a partial result in a push file that is longer than a few rows?
-Matthias Merzenich

User avatar
dvgrn
Moderator
Posts: 10713
Joined: May 17th, 2009, 11:00 pm
Location: Madison, WI
Contact:

Re: Help me finish this c/8 search

Post by dvgrn » January 22nd, 2020, 12:47 pm

Sokwe wrote:
January 22nd, 2020, 12:31 pm
Edit: my biggest fear with regards to this search is that I didn't implement the "push" detection properly. If so, it could be throwing out valid search paths. Has anyone ever seen a partial result in a push file that is longer than a few rows?
I think mine have all been exactly 6 rows. Here are the pushNNN outputs for pieces #0101 through #0109, except take the last three with a grain of salt because those searches didn't run to completion on this system:

Code: Select all

#C push0101
x = 15, y = 6, rule = B3/S23
2ob2obobob2ob2o$bob2obobob2obo$2b3obobob3o$3bo2bobo2bo$6bobo$4b
2o3b2o!

#C push0102
x = 17, y = 6, rule = B3/S23
bobo3b3o3bobo$2obob3ob3obob2o$bobobo5bobobo$5bobobobo$5b3ob3o$5b
2o3b2o!

#C push0102b
x = 17, y = 6, rule = B3/S23
bobo3b3o3bobo$2obob3ob3obob2o$bobobo5bobobo$5bobobobo$5b3ob3o$5b
2o3b2o!

#C push0103
x = 9, y = 6, rule = B3/S23
b2o3b2o$2o5b2o$3bobo$3bobo$bobobobo$b2o3b2o!

#C push0104
x = 15, y = 6, rule = B3/S23
o2bob2ob2obo2bo$b2o2b2ob2o2b2o$6bobo$4bobobobo$3bo2bobo2bo$4b2o
3b2o!

#C push0105
x = 9, y = 6, rule = B3/S23
b2o3b2o$bobobobo$2b2ob2o$bobobobo$o2bobo2bo$b2o3b2o!

#C push0106
x = 9, y = 6, rule = B3/S23
obo3bobo$bobobobo$2b2ob2o$bobobobo$o2bobo2bo$b2o3b2o!

#C push0107
x = 13, y = 6, rule = B3/S23
2o2b2ob2o2b2o2$3bo5bo$5bobo$2bo2bobo2bo$2bobo3bobo!

#C push0108
x = 9, y = 6, rule = B3/S23
3o3b3o3$3o3b3o$o7bo$obo3bobo!

#C push0109
x = 15, y = 6, rule = B3/S23
2b2o7b2o$4b3ob3o2$2o11b2o$bo2b2o3b2o2bo$4b2o3b2o!

John Goodman
Posts: 32
Joined: December 13th, 2019, 10:00 am

Re: Help me finish this c/8 search

Post by John Goodman » January 22nd, 2020, 12:54 pm

I'm seeing all short (6-row) push files here.

Sokwe
Moderator
Posts: 2694
Joined: July 9th, 2009, 2:44 pm

Re: Help me finish this c/8 search

Post by Sokwe » January 22nd, 2020, 3:51 pm

I'll probably run through each of the pieces to catch all of those short "push" partials and run them to completion, just to be safe. I doubt it will be very difficult or take much time, so I'm not too worried.

I wonder, is anyone still stuck on particularly long-running pieces like I am with piece 0000?
-Matthias Merzenich

User avatar
rowett
Moderator
Posts: 3832
Joined: January 31st, 2013, 2:34 am
Location: UK
Contact:

Re: Help me finish this c/8 search

Post by rowett » January 22nd, 2020, 3:55 pm

Sokwe wrote:
January 22nd, 2020, 3:51 pm
I'll probably run through each of the pieces to catch all of those short "push" partials and run them to completion, just to be safe. I doubt it will be very difficult or take much time, so I'm not too worried.

I wonder, is anyone still stuck on particularly long-running pieces like I am with piece 0000?
I've had a couple of pieces that took 6 hours + between dumps for a while but then accelerated later. How long is 0000 taking?

Sokwe
Moderator
Posts: 2694
Joined: July 9th, 2009, 2:44 pm

Re: Help me finish this c/8 search

Post by Sokwe » January 22nd, 2020, 3:57 pm

rowett wrote:
January 22nd, 2020, 3:55 pm
I've had a couple of pieces that took 6 hours + between dumps for a while but then accelerated later. How long is 0000 taking?
About that long, but it's been like that for a while. I need to double check some things about that search, but I don't have access to it right now.

Edit: I have another question. Has anybody experienced a crash with the latest version? I'm planning to add those changes to qfind eventually.
-Matthias Merzenich

Post Reply