SX4IAP27IQ7B5QFX74GKQYRX4IJSJTZ4CLH7EPFSJWATV7LVXR4AC YVDRNZYOCNN36GCZ6GPMLYPWITA3LYYPQPOUP2WJEZIVMOZRCA2AC 42VXBMHQX5RDOVPY5LTQMJ3PGOEFGONBBHFWTSYIKHVMPN2IZQYAC 4GYKYPKIACICEWYUOJNHU6D5FAUECBLNPUACURVDJPPIXO3RNICAC YLSNKGUDSJN3S37GCAHLNBIK22PVZNLFFLMFGM533XGZ56FVHLZQC S4P2B3FPF57HPHTIAYGMPCVKB7573IB5ZBKNXVBTB6ICCPF55WNQC TLQZYMWADNQSS5PXO3TIJVPAG42NOAV3GR5S55TCUQU73LRQQ57QC AETEUT6ER7MJXNYTBH5RHUT5URSRWNBJPXU2CA4URLSNAZYMWPIAC 42RQXK2TNX2ZZKB2EOMCJZJMIXMAMNE3TQUZCSN7J763VGAPNNAAC HA7HWWCWLZNJVHU7BI4IL5HTT26V44HJKDRZHXMT5AN6B7NH7N6AC FGZSTXZM4O7IQTMOWNTA2WVZVNN4BVLNAAMFTBZWLUDHTJICWD7AC D5MLZ2BYK5M7FMRIJAJZ5JCTDLBIKFYE5WL3EL2PRQR3H43DS74AC CGPQSMRFAEGSEMLDQWPHLEOAF26HVF3IC6BEKRCOSV2H6QLIBEAQC ZMAZUHFHJOW2GSUH5SUDXRG4STQ6PQHWYGZIZHEJCN73PSNQOAAQC QHTD7FGR374IIWGV7XAOJREIGJBAOFJCSBLCWPL536Z42GQYNTOAC 4G62MDWRTFCQ22OK7EDFIU6WE2SWQZVBNDCRUROUBL5XEOZRDF6AC HH4TTHDCAEKTNZT4VUXCSPK7KCK6B432VFU5GOWWM3EG4KMNM43AC V7HS237PBWI3JIA2FKGHVZ6CXT2BFE6VMXGZSJD7RGD6A3U2ISGQC BO5VKP6Z3GNEZN2RKCS4MSUYM77L3KSOJAFGZO4GPDPSZAHQ7PSQC AJ6FTLCDTUE7IBZOAMUW6HQFJNL4GUM2LL3GQUZBGB5UXTBPJILQC L74V6CJIN5SLAGQSFFJFWGTI6M6KBRZYFBVD2C2B3MSGHWLIFMFQC 373VDPE4NHOIRAA72G25QBXT6ODW7QKR64OG7U6BM4ALZRUNFI2QC 5F37EUQCHOXFW7BK6YY5P7SAQB64ZCA3COUE4CN4YIY4ENQC2FCAC DJJIZVCNVIH2HTR6K7YBEZTFMTMMW55GP37G4RAZO6G3UUXU52PAC CRPUEZXM4UZYCYLARN6X74TXJ65NWKK4NDLHRD3DXSBQHI6IQ3BAC GJG4W23FRRNBABPBTE57FMXQDVEN67TA5QVES6JBUS6RVEJSYTZAC 6PSR5ZJMWMK2J6MFIUKYKHG2B7H2QJ4SMFQMH5PF2632QPLC5DRAC K4FYM25KROPWAAJBL7DKHDFBJJXRRJJ3EBRJMQAXK7M4WHEAJSWAC DB2BCHT5GXNQ3JXQXWMDFNXIO7OVEQMVY34SHTAWSJS47N67YTIQC VDRC3JXJMIYZ65PDFUBKHJGMKWIBFGYU4WPF43OOXHKTL2UBFKEAC W2M2UMQWCG5K3MYSCAJJADB7FGYAM4ODV6BEBAEBPM7J3ZJCHCBAC 4DHN3FJ7YPSEPXXU2LCTLKGCAKH6RLGLTYFN2P6XTZJDPR5SFJMAC 5X6GHU7OPRGKRGT5PJBQOJMP3AFMM4HZQ47X5EH7DDXCTCWA6LIQC E56QHKOALQCK7UGAJ6UNNZYTVUTSKLV25KYTPUQYMQWVDI6JIUCAC 76FUMVBRPTVCE3QMVJ2CQIW4C33Z737JYYF3UP43KFDBYSNTECKQC 4SFN5L36NYBFPXLBSWXO4KXDBY2W4YP4CNNVX23E2BQ7W2A6GVZQC UVGQA4JL7UY6HSEMU2JDRZLT44QJAVKV6ZBMWOFHDFHJZLTM5NKAC P5VPAF54HPN2KJACMZ2VGODJRFAKYBSKPN6Y7WYIWNVMGA72IETQC I4SAB3ZORIAJOCA3KQIWVXBP4IDK3H7VUUJRTHPNGSPA7XCPJMCAC NI3B7J2EHGSD7E65SGBLMI4R2YNS2LHI42NM37XEWP32PKBNKXYAC F35KMTI4GH5AWL52CJFR767KIAD6TYXIT6PEHM65JJ66LRPESFTQC PJWQKTE3MRFDPJQA6LMPVROAMLEZ27UGJ3EOQ4JQXSOFSUJVCT4AC M5GXUK5HZE7HPLWQ33T73CXRJITOUJAO6T6F6QWTYYL7NLWFYA3AC NICERFRG2UQDGPLQRFQJHGLNIUMJCE6LUN3EVNDQ35LPZLDMHYDAC BIWQWRTPVNCRRDNYWFTDP3TGL2ER6U3ESUYPRUADATHZ4N2F5YJQC VSXY63RCAE4WDARTVOW6YDD6VPMRBNASRD73R4UMZDAAQX7MAVTAC pub fn (self &IrcActor) connect_all(say matrix.SayContext) {say.say <- matrix.Say{room: say.room_id
pub fn (self &IrcActor) connect_all(outchan chan chat.Say, room string, system chat.System) {outchan <- chat.Say{system: systemroom: room
println('!!startup irc ${ptr_str(main.irc)} irc.networks ${ptr_str(main.irc.networks)}')debug.dump(main.irc.networks)go main.irc.connect_all(room_id: 'admin_room', say: say_chan)
go main.irc.connect_all(out_chan, 'admin_room', chat.System.matrix)
self.say_chan <- matrix.Say{room: room_idmessage: '!connect <hostname> (see !server for list)'}
chat.say(self.out_chan, chat.System.matrix, room_id, '!connect <hostname> (see !server for list)')
self.say_chan <- matrix.Say{room: room_idmessage: '$self.matrix.host is ${self.matrix.conn_state}. $self.irc.networks.len irc networks'}
chat.say(self.out_chan, system, room_id, '$self.matrix.host is ${self.matrix.conn_state}. $self.irc.networks.len irc networks')
fn (mut self Main) say(chat ChatSystem, room string, message string) {match chat {irc.IrcActor {self.irc.say(room, message)}matrix.Actor {self.say_chan <- matrix.Say{room: roommessage: message
fn listen_out(out_chan chan chat.Say, mut irc irc.IrcActor, mut matrix matrix.Actor) {for {println("!!*! OUTMSG WAIT")outmsg := <-out_chan or { println("listen_out err!") }println("!!!** GOT OUTMSG $outmsg")match outmsg.system {.irc {irc.say(outmsg.room, outmsg.message)