From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/13358 Path: news.gmane.org!.POSTED!not-for-mail From: Rabbitstack Newsgroups: gmane.linux.lib.musl.general Subject: Re: setrlimit hangs the process Date: Thu, 11 Oct 2018 17:14:59 +0200 Message-ID: References: <20180925153605.GF10209@port70.net> <20180925163850.GL17995@brightrain.aerifal.cx> <20181004150421.GC17110@brightrain.aerifal.cx> <20181004155302.GD17110@brightrain.aerifal.cx> <20181005004715.GF17110@brightrain.aerifal.cx> <20181009203640.GS10209@port70.net> <20181009204003.GK17110@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000fe04640577f56f78" X-Trace: blaine.gmane.org 1539270804 31704 195.159.176.226 (11 Oct 2018 15:13:24 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 11 Oct 2018 15:13:24 +0000 (UTC) Cc: musl@lists.openwall.com To: Rich Felker Original-X-From: musl-return-13374-gllmg-musl=m.gmane.org@lists.openwall.com Thu Oct 11 17:13:20 2018 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by blaine.gmane.org with smtp (Exim 4.84_2) (envelope-from ) id 1gAceL-00087U-T3 for gllmg-musl@m.gmane.org; Thu, 11 Oct 2018 17:13:18 +0200 Original-Received: (qmail 30510 invoked by uid 550); 11 Oct 2018 15:15:26 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Original-Received: (qmail 30489 invoked from network); 11 Oct 2018 15:15:25 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Dqs5NXyM40l81BMg8ouY+3ekUJeiWrnEpcftT/ai3Yo=; b=KIuhsSEVXDhxEZ6w6JXT9ZZUsmkoniTqHZQoUzuTr4rcSpszhHjHkCcKKIQTehHmdp eHwJ/w+IK9JTobTPY+hEkLIBvILHIz92V+cXPBXTfuJX0/QcNFTA3ouYEpUWJDl5oj7f 4agDLaV09y3mOi8r1AIRC+b+Sy/y+IOPy5IpY1KytJcEoCN3nrLjRHoYkiZhjv4dr1HQ cCRh9xiv9avX8+xewJAjBl4vVJekMuUCiBXEX3xVY7a1+Qpd8K4htkVKTq+RD9SMf7lM d/vYn1Q1B4kbfgwRKOWRehp55Vcsi2sYswD8k+ziB9iwOtOS7dDonXX37f6dD2ympqzU S3Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Dqs5NXyM40l81BMg8ouY+3ekUJeiWrnEpcftT/ai3Yo=; b=gYexOywarN39Fr6pu+Ca7bT9Eaq38+M64Y+JrNXrZVeR2+6mR1/XIoqbBItaeJtGGJ wPqkVE/Vvy8UkoDZU1C1uI2G+rLMJMa5e8iDIVvTGGNLEyi0jg8w0ne/CFtTxGsWmGuz DXhHrcfUF03n1rDShU1oebXQHM8FTBjIAaJboz6UGgR6k1PAaJtn2AlWyQgPfEkSgVB4 QhPslJwVA3RUQqV+EjbOwsQDxBlGDhm4dQTknrArKKtCKoRu5umU8ThW4RzR9rgOcXES R09SoaVi2Wr5+/nhLhdOiuxQ4fKkwoNUAgcvEhUQkrIr6i1lFrMUEqM6thnCLNp8Msgq zvFQ== X-Gm-Message-State: ABuFfoiRsBkevdhHkDWV4cGm4b90SRSYD4YClejgsWb8kpe9HpeO1zc+ 9hc7z0kl298Jxi4AoAEqIQfO8/Klk01SIYmpUg== X-Google-Smtp-Source: ACcGV62LNBAHFaz8A2DGRy9ZPN69wbWN139vOR/dzPCZc5tpw505ZRCOUhOqranydYfbw8MKI3lMqOkDUBJQw81qH/s= X-Received: by 2002:a17:902:7e41:: with SMTP id a1-v6mr1929829pln.149.1539270913151; Thu, 11 Oct 2018 08:15:13 -0700 (PDT) In-Reply-To: <20181009204003.GK17110@brightrain.aerifal.cx> Xref: news.gmane.org gmane.linux.lib.musl.general:13358 Archived-At: --000000000000fe04640577f56f78 Content-Type: multipart/alternative; boundary="000000000000fe04600577f56f76" --000000000000fe04600577f56f76 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi I managed to reproduce the problem with minimal code snippet and can confirm it's definitely the Go stdlib signal handler that messes things up. Here's the code: package main import ( bpflib "github.com/iovisor/gobpf/elf" "os/signal" "os" "fmt" ) func main() { sig :=3D make(chan os.Signal) signal.Notify(sig, os.Kill, os.Interrupt) mod :=3D bpflib.NewModule("/tmp/sched.o") fmt.Println("loading ebpf module") err :=3D mod.Load(nil) if err !=3D nil { panic(err) } err =3D mod.EnableKprobes(50) if err !=3D nil { panic(err) } fmt.Println("loaded ebpf module") rxChan :=3D make(chan []byte) lostChan :=3D make(chan uint64) pmap, err :=3D bpflib.InitPerfMap( mod, "sched", rxChan, lostChan, ) if err !=3D nil { panic(err) } go func() { for { select { case pe :=3D <-rxChan: fmt.Println(pe) case l :=3D <-lostChan: fmt.Println(l) } } }() pmap.PollStart() fmt.Println("listening on ebpf map") <-sig } The main thread hangs right after the call to module constructor. On Tue, Oct 9, 2018 at 10:40 PM Rich Felker wrote: > On Tue, Oct 09, 2018 at 10:36:41PM +0200, Szabolcs Nagy wrote: > > * Rabbitstack [2018-10-09 21:37:06 +0200]: > > > Should we raise an issue in Go upstream repository since there is > nothing > > > actionable from musl side? > > > > > > > have you figured out where the siprocmask came from? > > it might not be the go runtime but some c lib that you linked in. > > Well the sigset_t was created in Go code or via some other code that > bypasses libc. The libc functions cannot create a sigset_t with the > implementation-internal signals masked. > > > > El vie., 5 oct. 2018 2:47, Rich Felker escribi=C3= =B3: > > > > > > > > > > Here is the bug: > > > > > > > > > > 6208 rt_sigprocmask(SIG_SETMASK, ~[HUP INT QUIT ILL TRAP ABRT BU= S > FPE > > > > SEGV TERM STKFLT CHLD PROF SYS RTMIN RT_1], > > > > the go runtime should not make this call, it probably comes from > > somewhere else. > > > > i think you should try to create a minimal reproducer go code > > that makes this syscall. > > I looked at the Go implementations of the functions for sigset_t > manipulation and sigprocmask. They all bypass libc. So either it's an > error to use them at all in programs that link with libc, or a bug in > Go that they don't respect SIGRTMIN, etc. > > Rich > --000000000000fe04600577f56f76 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi

