Randomly enumerating glider syntheses

For discussion of specific patterns or specific families of patterns, both newly-discovered and well-known.
User avatar
Ian07
Posts: 694
Joined: September 22nd, 2018, 8:48 am

Re: Randomly enumerating glider syntheses

Post by Ian07 » September 21st, 2020, 7:54 pm

From goldenratio's BokaBB_stdin. (don't ask me why it's called that)

xp2:

Code: Select all

x = 14, y = 20, rule = B3/S23
12bo$11bo$11b3o8$5bo$5bobo2b2o$2o3b2o2b2o$b2o8bo$o3$b2o$obo$2bo!

xs12:

Code: Select all

x = 207, y = 50, rule = B3/S23
132bo$130bobo$131b2o16$4bo191bo$5bo190bobo$3b3o19bo170b2o$25bobo$25b2o
4$3o$2bo5bo2bobo$bo4bobo2b2o$7b2o3bo3$179bo$180bo$178b3o2$175bo$175b2o
$174bobo9$204b3o$204bo$205bo!

xs13:

Code: Select all

x = 367, y = 51, rule = B3/S23
330bobo$331b2o$331bo14$197bobo$198b2o$198bo5$108bo$109b2o$28bo79b2o$
27bo$27b3o$128bo$127bo$127b3o$360bo$361b2o$3bo356b2o$3b2o5b3o$2bobo5bo
106b2o104bobo12bo118bo$11bo106b2o104b2o11bo117bobo$117bo106bo12b3o108b
2o6b2o$128bo218bobo$bo21b2o102b2o97b2o121bo$b2o20bobo91b3o7bobo95b2o6b
2o129b2o$obo20bo95bo107bo4b2o130bobo$118bo115bo129bo3$233b3o125b3o$
233bo129bo$234bo127bo$355b2o$354bobo$356bo!

xs14:

Code: Select all

x = 289, y = 23, rule = B3/S23
2bo$obo$b2o8bo$9b2o108bo$10b2o6bo95bo2b2o$16b2o97bo2b2o51bo$17b2o94b3o
54bobo$170bobo103bo$124bo46bo105bo$16bo106b2o49bo100b3o9bo$16bobo104bo
bo48bo111bo$16b2o147b2o7bo4b2o91bo13b3o$119b2o44bobo10bobo92bo$118bobo
45bobob2o7bo91b3o$120bo47bobo$168bo2bo$9b2o158b2o9b2o93bobo$9bobo103b
2o63bobo93b2o2b3o$9bo104bobo63bo95bo3bo$116bo164bo$2b2o$bobo$3bo!

xs15:

Code: Select all

x = 488, y = 58, rule = B3/S23
215bo6bo$216b2o4bobo$215b2o5b2o7$218bo$217bobo$212b2o3bo2bo$211bobo4b
2o$213bo150bo97b2o$363bo97bo2bo$363b3o96bobo$obo376bo81b2ob2o$b2o87bo
20bo86b2o161bo17bobo79bo$bo6bo82b2o17bo86bobo162bo16b2o78bobo$6bobo81b
2o18b3o86bo160b3o96b2o$7b2o378bo$385b2o96bo$14bo371b2o94bobo$15bo467bo
bo$13b3o468bo2$485b2o$461bo23bobo$99bo361bo23bo$98bo362bo$93b2o3b3o
352bobo$16b2o76b2o352bo5b2ob3o3b3o$16bobo74bo353bobo4bo$16bo430bobo11b
o$448bo6bo5bo6b2o$89b2o354b2o8bo5bo5bo2bo$90b2o352bobo8bo12bobo$14b2o
73bo292bo63bo22bo$13bobo353b2o10b2o$15bo352bobo10bobo$370bo15$189b3o$
191bo$190bo!

xs16:

Code: Select all

x = 573, y = 69, rule = B3/S23
475bo$474bo$474b3o3$117bobo$118b2o$118bo15$289bobo$289b2o$285bo4bo$
286bo34b2o$146bo130b3o4b3o33bobo$144bobo132bo39bo7b2o$145b2o131bo39bo
7bo2bo$13bo304b2o6bo2bo$11b2o307bo6b2o$12b2o304b2obo$4bo313bo2bo229b2o
$5bo313b2o3b3o128bo95bo$3b3o320bo129bo96bo$276b2o47bo128b3o92b5o$277b
2o269bo$276bo13bo164bo93b3o$22b3o126bo3b2o132b2o164b2o95bo$22bo128b2o
2bobo131bobo162bobo14bo79b2o$23bo126bobo2bo313b2o$470b2o94b3o$bo4b3o$b
2o5bo451b2o102bo5bo$obo4bo453b2o101bo5bo$460bo103bo5bo2$560b2o4b3o$
559bo2bo$560b2o9bo$570b2o$471b3o96bobo$471bo88bo$472bo87bo$560bo9$116b
3o$118bo$117bo$172b3o$172bo$173bo!

xs17:

Code: Select all

x = 998, y = 110, rule = B3/S23
421bo$419b2o$420b2o$579bo$577bobo$578b2o$581bo$580bobo$416bo7b2o154bob
o$414bobo6b2o156bo$415b2o8bo$780bo$417b3o358bobo$417bo361b2o$418bo355b
o$404b3o365bobo$406bo366b2o$405bo376bo$583b2o195bobo$579b2o2bobo183b2o
10b2o$578bo2bobobo182bobo$579b2obobo185bo$582bo201bo$582b2o198b2o$199b
o579bo3b2o208bo$197bobo577bobo199b2o11bobo$198b2o578b2o198bo2bo10bobo$
8bo969bobo12bo$9b2o122bo67bo773b2ob2o15b2o$8b2o121bobo67bo774bo18bobo$
132b2o67bo772bobo18bo$14bo958bobo$14bobo956b2o$14b2o2$147bobo50b2o$
147b2o50bobo$148bo50b2o$197b2o$198bo$142b3o53bob2o$142bo56bo2bo$32b2o
109bo6b2o48bobo$b2o28b2o117bobo48bo$obo30bo116bo4b2o$2bo152bobo$155bo$
20bo$19b2o$19bobo13$461b2o$460b2o$462bo23$346b2o$347b2o$346bo18$861b2o
$861bobo$861bo!

xs18:

Code: Select all

x = 102, y = 39, rule = B3/S23
82bo8b2o$80bobo7bo2bo$81b2o7b2obo$93b2o$84b2o4b2obo$84b2o2bo2bobo7bo$o
bo85b2o2bo6b2o$b2o97b2o$bo94b2o$96bobo$97bo7$11bo$12b2o$11b2o2$24bo$
22b2o$23b2o$89b2o$88bo2bo$89b2o3$6bo$3o2b2o$2bo2bobo84b2o3bo$bo90b2o2b
obo$96bobo$97bo2$94b2o$95b2o$94bo!

xs19:

Code: Select all

x = 520, y = 76, rule = B3/S23
498bo$499bo$497b3o2$489bo11bo$92bobo395bo9bobo$93b2o393b3o9bo2bo$93bo
399b2o6b2o$493b2o5$obo486b2o$b2o486b2o$bo$6bo3b2o$7b2obobo$6b2o2bo8b2o
$18b2o$20bo3$374b2o$108bo265bobo$106b2o266bo$107b2o$507bo$116bobo250b
2o135bobo6b3o$116b2o250bo2bo134bobo$117bo250bo2bo132b2o2b2o3bo5bo$369b
2o132bobobo2bo2bo5bo$103bo399bobobobo3bo5bo$13b3o87b2o399bo3bo$13bo88b
obo5b2o260b3o6b3o131b3o$14bo94b2o261bo8bo$111bo261bo8bo$512b3o$119b3o
392bo$119bo393bo$120bo$367b2o$368b2o$367bo15$419b2o$419bobo$419bo13$
289b3o$291bo$290bo!

xs20:

Code: Select all

x = 604, y = 27, rule = B3/S23
62bo$o60bo$b2o58b3o$2o56b2o$58bobo91bo315bo132bo$59bo92bobo313bobo53bo
74b2o$152b2o80bo233b2o54bobo73b2o$234bobo287b2o$132bobo10bobo86b2o42bo
55bo43bo6bo136bo$133b2o10b2o131bobo54bo13bo29bo4bobo134bobo$58b2o73bo
5bo6bo131b2o53b3o5bo7bobo25b3o4bobo134bobo79bo$57bob3o75bobo82bo51b2o
65bobo5b2o34bo136bo72b3o3b2o$57bo4bo75b2o83bo45bo4b2o65b2o117bo51b2o3b
2o78bo4b2o$58b3o2bo157b3o44bobo7b2o100b2o76bobo51bobobobo77bo$18bobo
39bob2o204bobo7b2o99bo2bo71b2o3b2ob3o48b2obo82b2o$18b2o42bo203b2o2b2o
71bobo34b2o8b2o61bobo6bo53bo2bo78bobo$12bo6bo40bobo202bobobo2bo71b2o
43bo2bo62bo7bo52bobobo4bo74bo$13bo46b2o202bo2bobobo72bo40b2o2bob2o122b
2ob2o5bobo67b2o$11b3o199b3o9b2o2b3o33b2o3bo113bo2bobobo81b2o50b2o67bob
o$57bo157bo10b2obo115b2o37bo2bobobo81bobo46b2o72bo$57bo156bo10bo4bo
113bobo38b2o3bo64b2o16bo48b2o$57bo288bo109b2o$11b2o41b2o399bo$12b2o39b
obo90b2o$11bo4bo38bo73b3o14bobo$16b2o113bo14bo$15bobo112bo!

xs21:

Code: Select all

x = 364, y = 49, rule = B3/S23
182bobo$183b2o$183bo4$200bo$obo198b2o$b2o197b2o3bo$bo203bobo$205b2o3$
31bo$29b2o171b2o$30b2o169b2o$203bo158bo$361bo$111b2o210bo37b3o$106b2ob
o2bo210bobo32b2o$105bobob3o211b2o33b2o$87bo3b2o12bo242b2obobo$88bo2b2o
13b4o210bo26bobob2obo$17bo68b3o21bo210b2o6b2o16bo6bo$18b2o88bobo197b2o
10b2o6b2o18b6o$17b2o89b2o198b2o3bo16bo$89b2o221bobo35b2o$89b2o126bo94b
obo35b2o$17b3o196b2o95bo$19bo196bobo$18bo203b2o$221b2o$223bo$9b2o$10b
2o196b3o$9bo198bo$209bo3$35b3o$35bo$36bo138b2o$176b2o$175bo3$226b2o$
225b2o$227bo!

xs22:

Code: Select all

x = 697, y = 83, rule = B3/S23
447bobo$448b2o$448bo4$139bo$140b2o$139b2o3$159bobo$159b2o$160bo6$313b
2o3b2o$313bobobobo$157bo157bobo$142bo14bobo154b2ob2o$143b2o12b2o159bo$
142b2o170b2obo$314b2ob2o$156b3o$156bo417bo106bo$157bo414bobo104bobo12b
obo$573b2o105b2o12b2o$576b3o116bo$493bo87b2o2b2o103bo$19bo471bobo87bo
4bo102bo$19bobo470b2o4bo83b4o103b3o$19b2o478b2o$498b2o82b4o$581bo4bo$
8bobo571b3obo$8b2o273bo223bo76b2o108b3o$9bo274b2o222bo185bo$17bo265b2o
221b3o186bo$15b2o299b2o360b3o$16b2o298b2o362bo$13bo271b3o221bo169bo$
11b2o495bo$12b2o304b2o188b3o$317b2o$311b2o6bo$311b2o2$b2o506b3o$obo
506bo$2bo507bo3$8b2o$8bobo$8bo11$483b2o$484b2o$483bo10$185b2o$184b2o$
186bo!

xs23:

Code: Select all

x = 26, y = 23, rule = B3/S23
24bo$23bo$23b3o9$7bo$8bo$bobo2b3o$2b2o$2bo4$21b2o$bo19bobo$b2o18bo$obo
!

hkoenig
Posts: 173
Joined: June 20th, 2009, 11:40 am

Re: Randomly enumerating glider syntheses

Post by hkoenig » September 22nd, 2020, 11:11 am

Your latest list shows this object ([16.2808]) with a seven Glider construction. It is most likely known, but I've got a six in my database--

Code: Select all

x=120, y=86
5bo113bo$6b2o109b2o$5b2o111b2o25$89bo$88bo$88b3o3$24bo$25b2o$24b2o8bo$35b
o41bo$33b3o42b2o$77b2o2$31b2o54b2o$32b2o52b2o$31bo39bobo14bo$72b2o$29b3o40b
o$31bo$30bo40b3o$73bo$72bo31$91b3o$91bo$92bo3$bo$b2o$obo!

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

Re: Randomly enumerating glider syntheses

Post by dvgrn » September 22nd, 2020, 11:23 am

hkoenig wrote:
September 22nd, 2020, 11:11 am
Your latest list shows this object ([16.2808]) with a seven Glider construction. It is most likely known, but I've got a six in my database--

Code: Select all

