From 77a7c1840cf3a2cd02bc0517c78cb388a9f303ae Mon Sep 17 00:00:00 2001 From: Martin Levesque Date: Wed, 1 Apr 2026 15:23:05 +0000 Subject: [PATCH 01/12] feat: add support for systemstack unwinding through sp & bp --- interpreter/golabels/runtime_data.go | 15 ++ nativeunwind/elfunwindinfo/elfgopclntab.go | 9 +- .../stackdeltatypes/stackdeltatypes.go | 7 + processmanager/execinfomanager/manager.go | 8 +- support/ebpf/errors.h | 3 +- support/ebpf/go_runtime.h | 57 +++++ support/ebpf/interpreter_dispatcher.ebpf.c | 44 +--- support/ebpf/native_stack_trace.ebpf.c | 209 ++++++++++++++++++ support/ebpf/tsd.h | 1 + support/ebpf/types.h | 6 + support/types.go | 3 + support/types_def.go | 1 + tools/gooffsets/main.go | 44 +++- 13 files changed, 355 insertions(+), 52 deletions(-) create mode 100644 support/ebpf/go_runtime.h diff --git a/interpreter/golabels/runtime_data.go b/interpreter/golabels/runtime_data.go index 985dd4b21..986977352 100644 --- a/interpreter/golabels/runtime_data.go +++ b/interpreter/golabels/runtime_data.go @@ -27,16 +27,31 @@ func getOffsets(vers string) support.GoLabelsOffsets { Hmap_log2_bucket_count: 0, // https://github.com/golang/go/blob/6885bad7dd86880be6929c0/src/runtime/map.go#L118 Hmap_buckets: 0, + // Absolute offsets from g struct start for g.sched (gobuf) fields. + // g.sched starts at offset 56 (immediately after g.m at offset 48, pointer 8 bytes). + // gobuf.sp is at offset 0 within gobuf - stable across all supported Go versions. + // https://github.com/golang/go/blob/80e2e474b8d9124d03b744f/src/runtime/runtime2.go#L325 + Sched_sp: 56, + // Within gobuf: bp is at +48 (Go <= 1.24) or +40 (Go >= 1.25, gobuf.ret removed). + // Default: absolute offset = 56 + 48 = 104 for Go <= 1.24. + // https://github.com/golang/go/blob/339c903a75c3fe936fb4ed6c355d15e6081d6af3/src/runtime/runtime2.go#L317 + Sched_bp: 104, } // Version enforcement takes place in the Loader function. if version.Compare(vers, "go1.26") >= 0 { offsets.Curg = 184 offsets.Labels = 352 + // gobuf.ret removed in Go 1.25: gobuf.bp shifts from +48 to +40, lr from +40 to +32. + // https://github.com/golang/go/blob/56ebf80e57db9f61981fc0636fc6419dc6f68eda/src/runtime/runtime2.go#L315 + offsets.Sched_bp = 96 // 56 + 40 return offsets } else if version.Compare(vers, "go1.25") >= 0 { offsets.Curg = 184 offsets.Labels = 344 + // gobuf.ret removed in Go 1.25: gobuf.bp shifts from +48 to +40. + // https://github.com/golang/go/blob/56ebf80e57db9f61981fc0636fc6419dc6f68eda/src/runtime/runtime2.go#L315 + offsets.Sched_bp = 96 // 56 + 40 return offsets } else if version.Compare(vers, "go1.24") >= 0 { offsets.Labels = 352 diff --git a/nativeunwind/elfunwindinfo/elfgopclntab.go b/nativeunwind/elfunwindinfo/elfgopclntab.go index 8fec6ad75..ab65cdc8f 100644 --- a/nativeunwind/elfunwindinfo/elfgopclntab.go +++ b/nativeunwind/elfunwindinfo/elfgopclntab.go @@ -31,10 +31,11 @@ var goFunctionsStopDelta = map[string]*sdtypes.UnwindInfo{ "runtime.mstart": &sdtypes.UnwindInfoStop, // topmost for the go runtime main stacks "runtime.goexit": &sdtypes.UnwindInfoStop, // return address in all goroutine stacks - // stack switch functions that would need special handling for further unwinding. - // See PF-1101. - "runtime.mcall": &sdtypes.UnwindInfoStop, - "runtime.systemstack": &sdtypes.UnwindInfoStop, + // Stack switch functions: when encountered during unwinding on the g0 (system) stack, + // the unwinder crosses back to the goroutine stack by reading the goroutine's saved + // context (g.sched.sp and g.sched.bp). See UNWIND_COMMAND_GOSTACK. + "runtime.mcall": &sdtypes.UnwindInfoGoStack, + "runtime.systemstack": &sdtypes.UnwindInfoGoStack, // signal return frame "runtime.sigreturn": &sdtypes.UnwindInfoSignal, diff --git a/nativeunwind/stackdeltatypes/stackdeltatypes.go b/nativeunwind/stackdeltatypes/stackdeltatypes.go index 334e9fa75..d4574c4e5 100644 --- a/nativeunwind/stackdeltatypes/stackdeltatypes.go +++ b/nativeunwind/stackdeltatypes/stackdeltatypes.go @@ -46,6 +46,13 @@ var UnwindInfoFramePointer = UnwindInfo{Flags: support.UnwindFlagCommand, Param: support.UnwindCommandFramePointer, } +// UnwindInfoGoStack is the stack delta info for Go stack-switch functions +// (runtime.systemstack and runtime.mcall). When encountered during unwinding, +// the unwinder crosses from the g0 system stack to the goroutine stack by +// reading the goroutine's saved context (g.sched.sp and g.sched.bp). +var UnwindInfoGoStack = UnwindInfo{Flags: support.UnwindFlagCommand, + Param: support.UnwindCommandGoStack} + // UnwindInfoLR contains the description to unwind ARM64 function without a frame (LR only) var UnwindInfoLR = UnwindInfo{ BaseReg: support.UnwindRegSp, diff --git a/processmanager/execinfomanager/manager.go b/processmanager/execinfomanager/manager.go index cf6c5364d..0f5472bc4 100644 --- a/processmanager/execinfomanager/manager.go +++ b/processmanager/execinfomanager/manager.go @@ -126,9 +126,11 @@ func NewExecutableInfoManager( } interpreterLoaders = append(interpreterLoaders, apmint.Loader) - if includeTracers.Has(types.Labels) { - interpreterLoaders = append(interpreterLoaders, golabels.Loader) - } + + // Always register golabels loader: the native unwinder needs Go runtime + // offsets (m, curg, g.sched) to cross systemstack/mcall stack boundaries, + // regardless of whether custom labels extraction is enabled. + interpreterLoaders = append(interpreterLoaders, golabels.Loader) deferredFileIDs, err := lru.NewSynced[host.FileID, libpf.Void](deferredFileIDSize, func(id host.FileID) uint32 { return uint32(id) }) diff --git a/support/ebpf/errors.h b/support/ebpf/errors.h index 0da717277..532d83e26 100644 --- a/support/ebpf/errors.h +++ b/support/ebpf/errors.h @@ -160,8 +160,7 @@ typedef enum ErrorCode { // Native: Unable to read the IRQ stack link ERR_NATIVE_CHASE_IRQ_STACK_LINK = 4010, - // Native: Unexpectedly encountered a kernel mode pointer while attempting to unwind user-mode - // stack + // Native: Unexpectedly encountered a kernel mode pointer while attempting to unwind user-mode stack ERR_NATIVE_UNEXPECTED_KERNEL_ADDRESS = 4011, // Native: Unable to locate the PID page mapping for the current instruction pointer diff --git a/support/ebpf/go_runtime.h b/support/ebpf/go_runtime.h new file mode 100644 index 000000000..83ff3e088 --- /dev/null +++ b/support/ebpf/go_runtime.h @@ -0,0 +1,57 @@ +// This file contains helpers for reading Go runtime structures from eBPF programs. + +#ifndef OPTI_GO_RUNTIME_H +#define OPTI_GO_RUNTIME_H + +#include "bpfdefs.h" +#include "tsd.h" +#include "types.h" + +// get_m_ptr reads the M (machine/OS thread) pointer for the current goroutine. +// It does so by reading the G (goroutine) pointer from thread-local storage, +// then following the g.m pointer. +// +// On aarch64, when tls_offset is 0 (non-CGO binaries), the G pointer is taken +// from the r28 register saved in the unwind state instead of TLS. +static EBPF_INLINE void *get_m_ptr(struct GoLabelsOffsets *offs, UnwindState *state) +{ +#if defined(__x86_64__) + (void)state; +#endif + u64 g_addr = 0; + void *tls_base = NULL; + if (tsd_get_base(&tls_base) < 0) { + DEBUG_PRINT("cl: failed to get tsd base; can't read m_ptr"); + return NULL; + } + DEBUG_PRINT( + "cl: read tsd_base at 0x%lx, g offset: %d", (unsigned long)tls_base, offs->tls_offset); + + if (offs->tls_offset == 0) { +#if defined(__aarch64__) + // On aarch64 for !iscgo programs the g is only stored in r28 register. + g_addr = state->r28; +#elif defined(__x86_64__) + DEBUG_PRINT("cl: TLS offset for g pointer missing for amd64"); + return NULL; +#endif + } + + if (g_addr == 0) { + if (bpf_probe_read_user(&g_addr, sizeof(void *), (void *)((s64)tls_base + offs->tls_offset))) { + DEBUG_PRINT("cl: failed to read g_addr, tls_base(%lx)", (unsigned long)tls_base); + return NULL; + } + } + + DEBUG_PRINT("cl: reading m_ptr_addr at 0x%lx + 0x%x", (unsigned long)g_addr, offs->m_offset); + void *m_ptr_addr; + if (bpf_probe_read_user(&m_ptr_addr, sizeof(void *), (void *)(g_addr + offs->m_offset))) { + DEBUG_PRINT("cl: failed m_ptr_addr"); + return NULL; + } + DEBUG_PRINT("cl: m_ptr_addr 0x%lx", (unsigned long)m_ptr_addr); + return m_ptr_addr; +} + +#endif // OPTI_GO_RUNTIME_H \ No newline at end of file diff --git a/support/ebpf/interpreter_dispatcher.ebpf.c b/support/ebpf/interpreter_dispatcher.ebpf.c index ae9a1c9a7..0e3fd1acd 100644 --- a/support/ebpf/interpreter_dispatcher.ebpf.c +++ b/support/ebpf/interpreter_dispatcher.ebpf.c @@ -3,6 +3,7 @@ // perf event and will call the appropriate tracer for a given process #include "bpfdefs.h" +#include "go_runtime.h" #include "kernel.h" #include "tracemgmt.h" #include "tsd.h" @@ -137,44 +138,6 @@ struct apm_int_procs_t { // filter_error_frames is set during load time. BPF_RODATA_VAR(bool, filter_error_frames, false) -static EBPF_INLINE void *get_m_ptr(struct GoLabelsOffsets *offs, UNUSED UnwindState *state) -{ - u64 g_addr = 0; - void *tls_base = NULL; - if (tsd_get_base(&tls_base) < 0) { - DEBUG_PRINT("cl: failed to get tsd base; can't read m_ptr"); - return NULL; - } - DEBUG_PRINT( - "cl: read tsd_base at 0x%lx, g offset: %d", (unsigned long)tls_base, offs->tls_offset); - - if (offs->tls_offset == 0) { -#if defined(__aarch64__) - // On aarch64 for !iscgo programs the g is only stored in r28 register. - g_addr = state->r28; -#elif defined(__x86_64__) - DEBUG_PRINT("cl: TLS offset for g pointer missing for amd64"); - return NULL; -#endif - } - - if (g_addr == 0) { - if (bpf_probe_read_user(&g_addr, sizeof(void *), (void *)((s64)tls_base + offs->tls_offset))) { - DEBUG_PRINT("cl: failed to read g_addr, tls_base(%lx)", (unsigned long)tls_base); - return NULL; - } - } - - DEBUG_PRINT("cl: reading m_ptr_addr at 0x%lx + 0x%x", (unsigned long)g_addr, offs->m_offset); - void *m_ptr_addr; - if (bpf_probe_read_user(&m_ptr_addr, sizeof(void *), (void *)(g_addr + offs->m_offset))) { - DEBUG_PRINT("cl: failed m_ptr_addr"); - return NULL; - } - DEBUG_PRINT("cl: m_ptr_addr 0x%lx", (unsigned long)m_ptr_addr); - return m_ptr_addr; -} - static EBPF_INLINE void maybe_add_go_custom_labels(struct pt_regs *ctx, PerCPURecord *record) { u32 pid = record->trace.pid; @@ -237,8 +200,9 @@ static EBPF_INLINE void maybe_add_apm_info(Trace *trace) DEBUG_PRINT("APM corr ptr should be at 0x%llx", tsd_base + proc->tls_offset); void *apm_corr_buf_ptr; - if (bpf_probe_read_user( - &apm_corr_buf_ptr, sizeof(apm_corr_buf_ptr), (void *)(tsd_base + proc->tls_offset))) { + if ( + bpf_probe_read_user( + &apm_corr_buf_ptr, sizeof(apm_corr_buf_ptr), (void *)(tsd_base + proc->tls_offset))) { increment_metric(metricID_UnwindApmIntErrReadCorrBufPtr); DEBUG_PRINT("Failed to read APM correlation buffer pointer"); return; diff --git a/support/ebpf/native_stack_trace.ebpf.c b/support/ebpf/native_stack_trace.ebpf.c index dc3049f98..7cbf1b560 100644 --- a/support/ebpf/native_stack_trace.ebpf.c +++ b/support/ebpf/native_stack_trace.ebpf.c @@ -1,6 +1,9 @@ #include "bpfdefs.h" +#include "extmaps.h" #include "frametypes.h" +#include "go_runtime.h" #include "tracemgmt.h" +#include "tsd.h" #include "types.h" // with_debug_output is set during load time. @@ -372,6 +375,106 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) goto err_native_pc_read; } goto frame_ok; + case UNWIND_COMMAND_GOSTACK: { + // Cross the Go stack-switch boundary: recover the goroutine's saved context + // from g.sched (set by runtime.systemstack or runtime.mcall when they + // switched from the goroutine stack to the g0 system stack). + // + // gosave_systemstack_switch (asm_amd64.s) builds gobuf as follows: + // + // MOVQ $runtime.systemstack_switch+8(SB), R9 + // MOVQ R9, gobuf_pc(R14) // gobuf.pc = UNDEF marker - useless for unwinding + // + // LEAQ 8(SP), R9 + // MOVQ R9, gobuf_sp(R14) // gobuf.sp = SP+8 + // + // MOVQ BP, gobuf_bp(R14) // gobuf.bp = BP of systemstack's caller + // + // Stack layout inside gosave_systemstack_switch at the time of LEAQ: + // [SP+0] = RA back into systemstack (pushed by CALL gosave, useless) + // [SP+8] = RA caller of systemstack (pushed by CALL systemstack) + // + // systemstack has no PUSH RBP prologue and gosave_systemstack_switch is + // NOFRAME, so BP is unchanged and holds the frame pointer of systemstack's + // caller. + // + // We want to resume unwinding at the caller of systemstack, so: + // pc = *(gobuf.sp) = RA caller of systemstack + // sp = gobuf.sp + 8 = beyond the consumed RA slot (equivalent of RET's SP+=8) + // fp = gobuf.bp = frame pointer of the caller + // + // gobuf.pc (systemstack_switch+8 = UNDEF) is intentionally ignored: it is a + // synthetic marker for Go's stack scanner and scheduler, not a real return address. + // + // https://github.com/golang/go/blob/917949cc1d16c652cb09ba369718f45e5d814d8f/src/runtime/asm_amd64.s#L886 + PerCPURecord *cpu_record = get_per_cpu_record(); + if (!cpu_record) { + DEBUG_PRINT("GOSTACK: no per-CPU record, stopping"); + *stop = true; + return ERR_OK; + } + u32 pid = cpu_record->trace.pid; + GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); + if (!go_offs) { + DEBUG_PRINT("GOSTACK: no Go offsets for this process, stopping"); + *stop = true; + return ERR_OK; + } + if (!go_offs->sched_sp) { + DEBUG_PRINT("GOSTACK: sched offsets not configured, stopping"); + *stop = true; + return ERR_OK; + } + void *m_ptr = get_m_ptr(go_offs, state); + if (!m_ptr) { + DEBUG_PRINT("GOSTACK: failed to get m_ptr, stopping"); + *stop = true; + return ERR_OK; + } + u64 curg = 0; + if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + go_offs->curg))) { + DEBUG_PRINT("GOSTACK: failed to read curg, stopping"); + *stop = true; + return ERR_OK; + } + if (!curg) { + DEBUG_PRINT("GOSTACK: no user goroutine (curg == NULL), stopping"); + *stop = true; + return ERR_OK; + } + u64 sched_sp = 0, sched_bp = 0; + if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { + DEBUG_PRINT("GOSTACK: failed to read sched_sp, stopping"); + *stop = true; + return ERR_OK; + } + if (!sched_sp) { + DEBUG_PRINT("GOSTACK: gobuf not populated (sched_sp==0), stopping"); + *stop = true; + return ERR_OK; + } + if (bpf_probe_read_user(&sched_bp, sizeof(sched_bp), (void *)(curg + go_offs->sched_bp))) { + DEBUG_PRINT("GOSTACK: failed to read sched_bp, stopping"); + *stop = true; + return ERR_OK; + } + u64 caller_pc = 0; + if (bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)sched_sp)) { + DEBUG_PRINT("GOSTACK: failed to read caller PC from goroutine stack, stopping"); + *stop = true; + return ERR_OK; + } + DEBUG_PRINT( + "GOSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", + (unsigned long)caller_pc, + (unsigned long)(sched_sp + 8), + (unsigned long)sched_bp); + state->pc = caller_pc; + state->sp = sched_sp + 8; + state->fp = sched_bp; + unwinder_mark_nonleaf_frame(state); + goto frame_ok; + } default: return ERR_UNREACHABLE; } } else { @@ -475,6 +578,112 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) goto err_native_pc_read; } goto frame_ok; + case UNWIND_COMMAND_GOSTACK: { + // Cross the Go stack-switch boundary: recover the goroutine's saved context + // from g.sched (set by runtime.systemstack or runtime.mcall when they + // switched from the goroutine stack to the g0 system stack). + // + // gosave_systemstack_switch (asm_arm64.s) builds gobuf as follows: + // + // MOVD $runtime.systemstack_switch(SB), R0 + // ADD $8, R0 // get past prologue + // MOVD R0, (g_sched+gobuf_pc)(g) // gobuf.pc = UNDEF marker - useless for unwinding + // + // MOVD RSP, R0 + // MOVD R0, (g_sched+gobuf_sp)(g) // gobuf.sp = RSP + // + // MOVD R29, (g_sched+gobuf_bp)(g) // gobuf.bp = FP of systemstack's caller + // + // MOVD $0, (g_sched+gobuf_lr)(g) // gobuf.lr = 0 (explicitly zeroed, never usable) + // + // systemstack on arm64 has a frame pointer prologue: + // STP (FP, LR), -16(SP)! // SP -= 16, [SP+0] = caller FP, [SP+8] = LR (RA caller) + // + // Stack layout inside gosave_systemstack_switch at the time of MOVD RSP: + // [SP+0] = saved FP of systemstack's caller (pushed by STP, useless) + // [SP+8] = LR = RA caller of systemstack (pushed by STP) + // + // We want to resume unwinding at the caller of systemstack, so: + // pc = *(gobuf.sp + 8) = LR saved by STP = RA caller of systemstack + // sp = gobuf.sp + 16 = beyond the consumed FP+LR slot (STP allocated 16 bytes) + // fp = gobuf.bp = frame pointer of the caller + // + // gobuf.pc (systemstack_switch = UNDEF) is intentionally ignored: it is a + // synthetic marker for Go's stack scanner and scheduler, not a real return address. + // + // https://github.com/golang/go/blob/5a928e5a37dc632bbb1794fe0e0846e6352be8b2/src/runtime/asm_arm64.s#L1124 + PerCPURecord *cpu_record = get_per_cpu_record(); + if (!cpu_record) { + DEBUG_PRINT("GOSTACK: no per-CPU record, stopping"); + *stop = true; + return ERR_OK; + } + u32 pid = cpu_record->trace.pid; + GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); + if (!go_offs) { + DEBUG_PRINT("GOSTACK: no Go offsets for this process, stopping"); + *stop = true; + return ERR_OK; + } + if (!go_offs->sched_sp) { + DEBUG_PRINT("GOSTACK: sched offsets not configured, stopping"); + *stop = true; + return ERR_OK; + } + void *m_ptr = get_m_ptr(go_offs, state); + if (!m_ptr) { + DEBUG_PRINT("GOSTACK: failed to get m_ptr, stopping"); + *stop = true; + return ERR_OK; + } + u64 curg = 0; + if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + go_offs->curg))) { + DEBUG_PRINT("GOSTACK: failed to read curg, stopping"); + *stop = true; + return ERR_OK; + } + if (!curg) { + DEBUG_PRINT("GOSTACK: no user goroutine (curg == NULL), stopping"); + *stop = true; + return ERR_OK; + } + u64 sched_sp = 0, sched_bp = 0; + if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { + DEBUG_PRINT("GOSTACK: failed to read sched_sp, stopping"); + *stop = true; + return ERR_OK; + } + if (!sched_sp) { + DEBUG_PRINT("GOSTACK: gobuf not populated (sched_sp==0), stopping"); + *stop = true; + return ERR_OK; + } + if (bpf_probe_read_user(&sched_bp, sizeof(sched_bp), (void *)(curg + go_offs->sched_bp))) { + DEBUG_PRINT("GOSTACK: failed to read sched_bp, stopping"); + *stop = true; + return ERR_OK; + } + u64 caller_pc = 0; + if (bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)(sched_sp + 8))) { + DEBUG_PRINT("GOSTACK: failed to read caller PC from goroutine stack, stopping"); + *stop = true; + return ERR_OK; + } + DEBUG_PRINT( + "GOSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", + (unsigned long)caller_pc, + (unsigned long)(sched_sp + 16), + (unsigned long)sched_bp); + state->pc = normalize_pac_ptr(caller_pc); + state->sp = sched_sp + 16; + state->fp = sched_bp; + state->lr = 0; + // Update r28 (the g register on aarch64) to point to curg so that + // subsequent get_m_ptr calls use the correct goroutine pointer. + state->r28 = curg; + unwinder_mark_nonleaf_frame(state); + goto frame_ok; + } default: return ERR_UNREACHABLE; } } diff --git a/support/ebpf/tsd.h b/support/ebpf/tsd.h index 28accaf76..3f352120f 100644 --- a/support/ebpf/tsd.h +++ b/support/ebpf/tsd.h @@ -2,6 +2,7 @@ #define OPTI_TSD_H #include "bpfdefs.h" +#include "tracemgmt.h" // tpbase_offset is declared in native_stack_trace.ebpf.c extern u64 tpbase_offset; diff --git a/support/ebpf/types.h b/support/ebpf/types.h index 187caa82d..318bf2255 100644 --- a/support/ebpf/types.h +++ b/support/ebpf/types.h @@ -930,6 +930,8 @@ typedef struct StackDelta { #define UNWIND_COMMAND_SIGNAL 3 // Unwind using standard frame pointer #define UNWIND_COMMAND_FRAME_POINTER 4 +// Cross Go stack switch boundary (systemstack/mcall) using goroutine saved context +#define UNWIND_COMMAND_GOSTACK 5 // StackDeltaPageKey is the look up key for stack delta page map. typedef struct StackDeltaPageKey { @@ -1048,6 +1050,10 @@ typedef struct GoLabelsOffsets { u32 hmap_log2_bucket_count; u32 hmap_buckets; s32 tls_offset; + // Offsets within g.sched (gobuf) for goroutine saved context, used to cross + // the systemstack/mcall boundary during stack unwinding. + u32 sched_sp; // offset of g.sched.sp from the start of g + u32 sched_bp; // offset of g.sched.bp from the start of g } GoLabelsOffsets; #endif // OPTI_TYPES_H diff --git a/support/types.go b/support/types.go index 34a94bde5..58b313d14 100644 --- a/support/types.go +++ b/support/types.go @@ -200,6 +200,8 @@ type GoLabelsOffsets struct { Hmap_log2_bucket_count uint32 Hmap_buckets uint32 Tls_offset int32 + Sched_sp uint32 + Sched_bp uint32 } type HotspotProcInfo struct { Codecache_start uint64 @@ -363,6 +365,7 @@ const ( UnwindCommandPLT int32 = 0x2 UnwindCommandSignal int32 = 0x3 UnwindCommandFramePointer int32 = 0x4 + UnwindCommandGoStack int32 = 0x5 UnwindDerefMask int32 = 0x7 UnwindDerefMultiplier int32 = 0x8 diff --git a/support/types_def.go b/support/types_def.go index 760b263f2..fc2f80a4e 100644 --- a/support/types_def.go +++ b/support/types_def.go @@ -170,6 +170,7 @@ const ( UnwindCommandPLT int32 = C.UNWIND_COMMAND_PLT UnwindCommandSignal int32 = C.UNWIND_COMMAND_SIGNAL UnwindCommandFramePointer int32 = C.UNWIND_COMMAND_FRAME_POINTER + UnwindCommandGoStack int32 = C.UNWIND_COMMAND_GOSTACK // UnwindDeref handling from the C header file UnwindDerefMask int32 = C.UNWIND_DEREF_MASK diff --git a/tools/gooffsets/main.go b/tools/gooffsets/main.go index a327e5c96..a964745fc 100644 --- a/tools/gooffsets/main.go +++ b/tools/gooffsets/main.go @@ -19,6 +19,8 @@ type goLabelsOffsets struct { hmapCount uint32 hmapLog2BucketCount uint32 hmapBuckets uint32 + schedSp uint32 + schedBp uint32 } func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { @@ -35,6 +37,13 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { if g == nil { return nil, errors.New("type runtime.g not found") } + // ReadChildTypeAndOffset repositions the reader to the field's type entry, so + // we re-seek to g.Offset before each sequential read from g's children. + r.Seek(g.Offset) + _, err = r.Next() + if err != nil { + return nil, err + } mPType, mOffset, err := ReadChildTypeAndOffset(r, "m") if err != nil { return nil, err @@ -43,16 +52,39 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { return nil, errors.New("type of m in runtime.g is not a pointer") } - mType, err := ReadType(r, mPType) + // Read g.sched.sp and g.sched.pc: sched is a gobuf struct embedded in g. + r.Seek(g.Offset) + _, err = r.Next() if err != nil { return nil, err } - - r.Seek(mType.Offset) + schedType, schedOffset, err := ReadChildTypeAndOffset(r, "sched") + if err != nil { + return nil, err + } + r.Seek(schedType.Offset) + _, err = r.Next() + if err != nil { + return nil, err + } + _, schedSpOff, err := ReadChildTypeAndOffset(r, "sp") + if err != nil { + return nil, err + } + r.Seek(schedType.Offset) _, err = r.Next() if err != nil { return nil, err } + _, schedBpOff, err := ReadChildTypeAndOffset(r, "bp") + if err != nil { + return nil, err + } + + mType, err := ReadType(r, mPType) + if err != nil { + return nil, err + } r.Seek(mType.Offset) _, err = r.Next() @@ -86,6 +118,8 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { mOffset: uint32(mOffset), curg: uint32(curgOffset), labels: uint32(labelsOffset), + schedSp: uint32(schedOffset + schedSpOff), + schedBp: uint32(schedOffset + schedBpOff), }, nil } @@ -119,6 +153,8 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { hmapCount: uint32(countOffset), hmapLog2BucketCount: uint32(bOffset), hmapBuckets: uint32(bucketsOffset), + schedSp: uint32(schedOffset + schedSpOff), + schedBp: uint32(schedOffset + schedBpOff), }, nil } @@ -163,5 +199,7 @@ func main() { fmt.Printf("\thmap_count: %d,\n", offs.hmapCount) fmt.Printf("\thmap_log2_bucket_count: %d,\n", offs.hmapLog2BucketCount) fmt.Printf("\thmap_buckets: %d,\n", offs.hmapBuckets) + fmt.Printf("\tsched_sp: %d,\n", offs.schedSp) + fmt.Printf("\tsched_bp: %d,\n", offs.schedBp) fmt.Println("},") } From b2e943dd441c89d8f14449f6f43a235f0d9d111a Mon Sep 17 00:00:00 2001 From: Martin Levesque Date: Wed, 1 Apr 2026 18:34:08 +0200 Subject: [PATCH 02/12] fix: wrong memory mapping --- support/ebpf/native_stack_trace.ebpf.c | 56 ++++++++++++++------------ 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/support/ebpf/native_stack_trace.ebpf.c b/support/ebpf/native_stack_trace.ebpf.c index 7cbf1b560..17e44181f 100644 --- a/support/ebpf/native_stack_trace.ebpf.c +++ b/support/ebpf/native_stack_trace.ebpf.c @@ -392,16 +392,17 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) // // Stack layout inside gosave_systemstack_switch at the time of LEAQ: // [SP+0] = RA back into systemstack (pushed by CALL gosave, useless) - // [SP+8] = RA caller of systemstack (pushed by CALL systemstack) + // [SP+8] = old RBP of caller (pushed by systemstack's PUSH RBP prologue) + // [SP+16] = RA caller of systemstack (pushed by CALL systemstack) // - // systemstack has no PUSH RBP prologue and gosave_systemstack_switch is - // NOFRAME, so BP is unchanged and holds the frame pointer of systemstack's - // caller. + // NOTE: Go's linker adds PUSH RBP + MOVQ RSP,RBP to systemstack even though + // it is declared with $0 frame size (it is NOT NOFRAME). After the prologue: + // RBP = RSP_after_push = SP+8 inside gosave → gobuf.sp == gobuf.bp // // We want to resume unwinding at the caller of systemstack, so: - // pc = *(gobuf.sp) = RA caller of systemstack - // sp = gobuf.sp + 8 = beyond the consumed RA slot (equivalent of RET's SP+=8) - // fp = gobuf.bp = frame pointer of the caller + // pc = *(gobuf.sp + 8) = RA caller of systemstack + // sp = gobuf.sp + 16 = beyond consumed RBP+RA slots + // fp = *(gobuf.sp) = saved old RBP = frame pointer of the caller // // gobuf.pc (systemstack_switch+8 = UNDEF) is intentionally ignored: it is a // synthetic marker for Go's stack scanner and scheduler, not a real return address. @@ -442,7 +443,7 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) *stop = true; return ERR_OK; } - u64 sched_sp = 0, sched_bp = 0; + u64 sched_sp = 0; if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { DEBUG_PRINT("GOSTACK: failed to read sched_sp, stopping"); *stop = true; @@ -453,13 +454,13 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) *stop = true; return ERR_OK; } - if (bpf_probe_read_user(&sched_bp, sizeof(sched_bp), (void *)(curg + go_offs->sched_bp))) { - DEBUG_PRINT("GOSTACK: failed to read sched_bp, stopping"); + u64 caller_pc = 0, caller_fp = 0; + if (bpf_probe_read_user(&caller_fp, sizeof(caller_fp), (void *)sched_sp)) { + DEBUG_PRINT("GOSTACK: failed to read caller FP from goroutine stack, stopping"); *stop = true; return ERR_OK; } - u64 caller_pc = 0; - if (bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)sched_sp)) { + if (bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)(sched_sp + 8))) { DEBUG_PRINT("GOSTACK: failed to read caller PC from goroutine stack, stopping"); *stop = true; return ERR_OK; @@ -467,11 +468,11 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) DEBUG_PRINT( "GOSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", (unsigned long)caller_pc, - (unsigned long)(sched_sp + 8), - (unsigned long)sched_bp); + (unsigned long)(sched_sp + 16), + (unsigned long)caller_fp); state->pc = caller_pc; - state->sp = sched_sp + 8; - state->fp = sched_bp; + state->sp = sched_sp + 16; + state->fp = caller_fp; unwinder_mark_nonleaf_frame(state); goto frame_ok; } @@ -606,7 +607,12 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) // We want to resume unwinding at the caller of systemstack, so: // pc = *(gobuf.sp + 8) = LR saved by STP = RA caller of systemstack // sp = gobuf.sp + 16 = beyond the consumed FP+LR slot (STP allocated 16 bytes) - // fp = gobuf.bp = frame pointer of the caller + // fp = *(gobuf.sp + 0) = R29 saved by STP = frame pointer of systemstack's caller + // + // NOTE: gobuf.bp is NOT used for fp. On arm64, gosave_systemstack_switch saves R29 + // *after* the STP prologue has already updated R29 to systemstack's own frame base + // (i.e. gobuf.bp == gobuf.sp). The actual caller FP is the pre-STP R29 value, which + // the STP instruction saved at [gobuf.sp + 0]. // // gobuf.pc (systemstack_switch = UNDEF) is intentionally ignored: it is a // synthetic marker for Go's stack scanner and scheduler, not a real return address. @@ -647,7 +653,7 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) *stop = true; return ERR_OK; } - u64 sched_sp = 0, sched_bp = 0; + u64 sched_sp = 0; if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { DEBUG_PRINT("GOSTACK: failed to read sched_sp, stopping"); *stop = true; @@ -658,14 +664,14 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) *stop = true; return ERR_OK; } - if (bpf_probe_read_user(&sched_bp, sizeof(sched_bp), (void *)(curg + go_offs->sched_bp))) { - DEBUG_PRINT("GOSTACK: failed to read sched_bp, stopping"); + u64 caller_pc = 0, caller_fp = 0; + if (bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)(sched_sp + 8))) { + DEBUG_PRINT("GOSTACK: failed to read caller PC from goroutine stack, stopping"); *stop = true; return ERR_OK; } - u64 caller_pc = 0; - if (bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)(sched_sp + 8))) { - DEBUG_PRINT("GOSTACK: failed to read caller PC from goroutine stack, stopping"); + if (bpf_probe_read_user(&caller_fp, sizeof(caller_fp), (void *)sched_sp)) { + DEBUG_PRINT("GOSTACK: failed to read caller FP from goroutine stack, stopping"); *stop = true; return ERR_OK; } @@ -673,10 +679,10 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) "GOSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", (unsigned long)caller_pc, (unsigned long)(sched_sp + 16), - (unsigned long)sched_bp); + (unsigned long)caller_fp); state->pc = normalize_pac_ptr(caller_pc); state->sp = sched_sp + 16; - state->fp = sched_bp; + state->fp = caller_fp; state->lr = 0; // Update r28 (the g register on aarch64) to point to curg so that // subsequent get_m_ptr calls use the correct goroutine pointer. From 2f2182b11805817f47e27df6857e5218c91bf531 Mon Sep 17 00:00:00 2001 From: Martin Levesque Date: Wed, 1 Apr 2026 21:25:42 +0200 Subject: [PATCH 03/12] feat: add mcall support --- interpreter/golabels/runtime_data.go | 4 + nativeunwind/elfunwindinfo/elfgopclntab.go | 6 +- .../stackdeltatypes/stackdeltatypes.go | 18 +- support/ebpf/native_stack_trace.ebpf.c | 316 ++++++++++++++---- support/ebpf/types.h | 9 +- support/types.go | 4 +- support/types_def.go | 3 +- tools/gooffsets/main.go | 13 + 8 files changed, 300 insertions(+), 73 deletions(-) diff --git a/interpreter/golabels/runtime_data.go b/interpreter/golabels/runtime_data.go index 986977352..1f75bb5d6 100644 --- a/interpreter/golabels/runtime_data.go +++ b/interpreter/golabels/runtime_data.go @@ -32,7 +32,11 @@ func getOffsets(vers string) support.GoLabelsOffsets { // gobuf.sp is at offset 0 within gobuf - stable across all supported Go versions. // https://github.com/golang/go/blob/80e2e474b8d9124d03b744f/src/runtime/runtime2.go#L325 Sched_sp: 56, + // gobuf.pc is at offset 8 within gobuf — stable across all supported Go versions. + // Used by the mcall handler (systemstack ignores gobuf.pc which is a synthetic marker). + Sched_pc: 64, // 56 + 8 // Within gobuf: bp is at +48 (Go <= 1.24) or +40 (Go >= 1.25, gobuf.ret removed). + // Used by the mcall handler (systemstack reads FP from the stack frame instead). // Default: absolute offset = 56 + 48 = 104 for Go <= 1.24. // https://github.com/golang/go/blob/339c903a75c3fe936fb4ed6c355d15e6081d6af3/src/runtime/runtime2.go#L317 Sched_bp: 104, diff --git a/nativeunwind/elfunwindinfo/elfgopclntab.go b/nativeunwind/elfunwindinfo/elfgopclntab.go index ab65cdc8f..b075e5b4f 100644 --- a/nativeunwind/elfunwindinfo/elfgopclntab.go +++ b/nativeunwind/elfunwindinfo/elfgopclntab.go @@ -33,9 +33,9 @@ var goFunctionsStopDelta = map[string]*sdtypes.UnwindInfo{ // Stack switch functions: when encountered during unwinding on the g0 (system) stack, // the unwinder crosses back to the goroutine stack by reading the goroutine's saved - // context (g.sched.sp and g.sched.bp). See UNWIND_COMMAND_GOSTACK. - "runtime.mcall": &sdtypes.UnwindInfoGoStack, - "runtime.systemstack": &sdtypes.UnwindInfoGoStack, + // context from gobuf. + "runtime.systemstack": &sdtypes.UnwindInfoGoSystemstack, + "runtime.mcall": &sdtypes.UnwindInfoGoMcall, // signal return frame "runtime.sigreturn": &sdtypes.UnwindInfoSignal, diff --git a/nativeunwind/stackdeltatypes/stackdeltatypes.go b/nativeunwind/stackdeltatypes/stackdeltatypes.go index d4574c4e5..31ed12105 100644 --- a/nativeunwind/stackdeltatypes/stackdeltatypes.go +++ b/nativeunwind/stackdeltatypes/stackdeltatypes.go @@ -46,12 +46,18 @@ var UnwindInfoFramePointer = UnwindInfo{Flags: support.UnwindFlagCommand, Param: support.UnwindCommandFramePointer, } -// UnwindInfoGoStack is the stack delta info for Go stack-switch functions -// (runtime.systemstack and runtime.mcall). When encountered during unwinding, -// the unwinder crosses from the g0 system stack to the goroutine stack by -// reading the goroutine's saved context (g.sched.sp and g.sched.bp). -var UnwindInfoGoStack = UnwindInfo{Flags: support.UnwindFlagCommand, - Param: support.UnwindCommandGoStack} +// UnwindInfoGoSystemstack is the stack delta info for runtime.systemstack. +// When encountered during unwinding, the unwinder crosses from the g0 system +// stack to the goroutine stack by reading the saved FP and RA from the frame +// pointer prologue at gobuf.sp (which equals gobuf.bp on both amd64 and arm64). +var UnwindInfoGoSystemstack = UnwindInfo{Flags: support.UnwindFlagCommand, + Param: support.UnwindCommandGoSystemstack} + +// UnwindInfoGoMcall is the stack delta info for runtime.mcall. +// Unlike systemstack, mcall stores the caller's context directly in gobuf fields +// (gobuf.pc = real caller PC, gobuf.sp = caller's SP, gobuf.bp = caller's FP). +var UnwindInfoGoMcall = UnwindInfo{Flags: support.UnwindFlagCommand, + Param: support.UnwindCommandGoMcall} // UnwindInfoLR contains the description to unwind ARM64 function without a frame (LR only) var UnwindInfoLR = UnwindInfo{ diff --git a/support/ebpf/native_stack_trace.ebpf.c b/support/ebpf/native_stack_trace.ebpf.c index 17e44181f..0a307c114 100644 --- a/support/ebpf/native_stack_trace.ebpf.c +++ b/support/ebpf/native_stack_trace.ebpf.c @@ -375,10 +375,10 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) goto err_native_pc_read; } goto frame_ok; - case UNWIND_COMMAND_GOSTACK: { + case UNWIND_COMMAND_GO_SYSTEMSTACK: { // Cross the Go stack-switch boundary: recover the goroutine's saved context - // from g.sched (set by runtime.systemstack or runtime.mcall when they - // switched from the goroutine stack to the g0 system stack). + // from g.sched (set by runtime.systemstack when it switched from the + // goroutine stack to the g0 system stack). // // gosave_systemstack_switch (asm_amd64.s) builds gobuf as follows: // @@ -388,20 +388,24 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) // LEAQ 8(SP), R9 // MOVQ R9, gobuf_sp(R14) // gobuf.sp = SP+8 // - // MOVQ BP, gobuf_bp(R14) // gobuf.bp = BP of systemstack's caller + // MOVQ BP, gobuf_bp(R14) // gobuf.bp = BP (== gobuf.sp, see below) + // + // Although systemstack is declared with $0 frame size, Go's linker injects + // a frame pointer prologue (PUSH RBP + MOVQ RSP, RBP) for all non-NOFRAME + // functions that contain a CALL instruction. // // Stack layout inside gosave_systemstack_switch at the time of LEAQ: - // [SP+0] = RA back into systemstack (pushed by CALL gosave, useless) - // [SP+8] = old RBP of caller (pushed by systemstack's PUSH RBP prologue) - // [SP+16] = RA caller of systemstack (pushed by CALL systemstack) + // [SP+0] = RA back into systemstack (pushed by CALL gosave, useless) + // [SP+8] = saved old RBP of caller (pushed by systemstack's PUSH RBP prologue) + // [SP+16] = RA caller of systemstack (pushed by CALL systemstack) // - // NOTE: Go's linker adds PUSH RBP + MOVQ RSP,RBP to systemstack even though - // it is declared with $0 frame size (it is NOT NOFRAME). After the prologue: - // RBP = RSP_after_push = SP+8 inside gosave → gobuf.sp == gobuf.bp + // After PUSH RBP + MOVQ RSP, RBP in systemstack's prologue: + // RBP = RSP_after_push = SP+8 inside gosave + // So gobuf.bp == gobuf.sp — both point to the saved old RBP slot. // // We want to resume unwinding at the caller of systemstack, so: // pc = *(gobuf.sp + 8) = RA caller of systemstack - // sp = gobuf.sp + 16 = beyond consumed RBP+RA slots + // sp = gobuf.sp + 16 = beyond consumed old-RBP + RA slots // fp = *(gobuf.sp) = saved old RBP = frame pointer of the caller // // gobuf.pc (systemstack_switch+8 = UNDEF) is intentionally ignored: it is a @@ -410,63 +414,63 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) // https://github.com/golang/go/blob/917949cc1d16c652cb09ba369718f45e5d814d8f/src/runtime/asm_amd64.s#L886 PerCPURecord *cpu_record = get_per_cpu_record(); if (!cpu_record) { - DEBUG_PRINT("GOSTACK: no per-CPU record, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: no per-CPU record, stopping"); *stop = true; return ERR_OK; } u32 pid = cpu_record->trace.pid; GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); if (!go_offs) { - DEBUG_PRINT("GOSTACK: no Go offsets for this process, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: no Go offsets for this process, stopping"); *stop = true; return ERR_OK; } if (!go_offs->sched_sp) { - DEBUG_PRINT("GOSTACK: sched offsets not configured, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: sched offsets not configured, stopping"); *stop = true; return ERR_OK; } void *m_ptr = get_m_ptr(go_offs, state); if (!m_ptr) { - DEBUG_PRINT("GOSTACK: failed to get m_ptr, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: failed to get m_ptr, stopping"); *stop = true; return ERR_OK; } u64 curg = 0; if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + go_offs->curg))) { - DEBUG_PRINT("GOSTACK: failed to read curg, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: failed to read curg, stopping"); *stop = true; return ERR_OK; } if (!curg) { - DEBUG_PRINT("GOSTACK: no user goroutine (curg == NULL), stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: no user goroutine (curg == NULL), stopping"); *stop = true; return ERR_OK; } u64 sched_sp = 0; if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { - DEBUG_PRINT("GOSTACK: failed to read sched_sp, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: failed to read sched_sp, stopping"); *stop = true; return ERR_OK; } if (!sched_sp) { - DEBUG_PRINT("GOSTACK: gobuf not populated (sched_sp==0), stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: gobuf not populated (sched_sp==0), stopping"); *stop = true; return ERR_OK; } u64 caller_pc = 0, caller_fp = 0; if (bpf_probe_read_user(&caller_fp, sizeof(caller_fp), (void *)sched_sp)) { - DEBUG_PRINT("GOSTACK: failed to read caller FP from goroutine stack, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: failed to read caller FP, stopping"); *stop = true; return ERR_OK; } if (bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)(sched_sp + 8))) { - DEBUG_PRINT("GOSTACK: failed to read caller PC from goroutine stack, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: failed to read caller PC, stopping"); *stop = true; return ERR_OK; } DEBUG_PRINT( - "GOSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", + "GO_SYSTEMSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", (unsigned long)caller_pc, (unsigned long)(sched_sp + 16), (unsigned long)caller_fp); @@ -476,6 +480,102 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) unwinder_mark_nonleaf_frame(state); goto frame_ok; } + case UNWIND_COMMAND_GO_MCALL: { + // Cross the Go mcall boundary: recover the goroutine's saved context + // directly from gobuf fields. + // + // Unlike systemstack (which uses gosave_systemstack_switch and stores a + // synthetic UNDEF marker in gobuf.pc), mcall saves the caller's real + // register values into gobuf: + // + // MOVQ 8(SP), BX + // MOVQ BX, gobuf_pc(R14) // gobuf.pc = caller's PC (real return address) + // LEAQ fn+0(FP), BX + // MOVQ BX, gobuf_sp(R14) // gobuf.sp = caller's SP + // MOVQ (BP), BX + // MOVQ BX, gobuf_bp(R14) // gobuf.bp = *(BP) = caller's FP (dereferenced) + // + // Because mcall dereferences BP (reads the saved old RBP from the current + // frame), gobuf.bp already contains the caller's frame pointer — no need + // to read it from the stack like we do for systemstack. + // + // We want to resume unwinding at the caller of mcall, so: + // pc = gobuf.pc = real caller PC + // sp = gobuf.sp = caller's SP + // fp = gobuf.bp = caller's frame pointer + // + // https://github.com/golang/go/blob/917949cc1d16c652cb09ba369718f45e5d814d8f/src/runtime/asm_amd64.s#L458 + PerCPURecord *cpu_record = get_per_cpu_record(); + if (!cpu_record) { + DEBUG_PRINT("GO_MCALL: no per-CPU record, stopping"); + *stop = true; + return ERR_OK; + } + u32 pid = cpu_record->trace.pid; + GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); + if (!go_offs) { + DEBUG_PRINT("GO_MCALL: no Go offsets for this process, stopping"); + *stop = true; + return ERR_OK; + } + if (!go_offs->sched_sp) { + DEBUG_PRINT("GO_MCALL: sched offsets not configured, stopping"); + *stop = true; + return ERR_OK; + } + void *m_ptr = get_m_ptr(go_offs, state); + if (!m_ptr) { + DEBUG_PRINT("GO_MCALL: failed to get m_ptr, stopping"); + *stop = true; + return ERR_OK; + } + u64 curg = 0; + if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + go_offs->curg))) { + DEBUG_PRINT("GO_MCALL: failed to read curg, stopping"); + *stop = true; + return ERR_OK; + } + if (!curg) { + DEBUG_PRINT("GO_MCALL: no user goroutine (curg == NULL), stopping"); + *stop = true; + return ERR_OK; + } + u64 sched_pc = 0, sched_sp = 0, sched_bp = 0; + if (bpf_probe_read_user( + &sched_pc, sizeof(sched_pc), (void *)(curg + go_offs->sched_pc))) { + DEBUG_PRINT("GO_MCALL: failed to read sched_pc, stopping"); + *stop = true; + return ERR_OK; + } + if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { + DEBUG_PRINT("GO_MCALL: failed to read sched_sp, stopping"); + *stop = true; + return ERR_OK; + } + if (!sched_sp || !sched_pc) { + DEBUG_PRINT( + "GO_MCALL: gobuf not populated (sp=%lx, pc=%lx), stopping", + (unsigned long)sched_sp, + (unsigned long)sched_pc); + *stop = true; + return ERR_OK; + } + if (bpf_probe_read_user(&sched_bp, sizeof(sched_bp), (void *)(curg + go_offs->sched_bp))) { + DEBUG_PRINT("GO_MCALL: failed to read sched_bp, stopping"); + *stop = true; + return ERR_OK; + } + DEBUG_PRINT( + "GO_MCALL: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", + (unsigned long)sched_pc, + (unsigned long)sched_sp, + (unsigned long)sched_bp); + state->pc = sched_pc; + state->sp = sched_sp; + state->fp = sched_bp; + unwinder_mark_nonleaf_frame(state); + goto frame_ok; + } default: return ERR_UNREACHABLE; } } else { @@ -579,104 +679,108 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) goto err_native_pc_read; } goto frame_ok; - case UNWIND_COMMAND_GOSTACK: { + case UNWIND_COMMAND_GO_SYSTEMSTACK: { // Cross the Go stack-switch boundary: recover the goroutine's saved context - // from g.sched (set by runtime.systemstack or runtime.mcall when they - // switched from the goroutine stack to the g0 system stack). + // from g.sched (set by runtime.systemstack when it switched from the + // goroutine stack to the g0 system stack). // // gosave_systemstack_switch (asm_arm64.s) builds gobuf as follows: // - // MOVD $runtime.systemstack_switch(SB), R0 - // ADD $8, R0 // get past prologue - // MOVD R0, (g_sched+gobuf_pc)(g) // gobuf.pc = UNDEF marker - useless for unwinding + // MOVD $runtime·systemstack_switch(SB), R0 + // ADD $8, R0 // get past prologue + // MOVD R0, (g_sched+gobuf_pc)(g) // gobuf.pc = UNDEF marker - useless // - // MOVD RSP, R0 - // MOVD R0, (g_sched+gobuf_sp)(g) // gobuf.sp = RSP + // MOVD RSP, R0 + // MOVD R0, (g_sched+gobuf_sp)(g) // gobuf.sp = RSP // - // MOVD R29, (g_sched+gobuf_bp)(g) // gobuf.bp = FP of systemstack's caller + // MOVD R29, (g_sched+gobuf_bp)(g) // gobuf.bp = R29 (== gobuf.sp, see below) // - // MOVD $0, (g_sched+gobuf_lr)(g) // gobuf.lr = 0 (explicitly zeroed, never usable) + // MOVD $0, (g_sched+gobuf_lr)(g) // gobuf.lr = 0 (explicitly zeroed) // - // systemstack on arm64 has a frame pointer prologue: - // STP (FP, LR), -16(SP)! // SP -= 16, [SP+0] = caller FP, [SP+8] = LR (RA caller) + // Although systemstack is declared with $0 frame size, Go's linker injects + // a frame pointer prologue (STP (R29, R30), -16(RSP)! + MOVD RSP, R29) for + // all non-NOFRAME functions. // // Stack layout inside gosave_systemstack_switch at the time of MOVD RSP: - // [SP+0] = saved FP of systemstack's caller (pushed by STP, useless) - // [SP+8] = LR = RA caller of systemstack (pushed by STP) + // [SP+0] = saved R29 of caller (stored by STP in systemstack's prologue) + // [SP+8] = saved LR = RA caller of systemstack (stored by STP) + // + // Note: unlike amd64 where CALL pushes RA onto the stack, arm64's BL only + // writes to the LR register — so there is no extra RA slot on the stack. + // The STP pair [R29, LR] is the entire frame. + // + // After STP + MOVD RSP, R29 in systemstack's prologue: + // R29 = RSP_after_STP = SP inside gosave + // So gobuf.bp == gobuf.sp — both point to the saved R29/LR pair. // // We want to resume unwinding at the caller of systemstack, so: // pc = *(gobuf.sp + 8) = LR saved by STP = RA caller of systemstack - // sp = gobuf.sp + 16 = beyond the consumed FP+LR slot (STP allocated 16 bytes) - // fp = *(gobuf.sp + 0) = R29 saved by STP = frame pointer of systemstack's caller - // - // NOTE: gobuf.bp is NOT used for fp. On arm64, gosave_systemstack_switch saves R29 - // *after* the STP prologue has already updated R29 to systemstack's own frame base - // (i.e. gobuf.bp == gobuf.sp). The actual caller FP is the pre-STP R29 value, which - // the STP instruction saved at [gobuf.sp + 0]. + // sp = gobuf.sp + 16 = beyond the consumed R29+LR slot (STP allocated 16 bytes) + // fp = *(gobuf.sp + 0) = R29 saved by STP = frame pointer of the caller // // gobuf.pc (systemstack_switch = UNDEF) is intentionally ignored: it is a // synthetic marker for Go's stack scanner and scheduler, not a real return address. // - // https://github.com/golang/go/blob/5a928e5a37dc632bbb1794fe0e0846e6352be8b2/src/runtime/asm_arm64.s#L1124 + // https://github.com/golang/go/blob/5a928e5a37dc632bbb1794fe0e0846e6352be8b2/src/runtime/asm_arm64.s#L282 PerCPURecord *cpu_record = get_per_cpu_record(); if (!cpu_record) { - DEBUG_PRINT("GOSTACK: no per-CPU record, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: no per-CPU record, stopping"); *stop = true; return ERR_OK; } u32 pid = cpu_record->trace.pid; GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); if (!go_offs) { - DEBUG_PRINT("GOSTACK: no Go offsets for this process, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: no Go offsets for this process, stopping"); *stop = true; return ERR_OK; } if (!go_offs->sched_sp) { - DEBUG_PRINT("GOSTACK: sched offsets not configured, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: sched offsets not configured, stopping"); *stop = true; return ERR_OK; } void *m_ptr = get_m_ptr(go_offs, state); if (!m_ptr) { - DEBUG_PRINT("GOSTACK: failed to get m_ptr, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: failed to get m_ptr, stopping"); *stop = true; return ERR_OK; } u64 curg = 0; if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + go_offs->curg))) { - DEBUG_PRINT("GOSTACK: failed to read curg, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: failed to read curg, stopping"); *stop = true; return ERR_OK; } if (!curg) { - DEBUG_PRINT("GOSTACK: no user goroutine (curg == NULL), stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: no user goroutine (curg == NULL), stopping"); *stop = true; return ERR_OK; } u64 sched_sp = 0; if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { - DEBUG_PRINT("GOSTACK: failed to read sched_sp, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: failed to read sched_sp, stopping"); *stop = true; return ERR_OK; } if (!sched_sp) { - DEBUG_PRINT("GOSTACK: gobuf not populated (sched_sp==0), stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: gobuf not populated (sched_sp==0), stopping"); *stop = true; return ERR_OK; } u64 caller_pc = 0, caller_fp = 0; - if (bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)(sched_sp + 8))) { - DEBUG_PRINT("GOSTACK: failed to read caller PC from goroutine stack, stopping"); + if (bpf_probe_read_user(&caller_fp, sizeof(caller_fp), (void *)sched_sp)) { + DEBUG_PRINT("GO_SYSTEMSTACK: failed to read caller FP, stopping"); *stop = true; return ERR_OK; } - if (bpf_probe_read_user(&caller_fp, sizeof(caller_fp), (void *)sched_sp)) { - DEBUG_PRINT("GOSTACK: failed to read caller FP from goroutine stack, stopping"); + if (bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)(sched_sp + 8))) { + DEBUG_PRINT("GO_SYSTEMSTACK: failed to read caller PC, stopping"); *stop = true; return ERR_OK; } DEBUG_PRINT( - "GOSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", + "GO_SYSTEMSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", (unsigned long)caller_pc, (unsigned long)(sched_sp + 16), (unsigned long)caller_fp); @@ -684,8 +788,102 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) state->sp = sched_sp + 16; state->fp = caller_fp; state->lr = 0; - // Update r28 (the g register on aarch64) to point to curg so that - // subsequent get_m_ptr calls use the correct goroutine pointer. + state->r28 = curg; + unwinder_mark_nonleaf_frame(state); + goto frame_ok; + } + case UNWIND_COMMAND_GO_MCALL: { + // Cross the Go mcall boundary: recover the goroutine's saved context + // directly from gobuf fields. + // + // Unlike systemstack (which uses gosave_systemstack_switch and stores a + // synthetic UNDEF marker in gobuf.pc), mcall saves the caller's real + // register values into gobuf: + // + // MOVD RSP, R0 + // MOVD R0, (g_sched+gobuf_sp)(g) // gobuf.sp = RSP (caller's SP) + // MOVD R29, (g_sched+gobuf_bp)(g) // gobuf.bp = R29 (caller's FP) + // MOVD LR, (g_sched+gobuf_pc)(g) // gobuf.pc = LR (caller's return address) + // MOVD $0, (g_sched+gobuf_lr)(g) // gobuf.lr = 0 + // + // mcall is NOSPLIT|NOFRAME — no STP prologue, so RSP, R29 and LR are + // the caller's original values (unchanged by BL mcall on arm64). + // + // We want to resume unwinding at the caller of mcall, so: + // pc = gobuf.pc = LR = real caller return address + // sp = gobuf.sp = RSP = caller's stack pointer + // fp = gobuf.bp = R29 = caller's frame pointer + // + // https://github.com/golang/go/blob/5a928e5a37dc632bbb1794fe0e0846e6352be8b2/src/runtime/asm_arm64.s#L282 + PerCPURecord *cpu_record = get_per_cpu_record(); + if (!cpu_record) { + DEBUG_PRINT("GO_MCALL: no per-CPU record, stopping"); + *stop = true; + return ERR_OK; + } + u32 pid = cpu_record->trace.pid; + GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); + if (!go_offs) { + DEBUG_PRINT("GO_MCALL: no Go offsets for this process, stopping"); + *stop = true; + return ERR_OK; + } + if (!go_offs->sched_sp) { + DEBUG_PRINT("GO_MCALL: sched offsets not configured, stopping"); + *stop = true; + return ERR_OK; + } + void *m_ptr = get_m_ptr(go_offs, state); + if (!m_ptr) { + DEBUG_PRINT("GO_MCALL: failed to get m_ptr, stopping"); + *stop = true; + return ERR_OK; + } + u64 curg = 0; + if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + go_offs->curg))) { + DEBUG_PRINT("GO_MCALL: failed to read curg, stopping"); + *stop = true; + return ERR_OK; + } + if (!curg) { + DEBUG_PRINT("GO_MCALL: no user goroutine (curg == NULL), stopping"); + *stop = true; + return ERR_OK; + } + u64 sched_pc = 0, sched_sp = 0, sched_bp = 0; + if (bpf_probe_read_user( + &sched_pc, sizeof(sched_pc), (void *)(curg + go_offs->sched_pc))) { + DEBUG_PRINT("GO_MCALL: failed to read sched_pc, stopping"); + *stop = true; + return ERR_OK; + } + if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { + DEBUG_PRINT("GO_MCALL: failed to read sched_sp, stopping"); + *stop = true; + return ERR_OK; + } + if (!sched_sp || !sched_pc) { + DEBUG_PRINT( + "GO_MCALL: gobuf not populated (sp=%lx, pc=%lx), stopping", + (unsigned long)sched_sp, + (unsigned long)sched_pc); + *stop = true; + return ERR_OK; + } + if (bpf_probe_read_user(&sched_bp, sizeof(sched_bp), (void *)(curg + go_offs->sched_bp))) { + DEBUG_PRINT("GO_MCALL: failed to read sched_bp, stopping"); + *stop = true; + return ERR_OK; + } + DEBUG_PRINT( + "GO_MCALL: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", + (unsigned long)sched_pc, + (unsigned long)sched_sp, + (unsigned long)sched_bp); + state->pc = normalize_pac_ptr(sched_pc); + state->sp = sched_sp; + state->fp = sched_bp; + state->lr = 0; state->r28 = curg; unwinder_mark_nonleaf_frame(state); goto frame_ok; diff --git a/support/ebpf/types.h b/support/ebpf/types.h index 318bf2255..92b31abe9 100644 --- a/support/ebpf/types.h +++ b/support/ebpf/types.h @@ -930,8 +930,10 @@ typedef struct StackDelta { #define UNWIND_COMMAND_SIGNAL 3 // Unwind using standard frame pointer #define UNWIND_COMMAND_FRAME_POINTER 4 -// Cross Go stack switch boundary (systemstack/mcall) using goroutine saved context -#define UNWIND_COMMAND_GOSTACK 5 +// Cross Go systemstack boundary using goroutine saved context from gobuf stack frame +#define UNWIND_COMMAND_GO_SYSTEMSTACK 5 +// Cross Go mcall boundary using goroutine saved context from gobuf fields directly +#define UNWIND_COMMAND_GO_MCALL 6 // StackDeltaPageKey is the look up key for stack delta page map. typedef struct StackDeltaPageKey { @@ -1053,7 +1055,8 @@ typedef struct GoLabelsOffsets { // Offsets within g.sched (gobuf) for goroutine saved context, used to cross // the systemstack/mcall boundary during stack unwinding. u32 sched_sp; // offset of g.sched.sp from the start of g - u32 sched_bp; // offset of g.sched.bp from the start of g + u32 sched_pc; // offset of g.sched.pc from the start of g (used by mcall) + u32 sched_bp; // offset of g.sched.bp from the start of g (used by mcall) } GoLabelsOffsets; #endif // OPTI_TYPES_H diff --git a/support/types.go b/support/types.go index 58b313d14..052dc7bd4 100644 --- a/support/types.go +++ b/support/types.go @@ -201,6 +201,7 @@ type GoLabelsOffsets struct { Hmap_buckets uint32 Tls_offset int32 Sched_sp uint32 + Sched_pc uint32 Sched_bp uint32 } type HotspotProcInfo struct { @@ -365,7 +366,8 @@ const ( UnwindCommandPLT int32 = 0x2 UnwindCommandSignal int32 = 0x3 UnwindCommandFramePointer int32 = 0x4 - UnwindCommandGoStack int32 = 0x5 + UnwindCommandGoSystemstack int32 = 0x5 + UnwindCommandGoMcall int32 = 0x6 UnwindDerefMask int32 = 0x7 UnwindDerefMultiplier int32 = 0x8 diff --git a/support/types_def.go b/support/types_def.go index fc2f80a4e..5e7f81197 100644 --- a/support/types_def.go +++ b/support/types_def.go @@ -170,7 +170,8 @@ const ( UnwindCommandPLT int32 = C.UNWIND_COMMAND_PLT UnwindCommandSignal int32 = C.UNWIND_COMMAND_SIGNAL UnwindCommandFramePointer int32 = C.UNWIND_COMMAND_FRAME_POINTER - UnwindCommandGoStack int32 = C.UNWIND_COMMAND_GOSTACK + UnwindCommandGoSystemstack int32 = C.UNWIND_COMMAND_GO_SYSTEMSTACK + UnwindCommandGoMcall int32 = C.UNWIND_COMMAND_GO_MCALL // UnwindDeref handling from the C header file UnwindDerefMask int32 = C.UNWIND_DEREF_MASK diff --git a/tools/gooffsets/main.go b/tools/gooffsets/main.go index a964745fc..61f19f051 100644 --- a/tools/gooffsets/main.go +++ b/tools/gooffsets/main.go @@ -20,6 +20,7 @@ type goLabelsOffsets struct { hmapLog2BucketCount uint32 hmapBuckets uint32 schedSp uint32 + schedPc uint32 schedBp uint32 } @@ -76,6 +77,15 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { if err != nil { return nil, err } + _, schedPcOff, err := ReadChildTypeAndOffset(r, "pc") + if err != nil { + return nil, err + } + r.Seek(schedType.Offset) + _, err = r.Next() + if err != nil { + return nil, err + } _, schedBpOff, err := ReadChildTypeAndOffset(r, "bp") if err != nil { return nil, err @@ -119,6 +129,7 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { curg: uint32(curgOffset), labels: uint32(labelsOffset), schedSp: uint32(schedOffset + schedSpOff), + schedPc: uint32(schedOffset + schedPcOff), schedBp: uint32(schedOffset + schedBpOff), }, nil } @@ -154,6 +165,7 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { hmapLog2BucketCount: uint32(bOffset), hmapBuckets: uint32(bucketsOffset), schedSp: uint32(schedOffset + schedSpOff), + schedPc: uint32(schedOffset + schedPcOff), schedBp: uint32(schedOffset + schedBpOff), }, nil } @@ -200,6 +212,7 @@ func main() { fmt.Printf("\thmap_log2_bucket_count: %d,\n", offs.hmapLog2BucketCount) fmt.Printf("\thmap_buckets: %d,\n", offs.hmapBuckets) fmt.Printf("\tsched_sp: %d,\n", offs.schedSp) + fmt.Printf("\tsched_pc: %d,\n", offs.schedPc) fmt.Printf("\tsched_bp: %d,\n", offs.schedBp) fmt.Println("},") } From dbf35f97864ab55ae8eaf0d668abcde733c38b4b Mon Sep 17 00:00:00 2001 From: Martin Levesque Date: Wed, 1 Apr 2026 19:33:48 +0000 Subject: [PATCH 04/12] chore: lint --- support/ebpf/errors.h | 3 ++- support/ebpf/interpreter_dispatcher.ebpf.c | 5 ++--- support/ebpf/native_stack_trace.ebpf.c | 6 ++---- support/ebpf/types.h | 14 +++++++------- support/types.go | 10 +++++----- support/types_def.go | 10 +++++----- 6 files changed, 23 insertions(+), 25 deletions(-) diff --git a/support/ebpf/errors.h b/support/ebpf/errors.h index 532d83e26..0da717277 100644 --- a/support/ebpf/errors.h +++ b/support/ebpf/errors.h @@ -160,7 +160,8 @@ typedef enum ErrorCode { // Native: Unable to read the IRQ stack link ERR_NATIVE_CHASE_IRQ_STACK_LINK = 4010, - // Native: Unexpectedly encountered a kernel mode pointer while attempting to unwind user-mode stack + // Native: Unexpectedly encountered a kernel mode pointer while attempting to unwind user-mode + // stack ERR_NATIVE_UNEXPECTED_KERNEL_ADDRESS = 4011, // Native: Unable to locate the PID page mapping for the current instruction pointer diff --git a/support/ebpf/interpreter_dispatcher.ebpf.c b/support/ebpf/interpreter_dispatcher.ebpf.c index 0e3fd1acd..45194e1d2 100644 --- a/support/ebpf/interpreter_dispatcher.ebpf.c +++ b/support/ebpf/interpreter_dispatcher.ebpf.c @@ -200,9 +200,8 @@ static EBPF_INLINE void maybe_add_apm_info(Trace *trace) DEBUG_PRINT("APM corr ptr should be at 0x%llx", tsd_base + proc->tls_offset); void *apm_corr_buf_ptr; - if ( - bpf_probe_read_user( - &apm_corr_buf_ptr, sizeof(apm_corr_buf_ptr), (void *)(tsd_base + proc->tls_offset))) { + if (bpf_probe_read_user( + &apm_corr_buf_ptr, sizeof(apm_corr_buf_ptr), (void *)(tsd_base + proc->tls_offset))) { increment_metric(metricID_UnwindApmIntErrReadCorrBufPtr); DEBUG_PRINT("Failed to read APM correlation buffer pointer"); return; diff --git a/support/ebpf/native_stack_trace.ebpf.c b/support/ebpf/native_stack_trace.ebpf.c index 0a307c114..1a312f0d6 100644 --- a/support/ebpf/native_stack_trace.ebpf.c +++ b/support/ebpf/native_stack_trace.ebpf.c @@ -541,8 +541,7 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) return ERR_OK; } u64 sched_pc = 0, sched_sp = 0, sched_bp = 0; - if (bpf_probe_read_user( - &sched_pc, sizeof(sched_pc), (void *)(curg + go_offs->sched_pc))) { + if (bpf_probe_read_user(&sched_pc, sizeof(sched_pc), (void *)(curg + go_offs->sched_pc))) { DEBUG_PRINT("GO_MCALL: failed to read sched_pc, stopping"); *stop = true; return ERR_OK; @@ -851,8 +850,7 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) return ERR_OK; } u64 sched_pc = 0, sched_sp = 0, sched_bp = 0; - if (bpf_probe_read_user( - &sched_pc, sizeof(sched_pc), (void *)(curg + go_offs->sched_pc))) { + if (bpf_probe_read_user(&sched_pc, sizeof(sched_pc), (void *)(curg + go_offs->sched_pc))) { DEBUG_PRINT("GO_MCALL: failed to read sched_pc, stopping"); *stop = true; return ERR_OK; diff --git a/support/ebpf/types.h b/support/ebpf/types.h index 92b31abe9..e8b6af6a2 100644 --- a/support/ebpf/types.h +++ b/support/ebpf/types.h @@ -921,19 +921,19 @@ typedef struct StackDelta { #define STACK_DELTA_COMMAND_FLAG 0x8000 // Unsupported or no value for the register -#define UNWIND_COMMAND_INVALID 0 +#define UNWIND_COMMAND_INVALID 0 // For CFA: stop unwinding, this function is a stack root function -#define UNWIND_COMMAND_STOP 1 +#define UNWIND_COMMAND_STOP 1 // Unwind a PLT entry -#define UNWIND_COMMAND_PLT 2 +#define UNWIND_COMMAND_PLT 2 // Unwind a signal frame -#define UNWIND_COMMAND_SIGNAL 3 +#define UNWIND_COMMAND_SIGNAL 3 // Unwind using standard frame pointer -#define UNWIND_COMMAND_FRAME_POINTER 4 +#define UNWIND_COMMAND_FRAME_POINTER 4 // Cross Go systemstack boundary using goroutine saved context from gobuf stack frame -#define UNWIND_COMMAND_GO_SYSTEMSTACK 5 +#define UNWIND_COMMAND_GO_SYSTEMSTACK 5 // Cross Go mcall boundary using goroutine saved context from gobuf fields directly -#define UNWIND_COMMAND_GO_MCALL 6 +#define UNWIND_COMMAND_GO_MCALL 6 // StackDeltaPageKey is the look up key for stack delta page map. typedef struct StackDeltaPageKey { diff --git a/support/types.go b/support/types.go index 052dc7bd4..efceb19c6 100644 --- a/support/types.go +++ b/support/types.go @@ -361,11 +361,11 @@ const ( UnwindFlagDerefCfa uint8 = 0x8 UnwindFlagRegisterRA uint8 = 0x10 - UnwindCommandInvalid int32 = 0x0 - UnwindCommandStop int32 = 0x1 - UnwindCommandPLT int32 = 0x2 - UnwindCommandSignal int32 = 0x3 - UnwindCommandFramePointer int32 = 0x4 + UnwindCommandInvalid int32 = 0x0 + UnwindCommandStop int32 = 0x1 + UnwindCommandPLT int32 = 0x2 + UnwindCommandSignal int32 = 0x3 + UnwindCommandFramePointer int32 = 0x4 UnwindCommandGoSystemstack int32 = 0x5 UnwindCommandGoMcall int32 = 0x6 diff --git a/support/types_def.go b/support/types_def.go index 5e7f81197..a26fc2194 100644 --- a/support/types_def.go +++ b/support/types_def.go @@ -165,11 +165,11 @@ const ( UnwindFlagRegisterRA uint8 = C.UNWIND_FLAG_REGISTER_RA // UnwindCommands from the C header file - UnwindCommandInvalid int32 = C.UNWIND_COMMAND_INVALID - UnwindCommandStop int32 = C.UNWIND_COMMAND_STOP - UnwindCommandPLT int32 = C.UNWIND_COMMAND_PLT - UnwindCommandSignal int32 = C.UNWIND_COMMAND_SIGNAL - UnwindCommandFramePointer int32 = C.UNWIND_COMMAND_FRAME_POINTER + UnwindCommandInvalid int32 = C.UNWIND_COMMAND_INVALID + UnwindCommandStop int32 = C.UNWIND_COMMAND_STOP + UnwindCommandPLT int32 = C.UNWIND_COMMAND_PLT + UnwindCommandSignal int32 = C.UNWIND_COMMAND_SIGNAL + UnwindCommandFramePointer int32 = C.UNWIND_COMMAND_FRAME_POINTER UnwindCommandGoSystemstack int32 = C.UNWIND_COMMAND_GO_SYSTEMSTACK UnwindCommandGoMcall int32 = C.UNWIND_COMMAND_GO_MCALL From c1f140a586d38cdb8866b450f0239a3fd5ac125f Mon Sep 17 00:00:00 2001 From: Martin Levesque Date: Thu, 2 Apr 2026 10:15:27 +0200 Subject: [PATCH 05/12] fix: remove mcall support --- interpreter/golabels/runtime_data.go | 14 -- nativeunwind/elfunwindinfo/elfgopclntab.go | 2 +- .../stackdeltatypes/stackdeltatypes.go | 6 - processmanager/execinfomanager/manager.go | 2 +- support/ebpf/native_stack_trace.ebpf.c | 200 +----------------- support/ebpf/types.h | 8 +- support/types.go | 3 - support/types_def.go | 1 - tools/gooffsets/main.go | 22 -- 9 files changed, 8 insertions(+), 250 deletions(-) diff --git a/interpreter/golabels/runtime_data.go b/interpreter/golabels/runtime_data.go index 1f75bb5d6..f20c8d0e7 100644 --- a/interpreter/golabels/runtime_data.go +++ b/interpreter/golabels/runtime_data.go @@ -32,30 +32,16 @@ func getOffsets(vers string) support.GoLabelsOffsets { // gobuf.sp is at offset 0 within gobuf - stable across all supported Go versions. // https://github.com/golang/go/blob/80e2e474b8d9124d03b744f/src/runtime/runtime2.go#L325 Sched_sp: 56, - // gobuf.pc is at offset 8 within gobuf — stable across all supported Go versions. - // Used by the mcall handler (systemstack ignores gobuf.pc which is a synthetic marker). - Sched_pc: 64, // 56 + 8 - // Within gobuf: bp is at +48 (Go <= 1.24) or +40 (Go >= 1.25, gobuf.ret removed). - // Used by the mcall handler (systemstack reads FP from the stack frame instead). - // Default: absolute offset = 56 + 48 = 104 for Go <= 1.24. - // https://github.com/golang/go/blob/339c903a75c3fe936fb4ed6c355d15e6081d6af3/src/runtime/runtime2.go#L317 - Sched_bp: 104, } // Version enforcement takes place in the Loader function. if version.Compare(vers, "go1.26") >= 0 { offsets.Curg = 184 offsets.Labels = 352 - // gobuf.ret removed in Go 1.25: gobuf.bp shifts from +48 to +40, lr from +40 to +32. - // https://github.com/golang/go/blob/56ebf80e57db9f61981fc0636fc6419dc6f68eda/src/runtime/runtime2.go#L315 - offsets.Sched_bp = 96 // 56 + 40 return offsets } else if version.Compare(vers, "go1.25") >= 0 { offsets.Curg = 184 offsets.Labels = 344 - // gobuf.ret removed in Go 1.25: gobuf.bp shifts from +48 to +40. - // https://github.com/golang/go/blob/56ebf80e57db9f61981fc0636fc6419dc6f68eda/src/runtime/runtime2.go#L315 - offsets.Sched_bp = 96 // 56 + 40 return offsets } else if version.Compare(vers, "go1.24") >= 0 { offsets.Labels = 352 diff --git a/nativeunwind/elfunwindinfo/elfgopclntab.go b/nativeunwind/elfunwindinfo/elfgopclntab.go index b075e5b4f..f2684f271 100644 --- a/nativeunwind/elfunwindinfo/elfgopclntab.go +++ b/nativeunwind/elfunwindinfo/elfgopclntab.go @@ -35,7 +35,7 @@ var goFunctionsStopDelta = map[string]*sdtypes.UnwindInfo{ // the unwinder crosses back to the goroutine stack by reading the goroutine's saved // context from gobuf. "runtime.systemstack": &sdtypes.UnwindInfoGoSystemstack, - "runtime.mcall": &sdtypes.UnwindInfoGoMcall, + "runtime.mcall": &sdtypes.UnwindInfoStop, // signal return frame "runtime.sigreturn": &sdtypes.UnwindInfoSignal, diff --git a/nativeunwind/stackdeltatypes/stackdeltatypes.go b/nativeunwind/stackdeltatypes/stackdeltatypes.go index 31ed12105..43e121976 100644 --- a/nativeunwind/stackdeltatypes/stackdeltatypes.go +++ b/nativeunwind/stackdeltatypes/stackdeltatypes.go @@ -53,12 +53,6 @@ var UnwindInfoFramePointer = UnwindInfo{Flags: support.UnwindFlagCommand, var UnwindInfoGoSystemstack = UnwindInfo{Flags: support.UnwindFlagCommand, Param: support.UnwindCommandGoSystemstack} -// UnwindInfoGoMcall is the stack delta info for runtime.mcall. -// Unlike systemstack, mcall stores the caller's context directly in gobuf fields -// (gobuf.pc = real caller PC, gobuf.sp = caller's SP, gobuf.bp = caller's FP). -var UnwindInfoGoMcall = UnwindInfo{Flags: support.UnwindFlagCommand, - Param: support.UnwindCommandGoMcall} - // UnwindInfoLR contains the description to unwind ARM64 function without a frame (LR only) var UnwindInfoLR = UnwindInfo{ BaseReg: support.UnwindRegSp, diff --git a/processmanager/execinfomanager/manager.go b/processmanager/execinfomanager/manager.go index 0f5472bc4..50106c729 100644 --- a/processmanager/execinfomanager/manager.go +++ b/processmanager/execinfomanager/manager.go @@ -128,7 +128,7 @@ func NewExecutableInfoManager( interpreterLoaders = append(interpreterLoaders, apmint.Loader) // Always register golabels loader: the native unwinder needs Go runtime - // offsets (m, curg, g.sched) to cross systemstack/mcall stack boundaries, + // offsets (m, curg, g.sched) to cross the systemstack boundary, // regardless of whether custom labels extraction is enabled. interpreterLoaders = append(interpreterLoaders, golabels.Loader) diff --git a/support/ebpf/native_stack_trace.ebpf.c b/support/ebpf/native_stack_trace.ebpf.c index 1a312f0d6..db68a6ec8 100644 --- a/support/ebpf/native_stack_trace.ebpf.c +++ b/support/ebpf/native_stack_trace.ebpf.c @@ -393,15 +393,13 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) // Although systemstack is declared with $0 frame size, Go's linker injects // a frame pointer prologue (PUSH RBP + MOVQ RSP, RBP) for all non-NOFRAME // functions that contain a CALL instruction. + // https://github.com/golang/go/blob/affadc7997466dfacad5b9a3dc90ee5e7a7b6085/src/cmd/internal/obj/x86/obj6.go#L637 // // Stack layout inside gosave_systemstack_switch at the time of LEAQ: - // [SP+0] = RA back into systemstack (pushed by CALL gosave, useless) + // [SP+0] = RA back into systemstack (pushed by CALL gosave, useless) // [SP+8] = saved old RBP of caller (pushed by systemstack's PUSH RBP prologue) // [SP+16] = RA caller of systemstack (pushed by CALL systemstack) - // - // After PUSH RBP + MOVQ RSP, RBP in systemstack's prologue: - // RBP = RSP_after_push = SP+8 inside gosave - // So gobuf.bp == gobuf.sp — both point to the saved old RBP slot. + // SP+24 = address of SP before the call to systemstack // // We want to resume unwinding at the caller of systemstack, so: // pc = *(gobuf.sp + 8) = RA caller of systemstack @@ -480,101 +478,6 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) unwinder_mark_nonleaf_frame(state); goto frame_ok; } - case UNWIND_COMMAND_GO_MCALL: { - // Cross the Go mcall boundary: recover the goroutine's saved context - // directly from gobuf fields. - // - // Unlike systemstack (which uses gosave_systemstack_switch and stores a - // synthetic UNDEF marker in gobuf.pc), mcall saves the caller's real - // register values into gobuf: - // - // MOVQ 8(SP), BX - // MOVQ BX, gobuf_pc(R14) // gobuf.pc = caller's PC (real return address) - // LEAQ fn+0(FP), BX - // MOVQ BX, gobuf_sp(R14) // gobuf.sp = caller's SP - // MOVQ (BP), BX - // MOVQ BX, gobuf_bp(R14) // gobuf.bp = *(BP) = caller's FP (dereferenced) - // - // Because mcall dereferences BP (reads the saved old RBP from the current - // frame), gobuf.bp already contains the caller's frame pointer — no need - // to read it from the stack like we do for systemstack. - // - // We want to resume unwinding at the caller of mcall, so: - // pc = gobuf.pc = real caller PC - // sp = gobuf.sp = caller's SP - // fp = gobuf.bp = caller's frame pointer - // - // https://github.com/golang/go/blob/917949cc1d16c652cb09ba369718f45e5d814d8f/src/runtime/asm_amd64.s#L458 - PerCPURecord *cpu_record = get_per_cpu_record(); - if (!cpu_record) { - DEBUG_PRINT("GO_MCALL: no per-CPU record, stopping"); - *stop = true; - return ERR_OK; - } - u32 pid = cpu_record->trace.pid; - GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); - if (!go_offs) { - DEBUG_PRINT("GO_MCALL: no Go offsets for this process, stopping"); - *stop = true; - return ERR_OK; - } - if (!go_offs->sched_sp) { - DEBUG_PRINT("GO_MCALL: sched offsets not configured, stopping"); - *stop = true; - return ERR_OK; - } - void *m_ptr = get_m_ptr(go_offs, state); - if (!m_ptr) { - DEBUG_PRINT("GO_MCALL: failed to get m_ptr, stopping"); - *stop = true; - return ERR_OK; - } - u64 curg = 0; - if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + go_offs->curg))) { - DEBUG_PRINT("GO_MCALL: failed to read curg, stopping"); - *stop = true; - return ERR_OK; - } - if (!curg) { - DEBUG_PRINT("GO_MCALL: no user goroutine (curg == NULL), stopping"); - *stop = true; - return ERR_OK; - } - u64 sched_pc = 0, sched_sp = 0, sched_bp = 0; - if (bpf_probe_read_user(&sched_pc, sizeof(sched_pc), (void *)(curg + go_offs->sched_pc))) { - DEBUG_PRINT("GO_MCALL: failed to read sched_pc, stopping"); - *stop = true; - return ERR_OK; - } - if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { - DEBUG_PRINT("GO_MCALL: failed to read sched_sp, stopping"); - *stop = true; - return ERR_OK; - } - if (!sched_sp || !sched_pc) { - DEBUG_PRINT( - "GO_MCALL: gobuf not populated (sp=%lx, pc=%lx), stopping", - (unsigned long)sched_sp, - (unsigned long)sched_pc); - *stop = true; - return ERR_OK; - } - if (bpf_probe_read_user(&sched_bp, sizeof(sched_bp), (void *)(curg + go_offs->sched_bp))) { - DEBUG_PRINT("GO_MCALL: failed to read sched_bp, stopping"); - *stop = true; - return ERR_OK; - } - DEBUG_PRINT( - "GO_MCALL: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", - (unsigned long)sched_pc, - (unsigned long)sched_sp, - (unsigned long)sched_bp); - state->pc = sched_pc; - state->sp = sched_sp; - state->fp = sched_bp; - unwinder_mark_nonleaf_frame(state); - goto frame_ok; - } default: return ERR_UNREACHABLE; } } else { @@ -714,7 +617,7 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) // // We want to resume unwinding at the caller of systemstack, so: // pc = *(gobuf.sp + 8) = LR saved by STP = RA caller of systemstack - // sp = gobuf.sp + 16 = beyond the consumed R29+LR slot (STP allocated 16 bytes) + // sp = gobuf.sp + 16 = SP before the call to systemstack // fp = *(gobuf.sp + 0) = R29 saved by STP = frame pointer of the caller // // gobuf.pc (systemstack_switch = UNDEF) is intentionally ignored: it is a @@ -791,101 +694,6 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) unwinder_mark_nonleaf_frame(state); goto frame_ok; } - case UNWIND_COMMAND_GO_MCALL: { - // Cross the Go mcall boundary: recover the goroutine's saved context - // directly from gobuf fields. - // - // Unlike systemstack (which uses gosave_systemstack_switch and stores a - // synthetic UNDEF marker in gobuf.pc), mcall saves the caller's real - // register values into gobuf: - // - // MOVD RSP, R0 - // MOVD R0, (g_sched+gobuf_sp)(g) // gobuf.sp = RSP (caller's SP) - // MOVD R29, (g_sched+gobuf_bp)(g) // gobuf.bp = R29 (caller's FP) - // MOVD LR, (g_sched+gobuf_pc)(g) // gobuf.pc = LR (caller's return address) - // MOVD $0, (g_sched+gobuf_lr)(g) // gobuf.lr = 0 - // - // mcall is NOSPLIT|NOFRAME — no STP prologue, so RSP, R29 and LR are - // the caller's original values (unchanged by BL mcall on arm64). - // - // We want to resume unwinding at the caller of mcall, so: - // pc = gobuf.pc = LR = real caller return address - // sp = gobuf.sp = RSP = caller's stack pointer - // fp = gobuf.bp = R29 = caller's frame pointer - // - // https://github.com/golang/go/blob/5a928e5a37dc632bbb1794fe0e0846e6352be8b2/src/runtime/asm_arm64.s#L282 - PerCPURecord *cpu_record = get_per_cpu_record(); - if (!cpu_record) { - DEBUG_PRINT("GO_MCALL: no per-CPU record, stopping"); - *stop = true; - return ERR_OK; - } - u32 pid = cpu_record->trace.pid; - GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); - if (!go_offs) { - DEBUG_PRINT("GO_MCALL: no Go offsets for this process, stopping"); - *stop = true; - return ERR_OK; - } - if (!go_offs->sched_sp) { - DEBUG_PRINT("GO_MCALL: sched offsets not configured, stopping"); - *stop = true; - return ERR_OK; - } - void *m_ptr = get_m_ptr(go_offs, state); - if (!m_ptr) { - DEBUG_PRINT("GO_MCALL: failed to get m_ptr, stopping"); - *stop = true; - return ERR_OK; - } - u64 curg = 0; - if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + go_offs->curg))) { - DEBUG_PRINT("GO_MCALL: failed to read curg, stopping"); - *stop = true; - return ERR_OK; - } - if (!curg) { - DEBUG_PRINT("GO_MCALL: no user goroutine (curg == NULL), stopping"); - *stop = true; - return ERR_OK; - } - u64 sched_pc = 0, sched_sp = 0, sched_bp = 0; - if (bpf_probe_read_user(&sched_pc, sizeof(sched_pc), (void *)(curg + go_offs->sched_pc))) { - DEBUG_PRINT("GO_MCALL: failed to read sched_pc, stopping"); - *stop = true; - return ERR_OK; - } - if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { - DEBUG_PRINT("GO_MCALL: failed to read sched_sp, stopping"); - *stop = true; - return ERR_OK; - } - if (!sched_sp || !sched_pc) { - DEBUG_PRINT( - "GO_MCALL: gobuf not populated (sp=%lx, pc=%lx), stopping", - (unsigned long)sched_sp, - (unsigned long)sched_pc); - *stop = true; - return ERR_OK; - } - if (bpf_probe_read_user(&sched_bp, sizeof(sched_bp), (void *)(curg + go_offs->sched_bp))) { - DEBUG_PRINT("GO_MCALL: failed to read sched_bp, stopping"); - *stop = true; - return ERR_OK; - } - DEBUG_PRINT( - "GO_MCALL: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", - (unsigned long)sched_pc, - (unsigned long)sched_sp, - (unsigned long)sched_bp); - state->pc = normalize_pac_ptr(sched_pc); - state->sp = sched_sp; - state->fp = sched_bp; - state->lr = 0; - state->r28 = curg; - unwinder_mark_nonleaf_frame(state); - goto frame_ok; - } default: return ERR_UNREACHABLE; } } diff --git a/support/ebpf/types.h b/support/ebpf/types.h index e8b6af6a2..0d128774e 100644 --- a/support/ebpf/types.h +++ b/support/ebpf/types.h @@ -932,8 +932,6 @@ typedef struct StackDelta { #define UNWIND_COMMAND_FRAME_POINTER 4 // Cross Go systemstack boundary using goroutine saved context from gobuf stack frame #define UNWIND_COMMAND_GO_SYSTEMSTACK 5 -// Cross Go mcall boundary using goroutine saved context from gobuf fields directly -#define UNWIND_COMMAND_GO_MCALL 6 // StackDeltaPageKey is the look up key for stack delta page map. typedef struct StackDeltaPageKey { @@ -1052,11 +1050,9 @@ typedef struct GoLabelsOffsets { u32 hmap_log2_bucket_count; u32 hmap_buckets; s32 tls_offset; - // Offsets within g.sched (gobuf) for goroutine saved context, used to cross - // the systemstack/mcall boundary during stack unwinding. + // Offset within g.sched (gobuf) for goroutine saved context, used to cross + // the systemstack boundary during stack unwinding. u32 sched_sp; // offset of g.sched.sp from the start of g - u32 sched_pc; // offset of g.sched.pc from the start of g (used by mcall) - u32 sched_bp; // offset of g.sched.bp from the start of g (used by mcall) } GoLabelsOffsets; #endif // OPTI_TYPES_H diff --git a/support/types.go b/support/types.go index efceb19c6..820b17634 100644 --- a/support/types.go +++ b/support/types.go @@ -201,8 +201,6 @@ type GoLabelsOffsets struct { Hmap_buckets uint32 Tls_offset int32 Sched_sp uint32 - Sched_pc uint32 - Sched_bp uint32 } type HotspotProcInfo struct { Codecache_start uint64 @@ -367,7 +365,6 @@ const ( UnwindCommandSignal int32 = 0x3 UnwindCommandFramePointer int32 = 0x4 UnwindCommandGoSystemstack int32 = 0x5 - UnwindCommandGoMcall int32 = 0x6 UnwindDerefMask int32 = 0x7 UnwindDerefMultiplier int32 = 0x8 diff --git a/support/types_def.go b/support/types_def.go index a26fc2194..cd71e4ff2 100644 --- a/support/types_def.go +++ b/support/types_def.go @@ -171,7 +171,6 @@ const ( UnwindCommandSignal int32 = C.UNWIND_COMMAND_SIGNAL UnwindCommandFramePointer int32 = C.UNWIND_COMMAND_FRAME_POINTER UnwindCommandGoSystemstack int32 = C.UNWIND_COMMAND_GO_SYSTEMSTACK - UnwindCommandGoMcall int32 = C.UNWIND_COMMAND_GO_MCALL // UnwindDeref handling from the C header file UnwindDerefMask int32 = C.UNWIND_DEREF_MASK diff --git a/tools/gooffsets/main.go b/tools/gooffsets/main.go index 61f19f051..3b8a70ecf 100644 --- a/tools/gooffsets/main.go +++ b/tools/gooffsets/main.go @@ -20,8 +20,6 @@ type goLabelsOffsets struct { hmapLog2BucketCount uint32 hmapBuckets uint32 schedSp uint32 - schedPc uint32 - schedBp uint32 } func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { @@ -77,20 +75,6 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { if err != nil { return nil, err } - _, schedPcOff, err := ReadChildTypeAndOffset(r, "pc") - if err != nil { - return nil, err - } - r.Seek(schedType.Offset) - _, err = r.Next() - if err != nil { - return nil, err - } - _, schedBpOff, err := ReadChildTypeAndOffset(r, "bp") - if err != nil { - return nil, err - } - mType, err := ReadType(r, mPType) if err != nil { return nil, err @@ -129,8 +113,6 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { curg: uint32(curgOffset), labels: uint32(labelsOffset), schedSp: uint32(schedOffset + schedSpOff), - schedPc: uint32(schedOffset + schedPcOff), - schedBp: uint32(schedOffset + schedBpOff), }, nil } @@ -165,8 +147,6 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { hmapLog2BucketCount: uint32(bOffset), hmapBuckets: uint32(bucketsOffset), schedSp: uint32(schedOffset + schedSpOff), - schedPc: uint32(schedOffset + schedPcOff), - schedBp: uint32(schedOffset + schedBpOff), }, nil } @@ -212,7 +192,5 @@ func main() { fmt.Printf("\thmap_log2_bucket_count: %d,\n", offs.hmapLog2BucketCount) fmt.Printf("\thmap_buckets: %d,\n", offs.hmapBuckets) fmt.Printf("\tsched_sp: %d,\n", offs.schedSp) - fmt.Printf("\tsched_pc: %d,\n", offs.schedPc) - fmt.Printf("\tsched_bp: %d,\n", offs.schedBp) fmt.Println("},") } From 56cbf947e8f3b5792f83d9369d3f6dfab8b8d6aa Mon Sep 17 00:00:00 2001 From: Martin Levesque Date: Tue, 7 Apr 2026 19:47:13 +0000 Subject: [PATCH 06/12] feat: add mcall support and fix systemstack arm64 register order --- interpreter/golabels/runtime_data.go | 14 +- nativeunwind/elfunwindinfo/elfgopclntab.go | 6 +- .../stackdeltatypes/stackdeltatypes.go | 10 +- processmanager/execinfomanager/manager.go | 4 +- support/ebpf/go_runtime.h | 33 +- support/ebpf/native_stack_trace.ebpf.c | 431 +++++++++++++----- support/ebpf/types.h | 8 +- support/types.go | 3 + support/types_def.go | 1 + tools/gooffsets/main.go | 26 ++ 10 files changed, 407 insertions(+), 129 deletions(-) diff --git a/interpreter/golabels/runtime_data.go b/interpreter/golabels/runtime_data.go index f20c8d0e7..ca876dfd4 100644 --- a/interpreter/golabels/runtime_data.go +++ b/interpreter/golabels/runtime_data.go @@ -27,21 +27,27 @@ func getOffsets(vers string) support.GoLabelsOffsets { Hmap_log2_bucket_count: 0, // https://github.com/golang/go/blob/6885bad7dd86880be6929c0/src/runtime/map.go#L118 Hmap_buckets: 0, - // Absolute offsets from g struct start for g.sched (gobuf) fields. - // g.sched starts at offset 56 (immediately after g.m at offset 48, pointer 8 bytes). - // gobuf.sp is at offset 0 within gobuf - stable across all supported Go versions. - // https://github.com/golang/go/blob/80e2e474b8d9124d03b744f/src/runtime/runtime2.go#L325 + // g.sched is a gobuf struct immediately following g.m (offset 48 + 8 = 56). + // gobuf.sp is the first field (offset 0 in gobuf), gobuf.pc is the second (offset 8). + // https://github.com/golang/go/blob/80e2e474b8d9124d03b744f4e2da099a4eec5957/src/runtime/runtime2.go#L311 Sched_sp: 56, + Sched_pc: 64, + // gobuf.bp is at offset 48 within gobuf in go1.24 and earlier. In go1.25 and later, + // it is at offset 40 because of ret field removal. (offset 56 + 48 = 104) + // go1.25: https://github.com/golang/go/blob/6e676ab2b809d46623acb5988248d95d1eb7939c/src/runtime/runtime2.go#L315 + Sched_bp: 104, } // Version enforcement takes place in the Loader function. if version.Compare(vers, "go1.26") >= 0 { offsets.Curg = 184 offsets.Labels = 352 + offsets.Sched_bp = 96 return offsets } else if version.Compare(vers, "go1.25") >= 0 { offsets.Curg = 184 offsets.Labels = 344 + offsets.Sched_bp = 96 return offsets } else if version.Compare(vers, "go1.24") >= 0 { offsets.Labels = 352 diff --git a/nativeunwind/elfunwindinfo/elfgopclntab.go b/nativeunwind/elfunwindinfo/elfgopclntab.go index f2684f271..14d639d23 100644 --- a/nativeunwind/elfunwindinfo/elfgopclntab.go +++ b/nativeunwind/elfunwindinfo/elfgopclntab.go @@ -32,10 +32,10 @@ var goFunctionsStopDelta = map[string]*sdtypes.UnwindInfo{ "runtime.goexit": &sdtypes.UnwindInfoStop, // return address in all goroutine stacks // Stack switch functions: when encountered during unwinding on the g0 (system) stack, - // the unwinder crosses back to the goroutine stack by reading the goroutine's saved - // context from gobuf. + // the unwinder crosses back to the goroutine stack using the goroutine's saved + // context from g.sched (gobuf). "runtime.systemstack": &sdtypes.UnwindInfoGoSystemstack, - "runtime.mcall": &sdtypes.UnwindInfoStop, + "runtime.mcall": &sdtypes.UnwindInfoGoMcall, // signal return frame "runtime.sigreturn": &sdtypes.UnwindInfoSignal, diff --git a/nativeunwind/stackdeltatypes/stackdeltatypes.go b/nativeunwind/stackdeltatypes/stackdeltatypes.go index 43e121976..82ac67a66 100644 --- a/nativeunwind/stackdeltatypes/stackdeltatypes.go +++ b/nativeunwind/stackdeltatypes/stackdeltatypes.go @@ -49,10 +49,18 @@ var UnwindInfoFramePointer = UnwindInfo{Flags: support.UnwindFlagCommand, // UnwindInfoGoSystemstack is the stack delta info for runtime.systemstack. // When encountered during unwinding, the unwinder crosses from the g0 system // stack to the goroutine stack by reading the saved FP and RA from the frame -// pointer prologue at gobuf.sp (which equals gobuf.bp on both amd64 and arm64). +// pointer prologue at gobuf.sp. var UnwindInfoGoSystemstack = UnwindInfo{Flags: support.UnwindFlagCommand, Param: support.UnwindCommandGoSystemstack} +// UnwindInfoGoMcall is the stack delta info for runtime.mcall. +// When encountered during unwinding, the unwinder crosses from the g0 system +// stack to the goroutine stack by reading the caller's saved registers directly +// from gobuf.{pc, sp, bp}. If m.curg is nil (after dropg), the goroutine pointer +// is recovered from the g0 stack at *(g0.sched.sp - 8). +var UnwindInfoGoMcall = UnwindInfo{Flags: support.UnwindFlagCommand, + Param: support.UnwindCommandGoMcall} + // UnwindInfoLR contains the description to unwind ARM64 function without a frame (LR only) var UnwindInfoLR = UnwindInfo{ BaseReg: support.UnwindRegSp, diff --git a/processmanager/execinfomanager/manager.go b/processmanager/execinfomanager/manager.go index 50106c729..08d50526d 100644 --- a/processmanager/execinfomanager/manager.go +++ b/processmanager/execinfomanager/manager.go @@ -127,9 +127,9 @@ func NewExecutableInfoManager( interpreterLoaders = append(interpreterLoaders, apmint.Loader) - // Always register golabels loader: the native unwinder needs Go runtime + // Register golabels loader. The native unwinder needs Go runtime // offsets (m, curg, g.sched) to cross the systemstack boundary, - // regardless of whether custom labels extraction is enabled. + // to perform Go stack unwinding. interpreterLoaders = append(interpreterLoaders, golabels.Loader) deferredFileIDs, err := lru.NewSynced[host.FileID, libpf.Void](deferredFileIDSize, diff --git a/support/ebpf/go_runtime.h b/support/ebpf/go_runtime.h index 83ff3e088..a89d0b091 100644 --- a/support/ebpf/go_runtime.h +++ b/support/ebpf/go_runtime.h @@ -7,13 +7,14 @@ #include "tsd.h" #include "types.h" -// get_m_ptr reads the M (machine/OS thread) pointer for the current goroutine. -// It does so by reading the G (goroutine) pointer from thread-local storage, -// then following the g.m pointer. +// get_g_ptr reads the current G (goroutine) pointer from thread-local storage. +// TLS always contains the G that is currently executing on the thread. During +// systemstack/mcall, this is g0 (the system goroutine) since we are on the +// system stack. // // On aarch64, when tls_offset is 0 (non-CGO binaries), the G pointer is taken // from the r28 register saved in the unwind state instead of TLS. -static EBPF_INLINE void *get_m_ptr(struct GoLabelsOffsets *offs, UnwindState *state) +static EBPF_INLINE u64 get_g_ptr(struct GoLabelsOffsets *offs, UnwindState *state) { #if defined(__x86_64__) (void)state; @@ -21,8 +22,8 @@ static EBPF_INLINE void *get_m_ptr(struct GoLabelsOffsets *offs, UnwindState *st u64 g_addr = 0; void *tls_base = NULL; if (tsd_get_base(&tls_base) < 0) { - DEBUG_PRINT("cl: failed to get tsd base; can't read m_ptr"); - return NULL; + DEBUG_PRINT("cl: failed to get tsd base; can't read g_addr"); + return 0; } DEBUG_PRINT( "cl: read tsd_base at 0x%lx, g offset: %d", (unsigned long)tls_base, offs->tls_offset); @@ -33,17 +34,31 @@ static EBPF_INLINE void *get_m_ptr(struct GoLabelsOffsets *offs, UnwindState *st g_addr = state->r28; #elif defined(__x86_64__) DEBUG_PRINT("cl: TLS offset for g pointer missing for amd64"); - return NULL; + return 0; #endif } if (g_addr == 0) { if (bpf_probe_read_user(&g_addr, sizeof(void *), (void *)((s64)tls_base + offs->tls_offset))) { DEBUG_PRINT("cl: failed to read g_addr, tls_base(%lx)", (unsigned long)tls_base); - return NULL; + return 0; } } + DEBUG_PRINT("cl: g_addr 0x%lx", (unsigned long)g_addr); + return g_addr; +} + +// get_m_ptr reads the M (machine/OS thread) pointer for the current goroutine. +// It does so by reading the G (goroutine) pointer from thread-local storage, +// then following the g.m pointer. +static EBPF_INLINE void *get_m_ptr(struct GoLabelsOffsets *offs, UnwindState *state) +{ + u64 g_addr = get_g_ptr(offs, state); + if (!g_addr) { + return NULL; + } + DEBUG_PRINT("cl: reading m_ptr_addr at 0x%lx + 0x%x", (unsigned long)g_addr, offs->m_offset); void *m_ptr_addr; if (bpf_probe_read_user(&m_ptr_addr, sizeof(void *), (void *)(g_addr + offs->m_offset))) { @@ -54,4 +69,4 @@ static EBPF_INLINE void *get_m_ptr(struct GoLabelsOffsets *offs, UnwindState *st return m_ptr_addr; } -#endif // OPTI_GO_RUNTIME_H \ No newline at end of file +#endif // OPTI_GO_RUNTIME_H diff --git a/support/ebpf/native_stack_trace.ebpf.c b/support/ebpf/native_stack_trace.ebpf.c index db68a6ec8..05d40ed9f 100644 --- a/support/ebpf/native_stack_trace.ebpf.c +++ b/support/ebpf/native_stack_trace.ebpf.c @@ -301,18 +301,169 @@ unwind_calc_register_with_deref(UnwindState *state, u8 baseReg, s32 param, bool } #endif +// go_get_go_offsets returns GoLabelsOffsets for the current process, or NULL. +static EBPF_INLINE GoLabelsOffsets *go_get_go_offsets(void) +{ + PerCPURecord *cpu_record = get_per_cpu_record(); + if (!cpu_record) { + return NULL; + } + u32 pid = cpu_record->trace.pid; + GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); + if (!go_offs || !go_offs->sched_sp) { + return NULL; + } + return go_offs; +} + +// go_read_curg resolves the user goroutine address via TLS -> g -> m -> m.curg. +// During systemstack, m.curg is always valid (systemstack does not call dropg contrary to mcall). +// Returns the curg address, or 0 on failure (sets *stop = true). +static EBPF_INLINE u64 go_read_curg(GoLabelsOffsets *go_offs, UnwindState *state, bool *stop) +{ + void *m_ptr = get_m_ptr(go_offs, state); + if (!m_ptr) { + DEBUG_PRINT("GO: failed to get m_ptr, stopping"); + *stop = true; + return 0; + } + u64 curg = 0; + if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + go_offs->curg))) { + DEBUG_PRINT("GO: failed to read curg, stopping"); + *stop = true; + return 0; + } + if (!curg) { + DEBUG_PRINT("GO: no user goroutine (curg == NULL), stopping"); + *stop = true; + return 0; + } + return curg; +} + +// go_read_curg_sched_sp resolves curg via go_read_curg, then reads curg.sched.sp. +// Returns sched_sp or 0 on failure. Passes curg via *out_curg. +static EBPF_INLINE u64 +go_read_curg_sched_sp(GoLabelsOffsets *go_offs, UnwindState *state, bool *stop, u64 *out_curg) +{ + u64 curg = go_read_curg(go_offs, state, stop); + if (!curg) { + return 0; + } + u64 sched_sp = 0; + if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { + DEBUG_PRINT("GO: failed to read sched_sp, stopping"); + *stop = true; + return 0; + } + if (!sched_sp) { + DEBUG_PRINT("GO: gobuf not populated (sched_sp==0), stopping"); + *stop = true; + return 0; + } + *out_curg = curg; + return sched_sp; +} + +// go_resolve_mcall_goroutine resolves the user goroutine for mcall unwinding. +// First tries m.curg (valid before dropg). If nil, falls back +// to reading the goroutine pointer from g0's stack at *(g0.sched.sp - 8), where +// mcall deterministically places it (via PUSHQ on AMD64, or ABIInternal arg spill +// on ARM64). The candidate is validated to guard +// against stale data on ARM64 when fn didn't spill. +// +// Returns the user goroutine address, or 0 on failure (caller should STOP). +static EBPF_INLINE u64 go_resolve_mcall_goroutine(struct GoLabelsOffsets *offs, UnwindState *state) +{ + u64 g0_addr = get_g_ptr(offs, state); + if (!g0_addr) { + return 0; + } + + void *m_ptr = NULL; + if (bpf_probe_read_user(&m_ptr, sizeof(m_ptr), (void *)(g0_addr + offs->m_offset))) { + return 0; + } + if (!m_ptr) { + return 0; + } + + // Try m.curg first (valid before dropg, cold path). + u64 curg = 0; + if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + offs->curg))) { + return 0; + } + if (curg) { + DEBUG_PRINT("GO_MCALL: found curg via m.curg = 0x%lx", (unsigned long)curg); + return curg; + } + + // m.curg is nil (dropg was called). Recover old_g from g0 stack. + u64 g0_sched_sp = 0; + if (bpf_probe_read_user(&g0_sched_sp, sizeof(g0_sched_sp), (void *)(g0_addr + offs->sched_sp))) { + DEBUG_PRINT("GO_MCALL: failed to read g0.sched.sp"); + return 0; + } + if (!g0_sched_sp) { + DEBUG_PRINT("GO_MCALL: g0.sched.sp is 0"); + return 0; + } + + u64 candidate = 0; + if (bpf_probe_read_user(&candidate, sizeof(candidate), (void *)(g0_sched_sp - 8))) { + DEBUG_PRINT("GO_MCALL: failed to read *(g0.sched.sp - 8)"); + return 0; + } + if (!candidate) { + DEBUG_PRINT("GO_MCALL: candidate goroutine is NULL"); + return 0; + } + + // Validate: the goroutine must still be parked (g.m == nil). + // After dropg(), g.m is set to nil. If the goroutine has been rescheduled on + // another M, g.m points to that M (non-nil) and its gobuf may have been + // overwritten by systemstack or another mechanism reading it would produce + // a wrong stack trace (e.g., systemstack_switch frames from another thread). + u64 cand_m = 0; + if (bpf_probe_read_user(&cand_m, sizeof(cand_m), (void *)(candidate + offs->m_offset))) { + DEBUG_PRINT("GO_MCALL: failed to read candidate.m"); + return 0; + } + if (cand_m) { + DEBUG_PRINT( + "GO_MCALL: candidate.m is non-nil (0x%lx), goroutine rescheduled on another M", + (unsigned long)cand_m); + return 0; + } + + // Also check that gobuf.sp is non-zero (populated by mcall before the switch). + u64 cand_sched_sp = 0; + if (bpf_probe_read_user( + &cand_sched_sp, sizeof(cand_sched_sp), (void *)(candidate + offs->sched_sp))) { + DEBUG_PRINT("GO_MCALL: failed to read candidate.sched.sp"); + return 0; + } + if (!cand_sched_sp) { + DEBUG_PRINT("GO_MCALL: candidate.sched.sp is 0"); + return 0; + } + + DEBUG_PRINT("GO_MCALL: recovered goroutine 0x%lx from g0 stack slot", (unsigned long)candidate); + return candidate; +} + // Stack unwinding in the absence of frame pointers can be a bit involved, so // this comment explains what the following code does. // // One begins unwinding a frame somewhere in the middle of execution. // On x86_64, registers RIP (PC), RSP (SP), and RBP (FP) are available. // -// This function resolves a "stack delta" command from from our internal maps. +// This function resolves a "stack delta" command from our internal maps. // This stack delta refers to a rule on how to unwind the state. In the simple // case it just provides SP delta and potentially offset from where to recover // FP value. See unwind_calc_register[_with_deref]() on the expressions supported. // -// The function sets the bool pointed to by the given `stop` pointer to `false` +// The function sets the bool pointed to by the given `stop` pointer to `true` // if the main ebpf unwinder should exit. This is the case if the current PC // is marked with UNWIND_COMMAND_STOP which marks entry points (main function, // thread spawn function, signal handlers, ...). @@ -383,7 +534,7 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) // gosave_systemstack_switch (asm_amd64.s) builds gobuf as follows: // // MOVQ $runtime.systemstack_switch+8(SB), R9 - // MOVQ R9, gobuf_pc(R14) // gobuf.pc = UNDEF marker - useless for unwinding + // MOVQ R9, gobuf_pc(R14) // gobuf.pc = UNDEF marker; useless for unwinding // // LEAQ 8(SP), R9 // MOVQ R9, gobuf_sp(R14) // gobuf.sp = SP+8 @@ -396,10 +547,13 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) // https://github.com/golang/go/blob/affadc7997466dfacad5b9a3dc90ee5e7a7b6085/src/cmd/internal/obj/x86/obj6.go#L637 // // Stack layout inside gosave_systemstack_switch at the time of LEAQ: - // [SP+0] = RA back into systemstack (pushed by CALL gosave, useless) - // [SP+8] = saved old RBP of caller (pushed by systemstack's PUSH RBP prologue) - // [SP+16] = RA caller of systemstack (pushed by CALL systemstack) + // [high address] // SP+24 = address of SP before the call to systemstack + // [SP+16] = RA caller of systemstack (pushed by CALL systemstack) + // [SP+8] = saved old RBP of caller = gobuf.sp after LEAQ (pushed by systemstack + // prologue) + // [SP+0] = RA back into systemstack (pushed by CALL gosave) + // [low address] // // We want to resume unwinding at the caller of systemstack, so: // pc = *(gobuf.sp + 8) = RA caller of systemstack @@ -410,71 +564,100 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) // synthetic marker for Go's stack scanner and scheduler, not a real return address. // // https://github.com/golang/go/blob/917949cc1d16c652cb09ba369718f45e5d814d8f/src/runtime/asm_amd64.s#L886 - PerCPURecord *cpu_record = get_per_cpu_record(); - if (!cpu_record) { - DEBUG_PRINT("GO_SYSTEMSTACK: no per-CPU record, stopping"); - *stop = true; - return ERR_OK; - } - u32 pid = cpu_record->trace.pid; - GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); + GoLabelsOffsets *go_offs = go_get_go_offsets(); if (!go_offs) { - DEBUG_PRINT("GO_SYSTEMSTACK: no Go offsets for this process, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: no Go offsets, stopping"); *stop = true; return ERR_OK; } - if (!go_offs->sched_sp) { - DEBUG_PRINT("GO_SYSTEMSTACK: sched offsets not configured, stopping"); - *stop = true; + u64 curg = 0; + u64 sched_sp = go_read_curg_sched_sp(go_offs, state, stop, &curg); + if (!sched_sp) { return ERR_OK; } - void *m_ptr = get_m_ptr(go_offs, state); - if (!m_ptr) { - DEBUG_PRINT("GO_SYSTEMSTACK: failed to get m_ptr, stopping"); + u64 caller_pc = 0, caller_fp = 0; + if ( + bpf_probe_read_user(&caller_fp, sizeof(caller_fp), (void *)sched_sp) || + bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)(sched_sp + 8))) { *stop = true; return ERR_OK; } - u64 curg = 0; - if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + go_offs->curg))) { - DEBUG_PRINT("GO_SYSTEMSTACK: failed to read curg, stopping"); + DEBUG_PRINT( + "GO_SYSTEMSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", + (unsigned long)caller_pc, + (unsigned long)(sched_sp + 16), + (unsigned long)caller_fp); + state->pc = caller_pc; + state->sp = sched_sp + 16; + state->fp = caller_fp; + unwinder_mark_nonleaf_frame(state); + goto frame_ok; + } + case UNWIND_COMMAND_GO_MCALL: { + // Cross the Go mcall boundary: recover the goroutine's saved context + // from g.sched (set by runtime.mcall when it switched from the goroutine + // stack to the g0 system stack). + // + // Unlike systemstack, mcall saves the caller's actual registers into gobuf: + // + // MOVQ 8(BX), BX // gobuf.pc = caller's return address + // LEAQ fn+0(FP), BX // gobuf.sp = caller's SP + // MOVQ (BP), BX // gobuf.bp = caller's FP (dereferenced) + // + // Recovery reads gobuf.{pc, sp, bp} directly, no stack dereferencing needed. + // + // After saving gobuf, mcall switches to g0 and calls fn(old_g): + // + // MOVQ R14, AX // AX = old_g (user goroutine) + // MOVQ SI, R14 // R14 = g0 + // MOVQ R14, FS:0xfffffff8 // TLS = g0 + // MOVQ (g_sched+gobuf_sp)(R14), SP // SP = g0.sched.sp + // MOVQ $0, BP // clear frame pointer + // PUSHQ AX // *(g0.sched.sp - 8) = old_g + // CALL R12 // fn(old_g) + // + // fn (park_m, goexit0, etc.) typically calls dropg() which sets m.curg + // to nil. go_resolve_mcall_goroutine() handles this by falling back to + // *(g0.sched.sp - 8) where PUSHQ AX placed the goroutine pointer. + // + // https://github.com/golang/go/blob/917949cc1d16c652cb09ba369718f45e5d814d8f/src/runtime/asm_amd64.s#L458 + GoLabelsOffsets *go_offs = go_get_go_offsets(); + if (!go_offs) { + DEBUG_PRINT("GO_MCALL: no Go offsets, stopping"); *stop = true; return ERR_OK; } + u64 curg = go_resolve_mcall_goroutine(go_offs, state); if (!curg) { - DEBUG_PRINT("GO_SYSTEMSTACK: no user goroutine (curg == NULL), stopping"); + DEBUG_PRINT("GO_MCALL: could not resolve user goroutine, stopping"); *stop = true; return ERR_OK; } - u64 sched_sp = 0; - if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { - DEBUG_PRINT("GO_SYSTEMSTACK: failed to read sched_sp, stopping"); + u64 saved_pc = 0, saved_sp = 0, saved_bp = 0; + if ( + bpf_probe_read_user(&saved_sp, sizeof(saved_sp), (void *)(curg + go_offs->sched_sp)) || + bpf_probe_read_user(&saved_pc, sizeof(saved_pc), (void *)(curg + go_offs->sched_pc)) || + bpf_probe_read_user(&saved_bp, sizeof(saved_bp), (void *)(curg + go_offs->sched_bp))) { + DEBUG_PRINT("GO_MCALL: failed to read gobuf fields, stopping"); *stop = true; return ERR_OK; } - if (!sched_sp) { - DEBUG_PRINT("GO_SYSTEMSTACK: gobuf not populated (sched_sp==0), stopping"); - *stop = true; - return ERR_OK; - } - u64 caller_pc = 0, caller_fp = 0; - if (bpf_probe_read_user(&caller_fp, sizeof(caller_fp), (void *)sched_sp)) { - DEBUG_PRINT("GO_SYSTEMSTACK: failed to read caller FP, stopping"); - *stop = true; - return ERR_OK; - } - if (bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)(sched_sp + 8))) { - DEBUG_PRINT("GO_SYSTEMSTACK: failed to read caller PC, stopping"); + if (!saved_sp || !saved_pc) { + DEBUG_PRINT( + "GO_MCALL: gobuf not populated (sp=0x%lx pc=0x%lx), stopping", + (unsigned long)saved_sp, + (unsigned long)saved_pc); *stop = true; return ERR_OK; } DEBUG_PRINT( - "GO_SYSTEMSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", - (unsigned long)caller_pc, - (unsigned long)(sched_sp + 16), - (unsigned long)caller_fp); - state->pc = caller_pc; - state->sp = sched_sp + 16; - state->fp = caller_fp; + "GO_MCALL: recovered context: pc=0x%lx, sp=0x%lx, fp=0x%lx", + (unsigned long)saved_pc, + (unsigned long)saved_sp, + (unsigned long)saved_bp); + state->pc = saved_pc; + state->sp = saved_sp; + state->fp = saved_bp; unwinder_mark_nonleaf_frame(state); goto frame_ok; } @@ -588,107 +771,141 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) // // gosave_systemstack_switch (asm_arm64.s) builds gobuf as follows: // - // MOVD $runtime·systemstack_switch(SB), R0 + // MOVD $runtime.systemstack_switch(SB), R0 // ADD $8, R0 // get past prologue - // MOVD R0, (g_sched+gobuf_pc)(g) // gobuf.pc = UNDEF marker - useless + // MOVD R0, (g_sched+gobuf_pc)(g) // gobuf.pc = UNDEF marker; useless for unwinding // // MOVD RSP, R0 // MOVD R0, (g_sched+gobuf_sp)(g) // gobuf.sp = RSP // // MOVD R29, (g_sched+gobuf_bp)(g) // gobuf.bp = R29 (== gobuf.sp, see below) // - // MOVD $0, (g_sched+gobuf_lr)(g) // gobuf.lr = 0 (explicitly zeroed) + // MOVD $0, (g_sched+gobuf_lr)(g) // gobuf.lr = 0 // // Although systemstack is declared with $0 frame size, Go's linker injects - // a frame pointer prologue (STP (R29, R30), -16(RSP)! + MOVD RSP, R29) for - // all non-NOFRAME functions. + // a frame pointer prologue for all non-NOFRAME functions. On arm64, Go uses + // MOVD.W (NOT standard STP), which stores LR and R29 in the opposite order: + // https://github.com/golang/go/blob/917949cc1d16c652cb09ba369718f45e5d814d8f/src/cmd/internal/obj/arm64/obj7.go#L653 // - // Stack layout inside gosave_systemstack_switch at the time of MOVD RSP: - // [SP+0] = saved R29 of caller (stored by STP in systemstack's prologue) - // [SP+8] = saved LR = RA caller of systemstack (stored by STP) + // MOVD.W R30, -16(RSP) // RSP -= 16, *(RSP) = LR (at SP+0) + // MOVD R29, -8(RSP) // *(RSP-8) = R29 (at SP-8) + // SUB $8, RSP, R29 // R29 = RSP - 8 // - // Note: unlike amd64 where CALL pushes RA onto the stack, arm64's BL only - // writes to the LR register — so there is no extra RA slot on the stack. - // The STP pair [R29, LR] is the entire frame. + // Stack layout inside gosave_systemstack_switch at the time of MOVD RSP: + // [SP+0] = saved LR = RA caller of systemstack (stored by MOVD.W) + // [SP-8] = saved R29 of caller (stored by MOVD R29) // - // After STP + MOVD RSP, R29 in systemstack's prologue: - // R29 = RSP_after_STP = SP inside gosave - // So gobuf.bp == gobuf.sp — both point to the saved R29/LR pair. + // R29 = SP - 8, so gobuf.bp = gobuf.sp - 8. // // We want to resume unwinding at the caller of systemstack, so: - // pc = *(gobuf.sp + 8) = LR saved by STP = RA caller of systemstack + // pc = *(gobuf.sp + 0) = LR saved by MOVD.W = RA caller of systemstack // sp = gobuf.sp + 16 = SP before the call to systemstack - // fp = *(gobuf.sp + 0) = R29 saved by STP = frame pointer of the caller + // fp = *(gobuf.sp - 8) = R29 saved by MOVD = frame pointer of the caller // // gobuf.pc (systemstack_switch = UNDEF) is intentionally ignored: it is a // synthetic marker for Go's stack scanner and scheduler, not a real return address. // - // https://github.com/golang/go/blob/5a928e5a37dc632bbb1794fe0e0846e6352be8b2/src/runtime/asm_arm64.s#L282 - PerCPURecord *cpu_record = get_per_cpu_record(); - if (!cpu_record) { - DEBUG_PRINT("GO_SYSTEMSTACK: no per-CPU record, stopping"); - *stop = true; - return ERR_OK; - } - u32 pid = cpu_record->trace.pid; - GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); + // https://github.com/golang/go/blob/5a928e5a37dc632bbb1794fe0e0846e6352be8b2/src/runtime/asm_arm64.s#L1124 + GoLabelsOffsets *go_offs = go_get_go_offsets(); if (!go_offs) { - DEBUG_PRINT("GO_SYSTEMSTACK: no Go offsets for this process, stopping"); + DEBUG_PRINT("GO_SYSTEMSTACK: no Go offsets, stopping"); *stop = true; return ERR_OK; } - if (!go_offs->sched_sp) { - DEBUG_PRINT("GO_SYSTEMSTACK: sched offsets not configured, stopping"); - *stop = true; + u64 curg = 0; + u64 sched_sp = go_read_curg_sched_sp(go_offs, state, stop, &curg); + if (!sched_sp) { return ERR_OK; } - void *m_ptr = get_m_ptr(go_offs, state); - if (!m_ptr) { - DEBUG_PRINT("GO_SYSTEMSTACK: failed to get m_ptr, stopping"); + u64 caller_pc = 0, caller_fp = 0; + if ( + bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)sched_sp) || + bpf_probe_read_user(&caller_fp, sizeof(caller_fp), (void *)(sched_sp - 8))) { *stop = true; return ERR_OK; } - u64 curg = 0; - if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + go_offs->curg))) { - DEBUG_PRINT("GO_SYSTEMSTACK: failed to read curg, stopping"); + DEBUG_PRINT( + "GO_SYSTEMSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", + (unsigned long)caller_pc, + (unsigned long)(sched_sp + 16), + (unsigned long)caller_fp); + state->pc = normalize_pac_ptr(caller_pc); + state->sp = sched_sp + 16; + state->fp = caller_fp; + state->lr = 0; + state->r28 = curg; + unwinder_mark_nonleaf_frame(state); + goto frame_ok; + } + case UNWIND_COMMAND_GO_MCALL: { + // Cross the Go mcall boundary: recover the goroutine's saved context + // from g.sched (set by runtime.mcall when it switched from the goroutine + // stack to the g0 system stack). + // + // Unlike systemstack, mcall on ARM64 saves the caller's actual registers: + // + // MOVD RSP, R0 + // MOVD R0, (g_sched+gobuf_sp)(g) // gobuf.sp = caller's SP + // MOVD R29, (g_sched+gobuf_bp)(g) // gobuf.bp = caller's FP + // MOVD R30, (g_sched+gobuf_pc)(g) // gobuf.pc = LR = caller's return addr + // + // mcall is NOSPLIT|NOFRAME - no linker-injected prologue. + // Recovery reads gobuf.{pc, sp, bp} directly. + // + // After saving gobuf, mcall switches to g0 and calls fn(old_g): + // + // MOVD (g_sched+gobuf_sp)(g), R0 + // MOVD R0, RSP // RSP = g0.sched.sp + // MOVD ZR, R29 + // MOVD R3, R0 // R0 = old_g (fn's argument) + // MOVD ZR, -16(RSP) + // SUB $16, RSP // allocate 16-byte arg space + // BL (R4) // fn(old_g), entry SP = g0.sched.sp - 16 + // + // fn (park_m, goexit0, etc.) typically calls dropg() which sets m.curg + // to nil. go_resolve_mcall_goroutine() handles this by falling back to + // *(g0.sched.sp - 8), where fn's ABIInternal prologue spills R0 (old_g) + // to its arg area at fn_entry_SP + 8 = g0.sched.sp - 16 + 8 = g0.sched.sp - 8. + // (verified via DWARF: DW_OP_fbreg(+8) = CFA+8) + // + // https://github.com/golang/go/blob/5a928e5a37dc632bbb1794fe0e0846e6352be8b2/src/runtime/asm_arm64.s#L215 + GoLabelsOffsets *go_offs = go_get_go_offsets(); + if (!go_offs) { + DEBUG_PRINT("GO_MCALL: no Go offsets, stopping"); *stop = true; return ERR_OK; } + u64 curg = go_resolve_mcall_goroutine(go_offs, state); if (!curg) { - DEBUG_PRINT("GO_SYSTEMSTACK: no user goroutine (curg == NULL), stopping"); - *stop = true; - return ERR_OK; - } - u64 sched_sp = 0; - if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { - DEBUG_PRINT("GO_SYSTEMSTACK: failed to read sched_sp, stopping"); - *stop = true; - return ERR_OK; - } - if (!sched_sp) { - DEBUG_PRINT("GO_SYSTEMSTACK: gobuf not populated (sched_sp==0), stopping"); + DEBUG_PRINT("GO_MCALL: could not resolve user goroutine, stopping"); *stop = true; return ERR_OK; } - u64 caller_pc = 0, caller_fp = 0; - if (bpf_probe_read_user(&caller_fp, sizeof(caller_fp), (void *)sched_sp)) { - DEBUG_PRINT("GO_SYSTEMSTACK: failed to read caller FP, stopping"); + u64 saved_pc = 0, saved_sp = 0, saved_bp = 0; + if ( + bpf_probe_read_user(&saved_sp, sizeof(saved_sp), (void *)(curg + go_offs->sched_sp)) || + bpf_probe_read_user(&saved_pc, sizeof(saved_pc), (void *)(curg + go_offs->sched_pc)) || + bpf_probe_read_user(&saved_bp, sizeof(saved_bp), (void *)(curg + go_offs->sched_bp))) { + DEBUG_PRINT("GO_MCALL: failed to read gobuf fields, stopping"); *stop = true; return ERR_OK; } - if (bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)(sched_sp + 8))) { - DEBUG_PRINT("GO_SYSTEMSTACK: failed to read caller PC, stopping"); + if (!saved_sp || !saved_pc) { + DEBUG_PRINT( + "GO_MCALL: gobuf not populated (sp=0x%lx pc=0x%lx), stopping", + (unsigned long)saved_sp, + (unsigned long)saved_pc); *stop = true; return ERR_OK; } DEBUG_PRINT( - "GO_SYSTEMSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", - (unsigned long)caller_pc, - (unsigned long)(sched_sp + 16), - (unsigned long)caller_fp); - state->pc = normalize_pac_ptr(caller_pc); - state->sp = sched_sp + 16; - state->fp = caller_fp; + "GO_MCALL: recovered context: pc=0x%lx, sp=0x%lx, fp=0x%lx", + (unsigned long)saved_pc, + (unsigned long)saved_sp, + (unsigned long)saved_bp); + state->pc = normalize_pac_ptr(saved_pc); + state->sp = saved_sp; + state->fp = saved_bp; state->lr = 0; state->r28 = curg; unwinder_mark_nonleaf_frame(state); diff --git a/support/ebpf/types.h b/support/ebpf/types.h index 0d128774e..e5ba29f47 100644 --- a/support/ebpf/types.h +++ b/support/ebpf/types.h @@ -932,6 +932,8 @@ typedef struct StackDelta { #define UNWIND_COMMAND_FRAME_POINTER 4 // Cross Go systemstack boundary using goroutine saved context from gobuf stack frame #define UNWIND_COMMAND_GO_SYSTEMSTACK 5 +// Cross Go mcall boundary using goroutine saved context from gobuf fields directly. +#define UNWIND_COMMAND_GO_MCALL 6 // StackDeltaPageKey is the look up key for stack delta page map. typedef struct StackDeltaPageKey { @@ -1050,9 +1052,9 @@ typedef struct GoLabelsOffsets { u32 hmap_log2_bucket_count; u32 hmap_buckets; s32 tls_offset; - // Offset within g.sched (gobuf) for goroutine saved context, used to cross - // the systemstack boundary during stack unwinding. - u32 sched_sp; // offset of g.sched.sp from the start of g + u32 sched_sp; + u32 sched_pc; + u32 sched_bp; } GoLabelsOffsets; #endif // OPTI_TYPES_H diff --git a/support/types.go b/support/types.go index 820b17634..efceb19c6 100644 --- a/support/types.go +++ b/support/types.go @@ -201,6 +201,8 @@ type GoLabelsOffsets struct { Hmap_buckets uint32 Tls_offset int32 Sched_sp uint32 + Sched_pc uint32 + Sched_bp uint32 } type HotspotProcInfo struct { Codecache_start uint64 @@ -365,6 +367,7 @@ const ( UnwindCommandSignal int32 = 0x3 UnwindCommandFramePointer int32 = 0x4 UnwindCommandGoSystemstack int32 = 0x5 + UnwindCommandGoMcall int32 = 0x6 UnwindDerefMask int32 = 0x7 UnwindDerefMultiplier int32 = 0x8 diff --git a/support/types_def.go b/support/types_def.go index cd71e4ff2..a26fc2194 100644 --- a/support/types_def.go +++ b/support/types_def.go @@ -171,6 +171,7 @@ const ( UnwindCommandSignal int32 = C.UNWIND_COMMAND_SIGNAL UnwindCommandFramePointer int32 = C.UNWIND_COMMAND_FRAME_POINTER UnwindCommandGoSystemstack int32 = C.UNWIND_COMMAND_GO_SYSTEMSTACK + UnwindCommandGoMcall int32 = C.UNWIND_COMMAND_GO_MCALL // UnwindDeref handling from the C header file UnwindDerefMask int32 = C.UNWIND_DEREF_MASK diff --git a/tools/gooffsets/main.go b/tools/gooffsets/main.go index 3b8a70ecf..76c487b25 100644 --- a/tools/gooffsets/main.go +++ b/tools/gooffsets/main.go @@ -20,6 +20,8 @@ type goLabelsOffsets struct { hmapLog2BucketCount uint32 hmapBuckets uint32 schedSp uint32 + schedPc uint32 + schedBp uint32 } func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { @@ -75,6 +77,24 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { if err != nil { return nil, err } + _, schedPcOff, err := ReadChildTypeAndOffset(r, "pc") + if err != nil { + return nil, err + } + r.Seek(schedType.Offset) + _, err = r.Next() + if err != nil { + return nil, err + } + _, schedBpOff, err := ReadChildTypeAndOffset(r, "bp") + if err != nil { + return nil, err + } + r.Seek(schedType.Offset) + _, err = r.Next() + if err != nil { + return nil, err + } mType, err := ReadType(r, mPType) if err != nil { return nil, err @@ -113,6 +133,8 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { curg: uint32(curgOffset), labels: uint32(labelsOffset), schedSp: uint32(schedOffset + schedSpOff), + schedPc: uint32(schedOffset + schedPcOff), + schedBp: uint32(schedOffset + schedBpOff), }, nil } @@ -147,6 +169,8 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { hmapLog2BucketCount: uint32(bOffset), hmapBuckets: uint32(bucketsOffset), schedSp: uint32(schedOffset + schedSpOff), + schedPc: uint32(schedOffset + schedPcOff), + schedBp: uint32(schedOffset + schedBpOff), }, nil } @@ -192,5 +216,7 @@ func main() { fmt.Printf("\thmap_log2_bucket_count: %d,\n", offs.hmapLog2BucketCount) fmt.Printf("\thmap_buckets: %d,\n", offs.hmapBuckets) fmt.Printf("\tsched_sp: %d,\n", offs.schedSp) + fmt.Printf("\tsched_pc: %d,\n", offs.schedPc) + fmt.Printf("\tsched_bp: %d,\n", offs.schedBp) fmt.Println("},") } From 0650fdb248addebeb01385770f43987a697cc6b2 Mon Sep 17 00:00:00 2001 From: Martin Levesque Date: Thu, 9 Apr 2026 15:37:08 +0000 Subject: [PATCH 07/12] fix: use fp strategy for systemstack unwinding; apply review --- interpreter/golabels/runtime_data.go | 14 +- nativeunwind/elfunwindinfo/elfgopclntab.go | 9 +- .../stackdeltatypes/stackdeltatypes.go | 7 - support/ebpf/go_runtime.h | 3 +- support/ebpf/native_stack_trace.ebpf.c | 467 +++++------------- support/ebpf/types.h | 51 +- support/types.go | 18 +- support/types_def.go | 13 +- tools/gooffsets/main.go | 20 +- 9 files changed, 193 insertions(+), 409 deletions(-) diff --git a/interpreter/golabels/runtime_data.go b/interpreter/golabels/runtime_data.go index ca876dfd4..7b38a15b6 100644 --- a/interpreter/golabels/runtime_data.go +++ b/interpreter/golabels/runtime_data.go @@ -28,26 +28,28 @@ func getOffsets(vers string) support.GoLabelsOffsets { // https://github.com/golang/go/blob/6885bad7dd86880be6929c0/src/runtime/map.go#L118 Hmap_buckets: 0, // g.sched is a gobuf struct immediately following g.m (offset 48 + 8 = 56). - // gobuf.sp is the first field (offset 0 in gobuf), gobuf.pc is the second (offset 8). + // gobuf.sp is the first field (offset 0 in gobuf). // https://github.com/golang/go/blob/80e2e474b8d9124d03b744f4e2da099a4eec5957/src/runtime/runtime2.go#L311 Sched_sp: 56, - Sched_pc: 64, + // Offsets of pc and bp within gobuf, relative to gobuf.sp. + // gobuf.pc is always at offset 8 (second field in gobuf). + Sched_pc_off: 8, // gobuf.bp is at offset 48 within gobuf in go1.24 and earlier. In go1.25 and later, - // it is at offset 40 because of ret field removal. (offset 56 + 48 = 104) + // it is at offset 40 because of ret field removal. // go1.25: https://github.com/golang/go/blob/6e676ab2b809d46623acb5988248d95d1eb7939c/src/runtime/runtime2.go#L315 - Sched_bp: 104, + Sched_bp_off: 48, } // Version enforcement takes place in the Loader function. if version.Compare(vers, "go1.26") >= 0 { offsets.Curg = 184 offsets.Labels = 352 - offsets.Sched_bp = 96 + offsets.Sched_bp_off = 40 return offsets } else if version.Compare(vers, "go1.25") >= 0 { offsets.Curg = 184 offsets.Labels = 344 - offsets.Sched_bp = 96 + offsets.Sched_bp_off = 40 return offsets } else if version.Compare(vers, "go1.24") >= 0 { offsets.Labels = 352 diff --git a/nativeunwind/elfunwindinfo/elfgopclntab.go b/nativeunwind/elfunwindinfo/elfgopclntab.go index 14d639d23..e9ca4b601 100644 --- a/nativeunwind/elfunwindinfo/elfgopclntab.go +++ b/nativeunwind/elfunwindinfo/elfgopclntab.go @@ -31,10 +31,11 @@ var goFunctionsStopDelta = map[string]*sdtypes.UnwindInfo{ "runtime.mstart": &sdtypes.UnwindInfoStop, // topmost for the go runtime main stacks "runtime.goexit": &sdtypes.UnwindInfoStop, // return address in all goroutine stacks - // Stack switch functions: when encountered during unwinding on the g0 (system) stack, - // the unwinder crosses back to the goroutine stack using the goroutine's saved - // context from g.sched (gobuf). - "runtime.systemstack": &sdtypes.UnwindInfoGoSystemstack, + // Stack switch functions: systemstack preserves the frame pointer chain across + // the g0/user stack boundary, so standard FP unwinding traverses it naturally. + // mcall clears BP/R29 before calling fn, breaking the FP chain - it needs a + // custom command that reads gobuf.{pc, sp, bp} directly. + "runtime.systemstack": &sdtypes.UnwindInfoFramePointer, "runtime.mcall": &sdtypes.UnwindInfoGoMcall, // signal return frame diff --git a/nativeunwind/stackdeltatypes/stackdeltatypes.go b/nativeunwind/stackdeltatypes/stackdeltatypes.go index 82ac67a66..c0bc9cf6f 100644 --- a/nativeunwind/stackdeltatypes/stackdeltatypes.go +++ b/nativeunwind/stackdeltatypes/stackdeltatypes.go @@ -46,13 +46,6 @@ var UnwindInfoFramePointer = UnwindInfo{Flags: support.UnwindFlagCommand, Param: support.UnwindCommandFramePointer, } -// UnwindInfoGoSystemstack is the stack delta info for runtime.systemstack. -// When encountered during unwinding, the unwinder crosses from the g0 system -// stack to the goroutine stack by reading the saved FP and RA from the frame -// pointer prologue at gobuf.sp. -var UnwindInfoGoSystemstack = UnwindInfo{Flags: support.UnwindFlagCommand, - Param: support.UnwindCommandGoSystemstack} - // UnwindInfoGoMcall is the stack delta info for runtime.mcall. // When encountered during unwinding, the unwinder crosses from the g0 system // stack to the goroutine stack by reading the caller's saved registers directly diff --git a/support/ebpf/go_runtime.h b/support/ebpf/go_runtime.h index a89d0b091..cfb33bab2 100644 --- a/support/ebpf/go_runtime.h +++ b/support/ebpf/go_runtime.h @@ -52,7 +52,8 @@ static EBPF_INLINE u64 get_g_ptr(struct GoLabelsOffsets *offs, UnwindState *stat // get_m_ptr reads the M (machine/OS thread) pointer for the current goroutine. // It does so by reading the G (goroutine) pointer from thread-local storage, // then following the g.m pointer. -static EBPF_INLINE void *get_m_ptr(struct GoLabelsOffsets *offs, UnwindState *state) +__attribute__((unused)) static EBPF_INLINE void * +get_m_ptr(struct GoLabelsOffsets *offs, UnwindState *state) { u64 g_addr = get_g_ptr(offs, state); if (!g_addr) { diff --git a/support/ebpf/native_stack_trace.ebpf.c b/support/ebpf/native_stack_trace.ebpf.c index 05d40ed9f..d862e9f61 100644 --- a/support/ebpf/native_stack_trace.ebpf.c +++ b/support/ebpf/native_stack_trace.ebpf.c @@ -301,70 +301,6 @@ unwind_calc_register_with_deref(UnwindState *state, u8 baseReg, s32 param, bool } #endif -// go_get_go_offsets returns GoLabelsOffsets for the current process, or NULL. -static EBPF_INLINE GoLabelsOffsets *go_get_go_offsets(void) -{ - PerCPURecord *cpu_record = get_per_cpu_record(); - if (!cpu_record) { - return NULL; - } - u32 pid = cpu_record->trace.pid; - GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); - if (!go_offs || !go_offs->sched_sp) { - return NULL; - } - return go_offs; -} - -// go_read_curg resolves the user goroutine address via TLS -> g -> m -> m.curg. -// During systemstack, m.curg is always valid (systemstack does not call dropg contrary to mcall). -// Returns the curg address, or 0 on failure (sets *stop = true). -static EBPF_INLINE u64 go_read_curg(GoLabelsOffsets *go_offs, UnwindState *state, bool *stop) -{ - void *m_ptr = get_m_ptr(go_offs, state); - if (!m_ptr) { - DEBUG_PRINT("GO: failed to get m_ptr, stopping"); - *stop = true; - return 0; - } - u64 curg = 0; - if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + go_offs->curg))) { - DEBUG_PRINT("GO: failed to read curg, stopping"); - *stop = true; - return 0; - } - if (!curg) { - DEBUG_PRINT("GO: no user goroutine (curg == NULL), stopping"); - *stop = true; - return 0; - } - return curg; -} - -// go_read_curg_sched_sp resolves curg via go_read_curg, then reads curg.sched.sp. -// Returns sched_sp or 0 on failure. Passes curg via *out_curg. -static EBPF_INLINE u64 -go_read_curg_sched_sp(GoLabelsOffsets *go_offs, UnwindState *state, bool *stop, u64 *out_curg) -{ - u64 curg = go_read_curg(go_offs, state, stop); - if (!curg) { - return 0; - } - u64 sched_sp = 0; - if (bpf_probe_read_user(&sched_sp, sizeof(sched_sp), (void *)(curg + go_offs->sched_sp))) { - DEBUG_PRINT("GO: failed to read sched_sp, stopping"); - *stop = true; - return 0; - } - if (!sched_sp) { - DEBUG_PRINT("GO: gobuf not populated (sched_sp==0), stopping"); - *stop = true; - return 0; - } - *out_curg = curg; - return sched_sp; -} - // go_resolve_mcall_goroutine resolves the user goroutine for mcall unwinding. // First tries m.curg (valid before dropg). If nil, falls back // to reading the goroutine pointer from g0's stack at *(g0.sched.sp - 8), where @@ -452,6 +388,119 @@ static EBPF_INLINE u64 go_resolve_mcall_goroutine(struct GoLabelsOffsets *offs, return candidate; } +// go_unwind_mcall crosses the Go mcall stack-switch boundary by reading the +// caller's saved registers from gobuf.{pc, sp, bp}. Unlike systemstack (which +// preserves the frame pointer chain and uses FRAME_POINTER unwinding), mcall +// clears BP/R29 before calling fn, so the FP chain is broken and we must read +// the gobuf fields directly. +// +// mcall saves the caller's actual registers into gobuf before switching to g0: +// +// AMD64 (asm_amd64.s): +// MOVQ 8(BX), BX // gobuf.pc = caller's return address +// LEAQ fn+0(FP), BX // gobuf.sp = caller's SP +// MOVQ (BP), BX // gobuf.bp = caller's FP +// +// After saving gobuf, mcall switches to g0 and calls fn(old_g): +// +// MOVQ R14, AX // AX = old_g (user goroutine) +// MOVQ SI, R14 // R14 = g0 +// MOVQ R14, FS:0xfffffff8 // TLS = g0 +// MOVQ (g_sched+gobuf_sp)(R14), SP // SP = g0.sched.sp +// MOVQ $0, BP // clear frame pointer +// PUSHQ AX // *(g0.sched.sp - 8) = old_g +// CALL R12 // fn(old_g) +// https://github.com/golang/go/blob/917949cc1d16c652cb09ba369718f45e5d814d8f/src/runtime/asm_amd64.s#L427 +// +// ARM64 (asm_arm64.s, NOSPLIT|NOFRAME - no prologue): +// MOVD RSP, R0 +// MOVD R0, (g_sched+gobuf_sp)(g) // gobuf.sp = caller's SP +// MOVD R29, (g_sched+gobuf_bp)(g) // gobuf.bp = caller's FP +// MOVD R30, (g_sched+gobuf_pc)(g) // gobuf.pc = LR = caller's return addr +// +// After saving gobuf, mcall switches to g0 and calls fn(old_g): +// +// MOVD (g_sched+gobuf_sp)(g), R0 +// MOVD R0, RSP // RSP = g0.sched.sp +// MOVD ZR, R29 // clear frame pointer +// MOVD R3, R0 // R0 = old_g (fn's argument) +// MOVD ZR, -16(RSP) +// SUB $16, RSP // allocate 16-byte arg space +// BL (R4) // fn(old_g), entry SP = g0.sched.sp - 16 +// https://github.com/golang/go/blob/5a928e5a37dc632bbb1794fe0e0846e6352be8b2/src/runtime/asm_arm64.s#L215 +// +// fn (park_m, goexit0, etc.) typically calls dropg() which sets m.curg to nil. +// go_resolve_mcall_goroutine() handles this by falling back to +// *(g0.sched.sp - 8) where: +// AMD64: PUSHQ AX deterministically placed old_g +// ARM64: fn's ABIInternal prologue spills R0 (old_g) to its arg area +// at fn_entry_SP + 8 = g0.sched.sp - 16 + 8 = g0.sched.sp - 8 +// (verified via DWARF: DW_OP_fbreg(+8) = CFA+8) +// +// Returns true if the transition succeeded and state was updated. +// Returns false if the goroutine could not be resolved (caller should STOP). +static EBPF_INLINE bool go_unwind_mcall(UnwindState *state) +{ + PerCPURecord *record = get_per_cpu_record(); + if (!record) { + return false; + } + u32 pid = record->trace.pid; + GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); + if (!go_offs || !go_offs->sched_sp) { + return false; + } + u64 curg = go_resolve_mcall_goroutine(go_offs, state); + if (!curg) { + DEBUG_PRINT("GO_MCALL: could not resolve user goroutine, stopping"); + return false; + } + + // Read gobuf.{sp, pc, bp} in a single bpf_probe_read_user into the PerCPURecord + // scratch buffer. See GoUnwindScratchSpace in types.h. Gobuf layout in runtime_data.go. + u8 *gobuf = record->goUnwindScratch.gobuf; + if (bpf_probe_read_user( + gobuf, sizeof(record->goUnwindScratch.gobuf), (void *)(curg + go_offs->sched_sp))) { + DEBUG_PRINT("GO_MCALL: failed to read gobuf, stopping"); + return false; + } + // sched_pc_off and sched_bp_off are u8 offsets relative to gobuf.sp, stored + // in GoLabelsOffsets. Using u8 fields (not u32 subtractions) lets the BPF + // verifier bound them naturally. + if ( + go_offs->sched_bp_off + sizeof(u64) > sizeof(record->goUnwindScratch.gobuf) || + go_offs->sched_pc_off + sizeof(u64) > sizeof(record->goUnwindScratch.gobuf)) { + return false; + } + u64 saved_sp = *(u64 *)(gobuf); + u64 saved_pc = *(u64 *)(gobuf + go_offs->sched_pc_off); + u64 saved_bp = *(u64 *)(gobuf + go_offs->sched_bp_off); + + if (!saved_sp || !saved_pc) { + DEBUG_PRINT( + "GO_MCALL: gobuf not populated (sp=0x%lx pc=0x%lx), stopping", + (unsigned long)saved_sp, + (unsigned long)saved_pc); + return false; + } + DEBUG_PRINT( + "GO_MCALL: recovered context: pc=0x%lx, sp=0x%lx, fp=0x%lx", + (unsigned long)saved_pc, + (unsigned long)saved_sp, + (unsigned long)saved_bp); + state->sp = saved_sp; + state->fp = saved_bp; +#if defined(__aarch64__) + state->pc = normalize_pac_ptr(saved_pc); + state->lr = 0; + state->r28 = curg; +#else + state->pc = saved_pc; +#endif + unwinder_mark_nonleaf_frame(state); + return true; +} + // Stack unwinding in the absence of frame pointers can be a bit involved, so // this comment explains what the following code does. // @@ -526,141 +575,12 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) goto err_native_pc_read; } goto frame_ok; - case UNWIND_COMMAND_GO_SYSTEMSTACK: { - // Cross the Go stack-switch boundary: recover the goroutine's saved context - // from g.sched (set by runtime.systemstack when it switched from the - // goroutine stack to the g0 system stack). - // - // gosave_systemstack_switch (asm_amd64.s) builds gobuf as follows: - // - // MOVQ $runtime.systemstack_switch+8(SB), R9 - // MOVQ R9, gobuf_pc(R14) // gobuf.pc = UNDEF marker; useless for unwinding - // - // LEAQ 8(SP), R9 - // MOVQ R9, gobuf_sp(R14) // gobuf.sp = SP+8 - // - // MOVQ BP, gobuf_bp(R14) // gobuf.bp = BP (== gobuf.sp, see below) - // - // Although systemstack is declared with $0 frame size, Go's linker injects - // a frame pointer prologue (PUSH RBP + MOVQ RSP, RBP) for all non-NOFRAME - // functions that contain a CALL instruction. - // https://github.com/golang/go/blob/affadc7997466dfacad5b9a3dc90ee5e7a7b6085/src/cmd/internal/obj/x86/obj6.go#L637 - // - // Stack layout inside gosave_systemstack_switch at the time of LEAQ: - // [high address] - // SP+24 = address of SP before the call to systemstack - // [SP+16] = RA caller of systemstack (pushed by CALL systemstack) - // [SP+8] = saved old RBP of caller = gobuf.sp after LEAQ (pushed by systemstack - // prologue) - // [SP+0] = RA back into systemstack (pushed by CALL gosave) - // [low address] - // - // We want to resume unwinding at the caller of systemstack, so: - // pc = *(gobuf.sp + 8) = RA caller of systemstack - // sp = gobuf.sp + 16 = beyond consumed old-RBP + RA slots - // fp = *(gobuf.sp) = saved old RBP = frame pointer of the caller - // - // gobuf.pc (systemstack_switch+8 = UNDEF) is intentionally ignored: it is a - // synthetic marker for Go's stack scanner and scheduler, not a real return address. - // - // https://github.com/golang/go/blob/917949cc1d16c652cb09ba369718f45e5d814d8f/src/runtime/asm_amd64.s#L886 - GoLabelsOffsets *go_offs = go_get_go_offsets(); - if (!go_offs) { - DEBUG_PRINT("GO_SYSTEMSTACK: no Go offsets, stopping"); - *stop = true; - return ERR_OK; - } - u64 curg = 0; - u64 sched_sp = go_read_curg_sched_sp(go_offs, state, stop, &curg); - if (!sched_sp) { - return ERR_OK; - } - u64 caller_pc = 0, caller_fp = 0; - if ( - bpf_probe_read_user(&caller_fp, sizeof(caller_fp), (void *)sched_sp) || - bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)(sched_sp + 8))) { - *stop = true; - return ERR_OK; - } - DEBUG_PRINT( - "GO_SYSTEMSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", - (unsigned long)caller_pc, - (unsigned long)(sched_sp + 16), - (unsigned long)caller_fp); - state->pc = caller_pc; - state->sp = sched_sp + 16; - state->fp = caller_fp; - unwinder_mark_nonleaf_frame(state); - goto frame_ok; - } - case UNWIND_COMMAND_GO_MCALL: { - // Cross the Go mcall boundary: recover the goroutine's saved context - // from g.sched (set by runtime.mcall when it switched from the goroutine - // stack to the g0 system stack). - // - // Unlike systemstack, mcall saves the caller's actual registers into gobuf: - // - // MOVQ 8(BX), BX // gobuf.pc = caller's return address - // LEAQ fn+0(FP), BX // gobuf.sp = caller's SP - // MOVQ (BP), BX // gobuf.bp = caller's FP (dereferenced) - // - // Recovery reads gobuf.{pc, sp, bp} directly, no stack dereferencing needed. - // - // After saving gobuf, mcall switches to g0 and calls fn(old_g): - // - // MOVQ R14, AX // AX = old_g (user goroutine) - // MOVQ SI, R14 // R14 = g0 - // MOVQ R14, FS:0xfffffff8 // TLS = g0 - // MOVQ (g_sched+gobuf_sp)(R14), SP // SP = g0.sched.sp - // MOVQ $0, BP // clear frame pointer - // PUSHQ AX // *(g0.sched.sp - 8) = old_g - // CALL R12 // fn(old_g) - // - // fn (park_m, goexit0, etc.) typically calls dropg() which sets m.curg - // to nil. go_resolve_mcall_goroutine() handles this by falling back to - // *(g0.sched.sp - 8) where PUSHQ AX placed the goroutine pointer. - // - // https://github.com/golang/go/blob/917949cc1d16c652cb09ba369718f45e5d814d8f/src/runtime/asm_amd64.s#L458 - GoLabelsOffsets *go_offs = go_get_go_offsets(); - if (!go_offs) { - DEBUG_PRINT("GO_MCALL: no Go offsets, stopping"); - *stop = true; - return ERR_OK; + case UNWIND_COMMAND_GO_MCALL: + if (go_unwind_mcall(state)) { + goto frame_ok; } - u64 curg = go_resolve_mcall_goroutine(go_offs, state); - if (!curg) { - DEBUG_PRINT("GO_MCALL: could not resolve user goroutine, stopping"); - *stop = true; - return ERR_OK; - } - u64 saved_pc = 0, saved_sp = 0, saved_bp = 0; - if ( - bpf_probe_read_user(&saved_sp, sizeof(saved_sp), (void *)(curg + go_offs->sched_sp)) || - bpf_probe_read_user(&saved_pc, sizeof(saved_pc), (void *)(curg + go_offs->sched_pc)) || - bpf_probe_read_user(&saved_bp, sizeof(saved_bp), (void *)(curg + go_offs->sched_bp))) { - DEBUG_PRINT("GO_MCALL: failed to read gobuf fields, stopping"); - *stop = true; - return ERR_OK; - } - if (!saved_sp || !saved_pc) { - DEBUG_PRINT( - "GO_MCALL: gobuf not populated (sp=0x%lx pc=0x%lx), stopping", - (unsigned long)saved_sp, - (unsigned long)saved_pc); - *stop = true; - return ERR_OK; - } - DEBUG_PRINT( - "GO_MCALL: recovered context: pc=0x%lx, sp=0x%lx, fp=0x%lx", - (unsigned long)saved_pc, - (unsigned long)saved_sp, - (unsigned long)saved_bp); - state->pc = saved_pc; - state->sp = saved_sp; - state->fp = saved_bp; - unwinder_mark_nonleaf_frame(state); - goto frame_ok; - } + *stop = true; + return ERR_OK; default: return ERR_UNREACHABLE; } } else { @@ -764,153 +684,12 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) goto err_native_pc_read; } goto frame_ok; - case UNWIND_COMMAND_GO_SYSTEMSTACK: { - // Cross the Go stack-switch boundary: recover the goroutine's saved context - // from g.sched (set by runtime.systemstack when it switched from the - // goroutine stack to the g0 system stack). - // - // gosave_systemstack_switch (asm_arm64.s) builds gobuf as follows: - // - // MOVD $runtime.systemstack_switch(SB), R0 - // ADD $8, R0 // get past prologue - // MOVD R0, (g_sched+gobuf_pc)(g) // gobuf.pc = UNDEF marker; useless for unwinding - // - // MOVD RSP, R0 - // MOVD R0, (g_sched+gobuf_sp)(g) // gobuf.sp = RSP - // - // MOVD R29, (g_sched+gobuf_bp)(g) // gobuf.bp = R29 (== gobuf.sp, see below) - // - // MOVD $0, (g_sched+gobuf_lr)(g) // gobuf.lr = 0 - // - // Although systemstack is declared with $0 frame size, Go's linker injects - // a frame pointer prologue for all non-NOFRAME functions. On arm64, Go uses - // MOVD.W (NOT standard STP), which stores LR and R29 in the opposite order: - // https://github.com/golang/go/blob/917949cc1d16c652cb09ba369718f45e5d814d8f/src/cmd/internal/obj/arm64/obj7.go#L653 - // - // MOVD.W R30, -16(RSP) // RSP -= 16, *(RSP) = LR (at SP+0) - // MOVD R29, -8(RSP) // *(RSP-8) = R29 (at SP-8) - // SUB $8, RSP, R29 // R29 = RSP - 8 - // - // Stack layout inside gosave_systemstack_switch at the time of MOVD RSP: - // [SP+0] = saved LR = RA caller of systemstack (stored by MOVD.W) - // [SP-8] = saved R29 of caller (stored by MOVD R29) - // - // R29 = SP - 8, so gobuf.bp = gobuf.sp - 8. - // - // We want to resume unwinding at the caller of systemstack, so: - // pc = *(gobuf.sp + 0) = LR saved by MOVD.W = RA caller of systemstack - // sp = gobuf.sp + 16 = SP before the call to systemstack - // fp = *(gobuf.sp - 8) = R29 saved by MOVD = frame pointer of the caller - // - // gobuf.pc (systemstack_switch = UNDEF) is intentionally ignored: it is a - // synthetic marker for Go's stack scanner and scheduler, not a real return address. - // - // https://github.com/golang/go/blob/5a928e5a37dc632bbb1794fe0e0846e6352be8b2/src/runtime/asm_arm64.s#L1124 - GoLabelsOffsets *go_offs = go_get_go_offsets(); - if (!go_offs) { - DEBUG_PRINT("GO_SYSTEMSTACK: no Go offsets, stopping"); - *stop = true; - return ERR_OK; + case UNWIND_COMMAND_GO_MCALL: + if (go_unwind_mcall(state)) { + goto frame_ok; } - u64 curg = 0; - u64 sched_sp = go_read_curg_sched_sp(go_offs, state, stop, &curg); - if (!sched_sp) { - return ERR_OK; - } - u64 caller_pc = 0, caller_fp = 0; - if ( - bpf_probe_read_user(&caller_pc, sizeof(caller_pc), (void *)sched_sp) || - bpf_probe_read_user(&caller_fp, sizeof(caller_fp), (void *)(sched_sp - 8))) { - *stop = true; - return ERR_OK; - } - DEBUG_PRINT( - "GO_SYSTEMSTACK: recovered caller context: pc=0x%lx, sp=0x%lx, fp=0x%lx", - (unsigned long)caller_pc, - (unsigned long)(sched_sp + 16), - (unsigned long)caller_fp); - state->pc = normalize_pac_ptr(caller_pc); - state->sp = sched_sp + 16; - state->fp = caller_fp; - state->lr = 0; - state->r28 = curg; - unwinder_mark_nonleaf_frame(state); - goto frame_ok; - } - case UNWIND_COMMAND_GO_MCALL: { - // Cross the Go mcall boundary: recover the goroutine's saved context - // from g.sched (set by runtime.mcall when it switched from the goroutine - // stack to the g0 system stack). - // - // Unlike systemstack, mcall on ARM64 saves the caller's actual registers: - // - // MOVD RSP, R0 - // MOVD R0, (g_sched+gobuf_sp)(g) // gobuf.sp = caller's SP - // MOVD R29, (g_sched+gobuf_bp)(g) // gobuf.bp = caller's FP - // MOVD R30, (g_sched+gobuf_pc)(g) // gobuf.pc = LR = caller's return addr - // - // mcall is NOSPLIT|NOFRAME - no linker-injected prologue. - // Recovery reads gobuf.{pc, sp, bp} directly. - // - // After saving gobuf, mcall switches to g0 and calls fn(old_g): - // - // MOVD (g_sched+gobuf_sp)(g), R0 - // MOVD R0, RSP // RSP = g0.sched.sp - // MOVD ZR, R29 - // MOVD R3, R0 // R0 = old_g (fn's argument) - // MOVD ZR, -16(RSP) - // SUB $16, RSP // allocate 16-byte arg space - // BL (R4) // fn(old_g), entry SP = g0.sched.sp - 16 - // - // fn (park_m, goexit0, etc.) typically calls dropg() which sets m.curg - // to nil. go_resolve_mcall_goroutine() handles this by falling back to - // *(g0.sched.sp - 8), where fn's ABIInternal prologue spills R0 (old_g) - // to its arg area at fn_entry_SP + 8 = g0.sched.sp - 16 + 8 = g0.sched.sp - 8. - // (verified via DWARF: DW_OP_fbreg(+8) = CFA+8) - // - // https://github.com/golang/go/blob/5a928e5a37dc632bbb1794fe0e0846e6352be8b2/src/runtime/asm_arm64.s#L215 - GoLabelsOffsets *go_offs = go_get_go_offsets(); - if (!go_offs) { - DEBUG_PRINT("GO_MCALL: no Go offsets, stopping"); - *stop = true; - return ERR_OK; - } - u64 curg = go_resolve_mcall_goroutine(go_offs, state); - if (!curg) { - DEBUG_PRINT("GO_MCALL: could not resolve user goroutine, stopping"); - *stop = true; - return ERR_OK; - } - u64 saved_pc = 0, saved_sp = 0, saved_bp = 0; - if ( - bpf_probe_read_user(&saved_sp, sizeof(saved_sp), (void *)(curg + go_offs->sched_sp)) || - bpf_probe_read_user(&saved_pc, sizeof(saved_pc), (void *)(curg + go_offs->sched_pc)) || - bpf_probe_read_user(&saved_bp, sizeof(saved_bp), (void *)(curg + go_offs->sched_bp))) { - DEBUG_PRINT("GO_MCALL: failed to read gobuf fields, stopping"); - *stop = true; - return ERR_OK; - } - if (!saved_sp || !saved_pc) { - DEBUG_PRINT( - "GO_MCALL: gobuf not populated (sp=0x%lx pc=0x%lx), stopping", - (unsigned long)saved_sp, - (unsigned long)saved_pc); - *stop = true; - return ERR_OK; - } - DEBUG_PRINT( - "GO_MCALL: recovered context: pc=0x%lx, sp=0x%lx, fp=0x%lx", - (unsigned long)saved_pc, - (unsigned long)saved_sp, - (unsigned long)saved_bp); - state->pc = normalize_pac_ptr(saved_pc); - state->sp = saved_sp; - state->fp = saved_bp; - state->lr = 0; - state->r28 = curg; - unwinder_mark_nonleaf_frame(state); - goto frame_ok; - } + *stop = true; + return ERR_OK; default: return ERR_UNREACHABLE; } } diff --git a/support/ebpf/types.h b/support/ebpf/types.h index e5ba29f47..02fc375a5 100644 --- a/support/ebpf/types.h +++ b/support/ebpf/types.h @@ -770,6 +770,14 @@ typedef struct V8UnwindScratchSpace { u8 code[96]; } V8UnwindScratchSpace; +// Container for additional scratch space needed by the Go unwinder. +typedef struct GoUnwindScratchSpace { + // The gobuf struct has a maximum size of 56 bytes (Go <= 1.24, with ret field). + // This buffer is used to read gobuf in a single bpf_probe_read_user call and + // extract fields at dynamic offsets. + u8 gobuf[56]; +} GoUnwindScratchSpace; + // Container for additional scratch space needed by the Python unwinder. typedef struct PythonUnwindScratchSpace { // Read buffer for storing the PyInterpreterFrame (PyFrameObject). @@ -805,6 +813,19 @@ typedef struct CustomLabelsState { void *go_m_ptr; } CustomLabelsState; +typedef struct GoLabelsOffsets { + u32 m_offset; + u32 curg; + u32 labels; + u32 hmap_count; + u32 hmap_log2_bucket_count; + u32 hmap_buckets; + s32 tls_offset; + u32 sched_sp; + u8 sched_pc_off; + u8 sched_bp_off; +} GoLabelsOffsets; + // Per-CPU info for the stack being built. This contains the stack as well as // meta-data on the number of eBPF tail-calls used so far to construct it. typedef struct PerCPURecord { @@ -842,7 +863,10 @@ typedef struct PerCPURecord { #elif defined(__aarch64__) u64 rt_regs[34]; #endif + // Scratch for Go unwinder + GoUnwindScratchSpace goUnwindScratch; }; + // Mask to indicate which unwinders are complete u32 unwindersDone; @@ -921,19 +945,17 @@ typedef struct StackDelta { #define STACK_DELTA_COMMAND_FLAG 0x8000 // Unsupported or no value for the register -#define UNWIND_COMMAND_INVALID 0 +#define UNWIND_COMMAND_INVALID 0 // For CFA: stop unwinding, this function is a stack root function -#define UNWIND_COMMAND_STOP 1 +#define UNWIND_COMMAND_STOP 1 // Unwind a PLT entry -#define UNWIND_COMMAND_PLT 2 +#define UNWIND_COMMAND_PLT 2 // Unwind a signal frame -#define UNWIND_COMMAND_SIGNAL 3 +#define UNWIND_COMMAND_SIGNAL 3 // Unwind using standard frame pointer -#define UNWIND_COMMAND_FRAME_POINTER 4 -// Cross Go systemstack boundary using goroutine saved context from gobuf stack frame -#define UNWIND_COMMAND_GO_SYSTEMSTACK 5 +#define UNWIND_COMMAND_FRAME_POINTER 4 // Cross Go mcall boundary using goroutine saved context from gobuf fields directly. -#define UNWIND_COMMAND_GO_MCALL 6 +#define UNWIND_COMMAND_GO_MCALL 5 // StackDeltaPageKey is the look up key for stack delta page map. typedef struct StackDeltaPageKey { @@ -1044,17 +1066,4 @@ typedef struct ApmIntProcInfo { u64 tls_offset; } ApmIntProcInfo; -typedef struct GoLabelsOffsets { - u32 m_offset; - u32 curg; - u32 labels; - u32 hmap_count; - u32 hmap_log2_bucket_count; - u32 hmap_buckets; - s32 tls_offset; - u32 sched_sp; - u32 sched_pc; - u32 sched_bp; -} GoLabelsOffsets; - #endif // OPTI_TYPES_H diff --git a/support/types.go b/support/types.go index efceb19c6..0beb565c7 100644 --- a/support/types.go +++ b/support/types.go @@ -201,8 +201,9 @@ type GoLabelsOffsets struct { Hmap_buckets uint32 Tls_offset int32 Sched_sp uint32 - Sched_pc uint32 - Sched_bp uint32 + Sched_pc_off uint8 + Sched_bp_off uint8 + Pad_cgo_0 [2]byte } type HotspotProcInfo struct { Codecache_start uint64 @@ -361,13 +362,12 @@ const ( UnwindFlagDerefCfa uint8 = 0x8 UnwindFlagRegisterRA uint8 = 0x10 - UnwindCommandInvalid int32 = 0x0 - UnwindCommandStop int32 = 0x1 - UnwindCommandPLT int32 = 0x2 - UnwindCommandSignal int32 = 0x3 - UnwindCommandFramePointer int32 = 0x4 - UnwindCommandGoSystemstack int32 = 0x5 - UnwindCommandGoMcall int32 = 0x6 + UnwindCommandInvalid int32 = 0x0 + UnwindCommandStop int32 = 0x1 + UnwindCommandPLT int32 = 0x2 + UnwindCommandSignal int32 = 0x3 + UnwindCommandFramePointer int32 = 0x4 + UnwindCommandGoMcall int32 = 0x5 UnwindDerefMask int32 = 0x7 UnwindDerefMultiplier int32 = 0x8 diff --git a/support/types_def.go b/support/types_def.go index a26fc2194..b49f59582 100644 --- a/support/types_def.go +++ b/support/types_def.go @@ -165,13 +165,12 @@ const ( UnwindFlagRegisterRA uint8 = C.UNWIND_FLAG_REGISTER_RA // UnwindCommands from the C header file - UnwindCommandInvalid int32 = C.UNWIND_COMMAND_INVALID - UnwindCommandStop int32 = C.UNWIND_COMMAND_STOP - UnwindCommandPLT int32 = C.UNWIND_COMMAND_PLT - UnwindCommandSignal int32 = C.UNWIND_COMMAND_SIGNAL - UnwindCommandFramePointer int32 = C.UNWIND_COMMAND_FRAME_POINTER - UnwindCommandGoSystemstack int32 = C.UNWIND_COMMAND_GO_SYSTEMSTACK - UnwindCommandGoMcall int32 = C.UNWIND_COMMAND_GO_MCALL + UnwindCommandInvalid int32 = C.UNWIND_COMMAND_INVALID + UnwindCommandStop int32 = C.UNWIND_COMMAND_STOP + UnwindCommandPLT int32 = C.UNWIND_COMMAND_PLT + UnwindCommandSignal int32 = C.UNWIND_COMMAND_SIGNAL + UnwindCommandFramePointer int32 = C.UNWIND_COMMAND_FRAME_POINTER + UnwindCommandGoMcall int32 = C.UNWIND_COMMAND_GO_MCALL // UnwindDeref handling from the C header file UnwindDerefMask int32 = C.UNWIND_DEREF_MASK diff --git a/tools/gooffsets/main.go b/tools/gooffsets/main.go index 76c487b25..5c3e7996c 100644 --- a/tools/gooffsets/main.go +++ b/tools/gooffsets/main.go @@ -20,8 +20,8 @@ type goLabelsOffsets struct { hmapLog2BucketCount uint32 hmapBuckets uint32 schedSp uint32 - schedPc uint32 - schedBp uint32 + schedPcOff uint8 + schedBpOff uint8 } func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { @@ -132,9 +132,9 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { mOffset: uint32(mOffset), curg: uint32(curgOffset), labels: uint32(labelsOffset), - schedSp: uint32(schedOffset + schedSpOff), - schedPc: uint32(schedOffset + schedPcOff), - schedBp: uint32(schedOffset + schedBpOff), + schedSp: uint32(schedOffset + schedSpOff), + schedPcOff: uint8(schedPcOff), + schedBpOff: uint8(schedBpOff), }, nil } @@ -168,9 +168,9 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { hmapCount: uint32(countOffset), hmapLog2BucketCount: uint32(bOffset), hmapBuckets: uint32(bucketsOffset), - schedSp: uint32(schedOffset + schedSpOff), - schedPc: uint32(schedOffset + schedPcOff), - schedBp: uint32(schedOffset + schedBpOff), + schedSp: uint32(schedOffset + schedSpOff), + schedPcOff: uint8(schedPcOff - schedSpOff), + schedBpOff: uint8(schedBpOff - schedSpOff), }, nil } @@ -216,7 +216,7 @@ func main() { fmt.Printf("\thmap_log2_bucket_count: %d,\n", offs.hmapLog2BucketCount) fmt.Printf("\thmap_buckets: %d,\n", offs.hmapBuckets) fmt.Printf("\tsched_sp: %d,\n", offs.schedSp) - fmt.Printf("\tsched_pc: %d,\n", offs.schedPc) - fmt.Printf("\tsched_bp: %d,\n", offs.schedBp) + fmt.Printf("\tsched_pc_off: %d,\n", offs.schedPcOff) + fmt.Printf("\tsched_bp_off: %d,\n", offs.schedBpOff) fmt.Println("},") } From f248918865bd71fc2257cae61c0fdcc457dd3bf1 Mon Sep 17 00:00:00 2001 From: Martin Levesque Date: Mon, 20 Apr 2026 07:25:21 +0000 Subject: [PATCH 08/12] feat: add coredump tests + apply review --- metrics/ids.go | 20 +- metrics/metrics.json | 42 +++ support/ebpf/errors.h | 14 +- support/ebpf/native_stack_trace.ebpf.c | 40 ++- support/ebpf/types.h | 18 ++ support/types.go | 8 +- support/types_def.go | 6 + tools/coredump/testdata/amd64/go-mcall.json | 170 ++++++++++++ .../testdata/amd64/go-systemstack.json | 75 ++++++ tools/coredump/testdata/arm64/go-mcall.json | 241 ++++++++++++++++++ .../testdata/arm64/go-systemstack.json | 85 ++++++ tools/errors-codegen/errors.json | 20 ++ 12 files changed, 722 insertions(+), 17 deletions(-) create mode 100644 tools/coredump/testdata/amd64/go-mcall.json create mode 100644 tools/coredump/testdata/amd64/go-systemstack.json create mode 100644 tools/coredump/testdata/arm64/go-mcall.json create mode 100644 tools/coredump/testdata/arm64/go-systemstack.json diff --git a/metrics/ids.go b/metrics/ids.go index 76ed4dabe..f2faef4c6 100644 --- a/metrics/ids.go +++ b/metrics/ids.go @@ -650,6 +650,24 @@ const ( // Number of failures to read TLS variables via the DTV IDUnwindErrBadDTVRead = 286 + // Number of attempted Go mcall stack-switch unwinds + IDUnwindGoMcallAttempts = 287 + + // Number of successful Go mcall stack-switch unwinds + IDUnwindGoMcallSuccess = 288 + + // Number of Go mcall unwind failures due to missing Go offsets + IDUnwindGoMcallErrNoGoOffsets = 289 + + // Number of Go mcall unwind failures due to goroutine resolution + IDUnwindGoMcallErrResolveGoroutine = 290 + + // Number of Go mcall unwind failures due to gobuf read errors + IDUnwindGoMcallErrReadGobuf = 291 + + // Number of Go mcall unwind failures due to unpopulated gobuf + IDUnwindGoMcallErrGobufNotPopulated = 292 + // max number of ID values, keep this as *last entry* - IDMax = 287 + IDMax = 293 ) diff --git a/metrics/metrics.json b/metrics/metrics.json index 1021d7414..ef9aea76c 100644 --- a/metrics/metrics.json +++ b/metrics/metrics.json @@ -2096,5 +2096,47 @@ "name": "UnwindErrBadDTVRead", "field": "bpf.errors.bad_dtv_read", "id": 286 + }, + { + "description": "Number of attempted Go mcall stack-switch unwinds", + "type": "counter", + "name": "UnwindGoMcallAttempts", + "field": "bpf.go.mcall_attempts", + "id": 287 + }, + { + "description": "Number of successful Go mcall stack-switch unwinds", + "type": "counter", + "name": "UnwindGoMcallSuccess", + "field": "bpf.go.mcall_success", + "id": 288 + }, + { + "description": "Number of Go mcall unwind failures due to missing Go offsets", + "type": "counter", + "name": "UnwindGoMcallErrNoGoOffsets", + "field": "bpf.go.errors.mcall_no_go_offsets", + "id": 289 + }, + { + "description": "Number of Go mcall unwind failures due to goroutine resolution", + "type": "counter", + "name": "UnwindGoMcallErrResolveGoroutine", + "field": "bpf.go.errors.mcall_resolve_goroutine", + "id": 290 + }, + { + "description": "Number of Go mcall unwind failures due to gobuf read errors", + "type": "counter", + "name": "UnwindGoMcallErrReadGobuf", + "field": "bpf.go.errors.mcall_read_gobuf", + "id": 291 + }, + { + "description": "Number of Go mcall unwind failures due to unpopulated gobuf", + "type": "counter", + "name": "UnwindGoMcallErrGobufNotPopulated", + "field": "bpf.go.errors.mcall_gobuf_not_populated", + "id": 292 } ] diff --git a/support/ebpf/errors.h b/support/ebpf/errors.h index 0da717277..173d54f21 100644 --- a/support/ebpf/errors.h +++ b/support/ebpf/errors.h @@ -222,7 +222,19 @@ typedef enum ErrorCode { ERR_BEAM_MODULES_READ_FAILURE = 7005, // BEAM: Ran out of iterations searching for the current code header - ERR_BEAM_RANGE_SEARCH_EXHAUSTED = 7006 + ERR_BEAM_RANGE_SEARCH_EXHAUSTED = 7006, + + // Go: No Go process info available for mcall unwinding + ERR_GO_MCALL_NO_GO_OFFSETS = 8000, + + // Go: Failed to resolve the user goroutine during mcall unwinding + ERR_GO_MCALL_RESOLVE_GOROUTINE = 8001, + + // Go: Failed to read gobuf fields from the goroutine during mcall unwinding + ERR_GO_MCALL_READ_GOBUF = 8002, + + // Go: Gobuf sp/pc is zero during mcall unwinding (sched not yet populated) + ERR_GO_MCALL_GOBUF_NOT_POPULATED = 8003 } ErrorCode; #endif // OPTI_ERRORS_H diff --git a/support/ebpf/native_stack_trace.ebpf.c b/support/ebpf/native_stack_trace.ebpf.c index d862e9f61..2fad60e1f 100644 --- a/support/ebpf/native_stack_trace.ebpf.c +++ b/support/ebpf/native_stack_trace.ebpf.c @@ -437,23 +437,27 @@ static EBPF_INLINE u64 go_resolve_mcall_goroutine(struct GoLabelsOffsets *offs, // at fn_entry_SP + 8 = g0.sched.sp - 16 + 8 = g0.sched.sp - 8 // (verified via DWARF: DW_OP_fbreg(+8) = CFA+8) // -// Returns true if the transition succeeded and state was updated. -// Returns false if the goroutine could not be resolved (caller should STOP). -static EBPF_INLINE bool go_unwind_mcall(UnwindState *state) +// Returns ERR_OK if the transition succeeded and state was updated. +// Returns a specific ErrorCode on failure (caller should STOP). +static EBPF_INLINE ErrorCode go_unwind_mcall(UnwindState *state) { + increment_metric(metricID_UnwindGoMcallAttempts); + PerCPURecord *record = get_per_cpu_record(); if (!record) { - return false; + return ERR_UNREACHABLE; } u32 pid = record->trace.pid; GoLabelsOffsets *go_offs = bpf_map_lookup_elem(&go_labels_procs, &pid); if (!go_offs || !go_offs->sched_sp) { - return false; + increment_metric(metricID_UnwindGoMcallErrNoGoOffsets); + return ERR_GO_MCALL_NO_GO_OFFSETS; } u64 curg = go_resolve_mcall_goroutine(go_offs, state); if (!curg) { DEBUG_PRINT("GO_MCALL: could not resolve user goroutine, stopping"); - return false; + increment_metric(metricID_UnwindGoMcallErrResolveGoroutine); + return ERR_GO_MCALL_RESOLVE_GOROUTINE; } // Read gobuf.{sp, pc, bp} in a single bpf_probe_read_user into the PerCPURecord @@ -462,7 +466,8 @@ static EBPF_INLINE bool go_unwind_mcall(UnwindState *state) if (bpf_probe_read_user( gobuf, sizeof(record->goUnwindScratch.gobuf), (void *)(curg + go_offs->sched_sp))) { DEBUG_PRINT("GO_MCALL: failed to read gobuf, stopping"); - return false; + increment_metric(metricID_UnwindGoMcallErrReadGobuf); + return ERR_GO_MCALL_READ_GOBUF; } // sched_pc_off and sched_bp_off are u8 offsets relative to gobuf.sp, stored // in GoLabelsOffsets. Using u8 fields (not u32 subtractions) lets the BPF @@ -470,7 +475,8 @@ static EBPF_INLINE bool go_unwind_mcall(UnwindState *state) if ( go_offs->sched_bp_off + sizeof(u64) > sizeof(record->goUnwindScratch.gobuf) || go_offs->sched_pc_off + sizeof(u64) > sizeof(record->goUnwindScratch.gobuf)) { - return false; + increment_metric(metricID_UnwindGoMcallErrReadGobuf); + return ERR_GO_MCALL_READ_GOBUF; } u64 saved_sp = *(u64 *)(gobuf); u64 saved_pc = *(u64 *)(gobuf + go_offs->sched_pc_off); @@ -481,7 +487,8 @@ static EBPF_INLINE bool go_unwind_mcall(UnwindState *state) "GO_MCALL: gobuf not populated (sp=0x%lx pc=0x%lx), stopping", (unsigned long)saved_sp, (unsigned long)saved_pc); - return false; + increment_metric(metricID_UnwindGoMcallErrGobufNotPopulated); + return ERR_GO_MCALL_GOBUF_NOT_POPULATED; } DEBUG_PRINT( "GO_MCALL: recovered context: pc=0x%lx, sp=0x%lx, fp=0x%lx", @@ -498,7 +505,8 @@ static EBPF_INLINE bool go_unwind_mcall(UnwindState *state) state->pc = saved_pc; #endif unwinder_mark_nonleaf_frame(state); - return true; + increment_metric(metricID_UnwindGoMcallSuccess); + return ERR_OK; } // Stack unwinding in the absence of frame pointers can be a bit involved, so @@ -575,12 +583,14 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) goto err_native_pc_read; } goto frame_ok; - case UNWIND_COMMAND_GO_MCALL: - if (go_unwind_mcall(state)) { + case UNWIND_COMMAND_GO_MCALL: { + ErrorCode mcall_err = go_unwind_mcall(state); + if (mcall_err == ERR_OK) { goto frame_ok; } *stop = true; return ERR_OK; + } default: return ERR_UNREACHABLE; } } else { @@ -684,12 +694,14 @@ static EBPF_INLINE ErrorCode unwind_one_frame(PerCPURecord *record, bool *stop) goto err_native_pc_read; } goto frame_ok; - case UNWIND_COMMAND_GO_MCALL: - if (go_unwind_mcall(state)) { + case UNWIND_COMMAND_GO_MCALL: { + ErrorCode mcall_err = go_unwind_mcall(state); + if (mcall_err == ERR_OK) { goto frame_ok; } *stop = true; return ERR_OK; + } default: return ERR_UNREACHABLE; } } diff --git a/support/ebpf/types.h b/support/ebpf/types.h index 02fc375a5..df2d961d0 100644 --- a/support/ebpf/types.h +++ b/support/ebpf/types.h @@ -328,6 +328,24 @@ enum { // number of failures to read TLS variables via the DTV metricID_UnwindErrBadDTVRead, + // number of attempted Go mcall stack-switch unwinds + metricID_UnwindGoMcallAttempts, + + // number of successful Go mcall stack-switch unwinds + metricID_UnwindGoMcallSuccess, + + // number of Go mcall unwind failures due to missing Go offsets + metricID_UnwindGoMcallErrNoGoOffsets, + + // number of Go mcall unwind failures due to goroutine resolution + metricID_UnwindGoMcallErrResolveGoroutine, + + // number of Go mcall unwind failures due to gobuf read errors + metricID_UnwindGoMcallErrReadGobuf, + + // number of Go mcall unwind failures due to unpopulated gobuf + metricID_UnwindGoMcallErrGobufNotPopulated, + // // Metric IDs above are for counters (cumulative values) // diff --git a/support/types.go b/support/types.go index 0beb565c7..5e5374f69 100644 --- a/support/types.go +++ b/support/types.go @@ -61,7 +61,7 @@ const ( const UnwindInfoMaxEntries = 0x4000 const ( - MetricIDBeginCumulative = 0x69 + MetricIDBeginCumulative = 0x6f ) const ( @@ -502,4 +502,10 @@ var MetricsTranslation = []metrics.MetricID{ 0x66: metrics.IDUnwindRubyErrReadRbasicFlags, 0x67: metrics.IDUnwindRubyErrCmeMaxEp, 0x68: metrics.IDUnwindErrBadDTVRead, + 0x69: metrics.IDUnwindGoMcallAttempts, + 0x6a: metrics.IDUnwindGoMcallSuccess, + 0x6b: metrics.IDUnwindGoMcallErrNoGoOffsets, + 0x6c: metrics.IDUnwindGoMcallErrResolveGoroutine, + 0x6d: metrics.IDUnwindGoMcallErrReadGobuf, + 0x6e: metrics.IDUnwindGoMcallErrGobufNotPopulated, } diff --git a/support/types_def.go b/support/types_def.go index b49f59582..7d6a00a09 100644 --- a/support/types_def.go +++ b/support/types_def.go @@ -308,4 +308,10 @@ var MetricsTranslation = []metrics.MetricID{ C.metricID_UnwindRubyErrReadRbasicFlags: metrics.IDUnwindRubyErrReadRbasicFlags, C.metricID_UnwindRubyErrCmeMaxEp: metrics.IDUnwindRubyErrCmeMaxEp, C.metricID_UnwindErrBadDTVRead: metrics.IDUnwindErrBadDTVRead, + C.metricID_UnwindGoMcallAttempts: metrics.IDUnwindGoMcallAttempts, + C.metricID_UnwindGoMcallSuccess: metrics.IDUnwindGoMcallSuccess, + C.metricID_UnwindGoMcallErrNoGoOffsets: metrics.IDUnwindGoMcallErrNoGoOffsets, + C.metricID_UnwindGoMcallErrResolveGoroutine: metrics.IDUnwindGoMcallErrResolveGoroutine, + C.metricID_UnwindGoMcallErrReadGobuf: metrics.IDUnwindGoMcallErrReadGobuf, + C.metricID_UnwindGoMcallErrGobufNotPopulated: metrics.IDUnwindGoMcallErrGobufNotPopulated, } diff --git a/tools/coredump/testdata/amd64/go-mcall.json b/tools/coredump/testdata/amd64/go-mcall.json new file mode 100644 index 000000000..e0e4b77ec --- /dev/null +++ b/tools/coredump/testdata/amd64/go-mcall.json @@ -0,0 +1,170 @@ +{ + "coredump-ref": "581cb937944db24a2049fae9c6b300c9f65110a9ca1d1d230f192a793d51b527", + "threads": [ + { + "lwp": 10906, + "frames": [ + "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", + "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", + "runtime.notesleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" + ] + }, + { + "lwp": 10919, + "frames": [ + "runtime.chanrecv+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:524", + "main.main.func1+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcall/main.go:88", + "runtime.goexit+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:1694" + ] + }, + { + "lwp": 10918, + "frames": [ + "linux-vdso.1.so+0xcfd", + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 10917, + "frames": [ + "linux-vdso.1.so+0xcfd", + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 10916, + "frames": [ + "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", + "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", + "runtime.notesleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" + ] + }, + { + "lwp": 10915, + "frames": [ + "runtime.chanrecv+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:524", + "main.mutexBlocker+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcall/main.go:41", + "main.main.gowrap3+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcall/main.go:99", + "runtime.goexit+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:1694" + ] + }, + { + "lwp": 10914, + "frames": [ + "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", + "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", + "runtime.notesleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" + ] + }, + { + "lwp": 10913, + "frames": [ + "internal/runtime/syscall.Syscall6+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/internal/runtime/syscall/asm_linux_amd64.s:36", + "internal/runtime/syscall.EpollWait+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/internal/runtime/syscall/syscall_linux.go:34", + "runtime.netpoll+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/netpoll_epoll.go:120", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3728", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.mstart1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1936", + "runtime.mstart0+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1890", + "runtime.mstart+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:396" + ] + }, + { + "lwp": 10912, + "frames": [ + "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", + "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", + "runtime.notesleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" + ] + }, + { + "lwp": 10911, + "frames": [ + "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", + "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", + "runtime.notesleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" + ] + }, + { + "lwp": 10910, + "frames": [ + "linux-vdso.1.so+0xcfd", + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 10909, + "frames": [ + "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", + "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", + "runtime.notesleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" + ] + }, + { + "lwp": 10908, + "frames": [ + "runtime.chanrecv+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:540", + "runtime.selectnbrecv+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:805", + "main.mutexBlocker+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcall/main.go:41", + "main.main.gowrap3+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcall/main.go:99", + "runtime.goexit+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:1694" + ] + }, + { + "lwp": 10907, + "frames": [ + "runtime.usleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:135", + "runtime.sysmon+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:6234", + "runtime.sysmon+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:6234", + "runtime.mstart1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1928", + "runtime.mstart0+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1890", + "runtime.mstart+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:396" + ] + } + ], + "modules": [ + { + "ref": "be1e6a8d574b22a32fe68656f369081d47290c043a93c6a11bcf28f6e35ab219", + "local-path": "/home/ubuntu/ebpf/test-mcall" + } + ] +} diff --git a/tools/coredump/testdata/amd64/go-systemstack.json b/tools/coredump/testdata/amd64/go-systemstack.json new file mode 100644 index 000000000..b8ed10362 --- /dev/null +++ b/tools/coredump/testdata/amd64/go-systemstack.json @@ -0,0 +1,75 @@ +{ + "coredump-ref": "ee9b687ee6e4537ceaf3eb330e0133b1168a6133a824d49a89171f2554a4243c", + "threads": [ + { + "lwp": 17092, + "frames": [ + "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", + "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", + "runtime.notesleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", + "runtime.newstack+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/stack.go:1130", + "runtime.morestack+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:621", + "runtime.newproc+0 in :1", + "" + ] + }, + { + "lwp": 17096, + "frames": [ + "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", + "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", + "runtime.notesleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", + "runtime.newstack+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/stack.go:1130", + "runtime.morestack+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:621", + "" + ] + }, + { + "lwp": 17095, + "frames": [ + "linux-vdso.1.so+0xcfd", + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 17094, + "frames": [ + "internal/runtime/syscall.Syscall6+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/internal/runtime/syscall/asm_linux_amd64.s:36", + "internal/runtime/syscall.EpollWait+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/internal/runtime/syscall/syscall_linux.go:34", + "runtime.netpoll+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/netpoll_epoll.go:120", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3728", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", + "runtime.newstack+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/stack.go:1130", + "runtime.morestack+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:621", + "" + ] + }, + { + "lwp": 17093, + "frames": [ + "runtime.usleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:135", + "runtime.sysmon+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:6234", + "runtime.sysmon+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:6234", + "runtime.mstart1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1928", + "runtime.mstart0+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1890", + "runtime.mstart+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:396" + ] + } + ], + "modules": [ + { + "ref": "af87dae1fa2f9e4863c87f3c77d1405f1578f5ace132fdbe51d221a35ab08ac9", + "local-path": "/home/ubuntu/ebpf/test-systemstack" + } + ] +} diff --git a/tools/coredump/testdata/arm64/go-mcall.json b/tools/coredump/testdata/arm64/go-mcall.json new file mode 100644 index 000000000..cb6d9e82c --- /dev/null +++ b/tools/coredump/testdata/arm64/go-mcall.json @@ -0,0 +1,241 @@ +{ + "coredump-ref": "1dd0a9e19b0307e10662268aefb1a17509db852b3f0ae3ac738df29404b6fb5e", + "threads": [ + { + "lwp": 10029, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", + "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 10051, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", + "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 10046, + "frames": [ + "runtime.wakep+0 in /usr/local/go/src/runtime/proc.go:3207", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4300", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 10045, + "frames": [ + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.main.func1+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:88", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 10044, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", + "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 10043, + "frames": [ + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", + "main.main.func1+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:88", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 10042, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", + "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 10041, + "frames": [ + "runtime.unlock2+0 in /usr/local/go/src/runtime/lock_spinbit.go:314", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3452", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 10040, + "frames": [ + "linux-vdso.1.so+0x360", + "runtime.nanotime1+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:364", + "runtime.(*timers).check+0 in /usr/local/go/src/runtime/time_nofake.go:33", + "runtime.stealWork+0 in /usr/local/go/src/runtime/proc.go:3837", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3497", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 10039, + "frames": [ + "internal/runtime/syscall.Syscall6+0 in /usr/local/go/src/internal/runtime/syscall/asm_linux_arm64.s:17", + "runtime.netpoll+0 in /usr/local/go/src/runtime/netpoll_epoll.go:120", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3728", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 10038, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", + "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 10037, + "frames": [ + "main.mutexBlocker+0 in /usr/local/go/src/internal/sync/mutex.go:63", + "main.main.gowrap3+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:99", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 10036, + "frames": [ + "runtime.usleep+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:138", + "runtime.sysmon+0 in /usr/local/go/src/runtime/proc.go:6251", + "runtime.mstart1+0 in /usr/local/go/src/runtime/proc.go:1931", + "runtime.mstart0+0 in /usr/local/go/src/runtime/proc.go:1858", + "runtime.mstart+0 in /usr/local/go/src/runtime/asm_arm64.s:180" + ] + } + ], + "modules": [ + { + "ref": "f253b2baa217b7efd68a7ee944af1ffdb42eabfcba68fd2a11b5e253799102a0", + "local-path": "/home/tintin/ebpf/test-mcall" + } + ] +} diff --git a/tools/coredump/testdata/arm64/go-systemstack.json b/tools/coredump/testdata/arm64/go-systemstack.json new file mode 100644 index 000000000..edb768265 --- /dev/null +++ b/tools/coredump/testdata/arm64/go-systemstack.json @@ -0,0 +1,85 @@ +{ + "coredump-ref": "12aeb71e72a7856db3371aab97d522d8abe9c68618322716632afb692b58fbe2", + "threads": [ + { + "lwp": 9982, + "frames": [ + "runtime.(*unwinder).symPC+0 in /usr/local/go/src/runtime/traceback.go:581", + "runtime.tracebackPCs+0 in /usr/local/go/src/runtime/traceback.go:628", + "runtime.callers.func1+0 in /usr/local/go/src/runtime/traceback.go:1100", + "runtime.systemstack+0 in /usr/local/go/src/runtime/asm_arm64.s:297", + "runtime.callers+0 in /usr/local/go/src/runtime/traceback.go:1102", + "main.main+0 in /home/tintin/ebpf/tools/coredump/testsources/go/systemstack/main.go:33", + "runtime.main+0 in /usr/local/go/src/internal/runtime/atomic/types.go:194", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 9993, + "frames": [ + "internal/runtime/syscall.Syscall6+0 in /usr/local/go/src/internal/runtime/syscall/asm_linux_arm64.s:17", + "runtime.netpoll+0 in /usr/local/go/src/runtime/netpoll_epoll.go:120", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3728", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.park_m+0 in /usr/local/go/src/runtime/proc.go:4267", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 9992, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", + "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.newstack+0 in /usr/local/go/src/runtime/stack.go:1130", + "runtime.morestack+0 in /usr/local/go/src/runtime/asm_arm64.s:396", + "" + ] + }, + { + "lwp": 9991, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", + "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", + "runtime.startlockedm+0 in /usr/local/go/src/runtime/proc.go:3283", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4128", + "runtime.park_m+0 in /usr/local/go/src/runtime/proc.go:4267", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 9990, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", + "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.newstack+0 in /usr/local/go/src/runtime/stack.go:1130", + "runtime.morestack+0 in /usr/local/go/src/runtime/asm_arm64.s:396", + "" + ] + }, + { + "lwp": 9989, + "frames": [ + "runtime.usleep+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:138", + "runtime.sysmon+0 in /usr/local/go/src/runtime/proc.go:6251", + "runtime.mstart1+0 in /usr/local/go/src/runtime/proc.go:1931", + "runtime.mstart0+0 in /usr/local/go/src/runtime/proc.go:1858", + "runtime.mstart+0 in /usr/local/go/src/runtime/asm_arm64.s:180" + ] + } + ], + "modules": [ + { + "ref": "aa6217c134a0cedb8f170637641ccbc9e61f17b1fc1b137efef4653364e7d8ab", + "local-path": "/home/tintin/ebpf/test-systemstack" + } + ] +} diff --git a/tools/errors-codegen/errors.json b/tools/errors-codegen/errors.json index e9850c747..d5eb4dfc7 100644 --- a/tools/errors-codegen/errors.json +++ b/tools/errors-codegen/errors.json @@ -364,5 +364,25 @@ "id": 7006, "name": "beam_range_search_exhausted", "description": "BEAM: Ran out of iterations searching for the current code header" + }, + { + "id": 8000, + "name": "go_mcall_no_go_offsets", + "description": "Go: No Go process info available for mcall unwinding" + }, + { + "id": 8001, + "name": "go_mcall_resolve_goroutine", + "description": "Go: Failed to resolve the user goroutine during mcall unwinding" + }, + { + "id": 8002, + "name": "go_mcall_read_gobuf", + "description": "Go: Failed to read gobuf fields from the goroutine during mcall unwinding" + }, + { + "id": 8003, + "name": "go_mcall_gobuf_not_populated", + "description": "Go: Gobuf sp/pc is zero during mcall unwinding (sched not yet populated)" } ] From 82dee94d219c92bada59a58502ec78602fbe436e Mon Sep 17 00:00:00 2001 From: Martin Levesque Date: Mon, 20 Apr 2026 07:35:14 +0000 Subject: [PATCH 09/12] rebase upstream --- support/ebpf/errors.h | 4 ++-- tools/gooffsets/main.go | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/support/ebpf/errors.h b/support/ebpf/errors.h index 173d54f21..ffd8c6008 100644 --- a/support/ebpf/errors.h +++ b/support/ebpf/errors.h @@ -160,8 +160,8 @@ typedef enum ErrorCode { // Native: Unable to read the IRQ stack link ERR_NATIVE_CHASE_IRQ_STACK_LINK = 4010, - // Native: Unexpectedly encountered a kernel mode pointer while attempting to unwind user-mode - // stack + // Native: Unexpectedly encountered a kernel mode pointer while attempting + // to unwind user-mode stack ERR_NATIVE_UNEXPECTED_KERNEL_ADDRESS = 4011, // Native: Unable to locate the PID page mapping for the current instruction pointer diff --git a/tools/gooffsets/main.go b/tools/gooffsets/main.go index 5c3e7996c..d57b2b2a1 100644 --- a/tools/gooffsets/main.go +++ b/tools/gooffsets/main.go @@ -129,9 +129,9 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { if semver.Compare(version, "v1.24.0") >= 0 { return &goLabelsOffsets{ - mOffset: uint32(mOffset), - curg: uint32(curgOffset), - labels: uint32(labelsOffset), + mOffset: uint32(mOffset), + curg: uint32(curgOffset), + labels: uint32(labelsOffset), schedSp: uint32(schedOffset + schedSpOff), schedPcOff: uint8(schedPcOff), schedBpOff: uint8(schedBpOff), @@ -168,9 +168,9 @@ func getOffsets(f *elf.File, version string) (*goLabelsOffsets, error) { hmapCount: uint32(countOffset), hmapLog2BucketCount: uint32(bOffset), hmapBuckets: uint32(bucketsOffset), - schedSp: uint32(schedOffset + schedSpOff), - schedPcOff: uint8(schedPcOff - schedSpOff), - schedBpOff: uint8(schedBpOff - schedSpOff), + schedSp: uint32(schedOffset + schedSpOff), + schedPcOff: uint8(schedPcOff - schedSpOff), + schedBpOff: uint8(schedBpOff - schedSpOff), }, nil } From 24fb9e4c9a21a3fea8b52392c02d90fe33c77a2b Mon Sep 17 00:00:00 2001 From: Martin Levesque Date: Wed, 22 Apr 2026 07:54:59 +0000 Subject: [PATCH 10/12] feat: add testsources for mcall/systemstack --- tools/coredump/testsources/go/mcall/main.go | 105 ++++++++++++++++++ .../testsources/go/systemstack/main.go | 39 +++++++ 2 files changed, 144 insertions(+) create mode 100644 tools/coredump/testsources/go/mcall/main.go create mode 100644 tools/coredump/testsources/go/systemstack/main.go diff --git a/tools/coredump/testsources/go/mcall/main.go b/tools/coredump/testsources/go/mcall/main.go new file mode 100644 index 000000000..c2af01eef --- /dev/null +++ b/tools/coredump/testsources/go/mcall/main.go @@ -0,0 +1,105 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Program mcall exercises the runtime.mcall path by parking goroutines +// through various blocking primitives (channels, mutexes, select, sleep) +// and cooperative preemption on deep stacks. A coredump taken while it +// runs is likely to contain threads mid-mcall. +// +// Build: go build -o mcall ./tools/coredump/testsources/go/mcall/ +// Run: ./mcall (prints PID, then blocks forever — use gcore to dump) +package main + +import ( + "fmt" + "os" + "runtime" + "sync" + "time" +) + +//go:noinline +func deepStack(depth int) int { + if depth <= 0 { + runtime.Gosched() + return 0 + } + return deepStack(depth-1) + 1 +} + +//go:noinline +func chanBlocker(ch <-chan struct{}) { + <-ch +} + +//go:noinline +func mutexBlocker(mu *sync.Mutex, done <-chan struct{}) { + for { + mu.Lock() + mu.Unlock() + select { + case <-done: + return + default: + } + } +} + +//go:noinline +func sleeper() { + time.Sleep(time.Hour) +} + +//go:noinline +func selectBlocker(ch1, ch2 <-chan struct{}) { + select { + case <-ch1: + case <-ch2: + } +} + +func main() { + fmt.Println("PID:", os.Getpid()) + fmt.Println("Waiting for gcore... (Ctrl+C to stop)") + + done := make(chan struct{}) + neverClose := make(chan struct{}) + var mu sync.Mutex + + // mcall via park_m: channel receive blocks. + for i := 0; i < 4; i++ { + go chanBlocker(neverClose) + } + + // mcall via park_m: select blocks. + go selectBlocker(neverClose, neverClose) + + // mcall via park_m: time.Sleep blocks. + for i := 0; i < 2; i++ { + go sleeper() + } + + // mcall via gopreempt_m: cooperative yields on deep stacks. + for i := 0; i < 4; i++ { + go func() { + for { + deepStack(64) + select { + case <-done: + return + default: + } + } + }() + } + + // mcall via various paths: mutex contention. + mu.Lock() + for i := 0; i < 2; i++ { + go mutexBlocker(&mu, done) + } + mu.Unlock() + + // Block main forever (mcall via park_m). + <-neverClose +} diff --git a/tools/coredump/testsources/go/systemstack/main.go b/tools/coredump/testsources/go/systemstack/main.go new file mode 100644 index 000000000..f71518a51 --- /dev/null +++ b/tools/coredump/testsources/go/systemstack/main.go @@ -0,0 +1,39 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Program systemstack exercises the runtime.systemstack path by calling +// runtime.Callers in a tight loop. A coredump taken while it runs is +// likely to contain threads executing on the system stack. +// +// Build: go build -o systemstack ./tools/coredump/testsources/go/systemstack/ +// Run: ./systemstack (profiles for 30s, then exits) +package main + +import ( + "os" + "runtime" + "runtime/pprof" + "time" +) + +func main() { + f, err := os.Create("cpu.pprof") + if err != nil { + panic(err) + } + defer f.Close() + + pprof.StartCPUProfile(f) + defer pprof.StopCPUProfile() + + pcs := make([]uintptr, 32) + deadline := time.After(30 * time.Second) + for { + select { + case <-deadline: + return + default: + runtime.Callers(0, pcs) + } + } +} From d8ebcafc0d4a577a97788696e69b1b4ddc8035d5 Mon Sep 17 00:00:00 2001 From: Martin Levesque Date: Mon, 4 May 2026 08:21:42 +0000 Subject: [PATCH 11/12] refactor: group BPF reads and apply renamings --- support/ebpf/go_runtime.h | 11 +++-- support/ebpf/interpreter_dispatcher.ebpf.c | 2 +- support/ebpf/native_stack_trace.ebpf.c | 47 ++++++++++----------- support/ebpf/tracer.ebpf.amd64 | Bin 821328 -> 854920 bytes support/ebpf/tracer.ebpf.arm64 | Bin 811152 -> 844632 bytes 5 files changed, 29 insertions(+), 31 deletions(-) diff --git a/support/ebpf/go_runtime.h b/support/ebpf/go_runtime.h index cfb33bab2..fedf4c63a 100644 --- a/support/ebpf/go_runtime.h +++ b/support/ebpf/go_runtime.h @@ -7,14 +7,14 @@ #include "tsd.h" #include "types.h" -// get_g_ptr reads the current G (goroutine) pointer from thread-local storage. +// go_get_g_ptr reads the current G (goroutine) pointer from thread-local storage. // TLS always contains the G that is currently executing on the thread. During // systemstack/mcall, this is g0 (the system goroutine) since we are on the // system stack. // // On aarch64, when tls_offset is 0 (non-CGO binaries), the G pointer is taken // from the r28 register saved in the unwind state instead of TLS. -static EBPF_INLINE u64 get_g_ptr(struct GoLabelsOffsets *offs, UnwindState *state) +static inline EBPF_INLINE u64 go_get_g_ptr(struct GoLabelsOffsets *offs, UnwindState *state) { #if defined(__x86_64__) (void)state; @@ -49,13 +49,12 @@ static EBPF_INLINE u64 get_g_ptr(struct GoLabelsOffsets *offs, UnwindState *stat return g_addr; } -// get_m_ptr reads the M (machine/OS thread) pointer for the current goroutine. +// go_get_m_ptr reads the M (machine/OS thread) pointer for the current goroutine. // It does so by reading the G (goroutine) pointer from thread-local storage, // then following the g.m pointer. -__attribute__((unused)) static EBPF_INLINE void * -get_m_ptr(struct GoLabelsOffsets *offs, UnwindState *state) +static inline EBPF_INLINE void *go_get_m_ptr(struct GoLabelsOffsets *offs, UnwindState *state) { - u64 g_addr = get_g_ptr(offs, state); + u64 g_addr = go_get_g_ptr(offs, state); if (!g_addr) { return NULL; } diff --git a/support/ebpf/interpreter_dispatcher.ebpf.c b/support/ebpf/interpreter_dispatcher.ebpf.c index 45194e1d2..4ab11b2d9 100644 --- a/support/ebpf/interpreter_dispatcher.ebpf.c +++ b/support/ebpf/interpreter_dispatcher.ebpf.c @@ -147,7 +147,7 @@ static EBPF_INLINE void maybe_add_go_custom_labels(struct pt_regs *ctx, PerCPURe return; } - void *m_ptr_addr = get_m_ptr(offsets, &record->state); + void *m_ptr_addr = go_get_m_ptr(offsets, &record->state); if (!m_ptr_addr) { return; } diff --git a/support/ebpf/native_stack_trace.ebpf.c b/support/ebpf/native_stack_trace.ebpf.c index 2fad60e1f..bfc735b36 100644 --- a/support/ebpf/native_stack_trace.ebpf.c +++ b/support/ebpf/native_stack_trace.ebpf.c @@ -309,24 +309,33 @@ unwind_calc_register_with_deref(UnwindState *state, u8 baseReg, s32 param, bool // against stale data on ARM64 when fn didn't spill. // // Returns the user goroutine address, or 0 on failure (caller should STOP). -static EBPF_INLINE u64 go_resolve_mcall_goroutine(struct GoLabelsOffsets *offs, UnwindState *state) +static EBPF_INLINE u64 +go_resolve_mcall_goroutine(struct GoLabelsOffsets *offs, PerCPURecord *record) { - u64 g0_addr = get_g_ptr(offs, state); + UnwindState *state = &record->state; + u64 g0_addr = go_get_g_ptr(offs, state); if (!g0_addr) { return 0; } - void *m_ptr = NULL; - if (bpf_probe_read_user(&m_ptr, sizeof(m_ptr), (void *)(g0_addr + offs->m_offset))) { + if (offs->sched_sp != offs->m_offset + sizeof(u64)) { + DEBUG_PRINT("GO_MCALL: unexpected g.m/g.sched.sp layout"); + return 0; + } + + u64 *go_scratch = (u64 *)record->goUnwindScratch.gobuf; + if (bpf_probe_read_user(go_scratch, sizeof(u64) * 2, (void *)(g0_addr + offs->m_offset))) { return 0; } - if (!m_ptr) { + u64 g0_m_ptr = go_scratch[0]; + u64 g0_sched_sp = go_scratch[1]; + if (!g0_m_ptr) { return 0; } // Try m.curg first (valid before dropg, cold path). u64 curg = 0; - if (bpf_probe_read_user(&curg, sizeof(curg), (void *)((u64)m_ptr + offs->curg))) { + if (bpf_probe_read_user(&curg, sizeof(curg), (void *)(g0_m_ptr + offs->curg))) { return 0; } if (curg) { @@ -335,11 +344,6 @@ static EBPF_INLINE u64 go_resolve_mcall_goroutine(struct GoLabelsOffsets *offs, } // m.curg is nil (dropg was called). Recover old_g from g0 stack. - u64 g0_sched_sp = 0; - if (bpf_probe_read_user(&g0_sched_sp, sizeof(g0_sched_sp), (void *)(g0_addr + offs->sched_sp))) { - DEBUG_PRINT("GO_MCALL: failed to read g0.sched.sp"); - return 0; - } if (!g0_sched_sp) { DEBUG_PRINT("GO_MCALL: g0.sched.sp is 0"); return 0; @@ -360,25 +364,20 @@ static EBPF_INLINE u64 go_resolve_mcall_goroutine(struct GoLabelsOffsets *offs, // another M, g.m points to that M (non-nil) and its gobuf may have been // overwritten by systemstack or another mechanism reading it would produce // a wrong stack trace (e.g., systemstack_switch frames from another thread). - u64 cand_m = 0; - if (bpf_probe_read_user(&cand_m, sizeof(cand_m), (void *)(candidate + offs->m_offset))) { + if (bpf_probe_read_user(go_scratch, sizeof(u64) * 2, (void *)(candidate + offs->m_offset))) { DEBUG_PRINT("GO_MCALL: failed to read candidate.m"); return 0; } - if (cand_m) { + u64 cand_m_ptr = go_scratch[0]; + u64 cand_sched_sp = go_scratch[1]; + if (cand_m_ptr) { DEBUG_PRINT( "GO_MCALL: candidate.m is non-nil (0x%lx), goroutine rescheduled on another M", - (unsigned long)cand_m); + (unsigned long)cand_m_ptr); return 0; } // Also check that gobuf.sp is non-zero (populated by mcall before the switch). - u64 cand_sched_sp = 0; - if (bpf_probe_read_user( - &cand_sched_sp, sizeof(cand_sched_sp), (void *)(candidate + offs->sched_sp))) { - DEBUG_PRINT("GO_MCALL: failed to read candidate.sched.sp"); - return 0; - } if (!cand_sched_sp) { DEBUG_PRINT("GO_MCALL: candidate.sched.sp is 0"); return 0; @@ -410,7 +409,7 @@ static EBPF_INLINE u64 go_resolve_mcall_goroutine(struct GoLabelsOffsets *offs, // MOVQ $0, BP // clear frame pointer // PUSHQ AX // *(g0.sched.sp - 8) = old_g // CALL R12 // fn(old_g) -// https://github.com/golang/go/blob/917949cc1d16c652cb09ba369718f45e5d814d8f/src/runtime/asm_amd64.s#L427 +// https://github.com/golang/go/blob/3901409b5d0fb7c85a3e6730a59943cc93b2835c/src/runtime/asm_amd64.s#L459 // // ARM64 (asm_arm64.s, NOSPLIT|NOFRAME - no prologue): // MOVD RSP, R0 @@ -427,7 +426,7 @@ static EBPF_INLINE u64 go_resolve_mcall_goroutine(struct GoLabelsOffsets *offs, // MOVD ZR, -16(RSP) // SUB $16, RSP // allocate 16-byte arg space // BL (R4) // fn(old_g), entry SP = g0.sched.sp - 16 -// https://github.com/golang/go/blob/5a928e5a37dc632bbb1794fe0e0846e6352be8b2/src/runtime/asm_arm64.s#L215 +// https://github.com/golang/go/blob/3901409b5d0fb7c85a3e6730a59943cc93b2835c/src/runtime/asm_arm64.s#L193 // // fn (park_m, goexit0, etc.) typically calls dropg() which sets m.curg to nil. // go_resolve_mcall_goroutine() handles this by falling back to @@ -453,7 +452,7 @@ static EBPF_INLINE ErrorCode go_unwind_mcall(UnwindState *state) increment_metric(metricID_UnwindGoMcallErrNoGoOffsets); return ERR_GO_MCALL_NO_GO_OFFSETS; } - u64 curg = go_resolve_mcall_goroutine(go_offs, state); + u64 curg = go_resolve_mcall_goroutine(go_offs, record); if (!curg) { DEBUG_PRINT("GO_MCALL: could not resolve user goroutine, stopping"); increment_metric(metricID_UnwindGoMcallErrResolveGoroutine); diff --git a/support/ebpf/tracer.ebpf.amd64 b/support/ebpf/tracer.ebpf.amd64 index c745bd2344bab2ff78132739d1ef18496f4622ba..abae69b1f2af17e8d86de2a1423f60ec73d83387 100644 GIT binary patch literal 854920 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 z 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 LKxzNSee3@RL+Z!x literal 821328 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

*v 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%0AA4X&I zMoX=kHIFc8*|pTVrb(owRu+|%h=fN0FSYUj0yzZ7wtV4YS$__`l!OzleSV9@(j+zF z+_D6ESTDKilkCmJyVQCUPfrQLqdF?L)S&pN>MaT?D=8jpV%x1xwB~NMPL3Cw;gNON zejx|_%9(2DtniS>3byCTp=*ZoBsVJK9PFUIc2QEyA(3+knRccUoe6on*wj?1Wf3 zhc1aWBe-(ro4*}*3|jpHQb688qwnn*ES?-J4RpP(7D3pENPb5w7?Zk{qvbrFhao>D2>= zt=#Eq6;ctnJecc}gJ@Pb*hf^SFC+m&l6|gelcWUq*A6qk)k7$VVtcwJ5S2(njkFV!A6zR zQY#crH1($2p!v>lysDZ*q^cXFH`Z8&kx48{j7iE8r(oDIDJ}0eOW*tiDu+Z4(^@#jrYo^lw~9 z1-K@UBDzrQ#iu4#NP*G$h!EEjF{WX}KTg8q1&+|=gW#G)fN4N$RNibg(Fi&wi7ED@ zYeUFRhIp2IQ?{&u7Fj48?Eld)3RbZ^p0xBz_zqYh6Kwf5wfD+0K2Eoo0BucO{Qc{4Xj0HZ4ds)Lh z!gGt59$w?^B+Sh>TZaY9x>52nQ+TYZ(Fj1Rmnd{3jJJ|;oF%`^`LVE^ZnLVp3*qg- zr-Q1Y03F;<4^$RTL#K7bvhXoLnBpSe>Li+ZkW5cU4!gl`@QIT|Xv@(Dk+ai~oRQPQ zdg(EEo(khce8Gp5WO7>(7ep$NnbrbAz|6qK-6BX*5@lJgFUpuvnLRyO=7X5ms=^~MPGE)YU5Hzs{1~dzcM~gl+>=7_W6`h| znZ?ZCd%J%3*mrl%;#YPPgAuRN5WBE3;+n4y5|Un zcFM3YO^aV8!p7i{@=T@dEQ2G6F&fAL=rS&I!KxM1m=PN!oDiIxHXGT<1=m%;vQl1% zgfi;R7({Vqw*Jsu*jewxi{mA*er|CgYJnz-E0*SGDI&Q0az1iYMbQVozAlO*efBj( z5#PsNjh|z9@igK6%GFV{POvB%0`Tkm5_|;sKLz+W@ZV@l>?eVLs+i!Xfu9TTY2eR1 zoY=ns_$yB&_#*JR;RL@E_EsgJ-|=AJ;C1${7nJ= z{lNbyz~2sh`n`$!cLLw`K!U#u_=y025AX-xm)QR(@V^c49|Qge?@#RC2mIroO7IT= z|HA!YK<>3@;#I~$@t!`}jYPrp&?q%;1P-u!~ZVWufMk;+MK~3 zG5qIXfAfP4(c^|Uy$s<$&=8%=;7=QVE$lab2;r^Q@Esm!@W%}whWobFhUkd^zXtfZ z0B;5URDf>*9&OO@>Hj6bn*#i0z&9KIN!YJH+Yl8pcxwjVy-~wkh5N=Qk)MV;{-4a) z&l!GojP!n^AzI1c(PbK*^M9q`18~0{e}xSGh~XcG{mYuxN2`Ya4)ANQSRXwe;Elk~ zW$>pBZ{7lW!2HdP8o$E}8T=u`Z-e{2FJB)$9N;$sUk&gV13w$!*8+ds@K3=1wFS@< z;Elka&fuF-VN>2VTm$-cApIGKN;ZH0)NWz zA3%85c0!mgS9*vy0^e-7%dbMlzRmEjk^ZCWqmvo@3B#|v7Ww;n#Gk<*e}=}l2>WjO@He*yL{`E(SWH2hiDMbRy*QFO}i67Xj}9z_%8e;N4ZXk)Yz_y;{|0>H)lJcr8GP07R~8_jyPKl3 z8GL1v`u|bbzwG0eMfV#1i@+N{eOdIN;ZFeHh|1}a41P9)pL({27jK3CKe#NKF#HDK z8=t%^TFKz|W$+k{HS^Cs1;erTDSA%S7_}PyG2qW_YK)Es_;Y~w8U81<-_RJH4Djaw zpD^5oKWF%}wxPT{uQ9sU@DlLGD;uNx44($R@#@Ctp$xv7!S8*J(*GFTzhXE18@^{d z%KOS?(Zd1$T;PuwUV;6!t&P!H!#@f9x_yn&OCJZl zhQAs3bD@kB0{jNxt%3Vz!u=`39e*Ya{}uS({JAJvG5l%ZjjO1i4R729`Fu2r9yI*< zz+d=8WAq4cwg)!>fA+i4z8ij;_8&+4YVMu>d(P}#{7;&_(|MCA`}hxw!-g{w~FERh^5>!bGklpiIs!N!D{2Ji*1^9D;-*5O|!2Q0ybMn*2>Mpj zi#5Cr*GJLSg>}*90KXh~!EmRa9R<$z$H~j73_h2^ccX04eF5P=AIj)a!(IC4fV2D^ zg8lkWuaEA{;P+?nlL(9M**{(P==x{{Uxxof@PAd@6g_PCuM>atvgn-Qjr)Lq)9 z_x%68-^?`#Gnn4s(|7~YhBrEi@lAY~PB-2bn>{}AV3=L(55kR`Z>E18Z@Wz9n~C3y z_o|04i%!D5!yAF0GW=H9ugCcPat6OQgI@_6>EAuE;XekmD>1&%YWP=xH=eyL!jO=- z|7+kIA47Z@d@h6UZb*mU3Y_V8<9&UGyYar0hP&~;`^^6}`!QbiHH?>M{BwSq;W__L zWc)v6{*S}|`lrCZ_3GY@@1W`t{|;Zy;G8dJ_|CpBgP+Rag^ikC#d#QA0N|1-dEer!X8DL#+y06y`5*?S*o$F94+_uRR2N4oRpj^>YTjXm+md#n+zfzMcl*` z0_(dC=}QM!l9u>e$oZ9|E&j*gTwx{YfZ1QyT!-tkw>Rm@{)@05FRdg)@t=X;bao{f z1-uF#M+_HyTL10q_!~}#X~gr0`}r(=hv_*#88KYaX?Z^f`wBXDJ7Uf!r{_cV4! zGw|W+N-_|?06yA5`vX1%-Vi^29nybbCD{!45O^$3=l{AZ$yUIJz}rsG`J0DU()r|z z=Nmka?7jV2`(E@){CxraD}EXHrUd?4@!uxz!2c|M9DKtINwQ^TefgzyKKf#P;8|p! zAIR$a1LS{k1vmS_jL*Faf5YF*`B&!muOWT|>?h&>Z3mnKcO&kJ{|V9`g8#NJ{#EcY z1{cn^vV8M~*!6LKHMDmy-x;>2D|Y^Y_{Lk2?g99(#s7fZSxVieKq5%0YX^NDTfQ`WNj$+v(j0hht+;(K7vL9bJfxDj#ja8};Ck^au- zSCWd@$Gm58F zYrO;KV|Se&aW-GMFBwEUjM($1E`NL^Yp=`a{3*-#csrNfei_e)T3=Dbd?(ZY3Hs;S z`o5$D=JDHJ7F&N&6M5!vDoKlBKG;2ihX{PV_AKEz7-=bMa=nI_Rss-{zsM)&fk(B2CqGg`4{n++{gHE zJhP|I8_YixBj$WA^V^=kB;zk5|Dh)^UlZ^uxGeVdSP}0zk9-r1Kasr=*k1~JJ7A{o z1e}05pUU>Qyn* zBIf)l>$iO-PW$r_=mo{eYfxSv9#}>isf#@xw!|I}yJC-51F^>&&gZgz^Jc`oE3)=} z9PK@Ed|%QJ_y+K{I2}JAwwy&gk9c}=cYn{s?(aO>!uGho3*w9YEp~rZ#O|-E*!{!# zT$bnlX^Y)IJ+b>|D0Y8uimCTnD?)D*F!f*CV(Y(V5%;gm>bL%D5OMufX1D&UA^vn3 z{f_U)w%GcwUc`flE2XSF>%Z2;)_>I_Zbm#8C;IJ(AG|)(f90>r%D4Wj7%=r;CGi)L zp8BtHz|?=Oi(P(IZ2eb5Z2ebLZ2ea!;(o-9(^>nh|7wb@|LO)z{Z~(H{ntQj{ns$C zQ~xyz?9_j4h^_zHv>oS#`mgPXClQaX&f1&4Z`E_jIO45{`)9KBN6zB$SLl!05?lYZEw&$f8Zh-=bFuYb z1&m`H5B)2OeS8(Mk8fS<<7W?{>zw6Z)JutdJ+#5>?|0&SEn|G^MLdYO^^z<- z{i{pxuMWWB`520QJ~qWZA7io4$Bx)~t5PK^&w8tx*m|qB*m|px*vGRWcKzF8*FP2e z{Om+rx_S5Ul*KNuCU$w$3G(=TJYBKNA4EKgxb@O3zteXk?nnGtoToP}Wk<{N_Iu#u zfrX#@f3%;w7Wu845w|0*;L#J_=e39%5tml7`;30=OXmBMYQXes*TnX-)W!B|hkkDQ zwVQ#Rer>p7)BE0j?QX<_h~X+p)7!7z7N_Gn{Mx;UV?Q@ub<+IyYh&n0*?#So*naIc znEhqHc2{=$wFhGRwL?EQ{o0#>J@j+iuRW37Jd3!O&)R3d_9$Zex$W29lHELsxV@T{ zXTNq|Y`=Es=cZqKDEs5rWqxh@y~*@zZ^&-Hw*B5@`nB!%PR}p=*b|q>_f+sS;*R{z z_G{bEo%*rwfX-U>)Q^pe-+u1@1LMyzyr1@=|gx5aP19rbTxU7h$Fz{}5L z-JJLrz-x2#pZwak=OeaXoZn6P9h4_~`W*$Hirv4-T6X*w&xhE4-*UwEo7+x5H}6M( zhgZe^4!57%;}QMZOm9DGPwemX0hrG(`+bLzeI)jG{8;So_(_nTe&1=p^!v`l_WRBQ zJN>?#7-swI_qCth?Jdb}KS5RO_SeLIFKCMWUO+!P%lCUhPweOXFyc|f?IXL-7uPwl zzkVCnNA4ij!9~0w{?D+#==k1r-4WB1uK*X|hbG^A2kwvJ-lP)odc-^8???L8r?75Q zer8`kW%1*%FXQ1>iR@Kzn!k#5fKmExl)fLO=Q=00*X3_V>8DY8`?;Ooer~sy>y%iY z+tU&|J=Yo0?q4@bzZs<;N9nht^!BT}eEZd1|9{J`ZhP&LtUX^w|6YMf@Ls?tzT*j$HSm-YGA z5WD?tvD@Df`~L5X-F~j~3EMvsdwk)#9@;(raUBoY}2{e?HB$cn10N@>}2{eV?XgocKb2MV*4@eH?|*h zD!X|n;<5b1_G5Bg5ZiA*<}6_PG3R3YF%!JkF}?kmyidur(~nsQ?DS(6#r9*CY{%d9 zW3ESBjkr)!eN2y+`*OsUhWM{h0PElj+B7DZTxe?SSdWwBOl&%&zQY`Z0R}(~sE~+mAVLc}UN7tQ!$; zMqE3c^@shKb+P@J_H&cz$7}`Z>BqER+x^p*-Q$z}*dCuYWcT>ACAJ@P3g&okKjut) zvWj-XkGZ4t_G9L+&eFU70+`p|dHkUtvm&-1b6spdW-Va)F&kq0F*{X)R>YNSciZh(cK&)~FXFq7{b{@X zw&rSNr{9(7?f0YKmF!;?%=7!sD(+v52aSkZ5hIXwn*R5YehL1j7C0==epjE5p6os! zeX-An{jB!;&1JXWuPDE&{eD%k{eB&>kEbhk{R6Su|hyB?Q`*_-7*Ka?u>mR5*&r5GaJdU`Faf$W0 zy@QBH5w|ezgz38xkHEW*=Ow$-e+uuZ3w`dsgi|8yC;$FO`z`0HpMJ%KK6jzd#iKU8 z9__bW=yS9FNc~<5eeOb^E5D)r91DGJ_FT80VxiB?#*2kM7gIh9eQwf%Uy|>4)(0>2 zxmkZK^toBQ$b~*Pdw$rjZNIGj+V;cRuO0hc7y8_+|LoVc-_(BXqWp^XYuj&Xzqb9R z_G_;zy}w7RV*9llV*9o2N3|cjBfHstP_zA(_G>Tnx!L)%Uwfg?&HBTB?L>Z0`oS0a z+$6D|*M7fs`FZX4Yl!W~Ug&eP>&br2g+4dy50CFd`DN`_Ug&doUoZc?`dsd9vC!xK zzwhT>=yS90u7y4qdN+uj7y8`ndRXXl7y4Yr!CB~Yv**6wqZj(zY<#d@b)nDA`or(d zl}j>S=yTBz<0M(=bF=Zoe$0hFH|r1Ubr<^FtUng|+-#qjy8OfoeQx$dS?F_jzkevF<_6)h zQvNU*8u*I%XTSw$jMv5ZEB)2*zszqticI;}@!t;KhW!x1)D=GmUVh?0(v7$uF+yyn z>AmitAV#wER}`N|nOt{J7azM5@2yxj+yJvZ{xzfgE%9ljKZbS0dFW-?zT3es-omwk- z$4|Ds9i%^j^avrGmPh+4cogN|5W9c3#O~j1vHLe!$;wOD4c&JzDTsalmc(vfS$rOS zlE&i}d)*M@T(G~qZm1bB*A2DBUN_ViyL`sAV1BoML+ti%irxN+*z0KKVwYFmmz8(! zYq*Z%U{Z~kOU+rI?O2MJ@`sTAP-iu%2Al)e#E-&$=|igtme!@|$!p+-_?Kw!ttQQY z*T9UU!TNrO_J>!~c+uuHa7Xt4NIQa1bOT-k_r&=(!~V!>f~9R~dE_3+wwlh?qTvcHXX1i2UoyawJ9zn}I;SJVBEnV-A{p2+@T+DEI& zO#CtMi6>W+d0=0IeMkJqu&>;GASvXt<1u54xAgeTWAW?n!FV)8{9*Bf*MkR$KPvtr z_}B%+Zw~kfcrNz!u_Jy5%G*CeeAU&gzK?-(=WxAW3t&v$}P75AiZMA(1iOTinm|5NbIel_i8#>pUi-E&p^=`#8U@f&MmuWN2b+>SVZI4jTV z-b!M(*Ks$@waA_?WcmGku|EAg&e!Uh1Bv5BdtJ5TMcYr~c+qCZu`th7zSrU9k7V_E z{3-;@@vA8I_*Dv+<5yYi@v9Or$FFs<$FFL@9KUK}k6-nGIes<79>1CabNp(FJwA2B z9>02Gk5B!8IX(@<9-oE*b9@?!Jw9y&%<*U}=6H20#;dJ>ZwF5T=6IGM4hOHd``?25 z{|>|-4tNz@6#oS5m)?zdc>x~-R|7r(u8Y5n^vifTWPEIvZ|+3QxF58ieJjS7hfrU@ zr@*CvZvrzeh|`}1GcJfZ2d)Op@*3iIqx?e`Fn)3hG;KCdpX#bo@`SU$oeI%SphDBQO=G&j-W}m<7x@ z0y|>2FTuP5>pyfuwjXv;Y`tYkY(3?A#Px`ah`Yh^yiRsqeEe;A$9#TI(iC40F5u;Q zApUl6?gczA#2*2#>|MUN->-Qr`|rbkU4pnqQF`j#S-%U}sze#sOh@v@li_8q8QC4D!*LPHio3x$2;AS>aXZM2i{Q8&){oYd-u>w~ z9*&F9k==e*>(3n*p(nfJBJ=}heAhw1jEgW7J1)W~V8%t*2$*pZHpPyMFcv$$>m=e? z#2v*Aaa@G1*l`gUubTaB{pcV_PyMLll(>H!r^MHryqRXYU|zj_q*^XIf-~&_>1{2en*38_Ybe5 zsr@|C@H@Hzrakq8ZQ(f}eh~ld?9+G;2sj7s1WbEZ{0XGLa)RfC7=NX|P5dv*|KIT^ z_YA%x#4B&dd7JJ@rV-;)C{3S^i_h&zHe-h0hvnUa{I9-mPwGc9p9SL(F4|uXMw3!T zHR%skrkuvBs^hyQVm$g%`wy{wP3$iXzYEJZmm;QLhxXq@`nNxT;|ut;;7P#ufa%8x z)6WCuzBBae*iO!iQ@vgX?^O}gufz1V7vP5=`&Sg7!-+oh2=WJ<16QK->*B9P`W*h$ zBW{R)3bvK|lGLxl`pmt^UV)z@Y|py5@bxJFAodA~xFJrD2Tt5}#CVi{^>|^g;5$An zzb<|+%f~p`5PuN-c8rV7fUDqE!1sVVQT}dV&%usIS6Uy-BM-!X1YSA2l=?N;9`iV| z&&57JE%*VL{+f5-_I)5py5jeO-}-?h=>>cgJP7!5@JO6q&z&UMjCdmc6_mI9NRs*? zSReT~IKiic`37)4V5TpKpGW#D2JrI-yb3OfkNq{+9)+J@+ydV|N>V=t%eTEA*jHh1 zMBEgo`!GF*{)iZ#a%p>QufQ+B@;`<84nLVBHSwPNurJdX*Kfe9;AX@vaa!JI(BBc$ zZ^80yUxy!o>>uNihTIU>QGae7*IUGlPs;S)4ExG$O9}lLA@?JmiPQU`i(28AV0v>Q zV#W^*+cOjYL)2Hg4}PeCSHU|07r~4t%KT1W5NG4%Qc{YzEdDHy2hZ(l#Px`K;+1c} zp*(|q(8Q;}cRql9eFCn4#{s_v%=o5kpVKqGDLHLl8~db1JQsgE%3tZ=_~2(@dUG-2 zvDoK#2IlkBzq#1&HTKi^y`~^PjNfa@;-5qP$1xaI#1nAt9O4a%OYcmQH{St2QNS+& z*ToOOzI-?KT>-QGeBLkNc|Vlh?+u#~Z$(T!BlG_%%Dd_jj9&p?37&}m0`}DlxL(AU zybCeA9>c@`BRC)ME5Swa`(a-lVSJ9bD*g!Ug)zow@y~*K4CsBUDE8wB{M_|8Vfbs)g29L#T z|8cZ`67T`=RQze=zx*j&kK+FTE>6*(;zYmvv8;Wz(~rXTAN%Y0j(r;a7x3j^`blWN z1NIxA#q(3_@|xly>{o1|zk>9KkbW33{U$8$3rK%phJE%To#(jnvDmG_tM3C z>EgW<@7>XR=YQ{e>5t*P^tYC>w~xp1@6X{6z7qbc{!-fgE8`#h{WD}Mvexrf$L|0(U}US!XsjbZ(8aix4a@}C&2C1vsVfpZtu zlJzKkNBo1V?}@c!D1HjOGF(gjsVv`&PlU95GhCi2uiOt^4Rn32fOFus_zdia;H-p8 zGEGlj1$V_&+TpzHgV}%nKE+h+F5ZZ^yPTEx&B(vbnz*Ajmbyn=bxZp6Ka=^thOgMSmpQ`npCw?w`Ld^ZZO$^N6@!a39@ zru_}DQ-{X%PtuOYVaajIzem0e{U?5b3{hTJ%=|gz?~8qWgUCLLctd>UH{$s2+na1f zyd7~9{#3TlKl)cg=Kf7QfA)6_#rAh>i0$u~DgQgZ5$(TiEt!ko173zmrw0Eg%l}UB zaX7c=uQeYAH^olh6}x@CApJq4r~j4te-!1tX6Hcae+}Ee8Q51~-xB``(yzS$-Klub zd%$q6O#)s8PsKOEp4)pc)s3-ybCS>MH@C$Nq%Y(Trv6;^pZ9m5KbP$NDf&wPw~_vh zrGu$Imv-(qbIS{R6YI_#SCRf)+P%Kax-!SfqW_ld`#j1!fSa5CTBdj0tg`ISz<%=# z{)K>F1+E5s3S0}g2&Vs*rk`TgswJYTOP@x|*^?CW()?EF)) zb!oGJsY}}tTbEXVf0p%|H^tV4S$Agcz~9RB)`@k+pDyG2f=VwWeY+Xw=VCq_|Yx^S7bAODw>}2X%nqrsV z5?j~O6T-_p5L45m-#Gr13N$Qb-)5nET6riXnK{!HdSau(M|4Z29N zbs*M>SqHK$yLBK_vHO1}whp8Kep)7fTL)4Om^zS3z|?`Pi>(8x2234D zEnwSF6a8e;1}+7WjmrvH@fw+^Hrwhn~;RNAcrDF^AP1F4DKKlGSeSF;iisfHCKC$25h7peZzu*TueG>&l;=FMO=D z#J_>|9>rv0Tm1XvCl4jmA+i1)GA1AUQT}1X9gOqg@$@4efLWgF8;V`uhS>Fu#cuDG z_|P|Fegz*#+X250JQIH->@RtAPqGv6ad1+~>ZiR7E{Z=6UVR$+kARPYtKwgU{m^tz zQWJj(e90#IFW_ZxTYU6=_`Z1(>kPz+e*M6{3i~kPk@y>te+6Qlal~5@GtMac^QVzM z2R%?rJO;lq!S`suF9kF1DAUt^3Ah_Db*a68-wf^tTmuipFM2glY$ zuSfdABL|b3_+fAkFLT_liS79~c;y1#UnA~D%>9#?{@*bF*1@EB^=>YS*S`hl^Vx&x z{z*(vu7THO{~+x%v?t)#gX`kY(f%CXuY>YdkiRXy1lJ81QA_lK5>*UpSOh0zLs=5BM^0RXk++_~U@F3tKcqsk|(&x(P|A@!pKZgClZRr1i zbKq_9!M}rf%<7?J67VhHS->a3^MKEQcLKfyoZ!2b*Ne-`2h8${0W*IoVCFB2v-jge zNiE`f#FLO4XkWxT5ktJ5w(l)C-s>SA$p?HjxFr5w*sq$QJ>s7xKZol>{3Y=63x|@H z_$%Pc9>RDeKKrd04|*7HA|6J}{kPa(F0UqgA|#aN#0?He+_eB|RN#Vtr-CT_Mrp#VP`IX0Te#HL(e0qd+Sb_a|*!f+>`aT8w zC1b2R4fr~6Bj6Ia8E_8V61zLP;y*-rFT;N0y?}GzL6m+dKJ|CeA8>w-B5u4SYu~$I zKm0V-wTdr*U-Rg`q$hU${lK1seHigb{Kv?j+l0R$V#dW~f9&tz`T5Mgr2Nv|+!J4{ zPkas17oWvCuz+s_ZwCBo@HpTccq0Bbh;#WNg?(R?O;tzvg(%YZ3#J>zaR>1pUV7~$OPGCO*dsqBtOn(sX zivb@2_r{bizx=B+yZf&ocK=nyUgz8rzYgzJC+aIn zSL}7dL+8hJe&V@($yn@le-p94$LA3z=Xdw-U*R|x^QMb=Q@YA{A1~%j@!Y_?YI9%K zAHJ_KwUG9Yc`jjn$70?T_tVLIvY0o`p1X^AQ@mGUo^&y9nq3c^ zM_tUDF6K=a^QPJJlJlyIdDF$b>0;hAyB|D{x>efEi+R(mKRl0G(mdc|-V}Zz%!@AO zO|$ER^Qen?Q_NF`^PqLi^M<^bH(kt|M)RbLdDCqCSj?MZo(uD+i+R)RdRWYxX7j3x zdDF~)-RZB}rHI z+;_nRI!%(k7=NX|0sfcyoqhw%`DL#s7|V{o(%%;Tm-h4c!}SEHB4zJ;F&Ce{6Z#A+ zw(Kuu_S?bS*8(AL()1rCe+Kb}#NM}JB=)`)8)ENUu_=CQ4f(Ne#aQfpE4IYmw_;oD zeJdtnw{J&$=^Ihr_HvT!$=Y`pnEO^hLXx)kBVg`R0SQXVpCV)ZYEiuBE~Ll46p)al z_Ak+neJd(p_V0_(|3~gm(tSF}uK^#u7xBcD-s|xiO5dRUfh66RgX!C3XgWJe@AY>* zrSHLh=pme6*&W|$BKrl{PdJ@TCA(>T?%z6?=jTcE@A6KP{4V}}Gp;HA zzKnmb{XP5x$5FsvY^U$5lI-{^{gv^*w4cWx$I)c|^uD?S^TV){Z$Nohb+C>);2gLk z#$V~Li~nW%hmijA58yr%Z-H}N?5`sJH{j(y?xTpeBj$Zs`fk*ZKj$96dV2A|& z&ijsb@-<-IXJr4T;!ong22qINB)oavogTC(};(mPj%70N1>~XxEXN~*9p_V6X};RZj~e668|*p zb&QMK0lx-33AhHH1dHRqW%fiG93HFx!9VdrU?~n0#F-XiK=7Tr155Zykv2<=1Zz=t6qrAcn&Tqh1f@k8~2b1Kr9EA2~ z<&&=k=L4pl>zY}=?G5ppkiLrNQ2sz>CtnLLgV{d+Dq{CXP3-=ti`^eBFzZWo@+bGE zaVA6VNA||S-N)aK*z1&ieR!R+d5H8Z{|C_iQgd%I3b+jBI%eD70NxDv&0wx;rv2X| z|Ec>Cw;-^uz`iX${2{CzsNntzI0wekmNdWnYc75T(x1T150__Z=X$c-ZFnybcVNHm zK8&XUp8;=)e}Q%k4xP0uKlu!p>z3KxuYk|pkN1YdU*$7k?$1H{%@5(3(nZ{efOFuQ z_-kQbd1!CajJO?f84sjg*Ms=t^&q}@J%}$}4`8LD`2i;X8GITD<9j7m#wUP#!dJd#7)SHnZAPbT-VI>FMyA3?oHP%o0q{{ zr%Zm)_rV|h6wXh;B{0`1+kOVz4EP3cOMEZ#--w5S*D3!1m~pRru=DtTnmoPj>SlVy`py_~3QM=JxUI_{`qF;^KZ3mt^*f`%#F!AH|0F&JW{y zC}KPiJD&bjd^_IR8Bc#M_V}`OOIhswTN(j#|CUz3+`pwO_I@pch`lej?cU#l`?p;65Uz(}R=@Xi z@%|QM?&rdF&b(g9+|R}PU68q-OFOW0KbLO6EPo(=H_~%Imu>MU!Q9VfBKCeRI}ztk zWcAxV6uZAiV)yr!*!|6Q)x3ZGn~A?2*UyC?FT+vu-=bKsHK?dN_POrOTx$2#6^aT;eI zACcTYgZ4DeKE|JU#K{%A?c3tt$MJAKFYbTA{C^H!#kvRXf5G>Ae^1QB{+>uqW_Ev1 z6u`{yUr}~{FK}IXXy>}}@Oz>z_V)zWnTOvOGceDOe{-?VpZCY``Sbo5K7ZUFgY_Tn zp^xssI_QY&5$EyV!1_F1l_K`Kblc~!v;1tG;vU>YyP502X@48)KXf1VIS4ohroMsp zzr*&maXupEI`GiGQQF$NEM^;#DDda6cT2eW^^fa8Dd2>mN|f3+g!y4o;3*VUTq$j^1P<{EfCVA`tz=fIpV zW_tfxk-aUx=_BaR$8bI)<~rQ)e#&3Fn~M>T#olj*>vEaj%yqb7|8gBJ+5KA+yMOCq zj|XkB_n+yBz5mR%*!#~U<*a<~KQk5kd~u!ZuH(CYcYke(8|WX#RhUFvyCF;eqp7`-U%Pw$jH zg`ab8x<3xztL*n&_&KxjbK&RA#*2lYGrJxZe$IuTbK&Pij6V4>?FU`>IkWePg`acb z=j8kK!q1sKFYVV{_&KxjVd3Y*+|!duvhZ{6_RqwA&c6pgC!{Co@B8uZkKqsJCi&m! z54Ap^B(^>P?$w0p{aeRBnBIDTdc+N}=l|OgV;U^YZ~F|)@>AU@<_40b%ahs0kzF8l3Evg5Dx$EMMK9)IY! zuYsBW*qtb21N#q%uR(ds5Xnsfei?WtVA^?{%>NBYzcR@u#fVE0Q(h;T=!#~URSRY*iGyfM*{v`(yuT%UN`pUXqHC4MLP zsxEX20UrTxh`*n9=s+N~O7oLn4jzmD9r*MBI);ExfG6UUA4UIQzxt{8Jb3v6;-5#1 zLrBZFo%<)Tzq&|&GAMr3TFE|;-3fSrkEEMe;&N@Eatf*9!1>UpOs(iL#Ky%KZKmjju(6g z^L~SXbKsHq?XVxg#k?s_?+;we+YwJ9-ae3({~gGG68rsP3#GI^^3~wv;8!^ZE{J{n zMe$D}{bf_^Hzb~dbJ&l#0S@oC^+OpuKSDmIcHjS4ik!0V|EAdYe+SI-HD~$f5MNey z-_OH{M-gL7w~P6YB0qJWVR-}bsegocuCtY7EPfw&^|_T~3g+?n=l#Ro{`}$H?JtPk ze(FeB-*=(Bm36GA5dSRrGF*%u@izGI-hD|o;8k!>{HL(z@`!I6@hIZ;LRMe(2hgsA z*pEEm8^HB|kAs^59{{(+-;4Z53)r7L;KN|S5M@s${*xw2rH22Ff?*~&?YOaGP;$LNX5A02K zrnLVK8G~Q`XqMhgT`BFyAHn&0B-53KydK%9>!jW1*E-JELtk+I3FL=8ynd|Pq&)|F zO?Go#{P$tM6oY9a;1gi$I%z)yZpr>Q`0!`2A4$N6z#Z`x?OS`3uJ{@-_vh*d_Cv4_ z!91Q8j=zj}q@#du1aAfWTJUzj$H9|;F9S~lz5+ZG{|w5{-HXBbcvhb|A8}VaL;AOT z0QY~u_k#NY9{`Uc-Vne3hoA+10{6H0z2M^`9FO=T;G>V>cq02GvQNdIWPU8Vm<4J#@!zEVQRo~4J_>G%zZZ7uygLzhBc6(V|5CTh_Kc8! zKXm6i0aKUG{ex)#W!MX6_a)TrlK%pH^SOOVNzD8IO5ES&fO-E@$LsXBBYiWlb3AB? z@BCrh54T~w3HTClC*W0ZSKLAR)%!3Wi$4s`HL*@!{2SmSHH?SiKOo<|FWCn3{`dVx z-Ei7I*bhB|myOGIj}LjVpD)%C`}t@cv7awBq-S~Q^S_38?Gd*k=6*@xcvLKA?B{7E zV(W^%f1Y*3WbU8WPxjL7o^`|KGIY9O{p(`yr&o=5NBqP1kU8}j`U|>O=KnO9 z`|B0O6Y$D-Us8#fx?ZNYojO`F_c6#ly)T)Hy?@?L#N2<0>1`i~eY`{QgD8*t>urd= zzuq`t?yt8c{vy(Ie?97SSw5Nj>rt0W_K&(;viH~Hw=dcI>*dAXU#}GLdc@wp$@}YB zS9|k~Sby6^{Ckwm^2yv^uOjCDc~`IJQe7?WkAu0tUM;Y5e?97KZRh@a4YBvvYuXOI zE8{|TBJM_9mo7Kc-D1Djh}#jbqg>X18%5%E}HrM+W@n^7f|1F z2m2#MJc*b(X{M)tbqW5}4KT~|eht<^dw+%m<2dcPbNHTm4$n{VYse)$AH}{O?C&?X zBYPF&czFDch+7eNFpjgm>HFVju>VTL+;1nebN?K&fA9aXB)MxTBmVb?!O6p`X z8rNiy`I*VT0(;@YYEnWn^6!%2)M|)-{S6q`HnC3-n8)!Pc=?F~NjKtt#PlmOy~q86 z7|GHf{mitV#~+USb#dy)#(iP`y3;phKYb^z+X0-gd$RnFgHjaRPCqise*o!^z)4mS ze-z9(DeGd#NvVn*C#5EKoRqrQaZ(y$$4P05pQxey$1v`R9VewNcKbSF$4Tjm?|LJ~ zu4l0imiWEoXAt*A{1GtYrVPZ6n=%xCiS`%ZR}}BL3;FkAy|DN+_{j7?vMIim{0#P8 z7r&D{!M^L_ZzDf_Aeo3C24C~+fi%tu`W~hS<-w zwwQ5JZg?Kwr2#W;%24dMDI>Atrfi5EH)T`oxG7`t@&&XXPSS0$uU8CZY5UxMge*we z*J~brZ63ehQwn0grxXL`dkS8?()4~$sfk@aTw|%-{nHY=f7)XAPfzS|awv9rTVUSL zm*Du8u+JC$^la~E--K@u?0Ym7{~3!I@Q|$9y7Q20LU8d>JqYWIN9B;$tyD7WRcROI7Z@kK-`F*~JVwXP> z`+SeZZvU3p?VpK#zH!l}<-0t5s-=AHYcM|Fk9|ZVZbn?sXX!tL^oQ^qZ3LVHx5SUa ze(6Klw=Li`a7X-0wD+*jU%+eNp7?iY$MdHj@EUj^{*ScxR};tkAg_T(vgh9n`y+U6 z2fPMG7pKR273~A;%NFn&cuV{$+VOnb4tNbb5xEhX#XkAZXN4kpbgeM{_k2b{-Z`Hpum5IerX zQ0({yoY!J{$2ZsvnDGs^#Ex$;4Vdu_W@5)Tn2R0Hfbm#ZzPT9jhS=|ATM^?Cm*%&9 za4=){*M``Bvdw_$Cu2Mm)^9)9B;xL&%KDQNe2R|uHnT~X}u zt`soGyRz8hT_s?Sck5!0ch!J7-qpk&@9F__ylaR(-ZcZ}c-InpJnM)#{&BqPi9Me6 z1Lk-(5PLiu2F&qnB=&f=5irNEv6$oAtr*|70=^wQ37F$wf_W15w{_+DfEhodD0cje zO2CYtQ4N^!GwNc;$7n^|iMWJ$2-fd-8Jt%!GhPPgRm_Z+!Fd%k<7HF>X1ol}qu727 z+!8xp#z^dV85?59!`O;=5;5m3SiXOpw;=odpfC3O!5~WSd5H%({^R9fBD?+8vw-Qh zo{Q7x2mI7K0n=~oc?-A4@lfoy_PmAt))mb|*l*2w47T6Qd5nB;oV*TweBH^q;`PQQFBu+uN!4(#;Hcf|I~cWsBin11;| z#Ee(M`cuCW{q|P`jF-o5#Qlh=i)ViO7F#b`zdEz~cw#?( zC$c+UiRS?-XR`ce>-f!M*)3ZOEo__g|wxW(j^Z z`e{;sFBqRbyLb)``*opz&HBUoSo^^i`d7RM!Rfouzh?K(LjStZzb^Ezd(*h8e7+oi z1mnX(|GLn>!cW5M!TQ*R{x$25h5i-awatb8b)kRF-mmRPTwdb?__SzLa_C+xYkQ;17cyK(3RJ-|+^lo7)Rrc)&R@WD}|V!?Yh>23F#s3_6j-6dfhT=a3AE`j+9`JGSM!-4nSbX%yF@JaW zQZg044txya*qQiUwBHB)5007bGgDt1G9*Lkb!Po8Bt^RzlAv7-iB8HF^>N_v_$#uX z#~eVaj}u$JOFe9uz9&1Ho&Ngb(|6){2GEsDUuivWO>BEz{86N*e%E?Y>vx;7Tff^9 zTff^DzqN+^(7{_zYW;3kcI$V0V(WMNVz&oPPW$K5H=?|4=={ZZfvMjeiQh|xes@Fs z5is?;o8nKAcd#x%{3SBHVIxA-0}(Ghpg@txvU{*ZNfJd1p#*J?~s> zJ#Vs-9iR0_)~j0IT9Dm()uPz?)=I$Cw_302^flS7Z*7XLZ?&G){nL-^!+@!8wSLw5 zR_j%rf2#EE-yO00H`$jRulv_})%3j+`qrxKzJKdtmv23*@86E>*0(~EkY3-`xAp^0 z*IkLNZyk$WzV)ka|5SFj-+ETJACi=`KI>acVwcwtTi@D_xEpahpOt65S0`ZVy?SEn zz4`%D?==ux?`3@|nR>60?ACj21Wdixrr3Hf>r<_7-ICpUukC=T_nL^UZ?!(vdM`{B zru}6-*gRnBTX)3PgC(n3dNTE3d9n3ig@CCCD~hcLD~qZBqQ0vV*r^X&7hB(2kGL6e zB0Z<|tp)Le*JC`x!^-;AFM_FWEy+%%zO^Fu^s769 z9V@-{t=6kr-?}Zk^{vx@sc)T&t#7qnl}vprhJdtv*0;v`)r#!aw^k#ze$~f6cX`+0 z{1y@CDPZbV83%^%nbxZoBetH^dR6OLJ-sPIBWn2`d_wjTiW}KAJ&bTLJKVKO4glv6l zM{K=nS8ToNAmUNP*0)-(YJIE6uZHxjWR73fyL$X;$xi0@)fRjF>IBU3t1I^S)eD&8 zS6}S$YY;H?szb5IuTj7pzc$1kpT=U3U)y4jPm_Q-K260QpJoAbe42|rKJ5g|@hBhY zQK?rg1WdhZDPWFgHL>-o*5{I`SG6A3dR6Oh$<(X%l%Gt!s`a+kt6EQMww~79kbc#A z)n>rdt6J~s{oUGuoqAR4UumaawHMf_R~?Gq4LkRDOe%@Q}>gWBo@;m(;%r+dSeH__i{c95GSMy?@pOV<;rz*BywIROw#!Ro;3YdD;w%B^ruK01Jr(U%e*r`|T z2X^|=2V(10hqglpNWJQ2#9I;X(zDic$uQKjf;S>=OTTKps`akct6J}By=qVCtyleT z#R;)q)p0s2Qzk4(L)S9M$vGWDu+rMF&nCt&JTlatx?M?3YZd9n4X z1+n$1<%riKwqDkHRqJJ~SG8W2Ouef0u}n|Bs`aqG-wL=lcz^hMD~o--Rm6V(uZitP zcbpMFpWCvV9aqHc{r)cMQ>ACUs81EUeO2*AeQLzk!&-mZk=@*nI4}LG%P)v89>3Vf zZ+)!wr9Iirqo}-%sJyMHylt`jb1t^tG+)ZjhxMj)vGt~1vGu0StFrX&U+ZDby~sX{ znEU#U2+X;*0mO%KH|S zckB%I`3!g!oGjy7`|hvq`qodA13m(t2K*xMO#Hh@e;SqTh|}^f;Qqy{0?T)OMe)*4qW;GazbN8r#8WV@ zSN~>WpHEJ#(C+h@7yEoxz^s2A_1%33;vofm0NjYUDgH-Dzgoln6>%?O`mI>Le@`$ z2X-_4P@#P!KL0450Zr5wa1KmA6w}jA##BVg9q=*+bNZoZH|G!T<`Fo&zP#?**VmTp zzP`4_zP|V{=K1-TtpC1!NgmAdoWCS?{<7Hl>tdh(R>X`~99~aV_^DXmHtJh>64!6U zt%!HT>qD$XJ%{+T@JliO&Hn`VdmZsH1HJ`Z7AN{u0{aT=T=(t#_kio-52CzR-;4ON z0pAR62TVKHfipkTuYl=Sb9pSkFaA934aAF!n0_^;x4niJ1oqFde~RZj2Jep8?YCde z=Y#QvncnAPDE9dni+w&O5zitX9?9Bs9`)zih}Ri0;|a69wm0A>B73}UgTwRNkJx@L zw}*Zp=Kn{iZ@Hbt;|-a9ppdz)nf!-Hf98R`$$G%2!Bz3me+FMd2k}k=z6s2A&&*Hz z%fR##na_gh2Qr@q)9*u0uQ$AZ^aJMm$UxjgdASRSr!0OyxUzxxt>CafHsPmXd5^+= z$rF2%X~4_infObvUp3C+zcM{}6`Y6PgnV#><3oJ)V!$s0(~m>DfAr%xeGYc|aYCja zhy2%2-tu$si$zR7PH3NqA42*AbNIaiUIuerGt++@_R`bKNh#nQxGer0?3ZI+cRk=W za83OFcj0(3Ny~N4EYI8$|2gunU{balaWCR>G0T6kKg3`636y_!IjM>};Md=WxLE_L74b;?W!PW+5az7|z8SnNc6%p*eHHdu#5>~GeiF~i zN0u>YWXJorz;`~3d7pr91((H6UkU6v*y*=oe=|S1F8*b39`i)>W6@6Lyb=9a<{X%Q zEb^bizA{`&{Z=8>q&1}zs=_fP40Zcy_`G-;da&b@U=L(sA zu8`Z}-$45HGW_BJ-wEyod@FbmFzv&DbKs4LH^o=|bM)srjwj$FVEWD29@=wY`pwAS z2wu4Z#}n~R!~;AVnf?<X*zl`!<{Q%k%@J-;I zfNutKojKd%^jv3d&cRNr0DZrhnbf;2dv2wsRfruPSzZ4YBL9-_P}RVP}2MqQ1%m?-K!E4IYaV{kBw|%b$u}{!HxhlhaxG zS8w1QXO8u10k48f;y1y53LpE7x6AgBxxYMhD4xyQ=kcQ?_V`g1TQ}x-ye_W?JKIlx_7eQrL#6lqxEb+Q#Jv}1 z`OoouJb<{P5pP7iep8nI{YZaf2iHr$*MsX~fB!cE=J$U)O5X|W{66mm%`#G7J&kB^Lu;}Fu%vA0rPu&Ct!Y$ z7hbyi{wjjmUO!LE0rPoU7yJ44*ryirGK+Z`eAnVrnSNBy(=6s?vir#MH06D}c`+}u z`?F6L#pZ}nncCc7T^UbvW-S3-Ggx)AxV@)&VHJ^&36e-QJ=2+tJ?FR-s=E_!Z#IfN39#)Bd|{ zDcO#ABK~!hw{i!LKjNK;w=j>y>(xK5#|f`ruD2ok`kjk?{if?}aQrX%dFV~*(8uMn z{`dy))$Kh=Ip71}bo~v|(_REu13S~##HpV6{yhof;IMzqP4PXq;rf9duM=@E=6sg_ zpP|0}kKp05HR1|zy^Q&#;H`jZ=lYnh_9yhN5p%svT0i^u zeTcJmU^f>c-WKoKOp-VBmeTbx%ujw9nCoNAw}R&ZGd<^JY+nU)y-diA+d@vy_ruU1 zN4y?!@lclD*E83@F#kKyo?ADNKi~?u7BKBxAH($N_4e3O(u}w*PTTVY^qCR&Bd)Jy z<$W6UuRjevbik*;P4N!w%g`ftBIdq`Y>(|+Ps97s<5xlK@v8`CdjHmC_jp#5{q>)Q z9{pJyZ)9(XJ>GFWjqBrhm#&{d`5y1m^)q0PcLSyOc*pfL%!_e#Oe9K!)H_M=ihc@=lU7uzxccpr{`;k=WE2t(X4&$ue{jL?~>T#Us>$&uL)*- zzm4`Dcm~f)@pIstr_f)EE5Dc|*FKB!C$L`&`v}bb`E(ig8{+(Ih^g~i8DqU<#Eu(d zd;i$(_B#%X+wV9mZvUpzyZsZf&(A#K6WSe@#Boykmu7ayNpYMKGWYo#$^Jz!jWalH%c zvtF?zc6l{0kC)#QOZc8>%I@o-6LBx%8rEm9e8+L&`V#WZH)e5MxW2^9I4)dYLUtUN zp7?R3XB-!`A_^!lv;{Vsa1K05#cplR!{Cy4neLwziG6e3m^n26(iIVL2 zEB(Q(mDvKe&i?wP#)I_Eg1gPXo+#RyW|! zxd-5n7CW9^Ct$|YZSa7e~AmaTD`ltncDD6LBwMglOB9z8Nt>GVQW+zKiWi{XskM-$gtZ@1VV> zifA0>kC^`Lzl3;-E%*lm&VdW!4(xZl59I~C3a&@o5U2j{Hs-G*?nd0ve3Z{`SM2^D zh~57~vHO2p?EaiZoX7l9czz3FmtPjU{EFD+Gv3^;^A&L~;yUJ+*q`j*1pV6*KaKv& z4VRN%#C`Gc{|(pAqtFvXycuyD^H1UNbi_WMzSzez5c_x-?~UzyAL={1iTFZb-j7_j z#rS%&fVqxq9x&tU?T8&;kMZG{pUn7roDU;^4|uhTIjD%MV#n8O1bq3uNjm?<{IoN^ z9_PQzjIYP}F0$k6jUwKRxQ6c_rgwZj&WD+EP0W`^%=s_c9Zzo%@hD=>Z-wWhF829o ziG4oWVxNy;l;87L&hPIQ=a0WzX3FpDe-G6v#QM$LXCP$H zfBE=4|K;QJe3y@JTk~5!KF@FY`t|&lxvcpuGv~KhfBJrM2Ja^U=fFuZvwsf#u~NqS zO2nMsVt(5_-{kqQYBb*y&kr%aS$O?dG~eR(d49-TkL<-OcIRJ@xEgWsWY*pna6Fgb zWvv?UGPo|jWsJDlI~YF$u7O+P@1gw#jHdzDzIOzl41+ z;-86G-wMj#5Wfrd99~|xBc6yKgM9__NArjiybG~>+Zlh0yyutk>^KKKQoz@M8Gp<6 z6JW--BEN;{D~RtF@HJq@mACx_nDME?{FBJexbd_PQQi&EGcn#2`HSF7YnZaAoC_Yv8>2FKLHPDggtF9>bvey#C;e4EAY|TQc}7)v%CMw;!H2N zlvE?GMO-ZN)(KIOMwYE$g%Z!GrpN8JyP$JZa@f02FtCD&)= zzY@o@3TFZ1f3ZGu9nAFpF`gIM<+sHypYgoH@`qwSPd6jpig|D0csh#P0tsvGp!9vCAu*&Du|Y*%JI^Wib20{pt8#=6Yl=ym)u|a>VNq z??ha1N`o-75T-n8)Z;eLT1aN+0MeSa+ceA)eBzu&^o zm-WZO&j&x`!q1m1{CwH{KtJHZ&$saNE&P1h`-A;*|Fiq~ejk25Oh2W+ui)PYK97H% zUHz}>`DphK?&s8BX#Z;sOna*5>*i8DANe|zcf%vORL^J5fm=%N^4j9BMf#HitiKZv zz_|-p-zokn@X8SD?IPZexP@a1+uN3(&VIa}*nYge*nT|w{ZMTBn@0KV_jCRPQy}!8 zIzOh+()z!I_O5;=m*7#H@_zvzc`BFCPssL>bKrF_^)A-qVahFK>+u=^Q;*jYyM35a zO4B=TdN1O>*nYWD#G4UUmv`SMHL?4zDfaP0qPFY!dte@4<=1e0&tbh|#2XQJ_h$L+ z{~kmd?CWhC%>I6g{e3QNcOKUeiZqO9js3d zcn!?>98CWO*bjUF?G=9o{N{(y-pI~)9Za9Lw~PH*BA$xh{_BWeF+~3bd>lLv_&RX1 znw97Dd2w3)Bl)B#_VHA};rvRxKW`(l7x!o7{|MT1*Aw}KddQ3I$HCSkZi~Ny^q1U+ z>tB4;Z-5)P-oJPLRn zycsalkHu+!4A6fOPsM*7<>wIZWfpJ&yc00(`9sMST0#2|0Qbc-Zs77U|(O`J^ok49{(F+kN-`v$NvtP^?#7Zb3g9yh=&nZ4oBlr#Eu8!=dty& z<{r|szI49+_1^>f+DoUi8#DaTLG*O$aDzbtlt zRmJWv@89hHYRT^T`d(Dt2AIdk_u(bH4{yotE?(ay++Wb6vV4z^(||cX&cw%m6Ym2L;CUMHPQ(r9Q(4~E zBmIkyuO?0L&;M&&4=-T9H}S_|KUYG0kAPRfUGcwz{b*%h(i8i7=|}c~c>izV`Gv(D z!+@^=Zw5^JSe!oZ@7-AdpWKg`c3+>=+cLj@RdEgNd2451y8klm z{glaX1m7~)m+Z(+z7w2>{@3;*nENS{{VR#n^YQ4u zWIbZ;mmKzo^~LTF$DeV3bd}!yF%r8!#u0Bv%=j{H@9WWC#*;DM0Nx1rZQyP3kK=ex zJ%#=XI0v4B*?vEdW@0~&cElcE{!jMa1w5~!Y8xJ!rb$Rc6WY>1DLkc=q=k}%^pH?W z9}b}@Es)XzDF+S8A&6p7#GoiaK_euB%UxRXz&;i z;r$;G zc``Yzl)l#Tfa?XP`V-!_6ZEIe%7gys`*xH+=ufxotGpvc{uY_+_9eJn@BrZv!D)SZ z|Fz;!--O{%-=yJCU#Z+*t@ZUwee-Xf?P?8wQShRn*)A_wnvcr!5 zl^kFES9!jHa4+FX$%9mW(8qeiK_6QMYx}BxD*pNbd7dJ{C4%*S?a)5GzjDyZgTCqg z*?N4?H@!bwvFdY$#LLkHYy2D&tnz|>PZ|#T?Q*_6=yy)A$_rbqU_Czcf2-lp|80gt z|91)2<2T6pEvYVXJqa!o+-LYaDL>>)S^qNpNyY85{v}xJ+vRTvj}q4Vv$ej*<@o&$ z5%~$O60G-YYq{E6quASMf?qoxcy+olb7X!(2O ze$)eeeF4`B*7FHlz2RN`X*l$!e&1Nzd$-72HX!#C8~%;pgXI3;PQw*HllU+s`3>>+ z7%r7@F1c0ieQ0B;nxY?|G*+QncyP9Q-*Jo@-kh_ zJJ7fHdxFc4mG{dLZWWx4N4VcTj7O)Hhw&!ugeOd1@Hdl&Lw&Bcu)a#cdVbL7+46j0f)5a!OYj=OdBb-} zdrB6_`wI*|A-F6j&jT8s61?!h*?1m6))&f02#*o& zTUp4j&l9A_hvx}`yv~CQ%ftQrp+9)w!tI1R3BOA8Ze%w<+NxJG*8wFDxG&!SAM9X4`bftq*pZ}? zz`;++(h6{}qnu#v&zb9h;umMG1G<^(fZiTvt^|o2lW1O<~pF{=rh*=XRZS-^7&M_PB?QN(Dz4}ugzQs^!_qj zcbT~k==EdfI^fK8z?tiSGuHuUt^<017_JM>TnF_15v~i)TnF^|Ls;LQxen;{L$3?Y zTnCi*SlV^FpdT~W0Sni2|NnL!@SAcSFmIEmN!fo<{@fjSe8(w1?g_b-<$4`a`zw^!8V>S03`?`H$t_vn57#Ms3y6`YRWfMFfqA{pOdYaM zUt>78L(XSPp6@YyjNsD0%6$yPFI|B8JCy%GdHzIh3DNckEFyt#mh$3SdESI@c-}CS zk63v)zfr^C{3Z;C^P4gpuK$+^cro^ZUrr!2)MPB@phlT|ry5bPcxKk)F3ANb$e56Jk=_yKPh|6TpS z<6`$!<_BJs{k?uEKzwAW{3zZixa3Ul2Na(qICqZs9g1((@=hQB6@OOn+{@*jS?7;e zyg+b!g6jl#B)CMdh(LY6(&Mj}ywmWX1-A~!ecTB?KyYt@O9b~5)_g$Q)AB3vub=So zKgHuzuJKvR7v3z-gAF_PEjezX@aU%W#{?fD2UQwg_-i@u$6~)IpKi7Cr~K%r-^6}F zKTQ_)%iI?V`(=UP4m)1^txj<07sdLVZ0HyC(*mD2X?+dSo;@TE_t^1@4-p*t>0H5; zP4XOOQodZu`wd?yy2*4mn=& ztK_dpo}cR`to@XhYrdyAY}JN8CA5Wei=A{O${&^bN-E`j(S|3aym&#e>maQ9rSd{~ z^{hhqIl+2U{+9P*94;gD}=ey99l)Av85#}Cr+a?3o*!|@?M3;99F&jQXDdH#Ui z>_W`>RV|fEm*afr|5o~IwR|5!@*h2a#YKX1hBpb`Ff7j}CwP_M`UEc#++_Hj!e2Bh z-`ynKLAYA-C#~;W!awf;Io|N!1s9LW@q{}GS4zI5#~=QrJYPL2&r>J3L~uRfCc_^U ze*OM-8{rPZxl%8GLio!{<$mu3=LP2tAMiUVpDXi?1RpK9&G30zUOCIjD*(`5l~*js zcNo51$~W&T_lGC=Ai>>+%O~Y|98s>`1nc(z`VDW8@&mTY^Ad(H7F^sm%MBAAA>3Bx z+w(=?-z>`Ak>G;_cN*T~Deu?16TFxBx!we;-|IIV^nKXy$xq4g-QuSVpDnoIDtR6# z!3PVTNU)Yq8vc~<>-=S!u#@*0==e`d`M&isUofog)%NN88$!90@+QN}elPLsJ@Wi+ zg0~26O>m3g_5^FWe*a44>GAUfcPF?+aG&9KN_q9GWqcC6r{KW^A1Zh#!AA=oPH>6f z5yN=zW|usFLRjDDpzR6e19G31;)&nO{p-!CqKlHD@-yp>khC}~O z8V>zCos?_;R?qdvul$3w>1O%3$tnV{W`C48gxXJKq1s4y9y%6potnUZV<8RU9 z9}s6*;c?J6eIGztUQOltJ^(GhN9!At`U&gzxYF_o!!HW|q4GSD+ryVPJ}u8XPs{UE z2|iSCF2Pz}YdG|;zF$D)2b?z?`d7ctrRAZ2^*$rTTCV-uWjLH~ui?w3Jta<__epTI zV13_!9v{kw4G#!^@d9~1gYYQf@cpe&pT18ZjbEdNL;M>v9O9S0KS1k$UfU<%AE=bX zEXDPL)A-nAIKa1lawFaCC}F-c!A(y!}m-1 zvL1PU&hXy^7hNU&OL&T~es4_2|L7^)U0%L# zYWM}g6}QUxCAeC!llz+Vcr7mztlu9~y!=`Dy+gkDk>GN{ZG_tmUn2Y!56gOMf)5bf zXZZ6{ULuQwgM^0&_g4G*gFX!yenyX%$^z!ODbpM{RMjd0q3c_av#qh{86=F)z|Pmcg}Elp1a;~c%EC|qpb47@f}vK z&qJ@%`H|eS68`??{687Cf5Z3c=xh z1h)(Sy!+&Pg;uV(Lhyv)Q7s>p_8VRkr`+Ir06>|K;b9TKiV2$A7$vJpmfXWMa*!Tl(&H3ZQ`L-FpOpdRT45!2J=LFA} z#rCcQR|)Pm{4*_==jnSATqU^Au(Pe-aK%dL`UUblr{R|iE|JOPu;JGTF5Xw(he3Ff zuzqh%&+h@@uaU{;u;GS-<^4H5^8Szn&ljxE?<@c7rF@x8PWAbH#kUJyzPiNe^ZTKE zKb^cD5X<+Ia($j(%YUKrubSg3L%H;8(GexCnsAQrRElLXJWbdwv-(t?l#d#&Iz;+M zCc9&X4;Q@u9VK`^UfZL%M6f;|ulNEjAC~ho>};Dhe6y5SkCeFFfu8>ldi;IzzD~n0 z3SRymd0%IOR|{@R@HWBu1fMN9+(+|@RdRfvybsmN6|WZDp5SeQI}CqI%FEj@!@@8l?VCuhxdi$60GkFt2Z2;6KFFW4H9wn5u;y>m z3D)wQ_&GhFt)gFLQ<5JNt|#ooPo@2*-;+ymE#dI}w(x#9Cw@Tr!=~SF)B3+4^%r#) zJNhx6?t zJV1Du@Tg$bj~7&*hvoexgr^Ai9#+`iKEt8CgN8$UhYW}IjvEf`og(a{-*h}e`H_E} zxh|vEZK`MaaSC=IOV#M7(CoPOfWoE9+V4fbX+ss^-@$=uA>oWd2&1BB^N4Rb?b6v*w z$INw^nd>q$*JWm|%gkJt@%}KZKXlu5m9Tz1b6v*w&&+ih$tNC==W74Mb(x??|D)d` zSClFG;vDB@CG>H*mqxc|*6V+{_NqV0_G7shMCtkslXTN>;3!>$6>POKM^O5R+!L5? zmmZ)<_@(}I`%sx8xkr)Y?6$?z$LJIq4)=6@CM4ai$tjX|&6E76=Xv@t(f2vt(+B1D zmUR1~TpLt5^4Y$EtwZh!RQed&8;dsW^mM%kKi%H7+0#4a-oA93h5i;f#Q&#*Jb#ni zE0%73r+Ip5c}kUg(KmT|=iEZN-czCNbVPqv?y*4oNzU8AC)XT_|1)bnf4%94BHj9r z)c-QRvX+`|w;rcR?qwxCnI+ezm9F=Ur`ru^N0IBm_{5U!a__0~>o;)H?cNQFxgpyzjVUavaE(?{l~+|K>M^md5!d9_?S*7h`^z44e2 zE%WqtqU$}(%3n=#J|@>%alUd7Y`RTvRpjq=P3b$1@bm$abJI3YuO)qZulNv^(<=A; zrQ4g#-kXTtwnMpupY-sVV?4c<`2Q{UvM9gagPCq0ZC51y13wW<^jQR@>phz3c4Mm| z(Ffwc$?RnaekC5E*I1Q*l*Z9h$vFt|7P0?XF4BYFdj$O;_ay6q$@X3Nz2c1DyAkaZ zIpnVvp?z|%6OGHup+CY;{^yT zBz?F7ey`ZE-|K_l6Zzz?mY96@drvL*^2f;UU5w+4Gk)(D_`PDse(#;|dosS{_dao) zm(PCh*+V>?{oeb~4tWNY{NB;<7sVOBcRT!^JQGQN@3$>>UgY=Qgnlf}_`U7$d!mPA zFRwVo%VEFwYtviydxxy{{OtFxh2Il6IT`KZRmG- zwj6d*;yUXJ*xh%~KP7mlO0Qus z`8FK!&t0QDa!+C?pj$VN}sZx*H7#YWd>3DfN>$Sb5D$Z!An0OgYQ zpr7Iq<7THlBxf#;muClHPm#X^{VvZ85dGN`z5G)6gU-wz9bWm4mCY@ z;lnGhnhkO2Z_^nvSQ#nts z$8V&+$@EI^*-f|V(-n!`xcj_X}#3P!Gzk}M- zxK?@OSrLq9GMBK&&NrB-eLAWLF1**%&D9IXVKMMVpI0e1dWBqoi`G-!T zYiW@yGp_h^yy)Sqgs%5A>-Nib{a@yq=zNFQdwQkhP3g81qRTS*&r#6VvP}L{2|Frt z^|Mnc&iz-F;<8Nsa}nZ7nVTg2fADzEFONAFY=>|6bk2V|a-QB=T)^(O;5?!JLo4)!SW(XUa`H1xd8bx=G# zb(@#pNBoOm?`3X`_-{YS^SeEwY*4KI-G~pd?B&pZ8DFB`3p#_j$?biWMG_(!U|_XTl6^bq3~OZGPYE~5YD2rp-f+F6b9 zF2ghBQHpaDW-t0IU%I{G1Vv?Tgyehy^UX5n*U{q<7cTSsJb%0%@v+RcE|0vr_c4rX znd_rG9*HeFJ}ODpOlz?=pp(Kj9yQ2 z-fMoK33eIfTm=0qbNZ}Wy6rSS(@FI4xymJWL2@o#;OVW<-&B(359NgfL6_~O`9q|K z^^+FZVR>f#CpqK~<(c)9<8sDNc|rs1q8#sLQ;x8G9sasJvwm_o{9(D{^^+$Ne}%s!NbtYs zVtj?4#$_|?Ncyd`kiQ1`LwRQX3TAs-VE{7j4&#a#up7-*3{p4=weR*d6 zgDkI$*Yg`bY4H%iu^?CrMzVWT&?)G20borPlHeV zA=O)FbY4ICEY?rTGwUaBF#YHClcSJ_lxNmYPTity5dEb5WXq|Z&g&;1Kit!K{p69H zr`O|G_x*O3=@qY^JZt`KDi=8Y?_$ggME~mx>F+*Tak=C5lPSy##E%jG{m38WyeMDY z!~7DjpPXdv;q{YyH~V^d{p9=R4|)CMVf3T4lk%Bk;rGik>nAnF&+8{eYkj@Ee)5dj zBd?#-oM!y+>$>l^A6b9$`pL6xS}y(#anG3L=S}cC62B;~_&xG2=}+Q+pV=v|pZM#M z<&M`+-eUI7>nC@bf8h0#ug&-EyZCcWb&WJGHp*qCjVIszg>~ZfBwN$O#ZVCai}7*esU}Fp9;t8 zC-ad1RAlm>BXho9UO&lUT&10q7k$y{<@J*l$bY1rb5vg3euDg=BC~$-3+S8BNq?G< z|5RkwPby%KA|L%4<^LRdUXfWp*|1G{Djct${1fq}BC~$-KE!Jocf^M%e=6_g@cPLH z*t?7`8(=UACZ0|dKc`vBC~#S zEBwElFY&(vep2*=;&1mFt)&9*7}UM6)x#u2PBaY^-3@;(;{rVm+|C`fN%zGrs6Tfi z&k;L<9!37US9yM3KdFL$ka`zIUfuf@@(SsHlCu%#DfG%h{*P}}T#;En`TQZCuJ1@p zw|R&YqK6o_Sn?wLjGQmgA38#LWW1=I|Arn^WY$l9VD`f6C)-Z&a(MmZ-B>@V$gH1i z!~9(ObMM$j-Ma|!QO0+9A^nOy6^mUE|6#~aWZWs=_$mB+h2!;;_nIH$^^-C4d%S+q zQ0MFA^^+;&8x@)Rjt(+A;`NiJ!@Qgk%1;&mOFyjC^0@7b^OW<-MVjv2ig6OX!g<89 zW2`;Ae$t0Lr^502iSHNbXOeRu^iTSY)=!?Q*Sab)>nEe;_jvu}nA6gpB$uqo-#VGpZwkY0I#1sX?}*+PaZwe z*URfCx0~PK^^^0>PxAW7ndTpO{p2w7GrWFsr}+(DKY0z-Ph@u=oNit(D~O36o%936yT{=-L=KJnO8D)0t{U_BC}&Y#_vg7zoL{6LYwho*{{IBx_&n$D ztBU;FU>8ECaXcGwT{?~W&0k-aai{jbf3Wd-_Sv2>NlJ%jaTSbngB5 zUu6BS@19M!f5I=%bKPifEGe;iYe^5!K%OwqjZpl0;~9FaC=c;q&SNHukbh7?RzmfdcAMWV`h;N=3|E)b8xr8RWkJKxcdMVB-wP@GZd=&ZZ z)w6Vd7nO6=#{Wam+bY*b_Hx@{dR&zo+|2~o&kJaGRpx%?eUblExl!`xpI_zWj8Q&( z)A62ONq%hKoTt~)d};;!XO-(DKlX3<|0;ZoLyrvGRXcUB%C(X|Jgv>s+sV&-=_pU1 zBL0g^K3~^9b)DzeZx*E6-*BE)t`hwbOa2J^sd7`){$lvSD%VT?@EG{{D%V7E-dv|L z<$TF+9|}J&bZXD}&?o5!;(sgVUsX=Od5~_~Pg5l0PVM;u?7Yg=lAbgpZ;|%H&Z4AO zuk~{Do&V{!8GgG8-v&tOpFB}fl^Y=W%hA3nmnZrO@T*mBoa((D{z3GU{M&2b_oQC( zw||DesB-PmG|;S{p5oinLHvI_!P9$)uJ4l9_Uk+3)9onZ@1yo8PZ2LB3+*h}X%rId z^lI4Y{EVFrz)t69?DQGf>HLhHRzRQTXYBOmRobHYj_vds*y()7c3PhE{A{O7VW;ym zcKUbN(fo{^z6y3aKVzrI!A|Epw$snSPUkze)3Z!I+v$n0)A^3=^f%B;IWMxW$6==; zpX~Gx(8Ku|J6!=gou9GO*TYWbe97*Xz)pouc6uu8RQiGVFNK{-`^iqXz)oe{$xg3_ zozBnLX)Wwj+E4a!4(wF)f$X#ib~-;}r|*WH&d=EC0_z{P(?;0o{EVFrz)nR!$u73T zPNiP5uV2DWMIXpc?}DAqcWkGR!|vugw$uG#TJtk@T5tR>ZKn%W*$cLR2%42#+!;mx z%DebCDceF$lO;?Mo{?y^rYcTJ7ol9LM3Uo<0;^1jG$OZx*@^@gM27 z0{ytq$7I1~ zVVQ4$qAD##QywLTN{F|yhe;d(PAMNSAM89Q!PuF)Sr`r`LdwMtVAAG#0 z_YnPBlhZ~1b}jO0=?D0OSi{G+c{wA*e=y>L=sESnQuybE_|{64;@t7jkA-fS{BR$} zRrH_g{Wt29{v9*KCm(DjkuSX=MqG?Bk8vTo<}A7^}C9{K>*iUOqq1b^R(&A0_^`BW_AN_ldG~FNe4x{fYP%%br5NEX+KQ_T^KQ zNAw(VKJuSq`qpz;r0L%Kus$FsNB#M0%p1jTBkzdEEV6pLG5(QWZuR>0+DPw5oRe|S zMVju_BAzbH%zqEHdfVZ5<1ybf{hWdxMY_+2 z$-jQ1=dY!B{dwet(*IZoiZzT_-1Pbt>0dSf-(DMOx_6}c2foj_3gfgebA9|W=&R@h z`PFq6r}Ucw>Go#x^X`z8D%U}_E0(xM?b!;wU+9L2{?!$pU%xq!ZjW1hX*)EfI`{BS z#p0iFTrB&F`R8eB&nL}4@OAu3v-gR0QHJi_g?5M^pnf>g{5)UB-)`gEj`l`b*P0&I zlKhXt?~DH-dl>@XLN`fr=9@nW*Tq8(51Zf6ch#rc9j7Uh@g@4V&2RJ&{r0tW5dBYP@BBRA?pALt;!JGO9mje3d|$zr*Lb?V+dkbESiSv3f5^sbtTE-5Z}1+d zSp4(qLi+Q-3tcPGz26rC za=s;n{rRtXUJlO}t}uPz`NBgcpXUn~LuD6b<_oWd{VdAN7d}z#>*e{vhNC^5=L^%w zCl)!LFZ7=5`FXyu`gl+0`N9n*hvy3$k>7|ulbzm*c(lmzd|@@>i0C==LhJI|`!Qcw zl$kGlb#Egih2b{O&+~$ZC;rYT!(@&l++zkJ_ zC^KJpr}Zb#7e3vt^~ks&KebBb=X*H+MVa}+XYG7>zHlk#3u4!>rzock@qLlw`NH=Q z-xp=(3;wy~MULkS{Z=o}7d~Ttp63fo5O<{g(688@1t;mgv=ja>(gzT47G>rOXPEx* z`zsDT)yv`e!Uv3>=L`RC@%%hrcs1g?_-%?WS71EEZ)5ypJ70H-m&5ag5*x3sT;$cg ztC6RPo)i5e=I437@IBK{o-cgV{5;PW1}q-&eBsd@TDzPV%@;N!pOo{0o+^*uKD<$X z7df6U%(i-YzOZ_$=jZuCMU|)XeBrg`_jtbWp~H+HdaC<=d(8YZ&li4faf;^)&zqm; z`NG(Cl_zlx@ydkD&yyB+c)su?@_zB>#D9qS2c9n+e7cv<^MzvbKRjR9!_JH63rCs$ z@Ov&(JYP6{t*@8o3s+#iAn^$C zDxTL~=C63Z@PPRfo-eGxd|**#zVL+k8J;g(afojZ&li4;`NE>ie4)bRbdX(t$@-b+ z3!k!n=J`UM`E8yr9Ati*=L=u7et7Bm0y%#;_;@k^VQde{tqIW>2;9EOyn@p7*2ui!=9`UxD^7cKJC`w(gw^|F+mo(0t@M z2_EnftvDF!=+eDYtWXz+WwP9W-yc1opGo z^&?M@$2Q0wl>9! zGkNUwu#3g6llTvSzg_I6NPbV=%NfQv>%QL}g1tyT&kGd)`$yBCfyzR9Km3ohlj#2W zlf|wTc}+a#Az*1I@z1h){e4N1e-i#g^li^b)4jLCeiysGszUlw*s0XJPa*xAIRC|N z5_%fTeuR8uv8#taj`V%)e8;HX%Mp*H|Dj)z{|Ia6)LxOMdrz#^|019IAqTl)UsUh4 z$9n$B1N1j;|1>)qBmUf0l6)Z>-mdy~9sL`tPir9duq-BcBw%LG?ap{WFC)7UjH<)BVM+l=5D$ zPf{<9`;ggtAJKnh_C883^qPIW{4vy{`+nPQ{8Lo#2Vp1DZ#XV+JNM6Ry1y9Tn2uC& z zjFb2!;%_}hd8E_ek0XDF`NJHI*L|4ZiJv6?#}4;$28jNq!#sT)_7vscgYy@^fqEi+ zWt-=3T^VV*S8x8X9eGDAJKf^l$f`)wy&UXH?1=a;#Q8{kr1tpx!o~j({U67vG#N+a zBf9UmJdvaar{o4*OE*ee+K=zBooIkf_*N@ z#PN5*4wq!&cvqRPm*e;j#PKDWI6eitTat<6=VH92{S?PPz0=F*IDQ=b&XPJ8eMu&cpO@EqmN<^%_adH3KT{n4t?3WP@%KSLrJa?&-QoWa zq5n%Var}FTXVOmMpFGjGhvWEz(0kE0`1K&&xpNT5mt^Aj9;bUb9LGOz zCXUat^W`}Hdc<+*e~N1>t(_dlzl}I9@+pqb!}*APQCz+RaePVUxyV189dR6=yVajB z$MG`6ago1Q>@(fF9C2Lij^g--5a*U;;`kYe<6=j2zO9JkGLA(58{+tqOdNm2+R1VJ za>Nhu8x+UCVg18#{E3{N#ga@M-vND+dMRFi*zBF-_z%tAIgY;(@mTr+^=Msw+id(C z$FGE)2tUQ~XUz``<$?tN`>go^j^p3OI4#M<@gkGMar`o~YmVd3lxsbrKRI7t`2T|W z2ae-DK8QY09RDujxcDWC<3}QnFUiF5Q_UZ89KRiLT>K>bcW8}s-$fjkxI^^wE$(m} zzZG#@^o`>9Ugi%uj_+&d%W=HT;vL8Fxv)d=hZM(8G(X01{ME<<#Q(tV<9R)bI4?bI?w(l*y&Q& zN9TJz{D$!Fwo5E_ehL4x)QuIA-7&}mmpXnf<2m@5rEZAi=(o1?p$vWx-gcbtQdc^w zu!7|{-=(gS;{J1Myd0h{e-U}bQa4WgtD(0`UFYmV`5$laa(X3iO1DRl=ZKs+DOK*n zfuE6nvwjSvzc>C~qJOqoIhMMnlECSIPlw-F>iBxu_b^Xb>L!VQ1N3&OYsEN3Sy#fp zEzMj{tg(LXBt3lXQF^S53(5a!yQf!+zNFhnV82V+&jIc2S$&i8>|i~LIToaB5R*9Almsh|I3 za_WiyZ?J3Wf8swJdLaEn{1;+8L?4KMHvGTn74hFU*SEiGcm0jqZHUWDT|fFM(!T@$ zv($|u4n+FLYIT39tA;;|^!vdl=L`Lc^k(ECa$Xq!Nbk1s;^$m`0>3T#O#I(7J?uh% zM>#7IU*vp=emMGNsjG*5ME*OD*Zrlgi|Es4?|Jy+$bYWcdk*~_>3f^rP9wjF^cKYB zrEUQI8tHqOU*h+Z{KfnRUmy9%PCa(1YpaSfbng|$pNId5W!uef^b!3Z*3bPUry;M$ z%6LIvqMUb|T})6uc~Pt9cf`NL^o^e%+|SxyP5rQQnU~Xvaf|g{fcnH=k^GOE{f?5H zD&)g5z9gsL{2S-12ekNlONsv}NkOz9#;D$tH+gzB`c?P+_8Rj)d5nLcI`@vXy1z7& zuRe`_mvN;0=P$_fB;Fw|MLBmhdO3p>PdAzUI?7A0G&>z9`Vlx@&Wq%H8F_}-`{G!q z?(JjaGEMw`z9Ie%{S=Qm2K6ma8Vyyd-@3Re+KbmnH!%S zd3A41PX8}+14Lhh^IVpB|G@dM-({|q{PWHRFQ=E}T#tNUnQNl>{s8i^Wv;(ikBi%F zr|SMPmm~S-z>f)kMda1JSJdnOWp0Y(^kMv@KZ#xk{gm;VqsPVVcX{0xI^|L4ZT57& zAMaBOJiUqH*XnJaK0)%kk>4(J)n!^9x94#_GA=}aAM{?%cW&g>y*%QI=oRXZWnXX6 z{biZ=D6Txl)7cL@>flWBg5jQF;7|M>M7s&8RCfa z1NGZ})}MTz)mvew%iIXXyKFIxNiiNDC&nWOW%6#Xmh zp?cqOxV4kU_jL11gA~X23GKoYutOPN^miSgI9I0)}-8x&hznmbDlm${cyMWfi^MubbH9`cZAwA z(Cp=mQ~dSsRb1wJVXvtqjSJLxDPAdla8^PO>k?hiljWIpiPs>`ik#gFW#0{du{^Ub zu?YIJJhLwG5XNhHW?f<@#$|bCU1BZ9ad~E4Vo&JJ^31x#k74i2Gwc6XV!W1T)+KWA zOUpCs5;r#Jc`kRnF7W{LTjY>my&8He{f0Ob`)I=Wd0pZ|7{}$Ab%_no!{wQEiH}3i zmS@%__QH5C&#X&qJKDFO?{i*a{mknUXF$(oTqy1gwR<_dF3|%&ygaim;on!XJhLuw zUEa&#b%`G#o-WVaSNsLUyXBetrT4Aza(G?hv6DQV*Cm!A{)&FmdHo9UMf8pG0Y6U` zJtz97H+uQJF7cyQPv>=s2N92!XVxWZpdZpdB>x1=lSLmW{yq!;E_y}$w<8`ecf2m~ z$@#uLye@Iqah}fW5|`F`IuWcwOQz!4E*cV!f@1TjD=y{@8AM%j*)?n*H*+#BUpYJ9%B=9p>M7UE)R4 zLtdA-A8}pmo${80%-(rj;tcaYye@Hx*)Qi&Bk1?#nRSVKkY`A|LtKje^CdekUYA&F z_RIP3DQ2gk@CkLFh;6XG+OVvvK5giTzgT z`APp1|7NU9h~I#HSSQHOV^|*${UrLQt^avl;!e{OUYEGb#*x=0Zm|C3b&0*L-j`mN zfYHZB%HHu9ry4g!^Ov(>KQ*p$Rsp-a4t~DI4b3j3--NhXllji&!18PpEPJdm8bWH^cweWWGDR$l95k6M1#- zarpTf$L|IDE&N(d=6cft=#}(aNuiv)wTJKbI2UnW#)bF~w|Y4bIk-vXO23sA%KvGF zr;nEx(tis*sd4=jFRp{0*SLD3x2*JXCP^O-Jj~PizJPdFNJt;P+{Eo{#V zz%{O$@`O*qZwsB`>5@&p-d5!GQP$0{I~jM_eWcgme55}q?!5O@FNfD3E`*>AIXqyBl`lQo(9XZ{L5P~-Zj|G&G%%jfSC`S&c; zIKCg|9P~?#%hP!^nLczZQh9Ovx7k;Y=FzW&|EY14D3APekJ0@a*GqoBXRD`o!p}wi zKbu}n5q%Wx6MMn2XD>oDRENlqi|p~g*6`}L?Ix5ADt z{3&u6oC4z2=$C_C|850jfFcKHSx`_aerHxf5AWB%2CS=GFZ@J2?Aozqp^D%U@&u!0t}V^!vTy!XPNuX3dn7p4)XR%O;P zssf$(uiNJ9<@uw}KSWMZVSB!b`Qxh0yz*Tb_f@Wy;@Ufr->%BM_w3-KeZ9Q?{2Az# z^aI7C%b`!JTs6gu1&F_^oPRG!Z0l0!m5dAVUk5vvc2XSqP`mZR?oo#BeW1zH`TcTd zKwqVQ$iMY(^8EP<{f*nZ^18pu4U_yQkteNk6XlUt_x@z(#n&~S3;ICu;x^N_zPW{R z-gl(pRgUkgd>i8OD%VEsT#mT5%1u*Ty9{zyW!_u39Pvf;nf!nGNxoi=U&o`rR=F;U zUtdGK5PPBi+z9`;%JK8aldHXao+m!j;_3eSr|$dhQnXL>kmAeR;Fo1wi0&U01fd-uy4^r%&?hy3B^;4g%q;?xbtdj3J!neO{- z3+6#GUPPY*xvN|~`QiN$_r;Fz8>BdUZ{R97NO}9pt;!?zNb&14D?PoN;#bWX#t%Kx zeZMW*tiNKXHAb+XmF9o={?+eW|MXH^{_Y80PU&HVa$bi#N&11#_c^oovE_yQ=bAsv zQU4!c{>Q)9IUe)lW?yeN@!xQir*r)MqxmaG`tyFX>vr^Cl>brlS9#*!YVDswz8v{4 zFh9)C9e>H}x1Hk7>NelbK?7#`GXKy-?L2&)m(xb{wzZz#0sj=`9At8M ze)~1O{%brxuZQ1j{@fA&=T7nb z!_dblNB4>x2BCoX4~bi|5_-rhE=B*=W%7y#kyq4Z@`}@-2X&deVlViqx=da%RHexNy|InFCCh5m^g$}5J^ zm35iC;*IcYb(y^4QsfnNnY?1}qkTVcUhzJRtMr46PrAJxc3PLoE6Slyb(y@P8g?q< zLV3lNuv2L#oR%8lZfl0=j7*~LS7;LmWwiU?=-8I^NMdHuc*u96?-@6QFWQT;$w&h!cTd{ z)yOOA9Oo5>Bd?J0qP*hIIWM2{ian4|h#gU0arYjcpYw{nwt70}6(2=hk@2FuVm|T; zv0ut7Dv(!*T~J=Jm-!#gE52&|!+FI$$ScI}QC{(~O5aY-EB<8m&UwWd<_|fqs5bw@ zdBrI53OQfOE8dR0LYyM}fwsYKzcGKsdBr=;t~sxGxA`m1D~`7Ib6)XssZ#Za^NP=y z{c>KBYxDe^S6pHC$a%#R<{vn(I0$)#=s(8apR4{q0(ph_0r;m#-`C`DUU4?^3W;mP z{|xekI>&j%`Q~RhuQ4SY|p|qx-an^{TJ!O=Fd5=xaAbj|I&E{lr##F zy&p<^o#i5Z((K@0dn;RmYsGIo=dCC*cMY|hZKhZDF zslbNJ{eka=KWfN)59M6=TWSAnYl!{K!+AEi;W>r$55m7UxG~~?3-qAD4aoSU+mDV> zB<&$TwgdLwkh!npti0#%p*&#&{B?sHqV{|kb|?Kn`NqrO_Zpn8Z>8Ip5HCc3Xxtxy z-<0;yb%)!a#|^F<`W_`+x|i-tdx-y%c2DPZ=^wx^iT==e-48o$aP5c>QT{o|Z=|1T zJ>;#(e;QmZzdk^8LLr(Pkoz$PNU*_o(6qh%`KZqSc?}8M$GZ}tO^pok&G2=fk zHaYA+zX$)>nDL+6V7HAK|9K7kXJf{HHf-0^Y0UV~U%-DhX8h;T@Slwt|9K|HuQB64 zPs@4ve1G*-(2vH9|J-u2=V$*p2lm#O@t<#p{xxR&=Oyr;jT!%W7yM^q#(y5&?Ca(G z;QA_^~yvc2?xoy#vq>YuqsT+qdI<*JR$y@#WL?D5;m^bm2VL zxM`fX^7!p1N9*sJjGz3q$)BWg@%NFeajleh9S^=WuD!?v+s|}fch+RSi_`!=DRL-p zeEcZSKSuuNMy&I$$vlTr34L1QrilN;7zd%3sJys!t>; zJdAum^n}{ejkquUM*g!0CbuT@o#^L~XG;ImxSZSS&x`%-hQ*%F_dR|KeoxMKemqy* z``BvFUy1&RWs9udA>w~0{FTUA7E;jhiHYySLTr$WNA9y?K&zIQ*N)A^uCC zA8TA6`R&hb_4Q6u`~CY~MGo=*8h%##pZvfz@bh9vG>^L;`mrW+pUI1+pM2}WbEa?8 zuy1Xf-~McN;lHO8sLuTe>pW{*7y3KWN3d?Q##LiHBmD8=v%jF>6*;*EEgkBSmT;jXnEXjJY4rhPjG&b{)e@m z-beC(Xa0eo4}Bo#`A103D%g+s2b3$1-@a`Ab37L){`V2{&$Y-SV%hK7bYJX_`v3Vl zPj9FG{H@ttFZwUad85T0ey+#A_g3_$Ci3du5*y!o(v!#SyauR02Q8lVP`|B*-iw~Y zE@K^kGJnGN@t$V-S$jz2)xBRIssGow5t5_SB8MQOySuhyBwo%+=pj#NK%THJlP6q* zJYiiXPnd)AT9?Ta=A+-&W%7hq!w;^@G? z^n6_=Pk1-)?l_Jrv)6XyeX#!hUvMoF}{kcCpTJp73SZ zmy9oti|zR^;@rASp5UJkT$jlc78*b237y$`f|LU#-i02mD~f73nvM@3$jf%lQ)hM#O8eFZ4%j&m60l^Mp6RkBA(K@AFU5 zW2HUlk0__q>g7D)?~R_H^MstyIZt>6^kZEnPxvq73E~H+{rewb?V&v3QRE5I|CA^6 zAWslIq&(po=*PNDp76BkC+7)In!a(K@Pyd~=LvTp{;kX837bCg)lVe@;OCp>BXmh*(4 zo857qaE`?t&J%uM{+aWH-EDk1PxvnUg4p|t!uDUkU9tEj>No#Sb z^w*+)nq58gH*ibN0{w2zyw|h}eziH{Klg*3H@hB+%gZ3Q*;UVqvUTr0JN19F>nzsa zxcv+E)$9f+{(cMN-t1~=Jz)ZVquI5S|KEgulJ*e)fjO>tNM|_m?BKm?= zzCAqezHYgvS5v(kPxN$t@9Qe$D>9DIm)Opmke7>HP#pif$>}EkClG&ST!{a9_*Ky> zisNe$7i8RNyuNX)Z)YFnfj8lJu@|z_4_p6q5&de!_hvUrbniEtT?f&hFg?#vK2T%* z$=`#1!sPeUxNO9{PWoY=*q6HZh7JC_^6>YutjgNY`NKeq=dULIqfYhodZIrKeU*AC zPxu=03h_ViXR+RYSvz^%_>1NbIp26S{I%E-o!8+f`Sy(AJfi%++c@@9y_fCq{DZ{5 z)7n2x^7lY~CFg~>9p&#`>*Wkn{&ODmQuGRWcjQ0M`k@te6X~^fUi_Vx?;vhAXWsid z$NG(*gFXWKDt@Cb%GSMat<(R_nfHw>0bjGrBW@^<-+pKQir)|Oozt{j&WrPtO`hII z^mif8lyT2#dED+>tNY?-a*?Kc#nwOkoY66dYN^;=PJiR}Ba4rmZ=8(r5IupPi~Kno zcmMo!q`&eE-IxAZ5ox-2!!i0_+KK+weZL)Q@wb=g_gdT>fxQN9=T0(zJ4pN&m|vPA z`d-KAv7&E8_t!<5-7x%Il)nRdDd$V{SvHRO`pBz$pUmlhiG#$y#Kt!VKcqZ<+jf-x zO8iCqF{1pur`glTkrzk$@-3b|2K$KgPo3=P^~8VDYESQk9Yp@yasJJY?|1qZ>{I+X z;zQ)W)9km2?CTSotzK%+weVlkZ**QclT%A}^c&=pVvp3H!%bd(8_ECfHczi4`mNSK z{{Fbw{<-KEu@}LzYFW+CciE>_Ve!GYGx5FPvJR}EC zJ$3)H5_-sESClKm`b-|X6Lz{jlgEAzmD z+g#Y=`b-|XpiFtzXY$zB?euicW1ogUU!Tcizm7b1eI}265P8q~OdfkA>`K~G6x*nK z^K<%teI}26An)m%$Npubr}KMAHevkMXY$y3=#TU#^-nqc_4-U6yB>Na<3jw$!Jn+p z0zd#Q~f1pQttlw^iKbQ7XK3N98x;~S~K8rkUeI}26 z3h`dfi}I!2;V(o^RjASbz6*X_^n~hNbE1~ZxRamU*V@l{?7QHnRpZ_RXhwIh@D7)!NB<>`%}y zGQO0@F0uaPJoeirpYzzY@c+^el#iW(Ja)a~JoZKK$vDEV$Nsqi{!qq|=g(n25WRqPiS>^2 z*u(bp{G7*rZJnp{d-LYkc{=B@kDI^ZJoc{BJU{2L472)Y z+WZ6Ov0pQP#d+-QX1|=r{?}%!m-5N0;J-vq=)CqaIh@Bny4}m+JoXDsp3ZsfJ=;8; z^VpAB|8O2V3wf;gCDOxhSRTT8?A>d;e9mJpFu%=t>}KS#>oa-mhb{iTbRLVKp%v}g zmcp-Ya6`K&e&zu`9S}y!V|2phqgKH)FHrVxs%yWOgg`RK7d^hUK%N>9@%JKsYjHh9-;wwHy+r>a{J)GZ(a*pKbI>v3^=5Ark_U+SN)As-gK zf?tpP-$0yg$;_wTut|AD&x!x8<(@uC^k+>EOJUzp{u3v9{%M-`J%sr}i}Tm1BL5kP zYb~w={Tk^f&-Zfj$Y&${Yaj~M*iiP|H`-%y+yi4&zIj%^$zr}j8|op zp?k}$-^Qptp9OBQ_lw74o-@C}^TgM|--@1-es*9UB6dXbe{JmQ&;DyY z{{Z}1EZeQ!(_0UWG~GMM{B|eN_q4dc?;rjp{G;d(>W{K6IZ5}$*^vE~AvKh7r1lh< z-*d3bDCZB*rxrJLaHQ$pt5@rPkx%rW;ryk4h<@mCoPUg{mbTO zDq$Zg({JlARgiWPef92IF8zbJVa)QgpUG*WaU46=^ZWY?BL7KeczPenX~TI+d^|Mr z>fU8$*Og>n*P6d-CBN|_^H&{2KfwG_J;^!E#-*G1=bE1xAo?=PL%QI%Vq2d!|1eJU zk5?*>_&1^}wa6i8>+Y^?QI)2cksk8cf1o{^GI{JE&TCU9kKJ6RA~$97*k<@`kx%(# z$>E-#^VsX8Jt~Lu*po1Rn=*Oqx8e6TW%AhC?OqP&u_xv{o%7gc=B$q{N$!g9{UYDU(RE% zg8ppE)3O_@CQ=)B6?)$0!4vhkO^)-}Z=UMuoX4Jw{AyDskKGJ^zR7VO`!3|MVqX{s-$wmkW%Y6%yD#Fm zj3e|n@*ga&U)#xf>|5ZsWxU`&BL6a>m1Tfv^VlkA&-^uB{?tO;_Kx+_B7-- zn=*Oq&#XP1$DU{B%X#e16TE!RW1mBO5qqI{bRpuU=mXJjHowPt>^HW0`JBi89C1O; zm-=Bxqvz*5_QU26IgdTd{3_?MQ|L$W50uCL3voj9pW?-R)}NfmHrjb{9{VN4JJE+~ zZExJ(xKj5;KGAPAzs-5&ShgZfpb-_8zx zxHeGy@88YuaUT2Jo?0%>7Qs6`#JM7oX4&*Kf`(KO2jkiAH}$=gIgh={{1xZ1-!Xs1d2F@$CC+0{uyNr$c9!`W&SUqsJcRSuU!CsT&w1>P z<{vnZol_(+&u!lITvARCm+eRLSLL?unl{Y_)wwqtzd@I?ot1OEoC#wLYPv-7RFz*^ z>=^_9f0>*S;}7&ZjlY)ocNl-*3%~c4I=5%?(u1L84%^P%eES!8xGODgF?w*r;k@=T z`4jT1TMqw4wzVe+2=u>0&SsaR_UrqV^nCL~KilMwnA{+z*yMK*y~+6VME_uko^K3Z z9ahhA#y>#(7uxyej4s`U?MR8g+Rh%sIs1JA?Llw`MGnWdPUw5e_szo=<^feU?lKv| zmNSN*SbHW62l~g1?o4o?m&$o)d&0aX(62Fi5Alx&y0lBT9R54^XQStd|4yqnPy9z1 z{|NDS1v>E`VDt&%zuV{?M4u~qtmoB1at<I?6E zdB2>}p2_vZKtE8p_Drsq^;r8qXXhL2GY4tT{Zz{LOsx(E4V(vT0Sl9)@>KRRT%KJ*n2^_ zRUFDIMMhdaF}Dy8*nBJSciMa^;Bfzz;&mdc&lDh(hx^fA&bNF7a9E_hH>4o?o|x>TrC=A@O+S5BF7u^6*_l#qfWJ7V;0&MXc=|vV=kT6^D6wkXLK# zGoidE!CHUkVNsr9_NN`bc-MI4RFG`?^MA%3Tge{l$sWV~HKF}oWRD{f$8`(kA+HE{ zM9v{C_wR>{{NrSgVO=yFUrF}an#5D>->|N@i$AePjDHd@6_1ep^Y}5r}i{T_Lw7ktjwXicJ*iN(umcb{Cy~~|N0Vp)b>>_ zi~MR&JqgzGkpye|Iud(T+)DNu?z0U2o7$)H=MsBV`^YC)%ez*@_Gta#d2p4dc#!Nf zte1rHJlSiwUo({Vll}JCdPrz*`0j7O|99KdOni&ut>e%3G!x%q|ET`Y#JAWVn7??q z%m3xnaAnh*Op_M`ok=6mXYCX@VcgW#ql|2tCf zP=b{|tZS=SmDiul*R*^(!I}?*@3|_!#)E0f7pF^ogSA}qqwqZ&#Tx~W%b#xH_!ON}lJZK*M@JHjJ<(U? zZ>RZ9Kk2K#KR+JdN&47H`Z!5Ad`}?MKUGoKo~cA%wSU9=c$EKGJwMXl{;I;`he$tX z`m3;i{#W~}!ymp&U()sG799^A7}>&j_9g3Gs!u(Me^uN``Zq-S*PG~{j{n4e(7$kB zmevn@Bz^2Bf7n6#)|u#=`m5dqYkMb1-^R#art8`2kJ`z9wk7(g?Hf-p;t~1J-UMs? zUF1J2Y5qPUUDX>%-B{wc!KhsScw7ySJNu|NI$lOvuwBJx9@Hbji}c?f${{pv`tme1I4VSmlo zZ()DT*l+9)wXgrD?RPY>SIjSxc&hnNbrL@n|IhN9O;SFX$W!|tQb#A7{^(p|Fp;n4 z>ymh_Snp%eE%?WD{-fm`6uT9KV-I2s=o!^A-Tr0mGKb@58{G*!U z_h^E(Jw3^MNZZq&#COaO6RhRo{UBPO9-pq)EAC42f#U@aC0OSV;|W%IlS#gy`chBp z`{{g2<<}Ge02H=g7#$On^rMau^h ztogxsf>r(~t@jTd8r!SoGyb8lKW6+x><`ti8UGObL+$0in}4wB3gWx^yLR6lyW)Mi zeyZi&>eyt{AN7AD34SSm14iT5^09;;`j_M%T0TXX^N)!n|55&Q{dKG0amq*1``u2E z@?4T{oG7>>!6&J_1navI#uB_uaJXSlPvd04^+~?6U2sQ&cL?rF@F{`^6MU-Rkp!P6 zcs#-Ff~OL^Q*f#L>8ACcF8jFzpCS9Y2BDjlpDFu23D*7!-!0d2#rb4CM8~5y!CIc) z?{}8q$z**5{FG1iQ~p$)LY&_Jqxr)Sk`yv_t``%-_Q=bPHE zo?m*sMa$a~d)D&71Z#Vz60Fx}@`-)x^_k%W>+$u;{6pmrCRoeEbEta0D!(bQZ?s=% zx`qA-?y6?4k>Pk=f9xmw>LB~!>oKjgz8&6g5#)#G@&ZopkJa`K zCG!nEziygeR3`SM=NH~b803ZL;1p}VJw*04O7{o#kiGRJ^98k+biSbNnM&+U$A|By z%_sJy@uwrfdVFP08YY{z569;e#qn!h8nGTfkYMF^iT!Cj^Y0mo$G4IFRUa7TY5nQ_ zeu@WaK2hu0ciBI7gr@CP{+W0f`*S89&cwss#2(c?|Gyp&d%XI>p3m0y5}r!1+IxMH z-)em7O5&TIZ*>ySG~T86pK83DNXnHzyaR4OR440k%0JFHS#Q(w5sG)=`TOAiIw@c5p?Jsl8w@1tZQ7p61Z#b1ywm;(?_1XT z^nALK_y_(Z{%L%hO0brfQhXaou$B)b>touNl}WtQ^7Q@!j8_uxv^=~wR@;a8M%UZY z`w4J-691HcD8X8u#zT!~?Ku%FTj+1TpS^c!VR=_#f7-rkiht?)nwE!6<-byJs}U5R zE4V+wY9C_>*5f%oc2N0bg3l9vex9Nllhopwy*Sg4LzRMw+G1H zx@f-ELG!iLp0vJBvX?Hhk5S48rxJV7$&Qm2NJCEdRG<7 zAEWu$NL?&fdCn$ip?#BtXY4KZm-g?By%qMyjJ*~1$N$y#*5$>+f1NM-H<)16#{o55 z*@Ay4P4Y!8pP=~0>z(1daN+oLeG~d#8s#hQmp|Qtzu@>(ox~&M@1pn<-a8tOAEfn+ z;mSh!rAd5Ie>Id~v?qx-TAto7rR8Ik@Ac98Mtc2J^Sw#R_u7;73(c2D60G&5&l{>g z?x1)!NbxLP-_Z8uDZgWXJ2U=KAO1Uze}_N)UG_GS;7-w>aWy2_g8k+ad)NNzNU-LX zg9%psOYg5#{sGE&J1F06rF^%Y{6l*EK;`lC#g)l?5$#K`wx^Hs+wR1lD1RUMlOD=v z)8~>^i@R1kc!$T>qP~Cul^_pBa1d1`_&% z?J3PqE)e@1OzcVRyGsw0O@Gv$CkW@0d{yHUKM&BF#4A0%H^C~uhvHRV60cO=M1qyS zKZ#!|FU^0oJYBC*TrYpRh4b&A_*75vC|zGs`QdwM;rM!rKk4%-THkO|uK8wdk`JrA z^!+&M4@Z-7JwAN5E!3CZ@2|%XB=JS@WPcvMO2E$RJvT7P)omG+0?@SXO6Cu<7ZGxZ&b zukGRWob>v+mWS^vh4E;o_{Hzf2;UbA{NZ~@0aw=-)}JRlW1ofnGh?5zKW6Mx{3orq z{=aFTdOfPo4-fpIu0K?&q06Q}dVQ%a!SE+Zywvd=NwCUGpWi%6a5crt(FE)9Qwdi2 z`kqDIv|2sBK8c^opT<|*&zzL&@e@gWRXmzp|4^Lzr~i)UpVQ8jP5bvX(jP-WF~3Or zN6W|mC*_(SbWnMEKh^v>w#l59}n;M4*ZVh+u=Rpp}dsl z+r!EADQ!>sytkfTA6=j7&&Bqt{SPNt`KOn~a=l(0-YXsI?@00=t#2~HsvqqK#pAWS zlKfwI|8tO6n&c-hHQ!G274$dFztj8wv^>05Imn+(u1BFgb+LVVzG;4=<^2Ay@V?|A zFT5u?;P5{8fcp-M@>L!`znR+Gj6KcR(~Lbudr^D*U$v(fj`GKA*wFXQmL46kzK>`@ zg7tj>xdiL;TZbfgv*4x#>+^}nCRm?8YfG@+uYYEO^?v=%1n(4lNrLr${GJ4#Cip!G z*8BPU6Rh{ke)x???Pbg7x`;(FC6^_~8WW{r?jQZWsJ?g7x`<=>+Tj`LmCS z{dtPu$^`5E_WLGSpKqv5@Y#Y_Cs^;l$tPIvm)V+Nz24ZKU|k-}~|Bv|jaYfZ4OKkZ1c+S98O+$Gq;Ez&HFSx5Nh0k4() zt^WsCcLHxe{}^&U+CR?BbY_0D@tEn%#2ysK9#s{4R1ten9JHib#M-DL)RI!f9u%?1 z9(&LdYKgW8wFE`1jXl(onK5JT@BeyEpZmPe>-F5%@BMsp&dDeD-1|EBoNvD8l|Sj_ z-yiqNpa1gjPk!aE`f>xG_R63B;?I2Lzw_eHdgZV9Auq@Kl|TB$pZ&_8@Zv9cLV`EjrODKGxySFT?CX|MdLFaFF|{=yf3)+>L+%X8P?^~xXr;?I8N&wB9}yz-a4 z_={foV_yEY`IoQ!IWPXtul)90pAUOEW^XSqDZ#gV@rS?i$GrF>Uio8R{86v`U0?jM zul%Q8{CMTJcU9sVKVMIMd;f2@?-?KQj90wl69+Hf^S77h{k_2WhxmCu z=<|3bjA!_POI+g?_jtrJUh$4k9K1ZId0#&c@$>z)FYRai?Q`(gxA(wrpF_PKuW^fe zJmMLzc*iFW-ks0#?0L?2dHQ*N;L~@uPjH4GxWqMXagRql;}!4t#KF7ok3Rd};OBbg z&++GaEl($GpW)~Gug~pE#%tW-9*=m&E8g*mgAaTE7Y;}-XL#4}#;j!zuC`+D`W=eZvL(;?$` z{G31V+&*LcflFND7Wa6>GhXqIPaM4a`uubM-{25G=R-WVPZ-be^Ze)M_9f#rZgG!C zJmVGb_{71x?>{{E?+p&|b3Li&_6g$|e&FZ(9nb66jJLSQBcAb!cYNaD-T9Kw{dt2! ze8&mS@B^2)#?SRj-|o-b*Hea9<8M9T=X}rS_8a2|zVLIt`t$nF^(>x_-krbx^z;1u zr&GprT;K{fxWfaU@Papd;0xd0oe%r$c?U;0#wpHmfuHklpZC`=-r)gHc)=S!@P%*h zo^SBnpLcMCWBgnn?s@&^=b1fSuziIa+~EOFc)=S!@P%*hzMuNs-*<3?W1Qj~Ki8{x z-hRb+gF8In2`_lV2fpz0^QxZv_gt^<>FC}0-cQFk#W^l;g&W-A0Z(|r8$R%bpX>2F z``&qXe&N#*j&X`}T;K{fxWfaU@Papd;0xd0ov;7weXck3bi{a!Q~W&t=z0Bu@d`J% z!vmi1f;W8N3qQ|)f9~&dzQohd^QE4S-<@Cabc&y!C-odJ7_V@HJ3QbCFL=WTzVLH> zyyyNt*Oz)adiQ*dr(>Mr92dC44es!OC%oVdANa!0`7qDE=luDnqj%@aJpEi>{OOeO z92dC44es!OC%oVdANa!0^}(J!?|k@suLpe7mw!e$#?STDpV!YBFK~q$+~EOFc)=S! z@P%*h&If<)|2z1(-s^MxIe+}=l*+mjzhb<>9Ukz67rfyE zU-%Zj|L6T39N`$JIL8I9aDzKM;0dp<{7FF&?D)jNSAN;(=`2QG1qTioLj z&v?ZpvJTagAHt;}Oqz#XCOnb3K^n{=WHY z@9z!q9VhsCe$xkDZszUJ(}VF6*SN(!9`TGNC3e&7<;1iNaER|X!5Mzw64$uJJs$ClSG?mB2Va|h9O64paE70s2l0G-m5kT8#XTPJ zj90wl6F<)%dG6nvuk-%n@m$~GIeuq6!5Mzw64$uJJs$ClSG?mBKPT`$``&y6{rHX( zoZ$y9agAHt;}Oqz#XCN6@O9tc`&^IXc|1bK@A$cX_;dS=@dqw(ja%H~5zlzVJ3evn z_2|bTzT*UE_<>7Y;}-XL#4}#;j!ztXefn{T?>NC3e&7<va>9Va-$4_x9Jx46e6p7DxzeB$7ny}$Pj4)Gl)IKvNI;u^QO z$I~l+{>!c}c*6(2@GX9?|LyHPKi~K5@@_;}qw(z!h$AhX*|21#kGk7ruSu`+MKP5sq<+b6nsGH@L$Cp74SxhQ&T)Y&+~5umc)|!5tp(gcrQw17G--(2pY=;}qw(z!h$AhX*|21#kGk7ruS#;DeXv@3(hw zgkzlI92dC44es!OC%oVdANazr*Ejj#^S^KN{^Jqh*XxYoZ$y9 zagAHt;}Oqz#XCN6@V)5AA->}TXZV3jT;mq^c*HYa@s3X%d~f=3i0?ST8Ghgr*SN(! z9`TGL2t;Rh~pja%H~5zlzV zJ3euc(~m=Z#|h5x1DCkQE$;D%XT0JapE&q_^y3iUae_1az$LD6i+eoc8LxQ9Cl0

3Gk9M>xhQ&T)Y&+~5umc)|!5tp(gcrQw17G;|Bk0Ewj&X`}T;K{fxWfaU@Papd;0xah`f-F~ zoZ=i8xWWzY@PH@0;0+)6!naSPA4fRGDb8_$E8O4?4|u{0-td7heEX5~;|Rw%#W^l; zg&W-A0Z(|r8$R%bZ=Xazj&O`qoZ|vlxWOGB@Prq<;R9dz_Q~|)2*)_ZIWBO88{FXm zPk6x_KJbNaKZ<@F;TWel#|5r%gF8In2`_lV2fpy_N7IiZ9OD${xWE-|aEAvx;RSE_ zz!$##82WL9W1Qj~7r4R=?(l#oyxe~c2Rz{gZ}`9$zWq4*afD->;v5&a!VT{5fG51*4IlWzw;xYGj&O`q zoZ|vlxWOGB@Prq<;R9dz_7mvG5sq<+b6nsGH@L$Cp74Se8&mS@B^2)#x3sgh-bXw z9iRC5f!ZHNC3e&7<YoZ$y9agAHt z;}Oqz#XCN6P}7e?e8&mS@B^2)#x3sgh-bXw9iKS(8NmlHA9(rt!QX#4#CM$F3_oy* zYuw@7Y;}-XL z#4}#;j!zu?Ec$VX?>NC3e&7<VPJ5F$hAGpLdZgG!CJmVGb z_{71_p&y6%juV{W2QG1qTioLj&v?ZBk|y;{<2;flFND7Wa6>GhXqIPaHJ# z;}G9*f;0TUC9ZLcdpzP9uXx8N4nBi^9O64paE2ea#5Hblk4HS?74P`O!Ox=~hxm>Y zoZ$y9agAHt;}Oqz#XCN6@bl@%A->}TXZV3jT;moGulyB1!5tp(gcrQw17G;|3+TrYj&X`}T;K{fxWfaU@Papd;0xb=A^kYQ zF-~!g3tZs_cX+@PUhswweBs+Kq8~>%#wpHmfh*kL4i9+33*PX7FMMn1#}STkigR4x z3OBgJ1D^1LH+xhQ&T)Y&+~5um zc)|L2t;Rh~pja%H~5zlzVJ3evH(T_uX#|h5x1DCkQE$;D%XT0Ja zpE&qc^y3iUae_1az$LD6i+eoc8LxQ9Ck}o!{W!#ToZt*UaEWW&;vSE9#w*_OiGyE5 zKMwI7Cpg0oT;dwHxW^-&@rrkR;^4FB$05Gs1ZVhxOI+g?_jtrJUh$4k9Q<1Paft6Y z!5Mzw64$uJJs$ClSG?mB2fvPf9O64paE2ea#5Hblk4HS?74P`O!LO$uhxm>YoZ$y9 zagAHt;}Oqz#XCN6(9@4Ye8&mS@B^2)#x3sgh-bXL@+Z7JpF8k{Z@(e<;N=4^U*B&3 z4vuh)Q=H=hSGd6)9`J-0yx{|1`1Tv=#}STkigR4x3OBgJ1D^1LH+xhQ&T)Y&+~5umc)|#0!5cpCg>S!|ejMQ#r#Qz2u5g1pJm3j0c*6(2 z@a=cdk0Tu86z90W6>e~c2Rz{gZ}`9$zWq-6afD->;v5&a!VT{5fG51*4IlWzx8FrS zj&O`qoZ|vlxWOGB@Prq<;R9dz_PgoF5sq<+b6nsGH@L$Cp74SXP!ZA*9 zjtgAj26uSC6JGF!4}9U<@1-9{IL0Z?ae*t`;0_OX!VBK;fiHX;>BkX{af)+X;0iam z!vmi1f;W8N3*UYp{W!ugPH~P4T;T?Hc)$~0@P-e3;oI-0A4fRGDb8_$E8O4?4|u{0 z-td7heES3R;|Rw%#W^l;g&W-A0Z(|r8$R%bZ-0<}9N`$JIL8I9aDzKM;0Z5y!w0_b z?GMq9BOK!t=eWQXZg7VOJmCdz_`nyw{bBlXgkzlI92dC44es!OC%oVdANazzKSDo_ zaEw!&;{sQ>!5tp(gcrQw17G+y(T^h>;}qw(z!h$AhX*|21#kGk7ry;b`f-F~oZ=i8 zxWWzY@PH@0;0+)6!nZ$0KaOyWQ=H=hSGd6)9`J-0yx{|1`1Z%?#}STkigR4x3OBgJ z1D^1LH+!6@2jWftRmuAMbB)i0?ST8Ghgr z*SN(!9`TG!M?Vhn9Va-$4_x9Jx46e6p7DxzeB$8G(~m=Z#|h5x1DCkQE$;D%XT0JapEy|P z$05Gs1ZVhxOI+g?_jtrJUh$4k9Q+0Paft6Y!5Mzw64$uJJs$ClSG?mB2cJhj4)Gl) zIKvNI;u^QO$0MHcig$eC;PdInA->}TXZV3jT;mq^c*HYa@s3X%d;$G9#CM$F3_oy* zYuw@NC3e&7<YoZ$y9agAHt;}Oqz#XCN6@DG9yUOw>h^@HDk9O64paE2ea z#5Hblk4HS?74P`O!9S!Qhxm>YoZ$y9agAHt;}Oqz#XCN6@Q>)nA->}TXZV3jT;mq^ zc*HYa@s3X%{A2oYi0?ST8Ghgr*SN(!9`TGL2t;Rh~pja%H~5zlzVJ3evn#q{G4-*JL7{JYoZ$y9agAHt z;}Oqz#XCN6@NekHA->}TXZV3jT;mq^c*HYa@s3X%ob=-m-*JL7{JGu~eLb3gQDeM@}d+rNLW|Lykg;0VV!#W^l;g&W-A0Z(|r z8$R%bZ~uXQ9N`$JIL8I9aDzKM;0Z5y!w0_b?LX3wBOK!t=eWQXZg7VOJmCdz_`nyw z{U`cygkzlI92dC44es!OC%oVdANazzi+&v87^gVL1+H*|J3QbCFL=WTzVPk;q8~>% z#wpHmfh*kL4i9+33*PX7FMRvI>BkX{af)+X;0iam!vmi1f;W8N3*Y`9`f-F~oZ=i8 zxWWzY@PH@0;0+)6!nglSKaOyWQ=H=hSGd6)9`J-0yx{|1`1b$Ok0Tu86z90W6>e~c z2Rz{gZ}`9$zWsmn;|Rw%#W^l;g&W-A0Z(|r8$R%bZ~ujU9N`$JIL8I9aDzKM;0Z5y z!w0_bE%-7YJOCef`TD`<|2V=iPH~P4T;T?Hc)$~0@P-e3;oFy?A4fRGDb8_$E8O4? z4|u{0-td7heESgkafD->;v5&a!VT{5fG51*4IlWzw-2QsM>xhQ&T)Y&+~5umc)|cp zz!$##*YEYez5Y8m!ZA*9jtgAj26uSC6JGF!4}9U!5tp(gcrQw z17G;|Vf5n&$2i3~E^vh#+~EOFc)=S!@P%*xE&VvcF-~!g3tZs_cX+@PUhswweBs-F zM?a2mj8mNB0#~@f9Ukz67rfyEU-;v5&a z!VT{5fG51*4IlWzxBrQL9N`$JIL8I9aDzKM;0Z5y!w0_b?SG~pM>xhQ&T)Y&+~5um zc)|;}qw(z!h$AhX*|21#kGk7ry#0!5cpCg>U~G{W!ug zPH~P4T;T?Hc)$~0@P-e3;oFDPk0Tu86z90W6>e~c2Rz{gZ}`9$zWwj?;|Rw%#W^l; zg&W-A0Z(|r8$R%bZ~q7VIKnYbagGaI;Rbhjz!P5Zh7Ww<+y6;Fj&O`qoZ|vlxWOGB z@Prq<;R9dz7QVkfeC5x0c|G`!6P)1(E^&=p+~X0?c*Q$DaqyMj>wVkz28Z~L6P)1( zE^&=p+~X0?c*Q$Daqv~>$05Gs1ZVhxOI+g?_jtrJUh$4k9DG&!aft6Y!5Mzw64$uJ zJs$ClSG?mB2VaeT9O64paE2ea#5Hblk4HS?74P`O!B?jrhxm>YoZ$y9agAHt;}Oqz z#XCN6@HObiA->}TXZV3jT;mq^c*HYa@s3X%d`ejMUEPH=`F zxWqMXagRql;}!4t#KG64ABXsk6P)1(E^&=p+~X0?c*Q$Daq#u%$05Gs1ZVhxOI+g? z_jtrJUh$4k9DIHHaft6Y!5Mzw64$uJJs$ClSG?mB2Y32$i0?ST8Ghgr*SN(!9`TG< zyyFuG-++D`;yX@oh99`ZHEwZ_M?B*d@A$;QH>4kj_>L2t;Rh~pja%H~5zlzVJ3evn zjp)ZAzT*UE_<>7Y;}-XL#4}#;j!ztXWBPH3?>NC3e&7<xhQ&T)Y&+~5umc)|#0!5cpCg>N58KaOyWQ=H=hSGd6)9`J-0yx{|1`1UR6#}STkigR4x z3OBgJ1D^1LH+!5tp(gcrQw17G--(vKq?;}qw(z!h$AhX*|2 z1#kGk7ruQb`f-F~oZ=i8xWWzY@PH@0;0+)6!ncp1A4fRGDb8_$E8O4?4|u{0-td7h zeEZJt?+;)3Bfsp+d{>;{3_oy*Yuw@L2t;Rh~pja%H~5zlzVJ3evnUFpXmzT*UE_<>7Y;}-XL#4}#; zj!ztXH~Mji?>NC3e&7< zKMwI7Cpg0oT;dwHxW^-&@rrkR;^2GGk3)RN3C{2Xm$=3)?(v9cyy6|7IQX9Q;}G9* zf;0TUC9ZLcdpzP9uXx8N4!#%tIK+3H;0!--iEG^A9*=m&E8g*mgYQj04)Gl)IKvNI z;u^QO$0MHcig$eC;QP>zLwv^x&hP`5xW+B+@rY-<;vJtj_`dYx5Z`fvGyK3Mu5pWd zJmMLzc*iFWa{6(I?>NC3e&7<GhXqIPaJ$4 z{W!#ToZt*UaEWW&;vSE9#w*_OiGv?VKMwI7Cpg0oT;dwHxW^-&@rrkR;@}6-k3)RN z3C{2Xm$=3)?(v9cyy6|7IQYTz;}G9*g7a7Yl$Y1j3S7T(^)lY#9*=m&E8g*mgU5Tl zZ}0yN4)Gl)IDh3&ecOvG+~5umc)|gR!ZA*9jtgAj26uSC6JGF!4}9U;v5&a!VT{5fG51*4IlWzw;xMCj&O`q zoZ|vlxWOGB@Prq<;R9dz_T%Ws5sq<+b6nsGH@L$Cp74S;v5&a!VT{5fG51*4IlWzx1UTuj&O`qoZ|vlxWOGB@Prq<;q#Th@a6rD z;8Wl0ed{+k#CM$F3_oy*Yuw@7Y;}-XL#4}#;j!zu?RQhpNC3e&7<B zJ5F$hAGpLdZgG!CJmVGb_{70aryqy-juV{W2QG1qTioLj&v?ZYoZ$y9agAHt;}Oqz#XCN6@U!U0A->}TXZV3jT;mq^c*HYa z@s3X%{A~Jhi0?ST8Ghgr*SN(!9`TGL2t;Rh~pja%H~5zlzVJ3evH(2qlW#|h5x1DCkQE$;D%XT0JapE&po`f-Tw zIKdfy;1buk#XTPJj90wl69+$!ejMUEPH=`FxWqMXagRql;}!4t#KF&}ABXsk6P)1( zE^&=p+~X0?c*Q$DaqyY+;}G9*f;0TUC9ZLcdpzP9uXx8N4t@dsIK+3H;0!--iEG^A z9*=m&E8g*mgI`EL4)Gl)IKvNI;u^QO$0MHcig$eC;1|)4Lwv^x&hP`5xW+B+@rY-< z;vJtjXz9lxzT*UE_<>7Y;}-XL#4}#;j!zu?V)}82?>NC3e&7<!5tp(gcrQw17G;o(T^h> z;}qw(z!h$AhX*|21#kGk7ry-}`f-F~oZ=i8xWWzY@PH@0;0+)6!na>dKaOyWQ=H=h zSGd6)9`J-0yx{|1`1Wh)#}STkigR4x3OBgJ1D^1LH+!5tp(gcrQw17G;o(~lz@;}qw(z!h$AhX*|21#kGk7ry-l z`f-F~oZ=i8xWer#fBeheUp*f2j90wl69>QXz23L?_XdafjuV{W2QG1qTioLj&v?Z< zK5_7y=*JGhXqIPaOPa`f-TwIKdfy;1buk#XTPJj90wl69>PA zejMUEPH=`FxWqMXagRql;}!4t#KCW+ABXsk6P)1(E^&=p+~X0?c*Q$Daq!#d$05Gs z1ZVhxOI+g?_jtrJUh$4k91Qg15Z`fvGyK3Mu5pWdJmMLzc*iFWemng*#CM$F3_oy* zYuw@!5tp(gcrQw17G;|$LPlqj&X`}T;K{fxWfaU z@Papd;0xdWIQ=-nF-~!g3tZs_cX+@PUhswweBs+?(~lz@;}qw(z!h$AhX*|21#kGk z7ruQC{W!ugPH~P4T;T?Hc)$~0@P-e3;oF~}A4fRGDb8_$E8O4?4|u{0-td7heEXC1 z;|Rw%#W^l;g&W-A0Z(|r8$R%bZ!`Tk!ZA*9jtgAj26uSC6JGF!4}9UeHwYbM4p7DxzeB$8Gyx05o{@>sb-*JL7{J!M?Vhn9Va-$4_x9Jx46e6p7DxzeB$8G(~m=Z#|h5x1DCkQ zE$;D%XT0JapEy|P$05Gs1ZVhxOI+g?_jtrJUh$4k9Q+0Paft6Y!5Mzw64$uJJs$Cl zSG?mB2cJhj4)Gl)IKvNI;u^QO$0MHcig$eC;PdInA->}TXZV3jT;mq^c*HYa@s3X% zd;$G9#CM$F3_oy*Yuw@e~c2Rz{g zZ}`9$zWpuwafD->;v5&a!VT{5fG51*4IlWzx4%t4j&O`qoZ|vlxWOGB@Prq<;R9dz z_IK#V5sq<+b6nsGH@L$Cp74Se~c2Rz{gZ}`9$zWoFGafD->;v5&a!VT{5 zfG51*4IlWzw|_`Kj&O`qoZ|vlxWOGB@Prq<;R9dz_K)bt5sq<+b6nsGH@L$Cp74S< zeBcY;{xSVH!ZA*9jtgAj26uSC6JGF!4}9Ue~c2Rz{gZ}`9$zWp=$afD->;v5&a!VT{5fG51*4IlWzw|`DQj&O`qoZ|vl zxWOGB@Prq<;R9dz_Alti5sq<+b6nsGH@L$Cp74SYoZ$y9agAHt;}Oqz#XCN6@E_^NA->}TXZV3jT;mq^c*HYa@s3X%{3rTxi0?ST z8Ghgr*SN(!9`TG}e&L#M zUAQUS67C51g$Kez;gRrIcp^L%o(a!|tKXLRg=@lf;ihm)xFg&b9taPGN5W&_iSSf- zCOj9e{2l6`l#tg{!ZS_=Ri2b>XIPOSmK47aj-?g-60;;fe56cqTj- zu0AC33)h6}!cF0pa7VZ=JP;lVkA%m<6XB`wOn5F_eWk=NTobMfH-%fm9pS$4KzJxT z5*`argr~wY;kj`2RT95&O}H-H6mAK3g!{q+;i2$Icq}{-o(j)|=fc&8C4S+Wa9y}5 z+!F2x_k{<-L*bF|Sa>2l6`l#tg{uvTU$`b*7j6o-gge50;eqf_cqBX)o(NBcXTo#g z>Z>Jw;hJz=xGCHc?g;mV2f{<)k?>e}B0LqI3D1SA-y`u0*M#fBP2rYsN4PIM5FQGT zgvY`Y;i>RUcrILhjl?fp6Rrz4ge7KQ{gk=bKwi&OW`ZwYvCK= zjgLzF!kfYk;T_>!;hyk`@Tu^b@VW4X@TKsT@U`%b@W$_x_=Pux8^SxnyTU!;6X8?g zGvRaL3*k%QE8%P58{v(wm-vM@g&V>KhjE z+WfBw*M#fBP2rYsN4PIM5FQGTgvY`Y;i>RUcrILhqr@*<6Rrz4g2l6`l#tg{zNA{K7Tix^Ppt zCEOA23!g6W=kffV37-pJ2ww_c3117}2yfh3#BcN85#AJT2=55*3ipIhginP>OZ+C* zGZvl*Plac~bK&Zn7V+BnuL#$K>%vXpmT*V7FFX()3Xg=x!V}@C@J#q-iGK|7Zv25o z{Kj{LH-#I*JHordJ>e7KQ{gk=bKwi&OW`ZwYvCK=jgL$G!kfYk;T_>!;hyk`@Tu^b z@VW4X@TKsT@U`%b@WwYw{KA{U4dET(UE!YaiSViLnee&rh47{DmGHIjjqt{|Nc_T^ z!VTda;a%aL@QLuL@R{(r@P+WD@Rjhj@Qv`sw@UoNo5Bs@9pPQ!p74qAsqmTbx$uSX zrSO&TweXGb#wR3x;Z5O&@Q(1Va8LL|_*D2z_+0ox_)_>v_*(czc%vrq3vUWHgm;8@ zg?qv$!l%M#!so&l!k5BV!q>t#!W-Wv@e6MXH-vYDcZGYxC&H(~XTs;g7s8jqSHjoA zH^Li#P~sQf6mAIb2=5B_ginM|h0lb~g)f9Jg|CFKg>Qs6zFp!M-V|;K?+EV-_k>S` zPleBf&xJ39FNLp!uZ3@fH@-vS7v2Qs6zFXoK-V|;K?+EV-_k>S`PleBf&xJ39FNLp!uZ3@fH#Q}H;Z5O& z@Q(1Va8LL|_*D2z_+0ox_)_>v_*(czc;k~2zwoATLwHAcSGXs9B77=*CVVb@A$%!( zC44P>BfRm4B!1yd;fC;z@UC!A_(b?r_)Pd*_(J$n_)7R%_(pi+Qxd=Mrf@@eM|fAb zCwwA&Dtsnct?0wxF>ufd@6hBfRmd#4o%l+z{Ro-WBc%p9r4{ zp9!A}UkG0cUkP6e-w1EKCh-ez3O9szgm;B|!Y9I~!e_$g!WY7q!dJrA!Z*Sjb%|ei zQ@A0#BfKlz6Fw0>6+RO_7rqd_6uuI^7QPYQ*pm2#H-#I*JHordJ>e7KQ{gk=bKwi& zOW`ZwYvCK=jctivcvH9`yd%6T+!H<#J{3L_J{P_az7)O^z81a_-nc9A3vUWHgm;8@ zg?qv$!owy0Mg0C{Bs>%vXpmT*V7FFX()3Xg=x!V}@C@Jx6vTs@Tdg=@lf;ihm)xFg&b9taPGN5W&_iSSf- zCOj9eJ}vPJ*M#fBP2rYsN4PIM5FQGTgvY`Y;i>RUcrILhM&cK)3D%vXpmT*V7FFX()3Xg=x!V}@C@Jx6vT)iRj3)h6} z!cF0pa7VZ=JP;lVkA%m<6XB`wOn5F_{h-7zTobMfH-%fm9pS$4KzJxT5*`argr~wY z;kj`2LlVDmO}H-H6mAK3g!{q+;i2$Icq}{-o(j)|=fc(JB!1zVa9y}5+!F2x_k{<- zL*bF|Sa>2l6`l#tg{vQy_=Ri2b>XIPOSmK47aj-?g-60;;fe56cqTj-u6{(~7p@7{ zg`2`H;f`=$cpy9!9tn?yC&E+Vnebe=+L8E$Yr=Kmrf^HRBit7r2oHrv!eily@Kksv zJQuEhRN@z|3Dzde&L#MUAQUS67C51g$Kez;gRrIcp^L%o(a!|t2ZTn;hJz= zxGCHc?g;mV2f{<)k?>e}B0LqI3D1SAKPvGHSFav+pZ2?lZ?(Jcb)O%<_I&Sn|GjSe z_;BxW_plA;@crtryZ5C1PWSM6_i6iC_t^ogclw71kGk#llXsszd*8>P^BN5w@ZINM z+<*S0efaL9(tg>JiM1-mTed^*KY#0>y?1!Hhl!87C&xbht8aYahhH`L;{I{3{iOTo z-M8BZ?;iKxJ+77)(>pjm>K`2E`eVd&S1)O~_V%i>=ID6u@jLDQ@nQGvqxQjDZyj}y ztK+?+ciOB-r~hd0sGIf6t9o*9{2X0kQ)5wKu3pnp(R(^rZU~mv*UQYi&(qZI|^m57zd%zqaPy+M3tb)okBgSF^RYW_x>WpS3mHTWkBQ zt=X=x?ISgI3m@)%kuS{t0d9iVaG%MhcuV3EWgFt{k^ww6dd5ze(RvJ_d*(Y2lV%!za15J zdc<1$?;rOLp6fDbu35>VQWnFCHg#H z^P}#HO|f@x_vi@k>Tb8fS?X`<Qx+7 zUSjJkVW{4GueWS@EnEUiqC3QMDhE0gM8QCM2(@qlZ4 z(566pihF6Kz|~{T-6(NTMQ3bDD9lEM9f{Tpg}sSpDekxLbNV9gg@Y|+6?T+jE6RG5 z2s=7s`cRlY8ZQ*WriX=4*yRd^B}Ip#wu`k;*f2J0wD0A$qlQ%M@E_q^O7Su)WP8a8re{+mPNiLXFy@5OY{XS53(l3 z{WMbG-euE!S(5@&#;_^whJlM3H7O7x9SboO!iiS*i$Xk6TNDBd3-LsU6nKfG)o9=K z7!eu;Hjd(c8YvJ`G`SZ7q0qs~De$%mv7I8ydXxw$S|B7U+_MyR`9dMeXjarV;*DBF z8MQ?rURriZLm~3$Py`|mYb%w#ljvb>z8Q@uu^t)^(kSBfbnd3uPO%lju37HwRwx7$ z3c*kzg0PCR5a=O-5Jh2&!$W?XU5i5gnjU8G=`pOA7}QG}ogzz&=mtjd5@UF2FKeE9 z+fjj#s4zH%U6rUT3NuD!Q8p<(OctUj3n@Ba2~>8EhKJ=);ri6MKwO7V_flbo@NhR~ zE!N9+xW_24ND5ncj8PO0n((k(R@%ZtVU^J}h21)^kj|By_Ps{t7?I?{Se@iV#q9(K zCh`j$e4b`RX$PS(jzPDh#35*i6|#&1N20fiVmrz$mX?%wJrV%6OMzL!K?dMemI}B) zio&)~g>LIW$I`+~Gg-wlC3x(~ahvi4JBJhZXg-0xUA|k4X?fbrP zj8B1(!g-KR3Oq~ECIz0Pa8e+saH2#^G?2UaOxR5d#72R|Q((s_?41`1Yo@ZR5Z?Xv zJr0!u>!5?%BLp%HwkZOshC6t_L>1l}X>C#1HiyFIMl&ocJS;1`qU=>19u`RTu>HEv zgwaAEgWzgXAaS69guw;U1TS&JP#~0WkSBN*lFkrWZl~A^flXo)1W5rW6!ts1Bgjw) zGMW{Is}WXFxT$DiC!%8tyDGFEw(l|`q!uoaNO*}nf)y!{Pq={yDUeRkC?dNcpYR%l zLt)`iVRaPt$c8Ec3yt;*g-b>c=RFsc0_O~k6!*ix9nTuvV9_K6W{s*8b|7UK(KsC( zbKyjZC^D|7fRol1h24vxaB-qpQFgG=!$w52qVP%&&o+m(*oY8Cd1}EW<1S{cT~I1} zC;AbCb-2K*AsnoNP6{lBZByWw2?tAI+Z4F$QH6!DDupeGP6~Ux=wMwga4Qril0kvlf!+S z9A4s_a6d}>0n<54oDt4Z;G{6bIbj992(UIvgz}I^3Isw2_e}^K``!kpy_dKyA#mE$ z$r7hMhf4z=B;3F!0xxl|Lnpu1xy zJFC*b!S06LtE|DL3x${z`B-bWSdQ|57A_MVTqimyaKf`D1#bCp z@Y#TEQ{bYyfmuV~va)xUxW4R@2ClFhxTI`}$U-5qXuME}j2;4`ung0(C9}*D;iRe{j!o zQY!2jh368i#I}WpqozQv7*)t#e3d;+HCpi>$oeE2)uqQMsi@-vovM77qgoj%zIv~g4GLX`^Kmy|>(iAVT zAJHNO_9dJYSU@;Y;srqiDU6ST6vj&g87&cHCE;d_Zsj=aT7q%B@zz7WV?=pbEjfsZ3zBKiy?~4-(I};XmfeLYkRg~SG^bm1~qHGtU19l-4c7X~XP`F-XM-<44xU3ZTf1~Srmc~t0)8-)G4|&S5%8pj_ZeQQ%rc6;?roMTE6bxB~R-xwZock$Gv) zw4YNcEU9n@fwCrrJ?nmUrNH|=oGh^h_DSKd1s^|auqJO}=QrEhE8!*o`~&{kuIMIBe5Dq;HClr<*J@C1Mkq7D~76wZ4t3Fo~F9P>0%U=Qfvc=sCn zKE);}@R|)L1J$ zMhc{#ZeXoZQ$*Gv74;^_J=xS=3RGBp^eW1J=AwsqqFGUP4$`w2LluEwY58j)mzAEq z0O;8pz!h$6FOd;=X`eq_;7<1vi=n_RPa_2~12?das7ZmufHf&_VWUZwcyKrxo*WnU z$hg2;qBx=Kq=@F&q^K>*wkv9}H&I&@HYqBLz&3=1ZHV^B5`1>#1YRN~@DiDTm$+9c zkOY!$N=L^c5LZ};iwdW{ z&xo_$OMD6O5_?8r-$v-*^rygKPk|$y0!KLoK9{&aBoy{jYFb;-2$v%&i^3}>JiBRG zYp>wwfrW>{!lN%9Rw}z6;vF0Urw1Jz85B6kT_BopaE7o7KU!1ZL}!~6cwWOPBHQ9) ziMK^`UgA@DG%W%bjuwKXu=|h-(S}u&#Z3=khbRgw$qv{6*5dWXbr)d|fp3J}`F_e2 zftl%GJ_?LYVK=)qMhM{)fdRw9K%p=|D2za5s|&9v|A^t^;@RA;Q`rg5Nf*k_a?Wqx zIH>F!hbx3eVGlSJ-aqMKQS`7T3hZIDFAA#+t0;T*g_puVU2th>VHeoQ@)at)1AKp@ z#Lo$_-Co+y4aRswSbT@m}!yEb&@!#@oQ_krGhgmnW=Afg32C6!=KN zwkh!Tr-SstYj9shlN87&Sd+ps3{I2+Un^)75e7b6cm*y@w7^9Og{weiw{j@#bkt%K zLm~0-F_3O}iKr;BW8okH;ruBuBptjIqAE&!l*koP*sT%@Yoo$~C~Rq=u(W8F!Y(u| ze5HsbvcwWYAT{wCWF}r>z!1nt+`-*NfrP{jJRVV#!cr8r#YYGi*iQn*2YCu>Qs83)jTG2#I!I+$lLAqNlLASNH^Kf#O$sbM9Bh0jY&?}E zh2h~9M1}h#tfD+;@$nHqEA2{!Dgu{`mM1SP#`IxKr%uRB~lS*#7^M}h+FofYBVm&Ui|bBadarkVy9;zhbjUg)3T7GE8+{U zD2p^aL`sFXl&=V{C9VuFBp3E(qJvkH3(On>FD14q0thAfLN*j_QOS?C$#%>5JF{+n#TNopxs6a?*ZBf|0 z8I?uZLrM>8h-O9M@dytKi^`&~G+MUEP(@&wwCuV@&lGkuMjsnk+A)X+2qr|UWobfz)ZIrl757`dc4r@{%*O^c6#Zznkx1yUIrDUiXqVX2G@BrslL*brGFkzvy! z@NI<-avB$SEW^P35QXzx!A@JK3FR{H8$PXy+`GqwpkmI<46o(Z^ zZCoIsp-}`98F!G!uqFla8CIk~2;m@vPzZqv5l~nxp%4odo)-#Fc6?O)=Fm%|IGi>G zQXCp7khZvifkPl&aR-lPw9OJ9V^~u}*5Ip**WjxRTcp7IrZ}POHABx{E}`%kQX%B9 zibBY=Ecj4GU>Bl&5!jEg@b;s^w;5j-avH8L1#%iUkkWXGjK)iRfAJEDjhD!4SQde= zE$(2`DG+LLQXxQk2qr3vLNK%t0tFTxVxcTu;mpWVIAIEGUpOg{uCQ$p$XnPc1@ad+ zu$R#`1rpY9Qs52}5845eoqkRfH)5EeY_fyXH*@bPh3)^KE7?Z+w z+Z-E`!uHzRV4Sdu@??e0FnH8r^iUW+6h;e$;i#}X_3WC;(hB$N0)(=(g6*)2RQ5s( zg=wiUD+NNKuxB7z6=fgp!ds}ca4)gWQjWX+udgiqyTi->PVn--ZTs4L+rB-B$2ShQ zotL=DyhKb^+GjW`@$aV6M+!lK)PVvSgA05Op@DB6E|5X6Oo6K#4sr>$MKa+6k6Kh= zlR{yWsBB9@A$%%3!=fFM2o9D4*EgIL_C>_oAbarAej~$9DKJS?r9c|tP3#K^I~9S% zf)0LZLxE+7!m_Eb>abEEhsf3;kSe%?RDm@q@U(}6?7^#$Jg`ZY$Qj%~s=$gANEKL- z!tT6igVj-CbriO{p|HErtO(rrVc|Zb!Y7FPoDiQoI8h3G?qE#{JpbV!Z}2K)3v7}C zIe{BU1-!(qK;fS{-14s(uCUgq#9FDa!VpE-Ya~3ZIy&Hnp~4~0QE|9a;BlE6Tr# z_+WT}MYE!82kF`64pjv9GDgEDQQ@EE;KGnaP#}45fq5v9D$q!QN$6mX5LqHa;3!ez z7c}G)h`TtUEL?i_!j9UaEZnF?Y*Aa3MM=-zozV_=MJU`ARQT!4*MZ!Ev7|s&PY1~c zYf|903EyUfwS7@}_~e zw+s9f7fu>D<-Nwv_I$y+uu)y$%^C_fUNpigLSZ+l{F8)tuxzGu4P{+zc>J@86bP52 zr$DSUQXpg+DQr?-Vi9TBB7F2Lab?*z4O^16!2QfIQrNk{zF0^otRR#n0UW3(tR^ap z!g^@gT^6bctSyEp3abmNDC~AUmyyc8Q*d%i8C+ra!oq4pVYO72JCwyzVToZCg;j)A zlwG>;in5Cs9(D-IbBLq%@F@Dx$t38p~Wz$Ph>KF~;kJi-lZ zZipDiGJ z3eOo8A`h!53!NS!4^b472recCat9hIkUF@5VM1hy)WK^IS@cN*xddyl!l=Rusj#lF zit>}6lVqj+loZWynW!vf3J<$G|0U9ZAd(c5{z?veE6S!l^0jrQ4 zP#`H_RT21HKnH1o3tXe(gz|&mD-k0r?H_ia!sVbqh|#eqL>SGBvZ%vD)X@Q_c?{1I z-w>Sf$WY)L0*w^d&~UQER|Ri^2|{EIKGu2-5&o+J!=B;o*%zg}JyYWDXn_8G{QX3^Y>UCs{WzNz|mkPqwT{VZRVz=O`_Ma0ByE zcuv7Kc*4Rf%APfPh>gN7ax^On7da}6LbPEa+EBQV(GwGJP7L7!{b;1X4!U7m$(j@x znKda8B^`Tu*ftH!?FQcO(ZptU%ifz*wgz@9%6~6H&lbcEMfsZCvlKRJaVcXI`%MS? zTHe6E3x&%_&#qr6`y|00SY9YBj|z*5X4rvHn3f7#N@1yiB?J6#-yQisXle&OJ`dFM z;HSWO?*bb@f#aP<3al(TrNFW7O%QL?q`;m>Z=CcT21k5OuoVhhM`c?V3NcXOi1+rm zvncF03UqL&yTF-FqX?Yk?qL3?N&|;GYof#%PflUaZuG$>Q(;+Q6@hyvENn6rz7qIQ zIM%(yNEG&)26u42vnB-&b2kup2ps0_VCB&^OMEt9O$wZh;oy4#$Hm%1VeM2{d$huq zMr9F*A}WirgpwZ4c}|!D=e!#@=Q&*pT#|5b^m`Qo3MU0_j&M>SL^^ocQsBK44&Fp* zZBf{D35D3G5L;L&EX$&WuLZsmd@S%1-wM3MjU57~I~|&1ya6e&APRdadrb=5Inl)4 z(pH5#INIRnbvh~V7}2pWv0jDyBN}6iLSa9sutEyE7eZl=s4z_^Jf&eR6z&gr%l~yG z{>N^&>hj-6D)#FCQqryJ+yA|!QiYi9!0~NKVW%M-L_>kaQP=_G8U2O{eSrL>-c}8e#MG$ETTAnsll^o4f3zn4*3WZ>m&O0{YvMos3opk1H7n-t zu8Dv2tDOI3@$apP|IXmW_&>5@{{MmvK?pBAKjROXTUFz4_oDnQ_b-kA1jA-(rV(ZD zuWuG)%=}J&VTt0w+GJt>HZz`Up4>EPjUV_hw=G8x?=vn zyk`E*&wjA^|KghYPyX7A^MCz{`Cr2{HWMD>TYu(%Jm&wtTXxyMbU%e=tKvUD<@}SS z`~Mr!Dfch;|D$W>zZib7`9HE|{@zc&IRD31%>O046l^AqfAAkUe@9-}x&Dm*7tnuI z{F_70pRW(Q|GsI({QnFu#Z~jq{xjzvyyX3Nj{d9W-;Mcev3{HX<16O>+iT|Ud>A(t z{=97dzqw}qlb>b$%kzKBiuvt-+p#kK`2V?Hav8oB`~ zSIvL<_ZfeEX?}Z^X8(-;Pr_Ig|Mkys{+Gr7<7?u-`3IbTIsWflG5@1A&)@Lha{l>u zFz)<&u0Q!F);xb#|B&;0(u2l!{l6Q3W&e!-N8zoCe{jwD>!@G;ll{~C9E8o(Oe4yx zf6V!F9-IG@_$<|KHcdKaTm&ZE;I~vVU5?wkH1Tm_OHV^M49|W&fQ2(`)A6{SC(7 z+s>I-X8&~WubKbOKVkg+rTg!DSIqy3HSX(Cg&gLg3;Ih2v+|K{a3|*^=~-82Zw(4{;?nFvVX?k zdUN&sy+856=6@6YSI$3qasKaLG5-b@v}*tF`~>G8Smn~6Tz^_0g0XV`U*!C?XlU{O z0RGDU8UGKhdH&DZ5&ui(Z?1d(SImz~^}_sLzz-#>;@{ch{Fg7uKU?U(D*ija#Q2w= z|Ie+M|1)dmf92;s*!&OH%-{Q!7w7+x74vW5{cQ2aV+zGTSC^cB2m8DHC$C?6^G~wB z9FtY;Kd}GjKbZQW&b~mW~M6uip3x~Z#usj{gbo2ivB zZ{T3SpIZEX|L9hg&i~7(ST+Ckzvuk<|5>!>w}roS{{I0Zj`*Cy%agywmg8TeZEJiT LLuUUw(fa=Z4rAFk diff --git a/support/ebpf/tracer.ebpf.arm64 b/support/ebpf/tracer.ebpf.arm64 index a964f079dac303e712fe9ae006ca8474518a95a5..b3025408ed6775df4cc3caf94e88eea962625c3a 100644 GIT binary patch literal 844632 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 *=p_Q*T%Vq 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 literal 811152 zcmeFa4V+v@btigTQcD&AM%c6^4>7v37+W?H2t%+UkYig0Y!;pr?1_{QGV1AR&9rAU zJ=5Kznd{DrCEI}U<^y9uS}#d7Bgr2GB}&4J9iBt$C9o*_gG9+DyUwoje##5G>&KF} z3Y%=4V59f{pHp?KZcpDCjWIA{@BK+rU3Kf$$EkBpojP^u)IINd-@BLOa)Etv!9NBr zW>bS;)%#utFM(JyKrpB?Za&Br4tgI`ns?epkpnh!$!8D+56=-2Fh@pIX=$;=4*c9BX=T zDcwH0m+94ZxZLuto0ET#ut3Q5~(SbgubG-a^vRuhOF*<3-FKV3aXIiEH1%Xqm zt-TyiR&K{Lx^ES;2Y$ZC&A2Z!`Nj|yf-9LV;CTFuHy&x@SjhFp<5ZsFIDIT0r&4vG z%(D8>v8D%?zGA7t^veEnpAVN>xrmVlTpB~=1YAbSCcO$cb{fBT7cE@sk9@r2_z@m& zMA;S|`QS!r_xQnetTHGbdtAS}MWVr*FV%1mxkCJ$G-32nMeMF?_5B(Wi}w_Z8Y$$~ z$`9fNzyi1&lkyo4dqze|-A5!&xc1eGqs%;5t^*$q$LSlxVu|Su0IKQ1b##D`CO!8g z;9Bl0Rhd3e?yLB49V+)pt4b)yhb!B`{8JmlMrXLz&>rO%(S6!)AAc<0xDjQvKFN|C zd^_bM2DToSY%&hSw-{c*YI#At`=Ez+h1^ORC&H~dhe!W_mXR-9#z6Qr!+Q5u?E^nh`XAj2e0J>{m>3aysbgT9-JROE5By8p7acX@a!l!=Q#(n?ww*S=pKr?a zhvUM0O8;x{OX=SqhjjY?3+X@K*BhbCKNt?+YlrdJTdDc|UD$Z&xclw5p(BEiU;nti^I;qfKQ zf){^C>7NOu!J!h%iJsVOzS||=wbnBgbOStLzTq46dn=DHof(I3Q2B)OD3XE}csQRf z^Zj^jti-sLXPTEiBkdrZfo@Xg`SV>tpQ2O1a()!~cf5gL1wj)3!c#j;zUKBbQqK6n zklBLXoRKpjUy`o#BIRm7e+u)>3Z%2X)lx%xTzKAJu$^)y%O`{+@{Kk_BN-sYgTGYL=NtXYrrF4uXXkb9NX$9&sE zBbRQz7I^lI)Wh`3$b`%T<#5B!rZ-=YPF6(D!MX+b?&gPq3FU{4YB=H3O$d3HFo5_N z`gC(gqe{>QV-?Q(+P_Y4+KfDwPV&M3M9Vl&Yd_e|o`F#0YKqr>`?rRBbspPSM!jd^ zexW%PmI3(-bnM#SNaS~XyE?MJ%>3bK8T`P}eJsy^pbY+|?YDF@Uq389wT)Bm#O1DE ztkXVr{0g~erT-jvK6S5OAs7?WYG7b~zl!0ow7)i59!ZQ#kKunhT?wq7^ zR6^$K{)Xn8K?D!=2+x5ZwT-jjGb`#1)=Iwi_insDBkke)?U;|4nZwrXJ}dPweRMF~ z%k*k31f4qitwo{e3yNc7SVuVg2iQX9-&dv_>hOPJEL6H^kS-jYLC*r`YIQh)C+{v+ z6#g~RS2~_-L0z-qtnx#&(yT`ezg`1)k$kq1xk1-`_x>{=h5SpIKdI{AkWPoxXn>R5>R@Z5_5VSdmP z@Y925r7HY0ggoKX-JRtrSx<-c@|<}47L;k>*}h&&@2`=2fiFa&;qGSz#_T_ujdiTU zo4tEg{%M32@DYbMAj2a212&$(n>z9_o#k}wXMY9rgyWl?`WZEJ{Gz%U=V_J*`a%1w zy!0l-?L5%Ca$A5`K{T%8-RxHSjP`3ez8-Hb`lFtTm)uFo~=C+4Jx@%eiUn`2l?Y3Lub1H4mQ1ai7a`8 zmigY&PpSI_!6zT?FU-OB3W3s}g*V5U4E)aJyw4kJ-SEAFRb`C^5OXSSES#q!&=Vq-2Ww-H1;!( zq|$0rFXFc{Zt%|U_gwf^2>z86oYwDr@LTe}z1?m;_`ek%sGoyA?D22PGyFIlsE)Sb zO~`cRTaFGp;Y}yGr5oQ`Jjn-tEcK_iPv;Yh7j=)%+$wnP_)NI3Ec~ukDc$b#nQ&iG z|5Z@TPPCEmPlv%Y_HOv9Ni8m?0UX?CA8aV^jCOFK@@ z?w#_U?IH;_@7gW#Nwf!D1MY8?52G0^=fwJVNSyi>zHi>8-$#$?cdd`e>!8I+7>_M4 zn$~=4&Hjrmzstn!yf(Ph=rh{&Jkwep$ANS>;#^Ax9STC zmq8GiukWdqM|FONqSBw|V?AYQA|W?@r~01tXiq-4Puex#y0)d+f)*!tJhp$mIRKJz zGj7qe&Xajry%Ntfe&Vt}lJSP#P4NKZ`m?~p6PGDq^1=UjQOb$+2RkHR8hq{g%;MML z;{)37PW;a219pC~^Ma-S`f4*z6a~Bif7d{NL34Xy;FZ9@5A0({a18e8M<7_!luCs45t% zRuc0v)?pQ4W;JY+w6h zF`Z@m+R8U6GGzPOD);*H85behzP4LuW&7GX|GW9ww=+;VtkXQb4tV6&mD#>Fz>(1F zU6p`Owy#Y&Iv-^F+QgG=Upol0eQoHEvVHAXZq4?!bsjEe``YRIJEGa~<&JD$8{1?F z{cN_ct#p*_YiIk~*}itRuT6QIdctg9n~>1Q?YpZ!pYY+c`1Z51eQl0Qwy%AgtP`?* z?dJpz*}k^3pUd{O?fKbkUppUM?EBh>g}!~eJDzK5-=C-6ol~~8_baUUn>^Io4mL>F+Tr8+*?u1S3voa7-1gHhj`P|j z&t8G&v{^XMb6a}_*3-Z_ZKm@)w-1leYDf_?061W;>fk~6FumO1c}g?B(@fF*0t<(0 z5V!j&9EYDleBpMO?_{yDy|1P^RkbMZJc zW4-%}aa`>;-F~2Fj|uzDrz9WCP1m2OT&-m)(51%=6erlc-@$Ug&c?l59vYe2^>Cb4EKsXFOEaw ze1L}!^)WFjMKaD+IedUSg^*<-dE-mr4_D#a)&NUDNJfFj@{8!Gwm+KDc1OpwA18*? zPST$5BR?SEPOPDo)m(O8Kb+@#_M7K&N}gTvUUZD_rouOapE-DdUly5O3#;IZ4j!>R zcG$rA3I`9E_3dN+ayW)`M;{l;FR9tE_J|fP79Oy-llDiEp1X+loAVS~&njM_U;g<* z3!hy`KY)3sH+N-l0Odz@dromkzXQGzA6X9vzYx3~f9HZ@A%-LK)w_Q;uAf%z!`+{Y z<1nLZlsveF^@hN+G)zAt4sPM5O>}7xg#AUF!(KSt*5X?Sr<}CU=R3arv4yYe?|gW( z{H6ET*?E2!`}<9qIihhLSJDH=)1F7o2mg_v4OSqL_TtuFy?M~!!SUy0yqZ65_{!09 z8h^{&=Tm+E3yXq}+%MgX@t|jUE?`IU!RO^g^w^a2E1FWeiN*~bJ^Fz5*Vxrtd-pWH zTF9-F^2kT{)IEFOMzN-L=fWq?NVzNr=dpw@6vz57pPr7>`}&J=9t+1J6X&rIB}n0K zgy$k1KZ?tj^A?UD4TRPYNtl?gW4hW)`_zTg)y-&wweydT?UZ)6^J&XxCecsgUCW%G z;JE;>7CEoJ?AvPpk7yv{au4{hvT?+h2Im<^W(0vfFUWIDjCb9~uXKK7dC~Ol^Ne?` z<6r%b6fAm+ub5L$v-8t7N?3wcIglllT!EbTQAhA#7 z#%(X`z`uXv_9N_98$H-@dJN-)Zl33OaR_!HBnP}_4gTOMT=GQ;cR~0#i+r}6UEng5 zge^W4maWB?h|@U$9(!J-OU>ki*3Fteh+G^u@+HET@epy=&(P*iA17^?8y6?%ZUde8 z^Z2$N4x%c`*}}muSh=z z&l9fG$b^S*A)JZ-$$9w0crzFNzJ{+wo?%$`=G`LBmnG(17|=3LIi#Pb4*h(I^DZff zbVoUrcAN_vzfXanK+iyj|cz{3L&fjw}Ce-N{nsg4b2@ zp6%56>KWl9#Jf5a0(`km_^{*K8^M2>-iL#nKHtW1j%`dQy(iAM!4VYGhu~Ms$3K?K zbj$Q)f%1g592l;{@MPoH3v9+yt3=9TTr*fKRaIbJ3B8re3`^;=^5oji{Y z|0O-rtYAk$!{#08pM>N8(@0u4o}vMG()0lN;7);850Lry3>Ur0Wd-hY*|9sRla75)!;{Q0$1g#$)BAtqR#zTEs; z2Oo3%{d+AJafM{(K|4QMx_VO4BxoIE59oKMTf#L+zaQ|C2>wLlPYL{bb38p|Ll}m4Pzd5<2@8k3hYK3VZT407so=Cr;9c4SvSv(R{Hx{4%~pj&*Mv* z&p(9kiRyXrYUswFa3|hdJeUN0@Gr3PQtz_=B(oBL5%G%70T^exi;m|Mw+7`9X+$g9e{0Uiok$N3d|| zx#V}TN;uz@jyLSJ;>`fUVSjw9I)Cr2PQ0Xb4tEah_>w>UEaD5FAKr?u(&q=RcWR!V zI=!Fi`u!ese7O5*rE9da(ijST{XUMLikyLS^w_6x>%*5r&ge8RwCnfTzrymrCEE&| z+_o&B+(x+ag?~Pj`SQU>@dkLH+c)A5f(gUdsN7ensXsHz*M_e#{>_jHAPrj3Iq~T- z-xIENRdFJ9)pS1C!`E}H1Km8te2Y)Ne4+F5?(gEpFpHf6n!*n6T4#{jzd5+(#woE9rkOeO%U|eqZmda@32`vYt!k^FOEgTtD3Yg8H9x z?T4BtWM9?)oY($@|2a18Ie zr<9EMMG3@@2joTR8-rQ?=M4O0Q}Fn zekT3Txqc@7&$)gk{m*sir}&?nyPtFUpR@Bo!vEaztpO2emjAhEcZu-u?Q`bx2i8*b z6FU=@SGeTO{2YFwBnUP=Bn#LeWA3clbrACc`FAsU%KD9>!cjpZtEw3T)ozin@?(<`?7nR9rN^fQ;hi;$J7pSij5q7yz) zqhFrlI|6M&`G`|0?jZpkCZvzvPuXo2XLb%uf{L}gC2rHj#4eP`H zI^uh+7kmfWZ1owl_DKz&Xy5xt3q4u-T72u_v(mm!c$w5w-!1vl`}w&T?u5tU>*s~8`~S7{BfX#3%Q}AXj^~B; z^NM-&5i^S%Z!ff;ADstp*AQJjKI-)6i(?<@xeKDt`TX@o(|Z&SDppCK`Nzt$oPVeh zPRDzvpHh9X)AK=1ihYLDF`R4Rh8~tZaBYZv-cxb9r;kYNH%&nS!2D2iA>GZlBe8uo z?WMi>*63x!673J%e0!mGf&PAzop*@^5M!jRY>V0c6};e#uyDC+3yVpgM=*Jen|Xx! z^1+|Qe1-E$tk*?E`~-55k0&2|HO|MKE$ffXp8!4?nxe`+1@BfZDy!_7nM1*E3h<2`a0v`oTX>GbDJ> zo1Lc-3gNs#PF4uGN|}StW8IuQPxDGqWRP!gD*n#T(y(6x?)=Qd>>cRk zeiN28v~ps6zuAoToe)$MC-(R^)T_SK&|i@>x)SzbEHtHX8g$J4f?N(r(%{QKR1+ zY&$=*tL^;E4ITGwJ$um0q&&g{>QCrDpNjeS_wyW{rI(&d?D?6hv@@DA_x*fIqQTk^ zYiQ4Lly2Z`90bRg13>7L)q_rg-5^EQ>0ECy4}ztA+I_KGWV&7NAIG^Jes9ltL^VCH zWA86)r?WJE)f-$XYsjVTu#r3POYjOI4J{&k;dZWmDrXG*W*@}ZYOutdi`y7eWoqpgg zo98-b{YHFi;cd@*w)4Np?2}l#RPr;L{q*FX&~rOCvjsu$7}7Bua!!Nt9`kW#u;)YC zzc1)(+z(5_Agw$NR4}hP}OY`iu6^!XFX76G>er zKjrXe4c`rsK8ZNP=uw@&?7d5A<6!wqA@@;yrTRzZ18&_{gPiWm?M0kZXI|O^`1}*c zw1qh}!u>eM==dk@6O=i=I>37*JI!A__qg!+>rH5b<)8ULniSApoD+CEoO%8LU^;K< z*N#W;((UX@(0YRea!!E;<@Wpn&p#x_L)G1`9wU#iymKg`cj=ExL4J8Jww1?*Xl)o@ zuRJt8J_pP4h%miN-#n{4$~}Jj*uYNZQP1u7mksP)+B2)XZ?%_)26ifs@@t|zG_ZH6 z$~}I6|9Mt<=Q@_h^8(58&Y?U#_~e)OPqWGkI+nL)R(U~J?@~$=pew>the&?(ne#D} zGf20j8_FvduD1R`;El+A=3cWdHX2VmJ@TA9$EE$;Lf8G8KaKth=A2I_K1ln7B;Acx zSXzJo$oG}*D0H^AYrm}AV&_lGPwabpzQ~_<&jL?cI;V`HGy8q3AHVwo$J5&Fe@S@Q_s?#BOzNL)w|`FhLHfJ6?Dqds z+Wo(--ToJ(|Bf#@y~5(K+t+)}=eOI}e6Amkzkh%2_LX1TebDc}-Ts3fo&F%%?N_B= znccoy4`p`ykY_sF8*lYDTnAeDvp2KbH}}Uo{8`*~`;_|Ukb|w=J{QN#XZ9lt%isON zO2kVaX}>4_u*y|4l6?Vo`=6E%X4~x_dYSF^RZo#-$B+*`BJD_D|11u>{q*(?#rAXT z$i=JI+cD2N=tDms{T!L6pT8{hDro+jt{|AuIU;k(J(GH-5BL!LO7d4IFQ(u#`$L)#fjo-(1 z%E*_rj}GH}3HxZ|OWH@jF3y**k4C%`?mr7&eDm9d@s!!`1Y@My>$!u+{1*X zlauUs){n^S^C;Q<8WvsvhmIp-ysQ3 z&T{(_+5H+gH?u6eUqdmb9dC4>mUyG~0PcJjwr@h_&hFR9?$_WxVRpX;l6S)i*^avlsJskp`!yi%;^HWu|A+g^VrN^cl;C&H$qm(T zL=LM}hbP8-|2+0yF5DLi`&->_D;~X2yYuXR4RVS?F1uf2ao9s%s2z27zXtKv`rB-~ z7dE?J1F+#f6Hh(BTt#do@iV($143f*{8)Cs2JynliP`-c7uP(H-LGNoS9lUQwxgOM zR;%CMPk{fmp9^C?Sufr-B)l=ZUqiqp@FQHZ`!y6EjxT2SYb*}F_?*ydC;PRee}(LR z4a*m=0xDa(KI>1t{T}7)ehqtmM(=mX?$=1STTY&%d8b&i`Sh6GuK~FOi!Z98v->r4 z9;JT*KH2>mPs#j6dDPzTklnALaysSC?0yX)6VEOfN*ZHOQgFP9wWt1NTE@_iJSLYrr1|4%3IAi|l?4y}!g?4`%mk zP@j5;;%(}=KzDvMyI%w1UYW4!8!8ul`;W@#{vy*yDg(H;X&!lSnmN@j%<92-lc~K2 z#_ki)UihW?7rgrd$1}TMgX2JXA)FYUQ^^V`SSMP&DDEDpPf3)Np{_iGS`?YhC87j^zc7RPvA zn4JsnYv5z=39{#)>Z`vp$nMKw`%YSB{00$*NS`!eA@?vm%40oX%Hv-AsJ&CAWb?MPpWa!Z$gaS6+hrgdDKmn$MP_djmx zKVrfS%!YP^5|;L#7CE!I|0(nSqzMn3@PG-YOgLu3QxXpEKPB~+_CGCQb3e8GXwUvF z5;pgr*7t8$hl$PWw0)(k<#o_{NJH}LRrtw!kQs7Z8M1L9{(sqo<=}?|4usF!kXAB! z^VSR^cvj&1r{*{>QV8HM98a2m&lSL({ z-;;XM;7|I00)Tna&~s_OxsR1feLSVR7RVP+9-qRB*Gg#DS(g5f=ep*(k5%_&{Qk|2 zUoS{Ksr@tkunO+$U!QW5D>6MW(T{jxP0B)WLOLjkJ zFZPAqJkdY4SM;C_T=+QGJn>ePY0p6r9|_8Q@Hy=t#`&a&H@lEZlIhJo*-`%$y#_Dw zL`M|f(Gnr!pk?TxkHmc(X!_?{%+;lQT{oN|Ag}MXvsN=_gyMM(7amteUv+* z`7YOaAj+LIah)Hc+*yf}@9`PF+VI!Qbsk9{SH)-2;S|5?ep=wqcnH5c;EVBiAj&Kl zkFl-(I3YP?dVP$3rrkKzw}xX(FKrEb{Bim~xv1k>D|4S$%J0N4uEw`^eC&MQyj#bc z?c2k$&G*lOd4-HW_-QR~1`#~u<8#gTy}@0QFPhf*y=nN6o&QSR&(GpZ&(Fb^T81v! z?mYfmIm+^(!tyK8a^OpafAQYTTf{Tk$F%O%^tERE{rBYaVn6@a|B$a5{MvTC&O_WcAI=pKPcYiL9SK)WB2GV;fL|szuKPjPEGrzT?DNNU=k2$K zOb0nbe$#O+9yRcr<{M*&VdS;7i06Yp7mQ7B|GNeLuKiz&82q4TKJ1-Y<{}hh{ zU*TTAIBxWi5}(~qN1tu$j!yaMMf01#$0~6(tg<_u?_cOZww%MJ; z`P=MHB)wBVH>1p$AECYY2YK1Z&zLuO4{kpAJNZ7E)_u6ya#}B&hJ4?M>z4%c$Kk_L z!54@37b`w|UHWPD>>OwC2N~yW7;b-@w}yLVoQwO)m`5C5!(2$X<>&zY2Riwnk;w1H zxjM4HOmK#yUT)AE#32@pp4p$qw80j zeNK!I#c){KUmGpc?_HdZ`B>-QN*(ZV^ty9X3K;pCHp6M-` z&&oa1x0$$+d#0yMT;&`KXYyYT)f)T!U?TaOR7fsN`Pve76*-f;8~ z%OUkL)(sv#%q542P`W-&=ZkbW>H>uLhjkR>VaFds2xM#p(jl)qxK*KFWBOQ? z_Y^z0b)NU17kcRgryoWcEg}OR3oo{VOm^Y-bbnLInQy(@+9TPV|01(q%LhvYuZu-} zPr7E-(sgEhWM&D1XOVsr(wo<*T=y*D#(dpRYd>cY!84!!r#ILw`O?RQ))R{V+r!Pm zx5>Vn-a2`7Fx<;L)mjL-=9ILb<<+8aAJdCtV-l&P`~RNv*1a6j!zfg zK)fA(7fu&nVs&%y7kYugI_sFq=Z-#3$8fmw_FK0ykJ5*OzehI-Ib_t>UrkmTLq7b& zG2WyMJN5E@%)dUJP00Fppx8kA+;r9n{%=E>IL9dMZRJ@*lFn{KeBpY_AL8&}ygn}D z6RlJ}&vC$TNE!pHuXOYAo)W)njq`61tX-#JWaz(n`EGgNeD_WXCo#Vef7WR6ni+qK z2lZzm_apMd&6{pqDChAd#^qX{F53Jg$K!}}!T&l0B!67sPBLUUkdH90x^Zb(|G{c+ z8JE*$Z>eyfW(mo4E2lV17xuiV<$tb!SIBqlABlh1ThFOp#o-&w_R7rMfWKp(-XSg& znQr_d$L*{q{UXQdalh0ra-80&U(tY$S5z|N+M%CsLfy7sR{zqw@+ZW>dQ{YLMtc>H zhP1p3)o)TC0?^<*%=?6ISiZmMAQ&{BD5r?C?Vuu9l%uo)dE?-_P5w0!KXLF@iMR8S zPI3l6@a3~1AecX2w%J$4@N2WLjMLlfD>1)E%@rwE8*bJ&zF}EJ_LBG_W-o8U^czdzx6@Pvn zyj1ys{eIyFs;?buS&eNG(ckZ*1i&-5jzK(5*mslf*-vV5q3??0 zHSCW<4vqU=i?sfIePhtiICzAE)sSWOS4O$-9p}HhJRs@CdWiJHaXQpIvKFfjj)Jc^ zcvL4w2UyNV%u}7=5$^2-4^$t+BWkGK&RlT$G1OtUB9#TB0fJmZQw~%;&)s; z7Xqh8K{S5cJUl7zcKGAq(x`2^ksp*MY6(1{T^`dz0N961alqH3J3Ik+WqzgJtP@=J zioJoM!)cbB#E)wcw{XY@MQLyGpb|`U^t6muCwQFd2#K27e-a)(URXM#oZ{fP zMfw>%aZ37AJos7xM{h2a(Et97fg@)G-|j>4t6%b`!}E<&58q?|(ZGxQlMc_yBXy~? zK2pKCybkahDfYkI@bdd-;j+ru{&9q=S+-zWc(FA~S=HLcVZ(0cuH^mnZ79t8w!(=AU8aFGrkzU)ua*`w+93GJG7cU%4|E8sxqDQcN@=Zu`_%2Ir z*y%nm{qD_?i_S&Q6?xBoQwSaIzCRv+&X=XmawO)_Daq&aW!s)tqa4?s4@&uI@GsfN7->z}$d$)7PDm6-?A7V3BN6{aIe$Fv1~v%|~5y6P8d)qTL%1YU}~-N1(S zOU6sXS3C9pt!Sg`|28%m`vf|Emfv*Z$A545F@_@MGX>ezo@@Lltt@}sF@#(+U{s4v?kE#xbCs*y1_jbRK^DX6sX7^2!z6;;+NAtSdBpw;N zo@hqDyYf;M2%>3?UxV*g;eT}WImvJNLG-AWXUCEA8}kuQNJqU!e`&|7IIi^Ck`*xJ z4E7Fq0l9+mp>1zhQIciepgdybo9O6})Nji#i1v6cI(2k8f^vMiY=FUkbYVC*nOdxza85n?^i(24)BWHM-JV4Nj^A$(2kS+uGy{QR><8X z9628(@24TWLwq-B!k*>t2q5AGuza> z!w1!KMMpI~ogehccZ*ei>NHO$<)-&Y`v);-0$&pzU-_x?B4;AbFduwE@>zbL58fy7 zOplrAF*7|TWS`e4KPluU!BJE$Wmxy*^-PaRczibImzf?D^2o!)5+~;rf_{mo&o`MK zlK^t_?c;(^gjc4=W-y;U)^}Hrsrq_WJ zg6Z~g`XXxIeSMKz&%&%Pd>ebUW)9-CMw?#7kY_m1Ls2B{vU>CE7L<5rrL3; z-}O29&WDQ~ryk_Bx?@MNX#~=5dbBuc-xEo)CKS?XFe}s@f?YX1q_;b>p=!l+Qh>q!bg=qSm zq@Vb4{V;7{* z{+d(%#^truD}Tf`El!Zc^%_x>k}Hc z_|SZ>;zRQliXWs)j$`Q&#n0%t*3)J1+3H7$ALrWegLo?Y#Q5IgMKrxz`UiVJ!8bc@ zwtkC`$8&07l0F_?(r|(Q-Z9XL2RCbvy`O$e4#)6}>Dq%^CwwNywEeeqZQB*M)9jbS zkCoEXaXn{Z?-lFG{eJ#iaQHD^A1kq;NxO&5cNUfknYO3@g!St|c;a6$e1qCo*m;8K zq@3X!blw<5g!$|_S-W4~T>6Yu&|FXJi`n$kr{pdB@gd%G|CQmS33t335j;D7Lc?b1 zY^QQ!`iLG?I23a2_A+{|iQ}a9_>LZM?shLrhdZ+#pB^@bb+V8E$q9QZTq~q}S?pjJ zKCbIgW@Px8#ru{}p5xzaXAb{|SL?Vn2aW&FL&lHXwBl`Zwfa|Le#*lO=hHXhOSDJ+ z&gRo;cppW^uhUA^KXUv-lrw3k>% zHy%kpPs*P<(HZ%&rLTPO)6(wQ{ZYG0_6OpY7_HI0kUbC0^rSx{*Po<6BiEm#KO@(l zq(39qpIB}ae@5CLOONyQ%Z^vuc;-%A;rhk#vX7HHZxnbCzxdR>b1O-IMy_AQgg+zK zFOZRJI^Z}vAF=yC)N(h`7v1|>CTVIYc<~tKEgveW7QmT zS#Pjb^0nbX%s&gcS4eyKKIzBgl+?rYq#u)~;`F2+laq0J(vOLQbJCBAgLBf4iG#DX zV^cpS>2ThH9?pjIf5(ghKDS&KB-VaRF}fl zt%Ya%JeA&G6`0vy5`CMTNr>u1s*Mu&ciKa9Ei88wVQj1KpW z`Esh|Grh1^Lsx=mT*tfFy-M02P0jX$F&F(=f8$(Vvb@4dT1}zcha`Z%3lVP+S3HgV zVLU|Xm;Nv)^)vq(2~QlnM#A)QP{eh3=lGub!*Fm-`or+xnz(Pw!8LhaS@Eaxa47BR zG#`=wS$I|+(tO2Qn*WR2q#WDsh08VOTnmAWr+xid`BW(B(c@=CZsz)e5BV=4Tv+}s z@pn)L*G6u8vA^`+V^JG%AkkfHB) zber@`>hR0U550)PucY0w!!OJ4)oxkgUOc)}=&lofCGD1V9n?N9POdp6%TbkM1Nl$0(0=L3Zo*HQF~)hRzIocXy3=?(t!MFjEr9m=OL zZ`biVVCF9@MeY2h;~LLv_jIk}*H~Wx&$&+6;psD8Y~J()-<@9?JY>_O8HKm?6LICo zQ6V12`CuKY@B_W@&6S@p?-A!yJg)C)e;+b_OzlE;}Po(j6SQ&tY_^yJstnl5YY0sdUt<}kMs^T+`UKQ{C=c5 zC|1#BI6`lB?~c=BJwlm&<7U&vPT&>!*=1o`r?0x0_=$y=g@^5LKB!3l+TiEO)7Qu2O88y8{Pc=N-j7w%zD|5J zIWHKx0}+rvMAOg6JQvFcW?x|T`v2SCCaa0pWiuSj`PW;8V1wjauzsax^gY)ZyEHjrI)OYDT#Pk~COy~O7*MpU+ z1K>#Dm=>xTt$ zAm`n@xhG}Z=wDlAeaQ7UiWEO?EcE!2^@3+>&G$Ut%=+wk>DhSpzY{HkR*8Rcmib`~ zeZ01Oo%Ik-Dj)2Z@6!3u*QJldkFaL~a;1~YdPXKTvX-z>q(3Ri$8zfB!F^1J`~Q^j z4Uw*L!uYY-^N$@@?pWCVxN&_(>gmn(NxQ8aZsA@v@QTJ2U%E_u{NU@@q`=10`>S-$ z_aoK*kl#@K!{w)!Nyp~Gpg@Qy%vjDA1JNyT#;J!f(%CG5Lqzdz0j|{?fYM zpzSK&qG9Q}cj|kA2Jq9!oyDu{`?n?E8-5Y3)A!Bp4cd-_is&s{j?K4T^F`CAb-jxB zoR1v+e^9;{Kd1#3a@h326HO~T+WAa0qxfjo1Bhp`%!}}ST8Ez93{%1PTTXamkrJmw3#p}w^nzC{8a<79&;;cZ-1U zo;bZxt%gkBTdW~{cbp!>ckdX|cS^bsM>`KwzJwn>=_uhay06^mUDh9r0zOu+6wRod z$#p6#n>1mss)d5_8kjsD%SQ|F-(lknqZz{=?pr76g{9K|PH9;u)>ZTQk1EDd~%i$y%0`U%m+<2M{o@)tvoMlW;XGHpOK6AHXetbdi% zlQ!O#KI3(jS#K9|*UNVf556GfG0t0xe0?(QzkGc%{KD;L+sfFG@a5ZmWu?2Z68*wG z9*;B3BZU9pdXc1jJ5a8&oUsP)JvtockMY8jZ+&=KIe?non7*uii(MZZeF5xSI>BcZ z+NXRTOrG?W2ERh?iZ(bs8pCO%OgJgu<@d?^aOUn0;mmq1pYGH@&fHd?ZTm@ovHY&} zF+vXb5%&{>fhVmWRv!P-%1<*JprZ4!8-KTd-xy-QPR8Rg(q9zX84kxVer{arjfsAi z749u2_wQ5oi!XFs*P~3^Z%a?M|5i`X-hbNn3F}`p!42zPEBgTE8tnFXVJQSPs`;zQ3f6VZYGrShx-NH6``4JVZCMmMO8Xar1fz05ZJ+ z0Q&fd>=ZFs{ze}k?S2EYqx=r|DEvEpUVj_PwD+U7q-KwwTRv{!b{yC8QH#KRJ%(%Y zY*GA#v}Xbd1Mcq=dbV(3e|t8+MTF&%k=?+HryLwAqkCCGRpd>_?}id~y&d=+F04q% zkKZA`<6zkR-0=%=o~yS$4#?E$@$^O5Rb>H zO>vT4#$Ub)WY|F{~eo=x(`Y@`x_ugYv-L0Zh3+ESs(R~3$G6a z;z`r|LlA_4VFXj-}o-(T{{2dpPc2 zygmQ`=jsO~s(Ab{*i^1BoS(d&-JO%4{I>)@`Hak)hev;`KUqk^YNZYm+#YYzPGgH4 z(5@e9mD270dd=<+aeu~Nhj{s6-?S$#Cu!fbJ5Ep9H|aX0c=QE%@AF4r&uHP9$1RnF zOUuY@mj9Q`ew=SF#(Alou2>Gb=-H=b=Ml5>h$?4f=Mlkg;`NT%$H>kjlHJ6Qo3EUH z=UTk=_43%x%g!TWZaN44+limA0=&qFskhC}BLWCPb{>)QbaoywUEXV#V=N!C=i7R- z^N6v0nVm;ed8U}1M@;PJTRj!^6jrbA))m=#MEXbY^+DNrM5UwbJfeR;x3}+>xS!kU zLzDM&J3V5jbC=n9MC^;hkx@cF+tB?r*qOoZ&4X)p9x=X;Bs-7zR4ng!`Zwt7+`em4 zU+3u7%b%S`%+4c^x$29+7sTA>mKW#*KJ`cR+~g$c3laC%nP;J=;C_59DZj9n8Wx`8L7?{x9<9Fy>KPzsUd!U+!j9=SB&zSTx5{jM*FdsI41{nVezN@cRhmwqc z=Kth-opf)t{V!UA{#~;)+1{3TYy$qG%(EzwctFo&tcMlYdTl>S zhqQgInwCd=VvV*w`pc``2aeTDc4}XWsx7Z)B(F(r-8-*W>XCxofcfLRNg9*RRXX5mFI4SuX zL*dO$&(BdY922aqmddb)Jr(CicJ*5ZzU=!sy0fN!_uy_5`A7(wvZDn5=6#ShOZb6KG1L0Hx58*a4QHH+(=Wk)G zzgXwHa=0IU0$u;$uCB~;;mEMw{U2p~*}p2hzYKeLhVwEcZ^1(!&)_HKW~LJl zeLTB0>@PCCUZ$TIe;fv792()Bcf6Ewpx-7t4zR0}_7`w}Cm*((Pu-(~M(j6k1pa&- zo=l7kgv<*+vI#s1#~MN(VST9Tx9?_jkoim18qN(Vo<#RC1#q8Md8d<96uUy{0n}|-8cZOCFTcM!Pk5|iRl&mYvJ_zCX{L6ofoNSHa~K7@Ugf*Y)jqi zpRRu#zfIZ;yZ$B5AGrQ``4jv$DWA{Xzv9sYseCu7-Nx<(s6T-6a7w8wz2mi?YPwD|9G5V%A0;j%TsYW7(e!~zDFyi zyy;J99Q8|iH)}aN=mZK6+Z7^=+jH#0@%P%^4{7;tU~aVU=tuN@+};N?-qzmnqrV{O z)T=EE#4=^_VZpSY4;tPZ-;OgO%IuWy{0#B z*dRZ~XMR=6C;SvXzanu5zhBe$w*BUQD8fPNF>s0DF*B1a@94CacfHm-e)MRvykqLW znfDb)d2~vOXNQ5Gy)SvkYc;+3o=|>}4t^597EX`E-j^aTDBxHxA75U$es@w{7_4s% znFoF|anF?Flkk7Kk?G;y5zM=ePu_m3=BJ-je;%k8OCp!5{=o4`J0CY{Mfj~dDe#Qy zA&Uk+-!Jh_a%xh3SSk6_>Goe?MCi{|f?4vcqwf=vAsScw?9KhSlpBpJe)Z;dn0P2* zZ|?mPl7CQt(tL%s-IZ3ze;Ph8$o z9WU2zWe_nOmT`rO{K$4;^k(?PlGo^WmQUme1s~oD__&^>3x@tK90^tpx7ct&YFq z@|LaE`Y*WMq2#ys#P{Zi{phoSw?y#A;;}DBM@aYOf8OWJ{N;UPSU)*>9x8`*rZ%cRi8A5r_^Edf0M=y={^8yUDW@?+{|6pF?XPNjWfXb@!;hv}vhJ7J zbqp!k!r$Um57y)7e+YW36#Y~Cy;;LXzelH3b=cStTCm;L_s}{XKC5#;hC93xg zd^67}Q0nWtQ`1{)1fFf%!G!U&UMoSc3(SFt!1jSv1iZJ1598z;9ABnvT5r;sh^Olo z4Q;uWkEO#|D`dY1@TpJ#V~uSIKl=k4)xS!kQ3jp6afs=^UQUd|T=X9uQ~qlE*=c-e z(O}1A7l1%`?1I=#zPRI~+Rtd(l!Ny3y}ci~`N#pGBOjm1r+vDizN8&47fLslFX7yh z3_yE14v$stBz!3s`1~{kfY=M9Z}s76_1$CD+PwPix%esd-u6B`3rDtN8`3S^`tX^H zUM)W^7)@=OKBzdZ^ZCN*=jRBDRC_opuk7MDV`O`CD+K?GMfnW#b6$SPeinYUkH@$U z1HSvOlF#iInfYi&%UJ;`o^w7YG2-dHMD1v7}$Rmn$q^Qn9LLDf+C*=Vr_{`8FC zDa#qag%!*j7Q@7T5bmoGnPwChVfk_*=2hWy)duhLarB7mW6Lb3QRh9eZayxJ=sF$O zOk)0?e?EQ-%CLBo4}OP5#(Mf@x6&8x=aKd^-+KIShsR6ZH)<~@hHIdVbMfpWotwpH z=AxrQ@L_^670*-qox4xIbNJ-sn?CG&_%a!{SHnTz-E2J4dkPefI`QwMetVcj&BBj(Tyv^d?bN@EOMbgc;9bb+ zdf)ZO(K*Od;JOuz-ya{|>r5C8hE?plx%D8nxg_XVS;NyArb*I?z%FN42@EXUN} zX}^v0vE4^zJGhcbE5BE6ond*VJ+U179BRV4{~-Umb*Yb^q|Xbjryv#|T>o7r<#9Z@ z*dFfwqQH^yzTyDL*g+kozs^Z)HO5PLAghh3b#? zFk;t%5F%s1^R!~u@em?-F4V4r?GSq!`O4XI6mowT_n)uo-aJ;Ump3pC_kCUK<9BVN z@{^HzUt%8-d`jjw!qLZX$A7rLI5+>Xc;%1tNi)tqUgrb1Pfoynx7SxzZi*h?WB9`E zZxc3Y<5|ePj<4b0TK_vHj8)IGZ8{dGRw)_{P_Gf;yan%8eDH|+yKTYlPU|JC9fHN&JE_BWbV`Jj-~ zeX-_hwW~{Szm7l09rrZ?PS3^TULL83C=&O*7ePM`AL@;&@SAXi=?))YKlC2v$2IB` zJ{{72i0QO5^6_EF*mcs*$j1lT4>3ROj5@&u`#A9bm@Wsr6W>~RuwQ!+U-FW%a~H>kn2nYNCy{jl|~Ks{_{eT}xq+AFs6ajP%1_I9j~J3;y2 z9Wfpu8b40{x=rYY{o%9t>?o9u^1%nCeLkEypZn|jPU|-a?IiSsfi&Jh1?Kgz*l zFQT|vc<#peXxvYHhH-Xwi#1FrzTG0!5-b|`j@7VUbbJNs-2IY1%KOF6#CV0}f*8q# zq6hNiSKR;2{I~`>G0%(+^od+ss|;ej>*g6uN2; z#`fFUd6o;buMYt=m4km0VRoKH^_AIq7B!TL?Xt7;EJ7#aOR2?#-X5Fs6m`b4^DF`n z`^V{V^?VKGya+F|^DNnU7UGDn_uGuP)%#id(Cj?Rn8-8D>^w`5oo6YE9Z$Ho3VRNx zkN@8KHOS7hkZ%=o*?AT+rtCb6?qg@?S%RRGJz;j9h1`PtA}?Wfo+Svf^DN&>zi8(~ zer&g|YuCp+ed>n=PZz%5qXxou|J1ja$j-AYCOv+3o`ndWooC6;vt;L4po_D98M5;% zu^*f4Jj-1B_1SqA5s=IuCpTs1S-2mcooD%=U`D&VotDHz>^w_$o@GSNb5@5Z#{Bb{o%Qw?dVViE&%$|(`qb~Po$iI6%Q5F! z)Qzc}XW{wiQuhm@2c~{jCf#>EF-!r%3wu z({p3~xv;0uF8X(&Jty}Y*&nuxmREK^<&*f$r@cSE+)Y1=?d_lc9Qpr<;iho>d)23V z=e_?P<))qAZ})>b|9S8KjM8Se)4{p@9z4Yhv7eXo-p@(<*w5s7Z|7ekdEVPU2kxKu zJ`OP|IpJ5F4L-_be2Y6Y$ zb$%e;nrHszUAy)BX~xw4i2gR4-M4A_L6?5Ig#6t*XQlJTuV(iiNq=&M=5IcDK;n79 zO5i2@R*=qC;620ExaJ!~B*f226Bcs+Z7Cbpj+bt{FO?77zRKsdUVOi88|~;6zWjcF z>_2ncHha#V=@kqV3mL_|A5G(blFrEI1n+C3x`}CeFpZ*A6(jPTHG2P*NwtJy| z2Ma-nub_9t_k64$jQP)rTq*ep2YMbG_U&JA5ffk5;rQD3b5dzkWWE~>d*Cm{!D-6+ zH5jYL{;dfQ+;fK$v497D_;A`eQ6FMD&$q^K`jEmYx_>vY1pT>hr-Ys0=KIN>-~W@I zo2nc%{-5A?Ozs&2v%?Ssr6KjlX#I(>-Tve7<_I_?@DT5d`*<&t>p##y{XK+xVMlaQ z@QLMA!?6i|Qy&W9_w(^Mo&K$uPXA4||DF0t|CAO#^1;WXe(V33bjtP*Z_s{K?rpmt zZG*;1ANo=KN_8A#80@nkYjD2t7Q81Yk;&sXX)Gd z^IbvT9s1D@Iyu7AyhZ(46W{rit~)Gw?f5pgp4Iq=wLNPMf3p04my8Gb$@7x0xmEXH z)5l32St|Zbi61EJOMt()@fv9qL$(EGU%)>%Uc`5%4~GNrtKr7$ebuTs=Y!j)7+*V$ zSBP(011!Ofn?HZj4@-NyIlktf%Xt!bdZY_@2fjy(@%HZ>e!hw9BR+5I z`x_f84wm^2bclPR&IlY?4%|=oFr9w&eET3W7M5HieuenmtK_@CNcrxqc+2*$!PzU;w?3d`$nO}>2Y;OM-A24+zA&I4 zCgvv`^1dOe#i@-ph3(glrX(NSKw>FoSI{hkH=ehBrFUYoD@ zn9xyg5K2o(r!$65uSZII`yHMBp1_0i2q(v3j~+{Ie#LxwI;PXGQI>hM0mni9e4Jb# zIsOKEtgum|qr3;<<)=sXk8mI*=7V38{xt7;K>73CV-gk*;U%8RL-IOk-aRGhh1@<) zM?v(M##_=e_@P|G)VbjHdU;Q{@u_z^zx)H&5{_Sy^7)>8&G#eSGcpnKn+^Ml;9I98 zAIAs$Q08ZdFW^HCejyGTGymRN75-rz{OY(kkLguhu;=r$+i_1E(`);S7`G!*e&v(O zr&{;(4bHOw3?afv6L#WrZ^nCjUxbBk^N}GbuXPYF@pO%ANWW&^HuEl1`qpXsB>IJa zsd9ZZt$1tknDAo$LhyB&p?SY2ij_K9VvC1M@IcOzadYr@@K(K@hp+q8e`~E$x;+7J zz@KHQy|o8#mp>stChw7ZJRUbYfB5oKvBQ0DR?bfP+4z;%j~ka73qOySXBSfC?c(%d zX=h%%;mw85|19|yFFa@KM>@k(*Uwfi-9;=qp!}b3%FAp9Jepxl*O!NZU+w(S;-kF} zBzpXSz^8Y)&J%=FFTP*+`sjY;H$-wg?dzj_a1|&LBMhBjjkWLzSzQa6Iwa741dGqBaBl|)b$Z$!qYzPc3!meKp{uzMDwBBMgHD~ zdjWj@TpCipd!@a_TYdg)^J88Fyc}HKU#<p`X!()6aTVpUUs@ z!A(k*4W<7lG;{zI z5C7|xLGc$^9N~S%ivOMPo)}~C9{y0J+~_{-U#I-5On!y$=KyiQ|Dfh4pXK}J8UrtL zuVizLf!DOsC*e-l@J1Gw$}b8zu6lI6i+dM=Uyj~CaI^9Uy>BtSzpupi z?flQS-@<9UDAfqvvxD~B0rimNYiV$?>xpRkwiq8tv3`Ao8yQoG|C1){4gRIVu^nEI zY5$^w$}ige+D2EQ06gOFlknW4cx>U{Co==_S>a1OA%9yqU8)?Orf;+_2M^pGPMvLdOHRcg&v;2XH|istB-*fnL_FSG;@ju)cBhaR)9cWd1R^4=)k(4#`;0~Gnd}o@0T5~w(-xMSnc}7I_+cSl|t?f0uPJtb+2C`{PZ(_ ztz1vsJ5daWrTw+hGVs{-i+VZc=RK5uzjkg9MXy|h<22i^PI$Zy-}-!obe#`YN&9+M ztPY@-or8~RKG%<@m0w{zYru~reQpd&B(NPt!+0sB^WS zlH~06zlf57GY9z>^o8E+L0G!(oV2fH_}Q~azX|E~KEr3(9_H&d`-(G&;Gw>JF8yn7 zuvYT5;elsQbxzvD_uJvulbKbod?v*A zPR=i?$8X-I`w5d!y0YGMxT?VF@Xv$ifZhv=ZP;slcw(N|z`Dpke0U;V^j>wDCmcMf z=VyMjPu(`w4Y@k%f#7@SZBy&$_*bK=#`le~J6qU%|ZL=(AHl-Ts>y=V@uKtefrn z|4m4;^Fr^+tpO1zI;i8_H1{1wWOtEyz=R>^^T{1+`%)*XX-86+yrfS3KQT zRD_GhS4sM&B9wsgevO1Diq}Y(J`Rew4(}Y_89|X(F_#OwA3-at^B~=WR z4_ErxV|s0j_p+Gzs2(yY;h)#Sll;%ZvoansTTs0BG)2SU9z$Q$s}Rn;*pJ|2+im^P z`*1!Bf^F|N%jfrnK?@L4GUI!h9p!A^j&##~T zN~_y0a5K%px#s5u+yMF#=3}@zBeEl$ZH*Y_FR`tw=PWqHB;e6PT z^e-Q<*N%>PZ!%CTX!T37-1i>h=OpN!VPVNXo_{q$J3qhN`vANTT{H z@XJ0{f0LwduhyV{b@Rk%_?EXbe^}?eP;UOMmy0!~mxe;fD~=C%`xv;F$neo==1kIu zZ|@RK9}xIb9tP-w(mG?mg7G z2%HCwp!$Llbe2iJk}REQ>F-AVfe2UqILnO>B8j}@+!Pb%J3KEXG5chtb41H7qR zxBMtNYVdif!RLqM^I)yf=G+wr#gV{5mR4_+C=k@@Z8<}WuMe0Q<(ReQg@l^3XI z#J`}vdY*fq?o)_xT&efF5WM9VKAd3Y1-+`n<5(ZlH=5uN!1s{f;<~VeogB<*1n+hK z)8TPgvg>5(bsQe|kL~SaISts0&BY%`iS}MAi?>{l#>s> zE%<2Xfzlese@+m8$&~QqgU`qNth7t<^Zj}v-~SQk<9f=^_Zx|PdaoVp<@oveKAXt* z>slV@iH~c~<8eCi#ibvY^fY|v&3#zQL3zKKsOMMb{H`FlA)5o?o1HGL%Qi@6zdcS3J&ydEK*PD@Mlt3<8?3x2r(jW8Sbxx!K8m$$bhZPXk?y z{=0&GdpBQxr}WKv#*Uwx2fp?q+t%#GR*ozM9FV7PrJ^Y-FibMQ6E z$8>Cml$qXWR3J|umULgwa2N(;lZ*MQZV-v02&KkhO zmph^v?RR0hkbck-4h%R)s$XnIMqeBm{b6*Q=$D((O(xu8!p$b!V8YOZYfQMxgqN5w zFrn_FHzVB_Y(}~-*o<_at{LfmYBM_1&wdKL(V^ihRGwsi{r)tsF!YXe_Pcb&7e%0N zepDBp&FFDc?-3JjV6o_LC}Am5yF>Hnzq{gK%PJ z)YH>5YGyRkJ>4^!qW9WT@B@>01AfE`OB@Xn4<{iZPm{#XC|NtOS^u)!IEhKF?_T`7 zNiMs|CdBJxN$lA7|Np*o>YS>n>e2A9B~ta9o~k-^Uf<(<=R4my=R5lSV%0mMhm~Jz zAC=F6T~}}C=ShEBP)SGL$M6gBd)(ZkhqOJ^vCfuwAb#G6Z+2eDA4fih?|J-D30^^T z<=Wq9e~|OHTZ{#M8rD1Kv!BC{`^tE+o?G$z5>~}9!+rSSb1;62;$!?2#n0gC^AL)3 zrhV4#eSZ90Iav*`t*Y|F1MpLtuuGnmwo9t~I(EF=*Ap+c+<2UGmKo<5Jf-K^i7#Hn z6ZPbUyZPqy|ERTE%JbKELCnLxv`6AG-TC;X>1gHB8Zrs4EIGm!u;7)?Dh}qX&$jtR zhm|h&y!(o*R?5ylM9o=0=35E+1P=1!&3Iq_c;-)$DxV+O|9uvSvE$8J!_fH!%EyXX z&uHmt?Olt`PkzCCCEZzWd!t^*%hn^!U$6&hKO)jZViO)li3aw>aDzZ`1xBhbPC|uD?uDXijOP`DNU`?t2?fSE5TEtnfXnojQ zwV#SQ&q;#rjb>fT%rpA_9<$zM`dN98*N;P~q$mYXl{m;BQ8uyVOl`YZWPJn?Gx{ieXhcl8_p z>+$;(2I4s1QQnzfqoa1NO*;OL!*OhNhk1n)4eYCM^c=uIk>N0#L4Q?xR1X`x&GU=e z!)^OJ7w_euEfD9|{~zP}F@3x5i}Ab8haHXU<@tNRF(FqH`xP8~UVP5`#`z@oD>(Q( zJ3r)^h0o{-8Sv4bNBXN=`C6Pm;jovZ(dq@yIG>K?j#qEM`IHy#@5^}73y=44 z08VH3Ov35LaY;B8zN~#2)DtOhl5n0Lmuq3<-NG4t+ODg+NV9YjPc(ks}%O+=!Z5db0iC590korYt z-RENcOqx!tk63wD4*oWVOAuoIS-fH2uHeR{=3T{V72Ul{v zp@XZMSa0ayLch$e+N?Kpa3$9p=JWGfr1kYc$|=@M?ED^I)6QQGKD`8g*5tc`>qO@PF|*D%SVzKPc@oSKm8ww|tNFy$AN|yVdv1xqOTCz4H+y!}?brRJ+^zPUct8+2|SV*XTZvw$T^M!S4wC z{i|k|SZ}K1X4m-qi6g_ocH;U2p2~Z(_Zv7t=ZX({jLsgm=3Qp&rYWfJl*#`@V9tR%ZX!e4}T>2rqjFjp!;*8BhLz5UAu7j-+ALUv+suO z!r|X*FBr!={7;(ov-=vIJ^r{qY&Jx?48g%wvVF}oSxKzBO3Y_uwXZCB^hTt`x*g$* zg|dJf%O%2dC4!c3zy3qXC~w`Y9jBLrcMCnEvI<1v8RQaN^0q)@B`()*@2>IP`m;KB zE#FXo$Xj0B*W4=KyEhKVeIMW^pWPjA`{(2!VXepi0GVOMC|%>p|PT$CFGbwOtIp^wCHp2N?gcT$oDe{OCmqeUfZ zH_%U7=b8A5-$z=Zyywe{GbNqlH>a2AI(moKH`O6HC zKl|0UwcpR+^Q2wpy%Mi>o5pY7_ME2k`nTSC&07VZ`FPTKa(>^_7#6LP=10FjN&3lj z{FU^RnJ<^v60H7i`HK8;6~dR_k4TpX`s@5hK3s1SJXt3P`Y z`ziemaep_B0SeZo$~*Zf>8I57gGoQ7t{;RO!YM+9{cef*v!tI= zC$E!!N?m(O`YFwCPt;IsdrFUg%E2cE&ir=q$1&Wj^YPj)%7Mzgd^p}D?SbvP4mifW zac8Wj$$lb-cPwiQ3A64ea(K_`C$sv;DJ=Z_vZ=`B`q@J(8NhZ^`1w`bKr<-( z{DL12K|iB?Gz3}}RE>Azd2c+^Yag=RS6BG?Ro>#dDvMW+^a?+}iWmF89IThe!p|>f zmlw|)6n=gSKfjhQ3O~O(UqpGD-p@^a27g#LUHJJWztA64);t>Rdy1zrqvg)07Jhz# zoc-V@_<845`1uty#Q&=2>0{yNSMgxSSJt0y;pbQJvJ0b4ECUF}aOc3Y@bjzk*PdTg z4hlcN

    YiEByRA{}_dzU)b{sKfl9lA5r1w7waXGek_yw6LdbupGUBEmyN)mo!2f0 zg`Z#Ylhs!WKfk*EoAa23pI@~?pu1~b>vGDUNXe#{t!VZ~Sms9xpJwE&uFJ5xK`?`oqG{uj)rx{vfjCs`a~6`1y6~W7zK$etuPNEC+?3Ut&V+ zGT+1VbGcuw@bjzlF(;CqO1c$(etG_!8K)P1eq~=R`QqQEpWi!W9}(>_+(BslSJ?fy z-Mj9V@76Ee813JPx6j-wCG|JD@KFRZ9R3wT+$*R27Dn`H=PBcE{r>v<-tO+@N7wje ztgL!e^0DV%L4TC@W66i>2yD7;-<<9X<0fkFa{H)53AO$p+qb*@yYzG9`@b~*rtl95BYxaN7-cV!8?(7zGzrx%%n)^C) z56%4?b3e`8)$dPtHZbqTAM&j6hdgWiAD@~rWPOlUyM@e7SVWW4+Eb}!r` z`Ep%6qt-4o{*Y%MHsu{M_jLpVaD;NN%^E+*vyYkYkDB{IbKh_7bLQSO_oH$jpH)A< zwOMV4-C53JqWoFTexRJ|bbovIEaMOP!`QIN@J&sjNA1n>8vBjmI&|)UCmg)nec+T2 zd{6H?ec}F))j?3+K5?ESLx0FPPf7X5_+jC`$z$?|e6sO}e6r%n<`bQs=l}OMK&f); zeB7y5`j?##J%0TEzD{b$buo0QvHX4dpBM1*@K1Rt{(lV~x_#P?YqKwoA7Gr{BXs@V z`2%Jv&R@@J<$u0EVCBQ~K4*WPk^XJc@-UB&Dy2V(>BoAt`(AGTfFD!%z(?W_n8FcP z_Y$T1E_|h287%#V^c`tD#eU)rDc;emNPdg_#l6}12R`XJ&Hp;%AGrLCzTaZ}1Fv{i z-ebQr7aIS-r9&F;EbSkn(xc{G`;Dmdw7gR;@*2O;$l9=J8RTR#_DaBoUF#?+5fwK6@G+_QJ5fpZjXP``@|#l>JJO@DHs0Q$BrvRLUd1 zcpZQKfxjvon_vH}f`3>46V-37`v1*`^Pi-jad4if`}qHFfg=yjXw3Qt-Xi>X!utn4 z%jnhUKh!_)-wFKr{()~5xGkNnzGD0Ja_~$~{8dWdeVOpdUke<^t)Jl9G5QHM{G8%< z_zC`Dp>rzSTd#P6_zCv-Tm1xoTockoBKy^`W%? zT&oXR|G8Elvi@_=GWwA9pKJ6V+uo=ju`4_WKYx5&eMr|4y^jM-Tvm^2pJn{#8hxr9 z{F%VtziQ^h_Mhv~RsHAgQo3R|PP!hm|6CoW9=reC*9dxZ$F06T%B}n3p5Nh@)PL?L zwO&j4&!wJ66WuQSqrSF%k4XpplZwjrgZkdROV_KV^+w;1R+j(OWA_g_Cz(8uG>FD~Fu_{Fv75Y20S zsV-Q*u?fGppVIHPzi{wr2S|Nn4pF{e{%}dxEV!Z(rB_rlbj^U%_m6AGE!}(7UN(5j zfcnL)D!pUBxDCzM?+>&3KjI5jbMt(7;kz9tRaS2kc@iB!Ag&GOoc8E|GSudKbp9YZ zKrM#fuQc(`k@rXLd7HfF%V#ybSbfny_uwV*lY2)f_44% zY7eyaUcR0E&!rxD{j4p&9GtNP{$7=`*BozljBiW*%7R(w0ngjtt@b1Nd~~AuyS+~6 zUk=o7r{7Lr9RIKCFQ5E*4N8jrwB9epil2{O@}OeRZKE*2MY+pIyZ@Z|@;%P?2xB20 z!~yfQ^J?jNk>&e;{R+FoMSlIAe(_&Z{Qq+G|N5%}XFmV`q>Lxafy(3jcps5?R&E`y zeqyuaGuL@q`CJYr1&(|;_lh4^!dXYU@4X+{_euHr_4{;+Z;v;*ZN}5{Y}MNSZ9kc$ z!~2)u%L|WlI2Z3{$%a$=*|a>9`61wke93v<&*8_*sG}0jo~io^o!9dDf%5Z_)2Q9K zbrk#X9O73AUXTBpFNW5+_L~i-T^PqJfhvg#uwLr`t;Kl{gy*5BAoG!);f`cx^Y|2~#`F@nbXJ}B`;ZcR_D ztM%>I^!V=1=^JWd{hHQqUh`r9%=!^d@|%Uz*DE@`>Tkw}wqAp)&AD0#N7gtm>g@s- z>EFgdAS`uqbPD5ygK_;Pr}TWSk&$VfPjh!19=1DG#;=X9$NIQCf}WX?}WoMz2IDjI2O)w@Mfu>^`B(v*zQxm>3rWf*FRVD>Q$|chb)KZw)pi5 zQ6Yv;pyGbLu9;~}FnpvjiSu<8|J6GbaX!CUI{4#>g;}PA90eb6HM7DMyOO?Ow7~)pW~P2aJ9{EbvRb=>0;Y|Roc1Zmt_0TZx=s^JT1Qv zuhf*5kJrzzYPtUJ^5H!VB`UnUxBGrt=*)Vw0qwZQr))nyKDLF!RY_A1Q}`IGGrSY- z+~M=-vEt)gq_y~f-IiG`qQ9fpZ^iXxymsG__+8igACh;%pFB_3$%im;Zm^@b7a#K8 z$%o{5y1nV0b)KAUhe>@!>lxiaDA4XUJssCuL-fCc+wrN|kA5;{Ic>LbbO!j+eminbnWHnn7r6>FL9RNydF{I4 z+sZ2a3`mHQHX4T)e7ayPHfZANXTo^3PO3lkb zr)RuMsVmX2NzQKssxWo`h0j5VGiDez6km5vOX*EZugD*di)cBHw_Q*gCrO?z90X4$T39XO!e~RW4U*} z=!95)IrtK*-9wM~7oqowE(ctH@X!+QYRB#1b?vEB&zA3X(@%2Tw&XAT*9SroCX#)dRAD>>kh2FVe z_>$#jwcD)rnkApAEuAmA9{Er&tDUXyq`&GV+E4iHnd7K5yskZ~{*X70D+ja~^=fYi zj`Q~RM6Ud&-d+xLePlr7k&0(D2=sFkM3pPSecKYx* z8a(4qtq*HHUEfvT7cv~;72&FXM5bS^9?9oNGD%F=dF{u$XWuE3w)Nw*_CNJX2QqnF^_o@?Jd`))~R>23RysESCqtR1LQ`oAC{`F?}o#p<2idj}Lx817Ny zwCh1=2jsY}+jpyck6K#4Zr^TsF9+u`yW^Oz6t7wGHpy3iEc4>406)a%cNgvvuoj(j zPrL&4u(N$cI4qh~yxZ_-Uh(qCS$F97`8|TC*6C^x?$v*N(ez(TNWReV_ZG<~pWk04 z6?OW+ol+j-gRet=gg62p?~lW;pVEGsa96Jt3-Z^<_-TaGhBnEcck#sC*f)Q*mPDOcX)a25_q{v zzB{})J)GlTUk`WoC*e`dH@Z$CjhC$asUJA}{4=W_#B#u_r>>MFdkH5WyK-pFbmOBeJ?$~WpME)& zK=UgHekCjp- zU<=4^A5TewEIwen@cCeUI6A?|)v-4EZP$)EVKrpm*+C@Js8|8=^TF7>bvQ0vhv~iD~s`~0_hv(Eay$cpoeo{|2`IG5u?|Z=jQ{4$604lr!})IM*EGa<+2?3Nv|@`PS}t6{eyA1wO@o-K;h$O3KJ@f zKi3IU^JY2^1#~3FJ;!R-xEOg_{l&)`JSWs*;@ z{2*lFy;b@Ta_wb2+#uo2nf4yPyX!xgh6J34C0;(9|KVi<=gbmt z-gKP9Y5JjgVM~!ymXDM4{Gk*acg61_KfLkKEl^yU8|8@Ko}Au#?e(@jW$_W^esoy% z1>0`?c+{8dI-zc##;cUhmHJqFfcw5t!t?p?{}KCWx?S^K;c{~Ednsppcr86BS1ewl zBMO(rPdWGlfy3!@KNh^0`dku!PG9Q|tA1zkXZ1U)zeT41vfu6eV)U@-e-E5PRsmc$ z2%UQA$0s2k;Z?iWE14{)&Z|CLDZN7a*VX~;5PRkKs2SfR^=(lk%jQOqx!!RR{PSI}Q^)I&Hk$JZ{iJwJxYPgopx$`{$ zhFwN}eM5Xz{gd5et?%KuerTrB|IMMnc0K)>?U!kEp5kB}-|B}tzvcSZ_2Fcl@zeSt z&%^rl#vk)1Uag;>w4bmCN^1gYkSw>1d+jXamkjUQ_`d9Ql+-p+Ulxihtv6bD z^8AA>d_>b(`*eE!_#!`Hhz_uYwoLgcP2Pi#{$AobzCTg*lRu03*?=rJr-!i@Qo8c) zuj{SLJdxvjO!La5Y1oON*SdC(VUqNNm<~?ZCG7eK0$W0^m<_6}bTSAwlle!AUc;Zf~dPL3q)TMnN|`Qq^T z{h2?1TKL4DKc^ig4X>3G6|)~Iul<&Tw=cnW*B$5W%iv>P$lgO=+^__kX}g5ev%Wv` zuum$TGvMk6sB!ztorl%*$2t#N4o->b?DtpBKD&fnBGs?idBx4IR(n}F_}0IYLd8B4 z<@%s|=+CzuAM#^Z=w;XY75hwd-vyCU>@x|AeI~^|6Oj*2?@QaqoP00# znJivUR|#$x{N?M>4xcBcoy^!zJbOCrg=u)5olH!oxpwYipNZoKGETA2#L1VJR$t1u z119IgFIb{IA8+=}Ctjd^Q_~--eY4nSg7t#pH)Kxme(e4tihU+*SXuL6G}&1@e6i0Y z2#S3s$`4!*QtUH@!h(+4IMp zU82}$B77734||dJnHWD57SGmimcMW6?jGww+<7J!tz`Y&c_zBA*3aiBd*x&H#dL4e zdDp?!x-ZV2Pnuqj;^go@u{)Q3y^8y|w?DSiP(N?sNEQB2oLvjY%SOgnGw*8Qybjv)@ld;E|3 zn)uyIn$ph@|K}lmx#t6R@6z#jCHR(PoVO2PLEWNbM~Y4)5-#;?sx%RU&mw}IcDN8|Wo6YA%uI?=wg>(L+C%rO7X)HLEd`g{8kv9H<9 zGbR1r+%5Sp!pl5!)cw7dA2#FN@&n=K3X|p1u@amv9Fa#q+YZXXL5+96^3B3p)&}QZ zqg?!fzvMIM`|L2oyJtTm_vj$sdeQA1`Of;&ug`ejV=;ci&DPHw&lhlb2YrT^h;;Pv zj^lFHF`RVt@g5G`Ani;2RXe;V&&yG~XSF+e=vuggIXiqu1`ifKi>K~gPf7hNtEUAa z-FtV-d-wJ|a!=zex!-!@CkG84Q{fkMFS%9H6HmNqeSf0w*q_d(6Mc5Syq9HHIrs$O z5F6jMepeU!4H}gCweC4h^0V+|?E`++$e(0;JWtYn4(+-hPx*3km&S|fdsONv?FtQ$ zAL)O`Z*L$gmrey&j?Tb;kfVFtuIfWLU+dvGA2iQ8vYA( z8fDAGx)R&&E=O4wU$*^~%{dy;;b*1%!Ij#NM2D5`jmxaxwBOA3n|8kOn|681Z`%1O zziBKSm-U-w`N8_pNYY{B1-_rO?|_chzZ&UwKJqEcf6O=BLoZ{<*UI5}d6oUT*54yp zkMK6}tC*et$@2XD9O_@4-yvqnBCzLQ9QbsuZMahQyGKpRTSw<4{T-c?^v|U8(sI?% zC##*487)1Dp9}F`yI1My>l17bX}Fn=_^IH88(zKSX&K)KPx=2!#J_E~t$SY0WbkXE z@*|55Pi3}4L2ZxrcO$Fi&9nWH@F)2O-4^Vk#x4*wflZM#;5xKarm%$2K@l}`0(@$=m!oTojsxWeSv#mv)`a_quvhAqC$~u6@URxpNP~ zGw>;T+M$?Uo<6oDUuMZM`fn-+Pm15N>Vw*js}HOE&gUc5=bXHD{)gZtd*8g3sC&qf=(}L%Gyq+ZA9bQk= z{^4)_l^C+)w`jg8blL^EgFom4j|u{#gB<-hJt}%g>DfNJSz~zjBTofI73%A4QCtdrhhU0Y!pR9vVUHb}+AJecwzj3br9M~GpGJX{Y znOgs*S$w+|aje|2a*6cIG>GSmBvPi;Scye|EW^|(JBbLu_ zKD^+gfAyP!@8ZCV6yJFKq2mI_AHOL4$@ghEn)Uti(eEBJZH)2!0FN(btI{9NV1mf! zi}qd(p9q^6AFEu;;tTdHS$uIB!ZB~aB74+dzq|UMsB(hPIy*D3#rsw`UgR^Izdufc8{$!h`THkGa>j%55%}CBEVfxx# zre62+4fZn7je1$S9a0X0gx>k-YA0#6zC6Zsi~KpBo%ZKw_`@rw7u_r3J-oO5faTiq zt-r_i*;=0kqc=q6e3qmgF^O;DnNk&C3vQY3r}z(78V_##oA&2;qPAz9XOB+Sex2}I zJP;iV!-|I?!#CZFbUwxUVLx}Revde~!PPzcR@DQp*LfJ~apdoFV2AZDJ5N<9Js>!D za?#VnN7U~Y+(usPx7&$1wQs}yX`4|M`ytJoj&S$Oeg&yYQ>*V;P%nRU?x!@Syi!Wjz> z%N8S+p#tM`(Sd{%0;#e<&lk9ACP6ChMPBPt;%WzMOi#2IX0NQ$H%>y&P;6 zye|~<#DWLnvzRAFzo^5dVxHLORmD6p`hjAem?9e&=KG3y;vi`kcm3CkGT#*2%hj&f z%U*stC}Q;_+rJg_#KNeaeWREsCPwTy&Yt&V^`K&&I0#;pc3aF7;~cGGo|x^-&cAIy zyK{26m?x$j;yA4vdE!_O74yWL*P_4UM`OFk z@v)Amm?yUVChdypaSiQ-#XRv$!v2}nj~?r~wPK$5M4eYE=819ab1_f6s+cF{c*4yi zov7`(m?sX4dE(4{K*c<<-@cul{rfUc%t>TV-q`g8{=S{Zu&{&n4gaG3hd~Rv3?!(m zp5yd$P(8r^nD6hqPsbr<9g>FPdsUx!jxaCg8+G=`JpSZ5?sIbMIk;YfaVAHGpdaeG z2Y;O%>&5kCoKdj$D8JtK^{BV4$Dr)~Z8lcw{81JkoQpgyexgHKUwck3 z_jMjbZK4nJKlZJh`~@!SkbahwUp^kIOrDEJ*5iEq((R_#d3X;SerA(eSc!kQm`@A8 zbUyLAvOwus!THF%h%YQx20V@*o5NM%$9g!6^*xRb-o66tM|15iIsVG$#~(y_7T+wF zOS+bi$Ir6bxp>TlyY!%>W4XM1K4fdP{KD@eBhxr1+~H$eI9!!9^)Q8xu{y&$;m#e; z2OmEFm4lBnt9-hZJ}z>>)&DQ!cikuE%x3`Pl&vl8s~Vs zH@&mQ+g9Et?f;R~JD*OUiQytX+I=S~oF5W6DkYtFb#(h$3?KJn*F5^vqpM{f!UzPT z-#=7mIzoq?H|=O3gK!hPn0pqUW!-|5?C?!KxgK>{zFaH|9`p8nd=CA?pP)~3{d7NSmXG(r z(r4s5>vO~Ns*fsiz3TH+qCRKztWTx%&vCn9y-!@ZpnTfB{Z@e|+Dd59f6wck^QOOU z+6fWT-E^n6Q!)iE*KRJ7_k20(^ixJ`_vOo-C>)(;9G?H^w+o1!oeaNe$2jE36RzEb z@xE8|hrQc{50~u^C|{z(3YV2LaPw*28vhdsgDLS}MowI3%WvM>p;_u=|y*9JKTr4A!yOAbL>qiyl&WYVpu&X@LtA z3b@{&Vk8)Y)*0gcadTgDA-{qzOuh2yuW%8sx-Q(wK@3kq=Arv9ogAD712A0ARdnz1F=3XZqHJX`4^89N(bdT@yYANmA4;Q0!}v`JwD+yd^0a( zko9Yp&ysre7nXqYyRwhCETgVo?dV@p`;AXj{rl?zNA!^CXAd6|{0y!P1(E4?=lK3q z`R@4M`E7w(xzYFAvZJH=WL@^tIC(J;?cBpmC?9*tMfT9XoHz&X%Wuzbkp8Tfp7p1R z{!jhcMGtEK)2gym&mR$u2e@oMX8W&7K<_5K_(lzb#2fcV);xWDFUHMG+W`W7eH`ek zGyGEVyYKoTpl_PtKp)1{t{?LB@qs1fvl;KSPFMIML;o!Q8MZyGN0~l72+{KC(R=?j z^^reI(Bs$9v%_Xn?dJ`4#R0jus*2A@MmWbppBp7zK3}_itfT`Y>ps?}W4SQ|Ixw8{ z^67Lb9P=@J8jksV{cs@KN|h~`mVH*4bb{X<*Df;q(U?v-@Mg$8j;nk+ZN>ZY>GW5E z_g?MhD+xM%K;q})_ltr@CpS)1x%mqM$HHzP6;~u44QT(=ad1}p{EBEnQzx{T9D#vR#0KRVDZi&~uYfkQ~V3d8LhVZ-Yl=pHV zO)FP_wf5&q>3<CMxhsPf@Y6%NQo z+9&LKWwrwhXTEFO2glPPzV9>lg`bvW=->VrA;1IL9Uoeye&!? zRe$Mm^Um1=e*cnrS9!#8u0Z(X=KiJ9?@9jA!`kj_JEcCeAMqBCD_y^c&++B-!8;{C zC)fTWmIqLCAlKZu`nGya?Tg}9%+qJCv;FG!VPC#2N1yS>$yQ%EAGP)2IT`QeU|Qif z_JvkU;j?}-tbd}`+Ooh({6SO&t@BCEAlR3%l>D^&wLZ z@{w}xF!A4{_tt(>4qm04J4`vaNjdr&EHpJf;Rx}#UDc*w`wk6nebC?q^^vwAV75W~nV6M>fRwz8LT}KK4k1LhGqa%iIuVEKYQ&~EyuR6)&=@b{Ie#l^EI8t{~~&w zuZSZb2z&-lF?}yc;Y-cR!FG$U{uI8>Gx!3zB)^+Y`37EV@7f;2trcAOpvJTCo@?SS znEJ0m{UCn+{&T1f<3`FI{fJSqjQA@~*%11`~c>Dtx_!cYkD$lp8&$`olt1qRIH{ zDD$~P-#>&KS+^4GmVmr|HF`+lSUm5ZZ~ukZ3YlpY0|Q^bkG4*YFucBf__h~QZjl5& zT;veSS90$1_4v~ie@f0p`}=JFOMVZLe_5=d#~`;Z0K?#7I*}*+U@*Rezl3kEmDgaq zkw2DS23P;4)Fw#`vUj_YyN6L;QEmOiVC5tWAw{FL_MjTRZKV zGx-H{n%Da(;Mev$T#uFRcSt`$Ky}iuA;+p!nf8>`2)~@zl{wYY(K=D^?SqqhVOZBT6tspnM!F`3S>Tz z4`_!*F5o?0FNb-)q#Td^-ZXu9M-zT;^5JEBXTK!!+tkWV#@v`yE*smtwJ8%FL$M_#S z#o+CJZEwE+I?5&Mziy$yTsV%sRoZ3u9`pX$0eO!e*7UV2jK4Vwd0e%-OuM*W-&cV< zDF>2#sqKUHS}^=kIavi+tD582?yQ&Cubryjus3V@w!dwkW&GOBDLnRkn6w^af4&?`S`UvQSBgV-%Qin*$tljHgUps&+9~OZ{^@~0!Kcaeg8`MPJB2^FB3R^ z?q5ic1!G6CbSc*97whzkb^5yQrng_%Dw|KPzQum;eEib#uvn*0tT}zB5`0$P^Yqp< z{#?KLpro^Mt5~P+#&N|u{g+}tLa|Pt4bHdo9iqJr;~5ThDDRs173=hY1YE?2*gK%t zUytYKF`kzZL7rUX__kQ5UnR>0*airD)%Q#OsU6;~1Bte>M#*+ktkVZRJo`s)y=qMG z*NgAJ3flzjX>1_npjfA0tkW;n=@;wtMQmW*kXuj4kmJvuR;<%kKbC42Klc5=#X5cR zGxfe=oj&X?#X5bmgV>k6^&ePYtokVJCdE2^Z+!^bO|ecN?WS0#FLRKz8y4&Iu?D2a z{?z2Y!9N#!M7}+?Sf@{UOujm?{H**bt1aVcu9PU&=|3g%fqY)9)5rQ(v;Hn#$6c(` z4??t)Vx7KOw^^*y2RCrPQL#>+c<|>vigo(%CsM4_7dw5iPQO^EA3{FtgI>jZu}&XI zz-8C7*!AIdU3{@l|4FPY(D78UPM?_2%koRHPCw*b zOXwuj?EgKF8qDn&IkK)#0--K~GwU-EPkmTep2e=uUoeAAUVJF(-NKM57y+~I>6oae6Py=`Lw5_ zJ=@dACEt9$I$qk7!J{_+fcsc`%gHr8+fzQguatCbH#klJ?bzd=Z98uvvOs>E`{DTK zd)+?PqYkcp{FBfxx);t9XM#5R8ENB4@qde=^z9JqF?l>^b?jk)cFo=6m*)QyCbG7{DZQ40Db#`Yb1VjSkoUX{wl${B%SMT|BJlmUpJ6hXJ*bJ#jGhv*!SW*KUPg>h!r6s;{m^S%e3yfc+pl@jsvbgQWxVeJTIugGT=&e^Kv`+xfim zVXd0>^P%n0$2;3~8h;k=3uZhXJs1k#RF-`{skU3cJhuD1@+#tG339{G%lh+(=jAY7 z<<)AX{C%8l{CynM@7C|!OYiUFL>));wj&Of-Y$qFU-7bhRmN#9eE0nnQjm?mQRQ7@ z>+g!(qyIvZaQuz>PJdzu3Kq8FA1>?fi~S_ich6TpNV|}T@sf1gGO~RwQz70NX1>Mn zLH85JkJ2Zek#cQ)%fZh{Jzcv$-sq(LP?p?Gj`zy3za_$d;_8979OrO6s(d|9EUO$isxk@4He z(C?o{)`xY5!^{}@{nOs5kr{?h)amcd_1m^TLpO(fjQr1llN#p2Cz%7}?*r!uJhs1z z4nHRE-AxDPp=28zhCX_k+^yc4rT=B=qm|%Ql8$nO60v6d==uE_^~U`E zO!c_j{tWQ_7W(aSu$f{H^}Jll>s8MzeYX-^BI#Jqci?IH_1rA!d)4!|rJn1go@scU zzV%l^hvQf79+mnnEqB$gV(S2{jOee-c&K$i@npxFtpi)+d$;d2<;%|=)cb=^E-GgW z_{5G2Eq&R(n)vzjy9w{hr=RxMz3BHlLceFFf#lQg_odz^KK(wcbeLDVyutX7TJzIF zE{u~^zR@m#zu?@nOt_IN3nF152d{oi zBd~n;yK91>wOY?5^&t9ypgkIqp2sC%ZuWA&uyu*yxluBZDWfs|Daj!OD`KKYH8 z37_1TfTP#Y(!wjWev_YU-D(1VOrGyYor{^QF? zpT;xg0!dg2z9W>(YuDxAENRctVXe0>*KRWPVg^pma5s_GX9V}<*XI>lp44iwe`EOV zl<%#1#osQ(Pki1t6@?=j=0Pnq!&z7r$k@6q>#kTnc~UHGvg^aH;V_vj&&TNQ~7y!9gx*TOY= zkHghmDd!k4o%Mfd{T_F(R(TK|R{7YyOy$Hbl*976@7D3yIYVe(MR8K4iKP>V(UB2U^ZwjpK+jRds`AO#opObK=^XB_-9`&h>Y(-!&8^Wcf^1)Z)D|J=mfKEj84 zrS#SB^4`7esKoEy_L#XpDtBMb*m2Sp#3vn9pV0w2@uzz8fTp`25pZ!{t`{Fv0zJ^6 z92^vSMGxL8>8-zM+83S$ANlpLdNF4NTs^d7&!_j3QlBijF*%!*8+IOhc5eu~tE1zK zD>r^u>jU^mAJ&Wa%E|n%@4QF%KP>pz1w595?|y*iZ{AbB9zn-THrXy3&vUsv4|1Or- zkNNdvCymS1)5-1U*DfK5aFv6f6nsTXv_H%LRu8Pe;17|5^uMcee_rL*F67FLE2X<6 zobgGA>K*upYvF3WKd|z1-w94$5p-`f;~ap)bZI@|3vc?CC!gmJoEj;(u2OT z1U~Lg`Nuvn^u2QM^HT48`e}cBqSKG<W?X&FH(|kd`;fS*m6#FKK zCtuIq=-E}QJ%xHMuVUZCHG+p;>%p_|SL~ZuCwMznKC|;;#l8uhhZ+pHstxN&O*@nq z{Il!V28(?YiE~jXuZn#Wx-P%iH{r$~#l8unPkZ_i^{G7lsMt55lGd%O`1_a1IHK4$ zLCTWvy>%^E2Qw%1)o_0uOw$XG_tj$^jLtJNesUd*8_y=!!D#!d9zJ-CiV&8=E8~03> zo>T0b@a#?lJ@w{d-vs9;sWvVB>&}z? z)v(|75gUGZco&GFU7tI zQqNs({_%KUKVIycu=4_n~$#QG5B;GJ^ayf)I&c2I^Rn?s9##Ar|i6On=H0N_$J>!LO5{aHl{^5{Li`Z)?}w0GJId7 zv&Z^Xk@W-323^wxL-kqsS$IO=)^!3rp&$rGsvU$YeHflxCt&C@&zNezCS6F^H{#v; z-C8Ki=Xf1F;UR@;X1}Yiw{zcr{yZh674U-eys&*)=oRnZ(BR-x=I-bFi#hp%ltJyT z=LGKdUFwg-Pxo9-I#!_~Q1+su?n5U$dm6(HR;z4$>#A>VQ7CGooj_vQQj9YQLOCzsMo|5)(Fa(K1-{xW_)KF+z;{l(?r zeNw+PJ^gn4%?$do9b0^|9gpD`;`g|@f63s7@Lz+l<@51&r0T)P$d~2E`5uwz;s=54 zW1*_=Nxx*^L+}AU3oRIfevAN$@C7}prQxUtzs=~2+MCnkelw;k^K1A0ZTvnB0aNq* zJV6YFj8mVU#yJd6OFZ)ZNLYtw7lcpJucnhnBRGhJ;bFTDzE}GX-{GMX!_6@S8y&D(AB0g}y=#Ec6v8j|zQ-#ua1wJ!;Eq?3a?`XMs_Ai2`xbf+($Dc{}r@SkG+d18)!9(A0}?;#G-sd;`qr$*`_6Z5>7 zt~b8$&dI6y;zAle*RnpS-pQ@w|=+wg2?!-e%^FYv<8*c>L0%P zksLZSFO-67d))W)5fXhw>(f1`_cg2Zz6#MumxTlRZs}v~D~?WTH#&AYRU|{w0c1(g zh36ajbg6axbB&xGs@fhOVkYg*^o&mzk6t*x)AgfCdTBrE>+{wwO$_<)(XNrEm(}kr zpVjR6?|#-u_tjIsOY^THOd?LOUy#dlf@$NT;yhPTlUoA&%#<~M~2Rc1aN($47gp(_UT z+`-z7lcPS|vsb9yU~($NxloTuzCJ%#{rp@HUe;qL-fMk_G`@I-r`~^*lrJ(zYyJL9Y^1RAbdwH(i67WzG*mFv(pJ2-4)xdXrj)<{aGyI7f!|#-O zm4mAZRu6mf|BCC+c*mdp!q9P^wM+7O(thz50!KdIKK?R+^OqD3_^o0W5Y6wGchVi~ z{awo^V|WkoeV@5kO6Lf_M(wAE5gbHw&+0vTM(+7|OZNk=eQyfc4|wC9e)ix&us$4Z z`t2LRGN}=^o0yMqa?Q5yW^EJffBEhEb;#5DnO&e@Vd%tV{j3u& zM8qTK=su==IRCrghu`PIHy}k25FEdMnhvK%89oZQeY+&&naDNBH~6J@a;+XVB^>9F zC+0~k+;DpjJtiOSbtr4$4wmTPw{jhJc$Gh!no55NiKC!@G_UQRdcYQ@GwGR5{ejc# zOfPxxcapD@@6LYTsn2z4p8XbJO*5~sHU&HFQ&JD&4`9_LygAkI@#OXUkn;{tqcG?) zejSG2EdB^LT-lR9l5*hB6fgJg(RKpnAPYnfsGM%?F#4zQ`_{kmH&#;ew{BKG?_cq2 z`u=Wp1lM2s6?u;iDPFC8c+DGGW8{0I-WNWhclxJhd4nt23!}fF@W!;|Ma{D z;=O-@=S;eGwYR=LWFDRB81Ufm*6z$m+tu?E7PqUV@J3Fs^>%#qUs=t-p5t!Mhl|X) z0t;kHT)O}l#~r)CXKZoSUa0=h9o!4}&TGx9^&VZU_sVM3M_cdK{?GDhmj7wn&l8oF zj|XM;0{A!QVcBylcA@sH56`tAAZ5{xQC|eIzHvQQ(z`m+&l|ot{Z;bbt9*iD%WoXf zc5Bahu=!d(YwQp5PV_nQtk1sRC|0nZfE^-;oF$U=CFUx zZ-0=>B8S7bZ3e$MKDusZvc~wG2HUISqsggG$na|T_8m*Lzs8`}dlza&c(U{{lGyRn zwA8=#?lmkT=-#zk>i@jy{jiaj2PC_|(fcQa-j)t*N4%oLO5euiN^eVt*RIv}o!=f0 z$9Sg@_x0LI=&64D906ikRt<c5`((f8@OY2Z$FDCzeB?FfvWU39 zBYX@WEGb`6?u2;v)8RF6|o{&VzNkB*sjfZ1fTPp`>ZsN+eb%c9q9?NN-^^Ys$;w-(P2`BGWk zHhlO}^=GH7B*T}3GtrZ|{@0F2(|lQ3t?QOrr@vJ7IoZ_bbg57G-YrTGLnqr0w%)BB ze}C!D74Jp8TQ{rypnt`O^?irhOIkbC(Q4(Sbp$Vn4k>*X>08_6Gw^VsJmj~l*UI?(wl+<&fYtOKy_G<8~Lfk53ES(GjIbtfyLh3bmk*oiEV>tDjZPc&fGI9Qn}Q zbcOQs4%K6={#HHDq`O-0Yu4($+joP+&!>m+{{|+8I0~66J-(X2z>DD!TO+<43)`a& z35P)R3@7VcPoiP~zOd z&B%b^IQ|*-D@VWSp}kdxPmk9@rzhil!dM?3O6dKt-;YXs*g<^y4Vd!|8(6L!^7YBiRC6!$nrbK4-%SmN(g|~1 zn1B~@nepr4a6%4+Q!|3kb|X*!cl_GE_pfu|rtr6N2j>n+Jj)M_mN}2IbW-qb`t1il zft4^{spnBzJ*XUXg){8=mdSOH8$VcC$yC6f-sCw5Hhy?P)e>31O}-s}i#Zq4%(GDL zFyryJ=)4Q%8ROY`C_CQhe&T7#xqFA6+t@u{&tZ((YH!V=H#HwCw<^I>O6^9rNu*j$T>y<#^4}={~7X)H3j$$r53kJ}C$YSND3g zFGmk3zjt>TyYpd{Ym`?!f^_^MZTH=`sC{~HH8Q|8c*;t_JMFlK@ZLRJ^II_Ge3LE_xeM=8uc=;E!ev9#2-gce?+rl-fc!rr(NrNR|<9yg2aZ zX&VzW;3&5DbpyUUoZQzCdk6Zh_#9T|Gcr>T8NV|XV*L1olarXYWH{zGAx~U?wgUo) z;Y|p{Uh;4w;#fSEgZE0k7sI3dG3$Zt4FV6RO?`Maf#F#m#4_sPo)|yJ^RzeDvEEDhz1KXg50|A^ik_uM&T??EOnW)|%~gUACl4H4 zVRb~>`ER0m?17cQ1KZ!rgwQBO331#)4c#JnE|{Itzb; zb)mPOEAi6b9ld`5IVc{tVu1{wbsXjN8>knee@sn>Xtz&G`OI%R3Z=iVHk+82aeM-_ zh0JGfeJ}9o_++LTYP-NZkKdlrz6H-yQ{xFfvFkTxrrEyo`Gj(CF`qn3@Pp_SRaou( z9kCB|2@Jg1bJx3P@2)Za!Z80s&wRDsBkeYV?nSrC_wMxra;F`X<>up6$19HiJbXef zFn4TgxY)-h#+{-kQGWRNM7ZFsE#ozZ&ruMB`Jg=|#<8@=Gdyf0<>OAww@G-r-ji=H zLnMpOg-$%pe#5oTEI6Z%(l2ToI?pr5MDT`0M3*wZ8@E zmAt4=GQY~nVv-0Vfiws<9FXRRcjeQ~2bAHWDzzPczgX^3^&GiBa^NDl=hHzM*YTZ` zdwXObjpLuX*{8R++5tbf{s_%;h=ojnP(EHc@67P&Cg&ftJvM3~gEHrBDE}-z8`ThR zkonV3jPd>f)4p~AeBxzr#dQph*Ez-ek?xmZk#oJ)C02r)C1T#XmqsI$?{>Xi<&>{~ zi|ZX~V-wPz?K#P{+l`#@%I&$X%h0!S@*hb4t?HKrzJ*WAYw$qn_X6U9^eD5uvrKt- z-^TZ4uPgc)$v6+ra_}qi-O@ifE&=|}lg~kA#h1RrCx3q6M6yrfyiBQoemnSmk@3U> znbsf2P%k6w;Yf1c5_}&rT;;EmCs}--rLRykw)|cWel_kVnWw#6zxzmBKYly@=%D)q zvf$i+`Z_p2DR9K|;cU#fDlc?Cd|umOJRffIwf2j0@UCyOoVZ*zE?h6TTr;kW%Qg8f zd{px<2X{%i(Gk_lVmqKtqXY|EG+u1CJahlQG9)^5NbnTLKMjJ9;jw+QEAjIA`9b+k ze%Aig=@WD47?~IEzCJN-))6%&{Hd59r-nC$jNgU<(bvytCujHzvBzZb%jL*3y)PT* zNG}1e_IFl}9e?dZ>6rzu-#%==V*3T!9mvYuGefj;R3XXE{9%k1AkGIPA6P@46 z!BsIFFAQHlB>Cj?9jQm1=Ff$%h&Rs2J%9RKFZtz{m(&kWRC!PiC>>NEe17ziA!7cz z2I!-Ao}uFnmQxN6i=IUKuqD*aHui1Adj$3qXXpM*91rI3M7&=}#QT{z9>pA9+#h=vl}yuc3-}Iy*9pteH|TkmYiK`{?50rlMj^djDF{hb9#@jR1xZhXYyS+ z7+eCs{}Rg!#m8U9@5jgZqv|JLAoBvwxeQyknV%XvLkVZjCg`dj`2saKd9Ir)O&v?$HVb@ z$m{Te%kodLKgijMi~T{AC*KnOh>HC|y5AM+7_UgG^$Iy@@& z2NnB+WS>T{Kj;RrcRy0>4-z~?#r~jTe^9YMsMsIWV|}+je_0Ohla(^X{vg$}Xm7Ur z{9cD3JC5Z%FYSuUUyo7j5AyfX6#Ije&)hht*dIiUa9+FEAEbCF_6K1-L$N>0)WpyizFbgcd2RTM`r z!hWh^e-PYOOc9q;<1_H@b@WBjTZ;Wb#r_~|pK1SF#r`0k1MAi&dFSDM5BCQgo8Ft= zA4EA(Tm=RS3=|kBF!1~_FkG+h-4x;kuYvmX)`7vB;nH>*egmgwCP#w!+cno-{Z5<# z#`C{;Mi|crrjC=W-9bhb!Gi|M-2nIr2;XOFn(R1L+_^&j1@wZkf$ z9MZv|#X>+Yfb;<9qOA|DrEN?dbZB)uwAay2YdGJi5)})EV9C(e)nP z?$LD_j;ZI#ACq+7WTdlx-? z>8Cd8(W%ihnE%mH3@(!D0*y8W0s~m~);rUU8q+qViu!&dH*hPWO%ofL>P(_|i&K4- z=DSV4WH(Y9ZF&6Un$a;-(iV~6DNu_?Zt++y9?8XHyGRoom)q<^xVjDLHwRnw4I?i4 zoX9gyO(BEa*7MLZeHhh;IELgevIPZ9gFjUO?Q3*|Jd4U<)Nl`E6UGVlqirjajeZ+y zcBYlPQ1*DkFrD~%v8mD}!w)`d>SaRL_zY^+4Bu!#P_#lY_xGq3Ca5(^=eNQEhFKs* zK%q^f&~UXaVrxCy=a7EKx0p$U+_@QO{{bNk8HID7j;&OPtSMAzQL4$t@G$xs%87Qp zIt@XykK%o}J~6e=R`pnmAn!s7u`^v%j(`Nv;X%Dqwaf}(ySX1s3wZ}u><$$AAy1qufgCKW#GXG|3NYnK(C^jnRAUxY5-teGu z4xl;-J<}YicHm9CF)~!2MS1N|q}+h?AmPp%w?RaX@E4dMi4{&X_BJ|od{9A+(<&05 z+x1B*TAfaPZxa+B@d})-H>V&{HM(ScEz1o%Jo`wHu%|K1yaOp|h*=Gxj~g3<)?x%P z`f>(`S{K%@K0PfsEW{u=>3bvwYZIbC81-d6sYmW7r;klGZij?`5>ySxro!RIWOX_U zm;i59-;tIt$#Roy3iqd`XKkk4u`uW3$5q{r?+J%v&=+O&aN8_~ zo@Rgnu9IPcgaHFLOm*7LsZO>+E0H|;3&zP9fh0yp*Qty) zv;?v!&OwmxJRMMa3^E^nE>sj&5N2<40waU4e+CEcQa>DOqd9r6A}ldZF-cSOvxU2S zQ3!h%ubV>1dOId@RR|$h$M#Yj_fMc~9!uIkp&x4{#t37)6Jh#}*w~KzhhnELxrzwy~ zhvt1dhW^Xd?B%9TN}n^vY_EB^nqih7nGq$GFM45Hbi49`of8}Bz1ZjKeNS184@ebHhew#X3p1` zTr3H7ufpJS!HYTyDu$lL(37g!%hnDqqX5(2sm+9=PZ`6M?A)(MyBt8?&q$1`(#4wN_$ZXRA(6 zLm|~!t*aq>wl!!3hdpI)eR>Rix?0xy&)<0YT<}gmNX8nQ!rEwc8;x(YyDTb@Fq`QR z%pl1W%*|H^H(w3$XB5So%q)qj3|g2Ns9@9NNP!(#YC^@2+N_SDhsV4UEl6UhWI<7(DA2Skb*-NeACH{jA9#;lRZ)gH=1dlwx>_XKmubM>ifK{v-w|ad+}jo z9Yxufy%~&BZ?-QDw?Z?SX?8-`%Bol4)NPtJg+M|Vb`Uqgib|2c-l$SC;h8dg$pmS; zwx>Qa)P^Dj6RaAr)XXO=4I5>ny$2S;_PC8BOkD`{LZEANdYMja8ll;&Pfx77IM^y0 z-0(~TqW~-~m{5U@>Gml*>5Jw!Iu%^Q7?h|kl1LI!z9=yuF458xqYpE8ZreLPTh;I# zG-lCshvX1+9IsqMWl>(&%lL&+(5hLSh!>r~H3?jSlA~`XfP}<}OH0AEy;q-JCf_7o^0;KiU|73bhx^?gbe2E%|cCwjF(Rc)?; zBTz6C-*xpnuiX|VzrR81aUIvpgxB8^4<7BYO_Q2vDv`tNrDnJo7JY8n+1B% zb5@^%cTI%@Hw++sXL_nlP&iO#KbUSn^|^X&rZY7?GzPn8b)tQ#SwS+SAL^1QTqpTo z?6q8EuKL3|6LE;SThmzFFQc6?)y}ErhN;mFQlIr|+Yr9; zYi970<_}#ilgM_%l{}|D26;4=N1|@dOpZ@Z?VAjnd!YTuB7jtuexaJxhAV~tZEbtT zpK4AtCNWoG@SPdg5o^Ph8XprQNCh$5GhN*vawisZUCJt94Hk@zHjU*h@{JTvBXSCQ z2ldNxd5`VRBDCDebcZH^OLu8rG}ozxoIDuNPr@~rVZ-XCJy>Ftw74y+v1E3T>He>Z z*1hwl9q0l%DltNJAlkWya%KlRI10jza~so=Ara?N6*X}`l48uEfoSV>Yz?va=p8@D z5GQ@wNCSp!*d1@$LCNa+r+D7Ow@^w710s7(uQTMQ7qK%Phy=jx!?&?^(m;ZD&0qx^ zt*uiU%HdE(JQF*GGoTD9O@1+A<5sB5!toSFJd4_)$4Zp-H_r@n?72wTPb1u)A5Cx! zYfCJ*qrJmZ6Gl!4n&jH8ib{O9Ydg&sClMB9wr%Gv$y{7qp_9!N@lwSgBre9GX<3ay zN=Wb(Ls%tU{3&BT(E#iUEYgreUD^nBa$5+s*lJBAaoGtoa||Y}JI*^3JF|OX`J7$! zNjef~AYPk0cDwS6YIA%c*p_()hY$}KC58-#JJU00FJ3I)2sC>I^;{V%^UyQ&V7FY6 zJq66qFX0R@vsaO2=OnY&GBO@zd5W`>NsZPS*vK-;CsEAg?8Hd?O*PQB@3;;+2bDBf zbmqdhVYQ(7??nuE&@uIhjd>%7QnrZUsDs%*EUPwVCNMES-PRUe##@hQ*LF!{(MwpC zM0QcJaI-zy(5QG8I!hjLd5uY|ngC%@V_A$ncj=`RRa~EJ;$*J%)av3B6ytUS%P%Es zPPuO~>Lh2uROnIgX~oRqGCL&=tz6hi^gUf;lAmw5ju=L+d#A7_TZoXVVS;v2`TR*! zE1ki&noQ6=1dVKObsFoNu}n^kXS%d?2;KV-aV){bBB$@+BBx{8AaVV`O~KFoO({6X z#D46Dv3DB3zxjta`HGczgewhRC7vuD#;*ZC1$3szaK@qk5nMK&z99Z|vjV6}Hl z!emp~ZKYo9NA5ZK)ir-)0hwIc=Au-p`75G_??X(FF9ZqafGg#!6KUUX;l7C)*YF>ikTim-Oohg{rIu& zr0-Gueo)Ihl|C2s5f7+4eG6W!0jo)8J_CP3>$l?B()vd8yajP~;W@;8KYkPD`EESF z-#j0}^QZ7kT0e^4Ve|YLo`2IkAI0(uiQ zj$-V!qTfEH=!kOcwL+81>k7*wcw519FU*zX0R(<5Ro4ql#4qB0A%0u%BR(&}Z$Eyl z>pJ|7;-?-qgHtcTvtL);nU26zU5!h4hOe-Ez~_zl_gSs{YRUjUvs&cq&*6do9e5qZ z^P6$skKYq`#Whk7owfS=l_NWTd%L1 z=Pd~TOFZLR{TB0#*YavSv#cxl1sBV*X*ERKn=Om+&9#E(SDGtHk1av)cgP2IJ1Im2 z$`i^*USGuTQv9~yM|!*gzy0`;9z3Vv?u6sCEi~tB?YUmGS8sbNvzYq zLwKs*E3QVkxf1o;kH8BN;@8j8o%Ji@w*^1eZ!>=T@nikA;CB?iH)|bEy#~)V9UfO) zi+|hn+v@AgGvwt-JP~Rq!Ywbq&pd|+A2!ch@Z2!ZyYbvH&-?NG6Xy94o(bpmxF5yu zAf9naA9Wv|j|HA>NU$G2!eeFNFKIrf-heP4o_FBgToQw1K^X!2A9JmEr+rGbk(eog zm+dBwU%vqp#(I!vx8V0h{A~Lq?r+BLD1PQz@oxK+DvR|p*NPo@_+5jSAGM(-{=4wb z`t$nFhyyyu{P}hbUc{faKCI_W_#MUXFOha9?nKt#Xj!KY>MKKet+-Y137YsYzX#v9 z;I|aa)Dz4lC0QB-cp#j(Nq@?Jp^5lP^Gv*&OVaMbi-rGeJiHM2-^+{v|K*zDsqfQQ zhVojmTW(TbjAI{u^4=EwzKEa2aR$w$-b09E>-~-wSnn$GV!g*qy@&Ocp}bbq^`1+& zQGDNm-xBp+F=q0?ElIc4@dpVX!K+p!2oB)kh0tUVvj%KGs~Mi!&{u}?S}~#bT-eCp zTk!iLeoN709C2*DKlcLby%%}0-d{2Gp43-{@>C2u>I5vgzY0N z5WxI`f$dIxWhk!|KcV+ry8R@+Z^3UV*gj_R!7T;b3j0OE@4}mf?Mp8Zw*SDK0o&IN zY(J&14CS@r<9g49?GyOE1;3?W`=rSSw-js^5)Hox5p2k}ULb6rVwr&L?34KroXWAj z&yznR!BXByA)eDbc`w4Y;I|ZP#%_R^Y1rb9Nnk#R2o|=>P$z&Fm%ChD={}YQVBTq9 z`&oTuD6bWVF>S?HBZwp}bc7lHPM+ z`(=FJg5OfGJ!|Nrd04SZf%RWE#+ek22(QkVfcFu>^y6P|Y3H0=yS7}}Dw zO`Fg(2}xQyjQBK7lP1$N33-xE$_(77s8zXGyzp8Or3yk-#8FX;A_fI-71W9!R6(uE z)heL%`Zf28`u_jx#`@bu z=8U@CgM9F;`Iv$N;7{Gh@#obV*6_>b1{qeYhWj<}UxPQFUUO4295y$5(vZ2=!95B0 zKD=Z6X3gCS_gmmbeG-}B_uKeU*IB^t`;ZpTnor;ls^L%FC*k^l zhBf@Ex$95{ar$}qKf_}FvbkFg#;cCy{;H+@w7Efeu^s#Y{C#eI748_}{Qa%Do8h*n z?!UV$*Pg8qa@P?*th3|JvKR1c#gBFVHT>rBW1W8;zXklBNg|`p4EJ@Key#WsC%WhHWB6tK7VtY@IDHQ85T`!?{CW**_(O9)7gaC8eH{MY?*9as z?bwRn8{z+XypP~_8txeHdHmjH?z3?JDBNrCK9AoM=Dq;;FPZxZxPQ&u>{FjH_X6C% zXYNaIUo|)D@sH-d0{1O26f*y-_}yvlYjEFd?(1;hZ|*1IewDdd`CaCwjke3&YvJxU zH_r=yJ=}O2SQg!ABe4Y>h5L^r2sR~)zZUR}x!1w{X1MV*{4xG~i@M$JyX-pwufYEp zVbn8Flss(1mH4&d$9n%he)IUT4e!8j0l#-@UTeMpx2J=%?oaXOeOBh5nH!`M+vrcg z-`jA(+^vZ7dvKF}^Z5OpxzE5|kI3{ti{HKGJ_mP~xzEF0HunX%C*WR6ef|V-=kW{c z^CqOlv*s%Pg!TDLz;D&ChA)}>HWX8W`+MQ9K~eNW=5B>Q`7_3E9zWXg*hZ`adG&wb zeICD`M10n50l!b0`x4w&%zYW|ubP|fUiVCme--X^=Dr5^edfLn_kMFf3HLE`vohai zZt~c>%}pNrIdhZ8e#6``++Q$v32x`Tze1ij%X?o&K1*qjzd+ve_=WB9FG!1L&0pgW z(D0}3Z{hk+4Qu$axgiTybinO$fst23NPPwGR{S=={daiJ~?h&zk?hpAbJTTCZ6nVGVWWrtG{EUSVIo194*b@wdg?&2aBA zcPrf8<|chd;KqNc&uMdy0)D%>r{Mk(bI-wj(cJTJ|AD#Bz1LAzUrf;~#+!V!^k3;8%|1&I)b8tTw?)m2} zkA4Vlu8}Wb!1@T>G2M4Aj~3v*oAF)p#%9_f2re@V^R0@`Sms!+px!(eohN;eHO{#&EMeq%63< z7yh@ye;)4lz>TMYdl2Xb-B-L7e?AQNItkJ>zGpKZz)x8GX91?0@mt}~wkQ64J`Vr2 z2%i^7{$%=PbKW0u+14_CS^m6kcL8qruVUC|)j#@Uyb%=r4c;g_`d7TQr2v?d`7jL! zyXDWO1N%3Si0%diT@Wv{12e+&Eci1G6TQUTt#IFG?s>S|;ogTR3vlqmST?py(5L zllE8eCi2(t1}UOd&(Z#W2j15ZuodsW!Mh9Zzr}k9Z>~4a$NLE0oa??B??1%*19*QP?@!}>1@Aw_`yvFwKjHl` zyjR~IMZbvmJ$U~T-mk#><9K)A{mXbC!TS?9pT+w@ynhStZoK~x?-O``9`Co}eFg6y!26HzzKHjE$d1qB z{lj?wC*D7T_sh@^-;Z}c-XFmG1l~W2_jlv{LA*bR_lNNQ7~U7~{sP`VhWEeW{o{DQ z5CY{V@NUKX!+4kR{z<&2@utlC4!nN~?+@Yq1m2&;`={~#D&A*6tAE4$yYOCv4*%VF z--Y)S{2s*njd*wA&Af*2uHgM+$|H-VfvbCA_~0@6{0cZ@_ya z-rtP(Yd8pizg`3;q8mITcaT*awH`rC?e4m8d^ZbmtTao7% z;r4#{cW~orC?PG~o`3X$G%X{5byt!Yx4?fRBJp_<+*{1O4eo8`-Uasq<~{^B_j2*! zK8#j(!@tekkHC$m;a4eoIT;@8xtO z&>q3T^J#V8T>eMk|5?lb6-ZAv^C#{82i(*r`7r+$<}XNzS0?`jczxOOc@XjFM${D? z_x=@by_FYz9PU@cuNCpR??T*+i2gwSX~lqaE8KXfR&spuN6LE@Jc$DRpM!YBm1D#U z;oivvcsN#*_N@f;sbe~OB%d8YK1KczZT?7nZ_B&j`x2Bzlw-K5L$9>FKLvLqey#Xj z!jE?$&Erjdk5Lxz+p2Y2vkM-U48BoadkRQ-sF&395xmT9KM!hBf?|{F@eY?3^k?@0XL!A)23~AqibbLtr*I2ovMGxHb zc#{_I!EXV-Pa>^E$Dhx@jb}|C+~Ox-RCf@-mo%*5kh#6Q>+pA+{=?j@NVggj9s1AX z_X2Y-z+Hkn#ycpW?r>UIhVG2_0OGH}f4W&WkIK5SZCmkU-3Aaak2mYaJ*o?McOfmF zH4g!1x+A%~7?%(83VDX^dHfiD8NUVmPFh|MTVC+uQ}@k)=MaV_UJ=7hJ+92c@FY4H z0$mqlC!I%p(uV!|JIy^0_xHlR5B>{qzZ-7y$W^%Q5!x`_3jAJTo+#>8@JIB+i2nuv zKZ-Y=)kh46eE7TW*YKkj4ybMz?x&&-Auh)N{IcOPVz}hP&$cSAqcy_+OS^_YQX~8) zES&q4?WvoD`>C$$1j_sZaKUT!RDet6{{vj6QRd1+O1Bxq1+RpM7{2|ehM%%SUBtQU2s3ubvc7F=MC5I4siLeaQA(`;F!ol;^z;X zNqyf2U_|4te!Im9!&$~l&q>PFXDu91-G77osjlz$q0C<3g4gPI8ZLMxbz%4qyj#Qn zpMr3<-Je?cISXf9egN*Lx-RcQnZM1!A9Z=J;euCE7lvQ>h=%`=g#)VlVYr`aT+gG- z%ZAI37%q4vxH5e2FDR}buyEq~A-JDvTtA31#|@VYh6`Q^t_=U`rxn*9w{YV6lW;%P zxPBOA-tp^-%SQ|syb@d){v&^^;ZImNas64ie-r-HcR3gMbGSch;na6m!S4uue+7T) zB=h*$Bf1OB38K4*EeviXP0IWk0AEHryjK65<%uYD7vb*zqLvxMgJpiq!oAD|_Lb_S@UAV9M~1TR5_*`xUtV6pOuhQ5B2+1@473 zoL*A4>uU7igD6Sap8)W0n#bx-rfKUw1@}|U55I;ok6jfMSAW`Y!7IU);kW;ThV#3v z7Im*-J6d!GN}YW!O2Twmyx&A5#yglxH)`0sF;PVEPu8jZFIrvv{@qZWa zMwo69HG;`Xo)~{sMUEo6@5YZ$jNiR<;ED0uP6wVCzuk1;iSdKIQ=S-qRgF^rZ&q)K zGZeTV3EY!``&8h5EO38o;Qp?_eKv4o*pw&6-yc$^l>4KB`@@0zX9M>y25!!$_{8}A z1|4`}{C~9C|-wE88&5gXG-woWK z3*!7G$^t0-_L;yx!YLS0x!l&**Y;4kzw`C&<$;HK+soyMcV)~(yMmj|B3}0tO-F^7 zj>+{}W!y%ETdHt8(AZ2QAAFbXcz_CS`Owpn^`0>~>V0w~ntkAY9O%r`Bk`5`_$1Ca zcc{ z(C-R9#E)k0+m_}{I_UK*JXcCG55XvR;C{p}@rMR+%%NU*6TrB$Bbv~Y&T+f|&Wg9w zG7?Xoe2+uha6Ozy!zEtF%gJ3wk{3VnFHhizm=t1>_=tZR*C4n^ zfp;12wyBdEx+j_*d^8%Y;IO8d2=^tAjxmg>JNIagmGaQcT=~>iFTr8P>zqigREW}Z zPNKo7lguwcI|E1iCcEUGjUKuDtP-8{2A69(?5>JYoWW_AQHT>q^>4E~Cqi$(g`xu9 zJU&_0#7Vh19~_Z@li>F7pw0;AXn_vpnaOesITGzFXDzUkNZ+W`j1k$%o@guHQz-OJ zb9-ezw^~6#{#%=CC(4C|skSbXDjOE2+O|llY*?7;zC}`H!@^YeFOn)77N&anBB`=r zVX6lfNtF!?Q@vu5RN1gFRTaymjl4A*7N%N+HMVBMf>hfU;f-8am@3=;VCodZZP~Ce zB-{SkRN1gFRkr=Jsj^`>!Z7JFa*}?;^SAnjk4J;Eb39d(PC3xHXNn>^ni|BZUkvOO zhaI5CbLGl%ATkQ8@(X%-FHRZ8$z+k9JdE6q59dOq_sUgbDi$VYPl^LliDwK)foLc* zIR%Ck4~d>ijZ9Fahxy{l6UcT%lcRkFicaVejQD$;K_MuISN7VasLXq2m8Np^Q{TLNCFGxM}Ln37k%bgQm+va}q))k1bTMu{pj)9kAnsvcS>t6XnVA zV=TtQ=~bCMiUTBZ+)b75(5b|W10{5o%BixpF&u*vrvcBFk55H&IB8P->B5nd$EW1v zNnk4#)uXbale6P9V>qo4mnTBV%9(9Z1p}mxi#(n(k@6`J;c&r(hDFCbMvsimumZEw z6LK~`E~|*%1ce}TLSvaH74hhyf*?H*u^^!8_{f4dyyjNOEG(oEyeuWZ;4(Q?*7Fu4 zoQIg!(%n(->72PX;dWRBP?i>iafdXiq*$>ZL8dA^<=7grv^r3OPM z5I5^7T{7><%V@`PQS}@&T%>vw&6iD}K^S6*3A(tIIK&QpTrZ!>2b_3xa$@{+&0uAw zd?M-7M#fB-ai^eNMtiVQvlEE|P9G)7)ajJ==8Sj{UP64Q;P6mc4~8oTD$uc+Q`*X5 ztmGs(QI_;@H)>-Zhl&=iI*CT1kKxQeC~HH*5j0Be!0u2@a|rkF%*ZK=lEj>+PBMOy z)*aU45|BiI)@9zff@-WX{KjZ_3PM2x*y*Py$CYVNJ`dx>o|10C}yipC5qlPftDok8iXgpdq! zEnunwXFV*JG+1*@ROHh*$o*s+4&pyu8LNm|M|pt!Wg-w&Bpk9!BT$xSeWF9jX>u~N zDyQeHm4*MRe93j{N#0ji!Le(Qf#nWNJbL8ZN8bJx(dz(IVxEjPI59LVqMM#UnbJRV zeib>?O)4a5{ZuuwzTb<(B*Z6-K%T<{q&Ns|o`z`u8=0~*$|AU2sL`Dq9fz!N^`&5f z)0lDEz08D&vw$aYoL?G9y@0(J2c{+L;!X~g$=%{QN6{fK;z*z>M!y`bJtgN@W_(7c zLXaF7!g{TYPERz8S$)R_`f)RRS7-M=1AF%FErZks_4f7b zYBwEDslx-ZaT%wOfECKX*5DaGv5CkvQWPS%q}ug2@k58r49(-yU`e2joOydG`aA0| zG%|>JEO;v#pN^)tHRHDpzm}+-_kBvoYVYeS_w0}OI@sOU-nP4=ZC6*j!2JVlyZ4v7 z+Pn7+bd=i46CvZFjk|dvA{f^gcAu(bHYt)wV}aEcfhs zP5bVFa@(FgePQ@w>68vN5=zDzWB0+nzV_|`qg%cNGzt*zkQYck&|ZbZ>)ZQ!GBH8~ zSxzRkmYFYw(b^6UAfK-O^8WURstQpw`uBh${mLJG2X{Th7R=I3d>vWvPw#-zEALN} zpx~JX?6#&(ecH9{Q;*L6_Scqo_3U{lmsI@QyV?56qPZjmr9q9()upprS&NzF@;}fH zZrD@a)4sPjfVRzCNdKX>e9iknyUyL^y&8c?naMcM+s}(%l;?LmCM>0M%%SU z;GqM#05D=dvdrV@-T_+OZ3CT$(1W#G540a1DEEW;JA1k%%WSZUi9PLI18wD=gY2;f z+O*kf$Ls9wu8!v-22^HVR(dCL1Ufz4O0jI7eQn+Qv_9q^B4f=Nq8tYI5AksDT?F#7)XzV7y}1K>U6U@dFm5U2g^<<7p>s{gL!;Rn0h5BGw!?R(Ja zn2Yqg_Wn#|*~cKXdfWDqM|yiX>QG=?9@71LcZXj62Ow(8SwHr0m4YJV@Mll^;V@BK zTi@=E2ktN5w{2JF0EFIw-nM}=#hYfm7e|hi0Zp95=RnlTl&p>y( zj00IIV*bS0GBh9d@Nx&*sa-o)=snQWQ|@Z(GmhX2Lv?}Ti>3~lL;RFA`ggZ=W320F zJJ^plk%~*G3eDag8JMaQx1n>O!w7OhS7D{{UW|GN`;>l?4XAmrtG&NQsBklS8rva2 z0!my)SA)K(w{$>tf_Xu14#5jkBg_6eBYx>f&bo z)4YbLww5b{r!WmspFn%6sKNt_vfdu3iyfBp5VXOeQMcA-Jx{e{;fzjd36D=gwcjNd zFh|ogP(at&Ba1MZw6Mx!KFHYsewbc$=;}a09BS2E@W2eEAQW0TW|~>DDkfTjR(@ZA z6f8cNla6xfs1orO*pczcMBKE-)h_EUqTrmay#hpR20ERmiFd-enbYx-@YBbi8 zj%|zBux3{@q8uFtMbv9c=+(4^A)KEK4No@>*L)5gT zX^X@@dHm!|(`XdOr~xk%YQ|CC&94Hi>bqPvLptjL`{m*B;ghAt9BXWf8<}zglZ}nU zrS-}(8{)^{5y#M;5AK5w2FX;qi+IZE?Y+Uo59j0Kf}Fb~1FTHOXig^dXGbik;$D}r zV=RM$$}KnXMlu7C=B+qYhzeEEenS=Dh}0>HOtmnGqLr^~sSED70ZyTsk!gDs9}r zis0H9EXMMV+f&101XEt!pcQ136x|sFN)|Rwdd|O|&0mzYwbcXn$5yJYZKE9&pJ`l> zS}H^;-sn--DJ!-bF0~Iy3gl|x-Kb?Xv8043Y%S^Ll}@&7N}o~&!3{=}rBqxK##&lI zqbn<` zG=V8fj9f|eaFq}3Yj1E4Vp?QhkdE79G#fGzZmCnlRmLj?-rz%niRaMD1-w+WL-?p*_pTQ6?H*anYQx)8`m&#Y?lry?R^|Q+3e+ za)P^wY{I}ghG~lYE-vQ`Y6K-JO}zZ1`Bivr7sbS;(b^y~SxfB$h;{G1o^CzT#Orx@+i?lk)JYZvBfY41xS>~WQ|%QLlnsjpIZYW5lf7^PJu}UNd7%2bz*OAR3M4n%8yift4OJ zK(u=R!(_x7OA1UKl_)#nGW1wk9-EO#D7I>F0!b1iv6D$caqRoHL4rV4cD28H?ip`H zoq%28)B(u~r<6L`NkqkZWKq~C)S`2@Xv-v#MPfC5a{6>^(^-}r6T!_!iujm#n7OVFlxTCQ@Wd2i+kx@x8%oe+c2;G)gm z$1^clO0Cq^%sa?{xFu7~1&qAWX0$dxXG7LNcIVFc^Cs*hn+RAr6C`ik01t=*9$YGIe5j;LiAvunh%CfuP)HuGa{PJm?LovQk_S2~U! zEIBphGU8%Fc9qtvk{Jnu22OEiL+PNNV~5nxapUVF!5$eB*Hr&R@#~kBW>N|Z%^9sP zB!t!!LJ@*URZg*21z!>| zaadT>1Sy!EiD&0!K>|#X8Ji4g^Ew1VcyOXG*>5Jafzy0#mp8}5~xO zZeU*z?eKXEe1og^E}deZ&EB^D0k&vSkCf>kHsL`tFzq1_`uw8HmQ#GA zGV(W`)^XVVnLj0(%zd}L0g@(|F;}KwtO(!{z#Ke0t90s!SlgKtBR8CozHr|g@6nZP z4x?(F(2Y|?G&D41#-YPZ%qJ--qXN6~PQ=B8BXRXlaf)Cx;haXTHD>=#YoX>Kotui@ zC?1Vo4-tT3@#<=C+ncC-ly-$O+z3ts){QMF6}Mcl8im{?H_aX$JVxpdod~;d?Qw+7 znv^a^kJNUZ*h+3xo|+y4kwFx#a%^X_B&9yEHWt}hNT`s+$_H#jE~6nil#8P0Moo%u z`Q#?{qO?n4A*7ejw`!%ANu(9R{vsQbsm+5uO9VC$e=byF6s};xnPj*n!#cYj8o)jW z?g(t}9_V|BmPuwuvPf>QiYQ5HbCfQ$Z{CRlA7&bMSY4y51VN$}r45}>*I1T2Z&H0$o%g+UP$AP_$?(9PtvW^ zw$U8fIHo_q96oXS=us@#h($mQ5hE-?o6f?*Vqhr<1R1Rm%AohA2tbXsgtn3sB7@DG z`?|G+Y~PeZS#YD|pNg@B4RZd0iWp!7lZY+s!V;dyvD&Rpp~K{{7N~ln&$z_4uOnd2 zxL?X4Bj)oB7#Ao6WF*-v*=pCvls01!7V4)a|6E>5okh8LY0aH=hzQJDz+l^gA)CqA?U5PeAaYi81UH!L9T)aMRjs zgg}vxoUu3sX*5}}y0L(ye%pimd_>N2+g;kK&}+to{ZR#&s0OEDy?7LoEO%~A13$FK||wiDsMpkm68pc!ZGVQ)&dz@@^q z+R~k4FB+SaH`6{=WwjdVBh}^>=jc9oXG-5L=*}_SRWAo@s~n@hnNGZ2`Mi z|Nd0IS!CEz%>@gs+A^I2$Wc8Kxdddnn|>QU0qIXf&W2aTTeigfjxol6?A7s9_$+A* zqYHiXlYH7_z)y)t)Pj~wXnsz4)4B+Y%d14X7)bt2NK~T@Y7O{Fx;^cpXN2viBwnOe zd2Q>|*r2QZ)Viv*tN;sZ>?+={Cg$dUmR~efB{)}gO=?BKpcNDc%Gp4W%=^FtU_@}h zHnKv(g`xpMiOQ8COeaX+BteWRmq3ru(xGCjz}684m{r6@T+P^t%q*9W4^Is9!z9}> z>0r|qb8$#GI_w)JVT6fI2zyGJ4r@nI}g+NKu| zDhUZGzVJ1furyo7({U}{7tq-Hq7X1Ys4pDxm`0YQ6H_kcGg_E@mIqtvTO2Z*9wClK7Q#cT>&P`;(Kwrd(4 ztB$9r*=Lqb%qp7?BrJ9*z*8Ing4O}Sc4~bxywDl75I7i{{ey~5*qizNXQ{DdDF{Kq zu{m4lxq&*V4vu1!;ODa5VVR%My#xu8m_<{nY>Hut*eh#X{s~a;Ku5Y|5;G1In(ndI zymxweKpetrLhX>OQ2Ib%2p(G;WoE^yCOtC6B5fPXDig1$je~e39TxeHV}VJxwqsc7 z?Z>(uKZv0cBP*MUPkUGMj1o&^5_Z2LDHm3;`F$EIH^Zb#k{9N}nm_u7eJBv}gbWtgyFYl$SiQu36^KfESHcmg zSD*$bZ-@ zk#oV@!t(H?axSqe)msm7@j9JS=JQQB6|9 zZaau}?zzLm*fhos&fo}(sTnPUXn7gi^I15WIU5A`)?o{xEEZ~#;bRZRGn13?2$T>o zg;Pq0x%CAiS7ePfjxkI6;l5B7s|kZx+Ft^en0l06j{0S5n&QqXTAeX)mWZQhgVWg0 zECBaxTZ9VsF&`Tq8N^9KV9V6INakh8P{CG%O-|Y!VyXfa5}%ZDq_r`apgDt9#6IKz zug5(j)}8|{>_p%X?<=!Y&~I>RpL`=#z@^|-;j~ThuHL=nw(f_dbdrJjg!aWumk&1y zOyMNKSSyG=&rM5G8>E-Ktn=zXmCRu{juK;8h*SkB*xswv=$<5}7uEzN*fA^G*<{iK zr{q*v7i6}C+9p z+gYlvoTB$y^kKGbici8RUS@{ZyojPQ0}O%&>+WekjMFayja9Lb96*W3n$of}gn6^G zK3L5dMkewaeR6hYYIa6dT!<2KYr;C@d7MCECrMyl3d|%`qB#kq+y2-oSVE#u=V+$I zv2#Ot89RO)yE)AyJu?ZbIF`jEhAXeIk#=HmnyMg>w7$k__&0}W8m-A96UBSQoVa-> zOd`i?tZEUTwAEw>ly);JsPbvHCQmIFGOsSnm8kk@hVKEdc<6}eNL_nq~_^6uRm<$-A5{tMLi-Sd} zqFKa}MO=cFZ37x9x42tXjC9!>piVvmN(lum6Z1}yH;({)QE`NhdYCJuf+&(VB9?4W z&6lUURufWLX-RvfC&_-@v{NLNrD%JH-2xvM2=k>q^+0ELDI_Be4Vz-_oY{?I7kUoh z5QkmuUHw7VfV9&tp~;eZ*<97Xtmk_8HvEEOlgdh?Hpy9-Ry#2V1IgeMqbeK%1F))f zW8CnQN1l=iYHdq=!mKY^*BvoynnnHLG2-|Jt#VjhF;4K{9qbzl7UXNS^Y~G0*TfIdl60=-je(W!+M7-4HI%y2T!&0q#e1KYQ>YY}EzQi>gGX+*Uh*FJ4 zpY4n$B)<-HGo@I6-12Z{d5g1XGJMz%R7;U1F^? z+#*pcjQOFr03qTgLjw59vDQ6GT z)~1ynNhuJfRSBRukOfT{w3-D6gm{BH1EBh)qo`y-OdmK^@Dz=Vpb8&ilrSR@tCC_V zc8iJ=>9iCM+HtF-Qz!$_yVLHgXyla0MMqjyZM4&dz1XXvpXl0>T~w&23E$=$G zdp}MNlC{0`!%vs#M`fIhk3z-W`oOE=qv404Jd6eNb~&d-Fvlmy-egc8HQ?bfF*P}P zJvt{|G$@@w<=r6Tatb4We+KB|KqhBM>k6`^=ud^jq75SQoejeLHpNv95)Ky_2(k^b zJ3Zzw-iYA>6lqlQiaPPIlRBv<>v|)32#jPIHEh3Hnv&q-HBCq(V-QNpkVd*oN*tN< zB&vA06q$Nv_j8Qu0Y5&!u*FRGZQ5e4CGFC-xa>5XoMU;?S20W)+T0>TE7_)vI}IMR z9r;xM=?4YUQgMvX6$BAJ9g1}@S;&)YkkD`OWe~w;iDNQtkwfX<2@Tk2GC7UQQE&jl zcI=asQyS1l8#vj-$A`WS4)QAsr3z01> zf)-c}!$~3I&^{jnt*d363!-=k>x-r#k2OJ>B;ssjiX@vIYZ77^L6u(cto}HJH`hRs zKt!04W#v?s<}#miU?{<^z>fa%KtE16>2Jq*v{Yue(AQYy?R(SgN}Lq4OqObKVz!S^ z;sFWTS>@1ZZE_LFgU7|xB0FEqJvTDqqQ*rHyc*Rz;&F9<-%j5rQkd`0c zP($~U&h< zGaZUHq%+a#0>H{3axBF6oOnSMq$_$^nhm99GND~sHoBu6qF0U)2=apDT`VuHoYa>T zGEqPzvCe7Is#Jx7F_6;~HU_(nE9C^qjfQu9ZZm1&NP<5 zs#{bO*68Gn=R~DmwIiFi^H=edqmjKd8HfmM$W6?oDTMWM9XdE?g(0vONvxE;s4hte z8Z`}~IK9DqL&z|8Qr7*1edHT3n}xuJB74QOS*wR;rP@HZ?`n{6g20CpBlbCGIHNm(y|2dEsOq>%q78+5AW?Q^D_+0>8*N2 zT3F7;U!%8?AB*|lnw}9vA_litrt+bvI*oP%W>O`C!&>1Sl+j75FU(p2CqP!kV`}Fg|`5 zGYWR5WQ?uRvpU*v(!Jb!!nvFls~=i#+>y@f}-T;RecC~veP(V@U;l53J@kwi4 zFcO-rDV0bv=M0lt%WGc#SHBl1f|Ls@<- zV&OqwN;kaKYMWq3Ev6&|2Li(24Ebv!Gk&MZ!(Ab=_B8$aG zP6m*ZvT%O7Y`ZM$y@jeTL}{cglq(i#OD0ZJ7*xhCb{y~uae+g{kwgtkHz>x;j=|?L zRFrjxS-7`e?AQ2+Mz>~9;q>{LnbKXfXX6A~*`pjF850w*JAzdegNR{NY^)Wd#eH)6 zkXf_Q!Y5%UL}2sWZaGLM4AAc(=i1uHYZky^6q}-V#M%3kf*AG@0ivMTz@JF)$@>cq z_Ynu#%Nrs9-}J$E_sq@AZP-4MT|2(E%qXXiLPX3&;IUTVIYd9C`2# za&F7qCX6F}v4j8`aKNGYDYIXWpYEWEi+3|IVL>Mx;F>MJTBJ}!i{U#wM8s)7x`VK- z_W&ef!rJ)uQ10Jmf0A?WE63!-dn`ur)2_^C1M(Tb&3{s$`;F}8Ko~wz*-}YX@ixM= zQ#m1@*-!B^fhB!bfQv%2-xMVKnbIPPwTHdB!ygSKJ6bflehZ_cT29+Y^w^PEM8#oS2DF0ihnUSl&ybj^jT(E^-pf1dEiAj5eZ~upus*V(gfIST&B#z7$qT z!s-YVM~PsxJc7IL($DL{JgOrUWt0ELi=Q~M8jB-rv6hHdvN?xZsEiP7#M%Q7E=x(T zSYP~32|?2@PUr4g9g7yh-oIm`VrIKPF{AXx7##}+lEqr9IQjTwb@J+VKx1oi3=zCE z-U??@@|Gd5s!{Th9!c)pl;K=cJ2;SFZDO1!L0}KId@-&g0z@-EWjO6Jhh_Lw-4ctT zz;jO)cfvs6%)=vstNa{YoAiW{J*NzwZAY;IS=J(Fr|~)aw5@#8=NP^cgp^cs1vM_+ zAY7EQms(7u?J!D&N6R}R7CT*2_YEUe*%Y5?fA76e8-&|sZEuiO(RPBw(Ivc0{fVVp zge+VtXLmC?TI>%P+Wo_2{q{|-C7~`LOL+L`!H~3XC6!5RKR2T325-+M-P)HsMa_h; z>lwjre9neM;~`@tspJL|C==kjs?*o{+WXtF0`(YbiOn{_HyLs6!N|L$40)W}2LIB8 zA0bcc8T)o#z8Z3Ovi~|AeRN-R zI(nYsi4;B(uHBnlyXm$k+lE#o6Y$B8TIyV(1?%%=)H5mvRQ1N*R)C_Bw;2W~hY2 z!b3h4nH%mOgJ{aORchzpkY*nrXO|DsBOpZjH5F_l*n~>)an8|*%5lOYmS8)Ng^$Plf!eiEVs9KB!v=(%YVb-q zB;Ke@Rcr-H$N^GKjUnHZQj$y&BgR2rZHzc(toB9qlD z%hxwRA}vNRNmc7KAm9C}5vY(#gV-esN-7Zr$`T)n=kej5DNaG0{25+o!^sYN@Uc0> zEsvl_x$a?$g@a5>rWXdG z!M7xVuY5)F2AZ@;66p`n$fuWv)!^*hE=Nq80Y1IVDCPO-L1%@ulcwpYdfPS0xXiiS z)tB~;Btt8rMpWmCA}!hOtWES+A7;%zG{6~2WbOLCt+=qmu}-G**&z+B7MvZBM$$tx z^j6e|x9JHQL@~`DDXsj6@AH+tB%BL`X}BE-5~Q~yK0JTlM4P0yGd?_A5BLbubD^s6 z;1Wx5U$PrH$+G4-B%Z_$Az>+*KEX?xaAc<#VqD43MCfb77xBrupG@DuE!xdTrl##i zHlv(w4-G}VT$hXPYWyR|XNww`HXUZFsBRH!F#m)v2!zZ4_TL=0_&(`4I2r+l-^>Q= zM!|DydRVgI9psi&iTn?Q9J{1mz|c}@)ls@V7NA^`a!{g&L3%KWg>WlJ(U~+(Qt5vb znb<6bjTRgflbNjR*2ux`f8&Qd$qjF_NFrKJq6wNKJ8osPHWnAALBTTqZQe=o-Nh?5 z9s}}x79VjZ>)_9aD|Sr^jjH3`?0E+Va9k#mX|rN>jWWMr|Bd zBbWWX+8HvTUTD++6|gRj!}gME5xeDZq4sIuJ$YhwsuKcQ?Cf$U1N4*4o7oWki4wVV z6#4np5RS$z<0=b#hjav_d){c@~y& z8bAgK^%A?rT{F$lon0(gNzR|mWCNT|wlK^qY!`J&|H2M9x$ze}(Ky$C5VgvQlYL{S zXj*|{Z}v`3!AzmX`hnbM*VpFln!&Crsb5*4cnH;EQJ3Jv#n{Y5ghu)SBn`=t;V5&~ zX+2^pT){31#+<0=WGamAvS3$GN_sA%D5m)pVd++!y`iVlvW6)G=Ky2;+DAmKX})1R zHrSgp>+gzch<$y)etJUh8su@XoNVXueM8J8b;PKP~x=5z9E%VGG^cOi4Dan(a zCBs}|O{lId8VKK`0YNvL9Gg9P^0ZS?0X59B-;}xZU}ue30t_|Wj>Tj0gyD3PLe2dT zQkU$`2NevgIp>BL<8W%z$ucHHC2p&>HY?AJqW6qW;yWgh$K)F)R_0)qVq&2&W`Lz1 z0t69Myv$;PSr&7#%!aEbu(*$}gY{D^J>UdOfHpi8CG*|9!F-#ww z9m5hc3sge|uG^mUTZ=^?DMlHLcQFlxV46&(&}LZnQaA79!FBw~&n3H^l8T)WDDPl; zEGjQf(&IA~Q@y2EO#&58nq6bAnT{nWpQWWE(;1jhumbP(XPit;Qg)!xK3S`$W&o3y zR$Vd<_U2+lGy`<5s5YchJThhUqOP4mdM@M_n0q0thHcx4(2K>U$HN4noFo}X@Y=B? z6;H|y==iwbB}ksh>x+?Oe)IX`T-0Djg1yDH8U_*FsF)!}N^miy2k5K%7?9iqKpu7U za~|}EGcas!X>g$GrsNS8V7p|nUJN7Twx6FnPfwn#WtcC@UfW$ckO;AMrN%TS{Meb( z-5ctXdNc-9Fg(K!!0gD7G6d)*7O=of1sfz)`}N)>UQisy&?qy`@-9aU$;fOobfgCe z=|vhg4syF9FveFPQq)PD95*&Kj*U#jAVXAEpS_8(@4;6_q$cy`ej?|8seA669WN=7 z7)8trBVdB`MgY|aXK=}}9MM{=bu%cin?NInLQtd%?(XT;tbztqHcl#;tKTBs#X5aa zg&T+Fq+=(wHW(F$bPUBoWvuLB{-IQj498&FwGK2iH#S!zD+D+rEk@Hs?D$5d0{K?a z@70_FI_hD3*n^K4;>R%?%v{;&{V7u_n~qi(rS2w?*ZYOTpv&hd&1O7`xJf?~`ew50 z9)48EJPxj#;-NXl_q<6I-M^5_IB5$Z8}alivA2hVnq`PRLE3za$A$E!O~m4&RRx2M zfvks6&?ORlUoa{6^T;3%!ivTe%8aDw#c?A>vX~|2ZIo`4Zk(Ikr5l@bw{G5huN9_} zu6FLM4fYrdNfo`?f=KSlabXSsyg0;l>Qs7q&H0&*F=VDC_rYq;*i2_ih(u-me64{V zu+r>4Jn&F&yB?kV7=nd_HS2-lF0l^8cxvEvbR1_Jj~@$1#|(anps-Byb8*DyrcMQ<6Q~g7 z!3jSIvt|>_d5H-T5+7tKS!W25hHCYM5{V~!(xH)ZciVw>XxA_T1Q5GbP9Hdk4gFKl zO0du(Nf14x#}@0fDT+x!i__z%6>z8?ZqMY0Tx3m?Sfpb0|PNaQkEr zj@_@~qh9R4;GCEVp%vl_UF-#(+9BF5ySuuo6&0?vS7|T&^2sW(2tqPoqox@W?ZQU0 zqE^^|**sL0P=Xdr?Q_aZ!BQIU|Xz;uQd0FiV_$6CLjVN-752%Zf18M3xRNKB4s>x#OIr5W;; zY_l5#X?CT&kR&Czp)!{J28;|5;g6j$=zG+}JG-9@SLoyofbfC+Z**#D z=D*R!J`!@=bt@Wn0<%)R9lgD&A#ikRQ9B^ez%;+W45;b6DKdPGbHz~xWW&t#WQ9XC z>~*pa9TMz)_9s{;9y_S5Kk}XQb{nRB$e=NvN&SJJzqIp>V?R{k!Gfb23ZHuZ*;X% zQqv4-B4;@9A_vQz4#-ldQZywCHWt3Ft!sZ7jfStf+jj4NRUAypNSQ{t+G%8VLfSIv zvSzcy3Fu)ZFbX^Us&0fTdmaH5*JmRRNs``*%ZY*9 z$Q0HB$HAd&d2z|($)I_i%5cJoiRoUAGtAqWx@pZkPBpfysoS2w=bb|QmJiym97E6?gEXs(g#AO5& zDJO|0QucVKG0&UGt0(FS4MiMFQ&J>q(Z|f0@0daHOnowF_&TPJoxP_673TD!8qDb$ z3XG)k9-b*Tvx+IGt6F(;>zF~p%u1$|yVyFWBs>_bWco#eg~+C3*ka3#TqW;4J%IJ_ z!DIbYvr1Efhnlk0sGVp(hT-7s%;Z2@cT-K_&d-j>y$2^6lS38_U z!~H1J!?B(iWQPndNdbOnprfa|KnM1^_MR4;dX7GVSxp%mgZM>iawOnX1$UJwnwZJk z>VwhR=fSmdl5>&%kL1LgOvi436zx-sVnc5D89#C9IshyCtb8FrgTX-F!e&e zbon+ZWL;9f%rrzTJ4r5I_R5V}Kc0wy;drBoKAbbym}2(uVr``-8*AetPcnj{fAiTf zZJ6BzRxkTy4;{r6^2-b6Yy=lJSzqeIG$gKHO{(0lfoM$FJT-v9MyOvb~cT1ovdHxayuB)DAhFcyw}N z{Ph31{B%+38%9gE`s#!vCxHs;m@;#Lp&GY3&S1wUP9?(0aoAx}l1|QCvI0r+6?sJ0 zO^Ku33BN3|=mRY&kQBNJU*{9JcSFY%Y=6b9T_;W}`eQlZCy|*-0*$A5-ZZL`I8*bWkejc0kXSR#XgSFwTooPc_`^4aJg7Q1 z4d?0)HceOgoAE&fStjS)Y*S};*@-6Q6IWWsCT54VJE>v*u}D>2`Nn{vkSeR`KnzPJ z#WiO&7~nif&WJ8aie{=BkTs<9LigNMRlJ(E@U^6ADkBz6QrVDrQd@4uoZg32>1337 zEH)h#WC|_np3>!hriEZqXE`-(>Z*uf$x6)CIL^(t_k|bzdI^DD8`f1l?<$>FW#(IjLb|z8K@f`=gWN_$Za1ljtPm%`xup!%<*hq7(@hiF=i2g2e;iaJmf-IoX1lXNqtTt%_;|y-JDIzFTLGpbX9| z@dLMH`Ox$8<`My4NGjX(%rBgp=kDWe#Lgw!@Vv8QepY_yklf8IFor1_N)kS|t>1ru8zBT}twV zf4o7wC!mgK8&J$EvOXUp)%Vi28Xd$z;zu9B*;%|Qj-!u0jb>d5TOjoc>zpqI*rwSB zNeuB?1ZX^UGGW|PC&L2LJc_bL+#BWW^-J=1kFb@RbtTOyY5%iix0X_i&OA^|u{p^Sz z9mL*7R!NVmuq!)p@|F#1*x`~JqVai+nz`+ZL6hhFc7^<}3>@kn%qlbv%d%Xit0X?6 zj&b5?hi3$8ndj?Lj2G`_RfmxC!9bF!bEl_n)S@^+PWUnP3VCQr+3SUh84d-HCe_Im z0qQKdgrN~^C`&oe@lW0*UiRvZgxy@I5WdF6B!^oV##NsM3HV*3&BF3z1^*?8x;}vp z6R10$sa#RViyEbk>5J)lr1ILe<$NO#$?9ii@D$c^r4=)Z(9%=clB;}xAUc9r@>!Z@ zTfneMt+4umtvI$eWZb$GqiWy5T@MwQR8{-3GrDmu8wi-}MS`ix0=PsOhG>g5rpXef zNWDU?P;tS}L^9F~$9?nQH=K`-b8bdL)~F@Y(Lj7^1v^H>H;)qiLY#^VHeac5Bh@_F zjqhcKp|GeOI#52)4qNq}GIySrJNw&T>)c%+&2rN_p^3^>R!2#sgvN<}Y%M*1T(a)& z=}y+y8M}(_w+D=`IMiats-(RCI4hhekZUDR7?CvL6BMk1Tt0X=xrxt;me!w{lxkKo zC}`Hgi}aty;@FrClg^3subdjh#c9)ETtOw-dQ_c zdTlCTCRA?BXks$t86IZjda9=s+Ei<)il#cZdZ;x(6+C0x9yeJUJ&~4=5`U;D#+s^(1k=) zD|>5JMmDWullYMm5C*s!PunsZh09N9Vn!nKuNOqUrv=GsrV;@;Jf%163H!tev|aAk zZSO7b?r7h=zn`0~Jj{z=p+Pa>is~Y=C}i1y*-}0Zn>WoqZ9L?Sm7ht>Co3n|AYq0) zG)jd;SNULnN9W!FUO3lzp#1=^)74YW*p5U!%w>niY409TyEtRWOeSm(;0a zM3uXGusunm2Yd*WjIlEraIYaoS7h-PXrB8Hw)O34-&5`#=);#RdzEcc#{a*^`Zvk^ zN~&xRr7$83(|Y5)K%xTaL{23woA`vyT999;(H)&UhOav`>!r6tGN)paLP3{E#RR*= zC&VsgI*1S~AEtE-LLlE=#(D>=$xwzF@yhg3C2l$rxFH4K^3QE+ejv4@khZl(o@(t2 zyMAPCnuxsyOd zFI!_h*`(^o3q7M4$}F}d`w0Uy{;lU>#WbHz5q{0YY*L=Yv} z#Rm7LT4xiJ)ru>K>I^@y^?`uQWjm50BvN&(MH*vk#AT1gscsoAPJD}GZ6I2^UgN+e z`pN0j0n%G4rz<>iqe2JmHaJ2BjX<_IjpKrNg8#(G*zu4ps`D!y?8XkvJ+?;~t?G7h z>{e-ZHAp8!ald5Sh6AxqSFrPBBZ@(c!geR? zLia;0y~*bpr^cue7xpFKL%HPQljO~nd#dF@p1cy|M|CuN_qr&k6jD4A#Xi+O)Kd7N zc6wym1kb<2ryFwQu6*Ty$qLVWtl-l=obx9$Gr}W)K*C|SdI7D)42&d)oVA#r( zIY!ih#m%W9dNbQZOrV7A@S}MPPOOQ@(T2eKK-*!PDd39deFGh?R#X)zqqpB6l3bh! z`#RBxx7b;&#J-Xin`2zLr98QUbp$&83~E5yL8I^K9%w&2Q10)1eS0va1GbwBVx;;{ z6{6hOmQLR(4^;C=aHpOJvy9H8aJoEJ5P-_b!D;j>?3$=XC*7HrIS4t~Bw{(x;3VJe zd;@tLJw1aDHqc9mBg~wNW6WGGs~ksFY@iSw~B` z|K!-f;PC@;5fG=B?&EAEhsbfNXygT-r#WC0N)q&sj*ZOJ=#Xqty$z8XBxC@un;t&~ zPS0g8XjTy*X_v2y0G>J}fnL>Vcj<8Q)l%-j{nI_N8zrFzM&Nva5=B%z5u!5u&O(yF zE?b_FBanB*r&?tHE0-U*VG=T8V|T$5ot;~Na!!B}A$E3lDk zvaln35{Tj;+H6`Mq1FQv3YS78Xedj{CJ+>f{P@|2E#s9B;G{Qh^%|TQ8kU%W4*N(& zOuB6S?UH~I%CG6)YyD1ls}PGI=FY;HG@@B|NyuLrp*$}jzvdPo85CI=#jaVsCWq~s zOHBkzr^ZnCkumvfnbj1m`z4)Y-U;>HdrYA`!;n;+BDF{6xgNvn4We{^9b|E4a?qszVclt^k^vLNM zP!0P_lMWLO8;lh6km?FDy>V0~!zCpYu7b`jDcvp!RN!?ZBqX*Jj1>||e*$N7VI+W> z9c0%iyhRTNL$2~>JB&|GB=N;(<~l~PU`Z_Pres+HF0zL;XmLd=p{L}?d**q4ncuMu zq9!Gg3{~7tnTQmsgsBWuHfuW@z`^QB;$OYk~v2vSivlhrj!QTdu(r@m^W;w@b? zftaeC{m#sD*QiAUQ)T8v+J9$G1iiKd^*FKIBO27rG&{`@z7LPRp}LCZA5_!iR6*Ot zn?Y~TiB>cWvzQ*pk!YyS&+Vj+AAm=aXN2ARqj3TGW+Y{fYmmw2cTIN;PbI^w8YMj40fSqBFQi5TP0mdyf0zz-b)0H(bW9D;a7c+Z$;~Wa~X{N}fGl2I;3} zXQC!($+(DVdXnth1QUPcSViyq^0Fw7^trz-iun8ZzPjjoCmeVh@Vj_t6fF}diU#5M z;Qc8)1o(3Sd>rtHTGQ|`z~9%N!Y2SP1n^0~Uk>0m0)F11H2y5${YO*yQNX7H_%Xm2 z=hE;u1OC?l{x5)k>P>0*w*h|cnH2tZz&ir?I|08dfWHUuo4!Ad|Gj`;aV~}50eC2Y z-v#)`-kpYjKj422;CBQ5^Y^6TKM43^A4%c&0se~sem~$tzmSIiDBy1i;2#4V{dyYy z6M#1b@J|8$**{Lhe;V*JzL3H{5BU4Pn8LpVxbaU?_?H2%{<9SRRlu`XQ~1{b-~A6M zdbtuws5@UDd8`}??m`BjxCQm05g3* zbNBHtHb-#m z9Q>rg%U*)=K7jm|YyJ+$Iry@{t%%>cP#0YZ;JW}{4d52Q*8_Mx;An;B&-5<>+z`Mo z0le1W??w3XOLb8x2e;(l=9QY?4gCbp0ImmoH3vUw@QU@o2gF}nujM;j%E1>5 zekI~>d+GA%i2!~j;DrEwA>c~^d^h0B27eFI-(3Pe0bCFG$sD}4LGk$u;#fv?gDE#g)cAvhkF1PhgU1Ep9#1ZFzLJUWuVuY715}{_W<7c(G}60!QS5UL3lmF&*tEB29F{A^A=V_ z=L7f-z!w7eR=`gf{0_u_)~8lP7X$cKzzYUnVECmK(ItZ&-z!1*tq8wru;crr!M}p^ z_3Oagw`zSq4|wIB4bi$BykPJPOW@DuhUiibo?oNsA4T{}KD;VAWAM8H*MD?Xbl%{L zfLB5|UChCka`2I7X@1cLr2qX@(Wt@C1-$aws%Sn3pUuJXT1#&gE*bm~(my+@k6H}= z9>BLX)JGiw{A|Fz27ip_0c7R-vRiZ`|G32 zLHLUiekBNhF~YAJ{0Zj&)>Y9pgJt~NUXMDPWdislWz z0=Rww^4Z|O2E6i9QFPwme+K;gEA`Puz#I==um$qwofzK@-VgZsAIA7<@m>GDYT;h~ zH4AtBckT1Eexm=r7xKp7N0|S`hNu+4^?+Lp{vL$KzuyoYHrVq&VzAe5&S0Hf^-w-8=HP`K-1>aQ_d4RQ{4B=99DF1Px2#ioy{b8iwjNs^9SPv&fJY5}Bf_6Q zx;&Z-;JX2z4d7bFpT*3_eU4lY!O%UJJOx;BQ6vbMIdkO&RR;o;Uah5dK0;9?k^tU4YL9@NIz48T?7a zzrS}`bRmH60{lb(Zv?zxu$Onq;5FOOp9Y{0h@LR` zgM>e|D!OX$Ulabys%S0dX^j7p`xzhd4>0o^0$hI%`cV!(l7lZ9?D*5R@{a~MUQf@P zpPn~AJ#W^2#d-A8^X4dedfu%3zho7D|KRs_=-di6%J#W_j;PdFG z=gmrwr{~SEdp$jGetO=FIV$I^{`~)a-poA+6IkBh^Ve|y2Y%6E*f;TFJ>A|GTR2|w zz|1b;Zg1-V%=Bt+TP5qwgztPg=J!vmiVj;i;d;PF41Oix<*?t+<=`_pcpY$Le*VM; zpGNw1urIV2{EN*0(y9n1A&LLr0k8Zl%FDr1Ik>qln|}*n*5B=Yy#~9z@36sc?>lSh z>mGo;>PxVf=hAb1n)!M9E4lR7E&a=pe))CKZ@I>I`wm2pq<45O2Xnoc`FnV84nC5D zODna$EN>Ia>j+>e-{291$Cp<`Twf;r-vxO4XIDg6;!EI7fJX!PPQYA$W_+>de-Z0d zIru^jKC(*V|3316*0mK8mK-GgGhc!B`wH~*9DE@MAHfoW@EhXCt5-&&26q!~SQ$+j z{1(9VYga~dfJv{FF9Uy`SrMJF@b@76_IPD<-r&yx-oI&ObRmFm0lbidVS<?0gI`PdN!Xtaeh1)N{Xvuudo$Nxncknn1~(%7PS}5^0=ORVd=5Ti@V6uWt+3y6J(l@> z5b$yc7p}L4FxOkd^0>YlhRq` zblJjx2Jo}7ALp9EzXkY~aqL$y_)CCaG==>sYqWgAuK?T}z$L&f25;HU^0EIU2OrMC z>z<|g?Lz#0|Fkk{HrVOiVzBJjxxO;$$ick^zX$18K8gOEgQs%vS`1k1&;G14*yVS# z!7hJ&eb(i7uZ8=52Val%{SI7@&9slfx?Z^|I+ugb=U`ty_52r}t@wKWTt8+0E^n_} zxbJ81_0U1sZMeT;-E%blXF#9E-c?ZynDzJYlEJ?JqSavEe{ncS{{Ye-3E=I3M-6V? zf&CXBfIJVv_aS@^Fw67(7-tQ3e9sx|`!6mU?D#Dh?Co>KU~iwR27CKNw`qAkzOBo_ zaSrDCE$MlH_`h>m#PwUkp;y4+r7f5Iz;aj6WB^5n!&T5+Bd+oWXbO#CqS? zu)igMp9%Pi!LLC0&O0Fw0{D4=qvvUUk0bn+81lg29|T$b zv0u>OtIY2#@_W9$xn?=`$6i=YG9220MMu8|?JHXfXGCtyzctHUZ52UzZK`{a@E|@Yxq@ z`M&?_Tn_HVK33xA`@aqw{O%Iu6XuUo2D=^mOb$MmgPUW`&-Z_|80`DMdUNoR9DLo= zNBTTz@IxDP|5w9$&ENNbtqWl8|B4O%7~*sPS1EwG|EtAd%RXu~*!O=OHrV%n9WmJV zf6e9KvpM+iU5cOY|2kr@@Bf+)VDA4qW3cc4I%lx&|2iLpbN|CigU>=wBER_luX6_b{;%@^%>7>%4EFtB7Y%m$FBt6m zzpfeV`@gOm?EAl-3}Ej6itbT-7|#7)4FSykUuzBa{a@<>nESut0OtO$lEJ?JtJz?; zTX*E(-W+_@VBi0B&0ydEbv=N&|0`-#{28D7zhZ-(J|%-)KD8R`@~OjMmrq9w_WfUT zfH@v~=GBn*x7SDW27e9ki#K6^qQ!T6)Oic{@-JAp+oLWS?EAki8|-%Ms{zdYU)K%x z{a{Zo3*cJ-_W};Aqo()x z7jp0uId~5HG>MoC~!>owTxGjFixe=Y}K z$ibuAv^mxaMDhD@X=n4CIM-D!m zgX5Lj&uG_v?)6nsYXH-(-C?lXS$Yk2yLM>jrd=DR7U|~LF zYo8Bb+O;p{;01%-u6-p3U(3N~8WcabYhTF0Zs&Hp_9Y8<_(~3*x<&JIyY^Xw-L4(l zxoOuvZ{hEFncB78?oF6>?I$eU?b>elCQQ4w+r6cIVaL8=@g2UJgXhfd>~?LpbBi5& z5B6DGxY)75{BGy|Q^=p&j^VpD3;$=p^<3mJyEUYfJZlZ!*oN@O@!hAv6~N1nVPAeO zyd#(Xu)!A)|JJu*U%0`aW`1XvM^grW4)Drz*e9NY-A=w`7xc3CVxReHZ4ZY>|6lgr z2TZc-EbqLd?w+bv&x~qDGg6I4e@dg#s3eV~k~Oj$TeixeKP6k1%2=3^8RK#gc0-J* zECLFngaTyT5MfG=2xX%{!751^%eVu=DT87vMjIM4Ktlv{VnNCv*j^$+`>`MuTR`6T z-uG>vJ`elsvk%MeX7}Fb>FNH>cmCgV&pr1$-}#RCO_1+jgWYhzi(u=;zX$SzW7wHX z{?p*n(`XOzvy{W`cs-CWLcSrs{wt9G2KLp7Uk#pn5&P!EKLS3mjrNmX+wx+>){FDI zsW?M=lBeHM;HlW{n;gjMyK_IpX@9t7Z&HoedUMOE=jQY1@9?_V-{IDCdpx3Eo8hfT zT^0K~eE{bB%X;5oBp-?W9X}CU&#@WAr`~rOF!jD$V(Wdk13C4+To`8gtoOB^-Q}%F zZaqO=?D99no)@&mo)=Kh&h$MmSQYy{Ka6-3ap&Of`^9}uY_Fd~|0wLkKDdb2#J>yq zC5Pt|>e(5dd<;sI#_oDFqC_MK$vHVVdBMLu_!duVn@YZv?yxgb6^jw}5vBPtp5#_#mVuv3`;U`h} zjVQeJ>Q3K!b*J~gr&qVUA-(pmqkWHI5qve^qu{>y#O-MR`_LaEUW>RRJ@!uh#9r4L zMDn57>ss9R!}c+A-w)aATALA1Bkn=(%jdxt_0nWNKh#5${rpf59X>x3vBw|kp(*$H zW4*J}w_e$LOzV}&)MHw2Y(1v+#%Ak{%}wZanV+wg*yZntUH-1v&wpR+@^hb0SpJdN z;|uroQ10=M`*_G6|F*>*pR8AQ`KU)`coK`6i1j^qZMKhf zD`4s|x5d_DCejN(ityaWS`<@GJ!UD8Q;%5|TaQ^0XYYIHZ6l`t2bRb3QYBza?yC{k zBA$sqhw^YAYjSxO-+D~znaR{+mL$Im%zdoZGbg&NXSN=*sqofgTCZ$9ruE8X>M>Uo z-g?YVz|><}?`%D0PjWK#n5zL(kJ%Snk2!F92+w`2YY~qlZXD0r!+Ol7*m_LsxyjUH zt_0z!$FyGC?bDas24dH5D0cm;0&ACHty_d4FG1$NT}~ zK`Y{wh~Z;94gX1m-}4}zA8?qS^{&1jtCIVE^u@j(*0Wmgw=KE#er0^uFn#O&>SF8t zx?CX zw+Rm0vn6(YI%4NH-Qhog zd1`K-yEoyI2;0fm|J{1aZRJnBVs4)cz32ad-ZHn(&HAhLn%%{Wt;ZaQt;e*UlAPP; z=JvU{eQx$1^m{tD&&|dU>V0$j+}u7lx6jR<2ivy}px5O5(Duc-eQq{>`a3AM&&~RW z_1d|8Zq`5SpE0-3&Dz6yZR<^~*S6l&dhKQDA^kmC7hA905?ilrJ*xHCUCGVXgPN_k zv|c;6&&}?S_1d|8Zq^>wYbVlsQV*Wn=O&5uyw>|IOV8`?iI&)U?A$&#>rd8e=JvT+ zdw6^wN-yjARBoTUyTANx?Q?myMQ)$_|Gb_%x6jSK6LR}p*t@~lIk(Tv`oo{sVULj8 z=jQggu!rS(uI*iO``q30fZRSe8!tR>%sX@&1@3Np7E;jTgCnF6LKT@Dqo3 z3EwBVeJ<>WbNk#KKM=WnZl=e~?Q^s7!FtTxJ~wNR+&)+HiO3!|x6jS`hxOQh*Y>&p z8G6f?@5yHSU%=l7@4(+J*pK5E`IX>9c)!CvR?6=r!v?-4{vmJ)HpVdfOXc{LUJd-q z_?9Edls}5_`)9FpGW$IM{u4b znC0=+j^eL~&$$!taqJ^5!d{l;y8?XOI`%D#EvG#%<@Z5;aAPU4J@328&n+czS(3^h zWqj-lZiznyKJgOvF^m6%@@KG*S$qr)cija0n8kOKv5&YX{)c4lQx^X;`AO_k7XK&m zXf7FuUEZO%bQk2}>^!!pX3%CF-&t>gJIeA&^`&Acv{h}rId&Pbj zygt^I{4GfD8u;(*1zZB7iPHP?ubJNr`|8D?2A_NhegwpS1-^8CZ-QHrhClgwaI!Z+ zmq_^@@PQ}JP0!b5eaT0_Tav#IT$r7kp07*!hrut$Ci$7!NqV|{+;Jl?0rHlvG)nlZw2d5=02gW*!zSAVy8b8yZmFZ z%Rdpj{8O>t%QLaltL@G5|82DQ+yncPM#Qa%>xC@*i8sJC=h?-i5pV&Ft#fI8UJv=X zw=JgromszkfUBE}JN}(1FF?Mk@RT2b99z%Q_#XgY@Z4fD2>1YaDEI8J>IqOuriBWA{M*!eZ(_+I#@KCHX5U zhjZnb_5J!^h+jG<^>5AcUI;$_@Hwg95Ax06%gX1Zem=|>fG3LIhWy4V&hrlVdN6KjTK^A1 zzF32QRPiUlg=Gx3Xkw;kE=5eg9+Z3DF^PC1;{MX^@IJ5D@yC(8yDtmx_N8A9=I4FN zgMhhDnSM4X_rBzD#O?i=-22Grf12Sv9`^#~c-$Ay*ghwglA(B~yb=5SUdw%6ulGUw zyk2wTyexn3i*Ad(FM37nebBv#`w>@5S$f_VXFn7>q3FJ%Qp7>WFpTp#E z5b-Et`sHAHg|9?<45P_!PJuZ~@#2nCY#GUybzlKaTNA{9bTjc+SrG z#XkaG7-77U+`Jv}>fx-sJL84e@AHw^@AI`NJpFQf;r1l?P2@M%Mk?@&!TR5SHQoma z_Q{Lw7oZ$)>fcoS34~Amn+BZvHx(o0^s0;h6ybTkbxXWsKPk3-WH(~^^up9=tF=m-@4&+?>dd#wQ`aDuJID zvE^%#d>qNQ#jZd7J2QRXANp@5`~FnKwg+7nAG{XdBhZ^R0;V3dDYl;j`sHAHk0Lz% z9IOO#`Z?$Xa{4*witXp1C$=AhLByko?bjm>kI9<-dYD(`hr?_?8lOY?=;xp%KN|LP z&<>b>4(z|#_MlzK-JbU6Y(45wa{DwNluXPeI{T!@|?dM=4VEQ@O z448fnrega!*b>`ctNnzSOY-|+9*OPeU`=d42lgvsd(ibDJncd4N5t(jlYFPYp>Kr! ztt|HZ-scC~&p};szu#LCuS8sw-;OWx`P#-aC%*JPK95OK5xaa<@v9&&;JoB|#0~Mc zL%vYmle8o5M!YR{`t~ETQ-Apd@$*&{e~kH`hClv@?XTMD*v4_1p zOW)j!cqVrKrQ^HHQ;C><*$_{`3sbyTBF3jt8a^EdUpOZj$Ba)8rgzO(C&{bNU|taLDKM(ABflAp zBBhLM(hFIpocfr@#;(E9i+d|#(B}ut1v%vC1UDrDE}zJfAxc?U%;;gZw7oX zn0lNr{C2=RM<#(D#By>`oZ8=YaqdLKaG92dx4Z;B1LONDi_gQ2-v1cl2V4MCZxV)I z7S|BIfS+c>E%En3wr~dR67g!p)N|}gU;Lk${yyw$j+lB6hEMAQrEDi+yvldUYxwRD z({GAzzaQyioNS5T3jS)2iviccD*@jN?nd!@fxG}YUR`N^OpiPee+s;CYEP;MVR_7x zNWLxh{aJzDAT9q}@Jv3KBt7x%;IDiLe!Bub1Rex@5qKm{`*Rn5u_E3S50T#7V;FA& zJ`7G4v-~N)224E#%j57R@ozwWYyiD|z>DCD_`g72egb-X@mG9Jl6=J|N$QcDdJd*f z`6A@4h}+`yT%{+`9uZUT!T6TfphqD8AksVU=_F~0e-C`;1pPPQMQ}Uf6>*y0GidLK z2N5qr55fF=(Z6WOE%CKy&_9;Z-y){JQHH+*@`YRWB)y2K2MOg{;`DjwAy?=vC^wfP z-W0ohTjCYuS2=_CYQT%&S-@p*aetP+!|P)1#bk*@bp*8_DIXufnF}+ZSfo5it=?)zXMr#b2;LPc&Giq zd|&$77JFV(l%B=&q>|Y4nyR>u{10O=tciaXTsRH?f#NTM@3{@%Edk#EZi?^yT0FmZ z;~W(*>&y539=z{|l6&4Tj(9y{>SY-JCy?Idk74`@_);+SB9#9&k*nVy6Be>wPqr;)zogX%;rAo_Fyb}wlL)`Gg>&;F-i)|^I7@%=@1cIrAw4ng-?g}3ugCv? zScPFZ@_8xd(fPbI$>*inbCb_Y@!rEcHJ_Je{ekn;#YsLd&F7_Af5_*h`Mflrmtx)> z%{%|L^U`m_y!7YxWE0az@b?q=fyUr()R$83tBOBDeQ5(sd8#k%97vktU&8+#?H!=0 zV=5;vg4^OLc<$i?ss5Dl&8v}|c8FpAW$~q7hx7*rl4bGR!G*^UB=smfru=FAcSAn+ z)PZDM{4c=^Ffu5flgZ8Hh}XnZgg*kKiw*G%eBQHICl}xR0KVU$%-RaL04~n${$8g3 zlFGClOP>%JdF=J?u=E z&rR**%;$nj^O^iw$ma&I3lcN`mmz=J$+3Kg?S?u!)YG9V{ym#Vz6`g%qa-UyNm;7?d@jcrL_(pI$ z;8%h>0bd602D}XJiNEokNDtrhtKwAu2D`0M#A^{#zsvgg{HZRO<$nn2o!8u#>U+tL zk?-D@>U+sgk{kPyHO1e#-(o*cwo~)-#CbLI^Ydi8G{?6cn(d^h-(`6Fy`p}X?5ira z-4yk?l$&8%vn%{eY&#~~iJ8aHr!v0nnrs*L!76S&&aK^)+;&ad5yR9qjc+*~*)0F7 z5&zk}$xv*&nQ_GH5x1cK4C~t#-;eZY*U=H%uA>)ldftQh69}K4_YiP;-hIAYt8*$$!!{U_tw4ubksb9&x`*nY8A#cm(!TN&Qt%Si0;h5A;?J-)1q zy)L~4=J@pt$FFBG{}88k+%KRrK>x}3UY{<38Qxb}a<5O@uFZDbb;)hV-3*v^+-N)n3wAU8rZRoYOJdGH4nJE=Dgo~U*Tg@F z^ygp{-H5muvF*a#UbPE%x7TvSVH@h_8~-kfDeI}#Xkl4etbO8PKx0_2|hB0y-C1xVA@Gh{uhwn z@if+J#J*pvfqW72LBvDx>%I|lE*OK1Bc4Ruyd=x-0|;M$y$S86nEw;tFH5kmD&Uua zI{_a7)2_K9F9^04H#T{^AfPEw4 z_kkB4-K|fG-61#CLuZ;?M6-Rs%i_9t3<8 zJPi0k@JRem7{9nbSqu0ycoOhY@Or@afHwlZ5WFe=Bc``+e=-gDG?8*mxi6Tchb3stm##6$6~L%wti+CSg|cul+w`KkK;WE}7-!0Q2D z4BiO%1b8#xBj9PkOm8b-rZ)?i@srE5_GkW#UleEa&;6$rCES1Ue*|Cn@La<4uNc4d z4=^6A;(XeOI}um#-Ocb$Z(00C#DB%p&~J&~4?evQ`mKO(1@k;B#{WIYFTMr(8gY8R z@v+G7c*@BI@JL+vpJ3O18vDk?H-HN;4%!em!FR&=XEWeBcspRqX8{+$Md%fnALF;c zCGk&z&wqF^DF<8tR|38iye$4hmIua0Ja3EXnL818PiFG!x8Q!9!uTHXAmaK}S@=X3 z{jM_oHzNL#@>0?ke;c@P@lvuP{ufLiAItR1%J62MzeWBGzC-ccr z`~~pcEu23pe(SfQ51*b-#)13}$R}dA-@5p_7`{HAY>0n?e9L??75^d`%Db7^`6bt6 z-@D1d5>Dqi!7Jm!4@CeSs4&)~xZ-{>Y^0`w>>3Ly{Z?0XJrT1Hq?>oJe zv;r=GSHye19q;$%QqmP)1wOZheQ@H`o^F7Bpb<}EzCO$Em55(^68l2M-wHlH!gvtK zuZBFiAq)RF zvq{p6xF2!z#wE@ZRU#6ubUiFw1ii?KSt}futYtFyhWlS$M9`?7{lX zs`y(O{~^rhB3_HQae8ZtrHqEpXU>I%3zqE8eNU*yWu>ybuOpT%h%QN zb+vq5Enip5*VVG`ORtmU>uTBeL%yz-t&9G@ZC&lZVqI-no%Psvz+MPH$+Pg!gJ0xt zz|a2YQuDEt9|g~CVSQKf3Ai-Hz8o=rrPl!eGQPvFfw?|td+dqi_?2Gk_?L3qV*J1(<&BhhXOSJNP+t2L4{ee@4C!{)!ade(l%ApF({4wcix~ z3DbLKE}4ptHNca(1Y2~{^4PCE_q(yY_G>>A+pm3cPA0csd+vv0c$dE_wqN_2*naJo z#r9)g7u%106U_P+--A6D4Me*;f1x!e9IZ?8wDwd55?;SeIjZ58MSgZhjHW`g%WAS^SpQp})Y7{j%78 z?CauBLry>T4YB>$H^ug2-xf3d>uy7R#oQ0JboWBi4Y&Ya6??rMT_`P|_kXR4-F_3X z%Rd#neUkYszWwWz#rCgL37GzMs$#b%OmNcn>Z3j9W=Zlf{Js}`h}Wm^_aERVLAgu# z#dh>_Q;{6M(yNMpDfe^J0yBR4+}t*ww8ejg|GONGvJ!9s+!f|f#M^n=)ME57R?>_f*x%;%7D@|9pdhh$%T z4$1!r^1@^ABL!ypb}sb8P+k=O62dPG;3p{JA(-vu%l+JT8xzT`FJBkiZh`$ijGw4q zIDT2|_!Y6^FN4$j!}2{bm#|-l+>V(2it?BJL$o)}<6u7ud0qTHkT)@IZ3KKPcr)Mz zcq?Fr-xjBSttQBPAxqy}0f+Uiie2Bj*!69QU0)1EX?Z`3@-3W2e~WlE;`-h!KkMgx zK7n~9l2;46!`CBjg4teI{3E>Qrs)3x7r@+yX*qeI`0gJ=vFnSiUTJ%{z7w(Qy9s7` z-;Degw$Q#2^TisxZpHyLesUKaBKBGu+>RF9mOjKLhz|IVhc*rB6NyE(T0F z{nRmk%Uj~hzAM2VV}xJIPQZh;?F@!gQ$at7mRz$d`# z;(tte8~yb_7N2|q+!KEqeENa8)bAVXPd))&J}(Qu@ZGSJ?ailt;3y{-!1M!0z8bvn z@O;vaxD&DWH72@hctNp$?DPlmPJa;Z^an8WdnfWc2)j}4TQo0%`{MUOeyorCC4LHg z;0fHXfD7P>_%~Vp5$s?i-j3M&4zKwhq=!xI^z+8@lMCRX_$}ZIp2m4P;%@<;nk*z6 z0WW~L50T}60`g0r#PfG3OV8&N7sZTULwN2xWcUs6p)u@k1D*rd#h-)xrn9&|0aw7y zfKPzi0bc`N5m&z#w%B+Xbiu6OJHYgdyDI)3GG49|@yEe8tc{2nmRcW4F7^Bq2Q{ppi=-h=(=lX>2Q z{pXXJzWwL>yoXKY=kp$>VxR9Yi@10+E3f54vDJuRf)J3G529I{cK;^Ie3V6GxsG@e${)S z=Q)FYtN|Cm+^0zS9grVcf#36h_kp=jk@B}e&gYH$6v+>Q=kT$`eTd{|!S}Ah&v@la zd>gnF@EgFDfEm6T@FI9w?DU(Fyd_@#KFo(l7%!smoj~4%yc=)>yc#g&{eTPLp*Ybs zj^q>Z4dz{rIkkt!L#X^m9EIb`}~z^#5J+cYpF-_X(Zo@)hyFRn{f?OX{3yR4@^hcY^Kxaz?*$K@@HUEXD}_w8^WVt7AS#lBy|h}R-+RkQd$ zAB6h|nVy;Z2E+8%#V+qu?DB4jUEbo=S$v-lQW5)nkQMQVz6$+e1%8jkJ|CoeO%~tv z=|?;Svp@J+xpsH>Uc~)~o2Pb%Ux~OI@$z-M!#5*tM@)Y$;q$W{@%VE zcpLBgYTURxz0%8e^O4nD@0sg8v44Cn>qnn|2=C1&=92P!#<|`T?Qs_8PVe3Q+~j)C ztbgQs&#Zssde5vs#rwHT0e^O-ZkN@OK+OT)X7| zQU7ZDfr{An15mdn4DV|he=xl51)34J#I_IUM9icZ-|{Um(@*VEtAIV3-1_xK#4WM) zNR- zJMjKq!#VciG%)@diJwQ9IT+PV0=@}64VdyR@x|Yd@2AaT+73+LTtt~eUQ@jgExlZC zuRCl=?(dIHvDY28m0o(@1C08LSbAdm=2FC1T2Jfmbp|X=?c$l(_R$ISt86dYN7Ej< zB(^N<>t(bz-xPB_?eLj}WLs?e=_2&GjNeE4NA}_V zia$Zd;SkjKQvUm793D{-r{`}xh4VMSEWholn&LNOeXW$h{yUO)#J1P&f|>r@51@X} zV4YNa3Hb6J<~so&1P{dbP>yx&VZb+op<+qX8$y13fOYeLkAf%S&p>|kF|3=5{}Md+ zIM!Vw-inxZvMled{}^^kS}0edNbm!h$qk=Grd1U_#3dUxh}r) z5tOHbb@jze?*3aBFGGIhIoRQdzZG1V!tO@={osY?VP_LDT$-l&S-x^^#=nd3$FOeN z5&tE4Kh{lq0T;l1@dZB!J3(~Tp*VdWU}weiJy;*}Bx0V&LHU;<{>3;ybQt=bP5S?2mr_D*H2be7Go1<$nI*@;7Ba{|&L9|2CNA z{n!s8{TKEo9m$>kYQ+7BTL-=r{}AG@1kChkC(87HAL(DPT1eK!X@7#BoDDGR<7-pw z^7}kumwzU?%U_0_DAT|C{Wwo)dv9uYYF+@hB!3&^N1lLR9`Sp?`$vUjCEx;>cBhR0 z!;mjLSx8nR?nhj~3xnbR7~wC*;W)HYHCMsQ0UrW40$v0+#aI6j#*?QCNjKpA;GX!K zATPiOd>HX4;^l)`{vSj5mz^ynb@AuGm%W(P+PRW{l=2$xf53;pw0oue7briC{ul5ea7+9d%5mNe?P3|8dh zZ$$E%>};=uJ;!UFnosIt-(TD5QeJ?(6@({SfBg-RUx1e@&nsbl$Vb7p<0bD0^ZXLZ z9|fQH44$We_k&l(Bg*k|?u!?g-YWb>2lD-puYp;=Cs5yoS}|FVcq8Hp?0Omg*AV`K z+lomw;Qip5_>Un!uTe~v13m(-2fPSwh!6e~*tOk_=O^I(;EuQj`TqNgNl)zd?Td$y zFP(i#UZ?zBm_Lg@3%;O>_5izo@p+kw-JaV)`27e!3&OKM zCa_CR`!mwp|6nma4~FUasz!Fq^~jFdcF-PgR+L^kKWHo_y@*#MF3V2Y`NikOG$r@@ zxGnbiX10U2AI46UUQg`v%mxwL4%+$K?%C&=wPc5EE*;I<+vl5=#UHHl`PrM)#AEOR zCV!2HTM=)IldBOQ=bO#MKHsc#QI?}k3!D#&1ffV`K1^yR{}ZDH|vOfzFAkC+Ua6^??*g{ctv)^nO!f& z_lQ>`ZptqBb0{CrH*1M~z8TMRVR^|s-)u#E7ntXpb;WM~p4jJ`jl@3RY)$O*&Bg)q ze6vZwJl||RV4iQbA@=!Zn*sBDvuVIQ-)u|l^UY}Y%=-9zvm)$}LoP);6x06g)J7pa zzlGs_z8USL%{VHD{CR#;NBk)Gk{5CQr`YNB0(k-QP4O7v zm+II@Dt7&7r_A#HIpl@=u#fP{-OTexLit2|^AF?uyET{0#NP?t`!MY7PG;dB24DCH z&UX=~_32}uvN#=Yp1?lZh&vI}?w9#bklqpOTdoIu8r%r@B)BPl3E|HlBmIC2V4g?9 z^e89y#25cld~a^z{HuV^1NX(ZLSC5S{)^q-Q*hXyW)T;wyXCecwjHzWh@BqohFQLU zfc)mV&|gJdi+D>+ednHM@O^Pj7XRlFe__Vj2YkO z1+0sGUO*Y|fw2BO|0CpP#Ic=nH&NW87qV>3r`Q=&K@bN8Gp}3-9~a0f*_;YMFfhkD$Dd;d?D&o`1poEHB=;JH7WH z-klgWcrn}u!O0^yM?{?ZRT*S@?z9~sFFlTPpe5fT<6M%q_@j4V>>n>C9Wcvz7CiS9 z&H;&d5Ha=C4Da_wS&U%mRT2BW(GsV6bc_S-DEx}}oICNH4zQnDdgd#@^uq#GVw#`j zHSv9rAKX|--YtNh;c@2KP?mSS;!AU3Arx* zBl6}_vMGLv{OnSC?m6$*`LDw~^7*A?TXJ#%T%OCyXI>Wje&SV;mfzz>OYCu@E%tl5 zE2dwTYhGMP&p~JY_R}(w+R#{%x`Q zBi9L79?xUSV$WkL0dpQx6MG)h6g&Nv*zMC1yM4N1w@+W}aepLsdK+LqzsFI(JrjKQ zN`BAlxnKR<)ZYfnPd);kN&Y@?VRkMD!?b=M2ERO6N{ZsY0AB`Y4V8c|0oS7N%i^o< zMtUur%O!pf_<|D7RT8_ry-3~<_$b1U0$v2KNAWkrZoe(D+izR!_T#zktbaO>J%e)| z#lHW`VwbNj_Wf^*eg9X)zW?2TdH+|%zW*b!)AzaYF8{jZF2B!>cln{ZPRsB6k5AQ< zonBr1+i35(2ll1sz_Y&Ql}O$!X7NwF0eZW$i%Bcs0=O-<-mxow2f|l3p~nd1sU9zo zAAo!y{s6*X@Z4fD4EO+eB>o8Gr76zE3-|ySO_aT?LVQol;vkGN4zHXci4Kwc!j0qwS2H|H`Ct=>tp#O;@iM>tck97VksGmU0$z?nWvF_cwUyi^>X8g+oeoy zJssDTSe_47(O;mardb&ZxTvrO^^@ACEp5GF?d|XFjcylk}`k_qj@uv|m$DgLy zP;XCU_YGYpvHkJoiP{;Wyv@nj^%*qufyvo_SeytoJ@Zmoq$t+9b)_A7(_gZ zxOpTi5B+J-KSwLz)IUeSseg`uQ~w+Rr~WwtW_km${c~)HZKu8|w*L*TE3o~{Tt^6b zAoln&6#M-@7W@4_iNY5z%+kA`?*q(Wy>GyJ?26>pV^_uL`viLHTENs}*TpVRL;R;m z|B}Pd8;h;S_PT=g*geV3UPmz7KZ?Ke?f=C4`A1qu@P2;#JMn)0Ey=x~-{;<&i$}Be z@P2-;J6JxBu(tr{54;ProU)o_-oI_4Hc-Q%}DgF!l5^vGw$c)*Z;y)7$?E znRmDdeyf4X`_7T@*Zx&g~$UW?fNMZB)Dav}?Fre2@%&D7h6>Ct~k$kfw^ zyczL!#L3Cs;qA}E{qYshL*(|fxPN;xy-cbP-pcK1sVAeJ>b!SCN1of$=JvGE1F%2X zewKQLkS7t3@tse(*GqGI+N?ctds^5duI2W$Q|MXve9*o(x2MhRX>)tpY@WJsRc=q4 z+tb27ob*=yuFCCcv**KlVC%Wexjk*xKGxIa_Ow}hSWlPR(`M~qy--nlC+meOV(Uff zV9w8Sds?iUpG{J~zoFjAdNGgBxjk*xUu<8S+tX(4k=xT^K8yXdxjk*xA8c>?cWqDm zbETy; zweT;~x4bP*?Qc))NqXX+N0{?Z?Ma5>FMto$u)YxRVeneO1@J_C*#}`ScK4oSD!vzd zK8$a-#P6c~4D69mXO_oI``wUX!j!Hb*d7=rPP-T;O1l^)Ln+(-4kkirddN1tYLeUj zt|i{F2adw8O78fvJ#9_)oVE{ch|jqb^&QM5EwSx`ZJ%m;;Ev>y$!!n3A+|m6rr7qtQ}Me| zAKE`}iESUeEw+7d0=+%o)3y&Tiftckdsy28*8@52h1+7^pB1s!*Lq^lqgKV9M-9bq zd0l27JPMfSIMV)=<+FY8rufqc&vP87V%rCAiESUeEw+7@?O|;%TUyA{x4mpxY%CZNFywR@<+YBq!5;tt>tU z`!m|lRsyE|T2*ZOwPmsGXX}BS_G}ID6G)Htv+amG5tpzI#OK@gvla3ES7ZFb%cm;- z1eo@-wSZ|qTNnF&H^jD|ZHsL`+mFHz#I~R1Iu*-f``Hb#?PoW|wx6AfZ9lsmFzshy za-XJW`&rw+l4(C%k=*vPRk7`5>k&62rk@#>*WXq2D-&`lVxBJ;%6Xn($g_yY`!l)Q zcSCIZ+0B4yKRXrMes&h|Q1-31pS3-#$LERU9-nO=Yx~)m%(REy7JEFI1#~KVasBVCzXIXo>avi zPig^kJXscdJgEoF@nc17d)Q9Ew1@49Z4bK|$Y~Ed5ZfMhD7M~n9PxU@E!oG~9(Gl1 zd)R)!w1>4H6WYJ>{JOE^WZJ{72TXg|O|k7^w3;u$9REbva`C4Pkn=kF{S8j~82#`+aWvS-;PV zkv(h`%%hl<+O+05ZfMhQ*3+K?TC}e9(FzCCen*|8u6O!V?T%dX%B0AS=+--B)2{6y4d!x zn_{=;RBU_LBAyLCAGU`ri>+s`1WbF_YQVIItp!Yb*k!TpVe0|Y9<~uM?O~f@+rzfR zws-AB+>6-uwYG<~eXZ?bZC^{KJ#00yhi!=6K0I%b?XlC}#O`k$vFG=zV(ZxlV!!X# zBA!HSds^GSuE<{2_OD&B%hwaz{?+!i=Aq=aZ}mEf*?vXL4cWsw{ib-Q{$kg^C$>GS z?P<;S`{DGqqx6cEtbLtcN$mEliEYo?5Zj)$FSb4FL~MK3;pJKSZvSz_>k-F(HEeI2 z=vq6TrDuEA^@ukkZeFoF|CNZjuE74~@-3g(&9<+#oPIRI@E`tQl3>=JUVIOI96a}2 zl2q_N5&WIUL=Po&9A}qM@h0C@l4!@eBsF?p?;6)W&4Yh#Pwv+V&70K}{y)a!)<<<){z>J^j10i}F zdj@{4>k&`E zVgKC{`+jnvgmT}{qS*Jd24;S@Bfq}W?uZrIf`C>guMiH-xpJn{}u)jCpi@=kB&j(YF#qv2k^;G2lhWK-5 z@ZMV5&D2wc@{#!ULwskpkzc?C@MgqQ@p}<|4uknD;v)1+OyBa6^iGK`@9TE|T9@4Y z%X%#LFTRXLAJdOSvG53jw za_X(fd>@=TjdR$cha$h`Cz9kVn)3Q{D}D0ZjkL&Y$V`#lMU67FzSkC}QqIXL!r$@0ib5Dr)*1P$BSnp=G-px$C8q4!~X(EE@*UR%%P^!kv8>>_-_vQdT=w~o4~Dr zPl37bn&~tCaqy}*?QfWW^aJL6WFY<~gfBckpKOZX1Fo%MUn4lI{}_54rvI-XKl0Rk z>VMTd2d18f{J%ne`2_I;UIbImL;2AsP(S#4F9&=RxF&XgSq|g{$Quzi#Vbf}?gjXZ zkGK=@rub2WU&3T+8t@#r1icK)w+4CTS@@X>xB%w9Ys!BI@{69IOYKd~2f*BCO>Vpm z<24p#xz9Re?z1NE{pWa|un5b2)*-J(TrFqvo%Rra9pW#Zg1WATnD&QNz8)BDtGmtMrz7_FIe9ynY z`|`0lbd0P#4}tG|1b$HheigVXcKBK#FF;<8xGDY(q*uf`Q7d4s8&S{2`cqy2cf?-+ zFAVo2s}c7j=00-9zxiLnU-B69>40wr*8`@U`^p`@0B%Lx7Wa_e-DgprfL{sbK6A#W zybk6*b2G#D11^Av5p!QT!~X}wFFpsmk$?|@CjrwRCG}_w&u_?u7hp#c@m9oxV_EpG zLipDdp_dN$6qtH8rbqe9z|^am8J>DIa{)}fn)wd!w)hFepDUk}P_IV0xfC(=T9khV z;g_rDB;A1T1g{4CD)1m+%7+0Lz-tkY#n*or?YWHl1bh&@5pV&#DgG9OU$_nRiFg(< z^;|6f#}WQjXV9Jjp8`|wW%&(Y>b=YizaB8po7;?-``Q`)i%9>~528E)Uk{!Id?UDc z>F)5QfD4dUBCd(Q{HM@|u+G4J?#$2J6yFQ^!Yan^h&$pRfc%Y5V7wB)0G_L(|AYB{ z;`uMv-L{bQ#lHsT`7_qrz5N7+mi9ujCiyCu=f|uE@ed>Z6wLB{<2y0_oq-=G@pbQ%qIfA0z45Xx~vCu`ctLn^tZ%L zKRKSIUxQBS(Dr=7efP|dya=v{Tj0y^vCn<@l#>hKx_A|Q>IC#n;xXe_p>GoZGQ*!* zNIDVsBCeqyF@5*9<%sJMC+JtR{3we(epJLBKk8!Jfzcl@pGRNx|I6}IpS=hA?4jiTo*PHJ9`WjRS^U@X zemuC43?p8Pc=`G){Cg1o+AjJ_z*mFmKbYn5_kSy3e*br(@ZCVp@AK7w`TgG)`}=tcV8Zv@Qm@y&qwJw6SX z-{Z4@`8{5Gnc7FsR~gLm`h8jrnD5i3*zdPb{B*u9ldsF<>oUpS?77L;WiW1H-6mg` z$@)XSE|agzaNlXZE|WbEp10-eGFf|gUYM`TWbMIqntWXb>m<>-OTI3X^$)MJiy5 zWGe&tx{Ue*)?M;-8LS&=-Q<6ib(ufFy3A*_$n_%rE`AJv%?%~|;(C|YPb*-`ePKB| zm3#fP0j50lgHwk+pZE%-SH)(GR=@@DiWtArtAl?T|6YW@=swuVOm$H$W5PI~7dy{WkTuTY*7=Op!oOnw6yjRO;eH2iJgBe$HB z^a7p(uZkan{IxH_4lCf7gGXYw*P8f`VOLey#{PteH^iyGuUV38MZ6vHgzG?PKVRwo z81QFMo+A8iO(iE6z}sNnAKRmFe+=37C`ln>+oRa8jO|glKgRKCkJ1o(Uef`yJgGg( zwbpzgQ#D`+>gWjEr*FkT3)x$MC|^$ zDfaVczccQy$zqn?lgMuo4@bJc2I>Dt@D&}{Z%a;I0&~9&^Cy?VwSXC(`)?>upT`Ga z9~W^`oIa1RCtQiR8}qqYdMADs=OjLc{u%Iv;B@~C@}v9|xF5)04ju%&2p)>xjqrs5 z{3b-a9`Wi@*1on+7)H$fGVCvwclTxGJCx*G6RV4icx_B#0#<^?OT z=MDH};Bml|PsCaK?n$^m=1c93{vuA>_gy%bGU9aq4Dz#lvOkOeUC95ARoDXud=r>{ zV3HGP?%$J$HzMZ#8J7Rjk7K-e4))99o543uVXrLy4)Dq6VLu(nPeQ&0X8U}w zisuFAT5gNS;03%4isxr?b2;J-vD?pnSUeuu4~xgcnZkQKEFaF&cYV2^Cw#uSe<$Q3 z_P>zrho&U9ADU{!_N!vK&n0wz_M>9v{+ckqb?j#$-+wi`4*Xt-?I(r%T`2cCf?MKG zApH68i?SUs{iGyV7fH*n1}lo~C#52`pOmWDeo^WXw<4}!|3{d94b1+*`AD&Z{WSp> zzzv1BePdhlfBA8&dsnpI1@XzJz}(-$^gaJh_qPPk&p>j|zsKSo`$h4N{bInW{i1ls zeo^fH#dQ&`&TI6v0oHBy>vec%FpkMJ@~#DO78wJj(9y{?iXSD z_T$3+A!Pb(xvq!($N|%j%UEnbF5C~o@b=@f5y3$5f*B_ui6fWMA?Y{_k3t`#cEbn5! zLm0ou{SS~I{nr>@u>U31`v;uv#|XH@{Q_WLZ$`Y&3i$u|cVUv`--Y-tz;_(`nVK)q=HG?cxSGz(AI!fC^Y6l-Kj6DD|1R7;@5sLkv-hjN1M}~~ ztUdDY!u-3C_R;xwVK!d+yD#0BkMA?{-}QIlcjLS8HCW5y^-uBlNAZ)iu>Tal_+4Oq zMMZM_N-wCnQn~dN4KU-U>xE(L{K_uWf%!KfFFX(bF5TZQnTh?KRKt24^ZRk6 zKQ|A%qKKg)Oy!@2yac4$F6Me-DChbh^Rxa5TUvMVYQ%8iwoBfQ7%rQ3$!quyVt%Rq zX9j;a5pRoMi}GGpM&XKC_#ybb6|9d2TmYBE{}%Gw-i7o6UIaHIZi&nAKk9|6*1S#LU|MG zS8RW_Z-Vw+5nuB2c;1I|3D>_UH}}PFg?s`2I=KEtxtadrLhfMwDXdRd?E3V@t`EO^ z7~b`vKRBlMbI9-182*RAe4gxoZ!2K>-`ftD{`b=LFNC-My>$IcO#gdju2+HI|KnKy ztYeKQ;=0)W^jZO5bYGIR1E&AIPQdin*B9IW-YDX6#Ek=4d0s!v_IaiL=1@Lzp$-3m zft=hEzZdekF8sVkJc_u1^{w!JaD9yI`>`VS{h&X&@O})V_@gNPB#OTw-s$fV&mtb< z1ci`0Ei*Blfuo&X4B?u)qBU`djf7{G9|`0CW9{^25J?{$Im> z@QAry70Nr&dKCS~h3(xJyS)d|dKA~QnBJ?A-)rv1e)ND(gQw!uo}hvEcf`rzEPiTl zf&Knm-(q^^YQ%}xvy$xc`j-2L&k1mOy}sq=wT1Xh{{txRdGEq}B;W#gMf|gn-`;`$ zgMd$iy8*un+zWUSJcxKG&h$pGD~p)xYb=lDBdvd_dOPO;xPD$=bN#%&=K6WP%>AW& z;qLzC^)bu0A!q)auN*&t`ANV9a8l0Xhn_}%s$#wpaW!JEUwM7Z>q*Y9eROwuRwAxl zv|HYYxEXQz*zWMl5!WLwZ%2KOV6s*Zcn;hY_aNUt!}u9+1H2;sH03X0JPo)3 z?urlp8~WvjeMP``fa&jx`JbVD9`+Ps=C^?K*Tf^p3z)oaM9l95#{YB37qFhR9dUBW zZaMvPG5qU4iFe0o*lPrQC7AxXEI$gS|10u`7`_JoZvkHkrk{GtkAmsHDvZAw$?Nbp zMfv~sN!SCxUWopv$j5&X_GJzDpA);kcg1go{Ja6$FW>@rRosL8icR>N3%CRx1Y7_Q z1AaYtE#NwMBL1UaM0wUw-%3`#+5~;%DbzRMSAqND?}z;881_@*e*-=~L3@aw2Nzz1 zJ&O1x@cs%W|CeX!lN;co_>O-IIqcuc0pA0zi2o_&@c&i|_;xV;X|X+jkMdKnXA(30 z1*G2=U-K!Hrw;q1h*!lALr#BiqlnicroSq_AAEJi9-sPRk52=!$EPtkE$^q`@A?Vo z0mS=$3I4XW_9T@nGWqi;KijV=&g}7EPZDt>;@XMb<+I;?m(PCpUA~sWyL^2x%lD>V zN|IN=UThHXmEcjp$G|i3M;QKH=innNi%-51TnhLYxGnxm$PYb?b%cONQu{|ox>2=^=EQN*=smfqV>;Q7VJV?(@Sk0jo)M*=hb)E?;(%xA@^J<=-br|`B% zqP{nLKI|{d{clrp_do7KVR-jH+UYRA??HVQp)8<(u#lVJFn#*_B0K$#*y+>XSD5}# z?Dz3F;`N9}*JSw*QJ(#$@I4M@dVareO8zwDCzoL#El$sIY{0+SwOM%UlgeP$$5%yi z>yzqY+rKo#wtr~`O#7F%*!C|yvD04_yM2aYx6erI_Fos<{$)$-^h&3)@>5^72l}!q znC;>AwEr)2Gm@9C+a10d@p8noh)dV+j$etG{;|UHB>yhg^YPx{RiCzt`@y!@{a_|` zKd50SWIxUId>B^;uv?nTzWaaap^V$}S$q1q$n|_0C!wdx^?dklI(PRt#B(LWaVgjH zWzQ4!ez~3x>o?M~d3?_GeA#%C>-n-bOs?n4#!t^ray{Sf_erkj%f^db&j(#6Ci}Ub zFY6E1`{jDR-Q#Dj=gay>uIJOfL+Ii7y`Ss(ay=hsod2Wg`A$L4hvldAx)p!lho9us z;@@b`N4YO_`}Diq`qu`S^3Ga1@Q)W#{~wgUh@XWa&S96_ybcsHAI?~hmJ8@NPJzihzd9w9>jz5j!Tkq%i z3G{x{Q#d}B(9-;`_+{whpTW84;@iLn&*EJ4fD7PdFzt10kB23gK3YhkID`J-q zOG;^Y+vBZ9+!tF9hb50Rym=gP9eO*~$5%t__G^n>f0(H4s{bmO?f)I9Z{dYPGK_dF z;-2(^)_)Ho9!0#ekfr}Aq+hNSgw#-%VBw&W8KM%@N{{t{qoJLH49+Z!e-a@&U+Bb$wd&ZDy zpGfxA7ys!x?r*o43<5p?9*Hmd71;bdgz}1S1>f^9${Weo#c6qaIKL(0sd$L^Hx1E# z0Uri$2YeNn{zX_`hcAlL^dBpx{zbz2(4R=C$E5#|kXsR#q4#9`Kll~+M0u*1&>oVU zrjN=tBkqWA{WSW(8T5bgHpMPI5^CyDw=ELASH@|c~FZot5{f96=r#Auf zd7-=j`9{Q>;x9mc<19(00bdQ?62JUcabE08SoaF}_26VFOW*N}Vumk3UXHjT9zcG5 z3G4jQ71(b?+yk>croW1^bkLpwUjQD8{~GclI@>7V0(eb) z(OHcD&lc13hnXI^0G>$xN^lb|ul0a$18<7`d`!iuecS_hIql2JXD*6Ai1hC6?nz1k z-wZAXTnASJX82mb1#lzcrug$`QC_@ETLHfo+z$9Qa3^4f?*?1|_ah#N-}Gy+cYb_N z>OY3I~J75@~{E5M)1R=_3jEMUru`?KfO_5~%e?F%Yk zmd{rW%;zQTPj$3k#J0D!d>Qtv;rP#U0LUKyX)jCm_}>%YWrEge_N5<_Oh0*LeBis_4Lmd%b>3?DhKXfVp1J z2`TIE_4li9$7~jMfflIJ2<9X1G|In35@`jgSpDMO} zNhgZm72m=1FnJv)yz9sFp_!hU_Ov1MeC3_~jq!35_NXkM$H!^F93QvDZ$*9!58{0q z@hsvN>{*%KPa^zvhZmE!nB!~VC7cH*egX2+mAy$f;6-pxe9dpbUaGb?Srxm#^dtE| z{3e9I5t}=P0bdCo2Tb`yoW76m+nf5UVR_B=N8|iv2+#I&|KxeiWcN?n+cLf{`kx^` zit>DAcW-(=v-u8iJCd)6)BGPqdqg|{Ge2KLvCA_SyF3%IpO-DM`vdKJ!~Rf;nD)G3 zeR#ey`Oi_G=4fxS8Sri3srU^Wun&8DZ+hM`!+!w$ioxDwCOP>|a1r*umY2cwPZQ=> z5vT3(#NK2%;ubh;58D^JJ-U*+J$hod$4KnWQF%g&;`0xp25muC9zk2SITBkj9czPBK~ zLuav{BH#kJukh}#Bgx&rxNgJvsUG$v%>Tsf&-?MdTo0J<&kZoksEFFXR^VUts39Gu}kJ z9x>N#nBU1~vH$fH(hv9`nD*L~^Le`o&)a&y>GLOkJK`7a#<>~d?;xLny|DOEGL%u< z;zZX>{9(!;fj#Q+EI)G<%=-AMiQS(YVz(#HKW2FgzYY8SA?%68*MU#MK6pj^X7HVB zuz!xi_r&S~0lj+pl5O#f#Pf8iU;M-1OQAfQihluo*$MdD4R{W`EuKNXNM+uM zEdBF;7vtG&b4fMg1~|MQws-gaSdrZKqa$|z=DHZm|IJAM2>dhC{@r{WJPi0|@S6Bv zu{=;7j>W&t_z%IqbHK;I>j5uI6I@D@01U)s}?-M+<>8M}Q;Vz+M% z%<|0t2h0aw!v2kb?*KOfrkwWoJN22NKStaKhvgZFU7j_u%QF_cJX0{!e;dkEcozLn z{C<}2IrO)yGC6q(T#k4d9OhpaJAa8{l4?(dELx^3+W$z0sD2uY5#r^{U_q7 z((`z;C3b#Eb$5OxFw;-_^E~z!27DY`3HWAkUA*@{qCF17e}T9PUaVk0p!mzcM^4PA z`vI6fc?rz@0OY?1zUe;f2Ne5#F$$RPi#4&w_i?}+-?zYF`)-R}U+xbG+qWck`~IKZ zFVItbzn=yX^E`0oXZa-Jjfnf#><-WU1Y!Jf#4FeCmfN1+`SJYkFn;UQZtg_fi@0&! z?(pr1I}tBmzdL+0;&#N<8+M1UN8F4!K2N$wrnV4wyX;UKcDCcQaIl>GR^} ztuM~k0rPdhd>t@f2OMf$E?)=4`*Z?*!GYcLjeH$2YY)%Q@^!$hJ*>yf*8!vX#RVCA zoiJYq%=(MJXYzHx-R+UD17_{vb&`A?Fl!HgujK21*?8)8!F(Ms>mSw!jiC-rqUg z-?73Udl=;{!@frRMb>8E zZxXTh8(Kb*-1S=*yM9x#>$ffTb5fko@-vqso`^rj@}9$=h@F2^ zyfg0?@B1qB-!}TMcp1DO`*$|P9|9NHIre7xe+0bnu082_;A}saA11VE`2Uz}Hy;PG=i>jbNhMxpuWD&o}tN1CL$;JWl06&!nvay5wN0hH*?|<^=@w4wC*vu+E`7pQ@@D1R0 zzy&apNb|e)_Ywaw_z@7l3fvgNe{jIZ!K(omz=Mc6A7FXjkN68uWbglwHzPUU&y*iW zLVLz2!+(MuAHwkB|6d6{g-9jw*MbYreW_j2fcU2>dD>3TBd$1Yr>))XvhStc?Q$60 zR(Q7C4d9i4xjyc8N!#ggHg972-h=WSzNs(zQ4S`umPq#-Cy{8cD@w(;+x^Wd6u0oWiEi*3jebRGl%_i-H6#v3~xE-dt_f_ z@t@)Uj_g}VYT}E z1DC~p$X`8%fA@f|19Lvc@RVNyu8B9mbL-e|8*wvY+F>#NzCXZu0cWuv8uKagt>A?X zq!)1`;%)KwBK+N3*e@J#0Spt}G(F1674a6+e_>Cu9C0J!axsg4^&i51xOh%d4Y&@j ziT^(3`(O_q@Rx(@;*U{|&eRCvFCac#0;J{p0_1mHjQtA%p9Iqmi|ujW^VpA5hyVD1 zc^&}mvMB#P$dBKR{iEWa2QM_Se>#P!82{udGct_r@70zL_*KLn=#)qnKg*?Sl8 zx~ghzc+!wIp$$zbrKzQ|Lus4RmL#;H38k=0Nt2eg>~c*Jaf^!KfXAqa5ka@g!N@_4 z_Xwy#QKF(o@e&Ux@rF_H7*UQegNXka?;Nvp?sxflp8tQo|9igYoUEtK zUhkM=jd>flHP=nXPyJkij}Y9OU@h-6>}=ETQ|a+H>hZmDK4|!(f}5|A_q-)|o#3$q zYq@^UN{|189)FDF--M?OZ~K+_6fyQ`!`fbLpF6}KujT3ta)vJxyx@A#-vpm7xHZA; zf;$te<@&w{ZI2$mP;hsG=Ls$u9+&dE%jEfz1Ro}NAi>889!&75f`<}3Pw=o|d_SQ_ zo@XGe?|abpgmV3Umg2R)miyNSM1F!d2p&nWmX8_^<2z1R-*=$$!uU=a4&ytWllls@)B;UhG@G*jO37#id-*=$$M})s}Q0#@UzTY4%pD_Ge;h%SpJnv-Kg{{W( zhjM*ifF2(uc+-rmKP31#!L@Q9kRBh( z>kNnSZ6MraIE-(r;V{1Xy)Km(^tan^=#SoKq~%|i_RMp#UXkEB!F>tVa(y3x^8ZHr zf4DraL3o&O|HAV4HDEZzKYhP|#%XlwkEI0|{1tGH5u=hrVAx{>i?TkI;KKw@3D)@y`Ac}eLcq0$ zm6taVZX)a!`|-X(>RZ|^&oddmSMa*aD_m284;S2Oc=7M#`NUrNUSon!5?nBRp_H%d zsc>BhK3s6o@JFS5WvRmT8vc>sifd$i2@eo19q!w^`eEVklkq1!NLasDruuZX@IRwp z?AP$e1UKd@oqmr@%O?fb+$Qst;5xy>39c5b?}JeO>PIAh`;0t)m*Dw=o!oa7$`w}` z?h^i*AISGE6MVGbyy3S>`8-+7D-!M|oL}nYn>yir30mLx^!NsOzSznY*9q=Pu$K23 z{;QNP+bz!@C-@}6LkV6ZSl^$Z^3VLebLVu)_w@|p{Vv1erwC6nuJgx#UXGt9$+N!i zK;;GOmX+f%!=b+Lz5#uXbi-+tZbHgc|Gy)6-tI~_WjJ??^ruiMlU&~3I>E}X_w{U+ z^PeWe&sF}SeDB6^pWwqUsB}fcTHoPPU$03L;a~VQc^)spHG=hh23oGq9WERbeK1@pcv+vcHz}`?a(%ynw&!AL zZ{vWxkHGN91uwkmV5jdl&~oU@EeA_dS&pj+4++-#!!~R<#4mmSftH8(rSCsb9OC1Y z;c&cL;mhxm_8(eT<*E`qPq4oKAgwQF_=mz@Deuz@_dNw1-bWDRPaFU82JuI7@-jns z_?ce*E2R9W+vI&KhTkK2-e=@}7>4yZ$I4N8KM3I&!r^@Z`dy@XKbVW}yJ`EE2(Fxx z_fH(<>kC-l7m$`0a^?N)GK}j_lJRsK{#TK=xN080_ol}yUL?3=G`J{A=WWEQX=a zC&~LR3AYli5YFDgw=;&Hv0n7&Gtyr1Q(CTgp5Q9O zJGFddo~twLY*W9e{8veN-RL~mY53cE{MY1triLFByy|*+pJ{?O2`(mhpWyBUKUZ*% z;Zrxr@%^GN3Em{Ql;C}W)z4~sJ}CUvWAgq6!w(A9_k|7-9wwX@Kd#3&94G61)|9s&u84lyqXE^wmLBqkn3>gmoWz_KFQs2@Ed7q2mYbWLXGSlMk zx+Fds#{0v1Bt98`cz>9FUrzZCY^!~L!unp$aCm=MgW>T0u+{|Y`@{74cpZ=M{;+Pt zLB2j8ujQeCeTGB-!t?T>encQRZ(_p5G=sLbz4@obm_x1;Sl~ zo5XMEc!l+a)&%SNL1%(>eW5GCT3$@Bt}pZ^Sl1Wy`R!ExaDw%CeV#j%t9*T)J76uJ zNU+MEPO!?a6+fl?A^)pOF!H|yYkt_7U@h-9+${Q4JuT;>g!>40iQh=aw}&u4KOVl% z7Ty;Zo*xhTqtA2zI|+9YUis+kbsD{nBTMU;r!ekyf^}TOxHlON;o0jne*R{!)5v*6LDuQ3{CI@xIJ4Jj{CH?yrFqQkbs9e& zVcmH4I*lKX+3Peug3Vs1@%j+1o9WF{n#YCfMpcGquhYnV1+&*_-0XE4ZyzE5E!uUF z+3PfN9y)uSX7)OboJ;EY~)&jJDr=oPE)=< zHhZ1M=Ucj-F?*e6_Bze%b((Vj@Zaq^&4Ik}f3Z{Hvnqj zICbIBHcxM;)Ze%rn$vx`ca!AT)Oz{|(ZAX0=|gfmNxI!3*D6)cn5>nj+sou0M5XJq z1L-z$o+7zt^N^G(_X(N&Zj4hbYsNT=9OA!lwU^T>_ll+4>T^B4YJN&}?vfpz-o2ol zemc%4WYCDN-$FtANzU)VC*M>c{*SkK{wC9pP|M4=dirQhp!na>c2DmiJvnE+r|UiA z>9*ABEiO!{&V6mMV!4Ny3YR1Ph7RSDd!vbeBj!o&LB@PWNk_^(49Y)7^XRGM9E5nY z*#8_C>A~*}VH_$me(yB+D|wcW^y<|ZUy(!pssZh;bnN%WO%D6LH^7fnX8hhO;rA*X z`@OmFdzE-LPWu?PxjEgFXX?nmRl-h0KG8?umn!j1;2=YPKMKEBnelsFoCwTD|P|ZinBId+|x%Za&G&VZZm6 z(>$I1-Y(clWybI6H-~hb+3!6Ldl$V${mSFFQ{l%daqoYi>F)&_^{>nq`L|yhKl{BG z!S9KFlD`^(-;@55-&?TT%V)pW1i$B>RZxzw-2uNRc0qpcNAP=cZ#(&`HnVs3dw)4o zB?>?JrAOiSL_W#c48JG(N&HWk-m>4j5Pq*RQ@s2E$|sLq z@99(Im!7nK=`)n+_Rv|zPyS>h^hxxD_z$!8*J1vnq$|(&a!O>^2cO~TGsOS1lRaJE zWtMI?7`;H_-)#1hCqLhOw3kyy_P%wMr;{m{K$P8Ixd z{^24v)?&&_ii}G(p{E~W! z|HrTs@o!|0OHKb8E&c z@;RQa_k^a~O>Lgu1-}(buFH9P6MiH8$~~U0@2X3;Tf01cI+s$NJF(r<^TdCb`PDAi zK|JP9CwYFoXE@!e&7bSD6Y2I^=!f_{iX-=$ztwO5rCSg3Rqu|@er|8ZPA=3w(1twjHk&6j?wEZu%#FqARt+QE(L6cSR59B=lNqS04IM?OLh7*PW=6sx$e|eu%El`;PGd+EJP8r!f1iP)qJ5th; zZrF>ovofVR_Y14HKzYu&`@H-fqHl(sR=a|PfOOjkeG@v3=ToqkYP@44<$t%0e-Fkr zmRyMZq1qKGp7xvke&X+iy;r+&;{WYll_|`JM%lV|dS3rlyI#Zx-S^uL=)cS_(JNr* zGA~5G#p-qN_d$xRqrzWQy9Tnadia5Ayjvo2%kxqlie%hiPqE}y*mZR#zW)aHFa0I{ ze)vh5ceE?Y`6l9NwVOFC(sb`*HTqZN;8*wk_Pag$TkU$Fr$&^YlXrM}EsbXh{z~i! zdKCHVt(^s;uY`Y)dY49C-CGF1B;!x~Uqe5IUR%!pv(ptfu=c_Q^)p*7{ZPAa-Ui4YPbbI@5Mb&s_Jf%PDEKeVz{NXFG ze;H4r-)45F&-$g?Hq2|a>nHvxhL1<9$fdEs@lcOm}CypWx~zgcC<_`pv@`PZ7gv=aYf2Oc0!M0iO+kgT@(5j=|%IyVK4zh&$gx8ueW-7iRcsNH+-CrM|{-$Kr8Gx(l3TyR=YvyU8LV;_TEkOBWrxU z{Uqm6_yzHkjZsF}t6*m?1+P3v^N0C?#f9~g8(`=2GwUZWL;f&7lRumaJDQ)#A3g~E zo1e)a9zgyuKeK-FQuyWhne`Lz$LD9(Pj>9orq9o;pB#hyVSZ-)=DVJ8Cw<5t=4aMVjz@f)pIJXy27Q(JrMPoq-q*`{!g|=L$UmgKoxg!!ka3PG1csa7 z2j*wiPrh)jm(TgYmGJNLGwUbquxqIo`X1|k1ok=K@%qVx^^4>F_YseTAAU5-c^dIX z+E4O-b+~UQub;f+d{5`~lOMs)%y+zg@?H1=nJ@A`7aN_|PYyAA;q{Zb@Uvn^6z`s4 z?dSEA$4%dO{p8LCzWuy@^1VHt&g&;@;NN6&Dc^V)dNV(>e)4CuPxvWMJId(1elm`H zNydlxKY;VH`I&t0dmDW_dHv)yW*5AEqVMWb|G;tNX6W(!%=*c<%>VHE$@uAB4zHhF zxZTrv{p2d-CsHrvEnk$O(f08A$?p*N#UIlAI-~RY$%ChQIlO*yx#>TzpS%uv$o$Ou z$%b8C4zHiAJIB*`{iKAvV!q?`ljr3;e-nOn-)}E8z2fzgQkRyC-Q_%A_}kpBd*TP0 z0>%G+(EKW|pZpN#1>(nu|L4dbM6W1ceX;qaZpvrAY5tbiPtNM}?cw#4@0vg4^^=#I zKj-z63lYEPXY!MmArF-JLhV`6;_K!0lOLEp^7_fR%@?nq{Mg2m*H4Zuc=^13ax?N1 zX%FQU4zg8p5+&bOb} zPu^($;qR}Xkdqe?|0a4k$3=QrKUoQVsL8CKJpV+kwTRqnE4l`1AV7>Bt{yGV3QLlh5lX7r@?Y zGV3RIAzsV8BR<4&$mM;%c>UxU*t^UxnHQz2V}kw zpW`79@9_MbFI@w>uF0&Qd}D*>A166|@RKs{Xjhc~N#ut$ne~%Cn1qa5Gz}c|%{^W| zub&)a?d0{73z6rD9YK#`y;asuUO%aZe~@~YMqb@}2>FbRKgszR`YH69WW_P@PqVIy#cJlhkrN~cY-YMVs2K;;t-if0}hV5zdW4wMcZhnu~ zPfka?6T2XLe*pPLP3FF%SDGF1`pGNd_oY4X6QMQEoon{O>nDH4I7+{AkyrOVhj|sf z!uZ9qXIOi9{p3Z+b80f{Cl8vR+q zL#$q2KlwcJ8L>O~gV@fy&2RAf$u-DNME}=EUfs)^f8h0#e*vG^BlIyIvlxC&?1JR{ z6n;VcB<3yh>t2N;=OeWLI8{p)x^bK@>b~C=!M+yaTT6kazq=9N7dm;3YT5QT=<`C? z5C0L1a{G0Ep&KLq4`N;yx~6%NSNHBgUa`;(9$ZdehxwIy(eGIHVT{W{yhA%u<-Kdr zb7?=x`4se4#)0yLX4u_Ae0wOBbF8&zhWLMzSFVL_is*Mi52XFn&UYdYU+5-?{}|Y{ z)LWI->fE!=^YX`te(0f|-n*cj|5xyX3tb8RGM0_(@%(i}|0eu~%nQx?V`qB)PWa0x z=LzWTLcCi#Qk}aW_Oj4*QGd^c{x5WSifgX`-$KW6^ZU?$;fH?38V)h}e1F|1kS8y6 zlhl5<%D2CPxz+3|kMY*J{8mE#v(OC_{{kC_TwUPwzqg}(GR~9_{0VVE^bPhJkD1x7`=Xz) zgGj#v^C#`hMVjutbeaBLhEYGL6J*{g4xW9!m(xW2FEf44QT%-*=lLgS98NNNCw`U3Z|~Ztzv53we!<3boaEnT zey>00j}L#R;FlL>;;fce=nE@olg|Oj`CX(3d%XgByU6vEOMkLi1uSwy2bBwY5!$^d zb3gNu$bS}P{PUj?R~ET(_?sx}n4MmJE%~uQ_|-+OVQ%Ery=Cy9i|~z$wB#80=S3O+ zU)7~ti(Dtgg*Tt!>0Pj=C}|?^>C?o2BjU@V%z4=k_7_G3;lN znzBF_4mV<#Th%Tfj%wH*y$f&r;9Uo zdL-<0F~04iZ4TSDu+zmEJ6!}jU7WGgBVnhDGj{rWK-bhgv$ zV5f^Sc6u`GbaBQ`{{;P$evy66ft@bS*y(oI!{Usceie4Q*s-0y33e*|CA<3<*s0LT zPJaM9m2n{c2VketezMcwnm(|d`uHdFLiSP#JC*j6y_^d>6@4Ik+zLBgoUzk4LH`#! zw$l>Yw>V>`{{%Z-oUzjZ*s16z*~K}qQ>mBi?rX49(Fd|q{kEv;3ESxr)=sw58z6Ua z#!kSz2f0npm@gM1SA6&^2H%RfcMMP_R#)G(K*0UXodl{VeotN#?xo3Fyxfm!tEn7efD+xJhcy`B*Y4ZdP4sJF7fW0}(U&3K37y96C~M~s(I3Wq$T*{Zt;=tRTfI}nzt-B>P5Hnb z@Fz>$80r64R;oOicjA8@^ka#uB0ttx=lS&;SLt@>*`7X1?R*+?m$*^#Kl68b{sHn= zmFIi<6v;WI$zY z^EE+s@dKP^iJlXEU!#}POaAZ^$iJ81+ds+?wuj*#MW0E|;?2q-b{9i74rwtvs>3`4 zDe|t~^`3u>k`*Q{6ELI zi~hhL#5yiR{9WQ2h+c*D6Y&p3|HKC0o&lnN^>9ybLR^jVe}0aqPZ0g$)t+9&{6zle znjPskRMKsw&2NGHmwj}d*3jeqx%kyrN)MH~^mC3=(DV*!3Q9&?z< zDZmaQeFN-A^cngU>Gy5deX(nz58M2968$dIhe;ZrG0f`{*S9gs*1e-_-iOIf&o_D% z^2B(|xz-*&Fa9|Ei1=rWcjSN2{6iP!EzciDjNUy>{l+C z-&HBMbFVPJ!Rx(E=I0&BdFVJVrxSi6$~r3N>8&&lKkoGOZnQV@-v_x8kBI&%*qivn zV#P^Mpv# zy$fwT$7p;mgMKf`+~@H4(Oym~+1;5&ZzBD_`c%(fY|-Di<(hS0?1=bphukG@i1g|R z)1Q8#tCR{(iiGwH`9CM2hrIF4Tl9#fnY{7t6Fr^t#$RGympaZHe~fm^pprkl^l&eS z^Tuz%e=W`Ajq8n{^TzAo-Nsz7)*j9q*I9o#Z+sWx%F;~Uc*O$W zFU}iR9OmhqH=c)hx72ao*k$v}dE+wJ>C#NzxD5VlX(n&{H|WRGOx}1C{IJwpT|RCv zINP_A^TrQ>Z)qlPym6=J=e+TR^F5vO#*f0jmO9QGzYV{=G?O>J7J4J~V*X=WKeo%u z=e+U7`#hcV#JtQMD&N~Coc5$a^86TW>4q5 z@iV4ZoHuTVKb85Vyzy$BzX*LV#gL7pIXcYHbh!^kU^I?fv(#PPxp{}+#0iM(ZL zCU5*_#5K_$_=Cv*YqM+48{dn#xiphE9)oxw<3@7Uo1fvl@wjufE}1XHu~_dHk$;GM z%ul3`nH_Q7c!}8s=Z*I)_VPJzeA4uv^TvNezPHqI-neUzm&1AE7m(k`I8)xZ-Q;lI zc)g83=Z!l~^YS@wth9D=-gvOJhx5k&gnlf|Y z2cB+mne)b5*828y-uN5Sf6g2KvfuM_-uQE~FU}i3g}hOmAL)4q@KVQl2W{9Q13M>pr-Q>^=`YT$Wj{>x5kkKjk?O;(TwJ8zB0>Anr@O zB>&CTTHi8PM|7oDI68?I+Le`>-$wel#h=&1|15W7biR2S{PuD;i2O*U`pw6u<(cam zFUGtt&$QCeFYE_V&{%IR;1{VaE_G;UkF zlu!Ca<8u+>)AG#ypOR<@kngq{_Gc5MP$NCgeM@Wa@0)U+%`K z-p?VglktZgME+N=^Ze747cGT968SU^zgXn?hp67SZTIxrl~K0t)gX>bdx(G2>7HM| zZJ2JqhQAW~rS@EmxG(yKI3JJr5L}+f$8V%RiT;ZnQGXw{ano-=r&~4hD6x0=gIH2w z;22QuyeV(2tIe#)g!0!*4!MrZVH+54v@9pq%W^jHJOZFE$y_kzM z-K#eF{(X3{>~qL>muK$(x!wH#aAV}vy;q&9e??D@(cie;nb&=>Bl3s)&hd1dX(icH+U4{>=#ChouK1m8}M`xoRr zo#XyX5cgMP;{IO{e`TEE&-7ToeH3;r;|Bj4sPc{07TuS25`7cm{)$Z8-w(gKA`|y3 ztzM4%^{@xgH^hNh?>5B!6`8pIUegDT`!hC=QxspGhxoN36Zil9Y~L@A`yWUAlJSQf z#P(bUdtTuF(U-XUq>N_wlBA>=*3ga&FslWHzxN+Qfi2Gvi6!#yqc5>YRKK#G<4XXD{tC!<` zDd+peasRo{KdG1E`)AGGIqv^0*l#>V!XzAQ`pI$s3ghRv{|4BJj2p%MxrqDH9{6vF z#-E>=AK`}AK`)_MgdE!^8J$EAROT85L z*FbM%(*ADTrzB7$zwShpe^loAjtgOjN4Y62rmez}a!UDDiHma*y1x!5`6Sw1pLu@j z8?bAklk79$AL`u*(MRET>RmopUa(+`;(9l5P&xhQXn(z%m{U%#Gda`5|1;zp^=^jv zKZbZD^)4uv^UGa|>)mKYIei|+v)&abuXriuqu%vMo|SH&-LFXG%uT7zeF}b489*-jYPrVx_{ujWX)Vn5(N0jwr#KC%3Mf}UG zU;JG5p~gQz{5v~Urs$98OS)r7DNYlNO zZG3tt54j9^n&=_Lg&oLSq+jr_QC9Pzx-a%Z^c>=X$RYaIO%J@CHjdN z7a3>RLFC`M)AM%`{W9|#b>xR%V)okreUEakwsGb>usQGLb6)pt8;2>>6Xo=ne{)pt z(PkH|$Oj|;Lb*qcTt@B=5d}rO!@6g&5p)km&)U}e#CdN_YHyKe>)Hd>s>A6#j@{$PxK1<80ocU zFFBI`Z>Ik}ME~m!J+|JJi2fevpY#{w8s*oS-4&_c@x5M7k@yE-Z}o2I=qN+?dRsg{ z=fnLNU$J+Zmqiw*_`NQ-BW{WPV%}mMm9Sf}FOu`lc3<->gzmpQ+B2znrPM0srE zZZF5j?O5;4i#@%7d5HAJjh^0+i!|N)#%cOj;uP_Z89(RMSD4=V=aBSRzg=Se&A}f8 zs*H1JC((amc9+XVUfo-T^OSlw*-%b@QD`U8Z?}3U*Oc?$8|o$gqu_VMU!foIn4QQo zB|jnm`EHE6#7*M=7V=EVi-><3#H&<}}&ME{PB59hHr zn4Xk~e~0ORFUn(o??2wRhp$V%x7O3U8zZmo)t&F@10?73=Fj=P>&ji>XwZaq@^&p* z>EK><*S1q(w=3QF!GYp`>(EY-b5J?`S@6p%Gxs|c;onwf;$}1A$jZ!fJtNSEm2Q&i z{Q^??m2QaWTcJ-Y-2l;F1-q7hQM|Ym@nWUxC;rdFpRRQIs`7q4nO7|BuPmo8ho4;O zN{5!yABR3kd!S#j>}t&4N>@dB?`NPND_t$ozX$tYnfZRo(!9zPIrE}y-TQNg{$1&2 zNY0DlS68|bYUe8oo}cg6niuLtzMwpQI||3IbQ47X3F4WI1LY@oz;6qk;@xLYQ+d)a zqMwd=%F4`p>V6NuvC=h=93TH=z9?=sn*15!-v&DueWr1%G5I}2|MFSB zodt^H+l<~@7yG1p_rU+ld{KM;9sXyf>!EnGVxyNoO8g6L9C%&vTKGL_Kh^uZHZO6ni}a7|^YkLc-!pQa&iTN0^Lu^dx*s$9ojxYY);)iJuJ{wmuMRT* zGqSpzUr~jBc|cjgvEm2kB=oSp@i)xxs?7SvO{eSOLNAlzTr2c#Rc3wTCXsc=L#?!OP+Gjq9O5t1{~w+o7MUGV2>>!v0rf z);GqRynK!$3$0(gzVTDETjqu0&MBQ<4zF+g=NX>P>ll>fM`i9J}=yke%0RBt#llpc030^+0Z%o1NM9+zTo3($M#y`YV2k+B2E=bY9>1JmT6a$LkyKHT~!HjlE_^ zyuNWQ@;&iO8?>IdZEe>5RhjjT&w)?$3i=rNp9ppVyN~quoBs3q#=Sedd|u!9XXxLm z%=*S7$QwjIsoqz}ugZM)=L0yeka&lA zi}n7+>gDx~OWJ*Vczxs57MFQ_mM)$S+`@Yg_}_?~Xc^x5m}Z@p8l8gW%uRWZuK}FYqU8 zGT%43f18&xeQ=QAe|I8YtjWAr3@V@T9bJn$S0v!Yg~@b z_y1<~HW2-2uOt1-(3>@`hv+}bdHx*f!>+ZSK1k(*r6gLg9g)f(4H{I9}#$ePT1MJ~m7t;xI}pzmyLo9Hc#=f&_3 z(qCGC_z3*1@WcLMzqY{-3Z3HhSC9{g96IlQ3~_EvCho7Xap7w z4U!%0=<@tk6fa(j`Pz_qPxvV2OX$S^)q5k&dryD(efaq(Wmm6Fi#fuX$g&SO+{B1M*vdjzd9}7E|cEZlI zF26l(?d11dy&iFAL+1TjL(p#-ADWlq4wWbEsWHL!^A5zR4Q__|0MizJZ7rU+_d58!4XyGUqrt(=jE{9_VG;Y2>p(7CSX4zANm;SCnK(jU!u5n z!&)!Dm*Ur>!H-egxwXUd=hsBpy7xTuKfL~YM6>7bqqzL!ZcpdutzH8?lX0N{8bm`S&#MGhsq-Xz|kU6KAL^AD}m&SOvT zatcI0wZ+rNTmCP6A6+a1njPi=NBd-vy&hZ%|(0-+v^20RBnq z@>`9`;k@E=h~pC1i2q^a35}WWjC3Hc5dA^FgLLP%8$ah2JIv2a!OkN8Y34ULuc);4 za9*+RY&}-|1N1S<(Y*?nC4N`p>zst%VETI${77@=`L8DEakJ|@s9g5f4pH3f_&%SD zVdu@RMErFa$7VOQs9a7r;#{+vBK~VJF3oO);(OJpzTN`Se+K{7oVoAoap<|oC;mS{ zpPMuHAAT5i*X)`o4>=e1CF4W%&TYOu{GN($*?2aQ->b3qOi=!C9^$x+PgVK&ycPP{ zoOzz*{pb05`ze1o0{*bs4U^xiM*L`YJqya^pOyD=2C3e9#C_@S{Br)o;UAmb4DtUf z{C0EZdBb~P*PZyFGp6h)C1D2NCy0uSm{c%pUvby#6ec zUq|iPX>z)Wev-An2)&4Pzccs~q91DdGf4DjB7bPkeAn#LaBVVQ=D$J>jW`c#cC|#; z@(PDe1Xlds1%DXn!5<_;8j{V_Q_(K^V@-wf1Kirt{hi`^I-00XJ{^u^=PWFd?hMjE8 z_`_54o}c~ULij`JFZshKjn4k?b`@=@~!;Kk# zcoqDij5GPeGfn@i$p739e<<@#<8be>zMbq3UyAtbD_`~bq4`rOmAASep zDC0nKerxu~{&1VgXMgDLXWHo4A0BJ%XMcE2@F(Q=o-)6|{%{HW;l_+Vd?);&%oq8+ z&YiZ?+&TiguBHOhJd{--7L9;lD%=$zOeAua`4Sa%$l}MGpDB0^&kT z=DC}PvA)pa3K+l8c;^P-r&`=Fjq_X1@%1)Qd#-Qy^bzvIpWo!^{2kl9W_P@v_9q*k zDd=@<&k@MmWFEzxL-meU#+vh5d-0qg;9Xb{FPb`jrb5|9hwT z=LYC?EIXp0`z@}I#(%!~u`X)Qb32TGb(Eod?=e4LM{>qb@cg{4_#E?NO{6Ci)~`Vt z&wh)iB^tLkBOZ&MuPblQVjJgiqF-eGkl!~uy4AOHl=zie;Wn2G7qoq@<_VD=@`P*A z|IL{^;R56dn=^UBA?VlUOrCHJ^lG!?JmD<(yUm$Ap#gb<)JyrsmC*amnLObU%-7~j zp72SN&w0Wo%+qGac|sff)Mm$d!l8K`vdx+M8`nV(Mb5!m9=AvHx-a8H@$_TJ6E$xgZ+DZHy zktc|JqF)aClJQ4-V|$(l|0eYw5^1{kd)S?{pXi6d4@-L}zCUgA&hO8E4g9%`^TKlZ zABSCRcAO{t4fZATi{s)kCnL^n&g2RA!(VUCwPcsgw2`n-M5?Fah~uC8z0US4n`c3aYMVJ{M%0R?cqG(bBNbsUx*Kp{{r|^=@-fQ z5d4&k8^!mLv%GxH6P(q{dBWjVFXsst9dB}Af3ZDRLq9fW@`R6{?)f=Sc+~t7=LzG; z4`lo)Pk8qEUJmC8cbZ;tp73THf6fyc%#Juuc+~8I^Mp3Uzs;FEVK4H8&6zx5nb{HN z3GXnw<~-pWu+PnzJmJmA6EnbgX7~5=1Wcw1Jg~h`_U5=qZ*BHP??>EebHn7{_QKxU+~`3EL}2G2 z*n68R5d9I1Pg~~s)647iu(r&5Q`f++wq^Y1QSc*eu5@sDy(?iCZLW^;idyJlo9nJD z=dVFrX>)_~%IObb-rHOQttUJMztQIS`N927dc3rU_=jL8ZJGO9oj@gC$W(l7YqKy~h0utTv6lK)AQ(@XrD ztX}>u&sSk`qE{4`-*>KWPcO~a=eK)0uO}a2=px1Hwcb;MtT zJWce9=pE+Ae7+Ft{Wq*Xi2p%7k-p2uVS?lwZ~DOb#@iA9#Ez(6Ti~CizqCH^2b;$M zs<-hh->)I!zZCY?=4MF#e)G5d{?hZ;csV1qo^T!XQv3=0aqRB}HV&N|B2D-F{Uu@- z$CcB!n}4XHb?g_|{I(MR-(V+Vca7z8K5~NMw#@e>H{QgMmn=SVzOf$j zDtZEaiN{PKA82!((7Q~_A4K`T$oY2q>k^Uv28%oSrbyGh<8%7AEt5arZFZeQ|CGmX zrM&)1{Dr=In*P12RsXg*AD49BZ%^&iU$IBZ(_XjF)0+^-Jg@$J%|=h}hQE*WD)e9G z3vnjWzij@BpNoIg?3dqv+tTUfbKdCvrsxUv>v)sXKz8(T)1N9DPyhWMiI3FZpB8+* zwM2i@E>Eu`Iafk&L{CT$-(z`5EzzIYkPWb;VnLPGn*y)x`9{U*dY)dAOeE@!QOD2zf0sO+2Odh)edF+-< z9(x4rWlJWHJ-k}GvL%zpK5?F>a~}H?{P~tl9(ynH*e#hn_O}?%Etx#lf4@!IQ=#?5 z?alC;TQYgr7G8-SxW0#(-M{RMO z$9^0Bc}pgbU2AsDdF)HAU!2Fj#^iGz`=+CPy`0BB8+q&&$9e2;5Eo<~VfT8h-`)s+ zDDz143dB3nE26iUALBfB5Ux=C59$fh<-J=r4xGm}m_BeGdmZu;nHP+Al+(Od_r)He z?~(o!n@7%LSD)qiIgh;v@oP&ak1ZgN75S836%hZnIL>2B=Jz;{J=4a4^Vq%CFV17z z%s+4*`z)JZ&SM{koydGO#xc;n_n+YV%ip`)aGa-e9(ywK*e#hnc5|>7%2%&M9xL-g z^w*y5afQmf0!ivDd*KBwkY72(tZFkYyKWO^HdF=Z(`}T7l z`vc^$Vnvws6&SQI^H=-xd7v=HWTPzRZJoe#DS}yUF_|GuE&3Wtv$YUiQ5&z%J z-~RnP7L{8|{LgXlt6SZ08P&P{@H<=G;GFV;%4)^JPxQ~C9a~)|(NBO~Z_PZHcP{+G z*35UQ7Vq@(M-DEp_m}5+`cOqV{q@j?t!{E|IlT({EbX6HPVYc|zcurm-PQ1STQlpo zdUSpJ3ch$&A}OFm9)0#_jhQw^K6X_BM>$ zDUQeOj4o~VDUQeOdlOIpLDMWeyTn5UhCf>KbCe9|Ap}9B8Ti~kM)b++kDD4t)<o_ z>tx=E{(a;{GX6wg+M&m`J3ilh4qQWf=Kk$EoZq#(VUlxujhDmcj}CcSyUS6&_t;*~ zKSSr6zeAiAy{gsnxa~mxCjEkbMS9=Kx-b1A`clLZ(L+L4_x0?I`;va{8h+Px?H^|#%(r~^T>wPg?t=K!!cbQ&I)A;<^{AUx< zH`@4gLw}?EO4zN~BhiPTPh#(6zu(;N`#TByj&i;ZJ{h;;BTe^yW#dze`eWGw>u(%VHo}<(tm~ii+&RS)#m@@lV@ey`|=7UUJ(6a41vFt5qpVW(ai}d%K zzYXiKq2z_;&-uLUN$9=A7x=lr?c5P3=)U;*Vf9S}*+RTsTiN1QBm(xx3n|FEo*oIiA?)?GwEaORf_2kHib;X)Jr?(YoL621&2FZQS^|>96NJe;>(Nf4--Wlbj#6dHM{||7E|Y zkC7kSVEt->-&G#JeS4?=ir*u;QY##cLw65sPuFVR8|fkMy%K)ABa`=D34hp;$$NKJ zt4QIWb3in9J_>v5$mG2b!CwiT^3_)^@^U!u-M_%o`TGTX(cg|t-n;%x&(C@9y~rm! zGI{TFU{@WPy!U(Xd(zHIbmzdIJ^Q?T&U?35zc}w*g}k>TllOMO-^%z?-uqkl#}3DN z@21VZUe0?@fW35N^4{t?&(C@9qwsqjnY{N^@MF@>Lk@HmJ14?F%e)i)%kYyj{zRV( zmFmdky?fxdJ2H9iTx$>Ky&phc*pazz@_YEtj!fSBGsHESFZiw4habTnIx=~0%ML$2 zocI1S@?Pl|^e)QzEBtLoCht8O{;_~yC=&e>S=e>W$c*(p#-=myooTmFS4yZrUKMFtJ;W+R8=CPii z^WKj@KRPmb?;7MoGM?10NyH18U-;u#?=99}&U;^rcqjdZ|A_qWHTj(P-fjKmym#Vs z-+s<}FGk)geq(Wzt$VGeSDg3$%KRtiz4bOeocI3G?3DA~e?>g#$mG3uAufnM;JDbP zJCKjcxKX@#z{ZF3-aqWpV?{pvP?WRC{5N-g^$>k?1qxVU+U_;;}db%tNGK zmec)?%yUfR=2toIePfsB=e+lpR!^UTUFyEyez!({#cxm^dxiN2&U?Raewg##e=`5i zdG9;&UOwl&7a;HL$mG38ArBCHp}hA~uuo|x;*!er+xL+7ioIa`0#&|$Wd5^|i!|MP zx%pepd#^&?EA>*|d%gKv&U?=`f6jUDuc7x6UntM4I6-R{KTrAXXU!jS-uqVb+no3Q z1bJ^qChz^gdM}^z-V4kRbKcu#dd_+8+s^WG_&UP3p|2f|^WKH#A2{!wLf$KJll;;q z^M{=GHku#fy!S}+W1RQC+w76^-e1C=MNdc{t}uVXdG8HokDT{bTO8rMcP08G{u6qt zW97FOAFaO~nY{Nx8#m5-@5p(6&U=qO-_tqo{Z5;wbKd)^{hrQw?@H?z=e=LHJdpF= zxsqQlayt(^_moqyvVBkfFLI~5oC4Vn_CM}b#&7UI`LT1oobbKBa2mE^j;B{u`Xh37 z;0-2c)C33m9md~4{AU|~;0wQBk-YFQ7lU%R9=QJ?-~Ny`hW57`eSx(j(D%&q{2|PS zAlifAj}kc?+h(C3=Av^B=M#%eALOJ8 zTh9Nu`>Z{ah6DWrMt3GS(5s{$+8#Lx!xre*8NEdO6M;_rj~P8r{C8NrdE!6G_(zGq zC(w!iXroUO|CfwjB>Do;Z|zr+LFQTZ__1UG%R@#l&E zD#%9=fP^7yz_2K)wnw^$E&N_<<5MI#FEM(F=*Jj+kmwtXK1%erO1+24_1Um#J9PU{ zgVK?700;Upf(}cr)0M3KAG7`zt>HNwCHE&w`C-X*x?$sgtF@;@{CyY)1an9T;~>q! zribgjh=l|%5nO9>_2&q|O$pZW8EKzxN(R3P4tPfFTDO2}Z5$3@k&%{9nxhTngLb|Z zaJRYcfW!S^ikFJ4esjp7JX{wDc*4%R0-m<>55;wId>8Vm*xqnnq2v^+cDg5}qWpCSA`3D)Do{YHU*cK&3bWYh8Z?=XKw z?Tl<;esj8Gc)84fXM&**iT$a5jt~y-V+`_I$v%55Zwlolve)n)7K zcAg#h!~Ku}hx6NT{2$E7tyn_w*`O|5axpIh1!LSnG4 z?%WXN>G6f*B8LA(H_ihiW`A1r;{UhV zW2fZ_q5n-}kKz8EP~JoKI4XILZlOHn4*`!#pVRW({Bj)bF9`gTHRa{CWS^ah{pt9I z`?SOHVI4Ez{vYqPg>^3FS9y7|$F9Www7iP!Z-V0GAjQY|{(?Ei?KmCb4YWr$eMt-%YQi8R7G{JhjzkedmUnkjXxQ|oYul%WfD$XVL zsP>Uhu$K3%jqTC;{dGKFpW-2`Z^Zhi6RhQVve&TgqwUf1f%Q?o))($O3hnJCd;S00 zo@V1)`FyZF&BnJlKB~X7@hy%A&R;w{5KnSy$g=6r|CfAoHojr_Fn;i-v+)fB65_*u zxA@lWr~82Y)Ft+#_LWcaJ=KSBe}=NH5FFk&rudnHN0WR|`NR9}wOr*5Cg*Ef?vnga z^MR%WYkV#w`QlN6tE%J}*;JmESIK|f6l=cJmEfH0PbFCShxq)C^2=U2-y5X-lGks- zeY0A>wy$%MwkEc(l$`Hr{e8)LjkYhmCoA-)KRN${{U!M*&aV=z^3wI1dcl*Fug>85 zuWygaE0I0>?lWs( zE75N)?;?F3Nc36Di}F7`zMJ&3oAh&va0BV*G~?uaNXNG;S$|w5crd}*p78zO(4X-B zwSZ^Gt9-ux-;P(&AAUezQh&Qz#(!D|TDCCW;rR{4I)B}yZ{a?)z~4vum9BT`@zdl# zCrIB0Nxy~?e~9zZ1gpN}68%zKOZwE1oPXndG{MT>pZH5{UtQuaHD2^3Sj)!~tjDu{ zHj)2xiT_jnI`V(vdr)C~3*`TL6aS~j^Z9yz;@`BqGx1-FtLibG2j+8xa3`H#x6=7^ z@9Og7!+YGqd=HsH23(h%4{QCk>&lNG+)$4DX+6p%>rc?P1gpG4bNTUI$49L3yEnng z-?uTASxtNdb1#9H2YLOJfz3u&@x|CHaqA0*lb`=g>V%XVNqbjR?lea+g}tbIj$ zP<#8Y>}$-k!=BV1hv!b!tTcZ}*MAkWJ(iN=8>D)NuR+msg>>1NAi}@losJ{4Bf|IJB=s@p3xB$I9`Y z6fc{S_^9$n6RhJknZ!Rmf9OfhC*VJm^9RMn@;- zN)%5Al6b1}()Bv6f9M~qhpW7vB;KwQJe*+7zb6u`^1^+c+J4oSCORLPPO!>P&rkID z@ZO9tKNEC*!PmD2bLI1&Uhh(Q{q?b2^?x)uztHhc*VmQ5;h4y;?JFc$%WEnA^YyR3 zBp*JOo$oO-SRD_H*V@Rh=U?f1ydK|6`9*j?Lm1D( z`gpwZhxaao@>%~-K0dSlA&!UYUwXYv@vMJ{PoQoKRsX8@?Lc; zvgwcdtI-52Kl__0aL4>%B;i+m)QO9^fkJd)t!1y3b-qu{zK-$CuxCc&KvZV}v@;1dM*CwQ~qp#--I9!+qY z;E4pEC^%hD*djPxk3C7S<^;NFd$!7ccY<|125J2vUC)C3(|T54vfgmA96ym@@KZj; z_ur)J3(DW0!$UIQnEgw>oL;_*5jv=d`QQmJ0}g7P3396F_}~3v6koRBi7?b z3C~b|Q%Ld^<)2(re*9EJ#G1cUt&Ldub4mW8_1Dq*MuG5ub^lHit%rp7r)ht+z9w4# zNc~e@%6okCFg|FX9w?js=y>H5f1&N2POz4DCH_OphZBtcC;mgPx1{UKdc9>lDc9rk ziGNY~!wJ^%+QeU|{CtA7{l&z-Ri9NybPMB=OYBwkFI}%zTc1wKRbF`iWH^2xIseh} z6501iV$Ue2^PjF{y->>wiT&dG3!M*@$X*8$d)4+%Bv|F8*Hd)7IurXue-o_yL&^D% z=KJCMKB2$iIXA^BZ-~xkhLiIZ9qT%>*M`JC_4u9yYyG{6y=puhNU)Z7=5+R=z4G;v zQhhAf<0lfV^|dDFGa6q@30C=iE93Es`Fv)Y>_0rO9mdDZ{eZnpd2t8yZ8ko~@tuv& zG8Tz_&&KE3_{{OSl=zQR#UG6ko=&j(tEMEs*Lay;UsL~=OX91>-}HWSjlWY#x$+m2 zc&qXz5)6Nu#9NKO-3iwAr1?1Fnb33#{<1TPuNsdA60Gs8Az7bPd3?QioZ{~Y#orl< zzr6l9l*C_c-(V7dwZ4hOJ{3kD}uf-dn8w)&7kn`LxPQ?`P0>+nU5* zEiWYbvdWuCFxr#k%NlRHlK6|`llY7FBv{MS{8{7WAjRWC5`S@gf|Y+d!CGF(>FoOX z)%ZG)13WO_gGoHr`o{=|?`;MBC{R3ZrTFWm`}$53d7Vbk<9BHN30C_VPq5a{@w!Om zY5eXGetw>#D#?F!{kAK?D!(?#e|3C16RhP`iM=UyiG3-qBYR5Ek5yip-zvZAq;6sS zItg<=J4yC6oY<4fuS)C*^P6C;FHiQ>{}0Yr^?0_w!NmSlUJuz{k?b$LpFQ-ioATEl zvX3#!Pp1=m(fTIXUP%9&68%>Gx*UcVYJBQXu+B&NJf!MtUlPx>yhQP;KZ#c=Z!*EkKai}~sJ!t6Yk9g}qgd~O2<=x~ zr2Mvt;!(Q3qVjtwJ~dJNNuP&N`QiPgI!u~xrq3_HUXysG{%|b8di*fOs~L(fgGqc* zc~c2S|C0Pw%hUTOwVdDI(VFD1%0EW9Nb55VISl6keHcox%5S20G>~8|Pp|K3eSE*- zbh7@Ur0*FXC5eZIq|&86wQ@@8J6r)As@B@%;V{zW(3PSYBWF zK9lN)9-nV2FXwnSYoF!gGi#r5JXGIj?K6&t+SC6@`_#4neqTNOp{_sFCh<|PFBKB3 z?F;X-SF+CEXc8|~-b{k^dQTn2%drH*-z8Y(>-!vaQ~7#)QxZRwKaHYx56_CKeCE1Qn*UKy`pAdhwY((%#qiGNV8`9YD&>k@s@wYq$QReoKfADBGPh-pFVG|IMoNpqxsI!`r$y8Z=g0q`NRA41NPrljs35se5#-Fr-3AY()M$HG)4JO z?LRnQ*Y@!JS@|Si((+NtkNEkLQ9A!lpASKQll4ArZ~DG7Egz@+i0_{o%*F9j|1g?h zJ-+VfSgyEgWjW3z*QfM)bAN)BzmM`Im*h*TUp)!d_Kzf3j~__#C&l5t*kOLd`=kTz zO3vq%KYgE>=CdU_zfYeR)%wT&!SyXI5ATr<_2rZNNz23gq(ga6l0RvA`hGLT;r-Bo zKfD(@;P77ifTxa+T60B<@$0S&vzi3MECc!5qxJ__pg7x{4vlFb(XA~2x z&xc%=V13@AH^KUR%QXqs`-S=wtoIk)lwiFdXehyYJ@qpQ-YIxA!MdJxPl7dHok+0e z=MN=V^X2ITYkvGxf;FG3+7icC^RvSftnnb1V2vN^6Rh#SHNhIsPfM`I&kGW)&$D(X zI4}6}1nd1)r3CB!h1Vxo?=Kuku-Sqr_+G&eB={6L zH+ne1`fmTH5`3fJ1==auw10YS{m2CWQSkZ%Uo1=~CHPjsyA%8jIhVR1!RHCSEW!Hh z#Z?JDU-0z_zFqK530@$%`E3b4Rq&k&?iGAbg1;;HfdsFXT>jw%zen&>30@$%{Q?;? z-L(J91Rt5;)q>Y2xIyqq2|iZv?gYPIa52GJRS)43;jmt;^(+4%l@AjhB|J`elJGQP zCv&P>s4tu^1)QVuCc=5b1;RzbJ%mey`w0&c9wt0Wc%1Mg;c3F?c-nvMc!G0;!}}S+ z_~fa)K)6V_hj58-KjA^b!-Pi(j}x9GJWbe%jivpqC7dH1&X-k;>SvzH3xtb=dkB{Z z_Y)o@JWP0$@HpW~!qbGE_z2xXe`*Qm2#5FS1^zsh7YG*#_Yf`-?k7A*c$n}g;c>!~ zgr^BRTi*!%3D2_y9M(SqZX*6X;qZRJz+a^D9>OKU{e%Yz4-+0GJWhC$@HAm3KDuoF z3Finm5zZ4X5H1q#AzUIHo>vItH%R5fghvUF6P_eIP1s3JQ`UdNnj@y=;rd}{pXOj` zx#oZ=E)wn`Tq4|0c#!Zg;ZeflgeM746LxmLPUug#pC{n(d}hE+#GfZzARO)o3di?Q zd5Lg8;X%T~ghvUF6P_eIP1xD>-_X8V!a2g>eLaCcPvr%|;repm@1gP%;eNt{gog=_ z5*{Z!NqCyDTTrgAwS;qon+WF#7YG*#_Yf`-?k7A*c$n}g;c>!~gr^BRTb~Z|6V|H( z&QW=|KOmInsk}hANVtb^iEuyRLBhj?M+uJ;o+La?*x7n~=ui0GLBKgGZz3G7zXtvS zl@|&35H1n!Cp<`anD8j!al(^?rwNBo--Y(q+VzNlbA-eF9-%x>xDsEc7Q&<>7wsP+p|+9>OKU{e%Yz4-+0GJWhC$ z@HAoh7#g7wTP(DHB;rdx9 zpP}+9yPg)x!~0AEZlLm3!kvV>2zL|iCEQ1NfbbCE5yE4HCkRgwo*`Ui_xpzahVL&2 z+(6~6ggXg$5$+}&?k^7V`>1??@DSkD2orJ^p z;==LWRNhOtkMIEDA;Kes#|Tdlo+3O$xXSL|4(+WY+(5XMa3|p|!rg>>3HK2mAUs5P zgzy;Q3Bpr^X9$PyfgR|-T`vzfyniU*Rx0l#+(kINuP7YfOXYop2M7-l9w9tNc!Ka0 z;Tgi=d7;q0@IIx0!}CJ{hxaQ5+-dg{1l&cqn{Y4TKEeZphX{`l9wR(Kc#7~0;VOF` zA+$fd&pO}+Di6=chw@G;?;_kyxR-Dr;Q_)!ghvRE5uPACMRU=7mrgB#=MA<@lE#VyDCc=5b1;RzbJ%mey`w0&c9wt0Wc%1Mg;c3F|XzD-V9O3Z% zP8hE|l@|yX3HJ~#5$-2ENO+j=DB*F!lZ2-UyOq>`!a2fCg!6>M`;o%<6sf$2aEWj~ z;X%T~ghvUF6P_eIO*p*oCbYNqnDX%m_ZNrqCMwSp4$p4|{vwt45H1n!Cp<`anD8j! zal(^?rwO}N<^2uMn;k4<^%prRZz7y0Tp(N|+(WoTxS#MK;bFp~gvSX_5}qa;?gtP3 ztzBI{9y!9{`-Fi%PvznLyP>>D<>7wwP+p?)e!_!ObM|KJ1_$O;nyITp(N|+(WoTI6Pk)>Kml;VZx(?#|cjoo+j+pQU3{t_g94W zG*Nl@9(X7Z?*|XKNc=s7ON9Fg4-y_GJW6<+@Fd}B!r=zq(B9hh<>Qef+(bA}IDDTa z$SYEL58)Ewe!_!Rnxrg#Rl@|yX3HJ~#5$-2E zNO+j=DB*F!lZ2-UyW^<;gmZ+O2ObKe z;U>c2`Lm!81u8ER?jc+v9KM$rGhXqIPkiIxOVN)boZt)>_=RiS;vSE9 z#w*_OiEkWyY5H-56P)1!fB5^eAKqVT##`Lu5zlzVJ3jG^KloD7n_ckX{N8)}q31h} zaDp>j;1{lOi+eoc8LxQ9C%$p;Wj?<5JsjZ#XSl#GT;mq^c*M&){#oCUg8QjxWn(BkNbA}6XOfs@PRM<;P5MaeDC`>#wpHmi7VXT4i9+33*PX7FZ|%} zE7Ff+oZ=jpxWWzY@PH@0;0+)6!VeC=68$*FDb8_;E8O4?4|u{0-td7h{NV5_(~o1E z;vAQ_!VT{5fG51*4IlWz4-PZ>ag0-(;}Tc6!5tp(gcrQw17G;T;a3ShSl+(={owf@ z$2i3~E^&n$+~EOFc)=S!@P!{7epUK$j8mNB5?8pv9Ukz67rfyEU--e{SEC=tIK??G zafKV);Q>#0!5cpCg&!P#b^39PQ=H=xSGd6)9`J-0yx{|1_`%`VpdZIL#W^l!v%if8n?K|BcAb!cYNX-2j7r>9N`3KxWF%5;}-XL#4}#;j!%5!pr9W|IKde% z@C(j;1{lOi+eoc8LxQ9C%$p;E$PP* zPH=_`{K7SEagRql;}!4t#5WGU75zBE3C?hVU%19C?(v9cyy6|7_{PDvrXNQ*!5J>_ z3)i^CJs$ClSG?mB-}u7|aDVL0ZusE%_uG8@{)ljbGhE;ou5pWdJmMLzc*iHcaqw+F zzV|&G;RI*6z%N|m7Wa6>GhXqIPkiIx+tH6BoZt)>_=RiS;vSE9#w*_OiEkWyd-`#N z6P)1!zi^FP+~X0?c*Q$D@r{EQ{W!u2&TxTWxW+B+@rY-<;vJv(#=&<8K3M+$=RX|b z1ZTLwFI?jm_jtrJUh$4keBCh|8~Cb;~1wn$0e?CgF8In2`_lV2fpxw!|y^r zj&X`}T;d8hxWfaU@Papd;0r%E{I2xl7^gVLC9ZITJ3QbCFL=WTzVL&???yk4af)+X z;tDso!vmi1f;W8N3qLrl=*KZmagIw|;Rbhjz!P5Zh7Ww<2Z!ICejMWz=eWcbZg7VO zJmCdz_`nx_aQHpw$1zTEj!RtO26uSC6JGF!4}9SVhu@Qa9OD${xWpB1aEAvx;RSE_ zz!!dS_`T@IF-~!gOI+awcX+@PUhswweBlR&-e~c2Rz{gZ}`9$esEaRk7JzT z9GAGl4es!OC%oVdANax#4!5yLTioLj&v?ZBkXHaE1%~!ZmJjk4HS?74P`O zHx7Or{W!u2&TxTWxW+B+@rY-<;vJv(#=(!LA4fRB87}Y(*SN(!9`TG!v%if8n?K|BcAb!cYNX-2S1U19N`3KxWF%5;}-XL#4}#;j!%5!;3v_KBb?w2 z7x;y1+~OXOc*ZN<@riF7boAp0Cpg0ee&HIoxW^-&@rrkR;u{A)nSLDM1ZTLwFI?jm z_jtrJUh$4keBnFas zz9Am)gcrQw17G;T;ZOUh|LuI<$1zTEj!RtO26uSC6JGF!4}9SVhd-Tu9OD${xWpB1 zaEAvx;RSE_z!!dS_%rCoF-~!gOI+awcX+@PUhswweBlR&Ka+kO;}qw(#1(FEhX*|2 z1#kGk7k+Tq(~o1E;vAQ_!VT{5fG51*4IlWz4-S78{W!)c&T)w=+~5umc)|xS5F7ON2xWzpl z@r+lz;}hRF_@(sY2q!qh1%BZgx46e6p7DxzeBv7izl?qy;RI*6z%N|m7Wa6>GhXqI zPkiIxm(!0UoZt)>_=RiS;vSE9#w*_OiEkW?^y3I8IKu^g;TpHN$J0ChE^l6sE_lNS zzVL&?UlDw;eC*Bb+wH%PW1Qj~m$#0!5cpCg&!RL2KsS~Q=H=xSGd6)9`J-0yx{|1_`%_Cq#wsP#W^l7*`4iuq-;X1l;0zb|g=^g69*=m&E8g*mZyfwV z`f-F4oZ$k$aE)8s;}Oqz#XCOnje|c#KaOyMGhE;ou5pWdJmMLzc*iHcaqx%f#}Q6& zh70_{HEwZ_M?B*d@A$+w4p#bcgcF?M0>5yLTioLj&v?Zv z!U@iBfnT`BE$;D%XT0JapZLbXAEh5hIKde%@C(5yLTioLj&v?Zj;1{lOi+eoc8LxQ9C%$p;XX(cgPH=_`{K7SEagRql;}!4t#5WH99Q`=L z3C?hVU%19C?(v9cyy6|7_{PDXryoZ+!5J>_3)i^CJs$ClSG?mB-#GXS^y3I8IKu^g z;TpHN$0MHcig$eC8wY=pejMQhXSl#GT;mq^c*HYa@s3Y?<6x&BM>xS5F7ON2xWzpl z@r+lz;}hRF_)GNT2q!qh1%BZgx46e6p7DxzeBv7if0=$9;RI*6z%N|m7Wa6>GhXqI zPkiIxuh5SpoZt)>_=RiS;vSE9#w*_OiEkYIRr+y+6P)1!zi^FP+~X0?c*Q$D@r{GO zMn8^lf-_v;7p`%OdpzP9uXx8NzH#u^>BkXHaE1%~!ZmJjk4HS?74P`OHxB*={W!u2 z&T#pTzw#%0^Lw7S!5tp(gcrQw17G;T;qg)b+xfnaW1Qj~m$Se_-nqoKi@d` z+aLA59e)o;IKde%@C(!v%if8n?K|BcAb!cYNX-2mhRY9N`3KxWF%5;}-XL#4}#;j!%5! z;9t;>Bb?w27x;y1+~OXOc*ZN<@riF7{7d?AgcF?M0>5yLTioLj&v?Zoz zaDp>j;1{lOi+eoc8LxQ9C%$p;uj$7TPH=_`{K7SEagRql;}!4t#5WH94gEO63C?hV zU%19C?(v9cyy6|7_{PD%r5{H)!5J>_3)i^CJs$ClSA4wVU;N2};KC0M?~nT5uKzxc zaf)+X;tDso!vmi1f;W8N3qLsgcl6^Jr#QzYu5g1pJm3j0c*6(2@PosDPd|=vigR4z z3OBgJ1D^1LH+e~c2Rz{gZ}`9$esK6- z>BlinagIw|;Rbhjz!P5Zh7Ww<2Z#TSejMWz=eWcbZg7VOJmCdz_`nx_aQNTp$1zTE zj!RtO26uSC6JGF!4}9SVhyR0q9OD${xWpB1aEAvx;RSE_z!!dS_&@2#F-~!gOI+aw zcX+@PUhswweBlR&|BHSc;}qw(#1(FEhX*|21#kGk7k+T~zv;&@PH~P)T;T?Hc)$~0 z@P-e3;RlDoCw#C2KKADJgX4c3;}qw(#1(FEhX*|21#kGk7k+T~3H0L_r#QzYu5g1p zJm3j0c*6(2@Poroq#wsP#W^lPH~P)T;T?Hc)$~0@P-e3 z;RlDGL_dykigR4z3OBgJ1D^1LH+#0!5cpCg&!P#cKUIQQ=H=xSGd6)9`J-0yx{|1_`%`lpdZIL#W^l< zg&W-A0Z(|r8$R%b9~^#8`f-d?oZ}K#xWOGB@cfRy>zfZHSG?mB-#GYOAN9W7-g`L0 z3C?hVU%19C?(v9cyy6|7_{PEKrXNQ*!5J>_3)i^CJs$ClSG?mB-#GX@^y3I8IKu^g z;TpHN$0MHcig$eC8wU~nIKm0eaDiXA#x3sgh-bXw9iRBd!RMtPM>xS5F7ON2xWzpl z@r+lz;}hRF_GhXqI zPkiIx3($`voZt)>_=RiS;vSE9#w*_OiEkWyLHcoo6P)1!zi^FP+~X0?c*Q$D@r{Eo zL_dyjf-_v;7p`%OdpzP9uXx8NzH#t{>BkXHaE1%~!ZmJjk4HS?74P`OHx6R@afB0` z;R3&Kja%H~5zlzVJ3jG^gD*lqj&OoAT;Lb3af^FA;u)`a$0xpV@I~pz5l(Q13;e=0 zZgG!CJmVGb_{293z8L*D!U@iBfnT`BE$;D%XT0JapZLbX|4BcNaDp>j;1{lOi+eoc z8LxQ9C%$p;f6_=RiS;vSE9#w*_OiEkYI-}K`MCpg0ee&HIoxW^-&@rrkR z;u{D55B)g83C?hVU%19C?(v9cyy6|7_{Kp(KaOyMGhE;ou5pWdJmMLzc*iHcaqz|I z$MHMAICVwIWBR9 z8{FXmPk6x_KJbMf9DX(Wag0-(;}Tc6!5tp(gcrQw17G;T;a8_0$2i3~E^&n$+~EOF zc)=S!@P!{7ehvC@j8mNB5?8pv9Ukz67rfyEU--e{*Q6iEIK??GafKV);Q>#0!5cpC zg&!P#E&6ecQ=H=xSGd6)9`J-0yx{|1ILJTh{p_Fo&G%h#gcF?M0>5yLTioLj&v?Z< zKJkr%uT4LWaDp>j;1{lOi+eoc8LxQ9C%$p;b?C_3)i^CJs$ClSG?mB-#GaC^y3I8 zIKu^g;TpHN$0MHcig$eC8wcNjejMQhXSl#GT;mq^c*HYa@s3Y?Wx? zYuw@ zGhXqIPkiIx8`F;?oZt)>_=RiS;vSE9#w*_OiEkWy6Z&z46P)1!zi^FP+~X0?c*Q$D z@r{FTNzF-~!gOI+awcX+@P zUhswweBlR&--~`6;}qw(#1(FEhX*|21#kGk7k+T~z3Im>PH~P)T;T?Hc)$~0@P-e3 z;RlD`hkhL66z90a6>e~c2Rz{gZ}`9$esK7G>BlinagIw|;Rbhjz!P5Zh7Ww<2ZuHN zIL0Z?afvJ3;0_OX!VBK;fiL{v@cYq^W1Qj~m$@A4fRB87}Y(*SN(! z9`TG!v%if8n?K|BcAb!cYNX-2S1E{9N`3KxWF%5;}-XL#4}#; zj!%5!;D^(XBb?w27x;y1+~OXOc*ZN<@riF7{0RDSgcF?M0>5yLTioLj&v?Zj;1{lOi+eoc8LxQ9C%$p;qv*#GPH=_`{K7SEagRql;}!4t#5WFpH2pZj z3C?hVU%19C?(v9cyy6|7_{Kp?KaOyMGhE;ou5pWdJmMLzc*iHcaqwg4#}Q6&h70_{ zHEwZ_M?B*d@A$+w4t^~CIKm0eaDiXA#x3sgh-bXw9iRBd!H=UKM>xS5F7ON2xWzpl z@r+lz;}hRF`0@1P2q!qh1%BZgx46e6p7DxzeBv7iKY@N6;RI*6z%N|m7Wa6>GhXqI zPkiIxC(@52oZt)>_=RiS;vSE9#w*_OiEkYIB>HiL6P)1!zi^FP+~X0?c*Q$D@r{Fy zejMQhXSl#GT;mq^c*HYa@s3Y?Wx?Yuw@#0 z!5cpCg&!RLtdIKN_Pmc{oZ=jpxWWzY@PH@0;0+)6!VeCAHvKrpDb8_;E8O4?4|u{0 z-td7h{NV8C(2rxB;vAQ_!VT{5fG51*4IlWz4-S7W{W!)c&T)w=+~5umc)|MIKde%@C(Cpg0ee&HIoxW^-&@rrkR z;u{CQl71ZF1ZTLwFI?jm_jtrJUh$4keBj;1{lO zi+eoc8LxQ9C%$p;>*>c4PH=_`{K7SEagRql;}!4t#5WFp1N}I{3C?hVU%19C?(v9c zyy6|7_{PC+q#s8(!5J>_3)i^CJs$ClSG?mB-#GY9^y3I8IKu_5-f{Eh_^QDj9`J-0 zyx{|1_`%_C{;2=${NBegPH~P)T;T?Hc)$~0@P-e3;RlDmg?=346z90a6>e~c2Rz{g zZ}`9$esK6(>BlinagIw|;Rbhjz!P5Zh7Ww<2ZuBLIL0Z?afvJ3;0_OX!VBK;fiL{v z@VC*AW1Qj~m$?p+#wpHmi7VXT4i9+33*PX7FZ|%}chHYx zoZ=jpxWWzY@PH@0;0+)6!VeCAC;d3aDb8_;E8O4?4|u{0-td7h{NV6+(T`)C;vAQ_ z!VT{5fG51*4IlWz4-S7f{W!)c&T)w=+~5umc)|#0!5cpC zg&!RLKKgNtQ=H=xSGd6)9`J-0yx{|1_`%`trys{S#W^lfAQ`2 zJ#dX%+~X0?c*Q$D@r{E&@=@>G`M!rEoZt)>_=RiS;vSE9#w*_OiEkYIQTlO&6P)1! zzi^FP+~X0?c*Q$D@r{E&Mn8^lf-_v;7p`%OdpzP9uXx8NzH#u!>BkXHaE1%~!ZmJj zk4HS?74P`OHxB*;{W!u2&TxTWxW+B+@rY-<;vJv(#=)PYA4fRB87}Y(*SN(!9`TG< zyyFw!IQUca;|M1>!v%if8n?K|BcAb!cYNX-2OIr3!U@iBfnT`BE$;D%XT0JapZLbX zpQay2IKde%@C(5yLTioLj&v?Zj;1{lOi+eoc8LxQ9 zC%$p;m+8k5PH=_`{K7SEagRql;}!4t#5WH93jH|33C?hVU%19C?(v9cyy6|7_{PCs zr5{H)eaBzuQ@**r2QG1i8{FXmPk6x_KJbMf9R9VB`rr1vk7JzT9GAGl4es!OC%oVd zANax#4*xp+IL0Z?afvJ3;0_OX!VBK;fiL{v@NdwMW1Qj~m$#0!5cpCg&!QA^y3((IL9TfaDzKM;0Z5y!w0_b zgTsG7KaO#Vb6nyIH@L$Cp74S@9OD${xWpB1aEAvx;RSE_ zz!!dS_%Ge~c2Rz{gZ}`9$esK72=*KZm zagIw|;Rbhjz!P5Zh7Ww<2Z#TbejMWz=eWcbZg7VOJmCdz_`nx_aCp;?W1PL?U-;(p zvI4(wja%H~5zlzVJ3jG^gMar?@7wvmha;Te3>Wx?Yuw@!v%if8n?K|BcAb!cYNX-2mhUZ z9N`3KxWF%5;}-XL#4}#;j!%5!;D6AMBb?w27x;y1+~OXOc*ZN<@riF7{7?FEgcF?M z0>5yLTioLj&v?Zj;1{lOi+eoc8LxQ9C%$p;zv;&jPH=_`{K7SE zagRql;}!4t#5WFtPYm8JAA9rfgX3Qu;RI*6z%N|m7Wa6>GhXqIPkiIx6X?egPH=_` z{K7SEagRql;}!4t#5WE;k$xQE1ZTLwFI?jm_jtrJUh$4keBWx?Yuw@_=RiS;vSE9#w*_OiEkWyD*ADR6P)1!zi^FP+~X0?c*Q$D@r{E|O+Sus zf-_v;7p`%OdpzP9uXx8NzH#tr=*JOGaE1%~!ZmJjk4HS?74P`OHx53DejMQh=kNHF z!XPMdg&W-A0Z(|r8$R%b9~^$#kNV%v|9u?e6z90a6>e~c2Rz{gZ}`9$esK7I(2rxB z;vAQ_!VT{5fG51*4IlWz4-P*a{W!)c&T)w=+~5umc)|I9H9*%H=GhE;ou5pWdJmMLzc*iHcaqt=F#}Q6& zh70_{HEwZ_M?B*d@A$+w4n8COIKm0eaDiXA#x3sgh-bXw9iRBd!Dpf$M>xS5F5mGN zdh>XyaDzKM;0Z5y!w0_bgTv4KQUBZdzK>&^;vAQ_e#h~f?YFqcBcAb!cYNX-2cPAm z-na944@Wq`87}Y(*SN(!9`TH~cl<@)%>Td_esK6%Kk9$`|KG#0!5cpCg&!P# zLHcowQ=H=xSGd6)9`J-0yx{|1_`%^9q94aN#W^l67*d%`5{D#8O&AgrL~fP4 z%kIYAU6-n|rwsxsL;{B-Qbht}zH1&L`GJReG$0KnAfkCIp$Pd23Pgg1gj75P8F+x- z-fQhsRlDyU`+=4`XRUQU_TJ}z{%7y|?-@_yA2ojMkG1$4f4=eCjlbOZD~;c8{7K{Q zH2!Ym?=}8@<4+s^pz#kI|ETe6pKI|q{(R%N8-Ka+R~o;!pY5d*B-)sE+#-BF+ zLE|4b{!!!CUTE<*{(R%N8-Ka+R~o;!pY5d*B-)sE+#-BF+LE|4b{!!!CUTpC< z{(R%N8-Ka+R~o;!pY5d*B-)sE+#-BF+LE|4b{!!!CrY-))pKttj<1aVjh{4r+W1-H=Z#NRFX9bjjuPp(fDTL z^TrPvKWzM{@#Dr%8b59Ptnu^4C%0StjjuF5ZG64)jm9?{pErKc_+jHmjUP9D()elP zXN{jXKDpE4Z+xZkY2)jSZ#2Hy_`LCh#t$1mYW%qIlg3XQKWqHF@yYkL_#0noeA@VW z;~R}{Ha>6spz*`Tj~YL2{G{>I#?Kl*Z+!Ck7JuU_jZYh2Z+xTi&Bo`AA2fd0_)+7> zjh{4r+W1-H=Z#PPc#FUBmBy!yuQ$HY_-5nt#t#}lZ2YM4 z@x#WC8b5CQr18_n&l*2(eDZxQ{>E1tpEkbU_(tQKjn5lDX#BA8qsEULKWY55@w3Ly z8=tJV_#0noeA@VW;~R}{Ha>6spz*`Tj~YL2{G{>I#?Kl*Z+!CoE&j$=8lN`4-uOo2 zn~l#KKWO~0@uS9%8$W6MwDGgX&l{h7vBlr`O5@YU*Bjqxe6#U+;|Gl&Hh$FjapNbA zpEiEh_<7@#A87G6zS8)#@%6?x8sBVu-uOY|hm9XKe%$y;SzR~z*R*-JMsrXR~{6K6>z+TQm5WPfY#jhQ-1nZLTVw_W|0 zy}Gxv|ClM>R6AvHu}_yeue#)pd}MZE_szTeJj40U?!F%K-sHjK`ww1yFlavQ>YG2f zSMb5({q5cP?l%8vxA!J5JldM?m8-KiwjMs*d;1YG$H<;Y+e6G4U*DNM+_x8M7tions=shv;&)VA3IZJ!iR+r9M+OsxYI;Zu-5#HVUsxHj= z4u{}H&S_kn+q=9JJNLHsw_bQ_Yxl}6w70)AuUE)#drIwn=v`Oe^qg_|7U5*IMMGJ< zX7yZMGE`kzdBkS(t=CBfI~?uTb|!Hzl)xP@fAIKqcSQEEuk*L}@9#YBZb)3>$wg;# zMje+Uj5nsOozmi!N7vPLQ@*?^_+eW$rNyg`uB)r2{NV9h+q+!x^R2tHN8JCHZ^hRh zJbtiuf2KQ`Bz5=xB(L2(Gqag4t-WVD;tGC!m!!P&xD5*TE>?K)(!dw5EY`+l-!~rd z_TJsN)-Mk7?A7^eR}QeMgtloG7jN68&Z`^ej@iQpcefw!Z7Wgbf9uuB3#6)S*}5ngCO`JYFW#BmiDu31 zZBw_mOx>=!y&-wk?MtH9-L4h4eBFz<<$9AzHLGiG-K?ses=4lV)h%x30a?QfOM}&g{0#+%9m-fO+n^ zSxSMm8>JL@$pZW9Nd>N7FJ*w5JT<`m;Y1;vmKN?C;l2=73SBS6?pwPvyHz0x@F1+* zGGI|DH{IT-jshGIjkxZXTX z#a0Tex}CaZ13ej+jBvz*FAy$C!x4dS$q1K(a7iGxROt5XMs2CUtr7|lxO#55<*-S3 z$?bKwYtq};5Y0;>hE;MoQ6OA3d_ zT?4F@;&xiR01rTO);L#2JOCr&G9oS^;u45+WyDkQumN~HmR1YJS(A2Www60_+by;w z+$x~}8=@Ybf&j&*!D@9)3*fj%Y^Y}d3oM@<>{PZq9RZGt5#~I3pm0GNKDcurOn8ZbA~I_OMP$}6 zZp7wK(~sDFBOEbew}mh-ur^S*WDQR|VIVfdoe8MgM(O(2?J6Z)%OWhUW!!PKjzQ#^ zki@c@aEmj^$z&lPiq8j81b}( zNUiECKxR#W%&Lw8xGp79YjzQWl>&HWWzB$M$I5B}w#5?u2yqh>!ZT@{BM%#Z18s=| zEp%sgGkxKf5nvCk+$yC2C)i^OaNk-f!0ThhE$@y5lC?IZ01sLUE(^rdH5!1&?0Eyl zD{5_^ctx#o9E9%7ZYZ{!1{_B#BxgB8Ru&)|mwN)ZClHsv5!);jo*LnndvV4HXN2Nx z3f-B#Bxgvw0%TcPB)cXcg=Wj*9#VjlVr765)(Wf|U{YfVz>^5ThyaA*#0atbmIfj? zNyH{VXdXmBLS$Hbt(LT!oUEE{SP)`eO9RFJNyCJ}K#^uV0lPvZL9JSV>$l7Z+_b>qY^pRo6kx9eV%LlYz~IHwWixlg=HT z{anPUyN#bX$*bk=P40#pI4Hk=qTy$+dfoD~H#s2*V9pA^e>JoKXT)9PMRgS*L8d^Y z9#ViqYh{2E$emiH1b(5Xz%OKV48Z1EVt0jNQ;pb5A*zC$NCM54q-8+j)RG0rn-U7d z`P8I1ph9sl6NNFOICq*Er>kb%lEkx;!ow0Ek*cczFSrz*U-q!J0Z&kqs^w8?atS=l z6nJ{s;_2t-6iL?pyf6o>>ML|)AmI3EI}RS5;isc%^KsYTa+&3D4I6QtJBC>RWh)o)qHr?TOvivK+J0OLh z$Lc9SDwa@ylq{hDKb%v*LH86OX{)CIZ?1<_OFGXX{HE5b1^98TjskH7c?|pI&Vk}K zm&VR{*g$ccOJffO*e`)dVje#LJLk@U;)ba3=&Wm$oB&L*p^TL2c%FIXs%mo zfaIJHcMy?KL?ndwmIjK5q!E!ooDZV`h)q&NDMUmD15vw{MwFhwnGxdmy@Dyg&wB|4 zIKNW(d9UaOp!m>Ostt9Ouxh|>`0QW@Jc1qYBz8cEXe|vCJ0Oj?1&Gn31|Tv^L?#q( zx)AwL&QYt#xdNm%D-rm9)9&Fz!xioYH1(> zbmu@sXojYaF-9A2jLZ~ZYt>T#V;WHaQz@{i*~Y2Tlmhsmo&v<_A#U*~ zN5qxt3@m_y9*ILncp`)cmIjJq$QphL;f6qXW`qMmamYq&k|$uqkr9f$HDX7F;`R18zA|Xd0z5k_lug;i z2Z(H=Y)U|}B%uJVO2I_~w|s8Mp}6QdxM+ln9(;i~8`f}9h{9LasG<@?=_`eDN=gAv znG~ui4Jp8*l|osSJyca1Q7u)K7At|ODg~-4brgs@L~{woh!BL>Zh_c%BR1Z{2H+@L zikqO;H{vYU`UafaR5-Wl8Gs|3N*q=Jj%fm(vIpa)5pEjsJ{qy-LO3iC@18pcz+ra| zl;0`R6g5+}ymkUnD@mb7k~amYkt7U2k(3H0QMQC)Kq;iL1t^6i3}Ar@NF4=uNK)d0 zG9r498YpX`oXIwL*g%m#rNzTE8h}mmYMfOe${u-9fbvHIWlsXWf@I5r0=!jLsC%-D zTp_??uu?4_NVMDl)x#H)?4el7mhe54P=yG_(m)ZGG=ec0C{BSV@W_n_RfxajkhhdP z0#rB&sAsa}Z!5CJh({FQ^NM;35V90(dTa?4MLCvQC|hbF@dELDJ%><*2vC3!Jp2L? zj5I14EmeSuCIt$bY&jerQ6Rpv+%mTm5Xre2vc1kd6#duvNtP|wPwuE&KBS2A{X~GzCJFdzB4GeZ zgH(uKfUCg@r9gJ^o(SNe752c0N8rv2MC8)qSQrtxXOQ!?EID7!6yW4rDZt6MQh+5r zy#QZztPDUwAQSurM44DM!Z{&)69_Mj@KT7!BS3D~3I#~%TAQ4nfSfL&07u>m*)ln_)m;_$31e|^=glj~QMg(a@L_!245Z=3U0K#zRK=~yj zP4QP9GD#*+KqAkUuNCSjKpsya5_$r%w}b&oAbV?W31sgS$lmHG5XsG}5TH8;B0ft4 z5ve2s^~3=P&k`4%5Xn0YlDlQN0AD9k;BmR902hIk0^|`7CQ0WkE^Cj$SNHK)tPR9c zr41B^Pvf{vYA&986+HJUT+u>&qL8ZtkY=QiTPg|x@~0J&O?Gi2tdPj13{X9MipU<+FG6Oj0pj$BLUisbz{U=x5LT^W%?K+(@eqwz-n|1w-C=E@c;lpD zY$_L{S`dmFLEc`Vs1~I05XOvEYq)0(_k{3H0Oth4O^+G~FWos1H?y_4K0Kj7)J~F! zK!9x%;8#HIwOg)`q;7dk$+=PTK~&3ylEb)1vgP{7{%W~Bl5=TfKc$5LrG)?`MFJ`c z2?Z!9Bov^YkWhdKt+WWnYXaGja`zi)?vC z1b9EKP-SEnFNgq3x~o8x8=78#A|nMpJ7kNG9>IAq!doF+v{WG8GD$p}Te$+YhD;1V z)sYI02~d5cfP)@e00*rUV0*1pOFg3H3PfR&3eF4QXiX}>p|ixP6AI^r_4D8Pe|LM5Y~0)#1rG9`P6QUDJG@LV9$ml4};#HA#}X|XgAp-SS^ zxNiVrwnWTA5wj3wMmj^8k!=*}0@ND<)ENm#&<0c*>KcGjLyB7pjpRh+IYeYcL>@d) zT=mk3$ioJTt6o~X9YzBXuqP0w5pfDdoI+eB=@55^94&xpD+S1|RtjKO3XjZP18}S4 zf?0705tc^{6ah*j7*7}|0+dF40z@ScH>bxJh?`Rq-x3rIJqRG0&Ig7s+a5{d@E!_DMTU^ALgwQiM0#FBeh0QLUBNi z2u3LXdmLJsb15xOL*$@%@X^L|k2dBDR2z>!vz1$xNX~X-8zn{pj=B-g#B=c9odd-$ zerfpNVFSfi5@|T*&Vg`E5-thE+4QIaaW>tFhwhAeL_tIqk|>^tQGBUzD60ZdhY8`2 zr3-{Z(qglOc&w%2lC^=@GD&zO5Z8hbZ&2+;+Jq4&j)Kh@RVugA{V+#3m_ z6^RB=fFz*)kWhfX_fW?G_-P40g>X|K95%vXA>JkdN|RiQLPRzSP>4t5z;hPjYfAc0nWH!gQ0AmSm6I(+PPWuI+2W7@ZdMn(#7w@aat(U1YCWKyA! z$(Hauq(GE5npA*ow^A*&P7Yzu-NSDwDSUWIK%iDQ3qpi!X`p!A(um$*pa@kOZ{>CQ z#OD>+DZl}_uV^CWPWP{ z#qV`#WW{uXoR}?_qX6ZLyeoh`DbzFSDL{x)NT=C@LmpCq^s1f$QSqcg&>mYYA8^!D z0B@xbvBwU?!?ZLIyCI1!5QtaTqYA_eYbo|NlVX9WPEv{cLx9BvVyiQ;#{TB40b+MU ziRg`p&BIySh{c8C0eT#(8nK#tFAxh$i;pWZ8YPSndoL7bjWFxp__&he;)j8?fg(<6 zcp`u!9$z5pmRy1N0q_m}2eOy{r>8HzwU)bt$GJ)Pn=NN3TfB}oKE*}LU$kUP9U*-H z3W`*CgaQ;6DR8XaQ-EV)g&IR+2-S#C-Fbm{sM7eKUeH4K3%E3PQX+5>=YtrtB1`sVsnjnafLW3mImSikrdaT5fK@&;YQ@^G(eh` zp#r392?f|^DFkFtEm=Cpl8Un>6K5NlSc~Ak5$+2`nQx6ijPT#R17Xe@8&|ypMS}B; zfg-_Ki#%>uu4hX+FOLLx+XYDL>KTBvo(j*_U8HjE>LXn+orV*h?ihSwLf%2l~E-B)Yy+ggkX(FB81Wg~V{D0b3_EpjgpSBQEem!RB`jRI5`5(==6 z6ds5GWkwE(dLsd~wEz#pfC?nLaM21b8sVZ)xM+lnLUFko@$7`+MHAu!MlMS&l5Kpq zNI)qffyyHRYa38ssEhI;LA+{4I3_*OfPIz1zItr6e7ex`1vu#*LUcw%=TQU2MIw!-;9&!CNUg<_Q7_wJ zFc4oCWSg%F0(@3T!0J{CP?4yo05+shqGS)I463D8(Xs`oStJZVu_A@Qgd#8@g0M7D z1SX9j+{r^V;+zTbjUiX%%R;ss6agNy0Huq13XpQFP{gQf z3iV3@UKlHcCKRCw5r(CKA~b0{G67-~h`Z6_2Ow;B4wSV^c~QO8A1P6OWXnf{Z24rM zp#}J4kOD8Rdj_Z;z6IwHDi#gph#C>3XI&t|wMJ}4L}G;7LXmajg681}uulS!d-Lip z5GgoQ_W&hCO3tBfBZo=AMD`a1O0h%a8q>O_FsFzxJh&uVsl?jfmBq7l;EXji}v8)SfT^QM+@Xxc8)y z#bvSpSv&=jw_F&2G%kg#EkJHg5J_5qoUAS!H^N;ZoU~Mcbef~drrDBAHJijJKpqqz z|0UozyMzMdLv<908pmTWEyP9%#Q889fGv|0SA`KfB}Dp@y#i!C2?LP+q>%Lzko2;} zn0pFvEUXMr0_iX(@vB~|6(BvTgJ|5vJt0I~mIlhKDD&0H0lr>K2$14rqyV{2LIIYM zLiSTn0kWTj0W6T~vV&ZgEpMyz6YQi=Q27o0%eu%Y0j zmG~u=WB3uCfS1Y&zrs_AU*GCtBi+YF8nJ)w9SFB2#i23cgm~CM92HAKm;c>8`Zunw zPTRl1XUL2HJw8{uum0P7MiZP3<9_$5E&)6tUzQxDeSLN6b-2naiJ&^ zG%m7aA|9+Ic2Wq-mM|?8yJo~*xp$!Wv14tZxRtDNK7`_U3^$G9sSh`e;s6Xch2kPG z!cU>tp&S;KrBQ5FYB+2u!Q}tPpWopB%k!HSEcDL*_#LVK{LftN{B2k1RzetXl` z8!!5)0&f2c6Ti{?55Dv21l+yy=ZyK^in4x1olM^S@lYp|6FdB6aKu^jpNmfZ{M#k= zKl@$k|2X@ z{+8@dwag^!f0}=4e%b%ICH7zb!Y8x;mzUVTcK2EPzk7lG7cmo-c#W_8dG04=|M2z| zdH7%I_b_Zx{I~DP{^q6g|9hC!v{~ZhL|H=~kPyY8Ov;WIW?7zJ8to`4&!2XXdJOBRwn}16G%Kj;7d@0Hcd)-UFly2JcM_TMl2m-henFR;({Ewn$~Qs7Vj za9L7Y{+AlQFS38_iQ~WY{>4>V^DF+JS`z<9e?#^^F8-ff68|fI$@VYB|A!XXe|5?G z_t}4H`!VU#pYp$?pI!3)z4upTf8|pAe}qXjzvBN9v_;SV_J5H5X&G``^Gp6gKv-HY z!R^z(Ci`V4&fg#9pPFC#Z!U@dzU{vk&RzOb^Go{AOXB~)_RIgU|2_Ou^UMDCF0udI znc~0yG562SCHAlVyyBl<+W*fju>W04>_7Qkn)q?{zhjC0Cx87}`!6oA|9^P_7d`*8 zFUkJ%A5(w-ALfUpb^f{h=fhu+{fV|Q^M70=egA)BiT!JLKbigiw9Ni5K5IWp>2Cj* zNPLUppZ=WezZaW!=}*ls=^f@TjQ^Kq|8o6%gGn{N&fm@w`yU*CGW%~Vv48tlp0$5# zf&IUWwkZCCGuh`a_pbaY|4aPafJO1Y^S5OGNXz8&zr)y?U-ADHv_cLZ({zU_@DlL+0WpZ7xz#6q^tQA|IhsB zV*5uw`pNA76!RC_{|C?7|GowGui?<5{onYC>>otur9b6=NuNSkX#XF|{)z`i{NK+% zHNWEj(vtW8^iMnfkFmeL?EPP0pGWnK{m*}Tar_5AE&D4kIRH21f2p^azbO7||48wl zTsr?hxWN7&SYrR^7eAT(?_6U4>DQjM|HBLHuW~=f7Te7VYjW~0WdCLM_wt_}|F{1s z&2MRPa_!eN|G!Qz&(_#b>aqSgKmTt3{I@j!4_=) Date: Fri, 15 May 2026 21:01:35 +0200 Subject: [PATCH 12/12] fix: updates tests, add go offsets to coredump and fix tls retrieval --- support/ebpf/go_runtime.h | 45 +++- tools/coredump/ebpfhelpers.go | 4 +- tools/coredump/ebpfmaps.go | 5 + .../{go-mcall.json => go-mcallpark.json} | 162 ++++-------- .../coredump/testdata/amd64/go-mcallstop.json | 173 +++++++++++++ tools/coredump/testdata/arm64/go-mcall.json | 241 ------------------ .../coredump/testdata/arm64/go-mcallpark.json | 104 ++++++++ .../coredump/testdata/arm64/go-mcallstop.json | 215 ++++++++++++++++ tools/coredump/testsources/go/mcall/main.go | 105 -------- .../coredump/testsources/go/mcallpark/main.go | 28 ++ .../coredump/testsources/go/mcallstop/main.go | 28 ++ .../testsources/go/systemstack/main.go | 6 - 12 files changed, 643 insertions(+), 473 deletions(-) rename tools/coredump/testdata/amd64/{go-mcall.json => go-mcallpark.json} (50%) create mode 100644 tools/coredump/testdata/amd64/go-mcallstop.json delete mode 100644 tools/coredump/testdata/arm64/go-mcall.json create mode 100644 tools/coredump/testdata/arm64/go-mcallpark.json create mode 100644 tools/coredump/testdata/arm64/go-mcallstop.json delete mode 100644 tools/coredump/testsources/go/mcall/main.go create mode 100644 tools/coredump/testsources/go/mcallpark/main.go create mode 100644 tools/coredump/testsources/go/mcallstop/main.go diff --git a/support/ebpf/go_runtime.h b/support/ebpf/go_runtime.h index fedf4c63a..22d9456e3 100644 --- a/support/ebpf/go_runtime.h +++ b/support/ebpf/go_runtime.h @@ -12,8 +12,24 @@ // systemstack/mcall, this is g0 (the system goroutine) since we are on the // system stack. // -// On aarch64, when tls_offset is 0 (non-CGO binaries), the G pointer is taken -// from the r28 register saved in the unwind state instead of TLS. +// On aarch64, the resolution path depends on whether the binary actually uses +// cgo at runtime, which is not the same as buildinfo CGO_ENABLED: +// +// - Pure-Go binaries (no `import "C"`): runtime.iscgo is false. The Go runtime +// never initialises TPIDR_EL0 for its threads ([1]), and load_g keeps g in R28. +// - Cgo binaries: libc initialises TPIDR_EL0 via pthread_create; load_g reads +// g from *(TPIDR_EL0 + tls_g_offset). +// +// The userspace TLS-offset extractor gates on buildinfo CGO_ENABLED only [2], +// so it returns a non-zero offset for any binary built with CGO_ENABLED=1, +// including pure-Go binaries where runtime.iscgo is false. +// To handle this safely we try TLS first and fall back to r28 if the read fails +// or returns 0. R28 is the ABI-reserved register for the current goroutine +// on aarch64 [3] and is always populated while executing pure Go code. +// +// [1] https://github.com/golang/go/blame/0259df17feb288f1e24517516939b67876c2627b/src/runtime/sys_linux_arm64.s#L705 +// [2] https://github.com/open-telemetry/opentelemetry-ebpf-profiler/blob/abd95fe39bdfcd00c8079d152123d38f459a6ff0/libpf/pfelf/file.go#L615 +// [3] https://github.com/golang/go/blob/0259df17feb288f1e24517516939b67876c2627b/src/cmd/compile/abi-internal.md?plain=1#L549 static inline EBPF_INLINE u64 go_get_g_ptr(struct GoLabelsOffsets *offs, UnwindState *state) { #if defined(__x86_64__) @@ -28,22 +44,27 @@ static inline EBPF_INLINE u64 go_get_g_ptr(struct GoLabelsOffsets *offs, UnwindS DEBUG_PRINT( "cl: read tsd_base at 0x%lx, g offset: %d", (unsigned long)tls_base, offs->tls_offset); - if (offs->tls_offset == 0) { + if (offs->tls_offset != 0 && tls_base != NULL) { + if (bpf_probe_read_user(&g_addr, sizeof(void *), (void *)((s64)tls_base + offs->tls_offset))) { + DEBUG_PRINT("cl: failed to read g_addr via TLS, tls_base(%lx)", (unsigned long)tls_base); + g_addr = 0; + } + } + #if defined(__aarch64__) - // On aarch64 for !iscgo programs the g is only stored in r28 register. + // Fallback to r28 when TLS is either not configured (pure-Go binary or + // mis-detected as cgo at build time) or when the TLS read failed. On + // aarch64 r28 holds the current g while executing Go runtime code. + if (g_addr == 0) { g_addr = state->r28; + DEBUG_PRINT("cl: g_addr fallback via r28 = 0x%lx", (unsigned long)g_addr); + } #elif defined(__x86_64__) + if (g_addr == 0) { DEBUG_PRINT("cl: TLS offset for g pointer missing for amd64"); return 0; -#endif - } - - if (g_addr == 0) { - if (bpf_probe_read_user(&g_addr, sizeof(void *), (void *)((s64)tls_base + offs->tls_offset))) { - DEBUG_PRINT("cl: failed to read g_addr, tls_base(%lx)", (unsigned long)tls_base); - return 0; - } } +#endif DEBUG_PRINT("cl: g_addr 0x%lx", (unsigned long)g_addr); return g_addr; diff --git a/tools/coredump/ebpfhelpers.go b/tools/coredump/ebpfhelpers.go index 117fbef0f..4fd5ffae8 100644 --- a/tools/coredump/ebpfhelpers.go +++ b/tools/coredump/ebpfhelpers.go @@ -110,7 +110,7 @@ func __bpf_map_lookup_elem(id C.u64, mapdef unsafe.Pointer, keyptr unsafe.Pointe case unsafe.Pointer(&C.dotnet_procs), unsafe.Pointer(&C.perl_procs), unsafe.Pointer(&C.php_procs), unsafe.Pointer(&C.py_procs), unsafe.Pointer(&C.hotspot_procs), unsafe.Pointer(&C.ruby_procs), - unsafe.Pointer(&C.v8_procs): + unsafe.Pointer(&C.v8_procs), unsafe.Pointer(&C.go_labels_procs): if innerMap, ok := ctx.maps[mapdef]; ok { if val, ok := innerMap[*(*C.u32)(keyptr)]; ok { return val @@ -138,7 +138,7 @@ func __bpf_map_lookup_elem(id C.u64, mapdef unsafe.Pointer, keyptr unsafe.Pointe } case unsafe.Pointer(&C.metrics), unsafe.Pointer(&C.report_events), unsafe.Pointer(&C.reported_pids), unsafe.Pointer(&C.pid_events), unsafe.Pointer(&C.inhibit_events), - unsafe.Pointer(&C.apm_int_procs), unsafe.Pointer(&C.go_labels_procs): + unsafe.Pointer(&C.apm_int_procs): return unsafe.Pointer(uintptr(0)) default: log.Errorf("Map at 0x%x not found", mapdef) diff --git a/tools/coredump/ebpfmaps.go b/tools/coredump/ebpfmaps.go index db9b83709..753d5d1a5 100644 --- a/tools/coredump/ebpfmaps.go +++ b/tools/coredump/ebpfmaps.go @@ -72,6 +72,9 @@ func (emc *ebpfMapsCoredump) UpdateProcData(t libpf.InterpreterType, pid libpf.P emc.ctx.addMap(unsafe.Pointer(&C.v8_procs), C.u32(pid), sliceBuffer(ptr, C.sizeof_V8ProcInfo)) case libpf.BEAM: emc.ctx.addMap(unsafe.Pointer(&C.beam_procs), C.u32(pid), sliceBuffer(ptr, C.sizeof_BEAMProcInfo)) + case libpf.GoLabels: + emc.ctx.addMap(unsafe.Pointer(&C.go_labels_procs), C.u32(pid), + sliceBuffer(ptr, C.sizeof_GoLabelsOffsets)) } return nil } @@ -94,6 +97,8 @@ func (emc *ebpfMapsCoredump) DeleteProcData(t libpf.InterpreterType, pid libpf.P emc.ctx.delMap(unsafe.Pointer(&C.v8_procs), C.u32(pid)) case libpf.BEAM: emc.ctx.delMap(unsafe.Pointer(&C.beam_procs), C.u32(pid)) + case libpf.GoLabels: + emc.ctx.delMap(unsafe.Pointer(&C.go_labels_procs), C.u32(pid)) } return nil } diff --git a/tools/coredump/testdata/amd64/go-mcall.json b/tools/coredump/testdata/amd64/go-mcallpark.json similarity index 50% rename from tools/coredump/testdata/amd64/go-mcall.json rename to tools/coredump/testdata/amd64/go-mcallpark.json index e0e4b77ec..780609ac3 100644 --- a/tools/coredump/testdata/amd64/go-mcall.json +++ b/tools/coredump/testdata/amd64/go-mcallpark.json @@ -1,46 +1,26 @@ { - "coredump-ref": "581cb937944db24a2049fae9c6b300c9f65110a9ca1d1d230f192a793d51b527", + "coredump-ref": "7e454796ef114350d3bb35ec80fb794eda816ee4795e6bed9533582b9a626940", "threads": [ { - "lwp": 10906, + "lwp": 9537, "frames": [ - "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", - "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", - "runtime.notesleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_futex.go:48", - "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", - "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", + "internal/runtime/syscall.Syscall6+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/internal/runtime/syscall/asm_linux_amd64.s:36", + "internal/runtime/syscall.EpollWait+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/internal/runtime/syscall/syscall_linux.go:34", + "runtime.netpoll+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/netpoll_epoll.go:120", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3728", "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", - "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" - ] - }, - { - "lwp": 10919, - "frames": [ - "runtime.chanrecv+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:524", - "main.main.func1+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcall/main.go:88", + "runtime.park_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4267", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462", + "runtime.gopark+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:461", + "runtime.chanrecv+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:670", + "runtime.chanrecv1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:510", + "main.parker+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcallpark/main.go:16", + "main.main.gowrap1+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcallpark/main.go:24", "runtime.goexit+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:1694" ] }, { - "lwp": 10918, - "frames": [ - "linux-vdso.1.so+0xcfd", - "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", - "" - ] - }, - { - "lwp": 10917, - "frames": [ - "linux-vdso.1.so+0xcfd", - "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", - "" - ] - }, - { - "lwp": 10916, + "lwp": 9543, "frames": [ "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", @@ -48,22 +28,18 @@ "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", - "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" - ] - }, - { - "lwp": 10915, - "frames": [ - "runtime.chanrecv+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:524", - "main.mutexBlocker+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcall/main.go:41", - "main.main.gowrap3+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcall/main.go:99", + "runtime.park_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4267", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462", + "runtime.gopark+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:461", + "runtime.chanrecv+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:670", + "runtime.chanrecv1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:510", + "main.parker+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcallpark/main.go:16", + "main.main.gowrap1+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcallpark/main.go:24", "runtime.goexit+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:1694" ] }, { - "lwp": 10914, + "lwp": 9542, "frames": [ "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", @@ -71,40 +47,18 @@ "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", - "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" - ] - }, - { - "lwp": 10913, - "frames": [ - "internal/runtime/syscall.Syscall6+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/internal/runtime/syscall/asm_linux_amd64.s:36", - "internal/runtime/syscall.EpollWait+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/internal/runtime/syscall/syscall_linux.go:34", - "runtime.netpoll+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/netpoll_epoll.go:120", - "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3728", - "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", - "runtime.mstart1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1936", - "runtime.mstart0+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1890", - "runtime.mstart+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:396" - ] - }, - { - "lwp": 10912, - "frames": [ - "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", - "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", - "runtime.notesleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_futex.go:48", - "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", - "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", - "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", - "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" + "runtime.park_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4267", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462", + "runtime.gopark+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:461", + "runtime.chanrecv+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:670", + "runtime.chanrecv1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:510", + "main.parker+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcallpark/main.go:16", + "main.main.gowrap1+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcallpark/main.go:24", + "runtime.goexit+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:1694" ] }, { - "lwp": 10911, + "lwp": 9541, "frames": [ "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", @@ -112,21 +66,18 @@ "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", - "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" - ] - }, - { - "lwp": 10910, - "frames": [ - "linux-vdso.1.so+0xcfd", - "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", - "" + "runtime.park_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4267", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462", + "runtime.gopark+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:461", + "runtime.chanrecv+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:670", + "runtime.chanrecv1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:510", + "main.parker+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcallpark/main.go:16", + "main.main.gowrap1+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcallpark/main.go:24", + "runtime.goexit+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:1694" ] }, { - "lwp": 10909, + "lwp": 9540, "frames": [ "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:76", @@ -134,27 +85,24 @@ "runtime.stopm+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1961", "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3374", "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", - "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" - ] - }, - { - "lwp": 10908, - "frames": [ - "runtime.chanrecv+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:540", - "runtime.selectnbrecv+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:805", - "main.mutexBlocker+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcall/main.go:41", - "main.main.gowrap3+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcall/main.go:99", + "runtime.park_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4267", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462", + "runtime.gopark+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:461", + "runtime.chanrecv+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:670", + "runtime.chanrecv1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/chan.go:510", + "main.parker+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcallpark/main.go:16", + "main.main.gowrap1+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcallpark/main.go:24", "runtime.goexit+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:1694" ] }, { - "lwp": 10907, + "lwp": 9539, "frames": [ - "runtime.usleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:135", - "runtime.sysmon+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:6234", - "runtime.sysmon+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:6234", + "runtime.futex+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:558", + "runtime.futexsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/os_linux.go:82", + "runtime.notetsleep_internal+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_futex.go:90", + "runtime.notetsleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_futex.go:112", + "runtime.sysmon+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:6270", "runtime.mstart1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1928", "runtime.mstart0+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1890", "runtime.mstart+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:396" @@ -163,8 +111,8 @@ ], "modules": [ { - "ref": "be1e6a8d574b22a32fe68656f369081d47290c043a93c6a11bcf28f6e35ab219", - "local-path": "/home/ubuntu/ebpf/test-mcall" + "ref": "12fecf3742c47c5da69e900e7282601b6c41510f63175a6e3c4134d9d13d4601", + "local-path": "/home/ubuntu/ebpf/test-mcallpark" } ] } diff --git a/tools/coredump/testdata/amd64/go-mcallstop.json b/tools/coredump/testdata/amd64/go-mcallstop.json new file mode 100644 index 000000000..95cd930bb --- /dev/null +++ b/tools/coredump/testdata/amd64/go-mcallstop.json @@ -0,0 +1,173 @@ +{ + "coredump-ref": "157325498d0330691b067551246338458beb737e18ff54379095b84c951b3694", + "threads": [ + { + "lwp": 14778, + "frames": [ + "runtime.procyield+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:806", + "runtime.lock2+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_spinbit.go:216", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4293", + "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462", + "main.yielder+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcallstop/main.go:14", + "runtime.goexit+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:1694" + ] + }, + { + "lwp": 14795, + "frames": [ + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 14794, + "frames": [ + "linux-vdso.1.so+0xcfd", + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 14793, + "frames": [ + "linux-vdso.1.so+0xcfd", + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 14792, + "frames": [ + "linux-vdso.1.so+0xcfd", + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 14791, + "frames": [ + "linux-vdso.1.so+0xcfd", + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 14790, + "frames": [ + "linux-vdso.1.so+0xcfd", + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 14789, + "frames": [ + "linux-vdso.1.so+0xcfd", + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 14788, + "frames": [ + "linux-vdso.1.so+0xcfd", + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 14787, + "frames": [ + "runtime.procyield+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:806", + "runtime.lock2+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_spinbit.go:216", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3450", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" + ] + }, + { + "lwp": 14786, + "frames": [ + "runtime.procyield+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:806", + "runtime.lock2+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_spinbit.go:216", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3450", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" + ] + }, + { + "lwp": 14785, + "frames": [ + "runtime.procyield+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:806", + "runtime.lock2+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_spinbit.go:216", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3450", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" + ] + }, + { + "lwp": 14784, + "frames": [ + "linux-vdso.1.so+0xcfd", + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 14783, + "frames": [ + "runtime.procyield+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:806", + "runtime.lock2+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_spinbit.go:216", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4293", + "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462", + "main.yielder+0 in /home/ubuntu/ebpf/tools/coredump/testsources/go/mcallstop/main.go:14", + "runtime.goexit+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:1694" + ] + }, + { + "lwp": 14782, + "frames": [ + "runtime.procyield+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:806", + "runtime.lock2+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/lock_spinbit.go:216", + "runtime.findRunnable+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:3450", + "runtime.schedule+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:4306", + "runtime.mcall+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:462" + ] + }, + { + "lwp": 14781, + "frames": [ + "linux-vdso.1.so+0xcfd", + "runtime.nanotime1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:265", + "" + ] + }, + { + "lwp": 14780, + "frames": [ + "runtime.usleep+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/sys_linux_amd64.s:135", + "runtime.sysmon+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:6234", + "runtime.sysmon+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:6234", + "runtime.mstart1+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1928", + "runtime.mstart0+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/proc.go:1890", + "runtime.mstart+0 in /home/ubuntu/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.25.0.linux-amd64/src/runtime/asm_amd64.s:396" + ] + } + ], + "modules": [ + { + "ref": "66360a0baedbe71fc18f3225c749bde80c7d1baa2e9f77086f0e12c496c383ee", + "local-path": "/home/ubuntu/ebpf/test-mcallstop" + } + ] +} diff --git a/tools/coredump/testdata/arm64/go-mcall.json b/tools/coredump/testdata/arm64/go-mcall.json deleted file mode 100644 index cb6d9e82c..000000000 --- a/tools/coredump/testdata/arm64/go-mcall.json +++ /dev/null @@ -1,241 +0,0 @@ -{ - "coredump-ref": "1dd0a9e19b0307e10662268aefb1a17509db852b3f0ae3ac738df29404b6fb5e", - "threads": [ - { - "lwp": 10029, - "frames": [ - "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", - "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", - "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", - "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", - "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", - "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" - ] - }, - { - "lwp": 10051, - "frames": [ - "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", - "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", - "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", - "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", - "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", - "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" - ] - }, - { - "lwp": 10046, - "frames": [ - "runtime.wakep+0 in /usr/local/go/src/runtime/proc.go:3207", - "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4300", - "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", - "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" - ] - }, - { - "lwp": 10045, - "frames": [ - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.main.func1+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:88", - "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" - ] - }, - { - "lwp": 10044, - "frames": [ - "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", - "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", - "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", - "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", - "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", - "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" - ] - }, - { - "lwp": 10043, - "frames": [ - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.deepStack+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:27", - "main.main.func1+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:88", - "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" - ] - }, - { - "lwp": 10042, - "frames": [ - "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", - "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", - "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", - "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", - "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", - "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" - ] - }, - { - "lwp": 10041, - "frames": [ - "runtime.unlock2+0 in /usr/local/go/src/runtime/lock_spinbit.go:314", - "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3452", - "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", - "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" - ] - }, - { - "lwp": 10040, - "frames": [ - "linux-vdso.1.so+0x360", - "runtime.nanotime1+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:364", - "runtime.(*timers).check+0 in /usr/local/go/src/runtime/time_nofake.go:33", - "runtime.stealWork+0 in /usr/local/go/src/runtime/proc.go:3837", - "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3497", - "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", - "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" - ] - }, - { - "lwp": 10039, - "frames": [ - "internal/runtime/syscall.Syscall6+0 in /usr/local/go/src/internal/runtime/syscall/asm_linux_arm64.s:17", - "runtime.netpoll+0 in /usr/local/go/src/runtime/netpoll_epoll.go:120", - "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3728", - "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", - "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" - ] - }, - { - "lwp": 10038, - "frames": [ - "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", - "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", - "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", - "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", - "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", - "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", - "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", - "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" - ] - }, - { - "lwp": 10037, - "frames": [ - "main.mutexBlocker+0 in /usr/local/go/src/internal/sync/mutex.go:63", - "main.main.gowrap3+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcall/main.go:99", - "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" - ] - }, - { - "lwp": 10036, - "frames": [ - "runtime.usleep+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:138", - "runtime.sysmon+0 in /usr/local/go/src/runtime/proc.go:6251", - "runtime.mstart1+0 in /usr/local/go/src/runtime/proc.go:1931", - "runtime.mstart0+0 in /usr/local/go/src/runtime/proc.go:1858", - "runtime.mstart+0 in /usr/local/go/src/runtime/asm_arm64.s:180" - ] - } - ], - "modules": [ - { - "ref": "f253b2baa217b7efd68a7ee944af1ffdb42eabfcba68fd2a11b5e253799102a0", - "local-path": "/home/tintin/ebpf/test-mcall" - } - ] -} diff --git a/tools/coredump/testdata/arm64/go-mcallpark.json b/tools/coredump/testdata/arm64/go-mcallpark.json new file mode 100644 index 000000000..5bceafaa3 --- /dev/null +++ b/tools/coredump/testdata/arm64/go-mcallpark.json @@ -0,0 +1,104 @@ +{ + "coredump-ref": "0a4c90cc40055029402c1a9d9f4f57aeb9cb4f4c2c6835d96d527a73d14ca96f", + "threads": [ + { + "lwp": 22411, + "frames": [ + "internal/runtime/syscall.Syscall6+0 in /usr/local/go/src/internal/runtime/syscall/asm_linux_arm64.s:17", + "runtime.netpoll+0 in /usr/local/go/src/runtime/netpoll_epoll.go:120", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3728", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.park_m+0 in /usr/local/go/src/runtime/proc.go:4267", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242", + "runtime.gopark+0 in /usr/local/go/src/runtime/proc.go:461", + "time.Sleep+0 in /usr/local/go/src/runtime/time.go:365", + "main.main+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcallpark/main.go:27", + "runtime.main+0 in /usr/local/go/src/internal/runtime/atomic/types.go:194", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 22422, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", + "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.mstart1+0 in /usr/local/go/src/runtime/proc.go:1936", + "runtime.mstart0+0 in /usr/local/go/src/runtime/proc.go:1858", + "runtime.mstart+0 in /usr/local/go/src/runtime/asm_arm64.s:180" + ] + }, + { + "lwp": 22421, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", + "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.park_m+0 in /usr/local/go/src/runtime/proc.go:4267", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242", + "runtime.gopark+0 in /usr/local/go/src/runtime/proc.go:461", + "runtime.chanrecv+0 in /usr/local/go/src/runtime/chan.go:670", + "runtime.chanrecv1+0 in /usr/local/go/src/runtime/chan.go:510", + "main.parker+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcallpark/main.go:16", + "main.main.gowrap1+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcallpark/main.go:24", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 22420, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", + "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3374", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.park_m+0 in /usr/local/go/src/runtime/proc.go:4267", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242", + "runtime.gopark+0 in /usr/local/go/src/runtime/proc.go:461", + "runtime.chanrecv+0 in /usr/local/go/src/runtime/chan.go:670", + "runtime.chanrecv1+0 in /usr/local/go/src/runtime/chan.go:510", + "main.parker+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcallpark/main.go:16", + "main.main.gowrap1+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcallpark/main.go:24", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 22419, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", + "runtime.notesleep+0 in /usr/local/go/src/runtime/lock_futex.go:48", + "runtime.stopm+0 in /usr/local/go/src/runtime/proc.go:1961", + "runtime.startlockedm+0 in /usr/local/go/src/runtime/proc.go:3283", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4128", + "runtime.park_m+0 in /usr/local/go/src/runtime/proc.go:4267", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242", + "runtime.gopark+0 in /usr/local/go/src/runtime/proc.go:461", + "runtime.bgsweep+0 in /usr/local/go/src/runtime/mgcsweep.go:301", + "runtime.gcenable.gowrap1+0 in /usr/local/go/src/runtime/mgc.go:212", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 22418, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:651", + "runtime.notetsleep_internal+0 in /usr/local/go/src/runtime/lock_futex.go:90", + "runtime.notetsleep+0 in /usr/local/go/src/runtime/lock_futex.go:112", + "runtime.sysmon+0 in /usr/local/go/src/runtime/proc.go:6270", + "runtime.mstart1+0 in /usr/local/go/src/runtime/proc.go:1931", + "runtime.mstart0+0 in /usr/local/go/src/runtime/proc.go:1858", + "runtime.mstart+0 in /usr/local/go/src/runtime/asm_arm64.s:180" + ] + } + ], + "modules": [ + { + "ref": "a356938f05d9d82350a4dd0d973b754422c6bcefca2934858c06abd714c0fbb7", + "local-path": "/home/tintin/ebpf/test-mcallpark" + } + ] +} diff --git a/tools/coredump/testdata/arm64/go-mcallstop.json b/tools/coredump/testdata/arm64/go-mcallstop.json new file mode 100644 index 000000000..c2442fa10 --- /dev/null +++ b/tools/coredump/testdata/arm64/go-mcallstop.json @@ -0,0 +1,215 @@ +{ + "coredump-ref": "5247300db828f04354d5ac16c3bff5c4d51ef465671dba971a78d468ca737139", + "threads": [ + { + "lwp": 22277, + "frames": [ + "runtime.osyield+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:739", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4293", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242", + "runtime.gopark+0 in /usr/local/go/src/runtime/proc.go:461", + "runtime.block+0 in /usr/local/go/src/runtime/select.go:105", + "main.main+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcallstop/main.go:27", + "runtime.main+0 in /usr/local/go/src/internal/runtime/atomic/types.go:194", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 22294, + "frames": [ + "runtime.(*timers).check+0 in /usr/local/go/src/runtime/time.go:1011", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/traceruntime.go:151", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 22293, + "frames": [ + "linux-vdso.1.so+0x320", + "runtime.nanotime1+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:364", + "runtime.casgstatus+0 in /usr/local/go/src/runtime/proc.go:1323", + "runtime.execute+0 in /usr/local/go/src/runtime/proc.go:3337", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4193", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242", + "main.yielder+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcallstop/main.go:18", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 22292, + "frames": [ + "linux-vdso.1.so+0x320", + "runtime.nanotime1+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:364", + "runtime.casgstatus+0 in /usr/local/go/src/runtime/proc.go:1323", + "runtime.execute+0 in /usr/local/go/src/runtime/proc.go:3337", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4193", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242", + "main.yielder+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcallstop/main.go:18", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 22291, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:652", + "runtime.semasleep+0 in /usr/local/go/src/runtime/lock_futex.go:147", + "runtime.lock2+0 in /usr/local/go/src/runtime/lock_spinbit.go:251", + "runtime.wakep+0 in /usr/local/go/src/runtime/proc.go:3219", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4300", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 22290, + "frames": [ + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4300", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 22289, + "frames": [ + "runtime.execute+0 in /usr/local/go/src/runtime/proc.go:3337", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4193", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242", + "main.yielder+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcallstop/main.go:18", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 22288, + "frames": [ + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3422", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 22287, + "frames": [ + "runtime.osyield+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:739", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4293", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 22286, + "frames": [ + "linux-vdso.1.so+0x360", + "runtime.nanotime1+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:364", + "runtime.(*mLockProfile).start+0 in /usr/local/go/src/runtime/time_nofake.go:33", + "runtime.lock2+0 in /usr/local/go/src/runtime/lock_spinbit.go:247", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4293", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 22285, + "frames": [ + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4270", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242", + "main.yielder+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcallstop/main.go:18", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 22284, + "frames": [ + "runtime.osyield+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:739", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4293", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 22283, + "frames": [ + "runtime.osyield+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:739", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3450", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242" + ] + }, + { + "lwp": 22282, + "frames": [ + "linux-vdso.1.so+0x360", + "runtime.nanotime1+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:364", + "runtime.casgstatus+0 in /usr/local/go/src/runtime/proc.go:1323", + "runtime.execute+0 in /usr/local/go/src/runtime/proc.go:3337", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4193", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242", + "main.yielder+0 in /home/tintin/ebpf/tools/coredump/testsources/go/mcallstop/main.go:18", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 22281, + "frames": [ + "runtime.lock2+0 in /usr/local/go/src/runtime/lock_spinbit.go:199", + "runtime.findRunnable+0 in /usr/local/go/src/runtime/proc.go:3450", + "runtime.schedule+0 in /usr/local/go/src/runtime/proc.go:4138", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4301", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242", + "runtime.gopark+0 in /usr/local/go/src/runtime/proc.go:461", + "runtime.bgsweep+0 in /usr/local/go/src/runtime/mgcsweep.go:301", + "runtime.gcenable.gowrap1+0 in /usr/local/go/src/runtime/mgc.go:212", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 22280, + "frames": [ + "runtime.futex+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:652", + "runtime.semasleep+0 in /usr/local/go/src/runtime/lock_futex.go:147", + "runtime.lock2+0 in /usr/local/go/src/runtime/lock_spinbit.go:251", + "runtime.goschedImpl+0 in /usr/local/go/src/runtime/proc.go:4293", + "runtime.gosched_m+0 in /usr/local/go/src/runtime/proc.go:4306", + "runtime.mcall+0 in /usr/local/go/src/runtime/asm_arm64.s:242", + "runtime.gopark+0 in /usr/local/go/src/runtime/proc.go:461", + "runtime.(*scavengerState).park+0 in /usr/local/go/src/runtime/mgcscavenge.go:426", + "runtime.bgscavenge+0 in /usr/local/go/src/runtime/mgcscavenge.go:656", + "runtime.gcenable.gowrap2+0 in /usr/local/go/src/runtime/mgc.go:213", + "runtime.goexit+0 in /usr/local/go/src/runtime/asm_arm64.s:1269" + ] + }, + { + "lwp": 22279, + "frames": [ + "runtime.usleep+0 in /usr/local/go/src/runtime/sys_linux_arm64.s:138", + "runtime.sysmon+0 in /usr/local/go/src/runtime/proc.go:6251", + "runtime.mstart1+0 in /usr/local/go/src/runtime/proc.go:1931", + "runtime.mstart0+0 in /usr/local/go/src/runtime/proc.go:1858", + "runtime.mstart+0 in /usr/local/go/src/runtime/asm_arm64.s:180" + ] + } + ], + "modules": [ + { + "ref": "3bc9854ee9afddcf89db17726c9afcc385dbe19225d3406ca718e06b54a10f77", + "local-path": "/home/tintin/ebpf/test-mcallstop" + } + ] +} diff --git a/tools/coredump/testsources/go/mcall/main.go b/tools/coredump/testsources/go/mcall/main.go deleted file mode 100644 index c2af01eef..000000000 --- a/tools/coredump/testsources/go/mcall/main.go +++ /dev/null @@ -1,105 +0,0 @@ -// Copyright The OpenTelemetry Authors -// SPDX-License-Identifier: Apache-2.0 - -// Program mcall exercises the runtime.mcall path by parking goroutines -// through various blocking primitives (channels, mutexes, select, sleep) -// and cooperative preemption on deep stacks. A coredump taken while it -// runs is likely to contain threads mid-mcall. -// -// Build: go build -o mcall ./tools/coredump/testsources/go/mcall/ -// Run: ./mcall (prints PID, then blocks forever — use gcore to dump) -package main - -import ( - "fmt" - "os" - "runtime" - "sync" - "time" -) - -//go:noinline -func deepStack(depth int) int { - if depth <= 0 { - runtime.Gosched() - return 0 - } - return deepStack(depth-1) + 1 -} - -//go:noinline -func chanBlocker(ch <-chan struct{}) { - <-ch -} - -//go:noinline -func mutexBlocker(mu *sync.Mutex, done <-chan struct{}) { - for { - mu.Lock() - mu.Unlock() - select { - case <-done: - return - default: - } - } -} - -//go:noinline -func sleeper() { - time.Sleep(time.Hour) -} - -//go:noinline -func selectBlocker(ch1, ch2 <-chan struct{}) { - select { - case <-ch1: - case <-ch2: - } -} - -func main() { - fmt.Println("PID:", os.Getpid()) - fmt.Println("Waiting for gcore... (Ctrl+C to stop)") - - done := make(chan struct{}) - neverClose := make(chan struct{}) - var mu sync.Mutex - - // mcall via park_m: channel receive blocks. - for i := 0; i < 4; i++ { - go chanBlocker(neverClose) - } - - // mcall via park_m: select blocks. - go selectBlocker(neverClose, neverClose) - - // mcall via park_m: time.Sleep blocks. - for i := 0; i < 2; i++ { - go sleeper() - } - - // mcall via gopreempt_m: cooperative yields on deep stacks. - for i := 0; i < 4; i++ { - go func() { - for { - deepStack(64) - select { - case <-done: - return - default: - } - } - }() - } - - // mcall via various paths: mutex contention. - mu.Lock() - for i := 0; i < 2; i++ { - go mutexBlocker(&mu, done) - } - mu.Unlock() - - // Block main forever (mcall via park_m). - <-neverClose -} diff --git a/tools/coredump/testsources/go/mcallpark/main.go b/tools/coredump/testsources/go/mcallpark/main.go new file mode 100644 index 000000000..0fab4dbdf --- /dev/null +++ b/tools/coredump/testsources/go/mcallpark/main.go @@ -0,0 +1,28 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package main + +import ( + "fmt" + "os" + "runtime" + "time" +) + +//go:noinline +func parker(ch <-chan struct{}) { + <-ch +} + +func main() { + runtime.GOMAXPROCS(8) + fmt.Println("PID:", os.Getpid()) + + ch := make(chan struct{}) + for i := 0; i < 8; i++ { + go parker(ch) + } + time.Sleep(time.Hour) +} + diff --git a/tools/coredump/testsources/go/mcallstop/main.go b/tools/coredump/testsources/go/mcallstop/main.go new file mode 100644 index 000000000..d27d4d83c --- /dev/null +++ b/tools/coredump/testsources/go/mcallstop/main.go @@ -0,0 +1,28 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +// Exercise the post-dropg mcall case where the candidate goroutine found from +// the g0 stack has already been rescheduled on another M. In that state, stopping +// at runtime.mcall is safer than reading a potentially stale gobuf. +package main + +import ( + "fmt" + "os" + "runtime" +) + +//go:noinline +func yielder() { + for { + runtime.Gosched() + } +} + +func main() { + fmt.Println("PID:", os.Getpid()) + for i := 0; i < 16; i++ { + go yielder() + } + select {} +} diff --git a/tools/coredump/testsources/go/systemstack/main.go b/tools/coredump/testsources/go/systemstack/main.go index f71518a51..498f2b194 100644 --- a/tools/coredump/testsources/go/systemstack/main.go +++ b/tools/coredump/testsources/go/systemstack/main.go @@ -1,12 +1,6 @@ // Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 -// Program systemstack exercises the runtime.systemstack path by calling -// runtime.Callers in a tight loop. A coredump taken while it runs is -// likely to contain threads executing on the system stack. -// -// Build: go build -o systemstack ./tools/coredump/testsources/go/systemstack/ -// Run: ./systemstack (profiles for 30s, then exits) package main import (