I managed to reproduce th= e problem with minimal code snippet and can confirm it's definitely the= Go stdlib signal handler that messes things up. Here's the code:
=

package main

import (

bpflib = "github.com/iovisor/gobpf/elf"
"os/signal= "
&qu= ot;os"
= "fmt"
)

func main() {
sig :=3D make(chan os.Signal)
signal.Notify(= sig, os.Kill, os.Interrupt)

mod :=3D bpflib.NewModule("/tmp/sched.o") fmt.Println("= loading ebpf module")
err :=3D mod.Load(nil)
if err !=3D nil {
= panic(err)
}
err =3D mod.EnableKprobes(50)
if err !=3D nil {
panic(err)
}
fmt.Pr= intln("loaded ebpf= module")
rxChan :=3D make(chan []byte)
lostChan :=3D make(chan uint64)

p= map, err :=3D bpflib.InitPerfMap(
mod,
"sched",
rxChan= ,
lostChan,
)

if err !=3D nil {
panic(err)
}
go func() {<= br> for { select {
case pe :=3D <-rxChan:
fmt.Println(pe)
case l :=3D <-lostC= han:
fmt.Println(l)
}
}
}()
= pmap.PollStart()
fmt.Println("listening on ebpf map")
<-sig
}<= br>
The main thread hangs=
 right after the call to module constructor.