x=120, y=86
5bo113bo$6b2o109b2o$5b2o111b2o25$89bo$88bo$88b3o3$24bo$25b2o$24b2o8bo$35b
o41bo$33b3o42b2o$77b2o2$31b2o54b2o$32b2o52b2o$31bo39bobo14bo$72b2o$29b3o40b
o$31bo$30bo40b3o$73bo$72bo31$91b3o$91bo$92bo3$bo$b2o$obo!
These days I think we can say that if Catagolue doesn't know about a record-low-cost synthesis of this type -- and it currently doesn't -- then it's not really known, or at least not well enough known yet.

I've submitted the synthesis on the left to Catagolue's exquisitely nonmagical box, so it will hopefully know about it within eight hours.

User avatar
Ian07
Posts: 694
Joined: September 22nd, 2018, 8:48 am

Re: Randomly enumerating glider syntheses

Post by Ian07 » September 22nd, 2020, 7:05 pm

hkoenig wrote:
September 22nd, 2020, 11:11 am
Your latest list shows this object ([16.2808]) with a seven Glider construction. It is most likely known, but I've got a six in my database--

Code: Select all

RLE
Left one is invalid, unfortunately:

Code: Select all

x = 120, y = 86, rule = LifeHistory
5.A113.A$6.2A109.2A$5.2A111.2A25$89.A$88.A$88.3A3$24.A$25.2A$24.2A8.A
$35.A41.A$33.3A42.2A$77.2A2$31.2C4.D49.2A$32.2C3.D48.2A$31.C5.D33.A.A
14.A$37.D34.2A$29.3C40.A$31.C5.D$30.C40.3A$73.A$72.A31$91.3A$91.A$92.
A3$.A$.2A$A.A!
Rewinded by 4 ticks:

Code: Select all

x = 171, y = 88, rule = B3/S23
5bo164bo$6b2o160b2o$5b2o162b2o25$140bo$139bo$139b3o3$24bo$25b2o$24b2o
8bo$35bo90bo$33b3o91b2o$126b2o4$31b2o87bobo15b2o$32b2o87b2o14b2o$31bo
89bo17bo2$29b3o$31bo$30bo89b3o$122bo$121bo31$142b3o$142bo$143bo3$bo$b
2o$obo!
The right one, however, should be valid; I've submitted that one so now we should see it after the next update. (fingers crossed)

EDIT: To be honest, I'm surprised how many old syntheses were later revealed to be invalid when Freywa double-checked them with Shinjuku - for example A for all and many of the synths from the original 18-bit project. I'd thought the code for this would've already existed pre-Shinjuku, but at least we have it now.

EDIT 2: Weirdly, Catagolue marked the component as successful but didn't actually update it. But again, thankfully we have checks against that now - it's better than that time I accidentally broke the entire update process for a day and a half and had to have both Calcyman and Freywa issue emergency patches to Catagolue and Shinjuku respectively. :P
Last edited by Ian07 on September 22nd, 2020, 7:18 pm, edited 3 times in total.

hkoenig
Posts: 173
Joined: June 20th, 2009, 11:40 am

Re: Randomly enumerating glider syntheses

Post by hkoenig » September 22nd, 2020, 7:09 pm

Oh, well. I must've missed the recall notice on that one. It's gone now...

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

Re: Randomly enumerating glider syntheses

Post by dvgrn » September 22nd, 2020, 8:54 pm

Ian07 wrote:
September 22nd, 2020, 7:05 pm
EDIT 2: Weirdly, Catagolue marked the component as successful but didn't actually update it.
Ooh, ooh, I can explain that one! Count the number of gliders in the right recipe very carefully.

User avatar
Ian07
Posts: 694
Joined: September 22nd, 2018, 8:48 am

Re: Randomly enumerating glider syntheses

Post by Ian07 » September 22nd, 2020, 9:04 pm

dvgrn wrote:
September 22nd, 2020, 8:54 pm
Ooh, ooh, I can explain that one! Count the number of gliders in the right recipe very carefully.
Oh. :oops:
Thought that was supposed to be a second 6-glider synthesis. However, my original comment still holds - you submitted the false 6G on its own and Catagolue marked it as a "success" and then proceeded to ignore it.

User avatar
BlinkerSpawn
Posts: 1981
Joined: November 8th, 2014, 8:48 pm
Location: Getting a snacker from R-Bee's

Re: Randomly enumerating glider syntheses

Post by BlinkerSpawn » September 25th, 2020, 10:06 am

Two nice Seeds of Destruction results and a simple construction, all [if I count correctly] 1G reductions:

Code: Select all

x = 333, y = 58, rule = B3/S23
207b2o$207bobo$207bo$45bo$44bo$44b3o155b2o$60bo140bo2bo$42bo17bobo138b
o2bo$43bo16b2o140b2o112bo$41b3o273bo$68bo246b3o$66b2o137b3o6b3o$67b2o
136bo8bo$206bo8bo2$312bo$312b2o$311bobo3b2o$200b2o114bo2bo$201b2o114b
2o$200bo126b2o$326b2ob2o$327b4o$328b2o2$330b3o$330bo$63bo267bo$50b2o
10b2o$49bobo10bobo$51bo86b3o$140bo$139bo3$252b2o$252bobo$252bo18$bo$b
2o$obo!
LifeWiki: Like Wikipedia but with more spaceships. [citation needed]

Image

User avatar
goldenratio
Posts: 291
Joined: July 26th, 2020, 10:39 pm

Re: Randomly enumerating glider syntheses

Post by goldenratio » October 5th, 2020, 11:18 pm

Question (previously asked on discord but I think they were busy): Could anyone modify the script to produce only collisions with D2 (+1, +2, x) symmetry? I think we'll find some more improvements there.
Time to get active again... temporarily disconnecting yourself from the community is a very bad experience, so if you want to leave, please do so permanently.

Help expand or create new tutorials on LifeWiki!

User avatar
Ian07
Posts: 694
Joined: September 22nd, 2018, 8:48 am

Re: Randomly enumerating glider syntheses

Post by Ian07 » October 16th, 2020, 3:00 pm

Results from bubblegum's new hauls in 5Glider_stdin:

Code: Select all

x = 3197, y = 94, rule = B3/S23
1972bo$1970bobo$1971b2o5$1574bo$1572bobo$1573b2o14$1105bo1102bo$1104bo
1104bo$1104b3o1100b3o$2542b2o$2542b2o2$2211b3o332bo$2543bo2bobo$2209bo
5bo327bo2b2o$2209bo5bo312bobo12bo$2209bo5bo313b2o$332bobo1025bo661bobo
504bo3bo$333b2o1023bobo662b2o2bobo181b3o319bo$333bo591bo433b2o662bo3b
2o504bo$926bo388bobo44bo665bo1166bo$835bo88b3o388b2o45bo1831bo$834bo
481bo45bo860bo304bobo663b3o$834b3o1385bo306b2o$927b3o382bo909b3o304bo
29bo267bobo80bo$1074bo236bo907b2o336b2o268b2o79bobo$828b3o94bo5bo143bo
235b3o883bo21b2o310b3o24b2o268bo80b2o212bo$925bo5bo141b3o286b2o834bo
356bo337bo22b2o203bobo$817b2o106bo5bo429bobo832b3o11b2o342bobo334bobo
21bo2bo203b2o$816bobo12b3o523b2obobo659bo177b2o4bo2bobo342bo2bo334b2o
16bo4bo2bo65b2o$484bo333bo12bo95b3o232bo140b2o52b2obo401bo257bobo177b
2o4b4o345b2o352bobo4b2o65bo2bo123bo$482bobo24bo322bo330bo140b2o54b2o
288bo112bo257b2o188bo333bo349bo12bo2bo71bo2bo124b2o9bo51bo5b3o$483b2o
22b2o144bobo256bo248b3o5b2o132bo56bo287b2o111b3o423bo18b6o333bo86bo
262bo13b2o73b2o3b2o119b2o10b2o48bobo$508b2o31b2o110b2o255bobo252b2obo
2bob2o183bobo288b2o114b3o420bo17bo24bo313bo84bobo262bo93bobo129bobo49b
2o3bo5bo$540bob3o109bo256b2o10b2ob2o156bo80b2ob2obobo137b2o44bobo657b
2o167b3o18bobo20bobo398b2o193bo85b2o16bo58bo188bo5bo$539bo5bo98bo274b
2obobobo155b2o85bobobo137bobo44bo659b2o170b3o15b2o21bo314bo279bobo79b
2obo2bo14bo248bo5bo$539bob3obo96bobo269b2o4bobobobo156b2o84bobob2o136b
o705bo527bobo278b2o79bobobob2o14b3o48b2o145bobo58b2o$13bo105bo420bobob
o98b2o269b2o4bobob2o244bo1008bo365b2obo85bo272bo3bo64b2obo2bo145b2o50b
3o5b2o$12bo107b2o572b2o225bo156bo1101bo50b3o314bo85bo273b4o13b3o47bobo
bob2o145bo$12b3o104b2o528bo40b2o3bo382b2o655b2o441b3o50bo300bobo13b2o
84bo190b2o12b2o134bo3bo145b2o$17bobo518b2o107b2o40bob4o3b2o377bobo538b
2o111b2obo2bo444b2o48bo300b2o15bo274bobo10b2o70b2o64b4o144bobo45b2o17b
2o$17b2o134bo384b2o108b2o39bo7bo2bo918b2o111bobob2o444b2o349bo9b2ob4ob
o83bo189bo14bo68bobo214bo45b2o13bo3bobo$18bo134bobo207bo177b3o144b2o3b
2o3b2o913bo4bo113bobo701bo99b2o4bobobo4bo82bobo273bo67b2o206bobo4bo$
153b2o46b2o155b2o2b2o127b3o2b3o42bo151b2o918b2o118bo2b2o699bo98b2o5bo
4b3o83b2obo339bobo206bob5o$202bo154bobo2bobo128bo4bo43bo104b3o962bobo
6b2o114bo697b3o109b2o88bo340bo206b2o$199b3o8bo148bo132bo4bo151bo50b2o
3bobo913bobo113bobo688bobo206b2o548b4o$140bo57bo10bo297b2o139bo50bo2bo
2b2o914bo116b2o285bo403b2o208bo547bo2bo$6b2o130b2o57bo2b2o7b3o295bobo
189bobo4bo613b3o701b2o403bo9b2o87b2o102b2ob4obo275bo271b2o$5bobo131b2o
57b2obo4b2o299bo192bo619bo703bobo411b2o88b2o101bobobo4bo275bo$7bo115bo
82b2o1113bo1107b2o9bo79b2o110bo4b3o276bo$121bobo228b2o2074bobo90b2o2b
2o109b2o$bo120b2o229b2o1286bo788bo89bo4bobo308b2o75b2o$b2o349bo284bo
1002b2o107b2o775bo308b2o75bobo$obo634b2o1001bobo106b2o1086bo76bo$5b2o
120bo508bobo1106b3o$6b2o119b2o1618bo$5bo120bobo1617bo$364bo4bo713b2o$
363b2o3b2o713bobo$363bobo2bobo479b2o231bo$850bobo1231b2o455b2o$850bo
1232b2o456b2o$2085bo$2538b2o$2539b2o$2538bo9$2069bo$2068b2o$2068bobo!

User avatar
bubblegum
Posts: 927
Joined: August 25th, 2019, 11:59 pm
Location: click here to do nothing

Re: Randomly enumerating glider syntheses

Post by bubblegum » November 9th, 2020, 4:13 pm

So apparently I found this yesterday:

Code: Select all

x = 36, y = 33, rule = B3/S23
3bo$4bo$2b3o6$8bo$2bo3bobo$obo4b2o$b2o31bo$33bo$33b3o17$25bo$24b2o$24b
obo!
Each day is a hidden opportunity, a frozen waterfall that's waiting to be realised, and one that I'll probably be ignoring
sonata wrote:
July 2nd, 2020, 8:33 pm
conwaylife signatures are amazing[citation needed]
anything

User avatar
goldenratio
Posts: 291
Joined: July 26th, 2020, 10:39 pm

Re: Randomly enumerating glider syntheses

Post by goldenratio » November 9th, 2020, 6:10 pm

Cis-mold on dock:

Code: Select all

x = 69, y = 62, rule = B3/S23
2bo$obo$b2o7$9bo$7bobo36bo$8b2o35bo$45b3o4$57bo$57bobo$57b2o4$40b2o$41b
2o$40bo2$45b3o$45bo$46bo31$66b2o$66bobo$66bo!
2 cis griddles with 2 tubs:

Code: Select all

x = 21, y = 25, rule = B3/S23
18b2o$17bo2bo$18b2o2$5bo2b3o$5bo2bo$o4bo3bo$b2o$2o14$3b2o$4b2o$3bo!
Both NOT from xglider_stdin but instead from Mateon1_glider6_5_6_test

Also, 2^7th post
Time to get active again... temporarily disconnecting yourself from the community is a very bad experience, so if you want to leave, please do so permanently.

Help expand or create new tutorials on LifeWiki!

User avatar
bubblegum
Posts: 927
Joined: August 25th, 2019, 11:59 pm
Location: click here to do nothing

Re: Randomly enumerating glider syntheses

Post by bubblegum » November 11th, 2020, 5:02 pm

Kazyan found a component in January in 5Glider_stdin, but only finished it when I brought it up yesterday:

Code: Select all

x = 34, y = 38, rule = B3/S23
bo$2bo$3o$32bo$31bo$26bo4b3o$19bo5bo$20bo4b3o$18b3o7$29bo$28bo$28b3o
11$15b2o$14bobo$16bo15b2o$31b2o$33bo2$20b2o$20bo$21bo$20b2o!
This was the original collision:

Code: Select all

x = 0, y = 0, rule = B3/S23
18bo1$19b2o1$18b2o2$7bo1$8bo1$6b3o17$21b2o1$21bobo1$21bo4$17bo1$17b2o1$16bobo2$33b2o1$33bobo1$33bo!
Each day is a hidden opportunity, a frozen waterfall that's waiting to be realised, and one that I'll probably be ignoring
sonata wrote:
July 2nd, 2020, 8:33 pm
conwaylife signatures are amazing[citation needed]
anything

User avatar
goldenratio
Posts: 291
Joined: July 26th, 2020, 10:39 pm

Re: Randomly enumerating glider syntheses

Post by goldenratio » December 26th, 2020, 11:06 pm

goldenratio wrote:
October 5th, 2020, 11:18 pm
Question (previously asked on discord but I think they were busy): Could anyone modify the script to produce only collisions with D2 (+1, +2, x) symmetry? I think we'll find some more improvements there.
No one responded, so I did it myself (the code is a lot messier than the asymmetric one at the start of this thread; this could probably be cleaned up and ported to C++)). As a bonus, these should not generate any invalid syntheses.

D2_+1:

Code: Select all

import java.util.*;
import java.lang.Math;

public class collisiongenerator {
	//Make sure the glider count is even of course!
	static int glidercount = 10;
	static char coordinates[][] = new char[35][49];
	static void placeglider(int xcoor, int ycoor, int gliderphase) {
		//This is a mess right now since I don't know bitmasks
		List<Boolean> gphase = null;
		//Gliderphases 1, 2, 3, 4 = NW glider
		if (gliderphase == 1)
			gphase = Arrays.asList(true, true, false, true, false, true, true, false, false);
		else if (gliderphase == 2)
			gphase = Arrays.asList(false, true, true, true, true, false, false, false, true);
		else if (gliderphase == 3)
			gphase = Arrays.asList(true, true, true, true, false, false, false, true, false);
		else if (gliderphase == 4)
			gphase = Arrays.asList(false, true, false, true, true, false, true, false, true);
		//Gliderphases 5, 6, 7, 8 = NE glider
		else if (gliderphase == 5)
			gphase = Arrays.asList(false, true, true, true, false, true, false, false, true);
		else if (gliderphase == 6)
			gphase = Arrays.asList(true, true, false, false, true, true, true, false, false);
		else if (gliderphase == 7)
			gphase = Arrays.asList(true, true, true, false, false, true, false, true, false);
		else if (gliderphase == 8)
			gphase = Arrays.asList(false, true, false, false, true, true, true, false, true);
		//Gliderphases 9, 10, 11, 12 = SW glider
		else if (gliderphase == 9)
			gphase = Arrays.asList(true, false, false, true, false, true, true, true, false);
		else if (gliderphase == 10)
			gphase = Arrays.asList(false, false, true, true, true, false, false, true, true);
		else if (gliderphase == 11)
			gphase = Arrays.asList(false, true, false, true, false, false, true, true, true);
		else if (gliderphase == 12)
			gphase = Arrays.asList(true, false, true, true, true, false, false, true, false);
		//Gliderphases 13, 14, 15, 16 = SE glider
		else if (gliderphase == 13)
			gphase = Arrays.asList(false, false, true, true, false, true, false, true, true);
		else if (gliderphase == 14)
			gphase = Arrays.asList(true, false, false, false, true, true, true, true, false);
		else if (gliderphase == 15)
			gphase = Arrays.asList(false, true, false, false, false, true, true, true, true);
		else
			gphase = Arrays.asList(true, false, true, false, true, true, false, true, false);
		for (int i = 0; i <= 2; i++) {
			for (int j = 0; j <= 2; j++) {
				if (gphase.get(3 * j + i) == true)
					coordinates[xcoor + i][ycoor + j] = 'o';
			}
		}
	}
	static boolean validpos(int xcoor, int ycoor) {
		boolean valid = true;
		for (int i = 0; i <= 34; i++) {
			for (int j = 0; j <= 48; j++) {
				if (coordinates[i][j] == 'o') {
					int xdiff = i - xcoor;
					int ydiff = j - ycoor;
					if ((Math.abs(xdiff) <= 4) && (Math.abs(ydiff) <= 4)) {
						valid = false;
						break;
					}
				}
			}
		}
		return valid;
	}
	static void printrle() {
		int b = 1;
		System.out.println();
		System.out.print("x = 0, y = 0, rule = B3/S23");
		System.out.println();
		for (int j = 0; j <= 48; j++) {
			for (int i = 1; i <= 34; i++) {
				if (coordinates[i][j] == coordinates[i - 1][j])
					b++;
				else {
					if (b != 1)
						System.out.print(b);
					System.out.print(coordinates[i - 1][j]);
					b = 1;
				}
			}
			if (b != 1) {
				System.out.print(b);
				System.out.print(coordinates[34][j]);
				b = 1;
			}
			else 
				System.out.print(coordinates[34][j]);
			if (j != 48) 
				System.out.print('$');
			else 
				System.out.print('!');
		}
	}
	public static void main(String[] args) {
		while (true) {
			for (char[] row: coordinates)
				Arrays.fill(row, 'b');
			for (int i = 1; i <= glidercount / 2; i++) {
				int ycoor = (int) (3 + Math.random() * 20);
				int xcoor = 0;
				int gphase = 0;
				if (Math.random() < 0.5) {
					gphase = (int) (9 + Math.random() * 4);
					xcoor = (int) (18 + Math.random() * 14);
				}
				else {
					gphase = (int) (13 + Math.random() * 4);
					xcoor = (int) (Math.random() * 15);
				}
				if (validpos(xcoor, ycoor) == true) {
					placeglider(xcoor, ycoor, gphase);
					placeglider(xcoor, 48 - ycoor, gphase - 8);
				}
			}
			printrle();
		}
	}
}
D2_+2 (not run yet; you only need to change five numbers from the D2_+1 version but for the lazy):

Code: Select all

import java.util.*;
import java.lang.Math;

public class collisiongenerator {
	//Make sure the glider count is even of course!
	static int glidercount = 10;
	static char coordinates[][] = new char[35][50];
	static void placeglider(int xcoor, int ycoor, int gliderphase) {
		//This is a mess right now since I don't know bitmasks
		List<Boolean> gphase = null;
		//Gliderphases 1, 2, 3, 4 = NW glider
		if (gliderphase == 1)
			gphase = Arrays.asList(true, true, false, true, false, true, true, false, false);
		else if (gliderphase == 2)
			gphase = Arrays.asList(false, true, true, true, true, false, false, false, true);
		else if (gliderphase == 3)
			gphase = Arrays.asList(true, true, true, true, false, false, false, true, false);
		else if (gliderphase == 4)
			gphase = Arrays.asList(false, true, false, true, true, false, true, false, true);
		//Gliderphases 5, 6, 7, 8 = NE glider
		else if (gliderphase == 5)
			gphase = Arrays.asList(false, true, true, true, false, true, false, false, true);
		else if (gliderphase == 6)
			gphase = Arrays.asList(true, true, false, false, true, true, true, false, false);
		else if (gliderphase == 7)
			gphase = Arrays.asList(true, true, true, false, false, true, false, true, false);
		else if (gliderphase == 8)
			gphase = Arrays.asList(false, true, false, false, true, true, true, false, true);
		//Gliderphases 9, 10, 11, 12 = SW glider
		else if (gliderphase == 9)
			gphase = Arrays.asList(true, false, false, true, false, true, true, true, false);
		else if (gliderphase == 10)
			gphase = Arrays.asList(false, false, true, true, true, false, false, true, true);
		else if (gliderphase == 11)
			gphase = Arrays.asList(false, true, false, true, false, false, true, true, true);
		else if (gliderphase == 12)
			gphase = Arrays.asList(true, false, true, true, true, false, false, true, false);
		//Gliderphases 13, 14, 15, 16 = SE glider
		else if (gliderphase == 13)
			gphase = Arrays.asList(false, false, true, true, false, true, false, true, true);
		else if (gliderphase == 14)
			gphase = Arrays.asList(true, false, false, false, true, true, true, true, false);
		else if (gliderphase == 15)
			gphase = Arrays.asList(false, true, false, false, false, true, true, true, true);
		else
			gphase = Arrays.asList(true, false, true, false, true, true, false, true, false);
		for (int i = 0; i <= 2; i++) {
			for (int j = 0; j <= 2; j++) {
				if (gphase.get(3 * j + i) == true)
					coordinates[xcoor + i][ycoor + j] = 'o';
			}
		}
	}
	static boolean validpos(int xcoor, int ycoor) {
		boolean valid = true;
		for (int i = 0; i <= 34; i++) {
			for (int j = 0; j <= 49; j++) {
				if (coordinates[i][j] == 'o') {
					int xdiff = i - xcoor;
					int ydiff = j - ycoor;
					if ((Math.abs(xdiff) <= 4) && (Math.abs(ydiff) <= 4)) {
						valid = false;
						break;
					}
				}
			}
		}
		return valid;
	}
	static void printrle() {
		int b = 1;
		System.out.println();
		System.out.print("x = 0, y = 0, rule = B3/S23");
		System.out.println();
		for (int j = 0; j <= 49; j++) {
			for (int i = 1; i <= 34; i++) {
				if (coordinates[i][j] == coordinates[i - 1][j])
					b++;
				else {
					if (b != 1)
						System.out.print(b);
					System.out.print(coordinates[i - 1][j]);
					b = 1;
				}
			}
			if (b != 1) {
				System.out.print(b);
				System.out.print(coordinates[34][j]);
				b = 1;
			}
			else 
				System.out.print(coordinates[34][j]);
			if (j != 49) 
				System.out.print('$');
			else 
				System.out.print('!');
		}
	}
	public static void main(String[] args) {
		while (true) {
			for (char[] row: coordinates)
				Arrays.fill(row, 'b');
			for (int i = 1; i <= glidercount / 2; i++) {
				int ycoor = (int) (3 + Math.random() * 20);
				int xcoor = 0;
				int gphase = 0;
				if (Math.random() < 0.5) {
					gphase = (int) (9 + Math.random() * 4);
					xcoor = (int) (18 + Math.random() * 14);
				}
				else {
					gphase = (int) (13 + Math.random() * 4);
					xcoor = (int) (Math.random() * 15);
				}
				if (validpos(xcoor, ycoor) == true) {
					placeglider(xcoor, ycoor, gphase);
					placeglider(xcoor, 49 - ycoor, gphase - 8);
				}
			}
			printrle();
		}
	}
}
Will work on D2_x
And already, a new synthesis:

Code: Select all

x = 23, y = 45, rule = B3/S23
2bo$obo17bobo$b2o17b2o$21bo2$11bo$9bobo$10b2o10$15bo$16bo$14b3o3bo$20b
obo$20b2o2$20b2o$20bobo$14b3o3bo$16bo$15bo10$10b2o$9bobo$11bo2$21bo$b
2o17b2o$obo17bobo$2bo!
Time to get active again... temporarily disconnecting yourself from the community is a very bad experience, so if you want to leave, please do so permanently.

Help expand or create new tutorials on LifeWiki!

User avatar
yujh
Posts: 2302
Joined: February 27th, 2020, 11:23 pm
Location: 我不觉得我迷路了,我可能在K2-146 b上 (@bibunsekibun)
Contact:

Re: Randomly enumerating glider syntheses

Post by yujh » December 26th, 2020, 11:31 pm

Is there a python version for this?
B34kz5e7c8/S23-a4ityz5k!!!

b2n3-q5y6cn7s23-k4c8

B3-kq6cn8/S2-i3-a4ciyz8

wiki

Rule modifier

Got quoted by someone on my ignore list, still got notified. It's a pity.

User avatar
bubblegum
Posts: 927
Joined: August 25th, 2019, 11:59 pm
Location: click here to do nothing

Re: Randomly enumerating glider syntheses

Post by bubblegum » December 27th, 2020, 12:13 am

@Ian07 would you care to check for new syntheses in 5Glider_stdin before I start committing new hauls?
Each day is a hidden opportunity, a frozen waterfall that's waiting to be realised, and one that I'll probably be ignoring
sonata wrote:
July 2nd, 2020, 8:33 pm
conwaylife signatures are amazing[citation needed]
anything

User avatar
goldenratio
Posts: 291
Joined: July 26th, 2020, 10:39 pm

Re: Randomly enumerating glider syntheses

Post by goldenratio » December 27th, 2020, 8:21 pm

C++ port to the D2 collision enumerator posted earlier (with some code cleanups)

D2_+1:

Code: Select all