On Tue, Oct 9, 2018 at 10:40 PM Rich= Felker <dalias@libc.org> wrot= e:
On Tue, Oct 09, 2018 at 10:36:41= PM +0200, Szabolcs Nagy wrote:
> * Rabbitstack <rabbitstack7@gmail.com> [2018-10-09 21:37:06 +0200]:
> >=C2=A0 Should we raise an issue in Go upstream repository since th= ere is nothing
> > actionable from musl side?
> >
>
> have you figured out where the siprocmask came from?
> it might not be the go runtime but some c lib that you linked in.

Well the sigset_t was created in Go code or via some other code that
bypasses libc. The libc functions cannot create a sigset_t with the
implementation-internal signals masked.

> > El vie., 5 oct. 2018 2:47, Rich Felker <dalias@libc.org> escribi=C3=B3:
> > > >
> > > > Here is the bug:
> > > >
> > > > 6208=C2=A0 rt_sigprocmask(SIG_SETMASK, ~[HUP INT QUIT I= LL TRAP ABRT BUS FPE
> > > SEGV TERM STKFLT CHLD PROF SYS RTMIN RT_1],=C2=A0 <unfini= shed ...>
>
> the go runtime should not make this call, it probably comes from
> somewhere else.
>
> i think you should try to create a minimal reproducer go code
> that makes this syscall.

I looked at the Go implementations of the functions for sigset_t
manipulation and sigprocmask. They all bypass libc. So either it's an error to use them at all in programs that link with libc, or a bug in
Go that they don't respect SIGRTMIN, etc.

Rich
--000000000000fe04600577f56f76-- --000000000000fe04640577f56f78 Content-Type: application/octet-stream; name="sched.o" Content-Disposition: attachment; filename="sched.o" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jn4q4lsj0 f0VMRgIBAQAAAAAAAAAAAAEA9wABAAAAAAAAAAAAAAAAAAAAAAAAAEgZAAAAAAAAAAAAAEAAAAAA AEAAEQABAL8WAAAAAAAAeWFwAAAAAABjGmz/AAAAALcBAAAAAAAAexpg/wAAAAB7Gvj/AAAAAHsa 8P8AAAAAexro/wAAAAB7GuD/AAAAAHsa2P8AAAAAexrQ/wAAAAB7Gsj/AAAAAHsawP8AAAAAexq4 /wAAAAB7GrD/AAAAAHsaqP8AAAAAexqg/wAAAAB7Gpj/AAAAAHsakP8AAAAAexqI/wAAAAB7GoD/ AAAAAHsaeP8AAAAAexpw/wAAAACFAAAADgAAALcBAAACAAAAYxpo/wAAAAB3AAAAIAAAAHsKWP8A AAAAv6EAAAAAAAAHAQAAcP///7cCAAAQAAAAhQAAABAAAACFAAAACAAAAGcAAAAgAAAAdwAAACAA AAC/pAAAAAAAAAcEAABY////v2EAAAAAAAAYAgAAAAAAAAAAAAAAAAAAvwMAAAAAAAC3BQAAqAAA AIUAAAAZAAAAtwAAAAAAAACVAAAAAAAAAL8WAAAAAAAAeWFQAAAAAAC3AgAAAAAAAHsqUP8AAAAA eypI/wAAAAB7KkD/AAAAAHsqOP8AAAAAeyow/wAAAAB7Kij/AAAAAHsqIP8AAAAAeyoY/wAAAAB7 KhD/AAAAAHsqCP8AAAAAeyoA/wAAAAB7Kvj+AAAAAHsq8P4AAAAAeyro/gAAAAB7KuD+AAAAAHsq 2P4AAAAAeyrQ/gAAAAB7Ksj+AAAAAHsqwP4AAAAAvxIAAAAAAABnAgAAIAAAAHcCAAAgAAAAGAMA AP////8AAAAAAAAAAB0yQAAAAAAAeWJwAAAAAABXAgAAAAEBABUCPQAAAQEAeaLA/gAAAAB7Kmj/ AAAAAHmiyP4AAAAAeypw/wAAAAB5otD+AAAAAHsqeP8AAAAAeaLY/gAAAAB7KoD/AAAAAHmi4P4A AAAAeyqI/wAAAAB5ouj+AAAAAHsqkP8AAAAAeaLw/gAAAAB7Kpj/AAAAAHmi+P4AAAAAeyqg/wAA AAB5ogD/AAAAAHsqqP8AAAAAeaII/wAAAAB7KrD/AAAAAHmiEP8AAAAAeyq4/wAAAAB5ohj/AAAA AHsqwP8AAAAAeaIg/wAAAAB7Ksj/AAAAAHmiKP8AAAAAeyrQ/wAAAAB5ojD/AAAAAHsq2P8AAAAA eaI4/wAAAAB7KuD/AAAAAHmiQP8AAAAAeyro/wAAAAB5okj/AAAAAHsq8P8AAAAAeaJQ/wAAAAB7 Kvj/AAAAAGcBAAAgAAAAxwEAACAAAAB7GmD/AAAAAIUAAAAOAAAAtwEAAAEAAABjGmj/AAAAAHcA AAAgAAAAewpY/wAAAAC/oQAAAAAAAAcBAABw////twIAABAAAACFAAAAEAAAAIUAAAAIAAAAZwAA ACAAAAB3AAAAIAAAAL+kAAAAAAAABwQAAFj///+/YQAAAAAAABgCAAAAAAAAAAAAAAAAAAC/AwAA AAAAALcFAACoAAAAhQAAABkAAAC3AAAAAAAAAJUAAAAAAAAAvxYAAAAAAAC3CQAAAAAAAHua+P8A AAAAe5rw/wAAAAB7muj/AAAAAHua4P8AAAAAe5rY/wAAAAB7mtD/AAAAAHuayP8AAAAAe5rA/wAA AAB7mrj/AAAAAHuasP8AAAAAe5qo/wAAAAB7mqD/AAAAAHuamP8AAAAAe5qQ/wAAAAB7moj/AAAA AHuagP8AAAAAe5p4/wAAAAB7mnD/AAAAAHuaaP8AAAAAe5pg/wAAAACFAAAADgAAALcBAAAGAAAA Yxpo/wAAAAB3AAAAIAAAAHsKWP8AAAAAv6EAAAAAAAAHAQAAcP///7cCAAAQAAAAhQAAABAAAAB5 aGgAAAAAAIUAAAAIAAAAvwcAAAAAAAB7mlD/AAAAAL+hAAAAAAAABwEAAFD///+/gwAAAAAAAAcD AAAIAAAAtwIAAAgAAACFAAAABAAAAHmjUP8AAAAAVQMCAAAAAAC3AAAAAAAAAJUAAAAAAAAAv6EA AAAAAAAHAQAAgP///2cHAAAgAAAAdwcAACAAAAB7Gkj/AAAAALcCAACAAAAAhQAAAAQAAAC/pAAA AAAAAAcEAABY////v2EAAAAAAAAYAgAAAAAAAAAAAAAAAAAAv3MAAAAAAAC3BQAAqAAAAIUAAAAZ AAAAe5pQ/wAAAAC/gwAAAAAAAAcDAAAQAAAAv6EAAAAAAAAHAQAAUP///7cCAAAIAAAAhQAAAAQA AAB5o1D/AAAAABUD5v8AAAAAeaFI/wAAAAC3AgAAgAAAAIUAAAAEAAAAv6QAAAAAAAAHBAAAWP// /79hAAAAAAAAGAIAAAAAAAAAAAAAAAAAAL9zAAAAAAAAtwUAAKgAAACFAAAAGQAAALcJAAAAAAAA e5pQ/wAAAAC/gwAAAAAAAAcDAAAYAAAAv6EAAAAAAAAHAQAAUP///7cCAAAIAAAAhQAAAAQAAAB5 o1D/AAAAABUD0f8AAAAAeaFI/wAAAAC3AgAAgAAAAIUAAAAEAAAAv6QAAAAAAAAHBAAAWP///79h AAAAAAAAGAIAAAAAAAAAAAAAAAAAAL9zAAAAAAAAtwUAAKgAAACFAAAAGQAAAHuaUP8AAAAAv4MA AAAAAAAHAwAAIAAAAL+hAAAAAAAABwEAAFD///+3AgAACAAAAIUAAAAEAAAAeaNQ/wAAAAAVA73/ AAAAAHmhSP8AAAAAtwIAAIAAAACFAAAABAAAAL+kAAAAAAAABwQAAFj///+/YQAAAAAAABgCAAAA AAAAAAAAAAAAAAC/cwAAAAAAALcFAACoAAAAhQAAABkAAAC3CQAAAAAAAHuaUP8AAAAAv4MAAAAA AAAHAwAAKAAAAL+hAAAAAAAABwEAAFD///+3AgAACAAAAIUAAAAEAAAAeaNQ/wAAAAAVA6j/AAAA AHmhSP8AAAAAtwIAAIAAAACFAAAABAAAAL+kAAAAAAAABwQAAFj///+/YQAAAAAAABgCAAAAAAAA AAAAAAAAAAC/cwAAAAAAALcFAACoAAAAhQAAABkAAAB7mlD/AAAAAL+DAAAAAAAABwMAADAAAAC/ oQAAAAAAAAcBAABQ////twIAAAgAAACFAAAABAAAAHmjUP8AAAAAFQOU/wAAAAB5oUj/AAAAALcC AACAAAAAhQAAAAQAAAC/pAAAAAAAAAcEAABY////v2EAAAAAAAAYAgAAAAAAAAAAAAAAAAAAv3MA AAAAAAC3BQAAqAAAAIUAAAAZAAAAtwkAAAAAAAB7mlD/AAAAAL+DAAAAAAAABwMAADgAAAC/oQAA AAAAAAcBAABQ////twIAAAgAAACFAAAABAAAAHmjUP8AAAAAFQN//wAAAAB5oUj/AAAAALcCAACA AAAAhQAAAAQAAAC/pAAAAAAAAAcEAABY////v2EAAAAAAAAYAgAAAAAAAAAAAAAAAAAAv3MAAAAA AAC3BQAAqAAAAIUAAAAZAAAAe5pQ/wAAAAC/gwAAAAAAAAcDAABAAAAAv6EAAAAAAAAHAQAAUP// /7cCAAAIAAAAhQAAAAQAAAB5o1D/AAAAABUDa/8AAAAAeaFI/wAAAAC3AgAAgAAAAIUAAAAEAAAA v6QAAAAAAAAHBAAAWP///79hAAAAAAAAGAIAAAAAAAAAAAAAAAAAAL9zAAAAAAAAtwUAAKgAAACF AAAAGQAAALcJAAAAAAAAe5pQ/wAAAAC/gwAAAAAAAAcDAABIAAAAv6EAAAAAAAAHAQAAUP///7cC AAAIAAAAhQAAAAQAAAB5o1D/AAAAABUDVv8AAAAAeaFI/wAAAAC3AgAAgAAAAIUAAAAEAAAAv6QA AAAAAAAHBAAAWP///79hAAAAAAAAGAIAAAAAAAAAAAAAAAAAAL9zAAAAAAAAtwUAAKgAAACFAAAA GQAAAHuaUP8AAAAAv4MAAAAAAAAHAwAAUAAAAL+hAAAAAAAABwEAAFD///+3AgAACAAAAIUAAAAE AAAAeaNQ/wAAAAAVA0L/AAAAAHmhSP8AAAAAtwIAAIAAAACFAAAABAAAAL+kAAAAAAAABwQAAFj/ //+/YQAAAAAAABgCAAAAAAAAAAAAAAAAAAC/cwAAAAAAALcFAACoAAAAhQAAABkAAAC3CQAAAAAA AHuaUP8AAAAAv4MAAAAAAAAHAwAAWAAAAL+hAAAAAAAABwEAAFD///+3AgAACAAAAIUAAAAEAAAA eaNQ/wAAAAAVAy3/AAAAAHmhSP8AAAAAtwIAAIAAAACFAAAABAAAAL+kAAAAAAAABwQAAFj///+/ YQAAAAAAABgCAAAAAAAAAAAAAAAAAAC/cwAAAAAAALcFAACoAAAAhQAAABkAAAB7mlD/AAAAAL+D AAAAAAAABwMAAGAAAAC/oQAAAAAAAAcBAABQ////twIAAAgAAACFAAAABAAAAHmjUP8AAAAAFQMZ /wAAAAB5oUj/AAAAALcCAACAAAAAhQAAAAQAAAC/pAAAAAAAAAcEAABY////v2EAAAAAAAAYAgAA AAAAAAAAAAAAAAAAv3MAAAAAAAC3BQAAqAAAAIUAAAAZAAAAtwkAAAAAAAB7mlD/AAAAAL+DAAAA AAAABwMAAGgAAAC/oQAAAAAAAAcBAABQ////twIAAAgAAACFAAAABAAAAHmjUP8AAAAAFQME/wAA AAB5oUj/AAAAALcCAACAAAAAhQAAAAQAAAC/pAAAAAAAAAcEAABY////v2EAAAAAAAAYAgAAAAAA AAAAAAAAAAAAv3MAAAAAAAC3BQAAqAAAAIUAAAAZAAAAe5pQ/wAAAAC/gwAAAAAAAAcDAABwAAAA v6EAAAAAAAAHAQAAUP///7cCAAAIAAAAhQAAAAQAAAB5o1D/AAAAABUD8P4AAAAAeaFI/wAAAAC3 AgAAgAAAAIUAAAAEAAAAv6QAAAAAAAAHBAAAWP///79hAAAAAAAAGAIAAAAAAAAAAAAAAAAAAL9z AAAAAAAAtwUAAKgAAACFAAAAGQAAALcJAAAAAAAAe5pQ/wAAAAC/gwAAAAAAAAcDAAB4AAAAv6EA AAAAAAAHAQAAUP///7cCAAAIAAAAhQAAAAQAAAB5o1D/AAAAABUD2/4AAAAAeaFI/wAAAAC3AgAA gAAAAIUAAAAEAAAAv6QAAAAAAAAHBAAAWP///79hAAAAAAAAGAIAAAAAAAAAAAAAAAAAAL9zAAAA AAAAtwUAAKgAAACFAAAAGQAAAHuaUP8AAAAAv4MAAAAAAAAHAwAAgAAAAL+hAAAAAAAABwEAAFD/ //+3AgAACAAAAIUAAAAEAAAAeaNQ/wAAAAAVA8f+AAAAAHmhSP8AAAAAtwIAAIAAAACFAAAABAAA AL+kAAAAAAAABwQAAFj///+/YQAAAAAAABgCAAAAAAAAAAAAAAAAAAC/cwAAAAAAALcFAACoAAAA hQAAABkAAAC3CQAAAAAAAHuaUP8AAAAAv4MAAAAAAAAHAwAAiAAAAL+hAAAAAAAABwEAAFD///+3 AgAACAAAAIUAAAAEAAAAeaNQ/wAAAAAVA7L+AAAAAHmhSP8AAAAAtwIAAIAAAACFAAAABAAAAL+k AAAAAAAABwQAAFj///+/YQAAAAAAABgCAAAAAAAAAAAAAAAAAAC/cwAAAAAAALcFAACoAAAAhQAA ABkAAAB7mlD/AAAAAL+DAAAAAAAABwMAAJAAAAC/oQAAAAAAAAcBAABQ////twIAAAgAAACFAAAA BAAAAHmjUP8AAAAAFQOe/gAAAAB5oUj/AAAAALcCAACAAAAAhQAAAAQAAAC/pAAAAAAAAAcEAABY ////v2EAAAAAAAAYAgAAAAAAAAAAAAAAAAAAv3MAAAAAAAC3BQAAqAAAAIUAAAAZAAAAtwEAAAAA AAB7GlD/AAAAAAcIAACYAAAAv6EAAAAAAAAHAQAAUP///7cCAAAIAAAAv4MAAAAAAACFAAAABAAA AHmjUP8AAAAAFQOJ/gAAAAB5oUj/AAAAALcCAACAAAAAhQAAAAQAAAC/pAAAAAAAAAcEAABY//// v2EAAAAAAAAYAgAAAAAAAAAAAAAAAAAAv3MAAAAAAAC3BQAAqAAAAIUAAAAZAAAABQB9/gAAAAC/ FgAAAAAAALcBAAAAAAAAexr4/wAAAAB7GvD/AAAAAHsa6P8AAAAAexrg/wAAAAB7Gtj/AAAAAHsa 0P8AAAAAexrI/wAAAAB7GsD/AAAAAHsauP8AAAAAexqw/wAAAAB7Gqj/AAAAAHsaoP8AAAAAexqY /wAAAAB7GpD/AAAAAHsaiP8AAAAAexqA/wAAAAB7Gnj/AAAAAHsacP8AAAAAexpo/wAAAAB7GmD/ AAAAAIUAAAAOAAAAdwAAACAAAAB7Clj/AAAAAL+hAAAAAAAABwEAAHD///+3AgAAEAAAAIUAAAAQ AAAAtwEAAAcAAABjGmj/AAAAAHlhUAAAAAAAYxps/wAAAACFAAAACAAAAGcAAAAgAAAAdwAAACAA AAC/pAAAAAAAAAcEAABY////v2EAAAAAAAAYAgAAAAAAAAAAAAAAAAAAvwMAAAAAAAC3BQAAqAAA AIUAAAAZAAAAtwAAAAAAAACVAAAAAAAAAAQAAAAEAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAABHUEwA/v///xAAAAAAAAAAAXpSAAh8CwEMAAAAGAAAABgAAAAA AAAAAAAAAGgBAAAAAAAAAAAAABwAAAA0AAAAAAAAAAAAAADwAgAAAAAAAAAAAAAAAAAAHAAAAFQA AAAAAAAAAAAAAHANAAAAAAAAAAAAAAAAAAAcAAAAdAAAAAAAAAAAAAAAcAEAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAAAAAUA4AIAAAAAAAAAAAAAAAAAAAYBAAAAAAcA WAEAAAAAAAAAAAAAAAAAAA0BAAAAAAcAaAEAAAAAAAAAAAAAAAAAAAAAAAADAAMAAAAAAAAAAAAA AAAAAAAAAAAAAAADAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAcAAAAAAAAAAAAAAAAAAAAAAAAA AAADAAkAAAAAAAAAAAAAAAAAAAAAAKEAAAAQAAwAAAAAAAAAAAAAAAAAAAAAAEEAAAAQAA0AAAAA AAAAAAAAAAAAAAAAAF8AAAAQAAcAAAAAAAAAAAAAAAAAAAAAAAcAAAAQAAMAAAAAAAAAAAAAAAAA AAAAAKoAAAAQAAUAAAAAAAAAAAAAAAAAAAAAAEoAAAAQAAkAAAAAAAAAAAAAAAAAAAAAADcAAAAQ AAsAAAAAAAAAAAAAAAAAAAAAADABAAAAAAAAAQAAAA4AAAC4AgAAAAAAAAEAAAAOAAAAuAEAAAAA AAABAAAADgAAAFgCAAAAAAAAAQAAAA4AAAAAAwAAAAAAAAEAAAAOAAAAoAMAAAAAAAABAAAADgAA AEgEAAAAAAAAAQAAAA4AAADoBAAAAAAAAAEAAAAOAAAAkAUAAAAAAAABAAAADgAAADAGAAAAAAAA AQAAAA4AAADYBgAAAAAAAAEAAAAOAAAAeAcAAAAAAAABAAAADgAAACAIAAAAAAAAAQAAAA4AAADA CAAAAAAAAAEAAAAOAAAAaAkAAAAAAAABAAAADgAAAAgKAAAAAAAAAQAAAA4AAACwCgAAAAAAAAEA AAAOAAAAUAsAAAAAAAABAAAADgAAAPgLAAAAAAAAAQAAAA4AAACYDAAAAAAAAAEAAAAOAAAAQA0A AAAAAAABAAAADgAAADgBAAAAAAAAAQAAAA4AAAAcAAAAAAAAAAEAAAAEAAAAOAAAAAAAAAABAAAA BQAAAFgAAAAAAAAAAQAAAAYAAAB4AAAAAAAAAAEAAAAHAAAAAC50ZXh0AGtwcm9iZV9zeXNfZXhp dF9ncm91cAAucmVsa3Byb2JlL3N5c19leGl0X2dyb3VwAHNjaGVkX21hcABfdmVyc2lvbgBrcmV0 cHJvYmVfc3lzX2V4ZWN2ZQBrcHJvYmVfX3N5c19leGVjdmUALnJlbGtyZXRwcm9iZS9zeXNfZXhl Y3ZlAC5yZWxrcHJvYmUvc3lzX2V4ZWN2ZQBfbGljZW5zZQBrcmV0cHJvYmVfc3lzX2Nsb25lAC5y ZWxrcmV0cHJvYmUvc3lzX2Nsb25lAC5yZWwuZWhfZnJhbWUAbWFwcy9zY2hlZAAuc3RydGFiAC5z eW10YWIATEJCMV8zAExCQjJfMQBMQkIyXzIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADvAAAAAwAAAAAAAAAAAAAAAAAA AAAAAAAwGAAAAAAAABUBAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAGAAAA AAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAACEAAAAB AAAABgAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAaAEAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAA AAAdAAAACQAAAAAAAAAAAAAAAAAAAAAAAACQFgAAAAAAABAAAAAAAAAAEAAAAAMAAAAIAAAAAAAA ABAAAAAAAAAAwgAAAAEAAAAGAAAAAAAAAAAAAAAAAAAAqAEAAAAAAADwAgAAAAAAAAAAAAAAAAAA CAAAAAAAAAAAAAAAAAAAAL4AAAAJAAAAAAAAAAAAAAAAAAAAAAAAAKAWAAAAAAAAEAAAAAAAAAAQ AAAABQAAAAgAAAAAAAAAEAAAAAAAAACPAAAAAQAAAAYAAAAAAAAAAAAAAAAAAACYBAAAAAAAAHAN AAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAiwAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAsBYA AAAAAAAwAQAAAAAAABAAAAAHAAAACAAAAAAAAAAQAAAAAAAAAHYAAAABAAAABgAAAAAAAAAAAAAA AAAAAAgSAAAAAAAAcAEAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAByAAAACQAAAAAAAAAA AAAAAAAAAAAAAADgFwAAAAAAABAAAAAAAAAAEAAAAAkAAAAIAAAAAAAAABAAAAAAAAAA5AAAAAEA AAADAAAAAAAAAAAAAAAAAAAAeBMAAAAAAAAYAQAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAA AKIAAAABAAAAAwAAAAAAAAAAAAAAAAAAAJAUAAAAAAAABAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA AAAAAAAAAABCAAAAAQAAAAMAAAAAAAAAAAAAAAAAAACUFAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAE AAAAAAAAAAAAAAAAAAAA2gAAAAEAAAACAAAAAAAAAAAAAAAAAAAAmBQAAAAAAACQAAAAAAAAAAAA AAAAAAAACAAAAAAAAAAAAAAAAAAAANYAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAPAXAAAAAAAAQAAA AAAAAAAQAAAADgAAAAgAAAAAAAAAEAAAAAAAAAD3AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAoFQAA AAAAAGgBAAAAAAAAAQAAAAgAAAAIAAAAAAAAABgAAAAAAAAA --000000000000fe04640577f56f78--