#include <iostream>
#include <random>
#include <cmath>
#include <stdlib.h>    
#include <time.h>  
using namespace std;
//Make sure the glider count is even of course!
int glidercount = 10;
char coordinates [35][49];
string gliderphases[16] = {"abbabaaab", "bbaaabbaa", "bababbaaa", "abaaabbab", "bbaababaa", "abbbaaaab", "babbbaaaa", "ababaabab", "aababaabb", "baaaabbba", "aaaabbbab", "babaababa", "baaababba", "aabbaaabb", "aaabbabab" , "babbaaaba"};
void placeglider(int xcoor, int ycoor, int gliderphase) {
	string gphase = gliderphases[gliderphase - 1];
	for (int i = 0; i <= 2; i++) {
		for (int j = 0; j <= 2; j++) {
			if (gphase.at(3 * i + j) == 'a')
				coordinates[xcoor + j][ycoor + i] = 'o';
		}
	}
}
bool validpos(int xcoor, int ycoor) {
	bool valid = true;
	for (int i = 0; i <= 34; i++) {
		for (int j = 0; j <= 48; j++) {
			if (coordinates[i][j] == 'o') {
				int xdiff = i - xcoor;
				int ydiff = j - ycoor;
				if ((abs (xdiff) <= 4) && (abs (ydiff) <= 4)) {
					valid = false;
					break;
				}
			}
		}
	}
	return valid;
}
void printrle() {
	int b = 1;
	cout << "\n";
	cout << "x = 0, y = 0, rule = B3/S23";
	cout << "\n";
	for (int j = 0; j <= 48; j++) {
		for (int i = 1; i <= 34; i++) {
			if (coordinates[i][j] == coordinates[i - 1][j])
				b++;
			else {
				if (b != 1)
					cout << b;
				cout << coordinates[i - 1][j];
				b = 1;
			}
		}
		if (b != 1) {
			cout << b;
			cout << coordinates[34][j];
			b = 1;
		}
		else 
			cout << coordinates[34][j];
		if (j != 48) 
			cout << '$';
		else 
			cout << '!';
	}
}
int main() {
    srand (time(NULL));
    while (true) {
		std::fill(&coordinates[0][0], &coordinates[0][0] + sizeof(coordinates), 'b');
		for (int i = 1; i <= glidercount / 2; i++) {
			int ycoor = 3 + rand() % 20;
			int gphase;
			int xcoor; 
			if (rand() % 2 == 1) {
				gphase = 1 + rand() % 4;
				xcoor = 18 + rand() % 14;
			}
			else {
				gphase = 5 + rand() % 4;
				xcoor = rand() % 15;
			}
			if (validpos(xcoor, ycoor) == true) {
				placeglider(xcoor, ycoor, gphase);
				placeglider(xcoor, 48 - ycoor, gphase + 8);
			}
		}
		printrle();
    }
}
D2_+2:

Code: Select all

#include <iostream>
#include <random>
#include <cmath>
#include <stdlib.h>    
#include <time.h>  
using namespace std;
//Make sure the glider count is even of course!
int glidercount = 10;
char coordinates [35][50];
string gliderphases[16] = {"abbabaaab", "bbaaabbaa", "bababbaaa", "abaaabbab", "bbaababaa", "abbbaaaab", "babbbaaaa", "ababaabab", "aababaabb", "baaaabbba", "aaaabbbab", "babaababa", "baaababba", "aabbaaabb", "aaabbabab" , "babbaaaba"};
void placeglider(int xcoor, int ycoor, int gliderphase) {
	string gphase = gliderphases[gliderphase - 1];
	for (int i = 0; i <= 2; i++) {
		for (int j = 0; j <= 2; j++) {
			if (gphase.at(3 * i + j) == 'a')
				coordinates[xcoor + j][ycoor + i] = 'o';
		}
	}
}
bool validpos(int xcoor, int ycoor) {
	bool valid = true;
	for (int i = 0; i <= 34; i++) {
		for (int j = 0; j <= 49; j++) {
			if (coordinates[i][j] == 'o') {
				int xdiff = i - xcoor;
				int ydiff = j - ycoor;
				if ((abs (xdiff) <= 4) && (abs (ydiff) <= 4)) {
					valid = false;
					break;
				}
			}
		}
	}
	return valid;
}
void printrle() {
	int b = 1;
	cout << "\n";
	cout << "x = 0, y = 0, rule = B3/S23";
	cout << "\n";
	for (int j = 0; j <= 49; j++) {
		for (int i = 1; i <= 34; i++) {
			if (coordinates[i][j] == coordinates[i - 1][j])
				b++;
			else {
				if (b != 1)
					cout << b;
				cout << coordinates[i - 1][j];
				b = 1;
			}
		}
		if (b != 1) {
			cout << b;
			cout << coordinates[34][j];
			b = 1;
		}
		else 
			cout << coordinates[34][j];
		if (j != 49) 
			cout << '$';
		else 
			cout << '!';
	}
}
int main() {
    srand (time(NULL));
    while (true) {
		std::fill(&coordinates[0][0], &coordinates[0][0] + sizeof(coordinates), 'b');
		for (int i = 1; i <= glidercount / 2; i++) {
			int ycoor = 3 + rand() % 20;
			int gphase;
			int xcoor; 
			if (rand() % 2 == 1) {
				gphase = 1 + rand() % 4;
				xcoor = 18 + rand() % 14;
			}
			else {
				gphase = 5 + rand() % 4;
				xcoor = rand() % 15;
			}
			if (validpos(xcoor, ycoor) == true) {
				placeglider(xcoor, ycoor, gphase);
				placeglider(xcoor, 49 - ycoor, gphase + 8);
			}
		}
		printrle();
    }
}
EDIT: This can on occasion produce invalid syntheses, but occurrences are much less frequent than the asymmetric generator.
Also this obviously won't find syntheses for non-gutter-symmetric patterns.
EDIT 2 (1-18-2021): I think I fixed the glider positioning bug. The scripts should now be fully functional.
Last edited by goldenratio on March 10th, 2021, 11:24 am, edited 5 times in total.
Time to get active again... temporarily disconnecting yourself from the community is a very bad experience, so if you want to leave, please do so permanently.

Help expand or create new tutorials on LifeWiki!

User avatar
Ian07
Posts: 694
Joined: September 22nd, 2018, 8:48 am

Re: Randomly enumerating glider syntheses

Post by Ian07 » December 28th, 2020, 1:52 pm

bubblegum wrote:
December 27th, 2020, 12:13 am
@Ian07 would you care to check for new syntheses in 5Glider_stdin before I start committing new hauls?
If you're planning on continuing the search, I'd prefer if you did so first. Since the script I use returns every sample soup for an object, and I don't have a good way of filtering out the ones that have already been checked, I try to avoid checking the results while someone is still busy searching, as it essentially results in work I'll have to redo later.

User avatar
bubblegum
Posts: 927
Joined: August 25th, 2019, 11:59 pm
Location: click here to do nothing

Re: Randomly enumerating glider syntheses

Post by bubblegum » December 28th, 2020, 4:56 pm

Ian07 wrote:
December 28th, 2020, 1:52 pm
If you're planning on continuing the search, I'd prefer if you did so first. Since the script I use returns every sample soup for an object, and I don't have a good way of filtering out the ones that have already been checked, I try to avoid checking the results while someone is still busy searching, as it essentially results in work I'll have to redo later.
Oh, okay then, I'll continue it.
Each day is a hidden opportunity, a frozen waterfall that's waiting to be realised, and one that I'll probably be ignoring
sonata wrote:
July 2nd, 2020, 8:33 pm
conwaylife signatures are amazing[citation needed]
anything

User avatar
Ian07
Posts: 694
Joined: September 22nd, 2018, 8:48 am

Re: Randomly enumerating glider syntheses

Post by Ian07 » March 11th, 2021, 8:30 pm

Another look at the stdins that got cut short halfway through. I was thinking of finishing it this weekend, but 5G is being searched again so I'll wait on that one and just submit what I had.

Oscillators:

Code: Select all

x = 7375, y = 535, rule = B3/S23
5979bo$5977bobo$5978b2o14$1684bo$1683bo$1683b3o6$1693bo4449bo$1692bo
4446bo3bobo$1692b3o4443bobo2b2o$6139bo2$6123bo364bo$6123bobo25bo335bo$
6119b2o2b2o26bobo333b3o$6119b2o30b2o506bo$6285bo374b2o$5808bobo336b3o
136bo17bo345bo8b2o17bo$5707bo101b2o312b2o159b3o15b2o160bo186bo26bobo$
5705bobo101bo313b2o10b2o166b2o157bobo184b3o19bo6b2o$5706b2o423b2obobo
154bo171b2o205bo$6028bo101bobobo157b2o194bo181b3o$6028bobo99bobob2o
155b2o195bobo$6013bo14b2o101bo3bo352b2o56bo$5166bo847b2o116b3o410bobo$
5004bo159bobo225bo414bo16bo188b2o467bo63b2o$5002b2o161b2o226b2o413bo
13b2o210bobo443b2o175bobo$4696bo306b2o387b2o320bo91b3o14b2o209b2o96b3o
156bo189b2o50b2o9b4o110b2o$4694b2o53b2o3bobo424bo298bobo141bo90b2o318b
o95bo3bo155bobo170bo68b2o9bo3bo109bo$4695b2o52b2o3b2o73bobo347b2o280bo
bo17b2o142b2o87b2o414bobob2o155b2o169bobo80b3o$4755bo73b2o169bo179b2o
280b2o17bo142b2o95bobo406bobobo328b2o81bo$4669bo160bo169bobo459bo4b2o
253b2o407b2obobo393bo15bo$4670bo154b2o173b2o464bo2bo252bo400b2o10b2o
154b2o235bobo14b3o$1908bo2759b3o18bo65b2o4b3o61b2o151bobo485bo2bo11bo
15bobo126bo399bo96b2o166bobo169b2o64b2o2b2o9bo3bo$1909b2o1104bo1671b2o
66b2o73b3o146b2o204bo281b2o11bobo15b2o124bobo107bobo69bo6bo212bobo118b
3o141bo170bobo68b2o9b4o$1908b2o871bo233bobo1670b2o60b3o226bo203b2o295b
o2bo14bo126b2o107b2o71bo6b2o210b2o436bo$2779bobo233b2o2167b2o295b2o
252bo69b3o5b2o304b2o30b2o328b2o63b2o$2780b2o226bo1534bo859b3o94b2o137b
o83bobo393b2o2b2o26bobo326b2o63bobo$1912b3o1091b2o1534bobo132bobo73b2o
745b2o132bo2b2o85b2o300b2o95bobo25bo330bo63bo$3007b2o1533bobo133b2o72b
obo67b2o171bo175bo229bo5bo227bo2b2o84bo5bo295bobo94bo167b2o365bo$1918b
2o1234bo781bobo604bo134bo73b2o67bobo170bo177b2o213bo8bo4bo5bo63b2o3b2o
155b3o94bobo293bo265b2o194b2o168b2o$1918b2o1235b2o597bo182b2o196bo685b
2o171b3o174b2o215b2o7bo3bo5bo63bobobobo252b2o73b3o5b2o324bo151bo196bob
o166bobo$3154b2o597bo170bo12bo198b2o612b4o633b2o6b3o74bo3bo330bo6b2o
322bobo2b2o158b2o183bo$2674bo330bobo745b3o169b2o208b2o411bo140bo59bo3b
o65b4o650b3o330bo6bo325bo3bobo138b3o15b2o159b2o$2674bobo183bo144b2o
917b2o87bo456bo76bo139b2o61b3o4bo60bo3bo7b2o162b3o733b2o411bo142bo17bo
157bobo$2674b2o185bo144bo1007b2o449bo3bo55b2o20b3o138b2o61bo4bobo60b3o
4bo3bobo161bo392b2o6b3o332bobo302bo249bo178bo$2671b2o129bo56b3o759bo
329bo61b2o3bo447b2ob3o53bo2bo14bo207bo4bobo61bo4bobo2bo164bo175b2o215b
2o7bo3bo5bo65b3o248bo5bo303b2o634b3o$2671b2o128bo61b2o7bo746b2o329bo
66bobo445b2o59b3o13bobo205b3o4bo62bo4bobo344b2o213bo8bo4bo5bo64bo3bo
156b3o88b2o308bobo633bo$914bobo1868bo15b3o58bobo6bobo746b2o328b3o65bo
119bo316bo86bobo204bo3bo65b3o4bo344bo229bo5bo63bobobobo157bo2b2o83bobo
287b2o634b3o19bo6b2o$874bo39b2o1403bo262bo4bo198bo75b2o6bobo733bo529bo
bo185bobo129bo71b3o12bo206b4o64bo3bo648b2o3b2o156bo2b2o96bo278b2o471b
3o161bo26bobo$875b2o38bo1165bo235b2o58bo202bobo4bobo194b3o82bobo378bo
353bobo406b3o121b2o186b2o127b3o5b3o62bobobo287b4o156bo423b3o233bo94b2o
70b3o14b2o188bo14b2o457bo162bo8b2o17bo$874b2o1206b2o16bo209bobo5b2o58b
2o201b2o4b2o281bo380bo353b2o143bo574bo201bobobo220b2o225b2o203b2o314b
2o232bobo71bo13b2o204bobo457bo171b2o$2081b2o16bo210b2o65b2o285bo3b2o
125bo71b3o134bo174bobo67b3o497bo710bo5bo61b3o12bo144b2o62bobo66b2o155b
obo202b2o315b2o123b2o180bo16bo203bo630bo$2072bo26b3o209bo78bo5bobo192b
3o69bobobobo123b2o71bo137bobo172b2o72b2o494b3o76bo631bo5bo75bobo142b2o
64b2o66bobo176b2o183bo295b2o141bobo95bo$1922bo150b2o315bobo3b2o266bo3b
o125b2o70bo137b2o174bo72b2o481bo83b3o4bo190b2o130bobo307bo5bo59b3o13bo
bo144bo132b2o176bobo477bo2bo14bo127bo95b2o$1599bo321bobo148b2o316b2o5b
o191bo5bo69b3o199b3o291bo457bo110bo6bo77b2o10b3o189bo130b2o120bo252bo
2bo14bo456bo466b2o11bobo15b2o221bobo$1600bo320b2o597bo68bo5bo274bo291b
2o363bo89bobo111bo3b3o77bo8bo191b3o132bo114bobo2bo62bo190b2o223b3o713b
o2bo11bo15bobo214b2o$921bo676b3o496bo422bobo66bo5bo198b2o73bobo289b2o
95bo264bo3bobo88b2o109b3o84b3o5bo190bo251b2o2b3o53b2o5bobo341bo76b2o
423b2o284bo2bo154b2o89b2o$921bobo995b4o4bo169bobo204bobo213b2o143b3o
125b2o67b2o6bobo383b3o263bobo2b2o224bo65bo4bo124bo65bo127bo123bo55bo3b
2o5b2o342b2o75b2o4b3o239b2o174b2o281bo4b2o156b2o87bo94bo$921b2o996bo3b
o3bo169b2o75b2o13bo114b2o6bo195b2o70b2o82bo3bo126bo66bobo6bobo130b2o
151bo97bo104bo5bo156bo12bo216bobo60b3o128b2o67b3o122bobo178bobo135bo5b
o210bobo150b3o169b2o177bo280b2o17bo142bo184b2o$1920b3o4bo245bo2bo11bob
o4bo109bo5bo196b2o70b2o81bobobobo193b2o7bo131bobo151bo97b3o102b2ob2o
144b2o24bobo80b2o132b2o60bobo130b2o67bo124b2o178bobo135bo5bo358b2o177b
o387b2o67bobo17b2o325bobo$1444bobo474bo8bobo241bob3o8bo2bo2b2o116b3o
76bobo127b2o142bo3b2o114b3o72b3o142bo151b3o98bobo100b2o3b2o142bo2bo23b
2o81b2o194bobo199bo249bo55bo3b2o5b2o124bo5bo76bo211bo69b2o338b2o226b2o
85bobo$1028bo184bo140bo89b2o475bo8b2o243bo3bo8b2o4b2o194b2o128bobo66bo
5bo190bo74bo395bobo172b2ob2o4bo68b3o20b2o281b3o197b3o248b2o2b3o53b2o5b
obo205bobo143b2o59b2o3b2o74bo333bobo225bo$1029bo182bo140bo91bo474b3o4b
o3bo244b3o212bo128bo68bo5bo189bo15b3o56bo395b3o169bo3b2ob2o4bobo69b2o
18b2o84b2o132b2o64bo4bo123b2o65bo250bobo2bo62bo119b3o5b3o77bobo142b2o
60b2o3bobo72b2o335bo$467bo559b3o182b3o138b3o563bo3bo3bo661bo5bo205bo
354b3o96bo173b2o10b2o67b2o3bo103b2o132bobo60b3o5bo122b2o66bo256bo183bo
86bo124b3o18bo139bobo$468b2o1134bobo312b4o4bo874bo355bo97b3o169b2o80bo
b3o238bo61bo8bo124bo66b3o123b2o311bo214bo1035b2o$467b2o576bobo150bobo
222bo181b2o17bobo549b3o412b3o77b2o484bo100bo470b3o83b2o10b3o189bo121bo
bo321b2o79b2o121bo1035bobo$1045b2o152b2o68bo154b2o179bo18b2o295b2o252b
o3bo8b2o481b2o945b2o111bo3b3o82b3o4bo190b2o123bo322b2ob3o74bobo1158bo$
1046bo152bo68bo81bo72b2o16bo183bo295bobo250bob3o8bo2bo120b3o77bo189b2o
4b2o85b2o330bo154b2o265b2o80bob3o102bobo110bo6bo90bo496bo139bo3bo76bo
148b2o$1032bo235b3o77b2o91bobo478bo250bo2bo11bobo114bo5bo78b2o188bobo
4bobo84bobo328b2o155b2o89b2o174b2o10b2o67b2o3bo103bo116bo414bo173b2o
143bo223b2o$334bo150bo48bo495bobo316b2o90b2o731b2o13bo114b2o6bo77bobo
189bo4bo86bo330bobo153bo91b2o105b2o3b2o61bo3b2ob2o4bobo69b2o18b2o214b
3o398b2o172bobo369bo$333bo151bobo47bo149bo196bobo7bo138b2o1271bobo873b
o68b3o109b2ob2o66b2ob2o4bo68b3o20b2o214bo263b3o134bobo$333b3o149b2o46b
3o147b2o198b2o8b2o371b2o339bo1571b2o70bo108bo5bo142bo2bo23b2o212bo$
461bo75b2o145b2o43bo153bo8b2o148bo169bo53b2o4bo65bo269b2o1569bobo68bo
259b2o24bobo66b2o411bo1013bo$462bo3bobo67bo2bo139bo50bo310bo161bo6b2o
59bo67bo267b2o488b2o681b2o225b2o514bo12bo67bobo410bobo1011b2o$460b3o4b
2o68b2o6b2o131bo49b3o167bo142b3o160bo6b2o58b3o63b3o11bo71bobo671bobo
679bobo224b2o514bobo2b2o77bo343b3o60b2o3bo118b2o892bobo$388b2o77bo75bo
2bo131b3o217bobo301b3o145bo73b2o671bo213bo78b2o5bo383bo226bo514bo3bobo
90b2o328bo63b2o120bobo$62bo326bo105bo47b3o352b2o361b2ob2o2b2o80b3o71bo
182b2o701b2o78bobo3b2o617b2o510bo91b2o330bo61bo124bo$4bo55bobo4b3o247b
o68b3o105bo6bo171bo56b3o529bob2o2b2o338b2o462b2o236bobo5b2o70bo5bobo
616bobo603bo$4bobo54b2o131b2o120bo68bo102bo5b3o2b2o40b3o128bo589bo344b
o465b2o242b2o58b2o636bo908b2o$4b2o59bo5bo122bobo3b2o114b3o66bo100b2o
12b2o38bo3bo113bo13b3o53bo14b2o518b3o158bo647bo26b3o217bo58b2o1373b3o
169b2o$65bo5bo124bo3b2o184b3o98b2o52b3o112bobo69bo7b2o2b2o2bo144bo374b
obo157b2o655b2o16bo277bo1375bo170bo12bo$o64bo5bo124bob2o189bo152bo114b
2o69bo7bo3bob2o143bobo151b3o220bobo156bobo492b2o162b2o16bo1653bo182b2o
196b2o$b2o191bobob2o100bo71bo4bo10bobo151bo194b3o148b2o151bo221b3o359b
o292b2o161bo1072b2o780bobo197b2o$2o65b3o123bobo105bo69b2o3bobo10bo151b
3o194bo303bo219bo342bo18b2o1529b2o978bo$194bo104b3o15b2o52b2o3bo2bo
160bo3bo193bo523bob2o2b2o335b2o17bobo285b3o1239bo$316b2o53bo5b2o162b3o
193b3o148b2o141b2o228b2ob2o2b2o334bobo$11bo306bo409bo7bo3bob2o143bobo
140bobo169b3o236b2o$9bobo64bo7b2o108b3o290b2o54b3o182bo7b2o2b2o2bo144b
o142bo171bo6b2o58b3o76b3o88bobo464b2o4068b2o$10b2o2bo61bo7bo109bo178bo
112b2o55bo2bo181bo14b2o301bo156bo6b2o59bo78bo72b2o16bo467b2o4066bobo$
14bobo58bobo4bobo110bo177b2o113bo5b3o48b2o498b2o165bo53b2o4bo64b3o11bo
72b2o482bo4070bo$14b2o60bo5b2o288bobo119bo162b2o71b3o312bobo218b2o71bo
83bo$76bo418bo160bobo239b2o438bo$76bo390bo190bo13b3o223bobo126b3o$14b
2o60bo5b2o383b2o203bo55b3o167bo130bo238b3o174bo152b3o$14bobo58bobo4bob
o381bobo204bo56bo297bo170bo68bo80b2o93b2o154bo$10b2o2bo61bo7bo644bo
153bo8b2o305b2o68bo78b2o94bobo152bo$9bobo64bo7b2o399b2o191b3o202b2o8b
2o303bobo149bo$11bo473bobo190bo203bobo7bo$485bo193bo532b3o$684b2o526bo
$2o65b3o248b2o363b2o528bo139b3o$b2o315bobo364bo667bo$o64bo5bo246bo148b
2o885bo$65bo5bo396b2o$4b2o59bo5bo395bo$4bobo54b2o$4bo55bobo4b3o$62bo2$
921b2o$921bobo$921bo6$874b2o$875b2o38bo$874bo39b2o$914bobo21$1692b3o$
1692bo$1693bo6$1683b3o$1683bo$1684bo210$4540bo$4538b2o$4539b2o3$4404bo
$4402bobo$4403b2o15$4550bo$4549bo$4549b3o11$7355bobo$7356b2o$7356bo3$
5341bo$5339bobo1859bobo56bo$4895bo444b2o1859b2o58bo$4894bo1979bo327bo
56b3o$4894b3o1978bo387b2o86bo$5730bo227bo914b3o387b2o87bo21bo$5728bobo
225b2o1392b3o4bobo12b2o$5729b2o220bo5b2o226bo86bo909bo175b2o13b2o$
5949b2o170bo62bobo86bo364bobo376bo165bo174bo$5108bo643bo197b2o152bo7bo
8bobo60bo2bo83b3o364b2o250bo126bobo161b3o13bo$4902bo203bobo641b2o206bo
146bo4bobo8b2o62b2o5bo446bo249bo127b2o177bo$4902bobo202b2o105bo536b2o
203b2o145b3o5b2o78bo697b3o304b3o$4902b2o311bo733bo7b2o232b3o91bo119bob
o592bo22bo53bo$5213b3o733bobo334bo118b2o594bo21bobo52bo$5217b2o610bo
119b2o333b3o11bobo105bo16bo268bo8bobo173bo121b3o2bo18b2o51b3o101bo$
4894bo230bobo89b2o608bobo359b2o107b2o88bo33bo267bobo9b2o171bobo127b2o
73b3o98bo$4873bobo17bo73bo158b2o325bo277bobo94b2o281bo76bo2bo107bo89bo
32b3o266b2o9bo173b2o126b2o173b3o$4874b2o17b3o70bo159bo245bobo79bo277b
2o97b2o166b2ob2o108b2o9bo65b2o196b3o318b3o481bobo63b2ob2o$4874bo91b3o
170bobo230b2o78b3o277bo98b2o166b2ob2o107b2o10bo59bo197bo312bo193bo303b
2o60b2obobobo$4462bo17bo658b2o232bo82b2o122bo542bo59b3o193bobo96bo7bo
207bo17bo77bo97bobo302bo60bo6bo$3456bo579bo426b2o14bo660bo315b2o120b2o
419b5o4bo177bo98bo94b2o97b2o5bo9b2o131bo64bo17bo78bo96b2o365b6o$3455bo
552bobo26bo424b2o15b3o218bo262b3o254b2o357b2o418bo3bo4bobo108b3o3b3o
57bobob2o92bobo192b2o6bo8bo2bo123bobo5bo75b3o3bo76b3o296b2o$3455b3o
551b2o24b3o5bo428bo228bo274b2o151bo90bo335bobo186bobo84b2ob2o163b3o5b
2o176bo3bo93b2o119bo85b2obobobo124b2o3b3o135b2o25b2o293bo3b2o161b6o$
3117bo891bo31bobo429b2o224b3o259bo5bo7bo2bo151b2o11bo79bo127bo205b2o
81b2ob2o8bo91b2o85bo3bo168b2o180b3o213b2o77b3o5bobobo2bo125bo66b2o12bo
5bo55bobo24b2o290bo7bo160bo6bo$3116bo177bo284bo462b2o428b2o229b3o255bo
5bo8b2o151b2o11bo5bo69b5obo127b2o203bo23bo58b2obo8bo93bo86b3o169b2o
181bo215b2o84bo3bo195bobo11bo5bo56b2o316b8o161b2obobobo$2337bobo776b3o
173b2o283b2o305bo1076bo5bo174b3o2bo69bo6bo126b2o228bobo59bo8b3o179bo
165b3o185bo302b3o197b2o11bo5bo58b2ob2o484b2ob2o95bo$2337b2o61bo892b2o
283b2o219bo85bo1090b4o167b3o68b6o346bo10b2o60b2o3b3o183bo164bo3bo183b
3o302bo147bobo50b2ob2o71bo3bo311b8o265b2o13b2o$2338bo59bobo951bo445bo
84b3o809b2o266b3o10bo3bo467b2o119bo74bo188b3o163b5o182bo3bo301bo147b2o
51bo3bo8b3o61b3o312bo7bo99bo156b3o4bobo12b2o$2399b2o714bo235bo342bo18b
o84b3o893bobo184bo95b3o238b6o221bo2bobo118b3o69b3o188bo286b3o3b3o57bob
ob2o300b3o147bo52b3o391bo3b2o98b2o158bo21bo$2218bo110bo72b2o710bo169bo
66b3o341b2o15bo82b2o249bobo643bo2bo186bo95bo238bo6bo149bo69bobobo2bo
188bo191bo166b2ob2o182bo303bo3bo593b2o102bobo156bo$1836bobo110bobo126b
o138bo109bobo72b2o690bo19b3o166bo64b2o344b2o16b3o79bo2bo248b2o6bo636bo
b2o185b3o95bo239b5obo127bo18bo2bobo68b2obo3bo187bo192b3o163b2ob2o119bo
59b3o296b3o5bobobo2bo272b3o115b2o289b3o$1837b2o111b2o126bobo136b3o108b
2o762bobo188b3o61bo2bo113bobo95bo231bobo233bobo14bo6bo636bo285b3o243bo
129b2o14b2o3b2o73b3o189b3o102bo87bo276b2o10bo59bo100b2o205b2obobobo
142bo52b3o72bo3bo114bobo290bo$525bo1311bo112bo127b2o808bobo202b2o253b
2o114b2o97bo211bo19bo235b2o21bo637b3o268b3o10bo3bo239bo131b2o16b2o78bo
193bo100b2o87bo277b2o9bo65b2o92bobo192b2o6bo8bo2bo141b2o51bo3bo8b3o60b
2ob2o114bo291bo$526bo944bo484bo382bo331bo217b2o95bo308bo153bo15bo95b3o
212bo128bo125bo116b2ob2o542bo280b4o240b2o228bo192b2o3b3o94bobo85b3o
275bo76bo2bo93bo193b2o5bo9b2o142bobo50b2ob2o69b2o$524b3o942b2o386bo99b
o379b2o203bo129bo216bo33bo60bobo306b2o155bo120bobo200b3o127bo145b3o3b
3o84bo3bobobobo318bo222bo265bo5bo481b3o191bo8b3o177bo3bo352b2o287bo7bo
204b2o11bo5bo55bobo107b2o$1033bo436b2o384bo98b3o120bo244bo14b2o200b2o
128b3o138bo104bo4b2o4bobo55b2o182bo97bo26b2o152b3o120b2o205b3o123b3o
234bobo3bobobobo319bo218b3o185b3o78bo5bo8b2o467b2obo3bo116b3o68b2obo8b
o179b2ob2o567b2o284bobo11bo5bo55b2o107bobo202b3o113b3o$1033bobo820b3o
218bo246b2o215b2o268bobo102bobo3b2o3b2o59bo124bobo53bobo96bo75bo227bo
147bo421b2o4bo3bo318b3o217bo190bo78bo5bo7bo2bo465bobobo2bo117bo70b2ob
2o8bo749b2o218bo66b2o12bo5bo166bo198b3o117bo159bo$1033b2o1042b3o243b2o
79b2o405b2o103b2o10bo59bo124b2o54b2o95b3o74bobo374bobo65b2o355bo3b3o
539bob2o186bo94b2o374b2o16b2o73bo2bobo119bo10b2o149bo216b2o240b3o105bo
105bo217b2o3b3o447bo102b3o13bo65b2o91b2o$671bo487bo303bo504bo149bo101b
o183bobo269bo127bobo181bo125bo51b2o176b2o111bobo260b2o65bobo116bo237bo
bo545bo2bo267b3o387b2o14b2o3b2o72b2o131bobo148b2o215bobo151b3o5b2o78bo
106b2o322bobo5bo75b3o3bo291b2o71bo105bo79b2o90bobo$374bo294bobo485bobo
6bo294b2o210bo3bobo288bobo145bobo94bo4b2o172bo13bo267bobo128b2o190bo
162b2o4b2o289b2o114bo213bo116b2o238bobo324b3o220bobo520b2o133bo18bo2bo
bo180bo23bo149bobo97b2o116bo7b2o146bo4bobo8b2o62b2o5bo91b3o11bobo79b2o
247bo64bo17bo176b3o113b2o175bo76b3o$375bo294b2o486b2o7bo294b2o208bo4b
2o289b2o90bo10bo45b2o9bo83bo6b2o169bobo13b2o127bobo137b2o128bo113bo76b
obo160bo2bo181b4o110bo114bobo130bo81bo106bo9b2o238bo3b3o321bo221b2o
520b2o155bo182b2o272b2o123b2o146bo7bo8bobo60bo2bo98bo92bobo312bo17bo
176bo109b3o2bo18b2o236bo$373b3o789b3o13bo490b3o3bo273bobo106b2o9b2o53b
obo82b3o106bo69b2o14bo127b2o167bo212b2o10bo66bo2bo158bobobo181bo3bo
224b2o132bo81bo105bobo152b3o3b3o89bo3bo319bo493b3o244b3o340bobo269b2o
128bo162bo62bobo98bo95bo312bo195bo110bo21bobo234bo$812bo227bo140bobo
464bobo185bo116b2o105b2o9b2o54bo2bo191bo71bo9b3o129bo54bo112bobo211b2o
8bo68bobo158bobob2o181b3o357b3o78b3o106b2o134bo115bobobobo812bo180b3o
65bo363b2o246bobo120b2o233bo201b3o318b3o289bo22bo$810bobo114bo110b2o
141b2o372bo93b2o183bobo116bo166b3o5bobo90bobo96b3o70bobo7bo188bo111b2o
222b3o56bo6b3obo158b2obo3bo181bo438bobo243b2o21bo92bobobobo549b3o261bo
174b3o2bo66bo363b2o249bo119b2o438bo301b2o509bo$811b2o113bo87bo24b2o
134bo378bobo92bo185b2o292bo91b2o170bobo7bo118bobo65b3o214bo177bobo5bo
3bo163b3o182bo438bobo242bobo14bo6bo93b2ob2o546b3o427b2o11bo5bo202b2o
227bo170b2o198bo5b2o312b3o114bo301bobo324b2o182b2o$814bo105b2o4b3o86b
2o157bo99bo196bo81bo2bo181b2o390b3o89bo171bo9b3o116b2o69b2o6b2o142bobo
57bobob2o174b2o6b3o165bo182b3o110bo327b3o257b2o6bo646bo428b2o11bo208b
2o102b2o292b2o204b2o315bo132bo285bo180b3o141bobo181bobo$541bo271bobo
103bo2bo91b2o158b3o82b2o13bobo194bobo80b2o102bobo76bo2bo107bo284bo273b
o115bo70b2o5bo2bo141b2obo57b2ob2o177b2o171bo181bo3bo108b2o114b2o214bo
256bobo651bo428bo221bo104b2o294bo205bo313bo132b2o468bo141bo$542b2o6bo
127bo14bo119bobo103bo2bo335bo2bo12b2o116bo78b2o186b2o76bobo106bobo284b
o272b2o193bob2o144bo239b2o170b3o180b4o109bobo113bobo212bo1085bo577b3o
950bobo466bo$541b2o6bo6bo122b2o12bobo118bo105b2o336bo2bo9bo79bo35b3obo
bo158b4o12bo90bo15bo60b2ob2o7bo98b2o281b3o89bo183bo193b2obo91bobo48b3o
58b2ob2o182b3o160b2obo3bo408bo213bo1086b2o17b3o244bo313bo274b2o$421bo
127b3o2b2o122b2o8bobo2b2o564b2o9bobo73b3obobo36bo2bo158bo3bo12bobo102b
2o61bo3bo7bobo378bo91b2o181bobo192bo3bo91b2o48bobo58bobob2o181bo3bo
160bobob2o180b2o359b3o79bobo105b2o976bobo17bo245b2o312bo274bobo908bo$
48bo372bobo131b2o132b2o223b2o9b2o112bo230b2o76bo2bo36bo4b3o64bo91b3o
13b2o104b2o61b3o8b2o370b3o5bobo90bobo180b2o194b3o93bo48bobo59bo120b3o
63b3obo159bobobo180bobo102b3o256bo80b2o105bobo996bo244bobo231bo356bo
907b2o$49b2o109bo260b2o266bo223bo2bo7bo2bo109b2o218b4o86bo4b3o41bo63bo
bo90bo11b2o178b2o380bo2bo606bo8b3o169b2o8bo68bobo159bo2bo181bo105bo
121bo133bo188bo9b2o135b2o428b2o652bo245b2o1264bobo$48b2o28bo79bobo134b
o514b2o102b2o9b2o111b2o217bo3bo93bo40bo63b2o91bo11b2o178b2o206bo173bob
o82b3o105b3o412bobo11bo167b2o10bo66bo2bo160b2o4b2o281bo15bo105b2o205b
3o123b2o135bobo429b2o651b2o244bobo$76b2o81b2o132b2o515b2o446b3o94bo37b
3o156b3o119b2o61b3o107b2o104b2o105b2o9b2o55bo83bo6b2o101bo200bo76b3o
93bo39b2o8b2obo169bo76bobo115bo51b2o296b2o105bobo146b2o52b3o129bo128b
3o5bo428bo429b2o221bobo$77b2o83b2o130b2o242bo375b4o341bo92b3o37bo158bo
3bo117b2o61bo3bo105bobo103bobo106b2o9b2o139bo4b2o101bo201b2o74bo3bo91b
2o42b2o5bobo56bo191bo115b2o54b2o95b3o195bobo94b3o156bobo53bo260bo424b
2o15b3o420bobo$71bo90b2o114bo139bobo118b2o148bo120b4o99bo3bo341bo91bo
39bobo66b2o90b4o103bo15bo60b2ob2o107bo119b2o90bo10bo148bo301bobo75b2ob
o91bobo41b2o64b2o181bo124bobo53bobo96bo79b2o213bo156bo54bo19bo240bo
426b2o14bo422bo$71bobo202bobo139b2o118b2o147b2o120bo3bo100b3o341b3o89b
obo37bo2bo66bobo196b2o76bobo228bobo630bob2o199bobo109b2o10bo59bo180bo
97bo26b2o51bo2bo211bo231bobo107b3o555bo17bo$71b2o204b2o120bobo17bo268b
2o120b3o102bo341bo3bo89bo39b2o67bo93b2o102bobo76bo2bo94b2o131bo433b2o
132bo57b2o5bo2bo206b2o103bobo3b2o3b2o59bo304b2o53b2o444bo2bo106bo$400b
2o513bo341b4o292bo2bo181b2o94bobo240b3o243b2o77b2o131b2o57b2o6b2o207bo
bo102bo4b2o4bobo55b2o308bo55b3o441b2o108bo$283bo11bo104bo513b3o353b2o
282bobo279bo240bo246b2o73b2o134bobo52b3o218bo111bo60bobo106b2o256bo
446b3o$51bo232b2o9bobo512b3o100bo3bo341b2o9bobo198b2o82bo399b3o120bo
244bo14b2o58bobo191bo111b2o280bo105bobo188b3o66bo445bo$49bobo231b2o10b
2o512bo3bo100b4o120b2o218bo2bo9bo199bobo483bo379b2o61bo190bo112bobo
387bo19b3o166bo294b2o114b2o16b3o84bo$50b2o636b2o120b4o223b2o219bo2bo
12b2o195bo200b3o3bo277bo260b3o119bo364bo409bo169bo292b2o116b2o15bo$
160b2o525b2o225b2o9b2o112bo219b2o13bobo395bo4b2o271bo127b2o137bo323b2o
132b2o438bo339b3o121bo114bo18bo$158b3obo526bo120b2o101bo2bo7bo2bo346bo
398bo3bobo270b2o126bobo137bo109b2o210b2o132bobo778bo427b3o1008b3o$157b
o5bo255bo390b2o102b2o9b2o929b3o90bobo126bo248bobo212bo133bo616b2o161bo
428bo1008bo$158b5o256bobo1434bo472bo786b3o173b2o590bo1010bo$159bo259b
2o499b2o92b2o158b3o285b2o393bo1258bo177bo2045b2o$159bo529bo229bo2bo92b
2o157bo286b2o875bo778bo2221bobo$158b5o526b2o123bo104bo2bo91bo24b2o134b
o287bo373bo499b2o3002bo$157bo5bo119b2o10b2o122b2o257b2o8bobo2b2o118bob
o104b2o4b3o109b2o141b2o654b2o498bobo$158b3obo121b2o9bobo121bobo116b2o
139b2o12bobo117bobo110bo113bo140bobo652bobo$160b2o121bo11bo123bo119b2o
137bo14bo120bo112bo237b3o13bo288b2o$538bo272b2o345b2o7bo301b2o$277b2o
531bobo344bobo6bo304bo$276bobo533bo346bo$278bo754b2o$50b2o242b2o259b2o
476bobo$49bobo241b2o105bo148b3o2b2o477bo$51bo243bo104b2o139b2o6bo6bo$
162b2o235bobo17bo122b2o6bo$162b2o254b2o121bo$71b2o86b2o257bobo$71bobo
84bobo$71bo88bo$77b2o$76b2o343b2o$48b2o28bo342bobo$49b2o370bo$48bo4$
524b3o$526bo$525bo13$4403b2o$4402bobo$4404bo3$4539b2o$4538b2o$4540bo!
xs11:

Code: Select all

x = 103, y = 29, rule = B3/S23
25bo$24bo$24b3o$100bo$100bobo$100b2o$98bo$2bo4bo89bobo$obo2bobo84b2o3b
obo$b2o3b2o12bo71bobo3bo$18b2o75bo$19b2o75bo$97bo$94b3o$94bo12$24b2o$
24bobo$24bo!
xs12:

Code: Select all

x = 181, y = 17, rule = B3/S23
170bobo$53bo116b2o$54bo116bo8bo$16b2o34b3o5bo117b2o$15bo2bo40bobo117b
2o$15bo2bo41bo106bobo$9bobo4b2o36b2o111b2o$10b2o42b2o112bo$10bo38b2o5b
2o$50bo5b2o$10b2o38bobo$bo7bobo39bobo99b3o$b2o8bo40bo102bo$obo50b3o98b
o$55bo114b2o$169b2o$171bo!
xs13:

Code: Select all

x = 616, y = 39, rule = B3/S23
588bo$589bo$587b3o$198bobo$198b2o$199bo2$592bo$20bo572b2o$20bobo154bo
83bo2bo327b2o6bo$20b2o156b2o81b4o335bobo$177b2o421b2o$261b2o$193bo67bo
$18bo174bobo66bo317bo$17bo175b2o68bo202bo111bobo$17b3o242b2o139bobo59b
o113b2o$404b2o59b3o$267b3o134bo57b2o$bo460bobo$b2o19bo160bo88b2o135bo
12bobo38bo$obo18b2o161b2o86bobo135b2o10b2o34b2o$21bobo159b2o81b2o4bo
136b2o12bo33bobo$266b2o189bo2b2obo$412bo45bobob2o$412b2o2bo42bo123b2o$
411bobo2bobo163bobo$416b2o166bo2$613b2o$613bobo$613bo3$19bo$18b2o$18bo
bo162b3o$185bo$184bo!
xs14:

Code: Select all

x = 870, y = 139, rule = B3/S23
320bo$318b2o$319b2o35$845bo$843bobo$844b2o21bobo$867b2o$711bo156bo$
549bo162bo$550b2o158b3o$549b2o$562bo$561bo$561b3o$39bo666bo$38bo668b2o
138bobo8bo$38b3o665b2o140b2o9bo$848bo8b3o$722bo$32bobo685b2o$33b2o671b
obo12b2o$33bo17b2o654b2o$51b2o654bo$37b2o$38b2o11b2o795bo8b3o$37bo13b
2o795b2o9bo$847bobo8bo$549bo$245bo19bo282b2o$246b2o17bobo280bobo$245b
2o18b2o$542b3o$544bo17b3o$543bo18bo146b2o$563bo144bobo157bo$710bo156b
2o$844b2o21bobo$250bo592bobo$250bobo592bo$245bo4b2o$245b2o$244bobo3$
253b3o$255bo$254bo17$bo$b2o$obo37$303b2o$302b2o$304bo!
xs15:

Code: Select all

x = 989, y = 43, rule = B3/S23
381bo$381bobo$381b2o$588bobo305bo89bo$348bobo238b2o306b2o87bobo$349b2o
238bo306b2o88b2o$349bo565bobo66bo$915b2o67bo$916bo67bo$597bo$595bobo$
596b2o$22bobo456bo$22b2o117bo114bo106bo115b2o231bobo265b2o$23bo116bo
114bo106bo117b2o231b2o174b2o17b2o71bo$115bobo22b3o112b3o104b3o348bo
176b2o16bobo70bobo$116b2o771bo18bo73bobo$116bo351bo8bo239bo266bo$248bo
220bo7bobo237bobo264bob2o$226bobo18bo117bo101b3o7b2o238b2o266bo2bo$34b
obo190b2o18b3o114b2o620b2o$7bobo24b2o191bo136bobo$8b2o25bo$8bo465bobo
237bo199bo$243bo226bo3b2o239bo197b2o$243bobo225bo3bo119bo17b3o97b3o4b
3o4b2o184bobo$142bobo98b2o224b3o123b2o16bo106bo6bobo$133bobo6b2o450bob
o17bo106bo5bo$134b2o7bo92b2o115b3o$134bo102b2o116bo$7b2o227bo117bo$6bo
bo113b3o$8bo115bo$123bo$589b3o$591bo$370b2o218bo$370bobo$370bo2$2o$b2o
$o!

User avatar
bubblegum
Posts: 927
Joined: August 25th, 2019, 11:59 pm
Location: click here to do nothing

Re: Randomly enumerating glider syntheses

Post by bubblegum » March 17th, 2021, 2:21 am

Just dropping this here - it's a lightly modified script to process Mateon1 glider stdins. Run with Python 3, and feel free to comment out line 94 if it gives you problems.

Code: Select all

import hashlib

#set this to the three values in the symmetry
(glis, width, length) = (6, 5, 6)
#this to the seed
seed = b"k_Nbke7qxLPRzS8441"
#and this to the rule
rule = "B3/S23"

def digest(bs):
    return hashlib.sha256(bs).digest()

hashval = bytes("\0" * 32, "ascii")
randcnt = 0
randbyte = 0
randbit = 0

def main(seed):
    global randbit, randbyte, randcnt, hashval

    cells = set()

    hashval = digest(seed)
    randcnt = 0
    randbyte = 0
    randbit = 0

    def bit():
        global randbit, randbyte, randcnt, hashval
        if randbyte >= 32:
            assert randbit == 0
            randbyte = 0
            randcnt += 1
            hashval = digest(seed + bytes(":%d" % randcnt, "ascii"))

        val = (hashval[randbyte] >> randbit) & 1
        randbit += 1
        if randbit >= 8:
            randbit = 0
            randbyte += 1
        return val

    def rand(bits):
        assert bits <= 64
        val = 0
        for b in range(bits):
            val |= (1 << b) if bit() else 0
        return val

    PHASES = [
        [[1, 1, 1],
         [1, 0, 0],
         [0, 1, 0]],
        [[0, 1, 1],
         [1, 1, 0],
         [0, 0, 1]]]

    for quadrant in [(-1, -1), (1, -1), (-1, 1), (1, 1)]:
        counter = 0
        while counter < glis:
            ori = bit()
            flip = bit()
            phase = bit()
            offs = rand(width)
            shift = rand(length) + 4
            (x, y) = (quadrant[0] * shift, quadrant[1] * shift)
            if ori:
                x += quadrant[0] * (offs + 1)
            else:
                y += quadrant[1] * offs
            r = 2
            bad = False
            for dx in range(-r, 3 + r):
                for dy in range(-r, 3 + r):
                    if (x + dx, y + dy) in cells:
                        bad = True
            if bad: continue
            for dy in range(3):
                for dx in range(3):
                    (gx, gy) = (2 - dx if quadrant[0] == -1 else dx, 2 - dy if quadrant[1] == -1 else dy)
                    (gx, gy) = (gy, gx) if flip else (gx, gy)
                    if PHASES[phase][gy][gx]:
                        cells.add((x + dx, y + dy))
            counter += 1

    def getcell(x, y):
        return (x, y) in cells

    xmin = min(x for (x, y) in cells)
    xmax = max(x for (x, y) in cells)
    ymin = min(y for (x, y) in cells)
    ymax = max(y for (x, y) in cells)

    print(f"x = {xmax-xmin+1}, y = {ymax-ymin+1}, rule = {rule}")
    linerepeat = 0
    repeat = 0
    char = "b"
    for y in range(ymin, ymax + 1):
        for x in range(xmin, xmax + 1):
            c = "o" if getcell(x, y) else "b"
            if c == char:
                repeat += 1
            else:
                if repeat and linerepeat:
                    print("%d$" % linerepeat if linerepeat > 1 else '$', end="")
                    linerepeat = 0
                if repeat: print("%d%c" % (repeat, char) if repeat > 1 else char, end="")
                char = c
                repeat = 1
        if repeat and char != "b": print("%d%c" % (repeat, char) if repeat > 1 else char, end="")
        repeat = 0
        linerepeat += 1
    print('!')

main(seed)
Each day is a hidden opportunity, a frozen waterfall that's waiting to be realised, and one that I'll probably be ignoring
sonata wrote:
July 2nd, 2020, 8:33 pm
conwaylife signatures are amazing[citation needed]
anything

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

Re: Randomly enumerating glider syntheses

Post by dvgrn » March 17th, 2021, 1:05 pm

bubblegum wrote:
March 17th, 2021, 2:21 am
Just dropping this here - it's a lightly modified script to process Mateon1 glider stdins.
Thanks for doing this! I've been meaning to put something like this together, but it never made it to the top of my priority list.

What does the sample seed "k_Nbke7qxLPRzS8441" build? I'm not seeing anything interesting in the collision ash. Also it's 18 characters instead of 22, so I'm vaguely worried that something else would need to be done to support older (?) hash formats. Can someone remind me / give a link to why there was a length change?

Here's a Golly-4.x-enabled version of the script. It accepts hashes from the clipboard or from user input, clears the current Golly layer, and drops the generated RLE pattern there:

Code: Select all

# decode-Mateon-stdin-Golly4.py

import golly as g

import hashlib

def digest(bs):
    return hashlib.sha256(bs).digest()

hashval = bytes("\0" * 32, "ascii")
randcnt = 0
randbyte = 0
randbit = 0

def getRLE(seed):
    global randbit, randbyte, randcnt, hashval

    cells = set()

    hashval = digest(seed)
    randcnt = 0
    randbyte = 0
    randbit = 0

    def bit():
        global randbit, randbyte, randcnt, hashval
        if randbyte >= 32:
            assert randbit == 0
            randbyte = 0
            randcnt += 1
            hashval = digest(seed + bytes(":%d" % randcnt, "ascii"))

        val = (hashval[randbyte] >> randbit) & 1
        randbit += 1
        if randbit >= 8:
            randbit = 0
            randbyte += 1
        return val

    def rand(bits):
        assert bits <= 64
        val = 0
        for b in range(bits):
            val |= (1 << b) if bit() else 0
        return val

    PHASES = [
        [[1, 1, 1],
         [1, 0, 0],
         [0, 1, 0]],
        [[0, 1, 1],
         [1, 1, 0],
         [0, 0, 1]]]

    for quadrant in [(-1, -1), (1, -1), (-1, 1), (1, 1)]:
        counter = 0
        while counter < glis:
            ori = bit()
            flip = bit()
            phase = bit()
            offs = rand(width)
            shift = rand(length) + 4
            (x, y) = (quadrant[0] * shift, quadrant[1] * shift)
            if ori:
                x += quadrant[0] * (offs + 1)
            else:
                y += quadrant[1] * offs
            r = 2
            bad = False
            for dx in range(-r, 3 + r):
                for dy in range(-r, 3 + r):
                    if (x + dx, y + dy) in cells:
                        bad = True
            if bad: continue
            for dy in range(3):
                for dx in range(3):
                    (gx, gy) = (2 - dx if quadrant[0] == -1 else dx, 2 - dy if quadrant[1] == -1 else dy)
                    (gx, gy) = (gy, gx) if flip else (gx, gy)
                    if PHASES[phase][gy][gx]:
                        cells.add((x + dx, y + dy))
            counter += 1

    xmin = min(x for (x, y) in cells)
    xmax = max(x for (x, y) in cells)
    ymin = min(y for (x, y) in cells)
    ymax = max(y for (x, y) in cells)

    rle = f"x = {xmax-xmin+1}, y = {ymax-ymin+1}, rule = {rule}\n"
    linerepeat = 0
    repeat = 0
    char = "b"
    for y in range(ymin, ymax + 1):
        for x in range(xmin, xmax + 1):
            c = "o" if (x, y) in cells else "b"
            if c == char:
                repeat += 1
            else:
                if repeat and linerepeat:
                    if linerepeat > 1:
                    	rle+=str(linerepeat) + "$"
                    else:
                    	rle += "$"
                    linerepeat = 0
                if repeat:
                    if repeat > 1:
                        rle += str(repeat) + char
                    else:
                    	rle += char
                char = c
                repeat = 1
        if repeat and char != "b":
            if repeat > 1:
                rle += str(repeat) + char
            else:
            	rle += char
        repeat = 0
        linerepeat += 1
    rle += "!"
    return rle


# set this to the three values in the symmetry
(glis, width, length) = (6, 5, 6)
# and this to the rule
rule = "B3/S23"

#set this to the seed
seedstr = g.getclipstr()

# this was the previous sample, but it doesn't build anything interesting that I can recognize. (?)
# seedstr = "k_Nbke7qxLPRzS8441"

if seedstr[1] != "_":
  seedstr = g.getstring("Enter 18- or 22-character Catagolue seed for a Mateon stdin result: ","k_9HrHTiQjsT7V74016984")
seed = seedstr.encode()

g.new(seedstr)

# g.setclipstr(getRLE(seed))

rlestr = getRLE(seed)

pat = g.parse(rlestr.split("\n")[1])

g.putcells(pat)
g.fit()

User avatar
bubblegum
Posts: 927
Joined: August 25th, 2019, 11:59 pm
Location: click here to do nothing

Re: Randomly enumerating glider syntheses

Post by bubblegum » March 17th, 2021, 2:26 pm

dvgrn wrote:
March 17th, 2021, 1:05 pm
What does the sample seed "k_Nbke7qxLPRzS8441" build? I'm not seeing anything interesting in the collision ash.
I'm not entirely sure that meant anything in Life. Try LeapLife (got it from a LeapLife thread).
Each day is a hidden opportunity, a frozen waterfall that's waiting to be realised, and one that I'll probably be ignoring
sonata wrote:
July 2nd, 2020, 8:33 pm
conwaylife signatures are amazing[citation needed]
anything

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

Re: Randomly enumerating glider syntheses

Post by dvgrn » March 17th, 2021, 2:49 pm

bubblegum wrote:
March 17th, 2021, 2:26 pm
I'm not entirely sure that meant anything in Life. Try LeapLife (got it from a LeapLife thread).
Aha, of course I should have tried a search before I asked. The LeapLife code was actually quoted from a B3-kq4j8/S2-in34ciz thread -- the seed produces a c/2 puffer in that rule:

Code: Select all

x = 161, y = 171, rule = B3-kq4j8/S2-in34ciz
143bobo$143b2o$144bo17$122bo$26bo16bo78bobo9bobo$27b2o15b2o76b2o10b2o$
26b2o15b2o90bo3$48bobo$49b2o$49bo6$159bo$158bo$158b3o$137bo$obo133bo$b
2o133b3o$bo$19bo$20b2o$19b2o8$20bo$18bobo$19b2o130bo$149b2o$150b2o41$
49bo$49b2o$48bobo7$51bo$51b2o$50bobo7$47b2o$46bobo$48bo8$145b3o$134b3o
8bo$134bo11bo$135bo3$145bo$144b2o$144bobo6$30b2o$29bobo$31bo2$136b2o$
135b2o$137bo7$113b3o$113bo$114bo9$147b2o$146b2o$148bo$23b2o$22bobo$24b
o2$17b3o$19bo$18bo!
-- OK, mystery solved. I've checked in the Golly-compatible script here, with some comments to explain how to use it. It's still hard-coded to use "6, 5, 6" and the plain-vanilla Life rule.

User avatar
Ian07
Posts: 694
Joined: September 22nd, 2018, 8:48 am

Re: Randomly enumerating glider syntheses

Post by Ian07 » May 29th, 2021, 2:37 pm

From 10G_D2_+2_stdin:

Code: Select all

x = 1449, y = 1905, rule = B3/S23
25bo$24bo$24b3o4$21bo101bo$19b2o101bo$20b2o100b3o2$120bo$14bo104bobo$
14bobo101bo2bo$14b2o103b2o2$122b2o$16bo104bobo$14b2o101b2obobo$15b2o
100bo3bo$118b3o$119bo$119bo$118b3o$117bo3bo$117b2obobo$15b2o104bobo$
14b2o106b2o$16bo$119b2o$118bo2bo$14b2o103bobo$14bobo103bo$14bo$122b3o$
122bo$20b2o101bo$19b2o$21bo4$24b3o$24bo$25bo153$19bo$20bo$18b3o11$52bo
$51bo$51b3o2$40bo$38b2o$39b2o5bo$45bo$45b3o$51bo$51bobo$51b2o3$51b2o$
51bobo$51bo$45b3o$45bo$39b2o5bo$38b2o$40bo2$51b3o$51bo$52bo178$24bo$
25bo$23b3o$258bo$256bobo$257b2o3$374b2o$257b2o115b2o$256bobo$257bo113b
o$369bobo$262bo107b2o$261bobo$254b2o5b2o257bo$253bobo113b3o148bobo$
254bo10bo254b2o203bo$264bobo262bo193bobo$264bobo261bo195b2o$265bo262b
3o391bobo$922b2o$923bo191bobo$1115b2o$524bo591bo$524bobo390bo192bo$
259bo254bo9b2o222bo168bobo188b2o$242bo16b3o250b2o234bobo166b2o190b2o$
240bobo19bo113bo136b2o233b2o$82bo158b2o18b2o113b3o$82bobo159b2o16bob2o
113bo359bobo179bo$82b2o160b2o16bob2o112b2o359b2o179bo427bobo9bo$261b2o
116bob2o134bo56bo165bo179b3o264bo160b2o10bobo$262bo116bob2o134bobo52bo
bo8b2o582bo18bo162bo10b2o$259b3o116b2o137b2o54b2o8bo2bobo512bo66b2o16b
3o$77bo8bo172bo119bo196bo7b2ob2o512bobo3bo59b2o268bo$75b2o8bo290b3o
196bobo7bo327bobo185b2o4bobo74bo171bo81bo$76b2o7b3o288bo140b2o56bobo7b
o327b2o192b2o61bo12bobo170bobo77b3o7bo$517bobo56bo7b2ob2o146bo5bobo
170bo255bo12bobo170b2o82b2o3bobo$517bo65bo2bobo146bobo3b2o427bo13bo
162bo92b2o3bobo$583b2o150b2o5bo434bo169bobo94b2ob2o$265bo900b3o7bobo
168b2o97bo$264bobo910bo2b2o264bo$83bo180bobo246b2o399bo263b2obo262b2ob
2o$83bobo168bo10bo246b2o399b2o264bo167b2o91b2o3bobo$83b2o168bobo258bo
9b2o387bobo263bo167bobo90b2o3bobo$254b2o5b2o261bobo651b2obo165bo88b3o
7bo$261bobo260bo210b2o5bo434bo2b2o174b2o80bo$262bo472bobo3b2o423b3o7bo
bo177bobo78bo$369b3o363bo5bobo176b3o254bo178bo$257bo662bo249bo13bo$
256bobo269b3o390bo248bo12bobo$257b2o111b2o156bo578b2o61bo12bobo163bo
10b2o$369bobo157bo571b2o4bobo74bo163b2o10bobo$371bo148b2o395b2o182bobo
3bo59b2o179bobo9bo$520bobo217bo176bobo181bo66b2o16b3o$257b2o115b2o144b
o218b2o176bo249bo18bo$256bobo115b2o363bobo445bo$83b2o173bo$83bobo662b
2o173bo$83bo664bobo171b2o$748bo173bobo$1109b2o$1108b2o$1110bo$1116bo$
76b2o7b3o1027b2o$75b2o8bo1029bobo$77bo8bo637b2o$723bobo$725bo2$82b2o$
82bobo$82bo27$23b3o$25bo$24bo201$456bobo$457b2o$457bo4$30bo$29bo255bo
8bo$29b3o251b2o8bo$284b2o7b3o3$26bo$24b2o$25b2o114bo146bobo210bo$141bo
bo144b2o211bobo$141b2o146bo211b2o2$281bo229bo$140bo140bobo226bo$139bob
o10bo128b2o227b3o158bo$40bo98bobo10bobo514b2o12bo$38b2o100bo11b2o516b
2o10bo$32bo6b2o108bo355bobo174b3o$30b2o110bo5bobo354b2o$31b2o108bobo5b
2o355bo168bo$141bo2bo353bo174b2o$139b2ob2o353bo176b2o$138bobo356b3o9bo
158bo$138bobo368bo158bobo$31b2o106b2ob2o365bo158b2o$30b2o109bo2bo$32bo
6b2o100bobo5b2o$38b2o102bo5bobo130b2o$40bo108bo131bobo$140bo11b2o127bo
227bo$139bobo10bobo354bo$139bobo10bo136bo207b3o9bo$140bo147b2o207bo$
288bobo207bo169b2o$506bo161bobo$25b2o114b2o362b2o161bo$24b2o115bobo
361bobo166b2o$26bo114bo531b2o$284b2o7b3o379bo$283b2o8bo216b3o$285bo8bo
215bo171b3o$29b3o479bo158b2o10bo$29bo639b2o12bo$30bo470b2o168bo$501bob
o$501bo177$27bo3bo285bo$25b2o4bobo283bobo$26b2o3b2o284b2o$80bo229bobo$
80bobo227b2o142bo11bo$80b2o118bo110bo140b2o10b2o$89bobo108bobo250b2o5b
o4b2o$77b2o10b2o109b2o7bo249bo$77b2o11bo116b2o250b3o$208b2o98bo$26bo7b
o52bo219bo$25bo8bobo50bo219b3o$25b3o6b2o51bo110bo$198bobo4bo245bobo$
78b2o2b2o5b3o106b2o5bobo112bo130b2o$77bo2bo2bo121b2o105bo5b2o132bo$78b
2ob2o229bobo4b2o$81bo230b2o$81bo123b2o245bo$78b2ob2o115b2o5bobo243b2o$
77bo2bo2bo114bobo4bo106b2o137bobo$78b2o2b2o5b3o106bo113bobo4b2o$312bo
5b2o$87bo232bo$87bo120b2o$25b3o6b2o51bo119b2o250b3o$25bo8bobo163b2o7bo
97b3o149bo$26bo7bo42b2o11bo109bobo104bo145b2o5bo4b2o$77b2o10b2o109bo
107bo143b2o10b2o$89bobo362bo11bo$80b2o$80bobo$80bo230bo$310b2o$310bobo
$26b2o3b2o284b2o$25b2o4bobo283bobo$27bo3bo285bo150$422bo$421bo$421b3o
2$33bobo108bobo$33b2o102b3o4b2o128bo$34bo110bo127bo$135bo5bo131b3o$
135bo5bo$135bo5bo273bo$36bo107b2o264bo4bobo$36bobo105b2o264bobo2b2o$
36b2o87bo13b2o269b2o$23bobo99bo12bo2bo$23b2o100bo13b2o128bo$24bo96bo
145b2o$122bo145b2o$120b3o$416bo$276bo139bobo$122b2o19b2o129b2o140b2o$
122b2o20bo2b2o126b2o$30bo113bobobo118bo137bo$28b2o113b2ob2o117b2o138bo
bo$29b2o114bo120b2o137b2o$145bo$143b2ob2o$29b2o113bobobo117b2o137b2o$
28b2o92b2o20bo2b2o116b2o138bobo$30bo91b2o19b2o122bo137bo$275b2o$274b2o
140b2o$120b3o153bo139bobo$122bo293bo$121bo$125bo13b2o127b2o$24bo100bo
12bo2bo125b2o$23b2o100bo13b2o128bo$23bobo118b2o$36b2o106b2o264b2o$36bo
bo96bo5bo268bobo2b2o$36bo98bo5bo268bo4bobo$135bo5bo273bo$145bo$137b3o
4b2o127b3o$34bo109bobo126bo$33b2o239bo$33bobo2$421b3o$421bo$422bo117$
20bobo$20b2o$21bo8$25bo$23b2o$24b2o69bo$96bo$13bo80b3o$11b2o7bo77b2o$
12b2o4b2o78b2o7b2o4b2o$19b2o86bo2b2o2bo$108b2o2b2o$109bobo$109bobo$
108b2o2b2o$107bo2b2o2bo$98b2o7b2o4b2o$98b2o$94b3o$19b2o75bo$12b2o4b2o
75bo$11b2o7bo$13bo2$24b2o$23b2o$25bo8$21bo$20b2o$20bobo76$30bo$30bobo$
30b2o6$22bo$21bo6bo$21b3o4bobo$28b2o$202b2o$202bobo$199bo4bo$122b2o75b
5ob2o$122bobo79bo2bo$25bo93bo4bo74b3o2bob2o$23b2o94b5ob2o72bo2bobo$24b
2o98bo2bo74bobo$119b3o2bob2o73b2ob2o6b2o3bo$119bo2bobo87b2o2bo$116bo5b
obo91b3o$116bo4b2ob2o6b2o$116bo15b2o$110bobo$24b2o85b2o99b2o$23b2o86bo
100b2o$25bo$116bo5bo9b2o$116bo5bo9b2o$116bo5bo2$118b3o$28b2o$21b3o4bob
o169b2o$21bo6bo90b3o78b2o$22bo98bo$120bo76b2o$196bobo$2o196bo$b2o$o$
30b2o$30bobo$30bo116$10bo$10bobo$10b2o8$18bo$16b2o$17b2o$115b2o$11bo9b
o89b2obobo$10bo8b2o89bobobo18b2o$10b3o7b2o88bobobo17bo2bo$111b2ob2o17b
2o$114bo$114bo23b3o$111b2ob2o17b2o3bo$110bobobo17bo2bo3bo$110bobobo18b
2o$111b2obobo$115b2o$10b3o7b2o$10bo8b2o$11bo9bo2$17b2o$16b2o$18bo8$10b
2o$10bobo$10bo128$24bo$24bobo$24b2o$18bo112bo$18bobo104b2o3bo$18b2o
104bo2bo2b3o$124bo2bo20bo$125b2o20bo$12bo7bo126b3o$11bo7bo88bo20b3o$
11b3o5b3o84bobo36bo$107b2o36bo$145bo$24bo85b2o$22b2o86b2o$23b2o2$108b
2o2b2o$107bobo2bobo$107bo6bo$108b6o2$110b2o$110b2o2$108b6o$107bo6bo$
107bobo2bobo$23b2o83b2o2b2o$22b2o$24bo$110b2o$110b2o$11b3o5b3o123bo$
11bo7bo87b2o36bo$12bo7bo85bobo36bo$108bo20b3o$147b3o$18b2o105b2o20bo$
18bobo103bo2bo20bo$18bo105bo2bo2b3o$24b2o99b2o3bo$24bobo104bo$24bo82$
6bo$4bobo$5b2o4$29bo$29bobo$29b2o4bo$34bo$34b3o4$33bo$24bo6b2o$24bobo
5b2o$24b2o3$24b2o$24bobo5b2o$24bo6b2o$33bo4$34b3o$34bo$29b2o4bo$29bobo
$29bo!

Post Reply