From 3148acf6a69868ddec0780daa293866fe079b7d4 Mon Sep 17 00:00:00 2001 From: dozn Date: Mon, 17 Mar 2025 01:51:01 -0700 Subject: [PATCH 001/120] [core:encoding/json] When Unmarshalling, Only Match Struct Tags If Present --- core/encoding/json/unmarshal.odin | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/core/encoding/json/unmarshal.odin b/core/encoding/json/unmarshal.odin index 57371e360..a5f3bd8c6 100644 --- a/core/encoding/json/unmarshal.odin +++ b/core/encoding/json/unmarshal.odin @@ -390,6 +390,9 @@ unmarshal_expect_token :: proc(p: ^Parser, kind: Token_Kind, loc := #caller_loca return prev } +// Struct tags can include not only the name of the JSON key, but also a tag such as `omitempty`. +// Example: `json:"key_name,omitempty"` +// This returns the first field as `json_name`, and the rest are returned as `extra`. @(private) json_name_from_tag_value :: proc(value: string) -> (json_name, extra: string) { json_name = value @@ -425,12 +428,6 @@ unmarshal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unm defer delete(key, p.allocator) unmarshal_expect_token(p, .Colon) - - field_test :: #force_inline proc "contextless" (field_used: [^]byte, offset: uintptr) -> bool { - prev_set := field_used[offset/8] & byte(offset&7) != 0 - field_used[offset/8] |= byte(offset&7) - return prev_set - } field_used_bytes := (reflect.size_of_typeid(ti.id)+7)/8 field_used := intrinsics.alloca(field_used_bytes + 1, 1) // + 1 to not overflow on size_of 0 types. @@ -449,7 +446,9 @@ unmarshal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unm if use_field_idx < 0 { for field, field_idx in fields { - if key == field.name { + tag_value := reflect.struct_tag_get(field.tag, "json") + json_name, _ := json_name_from_tag_value(tag_value) + if json_name == "" && key == field.name { use_field_idx = field_idx break } @@ -470,7 +469,9 @@ unmarshal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unm } } - if field.name == key || (field.tag != "" && reflect.struct_tag_get(field.tag, "json") == key) { + tag_value := reflect.struct_tag_get(field.tag, "json") + json_name, _ := json_name_from_tag_value(tag_value) + if (json_name == "" && field.name == key) || json_name == key { offset = field.offset type = field.type found = true @@ -492,6 +493,11 @@ unmarshal_object :: proc(p: ^Parser, v: any, end_token: Token_Kind) -> (err: Unm } if field_found { + field_test :: #force_inline proc "contextless" (field_used: [^]byte, offset: uintptr) -> bool { + prev_set := field_used[offset/8] & byte(offset&7) != 0 + field_used[offset/8] |= byte(offset&7) + return prev_set + } if field_test(field_used, offset) { return .Multiple_Use_Field } From a3de9c8de4e539905a85f3cc060f95529b402f18 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Sat, 19 Apr 2025 08:04:23 -0400 Subject: [PATCH 002/120] Add initial support for Objective-C class implementation --- base/intrinsics/intrinsics.odin | 5 +- base/runtime/procs_darwin.odin | 25 +- src/check_builtin.cpp | 77 ++++- src/check_decl.cpp | 73 ++++ src/checker.cpp | 77 ++++- src/checker.hpp | 17 +- src/checker_builtin_procs.hpp | 2 + src/entity.cpp | 3 + src/llvm_backend.cpp | 581 ++++++++++++++++++++++++++++++-- src/llvm_backend.hpp | 3 + src/llvm_backend_general.cpp | 2 + src/llvm_backend_proc.cpp | 1 + src/llvm_backend_utility.cpp | 74 +++- src/types.cpp | 2 + 14 files changed, 895 insertions(+), 47 deletions(-) diff --git a/base/intrinsics/intrinsics.odin b/base/intrinsics/intrinsics.odin index bec452007..515e8d48a 100644 --- a/base/intrinsics/intrinsics.odin +++ b/base/intrinsics/intrinsics.odin @@ -353,15 +353,18 @@ x86_xgetbv :: proc(cx: u32) -> (eax, edx: u32) --- objc_object :: struct{} objc_selector :: struct{} objc_class :: struct{} +objc_ivar :: struct{} + objc_id :: ^objc_object objc_SEL :: ^objc_selector objc_Class :: ^objc_class +objc_Ivar :: ^objc_ivar objc_find_selector :: proc($name: string) -> objc_SEL --- objc_register_selector :: proc($name: string) -> objc_SEL --- objc_find_class :: proc($name: string) -> objc_Class --- objc_register_class :: proc($name: string) -> objc_Class --- - +ivar_get :: proc(self: ^$T, $U: typeid) -> ^U --- valgrind_client_request :: proc(default: uintptr, request: uintptr, a0, a1, a2, a3, a4: uintptr) -> uintptr --- diff --git a/base/runtime/procs_darwin.odin b/base/runtime/procs_darwin.odin index c3fc46af1..0aec57e80 100644 --- a/base/runtime/procs_darwin.odin +++ b/base/runtime/procs_darwin.odin @@ -2,21 +2,34 @@ package runtime @(priority_index=-1e6) -foreign import "system:Foundation.framework" +foreign import ObjC "system:objc" import "base:intrinsics" -objc_id :: ^intrinsics.objc_object +objc_id :: ^intrinsics.objc_object objc_Class :: ^intrinsics.objc_class -objc_SEL :: ^intrinsics.objc_selector +objc_SEL :: ^intrinsics.objc_selector +objc_Ivar :: ^intrinsics.objc_ivar +objc_BOOL :: bool -foreign Foundation { - objc_lookUpClass :: proc "c" (name: cstring) -> objc_Class --- + +objc_IMP :: proc "c" (object: objc_id, sel: objc_SEL, #c_vararg args: ..any) -> objc_id + +foreign ObjC { sel_registerName :: proc "c" (name: cstring) -> objc_SEL --- - objc_allocateClassPair :: proc "c" (superclass: objc_Class, name: cstring, extraBytes: uint) -> objc_Class --- objc_msgSend :: proc "c" (self: objc_id, op: objc_SEL, #c_vararg args: ..any) --- objc_msgSend_fpret :: proc "c" (self: objc_id, op: objc_SEL, #c_vararg args: ..any) -> f64 --- objc_msgSend_fp2ret :: proc "c" (self: objc_id, op: objc_SEL, #c_vararg args: ..any) -> complex128 --- objc_msgSend_stret :: proc "c" (self: objc_id, op: objc_SEL, #c_vararg args: ..any) --- + + objc_lookUpClass :: proc "c" (name: cstring) -> objc_Class --- + objc_allocateClassPair :: proc "c" (superclass: objc_Class, name: cstring, extraBytes: uint) -> objc_Class --- + objc_registerClassPair :: proc "c" (cls : objc_Class) --- + class_addMethod :: proc "c" (cls: objc_Class, name: objc_SEL, imp: objc_IMP, types: cstring) -> objc_BOOL --- + class_addIvar :: proc "c" (cls: objc_Class, name: cstring, size: uint, alignment: u8, types: cstring) -> objc_BOOL --- + class_getInstanceVariable :: proc "c" (cls : objc_Class, name: cstring) -> objc_Ivar --- + class_getInstanceSize :: proc "c" (cls : objc_Class) -> uint --- + ivar_getOffset :: proc "c" (v: objc_Ivar) -> uintptr --- } + diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index f66a8605c..c44d1c123 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -387,6 +387,80 @@ gb_internal bool check_builtin_objc_procedure(CheckerContext *c, Operand *operan try_to_add_package_dependency(c, "runtime", "objc_allocateClassPair"); return true; } break; + + case BuiltinProc_objc_ivar_get: + { + Type *self_type = nullptr; + Type *ivar_type = nullptr; + + Operand self {}; + check_expr_or_type(c, &self, ce->args[0]); + + if (!is_operand_value(self) || !check_is_assignable_to(c, &self, t_objc_id)) { + gbString e = expr_to_string(self.expr); + gbString t = type_to_string(self.type); + error(self.expr, "'%.*s' expected a type or value derived from intrinsics.objc_object, got '%s' of type %s", LIT(builtin_name), e, t); + gb_string_free(t); + gb_string_free(e); + return false; + } + else if (!is_type_pointer(self.type)) { + gbString e = expr_to_string(self.expr); + gbString t = type_to_string(self.type); + error(self.expr, "'%.*s' expected a pointer of a value derived from intrinsics.objc_object, got '%s' of type %s", LIT(builtin_name), e, t); + gb_string_free(t); + gb_string_free(e); + return false; + } + + self_type = type_deref(self.type); + + if (!(self_type->kind == Type_Named && + self_type->Named.type_name != nullptr && + self_type->Named.type_name->TypeName.objc_class_name != "")) { + gbString t = type_to_string(self_type); + error(self.expr, "'%.*s' expected a named type with the attribute @(obj_class=) , got type %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + + if (self_type->Named.type_name->TypeName.objc_ivar == nullptr) { + gbString t = type_to_string(self_type); + error(self.expr, "'%.*s' requires that type %s have the attribute @(obj_ivar=).", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + + Operand ivar {}; + check_expr_or_type(c, &ivar, ce->args[1]); + if (ivar.mode == Addressing_Type) { + ivar_type = ivar.type; + } else { + return false; + } + + if (self_type->Named.type_name->TypeName.objc_ivar != ivar_type) { + gbString name_self = type_to_string(self_type); + gbString name_expected = type_to_string(self_type->Named.type_name->TypeName.objc_ivar); + gbString name_given = type_to_string(ivar_type); + error(self.expr, "'%.*s' ivar type %s does not match @obj_ivar type %s on Objective-C class %s.", + LIT(builtin_name), name_given, name_expected, name_self); + gb_string_free(name_self); + gb_string_free(name_expected); + gb_string_free(name_given); + return false; + } + + if (type_hint != nullptr && type_hint->kind == Type_Pointer && type_hint->Pointer.elem == ivar_type) { + operand->type = type_hint; + } else { + operand->type = alloc_type_pointer(ivar_type); + } + + operand->mode = Addressing_Value; + + return true; + } break; } } @@ -2132,7 +2206,8 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As case BuiltinProc_objc_find_selector: case BuiltinProc_objc_find_class: case BuiltinProc_objc_register_selector: - case BuiltinProc_objc_register_class: + case BuiltinProc_objc_register_class: + case BuiltinProc_objc_ivar_get: return check_builtin_objc_procedure(c, operand, call, id, type_hint); case BuiltinProc___entry_point: diff --git a/src/check_decl.cpp b/src/check_decl.cpp index ba6445ea4..dffe0b48e 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -526,6 +526,54 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, check_decl_attributes(ctx, decl->attributes, type_decl_attribute, &ac); if (e->kind == Entity_TypeName && ac.objc_class != "") { e->TypeName.objc_class_name = ac.objc_class; + e->TypeName.objc_superclass = ac.objc_superclass; + e->TypeName.objc_ivar = ac.objc_ivar; + + if (ac.objc_is_implementation) { + e->TypeName.objc_is_implementation = true; + mpsc_enqueue(&ctx->info->objc_class_implementations, e); // TODO(harold): Don't need this for anything. Remove. + + GB_ASSERT(e->TypeName.objc_ivar == nullptr || e->TypeName.objc_ivar->kind == Type_Named); + + // Ensure superclass hierarchy are all Objective-C classes and does not cycle + Type *super = ac.objc_superclass; + if (super != nullptr) { + TypeSet super_set{}; + type_set_init(&super_set, 8); + defer (type_set_destroy(&super_set)); + + type_set_update(&super_set, e->type); + + for (;;) { + if (type_set_update(&super_set, super)) { + error(e->token, "@(objc_superclass) Superclass hierarchy cycle encountered"); + break; + } + + if (super->kind != Type_Named) { + error(e->token, "@(objc_superclass) References type must be a named struct."); + break; + } + + Type* named_type = base_type(super->Named.type_name->type); + if (!is_type_objc_object(named_type)) { + error(e->token, "@(objc_superclass) Superclass must be an Objective-C class."); + break; + } + + super = super->Named.type_name->TypeName.objc_superclass; + if (super == nullptr) { + break; + } + + // TODO(harold): Is this the right way to do this??? The referenced entity must be already resolved + // so that we can access its objc_superclass attribute + check_single_global_entity(ctx->checker, super->Named.type_name, super->Named.type_name->decl_info); + } + } + } else if (e->TypeName.objc_superclass != nullptr) { + error(e->token, "@(objc_superclass) can only be applied when the obj_implement attribute is also applied"); + } if (type_size_of(e->type) > 0) { error(e->token, "@(objc_class) marked type must be of zero size"); @@ -942,6 +990,31 @@ gb_internal void check_objc_methods(CheckerContext *ctx, Entity *e, AttributeCon if (tn->scope != e->scope) { error(e->token, "@(objc_name) attribute may only be applied to procedures and types within the same scope"); } else { + + if (ac.objc_is_implementation) { + GB_ASSERT(e->kind == Entity_Procedure); + + CheckerInfo *info = ctx->info; + mutex_lock(&info->objc_method_mutex); + defer (mutex_unlock(&info->objc_method_mutex)); + + auto method = ObjcMethodData{ ac, e }; + + if (ac.objc_selector == "") { + method.ac.objc_selector = ac.objc_name; + } + + Array* method_list = map_get(&info->objc_method_implementations, t); + if (method_list) { + array_add(method_list, method); + } else { + auto list = array_make(permanent_allocator(), 1, 8); + list[0] = method; + + map_set(&info->objc_method_implementations, t, list); + } + } + mutex_lock(&global_type_name_objc_metadata_mutex); defer (mutex_unlock(&global_type_name_objc_metadata_mutex)); diff --git a/src/checker.cpp b/src/checker.cpp index 5a5ec9706..29ef7d2b3 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -1351,10 +1351,12 @@ gb_internal void init_universal(void) { t_objc_object = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_object"), alloc_type_struct_complete()); t_objc_selector = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_selector"), alloc_type_struct_complete()); t_objc_class = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_class"), alloc_type_struct_complete()); + t_objc_ivar = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_ivar"), alloc_type_struct_complete()); t_objc_id = alloc_type_pointer(t_objc_object); t_objc_SEL = alloc_type_pointer(t_objc_selector); t_objc_Class = alloc_type_pointer(t_objc_class); + t_objc_Ivar = alloc_type_pointer(t_objc_ivar); } } @@ -1387,6 +1389,9 @@ gb_internal void init_checker_info(CheckerInfo *i) { array_init(&i->defineables, a); map_init(&i->objc_msgSend_types); + mpsc_init(&i->objc_class_implementations, a); + map_init(&i->objc_method_implementations); + string_map_init(&i->load_file_cache); array_init(&i->all_procedures, heap_allocator()); @@ -3345,6 +3350,11 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { ac->test = true; return true; } else if (name == "export") { + if (ac->objc_is_implementation) { + error(value, "Setting @(export) explicitly is not allowed when @(objc_implement) is set. It is exported implicitly."); + return false; + } + ExactValue ev = check_decl_attribute_value(c, value); if (ev.kind == ExactValue_Invalid) { ac->is_export = true; @@ -3356,6 +3366,12 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { } return true; } else if (name == "linkage") { + + if (ac->objc_is_implementation) { + error(value, "Explicit linkage not allowed when @(objc_implement) is set. It is set implicitly"); + return false; + } + ExactValue ev = check_decl_attribute_value(c, value); if (ev.kind != ExactValue_String) { error(value, "Expected either a string 'linkage'"); @@ -3662,6 +3678,35 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { } } return true; + } else if (name == "objc_implement") { + ExactValue ev = check_decl_attribute_value(c, value); + if (ev.kind == ExactValue_Bool) { + ac->objc_is_implementation = ev.value_bool; + } else if (ev.kind == ExactValue_Invalid) { + ac->objc_is_implementation = true; + } else { + error(elem, "Expected a boolean value, or no value, for '%.*s'", LIT(name)); + } + + // This implies exported, strongly linked + if (ac->objc_is_implementation) { + ac->is_export = true; + ac->linkage = str_lit("strong"); + } + + return true; + } else if (name == "objc_selector") { + ExactValue ev = check_decl_attribute_value(c, value); + if (ev.kind == ExactValue_String) { + if (string_is_valid_identifier(ev.value_string)) { + ac->objc_selector = ev.value_string; + } else { + error(elem, "Invalid identifier for '%.*s', got '%.*s'", LIT(name), LIT(ev.value_string)); + } + } else { + error(elem, "Expected a string value for '%.*s'", LIT(name)); + } + return true; } else if (name == "require_target_feature") { ExactValue ev = check_decl_attribute_value(c, value); if (ev.kind == ExactValue_String) { @@ -3901,8 +3946,36 @@ gb_internal DECL_ATTRIBUTE_PROC(type_decl_attribute) { ac->objc_class = ev.value_string; } return true; - } - return false; + } else if (name == "objc_implement") { + ExactValue ev = check_decl_attribute_value(c, value); + if (ev.kind == ExactValue_Bool) { + ac->objc_is_implementation = ev.value_bool; + } else if (ev.kind == ExactValue_Invalid) { + ac->objc_is_implementation = true; + } else { + error(elem, "Expected a boolean value, or no value, for '%.*s'", LIT(name)); + } + return true; + } else if (name == "objc_superclass") { + Type *objc_superclass = check_type(c, value); + + if (objc_superclass != nullptr) { + ac->objc_superclass = objc_superclass; + } else { + error(value, "'%.*s' expected a named type", LIT(name)); + } + return true; + } else if (name == "objc_ivar") { + Type *objc_ivar = check_type(c, value); + + if (objc_ivar != nullptr) { + ac->objc_ivar = objc_ivar; + } else { + error(value, "'%.*s' expected a named type", LIT(name)); + } + return true; + } + return false; } diff --git a/src/checker.hpp b/src/checker.hpp index d3b2d7d89..9910ed17b 100644 --- a/src/checker.hpp +++ b/src/checker.hpp @@ -148,8 +148,12 @@ struct AttributeContext { String objc_class; String objc_name; - bool objc_is_class_method; + String objc_selector; Type * objc_type; + Type * objc_superclass; + Type * objc_ivar; + bool objc_is_class_method : 1; + bool objc_is_implementation : 1; // This struct or proc provides a class/method implementation, not a binding to an existing type. String require_target_feature; // required by the target micro-architecture String enable_target_feature; // will be enabled for the procedure only @@ -365,6 +369,11 @@ struct ObjcMsgData { Type *proc_type; }; +struct ObjcMethodData { + AttributeContext ac; + Entity *proc_entity; +}; + enum LoadFileTier { LoadFileTier_Invalid, LoadFileTier_Exists, @@ -479,6 +488,12 @@ struct CheckerInfo { BlockingMutex objc_types_mutex; PtrMap objc_msgSend_types; + MPSCQueue objc_class_implementations; + + BlockingMutex objc_method_mutex; + PtrMap> objc_method_implementations; + + BlockingMutex load_file_mutex; StringMap load_file_cache; diff --git a/src/checker_builtin_procs.hpp b/src/checker_builtin_procs.hpp index 40dde8240..cb2ce3915 100644 --- a/src/checker_builtin_procs.hpp +++ b/src/checker_builtin_procs.hpp @@ -331,6 +331,7 @@ BuiltinProc__type_end, BuiltinProc_objc_find_class, BuiltinProc_objc_register_selector, BuiltinProc_objc_register_class, + BuiltinProc_objc_ivar_get, BuiltinProc_constant_utf16_cstring, @@ -673,6 +674,7 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { {STR_LIT("objc_find_class"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("objc_register_selector"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, {STR_LIT("objc_register_class"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, + {STR_LIT("ivar_get"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, {STR_LIT("constant_utf16_cstring"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, diff --git a/src/entity.cpp b/src/entity.cpp index b2148aa7b..9a5996e3d 100644 --- a/src/entity.cpp +++ b/src/entity.cpp @@ -235,6 +235,9 @@ struct Entity { Type * type_parameter_specialization; String ir_mangled_name; bool is_type_alias; + bool objc_is_implementation; + Type* objc_superclass; + Type* objc_ivar; String objc_class_name; TypeNameObjCMetadata *objc_metadata; } TypeName; diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 083a1d90e..23ad81847 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1173,6 +1173,332 @@ gb_internal lbProcedure *lb_create_objc_names(lbModule *main_module) { return p; } +// TODO(harold): Move this out of here and into a more suitable place. +// TODO(harold): Should not take an allocator, but always use temp, as we return string literals as well. +String lb_get_objc_type_encoding(Type *t, gbAllocator allocator, isize pointer_depth = 0) { + // NOTE(harold): See https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html#//apple_ref/doc/uid/TP40008048-CH100 + + // NOTE(harold): Darwin targets are always 64-bit. Should we drop this and assume "q" always? + #define INT_SIZE_ENCODING (build_context.metrics.ptr_size == 4 ? "i" : "q") + switch (t->kind) { + case Type_Basic: { + switch (t->Basic.kind) { + case Basic_Invalid: + return str_lit("?"); + + case Basic_llvm_bool: + case Basic_bool: + case Basic_b8: + return str_lit("B"); + + case Basic_b16: + return str_lit("C"); + case Basic_b32: + return str_lit("I"); + case Basic_b64: + return str_lit("q"); + case Basic_i8: + return str_lit("c"); + case Basic_u8: + return str_lit("C"); + case Basic_i16: + case Basic_i16le: + case Basic_i16be: + return str_lit("s"); + case Basic_u16: + case Basic_u16le: + case Basic_u16be: + return str_lit("S"); + case Basic_i32: + case Basic_i32le: + case Basic_i32be: + return str_lit("i"); + case Basic_u32le: + case Basic_u32: + case Basic_u32be: + return str_lit("I"); + case Basic_i64: + case Basic_i64le: + case Basic_i64be: + return str_lit("q"); + case Basic_u64: + case Basic_u64le: + case Basic_u64be: + return str_lit("Q"); + case Basic_i128: + case Basic_i128le: + case Basic_i128be: + return str_lit("t"); + case Basic_u128: + case Basic_u128le: + case Basic_u128be: + return str_lit("T"); + case Basic_rune: + return str_lit("I"); + case Basic_f16: + case Basic_f16le: + case Basic_f16be: + return str_lit("s"); // @harold: Closest we've got? + case Basic_f32: + case Basic_f32le: + case Basic_f32be: + return str_lit("f"); + case Basic_f64: + case Basic_f64le: + case Basic_f64be: + return str_lit("d"); + + // TODO(harold) These: + case Basic_complex32: + case Basic_complex64: + case Basic_complex128: + case Basic_quaternion64: + case Basic_quaternion128: + case Basic_quaternion256: + return str_lit("?"); + + case Basic_int: + return str_lit(INT_SIZE_ENCODING); + case Basic_uint: + return build_context.metrics.ptr_size == 4 ? str_lit("I") : str_lit("Q"); + case Basic_uintptr: + case Basic_rawptr: + return str_lit("^v"); + + case Basic_string: + return build_context.metrics.ptr_size == 4 ? str_lit("{string=*i}") : str_lit("{string=*q}"); + + case Basic_cstring: return str_lit("*"); + case Basic_any: return str_lit("{any=^v^v"); // rawptr + ^Type_Info + + case Basic_typeid: + GB_ASSERT(t->Basic.size == 8); + return str_lit("q"); + + // Untyped types + case Basic_UntypedBool: + case Basic_UntypedInteger: + case Basic_UntypedFloat: + case Basic_UntypedComplex: + case Basic_UntypedQuaternion: + case Basic_UntypedString: + case Basic_UntypedRune: + case Basic_UntypedNil: + case Basic_UntypedUninit: + GB_PANIC("Untyped types cannot be @encoded()"); + return str_lit("?"); + } + break; + } + + case Type_Named: + case Type_Struct: + case Type_Union: { + Type* base = t; + if (base->kind == Type_Named) { + base = base_type(base); + if(base->kind != Type_Struct && base->kind != Type_Union) { + return lb_get_objc_type_encoding(base, allocator, pointer_depth); + } + } + + const bool is_union = base->kind == Type_Union; + if (!is_union) { + // Check for objc_SEL + if (internal_check_is_assignable_to(base, t_objc_SEL)) { + return str_lit(":"); + } + + // Check for objc_Class + if (internal_check_is_assignable_to(base, t_objc_SEL)) { + return str_lit("#"); + } + + // Treat struct as an Objective-C Class? + if (has_type_got_objc_class_attribute(base) && pointer_depth == 0) { + return str_lit("#"); + } + } + + if (is_type_objc_object(base)) { + return str_lit("@"); + } + + + gbString s = gb_string_make_reserve(allocator, 16); + s = gb_string_append_length(s, is_union ? "(" :"{", 1); + if (t->kind == Type_Named) { + s = gb_string_append_length(s, t->Named.name.text, t->Named.name.len); + } + + // Write fields + if (pointer_depth < 2) { + s = gb_string_append_length(s, "=", 1); + + if (!is_union) { + for( auto& f : t->Struct.fields ) { + String field_type = lb_get_objc_type_encoding(f->type, allocator, pointer_depth); + s = gb_string_append_length(s, field_type.text, field_type.len); + } + } else { + // #TODO(harold): Encode fields + } + } + + s = gb_string_append_length(s, is_union ? ")" :"}", 1); + + return make_string_c(s); + } + + case Type_Generic: + GB_PANIC("Generic types cannot be @encoded()"); + return str_lit("?"); + + case Type_Pointer: { + String pointee = lb_get_objc_type_encoding(t->Pointer.elem, allocator, pointer_depth +1); + // Special case for Objective-C Objects + if (pointer_depth == 0 && pointee == "@") { + return pointee; + } + + return concatenate_strings(allocator, str_lit("^"), pointee); + } + + case Type_MultiPointer: + return concatenate_strings(allocator, str_lit("^"), lb_get_objc_type_encoding(t->Pointer.elem, allocator, pointer_depth +1)); + + case Type_Array: { + String type_str = lb_get_objc_type_encoding(t->Array.elem, allocator, pointer_depth); + + gbString s = gb_string_make_reserve(allocator, type_str.len + 8); + s = gb_string_append_fmt(s, "[%lld%s]", t->Array.count, type_str.text); + return make_string_c(s); + } + + case Type_EnumeratedArray: { + String type_str = lb_get_objc_type_encoding(t->EnumeratedArray.elem, allocator, pointer_depth); + + gbString s = gb_string_make_reserve(allocator, type_str.len + 8); + s = gb_string_append_fmt(s, "[%lld%s]", t->EnumeratedArray.count, type_str.text); + return make_string_c(s); + } + + case Type_Slice: { + String type_str = lb_get_objc_type_encoding(t->Slice.elem, allocator, pointer_depth); + gbString s = gb_string_make_reserve(allocator, type_str.len + 8); + s = gb_string_append_fmt(s, "{slice=^%s%s}", type_str, INT_SIZE_ENCODING); + return make_string_c(s); + } + + case Type_DynamicArray: { + String type_str = lb_get_objc_type_encoding(t->DynamicArray.elem, allocator, pointer_depth); + gbString s = gb_string_make_reserve(allocator, type_str.len + 8); + s = gb_string_append_fmt(s, "{dynamic=^%s%s%sAllocator={?^v}}", type_str, INT_SIZE_ENCODING, INT_SIZE_ENCODING); + return make_string_c(s); + } + + case Type_Map: + return str_lit("{^v^v{Allocator=?^v}}"); + case Type_Enum: + return lb_get_objc_type_encoding(t->Enum.base_type, allocator, pointer_depth); + case Type_Tuple: + // NOTE(harold): Is this allowed here? + return str_lit("?"); + case Type_Proc: + return str_lit("?"); + case Type_BitSet: + return lb_get_objc_type_encoding(t->BitSet.underlying, allocator, pointer_depth); + case Type_SimdVector: + break; + case Type_Matrix: + break; + case Type_BitField: + return lb_get_objc_type_encoding(t->BitField.backing_type, allocator, pointer_depth); + case Type_SoaPointer: { + gbString s = gb_string_make_reserve(allocator, 8); + s = gb_string_append_fmt(s, "{=^v%s}", INT_SIZE_ENCODING); + return make_string_c(s); + } + + } // End switch t->kind + #undef INT_SIZE_ENCODING + + GB_PANIC("Unreachable"); +} + +struct lbObjCGlobalClass { + lbObjCGlobal g; + lbValue class_value; // Local registered class value +}; + +gb_internal void lb_register_objc_thing( + StringSet &handled, + lbModule *m, + Array &args, + Array &class_impls, + StringMap &class_map, + lbProcedure *p, + lbObjCGlobal const &g, + char const *call +) { + if (string_set_update(&handled, g.name)) { + return; + } + + lbAddr addr = {}; + lbValue *found = string_map_get(&m->members, g.global_name); + if (found) { + addr = lb_addr(*found); + } else { + lbValue v = {}; + LLVMTypeRef t = lb_type(m, g.type); + v.value = LLVMAddGlobal(m->mod, t, g.global_name); + v.type = alloc_type_pointer(g.type); + addr = lb_addr(v); + LLVMSetInitializer(v.value, LLVMConstNull(t)); + } + + lbValue class_ptr{}; + lbValue class_name = lb_const_value(m, t_cstring, exact_value_string(g.name)); + + // If this class requires an implementation, save it for registration below. + if (g.class_impl_type != nullptr) { + + // Make sure the superclass has been initialized before us + lbValue superclass_value{}; + + auto& tn = g.class_impl_type->Named.type_name->TypeName; + Type *superclass = tn.objc_superclass; + if (superclass != nullptr) { + auto& superclass_global = string_map_must_get(&class_map, superclass->Named.type_name->TypeName.objc_class_name); + lb_register_objc_thing(handled, m, args, class_impls, class_map, p, superclass_global.g, call); + GB_ASSERT(superclass_global.class_value.value); + + superclass_value = superclass_global.class_value; + } + + args.count = 3; + args[0] = superclass == nullptr ? lb_const_nil(m, t_objc_Class) : superclass_value; + args[1] = class_name; + args[2] = lb_const_int(m, t_uint, 0); + class_ptr = lb_emit_runtime_call(p, "objc_allocateClassPair", args); + + array_add(&class_impls, lbObjCGlobalClass{g, class_ptr}); + } + else { + args.count = 1; + args[0] = class_name; + class_ptr = lb_emit_runtime_call(p, call, args); + } + + lb_addr_store(p, addr, class_ptr); + + lbObjCGlobalClass* class_global = string_map_get(&class_map, g.name); + if (class_global != nullptr) { + class_global->class_value = class_ptr; + } +} + gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { if (p == nullptr) { return; @@ -1186,39 +1512,238 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { string_set_init(&handled); defer (string_set_destroy(&handled)); - auto args = array_make(temporary_allocator(), 1); + auto args = array_make(temporary_allocator(), 3, 8); + auto class_impls = array_make(temporary_allocator(), 0, 16); - LLVMSetLinkage(p->value, LLVMInternalLinkage); - lb_begin_procedure_body(p); + // Ensure classes that have been implicitly referenced through + // the objc_superclass attribute have a global variable available for them. + TypeSet class_set{}; + type_set_init(&class_set, gen->objc_classes.count+16); + defer (type_set_destroy(&class_set)); - auto register_thing = [&handled, &m, &args](lbProcedure *p, lbObjCGlobal const &g, char const *call) { - if (!string_set_update(&handled, g.name)) { - lbAddr addr = {}; - lbValue *found = string_map_get(&m->members, g.global_name); - if (found) { - addr = lb_addr(*found); - } else { - lbValue v = {}; - LLVMTypeRef t = lb_type(m, g.type); - v.value = LLVMAddGlobal(m->mod, t, g.global_name); - v.type = alloc_type_pointer(g.type); - addr = lb_addr(v); - LLVMSetInitializer(v.value, LLVMConstNull(t)); - } + auto referenced_classes = array_make(temporary_allocator()); + for (lbObjCGlobal g = {}; mpsc_dequeue(&gen->objc_classes, &g); /**/) { + array_add( &referenced_classes, g); - args[0] = lb_const_value(m, t_cstring, exact_value_string(g.name)); - lbValue ptr = lb_emit_runtime_call(p, call, args); - lb_addr_store(p, addr, ptr); - } - }; + Type *cls = g.class_impl_type; + while (cls) { + if (type_set_update(&class_set, cls)) { + break; + } + GB_ASSERT(cls->kind == Type_Named); - for (lbObjCGlobal g = {}; mpsc_dequeue(&gen->objc_classes, &g); /**/) { - register_thing(p, g, "objc_lookUpClass"); - } + cls = cls->Named.type_name->TypeName.objc_superclass; + } + } - for (lbObjCGlobal g = {}; mpsc_dequeue(&gen->objc_selectors, &g); /**/) { - register_thing(p, g, "sel_registerName"); - } + for (auto pair : class_set) { + auto& tn = pair.type->Named.type_name->TypeName; + Type *class_impl = !tn.objc_is_implementation ? nullptr : pair.type; + lb_handle_objc_find_or_register_class(p, tn.objc_class_name, class_impl); + } + for (lbObjCGlobal g = {}; mpsc_dequeue(&gen->objc_classes, &g); /**/) { + array_add( &referenced_classes, g ); + } + + // Add all class globals to a map so that we can look them up dynamically + // in order to resolve out-of-order because classes that are being implemented + // need their superclasses to have been registered before them. + StringMap global_class_map{}; + string_map_init(&global_class_map, (usize)gen->objc_classes.count); + defer (string_map_destroy(&global_class_map)); + + for (lbObjCGlobal g :referenced_classes) { + string_map_set(&global_class_map, g.name, lbObjCGlobalClass{g}); + } + + LLVMSetLinkage(p->value, LLVMInternalLinkage); + lb_begin_procedure_body(p); + + // Register class globals, gathering classes that must be implemented + for (auto& kv : global_class_map) { + lb_register_objc_thing(handled, m, args, class_impls, global_class_map, p, kv.value.g, "objc_lookUpClass"); + } + + // Prefetch selectors for implemented methods so that they can also be registered. + for (const auto& cd : class_impls) { + auto& g = cd.g; + Type *class_type = g.class_impl_type; + + Array* methods = map_get(&m->info->objc_method_implementations, class_type); + if (!methods) { + continue; + } + + for (const ObjcMethodData& md : *methods) { + lb_handle_objc_find_or_register_selector(p, md.ac.objc_selector); + } + } + + // Now we can register all referenced selectors + for (lbObjCGlobal g = {}; mpsc_dequeue(&gen->objc_selectors, &g); /**/) { + lb_register_objc_thing(handled, m, args, class_impls, global_class_map, p, g, "sel_registerName"); + } + + + // Emit method wrapper implementations and registration + auto wrapper_args = array_make(temporary_allocator(), 2, 8); + + for (const auto& cd : class_impls) { + auto& g = cd.g; + Type *class_type = g.class_impl_type; + + Array* methods = map_get(&m->info->objc_method_implementations, class_type); + if (!methods) { + continue; + } + + Type *class_ptr_type = alloc_type_pointer(class_type); + lbValue class_value = cd.class_value; + + for (const ObjcMethodData& md : *methods) { + GB_ASSERT( md.proc_entity->kind == Entity_Procedure); + Type *method_type = md.proc_entity->type; + + String proc_name = make_string_c("__$objc_method::"); + proc_name = concatenate_strings(temporary_allocator(), proc_name, g.name); + proc_name = concatenate_strings(temporary_allocator(), proc_name, str_lit("::")); + proc_name = concatenate_strings( permanent_allocator(), proc_name, md.ac.objc_name); + + wrapper_args.count = 2; + wrapper_args[0] = md.ac.objc_is_class_method ? t_objc_Class : class_ptr_type; + wrapper_args[1] = t_objc_SEL; + + auto method_param_count = (isize)method_type->Proc.param_count; + i32 method_param_offset = 0; + + // TODO(harold): Need to make sure (at checker stage) that the non-class method has the self parameter already. + // (Maybe this is already accounted for?.) + if (!md.ac.objc_is_class_method) { + GB_ASSERT(method_param_count >= 1); + method_param_count -= 1; + method_param_offset = 1; + } + + for (i32 i = 0; i < method_param_count; i++) { + array_add(&wrapper_args, method_type->Proc.params->Tuple.variables[method_param_offset+i]->type); + } + + Type *wrapper_args_tuple = alloc_type_tuple_from_field_types(wrapper_args.data, wrapper_args.count, false, true); + Type *wrapper_proc_type = alloc_type_proc(nullptr, wrapper_args_tuple, (isize)wrapper_args_tuple->Tuple.variables.count, nullptr, 0, false, ProcCC_CDecl); + + lbProcedure *wrapper_proc = lb_create_dummy_procedure(m, proc_name, wrapper_proc_type); + lb_add_attribute_to_proc(wrapper_proc->module, wrapper_proc->value, "nounwind"); + + // Emit the wrapper + LLVMSetLinkage(wrapper_proc->value, LLVMExternalLinkage); + lb_begin_procedure_body(wrapper_proc); + { + auto method_call_args = array_make(temporary_allocator(), method_param_count + (isize)method_param_offset); + + if (!md.ac.objc_is_class_method) { + method_call_args[0] = lbValue { + wrapper_proc->raw_input_parameters[0], + class_ptr_type, + }; + } + + for (isize i = 0; i < method_param_count; i++) { + method_call_args[i+method_param_offset] = lbValue { + wrapper_proc->raw_input_parameters[i+2], + method_type->Proc.params->Tuple.variables[i+method_param_offset]->type, + }; + } + lbValue method_proc_value = lb_find_procedure_value_from_entity(m, md.proc_entity); + + // Call real procedure for method from here, passing the parameters expected, if any. + lb_emit_call(wrapper_proc, method_proc_value, method_call_args); + } + lb_end_procedure_body(wrapper_proc); + + + // Add the method to the class + String method_encoding = str_lit("v"); + // TODO (harold): Checker must ensure that objc_methods have a single return value or none! + GB_ASSERT(method_type->Proc.result_count <= 1); + if (method_type->Proc.result_count != 0) { + method_encoding = lb_get_objc_type_encoding(method_type->Proc.results->Tuple.variables[0]->type, temporary_allocator()); + } + + if (!md.ac.objc_is_class_method) { + method_encoding = concatenate_strings(temporary_allocator(), method_encoding, str_lit("@:")); + } else { + method_encoding = concatenate_strings(temporary_allocator(), method_encoding, str_lit("#:")); + } + + for (i32 i = method_param_offset; i < method_param_count; i++) { + Type *param_type = method_type->Proc.params->Tuple.variables[i]->type; + String param_encoding = lb_get_objc_type_encoding(param_type, temporary_allocator()); + + method_encoding = concatenate_strings(temporary_allocator(), method_encoding, param_encoding); + } + + // Emit method registration + lbAddr* sel_address = string_map_get(&m->objc_selectors, md.ac.objc_selector); + GB_ASSERT(sel_address); + lbValue selector_value = lb_addr_load(p, *sel_address); + + args.count = 4; + args[0] = class_value; // Class + args[1] = selector_value; // SEL + args[2] = lbValue { wrapper_proc->value, wrapper_proc->type }; + args[3] = lb_const_value(m, t_cstring, exact_value_string(method_encoding)); + + // TODO(harold): Emit check BOOL result and panic if false. + lb_emit_runtime_call(p, "class_addMethod", args); + + } // End methods + + // Add ivar if we have one + Type *ivar_type = class_type->Named.type_name->TypeName.objc_ivar; + if (ivar_type != nullptr) { + // Register a single ivar for this class + Type *ivar_base = ivar_type->Named.base; + // TODO(harold): No idea if I can use this, but I assume so? + const i64 size = ivar_base->cached_size; + const i64 alignment = ivar_base->cached_align; + // TODO(harold): Checker: Alignment must be compatible with ivar rules. Or we should increase the alignment if needed. + + String ivar_name = str_lit("__$ivar"); + String ivar_types = str_lit("{= }"); + args.count = 5; + args[0] = class_value; + args[1] = lb_const_value(m, t_cstring, exact_value_string(ivar_name)); + args[2] = lb_const_value(m, t_uint, exact_value_u64((u64)size)); + args[3] = lb_const_value(m, t_u8, exact_value_u64((u64)alignment)); + args[4] = lb_const_value(m, t_cstring, exact_value_string(ivar_types)); + lb_emit_runtime_call(p, "class_addIvar", args); + } + + // Complete the class registration + args.count = 1; + args[0] = class_value; + lb_emit_runtime_call(p, "objc_registerClassPair", args); + + // If we have an ivar, store its offset globally for an intrinsic + // TODO(harold): Only do this for types that had ivar_get calls registered! + if (ivar_type != nullptr) { + args.count = 2; + args[0] = class_value; + args[1] = lb_const_value(m, t_cstring, exact_value_string(str_lit("__$ivar"))); + lbValue ivar = lb_emit_runtime_call(p, "class_getInstanceVariable", args); + + args.count = 1; + args[0] = ivar; + lbValue ivar_offset = lb_emit_runtime_call(p, "ivar_getOffset", args); + lbValue ivar_offset_u32 = lb_emit_conv(p, ivar_offset, t_u32); + + String class_name = class_type->Named.type_name->TypeName.objc_class_name; + // TODO(harold): Oops! This is wrong, that map is there to prevent re-entry. + // Simply emit from referred ivars. For now use a single module only. + lbAddr ivar_addr = string_map_must_get(&m->objc_ivars, class_name); + lb_addr_store(p, ivar_addr, ivar_offset_u32); + } + } lb_end_procedure_body(p); } diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index 6177fcf6e..7694c65c3 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -196,6 +196,7 @@ struct lbModule { StringMap objc_classes; StringMap objc_selectors; + StringMap objc_ivars; PtrMap map_cell_info_map; // address of runtime.Map_Info PtrMap map_info_map; // address of runtime.Map_Cell_Info @@ -219,6 +220,7 @@ struct lbObjCGlobal { gbString global_name; String name; Type * type; + Type * class_impl_type; // This is set when the class has the objc_implement attribute set to true. }; struct lbGenerator : LinkerData { @@ -240,6 +242,7 @@ struct lbGenerator : LinkerData { MPSCQueue entities_to_correct_linkage; MPSCQueue objc_selectors; MPSCQueue objc_classes; + MPSCQueue objc_ivars; }; diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 421720c4c..7f012e006 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -101,6 +101,7 @@ gb_internal void lb_init_module(lbModule *m, Checker *c) { string_map_init(&m->objc_classes); string_map_init(&m->objc_selectors); + string_map_init(&m->objc_ivars); map_init(&m->map_info_map, 0); map_init(&m->map_cell_info_map, 0); @@ -173,6 +174,7 @@ gb_internal bool lb_init_generator(lbGenerator *gen, Checker *c) { mpsc_init(&gen->entities_to_correct_linkage, heap_allocator()); mpsc_init(&gen->objc_selectors, heap_allocator()); mpsc_init(&gen->objc_classes, heap_allocator()); + mpsc_init(&gen->objc_ivars, heap_allocator()); return true; } diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index 3212abd9a..bf4ebf377 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -3290,6 +3290,7 @@ gb_internal lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValu case BuiltinProc_objc_find_class: return lb_handle_objc_find_class(p, expr); case BuiltinProc_objc_register_selector: return lb_handle_objc_register_selector(p, expr); case BuiltinProc_objc_register_class: return lb_handle_objc_register_class(p, expr); + case BuiltinProc_objc_ivar_get: return lb_handle_objc_ivar_get(p, expr); case BuiltinProc_constant_utf16_cstring: diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp index bfeebfcbe..897b71b5b 100644 --- a/src/llvm_backend_utility.cpp +++ b/src/llvm_backend_utility.cpp @@ -2125,7 +2125,7 @@ gb_internal lbAddr lb_handle_objc_find_or_register_selector(lbProcedure *p, Stri return addr; } -gb_internal lbAddr lb_handle_objc_find_or_register_class(lbProcedure *p, String const &name) { +gb_internal lbAddr lb_handle_objc_find_or_register_class(lbProcedure *p, String const &name, Type *class_impl_type) { lbModule *m = p->module; lbAddr *found = string_map_get(&m->objc_classes, name); if (found) { @@ -2148,13 +2148,72 @@ gb_internal lbAddr lb_handle_objc_find_or_register_class(lbProcedure *p, String } else { LLVMSetLinkage(g.value, LLVMExternalLinkage); } - mpsc_enqueue(&m->gen->objc_classes, lbObjCGlobal{m, global_name, name, t_objc_Class}); + mpsc_enqueue(&m->gen->objc_classes, lbObjCGlobal{m, global_name, name, t_objc_Class, class_impl_type}); lbAddr addr = lb_addr(g); string_map_set(&m->objc_classes, name, addr); return addr; } +gb_internal lbAddr lb_handle_objc_find_or_register_ivar(lbModule *m, Type *self_type) { + + String name = self_type->Named.type_name->TypeName.objc_class_name; + GB_ASSERT(name != ""); + + lbAddr *found = string_map_get(&m->objc_ivars, name); + if (found) { + return *found; + } + + + lbModule *default_module = &m->gen->default_module; + + gbString global_name = gb_string_make(permanent_allocator(), "__$objc_ivar::"); + global_name = gb_string_append_length(global_name, name.text, name.len); + + // Create a global variable to store offset of the ivar in an instance of an object + Type *p_ivar_offset = alloc_type_pointer(t_u32); + + LLVMTypeRef t = lb_type(m, p_ivar_offset); + lbValue g = {}; + g.value = LLVMAddGlobal(m->mod, t, global_name); + g.type = p_ivar_offset; + + if (default_module == m) { + LLVMSetInitializer(g.value, LLVMConstNull(t)); + lb_add_member(m, make_string_c(global_name), g); + } else { + LLVMSetLinkage(g.value, LLVMExternalLinkage); + } + + mpsc_enqueue(&m->gen->objc_ivars, lbObjCGlobal{m, global_name, name, self_type}); + + lbAddr addr = lb_addr(g); + string_map_set(&m->objc_ivars, name, addr); + return addr; +} + +gb_internal lbValue lb_handle_objc_ivar_get(lbProcedure *p, Ast *expr) { + ast_node(ce, CallExpr, expr); + lbModule *m = p->module; + + GB_ASSERT(ce->args[0]->tav.type->kind == Type_Pointer); + Type *self_type = ce->args[0]->tav.type->Pointer.elem; + Type *ivar_type = self_type->Named.type_name->TypeName.objc_ivar; + + Type* p_ivar = alloc_type_pointer(ivar_type); + + lbValue ivar_offset = lb_addr_load(p, lb_handle_objc_find_or_register_ivar(m, self_type)); + lbValue ivar_offset_uptr = lb_emit_conv(p, ivar_offset, t_uintptr); + + lbValue self = lb_build_expr(p, ce->args[0]); + lbValue self_uptr = lb_emit_conv(p, self, t_uintptr); + + lbValue ivar_uptr = lb_emit_arith(p, Token_Add, self_uptr, ivar_offset_uptr, t_uintptr); + + return lb_emit_conv(p, ivar_uptr, p_ivar); +} + gb_internal lbValue lb_handle_objc_find_selector(lbProcedure *p, Ast *expr) { ast_node(ce, CallExpr, expr); @@ -2188,7 +2247,7 @@ gb_internal lbValue lb_handle_objc_find_class(lbProcedure *p, Ast *expr) { auto tav = ce->args[0]->tav; GB_ASSERT(tav.value.kind == ExactValue_String); String name = tav.value.value_string; - return lb_addr_load(p, lb_handle_objc_find_or_register_class(p, name)); + return lb_addr_load(p, lb_handle_objc_find_or_register_class(p, name, nullptr)); } gb_internal lbValue lb_handle_objc_register_class(lbProcedure *p, Ast *expr) { @@ -2198,7 +2257,7 @@ gb_internal lbValue lb_handle_objc_register_class(lbProcedure *p, Ast *expr) { auto tav = ce->args[0]->tav; GB_ASSERT(tav.value.kind == ExactValue_String); String name = tav.value.value_string; - lbAddr dst = lb_handle_objc_find_or_register_class(p, name); + lbAddr dst = lb_handle_objc_find_or_register_class(p, name, nullptr); auto args = array_make(permanent_allocator(), 3); args[0] = lb_const_nil(m, t_objc_Class); @@ -2220,7 +2279,9 @@ gb_internal lbValue lb_handle_objc_id(lbProcedure *p, Ast *expr) { GB_ASSERT(e->kind == Entity_TypeName); String name = e->TypeName.objc_class_name; - return lb_addr_load(p, lb_handle_objc_find_or_register_class(p, name)); + Type *class_impl_type = e->TypeName.objc_is_implementation ? type : nullptr; + + return lb_addr_load(p, lb_handle_objc_find_or_register_class(p, name, class_impl_type)); } return lb_build_expr(p, expr); @@ -2266,9 +2327,6 @@ gb_internal lbValue lb_handle_objc_send(lbProcedure *p, Ast *expr) { return lb_emit_call(p, the_proc, args); } - - - gb_internal LLVMAtomicOrdering llvm_atomic_ordering_from_odin(ExactValue const &value) { GB_ASSERT(value.kind == ExactValue_Integer); i64 v = exact_value_to_i64(value); diff --git a/src/types.cpp b/src/types.cpp index 9c9472a28..1b2545279 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -729,10 +729,12 @@ gb_global Type *t_map_set_proc = nullptr; gb_global Type *t_objc_object = nullptr; gb_global Type *t_objc_selector = nullptr; gb_global Type *t_objc_class = nullptr; +gb_global Type *t_objc_ivar = nullptr; gb_global Type *t_objc_id = nullptr; gb_global Type *t_objc_SEL = nullptr; gb_global Type *t_objc_Class = nullptr; +gb_global Type *t_objc_Ivar = nullptr; enum OdinAtomicMemoryOrder : i32 { OdinAtomicMemoryOrder_relaxed = 0, // unordered From b3b4d501ca6c1af70c0ceef7610f6c5d83a2d296 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Mon, 21 Apr 2025 02:42:02 -0400 Subject: [PATCH 003/120] Fix ivar in multi-module mode. --- src/llvm_backend.cpp | 69 +++++++++++++++++++++++++----------- src/llvm_backend_utility.cpp | 14 ++++---- 2 files changed, 54 insertions(+), 29 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 23ad81847..ef975b8c1 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1588,6 +1588,13 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { // Emit method wrapper implementations and registration auto wrapper_args = array_make(temporary_allocator(), 2, 8); + PtrMap ivar_map{}; + map_init(&ivar_map, gen->objc_ivars.count); + + for (lbObjCGlobal g = {}; mpsc_dequeue(&gen->objc_ivars, &g); /**/) { + map_set(&ivar_map, g.class_impl_type, g); + } + for (const auto& cd : class_impls) { auto& g = cd.g; Type *class_type = g.class_impl_type; @@ -1700,7 +1707,9 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { // Add ivar if we have one Type *ivar_type = class_type->Named.type_name->TypeName.objc_ivar; - if (ivar_type != nullptr) { + lbObjCGlobal *g_ivar = map_get(&ivar_map, class_type); + + if (ivar_type != nullptr && g_ivar != nullptr) { // Register a single ivar for this class Type *ivar_base = ivar_type->Named.base; // TODO(harold): No idea if I can use this, but I assume so? @@ -1723,28 +1732,46 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { args.count = 1; args[0] = class_value; lb_emit_runtime_call(p, "objc_registerClassPair", args); - - // If we have an ivar, store its offset globally for an intrinsic - // TODO(harold): Only do this for types that had ivar_get calls registered! - if (ivar_type != nullptr) { - args.count = 2; - args[0] = class_value; - args[1] = lb_const_value(m, t_cstring, exact_value_string(str_lit("__$ivar"))); - lbValue ivar = lb_emit_runtime_call(p, "class_getInstanceVariable", args); - - args.count = 1; - args[0] = ivar; - lbValue ivar_offset = lb_emit_runtime_call(p, "ivar_getOffset", args); - lbValue ivar_offset_u32 = lb_emit_conv(p, ivar_offset, t_u32); - - String class_name = class_type->Named.type_name->TypeName.objc_class_name; - // TODO(harold): Oops! This is wrong, that map is there to prevent re-entry. - // Simply emit from referred ivars. For now use a single module only. - lbAddr ivar_addr = string_map_must_get(&m->objc_ivars, class_name); - lb_addr_store(p, ivar_addr, ivar_offset_u32); - } } + // Register ivars + Type *ptr_u32 = alloc_type_pointer(t_u32); + for (auto const& kv : ivar_map) { + lbObjCGlobal const& g = kv.value; + lbAddr ivar_addr = {}; + lbValue *found = string_map_get(&m->members, g.global_name); + + if (found) { + ivar_addr = lb_addr(*found); + } else { + // Defined in an external package, must define now + LLVMTypeRef t = lb_type(m, t_u32); + + lbValue global{}; + global.value = LLVMAddGlobal(m->mod, t, g.global_name); + global.type = ptr_u32; + + LLVMSetInitializer(global.value, LLVMConstInt(t, 0, true)); + + ivar_addr = lb_addr(global); + } + + String class_name = g.class_impl_type->Named.type_name->TypeName.objc_class_name; + lbValue class_value = string_map_must_get(&global_class_map, class_name).class_value; + + args.count = 2; + args[0] = class_value; + args[1] = lb_const_value(m, t_cstring, exact_value_string(str_lit("__$ivar"))); + lbValue ivar = lb_emit_runtime_call(p, "class_getInstanceVariable", args); + + args.count = 1; + args[0] = ivar; + lbValue ivar_offset = lb_emit_runtime_call(p, "ivar_getOffset", args); + lbValue ivar_offset_u32 = lb_emit_conv(p, ivar_offset, t_u32); + + lb_addr_store(p, ivar_addr, ivar_offset_u32); + } + lb_end_procedure_body(p); } diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp index 897b71b5b..ae7842ce6 100644 --- a/src/llvm_backend_utility.cpp +++ b/src/llvm_backend_utility.cpp @@ -2165,28 +2165,26 @@ gb_internal lbAddr lb_handle_objc_find_or_register_ivar(lbModule *m, Type *self_ return *found; } - lbModule *default_module = &m->gen->default_module; gbString global_name = gb_string_make(permanent_allocator(), "__$objc_ivar::"); global_name = gb_string_append_length(global_name, name.text, name.len); // Create a global variable to store offset of the ivar in an instance of an object - Type *p_ivar_offset = alloc_type_pointer(t_u32); + LLVMTypeRef t = lb_type(m, t_u32); - LLVMTypeRef t = lb_type(m, p_ivar_offset); lbValue g = {}; g.value = LLVMAddGlobal(m->mod, t, global_name); - g.type = p_ivar_offset; + g.type = alloc_type_pointer(t_u32); if (default_module == m) { - LLVMSetInitializer(g.value, LLVMConstNull(t)); + LLVMSetInitializer(g.value, LLVMConstInt(t, 0, true)); lb_add_member(m, make_string_c(global_name), g); } else { LLVMSetLinkage(g.value, LLVMExternalLinkage); } - mpsc_enqueue(&m->gen->objc_ivars, lbObjCGlobal{m, global_name, name, self_type}); + mpsc_enqueue(&m->gen->objc_ivars, lbObjCGlobal{m, global_name, name, t_u32, self_type}); lbAddr addr = lb_addr(g); string_map_set(&m->objc_ivars, name, addr); @@ -2206,8 +2204,8 @@ gb_internal lbValue lb_handle_objc_ivar_get(lbProcedure *p, Ast *expr) { lbValue ivar_offset = lb_addr_load(p, lb_handle_objc_find_or_register_ivar(m, self_type)); lbValue ivar_offset_uptr = lb_emit_conv(p, ivar_offset, t_uintptr); - lbValue self = lb_build_expr(p, ce->args[0]); - lbValue self_uptr = lb_emit_conv(p, self, t_uintptr); + lbValue self = lb_build_expr(p, ce->args[0]); + lbValue self_uptr = lb_emit_conv(p, self, t_uintptr); lbValue ivar_uptr = lb_emit_arith(p, Token_Add, self_uptr, ivar_offset_uptr, t_uintptr); From bca02f81cd5affa288bac0cc0ed08fe730072aec Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Tue, 22 Apr 2025 19:16:29 -0400 Subject: [PATCH 004/120] Include the ivar in the Objective-C class unconditionally of it being used or not. Allow pseudo-fields for ivar access. --- src/llvm_backend.cpp | 5 ++--- src/llvm_backend_expr.cpp | 32 ++++++++++++++++++++++++-------- src/llvm_backend_utility.cpp | 33 +++++++++++++++++++-------------- src/types.cpp | 9 +++++++++ 4 files changed, 54 insertions(+), 25 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index ef975b8c1..257625849 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1707,9 +1707,8 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { // Add ivar if we have one Type *ivar_type = class_type->Named.type_name->TypeName.objc_ivar; - lbObjCGlobal *g_ivar = map_get(&ivar_map, class_type); - if (ivar_type != nullptr && g_ivar != nullptr) { + if (ivar_type != nullptr) { // Register a single ivar for this class Type *ivar_base = ivar_type->Named.base; // TODO(harold): No idea if I can use this, but I assume so? @@ -1734,7 +1733,7 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { lb_emit_runtime_call(p, "objc_registerClassPair", args); } - // Register ivars + // Register ivar offsets for any `objc_ivar_get` expressions emitted. Type *ptr_u32 = alloc_type_pointer(t_u32); for (auto const& kv : ivar_map) { lbObjCGlobal const& g = kv.value; diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index c5ea0ddac..b9c01ad03 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -5138,8 +5138,6 @@ gb_internal lbAddr lb_build_addr_internal(lbProcedure *p, Ast *expr) { return lb_build_addr(p, unparen_expr(se->selector)); } - - Type *type = base_type(tav.type); if (tav.mode == Addressing_Type) { // Addressing_Type Selection sel = lookup_field(tav.type, selector, true); if (sel.pseudo_field) { @@ -5174,18 +5172,37 @@ gb_internal lbAddr lb_build_addr_internal(lbProcedure *p, Ast *expr) { return lb_addr_swizzle(a, type, swizzle_count, swizzle_indices); } - Selection sel = lookup_field(type, selector, false); + Selection sel = lookup_field(tav.type, selector, false); GB_ASSERT(sel.entity != nullptr); - if (sel.pseudo_field) { - GB_ASSERT(sel.entity->kind == Entity_Procedure || sel.entity->kind == Entity_ProcGroup); + if (sel.pseudo_field && (sel.entity->kind == Entity_Procedure || sel.entity->kind == Entity_ProcGroup)) { + // GB_ASSERT(sel.entity->kind == Entity_Procedure || sel.entity->kind == Entity_ProcGroup); Entity *e = entity_of_node(sel_node); GB_ASSERT(e->kind == Entity_Procedure); return lb_addr(lb_find_value_from_entity(p->module, e)); } - if (sel.is_bit_field) { - lbAddr addr = lb_build_addr(p, se->expr); + lbAddr addr = lb_build_addr(p, se->expr); + // TODO(harold): Ensure objc_ivar is always null when objc_implement is not set! + Type *d_type = type_deref(tav.type); //base_type(tav.type); + if (d_type->kind == Type_Named && d_type->Named.type_name->TypeName.objc_ivar) { + // NOTE(harold): We need to load the ivar from the current address and + // replace addr with the loaded ivar addr to apply the selector load properly. + + // If it's a deep pointer, dereference it first + // TODO(harold): Ensure this is save to do here. lb_emit_deep_field_gep() has several derefs, once per index. + // Not sure what multiple indices represent... + Type* type = tav.type; + if (is_type_pointer(type)) { + type = type_deref(type); + addr = lb_addr(lb_emit_load(p, addr.addr)); + } + + lbValue ivar_ptr = lb_handle_objc_ivar_for_objc_object_pointer(p, addr.addr); + addr = lb_addr(ivar_ptr); + } + + if (sel.is_bit_field) { Selection sub_sel = sel; sub_sel.index.count -= 1; @@ -5211,7 +5228,6 @@ gb_internal lbAddr lb_build_addr_internal(lbProcedure *p, Ast *expr) { } { - lbAddr addr = lb_build_addr(p, se->expr); if (addr.kind == lbAddr_Map) { lbValue v = lb_addr_load(p, addr); lbValue a = lb_address_from_load_or_generate_local(p, v); diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp index ae7842ce6..33211395a 100644 --- a/src/llvm_backend_utility.cpp +++ b/src/llvm_backend_utility.cpp @@ -2191,25 +2191,30 @@ gb_internal lbAddr lb_handle_objc_find_or_register_ivar(lbModule *m, Type *self_ return addr; } +gb_internal lbValue lb_handle_objc_ivar_for_objc_object_pointer(lbProcedure *p, lbValue self) { + GB_ASSERT(self.type->kind == Type_Pointer && self.type->Pointer.elem->kind == Type_Named); + + Type *self_type = self.type->Pointer.elem; + + lbValue self_uptr = lb_emit_conv(p, self, t_uintptr); + + lbValue ivar_offset = lb_addr_load(p, lb_handle_objc_find_or_register_ivar(p->module, self_type)); + lbValue ivar_offset_uptr = lb_emit_conv(p, ivar_offset, t_uintptr); + + + lbValue ivar_uptr = lb_emit_arith(p, Token_Add, self_uptr, ivar_offset_uptr, t_uintptr); + + Type *ivar_type = self_type->Named.type_name->TypeName.objc_ivar; + return lb_emit_conv(p, ivar_uptr, alloc_type_pointer(ivar_type)); +} + gb_internal lbValue lb_handle_objc_ivar_get(lbProcedure *p, Ast *expr) { ast_node(ce, CallExpr, expr); - lbModule *m = p->module; GB_ASSERT(ce->args[0]->tav.type->kind == Type_Pointer); - Type *self_type = ce->args[0]->tav.type->Pointer.elem; - Type *ivar_type = self_type->Named.type_name->TypeName.objc_ivar; + lbValue self = lb_build_expr(p, ce->args[0]); - Type* p_ivar = alloc_type_pointer(ivar_type); - - lbValue ivar_offset = lb_addr_load(p, lb_handle_objc_find_or_register_ivar(m, self_type)); - lbValue ivar_offset_uptr = lb_emit_conv(p, ivar_offset, t_uintptr); - - lbValue self = lb_build_expr(p, ce->args[0]); - lbValue self_uptr = lb_emit_conv(p, self, t_uintptr); - - lbValue ivar_uptr = lb_emit_arith(p, Token_Add, self_uptr, ivar_offset_uptr, t_uintptr); - - return lb_emit_conv(p, ivar_uptr, p_ivar); + return lb_handle_objc_ivar_for_objc_object_pointer(p, self); } gb_internal lbValue lb_handle_objc_find_selector(lbProcedure *p, Ast *expr) { diff --git a/src/types.cpp b/src/types.cpp index 1b2545279..96c17f49a 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -3329,6 +3329,15 @@ gb_internal Selection lookup_field_with_selection(Type *type_, String field_name } } } + + Type *objc_ivar_type = e->TypeName.objc_ivar; + if (objc_ivar_type != nullptr) { + sel = lookup_field_with_selection(objc_ivar_type, field_name, false, sel, allow_blank_ident); + if (sel.entity != nullptr) { + sel.pseudo_field = true; + return sel; + } + } } if (is_type_polymorphic(type)) { From 53adff38f08f676bf2e9c40de9040a59c9a8fda6 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Tue, 22 Apr 2025 21:44:32 -0400 Subject: [PATCH 005/120] Fixes to Ivar pseudo fields. --- src/llvm_backend_expr.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index b9c01ad03..cc49a7be8 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -5192,7 +5192,13 @@ gb_internal lbAddr lb_build_addr_internal(lbProcedure *p, Ast *expr) { // If it's a deep pointer, dereference it first // TODO(harold): Ensure this is save to do here. lb_emit_deep_field_gep() has several derefs, once per index. // Not sure what multiple indices represent... - Type* type = tav.type; + Type* type = type_deref(addr.addr.type); + + // TODO(harold): Checker: Must NOT allow ivar dereferencing on non-pointer types. + // this would access memory outside the size of the value. + // In fact, locals/globals of Objective-C types ought not be allowed at all. + GB_ASSERT(is_type_pointer(type)); + if (is_type_pointer(type)) { type = type_deref(type); addr = lb_addr(lb_emit_load(p, addr.addr)); From 730c844fc66a9afa6cb8f5ac599cf18c475c7fec Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Tue, 22 Apr 2025 21:45:34 -0400 Subject: [PATCH 006/120] Fix bug in @encode implementation. --- src/llvm_backend.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 257625849..80b720984 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1336,7 +1336,7 @@ String lb_get_objc_type_encoding(Type *t, gbAllocator allocator, isize pointer_d s = gb_string_append_length(s, "=", 1); if (!is_union) { - for( auto& f : t->Struct.fields ) { + for( auto& f : base->Struct.fields ) { String field_type = lb_get_objc_type_encoding(f->type, allocator, pointer_depth); s = gb_string_append_length(s, field_type.text, field_type.len); } @@ -1717,7 +1717,7 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { // TODO(harold): Checker: Alignment must be compatible with ivar rules. Or we should increase the alignment if needed. String ivar_name = str_lit("__$ivar"); - String ivar_types = str_lit("{= }"); + String ivar_types = str_lit("{= }"); //lb_get_objc_type_encoding(ivar_type, temporary_allocator());// str_lit("{= }"); args.count = 5; args[0] = class_value; args[1] = lb_const_value(m, t_cstring, exact_value_string(ivar_name)); From 47abea12290647f371b0488a179d3b254c7489a5 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Wed, 23 Apr 2025 01:41:38 -0400 Subject: [PATCH 007/120] Add support for Objective-C method implementation with Odin calling convention. Use @objc_context_provider to provide a context for a type. --- src/check_decl.cpp | 58 ++++++++++++++++++++++++++------------- src/checker.cpp | 64 ++++++++++++++++++++++++++++++++++++++++++++ src/checker.hpp | 2 ++ src/entity.cpp | 1 + src/llvm_backend.cpp | 43 ++++++++++++++++++++++++++--- src/types.cpp | 23 ++++++++++++++++ 6 files changed, 169 insertions(+), 22 deletions(-) diff --git a/src/check_decl.cpp b/src/check_decl.cpp index dffe0b48e..e67241b31 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -528,13 +528,21 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, e->TypeName.objc_class_name = ac.objc_class; e->TypeName.objc_superclass = ac.objc_superclass; e->TypeName.objc_ivar = ac.objc_ivar; + e->TypeName.objc_context_provider = ac.objc_context_provider; if (ac.objc_is_implementation) { e->TypeName.objc_is_implementation = true; - mpsc_enqueue(&ctx->info->objc_class_implementations, e); // TODO(harold): Don't need this for anything. Remove. + mpsc_enqueue(&ctx->info->objc_class_implementations, e); // TODO(harold): Don't need this for anything? See if needed when using explicit @export GB_ASSERT(e->TypeName.objc_ivar == nullptr || e->TypeName.objc_ivar->kind == Type_Named); + // Enqueue the proc to be checked when resolved + if (e->TypeName.objc_context_provider != nullptr) { + mpsc_enqueue(&ctx->checker->procs_with_objc_context_provider_to_check, e); + } + + // @TODO(harold): I think there's a Check elsewhere in the checker for checking cycles. + // See about moving this to the right location. // Ensure superclass hierarchy are all Objective-C classes and does not cycle Type *super = ac.objc_superclass; if (super != nullptr) { @@ -571,8 +579,14 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, check_single_global_entity(ctx->checker, super->Named.type_name, super->Named.type_name->decl_info); } } - } else if (e->TypeName.objc_superclass != nullptr) { - error(e->token, "@(objc_superclass) can only be applied when the obj_implement attribute is also applied"); + } else { + if (e->TypeName.objc_superclass != nullptr) { + error(e->token, "@(objc_superclass) can only be applied when the @(obj_implement) attribute is also applied"); + } else if (e->TypeName.objc_ivar != nullptr) { + error(e->token, "@(objc_ivar) can only be applied when the @(obj_implement) attribute is also applied"); + } else if (e->TypeName.objc_context_provider != nullptr) { + error(e->token, "@(objc_context_provider) can only be applied when the @(obj_implement) attribute is also applied"); + } } if (type_size_of(e->type) > 0) { @@ -994,25 +1008,33 @@ gb_internal void check_objc_methods(CheckerContext *ctx, Entity *e, AttributeCon if (ac.objc_is_implementation) { GB_ASSERT(e->kind == Entity_Procedure); - CheckerInfo *info = ctx->info; - mutex_lock(&info->objc_method_mutex); - defer (mutex_unlock(&info->objc_method_mutex)); + Type *proc_type = e->type; - auto method = ObjcMethodData{ ac, e }; + if (!tn->TypeName.objc_is_implementation) { + error(e->token, "@(objc_is_implement) attribute may only be applied to procedures whose class also have @(objc_is_implement) applied"); + } else if (proc_type->Proc.calling_convention == ProcCC_Odin && !tn->TypeName.objc_context_provider) { + error(e->token, "Objective-C methods with Odin calling convention can only be used with classes that have @(objc_context_provider) set"); + } else if (ac.objc_is_class_method && proc_type->Proc.calling_convention != ProcCC_CDecl) { + error(e->token, "Objective-C class methods (objc_is_class_method=true) that have @objc_is_implementation can only use \"c\" calling convention"); + } else { - if (ac.objc_selector == "") { - method.ac.objc_selector = ac.objc_name; - } + auto method = ObjcMethodData{ ac, e }; + method.ac.objc_selector = ac.objc_selector != "" ? ac.objc_selector : ac.objc_name; - Array* method_list = map_get(&info->objc_method_implementations, t); - if (method_list) { - array_add(method_list, method); - } else { - auto list = array_make(permanent_allocator(), 1, 8); - list[0] = method; + CheckerInfo *info = ctx->info; + mutex_lock(&info->objc_method_mutex); + defer (mutex_unlock(&info->objc_method_mutex)); - map_set(&info->objc_method_implementations, t, list); - } + Array* method_list = map_get(&info->objc_method_implementations, t); + if (method_list) { + array_add(method_list, method); + } else { + auto list = array_make(permanent_allocator(), 1, 8); + list[0] = method; + + map_set(&info->objc_method_implementations, t, list); + } + } } mutex_lock(&global_type_name_objc_metadata_mutex); diff --git a/src/checker.cpp b/src/checker.cpp index 29ef7d2b3..79c773a3c 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -1502,6 +1502,8 @@ gb_internal void init_checker(Checker *c) { TIME_SECTION("init proc queues"); mpsc_init(&c->procs_with_deferred_to_check, a); //, 1<<10); + mpsc_init(&c->procs_with_objc_context_provider_to_check, a); + // NOTE(bill): 1 Mi elements should be enough on average array_init(&c->procs_to_check, heap_allocator(), 0, 1<<20); @@ -3974,6 +3976,23 @@ gb_internal DECL_ATTRIBUTE_PROC(type_decl_attribute) { error(value, "'%.*s' expected a named type", LIT(name)); } return true; + } else if (name == "objc_context_provider") { + Operand o = {}; + check_expr(c, &o, value); + Entity *e = entity_of_node(o.expr); + + if (e != nullptr) { + if (ac->objc_context_provider != nullptr) { + error(elem, "Previous usage of a 'objc_context_provider' attribute"); + } + if (e->kind != Entity_Procedure) { + error(elem, "'objc_context_provider' must refer to a procedure"); + } else { + ac->objc_context_provider = e; + } + + return true; + } } return false; } @@ -6462,6 +6481,47 @@ gb_internal void check_deferred_procedures(Checker *c) { } +gb_internal void check_objc_context_provider_procedures(Checker *c) { + for (Entity *e = nullptr; mpsc_dequeue(&c->procs_with_objc_context_provider_to_check, &e); /**/) { + GB_ASSERT(e->kind == Entity_TypeName); + + Entity *proc_entity = e->TypeName.objc_context_provider; + GB_ASSERT(proc_entity->kind == Entity_Procedure); + + Type *proc_type = proc_entity->type; + + // TODO(harold): Give better errors here (specify exactly what's wrong) + const char* signature_error = "The procedure for @(objc_context_provider) has an incorrect signature."; + + if (proc_type->Proc.param_count != 1 || proc_type->Proc.result_count != 1) { + error(proc_entity->token, signature_error); + } else { + Type *self_param = base_type(proc_type->Proc.params->Tuple.variables[0]->type); + Type *return_type = base_named_type(proc_type->Proc.results->Tuple.variables[0]->type); + + if (self_param->kind != Type_Pointer) { + error(proc_entity->token, signature_error); + continue; + } + + self_param = base_named_type(self_param->Pointer.elem); + + if (return_type != t_context) { + error(e->token, signature_error); + } else if (!internal_check_is_assignable_to(self_param, e->type) && + (e->TypeName.objc_ivar && !internal_check_is_assignable_to(self_param, e->TypeName.objc_ivar)) + ) { + error(e->token, signature_error); + } else if (proc_type->Proc.calling_convention != ProcCC_CDecl && + proc_type->Proc.calling_convention != ProcCC_Contextless) { + error(e->token, signature_error); + } else if (proc_type->Proc.is_polymorphic) { + error(e->token, signature_error); + } + } + } +} + gb_internal void check_unique_package_names(Checker *c) { ERROR_BLOCK(); @@ -6609,6 +6669,7 @@ gb_internal void check_update_dependency_tree_for_procedures(Checker *c) { } } + gb_internal void check_parsed_files(Checker *c) { TIME_SECTION("map full filepaths to scope"); add_type_info_type(&c->builtin_ctx, t_invalid); @@ -6718,6 +6779,9 @@ gb_internal void check_parsed_files(Checker *c) { TIME_SECTION("check deferred procedures"); check_deferred_procedures(c); + TIME_SECTION("check objc context provider procedures"); + check_objc_context_provider_procedures(c); + TIME_SECTION("calculate global init order"); calculate_global_init_order(c); diff --git a/src/checker.hpp b/src/checker.hpp index 9910ed17b..574c71c7f 100644 --- a/src/checker.hpp +++ b/src/checker.hpp @@ -152,6 +152,7 @@ struct AttributeContext { Type * objc_type; Type * objc_superclass; Type * objc_ivar; + Entity *objc_context_provider; bool objc_is_class_method : 1; bool objc_is_implementation : 1; // This struct or proc provides a class/method implementation, not a binding to an existing type. @@ -570,6 +571,7 @@ struct Checker { CheckerContext builtin_ctx; MPSCQueue procs_with_deferred_to_check; + MPSCQueue procs_with_objc_context_provider_to_check; Array procs_to_check; BlockingMutex nested_proc_lits_mutex; diff --git a/src/entity.cpp b/src/entity.cpp index 9a5996e3d..a5443cf27 100644 --- a/src/entity.cpp +++ b/src/entity.cpp @@ -238,6 +238,7 @@ struct Entity { bool objc_is_implementation; Type* objc_superclass; Type* objc_ivar; + Entity*objc_context_provider; String objc_class_name; TypeNameObjCMetadata *objc_metadata; } TypeName; diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 80b720984..1d0ce7460 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1586,7 +1586,9 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { // Emit method wrapper implementations and registration - auto wrapper_args = array_make(temporary_allocator(), 2, 8); + auto wrapper_args = array_make(temporary_allocator(), 2, 8); + auto get_context_args = array_make(temporary_allocator(), 1); + PtrMap ivar_map{}; map_init(&ivar_map, gen->objc_ivars.count); @@ -1599,6 +1601,13 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { auto& g = cd.g; Type *class_type = g.class_impl_type; + Entity *context_provider = class_type->Named.type_name->TypeName.objc_context_provider; + lbValue context_provider_proc_value{}; + if (context_provider) { + context_provider_proc_value = lb_find_procedure_value_from_entity(m, context_provider); + } + + Array* methods = map_get(&m->info->objc_method_implementations, class_type); if (!methods) { continue; @@ -1645,6 +1654,31 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { LLVMSetLinkage(wrapper_proc->value, LLVMExternalLinkage); lb_begin_procedure_body(wrapper_proc); { + if (method_type->Proc.calling_convention == ProcCC_Odin) { + GB_ASSERT(context_provider); + + // Emit the get odin context call + + // TODO(harold): Get these values at the top, at the start of the method loop for a class + Type *ctx_provider_proc = context_provider->type; + + Type *self_param_ptr_type = base_type(ctx_provider_proc->Proc.params->Tuple.variables[0]->type); + GB_ASSERT(self_param_ptr_type->kind == Type_Pointer); + + // TODO(harold): Set the arg type to the ivar's type, if the context provider takes the ivar's type. + // Type *self_param_type = base_named_type(type_deref(self_param_ptr_type)); + + get_context_args[0] = lbValue { + wrapper_proc->raw_input_parameters[0], + self_param_ptr_type, + }; + + lbValue context = lb_emit_call(wrapper_proc, context_provider_proc_value, get_context_args); + lbAddr context_addr = lb_addr(lb_address_from_load_or_generate_local(wrapper_proc, context)); + lb_push_context_onto_stack(wrapper_proc, context_addr); + } + + auto method_call_args = array_make(temporary_allocator(), method_param_count + (isize)method_param_offset); if (!md.ac.objc_is_class_method) { @@ -1711,11 +1745,12 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { if (ivar_type != nullptr) { // Register a single ivar for this class Type *ivar_base = ivar_type->Named.base; - // TODO(harold): No idea if I can use this, but I assume so? - const i64 size = ivar_base->cached_size; - const i64 alignment = ivar_base->cached_align; + + const i64 size = type_size_of(ivar_base); + const i64 alignment = type_align_of(ivar_base); // TODO(harold): Checker: Alignment must be compatible with ivar rules. Or we should increase the alignment if needed. + // TODO(harold): Should we pass the actual type encoding? Might not be ideal for obfuscation. String ivar_name = str_lit("__$ivar"); String ivar_types = str_lit("{= }"); //lb_get_objc_type_encoding(ivar_type, temporary_allocator());// str_lit("{= }"); args.count = 5; diff --git a/src/types.cpp b/src/types.cpp index 96c17f49a..e1386c1f5 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -874,6 +874,29 @@ gb_internal Type *base_type(Type *t) { return t; } +gb_internal Type *base_named_type(Type *t) { + if (t->kind != Type_Named) { + return t_invalid; + } + + Type *prev_named = t; + t = t->Named.base; + for (;;) { + if (t == nullptr) { + break; + } + if (t->kind != Type_Named) { + break; + } + if (t == t->Named.base) { + return t_invalid; + } + prev_named = t; + t = t->Named.base; + } + return prev_named; +} + gb_internal Type *base_enum_type(Type *t) { Type *bt = base_type(t); if (bt != nullptr && From 974a197ce1493c274a2ab67449624b14c1a405e6 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Wed, 23 Apr 2025 01:59:22 -0400 Subject: [PATCH 008/120] Allow the class's ivar to be used as a context provider receiver as well. --- src/llvm_backend.cpp | 40 +++++++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 1d0ce7460..fad542d4a 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1600,11 +1600,25 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { for (const auto& cd : class_impls) { auto& g = cd.g; Type *class_type = g.class_impl_type; + Type *class_ptr_type = alloc_type_pointer(class_type); + lbValue class_value = cd.class_value; + + Type *ivar_type = class_type->Named.type_name->TypeName.objc_ivar; Entity *context_provider = class_type->Named.type_name->TypeName.objc_context_provider; + Type *contex_provider_self_ptr_type = nullptr; + Type *contex_provider_self_named_type = nullptr; + bool is_context_provider_ivar = false; lbValue context_provider_proc_value{}; + if (context_provider) { context_provider_proc_value = lb_find_procedure_value_from_entity(m, context_provider); + + contex_provider_self_ptr_type = base_type(context_provider->type->Proc.params->Tuple.variables[0]->type); + GB_ASSERT(contex_provider_self_ptr_type->kind == Type_Pointer); + contex_provider_self_named_type = base_named_type(type_deref(contex_provider_self_ptr_type)); + + is_context_provider_ivar = ivar_type != nullptr && internal_check_is_assignable_to(contex_provider_self_named_type, ivar_type); } @@ -1613,9 +1627,6 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { continue; } - Type *class_ptr_type = alloc_type_pointer(class_type); - lbValue class_value = cd.class_value; - for (const ObjcMethodData& md : *methods) { GB_ASSERT( md.proc_entity->kind == Entity_Procedure); Type *method_type = md.proc_entity->type; @@ -1659,20 +1670,21 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { // Emit the get odin context call - // TODO(harold): Get these values at the top, at the start of the method loop for a class - Type *ctx_provider_proc = context_provider->type; - - Type *self_param_ptr_type = base_type(ctx_provider_proc->Proc.params->Tuple.variables[0]->type); - GB_ASSERT(self_param_ptr_type->kind == Type_Pointer); - - // TODO(harold): Set the arg type to the ivar's type, if the context provider takes the ivar's type. - // Type *self_param_type = base_named_type(type_deref(self_param_ptr_type)); - get_context_args[0] = lbValue { wrapper_proc->raw_input_parameters[0], - self_param_ptr_type, + contex_provider_self_ptr_type, }; + if (is_context_provider_ivar) { + // The context provider takes the ivar's type. + // Emit an obj_ivar_get call and use that pointer for 'self' instead. + lbValue real_self { + wrapper_proc->raw_input_parameters[0], + class_ptr_type + }; + get_context_args[0] = lb_handle_objc_ivar_for_objc_object_pointer(wrapper_proc, real_self); + } + lbValue context = lb_emit_call(wrapper_proc, context_provider_proc_value, get_context_args); lbAddr context_addr = lb_addr(lb_address_from_load_or_generate_local(wrapper_proc, context)); lb_push_context_onto_stack(wrapper_proc, context_addr); @@ -1740,8 +1752,6 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { } // End methods // Add ivar if we have one - Type *ivar_type = class_type->Named.type_name->TypeName.objc_ivar; - if (ivar_type != nullptr) { // Register a single ivar for this class Type *ivar_base = ivar_type->Named.base; From 6c9c239a5ef14a3365121b4964217a9bda255454 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Sun, 27 Apr 2025 22:10:30 -0400 Subject: [PATCH 009/120] Fix styling issues --- src/check_builtin.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index c44d1c123..92942b4db 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -388,12 +388,12 @@ gb_internal bool check_builtin_objc_procedure(CheckerContext *c, Operand *operan return true; } break; - case BuiltinProc_objc_ivar_get: + case BuiltinProc_objc_ivar_get: { Type *self_type = nullptr; Type *ivar_type = nullptr; - Operand self {}; + Operand self = {}; check_expr_or_type(c, &self, ce->args[0]); if (!is_operand_value(self) || !check_is_assignable_to(c, &self, t_objc_id)) { @@ -403,8 +403,7 @@ gb_internal bool check_builtin_objc_procedure(CheckerContext *c, Operand *operan gb_string_free(t); gb_string_free(e); return false; - } - else if (!is_type_pointer(self.type)) { + } else if (!is_type_pointer(self.type)) { gbString e = expr_to_string(self.expr); gbString t = type_to_string(self.type); error(self.expr, "'%.*s' expected a pointer of a value derived from intrinsics.objc_object, got '%s' of type %s", LIT(builtin_name), e, t); @@ -431,7 +430,7 @@ gb_internal bool check_builtin_objc_procedure(CheckerContext *c, Operand *operan return false; } - Operand ivar {}; + Operand ivar = {}; check_expr_or_type(c, &ivar, ce->args[1]); if (ivar.mode == Addressing_Type) { ivar_type = ivar.type; From f3923ed66640ea9fd342ca851fdd2bd794405e0c Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Sun, 27 Apr 2025 22:48:16 -0400 Subject: [PATCH 010/120] Fix indentations Fix Objective-C wrapper procs not forwarding return value --- src/check_builtin.cpp | 124 ++--- src/check_decl.cpp | 150 +++--- src/checker.cpp | 138 ++--- src/checker.hpp | 18 +- src/checker_builtin_procs.hpp | 4 +- src/entity.cpp | 6 +- src/llvm_backend.cpp | 954 +++++++++++++++++----------------- src/llvm_backend.hpp | 6 +- src/llvm_backend_general.cpp | 4 +- src/llvm_backend_proc.cpp | 2 +- src/llvm_backend_utility.cpp | 14 +- 11 files changed, 717 insertions(+), 703 deletions(-) diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index 92942b4db..099f99045 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -389,77 +389,77 @@ gb_internal bool check_builtin_objc_procedure(CheckerContext *c, Operand *operan } break; case BuiltinProc_objc_ivar_get: - { - Type *self_type = nullptr; - Type *ivar_type = nullptr; + { + Type *self_type = nullptr; + Type *ivar_type = nullptr; - Operand self = {}; - check_expr_or_type(c, &self, ce->args[0]); + Operand self = {}; + check_expr_or_type(c, &self, ce->args[0]); - if (!is_operand_value(self) || !check_is_assignable_to(c, &self, t_objc_id)) { - gbString e = expr_to_string(self.expr); - gbString t = type_to_string(self.type); - error(self.expr, "'%.*s' expected a type or value derived from intrinsics.objc_object, got '%s' of type %s", LIT(builtin_name), e, t); - gb_string_free(t); - gb_string_free(e); - return false; - } else if (!is_type_pointer(self.type)) { - gbString e = expr_to_string(self.expr); - gbString t = type_to_string(self.type); - error(self.expr, "'%.*s' expected a pointer of a value derived from intrinsics.objc_object, got '%s' of type %s", LIT(builtin_name), e, t); - gb_string_free(t); - gb_string_free(e); - return false; - } + if (!is_operand_value(self) || !check_is_assignable_to(c, &self, t_objc_id)) { + gbString e = expr_to_string(self.expr); + gbString t = type_to_string(self.type); + error(self.expr, "'%.*s' expected a type or value derived from intrinsics.objc_object, got '%s' of type %s", LIT(builtin_name), e, t); + gb_string_free(t); + gb_string_free(e); + return false; + } else if (!is_type_pointer(self.type)) { + gbString e = expr_to_string(self.expr); + gbString t = type_to_string(self.type); + error(self.expr, "'%.*s' expected a pointer of a value derived from intrinsics.objc_object, got '%s' of type %s", LIT(builtin_name), e, t); + gb_string_free(t); + gb_string_free(e); + return false; + } - self_type = type_deref(self.type); + self_type = type_deref(self.type); - if (!(self_type->kind == Type_Named && - self_type->Named.type_name != nullptr && - self_type->Named.type_name->TypeName.objc_class_name != "")) { - gbString t = type_to_string(self_type); - error(self.expr, "'%.*s' expected a named type with the attribute @(obj_class=) , got type %s", LIT(builtin_name), t); - gb_string_free(t); - return false; - } + if (!(self_type->kind == Type_Named && + self_type->Named.type_name != nullptr && + self_type->Named.type_name->TypeName.objc_class_name != "")) { + gbString t = type_to_string(self_type); + error(self.expr, "'%.*s' expected a named type with the attribute @(obj_class=) , got type %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } - if (self_type->Named.type_name->TypeName.objc_ivar == nullptr) { - gbString t = type_to_string(self_type); - error(self.expr, "'%.*s' requires that type %s have the attribute @(obj_ivar=).", LIT(builtin_name), t); - gb_string_free(t); - return false; - } + if (self_type->Named.type_name->TypeName.objc_ivar == nullptr) { + gbString t = type_to_string(self_type); + error(self.expr, "'%.*s' requires that type %s have the attribute @(obj_ivar=).", LIT(builtin_name), t); + gb_string_free(t); + return false; + } - Operand ivar = {}; - check_expr_or_type(c, &ivar, ce->args[1]); - if (ivar.mode == Addressing_Type) { - ivar_type = ivar.type; - } else { - return false; - } + Operand ivar = {}; + check_expr_or_type(c, &ivar, ce->args[1]); + if (ivar.mode == Addressing_Type) { + ivar_type = ivar.type; + } else { + return false; + } - if (self_type->Named.type_name->TypeName.objc_ivar != ivar_type) { - gbString name_self = type_to_string(self_type); - gbString name_expected = type_to_string(self_type->Named.type_name->TypeName.objc_ivar); - gbString name_given = type_to_string(ivar_type); - error(self.expr, "'%.*s' ivar type %s does not match @obj_ivar type %s on Objective-C class %s.", - LIT(builtin_name), name_given, name_expected, name_self); - gb_string_free(name_self); - gb_string_free(name_expected); - gb_string_free(name_given); - return false; - } + if (self_type->Named.type_name->TypeName.objc_ivar != ivar_type) { + gbString name_self = type_to_string(self_type); + gbString name_expected = type_to_string(self_type->Named.type_name->TypeName.objc_ivar); + gbString name_given = type_to_string(ivar_type); + error(self.expr, "'%.*s' ivar type %s does not match @obj_ivar type %s on Objective-C class %s.", + LIT(builtin_name), name_given, name_expected, name_self); + gb_string_free(name_self); + gb_string_free(name_expected); + gb_string_free(name_given); + return false; + } - if (type_hint != nullptr && type_hint->kind == Type_Pointer && type_hint->Pointer.elem == ivar_type) { - operand->type = type_hint; - } else { - operand->type = alloc_type_pointer(ivar_type); - } + if (type_hint != nullptr && type_hint->kind == Type_Pointer && type_hint->Pointer.elem == ivar_type) { + operand->type = type_hint; + } else { + operand->type = alloc_type_pointer(ivar_type); + } - operand->mode = Addressing_Value; + operand->mode = Addressing_Value; - return true; - } break; + return true; + } break; } } @@ -2206,7 +2206,7 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As case BuiltinProc_objc_find_class: case BuiltinProc_objc_register_selector: case BuiltinProc_objc_register_class: - case BuiltinProc_objc_ivar_get: + case BuiltinProc_objc_ivar_get: return check_builtin_objc_procedure(c, operand, call, id, type_hint); case BuiltinProc___entry_point: diff --git a/src/check_decl.cpp b/src/check_decl.cpp index e67241b31..48e5172d6 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -526,68 +526,68 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, check_decl_attributes(ctx, decl->attributes, type_decl_attribute, &ac); if (e->kind == Entity_TypeName && ac.objc_class != "") { e->TypeName.objc_class_name = ac.objc_class; - e->TypeName.objc_superclass = ac.objc_superclass; - e->TypeName.objc_ivar = ac.objc_ivar; + e->TypeName.objc_superclass = ac.objc_superclass; + e->TypeName.objc_ivar = ac.objc_ivar; e->TypeName.objc_context_provider = ac.objc_context_provider; - if (ac.objc_is_implementation) { - e->TypeName.objc_is_implementation = true; - mpsc_enqueue(&ctx->info->objc_class_implementations, e); // TODO(harold): Don't need this for anything? See if needed when using explicit @export + if (ac.objc_is_implementation) { + e->TypeName.objc_is_implementation = true; + mpsc_enqueue(&ctx->info->objc_class_implementations, e); // TODO(harold): Don't need this for anything? See if needed when using explicit @export - GB_ASSERT(e->TypeName.objc_ivar == nullptr || e->TypeName.objc_ivar->kind == Type_Named); + GB_ASSERT(e->TypeName.objc_ivar == nullptr || e->TypeName.objc_ivar->kind == Type_Named); - // Enqueue the proc to be checked when resolved - if (e->TypeName.objc_context_provider != nullptr) { - mpsc_enqueue(&ctx->checker->procs_with_objc_context_provider_to_check, e); - } + // Enqueue the proc to be checked when resolved + if (e->TypeName.objc_context_provider != nullptr) { + mpsc_enqueue(&ctx->checker->procs_with_objc_context_provider_to_check, e); + } - // @TODO(harold): I think there's a Check elsewhere in the checker for checking cycles. - // See about moving this to the right location. - // Ensure superclass hierarchy are all Objective-C classes and does not cycle - Type *super = ac.objc_superclass; - if (super != nullptr) { - TypeSet super_set{}; - type_set_init(&super_set, 8); - defer (type_set_destroy(&super_set)); + // @TODO(harold): I think there's a Check elsewhere in the checker for checking cycles. + // See about moving this to the right location. + // Ensure superclass hierarchy are all Objective-C classes and does not cycle + Type *super = ac.objc_superclass; + if (super != nullptr) { + TypeSet super_set{}; + type_set_init(&super_set, 8); + defer (type_set_destroy(&super_set)); - type_set_update(&super_set, e->type); + type_set_update(&super_set, e->type); - for (;;) { - if (type_set_update(&super_set, super)) { - error(e->token, "@(objc_superclass) Superclass hierarchy cycle encountered"); - break; - } + for (;;) { + if (type_set_update(&super_set, super)) { + error(e->token, "@(objc_superclass) Superclass hierarchy cycle encountered"); + break; + } - if (super->kind != Type_Named) { - error(e->token, "@(objc_superclass) References type must be a named struct."); - break; - } + if (super->kind != Type_Named) { + error(e->token, "@(objc_superclass) References type must be a named struct."); + break; + } - Type* named_type = base_type(super->Named.type_name->type); - if (!is_type_objc_object(named_type)) { - error(e->token, "@(objc_superclass) Superclass must be an Objective-C class."); - break; - } + Type* named_type = base_type(super->Named.type_name->type); + if (!is_type_objc_object(named_type)) { + error(e->token, "@(objc_superclass) Superclass must be an Objective-C class."); + break; + } - super = super->Named.type_name->TypeName.objc_superclass; - if (super == nullptr) { - break; - } + super = super->Named.type_name->TypeName.objc_superclass; + if (super == nullptr) { + break; + } - // TODO(harold): Is this the right way to do this??? The referenced entity must be already resolved - // so that we can access its objc_superclass attribute - check_single_global_entity(ctx->checker, super->Named.type_name, super->Named.type_name->decl_info); - } - } - } else { - if (e->TypeName.objc_superclass != nullptr) { - error(e->token, "@(objc_superclass) can only be applied when the @(obj_implement) attribute is also applied"); - } else if (e->TypeName.objc_ivar != nullptr) { - error(e->token, "@(objc_ivar) can only be applied when the @(obj_implement) attribute is also applied"); - } else if (e->TypeName.objc_context_provider != nullptr) { - error(e->token, "@(objc_context_provider) can only be applied when the @(obj_implement) attribute is also applied"); - } - } + // TODO(harold): Is this the right way to do this??? The referenced entity must be already resolved + // so that we can access its objc_superclass attribute + check_single_global_entity(ctx->checker, super->Named.type_name, super->Named.type_name->decl_info); + } + } + } else { + if (e->TypeName.objc_superclass != nullptr) { + error(e->token, "@(objc_superclass) can only be applied when the @(obj_implement) attribute is also applied"); + } else if (e->TypeName.objc_ivar != nullptr) { + error(e->token, "@(objc_ivar) can only be applied when the @(obj_implement) attribute is also applied"); + } else if (e->TypeName.objc_context_provider != nullptr) { + error(e->token, "@(objc_context_provider) can only be applied when the @(obj_implement) attribute is also applied"); + } + } if (type_size_of(e->type) > 0) { error(e->token, "@(objc_class) marked type must be of zero size"); @@ -1005,37 +1005,37 @@ gb_internal void check_objc_methods(CheckerContext *ctx, Entity *e, AttributeCon error(e->token, "@(objc_name) attribute may only be applied to procedures and types within the same scope"); } else { - if (ac.objc_is_implementation) { - GB_ASSERT(e->kind == Entity_Procedure); + if (ac.objc_is_implementation) { + GB_ASSERT(e->kind == Entity_Procedure); - Type *proc_type = e->type; + Type *proc_type = e->type; - if (!tn->TypeName.objc_is_implementation) { - error(e->token, "@(objc_is_implement) attribute may only be applied to procedures whose class also have @(objc_is_implement) applied"); - } else if (proc_type->Proc.calling_convention == ProcCC_Odin && !tn->TypeName.objc_context_provider) { - error(e->token, "Objective-C methods with Odin calling convention can only be used with classes that have @(objc_context_provider) set"); - } else if (ac.objc_is_class_method && proc_type->Proc.calling_convention != ProcCC_CDecl) { - error(e->token, "Objective-C class methods (objc_is_class_method=true) that have @objc_is_implementation can only use \"c\" calling convention"); - } else { + if (!tn->TypeName.objc_is_implementation) { + error(e->token, "@(objc_is_implement) attribute may only be applied to procedures whose class also have @(objc_is_implement) applied"); + } else if (proc_type->Proc.calling_convention == ProcCC_Odin && !tn->TypeName.objc_context_provider) { + error(e->token, "Objective-C methods with Odin calling convention can only be used with classes that have @(objc_context_provider) set"); + } else if (ac.objc_is_class_method && proc_type->Proc.calling_convention != ProcCC_CDecl) { + error(e->token, "Objective-C class methods (objc_is_class_method=true) that have @objc_is_implementation can only use \"c\" calling convention"); + } else { auto method = ObjcMethodData{ ac, e }; - method.ac.objc_selector = ac.objc_selector != "" ? ac.objc_selector : ac.objc_name; + method.ac.objc_selector = ac.objc_selector != "" ? ac.objc_selector : ac.objc_name; - CheckerInfo *info = ctx->info; - mutex_lock(&info->objc_method_mutex); - defer (mutex_unlock(&info->objc_method_mutex)); + CheckerInfo *info = ctx->info; + mutex_lock(&info->objc_method_mutex); + defer (mutex_unlock(&info->objc_method_mutex)); - Array* method_list = map_get(&info->objc_method_implementations, t); - if (method_list) { - array_add(method_list, method); - } else { - auto list = array_make(permanent_allocator(), 1, 8); - list[0] = method; + Array* method_list = map_get(&info->objc_method_implementations, t); + if (method_list) { + array_add(method_list, method); + } else { + auto list = array_make(permanent_allocator(), 1, 8); + list[0] = method; - map_set(&info->objc_method_implementations, t, list); - } - } - } + map_set(&info->objc_method_implementations, t, list); + } + } + } mutex_lock(&global_type_name_objc_metadata_mutex); defer (mutex_unlock(&global_type_name_objc_metadata_mutex)); diff --git a/src/checker.cpp b/src/checker.cpp index 79c773a3c..6563b1c58 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -1351,12 +1351,12 @@ gb_internal void init_universal(void) { t_objc_object = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_object"), alloc_type_struct_complete()); t_objc_selector = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_selector"), alloc_type_struct_complete()); t_objc_class = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_class"), alloc_type_struct_complete()); - t_objc_ivar = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_ivar"), alloc_type_struct_complete()); + t_objc_ivar = add_global_type_name(intrinsics_pkg->scope, str_lit("objc_ivar"), alloc_type_struct_complete()); t_objc_id = alloc_type_pointer(t_objc_object); t_objc_SEL = alloc_type_pointer(t_objc_selector); t_objc_Class = alloc_type_pointer(t_objc_class); - t_objc_Ivar = alloc_type_pointer(t_objc_ivar); + t_objc_Ivar = alloc_type_pointer(t_objc_ivar); } } @@ -1389,8 +1389,8 @@ gb_internal void init_checker_info(CheckerInfo *i) { array_init(&i->defineables, a); map_init(&i->objc_msgSend_types); - mpsc_init(&i->objc_class_implementations, a); - map_init(&i->objc_method_implementations); + mpsc_init(&i->objc_class_implementations, a); + map_init(&i->objc_method_implementations); string_map_init(&i->load_file_cache); array_init(&i->all_procedures, heap_allocator()); @@ -3352,10 +3352,10 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { ac->test = true; return true; } else if (name == "export") { - if (ac->objc_is_implementation) { - error(value, "Setting @(export) explicitly is not allowed when @(objc_implement) is set. It is exported implicitly."); - return false; - } + if (ac->objc_is_implementation) { + error(value, "Setting @(export) explicitly is not allowed when @(objc_implement) is set. It is exported implicitly."); + return false; + } ExactValue ev = check_decl_attribute_value(c, value); if (ev.kind == ExactValue_Invalid) { @@ -3369,10 +3369,10 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { return true; } else if (name == "linkage") { - if (ac->objc_is_implementation) { - error(value, "Explicit linkage not allowed when @(objc_implement) is set. It is set implicitly"); - return false; - } + if (ac->objc_is_implementation) { + error(value, "Explicit linkage not allowed when @(objc_implement) is set. It is set implicitly"); + return false; + } ExactValue ev = check_decl_attribute_value(c, value); if (ev.kind != ExactValue_String) { @@ -3681,23 +3681,23 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { } return true; } else if (name == "objc_implement") { - ExactValue ev = check_decl_attribute_value(c, value); - if (ev.kind == ExactValue_Bool) { - ac->objc_is_implementation = ev.value_bool; - } else if (ev.kind == ExactValue_Invalid) { - ac->objc_is_implementation = true; - } else { - error(elem, "Expected a boolean value, or no value, for '%.*s'", LIT(name)); - } + ExactValue ev = check_decl_attribute_value(c, value); + if (ev.kind == ExactValue_Bool) { + ac->objc_is_implementation = ev.value_bool; + } else if (ev.kind == ExactValue_Invalid) { + ac->objc_is_implementation = true; + } else { + error(elem, "Expected a boolean value, or no value, for '%.*s'", LIT(name)); + } - // This implies exported, strongly linked - if (ac->objc_is_implementation) { - ac->is_export = true; - ac->linkage = str_lit("strong"); - } + // This implies exported, strongly linked + if (ac->objc_is_implementation) { + ac->is_export = true; + ac->linkage = str_lit("strong"); + } - return true; - } else if (name == "objc_selector") { + return true; + } else if (name == "objc_selector") { ExactValue ev = check_decl_attribute_value(c, value); if (ev.kind == ExactValue_String) { if (string_is_valid_identifier(ev.value_string)) { @@ -3949,52 +3949,52 @@ gb_internal DECL_ATTRIBUTE_PROC(type_decl_attribute) { } return true; } else if (name == "objc_implement") { - ExactValue ev = check_decl_attribute_value(c, value); - if (ev.kind == ExactValue_Bool) { - ac->objc_is_implementation = ev.value_bool; - } else if (ev.kind == ExactValue_Invalid) { - ac->objc_is_implementation = true; - } else { - error(elem, "Expected a boolean value, or no value, for '%.*s'", LIT(name)); - } - return true; - } else if (name == "objc_superclass") { - Type *objc_superclass = check_type(c, value); + ExactValue ev = check_decl_attribute_value(c, value); + if (ev.kind == ExactValue_Bool) { + ac->objc_is_implementation = ev.value_bool; + } else if (ev.kind == ExactValue_Invalid) { + ac->objc_is_implementation = true; + } else { + error(elem, "Expected a boolean value, or no value, for '%.*s'", LIT(name)); + } + return true; + } else if (name == "objc_superclass") { + Type *objc_superclass = check_type(c, value); - if (objc_superclass != nullptr) { - ac->objc_superclass = objc_superclass; - } else { - error(value, "'%.*s' expected a named type", LIT(name)); - } - return true; - } else if (name == "objc_ivar") { - Type *objc_ivar = check_type(c, value); + if (objc_superclass != nullptr) { + ac->objc_superclass = objc_superclass; + } else { + error(value, "'%.*s' expected a named type", LIT(name)); + } + return true; + } else if (name == "objc_ivar") { + Type *objc_ivar = check_type(c, value); - if (objc_ivar != nullptr) { - ac->objc_ivar = objc_ivar; - } else { - error(value, "'%.*s' expected a named type", LIT(name)); - } - return true; - } else if (name == "objc_context_provider") { - Operand o = {}; - check_expr(c, &o, value); - Entity *e = entity_of_node(o.expr); + if (objc_ivar != nullptr) { + ac->objc_ivar = objc_ivar; + } else { + error(value, "'%.*s' expected a named type", LIT(name)); + } + return true; + } else if (name == "objc_context_provider") { + Operand o = {}; + check_expr(c, &o, value); + Entity *e = entity_of_node(o.expr); - if (e != nullptr) { - if (ac->objc_context_provider != nullptr) { - error(elem, "Previous usage of a 'objc_context_provider' attribute"); - } - if (e->kind != Entity_Procedure) { - error(elem, "'objc_context_provider' must refer to a procedure"); - } else { - ac->objc_context_provider = e; - } + if (e != nullptr) { + if (ac->objc_context_provider != nullptr) { + error(elem, "Previous usage of a 'objc_context_provider' attribute"); + } + if (e->kind != Entity_Procedure) { + error(elem, "'objc_context_provider' must refer to a procedure"); + } else { + ac->objc_context_provider = e; + } - return true; - } - } - return false; + return true; + } + } + return false; } diff --git a/src/checker.hpp b/src/checker.hpp index 574c71c7f..336f09a7e 100644 --- a/src/checker.hpp +++ b/src/checker.hpp @@ -148,13 +148,13 @@ struct AttributeContext { String objc_class; String objc_name; - String objc_selector; + String objc_selector; Type * objc_type; - Type * objc_superclass; - Type * objc_ivar; + Type * objc_superclass; + Type * objc_ivar; Entity *objc_context_provider; bool objc_is_class_method : 1; - bool objc_is_implementation : 1; // This struct or proc provides a class/method implementation, not a binding to an existing type. + bool objc_is_implementation : 1; // This struct or proc provides a class/method implementation, not a binding to an existing type. String require_target_feature; // required by the target micro-architecture String enable_target_feature; // will be enabled for the procedure only @@ -371,8 +371,8 @@ struct ObjcMsgData { }; struct ObjcMethodData { - AttributeContext ac; - Entity *proc_entity; + AttributeContext ac; + Entity *proc_entity; }; enum LoadFileTier { @@ -489,10 +489,10 @@ struct CheckerInfo { BlockingMutex objc_types_mutex; PtrMap objc_msgSend_types; - MPSCQueue objc_class_implementations; + MPSCQueue objc_class_implementations; - BlockingMutex objc_method_mutex; - PtrMap> objc_method_implementations; + BlockingMutex objc_method_mutex; + PtrMap> objc_method_implementations; BlockingMutex load_file_mutex; diff --git a/src/checker_builtin_procs.hpp b/src/checker_builtin_procs.hpp index cb2ce3915..ce7d8349b 100644 --- a/src/checker_builtin_procs.hpp +++ b/src/checker_builtin_procs.hpp @@ -331,7 +331,7 @@ BuiltinProc__type_end, BuiltinProc_objc_find_class, BuiltinProc_objc_register_selector, BuiltinProc_objc_register_class, - BuiltinProc_objc_ivar_get, + BuiltinProc_objc_ivar_get, BuiltinProc_constant_utf16_cstring, @@ -674,7 +674,7 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { {STR_LIT("objc_find_class"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("objc_register_selector"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, {STR_LIT("objc_register_class"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, - {STR_LIT("ivar_get"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, + {STR_LIT("ivar_get"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, {STR_LIT("constant_utf16_cstring"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, diff --git a/src/entity.cpp b/src/entity.cpp index a5443cf27..cc41b5e59 100644 --- a/src/entity.cpp +++ b/src/entity.cpp @@ -235,9 +235,9 @@ struct Entity { Type * type_parameter_specialization; String ir_mangled_name; bool is_type_alias; - bool objc_is_implementation; - Type* objc_superclass; - Type* objc_ivar; + bool objc_is_implementation; + Type* objc_superclass; + Type* objc_ivar; Entity*objc_context_provider; String objc_class_name; TypeNameObjCMetadata *objc_metadata; diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index fad542d4a..7ffd4ea30 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1176,327 +1176,327 @@ gb_internal lbProcedure *lb_create_objc_names(lbModule *main_module) { // TODO(harold): Move this out of here and into a more suitable place. // TODO(harold): Should not take an allocator, but always use temp, as we return string literals as well. String lb_get_objc_type_encoding(Type *t, gbAllocator allocator, isize pointer_depth = 0) { - // NOTE(harold): See https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html#//apple_ref/doc/uid/TP40008048-CH100 + // NOTE(harold): See https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html#//apple_ref/doc/uid/TP40008048-CH100 - // NOTE(harold): Darwin targets are always 64-bit. Should we drop this and assume "q" always? - #define INT_SIZE_ENCODING (build_context.metrics.ptr_size == 4 ? "i" : "q") - switch (t->kind) { - case Type_Basic: { - switch (t->Basic.kind) { - case Basic_Invalid: - return str_lit("?"); + // NOTE(harold): Darwin targets are always 64-bit. Should we drop this and assume "q" always? + #define INT_SIZE_ENCODING (build_context.metrics.ptr_size == 4 ? "i" : "q") + switch (t->kind) { + case Type_Basic: { + switch (t->Basic.kind) { + case Basic_Invalid: + return str_lit("?"); - case Basic_llvm_bool: - case Basic_bool: - case Basic_b8: - return str_lit("B"); + case Basic_llvm_bool: + case Basic_bool: + case Basic_b8: + return str_lit("B"); - case Basic_b16: - return str_lit("C"); - case Basic_b32: - return str_lit("I"); - case Basic_b64: - return str_lit("q"); - case Basic_i8: - return str_lit("c"); - case Basic_u8: - return str_lit("C"); - case Basic_i16: - case Basic_i16le: - case Basic_i16be: - return str_lit("s"); - case Basic_u16: - case Basic_u16le: - case Basic_u16be: - return str_lit("S"); - case Basic_i32: - case Basic_i32le: - case Basic_i32be: - return str_lit("i"); - case Basic_u32le: - case Basic_u32: - case Basic_u32be: - return str_lit("I"); - case Basic_i64: - case Basic_i64le: - case Basic_i64be: - return str_lit("q"); - case Basic_u64: - case Basic_u64le: - case Basic_u64be: - return str_lit("Q"); - case Basic_i128: - case Basic_i128le: - case Basic_i128be: - return str_lit("t"); - case Basic_u128: - case Basic_u128le: - case Basic_u128be: - return str_lit("T"); - case Basic_rune: - return str_lit("I"); - case Basic_f16: - case Basic_f16le: - case Basic_f16be: - return str_lit("s"); // @harold: Closest we've got? - case Basic_f32: - case Basic_f32le: - case Basic_f32be: - return str_lit("f"); - case Basic_f64: - case Basic_f64le: - case Basic_f64be: - return str_lit("d"); + case Basic_b16: + return str_lit("C"); + case Basic_b32: + return str_lit("I"); + case Basic_b64: + return str_lit("q"); + case Basic_i8: + return str_lit("c"); + case Basic_u8: + return str_lit("C"); + case Basic_i16: + case Basic_i16le: + case Basic_i16be: + return str_lit("s"); + case Basic_u16: + case Basic_u16le: + case Basic_u16be: + return str_lit("S"); + case Basic_i32: + case Basic_i32le: + case Basic_i32be: + return str_lit("i"); + case Basic_u32le: + case Basic_u32: + case Basic_u32be: + return str_lit("I"); + case Basic_i64: + case Basic_i64le: + case Basic_i64be: + return str_lit("q"); + case Basic_u64: + case Basic_u64le: + case Basic_u64be: + return str_lit("Q"); + case Basic_i128: + case Basic_i128le: + case Basic_i128be: + return str_lit("t"); + case Basic_u128: + case Basic_u128le: + case Basic_u128be: + return str_lit("T"); + case Basic_rune: + return str_lit("I"); + case Basic_f16: + case Basic_f16le: + case Basic_f16be: + return str_lit("s"); // @harold: Closest we've got? + case Basic_f32: + case Basic_f32le: + case Basic_f32be: + return str_lit("f"); + case Basic_f64: + case Basic_f64le: + case Basic_f64be: + return str_lit("d"); - // TODO(harold) These: - case Basic_complex32: - case Basic_complex64: - case Basic_complex128: - case Basic_quaternion64: - case Basic_quaternion128: - case Basic_quaternion256: - return str_lit("?"); + // TODO(harold) These: + case Basic_complex32: + case Basic_complex64: + case Basic_complex128: + case Basic_quaternion64: + case Basic_quaternion128: + case Basic_quaternion256: + return str_lit("?"); - case Basic_int: - return str_lit(INT_SIZE_ENCODING); - case Basic_uint: - return build_context.metrics.ptr_size == 4 ? str_lit("I") : str_lit("Q"); - case Basic_uintptr: - case Basic_rawptr: - return str_lit("^v"); + case Basic_int: + return str_lit(INT_SIZE_ENCODING); + case Basic_uint: + return build_context.metrics.ptr_size == 4 ? str_lit("I") : str_lit("Q"); + case Basic_uintptr: + case Basic_rawptr: + return str_lit("^v"); - case Basic_string: - return build_context.metrics.ptr_size == 4 ? str_lit("{string=*i}") : str_lit("{string=*q}"); + case Basic_string: + return build_context.metrics.ptr_size == 4 ? str_lit("{string=*i}") : str_lit("{string=*q}"); - case Basic_cstring: return str_lit("*"); - case Basic_any: return str_lit("{any=^v^v"); // rawptr + ^Type_Info + case Basic_cstring: return str_lit("*"); + case Basic_any: return str_lit("{any=^v^v"); // rawptr + ^Type_Info - case Basic_typeid: - GB_ASSERT(t->Basic.size == 8); - return str_lit("q"); + case Basic_typeid: + GB_ASSERT(t->Basic.size == 8); + return str_lit("q"); - // Untyped types - case Basic_UntypedBool: - case Basic_UntypedInteger: - case Basic_UntypedFloat: - case Basic_UntypedComplex: - case Basic_UntypedQuaternion: - case Basic_UntypedString: - case Basic_UntypedRune: - case Basic_UntypedNil: - case Basic_UntypedUninit: - GB_PANIC("Untyped types cannot be @encoded()"); - return str_lit("?"); - } - break; - } + // Untyped types + case Basic_UntypedBool: + case Basic_UntypedInteger: + case Basic_UntypedFloat: + case Basic_UntypedComplex: + case Basic_UntypedQuaternion: + case Basic_UntypedString: + case Basic_UntypedRune: + case Basic_UntypedNil: + case Basic_UntypedUninit: + GB_PANIC("Untyped types cannot be @encoded()"); + return str_lit("?"); + } + break; + } - case Type_Named: - case Type_Struct: - case Type_Union: { - Type* base = t; - if (base->kind == Type_Named) { - base = base_type(base); - if(base->kind != Type_Struct && base->kind != Type_Union) { - return lb_get_objc_type_encoding(base, allocator, pointer_depth); - } - } + case Type_Named: + case Type_Struct: + case Type_Union: { + Type* base = t; + if (base->kind == Type_Named) { + base = base_type(base); + if(base->kind != Type_Struct && base->kind != Type_Union) { + return lb_get_objc_type_encoding(base, allocator, pointer_depth); + } + } - const bool is_union = base->kind == Type_Union; - if (!is_union) { - // Check for objc_SEL - if (internal_check_is_assignable_to(base, t_objc_SEL)) { - return str_lit(":"); - } + const bool is_union = base->kind == Type_Union; + if (!is_union) { + // Check for objc_SEL + if (internal_check_is_assignable_to(base, t_objc_SEL)) { + return str_lit(":"); + } - // Check for objc_Class - if (internal_check_is_assignable_to(base, t_objc_SEL)) { - return str_lit("#"); - } + // Check for objc_Class + if (internal_check_is_assignable_to(base, t_objc_SEL)) { + return str_lit("#"); + } - // Treat struct as an Objective-C Class? - if (has_type_got_objc_class_attribute(base) && pointer_depth == 0) { - return str_lit("#"); - } - } + // Treat struct as an Objective-C Class? + if (has_type_got_objc_class_attribute(base) && pointer_depth == 0) { + return str_lit("#"); + } + } - if (is_type_objc_object(base)) { - return str_lit("@"); - } + if (is_type_objc_object(base)) { + return str_lit("@"); + } - gbString s = gb_string_make_reserve(allocator, 16); - s = gb_string_append_length(s, is_union ? "(" :"{", 1); - if (t->kind == Type_Named) { - s = gb_string_append_length(s, t->Named.name.text, t->Named.name.len); - } + gbString s = gb_string_make_reserve(allocator, 16); + s = gb_string_append_length(s, is_union ? "(" :"{", 1); + if (t->kind == Type_Named) { + s = gb_string_append_length(s, t->Named.name.text, t->Named.name.len); + } - // Write fields - if (pointer_depth < 2) { - s = gb_string_append_length(s, "=", 1); + // Write fields + if (pointer_depth < 2) { + s = gb_string_append_length(s, "=", 1); - if (!is_union) { - for( auto& f : base->Struct.fields ) { - String field_type = lb_get_objc_type_encoding(f->type, allocator, pointer_depth); - s = gb_string_append_length(s, field_type.text, field_type.len); - } - } else { - // #TODO(harold): Encode fields - } - } + if (!is_union) { + for( auto& f : base->Struct.fields ) { + String field_type = lb_get_objc_type_encoding(f->type, allocator, pointer_depth); + s = gb_string_append_length(s, field_type.text, field_type.len); + } + } else { + // #TODO(harold): Encode fields + } + } - s = gb_string_append_length(s, is_union ? ")" :"}", 1); + s = gb_string_append_length(s, is_union ? ")" :"}", 1); - return make_string_c(s); - } + return make_string_c(s); + } - case Type_Generic: - GB_PANIC("Generic types cannot be @encoded()"); - return str_lit("?"); + case Type_Generic: + GB_PANIC("Generic types cannot be @encoded()"); + return str_lit("?"); - case Type_Pointer: { - String pointee = lb_get_objc_type_encoding(t->Pointer.elem, allocator, pointer_depth +1); - // Special case for Objective-C Objects - if (pointer_depth == 0 && pointee == "@") { - return pointee; - } + case Type_Pointer: { + String pointee = lb_get_objc_type_encoding(t->Pointer.elem, allocator, pointer_depth +1); + // Special case for Objective-C Objects + if (pointer_depth == 0 && pointee == "@") { + return pointee; + } - return concatenate_strings(allocator, str_lit("^"), pointee); - } + return concatenate_strings(allocator, str_lit("^"), pointee); + } - case Type_MultiPointer: - return concatenate_strings(allocator, str_lit("^"), lb_get_objc_type_encoding(t->Pointer.elem, allocator, pointer_depth +1)); + case Type_MultiPointer: + return concatenate_strings(allocator, str_lit("^"), lb_get_objc_type_encoding(t->Pointer.elem, allocator, pointer_depth +1)); - case Type_Array: { - String type_str = lb_get_objc_type_encoding(t->Array.elem, allocator, pointer_depth); + case Type_Array: { + String type_str = lb_get_objc_type_encoding(t->Array.elem, allocator, pointer_depth); - gbString s = gb_string_make_reserve(allocator, type_str.len + 8); - s = gb_string_append_fmt(s, "[%lld%s]", t->Array.count, type_str.text); - return make_string_c(s); - } + gbString s = gb_string_make_reserve(allocator, type_str.len + 8); + s = gb_string_append_fmt(s, "[%lld%s]", t->Array.count, type_str.text); + return make_string_c(s); + } - case Type_EnumeratedArray: { - String type_str = lb_get_objc_type_encoding(t->EnumeratedArray.elem, allocator, pointer_depth); + case Type_EnumeratedArray: { + String type_str = lb_get_objc_type_encoding(t->EnumeratedArray.elem, allocator, pointer_depth); - gbString s = gb_string_make_reserve(allocator, type_str.len + 8); - s = gb_string_append_fmt(s, "[%lld%s]", t->EnumeratedArray.count, type_str.text); - return make_string_c(s); - } + gbString s = gb_string_make_reserve(allocator, type_str.len + 8); + s = gb_string_append_fmt(s, "[%lld%s]", t->EnumeratedArray.count, type_str.text); + return make_string_c(s); + } - case Type_Slice: { - String type_str = lb_get_objc_type_encoding(t->Slice.elem, allocator, pointer_depth); - gbString s = gb_string_make_reserve(allocator, type_str.len + 8); - s = gb_string_append_fmt(s, "{slice=^%s%s}", type_str, INT_SIZE_ENCODING); - return make_string_c(s); - } + case Type_Slice: { + String type_str = lb_get_objc_type_encoding(t->Slice.elem, allocator, pointer_depth); + gbString s = gb_string_make_reserve(allocator, type_str.len + 8); + s = gb_string_append_fmt(s, "{slice=^%s%s}", type_str, INT_SIZE_ENCODING); + return make_string_c(s); + } - case Type_DynamicArray: { - String type_str = lb_get_objc_type_encoding(t->DynamicArray.elem, allocator, pointer_depth); - gbString s = gb_string_make_reserve(allocator, type_str.len + 8); - s = gb_string_append_fmt(s, "{dynamic=^%s%s%sAllocator={?^v}}", type_str, INT_SIZE_ENCODING, INT_SIZE_ENCODING); - return make_string_c(s); - } + case Type_DynamicArray: { + String type_str = lb_get_objc_type_encoding(t->DynamicArray.elem, allocator, pointer_depth); + gbString s = gb_string_make_reserve(allocator, type_str.len + 8); + s = gb_string_append_fmt(s, "{dynamic=^%s%s%sAllocator={?^v}}", type_str, INT_SIZE_ENCODING, INT_SIZE_ENCODING); + return make_string_c(s); + } - case Type_Map: - return str_lit("{^v^v{Allocator=?^v}}"); - case Type_Enum: - return lb_get_objc_type_encoding(t->Enum.base_type, allocator, pointer_depth); - case Type_Tuple: - // NOTE(harold): Is this allowed here? - return str_lit("?"); - case Type_Proc: - return str_lit("?"); - case Type_BitSet: - return lb_get_objc_type_encoding(t->BitSet.underlying, allocator, pointer_depth); - case Type_SimdVector: - break; - case Type_Matrix: - break; - case Type_BitField: - return lb_get_objc_type_encoding(t->BitField.backing_type, allocator, pointer_depth); - case Type_SoaPointer: { - gbString s = gb_string_make_reserve(allocator, 8); - s = gb_string_append_fmt(s, "{=^v%s}", INT_SIZE_ENCODING); - return make_string_c(s); - } + case Type_Map: + return str_lit("{^v^v{Allocator=?^v}}"); + case Type_Enum: + return lb_get_objc_type_encoding(t->Enum.base_type, allocator, pointer_depth); + case Type_Tuple: + // NOTE(harold): Is this allowed here? + return str_lit("?"); + case Type_Proc: + return str_lit("?"); + case Type_BitSet: + return lb_get_objc_type_encoding(t->BitSet.underlying, allocator, pointer_depth); + case Type_SimdVector: + break; + case Type_Matrix: + break; + case Type_BitField: + return lb_get_objc_type_encoding(t->BitField.backing_type, allocator, pointer_depth); + case Type_SoaPointer: { + gbString s = gb_string_make_reserve(allocator, 8); + s = gb_string_append_fmt(s, "{=^v%s}", INT_SIZE_ENCODING); + return make_string_c(s); + } - } // End switch t->kind - #undef INT_SIZE_ENCODING + } // End switch t->kind + #undef INT_SIZE_ENCODING - GB_PANIC("Unreachable"); + GB_PANIC("Unreachable"); } struct lbObjCGlobalClass { - lbObjCGlobal g; - lbValue class_value; // Local registered class value + lbObjCGlobal g; + lbValue class_value; // Local registered class value }; gb_internal void lb_register_objc_thing( - StringSet &handled, - lbModule *m, - Array &args, - Array &class_impls, - StringMap &class_map, - lbProcedure *p, - lbObjCGlobal const &g, - char const *call + StringSet &handled, + lbModule *m, + Array &args, + Array &class_impls, + StringMap &class_map, + lbProcedure *p, + lbObjCGlobal const &g, + char const *call ) { - if (string_set_update(&handled, g.name)) { - return; - } + if (string_set_update(&handled, g.name)) { + return; + } - lbAddr addr = {}; - lbValue *found = string_map_get(&m->members, g.global_name); - if (found) { - addr = lb_addr(*found); - } else { - lbValue v = {}; - LLVMTypeRef t = lb_type(m, g.type); - v.value = LLVMAddGlobal(m->mod, t, g.global_name); - v.type = alloc_type_pointer(g.type); - addr = lb_addr(v); - LLVMSetInitializer(v.value, LLVMConstNull(t)); - } + lbAddr addr = {}; + lbValue *found = string_map_get(&m->members, g.global_name); + if (found) { + addr = lb_addr(*found); + } else { + lbValue v = {}; + LLVMTypeRef t = lb_type(m, g.type); + v.value = LLVMAddGlobal(m->mod, t, g.global_name); + v.type = alloc_type_pointer(g.type); + addr = lb_addr(v); + LLVMSetInitializer(v.value, LLVMConstNull(t)); + } - lbValue class_ptr{}; - lbValue class_name = lb_const_value(m, t_cstring, exact_value_string(g.name)); + lbValue class_ptr{}; + lbValue class_name = lb_const_value(m, t_cstring, exact_value_string(g.name)); - // If this class requires an implementation, save it for registration below. - if (g.class_impl_type != nullptr) { + // If this class requires an implementation, save it for registration below. + if (g.class_impl_type != nullptr) { - // Make sure the superclass has been initialized before us - lbValue superclass_value{}; + // Make sure the superclass has been initialized before us + lbValue superclass_value{}; - auto& tn = g.class_impl_type->Named.type_name->TypeName; - Type *superclass = tn.objc_superclass; - if (superclass != nullptr) { - auto& superclass_global = string_map_must_get(&class_map, superclass->Named.type_name->TypeName.objc_class_name); - lb_register_objc_thing(handled, m, args, class_impls, class_map, p, superclass_global.g, call); - GB_ASSERT(superclass_global.class_value.value); + auto& tn = g.class_impl_type->Named.type_name->TypeName; + Type *superclass = tn.objc_superclass; + if (superclass != nullptr) { + auto& superclass_global = string_map_must_get(&class_map, superclass->Named.type_name->TypeName.objc_class_name); + lb_register_objc_thing(handled, m, args, class_impls, class_map, p, superclass_global.g, call); + GB_ASSERT(superclass_global.class_value.value); - superclass_value = superclass_global.class_value; - } + superclass_value = superclass_global.class_value; + } - args.count = 3; - args[0] = superclass == nullptr ? lb_const_nil(m, t_objc_Class) : superclass_value; - args[1] = class_name; - args[2] = lb_const_int(m, t_uint, 0); - class_ptr = lb_emit_runtime_call(p, "objc_allocateClassPair", args); + args.count = 3; + args[0] = superclass == nullptr ? lb_const_nil(m, t_objc_Class) : superclass_value; + args[1] = class_name; + args[2] = lb_const_int(m, t_uint, 0); + class_ptr = lb_emit_runtime_call(p, "objc_allocateClassPair", args); - array_add(&class_impls, lbObjCGlobalClass{g, class_ptr}); - } - else { - args.count = 1; - args[0] = class_name; - class_ptr = lb_emit_runtime_call(p, call, args); - } + array_add(&class_impls, lbObjCGlobalClass{g, class_ptr}); + } + else { + args.count = 1; + args[0] = class_name; + class_ptr = lb_emit_runtime_call(p, call, args); + } - lb_addr_store(p, addr, class_ptr); + lb_addr_store(p, addr, class_ptr); - lbObjCGlobalClass* class_global = string_map_get(&class_map, g.name); - if (class_global != nullptr) { - class_global->class_value = class_ptr; - } + lbObjCGlobalClass* class_global = string_map_get(&class_map, g.name); + if (class_global != nullptr) { + class_global->class_value = class_ptr; + } } gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { @@ -1513,80 +1513,80 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { defer (string_set_destroy(&handled)); auto args = array_make(temporary_allocator(), 3, 8); - auto class_impls = array_make(temporary_allocator(), 0, 16); + auto class_impls = array_make(temporary_allocator(), 0, 16); - // Ensure classes that have been implicitly referenced through - // the objc_superclass attribute have a global variable available for them. - TypeSet class_set{}; - type_set_init(&class_set, gen->objc_classes.count+16); - defer (type_set_destroy(&class_set)); + // Ensure classes that have been implicitly referenced through + // the objc_superclass attribute have a global variable available for them. + TypeSet class_set{}; + type_set_init(&class_set, gen->objc_classes.count+16); + defer (type_set_destroy(&class_set)); - auto referenced_classes = array_make(temporary_allocator()); - for (lbObjCGlobal g = {}; mpsc_dequeue(&gen->objc_classes, &g); /**/) { - array_add( &referenced_classes, g); + auto referenced_classes = array_make(temporary_allocator()); + for (lbObjCGlobal g = {}; mpsc_dequeue(&gen->objc_classes, &g); /**/) { + array_add( &referenced_classes, g); - Type *cls = g.class_impl_type; - while (cls) { - if (type_set_update(&class_set, cls)) { - break; - } - GB_ASSERT(cls->kind == Type_Named); + Type *cls = g.class_impl_type; + while (cls) { + if (type_set_update(&class_set, cls)) { + break; + } + GB_ASSERT(cls->kind == Type_Named); - cls = cls->Named.type_name->TypeName.objc_superclass; - } - } + cls = cls->Named.type_name->TypeName.objc_superclass; + } + } - for (auto pair : class_set) { - auto& tn = pair.type->Named.type_name->TypeName; - Type *class_impl = !tn.objc_is_implementation ? nullptr : pair.type; - lb_handle_objc_find_or_register_class(p, tn.objc_class_name, class_impl); - } - for (lbObjCGlobal g = {}; mpsc_dequeue(&gen->objc_classes, &g); /**/) { - array_add( &referenced_classes, g ); - } + for (auto pair : class_set) { + auto& tn = pair.type->Named.type_name->TypeName; + Type *class_impl = !tn.objc_is_implementation ? nullptr : pair.type; + lb_handle_objc_find_or_register_class(p, tn.objc_class_name, class_impl); + } + for (lbObjCGlobal g = {}; mpsc_dequeue(&gen->objc_classes, &g); /**/) { + array_add( &referenced_classes, g ); + } - // Add all class globals to a map so that we can look them up dynamically - // in order to resolve out-of-order because classes that are being implemented - // need their superclasses to have been registered before them. - StringMap global_class_map{}; - string_map_init(&global_class_map, (usize)gen->objc_classes.count); - defer (string_map_destroy(&global_class_map)); + // Add all class globals to a map so that we can look them up dynamically + // in order to resolve out-of-order because classes that are being implemented + // need their superclasses to have been registered before them. + StringMap global_class_map{}; + string_map_init(&global_class_map, (usize)gen->objc_classes.count); + defer (string_map_destroy(&global_class_map)); - for (lbObjCGlobal g :referenced_classes) { - string_map_set(&global_class_map, g.name, lbObjCGlobalClass{g}); - } + for (lbObjCGlobal g :referenced_classes) { + string_map_set(&global_class_map, g.name, lbObjCGlobalClass{g}); + } - LLVMSetLinkage(p->value, LLVMInternalLinkage); - lb_begin_procedure_body(p); + LLVMSetLinkage(p->value, LLVMInternalLinkage); + lb_begin_procedure_body(p); - // Register class globals, gathering classes that must be implemented - for (auto& kv : global_class_map) { - lb_register_objc_thing(handled, m, args, class_impls, global_class_map, p, kv.value.g, "objc_lookUpClass"); - } + // Register class globals, gathering classes that must be implemented + for (auto& kv : global_class_map) { + lb_register_objc_thing(handled, m, args, class_impls, global_class_map, p, kv.value.g, "objc_lookUpClass"); + } - // Prefetch selectors for implemented methods so that they can also be registered. - for (const auto& cd : class_impls) { - auto& g = cd.g; - Type *class_type = g.class_impl_type; + // Prefetch selectors for implemented methods so that they can also be registered. + for (const auto& cd : class_impls) { + auto& g = cd.g; + Type *class_type = g.class_impl_type; - Array* methods = map_get(&m->info->objc_method_implementations, class_type); - if (!methods) { - continue; - } + Array* methods = map_get(&m->info->objc_method_implementations, class_type); + if (!methods) { + continue; + } - for (const ObjcMethodData& md : *methods) { - lb_handle_objc_find_or_register_selector(p, md.ac.objc_selector); - } - } + for (const ObjcMethodData& md : *methods) { + lb_handle_objc_find_or_register_selector(p, md.ac.objc_selector); + } + } - // Now we can register all referenced selectors - for (lbObjCGlobal g = {}; mpsc_dequeue(&gen->objc_selectors, &g); /**/) { - lb_register_objc_thing(handled, m, args, class_impls, global_class_map, p, g, "sel_registerName"); - } + // Now we can register all referenced selectors + for (lbObjCGlobal g = {}; mpsc_dequeue(&gen->objc_selectors, &g); /**/) { + lb_register_objc_thing(handled, m, args, class_impls, global_class_map, p, g, "sel_registerName"); + } - // Emit method wrapper implementations and registration - auto wrapper_args = array_make(temporary_allocator(), 2, 8); + // Emit method wrapper implementations and registration + auto wrapper_args = array_make(temporary_allocator(), 2, 8); auto get_context_args = array_make(temporary_allocator(), 1); @@ -1597,186 +1597,200 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { map_set(&ivar_map, g.class_impl_type, g); } - for (const auto& cd : class_impls) { - auto& g = cd.g; - Type *class_type = g.class_impl_type; - Type *class_ptr_type = alloc_type_pointer(class_type); - lbValue class_value = cd.class_value; + for (const auto& cd : class_impls) { + auto& g = cd.g; + Type *class_type = g.class_impl_type; + Type *class_ptr_type = alloc_type_pointer(class_type); + lbValue class_value = cd.class_value; - Type *ivar_type = class_type->Named.type_name->TypeName.objc_ivar; + Type *ivar_type = class_type->Named.type_name->TypeName.objc_ivar; - Entity *context_provider = class_type->Named.type_name->TypeName.objc_context_provider; - Type *contex_provider_self_ptr_type = nullptr; - Type *contex_provider_self_named_type = nullptr; - bool is_context_provider_ivar = false; - lbValue context_provider_proc_value{}; + Entity *context_provider = class_type->Named.type_name->TypeName.objc_context_provider; + Type *contex_provider_self_ptr_type = nullptr; + Type *contex_provider_self_named_type = nullptr; + bool is_context_provider_ivar = false; + lbValue context_provider_proc_value{}; - if (context_provider) { - context_provider_proc_value = lb_find_procedure_value_from_entity(m, context_provider); + if (context_provider) { + context_provider_proc_value = lb_find_procedure_value_from_entity(m, context_provider); - contex_provider_self_ptr_type = base_type(context_provider->type->Proc.params->Tuple.variables[0]->type); - GB_ASSERT(contex_provider_self_ptr_type->kind == Type_Pointer); - contex_provider_self_named_type = base_named_type(type_deref(contex_provider_self_ptr_type)); + contex_provider_self_ptr_type = base_type(context_provider->type->Proc.params->Tuple.variables[0]->type); + GB_ASSERT(contex_provider_self_ptr_type->kind == Type_Pointer); + contex_provider_self_named_type = base_named_type(type_deref(contex_provider_self_ptr_type)); - is_context_provider_ivar = ivar_type != nullptr && internal_check_is_assignable_to(contex_provider_self_named_type, ivar_type); - } + is_context_provider_ivar = ivar_type != nullptr && internal_check_is_assignable_to(contex_provider_self_named_type, ivar_type); + } - Array* methods = map_get(&m->info->objc_method_implementations, class_type); - if (!methods) { - continue; - } + Array* methods = map_get(&m->info->objc_method_implementations, class_type); + if (!methods) { + continue; + } - for (const ObjcMethodData& md : *methods) { - GB_ASSERT( md.proc_entity->kind == Entity_Procedure); - Type *method_type = md.proc_entity->type; + for (const ObjcMethodData& md : *methods) { + GB_ASSERT( md.proc_entity->kind == Entity_Procedure); + Type *method_type = md.proc_entity->type; - String proc_name = make_string_c("__$objc_method::"); - proc_name = concatenate_strings(temporary_allocator(), proc_name, g.name); - proc_name = concatenate_strings(temporary_allocator(), proc_name, str_lit("::")); - proc_name = concatenate_strings( permanent_allocator(), proc_name, md.ac.objc_name); + String proc_name = make_string_c("__$objc_method::"); + proc_name = concatenate_strings(temporary_allocator(), proc_name, g.name); + proc_name = concatenate_strings(temporary_allocator(), proc_name, str_lit("::")); + proc_name = concatenate_strings( permanent_allocator(), proc_name, md.ac.objc_name); - wrapper_args.count = 2; - wrapper_args[0] = md.ac.objc_is_class_method ? t_objc_Class : class_ptr_type; - wrapper_args[1] = t_objc_SEL; + wrapper_args.count = 2; + wrapper_args[0] = md.ac.objc_is_class_method ? t_objc_Class : class_ptr_type; + wrapper_args[1] = t_objc_SEL; - auto method_param_count = (isize)method_type->Proc.param_count; - i32 method_param_offset = 0; + auto method_param_count = (isize)method_type->Proc.param_count; + i32 method_param_offset = 0; - // TODO(harold): Need to make sure (at checker stage) that the non-class method has the self parameter already. - // (Maybe this is already accounted for?.) - if (!md.ac.objc_is_class_method) { - GB_ASSERT(method_param_count >= 1); - method_param_count -= 1; - method_param_offset = 1; - } + // TODO(harold): Need to make sure (at checker stage) that the non-class method has the self parameter already. + // (Maybe this is already accounted for?.) + if (!md.ac.objc_is_class_method) { + GB_ASSERT(method_param_count >= 1); + method_param_count -= 1; + method_param_offset = 1; + } - for (i32 i = 0; i < method_param_count; i++) { - array_add(&wrapper_args, method_type->Proc.params->Tuple.variables[method_param_offset+i]->type); - } + for (i32 i = 0; i < method_param_count; i++) { + array_add(&wrapper_args, method_type->Proc.params->Tuple.variables[method_param_offset+i]->type); + } - Type *wrapper_args_tuple = alloc_type_tuple_from_field_types(wrapper_args.data, wrapper_args.count, false, true); - Type *wrapper_proc_type = alloc_type_proc(nullptr, wrapper_args_tuple, (isize)wrapper_args_tuple->Tuple.variables.count, nullptr, 0, false, ProcCC_CDecl); + Type *wrapper_args_tuple = alloc_type_tuple_from_field_types(wrapper_args.data, wrapper_args.count, false, true); + Type *wrapper_results_tuple = nullptr; - lbProcedure *wrapper_proc = lb_create_dummy_procedure(m, proc_name, wrapper_proc_type); - lb_add_attribute_to_proc(wrapper_proc->module, wrapper_proc->value, "nounwind"); + if (method_type->Proc.result_count > 0) { + GB_ASSERT(method_type->Proc.result_count == 1); + wrapper_results_tuple = alloc_type_tuple_from_field_types(&method_type->Proc.results->Tuple.variables[0]->type, 1, false, true); + } - // Emit the wrapper - LLVMSetLinkage(wrapper_proc->value, LLVMExternalLinkage); - lb_begin_procedure_body(wrapper_proc); - { - if (method_type->Proc.calling_convention == ProcCC_Odin) { - GB_ASSERT(context_provider); + Type *wrapper_proc_type = alloc_type_proc(nullptr, wrapper_args_tuple, wrapper_args_tuple->Tuple.variables.count, + wrapper_results_tuple, method_type->Proc.result_count, false, ProcCC_CDecl); - // Emit the get odin context call + lbProcedure *wrapper_proc = lb_create_dummy_procedure(m, proc_name, wrapper_proc_type); + lb_add_attribute_to_proc(wrapper_proc->module, wrapper_proc->value, "nounwind"); - get_context_args[0] = lbValue { - wrapper_proc->raw_input_parameters[0], + // Emit the wrapper + LLVMSetLinkage(wrapper_proc->value, LLVMExternalLinkage); + lb_begin_procedure_body(wrapper_proc); + { + if (method_type->Proc.calling_convention == ProcCC_Odin) { + GB_ASSERT(context_provider); + + // Emit the get odin context call + + get_context_args[0] = lbValue { + wrapper_proc->raw_input_parameters[0], contex_provider_self_ptr_type, }; - if (is_context_provider_ivar) { - // The context provider takes the ivar's type. - // Emit an obj_ivar_get call and use that pointer for 'self' instead. - lbValue real_self { - wrapper_proc->raw_input_parameters[0], - class_ptr_type - }; - get_context_args[0] = lb_handle_objc_ivar_for_objc_object_pointer(wrapper_proc, real_self); - } + if (is_context_provider_ivar) { + // The context provider takes the ivar's type. + // Emit an obj_ivar_get call and use that pointer for 'self' instead. + lbValue real_self { + wrapper_proc->raw_input_parameters[0], + class_ptr_type + }; + get_context_args[0] = lb_handle_objc_ivar_for_objc_object_pointer(wrapper_proc, real_self); + } - lbValue context = lb_emit_call(wrapper_proc, context_provider_proc_value, get_context_args); - lbAddr context_addr = lb_addr(lb_address_from_load_or_generate_local(wrapper_proc, context)); - lb_push_context_onto_stack(wrapper_proc, context_addr); - } + lbValue context = lb_emit_call(wrapper_proc, context_provider_proc_value, get_context_args); + lbAddr context_addr = lb_addr(lb_address_from_load_or_generate_local(wrapper_proc, context)); + lb_push_context_onto_stack(wrapper_proc, context_addr); + } - auto method_call_args = array_make(temporary_allocator(), method_param_count + (isize)method_param_offset); + auto method_call_args = array_make(temporary_allocator(), method_param_count + (isize)method_param_offset); - if (!md.ac.objc_is_class_method) { - method_call_args[0] = lbValue { - wrapper_proc->raw_input_parameters[0], - class_ptr_type, - }; - } + if (!md.ac.objc_is_class_method) { + method_call_args[0] = lbValue { + wrapper_proc->raw_input_parameters[0], + class_ptr_type, + }; + } - for (isize i = 0; i < method_param_count; i++) { - method_call_args[i+method_param_offset] = lbValue { - wrapper_proc->raw_input_parameters[i+2], - method_type->Proc.params->Tuple.variables[i+method_param_offset]->type, - }; - } - lbValue method_proc_value = lb_find_procedure_value_from_entity(m, md.proc_entity); + for (isize i = 0; i < method_param_count; i++) { + method_call_args[i+method_param_offset] = lbValue { + wrapper_proc->raw_input_parameters[i+2], + method_type->Proc.params->Tuple.variables[i+method_param_offset]->type, + }; + } + lbValue method_proc_value = lb_find_procedure_value_from_entity(m, md.proc_entity); - // Call real procedure for method from here, passing the parameters expected, if any. - lb_emit_call(wrapper_proc, method_proc_value, method_call_args); - } - lb_end_procedure_body(wrapper_proc); + // Call real procedure for method from here, passing the parameters expected, if any. + lbValue return_value = lb_emit_call(wrapper_proc, method_proc_value, method_call_args); + + if (wrapper_results_tuple != nullptr) { + auto &result_var = method_type->Proc.results->Tuple.variables[0]; + return_value = lb_emit_conv(wrapper_proc, return_value, result_var->type); + lb_build_return_stmt_internal(wrapper_proc, return_value, result_var->token.pos); + } + } + lb_end_procedure_body(wrapper_proc); - // Add the method to the class - String method_encoding = str_lit("v"); - // TODO (harold): Checker must ensure that objc_methods have a single return value or none! - GB_ASSERT(method_type->Proc.result_count <= 1); - if (method_type->Proc.result_count != 0) { - method_encoding = lb_get_objc_type_encoding(method_type->Proc.results->Tuple.variables[0]->type, temporary_allocator()); - } + // Add the method to the class + String method_encoding = str_lit("v"); + // TODO (harold): Checker must ensure that objc_methods have a single return value or none! + GB_ASSERT(method_type->Proc.result_count <= 1); + if (method_type->Proc.result_count != 0) { + method_encoding = lb_get_objc_type_encoding(method_type->Proc.results->Tuple.variables[0]->type, temporary_allocator()); + } - if (!md.ac.objc_is_class_method) { - method_encoding = concatenate_strings(temporary_allocator(), method_encoding, str_lit("@:")); - } else { - method_encoding = concatenate_strings(temporary_allocator(), method_encoding, str_lit("#:")); - } + if (!md.ac.objc_is_class_method) { + method_encoding = concatenate_strings(temporary_allocator(), method_encoding, str_lit("@:")); + } else { + method_encoding = concatenate_strings(temporary_allocator(), method_encoding, str_lit("#:")); + } - for (i32 i = method_param_offset; i < method_param_count; i++) { - Type *param_type = method_type->Proc.params->Tuple.variables[i]->type; - String param_encoding = lb_get_objc_type_encoding(param_type, temporary_allocator()); + for (i32 i = method_param_offset; i < method_param_count; i++) { + Type *param_type = method_type->Proc.params->Tuple.variables[i]->type; + String param_encoding = lb_get_objc_type_encoding(param_type, temporary_allocator()); - method_encoding = concatenate_strings(temporary_allocator(), method_encoding, param_encoding); - } + method_encoding = concatenate_strings(temporary_allocator(), method_encoding, param_encoding); + } - // Emit method registration - lbAddr* sel_address = string_map_get(&m->objc_selectors, md.ac.objc_selector); - GB_ASSERT(sel_address); - lbValue selector_value = lb_addr_load(p, *sel_address); + // Emit method registration + lbAddr* sel_address = string_map_get(&m->objc_selectors, md.ac.objc_selector); + GB_ASSERT(sel_address); + lbValue selector_value = lb_addr_load(p, *sel_address); - args.count = 4; - args[0] = class_value; // Class - args[1] = selector_value; // SEL - args[2] = lbValue { wrapper_proc->value, wrapper_proc->type }; - args[3] = lb_const_value(m, t_cstring, exact_value_string(method_encoding)); + args.count = 4; + args[0] = class_value; // Class + args[1] = selector_value; // SEL + args[2] = lbValue { wrapper_proc->value, wrapper_proc->type }; + args[3] = lb_const_value(m, t_cstring, exact_value_string(method_encoding)); - // TODO(harold): Emit check BOOL result and panic if false. - lb_emit_runtime_call(p, "class_addMethod", args); + // TODO(harold): Emit check BOOL result and panic if false. + lb_emit_runtime_call(p, "class_addMethod", args); - } // End methods + } // End methods - // Add ivar if we have one - if (ivar_type != nullptr) { - // Register a single ivar for this class - Type *ivar_base = ivar_type->Named.base; + // Add ivar if we have one + if (ivar_type != nullptr) { + // Register a single ivar for this class + Type *ivar_base = ivar_type->Named.base; - const i64 size = type_size_of(ivar_base); - const i64 alignment = type_align_of(ivar_base); - // TODO(harold): Checker: Alignment must be compatible with ivar rules. Or we should increase the alignment if needed. + const i64 size = type_size_of(ivar_base); + const i64 alignment = type_align_of(ivar_base); + // TODO(harold): Checker: Alignment must be compatible with ivar rules. Or we should increase the alignment if needed. - // TODO(harold): Should we pass the actual type encoding? Might not be ideal for obfuscation. - String ivar_name = str_lit("__$ivar"); - String ivar_types = str_lit("{= }"); //lb_get_objc_type_encoding(ivar_type, temporary_allocator());// str_lit("{= }"); - args.count = 5; - args[0] = class_value; - args[1] = lb_const_value(m, t_cstring, exact_value_string(ivar_name)); - args[2] = lb_const_value(m, t_uint, exact_value_u64((u64)size)); - args[3] = lb_const_value(m, t_u8, exact_value_u64((u64)alignment)); - args[4] = lb_const_value(m, t_cstring, exact_value_string(ivar_types)); - lb_emit_runtime_call(p, "class_addIvar", args); - } + // TODO(harold): Should we pass the actual type encoding? Might not be ideal for obfuscation. + String ivar_name = str_lit("__$ivar"); + String ivar_types = str_lit("{= }"); //lb_get_objc_type_encoding(ivar_type, temporary_allocator());// str_lit("{= }"); + args.count = 5; + args[0] = class_value; + args[1] = lb_const_value(m, t_cstring, exact_value_string(ivar_name)); + args[2] = lb_const_value(m, t_uint, exact_value_u64((u64)size)); + args[3] = lb_const_value(m, t_u8, exact_value_u64((u64)alignment)); + args[4] = lb_const_value(m, t_cstring, exact_value_string(ivar_types)); + lb_emit_runtime_call(p, "class_addIvar", args); + } - // Complete the class registration - args.count = 1; - args[0] = class_value; - lb_emit_runtime_call(p, "objc_registerClassPair", args); - } + // Complete the class registration + args.count = 1; + args[0] = class_value; + lb_emit_runtime_call(p, "objc_registerClassPair", args); + } // Register ivar offsets for any `objc_ivar_get` expressions emitted. Type *ptr_u32 = alloc_type_pointer(t_u32); diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index 7694c65c3..99ee2b2ff 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -196,7 +196,7 @@ struct lbModule { StringMap objc_classes; StringMap objc_selectors; - StringMap objc_ivars; + StringMap objc_ivars; PtrMap map_cell_info_map; // address of runtime.Map_Info PtrMap map_info_map; // address of runtime.Map_Cell_Info @@ -220,7 +220,7 @@ struct lbObjCGlobal { gbString global_name; String name; Type * type; - Type * class_impl_type; // This is set when the class has the objc_implement attribute set to true. + Type * class_impl_type; // This is set when the class has the objc_implement attribute set to true. }; struct lbGenerator : LinkerData { @@ -242,7 +242,7 @@ struct lbGenerator : LinkerData { MPSCQueue entities_to_correct_linkage; MPSCQueue objc_selectors; MPSCQueue objc_classes; - MPSCQueue objc_ivars; + MPSCQueue objc_ivars; }; diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 7f012e006..bb683465b 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -101,7 +101,7 @@ gb_internal void lb_init_module(lbModule *m, Checker *c) { string_map_init(&m->objc_classes); string_map_init(&m->objc_selectors); - string_map_init(&m->objc_ivars); + string_map_init(&m->objc_ivars); map_init(&m->map_info_map, 0); map_init(&m->map_cell_info_map, 0); @@ -174,7 +174,7 @@ gb_internal bool lb_init_generator(lbGenerator *gen, Checker *c) { mpsc_init(&gen->entities_to_correct_linkage, heap_allocator()); mpsc_init(&gen->objc_selectors, heap_allocator()); mpsc_init(&gen->objc_classes, heap_allocator()); - mpsc_init(&gen->objc_ivars, heap_allocator()); + mpsc_init(&gen->objc_ivars, heap_allocator()); return true; } diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index bf4ebf377..ba375283e 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -3290,7 +3290,7 @@ gb_internal lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValu case BuiltinProc_objc_find_class: return lb_handle_objc_find_class(p, expr); case BuiltinProc_objc_register_selector: return lb_handle_objc_register_selector(p, expr); case BuiltinProc_objc_register_class: return lb_handle_objc_register_class(p, expr); - case BuiltinProc_objc_ivar_get: return lb_handle_objc_ivar_get(p, expr); + case BuiltinProc_objc_ivar_get: return lb_handle_objc_ivar_get(p, expr); case BuiltinProc_constant_utf16_cstring: diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp index 33211395a..264364162 100644 --- a/src/llvm_backend_utility.cpp +++ b/src/llvm_backend_utility.cpp @@ -2157,8 +2157,8 @@ gb_internal lbAddr lb_handle_objc_find_or_register_class(lbProcedure *p, String gb_internal lbAddr lb_handle_objc_find_or_register_ivar(lbModule *m, Type *self_type) { - String name = self_type->Named.type_name->TypeName.objc_class_name; - GB_ASSERT(name != ""); + String name = self_type->Named.type_name->TypeName.objc_class_name; + GB_ASSERT(name != ""); lbAddr *found = string_map_get(&m->objc_ivars, name); if (found) { @@ -2170,7 +2170,7 @@ gb_internal lbAddr lb_handle_objc_find_or_register_ivar(lbModule *m, Type *self_ gbString global_name = gb_string_make(permanent_allocator(), "__$objc_ivar::"); global_name = gb_string_append_length(global_name, name.text, name.len); - // Create a global variable to store offset of the ivar in an instance of an object + // Create a global variable to store offset of the ivar in an instance of an object LLVMTypeRef t = lb_type(m, t_u32); lbValue g = {}; @@ -2209,10 +2209,10 @@ gb_internal lbValue lb_handle_objc_ivar_for_objc_object_pointer(lbProcedure *p, } gb_internal lbValue lb_handle_objc_ivar_get(lbProcedure *p, Ast *expr) { - ast_node(ce, CallExpr, expr); + ast_node(ce, CallExpr, expr); - GB_ASSERT(ce->args[0]->tav.type->kind == Type_Pointer); - lbValue self = lb_build_expr(p, ce->args[0]); + GB_ASSERT(ce->args[0]->tav.type->kind == Type_Pointer); + lbValue self = lb_build_expr(p, ce->args[0]); return lb_handle_objc_ivar_for_objc_object_pointer(p, self); } @@ -2282,7 +2282,7 @@ gb_internal lbValue lb_handle_objc_id(lbProcedure *p, Ast *expr) { GB_ASSERT(e->kind == Entity_TypeName); String name = e->TypeName.objc_class_name; - Type *class_impl_type = e->TypeName.objc_is_implementation ? type : nullptr; + Type *class_impl_type = e->TypeName.objc_is_implementation ? type : nullptr; return lb_addr_load(p, lb_handle_objc_find_or_register_class(p, name, class_impl_type)); } From 89533f49e4fc2ae6f16551a51acaad115faffecd Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Sun, 27 Apr 2025 23:05:17 -0400 Subject: [PATCH 011/120] Fix more styling and minor issues --- src/checker.cpp | 2 +- src/checker.hpp | 4 ++-- src/llvm_backend.cpp | 16 ++++++++-------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/checker.cpp b/src/checker.cpp index 6563b1c58..15d19fb1a 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -6491,7 +6491,7 @@ gb_internal void check_objc_context_provider_procedures(Checker *c) { Type *proc_type = proc_entity->type; // TODO(harold): Give better errors here (specify exactly what's wrong) - const char* signature_error = "The procedure for @(objc_context_provider) has an incorrect signature."; + const char *signature_error = "The procedure for @(objc_context_provider) has an incorrect signature."; if (proc_type->Proc.param_count != 1 || proc_type->Proc.result_count != 1) { error(proc_entity->token, signature_error); diff --git a/src/checker.hpp b/src/checker.hpp index 336f09a7e..0f7e1cb59 100644 --- a/src/checker.hpp +++ b/src/checker.hpp @@ -153,8 +153,8 @@ struct AttributeContext { Type * objc_superclass; Type * objc_ivar; Entity *objc_context_provider; - bool objc_is_class_method : 1; - bool objc_is_implementation : 1; // This struct or proc provides a class/method implementation, not a binding to an existing type. + bool objc_is_class_method; + bool objc_is_implementation; // This struct or proc provides a class/method implementation, not a binding to an existing type. String require_target_feature; // required by the target micro-architecture String enable_target_feature; // will be enabled for the procedure only diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 7ffd4ea30..aec8b7fc5 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1269,7 +1269,7 @@ String lb_get_objc_type_encoding(Type *t, gbAllocator allocator, isize pointer_d return build_context.metrics.ptr_size == 4 ? str_lit("{string=*i}") : str_lit("{string=*q}"); case Basic_cstring: return str_lit("*"); - case Basic_any: return str_lit("{any=^v^v"); // rawptr + ^Type_Info + case Basic_any: return str_lit("{any=^v^v}"); // rawptr + ^Type_Info case Basic_typeid: GB_ASSERT(t->Basic.size == 8); @@ -1458,16 +1458,16 @@ gb_internal void lb_register_objc_thing( LLVMSetInitializer(v.value, LLVMConstNull(t)); } - lbValue class_ptr{}; + lbValue class_ptr = {}; lbValue class_name = lb_const_value(m, t_cstring, exact_value_string(g.name)); // If this class requires an implementation, save it for registration below. if (g.class_impl_type != nullptr) { // Make sure the superclass has been initialized before us - lbValue superclass_value{}; + lbValue superclass_value = lb_const_nil(m, t_objc_Class); - auto& tn = g.class_impl_type->Named.type_name->TypeName; + auto &tn = g.class_impl_type->Named.type_name->TypeName; Type *superclass = tn.objc_superclass; if (superclass != nullptr) { auto& superclass_global = string_map_must_get(&class_map, superclass->Named.type_name->TypeName.objc_class_name); @@ -1478,7 +1478,7 @@ gb_internal void lb_register_objc_thing( } args.count = 3; - args[0] = superclass == nullptr ? lb_const_nil(m, t_objc_Class) : superclass_value; + args[0] = superclass_value; args[1] = class_name; args[2] = lb_const_int(m, t_uint, 0); class_ptr = lb_emit_runtime_call(p, "objc_allocateClassPair", args); @@ -1627,7 +1627,7 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { continue; } - for (const ObjcMethodData& md : *methods) { + for (const ObjcMethodData &md : *methods) { GB_ASSERT( md.proc_entity->kind == Entity_Procedure); Type *method_type = md.proc_entity->type; @@ -1640,8 +1640,8 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { wrapper_args[0] = md.ac.objc_is_class_method ? t_objc_Class : class_ptr_type; wrapper_args[1] = t_objc_SEL; - auto method_param_count = (isize)method_type->Proc.param_count; - i32 method_param_offset = 0; + isize method_param_count = method_type->Proc.param_count; + i32 method_param_offset = 0; // TODO(harold): Need to make sure (at checker stage) that the non-class method has the self parameter already. // (Maybe this is already accounted for?.) From d24bac8a36f31c59b08450d3ed0da108d0860b24 Mon Sep 17 00:00:00 2001 From: Vincent Billet Date: Tue, 29 Apr 2025 18:00:41 +0200 Subject: [PATCH 012/120] Adding windows keyboard scan codes --- core/sys/windows/scan_codes.odin | 172 +++++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) create mode 100644 core/sys/windows/scan_codes.odin diff --git a/core/sys/windows/scan_codes.odin b/core/sys/windows/scan_codes.odin new file mode 100644 index 000000000..54949c2f6 --- /dev/null +++ b/core/sys/windows/scan_codes.odin @@ -0,0 +1,172 @@ +#+build windows +package sys_windows + +// Win32 scan codes for QWERTY layout +// https://learn.microsoft.com/en-us/windows/win32/inputdev/about-keyboard-input#scan-codes + +KB_SYS_POWERDOWN :: 0xE05E +KB_SYS_SLEEP :: 0xE05F +KB_SYS_WAKEUP :: 0xE063 +KB_ERR_ROLLOVER :: 0x00FF + +KB_A :: 0x001E +KB_B :: 0x0030 +KB_C :: 0x002E +KB_D :: 0x0020 +KB_E :: 0x0012 +KB_F :: 0x0021 +KB_G :: 0x0022 +KB_H :: 0x0023 +KB_I :: 0x0017 +KB_J :: 0x0024 +KB_K :: 0x0025 +KB_L :: 0x0026 +KB_M :: 0x0032 +KB_N :: 0x0031 +KB_O :: 0x0018 +KB_P :: 0x0019 +KB_Q :: 0x0010 +KB_R :: 0x0013 +KB_S :: 0x001F +KB_T :: 0x0014 +KB_U :: 0x0016 +KB_V :: 0x002F +KB_W :: 0x0011 +KB_X :: 0x002D +KB_Y :: 0x0015 +KB_Z :: 0x002C + +KB_1_BANG :: 0x0002 +KB_2_AT :: 0x0003 +KB_3_HASH :: 0x0004 +KB_4_DOLLAR :: 0x0005 +KB_5_PERCENT :: 0x0006 +KB_6_CARET :: 0x0007 +KB_7_AMPERSAND :: 0x0008 +KB_8_STAR :: 0x0009 +KB_9_LEFTBRACKET :: 0x000A +KB_0_RIGHTBRACKET :: 0x000B + +KB_RETURN_ENTER :: 0x001C +KB_ESCAPE :: 0x0001 +KB_DELETE :: 0x000E +KB_TAB :: 0x000F +KB_SPACEBAR :: 0x0039 +KB_DASH_UNDERSCORE :: 0x000C +KB_EQUALS_PLUS :: 0x000D +KB_LEFTBRACE :: 0x001A +KB_RIGHTBRACE :: 0x001B +KB_PIPE_SLASH :: 0x002B +KB_NONUS :: 0x002B +KB_SEMICOLON_COLON :: 0x0027 +KB_APOSTR_DOUBLEQUOT :: 0x0028 +KB_GRAVEACC_TILDE :: 0x0029 +KB_COMMA :: 0x0033 +KB_PERIOD :: 0x0034 +KB_QUESTIONMARK :: 0x0035 +KB_CAPSLOCK :: 0x003A + +KB_F1 :: 0x003B +KB_F2 :: 0x003C +KB_F3 :: 0x003D +KB_F4 :: 0x003E +KB_F5 :: 0x003F +KB_F6 :: 0x0040 +KB_F7 :: 0x0041 +KB_F8 :: 0x0042 +KB_F9 :: 0x0043 +KB_F10 :: 0x0044 +KB_F11 :: 0x0057 +KB_F12 :: 0x0058 + +KB_PRINTSCREEN :: 0xE037 +KB_SCROLLLOCK :: 0x0046 +KB_PAUSE :: 0xE11D45 +KB_INSERT :: 0xE052 +KB_HOME :: 0xE047 +KB_PAGEUP :: 0xE049 +KB_DELETEFORWARD :: 0xE053 +KB_END :: 0xE04F +KB_PAGEDOWN :: 0xE051 +KB_RIGHTARROW :: 0xE04D +KB_LEFTARROW :: 0xE04B +KB_DOWNARROW :: 0xE050 +KB_UPARROW :: 0xE048 + +KP_NUMLOCK_CLEAR :: 0x0045 +KP_FORWARDSLASH :: 0xE035 +KP_STAR :: 0x0037 +KP_DASH :: 0x004A +KP_PLUS :: 0x004E +KP_ENTER :: 0xE01C +KP_1_END :: 0x004F +KP_2_DOWNARROW :: 0x0050 +KP_3_PAGEDN :: 0x0051 +KP_4_LEFTARROW :: 0x004B +KP_5 :: 0x004C +KP_6_RIGHTARROW :: 0x004D +KP_7_HOME :: 0x0047 +KP_8_UPARROW :: 0x0048 +KP_9_PAGEUP :: 0x0049 +KP_0_INSERT :: 0x0052 +KP_PERIOD :: 0x0053 + +KB_NONUS_SLASHBAR :: 0x0056 +KB_APPLICATION :: 0xE05D +KB_POWER :: 0xE05E +KB_EQUALS :: 0x0059 +KB_F13 :: 0x0064 +KB_F14 :: 0x0065 +KB_F15 :: 0x0066 +KB_F16 :: 0x0067 +KB_F17 :: 0x0068 +KB_F18 :: 0x0069 +KB_F19 :: 0x006A +KB_F20 :: 0x006B +KB_F21 :: 0x006C +KB_F22 :: 0x006D +KB_F23 :: 0x006E +KB_F24 :: 0x0076 + +KP_COMMA :: 0x007E + +KB_INTERNATIONAL1 :: 0x0073 +KB_INTERNATIONAL2 :: 0x0070 +KB_INTERNATIONAL3 :: 0x007D +KB_INTERNATIONAL4 :: 0x0079 +KB_INTERNATIONAL5 :: 0x007B +KB_INTERNATIONAL6 :: 0x005C + +KB_LANG1 :: 0x0072 +KB_LANG2 :: 0x0071 +KB_LANG3 :: 0x0078 +KB_LANG4 :: 0x0077 +KB_LANG5 :: 0x0076 + +KB_LEFTCONTROL :: 0x001D +KB_LEFTSHIFT :: 0x002A +KB_LEFTALT :: 0x0038 +KB_LEFTGUI :: 0xE05B +KB_RIGHTCONTROL :: 0xE01D +KB_RIGHTSHIFT :: 0x0036 +KB_RIGHTALT :: 0xE038 +KB_RIGHTGUI :: 0xE05C + +FN_SCANNEXTTRACK :: 0xE019 +FN_SCANPREVTRACK :: 0xE010 +FN_STOP :: 0xE024 +FN_PLAY_PAUSE :: 0xE022 +FN_MUTE :: 0xE020 +FN_VOLUMEINC :: 0xE030 +FN_VOLUMEDEC :: 0xE02E +FN_AL_CONSUMERCTRLCONFIG :: 0xE06D +FN_AL_EMAILREADER :: 0xE06C +FN_AL_CALCULATOR :: 0xE021 +FN_AL_LOCALMACHINEBROWSER :: 0xE06B +FN_AC_SEARCH :: 0xE065 +FN_AC_HOME :: 0xE032 +FN_AC_BACK :: 0xE06A +FN_AC_FORWARD :: 0xE069 +FN_AC_STOP :: 0xE068 +FN_AC_REFRESH :: 0xE067 +FN_AC_BOOKMARKS :: 0xE066 From 125b60aee0aec03bc3bd1e0ce66699cf0d562e9a Mon Sep 17 00:00:00 2001 From: Vincent Billet Date: Wed, 30 Apr 2025 17:32:11 +0200 Subject: [PATCH 013/120] First implementation of XAudio2 --- vendor/windows/XAudio2/x3daudio.odin | 233 ++++++++ vendor/windows/XAudio2/xaudio2.odin | 821 ++++++++++++++++++++++++++ vendor/windows/XAudio2/xaudio2fx.odin | 287 +++++++++ 3 files changed, 1341 insertions(+) create mode 100644 vendor/windows/XAudio2/x3daudio.odin create mode 100644 vendor/windows/XAudio2/xaudio2.odin create mode 100644 vendor/windows/XAudio2/xaudio2fx.odin diff --git a/vendor/windows/XAudio2/x3daudio.odin b/vendor/windows/XAudio2/x3daudio.odin new file mode 100644 index 000000000..d09703476 --- /dev/null +++ b/vendor/windows/XAudio2/x3daudio.odin @@ -0,0 +1,233 @@ +#+build windows + +/* NOTES: + 1. Definition of terms: + LFE: Low Frequency Effect -- always omnidirectional. + LPF: Low Pass Filter, divided into two classifications: + Direct -- Applied to the direct signal path, + used for obstruction/occlusion effects. + Reverb -- Applied to the reverb signal path, + used for occlusion effects only. + + 2. Volume level is expressed as a linear amplitude scaler: + 1.0f represents no attenuation applied to the original signal, + 0.5f denotes an attenuation of 6dB, and 0.0f results in silence. + Amplification (volume > 1.0f) is also allowed, and is not clamped. + + LPF values range from 1.0f representing all frequencies pass through, + to 0.0f which results in silence as all frequencies are filtered out. + + 3. X3DAudio uses a left-handed Cartesian coordinate system with values + on the x-axis increasing from left to right, on the y-axis from + bottom to top, and on the z-axis from near to far. + Azimuths are measured clockwise from a given reference direction. + + Distance measurement is with respect to user-defined world units. + Applications may provide coordinates using any system of measure + as all non-normalized calculations are scale invariant, with such + operations natively occurring in user-defined world unit space. + Metric constants are supplied only as a convenience. + Distance is calculated using the Euclidean norm formula. + + 4. Only real values are permissible with functions using 32-bit + float parameters -- NAN and infinite values are not accepted. + All computation occurs in 32-bit precision mode. */ + + +package windows_xaudio2 + +import "core:math" + +foreign import xa2 "system:xaudio2.lib" + +//---------------------------------------------------// +// speaker geometry configuration flags, specifies assignment of channels to speaker positions, defined as per WAVEFORMATEXTENSIBLE.dwChannelMask +SPEAKER_FLAGS :: distinct bit_set[SPEAKER_FLAG; u32] +SPEAKER_FLAG :: enum u32 { + FRONT_LEFT = 0, + FRONT_RIGHT = 1, + FRONT_CENTER = 2, + LOW_FREQUENCY = 3, + BACK_LEFT = 4, + BACK_RIGHT = 5, + FRONT_LEFT_OF_CENTER = 6, + FRONT_RIGHT_OF_CENTER = 7, + BACK_CENTER = 8, + SIDE_LEFT = 9, + SIDE_RIGHT = 10, + TOP_CENTER = 11, + TOP_FRONT_LEFT = 12, + TOP_FRONT_CENTER = 13, + TOP_FRONT_RIGHT = 14, + TOP_BACK_LEFT = 15, + TOP_BACK_CENTER = 16, + TOP_BACK_RIGHT = 17, + //RESERVED = 0x7FFC0000, // bit mask locations reserved for future use + ALL = 31, // used to specify that any possible permutation of speaker configurations +} + +// standard speaker geometry configurations, used with Initialize +SPEAKER_MONO :: SPEAKER_FLAGS{.FRONT_CENTER} +SPEAKER_STEREO :: SPEAKER_FLAGS{.FRONT_LEFT, .FRONT_RIGHT} +SPEAKER_2POINT1 :: SPEAKER_FLAGS{.FRONT_LEFT, .FRONT_RIGHT, .LOW_FREQUENCY} +SPEAKER_SURROUND :: SPEAKER_FLAGS{.FRONT_LEFT, .FRONT_RIGHT, .FRONT_CENTER, .BACK_CENTER} +SPEAKER_QUAD :: SPEAKER_FLAGS{.FRONT_LEFT, .FRONT_RIGHT, .BACK_LEFT, .BACK_RIGHT} +SPEAKER_4POINT1 :: SPEAKER_FLAGS{.FRONT_LEFT, .FRONT_RIGHT, .LOW_FREQUENCY, .BACK_LEFT, .BACK_RIGHT} +SPEAKER_5POINT1 :: SPEAKER_FLAGS{.FRONT_LEFT, .FRONT_RIGHT, .FRONT_CENTER, .LOW_FREQUENCY, .BACK_LEFT, .BACK_RIGHT} +SPEAKER_7POINT1 :: SPEAKER_FLAGS{.FRONT_LEFT, .FRONT_RIGHT, .FRONT_CENTER, .LOW_FREQUENCY, .BACK_LEFT, .BACK_RIGHT, .FRONT_LEFT_OF_CENTER, .FRONT_RIGHT_OF_CENTER} +SPEAKER_5POINT1_SURROUND :: SPEAKER_FLAGS{.FRONT_LEFT, .FRONT_RIGHT, .FRONT_CENTER, .LOW_FREQUENCY, .SIDE_LEFT, .SIDE_RIGHT} +SPEAKER_7POINT1_SURROUND :: SPEAKER_FLAGS{.FRONT_LEFT, .FRONT_RIGHT, .FRONT_CENTER, .LOW_FREQUENCY, .BACK_LEFT, .BACK_RIGHT, .SIDE_LEFT, .SIDE_RIGHT} + +// size of instance handle in bytes +HANDLE_BYTESIZE :: 20 + +// speed of sound in meters per second for dry air at approximately 20C, used with Initialize +SPEED_OF_SOUND :: 343.5 + +// calculation control flags, used with Calculate +CALCULATE_FLAGS :: distinct bit_set[CALCULATE_FLAG; u32] +CALCULATE_FLAG :: enum u32 { + MATRIX = 0, // enable matrix coefficient table calculation + DELAY = 1, // enable delay time array calculation (stereo final mix only) + LPF_DIRECT = 2, // enable LPF direct-path coefficient calculation + LPF_REVERB = 3, // enable LPF reverb-path coefficient calculation + REVERB = 4, // enable reverb send level calculation + DOPPLER = 5, // enable doppler shift factor calculation + EMITTER_ANGLE = 6, // enable emitter-to-listener interior angle calculation + + ZEROCENTER = 16, // do not position to front center speaker, signal positioned to remaining speakers instead, front center destination channel will be zero in returned matrix coefficient table, valid only for matrix calculations with final mix formats that have a front center channel + REDIRECT_TO_LFE = 17, // apply equal mix of all source channels to LFE destination channel, valid only for matrix calculations with sources that have no LFE channel and final mix formats that have an LFE channel +} + +//-----------------------------------------------------// +VECTOR :: [3]f32 // float 3D vector + +// instance handle of precalculated constants +HANDLE :: [HANDLE_BYTESIZE]byte + +// Distance curve point: +// Defines a DSP setting at a given normalized distance. +DISTANCE_CURVE_POINT :: struct { + Distance: f32, // normalized distance, must be within [0.0f, 1.0f] + DSPSetting: f32, // DSP setting +} + +// Distance curve: +// A piecewise curve made up of linear segments used to define DSP behaviour with respect to normalized distance. +// +// Note that curve point distances are normalized within [0.0f, 1.0f]. +// EMITTER.CurveDistanceScaler must be used to scale the normalized distances to user-defined world units. +// For distances beyond CurveDistanceScaler * 1.0f, pPoints[PointCount-1].DSPSetting is used as the DSP setting. +// +// All distance curve spans must be such that: +// pPoints[k-1].DSPSetting + ((pPoints[k].DSPSetting-pPoints[k-1].DSPSetting) / (pPoints[k].Distance-pPoints[k-1].Distance)) * (pPoints[k].Distance-pPoints[k-1].Distance) != NAN or infinite values +// For all points in the distance curve where 1 <= k < PointCount. +DISTANCE_CURVE :: struct { + pPoints: [^]DISTANCE_CURVE_POINT, // distance curve point array, must have at least PointCount elements with no duplicates and be sorted in ascending order with respect to Distance + PointCount: u32, // number of distance curve points, must be >= 2 as all distance curves must have at least two endpoints, defining DSP settings at 0.0f and 1.0f normalized distance +} +Default_LinearCurvePoints := [2]DISTANCE_CURVE_POINT{{0.0, 1.0}, {1.0, 0.0}} +Default_LinearCurve := DISTANCE_CURVE{&Default_LinearCurvePoints[0], 2} + +CONE :: struct { + InnerAngle: f32, // inner cone angle in radians, must be within [0.0f, TAU] + OuterAngle: f32, // outer cone angle in radians, must be within [InnerAngle, TAU] + + InnerVolume: f32, // volume level scaler on/within inner cone, used only for matrix calculations, must be within [0.0f, 2.0f] when used + OuterVolume: f32, // volume level scaler on/beyond outer cone, used only for matrix calculations, must be within [0.0f, 2.0f] when used + InnerLPF: f32, // LPF (both direct and reverb paths) coefficient subtrahend on/within inner cone, used only for LPF (both direct and reverb paths) calculations, must be within [0.0f, 1.0f] when used + OuterLPF: f32, // LPF (both direct and reverb paths) coefficient subtrahend on/beyond outer cone, used only for LPF (both direct and reverb paths) calculations, must be within [0.0f, 1.0f] when used + InnerReverb: f32, // reverb send level scaler on/within inner cone, used only for reverb calculations, must be within [0.0f, 2.0f] when used + OuterReverb: f32, // reverb send level scaler on/beyond outer cone, used only for reverb calculations, must be within [0.0f, 2.0f] when used +} +Default_DirectionalCone := CONE{math.PI / 2, math.PI, 1.0, 0.708, 0.0, 0.25, 0.708, 1.0} + +// Listener: +// Defines a point of 3D audio reception. +// +// The cone is directed by the listener's front orientation. +LISTENER :: struct { + OrientFront: VECTOR, // orientation of front direction, used only for matrix and delay calculations or listeners with cones for matrix, LPF (both direct and reverb paths), and reverb calculations, must be normalized when used + OrientTop: VECTOR, // orientation of top direction, used only for matrix and delay calculations, must be orthonormal with OrientFront when used + + Position: VECTOR, // position in user-defined world units, does not affect Velocity + Velocity: VECTOR, // velocity vector in user-defined world units/second, used only for doppler calculations, does not affect Position + + pCone: ^CONE, // sound cone, used only for matrix, LPF (both direct and reverb paths), and reverb calculations, NULL specifies omnidirectionality +} + +// Emitter: +// Defines a 3D audio source, divided into two classifications: +// +// Single-point -- For use with single-channel sounds. +// Positioned at the emitter base, i.e. the channel radius and azimuth are ignored if the number of channels == 1. +// +// May be omnidirectional or directional using a cone. +// The cone originates from the emitter base position, and is directed by the emitter's front orientation. +// +// Multi-point -- For use with multi-channel sounds. +// Each non-LFE channel is positioned using an azimuth along the channel radius with respect to the front orientation vector in the plane orthogonal to the top orientation vector. +// An azimuth of TAU specifies a channel is an LFE. Such channels are positioned at the emitter base and are calculated with respect to pLFECurve only, never pVolumeCurve. +// +// Multi-point emitters are always omnidirectional, i.e. the cone is ignored if the number of channels > 1. +// +// Note that many properties are shared among all channel points, locking certain behaviour with respect to the emitter base position. +// For example, doppler shift is always calculated with respect to the emitter base position and so is constant for all its channel points. +// Distance curve calculations are also with respect to the emitter base position, with the curves being calculated independently of each other. +// For instance, volume and LFE calculations do not affect one another. +EMITTER :: struct { + pCone: ^CONE, // sound cone, used only with single-channel emitters for matrix, LPF (both direct and reverb paths), and reverb calculations, NULL specifies omnidirectionality + + OrientFront: VECTOR, // orientation of front direction, used only for emitter angle calculations or with multi-channel emitters for matrix calculations or single-channel emitters with cones for matrix, LPF (both direct and reverb paths), and reverb calculations, must be normalized when used + OrientTop: VECTOR, // orientation of top direction, used only with multi-channel emitters for matrix calculations, must be orthonormal with OrientFront when used + + Position: VECTOR, // position in user-defined world units, does not affect Velocity + Velocity: VECTOR, // velocity vector in user-defined world units/second, used only for doppler calculations, does not affect Position + + InnerRadius: f32, // inner radius, must be within [0.0f, max(f32)] + InnerRadiusAngle: f32, // inner radius angle, must be within [0.0f, PI/4.0) + + ChannelCount: u32, // number of sound channels, must be > 0 + ChannelRadius: f32, // channel radius, used only with multi-channel emitters for matrix calculations, must be >= 0.0f when used + pChannelAzimuths: [^]f32, // channel azimuth array, used only with multi-channel emitters for matrix calculations, contains positions of each channel expressed in radians along the channel radius with respect to the front orientation vector in the plane orthogonal to the top orientation vector, or TAU to specify an LFE channel, must have at least ChannelCount elements, all within [0.0f, TAU] when used + + pVolumeCurve: ^DISTANCE_CURVE, // volume level distance curve, used only for matrix calculations, NULL specifies a default curve that conforms to the inverse square law, calculated in user-defined world units with distances <= CurveDistanceScaler clamped to no attenuation + pLFECurve: ^DISTANCE_CURVE, // LFE level distance curve, used only for matrix calculations, NULL specifies a default curve that conforms to the inverse square law, calculated in user-defined world units with distances <= CurveDistanceScaler clamped to no attenuation + pLPFDirectCurve: ^DISTANCE_CURVE, // LPF direct-path coefficient distance curve, used only for LPF direct-path calculations, NULL specifies the default curve: [0.0f,1.0f], [1.0f,0.75f] + pLPFReverbCurve: ^DISTANCE_CURVE, // LPF reverb-path coefficient distance curve, used only for LPF reverb-path calculations, NULL specifies the default curve: [0.0f,0.75f], [1.0f,0.75f] + pReverbCurve: ^DISTANCE_CURVE, // reverb send level distance curve, used only for reverb calculations, NULL specifies the default curve: [0.0f,1.0f], [1.0f,0.0f] + + CurveDistanceScaler: f32, // curve distance scaler, used to scale normalized distance curves to user-defined world units and/or exaggerate their effect, used only for matrix, LPF (both direct and reverb paths), and reverb calculations, must be within [min(f32), max(f32)] when used + DopplerScaler: f32, // doppler shift scaler, used to exaggerate doppler shift effect, used only for doppler calculations, must be within [0.0f, max(f32)] when used +} + +// DSP settings: +// Receives results from a call to Calculate to be sent to the low-level audio rendering API for 3D signal processing. +// +// The user is responsible for allocating the matrix coefficient table, delay time array, and initializing the channel counts when used. +DSP_SETTINGS :: struct { + pMatrixCoefficients: [^]f32, // [inout] matrix coefficient table, receives an array representing the volume level used to send from source channel S to destination channel D, stored as pMatrixCoefficients[SrcChannelCount * D + S], must have at least SrcChannelCount*DstChannelCount elements + pDelayTimes: [^]f32, // [inout] delay time array, receives delays for each destination channel in milliseconds, must have at least DstChannelCount elements (stereo final mix only) + SrcChannelCount: u32, // [in] number of source channels, must equal number of channels in respective emitter + DstChannelCount: u32, // [in] number of destination channels, must equal number of channels of the final mix + + LPFDirectCoefficient: f32, // [out] LPF direct-path coefficient + LPFReverbCoefficient: f32, // [out] LPF reverb-path coefficient + ReverbLevel: f32, // [out] reverb send level + DopplerFactor: f32, // [out] doppler shift factor, scales resampler ratio for doppler shift effect, where the effective frequency = DopplerFactor * original frequency + EmitterToListenerAngle: f32, // [out] emitter-to-listener interior angle, expressed in radians with respect to the emitter's front orientation + + EmitterToListenerDistance: f32, // [out] distance in user-defined world units from the emitter base to listener position, always calculated + EmitterVelocityComponent: f32, // [out] component of emitter velocity vector projected onto emitter->listener vector in user-defined world units/second, calculated only for doppler + ListenerVelocityComponent: f32, // [out] component of listener velocity vector projected onto emitter->listener vector in user-defined world units/second, calculated only for doppler +} + +//-------------------------------------------------------// +@(default_calling_convention="system", link_prefix="X3DAudio") +foreign xa2 { + // initializes instance handle + Initialize :: proc(SpeakerChannelMask: SPEAKER_FLAGS, SpeedOfSound: f32, Instance: HANDLE) -> HRESULT --- + + // calculates DSP settings with respect to 3D parameters + Calculate :: proc(Instance: HANDLE, pListener: ^LISTENER, pEmitter: ^EMITTER, Flags: CALCULATE_FLAGS, pDSPSettings: ^DSP_SETTINGS) --- +} diff --git a/vendor/windows/XAudio2/xaudio2.odin b/vendor/windows/XAudio2/xaudio2.odin new file mode 100644 index 000000000..231b41a90 --- /dev/null +++ b/vendor/windows/XAudio2/xaudio2.odin @@ -0,0 +1,821 @@ +#+build windows +/* + Bindings for Windows XAudio2: + https://learn.microsoft.com/en-us/windows/win32/xaudio2/xaudio2-introduction + + Compiling for Windows 10 RS5 (1809) and later +*/ + +package windows_xaudio2 + +import win "core:sys/windows" +import "core:math" + +foreign import xa2 "system:xaudio2.lib" + +HRESULT :: win.HRESULT +IUnknown :: win.IUnknown +IUnknown_VTable :: win.IUnknown_VTable +IID :: win.IID + +/************************************************************************** + * + * XAudio2 constants, flags and error codes. + * + **************************************************************************/ + +// Numeric boundary values +MAX_BUFFER_BYTES :: 0x80000000 // Maximum bytes allowed in a source buffer +MAX_QUEUED_BUFFERS :: 64 // Maximum buffers allowed in a voice queue +MAX_BUFFERS_SYSTEM :: 2 // Maximum buffers allowed for system threads (Xbox 360 only) +MAX_AUDIO_CHANNELS :: 64 // Maximum channels in an audio stream +MIN_SAMPLE_RATE :: 1000 // Minimum audio sample rate supported +MAX_SAMPLE_RATE :: 200000 // Maximum audio sample rate supported +MAX_VOLUME_LEVEL :: 16777216.0 // Maximum acceptable volume level (2^24) +MIN_FREQ_RATIO :: (1.0 / 1024.0) // Minimum SetFrequencyRatio argument +MAX_FREQ_RATIO :: 1024.0 // Maximum MaxFrequencyRatio argument +DEFAULT_FREQ_RATIO :: 2.0 // Default MaxFrequencyRatio argument +MAX_FILTER_ONEOVERQ :: 1.5 // Maximum FILTER_PARAMETERS.OneOverQ +MAX_FILTER_FREQUENCY :: 1.0 // Maximum FILTER_PARAMETERS.Frequency +MAX_LOOP_COUNT :: 254 // Maximum non-infinite BUFFER.LoopCount +MAX_INSTANCES :: 8 // Maximum simultaneous XAudio2 objects on Xbox 360 + +// For XMA voices on Xbox 360 there is an additional restriction on the MaxFrequencyRatio argument and the voice's sample rate: the product of these numbers cannot exceed 600000 for one-channel voices or 300000 for voices with more than one channel. +MAX_RATIO_TIMES_RATE_XMA_MONO :: 600000 +MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL :: 300000 + +// Numeric values with special meanings +COMMIT_NOW :: 0 // Used as an OperationSet argument +COMMIT_ALL :: 0 // Used in IXAudio2.CommitChanges +INVALID_OPSET :: 0xffffffff // Not allowed for OperationSet arguments +NO_LOOP_REGION :: 0 // Used in BUFFER.LoopCount +LOOP_INFINITE :: 255 // Used in BUFFER.LoopCount +DEFAULT_CHANNELS :: 0 // Used in CreateMasteringVoice +DEFAULT_SAMPLERATE :: 0 // Used in CreateMasteringVoice + +// Flags +FLAGS :: distinct bit_set[FLAG; u32] +FLAG :: enum u32 { + DEBUG_ENGINE = 0, // Used in Create + VOICE_NOPITCH = 1, // Used in IXAudio2.CreateSourceVoice + VOICE_NOSRC = 2, // Used in IXAudio2.CreateSourceVoice + VOICE_USEFILTER = 3, // Used in IXAudio2.CreateSource/SubmixVoice + PLAY_TAILS = 5, // Used in IXAudio2SourceVoice.Stop + END_OF_STREAM = 6, // Used in BUFFER.Flags + SEND_USEFILTER = 7, // Used in SEND_DESCRIPTOR.Flags + VOICE_NOSAMPLESPLAYED = 8, // Used in IXAudio2SourceVoice.GetState + STOP_ENGINE_WHEN_IDLE = 13, // Used in Create to force the engine to Stop when no source voices are Started, and Start when a voice is Started + QUANTUM_1024 = 15, // Used in Create to specify nondefault processing quantum of 21.33 ms (1024 samples at 48KHz) + NO_VIRTUAL_AUDIO_CLIENT = 16, // Used in CreateMasteringVoice to create a virtual audio client +} + +// Default parameters for the built-in filter +DEFAULT_FILTER_TYPE :: FILTER_TYPE.LowPassFilter +DEFAULT_FILTER_FREQUENCY :: MAX_FILTER_FREQUENCY +DEFAULT_FILTER_ONEOVERQ :: 1.0 + +// Internal XAudio2 constants +// The audio frame quantum can be calculated by reducing the fraction: +// SamplesPerAudioFrame / SamplesPerSecond +QUANTUM_NUMERATOR :: 1 // On Windows, XAudio2 processes audio +QUANTUM_DENOMINATOR :: 100 // in 10ms chunks (= 1/100 seconds) +QUANTUM_MS :: (1000.0 * QUANTUM_NUMERATOR / QUANTUM_DENOMINATOR) + +// XAudio2 error codes +INVALID_CALL :: HRESULT(-0x7769FFFF) // An API call or one of its arguments was illegal +XMA_DECODER_ERROR :: HRESULT(-0x7769FFFE) // The XMA hardware suffered an unrecoverable error +XAPO_CREATION_FAILED :: HRESULT(-0x7769FFFD) // XAudio2 failed to initialize an XAPO effect +DEVICE_INVALIDATED :: HRESULT(-0x7769FFFC) // An audio device became unusable (unplugged, etc) + + +/************************************************************************** + * + * XAudio2 structures and enumerations. + * + **************************************************************************/ + +// Used in Create, specifies which CPU(s) to use. +PROCESSOR_FLAGS :: distinct bit_set[PROCESOR_FLAG; u32] +PROCESOR_FLAG :: enum u32 { + Processor1 = 0, + Processor2 = 1, + Processor3 = 2, + Processor4 = 3, + Processor5 = 4, + Processor6 = 5, + Processor7 = 6, + Processor8 = 7, + Processor9 = 8, + Processor10 = 9, + Processor11 = 10, + Processor12 = 11, + Processor13 = 12, + Processor14 = 13, + Processor15 = 14, + Processor16 = 15, + Processor17 = 16, + Processor18 = 17, + Processor19 = 18, + Processor20 = 19, + Processor21 = 20, + Processor22 = 21, + Processor23 = 22, + Processor24 = 23, + Processor25 = 24, + Processor26 = 25, + Processor27 = 26, + Processor28 = 27, + Processor29 = 28, + Processor30 = 29, + Processor31 = 30, + Processor32 = 31, +} + +USE_DEFAULT_PROCESSOR :: PROCESSOR_FLAGS{} + +// Returned by IXAudio2Voice.GetVoiceDetails +VOICE_DETAILS :: struct { + CreatingFlags: FLAGS, + ActiveFlags: FLAGS, + InputChannels: u32, + InputSampleRate: u32, +} + +// Used in VOICE_SENDS below +SEND_DESCRIPTOR :: struct { + Flags: FLAGS, // Either 0 or SEND_USEFILTER. + pOutputVoice: ^IXAudio2Voice, // This send's destination voice. +} + +// Used in the voice creation functions and in IXAudio2Voice.SetOutputVoices +VOICE_SENDS :: struct { + SendCount: u32, // Number of sends from this voice. + pSends: [^]SEND_DESCRIPTOR, // Array of SendCount send descriptors. +} + +// Used in EFFECT_CHAIN below +EFFECT_DESCRIPTOR :: struct { + pEffect: ^IUnknown, // Pointer to the effect object's IUnknown interface. + InitialState: bool, // TRUE if the effect should begin in the enabled state. + OutputChannels: u32, // How many output channels the effect should produce. +} + +// Used in the voice creation functions and in IXAudio2Voice.SetEffectChain +EFFECT_CHAIN :: struct { + EffectCount: u32, // Number of effects in this voice's effect chain. + pEffectDescriptors: [^]EFFECT_DESCRIPTOR, // Array of effect descriptors. +} + +// Used in FILTER_PARAMETERS below +FILTER_TYPE :: enum i32 { + LowPassFilter, // Attenuates frequencies above the cutoff frequency (state-variable filter). + BandPassFilter, // Attenuates frequencies outside a given range (state-variable filter). + HighPassFilter, // Attenuates frequencies below the cutoff frequency (state-variable filter). + NotchFilter, // Attenuates frequencies inside a given range (state-variable filter). + LowPassOnePoleFilter, // Attenuates frequencies above the cutoff frequency (one-pole filter, FILTER_PARAMETERS.OneOverQ has no effect) + HighPassOnePoleFilter, // Attenuates frequencies below the cutoff frequency (one-pole filter, FILTER_PARAMETERS.OneOverQ has no effect) +} + +// Used in IXAudio2Voice.Set/GetFilterParameters and Set/GetOutputFilterParameters +FILTER_PARAMETERS :: struct { + Type: FILTER_TYPE, // Filter type. + Frequency: f32, // Filter coefficient. Must be >= 0 and <= MAX_FILTER_FREQUENCY. See CutoffFrequencyToRadians() for state-variable filter types and CutoffFrequencyToOnePoleCoefficient() for one-pole filter types. + OneOverQ: f32, // Reciprocal of the filter's quality factor Q; must be > 0 and <= MAX_FILTER_ONEOVERQ. Has no effect for one-pole filters. +} + +// Used in IXAudio2SourceVoice.SubmitSourceBuffer +BUFFER :: struct { + Flags: FLAGS, // Either 0 or END_OF_STREAM. + AudioBytes: u32, // Size of the audio data buffer in bytes. + pAudioData: [^]byte, // Pointer to the audio data buffer. + PlayBegin: u32, // First sample in this buffer to be played. + PlayLength: u32, // Length of the region to be played in samples, or 0 to play the whole buffer. + LoopBegin: u32, // First sample of the region to be looped. + LoopLength: u32, // Length of the desired loop region in samples, or 0 to loop the entire buffer. + LoopCount: u32, // Number of times to repeat the loop region, or LOOP_INFINITE to loop forever. + pContext: rawptr, // Context value to be passed back in callbacks. +} + +// Used in IXAudio2SourceVoice.SubmitSourceBuffer when submitting XWMA data. +// NOTE: If an XWMA sound is submitted in more than one buffer, each buffer's pDecodedPacketCumulativeBytes[PacketCount-1] value must be subtracted from all the entries in the next buffer's pDecodedPacketCumulativeBytes array. +// And whether a sound is submitted in more than one buffer or not, the final buffer of the sound should use the END_OF_STREAM flag, or else the client must call IXAudio2SourceVoice.Discontinuity after submitting it. +BUFFER_WMA :: struct { + pDecodedPacketCumulativeBytes: [^]u32, // Decoded packet's cumulative size array. Each element is the number of bytes accumulated when the corresponding XWMA packet is decoded in order. The array must have PacketCount elements. + PacketCount: u32, // Number of XWMA packets submitted. Must be >= 1 and divide evenly into BUFFER.AudioBytes. +} + +// Returned by IXAudio2SourceVoice.GetState +VOICE_STATE :: struct { + pCurrentBufferContext: rawptr, // The pContext value provided in the BUFFER that is currently being processed, or NULL if there are no buffers in the queue. + BuffersQueued: u32, // Number of buffers currently queued on the voice (including the one that is being processed). + SamplesPlayed: u64, // Total number of samples produced by the voice since it began processing the current audio stream. If VOICE_NOSAMPLESPLAYED is specified in the call to IXAudio2SourceVoice.GetState, this member will not be calculated, saving CPU. +} + +// Returned by IXAudio2.GetPerformanceData +PERFORMANCE_DATA :: struct { + // CPU usage information + AudioCyclesSinceLastQuery: u64, // CPU cycles spent on audio processing since the last call to StartEngine or GetPerformanceData. + TotalCyclesSinceLastQuery: u64, // Total CPU cycles elapsed since the last call (only counts the CPU XAudio2 is running on). + MinimumCyclesPerQuantum: u32, // Fewest CPU cycles spent processing any one audio quantum since the last call. + MaximumCyclesPerQuantum: u32, // Most CPU cycles spent processing any one audio quantum since the last call. + + // Memory usage information + MemoryUsageInBytes: u32, // Total heap space currently in use. + + // Audio latency and glitching information + CurrentLatencyInSamples: u32, // Minimum delay from when a sample is read from a source buffer to when it reaches the speakers. + GlitchesSinceEngineStarted: u32, // Audio dropouts since the engine was started. + + // Data about XAudio2's current workload + ActiveSourceVoiceCount: u32, // Source voices currently playing. + TotalSourceVoiceCount: u32, // Source voices currently existing. + ActiveSubmixVoiceCount: u32, // Submix voices currently playing/existing. + + ActiveResamplerCount: u32, // Resample xAPOs currently active. + ActiveMatrixMixCount: u32, // MatrixMix xAPOs currently active. + + // Usage of the hardware XMA decoder (Xbox 360 only) + ActiveXmaSourceVoices: u32, // Number of source voices decoding XMA data. + ActiveXmaStreams: u32, // A voice can use more than one XMA stream. +} + +// Used in IXAudio2.SetDebugConfiguration +DEBUG_CONFIGURATION :: struct { + TraceMask: DEBUG_CONFIG_FLAGS, // Bitmap of enabled debug message types. + BreakMask: DEBUG_CONFIG_FLAGS, // Message types that will break into the debugger. + LogThreadID: bool, // Whether to log the thread ID with each message. + LogFileline: bool, // Whether to log the source file and line number. + LogFunctionName: bool, // Whether to log the function name. + LogTiming: bool, // Whether to log message timestamps. +} + +// Values for the TraceMask and BreakMask bitmaps. Only ERRORS and WARNINGS are valid in BreakMask. +// WARNINGS implies ERRORS, DETAIL implies INFO, and FUNC_CALLS implies API_CALLS. +// By default, TraceMask is ERRORS and WARNINGS and all the other settings are zero. +DEBUG_CONFIG_FLAGS :: distinct bit_set[DEBUG_CONFIG_FLAG; u32] +DEBUG_CONFIG_FLAG :: enum u32 { + ERRORS = 0, // For handled errors with serious effects. + WARNINGS = 1, // For handled errors that may be recoverable. + INFO = 2, // Informational chit-chat (e.g. state changes). + DETAIL = 3, // More detailed chit-chat. + API_CALLS = 4, // Public API function entries and exits. + FUNC_CALLS = 5, // Internal function entries and exits. + TIMING = 6, // Delays detected and other timing data. + LOCKS = 7, // Usage of critical sections and mutexes. + MEMORY = 8, // Memory heap usage information. + STREAMING = 12, // Audio streaming information. +} + +/************************************************************************** + * + * IXAudio2: Top-level XAudio2 COM interface. + * + **************************************************************************/ + +IXAudio2_UUID_STRING :: "2B02E3CF-2E0B-4ec3-BE45-1B2A3FE7210D" +IXAudio2_UUID := &IID{0x2B02E3CF, 0x2E0B, 0x4ec3, {0xBE, 0x45, 0x1B, 0x2A, 0x3F, 0xE7, 0x21, 0x0D}} +IXAudio2 :: struct #raw_union { + #subtype iunknown: IUnknown, + using ixaudio2_vtable: ^IXAudio2_VTable, +} +IXAudio2_VTable :: struct { + using iunknown_vtable: IUnknown_VTable, + + // NAME: IXAudio2.RegisterForCallbacks + // DESCRIPTION: Adds a new client to receive XAudio2's engine callbacks. + // ARGUMENTS: + // pCallback - Callback interface to be called during each processing pass. + RegisterForCallbacks: proc "system" (this: ^IXAudio2, pCallback: ^IXAudio2EngineCallback) -> HRESULT, + + // NAME: IXAudio2.UnregisterForCallbacks + // DESCRIPTION: Removes an existing receiver of XAudio2 engine callbacks. + // ARGUMENTS: + // pCallback - Previously registered callback interface to be removed. + UnregisterForCallbacks: proc "system" (this: ^IXAudio2, pCallback: ^IXAudio2EngineCallback), + + // NAME: IXAudio2.CreateSourceVoice + // DESCRIPTION: Creates and configures a source voice. + // ARGUMENTS: + // ppSourceVoice - Returns the new object's IXAudio2SourceVoice interface. + // pSourceFormat - Format of the audio that will be fed to the voice. + // Flags - VOICE flags specifying the source voice's behavior. + // MaxFrequencyRatio - Maximum SetFrequencyRatio argument to be allowed. + // pCallback - Optional pointer to a client-provided callback interface. + // pSendList - Optional list of voices this voice should send audio to. + // pEffectChain - Optional list of effects to apply to the audio data. + CreateSourceVoice: proc "system" (this: ^IXAudio2, ppSourceVoice: ^^IXAudio2SourceVoice, pSourceFormat: ^win.WAVEFORMATEX, Flags: FLAGS = {}, MaxFrequencyRatio: f32 = DEFAULT_FREQ_RATIO, pCallback: ^IXAudio2VoiceCallback = nil, pSendList: [^]VOICE_SENDS = nil, pEffectChain: [^]EFFECT_CHAIN = nil) -> HRESULT, + + // NAME: IXAudio2.CreateSubmixVoice + // DESCRIPTION: Creates and configures a submix voice. + // ARGUMENTS: + // ppSubmixVoice - Returns the new object's IXAudio2SubmixVoice interface. + // InputChannels - Number of channels in this voice's input audio data. + // InputSampleRate - Sample rate of this voice's input audio data. + // Flags - VOICE flags specifying the submix voice's behavior. + // ProcessingStage - Arbitrary number that determines the processing order. + // pSendList - Optional list of voices this voice should send audio to. + // pEffectChain - Optional list of effects to apply to the audio data. + CreateSubmixVoice: proc "system" (this: ^IXAudio2, ppSubmixVoice: ^^IXAudio2SubmixVoice, InputChannels: u32, InputSampleRate: u32, Flags: FLAGS = {}, ProcessingStage: u32 = 0, pSendList: [^]VOICE_SENDS = nil, pEffectChain: [^]EFFECT_CHAIN = nil) -> HRESULT, + + // NAME: IXAudio2.CreateMasteringVoice + // DESCRIPTION: Creates and configures a mastering voice. + // ARGUMENTS: + // ppMasteringVoice - Returns the new object's IXAudio2MasteringVoice interface. + // InputChannels - Number of channels in this voice's input audio data. + // InputSampleRate - Sample rate of this voice's input audio data. + // Flags - VOICE flags specifying the mastering voice's behavior. + // szDeviceId - Identifier of the device to receive the output audio. + // pEffectChain - Optional list of effects to apply to the audio data. + // StreamCategory - The audio stream category to use for this mastering voice + CreateMasteringVoice: proc "system" (this: ^IXAudio2, ppMasteringVoice: ^^IXAudio2MasteringVoice, InputChannels: u32 = DEFAULT_CHANNELS, InputSampleRate: u32 = DEFAULT_SAMPLERATE, Flags: FLAGS = {}, szDeviceId: win.LPCWSTR = nil, pEffectChain: [^]EFFECT_CHAIN = nil, StreamCategory: AUDIO_STREAM_CATEGORY = .GameEffects) -> HRESULT, + + // NAME: IXAudio2.:StartEngine + // DESCRIPTION: Creates and starts the audio processing thread. + StartEngine: proc "system" (this: ^IXAudio2) -> HRESULT, + + // NAME: IXAudio2.StopEngine + // DESCRIPTION: Stops and destroys the audio processing thread. + StopEngine: proc "system" (this: ^IXAudio2), + + // NAME: IXAudio2.CommitChanges + // DESCRIPTION: Atomically applies a set of operations previously tagged + // with a given identifier. + // ARGUMENTS: + // OperationSet - Identifier of the set of operations to be applied. + CommitChanges: proc "system" (this: ^IXAudio2, OperationSet: u32) -> HRESULT, + + // NAME: IXAudio2.GetPerformanceData + // DESCRIPTION: Returns current resource usage details: memory, CPU, etc. + // ARGUMENTS: + // pPerfData - Returns the performance data structure. + GetPerformanceData: proc "system" (this: ^IXAudio2, pPerfData: ^PERFORMANCE_DATA), + + // NAME: IXAudio2.SetDebugConfiguration + // DESCRIPTION: Configures XAudio2's debug output (in debug builds only). + // ARGUMENTS: + // pDebugConfiguration - Structure describing the debug output behavior. + // pReserved - Optional parameter; must be NULL. + SetDebugConfiguration: proc "system" (this: ^IXAudio2, pDebugConfiguration: ^DEBUG_CONFIGURATION, pReserved: rawptr = nil), +} + +// This interface extends IXAudio2 with additional functionality. +// Use IXAudio2.QueryInterface to obtain a pointer to this interface. +IXAudio2Extension_UUID_STRING :: "84ac29bb-d619-44d2-b197-e4acf7df3ed6" +IXAudio2Extension_UUID := &IID{0x84ac29bb, 0xd619, 0x44d2, {0xb1, 0x97, 0xe4, 0xac, 0xf7, 0xdf, 0x3e, 0xd6}} +IXAudio2Extension :: struct #raw_union { + #subtype iunknown: IUnknown, + using ixaudio2extension_vtable: ^IXAudio2Extension_VTable, +} +IXAudio2Extension_VTable :: struct { + using iunknown_vtable: IUnknown_VTable, + + // NAME: IXAudio2Extension.GetProcessingQuantum + // DESCRIPTION: Returns the processing quantum + // quantumMilliseconds = (1000.0f * quantumNumerator / quantumDenominator) + // ARGUMENTS: + // quantumNumerator - Quantum numerator + // quantumDenominator - Quantum denominator + GetProcessingQuantum: proc "system" (this: ^IXAudio2Extension, quantumNumerator: ^u32, quantumDenominator: ^u32), + + // NAME: IXAudio2Extension.GetProcessor + // DESCRIPTION: Returns the number of the processor used by XAudio2 + // ARGUMENTS: + // processor - Non-zero Processor number + GetProcessor: proc "system" (this: ^IXAudio2Extension, processor: ^PROCESSOR_FLAGS), +} + +/************************************************************************** + * + * IXAudio2Voice: Base voice management interface. + * + **************************************************************************/ + +IXAudio2Voice :: struct { + using ixaudio2voice_vtable: ^IXAudio2Voice_VTable, +} +IXAudio2Voice_VTable :: struct { + // NAME: IXAudio2Voice.GetVoiceDetails + // DESCRIPTION: Returns the basic characteristics of this voice. + // ARGUMENTS: + // pVoiceDetails - Returns the voice's details. + GetVoiceDetails: proc "system" (this: ^IXAudio2Voice, pVoiceDetails: ^VOICE_DETAILS), + + // NAME: IXAudio2Voice.SetOutputVoices + // DESCRIPTION: Replaces the set of submix/mastering voices that receive + // this voice's output. + // ARGUMENTS: + // pSendList - Optional list of voices this voice should send audio to. + SetOutputVoices: proc "system" (this: ^IXAudio2Voice, pSendList: [^]VOICE_SENDS) -> HRESULT, + + // NAME: IXAudio2Voice.SetEffectChain + // DESCRIPTION: Replaces this voice's current effect chain with a new one. + // ARGUMENTS: + // pEffectChain - Structure describing the new effect chain to be used. + SetEffectChain: proc "system" (this: ^IXAudio2Voice, pEffectChain: ^EFFECT_CHAIN) -> HRESULT, + + // NAME: IXAudio2Voice.EnableEffect + // DESCRIPTION: Enables an effect in this voice's effect chain. + // ARGUMENTS: + // EffectIndex - Index of an effect within this voice's effect chain. + // OperationSet - Used to identify this call as part of a deferred batch. + EnableEffect: proc "system" (this: ^IXAudio2Voice, EffectIndex: u32, OperationSet: u32 = COMMIT_NOW) -> HRESULT, + + // NAME: IXAudio2Voice.DisableEffect + // DESCRIPTION: Disables an effect in this voice's effect chain. + // ARGUMENTS: + // EffectIndex - Index of an effect within this voice's effect chain. + // OperationSet - Used to identify this call as part of a deferred batch. + DisableEffect: proc "system" (this: ^IXAudio2Voice, EffectIndex: u32, OperationSet: u32 = COMMIT_NOW) -> HRESULT, + + // NAME: IXAudio2Voice.GetEffectState + // DESCRIPTION: Returns the running state of an effect. + // ARGUMENTS: + // EffectIndex - Index of an effect within this voice's effect chain. + // pEnabled - Returns the enabled/disabled state of the given effect. + GetEffectState: proc "system" (this: ^IXAudio2Voice, EffectIndex: u32, pEnabled: ^bool), + + // NAME: IXAudio2Voice.SetEffectParameters + // DESCRIPTION: Sets effect-specific parameters. + // REMARKS: Unlike IXAPOParameters.SetParameters, this method may be called from any thread. XAudio2 implements appropriate synchronization to copy the parameters to the realtime audio processing thread. + // ARGUMENTS: + // EffectIndex - Index of an effect within this voice's effect chain. + // pParameters - Pointer to an effect-specific parameters block. + // ParametersByteSize - Size of the pParameters array in bytes. + // OperationSet - Used to identify this call as part of a deferred batch. + SetEffectParameters: proc "system" (this: ^IXAudio2Voice, EffectIndex: u32, pParameters: rawptr, ParametersByteSize: u32, OperationSet: u32 = COMMIT_NOW) -> HRESULT, + + // NAME: IXAudio2Voice.GetEffectParameters + // DESCRIPTION: Obtains the current effect-specific parameters. + // ARGUMENTS: + // EffectIndex - Index of an effect within this voice's effect chain. + // pParameters - Returns the current values of the effect-specific parameters. + // ParametersByteSize - Size of the pParameters array in bytes. + GetEffectParameters: proc "system" (this: ^IXAudio2Voice, EffectIndex: u32, pParameters: rawptr, ParametersByteSize: u32) -> HRESULT, + + // NAME: IXAudio2Voice.SetFilterParameters + // DESCRIPTION: Sets this voice's filter parameters. + // ARGUMENTS: + // pParameters - Pointer to the filter's parameter structure. + // OperationSet - Used to identify this call as part of a deferred batch. + SetFilterParameters: proc "system" (this: ^IXAudio2Voice, pParameters: ^FILTER_PARAMETERS, OperationSet: u32 = COMMIT_NOW) -> HRESULT, + + // NAME: IXAudio2Voice.GetFilterParameters + // DESCRIPTION: Returns this voice's current filter parameters. + // ARGUMENTS: + // pParameters - Returns the filter parameters. + GetFilterParameters: proc "system" (this: ^IXAudio2Voice, pParameters: ^FILTER_PARAMETERS), + + // NAME: IXAudio2Voice.SetOutputFilterParameters + // DESCRIPTION: Sets the filter parameters on one of this voice's sends. + // ARGUMENTS: + // pDestinationVoice - Destination voice of the send whose filter parameters will be set. + // pParameters - Pointer to the filter's parameter structure. + // OperationSet - Used to identify this call as part of a deferred batch. + SetOutputFilterParameters: proc "system" (this: ^IXAudio2Voice, pDestinationVoice: ^IXAudio2Voice, pParameters: ^FILTER_PARAMETERS, OperationSet: u32 = COMMIT_NOW) -> HRESULT, + + // NAME: IXAudio2Voice.GetOutputFilterParameters + // DESCRIPTION: Returns the filter parameters from one of this voice's sends. + // ARGUMENTS: + // pDestinationVoice - Destination voice of the send whose filter parameters will be read. + // pParameters - Returns the filter parameters. + GetOutputFilterParameters: proc "system" (this: ^IXAudio2Voice, pDestinationVoice: ^IXAudio2Voice, pParameters: ^FILTER_PARAMETERS), + + // NAME: IXAudio2Voice.SetVolume + // DESCRIPTION: Sets this voice's overall volume level. + // ARGUMENTS: + // Volume - New overall volume level to be used, as an amplitude factor. + // OperationSet - Used to identify this call as part of a deferred batch. + SetVolume: proc "system" (this: ^IXAudio2Voice, Volume: f32, OperationSet: u32 = COMMIT_NOW) -> HRESULT, + + // NAME: IXAudio2Voice.GetVolume + // DESCRIPTION: Obtains this voice's current overall volume level. + // ARGUMENTS: + // pVolume: Returns the voice's current overall volume level. + GetVolume: proc "system" (this: ^IXAudio2Voice, pVolume: ^f32), + + // NAME: IXAudio2Voice.SetChannelVolumes + // DESCRIPTION: Sets this voice's per-channel volume levels. + // ARGUMENTS: + // Channels - Used to confirm the voice's channel count. + // pVolumes - Array of per-channel volume levels to be used. + // OperationSet - Used to identify this call as part of a deferred batch. + SetChannelVolumes: proc "system" (this: ^IXAudio2Voice, Channels: u32, pVolumes: [^]f32, OperationSet: u32 = COMMIT_NOW) -> HRESULT, + + // NAME: IXAudio2Voice.GetChannelVolumes + // DESCRIPTION: Returns this voice's current per-channel volume levels. + // ARGUMENTS: + // Channels - Used to confirm the voice's channel count. + // pVolumes - Returns an array of the current per-channel volume levels. + GetChannelVolumes: proc "system" (this: ^IXAudio2Voice, Channels: u32, pVolumes: [^]f32), + + // NAME: IXAudio2Voice.SetOutputMatrix + // DESCRIPTION: Sets the volume levels used to mix from each channel of this voice's output audio to each channel of a given destination voice's input audio. + // ARGUMENTS: + // pDestinationVoice - The destination voice whose mix matrix to change. + // SourceChannels - Used to confirm this voice's output channel count (the number of channels produced by the last effect in the chain). + // DestinationChannels - Confirms the destination voice's input channels. + // pLevelMatrix - Array of [SourceChannels * DestinationChannels] send levels. The level used to send from source channel S to destination channel D should be in pLevelMatrix[S + SourceChannels * D]. + // OperationSet - Used to identify this call as part of a deferred batch. + SetOutputMatrix: proc "system" (this: ^IXAudio2Voice, pDestinationVoice: ^IXAudio2Voice, SourceChannels: u32, DestinationChannels: u32, pLevelMatrix: [^]f32, OperationSet: u32 = COMMIT_NOW) -> HRESULT, + + // NAME: IXAudio2Voice.GetOutputMatrix + // DESCRIPTION: Obtains the volume levels used to send each channel of this voice's output audio to each channel of a given destination voice's input audio. + // ARGUMENTS: + // pDestinationVoice - The destination voice whose mix matrix to obtain. + // SourceChannels - Used to confirm this voice's output channel count (the number of channels produced by the last effect in the chain). + // DestinationChannels - Confirms the destination voice's input channels. + // pLevelMatrix - Array of send levels, as above. + GetOutputMatrix: proc "system" (this: ^IXAudio2Voice, pDestinationVoice: ^IXAudio2Voice, SourceChannels: u32, DestinationChannels: u32, pLevelMatrix: [^]f32), + + // NAME: IXAudio2Voice.DestroyVoice + // DESCRIPTION: Destroys this voice, stopping it if necessary and removing it from the XAudio2 graph. + DestroyVoice: proc "system" (this: ^IXAudio2Voice), +} + +/************************************************************************** + * + * IXAudio2SourceVoice: Source voice management interface. + * + **************************************************************************/ + +IXAudio2SourceVoice :: struct #raw_union { + #subtype ixaudio2voice: IXAudio2Voice, + using ixaudio2sourcevoice_vtable: ^IXAudio2SourceVoice_VTable, +} +IXAudio2SourceVoice_VTable :: struct { + using ixaudio2voice_vtable: IXAudio2Voice_VTable, + + // NAME: IXAudio2SourceVoice.Start + // DESCRIPTION: Makes this voice start consuming and processing audio. + // ARGUMENTS: + // Flags - Flags controlling how the voice should be started. + // OperationSet - Used to identify this call as part of a deferred batch. + Start: proc "system" (this: ^IXAudio2SourceVoice, Flags: FLAGS = {}, OperationSet: u32 = COMMIT_NOW) -> HRESULT, + + // NAME: IXAudio2SourceVoice.Stop + // DESCRIPTION: Makes this voice stop consuming audio. + // ARGUMENTS: + // Flags - Flags controlling how the voice should be stopped. + // OperationSet - Used to identify this call as part of a deferred batch. + Stop: proc "system" (this: ^IXAudio2SourceVoice, Flags: FLAGS = {}, OperationSet: u32 = COMMIT_NOW) -> HRESULT, + + // NAME: IXAudio2SourceVoice.SubmitSourceBuffer + // DESCRIPTION: Adds a new audio buffer to this voice's input queue. + // ARGUMENTS: + // pBuffer - Pointer to the buffer structure to be queued. + // pBufferWMA - Additional structure used only when submitting XWMA data. + SubmitSourceBuffer: proc "system" (this: ^IXAudio2SourceVoice, pBuffer: ^BUFFER, pBufferWMA: ^BUFFER_WMA = nil) -> HRESULT, + + // NAME: IXAudio2SourceVoice.FlushSourceBuffers + // DESCRIPTION: Removes all pending audio buffers from this voice's queue. + FlushSourceBuffers: proc "system" (this: ^IXAudio2SourceVoice) -> HRESULT, + + // NAME: IXAudio2SourceVoice.Discontinuity + // DESCRIPTION: Notifies the voice of an intentional break in the stream of audio buffers (e.g. the end of a sound), to prevent XAudio2 from interpreting an empty buffer queue as a glitch. + Discontinuity: proc "system" (this: ^IXAudio2SourceVoice) -> HRESULT, + + // NAME: IXAudio2SourceVoice.ExitLoop + // DESCRIPTION: Breaks out of the current loop when its end is reached. + // ARGUMENTS: + // OperationSet - Used to identify this call as part of a deferred batch. + ExitLoop: proc "system" (this: ^IXAudio2SourceVoice, OperationSet: u32 = COMMIT_NOW) -> HRESULT, + + // NAME: IXAudio2SourceVoice.GetState + // DESCRIPTION: Returns the number of buffers currently queued on this voice, the pContext value associated with the currently processing buffer (if any), and other voice state information. + // ARGUMENTS: + // pVoiceState - Returns the state information. + // Flags - Flags controlling what voice state is returned. + GetState: proc "system" (this: ^IXAudio2SourceVoice, pVoiceState: ^VOICE_STATE, Flags: FLAGS = {}), + + // NAME: IXAudio2SourceVoice.SetFrequencyRatio + // DESCRIPTION: Sets this voice's frequency adjustment, i.e. its pitch. + // ARGUMENTS: + // Ratio - Frequency change, expressed as source frequency / target frequency. + // OperationSet - Used to identify this call as part of a deferred batch. + SetFrequencyRatio: proc "system" (this: ^IXAudio2SourceVoice, Ratio: f32, OperationSet: u32 = COMMIT_NOW) -> HRESULT, + + // NAME: IXAudio2SourceVoice.GetFrequencyRatio + // DESCRIPTION: Returns this voice's current frequency adjustment ratio. + // ARGUMENTS: + // pRatio - Returns the frequency adjustment. + GetFrequencyRatio: proc "system" (this: ^IXAudio2SourceVoice, pRatio: ^f32), + + // NAME: IXAudio2SourceVoice.SetSourceSampleRate + // DESCRIPTION: Reconfigures this voice to treat its source data as being at a different sample rate than the original one specified in CreateSourceVoice's pSourceFormat argument. + // ARGUMENTS: + // UINT32 - The intended sample rate of further submitted source data. + SetSourceSampleRate: proc "system" (this: ^IXAudio2SourceVoice, NewSourceSampleRate: u32) -> HRESULT, +} + +/************************************************************************** + * + * IXAudio2SubmixVoice: Submixing voice management interface. + * + **************************************************************************/ + +IXAudio2SubmixVoice :: struct #raw_union { + #subtype ixaudio2voice: IXAudio2Voice, + using ixaudio2submixvoice_vtable: ^IXAudio2SubmixVoice_VTable, +} +IXAudio2SubmixVoice_VTable :: struct { + using ixaudio2voice_vtable: IXAudio2Voice_VTable, + // There are currently no methods specific to submix voices. +} + + /************************************************************************** + * + * IXAudio2MasteringVoice: Mastering voice management interface. + * + **************************************************************************/ + +IXAudio2MasteringVoice :: struct #raw_union { + #subtype ixaudio2voice: IXAudio2Voice, + using ixaudio2masteringvoice_vtable: ^IXAudio2MasteringVoice_VTable, +} +IXAudio2MasteringVoice_VTable :: struct { + using ixaudio2voice_vtable: IXAudio2Voice_VTable, + + // NAME: IXAudio2MasteringVoice.GetChannelMask + // DESCRIPTION: Returns the channel mask for this voice + // ARGUMENTS: + // pChannelMask - returns the channel mask for this voice. This corresponds to the dwChannelMask member of WAVEFORMATEXTENSIBLE. + GetChannelMask: proc "system" (this: ^IXAudio2MasteringVoice, pChannelmask: ^win.DWORD) -> HRESULT, +} + +/************************************************************************** + * + * IXAudio2EngineCallback: Client notification interface for engine events. + * + * REMARKS: Contains methods to notify the client when certain events happen in the XAudio2 engine. This interface should be implemented by the client. + * XAudio2 will call these methods via the interface pointer provided by the client when it calls IXAudio2.RegisterForCallbacks. + * + **************************************************************************/ + +IXAudio2EngineCallback :: struct { + using ixaudio2enginecallback_vtable: ^IXAudio2EngineCallback_VTable, +} +IXAudio2EngineCallback_VTable :: struct { + // Called by XAudio2 just before an audio processing pass begins. + OnProcessingPassStart: proc "system" (this: ^IXAudio2EngineCallback), + + // Called just after an audio processing pass ends. + OnProcessingPassEnd: proc "system" (this: ^IXAudio2EngineCallback), + + // Called in the event of a critical system error which requires XAudio2 to be closed down and restarted. The error code is given in Error. + OnCriticalError: proc "system" (this: ^IXAudio2EngineCallback, Error: HRESULT), +} + + /************************************************************************** + * + * IXAudio2VoiceCallback: Client notification interface for voice events. + * + * REMARKS: Contains methods to notify the client when certain events happen in an XAudio2 voice. This interface should be implemented by the client. + * XAudio2 will call these methods via an interface pointer provided by the client in the IXAudio2.CreateSourceVoice call. + * + **************************************************************************/ + +IXAudio2VoiceCallback :: struct { + using ixaudio2voicecallback_vtable: ^IXAudio2VoiceCallback_VTable, +} +IXAudio2VoiceCallback_VTable :: struct { + // Called just before this voice's processing pass begins. + OnVoiceProcessingPassStart: proc "system" (this: ^IXAudio2VoiceCallback, BytesRequired: u32), + + // Called just after this voice's processing pass ends. + OnVoiceProcessingPassEnd: proc "system" (this: ^IXAudio2VoiceCallback), + + // Called when this voice has just finished playing a buffer stream (as marked with the END_OF_STREAM flag on the last buffer). + OnStreamEnd: proc "system" (this: ^IXAudio2VoiceCallback), + + // Called when this voice is about to start processing a new buffer. + OnBufferStart: proc "system" (this: ^IXAudio2VoiceCallback, pBufferContext: rawptr), + + // Called when this voice has just finished processing a buffer. + // The buffer can now be reused or destroyed. + OnBufferEnd: proc "system" (this: ^IXAudio2VoiceCallback, pBufferContext: rawptr), + + // Called when this voice has just reached the end position of a loop. + OnLoopEnd: proc "system" (this: ^IXAudio2VoiceCallback, pBufferContext: rawptr), + + // Called in the event of a critical error during voice processing, such as a failing xAPO or an error from the hardware XMA decoder. + // The voice may have to be destroyed and re-created to recover from the error. + // The callback arguments report which buffer was being processed when the error occurred, and its HRESULT code. + OnVoiceError: proc "system" (this: ^IXAudio2VoiceCallback, pBufferContext: rawptr, Error: HRESULT), +} + +/************************************************************************** + * + * XAudio2Create: Top-level function that creates an XAudio2 instance. + * + * ARGUMENTS: + * + * Flags - Flags specifying the XAudio2 object's behavior. + * + * XAudio2Processor - A PROCESSOR_FLAGS value that specifies the hardware threads (Xbox) or processors (Windows) that XAudio2 will use. + * Note that XAudio2 supports concurrent processing on multiple threads, using any combination of PROCESSOR_FLAGS flags. + * The values are platform-specific; platform-independent code can use USE_DEFAULT_PROCESSOR to use the default on each platform. + * + **************************************************************************/ + +// We're an xaudio2 client +@(default_calling_convention="system", link_prefix="XAudio2") +foreign xa2 { + Create :: proc(ppXAudio2: ^^IXAudio2, Flags: FLAGS = {}, XAudio2Processor: PROCESSOR_FLAGS = USE_DEFAULT_PROCESSOR) -> HRESULT --- +} + + +/************************************************************************** + * + * Utility functions used to convert from pitch in semitones and volume in decibels to the frequency and amplitude ratio units used by XAudio2. + * + **************************************************************************/ + +// Calculate the argument to SetVolume from a decibel value +DecibelsToAmplitudeRatio :: proc "contextless" (Decibels: f32) -> f32 { + return math.pow_f32(10.0, Decibels / 20.0) +} + +// Recover a volume in decibels from an amplitude factor +AmplitudeRatioToDecibels :: proc "contextless" (Volume: f32) -> f32 { + if Volume == 0 { + return min(f32) + } + return 20.0 * math.log10_f32(Volume) +} + +// Calculate the argument to SetFrequencyRatio from a semitone value +SemitonesToFrequencyRatio :: proc "contextless" (Semitones: f32) -> f32 { + // FrequencyRatio = 2 ^ Octaves + // = 2 ^ (Semitones / 12) + return math.pow_f32(2.0, Semitones / 12.0) +} + +// Recover a pitch in semitones from a frequency ratio +FrequencyRatioToSemitones :: proc "contextless" (FrequencyRatio: f32) -> f32 { + // Semitones = 12 * log2(FrequencyRatio) + // = 12 * log2(10) * log10(FrequencyRatio) + return 12.0 * math.log2_f32(FrequencyRatio) +} + +// Convert from filter cutoff frequencies expressed in Hertz to the radian frequency values used in FILTER_PARAMETERS.Frequency, state-variable filter types only. +// Use CutoffFrequencyToOnePoleCoefficient() for one-pole filter types. +// Note that the highest CutoffFrequency supported is SampleRate/6. +// Higher values of CutoffFrequency will return MAX_FILTER_FREQUENCY. +CutoffFrequencyToRadians :: proc "contextless" (CutoffFrequency: f32, SampleRate: u32) -> f32 { + if u32(CutoffFrequency * 6.0) >= SampleRate { + return MAX_FILTER_FREQUENCY + } + return 2.0 * math.sin_f32(math.PI * CutoffFrequency / f32(SampleRate)) +} + +// Convert from radian frequencies back to absolute frequencies in Hertz +RadiansToCutoffFrequency :: proc "contextless" (Radians: f32, SampleRate: f32) -> f32 { + return SampleRate * math.asin_f32(Radians / 2.0) / math.PI +} + +// Convert from filter cutoff frequencies expressed in Hertz to the filter coefficients used with FILTER_PARAMETERS.Frequency, +// LowPassOnePoleFilter and HighPassOnePoleFilter filter types only. +// Use CutoffFrequencyToRadians() for state-variable filter types. +CutoffFrequencyToOnePoleCoefficient :: proc "contextless" (CutoffFrequency: f32, SampleRate: u32) -> f32 { + if u32(CutoffFrequency) >= SampleRate { + return MAX_FILTER_FREQUENCY + } + return 1.0 - math.pow_f32(1.0 - 2.0 * CutoffFrequency / f32(SampleRate), 2.0) +} + +//------------------------------------------------------------------------- +// Description: Audio stream categories +// +// Other - All other streams (default) +// ForegroundOnlyMedia - (deprecated for Win10) Music, Streaming audio +// BackgroundCapableMedia - (deprecated for Win10) Video with audio +// Communications - VOIP, chat, phone call +// Alerts - Alarm, Ring tones +// SoundEffects - Sound effects, clicks, dings +// GameEffects - Game sound effects +// GameMedia - Background audio for games +// GameChat - In game player chat +// Speech - Speech recognition +// Media - Music, Streaming audio +// Movie - Video with audio +// FarFieldSpeech - Capture of far field speech +// UniformSpeech - Uniform, device agnostic speech processing +// VoiceTyping - Dictation, typing by voice +// +AUDIO_STREAM_CATEGORY :: enum i32 { + Other = 0, + //ForegroundOnlyMedia = 1, + //BackgroundCapableMedia = 2, + Communications = 3, + Alerts = 4, + SoundEffects = 5, + GameEffects = 6, + GameMedia = 7, + GameChat = 8, + Speech = 9, + Movie = 10, + Media = 11, + FarFieldSpeech = 12, + UniformSpeech = 13, + VoiceTyping = 14, +} diff --git a/vendor/windows/XAudio2/xaudio2fx.odin b/vendor/windows/XAudio2/xaudio2fx.odin new file mode 100644 index 000000000..a875b5516 --- /dev/null +++ b/vendor/windows/XAudio2/xaudio2fx.odin @@ -0,0 +1,287 @@ +#+build windows + +package windows_xaudio2 + +import "core:math" + +foreign import xa2 "system:xaudio2.lib" + +CLSID_AudioVolumeMeter_UUID_STRING :: "4FC3B166-972A-40CF-BC37-7DB03DB2FBA3" +CLSID_AudioVolumeMeter_UUID := &IID{0x4FC3B166, 0x972A, 0x40CF, {0xBC, 0x37, 0x7D, 0xB0, 0x3D, 0xB2, 0xFB, 0xA3}} + +CLSID_AudioReverb_UUID_STRING :: "C2633B16-471B-4498-B8C5-4F0959E2EC09" +CLSID_AudioReverb_UUID := &IID{0xC2633B16, 0x471B, 0x4498, {0xB8, 0xC5, 0x4F, 0x09, 0x59, 0xE2, 0xEC, 0x09}} + +/************************************************************************** + * + * Effect creation functions. + * + * On Xbox the application can link with the debug library to use the debug + * functionality. + * + **************************************************************************/ + + @(default_calling_convention="system", link_prefix="XAudio2") +foreign xa2 { + CreateAudioVolumeMeter :: proc(ppApo: ^^IUnknown) -> HRESULT --- + CreateAudioReverb :: proc(ppApo: ^^IUnknown) -> HRESULT --- +} + +/************************************************************************** + * + * Volume meter parameters. + * The volume meter supports f32 audio formats and must be used in-place. + * + **************************************************************************/ + +// VOLUMEMETER_LEVELS: Receives results from GetEffectParameters(). +// The user is responsible for allocating pPeakLevels, pRMSLevels, and initializing ChannelCount accordingly. +// The volume meter does not support SetEffectParameters(). +VOLUMEMETER_LEVELS :: struct { + pPeakLevels: [^]f32, // Peak levels table: receives maximum absolute level for each channel over a processing pass, may be NULL if pRMSLevls != NULL, otherwise must have at least ChannelCount elements. + pRMSLevels: [^]f32, // Root mean square levels table: receives RMS level for each channel over a processing pass, may be NULL if pPeakLevels != NULL, otherwise must have at least ChannelCount elements. + ChannelCount: u32, // Number of channels being processed by the volume meter APO +} + +/************************************************************************** + * + * Reverb parameters. + * The reverb supports only f32 audio with the following channel configurations: + * Input: Mono Output: Mono + * Input: Mono Output: 5.1 + * Input: Stereo Output: Stereo + * Input: Stereo Output: 5.1 + * The framerate must be within [20000, 48000] Hz. + * + * When using mono input, delay filters associated with the right channel are not executed. + * In this case, parameters such as PositionRight and PositionMatrixRight have no effect. + * This also means the reverb uses less CPU when hosted in a mono submix. + * + **************************************************************************/ + +REVERB_MIN_FRAMERATE :: 20000 +REVERB_MAX_FRAMERATE :: 48000 + +// REVERB_PARAMETERS: Native parameter set for the reverb effect + +REVERB_PARAMETERS :: struct { + // ratio of wet (processed) signal to dry (original) signal + WetDryMix: f32, // [0, 100] (percentage) + // Delay times + ReflectionsDelay: u32, // [0, 300] in ms + ReverbDelay: byte, // [0, 85] in ms + RearDelay: byte, // 7.1: [0, 20] in ms, all other: [0, 5] in ms + SideDelay: byte, // 7.1: [0, 5] in ms, all other: not used, but still validated + // Indexed parameters + PositionLeft: byte, // [0, 30] no units + PositionRight: byte, // [0, 30] no units, ignored when configured to mono + PositionMatrixLeft: byte, // [0, 30] no units + PositionMatrixRight: byte, // [0, 30] no units, ignored when configured to mono + EarlyDiffusion: byte, // [0, 15] no units + LateDiffusion: byte, // [0, 15] no units + LowEQGain: byte, // [0, 12] no units + LowEQCutoff: byte, // [0, 9] no units + HighEQGain: byte, // [0, 8] no units + HighEQCutoff: byte, // [0, 14] no units + // Direct parameters + RoomFilterFreq: f32, // [20, 20000] in Hz + RoomFilterMain: f32, // [-100, 0] in dB + RoomFilterHF: f32, // [-100, 0] in dB + ReflectionsGain: f32, // [-100, 20] in dB + ReverbGain: f32, // [-100, 20] in dB + DecayTime: f32, // [0.1, inf] in seconds + Density: f32, // [0, 100] (percentage) + RoomSize: f32, // [1, 100] in feet + // component control + DisableLateField: bool, // TRUE to disable late field reflections +} + +// Maximum, minimum and default values for the parameters above +REVERB_MIN_WET_DRY_MIX :: 0.0 +REVERB_MIN_REFLECTIONS_DELAY :: 0 +REVERB_MIN_REVERB_DELAY :: 0 +REVERB_MIN_REAR_DELAY :: 0 +REVERB_MIN_7POINT1_SIDE_DELAY :: 0 +REVERB_MIN_7POINT1_REAR_DELAY :: 0 +REVERB_MIN_POSITION :: 0 +REVERB_MIN_DIFFUSION :: 0 +REVERB_MIN_LOW_EQ_GAIN :: 0 +REVERB_MIN_LOW_EQ_CUTOFF :: 0 +REVERB_MIN_HIGH_EQ_GAIN :: 0 +REVERB_MIN_HIGH_EQ_CUTOFF :: 0 +REVERB_MIN_ROOM_FILTER_FREQ :: 20.0 +REVERB_MIN_ROOM_FILTER_MAIN :: -100.0 +REVERB_MIN_ROOM_FILTER_HF :: -100.0 +REVERB_MIN_REFLECTIONS_GAIN :: -100.0 +REVERB_MIN_REVERB_GAIN :: -100.0 +REVERB_MIN_DECAY_TIME :: 0.1 +REVERB_MIN_DENSITY :: 0.0 +REVERB_MIN_ROOM_SIZE :: 0.0 + +REVERB_MAX_WET_DRY_MIX :: 100.0 +REVERB_MAX_REFLECTIONS_DELAY :: 300 +REVERB_MAX_REVERB_DELAY :: 85 +REVERB_MAX_REAR_DELAY :: 5 +REVERB_MAX_7POINT1_SIDE_DELAY :: 5 +REVERB_MAX_7POINT1_REAR_DELAY :: 20 +REVERB_MAX_POSITION :: 30 +REVERB_MAX_DIFFUSION :: 15 +REVERB_MAX_LOW_EQ_GAIN :: 12 +REVERB_MAX_LOW_EQ_CUTOFF :: 9 +REVERB_MAX_HIGH_EQ_GAIN :: 8 +REVERB_MAX_HIGH_EQ_CUTOFF :: 14 +REVERB_MAX_ROOM_FILTER_FREQ :: 20000.0 +REVERB_MAX_ROOM_FILTER_MAIN :: 0.0 +REVERB_MAX_ROOM_FILTER_HF :: 0.0 +REVERB_MAX_REFLECTIONS_GAIN :: 20.0 +REVERB_MAX_REVERB_GAIN :: 20.0 +REVERB_MAX_DENSITY :: 100.0 +REVERB_MAX_ROOM_SIZE :: 100.0 + +REVERB_DEFAULT_WET_DRY_MIX :: 100.0 +REVERB_DEFAULT_REFLECTIONS_DELAY :: 5 +REVERB_DEFAULT_REVERB_DELAY :: 5 +REVERB_DEFAULT_REAR_DELAY :: 5 +REVERB_DEFAULT_7POINT1_SIDE_DELAY :: 5 +REVERB_DEFAULT_7POINT1_REAR_DELAY :: 20 +REVERB_DEFAULT_POSITION :: 6 +REVERB_DEFAULT_POSITION_MATRIX :: 27 +REVERB_DEFAULT_EARLY_DIFFUSION :: 8 +REVERB_DEFAULT_LATE_DIFFUSION :: 8 +REVERB_DEFAULT_LOW_EQ_GAIN :: 8 +REVERB_DEFAULT_LOW_EQ_CUTOFF :: 4 +REVERB_DEFAULT_HIGH_EQ_GAIN :: 8 +REVERB_DEFAULT_HIGH_EQ_CUTOFF :: 4 +REVERB_DEFAULT_ROOM_FILTER_FREQ :: 5000.0 +REVERB_DEFAULT_ROOM_FILTER_MAIN :: 0.0 +REVERB_DEFAULT_ROOM_FILTER_HF :: 0.0 +REVERB_DEFAULT_REFLECTIONS_GAIN :: 0.0 +REVERB_DEFAULT_REVERB_GAIN :: 0.0 +REVERB_DEFAULT_DECAY_TIME :: 1.0 +REVERB_DEFAULT_DENSITY :: 100.0 +REVERB_DEFAULT_ROOM_SIZE :: 100.0 +REVERB_DEFAULT_DISABLE_LATE_FIELD :: false + +// REVERB_I3DL2_PARAMETERS: Parameter set compliant with the I3DL2 standard + +REVERB_I3DL2_PARAMETERS :: struct { + // ratio of wet (processed) signal to dry (original) signal + WetDryMix: f32, // [0, 100] (percentage) + + // Standard I3DL2 parameters + Room: i32, // [-10000, 0] in mB (hundredths of decibels) + RoomHF: i32, // [-10000, 0] in mB (hundredths of decibels) + RoomRolloffFactor: f32, // [0.0, 10.0] + DecayTime: f32, // [0.1, 20.0] in seconds + DecayHFRatio: f32, // [0.1, 2.0] + Reflections: i32, // [-10000, 1000] in mB (hundredths of decibels) + ReflectionsDelay: f32, // [0.0, 0.3] in seconds + Reverb: i32, // [-10000, 2000] in mB (hundredths of decibels) + ReverbDelay: f32, // [0.0, 0.1] in seconds + Diffusion: f32, // [0.0, 100.0] (percentage) + Density: f32, // [0.0, 100.0] (percentage) + HFReference: f32, // [20.0, 20000.0] in Hz +} + +/************************************************************************** + * + * Standard I3DL2 reverb presets (100% wet). + * + **************************************************************************/ + +I3DL2_PRESET_DEFAULT := REVERB_I3DL2_PARAMETERS{100.0,-10000, 0,0.0, 1.00,0.50,-10000,0.020,-10000,0.040,100.0,100.0,5000.0} +I3DL2_PRESET_GENERIC := REVERB_I3DL2_PARAMETERS{100.0, -1000, -100,0.0, 1.49,0.83, -2602,0.007, 200,0.011,100.0,100.0,5000.0} +I3DL2_PRESET_PADDEDCELL := REVERB_I3DL2_PARAMETERS{100.0, -1000,-6000,0.0, 0.17,0.10, -1204,0.001, 207,0.002,100.0,100.0,5000.0} +I3DL2_PRESET_ROOM := REVERB_I3DL2_PARAMETERS{100.0, -1000, -454,0.0, 0.40,0.83, -1646,0.002, 53,0.003,100.0,100.0,5000.0} +I3DL2_PRESET_BATHROOM := REVERB_I3DL2_PARAMETERS{100.0, -1000,-1200,0.0, 1.49,0.54, -370,0.007, 1030,0.011,100.0, 60.0,5000.0} +I3DL2_PRESET_LIVINGROOM := REVERB_I3DL2_PARAMETERS{100.0, -1000,-6000,0.0, 0.50,0.10, -1376,0.003, -1104,0.004,100.0,100.0,5000.0} +I3DL2_PRESET_STONEROOM := REVERB_I3DL2_PARAMETERS{100.0, -1000, -300,0.0, 2.31,0.64, -711,0.012, 83,0.017,100.0,100.0,5000.0} +I3DL2_PRESET_AUDITORIUM := REVERB_I3DL2_PARAMETERS{100.0, -1000, -476,0.0, 4.32,0.59, -789,0.020, -289,0.030,100.0,100.0,5000.0} +I3DL2_PRESET_CONCERTHALL := REVERB_I3DL2_PARAMETERS{100.0, -1000, -500,0.0, 3.92,0.70, -1230,0.020, -2,0.029,100.0,100.0,5000.0} +I3DL2_PRESET_CAVE := REVERB_I3DL2_PARAMETERS{100.0, -1000, 0,0.0, 2.91,1.30, -602,0.015, -302,0.022,100.0,100.0,5000.0} +I3DL2_PRESET_ARENA := REVERB_I3DL2_PARAMETERS{100.0, -1000, -698,0.0, 7.24,0.33, -1166,0.020, 16,0.030,100.0,100.0,5000.0} +I3DL2_PRESET_HANGAR := REVERB_I3DL2_PARAMETERS{100.0, -1000,-1000,0.0,10.05,0.23, -602,0.020, 198,0.030,100.0,100.0,5000.0} +I3DL2_PRESET_CARPETEDHALLWAY := REVERB_I3DL2_PARAMETERS{100.0, -1000,-4000,0.0, 0.30,0.10, -1831,0.002, -1630,0.030,100.0,100.0,5000.0} +I3DL2_PRESET_HALLWAY := REVERB_I3DL2_PARAMETERS{100.0, -1000, -300,0.0, 1.49,0.59, -1219,0.007, 441,0.011,100.0,100.0,5000.0} +I3DL2_PRESET_STONECORRIDOR := REVERB_I3DL2_PARAMETERS{100.0, -1000, -237,0.0, 2.70,0.79, -1214,0.013, 395,0.020,100.0,100.0,5000.0} +I3DL2_PRESET_ALLEY := REVERB_I3DL2_PARAMETERS{100.0, -1000, -270,0.0, 1.49,0.86, -1204,0.007, -4,0.011,100.0,100.0,5000.0} +I3DL2_PRESET_FOREST := REVERB_I3DL2_PARAMETERS{100.0, -1000,-3300,0.0, 1.49,0.54, -2560,0.162, -613,0.088, 79.0,100.0,5000.0} +I3DL2_PRESET_CITY := REVERB_I3DL2_PARAMETERS{100.0, -1000, -800,0.0, 1.49,0.67, -2273,0.007, -2217,0.011, 50.0,100.0,5000.0} +I3DL2_PRESET_MOUNTAINS := REVERB_I3DL2_PARAMETERS{100.0, -1000,-2500,0.0, 1.49,0.21, -2780,0.300, -2014,0.100, 27.0,100.0,5000.0} +I3DL2_PRESET_QUARRY := REVERB_I3DL2_PARAMETERS{100.0, -1000,-1000,0.0, 1.49,0.83,-10000,0.061, 500,0.025,100.0,100.0,5000.0} +I3DL2_PRESET_PLAIN := REVERB_I3DL2_PARAMETERS{100.0, -1000,-2000,0.0, 1.49,0.50, -2466,0.179, -2514,0.100, 21.0,100.0,5000.0} +I3DL2_PRESET_PARKINGLOT := REVERB_I3DL2_PARAMETERS{100.0, -1000, 0,0.0, 1.65,1.50, -1363,0.008, -1153,0.012,100.0,100.0,5000.0} +I3DL2_PRESET_SEWERPIPE := REVERB_I3DL2_PARAMETERS{100.0, -1000,-1000,0.0, 2.81,0.14, 429,0.014, 648,0.021, 80.0, 60.0,5000.0} +I3DL2_PRESET_UNDERWATER := REVERB_I3DL2_PARAMETERS{100.0, -1000,-4000,0.0, 1.49,0.10, -449,0.007, 1700,0.011,100.0,100.0,5000.0} +I3DL2_PRESET_SMALLROOM := REVERB_I3DL2_PARAMETERS{100.0, -1000, -600,0.0, 1.10,0.83, -400,0.005, 500,0.010,100.0,100.0,5000.0} +I3DL2_PRESET_MEDIUMROOM := REVERB_I3DL2_PARAMETERS{100.0, -1000, -600,0.0, 1.30,0.83, -1000,0.010, -200,0.020,100.0,100.0,5000.0} +I3DL2_PRESET_LARGEROOM := REVERB_I3DL2_PARAMETERS{100.0, -1000, -600,0.0, 1.50,0.83, -1600,0.020, -1000,0.040,100.0,100.0,5000.0} +I3DL2_PRESET_MEDIUMHALL := REVERB_I3DL2_PARAMETERS{100.0, -1000, -600,0.0, 1.80,0.70, -1300,0.015, -800,0.030,100.0,100.0,5000.0} +I3DL2_PRESET_LARGEHALL := REVERB_I3DL2_PARAMETERS{100.0, -1000, -600,0.0, 1.80,0.70, -2000,0.030, -1400,0.060,100.0,100.0,5000.0} +I3DL2_PRESET_PLATE := REVERB_I3DL2_PARAMETERS{100.0, -1000, -200,0.0, 1.30,0.90, 0,0.002, 0,0.010,100.0, 75.0,5000.0} + +// ReverbConvertI3DL2ToNative: Utility function to map from I3DL2 to native parameters + +ReverbConvertI3DL2ToNative :: proc "contextless" (pI3DL2: ^REVERB_I3DL2_PARAMETERS, pNative: ^REVERB_PARAMETERS, sevenDotOneReverb: bool = true) { + reflectionsDelay: f32 + reverbDelay: f32 + + // RoomRolloffFactor is ignored + + // These parameters have no equivalent in I3DL2 + if sevenDotOneReverb { + pNative.RearDelay = REVERB_DEFAULT_7POINT1_REAR_DELAY // 20 + } else { + pNative.RearDelay = REVERB_DEFAULT_REAR_DELAY // 5 + } + pNative.SideDelay = REVERB_DEFAULT_7POINT1_SIDE_DELAY // 5 + pNative.PositionLeft = REVERB_DEFAULT_POSITION // 6 + pNative.PositionRight = REVERB_DEFAULT_POSITION // 6 + pNative.PositionMatrixLeft = REVERB_DEFAULT_POSITION_MATRIX // 27 + pNative.PositionMatrixRight = REVERB_DEFAULT_POSITION_MATRIX // 27 + pNative.RoomSize = REVERB_DEFAULT_ROOM_SIZE // 100 + pNative.LowEQCutoff = 4 + pNative.HighEQCutoff = 6 + + // The rest of the I3DL2 parameters map to the native property set + pNative.RoomFilterMain = f32(pI3DL2.Room) / 100.0 + pNative.RoomFilterHF = f32(pI3DL2.RoomHF) / 100.0 + + if pI3DL2.DecayHFRatio >= 1.0 { + index := i32(-4.0 * math.log10_f32(pI3DL2.DecayHFRatio)) + if index < -8 do index = -8 + pNative.LowEQGain = byte((index < 0) ? index + 8 : 8) + pNative.HighEQGain = 8 + pNative.DecayTime = pI3DL2.DecayTime * pI3DL2.DecayHFRatio + } else { + index := i32(4.0 * math.log10_f32(pI3DL2.DecayHFRatio)) + if index < -8 do index = -8 + pNative.LowEQGain = 8 + pNative.HighEQGain = byte((index < 0) ? index + 8 : 8) + pNative.DecayTime = pI3DL2.DecayTime + } + + reflectionsDelay = pI3DL2.ReflectionsDelay * 1000.0 + if reflectionsDelay >= REVERB_MAX_REFLECTIONS_DELAY { // 300 + reflectionsDelay = f32(REVERB_MAX_REFLECTIONS_DELAY - 1) + } else if reflectionsDelay <= 1 { + reflectionsDelay = 1 + } + pNative.ReflectionsDelay = u32(reflectionsDelay) + + reverbDelay = pI3DL2.ReverbDelay * 1000.0 + if reverbDelay >= REVERB_MAX_REVERB_DELAY { // 85 + reverbDelay = f32(REVERB_MAX_REVERB_DELAY - 1) + } + pNative.ReverbDelay = byte(reverbDelay) + + pNative.ReflectionsGain = f32(pI3DL2.Reflections) / 100.0 + pNative.ReverbGain = f32(pI3DL2.Reverb) / 100.0 + pNative.EarlyDiffusion = byte(15.0 * pI3DL2.Diffusion / 100.0) + pNative.LateDiffusion = pNative.EarlyDiffusion + pNative.Density = pI3DL2.Density + pNative.RoomFilterFreq = pI3DL2.HFReference + + pNative.WetDryMix = pI3DL2.WetDryMix + pNative.DisableLateField = false +} From 2dc5653fd13de2a92809ff41ab68a005141899ff Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Mon, 28 Apr 2025 14:58:53 -0400 Subject: [PATCH 014/120] Name fixes --- src/check_builtin.cpp | 6 +++--- src/llvm_backend.cpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index 099f99045..3e531a309 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -418,14 +418,14 @@ gb_internal bool check_builtin_objc_procedure(CheckerContext *c, Operand *operan self_type->Named.type_name != nullptr && self_type->Named.type_name->TypeName.objc_class_name != "")) { gbString t = type_to_string(self_type); - error(self.expr, "'%.*s' expected a named type with the attribute @(obj_class=) , got type %s", LIT(builtin_name), t); + error(self.expr, "'%.*s' expected a named type with the attribute @(objc_class=) , got type %s", LIT(builtin_name), t); gb_string_free(t); return false; } if (self_type->Named.type_name->TypeName.objc_ivar == nullptr) { gbString t = type_to_string(self_type); - error(self.expr, "'%.*s' requires that type %s have the attribute @(obj_ivar=).", LIT(builtin_name), t); + error(self.expr, "'%.*s' requires that type %s have the attribute @(objc_ivar=).", LIT(builtin_name), t); gb_string_free(t); return false; } @@ -442,7 +442,7 @@ gb_internal bool check_builtin_objc_procedure(CheckerContext *c, Operand *operan gbString name_self = type_to_string(self_type); gbString name_expected = type_to_string(self_type->Named.type_name->TypeName.objc_ivar); gbString name_given = type_to_string(ivar_type); - error(self.expr, "'%.*s' ivar type %s does not match @obj_ivar type %s on Objective-C class %s.", + error(self.expr, "'%.*s' ivar type %s does not match @objc_ivar type %s on Objective-C class %s.", LIT(builtin_name), name_given, name_expected, name_self); gb_string_free(name_self); gb_string_free(name_expected); diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index aec8b7fc5..339e7fca7 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1685,7 +1685,7 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { if (is_context_provider_ivar) { // The context provider takes the ivar's type. - // Emit an obj_ivar_get call and use that pointer for 'self' instead. + // Emit an objc_ivar_get call and use that pointer for 'self' instead. lbValue real_self { wrapper_proc->raw_input_parameters[0], class_ptr_type From 5097e98da2be6fc799d3d1320e09d0cabcb591ad Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Wed, 30 Apr 2025 19:10:51 -0400 Subject: [PATCH 015/120] Better Objective-C object superclass cycle check --- src/check_decl.cpp | 80 ++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 41 deletions(-) diff --git a/src/check_decl.cpp b/src/check_decl.cpp index 48e5172d6..c6746f3eb 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -526,17 +526,18 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, check_decl_attributes(ctx, decl->attributes, type_decl_attribute, &ac); if (e->kind == Entity_TypeName && ac.objc_class != "") { e->TypeName.objc_class_name = ac.objc_class; - e->TypeName.objc_superclass = ac.objc_superclass; - e->TypeName.objc_ivar = ac.objc_ivar; - e->TypeName.objc_context_provider = ac.objc_context_provider; if (ac.objc_is_implementation) { - e->TypeName.objc_is_implementation = true; - mpsc_enqueue(&ctx->info->objc_class_implementations, e); // TODO(harold): Don't need this for anything? See if needed when using explicit @export + e->TypeName.objc_is_implementation = ac.objc_is_implementation; + e->TypeName.objc_superclass = ac.objc_superclass; + e->TypeName.objc_ivar = ac.objc_ivar; + e->TypeName.objc_context_provider = ac.objc_context_provider; + + mpsc_enqueue(&ctx->info->objc_class_implementations, e); GB_ASSERT(e->TypeName.objc_ivar == nullptr || e->TypeName.objc_ivar->kind == Type_Named); - // Enqueue the proc to be checked when resolved + // Enqueue the contex_provider proc to be checked after it is resolved if (e->TypeName.objc_context_provider != nullptr) { mpsc_enqueue(&ctx->checker->procs_with_objc_context_provider_to_check, e); } @@ -544,47 +545,44 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, // @TODO(harold): I think there's a Check elsewhere in the checker for checking cycles. // See about moving this to the right location. // Ensure superclass hierarchy are all Objective-C classes and does not cycle + + // NOTE(harold): We check for superclass unconditionally (before checking if super is null) + // because this should be the case 99.99% of the time. Not subclassing something that + // is, or is the child of, NSObject means the objc runtime messaging will not properly work on this type. + TypeSet super_set{}; + type_set_init(&super_set, 8); + defer (type_set_destroy(&super_set)); + + type_set_update(&super_set, e->type); + Type *super = ac.objc_superclass; - if (super != nullptr) { - TypeSet super_set{}; - type_set_init(&super_set, 8); - defer (type_set_destroy(&super_set)); - - type_set_update(&super_set, e->type); - - for (;;) { - if (type_set_update(&super_set, super)) { - error(e->token, "@(objc_superclass) Superclass hierarchy cycle encountered"); - break; - } - - if (super->kind != Type_Named) { - error(e->token, "@(objc_superclass) References type must be a named struct."); - break; - } - - Type* named_type = base_type(super->Named.type_name->type); - if (!is_type_objc_object(named_type)) { - error(e->token, "@(objc_superclass) Superclass must be an Objective-C class."); - break; - } - - super = super->Named.type_name->TypeName.objc_superclass; - if (super == nullptr) { - break; - } - - // TODO(harold): Is this the right way to do this??? The referenced entity must be already resolved - // so that we can access its objc_superclass attribute - check_single_global_entity(ctx->checker, super->Named.type_name, super->Named.type_name->decl_info); + while (super != nullptr) { + if (type_set_update(&super_set, super)) { + error(e->token, "@(objc_superclass) Superclass hierarchy cycle encountered"); + break; } + + check_single_global_entity(ctx->checker, super->Named.type_name, super->Named.type_name->decl_info); + + if (super->kind != Type_Named) { + error(e->token, "@(objc_superclass) Referenced type must be a named struct"); + break; + } + + Type* named_type = base_type(super->Named.type_name->type); + if (!is_type_objc_object(named_type)) { + error(e->token, "@(objc_superclass) Superclass must be an Objective-C class"); + break; + } + + super = super->Named.type_name->TypeName.objc_superclass; } } else { - if (e->TypeName.objc_superclass != nullptr) { + if (ac.objc_superclass != nullptr) { error(e->token, "@(objc_superclass) can only be applied when the @(obj_implement) attribute is also applied"); - } else if (e->TypeName.objc_ivar != nullptr) { + } else if (ac.objc_ivar != nullptr) { error(e->token, "@(objc_ivar) can only be applied when the @(obj_implement) attribute is also applied"); - } else if (e->TypeName.objc_context_provider != nullptr) { + } else if (ac.objc_context_provider != nullptr) { error(e->token, "@(objc_context_provider) can only be applied when the @(obj_implement) attribute is also applied"); } } From 668a9a89b0891128846112465110d70bb21d22bf Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Wed, 30 Apr 2025 19:24:44 -0400 Subject: [PATCH 016/120] Complete lb_get_objc_type_encoding() implementation --- src/llvm_backend.cpp | 66 ++++++++++++++++++++++---------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 339e7fca7..e8e08d355 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1173,9 +1173,8 @@ gb_internal lbProcedure *lb_create_objc_names(lbModule *main_module) { return p; } -// TODO(harold): Move this out of here and into a more suitable place. -// TODO(harold): Should not take an allocator, but always use temp, as we return string literals as well. -String lb_get_objc_type_encoding(Type *t, gbAllocator allocator, isize pointer_depth = 0) { +// TODO(harold): Perhaps move this out of here and into a more suitable place? +String lb_get_objc_type_encoding(Type *t, isize pointer_depth = 0) { // NOTE(harold): See https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html#//apple_ref/doc/uid/TP40008048-CH100 // NOTE(harold): Darwin targets are always 64-bit. Should we drop this and assume "q" always? @@ -1248,14 +1247,12 @@ String lb_get_objc_type_encoding(Type *t, gbAllocator allocator, isize pointer_d case Basic_f64be: return str_lit("d"); - // TODO(harold) These: - case Basic_complex32: - case Basic_complex64: - case Basic_complex128: - case Basic_quaternion64: - case Basic_quaternion128: - case Basic_quaternion256: - return str_lit("?"); + case Basic_complex32: return str_lit("{Raw_Complex32=ss}"); // No f16 encoding, so fallback to i16, as above in Basic_f16* + case Basic_complex64: return str_lit("{Raw_Complex64=ff}"); + case Basic_complex128: return str_lit("{Raw_Complex128=dd}"); + case Basic_quaternion64: return str_lit("{Raw_Quaternion64=ssss}"); + case Basic_quaternion128: return str_lit("{Raw_Quaternion128=ffff}"); + case Basic_quaternion256: return str_lit("{Raw_Quaternion256=dddd}"); case Basic_int: return str_lit(INT_SIZE_ENCODING); @@ -1298,7 +1295,7 @@ String lb_get_objc_type_encoding(Type *t, gbAllocator allocator, isize pointer_d if (base->kind == Type_Named) { base = base_type(base); if(base->kind != Type_Struct && base->kind != Type_Union) { - return lb_get_objc_type_encoding(base, allocator, pointer_depth); + return lb_get_objc_type_encoding(base, pointer_depth); } } @@ -1325,7 +1322,7 @@ String lb_get_objc_type_encoding(Type *t, gbAllocator allocator, isize pointer_d } - gbString s = gb_string_make_reserve(allocator, 16); + gbString s = gb_string_make_reserve(temporary_allocator(), 16); s = gb_string_append_length(s, is_union ? "(" :"{", 1); if (t->kind == Type_Named) { s = gb_string_append_length(s, t->Named.name.text, t->Named.name.len); @@ -1337,11 +1334,14 @@ String lb_get_objc_type_encoding(Type *t, gbAllocator allocator, isize pointer_d if (!is_union) { for( auto& f : base->Struct.fields ) { - String field_type = lb_get_objc_type_encoding(f->type, allocator, pointer_depth); + String field_type = lb_get_objc_type_encoding(f->type, pointer_depth); s = gb_string_append_length(s, field_type.text, field_type.len); } } else { - // #TODO(harold): Encode fields + for( auto& v : base->Union.variants ) { + String variant_type = lb_get_objc_type_encoding(v, pointer_depth); + s = gb_string_append_length(s, variant_type.text, variant_type.len); + } } } @@ -1355,44 +1355,44 @@ String lb_get_objc_type_encoding(Type *t, gbAllocator allocator, isize pointer_d return str_lit("?"); case Type_Pointer: { - String pointee = lb_get_objc_type_encoding(t->Pointer.elem, allocator, pointer_depth +1); + String pointee = lb_get_objc_type_encoding(t->Pointer.elem, pointer_depth +1); // Special case for Objective-C Objects if (pointer_depth == 0 && pointee == "@") { return pointee; } - return concatenate_strings(allocator, str_lit("^"), pointee); + return concatenate_strings(temporary_allocator(), str_lit("^"), pointee); } case Type_MultiPointer: - return concatenate_strings(allocator, str_lit("^"), lb_get_objc_type_encoding(t->Pointer.elem, allocator, pointer_depth +1)); + return concatenate_strings(temporary_allocator(), str_lit("^"), lb_get_objc_type_encoding(t->Pointer.elem, pointer_depth +1)); case Type_Array: { - String type_str = lb_get_objc_type_encoding(t->Array.elem, allocator, pointer_depth); + String type_str = lb_get_objc_type_encoding(t->Array.elem, pointer_depth); - gbString s = gb_string_make_reserve(allocator, type_str.len + 8); + gbString s = gb_string_make_reserve(temporary_allocator(), type_str.len + 8); s = gb_string_append_fmt(s, "[%lld%s]", t->Array.count, type_str.text); return make_string_c(s); } case Type_EnumeratedArray: { - String type_str = lb_get_objc_type_encoding(t->EnumeratedArray.elem, allocator, pointer_depth); + String type_str = lb_get_objc_type_encoding(t->EnumeratedArray.elem, pointer_depth); - gbString s = gb_string_make_reserve(allocator, type_str.len + 8); + gbString s = gb_string_make_reserve(temporary_allocator(), type_str.len + 8); s = gb_string_append_fmt(s, "[%lld%s]", t->EnumeratedArray.count, type_str.text); return make_string_c(s); } case Type_Slice: { - String type_str = lb_get_objc_type_encoding(t->Slice.elem, allocator, pointer_depth); - gbString s = gb_string_make_reserve(allocator, type_str.len + 8); + String type_str = lb_get_objc_type_encoding(t->Slice.elem, pointer_depth); + gbString s = gb_string_make_reserve(temporary_allocator(), type_str.len + 8); s = gb_string_append_fmt(s, "{slice=^%s%s}", type_str, INT_SIZE_ENCODING); return make_string_c(s); } case Type_DynamicArray: { - String type_str = lb_get_objc_type_encoding(t->DynamicArray.elem, allocator, pointer_depth); - gbString s = gb_string_make_reserve(allocator, type_str.len + 8); + String type_str = lb_get_objc_type_encoding(t->DynamicArray.elem, pointer_depth); + gbString s = gb_string_make_reserve(temporary_allocator(), type_str.len + 8); s = gb_string_append_fmt(s, "{dynamic=^%s%s%sAllocator={?^v}}", type_str, INT_SIZE_ENCODING, INT_SIZE_ENCODING); return make_string_c(s); } @@ -1400,22 +1400,22 @@ String lb_get_objc_type_encoding(Type *t, gbAllocator allocator, isize pointer_d case Type_Map: return str_lit("{^v^v{Allocator=?^v}}"); case Type_Enum: - return lb_get_objc_type_encoding(t->Enum.base_type, allocator, pointer_depth); + return lb_get_objc_type_encoding(t->Enum.base_type, pointer_depth); case Type_Tuple: - // NOTE(harold): Is this allowed here? + // NOTE(harold): Is this type allowed here? return str_lit("?"); case Type_Proc: return str_lit("?"); case Type_BitSet: - return lb_get_objc_type_encoding(t->BitSet.underlying, allocator, pointer_depth); + return lb_get_objc_type_encoding(t->BitSet.underlying, pointer_depth); case Type_SimdVector: break; case Type_Matrix: break; case Type_BitField: - return lb_get_objc_type_encoding(t->BitField.backing_type, allocator, pointer_depth); + return lb_get_objc_type_encoding(t->BitField.backing_type, pointer_depth); case Type_SoaPointer: { - gbString s = gb_string_make_reserve(allocator, 8); + gbString s = gb_string_make_reserve(temporary_allocator(), 8); s = gb_string_append_fmt(s, "{=^v%s}", INT_SIZE_ENCODING); return make_string_c(s); } @@ -1733,7 +1733,7 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { // TODO (harold): Checker must ensure that objc_methods have a single return value or none! GB_ASSERT(method_type->Proc.result_count <= 1); if (method_type->Proc.result_count != 0) { - method_encoding = lb_get_objc_type_encoding(method_type->Proc.results->Tuple.variables[0]->type, temporary_allocator()); + method_encoding = lb_get_objc_type_encoding(method_type->Proc.results->Tuple.variables[0]->type); } if (!md.ac.objc_is_class_method) { @@ -1744,7 +1744,7 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { for (i32 i = method_param_offset; i < method_param_count; i++) { Type *param_type = method_type->Proc.params->Tuple.variables[i]->type; - String param_encoding = lb_get_objc_type_encoding(param_type, temporary_allocator()); + String param_encoding = lb_get_objc_type_encoding(param_type); method_encoding = concatenate_strings(temporary_allocator(), method_encoding, param_encoding); } From abfbb2f9ed98225d2dce0e7e7f119985eb325523 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Wed, 30 Apr 2025 19:25:51 -0400 Subject: [PATCH 017/120] Use basic name instead of raw_name for type encoding complex and quats. --- src/llvm_backend.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index e8e08d355..cbcfc565c 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1247,12 +1247,12 @@ String lb_get_objc_type_encoding(Type *t, isize pointer_depth = 0) { case Basic_f64be: return str_lit("d"); - case Basic_complex32: return str_lit("{Raw_Complex32=ss}"); // No f16 encoding, so fallback to i16, as above in Basic_f16* - case Basic_complex64: return str_lit("{Raw_Complex64=ff}"); - case Basic_complex128: return str_lit("{Raw_Complex128=dd}"); - case Basic_quaternion64: return str_lit("{Raw_Quaternion64=ssss}"); - case Basic_quaternion128: return str_lit("{Raw_Quaternion128=ffff}"); - case Basic_quaternion256: return str_lit("{Raw_Quaternion256=dddd}"); + case Basic_complex32: return str_lit("{complex32=ss}"); // No f16 encoding, so fallback to i16, as above in Basic_f16* + case Basic_complex64: return str_lit("{complex64=ff}"); + case Basic_complex128: return str_lit("{complex128=dd}"); + case Basic_quaternion64: return str_lit("{quaternion64=ssss}"); + case Basic_quaternion128: return str_lit("{quaternion128=ffff}"); + case Basic_quaternion256: return str_lit("{quaternion256=dddd}"); case Basic_int: return str_lit(INT_SIZE_ENCODING); From c2dfc4b74929354bbbc1395d7dd4568718e3b30c Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Wed, 30 Apr 2025 20:25:21 -0400 Subject: [PATCH 018/120] Cleanup ivar generation for selector expressions. Cleanup ObjC superclass resolution. --- src/check_decl.cpp | 2 +- src/llvm_backend_expr.cpp | 24 +++++------------------- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/src/check_decl.cpp b/src/check_decl.cpp index c6746f3eb..a37d20f56 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -575,7 +575,7 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, break; } - super = super->Named.type_name->TypeName.objc_superclass; + super = named_type->Named.type_name->TypeName.objc_superclass; } } else { if (ac.objc_superclass != nullptr) { diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index cc49a7be8..334ce62d5 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -5175,7 +5175,6 @@ gb_internal lbAddr lb_build_addr_internal(lbProcedure *p, Ast *expr) { Selection sel = lookup_field(tav.type, selector, false); GB_ASSERT(sel.entity != nullptr); if (sel.pseudo_field && (sel.entity->kind == Entity_Procedure || sel.entity->kind == Entity_ProcGroup)) { - // GB_ASSERT(sel.entity->kind == Entity_Procedure || sel.entity->kind == Entity_ProcGroup); Entity *e = entity_of_node(sel_node); GB_ASSERT(e->kind == Entity_Procedure); return lb_addr(lb_find_value_from_entity(p->module, e)); @@ -5183,26 +5182,13 @@ gb_internal lbAddr lb_build_addr_internal(lbProcedure *p, Ast *expr) { lbAddr addr = lb_build_addr(p, se->expr); - // TODO(harold): Ensure objc_ivar is always null when objc_implement is not set! - Type *d_type = type_deref(tav.type); //base_type(tav.type); - if (d_type->kind == Type_Named && d_type->Named.type_name->TypeName.objc_ivar) { + // NOTE(harold): Only allow ivar pseudo field access on indirect selectors. + // It is incoherent otherwise as Objective-C objects are zero-sized. + Type *deref_type = type_deref(tav.type); + if (tav.type->kind == Type_Pointer && deref_type->kind == Type_Named && deref_type->Named.type_name->TypeName.objc_ivar) { // NOTE(harold): We need to load the ivar from the current address and // replace addr with the loaded ivar addr to apply the selector load properly. - - // If it's a deep pointer, dereference it first - // TODO(harold): Ensure this is save to do here. lb_emit_deep_field_gep() has several derefs, once per index. - // Not sure what multiple indices represent... - Type* type = type_deref(addr.addr.type); - - // TODO(harold): Checker: Must NOT allow ivar dereferencing on non-pointer types. - // this would access memory outside the size of the value. - // In fact, locals/globals of Objective-C types ought not be allowed at all. - GB_ASSERT(is_type_pointer(type)); - - if (is_type_pointer(type)) { - type = type_deref(type); - addr = lb_addr(lb_emit_load(p, addr.addr)); - } + addr = lb_addr(lb_emit_load(p, addr.addr)); lbValue ivar_ptr = lb_handle_objc_ivar_for_objc_object_pointer(p, addr.addr); addr = lb_addr(ivar_ptr); From 998ed79738c46b818c10cc88c1ac1393bacacaf7 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Wed, 30 Apr 2025 20:43:05 -0400 Subject: [PATCH 019/120] Go back to `objc_ivar_get` instead of `ivar_get`. --- base/intrinsics/intrinsics.odin | 2 +- src/checker_builtin_procs.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/base/intrinsics/intrinsics.odin b/base/intrinsics/intrinsics.odin index 515e8d48a..475b23930 100644 --- a/base/intrinsics/intrinsics.odin +++ b/base/intrinsics/intrinsics.odin @@ -364,7 +364,7 @@ objc_find_selector :: proc($name: string) -> objc_SEL --- objc_register_selector :: proc($name: string) -> objc_SEL --- objc_find_class :: proc($name: string) -> objc_Class --- objc_register_class :: proc($name: string) -> objc_Class --- -ivar_get :: proc(self: ^$T, $U: typeid) -> ^U --- +objc_ivar_get :: proc(self: ^$T, $U: typeid) -> ^U --- valgrind_client_request :: proc(default: uintptr, request: uintptr, a0, a1, a2, a3, a4: uintptr) -> uintptr --- diff --git a/src/checker_builtin_procs.hpp b/src/checker_builtin_procs.hpp index ce7d8349b..5a7a63ae8 100644 --- a/src/checker_builtin_procs.hpp +++ b/src/checker_builtin_procs.hpp @@ -674,7 +674,7 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { {STR_LIT("objc_find_class"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("objc_register_selector"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, {STR_LIT("objc_register_class"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, - {STR_LIT("ivar_get"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, + {STR_LIT("objc_ivar_get"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, {STR_LIT("constant_utf16_cstring"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, From dc8692b5040fecfc478801b310c8bd5b0ac42750 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Wed, 30 Apr 2025 21:49:24 -0400 Subject: [PATCH 020/120] Use correct alignment value for `class_addIvar`. --- src/llvm_backend.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index cbcfc565c..c8626c195 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1770,13 +1770,13 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { // Register a single ivar for this class Type *ivar_base = ivar_type->Named.base; + // @note(harold): The alignment is supposed to be passed as log2(alignment): https://developer.apple.com/documentation/objectivec/class_addivar(_:_:_:_:_:)?language=objc const i64 size = type_size_of(ivar_base); - const i64 alignment = type_align_of(ivar_base); - // TODO(harold): Checker: Alignment must be compatible with ivar rules. Or we should increase the alignment if needed. + const i64 alignment = (i64)floor_log2((u64)type_align_of(ivar_base)); // TODO(harold): Should we pass the actual type encoding? Might not be ideal for obfuscation. String ivar_name = str_lit("__$ivar"); - String ivar_types = str_lit("{= }"); //lb_get_objc_type_encoding(ivar_type, temporary_allocator());// str_lit("{= }"); + String ivar_types = str_lit("{= }"); //lb_get_objc_type_encoding(ivar_type); args.count = 5; args[0] = class_value; args[1] = lb_const_value(m, t_cstring, exact_value_string(ivar_name)); From 1505edef011949e10b31335577ea344e5da2b623 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Wed, 30 Apr 2025 22:09:03 -0400 Subject: [PATCH 021/120] Change ivar offsets from u32 to (odin base type) int/native pointer size. --- src/llvm_backend.cpp | 12 ++++++------ src/llvm_backend_utility.cpp | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index c8626c195..6e6b9e39a 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1793,7 +1793,6 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { } // Register ivar offsets for any `objc_ivar_get` expressions emitted. - Type *ptr_u32 = alloc_type_pointer(t_u32); for (auto const& kv : ivar_map) { lbObjCGlobal const& g = kv.value; lbAddr ivar_addr = {}; @@ -1801,13 +1800,14 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { if (found) { ivar_addr = lb_addr(*found); + GB_ASSERT(ivar_addr.addr.type == t_int_ptr); } else { - // Defined in an external package, must define now - LLVMTypeRef t = lb_type(m, t_u32); + // Defined in an external package, define it now in the main package + LLVMTypeRef t = lb_type(m, t_int); lbValue global{}; global.value = LLVMAddGlobal(m->mod, t, g.global_name); - global.type = ptr_u32; + global.type = t_int_ptr; LLVMSetInitializer(global.value, LLVMConstInt(t, 0, true)); @@ -1825,9 +1825,9 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { args.count = 1; args[0] = ivar; lbValue ivar_offset = lb_emit_runtime_call(p, "ivar_getOffset", args); - lbValue ivar_offset_u32 = lb_emit_conv(p, ivar_offset, t_u32); + lbValue ivar_offset_int = lb_emit_conv(p, ivar_offset, t_int); - lb_addr_store(p, ivar_addr, ivar_offset_u32); + lb_addr_store(p, ivar_addr, ivar_offset_int); } lb_end_procedure_body(p); diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp index 264364162..521553147 100644 --- a/src/llvm_backend_utility.cpp +++ b/src/llvm_backend_utility.cpp @@ -2171,11 +2171,11 @@ gb_internal lbAddr lb_handle_objc_find_or_register_ivar(lbModule *m, Type *self_ global_name = gb_string_append_length(global_name, name.text, name.len); // Create a global variable to store offset of the ivar in an instance of an object - LLVMTypeRef t = lb_type(m, t_u32); + LLVMTypeRef t = lb_type(m, t_int); lbValue g = {}; g.value = LLVMAddGlobal(m->mod, t, global_name); - g.type = alloc_type_pointer(t_u32); + g.type = t_int_ptr; if (default_module == m) { LLVMSetInitializer(g.value, LLVMConstInt(t, 0, true)); @@ -2184,7 +2184,7 @@ gb_internal lbAddr lb_handle_objc_find_or_register_ivar(lbModule *m, Type *self_ LLVMSetLinkage(g.value, LLVMExternalLinkage); } - mpsc_enqueue(&m->gen->objc_ivars, lbObjCGlobal{m, global_name, name, t_u32, self_type}); + mpsc_enqueue(&m->gen->objc_ivars, lbObjCGlobal{m, global_name, name, t_int, self_type}); lbAddr addr = lb_addr(g); string_map_set(&m->objc_ivars, name, addr); From 0746127654aaa980c3a35039c636b3ca1b794fc8 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Wed, 30 Apr 2025 22:16:24 -0400 Subject: [PATCH 022/120] Minor fixes in data type usage and style. --- src/llvm_backend.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 6e6b9e39a..a7082972a 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1597,8 +1597,8 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { map_set(&ivar_map, g.class_impl_type, g); } - for (const auto& cd : class_impls) { - auto& g = cd.g; + for (const auto &cd : class_impls) { + auto &g = cd.g; Type *class_type = g.class_impl_type; Type *class_ptr_type = alloc_type_pointer(class_type); lbValue class_value = cd.class_value; @@ -1622,7 +1622,7 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { } - Array* methods = map_get(&m->info->objc_method_implementations, class_type); + Array *methods = map_get(&m->info->objc_method_implementations, class_type); if (!methods) { continue; } @@ -1641,7 +1641,7 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { wrapper_args[1] = t_objc_SEL; isize method_param_count = method_type->Proc.param_count; - i32 method_param_offset = 0; + isize method_param_offset = 0; // TODO(harold): Need to make sure (at checker stage) that the non-class method has the self parameter already. // (Maybe this is already accounted for?.) @@ -1651,7 +1651,7 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { method_param_offset = 1; } - for (i32 i = 0; i < method_param_count; i++) { + for (isize i = 0; i < method_param_count; i++) { array_add(&wrapper_args, method_type->Proc.params->Tuple.variables[method_param_offset+i]->type); } @@ -1699,7 +1699,7 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { } - auto method_call_args = array_make(temporary_allocator(), method_param_count + (isize)method_param_offset); + auto method_call_args = array_make(temporary_allocator(), method_param_count + method_param_offset); if (!md.ac.objc_is_class_method) { method_call_args[0] = lbValue { @@ -1742,7 +1742,7 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { method_encoding = concatenate_strings(temporary_allocator(), method_encoding, str_lit("#:")); } - for (i32 i = method_param_offset; i < method_param_count; i++) { + for (isize i = method_param_offset; i < method_param_count; i++) { Type *param_type = method_type->Proc.params->Tuple.variables[i]->type; String param_encoding = lb_get_objc_type_encoding(param_type); From 5f0b47c373e34c231879b2700e78ab1bbd6219b5 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Sat, 3 May 2025 00:58:33 -0400 Subject: [PATCH 023/120] Implement all checker specification for Objective-C class implementations and `objc_ivar_get` intrinsic --- base/intrinsics/intrinsics.odin | 2 +- src/check_builtin.cpp | 28 +++------------- src/check_decl.cpp | 42 ++++++++++++++++++----- src/checker.cpp | 59 +++++++++++++++++---------------- src/checker.hpp | 3 +- src/checker_builtin_procs.hpp | 2 +- 6 files changed, 71 insertions(+), 65 deletions(-) diff --git a/base/intrinsics/intrinsics.odin b/base/intrinsics/intrinsics.odin index 475b23930..8e0a8df7a 100644 --- a/base/intrinsics/intrinsics.odin +++ b/base/intrinsics/intrinsics.odin @@ -364,7 +364,7 @@ objc_find_selector :: proc($name: string) -> objc_SEL --- objc_register_selector :: proc($name: string) -> objc_SEL --- objc_find_class :: proc($name: string) -> objc_Class --- objc_register_class :: proc($name: string) -> objc_Class --- -objc_ivar_get :: proc(self: ^$T, $U: typeid) -> ^U --- +objc_ivar_get :: proc(self: ^$T) -> ^$U --- valgrind_client_request :: proc(default: uintptr, request: uintptr, a0, a1, a2, a3, a4: uintptr) -> uintptr --- diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index 3e531a309..024289169 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -391,7 +391,6 @@ gb_internal bool check_builtin_objc_procedure(CheckerContext *c, Operand *operan case BuiltinProc_objc_ivar_get: { Type *self_type = nullptr; - Type *ivar_type = nullptr; Operand self = {}; check_expr_or_type(c, &self, ce->args[0]); @@ -416,40 +415,21 @@ gb_internal bool check_builtin_objc_procedure(CheckerContext *c, Operand *operan if (!(self_type->kind == Type_Named && self_type->Named.type_name != nullptr && - self_type->Named.type_name->TypeName.objc_class_name != "")) { + self_type->Named.type_name->TypeName.objc_class_name != "")) { gbString t = type_to_string(self_type); error(self.expr, "'%.*s' expected a named type with the attribute @(objc_class=) , got type %s", LIT(builtin_name), t); gb_string_free(t); return false; } - if (self_type->Named.type_name->TypeName.objc_ivar == nullptr) { + Type *ivar_type = self_type->Named.type_name->TypeName.objc_ivar; + if (ivar_type == nullptr) { gbString t = type_to_string(self_type); error(self.expr, "'%.*s' requires that type %s have the attribute @(objc_ivar=).", LIT(builtin_name), t); gb_string_free(t); return false; } - Operand ivar = {}; - check_expr_or_type(c, &ivar, ce->args[1]); - if (ivar.mode == Addressing_Type) { - ivar_type = ivar.type; - } else { - return false; - } - - if (self_type->Named.type_name->TypeName.objc_ivar != ivar_type) { - gbString name_self = type_to_string(self_type); - gbString name_expected = type_to_string(self_type->Named.type_name->TypeName.objc_ivar); - gbString name_given = type_to_string(ivar_type); - error(self.expr, "'%.*s' ivar type %s does not match @objc_ivar type %s on Objective-C class %s.", - LIT(builtin_name), name_given, name_expected, name_self); - gb_string_free(name_self); - gb_string_free(name_expected); - gb_string_free(name_given); - return false; - } - if (type_hint != nullptr && type_hint->kind == Type_Pointer && type_hint->Pointer.elem == ivar_type) { operand->type = type_hint; } else { @@ -457,8 +437,8 @@ gb_internal bool check_builtin_objc_procedure(CheckerContext *c, Operand *operan } operand->mode = Addressing_Value; - return true; + } break; } } diff --git a/src/check_decl.cpp b/src/check_decl.cpp index a37d20f56..18dc5e6b0 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -565,31 +565,41 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, check_single_global_entity(ctx->checker, super->Named.type_name, super->Named.type_name->decl_info); if (super->kind != Type_Named) { + // TODO(harold): Show the current superclass token too error(e->token, "@(objc_superclass) Referenced type must be a named struct"); break; } Type* named_type = base_type(super->Named.type_name->type); if (!is_type_objc_object(named_type)) { + // TODO(harold): Show the current superclass token too error(e->token, "@(objc_superclass) Superclass must be an Objective-C class"); break; } + if (named_type->Named.type_name->TypeName.objc_class_name == "") { + // TODO(harold): Show the current superclass token too + error(e->token, "@(objc_superclass) Superclass must be have a valid @(objc_class) attribute"); + break; + } + super = named_type->Named.type_name->TypeName.objc_superclass; } } else { if (ac.objc_superclass != nullptr) { - error(e->token, "@(objc_superclass) can only be applied when the @(obj_implement) attribute is also applied"); + error(e->token, "@(objc_superclass) may only be applied when the @(obj_implement) attribute is also applied"); } else if (ac.objc_ivar != nullptr) { - error(e->token, "@(objc_ivar) can only be applied when the @(obj_implement) attribute is also applied"); + error(e->token, "@(objc_ivar) may only be applied when the @(obj_implement) attribute is also applied"); } else if (ac.objc_context_provider != nullptr) { - error(e->token, "@(objc_context_provider) can only be applied when the @(obj_implement) attribute is also applied"); + error(e->token, "@(objc_context_provider) may only be applied when the @(obj_implement) attribute is also applied"); } } if (type_size_of(e->type) > 0) { error(e->token, "@(objc_class) marked type must be of zero size"); } + } else if (ac.objc_is_implementation) { + error(e->token, "@(objc_implement) may only be applied when the @(objc_class) attribute is also applied"); } } @@ -994,7 +1004,7 @@ gb_internal void check_objc_methods(CheckerContext *ctx, Entity *e, AttributeCon error(e->token, "@(objc_name) is required with @(objc_type)"); } else { Type *t = ac.objc_type; - if (t->kind == Type_Named) { + if (t->kind == Type_Named) { // TODO(harold): Shouldn't this be an error otherwise? Or is it checked elsehwere? Entity *tn = t->Named.type_name; GB_ASSERT(tn->kind == Entity_TypeName); @@ -1003,20 +1013,32 @@ gb_internal void check_objc_methods(CheckerContext *ctx, Entity *e, AttributeCon error(e->token, "@(objc_name) attribute may only be applied to procedures and types within the same scope"); } else { - if (ac.objc_is_implementation) { + // Enable implementation by default if the class is an implementer too and + // @objc_implement was not set to false explicitly in this proc. + bool implement = tn->TypeName.objc_is_implementation; + if (ac.objc_is_disabled_implement) { + implement = false; + } + + if (implement) { GB_ASSERT(e->kind == Entity_Procedure); - Type *proc_type = e->type; + auto &proc = e->type->Proc; + Type &first_param = proc.param_count > 0 ? proc.params[0] : *t_untyped_nil; if (!tn->TypeName.objc_is_implementation) { error(e->token, "@(objc_is_implement) attribute may only be applied to procedures whose class also have @(objc_is_implement) applied"); - } else if (proc_type->Proc.calling_convention == ProcCC_Odin && !tn->TypeName.objc_context_provider) { + } else if (!ac.objc_is_class_method && !(first_param.kind == Type_Pointer && first_param.Pointer.elem == t)) { + error(e->token, "Objective-C instance methods implementations require the first parameter to be a pointer to the class type set by @(objc_type)"); + } else if (proc.calling_convention == ProcCC_Odin && !tn->TypeName.objc_context_provider) { error(e->token, "Objective-C methods with Odin calling convention can only be used with classes that have @(objc_context_provider) set"); - } else if (ac.objc_is_class_method && proc_type->Proc.calling_convention != ProcCC_CDecl) { + } else if (ac.objc_is_class_method && proc.calling_convention != ProcCC_CDecl) { error(e->token, "Objective-C class methods (objc_is_class_method=true) that have @objc_is_implementation can only use \"c\" calling convention"); + } else if (proc.result_count > 1) { + error(e->token, "Objective-C method implementations may return at most 1 value"); } else { - auto method = ObjcMethodData{ ac, e }; + auto method = ObjcMethodData{ ac, e }; method.ac.objc_selector = ac.objc_selector != "" ? ac.objc_selector : ac.objc_name; CheckerInfo *info = ctx->info; @@ -1033,6 +1055,8 @@ gb_internal void check_objc_methods(CheckerContext *ctx, Entity *e, AttributeCon map_set(&info->objc_method_implementations, t, list); } } + } else if (ac.objc_selector != "") { + error(e->token, "@(objc_selector) may only be applied to procedures that are Objective-C implementations."); } mutex_lock(&global_type_name_objc_metadata_mutex); diff --git a/src/checker.cpp b/src/checker.cpp index 15d19fb1a..0b093936d 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -3352,7 +3352,7 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { ac->test = true; return true; } else if (name == "export") { - if (ac->objc_is_implementation) { + if (ac->objc_is_implementation) { // TODO(harold): Remove from here, this needs to be checked after all attributes are set. error(value, "Setting @(export) explicitly is not allowed when @(objc_implement) is set. It is exported implicitly."); return false; } @@ -3369,7 +3369,7 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { return true; } else if (name == "linkage") { - if (ac->objc_is_implementation) { + if (ac->objc_is_implementation) { // TODO(harold): Remove from here, this needs to be checked after all attributes are set. error(value, "Explicit linkage not allowed when @(objc_implement) is set. It is set implicitly"); return false; } @@ -3684,6 +3684,10 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { ExactValue ev = check_decl_attribute_value(c, value); if (ev.kind == ExactValue_Bool) { ac->objc_is_implementation = ev.value_bool; + + if (!ac->objc_is_implementation) { + ac->objc_is_disabled_implement = true; + } } else if (ev.kind == ExactValue_Invalid) { ac->objc_is_implementation = true; } else { @@ -3970,7 +3974,7 @@ gb_internal DECL_ATTRIBUTE_PROC(type_decl_attribute) { } else if (name == "objc_ivar") { Type *objc_ivar = check_type(c, value); - if (objc_ivar != nullptr) { + if (objc_ivar != nullptr && objc_ivar->kind == Type_Named) { ac->objc_ivar = objc_ivar; } else { error(value, "'%.*s' expected a named type", LIT(name)); @@ -6488,36 +6492,33 @@ gb_internal void check_objc_context_provider_procedures(Checker *c) { Entity *proc_entity = e->TypeName.objc_context_provider; GB_ASSERT(proc_entity->kind == Entity_Procedure); - Type *proc_type = proc_entity->type; + auto &proc = proc_entity->type->Proc; - // TODO(harold): Give better errors here (specify exactly what's wrong) - const char *signature_error = "The procedure for @(objc_context_provider) has an incorrect signature."; + Type *return_type = proc.result_count != 1 ? t_untyped_nil : base_named_type(proc.results->Tuple.variables[0]->type); + if (return_type != t_context) { + error(proc_entity->token, "The @(objc_context_provider) procedure must only return a context."); + } - if (proc_type->Proc.param_count != 1 || proc_type->Proc.result_count != 1) { - error(proc_entity->token, signature_error); - } else { - Type *self_param = base_type(proc_type->Proc.params->Tuple.variables[0]->type); - Type *return_type = base_named_type(proc_type->Proc.results->Tuple.variables[0]->type); + const char *self_param_err = "The @(objc_context_provider) procedure must take as a parameter a single pointer to the @(objc_type) value."; + if (proc.param_count != 1) { + error(proc_entity->token, self_param_err); + } - if (self_param->kind != Type_Pointer) { - error(proc_entity->token, signature_error); - continue; - } + Type *self_param = base_type(proc.params->Tuple.variables[0]->type); + if (self_param->kind == Type_Pointer) { + error(proc_entity->token, self_param_err); + } - self_param = base_named_type(self_param->Pointer.elem); - - if (return_type != t_context) { - error(e->token, signature_error); - } else if (!internal_check_is_assignable_to(self_param, e->type) && - (e->TypeName.objc_ivar && !internal_check_is_assignable_to(self_param, e->TypeName.objc_ivar)) - ) { - error(e->token, signature_error); - } else if (proc_type->Proc.calling_convention != ProcCC_CDecl && - proc_type->Proc.calling_convention != ProcCC_Contextless) { - error(e->token, signature_error); - } else if (proc_type->Proc.is_polymorphic) { - error(e->token, signature_error); - } + Type *self_type = base_named_type(self_param->Pointer.elem); + if (!internal_check_is_assignable_to(self_type, e->type) && + !(e->TypeName.objc_ivar && internal_check_is_assignable_to(self_type, e->TypeName.objc_ivar))) { + error(proc_entity->token, self_param_err); + } + if (proc.calling_convention != ProcCC_CDecl && proc.calling_convention != ProcCC_Contextless) { + error(e->token, self_param_err); + } + if (proc.is_polymorphic) { + error(e->token, self_param_err); } } } diff --git a/src/checker.hpp b/src/checker.hpp index 0f7e1cb59..fc3ff455b 100644 --- a/src/checker.hpp +++ b/src/checker.hpp @@ -154,7 +154,8 @@ struct AttributeContext { Type * objc_ivar; Entity *objc_context_provider; bool objc_is_class_method; - bool objc_is_implementation; // This struct or proc provides a class/method implementation, not a binding to an existing type. + bool objc_is_implementation; // This struct or proc provides a class/method implementation, not a binding to an existing type. + bool objc_is_disabled_implement; // This means the method explicitly set @objc_implement to false so it won't be inferred from the class' attribute. String require_target_feature; // required by the target micro-architecture String enable_target_feature; // will be enabled for the procedure only diff --git a/src/checker_builtin_procs.hpp b/src/checker_builtin_procs.hpp index 5a7a63ae8..cbb17be65 100644 --- a/src/checker_builtin_procs.hpp +++ b/src/checker_builtin_procs.hpp @@ -674,7 +674,7 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { {STR_LIT("objc_find_class"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("objc_register_selector"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, {STR_LIT("objc_register_class"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, - {STR_LIT("objc_ivar_get"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, + {STR_LIT("objc_ivar_get"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics, false, true}, {STR_LIT("constant_utf16_cstring"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, From a00b91577d998b3795afd099504a6c2b9d99460e Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Sat, 3 May 2025 01:34:01 -0400 Subject: [PATCH 024/120] Prevent multiple uses of the same Objective-C class name --- src/check_builtin.cpp | 4 ++-- src/check_decl.cpp | 9 +++++++++ src/checker.cpp | 1 + src/checker.hpp | 4 +++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index 024289169..11fbbe169 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -223,9 +223,9 @@ gb_internal void add_objc_proc_type(CheckerContext *c, Ast *call, Type *return_t data.kind = kind; data.proc_type = alloc_type_proc(scope, params, param_types.count, results, results->Tuple.variables.count, false, ProcCC_CDecl); - mutex_lock(&c->info->objc_types_mutex); + mutex_lock(&c->info->objc_objc_msgSend_mutex); map_set(&c->info->objc_msgSend_types, call, data); - mutex_unlock(&c->info->objc_types_mutex); + mutex_unlock(&c->info->objc_objc_msgSend_mutex); try_to_add_package_dependency(c, "runtime", "objc_msgSend"); try_to_add_package_dependency(c, "runtime", "objc_msgSend_fpret"); diff --git a/src/check_decl.cpp b/src/check_decl.cpp index 18dc5e6b0..c9f6bd85e 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -524,7 +524,16 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, if (decl != nullptr) { AttributeContext ac = {}; check_decl_attributes(ctx, decl->attributes, type_decl_attribute, &ac); + if (e->kind == Entity_TypeName && ac.objc_class != "") { + + mutex_lock(&ctx->info->objc_class_name_mutex); + bool class_exists = string_set_update(&ctx->info->obcj_class_name_set, ac.objc_class); + mutex_unlock(&ctx->info->objc_class_name_mutex); + if (class_exists) { + error(e->token, "@(objc_class) '%s' has already been used elsewhere", ac.objc_class); + } + e->TypeName.objc_class_name = ac.objc_class; if (ac.objc_is_implementation) { diff --git a/src/checker.cpp b/src/checker.cpp index 0b093936d..6e1c3849e 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -1390,6 +1390,7 @@ gb_internal void init_checker_info(CheckerInfo *i) { map_init(&i->objc_msgSend_types); mpsc_init(&i->objc_class_implementations, a); + string_set_init(&i->obcj_class_name_set, 0); map_init(&i->objc_method_implementations); string_map_init(&i->load_file_cache); diff --git a/src/checker.hpp b/src/checker.hpp index fc3ff455b..9ac59a669 100644 --- a/src/checker.hpp +++ b/src/checker.hpp @@ -487,9 +487,11 @@ struct CheckerInfo { MPSCQueue intrinsics_entry_point_usage; - BlockingMutex objc_types_mutex; + BlockingMutex objc_objc_msgSend_mutex; PtrMap objc_msgSend_types; + BlockingMutex objc_class_name_mutex; + StringSet obcj_class_name_set; MPSCQueue objc_class_implementations; BlockingMutex objc_method_mutex; From 33d37c72f9750d8249ba1d31b5ef9d3a88c54f0a Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Sat, 3 May 2025 01:50:19 -0400 Subject: [PATCH 025/120] Register all classes unconditionally --- src/llvm_backend.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index a7082972a..4396a2a27 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1515,6 +1515,12 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { auto args = array_make(temporary_allocator(), 3, 8); auto class_impls = array_make(temporary_allocator(), 0, 16); + // Register all class implementations unconditionally, even if not statically referenced + for (Entity *e = {}; mpsc_dequeue(&gen->info->objc_class_implementations, &e); /**/) { + GB_ASSERT(e->kind == Entity_TypeName && e->TypeName.objc_is_implementation); + lb_handle_objc_find_or_register_class(p, e->TypeName.objc_class_name, e->type); + } + // Ensure classes that have been implicitly referenced through // the objc_superclass attribute have a global variable available for them. TypeSet class_set{}; @@ -1523,7 +1529,7 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { auto referenced_classes = array_make(temporary_allocator()); for (lbObjCGlobal g = {}; mpsc_dequeue(&gen->objc_classes, &g); /**/) { - array_add( &referenced_classes, g); + array_add(&referenced_classes, g); Type *cls = g.class_impl_type; while (cls) { @@ -1547,7 +1553,7 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { // Add all class globals to a map so that we can look them up dynamically // in order to resolve out-of-order because classes that are being implemented - // need their superclasses to have been registered before them. + // require their superclasses to be registered before them. StringMap global_class_map{}; string_map_init(&global_class_map, (usize)gen->objc_classes.count); defer (string_map_destroy(&global_class_map)); From cf3830a6a86de1923a53609a67bb0a8d6b70a6a9 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Sat, 3 May 2025 02:30:53 -0400 Subject: [PATCH 026/120] Fix checker errors. --- src/check_decl.cpp | 30 +++++++++++++++--------------- src/checker.cpp | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/check_decl.cpp b/src/check_decl.cpp index c9f6bd85e..fc2edeb9e 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -527,13 +527,6 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, if (e->kind == Entity_TypeName && ac.objc_class != "") { - mutex_lock(&ctx->info->objc_class_name_mutex); - bool class_exists = string_set_update(&ctx->info->obcj_class_name_set, ac.objc_class); - mutex_unlock(&ctx->info->objc_class_name_mutex); - if (class_exists) { - error(e->token, "@(objc_class) '%s' has already been used elsewhere", ac.objc_class); - } - e->TypeName.objc_class_name = ac.objc_class; if (ac.objc_is_implementation) { @@ -542,6 +535,13 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, e->TypeName.objc_ivar = ac.objc_ivar; e->TypeName.objc_context_provider = ac.objc_context_provider; + mutex_lock(&ctx->info->objc_class_name_mutex); + bool class_exists = string_set_update(&ctx->info->obcj_class_name_set, ac.objc_class); + mutex_unlock(&ctx->info->objc_class_name_mutex); + if (class_exists) { + error(e->token, "@(objc_class) name '%.*s' has already been used elsewhere", LIT(ac.objc_class)); + } + mpsc_enqueue(&ctx->info->objc_class_implementations, e); GB_ASSERT(e->TypeName.objc_ivar == nullptr || e->TypeName.objc_ivar->kind == Type_Named); @@ -574,21 +574,20 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, check_single_global_entity(ctx->checker, super->Named.type_name, super->Named.type_name->decl_info); if (super->kind != Type_Named) { - // TODO(harold): Show the current superclass token too error(e->token, "@(objc_superclass) Referenced type must be a named struct"); break; } - Type* named_type = base_type(super->Named.type_name->type); + Type* named_type = base_named_type(super); + GB_ASSERT(named_type->kind == Type_Named); + if (!is_type_objc_object(named_type)) { - // TODO(harold): Show the current superclass token too - error(e->token, "@(objc_superclass) Superclass must be an Objective-C class"); + error(e->token, "@(objc_superclass) Superclass '%.*s' must be an Objective-C class", LIT(named_type->Named.name)); break; } if (named_type->Named.type_name->TypeName.objc_class_name == "") { - // TODO(harold): Show the current superclass token too - error(e->token, "@(objc_superclass) Superclass must be have a valid @(objc_class) attribute"); + error(e->token, "@(objc_superclass) Superclass '%.*s' must have a valid @(objc_class) attribute", LIT(named_type->Named.name)); break; } @@ -1013,6 +1012,7 @@ gb_internal void check_objc_methods(CheckerContext *ctx, Entity *e, AttributeCon error(e->token, "@(objc_name) is required with @(objc_type)"); } else { Type *t = ac.objc_type; + if (t->kind == Type_Named) { // TODO(harold): Shouldn't this be an error otherwise? Or is it checked elsehwere? Entity *tn = t->Named.type_name; @@ -1033,11 +1033,11 @@ gb_internal void check_objc_methods(CheckerContext *ctx, Entity *e, AttributeCon GB_ASSERT(e->kind == Entity_Procedure); auto &proc = e->type->Proc; - Type &first_param = proc.param_count > 0 ? proc.params[0] : *t_untyped_nil; + Type *first_param = proc.param_count > 0 ? proc.params->Tuple.variables[0]->type : t_untyped_nil; if (!tn->TypeName.objc_is_implementation) { error(e->token, "@(objc_is_implement) attribute may only be applied to procedures whose class also have @(objc_is_implement) applied"); - } else if (!ac.objc_is_class_method && !(first_param.kind == Type_Pointer && first_param.Pointer.elem == t)) { + } else if (!ac.objc_is_class_method && !(first_param->kind == Type_Pointer && internal_check_is_assignable_to(t, first_param->Pointer.elem))) { error(e->token, "Objective-C instance methods implementations require the first parameter to be a pointer to the class type set by @(objc_type)"); } else if (proc.calling_convention == ProcCC_Odin && !tn->TypeName.objc_context_provider) { error(e->token, "Objective-C methods with Odin calling convention can only be used with classes that have @(objc_context_provider) set"); diff --git a/src/checker.cpp b/src/checker.cpp index 6e1c3849e..62cffa788 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -6506,7 +6506,7 @@ gb_internal void check_objc_context_provider_procedures(Checker *c) { } Type *self_param = base_type(proc.params->Tuple.variables[0]->type); - if (self_param->kind == Type_Pointer) { + if (self_param->kind != Type_Pointer) { error(proc_entity->token, self_param_err); } From 6d18560ca3054184d9bd97f280472d8cb5bb5081 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Sat, 3 May 2025 03:00:32 -0400 Subject: [PATCH 027/120] Move unconditionally exporting Objective-C methods to the right location --- src/check_decl.cpp | 14 +++++++++++++- src/checker.cpp | 17 ----------------- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/check_decl.cpp b/src/check_decl.cpp index fc2edeb9e..84893d5c4 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -1000,7 +1000,7 @@ gb_internal String handle_link_name(CheckerContext *ctx, Token token, String lin } -gb_internal void check_objc_methods(CheckerContext *ctx, Entity *e, AttributeContext const &ac) { +gb_internal void check_objc_methods(CheckerContext *ctx, Entity *e, AttributeContext &ac) { if (!(ac.objc_name.len || ac.objc_is_class_method || ac.objc_type)) { return; } @@ -1046,6 +1046,18 @@ gb_internal void check_objc_methods(CheckerContext *ctx, Entity *e, AttributeCon } else if (proc.result_count > 1) { error(e->token, "Objective-C method implementations may return at most 1 value"); } else { + // Always export unconditionally + // NOTE(harold): This means check_objc_methods() MUST be called before + // e->Procedure.is_export is set in check_proc_decl()! + if (ac.is_export) { + error(e->token, "Explicit export not allowed when @(objc_implement) is set. It set exported implicitly"); + } + if (ac.link_name != "") { + error(e->token, "Explicit linkage not allowed when @(objc_implement) is set. It set to \"strong\" implicitly"); + } + + ac.is_export = true; + ac.linkage = STR_LIT("strong"); auto method = ObjcMethodData{ ac, e }; method.ac.objc_selector = ac.objc_selector != "" ? ac.objc_selector : ac.objc_name; diff --git a/src/checker.cpp b/src/checker.cpp index 62cffa788..1569814cc 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -3353,11 +3353,6 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { ac->test = true; return true; } else if (name == "export") { - if (ac->objc_is_implementation) { // TODO(harold): Remove from here, this needs to be checked after all attributes are set. - error(value, "Setting @(export) explicitly is not allowed when @(objc_implement) is set. It is exported implicitly."); - return false; - } - ExactValue ev = check_decl_attribute_value(c, value); if (ev.kind == ExactValue_Invalid) { ac->is_export = true; @@ -3369,12 +3364,6 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { } return true; } else if (name == "linkage") { - - if (ac->objc_is_implementation) { // TODO(harold): Remove from here, this needs to be checked after all attributes are set. - error(value, "Explicit linkage not allowed when @(objc_implement) is set. It is set implicitly"); - return false; - } - ExactValue ev = check_decl_attribute_value(c, value); if (ev.kind != ExactValue_String) { error(value, "Expected either a string 'linkage'"); @@ -3695,12 +3684,6 @@ gb_internal DECL_ATTRIBUTE_PROC(proc_decl_attribute) { error(elem, "Expected a boolean value, or no value, for '%.*s'", LIT(name)); } - // This implies exported, strongly linked - if (ac->objc_is_implementation) { - ac->is_export = true; - ac->linkage = str_lit("strong"); - } - return true; } else if (name == "objc_selector") { ExactValue ev = check_decl_attribute_value(c, value); From fc082f5ea5f8ba65811b0d008e7f86137297849c Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Sat, 3 May 2025 03:20:02 -0400 Subject: [PATCH 028/120] Remove some TODO. Leave important note --- src/check_decl.cpp | 4 ++++ src/llvm_backend.cpp | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/check_decl.cpp b/src/check_decl.cpp index 84893d5c4..2be5be023 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -1283,6 +1283,9 @@ gb_internal void check_proc_decl(CheckerContext *ctx, Entity *e, DeclInfo *d) { break; } + // NOTE(harold): For Objective-C method implementations, this must happen after + // check_objc_methods() is called as it re-sets ac.is_export to true unconditionally. + // The same is true for the linkage, set below. e->Procedure.entry_point_only = ac.entry_point_only; e->Procedure.is_export = ac.is_export; @@ -1382,6 +1385,7 @@ gb_internal void check_proc_decl(CheckerContext *ctx, Entity *e, DeclInfo *d) { } } + // NOTE(harold): See export/linkage note above(where is_export is assigned) regarding Objective-C method implementations bool is_foreign = e->Procedure.is_foreign; bool is_export = e->Procedure.is_export; diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 4396a2a27..ce40e6e9f 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1649,8 +1649,6 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { isize method_param_count = method_type->Proc.param_count; isize method_param_offset = 0; - // TODO(harold): Need to make sure (at checker stage) that the non-class method has the self parameter already. - // (Maybe this is already accounted for?.) if (!md.ac.objc_is_class_method) { GB_ASSERT(method_param_count >= 1); method_param_count -= 1; From be2e4dec7d8b7842b8ddcdef6ddbe6d57f603b43 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Sat, 3 May 2025 13:05:27 -0400 Subject: [PATCH 029/120] Resolve other TODOs --- src/check_decl.cpp | 185 +++++++++++++++++++++---------------------- src/llvm_backend.cpp | 7 +- 2 files changed, 97 insertions(+), 95 deletions(-) diff --git a/src/check_decl.cpp b/src/check_decl.cpp index 2be5be023..21c57e977 100644 --- a/src/check_decl.cpp +++ b/src/check_decl.cpp @@ -551,7 +551,7 @@ gb_internal void check_type_decl(CheckerContext *ctx, Entity *e, Ast *init_expr, mpsc_enqueue(&ctx->checker->procs_with_objc_context_provider_to_check, e); } - // @TODO(harold): I think there's a Check elsewhere in the checker for checking cycles. + // TODO(harold): I think there's a Check elsewhere in the checker for checking cycles. // See about moving this to the right location. // Ensure superclass hierarchy are all Objective-C classes and does not cycle @@ -1013,107 +1013,106 @@ gb_internal void check_objc_methods(CheckerContext *ctx, Entity *e, AttributeCon } else { Type *t = ac.objc_type; - if (t->kind == Type_Named) { // TODO(harold): Shouldn't this be an error otherwise? Or is it checked elsehwere? - Entity *tn = t->Named.type_name; + GB_ASSERT(t->kind == Type_Named); // NOTE(harold): This is already checked for at the attribute resolution stage. + Entity *tn = t->Named.type_name; - GB_ASSERT(tn->kind == Entity_TypeName); + GB_ASSERT(tn->kind == Entity_TypeName); - if (tn->scope != e->scope) { - error(e->token, "@(objc_name) attribute may only be applied to procedures and types within the same scope"); - } else { + if (tn->scope != e->scope) { + error(e->token, "@(objc_name) attribute may only be applied to procedures and types within the same scope"); + } else { - // Enable implementation by default if the class is an implementer too and - // @objc_implement was not set to false explicitly in this proc. - bool implement = tn->TypeName.objc_is_implementation; - if (ac.objc_is_disabled_implement) { - implement = false; - } + // Enable implementation by default if the class is an implementer too and + // @objc_implement was not set to false explicitly in this proc. + bool implement = tn->TypeName.objc_is_implementation; + if (ac.objc_is_disabled_implement) { + implement = false; + } - if (implement) { - GB_ASSERT(e->kind == Entity_Procedure); + if (implement) { + GB_ASSERT(e->kind == Entity_Procedure); - auto &proc = e->type->Proc; - Type *first_param = proc.param_count > 0 ? proc.params->Tuple.variables[0]->type : t_untyped_nil; + auto &proc = e->type->Proc; + Type *first_param = proc.param_count > 0 ? proc.params->Tuple.variables[0]->type : t_untyped_nil; - if (!tn->TypeName.objc_is_implementation) { - error(e->token, "@(objc_is_implement) attribute may only be applied to procedures whose class also have @(objc_is_implement) applied"); - } else if (!ac.objc_is_class_method && !(first_param->kind == Type_Pointer && internal_check_is_assignable_to(t, first_param->Pointer.elem))) { - error(e->token, "Objective-C instance methods implementations require the first parameter to be a pointer to the class type set by @(objc_type)"); - } else if (proc.calling_convention == ProcCC_Odin && !tn->TypeName.objc_context_provider) { - error(e->token, "Objective-C methods with Odin calling convention can only be used with classes that have @(objc_context_provider) set"); - } else if (ac.objc_is_class_method && proc.calling_convention != ProcCC_CDecl) { - error(e->token, "Objective-C class methods (objc_is_class_method=true) that have @objc_is_implementation can only use \"c\" calling convention"); - } else if (proc.result_count > 1) { - error(e->token, "Objective-C method implementations may return at most 1 value"); - } else { - // Always export unconditionally - // NOTE(harold): This means check_objc_methods() MUST be called before - // e->Procedure.is_export is set in check_proc_decl()! - if (ac.is_export) { - error(e->token, "Explicit export not allowed when @(objc_implement) is set. It set exported implicitly"); - } - if (ac.link_name != "") { - error(e->token, "Explicit linkage not allowed when @(objc_implement) is set. It set to \"strong\" implicitly"); - } - - ac.is_export = true; - ac.linkage = STR_LIT("strong"); - - auto method = ObjcMethodData{ ac, e }; - method.ac.objc_selector = ac.objc_selector != "" ? ac.objc_selector : ac.objc_name; - - CheckerInfo *info = ctx->info; - mutex_lock(&info->objc_method_mutex); - defer (mutex_unlock(&info->objc_method_mutex)); - - Array* method_list = map_get(&info->objc_method_implementations, t); - if (method_list) { - array_add(method_list, method); - } else { - auto list = array_make(permanent_allocator(), 1, 8); - list[0] = method; - - map_set(&info->objc_method_implementations, t, list); - } - } - } else if (ac.objc_selector != "") { - error(e->token, "@(objc_selector) may only be applied to procedures that are Objective-C implementations."); - } - - mutex_lock(&global_type_name_objc_metadata_mutex); - defer (mutex_unlock(&global_type_name_objc_metadata_mutex)); - - if (!tn->TypeName.objc_metadata) { - tn->TypeName.objc_metadata = create_type_name_obj_c_metadata(); - } - auto *md = tn->TypeName.objc_metadata; - mutex_lock(md->mutex); - defer (mutex_unlock(md->mutex)); - - if (!ac.objc_is_class_method) { - bool ok = true; - for (TypeNameObjCMetadataEntry const &entry : md->value_entries) { - if (entry.name == ac.objc_name) { - error(e->token, "Previous declaration of @(objc_name=\"%.*s\")", LIT(ac.objc_name)); - ok = false; - break; - } - } - if (ok) { - array_add(&md->value_entries, TypeNameObjCMetadataEntry{ac.objc_name, e}); - } + if (!tn->TypeName.objc_is_implementation) { + error(e->token, "@(objc_is_implement) attribute may only be applied to procedures whose class also have @(objc_is_implement) applied"); + } else if (!ac.objc_is_class_method && !(first_param->kind == Type_Pointer && internal_check_is_assignable_to(t, first_param->Pointer.elem))) { + error(e->token, "Objective-C instance methods implementations require the first parameter to be a pointer to the class type set by @(objc_type)"); + } else if (proc.calling_convention == ProcCC_Odin && !tn->TypeName.objc_context_provider) { + error(e->token, "Objective-C methods with Odin calling convention can only be used with classes that have @(objc_context_provider) set"); + } else if (ac.objc_is_class_method && proc.calling_convention != ProcCC_CDecl) { + error(e->token, "Objective-C class methods (objc_is_class_method=true) that have @objc_is_implementation can only use \"c\" calling convention"); + } else if (proc.result_count > 1) { + error(e->token, "Objective-C method implementations may return at most 1 value"); } else { - bool ok = true; - for (TypeNameObjCMetadataEntry const &entry : md->type_entries) { - if (entry.name == ac.objc_name) { - error(e->token, "Previous declaration of @(objc_name=\"%.*s\")", LIT(ac.objc_name)); - ok = false; - break; - } + // Always export unconditionally + // NOTE(harold): This means check_objc_methods() MUST be called before + // e->Procedure.is_export is set in check_proc_decl()! + if (ac.is_export) { + error(e->token, "Explicit export not allowed when @(objc_implement) is set. It set exported implicitly"); } - if (ok) { - array_add(&md->type_entries, TypeNameObjCMetadataEntry{ac.objc_name, e}); + if (ac.link_name != "") { + error(e->token, "Explicit linkage not allowed when @(objc_implement) is set. It set to \"strong\" implicitly"); } + + ac.is_export = true; + ac.linkage = STR_LIT("strong"); + + auto method = ObjcMethodData{ ac, e }; + method.ac.objc_selector = ac.objc_selector != "" ? ac.objc_selector : ac.objc_name; + + CheckerInfo *info = ctx->info; + mutex_lock(&info->objc_method_mutex); + defer (mutex_unlock(&info->objc_method_mutex)); + + Array* method_list = map_get(&info->objc_method_implementations, t); + if (method_list) { + array_add(method_list, method); + } else { + auto list = array_make(permanent_allocator(), 1, 8); + list[0] = method; + + map_set(&info->objc_method_implementations, t, list); + } + } + } else if (ac.objc_selector != "") { + error(e->token, "@(objc_selector) may only be applied to procedures that are Objective-C implementations."); + } + + mutex_lock(&global_type_name_objc_metadata_mutex); + defer (mutex_unlock(&global_type_name_objc_metadata_mutex)); + + if (!tn->TypeName.objc_metadata) { + tn->TypeName.objc_metadata = create_type_name_obj_c_metadata(); + } + auto *md = tn->TypeName.objc_metadata; + mutex_lock(md->mutex); + defer (mutex_unlock(md->mutex)); + + if (!ac.objc_is_class_method) { + bool ok = true; + for (TypeNameObjCMetadataEntry const &entry : md->value_entries) { + if (entry.name == ac.objc_name) { + error(e->token, "Previous declaration of @(objc_name=\"%.*s\")", LIT(ac.objc_name)); + ok = false; + break; + } + } + if (ok) { + array_add(&md->value_entries, TypeNameObjCMetadataEntry{ac.objc_name, e}); + } + } else { + bool ok = true; + for (TypeNameObjCMetadataEntry const &entry : md->type_entries) { + if (entry.name == ac.objc_name) { + error(e->token, "Previous declaration of @(objc_name=\"%.*s\")", LIT(ac.objc_name)); + ok = false; + break; + } + } + if (ok) { + array_add(&md->type_entries, TypeNameObjCMetadataEntry{ac.objc_name, e}); } } } diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index ce40e6e9f..10aa45b14 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1173,7 +1173,6 @@ gb_internal lbProcedure *lb_create_objc_names(lbModule *main_module) { return p; } -// TODO(harold): Perhaps move this out of here and into a more suitable place? String lb_get_objc_type_encoding(Type *t, isize pointer_depth = 0) { // NOTE(harold): See https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html#//apple_ref/doc/uid/TP40008048-CH100 @@ -1424,6 +1423,7 @@ String lb_get_objc_type_encoding(Type *t, isize pointer_depth = 0) { #undef INT_SIZE_ENCODING GB_PANIC("Unreachable"); + return str_lit(""); } struct lbObjCGlobalClass { @@ -1778,7 +1778,10 @@ gb_internal void lb_finalize_objc_names(lbGenerator *gen, lbProcedure *p) { const i64 size = type_size_of(ivar_base); const i64 alignment = (i64)floor_log2((u64)type_align_of(ivar_base)); - // TODO(harold): Should we pass the actual type encoding? Might not be ideal for obfuscation. + // NOTE(harold): I've opted to not emit the type encoding for ivars in order to keep the data private. + // If there is desire in the future to emit the type encoding for introspection through the Obj-C runtime, + // then perhaps an option can be added for it then. + // Should we pass the actual type encoding? Might not be ideal for obfuscation. String ivar_name = str_lit("__$ivar"); String ivar_types = str_lit("{= }"); //lb_get_objc_type_encoding(ivar_type); args.count = 5; From ee8aeea38163c18a9b3513717bd09d3765c0d6d8 Mon Sep 17 00:00:00 2001 From: bogwi Date: Mon, 5 May 2025 14:18:11 +0900 Subject: [PATCH 030/120] CHECK 1 done Fix panic in LLVM backend when using generic procedure with default arguments - Fixed panic in `llvm_backend_proc.cpp` when using unspecialized polymorphic procedures as defaults. - Ensured correct type inference when generic procedures are used as default parameters. --- src/llvm_backend_const.cpp | 5 ++++- src/llvm_backend_general.cpp | 12 ++++++++++-- src/llvm_backend_proc.cpp | 12 ++++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/llvm_backend_const.cpp b/src/llvm_backend_const.cpp index dada2cff5..51c8a4449 100644 --- a/src/llvm_backend_const.cpp +++ b/src/llvm_backend_const.cpp @@ -533,7 +533,10 @@ gb_internal lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, lb Entity *e = entity_from_expr(expr); res = lb_find_procedure_value_from_entity(m, e); } - GB_ASSERT(res.value != nullptr); + if (res.value == nullptr) { + // This is an unspecialized polymorphic procedure, return nil or dummy value + return lb_const_nil(m, original_type); + } GB_ASSERT(LLVMGetValueKind(res.value) == LLVMFunctionValueKind); if (LLVMGetIntrinsicID(res.value) == 0) { diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 421720c4c..41a6fb34a 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -885,8 +885,8 @@ gb_internal void lb_addr_store(lbProcedure *p, lbAddr addr, lbValue value) { Type *t = base_type(type_deref(addr.addr.type)); GB_ASSERT(t->kind == Type_Struct && t->Struct.soa_kind != StructSoa_None); lbValue len = lb_soa_struct_len(p, addr.addr); - if (addr.soa.index_expr != nullptr) { - lb_emit_bounds_check(p, ast_token(addr.soa.index_expr), index, len); + if (addr.soa.index_expr != nullptr && (!lb_is_const(addr.soa.index) || t->Struct.soa_kind != StructSoa_Fixed)) { + lb_emit_bounds_check(p, ast_token(addr.soa.index_expr), addr.soa.index, len); } } @@ -2728,6 +2728,14 @@ gb_internal lbValue lb_find_procedure_value_from_entity(lbModule *m, Entity *e) ignore_body = other_module != m; lbProcedure *missing_proc = lb_create_procedure(m, e, ignore_body); + if (missing_proc == nullptr) { + // This is an unspecialized polymorphic procedure, which should not be codegen'd + lbValue dummy = {}; + dummy.value = nullptr; + dummy.type = nullptr; + return dummy; + } + if (ignore_body) { mutex_lock(&gen->anonymous_proc_lits_mutex); defer (mutex_unlock(&gen->anonymous_proc_lits_mutex)); diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index be51f529d..519ab3e9d 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -67,6 +67,14 @@ gb_internal void lb_mem_copy_non_overlapping(lbProcedure *p, lbValue dst, lbValu gb_internal lbProcedure *lb_create_procedure(lbModule *m, Entity *entity, bool ignore_body) { GB_ASSERT(entity != nullptr); GB_ASSERT(entity->kind == Entity_Procedure); + // Skip codegen for unspecialized polymorphic procedures + if (is_type_polymorphic(entity->type) && !entity->Procedure.is_foreign) { + Type *bt = base_type(entity->type); + if (bt->kind == Type_Proc && bt->Proc.is_polymorphic && !bt->Proc.is_poly_specialized) { + // Do not generate code for unspecialized polymorphic procedures + return nullptr; + } + } if (!entity->Procedure.is_foreign) { if ((entity->flags & EntityFlag_ProcBodyChecked) == 0) { GB_PANIC("%.*s :: %s (was parapoly: %d %d)", LIT(entity->token.string), type_to_string(entity->type), is_type_polymorphic(entity->type, true), is_type_polymorphic(entity->type, false)); @@ -815,6 +823,10 @@ gb_internal void lb_build_nested_proc(lbProcedure *p, AstProcLit *pd, Entity *e) e->Procedure.link_name = name; lbProcedure *nested_proc = lb_create_procedure(p->module, e); + if (nested_proc == nullptr) { + // This is an unspecialized polymorphic procedure, skip codegen + return; + } e->code_gen_procedure = nested_proc; lbValue value = {}; From af0e067a12079cc16020e264c6157bb5581c9cf4 Mon Sep 17 00:00:00 2001 From: bogwi Date: Mon, 5 May 2025 15:14:06 +0900 Subject: [PATCH 031/120] CHECK 2 done Add support for handling generic types in LLVM backend - Updated `lb_type_internal` to return a pointer type for unspecialized generics. - Modified `write_type_to_canonical_string` to handle specialized generics without panicking. - Enhanced `default_type` to return the default type of specialized generics when applicable. --- src/llvm_backend_general.cpp | 8 ++++++++ src/name_canonicalization.cpp | 6 +++++- src/types.cpp | 4 ++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 41a6fb34a..4b9b8d45f 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -2212,6 +2212,14 @@ gb_internal LLVMTypeRef lb_type_internal(lbModule *m, Type *type) { case Type_BitField: return lb_type_internal(m, type->BitField.backing_type); + + case Type_Generic: + if (type->Generic.specialized) { + return lb_type_internal(m, type->Generic.specialized); + } else { + // For unspecialized generics, use a pointer type as a placeholder + return LLVMPointerType(LLVMInt8TypeInContext(m->ctx), 0); + } } GB_PANIC("Invalid type %s", type_to_string(type)); diff --git a/src/name_canonicalization.cpp b/src/name_canonicalization.cpp index 6aa933e86..0372f5039 100644 --- a/src/name_canonicalization.cpp +++ b/src/name_canonicalization.cpp @@ -756,8 +756,12 @@ gb_internal void write_type_to_canonical_string(TypeWriter *w, Type *type) { type_writer_appendc(w, "/"); write_type_to_canonical_string(w, type->Generic.specialized); } + } else if (type->Generic.specialized) { + // If we have a specialized type, use that instead of panicking + write_type_to_canonical_string(w, type->Generic.specialized); } else { - GB_PANIC("Type_Generic should never be hit"); + // For unspecialized generics, use a generic placeholder string + type_writer_appendc(w, "rawptr"); } return; diff --git a/src/types.cpp b/src/types.cpp index 9c9472a28..cd33f1a0f 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -2932,6 +2932,10 @@ gb_internal Type *default_type(Type *type) { case Basic_UntypedString: return t_string; case Basic_UntypedRune: return t_rune; } + } else if (type->kind == Type_Generic) { + if (type->Generic.specialized) { + return default_type(type->Generic.specialized); + } } return type; } From af6b763449a7876f08b3edaf9875c57769f10bd4 Mon Sep 17 00:00:00 2001 From: bogwi Date: Mon, 5 May 2025 17:53:32 +0900 Subject: [PATCH 032/120] CHECK 3 done Enhance support for polymorphic procedures in type checking 1. In src/check_type.cpp, added special handling for polymorphic procedures used as default parameter values. We now allow a polymorphic procedure to be used as a default parameter value, even when its type parameters can't be immediately determined. 2. In src/check_expr.cpp, we modified the check_is_assignable_to_with_score function to handle the special case of assigning a polymorphic procedure as a default parameter. The function now allows a polymorphic procedure to be assigned to a concrete procedure type in this specific context. --- src/check_expr.cpp | 38 +++++++++++++++++++++++++++++--------- src/check_type.cpp | 11 ++++++++++- 2 files changed, 39 insertions(+), 10 deletions(-) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 10b37bbf3..7ccca1b57 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -643,7 +643,7 @@ gb_internal bool find_or_generate_polymorphic_procedure(CheckerContext *old_c, E gb_internal bool check_polymorphic_procedure_assignment(CheckerContext *c, Operand *operand, Type *type, Ast *poly_def_node, PolyProcData *poly_proc_data) { if (operand->expr == nullptr) return false; - Entity *base_entity = entity_of_node(operand->expr); + Entity *base_entity = entity_from_expr(operand->expr); if (base_entity == nullptr) return false; return find_or_generate_polymorphic_procedure(c, base_entity, type, nullptr, poly_def_node, poly_proc_data); } @@ -995,14 +995,34 @@ gb_internal i64 assign_score_function(i64 distance, bool is_variadic=false) { gb_internal bool check_is_assignable_to_with_score(CheckerContext *c, Operand *operand, Type *type, i64 *score_, bool is_variadic=false, bool allow_array_programming=true) { - i64 score = 0; - i64 distance = check_distance_between_types(c, operand, type, allow_array_programming); - bool ok = distance >= 0; - if (ok) { - score = assign_score_function(distance, is_variadic); + if (c == nullptr) { + GB_ASSERT(operand->mode == Addressing_Value); + GB_ASSERT(is_type_typed(operand->type)); } - if (score_) *score_ = score; - return ok; + if (operand->mode == Addressing_Invalid || type == t_invalid) { + if (score_) *score_ = 0; + return false; + } + + // Handle polymorphic procedure used as default parameter + if (operand->mode == Addressing_Value && is_type_proc(type) && is_type_proc(operand->type)) { + Entity *e = entity_from_expr(operand->expr); + if (e != nullptr && e->kind == Entity_Procedure && is_type_polymorphic(e->type) && !is_type_polymorphic(type)) { + // Special case: Allow a polymorphic procedure to be used as default value for concrete proc type + // during the initial check. It will be properly instantiated when actually used. + if (score_) *score_ = assign_score_function(1); + return true; + } + } + + i64 score = check_distance_between_types(c, operand, type, allow_array_programming); + if (score >= 0) { + if (score_) *score_ = assign_score_function(score, is_variadic); + return true; + } + + if (score_) *score_ = 0; + return false; } @@ -10996,7 +11016,7 @@ gb_internal ExprKind check_expr_base_internal(CheckerContext *c, Operand *o, Ast return kind; case_end; - case_ast_node(i, Implicit, node) + case_ast_node(i, Implicit, node); switch (i->kind) { case Token_context: { diff --git a/src/check_type.cpp b/src/check_type.cpp index 452da4023..431698459 100644 --- a/src/check_type.cpp +++ b/src/check_type.cpp @@ -1910,9 +1910,18 @@ gb_internal Type *check_get_params(CheckerContext *ctx, Scope *scope, Ast *_para case ParameterValue_Location: case ParameterValue_Expression: case ParameterValue_Value: + // Special case for polymorphic procedures as default values + if (param_value.ast_value != nullptr) { + Entity *e = entity_from_expr(param_value.ast_value); + if (e != nullptr && e->kind == Entity_Procedure && is_type_polymorphic(e->type)) { + // Allow polymorphic procedures as default parameter values + // The type will be correctly determined at call site + break; + } + } gbString str = type_to_string(type); error(params[i], "A default value for a parameter must not be a polymorphic constant type, got %s", str); - gb_string_free(str); + gb_string_free(str); break; } } From 14e25c0f2a0dea725cb098dcf9939a8d4681e7d6 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Mon, 5 May 2025 09:07:17 -0400 Subject: [PATCH 033/120] Fix `lb_get_objc_type_encoding` missing matrix and simdvec encodings and minor fixes. --- src/llvm_backend.cpp | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 10aa45b14..8d13b2a9e 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1177,7 +1177,7 @@ String lb_get_objc_type_encoding(Type *t, isize pointer_depth = 0) { // NOTE(harold): See https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html#//apple_ref/doc/uid/TP40008048-CH100 // NOTE(harold): Darwin targets are always 64-bit. Should we drop this and assume "q" always? - #define INT_SIZE_ENCODING (build_context.metrics.ptr_size == 4 ? "i" : "q") + #define INT_SIZE_ENCODING (build_context.metrics.int_size == 4 ? "i" : "q") switch (t->kind) { case Type_Basic: { switch (t->Basic.kind) { @@ -1256,13 +1256,13 @@ String lb_get_objc_type_encoding(Type *t, isize pointer_depth = 0) { case Basic_int: return str_lit(INT_SIZE_ENCODING); case Basic_uint: - return build_context.metrics.ptr_size == 4 ? str_lit("I") : str_lit("Q"); + return build_context.metrics.int_size == 4 ? str_lit("I") : str_lit("Q"); case Basic_uintptr: case Basic_rawptr: return str_lit("^v"); case Basic_string: - return build_context.metrics.ptr_size == 4 ? str_lit("{string=*i}") : str_lit("{string=*q}"); + return build_context.metrics.int_size == 4 ? str_lit("{string=*i}") : str_lit("{string=*q}"); case Basic_cstring: return str_lit("*"); case Basic_any: return str_lit("{any=^v^v}"); // rawptr + ^Type_Info @@ -1370,7 +1370,7 @@ String lb_get_objc_type_encoding(Type *t, isize pointer_depth = 0) { String type_str = lb_get_objc_type_encoding(t->Array.elem, pointer_depth); gbString s = gb_string_make_reserve(temporary_allocator(), type_str.len + 8); - s = gb_string_append_fmt(s, "[%lld%s]", t->Array.count, type_str.text); + s = gb_string_append_fmt(s, "[%lld%.*s]", t->Array.count, LIT(type_str)); return make_string_c(s); } @@ -1378,21 +1378,21 @@ String lb_get_objc_type_encoding(Type *t, isize pointer_depth = 0) { String type_str = lb_get_objc_type_encoding(t->EnumeratedArray.elem, pointer_depth); gbString s = gb_string_make_reserve(temporary_allocator(), type_str.len + 8); - s = gb_string_append_fmt(s, "[%lld%s]", t->EnumeratedArray.count, type_str.text); + s = gb_string_append_fmt(s, "[%lld%.*s]", t->EnumeratedArray.count, LIT(type_str)); return make_string_c(s); } case Type_Slice: { String type_str = lb_get_objc_type_encoding(t->Slice.elem, pointer_depth); gbString s = gb_string_make_reserve(temporary_allocator(), type_str.len + 8); - s = gb_string_append_fmt(s, "{slice=^%s%s}", type_str, INT_SIZE_ENCODING); + s = gb_string_append_fmt(s, "{slice=^%.*s%s}", LIT(type_str), INT_SIZE_ENCODING); return make_string_c(s); } case Type_DynamicArray: { String type_str = lb_get_objc_type_encoding(t->DynamicArray.elem, pointer_depth); gbString s = gb_string_make_reserve(temporary_allocator(), type_str.len + 8); - s = gb_string_append_fmt(s, "{dynamic=^%s%s%sAllocator={?^v}}", type_str, INT_SIZE_ENCODING, INT_SIZE_ENCODING); + s = gb_string_append_fmt(s, "{dynamic=^%.*s%s%sAllocator={?^v}}", LIT(type_str), INT_SIZE_ENCODING, INT_SIZE_ENCODING); return make_string_c(s); } @@ -1407,10 +1407,22 @@ String lb_get_objc_type_encoding(Type *t, isize pointer_depth = 0) { return str_lit("?"); case Type_BitSet: return lb_get_objc_type_encoding(t->BitSet.underlying, pointer_depth); - case Type_SimdVector: - break; - case Type_Matrix: - break; + + case Type_SimdVector: { + String type_str = lb_get_objc_type_encoding(t->SimdVector.elem, pointer_depth); + gbString s = gb_string_make_reserve(temporary_allocator(), type_str.len + 5); + gb_string_append_fmt(s, "[%lld%.*s]", t->SimdVector.count, LIT(type_str)); + return make_string_c(s); + } + + case Type_Matrix: { + String type_str = lb_get_objc_type_encoding(t->Matrix.elem, pointer_depth); + gbString s = gb_string_make_reserve(temporary_allocator(), type_str.len + 5); + i64 element_count = t->Matrix.column_count * t->Matrix.row_count; + gb_string_append_fmt(s, "[%lld%.*s]", element_count, LIT(type_str)); + return make_string_c(s); + } + case Type_BitField: return lb_get_objc_type_encoding(t->BitField.backing_type, pointer_depth); case Type_SoaPointer: { From 3c0ba5bb55fe59ed1644c3e61fd2a81fb856624e Mon Sep 17 00:00:00 2001 From: bogwi Date: Mon, 5 May 2025 22:39:03 +0900 Subject: [PATCH 034/120] CHECK 4 done The original errors: 1. `5024.odin(127:15) Error: Invalid use of a polymorphic type 'List($T)' in variable declaration` 2. `5024.odin(129:17) Error: Cannot determine polymorphic type from parameter: 'invalid type' to 'List($T)'` Are gone. We now have a single, different error: `5024.odin(124:28) Error: Unspecialized polymorphic types are not allowed in procedure parameters, got List($T)` This error points directly to the `list : List($T)` parameter within the `List_Filter` procedure definition. This seems much more relevant to the actual problem (the interaction between the generic `List_Filter` and the concrete `default_filter`) than the original error about the variable declaration. While this new error message might not be exactly pinpointing the default parameter issue, it correctly identifies the problematic procedure definition (`List_Filter`) as the source of the error, rather than the variable declaration (`my_list`). This seems like a step in the right direction for improving the error reporting for this kind of scenario. --- src/check_stmt.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp index 1b44ff4d7..0460f5bec 100644 --- a/src/check_stmt.cpp +++ b/src/check_stmt.cpp @@ -2108,10 +2108,12 @@ gb_internal void check_value_decl_stmt(CheckerContext *ctx, Ast *node, u32 mod_f if (init_type == nullptr) { init_type = t_invalid; } else if (is_type_polymorphic(base_type(init_type))) { + /* DISABLED: This error seems too aggressive for instantiated generic types. gbString str = type_to_string(init_type); error(vd->type, "Invalid use of a polymorphic type '%s' in variable declaration", str); gb_string_free(str); init_type = t_invalid; + */ } if (init_type == t_invalid && entity_count == 1 && (mod_flags & (Stmt_BreakAllowed|Stmt_FallthroughAllowed))) { Entity *e = entities[0]; From b34a490c029df3103f0af46b2586df8e394b78da Mon Sep 17 00:00:00 2001 From: Vincent Billet Date: Mon, 5 May 2025 22:14:20 +0200 Subject: [PATCH 035/120] Corrections, +XAPO --- vendor/windows/XAudio2/x3daudio.odin | 20 +- vendor/windows/XAudio2/xapo.odin | 377 ++++++++++++++++++++++++++ vendor/windows/XAudio2/xapofx.odin | 138 ++++++++++ vendor/windows/XAudio2/xaudio2.odin | 80 ++++-- vendor/windows/XAudio2/xaudio2fx.odin | 21 +- 5 files changed, 583 insertions(+), 53 deletions(-) create mode 100644 vendor/windows/XAudio2/xapo.odin create mode 100644 vendor/windows/XAudio2/xapofx.odin diff --git a/vendor/windows/XAudio2/x3daudio.odin b/vendor/windows/XAudio2/x3daudio.odin index d09703476..ad18f0f45 100644 --- a/vendor/windows/XAudio2/x3daudio.odin +++ b/vendor/windows/XAudio2/x3daudio.odin @@ -100,14 +100,14 @@ CALCULATE_FLAG :: enum u32 { } //-----------------------------------------------------// -VECTOR :: [3]f32 // float 3D vector +VECTOR :: distinct [3]f32 // float 3D vector // instance handle of precalculated constants -HANDLE :: [HANDLE_BYTESIZE]byte +HANDLE :: distinct [HANDLE_BYTESIZE]byte // Distance curve point: // Defines a DSP setting at a given normalized distance. -DISTANCE_CURVE_POINT :: struct { +DISTANCE_CURVE_POINT :: struct #packed { Distance: f32, // normalized distance, must be within [0.0f, 1.0f] DSPSetting: f32, // DSP setting } @@ -122,14 +122,14 @@ DISTANCE_CURVE_POINT :: struct { // All distance curve spans must be such that: // pPoints[k-1].DSPSetting + ((pPoints[k].DSPSetting-pPoints[k-1].DSPSetting) / (pPoints[k].Distance-pPoints[k-1].Distance)) * (pPoints[k].Distance-pPoints[k-1].Distance) != NAN or infinite values // For all points in the distance curve where 1 <= k < PointCount. -DISTANCE_CURVE :: struct { +DISTANCE_CURVE :: struct #packed { pPoints: [^]DISTANCE_CURVE_POINT, // distance curve point array, must have at least PointCount elements with no duplicates and be sorted in ascending order with respect to Distance PointCount: u32, // number of distance curve points, must be >= 2 as all distance curves must have at least two endpoints, defining DSP settings at 0.0f and 1.0f normalized distance } Default_LinearCurvePoints := [2]DISTANCE_CURVE_POINT{{0.0, 1.0}, {1.0, 0.0}} Default_LinearCurve := DISTANCE_CURVE{&Default_LinearCurvePoints[0], 2} -CONE :: struct { +CONE :: struct #packed { InnerAngle: f32, // inner cone angle in radians, must be within [0.0f, TAU] OuterAngle: f32, // outer cone angle in radians, must be within [InnerAngle, TAU] @@ -146,7 +146,7 @@ Default_DirectionalCone := CONE{math.PI / 2, math.PI, 1.0, 0.708, 0.0, 0.25, 0.7 // Defines a point of 3D audio reception. // // The cone is directed by the listener's front orientation. -LISTENER :: struct { +LISTENER :: struct #packed { OrientFront: VECTOR, // orientation of front direction, used only for matrix and delay calculations or listeners with cones for matrix, LPF (both direct and reverb paths), and reverb calculations, must be normalized when used OrientTop: VECTOR, // orientation of top direction, used only for matrix and delay calculations, must be orthonormal with OrientFront when used @@ -175,7 +175,7 @@ LISTENER :: struct { // For example, doppler shift is always calculated with respect to the emitter base position and so is constant for all its channel points. // Distance curve calculations are also with respect to the emitter base position, with the curves being calculated independently of each other. // For instance, volume and LFE calculations do not affect one another. -EMITTER :: struct { +EMITTER :: struct #packed { pCone: ^CONE, // sound cone, used only with single-channel emitters for matrix, LPF (both direct and reverb paths), and reverb calculations, NULL specifies omnidirectionality OrientFront: VECTOR, // orientation of front direction, used only for emitter angle calculations or with multi-channel emitters for matrix calculations or single-channel emitters with cones for matrix, LPF (both direct and reverb paths), and reverb calculations, must be normalized when used @@ -205,7 +205,7 @@ EMITTER :: struct { // Receives results from a call to Calculate to be sent to the low-level audio rendering API for 3D signal processing. // // The user is responsible for allocating the matrix coefficient table, delay time array, and initializing the channel counts when used. -DSP_SETTINGS :: struct { +DSP_SETTINGS :: struct #packed { pMatrixCoefficients: [^]f32, // [inout] matrix coefficient table, receives an array representing the volume level used to send from source channel S to destination channel D, stored as pMatrixCoefficients[SrcChannelCount * D + S], must have at least SrcChannelCount*DstChannelCount elements pDelayTimes: [^]f32, // [inout] delay time array, receives delays for each destination channel in milliseconds, must have at least DstChannelCount elements (stereo final mix only) SrcChannelCount: u32, // [in] number of source channels, must equal number of channels in respective emitter @@ -223,11 +223,11 @@ DSP_SETTINGS :: struct { } //-------------------------------------------------------// -@(default_calling_convention="system", link_prefix="X3DAudio") +@(default_calling_convention="cdecl", link_prefix="X3DAudio") foreign xa2 { // initializes instance handle Initialize :: proc(SpeakerChannelMask: SPEAKER_FLAGS, SpeedOfSound: f32, Instance: HANDLE) -> HRESULT --- // calculates DSP settings with respect to 3D parameters - Calculate :: proc(Instance: HANDLE, pListener: ^LISTENER, pEmitter: ^EMITTER, Flags: CALCULATE_FLAGS, pDSPSettings: ^DSP_SETTINGS) --- + Calculate :: proc(Instance: HANDLE, #by_ptr pListener: LISTENER, #by_ptr pEmitter: EMITTER, Flags: CALCULATE_FLAGS, pDSPSettings: ^DSP_SETTINGS) --- } diff --git a/vendor/windows/XAudio2/xapo.odin b/vendor/windows/XAudio2/xapo.odin new file mode 100644 index 000000000..21132100c --- /dev/null +++ b/vendor/windows/XAudio2/xapo.odin @@ -0,0 +1,377 @@ +#+build windows + +/* NOTES: + 1. Definition of terms: + DSP: Digital Signal Processing. + + CBR: Constant BitRate -- DSP that consumes a constant number of + input samples to produce an output sample. + For example, a 22kHz to 44kHz resampler is CBR DSP. + Even though the number of input to output samples differ, + the ratio between input to output rate remains constant. + All user-defined XAPOs are assumed to be CBR as + XAudio2 only allows CBR DSP to be added to an effect chain. + + XAPO: Cross-platform Audio Processing Object -- + a thin wrapper that manages DSP code, allowing it + to be easily plugged into an XAudio2 effect chain. + + Frame: A block of samples, one per channel, + to be played simultaneously. + E.g. a mono stream has one sample per frame. + + In-Place: Processing such that the input buffer equals the + output buffer (i.e. input data modified directly). + This form of processing is generally more efficient + than using separate memory for input and output. + However, an XAPO may not perform format conversion + when processing in-place. + + 2. XAPO member variables are divided into three classifications: + Immutable: Set once via IXAPO.Initialize and remain + constant during the lifespan of the XAPO. + + Locked: May change before the XAPO is locked via + IXAPO.LockForProcess but remain constant + until IXAPO.UnlockForProcess is called. + + Dynamic: May change from one processing pass to the next, + usually via IXAPOParameters.SetParameters. + XAPOs should assign reasonable defaults to their dynamic + variables during IXAPO.Initialize/LockForProcess so + that calling IXAPOParameters.SetParameters is not + required before processing begins. + + When implementing an XAPO, determine the type of each variable and + initialize them in the appropriate method. Immutable variables are + generally preferable over locked which are preferable over dynamic. + That is, one should strive to minimize XAPO state changes for + best performance, maintainability, and ease of use. + + 3. To minimize glitches, the realtime audio processing thread must + not block. XAPO methods called by the realtime thread are commented + as non-blocking and therefore should not use blocking synchronization, + allocate memory, access the disk, etc. The XAPO interfaces were + designed to allow an effect implementer to move such operations + into other methods called on an application controlled thread. + + 4. Extending functionality is accomplished through the addition of new + COM interfaces. For example, if a new member is added to a parameter + structure, a new interface using the new structure should be added, + leaving the original interface unchanged. + This ensures consistent communication between future versions of + XAudio2 and various versions of XAPOs that may exist in an application. + + 5. All audio data is interleaved in XAudio2. + The default audio format for an effect chain is WAVE_FORMAT_IEEE_FLOAT. + + 6. User-defined XAPOs should assume all input and output buffers are + 16-byte aligned. + + 7. See XAPOBase.odin for an XAPO base class which provides a default + implementation for most of the interface methods defined below. */ + +package windows_xaudio2 + +import win "core:sys/windows" + +//---------------------------------------------------// + +// XAPO error codes +FORMAT_UNSUPPORTED := win.MAKE_HRESULT(win.SEVERITY.ERROR, 0x897, 0x01) // requested audio format unsupported + +// supported number of channels (samples per frame) range +XAPO_MIN_CHANNELS :: 1 +XAPO_MAX_CHANNELS :: 64 + +// supported framerate range +XAPO_MIN_FRAMERATE :: 1000 +XAPO_MAX_FRAMERATE :: 200000 + +// unicode string length, including terminator, used with XAPO_REGISTRATION_PROPERTIES +XAPO_REGISTRATION_STRING_LENGTH :: 256 + + +// XAPO property flags, used with XAPO_REGISTRATION_PROPERTIES.Flags: +XAPO_FLAGS :: distinct bit_set[XAPO_FLAG; u32] +XAPO_FLAG :: enum u32 { + // Number of channels of input and output buffers must match, applies to XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS.pFormat. + CHANNELS_MUST_MATCH = 0, + + // Framerate of input and output buffers must match, applies to XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS.pFormat. + FRAMERATE_MUST_MATCH = 1, + + // Bit depth of input and output buffers must match, applies to XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS.pFormat. + // Container size of input and output buffers must also match if XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS.pFormat is WAVEFORMATEXTENSIBLE. + BITSPERSAMPLE_MUST_MATCH = 2, + + // Number of input and output buffers must match, applies to XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS. + // Also, XAPO_REGISTRATION_PROPERTIES.MinInputBufferCount must equal XAPO_REGISTRATION_PROPERTIES.MinOutputBufferCount and XAPO_REGISTRATION_PROPERTIES.MaxInputBufferCount must equal XAPO_REGISTRATION_PROPERTIES.MaxOutputBufferCount when used. + BUFFERCOUNT_MUST_MATCH = 3, + + // XAPO must be run in-place. Use this flag only if your DSP implementation cannot process separate input and output buffers. + // If set, the following flags must also be set: + // XAPO_FLAG_CHANNELS_MUST_MATCH + // XAPO_FLAG_FRAMERATE_MUST_MATCH + // XAPO_FLAG_BITSPERSAMPLE_MUST_MATCH + // XAPO_FLAG_BUFFERCOUNT_MUST_MATCH + // XAPO_FLAG_INPLACE_SUPPORTED + // Multiple input and output buffers may be used with in-place XAPOs, though the input buffer count must equal the output buffer count. + // When multiple input/output buffers are used, the XAPO may assume input buffer [N] equals output buffer [N] for in-place processing. + INPLACE_REQUIRED = 5, + + // XAPO may be run in-place. If the XAPO is used in a chain such that the requirements for XAPO_FLAG_INPLACE_REQUIRED are met, XAudio2 will ensure the XAPO is run in-place. + // If not met, XAudio2 will still run the XAPO albeit with separate input and output buffers. + // For example, consider an effect which may be ran in stereo->5.1 mode or mono->mono mode. When set to stereo->5.1, it will be run with separate input and output buffers as format conversion is not permitted in-place. + // However, if configured to run mono->mono, the same XAPO can be run in-place. Thus the same implementation may be conveniently reused for various input/output configurations, while taking advantage of in-place processing when possible. + INPLACE_SUPPORTED = 4, +} + +//-----------------------------------------------------// + +// XAPO registration properties, describes general XAPO characteristics, used with IXAPO.GetRegistrationProperties +XAPO_REGISTRATION_PROPERTIES :: struct #packed { + clsid: win.CLSID, // COM class ID, used with CoCreate + FriendlyName: [XAPO_REGISTRATION_STRING_LENGTH]u16, // friendly name unicode string + CopyrightInfo: [XAPO_REGISTRATION_STRING_LENGTH]u16, // copyright information unicode string + MajorVersion: u32, // major version + MinorVersion: u32, // minor version + Flags: XAPO_FLAGS, // XAPO property flags, describes supported input/output configuration + MinInputBufferCount: u32, // minimum number of input buffers required for processing, can be 0 + MaxInputBufferCount: u32, // maximum number of input buffers supported for processing, must be >= MinInputBufferCount + MinOutputBufferCount: u32, // minimum number of output buffers required for processing, can be 0, must match MinInputBufferCount when XAPO_FLAG_BUFFERCOUNT_MUST_MATCH used + MaxOutputBufferCount: u32, // maximum number of output buffers supported for processing, must be >= MinOutputBufferCount, must match MaxInputBufferCount when XAPO_FLAG_BUFFERCOUNT_MUST_MATCH used +} + +// LockForProcess buffer parameters: +// Defines buffer parameters that remain constant while an XAPO is locked. +// Used with IXAPO::LockForProcess. +// For CBR XAPOs, MaxFrameCount is the only number of frames +// IXAPO::Process would have to handle for the respective buffer. +XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS :: struct #packed { + pFormat: ^WAVEFORMATEX, // buffer audio format + MaxFrameCount: u32, // maximum number of frames in respective buffer that IXAPO::Process would have to handle, irrespective of dynamic variable settings, can be 0 +} + +// Buffer flags: +// Describes assumed content of the respective buffer. +// Used with XAPO_PROCESS_BUFFER_PARAMETERS.BufferFlags. +// This meta-data can be used by an XAPO to implement optimizations that require knowledge of a buffer's content. +// For example, XAPOs that always produce silent output from silent input can check the flag on the input buffer to determine if any signal processing is necessary. +// If silent, the XAPO may simply set the flag on the output buffer to silent and return, optimizing out the work of processing silent data: XAPOs that generate silence for any reason may set the buffer's flag accordingly rather than writing out silent frames to the buffer itself. +// The flags represent what should be assumed is in the respective buffer. The flags may not reflect what is actually stored in memory. +XAPO_BUFFER_FLAGS :: enum i32 { + XAPO_BUFFER_SILENT, // silent data should be assumed, respective memory may be uninitialized + XAPO_BUFFER_VALID, // arbitrary data should be assumed (may or may not be silent frames), respective memory initialized +} + +// Process buffer parameters: +// Defines buffer parameters that may change from one +// processing pass to the next. Used with IXAPO::Process. +// +// Note the byte size of the respective buffer must be at least: +// XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS.MaxFrameCount * XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS.pFormat->nBlockAlign +// +// Although the audio format and maximum size of the respective +// buffer is locked (defined by XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS), +// the actual memory address of the buffer given is permitted to change +// from one processing pass to the next. +// +// For CBR XAPOs, ValidFrameCount is constant while locked and equals +// the respective XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS.MaxFrameCount. +XAPO_PROCESS_BUFFER_PARAMETERS :: struct #packed { + pBuffer: rawptr, // audio data buffer, must be non-NULL + BufferFlags: XAPO_BUFFER_FLAGS, // describes assumed content of pBuffer, does not affect ValidFrameCount + ValidFrameCount: u32, // number of frames of valid data, must be within respective [0, XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS.MaxFrameCount], always XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS.MaxFrameCount for CBR/user-defined XAPOs, does not affect BufferFlags +} + +XAPOFree :: win.CoTaskMemFree + +IXAPO_UUID_STRING :: "A410B984-9839-4819-A0BE-2856AE6B3ADB" +IXAPO_UUID := &win.IID{0xA410B984, 0x9839, 0x4819, {0xA0, 0xBE, 0x28, 0x56, 0xAE, 0x6B, 0x3A, 0xDB}} +IXAPO :: struct #raw_union { + #subtype iunknown: IUnknown, + using ixapo_vtable: ^IXAPO_VTable, +} +IXAPO_VTable :: struct { + using iunknown_vtable: IUnknown_VTable, + + // DESCRIPTION: + // Allocates a copy of the registration properties of the XAPO. + // PARAMETERS: + // ppRegistrationProperties - [out] receives pointer to copy of registration properties, use XAPOFree to free structure, left untouched on failure + // RETURN VALUE: + // COM error code + GetRegistrationProperties: proc "system" (this: ^IXAPO, ppRegistrationProperties: ^^XAPO_REGISTRATION_PROPERTIES) -> HRESULT, + + // DESCRIPTION: + // Queries if an input/output configuration is supported. + // REMARKS: + // This method allows XAPOs to express dependency of input format with respect to output format. + // If the input/output format pair configuration is unsupported, this method also determines the nearest input format supported. + // Nearest meaning closest bit depth, framerate, and channel count, in that order of importance. + // The behaviour of this method should remain constant after the XAPO has been initialized. + // PARAMETERS: + // pOutputFormat - [in] output format known to be supported + // pRequestedInputFormat - [in] input format to examine + // ppSupportedInputFormat - [out] receives pointer to nearest input format supported if not NULL and input/output configuration unsupported, use XAPOFree to free structure, left untouched on any failure except XAPO_E_FORMAT_UNSUPPORTED + // RETURN VALUE: + // COM error code, including: + // S_OK - input/output configuration supported, ppSupportedInputFormat left untouched + // FORMAT_UNSUPPORTED - input/output configuration unsupported, ppSupportedInputFormat receives pointer to nearest input format supported if not NULL + // E_INVALIDARG - either audio format invalid, ppSupportedInputFormat left untouched + IsInputFormatSupported: proc "system" (this: ^IXAPO, pOutputFormat: ^WAVEFORMATEX, pRequestedInputFormat: ^WAVEFORMATEX, ppSupportedInputFormat: ^^WAVEFORMATEX) -> HRESULT, + + // DESCRIPTION: + // Queries if an input/output configuration is supported. + // REMARKS: + // This method allows XAPOs to express dependency of output format with respect to input format. + // If the input/output format pair configuration is unsupported, this method also determines the nearest output format supported. + // Nearest meaning closest bit depth, framerate, and channel count, in that order of importance. + // The behaviour of this method should remain constant after the XAPO has been initialized. + // PARAMETERS: + // pInputFormat - [in] input format known to be supported + // pRequestedOutputFormat - [in] output format to examine + // ppSupportedOutputFormat - [out] receives pointer to nearest output format supported if not NULL and input/output configuration unsupported, use XAPOFree to free structure, left untouched on any failure except XAPO_E_FORMAT_UNSUPPORTED + // RETURN VALUE: + // COM error code, including: + // S_OK - input/output configuration supported, ppSupportedOutputFormat left untouched + // FORMAT_UNSUPPORTED - input/output configuration unsupported, ppSupportedOutputFormat receives pointer to nearest output format supported if not NULL + // E_INVALIDARG - either audio format invalid, ppSupportedOutputFormat left untouched + IsOutputFormatSupported: proc "system" (this: ^IXAPO, pInputFormat: ^WAVEFORMATEX, pRequestedOutputFormat: ^WAVEFORMATEX, ppSupportedOutputFormat: ^^WAVEFORMATEX) -> HRESULT, + + // DESCRIPTION: + // Performs any effect-specific initialization if required. + // REMARKS: + // The contents of pData are defined by the XAPO. + // Immutable variables (constant during the lifespan of the XAPO) should be set once via this method. + // Once initialized, an XAPO cannot be initialized again. + // An XAPO should be initialized before passing it to XAudio2 as part of an effect chain. XAudio2 will not call this method; it exists for future content-driven initialization. + // PARAMETERS: + // pData - [in] effect-specific initialization parameters, may be NULL if DataByteSize == 0 + // DataByteSize - [in] size of pData in bytes, may be 0 if pData is NULL + // RETURN VALUE: + // COM error code + Initialize: proc "system" (this: ^IXAPO, pData: rawptr, DataByteSize: u32) -> HRESULT, + + // DESCRIPTION: + // Resets variables dependent on frame history. + // REMARKS: + // All other variables remain unchanged, including variables set by IXAPOParameters.SetParameters. + // For example, an effect with delay should zero out its delay line during this method, but should not reallocate anything as the + // XAPO remains locked with a constant input/output configuration. XAudio2 calls this method only if the XAPO is locked. + // This method should not block as it is called from the realtime thread. + // PARAMETERS: + // void + // RETURN VALUE: + // void + Reset: proc "system" (this: ^IXAPO), + + // DESCRIPTION: + // Locks the XAPO to a specific input/output configuration, + // allowing it to do any final initialization before Process + // is called on the realtime thread. + // REMARKS: + // Once locked, the input/output configuration and any other locked variables remain constant until UnlockForProcess is called. + // XAPOs should assert the input/output configuration is supported and that any required effect-specific initialization is complete. + // IsInputFormatSupported, IsOutputFormatSupported, and Initialize should be called as necessary before this method is called. + // All internal memory buffers required for Process should be allocated by the time this method returns successfully as Process is non-blocking and should not allocate memory. + // Once locked, an XAPO cannot be locked again until UnLockForProcess is called. + // PARAMETERS: + // InputLockedParameterCount - [in] number of input buffers, must be within [XAPO_REGISTRATION_PROPERTIES.MinInputBufferCount, XAPO_REGISTRATION_PROPERTIES.MaxInputBufferCount] + // pInputLockedParameters - [in] array of input locked buffer parameter structures, may be NULL if InputLockedParameterCount == 0, otherwise must have InputLockedParameterCount elements + // OutputLockedParameterCount - [in] number of output buffers, must be within [XAPO_REGISTRATION_PROPERTIES.MinOutputBufferCount, XAPO_REGISTRATION_PROPERTIES.MaxOutputBufferCount], must match InputLockedParameterCount when XAPO_FLAG_BUFFERCOUNT_MUST_MATCH used + // pOutputLockedParameters - [in] array of output locked buffer parameter structures, may be NULL if OutputLockedParameterCount == 0, otherwise must have OutputLockedParameterCount elements + // RETURN VALUE: + // COM error code + LockForProcess: proc "system" (this: ^IXAPO, InputLockedParameterCount: u32, pInputLockedParameters: [^]XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS, OutputLockedParameterCount: u32, pOutputLockedParameters: [^]XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS) -> HRESULT, + + // DESCRIPTION: + // Opposite of LockForProcess. Variables allocated during LockForProcess should be deallocated by this method. + // REMARKS: + // Unlocking an XAPO allows an XAPO instance to be reused with different input/output configurations. + // PARAMETERS: + // void + // RETURN VALUE: + // void + UnlockForProcess: proc "system" (this: ^IXAPO), + + // DESCRIPTION: + // Runs the XAPO's DSP code on the given input/output buffers. + // REMARKS: + // In addition to writing to the output buffers as appropriate, an XAPO must set the BufferFlags and ValidFrameCount members of all elements in pOutputProcessParameters accordingly. + // ppInputProcessParameters will not necessarily be the same as ppOutputProcessParameters for in-place processing, rather the pBuffer members of each will point to the same memory. + // Multiple input/output buffers may be used with in-place XAPOs, though the input buffer count must equal the output buffer count. + // When multiple input/output buffers are used with in-place XAPOs, the XAPO may assume input buffer [N] equals output buffer [N]. + // When IsEnabled is FALSE, the XAPO should process thru. Thru processing means an XAPO should not apply its normal processing to the given input/output buffers during Process. + // It should instead pass data from input to output with as little modification possible. Effects that perform format conversion should continue to do so. + // The effect must ensure transitions between normal and thru processing do not introduce discontinuities into the signal. + // XAudio2 calls this method only if the XAPO is locked. This method should not block as it is called from the realtime thread. + // PARAMETERS: + // InputProcessParameterCount - [in] number of input buffers, matches respective InputLockedParameterCount parameter given to LockForProcess + // pInputProcessParameters - [in] array of input process buffer parameter structures, may be NULL if InputProcessParameterCount == 0, otherwise must have InputProcessParameterCount elements + // OutputProcessParameterCount - [in] number of output buffers, matches respective OutputLockedParameterCount parameter given to LockForProcess + // pOutputProcessParameters - [in/out] array of output process buffer parameter structures, may be NULL if OutputProcessParameterCount == 0, otherwise must have OutputProcessParameterCount elements + // IsEnabled - [in] TRUE to process normally, FALSE to process thru + // RETURN VALUE: + // void + Process: proc "system" (this: ^IXAPO, InputProcessParameterCount: u32, pInputProcessParameters: [^]XAPO_PROCESS_BUFFER_PARAMETERS, OutputProcessParameterCount: u32, pOutputProcessParameters: [^]XAPO_PROCESS_BUFFER_PARAMETERS, IsEnabled: b32), + + // DESCRIPTION: + // Returns the number of input frames required to generate the requested number of output frames. + // REMARKS: + // XAudio2 may call this method to determine how many input frames an XAPO requires. + // This is constant for locked CBR XAPOs; this method need only be called once while an XAPO is locked. + // XAudio2 calls this method only if the XAPO is locked. This method should not block as it is called from the realtime thread. + // PARAMETERS: + // OutputFrameCount - [in] requested number of output frames, must be within respective [0, XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS.MaxFrameCount], always XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS.MaxFrameCount for CBR/user-defined XAPOs + // RETURN VALUE: + // number of input frames required + CalcInputFrames: proc "system" (this: ^IXAPO, OutputFrameCount: u32) -> u32, + + // DESCRIPTION: + // Returns the number of output frames generated for the requested number of input frames. + // REMARKS: + // XAudio2 may call this method to determine how many output frames an XAPO will generate. This is constant for locked CBR XAPOs; this method need only be called once while an XAPO is locked. + // XAudio2 calls this method only if the XAPO is locked. This method should not block as it is called from the realtime thread. + // PARAMETERS: + // InputFrameCount - [in] requested number of input frames, must be within respective [0, XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS.MaxFrameCount], always XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS.MaxFrameCount for CBR/user-defined XAPOs + // RETURN VALUE: + // number of output frames generated + CalcOutputFrames: proc "system" (this: ^IXAPO, InputFrameCount: u32) -> u32, +} + +// IXAPOParameters: +// Optional XAPO COM interface that allows an XAPO to use effect-specific parameters. +IXAPOParameters_UUID_STRING :: "26D95C66-80F2-499A-AD54-5AE7F01C6D98" +IXAPOParameters_UUID := &win.IID{0x26D95C66, 0x80F2, 0x499A, {0xAD, 0x54, 0x5A, 0xE7, 0xF0, 0x1C, 0x6D, 0x98}} +IXAPOParameters :: struct #raw_union { + #subtype iunknown: IUnknown, + using ixapoparameters_vtable: ^IXAPOParameters_VTable, +} +IXAPOParameters_VTable :: struct { + using iunknown_vtable: IUnknown_VTable, + + // DESCRIPTION: + // Sets effect-specific parameters. + // REMARKS: + // This method may only be called on the realtime thread; no synchronization between it and IXAPO.Process is necessary. + // This method should not block as it is called from the realtime thread. + // PARAMETERS: + // pParameters - [in] effect-specific parameter block, must be != NULL + // ParameterByteSize - [in] size of pParameters in bytes, must be > 0 + // RETURN VALUE: + // void + SetParameters: proc "system" (this: ^IXAPOParameters, pParameters: rawptr, ParameterByteSize: u32), + + // DESCRIPTION: + // Gets effect-specific parameters. + // REMARKS: + // Unlike SetParameters, XAudio2 does not call this method on the realtime thread. Thus, the XAPO must protect variables shared with SetParameters/Process using appropriate synchronization. + // PARAMETERS: + // pParameters - [out] receives effect-specific parameter block, must be != NULL + // ParameterByteSize - [in] size of pParameters in bytes, must be > 0 + // RETURN VALUE: + // void + GetParameters: proc "system" (this: ^IXAPOParameters, pParameters: rawptr, ParameterByteSize: u32), +} diff --git a/vendor/windows/XAudio2/xapofx.odin b/vendor/windows/XAudio2/xapofx.odin new file mode 100644 index 000000000..6e6a9afd4 --- /dev/null +++ b/vendor/windows/XAudio2/xapofx.odin @@ -0,0 +1,138 @@ +#+build windows + +package windows_xaudio2 + +import win "core:sys/windows" + +foreign import xa2 "system:xaudio2.lib" + +//---------------------------------------------------// + +FXEQ_UUID_STRING :: "F5E01117-D6C4-485A-A3F5-695196F3DBFA" +FXEQ_UUID := &win.CLSID{0xF5E01117, 0xD6C4, 0x485A, {0xA3, 0xF5, 0x69, 0x51, 0x96, 0xF3, 0xDB, 0xFA}} + +FXMasteringLimiter_UUID_STRING :: "C4137916-2BE1-46FD-8599-441536F49856" +FXMasteringLimiter_UUID := &win.CLSID{0xC4137916, 0x2BE1, 0x46FD, {0x85, 0x99, 0x44, 0x15, 0x36, 0xF4, 0x98, 0x56}} + +FXReverb_UUID_STRING :: "7D9ACA56-CB68-4807-B632-B137352E8596" +FXReverb_UUID := &win.CLSID{0x7D9ACA56, 0xCB68, 0x4807, {0xB6, 0x32, 0xB1, 0x37, 0x35, 0x2E, 0x85, 0x96}} + +FXEcho_UUID_STRING :: "5039D740-F736-449A-84D3-A56202557B87" +FXEcho_UUID := &win.CLSID{0x5039D740, 0xF736, 0x449A, {0x84, 0xD3, 0xA5, 0x62, 0x02, 0x55, 0x7B, 0x87}} + +// EQ parameter bounds (inclusive), used with FXEQ: +FXEQ_MIN_FRAMERATE :: 22000 +FXEQ_MAX_FRAMERATE :: 48000 + +FXEQ_MIN_FREQUENCY_CENTER :: 20.0 +FXEQ_MAX_FREQUENCY_CENTER :: 20000.0 +FXEQ_DEFAULT_FREQUENCY_CENTER_0 :: 100.0 // band 0 +FXEQ_DEFAULT_FREQUENCY_CENTER_1 :: 800.0 // band 1 +FXEQ_DEFAULT_FREQUENCY_CENTER_2 :: 2000.0 // band 2 +FXEQ_DEFAULT_FREQUENCY_CENTER_3 :: 10000.0 // band 3 + +FXEQ_MIN_GAIN :: 0.126 // -18dB +FXEQ_MAX_GAIN :: 7.94 // +18dB +FXEQ_DEFAULT_GAIN :: 1.0 // 0dB change, all bands + +FXEQ_MIN_BANDWIDTH :: 0.1 +FXEQ_MAX_BANDWIDTH :: 2.0 +FXEQ_DEFAULT_BANDWIDTH :: 1.0 // all bands + + +// Mastering limiter parameter bounds (inclusive), used with FXMasteringLimiter: +FXMASTERINGLIMITER_MIN_RELEASE :: 1 +FXMASTERINGLIMITER_MAX_RELEASE :: 20 +FXMASTERINGLIMITER_DEFAULT_RELEASE :: 6 + +FXMASTERINGLIMITER_MIN_LOUDNESS :: 1 +FXMASTERINGLIMITER_MAX_LOUDNESS :: 1800 +FXMASTERINGLIMITER_DEFAULT_LOUDNESS :: 1000 + + +// Reverb parameter bounds (inclusive), used with FXReverb: +FXREVERB_MIN_DIFFUSION :: 0.0 +FXREVERB_MAX_DIFFUSION :: 1.0 +FXREVERB_DEFAULT_DIFFUSION :: 0.9 + +FXREVERB_MIN_ROOMSIZE :: 0.0001 +FXREVERB_MAX_ROOMSIZE :: 1.0 +FXREVERB_DEFAULT_ROOMSIZE :: 0.6 + +// Loudness defaults used with FXLoudness: +FXLOUDNESS_DEFAULT_MOMENTARY_MS :: 400 +FXLOUDNESS_DEFAULT_SHORTTERM_MS :: 3000 + +// Echo initialization data/parameter bounds (inclusive), used with FXEcho: +FXECHO_MIN_WETDRYMIX :: 0.0 +FXECHO_MAX_WETDRYMIX :: 1.0 +FXECHO_DEFAULT_WETDRYMIX :: 0.5 + +FXECHO_MIN_FEEDBACK :: 0.0 +FXECHO_MAX_FEEDBACK :: 1.0 +FXECHO_DEFAULT_FEEDBACK :: 0.5 + +FXECHO_MIN_DELAY :: 1.0 +FXECHO_MAX_DELAY :: 2000.0 +FXECHO_DEFAULT_DELAY :: 500.0 + +//-----------------------------------------------------// + +// EQ parameters (4 bands), used with IXAPOParameters.SetParameters: +// The EQ supports only f32 audio foramts. +// The framerate must be within [22000, 48000] Hz. +FXEQ_PARAMETERS :: struct #packed { + FrequencyCenter0: f32, // center frequency in Hz, band 0 + Gain0: f32, // boost/cut + Bandwidth0: f32, // bandwidth, region of EQ is center frequency +/- bandwidth/2 + FrequencyCenter1: f32, // band 1 + Gain1: f32, + Bandwidth1: f32, + FrequencyCenter2: f32, // band 2 + Gain2: f32, + Bandwidth2: f32, + FrequencyCenter3: f32, // band 3 + Gain3: f32, + Bandwidth3: f32, +} + +// Mastering limiter parameters, used with IXAPOParameters.SetParameters: +// The mastering limiter supports only f32 audio formats. +FXMASTERINGLIMITER_PARAMETERS :: struct #packed { + Release: u32, // release time (tuning factor with no specific units) + Loudness: u32, // loudness target (threshold) +} + +// Reverb parameters, used with IXAPOParameters.SetParameters: +// The reverb supports only f32 audio formats with the following channel configurations: +// Input: Mono Output: Mono +// Input: Stereo Output: Stereo +FXREVERB_PARAMETERS :: struct #packed { + Diffusion: f32, // diffusion + RoomSize: f32, // room size +}; + + +// Echo initialization data, used with CreateFX: +// Use of this structure is optional, the default MaxDelay is FXECHO_DEFAULT_DELAY. +FXECHO_INITDATA :: struct #packed { + MaxDelay: f32, // maximum delay (all channels) in milliseconds, must be within [FXECHO_MIN_DELAY, FXECHO_MAX_DELAY] +} + +// Echo parameters, used with IXAPOParameters.SetParameters: +// The echo supports only f32 audio formats. +FXECHO_PARAMETERS :: struct #packed { + WetDryMix: f32, // ratio of wet (processed) signal to dry (original) signal + Feedback: f32, // amount of output fed back into input + Delay: f32, // delay (all channels) in milliseconds, must be within [FXECHO_MIN_DELAY, FXECHO_PARAMETERS.MaxDelay] +} + +//-------------------------------------------------------// + +@(default_calling_convention="cdecl") +foreign xa2 { + // creates instance of requested XAPO, use Release to free instance + // pInitData - [in] effect-specific initialization parameters, may be NULL if InitDataByteSize == 0 + // InitDataByteSize - [in] size of pInitData in bytes, may be 0 if pInitData is NULL + CreateFX :: proc(clsid: win.REFCLSID, pEffect: ^^IUnknown, pInitDat: rawptr = nil, InitDataByteSize: u32 = 0) -> HRESULT --- +} diff --git a/vendor/windows/XAudio2/xaudio2.odin b/vendor/windows/XAudio2/xaudio2.odin index 231b41a90..2cf5e4214 100644 --- a/vendor/windows/XAudio2/xaudio2.odin +++ b/vendor/windows/XAudio2/xaudio2.odin @@ -16,7 +16,7 @@ foreign import xa2 "system:xaudio2.lib" HRESULT :: win.HRESULT IUnknown :: win.IUnknown IUnknown_VTable :: win.IUnknown_VTable -IID :: win.IID +WAVEFORMATEX :: win.WAVEFORMATEX /************************************************************************** * @@ -82,10 +82,10 @@ QUANTUM_DENOMINATOR :: 100 // in 10ms chunks (= 1/100 seconds) QUANTUM_MS :: (1000.0 * QUANTUM_NUMERATOR / QUANTUM_DENOMINATOR) // XAudio2 error codes -INVALID_CALL :: HRESULT(-0x7769FFFF) // An API call or one of its arguments was illegal -XMA_DECODER_ERROR :: HRESULT(-0x7769FFFE) // The XMA hardware suffered an unrecoverable error -XAPO_CREATION_FAILED :: HRESULT(-0x7769FFFD) // XAudio2 failed to initialize an XAPO effect -DEVICE_INVALIDATED :: HRESULT(-0x7769FFFC) // An audio device became unusable (unplugged, etc) +INVALID_CALL :: HRESULT(-2003435519) // 0x88960001 An API call or one of its arguments was illegal +XMA_DECODER_ERROR :: HRESULT(-2003435518) // 0x88960002 The XMA hardware suffered an unrecoverable error +XAPO_CREATION_FAILED :: HRESULT(-2003435517) // 0x88960003 XAudio2 failed to initialize an XAPO effect +DEVICE_INVALIDATED :: HRESULT(-2003435516) // 0x88960004 An audio device became unusable (unplugged, etc) /************************************************************************** @@ -134,7 +134,7 @@ PROCESOR_FLAG :: enum u32 { USE_DEFAULT_PROCESSOR :: PROCESSOR_FLAGS{} // Returned by IXAudio2Voice.GetVoiceDetails -VOICE_DETAILS :: struct { +VOICE_DETAILS :: struct #packed { CreatingFlags: FLAGS, ActiveFlags: FLAGS, InputChannels: u32, @@ -142,26 +142,26 @@ VOICE_DETAILS :: struct { } // Used in VOICE_SENDS below -SEND_DESCRIPTOR :: struct { +SEND_DESCRIPTOR :: struct #packed { Flags: FLAGS, // Either 0 or SEND_USEFILTER. pOutputVoice: ^IXAudio2Voice, // This send's destination voice. } // Used in the voice creation functions and in IXAudio2Voice.SetOutputVoices -VOICE_SENDS :: struct { +VOICE_SENDS :: struct #packed { SendCount: u32, // Number of sends from this voice. pSends: [^]SEND_DESCRIPTOR, // Array of SendCount send descriptors. } // Used in EFFECT_CHAIN below -EFFECT_DESCRIPTOR :: struct { +EFFECT_DESCRIPTOR :: struct #packed { pEffect: ^IUnknown, // Pointer to the effect object's IUnknown interface. - InitialState: bool, // TRUE if the effect should begin in the enabled state. + InitialState: b32, // TRUE if the effect should begin in the enabled state. OutputChannels: u32, // How many output channels the effect should produce. } // Used in the voice creation functions and in IXAudio2Voice.SetEffectChain -EFFECT_CHAIN :: struct { +EFFECT_CHAIN :: struct #packed { EffectCount: u32, // Number of effects in this voice's effect chain. pEffectDescriptors: [^]EFFECT_DESCRIPTOR, // Array of effect descriptors. } @@ -177,14 +177,14 @@ FILTER_TYPE :: enum i32 { } // Used in IXAudio2Voice.Set/GetFilterParameters and Set/GetOutputFilterParameters -FILTER_PARAMETERS :: struct { +FILTER_PARAMETERS :: struct #packed { Type: FILTER_TYPE, // Filter type. Frequency: f32, // Filter coefficient. Must be >= 0 and <= MAX_FILTER_FREQUENCY. See CutoffFrequencyToRadians() for state-variable filter types and CutoffFrequencyToOnePoleCoefficient() for one-pole filter types. OneOverQ: f32, // Reciprocal of the filter's quality factor Q; must be > 0 and <= MAX_FILTER_ONEOVERQ. Has no effect for one-pole filters. } // Used in IXAudio2SourceVoice.SubmitSourceBuffer -BUFFER :: struct { +BUFFER :: struct #packed { Flags: FLAGS, // Either 0 or END_OF_STREAM. AudioBytes: u32, // Size of the audio data buffer in bytes. pAudioData: [^]byte, // Pointer to the audio data buffer. @@ -199,20 +199,20 @@ BUFFER :: struct { // Used in IXAudio2SourceVoice.SubmitSourceBuffer when submitting XWMA data. // NOTE: If an XWMA sound is submitted in more than one buffer, each buffer's pDecodedPacketCumulativeBytes[PacketCount-1] value must be subtracted from all the entries in the next buffer's pDecodedPacketCumulativeBytes array. // And whether a sound is submitted in more than one buffer or not, the final buffer of the sound should use the END_OF_STREAM flag, or else the client must call IXAudio2SourceVoice.Discontinuity after submitting it. -BUFFER_WMA :: struct { +BUFFER_WMA :: struct #packed { pDecodedPacketCumulativeBytes: [^]u32, // Decoded packet's cumulative size array. Each element is the number of bytes accumulated when the corresponding XWMA packet is decoded in order. The array must have PacketCount elements. PacketCount: u32, // Number of XWMA packets submitted. Must be >= 1 and divide evenly into BUFFER.AudioBytes. } // Returned by IXAudio2SourceVoice.GetState -VOICE_STATE :: struct { +VOICE_STATE :: struct #packed { pCurrentBufferContext: rawptr, // The pContext value provided in the BUFFER that is currently being processed, or NULL if there are no buffers in the queue. BuffersQueued: u32, // Number of buffers currently queued on the voice (including the one that is being processed). SamplesPlayed: u64, // Total number of samples produced by the voice since it began processing the current audio stream. If VOICE_NOSAMPLESPLAYED is specified in the call to IXAudio2SourceVoice.GetState, this member will not be calculated, saving CPU. } // Returned by IXAudio2.GetPerformanceData -PERFORMANCE_DATA :: struct { +PERFORMANCE_DATA :: struct #packed { // CPU usage information AudioCyclesSinceLastQuery: u64, // CPU cycles spent on audio processing since the last call to StartEngine or GetPerformanceData. TotalCyclesSinceLastQuery: u64, // Total CPU cycles elapsed since the last call (only counts the CPU XAudio2 is running on). @@ -240,13 +240,13 @@ PERFORMANCE_DATA :: struct { } // Used in IXAudio2.SetDebugConfiguration -DEBUG_CONFIGURATION :: struct { +DEBUG_CONFIGURATION :: struct #packed { TraceMask: DEBUG_CONFIG_FLAGS, // Bitmap of enabled debug message types. BreakMask: DEBUG_CONFIG_FLAGS, // Message types that will break into the debugger. - LogThreadID: bool, // Whether to log the thread ID with each message. - LogFileline: bool, // Whether to log the source file and line number. - LogFunctionName: bool, // Whether to log the function name. - LogTiming: bool, // Whether to log message timestamps. + LogThreadID: b32, // Whether to log the thread ID with each message. + LogFileline: b32, // Whether to log the source file and line number. + LogFunctionName: b32, // Whether to log the function name. + LogTiming: b32, // Whether to log message timestamps. } // Values for the TraceMask and BreakMask bitmaps. Only ERRORS and WARNINGS are valid in BreakMask. @@ -273,7 +273,7 @@ DEBUG_CONFIG_FLAG :: enum u32 { **************************************************************************/ IXAudio2_UUID_STRING :: "2B02E3CF-2E0B-4ec3-BE45-1B2A3FE7210D" -IXAudio2_UUID := &IID{0x2B02E3CF, 0x2E0B, 0x4ec3, {0xBE, 0x45, 0x1B, 0x2A, 0x3F, 0xE7, 0x21, 0x0D}} +IXAudio2_UUID := &win.IID{0x2B02E3CF, 0x2E0B, 0x4ec3, {0xBE, 0x45, 0x1B, 0x2A, 0x3F, 0xE7, 0x21, 0x0D}} IXAudio2 :: struct #raw_union { #subtype iunknown: IUnknown, using ixaudio2_vtable: ^IXAudio2_VTable, @@ -303,7 +303,7 @@ IXAudio2_VTable :: struct { // pCallback - Optional pointer to a client-provided callback interface. // pSendList - Optional list of voices this voice should send audio to. // pEffectChain - Optional list of effects to apply to the audio data. - CreateSourceVoice: proc "system" (this: ^IXAudio2, ppSourceVoice: ^^IXAudio2SourceVoice, pSourceFormat: ^win.WAVEFORMATEX, Flags: FLAGS = {}, MaxFrequencyRatio: f32 = DEFAULT_FREQ_RATIO, pCallback: ^IXAudio2VoiceCallback = nil, pSendList: [^]VOICE_SENDS = nil, pEffectChain: [^]EFFECT_CHAIN = nil) -> HRESULT, + CreateSourceVoice: proc "system" (this: ^IXAudio2, ppSourceVoice: ^^IXAudio2SourceVoice, pSourceFormat: ^WAVEFORMATEX, Flags: FLAGS = {}, MaxFrequencyRatio: f32 = DEFAULT_FREQ_RATIO, pCallback: ^IXAudio2VoiceCallback = nil, pSendList: [^]VOICE_SENDS = nil, pEffectChain: [^]EFFECT_CHAIN = nil) -> HRESULT, // NAME: IXAudio2.CreateSubmixVoice // DESCRIPTION: Creates and configures a submix voice. @@ -361,7 +361,7 @@ IXAudio2_VTable :: struct { // This interface extends IXAudio2 with additional functionality. // Use IXAudio2.QueryInterface to obtain a pointer to this interface. IXAudio2Extension_UUID_STRING :: "84ac29bb-d619-44d2-b197-e4acf7df3ed6" -IXAudio2Extension_UUID := &IID{0x84ac29bb, 0xd619, 0x44d2, {0xb1, 0x97, 0xe4, 0xac, 0xf7, 0xdf, 0x3e, 0xd6}} +IXAudio2Extension_UUID := &win.IID{0x84ac29bb, 0xd619, 0x44d2, {0xb1, 0x97, 0xe4, 0xac, 0xf7, 0xdf, 0x3e, 0xd6}} IXAudio2Extension :: struct #raw_union { #subtype iunknown: IUnknown, using ixaudio2extension_vtable: ^IXAudio2Extension_VTable, @@ -432,7 +432,7 @@ IXAudio2Voice_VTable :: struct { // ARGUMENTS: // EffectIndex - Index of an effect within this voice's effect chain. // pEnabled - Returns the enabled/disabled state of the given effect. - GetEffectState: proc "system" (this: ^IXAudio2Voice, EffectIndex: u32, pEnabled: ^bool), + GetEffectState: proc "system" (this: ^IXAudio2Voice, EffectIndex: u32, pEnabled: ^b32), // NAME: IXAudio2Voice.SetEffectParameters // DESCRIPTION: Sets effect-specific parameters. @@ -717,12 +717,32 @@ IXAudio2VoiceCallback_VTable :: struct { * **************************************************************************/ -// We're an xaudio2 client -@(default_calling_convention="system", link_prefix="XAudio2") -foreign xa2 { - Create :: proc(ppXAudio2: ^^IXAudio2, Flags: FLAGS = {}, XAudio2Processor: PROCESSOR_FLAGS = USE_DEFAULT_PROCESSOR) -> HRESULT --- -} +Create :: proc "stdcall" (ppXAudio2: ^^IXAudio2, Flags: FLAGS = {}, XAudio2Processor: PROCESSOR_FLAGS = {.Processor1}) -> HRESULT { + CreateWithVersionInfoFunc :: #type proc "c" (a0: ^^IXAudio2, a1: FLAGS, a2: PROCESSOR_FLAGS, a3: win.DWORD) -> HRESULT + CreateInfoFunc :: #type proc "c" (a0: ^^IXAudio2, a1: FLAGS, a2: PROCESSOR_FLAGS) -> HRESULT + dll_Instance: win.HMODULE + create_with_version_info: CreateWithVersionInfoFunc + create_info: CreateInfoFunc + + if dll_Instance == nil { + dll_Instance = win.LoadLibraryExW(win.L("xaudio2_9.dll"), nil, {.LOAD_LIBRARY_SEARCH_SYSTEM32}) + if dll_Instance == nil { + return HRESULT(win.GetLastError()) + } + create_with_version_info = cast(CreateWithVersionInfoFunc)win.GetProcAddress(dll_Instance, "XAudio2CreateWithVersionInfo") + if create_with_version_info == nil { + create_info = cast(CreateInfoFunc)win.GetProcAddress(dll_Instance, "XAudio2Create") + if create_info == nil { + return HRESULT(win.GetLastError()) + } + } + } + if create_with_version_info != nil { + return create_with_version_info(ppXAudio2, Flags, XAudio2Processor, 0x0A000010) + } + return create_info(ppXAudio2, Flags, XAudio2Processor) +} /************************************************************************** * diff --git a/vendor/windows/XAudio2/xaudio2fx.odin b/vendor/windows/XAudio2/xaudio2fx.odin index a875b5516..1f7c91f50 100644 --- a/vendor/windows/XAudio2/xaudio2fx.odin +++ b/vendor/windows/XAudio2/xaudio2fx.odin @@ -6,12 +6,6 @@ import "core:math" foreign import xa2 "system:xaudio2.lib" -CLSID_AudioVolumeMeter_UUID_STRING :: "4FC3B166-972A-40CF-BC37-7DB03DB2FBA3" -CLSID_AudioVolumeMeter_UUID := &IID{0x4FC3B166, 0x972A, 0x40CF, {0xBC, 0x37, 0x7D, 0xB0, 0x3D, 0xB2, 0xFB, 0xA3}} - -CLSID_AudioReverb_UUID_STRING :: "C2633B16-471B-4498-B8C5-4F0959E2EC09" -CLSID_AudioReverb_UUID := &IID{0xC2633B16, 0x471B, 0x4498, {0xB8, 0xC5, 0x4F, 0x09, 0x59, 0xE2, 0xEC, 0x09}} - /************************************************************************** * * Effect creation functions. @@ -21,7 +15,7 @@ CLSID_AudioReverb_UUID := &IID{0xC2633B16, 0x471B, 0x4498, {0xB8, 0xC5, 0x4F, 0x * **************************************************************************/ - @(default_calling_convention="system", link_prefix="XAudio2") +@(default_calling_convention="system") foreign xa2 { CreateAudioVolumeMeter :: proc(ppApo: ^^IUnknown) -> HRESULT --- CreateAudioReverb :: proc(ppApo: ^^IUnknown) -> HRESULT --- @@ -37,7 +31,7 @@ foreign xa2 { // VOLUMEMETER_LEVELS: Receives results from GetEffectParameters(). // The user is responsible for allocating pPeakLevels, pRMSLevels, and initializing ChannelCount accordingly. // The volume meter does not support SetEffectParameters(). -VOLUMEMETER_LEVELS :: struct { +VOLUMEMETER_LEVELS :: struct #packed { pPeakLevels: [^]f32, // Peak levels table: receives maximum absolute level for each channel over a processing pass, may be NULL if pRMSLevls != NULL, otherwise must have at least ChannelCount elements. pRMSLevels: [^]f32, // Root mean square levels table: receives RMS level for each channel over a processing pass, may be NULL if pPeakLevels != NULL, otherwise must have at least ChannelCount elements. ChannelCount: u32, // Number of channels being processed by the volume meter APO @@ -64,7 +58,7 @@ REVERB_MAX_FRAMERATE :: 48000 // REVERB_PARAMETERS: Native parameter set for the reverb effect -REVERB_PARAMETERS :: struct { +REVERB_PARAMETERS :: struct #packed { // ratio of wet (processed) signal to dry (original) signal WetDryMix: f32, // [0, 100] (percentage) // Delay times @@ -93,7 +87,7 @@ REVERB_PARAMETERS :: struct { Density: f32, // [0, 100] (percentage) RoomSize: f32, // [1, 100] in feet // component control - DisableLateField: bool, // TRUE to disable late field reflections + DisableLateField: b32, // TRUE to disable late field reflections } // Maximum, minimum and default values for the parameters above @@ -160,11 +154,12 @@ REVERB_DEFAULT_REVERB_GAIN :: 0.0 REVERB_DEFAULT_DECAY_TIME :: 1.0 REVERB_DEFAULT_DENSITY :: 100.0 REVERB_DEFAULT_ROOM_SIZE :: 100.0 -REVERB_DEFAULT_DISABLE_LATE_FIELD :: false + +REVERB_DEFAULT_DISABLE_LATE_FIELD: b32 : false // REVERB_I3DL2_PARAMETERS: Parameter set compliant with the I3DL2 standard -REVERB_I3DL2_PARAMETERS :: struct { +REVERB_I3DL2_PARAMETERS :: struct #packed { // ratio of wet (processed) signal to dry (original) signal WetDryMix: f32, // [0, 100] (percentage) @@ -222,7 +217,7 @@ I3DL2_PRESET_PLATE := REVERB_I3DL2_PARAMETERS{100.0, -1000, -200,0.0, // ReverbConvertI3DL2ToNative: Utility function to map from I3DL2 to native parameters -ReverbConvertI3DL2ToNative :: proc "contextless" (pI3DL2: ^REVERB_I3DL2_PARAMETERS, pNative: ^REVERB_PARAMETERS, sevenDotOneReverb: bool = true) { +ReverbConvertI3DL2ToNative :: proc "contextless" (pI3DL2: ^REVERB_I3DL2_PARAMETERS, pNative: ^REVERB_PARAMETERS, sevenDotOneReverb: b32 = true) { reflectionsDelay: f32 reverbDelay: f32 From ad4866653a05a2850d60616b6d7458d4718a2c83 Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Wed, 7 May 2025 14:38:40 +0200 Subject: [PATCH 036/120] fix disposing builder when not created Fixes #5128 p->builder is created in lb_begin_procedure_body, but that isn't called if there is no body, and we were still calling dispose at that point. Moved it into lb_end_procedure_body to match. --- src/llvm_backend.cpp | 1 - src/llvm_backend.hpp | 1 - src/llvm_backend_proc.cpp | 3 +-- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 2f861573a..fd10cd5c1 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -2185,7 +2185,6 @@ gb_internal void lb_generate_procedure(lbModule *m, lbProcedure *p) { p->is_done = true; m->curr_procedure = nullptr; } - lb_end_procedure(p); // Add Flags if (p->entity && p->entity->kind == Entity_Procedure && p->entity->Procedure.is_memcpy_like) { diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index de6841ed8..51931dac3 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -409,7 +409,6 @@ gb_internal LLVMAttributeRef lb_create_enum_attribute_with_type(LLVMContextRef c gb_internal void lb_add_proc_attribute_at_index(lbProcedure *p, isize index, char const *name, u64 value); gb_internal void lb_add_proc_attribute_at_index(lbProcedure *p, isize index, char const *name); gb_internal lbProcedure *lb_create_procedure(lbModule *module, Entity *entity, bool ignore_body=false); -gb_internal void lb_end_procedure(lbProcedure *p); gb_internal LLVMTypeRef lb_type(lbModule *m, Type *type); diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index 1f023037d..057d6562f 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -783,8 +783,7 @@ gb_internal void lb_end_procedure_body(lbProcedure *p) { p->curr_block = nullptr; p->state_flags = 0; -} -gb_internal void lb_end_procedure(lbProcedure *p) { + LLVMDisposeBuilder(p->builder); } From b9db1dd3e0b2b53f344e7572f88719586bd4ab83 Mon Sep 17 00:00:00 2001 From: Lucas Perlind Date: Wed, 30 Apr 2025 19:21:00 +1000 Subject: [PATCH 037/120] os2: Resolve temp allocator collisions --- core/os/os2/allocators.odin | 80 ++++++++++++++------------- core/os/os2/dir.odin | 14 ++--- core/os/os2/dir_linux.odin | 2 +- core/os/os2/dir_windows.odin | 10 ++-- core/os/os2/env_posix.odin | 14 ++--- core/os/os2/env_wasi.odin | 4 +- core/os/os2/env_windows.odin | 20 +++---- core/os/os2/errors.odin | 4 +- core/os/os2/file.odin | 8 +-- core/os/os2/file_linux.odin | 58 +++++++++---------- core/os/os2/file_posix.odin | 54 +++++++++--------- core/os/os2/file_posix_other.odin | 4 +- core/os/os2/file_windows.odin | 36 ++++++------ core/os/os2/internal_util.odin | 5 -- core/os/os2/path.odin | 8 +-- core/os/os2/path_linux.odin | 18 +++--- core/os/os2/path_netbsd.odin | 4 +- core/os/os2/path_openbsd.odin | 6 +- core/os/os2/path_posix.odin | 22 ++++---- core/os/os2/path_posixfs.odin | 4 +- core/os/os2/path_wasi.odin | 4 +- core/os/os2/path_windows.odin | 36 ++++++------ core/os/os2/process_linux.odin | 46 +++++++-------- core/os/os2/process_posix.odin | 18 +++--- core/os/os2/process_posix_darwin.odin | 6 +- core/os/os2/process_windows.odin | 48 ++++++++-------- core/os/os2/stat.odin | 8 +-- core/os/os2/stat_linux.odin | 8 +-- core/os/os2/stat_posix.odin | 16 +++--- core/os/os2/stat_windows.odin | 18 +++--- core/os/os2/temp_file.odin | 20 ++++--- core/os/os2/temp_file_linux.odin | 4 +- core/os/os2/temp_file_windows.odin | 4 +- core/os/os2/user.odin | 22 ++++---- 34 files changed, 319 insertions(+), 314 deletions(-) diff --git a/core/os/os2/allocators.odin b/core/os/os2/allocators.odin index 864532850..1a02d4514 100644 --- a/core/os/os2/allocators.odin +++ b/core/os/os2/allocators.odin @@ -8,43 +8,13 @@ file_allocator :: proc() -> runtime.Allocator { return heap_allocator() } -temp_allocator_proc :: runtime.arena_allocator_proc - @(private="file") MAX_TEMP_ARENA_COUNT :: 2 - +@(private="file") +MAX_TEMP_ARENA_COLLISIONS :: MAX_TEMP_ARENA_COUNT - 1 @(private="file", thread_local) global_default_temp_allocator_arenas: [MAX_TEMP_ARENA_COUNT]runtime.Arena -@(private="file", thread_local) -global_default_temp_allocator_index: uint - - -@(require_results) -temp_allocator :: proc() -> runtime.Allocator { - arena := &global_default_temp_allocator_arenas[global_default_temp_allocator_index] - if arena.backing_allocator.procedure == nil { - arena.backing_allocator = heap_allocator() - } - - return runtime.Allocator{ - procedure = temp_allocator_proc, - data = arena, - } -} - - - -@(require_results) -temp_allocator_temp_begin :: proc(loc := #caller_location) -> (temp: runtime.Arena_Temp) { - temp = runtime.arena_temp_begin(&global_default_temp_allocator_arenas[global_default_temp_allocator_index], loc) - return -} - -temp_allocator_temp_end :: proc(temp: runtime.Arena_Temp, loc := #caller_location) { - runtime.arena_temp_end(temp, loc) -} - @(fini, private) temp_allocator_fini :: proc() { for &arena in global_default_temp_allocator_arenas { @@ -55,18 +25,52 @@ temp_allocator_fini :: proc() { TEMP_ALLOCATOR_GUARD_END :: proc(temp: runtime.Arena_Temp, loc := #caller_location) { runtime.arena_temp_end(temp, loc) - if temp.arena != nil { - global_default_temp_allocator_index = (global_default_temp_allocator_index-1)%MAX_TEMP_ARENA_COUNT - } } @(deferred_out=TEMP_ALLOCATOR_GUARD_END) -TEMP_ALLOCATOR_GUARD :: #force_inline proc(loc := #caller_location) -> (runtime.Arena_Temp, runtime.Source_Code_Location) { - global_default_temp_allocator_index = (global_default_temp_allocator_index+1)%MAX_TEMP_ARENA_COUNT - tmp := temp_allocator_temp_begin(loc) +TEMP_ALLOCATOR_GUARD :: #force_inline proc(collisions: []runtime.Allocator, loc := #caller_location) -> (runtime.Arena_Temp, runtime.Source_Code_Location) { + assert(len(collisions) <= MAX_TEMP_ARENA_COLLISIONS) + good_arena: ^runtime.Arena + for i in 0.. Temp_Allocator { + return { tmp.arena, runtime.arena_allocator(tmp.arena) } +} + +temp_allocator_begin :: runtime.arena_temp_begin +temp_allocator_end :: runtime.arena_temp_end +@(deferred_out=_temp_allocator_end) +temp_allocator_scope :: proc(tmp: Temp_Allocator) -> (runtime.Arena_Temp) { + return temp_allocator_begin(tmp.arena) +} +@(private="file") +_temp_allocator_end :: proc(tmp: runtime.Arena_Temp) { + temp_allocator_end(tmp) +} + + @(init, private) init_thread_local_cleaner :: proc() { runtime.add_thread_local_cleaner(temp_allocator_fini) diff --git a/core/os/os2/dir.odin b/core/os/os2/dir.odin index 9e6eaab72..a20c1b346 100644 --- a/core/os/os2/dir.odin +++ b/core/os/os2/dir.odin @@ -18,12 +18,12 @@ read_directory :: proc(f: ^File, n: int, allocator: runtime.Allocator) -> (files size = 100 } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) it := read_directory_iterator_create(f) defer _read_directory_iterator_destroy(&it) - dfi := make([dynamic]File_Info, 0, size, temp_allocator()) + dfi := make([dynamic]File_Info, 0, size, temp_allocator) defer if err != nil { for fi in dfi { file_info_delete(fi, allocator) @@ -202,13 +202,13 @@ copy_directory :: proc(dst, src: string, dst_perm := 0o755) -> Error { return err } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - file_infos := read_all_directory_by_path(src, temp_allocator()) or_return + file_infos := read_all_directory_by_path(src, temp_allocator) or_return for fi in file_infos { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - dst_path := join_path({dst, fi.name}, temp_allocator()) or_return + dst_path := join_path({dst, fi.name}, temp_allocator) or_return src_path := fi.fullpath if fi.type == .Directory { @@ -218,4 +218,4 @@ copy_directory :: proc(dst, src: string, dst_perm := 0o755) -> Error { } } return nil -} \ No newline at end of file +} diff --git a/core/os/os2/dir_linux.odin b/core/os/os2/dir_linux.odin index a868a02c4..4676c23b5 100644 --- a/core/os/os2/dir_linux.odin +++ b/core/os/os2/dir_linux.odin @@ -78,7 +78,7 @@ _read_directory_iterator :: proc(it: ^Read_Directory_Iterator) -> (fi: File_Info it.impl.prev_fi = fi if err != nil { - path, _ := _get_full_path(entry_fd, temp_allocator()) + path, _ := _get_full_path(entry_fd, temp_allocator) read_directory_iterator_set_error(it, path, err) } diff --git a/core/os/os2/dir_windows.odin b/core/os/os2/dir_windows.odin index dc517a9e4..722f49717 100644 --- a/core/os/os2/dir_windows.odin +++ b/core/os/os2/dir_windows.odin @@ -14,7 +14,9 @@ find_data_to_file_info :: proc(base_path: string, d: ^win32.WIN32_FIND_DATAW, al if d.cFileName[0] == '.' && d.cFileName[1] == '.' && d.cFileName[2] == 0 { return } - path := concatenate({base_path, `\`, win32_wstring_to_utf8(raw_data(d.cFileName[:]), temp_allocator()) or_else ""}, allocator) or_return + + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + path := concatenate({base_path, `\`, win32_wstring_to_utf8(raw_data(d.cFileName[:]), temp_allocator) or_else ""}, allocator) or_return handle := win32.HANDLE(_open_internal(path, {.Read}, 0o666) or_else 0) defer win32.CloseHandle(handle) @@ -49,7 +51,7 @@ Read_Directory_Iterator_Impl :: struct { @(require_results) _read_directory_iterator :: proc(it: ^Read_Directory_Iterator) -> (fi: File_Info, index: int, ok: bool) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) for !it.impl.no_more_files { err: Error @@ -116,9 +118,9 @@ _read_directory_iterator_init :: proc(it: ^Read_Directory_Iterator, f: ^File) { wpath = impl.wname[:i] } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - wpath_search := make([]u16, len(wpath)+3, temp_allocator()) + wpath_search := make([]u16, len(wpath)+3, temp_allocator) copy(wpath_search, wpath) wpath_search[len(wpath)+0] = '\\' wpath_search[len(wpath)+1] = '*' diff --git a/core/os/os2/env_posix.odin b/core/os/os2/env_posix.odin index 35084893a..62ba6bbe4 100644 --- a/core/os/os2/env_posix.odin +++ b/core/os/os2/env_posix.odin @@ -12,9 +12,9 @@ _lookup_env :: proc(key: string, allocator: runtime.Allocator) -> (value: string return } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - ckey := strings.clone_to_cstring(key, temp_allocator()) + ckey := strings.clone_to_cstring(key, temp_allocator) cval := posix.getenv(ckey) if cval == nil { return @@ -27,10 +27,10 @@ _lookup_env :: proc(key: string, allocator: runtime.Allocator) -> (value: string } _set_env :: proc(key, value: string) -> (err: Error) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - ckey := strings.clone_to_cstring(key, temp_allocator()) or_return - cval := strings.clone_to_cstring(value, temp_allocator()) or_return + ckey := strings.clone_to_cstring(key, temp_allocator) or_return + cval := strings.clone_to_cstring(value, temp_allocator) or_return if posix.setenv(ckey, cval, true) != nil { err = _get_platform_error_from_errno() @@ -39,9 +39,9 @@ _set_env :: proc(key, value: string) -> (err: Error) { } _unset_env :: proc(key: string) -> (ok: bool) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - ckey := strings.clone_to_cstring(key, temp_allocator()) + ckey := strings.clone_to_cstring(key, temp_allocator) ok = posix.unsetenv(ckey) == .OK return diff --git a/core/os/os2/env_wasi.odin b/core/os/os2/env_wasi.odin index 305192c92..e9896370a 100644 --- a/core/os/os2/env_wasi.odin +++ b/core/os/os2/env_wasi.odin @@ -39,9 +39,9 @@ build_env :: proc() -> (err: Error) { g_env_buf = make([]byte, size_of_envs, file_allocator()) or_return defer if err != nil { delete(g_env_buf, file_allocator()) } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - envs := make([]cstring, num_envs, temp_allocator()) or_return + envs := make([]cstring, num_envs, temp_allocator) or_return _err = wasi.environ_get(raw_data(envs), raw_data(g_env_buf)) if _err != nil { diff --git a/core/os/os2/env_windows.odin b/core/os/os2/env_windows.odin index 3ac26a261..cd2c5e758 100644 --- a/core/os/os2/env_windows.odin +++ b/core/os/os2/env_windows.odin @@ -8,8 +8,8 @@ _lookup_env :: proc(key: string, allocator: runtime.Allocator) -> (value: string if key == "" { return } - TEMP_ALLOCATOR_GUARD() - wkey, _ := win32_utf8_to_wstring(key, temp_allocator()) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + wkey, _ := win32_utf8_to_wstring(key, temp_allocator) n := win32.GetEnvironmentVariableW(wkey, nil, 0) if n == 0 { @@ -20,7 +20,7 @@ _lookup_env :: proc(key: string, allocator: runtime.Allocator) -> (value: string return "", true } - b := make([]u16, n+1, temp_allocator()) + b := make([]u16, n+1, temp_allocator) n = win32.GetEnvironmentVariableW(wkey, raw_data(b), u32(len(b))) if n == 0 { @@ -37,9 +37,9 @@ _lookup_env :: proc(key: string, allocator: runtime.Allocator) -> (value: string } _set_env :: proc(key, value: string) -> Error { - TEMP_ALLOCATOR_GUARD() - k := win32_utf8_to_wstring(key, temp_allocator()) or_return - v := win32_utf8_to_wstring(value, temp_allocator()) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + k := win32_utf8_to_wstring(key, temp_allocator) or_return + v := win32_utf8_to_wstring(value, temp_allocator) or_return if !win32.SetEnvironmentVariableW(k, v) { return _get_platform_error() @@ -48,14 +48,14 @@ _set_env :: proc(key, value: string) -> Error { } _unset_env :: proc(key: string) -> bool { - TEMP_ALLOCATOR_GUARD() - k, _ := win32_utf8_to_wstring(key, temp_allocator()) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + k, _ := win32_utf8_to_wstring(key, temp_allocator) return bool(win32.SetEnvironmentVariableW(k, nil)) } _clear_env :: proc() { - TEMP_ALLOCATOR_GUARD() - envs, _ := environ(temp_allocator()) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + envs, _ := environ(temp_allocator) for env in envs { for j in 1.. bool { @(require_results) is_file :: proc(path: string) -> bool { - TEMP_ALLOCATOR_GUARD() - fi, err := stat(path, temp_allocator()) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + fi, err := stat(path, temp_allocator) if err != nil { return false } @@ -303,8 +303,8 @@ is_dir :: is_directory @(require_results) is_directory :: proc(path: string) -> bool { - TEMP_ALLOCATOR_GUARD() - fi, err := stat(path, temp_allocator()) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + fi, err := stat(path, temp_allocator) if err != nil { return false } diff --git a/core/os/os2/file_linux.odin b/core/os/os2/file_linux.odin index 811ee7055..bb5edd345 100644 --- a/core/os/os2/file_linux.odin +++ b/core/os/os2/file_linux.odin @@ -66,8 +66,8 @@ _standard_stream_init :: proc() { } _open :: proc(name: string, flags: File_Flags, perm: int) -> (f: ^File, err: Error) { - TEMP_ALLOCATOR_GUARD() - name_cstr := temp_cstring(name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + name_cstr := clone_to_cstring(name, temp_allocator) or_return // Just default to using O_NOCTTY because needing to open a controlling // terminal would be incredibly rare. This has no effect on files while @@ -299,8 +299,8 @@ _truncate :: proc(f: ^File, size: i64) -> Error { } _remove :: proc(name: string) -> Error { - TEMP_ALLOCATOR_GUARD() - name_cstr := temp_cstring(name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + name_cstr := clone_to_cstring(name, temp_allocator) or_return if fd, errno := linux.open(name_cstr, _OPENDIR_FLAGS + {.NOFOLLOW}); errno == .NONE { linux.close(fd) @@ -311,25 +311,25 @@ _remove :: proc(name: string) -> Error { } _rename :: proc(old_name, new_name: string) -> Error { - TEMP_ALLOCATOR_GUARD() - old_name_cstr := temp_cstring(old_name) or_return - new_name_cstr := temp_cstring(new_name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + old_name_cstr := clone_to_cstring(old_name, temp_allocator) or_return + new_name_cstr := clone_to_cstring(new_name, temp_allocator) or_return return _get_platform_error(linux.rename(old_name_cstr, new_name_cstr)) } _link :: proc(old_name, new_name: string) -> Error { - TEMP_ALLOCATOR_GUARD() - old_name_cstr := temp_cstring(old_name) or_return - new_name_cstr := temp_cstring(new_name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + old_name_cstr := clone_to_cstring(old_name, temp_allocator) or_return + new_name_cstr := clone_to_cstring(new_name, temp_allocator) or_return return _get_platform_error(linux.link(old_name_cstr, new_name_cstr)) } _symlink :: proc(old_name, new_name: string) -> Error { - TEMP_ALLOCATOR_GUARD() - old_name_cstr := temp_cstring(old_name) or_return - new_name_cstr := temp_cstring(new_name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + old_name_cstr := clone_to_cstring(old_name, temp_allocator) or_return + new_name_cstr := clone_to_cstring(new_name, temp_allocator) or_return return _get_platform_error(linux.symlink(old_name_cstr, new_name_cstr)) } @@ -352,14 +352,14 @@ _read_link_cstr :: proc(name_cstr: cstring, allocator: runtime.Allocator) -> (st } _read_link :: proc(name: string, allocator: runtime.Allocator) -> (s: string, e: Error) { - TEMP_ALLOCATOR_GUARD() - name_cstr := temp_cstring(name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + name_cstr := clone_to_cstring(name, temp_allocator) or_return return _read_link_cstr(name_cstr, allocator) } _chdir :: proc(name: string) -> Error { - TEMP_ALLOCATOR_GUARD() - name_cstr := temp_cstring(name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + name_cstr := clone_to_cstring(name, temp_allocator) or_return return _get_platform_error(linux.chdir(name_cstr)) } @@ -369,8 +369,8 @@ _fchdir :: proc(f: ^File) -> Error { } _chmod :: proc(name: string, mode: int) -> Error { - TEMP_ALLOCATOR_GUARD() - name_cstr := temp_cstring(name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + name_cstr := clone_to_cstring(name, temp_allocator) or_return return _get_platform_error(linux.chmod(name_cstr, transmute(linux.Mode)(u32(mode)))) } @@ -381,15 +381,15 @@ _fchmod :: proc(f: ^File, mode: int) -> Error { // NOTE: will throw error without super user priviledges _chown :: proc(name: string, uid, gid: int) -> Error { - TEMP_ALLOCATOR_GUARD() - name_cstr := temp_cstring(name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + name_cstr := clone_to_cstring(name, temp_allocator) or_return return _get_platform_error(linux.chown(name_cstr, linux.Uid(uid), linux.Gid(gid))) } // NOTE: will throw error without super user priviledges _lchown :: proc(name: string, uid, gid: int) -> Error { - TEMP_ALLOCATOR_GUARD() - name_cstr := temp_cstring(name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + name_cstr := clone_to_cstring(name, temp_allocator) or_return return _get_platform_error(linux.lchown(name_cstr, linux.Uid(uid), linux.Gid(gid))) } @@ -400,8 +400,8 @@ _fchown :: proc(f: ^File, uid, gid: int) -> Error { } _chtimes :: proc(name: string, atime, mtime: time.Time) -> Error { - TEMP_ALLOCATOR_GUARD() - name_cstr := temp_cstring(name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + name_cstr := clone_to_cstring(name, temp_allocator) or_return times := [2]linux.Time_Spec { { uint(atime._nsec) / uint(time.Second), @@ -431,8 +431,8 @@ _fchtimes :: proc(f: ^File, atime, mtime: time.Time) -> Error { } _exists :: proc(name: string) -> bool { - TEMP_ALLOCATOR_GUARD() - name_cstr, _ := temp_cstring(name) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + name_cstr, _ := clone_to_cstring(name, temp_allocator) return linux.access(name_cstr, linux.F_OK) == .NONE } @@ -440,8 +440,8 @@ _exists :: proc(name: string) -> bool { _read_entire_pseudo_file :: proc { _read_entire_pseudo_file_string, _read_entire_pseudo_file_cstring } _read_entire_pseudo_file_string :: proc(name: string, allocator: runtime.Allocator) -> (b: []u8, e: Error) { - TEMP_ALLOCATOR_GUARD() - name_cstr := clone_to_cstring(name, temp_allocator()) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + name_cstr := clone_to_cstring(name, temp_allocator) or_return return _read_entire_pseudo_file_cstring(name_cstr, allocator) } diff --git a/core/os/os2/file_posix.odin b/core/os/os2/file_posix.odin index 43d5866b1..dc46b380f 100644 --- a/core/os/os2/file_posix.odin +++ b/core/os/os2/file_posix.odin @@ -69,8 +69,8 @@ _open :: proc(name: string, flags: File_Flags, perm: int) -> (f: ^File, err: Err if .Trunc in flags { sys_flags += {.TRUNC} } if .Inheritable in flags { sys_flags -= {.CLOEXEC} } - TEMP_ALLOCATOR_GUARD() - cname := temp_cstring(name) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cname := clone_to_cstring(name, temp_allocator) fd := posix.open(cname, sys_flags, transmute(posix.mode_t)posix._mode_t(perm)) if fd < 0 { @@ -184,8 +184,8 @@ _truncate :: proc(f: ^File, size: i64) -> Error { } _remove :: proc(name: string) -> Error { - TEMP_ALLOCATOR_GUARD() - cname := temp_cstring(name) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cname := clone_to_cstring(name, temp_allocator) if posix.remove(cname) != 0 { return _get_platform_error() } @@ -193,9 +193,9 @@ _remove :: proc(name: string) -> Error { } _rename :: proc(old_path, new_path: string) -> Error { - TEMP_ALLOCATOR_GUARD() - cold := temp_cstring(old_path) - cnew := temp_cstring(new_path) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cold := clone_to_cstring(old_path, temp_allocator) + cnew := clone_to_cstring(new_path, temp_allocator) if posix.rename(cold, cnew) != 0 { return _get_platform_error() } @@ -203,9 +203,9 @@ _rename :: proc(old_path, new_path: string) -> Error { } _link :: proc(old_name, new_name: string) -> Error { - TEMP_ALLOCATOR_GUARD() - cold := temp_cstring(old_name) - cnew := temp_cstring(new_name) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cold := clone_to_cstring(old_name, temp_allocator) + cnew := clone_to_cstring(new_name, temp_allocator) if posix.link(cold, cnew) != .OK { return _get_platform_error() } @@ -213,9 +213,9 @@ _link :: proc(old_name, new_name: string) -> Error { } _symlink :: proc(old_name, new_name: string) -> Error { - TEMP_ALLOCATOR_GUARD() - cold := temp_cstring(old_name) - cnew := temp_cstring(new_name) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cold := clone_to_cstring(old_name, temp_allocator) + cnew := clone_to_cstring(new_name, temp_allocator) if posix.symlink(cold, cnew) != .OK { return _get_platform_error() } @@ -223,8 +223,8 @@ _symlink :: proc(old_name, new_name: string) -> Error { } _read_link :: proc(name: string, allocator: runtime.Allocator) -> (s: string, err: Error) { - TEMP_ALLOCATOR_GUARD() - cname := temp_cstring(name) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + cname := clone_to_cstring(name, temp_allocator) buf: [dynamic]byte buf.allocator = allocator @@ -269,8 +269,8 @@ _read_link :: proc(name: string, allocator: runtime.Allocator) -> (s: string, er } _chdir :: proc(name: string) -> Error { - TEMP_ALLOCATOR_GUARD() - cname := temp_cstring(name) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cname := clone_to_cstring(name, temp_allocator) if posix.chdir(cname) != .OK { return _get_platform_error() } @@ -292,8 +292,8 @@ _fchmod :: proc(f: ^File, mode: int) -> Error { } _chmod :: proc(name: string, mode: int) -> Error { - TEMP_ALLOCATOR_GUARD() - cname := temp_cstring(name) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cname := clone_to_cstring(name, temp_allocator) if posix.chmod(cname, transmute(posix.mode_t)posix._mode_t(mode)) != .OK { return _get_platform_error() } @@ -308,8 +308,8 @@ _fchown :: proc(f: ^File, uid, gid: int) -> Error { } _chown :: proc(name: string, uid, gid: int) -> Error { - TEMP_ALLOCATOR_GUARD() - cname := temp_cstring(name) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cname := clone_to_cstring(name, temp_allocator) if posix.chown(cname, posix.uid_t(uid), posix.gid_t(gid)) != .OK { return _get_platform_error() } @@ -317,8 +317,8 @@ _chown :: proc(name: string, uid, gid: int) -> Error { } _lchown :: proc(name: string, uid, gid: int) -> Error { - TEMP_ALLOCATOR_GUARD() - cname := temp_cstring(name) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cname := clone_to_cstring(name, temp_allocator) if posix.lchown(cname, posix.uid_t(uid), posix.gid_t(gid)) != .OK { return _get_platform_error() } @@ -337,8 +337,8 @@ _chtimes :: proc(name: string, atime, mtime: time.Time) -> Error { }, } - TEMP_ALLOCATOR_GUARD() - cname := temp_cstring(name) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cname := clone_to_cstring(name, temp_allocator) if posix.utimes(cname, ×) != .OK { return _get_platform_error() @@ -365,8 +365,8 @@ _fchtimes :: proc(f: ^File, atime, mtime: time.Time) -> Error { } _exists :: proc(path: string) -> bool { - TEMP_ALLOCATOR_GUARD() - cpath := temp_cstring(path) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cpath := clone_to_cstring(path, temp_allocator) return posix.access(cpath) == .OK } diff --git a/core/os/os2/file_posix_other.odin b/core/os/os2/file_posix_other.odin index 74b6374ec..a7f095cb3 100644 --- a/core/os/os2/file_posix_other.odin +++ b/core/os/os2/file_posix_other.odin @@ -7,8 +7,8 @@ import "base:runtime" import "core:sys/posix" _posix_absolute_path :: proc(fd: posix.FD, name: string, allocator: runtime.Allocator) -> (path: cstring, err: Error) { - TEMP_ALLOCATOR_GUARD() - cname := temp_cstring(name) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + cname := clone_to_cstring(name, temp_allocator) buf: [posix.PATH_MAX]byte path = posix.realpath(cname, raw_data(buf[:])) diff --git a/core/os/os2/file_windows.odin b/core/os/os2/file_windows.odin index 94e51a14c..8f45d4ab9 100644 --- a/core/os/os2/file_windows.odin +++ b/core/os/os2/file_windows.odin @@ -109,9 +109,9 @@ _open_internal :: proc(name: string, flags: File_Flags, perm: int) -> (handle: u err = .Not_Exist return } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - path := _fix_long_path(name, temp_allocator()) or_return + path := _fix_long_path(name, temp_allocator) or_return access: u32 switch flags & {.Read, .Write} { case {.Read}: access = win32.FILE_GENERIC_READ @@ -580,8 +580,8 @@ _truncate :: proc(f: ^File, size: i64) -> Error { } _remove :: proc(name: string) -> Error { - TEMP_ALLOCATOR_GUARD() - p := _fix_long_path(name, temp_allocator()) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + p := _fix_long_path(name, temp_allocator) or_return err, err1: Error if !win32.DeleteFileW(p) { err = _get_platform_error() @@ -618,9 +618,9 @@ _remove :: proc(name: string) -> Error { } _rename :: proc(old_path, new_path: string) -> Error { - TEMP_ALLOCATOR_GUARD() - from := _fix_long_path(old_path, temp_allocator()) or_return - to := _fix_long_path(new_path, temp_allocator()) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + from := _fix_long_path(old_path, temp_allocator) or_return + to := _fix_long_path(new_path, temp_allocator) or_return if win32.MoveFileExW(from, to, win32.MOVEFILE_REPLACE_EXISTING) { return nil } @@ -629,9 +629,9 @@ _rename :: proc(old_path, new_path: string) -> Error { } _link :: proc(old_name, new_name: string) -> Error { - TEMP_ALLOCATOR_GUARD() - o := _fix_long_path(old_name, temp_allocator()) or_return - n := _fix_long_path(new_name, temp_allocator()) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + o := _fix_long_path(old_name, temp_allocator) or_return + n := _fix_long_path(new_name, temp_allocator) or_return if win32.CreateHardLinkW(n, o, nil) { return nil } @@ -692,9 +692,9 @@ _normalize_link_path :: proc(p: []u16, allocator: runtime.Allocator) -> (str: st return "", _get_platform_error() } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - buf := make([]u16, n+1, temp_allocator()) + buf := make([]u16, n+1, temp_allocator) n = win32.GetFinalPathNameByHandleW(handle, raw_data(buf), u32(len(buf)), win32.VOLUME_NAME_DOS) if n == 0 { return "", _get_platform_error() @@ -718,9 +718,9 @@ _read_link :: proc(name: string, allocator: runtime.Allocator) -> (s: string, er @thread_local rdb_buf: [MAXIMUM_REPARSE_DATA_BUFFER_SIZE]byte - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - p := _fix_long_path(name, temp_allocator()) or_return + p := _fix_long_path(name, temp_allocator) or_return handle := _open_sym_link(p) or_return defer win32.CloseHandle(handle) @@ -785,8 +785,8 @@ _fchown :: proc(f: ^File, uid, gid: int) -> Error { } _chdir :: proc(name: string) -> Error { - TEMP_ALLOCATOR_GUARD() - p := _fix_long_path(name, temp_allocator()) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + p := _fix_long_path(name, temp_allocator) or_return if !win32.SetCurrentDirectoryW(p) { return _get_platform_error() } @@ -834,8 +834,8 @@ _fchtimes :: proc(f: ^File, atime, mtime: time.Time) -> Error { } _exists :: proc(path: string) -> bool { - TEMP_ALLOCATOR_GUARD() - wpath, _ := _fix_long_path(path, temp_allocator()) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + wpath, _ := _fix_long_path(path, temp_allocator) attribs := win32.GetFileAttributesW(wpath) return attribs != win32.INVALID_FILE_ATTRIBUTES } diff --git a/core/os/os2/internal_util.odin b/core/os/os2/internal_util.odin index ce253d17b..9616af8b0 100644 --- a/core/os/os2/internal_util.odin +++ b/core/os/os2/internal_util.odin @@ -43,11 +43,6 @@ clone_to_cstring :: proc(s: string, allocator: runtime.Allocator) -> (res: cstri return cstring(&buf[0]), nil } -@(require_results) -temp_cstring :: proc(s: string) -> (cstring, runtime.Allocator_Error) #optional_allocator_error { - return clone_to_cstring(s, temp_allocator()) -} - @(require_results) string_from_null_terminated_bytes :: proc(b: []byte) -> (res: string) { s := string(b) diff --git a/core/os/os2/path.odin b/core/os/os2/path.odin index 47ac0236d..2caf13092 100644 --- a/core/os/os2/path.odin +++ b/core/os/os2/path.odin @@ -119,11 +119,11 @@ clean_path :: proc(path: string, allocator: runtime.Allocator) -> (cleaned: stri return strings.clone(".", allocator) } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) // The extra byte is to simplify appending path elements by letting the // loop to end each with a separator. We'll trim the last one when we're done. - buffer := make([]u8, len(path) + 1, temp_allocator()) or_return + buffer := make([]u8, len(path) + 1, temp_allocator) or_return // This is the only point where Windows and POSIX differ, as Windows has // alphabet-based volumes for root paths. @@ -326,8 +326,8 @@ For example, `join_path({"/home", "foo", "bar.txt"})` will result in `"/home/foo join_path :: proc(elems: []string, allocator: runtime.Allocator) -> (joined: string, err: Error) { for e, i in elems { if e != "" { - TEMP_ALLOCATOR_GUARD() - p := strings.join(elems[i:], Path_Separator_String, temp_allocator()) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + p := strings.join(elems[i:], Path_Separator_String, temp_allocator) or_return return clean_path(p, allocator) } } diff --git a/core/os/os2/path_linux.odin b/core/os/os2/path_linux.odin index 410b4cb28..d0569c165 100644 --- a/core/os/os2/path_linux.odin +++ b/core/os/os2/path_linux.odin @@ -18,8 +18,8 @@ _is_path_separator :: proc(c: byte) -> bool { } _mkdir :: proc(path: string, perm: int) -> Error { - TEMP_ALLOCATOR_GUARD() - path_cstr := temp_cstring(path) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + path_cstr := clone_to_cstring(path, temp_allocator) or_return return _get_platform_error(linux.mkdir(path_cstr, transmute(linux.Mode)u32(perm))) } @@ -52,9 +52,9 @@ _mkdir_all :: proc(path: string, perm: int) -> Error { } return _get_platform_error(errno) } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) // need something we can edit, and use to generate cstrings - path_bytes := make([]u8, len(path) + 1, temp_allocator()) + path_bytes := make([]u8, len(path) + 1, temp_allocator) // zero terminate the byte slice to make it a valid cstring copy(path_bytes, path) @@ -129,8 +129,8 @@ _remove_all :: proc(path: string) -> Error { return nil } - TEMP_ALLOCATOR_GUARD() - path_cstr := temp_cstring(path) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + path_cstr := clone_to_cstring(path, temp_allocator) or_return fd, errno := linux.open(path_cstr, _OPENDIR_FLAGS) #partial switch errno { @@ -168,14 +168,14 @@ _get_working_directory :: proc(allocator: runtime.Allocator) -> (string, Error) } _set_working_directory :: proc(dir: string) -> Error { - dir_cstr := temp_cstring(dir) or_return + dir_cstr := clone_to_cstring(dir, temp_allocator) or_return return _get_platform_error(linux.chdir(dir_cstr)) } _get_executable_path :: proc(allocator: runtime.Allocator) -> (path: string, err: Error) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - buf := make([dynamic]byte, 1024, temp_allocator()) or_return + buf := make([dynamic]byte, 1024, temp_allocator) or_return for { n, errno := linux.readlink("/proc/self/exe", buf[:]) if errno != .NONE { diff --git a/core/os/os2/path_netbsd.odin b/core/os/os2/path_netbsd.odin index f56a91fd6..41abfb3f1 100644 --- a/core/os/os2/path_netbsd.odin +++ b/core/os/os2/path_netbsd.odin @@ -5,9 +5,9 @@ import "base:runtime" import "core:sys/posix" _get_executable_path :: proc(allocator: runtime.Allocator) -> (path: string, err: Error) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - buf := make([dynamic]byte, 1024, temp_allocator()) or_return + buf := make([dynamic]byte, 1024, temp_allocator) or_return for { n := posix.readlink("/proc/curproc/exe", raw_data(buf), len(buf)) if n < 0 { diff --git a/core/os/os2/path_openbsd.odin b/core/os/os2/path_openbsd.odin index 37b5de927..e27a31dda 100644 --- a/core/os/os2/path_openbsd.odin +++ b/core/os/os2/path_openbsd.odin @@ -35,11 +35,11 @@ _get_executable_path :: proc(allocator: runtime.Allocator) -> (path: string, err return real(arg, allocator) } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - buf := strings.builder_make(temp_allocator()) + buf := strings.builder_make(temp_allocator) - paths := get_env("PATH", temp_allocator()) + paths := get_env("PATH", temp_allocator) for dir in strings.split_iterator(&paths, ":") { strings.builder_reset(&buf) strings.write_string(&buf, dir) diff --git a/core/os/os2/path_posix.odin b/core/os/os2/path_posix.odin index 39bd0a188..01a149854 100644 --- a/core/os/os2/path_posix.odin +++ b/core/os/os2/path_posix.odin @@ -15,8 +15,8 @@ _is_path_separator :: proc(c: byte) -> bool { } _mkdir :: proc(name: string, perm: int) -> Error { - TEMP_ALLOCATOR_GUARD() - cname := temp_cstring(name) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cname := clone_to_cstring(name, temp_allocator) if posix.mkdir(cname, transmute(posix.mode_t)posix._mode_t(perm)) != .OK { return _get_platform_error() } @@ -28,13 +28,13 @@ _mkdir_all :: proc(path: string, perm: int) -> Error { return .Invalid_Path } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) if exists(path) { return .Exist } - clean_path := clean_path(path, temp_allocator()) or_return + clean_path := clean_path(path, temp_allocator) or_return return internal_mkdir_all(clean_path, perm) internal_mkdir_all :: proc(path: string, perm: int) -> Error { @@ -53,8 +53,8 @@ _mkdir_all :: proc(path: string, perm: int) -> Error { } _remove_all :: proc(path: string) -> Error { - TEMP_ALLOCATOR_GUARD() - cpath := temp_cstring(path) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cpath := clone_to_cstring(path, temp_allocator) dir := posix.opendir(cpath) if dir == nil { @@ -78,7 +78,7 @@ _remove_all :: proc(path: string) -> Error { continue } - fullpath, _ := concatenate({path, "/", string(cname), "\x00"}, temp_allocator()) + fullpath, _ := concatenate({path, "/", string(cname), "\x00"}, temp_allocator) if entry.d_type == .DIR { _remove_all(fullpath[:len(fullpath)-1]) or_return } else { @@ -95,10 +95,10 @@ _remove_all :: proc(path: string) -> Error { } _get_working_directory :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) buf: [dynamic]byte - buf.allocator = temp_allocator() + buf.allocator = temp_allocator size := uint(posix.PATH_MAX) cwd: cstring @@ -116,8 +116,8 @@ _get_working_directory :: proc(allocator: runtime.Allocator) -> (dir: string, er } _set_working_directory :: proc(dir: string) -> (err: Error) { - TEMP_ALLOCATOR_GUARD() - cdir := temp_cstring(dir) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + cdir := clone_to_cstring(dir, temp_allocator) if posix.chdir(cdir) != .OK { err = _get_platform_error() } diff --git a/core/os/os2/path_posixfs.odin b/core/os/os2/path_posixfs.odin index 8f9d43d63..24575bbd8 100644 --- a/core/os/os2/path_posixfs.odin +++ b/core/os/os2/path_posixfs.odin @@ -31,8 +31,8 @@ _get_absolute_path :: proc(path: string, allocator: runtime.Allocator) -> (absol if rel == "" { rel = "." } - TEMP_ALLOCATOR_GUARD() - rel_cstr := strings.clone_to_cstring(rel, temp_allocator()) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + rel_cstr := strings.clone_to_cstring(rel, temp_allocator) path_ptr := posix.realpath(rel_cstr, nil) if path_ptr == nil { return "", Platform_Error(posix.errno()) diff --git a/core/os/os2/path_wasi.odin b/core/os/os2/path_wasi.odin index 7aee8fcc0..3e00463b1 100644 --- a/core/os/os2/path_wasi.odin +++ b/core/os/os2/path_wasi.odin @@ -28,13 +28,13 @@ _mkdir_all :: proc(path: string, perm: int) -> Error { return .Invalid_Path } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) if exists(path) { return .Exist } - clean_path := clean_path(path, temp_allocator()) + clean_path := clean_path(path, temp_allocator) return internal_mkdir_all(clean_path) internal_mkdir_all :: proc(path: string) -> Error { diff --git a/core/os/os2/path_windows.odin b/core/os/os2/path_windows.odin index dd9b7748c..07e202222 100644 --- a/core/os/os2/path_windows.odin +++ b/core/os/os2/path_windows.odin @@ -14,8 +14,8 @@ _is_path_separator :: proc(c: byte) -> bool { } _mkdir :: proc(name: string, perm: int) -> Error { - TEMP_ALLOCATOR_GUARD() - if !win32.CreateDirectoryW(_fix_long_path(name, temp_allocator()) or_return, nil) { + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + if !win32.CreateDirectoryW(_fix_long_path(name, temp_allocator) or_return, nil) { return _get_platform_error() } return nil @@ -33,9 +33,9 @@ _mkdir_all :: proc(path: string, perm: int) -> Error { return p, false, nil } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - dir_stat, err := stat(path, temp_allocator()) + dir_stat, err := stat(path, temp_allocator) if err == nil { if dir_stat.type == .Directory { return nil @@ -63,7 +63,7 @@ _mkdir_all :: proc(path: string, perm: int) -> Error { err = mkdir(path, perm) if err != nil { - new_dir_stat, err1 := lstat(path, temp_allocator()) + new_dir_stat, err1 := lstat(path, temp_allocator) if err1 == nil && new_dir_stat.type == .Directory { return nil } @@ -82,8 +82,8 @@ _remove_all :: proc(path: string) -> Error { return nil } - TEMP_ALLOCATOR_GUARD() - dir := win32_utf8_to_wstring(path, temp_allocator()) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + dir := win32_utf8_to_wstring(path, temp_allocator) or_return empty: [1]u16 @@ -109,10 +109,10 @@ _remove_all :: proc(path: string) -> Error { _get_working_directory :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) { win32.AcquireSRWLockExclusive(&cwd_lock) - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) sz_utf16 := win32.GetCurrentDirectoryW(0, nil) - dir_buf_wstr := make([]u16, sz_utf16, temp_allocator()) or_return + dir_buf_wstr := make([]u16, sz_utf16, temp_allocator) or_return sz_utf16 = win32.GetCurrentDirectoryW(win32.DWORD(len(dir_buf_wstr)), raw_data(dir_buf_wstr)) assert(int(sz_utf16)+1 == len(dir_buf_wstr)) // the second time, it _excludes_ the NUL. @@ -123,8 +123,8 @@ _get_working_directory :: proc(allocator: runtime.Allocator) -> (dir: string, er } _set_working_directory :: proc(dir: string) -> (err: Error) { - TEMP_ALLOCATOR_GUARD() - wstr := win32_utf8_to_wstring(dir, temp_allocator()) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + wstr := win32_utf8_to_wstring(dir, temp_allocator) or_return win32.AcquireSRWLockExclusive(&cwd_lock) @@ -138,9 +138,9 @@ _set_working_directory :: proc(dir: string) -> (err: Error) { } _get_executable_path :: proc(allocator: runtime.Allocator) -> (path: string, err: Error) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - buf := make([dynamic]u16, 512, temp_allocator()) or_return + buf := make([dynamic]u16, 512, temp_allocator) or_return for { ret := win32.GetModuleFileNameW(nil, raw_data(buf), win32.DWORD(len(buf))) if ret == 0 { @@ -222,10 +222,10 @@ _fix_long_path_internal :: proc(path: string) -> string { return path } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) PREFIX :: `\\?` - path_buf := make([]byte, len(PREFIX)+len(path)+1, temp_allocator()) + path_buf := make([]byte, len(PREFIX)+len(path)+1, temp_allocator) copy(path_buf, PREFIX) n := len(path) r, w := 0, len(PREFIX) @@ -297,14 +297,14 @@ _get_absolute_path :: proc(path: string, allocator: runtime.Allocator) -> (absol if rel == "" { rel = "." } - TEMP_ALLOCATOR_GUARD() - rel_utf16 := win32.utf8_to_utf16(rel, temp_allocator()) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + rel_utf16 := win32.utf8_to_utf16(rel, temp_allocator) n := win32.GetFullPathNameW(raw_data(rel_utf16), 0, nil, nil) if n == 0 { return "", Platform_Error(win32.GetLastError()) } - buf := make([]u16, n, temp_allocator()) or_return + buf := make([]u16, n, temp_allocator) or_return n = win32.GetFullPathNameW(raw_data(rel_utf16), u32(n), raw_data(buf), nil) if n == 0 { return "", Platform_Error(win32.GetLastError()) diff --git a/core/os/os2/process_linux.odin b/core/os/os2/process_linux.odin index afb398c8d..6d239ef25 100644 --- a/core/os/os2/process_linux.odin +++ b/core/os/os2/process_linux.odin @@ -50,7 +50,7 @@ _get_ppid :: proc() -> int { @(private="package") _process_list :: proc(allocator: runtime.Allocator) -> (list: []int, err: Error) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) dir_fd, errno := linux.open("/proc/", _OPENDIR_FLAGS) #partial switch errno { @@ -68,9 +68,9 @@ _process_list :: proc(allocator: runtime.Allocator) -> (list: []int, err: Error) } defer linux.close(dir_fd) - dynamic_list := make([dynamic]int, temp_allocator()) or_return + dynamic_list := make([dynamic]int, temp_allocator) or_return - buf := make([dynamic]u8, 128, 128, temp_allocator()) or_return + buf := make([dynamic]u8, 128, 128, temp_allocator) or_return loop: for { buflen: int buflen, errno = linux.getdents(dir_fd, buf[:]) @@ -100,7 +100,7 @@ _process_list :: proc(allocator: runtime.Allocator) -> (list: []int, err: Error) @(private="package") _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator: runtime.Allocator) -> (info: Process_Info, err: Error) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) info.pid = pid @@ -126,7 +126,7 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator passwd_bytes: []u8 passwd_err: Error - passwd_bytes, passwd_err = _read_entire_pseudo_file_cstring("/etc/passwd", temp_allocator()) + passwd_bytes, passwd_err = _read_entire_pseudo_file_cstring("/etc/passwd", temp_allocator) if passwd_err != nil { err = passwd_err break username_if @@ -168,7 +168,7 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator strings.write_int(&path_builder, pid) strings.write_string(&path_builder, "/cmdline") - cmdline_bytes, cmdline_err := _read_entire_pseudo_file(strings.to_cstring(&path_builder) or_return, temp_allocator()) + cmdline_bytes, cmdline_err := _read_entire_pseudo_file(strings.to_cstring(&path_builder) or_return, temp_allocator) if cmdline_err != nil || len(cmdline_bytes) == 0 { err = cmdline_err break cmdline_if @@ -189,7 +189,7 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator strings.write_int(&path_builder, pid) strings.write_string(&path_builder, "/cwd") - cwd, cwd_err = _read_link_cstr(strings.to_cstring(&path_builder) or_return, temp_allocator()) // allowed to fail + cwd, cwd_err = _read_link_cstr(strings.to_cstring(&path_builder) or_return, temp_allocator) // allowed to fail if cwd_err == nil && .Working_Dir in selection { info.working_dir = strings.clone(cwd, allocator) or_return info.fields += {.Working_Dir} @@ -245,7 +245,7 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator strings.write_int(&path_builder, pid) strings.write_string(&path_builder, "/stat") - proc_stat_bytes, stat_err := _read_entire_pseudo_file(strings.to_cstring(&path_builder) or_return, temp_allocator()) + proc_stat_bytes, stat_err := _read_entire_pseudo_file(strings.to_cstring(&path_builder) or_return, temp_allocator) if stat_err != nil { err = stat_err break stat_if @@ -284,7 +284,7 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator Nice, //... etc, } - stat_fields := strings.split(stats, " ", temp_allocator()) or_return + stat_fields := strings.split(stats, " ", temp_allocator) or_return if len(stat_fields) <= int(Fields.Nice) { break stat_if @@ -341,7 +341,7 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator strings.write_int(&path_builder, pid) strings.write_string(&path_builder, "/environ") - if env_bytes, env_err := _read_entire_pseudo_file(strings.to_cstring(&path_builder) or_return, temp_allocator()); env_err == nil { + if env_bytes, env_err := _read_entire_pseudo_file(strings.to_cstring(&path_builder) or_return, temp_allocator); env_err == nil { env := string(env_bytes) env_list := make([dynamic]string, allocator) or_return @@ -392,7 +392,7 @@ _process_open :: proc(pid: int, _: Process_Open_Flags) -> (process: Process, err @(private="package") _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) if len(desc.command) == 0 { return process, .Invalid_Command @@ -401,7 +401,7 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { dir_fd := linux.AT_FDCWD errno: linux.Errno if desc.working_dir != "" { - dir_cstr := temp_cstring(desc.working_dir) or_return + dir_cstr := clone_to_cstring(desc.working_dir, temp_allocator) or_return if dir_fd, errno = linux.open(dir_cstr, _OPENDIR_FLAGS); errno != .NONE { return process, _get_platform_error(errno) } @@ -414,10 +414,10 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { exe_path: cstring executable_name := desc.command[0] if strings.index_byte(executable_name, '/') < 0 { - path_env := get_env("PATH", temp_allocator()) - path_dirs := split_path_list(path_env, temp_allocator()) or_return + path_env := get_env("PATH", temp_allocator) + path_dirs := split_path_list(path_env, temp_allocator) or_return - exe_builder := strings.builder_make(temp_allocator()) or_return + exe_builder := strings.builder_make(temp_allocator) or_return found: bool for dir in path_dirs { @@ -444,7 +444,7 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { } } } else { - exe_path = temp_cstring(executable_name) or_return + exe_path = clone_to_cstring(executable_name, temp_allocator) or_return if linux.access(exe_path, linux.X_OK) != .NONE { return process, .Not_Exist } @@ -452,20 +452,20 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { // args and environment need to be a list of cstrings // that are terminated by a nil pointer. - cargs := make([]cstring, len(desc.command) + 1, temp_allocator()) or_return + cargs := make([]cstring, len(desc.command) + 1, temp_allocator) or_return for command, i in desc.command { - cargs[i] = temp_cstring(command) or_return + cargs[i] = clone_to_cstring(command, temp_allocator) or_return } // Use current process' environment if description didn't provide it. env: [^]cstring if desc.env == nil { // take this process's current environment - env = raw_data(export_cstring_environment(temp_allocator())) + env = raw_data(export_cstring_environment(temp_allocator)) } else { - cenv := make([]cstring, len(desc.env) + 1, temp_allocator()) or_return + cenv := make([]cstring, len(desc.env) + 1, temp_allocator) or_return for env, i in desc.env { - cenv[i] = temp_cstring(env) or_return + cenv[i] = clone_to_cstring(env, temp_allocator) or_return } env = &cenv[0] } @@ -593,7 +593,7 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { } _process_state_update_times :: proc(state: ^Process_State) -> (err: Error) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) stat_path_buf: [48]u8 path_builder := strings.builder_from_bytes(stat_path_buf[:]) @@ -602,7 +602,7 @@ _process_state_update_times :: proc(state: ^Process_State) -> (err: Error) { strings.write_string(&path_builder, "/stat") stat_buf: []u8 - stat_buf, err = _read_entire_pseudo_file(strings.to_cstring(&path_builder) or_return, temp_allocator()) + stat_buf, err = _read_entire_pseudo_file(strings.to_cstring(&path_builder) or_return, temp_allocator) if err != nil { return } diff --git a/core/os/os2/process_posix.odin b/core/os/os2/process_posix.odin index 6070b19d6..425e56ce3 100644 --- a/core/os/os2/process_posix.odin +++ b/core/os/os2/process_posix.odin @@ -52,14 +52,14 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { return } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) // search PATH if just a plain name is provided. - exe_builder := strings.builder_make(temp_allocator()) + exe_builder := strings.builder_make(temp_allocator) exe_name := desc.command[0] if strings.index_byte(exe_name, '/') < 0 { - path_env := get_env("PATH", temp_allocator()) - path_dirs := split_path_list(path_env, temp_allocator()) or_return + path_env := get_env("PATH", temp_allocator) + path_dirs := split_path_list(path_env, temp_allocator) or_return found: bool for dir in path_dirs { @@ -108,12 +108,12 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { } cwd: cstring; if desc.working_dir != "" { - cwd = temp_cstring(desc.working_dir) + cwd = clone_to_cstring(desc.working_dir, temp_allocator) } - cmd := make([]cstring, len(desc.command) + 1, temp_allocator()) + cmd := make([]cstring, len(desc.command) + 1, temp_allocator) for part, i in desc.command { - cmd[i] = temp_cstring(part) + cmd[i] = clone_to_cstring(part, temp_allocator) } env: [^]cstring @@ -121,9 +121,9 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { // take this process's current environment env = posix.environ } else { - cenv := make([]cstring, len(desc.env) + 1, temp_allocator()) + cenv := make([]cstring, len(desc.env) + 1, temp_allocator) for env, i in desc.env { - cenv[i] = temp_cstring(env) + cenv[i] = clone_to_cstring(env, temp_allocator) } env = raw_data(cenv) } diff --git a/core/os/os2/process_posix_darwin.odin b/core/os/os2/process_posix_darwin.odin index 0ea1f643c..f150d728b 100644 --- a/core/os/os2/process_posix_darwin.odin +++ b/core/os/os2/process_posix_darwin.odin @@ -127,7 +127,7 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator break args } - buf := runtime.make_aligned([]byte, length, 4, temp_allocator()) + buf := runtime.make_aligned([]byte, length, 4, temp_allocator) if sysctl(raw_data(mib), 3, raw_data(buf), &length, nil, 0) != .OK { if err == nil { err = _get_platform_error() @@ -239,9 +239,9 @@ _process_list :: proc(allocator: runtime.Allocator) -> (list: []int, err: Error) return } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - buffer := make([]i32, ret, temp_allocator()) + buffer := make([]i32, ret, temp_allocator) ret = darwin.proc_listallpids(raw_data(buffer), ret*size_of(i32)) if ret < 0 { err = _get_platform_error() diff --git a/core/os/os2/process_windows.odin b/core/os/os2/process_windows.odin index 69764dff7..1d4cda511 100644 --- a/core/os/os2/process_windows.odin +++ b/core/os/os2/process_windows.odin @@ -162,9 +162,10 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator if err != nil { break read_peb } + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) if selection >= {.Command_Line, .Command_Args} { - TEMP_ALLOCATOR_GUARD() - cmdline_w := make([]u16, process_params.CommandLine.Length, temp_allocator()) or_return + temp_allocator_scope(temp_allocator) + cmdline_w := make([]u16, process_params.CommandLine.Length, temp_allocator) or_return _, err = read_memory_as_slice(ph, process_params.CommandLine.Buffer, cmdline_w) if err != nil { break read_peb @@ -179,9 +180,9 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator } } if .Environment in selection { - TEMP_ALLOCATOR_GUARD() + temp_allocator_scope(temp_allocator) env_len := process_params.EnvironmentSize / 2 - envs_w := make([]u16, env_len, temp_allocator()) or_return + envs_w := make([]u16, env_len, temp_allocator) or_return _, err = read_memory_as_slice(ph, process_params.Environment, envs_w) if err != nil { break read_peb @@ -190,8 +191,8 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator info.fields += {.Environment} } if .Working_Dir in selection { - TEMP_ALLOCATOR_GUARD() - cwd_w := make([]u16, process_params.CurrentDirectoryPath.Length, temp_allocator()) or_return + temp_allocator_scope(temp_allocator) + cwd_w := make([]u16, process_params.CurrentDirectoryPath.Length, temp_allocator) or_return _, err = read_memory_as_slice(ph, process_params.CurrentDirectoryPath.Buffer, cwd_w) if err != nil { break read_peb @@ -272,9 +273,10 @@ _process_info_by_handle :: proc(process: Process, selection: Process_Info_Fields if err != nil { break read_peb } + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) if selection >= {.Command_Line, .Command_Args} { - TEMP_ALLOCATOR_GUARD() - cmdline_w := make([]u16, process_params.CommandLine.Length, temp_allocator()) or_return + temp_allocator_scope(temp_allocator) + cmdline_w := make([]u16, process_params.CommandLine.Length, temp_allocator) or_return _, err = read_memory_as_slice(ph, process_params.CommandLine.Buffer, cmdline_w) if err != nil { break read_peb @@ -289,9 +291,9 @@ _process_info_by_handle :: proc(process: Process, selection: Process_Info_Fields } } if .Environment in selection { - TEMP_ALLOCATOR_GUARD() + temp_allocator_scope(temp_allocator) env_len := process_params.EnvironmentSize / 2 - envs_w := make([]u16, env_len, temp_allocator()) or_return + envs_w := make([]u16, env_len, temp_allocator) or_return _, err = read_memory_as_slice(ph, process_params.Environment, envs_w) if err != nil { break read_peb @@ -300,8 +302,8 @@ _process_info_by_handle :: proc(process: Process, selection: Process_Info_Fields info.fields += {.Environment} } if .Working_Dir in selection { - TEMP_ALLOCATOR_GUARD() - cwd_w := make([]u16, process_params.CurrentDirectoryPath.Length, temp_allocator()) or_return + temp_allocator_scope(temp_allocator) + cwd_w := make([]u16, process_params.CurrentDirectoryPath.Length, temp_allocator) or_return _, err = read_memory_as_slice(ph, process_params.CurrentDirectoryPath.Buffer, cwd_w) if err != nil { break read_peb @@ -419,15 +421,15 @@ _process_open :: proc(pid: int, flags: Process_Open_Flags) -> (process: Process, @(private="package") _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { - TEMP_ALLOCATOR_GUARD() - command_line := _build_command_line(desc.command, temp_allocator()) - command_line_w := win32_utf8_to_wstring(command_line, temp_allocator()) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + command_line := _build_command_line(desc.command, temp_allocator) + command_line_w := win32_utf8_to_wstring(command_line, temp_allocator) or_return environment := desc.env if desc.env == nil { - environment = environ(temp_allocator()) or_return + environment = environ(temp_allocator) or_return } - environment_block := _build_environment_block(environment, temp_allocator()) - environment_block_w := win32_utf8_to_utf16(environment_block, temp_allocator()) or_return + environment_block := _build_environment_block(environment, temp_allocator) + environment_block_w := win32_utf8_to_utf16(environment_block, temp_allocator) or_return stderr_handle: win32.HANDLE stdout_handle: win32.HANDLE @@ -474,7 +476,7 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { stdin_handle = win32.HANDLE((^File_Impl)(desc.stdin.impl).fd) } - working_dir_w := (win32_utf8_to_wstring(desc.working_dir, temp_allocator()) or_else nil) if len(desc.working_dir) > 0 else nil + working_dir_w := (win32_utf8_to_wstring(desc.working_dir, temp_allocator) or_else nil) if len(desc.working_dir) > 0 else nil process_info: win32.PROCESS_INFORMATION ok := win32.CreateProcessW( nil, @@ -612,7 +614,7 @@ _process_exe_by_pid :: proc(pid: int, allocator: runtime.Allocator) -> (exe_path } _get_process_user :: proc(process_handle: win32.HANDLE, allocator: runtime.Allocator) -> (full_username: string, err: Error) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) token_handle: win32.HANDLE if !win32.OpenProcessToken(process_handle, win32.TOKEN_QUERY, &token_handle) { err = _get_platform_error() @@ -627,7 +629,7 @@ _get_process_user :: proc(process_handle: win32.HANDLE, allocator: runtime.Alloc } err = nil } - token_user := (^win32.TOKEN_USER)(raw_data(make([]u8, token_user_size, temp_allocator()) or_return)) + token_user := (^win32.TOKEN_USER)(raw_data(make([]u8, token_user_size, temp_allocator) or_return)) if !win32.GetTokenInformation(token_handle, .TokenUser, token_user, token_user_size, &token_user_size) { err = _get_platform_error() return @@ -643,8 +645,8 @@ _get_process_user :: proc(process_handle: win32.HANDLE, allocator: runtime.Alloc err = _get_platform_error() return } - username := win32_utf16_to_utf8(username_w[:username_chrs], temp_allocator()) or_return - domain := win32_utf16_to_utf8(domain_w[:domain_chrs], temp_allocator()) or_return + username := win32_utf16_to_utf8(username_w[:username_chrs], temp_allocator) or_return + domain := win32_utf16_to_utf8(domain_w[:domain_chrs], temp_allocator) or_return return strings.concatenate({domain, "\\", username}, allocator) } diff --git a/core/os/os2/stat.odin b/core/os/os2/stat.odin index 7d76902eb..63bb42f13 100644 --- a/core/os/os2/stat.odin +++ b/core/os/os2/stat.odin @@ -73,14 +73,14 @@ last_write_time_by_name :: modification_time_by_path @(require_results) modification_time :: proc(f: ^File) -> (time.Time, Error) { - TEMP_ALLOCATOR_GUARD() - fi, err := fstat(f, temp_allocator()) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + fi, err := fstat(f, temp_allocator) return fi.modification_time, err } @(require_results) modification_time_by_path :: proc(path: string) -> (time.Time, Error) { - TEMP_ALLOCATOR_GUARD() - fi, err := stat(path, temp_allocator()) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + fi, err := stat(path, temp_allocator) return fi.modification_time, err } diff --git a/core/os/os2/stat_linux.odin b/core/os/os2/stat_linux.odin index 7bff08f29..119c39c52 100644 --- a/core/os/os2/stat_linux.odin +++ b/core/os/os2/stat_linux.odin @@ -47,8 +47,8 @@ _fstat_internal :: proc(fd: linux.Fd, allocator: runtime.Allocator) -> (fi: File // NOTE: _stat and _lstat are using _fstat to avoid a race condition when populating fullpath _stat :: proc(name: string, allocator: runtime.Allocator) -> (fi: File_Info, err: Error) { - TEMP_ALLOCATOR_GUARD() - name_cstr := temp_cstring(name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + name_cstr := clone_to_cstring(name, temp_allocator) or_return fd, errno := linux.open(name_cstr, {}) if errno != .NONE { @@ -59,8 +59,8 @@ _stat :: proc(name: string, allocator: runtime.Allocator) -> (fi: File_Info, err } _lstat :: proc(name: string, allocator: runtime.Allocator) -> (fi: File_Info, err: Error) { - TEMP_ALLOCATOR_GUARD() - name_cstr := temp_cstring(name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + name_cstr := clone_to_cstring(name, temp_allocator) or_return fd, errno := linux.open(name_cstr, {.PATH, .NOFOLLOW}) if errno != .NONE { diff --git a/core/os/os2/stat_posix.odin b/core/os/os2/stat_posix.odin index 260dc7b52..0f873cd40 100644 --- a/core/os/os2/stat_posix.odin +++ b/core/os/os2/stat_posix.odin @@ -69,8 +69,8 @@ _stat :: proc(name: string, allocator: runtime.Allocator) -> (fi: File_Info, err return } - TEMP_ALLOCATOR_GUARD() - cname := temp_cstring(name) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + cname := clone_to_cstring(name, temp_allocator) or_return fd := posix.open(cname, {}) if fd == -1 { @@ -96,33 +96,33 @@ _lstat :: proc(name: string, allocator: runtime.Allocator) -> (fi: File_Info, er return } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) // NOTE: can't use realpath or open (+ fcntl F_GETPATH) here because it tries to resolve symlinks. // NOTE: This might not be correct when given "/symlink/foo.txt", // you would want that to resolve "/symlink", but not resolve "foo.txt". - fullpath := clean_path(name, temp_allocator()) or_return + fullpath := clean_path(name, temp_allocator) or_return assert(len(fullpath) > 0) switch { case fullpath[0] == '/': // nothing. case fullpath == ".": - fullpath = getwd(temp_allocator()) or_return + fullpath = getwd(temp_allocator) or_return case len(fullpath) > 1 && fullpath[0] == '.' && fullpath[1] == '/': fullpath = fullpath[2:] fallthrough case: fullpath = concatenate({ - getwd(temp_allocator()) or_return, + getwd(temp_allocator) or_return, "/", fullpath, - }, temp_allocator()) or_return + }, temp_allocator) or_return } stat: posix.stat_t - if posix.lstat(temp_cstring(fullpath), &stat) != .OK { + if posix.lstat(clone_to_cstring(fullpath), &stat, temp_allocator) != .OK { err = _get_platform_error() return } diff --git a/core/os/os2/stat_windows.odin b/core/os/os2/stat_windows.odin index 8c3d4a610..ac7acfebf 100644 --- a/core/os/os2/stat_windows.odin +++ b/core/os/os2/stat_windows.odin @@ -45,15 +45,15 @@ full_path_from_name :: proc(name: string, allocator: runtime.Allocator) -> (path name = "." } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - p := win32_utf8_to_utf16(name, temp_allocator()) or_return + p := win32_utf8_to_utf16(name, temp_allocator) or_return n := win32.GetFullPathNameW(raw_data(p), 0, nil, nil) if n == 0 { return "", _get_platform_error() } - buf := make([]u16, n+1, temp_allocator()) + buf := make([]u16, n+1, temp_allocator) n = win32.GetFullPathNameW(raw_data(p), u32(len(buf)), raw_data(buf), nil) if n == 0 { return "", _get_platform_error() @@ -65,9 +65,9 @@ internal_stat :: proc(name: string, create_file_attributes: u32, allocator: runt if len(name) == 0 { return {}, .Not_Exist } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - wname := _fix_long_path(name, temp_allocator()) or_return + wname := _fix_long_path(name, temp_allocator) or_return fa: win32.WIN32_FILE_ATTRIBUTE_DATA ok := win32.GetFileAttributesExW(wname, win32.GetFileExInfoStandard, &fa) if ok && fa.dwFileAttributes & win32.FILE_ATTRIBUTE_REPARSE_POINT == 0 { @@ -137,9 +137,9 @@ _cleanpath_from_handle :: proc(f: ^File, allocator: runtime.Allocator) -> (strin return "", _get_platform_error() } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - buf := make([]u16, max(n, 260)+1, temp_allocator()) + buf := make([]u16, max(n, 260)+1, temp_allocator) n = win32.GetFinalPathNameByHandleW(h, raw_data(buf), u32(len(buf)), 0) return _cleanpath_from_buf(buf[:n], allocator) } @@ -155,9 +155,9 @@ _cleanpath_from_handle_u16 :: proc(f: ^File) -> ([]u16, Error) { return nil, _get_platform_error() } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - buf := make([]u16, max(n, 260)+1, temp_allocator()) + buf := make([]u16, max(n, 260)+1, temp_allocator) n = win32.GetFinalPathNameByHandleW(h, raw_data(buf), u32(len(buf)), 0) return _cleanpath_strip_prefix(buf[:n]), nil } diff --git a/core/os/os2/temp_file.odin b/core/os/os2/temp_file.odin index e93117f02..c63acfd82 100644 --- a/core/os/os2/temp_file.odin +++ b/core/os/os2/temp_file.odin @@ -15,13 +15,13 @@ MAX_ATTEMPTS :: 1<<13 // Should be enough for everyone, right? // The caller must `close` the file once finished with. @(require_results) create_temp_file :: proc(dir, pattern: string) -> (f: ^File, err: Error) { - TEMP_ALLOCATOR_GUARD() - dir := dir if dir != "" else temp_directory(temp_allocator()) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + dir := dir if dir != "" else temp_directory(temp_allocator) or_return prefix, suffix := _prefix_and_suffix(pattern) or_return prefix = temp_join_path(dir, prefix) or_return rand_buf: [10]byte - name_buf := make([]byte, len(prefix)+len(rand_buf)+len(suffix), temp_allocator()) + name_buf := make([]byte, len(prefix)+len(rand_buf)+len(suffix), temp_allocator) attempts := 0 for { @@ -47,13 +47,13 @@ mkdir_temp :: make_directory_temp // If `dir` is an empty tring, `temp_directory()` will be used. @(require_results) make_directory_temp :: proc(dir, pattern: string, allocator: runtime.Allocator) -> (temp_path: string, err: Error) { - TEMP_ALLOCATOR_GUARD() - dir := dir if dir != "" else temp_directory(temp_allocator()) or_return + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + dir := dir if dir != "" else temp_directory(temp_allocator) or_return prefix, suffix := _prefix_and_suffix(pattern) or_return prefix = temp_join_path(dir, prefix) or_return rand_buf: [10]byte - name_buf := make([]byte, len(prefix)+len(rand_buf)+len(suffix), temp_allocator()) + name_buf := make([]byte, len(prefix)+len(rand_buf)+len(suffix), temp_allocator) attempts := 0 for { @@ -70,7 +70,7 @@ make_directory_temp :: proc(dir, pattern: string, allocator: runtime.Allocator) return "", err } if err == .Not_Exist { - if _, serr := stat(dir, temp_allocator()); serr == .Not_Exist { + if _, serr := stat(dir, temp_allocator); serr == .Not_Exist { return "", serr } } @@ -89,9 +89,11 @@ temp_directory :: proc(allocator: runtime.Allocator) -> (string, Error) { @(private="file") temp_join_path :: proc(dir, name: string) -> (string, runtime.Allocator_Error) { + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + if len(dir) > 0 && is_path_separator(dir[len(dir)-1]) { - return concatenate({dir, name}, temp_allocator(),) + return concatenate({dir, name}, temp_allocator,) } - return concatenate({dir, Path_Separator_String, name}, temp_allocator()) + return concatenate({dir, Path_Separator_String, name}, temp_allocator) } diff --git a/core/os/os2/temp_file_linux.odin b/core/os/os2/temp_file_linux.odin index 4eacbc54a..4fb273c48 100644 --- a/core/os/os2/temp_file_linux.odin +++ b/core/os/os2/temp_file_linux.odin @@ -4,8 +4,8 @@ package os2 import "base:runtime" _temp_dir :: proc(allocator: runtime.Allocator) -> (string, runtime.Allocator_Error) { - TEMP_ALLOCATOR_GUARD() - tmpdir := get_env("TMPDIR", temp_allocator()) + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + tmpdir := get_env("TMPDIR", temp_allocator) if tmpdir == "" { tmpdir = "/tmp" } diff --git a/core/os/os2/temp_file_windows.odin b/core/os/os2/temp_file_windows.odin index 3e3e1285c..ae6f856e1 100644 --- a/core/os/os2/temp_file_windows.odin +++ b/core/os/os2/temp_file_windows.odin @@ -9,9 +9,9 @@ _temp_dir :: proc(allocator: runtime.Allocator) -> (string, runtime.Allocator_Er if n == 0 { return "", nil } - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - b := make([]u16, max(win32.MAX_PATH, n), temp_allocator()) + b := make([]u16, max(win32.MAX_PATH, n), temp_allocator) n = win32.GetTempPathW(u32(len(b)), raw_data(b)) if n == 3 && b[1] == ':' && b[2] == '\\' { diff --git a/core/os/os2/user.odin b/core/os/os2/user.odin index 7fcc87bf8..7785e50af 100644 --- a/core/os/os2/user.odin +++ b/core/os/os2/user.odin @@ -4,27 +4,27 @@ import "base:runtime" @(require_results) user_cache_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) #partial switch ODIN_OS { case .Windows: - dir = get_env("LocalAppData", temp_allocator()) + dir = get_env("LocalAppData", temp_allocator) if dir != "" { - dir = clone_string(dir, allocator) or_return + dir = clone_string(dir, temp_allocator) or_return } case .Darwin: - dir = get_env("HOME", temp_allocator()) + dir = get_env("HOME", temp_allocator) if dir != "" { - dir = concatenate({dir, "/Library/Caches"}, allocator) or_return + dir = concatenate({dir, "/Library/Caches"}, temp_allocator) or_return } case: // All other UNIX systems dir = get_env("XDG_CACHE_HOME", allocator) if dir == "" { - dir = get_env("HOME", temp_allocator()) + dir = get_env("HOME", temp_allocator) if dir == "" { return } - dir = concatenate({dir, "/.cache"}, allocator) or_return + dir = concatenate({dir, "/.cache"}, temp_allocator) or_return } } if dir == "" { @@ -35,23 +35,23 @@ user_cache_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error @(require_results) user_config_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) { - TEMP_ALLOCATOR_GUARD() + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) #partial switch ODIN_OS { case .Windows: - dir = get_env("AppData", temp_allocator()) + dir = get_env("AppData", temp_allocator) if dir != "" { dir = clone_string(dir, allocator) or_return } case .Darwin: - dir = get_env("HOME", temp_allocator()) + dir = get_env("HOME", temp_allocator) if dir != "" { dir = concatenate({dir, "/.config"}, allocator) or_return } case: // All other UNIX systems dir = get_env("XDG_CONFIG_HOME", allocator) if dir == "" { - dir = get_env("HOME", temp_allocator()) + dir = get_env("HOME", temp_allocator) if dir == "" { return } From 190960e103585fad1b7e833e08ea6d3a99584830 Mon Sep 17 00:00:00 2001 From: Lucas Perlind Date: Wed, 30 Apr 2025 19:56:52 +1000 Subject: [PATCH 038/120] fix -vet --- core/os/os2/allocators.odin | 2 +- core/os/os2/dir.odin | 2 +- core/os/os2/dir_windows.odin | 2 -- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/core/os/os2/allocators.odin b/core/os/os2/allocators.odin index 1a02d4514..5481c4c61 100644 --- a/core/os/os2/allocators.odin +++ b/core/os/os2/allocators.odin @@ -52,7 +52,7 @@ TEMP_ALLOCATOR_GUARD :: #force_inline proc(collisions: []runtime.Allocator, loc Temp_Allocator :: struct { using arena: ^runtime.Arena, - using allocator: runtime.Allocator + using allocator: runtime.Allocator, } get_temp_allocator :: proc(tmp: runtime.Arena_Temp, _: runtime.Source_Code_Location) -> Temp_Allocator { diff --git a/core/os/os2/dir.odin b/core/os/os2/dir.odin index a20c1b346..7e0dfe97e 100644 --- a/core/os/os2/dir.odin +++ b/core/os/os2/dir.odin @@ -206,7 +206,7 @@ copy_directory :: proc(dst, src: string, dst_perm := 0o755) -> Error { file_infos := read_all_directory_by_path(src, temp_allocator) or_return for fi in file_infos { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator_scope(temp_allocator) dst_path := join_path({dst, fi.name}, temp_allocator) or_return src_path := fi.fullpath diff --git a/core/os/os2/dir_windows.odin b/core/os/os2/dir_windows.odin index 722f49717..daabbaf67 100644 --- a/core/os/os2/dir_windows.odin +++ b/core/os/os2/dir_windows.odin @@ -51,8 +51,6 @@ Read_Directory_Iterator_Impl :: struct { @(require_results) _read_directory_iterator :: proc(it: ^Read_Directory_Iterator) -> (fi: File_Info, index: int, ok: bool) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - for !it.impl.no_more_files { err: Error file_info_delete(it.impl.prev_fi, file_allocator()) From 1bea59ee6840d36f114d8a105531e3c0da5e3386 Mon Sep 17 00:00:00 2001 From: Lucas Perlind Date: Wed, 30 Apr 2025 20:07:17 +1000 Subject: [PATCH 039/120] Fix linux --- core/os/os2/dir_linux.odin | 1 + core/os/os2/path_linux.odin | 2 ++ 2 files changed, 3 insertions(+) diff --git a/core/os/os2/dir_linux.odin b/core/os/os2/dir_linux.odin index 4676c23b5..30dce56e6 100644 --- a/core/os/os2/dir_linux.odin +++ b/core/os/os2/dir_linux.odin @@ -78,6 +78,7 @@ _read_directory_iterator :: proc(it: ^Read_Directory_Iterator) -> (fi: File_Info it.impl.prev_fi = fi if err != nil { + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) path, _ := _get_full_path(entry_fd, temp_allocator) read_directory_iterator_set_error(it, path, err) } diff --git a/core/os/os2/path_linux.odin b/core/os/os2/path_linux.odin index d0569c165..11de5cf37 100644 --- a/core/os/os2/path_linux.odin +++ b/core/os/os2/path_linux.odin @@ -168,6 +168,8 @@ _get_working_directory :: proc(allocator: runtime.Allocator) -> (string, Error) } _set_working_directory :: proc(dir: string) -> Error { + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + dir_cstr := clone_to_cstring(dir, temp_allocator) or_return return _get_platform_error(linux.chdir(dir_cstr)) } From 5292a7f4f386baec0ecd239b38cdfddb9c9be614 Mon Sep 17 00:00:00 2001 From: Lucas Perlind Date: Wed, 30 Apr 2025 20:17:06 +1000 Subject: [PATCH 040/120] Fix posix --- core/os/os2/file_posix.odin | 47 ++++++++++++++------------- core/os/os2/path_posix.odin | 10 +++--- core/os/os2/process_posix.odin | 6 ++-- core/os/os2/process_posix_darwin.odin | 1 + core/os/os2/stat_posix.odin | 3 +- 5 files changed, 35 insertions(+), 32 deletions(-) diff --git a/core/os/os2/file_posix.odin b/core/os/os2/file_posix.odin index dc46b380f..c53a176f2 100644 --- a/core/os/os2/file_posix.odin +++ b/core/os/os2/file_posix.odin @@ -70,7 +70,7 @@ _open :: proc(name: string, flags: File_Flags, perm: int) -> (f: ^File, err: Err if .Inheritable in flags { sys_flags -= {.CLOEXEC} } temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return fd := posix.open(cname, sys_flags, transmute(posix.mode_t)posix._mode_t(perm)) if fd < 0 { @@ -183,39 +183,39 @@ _truncate :: proc(f: ^File, size: i64) -> Error { return nil } -_remove :: proc(name: string) -> Error { +_remove :: proc(name: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.remove(cname) != 0 { return _get_platform_error() } return nil } -_rename :: proc(old_path, new_path: string) -> Error { +_rename :: proc(old_path, new_path: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cold := clone_to_cstring(old_path, temp_allocator) - cnew := clone_to_cstring(new_path, temp_allocator) + cold := clone_to_cstring(old_path, temp_allocator) or_return + cnew := clone_to_cstring(new_path, temp_allocator) or_return if posix.rename(cold, cnew) != 0 { return _get_platform_error() } return nil } -_link :: proc(old_name, new_name: string) -> Error { +_link :: proc(old_name, new_name: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cold := clone_to_cstring(old_name, temp_allocator) - cnew := clone_to_cstring(new_name, temp_allocator) + cold := clone_to_cstring(old_name, temp_allocator) or_return + cnew := clone_to_cstring(new_name, temp_allocator) or_return if posix.link(cold, cnew) != .OK { return _get_platform_error() } return nil } -_symlink :: proc(old_name, new_name: string) -> Error { +_symlink :: proc(old_name, new_name: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cold := clone_to_cstring(old_name, temp_allocator) - cnew := clone_to_cstring(new_name, temp_allocator) + cold := clone_to_cstring(old_name, temp_allocator) or_return + cnew := clone_to_cstring(new_name, temp_allocator) or_return if posix.symlink(cold, cnew) != .OK { return _get_platform_error() } @@ -224,7 +224,7 @@ _symlink :: proc(old_name, new_name: string) -> Error { _read_link :: proc(name: string, allocator: runtime.Allocator) -> (s: string, err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return buf: [dynamic]byte buf.allocator = allocator @@ -268,9 +268,9 @@ _read_link :: proc(name: string, allocator: runtime.Allocator) -> (s: string, er } } -_chdir :: proc(name: string) -> Error { +_chdir :: proc(name: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.chdir(cname) != .OK { return _get_platform_error() } @@ -291,9 +291,9 @@ _fchmod :: proc(f: ^File, mode: int) -> Error { return nil } -_chmod :: proc(name: string, mode: int) -> Error { +_chmod :: proc(name: string, mode: int) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.chmod(cname, transmute(posix.mode_t)posix._mode_t(mode)) != .OK { return _get_platform_error() } @@ -307,9 +307,9 @@ _fchown :: proc(f: ^File, uid, gid: int) -> Error { return nil } -_chown :: proc(name: string, uid, gid: int) -> Error { +_chown :: proc(name: string, uid, gid: int) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.chown(cname, posix.uid_t(uid), posix.gid_t(gid)) != .OK { return _get_platform_error() } @@ -318,14 +318,14 @@ _chown :: proc(name: string, uid, gid: int) -> Error { _lchown :: proc(name: string, uid, gid: int) -> Error { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.lchown(cname, posix.uid_t(uid), posix.gid_t(gid)) != .OK { return _get_platform_error() } return nil } -_chtimes :: proc(name: string, atime, mtime: time.Time) -> Error { +_chtimes :: proc(name: string, atime, mtime: time.Time) -> (err: Error) { times := [2]posix.timeval{ { tv_sec = posix.time_t(atime._nsec/1e9), /* seconds */ @@ -338,7 +338,7 @@ _chtimes :: proc(name: string, atime, mtime: time.Time) -> Error { } temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.utimes(cname, ×) != .OK { return _get_platform_error() @@ -366,7 +366,8 @@ _fchtimes :: proc(f: ^File, atime, mtime: time.Time) -> Error { _exists :: proc(path: string) -> bool { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cpath := clone_to_cstring(path, temp_allocator) + cpath, err := clone_to_cstring(path, temp_allocator) + if err != nil { return false } return posix.access(cpath) == .OK } diff --git a/core/os/os2/path_posix.odin b/core/os/os2/path_posix.odin index 01a149854..1ad46259c 100644 --- a/core/os/os2/path_posix.odin +++ b/core/os/os2/path_posix.odin @@ -14,9 +14,9 @@ _is_path_separator :: proc(c: byte) -> bool { return c == _Path_Separator } -_mkdir :: proc(name: string, perm: int) -> Error { +_mkdir :: proc(name: string, perm: int) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cname := clone_to_cstring(name, temp_allocator) + cname := clone_to_cstring(name, temp_allocator) or_return if posix.mkdir(cname, transmute(posix.mode_t)posix._mode_t(perm)) != .OK { return _get_platform_error() } @@ -52,9 +52,9 @@ _mkdir_all :: proc(path: string, perm: int) -> Error { } } -_remove_all :: proc(path: string) -> Error { +_remove_all :: proc(path: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cpath := clone_to_cstring(path, temp_allocator) + cpath := clone_to_cstring(path, temp_allocator) or_return dir := posix.opendir(cpath) if dir == nil { @@ -117,7 +117,7 @@ _get_working_directory :: proc(allocator: runtime.Allocator) -> (dir: string, er _set_working_directory :: proc(dir: string) -> (err: Error) { temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) - cdir := clone_to_cstring(dir, temp_allocator) + cdir := clone_to_cstring(dir, temp_allocator) or_return if posix.chdir(cdir) != .OK { err = _get_platform_error() } diff --git a/core/os/os2/process_posix.odin b/core/os/os2/process_posix.odin index 425e56ce3..f24aa12d3 100644 --- a/core/os/os2/process_posix.odin +++ b/core/os/os2/process_posix.odin @@ -108,12 +108,12 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { } cwd: cstring; if desc.working_dir != "" { - cwd = clone_to_cstring(desc.working_dir, temp_allocator) + cwd = clone_to_cstring(desc.working_dir, temp_allocator) or_return } cmd := make([]cstring, len(desc.command) + 1, temp_allocator) for part, i in desc.command { - cmd[i] = clone_to_cstring(part, temp_allocator) + cmd[i] = clone_to_cstring(part, temp_allocator) or_return } env: [^]cstring @@ -123,7 +123,7 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { } else { cenv := make([]cstring, len(desc.env) + 1, temp_allocator) for env, i in desc.env { - cenv[i] = clone_to_cstring(env, temp_allocator) + cenv[i] = clone_to_cstring(env, temp_allocator) or_return } env = raw_data(cenv) } diff --git a/core/os/os2/process_posix_darwin.odin b/core/os/os2/process_posix_darwin.odin index f150d728b..eb7ab492d 100644 --- a/core/os/os2/process_posix_darwin.odin +++ b/core/os/os2/process_posix_darwin.odin @@ -50,6 +50,7 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator } + temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) info.pid = pid // Thought on errors is: allocation failures return immediately (also why the non-allocation stuff is done first), diff --git a/core/os/os2/stat_posix.odin b/core/os/os2/stat_posix.odin index 0f873cd40..5119fe9ad 100644 --- a/core/os/os2/stat_posix.odin +++ b/core/os/os2/stat_posix.odin @@ -122,7 +122,8 @@ _lstat :: proc(name: string, allocator: runtime.Allocator) -> (fi: File_Info, er } stat: posix.stat_t - if posix.lstat(clone_to_cstring(fullpath), &stat, temp_allocator) != .OK { + c_fullpath := clone_to_cstring(fullpath, temp_allocator) or_return + if posix.lstat(c_fullpath, &stat) != .OK { err = _get_platform_error() return } From 9f2d008a8a0d53ac58cdc4bdf1279f40215f28c7 Mon Sep 17 00:00:00 2001 From: Lucas Perlind Date: Thu, 1 May 2025 18:23:42 +1000 Subject: [PATCH 041/120] Remove TEMP_ALLOCATOR_GUARD wrapper --- core/os/os2/allocators.odin | 25 +++++++++++-------------- core/os/os2/dir.odin | 4 ++-- core/os/os2/dir_linux.odin | 2 +- core/os/os2/dir_windows.odin | 4 ++-- core/os/os2/env_posix.odin | 6 +++--- core/os/os2/env_wasi.odin | 2 +- core/os/os2/env_windows.odin | 8 ++++---- core/os/os2/errors.odin | 2 +- core/os/os2/file.odin | 4 ++-- core/os/os2/file_linux.odin | 26 +++++++++++++------------- core/os/os2/file_posix.odin | 24 ++++++++++++------------ core/os/os2/file_posix_other.odin | 2 +- core/os/os2/file_windows.odin | 16 ++++++++-------- core/os/os2/path.odin | 4 ++-- core/os/os2/path_linux.odin | 10 +++++----- core/os/os2/path_netbsd.odin | 2 +- core/os/os2/path_openbsd.odin | 2 +- core/os/os2/path_posix.odin | 10 +++++----- core/os/os2/path_posixfs.odin | 2 +- core/os/os2/path_wasi.odin | 2 +- core/os/os2/path_windows.odin | 16 ++++++++-------- core/os/os2/process_linux.odin | 8 ++++---- core/os/os2/process_posix.odin | 2 +- core/os/os2/process_posix_darwin.odin | 4 ++-- core/os/os2/process_windows.odin | 8 ++++---- core/os/os2/stat.odin | 4 ++-- core/os/os2/stat_linux.odin | 4 ++-- core/os/os2/stat_posix.odin | 4 ++-- core/os/os2/stat_windows.odin | 8 ++++---- core/os/os2/temp_file.odin | 6 +++--- core/os/os2/temp_file_linux.odin | 2 +- core/os/os2/temp_file_windows.odin | 2 +- core/os/os2/user.odin | 4 ++-- 33 files changed, 113 insertions(+), 116 deletions(-) diff --git a/core/os/os2/allocators.odin b/core/os/os2/allocators.odin index 5481c4c61..7dba69749 100644 --- a/core/os/os2/allocators.odin +++ b/core/os/os2/allocators.odin @@ -23,12 +23,19 @@ temp_allocator_fini :: proc() { global_default_temp_allocator_arenas = {} } -TEMP_ALLOCATOR_GUARD_END :: proc(temp: runtime.Arena_Temp, loc := #caller_location) { - runtime.arena_temp_end(temp, loc) +Temp_Allocator :: struct { + using arena: ^runtime.Arena, + using allocator: runtime.Allocator, + tmp: runtime.Arena_Temp, + loc: runtime.Source_Code_Location, +} + +TEMP_ALLOCATOR_GUARD_END :: proc(temp: Temp_Allocator) { + runtime.arena_temp_end(temp.tmp, temp.loc) } @(deferred_out=TEMP_ALLOCATOR_GUARD_END) -TEMP_ALLOCATOR_GUARD :: #force_inline proc(collisions: []runtime.Allocator, loc := #caller_location) -> (runtime.Arena_Temp, runtime.Source_Code_Location) { +TEMP_ALLOCATOR_GUARD :: #force_inline proc(collisions: []runtime.Allocator, loc := #caller_location) -> Temp_Allocator { assert(len(collisions) <= MAX_TEMP_ARENA_COLLISIONS) good_arena: ^runtime.Arena for i in 0.. Temp_Allocator { - return { tmp.arena, runtime.arena_allocator(tmp.arena) } + return { good_arena, runtime.arena_allocator(good_arena), tmp, loc } } temp_allocator_begin :: runtime.arena_temp_begin @@ -70,7 +68,6 @@ _temp_allocator_end :: proc(tmp: runtime.Arena_Temp) { temp_allocator_end(tmp) } - @(init, private) init_thread_local_cleaner :: proc() { runtime.add_thread_local_cleaner(temp_allocator_fini) diff --git a/core/os/os2/dir.odin b/core/os/os2/dir.odin index 7e0dfe97e..a33e8a8d9 100644 --- a/core/os/os2/dir.odin +++ b/core/os/os2/dir.odin @@ -18,7 +18,7 @@ read_directory :: proc(f: ^File, n: int, allocator: runtime.Allocator) -> (files size = 100 } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) it := read_directory_iterator_create(f) defer _read_directory_iterator_destroy(&it) @@ -202,7 +202,7 @@ copy_directory :: proc(dst, src: string, dst_perm := 0o755) -> Error { return err } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) file_infos := read_all_directory_by_path(src, temp_allocator) or_return for fi in file_infos { diff --git a/core/os/os2/dir_linux.odin b/core/os/os2/dir_linux.odin index 30dce56e6..34346c02f 100644 --- a/core/os/os2/dir_linux.odin +++ b/core/os/os2/dir_linux.odin @@ -78,7 +78,7 @@ _read_directory_iterator :: proc(it: ^Read_Directory_Iterator) -> (fi: File_Info it.impl.prev_fi = fi if err != nil { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) path, _ := _get_full_path(entry_fd, temp_allocator) read_directory_iterator_set_error(it, path, err) } diff --git a/core/os/os2/dir_windows.odin b/core/os/os2/dir_windows.odin index daabbaf67..4cf1f8396 100644 --- a/core/os/os2/dir_windows.odin +++ b/core/os/os2/dir_windows.odin @@ -15,7 +15,7 @@ find_data_to_file_info :: proc(base_path: string, d: ^win32.WIN32_FIND_DATAW, al return } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) path := concatenate({base_path, `\`, win32_wstring_to_utf8(raw_data(d.cFileName[:]), temp_allocator) or_else ""}, allocator) or_return handle := win32.HANDLE(_open_internal(path, {.Read}, 0o666) or_else 0) @@ -116,7 +116,7 @@ _read_directory_iterator_init :: proc(it: ^Read_Directory_Iterator, f: ^File) { wpath = impl.wname[:i] } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) wpath_search := make([]u16, len(wpath)+3, temp_allocator) copy(wpath_search, wpath) diff --git a/core/os/os2/env_posix.odin b/core/os/os2/env_posix.odin index 62ba6bbe4..13682f76b 100644 --- a/core/os/os2/env_posix.odin +++ b/core/os/os2/env_posix.odin @@ -12,7 +12,7 @@ _lookup_env :: proc(key: string, allocator: runtime.Allocator) -> (value: string return } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) ckey := strings.clone_to_cstring(key, temp_allocator) cval := posix.getenv(ckey) @@ -27,7 +27,7 @@ _lookup_env :: proc(key: string, allocator: runtime.Allocator) -> (value: string } _set_env :: proc(key, value: string) -> (err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) ckey := strings.clone_to_cstring(key, temp_allocator) or_return cval := strings.clone_to_cstring(value, temp_allocator) or_return @@ -39,7 +39,7 @@ _set_env :: proc(key, value: string) -> (err: Error) { } _unset_env :: proc(key: string) -> (ok: bool) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) ckey := strings.clone_to_cstring(key, temp_allocator) diff --git a/core/os/os2/env_wasi.odin b/core/os/os2/env_wasi.odin index e9896370a..faa54e36b 100644 --- a/core/os/os2/env_wasi.odin +++ b/core/os/os2/env_wasi.odin @@ -39,7 +39,7 @@ build_env :: proc() -> (err: Error) { g_env_buf = make([]byte, size_of_envs, file_allocator()) or_return defer if err != nil { delete(g_env_buf, file_allocator()) } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) envs := make([]cstring, num_envs, temp_allocator) or_return diff --git a/core/os/os2/env_windows.odin b/core/os/os2/env_windows.odin index cd2c5e758..6bfde34bb 100644 --- a/core/os/os2/env_windows.odin +++ b/core/os/os2/env_windows.odin @@ -8,7 +8,7 @@ _lookup_env :: proc(key: string, allocator: runtime.Allocator) -> (value: string if key == "" { return } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) wkey, _ := win32_utf8_to_wstring(key, temp_allocator) n := win32.GetEnvironmentVariableW(wkey, nil, 0) @@ -37,7 +37,7 @@ _lookup_env :: proc(key: string, allocator: runtime.Allocator) -> (value: string } _set_env :: proc(key, value: string) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) k := win32_utf8_to_wstring(key, temp_allocator) or_return v := win32_utf8_to_wstring(value, temp_allocator) or_return @@ -48,13 +48,13 @@ _set_env :: proc(key, value: string) -> Error { } _unset_env :: proc(key: string) -> bool { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) k, _ := win32_utf8_to_wstring(key, temp_allocator) return bool(win32.SetEnvironmentVariableW(k, nil)) } _clear_env :: proc() { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) envs, _ := environ(temp_allocator) for env in envs { for j in 1.. string { } print_error :: proc(f: ^File, ferr: Error, msg: string) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) err_str := error_string(ferr) // msg + ": " + err_str + '\n' diff --git a/core/os/os2/file.odin b/core/os/os2/file.odin index 57a65894a..ff214182e 100644 --- a/core/os/os2/file.odin +++ b/core/os/os2/file.odin @@ -291,7 +291,7 @@ exists :: proc(path: string) -> bool { @(require_results) is_file :: proc(path: string) -> bool { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) fi, err := stat(path, temp_allocator) if err != nil { return false @@ -303,7 +303,7 @@ is_dir :: is_directory @(require_results) is_directory :: proc(path: string) -> bool { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) fi, err := stat(path, temp_allocator) if err != nil { return false diff --git a/core/os/os2/file_linux.odin b/core/os/os2/file_linux.odin index bb5edd345..a1ead7f9f 100644 --- a/core/os/os2/file_linux.odin +++ b/core/os/os2/file_linux.odin @@ -66,7 +66,7 @@ _standard_stream_init :: proc() { } _open :: proc(name: string, flags: File_Flags, perm: int) -> (f: ^File, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) name_cstr := clone_to_cstring(name, temp_allocator) or_return // Just default to using O_NOCTTY because needing to open a controlling @@ -299,7 +299,7 @@ _truncate :: proc(f: ^File, size: i64) -> Error { } _remove :: proc(name: string) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) name_cstr := clone_to_cstring(name, temp_allocator) or_return if fd, errno := linux.open(name_cstr, _OPENDIR_FLAGS + {.NOFOLLOW}); errno == .NONE { @@ -311,7 +311,7 @@ _remove :: proc(name: string) -> Error { } _rename :: proc(old_name, new_name: string) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) old_name_cstr := clone_to_cstring(old_name, temp_allocator) or_return new_name_cstr := clone_to_cstring(new_name, temp_allocator) or_return @@ -319,7 +319,7 @@ _rename :: proc(old_name, new_name: string) -> Error { } _link :: proc(old_name, new_name: string) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) old_name_cstr := clone_to_cstring(old_name, temp_allocator) or_return new_name_cstr := clone_to_cstring(new_name, temp_allocator) or_return @@ -327,7 +327,7 @@ _link :: proc(old_name, new_name: string) -> Error { } _symlink :: proc(old_name, new_name: string) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) old_name_cstr := clone_to_cstring(old_name, temp_allocator) or_return new_name_cstr := clone_to_cstring(new_name, temp_allocator) or_return return _get_platform_error(linux.symlink(old_name_cstr, new_name_cstr)) @@ -352,13 +352,13 @@ _read_link_cstr :: proc(name_cstr: cstring, allocator: runtime.Allocator) -> (st } _read_link :: proc(name: string, allocator: runtime.Allocator) -> (s: string, e: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) name_cstr := clone_to_cstring(name, temp_allocator) or_return return _read_link_cstr(name_cstr, allocator) } _chdir :: proc(name: string) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) name_cstr := clone_to_cstring(name, temp_allocator) or_return return _get_platform_error(linux.chdir(name_cstr)) } @@ -369,7 +369,7 @@ _fchdir :: proc(f: ^File) -> Error { } _chmod :: proc(name: string, mode: int) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) name_cstr := clone_to_cstring(name, temp_allocator) or_return return _get_platform_error(linux.chmod(name_cstr, transmute(linux.Mode)(u32(mode)))) } @@ -381,14 +381,14 @@ _fchmod :: proc(f: ^File, mode: int) -> Error { // NOTE: will throw error without super user priviledges _chown :: proc(name: string, uid, gid: int) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) name_cstr := clone_to_cstring(name, temp_allocator) or_return return _get_platform_error(linux.chown(name_cstr, linux.Uid(uid), linux.Gid(gid))) } // NOTE: will throw error without super user priviledges _lchown :: proc(name: string, uid, gid: int) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) name_cstr := clone_to_cstring(name, temp_allocator) or_return return _get_platform_error(linux.lchown(name_cstr, linux.Uid(uid), linux.Gid(gid))) } @@ -400,7 +400,7 @@ _fchown :: proc(f: ^File, uid, gid: int) -> Error { } _chtimes :: proc(name: string, atime, mtime: time.Time) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) name_cstr := clone_to_cstring(name, temp_allocator) or_return times := [2]linux.Time_Spec { { @@ -431,7 +431,7 @@ _fchtimes :: proc(f: ^File, atime, mtime: time.Time) -> Error { } _exists :: proc(name: string) -> bool { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) name_cstr, _ := clone_to_cstring(name, temp_allocator) return linux.access(name_cstr, linux.F_OK) == .NONE } @@ -440,7 +440,7 @@ _exists :: proc(name: string) -> bool { _read_entire_pseudo_file :: proc { _read_entire_pseudo_file_string, _read_entire_pseudo_file_cstring } _read_entire_pseudo_file_string :: proc(name: string, allocator: runtime.Allocator) -> (b: []u8, e: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) name_cstr := clone_to_cstring(name, temp_allocator) or_return return _read_entire_pseudo_file_cstring(name_cstr, allocator) } diff --git a/core/os/os2/file_posix.odin b/core/os/os2/file_posix.odin index c53a176f2..2d74618ee 100644 --- a/core/os/os2/file_posix.odin +++ b/core/os/os2/file_posix.odin @@ -69,7 +69,7 @@ _open :: proc(name: string, flags: File_Flags, perm: int) -> (f: ^File, err: Err if .Trunc in flags { sys_flags += {.TRUNC} } if .Inheritable in flags { sys_flags -= {.CLOEXEC} } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cname := clone_to_cstring(name, temp_allocator) or_return fd := posix.open(cname, sys_flags, transmute(posix.mode_t)posix._mode_t(perm)) @@ -184,7 +184,7 @@ _truncate :: proc(f: ^File, size: i64) -> Error { } _remove :: proc(name: string) -> (err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cname := clone_to_cstring(name, temp_allocator) or_return if posix.remove(cname) != 0 { return _get_platform_error() @@ -193,7 +193,7 @@ _remove :: proc(name: string) -> (err: Error) { } _rename :: proc(old_path, new_path: string) -> (err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cold := clone_to_cstring(old_path, temp_allocator) or_return cnew := clone_to_cstring(new_path, temp_allocator) or_return if posix.rename(cold, cnew) != 0 { @@ -203,7 +203,7 @@ _rename :: proc(old_path, new_path: string) -> (err: Error) { } _link :: proc(old_name, new_name: string) -> (err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cold := clone_to_cstring(old_name, temp_allocator) or_return cnew := clone_to_cstring(new_name, temp_allocator) or_return if posix.link(cold, cnew) != .OK { @@ -213,7 +213,7 @@ _link :: proc(old_name, new_name: string) -> (err: Error) { } _symlink :: proc(old_name, new_name: string) -> (err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cold := clone_to_cstring(old_name, temp_allocator) or_return cnew := clone_to_cstring(new_name, temp_allocator) or_return if posix.symlink(cold, cnew) != .OK { @@ -223,7 +223,7 @@ _symlink :: proc(old_name, new_name: string) -> (err: Error) { } _read_link :: proc(name: string, allocator: runtime.Allocator) -> (s: string, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) cname := clone_to_cstring(name, temp_allocator) or_return buf: [dynamic]byte @@ -269,7 +269,7 @@ _read_link :: proc(name: string, allocator: runtime.Allocator) -> (s: string, er } _chdir :: proc(name: string) -> (err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cname := clone_to_cstring(name, temp_allocator) or_return if posix.chdir(cname) != .OK { return _get_platform_error() @@ -292,7 +292,7 @@ _fchmod :: proc(f: ^File, mode: int) -> Error { } _chmod :: proc(name: string, mode: int) -> (err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cname := clone_to_cstring(name, temp_allocator) or_return if posix.chmod(cname, transmute(posix.mode_t)posix._mode_t(mode)) != .OK { return _get_platform_error() @@ -308,7 +308,7 @@ _fchown :: proc(f: ^File, uid, gid: int) -> Error { } _chown :: proc(name: string, uid, gid: int) -> (err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cname := clone_to_cstring(name, temp_allocator) or_return if posix.chown(cname, posix.uid_t(uid), posix.gid_t(gid)) != .OK { return _get_platform_error() @@ -317,7 +317,7 @@ _chown :: proc(name: string, uid, gid: int) -> (err: Error) { } _lchown :: proc(name: string, uid, gid: int) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cname := clone_to_cstring(name, temp_allocator) or_return if posix.lchown(cname, posix.uid_t(uid), posix.gid_t(gid)) != .OK { return _get_platform_error() @@ -337,7 +337,7 @@ _chtimes :: proc(name: string, atime, mtime: time.Time) -> (err: Error) { }, } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cname := clone_to_cstring(name, temp_allocator) or_return if posix.utimes(cname, ×) != .OK { @@ -365,7 +365,7 @@ _fchtimes :: proc(f: ^File, atime, mtime: time.Time) -> Error { } _exists :: proc(path: string) -> bool { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cpath, err := clone_to_cstring(path, temp_allocator) if err != nil { return false } return posix.access(cpath) == .OK diff --git a/core/os/os2/file_posix_other.odin b/core/os/os2/file_posix_other.odin index a7f095cb3..d2946098b 100644 --- a/core/os/os2/file_posix_other.odin +++ b/core/os/os2/file_posix_other.odin @@ -7,7 +7,7 @@ import "base:runtime" import "core:sys/posix" _posix_absolute_path :: proc(fd: posix.FD, name: string, allocator: runtime.Allocator) -> (path: cstring, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) cname := clone_to_cstring(name, temp_allocator) buf: [posix.PATH_MAX]byte diff --git a/core/os/os2/file_windows.odin b/core/os/os2/file_windows.odin index 8f45d4ab9..16803f1ac 100644 --- a/core/os/os2/file_windows.odin +++ b/core/os/os2/file_windows.odin @@ -109,7 +109,7 @@ _open_internal :: proc(name: string, flags: File_Flags, perm: int) -> (handle: u err = .Not_Exist return } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) path := _fix_long_path(name, temp_allocator) or_return access: u32 @@ -580,7 +580,7 @@ _truncate :: proc(f: ^File, size: i64) -> Error { } _remove :: proc(name: string) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) p := _fix_long_path(name, temp_allocator) or_return err, err1: Error if !win32.DeleteFileW(p) { @@ -618,7 +618,7 @@ _remove :: proc(name: string) -> Error { } _rename :: proc(old_path, new_path: string) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) from := _fix_long_path(old_path, temp_allocator) or_return to := _fix_long_path(new_path, temp_allocator) or_return if win32.MoveFileExW(from, to, win32.MOVEFILE_REPLACE_EXISTING) { @@ -629,7 +629,7 @@ _rename :: proc(old_path, new_path: string) -> Error { } _link :: proc(old_name, new_name: string) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) o := _fix_long_path(old_name, temp_allocator) or_return n := _fix_long_path(new_name, temp_allocator) or_return if win32.CreateHardLinkW(n, o, nil) { @@ -692,7 +692,7 @@ _normalize_link_path :: proc(p: []u16, allocator: runtime.Allocator) -> (str: st return "", _get_platform_error() } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) buf := make([]u16, n+1, temp_allocator) n = win32.GetFinalPathNameByHandleW(handle, raw_data(buf), u32(len(buf)), win32.VOLUME_NAME_DOS) @@ -718,7 +718,7 @@ _read_link :: proc(name: string, allocator: runtime.Allocator) -> (s: string, er @thread_local rdb_buf: [MAXIMUM_REPARSE_DATA_BUFFER_SIZE]byte - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) p := _fix_long_path(name, temp_allocator) or_return handle := _open_sym_link(p) or_return @@ -785,7 +785,7 @@ _fchown :: proc(f: ^File, uid, gid: int) -> Error { } _chdir :: proc(name: string) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) p := _fix_long_path(name, temp_allocator) or_return if !win32.SetCurrentDirectoryW(p) { return _get_platform_error() @@ -834,7 +834,7 @@ _fchtimes :: proc(f: ^File, atime, mtime: time.Time) -> Error { } _exists :: proc(path: string) -> bool { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) wpath, _ := _fix_long_path(path, temp_allocator) attribs := win32.GetFileAttributesW(wpath) return attribs != win32.INVALID_FILE_ATTRIBUTES diff --git a/core/os/os2/path.odin b/core/os/os2/path.odin index 2caf13092..e12aa3c9c 100644 --- a/core/os/os2/path.odin +++ b/core/os/os2/path.odin @@ -119,7 +119,7 @@ clean_path :: proc(path: string, allocator: runtime.Allocator) -> (cleaned: stri return strings.clone(".", allocator) } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) // The extra byte is to simplify appending path elements by letting the // loop to end each with a separator. We'll trim the last one when we're done. @@ -326,7 +326,7 @@ For example, `join_path({"/home", "foo", "bar.txt"})` will result in `"/home/foo join_path :: proc(elems: []string, allocator: runtime.Allocator) -> (joined: string, err: Error) { for e, i in elems { if e != "" { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) p := strings.join(elems[i:], Path_Separator_String, temp_allocator) or_return return clean_path(p, allocator) } diff --git a/core/os/os2/path_linux.odin b/core/os/os2/path_linux.odin index 11de5cf37..64f415187 100644 --- a/core/os/os2/path_linux.odin +++ b/core/os/os2/path_linux.odin @@ -18,7 +18,7 @@ _is_path_separator :: proc(c: byte) -> bool { } _mkdir :: proc(path: string, perm: int) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) path_cstr := clone_to_cstring(path, temp_allocator) or_return return _get_platform_error(linux.mkdir(path_cstr, transmute(linux.Mode)u32(perm))) } @@ -52,7 +52,7 @@ _mkdir_all :: proc(path: string, perm: int) -> Error { } return _get_platform_error(errno) } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) // need something we can edit, and use to generate cstrings path_bytes := make([]u8, len(path) + 1, temp_allocator) @@ -129,7 +129,7 @@ _remove_all :: proc(path: string) -> Error { return nil } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) path_cstr := clone_to_cstring(path, temp_allocator) or_return fd, errno := linux.open(path_cstr, _OPENDIR_FLAGS) @@ -168,14 +168,14 @@ _get_working_directory :: proc(allocator: runtime.Allocator) -> (string, Error) } _set_working_directory :: proc(dir: string) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) dir_cstr := clone_to_cstring(dir, temp_allocator) or_return return _get_platform_error(linux.chdir(dir_cstr)) } _get_executable_path :: proc(allocator: runtime.Allocator) -> (path: string, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) buf := make([dynamic]byte, 1024, temp_allocator) or_return for { diff --git a/core/os/os2/path_netbsd.odin b/core/os/os2/path_netbsd.odin index 41abfb3f1..815102dea 100644 --- a/core/os/os2/path_netbsd.odin +++ b/core/os/os2/path_netbsd.odin @@ -5,7 +5,7 @@ import "base:runtime" import "core:sys/posix" _get_executable_path :: proc(allocator: runtime.Allocator) -> (path: string, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) buf := make([dynamic]byte, 1024, temp_allocator) or_return for { diff --git a/core/os/os2/path_openbsd.odin b/core/os/os2/path_openbsd.odin index e27a31dda..cbc0346d4 100644 --- a/core/os/os2/path_openbsd.odin +++ b/core/os/os2/path_openbsd.odin @@ -35,7 +35,7 @@ _get_executable_path :: proc(allocator: runtime.Allocator) -> (path: string, err return real(arg, allocator) } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) buf := strings.builder_make(temp_allocator) diff --git a/core/os/os2/path_posix.odin b/core/os/os2/path_posix.odin index 1ad46259c..e59567240 100644 --- a/core/os/os2/path_posix.odin +++ b/core/os/os2/path_posix.odin @@ -15,7 +15,7 @@ _is_path_separator :: proc(c: byte) -> bool { } _mkdir :: proc(name: string, perm: int) -> (err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cname := clone_to_cstring(name, temp_allocator) or_return if posix.mkdir(cname, transmute(posix.mode_t)posix._mode_t(perm)) != .OK { return _get_platform_error() @@ -28,7 +28,7 @@ _mkdir_all :: proc(path: string, perm: int) -> Error { return .Invalid_Path } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) if exists(path) { return .Exist @@ -53,7 +53,7 @@ _mkdir_all :: proc(path: string, perm: int) -> Error { } _remove_all :: proc(path: string) -> (err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cpath := clone_to_cstring(path, temp_allocator) or_return dir := posix.opendir(cpath) @@ -95,7 +95,7 @@ _remove_all :: proc(path: string) -> (err: Error) { } _get_working_directory :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) buf: [dynamic]byte buf.allocator = temp_allocator @@ -116,7 +116,7 @@ _get_working_directory :: proc(allocator: runtime.Allocator) -> (dir: string, er } _set_working_directory :: proc(dir: string) -> (err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) cdir := clone_to_cstring(dir, temp_allocator) or_return if posix.chdir(cdir) != .OK { err = _get_platform_error() diff --git a/core/os/os2/path_posixfs.odin b/core/os/os2/path_posixfs.odin index 24575bbd8..4102d71c1 100644 --- a/core/os/os2/path_posixfs.odin +++ b/core/os/os2/path_posixfs.odin @@ -31,7 +31,7 @@ _get_absolute_path :: proc(path: string, allocator: runtime.Allocator) -> (absol if rel == "" { rel = "." } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) rel_cstr := strings.clone_to_cstring(rel, temp_allocator) path_ptr := posix.realpath(rel_cstr, nil) if path_ptr == nil { diff --git a/core/os/os2/path_wasi.odin b/core/os/os2/path_wasi.odin index 3e00463b1..b8240e188 100644 --- a/core/os/os2/path_wasi.odin +++ b/core/os/os2/path_wasi.odin @@ -28,7 +28,7 @@ _mkdir_all :: proc(path: string, perm: int) -> Error { return .Invalid_Path } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) if exists(path) { return .Exist diff --git a/core/os/os2/path_windows.odin b/core/os/os2/path_windows.odin index 07e202222..9c0fec9b9 100644 --- a/core/os/os2/path_windows.odin +++ b/core/os/os2/path_windows.odin @@ -14,7 +14,7 @@ _is_path_separator :: proc(c: byte) -> bool { } _mkdir :: proc(name: string, perm: int) -> Error { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) if !win32.CreateDirectoryW(_fix_long_path(name, temp_allocator) or_return, nil) { return _get_platform_error() } @@ -33,7 +33,7 @@ _mkdir_all :: proc(path: string, perm: int) -> Error { return p, false, nil } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) dir_stat, err := stat(path, temp_allocator) if err == nil { @@ -82,7 +82,7 @@ _remove_all :: proc(path: string) -> Error { return nil } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) dir := win32_utf8_to_wstring(path, temp_allocator) or_return empty: [1]u16 @@ -109,7 +109,7 @@ _remove_all :: proc(path: string) -> Error { _get_working_directory :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) { win32.AcquireSRWLockExclusive(&cwd_lock) - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) sz_utf16 := win32.GetCurrentDirectoryW(0, nil) dir_buf_wstr := make([]u16, sz_utf16, temp_allocator) or_return @@ -123,7 +123,7 @@ _get_working_directory :: proc(allocator: runtime.Allocator) -> (dir: string, er } _set_working_directory :: proc(dir: string) -> (err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) wstr := win32_utf8_to_wstring(dir, temp_allocator) or_return win32.AcquireSRWLockExclusive(&cwd_lock) @@ -138,7 +138,7 @@ _set_working_directory :: proc(dir: string) -> (err: Error) { } _get_executable_path :: proc(allocator: runtime.Allocator) -> (path: string, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) buf := make([dynamic]u16, 512, temp_allocator) or_return for { @@ -222,7 +222,7 @@ _fix_long_path_internal :: proc(path: string) -> string { return path } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) PREFIX :: `\\?` path_buf := make([]byte, len(PREFIX)+len(path)+1, temp_allocator) @@ -297,7 +297,7 @@ _get_absolute_path :: proc(path: string, allocator: runtime.Allocator) -> (absol if rel == "" { rel = "." } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) rel_utf16 := win32.utf8_to_utf16(rel, temp_allocator) n := win32.GetFullPathNameW(raw_data(rel_utf16), 0, nil, nil) if n == 0 { diff --git a/core/os/os2/process_linux.odin b/core/os/os2/process_linux.odin index 6d239ef25..8dffac08b 100644 --- a/core/os/os2/process_linux.odin +++ b/core/os/os2/process_linux.odin @@ -50,7 +50,7 @@ _get_ppid :: proc() -> int { @(private="package") _process_list :: proc(allocator: runtime.Allocator) -> (list: []int, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) dir_fd, errno := linux.open("/proc/", _OPENDIR_FLAGS) #partial switch errno { @@ -100,7 +100,7 @@ _process_list :: proc(allocator: runtime.Allocator) -> (list: []int, err: Error) @(private="package") _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator: runtime.Allocator) -> (info: Process_Info, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) info.pid = pid @@ -392,7 +392,7 @@ _process_open :: proc(pid: int, _: Process_Open_Flags) -> (process: Process, err @(private="package") _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) if len(desc.command) == 0 { return process, .Invalid_Command @@ -593,7 +593,7 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { } _process_state_update_times :: proc(state: ^Process_State) -> (err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) stat_path_buf: [48]u8 path_builder := strings.builder_from_bytes(stat_path_buf[:]) diff --git a/core/os/os2/process_posix.odin b/core/os/os2/process_posix.odin index f24aa12d3..fcacdf654 100644 --- a/core/os/os2/process_posix.odin +++ b/core/os/os2/process_posix.odin @@ -52,7 +52,7 @@ _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { return } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) // search PATH if just a plain name is provided. exe_builder := strings.builder_make(temp_allocator) diff --git a/core/os/os2/process_posix_darwin.odin b/core/os/os2/process_posix_darwin.odin index eb7ab492d..ac2d4b78c 100644 --- a/core/os/os2/process_posix_darwin.odin +++ b/core/os/os2/process_posix_darwin.odin @@ -50,7 +50,7 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) info.pid = pid // Thought on errors is: allocation failures return immediately (also why the non-allocation stuff is done first), @@ -240,7 +240,7 @@ _process_list :: proc(allocator: runtime.Allocator) -> (list: []int, err: Error) return } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) buffer := make([]i32, ret, temp_allocator) ret = darwin.proc_listallpids(raw_data(buffer), ret*size_of(i32)) diff --git a/core/os/os2/process_windows.odin b/core/os/os2/process_windows.odin index 1d4cda511..199e5ad74 100644 --- a/core/os/os2/process_windows.odin +++ b/core/os/os2/process_windows.odin @@ -162,7 +162,7 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator if err != nil { break read_peb } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) if selection >= {.Command_Line, .Command_Args} { temp_allocator_scope(temp_allocator) cmdline_w := make([]u16, process_params.CommandLine.Length, temp_allocator) or_return @@ -273,7 +273,7 @@ _process_info_by_handle :: proc(process: Process, selection: Process_Info_Fields if err != nil { break read_peb } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) if selection >= {.Command_Line, .Command_Args} { temp_allocator_scope(temp_allocator) cmdline_w := make([]u16, process_params.CommandLine.Length, temp_allocator) or_return @@ -421,7 +421,7 @@ _process_open :: proc(pid: int, flags: Process_Open_Flags) -> (process: Process, @(private="package") _process_start :: proc(desc: Process_Desc) -> (process: Process, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) command_line := _build_command_line(desc.command, temp_allocator) command_line_w := win32_utf8_to_wstring(command_line, temp_allocator) or_return environment := desc.env @@ -614,7 +614,7 @@ _process_exe_by_pid :: proc(pid: int, allocator: runtime.Allocator) -> (exe_path } _get_process_user :: proc(process_handle: win32.HANDLE, allocator: runtime.Allocator) -> (full_username: string, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) token_handle: win32.HANDLE if !win32.OpenProcessToken(process_handle, win32.TOKEN_QUERY, &token_handle) { err = _get_platform_error() diff --git a/core/os/os2/stat.odin b/core/os/os2/stat.odin index 63bb42f13..d6b524684 100644 --- a/core/os/os2/stat.odin +++ b/core/os/os2/stat.odin @@ -73,14 +73,14 @@ last_write_time_by_name :: modification_time_by_path @(require_results) modification_time :: proc(f: ^File) -> (time.Time, Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) fi, err := fstat(f, temp_allocator) return fi.modification_time, err } @(require_results) modification_time_by_path :: proc(path: string) -> (time.Time, Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) fi, err := stat(path, temp_allocator) return fi.modification_time, err } diff --git a/core/os/os2/stat_linux.odin b/core/os/os2/stat_linux.odin index 119c39c52..373765be5 100644 --- a/core/os/os2/stat_linux.odin +++ b/core/os/os2/stat_linux.odin @@ -47,7 +47,7 @@ _fstat_internal :: proc(fd: linux.Fd, allocator: runtime.Allocator) -> (fi: File // NOTE: _stat and _lstat are using _fstat to avoid a race condition when populating fullpath _stat :: proc(name: string, allocator: runtime.Allocator) -> (fi: File_Info, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) name_cstr := clone_to_cstring(name, temp_allocator) or_return fd, errno := linux.open(name_cstr, {}) @@ -59,7 +59,7 @@ _stat :: proc(name: string, allocator: runtime.Allocator) -> (fi: File_Info, err } _lstat :: proc(name: string, allocator: runtime.Allocator) -> (fi: File_Info, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) name_cstr := clone_to_cstring(name, temp_allocator) or_return fd, errno := linux.open(name_cstr, {.PATH, .NOFOLLOW}) diff --git a/core/os/os2/stat_posix.odin b/core/os/os2/stat_posix.odin index 5119fe9ad..6ffbdf1da 100644 --- a/core/os/os2/stat_posix.odin +++ b/core/os/os2/stat_posix.odin @@ -69,7 +69,7 @@ _stat :: proc(name: string, allocator: runtime.Allocator) -> (fi: File_Info, err return } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) cname := clone_to_cstring(name, temp_allocator) or_return fd := posix.open(cname, {}) @@ -96,7 +96,7 @@ _lstat :: proc(name: string, allocator: runtime.Allocator) -> (fi: File_Info, er return } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) // NOTE: can't use realpath or open (+ fcntl F_GETPATH) here because it tries to resolve symlinks. diff --git a/core/os/os2/stat_windows.odin b/core/os/os2/stat_windows.odin index ac7acfebf..918c86f76 100644 --- a/core/os/os2/stat_windows.odin +++ b/core/os/os2/stat_windows.odin @@ -45,7 +45,7 @@ full_path_from_name :: proc(name: string, allocator: runtime.Allocator) -> (path name = "." } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) p := win32_utf8_to_utf16(name, temp_allocator) or_return @@ -65,7 +65,7 @@ internal_stat :: proc(name: string, create_file_attributes: u32, allocator: runt if len(name) == 0 { return {}, .Not_Exist } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) wname := _fix_long_path(name, temp_allocator) or_return fa: win32.WIN32_FILE_ATTRIBUTE_DATA @@ -137,7 +137,7 @@ _cleanpath_from_handle :: proc(f: ^File, allocator: runtime.Allocator) -> (strin return "", _get_platform_error() } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) buf := make([]u16, max(n, 260)+1, temp_allocator) n = win32.GetFinalPathNameByHandleW(h, raw_data(buf), u32(len(buf)), 0) @@ -155,7 +155,7 @@ _cleanpath_from_handle_u16 :: proc(f: ^File) -> ([]u16, Error) { return nil, _get_platform_error() } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) buf := make([]u16, max(n, 260)+1, temp_allocator) n = win32.GetFinalPathNameByHandleW(h, raw_data(buf), u32(len(buf)), 0) diff --git a/core/os/os2/temp_file.odin b/core/os/os2/temp_file.odin index c63acfd82..ad20b5706 100644 --- a/core/os/os2/temp_file.odin +++ b/core/os/os2/temp_file.odin @@ -15,7 +15,7 @@ MAX_ATTEMPTS :: 1<<13 // Should be enough for everyone, right? // The caller must `close` the file once finished with. @(require_results) create_temp_file :: proc(dir, pattern: string) -> (f: ^File, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) dir := dir if dir != "" else temp_directory(temp_allocator) or_return prefix, suffix := _prefix_and_suffix(pattern) or_return prefix = temp_join_path(dir, prefix) or_return @@ -47,7 +47,7 @@ mkdir_temp :: make_directory_temp // If `dir` is an empty tring, `temp_directory()` will be used. @(require_results) make_directory_temp :: proc(dir, pattern: string, allocator: runtime.Allocator) -> (temp_path: string, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) dir := dir if dir != "" else temp_directory(temp_allocator) or_return prefix, suffix := _prefix_and_suffix(pattern) or_return prefix = temp_join_path(dir, prefix) or_return @@ -89,7 +89,7 @@ temp_directory :: proc(allocator: runtime.Allocator) -> (string, Error) { @(private="file") temp_join_path :: proc(dir, name: string) -> (string, runtime.Allocator_Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({})) + temp_allocator := TEMP_ALLOCATOR_GUARD({}) if len(dir) > 0 && is_path_separator(dir[len(dir)-1]) { return concatenate({dir, name}, temp_allocator,) diff --git a/core/os/os2/temp_file_linux.odin b/core/os/os2/temp_file_linux.odin index 4fb273c48..310720cbe 100644 --- a/core/os/os2/temp_file_linux.odin +++ b/core/os/os2/temp_file_linux.odin @@ -4,7 +4,7 @@ package os2 import "base:runtime" _temp_dir :: proc(allocator: runtime.Allocator) -> (string, runtime.Allocator_Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) tmpdir := get_env("TMPDIR", temp_allocator) if tmpdir == "" { tmpdir = "/tmp" diff --git a/core/os/os2/temp_file_windows.odin b/core/os/os2/temp_file_windows.odin index ae6f856e1..9d75ef99d 100644 --- a/core/os/os2/temp_file_windows.odin +++ b/core/os/os2/temp_file_windows.odin @@ -9,7 +9,7 @@ _temp_dir :: proc(allocator: runtime.Allocator) -> (string, runtime.Allocator_Er if n == 0 { return "", nil } - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) b := make([]u16, max(win32.MAX_PATH, n), temp_allocator) n = win32.GetTempPathW(u32(len(b)), raw_data(b)) diff --git a/core/os/os2/user.odin b/core/os/os2/user.odin index 7785e50af..b2856a319 100644 --- a/core/os/os2/user.odin +++ b/core/os/os2/user.odin @@ -4,7 +4,7 @@ import "base:runtime" @(require_results) user_cache_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) #partial switch ODIN_OS { case .Windows: @@ -35,7 +35,7 @@ user_cache_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error @(require_results) user_config_dir :: proc(allocator: runtime.Allocator) -> (dir: string, err: Error) { - temp_allocator := get_temp_allocator(TEMP_ALLOCATOR_GUARD({ allocator })) + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) #partial switch ODIN_OS { case .Windows: From 14c5096b81d38ecc585c598ca6d15c5ca342aca5 Mon Sep 17 00:00:00 2001 From: Lucas Perlind Date: Thu, 1 May 2025 18:24:41 +1000 Subject: [PATCH 042/120] Improve assert information --- core/os/os2/allocators.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/os/os2/allocators.odin b/core/os/os2/allocators.odin index 7dba69749..cedfbdee1 100644 --- a/core/os/os2/allocators.odin +++ b/core/os/os2/allocators.odin @@ -36,7 +36,7 @@ TEMP_ALLOCATOR_GUARD_END :: proc(temp: Temp_Allocator) { @(deferred_out=TEMP_ALLOCATOR_GUARD_END) TEMP_ALLOCATOR_GUARD :: #force_inline proc(collisions: []runtime.Allocator, loc := #caller_location) -> Temp_Allocator { - assert(len(collisions) <= MAX_TEMP_ARENA_COLLISIONS) + assert(len(collisions) <= MAX_TEMP_ARENA_COLLISIONS, "Maximum collision count exceeded. MAX_TEMP_ARENA_COUNT must be increased!") good_arena: ^runtime.Arena for i in 0.. Date: Thu, 8 May 2025 17:45:29 +1000 Subject: [PATCH 043/120] Fix linux --- core/os/os2/process_linux.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/os/os2/process_linux.odin b/core/os/os2/process_linux.odin index 8dffac08b..170f0ea1a 100644 --- a/core/os/os2/process_linux.odin +++ b/core/os/os2/process_linux.odin @@ -327,7 +327,7 @@ _process_info_by_pid :: proc(pid: int, selection: Process_Info_Fields, allocator strings.write_int(&path_builder, pid) strings.write_string(&path_builder, "/exe") - if exe_bytes, exe_err := _read_link(strings.to_string(path_builder), temp_allocator()); exe_err == nil { + if exe_bytes, exe_err := _read_link(strings.to_string(path_builder), temp_allocator); exe_err == nil { info.executable_path = strings.clone(string(exe_bytes), allocator) or_return info.fields += {.Executable_Path} } else { From 0ce8373528ef732bab348b8e5b76e07d1447a8dc Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 8 May 2025 13:23:22 +0100 Subject: [PATCH 044/120] Formatting Fix --- core/odin/parser/parser.odin | 34 ++++++++++---------- examples/all/all_vendor_windows.odin | 2 ++ vendor/windows/XAudio2/x3daudio.odin | 46 +++++++++++++-------------- vendor/windows/XAudio2/xapo.odin | 14 ++++---- vendor/windows/XAudio2/xapofx.odin | 2 +- vendor/windows/XAudio2/xaudio2.odin | 8 ++--- vendor/windows/XAudio2/xaudio2fx.odin | 6 ++-- 7 files changed, 56 insertions(+), 56 deletions(-) diff --git a/core/odin/parser/parser.odin b/core/odin/parser/parser.odin index 63c7e388f..7f1f4ca87 100644 --- a/core/odin/parser/parser.odin +++ b/core/odin/parser/parser.odin @@ -1276,28 +1276,28 @@ parse_unrolled_for_loop :: proc(p: ^Parser, inline_tok: tokenizer.Token) -> ^ast args = make([dynamic]^ast.Expr) for p.curr_tok.kind != .Close_Paren && p.curr_tok.kind != .EOF { - arg := parse_value(p) + arg := parse_value(p) - if p.curr_tok.kind == .Eq { - eq := expect_token(p, .Eq) - if arg != nil { - if _, ok := arg.derived.(^ast.Ident); !ok { - error(p, arg.pos, "expected an identifier for 'key=value'") - } - } - value := parse_value(p) - fv := ast.new(ast.Field_Value, arg.pos, value) - fv.field = arg - fv.sep = eq.pos - fv.value = value + if p.curr_tok.kind == .Eq { + eq := expect_token(p, .Eq) + if arg != nil { + if _, ok := arg.derived.(^ast.Ident); !ok { + error(p, arg.pos, "expected an identifier for 'key=value'") + } + } + value := parse_value(p) + fv := ast.new(ast.Field_Value, arg.pos, value) + fv.field = arg + fv.sep = eq.pos + fv.value = value - arg = fv - } + arg = fv + } - append(&args, arg) + append(&args, arg) allow_token(p, .Comma) or_break - } + } } p.expr_level -= 1 diff --git a/examples/all/all_vendor_windows.odin b/examples/all/all_vendor_windows.odin index 5087bac07..df6542cdd 100644 --- a/examples/all/all_vendor_windows.odin +++ b/examples/all/all_vendor_windows.odin @@ -3,8 +3,10 @@ package all import wgpu "vendor:wgpu" import b2 "vendor:box2d" import game_input "vendor:windows/GameInput" +import XAudio2 "vendor:windows/XAudio2" _ :: wgpu _ :: b2 _ :: game_input +_ :: XAudio2 diff --git a/vendor/windows/XAudio2/x3daudio.odin b/vendor/windows/XAudio2/x3daudio.odin index ad18f0f45..27c4dc9fa 100644 --- a/vendor/windows/XAudio2/x3daudio.odin +++ b/vendor/windows/XAudio2/x3daudio.odin @@ -1,7 +1,7 @@ #+build windows /* NOTES: - 1. Definition of terms: + 1. Definition of terms: LFE: Low Frequency Effect -- always omnidirectional. LPF: Low Pass Filter, divided into two classifications: Direct -- Applied to the direct signal path, @@ -9,7 +9,7 @@ Reverb -- Applied to the reverb signal path, used for occlusion effects only. - 2. Volume level is expressed as a linear amplitude scaler: + 2. Volume level is expressed as a linear amplitude scaler: 1.0f represents no attenuation applied to the original signal, 0.5f denotes an attenuation of 6dB, and 0.0f results in silence. Amplification (volume > 1.0f) is also allowed, and is not clamped. @@ -17,7 +17,7 @@ LPF values range from 1.0f representing all frequencies pass through, to 0.0f which results in silence as all frequencies are filtered out. - 3. X3DAudio uses a left-handed Cartesian coordinate system with values + 3. X3DAudio uses a left-handed Cartesian coordinate system with values on the x-axis increasing from left to right, on the y-axis from bottom to top, and on the z-axis from near to far. Azimuths are measured clockwise from a given reference direction. @@ -29,7 +29,7 @@ Metric constants are supplied only as a convenience. Distance is calculated using the Euclidean norm formula. - 4. Only real values are permissible with functions using 32-bit + 4. Only real values are permissible with functions using 32-bit float parameters -- NAN and infinite values are not accepted. All computation occurs in 32-bit precision mode. */ @@ -100,7 +100,7 @@ CALCULATE_FLAG :: enum u32 { } //-----------------------------------------------------// -VECTOR :: distinct [3]f32 // float 3D vector +VECTOR :: [3]f32 // float 3D vector // instance handle of precalculated constants HANDLE :: distinct [HANDLE_BYTESIZE]byte @@ -123,22 +123,22 @@ DISTANCE_CURVE_POINT :: struct #packed { // pPoints[k-1].DSPSetting + ((pPoints[k].DSPSetting-pPoints[k-1].DSPSetting) / (pPoints[k].Distance-pPoints[k-1].Distance)) * (pPoints[k].Distance-pPoints[k-1].Distance) != NAN or infinite values // For all points in the distance curve where 1 <= k < PointCount. DISTANCE_CURVE :: struct #packed { - pPoints: [^]DISTANCE_CURVE_POINT, // distance curve point array, must have at least PointCount elements with no duplicates and be sorted in ascending order with respect to Distance - PointCount: u32, // number of distance curve points, must be >= 2 as all distance curves must have at least two endpoints, defining DSP settings at 0.0f and 1.0f normalized distance + pPoints: [^]DISTANCE_CURVE_POINT `fmt:"v,PointCount"`, // distance curve point array, must have at least PointCount elements with no duplicates and be sorted in ascending order with respect to Distance + PointCount: u32, // number of distance curve points, must be >= 2 as all distance curves must have at least two endpoints, defining DSP settings at 0.0f and 1.0f normalized distance } Default_LinearCurvePoints := [2]DISTANCE_CURVE_POINT{{0.0, 1.0}, {1.0, 0.0}} Default_LinearCurve := DISTANCE_CURVE{&Default_LinearCurvePoints[0], 2} CONE :: struct #packed { - InnerAngle: f32, // inner cone angle in radians, must be within [0.0f, TAU] - OuterAngle: f32, // outer cone angle in radians, must be within [InnerAngle, TAU] + InnerAngle: f32, // inner cone angle in radians, must be within [0.0f, TAU] + OuterAngle: f32, // outer cone angle in radians, must be within [InnerAngle, TAU] - InnerVolume: f32, // volume level scaler on/within inner cone, used only for matrix calculations, must be within [0.0f, 2.0f] when used - OuterVolume: f32, // volume level scaler on/beyond outer cone, used only for matrix calculations, must be within [0.0f, 2.0f] when used - InnerLPF: f32, // LPF (both direct and reverb paths) coefficient subtrahend on/within inner cone, used only for LPF (both direct and reverb paths) calculations, must be within [0.0f, 1.0f] when used - OuterLPF: f32, // LPF (both direct and reverb paths) coefficient subtrahend on/beyond outer cone, used only for LPF (both direct and reverb paths) calculations, must be within [0.0f, 1.0f] when used - InnerReverb: f32, // reverb send level scaler on/within inner cone, used only for reverb calculations, must be within [0.0f, 2.0f] when used - OuterReverb: f32, // reverb send level scaler on/beyond outer cone, used only for reverb calculations, must be within [0.0f, 2.0f] when used + InnerVolume: f32, // volume level scaler on/within inner cone, used only for matrix calculations, must be within [0.0f, 2.0f] when used + OuterVolume: f32, // volume level scaler on/beyond outer cone, used only for matrix calculations, must be within [0.0f, 2.0f] when used + InnerLPF: f32, // LPF (both direct and reverb paths) coefficient subtrahend on/within inner cone, used only for LPF (both direct and reverb paths) calculations, must be within [0.0f, 1.0f] when used + OuterLPF: f32, // LPF (both direct and reverb paths) coefficient subtrahend on/beyond outer cone, used only for LPF (both direct and reverb paths) calculations, must be within [0.0f, 1.0f] when used + InnerReverb: f32, // reverb send level scaler on/within inner cone, used only for reverb calculations, must be within [0.0f, 2.0f] when used + OuterReverb: f32, // reverb send level scaler on/beyond outer cone, used only for reverb calculations, must be within [0.0f, 2.0f] when used } Default_DirectionalCone := CONE{math.PI / 2, math.PI, 1.0, 0.708, 0.0, 0.25, 0.708, 1.0} @@ -147,13 +147,13 @@ Default_DirectionalCone := CONE{math.PI / 2, math.PI, 1.0, 0.708, 0.0, 0.25, 0.7 // // The cone is directed by the listener's front orientation. LISTENER :: struct #packed { - OrientFront: VECTOR, // orientation of front direction, used only for matrix and delay calculations or listeners with cones for matrix, LPF (both direct and reverb paths), and reverb calculations, must be normalized when used - OrientTop: VECTOR, // orientation of top direction, used only for matrix and delay calculations, must be orthonormal with OrientFront when used + OrientFront: VECTOR, // orientation of front direction, used only for matrix and delay calculations or listeners with cones for matrix, LPF (both direct and reverb paths), and reverb calculations, must be normalized when used + OrientTop: VECTOR, // orientation of top direction, used only for matrix and delay calculations, must be orthonormal with OrientFront when used - Position: VECTOR, // position in user-defined world units, does not affect Velocity - Velocity: VECTOR, // velocity vector in user-defined world units/second, used only for doppler calculations, does not affect Position + Position: VECTOR, // position in user-defined world units, does not affect Velocity + Velocity: VECTOR, // velocity vector in user-defined world units/second, used only for doppler calculations, does not affect Position - pCone: ^CONE, // sound cone, used only for matrix, LPF (both direct and reverb paths), and reverb calculations, NULL specifies omnidirectionality + pCone: ^CONE, // sound cone, used only for matrix, LPF (both direct and reverb paths), and reverb calculations, NULL specifies omnidirectionality } // Emitter: @@ -187,9 +187,9 @@ EMITTER :: struct #packed { InnerRadius: f32, // inner radius, must be within [0.0f, max(f32)] InnerRadiusAngle: f32, // inner radius angle, must be within [0.0f, PI/4.0) - ChannelCount: u32, // number of sound channels, must be > 0 - ChannelRadius: f32, // channel radius, used only with multi-channel emitters for matrix calculations, must be >= 0.0f when used - pChannelAzimuths: [^]f32, // channel azimuth array, used only with multi-channel emitters for matrix calculations, contains positions of each channel expressed in radians along the channel radius with respect to the front orientation vector in the plane orthogonal to the top orientation vector, or TAU to specify an LFE channel, must have at least ChannelCount elements, all within [0.0f, TAU] when used + ChannelCount: u32, // number of sound channels, must be > 0 + ChannelRadius: f32, // channel radius, used only with multi-channel emitters for matrix calculations, must be >= 0.0f when used + pChannelAzimuths: [^]f32 `fmt:"v,ChannelCount"`, // channel azimuth array, used only with multi-channel emitters for matrix calculations, contains positions of each channel expressed in radians along the channel radius with respect to the front orientation vector in the plane orthogonal to the top orientation vector, or TAU to specify an LFE channel, must have at least ChannelCount elements, all within [0.0f, TAU] when used pVolumeCurve: ^DISTANCE_CURVE, // volume level distance curve, used only for matrix calculations, NULL specifies a default curve that conforms to the inverse square law, calculated in user-defined world units with distances <= CurveDistanceScaler clamped to no attenuation pLFECurve: ^DISTANCE_CURVE, // LFE level distance curve, used only for matrix calculations, NULL specifies a default curve that conforms to the inverse square law, calculated in user-defined world units with distances <= CurveDistanceScaler clamped to no attenuation diff --git a/vendor/windows/XAudio2/xapo.odin b/vendor/windows/XAudio2/xapo.odin index 21132100c..54fb420ca 100644 --- a/vendor/windows/XAudio2/xapo.odin +++ b/vendor/windows/XAudio2/xapo.odin @@ -1,7 +1,7 @@ #+build windows /* NOTES: - 1. Definition of terms: + 1. Definition of terms: DSP: Digital Signal Processing. CBR: Constant BitRate -- DSP that consumes a constant number of @@ -27,7 +27,7 @@ However, an XAPO may not perform format conversion when processing in-place. - 2. XAPO member variables are divided into three classifications: + 2. XAPO member variables are divided into three classifications: Immutable: Set once via IXAPO.Initialize and remain constant during the lifespan of the XAPO. @@ -48,27 +48,27 @@ That is, one should strive to minimize XAPO state changes for best performance, maintainability, and ease of use. - 3. To minimize glitches, the realtime audio processing thread must + 3. To minimize glitches, the realtime audio processing thread must not block. XAPO methods called by the realtime thread are commented as non-blocking and therefore should not use blocking synchronization, allocate memory, access the disk, etc. The XAPO interfaces were designed to allow an effect implementer to move such operations into other methods called on an application controlled thread. - 4. Extending functionality is accomplished through the addition of new + 4. Extending functionality is accomplished through the addition of new COM interfaces. For example, if a new member is added to a parameter structure, a new interface using the new structure should be added, leaving the original interface unchanged. This ensures consistent communication between future versions of XAudio2 and various versions of XAPOs that may exist in an application. - 5. All audio data is interleaved in XAudio2. + 5. All audio data is interleaved in XAudio2. The default audio format for an effect chain is WAVE_FORMAT_IEEE_FLOAT. - 6. User-defined XAPOs should assume all input and output buffers are + 6. User-defined XAPOs should assume all input and output buffers are 16-byte aligned. - 7. See XAPOBase.odin for an XAPO base class which provides a default + 7. See XAPOBase.odin for an XAPO base class which provides a default implementation for most of the interface methods defined below. */ package windows_xaudio2 diff --git a/vendor/windows/XAudio2/xapofx.odin b/vendor/windows/XAudio2/xapofx.odin index 6e6a9afd4..5c4c8c7ec 100644 --- a/vendor/windows/XAudio2/xapofx.odin +++ b/vendor/windows/XAudio2/xapofx.odin @@ -110,7 +110,7 @@ FXMASTERINGLIMITER_PARAMETERS :: struct #packed { FXREVERB_PARAMETERS :: struct #packed { Diffusion: f32, // diffusion RoomSize: f32, // room size -}; +} // Echo initialization data, used with CreateFX: diff --git a/vendor/windows/XAudio2/xaudio2.odin b/vendor/windows/XAudio2/xaudio2.odin index 2cf5e4214..178463b64 100644 --- a/vendor/windows/XAudio2/xaudio2.odin +++ b/vendor/windows/XAudio2/xaudio2.odin @@ -11,12 +11,10 @@ package windows_xaudio2 import win "core:sys/windows" import "core:math" -foreign import xa2 "system:xaudio2.lib" - -HRESULT :: win.HRESULT -IUnknown :: win.IUnknown +HRESULT :: win.HRESULT +IUnknown :: win.IUnknown IUnknown_VTable :: win.IUnknown_VTable -WAVEFORMATEX :: win.WAVEFORMATEX +WAVEFORMATEX :: win.WAVEFORMATEX /************************************************************************** * diff --git a/vendor/windows/XAudio2/xaudio2fx.odin b/vendor/windows/XAudio2/xaudio2fx.odin index 1f7c91f50..94793e16e 100644 --- a/vendor/windows/XAudio2/xaudio2fx.odin +++ b/vendor/windows/XAudio2/xaudio2fx.odin @@ -32,9 +32,9 @@ foreign xa2 { // The user is responsible for allocating pPeakLevels, pRMSLevels, and initializing ChannelCount accordingly. // The volume meter does not support SetEffectParameters(). VOLUMEMETER_LEVELS :: struct #packed { - pPeakLevels: [^]f32, // Peak levels table: receives maximum absolute level for each channel over a processing pass, may be NULL if pRMSLevls != NULL, otherwise must have at least ChannelCount elements. - pRMSLevels: [^]f32, // Root mean square levels table: receives RMS level for each channel over a processing pass, may be NULL if pPeakLevels != NULL, otherwise must have at least ChannelCount elements. - ChannelCount: u32, // Number of channels being processed by the volume meter APO + pPeakLevels: [^]f32 `fmt:"v,ChannelCount"`, // Peak levels table: receives maximum absolute level for each channel over a processing pass, may be NULL if pRMSLevls != NULL, otherwise must have at least ChannelCount elements. + pRMSLevels: [^]f32 `fmt:"v,ChannelCount"`, // Root mean square levels table: receives RMS level for each channel over a processing pass, may be NULL if pPeakLevels != NULL, otherwise must have at least ChannelCount elements. + ChannelCount: u32, // Number of channels being processed by the volume meter APO } /************************************************************************** From 204c6f514ad174258c3fca7d18ef01bc05dde0bf Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 8 May 2025 14:03:17 +0100 Subject: [PATCH 045/120] Remove use of `do` --- vendor/windows/XAudio2/xaudio2fx.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/windows/XAudio2/xaudio2fx.odin b/vendor/windows/XAudio2/xaudio2fx.odin index 94793e16e..1449ed4ea 100644 --- a/vendor/windows/XAudio2/xaudio2fx.odin +++ b/vendor/windows/XAudio2/xaudio2fx.odin @@ -244,13 +244,13 @@ ReverbConvertI3DL2ToNative :: proc "contextless" (pI3DL2: ^REVERB_I3DL2_PARAMETE if pI3DL2.DecayHFRatio >= 1.0 { index := i32(-4.0 * math.log10_f32(pI3DL2.DecayHFRatio)) - if index < -8 do index = -8 + if index < -8 { index = -8 } pNative.LowEQGain = byte((index < 0) ? index + 8 : 8) pNative.HighEQGain = 8 pNative.DecayTime = pI3DL2.DecayTime * pI3DL2.DecayHFRatio } else { index := i32(4.0 * math.log10_f32(pI3DL2.DecayHFRatio)) - if index < -8 do index = -8 + if index < -8 { index = -8 } pNative.LowEQGain = 8 pNative.HighEQGain = byte((index < 0) ? index + 8 : 8) pNative.DecayTime = pI3DL2.DecayTime From cacb9f9f540b7ffa93d7fd0d0e1b4667be42480f Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Sat, 3 May 2025 13:29:37 +0200 Subject: [PATCH 046/120] os2: better copy_directory, and add native copy_file and copy_directory variants on MacOS --- core/os/os2/dir.odin | 53 +++++++++++---- core/os/os2/dir_posix_darwin.odin | 17 +++++ core/os/os2/file.odin | 9 +++ core/os/os2/file_posix_darwin.odin | 28 ++++++++ core/sys/darwin/copyfile.odin | 67 +++++++++++++++++++ core/sys/darwin/darwin.odin | 1 + core/sys/darwin/sync.odin | 2 - core/sys/darwin/xnu_system_call_wrappers.odin | 10 --- 8 files changed, 162 insertions(+), 25 deletions(-) create mode 100644 core/os/os2/dir_posix_darwin.odin create mode 100644 core/sys/darwin/copyfile.odin diff --git a/core/os/os2/dir.odin b/core/os/os2/dir.odin index a33e8a8d9..10b06a8ce 100644 --- a/core/os/os2/dir.odin +++ b/core/os/os2/dir.odin @@ -2,6 +2,7 @@ package os2 import "base:runtime" import "core:slice" +import "core:strings" read_dir :: read_directory @@ -194,28 +195,54 @@ read_directory_iterator :: proc(it: ^Read_Directory_Iterator) -> (fi: File_Info, } // Recursively copies a directory to `dst` from `src` -copy_directory :: proc(dst, src: string, dst_perm := 0o755) -> Error { - switch err := make_directory_all(dst, dst_perm); err { - case nil, .Exist: - // okay - case: +copy_directory_all :: proc(dst, src: string, dst_perm := 0o755) -> Error { + when #defined(_copy_directory_all_native) { + return _copy_directory_all_native(dst, src, dst_perm) + } else { + return _copy_directory_all(dst, src, dst_perm) + } +} + +@(private) +_copy_directory_all :: proc(dst, src: string, dst_perm := 0o755) -> Error { + err := make_directory(dst, dst_perm) + if err != nil && err != .Exist { return err } temp_allocator := TEMP_ALLOCATOR_GUARD({}) - file_infos := read_all_directory_by_path(src, temp_allocator) or_return - for fi in file_infos { - temp_allocator_scope(temp_allocator) + abs_src := get_absolute_path(src, temp_allocator) or_return + abs_dst := get_absolute_path(dst, temp_allocator) or_return - dst_path := join_path({dst, fi.name}, temp_allocator) or_return - src_path := fi.fullpath + dst_buf := make([dynamic]byte, 0, len(abs_dst) + 256, temp_allocator) or_return - if fi.type == .Directory { - copy_directory(dst_path, src_path) or_return + w: Walker + walker_init_path(&w, src) + defer walker_destroy(&w) + + for info in walker_walk(&w) { + _ = walker_error(&w) or_break + + rel := strings.trim_prefix(info.fullpath, abs_src) + + non_zero_resize(&dst_buf, 0) + reserve(&dst_buf, len(abs_dst) + len(Path_Separator_String) + len(rel)) or_return + append(&dst_buf, abs_dst) + append(&dst_buf, Path_Separator_String) + append(&dst_buf, rel) + + if info.type == .Directory { + err = make_directory(string(dst_buf[:]), dst_perm) + if err != nil && err != .Exist { + return err + } } else { - copy_file(dst_path, src_path) or_return + copy_file(string(dst_buf[:]), info.fullpath) or_return } } + + _ = walker_error(&w) or_return + return nil } diff --git a/core/os/os2/dir_posix_darwin.odin b/core/os/os2/dir_posix_darwin.odin new file mode 100644 index 000000000..3cae50d25 --- /dev/null +++ b/core/os/os2/dir_posix_darwin.odin @@ -0,0 +1,17 @@ +#+private +package os2 + +import "core:sys/darwin" + +_copy_directory_all_native :: proc(dst, src: string, dst_perm := 0o755) -> (err: Error) { + temp_allocator := TEMP_ALLOCATOR_GUARD({}) + + csrc := clone_to_cstring(src, temp_allocator) or_return + cdst := clone_to_cstring(dst, temp_allocator) or_return + + if darwin.copyfile(csrc, cdst, nil, darwin.COPYFILE_ALL + {.RECURSIVE}) < 0 { + err = _get_platform_error() + } + + return +} diff --git a/core/os/os2/file.odin b/core/os/os2/file.odin index ff214182e..a9878a563 100644 --- a/core/os/os2/file.odin +++ b/core/os/os2/file.odin @@ -313,6 +313,15 @@ is_directory :: proc(path: string) -> bool { copy_file :: proc(dst_path, src_path: string) -> Error { + when #defined(_copy_file_native) { + return _copy_file_native(dst_path, src_path) + } else { + return _copy_file(dst_path, src_path) + } +} + +@(private) +_copy_file :: proc(dst_path, src_path: string) -> Error { src := open(src_path) or_return defer close(src) diff --git a/core/os/os2/file_posix_darwin.odin b/core/os/os2/file_posix_darwin.odin index 920a63a71..aed3e56f5 100644 --- a/core/os/os2/file_posix_darwin.odin +++ b/core/os/os2/file_posix_darwin.odin @@ -3,6 +3,7 @@ package os2 import "base:runtime" +import "core:sys/darwin" import "core:sys/posix" _posix_absolute_path :: proc(fd: posix.FD, name: string, allocator: runtime.Allocator) -> (path: cstring, err: Error) { @@ -16,3 +17,30 @@ _posix_absolute_path :: proc(fd: posix.FD, name: string, allocator: runtime.Allo return clone_to_cstring(string(cstring(&buf[0])), allocator) } + +_copy_file_native :: proc(dst_path, src_path: string) -> (err: Error) { + temp_allocator := TEMP_ALLOCATOR_GUARD({}) + + csrc := clone_to_cstring(src_path, temp_allocator) or_return + cdst := clone_to_cstring(dst_path, temp_allocator) or_return + + // Disallow directories, as specified by the generic implementation. + + stat: posix.stat_t + if posix.stat(csrc, &stat) != .OK { + err = _get_platform_error() + return + } + + if posix.S_ISDIR(stat.st_mode) { + err = .Invalid_File + return + } + + ret := darwin.copyfile(csrc, cdst, nil, darwin.COPYFILE_ALL) + if ret < 0 { + err = _get_platform_error() + } + + return +} diff --git a/core/sys/darwin/copyfile.odin b/core/sys/darwin/copyfile.odin new file mode 100644 index 000000000..6c58b8067 --- /dev/null +++ b/core/sys/darwin/copyfile.odin @@ -0,0 +1,67 @@ +package darwin + +import "core:sys/posix" + +copyfile_state_t :: distinct rawptr + +copyfile_flags :: bit_set[enum { + ACL, + STAT, + XATTR, + DATA, + + RECURSIVE = 15, + + CHECK, + EXCL, + NOFOLLOW_SRC, + NOFOLLOW_DST, + MOVE, + UNLINK, + PACK, + UNPACK, + + CLONE, + CLONE_FORCE, + RUN_IN_PLACE, + DATA_SPARSE, + PRESERVE_DST_TRACKED, + VERBOSE = 30, +}; u32] + +COPYFILE_SECURITY :: copyfile_flags{.STAT, .ACL} +COPYFILE_METADATA :: COPYFILE_SECURITY + copyfile_flags{.XATTR} +COPYFILE_ALL :: COPYFILE_METADATA + copyfile_flags{.DATA} + +COPYFILE_NOFOLLOW :: copyfile_flags{.NOFOLLOW_SRC, .NOFOLLOW_DST} + +copyfile_state_flag :: enum u32 { + SRC_FD = 1, + SRC_FILENAME, + DST_FD, + DST_FILENAME, + QUARANTINE, + STATUS_CB, + STATUS_CTX, + COPIED, + XATTRNAME, + WAS_CLONED, + SRC_BSIZE, + DST_BSIZE, + BSIZE, + FORBID_CROSS_MOUNT, + NOCPROTECT, + PRESERVE_SUID, + RECURSIVE_SRC_FTSENT, + FORBID_DST_EXISTING_SYMLINKS, +} + +foreign system { + copyfile :: proc(from, to: cstring, state: copyfile_state_t, flags: copyfile_flags) -> i32 --- + fcopyfile :: proc(from, to: posix.FD, state: copyfile_state_t, flags: copyfile_flags) -> i32 --- + + copyfile_state_alloc :: proc() -> copyfile_state_t --- + copyfile_state_free :: proc(state: copyfile_state_t) -> posix.result --- + copyfile_state_get :: proc(state: copyfile_state_t, flag: copyfile_state_flag, dst: rawptr) -> posix.result --- + copyfile_state_set :: proc(state: copyfile_state_t, flag: copyfile_state_flag, src: rawptr) -> posix.result --- +} diff --git a/core/sys/darwin/darwin.odin b/core/sys/darwin/darwin.odin index d109f5544..96cfc7be6 100644 --- a/core/sys/darwin/darwin.odin +++ b/core/sys/darwin/darwin.odin @@ -3,6 +3,7 @@ package darwin import "core:c" +@(export) foreign import system "system:System.framework" Bool :: b8 diff --git a/core/sys/darwin/sync.odin b/core/sys/darwin/sync.odin index 58fc7c9e4..6d68dc8f8 100644 --- a/core/sys/darwin/sync.odin +++ b/core/sys/darwin/sync.odin @@ -1,7 +1,5 @@ package darwin -foreign import system "system:System.framework" - // #define OS_WAIT_ON_ADDR_AVAILABILITY \ // __API_AVAILABLE(macos(14.4), ios(17.4), tvos(17.4), watchos(10.4)) when ODIN_OS == .Darwin { diff --git a/core/sys/darwin/xnu_system_call_wrappers.odin b/core/sys/darwin/xnu_system_call_wrappers.odin index 1188091a9..6376949f4 100644 --- a/core/sys/darwin/xnu_system_call_wrappers.odin +++ b/core/sys/darwin/xnu_system_call_wrappers.odin @@ -19,16 +19,6 @@ X_OK :: c.int((1 << 0)) /* test for execute or search permission */ W_OK :: c.int((1 << 1)) /* test for write permission */ R_OK :: c.int((1 << 2)) /* test for read permission */ -/* copyfile flags */ -COPYFILE_ACL :: (1 << 0) -COPYFILE_STAT :: (1 << 1) -COPYFILE_XATTR :: (1 << 2) -COPYFILE_DATA :: (1 << 3) - -COPYFILE_SECURITY :: (COPYFILE_STAT | COPYFILE_ACL) -COPYFILE_METADATA :: (COPYFILE_SECURITY | COPYFILE_XATTR) -COPYFILE_ALL :: (COPYFILE_METADATA | COPYFILE_DATA) - /* syslimits.h */ PATH_MAX :: 1024 /* max bytes in pathname */ From 11d2a9c8673336c32f747b2d83c7cf358b925ce4 Mon Sep 17 00:00:00 2001 From: Lucas Perlind Date: Fri, 9 May 2025 14:46:57 +1000 Subject: [PATCH 047/120] Enable asan for windows and ubuntu CI tests Other platforms either do not support asan at all or they fail to link with the asan runtime. --- .github/workflows/ci.yml | 116 ++++++++++++++++++++++++--------------- 1 file changed, 73 insertions(+), 43 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1a1d18231..2f03eb359 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,20 +75,13 @@ jobs: fail-fast: false matrix: # MacOS 13 runs on Intel, 14 runs on ARM - os: [ubuntu-latest, macos-13, macos-14] + os: [macos-13, macos-14] runs-on: ${{ matrix.os }} - name: ${{ matrix.os == 'macos-14' && 'MacOS ARM' || (matrix.os == 'macos-13' && 'MacOS Intel' || 'Ubuntu') }} Build, Check, and Test + name: ${{ matrix.os == 'macos-14' && 'MacOS ARM' || (matrix.os == 'macos-13' && 'MacOS Intel') }} Build, Check, and Test timeout-minutes: 15 steps: - - uses: actions/checkout@v4 - - name: Download LLVM (Linux) - if: matrix.os == 'ubuntu-latest' - run: | - wget https://apt.llvm.org/llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh 20 - echo "/usr/lib/llvm-20/bin" >> $GITHUB_PATH + - uses: actions/checkout@v4 - name: Download LLVM (MacOS Intel) if: matrix.os == 'macos-13' @@ -136,41 +129,78 @@ jobs: cd tests/issues ./run.sh - - name: Check benchmarks - run: ./odin check tests/benchmark -vet -strict-style -no-entry-point - - name: Odin check examples/all for Linux i386 - run: ./odin check examples/all -vet -strict-style -disallow-do -target:linux_i386 - if: matrix.os == 'ubuntu-latest' - - name: Odin check examples/all for Linux arm64 - run: ./odin check examples/all -vet -strict-style -disallow-do -target:linux_arm64 - if: matrix.os == 'ubuntu-latest' - - name: Odin check examples/all for FreeBSD amd64 - run: ./odin check examples/all -vet -strict-style -disallow-do -target:freebsd_amd64 - if: matrix.os == 'ubuntu-latest' - - name: Odin check examples/all for OpenBSD amd64 - run: ./odin check examples/all -vet -strict-style -disallow-do -target:openbsd_amd64 - if: matrix.os == 'ubuntu-latest' - - - name: Odin check vendor/sdl3 for Linux i386 - run: ./odin check vendor/sdl3 -vet -strict-style -disallow-do -no-entry-point -target:linux_i386 - if: matrix.os == 'ubuntu-latest' - - name: Odin check vendor/sdl3 for Linux arm64 - run: ./odin check vendor/sdl3 -vet -strict-style -disallow-do -no-entry-point -target:linux_arm64 - if: matrix.os == 'ubuntu-latest' - - name: Odin check vendor/sdl3 for FreeBSD amd64 - run: ./odin check vendor/sdl3 -vet -strict-style -disallow-do -no-entry-point -target:freebsd_amd64 - if: matrix.os == 'ubuntu-latest' - - name: Odin check vendor/sdl3 for OpenBSD amd64 - run: ./odin check vendor/sdl3 -vet -strict-style -disallow-do -no-entry-point -target:openbsd_amd64 - if: matrix.os == 'ubuntu-latest' - - - name: Run demo on WASI WASM32 run: | ./odin build examples/demo -target:wasi_wasm32 -vet -strict-style -disallow-do -out:demo wasmtime ./demo.wasm if: matrix.os == 'macos-14' + build_ubuntu: + name: Ubuntu Build, Check, and Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Download LLVM + run: | + wget https://apt.llvm.org/llvm.sh + chmod +x llvm.sh + sudo ./llvm.sh 20 + echo "/usr/lib/llvm-20/bin" >> $GITHUB_PATH + + - name: Build Odin + run: ./build_odin.sh release + - name: Odin version + run: ./odin version + - name: Odin report + run: ./odin report + - name: Compile needed Vendor + run: | + make -C vendor/stb/src + make -C vendor/cgltf/src + make -C vendor/miniaudio/src + - name: Odin check + run: ./odin check examples/demo -vet + - name: Odin run + run: ./odin run examples/demo + - name: Odin run -debug + run: ./odin run examples/demo -debug + - name: Odin check examples/all + run: ./odin check examples/all -strict-style -vet -disallow-do + - name: Odin check vendor/sdl3 + run: ./odin check vendor/sdl3 -strict-style -vet -disallow-do -no-entry-point + - name: Normal Core library tests + run: ./odin test tests/core/normal.odin -file -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true -sanitize:address + - name: Optimized Core library tests + run: ./odin test tests/core/speed.odin -o:speed -file -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true -sanitize:address + - name: Vendor library tests + run: ./odin test tests/vendor -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true -sanitize:address + - name: Internals tests + run: ./odin test tests/internal -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true + - name: GitHub Issue tests + run: | + cd tests/issues + ./run.sh + + - name: Check benchmarks + run: ./odin check tests/benchmark -vet -strict-style -no-entry-point + - name: Odin check examples/all for Linux i386 + run: ./odin check examples/all -vet -strict-style -disallow-do -target:linux_i386 + - name: Odin check examples/all for Linux arm64 + run: ./odin check examples/all -vet -strict-style -disallow-do -target:linux_arm64 + - name: Odin check examples/all for FreeBSD amd64 + run: ./odin check examples/all -vet -strict-style -disallow-do -target:freebsd_amd64 + - name: Odin check examples/all for OpenBSD amd64 + run: ./odin check examples/all -vet -strict-style -disallow-do -target:openbsd_amd64 + + - name: Odin check vendor/sdl3 for Linux i386 + run: ./odin check vendor/sdl3 -vet -strict-style -disallow-do -no-entry-point -target:linux_i386 + - name: Odin check vendor/sdl3 for Linux arm64 + run: ./odin check vendor/sdl3 -vet -strict-style -disallow-do -no-entry-point -target:linux_arm64 + - name: Odin check vendor/sdl3 for FreeBSD amd64 + run: ./odin check vendor/sdl3 -vet -strict-style -disallow-do -no-entry-point -target:freebsd_amd64 + - name: Odin check vendor/sdl3 for OpenBSD amd64 + run: ./odin check vendor/sdl3 -vet -strict-style -disallow-do -no-entry-point -target:openbsd_amd64 + build_windows: name: Windows Build, Check, and Test runs-on: windows-2022 @@ -215,23 +245,23 @@ jobs: shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat - odin test tests/core/normal.odin -file -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true + odin test tests/core/normal.odin -file -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true -sanitize:address - name: Optimized core library tests shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat - odin test tests/core/speed.odin -o:speed -file -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true + odin test tests/core/speed.odin -o:speed -file -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true -sanitize:address - name: Vendor library tests shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat copy vendor\lua\5.4\windows\*.dll . - odin test tests/vendor -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true + odin test tests/vendor -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true -sanitize:address - name: Odin internals tests shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat - odin test tests/internal -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true + odin test tests/internal -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true -sanitize:address - name: Check issues shell: cmd run: | From 8a225a6887958bcf23a603efa322a4f15bd96052 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 9 May 2025 11:07:53 +0100 Subject: [PATCH 048/120] Place RTTI into its own section `.odin-rtti` --- src/llvm_backend.cpp | 1 + src/llvm_backend_type.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 1be652107..7de147058 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -3122,6 +3122,7 @@ gb_internal bool lb_generate_code(lbGenerator *gen) { LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t))); LLVMSetLinkage(g, LLVMInternalLinkage); lb_make_global_private_const(g); + lb_set_odin_rtti_section(g); return lb_addr({g, alloc_type_pointer(t)}); }; diff --git a/src/llvm_backend_type.cpp b/src/llvm_backend_type.cpp index ad4250f3c..2aed4cbf7 100644 --- a/src/llvm_backend_type.cpp +++ b/src/llvm_backend_type.cpp @@ -1,4 +1,10 @@ +gb_internal void lb_set_odin_rtti_section(LLVMValueRef value) { + if (build_context.metrics.os != TargetOs_darwin) { + LLVMSetSection(value, ".odin-rtti"); + } +} + gb_internal isize lb_type_info_index(CheckerInfo *info, TypeInfoPair pair, bool err_on_not_found=true) { isize index = type_info_index(info, pair, err_on_not_found); if (index >= 0) { @@ -221,6 +227,7 @@ gb_internal void lb_setup_type_info_data_giant_array(lbModule *m, i64 global_typ gb_snprintf(name, 63, "__$ti-%lld", cast(long long)index); LLVMValueRef g = LLVMAddGlobal(m->mod, type, name); lb_make_global_private_const(g); + lb_set_odin_rtti_section(g); return g; }; @@ -716,6 +723,8 @@ gb_internal void lb_setup_type_info_data_giant_array(lbModule *m, i64 global_typ LLVMSetInitializer(value_array.value, value_init); LLVMSetGlobalConstant(name_array.value, true); LLVMSetGlobalConstant(value_array.value, true); + lb_set_odin_rtti_section(name_array.value); + lb_set_odin_rtti_section(value_array.value); lbValue v_count = lb_const_int(m, t_int, fields.count); @@ -1056,6 +1065,7 @@ gb_internal void lb_setup_type_info_data_giant_array(lbModule *m, i64 global_typ LLVMValueRef giant_array = lb_global_type_info_data_ptr(m).value; LLVMSetInitializer(giant_array, giant_const); lb_make_global_private_const(giant_array); + lb_set_odin_rtti_section(giant_array); } From 3adade26394c8be360ac0b6e964d4d0ee4e0cc02 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Fri, 9 May 2025 19:42:54 +0200 Subject: [PATCH 049/120] Add .rdi RadDbg files to .gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 32e5f5b0f..254731c96 100644 --- a/.gitignore +++ b/.gitignore @@ -293,5 +293,5 @@ build.sh # RAD debugger project file *.raddbg - +*.rdi misc/featuregen/featuregen From e3fe733a555831342c54efdda36203132f2e8132 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Fri, 9 May 2025 19:45:46 +0200 Subject: [PATCH 050/120] Fix #5139 --- vendor/x11/xlib/xlib_procs.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/x11/xlib/xlib_procs.odin b/vendor/x11/xlib/xlib_procs.odin index 2a8d6832b..2cd4e0f83 100644 --- a/vendor/x11/xlib/xlib_procs.odin +++ b/vendor/x11/xlib/xlib_procs.odin @@ -234,7 +234,7 @@ foreign xlib { display: ^Display, window: Window, attr_mask: WindowAttributeMask, - attr: XWindowAttributes, + attr: ^XWindowAttributes, ) --- SetWindowBackground :: proc( display: ^Display, From 4d08b7637279c49cb56106a1247e7dfc09265fb2 Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Fri, 9 May 2025 22:26:49 +0200 Subject: [PATCH 051/120] require the __asan_unpoison_memory_region runtime symbol so empty projects with asan enabled build --- base/runtime/internal.odin | 1 + 1 file changed, 1 insertion(+) diff --git a/base/runtime/internal.odin b/base/runtime/internal.odin index bff5b8380..38b7f662c 100644 --- a/base/runtime/internal.odin +++ b/base/runtime/internal.odin @@ -1109,6 +1109,7 @@ __read_bits :: proc "contextless" (dst, src: [^]byte, offset: uintptr, size: uin when .Address in ODIN_SANITIZER_FLAGS { foreign { + @(require) __asan_unpoison_memory_region :: proc "system" (address: rawptr, size: uint) --- } } From f9b9e9e7dcbb605bc64bc5af1331855375f58494 Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Fri, 9 May 2025 22:27:35 +0200 Subject: [PATCH 052/120] some ABI fixups and improvements Started with trying to enable asan in the CI for MacOS, noticed it wasn't enabled on the `tests/internal` folder, it came up with a couple of issues with the abi/OdinLLVMBuildTransmute that this also solves. - Looking at clang output for arm64, we should be promoting `{ i64, i32 }` to `{ i64, i64 }` - after doing the previous point, I noticed this is not handled well in OdinLLVMBuildTransmute which was emitting loads and stores into the space of a value that was alignment, asan does not want this, looking at clang output again, a memcpy is the appropriate way of handling this. - Having done this we don't need the hacky "return is packed" set anymore in the amd64 sysv ABI anymore either --- src/llvm_abi.cpp | 42 +++++++++----------------- src/llvm_backend_general.cpp | 58 ++++++++++++++++++++++++++++++++++-- 2 files changed, 69 insertions(+), 31 deletions(-) diff --git a/src/llvm_abi.cpp b/src/llvm_abi.cpp index c8e1ca764..baad3f873 100644 --- a/src/llvm_abi.cpp +++ b/src/llvm_abi.cpp @@ -977,7 +977,7 @@ namespace lbAbiAmd64SysV { return types[0]; } - return LLVMStructTypeInContext(c, types.data, cast(unsigned)types.count, sz == 0); + return LLVMStructTypeInContext(c, types.data, cast(unsigned)types.count, false); } gb_internal void classify_with(LLVMTypeRef t, Array *cls, i64 ix, i64 off) { @@ -1231,38 +1231,24 @@ namespace lbAbiArm64 { } } else { i64 size = lb_sizeof(return_type); - if (size <= 16) { - LLVMTypeRef cast_type = nullptr; - - if (size == 0) { - cast_type = LLVMStructTypeInContext(c, nullptr, 0, false); - } else if (size <= 8) { - cast_type = LLVMIntTypeInContext(c, cast(unsigned)(size*8)); - } else { - unsigned count = cast(unsigned)((size+7)/8); - - LLVMTypeRef llvm_i64 = LLVMIntTypeInContext(c, 64); - LLVMTypeRef *types = gb_alloc_array(temporary_allocator(), LLVMTypeRef, count); - - i64 size_copy = size; - for (unsigned i = 0; i < count; i++) { - if (size_copy >= 8) { - types[i] = llvm_i64; - } else { - types[i] = LLVMIntTypeInContext(c, 8*cast(unsigned)size_copy); - } - size_copy -= 8; - } - GB_ASSERT(size_copy <= 0); - cast_type = LLVMStructTypeInContext(c, types, count, true); - } - return lb_arg_type_direct(return_type, cast_type, nullptr, nullptr); - } else { + if (size > 16) { LB_ABI_MODIFY_RETURN_IF_TUPLE_MACRO(); LLVMAttributeRef attr = lb_create_enum_attribute_with_type(c, "sret", return_type); return lb_arg_type_indirect(return_type, attr); } + + GB_ASSERT(size <= 16); + LLVMTypeRef cast_type = nullptr; + if (size == 0) { + cast_type = LLVMStructTypeInContext(c, nullptr, 0, false); + } else if (size <= 8) { + cast_type = LLVMIntTypeInContext(c, cast(unsigned)(size*8)); + } else { + LLVMTypeRef llvm_i64 = LLVMIntTypeInContext(c, 64); + cast_type = LLVMArrayType2(llvm_i64, 2); + } + return lb_arg_type_direct(return_type, cast_type, nullptr, nullptr); } } diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index c52551b36..504c8234e 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -2525,10 +2525,13 @@ general_end:; } } - src_size = align_formula(src_size, src_align); - dst_size = align_formula(dst_size, dst_align); + // NOTE(laytan): even though this logic seems sound, the Address Sanitizer does not + // want you to load/store the space of a value that is there for alignment. +#if 0 + i64 aligned_src_size = align_formula(src_size, src_align); + i64 aligned_dst_size = align_formula(dst_size, dst_align); - if (LLVMIsALoadInst(val) && (src_size >= dst_size && src_align >= dst_align)) { + if (LLVMIsALoadInst(val) && (aligned_src_size >= aligned_dst_size && src_align >= dst_align)) { LLVMValueRef val_ptr = LLVMGetOperand(val, 0); val_ptr = LLVMBuildPointerCast(p->builder, val_ptr, LLVMPointerType(dst_type, 0), ""); LLVMValueRef loaded_val = OdinLLVMBuildLoad(p, dst_type, val_ptr); @@ -2536,8 +2539,57 @@ general_end:; // LLVMSetAlignment(loaded_val, gb_min(src_align, dst_align)); return loaded_val; + } +#endif + + if (src_size > dst_size) { + GB_ASSERT(p->decl_block != p->curr_block); + // NOTE(laytan): src is bigger than dst, need to memcpy the part of src we want. + + LLVMValueRef val_ptr; + if (LLVMIsALoadInst(val)) { + val_ptr = LLVMGetOperand(val, 0); + } else if (LLVMIsAAllocaInst(val)) { + val_ptr = LLVMBuildPointerCast(p->builder, val, LLVMPointerType(src_type, 0), ""); + } else { + // NOTE(laytan): we need a pointer to memcpy from. + LLVMValueRef val_copy = llvm_alloca(p, src_type, src_align); + val_ptr = LLVMBuildPointerCast(p->builder, val_copy, LLVMPointerType(src_type, 0), ""); + LLVMBuildStore(p->builder, val, val_ptr); + } + + i64 max_align = gb_max(lb_alignof(src_type), lb_alignof(dst_type)); + max_align = gb_max(max_align, 16); + + LLVMValueRef ptr = llvm_alloca(p, dst_type, max_align); + LLVMValueRef nptr = LLVMBuildPointerCast(p->builder, ptr, LLVMPointerType(dst_type, 0), ""); + + LLVMTypeRef types[3] = { + lb_type(p->module, t_rawptr), + lb_type(p->module, t_rawptr), + lb_type(p->module, t_int) + }; + + LLVMValueRef args[4] = { + nptr, + val_ptr, + LLVMConstInt(LLVMIntTypeInContext(p->module->ctx, 8*cast(unsigned)build_context.int_size), dst_size, 0), + LLVMConstInt(LLVMInt1TypeInContext(p->module->ctx), 0, 0), + }; + + lb_call_intrinsic( + p, + "llvm.memcpy.inline", + args, + gb_count_of(args), + types, + gb_count_of(types) + ); + + return OdinLLVMBuildLoad(p, dst_type, ptr); } else { GB_ASSERT(p->decl_block != p->curr_block); + GB_ASSERT(dst_size >= src_size); i64 max_align = gb_max(lb_alignof(src_type), lb_alignof(dst_type)); max_align = gb_max(max_align, 16); From 221dea76a42a4e41ff3f9a1b889f1439f54287b9 Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Fri, 9 May 2025 17:12:35 +0200 Subject: [PATCH 053/120] Run MacOS CI with -sanitize:address --- .github/workflows/ci.yml | 68 +++++++++++----------------------------- 1 file changed, 19 insertions(+), 49 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2f03eb359..590c52feb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,9 +75,9 @@ jobs: fail-fast: false matrix: # MacOS 13 runs on Intel, 14 runs on ARM - os: [macos-13, macos-14] + os: [macos-13, macos-14, ubuntu-latest] runs-on: ${{ matrix.os }} - name: ${{ matrix.os == 'macos-14' && 'MacOS ARM' || (matrix.os == 'macos-13' && 'MacOS Intel') }} Build, Check, and Test + name: ${{ matrix.os == 'macos-14' && 'MacOS ARM' || (matrix.os == 'macos-13' && 'MacOS Intel') || (matrix.os == 'ubuntu-latest' && 'Ubuntu') }} Build, Check, and Test timeout-minutes: 15 steps: @@ -95,52 +95,8 @@ jobs: brew update brew install llvm@20 wasmtime lua@5.4 lld - - name: Build Odin - run: ./build_odin.sh release - - name: Odin version - run: ./odin version - - name: Odin report - run: ./odin report - - name: Compile needed Vendor - run: | - make -C vendor/stb/src - make -C vendor/cgltf/src - make -C vendor/miniaudio/src - - name: Odin check - run: ./odin check examples/demo -vet - - name: Odin run - run: ./odin run examples/demo - - name: Odin run -debug - run: ./odin run examples/demo -debug - - name: Odin check examples/all - run: ./odin check examples/all -strict-style -vet -disallow-do - - name: Odin check vendor/sdl3 - run: ./odin check vendor/sdl3 -strict-style -vet -disallow-do -no-entry-point - - name: Normal Core library tests - run: ./odin test tests/core/normal.odin -file -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true - - name: Optimized Core library tests - run: ./odin test tests/core/speed.odin -o:speed -file -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true - - name: Vendor library tests - run: ./odin test tests/vendor -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true - - name: Internals tests - run: ./odin test tests/internal -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true - - name: GitHub Issue tests - run: | - cd tests/issues - ./run.sh - - - name: Run demo on WASI WASM32 - run: | - ./odin build examples/demo -target:wasi_wasm32 -vet -strict-style -disallow-do -out:demo - wasmtime ./demo.wasm - if: matrix.os == 'macos-14' - - build_ubuntu: - name: Ubuntu Build, Check, and Test - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Download LLVM + - name: Download LLVM (Ubuntu) + if: matrix.os == 'ubuntu-latest' run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh @@ -175,30 +131,44 @@ jobs: - name: Vendor library tests run: ./odin test tests/vendor -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true -sanitize:address - name: Internals tests - run: ./odin test tests/internal -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true + run: ./odin test tests/internal -all-packages -vet -strict-style -disallow-do -define:ODIN_TEST_FANCY=false -define:ODIN_TEST_FAIL_ON_BAD_MEMORY=true -sanitize:address - name: GitHub Issue tests run: | cd tests/issues ./run.sh + - name: Run demo on WASI WASM32 + run: | + ./odin build examples/demo -target:wasi_wasm32 -vet -strict-style -disallow-do -out:demo + wasmtime ./demo.wasm + if: matrix.os == 'macos-14' + - name: Check benchmarks run: ./odin check tests/benchmark -vet -strict-style -no-entry-point - name: Odin check examples/all for Linux i386 + if: matrix.os == 'ubuntu-latest' run: ./odin check examples/all -vet -strict-style -disallow-do -target:linux_i386 - name: Odin check examples/all for Linux arm64 + if: matrix.os == 'ubuntu-latest' run: ./odin check examples/all -vet -strict-style -disallow-do -target:linux_arm64 - name: Odin check examples/all for FreeBSD amd64 + if: matrix.os == 'ubuntu-latest' run: ./odin check examples/all -vet -strict-style -disallow-do -target:freebsd_amd64 - name: Odin check examples/all for OpenBSD amd64 + if: matrix.os == 'ubuntu-latest' run: ./odin check examples/all -vet -strict-style -disallow-do -target:openbsd_amd64 - name: Odin check vendor/sdl3 for Linux i386 + if: matrix.os == 'ubuntu-latest' run: ./odin check vendor/sdl3 -vet -strict-style -disallow-do -no-entry-point -target:linux_i386 - name: Odin check vendor/sdl3 for Linux arm64 + if: matrix.os == 'ubuntu-latest' run: ./odin check vendor/sdl3 -vet -strict-style -disallow-do -no-entry-point -target:linux_arm64 - name: Odin check vendor/sdl3 for FreeBSD amd64 + if: matrix.os == 'ubuntu-latest' run: ./odin check vendor/sdl3 -vet -strict-style -disallow-do -no-entry-point -target:freebsd_amd64 - name: Odin check vendor/sdl3 for OpenBSD amd64 + if: matrix.os == 'ubuntu-latest' run: ./odin check vendor/sdl3 -vet -strict-style -disallow-do -no-entry-point -target:openbsd_amd64 build_windows: From 8374854dd557accf3ad8a0136ae1ff5867bc9a29 Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Fri, 9 May 2025 17:21:08 +0200 Subject: [PATCH 054/120] use brew clang instead of system clang --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 590c52feb..8ae39667b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -88,12 +88,14 @@ jobs: run: | brew update brew install llvm@20 lua@5.4 lld + echo "$(brew --prefix llvm@20)/bin" >> $GITHUB_PATH - name: Download LLVM (MacOS ARM) if: matrix.os == 'macos-14' run: | brew update brew install llvm@20 wasmtime lua@5.4 lld + echo "$(brew --prefix llvm@20)/bin" >> $GITHUB_PATH - name: Download LLVM (Ubuntu) if: matrix.os == 'ubuntu-latest' From ebc63a73550b52f25c92f89f76760efc265e937f Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Sat, 10 May 2025 15:11:52 +0200 Subject: [PATCH 055/120] add hexfloat (0h) parsing to strconv --- core/strconv/strconv.odin | 33 ++++++++++++++++++++ tests/core/strconv/test_core_strconv.odin | 37 +++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/core/strconv/strconv.odin b/core/strconv/strconv.odin index 26a737bd1..4cecd1911 100644 --- a/core/strconv/strconv.odin +++ b/core/strconv/strconv.odin @@ -1095,6 +1095,39 @@ parse_f64_prefix :: proc(str: string) -> (value: f64, nr: int, ok: bool) { return transmute(f64)bits, ok } + if len(str) > 2 && str[0] == '0' && str[1] == 'h' { + nr = 2 + + as_int: u64 + digits: int + for r in str[2:] { + if r == '_' { + nr += 1 + continue + } + v := u64(_digit_value(r)) + if v >= 16 { + break + } + as_int *= 16 + as_int += v + digits += 1 + } + nr += digits + ok = len(str) == nr + + switch digits { + case 4: + value = cast(f64)transmute(f16)cast(u16)as_int + case 8: + value = cast(f64)transmute(f32)cast(u32)as_int + case 16: + value = transmute(f64)as_int + case: + ok = false + } + return + } if value, nr, ok = check_special(str); ok { return diff --git a/tests/core/strconv/test_core_strconv.odin b/tests/core/strconv/test_core_strconv.odin index 6b70654cc..8266ece23 100644 --- a/tests/core/strconv/test_core_strconv.odin +++ b/tests/core/strconv/test_core_strconv.odin @@ -30,6 +30,43 @@ test_float :: proc(t: ^testing.T) { testing.expect_value(t, n, 0) testing.expect_value(t, ok, false) + f, ok = strconv.parse_f64("0", &n) + testing.expect_value(t, f, 0) + testing.expect_value(t, n, 1) + testing.expect_value(t, ok, true) + + f, ok = strconv.parse_f64("0h", &n) + testing.expect_value(t, f, 0) + testing.expect_value(t, n, 1) + testing.expect_value(t, ok, false) + + f, ok = strconv.parse_f64("0h1", &n) + testing.expect_value(t, f, 0) + testing.expect_value(t, n, 3) + testing.expect_value(t, ok, false) + + f, ok = strconv.parse_f64("0h0000_0001", &n) + testing.expect_value(t, f, 0h0000_0001) + testing.expect_value(t, n, 11) + testing.expect_value(t, ok, true) + + f, ok = strconv.parse_f64("0h4c60", &n) + testing.expect_value(t, f, 0h4c60) + testing.expect_value(t, f, 17.5) + testing.expect_value(t, n, 6) + testing.expect_value(t, ok, true) + + f, ok = strconv.parse_f64("0h418c0000", &n) + testing.expect_value(t, f, 0h418c0000) + testing.expect_value(t, f, 17.5) + testing.expect_value(t, n, 10) + testing.expect_value(t, ok, true) + + f, ok = strconv.parse_f64("0h4031_8000_0000_0000", &n) + testing.expect_value(t, f, 0h4031800000000000) + testing.expect_value(t, f, f64(17.5)) + testing.expect_value(t, n, 21) + testing.expect_value(t, ok, true) } @(test) From ac1c97eb333e6b2047020aae7bd5795bfbfb431b Mon Sep 17 00:00:00 2001 From: 0xrsp <95966883+0xrsp@users.noreply.github.com> Date: Sun, 11 May 2025 00:23:29 +0930 Subject: [PATCH 056/120] add: vendor SDL3_ttf --- vendor/sdl3/ttf/LICENSE.freetype.txt | 169 ++ vendor/sdl3/ttf/LICENSE.harfbuzz.txt | 42 + vendor/sdl3/ttf/LICENSE.plutosvg.txt | 21 + vendor/sdl3/ttf/LICENSE.plutovg.txt | 21 + vendor/sdl3/ttf/LICENSE.txt | 17 + vendor/sdl3/ttf/SDL3_ttf.dll | Bin 0 -> 2021888 bytes vendor/sdl3/ttf/SDL3_ttf.lib | Bin 0 -> 28030 bytes vendor/sdl3/ttf/include/SDL_textengine.h | 181 ++ vendor/sdl3/ttf/include/SDL_ttf.h | 2833 ++++++++++++++++++++++ vendor/sdl3/ttf/sdl3_textengine.odin | 63 + vendor/sdl3/ttf/sdl3_ttf.odin | 291 +++ 11 files changed, 3638 insertions(+) create mode 100644 vendor/sdl3/ttf/LICENSE.freetype.txt create mode 100644 vendor/sdl3/ttf/LICENSE.harfbuzz.txt create mode 100644 vendor/sdl3/ttf/LICENSE.plutosvg.txt create mode 100644 vendor/sdl3/ttf/LICENSE.plutovg.txt create mode 100644 vendor/sdl3/ttf/LICENSE.txt create mode 100644 vendor/sdl3/ttf/SDL3_ttf.dll create mode 100644 vendor/sdl3/ttf/SDL3_ttf.lib create mode 100644 vendor/sdl3/ttf/include/SDL_textengine.h create mode 100644 vendor/sdl3/ttf/include/SDL_ttf.h create mode 100644 vendor/sdl3/ttf/sdl3_textengine.odin create mode 100644 vendor/sdl3/ttf/sdl3_ttf.odin diff --git a/vendor/sdl3/ttf/LICENSE.freetype.txt b/vendor/sdl3/ttf/LICENSE.freetype.txt new file mode 100644 index 000000000..c406d150f --- /dev/null +++ b/vendor/sdl3/ttf/LICENSE.freetype.txt @@ -0,0 +1,169 @@ + The FreeType Project LICENSE + ---------------------------- + + 2006-Jan-27 + + Copyright 1996-2002, 2006 by + David Turner, Robert Wilhelm, and Werner Lemberg + + + +Introduction +============ + + The FreeType Project is distributed in several archive packages; + some of them may contain, in addition to the FreeType font engine, + various tools and contributions which rely on, or relate to, the + FreeType Project. + + This license applies to all files found in such packages, and + which do not fall under their own explicit license. The license + affects thus the FreeType font engine, the test programs, + documentation and makefiles, at the very least. + + This license was inspired by the BSD, Artistic, and IJG + (Independent JPEG Group) licenses, which all encourage inclusion + and use of free software in commercial and freeware products + alike. As a consequence, its main points are that: + + o We don't promise that this software works. However, we will be + interested in any kind of bug reports. (`as is' distribution) + + o You can use this software for whatever you want, in parts or + full form, without having to pay us. (`royalty-free' usage) + + o You may not pretend that you wrote this software. If you use + it, or only parts of it, in a program, you must acknowledge + somewhere in your documentation that you have used the + FreeType code. (`credits') + + We specifically permit and encourage the inclusion of this + software, with or without modifications, in commercial products. + We disclaim all warranties covering The FreeType Project and + assume no liability related to The FreeType Project. + + + Finally, many people asked us for a preferred form for a + credit/disclaimer to use in compliance with this license. We thus + encourage you to use the following text: + + """ + Portions of this software are copyright © The FreeType + Project (www.freetype.org). All rights reserved. + """ + + Please replace with the value from the FreeType version you + actually use. + + +Legal Terms +=========== + +0. Definitions +-------------- + + Throughout this license, the terms `package', `FreeType Project', + and `FreeType archive' refer to the set of files originally + distributed by the authors (David Turner, Robert Wilhelm, and + Werner Lemberg) as the `FreeType Project', be they named as alpha, + beta or final release. + + `You' refers to the licensee, or person using the project, where + `using' is a generic term including compiling the project's source + code as well as linking it to form a `program' or `executable'. + This program is referred to as `a program using the FreeType + engine'. + + This license applies to all files distributed in the original + FreeType Project, including all source code, binaries and + documentation, unless otherwise stated in the file in its + original, unmodified form as distributed in the original archive. + If you are unsure whether or not a particular file is covered by + this license, you must contact us to verify this. + + The FreeType Project is copyright (C) 1996-2000 by David Turner, + Robert Wilhelm, and Werner Lemberg. All rights reserved except as + specified below. + +1. No Warranty +-------------- + + THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO + USE, OF THE FREETYPE PROJECT. + +2. Redistribution +----------------- + + This license grants a worldwide, royalty-free, perpetual and + irrevocable right and license to use, execute, perform, compile, + display, copy, create derivative works of, distribute and + sublicense the FreeType Project (in both source and object code + forms) and derivative works thereof for any purpose; and to + authorize others to exercise some or all of the rights granted + herein, subject to the following conditions: + + o Redistribution of source code must retain this license file + (`FTL.TXT') unaltered; any additions, deletions or changes to + the original files must be clearly indicated in accompanying + documentation. The copyright notices of the unaltered, + original files must be preserved in all copies of source + files. + + o Redistribution in binary form must provide a disclaimer that + states that the software is based in part of the work of the + FreeType Team, in the distribution documentation. We also + encourage you to put an URL to the FreeType web page in your + documentation, though this isn't mandatory. + + These conditions apply to any software derived from or based on + the FreeType Project, not just the unmodified files. If you use + our work, you must acknowledge us. However, no fee need be paid + to us. + +3. Advertising +-------------- + + Neither the FreeType authors and contributors nor you shall use + the name of the other for commercial, advertising, or promotional + purposes without specific prior written permission. + + We suggest, but do not require, that you use one or more of the + following phrases to refer to this software in your documentation + or advertising materials: `FreeType Project', `FreeType Engine', + `FreeType library', or `FreeType Distribution'. + + As you have not signed this license, you are not required to + accept it. However, as the FreeType Project is copyrighted + material, only this license, or another one contracted with the + authors, grants you the right to use, distribute, and modify it. + Therefore, by using, distributing, or modifying the FreeType + Project, you indicate that you understand and accept all the terms + of this license. + +4. Contacts +----------- + + There are two mailing lists related to FreeType: + + o freetype@nongnu.org + + Discusses general use and applications of FreeType, as well as + future and wanted additions to the library and distribution. + If you are looking for support, start in this list if you + haven't found anything to help you in the documentation. + + o freetype-devel@nongnu.org + + Discusses bugs, as well as engine internals, design issues, + specific licenses, porting, etc. + + Our home page can be found at + + https://www.freetype.org + + +--- end of FTL.TXT --- diff --git a/vendor/sdl3/ttf/LICENSE.harfbuzz.txt b/vendor/sdl3/ttf/LICENSE.harfbuzz.txt new file mode 100644 index 000000000..1dd917e9f --- /dev/null +++ b/vendor/sdl3/ttf/LICENSE.harfbuzz.txt @@ -0,0 +1,42 @@ +HarfBuzz is licensed under the so-called "Old MIT" license. Details follow. +For parts of HarfBuzz that are licensed under different licenses see individual +files names COPYING in subdirectories where applicable. + +Copyright © 2010-2022 Google, Inc. +Copyright © 2015-2020 Ebrahim Byagowi +Copyright © 2019,2020 Facebook, Inc. +Copyright © 2012,2015 Mozilla Foundation +Copyright © 2011 Codethink Limited +Copyright © 2008,2010 Nokia Corporation and/or its subsidiary(-ies) +Copyright © 2009 Keith Stribley +Copyright © 2011 Martin Hosken and SIL International +Copyright © 2007 Chris Wilson +Copyright © 2005,2006,2020,2021,2022,2023 Behdad Esfahbod +Copyright © 2004,2007,2008,2009,2010,2013,2021,2022,2023 Red Hat, Inc. +Copyright © 1998-2005 David Turner and Werner Lemberg +Copyright © 2016 Igalia S.L. +Copyright © 2022 Matthias Clasen +Copyright © 2018,2021 Khaled Hosny +Copyright © 2018,2019,2020 Adobe, Inc +Copyright © 2013-2015 Alexei Podtelezhnikov + +For full copyright notices consult the individual files in the package. + + +Permission is hereby granted, without written agreement and without +license or royalty fees, to use, copy, modify, and distribute this +software and its documentation for any purpose, provided that the +above copyright notice and the following two paragraphs appear in +all copies of this software. + +IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES +ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN +IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. + +THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS +ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO +PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. diff --git a/vendor/sdl3/ttf/LICENSE.plutosvg.txt b/vendor/sdl3/ttf/LICENSE.plutosvg.txt new file mode 100644 index 000000000..62a964e73 --- /dev/null +++ b/vendor/sdl3/ttf/LICENSE.plutosvg.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020-2025 Samuel Ugochukwu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/sdl3/ttf/LICENSE.plutovg.txt b/vendor/sdl3/ttf/LICENSE.plutovg.txt new file mode 100644 index 000000000..62a964e73 --- /dev/null +++ b/vendor/sdl3/ttf/LICENSE.plutovg.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020-2025 Samuel Ugochukwu + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/sdl3/ttf/LICENSE.txt b/vendor/sdl3/ttf/LICENSE.txt new file mode 100644 index 000000000..52d0ed38b --- /dev/null +++ b/vendor/sdl3/ttf/LICENSE.txt @@ -0,0 +1,17 @@ +Copyright (C) 1997-2025 Sam Lantinga + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. diff --git a/vendor/sdl3/ttf/SDL3_ttf.dll b/vendor/sdl3/ttf/SDL3_ttf.dll new file mode 100644 index 0000000000000000000000000000000000000000..b1616f966ddb8f9e11edd73ddd89f200208e2601 GIT binary patch literal 2021888 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ⅇ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�pS&)+<{KD~n8(#ukN)H$NQAJfuQ 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
dT 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%0AEU`<33 z8CYNKD4_#A=!6PUD50m^@cT?_yNP~H+K$-wZbgu}Nq{Wj3nm zji{x&YSlXbulBkvU`!}tK66ug5C1PX1nF)&bPZ0E>7-w_^TH@?#dcBe9ZcG$kmSf5 zvpqC0D28|xGdOXPowwzk2XZokE)s{nMttt1r&VH&O7jMMD7INYADK=1LZ7iqoM|qW zcFog%^5d~2MG#!0KRSs10Q@dh8>w2lQ)2v|>pw=Z(B?cmsZ<1e7ZVn6^)ltQ7Zozg zQ%qnFdi`zTFHp?Ko{|y7carwtcI#tOs1G8Z{H39zZx>&S_eo3bQ@0RN^R&@J`Xn9t zTkgNPL$xU#IxnR|C#H7j8$1Yt>Dkk#MSdjyu%~^8pVSE>-#gv2?C!yuJV`V|Ke9(f zCjPRc<5Na>(I_=-J#a2IdW3Jf?|F$VA`u0VnBq3endW^C5hM3J%^2u8Be+)lr^%w|zGvnZY6#cKQ5i%X@MF7;X446`jPNoBWV z@bB#R%KjQ*w;=WKpi|4bB|KSLa3@-rk?ph~f#Tid>%`NJ7P^2pg2!2UYxFOP%mx#Y zp5<~l-E?9q*tn2A;JsucuvYQ=oQ%f++4G&>H=W+&`1=lYpOw(ZVHqG>(stPc-cGN;Ui^f@|nYK5ZRMM~=0> z$tcRzC}@e(ti-E2*_U=+={teG$T#fhbkN6R2>%o1%m%L0I zn!Ulw)XQb+<+5D99{H|KU)f_&TFiw&tz_2o&T$k23&C~Qk$HbFQpcD>B#O~pw^2nDIG_zMxr+=KB`EcHd5YGN$Weq7Ey0CKzd{w$n@>OhcLR7Y?&_B3_ zfVrxunU7ib=xCxJCpk}-;GTPC%Typ6GJOetzyJcm(sk82MOF%s!EKilOQ*81f zd%{EM6COHf!bA3iUx0lrIpN)j2@lJJ-^hf2Jx$(8nf>QeX1_6I_PhPWGs6gvloy$* z8;zZxIsI!=r$6L+KH5DBS*I;X%j#6RT$aL(crGA=&faNIg59ZBh&n zY8#h$;*N^mITt#~KTy5u)vM2(DQn>0$4K3EDTeL++mY*kS? zujW_q(gW(?N@dLi5iZRnToT@uuqCZ^oNSrs#!(oFa$!@S9xu@^?jmr^vH9b%lwXL6 zhG@-51{qVtIzle}7tu=po_cYuG#NFHl1HRaK~n;$_kl35rXb1LiBlv(zXb7hXzr9V zX~eSTJLxojPiIl6O3DnyI^!OhoA714Hz*GDb)t-wB+UzjU{(s5?-d4U9~q>nH&w8YAKcKNtr85<9OB08(e^Uk zx0Umsw6eXWO$Ccb8-5QF7fl5*f4)i{Dj9RIFORrZ?91~BaED3@b-gs6$K6{k$bF(p zBq6X4k8b6f3d(b+Jdt{$6;sGYur8S8ayzYi4R9UF5TdT+E2frzlHkF$JA5hXvMf70 z6IKQQgqg9%s?8I=0<|r#mZhdt8VG+0PPs=ax}LNK{wU$`5zTq;g)I`x7(Pt_47u?> zZCE3~0%a3I3Du%kiW!M>&(djtw2|E_SpFaPSRqKOSty6gC3|Yo~SNH|;z>q$fBp zORPU@+SN80W2>YEu1QcN-LF?l@$_s(!}Na*eM$EJ4%M^I>i_g1{lAaG8ju1ayyETa)yA${^@X9}lAGhH+3Vw8h z&_r%_@aVq-KaK!DD*IoLb|m=mt-3?u$0Ytxn@%Z<&KErLzLK9V5)Eqs9&OB~yKej<}$=fXkAa0xew&IWs$ zouG4982((i$sKT$N&>N}C#(7MNExkIZI3E2E|-+gcnbKja4!GEkwTcQAfktwI>Vk& z$>L{=B=&^cB1vK`U^aUkiA2$hB#;Y&FH~R-oQYg4$mFcCG+(<5lJr z5Eu3nNyYZ0!)YT4<*6*_JG_*fLeVP>M@7o1W$m5qOyf4D5nZ852nxx~bn?;Wk+0Ou z_cQuI5$m9w2p{F}W3zIR_FO$iS%H~8Cgcen=hR;i~MBvYBAw$ztqt z(n20IBsnCr&^ndD&~7+wGvP3Nu&|x}aI6d5nDLn(U>o5zP=RK&hxY5aR&~QPO`Ysve$fi)E#sG;FdBuik_} zmhvrj$Qx>h*!mU0`*nVTQbff9f|JgYv;;+qb@5Nt;)sf+P7q^?B3Se*k`hZ0TL-@? zzc9ye>c%H3jlYDjvzv3s#H{d`s8WE&>#|5jYD`AKGG-l@;4r}Naw#m{>BxEqYg3Yd zI5#ansi>LbNXp7&cilb9*#^+GP21n=H>MfF`qsO+2$nGXPWJNs#1^6iF8I1Be6N zgd)jm#Zo_zAj$7lDw2E^IpJUb zfxYN9rVVA-Di9&n67Qzn_e3q0U|;Fp@X1&f9q#ySx9Gznfv}dQZi#2^ zU~?x7KImO);@Cu=?^x}J%$MW^b+j)+{VvLKsNb8Pa{iBE@}A*JF?q)ij$>~^LLO6e za1UEEP6VGxBZ9)5sl|?yius4&^8z$&?XPh5=g)yOZQW5q_!L>wi?@UeF+kXU<$d2( zTSn!Qu2U1D-Odsp>SBnP(fiT_nCmgI=Td7xFjDF4pxF4)}7a@ zrE<<&i+kS|;(dD%i|EYnq4%qy`l$A6BbW9h|Cy`!eg&fbJ^Quq0Mq-Uay7k+-Jq4l z;5PwGdwQ8!n@C^kY-Q{avXy_&YyXC={AE7OBx>J}v(v-xVPQLL`&F8X^B*_JjHAd` z;H+#gaW!X&63Ue}Q`xTAakiRM6q{FzpqOfJNba}SzpoZika(tIiVKuGB@-f^dMd3n z-jp0x>Ecw6r>sfoLUH&HiV66t+I4PGa{f}tsWKSNPZ*43@2So*+pjBnnuLdxZFYmR z&9ay67YJ~a6jyTNkh~QBQWCOD%G-phLTxT6pp;T#D34KSOr#K?vcqRR+jf@FyWof0v%n`#+$+H|fYYkHWZGWdQv z_9eC63QO!+rPlj~&sgtCMnzF{z}qw-+Q|`OMd5q{&4CCe*6*q@1)o=BbAqbL@7(VI zfe0l4!AA`%ZJr87=^!AuRCL_055c##ym3hSbnETXXRTFY1H|F=Na)iKZEiJApJx5u zrcaXOQ8t4^pPmh?*;qUbeY#|L`jn;m66S^B)GJt-mF_6WXHt0OCx54AD1|toUO8go z1k?;C4-}}r|J(IrUsQ?W4>Z3x5!{jlx(iAA#3!vu zi_}L(vVX7urI>YKogm~Qd@qda4PbF~L=#Tg`&BF8XeQLy~Cs~fw!q3tTvG6PuG+3jA7vW_K6C(irU*tRlF<>FF z?}608iE%Qlb!4)}|^zZutjzb^3INcM(68 zglw_H>b_M?wV<9)S)ejuEt7NoWk>l@>3YgKXP=sANAK~eW&T#pv{xNg0ET&ATYkDD zJ)p~x*#>zZ{=@<`qfGsi3Hk#+hQGJqRE3Eh$sx|`W$*pF5Fz{+n4U3zKC&@#AV(J|%uA-2R$Ou!3(}A(#f@o9fjtMmq|@G$`+2T;h|UG*$^ugkKaj zQ=SBLj-*$BE(eJu0sXJk0nl^P0R8k26M!D((gyS|$<@CO=s(}X`dv890d&#yr2zUX z%2=1s^bG^-aZMkXcn)Wnx7h##RK{woQH2W{BXB0w*pz#=psO3^2C z4BU4sxR3u4`kMm!O1u$Ske2o-30eeXV74CEw?2@$6YaxWT(Jurnb|%S=U^QK6|sCWJph1Kps4M}k?lAkFv9boenU44%hre)y1-gt+i<6;nz(Az zle_*nnZ8CC6Gh`=O(s**E0(Yz(gn3NN#*88O1UX&sHAf97{32cC^yfW zdT8aQt)8%hFyp|NHs22aubdpdtNIvsa;WFdHnNWZ{0?PgKVH>J&h*XPAEA-`&MD4J zi;OKu-8|22ZMaG{BJrD)0gG9>qj#Psflc#7X4MTYWh1^R&y-wB*X6VJuz)$-N}xGv{0kSdR8z}5wjBNi1nF4UX-t8tuN=N%WeX^6TAj6ak@U#Fx^J$GFxr)8oy$pUedTJri(upQJTg@6nl!lC-wTpiuv7Xb z-n~`gbWG3jV*@Rw^%wxG1l$C>hAeq?H-M{oqJF|-KDGXCsb3)VkCXcN$P21g z?Z=(uV@(;(gveAh+TR&Sn~k^KYBoN+Ds47qFdH+oX)tv*{LN&8>6OW7wBEQ~O-65D z1*^E(S2P7jXgyEB!5cJY*2~ThP+TPoBmtt8j-#6Rs6hp#+xT^>*cja8-L@@Bm+EuLu|zm>D38D_UnE9jB7}=&rQS{KTcEa`lyIQ#mYP`8(t@6ZyF0!YT&)uQ-+rH^FA4+HYs@uG(go#`oJVU7`gRz}tcR@t!(nkN&EH(Py)P45o6+aW- zR>wsYB(3gyPsSeY%C-JR`dbyqq*mEer7cw`5u@q{x=2l%7yv7C4$V@Uz{SFW@n zF$wUwhXwfGW~eE9ur_VVJ`>=-+F^et72tnfHY~u)JQh|5%xj8%4Qc5FULh^ovks{H zu}9Pq$2z1%Gt|u~(1o4W zh#~~UYSIqP@wEH5v1)~x)hkatL#g=yLkiJjq&ze+n`|81P3 zm1uuQyZ=?YIir^5l;4C=mitk&bSN`2>LZ_w)__f`Mf{bkCEZZy)j8Ni|ceWM~y{LZVh_J2wqD)VUf6^CB3 z&9Mqa{QMt-?oqji-nXik$P7B)MAngR^v{$zb!H?YNWIjV5jbl<@`IWY6q9p2_Kdum zIwReQ37$G{1c{aKx~~w#ceifCfhD7B+0@BT+_zphj$z?paC<5|ASQ@a`18X9S$c=S zL)I|xaQyj42oKpwc*r_5Jd|EJJUnD`gx3&w!1h#0Ko{sO+BM>{;UU{TMI{X$0L&rq z(0@R|!{7h&^TERn{|r3Hj5zQhGja%c==)|WJQ&jt3lE%k$uX9N)s^PeKLtVT7N{|@ z-`kb|2pHc=jvVb`KaBt|m_0&C?9^sDJWeHEo}6*oqq~St?`kFg`K8c7&cV#(_{#!C zHg9FCs|!K!icM|dD?~UdMrIa=#l`n=_|XJ7rU}hwft^ z{fa^V#Amd3NH1g6zmlzCV}(D|+hcyfKINF5rWgTdPpmlCo&$-sWKYN-7l=|aaDw8A zy(cm%1|?`=!K;*eCrAR0p3VM`6?=S=3zz==Mpw&g2(B4j)`>Cy-zrTnG!f4#|N9I8 zZAX2fDvJ3ZO(Tj=>{H|8~E#JhI zJxRZ^C+S!AB>jZ9?_?17B`4|5= z1ev9ioIS&Udv!i5PfyhOup>6ann;JE_;6o)s7$b{^3@L=n=&ig(q?7dUNtL^UYa&5 z!_z$+#uO6WW|iE?tQ<3>|Ds6Dr%XZ4ho65^mR>B7)3+TfOB_EIB#c@m!Z46aK_&Y` zQSmmc_84;f5x0^XboF3hq{1lYj?2-`Yif8}rC2FRp@l7X;1xcH-<}6~xz; zNiSz9g4bVboR=^D9bRCFgW`$`<=51uBCl0SPFk0;F;{|RB@mZr{2puFqvB{@mZ=G6E=M=`~Oteau zf*On-IqA(h{SVS*X_8cyQOO-e<`0qk0+r~OTDHhj=YjKmNnJ!tS*0tG{PgwTmyeuZ zC;_EGv$8N4Ba>qGw^XT$Ivco0D(D5aG#xuX7mfT3i7uOgmh8SR$y9(ctT%!HJ0|bq zu^E-dc5BrGsUJs4Mj`1Hts7Iz0aTSguP|*s<4H*p^Lei`pIYn9>PqJH%g&r~ZZjM9 z;6b(0{a~!p8I%sMnth!r8p}vzYQO9ZYQ3lk{INhTX5`c=NBXT=n|zyL zoq3TAtJiwuei@d8As1epHrbP(OnD%aeW;EV-*HgK3RF?NV>hp{XFIK9%~$ zI)fnTkArmXywFBEC#|J}@!ct!c?ap_q?SAQajVrr_KQUAMCljQ`LNCoKWJ?tm&g=K zFC-Vsx(h^u37&${k#h3V!N$lHM>rPPS2^U+Ivx!2VYQ@p12tRMlRYHyUA%1+zGlB( zmRkPQM>!c6eVmi=7XQx}$jP{e{{#I0+1{Lt_56Q||FWkK-p@JO3b(zV>$C0seAg$3 z-p|)43iZtYW$#?zqpGfjKgmpz0Rm@GRBTbA#u^%1Q_&h49~m-3X2^s$5(Si2MXWDO zCW0amO(KlPQChXdwzrqIR%x#-SQV+QmxMSFxROIv@$iB~ z6+hRPQbi3_w7xD>bl?zShunjY`ZJQn4M-OE9Vza|T^A>NQ5}?tgzim1cY(eX=-&7( z#g%kjTm4KI{ zr^DIcT%>~=Z;(9(*Vt;M%O;Z}#@uFwukL)8RT3dAl8R1iyd*A4^igEIl-L1Te{25+ z@tcuc4a>O`;pL@rj$iP|Xi~f?3FQsR=Ca8S>R%r=NA{|BWn>aBvr|kz)C#0KX^|H8qoszRt1J3DBf9Q{mn0 zDVl)2#qo|1biD+++Bb=ZOIwSiTu^Pt?Ln|2?hs0GXR8V$oCPNxk?!=RoTa5GDM>XY zCKcw!ak;+nl0iec$fNdMOK&T*nxBwCBay;Q?XN2tf?MfZ1RuSbhhmn$rb6g)q@8bz z%L!Ssx3{F+a&MtwZ&b4;J}G?^33()yLfFl|F{Ap6$#=vOvauM;W{}J^VyGfkA@}#eFg7M<^pb=PY&4ZJLe>A|e{DQlUx1(Uq@~S67Dd(1-T6RET+b_WRsLIYfdd-}tw=ULn;&fx)LRn(XDr$Sn4sc#8euRv3N94`f4-^*lU5 zCRR;w<;~EW`X}Tz{>6wn`$fKJHmjS(?^$+xNn<5P{%FQ;sU&gOhO8jz&Y(AGi0m#3 z!EGXi>E5vUg7rO)&5`7UfHOd_9mL!MYqw|x23Tcu=}jt z*fnaH$oQ~Fg-R@=bE1-dL=Oghx&$Z!MBFOr>?}q=_4iex+4#9R<+91^c(+c@xMaN| z89e~N^hQN8cvC8p83#MYRp%SBM>xgxGL~$$$xFiNKMc7)mLVX{0+%A3tK1+u9SG?@ zRVEvWC>;;2p8NZV)EabZ-P(~*JJ$LtYbk17%KJTJ{Et#@qc~4O8?#Z=+F_@~Y-nl!hE;&4TuRI+s~j$0YurBbqMp@A`+oFfaxl`mOTVsm8O$Io>?e__ z+KWEY9ttTb49Jpi5Ifr-li=aH$=bmD-}(wHvBOKUW|8!dGI~^`F5kP!sijlM!Vy2L z#(NMJ7(eOV;fNS;!hkHn?vrm|kn+g=n%w@D+?GYi0p(w9mrogsDMM<|RV{genlvqa zs7E-+Ul+1j)hn!v#LGvgPglM@r5Q>)+=xd~#@{_9)?&?Je7kW*?g)B*AhME$Fs53BT(P~}#dh4%B zz{AOc{mW8fsf5rZEzhb|9FcF{3CC{gPv`vPq-u7NtI2eQFiP#i;pD!}-W5T>a zZZ9S%#8GWtH~I!2iIx8sr>A6$_=GPW3wKyzeX|E!&m(e-U&3ck!OtIIDtNCiB=~dE@$! z5e%}KHJWBp_rJla)4BscAt~BAadjG-7QKkf)w@0TvWQZ_P3f`O*a>(zKowiPTqGwg zQ9Yp~Dv_*q(lv?Dmd9lt!$D-9>aQkSrcLB!a{5>aRAZ9~T=GO*#--m_#$L9ql44P9 zSOBMW?;{lxPcw*NQTr~4JNfjdrCTLvHHSP3n}(?@t!p_6_t5#X%NZ>}JKN!oN+hLc zB}wZsi2U(#HWCkJC3$fg1E0Laq&w8^K6)_ng)&zYk=OLJKU z!*yTySaaR^gjQ%(8&;gTGWge{1!z5qw`?`FX2Zf^z49pzv%HjfiQCn>Pf>L;qD_sP zH@RuQ^m+v^ZSCr%|5i80!o@C_6ck=s;!cjQ)By#{w^66p7Wc4L6K*OC9{kKHAmh3b z$EaZmW&czPQf~HQhqMQnFt`07H{+))LlzsnH;=)^tMDU)ItIyoI8VmP?}d4FIkt|K zv30xzCCTtwpP`4>?9}0PPajE_?<>DodY7e&8fY-J^0y5i%N0f`7dTP$9luu%vcAC+ z`2AC(@8m3=oncMA2BeFtgwqRac5~yWDL3BwfEzMZbn2GsYH2i#w+!wwHbWFa^cbr| zZabV;T8cJ^JHmO71MB}&BC{a0IDW46G#t0>EGA|l0QaXd%RVBv26V28pflC^zhh*I zWWN(=kO^$zzR(fuCy{((>VhFXy{_RLH*(z1v7(pPwVC5}jxvbOA>mH)f?6ag8L$Ai zIt)eaE%0clw|3t^V_r?BBHsSH_qI#A>Y8H{#7pNumMb2?fQr44ZT}Ek+NI05`^nSX z4RRMO(f{HuT7s|Udb*z_4yJM;2Bs{`_FlF4!-N%lsr0@TTZ)SHc>E-*ld$nCsZw*tQ&M=8tQ@73#n4Wro zZwB*Cxmlb;unx2SNS}2|uPmsmgslF1h)5M$S5jO9rp|fS@2$KCbwc&wMj0^q9 z95&8VpUdiyJw@{(W@)m#4^(+$p-Vzu$(|^)1lP`%89(r=+5er8yNyKQLUz8~EU2>7 z7cpz3I?|6;XAtbr<^fD}9|C4eyDVh8ekCvQN};?GGUscc*G9=*cathWLMK!itt7~& zE=3=$zXBVw;g}2{66~xkRxF7@lYlvsal?{g1JVkT-TFjVTC;zWDL6|LW|Z>21hTRl zNU~|?p5`=dsczbyY6xdS|0F;Up))NvZwAa3`vFaDy@$ItSZ5y=EPBj;BFEQKDcj%Q z>3jdz>B`n&42%T)GCXc2p1t)O)FT~^L?pwbXJ-QPI)#*oQPvtJ-+ah?(4nNIzvu2N z+&zMlZj)~ocP?ogK`E_2woB?JQU6-LxvXDL6|wSK|GBdvoMN=dBFI+oNkQBrRy=?3{`9p7}ollNinK4F*CO_-klE#K61 zF6kaA>4!%K)1~r_%}?Y|c6 zVQ$Op?R5>{7{xJ_<7XU8Io{&f&++X(Ue}q1*L6O}R*utsURM#vjU4qHf9BZ4;qL2o zoybwnaRtXuIsU-$I>%m){A0W>KSwo($+3b%?FTUhCIDT1D2@`N7}+w(&J<NObf*-vmXxU0g@bx7LnjYBqH>-ITYIT7os_C!AwM9#yoLbRWimVtNwQqmub{p z$SveD((9HU16NZ{U|h=_DkuWbV3>PhzvccNsYLb&d`%kQsr*BMlNLNJ<0`+ zf%BjlT*AWpQI9}9(tYPB1?J8+Mi|*KRt{TZ@rV9 zG-UY6zJ8$8>sO|H5G-k$Td*=1b#1^ZL{-BX41x;Qsp7|N-&1#5|Kna6Y8_hChZcSD zR7#6J;m6@y^!0AFsG72@Jl&!hxUQ>cvm5;{H;H85i!vjHwlwBlL>~x#<10ibXDR@ z`+`st*`yryew`#3B5l8TH0A-nldnQ)@rz5fxP?35`}l2D1K9S!!4)db#Zhx*LVP3YQdtM7I3> z**UV7-e!F`5baf8SrC!5Vw3fz{5&w3+{EtYJW`yhHmy(){*wtJ7??u8gqJw{wk55hwm?2pDe+z)8X<+q{L!; zB7)Y1F#2%pTCXUD6{G)!!{}pjLDXlCjBq`zi28GZqUm4gWOTKwr%RgiF^th~S$`5_ zj%Ao$@B)_-79)aN2+Mx_rapd^`O@q~kS$T+FiwVNhdi&z5aqYk*D^MsNk&Uym$QJM zx2%sa!%&tnZv!>YqQ`C~`7Q(T?9uqG!vQyj^4Cey%M&H(Ws~eV zVFU)1b)EKd`(sXII6Efkw3kgn|EZDTpYe{2WJK$2vZ+Z(H#f;^4rqnWdwCA_bdELPP37qZL8%*Y+#D5x6ri#+M8ncfVW#^ z7h>2z@4b+I;JHfZ1Zg<>vQG5JTIJ}|-!uTW>2Exj9qBLo2_4VQCuWCm529zm90f&MC}NM|NEIQ`wmJ70$Wp4iu2`ukod`eQy-^!LsmZTf5F zLZSb#^p^#&ho`^qQ=Zii_#k3Mf9OEBTD6aMMSq#r`l3V9pRC?;Fg4iG{~}XdqGSq& zLje`Z#vv+^&DZ(iME~zsa%xW*9i*a0FFQ1m#>U*L8o<}zldmbgFzBSQVdhrOC-!3T z!9UQB$X=UH0!lPZ*^^ep2?;K5bViRzQU1%(MhgMgFr3I$Bc4v0mx}67T$_XoTR$15 zb1|&u2l<(_F+y|(h=7izPI6K{hsY-x+aG>R>=2TZQfUw;5c4SFay_3*GBo@4&O9al zRU%`MlX9;rPw(*+y;SG?Di)aRw~tXU94y}#VuebIcDE{1a$%{O|8|wi-eRaU&FuZL zr_#>%mDuwfyP9sW#=(Kev3ZRaY!$v7UL)s2^>^{3DgB+#k0a{u;qvvN`ulhPMSoAi zP^IRjc?a}2`6E(?Q^)?a02iY!WvrVi+9#oY(B=h?#I+G0Pl$GSe z%qgQmOtD{@WTZziK0AvLXWyYIl3yi$ZlB-N=kd{qLF8O~iDk&gzY`K_V)`xO5#|H0 zX+TAiHB3*rO@rT4Y=fCsboz;PM<8B~I*BRQW)i5Cu1lzuZlqM}RIEglakB)ViL5_;+_)!=h&6@o9I?~w|r0sVsy z^iWG?48^{anqd|9i$n5*0!m5pe|{VhKlq+}eJFnL;3EJTv4Na-H2J~a^#|n#?~d&b zKe)K~$oRojXGn+=Pv3dKj`u64*cL}m;bZ*!NKGO*TX6F()QaU zq?exZ^`YqH8cMVVyl>ARr3cI(UqN1&ijXc7ez*C*^1n*-_ZgRU+22cZj-!v00`#4$)Rxx%nwEZ-^1+xf@5O9Ar`hEy zTsrf?yUDeymbs-o(*S+#jRzEarWE^Hn_X-T#foU1kSgOk-5tuTYm2qx2maibU$&~N z8417+(y|U~mjgif-LC*)k^{o$y%MuEb_TW8ikj-2g!%`zj;>JKUt+!^uC&UBWMRJA zJ#5Ps527zQ0H)&vrj~bXv|MAuM7asEB{~1To2o5vn%Z@-|GkJ}Z*qz~Miq-T2nltg zwGOHjUh`Q`S({vpr37=eV-_8jjt2Ww+akJ@=%|F0xzS3yRCAeCd`JX+u~K;`fuUcj z!0=_er>DUDOskEG%culV1mBHPVv*U|#+Kp^gAOIa9f0K}|4Gq5aEf+QG`Y%bbo^zA zM#pmO-L;(G-$>G$>^EFM<7G%SKBn zl?Y0{GKKs?iXG_`yUUx3lEsA@B`)hAWi3NQN3AF?MGV zlpK!>pgoWoG@S(FE?JaA-CcL*&i?@R``)%uat@V1DcLHegI!H#YBgVqWNwo>&T{J5 zoRx~7`R8f;Jk8yM;O7;ZEUJ6f*z2u@inj(2gA{&>UHH6}_^~Ai(5>Iq*m#t?U1EbhpB+rxLpp^Njw^u{}ecT_XI363a5gheBAC1Zi=dDK`39vei3VdZ0epYMnsbu#n(X6#s0uWI27m> z4t$de3v`8jj$#YXk_z8=-ELuRvcf;UPK7HZF8JuS@V|dbg*Q1B9+Rx_0zoNTnn{Ja zg-2&tluLy!r@~*!GC-sBS*h@E665R)i=#uOul$4x@7-ymR8kYz6;6~syiQjLl?uU7 zHEOWry!)jl#A~I(lbs4zpzAVA2Vke1{|7E>_j!#wACilPeR^hym9kIOMr(3`=8HNh z@d!uQ)SMh)vqko2Sr6z|)q{#FYOUf%>;93#6{D9*X>mO5d84l?D~f`$3`>sq5+|mF zESVCfeGHa$Vc$@N8TI4k79Bwe)=)}p9lM8Mw9*0M&5aswHeT_@Kv(cvUe|9q=6>7j zI`%BD>trf&&gXuIHQd==*Ak8?gT1b2I94KZG{c_HW}YhK_zlPJIQk(Me2t@?!{pe* z@fpX}$WzyIZ0C5DBaFy7lH+NP29D19aj#nA`o&d!zY4SfyYsFU&KK`}-D(N6sJq>Z zhA850^tbP{dl;h$4$b6cxL+2&FJS=rfGectgu(HknUZ}EbjR%TLyEIbdR0-}&AqiB zlf9jGs%O7w&;7+peK3Y`9;8aW9Z$cBD8*(xYG3o~^f1OUy|7KPf(D%9J0O+rv z65Su)=c-%%Q6rxm7W$Wd4D|6=Z0N6JLDB(w0sK~Hm6D3#o`|iTFua1IG>p%1)h!rb zkxvc_<97wd)|YJc7XZnPGJv}7+S zOo-i5YnuVYE6LJW{G?eLzt2f)2glpmK{tROpdCD%hniC0CA5Pxx7(H-nRSzGNz>-z z*=$MMRXa{enxpl4$~Fpbv|38lT#Om;J#?fp(~ofm>YmJQbAI*-d7Ibe%b zzjkKtqQ`LH8(U#Es{D!t$JT4#EndBB~YyxsYoaewc8=WMcrcC4#rdt%A$%w1Q- z9gc7XSKZTkzKrw{iDo{9FAsvj@1M1EvOvuN}Df?q{5ol z!eGLqP?{;$dug_K8VVX@MsQFFfD&_S^-xH&yHg=81v$;Cbt@z8Rnj_omB<3GDHp|d z5{}~`ifGo;NLlS|{laYPTAJq}fY>Ml^Q;OtAr?dM5q~Lc$r!&8s=@K$GH$dfdK#sM{ zljdsGGuCLx@}xVxf?#=sOH00_}gjfn`ltLOKQ%OTwcQN&9(in;R_XI^6-DurC=gKhYs&#d1 zrFD{{gphh!(G=_a5%9e{R%#JK!)o_2E$ya%m=xD6)6-HxnKLax?;>FMlX*ybC|;<- zH*W0@S6r^Tc3C)GXUY`f5I1r%s|=QWqz!7ey)Bc5*(rb4iVaixOK8pneg3r8h%O|h zs8>_Z}3pRuGCI(=XXojx6SY3!((}$I5-fH*XnCxEo)!Dh4|@Q zTWFBF_;kAr25FV5kAI^{2_^C6dcg1mLlk325+3*^#N58j;#^IJy52Pzcv?%v^H|sT z&2?e7hGVAu?1)|>?60GJ)mI;+Z7CT2CZ%@9s6S26nU);Ngcvb^tNUAzo(BD8Sm$!8 z-Paz?Qgce4o=ozHQxAu|t|vHFb9~N`Go08wjzW&b96G;Y$RwSpxq~)6>Jjhp8i|yQ zm|QgyrHm_c0~_slLPkl*XFYwBhev2Z#=*E@iI+Yj(!U^rl&vZJNJeFjW=gleTLZ2` z=Ixqse?UC}>X9ANFu5)jD|MK#i28;IHTk8gu&Qb#RRzrd&gFT?+;09+UW}=qP+5qe z$BHVW1#VyEmhw#dj(98 zuybI*_)TNg$&FSIu1&nsJ;rZZstA2Adxf-{?PK4A#`9|KIDsf2=(6{*wfJS_qyHieHzzh5UPq>He@eb7pYxdtovnkf@3*A*Ag8BoMoP zh7f0V?OadV&G=2v^-3PB&jYb(<3i@-M*@Y{jxy?IU;+@w;++)Z|0|u%FHPxF7s%H) z1k5sCe-WqdieS;YDnz)FX(T6)1!YmnAR8nEoJ^~=+vZc5TrIKl8zxlUg z3~{-td-?yuYp&K9|I9mUW#*mp?N@r(x60t&#Tl^b zkYwNsWjX2Fxtp1iV4jV?f}$EE&@K3oBED!}cus$jB>jzVGIeZk^9IdV+T20&Z{_9* z0X9Y;HJxPP8-wSy&hb55vV9Nl#lN8j{9Q+5A@Ha$EP07s3v%iaD0(Sql)Pdr89&30 zTb0{A^>riH!?Ps_)bHLJcCVDXB*vFFddotEb82WSZ$#V;rsU%rH(EeJ*5V8H&Xa4Y zFR(eSJbun*S?S z?!V7@24^}-JvTT@o~9G{zTJwD>IOzugg8B>ZY@FUC6n6R^e`c}X9PG0=<2GI)RVD1 zLC_MfBy)ZHI_p=ri3l|L5q6%rvE1B9&LQ#p|M?hw*9^{$1!tHg6+=qK8FgX{(4_P; zu4v!I>3TcDC0nK%PruQp>IBnl;7Q!y9;=m$`n7YfvPZy}Xob*MXh_NQYA^5=m5ht} zgXU_#`Mk)P?+jGhi1PrJkfCW2$dQ+Z8a~fmHfc_moed&!&-|fg;4Yser00e9h8X|k z8+(}5KZeL64oHir-boilS|}O3$abO7_+hI&64>Ob-ZivqcxD#o#<^kl8edXx{oB<5SE z>uLW&c9u`C41AVaBpa=^p8-m*E_Xr4-pZb0jHha62eX^Q^+lXS3q-tn=qL$b0c~)}gyt zmnNIaRPV%<{6YWT{juOEg5DX36^z=&0kdixBbPN=kmY%>h4WI*n>ml-yggX7t2)bH zGq=Ahir(a6j}DecN0*@k=BfBOS#0@>w&I@yPI)PlW(;Ei!4sWEbd^!Rjz?{o`s-l* zdm`9f%zg+@5yol{*NkBOT4Lei<;$(#&k_z|)Uk~leLj@wk;SRme!7I%6hA5hA2GfKyxw!xVkVR?2VKhTS-Q2 z^%$i%+|qz~{V0dOJwxMbW{q+gb&qSb9-h5jD}~q08smyy)?uItdn>hvzPVnHI4k4p zipgE@C5M_*Ty;n))hvKM(rl;xKb4ydTt+f)O43cX7*{z-VR#{PbtpCpi3Y7+C_YX0 zh+0kyNoh&oGoce~!W5g1YGzj?Hj`B^JHQV`4j(#wYV*)BX~+ye9LF(9gr9@SI;`{` zu~}g!d1omVCFLFA!~d3dYspR@Iff(>CH?Ebr_;{wT{k zGO$G6k>TcOc_qquC%?7KHjgWFRt2I*{wGQ_ND5?GB9JvkhX%}MEf`GH;7x#2!NXUC z*#*m))YaxvC6gSfjPrc!w%4yBUEj?jfya*|eC*WhK)?luWQ!8M%d6UzALW zF%60&7%Q0`n1AhCxat%vNDtqU=lIU(G|u@qw#(=p;Fno6~2Ccs7OnpXK#?LYnFP3wGO_HQe{4p@}tIuxOa4s*mJJ zJ^1>KRMxiGXwFl@UAhQ&EaTb{v-I4grMtHPX-ssY!lWZpi*y$tK|28uOn*P^r-i%6 zzJhR9?Fe_XT?doyyn3D3HrH>?s{sY6tHg=it5f&vHQ{h>Nbku@&N}f+N_PSC)y~r0 zTxP?ONGwWxQDWW+O3F)-?yi?)xgy;KjFMLmF4?U{vh&;aR4v~nBs(qWDf#Y%gnTzc z+2t7Hu}_h3bMVO}^H8RvfHj#O#E$G$|_lppy{oa z4}Gl~!sb*T(Qx1awd#XP&P z$!}}CDLCtYrldQ)td%<|y}D>dr%5(o7$02Fs7qz>3f4og_?bQhWp`QpgD-bt@%Z!| zj>Qkgmhsoz8c-Z7nA=aWnEv9j%j*qtlN&0WIQ$pK>CFf(jk zmJ?zPlU+MotJtphwxzSeja@Mg60{fIOB8!XS*$S#k0<-kb!_#)RUuy+bz7-btJz*~ z*51riDJ(ir6!cW}T5u@-T$fuzDVPTR2}PS;eh;8}wfsI-F3=1JgVw|npEXG-KC;X# z;n5`t9=*Gd=F#gq@#w7XXg;z~e6%jmUzVHw6@&h{z?NKoCvZb+@@K?A~D8Bf{?WVfR+QiLx%ii&%i)mER0h2rGB7{=SR# zx9E8CC;{t6{u)-{pZL`n519M7S)4vKrgw^=lty-X`E&b4!ifp^mZX<3R2{a7T5D&Y zsvg1mcBAeoK_0+k58lSPm(uEqdCwInl9&Y`7VQHTYo6HfYG6r#$Aj#i0n>Ar-)v~K zFhjM_f`GYJ)r*0SpWN?HdZ|VQh43Z5X~=K(H(Fj=#*Y?oi8^T7>a_vc~v zr+PylwS)&T&$=4{yKuSS2L67J=wJf(u%+0N7ZNN!+~(6CiITRp%^i?@>IY~cPfKVa zPfS^>C$*4YpC(LNwvZv!hpC5H1Q!PL?p&cm>*ql)1Gi*c(0p5TnMU0b?rIMHTdtVJ zWbWCJ&}gGwi$Sr;9(Fyy-*47GL{atWM!mT1s@42zL_|G( zJgVCmYGNU7ri|qJqO3-*mpXY%(kUH_;-1lvFyflzqyL*8OR|USl{--RmHYmuziQ}J`$@BJJxMP z#`GH{&-3!tn1A)g_iTv?5xFaTy zu$D6Ik3TQ;R+{>i@h*LByJ~<@yIW{hllooSLnGQT%2SfUxmcJq zJ}Fl0@thoUe9|OE7b0#a?NG8#Se6|UY!|1=_k2iagn=zE6wjo7^xDu2B=9wev<(^` zXkDTgwq@9xgdMRkJ7TghZ@us>H=lKcSjqc~K4LmCUc$P;lk~AY^0ibeQFodx{Dv!F z9+#Vb7_s*1E{sni)|P6nhEhUv4r{(kG4d~Md{Qne0-WX;M*WKtG>c5D9JDa5!Bnw2 zjk2xm*qk&5+SZFdlw)dld}{tb=HKmKWGET;|8@R7qvqfI8xcckX^)(Lhdux1-{ME` zzrermnQ$ony@)uu{|)}#vR~Ln^nag!BYRI5sT)~a)TENePsNy+25*xD2C zRa`l~QB~f^u6&A(s#hUp$q97+tLP+7{7}2eK5H@Qk))+_e1U$ zDUeD|^*6qSyVuUCG3|)1f-^))DL@sAKq$sJscafY4 zA@dL3th_0WJ63at(nPqPkuGRGK&a;FMpd;ea%kNu);p;}wFuo`TBvrAnG~m`i_lP0 zQMQfC6p0#Xb!fUYpz)pFd!DO#Bdr=4+71RhVi~%pazK>?q*@`YV)e8_SfplaKT*qC z0rGBFqO&N3ji)vqN*~;9!FlAzM~U%@L@ezv>d#c_V0c_84x>bdo+g5|sD+gKf=^||2II}C0pP2i^n|7MAwKc+e)oh_`eri4Pnay96_X`g^GHm9kLtQQ znE=f-@LyCYlqOcd)ffP29Tvb{)pNuGxQMR~v;a=Gfqnrz5{`<+Pi|z%mNs|m5y_se zm<7Y`&#(yU%=Tgv++F{i^5(TofZ0P}@+oG(=R24I)#lftoqJu(fUkcEGhn|+N40ln zuKy7EDunANhS|YwfzKX__g~dLTj2Qj6+it-jvUO;W8vqTizr*5WNuRoUYNhAO{R2Y z{wfyr$eI7*e;f((U-#!DVg5`^%3rU`8DJ(8K&tVQYdgMz&=p79e|=r?dE^1@1g*UO%EhH4>2;TI=|E;k z;qpOo=^&coU=dRh^PS{^;7&kNjQwhdv0ui8($5RDNZ)@#ydFB1jg zH@DJlGepXs%W|NJ^VNiIu@S0L2#@T=jZ%WN(90`zzM}x%toUfq{XEWjcvA3E4_mlI zl-|bAgX)7@0`BK{o~jZqflsl4fV+_kHX+g~d|P|0g{|)g!Z_iM- z5kO0x6U{b*-XTGcafi$ZqI>ju+RC#YVEoHdWMGW)Nf9N_Wc;_PI3bWj9o~@@9v7+vRILyCj4LRvWDf zrzntxCc&#%KeVEq@0%n#*I2fxv)O}3OctUvC-sJyG~_Y`r;edR$8*>kcX`Lru{&5y zE(hqCja@DW_5|*78_|n22CL5d5;H+h_Bly9gha)|ZIcS#*kIjDs$->qAu`(LB6&4YvFvMO6%oN$b z0CBodXW=-&A4IWINy(y8r59uIR9ob{6R;hX5w6S4YW(CT=XB}R9Eiz+R|JAaB(bJ7T!5T5tL<`i@PfD4(C zo3-PQKyWzW`RTVcll{47m0v=5W`BBN&qpFW*Vh19s_F&dxufM1;rRf|=g}0N#c__o zeFcuRBL3OlbBA)A>soSdPLZ4=@$!$QO;Vs4TzPj`qusNP;kYankfb9u) zS5`yBHQ5c-PQK!w4DXYCJcNuybA96Jks}sbwi<5&N=?KAe;pt~WEkJ)(T zo?&jEKVFO%V4$J4A-(pNGhOEP>MKI-rchB+<-~{?_J;F!gxs%&Zl~_{xikD^>+ps1 z8$(5_ZacT0EdkjZc<^&1JFzZ*G8^2F^oHZvCx&7pz2yW+eogJ=JxSD2c!>aO&gH9` z{b#~PnWebRHowUSV()Z77eD|VXrsM5ycCMl7MfWg@LewOg~*c!h_$OchllYmPjm^R z0+0yD?!cHTvUd;O^n<{get39${cpgVc@TIr4-fCe$B#08JJ55ID5|d;9`~e&NCS37 zNRhxxq5K_T_jU)uVUpE1q^Xo(qAfwZXODqe`zUI)p7>KX)WtR-anIL6F$BB%=ej1< z(u0z!A_IH8C6hdAF(Zc&cM16{J|s#b9TEC2!c9j##f$hkT=+afNa?lvj47&^z3U}>SsB|uyS*m%B73)Y36)bA08Wb{%Nq2kP zbjFmk8r2l3sxZxIwR`2l7-?oyg050G#Y*h@5~iS3#58a_ONt5Z2yjX6O zZ<4aUCuMyP9og1IapF537{YpL#Y%Z&NaDfDg~TGoz#p5i3iN6jkl{SWVM(uGX#mZ&nKaLG$*w!uMoxX=C$fFrt>nvdYKgRZr@)+*H!tf*9fA*Fxn|;Q%dbRA5Y4B0uZtx z>IZfaJ*;1-BC5*=KS$!WO&1;G@-LrD;Zq%X*dO=!wpeugfZMAw1M%Yawv3z4j*m(s zyTP0{&!#Uo13-at@Y!gM)bN}l*y%W9Fr(ZaVm84u&7a;za14(n<#K{uJ3!mx(V0XX zc&(4HG*Qzr2Nq4d-+7o?S%?k*43lxSu~Y4>Px0|VsytYIl2YQJ^<90K`bv+yzJ3R- zZ*W8WKG!ani`kowF-kYX>Db&DkE)HjIM+qbmNr!W)T&aw0KUhQz|-Nb01r zjW1p(d3JAqw*YQn44S^&7&LRSvRDX}m=A1bsQ}eZuiam4%=?Z{H2viLxN5m%P6(Ox z+j*?HRZA!qZvZ|s?E(gX%b4fkWpb3HMPgSGTYuHQ=HM=bXjgOaBRR>Prl2crDut!< z!^4ry0SheOMZqnp1($D*m=7%EPB~3KE*u}88;aKpWJCIrQmoN*QHxpMz>RRcIE@7& zAe9?|cTubPT-Ag8W*Mu)+8U}Q0C8cgd=ZsCWcY#${6=3%wpG69L#{$T>R-&U)Eto; ziB~TsogJloKwgabesh=y)yQo+icls0{Ix6zB=y|+@cxiFqCZ2qr{U{k^ewNT%wfI{ zjlRKYQ;n(}-l<_@&e}-P+8LwG@lyh35Ic+~O*V!0=WiJn&rbK(e&VS-mzgHbTv@v_ zE$#`*{IX}IH=2P!*VcE>%3`_lv}M&jcZ<8Wfs{xsl^L<%%(g6ALfeqK%1I#>9A)&a zZ{bs#G{xu}->xo$q>rh$wtKILZg!_(6GaCf~12h5}1p%uB0gZxyRf2%E zAYhfZXlvy$p_l?Brl4w#BHEJaVm{#3KnRd&>u-Rz{<-S&glaAcnZx=sQxpT3kNIeo zv4jc8&9t(jC072|aC{6KPY3@xq$dQm5`s!^I|G^%E0cWv^$1@BpL{8ynp_sAVK!Ol zPeV8u#;B@a3KbZ>Oi;a?D+pkO5J0?zA5>evT!@pcP2zER(fTgbE7-b=ovi%k98YaC ziK0TE`OQ9He}0s^MW5VUXzrN0z+AP(qQUO%MW4>tefy{5$B#eGsNGG=!sZBX{mVwZ z#AaC+@6YDO>TqnB*B?9CZ;tTreXiM@--zkI@ePS!4~IpSNys|w!4`wBtTp|2*)D%< zjwfD9&CmZ?qi;XXU?9L%BvD~~Gn}>(d za@-S7_*^=fXVLbmDPb0H{lf$TD@g{qBrJIyBM)N6ANOFov7#CDx6Q-_bs~%ObgQUe zZ($=weG$C~5{h;hcb>;3KB?{PEMa4rty9?KYVQ_*tWWF3T=|P8<$5Z64Q?Q&En;5Q zzioUMH4cyWyWL!cpdeKbrQ>mUU9pMoqvO}fSIqJySing7nz)aOVFgigD;fj&`vy0d zEfMocAtxf_eL*wRPuorf75xF0RD+wth-VZY=-94r`-?8~RFNdF!+WXF1Uf;Z$Pj48 z_TXO`63vQc{0&;j04&nve)lJmxaC=EL8F^dxl?{@v}*ZbZf1+v-{&94-C#|`EYCw7 zTYU<|mvQ>zK8UbyMx2Lc?}7Y^^^S4Pmy)1u?Nq;UL$filVYksY%}*xC8S1O||D?Z~ zAYWy)@++1x*8a*9j)${L;-2%T8aFi9Uy_HhfX5V&t_%31UBL0GfW@kSW4I;{WE%ze z2k^07t$gL4ak2nA)BbAbH>KK2_0=m}%O~Ny{Qb#~fEAW*)HOktHP6VPaz%U9&dE)y z&hS5$CVF^8i`nzdQjhEi5D{)4TqHhCvFjf~RiQDcekqJm#&v^mNGPUgiqd?WM}GQHN>6 zZ5J!#jPwp(J3n41u*H}&8S3>R{s&@zPzhIKrJkU<29YWcr4z%H@juebBj}tnlA+Kjfi%bD&zBM5%^WJWxcq! zbeu3RH6K{O&48(%In!n!W!fw}!fDeRt6xlsZ9QqKT#!#2$z>5&hOfRxPJQdWV8Zal zrDnRizxq|bNI%PyUlZ02Zs5s$t|PHOEa1cpuu%V6#7WAQn}UtcV5`iT@*NqOHp4Ei z#_aMIOBYs1?wtXY&ojfdbMsu$lY-Z*e(aX>ekltBCiP8L&N!qyVT(Vc48MLTQb-d< z8kTpxSO2FE)X+c9`@fbt{xBaR@|)F?>+4AwBEh;n(eLu3eyKco+65#*nS9!45w}a> zjHI5j^JihV>EYkgkY?1a=5YrS-^GXYl_qf)(-^cny?qq~iJyHa{=iOdh0M6nw{;xG zLzXo1y%Yn~)6n=#5r>!xgf}TlZjK7fkLHGK(B=nni@99P_goSsS}*gjyoTnK3h-#nAYLvB_|SwSidqL-l*A zzi#-d;Rw~+Y20k#2(vA7vV}0Qv+azc-8YjiZAV*r{;P0?n8Q(>yS#Ey)KWdv z81$r%+5z~P91Vs1lts>;PxZoKpDeJS7VD?-6LCsFwI2CA%hguQJEQD(rs#L%r}IuN z@9@TS`;8j?hWwN|#!DSZv31?%);(MHG%^Z=3D`4@QD4gs8lSVqljpTIv0KX-r zXbD?XcfN2uG{8(Bl7{@f#Y`8cyk~@uk?R~GAk;tg5x;XnWNVKGlIy=ve0+{jY&_z2 zwY~?OXq;p9!gSTjKw5uFXZG4SLb2DV*J=9MFW1gq?27gXndM6@_xss+Kak3BF~?F? zuVYUUEzRtGDrIdysmv9Z)%PZA`#;b{#;W)69g^YNXr|S~odx)$w#v9t+`aWSL|MC0 zGO2F|M%u5q8to66BR%=+Ya2hqjh1ZeD@hNI2_$tnl0b-V=tE_0vV7Y&ZJgFoX3aCg zKV8vTwX5__<7pvbj2R611tl6E``Ueu3 zpWP6N{~}k^3uKQj_8WOsyZAS2XX*|qmnG9)X?;Z}9fenLcl)~yAk)!N1dKt&3;7p< z#SB_7lNUHIoTkr5k6Mg9SmvUS1QV?~_8OS8I07Wo`Z=hcXf z)jq^MstWFe;gyR>S58KjwGf%hDw?2XHkD{AfU$!)jolYQ@!-zngvJD2oW{RGv>#E~ zcsrV#C;yNK%aPLw5PQ+O;vceLy?#E)YqQRNxit@1%<{Up|FfbNV_2h&_&8nZ3cJ@J zjV_K9S>(bxM#!cQ>;0v4mhaqi&u6=#U_-242rXb<^(-s1`^}&g3oZzlv%P`XGd>EL6S4^}cWHmrZ!q?$PckjT?`gHI|(gI zqp9Kb-G;AO&Xf~es0#}&qO4@;=jhULS{>%CnJM|=r+XvjOh!dT|7td36Qa8WkSm&v zynVGruIROtIniT$dt&yjMs;s~pd0>niSO3*=r`357GvbWX^66CQ85w#Vg#*3fS@zN zDt)`Z{bClZ>ZR%o`dS7DDzlWwSh~Ra=6YPw zIg(tPrdD4h4f0_fQ4Mm3$g-bokD!4K8EF)W&^EPC@HM+B3~PTjig~ldCoQnQ6jY$O zAkDnAC6ZgL`n^zous^$;CP@~Vyq8)ZrUVLh@Gb*h@XoW3>4p#J<_bDJZ#Cas(#TZ> z`u2Y*tVUl37~pIdsIRnpRU<(9+3BsO;Bx7r;Buk4VpENo*sxIRU{EADHtOcn(tif* zBwL0X2y_upE8{Cqeq5KE1Jp04^jD4ow^bH;Joy0ho(Hz~a{W2i7YV9A{Z{}8K5YPv zyw^IxS7j4_Q*gCH=W0RcIf2;J^JN^21(^`T8leLrhD(SA$=fZB5OzQY=ea&8-K%K& z%34zWRu6@?O4(OHkI(}N`f~J3r3_BlWr1PpYc7=~8QXQ{vMDE0PpmY@8M#=m@?LJe zL-k@Y+Pb`#+hz*o3d5lG2Eb@C@?-)Mbbg}Hd6Z#LEXD`c5?#*vgTk zzzFeqZQ@%g)P^oHuR#Vj)cCR7;K=*Tp~X-Bl~`3INecwv&ODP_CE2ZmK(_AjI~h?& z8@41*B=$`AxWjW~;C5g-8Xh*mm3gSp$Wy%JL&4uJ!Q|(1_31wsz|;}kvEO9~Yo0jP z*A(2Tc;ZgQ6V2d)*s$|SV5!DyGZVcMr|M2%I}F4; zhTLdpAPS~@BhHj=LB{{5i35|m8ieE2B)g+^k?w~ABd=xz)&f6*P5C)$(AXueD8>r{ZRJ|5IrjJGay*0w*Uu;lFesZQD?d2dWeb-!14% zQuzL(jmYE>6fnC(;b87D>L*%}9I5 z3}a^T&B;xUtC@(-)764FdNXABFIx4oYTv za)gtpDIU%`V(KhFNxfsAju3Y%I=-(N=($U|C6uVZi4B|;gt-=8c7QGawT&1(< ztY6Vj3zQ~qa3lucu_}UyuDU;5yCyqQbp2w{#~SrR-_r`S$J0c$8Rf0&I#GUKx+5E< z{3_8hih>X=V~EbNwT!HCN;dPa3^CrCP#d0}(&x)`Vj5J_ayBDq`&-7W_7`=G}yc>K^0% zRkGV|4Ij%{h(*rI(CDjE_l-eyY9j+yfOo40^vd124ZNuokoT*XEWE)HAX}vDX#xJB zgj9w#{jID#N6nv<8%otfLcsD8dPt}@5=YG(G1s6bvR>LD7Bi)Ul)XF6NNzNK$!7v> z-C6Q`6&ozs3P}tDIBlGXI{1ZXlx6II@_2}>Zlk>A@rrCzi~%LR921fh$7lK2gR#NH z!2~7#a1TU+UL9A^vwCnJpDn-W_+?GxOE=D1$vxa|{IPVo;Wo}{h4%^!1Xt?~=i z4~NhiP)g|l{>{xb&T2Ml1%dn;nPZ$aGOubjm*?i5ff}1tzO^c^Hy39%#4>Ro5ViGg zW6~!)`NGI+wjOpKB7=+aL4EO~#7$4)6JIGjc#?<&P1a3`=hIk^2Uh^!KR*gxwo9_3RR1O<^R z_Muc#gCf-UPP%(^g>~U~v|m;&??@&Gw#&FOw@`c@hg@A@)IUVi#9I0b&WwYT1F=UI z%Vp8Wnil=$>e_u7RSb>Um>XUT7wxSY_-BfOKe=-o&abKN8^YCZcCS$T`cOOZ7rQI} zhxmWld3d_L>F|GS$e_42)jjAp?zOe`B-}o1zAt7WbDmTdyL(;@r*`#2-=hA?dF(>3 z_zAHkc?5gN=G#TDRZXzVr@vn$As!`K-=hk1LWQV@(bI0Xh8IYiqj_d&MgBja+8WsO zG}=8M4twQ%Pwcw+^i@Bx0q4Zh+e<4bw(@u3EB+C3|AY2F3M`?bzg3mk`9uA+pJh~i z*RB=OMQx?r{A>nBOL*yaO397Y-Fv@kfqWY`Q#__863gOWF3)8rkoX-~@fx%eoHYDXWFrA3RPQr&dE!3w)`lLEIR=ZUHTCPtG`qZLNoApVV^kTI;^)E}GWV})4K7A4^ z4Zp;2%1KN!oJ5<+DMz2gX2~yQWsTK}#gt#g`V`WqQTkM&PgC@1nm&o`fDdNsQ;j~& z*QW*gv{0WGacVAMV{ZAN#A~8>#k*W>!s|F=%lwzvA6$72>*$CngY% zjAy3F$h?-T!R-2R?lBq1u|Evk7kIIl;;8sdYKo67jF+WZ>-#%>X4Dn&K2uryaXs(t zqpY^G@lW!P#8OPiWyE2<#$GuPB(ioI6-E*ACL%nBm<~zr8 zp`-vd*1~(r(}e|vczB7i2s>>i<;6+>g6hIlCp^4B3`>||Be{9)o7I!^96+jTI)J@o zGhj0cZOGe?%Tz^B*2i%v3wq^^))rB2N`(JFPzDf5>9`~%3N$Yhc zUl%PD*O5fyrRAUyWoO2wyOf7Y?-x0PzXG?$Um<7hni7tmvler*?N^Nptn#ZiOU|V5 zjP@1>bB1cI#+*@i6MWgm-qN(T0$fJnyv3yWK~}kv9L2^1>}YUX?kEIY@m(mk3VYDu zAmo7tHZ8`yjAIc~S|L+fv13)9bopg^MhThe%wFNsAQ$9~q2BOmV*m4F1sm$)8ljF@ zI2CBqKYUuKe>fIKOdX!Xbq?1#T<39}$2E>e!wa}B;JSe8LaqzBE_9|YHENJwZp2i{ zt_VHlauh4Jb#hT5*3cWL6ihX4%xD>S3*3fK zX8+Lz^4q9-h4;o3=m+NLLT>WgZq{z&#-4&e6G7?5F+ToXibQnd4^%_iPd;QrdPtFo z$DvLQAt2EVr8Fe08^X<$hJ>;B;OC*RA`J=C5H>^^)wv;~X~?LQhKzO^GD7iGG9(twFLoZDa&_@4oFENh#0iqEE=Y)Hu&_k~jdgzrx552mehfeV&h%-nqCZh0% zMUA&zNkC0n{o0wifuhEnCzw0P-(;@B+k1=U-X17gHRD4Sv3XJD8GEU60EN4?IXQ5k!L*2|nS~-?4^0E7P9D#l;5VS;CAC?Z~@v&;0hr*hmj91oBzT ztAmV)vlTz=$NvZZ#6;R;8bv#9ZnE94V_9vri5Wr9zdDR>N3^Hf_+3pJgg+EmfBbnG zK($C2#}6qvvl>QO;%zQblewN-^%tK?VL*u2o%w=M;n6H>96{bRvse0UltRo?$D zbA(T076PX&1Z>6o{ahjU;=gO;KBbWRR06rJSHS-g_&sEMqp9t^y36)TfI#JWy1jYz zid|>)=N!wp>vPrMS)7>kGOFZf*DWr#G7sM3G07G)MP^bIZHBspnnE@?(Pr(~|AV)5 zo1au|elpqS%bhmMWWAG#C}gf4OKe+lBsOJN$lMW$O|v5LZ(UaBLsp-@vphbXD506# zS%yPBSSVvN`v=T77%%v6`g8c&$1rPo6fH;G=~<*;$;xa=V?~pBw6uqt)1CFGh~#EA}VyaM}os~ zK$NV6fu`87f>>!`Q|b9>_3u>^GrqoU5PBS+3`O-z#juDtzEOk}HAK~Y#J=sO+jKKS z_gF5%;4Y)lP4IU?VE&9e_A50<({!RNO@IFg@iJyZBv$InUum|)O8Ymyo+*necV!k^ z3bbF;)=%X@z=5fRU4^(&)MyNAiH#h1tg;SB&ys=Ew#z=#u>*k>LI9NX<{^3Q_6oup$rXY#WkS zMN)#)evw{zY%uQm4t~5Mu$}*>40WIU1SGv1J3UZTR#DYgLU+|ls)YT#`^|6bhtoc> zlepFy0riBtci|IS!$`S{&Am_?tkL=t(T9ZM5{)!B-RL{?T|aV4Z0Kh=mwthhX**Qz zZix+lH(YC_Rc{r5q+)_Jzr&W3obuR%G7%zqovfy!U|BID&0;#Y*Ga3wti(`i4V%o@ zyHIDfA6Hq6NI3y7Q{2=pC(P$X1j}!ek4d@zCH={eE<}PX@~jWX2e1|QZ$OkdofbV; z`6i=&%WXs3S4vP*A9}NB%gyJQI}%e|(N+m*`u*>J-_xiSXY{bSUKR?HY0j!!BN0u_ z_7tX>F1X1Q(G(UN&xQ{TXo(L^BUHiY>xK=L`GmHQd;E?*uD}omIH@J2_0z*flu8Qm>q;(uao`TMFTC|Bggbt&~JFFL#;|PQU{);lMDVL!$*j^aPXd@RmPq9{GPf1 z{nRv(qqA$s0X08f!b;7W_!h*$k|5gui_qd4;Qn+3OEUIq7eQL-{-=%M6p>Kjsy` zInKmC$CqugLhzWlsI#wqKyLL#2R6z_5tXZ{tY+?5SM+M?n<@3R==zLdtE9T3#>(9|uQ2X-kp(+?53J`N%t8-?iU`UrmU2S&hpIQF%L@m$!z)OP@M_YZGh#L= zU%&O%hd+_;qv+g9(zwOGXOaSh`9boRo%@2?0^tl<39d>n`n<9^!6np&T%D>syP@rM zO?1Uh;-wq~>3&kyS^a;eASJUL4ZGZr##}&TmK2y}rKaE)%Xq}NDy)rgEDaob-+2TZf)03TN)J1Q1OLSm}R7br3;#rD- z?23C@Pw9$1EdN>1Cx(wbd(q3zP&jbDPDHZTzB@&Pr+CJ?{e9u7qd{&fqQ(>aikL5{ zBxDf;)qt5z{Zl9Cm zDyEC#SMq#M(Cv$!E@M_kF7^Q#w?HO4wq%!C-}sY`^Bbazx*jljEy!44Gnv0rqGjDz zt!q18zjB&R@uaF$`M#sq%gBfSud%^f`D6XT-xZydq}d-FD*>{S=x!E%-T6; zx~eOMUv98|^)~wWWk|B2G{(MrOVNwb%)xuu+n7CqD~J>>P8VrsJE?_>+Hbzlo=-$( z-(XGc^l9z>w5W&B*4`9Gy6|F6sYUCnd$l+Fi`pyKYRYm{Ma1S_i@K<)*ijcv_D{Op z))&FaSYkN&U=GR;>VBlL*L{9a>FLN1hT=#g=B&kw^7)?U;#KltD#-4RED9~}S3!}5b#yS8rggFoG)!8-zeaCHZMa1)}@ z5%Ghpj{M+9Z+>ZhaB-(kk0L)Hr+a|(1rc+!mpmQqM(xwEJ5dmt>qP3A9x^ZWhVs`- zI*+fhR`chtWS`?oBQR+AfZAIJxaMT|AD6)NvtJIFEbMyce$P#V>vtqRi@$Ebv)WB$L9ZsdPW`k3{D6HPg-XROJA<&~7Opg!QiT zeXb^do+}bReI&39elKKi=!M?q9&YG-St#`iA|`6^*jO+6-LQKdGF7Zh@MLa|mGp0X z!%-nTjd+$&A#BDUK;0->X$;#O8#_RJ2l7|Ou2m|86ihGyYb?ZjKlq_w1j8;EbkqmZ zvYc3c?Al!G?DJ6`m=j5A$I368S<>tkj*s;O%(4AJ_5FP8CqNdzgVmU3!Qv=D2Qz3a zBH#$=7F!KnnZHH>nQze zKW%GU+S+PuEw}-0H9<(iV%Su$wu(#TVpPy7i&pagz31GSOjgkP`ILv7d*|MB&OP^> z_q_Xg-%lG{dFLM-cI%+<+`RIGr4#dp-kMW7ja_z(u2N$pd?+h0oP`>f7mrM{3Nwl0 zi*XJu&c<+lO@2<|zCVj?$h=iOlLzn_8#DAa#2G|~214)d z2ZVk~%Tm`^Dz5eb3p?`JnGYDf77s?Z1tNFAUaF{=J7y|qxyo2w$`)@lL_Xn{sz1nZ z9pE}a_-?syxekPLo8(2SmVM;X0!ka0OoB=x-?(0}!(S>%3x3Icbmrgk)_}9}&TsS% zyJ1jxL0)-d>11-c=akNrKuCb=*%E=|^1Z49rxA%pfh*7A;k7`)>zTl7(7Yi{J#+vz zv%3r3PQ6`qkpkFxw*#=3&?lK4iF@$izXf6s%galN0lL}Vn=T;R7)EWNUfSVoTDEd zjM6jPF1ko?{;jy0VLW~WKypB3nHtao-eI!_h3CO&O(aQ2PU#(3hQKQd^;8hpu6@+w zQ&ZUk1dV%MJn9+MO{1QJL}&%|th|kxWbZIDIg4grvAZ|DSkL4sR1oB|Nh6=`XmFj0 zbg8BQO@>$K)?B~!=j_Gu4WhF}%b*$bZ#RE$UGU#9e}@~6F@N`7(DwWt`dXpz4(4ye zd*5pQ?&+fE@4_K!{`TL}V*VC3y;#rRL@KmBfBCAZZ!~|=AauvaZ=5tF#&5j+AxxAA z=}}5`_9+al^7r^Y*JBRdXvuIiTaPadj+@U+MK9Px9%VUBqk4NRhwvD2EQeA!I4sAL z`=A$7Xj$scN`a+l_<^xHq@-=7pz*i~L7?~zjJ%3e?D|y`{QOw)9<2~S`8&r3pcM+2 zH$woSGz~ysoTmWjFH>6p&@26ky0Kbe9t}YKsL(b5C8?&qA^V~9cTk^i!M|=IoT0Q%1xsk$<~i#iwea3ZVyFXu%GLs zVnK&n@kh?SgJ;1=ihrPZq<)wB5ptchlpo^c+qv(^e72NtF(rFVH#M_uW1!6EeB=k@ z+XNhQt*#P)$&qhoP~E`?8(PY@BGqbsMQE|!Y2xrJNmR3+`Ju)K#!}I|Al^FC?W>N0 z#HbKQUmPgXf{{7ha?zyjN4P65j}f2CGQy} zWq<6&!8r^a{a6IE`68GpDHjQ<-u`G;bfIV=ySa?51+&M#7Qt+Onmltv>}QT9F`D)E z#2mFy`b>%~6!DzStz!=S@UJ(R1lN*CP%_%ADAPU-J+VR3AV2m5~Wa+eY;7Y zc>MV8lAQkrd^i5BW8k~}XSI#*ZaO`NcG|&rXTBbt#tS--}h_% zzCWtp$KTH)UREZ1#vBEInn(PfE^RnbISG2*RURY1O5gLi2_I2VM%Db6P|g1I3`N7b7)uKj4I7J%+LtUk*LO2WuA%g=nd&0NwXHNIV13b$f=7bu z3r*H$Cn>TvkfvIawN@4f$lplkgX5?hlsmpte|&>ZT|=i7b$e1#x9$WRAsGHh{4em? zu<|n_y@)?q9~ih%qJU$g%EYMQ8Cb)Hj_w0S_wx?R?}vrzNoAqh;bjj{B;|i-*4jj} zqJZIBA8^$-*`~BPL=022DI;dkVm%Sei(kBuoVm(SPZdFqb~$F2`t#|B8fn{6P>4Z9 zQNP(BtE=RA6;1BNy!!gYwjL zMDnQ4ViSW%8;o0%f=ewnJg6Opar^7QbvZ3d-I+f$R%=fZSg~CWw^-VnSg0^qJMC#> z6@aAVtyZiQz=Vps9hJmy>N^4^O@kk3t>U`n3k^&?`zsv2d29+sRqn0ej_(;k@dMv6^ zjpm?Fg9ItEZx$&E?_!M*Cv$-b6q7v!sW@5s2qcT2dn(n%D>6^eAKQqll>JyMbH`vm zwqCa%I^|HKcW8c2xF=5XUb9?b7_-yy!1MOa$A;%qTEp|tKhy9$qMw52udZkb&*!y( z=bNd}Har)prW8DDxWe5)qP$`;h8{G_CLELBVbjM{#Y?b--SJt6CtJA#1Iwj zlkJoLM~U{wC9Gds7hRF<3+tgMyV4}Ar|p*&S#Ph(R4el4qS%Vm!ut4gWJSga>$^UY z71@@s{vuD<^VGZ`nZr&FPA-1@JNq^aYQ_q6>> zyQ+?HHuOyHSnd-J;ext8Q4Zna$SY9~uEh#$&fLNck@LP=b`zH*S^t`xDsdssz2S{5 zGM&WBZrgurW}i6!twZ#(ng7LAe!uUj z0OZ<0a{#&hY=yXD08&qJK_9IE?Z#AdVkj^z`lM!NQ*Z4fNo_x?|9Tb9=T; z4{8S;iylm=>S#LK)!&}8S5N2b8EQK3Eo?y#Mm4?I(f@tW9zA%EC&x(-zO6qda$!Yn zl*@i!rMrczUdJuC>R)7t;!n|o{{wyB4T>(r@r7GzI^w6}d@?6w#Q9`qD1JH+Srp}` zU!)n~iP?43mKH*!(LBX|IxKaQTjoe=+DDBjOWhmxIp&sWtdT^&G1Ju%kPXk2XC~)D z_Em3XSB}f}S{v-mHwxtFr12i>bMeeuPkDb?ZHnN}pvaDqaj8l-Xz)(KS8PxS4cx7% zWP66MNXh_8i#ab(4I8RaVY?9vn!aJ#2EO4(d;^Wlxssk871sZ2_+i{Pijri@ofFfG z3_T>B=OH_f)IK~|VZ9HpR`%ij;CcoAC&(_J+HQoqTIxlYdt6?k17B2CJN6P?u9)KH zUZS79mxS`J-u`*IT05h?teto-(a(M;i#E(=k6hg&23=!aww!cOCrKRpY-AE%4t_HHUHh@YnCOi~o3XocK@kJKw~9 z_1CWd4fD6V`WW+fN7uIJuW-t-=I{5#>`l;3ua z<5wjGiQ-o;bokX|>2cYY7q+DcikD|v>__?OOJICIElb^*g;1lo{U|zpd+B-H9huIb z{O+O=k&U|YgI&Aq)Rim4Rk!5G7sHK7$H(dh)^r40S{ABk&Fc1iOT*T4sS37cT>@;y z$wK)WHN;rm_x_q-VQBrFuMm|7QNjKTnOp*QCF;fUjS1<9mm%Kfc%@ ze2qwrgRitGd}TZE^)Quzk?d~>Ul&l#wmT{K%AVN|XlV^!$0b1bdgjKJIgJ-pnK5`&j>Ux?XX9E3EDJKwwg zW$yE>0j8P##Yl;xFOua&ne$@)UsMNV+T0>1cnwBc+2@rLR+Bj|iE8#U$qHl~e|2)5 z$N8&=Gn+itPZqutEA55_ok))B{IHj_NsE0Z~y&Tc6|M>-hbpy1V`x_?4Vzj{#3FCB?y0oc^`8 ztZ72q*1vwS>e%zyhJWZ^cj@^oNmTRMe`t&O9M$w?ORNfBJ3^+pUSFKF` zj(?a-qPD4k?F3&c?{kqfPuX!(}7pN(-E6z&6UCmJu$iO^e^pHyU|7rGgGwU4z!! zN*q`2r&=73b3zrd+p%zA>`nPORRja(p=)p~S}nx!!_V-Qe`-9a#BupF41vl=lyErX zzK%)ah5wF8-rMZqmhu(Vl6SI5-d7*5}Kzdrnw;7fo4$Z7Ij3ybfX-oJV8*9V*SZ(33M+sR?sKBYSA zqf=WfTL<)aDb?%?Xj$qSOCJE_+j6P7UTdPpW+_cn1(g)&D@~NvLACNyYo>gPb8XOD zM_}Dy=#KnO~X_{s5 z!k4Hi?+!+{5D@UGi7Yv9c5pV{i+C(5c|HE+UU~VUBMOR*Ws7+O(MG4F$h*a#z*GG` zz7u;)?GY$<#j}7ra+%86DE}jM;_1sc=*#VCs`J=jd(pmS1g(G2?1BU~I!J#tsc~XO z@g0X&_DIlcu*R`%D%unMfJn-zwBmfnYk~^2DmeZ-?xYF(+~{}w5qLrsT!33df&L7~ z1*AZCzl!_xz6!4>$nkuEK0*uQqd-UsJVvxz2w^~L9Ji3der1bPtP{tR)apyGJ-jmJ z7J_?)_9PXz5Z!TcBt4rl9e9V-{6)Ttc~Pou{XLH3)D4FZiX*8}{tplu-{ON*UE7T_ zL9uoUErlK63+$7Z3IR3BS1Y_nR_E2B#22}iIdxxD1Wo`$3rLO7!{Jl&Iyiy_f@_9%JWRT&goZAPi+AhAwfdL^YjGOBIET?b`>`rXWDC(J8fJJ9+~t1fWLm` z&l-h-O~2%lh$B&Cn!f1^*ns8V7k~ZlKedlQ#bg5ypks_!UkDE{i#=E*;7I^?2tB?M z6spYFAJdGW!M6Bo>0ym`&%4*tBCHyEpLPw`2-5`}rHHCwLmj_~CLsV+M_z6oEl zg2d5Rx(d`dJhI&c1i9tRiwNE=-A`5X0;`P*k|$=o*}j*Av=uceQR5FE!vCsLsuF8YHy zY3q2nXjv~&`^PuppD%vyGb6eme$gMB@y~G7FLKAhhu@$3dEKKz96In9p7dE9zbujX z5ZNLVvz)b3O?BWsD`4$xmt_`JIz+#P%BqN(b`p(C^_gr2B#t2r2bNK_y(1}l;Zhe% zh?$$15WYmtNn{`fTqW*OQnmn2=~=pVC_(MW;72r^rY{;!Ga~H^C!D3e1 z0iv{)YeH)d_|Y280T&-okl6XG798;5zAdy|bEwcZ2RuwwvYf&x(@ z8UStF?*zbck&N@eY-S+%zhbHbq-`qy1g!HM2~sKlnhXT*{1yPe zpO&SrvGlJBz@r<)qg#HAia&5)@6=X1e_X>gd~23sTqj^$ZR_4elDTyyKKFs}50DM( z1R7misb^pRb-ZJDCwtul1)x{xHsMKk+AG}(_AUkD(`b&UiF(VC1Y$mu-QQAFdx`gM z)>xWdsvC>*64(2X)Rt})YpZEX_lYWewuJd>-%Gqv0XU&{n!Lo{tr9F=Z~xDS3cmB% zE*2MSYpcDZm%uk(;c#DELZlkS2;tG6g{e`&erj2!W zZHTENa$EKr{v{u+VqQWPQOptSwv#`=J~9cvSIJlPC%9K)y!(Xh1`qD#I+TH^Akpdu z_#Tl*S+%}J5UfUHKxmCT&gDTZKX%#qe@#j-)}&mMMP7^-ME~J6)|~R!2YV%06L$rz z1zWAsH9@O%Wzb!^zqGTv^pH{hQvne70)w9u`|4c-6>pY!4e#y}uX#!tRVxmb_M(~H zC1y&PpX|_?#;L)D#Ki5+R%nrr_}wL*>JQTp$E$tD%Jn5al3o~Vwl!9}H+ikv$RhCQ zcJgf;R*?Zbt{s4d8Cq0vFx;uJp0prI5?zwGsEv)A17)>I`y|Bx-MxvrerxO2SO!eei22>644BXTicv0cgN-%mS3l4z z!AHi1H7R@8K~`dT>q^XYpSroDG=rfV#xC8WK<%f zXs4BUT;vE?LrB!R@Gwu=(WBw6T&m5xM&TQcwcg6#FXpWb@RpM5eQA}UMaG)YBJwCK zDj^-fxMcnY(Q9q>G_EIMB8eagTNvPGa*>bFq^Tql2uRdvdRu;mj8Nl7KU1);FV}qW z0~K!y5^!QEDqbzzClD!0@~kD#Iy^-BskuoB_OPA_q(jq@#~;cTQ1dTYFHkK}=UU36 zLjU8|!)RF$gve(d)KPl8E}Rx+g2M9yfh<0#XQ3T8Im?u zOv@glAdulZ|6|!o2~* z;5apqXhy9vCi_T9^?su1HXaRUIqR&3^T%NBTEW>K_f`cWUSq_*=<^YgZmFzIPoyZ( zy(#PhAgmYE*L$rm-MeP@0^Ihcu~>0nS#yM8lYwFSJCSJ+-C4-u!-SQ*JHxBb=XRS({owSM+a(c#U%2mS&mF3wdQp{MRe*=-e zge5eYkTCl!zjc4M2-symCe(Rq?TA65OgX;_m=XxlnJgzxAnz$QaQ^rbm0(b|FEM<1 z*^$K3*91bMZAfZR0f$k7HU&U5Y#0NA*?9^Kt zE;l!ix6IEF&tzor*CT)^65FTToIaDIkAU@c4={3g1m46DKOysVp`wM&PZ z4Mv6(2HZ!(KKz+M_(>iT@-h?Ti3av0;;Mork83-)Ju)`YU5ysg@G>zgUkT8E>qF4m zMj-r+ko)!0zvAS}hEcHktM=QM>oJsx77e%{caMZIZqz-nHuGAe{P)~`kuEZzjAyDR zGCGmgNN%#aO1&DovjI?s{>WO`9v?nOYcSjcqW@=F~byS2{znE zZF!Ai#k7H7#WT{Iup$wtB`XQ(tisuo(bTD|9||+FzXa2UVhu)LsSsh=N8^LmholKn z+yL|Piv1v&HxxrKgpc+S{NL1khaY?>d|@#Uh3)hQ0X5+h!F`)vlqo|wSe^{Y z-N5cxg`x^FLXm7w$i2lVUnV20wuAa2GZR%lur)H6yBWxaw6d>{hEI}Vl@ZM|RyQ)L zl5n`r4Otz5)pfUz3_{H7KRl6cCxc!hA+U?}q0jI_vUbhxS|T*e^)d|}4wO|hklT1` z=`TcSx|lZ$+Nk7=6j5q`F|HV&XN&{+@>R&hRw?`%CmK) z(>!Z4c!xZR_>BPk%dlZac`6SF?rngnsExvMY8?wfk^sFU28MB`L;e zT~b4h@HwlJDt%LHd^a&3zMG8Ib<`>`iHcRghk%rg^3xbAK+33?zy&=b!b>D&^IJxO z|XsXO26`Oz=nohOp6I z<=jFVFmiksF@i61)X~fXR9ZvYs)F4bLhYR+G;XbBZh_7cVQ?eYb_!Y{m|OZ`N|=f|2DXzhmDNf9vIgjr z#_X>LBfeU@nm5C#|FmkKtafBqyDW0-XgVH1& zl3p%B&ceEgK}DD!=;|KY^IRKeOo6t>=__<}pifI`%d;0#QsW@G3Rp-;G>mp`lil@h zq_Yf{;zZE$YY6)U1=JjRLa{#?R2?nVp5mVwisOtkkdPeCdXpNA}(hXia? zDP*?V*Is(Gu_48NB$5I*&Q@h(HK=GpCUPj?@t#C{Zr)$W5dHOLPnOPdYSz>1toC~< z43k}aB(7hB=~q#E{i?a-C|{rw2Ts)ymk2^V>1F%q-K1xi2u!hu>V6#0qU2?$atm{R z@#0|#KI@%;WkZg31g(8Wc{{{VuZzCovBbu^?PK%A(a0^if{;h zvwVbC`O0VcdU>k%cgFrY>om#P=gagC8(vr1+w#^WBP3OECnp$5uG=SA(PJ&h_C)-R zAuE(QxC+l0FH|;*BfHX@og?$PiK;)^7jAGcftnc`1=m zjSbz9?e9^!+at3RNqV&qF6$ts*wQpqN&94#M8+jD$DUP*Lj5006TOR3E)28uirzI2 z-f>xE_!pEEt92dry)kt#5o78^vZ~9HKRNOTH-Is9*nY><<(a+s$g!DxelNdk7ZHre zikaq(ByTv(aM=gH?n>LCOv%ib#R%W8XlZm%{bsV^F-y~AlrUij>ymXpdTnHcw!y9o zQ4UyD5|=0ix)Gk?L(CvRh1$mvIGNFH-B_Gh$O9$`pI$88X`=Ve4N+Pz4yYm$y^_-PAu(I z1~Tv-ZCpooLf2>VL1)bB2NmP1q8}Uky6{=iq1xAv!C3r4_6q5XQ7$1R<6j_1ShzUd zHf##51zdHOM-5Uqy>VowvD%YXwkL5wK6#tU)$sc*Rsm|IRMXRqThhTuas_`A%IaJ| zku@^2F~3(M+*W>1b7ZF1T{rtgYjnRz@+(rty>52bvUP{W>0s36K0FFoH{ZxRXvZKTSjsf88Wc>=@9N?YA4#^q3!-1Gat42j}YXnxjct4Pu zlYuh@3q_=Z0v_Rj&pOo*f2D$9{W^z-j5z4+oSX=QOM+Vzbj-mz5_P$DoI#?Ow(6JG zHKZ=S6SN-=N2`!FCr`acwQn%8AWUAX$JS$Y@|ejcgNh!>Op7ExBVA!U(ik1jwsWo z`iVbhEPV;AFNVkIB2_oxTS+B6IT)GR=-+Ppjg>V)W928rGJ#nNSZ{?~9|c_>1gx)- zcKriMs`!zoaaTpv!cGC}?*Z!*?R%nc^;ADd+xE8l?Kg`45pe$_oDIes9B}WRbuui! zf8fsL#_HsgNIO^Qs_b@>zwu=r&HPBP=;VO)55H)24~MKT0`3h)nf4C2GkdPov|f=H zFY*`_HH>S}{q?Ltp-8uj;G9G5BeVGW4WWUx@?}g)at0h~Ws;||TLuDYfFz+G23<$@ z32=!2#aF5)ZvnuKW3uP6)`tWK9t^nOnstt3ZFRpr>jwm92@ZrY6!@XNZXnQ%$}~?U zvH($<+_f`5Y)G1$>UTHHe4-)1X;!Y^dM)7oXjTq63WEbTD7}TlAC90u2)^`ZL}j-m z)t^^qekkJET!z-~`h@z%(i2(bY7~Oj&d|VJ!GVXvp%Ac=osFu4y>%Gvx4}#zV*FS;1gCdtt4!J&eAonn-dan}O zgazaVB7=qm+@H)U@>>AcN3$;l|1+O-9pDsi4F#N}q2A?pe>LkwHGg~$ekTlnWw$;I zhTpwY;O*^z``>fcGx{_)^9jhG)-VuO7EM_kcct-HX49gJw?~wHl-uU2+b4aWt5;pJ z2$+n)bXj6S2iwLkwa5@65NDsK*4sxcxuA=j$Xi%)d{VQ;COQB?)qI@<4k}mfnEq(#z6IPs20g(Q5q#C2be$FJLu*4mItUHi8e$1u9YQ1?i@OInX!bcpk>nFYEFn?@gJ7fbVSDS9 z(*32hTCaqD)(E0Y{CWlPef#y=i}eb2{aYLBwVNQd43EZWfySy3!8uv4`ilo6EIjNm zsMXG@Wl3hSZdtwJXYwJcou<{>5E}T2TD>3Z)ypysxxR2#fUMr56mLk2HVV6Tjx6Dz zTEZXC9?tp=S?ksM6*ImD>K`~uxKD}Di?-MA*Rl2cw6L*@0VdXQZX6e)7INNb#7@Mx z9xxj4rXHo}AGi+50pSDm>cLSs{m@czmecv+&!|VjhCM?JK;%UB%V8ZPNWQx)&I$H} z`h%pY${$oZf*iKF_8{04C%t_ixjP8^d0K7$AXN#rdICb7MC*gsmf&QbG|qm`h#Dh# zJ&#nO7|zLSM%MHER?7dI0o@tAUb-_B5-%gUf{vhrmLPWf+?QvTj(uKU=iWKn|B`q- z#?v3a<;!4zt!}C0-WFtCz#lKlym!-tvv+OtM>sL;h|b;7;Np?tek+>4R4~_2|KKh5 z>^)s&bo12cHp7yBCeIwtmrX^Mnw~Wdjhn_&;%Xx~`UaR&*YdQAqmE-6$L_q!se8<+ z?{jI_=E2}4CY03XeV&kLjX?8r!5c{#3Giv9NN$%+wV!`TLh!#{HaD}A-^ee9wqKTl zUJSqCG*`9Z-C!2xqNf!kg@#j{PZ()&I;|=tEXL~%_+l4kJ~z6kxDe=S+$MSerNUF+ zU2LEIa|o~L!c?Sh*8${Z^D>izM!rYs;ZRmFV4`zFLq*QlR~lqHb8(tZI*aL%hn>YI z#{HqZu%@9C=Es0UxAP~WE0bQ@RyE zdog8T@?YdH9MPQ`Kw*tEXd+yU*MJ#GImZFmT&?Z*0av3UCG?D3FEy2s- zFPp`GLbpti{qPhkRiuE$@`f})UeR9%yhb%i(6^W7*QSm>O_-56Y0Gg54I?$w+soe9 zt^kt?r2lu&@4_6uAxyrXqAUj0yd#SvhY_}iOA*oEY7K(cuG|UK*p?@J3mS%hUxkQ!?C&4x5 z5{2a=Pl)vGHw)4@GJ=smiXkC@ah3zV?l+`WV-q7^x3 z`fCfaU@;mw=Q!tF=RDLo=gGOYz%M7WpqP?lGEP^ozlIiWGz)HvzB=|!c6|H~+s}r2 zhL;Wpy9!!8TcOn(ACNqT&CqHxxDL#k;;NREvk8dFW`3?&IJBm4xTao$Q>i03H9zyY ztb&4k5u&znD~eM=0B^1o>;Xbscv<`bK1LSC0<+DEy{QBOrgxNws=uY zn5LR1;InPtQ3jE`8&S}NR4N1p@ES+AZYw*GT9jme5Hk~qx%+f{hxnHm3*J`CH|%_dGE)3$^WibUoty|*EOhw=6u8DnVsOO zj+R#i4c}Km^Ci`d8pVIz zLw8`#g=|8CJM1;wRXWfo-nzTQ?e)F0h?vm5>G!|>AP^Al40x`kc0(5~R&s$%>o z>Oj6(I8`-%1XY(T2!|2g-#X0$sWs%Dh@6*9UC z>_n*_TR^wbkllZsGo?e-o7KvBv$tM3XUZ*e(p)tv7x4vX$rM7)hxat^70Tf*8fsMZ z@;Is z)!-dQkK{U|hgVxf*carj>xS1^U52NTqMl*2G;`xVq7yJHYZj}?StHXabHrdC;Iiy+ zqH)g+m=%t(J|38JT%%bf#X4Fa{V8DYsB#8V47{xugoE@V>8E%6(&%Cs*~UxtVt8UU zZ@V%2HX-;-P1!q(!hIwnK*cg{IBTMa)YlC}5m5`|bchZM;#ReK=8d=Nq)LuR5fIV( z2DhwcY-H}bnVng2AFw;D;VkiLU~)z_oYMShtvv0F6GUXBi`{&@!G5Zf@|@@f%=m$s zeQzOW%ajBoD}@Oe{HD;?Q-7KSrd>e~6T&^sUq7t6dhes0?E8KM<5jzC1=sSAH7d7p z1fl2&gLjA}Ed%#ttXygKO_UAP`c%PyIT1Db@a%+eFDbRf{_saq3WcO+j4X{X0WKh>)K}}$qQ)#OYV;9Nqu*}LI(|N^TY_X~(x_^>$N%2{3Xipizt zEDsM|#j>=`Qp5?bk2-isdV9O98;^So@PD3>lQQCS91;ek{E3G~PP$k9N`IVRkn-0$noAxh&GHlhqgHdTW>w$k0Hew^c_{{v?&+ zJB%gN8*vyk>F@~Y@E6ai-PWZz`W&RYezUa7^wkZ1)10`a@|Ts&v-!)r`3oQ|=k)FQ z@wEWdbXpLA60fSrV%2uJZd;xJNy|NE|A09ujU&TjPRb0KbFvg^2raiCa=>J+Ff=z5 zGQ(o`uiqy|Xm)pZYR-u>e7~3;one!!4rdsqoC;4$vG@T~ym=f)+k*o3`e)S)&sMZ0 z%F!-L?*ulgFRx;jHV4ci^n4qY1J*!Lhivpr>ZW+x}i5hx$G zUqN{lk3e--sbA^q_$5$&H9rN)<#z)N^qt`O8wzez=t_Zh2O2SSOrrxSpS0W(_p>11z5k_PW%9v1r5?)+%DZyAniI1 zkk&J_TPnrRP&`PB^mGRW?9=J2_;PeoNb)Uu>o+IvHhp`%rtkflinY1)+G|$4z!|Wv z;`D5ue26I&BTcA=2$-CAbL`=;ISz0*0wx8)klO(071R}g-Xj3LiXSxlv~E@&0nrco z%v9hZEyVtOA5lA+Ao@Xj(?*T>o;uXns3F=YUqnazks&UWse-RU19uC)Qo=^cx@m}a zMu9EEB?e}c?T&0IbC(xg_YD+lcaUV=Uq%7@>(y#T=b)~KJFd51>>^B5(C{6UF7E4% z_YF+W+Xrf)@mwER3s!zCMG6qNpG(A81> z(P9}Qogc;w?SY~9n#0%~$_&iQ;DBz=%koyvgXqm0#C1%E#P8w!W`^b!bByPh&M`M= zKD$`WAYZm01`9o{+Mb}fH zG}PVD#fNB3)aY1~3NoKNU#WcR(fCF#7_6VfG(Vf|#1)R_C%;|I&*)rIsL|kN`*X5b z!P(^nt;vk)l;w0R#aQY?2nxDCFv^E>0Si1PJ1O9Lm5X4u>|W*qkp%wN9J|5{J?b?V z{8^Lh2krH<8&%j17ZqzNM5DrZy-2u5SxmwasKr#WJZKILnsb@Vxz2K$yPIp4(_EI* z+yfl3&WjgO>tPB~RCwl1G>uMSzu(2dQ6{WNu7Cjl-!T_1E3Z3Y`BGD&R=^M_kjMu`FM3 zdSqM|bbh??Z))kQH}23S6a{PbMrY}Z87-1>fRbwI$6hRGJd!?M-q)4)sTb{(DPtF8 zVpPjf6^x8yC(KCbsp4sMdZ3fAqruZUh&;bv*?biUrirWl5v^*jHb>qIGG{wQfH*}b z#5fc^EKC$!Z4-y$>`G1P+`PLW^Vm3P=61zY`aSwd#oUJb1A%nVe(Lv1+yko8SMfX; zNjbu)p$EUEJiqsG@?+99=g(zwCkv+lircrC?{0HSXHfn>ozgFEqN|TS;qV5$PPAQW zzjS_TCwilK0}?1%(ha($==fdjb?GgdlP*Qlw{X?=)QbWUtglr}^8V&i9~(=-@R9T} z(!o^SLBaZ}Z;y16v1IBF`OT*UYtpgX7_Zd92ltI`Zv~8q^)2`K`gYZ^`nI-&zTLV? z51zbx7hM5F7vihA7ek~<{pNKYCS-`(*v>@(8`}@FT!7ma%jI`8ribn)T(v!P%~s8G zQcRYsh{4Y8WxZ~)q+dH%YD!taazR)fRA#$GAyHj=0a>XMeIgIn?Kzs|0P#Jt4vWd zcdbz#;WtWp_J=SgBh+4fb}n!xyfZh5oM>8AwB{a(`f4(TL4I=+89~l@syLfl#Z;Q< zl8Zc->#+H}QnUDv^1-4_skgHm^|sY4sqbExJR9eI<)20VXvC~M?fE!LG+IWFM5Bi% zgConFfqrBLnydm8SqqbAZg1#@@UI%&NxWwdNvFNm(K7Y61miA0a;l76Wb7)xWyuHH zf4)-W>?$Q^Ka5~5_y{?BZ8MytlbmWfdvt4z^yrOIjP$=;2}aU#HX8t{WQHe02o<8% z7^#Jv9Z8uhwFD9r908dq(vHwRT|N%}G=CZo(YS@A-1 zbhyE6t;7`;^^xlt=Bxkg5G;xC<+TbOS^80a32=Z@Md*mjWfu)vCb{fxh|6Wi_uoT< zTJX4&D}f9pOCO6;MS1E;Qc1e3`x{TGlpQJk;B|EPkAG5vhp6UL7QBNZ5!HN3m$(2UnRS{ZoG;OG1gWeOL^wGK+XGm z6x4*cjmY_d`juX!ex=y@+2#CVBUl5yBXU~x9z2~3(we$w7H1+1Wtqh}{>X5i?@f+1 zzDzf8V7zMF)Qx|pex+FY+2{NUSlb&?aqLdR;~yhjrM~7MDpeb>33!~awaTVcK7DtXKr+ZKe zJ{jPhpTU8=Ge5IzesMxLovSf^Yvg$QlQTp~onI^;NRjc))YCHvc%;0M-$t2fVrz$Yo)KHkz;(7 zTNR;koQbW75+>0|U+}!vNbf=FL?bQ2XS_zbNouW0Okf>eo~-B?-eTtE8GiKs=H;2t zvmDO397DPGb1vo>&-GN!(>dlEJ(PEX-~5T9;^t2j8SSw|kP|mo>C;+Hl&sUgw&~Mu zebd&z4(QWieNz;tR9D-*%%6x;1J!f%&0KvN%1IpVMBb*?x5*}5g475fn8jwyvXAm4 zKyJjt?4O5cSkRmSTYrR8hG3z}88{$+=rw2bBa{PZCodstUk{qV$8_X1O|Llb=Geo5 zyf*y+M@(MJ^+znxF&i04Mh_QA=&}q(5j->!efz9lMvt-_o(9dQM26!eLZW@Q=+4cj z$bNxez+!d3j%&}_TOszeA=dgHU|26-GlbtO)J)c;1#*QZH#Fet6b|e0ME2JB;S?>*|lEJY=9F8(D$QN|LWk_Gzd(?8ljGw#uIgB^iY&}iG2DzqI$GL{d} zlJtdFJE%L(?@xSfCUa&+lrviuw5Ae7oSRw*35l{enhwb551M z%>hX+II9%`pOeKSg}{p`wp`$8$$Eha&$W}TozRq-UgNaZ`ZpcLXImT)!ERj#?Y=Gx zE@UrD_Fu*#-+q)rK+=>{Z{-w&`zLVSx7OF+fuJd8c-GDhPeVfz+G}UZR$q)bcpUV; z3Wh3jXEye*v3=P=p+l})z7w1wMWEC}x?c^cio_?I6Cr^&$|ySAUL^g6@eJb~zm;K3 zV(|K^VVnTRB0r!NY1n>CM-u9$Z*3>BVg{|*LI`n~6lvwk=Y7Av{;5=U)~Z!0)u%1*9#)%xC6 zV^QmS511*G{HiN<#g-EwzH~+h9$qY`^=di2UE_PNX*oIGU3ko1!FpHADbBkq5_-gb zXqFo5EXH@28sDcB$nJE;cTIGBSGG02O|pL^eZn{fxchIS1H4NO@KucNE`igbKKBtd zyt|^qyHN8P4DVL^(6gG)*m`noc+nQOJG_soVpDc8Y->1HGK4Q#MT06fDp`55ZQm>- zRgVhtLYB85DfaRc*f!TwoOicHMjUw7M&P*kz@^~(f=y=8pzZriS=#xqWKp+a{Ky|o zj7(>T-vRK;TzkW<(ZSEAN#(VCy7K0@;tbbz^MpvU1dmE^*UV0}Ua$TzDRyU|RG(_s z+!3uFb9&a^c~_)ReRQ(b)xCXIia9cw&5`Q{R=cWbsk8O^_7C;bYNByRk_-4iV*i}s zv0n9Tw~10lKKV3jTrRS#_*V0pNxVih!a*Z{x=7}b9BRmJ|}^}cFn{CfX?)7pU<@#s9B^?qer>;0nz-_d%%buMx@M{EgOo z>T12--|ib5-j3G$T2-w5^?rEDH(T!=ul9Rau@r3Y?a|TyRtx^M7{2&FUGTT_n(ubO z%X-(W{#c2XS2s*uw?F z9%9Pcwk-zVmrb>wyhTR1nFXuKV;T6a6>sGzdx$;_eKE%HR~>KV@XR}=VRsU5;TJaB zyHpW2iI0VCgvSx_t|PXwvB+T?W5RwsCEm_cyZmR-m8m&K zYhg#Iw{L$^GmHhXK2L;UZ04^O-|zkuW7}uk=8&QBAt0}rG%=b#9MSQ+ho{AC?P?M? zuAlm!z|-7z;OPY=Zv2Pvbn?~T0X*$krQzwZp2vizWva;W!_&%8NAR?Sr}mHsz70H` zN}mO;4)%!lxkGr`O0naBr{?=d;^hx^iG1oC{Bh765HxQ_0W~d-<(>x1J+0PTIc+QV zVY#QpSZ;p5r!dq7=WL0GsEm>*4QPSH9SXcbVJL^=j$x?iev16yhSnHw3j&Iq`henhH0t9WkkZ6hO{>=ChgVw&H%mTtIaED3Pw(~ zAGz^(2D*QZ?+iqnRs%i8+txtuwXYi|16?5I9W6ROp+>h|(J_8>cm*^@RWpW1J@2#zaN#FO2c`J*&yU4U2z58*{iqPl|n5#!I+699G*XOaAqzKxA_)ald6BWRi6Hnl>1-y(91=Brs@#}N?^{o_4O&o;beVM45 za1aV?2-u@J2yuSN3=zoZxdNZJ5KC7J1=C*p=Y(Aiu$N1wN&@Oi5XN>D4j2n&`W@t{ z^bW#5HCgjezUTAUKKPS^jj~nK(K}3Rp?3($%c2ULN#Z^ICLtAJ4BmQ7@aJZGbvGQN z8S+VOK@hjIIN&6<+7SxM*m0m5nYf=(4OpiJA`zK<`)$%d_$}I~A&HAvr>wb|JQK~Y z{a$U$XZ}pd8B+ajZ-3Wa`n27@_R$X)|E_C>*pRmw;M{VlTi2&2oEE!vKt$8ESN5wK7;Ebv z>Q?>Fcq7p!Ra=|Xt=E4QcWaHhwdKLMem$&i-Ste~X`Rx#>xw^7xBl|Gsyh?s;=CmN zk|4_dwSV|6w;pwF-KuW=Xzk+rTnXvA)OdC4w@*|pcjY>_eCk&CxvJAU4RxA7U)@^2 zH*a#+#m+5aC(-=ykE^chy2`mFp>q6dhn`n;un)R!)rlhjoPX_a_a`KDTk8z;2kKVF zfrQ_6&2w&vdyRkXs)oFOb**%6RjFH_4_o}Veyf~YkE>gQKCSw!YqYJOt6Pu8H?Oul ztiA1v#f@EURWUr*zjkKa&zt>gZ}H}JKciB0F?_Xu?d}na)6dX74v+M&t?^aGeh&Aq z{oy$Yhx#~$&-Slf>RBACd#Zo!74IfIc0rw3inoOg|JrLli2W=j4$~!~3!mtiamI@B z=u$%cCYD~-)&hC)5rNvx_D?%EEs$pDHGXkSr%=GWu%YwdH|3PX$zq*Hbw2p=$X0Rm zJ4AzAU6iQ(mefY^(u=u~q&6D5HYvT2B#>Of#-zlAnWu@DQ#waCYm+76t4kz;yvMzp z0Mo`A9K#P8t1qeEiz=E3iHGG=(us=6Dy+Bva_Z5>PwQz^M(U>c1}9U*uK%CooJJi#SL>4f*6l(vKbF`Auh@V3 zolN5^c3FzBTw)m3Wn1Z!7s7TeglN{=<0%SXSquSnlm>q5kb??l5DoqPyz@Wy5lNV> zMUi4)tlnNdo0nifPxCyTxNk3D{2Ur(xSbKu_dJbxYtyBV$OP#Gw0iBjY0zAns8>Px%uwtNL zZN-u%c=NIh>A{E;`+upZ!oJkih-Aj`JBxa|pG^@E0vHAGQ z-w)pzh}=_2N9=pOir*bY({nQf%Yu{p8Y^EH1Peo)QHrzNxJ%%Hd3333+md$^=y>=% z5-B~&`4pJ5iG;(%JLV5bjg8#Jwh=IVRr}tfaUO0X29WXr?%T|LUwLB~kCYUb zJd~M|6c}=29c}FUz0{0#n6NwQ<%AR2Mq=~u$?(^S`~C380rm*s2j|DqhHDyupW=|(Fa(~tW)Zc34qIs+^~PgIne_|P3_XKu|SY=@#RgnhvvtoYTA_O&a~n+evHJhR<*H5dFQG&dOrk(c|nDOjKWYb{uR znGh4KajI!ou--{Ak&@$OKfgs}z9@Sl12!+S7i&QjnOzhBjbJaazDSB*z?XyvTced# z=p3M6svQ{HYP5;Cb44ylI?ubHEB8(bdiHS~o*m)$byFq1|>1tm^AKkp)!@^^)(D zoHk_Rs2mO=^19!deIZevUfyn(y-c)Iulv0@pDn>DsqS9-P3>Yq$^( z=<0V}_Jf#+K!!%e)$|{V>)vhLMbz@ffrrh784bmUwu`VHAW(lJ$uF$kja3puT6M?$ z@~rfR2YDxN)}b!Uu{U|miMPtZRX? zKZx*?|Div~#cv~XG%0ASuV}@b0EbTGC*ZI~c$28YUvF8_Jc;5gZ&&^xEqD?X{=c|W zF_vDdAm$G;YN|c9#k&Br5v~0}3Ud9zGe)U?9QSXiRaMCH3ZGiW7VoYetKMV1&WdQr z*4`pp?dtQA62y5?d`Gt0qc2EGutIySu?>V?-;cMrIFN{ybtEV=KLa|LV(vWJ2e})OWsztEX4i8aSkgullXC0?PJ zO9}hEMa}8T#Al_fqg8C}jS}xJQTL$MDz5laz^Mc#szYy-d8$}*>$D$jlz^l)J+q-R z(`j8W@);z5HF{YJwRcQnFqJJqPmz>hR4C1gD7QB2QLB?y=4DDN_&S!YLpL=}2$qlr zR$-#VT!m0Xk}t!=2LIix=F3h^PX>PcLD%8xPasSMN>zLo=_aPycaG8)Pg);Ot0Tc6 z`8swS7(~r5@qr2s5XqT9;-PfQ3yN9-g|;V*rj`E%KgUd9xBwqz-l&EHl%>9i$J||a+WOWC%m%Wd9C&@1l)&= zvY$XIB=4-NCcuV@vZeeCS_gvz=j7mCF6~v{SqKjxEgcipxo7VHWoDn&-)@Nt@_85bfU55(Qed@#+QGKb*Uq zkNpyZ5wlnNnEu$unm*P_Iq4}Q!AvP1$nM}js1LVNQq`>)a_c@vFA+T{e-UvN&1&1; zhnpeHBpza?vD^=7S=YxBnS%Xz3ijhE*pH`RKb{h2Kc1rP#}_YuGM=2w3<_J*j;ca{ zp$+#!$~zGR=iYq%EYP;tk7II-*pKff34mBq|Np{s@RmX7(ZLihRMbsDF7FcKuDFL(DBu&3Ci?xY`~k z2p^}?pmn6ilL>3}zSq32A6TBQ3bq#lkj8;*bJ=A3BIG>$-BzKsBt8HLT>Q4gL731$ zC-Y1*qGI;QlTH_(?@@LJ67Q&Zje{j#W7(I9#xhYzOMxNLM;F8%4dD?UQRmAOct2Ig z>wed`zsgfdbdAWpb@bRy_XAX5f^R~LJZnql-G)RWdkps469$R-pfJaWcWokIgcyP& z=mrHw?TaC2=e7q%)+^eH|EqI>qQA_GLXoyY2^95p)LXA9vwq*U%=!=fKTYHB_&f$h zn4wyj^_!r`uZlG%7*YRizx8W$p0EJmPHbRv#*5!`FfuwzHVqASiy~#WP?mIYvn6KJ zL!To267}J&!Bq$R#uKVCdo1CepCQUkc$Gly?%o0`o9%7?>YC8-E6N7U{!GYXnUHQz zumH?LWZ`?o&E3B98TA`^q>xue4XXmdnFn{Dyb-3^8j-ovCLRr`>^3ykc|eI)QEu6h zsE?eR85R}+U{XGEqeQ<+eMyS~*4Sbe<$8t{^`ka_%%Xlof9Xg&tN0xi<5isEvlN3v zdW`e%-Uq%t^fM0v=)oN}08q^U^k?L94CTn<@Z&0v)^ElbuE*DUCOg`_88?z${5Ow7 zkD#}=pr|Z3uW5b4cE7d3QND~o-Y=XkyXk9}$!qIhhU#{{h)*rrOUI#7Ov5NO(vqn0?x-O$h;olWPiZB-46P zj{VRVof2vby}bTX(Yutb&l0!frl{V6fB10hmE&am1EeY=RF8Fp_&)-Ek0-+unmArh zN)u0b31m>1SyPxr?+OXkSD4E&lp~MBUs+gOTPT|%c%wwirlu}TSz%RL7q2X2Pzxt> zOsy%LE{%p6pT(-`GEreUW6DWJvvS!A{?-;w*6+B{d55Y?RkLvJv1?O84ZNwsp4BXq zRl$pwiJ6j1=-~zRT|QxS5mZ-UG-TfhRJ+NCdO}B^5*C|f98*Rokx2A;*Y|Y zuX9wSU@lR#7SomcWZ+v=TPW4cvcvj`6tKTS*TyZG>9XhLa}z~au$FUGHg9f1xQi^4 znt_P2NWwLgRGWh$_o>Z6%%$Z)u4SV}SwC8+Ez9Ds%vfz%HYYWnPl^4wwoIZ&=JABB z#PVWLYMP@AiUwOgzp5cqsB?0Bu;mmeG&!*<%VgtGZJF%<6v*(`mJQ{kUyvs^AP|#o zNfx+zS;G~XF7lcK7eM0RgWF`Q5=>}(zQ^f)E2VcI%#J$v_EeQv0}f@Mpby#31P(41 zJd6-`L08_04}2Dz`<~rGFrCPi8NNtC5&_*N+n+D%ngHkOA%z*A*~14<(!-Y}e{$td zp8P46Ka=Ip^pIIv%rTy0G6yj}O6A_%08v6nq$g!a4>w9$31xz?bH$dxd5E0-5rw!B zCFN>})2AT04*8i&N+aS@g}T|jAC}N(8@+tVQ1V3KckukG4B@G+dBku6q+)5yEm=Oo z8uXh`WWk`K$nZx3k%1A1b)-*B~*2;Ww6qm=k@TnP^)k)iEnkKiuGr3qN(!IZD5h<3(qI$y;>qg-M&`6J=%@y>jEty8_$ z4yZg93z@DEo8;AWP0;eLo-eiIKhi5C5aM^eCfd3bc5g9jmx-kWn-N#=37P8Zid0Dp zO)i8^1R853L0`E=J+Cu+k7MtW@u*EzQ%4B=nq&{*YnRSoy4vo`4Ndtcn!yjlMH#MT3!Y9R_?n%5_-aDAl!T$q|{h*@gloL*9RqncC1NJUa?gkHqx}LN&B;oooRM zG_EiEGD(4($Unbx)+*wS3_2f%((_-3fh&EV6U zvp8}rPqNinTF6C>alKMw%sm|y#yC=j^-r)~MpsY9u-#gJ@z`UJb(xus+Q4A1^|s$i zuz-y8-JA)!cizboL!d|cFwPBbY__7yzmE^MYxm0T+6}N%X=Z<`5HsmGNtnr^BnL`f zW0hH$Ji_QPWZh@{^{&gH=?dvGxv#Te8Z+oymTdCOwvV1nlCGSTo8q2kfmySV1=;H< zCH_tcAt#d+yF!i|m03sU=*!UrrkKr?4_!gjF~)z<(zS+-+V%dJC`s{@Pm?=LPbYs?q+1!y~~7(kFko1nY2-Q(z2Me{CMqH zRO8ftW^YmSz{;hZ@*9ysQtmpDDH@0hYCK}!B>SunWPV^43da*0+8Q?o6%Dvon-D0AFYy$raW|#HWPtNg#)aCD(S+2c7r`OA)v$|B3O4S$ImG zaFUzDo)S*TsUes4wtuP`!Wr4w)S#f;=Onj=J+(sK(9?YCVVMZa65i4N_xq}xJffW3 z@|VreO~677VlTQ>@yP_<6o6~NDQh5V<9n_;PrhdrO+|Yr*Y*zGyR~wC7jISHBTsm* z+;sY~;>s0{1!Zi6>g z20=7%hdJQzT(Hd$!A)6`(=-n>70k{Bt>G?1p@LPtx|J|+$lIplNt>L3# zx2G|@w__k0m0`cm1HXAYA9gzhRlxV#1Qj{1D`o2^M z&1@M5`zC#pZ($W3M5@7iZ(G70fk^q-dxlXKf=pS{;@uf6u# zYgtoq3*Y0Yd>I1V=QQ7WMLJn(Igoq=dbg|mJ_Vt1An*AA?j+`%SB2@OI?X@vy38J} zIIm19Rc5b~%5O`SU(sjzKJZ&0^4K^76oaSPiQPR{DRF}xBYlI9S2p;F-UZ?8F!j3y z#5>G0RKFzqOAm{hH@pAyPY=Ru@IzBbD6KGn>dAs7b>I|%g|FI zk|1qb)2qGR@fWOC&(2qSl+gX8@gKc4$!jb~^O0J4m$dw8^IBTqKRF~bw+i^FmS3)l zEXgPIbAf!KDghsfuQA4ouhBE=vjWX|>H|B>6EA<_2VPV~Bq)$##S{dDZ!B|94-3F2 zz~hYn1RP86w7^mM$*sLm6}b#(I6pl!@>Tsi%!B{jM;j7eUdavaR-o?X(6hB+?L1ZFidYs* z9v;`bvG8V6T=kA0l4#$5#BaNnTm1IOOVYlN<+tysBJi6_@f$QrX4l))O?WN55OVGb z-&B)((N}kSXS+VLfG9{b_~_q1vBA%(A`4xiyYp3xS=5_WU~aVTqIxepi9Zr8{>b+F zidUI;%lpR2&)o2D-EKj8!Y4O;xGDmq)7zc>$?Z-K8LIsX%GP+XOh(0J2uPpHY?W+4 z;%-PlAq!zCG$mjE2>OElXG6O$2Chpm!0cWOFtslRs9R<+fH(Qw-U7Xw0nSxL?kbA) z6AoC0sQd_evc@NGgyt{~%)?1!Rhs^ErFESc%cN5$!J|ar!D_Xy%v}9~f(NsN~a35bJAE(A9(qoiNwDTHUllQ->&3l*I2inwrSfG*K-ahr$*Th|y=Kgh`YOa&7CG^+- zvF?EEzVz1wy~#32SWQ}%OYw-BjCe!Kn0fRw_g$)}P*GhU_%1*n0?jvx`hQaulvizj zO?`7A>i^Nk|wzQ54;KA~mP){(eGU zNo~uh&6jVw(rO!5s@T&RUhXiDJ}2GlTk%c6Kb;=*+64X9rPJ@8fJG3Gs>4hzdzMgCU=^4GS~J^vpun0Ah_|2pXh5Xk{YFuePK%2zIxR}m0R2V=3pGf& zN`f#|It_0=xx~atdel}tp!56SFY}B=RMSzOkP6FtNQFD=EvU{^E$bx}%GAx2R8X<( zm?}ZD%!tpi-hd^T5tBKz7vQ3gvG7fwqEp{Z(T;SnYzDT?rG8^qi@r3p%xg2Uwti0{ z5N18bAvh4T*qP2e{A~*P8@k;~KuTY(x@}jt2lCf#Ow9F^cGh1`l6!x|m%~!0XUvO9 z`+9qPE2~dK#f3LA#p%=B+YH^Ap*v##;`$8A&WV*ILtF zJHPw2U2~$BoME%|%BGyY-l9T^u>`BFIiFPUm~d~)FrLB%7zc9Q&JL$z?$XvpLouHF z!~Ol?DXfl9aYf&UgpKE9D@d7n-)@I3a&?B=I4XiK#Fbh{=+g0_TG39ybvDc_ZsRGO zZClCp#@^z!`}odeR@_=cW=5c1{>+g-m!RYZvglguMiTZ`{lY;Q&R<}%&7wV6amD(t z+Y`$GdOv$t>trkA0`lzSA>muNPNPcX);?Hoza|KLKZnKq3jX;lZ25 zM4%S560;rUl`oWH{S)~BAEnl_WRY7ys~e^)X#iXW;$v<9cG(Xm);2imcKbnh>1Kg< zt3S*Na3z*dkiw^WyWQa`8GIp>YQ-|N5EXSy3TCkNq zP==JiRZDQ?b1&(qKpx|~>WVDZewKVWawSkL7pQJ!+nmE|-wDTiM(wbmI#of{j*BfF zEC;IeOrQ#AyO#+SXf2h&Z?qXchxB7O{RmD&nBbLInJICK)u;7wm9E$@>$carEz$h+ zam10jzm=t&;l4=O*=o2!#qmbGnpbmg#b6Pzug=(XX=|FS5)2Cd(BH90r=}7BzXbP= zc0*J7>qjD@UkuLn8f*74%!qY?K=b*~lKC2OZ+f}Ye8~J(7HVIz+-XJz&K50qy|?tG zz+XhceCeQ=v$vVeT?1^fUy1rfVE`eYWMEYUmj;cGYu}eoYF}q}`<&7~_sQ+MrsLz= zSAkTN_Wf(;XKCNet5wL!0t|6t0PzyxA@bD~_gL^dOW>z9tJQPkt_Jiqtw{o&ub1^> zY39#POM&rA;-$rU_hRMc_oys6d&BCG=A(30V448+H{zf4kk{CtN}&ag9Cxvd>C>Fy zg$}cj4!|}Tbx>TK<}h`+&Ac;e^)HL-sJPb1%B6(@v1fpSO3SD*FX2J=(e&}la5{a= zfj*W}pU}sY^_}!jy4F4{)wQI<)r&vv3j^zfLLL*yKbmOa^*g}8e|;i_^d*19UKY79 zvq$@?aq}@%<03PvrDOEU+|*0W|#+Y-;9qh~s)ertwl} zd44Vq9SdA^R>%Vyks*QkoA^0xQu2fTv3``2ACa%FT#3qHt*0}+SMsA4lT?ee+rPe; zo<*kYGJj)vFbCLSw?~Nns^^4!TD>H2Om%i-;9_~{aWAy~XMz0h5(30c8)Lsz+ej4f zQ$|V4KA9A*sd;8%xJtH{@v0|2p7~DS_&EAS;p0~~S@>AK?Gy1)O_9%nkG|#kyUpqR zO7OKMoe5!HBK&Z=xLEh}jqKXdiyxFQPw)e{D0s^fChN9>i~sKChL05HA3NSm@6kRP zZ@RkWxl5WDP~mraxNly#yRRm8k2iP5tR@bVCVr~%CiF&rXjz#pcn&)6#wLx0?5v^> zhoT3!bAkH%B`(5Q=khm(NkA_#^un;CkVR)nrhuP}qcDut)2(HH3oMFe=y`@-EIz7neQdnb8`6vN$Q`X4LnZdsAK@Oiku_FY zQ!LzC96{<=W&)QHpp%0 zc|m3mx>phf7;JHvQtc^itJk^3mTH%5JewMEH0TX?tQgWSIG9pAUi5|pj7Bs#H>ro( z+Nu?<(5oXu2m0eXpnc~8B}imdUn2bajV+dbqcwHW6LcJ{c^fAc##K(;xC$pD(l7I8 zqU7JPcb4vwY?WE-pbgo|#O@5`HpBAz8q}gP@=oaas-T;OEQ+`5#IHW7iuwwQ<)H^o z=aG9#mM@Ywg)_f+Y>4W_hGsqN%je6~IXy>ivgP%vJi$n4bAco*f6-7`vM~hbij+%PDzES3K`d_V`=EZJfUX^iIwY&7?AQ~2%)13{=FerZw z>Zo+^r;I?Rf7mPTV0!5@TJr$RPx44+Uu6W@NPBcpR63))z-<&Of221-uM~ymDW$D{ zbx=K;Qh8CR#Aa~_f#W4hwt|&iwB-xGJnJ7DX<*4>-v6GkcDY>$p z*N4LjFZ=DS@|evMs@Nd8C&i2{i9&R5hu7W(S+d9JfmVB`A$8<>`Qs+KfhvymAs7EU zg>f`w3**I#KoL6S+>>+mB_pJj# zHc#m`w^lBoAkYJS^T|GF0amNeE@1GnC4q;zIex>jm7d~w3R!vE-m+*a3QZjqnu3aa zLQ`)Sd7&vqP`sKVsG@Fy>ewiZBUDwoH+Xe7J?)a~Nl@GlzSlZR%rE+=&Gt5*F{R+g z`jPj?Wdw_;@)PK3Q5sb9MIVLQ$toeP48;Q0bcps1&jd98W*Kby0OnHRYJjeeS43zU+e?m!{ zHWLF1IBC`X@GP$Y)y^9GE*SB-;0&vl;`HYw7Vkb6ByIXO1=S9q+6$;>3Q&bHsk25O zvr7q@bTEQMG2sA4U`eEb6cGD_pS5)si7BE|0TD?lJu;rRIsqkmg|W-*(qY13bk=y9 zw+Gnvl$4j!5G5|3)0$tm#7jb4rayUF$rruAC>Gz%-O#c~lvk9D)GZnLH*T`=kXy!|ZehszR=Y?< z3}0In84329p9x$-v8#kz^sH{o1y7f|mOPZZmN?uTa9r9N%UsR)nKJc2ag{=Gcx@$Q z;@ouhwft==QJ@CPdP*}xzgK(Q1=#SEMPJ^ci)HItEZ$C8E687uvKhzPsX|+IF@Tw| zpEztW33Sz}+uJqQR2S4>48RSlyr4#_e;&V07X8X zJy|(t6VCM3iP*=*!YLn*_~^&;MmyRJ?%eTCJjnw?Fl(ccrD-9rp@rZ|x!b&+DpOiW zayI(e>N_8;CRJZKIz}J$eFVQM9Y^1AHjVH{mfxTzwdj|5GdeUXJ4*DolOWSy8K-=RVdQ6oEpE!1TafPg3wWqI*VU#QHPr;~q{ zv^vJXsY{g7JC;Mh%~WSJ6PO>pJrq`aGCc6-oWzRK^S3DLf;;k!ccSB=1l212D|{K_ zg-uO`z9$*yEl6lh;tXq*xtO-J)3@M|@IbGsemft!Nb1Kop0$c(EdWBUhE_yoPo~~> z!?n&UP}SV~8kP+i6!CUy%}c1(XV}UAXgJ-*Rn-cddg<=^^L>V->C5l-=Vm^0Kl7;& z^Qp7q?a6|R%tSw?zoz18X z7if{_n5Ho0C-sdU+-2EUS?^8y=UDniLMPVO_oSDCw`9KYJR}3X9M>aLju0N}kS8(` zn)!CNGC2#)JW&8V667Kv)tdgh2e~}R6-FIzWclg-$ef`79&=s!NRFFf79k%D=?gW! z0mEwdDkMB1BRxbKfv(j!R!O$Wv=)ZFVylz*qbNBGVH9NB9?3pfh$5wUAEvw zV6pa1A(!ppVGB8l74(dsvQErVc)`CDEdy&_!;7NF{OLzRCXWm8yCYZSXiaCyLuvHX zi)mmdQU^*Ic9yF78NT6=ss~vmgx;R^8iTE?q3k{tO4;HzG9FKm$}Z+;gCbXTvI3?x zFH_XgU(LA(%bZ(5l1DQ49))TI#SBjFZ=Fhtcj)CF=;a($j@PWBi(bGzRRJk>2QDrL&B{6O--Zw`-BEw7{9>0|$P}s?#>>DZhk)(&>6g`Z%o$q6j zPp5}>d(wm1lO86g)5Ep|J?#8=dU)!4iXN`ykfev_fs`x|O7MWRP71cS#j@S(1#OAfEU;YdPktgQo90)F@cCrNk!w&`Iy)n~pJYMfG+65)wk>`D&By**pWE$i) zD_hjT1WJT@YU`3HndbCICS&3HIF!8LwZEJ|32sT-%pbpHp#;4tZ9=JLJ}G=8{WXji ze8xLW-x#z4^?-0sxsi9DP?K}arblG=V!*>(h}}}+AQJCl`EYh4Yu*L6`l}4>NSkbM z3{E!oKvD#+<6;0C+qQ-CzAGe=7+lcXuHB@q#q?&gG`sZs>6Q0>M=3$Q=|{9Hq=)&; zpiCQ1K934;amRl&eb0jT&jVyxOdfG~n8Ub7d+&vK^3VOCIzu)-nE6(DYcIs3a%|Q>Y7Vskv`)@DtnzXn0LiWY06@R2v;cIws_bI{ zG)oovQ~+u`etrFQwSkM(adF@)a=f87;8e%O!Ltr&-)PmUvYyHu%of?K9UR`}&L(dC zlJia5%Vb$dpS7-b2>tw?54eol&wideUqJPdeYs7Al|1p%=T^AqW!-q!7nUGv#|V6g z#qFRxk$?N!ka^t03y8povZA0hoeL$E{;`O^TIdW#RpAzjdc!|0d{`!HnHW^*e8Ana|baGnYL7Rmle5<&1V0X z;_=d7$ZqKR!B{=jc(PIvab$F-->4{1CH=QuChtvP!9%W(cSQ4Jm?@lrT0(RN-&|OPm zl|52H#6y;W;P<>?&oBIuiVkmw=SSRT%DRa>ncwU1{2?B{`)-1)ba)<>Gt?Eb0e5tG z)^Zi^@H{35O8#N9=eKNRulNN|U)RpB*lT7#dm>JUZ`02IbD=auRJdF`gFQnJX>&az zWBujaF6T!MY1LV)KV+Bdtiv51*~V)#eQ~zeU(8&^vyzB9hE`-%g7>gzB`;>ZLUFG) zv5j-5c5z$1T`TH5KJsMXtmA?v$dv|5lOw~cWz@#XE3R6YcsP$`!#)!sfYI4(Y+m_dt;pp z?a%P;GPxm!y-pV39&kOJe8bKgdk%zJi$bqzZLd1)?Rw~yY>Ff*jX1Cj-LHk( z2TB{e^v1R_7+;z>MD;!5XgsNzVpU=43)Jn7@*?Z;HuEMauJo%u6ad}uVuUZNrCDba zhc|cq+hS<%wkOn_?ILe>o)-_Y;32%d68cqA9~9RZYwOL83D=QSKh#FDX-U_S#6~ju zvBNy-wMOc$|M^V)_%A6g(P(?9iqU(x-L2G=&CsjR`5bP?NN#Uw|6J zDS^_prtfq9I6sNoBdh8q`rJ92)K>qtRwrKvCc#FTVT24t0ved!FY~nWLLfDftR>O?%eow6PH74l}Yf2ux%#rQyFyrcBQqJM7`YksU8Cv!2cR2pwD zy-;3@I4&~w>@tP<)LX_;bDer`Syp68JeGA=Ze(Fb>05X0Rqu<6UrDnx)im)Q#I8f{ zlzo{@-XMG6xi>IQMTVWpA(m%!_#)HtFzh;fky$Rx!mRJ0_v;z_B)|j=!@63l<%y|I zbh|9Ysndy4f`vD6gUn6dJ_ZA z_}@M?)b@nnPdSD$yE+C{{rB5K9^%cRHOT{H3k(Sk;c#eStUp6H$>#ZApq7!o7_?3@=0m{^py6`s>c$sgu9+ zsv#o!% z40t`KQNlx!tXn&1oHFSpMMD{}y%IK<`P%u|`OtFQveOrTk$vboO#HN_R|LGS+u0oR zu3K|W%rE_hbI|}je7-T!8QsD&(Q*Wwl72wo=MVq7@F9*8aG`SCH*)L0l8QIXB6LNB zwdlwLg%7GXe8uLzjYNGLcWv&XS0xge;K5orX8`=_+`|lpgj`74uOwHx)^wqKw2zv; zOHEDC!$6+bXty@0Z;WZx*4|qvLA|s&t*nD>XT>&L{=p$__GZT1@}t2bW7cSGV^iVJ zrO2ACxHq>&2aVYZ*|)I%KyLi0SV)$?-Quj$(m+uW?Kn*MY6;&!F5i1q*TqCr zfHzvaaw#NpvGIVq`zdOVei^(a8!9V5MqZ1WXwwYXtzC>*16t*d3m(M6)S0Z*J)o`a zK)&{eF1g=!oDALVluR`{x&^zOMyv;HY!+GsO@b~xd=U!s-OhJC+Th9gIxYfQ5ftFo ziaYQWZ+WB=R=(!X^E5mZ9-8#|1sdt^6=5SW|u$;*{`JCPSTD3WcIc(8O zmO8Yi6?|}9X|SAx2PII5l`hL+bch?OjT>`vWd|0s2qYaQs2$d>toYR~qdYfU?!bKj zU+NA!6aooNDv>!gSX@eT?u7&HHajcGrMyw@8qOtzP*Gn%ck2&&w4(AZ{!GRFqG-lyl*N?yDf0Mae0BjjpK%lToJ}RSCGd%YOXn{r z*3MtLPn#8&^QD5-%7;DLtlfP4f+1X0KgiXKa&-n*^IN!jO|HHvMH#BNep9Y*a_A+? zK=${(7-Tc!z+IW%zX*sR`6RAc>UfsV557T+Q#<60DU=-W5r|)16n&BA&`{=AoE-9K zt_m3{b;gHX zG;bjHi4cJ+RkZCP6gf5jllZFEIsl?`h1fK(h#V!ns`xs?p9340I=^|#vihLoF_~Dt z_%~tR^<@q;yr<2d6HLdC;Y9QRnUu3-fvplZ6jsKE?Y(B8ji}0(`@(mzzOT2;WBhKk z@tUXQt}Jh9r{2*|#Fwr%-sl~ZN@VPGYm?iTY z+Ho<@M3|e4_yj}za#@85KOwigVP#wPhu6rGGOJV~fy={$cU1(kVqw$FI&;VsA{VB4De-Xu&ixP*^A9AR(aW2tcSr&L!qIJ=ZTK z)M;hI?PAaWM!w%bOE$jkRMDgQf;m01zOh<3$jEvcja%6(J&;U>KjJy4xmbu} zp|z^8&TlNmtbnn^U07$1+F+?%KN|!$dJc*)azAz8hZ_EKp~;z_<3k+9Sh7kT|616< zQOVId>*U_T`J9Z$%wW@2o!Z41$w+qx9>V<)*XEm z3BD8?#(O^fFz;jpa_}tGn#DBbQD6Bv`*uf7mKj%7VI_7>Lbb}gpoy#&qF(xq2Kh8E z$wJfSn4`ids}==Q>6Epin$d6OQp}8Nw7Z$Inp;Xl*vhL)Ek$FOS9i#(K8nrC$Ka*j z263wM(&q&q(PuZIIO#Nz1=Bixg?rp3fwNPc?yF4j@3DM*eajNP&K2c2J9M4nM0^_I zlW8=F5`39cA6Iy4u18LZLMm8_o|h}cbCeVT=AE*lSxfisRJym) zyFJH~3OBL)25iB-Dy4UKN_!+sC47@UOCbK4g+$bOv{USz@yfF3MFZ44rGkm0=P0se zW)ZZ_@tQ*Z+*rV$TZZ!|$O!LgK)7GYW?N2MIIaIbb^4&pc|H5(tC%Mr;o#$8ExbW~-Tf=E z@TPDDt`oRoq8hK9AN?Pv=mt#56@6k@p8X|}CmLIPQA?VtL}Q!mA^=m0o`a4Ak1;k* z!$HYoy_;gQqSV`0@^+89M-0!xl0e?Xgb0%{WWJd_HYveQ7Ji9#F`-5T_K=T5R2K=; zC$sI6=+*rYn?@NQ@015}tDIYYV^;N;!^r!iDS3b6$+B-rWgn6}aCyzD9^&5LN1;B& z{ngp&;{I~Im$)xBe^4&cFAeCgoskA~ZH9ntn$shl6VVS=LcxqAR>Z;~6QlUBx29Xz z>1)(T0~~c#D?`o`03_9UYouFJ*)7f+8Rr_+IET%YqQtvI@@q|MK;LYC?wncvz6u9l zh~7x)_^@kJ&7s}h(ho1+w8p5>+h16xE29BPhf+iML%+9%@O&yWW*&t*Ma?kJux|fg zlk|Hn{gyQkSqL(B9umXyG$&OWtt^pT(8`7-(U;*bq}%QoODA21K3Yx7=1JUu9#24k zOJ<|m1=qNJ*0{@bRA!*s1vif6&n?A=w0Z5YS5&632|3CAnaID{yAnzpV>C)zfgs8U z>7l#v7IG2Y^zWQtGti2j)#H`O$&<(KftO_2nqCZ?(~GoILw}KleYz=1g@vK)QGZ0*>4zV1b}bwV`4n}No%A5KC}Oi-!s4oKSTcFa>!qq zrYgnP96zEjd9nB6EL-eK^)2}-j!G7j@DYS66%IR>Msgf6f}>g8yOK5gEV=VN>S-c- z#c%CGRH8?yArcuH>>*t8qs^+sV!GBTA44-k9z_>&S4P>juK*G(RuwM!>k%m2>Ew@W z_OV(f<}0yeG5coh z<#XP|=M>EE6chwgFt^NQarFtQ7(in!qI%Q;s;@{@&%|Mx__QB2mz@rbXN?~MsNDE8 z^yip(B`UTy`Qmf?KerBUQ=`jC9n7PH^7VV^8^?i790fQ67=Z^ZJt!?U4c_lDf+UgI zeqk1hKg@Ktpb}4pj}}257Ex6x@c411*lB++>ZwH<-SUiBQ3~GbZ5f!NHI&kdJj|Lc z&Di>4ID80DRw4iKO6X#Eh-k8 z4Pv~AZk96$(H4~y2^-*2Tl7zImL+Gh_^<(aYKw|>djsQ=O{vZs81-#YSu)*#PGgHU z$QfFjEw*d}N~tZjXahRAEw*3-^C?^Gh7C;0Y_V%LXmYrEgG&z6HW10w7V~ZpKY^IO zVW=Fwz9CNzV>XcV#1WcFz{F%GHHA^ODw#EEMbRr7bfgCDhLTm1NtSdE)vvMSxeNcAgNg4FgLhD}pl{ znZnu{>MNA1y@V+^v0J{tUisEQi8ox-VT15&9c78UAhk||nMBrK3<`y3vk0LVu}LDl zOj3LZdvmiO_Feh*{Zb?{aKR*$Nuw<)djtT)Vck^_V97_%Z8aSaX9Rl(X%YJtwW|0! z*vPs!tNJnWvA$=F!?VWNOLn6Q!&9rrXBHWzv9B@Sz_+y(Vvv!EUzxE}H`cD>Dzt;W z&g#tEb%8^ctLKGwWQMjCB*?U_WhrEGJgp7$2Cta>l+IS^3`UapH4kF8)en z0{?7`kK;(8yH74uOjoN_pXqPD_xer{PW18LjrULd& zf(*;^P+NHol3Z*0Um&9H)M`xxI8*00a6S$yYCK-|t($AL=5{2#Hxd!MmU;PBSzjLS zaSN5~WQkdlOM6`n%O=?FtWFj>T?(Z=HP^havN&9Z=A$(&OsnqAEj>#rOF2flt9*Fo zds!)EYhi3YZcIzf70*l2y&HtS`EDWKtrP`gBCZ2Nv_I^TOjX;Qg-B}aXQ_onck z-{{abZj-nCS|SIU6OV(P_9Q`G2PJU&Xd?hk|`lo8= z59LK^XE?2f%c!9bFsFDb*-#72kF=+#6K=}Pm4tkC3)&syAo95$8wkTvpvj9 zCH~?eZFFn6U(#PTU9Yf$B&kg@X$p_5*U0iznQqh;vqCEVe4&4x5SKo@$9)EFC(PTQ z6(lh7&-acZ0|)+IzQ@OX_n#&FA0$ho_!loC-i&M%hz#rh)_de9Wkt*%nUAwT?FVk- zShqhQZ0HzUIP&rlTJv-&<qmsFcI~J{ou{_;&|QVj>X5us{Q}K2fj5rTT2Ltfx)5&k67R3GhTuBuasd5byorm zd5JyJyHq7`S&sVnY5StDyNIqPb!n?N!7CDP(?QmDJ^~8*y3r@SsWrt_4;38cP0*t? zdu91ifOHNgv^_eKqae;@O#0x*quO^V{O;sUqn~xzFWSb{Z-+3~;CI^4{LmaeFm$2fuN^BSH4=M}hQX zX2hRqAHGao{_y-xLJX10vaU5eb7$zdBj{X@z_)SXGdwOIf!4yFw+Wk~8=j)D=Ll-$ z`0ZG2!xev%e+VpVn>`CNSjT6Rm9yagh zadu>4yi9vw^CKSu557{XYd?6>7xvVR*;3XLyju@f%!O&f6;+9NHtt9rIlhk6L+dkZ zvEQ+7sAi zE%1JJ*EO<>6gs#3-LOY1I%gMiuB@$HC=(pLV8ePRMh#|EKicO%RKUq zQBh^zrbis)m|lD?PnS-MI2y!Rqas{U$Es-nG;A^ZePsY^0oLn$s>&a6{6q@L1`7E! z5uEOkbCx;7=JOZ?wMd9+?W3Cly3nt>b~9|x4x`3Jwapp{yJuN(c6r2nzekccU*a0aDb6rS`PXe zTNvb`pAf1x!TaZtn2MjO?{+#78)A~t@bxERI0w$TO= z$1dJz!!8yp+Gv9%VrOr(G4F|;xzXn0Fm$60D_JaeqYXn^EK9|V5(IX5w$T`1kdDOU z7?Z@`Hho}M{=B_{`2ZQm|8uNQKj*V! zJzicFQXbomsO+{J6K^~*xPWOt(f?qBJ5ij|A=vF=lg0*s(ZwriVC=<%+k^)N4$=3> zQ+G0hSRhh*rGQA7!wFHs9f7-z8FMYx$a+ozXmKw9jdN4tQ}adfmrsUJ`P`3Z47j7b zN<^U1DH2U2n~Hxt_I*~R*D!#T?zG~BDZyqX^7dSMII=9m-4a}=m&UD;B;`K?act~4 zo-E0h^pWvJ|AK%@_twut$)8&3Y1$GPYmt%=j@xjw=#d6nrm&N?c)FZp^%?&*gtgcm zZ!g`u=xJ*|gu8^aTtmvVHP4BtGb3#owsFg=7Ma~5*@H;#s6W?J608)X+?`9J&ST=W zw?+v^W3Tzhzu6ci`@LzuNNcU>89t*M*Hnu4{!E%%=?OIeHxi+KpAN9q=%)@^v@B0j> zKUDsa+S>lacuDFSOEkT-b5Z{|!SmYlO8>Fw6=Tz=j?mG9C70j@HF$OgL)s>*U1OKY zcH)X}vEjSGZ&Z54M=95BY;&_A#bEh#xADGgi_uohK@Xx!eu7sdy7c@F4y^ow?ZeHY z#<{enRUAAZTyy|E^gi)Tr1={+BJwtf#@0Q*iIg*dI~w%H%U6i00|~hzcqRT)$Up)* zpf|B~t-CuH%k)G7^_&+eKcU`J(JFQ0NnI7PyI$J51nc41%UtnIdg+Uc zey9*~7Si8Sa$_Z-V>mNBJ43A}*#D)i%;Hivz=v8DSBjqTK|&c6l!k)~-QgRzdC*Y! z!2$=h?}$xElq8xc?Zq3)e-HbS9QUvbFV$vk^1W2@tN78wRtF7VNH-|EK0GO z7D#&ACoRi%_lqD?{h0!8Lfr8@BG<8vooC*F!Yq8_DiintV|L$TRMs2%bw-YN>CsHMhUJ?^PO zg*E>^-+|s+fjV1JM`y#10oK{huzNr*oaU-9ZiJzC`0f9!FeZVz%M0b@tC`Fl?Y6tW zu6p?wp=PW`VscmK=DeZG{|SA~!yp;a$~<;av~K z3+m_Tk;%&Hj$vI{-LsX|JvQF5vj-EG7bVQ?*~;7=8%fucfqe%(OBmRH^^#JZG77$a zX1CGa2re}4+=lwWA_amBP*z2cNZ&sT5j?WPA_CEwPK^k5p81~=fsli=o@hGFt-_#^ zxmOs4n31sCcGxYfSS?MaF0l|)+Et%TB58NH0(IriC1f?wR-A{Xkr=!7DpKe*cKt?m zwfER1CavzV>;9)Lu!v@ooC{SLFI1q7!yCz|)Wk@hojj>UeNCl?`i$M8kFPsJz;aEB zH~N@O8A_hWY|5apK*O3%2?#!R_!8Nc8oOlN>fWUE=R#S$PHqX4^<9~{uyiYIf&cn7 zEZ(lV-Odp22AZ1!U?_c4^#F;ygxfi{2P*27rMt>7ip~!BQ)jvW%P!PjDL}MMvzsD zp|Ncu>4`$e1}$+J_eNeTld00v@mEmoPVkZGfth|$m9s@vZV!|*x0U7AZRYz^ML`LS z7fl&uTSEI#WFlf%&DhZ<*~7_>+lZrOq9NlmF)}EC^2s!?d@c~$kA+;|{M z5y830{ZY?pO-I3X=zv{oVzR+WKdtE@IXQl|)_k9^3~{Oxx=v#SFQWWM$}(wG{bJ!> z5E;&v+qGhF2+Z=2n`+Hu&}0Jc6eQ+MQTUng86n}Oyn=?bLNJshgO7vy+dlQJ{}k#c zQ^7?ypAr>Zdur_w7)bXO9h@U{@E5#eEVPKWk$Ycb)T1!^4<3%%0U|kKe`?+>g=HV7 zRoEfOYSbwzTo?Uw>Or!Wud7-f7UG@4ni3|rtLqOJ7{oKCbgNARmj zp+K7_@-SAAcH;`Up{3m@;fC}oDI*}llVrr+$zO_rv^ zz9(mWU|-lhkJp2j|&j}sNjt%em@Ctd@pYWZ5tk5w>P-5{}W9mle#$4%lW^pIQZ6Afc*YPqzC;I%+cNW&5Q_za0S?&5<&=(T){RS=9!p=|RtcT1? z+6P5Hy_2VXNxm>XtAP?!HEk%B$yXkSCk&AI~p=dF(Z=K50t z{BvchRsSjA(H8uI2#jNu*4?CrQY@Un!nGCzgD`^$tch-2Qk?vxNW z!fMxlintyE@0)_UdT7`}-A$bJL|wN$tKeCm=sOL#IvARI4KU-Z`#U}bq^Dl-1wncR zmb6olO^=N~B^K!c>9qpsoB=YEUT|HNw(bZH9=}gp+Z?x4ziV^C*xU2-N*f2NM(w>8c`NJ zzo&THFXC;mh__rY`RTE_^Xp#_Hv8dxdsd1WH}e`3SE`4)zorV^RS1aH2PQ}II?U%Tk0D#HF#z(UbN&iX>p zEbjM(qQ*R6K7sstfg+j8oD(`eBIxdkmcK|58B+R~#H{C8&q>T`?xfh}qb4z5{@NFW zx!KjHgt>dZdP59KoBttX0Z@aA!j{C zjif)XHF{jg^B(IR*jHPc84QA_F@aNp{@4|aabpyGKkorz(ackV?yoLA zB{EMNAjA%>f_SFFiLwulKwe6Y%Gd6xG|zp;mjY z#3s&K&c>v7rh0+29%vu3D8VJZ2DvTf*blKym(R6#u*RcqijSoD#1Nr#Dd9M4c^EEd zS1n68vK7zWa{Y97`1-m0SW;xQjWTtzQ*X|uRo9)zp2Cm#C7;PL`IEBA^V%ZzBJyJ) zF@yi|Po4I>QM2loU+r&e@8h@qYu5dLC63AK6NzhiNA5k5csKD4>r3ied?{@|Kq`J( zG7n|s=E8&cGh;<(-772Wj$|Asu8w=gyy*_#@(|$?4rzCL9`=WCS;w!{-EvDO_qTK2 z)#2GEYos+?|J`e_MWf;&)A`2}ApEE&GLxkjEe2J|APFA)#3+S<~3$M ztkRaSP4V*Y5+Q|~#qKa6^klC=fhSUtAzLdW12rC+?R(#gv-gn-B}i{zj!tk5E+j;+ zUb-bX6_2m3UeSc}2<~J4&p`=Lb<$UT~uT9KDWSfvCO&Yd{#WruA&ts*HVl&NqlVNu*XPRX4ykXx%?_|`D7--~Y8^S++HE!VE!x_)#49(q z_zQ25XLVLX=F6LG-C4VxlPjHgT@==Gc6EPM3lS#QK3U@l*W}_Ze8 z(<@!_@(_73Pu@9=09{vQ@|c)WJia<#ik~S3hfBe;q+o#*{IV1zSz)qZp%gq%3KmJh z3#8y^DR_|-B-mxLV6hauR0@ujf?tz@B~tL~QV__nC0QO^F6FL}a%I5u%1r#GWryS> zyM$;a+89Ez8Fbl*BMr*WNv%&vMCz6dZB2HI&f>2R5BR$?y~LCb{#(%bzwS(^?}0Ig zjpxEMo7hA(u)pMk)|!e@IRRSkIkHmep&g}Ni z#$z`I7X_AF5GW(oZot(@>@$?fF^$KjRaH%kos9^PPycG7><#ORZllqS$7-$*1OoYu z$1bT`7C@#Od!vs@XN+f~k8+fcl7nZB$DzI>(Psw|eby>?Poe;MmsP9!r`qC7wQqpR z1bwFLm5B_yAV+28E>wqsXK{#q*=YAgDslm0qc1X(6i0b0Dk7dignnzNh*W5J1vYAH z_yAcShqS%wBE2)2kK{YDO)-Ns?50Yokx zrvlt1^%;CozeaTMqav9kKDgBLpsL4;58m%Ck2|s?!(Dp#u4gvJarwBk)o%p%H-Yp1 zibK~7N>Ek?Fgv#BONhY_vf1z%8GlS2zIvELY$T27z#Wh{;T4g2xqkaTU*s;rg_F2% zah}(HkTJo;o1cw5hUZ>M6X1{JHTp`o)?ef^NYK~nU>9HpkVJ|q+Uc?ainGCPjV@Vw z-S({&q@dcZ@(JW47?!Ft7iY`VnFx#9-LU?0wl^)+!*-*h#US^9l)Xbvr0AV;A|>yl z;N29wBb;qitg^~^8mwZTMyr%(MN37<@HB+`88e$=1NbB9(hovi@phP_bmjxV;LU!T zP4-C;p;`o*w&D#uwYdK*_mhG-Fr$Z1W@^<-ATx|@GyfU21oDQd18lzVl9R>p62$Qm zC5|7Yh;hw>%|xo%&Zi~8lC41twQ@*B8F=u1*=a6O1_)=v18)a^;9+THceH^zq7C@N zH@U*Ilko+(DqsiFSNVh$d*E2CUf8pc8>tS>?Af77y*s2vm?4P{9hmYdMwq9hP-~1~ z?Mkf1S{3A(dS+}Pvx*kQ-8LT7u;{WK&HE3 z7WggN6k0YsGkArZdP;ZIUq^)X76q z#0B5nq~j?|N>1e}iUc6`qjQ}59%lt!y+lb$Tod1El6)||F`Tpi-*}$p5HyR=x(PN| zEY*qMjmOw$_*bB?-cjhHo}a)xnW5#wGg;13Md!Ml-pJ)HPwAe(74Fhq!EZ}7p$B+I zE$q~s>|j6FI4@C=8@Olfdth&2YmSRV4tW%o`03O=XA|f3*UGm`R_XCA^dsyZH}@WA zU~1wecTUwk4te2~v==U-7Khi~F0Xk;b>g_F)(=W69oT2oCW`{=ODZ=6I|w-L?RkHI1WE@pI;uS#0tS{j;uS0J`2}LO2mOPj+CI zFnv&|$~M)6_SehvN4?4vSxulK zzB~$N9Q2B^`ewA9Qex)t7;K-MQH%6KH7LLjKW^TM_;VXm@qH!0(TqAC$#yog=A_$h znq6cZRZsV+r{%aea*tm@tcvDe;3@sT`fo^EWlxxA)W2y>&8j}y6Z@*Pg2wRCWJ5%v zzQdLlRVDZ3JBd>ANZKO=Tc#p;s7S~%c~zlX^t5Q_iTo211-YPMnZ$UU?J|yQO-%~c z#jIFL2pKhht;YohX&bni8Er?oL!d#B6cm1$5sH2EY zH&{hg9Tz9+U^g7%kC8u$je7rto^L~$H_ za>=sVAv@i;?Ff4v#+9SP-rUV)&J5u$uhlK#7j~i#%gfYkW45fXpmY!YCgSLidb7`K zZ}pVsw%2DxW{~q_ac*R4M(NhOUXAXQCbs<(#peaBN$9q_58{GbV*YM1c$&d>?N0N) zE0W#t8fKy=UVEY^ZNbY!%N^$i?+7h-W(3){l>)`Lse#wmqaoYO3hLl(l^R{3YbC=B zOi~aidolrm)>QwEsgAHSbhiUz9hrP%c5)Kn!0Iq2jpmT6t(l2ZPd?4I1Df7ai5@Il z^abY%ifLd7gZu8sGQbkDk0j2B;&u!qY0r;CA4{K_Gb8 zjKxDqedih&1_lfPuKy+Yj_Ja7`naF&<9(&kG2@RQ(}7P-Th>YC?mV{%oP5aaX? zzh{R#e7h4*=UihlS9!){zi?`Gcw)X#gc|zivXy>XH4)b*nfFc#!-yT0>TIJ-xnd2wUoH04TcATeUW8mxpT5di{;E`A^S4DF5 zw+}=sMHzjH%`vhGow5Y|a9H6xjHbd?N*T|Z&6j7|gy?l+C+*e$RsexW=JWY-qB8eF z8;ov#JdC{&UgI{Y<*a-I0)%Q51f-IS=`9I{Al^HS_EDQkU(g0O6*f@VZ#+=g!V$ep zFMZmrO^O=ZPzq&Z7YPjAko8ja1^!a&YHqs?>&TvNuVA81DzBB2g~^N!erkA_q8{u` zmtzQkU)OXAzsa_)8lBn4+IFanJmOozS&Qn)`W)Jn8QZ0YGvnKQp>_xN)t!w()y1CX zHwh8|Japqtf8@`qk1A$^XWV&ONC?Fjxs!?d>u6Ocj3o|3gXMJ1dxQubEn+Z&bT2uH z;bzX9IZO*J=WS@-Noy+12PZH^V1x)yc7{h9vmB-GE-r-R+atMUjFj{R{d=-g64OL- zr$hN-Fa7gdQ2rz+-@!msCeN|5u8O(2n&ZXnV!l4xBK}7V4cdPsN&DGAH7ol#1R2Sy zTQn5b&g23hXMK~aaMlfSuc@$;_N_n0^if-LuZs7sAR?lSX=y(U7PfUKWIus^c3I}S z59RC}0%2nFcvVWAx=Z&gdAAW2C9W+RF0#~#EdBXW0rbG^+sH0)einf%Y_Urv$|YzIn*TLk zL>&PFCc7}#8I#!#+390a@3&8L;YvT5bYm`T41+Dv>IpA{1hR=kVa&|aN44ssy4T0>Am|L>VUAvFvE6gB7&){N|IzR2DEEOt1SWCv^bIR{Qyj6OWF%$9@>}h96_*UpwA5vyNMb;0B5Utb1X4}IOINqiZgak0!Y8PTJWQcvX3bydMpX1 z?C6zAC=oq%Hq*MRoScwHL3d~uZ}LZcxx}}vD$G~0Ze5E>4>6dWk%M!HQ8sw6{Bdp4 zF7A}fk7R)a!4Y?1zOG&D@@eI*+QrWsHW*B9x{%B5hAoVYr35d!GPH}^Db*%LBqm*7 z_%SXS^Ct6VxAB7C*s>AYx8ZylbX@vk%&!|S=*G6Tn4>M~FgA^93mqLvrmv0+x)bO5 zXeMT%e~vVsLh04_>^Jt3&ACil^YWfo_0lfw{?{ z>PEXhYLnDAQ18%{5-j(Nji>k^)h26X8Gx(a6*9tgNTogpwK}PlT}W*Qa`d(spGj7n zOT|vr($?50op#EU6A{17*h_un5ZLp2>G3k{{-+|238S7G)jnXe9@d?bbQ<#2`?m`D zI&vc4`(*zZ4)!6+lucu01M;yIy8)X6zwR87XZ#^~TmX)Mv^*6+JR9 zqx9wa>v%}rukv_@>7sg>V*QV|qfFtIedHZwF4f15vi!tRO+>k0l(;TV97__%GC5)m z%VfZPdC@PZUZn*y|Afbkw7W?{4;e4F{WHgHJOyhrGsvbvt23gP@Stqw3@=M+e?;|D zlVv08PxF&YYNx9yqVaq%`_k6v80G__fEw*6&+Vo9@cL}37{T3fSLI1A6fulw<#PVl z!u^0s@}hLA<6o8PfG!xxo9W~ZIV`hugL#eix8v~+W2f48u;<^5>x*S-Z2t5zSq(ZU z0y@XtvfLH@5q*m|7E96-R_`!O6H?`Og^J0f*=Z6#Iu;)!) z?C|WB;lIQ4VjPm_@Vxwf+|J>j@pv|e*FTJF9AZa!vBUHBhw%v<4!skM?sFO3=byAIfAG`IOkwW!Eka9z|nzBPi9daD;4Y#)lqg4<(IXgc3G(Fy>f!WhS_dc^_ck zn>22CPT%q=sN$e+O1jh+mwQBLHj2mmX zB>V39<$1=W5A@IuyB>Cg$wejcbDW-VAnY)v=EuwP;%(a6@*&}=`K3n}pJB`x9&tP^ zjVx_nJRsD5RJtenlOFFNW?8PM^aE{$>{Ig_w|q~`xbKb?spTAbkLx>a3QoGzN!liQUhCOkGL-N>8ZzoYP<6D%Ke95edSWk1#2j0k_p=FiooD`-L2_NEc#mZ}#eA%bDDGp~!(zV%i~X7`_G_`&?_P`jR$1)# zfW>|fTI}~zi~Sz5*zeaC`#o&2-|sB;TWzu5pDp%VXR+U3E%s}**zZY;{W_EE=P=xV zt+bfWZ5&AQpG=m=NwS3RuqJ84fREOG8;RV0T_|Q*H75BJl2cbq`4%wr80UG64|KS) zVL5T*F|!uQTyiYCp?L~b?~2+X=cy_F{C$Eye=h`}_)|AJHX`5R@Tc)E?7EqT6w105 z)@#Ohu0~HZ{7&bt=;1a*K`t+fo|;@gP|sLpa5DR%Y#B>kgs0J(C1Q-<_{z&fNB`oIM zLOnL!{?z1%;|An9BPaE@22Yb9Bny1T)#RL*mT#_6F9g2f1#V>$@Ncvlfu)C76;Nb> ziL3_{(uZI_Y>~Jyv2uV|(d`G_Ovgu`Q$L)khICu{pVs5%GXai75}b;al2Kh%@JPd5A+%v&PqNz({CMD8dGa0_fAZ1>n4^G)roNFO65ve#Y-64SjdYQE{Z#`Lj=(#Q6tkBwr5aQiaLd{h7KOds2p zK2`+Y*}X1kzUjJ!>0=M1k2&dMrQk8#zRWP+)R*PyV;$bHjf{$}8-s}%U{*9S#3K}I z*Z^x-RSEw~N$UyS;9*HSp}fgFDQYIuYQB<%*i5Lk>IWuH`-hC5Z zWUQS2yvMw9Nd_*{LxOH?a!`V_z{|bb>)mG0o;|>dEBQJvGF-ykIaJQebcYhhQ)RTM z>ld&Dp55I(XFtb5&6zF69;TQ~kqEA+y*G5uSN+y973(lo`CNY;BHffTT2DKTV_IXL z4pvFdi;5cGHa^1@B@+_iiqgu&jTOZc_)}sRR3`it6yvVsc#%E67=wDH9jhqTZ}@b4 zN#eZX2^=stvXMQn#2(MWG2h%UqDF9y@ujBGbG}+s&m9v>5??KLN_m5BOzmIAXZ_WZ zP~cj>wR9%4>l%^t?(d%_DaBjW*xj{U$0&3vqA+9+4LoNp`$2{j0f(_kx}5_Dwx87+ zN(}8>W=Qe>^Za35EwtiiX3yWJd57Hj!$6A8_eqYY=5KfJ`TIp`{?aqXTm^x#;(O9G z`77MHGJpRylVy(|r5PTTGig_y+I!MImosTKT+wsV6yfGgn&!`AHh0qgD{InZZ_SY( z|DWg2<-c(D{M|6B=lr?+H=pCF`BP4*9{eY{`|smFtn4lazG>(~JO~SFHcRdCW%?}3 znbmKR(6%Qlo}V+TbzISNR>gnbtlrUcR&UOlRn-jkX7%4PpX0LU^FGq?=JKOEpZ9P) zHJ^KX&*!86sq>jLkB@(}_dMou=TEt!=R7L@(3{8a_nb%Nc1ej;#n9()CwQd)`}JKO zs>84Euaz-{t**Z+XMIn5pT2}kOZKZ5%nJWP|112zp#QLqb@=|D(qI2Q%l}V_6IAa% zfPV5X=)YX@hwuLvNu}H8_ zTFxNR?asD875VmAO_w10WA-g8klyy)rThrlA(C$@IcaE)J+;OEn^H~zY4=&b+j8>r zJG!usu*Kk5!^Mq{%3hmSe?i0!%^35fGxu`?XzS(`9MevZBAG3}=HqLq+6Q*qZ4?o} zGC$_YHs|;+wIT#=!c~+6$;iWvaYog+NkFqK1Q|{$_O>@W|hQSI*N-HT@!0cnB z&Tlx%nZdrktI*kfAV1IEhJ_o~V{6wGYtc;Kvba6w9j+h!71<9 zV~@q`7pF~0;d^S5SE&|+W}5B~iY3oi$(kDQEt-42e&q7!{TCXAXy9mN6m)g%^m zWaBp%60*cJMvLsp{xPjBk(JQU7bz;Sn!=GQ6Vo2GN@^dCCL+gJ!y-?_?AmA1EhEQ( z*of>Ug&a;EuGc4Xn8;N)ee~G3z&kuSV zYQmrK@UD-{I}!5}4wa`Va00#|zWe?7I|Hn5wzoMa;D~NkbQ;#RQe8W;4kYb6ZLf`J z+k1Sl@wNP})lPbqO03^uWo zmyuAg{&clF2Gek8hI8Exai)@1?{JR#^51x!^r@+w0#@an-2bJ&0aHn}8}!=M<<5s` zTkjICm@~P)CT36jqQ)>Eye^-EWhMr}_uSr~7VoF~@*c}kIEFB<`{{PT(A>A2}MbCr|x%51+FM3vV(Rg!tik{8& zX3z&h&tLmLpy!(#nE;~K5;uD!J)X$2m2I;{q(=ao+9{&0_J|sawpOoA5w#_v7CzHl z3|UPots6AEt!rrGEBRf=^`K`C$6v_@O82d`Vf$+yE&uvT(em^X=cfY=Eq?(_Jfu7+ zManlBH>zNB#)`B+X4N$gQ z53`^JI{%UNtmQ9eJsZYHW<9&HpY`niCl9-xc?ja!f!EXPS+el8JO)f3^o+oqYJJzaWDB!2a zLzd?HA%H4@Yg?-~cNGB_eMlEst4=4NWo!km>5BZeKNk5MS{N&H%p6{G9BwbSDZp<{ zWsT+r7TO@d5JK*F>|`b1x zQigwIdaXUNv=&>de7GyPDQ5pv9~2EBEa76-_oez7mJyr^Yl#WLn0q8-2d9PuI~y!l zM-9#)Y@@~MDmd%OaK)mNBKAwxs`iL|fK`2COXbM~?EuA?f(?4YXxuv$q{Aj~p?0c5 za&#kwTie6-%kh`3P}`ouvXY0S&*BVzp8i(o;nC1<1zb5Nj8Ai!O5Es8W?%(N`5*18 zf_7z5_v3-}R`Pe;9pl}UXBVH}1WdfQ>n+q(EWC4wIwc;4ac^PC44vF|?@(%oaz3=b zwWxlCJd~TATi^HP3BYilj+=;GhQe}YGE^R2DEzJ(x zXY-bZ<2Z6+!x84lz}eQryNl)xd{om(xhb0^vXU}attwfYnNgj27RO+7<;eQetyPsL zW34azbd}X`0+*X0<*{UEfX26WZ)<9Wh^%k5DgN^$mFe0*(+q(I;J4{ccfO4&1mD`9 zQqL~xZ#C>8jK&I@akD3Yb~@*%Au!}xAvO#f zfuk1R%O`r~PmNDhf>-z8p^{ynXQ;_#0Pe}Cf>tyk3l!2Vl55JDf;#X<5hF_1giG|zjym-jv*B@})T0JSv zspleoJx(2);nZ2#d^u>ISoI6phhSBAeqhK0u+Bn{RVU}C;+A$zYN z4za8$hsIb(TXW{!gaLfqOlw$@$SgApQ@_ppc6jrP`Gmc*Sy|Z6Q6q9SrKJc|{CbLm z+?`AI{JwYaKW%2rRMW`5_nFW;>B?fMFHy0_PycCQZw-msP`uem*iz$ARyw&v6s z8y >@N1`GGQdZWHZuYYvlA;1Mbo4SL#%7$FK4`KZd6{Y%hwMMU!eJluZU^(oH$c zv;?Kr3~kX)kC4kPx$ zMyD}9rPBnqrDR@?N^|i^k>vH{K5T!OIqgRBt)*)fMzbmW!P`F6kxG=Ci${Y!;Dg8} z^d(hHOfCW5ututj6p~~JhzLvU@J3fFNpXPDNP2R>W;$p%;AmIE9r~-w0l(z9-Z@Li zeI_I1&hms@+=ACuNb z5OE*la-)rWmMDZDy~W!D;qsFSVUVkx7?IcTQPtAA2^5HVeFlb3n<2TDW1Vk6`JS{h zdQeK*fveIQ7MYij4B?fl5zvpvYnwu<4Bi-HK* zwECGf;RW{g!_N0*%=fSU($9R?Ao+yP(s11RH=}O=WsKO*D*;ap=H43nCaQ9M^q1>~ zVsu-;u4BO{c2dGAj*~o_-1#D}3Qhbr)wwiHr05}PFBdI%YHGGBpBc%97Q-|t8d&$H zO9R)zw%Nn@kI=vv?saM4RDF{wZ^e)2tJ^QptD#YmYa}^?ZDNSZD8rX`Qs%GQvp0ec zo{Xv=G69V|oFGLie@m@HN4sPWSy9?&BPvxR?5Qq_e6HR`5*1?rdj!g2FSM!vOhu96 zDYz#X^ROkVV$wezk|5)YT8rGP66j60a0mNL0tVT0hONrZ+T^$(L16jw7bp?Z z8Qeg~BAxKXwDQ!hF#E~w9b%RQ_r~nVyzoTeoz$u;qf)~u$D zIz)?p^e{DANTXhZo!{YHZE~R=b`1Zk&0A|X{6Ep=?)o2dXnFyum2}FN>BzHmq?t%- zRxE7R>7MZ1ZmYSGCUtz4@Q)Q;_1tTj^22WXC}Gz?Ya5xYx!%!;m)dGT3f@0wvYM~<`CfY_Utm?vH`$MnXGiI(MYA-UQS zOptDrXy$B8( zdJXYKtr&Y`t4tXwFa11bN~WSBe#qEeb6fhbS|YcE83Q~gqw z-fEWEg=6+(r^e`E4V%^|fLTx} z>f2gl9|P4nKY7C?payP<5<(l_*j@j-e(qhTdod7gAX9->VfUrC>n$exsI!Fhm@20A zUI&I>-HJI$X_WF8{Lp)G26JkD0bYV|e)`QDnmZ$~QeR|n%A*-FxVobsGPt6Qtz8xw zppbeqEtt0mqPEc`2Bw_Jw@PLjdf3U&olwFi+%Vg+DdJ8B_)aLIg+X4MD=2rm!!1GCks0q#?QzGukgXK@FC)%dcReJXvS0fs zn8{mKh>w#W8L{SHYagBSqOp(u<%Mkf=$HDjkKX#oKW-o0*dTb?T^s7>x>Bd9DS85!uvXq&oCxS**PE4eU$A+$(AemghumwRh9qV zQmgq(9F>15Y=32Rt1}QfY7On*CN~!W5Aj{^k9kr_>T!O_vp_IEi`#2|!{>EHt>^QK z?{yW3QqJM`YM8yh${(zswZYw@vDQ~I#*-JalfZmaLw#2^-)*5sG(y?-jSb@q3Un=g zy7=zDnXMYz6Wkc#^|KYWdckmGq}mzADy5fVA6Lju#Pr-a^@lv<$C0?d{!*&Ifg)Pov2Kv1%MK3j3K2dtN}Z2x zY%=CA^PLT;F@>=@oX#U+Wuv&qHuqq2*LOY8eOe;Eg72YZ1d+2TWN!~RkOx(a7mYHx zIdF`OX4B8MZc-7Zi4id$#;xiS)Ocl_7!hS%m>vympH~$l-YOJLOfQO+w|k3#)&mv- ziAKH_WWFlne^VCYA8ND4duy0{5iCDYs9-b2E6C+mXp! zJiW+{j-Y-yT`DQx%!R!M|F%^Gc&7c9vnIH-q1kaRf5V5>&?RGQ)rUak(6=hOi91qX zNm1zA?tP`3e~J3ubRCvnd!8jAhRA}(*D2%Ia>frYMKH7eUxHQgU&NpJ|0sWc*)RSi z0_TrXrN)z`F3pK1Bb?QALy8lFY?w}vo|xgmT&_dWD1;Todmqm5o>SxT-oQOB?#SyMAL|*Z<4;Z6Ewbbma%< zxAEe)Pl(@6PxIS(WGj`MeU~(^56D`NJIgNkhgoaPud-RIFq*|$MXzVG)--xl>pA{A zqrTU3xoATu@KXEo*F z3^NF-YYSO15k2zW`y9R)&%M43^f_3cN+b68(e~4Aub;60$@t4Gf2~^nHkswGEwI^Y zz8Vf}dt+q$kNGT*f1@fZswH@UZ?0oGoL1$|i%jj;J1$phwS+6(9T|cS#8UeC9jWK* z3%~*P%*WSV4CCs(dn}sa9LDw5?|+1U&2R+v)Mqc3FFqjl?XJf@^h_kMz~$dh{W`FWpfb$u@X23Rk>NPA4O?qccrq{o_-(yWf&N?CFEl`!z2=QUCs>a>L}m zbr+?K(OS3rUM_o#{j8PQEPYlui>1&0lgrW~gMVhVG`6Vh(}MvkB%ehE$OO}3?2Bs#UsvBJp+Z43^ht)}T%|71+D zn!n4_qu%x*1C0DZ{s4~Nwt|yz&Je>ncW6x)R?!*rM~%QGF3(2NsK>1t)Z;IHCd-n! zA3T-s2Lh9rUn$h1)ifIus)u}hA)?_m?F;$%)T=&_kDU*40euWovxjfd?Dk+a`J3Css2z-AYez#q_pH-rH_ zjBTkpIby#bOUxgQVd9-XXg5=ZU43E&i5iK##R8o2A>%P))^QuVfB~G-Z3JS4d6{U) zMGx?`B0^y7vaQG|xf3SaRY6>+=n{|SaVR;b8~a%DROXy~12JAl=6R{nGS5#0G|<>Vt1~E~dA#pRLw$^Av0K1mvL$7#PR?)pJ9BBJGBpUz)MdKhbb( zxMKc^IS7IbT;TnvUDY>S;2FEp-&{4a{*%aA7cNj~HJr-j#z2p|^@v~o-Zj_`Jm)Cu zo2|0ZD~NK7+>#BaXp8+3RuD5H44_72IKSOD==>9g3(y0*Q;+v7vQ-sqH<&kVA)%eC zaZ$0ioRRRa6q3ZI^nf={jo8<=r{?K(7ew%!aY)N(h~>;U2?bY(1YQPO8CYvI-J@Uh z%Y=^GQ)V*nAPB6c7UnFof9wlSU^QRCHDC%FhC&$igTNB(>^z@C>Q1(+eqzQ|{}Ih0 zMKZZcuKI~3&h0OniEJLhA-zk;fHrusTD!w;?>bc;Hmm6nWaJ(ogFeS)&%$~CLOnQ$ zr>thS_<8umlEirL2O;3EKN?**ykzLTCG|t%yDXPP$=T!j?Ce(IDaJ;-$tQ%FFYMb% zM7m6pc>DORE&b$3;Av~=rxAOwg54fYet|GridF9qCum((v~WVL4yoJR?t6vs@R}7I5h9|I&oNJi9s*&7WZ4(Cubb*D{K4S7 zh>v_LcbU`i8_P!L%_p{=NvD89{-;Qk+5ATRpbfs$quoI4zzTe`Od=HOik9y{_SKE1 zzQOqM2iQysXxX*ui-${x05KY_(p$#5cYY$PW8hTV==EgG;n4}!tDv?{gE4Px*<4%0_mXv5ud=sZ z{sP#_@{l5b!E0qBxNc}Cs-YD7-w zXy-mj-Tjifu9Gh92XlR+#=eqqk4EQ2k_++qr!W*@`;?4NbO&CH13bax?KVM!=F2m;Ho5!|^>B)xWy}QbYD_`)`dyX9i~-vk&38*-Cj4Q{<@; z#-2m2oJP!FCT>V!L!S4Du%X968Z&pHeEUeY@&pYjQ=0YJm(6G1dgULUJ@F!Iwm zlHnkV=zDAP^8g8JV->a?qKT}gE`&*FWA%t4j)m--gVISBO${8ZJ2sS9ZGLSCZM<1Q z$6B1tDQnqTM(wGa6HZl^OD69sZuQJ$(q} z0{fYeT|F|?T;(^O?rN#U144q)9-pf9^C@x>jV2YGlwf%`(o$>ArqIs@)S9ehT&S*tD>y1yMntJExVCP@#Y zIuSn%Hcr4DnZ?lx8ySe$l47@>N?WVrqmAade*l6?YkOoK(q7P z8@ecoWOcV{M>Qw6vuxVfuthM}ki{3-iX)X+yCbT81QWPE$uw1kQe>4)Nfrd)bhH^t zI-d_kqaD@xj{KHA2PN^SC?@5nfZTWgPy*f@g}y@xLukr})O_Z9XOvriOy zC(v$HZS#`&2P^6>sK4Tzx|#Ejvo|1t3_!bbu0foc1pQ`n8ECIN88S0x*|w6=HIolN z9z!0x&LvfFfkBkt$g`kFjWnJqv@YuTOZMiBd=v{tsnHUT4bc69t97l(jN|9t%{qsI9}PZ)HqLd)46_BEx9d z#6?)mKk)_z__R3hFoSb`VA0IF(_IQJ1#f3A;9U!RB?WqvZ=@qN< zIVLo4$ck_0v;5hf<5A0agfauNr}I88V@w9S>eQ;p0L0QI0})Er${lP{Ah;nOvE_^r zw-j+@?I140_r7^{DDap1fk=zpG2b7tLI4WdtliD18v9vo%uA7d5qrH;6obtwcqXfk z)|*lzUdcF)cx75s;`RC!N)z5`vTG}fC5EvE;rd1o;mU+~(v={VlypUk^_H%jv)Maw;jJB*fl zbS)+Y>ZKWJ`nW4iy9)4C9&P4Gf^?0>WWLoYTo|t(N|>=xKDN0bdyU4)hz>K5Msz5x zj1e7Q>X$pNx}bjUIake`f4uyx_IfsyIpX6ggIC2ih4?7T?A58b^kSR*QkvAV0@ ze&>!@Kk`H+FeOjg`0OoDddSyK)$`R54TgHf3X&fzSWosnNL(ogqqngS2R6+^$UN0` z2AQ|GGZqBqvT`$JjDlPg4pJMB0PK(g)^wGm&GuT~Hm*F5^Td%7TP~5+EM3GMwqm+- zIO4ic!*+t_kAPnKAFp<~opKhae#YxNT&VH-I-h@kysqLZko$9B4a8~eLqkR2A%b!E z6~1LC@72+`yF^L+NAq-IYQlkzhL1|?u-7+jV%yyc6yxZoO=0_Sve= z20d)orh~}r@g`tF0c07}X;uK4hu@um1xowup7`B!Gg3MgkP@tDD9wgu6Oh88Y+J-u zQs8=MZ7SY@CG1=8l`SGNvc8;|bZx;%>EpTDNNGaHB5Z10DV@@J%M`5DbgwMFMpoOk z)F8E*--k6if51^rH~ca6JkJghsjwGgA2Zf?^dNsT93|y9T!cb9vdGhBf1KtsKLcv` zYyyDCP;dQjlK2c$WnT<70r9;V`JxV*x(wej4tk1?+<$=vtro7KyTw{s;H z0`J|o@$T3oq`&5BcS>0;X;3I*^e{8C4J-|s&}*b2;(RIdyYmd6hs)gEg1bWPla7?O z3_O-nl0x=T?jF=AMsDJY5zgHY8ipFhN7&wJR-*^KcebZtO+S*3pq!%eyHif4R$@|G zvz7kO1*XibJE_-tbbEKZtNc$f`t1Za+N2!@&6<8f{X+J(oDuLUbbUt`f+mSC=L?MM z74&NF=khP>a*YHA5yoaPqcXJ&LAdgn5N@xqZ<{%prQ@#eGW&p9-#T-HkZQ3qazL=@ z%GPr`YkhlMJ$H)?_@kos)1IFDxRTP&CC>ul^3M#JX!TV-MXP3kJ}kW|1B=~IWSj

`h}nESviWwKwIM^keo7bJ_e*yaGBD31jX{aqB^qOgih0E*VazyE>^ZFgmH|`djO3 z?9Yz~p7jP18206(L-F^z8$KCLPMG5qoKe8?jJuoSRs(n`${r1%yvAgufVs?%E(J8x zlvhF)zD8MbH2S(K;H#)}$G$hjW2HPg0BG{Dh;l;~4MSr58H#vHP50aK$FBo47F7?ltUamzv%G5VE zXsyC8m1V}obYN(b`~cHc{7SBrsD0lG`V&i@{im;s0-u*#<$U&`op!|J1!BRRqr5;S zDS$}<5JHW?DsxCucB`?-uoF$GF$aS7a=A&B*??A>T1vda0`1BN13u9V>2 zWfYk?947|Yt_+gvIGkMA9SS^QB|pT`-Yykv#z^K=bZu53Qg$T#W4xN@STT|COCNO= z8Rdj>8^|`|;aEx8@KT#j6MB~IM;XyO8mZ7YRT1Gvkr|d91P_?0Yk&(K^+Mq@!Dra; zQo(0dldU;Og~M}$BH}lBw!HarYGe&8DL;>ZIsr6?O=i%C-lJXIh zYM&^FU22upB&Ju`%np%hQQgEDE{0m9!rt&wS(v&TZcn{X+G7Lt)oK?L8D!iR1j^4N zv-wuMkN1BKd2tlAEh)G>m?FzV5TvPuPDUx`F0wj#o|4TtcCFQKQf{0zwTR2%E&Lu^ z9sdAUlG)k-g34~~Jf3ek^lEI=n6V#Tq0vfyW-O1z@dweGs16D|P=t<0U06V50bOVW zbVTryzlCE}hG@fq*G08YcvQPJWTObV2I`b~`qyQRYFz>6*(AG2BwI&{d6e(>?l(q7 zpev%+>Z$gGppr8rzW}|ivyw86h+a*~2A9g@;YyLJ=~pIhE}L98@#JiB-SIn@TxCG` zK;%jti)y0Mrwk4rEPfHqg5nPCT+vXTrS<)YSK18O{*eQ z&rDLkNa6CQpdp*-U=lSPxBf-6Iw82fTC`d{wSKHUeFl1P)%N(;(zIHdMXQpR)qPPb zGon22jXWN)R^fW547I+|kW9TyHnmGD39$o%Q_t}cifj+bQo%UDt(f`hXk;>I`bc09~vmOF)6P8IUK9MsV zq!0)<6mm_KY@9M4tlVsG-rl)n_Y148x!7*o?u2}Q`KZ2^Z+oaPRN~h*Zi4!j1$*-f#>j{K_DbHn8a)wp1p2zPTI>ge{@m%MCRO}8H|Zwr@$hS~+9 z$rqt|;gVO~246);@t)wpP1|loR&i8`HJ%C63@r=Fj4IiNt1dua)kg|uf z^(}QCT;pSl&|Uv=Cafkok#YuG2~?6bk_lMI=W>M?mdY{s{54e5CI1MkWtR^{Awm|j z(X`CM_EqlTZnE3E_bJ$sTU=AX4^#Kyo#np$!KODF3WGR9&+NOKm-W%jp>(tFt7Cm! zz3UMlK-4!HCi9er32CO8(hn8ZeL9N*Gx~5Z{^=r_f?_+Lu%}O@NQ852(E!GdRBqko zs7`ukx(5zWP->!@n)IDFV+Bd|!D?E-uYUSr#V_JyPG5rQdK!K4L%G_TP}JSl`3fQb zX;s;LG4>X1GJ1sYjE44ts5_mIHGAyWJu|vz4kIBP$7}OzlMMwCN=|ie3T=NqptzA@MV{E1(5IwhyllcA_`_|uI}_rS*ZBd zg{jLCF95R$F|2a_^d*nyJ>CVw;PNgh(vmCmh!o6~s8f@8^T)@gduzHnm9F-8?eZSi zj?!!Kgu&w5!sLSdu3>=N_zWv5d5d!|%8k0Nqv0emHIzPm-?^QmiACZxC1g)=ft$Z; znqa-^rd@c{+eZSTT4yK_MSGCZ#mO_*K}joo>owF)whzf@3~bL@-Ki2YG)Lj1u>FR; zUiy4Ac|C;=70RqeW^or$!w}k70c%axttT<>sC<hFJZc-*?tIT+gmn>~!JTdB-y z`j&2D=M%F(9JTK@gGxR+CGXm%W;{of=q^m5(-a&Fci0R;YbOQ&Zib#<#dRkE_rqF6 za9K+=z^h9~h3((R64OUV6ARD<#S)duy#)Y)+*>5x;@WiXEw**fKa4tN0))9^YFQKw zz*@Elj?%9Rds5Iom8BY7_UhmM2%A{b+#H;{3}cbi2L2VJ)uOyH6o25m+vQH>aH2p47F73fo~Bh@p`o+atB?@$DTpT)fEiS; zxPucOYa6U|KPk9WG((V4YVY#!pX*mT1((SWBK)lOM_KsU^XXQ`K9k1J0!pjzi$a!wc1~1dqU-c;9vtT}^{K8CJ^UEAEujb-syU27U z-0T((_sn!9$h4$WRH?4or9}XFb^&Z(*G+hb-a*C+t$jP=fcvl~HokO$*OAt`Zo`WqL(C8MUB1!t~hIpy^Dj?uLl?4Z|Mk)(V%>FZweK-Bh4}XTlPq5EP)Ct?kM}^6V@+cmb488R> zMx^$3S!RfAf698g>Inpc?|k>?u0Z&ij=O+_Ea!Kh_)hk9IVoL^F&n#V%S54Zs-*To zxtqEId)r}?p(y#yJ@@nO{U*P8gl!#|FE=GhlAsu`CKnFIFBaVyUJAoMGT>&!Qn^n$m>IdC9^*tdQlKW| zg8FPa7@_B2mAQkgA+ws7Yc37sY?;21-q31NtVoX}I71N@o_+5F&v#qsp((a!BRBF+2F2nI36oI_pr;ynihJ&8O1acwA_wK_Kon{;PC`XJvTW1m}t*gsrtYehsoEGF5Ur9F5Koviq&ODB^!kv-I?O{t+ybMw)7>T?q@)^j%0Ni z&8RC^i!fM+x*Ki?**j={bl3H6P99USz7}{b+k&Ii2RgOMv%kd;70fT!!#>7|0p?*- z2I4L=RsxephN73#ZVK5?nifamXoXh`e@U=Ip2fBz}n1xEKR*<|gG5g9d zrgF!S`BhXw?wG08($`t|QVCzK%T67G>fL9;m+vg}a>r<4$ZR*r9is&Mr)-z-CJz7Q`h`i!$>-lN91f%cIJ(R^%B>yZRx$42}v_+6*6 zBDs=z%>JI!Q+V%ED=*RTBPOc$D@+u`M1~GTkLJUj3#;TxsvT>Z;FO+eTz*3QjG33n z-B!sZnwz~$QYwebYuR)3DC6`fbF`ANTFv0Bw1(-1E5F8oeOuq{#dmAGu7-%SUpE6r z?{~<~dea@UMcfK>%q;a9x~`R}y`DaeKjuQTpeV~K+r6?sdE33Fve6tN*u^WcVT|1d zI!MTik8%jOd+v}xP3^mJC~R@w*jPv_Uz7A?3;x9++SGnqil2$uya@rx_Sc9KFHg+0VS4$TRwZ{w$%a{>YhnB18Af@xV~uRpF387N*cb`ys2jrO@AgO_ z)>2e|H9E&kWu3hMaIV26vb@YC4sCf+B(S-zmU_&77wb^3PZ!u_A}0&+i^n;C% zs*^IJyRXxoiUe7GMHcKW>Zyc24x8VkA>*0GBPr*em$^(Umlq`fY3G|2)=rhI(M;t; zohVJCbJy36TkoTMxCo%8^&F;IKLF1{jbJ;fYy1HYrie0SIy}X>sXd$9cl&d>eb_w; z9i%?xs#-r<2DT~H4yqeW(XM0zK8LYY)~e$fWdw0Ld_Jpa&^(;^-Xr0;bzkTuh?RTK z*e>tPJXpj1o&Q$oJSps3J;F$5$}-fEz50+pgvE8lw9qv001Inm40v5BvdEMbYW&LN zJgey>Bg{b*{DxJGil+qNvtTQOmfWPXwDeA{|1{GwBhY45wq@nc`l!9t-nLv5)x-O2 zT1wg1LWu|OWo&DbHwc7u8CJ{pkv^t$2k?xNF#aQcx*4;~S2AYp!W|(Yns8GL$yhlf z)n1K#394Y-Xq7PfL{vDCLxT&D8b|xC&xL@@V}b<%`4ir(eb@>KK-OK0i{>Hh{?Mr) z793#AlIS5j|4*bOYL6VSoRpCb*TQLo;j|$Dhm>CiBQ_<1UM@&Z$akK7PhxDRP#q!F zJ|i!qvYCx$yhlrD-ASu_4QhNzRA3n%B* zpF>Xz$%Cv!ZC-~tG9dGHp!@Y8B_GTjMFQ_xOMi;SClk?(bY==b<#PYa534pf$=nZ*lT|H8`*HD%iYVa$9rFVae^LZ~m{z?bd&c z+%o#J@C4}3uRfpFpQZN7*+IUK0rXp&Q`sQrvMQrY8_x*qs}h_g$DQv5xMpcWID=bA z$;$Y!{BZZGbROK0blImg;8K^Sm1Id|XUuIZ|Tl82VT<5|b5@gr@LLcNa{0`h{$ic(Dq zkwcZ)h{-3qfFufI7m$d?Ga675gB^TS>*}1O->c(7@fG961oq+~$>>;>j|(UB<-!7U zFTY~!u;mweq4Rp<7y5CTS^bhtWsP(|jZ}n)8n;tUy03w6<6UZ z`n~5WQk|B1D)IX z(N$p5t(+jR{Z`%t3!RE!tkvv|c_C#F?(D;`7b~k!WSi?P!nE=M%e1id7SKvQqOkE1 z&CsvFJ6@TVnfwwyy!mXtWR+<-JB`Ol`-d|1S~hz1S`^S4SG^XEz3R1SJ*!aW5`1In zk^?5Po{A(YIRKKTsy)jc@=>;tnW8O?Gy{G2;SbRsXoXICJfxB>h5-V*64?>|(pC2ijK`1f==DE|F9^8yQGo1OdQ-&r}u3k?5$A?Hwb z$rkbNLTQlw)H9f=bV-$$r%JYnf9L3Ow`5E5h?l;R#lKJT!{gs$FzM%4>4;~79*)SnJ!^X3`g(eLOPF4H2|C|$=k@Jg^QvU6d#(6JmuNe; za2+uV$f|<7=o_zM97YM!$wlqw zRAvP|99u+CNaN*blmk+lAR6C57uo41FlfHawe65peG3TBv~>al1Awxuprm2W;3dW) z@eP3TvhPS2yuj#!6O;QjtQjjxrz5jl*sd?o#rdc9d(UudvC z6`}YcSEuvQmXt~DKcgLM?4SQhqu7yP&r|HSrxm+B_qd8(G)e|3 zPq(`ZCCMzEv0N;Wmah~RD3Xf>QgNBd9}o)^u2^sq8TDN0k0N`&K|TNqQhvSLV1oq6 zmL%S}#HGZL{(+w;dzDl~=pP@Xs(iRDm5*%Me0HTKD@isc$gA*mh;!Ng|G$q18ktq! zD=P}Yq}O|o&Pt$UMwyPKrPs^U<0F$uwy&QeU%gU^crleB#Z;yNLAe^ANw5bZ zh!w*_1i1_k~F?oC0nbF#`iK`acM9#ov*t> z=1-|7dy9v`2AP6T5R_DoU<@U0GJ0PM8>9&`z^%T^^R0q%xMQr4LHF_9AcI0G&S%zI zA%kw_a0qBnt(RJFI=xCOd^v!i&u}Ie5LC{Qo+?xpAm|h+=~h!AS4o8e5Hz0AVCI_N z6h-S*%uD5>f}Y`Ajvn=x8>XsP#ew;T65QY_zrX8+e68oxp*@z2QLfUzA}H2Brjw zWEZ%qC#07`u;5c9xBO@Ki3c*;BHHCPIuaEwNJ->I{Yd5km*u5;3g&0DOMxd*Ek^{5 zYPo{LsFoMwW?eu%pbcFE;D)ebEM&9o0TB9h-$2)xmSXbj0nuKAI>=V#4Cg6_Q*~y1$d{0Dd|JRKT_X4=k5nj-J1^DvMD$)8EP$8T!PaQM6C7aFF2l9O2t7*oNU^&h3y z1{cz2XU%RE^KC#Wu=t zO=iz@QlpV34ER~FI$nTxq{wVHIV`=^4J7wOPo#n=oL=BwXz0U4wz}zrG8tZKeH-lv zh8#Cm$R4gxp(6f!nHrS4;zO!Rnj#n_zq#fsuC1oSd23NvIDrH)A)WrfG21aQP!xdC@MWl><_j{)K6@F?W2mvSiN4NpHk zN~^jHZ4MJz8z$|gbt*1cCe}KY zy3l{6laghtln`^D4%kmu+5Qzy2{C^$yU8#S<6dIMUb%KMiJxje=jlywN2*QnoN04n za-2|fr0}BB#jRxr(@j6*JorUsCpi-79kUlKd@F2~+-myrmR0gQ^E@5;rs<8oHJO_^ zdG=FpSb6bIztwaU_d)_zlPT*8ElhzHtY)E4EA5&06o;%)ZEsmKHaO?)1$8;9W43ke zTI=Fg4s}?gHtNh<*6D4Pr-twGm+!1haEDXMl^krXOoZ3?I|tHIx{*S!kxJ{@@IA$S zw3DD6p1Y>ldH&BmpXWVjjr*WA#huEmqfSE2quNa;|GU>soKk1KUi$BGJ6Yr`@~%`* z))aX?F;7VN*K|!ww>Ty1x_eUBfGtSOqoVAn6d=a)riL9+rhQvon z`yB=4Tccby;E~(nyYm~YkWF^lcS$j)CxM}6xoZ}ogmKm$!0h)#^QN#B;roltrufTN ze!0(dR-%a8E>Xjh8)uidBRy`P9ZH06D+z4~-*#ky8`nlI4z);Lda}|t42&dZ-d5aI z7)e}l8#D4~jEn7!2cC0RuSdgol;8j^rIq?SN^)=1A#T(M3wd${9qxl;zp&Gy^F-*2 zWA94fjW_W-a6q2ocT6S&V>Yv^XMkci$tzNs4BU{mV8wz9>L&%JoAedcY%Pn^`3t6- z`~{QT`~`|`%w6D3LV{iqN1dJY)Z{PNr7ri#U(oyVzVZRkbF1kG+)mVy!tydH*W5lg z-emFtEbuCRrtCQg3H3jn4`6}mf3?Y;)OS9BtnPfEd;qbf*!ls+6>TI z{s}66%DoC{t{TSTaKqH0C;`e|OAym9b$yJzB)cr~G(-aJ^T1zi=^E;$E@(!7=W zkDJ=eqD3d_Kdwc~yBR=(^U6-MaG|D{_DowJcU9`9>u8G>F3f5x9Wng6)ijyY*6Qb@ zzLylkX*C7aLAweF&ekw$?Fza_TpMeY^V#j}`#Axg1Djy1tW@hl3+D-`6uXiC8!(X{ zt@LT*|mG0>e02Enh_3Fgd7PRAjd6u6$nE1 zTgo7>3wqH3*$9E)6gMp>yB$xpeBLD3kzSr<{}5SXo>;ko@GA@Wuyp8C>Zur1B! zvyOY|TA$$Jd{H#{0<@EFHoVdG>9#;FY|eXWslVU;k0_=Hq%omiOse9xZFcgBf_~BV1j+G@s=nO-KvU2Wm4G??#uyS(RTowxa z*;=}e>#$&NzR`dnDOq8yx)Ro%GTFWg(le<*(w6NYp2$izy@uvxqcX72IW|MDs@$IZ9HRBl%h6s*K;&UVRyP9a%iSeq{ zMBcws?GMhEulg*LqO_h!+7_;?KHoXy~Eyzo7+tLbSULBZryVEK_&= z=VjXn1v;>Tw`CU?zb5eInROq^WM~}kC3yXE#=>29Qm%D7%l?rzZ%gzd*9=f!qBrQ~ zWk!c+q>ISm$ssDGt|j`a?kO)o7V~$wd_CsxzS`^hIZilMG!KoZ5bsr+)9Ai5IPVy5 z!TR(LtqKO~=UjUeLyTbwK{p>%i_bH_&DZ^KG3Vu}xGhmNMcADhygJXwYh} zvFdE`9W)R@;DGB$0PBrm7KS1*uB9hNFx8E&Co|o64KYL<>>rtw9(YPG;fM0=xOhr5 zLE-WiL48k?Ok=?NL`Vwc_MrFx)g?!<;+6WEPYY`RE5x+22bndo1%3 zC-D-dcM}I-wUcO|lWttIHo#G`6eu0RgfpaBnLU(4b z&Tf9$k_>**(0LG6BF&I(={00R zYUbc4{RkpwCVO}m<3DP@?PlwK10uFoO&EZkV4$I=K&KVoDa!WHw<-K&>a9atG>8VJ z?))Bc#Epe=ai9|Ww&mun@RC;WDkgJYsLkCvP+pJ1l)1cQykcZ8f~&U zXs0&8zunP=&!+NOv@$H~bp?pbc&i`PrP8^-y#J0qpbEoYN5|69v?`?(>p{&ED@MIR z!=>jbNV+8@Tf(4q$eP}YPbF$!R{~|A;+0IBYkj;uY(Ma0MrYm-@S04poclQbZz>fh zOxDcKA~F&iPAL|8cSq?e{LKOqGfN?|8Lw>Rb70C~WG3^dXiDRvBBWFJTE3Lh#W8#5 zcgVqU5Nk!N+1r0kri#Kpyojo~+V)I zEps6XF=7gK;Tl@k!Rxb?ak3>#XFU-HX1=H1} z8I)Nt?Y8yPZYc2Pyj7h(@BNFs_aBt|{?$3}Ps%L4|Kxt&AETGE_mkmlCe2b^BVemIMmvWjwbAFSrAjs<)>rE;W z+iKpVE2X1C8jm}V)w%kKtZ-4_GY{|?W{)sh`uSX}@?%YbZ>rag$3T^6&4*4STP!39~%727@DufwiB=t;c9iK?8o|sPIq<2ez7}2ltGQ5c}XgO*RqyggGM#SVl|8-dfJy84` z1#x~{Hkuz)Tg076WL5|Nw?(Z;hjnUXE)Sq$U{dcLOEk=hf5r45#I_)cqz{@vg$~kp zs0WGKdlQkSTB~wvB0^+WEoi~o$%)#T4A`(5GFi}}9nnO?@@V2gZR{DDXd*Ieb{lqq zC+lZ$)%i-<5>j}DlC~@KbXUE0on^@;jf$5fQbI!CwB;@x;N}Ho#Gg<+R*nsr)f ziD~A!-rPFvep=b1yEyd_|6A4E6>4jaZqTo(hF07=bYg~vCa8ND>LSyuRT*R|LxThr z08YzSK=Czz;`Os#Fa_WVz~h;m(7mqt$A?Xm`y;Jp-RSfAqzr9*O_b;FJ^)Y zoRxRu`~}3Z%RC1E`urn82cRyV**S}+D8nS%gXD5XIh36K9^pW6 z?hPE6KaP6p8#SH>0|yvSIg8J=;#*48vzQhSt65noohRe&xN1=6z!PKnKZ{N=&sRi~ zQlsJ8<}6A36UV*i#kuGB^nY@UG!gusI2Cfw9h7; zN#Gr8*)G06q~WAMI{Y5Cea6-$RxqX}SBBzC&Sh7y5ua@jf2~781`|`WI*PiCS_GrEKg*mT1y3@}H zjM)@vdNr)Qzttq)6*CbbIOsj%klG?7PK?X@7y}z3`B>f>k&V-DEj7u7lxZ_c>hMt_B8(;vb2XVurK=M$8~;Y{bl>j}t&eHA%*rVq?~s`>b1(rqXIYk-y@N zW;x2t1jNh)JP`>zX2o9_BDNsx$#k(TVn1hQU=I(AA&=QY7uOEt2hN#j@Th?jk=}3*E zmv+3X`~@8H=FYuHv*S%(x+M*kH-TPDI%4K9eNE0ho^~EsiS`mTKg)@8S0efQf8x8K(5L^-6s$82?;zohwBRxmwqU4{s)qCHvL# zy;tk}lwNI$`^1=@*z45}|2WV4pZ&O=FIN+9ErB*d@iu=bu)|t=~|(%^I8GiHQd?I9yR zw^baLkrQ0)hnL-pT{)kY74Egjd4zqsW$4?zm`5P=Gcv7sw6wTE3VyAT2xG zrnBWo7xLrNDfzJioSMWvG6T_Zhv9L=NJ@T;Pszbad9xY?d7P*gq^s zJc@dAtjK=m&kRLPi-xVXK``P@K5+z?T4}Rr-^WYcx z=*@3cIghQ#d8{W&dOp=9XC;w{xsy+`>KG9dEAPOh^^ivp zyU$W*C%ByrtFyh<6j#I?c6RcO?Csg(emZPKjkR=nwgy*?S7peS(bQnYlGI`!u-j^>Ynk*fGiEw%bDO>nqt0F)u^V`&jbWnR?Uy3S z*-*;cb=ROiQMv}r>0rUU^Vq7PT}@+A$SdDaUmKnykkres5_pER zyWX`@Nm7@Ps>aXN@uIwj3L5Qt#@jP|e7U!0xXIl!j0?PLEoDjE3=dUq4+NJ*KEW8(tr%vW@H zINDB0v5o#&a{4!J7}`*5o%#3;1@$p&)DvCR)~I!FS(mKECoylZ_3;-Me9{{Ac-JS) zQId*$e4CEGvY=E)KMYjmDgM96|IW9p&+lN7c$!6NyESSvjSu4yJo*Y0DIPlW8-DNc zQ>9szNGQ^QtH0s@7xsXM#5Y3VFEDOq+H2zLQPbZx`-K=T`sV9_;47po82U96W;UZy zyJ5LZp|UnvtBAU*%BP%jlsXId%3Re(#`OaBu0TYpe8zr7bvC;l+hdzUuF-s)r1rEX z3|g(-?TKkk$>Inq1lz@dQH(*mu%}J}O(NsvlHJ`F9E!nKHI`z5{npL5@Wrkj1^mr=RDOqY;!%4sQNTq4_i6p{SWji(8=beG2 z_kQ-pqdPb4N$tbgg?C=RFZ0VJr|7(#BWzEtrV4nW(by0G0aw3gY$fbaarkVs;wGW0 zZ3GhA)0jPjz3N7GrA7ODgq|2g~Bjdc|gAvNVMM9L3p%gQ^^LI1H( zdU~gNEF_)1-C<9j-|!qZ;Lm<*UshUXwV;OzPXgIR+A7a#-P~yWJBkWKB=-hPD6KPMtlN z`x`u`&Ubm>ULJVBUQ7zT`pf>$ANFc*4-ykx6nZef^M|}#<5w?WY+XH|YECry`I*sk zs^&Hfw0(i9sr5J7r103<-R@kq#iTy3i`o~?iP;n9#_aZ3U~>a;?MK-Yr*^l6Se^oH z^G9)RAxng*EEY>loEybLOWMjd<)QfYF$zboGWSDCf)(KfgYcJ&XhQ6l6Oh635`fQ% z61!?939@}S!@1O2wfKwJUl)k@mM%xYDr=00uW|7gY0?F23X*y+$7EWQ4ZeP42+gAy z%d!gTvTcUWGenNFU_DGE9>Ls(e@tm+(*KlFw$!U%4ktC5W{ppi)SLEmF{E{{hA>4w z8G@Hd{L#1=;Bb*WZ6?KYNP#?UDt-bwxsyA~w~g6ErN}T0qsL)LO5AErVB6R{+nT!x zgAsD^4$e_%s$|}mBlc6_B(Ask%llIPTAOIjRyJeT`IpVM-fw%$y2-x`jhKyA&Jmk4 zIR}y9Gu9}KO0B8&KOabOjo(z5T-3%?5^H9ACP3Z_bJVAt7D zeF2Wu>Y1#sv1H-edqKgo!XgOoSk47C_H8TpaOIf{E(t>Tdp! z0iu#V*2LF19AzlZ)-U^x75uPoY2~j9XfD+kwDQ}I;cTe;HZ_4BhmVWY+acffQ1>0W zJ=DESX9THBAY^;K__gN6&+YHU*EGmk(D#dHy|H;u-g)m&@P(}+gKHme?A(rY^=Q3z zCS(q+Q(kMkeaVdS=gaRhbLV@`YI>30+P4~dA8-4A?%M*%i}(W_i-(jy$BgKQZ)YgE z7$xc5u)P-=yY0U?Mx}w1;|GJ*&Dw0pB40rUuw~*6%nVo*-i%tObvz^mD9}M>F#T+O z6H~&Q)}M@sC7*pDG7p3DoEcaSi$Xt}uj4t5al&9<&XguLH@Kq$Tg z)2n``L;x{5MoI*w7rRoSgKsw#FN-9DIaiw7m*MK4cMp%R`v@K31@0(sx3{_bkNjgL z56m8juzz^Q;}@oQCtdAsi^ezlJ*j3yKwyit^bn!_W(wSR(SvgYc5!8(P~xlu5*U12 zXpKUakUj>1fJ|=i6$nOOhG=ka{9nh zkre+_ydq|kDdaRvI?==&FxPXD)C-+hV%Dy(eHr3u&Q3I;ZL!3{4*8<5M(P&Ue@O7m z8hbOw{WT}}SyjGiUX9!}Z3j;PA;oGGF1vAz{?3X}7Em%SjlT)m=gqL+sj)9wSZjZI z4g=9hN2DRO@R=N*pZI236W^!-33B2J&Wov4`|lG_GX6SK^W5JE;_p3?cDO1T-p2tg%L;H5ycKQ0FEyVFqU~tVRTk zEh4VPWCr5`1}1^byUvqtukEw{*0!&&wzhwLwFR`cW&siwSzY4FVyia}DsF&^^izuT$sxX&DR+da(BCE>qoh55#!p-v& zMe1z$PISk8hP&@qyhT(2A=^}$!-C5Fm2V;|_ZhDXcVqA^(Mav$s0@ly^gn?rTvqYK zs05ExeacmRZuf;jj8H=3qo7fReFC9Ks!$VovjIZ|jRbyO#o@JR_EJWH0N{!GFg7aB`i+kO z6)E3Fxoxf67oXkw=HfCI(t^3H3zR`WhWif$2+Ow(<%WTKujlyPb4 zMyG}iR0+F(7QhYWA5Ik3%bN2Pq5x0J7-Z1a9e^$|PdiC=zq3kV5Uu$G0>p5kN!bS) zy?)Po+Ok8uz}$}v$XoRO%?xN9X2z@jm2d2#(8R=;b3?|rtcCaJ!R9lD1dMN`##!^? z;Y0Puq{Bndm^O}JPsZ8JlM*Aas`5RhO9Ww34s4fkbv@soEAu{@ub1}{J=>u>cIxq& zuKuSqH!j%)zm>89$5YlEGit0E2Dh3cjH;nC_L*}A0oR}%`MSe`QNEMVMv&28zzfZl zCi+-{7HG>yfxr|-B!`alijY9nCw5;+&!r{=G6s82Xsx>-qu`^N`hZg*BNCIS^;J&T zv$yQvs2g|Ilf-dpw>%tsXRX$`~t4KU(v)=aJ3kn&TF|mSa*kj@ zkKb93eSO~#J|dcTf43f=qRfNlD^j>@1$XgY6u1%rO9qE@g3z%CIhXB#3<^=uKfqD= z)koCv_loHVa9K$&6J~7s$K%KtN!MWF~UkmFkPz7wr${7racsu(R+L3;sBFDD3J11 zT+%782OXQtE7vJsMZDsz$G{I*PtCih$rdMaY8tG`o}rTDI}o<|j&-qBB1I?K+C^*N37!coSto5{umq6Ut9fRYpRYP`y1XH6vJ)k=XSRvb zGA!G>tTu58K=Yl+s!b=!oAO~R&8amE@q76w=s0x52$Tp8f0EWPkAC!-XS# zXcb9TxcC*^_v3S8uD(W?1WK(JxvU7UUN>}na^F;rqg8R=LoSJxA}LX0{mw==91t^6 zwv7`}+$ZO`x&$Ye!j`AbhYfBx=iZUT-AUwb=a4KGE6V~u z8#LjuLg*JjAMUejF~^2+fO0;GY zVdz_jR>R^wJ(S2_o_C{rAhgp6MoVsVEW3zml9*cJxx65P)q2&zKs-lwznv9i^=jy2 zq?gLtccTV%!Wvj3Jl3D5Ej

_;LvTV|&MjjTORX*jv;EYBS7SVRLFT&}bWy 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
1SD4Aq5Nme=irxB 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%0D2a8 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≫S}eYI?pake46ESxk4x5xv@R2p^OAEWA$&i(aAu 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

#|z#7R2RTEadWU$!NR$@O7;$(crp{rIx; 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%0D%G(C^Nt{?mEizZU)nQ;q`AZ`HUWt*$@b_ta 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�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�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

c=&*9}he!*&Bh+K_H&Kj6{D4M}H1SJA|Vh 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�WUnm?p0)s<<*A**w{N99$M6 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

  • j2{J>j`5>FIgB3#BFFeq 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%0DN4FpT@6Tc7q1e(jEMQl0~>K92-(Kh5Y9wQ}Ki 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 literal 0 HcmV?d00001 diff --git a/vendor/sdl3/ttf/SDL3_ttf.lib b/vendor/sdl3/ttf/SDL3_ttf.lib new file mode 100644 index 0000000000000000000000000000000000000000..5716c5661a01d2e7dc33a576ab01b1be82f288f1 GIT binary patch literal 28030 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 literal 0 HcmV?d00001 diff --git a/vendor/sdl3/ttf/include/SDL_textengine.h b/vendor/sdl3/ttf/include/SDL_textengine.h new file mode 100644 index 000000000..9f5f1f0c3 --- /dev/null +++ b/vendor/sdl3/ttf/include/SDL_textengine.h @@ -0,0 +1,181 @@ +/* + SDL_ttf: A companion library to SDL for working with TrueType (tm) fonts + Copyright (C) 2001-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + + +/** + * \file SDL_textengine.h + * + * Definitions for implementations of the TTF_TextEngine interface. + */ +#ifndef SDL_TTF_TEXTENGINE_H_ +#define SDL_TTF_TEXTENGINE_H_ + +#include +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * A font atlas draw command. + * + * \since This enum is available since SDL_ttf 3.0.0. + */ +typedef enum TTF_DrawCommand +{ + TTF_DRAW_COMMAND_NOOP, + TTF_DRAW_COMMAND_FILL, + TTF_DRAW_COMMAND_COPY +} TTF_DrawCommand; + +/** + * A filled rectangle draw operation. + * + * \since This struct is available since SDL_ttf 3.0.0. + * + * \sa TTF_DrawOperation + */ +typedef struct TTF_FillOperation +{ + TTF_DrawCommand cmd; /**< TTF_DRAW_COMMAND_FILL */ + SDL_Rect rect; /**< The rectangle to fill, in pixels. The x coordinate is relative to the left side of the text area, going right, and the y coordinate is relative to the top side of the text area, going down. */ +} TTF_FillOperation; + +/** + * A texture copy draw operation. + * + * \since This struct is available since SDL_ttf 3.0.0. + * + * \sa TTF_DrawOperation + */ +typedef struct TTF_CopyOperation +{ + TTF_DrawCommand cmd; /**< TTF_DRAW_COMMAND_COPY */ + int text_offset; /**< The offset in the text corresponding to this glyph. + There may be multiple glyphs with the same text offset + and the next text offset might be several Unicode codepoints + later. In this case the glyphs and codepoints are grouped + together and the group bounding box is the union of the dst + rectangles for the corresponding glyphs. */ + TTF_Font *glyph_font; /**< The font containing the glyph to be drawn, can be passed to TTF_GetGlyphImageForIndex() */ + Uint32 glyph_index; /**< The glyph index of the glyph to be drawn, can be passed to TTF_GetGlyphImageForIndex() */ + SDL_Rect src; /**< The area within the glyph to be drawn */ + SDL_Rect dst; /**< The drawing coordinates of the glyph, in pixels. The x coordinate is relative to the left side of the text area, going right, and the y coordinate is relative to the top side of the text area, going down. */ + void *reserved; +} TTF_CopyOperation; + +/** + * A text engine draw operation. + * + * \since This struct is available since SDL_ttf 3.0.0. + */ +typedef union TTF_DrawOperation +{ + TTF_DrawCommand cmd; + TTF_FillOperation fill; + TTF_CopyOperation copy; +} TTF_DrawOperation; + + +/* Private data in TTF_Text, to assist in text measurement and layout */ +typedef struct TTF_TextLayout TTF_TextLayout; + + +/* Private data in TTF_Text, available to implementations */ +struct TTF_TextData +{ + TTF_Font *font; /**< The font used by this text, read-only. */ + SDL_FColor color; /**< The color of the text, read-only. */ + + bool needs_layout_update; /**< True if the layout needs to be updated */ + TTF_TextLayout *layout; /**< Cached layout information, read-only. */ + int x; /**< The x offset of the upper left corner of this text, in pixels, read-only. */ + int y; /**< The y offset of the upper left corner of this text, in pixels, read-only. */ + int w; /**< The width of this text, in pixels, read-only. */ + int h; /**< The height of this text, in pixels, read-only. */ + int num_ops; /**< The number of drawing operations to render this text, read-only. */ + TTF_DrawOperation *ops; /**< The drawing operations used to render this text, read-only. */ + int num_clusters; /**< The number of substrings representing clusters of glyphs in the string, read-only */ + TTF_SubString *clusters; /**< Substrings representing clusters of glyphs in the string, read-only */ + + SDL_PropertiesID props; /**< Custom properties associated with this text, read-only. This field is created as-needed using TTF_GetTextProperties() and the properties may be then set and read normally */ + + bool needs_engine_update; /**< True if the engine text needs to be updated */ + TTF_TextEngine *engine; /**< The engine used to render this text, read-only. */ + void *engine_text; /**< The implementation-specific representation of this text */ +}; + +/** + * A text engine interface. + * + * This structure should be initialized using SDL_INIT_INTERFACE() + * + * \since This struct is available since SDL_ttf 3.0.0. + * + * \sa SDL_INIT_INTERFACE + */ +struct TTF_TextEngine +{ + Uint32 version; /**< The version of this interface */ + + void *userdata; /**< User data pointer passed to callbacks */ + + /* Create a text representation from draw instructions. + * + * All fields of `text` except `internal->engine_text` will already be filled out. + * + * This function should set the `internal->engine_text` field to a non-NULL value. + * + * \param userdata the userdata pointer in this interface. + * \param text the text object being created. + */ + bool (SDLCALL *CreateText)(void *userdata, TTF_Text *text); + + /** + * Destroy a text representation. + */ + void (SDLCALL *DestroyText)(void *userdata, TTF_Text *text); + +}; + +/* Check the size of TTF_TextEngine + * + * If this assert fails, either the compiler is padding to an unexpected size, + * or the interface has been updated and this should be updated to match and + * the code using this interface should be updated to handle the old version. + */ +SDL_COMPILE_TIME_ASSERT(TTF_TextEngine_SIZE, + (sizeof(void *) == 4 && sizeof(TTF_TextEngine) == 16) || + (sizeof(void *) == 8 && sizeof(TTF_TextEngine) == 32)); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_TTF_TEXTENGINE_H_ */ + diff --git a/vendor/sdl3/ttf/include/SDL_ttf.h b/vendor/sdl3/ttf/include/SDL_ttf.h new file mode 100644 index 000000000..b723bc74e --- /dev/null +++ b/vendor/sdl3/ttf/include/SDL_ttf.h @@ -0,0 +1,2833 @@ +/* + SDL_ttf: A companion library to SDL for working with TrueType (tm) fonts + Copyright (C) 2001-2025 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* WIKI CATEGORY: SDLTTF */ + +/** + * # CategorySDLTTF + * + * Header file for SDL_ttf library + * + * This library is a wrapper around the excellent FreeType 2.0 library, + * available at: https://www.freetype.org/ + */ + +#ifndef SDL_TTF_H_ +#define SDL_TTF_H_ + +#include +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Printable format: "%d.%d.%d", MAJOR, MINOR, MICRO + */ +#define SDL_TTF_MAJOR_VERSION 3 +#define SDL_TTF_MINOR_VERSION 2 +#define SDL_TTF_MICRO_VERSION 2 + +/** + * This is the version number macro for the current SDL_ttf version. + */ +#define SDL_TTF_VERSION \ + SDL_VERSIONNUM(SDL_TTF_MAJOR_VERSION, SDL_TTF_MINOR_VERSION, SDL_TTF_MICRO_VERSION) + +/** + * This macro will evaluate to true if compiled with SDL_ttf at least X.Y.Z. + */ +#define SDL_TTF_VERSION_ATLEAST(X, Y, Z) \ + ((SDL_TTF_MAJOR_VERSION >= X) && \ + (SDL_TTF_MAJOR_VERSION > X || SDL_TTF_MINOR_VERSION >= Y) && \ + (SDL_TTF_MAJOR_VERSION > X || SDL_TTF_MINOR_VERSION > Y || SDL_TTF_MICRO_VERSION >= Z)) + +/** + * This function gets the version of the dynamically linked SDL_ttf library. + * + * \returns SDL_ttf version. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC int SDLCALL TTF_Version(void); + +/** + * Query the version of the FreeType library in use. + * + * TTF_Init() should be called before calling this function. + * + * \param major to be filled in with the major version number. Can be NULL. + * \param minor to be filled in with the minor version number. Can be NULL. + * \param patch to be filled in with the param version number. Can be NULL. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_Init + */ +extern SDL_DECLSPEC void SDLCALL TTF_GetFreeTypeVersion(int *major, int *minor, int *patch); + +/** + * Query the version of the HarfBuzz library in use. + * + * If HarfBuzz is not available, the version reported is 0.0.0. + * + * \param major to be filled in with the major version number. Can be NULL. + * \param minor to be filled in with the minor version number. Can be NULL. + * \param patch to be filled in with the param version number. Can be NULL. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC void SDLCALL TTF_GetHarfBuzzVersion(int *major, int *minor, int *patch); + +/** + * The internal structure containing font information. + * + * Opaque data! + */ +typedef struct TTF_Font TTF_Font; + +/** + * Initialize SDL_ttf. + * + * You must successfully call this function before it is safe to call any + * other function in this library. + * + * It is safe to call this more than once, and each successful TTF_Init() call + * should be paired with a matching TTF_Quit() call. + * + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_Quit + */ +extern SDL_DECLSPEC bool SDLCALL TTF_Init(void); + +/** + * Create a font from a file, using a specified point size. + * + * Some .fon fonts will have several sizes embedded in the file, so the point + * size becomes the index of choosing which size. If the value is too high, + * the last indexed size will be the default. + * + * When done with the returned TTF_Font, use TTF_CloseFont() to dispose of it. + * + * \param file path to font file. + * \param ptsize point size to use for the newly-opened font. + * \returns a valid TTF_Font, or NULL on failure; call SDL_GetError() for more + * information. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CloseFont + */ +extern SDL_DECLSPEC TTF_Font * SDLCALL TTF_OpenFont(const char *file, float ptsize); + +/** + * Create a font from an SDL_IOStream, using a specified point size. + * + * Some .fon fonts will have several sizes embedded in the file, so the point + * size becomes the index of choosing which size. If the value is too high, + * the last indexed size will be the default. + * + * If `closeio` is true, `src` will be automatically closed once the font is + * closed. Otherwise you should close `src` yourself after closing the font. + * + * When done with the returned TTF_Font, use TTF_CloseFont() to dispose of it. + * + * \param src an SDL_IOStream to provide a font file's data. + * \param closeio true to close `src` when the font is closed, false to leave + * it open. + * \param ptsize point size to use for the newly-opened font. + * \returns a valid TTF_Font, or NULL on failure; call SDL_GetError() for more + * information. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CloseFont + */ +extern SDL_DECLSPEC TTF_Font * SDLCALL TTF_OpenFontIO(SDL_IOStream *src, bool closeio, float ptsize); + +/** + * Create a font with the specified properties. + * + * These are the supported properties: + * + * - `TTF_PROP_FONT_CREATE_FILENAME_STRING`: the font file to open, if an + * SDL_IOStream isn't being used. This is required if + * `TTF_PROP_FONT_CREATE_IOSTREAM_POINTER` and + * `TTF_PROP_FONT_CREATE_EXISTING_FONT` aren't set. + * - `TTF_PROP_FONT_CREATE_IOSTREAM_POINTER`: an SDL_IOStream containing the + * font to be opened. This should not be closed until the font is closed. + * This is required if `TTF_PROP_FONT_CREATE_FILENAME_STRING` and + * `TTF_PROP_FONT_CREATE_EXISTING_FONT` aren't set. + * - `TTF_PROP_FONT_CREATE_IOSTREAM_OFFSET_NUMBER`: the offset in the iostream + * for the beginning of the font, defaults to 0. + * - `TTF_PROP_FONT_CREATE_IOSTREAM_AUTOCLOSE_BOOLEAN`: true if closing the + * font should also close the associated SDL_IOStream. + * - `TTF_PROP_FONT_CREATE_SIZE_FLOAT`: the point size of the font. Some .fon + * fonts will have several sizes embedded in the file, so the point size + * becomes the index of choosing which size. If the value is too high, the + * last indexed size will be the default. + * - `TTF_PROP_FONT_CREATE_FACE_NUMBER`: the face index of the font, if the + * font contains multiple font faces. + * - `TTF_PROP_FONT_CREATE_HORIZONTAL_DPI_NUMBER`: the horizontal DPI to use + * for font rendering, defaults to + * `TTF_PROP_FONT_CREATE_VERTICAL_DPI_NUMBER` if set, or 72 otherwise. + * - `TTF_PROP_FONT_CREATE_VERTICAL_DPI_NUMBER`: the vertical DPI to use for + * font rendering, defaults to `TTF_PROP_FONT_CREATE_HORIZONTAL_DPI_NUMBER` + * if set, or 72 otherwise. + * - `TTF_PROP_FONT_CREATE_EXISTING_FONT`: an optional TTF_Font that, if set, + * will be used as the font data source and the initial size and style of + * the new font. + * + * \param props the properties to use. + * \returns a valid TTF_Font, or NULL on failure; call SDL_GetError() for more + * information. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CloseFont + */ +extern SDL_DECLSPEC TTF_Font * SDLCALL TTF_OpenFontWithProperties(SDL_PropertiesID props); + +#define TTF_PROP_FONT_CREATE_FILENAME_STRING "SDL_ttf.font.create.filename" +#define TTF_PROP_FONT_CREATE_IOSTREAM_POINTER "SDL_ttf.font.create.iostream" +#define TTF_PROP_FONT_CREATE_IOSTREAM_OFFSET_NUMBER "SDL_ttf.font.create.iostream.offset" +#define TTF_PROP_FONT_CREATE_IOSTREAM_AUTOCLOSE_BOOLEAN "SDL_ttf.font.create.iostream.autoclose" +#define TTF_PROP_FONT_CREATE_SIZE_FLOAT "SDL_ttf.font.create.size" +#define TTF_PROP_FONT_CREATE_FACE_NUMBER "SDL_ttf.font.create.face" +#define TTF_PROP_FONT_CREATE_HORIZONTAL_DPI_NUMBER "SDL_ttf.font.create.hdpi" +#define TTF_PROP_FONT_CREATE_VERTICAL_DPI_NUMBER "SDL_ttf.font.create.vdpi" +#define TTF_PROP_FONT_CREATE_EXISTING_FONT "SDL_ttf.font.create.existing_font" + +/** + * Create a copy of an existing font. + * + * The copy will be distinct from the original, but will share the font file + * and have the same size and style as the original. + * + * When done with the returned TTF_Font, use TTF_CloseFont() to dispose of it. + * + * \param existing_font the font to copy. + * \returns a valid TTF_Font, or NULL on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * original font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CloseFont + */ +extern SDL_DECLSPEC TTF_Font * SDLCALL TTF_CopyFont(TTF_Font *existing_font); + +/** + * Get the properties associated with a font. + * + * The following read-write properties are provided by SDL: + * + * - `TTF_PROP_FONT_OUTLINE_LINE_CAP_NUMBER`: The FT_Stroker_LineCap value + * used when setting the font outline, defaults to + * `FT_STROKER_LINECAP_ROUND`. + * - `TTF_PROP_FONT_OUTLINE_LINE_JOIN_NUMBER`: The FT_Stroker_LineJoin value + * used when setting the font outline, defaults to + * `FT_STROKER_LINEJOIN_ROUND`. + * - `TTF_PROP_FONT_OUTLINE_MITER_LIMIT_NUMBER`: The FT_Fixed miter limit used + * when setting the font outline, defaults to 0. + * + * \param font the font to query. + * \returns a valid property ID on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC SDL_PropertiesID SDLCALL TTF_GetFontProperties(TTF_Font *font); + +#define TTF_PROP_FONT_OUTLINE_LINE_CAP_NUMBER "SDL_ttf.font.outline.line_cap" +#define TTF_PROP_FONT_OUTLINE_LINE_JOIN_NUMBER "SDL_ttf.font.outline.line_join" +#define TTF_PROP_FONT_OUTLINE_MITER_LIMIT_NUMBER "SDL_ttf.font.outline.miter_limit" + +/** + * Get the font generation. + * + * The generation is incremented each time font properties change that require + * rebuilding glyphs, such as style, size, etc. + * + * \param font the font to query. + * \returns the font generation or 0 on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC Uint32 SDLCALL TTF_GetFontGeneration(TTF_Font *font); + +/** + * Add a fallback font. + * + * Add a font that will be used for glyphs that are not in the current font. + * The fallback font should have the same size and style as the current font. + * + * If there are multiple fallback fonts, they are used in the order added. + * + * This updates any TTF_Text objects using this font. + * + * \param font the font to modify. + * \param fallback the font to add as a fallback. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created + * both fonts. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_ClearFallbackFonts + * \sa TTF_RemoveFallbackFont + */ +extern SDL_DECLSPEC bool SDLCALL TTF_AddFallbackFont(TTF_Font *font, TTF_Font *fallback); + +/** + * Remove a fallback font. + * + * This updates any TTF_Text objects using this font. + * + * \param font the font to modify. + * \param fallback the font to remove as a fallback. + * + * \threadsafety This function should be called on the thread that created + * both fonts. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_AddFallbackFont + * \sa TTF_ClearFallbackFonts + */ +extern SDL_DECLSPEC void SDLCALL TTF_RemoveFallbackFont(TTF_Font *font, TTF_Font *fallback); + +/** + * Remove all fallback fonts. + * + * This updates any TTF_Text objects using this font. + * + * \param font the font to modify. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_AddFallbackFont + * \sa TTF_RemoveFallbackFont + */ +extern SDL_DECLSPEC void SDLCALL TTF_ClearFallbackFonts(TTF_Font *font); + +/** + * Set a font's size dynamically. + * + * This updates any TTF_Text objects using this font, and clears + * already-generated glyphs, if any, from the cache. + * + * \param font the font to resize. + * \param ptsize the new point size. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetFontSize + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetFontSize(TTF_Font *font, float ptsize); + +/** + * Set font size dynamically with target resolutions, in dots per inch. + * + * This updates any TTF_Text objects using this font, and clears + * already-generated glyphs, if any, from the cache. + * + * \param font the font to resize. + * \param ptsize the new point size. + * \param hdpi the target horizontal DPI. + * \param vdpi the target vertical DPI. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetFontSize + * \sa TTF_GetFontSizeDPI + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetFontSizeDPI(TTF_Font *font, float ptsize, int hdpi, int vdpi); + +/** + * Get the size of a font. + * + * \param font the font to query. + * \returns the size of the font, or 0.0f on failure; call SDL_GetError() for + * more information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetFontSize + * \sa TTF_SetFontSizeDPI + */ +extern SDL_DECLSPEC float SDLCALL TTF_GetFontSize(TTF_Font *font); + +/** + * Get font target resolutions, in dots per inch. + * + * \param font the font to query. + * \param hdpi a pointer filled in with the target horizontal DPI. + * \param vdpi a pointer filled in with the target vertical DPI. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetFontSizeDPI + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetFontDPI(TTF_Font *font, int *hdpi, int *vdpi); + +/** + * Font style flags for TTF_Font + * + * These are the flags which can be used to set the style of a font in + * SDL_ttf. A combination of these flags can be used with functions that set + * or query font style, such as TTF_SetFontStyle or TTF_GetFontStyle. + * + * \since This datatype is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetFontStyle + * \sa TTF_GetFontStyle + */ +typedef Uint32 TTF_FontStyleFlags; + +#define TTF_STYLE_NORMAL 0x00 /**< No special style */ +#define TTF_STYLE_BOLD 0x01 /**< Bold style */ +#define TTF_STYLE_ITALIC 0x02 /**< Italic style */ +#define TTF_STYLE_UNDERLINE 0x04 /**< Underlined text */ +#define TTF_STYLE_STRIKETHROUGH 0x08 /**< Strikethrough text */ + +/** + * Set a font's current style. + * + * This updates any TTF_Text objects using this font, and clears + * already-generated glyphs, if any, from the cache. + * + * The font styles are a set of bit flags, OR'd together: + * + * - `TTF_STYLE_NORMAL` (is zero) + * - `TTF_STYLE_BOLD` + * - `TTF_STYLE_ITALIC` + * - `TTF_STYLE_UNDERLINE` + * - `TTF_STYLE_STRIKETHROUGH` + * + * \param font the font to set a new style on. + * \param style the new style values to set, OR'd together. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetFontStyle + */ +extern SDL_DECLSPEC void SDLCALL TTF_SetFontStyle(TTF_Font *font, TTF_FontStyleFlags style); + +/** + * Query a font's current style. + * + * The font styles are a set of bit flags, OR'd together: + * + * - `TTF_STYLE_NORMAL` (is zero) + * - `TTF_STYLE_BOLD` + * - `TTF_STYLE_ITALIC` + * - `TTF_STYLE_UNDERLINE` + * - `TTF_STYLE_STRIKETHROUGH` + * + * \param font the font to query. + * \returns the current font style, as a set of bit flags. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetFontStyle + */ +extern SDL_DECLSPEC TTF_FontStyleFlags SDLCALL TTF_GetFontStyle(const TTF_Font *font); + +/** + * Set a font's current outline. + * + * This uses the font properties `TTF_PROP_FONT_OUTLINE_LINE_CAP_NUMBER`, + * `TTF_PROP_FONT_OUTLINE_LINE_JOIN_NUMBER`, and + * `TTF_PROP_FONT_OUTLINE_MITER_LIMIT_NUMBER` when setting the font outline. + * + * This updates any TTF_Text objects using this font, and clears + * already-generated glyphs, if any, from the cache. + * + * \param font the font to set a new outline on. + * \param outline positive outline value, 0 to default. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetFontOutline + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetFontOutline(TTF_Font *font, int outline); + +/** + * Query a font's current outline. + * + * \param font the font to query. + * \returns the font's current outline value. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetFontOutline + */ +extern SDL_DECLSPEC int SDLCALL TTF_GetFontOutline(const TTF_Font *font); + +/** + * Hinting flags for TTF (TrueType Fonts) + * + * This enum specifies the level of hinting to be applied to the font + * rendering. The hinting level determines how much the font's outlines are + * adjusted for better alignment on the pixel grid. + * + * \since This enum is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetFontHinting + * \sa TTF_GetFontHinting + */ +typedef enum TTF_HintingFlags +{ + TTF_HINTING_INVALID = -1, + TTF_HINTING_NORMAL, /**< Normal hinting applies standard grid-fitting. */ + TTF_HINTING_LIGHT, /**< Light hinting applies subtle adjustments to improve rendering. */ + TTF_HINTING_MONO, /**< Monochrome hinting adjusts the font for better rendering at lower resolutions. */ + TTF_HINTING_NONE, /**< No hinting, the font is rendered without any grid-fitting. */ + TTF_HINTING_LIGHT_SUBPIXEL /**< Light hinting with subpixel rendering for more precise font edges. */ +} TTF_HintingFlags; + +/** + * Set a font's current hinter setting. + * + * This updates any TTF_Text objects using this font, and clears + * already-generated glyphs, if any, from the cache. + * + * The hinter setting is a single value: + * + * - `TTF_HINTING_NORMAL` + * - `TTF_HINTING_LIGHT` + * - `TTF_HINTING_MONO` + * - `TTF_HINTING_NONE` + * - `TTF_HINTING_LIGHT_SUBPIXEL` (available in SDL_ttf 3.0.0 and later) + * + * \param font the font to set a new hinter setting on. + * \param hinting the new hinter setting. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetFontHinting + */ +extern SDL_DECLSPEC void SDLCALL TTF_SetFontHinting(TTF_Font *font, TTF_HintingFlags hinting); + +/** + * Query the number of faces of a font. + * + * \param font the font to query. + * \returns the number of FreeType font faces. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC int SDLCALL TTF_GetNumFontFaces(const TTF_Font *font); + +/** + * Query a font's current FreeType hinter setting. + * + * The hinter setting is a single value: + * + * - `TTF_HINTING_NORMAL` + * - `TTF_HINTING_LIGHT` + * - `TTF_HINTING_MONO` + * - `TTF_HINTING_NONE` + * - `TTF_HINTING_LIGHT_SUBPIXEL` (available in SDL_ttf 3.0.0 and later) + * + * \param font the font to query. + * \returns the font's current hinter value, or TTF_HINTING_INVALID if the + * font is invalid. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetFontHinting + */ +extern SDL_DECLSPEC TTF_HintingFlags SDLCALL TTF_GetFontHinting(const TTF_Font *font); + +/** + * Enable Signed Distance Field rendering for a font. + * + * SDF is a technique that helps fonts look sharp even when scaling and + * rotating, and requires special shader support for display. + * + * This works with Blended APIs, and generates the raw signed distance values + * in the alpha channel of the resulting texture. + * + * This updates any TTF_Text objects using this font, and clears + * already-generated glyphs, if any, from the cache. + * + * \param font the font to set SDF support on. + * \param enabled true to enable SDF, false to disable. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetFontSDF + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetFontSDF(TTF_Font *font, bool enabled); + +/** + * Query whether Signed Distance Field rendering is enabled for a font. + * + * \param font the font to query. + * \returns true if enabled, false otherwise. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetFontSDF + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetFontSDF(const TTF_Font *font); + +/** + * Query a font's weight, in terms of the lightness/heaviness of the strokes. + * + * \param font the font to query. + * \returns the font's current weight. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.4.0. + */ +extern SDL_DECLSPEC int SDLCALL TTF_GetFontWeight(const TTF_Font *font); + +#define TTF_FONT_WEIGHT_THIN 100 /**< Thin (100) named font weight value */ +#define TTF_FONT_WEIGHT_EXTRA_LIGHT 200 /**< ExtraLight (200) named font weight value */ +#define TTF_FONT_WEIGHT_LIGHT 300 /**< Light (300) named font weight value */ +#define TTF_FONT_WEIGHT_NORMAL 400 /**< Normal (400) named font weight value */ +#define TTF_FONT_WEIGHT_MEDIUM 500 /**< Medium (500) named font weight value */ +#define TTF_FONT_WEIGHT_SEMI_BOLD 600 /**< SemiBold (600) named font weight value */ +#define TTF_FONT_WEIGHT_BOLD 700 /**< Bold (700) named font weight value */ +#define TTF_FONT_WEIGHT_EXTRA_BOLD 800 /**< ExtraBold (800) named font weight value */ +#define TTF_FONT_WEIGHT_BLACK 900 /**< Black (900) named font weight value */ +#define TTF_FONT_WEIGHT_EXTRA_BLACK 950 /**< ExtraBlack (950) named font weight value */ + +/** + * The horizontal alignment used when rendering wrapped text. + * + * \since This enum is available since SDL_ttf 3.0.0. + */ +typedef enum TTF_HorizontalAlignment +{ + TTF_HORIZONTAL_ALIGN_INVALID = -1, + TTF_HORIZONTAL_ALIGN_LEFT, + TTF_HORIZONTAL_ALIGN_CENTER, + TTF_HORIZONTAL_ALIGN_RIGHT +} TTF_HorizontalAlignment; + +/** + * Set a font's current wrap alignment option. + * + * This updates any TTF_Text objects using this font. + * + * \param font the font to set a new wrap alignment option on. + * \param align the new wrap alignment option. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetFontWrapAlignment + */ +extern SDL_DECLSPEC void SDLCALL TTF_SetFontWrapAlignment(TTF_Font *font, TTF_HorizontalAlignment align); + +/** + * Query a font's current wrap alignment option. + * + * \param font the font to query. + * \returns the font's current wrap alignment option. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetFontWrapAlignment + */ +extern SDL_DECLSPEC TTF_HorizontalAlignment SDLCALL TTF_GetFontWrapAlignment(const TTF_Font *font); + +/** + * Query the total height of a font. + * + * This is usually equal to point size. + * + * \param font the font to query. + * \returns the font's height. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC int SDLCALL TTF_GetFontHeight(const TTF_Font *font); + +/** + * Query the offset from the baseline to the top of a font. + * + * This is a positive value, relative to the baseline. + * + * \param font the font to query. + * \returns the font's ascent. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC int SDLCALL TTF_GetFontAscent(const TTF_Font *font); + +/** + * Query the offset from the baseline to the bottom of a font. + * + * This is a negative value, relative to the baseline. + * + * \param font the font to query. + * \returns the font's descent. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC int SDLCALL TTF_GetFontDescent(const TTF_Font *font); + +/** + * Set the spacing between lines of text for a font. + * + * This updates any TTF_Text objects using this font. + * + * \param font the font to modify. + * \param lineskip the new line spacing for the font. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetFontLineSkip + */ +extern SDL_DECLSPEC void SDLCALL TTF_SetFontLineSkip(TTF_Font *font, int lineskip); + +/** + * Query the spacing between lines of text for a font. + * + * \param font the font to query. + * \returns the font's recommended spacing. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetFontLineSkip + */ +extern SDL_DECLSPEC int SDLCALL TTF_GetFontLineSkip(const TTF_Font *font); + +/** + * Set if kerning is enabled for a font. + * + * Newly-opened fonts default to allowing kerning. This is generally a good + * policy unless you have a strong reason to disable it, as it tends to + * produce better rendering (with kerning disabled, some fonts might render + * the word `kerning` as something that looks like `keming` for example). + * + * This updates any TTF_Text objects using this font. + * + * \param font the font to set kerning on. + * \param enabled true to enable kerning, false to disable. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetFontKerning + */ +extern SDL_DECLSPEC void SDLCALL TTF_SetFontKerning(TTF_Font *font, bool enabled); + +/** + * Query whether or not kerning is enabled for a font. + * + * \param font the font to query. + * \returns true if kerning is enabled, false otherwise. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetFontKerning + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetFontKerning(const TTF_Font *font); + +/** + * Query whether a font is fixed-width. + * + * A "fixed-width" font means all glyphs are the same width across; a + * lowercase 'i' will be the same size across as a capital 'W', for example. + * This is common for terminals and text editors, and other apps that treat + * text as a grid. Most other things (WYSIWYG word processors, web pages, etc) + * are more likely to not be fixed-width in most cases. + * + * \param font the font to query. + * \returns true if the font is fixed-width, false otherwise. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_FontIsFixedWidth(const TTF_Font *font); + +/** + * Query whether a font is scalable or not. + * + * Scalability lets us distinguish between outline and bitmap fonts. + * + * \param font the font to query. + * \returns true if the font is scalable, false otherwise. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetFontSDF + */ +extern SDL_DECLSPEC bool SDLCALL TTF_FontIsScalable(const TTF_Font *font); + +/** + * Query a font's family name. + * + * This string is dictated by the contents of the font file. + * + * Note that the returned string is to internal storage, and should not be + * modified or free'd by the caller. The string becomes invalid, with the rest + * of the font, when `font` is handed to TTF_CloseFont(). + * + * \param font the font to query. + * \returns the font's family name. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC const char * SDLCALL TTF_GetFontFamilyName(const TTF_Font *font); + +/** + * Query a font's style name. + * + * This string is dictated by the contents of the font file. + * + * Note that the returned string is to internal storage, and should not be + * modified or free'd by the caller. The string becomes invalid, with the rest + * of the font, when `font` is handed to TTF_CloseFont(). + * + * \param font the font to query. + * \returns the font's style name. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC const char * SDLCALL TTF_GetFontStyleName(const TTF_Font *font); + +/** + * Direction flags + * + * The values here are chosen to match + * [hb_direction_t](https://harfbuzz.github.io/harfbuzz-hb-common.html#hb-direction-t) + * . + * + * \since This enum is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetFontDirection + */ +typedef enum TTF_Direction +{ + TTF_DIRECTION_INVALID = 0, + TTF_DIRECTION_LTR = 4, /**< Left to Right */ + TTF_DIRECTION_RTL, /**< Right to Left */ + TTF_DIRECTION_TTB, /**< Top to Bottom */ + TTF_DIRECTION_BTT /**< Bottom to Top */ +} TTF_Direction; + +/** + * Set the direction to be used for text shaping by a font. + * + * This function only supports left-to-right text shaping if SDL_ttf was not + * built with HarfBuzz support. + * + * This updates any TTF_Text objects using this font. + * + * \param font the font to modify. + * \param direction the new direction for text to flow. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetFontDirection(TTF_Font *font, TTF_Direction direction); + +/** + * Get the direction to be used for text shaping by a font. + * + * This defaults to TTF_DIRECTION_INVALID if it hasn't been set. + * + * \param font the font to query. + * \returns the direction to be used for text shaping. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC TTF_Direction SDLCALL TTF_GetFontDirection(TTF_Font *font); + +/** + * Convert from a 4 character string to a 32-bit tag. + * + * \param string the 4 character string to convert. + * \returns the 32-bit representation of the string. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_TagToString + */ +extern SDL_DECLSPEC Uint32 SDLCALL TTF_StringToTag(const char *string); + +/** + * Convert from a 32-bit tag to a 4 character string. + * + * \param tag the 32-bit tag to convert. + * \param string a pointer filled in with the 4 character representation of + * the tag. + * \param size the size of the buffer pointed at by string, should be at least + * 4. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_TagToString + */ +extern SDL_DECLSPEC void SDLCALL TTF_TagToString(Uint32 tag, char *string, size_t size); + +/** + * Set the script to be used for text shaping by a font. + * + * This returns false if SDL_ttf isn't built with HarfBuzz support. + * + * This updates any TTF_Text objects using this font. + * + * \param font the font to modify. + * \param script an + * [ISO 15924 code](https://unicode.org/iso15924/iso15924-codes.html) + * . + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_StringToTag + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetFontScript(TTF_Font *font, Uint32 script); + +/** + * Get the script used for text shaping a font. + * + * \param font the font to query. + * \returns an + * [ISO 15924 code](https://unicode.org/iso15924/iso15924-codes.html) + * or 0 if a script hasn't been set. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_TagToString + */ +extern SDL_DECLSPEC Uint32 SDLCALL TTF_GetFontScript(TTF_Font *font); + +/** + * Get the script used by a 32-bit codepoint. + * + * \param ch the character code to check. + * \returns an + * [ISO 15924 code](https://unicode.org/iso15924/iso15924-codes.html) + * on success, or 0 on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function is thread-safe. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_TagToString + */ +extern SDL_DECLSPEC Uint32 SDLCALL TTF_GetGlyphScript(Uint32 ch); + +/** + * Set language to be used for text shaping by a font. + * + * If SDL_ttf was not built with HarfBuzz support, this function returns + * false. + * + * This updates any TTF_Text objects using this font. + * + * \param font the font to specify a language for. + * \param language_bcp47 a null-terminated string containing the desired + * language's BCP47 code. Or null to reset the value. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetFontLanguage(TTF_Font *font, const char *language_bcp47); + +/** + * Check whether a glyph is provided by the font for a UNICODE codepoint. + * + * \param font the font to query. + * \param ch the codepoint to check. + * \returns true if font provides a glyph for this character, false if not. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_FontHasGlyph(TTF_Font *font, Uint32 ch); + +/** + * The type of data in a glyph image + * + * \since This enum is available since SDL_ttf 3.0.0. + */ +typedef enum TTF_ImageType +{ + TTF_IMAGE_INVALID, + TTF_IMAGE_ALPHA, /**< The color channels are white */ + TTF_IMAGE_COLOR, /**< The color channels have image data */ + TTF_IMAGE_SDF, /**< The alpha channel has signed distance field information */ +} TTF_ImageType; + +/** + * Get the pixel image for a UNICODE codepoint. + * + * \param font the font to query. + * \param ch the codepoint to check. + * \param image_type a pointer filled in with the glyph image type, may be + * NULL. + * \returns an SDL_Surface containing the glyph, or NULL on failure; call + * SDL_GetError() for more information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_GetGlyphImage(TTF_Font *font, Uint32 ch, TTF_ImageType *image_type); + +/** + * Get the pixel image for a character index. + * + * This is useful for text engine implementations, which can call this with + * the `glyph_index` in a TTF_CopyOperation + * + * \param font the font to query. + * \param glyph_index the index of the glyph to return. + * \param image_type a pointer filled in with the glyph image type, may be + * NULL. + * \returns an SDL_Surface containing the glyph, or NULL on failure; call + * SDL_GetError() for more information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_GetGlyphImageForIndex(TTF_Font *font, Uint32 glyph_index, TTF_ImageType *image_type); + +/** + * Query the metrics (dimensions) of a font's glyph for a UNICODE codepoint. + * + * To understand what these metrics mean, here is a useful link: + * + * https://freetype.sourceforge.net/freetype2/docs/tutorial/step2.html + * + * \param font the font to query. + * \param ch the codepoint to check. + * \param minx a pointer filled in with the minimum x coordinate of the glyph + * from the left edge of its bounding box. This value may be + * negative. + * \param maxx a pointer filled in with the maximum x coordinate of the glyph + * from the left edge of its bounding box. + * \param miny a pointer filled in with the minimum y coordinate of the glyph + * from the bottom edge of its bounding box. This value may be + * negative. + * \param maxy a pointer filled in with the maximum y coordinate of the glyph + * from the bottom edge of its bounding box. + * \param advance a pointer filled in with the distance to the next glyph from + * the left edge of this glyph's bounding box. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetGlyphMetrics(TTF_Font *font, Uint32 ch, int *minx, int *maxx, int *miny, int *maxy, int *advance); + +/** + * Query the kerning size between the glyphs of two UNICODE codepoints. + * + * \param font the font to query. + * \param previous_ch the previous codepoint. + * \param ch the current codepoint. + * \param kerning a pointer filled in with the kerning size between the two + * glyphs, in pixels, may be NULL. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetGlyphKerning(TTF_Font *font, Uint32 previous_ch, Uint32 ch, int *kerning); + +/** + * Calculate the dimensions of a rendered string of UTF-8 text. + * + * This will report the width and height, in pixels, of the space that the + * specified string will take to fully render. + * + * \param font the font to query. + * \param text text to calculate, in UTF-8 encoding. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \param w will be filled with width, in pixels, on return. + * \param h will be filled with height, in pixels, on return. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetStringSize(TTF_Font *font, const char *text, size_t length, int *w, int *h); + +/** + * Calculate the dimensions of a rendered string of UTF-8 text. + * + * This will report the width and height, in pixels, of the space that the + * specified string will take to fully render. + * + * Text is wrapped to multiple lines on line endings and on word boundaries if + * it extends beyond `wrap_width` in pixels. + * + * If wrap_width is 0, this function will only wrap on newline characters. + * + * \param font the font to query. + * \param text text to calculate, in UTF-8 encoding. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \param wrap_width the maximum width or 0 to wrap on newline characters. + * \param w will be filled with width, in pixels, on return. + * \param h will be filled with height, in pixels, on return. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetStringSizeWrapped(TTF_Font *font, const char *text, size_t length, int wrap_width, int *w, int *h); + +/** + * Calculate how much of a UTF-8 string will fit in a given width. + * + * This reports the number of characters that can be rendered before reaching + * `max_width`. + * + * This does not need to render the string to do this calculation. + * + * \param font the font to query. + * \param text text to calculate, in UTF-8 encoding. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \param max_width maximum width, in pixels, available for the string, or 0 + * for unbounded width. + * \param measured_width a pointer filled in with the width, in pixels, of the + * string that will fit, may be NULL. + * \param measured_length a pointer filled in with the length, in bytes, of + * the string that will fit, may be NULL. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_MeasureString(TTF_Font *font, const char *text, size_t length, int max_width, int *measured_width, size_t *measured_length); + +/** + * Render UTF-8 text at fast quality to a new 8-bit surface. + * + * This function will allocate a new 8-bit, palettized surface. The surface's + * 0 pixel will be the colorkey, giving a transparent background. The 1 pixel + * will be set to the text color. + * + * This will not word-wrap the string; you'll get a surface with a single line + * of text, as long as the string requires. You can use + * TTF_RenderText_Solid_Wrapped() instead if you need to wrap the output to + * multiple lines. + * + * This will not wrap on newline characters. + * + * You can render at other quality levels with TTF_RenderText_Shaded, + * TTF_RenderText_Blended, and TTF_RenderText_LCD. + * + * \param font the font to render with. + * \param text text to render, in UTF-8 encoding. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \param fg the foreground color for the text. + * \returns a new 8-bit, palettized surface, or NULL if there was an error. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_RenderText_Blended + * \sa TTF_RenderText_LCD + * \sa TTF_RenderText_Shaded + * \sa TTF_RenderText_Solid + * \sa TTF_RenderText_Solid_Wrapped + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Solid(TTF_Font *font, const char *text, size_t length, SDL_Color fg); + +/** + * Render word-wrapped UTF-8 text at fast quality to a new 8-bit surface. + * + * This function will allocate a new 8-bit, palettized surface. The surface's + * 0 pixel will be the colorkey, giving a transparent background. The 1 pixel + * will be set to the text color. + * + * Text is wrapped to multiple lines on line endings and on word boundaries if + * it extends beyond `wrapLength` in pixels. + * + * If wrapLength is 0, this function will only wrap on newline characters. + * + * You can render at other quality levels with TTF_RenderText_Shaded_Wrapped, + * TTF_RenderText_Blended_Wrapped, and TTF_RenderText_LCD_Wrapped. + * + * \param font the font to render with. + * \param text text to render, in UTF-8 encoding. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \param fg the foreground color for the text. + * \param wrapLength the maximum width of the text surface or 0 to wrap on + * newline characters. + * \returns a new 8-bit, palettized surface, or NULL if there was an error. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_RenderText_Blended_Wrapped + * \sa TTF_RenderText_LCD_Wrapped + * \sa TTF_RenderText_Shaded_Wrapped + * \sa TTF_RenderText_Solid + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Solid_Wrapped(TTF_Font *font, const char *text, size_t length, SDL_Color fg, int wrapLength); + +/** + * Render a single 32-bit glyph at fast quality to a new 8-bit surface. + * + * This function will allocate a new 8-bit, palettized surface. The surface's + * 0 pixel will be the colorkey, giving a transparent background. The 1 pixel + * will be set to the text color. + * + * The glyph is rendered without any padding or centering in the X direction, + * and aligned normally in the Y direction. + * + * You can render at other quality levels with TTF_RenderGlyph_Shaded, + * TTF_RenderGlyph_Blended, and TTF_RenderGlyph_LCD. + * + * \param font the font to render with. + * \param ch the character to render. + * \param fg the foreground color for the text. + * \returns a new 8-bit, palettized surface, or NULL if there was an error. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_RenderGlyph_Blended + * \sa TTF_RenderGlyph_LCD + * \sa TTF_RenderGlyph_Shaded + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_RenderGlyph_Solid(TTF_Font *font, Uint32 ch, SDL_Color fg); + +/** + * Render UTF-8 text at high quality to a new 8-bit surface. + * + * This function will allocate a new 8-bit, palettized surface. The surface's + * 0 pixel will be the specified background color, while other pixels have + * varying degrees of the foreground color. This function returns the new + * surface, or NULL if there was an error. + * + * This will not word-wrap the string; you'll get a surface with a single line + * of text, as long as the string requires. You can use + * TTF_RenderText_Shaded_Wrapped() instead if you need to wrap the output to + * multiple lines. + * + * This will not wrap on newline characters. + * + * You can render at other quality levels with TTF_RenderText_Solid, + * TTF_RenderText_Blended, and TTF_RenderText_LCD. + * + * \param font the font to render with. + * \param text text to render, in UTF-8 encoding. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \param fg the foreground color for the text. + * \param bg the background color for the text. + * \returns a new 8-bit, palettized surface, or NULL if there was an error. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_RenderText_Blended + * \sa TTF_RenderText_LCD + * \sa TTF_RenderText_Shaded_Wrapped + * \sa TTF_RenderText_Solid + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Shaded(TTF_Font *font, const char *text, size_t length, SDL_Color fg, SDL_Color bg); + +/** + * Render word-wrapped UTF-8 text at high quality to a new 8-bit surface. + * + * This function will allocate a new 8-bit, palettized surface. The surface's + * 0 pixel will be the specified background color, while other pixels have + * varying degrees of the foreground color. This function returns the new + * surface, or NULL if there was an error. + * + * Text is wrapped to multiple lines on line endings and on word boundaries if + * it extends beyond `wrap_width` in pixels. + * + * If wrap_width is 0, this function will only wrap on newline characters. + * + * You can render at other quality levels with TTF_RenderText_Solid_Wrapped, + * TTF_RenderText_Blended_Wrapped, and TTF_RenderText_LCD_Wrapped. + * + * \param font the font to render with. + * \param text text to render, in UTF-8 encoding. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \param fg the foreground color for the text. + * \param bg the background color for the text. + * \param wrap_width the maximum width of the text surface or 0 to wrap on + * newline characters. + * \returns a new 8-bit, palettized surface, or NULL if there was an error. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_RenderText_Blended_Wrapped + * \sa TTF_RenderText_LCD_Wrapped + * \sa TTF_RenderText_Shaded + * \sa TTF_RenderText_Solid_Wrapped + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Shaded_Wrapped(TTF_Font *font, const char *text, size_t length, SDL_Color fg, SDL_Color bg, int wrap_width); + +/** + * Render a single UNICODE codepoint at high quality to a new 8-bit surface. + * + * This function will allocate a new 8-bit, palettized surface. The surface's + * 0 pixel will be the specified background color, while other pixels have + * varying degrees of the foreground color. This function returns the new + * surface, or NULL if there was an error. + * + * The glyph is rendered without any padding or centering in the X direction, + * and aligned normally in the Y direction. + * + * You can render at other quality levels with TTF_RenderGlyph_Solid, + * TTF_RenderGlyph_Blended, and TTF_RenderGlyph_LCD. + * + * \param font the font to render with. + * \param ch the codepoint to render. + * \param fg the foreground color for the text. + * \param bg the background color for the text. + * \returns a new 8-bit, palettized surface, or NULL if there was an error. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_RenderGlyph_Blended + * \sa TTF_RenderGlyph_LCD + * \sa TTF_RenderGlyph_Solid + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_RenderGlyph_Shaded(TTF_Font *font, Uint32 ch, SDL_Color fg, SDL_Color bg); + +/** + * Render UTF-8 text at high quality to a new ARGB surface. + * + * This function will allocate a new 32-bit, ARGB surface, using alpha + * blending to dither the font with the given color. This function returns the + * new surface, or NULL if there was an error. + * + * This will not word-wrap the string; you'll get a surface with a single line + * of text, as long as the string requires. You can use + * TTF_RenderText_Blended_Wrapped() instead if you need to wrap the output to + * multiple lines. + * + * This will not wrap on newline characters. + * + * You can render at other quality levels with TTF_RenderText_Solid, + * TTF_RenderText_Shaded, and TTF_RenderText_LCD. + * + * \param font the font to render with. + * \param text text to render, in UTF-8 encoding. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \param fg the foreground color for the text. + * \returns a new 32-bit, ARGB surface, or NULL if there was an error. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_RenderText_Blended_Wrapped + * \sa TTF_RenderText_LCD + * \sa TTF_RenderText_Shaded + * \sa TTF_RenderText_Solid + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Blended(TTF_Font *font, const char *text, size_t length, SDL_Color fg); + +/** + * Render word-wrapped UTF-8 text at high quality to a new ARGB surface. + * + * This function will allocate a new 32-bit, ARGB surface, using alpha + * blending to dither the font with the given color. This function returns the + * new surface, or NULL if there was an error. + * + * Text is wrapped to multiple lines on line endings and on word boundaries if + * it extends beyond `wrap_width` in pixels. + * + * If wrap_width is 0, this function will only wrap on newline characters. + * + * You can render at other quality levels with TTF_RenderText_Solid_Wrapped, + * TTF_RenderText_Shaded_Wrapped, and TTF_RenderText_LCD_Wrapped. + * + * \param font the font to render with. + * \param text text to render, in UTF-8 encoding. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \param fg the foreground color for the text. + * \param wrap_width the maximum width of the text surface or 0 to wrap on + * newline characters. + * \returns a new 32-bit, ARGB surface, or NULL if there was an error. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_RenderText_Blended + * \sa TTF_RenderText_LCD_Wrapped + * \sa TTF_RenderText_Shaded_Wrapped + * \sa TTF_RenderText_Solid_Wrapped + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_Blended_Wrapped(TTF_Font *font, const char *text, size_t length, SDL_Color fg, int wrap_width); + +/** + * Render a single UNICODE codepoint at high quality to a new ARGB surface. + * + * This function will allocate a new 32-bit, ARGB surface, using alpha + * blending to dither the font with the given color. This function returns the + * new surface, or NULL if there was an error. + * + * The glyph is rendered without any padding or centering in the X direction, + * and aligned normally in the Y direction. + * + * You can render at other quality levels with TTF_RenderGlyph_Solid, + * TTF_RenderGlyph_Shaded, and TTF_RenderGlyph_LCD. + * + * \param font the font to render with. + * \param ch the codepoint to render. + * \param fg the foreground color for the text. + * \returns a new 32-bit, ARGB surface, or NULL if there was an error. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_RenderGlyph_LCD + * \sa TTF_RenderGlyph_Shaded + * \sa TTF_RenderGlyph_Solid + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_RenderGlyph_Blended(TTF_Font *font, Uint32 ch, SDL_Color fg); + +/** + * Render UTF-8 text at LCD subpixel quality to a new ARGB surface. + * + * This function will allocate a new 32-bit, ARGB surface, and render + * alpha-blended text using FreeType's LCD subpixel rendering. This function + * returns the new surface, or NULL if there was an error. + * + * This will not word-wrap the string; you'll get a surface with a single line + * of text, as long as the string requires. You can use + * TTF_RenderText_LCD_Wrapped() instead if you need to wrap the output to + * multiple lines. + * + * This will not wrap on newline characters. + * + * You can render at other quality levels with TTF_RenderText_Solid, + * TTF_RenderText_Shaded, and TTF_RenderText_Blended. + * + * \param font the font to render with. + * \param text text to render, in UTF-8 encoding. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \param fg the foreground color for the text. + * \param bg the background color for the text. + * \returns a new 32-bit, ARGB surface, or NULL if there was an error. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_RenderText_Blended + * \sa TTF_RenderText_LCD_Wrapped + * \sa TTF_RenderText_Shaded + * \sa TTF_RenderText_Solid + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_LCD(TTF_Font *font, const char *text, size_t length, SDL_Color fg, SDL_Color bg); + +/** + * Render word-wrapped UTF-8 text at LCD subpixel quality to a new ARGB + * surface. + * + * This function will allocate a new 32-bit, ARGB surface, and render + * alpha-blended text using FreeType's LCD subpixel rendering. This function + * returns the new surface, or NULL if there was an error. + * + * Text is wrapped to multiple lines on line endings and on word boundaries if + * it extends beyond `wrap_width` in pixels. + * + * If wrap_width is 0, this function will only wrap on newline characters. + * + * You can render at other quality levels with TTF_RenderText_Solid_Wrapped, + * TTF_RenderText_Shaded_Wrapped, and TTF_RenderText_Blended_Wrapped. + * + * \param font the font to render with. + * \param text text to render, in UTF-8 encoding. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \param fg the foreground color for the text. + * \param bg the background color for the text. + * \param wrap_width the maximum width of the text surface or 0 to wrap on + * newline characters. + * \returns a new 32-bit, ARGB surface, or NULL if there was an error. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_RenderText_Blended_Wrapped + * \sa TTF_RenderText_LCD + * \sa TTF_RenderText_Shaded_Wrapped + * \sa TTF_RenderText_Solid_Wrapped + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_RenderText_LCD_Wrapped(TTF_Font *font, const char *text, size_t length, SDL_Color fg, SDL_Color bg, int wrap_width); + +/** + * Render a single UNICODE codepoint at LCD subpixel quality to a new ARGB + * surface. + * + * This function will allocate a new 32-bit, ARGB surface, and render + * alpha-blended text using FreeType's LCD subpixel rendering. This function + * returns the new surface, or NULL if there was an error. + * + * The glyph is rendered without any padding or centering in the X direction, + * and aligned normally in the Y direction. + * + * You can render at other quality levels with TTF_RenderGlyph_Solid, + * TTF_RenderGlyph_Shaded, and TTF_RenderGlyph_Blended. + * + * \param font the font to render with. + * \param ch the codepoint to render. + * \param fg the foreground color for the text. + * \param bg the background color for the text. + * \returns a new 32-bit, ARGB surface, or NULL if there was an error. + * + * \threadsafety This function should be called on the thread that created the + * font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_RenderGlyph_Blended + * \sa TTF_RenderGlyph_Shaded + * \sa TTF_RenderGlyph_Solid + */ +extern SDL_DECLSPEC SDL_Surface * SDLCALL TTF_RenderGlyph_LCD(TTF_Font *font, Uint32 ch, SDL_Color fg, SDL_Color bg); + + +/** + * A text engine used to create text objects. + * + * This is a public interface that can be used by applications and libraries + * to perform customize rendering with text objects. See + * for details. + * + * There are three text engines provided with the library: + * + * - Drawing to an SDL_Surface, created with TTF_CreateSurfaceTextEngine() + * - Drawing with an SDL 2D renderer, created with + * TTF_CreateRendererTextEngine() + * - Drawing with the SDL GPU API, created with TTF_CreateGPUTextEngine() + * + * \since This struct is available since SDL_ttf 3.0.0. + */ +typedef struct TTF_TextEngine TTF_TextEngine; + +/** + * Internal data for TTF_Text + * + * \since This struct is available since SDL_ttf 3.0.0. + */ +typedef struct TTF_TextData TTF_TextData; + +/** + * Text created with TTF_CreateText() + * + * \since This struct is available since SDL_ttf 3.0.0. + * + * \sa TTF_CreateText + * \sa TTF_GetTextProperties + * \sa TTF_DestroyText + */ +typedef struct TTF_Text +{ + char *text; /**< A copy of the UTF-8 string that this text object represents, useful for layout, debugging and retrieving substring text. This is updated when the text object is modified and will be freed automatically when the object is destroyed. */ + int num_lines; /**< The number of lines in the text, 0 if it's empty */ + + int refcount; /**< Application reference count, used when freeing surface */ + + TTF_TextData *internal; /**< Private */ + +} TTF_Text; + +/** + * Create a text engine for drawing text on SDL surfaces. + * + * \returns a TTF_TextEngine object or NULL on failure; call SDL_GetError() + * for more information. + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_DestroySurfaceTextEngine + * \sa TTF_DrawSurfaceText + */ +extern SDL_DECLSPEC TTF_TextEngine * SDLCALL TTF_CreateSurfaceTextEngine(void); + +/** + * Draw text to an SDL surface. + * + * `text` must have been created using a TTF_TextEngine from + * TTF_CreateSurfaceTextEngine(). + * + * \param text the text to draw. + * \param x the x coordinate in pixels, positive from the left edge towards + * the right. + * \param y the y coordinate in pixels, positive from the top edge towards the + * bottom. + * \param surface the surface to draw on. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CreateSurfaceTextEngine + * \sa TTF_CreateText + */ +extern SDL_DECLSPEC bool SDLCALL TTF_DrawSurfaceText(TTF_Text *text, int x, int y, SDL_Surface *surface); + +/** + * Destroy a text engine created for drawing text on SDL surfaces. + * + * All text created by this engine should be destroyed before calling this + * function. + * + * \param engine a TTF_TextEngine object created with + * TTF_CreateSurfaceTextEngine(). + * + * \threadsafety This function should be called on the thread that created the + * engine. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CreateSurfaceTextEngine + */ +extern SDL_DECLSPEC void SDLCALL TTF_DestroySurfaceTextEngine(TTF_TextEngine *engine); + +/** + * Create a text engine for drawing text on an SDL renderer. + * + * \param renderer the renderer to use for creating textures and drawing text. + * \returns a TTF_TextEngine object or NULL on failure; call SDL_GetError() + * for more information. + * + * \threadsafety This function should be called on the thread that created the + * renderer. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_DestroyRendererTextEngine + * \sa TTF_DrawRendererText + * \sa TTF_CreateRendererTextEngineWithProperties + */ +extern SDL_DECLSPEC TTF_TextEngine * SDLCALL TTF_CreateRendererTextEngine(SDL_Renderer *renderer); + +/** + * Create a text engine for drawing text on an SDL renderer, with the + * specified properties. + * + * These are the supported properties: + * + * - `TTF_PROP_RENDERER_TEXT_ENGINE_RENDERER`: the renderer to use for + * creating textures and drawing text + * - `TTF_PROP_RENDERER_TEXT_ENGINE_ATLAS_TEXTURE_SIZE`: the size of the + * texture atlas + * + * \param props the properties to use. + * \returns a TTF_TextEngine object or NULL on failure; call SDL_GetError() + * for more information. + * + * \threadsafety This function should be called on the thread that created the + * renderer. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CreateRendererTextEngine + * \sa TTF_DestroyRendererTextEngine + * \sa TTF_DrawRendererText + */ +extern SDL_DECLSPEC TTF_TextEngine * SDLCALL TTF_CreateRendererTextEngineWithProperties(SDL_PropertiesID props); + +#define TTF_PROP_RENDERER_TEXT_ENGINE_RENDERER "SDL_ttf.renderer_text_engine.create.renderer" +#define TTF_PROP_RENDERER_TEXT_ENGINE_ATLAS_TEXTURE_SIZE "SDL_ttf.renderer_text_engine.create.atlas_texture_size" + +/** + * Draw text to an SDL renderer. + * + * `text` must have been created using a TTF_TextEngine from + * TTF_CreateRendererTextEngine(), and will draw using the renderer passed to + * that function. + * + * \param text the text to draw. + * \param x the x coordinate in pixels, positive from the left edge towards + * the right. + * \param y the y coordinate in pixels, positive from the top edge towards the + * bottom. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CreateRendererTextEngine + * \sa TTF_CreateText + */ +extern SDL_DECLSPEC bool SDLCALL TTF_DrawRendererText(TTF_Text *text, float x, float y); + +/** + * Destroy a text engine created for drawing text on an SDL renderer. + * + * All text created by this engine should be destroyed before calling this + * function. + * + * \param engine a TTF_TextEngine object created with + * TTF_CreateRendererTextEngine(). + * + * \threadsafety This function should be called on the thread that created the + * engine. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CreateRendererTextEngine + */ +extern SDL_DECLSPEC void SDLCALL TTF_DestroyRendererTextEngine(TTF_TextEngine *engine); + +/** + * Create a text engine for drawing text with the SDL GPU API. + * + * \param device the SDL_GPUDevice to use for creating textures and drawing + * text. + * \returns a TTF_TextEngine object or NULL on failure; call SDL_GetError() + * for more information. + * + * \threadsafety This function should be called on the thread that created the + * device. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CreateGPUTextEngineWithProperties + * \sa TTF_DestroyGPUTextEngine + * \sa TTF_GetGPUTextDrawData + */ +extern SDL_DECLSPEC TTF_TextEngine * SDLCALL TTF_CreateGPUTextEngine(SDL_GPUDevice *device); + +/** + * Create a text engine for drawing text with the SDL GPU API, with the + * specified properties. + * + * These are the supported properties: + * + * - `TTF_PROP_GPU_TEXT_ENGINE_DEVICE`: the SDL_GPUDevice to use for creating + * textures and drawing text. + * - `TTF_PROP_GPU_TEXT_ENGINE_ATLAS_TEXTURE_SIZE`: the size of the texture + * atlas + * + * \param props the properties to use. + * \returns a TTF_TextEngine object or NULL on failure; call SDL_GetError() + * for more information. + * + * \threadsafety This function should be called on the thread that created the + * device. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CreateGPUTextEngine + * \sa TTF_DestroyGPUTextEngine + * \sa TTF_GetGPUTextDrawData + */ +extern SDL_DECLSPEC TTF_TextEngine * SDLCALL TTF_CreateGPUTextEngineWithProperties(SDL_PropertiesID props); + +#define TTF_PROP_GPU_TEXT_ENGINE_DEVICE "SDL_ttf.gpu_text_engine.create.device" +#define TTF_PROP_GPU_TEXT_ENGINE_ATLAS_TEXTURE_SIZE "SDL_ttf.gpu_text_engine.create.atlas_texture_size" + +/** + * Draw sequence returned by TTF_GetGPUTextDrawData + * + * \since This struct is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetGPUTextDrawData + */ +typedef struct TTF_GPUAtlasDrawSequence +{ + SDL_GPUTexture *atlas_texture; /**< Texture atlas that stores the glyphs */ + SDL_FPoint *xy; /**< An array of vertex positions */ + SDL_FPoint *uv; /**< An array of normalized texture coordinates for each vertex */ + int num_vertices; /**< Number of vertices */ + int *indices; /**< An array of indices into the 'vertices' arrays */ + int num_indices; /**< Number of indices */ + TTF_ImageType image_type; /**< The image type of this draw sequence */ + + struct TTF_GPUAtlasDrawSequence *next; /**< The next sequence (will be NULL in case of the last sequence) */ +} TTF_GPUAtlasDrawSequence; + +/** + * Get the geometry data needed for drawing the text. + * + * `text` must have been created using a TTF_TextEngine from + * TTF_CreateGPUTextEngine(). + * + * The positive X-axis is taken towards the right and the positive Y-axis is + * taken upwards for both the vertex and the texture coordinates, i.e, it + * follows the same convention used by the SDL_GPU API. If you want to use a + * different coordinate system you will need to transform the vertices + * yourself. + * + * If the text looks blocky use linear filtering. + * + * \param text the text to draw. + * \returns a NULL terminated linked list of TTF_GPUAtlasDrawSequence objects + * or NULL if the passed text is empty or in case of failure; call + * SDL_GetError() for more information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CreateGPUTextEngine + * \sa TTF_CreateText + */ +extern SDL_DECLSPEC TTF_GPUAtlasDrawSequence * SDLCALL TTF_GetGPUTextDrawData(TTF_Text *text); + +/** + * Destroy a text engine created for drawing text with the SDL GPU API. + * + * All text created by this engine should be destroyed before calling this + * function. + * + * \param engine a TTF_TextEngine object created with + * TTF_CreateGPUTextEngine(). + * + * \threadsafety This function should be called on the thread that created the + * engine. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CreateGPUTextEngine + */ +extern SDL_DECLSPEC void SDLCALL TTF_DestroyGPUTextEngine(TTF_TextEngine *engine); + +/** + * The winding order of the vertices returned by TTF_GetGPUTextDrawData + * + * \since This enum is available since SDL_ttf 3.0.0. + */ +typedef enum TTF_GPUTextEngineWinding +{ + TTF_GPU_TEXTENGINE_WINDING_INVALID = -1, + TTF_GPU_TEXTENGINE_WINDING_CLOCKWISE, + TTF_GPU_TEXTENGINE_WINDING_COUNTER_CLOCKWISE +} TTF_GPUTextEngineWinding; + +/** + * Sets the winding order of the vertices returned by TTF_GetGPUTextDrawData + * for a particular GPU text engine. + * + * \param engine a TTF_TextEngine object created with + * TTF_CreateGPUTextEngine(). + * \param winding the new winding order option. + * + * \threadsafety This function should be called on the thread that created the + * engine. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetGPUTextEngineWinding + */ +extern SDL_DECLSPEC void SDLCALL TTF_SetGPUTextEngineWinding(TTF_TextEngine *engine, TTF_GPUTextEngineWinding winding); + +/** + * Get the winding order of the vertices returned by TTF_GetGPUTextDrawData + * for a particular GPU text engine + * + * \param engine a TTF_TextEngine object created with + * TTF_CreateGPUTextEngine(). + * \returns the winding order used by the GPU text engine or + * TTF_GPU_TEXTENGINE_WINDING_INVALID in case of error. + * + * \threadsafety This function should be called on the thread that created the + * engine. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetGPUTextEngineWinding + */ +extern SDL_DECLSPEC TTF_GPUTextEngineWinding SDLCALL TTF_GetGPUTextEngineWinding(const TTF_TextEngine *engine); + +/** + * Create a text object from UTF-8 text and a text engine. + * + * \param engine the text engine to use when creating the text object, may be + * NULL. + * \param font the font to render with. + * \param text the text to use, in UTF-8 encoding. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \returns a TTF_Text object or NULL on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * font and text engine. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_DestroyText + */ +extern SDL_DECLSPEC TTF_Text * SDLCALL TTF_CreateText(TTF_TextEngine *engine, TTF_Font *font, const char *text, size_t length); + +/** + * Get the properties associated with a text object. + * + * \param text the TTF_Text to query. + * \returns a valid property ID on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC SDL_PropertiesID SDLCALL TTF_GetTextProperties(TTF_Text *text); + +/** + * Set the text engine used by a text object. + * + * This function may cause the internal text representation to be rebuilt. + * + * \param text the TTF_Text to modify. + * \param engine the text engine to use for drawing. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetTextEngine + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetTextEngine(TTF_Text *text, TTF_TextEngine *engine); + +/** + * Get the text engine used by a text object. + * + * \param text the TTF_Text to query. + * \returns the TTF_TextEngine used by the text on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetTextEngine + */ +extern SDL_DECLSPEC TTF_TextEngine * SDLCALL TTF_GetTextEngine(TTF_Text *text); + +/** + * Set the font used by a text object. + * + * When a text object has a font, any changes to the font will automatically + * regenerate the text. If you set the font to NULL, the text will continue to + * render but changes to the font will no longer affect the text. + * + * This function may cause the internal text representation to be rebuilt. + * + * \param text the TTF_Text to modify. + * \param font the font to use, may be NULL. + * \returns false if the text pointer is null; otherwise, true. call + * SDL_GetError() for more information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetTextFont + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetTextFont(TTF_Text *text, TTF_Font *font); + +/** + * Get the font used by a text object. + * + * \param text the TTF_Text to query. + * \returns the TTF_Font used by the text on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetTextFont + */ +extern SDL_DECLSPEC TTF_Font * SDLCALL TTF_GetTextFont(TTF_Text *text); + +/** + * Set the direction to be used for text shaping a text object. + * + * This function only supports left-to-right text shaping if SDL_ttf was not + * built with HarfBuzz support. + * + * \param text the text to modify. + * \param direction the new direction for text to flow. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetTextDirection(TTF_Text *text, TTF_Direction direction); + +/** + * Get the direction to be used for text shaping a text object. + * + * This defaults to the direction of the font used by the text object. + * + * \param text the text to query. + * \returns the direction to be used for text shaping. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC TTF_Direction SDLCALL TTF_GetTextDirection(TTF_Text *text); + +/** + * Set the script to be used for text shaping a text object. + * + * This returns false if SDL_ttf isn't built with HarfBuzz support. + * + * \param text the text to modify. + * \param script an + * [ISO 15924 code](https://unicode.org/iso15924/iso15924-codes.html) + * . + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_StringToTag + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetTextScript(TTF_Text *text, Uint32 script); + +/** + * Get the script used for text shaping a text object. + * + * This defaults to the script of the font used by the text object. + * + * \param text the text to query. + * \returns an + * [ISO 15924 code](https://unicode.org/iso15924/iso15924-codes.html) + * or 0 if a script hasn't been set on either the text object or the + * font. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_TagToString + */ +extern SDL_DECLSPEC Uint32 SDLCALL TTF_GetTextScript(TTF_Text *text); + +/** + * Set the color of a text object. + * + * The default text color is white (255, 255, 255, 255). + * + * \param text the TTF_Text to modify. + * \param r the red color value in the range of 0-255. + * \param g the green color value in the range of 0-255. + * \param b the blue color value in the range of 0-255. + * \param a the alpha value in the range of 0-255. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetTextColor + * \sa TTF_SetTextColorFloat + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetTextColor(TTF_Text *text, Uint8 r, Uint8 g, Uint8 b, Uint8 a); + +/** + * Set the color of a text object. + * + * The default text color is white (1.0f, 1.0f, 1.0f, 1.0f). + * + * \param text the TTF_Text to modify. + * \param r the red color value, normally in the range of 0-1. + * \param g the green color value, normally in the range of 0-1. + * \param b the blue color value, normally in the range of 0-1. + * \param a the alpha value in the range of 0-1. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetTextColorFloat + * \sa TTF_SetTextColor + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetTextColorFloat(TTF_Text *text, float r, float g, float b, float a); + +/** + * Get the color of a text object. + * + * \param text the TTF_Text to query. + * \param r a pointer filled in with the red color value in the range of + * 0-255, may be NULL. + * \param g a pointer filled in with the green color value in the range of + * 0-255, may be NULL. + * \param b a pointer filled in with the blue color value in the range of + * 0-255, may be NULL. + * \param a a pointer filled in with the alpha value in the range of 0-255, + * may be NULL. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetTextColorFloat + * \sa TTF_SetTextColor + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetTextColor(TTF_Text *text, Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a); + +/** + * Get the color of a text object. + * + * \param text the TTF_Text to query. + * \param r a pointer filled in with the red color value, normally in the + * range of 0-1, may be NULL. + * \param g a pointer filled in with the green color value, normally in the + * range of 0-1, may be NULL. + * \param b a pointer filled in with the blue color value, normally in the + * range of 0-1, may be NULL. + * \param a a pointer filled in with the alpha value in the range of 0-1, may + * be NULL. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetTextColor + * \sa TTF_SetTextColorFloat + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetTextColorFloat(TTF_Text *text, float *r, float *g, float *b, float *a); + +/** + * Set the position of a text object. + * + * This can be used to position multiple text objects within a single wrapping + * text area. + * + * This function may cause the internal text representation to be rebuilt. + * + * \param text the TTF_Text to modify. + * \param x the x offset of the upper left corner of this text in pixels. + * \param y the y offset of the upper left corner of this text in pixels. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetTextPosition + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetTextPosition(TTF_Text *text, int x, int y); + +/** + * Get the position of a text object. + * + * \param text the TTF_Text to query. + * \param x a pointer filled in with the x offset of the upper left corner of + * this text in pixels, may be NULL. + * \param y a pointer filled in with the y offset of the upper left corner of + * this text in pixels, may be NULL. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetTextPosition + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetTextPosition(TTF_Text *text, int *x, int *y); + +/** + * Set whether wrapping is enabled on a text object. + * + * This function may cause the internal text representation to be rebuilt. + * + * \param text the TTF_Text to modify. + * \param wrap_width the maximum width in pixels, 0 to wrap on newline + * characters. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetTextWrapWidth + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetTextWrapWidth(TTF_Text *text, int wrap_width); + +/** + * Get whether wrapping is enabled on a text object. + * + * \param text the TTF_Text to query. + * \param wrap_width a pointer filled in with the maximum width in pixels or 0 + * if the text is being wrapped on newline characters. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetTextWrapWidth + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetTextWrapWidth(TTF_Text *text, int *wrap_width); + +/** + * Set whether whitespace should be visible when wrapping a text object. + * + * If the whitespace is visible, it will take up space for purposes of + * alignment and wrapping. This is good for editing, but looks better when + * centered or aligned if whitespace around line wrapping is hidden. This + * defaults false. + * + * This function may cause the internal text representation to be rebuilt. + * + * \param text the TTF_Text to modify. + * \param visible true to show whitespace when wrapping text, false to hide + * it. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_TextWrapWhitespaceVisible + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetTextWrapWhitespaceVisible(TTF_Text *text, bool visible); + +/** + * Return whether whitespace is shown when wrapping a text object. + * + * \param text the TTF_Text to query. + * \returns true if whitespace is shown when wrapping text, or false + * otherwise. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_SetTextWrapWhitespaceVisible + */ +extern SDL_DECLSPEC bool SDLCALL TTF_TextWrapWhitespaceVisible(TTF_Text *text); + +/** + * Set the UTF-8 text used by a text object. + * + * This function may cause the internal text representation to be rebuilt. + * + * \param text the TTF_Text to modify. + * \param string the UTF-8 text to use, may be NULL. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_AppendTextString + * \sa TTF_DeleteTextString + * \sa TTF_InsertTextString + */ +extern SDL_DECLSPEC bool SDLCALL TTF_SetTextString(TTF_Text *text, const char *string, size_t length); + +/** + * Insert UTF-8 text into a text object. + * + * This function may cause the internal text representation to be rebuilt. + * + * \param text the TTF_Text to modify. + * \param offset the offset, in bytes, from the beginning of the string if >= + * 0, the offset from the end of the string if < 0. Note that + * this does not do UTF-8 validation, so you should only insert + * at UTF-8 sequence boundaries. + * \param string the UTF-8 text to insert. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_AppendTextString + * \sa TTF_DeleteTextString + * \sa TTF_SetTextString + */ +extern SDL_DECLSPEC bool SDLCALL TTF_InsertTextString(TTF_Text *text, int offset, const char *string, size_t length); + +/** + * Append UTF-8 text to a text object. + * + * This function may cause the internal text representation to be rebuilt. + * + * \param text the TTF_Text to modify. + * \param string the UTF-8 text to insert. + * \param length the length of the text, in bytes, or 0 for null terminated + * text. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_DeleteTextString + * \sa TTF_InsertTextString + * \sa TTF_SetTextString + */ +extern SDL_DECLSPEC bool SDLCALL TTF_AppendTextString(TTF_Text *text, const char *string, size_t length); + +/** + * Delete UTF-8 text from a text object. + * + * This function may cause the internal text representation to be rebuilt. + * + * \param text the TTF_Text to modify. + * \param offset the offset, in bytes, from the beginning of the string if >= + * 0, the offset from the end of the string if < 0. Note that + * this does not do UTF-8 validation, so you should only delete + * at UTF-8 sequence boundaries. + * \param length the length of text to delete, in bytes, or -1 for the + * remainder of the string. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_AppendTextString + * \sa TTF_InsertTextString + * \sa TTF_SetTextString + */ +extern SDL_DECLSPEC bool SDLCALL TTF_DeleteTextString(TTF_Text *text, int offset, int length); + +/** + * Get the size of a text object. + * + * The size of the text may change when the font or font style and size + * change. + * + * \param text the TTF_Text to query. + * \param w a pointer filled in with the width of the text, in pixels, may be + * NULL. + * \param h a pointer filled in with the height of the text, in pixels, may be + * NULL. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetTextSize(TTF_Text *text, int *w, int *h); + +/** + * Flags for TTF_SubString + * + * \since This datatype is available since SDL_ttf 3.0.0. + * + * \sa TTF_SubString + */ +typedef Uint32 TTF_SubStringFlags; + +#define TTF_SUBSTRING_DIRECTION_MASK 0x000000FF /**< The mask for the flow direction for this substring */ +#define TTF_SUBSTRING_TEXT_START 0x00000100 /**< This substring contains the beginning of the text */ +#define TTF_SUBSTRING_LINE_START 0x00000200 /**< This substring contains the beginning of line `line_index` */ +#define TTF_SUBSTRING_LINE_END 0x00000400 /**< This substring contains the end of line `line_index` */ +#define TTF_SUBSTRING_TEXT_END 0x00000800 /**< This substring contains the end of the text */ + +/** + * The representation of a substring within text. + * + * \since This struct is available since SDL_ttf 3.0.0. + * + * \sa TTF_GetNextTextSubString + * \sa TTF_GetPreviousTextSubString + * \sa TTF_GetTextSubString + * \sa TTF_GetTextSubStringForLine + * \sa TTF_GetTextSubStringForPoint + * \sa TTF_GetTextSubStringsForRange + */ +typedef struct TTF_SubString +{ + TTF_SubStringFlags flags; /**< The flags for this substring */ + int offset; /**< The byte offset from the beginning of the text */ + int length; /**< The byte length starting at the offset */ + int line_index; /**< The index of the line that contains this substring */ + int cluster_index; /**< The internal cluster index, used for quickly iterating */ + SDL_Rect rect; /**< The rectangle, relative to the top left of the text, containing the substring */ +} TTF_SubString; + +/** + * Get the substring of a text object that surrounds a text offset. + * + * If `offset` is less than 0, this will return a zero length substring at the + * beginning of the text with the TTF_SUBSTRING_TEXT_START flag set. If + * `offset` is greater than or equal to the length of the text string, this + * will return a zero length substring at the end of the text with the + * TTF_SUBSTRING_TEXT_END flag set. + * + * \param text the TTF_Text to query. + * \param offset a byte offset into the text string. + * \param substring a pointer filled in with the substring containing the + * offset. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetTextSubString(TTF_Text *text, int offset, TTF_SubString *substring); + +/** + * Get the substring of a text object that contains the given line. + * + * If `line` is less than 0, this will return a zero length substring at the + * beginning of the text with the TTF_SUBSTRING_TEXT_START flag set. If `line` + * is greater than or equal to `text->num_lines` this will return a zero + * length substring at the end of the text with the TTF_SUBSTRING_TEXT_END + * flag set. + * + * \param text the TTF_Text to query. + * \param line a zero-based line index, in the range [0 .. text->num_lines-1]. + * \param substring a pointer filled in with the substring containing the + * offset. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetTextSubStringForLine(TTF_Text *text, int line, TTF_SubString *substring); + +/** + * Get the substrings of a text object that contain a range of text. + * + * \param text the TTF_Text to query. + * \param offset a byte offset into the text string. + * \param length the length of the range being queried, in bytes, or -1 for + * the remainder of the string. + * \param count a pointer filled in with the number of substrings returned, + * may be NULL. + * \returns a NULL terminated array of substring pointers or NULL on failure; + * call SDL_GetError() for more information. This is a single + * allocation that should be freed with SDL_free() when it is no + * longer needed. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC TTF_SubString ** SDLCALL TTF_GetTextSubStringsForRange(TTF_Text *text, int offset, int length, int *count); + +/** + * Get the portion of a text string that is closest to a point. + * + * This will return the closest substring of text to the given point. + * + * \param text the TTF_Text to query. + * \param x the x coordinate relative to the left side of the text, may be + * outside the bounds of the text area. + * \param y the y coordinate relative to the top side of the text, may be + * outside the bounds of the text area. + * \param substring a pointer filled in with the closest substring of text to + * the given point. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetTextSubStringForPoint(TTF_Text *text, int x, int y, TTF_SubString *substring); + +/** + * Get the previous substring in a text object + * + * If called at the start of the text, this will return a zero length + * substring with the TTF_SUBSTRING_TEXT_START flag set. + * + * \param text the TTF_Text to query. + * \param substring the TTF_SubString to query. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetPreviousTextSubString(TTF_Text *text, const TTF_SubString *substring, TTF_SubString *previous); + +/** + * Get the next substring in a text object + * + * If called at the end of the text, this will return a zero length substring + * with the TTF_SUBSTRING_TEXT_END flag set. + * + * \param text the TTF_Text to query. + * \param substring the TTF_SubString to query. + * \param next a pointer filled in with the next substring. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_GetNextTextSubString(TTF_Text *text, const TTF_SubString *substring, TTF_SubString *next); + +/** + * Update the layout of a text object. + * + * This is automatically done when the layout is requested or the text is + * rendered, but you can call this if you need more control over the timing of + * when the layout and text engine representation are updated. + * + * \param text the TTF_Text to update. + * \returns true on success or false on failure; call SDL_GetError() for more + * information. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC bool SDLCALL TTF_UpdateText(TTF_Text *text); + +/** + * Destroy a text object created by a text engine. + * + * \param text the text to destroy. + * + * \threadsafety This function should be called on the thread that created the + * text. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_CreateText + */ +extern SDL_DECLSPEC void SDLCALL TTF_DestroyText(TTF_Text *text); + +/** + * Dispose of a previously-created font. + * + * Call this when done with a font. This function will free any resources + * associated with it. It is safe to call this function on NULL, for example + * on the result of a failed call to TTF_OpenFont(). + * + * The font is not valid after being passed to this function. String pointers + * from functions that return information on this font, such as + * TTF_GetFontFamilyName() and TTF_GetFontStyleName(), are no longer valid + * after this call, as well. + * + * \param font the font to dispose of. + * + * \threadsafety This function should not be called while any other thread is + * using the font. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_OpenFont + * \sa TTF_OpenFontIO + */ +extern SDL_DECLSPEC void SDLCALL TTF_CloseFont(TTF_Font *font); + +/** + * Deinitialize SDL_ttf. + * + * You must call this when done with the library, to free internal resources. + * It is safe to call this when the library isn't initialized, as it will just + * return immediately. + * + * Once you have as many quit calls as you have had successful calls to + * TTF_Init, the library will actually deinitialize. + * + * Please note that this does not automatically close any fonts that are still + * open at the time of deinitialization, and it is possibly not safe to close + * them afterwards, as parts of the library will no longer be initialized to + * deal with it. A well-written program should call TTF_CloseFont() on any + * open fonts before calling this function! + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + */ +extern SDL_DECLSPEC void SDLCALL TTF_Quit(void); + +/** + * Check if SDL_ttf is initialized. + * + * This reports the number of times the library has been initialized by a call + * to TTF_Init(), without a paired deinitialization request from TTF_Quit(). + * + * In short: if it's greater than zero, the library is currently initialized + * and ready to work. If zero, it is not initialized. + * + * Despite the return value being a signed integer, this function should not + * return a negative number. + * + * \returns the current number of initialization calls, that need to + * eventually be paired with this many calls to TTF_Quit(). + * + * \threadsafety It is safe to call this function from any thread. + * + * \since This function is available since SDL_ttf 3.0.0. + * + * \sa TTF_Init + * \sa TTF_Quit + */ +extern SDL_DECLSPEC int SDLCALL TTF_WasInit(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_TTF_H_ */ + diff --git a/vendor/sdl3/ttf/sdl3_textengine.odin b/vendor/sdl3/ttf/sdl3_textengine.odin new file mode 100644 index 000000000..55e5f1c0a --- /dev/null +++ b/vendor/sdl3/ttf/sdl3_textengine.odin @@ -0,0 +1,63 @@ +package sdl3_ttf + +import "core:c" +import SDL "vendor:sdl3" + +DrawCommand :: enum c.int { + NOOP, + FILL, + COPY, +} + +FillOperation :: struct { + cmd: DrawCommand, + rect: SDL.Rect, +} + +CopyOperation :: struct { + cmd: DrawCommand, + text_offset: c.int, + glyph_font: ^Font, + glyph_index: SDL.Uint32, + src: SDL.Rect, + dst: SDL.Rect, + reserved: rawptr, +} + +DrawOperation :: struct #raw_union { + cmd: DrawCommand, + fill: FillOperation, + copy: CopyOperation, +} + +TextLayout :: struct { +} + +TextData :: struct { + font: ^Font, + color: SDL.FColor, + needs_layout_update: bool, + layout: ^TextLayout, + x, y: c.int, + w, h: c.int, + num_ops: c.int, + ops: [^]DrawOperation, + num_clusters: c.int, + clusters: [^]SubString, + props: SDL.PropertiesID, + needs_engine_update: bool, + engine: ^TextEngine, + engine_text: rawptr, +} + +TextEngine :: struct { + version: SDL.Uint32, + userdata: rawptr, + CreateText: proc "c" (userdata: rawptr, text: ^Text) -> bool, + DestroyText: proc "c" (userdata: rawptr, Textext: ^Text), +} + +#assert( + (size_of(TextEngine) == 16 && size_of(rawptr) == 4) || + (size_of(TextEngine) == 32 && size_of(rawptr) == 8), +) diff --git a/vendor/sdl3/ttf/sdl3_ttf.odin b/vendor/sdl3/ttf/sdl3_ttf.odin new file mode 100644 index 000000000..ccd0c0519 --- /dev/null +++ b/vendor/sdl3/ttf/sdl3_ttf.odin @@ -0,0 +1,291 @@ +package sdl3_ttf + +import "core:c" +import SDL "vendor:sdl3" + +when ODIN_OS == .Windows { + foreign import lib "SDL3_ttf.lib" +} else { + foreign import lib "system:SDL3_ttf" +} + + +PROP_FONT_CREATE_FILENAME_STRING :: "SDL_ttf.font.create.filename" +PROP_FONT_CREATE_IOSTREAM_POINTER :: "SDL_ttf.font.create.iostream" +PROP_FONT_CREATE_IOSTREAM_OFFSET_NUMBER :: "SDL_ttf.font.create.iostream.offset" +PROP_FONT_CREATE_IOSTREAM_AUTOCLOSE_BOOLEAN :: "SDL_ttf.font.create.iostream.autoclose" +PROP_FONT_CREATE_SIZE_FLOAT :: "SDL_ttf.font.create.size" +PROP_FONT_CREATE_FACE_NUMBER :: "SDL_ttf.font.create.face" +PROP_FONT_CREATE_HORIZONTAL_DPI_NUMBER :: "SDL_ttf.font.create.hdpi" +PROP_FONT_CREATE_VERTICAL_DPI_NUMBER :: "SDL_ttf.font.create.vdpi" +PROP_FONT_CREATE_EXISTING_FONT :: "SDL_ttf.font.create.existing_font" + +FONT_WEIGHT_THIN :: 100 /**< Thin (100) named font weight value */ +FONT_WEIGHT_EXTRA_LIGHT :: 200 /**< ExtraLight (200) named font weight value */ +FONT_WEIGHT_LIGHT :: 300 /**< Light (300) named font weight value */ +FONT_WEIGHT_NORMAL :: 400 /**< Normal (400) named font weight value */ +FONT_WEIGHT_MEDIUM :: 500 /**< Medium (500) named font weight value */ +FONT_WEIGHT_SEMI_BOLD :: 600 /**< SemiBold (600) named font weight value */ +FONT_WEIGHT_BOLD :: 700 /**< Bold (700) named font weight value */ +FONT_WEIGHT_EXTRA_BOLD :: 800 /**< ExtraBold (800) named font weight value */ +FONT_WEIGHT_BLACK :: 900 /**< Black (900) named font weight value */ +FONT_WEIGHT_EXTRA_BLACK :: 950 /**< ExtraBlack (950) named font weight value */ + +PROP_RENDERER_TEXT_ENGINE_RENDERER :: "SDL_ttf.renderer_text_engine.create.renderer" +PROP_RENDERER_TEXT_ENGINE_ATLAS_TEXTURE_SIZE :: "SDL_ttf.renderer_text_engine.create.atlas_texture_size" + +PROP_GPU_TEXT_ENGINE_DEVICE :: "SDL_ttf.gpu_text_engine.create.device" +PROP_GPU_TEXT_ENGINE_ATLAS_TEXTURE_SIZE :: "SDL_ttf.gpu_text_engine.create.atlas_texture_size" + +MAJOR_VERSION :: 3 +MINOR_VERSION :: 2 +PATCHLEVEL :: 2 + +Font :: struct { +} + +Text :: struct { + text: ^c.char, + num_lines: c.int, + refcount: c.int, + internal: ^TextData, +} + +FontStyle :: enum SDL.Uint32 { + NORMAL, + BOLD, + ITALIC, + UNDERLINE, + STRIKETHROUGH, +} + +FontStyleFlags :: bit_set[FontStyle;SDL.Uint32] + +// NOTE: This is called TTF_HintingFlags but its not a bit_set so +// the "flags" doesnt really make sense, its just the hinting. +Hinting :: enum c.int { + INVALID = -1, + NORMAL, + LIGHT, + MONO, + NONE, + LIGHT_SUBPIXEL, +} + +HorizontalAlignment :: enum c.int { + INVALID = -1, + LEFT, + CENTER, + RIGHT, +} + +Direction :: enum c.int { + INVALID, + LTR = 4, + RTL, + TTB, + BTT, +} + +ImageType :: enum c.int { + INVALID, + ALPHA, + COLOR, + SDF, +} + +GPUAtlasDrawSequence :: struct { + atlas_texture: ^SDL.GPUTexture, + xy, uv: ^SDL.FPoint, + num_vertices: c.int, + indices: ^c.int, + num_indices: c.int, + image_type: ImageType, + next: ^GPUAtlasDrawSequence, +} + +GPUTextEngineWinding :: enum c.int { + INVALID = -1, + CLOCKWISE, + COUNTER_CLOCKWISE, +} + +// NOTE: Unsure how to translate this as it is a bitset but also has a mask component +// so bit_set isnt really suitable +/* +typedef Uint32 TTF_SubStringFlags; + +#define TTF_SUBSTRING_DIRECTION_MASK 0x000000FF /**< The mask for the flow direction for this substring */ +#define TTF_SUBSTRING_TEXT_START 0x00000100 /**< This substring contains the beginning of the text */ +#define TTF_SUBSTRING_LINE_START 0x00000200 /**< This substring contains the beginning of line `line_index` */ +#define TTF_SUBSTRING_LINE_END 0x00000400 /**< This substring contains the end of line `line_index` */ +#define TTF_SUBSTRING_TEXT_END 0x00000800 /**< This substring contains the end of the text */ +*/ +SubStringFlags :: enum SDL.Uint32 { + DIRECTION_MASK = 0xFF, + TEXT_START = 0x100, + LINE_START = 0x200, + LINE_END = 0x400, + TEXT_END = 0x800, +} + +SubString :: struct { + flags: SubStringFlags, + offset, length: c.int, + line_index, cluster_index: c.int, + rect: SDL.Rect, +} + +@(default_calling_convention = "c", link_prefix = "TTF_", require_results) +foreign lib { + Version :: proc() -> c.int --- + GetFreeTypeVersion :: proc(major, minor, patch: ^c.int) --- + GetHarfBuzzVersion :: proc(major, minor, patch: ^c.int) --- + + Init :: proc() -> bool --- + + OpenFont :: proc(file: cstring, ptsize: f32) -> ^Font --- + OpenFontIO :: proc(src: ^SDL.IOStream, closeio: bool, ptsize: f32) -> ^Font --- + OpenFontWithProperties :: proc(props: SDL.PropertiesID) -> ^Font --- + + CopyFont :: proc(existing_font: ^Font) -> ^Font --- + + GetFontProperties :: proc(font: ^Font) -> SDL.PropertiesID --- + GetFontGeneration :: proc(font: ^Font) -> SDL.Uint32 --- + + AddFallbackFont :: proc(font: ^Font, fallback: ^Font) -> bool --- + RemoveFallbackFont :: proc(font: ^Font, fallback: ^Font) --- + ClearFallbackFonts :: proc(font: ^Font) --- + + SetFontSize :: proc(font: ^Font, ptsize: f32) -> bool --- + SetFontSizeDPI :: proc(font: ^Font, ptsize: f32, hdpi: c.int, vdpi: c.int) -> bool --- + GetFontSize :: proc(font: ^Font) -> f32 --- + GetFontDPI :: proc(font: ^Font, hdpi: ^c.int, vdpi: ^c.int) -> bool --- + + SetFontStyle :: proc(font: ^Font, style: FontStyleFlags) --- + GetFontStyle :: proc(#by_ptr font: Font) -> FontStyleFlags --- + + SetFontOutline :: proc(font: ^Font, outline: c.int) -> bool --- + GetFontOutline :: proc(#by_ptr font: Font) -> c.int --- + + SetFontHinting :: proc(font: ^Font, hinting: Hinting) --- + GetFontHinting :: proc(#by_ptr font: Font) -> Hinting --- + + GetNumFontFaces :: proc(font: ^Font) -> c.int --- + + SetFontSDF :: proc(font: ^Font, enabled: bool) -> bool --- + GetFontSDF :: proc(#by_ptr font: Font) -> bool --- + + GetFontWeight :: proc(#by_ptr font: Font) -> c.int --- + + SetFontWrapAlignment :: proc(font: ^Font, align: HorizontalAlignment) --- + GetFontWrapAlignment :: proc(#by_ptr font: Font) -> HorizontalAlignment --- + + GetFontHeight :: proc(#by_ptr font: Font) -> c.int --- + GetFontAscent :: proc(#by_ptr font: Font) -> c.int --- + GetFontDescent :: proc(#by_ptr font: Font) -> c.int --- + + SetFontLineSkip :: proc(font: ^Font, lineskip: c.int) --- + GetFontLineSkip :: proc(#by_ptr font: Font) -> c.int --- + + SetFontKerning :: proc(font: ^Font, enabled: bool) --- + GetFontKerning :: proc(#by_ptr font: Font) -> bool --- + + FontIsFixedWidth :: proc(#by_ptr font: Font) -> bool --- + FontIsScalable :: proc(#by_ptr font: Font) -> bool --- + + GetFontFamilyName :: proc(#by_ptr font: Font) -> cstring --- + GetFontStyleName :: proc(#by_ptr font: Font) -> cstring --- + + SetFontDirection :: proc(font: ^Font, direction: Direction) -> bool --- + GetFontDirection :: proc(#by_ptr font: Font) -> Direction --- + + StringToTag :: proc(string: cstring) -> SDL.Uint32 --- + TagToString :: proc(tag: SDL.Uint32, string: [^]c.char, size: c.size_t) --- + + SetFontScript :: proc(font: ^Font, script: SDL.Uint32) -> bool --- + GetFontScript :: proc(font: ^Font) -> SDL.Uint32 --- + + SetFontLanguage :: proc(font: ^Font, language_bcp47: cstring) -> bool --- + + GetGlyphScript :: proc(ch: SDL.Uint32) -> SDL.Uint32 --- + FontHasGlyph :: proc(font: ^Font, ch: SDL.Uint32) -> bool --- + GetGlyphImage :: proc(font: ^Font, ch: SDL.Uint32, image_type: ^ImageType) -> ^SDL.Surface --- + GetGlyphImageForIndex :: proc(font: ^Font, glyph_index: SDL.Uint32, image_type: ^ImageType) -> ^SDL.Surface --- + GetGlyphMetrics :: proc(font: ^Font, ch: SDL.Uint32, minx, maxx, miny, maxy, advance: ^c.int) -> bool --- + GetGlyphKerning :: proc(font: ^Font, previous_ch: SDL.Uint32, ch: SDL.Uint32, kerning: ^c.int) -> bool --- + + GetStringSize :: proc(font: ^Font, text: cstring, length: c.size_t, w, h: ^c.int) -> bool --- + GetStringSizeWrapped :: proc(font: ^Font, text: cstring, length: c.size_t, wrap_width: c.int, w, h: ^c.int) -> bool --- + MeasureString :: proc(font: ^Font, text: cstring, length: c.size_t, max_width: c.int, measured_width: ^c.int, measured_length: ^c.size_t) -> bool --- + + RenderText_Solid :: proc(font: ^Font, text: cstring, length: c.size_t, fg: SDL.Color) -> ^SDL.Surface --- + RenderText_Solid_Wrapped :: proc(font: ^Font, text: cstring, length: c.size_t, fg: SDL.Color, wrap_Length: c.int) -> ^SDL.Surface --- + RenderGylph_Solid :: proc(font: ^Font, ch: SDL.Uint32, fg: SDL.Color) -> ^SDL.Surface --- + RenderText_Shaded :: proc(font: ^Font, text: cstring, length: c.size_t, fg, bg: SDL.Color) -> ^SDL.Surface --- + RenderText_Shaded_Wrapped :: proc(font: ^Font, text: cstring, length: c.size_t, fg, bg: SDL.Color, wrap_width: c.int) -> ^SDL.Surface --- + RenderGlyph_Shaded :: proc(font: ^Font, ch: SDL.Uint32, fg, bg: SDL.Color) -> ^SDL.Surface --- + RenderText_Blended :: proc(font: ^Font, text: cstring, length: c.size_t, fg: SDL.Color) -> ^SDL.Surface --- + RnederText_Blended_Wrapped :: proc(font: ^Font, text: cstring, length: c.size_t, fg: SDL.Color, wrap_width: c.int) -> ^SDL.Surface --- + RenderGlyph_Blended :: proc(font: ^Font, ch: SDL.Uint32, fg: SDL.Color) -> ^SDL.Surface --- + RenderText_LCD :: proc(font: ^Font, text: cstring, length: c.size_t, fg, bg: SDL.Color) -> ^SDL.Surface --- + RenderText_LCD_Wrapped :: proc(font: ^Font, text: cstring, length: c.size_t, fg, bg: SDL.Color, wrap_width: c.int) -> ^SDL.Surface --- + RenderGlyph_LCD :: proc(font: ^Font, ch: SDL.Uint32, fg, bg: SDL.Color) -> ^SDL.Surface --- + + CreateSurfaceTextEngine :: proc() -> ^TextEngine --- + DrawSurfaceText :: proc(text: ^Text, x, y: int, surface: ^SDL.Surface) -> bool --- + DestroySurfaceTextEngine :: proc(engine: ^TextEngine) --- + + CreateRendererTextEngine :: proc(renderer: ^SDL.Renderer) -> ^TextEngine --- + CreateRendererTextEngineWithProperties :: proc(props: SDL.PropertiesID) -> ^TextEngine --- + DrawRendererText :: proc(text: ^Text, x, y: f32) -> bool --- + DestroyRendererTextEngine :: proc(engine: ^TextEngine) --- + + CreateGPUTextEngine :: proc(device: ^SDL.GPUDevice) -> ^TextEngine --- + CreateGPUTextEngineWithProperties :: proc(props: SDL.PropertiesID) -> ^TextEngine --- + GetGPUTextDrawData :: proc(text: ^Text) -> ^GPUAtlasDrawSequence --- + DestroyGPUTextEngine :: proc(engine: ^TextEngine) --- + SetGPUTextEngineWinding :: proc(engine: ^TextEngine, winding: GPUTextEngineWinding) --- + GetGPUTextEngineWinding :: proc(#by_ptr engine: TextEngine) -> GPUTextEngineWinding --- + + CreateText :: proc(engine: ^TextEngine, font: ^Font, text: cstring, length: c.size_t) -> ^Text --- + GetTextProperties :: proc(text: ^Text) -> SDL.PropertiesID --- + SetTextEngine :: proc(text: ^Text, engine: ^TextEngine) -> bool --- + GetTextEngine :: proc(text: ^Text) -> ^TextEngine --- + SetTextFont :: proc(text: ^Text, font: ^Font) -> bool --- + GetTextFont :: proc(text: ^Text) -> ^Font --- + SetTextDirection :: proc(text: ^Text, direction: Direction) -> bool --- + GetTextDirection :: proc(text: ^Text) -> Direction --- + SetTextScript :: proc(text: ^Text, script: SDL.Uint32) -> bool --- + GetTextScript :: proc(text: ^Text) -> SDL.Uint32 --- + SetTextColor :: proc(text: ^Text, r, g, b, a: SDL.Uint8) -> bool --- + SetTextColorFloat :: proc(text: ^Text, r, g, b, a: f32) -> bool --- + GetTextColor :: proc(text: ^Text, r, g, b, a: ^SDL.Uint8) -> bool --- + GetTextColorFloat :: proc(text: ^Text, r, g, b, a: ^f32) -> bool --- + SetTextPosition :: proc(text: ^Text, x, y: c.int) -> bool --- + GetTextPosition :: proc(text: ^Text, x, y: ^c.int) -> bool --- + SetTextWrapWidth :: proc(text: ^Text, wrap_width: c.int) -> bool --- + GetTextWrapWidth :: proc(text: ^Text, wrap_width: ^c.int) -> bool --- + SetTextWrapWhitespaceVisible :: proc(text: ^Text, visible: bool) -> bool --- + TextWrapWhitespaceVisible :: proc(text: ^Text) -> bool --- + + SetTextString :: proc(text: ^Text, string: cstring, length: c.size_t) -> bool --- + InsertTextString :: proc(text: ^Text, offset: c.int, string: cstring, length: c.size_t) -> bool --- + AppendTextString :: proc(text: ^Text, string: cstring, length: c.size_t) -> bool --- + DeleteTextString :: proc(text: ^Text, offset, length: c.int) -> bool --- + + GetTextSize :: proc(text: ^Text, w, h: ^c.int) -> bool --- + + GetTextSubString :: proc(text: ^Text, offset: c.int, substring: ^SubString) -> bool --- + GetTextSubStringForLine :: proc(text: ^Text, line: c.int, substring: ^SubString) -> bool --- + GetTextSubStringsForRange :: proc(text: ^Text, offset, length: c.int, count: ^c.int) -> [^]^SubString --- + GetTextSubStringForPoint :: proc(text: ^Text, x, y: c.int, substring: ^SubString) -> bool --- + GetPreviousTextSubString :: proc(text: ^Text, #by_ptr substring: SubString, previous: ^SubString) -> bool --- + GetNextTextSubString :: proc(text: ^Text, #by_ptr substring: SubString, next: ^SubString) -> bool --- + + UpdateText :: proc(text: ^Text) -> bool --- + DestroyText :: proc(text: ^Text) --- + CloseFont :: proc(font: ^Font) --- + Quit :: proc() --- + WasInit :: proc() -> c.int --- +} From 45c3361b430a0b02b1fa4bd1f83229ac41c58195 Mon Sep 17 00:00:00 2001 From: 0xrsp <95966883+0xrsp@users.noreply.github.com> Date: Sun, 11 May 2025 00:25:31 +0930 Subject: [PATCH 057/120] SDL3_ttf: make SubStringFlags a bit_field --- vendor/sdl3/ttf/sdl3_ttf.odin | 63 +++++++++++++++-------------------- 1 file changed, 26 insertions(+), 37 deletions(-) diff --git a/vendor/sdl3/ttf/sdl3_ttf.odin b/vendor/sdl3/ttf/sdl3_ttf.odin index ccd0c0519..c934ef408 100644 --- a/vendor/sdl3/ttf/sdl3_ttf.odin +++ b/vendor/sdl3/ttf/sdl3_ttf.odin @@ -10,36 +10,36 @@ when ODIN_OS == .Windows { } -PROP_FONT_CREATE_FILENAME_STRING :: "SDL_ttf.font.create.filename" -PROP_FONT_CREATE_IOSTREAM_POINTER :: "SDL_ttf.font.create.iostream" -PROP_FONT_CREATE_IOSTREAM_OFFSET_NUMBER :: "SDL_ttf.font.create.iostream.offset" +PROP_FONT_CREATE_FILENAME_STRING :: "SDL_ttf.font.create.filename" +PROP_FONT_CREATE_IOSTREAM_POINTER :: "SDL_ttf.font.create.iostream" +PROP_FONT_CREATE_IOSTREAM_OFFSET_NUMBER :: "SDL_ttf.font.create.iostream.offset" PROP_FONT_CREATE_IOSTREAM_AUTOCLOSE_BOOLEAN :: "SDL_ttf.font.create.iostream.autoclose" -PROP_FONT_CREATE_SIZE_FLOAT :: "SDL_ttf.font.create.size" -PROP_FONT_CREATE_FACE_NUMBER :: "SDL_ttf.font.create.face" -PROP_FONT_CREATE_HORIZONTAL_DPI_NUMBER :: "SDL_ttf.font.create.hdpi" -PROP_FONT_CREATE_VERTICAL_DPI_NUMBER :: "SDL_ttf.font.create.vdpi" -PROP_FONT_CREATE_EXISTING_FONT :: "SDL_ttf.font.create.existing_font" +PROP_FONT_CREATE_SIZE_FLOAT :: "SDL_ttf.font.create.size" +PROP_FONT_CREATE_FACE_NUMBER :: "SDL_ttf.font.create.face" +PROP_FONT_CREATE_HORIZONTAL_DPI_NUMBER :: "SDL_ttf.font.create.hdpi" +PROP_FONT_CREATE_VERTICAL_DPI_NUMBER :: "SDL_ttf.font.create.vdpi" +PROP_FONT_CREATE_EXISTING_FONT :: "SDL_ttf.font.create.existing_font" -FONT_WEIGHT_THIN :: 100 /**< Thin (100) named font weight value */ +FONT_WEIGHT_THIN :: 100 /**< Thin (100) named font weight value */ FONT_WEIGHT_EXTRA_LIGHT :: 200 /**< ExtraLight (200) named font weight value */ -FONT_WEIGHT_LIGHT :: 300 /**< Light (300) named font weight value */ -FONT_WEIGHT_NORMAL :: 400 /**< Normal (400) named font weight value */ -FONT_WEIGHT_MEDIUM :: 500 /**< Medium (500) named font weight value */ -FONT_WEIGHT_SEMI_BOLD :: 600 /**< SemiBold (600) named font weight value */ -FONT_WEIGHT_BOLD :: 700 /**< Bold (700) named font weight value */ -FONT_WEIGHT_EXTRA_BOLD :: 800 /**< ExtraBold (800) named font weight value */ -FONT_WEIGHT_BLACK :: 900 /**< Black (900) named font weight value */ +FONT_WEIGHT_LIGHT :: 300 /**< Light (300) named font weight value */ +FONT_WEIGHT_NORMAL :: 400 /**< Normal (400) named font weight value */ +FONT_WEIGHT_MEDIUM :: 500 /**< Medium (500) named font weight value */ +FONT_WEIGHT_SEMI_BOLD :: 600 /**< SemiBold (600) named font weight value */ +FONT_WEIGHT_BOLD :: 700 /**< Bold (700) named font weight value */ +FONT_WEIGHT_EXTRA_BOLD :: 800 /**< ExtraBold (800) named font weight value */ +FONT_WEIGHT_BLACK :: 900 /**< Black (900) named font weight value */ FONT_WEIGHT_EXTRA_BLACK :: 950 /**< ExtraBlack (950) named font weight value */ -PROP_RENDERER_TEXT_ENGINE_RENDERER :: "SDL_ttf.renderer_text_engine.create.renderer" -PROP_RENDERER_TEXT_ENGINE_ATLAS_TEXTURE_SIZE :: "SDL_ttf.renderer_text_engine.create.atlas_texture_size" +PROP_RENDERER_TEXT_ENGINE_RENDERER :: "SDL_ttf.renderer_text_engine.create.renderer" +PROP_RENDERER_TEXT_ENGINE_ATLAS_TEXTURE_SIZE :: "SDL_ttf.renderer_text_engine.create.atlas_texture_size" -PROP_GPU_TEXT_ENGINE_DEVICE :: "SDL_ttf.gpu_text_engine.create.device" +PROP_GPU_TEXT_ENGINE_DEVICE :: "SDL_ttf.gpu_text_engine.create.device" PROP_GPU_TEXT_ENGINE_ATLAS_TEXTURE_SIZE :: "SDL_ttf.gpu_text_engine.create.atlas_texture_size" MAJOR_VERSION :: 3 MINOR_VERSION :: 2 -PATCHLEVEL :: 2 +PATCHLEVEL :: 2 Font :: struct { } @@ -110,23 +110,12 @@ GPUTextEngineWinding :: enum c.int { COUNTER_CLOCKWISE, } -// NOTE: Unsure how to translate this as it is a bitset but also has a mask component -// so bit_set isnt really suitable -/* -typedef Uint32 TTF_SubStringFlags; - -#define TTF_SUBSTRING_DIRECTION_MASK 0x000000FF /**< The mask for the flow direction for this substring */ -#define TTF_SUBSTRING_TEXT_START 0x00000100 /**< This substring contains the beginning of the text */ -#define TTF_SUBSTRING_LINE_START 0x00000200 /**< This substring contains the beginning of line `line_index` */ -#define TTF_SUBSTRING_LINE_END 0x00000400 /**< This substring contains the end of line `line_index` */ -#define TTF_SUBSTRING_TEXT_END 0x00000800 /**< This substring contains the end of the text */ -*/ -SubStringFlags :: enum SDL.Uint32 { - DIRECTION_MASK = 0xFF, - TEXT_START = 0x100, - LINE_START = 0x200, - LINE_END = 0x400, - TEXT_END = 0x800, +SubStringFlags :: bit_field SDL.Uint32 { + direction: u8 | 8, + text_start: bool | 1, + line_start: bool | 1, + line_end: bool | 1, + text_end: bool | 1, } SubString :: struct { From 3c8cdf822ff5ce9d3a7b81645673e1823d00f889 Mon Sep 17 00:00:00 2001 From: Dove <1515098414@qq.com> Date: Sun, 11 May 2025 04:03:51 +0800 Subject: [PATCH 058/120] add 3 missing functions in vendor:raylib/rlgl --- vendor/raylib/rlgl/rlgl.odin | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/vendor/raylib/rlgl/rlgl.odin b/vendor/raylib/rlgl/rlgl.odin index 6ac19695d..b6cc23c48 100644 --- a/vendor/raylib/rlgl/rlgl.odin +++ b/vendor/raylib/rlgl/rlgl.odin @@ -375,17 +375,20 @@ foreign lib { //------------------------------------------------------------------------------------ // Functions Declaration - Matrix operations //------------------------------------------------------------------------------------ - MatrixMode :: proc(mode: c.int) --- // Choose the current matrix to be transformed - PushMatrix :: proc() --- // Push the current matrix to stack - PopMatrix :: proc() --- // Pop lattest inserted matrix from stack - LoadIdentity :: proc() --- // Reset current matrix to identity matrix - Translatef :: proc(x, y, z: f32) --- // Multiply the current matrix by a translation matrix - Rotatef :: proc(angleDeg: f32, x, y, z: f32) --- // Multiply the current matrix by a rotation matrix - Scalef :: proc(x, y, z: f32) --- // Multiply the current matrix by a scaling matrix - MultMatrixf :: proc(matf: [^]f32) --- // Multiply the current matrix by another matrix - Frustum :: proc(left, right, bottom, top, znear, zfar: f64) --- - Ortho :: proc(left, right, bottom, top, znear, zfar: f64) --- - Viewport :: proc(x, y, width, height: c.int) --- // Set the viewport area + MatrixMode :: proc(mode: c.int) --- // Choose the current matrix to be transformed + PushMatrix :: proc() --- // Push the current matrix to stack + PopMatrix :: proc() --- // Pop lattest inserted matrix from stack + LoadIdentity :: proc() --- // Reset current matrix to identity matrix + Translatef :: proc(x, y, z: f32) --- // Multiply the current matrix by a translation matrix + Rotatef :: proc(angleDeg: f32, x, y, z: f32) --- // Multiply the current matrix by a rotation matrix + Scalef :: proc(x, y, z: f32) --- // Multiply the current matrix by a scaling matrix + MultMatrixf :: proc(matf: [^]f32) --- // Multiply the current matrix by another matrix + Frustum :: proc(left, right, bottom, top, znear, zfar: f64) --- + Ortho :: proc(left, right, bottom, top, znear, zfar: f64) --- + Viewport :: proc(x, y, width, height: c.int) --- // Set the viewport area + SetClipPlanes :: proc(near, far: f64) --- // Set clip planes distances + GetCullDistanceNear :: proc() -> f64 --- // Get cull plane distance near + GetCullDistanceFar :: proc() -> f64 --- // Get cull plane distance far //------------------------------------------------------------------------------------ // Functions Declaration - Vertex level operations From 30388cada3d2bee633285516344d8d5a88308eb0 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Sun, 11 May 2025 15:35:52 +0200 Subject: [PATCH 059/120] Fix os2.clean_path on Windows --- .gitignore | 1 + core/os/os2/path_windows.odin | 6 ++- core/os/os2/stat_windows.odin | 80 +++++++++++++++++++++----------- tests/core/os/os2/path.odin | 85 +++++++++++++++++++--------------- tests/core/os/os2/process.odin | 1 + 5 files changed, 108 insertions(+), 65 deletions(-) diff --git a/.gitignore b/.gitignore index 254731c96..1187596de 100644 --- a/.gitignore +++ b/.gitignore @@ -294,4 +294,5 @@ build.sh # RAD debugger project file *.raddbg *.rdi +tests/issues/build/* misc/featuregen/featuregen diff --git a/core/os/os2/path_windows.odin b/core/os/os2/path_windows.odin index 9c0fec9b9..c2e51040f 100644 --- a/core/os/os2/path_windows.odin +++ b/core/os/os2/path_windows.odin @@ -187,7 +187,6 @@ init_long_path_support :: proc() { if value == 1 { can_use_long_paths = true } - } @(require_results) @@ -271,6 +270,11 @@ _clean_path_handle_start :: proc(path: string, buffer: []u8) -> (rooted: bool, s start += 1 } copy(buffer, path[:start]) + for n in 0.. bool { return false } -_is_UNC :: proc(path: string) -> bool { - return _volume_name_len(path) > 2 -} - -_volume_name_len :: proc(path: string) -> int { +_volume_name_len :: proc(path: string) -> (length: int) { if len(path) < 2 { return 0 } - c := path[0] + if path[1] == ':' { - switch c { + switch path[0] { case 'a'..='z', 'A'..='Z': return 2 } } - // URL: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx - if l := len(path); l >= 5 && _is_path_separator(path[0]) && _is_path_separator(path[1]) && - !_is_path_separator(path[2]) && path[2] != '.' { - for n := 3; n < l-1; n += 1 { - if _is_path_separator(path[n]) { - n += 1 - if !_is_path_separator(path[n]) { - if path[n] == '.' { - break - } - } - for ; n < l; n += 1 { - if _is_path_separator(path[n]) { - break - } - } - return n + /* + See: URL: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx + Further allowed paths can be of the form of: + - \\server\share or \\server\share\more\path + - \\?\C:\... + - \\.\PhysicalDriveX + */ + // Any remaining kind of path has to start with two slashes. + if !_is_path_separator(path[0]) || !_is_path_separator(path[1]) { + return 0 + } + + // Device path. The volume name is the whole string + if len(path) >= 5 && path[2] == '.' && _is_path_separator(path[3]) { + return len(path) + } + + // We're a UNC share `\\host\share`, file namespace `\\?\C:` or UNC in file namespace `\\?\\host\share` + prefix := 2 + + // File namespace. + if len(path) >= 5 && path[2] == '?' && _is_path_separator(path[3]) { + if _is_path_separator(path[4]) { + // `\\?\\` UNC path in file namespace + prefix = 5 + } + + if len(path) >= 6 && path[5] == ':' { + switch path[4] { + case 'a'..='z', 'A'..='Z': + return 6 + case: + return 0 } - break } } - return 0 -} + + // UNC path, minimum version of the volume is `\\h\s` for host, share. + // Can also contain an IP address in the host position. + slash_count := 0 + for i in prefix.. 0 { + slash_count += 1 + + if slash_count == 2 { + return i + } + } + } + + return len(path) +} \ No newline at end of file diff --git a/tests/core/os/os2/path.odin b/tests/core/os/os2/path.odin index 2cf1f1f1c..7b1cb0146 100644 --- a/tests/core/os/os2/path.odin +++ b/tests/core/os/os2/path.odin @@ -36,47 +36,58 @@ posix_to_dos_path :: proc(path: string) -> string { @(test) test_clean_path :: proc(t: ^testing.T) { Test_Case :: struct{ - path: string, + path: string, expected: string, } - test_cases := [?]Test_Case { - {`../../foo/../../`, `../../..`}, - {`../../foo/..`, `../..`}, - {`../../foo`, `../../foo`}, - {`../..`, `../..`}, - {`.././foo`, `../foo`}, - {`..`, `..`}, - {`.`, `.`}, - {`.foo`, `.foo`}, - {`/../../foo/../../`, `/`}, - {`/../`, `/`}, - {`/..`, `/`}, - {`/`, `/`}, - {`//home/foo/bar/../../`, `/home`}, - {`/a/../..`, `/`}, - {`/a/../`, `/`}, - {`/a/あ`, `/a/あ`}, - {`/a/あ/..`, `/a`}, - {`/あ/a/..`, `/あ`}, - {`/あ/a/../あ`, `/あ/あ`}, - {`/home/../`, `/`}, - {`/home/..`, `/`}, - {`/home/foo/../../usr`, `/usr`}, - {`/home/foo/../..`, `/`}, - {`/home/foo/../`, `/home`}, - {``, `.`}, - {`a/..`, `.`}, - {`a`, `a`}, - {`abc//.//../foo`, `foo`}, - {`foo`, `foo`}, - {`home/foo/bar/../../`, `home`}, - } - when ODIN_OS == .Windows { - for &tc in test_cases { - tc.path = posix_to_dos_path(tc.path) - tc.expected = posix_to_dos_path(tc.expected) + test_cases := [?]Test_Case { + {`W:/odin\examples\demo/demo.odin`, `W:\odin\examples\demo\demo.odin`}, + {`\\server\share\path\file.ext`, `\\server\share\path\file.ext`}, + {`//server\share/path\file.ext`, `\\server\share\path\file.ext`}, + {`/\192.168.0.10\share/path\file.ext`, `\\192.168.0.10\share\path\file.ext`}, + {`\\?\C:/Users/Foo/path\file.ext`, `\\?\C:\Users\Foo\path\file.ext`}, + {`\\?\\localhost\share\file.ext`, `\\?\\localhost\share\file.ext`}, + {`//?\/192.168.0.10\share\file.ext`, `\\?\\192.168.0.10\share\file.ext`}, + {`\\.\PhysicalDrive3`, `\\.\PhysicalDrive3`}, + {`/\./PhysicalDrive3`, `\\.\PhysicalDrive3`}, + {`C:\a\..\..`, `C:\`}, + {`C:\a\..`, `C:\`}, + {`C:\あ/a/..`, `C:\あ`}, + {`C:\あ/a/../あ`, `C:\あ\あ`}, + } + } else { + test_cases := [?]Test_Case { + {`../../foo/../../`, `../../..`}, + {`../../foo/..`, `../..`}, + {`../../foo`, `../../foo`}, + {`../..`, `../..`}, + {`.././foo`, `../foo`}, + {`..`, `..`}, + {`.`, `.`}, + {`.foo`, `.foo`}, + {`/../../foo/../../`, `/`}, + {`/../`, `/`}, + {`/..`, `/`}, + {`/`, `/`}, + {`//home/foo/bar/../../`, `/home`}, + {`/a/../..`, `/`}, + {`/a/../`, `/`}, + {`/a/あ`, `/a/あ`}, + {`/a/あ/..`, `/a`}, + {`/あ/a/..`, `/あ`}, + {`/あ/a/../あ`, `/あ/あ`}, + {`/home/../`, `/`}, + {`/home/..`, `/`}, + {`/home/foo/../../usr`, `/usr`}, + {`/home/foo/../..`, `/`}, + {`/home/foo/../`, `/home`}, + {``, `.`}, + {`a/..`, `.`}, + {`a`, `a`}, + {`abc//.//../foo`, `foo`}, + {`foo`, `foo`}, + {`home/foo/bar/../../`, `home`}, } } diff --git a/tests/core/os/os2/process.odin b/tests/core/os/os2/process.odin index d7700d201..c530b4c79 100644 --- a/tests/core/os/os2/process.odin +++ b/tests/core/os/os2/process.odin @@ -1,3 +1,4 @@ +#+build !windows package tests_core_os_os2 import os "core:os/os2" From 39789bc6cb2d5a4f7a232ef1a9286fc6d6e3df53 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Mon, 12 May 2025 01:17:34 +0200 Subject: [PATCH 060/120] Make strings.to_cstring adhere to #optional_allocator_error --- core/strings/builder.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/strings/builder.odin b/core/strings/builder.odin index e5a88527a..05382f04e 100644 --- a/core/strings/builder.odin +++ b/core/strings/builder.odin @@ -311,7 +311,7 @@ Returns: - res: A cstring of the Builder's buffer upon success - err: An optional allocator error if one occured, `nil` otherwise */ -to_cstring :: proc(b: ^Builder) -> (res: cstring, err: mem.Allocator_Error) { +to_cstring :: proc(b: ^Builder) -> (res: cstring, err: mem.Allocator_Error) #optional_allocator_error { n := append(&b.buf, 0) or_return if n != 1 { return nil, .Out_Of_Memory From d2d4ac8120409abbfd5be9ac9890fa2b2536f3ed Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 12 May 2025 15:29:43 +0100 Subject: [PATCH 061/120] Add `compress_values` --- base/builtin/builtin.odin | 3 +- src/check_builtin.cpp | 180 ++++++++++++++++++++++++++++++++++ src/checker_builtin_procs.hpp | 2 + src/llvm_backend_proc.cpp | 62 ++++++++++++ 4 files changed, 246 insertions(+), 1 deletion(-) diff --git a/base/builtin/builtin.odin b/base/builtin/builtin.odin index 227ceeb49..14da9603d 100644 --- a/base/builtin/builtin.odin +++ b/base/builtin/builtin.odin @@ -119,7 +119,8 @@ jmag :: proc(value: Quaternion) -> Float --- kmag :: proc(value: Quaternion) -> Float --- conj :: proc(value: Complex_Or_Quaternion) -> Complex_Or_Quaternion --- -expand_values :: proc(value: Struct_Or_Array) -> (A, B, C, ...) --- +expand_values :: proc(value: Struct_Or_Array) -> (A, B, C, ...) --- +compress_values :: proc(values: ...) -> Struct_Or_Array_Like_Type --- min :: proc(values: ..T) -> T --- max :: proc(values: ..T) -> T --- diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index dd9896927..f01b61128 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -3243,6 +3243,186 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As break; } + case BuiltinProc_compress_values: { + Operand *ops = gb_alloc_array(temporary_allocator(), Operand, ce->args.count); + + isize value_count = 0; + + for_array(i, ce->args) { + Ast *arg = ce->args[i]; + Operand *op = &ops[i]; + check_multi_expr(c, op, arg); + if (op->mode == Addressing_Invalid) { + return false; + } + + if (op->type == nullptr || op->type == t_invalid) { + gbString s = expr_to_string(op->expr); + error(op->expr, "Invalid expression to '%.*s', got %s", LIT(builtin_name), s); + gb_string_free(s); + } + if (is_type_tuple(op->type)) { + value_count += op->type->Tuple.variables.count; + } else { + value_count += 1; + } + } + + GB_ASSERT(value_count >= 1); + + if (value_count == 1) { + *operand = ops[0]; + break; + } + + if (type_hint != nullptr) { + Type *th = base_type(type_hint); + if (th->kind == Type_Struct) { + if (value_count == th->Struct.fields.count) { + isize index = 0; + for_array(i, ce->args) { + Operand *op = &ops[i]; + if (is_type_tuple(op->type)) { + for (Entity *v : op->type->Tuple.variables) { + Operand x = {}; + x.mode = Addressing_Value; + x.type = v->type; + check_assignment(c, &x, th->Struct.fields[index++]->type, builtin_name); + if (x.mode == Addressing_Invalid) { + return false; + } + } + } else { + check_assignment(c, op, th->Struct.fields[index++]->type, builtin_name); + if (op->mode == Addressing_Invalid) { + return false; + } + } + } + + operand->type = type_hint; + operand->mode = Addressing_Value; + break; + } + } else if (is_type_array_like(th)) { + if (cast(i64)value_count == get_array_type_count(th)) { + Type *elem = base_array_type(th); + for_array(i, ce->args) { + Operand *op = &ops[i]; + if (is_type_tuple(op->type)) { + for (Entity *v : op->type->Tuple.variables) { + Operand x = {}; + x.mode = Addressing_Value; + x.type = v->type; + check_assignment(c, &x, elem, builtin_name); + if (x.mode == Addressing_Invalid) { + return false; + } + } + } else { + check_assignment(c, op, elem, builtin_name); + if (op->mode == Addressing_Invalid) { + return false; + } + } + } + + operand->type = type_hint; + operand->mode = Addressing_Value; + break; + } + } + } + + bool all_types_the_same = true; + Type *last_type = nullptr; + for_array(i, ce->args) { + Operand *op = &ops[i]; + if (is_type_tuple(op->type)) { + if (last_type == nullptr) { + op->type->Tuple.variables[0]->type; + } + for (Entity *v : op->type->Tuple.variables) { + if (!are_types_identical(last_type, v->type)) { + all_types_the_same = false; + break; + } + last_type = v->type; + } + } else { + if (last_type == nullptr) { + last_type = op->type; + } else { + if (!are_types_identical(last_type, op->type)) { + all_types_the_same = false; + break; + } + last_type = op->type; + } + } + } + + if (all_types_the_same) { + operand->type = alloc_type_array(last_type, value_count); + operand->mode = Addressing_Value; + } else { + Type *st = alloc_type_struct_complete(); + st->Struct.fields = slice_make(permanent_allocator(), value_count); + st->Struct.tags = gb_alloc_array(permanent_allocator(), String, value_count); + st->Struct.offsets = gb_alloc_array(permanent_allocator(), i64, value_count); + + Scope *scope = create_scope(c->info, nullptr); + + Token token = {}; + token.kind = Token_Ident; + token.pos = ast_token(call).pos; + + isize index = 0; + for_array(i, ce->args) { + Operand *op = &ops[i]; + if (is_type_tuple(op->type)) { + for (Entity *v : op->type->Tuple.variables) { + Type *t = default_type(v->type); + if (is_type_untyped(t)) { + gbString s = expr_to_string(op->expr); + error(op->expr, "Invalid use of '%s' in '%.*s'", s, LIT(builtin_name)); + gb_string_free(s); + return false; + } + + gbString s = gb_string_make_reserve(permanent_allocator(), 32); + s = gb_string_append_fmt(s, "v%lld", cast(long long)index); + token.string = make_string_c(s); + Entity *e = alloc_entity_field(scope, token, t, false, cast(i32)index, EntityState_Resolved); + st->Struct.fields[index++] = e; + } + } else { + Type *t = default_type(op->type); + if (is_type_untyped(t)) { + gbString s = expr_to_string(op->expr); + error(op->expr, "Invalid use of '%s' in '%.*s'", s, LIT(builtin_name)); + gb_string_free(s); + return false; + } + + gbString s = gb_string_make_reserve(permanent_allocator(), 32); + s = gb_string_append_fmt(s, "v%lld", cast(long long)index); + token.string = make_string_c(s); + Entity *e = alloc_entity_field(scope, token, t, false, cast(i32)index, EntityState_Resolved); + st->Struct.fields[index++] = e; + } + } + + + gb_unused(type_size_of(st)); + + operand->type = st; + operand->mode = Addressing_Value; + } + break; + } + + case BuiltinProc_min: { // min :: proc($T: typeid) -> ordered // min :: proc(a: ..ordered) -> ordered diff --git a/src/checker_builtin_procs.hpp b/src/checker_builtin_procs.hpp index c7bd3a7a7..c4e487560 100644 --- a/src/checker_builtin_procs.hpp +++ b/src/checker_builtin_procs.hpp @@ -26,6 +26,7 @@ enum BuiltinProcId { BuiltinProc_conj, BuiltinProc_expand_values, + BuiltinProc_compress_values, BuiltinProc_min, BuiltinProc_max, @@ -376,6 +377,7 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { {STR_LIT("conj"), 1, false, Expr_Expr, BuiltinProcPkg_builtin}, {STR_LIT("expand_values"), 1, false, Expr_Expr, BuiltinProcPkg_builtin}, + {STR_LIT("compress_values"), 1, true, Expr_Expr, BuiltinProcPkg_builtin}, {STR_LIT("min"), 1, true, Expr_Expr, BuiltinProcPkg_builtin}, {STR_LIT("max"), 1, true, Expr_Expr, BuiltinProcPkg_builtin}, diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index ae1e87f18..f51ed2b4d 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -2246,6 +2246,68 @@ gb_internal lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValu return lb_emit_load(p, tuple); } + case BuiltinProc_compress_values: { + isize value_count = 0; + for (Ast *arg : ce->args) { + Type *t = arg->tav.type; + if (is_type_tuple(t)) { + value_count += t->Tuple.variables.count; + } else { + value_count += 1; + } + } + + if (value_count == 1) { + lbValue x = lb_build_expr(p, ce->args[0]); + x = lb_emit_conv(p, x, tv.type); + return x; + } + + Type *dt = base_type(tv.type); + lbAddr addr = lb_add_local_generated(p, tv.type, true); + if (is_type_struct(dt) || is_type_tuple(dt)) { + i32 index = 0; + for (Ast *arg : ce->args) { + lbValue x = lb_build_expr(p, arg); + if (is_type_tuple(x.type)) { + for (isize i = 0; i < x.type->Tuple.variables.count; i++) { + lbValue y = lb_emit_tuple_ev(p, x, cast(i32)i); + lbValue ptr = lb_emit_struct_ep(p, addr.addr, index++); + y = lb_emit_conv(p, y, type_deref(ptr.type)); + lb_emit_store(p, ptr, y); + } + } else { + lbValue ptr = lb_emit_struct_ep(p, addr.addr, index++); + x = lb_emit_conv(p, x, type_deref(ptr.type)); + lb_emit_store(p, ptr, x); + } + } + GB_ASSERT(index == value_count); + } else if (is_type_array_like(dt)) { + i32 index = 0; + for (Ast *arg : ce->args) { + lbValue x = lb_build_expr(p, arg); + if (is_type_tuple(x.type)) { + for (isize i = 0; i < x.type->Tuple.variables.count; i++) { + lbValue y = lb_emit_tuple_ev(p, x, cast(i32)i); + lbValue ptr = lb_emit_array_epi(p, addr.addr, index++); + y = lb_emit_conv(p, y, type_deref(ptr.type)); + lb_emit_store(p, ptr, y); + } + } else { + lbValue ptr = lb_emit_array_epi(p, addr.addr, index++); + x = lb_emit_conv(p, x, type_deref(ptr.type)); + lb_emit_store(p, ptr, x); + } + } + GB_ASSERT(index == value_count); + } else { + GB_PANIC("TODO(bill): compress_values -> %s", type_to_string(tv.type)); + } + + return lb_addr_load(p, addr); + } + case BuiltinProc_min: { Type *t = type_of_expr(expr); if (ce->args.count == 2) { From dec3d6959df1a7a876782f3e233d0320d41a0fad Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Mon, 12 May 2025 16:45:51 +0200 Subject: [PATCH 062/120] Update `linux.Map_Flags_Bits` Fixes #5151 - Removes `SHARED_VALIDATE` from the enum and turns it into `Map_Shared_Validate :: Map_Flags{.SHARED, .PRIVATE}` so it has the proper value of 0x03. - Adds `DROPPABLE`. - Adds constants `MAP_HUGE_SHIFT` and `MAP_HUGE_MASK`. - Adds the huge page precomputed constants from `mman.h`, defined as the log2 of the size shifted left by `MAP_HUGE_SHIFT`: Map_Huge_16KB Map_Huge_64KB Map_Huge_512KB Map_Huge_1MB Map_Huge_2MB Map_Huge_8MB Map_Huge_16MB Map_Huge_32MB Map_Huge_256MB Map_Huge_512MB Map_Huge_1GB Map_Huge_2GB Map_Huge_16GB --- core/sys/linux/bits.odin | 8 ++++++-- core/sys/linux/types.odin | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/core/sys/linux/bits.odin b/core/sys/linux/bits.odin index 53660dc8f..88f211427 100644 --- a/core/sys/linux/bits.odin +++ b/core/sys/linux/bits.odin @@ -579,7 +579,7 @@ Inotify_Event_Bits :: enum u32 { /* Bits for Mem_Protection bitfield */ -Mem_Protection_Bits :: enum{ +Mem_Protection_Bits :: enum { READ = 0, WRITE = 1, EXEC = 2, @@ -598,7 +598,7 @@ Mem_Protection_Bits :: enum{ Map_Flags_Bits :: enum { SHARED = 0, PRIVATE = 1, - SHARED_VALIDATE = 2, + DROPPABLE = 3, FIXED = 4, ANONYMOUS = 5, // platform-dependent section start @@ -619,6 +619,10 @@ Map_Flags_Bits :: enum { UNINITIALIZED = 26, } +// Not actually flags, but a shift and mask for when HUGETLB is defined +MAP_HUGE_SHIFT :: 26 +MAP_HUGE_MASK :: 63 + /* Bits for MLock_Flags */ diff --git a/core/sys/linux/types.odin b/core/sys/linux/types.odin index 8f2284f56..66af3395e 100644 --- a/core/sys/linux/types.odin +++ b/core/sys/linux/types.odin @@ -371,6 +371,21 @@ Mem_Protection :: bit_set[Mem_Protection_Bits; i32] */ Map_Flags :: bit_set[Map_Flags_Bits; i32] +Map_Shared_Validate :: Map_Flags{.SHARED, .PRIVATE} +Map_Huge_16KB :: transmute(Map_Flags)(u32(14) << MAP_HUGE_SHIFT) +Map_Huge_64KB :: transmute(Map_Flags)(u32(16) << MAP_HUGE_SHIFT) +Map_Huge_512KB :: transmute(Map_Flags)(u32(19) << MAP_HUGE_SHIFT) +Map_Huge_1MB :: transmute(Map_Flags)(u32(20) << MAP_HUGE_SHIFT) +Map_Huge_2MB :: transmute(Map_Flags)(u32(21) << MAP_HUGE_SHIFT) +Map_Huge_8MB :: transmute(Map_Flags)(u32(23) << MAP_HUGE_SHIFT) +Map_Huge_16MB :: transmute(Map_Flags)(u32(24) << MAP_HUGE_SHIFT) +Map_Huge_32MB :: transmute(Map_Flags)(u32(25) << MAP_HUGE_SHIFT) +Map_Huge_256MB :: transmute(Map_Flags)(u32(28) << MAP_HUGE_SHIFT) +Map_Huge_512MB :: transmute(Map_Flags)(u32(29) << MAP_HUGE_SHIFT) +Map_Huge_1GB :: transmute(Map_Flags)(u32(30) << MAP_HUGE_SHIFT) +Map_Huge_2GB :: transmute(Map_Flags)(u32(31) << MAP_HUGE_SHIFT) +Map_Huge_16GB :: transmute(Map_Flags)(u32(34) << MAP_HUGE_SHIFT) + /* Flags for mlock(2). */ From be24feb862808d729b8b89f24116319deefde632 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Mon, 12 May 2025 17:13:59 +0200 Subject: [PATCH 063/120] Move things to constants.odin --- core/sys/linux/bits.odin | 6 ++---- core/sys/linux/constants.odin | 19 +++++++++++++++++++ core/sys/linux/types.odin | 17 ++--------------- 3 files changed, 23 insertions(+), 19 deletions(-) diff --git a/core/sys/linux/bits.odin b/core/sys/linux/bits.odin index 88f211427..d4edf354b 100644 --- a/core/sys/linux/bits.odin +++ b/core/sys/linux/bits.odin @@ -594,6 +594,8 @@ Mem_Protection_Bits :: enum { /* Bits for Map_Flags + + See `constants.odin` for `MAP_SHARED_VALIDATE` and `MAP_HUGE_16KB`, et al. */ Map_Flags_Bits :: enum { SHARED = 0, @@ -619,10 +621,6 @@ Map_Flags_Bits :: enum { UNINITIALIZED = 26, } -// Not actually flags, but a shift and mask for when HUGETLB is defined -MAP_HUGE_SHIFT :: 26 -MAP_HUGE_MASK :: 63 - /* Bits for MLock_Flags */ diff --git a/core/sys/linux/constants.odin b/core/sys/linux/constants.odin index b3bbcafb3..1010c931a 100644 --- a/core/sys/linux/constants.odin +++ b/core/sys/linux/constants.odin @@ -373,3 +373,22 @@ PTRACE_SECCOMP_GET_FILTER :: PTrace_Seccomp_Get_Filter_Type(.SECCOMP_GET_FIL PTRACE_SECCOMP_GET_METADATA :: PTrace_Seccomp_Get_Metadata_Type(.SECCOMP_GET_METADATA) PTRACE_GET_SYSCALL_INFO :: PTrace_Get_Syscall_Info_Type(.GET_SYSCALL_INFO) PTRACE_GET_RSEQ_CONFIGURATION :: PTrace_Get_RSeq_Configuration_Type(.GET_RSEQ_CONFIGURATION) + +MAP_SHARED_VALIDATE :: Map_Flags{.SHARED, .PRIVATE} + +MAP_HUGE_SHIFT :: 26 +MAP_HUGE_MASK :: 63 + +MAP_HUGE_16KB :: transmute(Map_Flags)(u32(14) << MAP_HUGE_SHIFT) +MAP_HUGE_64KB :: transmute(Map_Flags)(u32(16) << MAP_HUGE_SHIFT) +MAP_HUGE_512KB :: transmute(Map_Flags)(u32(19) << MAP_HUGE_SHIFT) +MAP_HUGE_1MB :: transmute(Map_Flags)(u32(20) << MAP_HUGE_SHIFT) +MAP_HUGE_2MB :: transmute(Map_Flags)(u32(21) << MAP_HUGE_SHIFT) +MAP_HUGE_8MB :: transmute(Map_Flags)(u32(23) << MAP_HUGE_SHIFT) +MAP_HUGE_16MB :: transmute(Map_Flags)(u32(24) << MAP_HUGE_SHIFT) +MAP_HUGE_32MB :: transmute(Map_Flags)(u32(25) << MAP_HUGE_SHIFT) +MAP_HUGE_256MB :: transmute(Map_Flags)(u32(28) << MAP_HUGE_SHIFT) +MAP_HUGE_512MB :: transmute(Map_Flags)(u32(29) << MAP_HUGE_SHIFT) +MAP_HUGE_1GB :: transmute(Map_Flags)(u32(30) << MAP_HUGE_SHIFT) +MAP_HUGE_2GB :: transmute(Map_Flags)(u32(31) << MAP_HUGE_SHIFT) +MAP_HUGE_16GB :: transmute(Map_Flags)(u32(34) << MAP_HUGE_SHIFT) \ No newline at end of file diff --git a/core/sys/linux/types.odin b/core/sys/linux/types.odin index 66af3395e..b5670cf87 100644 --- a/core/sys/linux/types.odin +++ b/core/sys/linux/types.odin @@ -368,24 +368,11 @@ Mem_Protection :: bit_set[Mem_Protection_Bits; i32] /* Flags for mmap. + + See `constants.odin` for `MAP_SHARED_VALIDATE` and `MAP_HUGE_16KB`, et al. */ Map_Flags :: bit_set[Map_Flags_Bits; i32] -Map_Shared_Validate :: Map_Flags{.SHARED, .PRIVATE} -Map_Huge_16KB :: transmute(Map_Flags)(u32(14) << MAP_HUGE_SHIFT) -Map_Huge_64KB :: transmute(Map_Flags)(u32(16) << MAP_HUGE_SHIFT) -Map_Huge_512KB :: transmute(Map_Flags)(u32(19) << MAP_HUGE_SHIFT) -Map_Huge_1MB :: transmute(Map_Flags)(u32(20) << MAP_HUGE_SHIFT) -Map_Huge_2MB :: transmute(Map_Flags)(u32(21) << MAP_HUGE_SHIFT) -Map_Huge_8MB :: transmute(Map_Flags)(u32(23) << MAP_HUGE_SHIFT) -Map_Huge_16MB :: transmute(Map_Flags)(u32(24) << MAP_HUGE_SHIFT) -Map_Huge_32MB :: transmute(Map_Flags)(u32(25) << MAP_HUGE_SHIFT) -Map_Huge_256MB :: transmute(Map_Flags)(u32(28) << MAP_HUGE_SHIFT) -Map_Huge_512MB :: transmute(Map_Flags)(u32(29) << MAP_HUGE_SHIFT) -Map_Huge_1GB :: transmute(Map_Flags)(u32(30) << MAP_HUGE_SHIFT) -Map_Huge_2GB :: transmute(Map_Flags)(u32(31) << MAP_HUGE_SHIFT) -Map_Huge_16GB :: transmute(Map_Flags)(u32(34) << MAP_HUGE_SHIFT) - /* Flags for mlock(2). */ From d2d5c40e765b3562731e55e32cc178b7aaea9e1f Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 12 May 2025 16:49:59 +0100 Subject: [PATCH 064/120] Handle "untyped" case --- src/check_builtin.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index f01b61128..8efaf6b26 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -3363,7 +3363,15 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As } if (all_types_the_same) { - operand->type = alloc_type_array(last_type, value_count); + Type *elem_type = default_type(last_type); + if (is_type_untyped(elem_type)) { + gbString s = expr_to_string(call); + error(call, "Invalid use of '%s' in '%.*s'", s, LIT(builtin_name)); + gb_string_free(s); + return false; + } + + operand->type = alloc_type_array(elem_type, value_count); operand->mode = Addressing_Value; } else { Type *st = alloc_type_struct_complete(); From d7a83a7a1f4ca485b473723117c2dce30855a5d1 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Mon, 12 May 2025 23:34:12 +0200 Subject: [PATCH 065/120] Revert "os2: Don't try to translate Windows file attributes to Unix mode flags" This reverts commit 95923c2059758bac282f2b78a004d8daa3824994. It'll be updated later. --- core/os/os2/file_windows.odin | 41 ++++++++++++----------------------- core/os/os2/stat_windows.odin | 15 +++++-------- 2 files changed, 20 insertions(+), 36 deletions(-) diff --git a/core/os/os2/file_windows.odin b/core/os/os2/file_windows.odin index 16803f1ac..40d012183 100644 --- a/core/os/os2/file_windows.odin +++ b/core/os/os2/file_windows.odin @@ -12,30 +12,7 @@ import win32 "core:sys/windows" INVALID_HANDLE :: ~uintptr(0) -// NOTE(Jeroen): We don't translate mode flags for Linux when given to `chmod`. -// Let's not do so for Windows for `chmod` or `read_directory_iterator` either. -// They're *not* portable between Windows and non-Windows platforms. -// -// It also leads to information loss as flags like Archive, Hidden and System have no equivalent there. -// We can of course parse them so we can set the `.Symlink` and `.Directory` type, but we shouldn't pretend -// that 0o644 is meaningful when returned as a mode. -// `C:\bootmgr` as an example has attributes read only, hidden, system, archive. In no way is it sensible to replace that with 0o444. -FILE_ATTRIBUTE_READONLY :: win32.FILE_ATTRIBUTE_READONLY // 0x00000001 -FILE_ATTRIBUTE_HIDDEN :: win32.FILE_ATTRIBUTE_HIDDEN // 0x00000002 -FILE_ATTRIBUTE_SYSTEM :: win32.FILE_ATTRIBUTE_SYSTEM // 0x00000004 -FILE_ATTRIBUTE_DIRECTORY :: win32.FILE_ATTRIBUTE_DIRECTORY // 0x00000010 -FILE_ATTRIBUTE_ARCHIVE :: win32.FILE_ATTRIBUTE_ARCHIVE // 0x00000020 -FILE_ATTRIBUTE_DEVICE :: win32.FILE_ATTRIBUTE_DEVICE // 0x00000040 -FILE_ATTRIBUTE_NORMAL :: win32.FILE_ATTRIBUTE_NORMAL // 0x00000080 -FILE_ATTRIBUTE_TEMPORARY :: win32.FILE_ATTRIBUTE_TEMPORARY // 0x00000100 -FILE_ATTRIBUTE_SPARSE_FILE :: win32.FILE_ATTRIBUTE_SPARSE_FILE // 0x00000200 -FILE_ATTRIBUTE_REPARSE_Point :: win32.FILE_ATTRIBUTE_REPARSE_Point // 0x00000400 -FILE_ATTRIBUTE_REPARSE_POINT :: win32.FILE_ATTRIBUTE_REPARSE_POINT // 0x00000400 -FILE_ATTRIBUTE_COMPRESSED :: win32.FILE_ATTRIBUTE_COMPRESSED // 0x00000800 -FILE_ATTRIBUTE_OFFLINE :: win32.FILE_ATTRIBUTE_OFFLINE // 0x00001000 -FILE_ATTRIBUTE_NOT_CONTENT_INDEXED :: win32.FILE_ATTRIBUTE_NOT_CONTENT_INDEXED // 0x00002000 -FILE_ATTRIBUTE_ENCRYPTED :: win32.FILE_ATTRIBUTE_ENCRYPTED // 0x00004000 - +S_IWRITE :: 0o200 _ERROR_BAD_NETPATH :: 53 MAX_RW :: 1<<30 @@ -145,7 +122,7 @@ _open_internal :: proc(name: string, flags: File_Flags, perm: int) -> (handle: u } attrs: u32 = win32.FILE_ATTRIBUTE_NORMAL|win32.FILE_FLAG_BACKUP_SEMANTICS - if u32(perm) & FILE_ATTRIBUTE_NORMAL == 0 { + if perm & S_IWRITE == 0 { attrs = win32.FILE_ATTRIBUTE_READONLY if create_mode == win32.CREATE_ALWAYS { // NOTE(bill): Open has just asked to create a file in read-only mode. @@ -771,10 +748,20 @@ _fchmod :: proc(f: ^File, mode: int) -> Error { if f == nil || f.impl == nil { return nil } + d: win32.BY_HANDLE_FILE_INFORMATION + if !win32.GetFileInformationByHandle(_handle(f), &d) { + return _get_platform_error() + } + attrs := d.dwFileAttributes + if mode & S_IWRITE != 0 { + attrs &~= win32.FILE_ATTRIBUTE_READONLY + } else { + attrs |= win32.FILE_ATTRIBUTE_READONLY + } info: win32.FILE_BASIC_INFO - info.FileAttributes = win32.DWORD(mode) - if !win32.SetFileInformationByHandle(_handle(f), .FileBasicInfo, &info, size_of(info)) { + info.FileAttributes = attrs + if !win32.SetFileInformationByHandle(_handle(f), .FileBasicInfo, &info, size_of(d)) { return _get_platform_error() } return nil diff --git a/core/os/os2/stat_windows.odin b/core/os/os2/stat_windows.odin index af84e1443..3cdc80405 100644 --- a/core/os/os2/stat_windows.odin +++ b/core/os/os2/stat_windows.odin @@ -212,15 +212,11 @@ _file_type_from_create_file :: proc(wname: win32.wstring, create_file_attributes } _file_type_mode_from_file_attributes :: proc(file_attributes: win32.DWORD, h: win32.HANDLE, ReparseTag: win32.DWORD) -> (type: File_Type, mode: int) { - // NOTE(Jeroen): We don't translate mode flags for Linux when given to `chmod`. - // Let's not do so for Windows for `chmod` or `read_directory_iterator` either. - // They're *not* portable between Windows and non-Windows platforms. - // - // It also leads to information loss as flags like Archive, Hidden and System have no equivalent there. - // We can of course parse them so we can set the `.Symlink` and `.Directory` type, but we shouldn't pretend - // that 0o644 is meaningful when returned as a mode. - // `C:\bootmgr` as an example has attributes read only, hidden, system, archive. In no way is it sensible to replace that with 0o444. - mode = int(file_attributes) + if file_attributes & win32.FILE_ATTRIBUTE_READONLY != 0 { + mode |= 0o444 + } else { + mode |= 0o666 + } is_sym := false if file_attributes & win32.FILE_ATTRIBUTE_REPARSE_POINT == 0 { @@ -233,6 +229,7 @@ _file_type_mode_from_file_attributes :: proc(file_attributes: win32.DWORD, h: wi type = .Symlink } else if file_attributes & win32.FILE_ATTRIBUTE_DIRECTORY != 0 { type = .Directory + mode |= 0o111 } else if h != nil { type = file_type(h) } From 0a12c464abcc8e5bf2cc47204bd2fe74e461d443 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 13 May 2025 08:58:02 +0100 Subject: [PATCH 066/120] Change Odin's RTTI section name to `.odinti` --- src/llvm_backend_type.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llvm_backend_type.cpp b/src/llvm_backend_type.cpp index 2aed4cbf7..4e514c3d1 100644 --- a/src/llvm_backend_type.cpp +++ b/src/llvm_backend_type.cpp @@ -1,7 +1,7 @@ gb_internal void lb_set_odin_rtti_section(LLVMValueRef value) { if (build_context.metrics.os != TargetOs_darwin) { - LLVMSetSection(value, ".odin-rtti"); + LLVMSetSection(value, ".odinti"); } } From ed56a7ca102339d2b711ec5ca9529a02bd621a7b Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Tue, 13 May 2025 18:09:30 +0200 Subject: [PATCH 067/120] Parse odin version date out of HEAD commit if available --- build.bat | 44 +++++++++++++++++++------------------------- build_odin.sh | 8 ++++++-- misc/get-date.c | 2 +- src/bug_report.cpp | 8 +++++++- 4 files changed, 33 insertions(+), 29 deletions(-) diff --git a/build.bat b/build.bat index ae733ff2a..b1ff9b173 100644 --- a/build.bat +++ b/build.bat @@ -19,16 +19,27 @@ if "%VSCMD_ARG_TGT_ARCH%" neq "x64" ( ) ) +where /Q git.exe || goto skip_git_hash +if not exist .git\ goto skip_git_hash +for /f "tokens=1,2" %%i IN ('git show "--pretty=%%cd %%h" "--date=format:%%Y-%%m-%%d" --no-patch --no-notes HEAD') do ( + set CURR_DATE_TIME=%%i + set GIT_SHA=%%j +) +if %ERRORLEVEL% equ 0 ( + goto have_git_hash_and_date +) +:skip_git_hash pushd misc cl /nologo get-date.c -popd - -for /f %%i in ('misc\get-date') do ( +for /f %%i in ('get-date') do ( set CURR_DATE_TIME=%%i + rem Don't set GIT_SHA ) +popd +:have_git_hash_and_date set curr_year=%CURR_DATE_TIME:~0,4% -set curr_month=%CURR_DATE_TIME:~4,2% -set curr_day=%CURR_DATE_TIME:~6,2% +set curr_month=%CURR_DATE_TIME:~5,2% +set curr_day=%CURR_DATE_TIME:~8,2% :: Make sure this is a decent name and not generic set exe_name=odin.exe @@ -61,31 +72,14 @@ if %release_mode% equ 0 ( set V4=0 set odin_version_full="%V1%.%V2%.%V3%.%V4%" set odin_version_raw="dev-%V1%-%V2%" - set compiler_flags= -nologo -Oi -TP -fp:precise -Gm- -MP -FC -EHsc- -GR- -GF rem Parse source code as utf-8 even on shift-jis and other codepages rem See https://learn.microsoft.com/en-us/cpp/build/reference/utf-8-set-source-and-executable-character-sets-to-utf-8?view=msvc-170 set compiler_flags= %compiler_flags% /utf-8 -set compiler_defines= -DODIN_VERSION_RAW=\"%odin_version_raw%\" +set compiler_defines= -DODIN_VERSION_RAW=\"%odin_version_raw%\" -DGIT_SHA=\"%GIT_SHA%\" rem fileversion is defined as {Major,Minor,Build,Private: u16} so a bit limited -set rc_flags=-nologo ^ --DV1=%V1% -DV2=%V2% -DV3=%V3% -DV4=%V4% ^ --DVF=%odin_version_full% -DNIGHTLY=%nightly% - -where /Q git.exe || goto skip_git_hash -if not exist .git\ goto skip_git_hash -for /f "tokens=1,2" %%i IN ('git show "--pretty=%%cd %%h" "--date=format:%%Y-%%m" --no-patch --no-notes HEAD') do ( - set odin_version_raw=dev-%%i - set GIT_SHA=%%j -) -if %ERRORLEVEL% equ 0 ( - set compiler_defines=%compiler_defines% -DGIT_SHA=\"%GIT_SHA%\" - set rc_flags=%rc_flags% -DGIT_SHA=%GIT_SHA% -DVP=%odin_version_raw%:%GIT_SHA% -) else ( - set rc_flags=%rc_flags% -DVP=%odin_version_raw% -) -:skip_git_hash +set rc_flags="-DGIT_SHA=%GIT_SHA% -DVP=dev-%V1%-%V2%:%GIT_SHA% nologo -DV1=%V1% -DV2=%V2% -DV3=%V3% -DV4=%V4% -DVF=%odin_version_full% -DNIGHTLY=%nightly%" if %nightly% equ 1 set compiler_defines=%compiler_defines% -DNIGHTLY @@ -153,4 +147,4 @@ if %release_mode% EQU 0 echo: & echo Debug compiler built. Note: run "build.bat del *.obj > NUL 2> NUL -:end_of_build +:end_of_build \ No newline at end of file diff --git a/build_odin.sh b/build_odin.sh index 19bb82a11..7bbe82ba1 100755 --- a/build_odin.sh +++ b/build_odin.sh @@ -6,7 +6,6 @@ set -eu : ${LDFLAGS=} : ${LLVM_CONFIG=} -CPPFLAGS="$CPPFLAGS -DODIN_VERSION_RAW=\"dev-$(date +"%Y-%m")\"" CXXFLAGS="$CXXFLAGS -std=c++14" DISABLED_WARNINGS="-Wno-switch -Wno-macro-redefined -Wno-unused-value" LDFLAGS="$LDFLAGS -pthread -lm" @@ -15,8 +14,12 @@ OS_NAME="$(uname -s)" if [ -d ".git" ] && [ -n "$(command -v git)" ]; then GIT_SHA=$(git show --pretty='%h' --no-patch --no-notes HEAD) + GIT_DATE=$(git show "--pretty=%cd" "--date=format:%Y-%m" --no-patch --no-notes HEAD) CPPFLAGS="$CPPFLAGS -DGIT_SHA=\"$GIT_SHA\"" +else + GIT_DATE=$(date +"%Y-%m") fi +CPPFLAGS="$CPPFLAGS -DODIN_VERSION_RAW=\"dev-$GIT_DATE\"" error() { printf "ERROR: %s\n" "$1" @@ -158,7 +161,8 @@ build_odin() { } run_demo() { - ./odin run examples/demo -vet -strict-style -- Hellope World + #./odin run examples/demo -vet -strict-style -- Hellope World + ./odin report } if [ $# -eq 0 ]; then diff --git a/misc/get-date.c b/misc/get-date.c index bf5b32738..b3eb1be78 100644 --- a/misc/get-date.c +++ b/misc/get-date.c @@ -9,5 +9,5 @@ int main(int arg_count, char const **arg_ptr) { time_t t = time(NULL); struct tm* now = localtime(&t); - printf("%04d%02d%02d", now->tm_year + 1900, now->tm_mon + 1, now->tm_mday); + printf("%04d-%02d-%02d", now->tm_year + 1900, now->tm_mon + 1, now->tm_mday); } \ No newline at end of file diff --git a/src/bug_report.cpp b/src/bug_report.cpp index 0a617fe39..32210c23e 100644 --- a/src/bug_report.cpp +++ b/src/bug_report.cpp @@ -667,8 +667,14 @@ gb_internal void print_bug_report_help() { gb_printf("-nightly"); #endif + String version = {}; + #ifdef GIT_SHA - gb_printf(":%s", GIT_SHA); + version.text = cast(u8 *)GIT_SHA; + version.len = gb_strlen(GIT_SHA); + if (version != "") { + gb_printf(":%.*s", LIT(version)); + } #endif gb_printf("\n"); From 25c935c305f373a1c539a235734d25759143a1c2 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Tue, 13 May 2025 18:46:55 +0200 Subject: [PATCH 068/120] Re-enable demo on *nix --- build_odin.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/build_odin.sh b/build_odin.sh index 7bbe82ba1..0d7e8a26e 100755 --- a/build_odin.sh +++ b/build_odin.sh @@ -161,8 +161,7 @@ build_odin() { } run_demo() { - #./odin run examples/demo -vet -strict-style -- Hellope World - ./odin report + ./odin run examples/demo -vet -strict-style -- Hellope World } if [ $# -eq 0 ]; then From 82729d7e2723cdf00b4e22c633f5865fbdddac87 Mon Sep 17 00:00:00 2001 From: A1029384756 Date: Tue, 13 May 2025 15:40:40 -0400 Subject: [PATCH 069/120] [vendor:SDL/ttf] - GPUAtlasDrawSequence multipointer from pointer --- vendor/sdl3/ttf/sdl3_ttf.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/sdl3/ttf/sdl3_ttf.odin b/vendor/sdl3/ttf/sdl3_ttf.odin index c934ef408..08b7a4e1f 100644 --- a/vendor/sdl3/ttf/sdl3_ttf.odin +++ b/vendor/sdl3/ttf/sdl3_ttf.odin @@ -96,7 +96,7 @@ ImageType :: enum c.int { GPUAtlasDrawSequence :: struct { atlas_texture: ^SDL.GPUTexture, - xy, uv: ^SDL.FPoint, + xy, uv: [^]SDL.FPoint, num_vertices: c.int, indices: ^c.int, num_indices: c.int, From 5379c8c1ac1c2e839382e228944b11abdaffcdc7 Mon Sep 17 00:00:00 2001 From: A1029384756 Date: Tue, 13 May 2025 15:44:20 -0400 Subject: [PATCH 070/120] [vendor:sdl3/ttf] - changed indices to multipointer --- vendor/sdl3/ttf/sdl3_ttf.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/sdl3/ttf/sdl3_ttf.odin b/vendor/sdl3/ttf/sdl3_ttf.odin index 08b7a4e1f..d3b8d7508 100644 --- a/vendor/sdl3/ttf/sdl3_ttf.odin +++ b/vendor/sdl3/ttf/sdl3_ttf.odin @@ -98,7 +98,7 @@ GPUAtlasDrawSequence :: struct { atlas_texture: ^SDL.GPUTexture, xy, uv: [^]SDL.FPoint, num_vertices: c.int, - indices: ^c.int, + indices: [^]c.int, num_indices: c.int, image_type: ImageType, next: ^GPUAtlasDrawSequence, From 10a63ac49842a11793bd121e5443945eb427a4fc Mon Sep 17 00:00:00 2001 From: deadwanderer Date: Tue, 13 May 2025 23:45:58 -0400 Subject: [PATCH 071/120] Add more D3D12 FEATURE_DATA_OPTIONs --- vendor/directx/d3d12/d3d12.odin | 78 +++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/vendor/directx/d3d12/d3d12.odin b/vendor/directx/d3d12/d3d12.odin index a533ab7ae..4ee1dcfb3 100644 --- a/vendor/directx/d3d12/d3d12.odin +++ b/vendor/directx/d3d12/d3d12.odin @@ -837,6 +837,16 @@ FEATURE :: enum i32 { OPTIONS8 = 36, OPTIONS9 = 37, WAVE_MMA = 38, + OPTIONS10 = 39, + OPTIONS11 = 40, + OPTIONS12 = 41, + OPTIONS13 = 42, + OPTIONS14 = 43, + OPTIONS15 = 44, + OPTIONS16 = 45, + OPTIONS17 = 46, + OPTIONS18 = 47, + OPTIONS19 = 48, } SHADER_MIN_PRECISION_SUPPORT :: enum i32 { @@ -1195,6 +1205,74 @@ FEATURE_DATA_OPTIONS9 :: struct { WaveMMATier: WAVE_MMA_TIER, } +FEATURE_DATA_OPTIONS10 :: struct { + VariableRateShadingSumCombinerSupported: BOOL, + MeshShaderPerPrimitiveShadingRateSupported: BOOL, +} + +FEATURE_DATA_OPTIONS11 :: struct { + AtomicInt64OnDescriptorHeapResourceSupported: BOOL, +} + +TRI_STATE :: enum i32 { + UNKNOWN = -1, + FALSE = 0, + TRUE = 1 +} + +FEATURE_DATA_OPTIONS12 :: struct { + MSPrimitivesPipelineStatisticIncludesCulledPrimitives: TRI_STATE, + EnhancedBarriersSupported: BOOL, + RelaxedFormatCastingSupported: BOOL, +} + +FEATURE_DATA_OPTIONS13 :: struct { + UnrestrictedBufferTextureCopyPitchSupported: BOOL, + UnrestrictedVertexElementAlignmentSupported: BOOL, + InvertedViewportHeightFlipsYSupported: BOOL, + InvertedViewportDepthFlipsZSupported: BOOL, + TextureCopyBetweenDimensionsSupported: BOOL, + AlphaBlendFactorSupported: BOOL, +} + +FEATURE_DATA_OPTIONS14 :: struct { + AdvancedTextureOpsSupported: BOOL, + WriteableMSAATexturesSupported: BOOL, + IndependentFrontAndBackStencilRefMaskSupported: BOOL, +} + +FEATURE_DATA_OPTIONS15 :: struct { + TriangleFanSupported: BOOL, + DynamicIndexBufferStripCutSupported: BOOL, +} + +FEATURE_DATA_OPTIONS16 :: struct { + DynamicDepthBiasSupported: BOOL, + GPUUploadHeapSupported: BOOL, +} + +FEATURE_DATA_OPTIONS17 :: struct { + NonNormalizedCoordinateSamplersSupported: BOOL, + ManualWriteTrackingResourceSupported: BOOL, +} + +FEATURE_DATA_OPTIONS18 :: struct { + RenderPassesValid: BOOL, +} + +FEATURE_DATA_OPTIONS19 :: struct { + MismatchingOutputDimensionsSupported: BOOL, + SupportedSampleCountsWithNoOutputs: u32, + PointSamplingAddressesNeverRoundUp: BOOL, + RasterizerDesc2Supported: BOOL, + NarrowQuadrilateralLinesSupported: BOOL, + AnisoFilterWithPointMipSupported: BOOL, + MaxSamplerDescriptorHeapSize: u32, + MaxSamplerDescriptorHeapSizeWithStaticSamplers: u32, + MaxViewDescriptorHeapSize: u32, + ComputeOnlyCustomHeapSupported: BOOL, +} + WAVE_MMA_INPUT_DATATYPE :: enum i32 { INVALID = 0, BYTE = 1, From 30434552a7e4aaa73d64ac04a9402a407fd79f28 Mon Sep 17 00:00:00 2001 From: deadwanderer Date: Wed, 14 May 2025 07:55:23 -0400 Subject: [PATCH 072/120] Adjust whitespace errors --- vendor/directx/d3d12/d3d12.odin | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/vendor/directx/d3d12/d3d12.odin b/vendor/directx/d3d12/d3d12.odin index 4ee1dcfb3..52ee56a98 100644 --- a/vendor/directx/d3d12/d3d12.odin +++ b/vendor/directx/d3d12/d3d12.odin @@ -1205,28 +1205,28 @@ FEATURE_DATA_OPTIONS9 :: struct { WaveMMATier: WAVE_MMA_TIER, } -FEATURE_DATA_OPTIONS10 :: struct { +FEATURE_DATA_OPTIONS10 :: struct { VariableRateShadingSumCombinerSupported: BOOL, MeshShaderPerPrimitiveShadingRateSupported: BOOL, } -FEATURE_DATA_OPTIONS11 :: struct { +FEATURE_DATA_OPTIONS11 :: struct { AtomicInt64OnDescriptorHeapResourceSupported: BOOL, } -TRI_STATE :: enum i32 { - UNKNOWN = -1, - FALSE = 0, - TRUE = 1 +TRI_STATE :: enum i32 { + UNKNOWN = -1, + FALSE = 0, + TRUE = 1 } -FEATURE_DATA_OPTIONS12 :: struct { +FEATURE_DATA_OPTIONS12 :: struct { MSPrimitivesPipelineStatisticIncludesCulledPrimitives: TRI_STATE, EnhancedBarriersSupported: BOOL, RelaxedFormatCastingSupported: BOOL, } -FEATURE_DATA_OPTIONS13 :: struct { +FEATURE_DATA_OPTIONS13 :: struct { UnrestrictedBufferTextureCopyPitchSupported: BOOL, UnrestrictedVertexElementAlignmentSupported: BOOL, InvertedViewportHeightFlipsYSupported: BOOL, @@ -1235,32 +1235,32 @@ FEATURE_DATA_OPTIONS13 :: struct { AlphaBlendFactorSupported: BOOL, } -FEATURE_DATA_OPTIONS14 :: struct { +FEATURE_DATA_OPTIONS14 :: struct { AdvancedTextureOpsSupported: BOOL, WriteableMSAATexturesSupported: BOOL, IndependentFrontAndBackStencilRefMaskSupported: BOOL, } -FEATURE_DATA_OPTIONS15 :: struct { +FEATURE_DATA_OPTIONS15 :: struct { TriangleFanSupported: BOOL, DynamicIndexBufferStripCutSupported: BOOL, } -FEATURE_DATA_OPTIONS16 :: struct { +FEATURE_DATA_OPTIONS16 :: struct { DynamicDepthBiasSupported: BOOL, GPUUploadHeapSupported: BOOL, } -FEATURE_DATA_OPTIONS17 :: struct { +FEATURE_DATA_OPTIONS17 :: struct { NonNormalizedCoordinateSamplersSupported: BOOL, ManualWriteTrackingResourceSupported: BOOL, } -FEATURE_DATA_OPTIONS18 :: struct { +FEATURE_DATA_OPTIONS18 :: struct { RenderPassesValid: BOOL, } -FEATURE_DATA_OPTIONS19 :: struct { +FEATURE_DATA_OPTIONS19 :: struct { MismatchingOutputDimensionsSupported: BOOL, SupportedSampleCountsWithNoOutputs: u32, PointSamplingAddressesNeverRoundUp: BOOL, From 78f09929187d176b15aea89ff2e51cce9347f586 Mon Sep 17 00:00:00 2001 From: deadwanderer Date: Wed, 14 May 2025 08:53:53 -0400 Subject: [PATCH 073/120] Fix bad whitespacing --- vendor/directx/d3d12/d3d12.odin | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/vendor/directx/d3d12/d3d12.odin b/vendor/directx/d3d12/d3d12.odin index 52ee56a98..083fa47ba 100644 --- a/vendor/directx/d3d12/d3d12.odin +++ b/vendor/directx/d3d12/d3d12.odin @@ -837,16 +837,16 @@ FEATURE :: enum i32 { OPTIONS8 = 36, OPTIONS9 = 37, WAVE_MMA = 38, - OPTIONS10 = 39, - OPTIONS11 = 40, - OPTIONS12 = 41, - OPTIONS13 = 42, - OPTIONS14 = 43, - OPTIONS15 = 44, - OPTIONS16 = 45, - OPTIONS17 = 46, - OPTIONS18 = 47, - OPTIONS19 = 48, + OPTIONS10 = 39, + OPTIONS11 = 40, + OPTIONS12 = 41, + OPTIONS13 = 42, + OPTIONS14 = 43, + OPTIONS15 = 44, + OPTIONS16 = 45, + OPTIONS17 = 46, + OPTIONS18 = 47, + OPTIONS19 = 48, } SHADER_MIN_PRECISION_SUPPORT :: enum i32 { From 30b67507787aaf8d3db5a2a1b216b01b30ccf091 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 14 May 2025 15:14:02 +0100 Subject: [PATCH 074/120] Add missing `,` --- vendor/directx/d3d12/d3d12.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/directx/d3d12/d3d12.odin b/vendor/directx/d3d12/d3d12.odin index 083fa47ba..eef93d13c 100644 --- a/vendor/directx/d3d12/d3d12.odin +++ b/vendor/directx/d3d12/d3d12.odin @@ -1217,7 +1217,7 @@ FEATURE_DATA_OPTIONS11 :: struct { TRI_STATE :: enum i32 { UNKNOWN = -1, FALSE = 0, - TRUE = 1 + TRUE = 1, } FEATURE_DATA_OPTIONS12 :: struct { From ea806f1d5e1d450e9c0b98a7a9d1f92afb7957ef Mon Sep 17 00:00:00 2001 From: 0xrsp <95966883+0xrsp@users.noreply.github.com> Date: Thu, 15 May 2025 01:00:40 +0930 Subject: [PATCH 075/120] new compiler intrinsics type_integer_to_unsigned,type_integer_to_signed --- base/intrinsics/intrinsics.odin | 3 + src/check_builtin.cpp | 84 +++++++++++++++++++ src/checker_builtin_procs.hpp | 6 ++ .../internal/test_intrinsics_integer_to.odin | 34 ++++++++ 4 files changed, 127 insertions(+) create mode 100644 tests/internal/test_intrinsics_integer_to.odin diff --git a/base/intrinsics/intrinsics.odin b/base/intrinsics/intrinsics.odin index 0e2746a3f..46e39c8d1 100644 --- a/base/intrinsics/intrinsics.odin +++ b/base/intrinsics/intrinsics.odin @@ -221,6 +221,9 @@ type_map_cell_info :: proc($T: typeid) -> ^runtime.Map_Cell_Info --- type_convert_variants_to_pointers :: proc($T: typeid) -> typeid where type_is_union(T) --- type_merge :: proc($U, $V: typeid) -> typeid where type_is_union(U), type_is_union(V) --- +type_integer_to_unsigned :: proc($T: typeid) -> type where type_is_integer(T), !type_is_unsigned(T) --- +type_integer_to_signed :: proc($T: typeid) -> type where type_is_integer(T), type_is_unsigned(T) --- + type_has_shared_fields :: proc($U, $V: typeid) -> bool where type_is_struct(U), type_is_struct(V) --- constant_utf16_cstring :: proc($literal: string) -> [^]u16 --- diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index 8efaf6b26..147d4ba3a 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -5877,6 +5877,90 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As } operand->mode = Addressing_Type; break; + case BuiltinProc_type_integer_to_unsigned: + if (operand->mode != Addressing_Type) { + error(operand->expr, "Expected a type for '%.*s'", LIT(builtin_name)); + return false; + } + + if (is_type_polymorphic(operand->type)) { + gbString t = type_to_string(operand->type); + error(operand->expr, "Expected a non-polymorphic type for '%.*s', got %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + + { + Type *bt = base_type(operand->type); + + if (bt->kind != Type_Basic || + (bt->Basic.flags & BasicFlag_Unsigned) != 0 || + (bt->Basic.flags & BasicFlag_Integer) == 0) { + gbString t = type_to_string(operand->type); + error(operand->expr, "Expected a signed integer type for '%.*s', got %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + + if ((bt->Basic.flags & BasicFlag_Untyped) != 0) { + gbString t = type_to_string(operand->type); + // NOTE: What should this error message be? + error(operand->expr, "Expected a typed integer for '%.*s', got %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + + Type *u_type = &basic_types[bt->Basic.kind + 1]; + + operand->type = u_type; + } + break; + case BuiltinProc_type_integer_to_signed: + if (operand->mode != Addressing_Type) { + error(operand->expr, "Expected a type for '%.*s'", LIT(builtin_name)); + return false; + } + + if (is_type_polymorphic(operand->type)) { + gbString t = type_to_string(operand->type); + error(operand->expr, "Expected a non-polymorphic type for '%.*s', got %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + + { + Type *bt = base_type(operand->type); + + if (bt->kind != Type_Basic || + (bt->Basic.flags & BasicFlag_Unsigned) == 0 || + (bt->Basic.flags & BasicFlag_Integer) == 0) { + gbString t = type_to_string(operand->type); + error(operand->expr, "Expected an unsigned integer type for '%.*s', got %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + + if ((bt->Basic.flags & BasicFlag_Untyped) != 0) { + gbString t = type_to_string(operand->type); + // NOTE: What should this error message be? + error(operand->expr, "Expected a typed integer for '%.*s', got %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + + if (bt->Basic.kind == Basic_uintptr) { + gbString t = type_to_string(operand->type); + // TODO: Robust error message for uintptr does not have a signed integer representation + error(operand->expr, "Expected a signed integer type for '%.*s', got %s", LIT(builtin_name), t); + gb_string_free(t); + return false; + } + + Type *u_type = &basic_types[bt->Basic.kind - 1]; + + operand->type = u_type; + } + break; case BuiltinProc_type_merge: { operand->mode = Addressing_Type; diff --git a/src/checker_builtin_procs.hpp b/src/checker_builtin_procs.hpp index c4e487560..f3b55daa4 100644 --- a/src/checker_builtin_procs.hpp +++ b/src/checker_builtin_procs.hpp @@ -235,6 +235,9 @@ BuiltinProc__type_begin, BuiltinProc_type_convert_variants_to_pointers, BuiltinProc_type_merge, + BuiltinProc_type_integer_to_unsigned, + BuiltinProc_type_integer_to_signed, + BuiltinProc__type_simple_boolean_begin, BuiltinProc_type_is_boolean, BuiltinProc_type_is_integer, @@ -585,6 +588,9 @@ gb_global BuiltinProc builtin_procs[BuiltinProc_COUNT] = { {STR_LIT("type_convert_variants_to_pointers"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("type_merge"), 2, false, Expr_Expr, BuiltinProcPkg_intrinsics}, + {STR_LIT("type_integer_to_unsigned"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, + {STR_LIT("type_integer_to_signed"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, + {STR_LIT(""), 0, false, Expr_Stmt, BuiltinProcPkg_intrinsics}, {STR_LIT("type_is_boolean"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, {STR_LIT("type_is_integer"), 1, false, Expr_Expr, BuiltinProcPkg_intrinsics}, diff --git a/tests/internal/test_intrinsics_integer_to.odin b/tests/internal/test_intrinsics_integer_to.odin new file mode 100644 index 000000000..108318c9a --- /dev/null +++ b/tests/internal/test_intrinsics_integer_to.odin @@ -0,0 +1,34 @@ +package test_internal + +import "base:intrinsics" +import "core:testing" + +/* +example_usage :: proc(#any_int x: int) -> intrinsics.type_integer_to_unsigned(type_of(x)) { + T :: intrinsics.type_integer_to_unsigned(type_of(x)) + return 1< Date: Thu, 15 May 2025 01:12:06 +0930 Subject: [PATCH 076/120] add: type_integer_to_* error messages --- src/check_builtin.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index 147d4ba3a..f384cb7e1 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -5904,8 +5904,7 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As if ((bt->Basic.flags & BasicFlag_Untyped) != 0) { gbString t = type_to_string(operand->type); - // NOTE: What should this error message be? - error(operand->expr, "Expected a typed integer for '%.*s', got %s", LIT(builtin_name), t); + error(operand->expr, "Expected a non-untyped integer type for '%.*s', got %s", LIT(builtin_name), t); gb_string_free(t); return false; } @@ -5942,16 +5941,14 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As if ((bt->Basic.flags & BasicFlag_Untyped) != 0) { gbString t = type_to_string(operand->type); - // NOTE: What should this error message be? - error(operand->expr, "Expected a typed integer for '%.*s', got %s", LIT(builtin_name), t); + error(operand->expr, "Expected a non-untyped integer type for '%.*s', got %s", LIT(builtin_name), t); gb_string_free(t); return false; } if (bt->Basic.kind == Basic_uintptr) { gbString t = type_to_string(operand->type); - // TODO: Robust error message for uintptr does not have a signed integer representation - error(operand->expr, "Expected a signed integer type for '%.*s', got %s", LIT(builtin_name), t); + error(operand->expr, "Type %s does not have a signed integer mapping for '%.*s'", t, LIT(builtin_name)); gb_string_free(t); return false; } From 2d00f8d69d62344e6ff419998899348244e66ed2 Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Thu, 15 May 2025 19:20:04 +0200 Subject: [PATCH 077/120] fix compat with earlier llvm versions --- src/llvm_abi.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llvm_abi.cpp b/src/llvm_abi.cpp index baad3f873..af08722c3 100644 --- a/src/llvm_abi.cpp +++ b/src/llvm_abi.cpp @@ -1246,7 +1246,7 @@ namespace lbAbiArm64 { cast_type = LLVMIntTypeInContext(c, cast(unsigned)(size*8)); } else { LLVMTypeRef llvm_i64 = LLVMIntTypeInContext(c, 64); - cast_type = LLVMArrayType2(llvm_i64, 2); + cast_type = llvm_array_type(llvm_i64, 2); } return lb_arg_type_direct(return_type, cast_type, nullptr, nullptr); } From 2f636886a565c113840d8e0b81454a24c6f7b9a0 Mon Sep 17 00:00:00 2001 From: tf2spi Date: Thu, 15 May 2025 16:11:06 -0400 Subject: [PATCH 078/120] Add debug info for labels (#4385) * Emit label debug info w/o location * Insert debug label call * Slight refactor for later fix * Improve debug labels for block statements * Improve debug info with for loops * Generate label lbBlocks w/ debug * Lightly refactor lb_add_debug_label * Revise comments, add null check assertion * Use LLVM-C API for debug labels * Prefer C DILabel API for POSIX, fallback to CPP * Use version check for LLVM-C DILabel --- src/llvm_backend_debug.cpp | 56 +++++++++++++++++++++++++++++ src/llvm_backend_stmt.cpp | 72 +++++++++++++++++++++++++++++++++++--- 2 files changed, 123 insertions(+), 5 deletions(-) diff --git a/src/llvm_backend_debug.cpp b/src/llvm_backend_debug.cpp index 53c007d8d..8339a021b 100644 --- a/src/llvm_backend_debug.cpp +++ b/src/llvm_backend_debug.cpp @@ -1295,3 +1295,59 @@ gb_internal void add_debug_info_for_global_constant_from_entity(lbGenerator *gen } } } + +gb_internal void lb_add_debug_label(lbProcedure *p, Ast *label, lbBlock *target) { +// NOTE(tf2spi): LLVM-C DILabel API used only existed for major versions 20+ +#if LLVM_VERSION_MAJOR >= 20 + if (p == nullptr || p->debug_info == nullptr) { + return; + } + if (target == nullptr || label == nullptr || label->kind != Ast_Label) { + return; + } + Token label_token = label->Label.token; + if (is_blank_ident(label_token.string)) { + return; + } + lbModule *m = p->module; + if (m == nullptr) { + return; + } + + AstFile *file = label->file(); + LLVMMetadataRef llvm_file = lb_get_llvm_metadata(m, file); + if (llvm_file == nullptr) { + debugf("llvm file not found for label\n"); + return; + } + LLVMMetadataRef llvm_scope = p->debug_info; + if(llvm_scope == nullptr) { + debugf("llvm scope not found for label\n"); + return; + } + LLVMMetadataRef llvm_debug_loc = lb_debug_location_from_token_pos(p, label_token.pos); + LLVMBasicBlockRef llvm_block = target->block; + if (llvm_block == nullptr || llvm_debug_loc == nullptr) { + return; + } + LLVMMetadataRef llvm_label = LLVMDIBuilderCreateLabel( + m->debug_builder, + llvm_scope, + (const char *)label_token.string.text, + (size_t)label_token.string.len, + llvm_file, + label_token.pos.line, + + // NOTE(tf2spi): Defaults to false in LLVM API, but I'd rather not take chances + // Always preserve the label no matter what when debugging + true + ); + GB_ASSERT(llvm_label != nullptr); + (void)LLVMDIBuilderInsertLabelAtEnd( + m->debug_builder, + llvm_label, + llvm_debug_loc, + llvm_block + ); +#endif +} diff --git a/src/llvm_backend_stmt.cpp b/src/llvm_backend_stmt.cpp index 89737a454..44a78b036 100644 --- a/src/llvm_backend_stmt.cpp +++ b/src/llvm_backend_stmt.cpp @@ -136,7 +136,6 @@ gb_internal lbBranchBlocks lb_lookup_branch_blocks(lbProcedure *p, Ast *ident) { return empty; } - gb_internal lbTargetList *lb_push_target_list(lbProcedure *p, Ast *label, lbBlock *break_, lbBlock *continue_, lbBlock *fallthrough_) { lbTargetList *tl = gb_alloc_item(permanent_allocator(), lbTargetList); tl->prev = p->target_list; @@ -688,6 +687,18 @@ gb_internal void lb_build_range_interval(lbProcedure *p, AstBinaryExpr *node, lbBlock *body = lb_create_block(p, "for.interval.body"); lbBlock *done = lb_create_block(p, "for.interval.done"); + // TODO(tf2spi): This is inlined in more than several places. + // Putting this in a function might be preferred. + // LLVMSetCurrentDebugLocation2 has side effects, + // so I didn't want to hide that before it got reviewed. + if (rs->label != nullptr && p->debug_info != nullptr) { + lbBlock *label = lb_create_block(p, "for.interval.label"); + lb_emit_jump(p, label); + lb_start_block(p, label); + + LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_ast(p, rs->label)); + lb_add_debug_label(p, rs->label, label); + } lb_emit_jump(p, loop); lb_start_block(p, loop); @@ -893,6 +904,14 @@ gb_internal void lb_build_range_stmt_struct_soa(lbProcedure *p, AstRangeStmt *rs lbAddr index = lb_add_local_generated(p, t_int, false); + if (rs->label != nullptr && p->debug_info != nullptr) { + lbBlock *label = lb_create_block(p, "for.soa.label"); + lb_emit_jump(p, label); + lb_start_block(p, label); + + LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_ast(p, rs->label)); + lb_add_debug_label(p, rs->label, label); + } if (!is_reverse) { /* for x, i in array { @@ -970,7 +989,6 @@ gb_internal void lb_build_range_stmt_struct_soa(lbProcedure *p, AstRangeStmt *rs lb_store_range_stmt_val(p, val1, lb_addr_load(p, index)); } - lb_push_target_list(p, rs->label, done, loop, nullptr); lb_build_stmt(p, rs->body); @@ -1029,6 +1047,15 @@ gb_internal void lb_build_range_stmt(lbProcedure *p, AstRangeStmt *rs, Scope *sc lbBlock *done = nullptr; bool is_map = false; + if (rs->label != nullptr && p->debug_info != nullptr) { + lbBlock *label = lb_create_block(p, "for.range.label"); + lb_emit_jump(p, label); + lb_start_block(p, label); + + LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_ast(p, rs->label)); + lb_add_debug_label(p, rs->label, label); + } + if (tav.mode == Addressing_Type) { lb_build_range_enum(p, type_deref(tav.type), val0_type, &val, &key, &loop, &done); } else { @@ -1530,6 +1557,14 @@ gb_internal bool lb_switch_stmt_can_be_trivial_jump_table(AstSwitchStmt *ss, boo gb_internal void lb_build_switch_stmt(lbProcedure *p, AstSwitchStmt *ss, Scope *scope) { lb_open_scope(p, scope); + if (ss->label != nullptr && p->debug_info != nullptr) { + lbBlock *label = lb_create_block(p, "switch.label"); + lb_emit_jump(p, label); + lb_start_block(p, label); + + LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_ast(p, ss->label)); + lb_add_debug_label(p, ss->label, label); + } if (ss->init != nullptr) { lb_build_stmt(p, ss->init); } @@ -1736,6 +1771,7 @@ gb_internal lbAddr lb_store_range_stmt_val(lbProcedure *p, Ast *stmt_val, lbValu gb_internal void lb_type_case_body(lbProcedure *p, Ast *label, Ast *clause, lbBlock *body, lbBlock *done) { ast_node(cc, CaseClause, clause); + // NOTE(tf2spi): Debug info for label not generated here on purpose lb_push_target_list(p, label, done, nullptr, nullptr); lb_build_stmt_list(p, cc->stmts); lb_close_scope(p, lbDeferExit_Default, body, clause); @@ -2307,6 +2343,14 @@ gb_internal void lb_build_if_stmt(lbProcedure *p, Ast *node) { else_ = lb_create_block(p, "if.else"); } if (is->label != nullptr) { + if (p->debug_info != nullptr) { + lbBlock *label = lb_create_block(p, "if.label"); + lb_emit_jump(p, label); + lb_start_block(p, label); + + LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_ast(p, is->label)); + lb_add_debug_label(p, is->label, label); + } lbTargetList *tl = lb_push_target_list(p, is->label, done, nullptr, nullptr); tl->is_block = true; } @@ -2399,12 +2443,19 @@ gb_internal void lb_build_for_stmt(lbProcedure *p, Ast *node) { lb_push_target_list(p, fs->label, done, post, nullptr); + if (fs->label != nullptr && p->debug_info != nullptr) { + lbBlock *label = lb_create_block(p, "for.label"); + lb_emit_jump(p, label); + lb_start_block(p, label); + + LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_ast(p, fs->label)); + lb_add_debug_label(p, fs->label, label); + } if (fs->init != nullptr) { - #if 1 lbBlock *init = lb_create_block(p, "for.init"); lb_emit_jump(p, init); lb_start_block(p, init); - #endif + lb_build_stmt(p, fs->init); } @@ -2420,7 +2471,6 @@ gb_internal void lb_build_for_stmt(lbProcedure *p, Ast *node) { lb_start_block(p, body); } - lb_build_stmt(p, fs->body); lb_pop_target_list(p); @@ -2694,9 +2744,21 @@ gb_internal void lb_build_stmt(lbProcedure *p, Ast *node) { case_ast_node(bs, BlockStmt, node); + lbBlock *body = nullptr; lbBlock *done = nullptr; if (bs->label != nullptr) { + if (p->debug_info != nullptr) { + lbBlock *label = lb_create_block(p, "block.label"); + lb_emit_jump(p, label); + lb_start_block(p, label); + + LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_ast(p, bs->label)); + lb_add_debug_label(p, bs->label, label); + } + body = lb_create_block(p, "block.body"); done = lb_create_block(p, "block.done"); + lb_emit_jump(p, body); + lb_start_block(p, body); lbTargetList *tl = lb_push_target_list(p, bs->label, done, nullptr, nullptr); tl->is_block = true; } From 53a9ecb57786147780e39ec2738d74fbab9d9399 Mon Sep 17 00:00:00 2001 From: Laytan Date: Fri, 16 May 2025 17:36:45 +0200 Subject: [PATCH 079/120] vendor/miniaudio: update to 0.11.22 --- vendor/miniaudio/common.odin | 4 +- vendor/miniaudio/data_conversion.odin | 4 +- vendor/miniaudio/decoding.odin | 4 +- vendor/miniaudio/device_io_procs.odin | 18 +- vendor/miniaudio/device_io_types.odin | 13 +- vendor/miniaudio/doc.odin | 92 +- vendor/miniaudio/engine.odin | 12 +- vendor/miniaudio/lib/miniaudio.lib | Bin 2882782 -> 2907722 bytes vendor/miniaudio/node_graph.odin | 32 +- vendor/miniaudio/resource_manager.odin | 3 +- vendor/miniaudio/src/miniaudio.h | 1821 +++++++++++++++++------- vendor/miniaudio/synchronization.odin | 5 + vendor/miniaudio/utilities.odin | 4 +- 13 files changed, 1462 insertions(+), 550 deletions(-) diff --git a/vendor/miniaudio/common.odin b/vendor/miniaudio/common.odin index d72c3f251..0263278bc 100644 --- a/vendor/miniaudio/common.odin +++ b/vendor/miniaudio/common.odin @@ -20,9 +20,9 @@ foreign import lib { LIB } BINDINGS_VERSION_MAJOR :: 0 BINDINGS_VERSION_MINOR :: 11 -BINDINGS_VERSION_REVISION :: 21 +BINDINGS_VERSION_REVISION :: 22 BINDINGS_VERSION :: [3]u32{BINDINGS_VERSION_MAJOR, BINDINGS_VERSION_MINOR, BINDINGS_VERSION_REVISION} -BINDINGS_VERSION_STRING :: "0.11.21" +BINDINGS_VERSION_STRING :: "0.11.22" @(init) version_check :: proc() { diff --git a/vendor/miniaudio/data_conversion.odin b/vendor/miniaudio/data_conversion.odin index c33f54707..d95607dd9 100644 --- a/vendor/miniaudio/data_conversion.odin +++ b/vendor/miniaudio/data_conversion.odin @@ -194,7 +194,7 @@ foreign lib { resampler_get_expected_output_frame_count :: proc(pResampler: ^resampler, inputFrameCount: u64, pOutputFrameCount: ^u64) -> result --- /* - Resets the resampler's timer and clears it's internal cache. + Resets the resampler's timer and clears its internal cache. */ resampler_reset :: proc(pResampler: ^resampler) -> result --- } @@ -421,7 +421,7 @@ foreign lib { /* Copies a channel map. - Both input and output channel map buffers must have a capacity of at at least `channels`. + Both input and output channel map buffers must have a capacity of at least `channels`. */ channel_map_copy :: proc(pOut: [^]channel, pIn: [^]channel, channels: u32) --- diff --git a/vendor/miniaudio/decoding.odin b/vendor/miniaudio/decoding.odin index f1fa279ac..e2f33b8e7 100644 --- a/vendor/miniaudio/decoding.odin +++ b/vendor/miniaudio/decoding.odin @@ -71,7 +71,7 @@ decoder :: struct { pInputCache: rawptr, /* In input format. Can be null if it's not needed. */ inputCacheCap: u64, /* The capacity of the input cache. */ inputCacheConsumed: u64, /* The number of frames that have been consumed in the cache. Used for determining the next valid frame. */ - inputCacheRemaining: u64, /* The number of valid frames remaining in the cahce. */ + inputCacheRemaining: u64, /* The number of valid frames remaining in the cache. */ allocationCallbacks: allocation_callbacks, data: struct #raw_union { vfs: struct { @@ -111,7 +111,7 @@ foreign lib { decoder_read_pcm_frames :: proc(pDecoder: ^decoder, pFramesOut: rawptr, frameCount: u64, pFramesRead: ^u64) -> result --- /* - Seeks to a PCM frame based on it's absolute index. + Seeks to a PCM frame based on its absolute index. This is not thread safe without your own synchronization. */ diff --git a/vendor/miniaudio/device_io_procs.odin b/vendor/miniaudio/device_io_procs.odin index 21ac1afd7..a14de807c 100644 --- a/vendor/miniaudio/device_io_procs.odin +++ b/vendor/miniaudio/device_io_procs.odin @@ -12,6 +12,8 @@ foreign lib { device_job_thread_uninit :: proc(pJobThread: ^device_job_thread, pAllocationCallbacks: ^allocation_callbacks) --- device_job_thread_post :: proc(pJobThread: ^device_job_thread, pJob: ^job) -> result --- device_job_thread_next :: proc(pJobThread: ^device_job_thread, pJob: ^job) -> result --- + + device_id_equal :: proc(pA: ^device_id, pB: ^device_id) -> b32 --- /* Initializes a `ma_context_config` object. @@ -370,6 +372,9 @@ foreign lib { This function will allocate memory internally for the device lists and return a pointer to them through the `ppPlaybackDeviceInfos` and `ppCaptureDeviceInfos` parameters. If you do not want to incur the overhead of these allocations consider using `ma_context_enumerate_devices()` which will instead use a callback. + Note that this only retrieves the ID and name/description of the device. The reason for only retrieving basic information is that it would otherwise require + opening the backend device in order to probe it for more detailed information which can be inefficient. Consider using `ma_context_get_device_info()` for this, + but don't call it from within the enumeration callback. Parameters ---------- @@ -411,7 +416,7 @@ foreign lib { See Also -------- - ma_context_get_devices() + ma_context_enumerate_devices() */ context_get_devices :: proc(pContext: ^context_type, ppPlaybackDeviceInfos: ^[^]device_info, pPlaybackDeviceCount: ^u32, ppCaptureDeviceInfos: ^[^]device_info, pCaptureDeviceCount: ^u32) -> result --- @@ -550,7 +555,7 @@ foreign lib { playback, capture, full-duplex or loopback. (Note that loopback mode is only supported on select backends.) Sending and receiving audio data to and from the device is done via a callback which is fired by miniaudio at periodic time intervals. - The frequency at which data is delivered to and from a device depends on the size of it's period. The size of the period can be defined in terms of PCM frames + The frequency at which data is delivered to and from a device depends on the size of its period. The size of the period can be defined in terms of PCM frames or milliseconds, whichever is more convenient. Generally speaking, the smaller the period, the lower the latency at the expense of higher CPU usage and increased risk of glitching due to the more frequent and granular data deliver intervals. The size of a period will depend on your requirements, but miniaudio's defaults should work fine for most scenarios. If you're building a game you should leave this fairly small, whereas if you're building a simple @@ -624,7 +629,7 @@ foreign lib { performanceProfile A hint to miniaudio as to the performance requirements of your program. Can be either `ma_performance_profile_low_latency` (default) or - `ma_performance_profile_conservative`. This mainly affects the size of default buffers and can usually be left at it's default value. + `ma_performance_profile_conservative`. This mainly affects the size of default buffers and can usually be left at its default value. noPreSilencedOutputBuffer When set to true, the contents of the output buffer passed into the data callback will be left undefined. When set to false (default), the contents of @@ -664,7 +669,7 @@ foreign lib { A pointer that will passed to callbacks in pBackendVTable. resampling.linear.lpfOrder - The linear resampler applies a low-pass filter as part of it's processing for anti-aliasing. This setting controls the order of the filter. The higher + The linear resampler applies a low-pass filter as part of its processing for anti-aliasing. This setting controls the order of the filter. The higher the value, the better the quality, in general. Setting this to 0 will disable low-pass filtering altogether. The maximum value is `MA_MAX_FILTER_ORDER`. The default value is `min(4, MA_MAX_FILTER_ORDER)`. @@ -741,6 +746,9 @@ foreign lib { pulse.pStreamNameCapture PulseAudio only. Sets the stream name for capture. + pulse.channelMap + PulseAudio only. Sets the channel map that is requested from PulseAudio. See MA_PA_CHANNEL_MAP_* constants. Defaults to MA_PA_CHANNEL_MAP_AIFF. + coreaudio.allowNominalSampleRateChange Core Audio only. Desktop only. When enabled, allows the sample rate of the device to be changed at the operating system level. This is disabled by default in order to prevent intrusive changes to the user's system. This is useful if you want to use a sample rate @@ -914,7 +922,7 @@ foreign lib { Remarks ------- - You only need to use this function if you want to configure the context differently to it's defaults. You should never use this function if you want to manage + You only need to use this function if you want to configure the context differently to its defaults. You should never use this function if you want to manage your own context. See the documentation for `ma_context_init()` for information on the different context configuration options. diff --git a/vendor/miniaudio/device_io_types.odin b/vendor/miniaudio/device_io_types.odin index b52a3f423..9d64602f8 100644 --- a/vendor/miniaudio/device_io_types.odin +++ b/vendor/miniaudio/device_io_types.odin @@ -427,6 +427,7 @@ device_config :: struct { pulse: struct { pStreamNamePlayback: cstring, pStreamNameCapture: cstring, + channelMap: i32, }, coreaudio: struct { allowNominalSampleRateChange: b32, /* Desktop only. When enabled, allows changing of the sample rate at the operating system level. */ @@ -443,6 +444,7 @@ device_config :: struct { allowedCapturePolicy: aaudio_allowed_capture_policy, noAutoStartAfterReroute: b32, enableCompatibilityWorkarounds: b32, + allowSetBufferCapacity: b32, }, } @@ -514,7 +516,7 @@ and on output returns detailed information about the device in `ma_device_info`. case when the device ID is NULL, in which case information about the default device needs to be retrieved. Once the context has been created and the device ID retrieved (if using anything other than the default device), the device can be created. -This is a little bit more complicated than initialization of the context due to it's more complicated configuration. When initializing a +This is a little bit more complicated than initialization of the context due to its more complicated configuration. When initializing a device, a duplex device may be requested. This means a separate data format needs to be specified for both playback and capture. On input, the data format is set to what the application wants. On output it's set to the native format which should match as closely as possible to the requested format. The conversion between the format requested by the application and the device's native format will be handled @@ -535,10 +537,10 @@ asynchronous reading and writing, `onDeviceStart()` and `onDeviceStop()` should The handling of data delivery between the application and the device is the most complicated part of the process. To make this a bit easier, some helper callbacks are available. If the backend uses a blocking read/write style of API, the `onDeviceRead()` and `onDeviceWrite()` callbacks can optionally be implemented. These are blocking and work just like reading and writing from a file. If the -backend uses a callback for data delivery, that callback must call `ma_device_handle_backend_data_callback()` from within it's callback. +backend uses a callback for data delivery, that callback must call `ma_device_handle_backend_data_callback()` from within its callback. This allows miniaudio to then process any necessary data conversion and then pass it to the miniaudio data callback. -If the backend requires absolute flexibility with it's data delivery, it can optionally implement the `onDeviceDataLoop()` callback +If the backend requires absolute flexibility with its data delivery, it can optionally implement the `onDeviceDataLoop()` callback which will allow it to implement the logic that will run on the audio thread. This is much more advanced and is completely optional. The audio thread should run data delivery logic in a loop while `ma_device_get_state() == ma_device_state_started` and no errors have been @@ -575,6 +577,9 @@ context_config :: struct { threadStackSize: c.size_t, pUserData: rawptr, allocationCallbacks: allocation_callbacks, + dsound: struct { + hWnd: handle, /* HWND. Optional window handle to pass into SetCooperativeLevel(). Will default to the foreground window, and if that fails, the desktop window. */ + }, alsa: struct { useVerboseDeviceEnumeration: b32, }, @@ -649,6 +654,7 @@ context_type :: struct { } when SUPPORT_WASAPI else struct {}), dsound: (struct { + hWnd: handle, /* Can be null. */ hDSoundDLL: handle, DirectSoundCreate: proc "system" (), DirectSoundEnumerateA: proc "system" (), @@ -1195,6 +1201,7 @@ device :: struct { aaudio: (struct { /*AAudioStream**/ pStreamPlayback: rawptr, /*AAudioStream**/ pStreamCapture: rawptr, + rerouteLock: mutex, usage: aaudio_usage, contentType: aaudio_content_type, inputPreset: aaudio_input_preset, diff --git a/vendor/miniaudio/doc.odin b/vendor/miniaudio/doc.odin index 33c613ae4..ff7924b89 100644 --- a/vendor/miniaudio/doc.odin +++ b/vendor/miniaudio/doc.odin @@ -295,7 +295,7 @@ avoids the same sound being loaded multiple times. The node graph is used for mixing and effect processing. The idea is that you connect a number of nodes into the graph by connecting each node's outputs to another node's inputs. Each node can -implement it's own effect. By chaining nodes together, advanced mixing and effect processing can +implement its own effect. By chaining nodes together, advanced mixing and effect processing can be achieved. The engine encapsulates both the resource manager and the node graph to create a simple, easy to @@ -400,7 +400,7 @@ the be started and/or stopped at a specific time. This can be done with the foll ``` The start/stop time needs to be specified based on the absolute timer which is controlled by the -engine. The current global time time in PCM frames can be retrieved with +engine. The current global time in PCM frames can be retrieved with `ma_engine_get_time_in_pcm_frames()`. The engine's global time can be changed with `ma_engine_set_time_in_pcm_frames()` for synchronization purposes if required. Note that scheduling a start time still requires an explicit call to `ma_sound_start()` before anything will play: @@ -432,11 +432,11 @@ Sounds and sound groups are nodes in the engine's node graph and can be plugged API. This makes it possible to connect sounds and sound groups to effect nodes to produce complex effect chains. -A sound can have it's volume changed with `ma_sound_set_volume()`. If you prefer decibel volume +A sound can have its volume changed with `ma_sound_set_volume()`. If you prefer decibel volume control you can use `ma_volume_db_to_linear()` to convert from decibel representation to linear. Panning and pitching is supported with `ma_sound_set_pan()` and `ma_sound_set_pitch()`. If you know -a sound will never have it's pitch changed with `ma_sound_set_pitch()` or via the doppler effect, +a sound will never have its pitch changed with `ma_sound_set_pitch()` or via the doppler effect, you can specify the `MA_SOUND_FLAG_NO_PITCH` flag when initializing the sound for an optimization. By default, sounds and sound groups have spatialization enabled. If you don't ever want to @@ -485,21 +485,12 @@ link the relevant frameworks but should compile cleanly out of the box with Xcod through the command line requires linking to `-lpthread` and `-lm`. Due to the way miniaudio links to frameworks at runtime, your application may not pass Apple's -notarization process. To fix this there are two options. The first is to use the -`MA_NO_RUNTIME_LINKING` option, like so: - - ```c - #ifdef __APPLE__ - #define MA_NO_RUNTIME_LINKING - #endif - #define MINIAUDIO_IMPLEMENTATION - #include "miniaudio.h" - ``` - -This will require linking with `-framework CoreFoundation -framework CoreAudio -framework AudioToolbox`. -If you get errors about AudioToolbox, try with `-framework AudioUnit` instead. You may get this when -using older versions of iOS. Alternatively, if you would rather keep using runtime linking you can -add the following to your entitlements.xcent file: +notarization process. To fix this there are two options. The first is to compile with +`-DMA_NO_RUNTIME_LINKING` which in turn will require linking with +`-framework CoreFoundation -framework CoreAudio -framework AudioToolbox`. If you get errors about +AudioToolbox, try with `-framework AudioUnit` instead. You may get this when using older versions +of iOS. Alternatively, if you would rather keep using runtime linking you can add the following to +your entitlements.xcent file: ``` com.apple.security.cs.allow-dyld-environment-variables @@ -557,7 +548,7 @@ To run locally, you'll need to use emrun: 2.7. Build Options ------------------ -`#define` these options before including miniaudio.h. +`#define` these options before including miniaudio.c, or pass them as compiler flags: +----------------------------------+--------------------------------------------------------------------+ | Option | Description | @@ -588,6 +579,8 @@ To run locally, you'll need to use emrun: +----------------------------------+--------------------------------------------------------------------+ | MA_NO_WEBAUDIO | Disables the Web Audio backend. | +----------------------------------+--------------------------------------------------------------------+ + | MA_NO_CUSTOM | Disables support for custom backends. | + +----------------------------------+--------------------------------------------------------------------+ | MA_NO_NULL | Disables the null backend. | +----------------------------------+--------------------------------------------------------------------+ | MA_ENABLE_ONLY_SPECIFIC_BACKENDS | Disables all backends by default and requires `MA_ENABLE_*` to | @@ -632,6 +625,9 @@ To run locally, you'll need to use emrun: | MA_ENABLE_WEBAUDIO | Used in conjunction with MA_ENABLE_ONLY_SPECIFIC_BACKENDS to | | | enable the Web Audio backend. | +----------------------------------+--------------------------------------------------------------------+ + | MA_ENABLE_CUSTOM | Used in conjunction with MA_ENABLE_ONLY_SPECIFIC_BACKENDS to | + | | enable custom backends. | + +----------------------------------+--------------------------------------------------------------------+ | MA_ENABLE_NULL | Used in conjunction with MA_ENABLE_ONLY_SPECIFIC_BACKENDS to | | | enable the null backend. | +----------------------------------+--------------------------------------------------------------------+ @@ -695,11 +691,30 @@ To run locally, you'll need to use emrun: | | You may need to enable this if your target platform does not allow | | | runtime linking via `dlopen()`. | +----------------------------------+--------------------------------------------------------------------+ + | MA_USE_STDINT | (Pass this in a compiler flag. Do not #define this before | + | | miniaudio.c) Forces the use of stdint.h for sized types. | + +----------------------------------+--------------------------------------------------------------------+ | MA_DEBUG_OUTPUT | Enable `printf()` output of debug logs (`MA_LOG_LEVEL_DEBUG`). | +----------------------------------+--------------------------------------------------------------------+ | MA_COINIT_VALUE | Windows only. The value to pass to internal calls to | | | `CoInitializeEx()`. Defaults to `COINIT_MULTITHREADED`. | +----------------------------------+--------------------------------------------------------------------+ + | MA_FORCE_UWP | Windows only. Affects only the WASAPI backend. Will force the | + | | WASAPI backend to use the UWP code path instead of the regular | + | | desktop path. This is normally auto-detected and should rarely be | + | | needed to be used explicitly, but can be useful for debugging. | + +----------------------------------+--------------------------------------------------------------------+ + | MA_ON_THREAD_ENTRY | Defines some code that will be executed as soon as an internal | + | | miniaudio-managed thread is created. This will be the first thing | + | | to be executed by the thread entry point. | + +----------------------------------+--------------------------------------------------------------------+ + | MA_ON_THREAD_EXIT | Defines some code that will be executed from the entry point of an | + | | internal miniaudio-managed thread upon exit. This will be the last | + | | thing to be executed before the thread's entry point exits. | + +----------------------------------+--------------------------------------------------------------------+ + | MA_THREAD_DEFAULT_STACK_SIZE | If set, specifies the default stack size used by miniaudio-managed | + | | threads. | + +----------------------------------+--------------------------------------------------------------------+ | MA_API | Controls how public APIs should be decorated. Default is `extern`. | +----------------------------------+--------------------------------------------------------------------+ @@ -1311,7 +1326,7 @@ only works for sounds that were initialized with `ma_sound_init_from_file()` and When you initialize a sound, if you specify a sound group the sound will be attached to that group automatically. If you set it to NULL, it will be automatically attached to the engine's endpoint. -If you would instead rather leave the sound unattached by default, you can can specify the +If you would instead rather leave the sound unattached by default, you can specify the `MA_SOUND_FLAG_NO_DEFAULT_ATTACHMENT` flag. This is useful if you want to set up a complex node graph. @@ -1688,6 +1703,7 @@ combination of the following flags: MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_DECODE MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_ASYNC MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_WAIT_INIT + MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING ``` When no flags are specified (set to 0), the sound will be fully loaded into memory, but not @@ -1708,6 +1724,14 @@ can instead stream audio data which you can do by specifying the second pages. When a new page needs to be decoded, a job will be posted to the job queue and then subsequently processed in a job thread. +The `MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING` flag can be used so that the sound will loop +when it reaches the end by default. It's recommended you use this flag when you want to have a +looping streaming sound. If you try loading a very short sound as a stream, you will get a glitch. +This is because the resource manager needs to pre-fill the initial buffer at initialization time, +and if you don't specify the `MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING` flag, the resource +manager will assume the sound is not looping and will stop filling the buffer when it reaches the +end, therefore resulting in a discontinuous buffer. + For in-memory sounds, reference counting is used to ensure the data is loaded only once. This means multiple calls to `ma_resource_manager_data_source_init()` with the same file path will result in the file data only being loaded once. Each call to `ma_resource_manager_data_source_init()` must be @@ -1722,7 +1746,7 @@ actual file paths. When `ma_resource_manager_data_source_init()` is called (with `MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_STREAM` flag), the resource manager will look for these explicitly registered data buffers and, if found, will use it as the backing data for the data source. Note that the resource manager does *not* make a copy of this data so it is up to the -caller to ensure the pointer stays valid for it's lifetime. Use +caller to ensure the pointer stays valid for its lifetime. Use `ma_resource_manager_unregister_data()` to unregister the self-managed data. You can also use `ma_resource_manager_register_file()` and `ma_resource_manager_unregister_file()` to register and unregister a file. It does not make sense to use the `MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_STREAM` @@ -2033,7 +2057,7 @@ In the above graph, it starts with two data sources whose outputs are attached t splitter node. It's at this point that the two data sources are mixed. After mixing, the splitter performs it's processing routine and produces two outputs which is simply a duplication of the input stream. One output is attached to a low pass filter, whereas the other output is attached to -a echo/delay. The outputs of the the low pass filter and the echo are attached to the endpoint, and +a echo/delay. The outputs of the low pass filter and the echo are attached to the endpoint, and since they're both connected to the same input bus, they'll be mixed. Each input bus must be configured to accept the same number of channels, but the number of channels @@ -2074,7 +2098,7 @@ data from the graph: ``` When you read audio data, miniaudio starts at the node graph's endpoint node which then pulls in -data from it's input attachments, which in turn recursively pull in data from their inputs, and so +data from its input attachments, which in turn recursively pull in data from their inputs, and so on. At the start of the graph there will be some kind of data source node which will have zero inputs and will instead read directly from a data source. The base nodes don't literally need to read from a `ma_data_source` object, but they will always have some kind of underlying object that @@ -2320,7 +2344,7 @@ You can start and stop a node with the following: By default the node is in a started state, but since it won't be connected to anything won't actually be invoked by the node graph until it's connected. When you stop a node, data will not be -read from any of it's input connections. You can use this property to stop a group of sounds +read from any of its input connections. You can use this property to stop a group of sounds atomically. You can configure the initial state of a node in it's config: @@ -2413,29 +2437,29 @@ audio thread is finished so that control is not handed back to the caller thereb chance to free the node's memory. When the audio thread is processing a node, it does so by reading from each of the output buses of -the node. In order for a node to process data for one of it's output buses, it needs to read from -each of it's input buses, and so on an so forth. It follows that once all output buses of a node +the node. In order for a node to process data for one of its output buses, it needs to read from +each of its input buses, and so on an so forth. It follows that once all output buses of a node are detached, the node as a whole will be disconnected and no further processing will occur unless it's output buses are reattached, which won't be happening when the node is being uninitialized. By having `ma_node_detach_output_bus()` wait until the audio thread is finished with it, we can simplify a few things, at the expense of making `ma_node_detach_output_bus()` a bit slower. By doing this, the implementation of `ma_node_uninit()` becomes trivial - just detach all output -nodes, followed by each of the attachments to each of it's input nodes, and then do any final clean +nodes, followed by each of the attachments to each of its input nodes, and then do any final clean up. With the above design, the worst-case scenario is `ma_node_detach_output_bus()` taking as long as it takes to process the output bus being detached. This will happen if it's called at just the wrong moment where the audio thread has just iterated it and has just started processing. The caller of `ma_node_detach_output_bus()` will stall until the audio thread is finished, which -includes the cost of recursively processing it's inputs. This is the biggest compromise made with -the approach taken by miniaudio for it's lock-free processing system. The cost of detaching nodes +includes the cost of recursively processing its inputs. This is the biggest compromise made with +the approach taken by miniaudio for its lock-free processing system. The cost of detaching nodes earlier in the pipeline (data sources, for example) will be cheaper than the cost of detaching higher level nodes, such as some kind of final post-processing endpoint. If you need to do mass detachments, detach starting from the lowest level nodes and work your way towards the final endpoint node (but don't try detaching the node graph's endpoint). If the audio thread is not running, detachment will be fast and detachment in any order will be the same. The reason nodes need to wait for their input attachments to complete is due to the potential for desyncs between -data sources. If the node was to terminate processing mid way through processing it's inputs, +data sources. If the node was to terminate processing mid way through processing its inputs, there's a chance that some of the underlying data sources will have been read, but then others not. That will then result in a potential desynchronization when detaching and reattaching higher-level nodes. A possible solution to this is to have an option when detaching to terminate processing @@ -2806,7 +2830,7 @@ weights. Custom weights can be passed in as the last parameter of `ma_channel_converter_config_init()`. Predefined channel maps can be retrieved with `ma_channel_map_init_standard()`. This takes a -`ma_standard_channel_map` enum as it's first parameter, which can be one of the following: +`ma_standard_channel_map` enum as its first parameter, which can be one of the following: +-----------------------------------+-----------------------------------------------------------+ | Name | Description | @@ -2892,7 +2916,7 @@ like the following: ma_resample_algorithm_linear); ma_resampler resampler; - ma_result result = ma_resampler_init(&config, &resampler); + ma_result result = ma_resampler_init(&config, NULL, &resampler); if (result != MA_SUCCESS) { // An error occurred... } @@ -3134,7 +3158,7 @@ Biquad filtering is achieved with the `ma_biquad` API. Example: ```c ma_biquad_config config = ma_biquad_config_init(ma_format_f32, channels, b0, b1, b2, a0, a1, a2); - ma_result result = ma_biquad_init(&config, &biquad); + ma_result result = ma_biquad_init(&config, NULL, &biquad); if (result != MA_SUCCESS) { // Error. } diff --git a/vendor/miniaudio/engine.odin b/vendor/miniaudio/engine.odin index a06e6c62c..e5364d782 100644 --- a/vendor/miniaudio/engine.odin +++ b/vendor/miniaudio/engine.odin @@ -18,7 +18,8 @@ sound_flag :: enum c.int { ASYNC = 2, /* MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_ASYNC */ WAIT_INIT = 3, /* MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_WAIT_INIT */ UNKNOWN_LENGTH = 4, /* MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_UNKNOWN_LENGTH */ - + LOOPING = 5, /* MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING */ + /* ma_sound specific flags. */ NO_DEFAULT_ATTACHMENT = 12, /* Do not attach to the endpoint by default. Useful for when setting up nodes in a complex graph system. */ NO_PITCH = 13, /* Disable pitch shifting with ma_sound_set_pitch() and ma_sound_group_set_pitch(). This is an optimization. */ @@ -51,7 +52,7 @@ engine_node_config :: struct { /* Base node object for both ma_sound and ma_sound_group. */ engine_node :: struct { - baseNode: node_base, /* Must be the first member for compatiblity with the ma_node API. */ + baseNode: node_base, /* Must be the first member for compatibility with the ma_node API. */ pEngine: ^engine, /* A pointer to the engine. Set based on the value from the config. */ sampleRate: u32, /* The sample rate of the input data. For sounds backed by a data source, this will be the data source's sample rate. Otherwise it'll be the engine's sample rate. */ volumeSmoothTimeInPCMFrames: u32, @@ -113,7 +114,6 @@ sound_config :: struct { rangeEndInPCMFrames: u64, loopPointBegInPCMFrames: u64, loopPointEndInPCMFrames: u64, - isLooping: b32, endCallback: sound_end_proc, /* Fired when the sound reaches the end. Will be fired from the audio thread. Do not restart, uninitialize or otherwise change the state of the sound from here. Instead fire an event or set a variable to indicate to a different thread to change the start of the sound. Will not be fired in response to a scheduled stop with ma_sound_set_stop_time_*(). */ pEndCallbackUserData: rawptr, @@ -121,6 +121,8 @@ sound_config :: struct { initNotifications: resource_manager_pipeline_notifications, pDoneFence: ^fence, /* Deprecated. Use initNotifications instead. Released when the resource manager has finished decoding the entire sound. Not used with streams. */ + + isLooping: b32, /* Deprecated. Use the MA_SOUND_FLAG_LOOPING in `flags` instead. */ } sound :: struct { @@ -226,6 +228,7 @@ foreign lib { sound_is_looping :: proc(pSound: ^sound) -> b32 --- sound_at_end :: proc(pSound: ^sound) -> b32 --- sound_seek_to_pcm_frame :: proc(pSound: ^sound, frameIndex: u64) -> result --- /* Just a wrapper around ma_data_source_seek_to_pcm_frame(). */ + sound_seek_to_second :: proc(pSound: ^sound, seekPointInSeconds: f32) -> result --- /* Abstraction to ma_sound_seek_to_pcm_frame() */ sound_get_data_format :: proc(pSound: ^sound, pFormat: ^format, pChannels, pSampleRate: ^u32, pChannelMap: ^channel, channelMapCap: c.size_t) -> result --- sound_get_cursor_in_pcm_frames :: proc(pSound: ^sound, pCursor: ^u64) -> result --- sound_get_length_in_pcm_frames :: proc(pSound: ^sound, pLength: ^u64) -> result --- @@ -323,6 +326,7 @@ engine_config :: struct { gainSmoothTimeInMilliseconds: u32, /* When set to 0, gainSmoothTimeInFrames will be used. If both are set to 0, a default value will be used. */ defaultVolumeSmoothTimeInPCMFrames: u32, /* Defaults to 0. Controls the default amount of smoothing to apply to volume changes to sounds. High values means more smoothing at the expense of high latency (will take longer to reach the new volume). */ + preMixStackSizeInBytes: u32, /* A stack is used for internal processing in the node graph. This allows you to configure the size of this stack. Smaller values will reduce the maximum depth of your node graph. You should rarely need to modify this. */ allocationCallbacks: allocation_callbacks, noAutoStart: b32, /* When set to true, requires an explicit call to ma_engine_start(). This is false by default, meaning the engine will be started automatically in ma_engine_init(). */ @@ -344,7 +348,7 @@ engine :: struct { allocationCallbacks: allocation_callbacks, ownsResourceManager: b8, ownsDevice: b8, - inlinedSoundLock: spinlock, /* For synchronizing access so the inlined sound list. */ + inlinedSoundLock: spinlock, /* For synchronizing access to the inlined sound list. */ pInlinedSoundHead: ^sound_inlined, /* The first inlined sound. Inlined sounds are tracked in a linked list. */ inlinedSoundCount: u32, /*atomic*/ /* The total number of allocated inlined sound objects. Used for debugging. */ gainSmoothTimeInFrames: u32, /* The number of frames to interpolate the gain of spatialized sounds across. */ diff --git a/vendor/miniaudio/lib/miniaudio.lib b/vendor/miniaudio/lib/miniaudio.lib index d339c746ed71c0891fc635f666899cbaea3a009c..c9ee60979ff6bb8e4ec63361e9faeb8656a4d9b7 100644 GIT binary patch literal 2907722 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 z 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

    <4 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 V9 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⊤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 z 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�=`jG4|u`x*a?FF$wE~HqV_d z$)q^s8I*_VLHoZGjUuSH{z$NI$?2K1V4|=A*ck6QGD9+s6^BgwOf%WZee;jOEiY1q z1Nw{yX(#KO$W$!^(!~IllxHTSez7VW?NY(dxw>7e@>zfUg(*%+16c)6eELvBr^i z8sDSQ?Y{75 zX;7GAp$O*hV^GmDLAygxj4^&;zcGIC9;#Kz-y$z1_^12;<+4!kTWlQRAAl9dTO0YQ ze}JEc?;}$E7y?2bH;PRb6Ui7~Q6XuIzb(JlecLO#hvRJdz1jBaNhT9a6h|IX^XofG zv*h?GCfpF|pzN%AnfcLF&QAlJgY4W=qu%&?`X_I0H9jHz<;*Ws85>_v-6eyprr3v> zQt$%yky~zFHSUni)!ZVkgWP}T=C0?LGpAH3A9g;GVf*G^F_V3R5scEwj5S8AB*Ce$5b+jjU@nKV+gyEY2 zHz2T?DkL%lB9V@0%19h7#ARO-E5BhAbLpJ$_|w17gfoLSo;Lv_D z{Ua$G7W7F$i~A^YA2~L?Y6P~E3gp)GRM?n%6(5N@RfBLl8wU7lzodGH=vSlyuV{+` zsf0udYPnyH3;{bxz*~ot!@J~AQlNXWWPxB)P(}!^(m$t7c_D&CtNjO5M0g zsUBY^PB;SCS@GLm(MA`GZv|1v5Z?;-@x;A>tfTHZ{QRBLME(|tR6~lXBGi>%aaN)& z&*DYD1>HuR(N0?NPNzo&^P&`TM(7E*V!)16dlyeAU<>LCpmDWB1B*)CG);i>2aBy1cDj3LwPY*{zTi z5OxYsIW{&(STkXiAltewK_+kBt}a=RxT#ACOxfI?elxjQ&291yA&s$h` zqOe>(BwG(z%APKW_^(04Le@gty6%#M)YFGfQB>cj$iHeJedrXHq?lpG18s+uJM$A* zSZd-p3I7pa5{HN4quUOTHNGdO-hjG}P?vB%`EFJvRJbLGprLGbzUAlg*Vhm$?46d^ z@NOJI?6mVp#O{yS2h7g*P&xi~8}Sq0F|lu`Nl*DHFG#(#?}%j2Nnyw8J^AXOXGdy= zPrNsuYqcb0MWl}SgURuJF0F2{avYoh|l#c zrObx*7%|uaXxo*XDL~dt0DBQ-aV1BM9*rwm=%`ID6rv6yKWzUV{HEo^5?av@ZbNu}F7?;X+^nT4T zN(?n%+I&P=v2@_Wg5@~vNK~1RWJ|#1*H0;k0n~;D(^Kv5%BfxMsFmURU#b@Sm$hb1 zI$S#rcgS!S^fhpmm~hbV%6tRUjSp+S!6(Xm1D!mqZO}dVRV`l0@~hRWr%?P%I2Zd= zmHSj9HA@2~tH?1t{7ruxe7>!&2__i+_2}|uwp9u59-@b0BHl1 z&j4uyl+OZb1C(2Ubk56N=pTUew~qonq;eUi;t2=J7D-*+hfY+GkHF-5tDznUI2$FZ%-uZ$y{bdbKT5YDo6-UuEZJ234ct8*-1_M6^ zhk;trBMA^g$INMlWKT=3QF}X@9#-(p__aBeDR#z?Pyi;2#yJPluZD*KiApibwm? z$)wnAj1U>q*}wfY5Qfl$gFxQb9O7sU)9V3Mpjz z9!Y_^uTD{x&1amO4`haadY`1i*Qb*TcBzmr<~aJh+)ddpjD#4@fs=jE6?ALsb@J_p z?lf}utB%v7sXJH9dVJ)$=x2D7iKegFhb;cyI$NBDFl|=Kv|-M~(&JV|@r}FU@6g?G zCuwruKI^JBQWz`Jtk0;8&d2r5R^^ubeF+4P@v$6=!#=N^xp=1!D&ItwbQQ_e8# z6t!N7I*A|5fO*HyqRfM+sQ6^>MED38QtYNpLERhebV)?DdZU3_rhHw939!+>$ zlt&Y9B%C2(;-ZC@h7d`0!2nW{OnzAfx?`eDj7DaEVB-0=%NC;D2XkZq0)pTh@wcUivm!s z+C;X|4!5WYQWUR^uu8H;1*DMBBr?E>&?J5O^w(GMjm!@w2B11UmdqelviFCoba7Qu zgW4*mtOup6U$|vWlCpShY$U>ImVDq3P0?jd$(B`}D+|ymi&$M&wJxh#l~wJOb-$E# zpIg=xDT~*}Mk1WDs-wwnGz2^O>){WVNXgDNvDi+23q1w3Na5^*q&rLN(zA<6S&U^P z%e=!^SNS`ssQ3!-*Kll8Yq1`*$6_>^t_5%xqbOp5DM{XdmjPH!;d2I^Vdm?`Lbr;f zYZQk-jc2<@T#jg{OXhe(0Ubi+1V*9D=?8eH#L^dF zNj-CAan9ncu@S-2K)Do#O3~}`)hsAIyrCjXOr8ss=_u&iH~AxMk3$Fdb`Ig9_%XD= z@rx@CWXqitsM4v|aAl;F1SVeI?5EwYz3OYby9a){pAPLD9Ch$_c5fVLvNIyhHDU=G0Hh1@!m3@pDNie~lQ=X@%Mw9WgX6}A3V!s-(pD;T&dH87OA#*1( zw4=M-xqEr1RggUsQOn$>@A`p9H0@@Uuk2gQL;Qst8wS# z8+vTz-n*Wna_Ie*OC`_&4k7Qn2};qb^H+>9~#sNqZwihi9! zUP%G1^iXuHPO;xfu}`OvS5iQ8Jrph0DV}#y?9nOYl@!oP4@FOvwXRb=>7?otKAuh~ zL8R;xLMj^EWh7sOVxl`+zYt^U@k?%I zs#e~Mc|rz06g{fbIK5n>dYL%Y%{8g;X?`Rnr$wQp{sGGti|bj`jX0>f$ASY!QU-3O z-F{Sf2+{N$g^$&G0)zP%3%Al=4~Fd#GFs5!YXS%z8|VesL5#p760AvCdc*++6ZwwKndiGt<+Kh)pb~ow{@_3JIN7C5n9=MONjrb?M?2 zGw5q!#axs2wxPJ+>?$45jxQ;Sr-4@dyEK+gp8FaV){OPWnsLB4@YA#pV1OsBDVfhI zm@AU5lA9ItRLF~xTiDn9Ut**3-%zSEYivepL2hs@7BEoV04q*vv|{n z2Xe00h6g_a(!BKwUqONPCOj4BDa9uEf(zXZ^t1~5r3>wKp#oU$I`%s*)QB?LGwO?< z13jyt2T&Es^QCu;DqpN+c|U4Nk1$VR{3;a>Q{Q_K+#Ih9+o^p_#YnJo>Bpn#HT!`r z54)*ohp{lUitUHmc6LnCI{Ko z+vH)Tr=MeSHcNhkm&rwmbK1V{El8AN8X5ms^4H=6upnOcPR*#o_-Q$J{+TbSkUtn3 zCW9G2#v(i43O;@Nbn(PKu>(f!1@3}Tw>emzom}Y9dUE#8hMpz;;ouHx`GkCSx~kw4 zM!Rf?!?;w85nL+ah5JMc(Ju^ft;^oMlBg$^3R4N@cNsGkqEboS`+0tTKl6}9=~qXh zK4bi(3SMqyNr|W|N|L5q`?X{U%p}qy zWW;^E+#8G$ss626KmS2=lHu%`pN< z6dLp>JBr8IlpS(ujie6jfa0C`J5cAPSUd(gj{Sf_$?oa-#$|nrE;6YKU*yVE8k7{= z%gmX%$L`LI(mIulRJ{yRgK!h8!opZAr@`ALP&1Q79_9M6SUv7*BdtpH6Jf1s=suv4 zKB>}yA^pHLNM7dED$vQ>DXCc}T%aFxgB0JOA0yVu`8=R=c2YXIIC(mmEmXPOm#g#l z-8v7?B&3UTzP9um1|(AT;Za{`CwQZ=jz@AqB6DScR1If28!%chj;a*$m9 z`Z7U8XV54fO3i9OVCE@y-6c@WruImnFA0@&KTgQf7gZ=N0aNJ(UF7b7hU(^au&wc# zZIcV))1jxYdXM~Qz>$})wZQi8uYggL@ndyi;-qS3C}e(>63 z+pd-w*HBB(42~R|{I!<@Txii3P>58?ZCe5?&(>7?V?H1|DeuNZGm9)wM`~@i_=>cr zd7Wg*&I=@|_pymvxusg21&wg8{zj)SCH;`f<5)@L#dM+`2a!pha+|d9Q$TtgWO3`* z=|GpL*qLr@Gm!6W)hBio!O7P6*~0fWFt~#O-Vw*<{4{H5pXxuQYpzE#tNZ<&Bo4uw zILY#C|C80^?dRk42}P4Mjag zGfyftKp2(CI$DNsRknXdNsQm#%1hIFe}2TnDTW_dJ^mYOm3>~7NPL{ z>Whfo5ffJtPF5$oS&b0!Hz)eydnbzc{)r;Kt0InXhA!gxa9zUj;ktn1!*%}9?48}l zqg}@O&dxy=I3Rv8&{sP4#dx&ScywDf8S;0TL_y(=C(boDM$BUuHFGYYy57BcS}YMH z)Ebf{1sUTA;q~&7{?<1k2Y~eAl4YiELJk2%^bFBOCwyu1sLDcAMar`?E!_y>;m-EG ziA&6lZ}Zh~EUSiBoqyyTseq>7aMiL^Uyp62JglWeiGH)Se47BJ8J+!z6A#{omdyeqPZMfpNiEw-yl)Dby!8Bx) zYT8v|{F4~F@kKcj$iQR=z-=DoIbEHbD!Fz|Ay!`!-UOt(`mca=SNE7cvM=bCEoijH zL(YsLh6p5~gyql{D5bEzaKq$OH;)5eXZIL4FTO+da`>k&8<#yU)p{wL zA6Wp)`LOX7vUnMIQ@3=UuFnN76q+;pdeK367&Tg@mO>+Jjeq%hhe2lLEMfc=R} zvwK9U?j(vjD{IHEDGn4A3_{Omm(NU+Zy|stTfW3-`8IwIJiZvD7h)@lo^#TC%UHIH zGSA9Dbn~G-=OnAeldAi8Poz>-dQaps=t&+E5%lu7Lf8u26C)2hw({fZ@Mx@`fv=z6 zRCEx?p37b8%R9d(Fv5w|zXV`*&~N~As4uH`^8-m>*W$Wp24WhNu4en?K9ydAW9f&4 zqlDUm^uig#2pg>t{L@Mna?f0R5=}Z^W+qp0(=H5|hWbQ+ z;ndWw`)rEGXlsEq)%I;5P4z9N z&r*uqxeMqU3c3d<&3VUL&=c&CzCS^7IC770vP%Mlcq|NHi)gSP$5* zDYMM2iI0tR_EKGtDGjG?EsmvbE$0tikXx(xs}}o^dW*~9Q(GYihj;i#8RJfC+3NW zXKj%xW8f%BhLp7`Tcg;heujS38~#;5`k+_?q-l^%K)Szo0O>J!4#=UmIRsRIQ)9Bs zIGx07vsw8eFdJe){)}n8;>l*LL%d6xQLN7FCdz=MiWrLqmZ@y6BStn$B=qORU5ZSB z@#hRIVT$Xgf(75`@#d~EW$W9Vj~c=imU!j24~3!A1tGl0tZ>fD9>mY|CYV6P&?T5p zm(L9gPpQjeIzRR1&#K{q(v~s4ZIUB+$ zp%OG|8i&-pv*rN_n`qf{;i2F@XeMX~Br(k|-<+01I@LO0LSHf~JN^(=PGBvd9+re?~sf<%!W`5N+%Vb-$Ae{QO;GE0`jbl1xkI^`$4d}(M z3&t1%(sO<+gR1BJ89;i@%O$q@94wec;~lY6)OcqQNMoDqDO~Tz6WO1jRD}M(nwGYD z^qNVOYCA4hGxPmYX-X~&1cC1NEnI*@89%5FmwQbHoD zo&=v9p8#Bvmq3j7n2lL%1fvVidMs6s0I2UjNiPV3O8dvHi&L@j|LY5zXO zhV9xIHtDgJ8I~|2Sy$!IB%)#94LiP318%4b} z9=ZZZ@8wqmy`->NEs);JzX+rUPbSzYxR_|Z9a?r)L*AO%n()FIfiGt^NdL+1ZL(@+ zE$Hsj>nxyVBYU<|H04T_zT3};dUgtSoz=j-kq`foCK%yPcNH?LrKH=k2WMTL)WA$W zEV#HJUQM10tn_l(Tv5G@2e8v$C?w?hvIwwZ*X&M?pQnix+|WLL6;A1{;R}a_O@?!3 zi^~TmS4g&a1mc2>)vnFX6#ul^l1Vv1GUi0CGajY3D2dCA(_`VNtqX|+29|xC^teCL z>HCH6isw6tmD;$K5Xq@q9ix2}ugVljSs^*~Qug4o0}iX%McJC2BPGe^sW`kCdFM7y zrqU;}b;13CPJt=Es*9rSsLml1Wx z%CimM(!s6Kl-2NWdR$=|fYkLIvCZ;{yONVfao31#22y^e(Qv~n&Q+*V8G*NOnx?!r z$hRZPFI2B{xP`CEouB}*iUl06YjMp$*g^rtRYQA48@1p7;uqKS&^ma(RhU= zDXSzwAay7DLE6~8>T}97ie4F$$U#%Na<jH+EdYphOV6 z5|hl0Yko1}0zUECpxB`_(Tai^V;DopySxSQD`nAmpiO*;8qfq@Nx{sQlc5g%I%K(G z-X~vTQ$AUCO`+e_a4JxvYxRB}U+U&v4D?_^w%JR8bn}F3=b!~3-S}EJRwmrJc{^!| zZF*UIW0iB`{QdIavmfh7?kiG*Tqg8mxpt}(#oK*$c#U>3b5J=L?dJ*Ds|XlwNB78N zyDB@q6>Z20%uR27MopaS5PAqi_4vuKI%k!MLzZj;f;B`aTQb@xnF{GX71Dib75B7J z?c0T><%ZfRPH!%&nwj=~mQEK+t0R8tiARa6vuHKPT1Q5NhS6uO)UtB4%&gQ@L~xp2 zB2;I!oOBZ7Es}&m==R0uKZfa(4t!-2-Q< zS7xZQ?dF;}n@lx{xdlj%+!H{0S{qjaa90&!7=tm2+ir!QwqUw(!W{3v~S1xH`{ zayRpxzT7UpB-H>{%ev*{1C~-aT?W0{?Ghc)Eg~M>53NADA8rTI{jdf|_rouNbU&~Y zh@j?XEXw3+9RF7;7Ek1PSGc0of{+q^BYzbz@7Vc^h2$4QS75(};fQk3R_KS>rF_Jg z<%)GCNUFySjN+5jtO>BuwkhF%NfdpA8&C)H<1r8nG^<*)0B+a|XomP{w2T|}8#lZG z`1yK%ZfT&+)hwptIS*KqV*oSA^+tHX6DP3k;sYJ`LS%Bj-5MV+Xpenj zT6W!^m3JnD2JT3l^oU~qT#YS+DmP|#Q>tpI&n+C0-b;U5kJFAEURMiXI43iq43~+K;`P{VO7&UtQE8_LV(o7>0LdUgTkMrV5cX3?9NOaa+#oFPk=n#BPu_)3 z_z9LhQz3$jT4_MS*m$NIyFLV{e*0hjnR%?MClJ zTrBu+f&U33bm1O!4|u(`7{4360C)IN=?N(-C$ki=xI(lgqh)xs_Zll+mFA=tV&K#T zn`N>8w?2x9r52VwDqD9fwYWdpvqdJ8nXWxjSJ@@k4OJeFR=!zR`Q}hZ*dBB)9kQHj z%(DUjRP+2z{v&u{KNBzP&@C+H#;26BQ==$Cl@<~lAnbRdp^07}_ym1d8M#tP$b;V?q3*ZI6B$TsHl@-ZZDE?a_hVwG=`PsoO|q~16C zC4xFXsq2h#*6=#x_h5LP3#HELqvPrf`@N*1kgU&?ted!6aiof$xI0wV>Z4rNbk%cG zb!CYlU7{^j*RXBMjv7+Fg@x0wK=y-XGq|_)l*}FYY>CG$JHseq<@R%iw*V)YQXNis zr%CO`LH_O5WAs$E&FDFdJWhzVN=oEww_Y+P45=O_F_Z8{lbOQAkA$YgCS{2@%|I)Q z`4}j!0AX94ysZD3$Nw{r|2xcMc5(>BufTDHW-iZO<^t^p@nPS>p88zaz7-1`(6Rk_ ztaffG6ISuxvIyao$pIi>RUWnvWbtPhFZ1W4-_NUxa^3W5X0hF zYw*;F9rJK6b05yKpTw^(k1Y{n{WIapZU0u#hTS@j=WGbm^_#<$eH(}FV#Nn}jiFj* z#Jc9EME%?>kEF;%GL59J0}$i$HbESamP*JWJ~#!fWVM>rq2>QKjm6DSU1~;o9fGE4 zYPO$UclqlNFl?Ogqjo>z8dHKWqy1a#n9%dk5di97&<0?S;ez6RE-2o|otk^#6UwB?SpXD6{kZ`lR1`N#GcL_+It0G zqjS%1Yq9)(-H)pne@&_UPG@uHF4z?vZ0=^-#DZrt`!?(juiDks9`9`HF>DVi-?b{= zidDWP`}w}Gv!TbF4Sk(t?(XC@BkbgCPBkO$s3BU2-Cb?mc#fBDgRD45#^(eZ_lW&h zT%X*Fy0Q+2AN62JUcrNgDAtE zBQ{ENPoP~x^d`{c6XD9vhc%k)Kt*wVcet`wAxZAKh;?Dc6YHFxns!w3jimToGSj$H zP~>Vk9Q8_@5TW()q_aABNM~^kl&HSyCaWHU9msi5B}Z&1$*o|!>Re;RVMZI~u(1VR7!|S;5Jfr!c&x#QbvACDJ3eU;c~KC1Iar$_FV`USRMP`N6mOV z-#N#*6$ED>EV*)klbkqOZ10m1(FDen3eIhQW5sXylq1=Y-5X7hTOLh& z+hRzI$3%mBjO2a9;p*TUD#YUcspQ>~+TNRd1!F9cq!m2s;|DaHT|~9GS6qi-8b>Sd zx9AHrkgzTRvv}L+F7AaWzQ@F{nN%zA^QWRpikEX41_4g0$4HosNKf-}8}eb5gk{+3#gH!=`ml zBwf0~N>5ome;tPwWeU?MCNgr=jE%*NOxwr6iHnUP81oe||86YBid$T`Z31(al#bEq z#eD)F@tgONgk3k518JklkMNK-3E@5Q4x^_Bo<&p-gjxWe6u^ z$;J^^z0G}0`1j$255FImdcs+gMZBm?T@gUgJP5#mRtYcygI3Qpza+st35P)Z%{zoG zrxAFD74ft&_tX0G#)B}~=CX)NZfCvtolx-~R5FdVqxIyt>$yqiYkS@_n)pPQo;nF` zvb4K7&oW1{VzSe~6#ROdo1sglu?udh|6I4+)uU0Al=BBzliq?Wfi#K|js9;elQ7XK z)qZzmdTSp*_XD-6*k1wNsh~&Qbi(&NS9Q1Q?{KCMa z0cgHxM5#2CQg=#!%_#f2KXIzH@z)Oz?)~w7zlRA9`-hDTiaKA1NI15CL9XJ?i}EZ- zOv!&vG!N)i&ifZwJrI@LZr*`Urd}mD_)yXh-TOI?nU#}UWLd2aLmWz27~*Uk?>9TA zB33Zk@1;f}%aGHBBg>fb7kQfF99c&0NRnlBcTe04btLTYERXX5?L{oPHxAEjD1IjT zL1lFW!E+NHrzp{F$^6P?b8gA}V^2g$A7EqtSdGrHJo8Jav7VEk0Mfl83g>!G%1qR( zOljG_E0$*ukjtvWLoVl~g*dU+nwCm`%9S6;&F#z_uu*|X4Tj4PjCLWQtkeQo*Wyl> z>2__dy|Yxe4`1vt7}RsO zGJ&D(_{A9@<>s$@w3i6c=*3<5*(EQ_Ur~f=$uCqH)QhvpHhP6O*xW1Mh%ZBmQH2vp zMbXBTG~~leme}a7&XE4HG%ZJe!Q@NWE!u4 zG#tDl3ZELU$PTaZ$_qdmue|D}lYLC%m8%#lJx{_wTDB4e((~j7Ak7+I1mtj@|8Hl2 z32$=5;~!h*Utr`q$3L_DIQH;=G9x!z=i`ols?MAw^0=B==JN>0zY!`f$G`XK4vEb> z4eR6Ie-B3P{}~3@R6ADoe}Dm&)!P_gF8Y=HmCm>lt^y0t?iZjH&E|0nY(-9W9lc z5q?;4A5iujszav{qOt8wK$?n60cmV2cvoXvIp%0=E7E(NZaa|1wizH-e)rMNUCdhF zN2UX@zfGCNDRUen2_g8f9I7Tm3qsqaDvcTiLF%EduH^D5(X@d|gfh%Y{yqfN=S(J1 zo4N4e5vl(ZD`boo>Y=1aXrddCKqd!$w_p1}Vd5I}|GebI8Ea?1mBQ{~rZ0Yhy;JLd zK%MRLz{?O{U7kKGbr#N=TK8M_HXK-Cn~F=s)Jgwosx&c*v3DY|&+3#;M0aWoiz$8p z&X6>qp9buQbHp9%VSAUk^R@Un#G-S;#iboe<3?4yH-aJc@3U2oD)TZSQyrr+kJhv* z$HA~@yeXdUo7zSp{sk_OmXdCur0Y>cm!kwKlUwa)%$);ayT|T{m*bg!QyBqQp>+%hPVPxEvLp(_FIG zjfQqgj7r~hG&3FpU>R1q(Hi>q86X^3Ss1NHI3zeie6b@jg$(|Llux);rop@>t4t%4 zF_(GPs#_gT@`6djEk_X%))!YDxi5cK0T1^u_tU}2;TK+!@CI86^ zC4X=gO3qy()9nK*l)yIerfZI3K)6D*GsG@bTfv-}n}EXg+|R2VP4%5;>a4Brxl8`m z)dEpBOoKz-UkhZ5l#^8}S;8e@Lz9>JZkw88eZxiX+&9|tO!dddCl|vsyvVXG#WZ{$ z?UJFM;4)w9rsT46jyL2g3MSW}gtAo*yCW!=$V@Jum#<)=L)2wH$10foJ&o6k_jfK7 znvF_22iHF7812Bvny5@LP|oLgSZD8xv4+5a&sn^O94>%Zg%5~DpV-Ox=m{~f>m`pE z?;Yy-U^T$bRv5wcn^C3rH7h}HtBf`XJ*JkR&lh7a4}c8lAUr+QUoBN*sRrjn~} zE)ss`PSZZh)kieydgQ^lE^{1cATyM@XNyPosM-Uu@APfR!^ z;b{kuRmuD>XV$9a^A*DWW7kJ=nU7`h2V>P6bd^|)=dfhhej>{HkFowu+eB6vMOJtR zvck_JE4)Rv{|ds(cm@Q2i>#~;7oYatFggqs_MzX3h%e6%Cjvtc9u(CnAGsm&LIfS_ zchuO|`Hy&5n7xP#33%L9r`TNCD~Ed16Dz{GI%Y1oDyi(qlN53<@s{~`R76y0mYXS( zNqS_4MQBstSv0N4e>!n!bMR}7&!x!3K;7kX_ir@=g=iIVp#*sLS)M&&6HJ6NTt8CM z!OVH)#!vnmNOS~2pNQB*dZ>^o(!&mVKx~8s*@|#dkZ+9lU#RzdBbeoz1gV=%^YSkg z{0>3-IBW8uzKrkl;7bjy1LJBA*Y|+50P%-Fn#1)pkT#3KqBOU~jv-4;9b({Q&Oz0k zD?G?Ne>-Vc^>wTkch-p>yqF5tt%PCxYp^#voYDTT0Qus_pYU$lJ~lsZus2a<+9A5&NmkA@y(AK z%Q`djMQaucU6at%V5OHdb*ZnxMt&oKDe+e-0`bdEeA+6Fi9H-u7ajPh{e;>A)Yc^T zaf6+`C|P2qa_v4&g+c80jPcEDor(wdGCnm3LiyBVQ6gO zZ#(ae@5;wL{4_kS%D_3cv;#p;qw1_|#iX@O9KOhWzqrfO!l0(#OMCm~8>Ksl=;YZg z&6OqS=zHsC871FQeZeW^ezkB_Ssa|s8`^>qTT)mdGI8)Z%)}W;gA5dHLoKsI8psZE zAUo`V>_iA;r$!(M@gGM^+DnO}k)7OJP7e}X>Rco(GunV}S?CyuCu^in6+ zj*bgEh&Sh%H;FPr>T5pRW2Q#KKad+wCw2_TCApf#zNv)ow3VH7!^P^f_!N*vC(i?E zhWSfC8l4;j(hPI46#i=^&ie_FW*x~EwOEBc2vn*BdyfEV*3q@hY%Pje0i;<+X&}u` z+Tez50n+TG3t8iuo%A@6Yu#tG-%mAiPSmvA%07(Rp8coEjlSEaT*#FhHbZ`>DK8@B z%W$G40%fRW#`ZB|)tPi0LhCd5j+LYJ&sZaB@hiKGKo7~4)TgOaO;X6y##5Z+;@1%z zpswP%0kKh&NRd@4@;Kd?yPvXW!mjk6uT+F^ld_M(o?|^4TRP?d_986DFR*_m^iJap zej1)Njm!4jc7C?f)RMx5Rk09|YICe<{#>_l+4HwuolQfHnl_2@0Ho49&A-cl^o28@1=2HY4v?O8^W0eM51g=WAT93~ zF_MNN41oh79d$TV99vJZXO(Vj`!yo1T}HUiUS38zFvOg&y?h)Xgl6J0+0@Pik6xNC z{?^9bbzks%wjO+`^R>}986vdw%iC^Np}DZcsENCX9jDWXS6!&BJ z%SX|omtXWL2nct`h=+S+$ejSrKm_nh0N20i&q~#2{K|cBUCLtjk~@R}pys#z9IgPk za+bEvf*7cit=9?%_a?@O3k@cX4+ln3)JVj8+`+dnO~+ik+dTLd0Wc47h!H*bRvmE6 z(-BRZg>}KMs4=Zmf2n@62AL2wFdHFE=#5bk``OHC=9jmf=X6!re$MR7jOHA!_14(g z66}hz_3-hA-`PGpsRz(lxr(8;Z5cyGZ;p)Pc-adRwfTc6m-=)LjE)2!ix{=fq6(uc zB?)5`ogLTrNp>;RY<4hDkSxrElU~Y|qLh4n$F;UJTQ%hN2VeSc*IvZ}*4C+Utbw)H z4SZ^dWhH7mqI)1b+AN25k8pBN6XxnESj~&MWA+v{HA+rmQE1UzQVU4$XEJNc=FHW4 z;=*?h+q39x&McpYpM6WYg@Sm@zSSQIK548JA|M+4Lt-=Dy-qtxZ?nA@rl~9&Dd}tW0*J(9TmF#oy;iH*f8m{SXGLmUS6t9u_WP!GOF8+J&O0V?@BYMe*iH@a4pfk(K*7 zQd9ZUaP@53Pr6MU%;5BU!`0Fk+(-6;FhS@DBQm^+kz5l!p(}gh7vfyi8tRtdK6Tr~ z@rA39jU0Xy%iC?|7YSIR=oj0CEP6?Yea(dwZaPN1^ugUA6)W))-a9K&<^&ED^;kD+ zH%BND@!p)OWu72vQYtH1DHF;N`7>4Mc}-wV0@4K5WFSpoxx_(zR;g%LVurc#CG28H zIBA+2H=iitw3Zxo&Ke8_VvcXs@@jR`D+?!a@4K+(9~7@gB;3kM9_<|79js$?C5bW8#q7W-ev2 z(V>tAN?+Gr5zgFrGM)ekuEj>JMrAjonq$L9=+oWL~#Z``S6aHa@2|<^QF%8IDNl>cb+e zm5${grY4SXYSvJDZ7R*$YL-6y%l6V^l#n$u<0B~&aw>B~ty?l+%A7E!Fimw)$d@^viQvGF||vtLrY zu?JB<;q;~Y0X8^A^P8_kh@>^-_Kr>JSnAH|I-EGb$Aahh7x`Gq*Ms6?X?F{z?Zvm$ z8!3;;EcT{2>GSllH_5Y{du8fikNM-Di?OZ(b)MhFQa6^F^no{C&t4yk!pQK;tUg5; zIZoGQKFyuA5&J0;RI1&3D1K2snlaaStf3tsCeTwj_;l-w8E-802+cI*_ z#?)p)Z%wMWZKx|a+t<29Rcp4lbv>-R&yl~fM>Op>ls#fB?XZJ1TgaIEj`ZkDAUwB2 z!}jL94m~yanvoRdoV{6kGxSc+;l$Wb+YoE$$AqS*y*}l9W7W3-nZVqF2Di63RF|H# zBWiPp3GO*Rx#jDn3H?XpBfi#lqr`QTuVsIei8kaR|v76H}WXT-p>ajGyxoB+9VuyLyJP@Dj{wX<=ma7TKb3CIO=&ip$=GV!jH zzC1VaFrYT$Q0nhmI<9^%Dc{;mBxyf;WINckypKDtT*v30xDoj=T#J-N;Qxo=X4P*^{MQe+j5PK@|B1tG+S}}>6uS8k!wqg^H{F#TZeMP= zO|VS`*d_{doSlu%m%{*C(j?9i^Vi8SLLCFL`;r_ao^g%=qm1^`_$<5Bo@qs<`i6YL z!KUl+5f3&@C7elhj~uD&Nzrr*U|Txy7>gK89<|?*9N9j*-Mx_uRQfX9Jip;gQ zCTli6iX9?TW2#kqyL$OF2!VC0Pz`olJCu9!6W|*8c+|rb34<;jDdcJ^#WL7pbBEOL zj1_l)uthw15h-Nx$mPQ~DvVS@NS(dAj@u8g`R{R1V#XIdyvRrSMN>w_&l&28f^-kJ z!Ue}*Hrv40C@hQAA?sL#bpBhGTqut_a9M!AA_e6jirkyv`p)cGj)w1%9Sr2vP709M zRAa-qGV`78!!VB8-t{IH!af3d-L`-l;19^{f%)sQh^r)F48ygVtK98uoBhnO)2lpj zo`X%!)Y!yO7gsf+=P;o|BNTUr&7iAPJJm2^XQPi|t_^K+)55HK0nvcGmKJD28S^iP zf5Cy-;a?aePlvQUc){Tzx)$L<5tT$)#b#w*75 z>p;4d@42yFB=+;&`zauu%WfC)K;~;vLKTpXMf9${IddXWya-EcaW&M5hpc{O zzlE|o)W_rW40JPetN^eYn&qUi^4oN=)lwLS%c4ZPL>3_8wdg&0#^^D5*3%>MyiT5W zygg*BztsmB_zwHC(S8eGnZIQ=aJ%I@mi;1Zb~bM8enfdKaAJ`<3|3h9S$}etM|>6} ze#1oixIN3y)uu+f=q)H+C91I&=*=2Im0z4cex5R8}GS<#*>lmc>yAB6g{m@`2*q)RcJ*mg8ey=o^cNX zX};jYKzdH~0_k=2F3?{q)`YApEff_>N`E^M=+kOGRs-p8=K;-EUn~Ins)Aa9zNVo4 zKzdD%%p4tXZR2FCW<;t-9ub){#7;g@th&PL%8_G}%e;j$*ujyb?Nb%${b}a40)9o6 z6(D1$05Lp(D$gpA%pfId-7uw<#?%^Ot>k;&)*EB#x+Brf0bFm)@I_Ii=Q`_a(%v-j z1@qV0=Af01`njgoN?%)UoBgSp=WX-#RLws1yWchsaQ&?Mecd+S=CWG#`*xHnB)Vc; ztC;MgLN&HGS(Ebi=x4ac8y)H(vh~%0eT$Q&Y#_WuQppBOkq7i4X|k$`nU4jb#Y zTAp6plk$F(HU#@xUzM6ByS=gC6RnRAe3cJrSj5Rk2A5`KIJ71_wh+pmM-lZ2W0(MY zfMY_pC&sP0zZ{TVk_bH}iOW@Ce=q&+=3iqx=e?3yta~oLP&e~j z#w)*l#zUU@Dep|(WB;yutVnvSFLSl(E@@tTqSQb&>jL?neb;*q9llKzK*dMI4jSXs z{v~QJHSdEpC+rNx(-)i-687A&R?(NKHFqWL(Q7USq*tUc@Af5xoz&pQe#wo!73gyH z?QL#s%8lieT2QTGzw5?kJsBaR3e>@JQhHf2_X@cmjl6_JO^OBf;}gXyV({-qjy02a z`PA~f?*#ESW-3kG1pzm_LG4b;<&s*M&u7={#4NCu38tdt@Rqk`Z(+C6163ysng(9g zt;P}D=%fE24s=>?5a&6#6Okc9>lRH*aXZk5Q@gvfZgMQgU5-1eID$n7mYGltlA3z#i+hz3{Gfz$_nKx1i(Y41^OS<9atwFdY z_&R|XvkDFEo&DnVXHR+pyWSLffDImOb*(Sv>9tyFj>J6NQH`gAf#5*v8JP>hRCyc@ zt@2nsFyJLS%hMBWnY0Ry&{)f}#k$uzc*snJe^da^IU0Q4Sdox=3dN=BIjHI>TR}8^ z6AOQ?R8gdNGdagZ)7KZ0<&Fp(@O0^PE^rlWlf_yP&&G!7IMln=gI2iDI=R=_P;%vI|#-r3N>IGjtY97V^ma4~VX7IH| z7ewu@3bc>iZqkoj+MA9RB|F-1=+Q<6jSVJ#!t^k|Of}EV z;JStTC{-Opavjbymgngj&Jvd=yW1x2s%3~h-4CN}#SQhh`@~I7??yCihmwcd0NXm- zYSt8AMz5=$y@?3HXfT=`0!$Vy2(BKq7RZwP-ItJ?#$TTR(%9{CAdTI^ZtM&ojos?q z*e|%Tw*YDECQNnx?Fu(m@LW(~x4Yd~@wcyu;?QuSxLOg#2XGs!O~C}4T{tp60?|wC zMJI|?xUS*^u`M2G!E)*&G+_l(PM!f4uskO?6m^wDQBP77^^*2-WBr{%Q6ugjf_<;3 zX%;-)6b<6h4Sw{~7E05@Xu^!;c?(ZpLK6xRT%AV*haiH*3;wB;s)<7p73<*$0_ouh z0qHK4!&x6562QWc0Z6N|BeDVI(A_5V~j9EQ5!-K%Y!#_-9O<3 zU8p$=pEyyhA`?G3ax9|7$+drp?(flb|Mp|)e%XJtNKemaWIfDmIb7 z2KtZOutn!U=lm@oO@4n5NRQ4VK$`rc#5OA-(HSpnq2YpGo}5DYS!B#)0q>a(?jMXV3nbDb-_PJ z?LRQh;V!8IFFu4e;mNbTw>2@X1l6KE1wk9hZN==9k+c_6kJ>8O@*wPPV|}gG zkV`=injXAdHF{UUo^SB3R!sWUWF@rirYv9npX5Sd^w@%%TGtJnkyni|!1(l|o^9E! zGFzWT!|Ky?g8F#-rni)?aq2`>td`J_q`Q^}g*E9G8Rs0qKhh8)c`l&w3#SP`b1l%W0pW$$d@qbjccza#+yL~bIeXnlzq zH44?#P#X;DE^K6@8%Y%uD+sk1u~Ov;8$m@4BoWrj3a$9k)>gE(^=Y++mP)j~Bm@YE zB7!d{R`IPRuB}w9qN4eK&pCH*64+4f-+unj=lT5oNcMMU?wmVwX6DS9nKNf7*}P+= zsjhZcQ)AA&9B}(&8kNV2alp{yaz4e{i*n=2|MKf=6Yb|aetp4@vP4dX*L=44Ou<)Z z*6F7^4`lst6lg4dL36^Hc0R>(_Zcc}!|P`owIlPLv6|71)em@?tiILHpsZ-NKL-1~ z4E_NaPFzcqVsP( zhC3;OrTxs0&7!Jpm8BoZV#N;BR$2C8LC!Zg7f%L3^B`BkBFNq@sy-I_W->7M;{g3? z*7#Uu-N(7Jj*8_Yw_-!&Pp)hXXEUFvIl8fTYhzYxV`gh(Mr&iA*1Gom*rD=g|GM^I zY~b9FYatiQJh8d8v43l0zt+a=*2ccAjRRUC9)$SGv2TJH7DZOj!4wY+yQzkyzX7;0|QAbX!|J7v7QZ);;-Ysb2} zkN2H*y|)7AF1(RlU~TCw#-{Ct)Fu?QRJeVxq8rPbY&9|&Xy7J`1QNcz(+ z70DXruN2)5vRE+-xmUxMg8p04J)qwxx)=0YMfZX3Q`88$Uy-cs{Z0`j3p}9c5m2L| zX3#Q4t3bb3v=;OSMNfj3E7}P9qoQX)4=R$&Lp}4=(0P%>eFaT_XQ45&Zy>OpcLI^2 z+qxN-+(iOdc(^;R-RUg>J;S}Iyw z3DSf~i^Tm>+ZrD`I_fq^K0^=DJ<086IqQQph@IzZKZ#mp0UBLfEb^>Kp}GzZn#o;v zwc)hHnqLg)slCkSm*9v zzbP?>ttg~98D8V=6#La@$n6{*UGIV->lYR7C$eeuba~5PGn5`{2z&MovU*;I?Iou*Ia$@o*gt2JXl{qh z5S;lpz_hwY*OCIp%JQSK>S12dBV)@1a50*g+dL|@lxSFtBw}YFGIUEM@u)mVdDrxn z`);Jgtm@ukvaq))wHk<3rRVxUDZX0VV4O3!_)A;dgclqJD}~6N$xI%+_O?pf+h3h| zQy8*j4iVH=@+$j7+De`W&_ARFk}s!z4bK(sOJ^j8OF;wWEpKGVNu9%Lo^E!!Po3;nW{RC56$e@$EK#v2^E1 zG;xT;N~KT-gUj62oplhwm?$C*JClweePT6lIuAC}RO#zt5F-2L zVj__{eZ6|Vj;$ASh}=2r2Wy*VyS1~=2wj}tVV=YO@p@K*I@Wj;&krlb^K){&I>_aPZ_%*LMCiR7I|w}gNfI{5@F}m0t5>O}yjX)~V0~f~9$6=B zmv;usC%x$DL^~6flg3u64`&L;j&FPP5XSiv;yU_XURW$u&o z&Ro1;KS7m;rHZq9g*t@r;5z9rg-=kBQMLT(FU7!Lu9R$Et#Fvo`9DJYk>GZbL;P;z-%B#w&%2TilxlP|IB8h$ZX6YEER=eb z79bqYlnS0>^<-5|y+|0fD)j-v2#0dvr}P79;9F&s>D*n~8$Y`+MA+$cvMVh&;g_-T#V-7M8-7*) z#96ad8hq{+fLP4E%I|CZzQX6H!oWx2v=W)Jnpm5zi5<$)Z5-Xu0eE85w zyM|yg(Xb@bS~#Sf^VQG2B$E_xU@aL$ zjOT|kS<(=BpGU72Gku)pY_HXVm6d+v%sWb0h1-TAPjj2T6!bg_qcTjaPmh^EGSPv`kImBFrr z%N+Rud{aCj+~>km$#EsN;}MRe%b1G}+(qvZ9r&*)9at1l8F!zfEy}PR6czMA49acf zooFL(fsVY>ZRCyF$UBFTm+L0N>j#@j80LUo$6n5qeUkb}A02^Pox&%(55c1nStoSp zh?*LRy`k3|h`piL8;JGAFkdxU+bk`DugfDfnnSftct!`}%c&+AVRam)79*idme5vp zsn^N~KH`K)aKf4QJk^FC!mg{bx?`ogQrNGT9Q;V+#W(m<=04qi&_6pmz9yX(g(fR- z6v&nk7J2rjKOt-;9pRKo%?J zM}{H;QVRz)Abam2ki{OFlS0Aq;&Vd`GP+L7>eYor8T*E8KFU^y_-}UVZ$-6ZvgOn# z0P66i9>B@}dnJARj)DdJ%B?kznDc=6Jp~g85ywuI`n$X!qQ8%*vjHL5oAT&N>Tn`h zNp%`zGZ0_)8P2?RL61;l9qy-PE-sGVt6D6ZDjZ~_Ic@f5cUbqae6&AC?1VdItFUY5 z!V<-8VobM&>&QZ-pH{cJpK@WuUMXaxC}gIm5USgSpp(MX?F5VgL`K|Eu#{h?esmvE zvE`sYmym|Jloi1*pX81XY@9fE*e%~`re79dPPJdCbXTl@sI&vC#Q34y2<~R!DnW9- zy1Z@;8sw+d&5=xuiSR1K&hLHtxn4E*v~Obi8Ft@?J52Mw#bM9A@#ld0O`*i;y+TfS zjgV&dVuw)Xl1L*co5`NhcnB+NCW$;>xK^hgm-3+s_l@$FH#6j8TVtoe$f*0deQ&pN zNoB}XaUanG>4+k_^ZIHR6lUPYfeZfxV^Ku7X^%Tq^cd@LHtl;?zTq4AbiP=b^IF_h%jzaz70X{ah*L3PpE4 zdv_S!JON!bx5Pyd<{vE;nXSUCiqfZ?c@yak?JuDwX%}gDt4nFb=KL8{C%NHA#10oc zv;X}z+xFMxL#{l*spZ7Mw-D1s9ihr6U}toF5D?rINd)tq!CRfd&CdQ?B;-wjd6SpQ zYuhBog5R;=MhV{D8T^3-OFKff)3-^yQH>RDjbP(|9F^{og((1yBKKf6@`E}_3%``b zbV!nWsV3~;{c7S5?$`cZWCX=UC!0&frz%ejRiAkq+kc8HT3aL`+x=Wan7BGyWO(AN zeBTJ8Q~e@qmr%@jGh6^q#t+)F&fsTJ)toiW(70a9zyC{4-rRgxt(QmSUh<|ydT-|a zxQGZzyN#EE`Vu+cs;_9m%FcxEbW14nc}cjPgfsR`7^?L?_d(ZG=P#BdJ8(d`RC3wn zL!n0A*H`n-r;is6i6s?rwBzC z_EW!MdNVZBzu90^HWO(ncbC7eMev_%r9OC>x? zjMrZ&i4?KCq;jPs8lw=_( z>jdOsXCHqW3orUO3Z<^}ypKFYNNE@Utorxjb0-K_?dl&LF!`Pipso$5;)Q35@ZGf` z*EgD8sN;4Q^>G?+VK%)F7!SClt-U4L*cW0jbnq4E@arZv|B*7 zL4hV=S5=p}FS3KIw^g^R+8}1|YBqcj0EZ+_y_ms^aaM$_NG>^(6<*J20gO>YgH_Jk&dDIkF1XI}e<=!>u$ogTWE_>?WrAwclqO1#_ z7!Ko{jT6v8S(g=UxXbrs;d8SreD?JgKA9%)Mb3n`vhcat7CtL7KVb2!j6NXip0vYX zi}$w5Bo|7I12_EDr=O{$R~#G@rgcT+#Eh2E=l73{Y6Y@ zzS4#MD(Ii86sJoeSad&zC$SnR9Fr)xKAafFWolZ6v9yQ9tU8WP3@;BSF6>p>HuD&^ zm)(ttvof%D$_k8HkhMP`oY8Caf~-M`G6>5{_8zq+Yk$tSw2WSpHAtjQS?SZ&f5cX> zS4HOPP$DZtd~SeDiBHIy#bRPmNVa|rr#pEoYhw}jqcao3PK#v9ygK&vJxbhnjI$z# zwNY|h<(D}_Ey`YwWD}m*_^%{=QL>`9j6ekD{40b@;drI;mqB-7HYOJ=0b>L7+E5VogZz$25mI1E0E98z*f; zx?y3+eP6mpBz58W{gjj%;HGzJLC8^B&y%QOQTHk5!MqS%PgirZeq@aYB@&*J!DerX zx;*ohXy)@O`&UY@Vygw^P(D#8)4O~z;O{ACS82{9N0Kub-7RN7@N?EZSC}4H#`=b^ z5k5PaQQV9@o|h~5&%*gDUno~1DnsW z5GrcqLQ_3krWcXoW_C`_s&HRkOkEC292^WM&g>N`eV*o;b2h%u6X#^G!+tDQcY}B# zT1a!v$x}pg&DmF*>!3hKGp#ibyV2ItHPsJBGU*<8;ZEd4XsmfO*5_2H-K_R7l8F*^ zE-bA|t@MyvJ@I%}Hy(Fm@E%o9ulA~*JG+d>OoOO;SnPAy>U~=m4zKR1-bFql8ZpE= zSK0!;h_`qadmqNWBgd54Nt{!V8y)(Lw8kM+0yRyuq4BMj!9aRPMyT`|>mCPb_sB)7 zEEk8WuSYWf93A>xMdmAdCn}kMgs>%7*pe?6+JzUYpQL;|B-@}U$HJ%Z8Jr?xzA87) zvu6Jp?MwvoKl#;h@g0EVI#?{;DB0Q3XIhDLlgbKrXT?y|jCw**!}O^5n=%__*Cge4 z!+CJ0xb^wF9aok^<0B7akVU8A(D;XTXuRuq%AxViwuL1{J~4RmCwgeSt!}#<8s9F5 z#<$C%@tyzT(D-KW&^S|843SFzZZj3Bo=V{iL!FeWSr|0IMm)TWsxzbsUB*2LtEOzG zTm0NdQk{0|J7vKG26^4-K7$FwaNN1FCC{kT?S$_>sUz4j7ge7=Lm0YKCwwg%MUsul z=8s7?cI|m+=SQKB4=3CN$n+X}{pNP!0U=nvOO~#N5vsu#=FkQ zk)8RHCd?C;3$Lse>k;l8W&q7@WxC%b>()n z{%VubUMun9(JBwE%RE~3RgYH5OF2tBB_lRTTv*|*>&@77*{9r#3#(#WSb6gcSm|%i zvu5kN=+d^%mK^!kedSL7RdhqKLsexHpIl}ulYHwUvS+Pmfse%ToQ0j{qpkv#O2P$` zw<;(GqCK77{aek@9#8L@zq+90N}cS8z?8wxeMKa4NpVLs@lA3hHVY~3T-N>E=e%V< z6in9r${6|dRBwMh)r(`%WT|(kSMUk+0etw$l683^YXcKVTnDsVJ*Wm%r;F=}g(~HY=`>9~%J;Qw#G7 zKeh&B%d!cO*OBS11J$8otgm+oK`Yz#Dc5kc@`=0kbwrMN;gJ!gId;5=oiuXAyZxmWJab*gYjvMw&$>V+ zPhG-7jjT34NVjifAx?g|9(L9Qxp=($TN$a?KC@2VGge&FY1+Qd{E<}Bo^K4$H_A?A zV~IC$1~IF8x15Lozm3oLs(CTgm}##QR3DNN?r-wfslSP$=qnF~8vCbSaq8uug1)v! z|6XP0|oNV#T35ugQXQ!)E>5&U~kCouJxgKYPx6*(gt!#q<0uUc$%P zm+`0@0jK%lVA zr83k{vmtd{tznX(4T8F5=n)A?o1weY$B?1>(qvWIUuilX4$_ZHHfH z{{R2}KL`F-a$qo}GCSNtQ0C!chbxL~Z$+Xc^;1*}%29MT$WbJdv_XnS_X-3KQY5zg zhbWRot-}?GzIdb}+3Y<^Q3m71F^YZw8meeM=4p1r!Kt^RD z$fzs^8I>g4R7yZbWhBU`1VKh646+cG05U3tAfqx2WK@bkMrAn2 zsFZ*#S0h1|t02heg+a!v2*`L91sSg@LB^|bAmh~pkV(vmpi`7DQ$UuhsUXYCG?0CF zI>^2|17vxQfh-5JL6(C#Aj?55$Z}8*vK%Y`nH*XOvf5e<3TY0OfJQ629aN_14v^() zDadkl56E(GFUWFmAIP}Y2r{lM2U*%CkfnVDWNDj0mUb1$>S!&dB^&%)0`>;rK;G!tc-fGP=iL;g&b*WTtp6`_?9@Ra;1mp^YOpTdjr ztfy4DpC{iamorZ?#dv79FivLGebRT<;kyUxfi5}R#SyOoa_9;V7EA)gbATA`*NH`3 zVpLA65dVMiAB^=huLD4nwAEY#x4GAcokQ3->LN(A&@hYOV` zs9Mo(t+kc{rfIFQ>!o2HVhwYqG`u`%lkd`OXp21VOI3lvGqy-|_0+=Ysy<=&)7TJ8@ONz1)ik+j^n zB5Aqv6-mooqDWfqEsCV&x{7i@mR4G>rInUzX{F^_T4}k950|ziE%#PM(sFN8R0uLE z!$3wwTCP!%mTOd`>Z8SKvR^MaT@b& z{kuv3o~iM_qg4ZX&-&$PcVVaKC8*D=AMGC0ch+Iug5(%&W|}4~XON+Q*o_KG1pnX3 zUF^y|xmy4lbGX#?-Jr7-{Sh=y(OS^CilmL5p-9?TM3JC;YleyzXqMqAD=7uGpO#Zwpp)b-{k;KPKzzOo_MfsC0QIE+sRrfWMYT zsxsu$5Ovh=bLEd1@nTili;pDtZz$SCPoss}*(U`T6O1K0!FaC$k?{X%MZ*6!MZ*7$ikd;| z6$$^JQ6&7|q^K*e(SmD>k=AQD$Ojn}X}w0J5M)%O^;)i^^;)i^^%^~K-EtVldz)f|)MUJN zM4-muz(Pk0W-{+J@t%4b@pk&TGDU1%Fp`;5ke@QJ-l7iB+9Rb;#4g9INA%b#Y-O;F ziVl6xvu_ql5xg37v1eA>Ffm-#t1M(+edM8Ote&wa5tA^z@(p{EofvV5*)#Seo2!4L z*)w}2EH^L))GL$3z)LMlaFLRH?JP=Q1`RPE1?6&QT!msDimT9w+pcy!YOPP{B4XS# z_%SIuM--tc@}Hp;w-)h02-mg^^NWy&`Z#M48^ z+Paos*oTzH^f2HU;I)u}!t|6KRs3 zlnkl=oaD*sKqpzO9(0n!)P+v+sHQ+ZuN>MG2=a44Q-FlY+$M3OlkCS&MnH@@!vmT* z*(8fxPQ!Sa3%Skzo~A^u(*8G?P}|Wv5ws#-WSB@FDOG0RS9bOi@T^slNS{@TMEa~&B+_S%B9T6A zibVRXRWt;&PEk<&>d=RZ#6ole22%V?!S$~835@>r&_%oZuC#~S0%9UJQA~zocp`WI z!P*H&RrF$xP8S==eL|)0YFF1Yd(MNYTPin3+FGfU4tjm<$RUB6j}Q~F{kS)+G+Mgt z${g&eIBjTN#ku|fr|a%^T#3y*NM73~f*TrnEo)8IxAL){h!FP9!5cC{1W znQ)~huXPpuojwuZOy7+Ujn9|z)P~u==S#Q1dWm#6cK4rEqk-&_0 zu>xDxr~L+g>bB>{4v{~D>$V4D15T+WtmdL+{gcy|^-E4$mYtlstZ#D4vH{77r$`^0 zbz*GTDe#3!*D30JYyVT!_tt<@0{J97cA1kbUN$g!!m@pmLzm?wk6D(RJn|Ijm9c|P zQKwrDKN*2o)`{zq{g(|&_F1-XGGkdD9@V~vAtACT^h`6xjrq>JOlcA-gH9t$CgQp2 zw{B;#Gye~;)pyS|kLZBP8Sm;}j#05QLk<4_-~X9>SS+>kzv(}*n>6{qKdA9gk@`n~ z&c8}z$Z?>Fiez+{tmtIWMT$m&E>?5~Xquw4L6<4|4(M`47lHmu(f2_yMb)5LimnD- ztw_4VwTfgIu2m#btWMESKsPA58x&Xc8_+^UzXvT+^f2g0idKSdQS=1pc14>&KUMS+ z=;w-F2i>LUZO}c6-UIzw(I=qaD9WJk-mj=Xs8P|rpg$-&2=t($BR~%+Iu7)Rq7y-n zD>@mpQqd^TYDH&&)+#z1v|iD7KpPZY1bRl%_d(Apss_EF=xWeQispg-tmsD2Hbp-I zy`ktQpuZ@(8`Q4oH=uVE{T}qLqK856DOw5or=qo>W!g5L1pQvoM$jJ=Jquc{Xbb3% zie3gisAwB#g`zh>O^UXI9#ZrU=wU@WKz~y70q7A$J3)^s+68({kqjV@E6M^jE6N77 zD9Qn?R3yHS!+7uOl)+!PY((4or13jUr2((_&aL|*A zNEfb#?XUd7F=B?)qE70O zQ_SbrrH_?qhdA@*u%J_aDp@r^dr@!?1OVt4pP@rbb#m3Xdib_mN81l1Nah)Qp)vgz zWb#Msvh=acH{?LtCO%l+*38#x#SlL=w|E#`0DqhpWJN{{UW4P`!E4G(H{ug_Bd4U| z=j@8$bLZvuTS@C>;jZ)_@v?At`dBXuV}%SifoL{r@rfIzZ;2ybzMq-q`w{nv1?PNf zF8x2jrT?x4=X@p^THoHgGefte|D>0pThqsS8G1}AudXAvdKPX5IKrOuP$Y2`7+CSbMZ9JsSSXrLno-#|^=5GuvFQ*>iheDG*$ zLrVTya$xt?v6m_Qa0+Lq8cIPsW=p#dg6veo*?#Q#p!YTQLO=Frpqm+RvjWTg_x=Pj zD$O9HqN5c@AhH545@u9h@ngS5EqQ)-L6&wj$kLAYV<&Z3CWNF{?WB){tS){pdqHzUE*E-RbhlJ7MZ@8ruH`g?|(zUeqmPlI*9ijtAK=LF} z;sLueDo~q>@&rZdbe4LrmlJ?214-w5Bz;5kdd;KhV>!|yUGvA}oMxDf>o|DFysLvL zT3sYDmfxJ4BBeWK^^26Qck1ehwdRPsi=%kp-P3cO!mlgD&%w|QogOmq8P|)p8O+C9 zNjBc>aL?zge7P4syPR<^JCj-@ew#BM$8W2hb2m$DUggH_ZxBgLUgb7KLiGcY(ifb% zzw;^Nsw%%+s}5u?M?QwGj11)%CAa6!llc%=R*|)=$j~P!$>K;|dsalQNy0NFSH#*% z4@oCx?s86Oy|TAcxHj2WJ<3hOvtM3>t5tFj9+EB!uTiARN*5IoS7Q@1v(v_9Ymb$K zy$dMD%%SA!*2vILTGK)6mr2ys;%`X^7Jl*y@)*K)Qx;NQuk?Y^;JkT zXsy&F>U?r>oFw zt$yvRtb#qdad+1CIJ_xqdl=qWzoVbW${8OR+ge1R(8lZGG+LyMZ)azoF(Rk!3@4hy zy(wHc6vb6YGoI!boWb~Jj^-DP+O^<}&!VNR)!h6p2Sqy%bp7A7xjhQJv)ip3|DH-A zatjv@ZOxRhmLjH9h@9sUqdCu)m#(FVYdM@3KNA(=h3c=g7j-XD(e4+@#na1Lax8NC z#`LjTgHHW&x}fw9?*0VTv7o||inDOK1Sig=o6u!4H`8mzN^e0bBNE3-B*M4uwH;N? z6)G8{iPN*ehe+~hVr(v0#dVc)eYhY$%(?aaE>|p7g`AQj%Sl`^VtoaUlz4kp1=D%GtG1((rIy<#waSn^02NBgqIcLt%;^7>dM!8zN9lJ8oy>R{|*kvuPF#SE7nB5*M{ek(HY`6y$C1K!zs0T zTP@*XWF`;%2D9upEWgf*Xnj#t%WIh=Ux!B&?f|T68=YH-tA+=ftJ*kf7{4qFnr9A_ zKl}c;?)AQzE8XW?c1nU~E{$1T6(60$H?wu>B@S})#nVzPwBw@(bIoqv=pk||M8tQW z1Se%#j1|wy(1o%bJxS00nWlR+M_Z*_VmIfDB9k7YPTsPi~3Wdi50TME&GDgivQ*bsO!@wP+vdq^LDvA zQ08nM9V!IaG0Z{|fG&jHMN>2> z&Py_zo!t7iX*_Bhk%!sdLr@+T@X)bnDt~d2Q@1TMK3|f`yG7nN-|FF;{rIM3SzH?< z@UDB_-9Wo_>SYs0frtQU#D|8OTGDf-{kOa#9+HCy!Imm#=9cWLh;toxb@r+$5X5lm zmgEQn@M9o4bj0n|QOS1fZzVK&1($l(T#B(J7J0R)-|)Z2 z;yD+i^osTMVmm5lc(ou2i#p$n_wtH5^CivZGqR05DB|`@)n`o~Lv^3C9I%~3oJmHl z8KJb5CK7KNLl@F-ifqBmkUh@X*3erIr=-@33qhY~%NCW@S~0xzVrBkkv7PfjUJjf& zMB4a`pfW|Gye?Ptdyr9n2((NoKL#?&8$g!!XqthiDue936G8UgDWHhbli}6go9VwN zEzI7NcAel~R$w2*-%W}R0KKef%RokDEXZ`dC^>P2Z-I5CzGK;&qXPIJAuqU~fEvW8k8QQ}z^!X~%8S8QmQX%~u^7amUVx z+6Im+qFRYOp90DL;td%Bnbw|4q&@jVDh^hp=~#hfVZj=V6w?YUvmJ|-hV}WCQeEfy zu{VQy&62R6fqpeu&^;il!cG=38j5uR48j8ojzhXEy*-_t2cFQ}m_8P(1Go}YmVC?I zpw328e7RXo7QCJS+wohf6@l;WPZ$Z-f4+ z96r~Ny#cgS!)^i@ho1#~s$sAAVQ+!DaUGKs@ixP3gT;(gbG+r8y*0;M)5o%y(Iz84 zPQyXKY-$2E*1Wix+ zoH6Y_9D;^X$4t<%R!43#X+U|o-|rxGmnt=`yJAMlRwy?iL$u)Gtc9=bQz>i(z$KLA4$|9l-4$py1aCe{2Rbv0p?b^cI7?#p$P&S{ty@y!(eZCOR z_Zpvir4a!jnrV=4i)LC#1q3>779|WPKEXiEK_V~mC5BeYSND+@J8l-;M+aHyw+y*7 zy~^Du8P@bps38)MK=mwP9G~SbfTD_HDyCln+?kqqD!Vmg@6<^v9Lf|rp8Cz4Q=%W`EY{} z=Ca{}d=+af@O5lP`5gPzkW_99NntSFPlW}=Pg=vCyGl4BH@XcZ3#PTp5M<0P1sUsu zAY*-Z-Nsl?Gx1_)fNX5O4%AV_b8MJn`?Aa3J^2m<%<#SSZdHl zDNze-lsXG!qtpbDjZ%|AHcHI_ovOm+HXo@hwB-g&IPFTe+)o&r=DxE-dRrHP(;#QK zac~&zy5{`A)U-`lZf0eE(wIKB<5p3!in&o^2d-ojSM(C^zN^U--XYIxcGpv4k+(Xn zjF;8wlrfwLP8AT8Kb7)liu{?;ajS@F6tQciV^lmFYRXCpF)kbe_l6IJo zHsFh3R!|~+d7isU+Dhj=CX-r^pnN8h$AC;EOXD<=jH2iX-HZKL(G*N1|Cb-T1!N*w zM&#?X>HZO9VRE;Gg^4*s%1iZb*AtdlTb85a-P&@al*4V15k+i}!v(XMeMx7SQ08tE zX~0^|C*q&b{kykfGj1Fy%mCMu1J;LaE;hc0SSUq=+%&OZrbpbLUP<=mE5A!0D-H%@ zNAowMrf-Oz(UD{^&Q1TW+yUM<%5aYJZ7S^Pj>>#wRBvu`NPgYczaTJ8B}<_`o^;Ia!$cC`iSH>>O?;Ow?10wNjdrM5IVpDv8R#GRN9P7R#=8e*SKmJ42flxyH}N*_zVU&`eXEKX_`kp@x3TnuN;6-z7Jwkj5E*gzb=)LGF|KJ*3K z&2(0*tqPR}YW5xFtO#e|L%2CZf=K%o;n_9)+ZvXVH~xo9nUe1r6vvds7SoSwtqvQSXEVB#E#LygrNm41m4syL1;6Wf#x33?TC05Eq4v)t znla5&?GqJTQ+KPF)#ztzun{=HU=%o83LTP*9gzpmq1fdh4^WAndGnYG(>a6#{kdHm zN@BF5?3bmhK1L%Xlaz#ZwobiGI%B7>;L@YR$hb+1i$EqVE(MvikV%*+aJ7Eye2__t zg?{Y4e(VDvOS{~UUE{|-1v*uAf=zzxdw%T4Ae*~?!kmYIx=p3cD z3S@)sdXNpepMgwX9S?tu$~Qrlzmq{mMGUMg_8d@!(wpGN%F@+Hm4AN*&4*@I;FwGf z@v3qv_mZa;oOM}AXYV~t8FXs;vGg2Y=STK=!i?HS#9VH$cJ$QUSVlhc%eGSxKpt^#$khzsVsAG~3+ z1>J}B4h-&fiHU9X)T+nA9>f8v*bGmeB+|bkbHmxP){Wr5sfSlgQF<-CF!$2Fo<3Hp z5P|WpmsI+B^SI=wR8N(eM%iknv@JC#FP`K>RSJJb>4g2*bfu{k+9*IU*v=VUQKC zwQzEZtTf03y2!lFx0aC3s`E6E^%j{sTXkOG$6f?FS1Vgq9V}KRaF(_K6w+8}6c#Hp zYm5B_$S8~Kuvjs}wb&Mrr4`v>vCo1`>D~r1rTZgLSid1>55_2pf=m*e12RbS3RY^UFonLw@7Rx zhgb#7j3VJ+H@ZrJb&aZsn!jYqu)tsax5^PZrL*cPp0H zdWjlGx2j;Y?B1;^ zLL_m`3^x0^cC_hxbhI&EMw+w;^kVz&&q3C^#lT#`xtou_ z*1KiCVZB?{y{va11G3(I3dnl5m_S=t4QQfr<9g6!MK^&iQY4!QM&);)&cVsHg}glv z%vj{Q9o_Rt4M;t->Mt@_RQA-WZT)>at-6QpAiMlLd4Xwo($u-p*&9JV-(v)M-fQZW zGP}?bWNS}^Z7C!*A}|=pxiJ|BzUBpv9E%I)iSXXmmsOjnSqjadLr)?92Wl$WU>uR!U<}#w|Q#di^fR0W{ zb41t8sPk+y${%-Q{Wz7&8>r>n6@i%PTwcP3|I-oH^3TqdZA;rgnJ%NQzlwAW#j}oh zJjl9BG00dL^kZcjZ?UXOda>UDS$CNRG6stlW-Cy_YGd$^K*r$vK_gU+6=rhi*;{qP z;e5#5DPcvTo$_1a&ANM>FY9c&hxu|{N3YnC2;iFDiOIT8-osou;`Wi5auLdpyO|{q zn{}NeO`PrgadQ5dwyUa8QEHmpuyyu+c0nxc3<@V@$H}{CLa)H^Lr$Qy#@mxX#y!zo zjkgtkESjM=AvxcVt?^@J)y}3IbNyIR8*D>#hi=fdGr-GO`FZ*#$kbAb6VZufp-hOS za%Ag+0&uunRJBU3`3aO|G@$c?Zvecjz68_ebik;WTc4-5hL}NvvG8s{1~PKgkN1s26AKZBvkmR#fbs zxSx(?p!Iv*8ImQy`ydm%S1jEcs~?qo6N&PaUHuTwHPe(?ibtcXQgUN5n+$nLmJ z^yXxrj@zd38y<1-12t7m!|4Ox_6iK);kxsMW#y4WDvd$5K;-;KsEzD+J+ieJ2_+$p0Ok6(n;t8jO9+*S!i z#{I+6?z^kWL;IV2qT@DESbVF8+m?DyZpEU(@B-GXN2{;x^#{g0F;CEPlxLU-)4jh2x1{VfVv$ z&3yOscugIFGERm07v$f_j>@1&&;d|!9xPkrKHssH;1d27@ozZE(j=a&*Ia`oX25RAldtIIxKbh5rf0Xu-hSHMA-c+KjE88>IqoxD z$8Bcr$6>cU?7kKj@Q-_Qo%;94mitXILj^uwx}*Bs(wf#;-*)S=q}^pUx7D|1OS6;s zR9O6x)*QmT=ep*@c`rU3CnKG2EN>mm8y%Vgx~QEWx~B*ON_SR|ExopN))`&jl`r_u z;rQ}2G;-J71kyY8^fj7F4x}O*-p}NWAI+;Z@;3nw2QtH z+QXH$Gw&zzJHFMK|3iSE|B`?I8_6=Gg8m5)mh8p@PyDzd0o^jpP+Jgi>*87KJK40P ziv-d!PAA{8ekj8qw~-zsgP*NA_h4MwsVp!+-X_XIx%+`E539wfjk-tgb<{es#u zmPFhdM%l7O*s19}OXs+<7ciVDz;<5Xjs2PTxf@8*mszUYmYl28VBG;-7Q94bv?Bs+R)PQJe8OyAk$`L;$oJ;ofDTv z!p!EV1!VR`Ye2TQ@jl4Xegd+YWCzGJ;UY?4MxG~wY|bqwPRz(tHj6B55y}pw0Q>i{LTXyM#$;R^Uk3YG{s+p7YW1sH+w`-$$?d=vyck z7Q5I-?LHdSHx>I+AARJba~Mo5Z9dwyapM?}abpKhXLZ z**`Tys02N$r5p!(PSFI=^NJ?=u~Yo8sh}+yI}P-LqUk=G;m7JKN2m4j9xHjDUPW6= zXH)PYM|4gN#0Kef!gflS9qW>qY+XgXS%arddXop;krM;t?$ZX{dGDM%(Dkf)P%GX- zFUx-1j*3*sD*iB;6>(>!-;-bMb!s&Lf2!j)nPU}y=;a~oZm`}Z8HoQuI$Q*!C+C(H z4CU)udUxEmnAg4O!;wVU?5T?&>276R?z&22#PGGT15?}miBK=EFRzV^7{0RRU0eag z|IocFcigsCKjeKtHkyQCy4#fE;V~55T2Q)GukR6SeNon4tS`<5Szo*xv`|~nBcQjm z7p((XOZzKmyM`T0E|Q955!+&=J+SxKd4QJ|v6D%sofQwWw3fCtbi@v-J1r2~&urP*M0;#EBNL+;~KOzk~TSlii6mAt6`J*V1u}Vg3>ulcuS!cT#WY%{q(*(@Y z?i!G>N}Ip5*L<%JOo_0iTuZ$C#{o5#VEh$SrmsCLY_rPDe0Kp!)H1K@f@x}ME+*ui z7J2^0%$c&37i2ystJOoGlUP_#3!S>px~y0aj3z8o3{&1}Ur+`mUAFGH>YH8zPwmh| z-OZhwG*N$(#>O)p`i_FDQFduGx6(oO;ge>1(Pe@6^sYHRyj=EUddqvMZs3iOLb13b z$?Tl@r>^hH%8oa9%FxLorkq-0H?Wq}o_~uTOjx{)udj_u+t75A%BRkXVmUG)7UnYS z{bk7xABTm!;;dL19onW&I-C_7t4e#-?8_VB>UZ-^<+5lHwd(B?0Ti8OBtw_48EWTpjQZDDKD$5f$h#nAOL$ZW|20SAd z*~pZ~y&1YN745jWRwa^eRY{J-03ygG>vAq8Kh^Qv4P}YY0b-?uRGfW;d^*T}UKh_R zn(x#WUhZfM>$;|Ao6NR%CK4vK zb@u*L-rIA)r2(?Oo8k6}XVQB6cZx)JElpBdW4`<;(k*iNQz?I@$e$Vb=czd!l`>KG zJzXGW$Geu?*zg9m5wh~l>U(}l=S>dlV*kmi8eHMEefM~+wiJ`Vy#C(LX?)TaVqwrjP9m3yb2iweV0+ z);)dUdp1-eu8KKXJsnU!BD-e)@)5!8np~DaW0N8y2GsP4j2N9AJ6oPh zHQWs!%#M_f&aOEeWgt6cXf(G)dV4oJqvWV2g7}bb6Lk)NdruW{$7HwFb_yaAi%vlD zwlTR%53OMLQyXSJbRu6f){O-9*M=xv(9q98HqJfkqu_Y4KlLrCD`i7u?mLZqrfchL zSWE)WR+qc~Q171VPYP?()HY849=37Jgmggq*m4nQG&4-~SfW((;{{ph<-)FfZ*Tac zvw7aL`Fn%L&h)W$kI95HIP=`pxZ~brYjEr0^&52c<_39oR-Bn3v(|-cbh34;&QeF? zEoCLM)J^fM=Ush`SHkf}*62c+1&FySeM^Q0vsQH$49%2$vkNCNCAh(j-&1feO!USF zY_$oNVcp82!-TV-gkWXdvo&*eyQ8)wa`!ubZEib#UN0&5*d50T^xG&b7DBmJ|Tk(zpvyz`jZ0`(z3p&Ai9H=@EwD6^H!G-$wB0IOwsePvR}VfRd6wSU0YV&rvs}|V}w^7tJGtU zlm~m}-ZLFK!#J2s(cAN-bD{#2ggS1KQkA8)Toi@GWaVXkY&FP~ z0Omnn?63UT`$79?+TZ)JtNhsYAWOT^k9`f4t;3dB^oRnI6?l-pmX}9CMo%0-T3%iN zS&HjmvbnTf4l+j#D?zvDqDF}3Z0;V;0GYdo^Fg-Y&8S_%bx*zTLHUoM zZE6kM@?Q^=0C6NHo5#M9`>8Twk8oBTAQJ$#+n#0u5E;5&b^pwoJXHS!QTVeElseYGgVk{uE8VmD!;+>`LCUj_Xcz-cPhBZ>Js z13++P;{O+AZxiq*qp-$);uQWz79OkrHz#W3A1D`c!IjFjrkx+X8;hEO$CU3KbZ5fq`3i43 z|1dI&4=gOG?B^9$8hquR!SaR;Ae>T;Q6PRHTaVNAn~AFZ1VgD7=fQ9HV$VRXyNJ5P)ohQTtz0S2xP)(# zbm*4yM5LE~LwPB=9lF`8MjK|OP?@cfQ#ug0GY{N@lc`*JX_N|KTJaHU2i|aLOsJ~6 zwxHKTxn$BU!#ZYp!4z$@%L}IQ>okZ~=sdh_;LQH&KB@hm_S~Q6@O`)(ev9XOgZN82 z;#{6ykf$u3@-RwjUuW;`>&$x?^iZ}v=A=md#-6iNq<+Hly}2n;3*|{1F)69*c=~S< zn#mdD#+lhybCdi&4+D6RtRyGZH(%9P^N~FJ-t1UkO_?0SD}$;>roO&UD(MM?_e&)` z;@*7Tmm(w&xHlt}G>0$Z9R9mafmyu*RoorQcFKHz%Y_Y=k7dh6LueUQT^NIi*hgjwau4F05yYMf$pz})D-d1MadBPF?mv}!%L=Ih^l8I zFbpygSPn7~c!3{#5ooHeuU_KEUggKuf-ce620wNw$R=!JTV<0tS;I9XmPIBE3qar3 zv|@BToz0xAKn3UuMK^dE};8W;A{T+GQ-WEY4a&M=Y}<&T5Su+mXO<{Al54c4GAB?Qc^-(GlOx zO_?#uQj;ul1f%BIL{5ftdi8}MQXn;CAp*Q{COMGh)GnS$7+<3CUx@p-)XP{ko|7AP zx3OgQZB8-82H?djDDm+Mj=6jo>*v!Elb$tRh-*kC(Z(ddOTqGUpBMV&xigSIJ@m3)Ry*ZK~O%!uEU8-*7lLJd}49HRp16hi1fx5XxNlg@Rjie{n^4%XxxhveAnLn1oVCv;Q zR3xd~_R?3YE9%-ZqKUa8j3aJbSb{h4OE(H1WHAm^G{{n2b1bjI4KNMuZT%f4@}k*^Ml!KRe<<5^g z%my$rw@q-QF4?Q*+44&_Xe#%G)awaJs~_)Z5aJlNU%GxT??_SoRl%UQ)#n)>%iMKx ztBejOtK|L@$gD%(^iekHI}L`#>!K~*)xATtqUBNWV)eXOB#ZS@TY5rpXSeCt0F>}l z`|P6CdegC-^s&WTwIfx<536W+GuFE*6hD}GI$bLiKTKyQBA>AleN^-o70b*|!m^o$ z@uO@`Ty^XhnQ*k9NeSgk*S?;Gta4dfe$^W;fH*I&_d_o*9JQC`j7zR zt3MwS`(cZ(|NK=SeFbQX=H6{3AD&ktu?V2(5IAw#|bgt`$3)jyTefJ7hq zu*Fw_TpmAaQ61>Yx{otzuJdx`RLA&+uLWIFzb>T(P5iLMSA!~fXAtU+;CPnvj>A8$Lw!6IIUNF>NJM1qwOH#mhbdB)|JP|#UldE#`2C9L?5 zrBouuIFnI=o2^LQYz*oTKXhpe#(aR6d+?KxkyZ&jpG1iaYHkw=_5{f zb0mJ=3>H&D?&;a_`4Uy`p3cdy`8y0UB+uUo^b$D@F{t6lQin>JO6BSY?<<(bZ^(VJ zYH^iwId0U&P4JB7KwV2#mGgPa`_A>j9d#cMxbpS7j|a}ei`5cMC*IZ<$NO_bK~_f# zF;~8iB#9*M(8$oEqKikIvRA@R8Qw?rAmvGS5wz!U9dh3(YxtW}FDo69?-hF!HKbNF zA*+S3k{;vT_nq1XH!4ov7&ts8pMO;H7%FrO6*^{0-RA?H`EyC?E|gV4yJadGcak%r z@dJ{VMdODht9NqZY@*+Q=COwPnjxPQp{7aPBG*JhF8?iT%zy^QB4H5r{{Ez&#sJ@;DYJiZ>On zW5d0d=aV9yN$;&W+Mc{KtaN8iTy04_otN`}5puW2EKv{K$ZfwXgT7{iILGS%S{#f3d9L&8}1{FxKqy;q;kuSI1{f zYd?f~R|kIW#URPyzx!V<32n$b4P@tfzT>0wsUQwDF@qLIz;hH`0lHSv-Jqq6nOT7s zKtEGG_^+UouGbXQv<;z`ffBPNOq!w%p*MgsG{s_&tLP5UY(>8SRVw-o$gCN~u3+|I zV$JwB&}|w!l{Jj@H4^p%&<0ReU^Zy6er+DehTnxC``Vp85}Qa%u>oY?_%mpkrri!Q z%Kz}++v&&lq5)Y72W0Q<4_dBij{(_tPX`%KuL0Sxe;3I3axchc3ipGIFU_Fn5Glt7 zka@lp`^@DU_9p0N{l?!x_Km&_W=3xy$mk6M89f?$)q-K=&&8ogcdc^h*u<1oT@)G9|FD4FXy0L7?Ah zY=Iv;5_FZ;xtycBT2UBujiLzXdPPwmRr+Y0k0$tNqK~G4=4jffe%Lf0P503Z(6#zr z40N4+mz|3)K1lpIoZ19n)TR48$h7SjrInnrG0aB8`6Q`>nalRUZV$}()t zss6~d-g`SynP~ze{<{eMuBlk|M48j3ok`i&hBx-Dk64nf^2bPdk{%1s{Y0ij?Axs3 zrc(Of&hUiQ&*j^x`1tQC^@*yM#FwXrF55pzjUy}rc+|H@$vUY&wFmXfQ*4UFe?Flr zY5gpgs9gkhD)0Xu^(kL9_4v=H3CR(U2}_*%Nr-A5q!8SGY7g>Fr+zdKjJ8hw$pTC} zjmEDp!l$sWEsg2aV8?W7uw#aFzL4JuSs%0th>xk1HJIy5_!s0~r2S=l*PcM#n8-K@ zWV0LDu`-cyCTP6QU(N%ys8F2@vJPA2$I6W7oFO8ruJOYfK&v!G0%R#31x-+T8$fLu zyTy-v)sL0tbhgs_$PeoUf1c13V)kbA4gg)C^o{}Uf= zT>`QcvKxJ&(yIj-y(NC^PyN_?Kt}Hmewgf98@<&aqqhRc}LO`OC* zw6zn~o$Pc6Gfc1LV00%NQ^gt7Abq2HZQqED75XV@;;#2z@(AqF*JVq3KUxc^^kbcp zq*F$w-I^)ds$D>NBWtuP!6*S5AHQf0VjNhyPsO7yL)5FaD2Gzx_W-ed&Lc z`n~^A>W%+V>P`Pq>djv@_4u7@A<61OfFH5fW6>|>q}JA0GTTUa$Ss>KyPH#3&xp_8 zLWl}j=JqE?+(q(+q~bFBtudB%xD|+)oQON9bKApR6yYrstvakE=ZLw)6z|BA$+q&g zF+mwO%6%29JnpMlz?6ywOsQDFl!^sRsaU|&C<-hoZiaG1DYuQOlwVQEr^(jF436ZO zf4oWD3&Efq7^2f13=slfQ#2lA`qsrD8~rZ_nU+-xGTllR+AUUA#tzlAEg;i1*88!W z{MfA^(=}v=&r*B9A z3Bp`I8NHYMus1GfuT!{{C8FLmUDEcRHC(JS%8MuCjp86cxK9yC(veGg>xX8Ez#`LXjsM(72Y#4rSs1-OOwKGt9%z)(I}Bv>iv8G= z{n*hUqj$C+HW6g>rh<%~+*DYm^sWUNy&w9qxBIbofsCGb_q7xcgN)uvkkNYz6j6Fx zK}PRgKlVdER`#Qe-at{|HN_B+(aQ%Jy`i8pHFgBZ=vDZ!vSeeilR!pKmSQaIN|4dJ z4rKIx28s=lIq082cChm;P>F`U2l}?60W8qklHnnsTXjZM2udg_2Hm9SRM5?e%0Y`1 zjRP%FG#PY@BD-!%?BeWv&E*x8+M6`kG{B|>o+8~g+J*ua$i0yG=+624=+s~ni8G%0 zFQf(=LQ{hcFg4f!OFG{TcESkehjpv+&99@)@()G6+bsV`kj?Us1KEb_W(T2<1CS86h)6G0r_+H9=r0k<^ z<&`B0F?S70NT@MWOkrgWmHmn;94n0@G%>yxmmx&lwM4tm8BB~nj3+RLpo#HE$c}O_ z)bT76S=j><882>`W|P|Z9!)$Ts(`qC-OF8*c#pd^> z<#-209+_Wo*}tVUtJY@$0kEmCF-o z#w7oN=-%8Ha%<$7W`Uy^t7-uQ9a9=wlzOR~$}piUQ@`q$;7?jVlP zbZl&Yj)&A?8nu6sqikzE7JG$nJ6+{>Ic8}ocATD)-{o<3{{7ID{3bNNGc+Z?2~Ejw zU`l=igPre2I^hJ?ZrR9{P9___)8!^U$-oUCeD}bc-<|*F;*+~3-KXwMlW-QnH zVKO?{+(oRFEXCuXzbHMKv6wC(b}|+#mWLMm2FP@Q_xv!Kv6wE9MX4>t5Kz0)6BA&g zCnk6nTkOY<1Q|UsuCf%eLTvOVfh>g_mbT5i?I6=5deN_pL)jp610xq$8ix)8S&CxN zJDL}fF-?Xvs(1d>}DYD(z zXR9_W*lyc@8yophg?XG4Q^{eJ&f9L-GyQC_9fg~L>Z_Th*Ub^UH((qX6{PvYT{~aw|eCa#acH3Ee?@HA1Z{NshLwe`hzT_P( z{n~f5^c&vM(rP5QIjuK;}|gq|fc!`avZ5WB<^s>$8AdTP_`i^K9oQx#CBi3;kS@ z)&aD+2K@)5{m9B&3glelG9WK+b&@Mxx^s=cPtpc}oNL?w$I zCl^64?_!|4th`PjFYksV_ghKsO+a4W9Z6a*ke9a_$jkc$(7jgPAAr2PjY+OJXU~-` z-OJkp$kX-%^76z@dwE9#^;&u2p}oA*lH9YBTc!>6yY^7aJs@(u;^+@q3Q>C(NtOp-Pe$jdtm$iJ8e^q7^G1M>2g zB)M{W^jzuEy}TbJX+Ht-^6muk@|FWVZsn~7^78&I$^BE3D_y#mHwK>GzX*W5yuEUFYhrRFYot2?#?>^^aYc&HUcd+Xw>!<6;~KE7O2ahy?{ClIsoWOgANC}%AmAzMR#j9Vhuvw+&4c$!IT4FAF>7if5>88D(7fK2 zhc3Ov8X&3od-5f5tR%?9;#iw}_6pyU_f`KQmRuMeQIwe|)HBMfitE@zeHhsVs8mf+ zUP?+Wd`tAO#8|6l+CPk_x9!4MQn)qw#!~s^rJ6qOO%995bpQF*!l892<82<6TS`SD z&8UL6ZCDE5TKdivZeuPx@G#@?w~To!MfI;Y^x7ps6OJr>OBs%S(N_g0nY*AUpS`tA zof#SN%lTW&Y};Dq!mVYtCz*w-mHR&toQ?fsSf>*f6u(8sO3yMerYE0WxYlHA9EynS-W z@Gt%hD#qL5pcF&?#6Gi3FPlx3>1R%Rm?=`B0z4eR(e_7 zg-*Mr*6z3~#=h%eBOM0iCh7c(=COD9{DI1_&^UO#P2PEH629e1X|ReR#JYOqq|lHh zewD`sYg`is)7@QQ%DqqUreb&1+Dob6%PTRdbE)g~t!gyLxV>GLHL#;h#ne_QcH(O9 zKzvBnuC-Q$(OI=zYptMf<=0wkar>Bk5Xk3LOWMawOVxAd06lFImlmk!ioN)QrF|FZ zQ#Q7mt2k1CkMadXViy^m^e2z)8~YxeI>I{jc(XG{$er@3>ijVbLGz>@xi6TPNQ|;r z*&8$>dkk5Aa$(RF$+Ca3`0ny?+j=;dp?B0pkycU1OI7)uH(Z-M_Df}-L3JlWqP_@+;fj^vz1jH2au7vax&p-h`B_2%jgT7>CQ&ba>XL` zf|u_6X-ZVUE}cBLPixP3j$S3i=N$&ALry5zBn&b)vz4@Cr z@GFZ(YTyoP;Pu02(?C)2aGNGB?oGI|L*MAXzrAC7EYuEG>e#0#%{>yX0vf)HA8i?_ zi@T_c^M=nZ;>DX8_8n~3FSRZtTvcIqwV1fp;0#3JU*kiyYGrDb#)04}t9X2Z3rY3M zabb)4-i4#iFeDI+sZeXL96mb^cOTzU(S4WDM=p8PPF9)wywT%E}I< z=)agUt3lA@kEDlfkocw2+V+iQ$byGAoNI&FI;XFZQXO|SIF7s1fnt)Cnp=4&=7);34rGg3YL&1czxi*47bM>b! zm~c)z|E}eWD!#D8v(EzPVh6SAoW8H|a6jBfRfXRwzy-EHBA_w4;>FMP@J2bG+;xk- zjP9u+olA9e!zTgDxLtto=7f79=n=~gAHvfVsIGWb4Z9G$MXQ$GVP3VXs`qC&qHZg( z6x>BM$~TZe;FF#b8{EdRt5R8AvXD|sftn`Y_V@e*o!_#S zHm}pA(_#{Hwb`gOr9k$3Da!L?zbP)7^#tCB&!z|05<2u5I^D79nV?H0D6sqFBpNRT z1f88E-^DwF#goSHpDDF5WkGc%V(3l)8)IGM0*lyY9fon^iXfFYQ7`k^^b_dinFxZ%}Ri+z#qDSCRDWFqXt&!oLTcab?vBZ6xL|`35`4J33x{D)1w{t zTx%~9khoh2rYZ1{dmWdqsmSfZYpY6W?e}OXD{^}K#vyO3p$+{fV?Tf-#V(kq=+(W2 zHWCip_3lz27X(z&mkg=I*7;^7*Tw5CO^2u)`gb7DmGRc0Jy`4xX?&Wv>lIPy=F{rx zHBwnnuHMWlYRauvoCdx|qBha2iY{*~2If5-$Co6gc~POW^G%GymfW`FWXRnv!{=@Y zYI1c8gCmZm&Wg|1=J%y#ZB5Z5+*3rOY^q|6>{m!<6i~qt>p#DDe!T9d(ivQ8-l}D;O!lBR#9X&xDN-2UK-HOZ3uUQ@|TC*XH{jQo-nw% z>hZ956Y;Hk!yvmV)3`blWLJlS%L+4I4I6)X(b|47?QxraKYXq6VEDqnOEpWTy}D$^YieQdK;0GtIWTUEB#A#zv9k$9 zYY|A1q~-_pA|@TnQ+R(2^+8_0&?qQf_pKLUHr|-e1lnM^=O($I1Ulz3eW7Lftm{e`ul@39|`Jz9h}pvjCH}X-;A=9 z$AVdFg42Ezoc@^J8F$JWy`;?g$CS+Llyw;{n*Cwe_^Y7f6)J;njPW{G0=~z< ziCk;&yRc(ZRdB`kNMLUZyHBVJCq6)5t_?f-tHR#?(Zn@Z^t_<{aaO}=<6jMqTz2u8 zpnlcB_CfuF8-jBlu$*z>t7Pv!euUg=eOp;ILT*@P+0|QQZ-6nc=01}e8Ux{3$m*v< z3yz?D*M}2d_BIVuDc|WcE~WYNsQj3RDG4rps|;&AlpsmTg>lQLh%tJ2XZkj?8*n1x1!8|##KSKH{HkuVcFiQ_9azE z$25t9p~%LfNyg2kph@Uzq$6;uqal9lG-)-ZOtC%bmq2|6{X5Y243Y|aszGvrbqIAC z9LQtY=+R)sT1jd_r#LfI!$Ifm0KpN)K79W2{H0;z13~AvNt3WS@zD&t#6?Xl-Lqfi zBCx7V@4)EHVBbmIW4}Rtpu>I=TXA)3+VRyw`qijvTwxS&RUuu)Pjx{7hch)9#Yz87 z3xn1n-`*MBW53WcvDaQEyDHQ1?5O--7^><%>LikT(0Kr_QFF~jmuI?D+Rv`Ybccf( zKFl_*`Ro|lxZtBLY`2Ad>M|YAKyV(&bWg3xOne{~o`agEQR_1uy%;gaj$#)}1!pb` z&U^sH;4R8p0~6Atq?+ugb)K%IbuEn#UbH-nh+(d_s*A_~nTcyN6MMx|UG#}ew2F$V zG80#y*j=@xjGt=h9$T0MWJj+T547G=$$p-v6o1Ir zq>N2sjPm!=f(84{=&sU8QCd~8G0eA<*>(Ee86ELDnM7 zh&|0wFS2-#wQC&NUd)KuUe1WwUg3z@-m($1y=jJwGeO2#r>D6I?>Q6!3|=OBR$89c zZ1e{=14e&ojvk#fm__a;ykM@bI@|r3s%+u7x|6z(`wAVY$h`P82xDM&VsEBF%koW};v8K07*``1oLtBIQS`n!5MtQVFa9``s{A2rSN=C8xy& zKBS*hYIYQeb!K*)&?~dv-xFRn?I;vW^QR{JE_-E1AzEfrMu>JZ7d2iK3>?#p?&^IU zOdzoL#K*(RmCexu%@f%(#$LIBu+mlH_NxfCoq?|(mj?g%^xukI%2d9bseC$HxxS@x zW!Uj2*!nt1Xf`^oE(;~B&LZo=gUDVAb(Dl#lRldO%TObuL=UQaqC{{!8j+al1XrlT zE#09g&*%(tOJ=b5r0#vBv*sGbR7G%K(~hsxB*yYnJ;7PXN1%HvsjIPcO-id!hH)8l^nXXD?FDreYZzw^l}aNz=HENg10c zLn(Ye^<~OXPh^ud5xeX-5gV zoCR1*(RM&GxP++xUcZ2oD4uUl3+Tt9<|Zz3*Ss*uNf(_b)^! z+rUf&O9f}GVw2hsoMo}_Z&7A72w$Ekp-cPPki<2XxNc}7o7|%peaknwH9^O1YNs~2 z$1>;+3@tzBjmvb;sA`$`z=_>suVcBh_1gkG8O4Fc>5s`z3Hf>o>E}Sl?2hY$vsSYf z(Igz!TS%`bP1sjjpM~`E_THu;?>Ra8zUH%zrS>HzlDDeHiRKLX*f+mtZ1XFUkQFr9 zCgUD}auTvweGv&6?A?NbK!1bVn|6e~$Z*lX5K^%u{fe?SrwB{ZuPXVqE#3y9p+#FH zgG12CzZ3a5gg)&i@^QP7k5OB^J80BnT_1Rq`NUB_RXk2b6zhNgIYdNR26AS>@q==cltf7(tjJO{P!6B z1~*^QS&K@V*cyYmth(5$4yC*|M)FD=RHpIuFnT)a7OLsKxLX5Z<%V$LE8Z|1J&iJ94z$lpKmm3dUMLERj1mT-m4Lop)_G*w@Z=lld0`z^>eG zcu`o`5d1-R)uDwo1Jy-ikw;$5?Qhp5JVxjYZ*7D%Nqe5n08R&UxaWjt8BsJRo>cF(&*GAM>xDev|?Vzac5TKH>y31Tm#$lyVbCoV#9VXckhUU!S3pn+1$r9 z78_X%w9j3nx*vijX?LcPsiaBsfiAQrp&-O0IEH6TgJ<^|m$p3*i%bn%1N7Q^icM$F z?~Rt(RR9I9v6@|_URS3JA^%#(4)u6BI=%G%wczWPW|Q>Ndxy_3|Jdqi+U`@P)#SG8 zSTwsLU&n>j9h*ky_V3sW^KdL}|)C~JB$JwQNc5tW@!hf2bf@BGE ziS2zro-21m&&77Rga-^Ulkm+NB_mr~)M*zh!5r0q|7}_iz_@5}=Zh|l;jS0{&1D41 z#j2WaE2PKr(NbRIG8Uj7gP6hI!nh^`sHQ@u8at|L8aiNG2`p4sY!emK@NbLyxo@V8 zTQsLx1Bs|rm^QmGjYY%`w`H&_cV8}z%I4Pnt<6r2&rZG??DMhLkPKJL=3_4cn8~c< zZQjSGczpYvvPD$nj(`uG&tKht$~*5Wnp|txNwd+iFv7NousQe#v$ghR3N`pPn+vY7 zWaD+yYr6`Kp0uUDHh)ZdX%(&w!=l~@?%)Gs;~^d$7N*vi;XqcAj?1et3mf^LwY8HrhS9IW!lbaUp!!)7N#$-VWwq+M9=odtkpdSM=8Q0%x-2WP?|vl2 zPFWjP?iLpKe`d{;&!+NYqv^X(;r^M{eY&>w6B@lk0_!IW%NEz9sxy1i7T z6I93S^Xb7yF-!kb7=783X?gcl?k-xl$y`bYuCpl`_<}BExsmU@3B@Y+C&gD^Ju{H2l}_-bH3P*2?;XK_XQP3_6)<*$@5(cLcfOgZNKEKl3|uPnFYM z>a4zSrFJl%92-o!v7;>144`~r?WH>2aO*v>n8 zYlBWTEjp!Ixt)3~O4n)-_iPgGK3ELtRa`Gx26JI$An#|&vEa1ksBe;AakZo}Gxz{| zKzgvR3F+GL^$KTee9NT=Oya>o|8~;%PX+cgbF31CH zLGDvrkh^80RK1$bfW=F39V_r}7^AAPF*3Ksw|$J5h5u(`)Uf3ky&0N^FAO{Ww$Qxf zdPPU|m(g1|)rtNR<91-KLGqvhzr{!~z1+w*D2{?Sz|1B4(O!weXz0E*J1kXPw1FA; z(8yr`ZpRskhyZUm1LH$;pvu@Y8%-ato^h%HFP#U|gKMG{13WxvwFB?4qDv%m6bS5W z+yzB@xY_dd1?_yD2`QaL`V^4+etaFsJvmY{{nEG_NfDQ8>eEtAT(QrtKb0XA>SDotz2_KQbOb*RDN5 z_4o?z>@+?PBs*cx2=l1M)ZA@-lbfn-N1&_JM zxE*#KHktX>9&IB;j+<7SsWb;7LeV8#53p}Np>~Ja_P(6mXHaR!qJ~kq?N@Y&oQ-NW z?tSxO8z^>ud9f5ik-h_kUUqr0&(oC^9opDO1-E}m1#{2#fvL$qQ&N6!xH)_#>w%|K zrj{HPe5GeehaxcJw;m@?%vG)!HEPNytJE-MjY>^ED*qlz&_jNAimNFW#~TWP#v4D= zZ@w*>Hnu6a-TE_STJ?fs)9stgd-x~Aa|7*n83%H&q!^umtq7Xd4@?YhkCfcp$&I6( ztMAolCz-qGUZsl8)%h{^@=C?hefU#2#!gejvy3RESq{0$TgX<9rSIk01E@^{@)fWE z$oIt01Np9pl0V)PrCIbZ4x&2W|Kt(%g*~*_Nmb$d-;aPUwX{>{hL@+KqaUz6@f;xE zV^hW3eAyA%5+V;_}$kLoQ+XoIjxaw7EiencxMPFV_`zo@PkERFz zkkM@xnClI}`k&-ARzH&NT-I3*D`&-|KiLhUndr!{@%}KF`m8Zof1&_3*4$y~Xa>^7 zvNTZ)o1>l5(ab8mh8}_iuMcq)tSx%;_2110ne#v+1f|)qcQ&GM(Lutb(_|lx!Vx|gg(D@kl{*xZ-$9Oyo$|CRZrKOHLqnq1=JsJoH7)q~ zaeMB=Vx-;O4d2Bn&a53hq}G80hd%B;^l{8mF4&=(ENX+I|7FMWHowhw%r0y!Sf2l90x@1D=uxBD{jpEc-k zpwAn09MB?zbk4!G13F`Uwbu*OZIE1rzi5z7* z!&P;wz(GU%aN@f1b=7stksx<;PXqbp_%uIUJzuV{ZA_*7MmGLZ3yU?J ztS>7vnpQidqn$+gRlhj=J5AAy`lcz7n9m%chBs~Ht>{a7E1FT))cEMdhoqOjH2k}I zL52G3&6EBl6G*59gJNVm3C5vPT3e#uiX&j*?w2(_C-;O6X@YxRBnar|ZcMfl=h2#o5V zg@xw!@=s5&Plx?1{vsW59BegZgy%)=REEYrdKL$1>axnMv?iQJyRS`iFEsBJnwJnC zxJ9lxIt88WUNnCwebC0+2F=XKIcRNeN_ZakjjKTG`OwD4t%xg&F6p{9xOq`Edb3x< zO1z6st6Qid-XB8SwzZ6$%2+U#GB$>le`Td+CO#}`nL^o+X?*D7orpu6ft6EIOg?fu zXBvAhuEyYLsadULZJDAnEfaq(+(aYUtIZDI#jan;2j7VU({t3AgF)!t{@#7cIFXr`2o1SsCAv`KWg++wT7iVwRl zy#=ur{%!WaPo)~`{>m+ZR@V&Qq{Ib@O`U9PM%aDNE&GuhG`&u5g3k4{BJNSp`5PW$ zk{WbAVmW)s`8uU;xl_0rk?roX8nh46Sydp_t5=XaQtRi?Xy#b8MZU=?MeLO|(9qF) zfj)q(&pT0hKCa7^Xi~F{=huZ7LjXSixZ1x3k;sb6ZfV?bG1u}f+R7_o$0c>Cirjv@ zx?pdP2P|Pd^iPJO`%ZA6?f2Z*%09(rC2FO;J6kwdBhN2}L^enkN5DYdn7tfN|1X z%R8gCCHgt~D?>N1wNvpV`oG4XmWWkA^z}s|dk8SsQc962%APmVh&;@U6X2%0vqk73 z2HIOI@FMvNKYCV}F#XPF*z|jWey2v+v9p7lXVe>sWf5hgCnR8{!}E4(in+QW1&&lu zl)IX87Knzvn5kSp0GGK@m^#&IsPl*0R8kX+;cQ6%g0VPIyqK+gF=o4h&iiSw1>-h4 zM@y`{V!y4wEz$B~3tJ|x1RS=vb@Vpcg!5h|IAK$f81I-yL)*A145ni|*_f+0;fkZzuJgNHbd?b{Si(VIQ%0)MJUbc zvBgxPLt1p{bJJ(rF(8=%oCfU=HJ<0n5$1Vqvp@rp6wu0PA z%D>l_G=7`$VyJK}>DlD!xx#`_7y_CYaxhjc1-U9AehWJ^UWH2`97D~?phtS!@uP~_ zb}jn03aB?H_)+8&W~EPuAZ(-Xc$d_J5 zc_!GRyNy;i6)r7GO)b&C$AVK!^y0RQjLG*yr7m{eGLezZ(YJ1w_*`bhO`qek#p;KC zPSeDtoHqlGM}o-0_;Zt7V^MB1k+D4+t+884{>ZN2BBMr6TNX3M$tH1piLf|Ay>BQi z!kQ<-;bRs zBB$|dB}TkUj8V*B9U|T;mKYm~`}d4mRjTnHA}*#RE;c0M;^V_F)0V~;BuxHl_*}KO zp(2N`^a~626HmzTWZ14*?fs33q_5ohv~R)yYqp3 zd%h6Jx81HJS4sjG6t7Eif0*QIzilxl?Y1Nrmy@{UUjwyT?(dS^>k`JTuByn)odx8~ zfUfxPR<#4Upx6cEtx_Oh&;2Hl3yR-Ka$f=(;+Irzz5|Q?Vuv07LmZ%M0v{Nj1BgYE z{5kPz%by0)ND)kICseD9Q9jKnc$HoY8XM6@eNwFvvQm4nLUc zCZcnXJ_<#d*r2wz2b7(T%u#*wq(3%`ByhfY4d{`T-v_mshj;e8Z?#uQG;E5l=>)KS zf!zXXC&V>jcND)Tb-U*;=~5^wJx5vkT?k_6_Y(a|^SS$c?KRpZ>~it7xu)>E?RjBH zfjn=upy=$*`N7R|BozN9tbB4{G~>vkY!1(xF1G&7m6cOjpOu2~#SqHU+J2vO2>8LA z&yR`4L(22bF>WB+3iS=!S?#;KV|9VP`v!}nPh;=J)uxhcihA4cGgC)~{UkuSq3vjU z+lz3>zyxzhbTYeBA6Dq5C_vP+Oh`r-nwhvVE?osq z&SleBMW}m>J|^(j$!=PCnEu7K7-Sy~x%iOuaSM+E~kVa(fVHq391jLBhU;&Syv1L}RW&JEMAjSNiE zuRrjR^oz}a9NcnEv80x$Ng7#(y1bil^MbCM`63?6+Vjxmw;@@NV%9NCKd1|LHh1 z+@%N|17q$IjkIN-#WbsREVcqt=OiSQG;WDbb08n4anQ|VMs0k9vtWnaMx{!chaSF5 z&q4FK8+~-G1M1IM-n<;hHwS4soj^uFzIA*Gny|U9Ap?EzFIs_I*Dwpnzt|OO;a|uJ z*WY^|kZ(%I0r`6;CAqVJd{a`4d(ZtPP`oM8(OqNDpFD=!-SiFbyuINDO^?J33LaR?c+0l)P9n0&@ zp%3@hGg*aC<+(f?pIU1Pn@xS6B4ixdyPzK@bQu&`b?DhQgu!7iAwR;o@^bfd+>1%I z_rv%$K-}3{Yh?|Ecik<0=d+Au7|p05!iKSF`F#tEYVE6))9O5vlB@*lqZg>sElmo9 zwU=3kbl&bitszCP-gp$;6%p$O>znR;hVE?4ofJkVRBLZ(E=FECE{sm9k-|6H6VJMi zdzY$Lxr4*#i>5GOX1010xRpH}o~tJ}p<^M6{R6`&L~*>;&)V-h91>K4H6pr3ZZLWs zx1OhR?_#*dt1LWu@Q9Z0a0foa;ov$Wr=^s>&-1-|==>ysG}oRc6k?VQm7=syDL$GO zwH`YcT+Z73E^^GHij-AhPS2C^q%0h*hD-~iQQ#Z)>z@2>-6uSwr98R(Z9FU+a5^G; z?+~??i3bXWFopCmm12(5c75p~w)@sguJN1l%5Rs&mMJ*7e% zWe@m8{qOR3Y_mzOE)WAdU@Bxsei{59X-M7dZ>$N#7p=r*Zj20OeT$?FWl&{o=@`uTKD1E2FD}Gnw-=Tdd zdQ1o7rs9x16$j_34R}wd^yz!(yN!6ba%zo~hy2#sZ{gJX*n68r%A4CyTDv~@$tfwL z{neTSOk++c%rRmFhi$ywIgc{P?9&Y6zc%O)`!V7%QUA{#ye27*@(E>Yq|UsCPx zb&A1gu4NopYw{{@4W}>~`4wUWkC6nXtw`&3zTTcIOoYdDEvy_v^Lf!S1a(@8ThPww#ev6wGCLX)5C>!kbeN+Yr1X$SPM=aNoR4>x#lCWsFa+yi#$m_#fic zT%RdiIbXxrBi}o3_1Dc!oruP`B772A`x$ps(%}!M8Q%u-`Til$?w4p=|7Red?>?YC zEKOGyOx#Dg?*(#~RmG1z7DH22g#tDB=EpF^JKuHI7EX$;&FwI$2Mj+k6>*N!))gKA ziR*>l z{5A7Y3OeP}sRh=mv(PaDOPkS(XL02VvVMP$k~=p2Ip`8fO?rxT&;Zj$xcDGFxH7GP zYFGUmuMAY86$m3}=*i>ZQ#dKXw_1x~3T(o1;57UU$l?7usJN8z`nIgcz>yHA1WU|MNSyRW#!M8A!vGd9t%{)3@Ds7 zL8%h9$=EHE%xsjn!Oiz)D>*j$!h+o<{i**pCB=#Q24=HA?!;S5|4cbS(-S1Y@|uK8=fLg#!YSuAb8#_pVK#?*f$+cE(SgW;f!ZF#03JUWU85ip)fPju?@9H9i|t4IFvyqJXgDb2WqcvHa8y<~}QT z?2BSHICqX{C0l@a-cz!0pBheR!OWVLiL0_x*zH<^sXuS2T&1s|m+WcA_hc%22!|2| z)7Hp!i-;4Ao6xd!ygV2N&6~7bs-UAV`z#XRn54YT<*PO#Xg&BzoV$hGmDr-#K9)lcrZBjiTY3|EdICUrx8cm7V!?-CaF zE73C!^=!|u8Nn~oIEGbVVS9D~qi{nv^k3QZmp1g{_}r0W8qkxL8v;3U_*sleYfX;b zf#lUL$0jshVv3e$%u0rhr_@|rlz%HvsfM-G2oz=M!YTDG8|9A9HZHs9aIvRSZEeTN z^1=MR&NrSiK3hoFDtSjG=P=}^Yx&H1R2=EbN{p6Wl}-^`c$h7ttWu-^OClJWR8y^l6LDTzQ0T0<+WVj5Abd6@E5Urbq&N|(|1=r`0j)_JT1CQcv+L27 zXorK)z%Q5!$0+fD6M~x2LCuLo`Z={WsQFMsQ1g*gQ1b~+QeHGSsQG+bQ&4k7I~5P? zL*E&g;Ec5dOAgNXV{pcwf-^P-XACw=Fd#D01ZIUfngIWw?Y`PL!(f6~PbQ>R@s0`Y z1w{`g5Lq>taBH1P4JO=etRrpjth1j%6+M;=usT&7U|pu6F-QmX z3)b^z(YofKe%cz{se#~L(hh2YEr$!Ms(1nD$2Oe0r{v8Kr}pc))Tm*_q=ZMEF=LD+ zV+ujkm>xyQ7n;QB9saa}ST(ab4pB2V#h>}D{AruZpM`DBK}~x*?b-U+mIl+%-Ud_R zsK)mH@vuIV4C`yjul-IQyVeTZ3?>#_;{_x(a>`XVwcD z{`(GjQ&8Vor#1%l-sqs-I{}KnXLuA(c(AK&`4%yq15QG8q4h2dhEtP4AaP?=6$&!z zXq_pI|Ex0-0b>ilIP7>?*&O~L^H4(=^~X%arzmq6b~8NBjyl4TH^F~RZjN4r4L**l z2sAken4*v3jGJhqe#0vN&FZ%)x}bA1?i)Wgr5-zCn|8$cVfQ!IQ$l*FX!4ypp3u_x zdj6yt-Bp-5da%u9gC>^Pe4pI>-fMfDV$(U_C-hlu*!xo;mx`ZB zpa6{Wv^thsXrNqBM_7O((u^Z{Uu=m`p-Sk%B0QxUQ^%BWy#1|~5Ea%CLZ6fz8t|}~a<4@TUWNV>e&`HjCC#DX>b_5Q=G-bD57dc3`q*xjYCq~EXCXR%f<-XtMuFc7EJ z74;kcN^2J{sg`2ka4ewTRM7#j4ujAdQ@=0$xsh+uQb{a^^j{IJe2$# zo>en+v&5|BoDl(9Q)vE$4$x45_V&4PCkrh<54-QZ!BWp@H-=LeNAT}PeCpPqXn+-YaV`m5sM|2J z#DWWR&0C!zUU8Moa-+2Qp%EI)oz^t@8fmP8PSKm#u^>MN)9Jub$a~hI15u<+7PG&1 z>_PzL%+#cpYJAb2QEGfYg|?klq=E%a1sk1}UAM*)aZ-2Hj{z%Ib}i*Eb;+-z>u!Fv zW4cF2R}Y|VoL$Rf2!EBU#|Rs?D6mveshAi4vN9mp4I_UAYm|zKclbB#pd6(_Mj;glf_J0?poZ+KC zeuYPl3xAOxSMGlu2rYEH15N?*oh=3AbhjDEceXQ<+;f3ELeF_gF56(N7T0YWem-5= zTUU2~6v!hqTnFSkU>}h0d%J-i{@&FFi@Z_UEq*+Z~x#>Fh(p=Y~<_?f#B+P@JyrltdEwCKbzky)ahReL#F*ULI|* zOxXJvfxQwh23hn|rZ7DlZK-ylh1rN(+|ezz=(>?#pnrzXDwbu6zm2MZn!5gEz@P3j zrEc>|nWl%97b{XWPcCa%(D@G(LgV~UfdawFx$X+x7g{MxzF^gSW~@hO4m1@rUZ zJOQB~8#9eBXg_VsL_bdl)37?M@JqR9c3a1$QF%5!tk;#lZhZKn{aKW|gpI$w=a(TrOY+aTQ=r)%oO$=7;~R7U&Hk95E|%<>j)rUTvC_#;u1D^ZWid> zh9RdUxiVi&HTLFPK+Oi}7D2z!&|-?Ny{yJW4pg?N5&xYb=u4|ln1>6Fp=&RzYl&=S zgxyu+bdvWVoa6|sYL5k5MpEwKQu5*xA)$u1Lje-L_~g)R3LTw4T>jR))U`GnWbi<_ zPM9U!e;|WOxp7$-oYb2sE75C}GWi5_d`V3RO&EuBaZtOo#?&1wO!NDTk-w}<3%2Nbp%1y^}w zV3(!T11t4luOT?|>W`o(FPdD7W^x3}J)WIT9f>HnwYo z+~_Jpouco=HnHbJ#i%_DlS7*4-7wX$X^n^2>7UxxxyH$7Fn6@vd-r1&bIAH3iw|1% z1FB%w#fM=5W7LbY{d>O1?^-t7p20-NW&E*h3U_bno-rzV%+#$;&r$;imE||36}T6! z9Eo$%THZJhrIqxuoHfYrRX*uni_JGKMLyAS%{Ko-Qud`xpZbG}jIdZ1yao;@lKs40^xp2DqmK$$QwW8p2 z+MB#yhx8*%&98yC({I1z4DbzLmMLEOYnjB%r zQsZ+^mZdywI6BG$Yh`K%>aqm_gU2->?ImDIN0a7|cn@_qa;SI0{{$#Fp zkG;!KXs(v%eB*_=G*WKGVfQudG}Fo0^n{E}kIC3m$@tF!f39)-NdjgT=72xbjhc1O zd_648fuK!~ecdjHpv{4x%>jL;m(XW=34NwR-sTv`eMzSK1hjvSKIa?ygi}n70BHdWl=?D^ty4U*4GG zr0t$^e%&tJ{h?lT|V9;YgHyLznf}N=ZJ7*-=IWNimOp<#^k}K8AHG6AQ{wvT2jrD&W$T$Bn zG`YC>BNqQJj)T|#4RCzk6e0P|n;|)8=}t!%^lhPzVV777`hHn(PAi%;#6T#HLtK9D88%T?7`eUQ+K9<#T_EM?Jq$&cH})plBZiexph*idgxw)VhZqCEJjm4%*& z3zhAx$YfL*4~GS`%CUT(QrG7ck5vp!lnXzvNTue(7%(uwo|wEv4D zs=~bD5T08|?Co0E1V675wOVv#dp!zK{Ba7%B2Yg{TsRvB^|RIlMGoZv&z8#hlU!Uw z+h8}I%FSt3Y=3(G%Sv{YfkC@@njY!H|RW)CyX5--3&VS&;vRsCOJOvF~T8?or~u$ zQgT-if)pLu{-{xnW_WpP?V;$Vj9HbkOXpYM*K+QnyfAiAmfnI;iJHMC#&tedFX=d% zEZVUnqSe>T@SLOjm^j`G)zQ44)ZF-3E~`T}%P{lzW?tMdX)VE+i3*i|@vnfv&3zdG z#A5KY=mF9m%vSccU>#wK@Z*!h8nv!^q;uPL_9=c|dMrA`Vx|jfaZX5Zr^0MBck^q) zLYsxqudyNhdY$+i+yU|4dKO(C4qPx?{qo^jr54MDXcYg>lnc>^be{4_sg-{ z*4=eIJe!Bj8fA=Q3Uz8B1?~l%>Vk3eTT@DatTAhxEzE?SFN%XaC2}C}5Um8y$bd6p z;y*bTZ3IV`XMzTckorKszf(hM)DSk46kdVL=4FD*a1UJYgaz1Nr2zX}dh=;+JX8{y zJuKV&u`KKSv65dVGP3!DvjtAyzJbU$u%{>q@8ff->DWIQw*xl_+iBfaBMYWI!=ut| z8?n=l+|e{RoP?<1B*gekw1BDG!Zoe$MY`gAvDTvV#eWCnQrq`{TrRr>$fdSF0{y*l z$f|uj+^e17QGBE5<$HyH>Ko#H-v|mNZVJ#;Gk!E)@dt;@Vge-*dmnLp8_VT?{4moG#_*0t`P8mmbgr`*xb zZ*Zlwgn08~PdR2imV}^lg(ci9iXWHx>EX+4F|jH4iRk29*1Z!rPv>}m%c+fxH>7ZN z-IrCGY}6rcsFr2+V%cyy-CMuAV?7-blf${wI87Xn;fB$x+`PCw|M;8=+rqF`9E`!4 z^P^|Mv%R9L+Ewi!ez)s`EB0ba@6o&#-%AhviV47`#;D{DHj>l-V|@StOc6|>FfBxp z*BVAw*;t?(9C(DoP@gKBLZ)?2S#d*inn%o;IDC$Us}IWZ@Nvg&T<*fQw?)#W?pS;x zK*FFD&R~~rt+1}b+ok8A85pY0cOkN*&X<+PnZKDpuJN4>`KW-P^F9w6dXH zgzwVIO1V>IX=Q0xhODfmmay$B>)hy!oLqL>`A$n~XMR~BFoMNphCTs;iJp}Ad_73T zphX0aRlcB+L&q# zBM*ZZ7i2^~;zN*aIvZ(-;HNTkM@BBF46fvWO>o8M%BK~kR2FgORx%^jcUj&kiSL`k zu#kr^b~s^dp3SWOyq4bh%xErsRu2R6S^YqgtGV>CKQYPuc9Q$UB=?__+!1HyfDy*t zXXd~Wa^KFG`QeB&QzQST|3A#kX|`&@3|H{!s*{(q(eGo`_6J9p0H2=J2)V`SfsElD z5>wWnfDEODqXloljLO%{jbjX zeML%!Z#OHd#IAG|*_C)H9W`_*eWZLTK_TgiD`q%#k7>=^SXfLA!!M=>4x)NrOj<&| zn2rMS#WXF+)e`c>baIlr^~GcYRBH`UtxgNO=P$tzRrWW8rlm|DLeovmpM<6x#IO5V zmJgu@`3NeIPar5QJhnK?GJ>$A!>_ZcL{Xh3qy-c5J#yP`F!)jq9!_W` zvANwnFh6=@FyX>mf(b2af(f(Mq2R)+(%k-Q^!~U@*lF?oueFEMkiw9n5T&&5NtAkb zH7}jflj&a4&WNPBoH~?#CsRnxb|bH`QaB+MC6+~;r@6}~69ey}M3e#^B1-YhY%M~R zS_DmBG@pN<=prm2cm;iLdum0LVq|DdQIuLURFp!DDvDAPtYT4Wb$*KEDHDwj&J;cv zH!M?_UbLP87OiK1;|FR@dOMmb^&yvNph>CYiOvT6I|I`5$DngprA$7qF6gYb#&IqZ z>76FuTG!6l-K(>*a>s4uA!%5)`*22$nYy(uR5~Kx3RfX^i)-hu`kq3UR5hye7rY^% z=E7{W2cwQcXl;J`Xhr|6q;szQdGl0YD>|kndIYYe!Pb+U7qFrjn~w}FNGm9^@~tWj z;atk^%2_$~lK6;Ew)UT9HIB}=ZC2ydvKm`Qtg%(wA9FZzjicild1+c0Pei}?xQ`EE0uOzIo7hI(t(e2^KJg(vTo|Y>$z{ey8Hp!!^`_eS6ewgTUan#bNU5F zAi>%mjn!P!)V0${VZ%esh(H$?`IHY7S&(D5)-t1;nns2{RUCdqneic~)1&)gJr*G5 z$amV1VBjD0z>ACq@|OjHFl_C(N0?V}pM<#FducNc%fepshT~U`%)(j)s1}{ki73$> zPWsH{Cw(@Nu3|sYA?!rdNb%ewo?5n z>P2VB?3&vX^&vE&Cx>=n2H(siSnW!V@2~8C5>v}tZ{GNknkUM4CX=znc;yz9#>$Rr zpY@hn!4MhRI!=^^NMR5iZ6A}NY4cgjeKzbkUWBOvXIcxUcJANaj6oxDZ`_g$Er~lH z-6NVQZX;7L5FAkos3Cm_ND_K`gd_#al1ajmB&JeSIF`4BTK!MqFkKqg+-Yy6P!3DQ z^&~W>|H^l`{Da@&@>g&oBI_r~vRo+>{UWvr^gs5Bxt{-=A5$jxKM5pS?<&KcfLvwx zT_9H(-VEd_Lj_TEmEr#A5nlbgbQ)(Q&}yJji4C*_|n9kerO*5up_s`w}V`{Ea>vwp2 z7}K!uftVj6&`Xgq1uQbAfa3`ZBeTM#R9Rw7KdlCg+a(xxI&3LE^K*Efm!5KIMbLSg zwJqjLjX>*|n0EAp|4bNWF`|k5Ae(l!`*>&~Z{B9xuCu4<;Iie-VtyZ_kaWkZqw=4C zVAhD($`biwQj3g=jOWK-cXGxQKOeZFZDma5@ud&oUd5O$YVB|F`bHa*nA9iJU$H*p z5QnYrjoH%I=zuk_oGpEvM7mfxw2KeetIm7Bl`6k5OqB!ksIMwdaF^ncayNa<=l|_> zy%9&MTO1Sn(@K-Jr1}#x`f#%h76qPy{ou5Yk#}J31b9+Yz7TXn<6veon{3$6*7E7* zz@2bM9O)Lk>2AiGVma8f;Gmc-{bq>`O7_m##-V;v^XzLi8yP+tj|wI_n_6T`W8~hP zJ=I|jl@PP3=fI|>gFBk(5tpF-avqFbivG>(*mPuWJN}-XuT*r1JJO?xcsiQw{2zlm z^qYHE**iN2cTDAlW%k0qHwAa-+`znM*u}&AdHEZEaeBS~hvW>yX@UJsh3`36 z%z`uiV=G+o+|qcLSia%8;!1YD&ADRE7N(6W9#`awv#t_1&iG@nY2IK)*@knJMsQl$ z2#z$$`^Do|nvapkx}l`s{hP;|3BI7TD96Wv-hGyFk zaH8q%-pY97hK|R|w>Tbe%+(iQUH==8$3+M_+I1>&bN=>qH)ulE-qIy zM%!K=S;qOEWE^lZk#T;xEi%r|rJ^M`Z7$=ysX~X7ahAgQmyqY}FMswsT>hq)hsrp= zEXp|7zhpAbHT<}Y^9`UkFXJ4YNH!lzpa&8eXJR7b9G^%w-%Ow%Co;}JL3xzG}LAce>=njBfq~sf#*qd27uTB69)-Ay6_{5TQT%tncFZ9rNwT; z7<#hEZ5UyaD{F=i_k}=i(!ChSO}dML+@vcVtiLBek!tgBlMxqP^AmQ+PuJVZOdD-= zh(|QACVK7Ni$l!JM7|Uxqn0~rF=x`t(%aTJ!Q<6Ia$j7o3$Vd7NARnVU6X*>_>!z)a)`&*Wgctmu zI9h}!cf^VVla~&F-M`h*8qpBB2gJ~p@3Axjo1@`Jfe zxD{dxA_w)nz$jfqT4%9jru79n3Ft-B5>5v4C3s?zdkT;*-_w)a3zJ;=UitF%-^sS;8?*i`y4(3_Bi(>Gl@SKKZ2Sru)lVY*Xpk+o(@!-uYJV zrR(JUu^z>H4Zqjo^nvrotXpsd=?Nx$bPbLmD39T{Np&UUbntZ<)Al_iDyiE6;O!2Li_ zkG|h>0gkek!S{pQwEahQGK$9zA94VZdR^x7lCrhXb&K@?78cKs-a_|M9;M=ciq|?` zlIO>igT%$?ywD%|?;w>`L9kk!Jy5<@iFrZGZa3`?Rj=bkW6S4~y4peGgXH-UYOLgi z(3PhotwCNZ_xyNCo*$(ef8XC+RwGMwgc>Jn!9oqUR%2ycqZ3WnH@fG?OY;0ERl2T! z4IM6a^Q~3-MM_dP%PYn6Mcl;JNWOG8C;ff@Ci`7uIhVFGROlHPLOVq2nGQ zWkv4j*dIAY>)7=}x1fpA$Q4AC2OYZzUi#c~QL-aJ3wfKO9}CSPXP}U8;QR)qHr%YJ{G`O`Kq^Eh_izh{O@aClvc5IKXh2NY}3PKZo9y zpmYDq&o-Q|Dn@l9aB5B%n3#+gqrn(uCnAj2$eQx7FcigJF=KK< z?|bQ1o0Hp_b4BP^Syr}i)_f!Tyv#;ohpblnNh|jZ9iOo<`N*%95R;zPU zwHI*6swX!&-UqUUNU+hzsH9FJ^Z;+s->vb} zRQ#`w&`{}(b%Z`?7lOB2*Ae=A8rtgr)e$mU!|4cpjHDynrqLQnso=_)5%mfGQ*?yG zj@JL`2rEX?K>K(}M;K$54sy5F6y;GY5;x73E9v6rmS}q^Nu)&7H;EL@VYx&)Tj#jv zau~Q~zRq#CrT7!-9CxcE(k-rn*vioaZC!FWa>?}WSTfD8lg!y_ZMn2YQfe*#kWSA* zI{hfp>4iwAE$fk1T_{~>LaEE4T$?1JG^LL@=xs+7Qi=*~g6Rh!_1hwtZcGHz1#lzD z5e4Tb@q;LnPZw+^pDuvsSRmmE%?6vCaia4}U>mu9ZsDhFK*_m#QCt}cSE8!;oCh-)Fz@gDsa=DLjpGyORMBY zZwaS2!EzWM2>T>PD%*V!m9cMIP|&DliMYFD1o2w?QJpDSkZ@579PaOOs?K}lM=Dm4 zDjDox%F~gG&zG!w@ojTa^X{=m0YR#%sJqgMYG+g>C#BpVKvHaPGBGQq3%-itFKnJp zTgaEZ>&xJ$K5Lbnf&!zpUpIa$#_Evj-P>*3t2a%0N-~jE-#SwD7X3o4_Ubv_@hYRB zlNLj&=a?9+eEX}v-pY-ukCAuaa~!(}x;n@zO+fC`Z-4dqciVia=cQ$dFisRU9NJMM z?FS+hPl6j3OF=T<@!F8j5e#v|W%U1`$tIw4J%`EYzaXLfw!utviR5*PzQTGZ1!->9 zw)IT0mFH?gOGc8BrWUEAkyCjP8`FMy7aF+_;=%m(){lYF7NqtFj^!ijb25Ly;ohtM z4~hJP4``=#=F~K)9DzWaI)L{-NlnrE0fOEDr7b|ikn!obM{B5D51>V-qac$1bu`4} ze`)W9_KTNmn@OK7J%D);{xctkktq|B73G(oG)1@dkg4Ulp5GE;#G!7=aMR+$$7{2x zV4o$0b*T_7Py^5$sJ-zjv7{~62}CZ3T#9}Zceo+XDv;uyuK z>+ZJ^Fzp3fD5uqU&P1sisA$l6lYK<6omJ)-w+zp(Ap@Iqz(+%$Tr*@CbR4L(Jm3By zkTzwrA?V-q|A|(fx_K)Rzi%{An-MOKt1pyi8PWP-gy0?5VCr-57y{SP1)L+3$uJmTNA zKpye$TOvg!k9{A=BmO-EmWP#ig@ee@$#cj!ZJ;{3y zChyfE&^xbq43L-iK_D;hL?AEky5zm@0J-q~Ga&y$vHbmu)j3T?=T=AA@NE6 z#SK9I#dm=Gi$5gqJ)b~XlmY(jH-Y>h$M=E!kj33VK0;C&c*#0s;Uy0MdCBjE$?^A2 z1adXQ*+8yl_#Tkg@gt!97fC^IE0EXG2jnC97?9Vo4#?~HPav;jN_FwQ89-j%sX%pB z-iLs^ypIFa1?1Rd z7AaYy%m|A)>IRs95oS)*H&CC*()U0k-KKM0}t*v~Ehf+zU@v32}8tq#9^3{^d(aYW?3 zLFesyw$CiYlVaZ`0>@?|z{77s z1hCRZ50wDgqUQE&;VuaQuF)-?rjDa!t&C*?@osaog?nzIDTOYTG>?-i_j8n%fN*@A z?s#n!CZEKiFX()p31`fhdt;;6V5^EOzix-$2A2Q)VOjpK3z3Q}e>_qBmy$>mMh|U* z0>ZwTCTz*}58s4$#Z5?+F~4?>mL?3t`o9xR7?$<_JoUr-U%~8@W+L~gx4-_pxeAnb zKO%NFb`E$t@#p^tMhxM=41FTQ8?pXa4`TdUZtHlX@CiZS5%bM{T2JO+pNWop-WdLF z>yk12oY(0V7M4UwP>dZ-SkYV+;}uTm7vu?>|?!S=l-f-!E~<4p_||I5TfkO(`P$q+=q!mU>MJS;liBh1_o+B~r)- zHs_qpRgXhYc1mZeA0R0mz!~YN&Q{N(aLDOlCa0(DK-8wq4n*~GAc|vFb|7k%-qnF9 ztb|6CIS}>evvkI0<}3V`W+unwlcL!6Ug4dZ6$wV0%}W1AHy=31XhY`@%qtr)P@Jq2 zMrS%!*b%X3w&e`j=&g-c7&Na)#w(20`*@+Ti^q$6zn@N+{NH7~jzx$XLTqIreM1rL zAihFGyMe=I z??5i1eTRTQ6x*Faua` z!AXEQkE5J=qo+Nsr&n9s1HSc06srj+30@Jk;H8Rf&nfBHirNC!OWyBq?Ps0@2%_iH zp8xy)-{VIz>)H3q+H0@9*4k^kbYB2+ZGH*J-D~*^kSniZpVEkr0dnQNAIOz=Jdi7| zElT$dAXnZGBj{&94*zZka!0gYAa_Jt4-_8J{zn&GGJxH)F502%m)Qv1w9Ex^)3N}_ zP0J%dF5Um=q9w~Xjqw;t7wyJKy6AT`TK|vhqK6!<|ItP70lTD&9>A{uF}bllanEGV z?U;Keb1vQgkhymvb8d`8=HAt4{Xb6Th8(T`A#=MWb8fsu=61lY!4KHf*u}gpb|1%H zu=!}b^UOcOw}cYLLCUFk=l5S4G9n#3hM2?GTUiew0BY40U@X3Oc z7cyz-F;QDS9JOWOiq5B^*hx{W*qA{rwMGuSF-i+Rzq=ORKJ=KORnTI2iYYRR}ap4>k~m&-{U&#qM4{6(P|Q9hf4G_B?^Y6 zf;V{dSAK@F$GYpgu6*RHYNy}e{7YhIp#I3?uPz*LoU->=xFRFrz9gsi+K;<7uu{HR zmy;ZUgsg^c0hD3dQhxpME7#E^uU*y)*4a@sB!MwREIpm2HsEK*53b)#8am>^W*4Vl zxs5aq&rmi_fi;z@1is&sQ{(mD;Ff=nuvF8V-qqhjw$>-3DI0&;x%<=2$O-G1bm2CQ zm0ze@psU#}1M`8lCDyQ>7PhKj?$H3+FsJLb0oq9OJ7j;nWy6Br&N9vawpX|ogH$c$ zP1=g_0Ml8|<(y11-q=w`OEM>>3e7WR{@>sSXQCWipZQQa_;jPJeDK;ZI=qvWs%{R} zfNc`**B2{O&~253D4u8MxA+J{5h|YM+Z7%Wb^MRoP!#vpi(-xHf!*AZK^%ClegnQq@N|Ep#+Nj0tEtd<5~PrV;Bn;_OIX4B8%lD;fELfzX>R!J>3 zG4fUGtRfu=K-@tE{ZBgjxJ_v^UwP4iMsTV+-jlO@v`z829(An_E$i;39Y#0%4Y z%fq%!U#p%wawU@A{vwOy%*s^xuP8d$NRp9$epwrR=Z#gP0+dkKc9+&=8IPXkx@Tq% z!yB1Y)|mq+)>r#@$OX@2scOp5D;nW@?4{v0`EfY(hA}(w6ky8Vopl)W4B*=A-i7$v zv`0_(1!wxEO}CdVv=nRT92c=59z2O&qb+&AbYa03hhx*?{f~#5W`F#|*6d{7jnK2F zsD`9CSGHp{ZS=HygxAh*O)!RgGvi3dl0P}Vf4_wds3KGW6jUakCkP(UgC2k{+!FF+8q8AR!I1S31}bY-+4+JA^dT7bofM0CMu(>wuhmSGtMDv7%_FN06)m zT-YxnC|KopZ>kB_`lGs6YflayPvj5LQqBElSZ1U~t}Q=2_u}x(Uf$iCkH`;C=ErJ{ zkBs+}QAXLerw{GQb(Ql#67!W4BcA?vz%-h=0|9i&~kdi+Em^))^kKz!1)2} z^=!GJbw3!HU6kxKR=3|5wKG-x9WEdSHs;NbRtmP zW=!n78;K;4>%ymj+-`Jf1j#Lc3mdY744nF?9!2x;x9ZM7vp+y1T(ge@a?Nf43P(O_ z;>8gJzGwHc@xW(03LTcgyLeeVN*b>j0LKl0*e!%*#j#+H$FzLEA`%w&bDu2BzR%Bn zeXRSb#A!HR)sO@W%uMEIAaFddqI#pTpE|YL8|_y&bglM#)JVwEzV?Hkg#oa7031uw z{Ydf6L$vIe$+CYo=qR9X8Ki^qw+$K(^e+Y_fWBkU89?7P=(9k#7_<_|DGb*DIfdcl zKu%$3+lRdIREugmIVZ<{-mQfp5GkD7@N9}_w;6>?qz=E>kT@aMkdtv7o)|`LTpQ&j zgWlYK4v%-gcx13<8;?Cce&|~7?mrxn>n?}otwGTnJQDX3k7I4+P{}S+M2p&r4K^05 z{5&sUhY$SeB-!yKDcsjTJMk>f^U;a*J9gr*(gF|L>s)}vF6dL~ zE-b&7mUJm%^}$5AK71a?_2J7vt`9k&9s2Np?d&)O^#9$n@d*Y~G zM~XHku3@XW3);@jH1QVYsr<+7M7V-DxKOYC-vG3DTK(X8dwYI?1#m4at;Znazl4YE zHyai|cuV+OvB*9Yj%IX{OP90X1|~H zx}V?l>)Ce}54=~WnW9(1RJYt%fcuB2Hw&(%}z&_*kk;~vpDR^F#DSo|K>>2}J{ zk{R6Z22OE0UCbA^?oE7ipwooyuE+Q6p~uwe2ko_O)MiY+G1;Otts?py1IOAJ_&h&5 zoiwhm1FX?agoP^<_97m1H|uq)^-#${yo*jh4bQ5DBN9PxalgC7nixIGTuf7{Ni}(9-N_l4>G0Xr(+W2k=T^;A*L9ieJ|bG8O0# z27MLC%@e29o!ibC;~DJFhGmBr_k*-qLwD0k9`$`_r&jV%GOctGv@#;;Q3FFht@KRs zICFF48u+QGf#*aGyl|j_BH?zn;ptvK5U1s}FC|)g5_~s8tbgQdkZIM}MB%hy!4u|h z5gyEh8R=TTcE?2!Ki}Mt<}{#xjl(!1GXp5D%(Ym|q-*g7QH#G6wb&f^ z8Fj*mUx@4n)3?n2Pg0fi2xWi7mnG$Q1jwYu4Zb&59P zcERdd^k<^cG2xM0A7Y71vm!dysIIo?k?zaI@xLy5*2>ibToyVycA-(W_QSF&Vy#G@N|d{oKF!=ipO8XGL^VrPiZ0L&kt#b>N2IC|Qq@Y+U3UhMOuLKg z4m8(m*ZrS#@LXKaS#q12$Py|^jE+TbLKOOOKe(Z`i^%3+vqb9SBogL0%Yyq2p{e}m z#zNU%AC8eJ<)!jp+MLSI*_6s(wy`-seO+^YPH*n@5nlUaDt>x5tGE$n>m;o@eq*A8 z{3eik>DRAtziIs<)@yX)%dX7X*ev6QadRr@M+(Glw+RPiKyReIWxq`!It;e?0S3Ph zq{<&g^=@lDK^8O3P)yY6lVz==KIJ7+o(Al z+;7*~37=)w5}nex4@d&`L%9WdNRri+h?Y(-)c%s-vQ%Mqr7lw@f@kBo{)*Xi;jek0iT1;Z7Zx z+73eZQZ?QR)iZoXzT%uzu5VcO_f}6h`giw99(xEw;f|~?0=<5?_9~e@x})e2XOfz@ zok@Z}_Q2PjT&z78S-keS)xlXcJZeiViNIrPv?0})MF|WXw8bSzd)}2A z7Oj!-5mWe&h-L6s1O061Vv$$%6H7<^d`0bR-c^a(F|6`Ruezd^$ZCsZ-l_?#^+pe) zXNlSxZ#3P*EnkiInYD}rIs)(b?yrx`jGr;qCLhOM}a5C)v4A!@D;CXUS~#|9HC^U0cg_AqZ*d58i18F>21 zh5;j;kn#ZD=N-3F^WLXh_SP6bpEP`^EKGZ|PqPtBjqre5)eaAEoiQ>Lk=OyG`iyGF zXo1*xuwcfV?2Acc?&RiAl;6rXLHO6iy!e_9WV%jxYVE>{*nsd9EtU{-q&2X3N;6(~ zC4PdCQfE|F=2SU*V4?J9kOVuC=l&GKeK2smk{{QtpqXy1%^)BhB&_AaxavF9k`%|p zdlt4b4*ZWqu{d%i^vT$1CQf8x*3MIU8VQ}vb{mkx{f$5l_um3?xL-+$AGlnrpb@C< zFhO4ca_KbPA3I24dQHs9RM$t48a>)CED(n1L^1+&_8rRZ66`Q`mtY8v$cT<=Mo>c? z!81@E>v--y^;#0F;JRs6jS01%6~&lX5^5hXKrsr}xyJBD44MfW)}z4J%)zDP5E$kH z2G}SGwg=%9ltNaE>VMFNAqC{RydZ)g6_w3_jw06XSBWr&LmaD-%1r<~JL9#lQ&j%2 z+IaBvi~&_@A{f@N9ubw-zL@wKOA_9)xD+en66LFMmsXX%HUVnWmO0@y@0@t`Yf#OK z>lF)BUGWVCj!}xLHo(-_*Su-He2%VaD}F?AW0kB*$x>qm;w--vt2AMuw4;AjylI_x z_1A?+@xvO{_jhgk8ar4Qa`NHn@{Rd34@;M?^K->vUdJROzlYTtD_$8LwJVKkY1UJ2 z)(vzsZJ^CA>Z5QbOh5<0o?sKlirt^_H(r0WWQT67g$4s+z8X7Iy*jX=p3M<#hz*sc zBUihh89KISB*nu+28~txG`#{kHT@z6oOxfTv|&OBx7&vMORl$)eR!`RR}cHgLZ2vy zEv)c*E!~#-j;>1&WaHW~mvw}4RY$gpm&N(5gSRUlEDjG{P}3{fN*An>uTfK?67nN$ zY}wn6p`~sw*RKAg?d1ceJKD%xtQPokgo_nrEkJIkzZ>W|+uYEXvJHrTF8r*vMMf#o zC_7xQzIpq-o_YoY9~j=V z0e9}Rt`@B$Ck33Sa`NAHwlnXgpy1qgSjg`-lD}lbk_=u;(C|izskgg|>u5eUbmI~qNz8yPJP2@A?YpaO$5JcE`J10)N4P3 zUIJt;)}KlGb2MTPuj7N%l|YZhn6@@!P2i1tJ{7q8TYaO5OYbJ`Wy;%K+!Msvk?TR1 z2*HVpPRWVP)i*Pm>4JoS{P{w2-P6s5mN!#%Pp7*7Fg#T_vm({M>eNEjjif5`?wjzY z*mv-w%lljxlxEFq-f>+s;`zh@end=zYpXT2dv0o-onHW%4~Bs*)W8 z2{}<6K4}p7z&uTqs&wp?mjfeZ3+@+%)A2WcF2)`(Eur6>;Q7|CKsi9+$ zK`C!+=vaUHLJ_ERA$eWH`uuszdXiG7L&SdHlU%{Tl=UQ6GJ*WuM_2jL-M6wJ-LcGw zp||W>(L9*}YHA^g+CVv2fD!dJ*)po@q@Yycrp2UaE?j#JKd5t?kyRJ2^h+YD1czZV z_H#8lD_aPOs^2I!qo}}+3O(FDah)A3n?HSTwY8@w`HBO9!5KQ;*j!-!SQ*`8vOF?UsE+;F0qo0>Z!YBGGkUD}eyagD#OkwuIs8 z&o{`bMHZu-Ui-h(i2QjkqzVhwvqVstMoN@V{+Iyu81TFPbXxga*Vx~?#ui;;Uv`as z%^EwU;|1o@YoAU^He>Jh3&zs;$Aez)?pKaHnzGthP^*H^R3^&16HTkUMV};L(7WIj ziy|P|i?IU_B#!D`bOst+l`tk?+u>Ay_m(3Uyr^_x!NEE!(7XH9Bb$18t*?&53L_k^ z>ndL->Dmiw`t*fQ?ybqu&g-Ls^7qpS;wj&0tug&UR2EE_j5 zOebOpmA_~aLwKS;o&#ETZ{w@A(I=3AH46C>b(_Gx5F4>WbZGcqaBxW6%f|em`MV+R zrGw;;L;UM27%h~8zD$K5Oq&(nM%OFK^!Fh{-M*jN$0;@^-!b^AS@t2xtY4TnlcQhu z(0J#Dm_FY}AU`G4Mno4PhPs5gWRWy{W?qrDa;Edg0K5X0Jp$IWvk5g<=3X5f~78H51_& z%_%^R4VCu8F`5#wyV%)4zs-sbofpOCqu3=t|7o!|MzKGRVx?s4v)Ermv11tJ!;O;O z3iN)1eh1_%55*k1*i}F;TVB~E{s4(sMOis$=32E6(Crp0pUSSyM*^K@6nqlUOBQ=E zkjwEEAeUnfkjrr;kZ(C|02-j>##u|B0B>C{-g+H7k4@{&2H(q#r~V^qeayWRdOPUp zBzi;GYRK-~p~)`3+!Q-+=va1M#m*l(RtQ1tr9;Q2$KQ6#UhJ!+`1;T(&@^FX-b;7b zarx^PnwMM0%)#7L=D{5VzEq8mMXw`40Jg}T6l#ax-!YB2m`t;r8{>673F#z^5%vqg zG!Pi;S?&HJrjoT!Av;`y+*nRCvH=HAv^e=z23)@v>Nl9u-eU9?+ibB6MscAb*Dt4H z47JrMH~ivm{9~;_{;-@yPtTo18ItbC!low5|EiYFr1(qJ0)A(O)n~%$=ZDo_Zq+B+ zXJV2aQ!!@5yD8c9_MFqyw5m@=yDP_{de9HNO%X_QK z`!oGa@|Gp`U8?%Y9&DGDEaZAQ*72H<1OoVwSO$*;8~l7AG@<9|{B4?;aCmSQ1G(*c zGnBVGgXLOEcPyLC!Q28B@o{A6d?2?#XGO6hKEJjljVvpSy*7%y5$IKm{pTq5XHl$( zk0V2!QS75p>{CF0vAoYjv9AF+;o3JDDMy;>7^g#xT%~{<;rb$wBO8(<6pfUe3UrvI z)2u%ZEyz?gtYtgK4C}`3pc@J9RHRJ)VD3;@9Xu2CA!^d%o$_@Ca@RctxoU3na1-B3 z4H!eI?=5}q5%iEFDuhgE6Zp&Y= zN&?8tfuXeCYnP-DF^=3-NuKEr2TnNZwd-jUw#3Z7s2EL!ZBuUYw_uv2AFeo!0CuWQ z2~ZO04ORmDLW%RY`4AAg*x&mTiEO-%HMEbOxz+vNdzMkpexXI}E&I!^JzK2O>Df+_ z+U?>BzACXUy;`$#uUg(iuU0Ct>y;3J`Eqhx7^=o-`RDHU&qMPqF?jLWeQ1(f6~_X( zRZ$P*R>jAF+^YB`kQ3iN3*_*06m#L^Yc~VA*xP|z?2A#Xjy?nWt+B$R8hih)MhJ*N z$Pn=BLnB~1Xb4XfR}7sXI1O7jczNMyBYFtK(DzY!!ym`rW=OVhJx%tGOla@}pAmv` z1XX?U{+qf;#+%-Zzt{e45)m)FNHPb7F+Y(?b4KBeH@o|W_jf0PwTZ%*0*T57Brqrz z^TW9}BlfdUbv1g*iu|zB_m~BISMC&Fl^>SMbyW|fF-75uMAL>jM_}bs_h6{29LP52 zY9Db;_V@h{G`a3v{c&cFUbFM4v1}QcV{<&mgG%DGS?ZeOCW~Vj3`6VeJ_DiTE5!Rl zY~RPapA*ukl-i+6@emUYE}&uSc!%H%A9e#Kk*5vlD?1IS<6r}o?gsRB4d~3F1~g() zhsX0}f!h@s&!FOJlzJ7VfH4b#iUkB9@U(q1N>Sy8)CG=NU_*Mxz>o$iRSMuzzGz6- zAhFeAz4}CkR7(YwowTHEwVWHYfJ`|UKi_1@ZgqT!ZoAd-5g@lZK&^1?NP_xTqwFnF zth5JzGCF-F&>s!@H=vgdx)10jgLb%B07*^{jqpscB+Aa9MIs5;t|Ne4yN-%#)=Hjl z`vTVqWwJL_@0+bfR&Wb3gLi`@Dl*u}J~;(Xa(`(mR{*w1V9UD&hsQfdri9_|BNIOZ zCys`-MQnW8XHJ86tMJ-&bZ@(CW?6=pV6nW_zVfC&WX`tBE-K3&A(79)2}J1RO9fBC zeK<*vQ+FkUM@;#Jgy^CEv&QzFM=A+Tm(Yqt@QV2fj1wmIaw%bYsY@i*nHXR-@p`=O zZOE$EF6VlQ;9DmORdeh%O;1wJhu~dauq`h6Tk7ZQ_h1n}Mg4H^Z{H0)$=6)EZ7$s#E?vJ8!0@e$ z2djFLI$MxDvG2=%`L7Z(GzogS$@7q39*m=rn~5z;3|pyYhplf|8~nnx|M~3X++~&J zve0Iv)4}(Z;~fSZkzI3ezcv?*B~pi;hPC-XMVpbPxNhqBHcS+Ek-YX*RBh$&6K{GW z?oECp5%e=wnkWV*$SoxyBc|zM>=-FVE$nk?z+wnz8hf5 zm#BG21l>?E9VF|;2F8ulu`AX5fnH>1TMy>i2nD}Tli_Mr#ygCYLrk$4CB)=TbcmQG zW`wbnUc#s}7*z$q#<j4dl|LfLzIXc-^J@VU$jeyIi_QqjYl3HNce^4>3qZ z7?+8|=7G!VP_j3CMrc2@sY)j0a^u1qC(j?pYu znc9g~vwekQek9NaoAuhLYBMF|bYQ0fGtTtJab}p|VGKj@Cb!sa8!+XhQj+Pa8DjgI z&=R!NlD)b6I0Cs=)B)z9r;x(QQz4vXp zC1K8@=KvDpzpsr|>T8`C^CoI=at0(Bgo=I6o7{niM&%hU(fC2H<6p_zv}P{&Ss1!f zw{wrbUfHu;Yt3x}&^r5~kmVxK_VdzgN@TEZGllW+Np9t44m`uMoCy0f6Vcm|=p^ll z?vPomPdgLcafH_>@RD_c0*hFv|yb@da2x>~2~$B^>_^iyZg9eU~aKRT$F!D&^}xGZOO#ea43%c`x> ztTW4V_X~0f^=o2P-*u4dAb3s_dRkQ&?=8BN(1tFvflH2aSl}ItR6s(laQcx(1UcnX zM2v`7X+nXy8Y>I}I?>?`&`HD#SCro5fh|E!lS|aOLGC3W=b9X`A3?1_u98+O@hrmI z^2x>Gyk^puabXbu{leQ!{#h`OFnrEZK@_0 z+Lk4NV;#8ENiwHb^A;>6`ax5=@C#{s`~`O9)ATpp#3UPkR7aM~XHwk6)##t@hc|JP zrJJ}X`F0c6cQJMP)l_X9%_k!DviO!s=-L8RjSQ`S++H8NNDRABn&a%oR8mJENl4@vV?osjp z(8Zyo#%&jr^g8~50@ma@VEcz*|2{0U4}anQbu&QcfOP)*5=!$UDRt(&P+@^?a=BX5 zoM`-45dp8=#P_-GnR3eWcJafoHkG35N8)wDJe43D#ZyW1a`THI>RZP39xiw2`jbRg zKO}_HfeACustN*8V_S{BJE0*+PY30R{6&6hL6??lPtsXEC7sbzatb(3pfh<&o=bN0 zBLxmuPBjt)629w5)=7>1J|=z(uO@Y;I;q_$|k8vw`ETAE(_|FVzj{&jt~Dq&Aj zn+F6DJ4sjAfSi_{$egh_3%K&x(DH*FH3*_Xyw*X!LKGnM}N_Rd} z<#OnF>!AB0XakTdrE+Ac6g>^=N_ht87aSuh%5JMH<$Vh1lNPoQjDaifETBP3Q&X4D zm%4OubqVKp@{c9Mp5WDHU85^;vA3j{tzA!YPS5$TLr2Om1YY!eL&vtQY^Qr@F`Q^1 zH6U>9Gw0Iq#!`UlDHRzOrGx(zBPD~RWW!e8H%pKIg>cMk{|d7siPi6z8@ppN=uXvu zPPB?t0}iaXrv)RGYU-LhLR!-LP$L?Wn*?%kJQoqp5zLl7*H{4G(cTg5C9nYx99RvrTzMKFMP>+H?7} z2MIMdh1*2#mxQB;PE-Tv98}rxIR{nmIDBRLd|L@_MU-^aBCc8%J6YsmRiXtRzd*7m>@q?#yd!{|R7y0|Q9l-FNLM8g zan$dED0T*r)9HRGioGI=Z3o(9(u;f)`+Xp%WxX0KaeCSJgYhm*PUIcb0_0-*fFc^j zB~h7l?3qSk$zgWsB_g%Ysf@y|L@Ko87&UY(hdNQIs-a^W);C^%7(8+20E~upM>AX{ z_P{0cu0vMn&gu@MSC9~K;}O~75U5E@HvCb>4zYOf7tlhYV<~@q21UPVy070BNP&K* z=vONu7Oe=0+$F8oOuJk1EDuA{U;}n@M$bfkQ0jrKA!>RZcTkWcG~m)fiQqxyX*HR) zrEzhl>cgqtks3OO*n;fPZ8Fw3CD;< zXGax8vEK)B=sY<>_AddsFqz{y6#po5?NEHtncNRETU5jIE%&h(SI2j=7nj9s!{Zi! z$Vz=OcwWvPV@WKFWuzJpo{tAxHRMOdJ6{_bhjpQq&4pZv;EYOLJVOLA@3Vd|(jPx9 z=GajT^d)H$>CP_iN!~%T;cjIW%FjK9p2;r5&gA_ea&{~)A?G5^zQ{E`Q^39$RX7n( z_H0*)pShR{w9#1wy*61^PK(EPe{(5*72|WGD7H%z4o_g zl5GC>v#%=|2WfRN)LgNN<=w#3s9Q5XA5d$j19S1o!>e+2SXQ?tiJ4~;eij}}c$2!~ z{hyBMR-4yxl&at@w}EEKlJoPz_(GDE>ZEGr8Kq#t;!Rs;|DdmtXjgAC_*1Y*hnA)- z-oz~+L`Hk@(Y9c$0kd5F@wx|g(|~>HS9qO+=g!LN^<~E5vSdPnlMLPl1=@BrTpH45 z3HsF07NLOX6B(C=R!cp}!3IlAo$Q&+Y6;_ko}?Kr1?j?4%kM3_PLc#&@}DUqCd3$i zqN&RXof*xzH=zrMct%$t95aOjzL75*q+p}wRij%8hvMc}3>D7tIBabJ)6#_w>nU4# z;l{F>(o(|^Y^DYQk}5^Ek;ViBjB%ZYwQHDGHu`XO*O?@Mnp;I?rwx!SyRP^}Av$GK zl+2E&;TeO;>~HZcHf{E~gtz)!9YA8{b0?9Xu&9Bu;WDf_)&y(M;0CL#%uV;wA@RT> z2YtGGv76~6NjQscLd^v2zh@??a8pn6cWP))aKY3R_Zu&fEV&6-|*h;i9wH!98&lAo{*Fv+E?zP`Xhz=JevkRG5f>ca*9j^~R z6K|5#+?%v9cp}_ZM{38LpTLILVZ|V9_yCA7e-HuS?B7c9BwOb52P-|C-pKlx>2hUyHke*AJ+Z3k*xs$avK({F#!n`@li-}B~ z+r-*{+{V@ug`L0zx>!l?9P})Zv(UJJ)59R0p)QuT=sJb*Y#3(m=4O6zU)_V2jM&B# z4HOKCq=oKYI4q7`3_nq`Kh7?I1Jvs}zeMB-t|NG(C&uzkisHKQX)S!VN=Mj=`mN=H z)rUu2uLW{f^^c9Z-U#Fl{609CdubY%%DGe9+Y{>*GJDmrUOqSGTb#SQbUwC;Z@gdl zh#X^F4#H6b&2TgdN;DJVgyDZTbx&LUDM~ouV4d3s?pT_E*VMrV&C6eaD`1CwZ74)>Eao zY=PDj1=RE;Yn2@5A$!K@uD{UZsrJD2rs z+Lx+c7`%zktqxAFl4bd$NW(Lo4 zOrD$qGY6a82A?cd)B~2U845ovx~hW z+h}kZ%XwD3>4iDfP~-6|H}8fnt-4|bEz^!Wh5Jb$UrSSW_G9s;=jM$K?oC6Oyk+-_ zva^Z26|Z}<{0%({ueTa~cGn7gua@wycnq0lj|$!(6^F#H6zhgghnp^G9cu2@5L*wJ zu>?o>gxB#|!ovQ<4YQCj==25ZwHimbcmlYpj+EM5I(X6O(edEd-m>qwHh)KL4vW&T zoa=B&yNn@JyzV)}DQ!6cE|@WmiU&{jw@kwzOGuv5*jc06f1t5jsPeeCwCq}y&tN>j zzenmG(~Zs?3Cg?by1BU0w3=Pbj&zJrk>N?r!i90U6`oX=zW{1UBZj`*>QZG zxLfibtcJXA`wKoCFC`snGI~+EuN+04A0(H91nYt;7B{RHLpQ$;zfXLlAR=>!KtXSy z`(qD)f1O+uGcHZ6L9%mzGbo|pQLF_&IIpw(jr46>44V)_gIdG*$#LA0 zrF1VGyaYq1~NEpFJH{gLWQ_@G{kN57mC&$hobZJd36anvAM6&AGX zqRIaXcBgp4(5Pz{nL?CxM-L5^RYFCr>G9bmUi&ljJtRn4_Wty1MJMbexAE^un7Ts3 z#5utcByd&q$c_j`Utl1`GL}eEaw&skBq`W{Nn!0Y!xtzG3TOINAbQzM+~Y!w>B?yGpee3w?|DB6$y7F_8%i6TE5}N6jG24+Lu7aOVP3I zw<8@W5ddv4hC|`$Rimq+Y}%OFH50^AQ&GyxScZAYz!2k=jyr&DYzN!6g*GVfW`aI0 zw18Z&;?nW*#{$u_Bx{$hb5wvFL)DV6_vHqtG4s=<0hl>3K^GA#9GIDG>KS@ZNpcsM z*0(evqRWm?Hr+q(;J_9?G$7nk9*Ec7A207JvMcU@B6z$F`&>MRjI&|bx=32A-)%Z0 zthTY(;9ASr=$fpiITN&{wroS2`K;IB^BWQX`83>Rk0~-mF2CgeY@wIeCUE+|cq?>@ z_RcI)aO;Zbnfih^1kCGfCmw3MN!H!J6Q*dd(Q>);qwfM!95*LS>3fwH(F%y0Zf4DA z>a{aC`=hV{5N9>?T%**{>NNWNU#YQ8V?fvFC9a3PWjBd_t9-ELsY!*38gB0HOv?#! zbbOQBxu)>W#yU1x93A&(kB>J!KKs~GV+&^to`G-!5oPe;HVr z;t!A=?13eA6uVE?q^Vm}%#eA{8AD$B2FtjIO2V`=-$UAyNE^C=>Z=Df4`6-A2trcT z-*?!%C@UTklfIW3B<3d8_n!dnvdTOdu|eH66d3D}E>n>XzE)!3`u3tWOc$cNO8=?> zcRbK-;6ONGk~mBgj$b%H3$7u03Do4mc++D;(*kVejSL(SZ+duMtHY)NX6li6-NO)~ zVr8=F&Dj(9aQs$@S72>5_0IXwATquCw&b()B8*l8mn<>#6@!rPwq6`zuE1Q6KF9TE zjL|WQL&S0!hEn}|xc=-7y8fIPKPNW#V;rv9$*#q*#xL*U2K4IE4d~T7-++$yuSqn` ziOt3yu3sYP|A?tx2^;v~s1`BAp}8P@dFWTTG{MEuVc$ZwcqV84pb)E}fCgu!o-Ta5 zRwv<9@Hu<~&xxgi%eeag+tO{!^UPO|yRleLg-*M5C{sOdo=(}aRC5=TKLX_Z^5|w| zv+2oy9YK0k+(|F=;IWf(d<*D!D`hp%2?jj{^dr0I+|BOwNeg=j$c6m@$jMY*0dj(c ztw2tuG8#hT1Pd1dx!QcrsIDzn0-bE-Ee3LJmR*2ra~6HS%kePKCoEkVhX2L%|a*wvvOtYx4(yoTTSfph*^c2rNa)pksktI++N%dba|(lHUSy zB_F{l+R1#*2Xg(G3FOj!709JK9y)cRmD~j6VkZE(*o&jsOcZ-r6ni~T%<|q6#r`;o zy$>ktc@+CZ6#GI1jRG-U3&sMu7SsT_7Mu%|wmK^JD~;~gfZVLk2XYtGuK;qhS^zrD zuxSO*8J71MAeZAsAeZAmfn1J10lC^<2XdF&hhcT$!j1w8wV`JreX1ES!4}z@>@jBtIAzErYy6U8CtF8U4otOWi9uIYb@@U|t?%>~@7D$(4{%MDRAEY>*k){!thWwo2x62zveS z5l6d2f{4y08?Si0NSS+kSoUyCbF_^p)ecGeXdoiATo=U;9cdXtEGiYeTBGQ;f%!mR zw#zyZ+Gx??6LEd!Q*5V{ z^Knvmx1TA8ab4bLyR84OdgrkDAP4)*+J>%Iz0daICJdSL>`)3gWz9YRh_E zAgIf=vYPRQ{UMtg0llw!=ksq`Fq0V4;22=7!oh}f2(Pw;GrW)V&OYc>@7!KNbN2N+ zX{`Qh!^f-8x{)l$Veuig2Bc90VUqPF4fJ?cXu_YehYd}_1v>b366BLOtO#{M_IOTq zgcj_DQYCCJ&wfZBqtb=ctl(E6F6ashSGG$F)#PQ*8zQo>qm?>ySv9{1GyW=vw$3jv>3>7IceuL;;djn1)O7Udu$F* z6n5or=&t0`1@fK9w|7?!1mwEjZ-G_aL0;LIq;Y=v+IYVG!7+Ts`>$50%tJyesLiiI z)EB%YM#T^P_-k!-Y=NJW=_1@P3TrgVI0i^Fo{)!w6kd}K9yB?C^|9?#i07>^|n4v+qk35j4c_dz%p`Op?=pc}E4; z|A4P}(*|y=kRBf6R=%xD_Pq9s2rEqL|A{UvWRK3hJv>troOQV+Kh-5~8=U;(gr)PJ z(AD=~Vxym*%(ghOhF=bMxS-BYuHmbqNT_20rSprl4`3s?l;YKbFVccuM#iKyG{b48{*Lu)tMLmf>>|&d6UQ!|e35tO#Df=4 zp25!{izi>q&!LMa&t$RUo16`?WzpnIg7W<2%3xweesWbXu_eE#l0F0zXXY1){xOzV zGc2lhU@M^1uGpf|!~CM&O2M}ntn);W(~RfMtEZcNQOFcK4yNNd&AvvZ+U{22@i4qb zc1&~d0!cow^WCt$>~0wEh`PIB%zThrt}+TMPU4uAU!?mZ!%44Q*lEysm?X2*1TNopkO7%FRcpZ(E{@6J)ba7oKgWiwCKc=#FJx-p4oh0ocPH7Y&nQ6Y5v^3d z!k#QSYS;R>5D>a3qpe@Js()5nX;pvKmv6}r?6&H7A^UdUhlZ>!sevDOA!V~hMcwl{ z{wicE%xhtyBsJJguWa!8?kDZeUGd$>MUSrxD*8r}i;XA<7vr5mYl{`hF#PBc28DRk zp=B&Q>d=Kkt&k2w?;CI769mG3Ekd9%=JeHyjqv*8=BDG{Rh2`hquu)76FyC>ybFXV z3lJ??3-cYf($0>pT%^i({0uNy<0YhOg{`4+%Lh7PgeP2hkonedog%dkS1I1K)DNCi zMmjl*KAbveUG8svpvSla#d8+@hRR8L5eQx5MX@;DV z)ce@KXe94eNAk(}G+pnuJ(f>i?j>IJgD3L;-bPHk|1&j)(w|EO&Ec^$6;#za92|sp zvSu-i!vkI!DVSrgv-L>GdRFC%eAPqjajw(l)j4JZoBNz zGOt5dID$EqAl{L|8C7hTm0Z7#2Y)Ue;4M3?s`H8FFH~=PF?hB6PkRv_lpDJ>eD40u zg%!F66#u2V+xG&068RsScZ^5#E9AC-0;_`Sq?O5Er|-}zYlnP^{13Y*q^CnT&Hq5X z{Lmsw`?+i)dpg$fx5A>H3?XmXH66-^nVi)6VwR6By+S&Y$4B9Rk4Wc#EN>R2&f0aH zzMnvR9PYDiDHh7|>)>WVh#{0+(@vFY=!x8|&&sT}Xw*5P7x zeuW%FSjWv)%6-#uvm?m=aHDldmJ9q(*EaDJ_EolFJsq3*>-zdq2zkry=ukFq*$S!p z@W3%tZ|No-)~Ujp?Ru*RbxXZf6utG@iwr?}2JyruPEt9BjrE*ur%CZ;p zx|7_(5=2C0ya`}B`v*TeXz)sad2VdoHJ?hUv5Cr zhh&o`7Qq61(d6pB0wd8JEZV|Ps<23f#ekJ=x;6iy<;Ku08)$qO4*__@CQpVdZTF33<(5k3ISiW7 z>?LT@;oe1vJ_@@iY7{c?vJ@xmnR)Lx@XToTVY+%L=-<}Y~LQdh2NKU}G6QvLV$eVs!6 z!o*?z$)&iDDUPB>vJm5gCP|n~jP0A@blP0fPmy;JIm!Pzn|;^vqaREMzvr;_e?kx0 z_+z{2=3qoDkqGOltzIJ**3XbQgrow8#?d~rH*?@ff{_Z*3APKfQF)gXg5>XpLdc%c z+T#4AW2Eg`_FgDNj4}q6u=bUAUh|72u8A_7QT5KLZ_k%A?rUSi zE0w)x8nNI#rM~(-rOv&l)OKGq91};_w$Xf>Io6J5V9?t6*KqAjW9`gX^0!<)DBs=# zeIWG!eHd!>kU&IY@ahqTAb2PW;jnI*ETN%<*aSIB_%9R!C4A3hu%zi7Ob$;RTOx2q z4ols2b^wkXK0iPX&xag3;t4tYn3`?foo(b0(ixG%!xgt1ayV3HooGAaUSdBW^RC=W zLs#EwBxEM7?pq5qmP(wwH4XGN6Rm$8$cfwU16pdf*MEwjhaej6p7(Eo-0kl3K_(Y= z8ITLpiOs1hx`3Rj;sGG1s`w31n#wE6MBJUKVjGZCRn#zFF7F3{T;Ah=T;5Ltxku^G z1ahUc0=ZJ;r^A&pH%j*{AXnb^fLwV$26E+f0l88h19GM4K?GNdw9zi_TR<-FaOjK6 zdzk2s^+V!fm-hr9m-h@HHfEayCIOHeb2&H0sYXR*MR0)t449E{iTJyAE?WqV}M-V2|ypSbh1)+&;>xNE!`KRbc=!3 zSlG9susea)TG-ks?Ds$qTUZ4wm#ag}*JBn|8->Mz)>~Lh6!ul1r!4HsDC}Q=Hd@%v zqOga6p0%)NqOjM2p0_X^@?E{B06E+^8)!90lZvv1Kn` zuZhzA6v&PJFQc$$f!x>^qp-cJOJjcwP&fuaZtN#TVHW|pvCl+d*8{n+|6UZ<4dljt zT@>~*kQ@8Aqp-tKLbw>?~(n<$MiDixH@f3dR!HgM`8zJ2W3LOzu&t33qMttnCR$Bz^tp_LWH{b`Lv1T(YSl`+@@;I1DQwIp=ufCHGT6D_v+) zyJy-UjFsGzuSRTSFAe+tw-`Gguagqr_`&=grml2mV)op_ntdOyRLh59m)=6Vd0PT} z?QarEq)gD=B-1Z9N5o=h_FNQ|=Womzbcq>R37dl?vt`xB!TimK@7KgTU3myw|EJ7#j}vm;MgT8e(nreHZbos8?a?a%<%B zR+^^GC3y$9Q^D{3`D7J8Px9|~{QI*tv*y3KncLY;wGS;kE z7|#x{SWCsb6ABgls=qh4y>i|>pNB=RX(Jf7M7{kl#_!XjDz@5v=|thm^5WEcwITsO zQashb_FRFtxKYb|j0s`5xBqgms-|&y6VKhR5XIrpM=G|?K|48UL({6+BN9#Bb3ftdx+?tK_QpAThkY(S8}Gb%=&h6sVEHTBi?~ebW})fTj@+ifu*MVs4W*amu|O$O;bh&oHV>^(FoC8fgDHtVoD zNxHTf=b+VzF^O;>~#;H8)S7cgCQ?r!%T0?T)hx`k4f zzOBrxYx}_dVa*!%|7o)>pjoh7gEtkPx7MbTbel@Dw5d$pX;U%si0B0phk7?Q#%NqT zC^%jqC!@BC}1m8RiXszw(KNf8$ojD80ovc3#l5DaQf*)lT3i0J%~oMzN;?y**dw%QK=_`TQGZw%R`i zawnGMK+XpHV-UzMTODTsZMBl~Kp6|0#w;ITc`pKT7UW+6a(N{II?!U@2CB3ib&$!u z42m;w2V3k-K&~IR1AWP2?|>8@X0e|``cZArmw-l?6jX=*C^js9X3Fy}r_B){G4cZL!fP455?>KmA>x|E`DS@cU9%Ej29OC$$0KcJkGy|B6Vu)OH-uun>^LL zoiQ{o*7_|h)4`i3M>g{XTj=T9Rc0JFgR&J3TZ3haKzp@fy`-edv*eRVN_r znNP7MhsR1~$znb*sk-NF;&Oe%wF5M4l_QBoX=p&IXHu1LElS=-@>JpcvGM$*G0EUL z8JK@K9-Li`P0i7IQJU|=F{`obUN(F(tidUI$*|^mN(ymE-HqSH9AL!6RWIx7W{}2f z|134DP=EZ1>oNz(8BO8TVe$Ow)!3nqKe0E9E$ztQLBIROamO_F;c7Lh~LGE=X*-+ z#la)kvwg&sgLwtzgjsl;f%sPE^#D7>8ozMZ1LV@E^)C^j^@HoI-h2h7_^t`#Pb~M^ z7m}#|fq2tbs%N*^5I@qtL}oI&0$QJ%KBO#5KTf=j~6{a6y^CW6%NZHmXbY zOx_j0nhQKN%kfyqbi9O1AlEU5T))d4u>*3M+1A4YW?R4B8M}nL1K72NmgC;vktT!) zk^hxG86>GD!?@8imKeUBv0HrO9>tFMwjcN=4!JnGglGCvbrTr-()16wHU5AuF3=L^ z))=qTJU{2gTCb%I8hTrvVCg)tR7`&84`ffsI@6H#cq>TjY-dar9_q3=4Kz$u z-NMwbR?p5EratO0l><45iaa8JopA2G;42S7g0MYinLB`_40>M)Pp6mgG*QCSbL6~4 zt4gb+B=s3$LU*9cMjDH8huRWE4veoHo$P?u=LoN-?2OmSB;U@Cg!y?lywyx@H9?R;0ouqv{5lv-|6Ui>k_=#W?Z6p-U)CIS7)_>0qk z95=)HEsVVo$Z?YY5XD{t^or&9CXnN1ia>w1Fg4VLox;#2EvLnr zA(A#r?Pc|T0Lazb2;}OW2;@pR7%tS+dmK=?5R=NT z29f!Yb+A8k815^Br%GKc_xm3+Ziz1bdiD#YE?PlB!M1gEac%Y-&hB9sKjFG~FxxU7 zd)lo1Gy63% zm1yfIUaO6xpgI>0pZt>j16>s_oEct42y5S^kmIl~4$VGkEe4Z*;c78Y!8f#BNNO=o zZa`{m^B7_wHIT}Y?oR?a;w*CRNcVT5*dGG9WByO0SY6k5WNZJ3NUjEQUYTr3%4LSNDn@WcGOggPK9bqQ8C}HrXq~e*Bblp%_{lRicH?ukc zOIu^Gu#2yT{(SB^h@yAr!u$DLoO{ZBJYXNcavweRv4M|ZVJ~n#x6Va8Y!OfLkqGvZ zPyI$(9G5Qi=Nw`t)idd~fuGHZJGR@^3AwXI=%Z}F;A)!yjgUUeMO&!f)ODV0#ew+g7|Tlr&r zE4$!UKR;ns5TBo)FyC7dzZ{jvjQoVl?P6CvuuD-=HU*1BVDiZA0%OwhXsx8WO->6Y zjmam^4JRd^Yz5McuM1wdG?HU7 zeDRCe*aGZWOfHTWd3%GFg&ejgcLOO(&CD%vA3Eveb4&S9+j8FqaO8#TZG6a%4Vp7^ z2bzQKMr1>e4cR?pQ&Hyaon)en>bVHh>*h@czDEJ_n!XC_kIOHq=FFhu+ceKFTz`$V z#NCX~{lGqmuR#x_i*-7{e$g*<+{)T+#)(p0FN?u0ZFwu&n-w~P6cfD_H#GlLAMt#J zKZC9E$W);s<>$JG&&b~}LNWe=*V`Do*}WubEFR?dcb7u;vXBw{2*X{v zGU;+R!13@tU&k$sHXp)?V6SMumc^O&>*hjsEK6uFE*r6Yqa~YU$=-O67PKwSjynLO zb(>_}7L+{S(aB$ykS$v+$r|YnSyxMxPYdrBg=*z3SBREdmqN7m)+uBbA)EfzOP8+F zIg@1PJMOWbcG&9e=yD&nKsw~noH3}(ck}{jsdPLHP+G|y>)eMe=8h-bhpp$1jY{vx zYsYgg;$iB{cWmNgGY~X(JLq{Rn}?rYsYM&-v91*q530)lC-gxV z`y_Gb*uuAw3o#3HTz%Db!+b~`+(?Afq2ryX!+cwYq7GiiGP)W2jFTY|KfUcQ6?$L&zRnzdXvTK=LYpyq4Ud|A29h zt&xGPm=jqTGGCdbZKYd$#_4w?ebnC$PNNe0l8BC1msHj3y>@2Bq)MQcQw$@t-R}i zTzOxltFA|119Hchxj?R^c_3Hv%|Nc?p9B39eW@tB14w#-in4!!KX-L3iy&DTH(70u z0lC_K1?04MMW910HiZ_=Nngy@L}Z3}N$t}dV!9Z~!H1aSL0pFAnfv>A=6*$U(8t4g zH#fr}x?@ec`7iz*)(-~ivp5k3lco8WBb~Oi?;O%3w@aHt~~CrPqO#- z{TUoGYBaSccr4yo&%okXn8K)x`xPJK8`GFZ9kpS!o29uPDvXnq+h$#SeD_Z`G@@btw|N-x{g^cFn|5Rc zn-!EKznb<9~k=#%+k!&ufY*uo4z8PCpW6%4S+_H1aO~K}=lZ9q?{gy5aOBJp_ zS&^*bao`|X9?ws;y-T{&()+nP-;m$wmEd%6#fs1_Lk6|ht#GHYDTyQQF4?q6OgqHX z_@YltO*9Uz=mJYqamCH?&J!6`-so5|ZRbAOY&1a-{vNaOTWZrRU_msDnNTa42|s9F zw!7KD$h8Zj!(?ebutGvxnC$Og(zN_SooW(W7^dQErecz5kv_;N>8S82 z;~j7P^Oo^|`e>7z3(Nq|M!6Zyh0~@5Ufi&g`&cZQB%beacs(yJD;H=)KTYKk&E}Ck z$x)yP#!Ma@DnAG4Cz#UFj{?qwYWz;E&aJA~w>XGsIZu?rZ_h=gt*C3ql9eJ(ug-O= zsB2YJ`QuDFA{VC=J*=dpf~%~?wh=YoXx^<{!ZZ{ykaqhYuYZad;8$~N=HPU&X0SSM zrIPlYqcP4K3|4y`34NDVv)tX3T=ET@_l5NM?`vbuq@XLw@jq0X=AJzG=^&(Yq6=*I zG13J+eql_^@BU2%uLde3%4v-;PiQy&QkiEzA}n@^`N4|pcU6mkCxPQ6bCVOK0bA*kpoVRI0VW@ykwaj8Z>yJx0>s%_Ph;EGO$xj?)Bl> zy-q7s#ftmI1Jm!~g4yRAZFmK~9sKeK{d};PR)^#7Ei_@gc|(qyE#$y_2zT9tIJCP0 z49>nI22ZW#=5dI~e&M7T4mXSw>;8R3@E}HAe!11{=c`7BQTZv2DCI2`9-bS~c}DPI zeqdc=n*8z&;WRTVPGfG#`gvCE!p7=&lNo1uSDy;LrGxB!TBz)zrM2UAT+0wUGwEdE zv#iVqvpjVWxbX{Yw%ur@3l*_c_oj+;d3W*aoEtUq&?Y5xV=xtVx+;cM^hk|psvLt{ zThNTEiqVjTQ?b($ck9xL=%bloteUI&(_5++QO(|IJk2_(6cd&lZ%FGcd>9-NM$Z^L zKa-;QnabRpH&ShUCkk`6o1dFR9m4rhtNlUq)244XKZ?pv8L9aZ$o!1d{FGqLk6<@H zX0FlyPqS3AOXJ4drf6if8}>Ujp5E0HnI_55L*653K4_3mw2O|G^iOhWawy-9`#l@T z@ru%PI_~!iK#o^j9>uNzay+k0OkM29HIc@xrhw*{zE2i#j;A~u$Z@Mz0?oD9M}aOk zF8Mj2OD(LCg?YI_vVL*aUkem=h`7)n0<~L?$AMgJdW-cc%TWd0cO{<-YW$4F$luEBUi_`j9H$VkeKr{^bRUI!?O)*As|Lqrf?Ki5 z87c3|huMgN--d@RzwlwI2PN;Q?bR>m)b8Jf&;BJ${&<}tYu3argfj{|!Hb*W5OAcN zHE6+T*22>wZWd*rfE&jrDYO5nVz)CPxZiYd#RtSnyS4N$K$qEi_yN!r20a1v@vDT% z(;3Q(4-|A6&@6-UKr;=x2Pir*VR>jrCcoegOl3q4#-XH#l4k0UQ3g*-;gv6c#dWD* zW4drOb-}B?n#P<1btTq@N1jc_A&yJ#o>$G#vGLs7<=MTti~UBQZllVf-*yTnxFS1d z{JpY;%~bUy7x4?~Jew)cU$Mw9ER6A;F5KIwwu03yejWqlg}!|zxf<5kslKQ3pBisl zKSfif#_Oi?}u~***T=T0XP;Dy|Y+^a}6p&4=PmUzMW6zPk@BUagk!BogXh zzmU96mDL9e>q)^Piow_GSSPmUFO3b*N)sDtq=fmXheRy1cw~b#oPPMgS#|+E6 ztTa+c7OIgtq{KGM5va;bi%UZsF`tNI#`B#4>6*zhbwf{5dN94I{w$?2QFu{rGk|!L zQiPpkqBeLPvNmp&v|t+w+H>S2oJi1EQBbK;rHGYU)I?EHg9*avCQ21s zdbO3_+Ln8zl~yjIP)z_Kpke?O{Ai2TYC@!9Bci4!X?|FGc^WVdSf!2se zP{id^7C2@#iC=Q(rlVh(`WG3;QtT4`&bT*wrCf%PY?Vg9^zzL`jNZUT>ZH>K z-7>w36N9AytSWsgo70zMd)&@drERvwV0&&>K5yR1zwCglwu_d?z^Cne-GDVdKB!mq z=b4%BB>|NgdJCyc+FMZDPA>HxEz6@4lw*wL6K#DK7xGgvxS_%u)*y$f){l70a`?}v zC=sv8#EXziY!FNKO=^K?{cns}A&>c`Z3snT+ABBy8^`uPCdv~?Mrjk{rR@xoQX|?@ zrSCXTQ+HI7n|!`+ymkkpTlMSA`eUkfsQ+#JWc=2uu}S#VZK)rP#CjsNXf!|UEqlwW z^9k+v+FN!OdbKqY@cN&P;oXu?U>Tq404c#OweX$;q^BbTBn|omXVFkNUvV z8d5(RBk}c08xpBI#)2qejPvizlb5TjPapJz%+FV!sP_~58{3BZBR;CAze9qci6((= z`}NTJK8sMzI7V#cVC&fURcpt!9TGksN|1hpG z?R$EDR%%A|P!4^F4X?=Z?z$V#Bz?YY^7j@l(*EF9JeO0KkYsHe*si5sRQ=)f&*76d z?cYf-bvsh7?W6qWljSpJN-~zVQMxD_+O}awkEkUY2|2!2UdfTQxUo}f<*+zC=eGY# zx&?K_T|p7097_ElL0~cDC_+F6gKBTZzkc^d5Rp=b620u@(Usy$5Cfhd{935n)<+A;@`nh1AY+%TqTnR?h);HoM zLki?1zO7ZLRNpdbg#S!*yyO%CmbZR~Z=8OxwEIt|vQ-M?yf2CKGKBbgW*z8AZG%c9=`%h-5I&RI7{l^28Et>5nC`kR!X6 zLbC1|B*MQ#Bp)3h4o>49v>*lp)~8DE+gV-vI3Z`!qqH_YcxA#nbDIRFBH<0=FSl&V zAtvVpnm-AD#E%2V@%r;~(x$bUOu780voR^wHZt7481WAy4M$MaMua}@VV?H0!wVh~ zbV$OOMSL1ueV=!`$cZEz$@LZz6+^J5zD^e0AZ0@Yk(o5CAcyBN>mwBsVs!w2rGAp6 zQx7F2`UG*7XfPRPyD;_ZcZ$8hRr>pKl>BodJ;Cz_uBg9L`ckzY_DKC~94}DlsHk5govsmHVlBO%pfJ)fyLdL}4P+g=8c4+? z(seKW3~bTNGb3Mr#{>yKkuHfphK#jqa&zA@le^L_eXMo2yr#1i%vxvaVsPyl-JLro zP}RAB{<-ydLMJOW*1aT5UZevqe#b9y%QcJzgHHBf=sVX-SF+j69ai1~$@F_pRxS~pp(N+&+QAbQ&{gVI^tNmWDcV|BtJz184JI!~ zW^KFDH57_@w~BwV<9MQyD8c?feeS_<@fvk|E%a-p+uUGsHdLi%zlLs5nh)9X%B#>! z^<^MSJvZsw@sJHfuYqn+vnkGOI#i=(cRRD6LA7f3pU!NNqejSlS?kPRg3OmUo!NVk z`O@yp4$aNVx$Z~lI1Q-zek{-tJz{_Hi!YvK$U|s=s|ru36jB0PS)elNFBz# z4h>Oz?T`)Bl6pjYb#K2>?uVV-=r^J@t2ZK?r8mE;$)0zWtg4{6bRLlf4s9l{cJG&` z?CEV67acQ@ST!^!AF)UOlaWFOpKVg7pDP*CH_4TWi&+?@?}n+Hn=#x;JCZXpfkw}X zuW~&@4eq_es2JoA>u~7m$)8I3GgkgglAhg{lJ&!LrCznc8vX6hd5_{q)FQmvU45>5 zSeDxJ+mBq;_DlRl{hxp^J-kAKcj@xa^VdrG3D6HH>N!~_LskcT8CqN|W;a1&KPwbF z?*h3dnw?*}IMkl&j2U8hbr(|hHRPy5h&n`!8N|b4`SORU{=;H1`BN!>P=<;Ta;9lc zz>OczrS2Q+$8&W55EXPh)H-@lFK?O*7$p@x z!}-y|sO2^1QZ!WQq>gXC$!6)VX9#hoN$%|0~_=WdowTo;ywkaf;&zPch&tS+Vlg@*l zQnPPE=O|qV*@Wv&kWIM$60#}FHIS8$b&#n7ya-wOcnz{8{v(iOb1}q`^Z+aM8?tli z6fGX2^Lp5s4A#%2Sf5F$K9fRyCUZULx9UKnwlTMr*x0Rn%TI-@*vVT)EbAGubhIK< zf0t@{V8yGGrLGG9)$-KEd2;K^Hr{eVM|tYzTngXtSpyo%R}Gyb{gCq1P&5Q?%w62x zjx_i$qdGP8Zmmd|L>M}Yf=$=bI}A+`scZ7z6Vq+-On@t-7Gk@h{F%g?!-mc^AyOm9GY5Bcy=79;>h7k`!0^dKCL+3X5z@H&E3mwQVuXD&7@|`mEWl= zB+V{aPRAoi*SjG*dhR~R^7~21J|1vGHF#+P(rTi4Mx%~UAp{4URs#G1X;WE70ALQU*#~Fi3R!H zUIXy<+t3UIT0b8Y!o?b#MbdLR(7{~o`j%fGlWT#U+eczZjeTEne zy7EY`?p7$}>p{=;_s9vsVlPlpP1SC~pu9dchd^SE4zwQ5j9y(|3PlYPS6&!ssm4n% znJXsfpR1N?d^9EvVlpAnQjJf>WHTnI8F+{x8oNDI$y{{JMaev#kBxksAk(5`9!Hib zfU0bclDR6IQxH)Q?x<`on&xpo)tAVpd^ry~?oZ8^hgvx*8YwOyDURef$A6*iaOQkc zGItc2_qj(M$z>}XgU*7qBqNKdUfm_s5pmQEBpJV{91E{)^QOneV9*4T@oP}ZmxFQ9 z`jX>C<9;lij4=$#>t|Rp#z;mv%$9VBg~^xUxSW@q!Vth-NNay3_7OFxrqwT=pIx2Hn?>Escr!#eMcn?+Ek;&R`gai62w;y~} zqtvC3OAVqfnf13kuD*#jO+OR4EsIGFEK=8W4ioe88W0Uy7>HuBea}Fgu@8Ze3$vb9 zPujw(lxB9g1xqgNj4>SI(oQ;ZS8;LYUv$GKtyM5g{2QOPb-6-{u-%81gbva5yK|wD zlchU&8Dw{4-3FP9-$3T#S?FMO@gg)zT`dgh*R#yA=gy?dO z9y-TnJ`RhJ3XHD9ODwT-n3mt7if^2HjglMHQdM?o>I*DTOV8(IDPjz}EB$+_s5hsr z_v&U#+FxEPwUNKO=o7uYnQ^$Rn8=QFl&$o)Kf#jcVge<<1LfDRsLS^r_NB(+KBck` zImCzq>>ggrVRYr$&s85sXX(VQ>+asX=FTw9l9QH5c(Qkf;i_hZ{1;+0`0v+K{l`W~ zA@AHd>sfVyzeK8$WVR}r2fM26Al_ey_Jk;_TCOKK4E+#21;Co#wwL@`b=pHWmZWO! zbKdQnRq0C4FeedZGJ#~3o*8K@368!8N=aW8h0zi>xlp@eLj00TmiH!AY~AiD$Qqt! zAZvKmLDum62{O5m#?b6}P_OGH=Ve~r?8Tv-Dh=mCBb0syxi#T%RZq_pnSrkzWn}Vz zt+EQt`GidA(TpYQe>aa*DfKs3Xls`6wU9F~RD$goStomc6&bJ}2Db2G44 z`yBw4XYnTKpTa7pSGS$-Cj9#rVifnEN%;4OM8u1ptGHZSx%l9xHX#$iT)%}T5mRX8!Lj*??DmtENEEzj2jUr8 zCzU*yp0iFe<`3AKOr4T?NP^k=nhJ?psi=QMj0jM%R8*`-Oe`oI!6E`R4w$cw`^v(y zH|+|7yMt2HBkuP~)#}&keoWA~_buC-Ch5RMO?bv(e~-w%BEM-}>%1QISN8DATA3le z)G{d4iweRR=j2JZ4Dqr=)WWWz8L*z95Mf&;!JbZo6E<5^_~PlD0hL>o-@a<_?rR@L zS_Yj`b&w033`%0Hf2V!cxW^^>5@>Z)ozR$YPk^6Yb&QORa^yyb&hxtub@T2n)?KRjv%i~o2@n=bLtMomDs8-wRrDlTs&ZF>kfWYeJy=!MS|O0g7As_X%*%!1YuS) z;kU3|i(R)R@ju{cdmE~IJWzhFJ0)3rMpji}kVR4PLb#Hvv=HEBRvW1y?iuQ%gNoA7 zH>ARu>?)k8E2OkL{TsQs@hA+e@)6aUl#YMqAj<2sQuz&#Rf}k(t?_p^a+R z>dX$NEUi_uBO$Xl46=T|G;J^I+mw4d3$l4JIY`_pDF$Anw04?9@H*B`m5j(**e73} zx{CT}{eZ0_QkOT6NL|JH-e#$`SQvOo*Ko9oVr_Tv3*+&lb3;%edKx2GtHjES-C7|j z=52hAq)>Ut|BWxa$dXNX7yzcD96zG4$mI>ES=YfpDWK^W5T9E8nC{HhL@^KRR_71 z(L5WZ8y~8x%U30ym9^U-3aX`X^iB7Y03$4hi2jl)y!X%XIgyvQUQ6 z+>v;;Z;z^j%2Q-U>eM!r5Humu4OVqr3fmABjMl+a*5Tnc^nZ8B@Rz#kN>^7&5`_nd zv>o)M7TKN%U7*q<)xiYaE>b}^0EN(TavjxjVzg9d)Le}PA44Ho1SjgIZx`x498E*erdy2L0t@HzI8R4f;x%LRC=>iwM5V~Ke zi{6m=_YKI3><^$DbxP;~Xs+6u580lJ522u6!Cjuo`uPQwQu9rHThv^l1$UYhbGLy4 zji8;QGG=vcJ2!9D5BsR~OnTLFZk25Qs~`3W{Zk$CRi6~pf|4J>MmiLmrRbp!EQ-a9 zDN+hj6gT5qG{xreTicFSKpTldQB7j8g%n3u6|4P)TBjE!eucLC3Hd2Zl&0ng1mH}Jff z=VmYOARagKxQ*X!{N{Ow9gMAf9`krC##TPhF`kQguH-q!^H`pR$95iJ`?bY{t@T+# z=GQ)xt8vhaG&{vXZsG|i5jw^pNDDqv6C@Ykp3C=U@$Cf|&*iy+=LI}B^W4DmW}ch> zH8E+$OH}P!VGUI?L$grgqJF$_0wkH$}gRivhh=Cl}+EU2i~S_ zOoC)bza)2Fklgt}au)~59Sf4XlILwC|JWcKb*AQj;#dG1x$DsYGAQ?_P2q1!M?e0w z8fB@zTZkHI5NvqAM-_~vUpc`XkQUwVd$-gS71JBpnmU8(WCZ=Vq9!!vWn-!s$O=rk zYmqhzgE znk$(p?-odIib;cHr3A94Vw{}1 zT-FJyz87R7+JF^B4P>Ibt2mmQXS&=>u1i{uq+c%$Po!m)hDkKfKa1R2%lb9QTGlflYgvav))I;uvh9i7 zg+~*$?OaO|8U37A%Gy7j7M2;8VjU#cewbZ-X#JTV$?#uSXXLb{iJYC!OiFS-=ny3PoJB(AoV#DA()CTP-g zS8|-c&dEp^^SwgavGLw*(wcFk4^8pKR#7zu^ zJ*sk+ z>sorTcM=B;5i)Po4)4^pH=MBDyW|jj$wEU=N4ML(i&kqOSdMznyQoPrF;6}43dJSM zdlxVFPJQ==HhtDlNk23>eJG!@*P_Mp5Ix15tmC12r6TBKVk0ZlBE~`D9K?nm{GVf0@yds-;dJO0zqd0kDYnH9yN}F*)e_F`GJplHRmh;to|--=c%| z%3@g{yh0|q*V`P-U$8*tJtpOBx@a>?>5lne$Jor;TBN2s&3$e2E8 zdvohOm^>*<8Ld;HWc~0Maw1F1rASVOGTBCg2TRKgaKa7n^}~~av#)jG>^Pit7#vk~ zyhqi)c`P#qxr=*9{767Mm*B6l%z z#|9Vw37NeG(4&(@`u^M5Tkqb!1espdpWIu~l`^-YoNM2Z12pX${{bbn;LV3@U3wW5 zR2GoAkc~j*;!lu;>K({jm90Qq)FGBW>K$nAJ`(-IMeoA^5?LV4>M+n20 zOdh4izRlIxyvhnI#>H35%%D^!Ea9VoLHi(W1&2z=3`0`XdMibzdHQeEkuSa{>d)yF zsywW3|IsY`tI++N)dWFpwEt)>hCx|i*+y%R*3oL_!qJ*khm`hrWRkkfE)~EB86hS8 zK0VrhBtj8*iL!fz-_ZV}c^FCO_;m?SJ4fK=Y=yGU_6L^WOEnGubL~HB!V-~j8<_7; z2R;Z)T+i2IMj#se6ZQyxr#7YaUOcMs!yq%qh5Q8_&_1~x!mBf?&0%<}znUSeD_mG* z)}GYXHcGDkmS$UX#M#(e$bv;FYlhJWU=nZsDFpT)73{%~jhaOX$WE6071T%HE^;)0 zbhEctLiRQrQS;QEh@|-<^$!YCwQuL^ncuq4=8+0Aq;pfg1dqtW=ll)Ya!h|fx^TMU ztt|r0*wI)pNk1O4X6%cQN%~iz9a@@VoJGzj3+3Y^6;o}}=F~sdA|6t8ogZJk>cWg+ z;C3nw+>TU26@K=B_VPiCrE5}kiSNrC%eVJ3JtIrCKiEBGq+)|-G8DHF0 zbMgDYt_;v)l$Th%eU|ig8Fp>PU*zx!Ndt;tAzio zbftp6RiNFvtL;pGrJeYZ7V+v+0s+zfviXQYRj1xs+x+Q|$SEPBdO+S09Lb8Ll$?I? z#a&do2zl*_LKYX7rzhc@(aA*3a!)kPEcYbOEcc{?Wi{I*C|^57(;;&qnoU--Nn>O# zq^KUN_WlMfRr(0BE>ura(q?R9(3ARBMAiJ81et%;kohM=UaKiZZqS|};wrfuLNj0o zVpKk8fr`OkKNX0y_X;$a+qfI$Q|7SqukE+tIWUsFC6c`{y|zfJl;twwuxyAyme6-Yme3DC zme5i=SVF%JSwhEDX)s;lj~$<}v~gCSB(=05+HaF2uawq=gDg=@*Vg0+$rb-DotE&Q zoQy=;fRpN|1p0fr&DxO@sR1Rr2XTibIs(Yua$nxfC=`qnbrq_YQvDQ?zpY*xmTS2z_ zb)u-oid%T$zoYny6{^oeR;>F$R;Wb9+~#sOLwDXFou@63wGKNV zyCq{c)RNB#CabSxlG-~SGJB^$X74npRqfS5Ta~2XzO5t*-&>TVt6^rd9Z65e-rn!b z=0bl{7Y{l!={T5M>6V#`1&$U%ZR$e$92SD5khu^MGZ!nIne;L2?KAFevom`hvJh-? zX0JNh44Hp#IBJ0`1RWHcgF#R}J8)?|O2R=9lQV7*gr=tsf^=AjB4&fWqnz0wsKf?A zGDK2eSR?%>20=Zm7~4$mVh|)l?tL8uRS%W{Q1xj#_&L=EKa9-QS8*)84t^vf#JAQT z@T(6xT*0L6W;Z75DMPLMGY7}~M0;?36|0l@nXDgP`Ol74cBdY?zZXTCg?0N`EI*%S z&=Rvji}v<{Ec?d>EnBo#wy%Sh5|YzO^f#cb>NWvciN4Ccm5ub)h{~})_Exq6STjBc zvH^;e3G;6iWGJzJRE@FYCtsJ~3b(T)4je<-pnD`0YPJ>K*q@bHy>5`ZW>5|wte&y`_#@S=^t3v`ri&P`WHf0_G z&=-@wI2}H^`FTiP`z$$gBbj<6=%Q<9MaQ~mB`(GPXzy*b%*5RIl?=VNVAy5a`dt1R zjNJ+^xwsWSI(RbnANFLBYA;oNfgnkTsiP8xX*Q))r>FC{z?=4SN{QB%+VA)3r1$Nc zz@oGxTBfy2WX-OJcFs6Zt@<#&BmFKv&^2lMrgr00Gemc7L{zT)Pbz#}xg7L}cv5|= zoc$)_AXY*2+`=0#4OX)0XMIolH8xkH-5kCn(+N6cu_V6j(>=duV12&MAH2J2dKja3;#Y2LA)H~!(RkWJ>z64|(GdMJ`L&pkFrK%m40m*;MwGd` zN8~j>4g7?|F+@)*5F}?g)k7fi$3a%CWQNy@#uR9o4t!FO)m!&L)?06cp3=8#-P_IX z?O24tisY{#bMa@WNnN}RnSY0SkYSix#VlAZ7p+a()L(E2TYtOzq-wYNjB6B@bO(X|B zB$DOT=>wyV5`VXdZVYLi#EU@>$x_qxF{yrwX^t6BB(ryv*G}1y*Q5IAAm1W&EKQV$ z^2Uxl^v;%u(`(mAZAcBv+KJ70>5Wz*;4!HLN(gGcytN=t2uFKC%V9%#GMu_p`(@wK zYBd?|lF7H@iLBl`o(P!`NPTNUKze5VP`lGIuC^>_hAgW-N2<-%wGoNmpT* z_Naael_@nr=JRuq`TRU&-~BUWoe*iH&1acdG8YFy=HgJuT=av^QlDiDkhv&>>}%hF zEL77R-RVe1susQnAafzw8}>EXoMvBp4zjQ9c5id2;q2`}ki9(;ve17XvarbB67%m2 z$XpDC%*D4L3;h+4xsYBHGh9_C%E^AY9B4<6u5fvLv4391vZ7g9xLn#J`_74weWwVr z?@&1&ezSXS!pHJP37QO;fk(VUB{SkN7tL&q*AYBm3fb0qZ~Bi_Eze$ zSJZ?xEZzqnOV$r(D62=4gf8~FE+~<$Cgmia6&BA@(X+1pMzVhBBxy*#nyhU|Ru$Jw zJ|?T`oVt*b5f9ezO2Geav0I-Dz1;@3cgk4J_n|^uZ!0{u^0zgRVSAF zcP;>e;IvCWdsts_iQd3bZkK7YzARr1*_Rr#eW{vMM4&4dHBWp=gLGojzq44ws`2g0 zdU{seo0g92Xe#Ib_u@+LV{R{5l2VONEmYFQCX;BNjtDQbBO~m_KQe+F|AOtlxGj`c zc3&;e;zRppx#s3^Ssd5r_xAFpig3xW9ZjLBc>(7K<4K(iKibPkbh~l8dn^58tD|J0!Rn}=KvsMH z0&k)+CM8tuKORlO zTfHY^i?O=1-r}0R46~am)9h=!_sM>`%BjA}+{!?G-wyCK`;IUNd_oF*ZY(|aM4rl%bBaI!nZQ6$6cV0xL;qo>KX zxo=lw%(wdUXiS5BjGo-=Wdk;;?1@!$01;_CLmAxHgASa8MqB7`G#PEACH=zmI-amt zikt*l-&CftEJX%EJG94F>S#1%^~AR!s|gUsz?Z3z)i!rP=F1PAyF=sK)H^!8sh4B+Y)5aP z@7dMSKMmUw-tTk=EHjY7?qB(=?*5fsguWhwjb}&sPZg~k+{DhzqNeO^b~-jSP%#^D zWoCz|&d{f7PIPRqJ}O>6ilqmuf)kIZARw7KfY6;aN@|%qdOXf`tlpd8IG+nafK#uKAMX zK^UrY{fB1o!M0xhLv#5Jg32xf$r(9Tf&QIt^sPQD^^jym>Jf=p>lX>q)b?I%L-p#0 z5i;A7%HUn4IGod*#L1IRZCp~?DX|3lO50jb!olIZF=clV3)|%>=fGJ*`aEPx?B|h5 zf7D53Ir7hxP_BS%Qu%*$SLTi532f)yaCBGZP2E~?yE3K533p{4O<;A9OZLu$eNq<3Q!$pwjc8+ z(7&s_UqQC~@IDmmM`3P}sbQHi=YBXHsmO3%o=d#PxAcuKMg+3WoQVOQdGs){-3qeE zVdNEVQC-X{55XwwuBBO7+r2TZ(uT)&wl;ovtiPYq3275r|C?`+xA-$aq#4i$@E z*(A2d$GxlZ@6Cptt>G8;bio%lhoPa1hQ9>p!p#KWH3GL9$84UkjTKm3$GaDJw}Jn! zdxa}R&0#t7a#;^mbJ%8% zq$BjBm&vuzL6G{pPsyOtg2aSx-$w~Du*dcnEx82?u%aGz=B8$BX50|ALycUfs4eoE@Ji0tkiE#_-jNA z&x;Rkt~x6c$=n`kdZqmo2CN5{LrpQh{_{<7kR|yU>~K zb|eS>wx7UbRxkdat0Qb3vPCpuxC+E}3{+s*e>Z)m21+X7$Z8YQgw=g3To0tak^xzG zx72c*D4|0YsK0!MZ#8Nul22RbLdN>%>GxyM3Vkc_vA27K$xg~-f2al~2p(b6N-QY~ zyia!>vYy?9ET1o~(r*{KZx4jNsUa(a*67=F-P?{Ki?KJW2cg@}M$BA_Ig5>=BIUn_ zfx=7P%Jt_{GS>57Dnja?(ao~atJo{tE+a^(`9@O@9Y@&9$6Kg;jSyyhdX z*{i(axtN{9pV6T7bjT#w=IsQF0m+*7*ZfPScn@D%<8#;a z!^7&bH~D2%zzl&&z)XROz$}3Yz-)nWz#M_G!2JSafVl#rfd>Uf0`mkaf%yUzzybkA zM#B~g&{Z6^SRe*06&M0E2yhC>uoVIWfhK`s;2DAbK(jz0@Vr0)ut^{vcvavSV6#A9 z;0=Kzffj*0;BA3Ez&3$g;CAZGri}Fq2C-Y`q84N{H)SE=ozK?(9=o_ zpfyShq18 yBQ}g;pswKr59*Px&dOCTN9{XlE{0YKE36$pEZTX%p0-^eXhE(q`xh zCDBvn5=usuBs&&Hm4s8d3-+oSis|^^kY7cucjZ5;c;{Nu`iEr zq#uvuu_gVO$K%`S$38r6OF!oF_`Z7_m6N=D_%0sTRb;PEUVh%k$;-X)NfrfAF0V(*4jMmF7aPDm@6jqBIYBS!q7>lF|ZblhQ(HqtasNMWvp^GYkA z4N6VWdZlNebxO@pv(od>b4sP*r;_}y?4w-|#<4Sc`i+e(eW$)gzdWnp zw)hOJ9>l)<^Yy4-)u+*ZS8~7#IZVBT9vM5ayu;$0`6{R8PMtx(_>pcIKlAKovHdjJ z&nEeKH2&4`gE)D2`ZoMadQV(<5%WxiJ$h#6@Z0}@UI*rm2a0?4T$w2NO3#{)4!)Ic zOi!kJGfbIzizXgZ=q(yHaBzz^Z7%)|cqLi?sB~(Wr990$j;{^lh?-FpwdGt_lDxbr z=}*t&HS=II!d|h=f{w#&`|`nmoU+ziG<^&fc5ITBgvkX5Ufz=z}ONN zObs@+=9c>n+)Ki-nN8yx{}MbEj~{TqOvYz&(2&}h0X!3ar1TwcWb)$_^0%{QPbqG4uHEV*H;`gHP| zWb`FTP(xp@;i1v+95%z+Cv@3~;jJ7$-W6{veWP^)QrK3rXe&Fa)$iDFebd`Q%vwKTK z17GqT#T<=wRO4u_Bbj`%5WEao`n?AA&=h|YvJ~I$-hSxbw!627&~|RnT$l(QqHd=` zc}g=N^I7KL%)iGWb8#xOb~edB2KuhXZ7g)9(l}^>(gf%VrHRmZrAg3tl;jfOaY~b+ z%ax`;*D2LN*DBRP*C@?^CMnH?zON+uh*vAgol)OYngdN#3RU1<)?&*=p@Wy}{Y28Q zzgQ>ObB`6N(;k{`Y-eKD|IoL-217@6$0Q@GSuD}xjP2KGEgh1)T<6u;>-Ew0hxFZI z#4yV&{2TP5rmgzRYI&Y?;PfV2R^92w$@=bGY?TgZFZC9+qAKAptMK2A`|YK5tE;|V z?!U^pWeMpa)#-Y#{{ma7g0NIo`DWO@DwUnAU7i!?6yz5%n;`+PZi{rAI1B#SQie3# zB+hC%GfFJ>%K5bTBz-+3fm`sHwhFwBd-txA)1_Hqt`U!<0=YE2cN6mmpA@x2-iHbUquXC z8;IYNG5*AtO6nGUkSKbqbK`P&_ic;+Tseo01Z_&}0gt-rS1Z%=M`M_b0&$=nyXG1+g4rN=wb^f;P;WlE21 z%!BX|>+-;-_{k*3#)^KsFp$KM8(I^+`OxOLzfsbIQ}irb8~>J5`(_W)W#^0SD;wWD zp!a*Rx*gt(`NW9f7sYo6vMdwsmGWn-{F&q(R##9X7WkbN{LT%27X-fz{Ko3GRuu)x zMF{mOk@-q)bS7RS>T_y>qFFT*VHX*HHG#Bqc;raVyc$^$;g{b7jyeC%5 zO~r*2DJ#|k*rep$+vqpSsS-(lrWQfhN0_=oJ`gG8(c`!;=9LxpJ0WWf?uD$G`FF^g zg(TYc%?i4c5$j4YFqD49I+@pB4Bw0Wue|C(%fTX6AMnWNy!f%aTB47X3{o|MP>a3-sEa)!yP~utN=$u6j)5pVODtzZ8*|b%ExzS+si@c-KW&*t~ln z?X)fQZf@Ev>RoN88txKOHsKF-UD4#=Z8w|})EP{vTlX-zp(RQ4v9meZZ<+F1YKnM$ zpW@bMh@jSU34cetXjh_W=RZ)(1s&+H&#N^Zo!*D6WN(d@?1v@Q!#YQ6x|Lef{a6w@ ztm)RuBEaNy*tNc(l)DJ9Sg_%*l=9wB$t+*KReN97+;mkR`EuRiKKC%J-LQo-c3N8xyS>}<&;zlyo*uzi@oIvsK}?dS-xVckF8?em^d_O-fvnuf z@{`Hx&Cr3`gi6QxU?u4|n~VFLz27)9SxGftq+&H+)9p80JB z=cLL+l$<$*tsR+d{S!@kGBv+I=DlQjZjvm|O^`m(SQ$g6+p<%cQqa^_q-Gb)B?j8$f5_>6`FMCv zeZg-#wfP6~qGLKmyF$|D(-qnh?Fu!8X%v4#yFxVmJN~t)bol`tQ;EBvHI;^Ao~|Ui zNhT@u)(enyq6=`SODEb}OQc+H`bWfv9ZBAzHF2#5=rhOZG@xU_RiDzf^COZSAN-Ve z`&ul^_`ewgza@dtOTxs9wn7b%cJh<--RJT^H=+*JIN5pExyr7?r#-VE6xAffkt|3y zzB43{(O6BpS0B%5JroJG9;symJ<@-yu3o8K;C<+ozDgq-71l5tR$v}v0~#cU%F1oW z5};KzUAqtI>+v>BEA6F{AH6>bl1!o&WK8R+B-IeMmft}%J13dkZPhW!4v2K%8_FA7 z25WECigkVbfYy!VLXccYjdtMw#mV&>LZ0x?3tQr4T+Cj9UibSvM`nywMoRrFhfffRKc{j5zV z6ea$%q13sOKTdktPsyn$CDZ`49scZsd5DH|v*ifDLb=n)`r55?F|R$HKdc*FIbzxy z(y)!-R+~(tQC0oueZ!e?|JeZz?G5W%t3S-HQ=b{KOG{N8&t55?E##VjReUI4RJEV3 z-Iag+fzoNuYCFw-P6-3VkXYQg;9@&NAen?bJwbgV6_x+gi28!MID6x&j*quD)vz;x zc-cFzZakNgGggE22Y$=+TAovv@u2oK!OaBrp8WIoS!Z-4IIN*>u;=|9S;JfEQ=0XI`Tzu$ACKS!>m5}wHCP5bFYRKIF3^KR3P!AbNdC`S8jZbw4q_F~A~%G8~? zm7a#V?MKgOhfeF90=+wh$;_;wkhwSu`m*NCIgq*iA@rWQm;=45BzG^iDak|_s!|h! zvo}>$sxl}nR87o$(K^airCyz^ze$H}tSq`xgeo!@A=w%+mmHP7|6La}N=FTr>d$Pi z-PQYs@AzxjC?ykXR^%vS@}**m-Yjg1j_0m?3LL6qHpNCEl6BTX{{;+0_GDyzy{AP_ ziojSs=|1u}4LhM@JmO|(4k4lj(bZb1KI}_)Q=Im(kREnEqyDr%ZLzRZAP)6mj`++& zNoFrFt-*$bFYsoJ6i{ydk+|{%gi$&%gl1fii*tdS!PafZ@&*&R?D29 zy?qX{td>ECWwo3!V_E$@M+rjHS4R&v{V4;8sc+ZdhTC+=^$+CY#!5X>3dtB*D%aIU z&cy$(VHxXAxoROxWW&84#4vE0MG;X0C@%`%~qp^bd3 zqW)O^X2r8tRWKIW1R`eJ_(8_JJEk4aHwVAx)y^R&;_VH#B2~(0ni^Q5Cv&sOpo9dC zntyZusslySU>P@3aBY;DmU@^c#pIEkxv)1@z`5K2TEirHMFpeIrH?0d(>G{)O4mf zC?5!QAmw|L?L_uw#M`Sqjl+(l4j2L@Z=3 zED;Nt3roa8=E4%Okh!p^h0KLTUv*trIusRJl(yn%X*p>aLYQ8O;=N939FB2Nh_XM> z!A;U%CgbM~E#)fpN#;0d%|?gKM=-y+&&@}RH6J$JUGz@4BG;k)sM=pZtQm=Bex#OE zr3Gn`uGH9ns0BHQwkOuQMY>&&^C3nc z8|6F&#=%1wf9$gHN3{L$_ZWYK9V{I{N%y?mZ*)4Q(!r7^?O=5^3=s>3uCuLLp3xqz z`Oxh!M11IW7$O$B9fpX7^oXES7^nvu(;@8C!P1y@(SF##veRgU4|X*gk+5_-8W9Vb zJ6IZ!Ai+9C!bQL=WbR-^e8^lpA{H`tu+&1jgVh*mXZ2Nv4pvM?Bg;FDMmR(`-F~b- z-4z3dAqml`*yl#1Sw&h~l7cQ;k_r1;lJSk&oxu|Gw=>KF(^3$(pY)S6G zcwbtQ3I9+_a-iSRx`}o~My40xMj?l$I zx1~ZXbl<rE*cO`m(C+}KG>-NQE!44H)Hi5v5>g|iCE}%gsus;w@+kl zKq8;W+<>Ts%ngXX+V=*e!vJK)*PQh4`#e^*jXzEeS`AU@W2TB*r~MC6MjX6rkHLp% zp%?AihuN!0=PEjT)m7(ef7$p{vse4eMr5it=v;L_dv(>oj4j4UjJs_yDtdFg8(QAz zhWBFL3Gyl~d&a*IU);r> z@i0v21J&QyUQthXlI5Ltj&x{cB9!{|NiitTey;ts^2;xnlDxdEhE0&o<(Hq$=J7J! zJf6&6$0M7^%XIU&Jx=0LH;>yRo5#y^^SC{-dAv+FkJ}@g$IEo{xIMCYyi7Nb+v6A> z=kn1edt~!?nQk7pM>da_>E>~JtmIKQkJ}@g$IEo{xIMCYyi7Nb+asID%XIU&J+gVc zOgE3);}9Mj(%)tCc$sb| ziHM0vO+-vYY9eAHQWFsqk(!8@h}48)Ldh1X`Pj+hp-Cq+p|HG=x*+F&R$4?tLTQPJ zhe%6AJVaU|;vv!!5f71;h1l9wIFf@epZ= zh=)i^L_9=VBH|&^5)luPmb7??w1kxkRZLF0iZN;7n9>QU3v&0`Dp_?jV12N}8m(KF zSc}90cF-b;goM%(5f71;h1l9wIFf@epZ= zh=)i^L_9=VBH|&^5)luPmWX(Wv_!;1q$MIANJ}UlLDiBIty;LD!w3P|n<%bTu8^g?3|y>EIi`;0nUNPX{N0`QZKfD0^8ik?ibt zy<~q2!fLBiJN-Yoia6@?8C#GT#{1HO{7>tnL==9b`Y5$~*GCaqvm@ccs=3(dLUgKf zEGr84W}#bs6!~Dc`Y5h=*f^r|lBO#jnJt70zugW)GB25Qp^w4`J1r-w@7;Bj_h*-$HoTwHuw;%c{!*XI5?MDZFltD+kV(_ofM^VN2{hEzI z#po)^E{bcqChcS)EGqlQBDTZ9QZ#c>iKfw~Q~m9Jb@7nC8C#MaY;oI5OQM>M|Cnz4 zetnegOT~VDlnxy*Rp9AVd!#EKx4kN=(Ad=gqzi?{4g-)~M>^@>_W{U$eH7Iv-mj~b z9$JgwX6{_6batog8?lhNa}}|$Pc6o$C>!0k7_V>&ZHC=cD=_Z1#ptMyGNH8Ju75}+ zWwfcJtUx6tP(|szdq8{l`Y0SOqjuj>jg-WIDQT6IF76ZwRZ`;hSGL#gMib@S9Tk+P*q zL!bsF?i(pvp~QtFW$gGQq}(`C_KZ@0s9C8HdR~c3N6I!SaqCFgt4hZ}o0YhCr0fkP zE*>dsQR3#2vbUA`K--jZq4$-ze57nw_AbBdWA4)Hm5qLq)A-oX9?$+bbp{8NHXVRp`vX9^QkkX+uWEDL3Px1lzpKgXh`ztf1ZSAM)}DE%;c8^^x;qQq z?uC&Lc00Zj3;Wl0(gQF}uufUwW)6ZW%)MFIr}0%(l}0nT>&ffx$5%J!WE@|~rRsYd zUx~VZFsMRZKODn|2LI~bOxNjoG5%9Fa$2`lH1h{Ej1SIR;#8$3%6;^3rPHJg?YruJ zoP%NLX>98-QmT>4L`O>dRrjM>m7*va(W(?h$%s~^C`v}ODn(H;qE#u1k`b*+QIw2m zRf?iyM5|I1B_mpuq9_^BsuV@Zh*qU2N=CFQQIw2oRp#&*YE^br-ACy3^sfycw%$$l z??VrDrXDNCX-6hB9f#Lxq1ivYru!+qRO`b^FV*_6(o3~IEWOk&hSx!^Y-sm4*5{lY zZ(ot>g&u28*!{e&Z`hUwZEWk^e{XN+$n694kV?5?LXKNYPF*4Sp@&kAv8!;7<9YwT z{VA|N1@@=F{uJ1s0{c_o)22Wf4(#065m1j?~=J6Ys#`KRR0Lsy=I>{I*yLKnZ+D^+tKZg<~n-RkzD3_LO%uuSv#Fs-|W!8 zL5?nRbhD%T9sR-4CP%#)(bzG`Uw|wgCqovG2OvwKUqPp63Oxi_3dv1v<|3Ol8H-zi zqf$rX9Zh#M&(TUpe{}Q#WIp%c80S;^Nz4l%`$nmw@s6fDn&)V>qb-gOU;@N^83b9( zYaxqo&)o341yJxcN8=q$cQnt@YDaH5`oz({9TfU}JoGh2JKEx? zHp_s;Zyn8#{(L6`19c^*c`;gG*{*Hz@x*4+gJ_T8P&pb5z?l{O|G|kbk9IbNH z;^-hRbn!(;XE?eDvKUu7|#<@m=8Fu5lIZqx&H9 z`4`Z|8l#o&?OTp=KkIyUbe5y59L;p}Yez3b7Nhqdi_y2x*(+kLKnr3 zhB+Dsy{q4t?#$*nTJ30yquwWm{`Ge>!jarUYI1NNWGVhT$YS(3Wbruli(wjk6*5^H z3|Sgn1DT6^AoFjbqZb_QaCB5*Xs^W41&+SwCOq7UFhfrM|V28p-LIhyR~CypLS zw9AoK68cgESy~N%zNj&}z`eb}(HuvQIeOXAM~;pe6#D!%N8g1kMz=#2qpgtT;QNr} z;0KW9;Hh5^Lv=1>@x9j3J&qPSdcn~SM@J40-4;0-23dU1fr>T0*Sfd&I9llF1xGs^ z9W^BMxx~?Vj;2Ev-*KmhvAhbh_Hq(rv78B6SY|_mG%UN%2wmiSBXn^PWG?a{bMa;9 zB6V?hEOhY`$iDG2$Xq-L-K_S$aAs()5HfpTg3R6!$b23F-LEcsCc@nMA!NDmdq*1_ zz3=EVrJ=pAIvVNdDn~P*KNLuP|By3##?e+shn9u@o$9F4(KU`{I(ibawBHDsto0b? z;s%-2jf70a(WJAv0MaMSe}5M)37YB2wkj!%*At%xoCsT z#dc_$y73QfIN}HfFlwO5SSK15>QIZSG2P?HeUsrk? z8lUUg~lq4gDzE?09~Rq5&D+WBxsCM6*N(4GIW*F6zIE3HPDqxb=b>AaHbGOAUWIN}+6>*K^agaJQVTR$>22r+ zrESplO7BC}O1q#crH`TOl(H(bvaVIifv!=?g(fNWfxfSl2VJdnB=lRQzR+)!j)CSY zA0|Ebg;nx|9@{aR@t^ed$j=$A@Epa+#=&@Yq{(0?c;p`R;NKy#HU zp$C*kLO)X)4gFMU40ONJSm-{banQdjO@Mx)G!dGkGzt2#QWf+grOD8}N>iZON;S|u zN_EiPN;9AzD$RsuDb0fJQko4tr!)szt8_o~tkPWQ8KnoIr~A z>q?c-Yf2-b%}S%8KP!!a{-iV(`lHe~=vAc&&?`z4p_i2=K`$v)L7S8&LmQQ*KrbrQ zKrblOLC-7AfHo-2gw`v~g4QX`hCWc51MO0}AKIxj7uuopAoO>odC>bx^P%lZ3!wLu z7D7F>jb9A)P+AIQDK$XtYHtPfiBc1^Tj?3-W2I*3Bc~Vl_Mg;2Fpf2c~S7`jerAat!#33QFp5NMK84EnxO0=il$3CZki zc2)&6QK=HTN@*nYU8T{`l}clv2})z3E0o4TNgU9MCGU8Xb{`nJ*( zXsl8Vbg5Dubcxao=vzuNp)pFcpo^7eL-#4of&N|Te&{DkbD=p(4?;gyng{(zX+CtX z(gJ9<(n9DSrNz+QN=u<1Dm6f}lvY4@DK$ZNDm??$D>Xwim7a%urA^QelwO5WN}Hh> zN^d~Zm0F-Xl-`D>DQ$!5l-`GGm3Be5D}4-2RmvKfl~tpZ1Kp;S3*D;J2f9Tm51OKM zB(zkiFSJDI80c}OeCRQy0%);PA@rzHe`t|XG4$U`1EGaVCD0>EL!jR)#h~9QC7=aL zN$6pv3h1{=mC$dLMndzIMnexNje-74X)N@gO5>n;N)w=8D@}xcr8EiprBW62pweXM z7fMs0|4^!dey&sp%~hHKJ)krb`kB%!=%-4vp{JDQKr58)hn6eNg_bEj2sJ9rgBq0P zLr*F#fSyoV2(49G3_Yu~6naLf0eV_#1++$~30kf64Ai9546Ran9(qS<6ZAKwSD~#+ zo1wRr-hkSaTA(dTZ$qt0+n^Su_o26xc0q3{eGL6oDeHWCRZ2O~UzBp8*OmG}uPNn0 zo0X1){;bp&`jgTz&>xlZp;wg(pjVU%p_i5VLoX>6Lz|QaLK~Gzpcj>fKrbl8py!nm z&<3R>v|gzKTBlSAH7kvT@=lQ2aWv#9je!nT8VenwG!E*cGy&?ZG!Z&jX%cjhQWcb| zG#NTjX$sU!sRlYgsSe6fngL}i&4hX?&4PL;&4#j+=0NQl=KG;fl;%Ral^%pXR+J5lY{0L%ptOJgLf*k6`yPECl*YQ zWB>iXS8yqEethTi{7jyhZo7wvle_j`o5C+`lnoP~F@e#)I^+gdmFq|h?KnpL!O zyxYgt;o6zYu;Jfh_a+BdYt-t!$?JoAlbg%A6}qvNdy}{1CI_q=-?*6z%fv(uh>|WC zBDZLr_h^%zjuf>Z2SjyiLH5{mYeDwdbZbHO*mP?_&iClT0(rbT{r1u3NCcg6>+wBk zT@I84TvPjjyEl3E4<+3VY1Px_WXB#tDK#oxIPQmRt|?O~yCZx%SbV2>o;!v{`= z>fQo}7j$od%{5(F@GNm8!S;+`>LC%G@hO!Vf4AOI7O#)>=&-e>kF<|MD|$Ius5$m9{W_ zi(ge$r!zfn_;$DZ&62%a{EC9f@qTY_c(eE4gWY9GPIQo#$Y1L>2K&rf2UOIJjr%L( z?JHA#ZcoS|>euxiu(fs02OTz>&>~g%v{1>~6@~Fj;D0@%{&k6?+Z@ex)adASM_E)2=JqH@1EC{y zHfWSHo9yT(jvjaPildJm9ZS__K9@MU0)zhuXrZGQ9PMy)6#bPTzK+gw zB>K1(^8#AXqxBnw(7!45hd!rN4E0qS2py$V0)19#2=p1H7<8mk0xD2SLj9B~pyQP) zp)V+ngz}X}L&qtNfj+M^7CKfbnHp1&D;LD(B~w)eeUsWPyMV4>B^Bbkala+uznAns z2s(cioZ*nH{|vIo&mr>DqU_&aFc(Npdqw(xBQo2fT-IQz{!I4U^}gYo{+jg8&v^Dq z2}m(pKc&1S{57?^@)O>ol}W!&3v<$cPVPZ3^k2YW23B~;zy3h|dRwXeoDo{a;ac%7 zmhkoV^b%a-Onk;!aoUGMZimW``!5EO7*jAdspa3Nf=F_p!enZK%J?PAPs62&D%t}< z5spJ9su#PrmqAv9uW)algx)(wlM{?dX&u#EdnmjM=wrM*{?An$rSgSWFSz$n^*Y%#)$ep(-%wcAH&3k z%@wJNg5=I-9ty`NysNj3FZCwv;JBL{Z|21s!r28$e(OhkyuH->{-|x+z3=~9?FYPF zKscJJ2j z(ogoT9`?NaeR{li**d;`^#41Uu4T$Z-APK&Fg_@ul!8&K2T@IC;q3>vJheO$uRjOFk?He zgGcDr>eOHp#wO?U4oZsLTAiv5LeCO**1|M|Fbr7$c0Fssjx-pX#5x}fK%9P?T_3sv zmllAeTR{uJZWoS{#Xl_oqXwV_VAKG7$U?MN&;l@O47333AprXJ>X2`@3rG32!67Ju zDhw31j2d5?S^zG-pR(<-Z|ithHw&oS(ZKw?lwDT00#fgl09XKaDZwrQBA;Ft_KL_y z1BV5Oe0p72fXJsSaDd2%kg%7_{~K8WK1@;r*pbsc)tj@N#^Fx0+~&cdDXvzYd=9l> zJ_Z3@IF^5OS9Pjc&5w4fj?2z>Rj2Yw@RHC<(AcVDly3Z#hVUF5LegKy2$p4Rv$tbO z=+5p4eu0|)ubxEm<0!3z2C)C1wGL|BXt>nQkEL}`sh)SDfuI9aN1uitKf(%nolO`_Dq{8k1S&Ku4oz)WF}HTdgg670zloh`66)e`B5V!g{@NpU1$z zd-X(28BzCXvY2BH9&+jk)`CZCU+R{t%`|pcw_KeVGkD}XmR50M%s`cm)+Bmp4^E?_ zQO3+W@-%)HJ~Ff%$H;Kv^g?rC9sae$1_*XOakpXEHdB-qalEG&KHV?kQ1J+y zk1|xW9oJBC;wllAG)a~3D$K#E;l#FTSbdiZ7mjI&_!q8A$d0yr`0dH6;vf4U5q6ab z9nnW3Szch<+aPMfh5@8a&fK;+{d64onPvI}57K-oqwN?@ygi|La6x;Ev+N*J2XtUlJi=S`c z{nf?VUc3Xrwf46WZkYCFTrnQRju}13&)iXsC*GwW?;{CLv{F{K4Ff7_A0s9+8fBT7XJ*>)>F!7 z(x=B@2yeVcG6$ITrX&fu)7sxek{UTl_$citBIF#ggp%_r$G1}@XD1~`t0=*4t+i$B zd;v+bVS{zS0FSRO*^B)-+DZ22;)Ve2zUA*zNNmB;^(E)0Nvk_!gA2$1Q%~dOiw1f!XlH+HOcTIgAYHoxrxe;*gd49z6 zqJ7k;NOQ}ZmNsOAIT?bwW(y`b2DH9-D;!s&?f4WM=h-FY4&OJacMa_EVj;v9aLa-1 zk7A@UmC;N&qAqeo(T{N&3(CAkllIKq`A%b0Ij+rdrOlXP(Nuf_Vz_W6YD8S2B-heu}w}c@?vl`B`S2xr*7v{35f1xte)6^LpkS zW^7O+FGHEPFlRA0FlRFFVoqn?&78*k7IP|d6Z1gk_nA|e_c8Zp-p`!O+`^p1{1tNo za~pFUGhM3|hgX>sGicm4cG%mU{%bH5!Ljep@|5GAepZhee6qEZ3a;o5c>~MSND0oV zrQeA}rq63|Yw3B__-EV-{B!*h{8Ln>Lq(3}y1F6CNYFTf!W;gDwwuRzk57xg;fCvL zX*P7?zyEtnU>iCaQP>@5w`ed()QDdKi6ZVhiaHdfDpg>oqFWS|Df*QnQYh|sE-3}S zuH4!bouL$fhbg*V(R@X}RaB)Y2oj~>K2Q&q)ZYsd&C&{xC_z5}63x;*Aj#ViMQ1@H zOWdwjbd#boMZZ(@zlvT3eeYb#Tbpt_1M_={ZOl(Rf9riXKt)tfI||=m_5-occs8%O&PaMfr;EQ1pAzSdfhe66oQlB&~B zRk0|Vtmtk5 zkmUF0Ajxm9)2;WO50Y@YqT3Wbpy)|OTNHh)CB}rg`D5pmG5FjPb=D{=rcvhP-T{wFHz)GR0fj#?g3>lAZq{z z^#3<9=^%0Y``K1$oHt0N3M4V#rsx4hPb%7?=o3YWsn)ZD6UHH zYH>QqJjf9wxy%DeT1JCz$NzTQwDVyM#55h0!ZZUkfN2)!bfyx}X-soL{h8*2PGu?s z(UHt{TRCVjQzeMfW4A2^r7|r64PsgfI-6-3=q#q?pn*&)KxZ;N2FhSs3A&K!DbNK> zt3Z@fyX{%f`Ak)y^O#-)oy$}WN@H3N8p>1;%4XUEx|FE_bP3Zg5FIUTx9tX9%=8xM z`%F!siqvh(3MPWpd6+npevYc>G(!WaiEb*2_QF963E4r z45F`SxAg~&U`hcwnFfL!OsSx2n9@K6OzEJpOqrm3rYw+`X((t66CE{8^}}u(4)QQL zKsu8PG?_^UO=9wbCNdR*CNPZ$jc1w+8pkvR^aG};plg|?fo^7+4w}j|19TJ9EYOWi zC7>Ia=7Od$%?Dl2R0jGXQ#t6zOqHP9m==SkGc5t#%CrAw2-L*RK~Omw18l*Y6IQHbOcn&WV--|1u?~e?qo^; z&1Omh{gf#gG>fS}XeLt%=nkfVpr0_Mf@Uzm!c6y1PB5*^-?n=2Qm<-KcB115kkg=(m)A$_7reQrlaJGrHnV6c9QJJ0}h+E`^7PbTC zK3-hmm~UBBq!RA2*hfr@dH?*eFAI5wANP-Gh@GHewMhzv_C^_Jg&Viu|4}R7O_50al1_0v#=vb z!esj=G^xj;j4XxuFhx0bKA}k+Ryedz*tLL;b-$~V1=@T}$vf?Lov=V#6TTrUn#QbH zEtRvYN}B}u_uFTlus{p{3|*{1BX4(w_a2cN$njdBO~yhz!giMv&T6~sgaulJX7lfF z6%kY=!oPagF7d>eanvy*qD5wO3p5>KE3@Jsy9((E3$$*g?J{(nu-vzqV`#Sm>eA~+ zwzc8*FEJe7u+W38O>`Ae7lhFf#)OODtj2`r9B6%dXOrX;7HF2@O1G~a)*ME2w-tG+ z6;gfa76T3XN-@T?B?%i6IM(0^?YXcLjHW$z93#W`u_bjJBSQ<@CZDiCi(KJ(fcQ_g zh>IXB2|wE9giU5bm*oSO{_$$doq_%42t!3IoR2b89IpjhOK>+tPD;T#%)F)q?$#kk z<|(&)UQNYDts;Vvat-F&ILp;M>xh13h5Fa-wUq*-A1wf{rF*K*6hl-aWeO0rK~R9O z4z6n=@nKI`pmkCoT$T}(90L|3Ah7piuo%UJ>tdVfUA`UcEmS@(^iddlCLB>#G zrDmCuXV5=cJO?M617D>IN=zGN63p0mBSlmtuMqb%{%xf zCw({nK7`-f@J~)UOxJeNVT7}43+dl_4is`c#EzXquA|ttcMiCYV%#1Uj?J#Z?X|$0 z5SeLp2HPz*#Df(V46}B@Fblq7D|W{QZTyyEt+4?iEJH1AB3XECMW}ro2h7LFbj-uH zT8G+0wpuueae>y=O3R_$ch?6L20K@<&f>4_&e-De%hz{7-yq6PW!eQ$1;5gYak~Kw2nmxbE1KK%LWo%I{9aN#OcFBa8}cYNYY6;LO+d+vF4|x z5BUa`S?$);;8~s;7nIKv9P>nDB- z&Z*shwQIA{bYFG$=Xe3Zo!)lgju_Zr5f3~HBkdGu6K~V8;tDI=QWYN8yUTgTSfM6 zWb{@B%hiI4&N6#;s z_iuwlpS@ktpg7CTq3C8s_bFPTXpN#>pvA0P+N#`A(Amp7u2l3xMe`IbSM-vi-HOOA zPW0$607>e92a^2$4@m3={sNNx9tO#K2gX};m7*IJEl{*V(ON~XD*77q%X3NhIwir1 z?@C2KR5VY~az!sGdPmVgMHgXxCV5)`lDzdh$$H17ipD7_QS?his}=21)T}50!h+v% z>N7x6E?z}HQS_jqXB0Ik`dm?xvU0l$B&nYOlGIm$Zzmr;2`|=pTx9Df(JbGGvkxixVVyyB{QZi&b`P zY09?Et*BVhB1J0|ZB+D;qIN~!gGHOP(7~WpoFligaw}G}NYP3~8x?)5C=r_ql8^Hg zO#(@dW`ZO~J3;cb-T=whdIuz5t3NE-BvqFy+qOxH<|=wr(esM-C_1PpS=q5=f+Xgl zpyxQhla%jVMUN_aUeO*!M--iYS${|1u$o(tPHdG9D?eaQI8|TZgm@{dVrc4#ZzV`d z;|WEZ6g4YKQdV;pDH@~b7De}hBn{RHs-6Hzem5yfL1UK2mPMO0eXhX z1^O$K4tko&3wnyF5cDL|c+g*%CWD?}ngUwMG!<0EG!3+dX*y^%(+tr6GR*=#%TxmT z2h&{8-D@Ws$nVzRWntBUS?VhTFbNq^b*rj(2GpVKrb*Y2R+ZU0vpRsUEb0X$z=8ALtEs+pnkvw42?&Qq%@|o!yQoB1^E>*o`c~gvb)?RdypwFd?!8 zdyn175^OIMS%SUGM3!JpOk@f6Po^}`J51@Ix0y0QZ!u+o_A?CyH8bUaK4uyY3NkrB z`gI>59F^flA7ps$#!KwmPw2>ODl8uU5SdQb~fJ?Jy0Euc@Ca5WvSlvvNgW;O=tTF04e%_)~^I?(&Y3l(B)hzd4Q9 zLr1QaCIxrf(QHS}M-W?fwXwD0lak&Y)jNWvhwQGj>EiueLc*egH2hS;!J>k6{8U20qJm8PRKmcbf-L-0 zLcpSeq4=qUe?F8ox&y`lmgKb26gsKAS#N|;wv zP>7#Oh*wlF9zT`vuBc!#ek!3|QNa}aRKmKVf~okagmgs()9_OX=ZXrZ`7JmLu3K9b#U0l2pi$x zFyp2p+A}xKH%89Yo{6{bHb%v1&x|Y~NC3AQdo~ zAPq2{ARSOhkO}Y-WC3)7p#T>_4!}V$959@~0mvb60frJF_an0iynsxCLO?pfct9G# zWI!sx6u>}&selxMX@LF&(*el@GXO~hvj7PMC4e{r6h?3RZb&y9569dzUpJ=UYIw*w zA>VZ8esyPGt1k&AAL;0*LczkI7`+4Co{6h{smH+2S-3|thtK1ha(yjs;roC6zf2T> z%;mE|F)YK&0m&?PjPm^f=nD3oqeCLAXwowEzpWOv|4eOyeTME8~ykihZX3}XO zdB>F?nMpfAsXR*Np;MM8MuX&u0+2j$3rL>04dmn}-a_~9U}^$g!}LDrYNmaltC;qK zhBLK*a+$sY4P&CywXS430?J{s^+L{>;y{-(C4eqtN&*dKN(N;!^#@(blmfbhX&@+z zDHU`vQyS>|OzEJDm@+|`Oj)1|rlFt6f}-$8R!R0%R$#NtpF7=Jq9XZS_vA<^b{zcX%)!J^eku$ zQx#}5(~BSvQ#D9uS`QkNW4h>9}0c{*Ko_Elt;rMw= z6ufkzQ$Sbq6Ayq|+4oPNLrm2woMRkr%tooaVb;8xT@h=ZF)kC+V7hJFp|`$C6KdVJ zH=gFyg;c>Nd*OoFwe^juirt6_upW3J3-V)>lBGmv{I*MKXKhgE0ejnYl zSUMmy&DP2Xhn@}7EYy8%39~Ua`zTH`YOetusHOxDRJVLJxDK5Cg0(1-wGRB_q$B@q z8K1i{4xmnJ&Z-ykD1VU6W2JZsv;t;B>+r>pn>o4S>Sn$H_s!L9prb^fw)>m|&p9sK zrnkPT54ji);fekU3e|;zs-i%ijCF2fn>V*!TQmXgx-r0MZ1dDrQ$(J|eH@YV!i}ER z2Jet{aDZ>)2hi?uC2oL5PhKGDQr$nmKPJ;z*4Cj_yaL5L-$6%da`^kc!D~8~PVd=g z=tg|t+TJJ?l*llYOmE#EAAA-e&En_{j8+`zUV12wV=RY~+q##*oC*J8{*m{*K>thq z<0$`Emkg&mXKY4|v-*LGXQ5n8tqV2Ii^*C#HL=MwcPpg18yXwcRNwln>uaScz6$ZR z+0-C7HJjQHkTf-#uk7Kb@gPVfdep4?auZ6#7ffb41tc?#0U&u6wa0vd?gW=-d!qu& zv)=>Bv*&>1+4Dg1>==+du?i$9;3k=BIML$XIIw$VdIp5vU%HOM;4;tCGv$ zR^&Cp4JAAoo3x54h}VtwSaBK>XKXT+Tj*YB(G?D9Jd$!fYdq@onr=GA5Yn7J$`}A_uTcCd5~?`NFK~*tyuxW+WPnzQ+@0jRu;{(9`y9gtk$N^O)-w;Q85N-3MHZe^wl%PhR31xP(wfXH{eg{2{~Zg^OL z$abe3AatWuxcLNoh3tt?Y-RyU={ajYwtE_bPMD5nRCm;$C`6?~+N}^>{)cI(>so?T z$G**f*nl$omBFCH^Jxu*O#!oqnF^BC&wU`-U!h5q(0WB5D55K}#rJ$g5KEYDG_erh za*)Kl81xIg+-`eD`8Fu}T+u1$i{#mCMdKBbHmdk8QM3^x@7MwQ&0u;5-9;ebPP1Ed zxuQvm<|=wr(esL4Rn!9dwZsg1l&KB0jOhsIS4=2Y+apYIpkFd2fR-{PfgWZ`2K|Yt zKj@E4DWE?v4Fs)VN(Ip#mED#G`W+KZOn=Li30lq+#Fw$53~f2sP>mzmXGwp(VrPk_ z8zWNmit3Wyx^ar$(NyagH&G<6RkIurb<<;d26`^;&Gc-XrdFQjfDavRmhQon52u}F zu61YZT|`IB;q@BGIwhn97kol{OiF^C4BOcooUi12-l+ z*V-sZ#U8Evc^kmUOQ3|Fq#LJVqSMjPjM-jZGMu#XU&G&P*geK;*&90=bfkt{%i)Uk z$xv^=mFCFaS!JUcU+d>OCLuZ6C!@v6RA8bd=yuuskl&1SHf9v5ntGQw_-{P2(xwI(~CG z(0TFnJ9~?yYvFn-eUTa6czvyv_uuQjc`3G%Wr*1mdUr`By>~!9?h~MOPQ64SFCUkZ zZ?x*hHsQdD{% zt^y@s^JcUl#vCNZOa`h4O|Ej9e@cO$j=GPsm68 zO!OF-s@6L@b~GasIs#y^xQYXy;2N?w!pHj5kHT3uCZYmXVmf*0;s>(zC4SX2UG)W7cL;W79{hn$spT2a=QT_ zGcRgYr=aVMvrVGX2Na9d{C49<)aJK_19WSCE8zUCn%`}R;P{$fKW=mrsopS^fu#A>f~5I< zrRX#?FnPkIn%_&x?W0J|&(UM^gU`{M-=3p1KSXk36g)8s{@*?d(h2bY+9)VbbRGr8 zEqoM&V9^mi`6TJ9w)PE(UsGdZ?Q!^<)~k1XLNUo>V`E=&rCk_XcKD=wA?=9Gk2w9* zR=WnK>bQ<6OLgfA`d?73>NlTuDRHk|` z>!j(gB?SFZZ+0~%Po_daEm8(yXK3>7N=r6PWJ~qzjg*B{l5LgM zaS)JA`(sV87t6bR@5Y3j{VeXx-l+YNQj=N}JQd#JNTrz^R+{OxBn*-H6G@xCz-qFW z?LtrsD8c45-4bjhk|zDWINMav=S)8Vg%vQDt!^9&73>4!B7RsD7VT>ok$tmwI;-fe z4NLZ^2PRE+Ru!@g*dU{FbF>@K+lZa_$0 zS>QxS-Jk3Azd*O8U?V6N8$7eb93M0nvu*e-gCEWxTR}mzU)JgV+Y`M0qGXr<&J^8$ zXR6nKJ4$}uWVlbo@9A~EGDL4fdh2|&oO9s+j@Kc>kJBo~AQjk6*L`_<9G##&+@n>j zgn!xmG^b0eAR!!ZM7CCu0CZN7)S43NLP|J}-daUGeDs(+-N_Xm^?0PV(b!?s>>$0b z1-6BI5yv%&4dmc^cfq-EvL!a`_&5;@k8KBBY3^iKVD?Ea&4oLmU+Z|4RxtmIw>W76 zhP9T&j5Ro_oxCzmEB9gr6nqG7!;4F=ptO2RZ>MzLTsjSZ^72Y=aA6AsOX@AO+Xk8R z23pmjn?bL&nLkPM#Nh?<=&hw$^ysan7to{QN(UeH(KD@2Mjxmo5u0=+OL)_613onJ zUl`Vor^_8;Y-)9VZGR+L+Vnh-)Y4^&PR1uXgI6;i(D_VvfYC36ITtpeoNcg;U%5c5SdNICzP7>J6zQ||LnMe}sIN7K zo4PA4hugX zsaii=x<{XJIt9?lZI;$Azf$YxUe@s%*SR1qnp{^ty#jx<@(1v*H{c^{3N(d6Juqf+ z_D=rjkUGqAA@;qpTzPVCbU= zwbkCMl95eLQ017R#dUd(j*e#RJnBY%s;Uvj@-&)V>kHS@cMGc=wWQM`b%P`^{rKx& zgD~F=q`tipBt7CoAQ@1Xf}}^R0ZA=!Oc)o|(*>SNTSm)@h5M(Y9);JE3MzWtc&UN@ zkZi|mJiQx?s)A0i&Y1#6AK0STEv!fG=s&M<5Hkcv!4s=)LTdt2Ka4QjXg@dA8}OzL z_XgZqW=U%m|AQz{9fo^iM(GFKm&I!355onU%oDuXJKfpUI3GQGqsMnBcJ|=>z~~Mf z@8P0iboI@*H_)H4E-bHnHIN={oWIYLyXl_Zcy>zP{1JhH*vQ`QwD0j9&Mv*x70BC0 zwI)X@Gj1}@#B0!&a~2>}sRRBy$bYD+>`CH3bY$rn2zHsb^c4KL+*z84KUd^QJ%0ZC z$Qzz-?(;m&3Yue$M(N)=UZbkMk$j74Dc&r~pLEfbDyv03ju6If%ngRqks9jk61*a- z0J%%cMukbcR9ihh?UK?FWruDpy=vH|(kq9LE4_?AhgH&CtY!hbF@Fhba3z=d+Lo7& zz^FOAd1WOMA_=VYrd>km%0_A`U1^t^#Zr1kM{V#YXwRKKNySf4J*bKXxITmy?Nnbv zwe$KLYF~f@cm25a8L~9aXl`w3EoCUC^hK0%htUXkDxZ?4@sqw$c)6D@L(rkcr9a0X zl=%brbNS7sKKwzMSIkAqNbrP&JIvU5fSO7vhMTs@_`+CM^XZ_4d&Byq5n$gTbV*mz zo1PXD56Q1KEy;4j0wwB%SVd33TK_yzy!=fs;vtkC*- zmcV%x<`gUNyBfb&;dcXmSL1gRemCHE3w{%~=)UHd(x(v@vM`>q5Xg(6XtjPZ@JkhMRc1)d_KrRx9)0TB-#y+tgNH8>_8$+Og@MxDG#JwAFo> z>7SZf66>+B{K^#Szer9FVc`fCKbvxL{3OwHNut+4W!ZtLbVpNmHC-3qhi-cBgNw{- z2x`bF2DB>%G?Qo9+N79TniPn2&zIWFm}2erScI$I{Uy%y*-g*xu7!I)Jb_!=@1V1G za6kJUo3!y90gl_*p-o&@OWV<64%BTevYXc;2Tf7@{V3507mr{Lo2*|sD&bDdn-@h1 zVn8uCqh8N_L)S)Od9$bFG;GCt(Uj~BnAmWqsmI)uEGrahVQMnmSvO_gJye{bm5K-H zmw}-WbT9i(0Lj3BpXL;pR7Nl_FG)+8Wa>MmVzP-@E>8{)Iw9f4iVB%<{UBmKA^as@ zcVu6^;uEdB4lkoZbWo3HJTwb+MK|8oGv3j2H*3Cy@WrAk%lH)?2jntpGIr3|v2fj7 z3TJCy?A`&7h^_kY_|sYUOF_8?$=3%k5rKA0r~@6dbDcm6xN~Bfb2B-%FA=G{5XI>Y889LW-qmuK?Y^MN4Cz6zy2$OT|5veSfHY{|J(` z2bGG%vJF(k;Tl!Aw?RYBqEAXXmhuG78|H>Ya=rPOJ)$9XUNIYooEW6l zg87$`YhXpk-6+CGB75q_IOwcz*K;>5$b{-yX&>D_CKe1t1rV!V^_Hof~Nkpr5|0aJ$D`a9id2Yu{8mwydaxQaas@Z8+U&v6w9 zC9R})?x*vYHYa6QH}}oh?B_NX{&8kNyn*k5x<4OvpQ`Q+^Nj0W#A>}?! z`BLSTuX2;}oedhy)w2R574^>`iSKF9ZTubo4wCq`E8o{ZGuU^J@};$+JbN-|Ci~JN zQ=Ux)$ve8#1{PqTqSJyrSh17Jc|_#Oj2oa{#{>oS7^;I#ZE3aitmq1ID!8gTw57G3 zy4MR-f~mbr0bHgMOwyHmA~ig!{e@_$G)KmyrO<2auqJ`^9?X<6d}0dGv6I$UC8to0 zqYgdPR%o4wb#hJ3zCo3}q0mA;SZSp#sEl9uE=_U#iD4fWU-G8fu(`dC#or1{>!+f` z!l(6aeEEuMyxD8usGOIYK>1K+#RMITVe}If^>A5Bq7+PB%J92^(FOf_qk<$L6m%|9 z3$vlg*&Fe14&T5{`9wy;2Y4#i8g{IRm4P_}x_^1Px4BLbGg$ zv1mGzfOkU7K)c$=c<>OHYDwC3k}KqJYIh*ssw*FSFUQ&Xk;~ZYtl1wsCXh5uuX)#w z?oBIS4>60C10-~S?9-d+e;l5ieoUC~4t$fTx*?fZ3@`MSu&XM;m{*(ZtU85W9vIhx zOm&QhUY@V*6s_Vflr1B#g^VyXlzkp5MqZm>o3_SYTvMM=%qqPpFwmI&993PsgT%ea zDQ!eMtWt6Lf3y<3DpK}Y6A(|OI-$pFZz;#l^Cl<@1`i>X_sEf9bOPz{EKEgdY1l zs7xbc@y|qi&EAAW+;+cuWQ;|<8FZr-Dx>}hD|O$#I6Zfrw)mGE&4g86`%Z)(L648N z*SwpMSWiD=EQ$qqeCy&8>m>^4aMbLJ^_N!Zs7m)0A`&ckz5WR#S-y?ex)P2X&EhQb zM|5^iV1%9H^#n%qt71KYAH=}xB#Io$1_>U#0q@fJMMOxiCvhWY4A_fY{1KIeeTTE7 z)|LCt?B(jS;qyDfYbfSkW)0;J8XSkUfpcL8X%K1mrhsmQf;=_0XkCdT;(zhuH47|drCHHn;x)F=0mB6uBw&Yg3X@5b`)?}^l5E?h?< z07qr%P~CV_uXE=h5$JIGAMn)djdheCfHfba+FsZ&k9N(#(l>=cC? zsmbTV6@}o+$sc;xOxaeR7?g#cY>Y|u>#0~sra_k-&k@fX42XqDn{EE z2#$jO0*@GD65yZY*YT%1SvOA7HEdL%3hj$2-OY*1A3FOFTp#?UIaaS_)`{?j9%|TH zdFEl-p+-}*YEJNMSZtvwr)u|+IGk%tJHYCRk5FOv+!MbI@9sTu9lLhviT^+`p(pkR z#&J{54-6bc#t<-q;PwZm_Lo=>khba1Mm#WBb8DrK$PNA} zH24&5@IxsDeyhR%3sF=divAqM=TxE4)}_xF9YaZ>RG=DDDy+`KN-8;z?nQoaDpYS3 zDxS%ozlB2ep->4b)JZCo6ofyYGCI01g-TMPPFA5bGp=0}DjEO$pr27g9nUHFXY{Ek zlKyxqKjTg6SQ6LiiJS0~*qK<3jz|5dL675i??xV*yt!{^fiK&rZgd#{Nm)x~3y^_2 zlniv?dYZO4Z*<;3VsXfpxZ=EsB15+;LM&MO%8*q^z56V@x@s)W|XL?p`A=W7jSPzqPT`E$FNGeGO{npR4#Q^of+B2$XWH<$W{(yEktr8tOQCh zBgA|b%YkX8HGgNDm?jMIoo!-bXP;|Y40(-xo|;dthG^eXc*L$KnGyxpBf~FK{z;$6 zmT@rSGpzQz84Go!&PLXHvX0rV*S&(a2`iybpQET87jD;EU(<*DgWdqg&_~nChar{F zA+RikYFx$!FGlf2gW+x+7QEFXR!1Jw>IjFXds<)h4*3`kFlqkKY1F$CKc&-u14$Q{ z=bo~?&^IyKqBk&_ce58-4@c{zdPWUR0B4`0%7)CSFwfgJ+*gB@M%Qw|qu)Wf49081 zt%qE&8zc*=li(g!Ea@}ry~{W|H9oYRA(UWLIV}rLy%uOm&*_6FeK4ah9RVRa}GU zx))I)Tss$0udq5-@2LsqqTcl~izwji71kEf7`}r#_gCbgbMZ)9d<5=Yil>I!H*8(F zeRF%<;T^IG4yrwFLkXG1gLzGjv+Up?e_m$ENhm8=@eM?jxILeNMn-W@#_jN8IYL#>5ew!AFCfI=93Z0@;d*-!$c!RAu5sDb0Ua};` z={pirlIZN%;x<}?v#moKXlt7fYM^y~Itd&xt)XE7vNn>qXOYDH`r304ql|UwpqP6| zhJ6u8#=2{i??})v_9c;<_}-v=r-9_z+m!EJ$`_BBzV|8LCqSkNAU>>V0thlq06~(f z^FZ>p0+2khLDAW0HuCJHAbIvmkUV=eNS?hFB+s6XzDS6AC3$ucNS=KVB+ot!l4oB8 z$rD$iBNF-rNS^&ONS=KfB+vdGB+u>v$rIP34hoUkygWjt+-fijJvL+T4A+xToGCl|D~?Iv<{-5ik+ps0;3(xiS+w9sxle% zMh#v6b|0zzi{gOG2)nV0FGXh?FJ*}7BNJz6a8=L*lcW(FVMCas*L<9yXYVM+x<*{c z?y`J5r9@l3Lt6t$3k(gz1CZTi)Bt3688raeT}BN+c9&5Dklkeu0nnZ|hJ4pFgk?}U z^98rhK?rEe*yKAHuPq{Jh|^d~{R@N_yE^u=xCRA;!l6Qv{Hy29lIm7KT>?O-zDo&q z36OfU05GzQ9z*ic0wnYtK$F6u0_&PVm;Xr}wWZk4mBwj&Gujwmo8=5RVmh6m-~7E$ zFR7J}K{K{`;(3{7bv~9#>~lgYYHxGqw$JGYX?f#b9Fx$v*Zxg#Ju0^|qdjyJ)!0!H z=lY$hei0t(>9RJi`eHtd3s$&hcfF;JmK>=1(5CHv{S%uUM+?9v$I$|?$#Jv*Y;qhe z0Gk{~4uCJox3r0GHOHigE(q29k_o7P)(WZ`IzO0_ zjIbtbd{+v#8Dyr4DC|EksIqLL{~lVgog7{Mv1QRBqLZURU%L=;ZS# z92u?2vpI^cQ}i=Mzfts}qPG>bDY`(-8b*L5^}hj0e*XxP1705oNq)(cR#I>VW(`8a z6kV@qzM|hMdO^`nMW2BNaNbVAOhV$zRzzAh;#R8Y5k+eh(NR1S?n^~OFk6tBNjd0r zen%zfG$z{R>d&+UbSl$Q&?!vIK>e7OgOZt6fHbDZK!cc8g3e}o3Un6JD$qctXF+E& zk;?P;m|g^(!Bh=OVRDeNB`GNwhw|xEMayn?Yh(cm)X7LHvn{f($U3&OXJ1rAIvAyc z4=!v7xpg`iMT9&(NNXgz--jMm(X9x%g-7SRm&7~JoS}Iej+2?6Hkp=4qMSr>*lg5h zW1_TmYScfgc$kV_sPCNq2G2H&MksTg{hxjl-VC&rFHWR!{5e-XUu#RdBSjzzRW- z)y;GnBUOh*Yn|MNIoF$+fK@b7%h6o8Nu?gH&c=_7P0qxBhH{Y?h|BVi%)}?U^OQhA zhf&+O&)ANQrqAXcJdhMv8A!rC1d=nOpy&Z5J<{>0fsRKN z-1RW?BliI8@q7L5XDTPGL|MB0rT>HkyUzVy<>VM!o%^HYzs2HDv+Yy*^O<81>^|II zmR(JMS_e<0KZmPtpg$cpq@~VncRfXa;>%v3KZ&+E6pLm{Nb0C_pPJl1rNdMV+}M*W znH91&_2BD&HjShTm@jz!kEN{wdU0^UO8)y|+6w$-p#ya<8GR5gK)N?%Dt){H>dsP~ z*Avh&nF3yswZ_aI6eeqhS#-_5YdUHyNh_%@z3jk0&b6q&5PP{YTK}^$=*y78aH)=U zTGd%_x291?J+TT>XqL8`rN;+Xoo>y##?awSI2&#(Y_~8;uGWY2Lfkgp*Akk?gm-r5Kkt7x&0iDY(B;OBQ8;3&` zJT?1=L!hYS`(cHLNfn<9_8%_1moeE2-}!JGb-eTOINT!?-g=R^?&pD#C9b=?L-u+a z_gjTm?@s(MBy&aKX(%{%ISzQuA8y%I-Z(^rMztgQw=> z|8m(~gEU5}f9JzJLfNg8`uB0D{_XS*+39J-E#A_2QU6}+T>qe&@G_rUcjzQ-(YPe8 zgxjrBM4_%bN-6#pORdhOXjeO!fottv$PjBjz6v{-8&Higm6e^ku$GLRd>1YGYjn4f zN|Ll|{yin>42<{&rCEp4TzOb4k55z$x)&NWX{&8QYfhn3=%F=Vi?nnu%jlzUSSfx- zgUK^UeWbShE6SC@`)tQEnBe@#0bPgTI!tq@Ve=>wjHmVuySc}$QCW%*16|oYYhoOg z_dH(uBdA?k>gpvfU)yI|g%5FvcFhVTkZhJ$@?V)@kva1|PI&%+Fs&P!NWusL3OBlO z&ofXo*lAX2ipFz0oYfB@-PfcjIw}-i%w%YwT>QFt}9_%C2E^!9*nBaO8EWSs)Rx$55i}-gCN_Q^e= zj1f4?SCedYePKnM{M{7sA?!s)D&oCxHybUj=Z~+5aqcUBB#!$8 zn??=AZa+@Lin|mAUqwn+T>3bK7%Q2ZNiP!Lq4^qo1U3!3w8uu#R%OE{VmpuG#=Q{D z;w%e9^`pnBVW5$|4x>bEc;Xxl{e@-ngU^CuFYBm}o0w(qv(458HJ$$6@< znPUmf4(w8~`sqE-&?glQ3Ee!umn1a}`Vbz0;f4T>9~zrflR=JLF?VL_jhrJVP5{c|4_iGNr%M zLjM1x(wznU&IqM@9c#sY>(X@_@i>tIrP>gwd?AM{vsZH|qo$+Bc)4;E&Xaf7!NRp;$XNYGoSd_M!d#X1@7pf9oO6lY6DYm)fr_-l!ew3;No3zTn`^1V#? zVvsNev&%uEDY6PAqTDqgiJ27hBtEha7g6qTv|dTUEugPCE%QL)`zlD{3xXuR7LdgE zHAvz+8-1=k;RQ*2OF<7s^Y^Pf9hzH5DNg#RRGLSs67$om_8YDd?Z9QRuGJ{S%2p#{G z>N0qe?0ngQ9@V%z6E?CKKXLL+lWzQ+b!t0aac8t+Tg8oYD~_UwM#}Jo-oROi%Jvf4 zD5;j-8E>=%cca5w>wrT>t99!}CsiHlLXG3sQX7YuZQb;nL^+F8b;_d!U@f(10a!~d zS^(Bkixz-Xb$UnxrZTLhCXaX1Qe)@fV2nD(){ITLTa|{IL0R_L8>48b@w3r1)WQNl zO(%kWSy+J7qXmepp%xZHWDT{j0GKcLl!nL}YW!^I8URyCExV%!9W`j?syRw|F@{!i z4rEqXC|a70;TUSVy@ix6eOHiZpx)^pnnrqRZ8#+bQdn44ICDGZoJTA7wQePXB?p%1#hTxiy4n(l7(C|6X_h@Ta6AAl+6(>=Jz{MG|z~zfGAnJi8 zTehjiM!!gbbLnVl8eR0CJak3PK580K1F#lbv=~^6Em{E9Vv81lnnn+4K+~uW`F7J{ z<5+{~D2a@HzHgwrNv9{6MFIo)zeoewWa_aYzuoT1;25MRBI~h*1waGoQidvN5(64Y z^Z=3d*uq{BS&uC&02)Y7uL$X}RhxA{B`>^zn5t|}Qf1qWqfa+MvO`tNpNC@!>YBq^ zNQoY{x`7|I#OC0LD3$}+5Ax;%j(ouW7o-dx*45M#Tb%w9@oe;1OP}f6{6{u)qVqKaBwB25gG7^x)(Jv%sEm+9(annPQ?x=6&Hv?z2GD1N zNq6l_<<=j~Q+zK|G*QtUMavXDr)Za=cs0X63nZzhjUUMotpsG0Cw(^2Vp{={@%}ZC zJn`?=XA5GTATfUqY8y;B?~nPvnO{Y;iV(Lsis-^SaeGeDn~J_xbb(q4ke*sAzk~GD z4lt3P+Sg2^r}h;S>8X9mM0#ppFp-|x=S-xh*1|-3YPKPiX3|sZU^miJYiC*y`i7|< zbcAUO=rB_Q=n&H`&_O2B|A%556qb;9j2d)n1)r~WNT+jx$;~|aBo)&n>*$m19gTdR z0iQGC3OHg(?+XWnq_aCD{;Tj@n0pqxCukLYo9L_jpTf&6d zP)iq4r~&nVvflofu4D_YrlS1D`7)M=y#LX09C|IDI@ScpH@<>0hOrg4l|8Cw%s`>g zzNBt!@MP3j`UNChHIs))0~82wa10q#LY<(gn>s<0)7XU_v@6XW21w$|cWRY1;$i!C z$39=vHKlQty_<0=X$(Wo%G8piv_Y@*PNi=e+nl~KK`Vb3*-eXorFQ~c{+2L2?yf$s z^zQgu$15XaZDj}Puod{fGBU#Isp2iQezsE_uFg&@0Pj6IKDs+(S=8U{dd)q#Q z*yLoucOGv<*^m9Op^GhAsw^Nqf%=ouT<6W)+v3rtR%`;uXcv+5dn zx-zOEM|5^zuc2Pg*r(@iopYWOS~iV)JGR4u&D@i4+S?rMb&kq=W4Nj|_d=FvI}jCw zv<#tYh)N@8Kw<15{kC*e*fSBobgXFMrqJkokaVm=m2a-{btvCkL9)zx9wZC1Z6I0v zy$X_;-vmi~c6=szf($K%PDOnc8U&*5z84IQCW)1i@g`k?LnnOkIdmP7H#4Gd6^dS9 z49hdIJZBZ!!^xx<7#ng6*9$b&40}?cWi`XjDzt}LBey3N+6AOSTSCniqdzrPYvWcc zKMTcROj6pjdhYHyI7WF9tIlrjVzhkWX0};w5qo9UIpu(XxbOK#W%5VIw$K&9&B!7x zZynqPWPF_Q_Hk*@vd)#)I1p01f(9+ruGWYKE!3_g8#I$~U}G36|44-cFZZCnHj)A@ zRQ|23n7UiED+9Z0$^)zmX-CGHcp#J&*t({K=SB2ndCr9Llj+h;*Z&(;WCz|uJ#;A& zEmierAgQX0mD|H0k*3msB)(68jzvY5IvT0mQ}CswiOd2?6M_HXP}Nn^Z&lZvu&o(N|BgB5@q$$*^qmtf`b3Eb zg2ON$pg#3m)ku+{d5~@S;y(mQUAhC*v(ol2;43wwH|mJgrSE~HE}a9CIvlcI#qoh* zb%|{fAkJc=O(-bd1#RhfxkI&j#g5cD=oR;d+`@ZBUtN=V>}C%Y@Hnd&jYX<=R0am2 z%61mbXUvORVPIgcz=oR>236<0M!Ti!&yxq}`nSP>hD@?C;K>i!7`%*9v^vKBY)vEe z<*E1r;fh$2dTo&ocWdJ*5O<}qJwoyiA^9Oqw)T)F8^(OdTsqJC=swi&Ch2QS4V&|| zV9uAS*L<4lt4R$$X_bI;Z7MJ$c$_vC29l(VEA&=qAo6{}a14o;N^S`^1T*a_#;VC4 z#6of)N7%SPJM}QDNNmM-!$dDDG||I(5cu3R@229IGal|d{-m_7rW7=! z#p&G5XCt>~FbxAqW4Q(-&5#Uy#qD~Kbof)1?@vL}NGm|nNJB%!&sDg8fTWS8;S)hXxC9^Sk2WB4Tduce3C*DwW5$e1=ONTGZvpPtg%?C-EXM?&97M*8IJsjr}eUn#a zOlO5=N3aqSONz5YZsC2ycQ|7@6NS`e#*`PDW^^8Zj$y{+th^$)3EwPi1p2NfOyj#x zn4F=UbZ;0(n=m0O|MB^fSgL#%^QG(YouvuP1W6OP3nWc|G}xpGJPryq0bJ&SwKk+{ z;Q|Uit~4EHF<#^2&@^hQJEBTrK4u>n1aFS)YgY7IBKu;$=!$P)r9!uN(iBrRkFdta zieY|QmyZ5w$htar^hZ;-*oY`!cHp0vWR;)sA3i{7IXb0qWee+|pmMmIV;)rf>4Lo| z3KvmM3o<(%2*v9?#w&Vu4T?Q3*@b%zQp-2aJ=x>WhZ?M_GCr7!7t%p5YPSIg#H~wRUUgC)vse#uNjL- z{SXafX$UQV48zb-%_+B`@2+6M;+-oLDXZAex7gdHF|*CH+}dRI@-OasW;9)OKjmv zke_=5XLGVfErgODNa9_Us1eQmtCk}_&AqBV!yiwb8;Qd<3F@JPL?f6r@T}f!f{-s_ z56QeW*0+8#3F$GJz$UyY-@6YCKfW3yPizCp6J&2L@3;yieY6WC&w4=e#B7i}@hM2&F##=0V zdgJGG8VKE{{lv2bA=s8%$}k4l}BneRh}MNA=v?9OXq9Nk4LE_|6i$bu6}6 zGIt{^NN`6)V4QjBUB{{Z+p&$>re9@445f*K|Sda$ou$9_MwLs5k z!~JwAbWpkr`?3C52)jytfY{RYjL-Ezf3*Bq-5>Xb9{538;_PnA!ijF8EnT>>_TbYGOXQkD?=rNK_)ebPAbJ=sc0f;3hrulc078+T(1iK+;FQkDmFd!Sr6zet(i_Kj<$^ zEubfuz5=aeqP^C~nT~+|%!DXy|HH&uR@`}`Z+w}nv?o1x`<;XF$u?&NoVX4yo$HfT z;b3Hs-ka_;;6D7WzH)G?<<_Zg(F{4OP*E?uCWWL<<&X4g5v0#Vn2^BhBFiG($Ai? zj&XF(2nx8$fead+Oxo^);Qib{91f!0M4LnAwx5!LNtvUZuSa8{mP|_wJ@B(?-G0z) z4SF4C1u@#t!8m4Lq_(=~#DuKp>0RN|zxO%dXV_BeaNPM8^-0=&Rd6d_(%s60+`CR^ zaeT4tP144sNb0aR*?cQ!O6IUN87&pn-H!o*kPE$E52wC{l33yn6Cgqt38xWdo8o7h zYWhA)pyLiH-M-Q2257QyE@zcy3zj6Z^c4EyIaDjD#H0ktMM^Z}NHe+D2U6>zd9loU zNMbHCrM{?&GE?dglJI|!c~L38w4?L7mTv65?uS@mVDtUBZ|$9d zTYCd*v+y=|_WLy2%yk-XReVx1SbcQ5+bu9rxAuE5ojSXtHuvrM9~qC(rUrH9t#A7F z#`CNSUn$8PSc0cvoHy>LFb8(8jHerO@*pk;VR&n-n))!($p<3+x!#WEZVU~aTQT$Vn z;-7L9|Ky|iC-msgx?Wb|*KB5GElIicNN_AlqKej(8S8v)Q1_zgrdb|F`F(K5)miI0 znoxDQXu`C;-c#?DLK9`L@ZzyvBL1T5)w4e)RM5lf*&d=8~+ zI=LLXRWF2grkYR1?Yhx=e>Pr|L%)qrEg^>U!fkphgc#2#A%?XTUvi_%N~qFInKN29 zenlZgm6f|E((|Jo>@P^S)!5z$sYQL_*CMolP6`KSIfK6-vpDx1m*#GA8tYA=1KoU3 zhD^~Edahhv5E3ys%=>_sAi%f!FC?SzA|4rGNI^KC`3O=XIQm+J=^Gii{D+M9aBK}@H_5RzQ0qnR?$0(+7+EmatoA;-FCI2 z$%^KJr2H0uM0QgSlJfhx@?EBU={!C0{Rc?K{(cxZWwvl0NM;Kcfh6WjLGr{+AbEn0 z))#3?3ur#)?JLkcrZ&*en2vz%X0r9R+2%6Ef#xtJfbL>S0+li)gDRN%gUXpwKt85{ zp!=9oK?|AEKxItnpao2spnI8UU66tk@_1=LSDW*8G~dOsv*bs-4MVdKtR<&H-63;H z5BDrU!edR$N>1l{7Mjo2bGOgwr`tbw`R7g5Gx%1(=b96Adus+}=~H=EkXoLu$NYol zD(0P#=1q_|dCdXGu9qxykw(#M*}Q_#Yw)Zc_c!q!gn`=~xC6d)5XqRfXN=0U?>6T{ zB~!ej1q1JrcRi$+HX!3BOw70YYOitn&$fbH);!jC6;i;;U>@zIhGv*zR+q*ZuQn&* zXZ7>6RhiKMC7X_QSiZ0x*j;guYYw!p^E5U=Z3frv+Shsg+>tu{z0G-PXQ>vZsiH@7 zW9@LnC$*zOBvc)3AdC9Gafjd)aK%hZC#FQrrXHn z&}X)hAu&e{nlPX4-^nUwDqO#XRSa$IMwPNf3&2vgXaQKt7A*iv*`fttDO=QJ=ui_qPh8y69cVS1>~sK7p#d2n;b zoWX`@DPVG-3}8%Q2M)arZbqH%WD3*cNzP%WFgH>|V3C~H=xPdMr&@r6ib>D8^GVL+ z!Zt88AwWauVmo2Z^~p{mS^#PYQ3J3IOtcu-1}0hnY6v~Ng4adLx0?+N$I3Tem^Ls; zC=H01pQ0Rl?A9U9D2cG;(B9Dd!q-FLr(CN9g)fMr1dtU`lmL;9UpV>l3Rx3Hi6OG_ zixjJri&_sQ}5` zj%->a=2k^1m?4TA-3lS}Lq&A-oVY!zXqBRR&`ComZ_Uar39~_Yf@YUOV-?Y*>f*LU z(cctpQABe}$y*_2d42dD<3R~blR@!JQ$W3$rh`CZus$dP;;Y$wu<9r#l zjCBi-N6E62NeQpJ9T$rBc~^B_QnFl!H-#%%T6QHQepRZ5WLILX;E&m~r0kGZaw|Se zY&#ufqifGJ;I7YJp@J?MjfwB5SU6~FCMNUOZbk>spQCv(t6(zkh}?KXE$Xk?SzHK`h2_N{=`5VeR|k#eg?_&BC3S=L zfwa)y3zCKY5s-8~G;NUh5#(gAh*BKzvOUy`9num@jbQ43z>@yB7k`kEeih=v@q&6kct*P&Ge;14Mh z1q=7j-l+!)bZ6BHxbp+LpHJA6J+DGqt410}yFI3a^r&>Wj&KyNBMeUjT}P-STxaq! z*^}{4eMhs${!cykof7P7eHnDpmWNTGdjpFoDO93~MnR#rX4K`V@%6N9wR`*tW>F+U zAt^#hd;CM?X!Bq$qU)?2BbOPDK-^Lrt^-L8nF=c8+WI5qJ4gA_M#?z$^(o(9D&OUx ziR}9a<@*9?FW0F(iuQvJpGCEQ2)>Sx17xoBL9y(+0wk%T34z4?6iCv{_0inUJVYy9 zsdraLRsXk6w>cN-xGNG{I&aO6I?`Xgxe}Q#Lr0jp1{`x``WygZMUPr*^i70Hz zE`4Dgl2vB;W|;Rzk4fe*a?@zXxC8`!LSIO_P7BPSbKaz#ty5{6UP9sR9ByIuM%qe6 zgG1O!Ri3$nX+WB_H2}{l-ju<=|`xCl2RM4eDgqq`D;-R z)xAuuhCH{Yme#EaQ3JwtfmJIIpCQ5)Y*f{89flKHol4}H_$i4TOg{6dGK7rWNEuuz z4Rx7j1+g|(&F@^+Q?fSmMj)#&4Zzd#7Ah2Z3w7I)*({KqD;mkTl46o70#!G7e)}En{b@Lr^dh z!PrGtHC3Ss$OQ5*K+uU8G#UozNX9%mY0#7>r8w8ec-5JVW5;IqL)nJSxrPvFRRmQ<+)qjFaby>m!jWAozR8I6OET=JAyf@j7U@ye;aSLV6gJ8wDg&|}_ttM3(EH+42?F|l$*>70K=6mH@u z$y~$mp|OddipHE1EmA;+_w!4Te0w_XOC)A~tk3+{%Xb2S)JZVX{XP0SWqnAVO(ha- zT+s}PHhLFqT-lKE@25w{F3f~)8;O{|wka3Z*}r`s~qcW1m=yG;wonmL!n4OS+d z_4j7kdf_-5=U;|2?vga#<$ZtlmFb2D(uKru+DrClr$6PbQK&fUKb4;T(5FskYQ4T0 z_K5G=&v;jC!A9xgRP&ALc%SCgW_$K~^wQK()CBkQ{|)-g*so#`i#PME8_&s3r%omX zZ}w)q?pMIfrxJp$H_8%}(cxz*jR~*9#f%pY6f+ zPzYp?y$X)0Nf#)g=k85=v-W1u#}rb2IV4lo-=Q-_M5&V9<*j|xRZKNLjhw)nF3c_p z1*0eoys6Jx8hQIFz@7y*su}-knB?P~8GmKkYrh#-uK%>oCUlh;(((VLTQpz(Lv}M{ zUDb8y^O2XzK~I~$=(&jAn(M@5wQi>{CtsQUH?)e@hxh@<*0<1dtS*)I0b}(CX`NxL zejL)e)*F$}Zo!;O%Pp8s&~gjrFKD@b|4_UpmY#lORi@^vduwMgxre@DKvVaq^z==g-j`(K-@(;@oq|h4*B6=M z!?dJBoeJroF5~XOSBvV{3|VI$uz~G#Z~8&j(4OsL!r4db5Y0Um8bj1hc_gq?_P1pe>q!dy|K&tesWg} zGTK|CaN*MFT^D+vJ*?mKFPjEScxya9%)Y2~m-pF+Xh{}3xi+<=#lCI~8EUZyB#TC) z#Af^RcQr|q9h*~VeRDQHpLM`dd`R3}!*8Y^TX{iYRz0vqWJh*AR`G7H?=rn&>Y{7c zw|Hx2(a!YESUGYv2%hsl{(0F6;l4*a&1~7UX2%Oo94p$KQ5<2nx)9D=IxMDovaJ*!pR+rSApD{Z-^rytOAJ+^9g*>c?!{8F%7zpU+BK+W{@jiGVW z%Vq0Wx;C_|xL~iLbsjJ67VKnNZo$exa0~WPT28VbqvfQ%Jdkb?e~y-0ocGakhRr)! zDDK;twA{D~o8)rTtr)yzlo9s20kAaIpOG`~BU!58VC~ z5!pJ#Oz#KAZ3r%4WsTd=_vCH64~**{$oh}?dD-|m-|8Vz;@X{(3IfZ{llH;2o0YgU zVF#qjQ5_ta3WQsq1S(pZnzH6n#?09=-&gd(&{w4!+Vy=#-_y5tm$p-PnQ-bZEvN3% zbh0jZ(l->p=S8XWP5b~nmc~;2f~wy}qydM@;uu;`S#M)f15zdYHMeW9nTG!1{TUy- z6grjS5M|FQ(Xf&(#h-Isgv~ldm$p-PQ8?lhPf{i4`9oh9kM?I^b97F*XBTWe^2@ojptLI&%sbr-EKSZf`v&s*zDvoVCbx^Eaa$&h*adWpH(g;r`tRdtOO2Y)Le1?t7)p`|A1ul!>?I z>wM|9wdid&nU9302VC?oQcg;a%gZrh60h&mo%KEFBHQt4pE?cg(#E&xi~7`CXwH}C z*K`G?FM4keNb0%HA1X78d-aQj%gEW;BcIev(iqr&rF}59TZeI~3Xc2-ykFdG-bu9n zyj5Gi>9k^YZ4oUeX|JVq`z`u*87(JikPCimiVxwuD4;-~PJTDlOUfFjMYZaqOM; zWKz@XK5H#iSNM#z2;0=HwbndZYpey=*7aHIN?LbVOYq~{tz``1%1NgDepf$inoV}V zQtpx|xmi=1XI9R4P;m^-XuiZr#WMQ3uch2h^0gG(Nxqg+JIUAL%9>w0UDkX_IJHg~ z+qBxn{sDoCMb^f;6zlW6l)pJBBe~AIXAG$i^+~@UGE87)!TnuRn(xRc7w0MLi*ej~ zg{?~ZxCIz=3)UaYua|yj75fD){#CIS^Q)?2=sxeBS6GTxP3h}1Yf2Z+40N*tv^U5d zito$$cgfbOlbHJ^e|f1@tM$)3{nOs}O1-!CAGz*tRsO;7;Qqqw32)yxcz_8?PuV%s zyXQxMV1uuR>-2R?@O7t7DVwsntjjRL47xOp+=U)=8R2{K7h||&HvM}Oy(m$De}&4C zZ{MArvccclx#!ugcmD|cOXfVjK>K~9XOIRX)#s$(`LvGNRK1&)lY)|#ZoSQ=rAplm zb=m|ga@#g+m+?iwl0b`VB?a9#*WwoL=gK}Yg45#g;U6#fb1IH_H4 zNDuEHqD$R?*8H>yVxfC^VqGys#VL|0Rxz+;$`cfR+O{>SxF1$7l12Ch4?NyYFy&*56`kPV=1f$Adoe*8C0ate7$ech$%gebUrjdbGAVE%JN>a+ z#zK&r#{m}MCpd&+Ov5G_04*G(nwZ$P{tpLwFPhskq4%cxkM_Kw_ogu)?P>14so}C7 zhgA&U4ZrU7h7px#0z>76gaRJgk{nUp$a!ghD6B2HgIM73L*U9Ay|ruUQs1DTTVC=p z^y1{1t1R-%IQb&>C*D2tW0&?!?LGd{o(tahKu>(eWj*iA`dc@>Ztnm5&Nb%J!y|8- z!R=-SF$?EwFM98x3-08XUD$-Vzf>=B87Idw?SEn~P~X!u+;C_e?sk`8E(+jda#da@ zbHvu-0RgVh`6DfjPW*CV>2d#XWyOlr{;c0~WzNTQaDWpsTM8#V1D zVDvnn#JvhXXlCbeVi!A%?TO(Bq05`RwQ|WM>N%EZ!Dc`8DD0EM;>kUb^cU<&`iu5@ z_bhrs%#fzG<(-!|GJpNaJG)QI=I1me^Ov_I^NU;WTs(2p*tsA5=w%82Vt?nRl*w9* zg9+&=5A;8afhCiwZpw_$;g;ZPX3A!+7C$0B`N+?1t-iFa`qK95OFODB?X14EtNPOJ zic1V`L&YWDYtSxfAT}gcRqDa&OAl3C;#mU~m$>oa>P!2oFFjImiI2<}eid}9k?xMs zv;)OTl3M>kree_UTt}|fA0_e^Gtb=z%_o~ zDz4yroRIc?S&ixVE{?{!-nG(w2mg?woGX{U)VF{u^*wLx{h>UsV^&P){o!hE9H#G0 z{OxH{2@yHM?1zHK_xuf0k|{Z$oZBm{JyWNo2&5JofISlNiG|k;&^z>1A)aK%(^g}Dp3W@T5$;B@X&A|&64uqm0FCMx*j56Z9T|1d?)A@f^hh+Y?C8qR- z{zw<&&#ii1KFly!>0k;jGPx`j(^@mYmxEK`)E1-xtf-9mi;-cx0_^D z+KOu(qV+brb~bb2S}|JgTWuShd+iIFDeLzwTF$-pZ^diR(sF)t$yOJ(bzXBa7&wf3 z9fxr*r%yC9GeyMUcmQmNJ%fFD+W%CGw8rGD|6UY_(_o3=y-s<_1?cbNC#HtSLZG=O zo93D#&Gl|+u6Om!lIEI;=DHZo^*$ApnMU&GG%1H{Asd@&At|MNKXK@9QD&s+^RW(P_Ab5F6sOGI?cNA``Q3awJYfD#T+UNrv-(*RBs}yc3sX}b zo3bU-cYMr>b8=W106bB$&5IgX7RlztSO)37{xO;9TW&s(nf|~nW4UQz^P-uBiDMEC zkKO*8Kg2-xK6{WE_Gh(UghPAPHESR9);yx1-t8Re2I%44@*qSJ4Of6@@YZ~TS5DtP zYl8ZuZ$ISz*d3oDSUEQYHVh7{`>H=n*IzSX=njh&&V~Bl*J^|^q_ige7l+@ZA!Vj- z?8#6`dRqRkwaBr~-)6xl@1C*g!j1KoDUNjA-2W63vGuM@-*fdnPfwp8yK>e0Q>w)f zW#1G+m@lrq1;>fF(;?Bg>dp$1)-gd@;2Vft(D2NoFp#hn`4o-44;** z@0#FzH>JItOo<6Drj+&{h5gw{_K=sKX-WIDn$ou)x7oe6glAch&R;X3d@668RBQ5A z#YdQUh+i@BJuN7!HyT{#B|ZL7qZq-N+$?~}lC3zUf;{d7r7QXlQ*0~CqEK!6I$7}T z`lk(sH|fSO(*sC}x<58iQ5vuIuAP$K&*!kv8)WYD3(HldW=!6!(bYoT5W3+Qwl%R{ z9^rmNOO^5-RX+r|AeD)I7xL)52CqB?BB`%IkOFu`*>|?uV) zCKr=A4wGiqKG;3Yc7>f+8_#XAeZCM&HrrHT!>wR5ubQ{TGrN+lo?S_3uY&6r~_e7oc@kN9lK!g;aqI zRBnK$8bKCT$c7FUty}sR(sD~*;=nC^MV{T#Uqs6-eaS+%^w-d;DHZ>VjnB=W#^>hm zwU00BQ;p~Fb-8@k=1ie$UnbwR-VxhW+06I%22wn;smmt9%?3sX%IP$0 zpz8+uR(FDaS*JLvPF?B5o%w?Nn)7gGa9!^qeZ^uc36$hMzP46rdY#A)=tW5eWCcVG8%&I@O(l{bklClRpdYN$|6DK6hs}-?OggdVu;CNMSiye5JSaQNfhcz`zkt$(vVi z$`)_@+PnGHy!~stpZqt!tqWiN2mTGCFZs3K(KWj#|IP2(_lk!plMPEQ_Z=f$#(yx! zI-*2zJ0U!kd)dX?CV4$)zG`#+9Pb83bk(I^%b8xwLf;yUrW`W&Msf zem=ENNR3&up59Bn8~T@~y;}#DdMo!eEzNkhZp;D0JRLLCTcaa)b!q1zw#JAFbJ2yM z1uW{->3mObw(uT(BU!ZCV2FC{<&4~ZjH~=`>Td7*sU!Ud8ed8s@m7r)CTx*=23(+@ z+T8!-Sjc>3vhY7Q^KyO1aC|gE+{Eqo|7CqWQJ9xjy*}eV{O|gJXXMZu?Zw9OVxZuD zpsQ21a4Z$d(8k}WoqT$N(h_?4&NwEEZ(&}#Q0OJ7CqcF32X2RXMN>9Et0kLfZ@hLj z-=*`jCX||O{@UeS%+G317iLW^run1`y}dSCWUzABc2W>12CZr7f;~@dc#hvvtDS?(*QpV*SkF7yrg&>U1JaGJdX4BxqXn-RyABu3 z@UEec@zIze3CMR|+VAO=$X~6ry5%bNdmT}!YXkO36|TSEIvbB9{QEWEXE5KKWXWWo zWs|Lg=>&Q7ce$zFXTPdaGn(c*;hM0bY~tQ|n#aNdA|fTcCoj4lOy^I<`z@)vlhRe` zzNglEEd{YC>Wd!x()lhRd#NK!^IaGEsr~t`$pjOgxs!y1ds6>#Cy54r>HvMFF*Dxy zu9kdPr#F6f8|4IA;MTrdHrMwoq0W%-w7J66&53)(n%RaI*gb__KyC0|uhmJ3G|JlT z9L5W#R|z3L2J0z(n#Oap`G1q*=8vg#F)#J`j%arIMQ_bozD)Z+mW;7^x!peddL{hH z$^4%t(|teGgBYbhfxmLoH;sTA>igkj^;DPBN9f}B>0#kU)A#jq+EY&7;6L2+I$Ldr z#>ngAtvSe}z%&b4y5?_a7oD&McbzR*EJX+HX*0I-J>#&)g}eHOhcnaHC+e)6K0rTv?mmgZ@srXTh0PzJ!E zW^Mlsrkn3#4{d`Bem?-yyLaMEdd>({)}hmAS<)CqC|+81E1`fxt0*nW6Wp`Z zc`a+N6f=^UI=(B7g;uzZkJxClouS08zXPW&ZsDGLM?fRrU5YaFz%T=ci28>t1pmNA z!+RC0aGD_NJI#>x3(|C<2Q+>AebR^)xmbMlq5(xIUo?~Nt+br?Q7Zcd+pMgjb%a(^ zU0-mmsqQanxrF&`w4S$qV}!H&azeytyXJ^E#F`*rCmFmyb|yokWB0O9ro=q zS`(~wI)dBvJBOAl`22Up*8Q~Hy@Ryez3)Q>xX46;R?jW69=mC|$i$-Jx7X5IZQm{{ zeybxQ-BYyoT@Eo-f$)PFZ2OTMi zN^7~3s6}aN9?iEvQfDo7E-*9Z_QSR)BIhTpiEXBn9F>Hm_owq;ihW0){TI^tyJC0J zBph$Ri+@8s05c#bxch<|J|4hvZk>iBv)ipXg$fM zkm&Hv`);hx{{AQ?S(Eh6TNB&w8h6EZ(YWy(3g|DY8SO({zUNRQXai-ly`R2yi66J| zFQ3d#NX8Gmkn~!hu~`$c7}}GB7AN=JvZSu3vjiLc{qO067Qb7ChAEjhAZP6A$KnyveRE89}BlO3a#&zG2YsRP&)2SKS1&{O{Z1UE;AJ2eQ7T9tIjpJB9-_ut{xH@mm z&Csd$miJ8XKD&aJ*M2_FuS*qjoTRZAotWuAI3^e0s9cY=pJ##P^z5~C!K{0Sx{~;V z2Fm%=&t+n6N*6M1FV6ICm^kJ|?}jsgkhCoIK8Z1wTDH`CVV~Ok-OSDRE%jDBU+>Ky z@GjTKfu-K7{Y$;$Te-Zyo`0UK_paXMUA@J->LKr{?Oyu^ueINM<8BxGxRlrjptR4= zDKvjsFF_ic*VhY?6y}Vp2w|glhhX@*!lgLtpUA`?$rY}uPxl>aoLgvpFx`J>%$&l+ zzs_;i`|v=n(EPO^9F)6hmY+Q5M8d!9L}GA1Cgd`(qJvNM?XPdxGj110*R>?#yLKPn zear@RwM%+Sc;jd4!UivL;RHAHu*P!|{#mc-QDZ8f1gE>#YUH&VU(>T@HdQ{XIeZw{ zr^}i~cv$uDT5^RyX=CWQ!qqLik5@kQD0GFbeoU0?Py=cEHXAR%9VFL$A)v$i68;-_ z$jRRSm_2!YNX0I1eB-w0PjMl+tr55q&tLKPLto?v62n`JAq()p(xi98>%|NqM?M%@zE(AI8&9h$r_gO=zRyt#}cpywAH_pFhdxSK-Lxj~mmv3oq>RuHNlky>&#! zJXGJamXQaHx!3D^HWo1E2FI9RficsCYZ_s{T;YT8=c}3c@k_2CX#>KMF-89pmKm7!S(@qRN#m8lwNk0|iG%xj$;wxxT2sX<8prC9 zWb$@3o#c^&`{B+u#-4^rYdrc$)uZ9tU%|Kk!(zwC&wzQEvG=@P%scU`qIehNN%;*t z{Iw299Q8<$~+>t1xbPTPxW}ieZ z7z7+dM2~ZEGUq;|l;)zmO0n}fmf#8tZvd~>P5%l(g-a8Y6PZoREMF`}&HwN9$4!ZB< z^@`n%LHZq6yY9^;9bLFR;Ux{reg>vM%qwCVO-;o4Y>z2H%AZ9j89bfwmzs4Pvv zIYUP1Onj4QoYhfMFKGU2Q+S3bJVO+o0flFrioznVhoE^y zhSIw;keF{u`D3K+PfoAeKkO8LbYNwg|C>W!joPn&fP{4Rt4Avd)O8t_D}QcE^bH*I z+RaF%m1_8zY}rJ^&!l#NN?)D9nW8=Jo)C`3=z;8Xwjm^LnCM|IoQ^e%{c5(sC$Ugv zxW2kIRR0fpS8a>fr8wQj&vOp9d&<=Rfr$ZY2kKu3LT3weVQuOCTwx}xExq6TMd|&y zg~s~=-H#x@=tPbeO85!>W?KBMsx!HDaKFE`VFPdb0QPZd%676KH%Y*yAJ@N~`*i;i z?maTPyPmPT_Uo>r+;wzxcOAC74(KlQP~uo{SK0gVVml?W^=?PQx9o&gQom>8CqW&0 zK*vQVB*vUV<5$tT(>M*$NBeccMK zm5GM?rD#(P+vQI}otoD%$$n`XXScIocr!bHBve}l-z56h#X)lZb6Nk}77|GpW}e8! ze+7Vd49GWJyVtYz)`{)UtMlC$Xj%W2tp8nWrVEX0WwYt4zvr*)xRigzF@HzOzXn~+ zzTh@Ab@GB^Q0@ZsNaF>w{Okqj5%e<3n)6Y&(`*=IRia@V1`-Vzbx$T6c52CM;{6?^ zsoxRG;%w}MzTYZRCu7GPe*_zoNGGXS>qEi7f8F z8QTQLHj%Nh5^sxXY!fxMHjRys$qOa~bH)&D+C~~1&o2!xLhBhe4mXHtu2c1-CBsQm zNOq)I%a&#>t%qum8kLN*;;hYcBb(32+H-|($9iEm6*IdLNswed@pq+gOd*&seAEbjhx) znA5{Sr_yvCu%W7F@#iFG0tUiaAhYC_6F^UKValQ93=o+jfl-2aVunf*bQX3CP80ub1FjZ9kxJ5OYK}0 zu~U__&Q+2+RYmDsC81MQbj}sYoC>J?CdBz@sSJVBg^9LNrc|BR_melG!7(PF7;77ubWc zd)OjFL4Px}^taT|CdCzbiD}T8(xB7Ppk1axM{%2}(3w)9(@~*arb0(?o9WP*(xKDQ zpB6FMr~@nEK_R%rWSUV7HQGIYCSVzVC_N(40u;R zDih1Q3UAACJS=;>_5tsz2ffw}-Wwmapyv211N+JrXql1KN5tCp4}p;thh@yP3XH5v z0wW9K3U0w~m=BDsr6qqb^nX{Gy(O#TDYLg8h-3PhoZ=4@HFe@DUYU;U+$X}NAJ-#b z7@1t7yKleU_l)ifjIPn$cfjsDtos79tHyoI>!v{1b{^q_y=ppedz=~CU1@?h;+anD zu66LtScX?LylOnvsS_1K+v!X${fqq-SYAIKdYRx5CYMaF9rD4YWO)r?dfyL-9(!wb zQV|ONkKy$ShF6;mFVNaW!|QG&bjJUc;!bLk?RX*+f6f_Rn=s9E9O3Z#lz$+!t|%rZ zD@}%0)bLuz=g9n~{L7)$_LRRE1MDpc|5iMz$w};cWS1oTJ%dlD{DHw|lm1q0D|mIo z;Qsh7bvYp)$NGfdI7tn0!UMY8h#@W=6yIF2j^>&Xwpmj&%WN<)er2CV{e&sP*YOOu z0LoV5Tv=f7+ID-6T)CRe%Ez?Yw=Ikf18gw{*kZ)ot*v^$z~ZVHSvaWXU{J|PEjB9M z(W((KKnYyjgeUM=uV3>y) zCL-ik#6fb>fs+lB@j3oHTpZ>R8>U96yN~iKZbtRX;V;cH*Y<$@=;Pt|D%t9pB6rT( z??zq4d55{~=KO$0%5POZrv|Q&3J*D(tV#vcJTW zl?v6?ScFMunnJxq3Uvyr!C7FVy3sW1CDN!w{(GnZ) zEU^VRy>`g?h1Y9C==G8VEY zJ%W7(h)mWPMj0Wmk*u+M18c0=_{hA1zdl{VFNI>|^2$U)u@oD|o6D)IxV#PpF0UXC z+gVq%-)H*CcL(+u)lmNgHHBq@s9{4ZMQOgS&VBw&mSckWbHx{r>vq;>jeGX{GwqA2 zd!ErfM{C}5z@KSfRNZq}_sD}<{ccD6nPnbk_r`$>^(|(95x3sl6!6L=_)lm0jqhfx zSSAltJyQOyZT?KGk?2^tS_+GY zo8gu7e-)ZjlpSsg?WqjLS1vHVhS$sKl~y-Fb|i7XYpsMfznr35@_EVhlBY{9g}~P} z{{qEKRtK{rrz!r=0+3YgHa_?qolj2-lW?cm?F8H`oEoWmT`^q`F zYV~QBWPdYzU_$ET9)Vd^?$er} z@!;6X%CR;70?e#gpYK>}o%$XHTk2$kSMhfW^8h;lXI-lsWdaD*~@;fxXVw*0@eP%A|{m1m$=J}qm%fuw8g?G z0^-ZUFEgUZ+xGgV%ZQ5ju(JM;*-$zE`M`$-RK3iGdfr@D@?pt&rNwRTtNB&oQ1+9d zMRm#*5gB#KaTO9da9l-b9C)rGBo16x0S7_hz;hKLFs`d|YrNWX_11{tB=o*Qlnk%h zLkLxkpdbVSm51kL406<^8%yuuy9!LF)1h$=x0MAlAG5fR1u~nz=2RbOB!w_1etju> z@8p?gFZmBB+9UbDnYRwqor}Ni!?}RIi>f>K1(s6sOw(#r_wXDX5;g9@NJ^e*TCM7y z1Kh(m)xU#%lswbaUDZ9!6~>$~3r>Hnx_ELPDNTf-Iui}sQP0eaCgnx%7wf4p zb=CT%-Um%6Cl1j6VfvpZdd|4fjoTB5=j3KaQ z!@&rJUdEf8{>q9o4spKbs)bXA$>sC@`3c6K=1dSBV^p|eS-Rn&T%qwBsW@eZXEMyr zM(-ZO>z#a*ohLFv-fazjCNsP-)3>1!z@m3YK`~(#OuMXt@9+-UhF61b+4xK8`tKd! zTACR+ug8Fkr0TeSxkBtND?<)8-&=e6-r?b-*Y04TZ2RN|5@wWZ4kPNdJJ6`t?m(o1 zB@0}drlSL~2jElRfl+ntj%4L#{d`z|?DqQv`4nb((Lf7dIGFMRTCNnx_h~us?@wrb z_7;JE2WUC)??be_TXpSeTFut_6|Hw#OE2MIyZQ|W=4ziI(ek(b?g(57Bbhgr;!)4%2eiUKbC6!h-6@e}&Vvrn?^=$E-sYun+z zc)Z50!+ld@*Wtc+h99ilbhvM7Y&zT*hqa330zCQbLhI-K z#h#$(;gW@|YFS_`Xh6g}P?()dMibikmV%5&0IvIO2dK^3*Q( z?)lg<{J!P@KA>ejO`8aCK>y&Z7xotU=9u#Y{|{55Zg-I>{26ma`E~XxEph>?q(5hg z6MY{heviQ}VM88Hxaq*7!PYS;55{7mYyMks@B#;#bgUa!*okhxc~Uo@8vX8Y)4`FQ zaw3Mij_oye9ddteaQ0=%r(3n_i1Zq9*AeM6@~$J&Dcp51m}Y#sxO6p^CXJ=J+s{sF z(O_Er?r_WT+6Gf&&tbz94Y8VJe4*sD=fFaZ>^Uq%U$Shq=g@}OHce*PYR}=~_(k(q zdk))U5ld$@6Y=8W#MNjfXfzWwnl_Cl=68o1j@LGtlk7Mm6difT5$QDYjzj2!V5=DJ zI2cWbzj(5L>r{=VU84#28{q&nxZ;LGgPiJjx8s8h_Z#I*r=KX&Tl)I@Dk?AV;@HKzL0v(R(x0%3_*`d?ig4=3RStNMq$l-z&^(%*A)-3SCW^zJrbU zhCV0!+S~$~D}IDnn*d`@-i7*#!;AtiSp*tnGa9HXJlVzVgu7nUR#kU6ZB>0oQCU^p z;gnVN9YtMLbw{PHa_@vOdk~tQ>vYx1xglu|H861b$O5H>Q-YmM*+aE&*jk~pHrTdd zYpAn0_yVOARb0wfbHAD@9x4c0E?ZOC0v>Yk}gslP)>n$D!gwz0G7L ztwPU*imx%21?e4CdlMWRI8+H+@*=8ae$B;I?h&c!_mE6r>4XAdPD%H5SHv?*eM*{d zY@j_VpHk9$-A%4b;A|^B#I#;FuC|3SLYY+Klb8^itV7348eDEET*x@)7BwRTZcSt z9eCP6x&0PnDe1lL3P)Rsq9v`@-8sU%lyqKqI#A|P-qHqQ0`z*fX}meO*cQg{u~A<` zV*w>Lze8TOj!^3benO25rFV}QUIWC*hJR84wovVrdwBITff|}qCB?g|r1+dFDc)Tv z#phH>aThv^{!&qjD{>}v_e0d3j7%_GxP7GOmMF9_K|38S%=GjJyuNXPvdfsVdxeT8 z=sO@t`vaYqZ8(yRKZ!3AU3Vi>evX`Ef_m0;f1?kHIgZ9d_J5i{3gJp5R}e_DsjZ0Q zN3^!f3AWrcoz+f7(}@jiBmWH}BYU%K{Ass68xtzK%SKXmfuViP)g#ZgStI zVz{tjpXxzOOK|?XX{jBmD1JF-Vz70mSV@pyFT*lK$v1}xd3o;;=A(%jW>mHE2gLrq z%q!MqrVo03s-#=mybo~XpyQ4=a9w-ImYhG3Kz- zg+i?l)j`5L)*)-&bs~+2np5HmH{z}Hcb2Rk4hI{b+UIx6g&GMZ+GQM$$#;oKD*NyE zyLGv;|1;_@7OCui!0*=O%KiX5lJ63ORQ5l@mNe=%wYR|vI>3^fWR|545@l_*K&_Qs zxb41z@07%*&PIc0l|2vUZQMg)`!d(5IRTP;8q>oZ<~Yc{UFt{+wVlG4?_e67)$_k- zIjg74)(L$?)2e+$$)bdr(VkUT zr2YHNLqs+PTX@^!7?*iB{4Pkr?}s44-1LXNzJGB}B6Cle=^gOdd6GhfOK=hmlaYaU z82js2fJ_@X_*@wo&7Tj!f}v}f{hnO)rPK_fzbA+M6?JI{6-+T31{E~5AB74U0hd#J0J3}~;kRM|i~=R--U3%r z@}W9;l(G*ACdji^{0I|#n)4kYuH+=bcVs>!jOWmfmJbQX(Ud*%8!aE%Z}i;n=r>xI z1RCgXH^-548`Z`IYP-Si+kk2(lctut|Prlwsb}8I?~6` zfesvqCG6yHfWV6MD!Gv^2Pai>CDld;YOf9EQDbN}Oqp7UP(Y7rwMuwZ!2?6S!G@K2 zRqmdc$fXJ=Mw|7Dx+khkY!}V0`_;$Q zmN%+uY|rSMAez75jlQ~55ippHnMQikJo&;`LT&HtO^s9hdmbw(F=loIC#KSEGkA^NO!MoGJ z#zp%X^W6n5sn()P3PT;e_%+#CQJ0kI#nA8K-Eo2RqyO_PzNlRM(QF}2Qp+LJj~Rn+ zk+~?B)Bp*&|K0f_s`R7n49%=9NB+6R9NB8tP>&{+DiDL!_f@OM(cM?A9&6pFYU6e?XUGl#~<0`4dZFkK!|>HgllSCYmCp6VV!-Oeexuja=< z<5&2wk{$S~Y79;qR|9YwS1qS;)jGMx?XFU|bE@=hccr==y+g~!8!&yjM{9lzKz@Z= zE7^eytH$uk=B}u2H8`hk)vB#-yQ{SAoGNA8T}#)_F;$B*OG+v5Lop6>KvihkIVD94 zy3W>jcTvyIc~E=`D1Tv$&D+A*5qZ6i>V<15+ajBqu2rwsrYJ(7I3lJJDPGh9Ayk|` z61UVkvaWsRQUQb;3rAW&d)V6cZ4Lnph&U{ z%5>`mwRP+N0g}lN);gjeEU5aU5QAw}K|BPB=tbtSCovP>kc~gIgLpjm}NKhZN#5(b8Jc9{l|#(Wcr^Yp$*8_BZA0q$ij`3dHc}^YZt6@MJO`y zpUb~?ohp!m!pEyd@rk|8UP3Bu4BZ{$DiR~_AAMrvy%6bp45}_WeG>)I;H+>bEdUOu zJy~HiJGR>2N$n}jxy`x4r{K6D%(;mJg6zyKO#O_V3D|gNDK!#%PN^JM5x7j#gEsq07+NjvH%lK`!oE^&Iz@Ij{+l=34%h#bC4%}+BZj10+7a=>hr<#q! zZHTokeuH`|yK(z`7V~YK_zhoMhAI@N;5YebE!vpffc3VXr>yviJZ+uw-KCXYJ`eV5 zGpENuj#+YmFj;bI3=nn|Ee8l&Ld*H&en!jrPAuRtl{`~t(9yoUI?(cyH+{C2O{OJ%F6*Nz%c8Wtm6P%ZWqEjR~IJzu{G*8 zo&0gHt9+XAEpqrmN&$A)ssj~yo*;Pg8b#lxsq%qgWvdJEV|Ldn1Q39Esf{c%?Wn&N*7hx#h8k)_| zlvqHgs!{|n8*AY(HE+#r@Ij)`Ih=2dS>fH6k;wu=D{zu4e3JU!oU)vaL5f%`)3*sp zw=wGLGOyvfbQAGF+piScSSDpB2Vf5 zveJM}X!YCLBpbt?}ZfGgwH@a&coht>}@VhIC-5n)%q*9>u9$Ut%+FwSA9Vry(o?S)k?n+{J7l|FJpKb~T z-q~KACNbqwRB&oyCNrDn?EKL1w2r0N{oa9qUeAbm!Q$0liz7b_84{a@q(AWIP za-J8eK+$vd40Qr1QbWfg7z02(R za;ctQDa>_W%}TF3ejm~tpl*dYPm-HEvOI5$RmzwoS-P%&Es3tMCN@e`q$gvQVus`Z zb&{E@dan}d*T%}EdNPJs|AEB%;*j1lv)IYx3bz1Q##fUyvTsL)Qt4htW!EhG3c))> z@D2#x+yT8oE0+s%-C0KO-=8!;x$3Nx=H+6fQgv2Jb0;98be>g7=920RrTHwR`E5vZ zk}_O$v-bdul85-WdC>o>{J8rC`Gsr3Nf3;kSAyp@@nXZ4RGG1cDW0 zPYs2;0Es(n%0?;OyDP2b?f{+rmw|NuC;*!;1f==nh?D;(Fm;E^Bbf1pq8&6F-IDwOn}jReu?Mr4o$}a&V39M<(j#5EDlISVeY>i5(+u4r51l+L2QaD%>3Sq077+_IWf;j(q6kC~@W)ymu|m z{GvEhM~USy&SBA9VX4r+bLHfKMdy+ZY$Dy|xZvlQeG}q*MoFB{j-Go!-J4Qb?@B+1 zG+((W*A?SaFl;kIS^kL?vn0qzd}5WOKrd7-#C65^R--OS@!F5nu?Obu zFtHAUOV~twezVFYxSky_@VCXlz}@G;Wh*}vaxlA>Xz}jaKU&M-A@BDH2D;ezZ)Kog zDNpzkdBU#?P4#OAI^k*O378inrEa&oxpd?i8yLDkSmjyCkFc7!R?$w}>E%MOimvc@@8(AP5FWcp57QaoJq+1TUEOvPmFv&jmEYSZA7 z#iDbyzj{Jlx>$6s4%kT5v&b98gfT0~Bq4KqfKPRvpAi$JL-fq45~QQ}ROlATt1QnjigCuJF4n~gQ|E9q$}l0hio3?N|y*1q)M0QHmizkL8^3#Y9Ld!0wP4KPL+1$ zDV+w6;8F$eFF0JPNo{3GD+n!jZ~&Y!pBh;}VP&OOxX_RS{ zsO*P%YG^z`08VvRwZi;z=OkU_PR(J07n=|>x9R6Ul^rJ>je(52x}STg~YJuK}~DT zRxxpUz7n7q`05mPf6MU0SfO0Z|IcMmjb} zj+(Ls{Qm=L2}wH9kfb5CLMjDG)s zqnJ^-n{nce_OP;Y%;=5qP`H_mVn*N0_3ZD8866du&9>6lUHh=wRQcNwqo-t;*~VpE z@-h_hqNl#exUB1dZVJ(&mAnz*ve`vh*F}1ou%hBJVMUWgtSDR-Vnr*T6y-8}Wne@t zroACRimv}XB1JnFT#>&0@ILq_U3SX%-*ZK$e0OI2W3tf52^-Q8-`c(y+~pQe4Nk;d zMI&;)_ec2%&r-4G8$?*?L*>R@_ONdUM~DAIY`uN{uAPgmbH2aBXPx4m8UYktJjFZl z(>A&$D&RAF!*8Zm2^o?A>zp{Qf($u~_z^>!}&y zb?e{!^|9-Eb!7JsUatl7k>y!`ZLhlDljF$lYjtEd=d^=DStA__nP7a5lad$EUE6xV0$1NPvJ6fHy{u=_XEP@hVQ`u@jMBaPg|(A0OX;Z2Z!${QPmR@^A7F z*b?wdwtH!p!Ld5m@N4fL<|q??C|m!J2cQI{P`4+~`vemKtGQKBm@!ucGCIZjYj68c zxy2p-W_)0E0ZW7GSkLXkC~fAiax1k21Vq)680w-TXR2@o=k`MSuksDlGZ`L|{^!~F z6C(XNFoUDMRW^7_1@%Q{Wj?QWk;5AxY1x_7d^QxS9hRj1wmLis@fBxW@w8?E1nlzu z=q$`+7T)4!p)WEEUf-a_>}@78!A$%t8-GLqh=e~LZ-Y&MV#pO|O-G=QOb^Cs|A7|% zw=~5hyt*{urh=2Ozc;j;p9r{9$eDSt=$b49OB7}evliNnUU$I4Nvy=SOraZ{N}@Fg zM+GOQDQh9WCe~}D2Ib8eAX%OA;T8}3M9P~`g-d`9+$S=siDQm%67s@xi+&S9@N^1l z?c8 z02mD~rUBJN4~Qm|s1Z_y`R(u&S(VeW{(grXu7OmnM1~5fR{?MlAL!M~PmVq{mh?l0^LWQEy<2pA`|B{)9Lr*e6LxHube0oLHVmlPT;=OQ!xey|3|@i8H; z3(cQNLmHtCp2+HCtntKA$jA+(g&kheutBrM(lBAbzw`g#Rn@fV**&y~$7np1{Mhc@ za|^?IOv+_18HIh$4GQ5`1ujCEZ7)i z;=3|RBif<&aQx@eg827LC5$=!B&~MCV8DFh#N&^IN{g$@H$;_I7hHHITu8a`f4U?% zD;(3o>w62Y3i|;J{(M?W>%PEzDDpq!H@m@V@@&RkR8P*hG9#HlmVXJe{Y@y96+&*DB?u% zkbs;&{sgI8^*uX>;yk7(Ab-Z2IRQDScN|$jemLWAGXc370hx*Kjmk%P@FXB3{Am)B zW4=u?iaE`!`Z#uJIb+JE4aDR3%EaT^UmIgm+w3zTV{XsJH?Q-@M2l=oCgziGKEdpb zfiHuPEJhgpp`irNupuEEB_k#CB^)IqB^||ujsZ_F_<#Z7J7d52#*}}sjPag^6W4K? z97Yj))3KOX1rK;jWFGt_mUM!! zC>r4+i9+$)LE|WKTDHh(;<^`%1CJWl1=8@N5q?YRG!q7Qa=t@_i{;=pY;|$l&TO1g zfG#J{Btzp-<2EKB;5L_CTTTC&`Q#bV319@{IcyeQ8yx!Si^IcHhI4Cwx$2{)cCv+u zYaw;rnk}nlG9$Y&967~c6G||dE~J)W&!_!)Iw)cc=S1L;X=&I>;Qh_eF42EX7IA{P zWmke#%|-+?hEA}}O#jan|CI4h3|-EzISHKA@2=NL1%J=4rAsFj$PBn<(EuCD;FtoT zW85(XU!vu(Ghe6Wjw!gCmc!2Mr{xYJI6`X-8^Ol9G-Au$F;@cY7G0Z9%iZw=Ef?hR zu*e;<=5s__TawtqpM=80T{|2 z1tWYguz2jGfxzNPEQ8P)Sbu%8fkOQU$EXtFpMuKC`pEmeY|Gd;ru_%Pl7w>3+j<^@ z)njuI8a(}@Th3rJwEXT#2SAauteyW3F*5O&IV9k-I?g42Ae0{=KW%1;{Vi?*pUn#6 z+<E~GI z^Z0eE+(^hQQ&>jAk+bjoTlleU{vzb_A|Pj^bYbC4l7%w~3x^W-DeRk1v=mn}#tk-m zxSF?}Vl~@hc4iFPLB@^NvMCMOIWL%Tb5zz&u#!JvD_K?>s}q%Xz04Z(Ww*u-jb#iP zPEhYLJ^i7T(=#|_)A55veeDB%=|l)^Ghu`BFBoUm}&FTZS&Dh`zQtt6C$Sb)-Gj2vcBF}Z_lK31{vr{iCD_o z9vZ7LF}%pEd;s2G$E=tE7mhESnVp)MZ6}=>=A*@OZ>T>yAo_vHrf%gGuIA_-)f@#j zCrGs_jA|P;nPW!6#r?4ir_*RzWT;5sZ>26l#$PYta857N0m0pdroL=_Q#5UK%e$WC z&1(F2kpW%{OONhZIa59v3L0iH+2VUj7+N=OvmbYA)DU-q7_u&4NUWy@C)FPkeJ6;M z+OA=VXITYsQp;swPJWr-OU72G{LLl7C+pfl55;t_=cSZq-N4_gVAI_yahhs)1V8Mm zk8<)#+TVwLts%Ctf-~_0#M0~8+jaS^nDpkC6MPQN*c^Yrwn@&eZh94lO*Ub>LGx|lI;Gx5g#=7B zJjqa<1WYyHi4G*-Gtj~$AO#aL@l7THGld)21Rb|Qm!=8%hsy^^c!K;^zlX)f`jhB0 zw?)byw9}jif06Vz$^OA~VRwha1`~#!hxLIMXIIB3DpLS!bv8B|IR(Uuqmt?K98xLU z{*t6$yY_wa+YcfX+f6>UBOh;WKf={yJ3GEr?SW0bup}8({Gm!RZmN)s)OKx_WDJ*| z(R&;8wu7={QDBRe(;HjA{#A?&_Bf8-)e;iQ|9&Op^GwiaC1lE9z!dF7I*l4gYCrDk>}KL1mf00? z(%tJL;x>ajBycBdElrcuMYVD2GbC)IlriY*z_^`F%R$NK(Q?ME zNoVLTs+x$Vc#1=ZM})Lam1hqHRB6qPn7~dtUr!6cYyx@hFFEf6$(ZGA>N_>Gpu7`e z+FSE^F5uz73RZ`otA>OBC}l`E`HCm!$6Ths-KewM{3d+sWe=-V23t@y*_4}CTpA4Z~=DSN%13%hv5uuEF* zUVn4nll2XI#_diNnp;SVQP|}b3%l4hJ$r^@@Vm^f!)1 z78}WuKox&D?f)jj>yX&TfrlmOZsa0J)%pg=6=t!7f4m_pHAW_jX#y8R=QpojoV39mh`4f z*Bio;`RNljERxiur`x3cK%W4Lrpd8 zNsilteo8ewM(D)fi${lBjRKD*$Mqu-XBJw=NyBcHIfZLS(UR6T>B__56{01rZ_$+} z!YfB0-Plxoquac=-x3X7oTTWFJ;-K2slOH@dC6iVikHl{c*#PGm&~U+>)I29qK4iM z;f!Jz(g-P*^ABa?59It~+4#YXKa?$exJhA>G*PgHiYnc#sM6F}3W3vT6og{R1-2y9 zi5-@EqfnCn@Zi%7d<2R`i3O$ny>v~Edlc)V1A9X>bIWXIp?TcyS41o43=^%I-=r%K zhgYCg^ILS~iSWu17U$WC_+CXyT+rkun=AX(IjfAfAM0}i<^H_X=Id-iy@x*)@|7|DIe_qQ1YN7_2LFxRJn3ni! zm+!-+AYYqwKz{Wu^guShe6!qct}2ULbET>**VvkK!AVkyLSKG1e!%aD+3qpRDRqS< zY~1U}kyQ$Rtr%t5DLo5I*zRbIQnyz`-V~(tw_EIO)G^9)t74SrR>df%zJ?g3t+|Eg zT8#2si&36yG0Jl-MtLr4t`S}uQpGuQnxAiLE<&-O;79yGHohM;ipr`u;Tq6uF^g|8 zYwzNOe`BrcHO_}#R#Bw}sZ_$|wFN1sRs|`i8lj>=N+Z-LgOpQ^L{p7KQ;kGZjYLxe z1N8N_W!utT%lzuo~lw;mCH}^!+BxQS&igG^JMvP8=d0%JJz73L+K<{Z3=1| zudF58?f+6mFl1C=v8Mf3WVEKPs%f-}5c5*Xz80=gKYJzCD`o6h-01tj#NsHKjX6$h z7OG`$*8iDz&n#zRwM0y;^;`{2to6Sq6H7sWH()H_G6vXEv~s<^m3rGaRoxr^XFATo zcRwqWfOBt>!CTxM1gm-k0}Cp%x6=;KnZE0X&NfnzNSP{J4$=g22#W+c%$fpSLKxT% zOCbWaBkO~GapY(nFT3*(FzaM;hV%$+DAA;r4fWeVO%%1Ohc3_6_uLVo%gSq{6$;G( zO^U#-xoFt&I4*62E1b#PXl^gghDabiiZdz3(8oE_eD5T?f*Fv=xxBk*xm`h;mfICv zPs^!@Pea^5S!jPy^j%LV`mUds4qRgU15#MMHOhZ*JA?;mVHjlOxV{wU4F({Ghd9Ue z64JBHalNtVxVBild8|QOR(Y&P6QURYHQ=?uYt1gpd9)A&Uf>zu5+S<(~a$_t#5LaI6f)a{S+vGRw3cv#RuP2|-7C&%X@05|m4qUtX5^cvrEoZRU ze$);XbkUM3kF|NK&10R6!A{O?3fVi2>|#TaeO|T4I$O97OV&AIwnd#VQ&-m1UQS<0g{j={ zbx3Avrlz&k-IR@Q%2D^Xw9iE%-;We%Ee~FmK-{MQ>qrvRA#w5Fes4};>i1vhC(NPf0-{7_e@lN$=Vc3O!jSJac6Hv9 zjK5Eudu4z`?$uX9SKLap(|Ehb8jtmyae%MthOXly6M&QbyKMNx_CFdm68YNN-Z5Y; z?>W@y-II7v;wNqVMlyaRHRT!YxhD&V+%qe5RgDBg{w5*NY8dioxtgVPp!V@Yf2J-0 z5_ugL0wl7+w;>W)irkRM|6Pq!B9U)dA|$e&<&emm?ldH_%a{a=95fKZOAL?PJx;Il zk>%;a)V171`yYFCGq~hT!>={k>m=KOCbt4j26!a*<7!Ps>*;k4kUYep;piK0&7-)H z43PXv6OH%ladiNfxo(7k@BKtcPO4o(}yI zzKGM{+e|M;eLmPLDcNr)wO5L$*cDIK@f!7|UjB%SBkQaq&I(&}V4(R~Q zk=R4DtWyOFcx#1qhL63B2tOX0&f`c|5^So?QZ;c(trk;!UaL1zm@~{yrQM3){YqTo zpAdYdQ;4eebYXT=j$(K|hT|vAACrSWu5NSC)spuL6QZ)nW(ZwHiwy|n`wKiWwXv(% z8NtqQ6CD|kztR3~P6Ulz;C#=*jUOM(lax|ue4UV4oATtE6dKP|dq=+OKo@A$RD3Tw zNB?uEUiqXt>y!D*j^;0WJelu$CYhgoINx=|TRR1XH*}2Qru-d4Iz5}eMgoU;+-B6u z#J6XyKF(0Ouowr$ek=HE#a{fYkNKZI;ZI5WD~0BX3(XT(wTC!po_HfPvH)1+;O*U> zG+*5=UNWdMy1rqL?}olP81Z^H^l`fw)mgibrQ(B${45RKv)wNrH1@Iju#pc3AdquB z9hc+j70|i>Uh`KRP35n6Je8mOOe#O?F#TA1N_o4`%q(tj?LxVZ`~l*!5xuS@ ziIQzorbX*{Ea)&oTZzS$p!yhU{=;P3-qtBWm39Hy9|a54x!Q87>OXXvXwiJf(shje zyo65SE5hg=kX4T)8qmN7$SmTH75j$n;TC&+t;FErZ zQodtODRg#ZvH_bcC2Vb?VNb)xWIne)pW2tqrw-&79Le`Qp1*|^vgmL!zW_HR+sAb> zJgzio*gwR2c`;*-fK6Z+ArF~Oy}G2i*a;A3gi=36O^H$_($O!Yrq^er-$E|9pI>%d z@IzW7a>0Ly3l_ivX#(_-=zKW;6Wl#3C5fXV_ISo@Tank@;5*A7HLC^Q{AfK|z^04%j>NUG54vU}uQ~P|xCktT=%D zWU&Do3bfU3Mw;>O59H8&;s^v#w(#dgW_aFql_h@gw+8G01I#EgK$0RBg9IQpN%RQX z3X(7x7b16ti|VRn5nVNi<}#f4=6uh-eC{ax0ZZ(MKg1UBh&Tfo0%rg|HomIIj42 zMmG{yJOc1E>pzc(u(Nj){s+Vn*9Z|cLx`vup@^8l>&z-Lh$IBS3@J?qPg5BxlL`wS z&-XC-xo7gX9DoOy{6$AX$?&y6GHkJV6{NnGSF0@^v`01;2pp(JtpB0z5KFUPlGo6y z?UeL7bp4cfh2D8Hzfa-*I>R2`vXjWs4Tvae$Wdj=Y)0 z=KON4h%wjtcNDez_NVMYT&oQrQyGwXBh+@9@#%0pmUQO65T9z|iXS&>0*;(eqg%<6Cb zF+U7G0?(atui?rs>jIU^Y)=GFig#EvR-Y}A4-a<+v25o#bLWajac8tskSu^$EnyrV zx=Hzs*Wof!#DKh1;F(+o28mM=2&B=)HrU_d*E0SuwcVR%1y%B`WJ?Y?sAC-wVx9NX z<_-`L(2-#A!eX#Ec|JW5q@D=&h@OtIX^9O2t`_On0yP{rm9TszM=(xL_(K3aVQ>xvUOCPv zJ}`!?e%rZln2wq9G9Jw*CqHP57ATRxrA@kp<=O#>anTCXb}Zl|#p4x6hSZDj&j?P6 zZ9hr2y{qJgZC?XUih?Z(PZcM^po7TsV^I0#7-Y`Ipz}gbvEz%w@sBfgX*&&9~GOIfAwFR1{f8}%u-6aHgnT2R{7ww6(<4AHtsO`wNZcO;| zfJ^4*Z-ngYGt>K5JRWg=iZ(diR`IL6r*P4>^kmAlr~Q{BOK`F+!RIKd2W4McwSXmv zv7PldmQB3n9GNnGjSJBn0xU##a8{ah{y%19cQBlQkw7?N!sc5yxbZ-}4H^(VS$I&) z<`mj7iZTFbxy&)ZyKyss_lIE)Cw3%&G<48KLdZIR?COSNvKruR8I_l2w6EB%t;IUY zlyHz0m`?-4j>@3?L1<7K%JW-D9X9;V!fbfRh`Kal5}lzP#ux!ypaY9a7FrhuCP_MG zVDgX^`$`K)oGwY@1keOf?nMC!4f-L0OZ#Q*=lov_>7I)dYB|7Ka<5Z- zAHPRl>NbbE4gm1r?j7h;TaKi^H!wJ#mc0qqJxQ(FPC9~*20-H01*HfGt*_3s%j=hsu_iU@%IYL_(2eEfF;lM9ln{HhsYX z%98#`1rGRkAT;_(?s7(d`GJ`3)YGETf9t;d9E|=skLMR-_jP0RFFugJ9J}vwCg4}~ zJ-164xMikQw?y-Sf*{X8RKkJGz=BE0OuujC42h}bCZ?Kihkw}ru}SqXHiP6qsfQ42 zn9MhB6!A??-M3;d)V5>V5+Rm75*`Tai$my}AT(zK8XnWE&mc%pJQeVu;@dM8j1VE1 zAG?nFE{YGZ#5cI(05Ka`ia%R2bMX_66AQW= zNfvZSg;c(A1HtA%y1|2@GuE@kVx*S?s$4UmLcPv%n?uV*R8^>V1e~P~Ag%;jJ}INL zmwO_B%XeVtIkEVMw6gx59H9%@D>7tXq;H6eBk}bAW$%5!qpHrt|4C+mh|xPis`x*x z(`_(VSz}vhXw8Kgyn_?PS|q7hXwzkFwOfS5;ubM+63z57ieI(0+q&Ad-MU+MtF6TV zww=j95>O$4D2iE7L|Xt+wh^)F2`RDnamQI|8Da5qUDx1T|WHSrnZ5yoKH9vguaCWY`08pH!z z5DcQsky}gH%j~2hPLaynepsi`gKC4}pm;RCk%f#^H(LH`*xh4{(`LTNt^&yv*T{vK zszt%|sfhbc@r*oI{QSM>SreXxlx< z$IWoG=ZtiGJXM?;ciV|ez=h}Y$OE`2K3?8z;Q@uS=jr&i=jnI|t+Ohe7lMTOAmI{_ za0yFP6wc>(3TNY0C7T8MAa$)W1W0z;Qq;}5jtzf~L)BNZ{>w6ztIH3Mz|Z^6XVe<+ z@?&IHi^_STsGMb1uNgk8&tPoK&i)M`Bj?IZWS&pTXby~*Bh^k5nZA)P^sY}6NGOJP z6>g1cRmH6lXU14!c^9Hf)&^tN%h>$&f@^kw_2LOKuwaNIc-0b}UnhuY+f_a><`+56 zk-JmwXy%vqxaSP!AcFs5ap?X1^4O`x1c6+GF5d)LktZ=iSi)Ltl_&An6JI=$hD7dU zzKPUH2MRf;}d?tq7yWN+Gyq%$rV1f%QM3m3)C>{%WUcS zv0`vR5Sc9hc{0eE46#9btc2R2DQ0PVua9yf$%PEMoX3^E zCWrNPtJl}Oy?Us>r~IY;{fkY|nBs5E>-VzH>n#+r8x8R?;vqQkl)S5jMtBI0v_W5( z;I7zNiNIFnr?xEp)ls?F3qXb8VrK&xE>_MB87}tgK!)<-pXxzFI-$$v4Hxfm|CVL6 z1l6L|+{vegkNp*p5$`vPc<&v6MX88@-&+_h-zaf>=IET;seTZ``r`os<0=jS-i^xQ z_>k2l9>GjF%v_l7*YF$IQ5j$+5$xzKv>VP$6RJhBXNL$B3hSS}phiz``ny4yu%HvO zEa=h2`FwrikT~z@6OA}8Vn;N2vFdh2oOkd*!!Ipn4pj~3G!W-S(ou0f|2#X)R`JI< zUn2T0??k5v_o7pTs3KkpI}s*C59D7W_Fz@?KOIiY?MckVpy*&QsOnEFc|NiH#Y7Df zWDVLbj-qC@i#kmCB0LljrjUu4W#yMu<>8G{%FaesB94?enq?6vYDV!h1A|)xgIhc% z{;w{+%K~14qqF*y3Ja@TT^d}AB5je#?kdE?)TxUm^Rc@8RpD@RO9`&llip?X+A?Im zJy&cq=VHD+S0wp!jd8|9HaZ_KG*TAPY^|7Y@#wg?2X!uzI#POnVkKg`i0mS-gYEs8 zZ;vLgFY)AcK{j-4Giw&xK`b&j%-90>E zJr|Buh4shYUs$gmA*^?J!urH~VO>@%htsp3yu(&(zJdQY`GPvf$ck?<%y{06(;Mh> z!n&DnFf#43XSS;%QWS9iHBnuJs7W$$O7)hUQnP`o4Y*Qer?t9MR=(A6VjI*15n|Yh z%Y}%ixA#lBNT$c|h0MmOsA(Ji)=4}p-#Sg{seCCQo&}dU72EB$`+(hDnuNVP@u)z3 z=Tz)=DzBa9SQlP9&5bUKRvx@=s@q|gcUE>?_gRd>mn`yfdJR#h#1XBr9=))}cAqJK zx;$OkeqB*AP?ETCQD0~L#;O82Qah~y{SjJ?ty*>OskH0BEoJ;IX!uax3wM|38~nMq zMDu)JS|7i0n$NmfY~$4P$;GH<$8k`||4QGOU-_^bIPP~970KJ)tHVy`Em}LJNF>C# z6kPe{vi$l55gpc@nZCcnegAxGehMbw6WNQjV(u+ki}kZEEOge-E}8baW1XEQPVE?q z@>%DmmvXoHf;7Og;~X*B%D+Yqw7wp*rXT`H|6~5HYJZm*fL$%S8%{B32s98fB8MMA zL;VRNDox9cQg5?HbHt6+;IJjtFur1Y_Q}iJyO2yeQ^batJ)OHS^EDc>_cXB@-T?IW z=>mxt)ZZv1vitE05fRzT_YXiOpWGQ{?2P{jG)8TYPXdKjN-0NxiuKz`%)w(6ngMje zsq%JC4q{^0kL@HgNGGDq*v>-yGUYU2{W!bRcQ!EEb;V-_C5G=$E9CPbONHEIAX$lD;rW&fr2MH^T`HRHDO7A%Y@haB$zt6s zjdzk<39y=x^$$vzeH+vH6_a=rHz9{xDD6jhXnLf`=i}`x!Vi~ZA1>M_Z`$-tNwh8Z z+N1>Kb#3%9$@7?(hX*Yp7)?nzCb`y>lk)QL#;eApc;#%6ayEE*c<{>Ul5$M4S5B9g zhc{k1CdDh~2`T3ZFAoo1Io(o@N%qR=_VVz?E61dGtG+#YtbJ7LD%-Dh|rfW^Tv+9U1G(>DsLw* z8eA{apQsBJ+Xo*PiQv`?NYG6uSAN}vMUe`m-;~=GO%M2OeNK3tvqq{j=iW`5ok9P#+Yn#2U|AX*mv;R9WUF* zZY#&*NiXY_OSJ;uF^Z5C$=-FQb+1ydy`EnCgwq?$AVCwwBfZa$7001jj@xa=+Y6oa zTYh3+`cEQ8<50WCL@H8!Ro0q9yGk3 zWI4~22EKgoS$oI6$g$~)O<-l^IT6fW+pvF-pDoKx*#}>@%eRHyRJQ#z|5j%(?NmOw z;&&oSF0uzVMC&@DgPr!TCs2K)9M<>zn}>!eT-jr-TBI`t^`tkdA~ei({3v~U*`fqy z;H{RE$;KNPQ~Wrxa(MR4f_J&KPODL86u#_!W=PoGg$|vlCu6JKed|gECGofY4P$Kg z`MwF*7v1OLJ;m`1;d&S+gi<21Rmsz~eO}IZkKgg*Pn&kG-e!?0;BeZ2mRM_=Km8gSiDa?Q zigdMXY8aEe^whp7@k7&=oxY9*hBJiHV!Lrqahnk8@TWIh;qJaO)BKwq?UBKP|8 zQk!Bo9tv2IcDK9oIcp8lRwib;VqKWFTa!wcTU(THCu<69cYk&AmwwiZ?Y_aC3ATH9 zb>%w^AL1(40=jd>pnspWrlQ*adncapN9$&C(+YYZZ$0=ss{MsbJ3BG6$gZ4Oyb_E) z)i-0572)3^v(7W{zt^&G+hqQSZ%*L#j=}g#{&;7g&u_c$*z1K#dy^~N@_XakZ$=8opl;|A)G3}C8}&~Z zHc2Ax#=hwzs1u|qo<2f1CoNw6-ejrm@_F;-*$4Nzo725#`Zv2f%eTc}E=2h=*WZmJ zSE&zbSGOJF}7uDaKPU7w$*YmXmAEQoJ!bcYn3^2d`)PsAWY@}zb(3> zbuGj9eqyyOkErMkn(465*HOq`^f{Rsnrkp!*|nli2$Z8?zdWi`L(VbElzkQGm+UP8 z-?xBdiwgLD4D_f%8-acV}Ln^Hauwl`|N2%f38&IA;5BIo3U z=sMMIkI=y~46(xDPlX>7nP!??C4l>VEO`#4`>N{>f#2c7D+}&#*6Z-T9e=?Oj_`Tg zZLgEjRk9y$*{{G728@|hjX|u#HE`z9lt(KS> zT?8j=a|eN&D2kkIPnZhAm7lQ&X#J+*`a> zwhH^xv@o3R`>@@X-7HST5XEa-8`Ss~Zkds;unXB+(;cbo=4Z2Y;pWymWCgUkvK|Cu z!OR>=Gt+nhkeS9ZD`fHpd_My+6Z&x=GmTreue_1wl#<|-r(;PQj&Pqd#J@$8PLN19 zwvtEqH7j^cQI8c263izv7tClNnhQ_o~q4xEqjymh;tDi}-WtME;1vGH6e- z%Jx{3mmqr7{DJ3dgVyBbyR5R`0Z&IFeU|@3w4Gcf(!ob555A!+^?KM7TuFpkM$!pe zH5^iy>>$)E7yy|20Do%k=1(ZZ7k{Mq*Cf*)B34-!3BR|>UIy$YZNXDkSqJYAQswml zO4KPq!mCn^)+t}^psUvgB|m~e@Y-TBenP8`SPMifQIhd`#H#6$+)r3#dnNA+eakA_$kAUSh+#mVr#Nfr907)ke+p zBsp#T5u}xcLXx@mG{Bm>`QlneNQS4RwiFR%xq5LpN~%9k_h%?1bNn2IWF?!l^+2E3 zH1S)zSfLkz<|`zZTYgfZj{-#$ngL|;<%>Py#woJTWy6J^t11R#$)B&5^NB*aZ8`4s z!=gzdVei8g3Asoq|G!Y9g8@I5{P)$&lxS1u)C*J!A1=Fa;*#wU40fVeEk%p^v1n6=2=tY2 zuee8iwo_UKtrag8sZTEReTZLcP2;gN{efWpNzvqY=hMP!;T$(+3-3E2)H7pI!*T0G zw96(UsNE{+3NhqLAu!>k{IKWX`By$D7rxJB_UR;zCBHr)np_n+hFW5YRhqv#*&G_r zvtYN%X?k^+;*#SqqS>1&V#T!VCSOYQj85yK+Q_m1aD)J{zI68G3oiQ&;hy3X% zDojOV%kCS;^nj} z3R)#+6R#4=NA!bV4L)utU#~-z_tN|u-if-ugXwVyO%ICkuR4W;D4sB(ZA%6Y(9Zvq zv#$19K{bvARgHs%4dWwjT66TBi7?sb@QQRlTS>~>U}FB1W>_nvbn$9cM&|hjFie5C zH6JQe5{Tzh(~O~}G??jNhArB(p%KC=Dzd53rnCzC7-eMyWv)qxRL7flc&?y4FrSH0 zdm6$bUs)|v;LWWv9v^l^Mr;{Zu~5t&^)-cxS(o2XNNx?eTA^t`W~ZnIGDQ9W z&=P%{WSpugDd77*K+81k5uoc7dNTKRXYQ@4%ko#ayPs3wjg*mp8C9g8fwCvWl3(@5 z+=fM*r$2zsV_s_AX=IEgB5l>DZmKu{lX2tec6`riZpX9>ORO+Hvh&YGd1W^JZUwz?Z?Xi7h!tU?5N85UIezqig$IG$g{gMGiM9kkKGnn}w4i$3JgAT+(_y~U` z6!@MkOxQuTtDmJ?=l$Y)2M_5>%q;D#^M3w4?@c!OZB2eSFF8`)-8%1~>wgrj%dG1c z)(sBGjkIy3rq`{rr&p(BwUM+-KuDINF&>EX*aUmnJ)tQ7h4Q6*Q0@A@hX^BI2IG6jS@U;u-N~L01)%r@JH59kth>Xk!aUe7u!tb?4nu6qi&k?5M2*Ry+z=)o%n?Clshp(F582M9 zlBV04%!uqrGDoL7N&6kNYGJ5bK(@0<5>wy$O|x*}Ea*ohW(xb`l!*TNi88~U&T;Z) ziN%(^N$!ZJkYHm&H%V2eZre9K5TdK_OqcX%pG7E^>+J59a?fm(;#ijJ#_)@Pa;o*4 z1rZE1*PoY1+rgfHGo3^s`L-XNk$-I|`O7!&*jJwMzF7XO`?%N9bZ^mbXchX#y}uGi zjIe)`bT_Ba5Ep64NW90g;{%q}@{;7mpuA5`P43m;_gj{qIV3kQ7APP%%ZFwojN=E| z%j^5>rhz8DyP+gnCq2FMrYfF#8~MW#av>DJOksY@6(JUQt#xaZ0|(c~z7QWx~-ur3B$vG=G~9eHEKz z9gby1T6d*o0V*msrQZ%j%ipnDx>SG4n8On;KTFY>!{?~@iIo4rYWWCXg&-GIldoZ-v7%)j$c`Jd5*xSyPQ1q_^?nU#82+cCD3tlcwA%KkaOEF$Dp{8h zDP?Fj4YlX5GoN5YTp~dhah^eD#isaP%;N3CG1!8na91kb7hnkEFIY~}6G3X#w}}O# zO3TaH0r7{UUR=%!xQk(VY2JDm72mduQXzX- zxcrYErdO6mB#Of@96zMvC^#O=g~7tXOm*rW3EjsiL^a&OBRV3H^8MKec%WT7A)3gb zu-nQ|nT~q>i`E@#Tz-bEW5YkqsAId%P{NXz!?#~`Nm`H>s({DUjJXuuv!)1s>S6L`Cv7a8+n)?s-eMSp0h z==!gYD3&iv>rWb`++$6#!FLrK;Ds!f6IYKqUd-HJ?|>S(8m;FX6t&e%6gzu?N%8_ z>^*IR$nwl{n^8l8U$BSwI`O|$B*_J;_%M>Jgitr~u&6+q_6xyaPSzHS&O_A#!D~ZC zx)`43J|It*vJraf0>t<2q$8;#(LXIOYiCf-C#VKZ z$>c??R+-RKI;GE?g&~!Yv{u;*WUke<0Z{XM`E+vFntzVuU4Q! zl@aLMl!uz3kGekNebK=e3slLH7O02UyU>T!qAM$V0${;jN<&LQMW$NYs(ns075s_< zqgFpli#EfmMNd+Lo~8C_J}jY9G#$0S=f5aw7zeKedcea1gwZng7_JnzO2+g53!+}q z)=K*qiB6|a+CX+1T!S*B_Hk(tiRLrvxQYn9q8OnxfSS8w$w~ZzFUqFU+P(ZfMcH$- zG!mZSzqDq*6njv0DOL@(=aR1lrPi7v8C_oekq?(K)NpA9CcsFd=`XXqzmU#AT!VY0qAT^L$>n4%E>%bsD*uV(Fz+%4AMb~m&inXun1J?- zgxKnl)MVsm5@u@`a4dOgIF|U49uYoYpg(u|i%*Sj?^_LM%ECkPyTa4n2c~rAazh*v^M1G>vZ-MAK=lw#9Vj`e_ zlcLbnl|=5Rq)h+SjyT_O^JM;>?T>>-!G-)`fz{6CU%ZsXqC(ZfX}azb9SvjQ(T5C z;99}@X(1~ZOWquKUR_zw6Bt$!F`$eT) za|BWw{x)ZP(gCYu5dHS2MZ4p~4;8IwsZP!c*=vREuclT)+M%@J;uzs|&p#zv&dJy( zqUH2G7#rh~45~@Qxu7;sz~A740>(8+u-c0V1B9kn-b^fD!9zZ3pS8-ifHj6=0ptq; zQgYfU?1#E!9l3_Q77EW|##NzssyynSt0=MNO}V_g{@ag5qB={#HMe6F8eT$m+b}%FHSJ82R!t zAn{cW`0nAap$HN&VJXBi;Cn3x{X2_1Pg)dl2_}$)I?(bX~>Ua?*_z7z=2QICS-Se!n9W>$dsC|VkP>I>I)S99NVGnvbw#e9gcTY)5Myhip z_g=3`VH~90#*Pq8&fO1jw|2u%BG4A}4-L zFk76MbV5268`Q%I>1NRc;(qdbRSD-Ms@-YpSZae14$=5blkm3KW2Ro1JZ*~884iWz zC2CNN`3cdB+wSXOce}*B8o}C} zWO)cT1?1_thGRuRAFXU(@qFJ&swH)|9()Oy%CCvinNdeJ4P69j-|8 zbEQo2Wbu=0EuM@{B1QvJ)}yngR8xkl&RDb*`~OaKU#O8Klt)g7EGmwRGX0_*{oYxdnJwgi&TIvarSG@ev?Oxv9jh%oPJFf0#(x3PhMG}@(vZ0 zroEwQa7UV^WzH2|v7~VzTk?R|$*q>9Or~(<<`qR5%=G6)8MpFnw6n>DJ_d_$<@efW z>ZWR8v>FdnipJW0E(0Nt8LfliP3<;WRBimPvMam8%mPufa7j*9qpf-cRcS*`0!_5B z3llx0I-QY;Ao|^auWEj*ZhI{GJ(=L@YjVg=&V0wYn{$aPFLnmG6Hojm3UT+(B6pfZ(btt6T z!D!vHPF=U~3OK7u;LhZf?_n?dK6v_WG1nyqV@b}v|Er_~-X7+QRZ?2g#rt(}ex1S-%bwYZ8G)~+3 z7?YoNg}1@{E|RRzC37WLDX&XMyw>NExtP3DRZiuz)~ain0m6t(QvVKdkSVRMLnXes zy0YC$iir%9bCl-C2bkVnf*8)-ByR~YG+c8%CmCpjJq_qdoWXXu($zv_bbeF)Vbe4A z3udU8{h2%@$>ai_3wO*cHRF_@M}|qtU|*xZn&<9-rqwXZ#d)Hn(L4ubGb*Vu(=@oc z$Yjb@W}ZvtqQa2@mnpx94#z6fH=GX-9Or&T)0W&^d3Q5P_%IdF`M!fo4eQcbB{Pb} z4}lM#aMt0Qsxp6l6|?ATAi6VH&EADB!Ej zL9#fF=Bg3MXs%WP8GV%+E7f{3e9tNsBfoqAfd~V(3dodzcyeZTFJ5Nc6~wUPL>8FV zj3?x5SxE;r7S(?U7h&wqn7q9cE_wzN8vZE`#e4*R1U)XnU5@)G5-}iCu^kacA9|lA zh0C3;4`KjNH*Ix-e!Oq2y`CXt((aO~9wJw@`-Wb&ebD~ZAdfkfvr`wrRV{_98opfO zhv@Hc{PS4jd&VUqMU@e8-cI#}u_D;+#vKFJn(??upOv<;^r)|@r%}(9XFR2eqKd7- zbClkXC-*-4*c5J4c4dZb*a|;6tCa)!t(eV-V$$xEcRH0BYt<5(oWtEt` zpZ%yvakCGD=7@(U;T`<&9iddkE7f(E6wP3qF5tiu>2nKEpKm0ZX|cFh21GmV$2S6J zW_xg>Y_hWojfX@y8Hj>BY%^dqOu=)(_JMYcYuk(#Sa2Rm)*j>dpNS+E7SZWQ<#Q`> zqkFOMJn;~GOoq$eaTv6R&+0+pyW>UUi@w45qJKH(i@rZ{Y)>?KDIT|vOQCl1%5ivm zo+<@bqzI>5L<{W7_Lbv>jMeo1m~yE=r^60RXyW*O);{&fKYeI8{~(oxkKL%l`8BC) zzkbe`zG5G{ukXvI{Z|%osO4m;l6s^P?SQ&C=5>G?=!30woT?Jhd-p~oJ?^*Hl?sXV z{LIyvHrGB7?RTFHrP6;0FgmzhvR!{3lNT0I5M*3vSRKUoOgZr3-dOBWGofSQ zWDOpoJ7jf*D}Qg@S`1%Zk?Nhn&+x9uJUB!@@+_!F!JpKtr&H>i-aStEsuLB-TW%RW z{Br)gD-u`r_dfa3db!oiA;}5sXYZ;+5HT)`2yb92-d&0G<~@D-TQ3iSzZ1s|HmWV1Y~cFX7xaGBte7+Z#^qn0+FAZlgRp{!SS<-^UoCzO%i=wMFI)X+oB34pbEs zwF#%%F?+%ph%2qLu{DcFH1u=y@fklfKDysjKr;16j_x?R-N4DVGrxKaJsM?u;i!_o zx-KJgmlHrSe|Ro z_usoer}m1E&AV|uPH=7L;d|mcFbv;<0YUf>vOhC=>kfnLQ{SK7wqAbX2SJ88Ty|76 zybr!l>Xvx}`e+FLI_O?$6fS|0fux$38nUgrnG@97_?h7l+CvQ+YY=a;*&_3|^) z`*4j@4QR+>lWv`TrnjBrCTkAHhy|M)4hE1q-Ajtwgl`qCiS3_XG&>pCqayMpJ+`|c z&%As^M)M6z`44bsth_fv*=1h~_@+QR#{>C&HV{s(K!49GlTVpHjRmG&#&TG95jHA< z9>pY-k3?-fQ_n=o0bpVLYed4GD-y0FQ7fy&KX{s)3MvyvWC2cdZDJu2bHjWda>EZxa+zy$XG7H# z)C5!YKmoxr9t$<_eb+Y*U&?Py%UQ zfMy(~JX$9|c!;Hnwb*B!c&8uc@>H=XO7Vm|Xv&UEO9DRx@$V>;m|Rok01FP*jEo5B zj>znDb#1G(AnGgPJBq9mjrVX1+=fL9dnwQ-L9B)j-VzogYx2lfN|w4ai_txn&xHCP zaudEuKHT9T`|fN0cFq*358OVxa+6$tur1=gCeER+x!cOOM3XhaSY3Msyt8%jR;O+o z_qaGs?Zp%j^*^I>oEw4F+4#L^9e3c4lam_$_Ne~}iWH>^(wJtF-qg%W7Jodw#~)3c z#=(1H?@GwtB0?~RitXu-N}HtPi>j=9I$b=`^CY3nGCFEHd3O#{VOGzmyEBUrQQbM5 z?i`oy^&`!=&zA3MdV7$Wzw)?bQvrBhFAsfzmfb5Sp=L_nCOvTC?F53#a6VJpn7G%p zK`b}azAz(Jnzv4ur6_ex%Db_w$`&`=HaJ}$$CmjUb$i2Bq#rT4Vz)}nui4WkS2TY;6TJ*T0aJBfcWA(eIUXva60He1|?zeN9uW&v;vh7`mu6WrfiF~26Ne_ z3XGYxm_{+8)b@%_^`;-t0;5xv5CK99a%w*~IVB1p_g)|zpHnVF3=w{3rXse9zSMM+(2Ft}&eu;RJHG&|fr14RbAgu^{-ZoGNWRyEgfa=uWVJpz5 z`S15VpM%a}QW)RbnaoM!3m*kCn~AQaNX71GCpvAR@SO$ngI_`ndVo@PAvOnV&9TTS z$Y@on;11lBZ)CVB-^k!prZF;{tkV^N-p)-~%nXqPlNHZSYz%{F#V6hrsob^VM?w#Z zvKOinC0o|@RJZB#n1CfB$YivZ(t`O1+&|;l%es*;ApLGrkPHGcr@q*4o%`B1i9lO_ z)u_SH^!t=#-l7DSFSZD-S#UMSl00P-K|`b{e#F{ll^p97jFW~{f%~b39GC!Fa)9VR zZxF&Dnl}?bONlW^_DzGbKrz76M2Wg#Iqu9!=(Xz+FD5vHJ(;S@F1IglYplvfiIJOt z+20xA3M@v=p}D+q5)X#j_$4+98^>~iIN|xD&=R0(jfWu4CyRIzHlS3Gfns-&VJxHO z2C%SybS${H6@#)Ewvo9N+uM9W>N@xu>O1xoQTJi9-e=}2tc09-{-ICmcrbL8)SNv3 zOtoEASN_q8{}Y`JyFZiS*b_t1N-l!waI9HSr7kII8rL;E>7@4*I+dHhIoC7L#pd%V0NkOLEJ{DOqBlpD4LY$gTK;#uJ`Jv(ZZv#u7Rz4U^5W zN_-6zBls8yoD0cdiYAp}3B!%h;TI^>kdIT?!J7)kNXx#%o%Y)B?dtP&sA2dU{Vog2&fruQYRy~3Nm ze!5J1(U%)LnmBfu)zSbo2ET@Y?;nB8YWWwS^Pooo#>D5lQ@@pyC;x~cF5o)|WGrtN z7G^j8mK-E3r}?%@!qT-hmL7E}@kYGf<&d9R+iN~mu^KW4iL~p2j1p! zxLM0}7m(fU2%Cb$1$TDZb!$ju5E;NU|F>|Ofl#9Hxui0#T@rHYIKbq@i^MWNcTTc6 zs(Bg$`Vpr2{8<*%%~Q`g$yJkqjX2L^_Z{0(chp zA{lW*0^%MCh>s)z@hk~&N0NZ}5D9P%3An?M05hkg+|fw@u@<;HNZRdp66Y!%kapzJ z0UqTJ6X*bOUWVwvjYD+cq#P!c4hSYb0xGYO1D-pf1hHh`>puQ@q(G4}A2Xj!UH4Bq zdtL2w9u?Tg1R{c4aYR0h`k!Pb>E}`RRlPJNMz92CY6XkB_lGR+(N^}gd}>zqav-y^ z*$lmveF}qSSoMp6Og^H_`F^1LZqs#dvz`qFxB|#f06BDLD8M-6VN>4h z9F*H@r+a(t_WH9R!h*-_Hp`>Tt@>kQZXxpuCN9lS%v-YJM* zB?KO>AHobxM2zy7kW#s_RpYEO*s`x~TRi$=ac^mpBBtN+5I@Vvxc$8|y0=M2+#0ab z5(VyA+3VPazWV^F*vSw|vTUPMaIY4Pa0HEK!sG-L@iR9VJ|{O4=jBG?lH6PIjrpG9 z|BBq(B#*-~rS2MvTlA>D6-tUnV8f|<%a%xB&*JJ&AIBW6kGhgLCFedfct

    %8C{`V0 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

    6XkedyV;A1&&`%;At_n~ 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Î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%0D6^Nl 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 m{2AOdnS{6MRiytBvs5*=vMj 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 z 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∓~3d0z<9su-xlLj7)JK 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�zEeacI)uvXT8%bZQIwcAlYSppFWgcJV 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 K`gQ;NU;iIvAF+)9 diff --git a/vendor/miniaudio/node_graph.odin b/vendor/miniaudio/node_graph.odin index 610ada7a8..496d566f4 100644 --- a/vendor/miniaudio/node_graph.odin +++ b/vendor/miniaudio/node_graph.odin @@ -19,6 +19,13 @@ MAX_NODE_LOCAL_BUS_COUNT :: 2 /* Use this when the bus count is determined by the node instance rather than the vtable. */ NODE_BUS_COUNT_UNKNOWN :: 255 +/* For some internal memory management of ma_node_graph. */ +stack :: struct { + offset: uint, + sizeInBytes: uint, + _data: [1]byte, +} + node :: struct {} /* Node flags. */ @@ -53,7 +60,7 @@ node_vtable :: struct { onProcess: proc "c" (pNode: ^node, ppFramesIn: ^[^]f32, pFrameCountIn: ^u32, ppFramesOut: ^[^]f32, pFrameCountOut: ^u32), /* - A callback for retrieving the number of a input frames that are required to output the + A callback for retrieving the number of input frames that are required to output the specified number of output frames. You would only want to implement this when the node performs resampling. This is optional, even for nodes that perform resampling, but it does offer a small reduction in latency as it allows miniaudio to calculate the exact number of input frames @@ -134,8 +141,12 @@ node_input_bus :: struct { node_base :: struct { /* These variables are set once at startup. */ - pNodeGraph: ^node_graph, /* The graph this node belongs to. */ + pNodeGraph: ^node_graph, /* The graph this node belongs to. */ vtable: ^node_vtable, + inputBusCount: u32, + outputBusCount: u32, + pInputBuses: [^]node_input_bus `fmt:"v,inputBusCount"`, + pOutputBuses: [^]node_output_bus `fmt:"v,outputBusCount"`, pCachedData: [^]f32, /* Allocated on the heap. Fixed size. Needs to be stored on the heap because reading from output buses is done in separate function calls. */ cachedDataCapInFramesPerBus: u16, /* The capacity of the input data cache in frames, per bus. */ @@ -148,10 +159,6 @@ node_base :: struct { state: node_state, /*atomic*/ /* When set to stopped, nothing will be read, regardless of the times in stateTimes. */ stateTimes: [2]u64, /*atomic*/ /* Indexed by ma_node_state. Specifies the time based on the global clock that a node should be considered to be in the relevant state. */ localTime: u64, /*atomic*/ /* The node's local clock. This is just a running sum of the number of output frames that have been processed. Can be modified by any thread with `ma_node_set_time()`. */ - inputBusCount: u32, - outputBusCount: u32, - pInputBuses: [^]node_input_bus, - pOutputBuses: [^]node_output_bus, /* Memory management. */ _inputBuses: [MAX_NODE_LOCAL_BUS_COUNT]node_input_bus, @@ -189,18 +196,25 @@ foreign lib { } node_graph_config :: struct { - channels: u32, - nodeCacheCapInFrames: u16, + channels: u32, + processingSizeInFrames: u32, /* This is the preferred processing size for node processing callbacks unless overridden by a node itself. Can be 0 in which case it will be based on the frame count passed into ma_node_graph_read_pcm_frames(), but will not be well defined. */ + preMixStackSizeInBytes: uint, /* Defaults to 512KB per channel. Reducing this will save memory, but the depth of your node graph will be more restricted. */ } node_graph :: struct { /* Immutable. */ base: node_base, /* The node graph itself is a node so it can be connected as an input to different node graph. This has zero inputs and calls ma_node_graph_read_pcm_frames() to generate it's output. */ endpoint: node_base, /* Special node that all nodes eventually connect to. Data is read from this node in ma_node_graph_read_pcm_frames(). */ - nodeCacheCapInFrames: u16, + + pProcessingCache: [^]f32, /* This will be allocated when processingSizeInFrames is non-zero. This is needed because ma_node_graph_read_pcm_frames() can be called with a variable number of frames, and we may need to do some buffering in situations where the caller requests a frame count that's not a multiple of processingSizeInFrames. */ + processingCacheFramesRemaining: u32, + processingSizeInFrames: u32, /* Read and written by multiple threads. */ isReading: b32, /*atomic*/ + + /* Modified only by the audio thread. */ + pPreMixStack: ^stack, } @(default_calling_convention="c", link_prefix="ma_") diff --git a/vendor/miniaudio/resource_manager.odin b/vendor/miniaudio/resource_manager.odin index 495a02c5d..4ef5778a9 100644 --- a/vendor/miniaudio/resource_manager.odin +++ b/vendor/miniaudio/resource_manager.odin @@ -16,6 +16,7 @@ resource_manager_data_source_flag :: enum c.int { ASYNC = 2, /* When set, the resource manager will load the data source asynchronously. */ WAIT_INIT = 3, /* When set, waits for initialization of the underlying data source before returning from ma_resource_manager_data_source_init(). */ UNKNOWN_LENGTH = 4, /* Gives the resource manager a hint that the length of the data source is unknown and calling `ma_data_source_get_length_in_pcm_frames()` should be avoided. */ + LOOPING = 5, /* When set, configures the data source to loop by default. */ } resource_manager_data_source_flags :: bit_set[resource_manager_data_source_flag; u32] @@ -79,8 +80,8 @@ resource_manager_data_source_config :: struct { rangeEndInPCMFrames: u64, loopPointBegInPCMFrames: u64, loopPointEndInPCMFrames: u64, - isLooping: b32, flags: u32, + isLooping: b32, /* Deprecated. Use the MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING flag in `flags` instead. */ } resource_manager_data_supply_type :: enum c.int { diff --git a/vendor/miniaudio/src/miniaudio.h b/vendor/miniaudio/src/miniaudio.h index 47332e11a..c74bebeb3 100644 --- a/vendor/miniaudio/src/miniaudio.h +++ b/vendor/miniaudio/src/miniaudio.h @@ -1,6 +1,6 @@ /* Audio playback and capture library. Choice of public domain or MIT-0. See license statements at the end of this file. -miniaudio - v0.11.21 - 2023-11-15 +miniaudio - v0.11.22 - 2025-02-24 David Reid - mackron@gmail.com @@ -12,15 +12,18 @@ GitHub: https://github.com/mackron/miniaudio /* 1. Introduction =============== -miniaudio is a single file library for audio playback and capture. To use it, do the following in -one .c file: +To use miniaudio, include "miniaudio.h": ```c - #define MINIAUDIO_IMPLEMENTATION #include "miniaudio.h" ``` -You can do `#include "miniaudio.h"` in other parts of the program just like any other header. +The implementation is contained in "miniaudio.c". Just compile this like any other source file. You +can include miniaudio.c if you want to compile your project as a single translation unit: + + ```c + #include "miniaudio.c" + ``` miniaudio includes both low level and high level APIs. The low level API is good for those who want to do all of their mixing themselves and only require a light weight interface to the underlying @@ -293,7 +296,7 @@ avoids the same sound being loaded multiple times. The node graph is used for mixing and effect processing. The idea is that you connect a number of nodes into the graph by connecting each node's outputs to another node's inputs. Each node can -implement it's own effect. By chaining nodes together, advanced mixing and effect processing can +implement its own effect. By chaining nodes together, advanced mixing and effect processing can be achieved. The engine encapsulates both the resource manager and the node graph to create a simple, easy to @@ -398,7 +401,7 @@ the be started and/or stopped at a specific time. This can be done with the foll ``` The start/stop time needs to be specified based on the absolute timer which is controlled by the -engine. The current global time time in PCM frames can be retrieved with +engine. The current global time in PCM frames can be retrieved with `ma_engine_get_time_in_pcm_frames()`. The engine's global time can be changed with `ma_engine_set_time_in_pcm_frames()` for synchronization purposes if required. Note that scheduling a start time still requires an explicit call to `ma_sound_start()` before anything will play: @@ -430,11 +433,11 @@ Sounds and sound groups are nodes in the engine's node graph and can be plugged API. This makes it possible to connect sounds and sound groups to effect nodes to produce complex effect chains. -A sound can have it's volume changed with `ma_sound_set_volume()`. If you prefer decibel volume +A sound can have its volume changed with `ma_sound_set_volume()`. If you prefer decibel volume control you can use `ma_volume_db_to_linear()` to convert from decibel representation to linear. Panning and pitching is supported with `ma_sound_set_pan()` and `ma_sound_set_pitch()`. If you know -a sound will never have it's pitch changed with `ma_sound_set_pitch()` or via the doppler effect, +a sound will never have its pitch changed with `ma_sound_set_pitch()` or via the doppler effect, you can specify the `MA_SOUND_FLAG_NO_PITCH` flag when initializing the sound for an optimization. By default, sounds and sound groups have spatialization enabled. If you don't ever want to @@ -483,21 +486,12 @@ link the relevant frameworks but should compile cleanly out of the box with Xcod through the command line requires linking to `-lpthread` and `-lm`. Due to the way miniaudio links to frameworks at runtime, your application may not pass Apple's -notarization process. To fix this there are two options. The first is to use the -`MA_NO_RUNTIME_LINKING` option, like so: - - ```c - #ifdef __APPLE__ - #define MA_NO_RUNTIME_LINKING - #endif - #define MINIAUDIO_IMPLEMENTATION - #include "miniaudio.h" - ``` - -This will require linking with `-framework CoreFoundation -framework CoreAudio -framework AudioToolbox`. -If you get errors about AudioToolbox, try with `-framework AudioUnit` instead. You may get this when -using older versions of iOS. Alternatively, if you would rather keep using runtime linking you can -add the following to your entitlements.xcent file: +notarization process. To fix this there are two options. The first is to compile with +`-DMA_NO_RUNTIME_LINKING` which in turn will require linking with +`-framework CoreFoundation -framework CoreAudio -framework AudioToolbox`. If you get errors about +AudioToolbox, try with `-framework AudioUnit` instead. You may get this when using older versions +of iOS. Alternatively, if you would rather keep using runtime linking you can add the following to +your entitlements.xcent file: ``` com.apple.security.cs.allow-dyld-environment-variables @@ -555,7 +549,7 @@ To run locally, you'll need to use emrun: 2.7. Build Options ------------------ -`#define` these options before including miniaudio.h. +`#define` these options before including miniaudio.c, or pass them as compiler flags: +----------------------------------+--------------------------------------------------------------------+ | Option | Description | @@ -586,6 +580,8 @@ To run locally, you'll need to use emrun: +----------------------------------+--------------------------------------------------------------------+ | MA_NO_WEBAUDIO | Disables the Web Audio backend. | +----------------------------------+--------------------------------------------------------------------+ + | MA_NO_CUSTOM | Disables support for custom backends. | + +----------------------------------+--------------------------------------------------------------------+ | MA_NO_NULL | Disables the null backend. | +----------------------------------+--------------------------------------------------------------------+ | MA_ENABLE_ONLY_SPECIFIC_BACKENDS | Disables all backends by default and requires `MA_ENABLE_*` to | @@ -630,6 +626,9 @@ To run locally, you'll need to use emrun: | MA_ENABLE_WEBAUDIO | Used in conjunction with MA_ENABLE_ONLY_SPECIFIC_BACKENDS to | | | enable the Web Audio backend. | +----------------------------------+--------------------------------------------------------------------+ + | MA_ENABLE_CUSTOM | Used in conjunction with MA_ENABLE_ONLY_SPECIFIC_BACKENDS to | + | | enable custom backends. | + +----------------------------------+--------------------------------------------------------------------+ | MA_ENABLE_NULL | Used in conjunction with MA_ENABLE_ONLY_SPECIFIC_BACKENDS to | | | enable the null backend. | +----------------------------------+--------------------------------------------------------------------+ @@ -693,11 +692,30 @@ To run locally, you'll need to use emrun: | | You may need to enable this if your target platform does not allow | | | runtime linking via `dlopen()`. | +----------------------------------+--------------------------------------------------------------------+ + | MA_USE_STDINT | (Pass this in as a compiler flag. Do not `#define` this before | + | | miniaudio.c) Forces the use of stdint.h for sized types. | + +----------------------------------+--------------------------------------------------------------------+ | MA_DEBUG_OUTPUT | Enable `printf()` output of debug logs (`MA_LOG_LEVEL_DEBUG`). | +----------------------------------+--------------------------------------------------------------------+ | MA_COINIT_VALUE | Windows only. The value to pass to internal calls to | | | `CoInitializeEx()`. Defaults to `COINIT_MULTITHREADED`. | +----------------------------------+--------------------------------------------------------------------+ + | MA_FORCE_UWP | Windows only. Affects only the WASAPI backend. Will force the | + | | WASAPI backend to use the UWP code path instead of the regular | + | | desktop path. This is normally auto-detected and should rarely be | + | | needed to be used explicitly, but can be useful for debugging. | + +----------------------------------+--------------------------------------------------------------------+ + | MA_ON_THREAD_ENTRY | Defines some code that will be executed as soon as an internal | + | | miniaudio-managed thread is created. This will be the first thing | + | | to be executed by the thread entry point. | + +----------------------------------+--------------------------------------------------------------------+ + | MA_ON_THREAD_EXIT | Defines some code that will be executed from the entry point of an | + | | internal miniaudio-managed thread upon exit. This will be the last | + | | thing to be executed before the thread's entry point exits. | + +----------------------------------+--------------------------------------------------------------------+ + | MA_THREAD_DEFAULT_STACK_SIZE | If set, specifies the default stack size used by miniaudio-managed | + | | threads. | + +----------------------------------+--------------------------------------------------------------------+ | MA_API | Controls how public APIs should be decorated. Default is `extern`. | +----------------------------------+--------------------------------------------------------------------+ @@ -1309,7 +1327,7 @@ only works for sounds that were initialized with `ma_sound_init_from_file()` and When you initialize a sound, if you specify a sound group the sound will be attached to that group automatically. If you set it to NULL, it will be automatically attached to the engine's endpoint. -If you would instead rather leave the sound unattached by default, you can can specify the +If you would instead rather leave the sound unattached by default, you can specify the `MA_SOUND_FLAG_NO_DEFAULT_ATTACHMENT` flag. This is useful if you want to set up a complex node graph. @@ -1686,6 +1704,7 @@ combination of the following flags: MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_DECODE MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_ASYNC MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_WAIT_INIT + MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING ``` When no flags are specified (set to 0), the sound will be fully loaded into memory, but not @@ -1706,6 +1725,14 @@ can instead stream audio data which you can do by specifying the second pages. When a new page needs to be decoded, a job will be posted to the job queue and then subsequently processed in a job thread. +The `MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING` flag can be used so that the sound will loop +when it reaches the end by default. It's recommended you use this flag when you want to have a +looping streaming sound. If you try loading a very short sound as a stream, you will get a glitch. +This is because the resource manager needs to pre-fill the initial buffer at initialization time, +and if you don't specify the `MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING` flag, the resource +manager will assume the sound is not looping and will stop filling the buffer when it reaches the +end, therefore resulting in a discontinuous buffer. + For in-memory sounds, reference counting is used to ensure the data is loaded only once. This means multiple calls to `ma_resource_manager_data_source_init()` with the same file path will result in the file data only being loaded once. Each call to `ma_resource_manager_data_source_init()` must be @@ -1720,7 +1747,7 @@ actual file paths. When `ma_resource_manager_data_source_init()` is called (with `MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_STREAM` flag), the resource manager will look for these explicitly registered data buffers and, if found, will use it as the backing data for the data source. Note that the resource manager does *not* make a copy of this data so it is up to the -caller to ensure the pointer stays valid for it's lifetime. Use +caller to ensure the pointer stays valid for its lifetime. Use `ma_resource_manager_unregister_data()` to unregister the self-managed data. You can also use `ma_resource_manager_register_file()` and `ma_resource_manager_unregister_file()` to register and unregister a file. It does not make sense to use the `MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_STREAM` @@ -2031,7 +2058,7 @@ In the above graph, it starts with two data sources whose outputs are attached t splitter node. It's at this point that the two data sources are mixed. After mixing, the splitter performs it's processing routine and produces two outputs which is simply a duplication of the input stream. One output is attached to a low pass filter, whereas the other output is attached to -a echo/delay. The outputs of the the low pass filter and the echo are attached to the endpoint, and +a echo/delay. The outputs of the low pass filter and the echo are attached to the endpoint, and since they're both connected to the same input bus, they'll be mixed. Each input bus must be configured to accept the same number of channels, but the number of channels @@ -2072,7 +2099,7 @@ data from the graph: ``` When you read audio data, miniaudio starts at the node graph's endpoint node which then pulls in -data from it's input attachments, which in turn recursively pull in data from their inputs, and so +data from its input attachments, which in turn recursively pull in data from their inputs, and so on. At the start of the graph there will be some kind of data source node which will have zero inputs and will instead read directly from a data source. The base nodes don't literally need to read from a `ma_data_source` object, but they will always have some kind of underlying object that @@ -2318,7 +2345,7 @@ You can start and stop a node with the following: By default the node is in a started state, but since it won't be connected to anything won't actually be invoked by the node graph until it's connected. When you stop a node, data will not be -read from any of it's input connections. You can use this property to stop a group of sounds +read from any of its input connections. You can use this property to stop a group of sounds atomically. You can configure the initial state of a node in it's config: @@ -2411,29 +2438,29 @@ audio thread is finished so that control is not handed back to the caller thereb chance to free the node's memory. When the audio thread is processing a node, it does so by reading from each of the output buses of -the node. In order for a node to process data for one of it's output buses, it needs to read from -each of it's input buses, and so on an so forth. It follows that once all output buses of a node +the node. In order for a node to process data for one of its output buses, it needs to read from +each of its input buses, and so on an so forth. It follows that once all output buses of a node are detached, the node as a whole will be disconnected and no further processing will occur unless it's output buses are reattached, which won't be happening when the node is being uninitialized. By having `ma_node_detach_output_bus()` wait until the audio thread is finished with it, we can simplify a few things, at the expense of making `ma_node_detach_output_bus()` a bit slower. By doing this, the implementation of `ma_node_uninit()` becomes trivial - just detach all output -nodes, followed by each of the attachments to each of it's input nodes, and then do any final clean +nodes, followed by each of the attachments to each of its input nodes, and then do any final clean up. With the above design, the worst-case scenario is `ma_node_detach_output_bus()` taking as long as it takes to process the output bus being detached. This will happen if it's called at just the wrong moment where the audio thread has just iterated it and has just started processing. The caller of `ma_node_detach_output_bus()` will stall until the audio thread is finished, which -includes the cost of recursively processing it's inputs. This is the biggest compromise made with -the approach taken by miniaudio for it's lock-free processing system. The cost of detaching nodes +includes the cost of recursively processing its inputs. This is the biggest compromise made with +the approach taken by miniaudio for its lock-free processing system. The cost of detaching nodes earlier in the pipeline (data sources, for example) will be cheaper than the cost of detaching higher level nodes, such as some kind of final post-processing endpoint. If you need to do mass detachments, detach starting from the lowest level nodes and work your way towards the final endpoint node (but don't try detaching the node graph's endpoint). If the audio thread is not running, detachment will be fast and detachment in any order will be the same. The reason nodes need to wait for their input attachments to complete is due to the potential for desyncs between -data sources. If the node was to terminate processing mid way through processing it's inputs, +data sources. If the node was to terminate processing mid way through processing its inputs, there's a chance that some of the underlying data sources will have been read, but then others not. That will then result in a potential desynchronization when detaching and reattaching higher-level nodes. A possible solution to this is to have an option when detaching to terminate processing @@ -2804,7 +2831,7 @@ weights. Custom weights can be passed in as the last parameter of `ma_channel_converter_config_init()`. Predefined channel maps can be retrieved with `ma_channel_map_init_standard()`. This takes a -`ma_standard_channel_map` enum as it's first parameter, which can be one of the following: +`ma_standard_channel_map` enum as its first parameter, which can be one of the following: +-----------------------------------+-----------------------------------------------------------+ | Name | Description | @@ -2890,7 +2917,7 @@ like the following: ma_resample_algorithm_linear); ma_resampler resampler; - ma_result result = ma_resampler_init(&config, &resampler); + ma_result result = ma_resampler_init(&config, NULL, &resampler); if (result != MA_SUCCESS) { // An error occurred... } @@ -3132,7 +3159,7 @@ Biquad filtering is achieved with the `ma_biquad` API. Example: ```c ma_biquad_config config = ma_biquad_config_init(ma_format_f32, channels, b0, b1, b2, a0, a1, a2); - ma_result result = ma_biquad_init(&config, &biquad); + ma_result result = ma_biquad_init(&config, NULL, &biquad); if (result != MA_SUCCESS) { // Error. } @@ -3723,7 +3750,7 @@ extern "C" { #define MA_VERSION_MAJOR 0 #define MA_VERSION_MINOR 11 -#define MA_VERSION_REVISION 21 +#define MA_VERSION_REVISION 22 #define MA_VERSION_STRING MA_XSTRINGIFY(MA_VERSION_MAJOR) "." MA_XSTRINGIFY(MA_VERSION_MINOR) "." MA_XSTRINGIFY(MA_VERSION_REVISION) #if defined(_MSC_VER) && !defined(__clang__) @@ -3740,8 +3767,7 @@ extern "C" { #endif - -#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__)) || defined(_M_X64) || defined(__ia64) || defined(_M_IA64) || defined(__aarch64__) || defined(_M_ARM64) || defined(__powerpc64__) +#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__)) || defined(_M_X64) || defined(__ia64) || defined(_M_IA64) || defined(__aarch64__) || defined(_M_ARM64) || defined(__powerpc64__) || defined(__ppc64__) #define MA_SIZEOF_PTR 8 #else #define MA_SIZEOF_PTR 4 @@ -3805,7 +3831,7 @@ typedef void* ma_handle; typedef void* ma_ptr; /* -ma_proc is annoying because when compiling with GCC we get pendantic warnings about converting +ma_proc is annoying because when compiling with GCC we get pedantic warnings about converting between `void*` and `void (*)()`. We can't use `void (*)()` with MSVC however, because we'll get warning C4191 about "type cast between incompatible function types". To work around this I'm going to use a different data type depending on the compiler. @@ -3999,7 +4025,7 @@ Special wchar_t type to ensure any structures in the public sections that refere consistent size across all platforms. On Windows, wchar_t is 2 bytes, whereas everywhere else it's 4 bytes. Since Windows likes to use -wchar_t for it's IDs, we need a special explicitly sized wchar type that is always 2 bytes on all +wchar_t for its IDs, we need a special explicitly sized wchar type that is always 2 bytes on all platforms. */ #if !defined(MA_POSIX) && defined(MA_WIN32) @@ -4025,7 +4051,7 @@ MA_LOG_LEVEL_INFO callback. MA_LOG_LEVEL_WARNING - Warnings. You should enable this in you development builds and action them when encounted. These + Warnings. You should enable this in you development builds and action them when encountered. These logs usually indicate a potential problem or misconfiguration, but still allow you to keep running. This will never be called from within the data callback. @@ -5457,7 +5483,7 @@ input frames. MA_API ma_result ma_resampler_get_expected_output_frame_count(const ma_resampler* pResampler, ma_uint64 inputFrameCount, ma_uint64* pOutputFrameCount); /* -Resets the resampler's timer and clears it's internal cache. +Resets the resampler's timer and clears its internal cache. */ MA_API ma_result ma_resampler_reset(ma_resampler* pResampler); @@ -5678,7 +5704,7 @@ MA_API void ma_channel_map_init_standard(ma_standard_channel_map standardChannel /* Copies a channel map. -Both input and output channel map buffers must have a capacity of at at least `channels`. +Both input and output channel map buffers must have a capacity of at least `channels`. */ MA_API void ma_channel_map_copy(ma_channel* pOut, const ma_channel* pIn, ma_uint32 channels); @@ -5817,6 +5843,8 @@ MA_API void ma_data_source_uninit(ma_data_source* pDataSource); MA_API ma_result ma_data_source_read_pcm_frames(ma_data_source* pDataSource, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead); /* Must support pFramesOut = NULL in which case a forward seek should be performed. */ MA_API ma_result ma_data_source_seek_pcm_frames(ma_data_source* pDataSource, ma_uint64 frameCount, ma_uint64* pFramesSeeked); /* Can only seek forward. Equivalent to ma_data_source_read_pcm_frames(pDataSource, NULL, frameCount, &framesRead); */ MA_API ma_result ma_data_source_seek_to_pcm_frame(ma_data_source* pDataSource, ma_uint64 frameIndex); +MA_API ma_result ma_data_source_seek_seconds(ma_data_source* pDataSource, float secondCount, float* pSecondsSeeked); /* Can only seek forward. Abstraction to ma_data_source_seek_pcm_frames() */ +MA_API ma_result ma_data_source_seek_to_second(ma_data_source* pDataSource, float seekPointInSeconds); /* Abstraction to ma_data_source_seek_to_pcm_frame() */ MA_API ma_result ma_data_source_get_data_format(ma_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate, ma_channel* pChannelMap, size_t channelMapCap); MA_API ma_result ma_data_source_get_cursor_in_pcm_frames(ma_data_source* pDataSource, ma_uint64* pCursor); MA_API ma_result ma_data_source_get_length_in_pcm_frames(ma_data_source* pDataSource, ma_uint64* pLength); /* Returns MA_NOT_IMPLEMENTED if the length is unknown or cannot be determined. Decoders can return this. */ @@ -6182,6 +6210,12 @@ MA_API ma_result ma_event_wait(ma_event* pEvent); Signals the specified auto-reset event. */ MA_API ma_result ma_event_signal(ma_event* pEvent); + + +MA_API ma_result ma_semaphore_init(int initialValue, ma_semaphore* pSemaphore); +MA_API void ma_semaphore_uninit(ma_semaphore* pSemaphore); +MA_API ma_result ma_semaphore_wait(ma_semaphore* pSemaphore); +MA_API ma_result ma_semaphore_release(ma_semaphore* pSemaphore); #endif /* MA_NO_THREADING */ @@ -6273,7 +6307,7 @@ Job Queue /* Slot Allocator -------------- -The idea of the slot allocator is for it to be used in conjunction with a fixed sized buffer. You use the slot allocator to allocator an index that can be used +The idea of the slot allocator is for it to be used in conjunction with a fixed sized buffer. You use the slot allocator to allocate an index that can be used as the insertion point for an object. Slots are reference counted to help mitigate the ABA problem in the lock-free queue we use for tracking jobs. @@ -7006,6 +7040,8 @@ typedef union int nullbackend; /* The null backend uses an integer for device IDs. */ } ma_device_id; +MA_API ma_bool32 ma_device_id_equal(const ma_device_id* pA, const ma_device_id* pB); + typedef struct ma_context_config ma_context_config; typedef struct ma_device_config ma_device_config; @@ -7093,6 +7129,7 @@ struct ma_device_config { const char* pStreamNamePlayback; const char* pStreamNameCapture; + int channelMap; } pulse; struct { @@ -7112,6 +7149,7 @@ struct ma_device_config ma_aaudio_allowed_capture_policy allowedCapturePolicy; ma_bool32 noAutoStartAfterReroute; ma_bool32 enableCompatibilityWorkarounds; + ma_bool32 allowSetBufferCapacity; } aaudio; }; @@ -7184,7 +7222,7 @@ and on output returns detailed information about the device in `ma_device_info`. case when the device ID is NULL, in which case information about the default device needs to be retrieved. Once the context has been created and the device ID retrieved (if using anything other than the default device), the device can be created. -This is a little bit more complicated than initialization of the context due to it's more complicated configuration. When initializing a +This is a little bit more complicated than initialization of the context due to its more complicated configuration. When initializing a device, a duplex device may be requested. This means a separate data format needs to be specified for both playback and capture. On input, the data format is set to what the application wants. On output it's set to the native format which should match as closely as possible to the requested format. The conversion between the format requested by the application and the device's native format will be handled @@ -7205,10 +7243,10 @@ asynchronous reading and writing, `onDeviceStart()` and `onDeviceStop()` should The handling of data delivery between the application and the device is the most complicated part of the process. To make this a bit easier, some helper callbacks are available. If the backend uses a blocking read/write style of API, the `onDeviceRead()` and `onDeviceWrite()` callbacks can optionally be implemented. These are blocking and work just like reading and writing from a file. If the -backend uses a callback for data delivery, that callback must call `ma_device_handle_backend_data_callback()` from within it's callback. +backend uses a callback for data delivery, that callback must call `ma_device_handle_backend_data_callback()` from within its callback. This allows miniaudio to then process any necessary data conversion and then pass it to the miniaudio data callback. -If the backend requires absolute flexibility with it's data delivery, it can optionally implement the `onDeviceDataLoop()` callback +If the backend requires absolute flexibility with its data delivery, it can optionally implement the `onDeviceDataLoop()` callback which will allow it to implement the logic that will run on the audio thread. This is much more advanced and is completely optional. The audio thread should run data delivery logic in a loop while `ma_device_get_state() == ma_device_state_started` and no errors have been @@ -7248,6 +7286,10 @@ struct ma_context_config void* pUserData; ma_allocation_callbacks allocationCallbacks; struct + { + ma_handle hWnd; /* HWND. Optional window handle to pass into SetCooperativeLevel(). Will default to the foreground window, and if that fails, the desktop window. */ + } dsound; + struct { ma_bool32 useVerboseDeviceEnumeration; } alsa; @@ -7336,6 +7378,7 @@ struct ma_context #ifdef MA_SUPPORT_DSOUND struct { + ma_handle hWnd; /* Can be null. */ ma_handle hDSoundDLL; ma_proc DirectSoundCreate; ma_proc DirectSoundEnumerateA; @@ -7942,6 +7985,7 @@ struct ma_device { /*AAudioStream**/ ma_ptr pStreamPlayback; /*AAudioStream**/ ma_ptr pStreamCapture; + ma_mutex rerouteLock; ma_aaudio_usage usage; ma_aaudio_content_type contentType; ma_aaudio_input_preset inputPreset; @@ -8365,6 +8409,10 @@ Retrieves basic information about every active playback and/or capture device. This function will allocate memory internally for the device lists and return a pointer to them through the `ppPlaybackDeviceInfos` and `ppCaptureDeviceInfos` parameters. If you do not want to incur the overhead of these allocations consider using `ma_context_enumerate_devices()` which will instead use a callback. +Note that this only retrieves the ID and name/description of the device. The reason for only retrieving basic information is that it would otherwise require +opening the backend device in order to probe it for more detailed information which can be inefficient. Consider using `ma_context_get_device_info()` for this, +but don't call it from within the enumeration callback. + Parameters ---------- @@ -8406,7 +8454,7 @@ The returned pointers will become invalid upon the next call this this function, See Also -------- -ma_context_get_devices() +ma_context_enumerate_devices() */ MA_API ma_result ma_context_get_devices(ma_context* pContext, ma_device_info** ppPlaybackDeviceInfos, ma_uint32* pPlaybackDeviceCount, ma_device_info** ppCaptureDeviceInfos, ma_uint32* pCaptureDeviceCount); @@ -8545,7 +8593,7 @@ from a microphone. Whether or not you should send or receive data from the devic playback, capture, full-duplex or loopback. (Note that loopback mode is only supported on select backends.) Sending and receiving audio data to and from the device is done via a callback which is fired by miniaudio at periodic time intervals. -The frequency at which data is delivered to and from a device depends on the size of it's period. The size of the period can be defined in terms of PCM frames +The frequency at which data is delivered to and from a device depends on the size of its period. The size of the period can be defined in terms of PCM frames or milliseconds, whichever is more convenient. Generally speaking, the smaller the period, the lower the latency at the expense of higher CPU usage and increased risk of glitching due to the more frequent and granular data deliver intervals. The size of a period will depend on your requirements, but miniaudio's defaults should work fine for most scenarios. If you're building a game you should leave this fairly small, whereas if you're building a simple @@ -8619,7 +8667,7 @@ then be set directly on the structure. Below are the members of the `ma_device_c performanceProfile A hint to miniaudio as to the performance requirements of your program. Can be either `ma_performance_profile_low_latency` (default) or - `ma_performance_profile_conservative`. This mainly affects the size of default buffers and can usually be left at it's default value. + `ma_performance_profile_conservative`. This mainly affects the size of default buffers and can usually be left at its default value. noPreSilencedOutputBuffer When set to true, the contents of the output buffer passed into the data callback will be left undefined. When set to false (default), the contents of @@ -8659,7 +8707,7 @@ then be set directly on the structure. Below are the members of the `ma_device_c A pointer that will passed to callbacks in pBackendVTable. resampling.linear.lpfOrder - The linear resampler applies a low-pass filter as part of it's processing for anti-aliasing. This setting controls the order of the filter. The higher + The linear resampler applies a low-pass filter as part of its processing for anti-aliasing. This setting controls the order of the filter. The higher the value, the better the quality, in general. Setting this to 0 will disable low-pass filtering altogether. The maximum value is `MA_MAX_FILTER_ORDER`. The default value is `min(4, MA_MAX_FILTER_ORDER)`. @@ -8736,6 +8784,9 @@ then be set directly on the structure. Below are the members of the `ma_device_c pulse.pStreamNameCapture PulseAudio only. Sets the stream name for capture. + pulse.channelMap + PulseAudio only. Sets the channel map that is requested from PulseAudio. See MA_PA_CHANNEL_MAP_* constants. Defaults to MA_PA_CHANNEL_MAP_AIFF. + coreaudio.allowNominalSampleRateChange Core Audio only. Desktop only. When enabled, allows the sample rate of the device to be changed at the operating system level. This is disabled by default in order to prevent intrusive changes to the user's system. This is useful if you want to use a sample rate @@ -8909,7 +8960,7 @@ Unsafe. It is not safe to call this inside any callback. Remarks ------- -You only need to use this function if you want to configure the context differently to it's defaults. You should never use this function if you want to manage +You only need to use this function if you want to configure the context differently to its defaults. You should never use this function if you want to manage your own context. See the documentation for `ma_context_init()` for information on the different context configuration options. @@ -9674,7 +9725,7 @@ Utilities ************************************************************************************************************************************************************/ /* -Calculates a buffer size in milliseconds from the specified number of frames and sample rate. +Calculates a buffer size in milliseconds (rounded up) from the specified number of frames and sample rate. */ MA_API ma_uint32 ma_calculate_buffer_size_in_milliseconds_from_frames(ma_uint32 bufferSizeInFrames, ma_uint32 sampleRate); @@ -9931,7 +9982,7 @@ struct ma_decoder void* pInputCache; /* In input format. Can be null if it's not needed. */ ma_uint64 inputCacheCap; /* The capacity of the input cache. */ ma_uint64 inputCacheConsumed; /* The number of frames that have been consumed in the cache. Used for determining the next valid frame. */ - ma_uint64 inputCacheRemaining; /* The number of valid frames remaining in the cahce. */ + ma_uint64 inputCacheRemaining; /* The number of valid frames remaining in the cache. */ ma_allocation_callbacks allocationCallbacks; union { @@ -9972,7 +10023,7 @@ This is not thread safe without your own synchronization. MA_API ma_result ma_decoder_read_pcm_frames(ma_decoder* pDecoder, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead); /* -Seeks to a PCM frame based on it's absolute index. +Seeks to a PCM frame based on its absolute index. This is not thread safe without your own synchronization. */ @@ -10235,7 +10286,8 @@ typedef enum MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_DECODE = 0x00000002, /* Decode data before storing in memory. When set, decoding is done at the resource manager level rather than the mixing thread. Results in faster mixing, but higher memory usage. */ MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_ASYNC = 0x00000004, /* When set, the resource manager will load the data source asynchronously. */ MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_WAIT_INIT = 0x00000008, /* When set, waits for initialization of the underlying data source before returning from ma_resource_manager_data_source_init(). */ - MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_UNKNOWN_LENGTH = 0x00000010 /* Gives the resource manager a hint that the length of the data source is unknown and calling `ma_data_source_get_length_in_pcm_frames()` should be avoided. */ + MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_UNKNOWN_LENGTH = 0x00000010, /* Gives the resource manager a hint that the length of the data source is unknown and calling `ma_data_source_get_length_in_pcm_frames()` should be avoided. */ + MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING = 0x00000020 /* When set, configures the data source to loop by default. */ } ma_resource_manager_data_source_flags; @@ -10303,8 +10355,8 @@ typedef struct ma_uint64 rangeEndInPCMFrames; ma_uint64 loopPointBegInPCMFrames; ma_uint64 loopPointEndInPCMFrames; - ma_bool32 isLooping; ma_uint32 flags; + ma_bool32 isLooping; /* Deprecated. Use the MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING flag in `flags` instead. */ } ma_resource_manager_data_source_config; MA_API ma_resource_manager_data_source_config ma_resource_manager_data_source_config_init(void); @@ -10547,6 +10599,16 @@ Node Graph /* Use this when the bus count is determined by the node instance rather than the vtable. */ #define MA_NODE_BUS_COUNT_UNKNOWN 255 + +/* For some internal memory management of ma_node_graph. */ +typedef struct +{ + size_t offset; + size_t sizeInBytes; + unsigned char _data[1]; +} ma_stack; + + typedef struct ma_node_graph ma_node_graph; typedef void ma_node; @@ -10586,7 +10648,7 @@ typedef struct void (* onProcess)(ma_node* pNode, const float** ppFramesIn, ma_uint32* pFrameCountIn, float** ppFramesOut, ma_uint32* pFrameCountOut); /* - A callback for retrieving the number of a input frames that are required to output the + A callback for retrieving the number of input frames that are required to output the specified number of output frames. You would only want to implement this when the node performs resampling. This is optional, even for nodes that perform resampling, but it does offer a small reduction in latency as it allows miniaudio to calculate the exact number of input frames @@ -10671,10 +10733,14 @@ typedef struct ma_node_base ma_node_base; struct ma_node_base { /* These variables are set once at startup. */ - ma_node_graph* pNodeGraph; /* The graph this node belongs to. */ + ma_node_graph* pNodeGraph; /* The graph this node belongs to. */ const ma_node_vtable* vtable; - float* pCachedData; /* Allocated on the heap. Fixed size. Needs to be stored on the heap because reading from output buses is done in separate function calls. */ - ma_uint16 cachedDataCapInFramesPerBus; /* The capacity of the input data cache in frames, per bus. */ + ma_uint32 inputBusCount; + ma_uint32 outputBusCount; + ma_node_input_bus* pInputBuses; + ma_node_output_bus* pOutputBuses; + float* pCachedData; /* Allocated on the heap. Fixed size. Needs to be stored on the heap because reading from output buses is done in separate function calls. */ + ma_uint16 cachedDataCapInFramesPerBus; /* The capacity of the input data cache in frames, per bus. */ /* These variables are read and written only from the audio thread. */ ma_uint16 cachedFrameCountOut; @@ -10682,13 +10748,9 @@ struct ma_node_base ma_uint16 consumedFrameCountIn; /* These variables are read and written between different threads. */ - MA_ATOMIC(4, ma_node_state) state; /* When set to stopped, nothing will be read, regardless of the times in stateTimes. */ - MA_ATOMIC(8, ma_uint64) stateTimes[2]; /* Indexed by ma_node_state. Specifies the time based on the global clock that a node should be considered to be in the relevant state. */ - MA_ATOMIC(8, ma_uint64) localTime; /* The node's local clock. This is just a running sum of the number of output frames that have been processed. Can be modified by any thread with `ma_node_set_time()`. */ - ma_uint32 inputBusCount; - ma_uint32 outputBusCount; - ma_node_input_bus* pInputBuses; - ma_node_output_bus* pOutputBuses; + MA_ATOMIC(4, ma_node_state) state; /* When set to stopped, nothing will be read, regardless of the times in stateTimes. */ + MA_ATOMIC(8, ma_uint64) stateTimes[2]; /* Indexed by ma_node_state. Specifies the time based on the global clock that a node should be considered to be in the relevant state. */ + MA_ATOMIC(8, ma_uint64) localTime; /* The node's local clock. This is just a running sum of the number of output frames that have been processed. Can be modified by any thread with `ma_node_set_time()`. */ /* Memory management. */ ma_node_input_bus _inputBuses[MA_MAX_NODE_LOCAL_BUS_COUNT]; @@ -10724,7 +10786,8 @@ MA_API ma_result ma_node_set_time(ma_node* pNode, ma_uint64 localTime); typedef struct { ma_uint32 channels; - ma_uint16 nodeCacheCapInFrames; + ma_uint32 processingSizeInFrames; /* This is the preferred processing size for node processing callbacks unless overridden by a node itself. Can be 0 in which case it will be based on the frame count passed into ma_node_graph_read_pcm_frames(), but will not be well defined. */ + size_t preMixStackSizeInBytes; /* Defaults to 512KB per channel. Reducing this will save memory, but the depth of your node graph will be more restricted. */ } ma_node_graph_config; MA_API ma_node_graph_config ma_node_graph_config_init(ma_uint32 channels); @@ -10735,10 +10798,15 @@ struct ma_node_graph /* Immutable. */ ma_node_base base; /* The node graph itself is a node so it can be connected as an input to different node graph. This has zero inputs and calls ma_node_graph_read_pcm_frames() to generate it's output. */ ma_node_base endpoint; /* Special node that all nodes eventually connect to. Data is read from this node in ma_node_graph_read_pcm_frames(). */ - ma_uint16 nodeCacheCapInFrames; + float* pProcessingCache; /* This will be allocated when processingSizeInFrames is non-zero. This is needed because ma_node_graph_read_pcm_frames() can be called with a variable number of frames, and we may need to do some buffering in situations where the caller requests a frame count that's not a multiple of processingSizeInFrames. */ + ma_uint32 processingCacheFramesRemaining; + ma_uint32 processingSizeInFrames; /* Read and written by multiple threads. */ MA_ATOMIC(4, ma_bool32) isReading; + + /* Modified only by the audio thread. */ + ma_stack* pPreMixStack; }; MA_API ma_result ma_node_graph_init(const ma_node_graph_config* pConfig, const ma_allocation_callbacks* pAllocationCallbacks, ma_node_graph* pNodeGraph); @@ -11023,6 +11091,7 @@ typedef enum MA_SOUND_FLAG_ASYNC = 0x00000004, /* MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_ASYNC */ MA_SOUND_FLAG_WAIT_INIT = 0x00000008, /* MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_WAIT_INIT */ MA_SOUND_FLAG_UNKNOWN_LENGTH = 0x00000010, /* MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_UNKNOWN_LENGTH */ + MA_SOUND_FLAG_LOOPING = 0x00000020, /* MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING */ /* ma_sound specific flags. */ MA_SOUND_FLAG_NO_DEFAULT_ATTACHMENT = 0x00001000, /* Do not attach to the endpoint by default. Useful for when setting up nodes in a complex graph system. */ @@ -11062,7 +11131,7 @@ MA_API ma_engine_node_config ma_engine_node_config_init(ma_engine* pEngine, ma_e /* Base node object for both ma_sound and ma_sound_group. */ typedef struct { - ma_node_base baseNode; /* Must be the first member for compatiblity with the ma_node API. */ + ma_node_base baseNode; /* Must be the first member for compatibility with the ma_node API. */ ma_engine* pEngine; /* A pointer to the engine. Set based on the value from the config. */ ma_uint32 sampleRate; /* The sample rate of the input data. For sounds backed by a data source, this will be the data source's sample rate. Otherwise it'll be the engine's sample rate. */ ma_uint32 volumeSmoothTimeInPCMFrames; @@ -11122,13 +11191,13 @@ typedef struct ma_uint64 rangeEndInPCMFrames; ma_uint64 loopPointBegInPCMFrames; ma_uint64 loopPointEndInPCMFrames; - ma_bool32 isLooping; ma_sound_end_proc endCallback; /* Fired when the sound reaches the end. Will be fired from the audio thread. Do not restart, uninitialize or otherwise change the state of the sound from here. Instead fire an event or set a variable to indicate to a different thread to change the start of the sound. Will not be fired in response to a scheduled stop with ma_sound_set_stop_time_*(). */ void* pEndCallbackUserData; #ifndef MA_NO_RESOURCE_MANAGER ma_resource_manager_pipeline_notifications initNotifications; #endif ma_fence* pDoneFence; /* Deprecated. Use initNotifications instead. Released when the resource manager has finished decoding the entire sound. Not used with streams. */ + ma_bool32 isLooping; /* Deprecated. Use the MA_SOUND_FLAG_LOOPING flag in `flags` instead. */ } ma_sound_config; MA_API ma_sound_config ma_sound_config_init(void); /* Deprecated. Will be removed in version 0.12. Use ma_sound_config_2() instead. */ @@ -11192,6 +11261,7 @@ typedef struct ma_uint32 gainSmoothTimeInFrames; /* The number of frames to interpolate the gain of spatialized sounds across. If set to 0, will use gainSmoothTimeInMilliseconds. */ ma_uint32 gainSmoothTimeInMilliseconds; /* When set to 0, gainSmoothTimeInFrames will be used. If both are set to 0, a default value will be used. */ ma_uint32 defaultVolumeSmoothTimeInPCMFrames; /* Defaults to 0. Controls the default amount of smoothing to apply to volume changes to sounds. High values means more smoothing at the expense of high latency (will take longer to reach the new volume). */ + ma_uint32 preMixStackSizeInBytes; /* A stack is used for internal processing in the node graph. This allows you to configure the size of this stack. Smaller values will reduce the maximum depth of your node graph. You should rarely need to modify this. */ ma_allocation_callbacks allocationCallbacks; ma_bool32 noAutoStart; /* When set to true, requires an explicit call to ma_engine_start(). This is false by default, meaning the engine will be started automatically in ma_engine_init(). */ ma_bool32 noDevice; /* When set to true, don't create a default device. ma_engine_read_pcm_frames() can be called manually to read data. */ @@ -11206,12 +11276,12 @@ MA_API ma_engine_config ma_engine_config_init(void); struct ma_engine { - ma_node_graph nodeGraph; /* An engine is a node graph. It should be able to be plugged into any ma_node_graph API (with a cast) which means this must be the first member of this struct. */ + ma_node_graph nodeGraph; /* An engine is a node graph. It should be able to be plugged into any ma_node_graph API (with a cast) which means this must be the first member of this struct. */ #if !defined(MA_NO_RESOURCE_MANAGER) ma_resource_manager* pResourceManager; #endif #if !defined(MA_NO_DEVICE_IO) - ma_device* pDevice; /* Optionally set via the config, otherwise allocated by the engine in ma_engine_init(). */ + ma_device* pDevice; /* Optionally set via the config, otherwise allocated by the engine in ma_engine_init(). */ #endif ma_log* pLog; ma_uint32 sampleRate; @@ -11220,10 +11290,10 @@ struct ma_engine ma_allocation_callbacks allocationCallbacks; ma_bool8 ownsResourceManager; ma_bool8 ownsDevice; - ma_spinlock inlinedSoundLock; /* For synchronizing access so the inlined sound list. */ - ma_sound_inlined* pInlinedSoundHead; /* The first inlined sound. Inlined sounds are tracked in a linked list. */ - MA_ATOMIC(4, ma_uint32) inlinedSoundCount; /* The total number of allocated inlined sound objects. Used for debugging. */ - ma_uint32 gainSmoothTimeInFrames; /* The number of frames to interpolate the gain of spatialized sounds across. */ + ma_spinlock inlinedSoundLock; /* For synchronizing access to the inlined sound list. */ + ma_sound_inlined* pInlinedSoundHead; /* The first inlined sound. Inlined sounds are tracked in a linked list. */ + MA_ATOMIC(4, ma_uint32) inlinedSoundCount; /* The total number of allocated inlined sound objects. Used for debugging. */ + ma_uint32 gainSmoothTimeInFrames; /* The number of frames to interpolate the gain of spatialized sounds across. */ ma_uint32 defaultVolumeSmoothTimeInPCMFrames; ma_mono_expansion_mode monoExpansionMode; ma_engine_process_proc onProcess; @@ -11348,6 +11418,7 @@ MA_API void ma_sound_set_looping(ma_sound* pSound, ma_bool32 isLooping); MA_API ma_bool32 ma_sound_is_looping(const ma_sound* pSound); MA_API ma_bool32 ma_sound_at_end(const ma_sound* pSound); MA_API ma_result ma_sound_seek_to_pcm_frame(ma_sound* pSound, ma_uint64 frameIndex); /* Just a wrapper around ma_data_source_seek_to_pcm_frame(). */ +MA_API ma_result ma_sound_seek_to_second(ma_sound* pSound, float seekPointInSeconds); /* Abstraction to ma_sound_seek_to_pcm_frame() */ MA_API ma_result ma_sound_get_data_format(ma_sound* pSound, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate, ma_channel* pChannelMap, size_t channelMapCap); MA_API ma_result ma_sound_get_cursor_in_pcm_frames(ma_sound* pSound, ma_uint64* pCursor); MA_API ma_result ma_sound_get_length_in_pcm_frames(ma_sound* pSound, ma_uint64* pLength); @@ -13861,7 +13932,7 @@ static ma_uint32 ma_ffs_32(ma_uint32 x) /* Just a naive implementation just to get things working for now. Will optimize this later. */ for (i = 0; i < 32; i += 1) { - if ((x & (1 << i)) != 0) { + if ((x & (1U << i)) != 0) { return i; } } @@ -14024,7 +14095,7 @@ static MA_INLINE ma_int32 ma_dither_s32(ma_dither_mode ditherMode, ma_int32 dith Atomics **************************************************************************************************************************************************************/ -/* ma_atomic.h begin */ +/* c89atomic.h begin */ #ifndef ma_atomic_h #if defined(__cplusplus) extern "C" { @@ -14750,12 +14821,12 @@ typedef int ma_atomic_memory_order; typedef ma_uint8 ma_atomic_flag; #define ma_atomic_flag_test_and_set_explicit(ptr, order) (ma_bool32)ma_atomic_test_and_set_explicit_8(ptr, order) #define ma_atomic_flag_clear_explicit(ptr, order) ma_atomic_clear_explicit_8(ptr, order) - #define c89atoimc_flag_load_explicit(ptr, order) ma_atomic_load_explicit_8(ptr, order) + #define ma_atomic_flag_load_explicit(ptr, order) ma_atomic_load_explicit_8(ptr, order) #else typedef ma_uint32 ma_atomic_flag; #define ma_atomic_flag_test_and_set_explicit(ptr, order) (ma_bool32)ma_atomic_test_and_set_explicit_32(ptr, order) #define ma_atomic_flag_clear_explicit(ptr, order) ma_atomic_clear_explicit_32(ptr, order) - #define c89atoimc_flag_load_explicit(ptr, order) ma_atomic_load_explicit_32(ptr, order) + #define ma_atomic_flag_load_explicit(ptr, order) ma_atomic_load_explicit_32(ptr, order) #endif #elif defined(__clang__) || (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7))) #define MA_ATOMIC_HAS_NATIVE_COMPARE_EXCHANGE @@ -14836,15 +14907,24 @@ typedef int ma_atomic_memory_order; __atomic_compare_exchange_n(dst, &expected, desired, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); return expected; } + #if defined(__clang__) + #pragma clang diagnostic push + #if __clang_major__ >= 8 + #pragma clang diagnostic ignored "-Watomic-alignment" + #endif + #endif static MA_INLINE ma_uint64 ma_atomic_compare_and_swap_64(volatile ma_uint64* dst, ma_uint64 expected, ma_uint64 desired) { __atomic_compare_exchange_n(dst, &expected, desired, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); return expected; } + #if defined(__clang__) + #pragma clang diagnostic pop + #endif typedef ma_uint8 ma_atomic_flag; #define ma_atomic_flag_test_and_set_explicit(dst, order) (ma_bool32)__atomic_test_and_set(dst, order) #define ma_atomic_flag_clear_explicit(dst, order) __atomic_clear(dst, order) - #define c89atoimc_flag_load_explicit(ptr, order) ma_atomic_load_explicit_8(ptr, order) + #define ma_atomic_flag_load_explicit(ptr, order) ma_atomic_load_explicit_8(ptr, order) #else #define ma_atomic_memory_order_relaxed 1 #define ma_atomic_memory_order_consume 2 @@ -15358,7 +15438,7 @@ typedef int ma_atomic_memory_order; typedef ma_uint8 ma_atomic_flag; #define ma_atomic_flag_test_and_set_explicit(ptr, order) (ma_bool32)ma_atomic_test_and_set_explicit_8(ptr, order) #define ma_atomic_flag_clear_explicit(ptr, order) ma_atomic_clear_explicit_8(ptr, order) - #define c89atoimc_flag_load_explicit(ptr, order) ma_atomic_load_explicit_8(ptr, order) + #define ma_atomic_flag_load_explicit(ptr, order) ma_atomic_load_explicit_8(ptr, order) #endif #if !defined(MA_ATOMIC_HAS_NATIVE_COMPARE_EXCHANGE) #if defined(MA_ATOMIC_HAS_8) @@ -15883,7 +15963,7 @@ static MA_INLINE void ma_atomic_spinlock_lock(volatile ma_atomic_spinlock* pSpin if (ma_atomic_flag_test_and_set_explicit(pSpinlock, ma_atomic_memory_order_acquire) == 0) { break; } - while (c89atoimc_flag_load_explicit(pSpinlock, ma_atomic_memory_order_relaxed) == 1) { + while (ma_atomic_flag_load_explicit(pSpinlock, ma_atomic_memory_order_relaxed) == 1) { } } } @@ -15898,7 +15978,7 @@ static MA_INLINE void ma_atomic_spinlock_unlock(volatile ma_atomic_spinlock* pSp } #endif #endif -/* ma_atomic.h end */ +/* c89atomic.h end */ #define MA_ATOMIC_SAFE_TYPE_IMPL(c89TypeExtension, type) \ static MA_INLINE ma_##type ma_atomic_##type##_get(ma_atomic_##type* x) \ @@ -16096,7 +16176,7 @@ static ma_result ma_thread_create__posix(ma_thread* pThread, ma_thread_priority int result; pthread_attr_t* pAttr = NULL; -#if !defined(__EMSCRIPTEN__) +#if !defined(__EMSCRIPTEN__) && !defined(__3DS__) /* Try setting the thread priority. It's not critical if anything fails here. */ pthread_attr_t attr; if (pthread_attr_init(&attr) == 0) { @@ -16142,19 +16222,34 @@ static ma_result ma_thread_create__posix(ma_thread* pThread, ma_thread_priority if (priority == ma_thread_priority_idle) { sched.sched_priority = priorityMin; } else if (priority == ma_thread_priority_realtime) { - sched.sched_priority = priorityMax; - } else { - sched.sched_priority += ((int)priority + 5) * priorityStep; /* +5 because the lowest priority is -5. */ - if (sched.sched_priority < priorityMin) { - sched.sched_priority = priorityMin; + #if defined(MA_PTHREAD_REALTIME_THREAD_PRIORITY) + { + sched.sched_priority = MA_PTHREAD_REALTIME_THREAD_PRIORITY; } - if (sched.sched_priority > priorityMax) { + #else + { sched.sched_priority = priorityMax; } + #endif + } else { + sched.sched_priority += ((int)priority + 5) * priorityStep; /* +5 because the lowest priority is -5. */ } - /* I'm not treating a failure of setting the priority as a critical error so not checking the return value here. */ - pthread_attr_setschedparam(&attr, &sched); + if (sched.sched_priority < priorityMin) { + sched.sched_priority = priorityMin; + } + if (sched.sched_priority > priorityMax) { + sched.sched_priority = priorityMax; + } + + /* I'm not treating a failure of setting the priority as a critical error so not aborting on failure here. */ + if (pthread_attr_setschedparam(&attr, &sched) == 0) { + #if !defined(MA_ANDROID) || (defined(__ANDROID_API__) && __ANDROID_API__ >= 28) + { + pthread_attr_setinheritsched(&attr, PTHREAD_EXPLICIT_SCHED); + } + #endif + } } } } @@ -16187,7 +16282,7 @@ static void ma_thread_wait__posix(ma_thread* pThread) static ma_result ma_mutex_init__posix(ma_mutex* pMutex) { int result; - + if (pMutex == NULL) { return MA_INVALID_ARGS; } @@ -17406,7 +17501,7 @@ static ma_job_proc g_jobVTable[MA_JOB_TYPE_COUNT] = /* Device. */ #if !defined(MA_NO_DEVICE_IO) - ma_job_process__device__aaudio_reroute /*MA_JOB_TYPE_DEVICE_AAUDIO_REROUTE*/ + ma_job_process__device__aaudio_reroute /* MA_JOB_TYPE_DEVICE_AAUDIO_REROUTE */ #endif }; @@ -17751,7 +17846,7 @@ MA_API ma_result ma_job_queue_next(ma_job_queue* pQueue, ma_job* pJob) is stored. One thread can fall through to the freeing of this item while another is still using "head" for the retrieval of the "next" variable. - The slot allocator might need to make use of some reference counting to ensure it's only truely freed when + The slot allocator might need to make use of some reference counting to ensure it's only truly freed when there are no more references to the item. This must be fixed before removing these locks. */ @@ -17859,7 +17954,16 @@ MA_API void ma_dlclose(ma_log* pLog, ma_handle handle) #ifdef MA_WIN32 FreeLibrary((HMODULE)handle); #else - dlclose((void*)handle); + /* Hack for Android bug (see https://github.com/android/ndk/issues/360). Calling dlclose() pre-API 28 may segfault. */ + #if !defined(MA_ANDROID) || (defined(__ANDROID_API__) && __ANDROID_API__ >= 28) + { + dlclose((void*)handle); + } + #else + { + (void)handle; + } + #endif #endif (void)pLog; @@ -17880,12 +17984,12 @@ MA_API ma_proc ma_dlsym(ma_log* pLog, ma_handle handle, const char* symbol) #ifdef _WIN32 proc = (ma_proc)GetProcAddress((HMODULE)handle, symbol); #else -#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) +#if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8))) || defined(__clang__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wpedantic" #endif proc = (ma_proc)dlsym((void*)handle, symbol); -#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) +#if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8))) || defined(__clang__) #pragma GCC diagnostic pop #endif #endif @@ -17923,9 +18027,13 @@ DEVICE I/O #endif #endif +#ifdef MA_APPLE + #include +#endif + #ifndef MA_NO_DEVICE_IO -#if defined(MA_APPLE) && (__MAC_OS_X_VERSION_MIN_REQUIRED < 101200) +#if defined(MA_APPLE) && (MAC_OS_X_VERSION_MIN_REQUIRED < 101200) #include /* For mach_absolute_time() */ #endif @@ -17939,6 +18047,10 @@ DEVICE I/O #endif #endif +/* This must be set to at least 26. */ +#ifndef MA_AAUDIO_MIN_ANDROID_SDK_VERSION +#define MA_AAUDIO_MIN_ANDROID_SDK_VERSION 27 +#endif MA_API void ma_device_info_add_native_data_format(ma_device_info* pDeviceInfo, ma_format format, ma_uint32 channels, ma_uint32 sampleRate, ma_uint32 flags) @@ -18085,7 +18197,7 @@ MA_API ma_bool32 ma_is_backend_enabled(ma_backend backend) #if defined(MA_HAS_AAUDIO) #if defined(MA_ANDROID) { - return ma_android_sdk_version() >= 26; + return ma_android_sdk_version() >= MA_AAUDIO_MIN_ANDROID_SDK_VERSION; } #else return MA_FALSE; @@ -18402,7 +18514,6 @@ typedef LONG (WINAPI * MA_PFN_RegCloseKey)(HKEY hKey); typedef LONG (WINAPI * MA_PFN_RegQueryValueExA)(HKEY hKey, const char* lpValueName, DWORD* lpReserved, DWORD* lpType, BYTE* lpData, DWORD* lpcbData); #endif /* MA_WIN32_DESKTOP */ - MA_API size_t ma_strlen_WCHAR(const WCHAR* str) { size_t len = 0; @@ -18487,7 +18598,7 @@ Timing return (double)(counter.QuadPart - pTimer->counter) / g_ma_TimerFrequency.QuadPart; } -#elif defined(MA_APPLE) && (__MAC_OS_X_VERSION_MIN_REQUIRED < 101200) +#elif defined(MA_APPLE) && (MAC_OS_X_VERSION_MIN_REQUIRED < 101200) static ma_uint64 g_ma_TimerFrequency = 0; static void ma_timer_init(ma_timer* pTimer) { @@ -18670,11 +18781,16 @@ static void ma_device__on_notification_rerouted(ma_device* pDevice) #endif #if defined(MA_EMSCRIPTEN) -EMSCRIPTEN_KEEPALIVE -void ma_device__on_notification_unlocked(ma_device* pDevice) +#ifdef __cplusplus +extern "C" { +#endif +void EMSCRIPTEN_KEEPALIVE ma_device__on_notification_unlocked(ma_device* pDevice) { ma_device__on_notification(ma_device_notification_init(pDevice, ma_device_notification_type_unlocked)); } +#ifdef __cplusplus +} +#endif #endif @@ -18802,7 +18918,7 @@ static void ma_device__handle_data_callback(ma_device* pDevice, void* pFramesOut unsigned int prevDenormalState = ma_device_disable_denormals(pDevice); { /* Volume control of input makes things a bit awkward because the input buffer is read-only. We'll need to use a temp buffer and loop in this case. */ - if (pFramesIn != NULL && masterVolumeFactor < 1) { + if (pFramesIn != NULL && masterVolumeFactor != 1) { ma_uint8 tempFramesIn[MA_DATA_CONVERTER_STACK_BUFFER_SIZE]; ma_uint32 bpfCapture = ma_get_bytes_per_frame(pDevice->capture.format, pDevice->capture.channels); ma_uint32 bpfPlayback = ma_get_bytes_per_frame(pDevice->playback.format, pDevice->playback.channels); @@ -18825,7 +18941,7 @@ static void ma_device__handle_data_callback(ma_device* pDevice, void* pFramesOut /* Volume control and clipping for playback devices. */ if (pFramesOut != NULL) { - if (masterVolumeFactor < 1) { + if (masterVolumeFactor != 1) { if (pFramesIn == NULL) { /* <-- In full-duplex situations, the volume will have been applied to the input samples before the data callback. Applying it again post-callback will incorrectly compound it. */ ma_apply_volume_factor_pcm_frames(pFramesOut, frameCount, pDevice->playback.format, pDevice->playback.channels, masterVolumeFactor); } @@ -18837,6 +18953,11 @@ static void ma_device__handle_data_callback(ma_device* pDevice, void* pFramesOut } } ma_device_restore_denormals(pDevice, prevDenormalState); + } else { + /* No data callback. Just silence the output. */ + if (pFramesOut != NULL) { + ma_silence_pcm_frames(pFramesOut, frameCount, pDevice->playback.format, pDevice->playback.channels); + } } } @@ -18922,9 +19043,7 @@ static void ma_device__read_frames_from_client(ma_device* pDevice, ma_uint32 fra framesToReadThisIterationIn = requiredInputFrameCount; } - if (framesToReadThisIterationIn > 0) { - ma_device__handle_data_callback(pDevice, pIntermediaryBuffer, NULL, (ma_uint32)framesToReadThisIterationIn); - } + ma_device__handle_data_callback(pDevice, pIntermediaryBuffer, NULL, (ma_uint32)framesToReadThisIterationIn); /* At this point we have our decoded data in input format and now we need to convert to output format. Note that even if we didn't read any @@ -18965,7 +19084,7 @@ static void ma_device__send_frames_to_client(ma_device* pDevice, ma_uint32 frame ma_uint64 totalClientFramesProcessed = 0; const void* pRunningFramesInDeviceFormat = pFramesInDeviceFormat; - /* We just keep going until we've exhaused all of our input frames and cannot generate any more output frames. */ + /* We just keep going until we've exhausted all of our input frames and cannot generate any more output frames. */ for (;;) { ma_uint64 deviceFramesProcessedThisIteration; ma_uint64 clientFramesProcessedThisIteration; @@ -19248,7 +19367,7 @@ static ma_result ma_device_audio_thread__default_read_write(ma_device* pDevice) } /* - If we weren't able to generate any output frames it must mean we've exhaused all of our input. The only time this would not be the case is if capturedClientData was too small + If we weren't able to generate any output frames it must mean we've exhausted all of our input. The only time this would not be the case is if capturedClientData was too small which should never be the case when it's of the size MA_DATA_CONVERTER_STACK_BUFFER_SIZE. */ if (capturedClientFramesToProcessThisIteration == 0) { @@ -19451,7 +19570,7 @@ static ma_result ma_device_do_operation__null(ma_device* pDevice, ma_uint32 oper /* The first thing to do is wait for an operation slot to become available. We only have a single slot for this, but we could extend this later - to support queing of operations. + to support queuing of operations. */ result = ma_semaphore_wait(&pDevice->null_device.operationSemaphore); if (result != MA_SUCCESS) { @@ -21268,7 +21387,7 @@ static ma_result ma_context_get_device_info_from_IAudioClient__wasapi(ma_context } /* - Exlcusive Mode. We repeatedly call IsFormatSupported() here. This is not currently supported on + Exclusive Mode. We repeatedly call IsFormatSupported() here. This is not currently supported on UWP. Failure to retrieve the exclusive mode format is not considered an error, so from here on out, MA_SUCCESS is guaranteed to be returned. */ @@ -21473,8 +21592,23 @@ static ma_result ma_context_get_MMDevice__wasapi(ma_context* pContext, ma_device MA_ASSERT(pContext != NULL); MA_ASSERT(ppMMDevice != NULL); - hr = ma_CoCreateInstance(pContext, &MA_CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, &MA_IID_IMMDeviceEnumerator, (void**)&pDeviceEnumerator); - if (FAILED(hr)) { + /* + This weird COM init/uninit here is a hack to work around a crash when changing devices. What is happening is + WASAPI fires a callback from another thread when the device is changed. It's from that thread where this + function is getting called. What I'm suspecting is that the other thread is not initializing COM which in turn + results in CoCreateInstance() failing. + + The community has reported that this seems to fix the crash. There are future plans to move all WASAPI operation + over to a single thread to make everything safer, but in the meantime while we wait for that to come online I'm + happy enough to use this hack instead. + */ + ma_CoInitializeEx(pContext, NULL, MA_COINIT_VALUE); + { + hr = ma_CoCreateInstance(pContext, &MA_CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, &MA_IID_IMMDeviceEnumerator, (void**)&pDeviceEnumerator); + } + ma_CoUninitialize(pContext); + + if (FAILED(hr)) { /* <-- This is checking the call above to ma_CoCreateInstance(). */ ma_log_postf(ma_context_get_log(pContext), MA_LOG_LEVEL_ERROR, "[WASAPI] Failed to create IMMDeviceEnumerator.\n"); return ma_result_from_HRESULT(hr); } @@ -21506,7 +21640,7 @@ static ma_result ma_context_get_device_id_from_MMDevice__wasapi(ma_context* pCon size_t idlen = ma_strlen_WCHAR(pDeviceIDString); if (idlen+1 > ma_countof(pDeviceID->wasapi)) { ma_CoTaskMemFree(pContext, pDeviceIDString); - MA_ASSERT(MA_FALSE); /* NOTE: If this is triggered, please report it. It means the format of the ID must haved change and is too long to fit in our fixed sized buffer. */ + MA_ASSERT(MA_FALSE); /* NOTE: If this is triggered, please report it. It means the format of the ID must have changed and is too long to fit in our fixed sized buffer. */ return MA_ERROR; } @@ -21950,12 +22084,16 @@ static ma_result ma_device_uninit__wasapi(ma_device* pDevice) { MA_ASSERT(pDevice != NULL); -#if defined(MA_WIN32_DESKTOP) || defined(MA_WIN32_GDK) - if (pDevice->wasapi.pDeviceEnumerator) { - ((ma_IMMDeviceEnumerator*)pDevice->wasapi.pDeviceEnumerator)->lpVtbl->UnregisterEndpointNotificationCallback((ma_IMMDeviceEnumerator*)pDevice->wasapi.pDeviceEnumerator, &pDevice->wasapi.notificationClient); - ma_IMMDeviceEnumerator_Release((ma_IMMDeviceEnumerator*)pDevice->wasapi.pDeviceEnumerator); + #if defined(MA_WIN32_DESKTOP) || defined(MA_WIN32_GDK) + { + if (pDevice->wasapi.pDeviceEnumerator) { + ((ma_IMMDeviceEnumerator*)pDevice->wasapi.pDeviceEnumerator)->lpVtbl->UnregisterEndpointNotificationCallback((ma_IMMDeviceEnumerator*)pDevice->wasapi.pDeviceEnumerator, &pDevice->wasapi.notificationClient); + ma_IMMDeviceEnumerator_Release((ma_IMMDeviceEnumerator*)pDevice->wasapi.pDeviceEnumerator); + } + + ma_mutex_uninit(&pDevice->wasapi.rerouteLock); } -#endif + #endif if (pDevice->wasapi.pRenderClient) { if (pDevice->wasapi.pMappedBufferPlayback != NULL) { @@ -22256,7 +22394,7 @@ static ma_result ma_device_init_internal__wasapi(ma_context* pContext, ma_device MA_REFERENCE_TIME bufferDuration = periodDurationInMicroseconds * pData->periodsOut * 10; /* - If the periodicy is too small, Initialize() will fail with AUDCLNT_E_INVALID_DEVICE_PERIOD. In this case we should just keep increasing + If the periodicity is too small, Initialize() will fail with AUDCLNT_E_INVALID_DEVICE_PERIOD. In this case we should just keep increasing it and trying it again. */ hr = E_FAIL; @@ -22266,7 +22404,7 @@ static ma_result ma_device_init_internal__wasapi(ma_context* pContext, ma_device if (bufferDuration > 500*10000) { break; } else { - if (bufferDuration == 0) { /* <-- Just a sanity check to prevent an infinit loop. Should never happen, but it makes me feel better. */ + if (bufferDuration == 0) { /* <-- Just a sanity check to prevent an infinite loop. Should never happen, but it makes me feel better. */ break; } @@ -23005,6 +23143,14 @@ static ma_result ma_device_stop__wasapi_nolock(ma_device* pDevice) } if (pDevice->type == ma_device_type_capture || pDevice->type == ma_device_type_duplex || pDevice->type == ma_device_type_loopback) { + /* If we have a mapped buffer we need to release it. */ + if (pDevice->wasapi.pMappedBufferCapture != NULL) { + ma_IAudioCaptureClient_ReleaseBuffer((ma_IAudioCaptureClient*)pDevice->wasapi.pCaptureClient, pDevice->wasapi.mappedBufferCaptureCap); + pDevice->wasapi.pMappedBufferCapture = NULL; + pDevice->wasapi.mappedBufferCaptureCap = 0; + pDevice->wasapi.mappedBufferCaptureLen = 0; + } + hr = ma_IAudioClient_Stop((ma_IAudioClient*)pDevice->wasapi.pAudioClientCapture); if (FAILED(hr)) { ma_log_post(ma_device_get_log(pDevice), MA_LOG_LEVEL_ERROR, "[WASAPI] Failed to stop internal capture device."); @@ -23018,31 +23164,34 @@ static ma_result ma_device_stop__wasapi_nolock(ma_device* pDevice) return ma_result_from_HRESULT(hr); } - /* If we have a mapped buffer we need to release it. */ - if (pDevice->wasapi.pMappedBufferCapture != NULL) { - ma_IAudioCaptureClient_ReleaseBuffer((ma_IAudioCaptureClient*)pDevice->wasapi.pCaptureClient, pDevice->wasapi.mappedBufferCaptureCap); - pDevice->wasapi.pMappedBufferCapture = NULL; - pDevice->wasapi.mappedBufferCaptureCap = 0; - pDevice->wasapi.mappedBufferCaptureLen = 0; - } - ma_atomic_bool32_set(&pDevice->wasapi.isStartedCapture, MA_FALSE); } if (pDevice->type == ma_device_type_playback || pDevice->type == ma_device_type_duplex) { + if (pDevice->wasapi.pMappedBufferPlayback != NULL) { + ma_silence_pcm_frames( + ma_offset_pcm_frames_ptr(pDevice->wasapi.pMappedBufferPlayback, pDevice->wasapi.mappedBufferPlaybackLen, pDevice->playback.internalFormat, pDevice->playback.internalChannels), + pDevice->wasapi.mappedBufferPlaybackCap - pDevice->wasapi.mappedBufferPlaybackLen, + pDevice->playback.internalFormat, pDevice->playback.internalChannels + ); + ma_IAudioRenderClient_ReleaseBuffer((ma_IAudioRenderClient*)pDevice->wasapi.pRenderClient, pDevice->wasapi.mappedBufferPlaybackCap, 0); + pDevice->wasapi.pMappedBufferPlayback = NULL; + pDevice->wasapi.mappedBufferPlaybackCap = 0; + pDevice->wasapi.mappedBufferPlaybackLen = 0; + } + /* The buffer needs to be drained before stopping the device. Not doing this will result in the last few frames not getting output to the speakers. This is a problem for very short sounds because it'll result in a significant portion of it not getting played. */ if (ma_atomic_bool32_get(&pDevice->wasapi.isStartedPlayback)) { /* We need to make sure we put a timeout here or else we'll risk getting stuck in a deadlock in some cases. */ - DWORD waitTime = pDevice->wasapi.actualBufferSizeInFramesPlayback / pDevice->playback.internalSampleRate; + DWORD waitTime = (pDevice->wasapi.actualBufferSizeInFramesPlayback * 1000) / pDevice->playback.internalSampleRate; if (pDevice->playback.shareMode == ma_share_mode_exclusive) { WaitForSingleObject((HANDLE)pDevice->wasapi.hEventPlayback, waitTime); - } - else { - ma_uint32 prevFramesAvaialablePlayback = (ma_uint32)-1; + } else { + ma_uint32 prevFramesAvailablePlayback = (ma_uint32)-1; ma_uint32 framesAvailablePlayback; for (;;) { result = ma_device__get_available_frames__wasapi(pDevice, (ma_IAudioClient*)pDevice->wasapi.pAudioClientPlayback, &framesAvailablePlayback); @@ -23058,13 +23207,13 @@ static ma_result ma_device_stop__wasapi_nolock(ma_device* pDevice) Just a safety check to avoid an infinite loop. If this iteration results in a situation where the number of available frames has not changed, get out of the loop. I don't think this should ever happen, but I think it's nice to have just in case. */ - if (framesAvailablePlayback == prevFramesAvaialablePlayback) { + if (framesAvailablePlayback == prevFramesAvailablePlayback) { break; } - prevFramesAvaialablePlayback = framesAvailablePlayback; + prevFramesAvailablePlayback = framesAvailablePlayback; - WaitForSingleObject((HANDLE)pDevice->wasapi.hEventPlayback, waitTime * 1000); ResetEvent((HANDLE)pDevice->wasapi.hEventPlayback); /* Manual reset. */ + WaitForSingleObject((HANDLE)pDevice->wasapi.hEventPlayback, waitTime); } } } @@ -23076,19 +23225,20 @@ static ma_result ma_device_stop__wasapi_nolock(ma_device* pDevice) } /* The audio client needs to be reset otherwise restarting will fail. */ - hr = ma_IAudioClient_Reset((ma_IAudioClient*)pDevice->wasapi.pAudioClientPlayback); + { + ma_int32 retries = 5; + + while ((hr = ma_IAudioClient_Reset((ma_IAudioClient*)pDevice->wasapi.pAudioClientPlayback)) == MA_AUDCLNT_E_BUFFER_OPERATION_PENDING && retries > 0) { + ma_sleep(10); + retries -= 1; + } + } + if (FAILED(hr)) { ma_log_post(ma_device_get_log(pDevice), MA_LOG_LEVEL_ERROR, "[WASAPI] Failed to reset internal playback device."); return ma_result_from_HRESULT(hr); } - if (pDevice->wasapi.pMappedBufferPlayback != NULL) { - ma_IAudioRenderClient_ReleaseBuffer((ma_IAudioRenderClient*)pDevice->wasapi.pRenderClient, pDevice->wasapi.mappedBufferPlaybackCap, 0); - pDevice->wasapi.pMappedBufferPlayback = NULL; - pDevice->wasapi.mappedBufferPlaybackCap = 0; - pDevice->wasapi.mappedBufferPlaybackLen = 0; - } - ma_atomic_bool32_set(&pDevice->wasapi.isStartedPlayback, MA_FALSE); } @@ -23655,6 +23805,13 @@ DirectSound Backend #define MA_DSBPLAY_TERMINATEBY_DISTANCE 0x00000010 #define MA_DSBPLAY_TERMINATEBY_PRIORITY 0x00000020 +#define MA_DSBSTATUS_PLAYING 0x00000001 +#define MA_DSBSTATUS_BUFFERLOST 0x00000002 +#define MA_DSBSTATUS_LOOPING 0x00000004 +#define MA_DSBSTATUS_LOCHARDWARE 0x00000008 +#define MA_DSBSTATUS_LOCSOFTWARE 0x00000010 +#define MA_DSBSTATUS_TERMINATED 0x00000020 + #define MA_DSCBSTART_LOOPING 0x00000001 typedef struct @@ -24024,9 +24181,12 @@ static ma_result ma_context_create_IDirectSound__dsound(ma_context* pContext, ma } /* The cooperative level must be set before doing anything else. */ - hWnd = ((MA_PFN_GetForegroundWindow)pContext->win32.GetForegroundWindow)(); + hWnd = (HWND)pContext->dsound.hWnd; if (hWnd == 0) { - hWnd = ((MA_PFN_GetDesktopWindow)pContext->win32.GetDesktopWindow)(); + hWnd = ((MA_PFN_GetForegroundWindow)pContext->win32.GetForegroundWindow)(); + if (hWnd == 0) { + hWnd = ((MA_PFN_GetDesktopWindow)pContext->win32.GetDesktopWindow)(); + } } hr = ma_IDirectSound_SetCooperativeLevel(pDirectSound, hWnd, (shareMode == ma_share_mode_exclusive) ? MA_DSSCL_EXCLUSIVE : MA_DSSCL_PRIORITY); @@ -24530,8 +24690,8 @@ static ma_result ma_device_init__dsound(ma_device* pDevice, const ma_device_conf } /* - Unfortunately DirectSound uses different APIs and data structures for playback and catpure devices. We need to initialize - the capture device first because we'll want to match it's buffer size and period count on the playback side if we're using + Unfortunately DirectSound uses different APIs and data structures for playback and capture devices. We need to initialize + the capture device first because we'll want to match its buffer size and period count on the playback side if we're using full-duplex mode. */ if (pConfig->deviceType == ma_device_type_capture || pConfig->deviceType == ma_device_type_duplex) { @@ -24814,6 +24974,7 @@ static ma_result ma_device_data_loop__dsound(ma_device* pDevice) ma_bool32 isPlaybackDeviceStarted = MA_FALSE; ma_uint32 framesWrittenToPlaybackDevice = 0; /* For knowing whether or not the playback device needs to be started. */ ma_uint32 waitTimeInMilliseconds = 1; + DWORD playbackBufferStatus = 0; MA_ASSERT(pDevice != NULL); @@ -25142,6 +25303,20 @@ static ma_result ma_device_data_loop__dsound(ma_device* pDevice) break; } + hr = ma_IDirectSoundBuffer_GetStatus((ma_IDirectSoundBuffer*)pDevice->dsound.pPlaybackBuffer, &playbackBufferStatus); + if (SUCCEEDED(hr) && (playbackBufferStatus & MA_DSBSTATUS_PLAYING) == 0 && isPlaybackDeviceStarted) { + ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_INFO, "[DirectSound] Attempting to resume audio due to state: %d.", (int)playbackBufferStatus); + hr = ma_IDirectSoundBuffer_Play((ma_IDirectSoundBuffer*)pDevice->dsound.pPlaybackBuffer, 0, 0, MA_DSBPLAY_LOOPING); + if (FAILED(hr)) { + ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_ERROR, "[DirectSound] IDirectSoundBuffer_Play() failed after attempting to resume from state %d.", (int)playbackBufferStatus); + return ma_result_from_HRESULT(hr); + } + + isPlaybackDeviceStarted = MA_TRUE; + ma_sleep(waitTimeInMilliseconds); + continue; + } + if (physicalPlayCursorInBytes < prevPlayCursorInBytesPlayback) { physicalPlayCursorLoopFlagPlayback = !physicalPlayCursorLoopFlagPlayback; } @@ -25343,6 +25518,8 @@ static ma_result ma_context_init__dsound(ma_context* pContext, const ma_context_ return MA_API_NOT_FOUND; } + pContext->dsound.hWnd = pConfig->dsound.hWnd; + pCallbacks->onContextInit = ma_context_init__dsound; pCallbacks->onContextUninit = ma_context_uninit__dsound; pCallbacks->onContextEnumerateDevices = ma_context_enumerate_devices__dsound; @@ -25665,7 +25842,7 @@ static ma_result ma_context_get_device_info_from_WAVECAPS(ma_context* pContext, - If the name GUID is not present in the registry we'll also need to stick to the original 31 characters. - I like consistency, so I want the returned device names to be consistent with those returned by WASAPI and DirectSound. The problem, however is that WASAPI and DirectSound use " ()" format (such as "Speakers (High Definition Audio)"), - but WinMM does not specificy the component name. From my admittedly limited testing, I've notice the component name seems to + but WinMM does not specify the component name. From my admittedly limited testing, I've notice the component name seems to usually fit within the 31 characters of the fixed sized buffer, so what I'm going to do is parse that string for the component name, and then concatenate the name from the registry. */ @@ -25933,7 +26110,7 @@ static ma_result ma_device_init__winmm(ma_device* pDevice, const ma_device_confi return MA_DEVICE_TYPE_NOT_SUPPORTED; } - /* No exlusive mode with WinMM. */ + /* No exclusive mode with WinMM. */ if (((pConfig->deviceType == ma_device_type_playback || pConfig->deviceType == ma_device_type_duplex) && pDescriptorPlayback->shareMode == ma_share_mode_exclusive) || ((pConfig->deviceType == ma_device_type_capture || pConfig->deviceType == ma_device_type_duplex) && pDescriptorCapture->shareMode == ma_share_mode_exclusive)) { return MA_SHARE_MODE_NOT_SUPPORTED; @@ -25955,7 +26132,7 @@ static ma_result ma_device_init__winmm(ma_device* pDevice, const ma_device_confi /* We use an event to know when a new fragment needs to be enqueued. */ pDevice->winmm.hEventCapture = (ma_handle)CreateEventA(NULL, TRUE, TRUE, NULL); if (pDevice->winmm.hEventCapture == NULL) { - errorMsg = "[WinMM] Failed to create event for fragment enqueing for the capture device.", errorCode = ma_result_from_GetLastError(GetLastError()); + errorMsg = "[WinMM] Failed to create event for fragment enqueuing for the capture device.", errorCode = ma_result_from_GetLastError(GetLastError()); goto on_error; } @@ -25993,7 +26170,7 @@ static ma_result ma_device_init__winmm(ma_device* pDevice, const ma_device_confi /* We use an event to know when a new fragment needs to be enqueued. */ pDevice->winmm.hEventPlayback = (ma_handle)CreateEventA(NULL, TRUE, TRUE, NULL); if (pDevice->winmm.hEventPlayback == NULL) { - errorMsg = "[WinMM] Failed to create event for fragment enqueing for the playback device.", errorCode = ma_result_from_GetLastError(GetLastError()); + errorMsg = "[WinMM] Failed to create event for fragment enqueuing for the playback device.", errorCode = ma_result_from_GetLastError(GetLastError()); goto on_error; } @@ -27115,7 +27292,7 @@ static ma_result ma_context_open_pcm__alsa(ma_context* pContext, ma_share_mode s /* We're trying to open a specific device. There's a few things to consider here: - miniaudio recongnizes a special format of device id that excludes the "hw", "dmix", etc. prefix. It looks like this: ":0,0", ":0,1", etc. When + miniaudio recognizes a special format of device id that excludes the "hw", "dmix", etc. prefix. It looks like this: ":0,0", ":0,1", etc. When an ID of this format is specified, it indicates to miniaudio that it can try different combinations of plugins ("hw", "dmix", etc.) until it finds an appropriate one that works. This comes in very handy when trying to open a device in shared mode ("dmix"), vs exclusive mode ("hw"). */ @@ -27214,7 +27391,7 @@ static ma_result ma_context_enumerate_devices__alsa(ma_context* pContext, ma_enu /* At this point, hwid looks like "hw:0,0". In simplified enumeration mode, we actually want to strip off the plugin name so it looks like ":0,0". The reason for this is that this special format is detected at device - initialization time and is used as an indicator to try and use the most appropriate plugin depending on the + initialization time and is used as an indicator to try to use the most appropriate plugin depending on the device type and sharing mode. */ char* dst = hwid; @@ -27393,7 +27570,7 @@ static void ma_context_iterate_rates_and_add_native_data_format__alsa(ma_context ((ma_snd_pcm_hw_params_get_rate_min_proc)pContext->alsa.snd_pcm_hw_params_get_rate_min)(pHWParams, &minSampleRate, &sampleRateDir); ((ma_snd_pcm_hw_params_get_rate_max_proc)pContext->alsa.snd_pcm_hw_params_get_rate_max)(pHWParams, &maxSampleRate, &sampleRateDir); - /* Make sure our sample rates are clamped to sane values. Stupid devices like "pulse" will reports rates like "1" which is ridiculus. */ + /* Make sure our sample rates are clamped to sane values. Stupid devices like "pulse" will reports rates like "1" which is ridiculous. */ minSampleRate = ma_clamp(minSampleRate, (unsigned int)ma_standard_sample_rate_min, (unsigned int)ma_standard_sample_rate_max); maxSampleRate = ma_clamp(maxSampleRate, (unsigned int)ma_standard_sample_rate_min, (unsigned int)ma_standard_sample_rate_max); @@ -27469,10 +27646,10 @@ static ma_result ma_context_get_device_info__alsa(ma_context* pContext, ma_devic /* Some ALSA devices can support many permutations of formats, channels and rates. We only support a fixed number of permutations which means we need to employ some strategies to ensure the best - combinations are returned. An example is the "pulse" device which can do it's own data conversion + combinations are returned. An example is the "pulse" device which can do its own data conversion in software and as a result can support any combination of format, channels and rate. - We want to ensure the the first data formats are the best. We have a list of favored sample + We want to ensure that the first data formats are the best. We have a list of favored sample formats and sample rates, so these will be the basis of our iteration. */ @@ -28050,7 +28227,21 @@ static ma_result ma_device_start__alsa(ma_device* pDevice) } if (pDevice->type == ma_device_type_playback || pDevice->type == ma_device_type_duplex) { - /* Don't need to do anything for playback because it'll be started automatically when enough data has been written. */ + /* + When data is written to the device we wait for the device to get ready to receive data with poll(). In my testing + I have observed that poll() can sometimes block forever unless the device is started explicitly with snd_pcm_start() + or some data is written with snd_pcm_writei(). + + To resolve this I've decided to do an explicit start with snd_pcm_start(). The problem with this is that the device + is started without any data in the internal buffer which will result in an immediate underrun. If instead we were + to call into snd_pcm_writei() in an attempt to prevent the underrun, we would run the risk of a weird deadlock + issue as documented inside ma_device_write__alsa(). + */ + resultALSA = ((ma_snd_pcm_start_proc)pDevice->pContext->alsa.snd_pcm_start)((ma_snd_pcm_t*)pDevice->alsa.pPCMPlayback); + if (resultALSA < 0) { + ma_log_post(ma_device_get_log(pDevice), MA_LOG_LEVEL_ERROR, "[ALSA] Failed to start playback device."); + return ma_result_from_errno(-resultALSA); + } } return MA_SUCCESS; @@ -28063,6 +28254,7 @@ static ma_result ma_device_stop__alsa(ma_device* pDevice) a small chance that our wakeupfd has not been cleared. We'll clear that out now if applicable. */ int resultPoll; + int resultRead; if (pDevice->type == ma_device_type_capture || pDevice->type == ma_device_type_duplex) { ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_DEBUG, "[ALSA] Dropping capture device...\n"); @@ -28077,12 +28269,15 @@ static ma_result ma_device_stop__alsa(ma_device* pDevice) ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_DEBUG, "[ALSA] Preparing capture device successful.\n"); } - /* Clear the wakeupfd. */ - resultPoll = poll((struct pollfd*)pDevice->alsa.pPollDescriptorsCapture, 1, 0); - if (resultPoll > 0) { - ma_uint64 t; - read(((struct pollfd*)pDevice->alsa.pPollDescriptorsCapture)[0].fd, &t, sizeof(t)); - } + /* Clear the wakeupfd. */ + resultPoll = poll((struct pollfd*)pDevice->alsa.pPollDescriptorsCapture, 1, 0); + if (resultPoll > 0) { + ma_uint64 t; + resultRead = read(((struct pollfd*)pDevice->alsa.pPollDescriptorsCapture)[0].fd, &t, sizeof(t)); + if (resultRead != sizeof(t)) { + ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_DEBUG, "[ALSA] Failed to read from capture wakeupfd. read() = %d\n", resultRead); + } + } } if (pDevice->type == ma_device_type_playback || pDevice->type == ma_device_type_duplex) { @@ -28099,12 +28294,14 @@ static ma_result ma_device_stop__alsa(ma_device* pDevice) } /* Clear the wakeupfd. */ - resultPoll = poll((struct pollfd*)pDevice->alsa.pPollDescriptorsPlayback, 1, 0); - if (resultPoll > 0) { - ma_uint64 t; - read(((struct pollfd*)pDevice->alsa.pPollDescriptorsPlayback)[0].fd, &t, sizeof(t)); - } - + resultPoll = poll((struct pollfd*)pDevice->alsa.pPollDescriptorsPlayback, 1, 0); + if (resultPoll > 0) { + ma_uint64 t; + resultRead = read(((struct pollfd*)pDevice->alsa.pPollDescriptorsPlayback)[0].fd, &t, sizeof(t)); + if (resultRead != sizeof(t)) { + ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_DEBUG, "[ALSA] Failed to read from playback wakeupfd. read() = %d\n", resultRead); + } + } } return MA_SUCCESS; @@ -28117,13 +28314,20 @@ static ma_result ma_device_wait__alsa(ma_device* pDevice, ma_snd_pcm_t* pPCM, st int resultALSA; int resultPoll = poll(pPollDescriptors, pollDescriptorCount, -1); if (resultPoll < 0) { - ma_log_post(ma_device_get_log(pDevice), MA_LOG_LEVEL_ERROR, "[ALSA] poll() failed.\n"); - return ma_result_from_errno(errno); + ma_log_post(ma_device_get_log(pDevice), MA_LOG_LEVEL_WARNING, "[ALSA] poll() failed.\n"); + + /* + There have been reports that poll() is returning an error randomly and that instead of + returning an error, simply trying again will work. I'm experimenting with adopting this + advice. + */ + continue; + /*return ma_result_from_errno(errno);*/ } /* Before checking the ALSA poll descriptor flag we need to check if the wakeup descriptor - has had it's POLLIN flag set. If so, we need to actually read the data and then exit + has had it's POLLIN flag set. If so, we need to actually read the data and then exit the function. The wakeup descriptor will be the first item in the descriptors buffer. */ if ((pPollDescriptors[0].revents & POLLIN) != 0) { @@ -28152,7 +28356,7 @@ static ma_result ma_device_wait__alsa(ma_device* pDevice, ma_snd_pcm_t* pPCM, st ma_snd_pcm_state_t state = ((ma_snd_pcm_state_proc)pDevice->pContext->alsa.snd_pcm_state)(pPCM); if (state == MA_SND_PCM_STATE_XRUN) { /* The PCM is in a xrun state. This will be recovered from at a higher level. We can disregard this. */ - } else { + } else { ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_WARNING, "[ALSA] POLLERR detected. status = %d\n", ((ma_snd_pcm_state_proc)pDevice->pContext->alsa.snd_pcm_state)(pPCM)); } } @@ -28585,7 +28789,7 @@ static ma_result ma_context_init__alsa(ma_context* pContext, const ma_context_co return MA_SUCCESS; } -#endif /* ALSA */ +#endif /* MA_HAS_ALSA */ @@ -28596,7 +28800,7 @@ PulseAudio Backend ******************************************************************************/ #ifdef MA_HAS_PULSEAUDIO /* -The PulseAudio API, along with Apple's Core Audio, is the worst of the maintream audio APIs. This is a brief description of what's going on +The PulseAudio API, along with Apple's Core Audio, is the worst of the mainstream audio APIs. This is a brief description of what's going on in the PulseAudio backend. I apologize if this gets a bit ranty for your liking - you might want to skip this discussion. PulseAudio has something they call the "Simple API", which unfortunately isn't suitable for miniaudio. I've not seen anywhere where it @@ -28611,7 +28815,7 @@ get fun, and I don't mean that in a good way... The problems start with the very name of the API - "asynchronous". Yes, this is an asynchronous oriented API which means your commands don't immediately take effect. You instead need to issue your commands, and then wait for them to complete. The waiting mechanism is -enabled through the use of a "main loop". In the asychronous API you cannot get away from the main loop, and the main loop is where almost +enabled through the use of a "main loop". In the asynchronous API you cannot get away from the main loop, and the main loop is where almost all of PulseAudio's problems stem from. When you first initialize PulseAudio you need an object referred to as "main loop". You can implement this yourself by defining your own @@ -28661,7 +28865,7 @@ because PulseAudio takes it literally, specifically the "can be". You would thin writing and reading data to and from the stream, and that would be right, except when it's not. When you initialize the stream, you can set a flag that tells PulseAudio to not start the stream automatically. This is required because miniaudio does not auto-start devices straight after initialization - you need to call `ma_device_start()` manually. The problem is that even when this flag is specified, -PulseAudio will immediately fire it's write or read callback. This is *technically* correct (based on the wording in the documentation) +PulseAudio will immediately fire its write or read callback. This is *technically* correct (based on the wording in the documentation) because indeed, data *can* be written at this point. The problem is that it's not *practical*. It makes sense that the write/read callback would be where a program will want to write or read data to or from the stream, but when it's called before the application has even requested that the stream be started, it's just not practical because the program probably isn't ready for any kind of data delivery at @@ -30039,16 +30243,18 @@ static ma_pa_buffer_attr ma_device__pa_buffer_attr_new(ma_uint32 periodSizeInFra static ma_pa_stream* ma_device__pa_stream_new__pulse(ma_device* pDevice, const char* pStreamName, const ma_pa_sample_spec* ss, const ma_pa_channel_map* cmap) { - static int g_StreamCounter = 0; + static ma_atomic_uint32 g_StreamCounter = { 0 }; char actualStreamName[256]; if (pStreamName != NULL) { ma_strncpy_s(actualStreamName, sizeof(actualStreamName), pStreamName, (size_t)-1); } else { - ma_strcpy_s(actualStreamName, sizeof(actualStreamName), "miniaudio:"); - ma_itoa_s(g_StreamCounter, actualStreamName + 8, sizeof(actualStreamName)-8, 10); /* 8 = strlen("miniaudio:") */ + const char* pBaseName = "miniaudio:"; + size_t baseNameLen = strlen(pBaseName); + ma_strcpy_s(actualStreamName, sizeof(actualStreamName), pBaseName); + ma_itoa_s((int)ma_atomic_uint32_get(&g_StreamCounter), actualStreamName + baseNameLen, sizeof(actualStreamName)-baseNameLen, 10); } - g_StreamCounter += 1; + ma_atomic_uint32_fetch_add(&g_StreamCounter, 1); return ((ma_pa_stream_new_proc)pDevice->pContext->pulse.pa_stream_new)((ma_pa_context*)pDevice->pulse.pPulseContext, actualStreamName, ss, cmap); } @@ -30302,6 +30508,7 @@ static ma_result ma_device_init__pulse(ma_device* pDevice, const ma_device_confi ma_pa_buffer_attr attr; const ma_pa_sample_spec* pActualSS = NULL; const ma_pa_buffer_attr* pActualAttr = NULL; + const ma_pa_channel_map* pActualChannelMap = NULL; ma_uint32 iChannel; ma_pa_stream_flags_t streamFlags; @@ -30362,7 +30569,7 @@ static ma_result ma_device_init__pulse(ma_device* pDevice, const ma_device_confi } /* Use a default channel map. */ - ((ma_pa_channel_map_init_extend_proc)pDevice->pContext->pulse.pa_channel_map_init_extend)(&cmap, ss.channels, MA_PA_CHANNEL_MAP_DEFAULT); + ((ma_pa_channel_map_init_extend_proc)pDevice->pContext->pulse.pa_channel_map_init_extend)(&cmap, ss.channels, pConfig->pulse.channelMap); /* Use the requested sample rate if one was specified. */ if (pDescriptorCapture->sampleRate != 0) { @@ -30451,7 +30658,12 @@ static ma_result ma_device_init__pulse(ma_device* pDevice, const ma_device_confi goto on_error4; } + /* Internal channel map. */ + pActualChannelMap = ((ma_pa_stream_get_channel_map_proc)pDevice->pContext->pulse.pa_stream_get_channel_map)((ma_pa_stream*)pDevice->pulse.pStreamCapture); + if (pActualChannelMap == NULL) { + pActualChannelMap = &cmap; /* Fallback just in case. */ + } /* Bug in PipeWire. There have been reports that PipeWire is returning AUX channels when reporting @@ -30461,8 +30673,8 @@ static ma_result ma_device_init__pulse(ma_device* pDevice, const ma_device_confi fixed sooner than later. I might remove this hack later. */ if (pDescriptorCapture->channels > 2) { - for (iChannel = 0; iChannel < pDescriptorCapture->channels; ++iChannel) { - pDescriptorCapture->channelMap[iChannel] = ma_channel_position_from_pulse(cmap.map[iChannel]); + for (iChannel = 0; iChannel < pDescriptorCapture->channels; iChannel += 1) { + pDescriptorCapture->channelMap[iChannel] = ma_channel_position_from_pulse(pActualChannelMap->map[iChannel]); } } else { /* Hack for mono and stereo. */ @@ -30509,7 +30721,7 @@ static ma_result ma_device_init__pulse(ma_device* pDevice, const ma_device_confi } /* Use a default channel map. */ - ((ma_pa_channel_map_init_extend_proc)pDevice->pContext->pulse.pa_channel_map_init_extend)(&cmap, ss.channels, MA_PA_CHANNEL_MAP_DEFAULT); + ((ma_pa_channel_map_init_extend_proc)pDevice->pContext->pulse.pa_channel_map_init_extend)(&cmap, ss.channels, pConfig->pulse.channelMap); /* Use the requested sample rate if one was specified. */ @@ -30603,7 +30815,12 @@ static ma_result ma_device_init__pulse(ma_device* pDevice, const ma_device_confi goto on_error4; } + /* Internal channel map. */ + pActualChannelMap = ((ma_pa_stream_get_channel_map_proc)pDevice->pContext->pulse.pa_stream_get_channel_map)((ma_pa_stream*)pDevice->pulse.pStreamPlayback); + if (pActualChannelMap == NULL) { + pActualChannelMap = &cmap; /* Fallback just in case. */ + } /* Bug in PipeWire. There have been reports that PipeWire is returning AUX channels when reporting @@ -30613,8 +30830,8 @@ static ma_result ma_device_init__pulse(ma_device* pDevice, const ma_device_confi fixed sooner than later. I might remove this hack later. */ if (pDescriptorPlayback->channels > 2) { - for (iChannel = 0; iChannel < pDescriptorPlayback->channels; ++iChannel) { - pDescriptorPlayback->channelMap[iChannel] = ma_channel_position_from_pulse(cmap.map[iChannel]); + for (iChannel = 0; iChannel < pDescriptorPlayback->channels; iChannel += 1) { + pDescriptorPlayback->channelMap[iChannel] = ma_channel_position_from_pulse(pActualChannelMap->map[iChannel]); } } else { /* Hack for mono and stereo. */ @@ -31767,7 +31984,7 @@ static ma_result ma_context_init__jack(ma_context* pContext, const ma_context_co return MA_SUCCESS; } -#endif /* JACK */ +#endif /* MA_HAS_JACK */ @@ -31858,7 +32075,7 @@ that supports this level of detail. There was some public domain sample code I s and AudioUnit APIs, but I couldn't see anything that gave low-level control over device selection and capabilities (the distinction between playback and capture in particular). Therefore, miniaudio is using the AudioObject API. -Most (all?) functions in the AudioObject API take a AudioObjectID as it's input. This is the device identifier. When +Most (all?) functions in the AudioObject API take a AudioObjectID as its input. This is the device identifier. When retrieving global information, such as the device list, you use kAudioObjectSystemObject. When retrieving device-specific data, you pass in the ID for that device. In order to retrieve device-specific IDs you need to enumerate over each of the devices. This is done using the AudioObjectGetPropertyDataSize() and AudioObjectGetPropertyData() APIs which seem to be @@ -32193,6 +32410,12 @@ static ma_result ma_get_channel_map_from_AudioChannelLayout(AudioChannelLayout* #define AUDIO_OBJECT_PROPERTY_ELEMENT kAudioObjectPropertyElementMaster #endif +/* kAudioDevicePropertyScope* were renamed to kAudioObjectPropertyScope* in 10.8. */ +#if !defined(MAC_OS_X_VERSION_10_8) || (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8) +#define kAudioObjectPropertyScopeInput kAudioDevicePropertyScopeInput +#define kAudioObjectPropertyScopeOutput kAudioDevicePropertyScopeOutput +#endif + static ma_result ma_get_device_object_ids__coreaudio(ma_context* pContext, UInt32* pDeviceCount, AudioObjectID** ppDeviceObjectIDs) /* NOTE: Free the returned buffer with ma_free(). */ { AudioObjectPropertyAddress propAddressDevices; @@ -32782,7 +33005,7 @@ static ma_result ma_find_best_format__coreaudio(ma_context* pContext, AudioObjec desiredSampleRate = sampleRate; if (desiredSampleRate == 0) { - desiredSampleRate = pOrigFormat->mSampleRate; + desiredSampleRate = (ma_uint32)pOrigFormat->mSampleRate; } desiredChannelCount = channels; @@ -33425,7 +33648,7 @@ static OSStatus ma_on_output__coreaudio(void* pUserData, AudioUnitRenderActionFl } } else { /* This is the deinterleaved case. We need to update each buffer in groups of internalChannels. This assumes each buffer is the same size. */ - MA_ASSERT(pDevice->playback.internalChannels <= MA_MAX_CHANNELS); /* This should heve been validated at initialization time. */ + MA_ASSERT(pDevice->playback.internalChannels <= MA_MAX_CHANNELS); /* This should have been validated at initialization time. */ /* For safety we'll check that the internal channels is a multiple of the buffer count. If it's not it means something @@ -33516,11 +33739,12 @@ static OSStatus ma_on_input__coreaudio(void* pUserData, AudioUnitRenderActionFla */ for (iBuffer = 0; iBuffer < pRenderedBufferList->mNumberBuffers; ++iBuffer) { pRenderedBufferList->mBuffers[iBuffer].mDataByteSize = pDevice->coreaudio.audioBufferCapInFrames * ma_get_bytes_per_sample(pDevice->capture.internalFormat) * pRenderedBufferList->mBuffers[iBuffer].mNumberChannels; + /*printf("DEBUG: nDataByteSize = %d\n", (int)pRenderedBufferList->mBuffers[iBuffer].mDataByteSize);*/ } status = ((ma_AudioUnitRender_proc)pDevice->pContext->coreaudio.AudioUnitRender)((AudioUnit)pDevice->coreaudio.audioUnitCapture, pActionFlags, pTimeStamp, busNumber, frameCount, pRenderedBufferList); if (status != noErr) { - ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_DEBUG, " ERROR: AudioUnitRender() failed with %d.\n", (int)status); + ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_DEBUG, "ERROR: AudioUnitRender() failed with %d.\n", (int)status); return status; } @@ -33756,7 +33980,7 @@ static ma_result ma_context__init_device_tracking__coreaudio(ma_context* pContex ma_spinlock_lock(&g_DeviceTrackingInitLock_CoreAudio); { - /* Don't do anything if we've already initializd device tracking. */ + /* Don't do anything if we've already initialized device tracking. */ if (g_DeviceTrackingInitCounter_CoreAudio == 0) { AudioObjectPropertyAddress propAddress; propAddress.mScope = kAudioObjectPropertyScopeGlobal; @@ -34068,11 +34292,11 @@ typedef struct static ma_result ma_device_init_internal__coreaudio(ma_context* pContext, ma_device_type deviceType, const ma_device_id* pDeviceID, ma_device_init_internal_data__coreaudio* pData, void* pDevice_DoNotReference) /* <-- pDevice is typed as void* intentionally so as to avoid accidentally referencing it. */ { - ma_result result; + ma_result result = MA_SUCCESS; OSStatus status; UInt32 enableIOFlag; AudioStreamBasicDescription bestFormat; - UInt32 actualPeriodSizeInFrames; + ma_uint32 actualPeriodSizeInFrames; AURenderCallbackStruct callbackInfo; #if defined(MA_APPLE_DESKTOP) AudioObjectID deviceObjectID; @@ -34224,7 +34448,7 @@ static ma_result ma_device_init_internal__coreaudio(ma_context* pContext, ma_dev returning a result code of -10863. I have also tried changing the format directly on the input scope on the input bus, but this just results in `ca_require: IsStreamFormatWritable(inScope, inElement) NotWritable` when trying to set the format. - Something that does seem to work, however, has been setting the nominal sample rate on the deivce object. The problem with + Something that does seem to work, however, has been setting the nominal sample rate on the device object. The problem with this, however, is that it actually changes the sample rate at the operating system level and not just the application. This could be intrusive to the user, however, so I don't think it's wise to make this the default. Instead I'm making this a configuration option. When the `coreaudio.allowNominalSampleRateChange` config option is set to true, changing the sample @@ -34275,15 +34499,28 @@ static ma_result ma_device_init_internal__coreaudio(ma_context* pContext, ma_dev /* I've had a report that the channel count returned by AudioUnitGetProperty above is inconsistent with AVAudioSession outputNumberOfChannels. I'm going to try using the AVAudioSession values instead. + + UPDATE 20/02/2025: + When testing on the simulator with an iPhone 15 and iOS 17 I get an error when initializing the audio + unit if set the input channels to pAudioSession.inputNumberOfChannels. What is happening is the channel + count returned from AudioUnitGetProperty() above is set to 2, but pAudioSession is reporting a channel + count of 1. When this happens, the call to AudioUnitSetProprty() below just down below will succeed, but + AudioUnitInitialize() further down will fail. The only solution I have come up with is to not set the + channel count to pAudioSession.inputNumberOfChannels. */ if (deviceType == ma_device_type_playback) { bestFormat.mChannelsPerFrame = (UInt32)pAudioSession.outputNumberOfChannels; } + + #if 0 if (deviceType == ma_device_type_capture) { + /*printf("DEBUG: bestFormat.mChannelsPerFrame = %d; pAudioSession.inputNumberOfChannels = %d\n", (int)bestFormat.mChannelsPerFrame, (int)pAudioSession.inputNumberOfChannels);*/ bestFormat.mChannelsPerFrame = (UInt32)pAudioSession.inputNumberOfChannels; } + #endif } + status = ((ma_AudioUnitSetProperty_proc)pContext->coreaudio.AudioUnitSetProperty)(pData->audioUnit, kAudioUnitProperty_StreamFormat, formatScope, formatElement, &bestFormat, sizeof(bestFormat)); if (status != noErr) { ((ma_AudioComponentInstanceDispose_proc)pContext->coreaudio.AudioComponentInstanceDispose)(pData->audioUnit); @@ -34303,7 +34540,7 @@ static ma_result ma_device_init_internal__coreaudio(ma_context* pContext, ma_dev } pData->channelsOut = bestFormat.mChannelsPerFrame; - pData->sampleRateOut = bestFormat.mSampleRate; + pData->sampleRateOut = (ma_uint32)bestFormat.mSampleRate; } /* Clamp the channel count for safety. */ @@ -34610,7 +34847,7 @@ static ma_result ma_device_init__coreaudio(ma_device* pDevice, const ma_device_c ma_get_AudioObject_uid(pDevice->pContext, pDevice->coreaudio.deviceObjectIDCapture, sizeof(pDevice->capture.id.coreaudio), pDevice->capture.id.coreaudio); /* - If we are using the default device we'll need to listen for changes to the system's default device so we can seemlessly + If we are using the default device we'll need to listen for changes to the system's default device so we can seamlessly switch the device in the background. */ if (pConfig->capture.pDeviceID == NULL) { @@ -34674,7 +34911,7 @@ static ma_result ma_device_init__coreaudio(ma_device* pDevice, const ma_device_c ma_get_AudioObject_uid(pDevice->pContext, pDevice->coreaudio.deviceObjectIDPlayback, sizeof(pDevice->playback.id.coreaudio), pDevice->playback.id.coreaudio); /* - If we are using the default device we'll need to listen for changes to the system's default device so we can seemlessly + If we are using the default device we'll need to listen for changes to the system's default device so we can seamlessly switch the device in the background. */ if (pDescriptorPlayback->pDeviceID == NULL && (pConfig->deviceType != ma_device_type_duplex || pDescriptorCapture->pDeviceID != NULL)) { @@ -34992,7 +35229,7 @@ static ma_result ma_context_init__coreaudio(ma_context* pContext, const ma_conte return MA_SUCCESS; } -#endif /* Core Audio */ +#endif /* MA_HAS_COREAUDIO */ @@ -35484,7 +35721,7 @@ static ma_result ma_device_uninit__sndio(ma_device* pDevice) ((ma_sio_close_proc)pDevice->pContext->sndio.sio_close)((struct ma_sio_hdl*)pDevice->sndio.handleCapture); } - if (pDevice->type == ma_device_type_capture || pDevice->type == ma_device_type_duplex) { + if (pDevice->type == ma_device_type_playback || pDevice->type == ma_device_type_duplex) { ((ma_sio_close_proc)pDevice->pContext->sndio.sio_close)((struct ma_sio_hdl*)pDevice->sndio.handlePlayback); } @@ -35839,7 +36076,7 @@ static ma_result ma_context_init__sndio(ma_context* pContext, const ma_context_c (void)pConfig; return MA_SUCCESS; } -#endif /* sndio */ +#endif /* MA_HAS_SNDIO */ @@ -35857,6 +36094,10 @@ audio(4) Backend #include #include +#ifdef __NetBSD__ +#include +#endif + #if defined(__OpenBSD__) #include #if defined(OpenBSD) && OpenBSD >= 201709 @@ -36076,9 +36317,15 @@ static ma_result ma_context_get_device_info_from_fd__audio4(ma_context* pContext ma_uint32 channels; ma_uint32 sampleRate; +#if defined(__NetBSD__) && (__NetBSD_Version__ >= 900000000) + if (ioctl(fd, AUDIO_GETFORMAT, &fdInfo) < 0) { + return MA_ERROR; + } +#else if (ioctl(fd, AUDIO_GETINFO, &fdInfo) < 0) { return MA_ERROR; } +#endif if (deviceType == ma_device_type_playback) { channels = fdInfo.play.channels; @@ -36356,7 +36603,11 @@ static ma_result ma_device_init_fd__audio4(ma_device* pDevice, const ma_device_c /* We're using a default device. Get the info from the /dev/audioctl file instead of /dev/audio. */ int fdctl = open(pDefaultDeviceCtlNames[iDefaultDevice], fdFlags, 0); if (fdctl != -1) { +#if defined(__NetBSD__) && (__NetBSD_Version__ >= 900000000) + fdInfoResult = ioctl(fdctl, AUDIO_GETFORMAT, &fdInfo); +#else fdInfoResult = ioctl(fdctl, AUDIO_GETINFO, &fdInfo); +#endif close(fdctl); } } @@ -36723,7 +36974,7 @@ static ma_result ma_context_init__audio4(ma_context* pContext, const ma_context_ return MA_SUCCESS; } -#endif /* audio4 */ +#endif /* MA_HAS_AUDIO4 */ /****************************************************************************** @@ -37086,7 +37337,7 @@ static ma_result ma_device_init_fd__oss(ma_device* pDevice, const ma_device_conf } /* - The OSS documantation is very clear about the order we should be initializing the device's properties: + The OSS documentation is very clear about the order we should be initializing the device's properties: 1) Format 2) Channels 3) Sample rate. @@ -37354,7 +37605,7 @@ static ma_result ma_context_init__oss(ma_context* pContext, const ma_context_con return MA_SUCCESS; } -#endif /* OSS */ +#endif /* MA_HAS_OSS */ @@ -37367,7 +37618,9 @@ AAudio Backend ******************************************************************************/ #ifdef MA_HAS_AAUDIO -/*#include */ +#ifdef MA_NO_RUNTIME_LINKING + #include +#endif typedef int32_t ma_aaudio_result_t; typedef int32_t ma_aaudio_direction_t; @@ -37580,9 +37833,7 @@ static void ma_stream_error_callback__aaudio(ma_AAudioStream* pStream, void* pUs MA_ASSERT(pDevice != NULL); (void)error; - ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_INFO, "[AAudio] ERROR CALLBACK: error=%d, AAudioStream_getState()=%d\n", error, ((MA_PFN_AAudioStream_getState)pDevice->pContext->aaudio.AAudioStream_getState)(pStream)); - /* When we get an error, we'll assume that the stream is in an erroneous state and needs to be restarted. From the documentation, we cannot do this from the error callback. Therefore we are going to use an event thread for the AAudio backend to do this @@ -37610,7 +37861,9 @@ static ma_aaudio_data_callback_result_t ma_stream_data_callback_capture__aaudio( ma_device* pDevice = (ma_device*)pUserData; MA_ASSERT(pDevice != NULL); - ma_device_handle_backend_data_callback(pDevice, NULL, pAudioData, frameCount); + if (frameCount > 0) { + ma_device_handle_backend_data_callback(pDevice, NULL, pAudioData, (ma_uint32)frameCount); + } (void)pStream; return MA_AAUDIO_CALLBACK_RESULT_CONTINUE; @@ -37621,7 +37874,14 @@ static ma_aaudio_data_callback_result_t ma_stream_data_callback_playback__aaudio ma_device* pDevice = (ma_device*)pUserData; MA_ASSERT(pDevice != NULL); - ma_device_handle_backend_data_callback(pDevice, pAudioData, NULL, frameCount); + /* + I've had a report that AAudio can sometimes post a frame count of 0. We need to check for that here + so we don't get any errors at a deeper level. I'm doing the same with the capture side for safety, + though I've not yet had any reports about that one. + */ + if (frameCount > 0) { + ma_device_handle_backend_data_callback(pDevice, pAudioData, NULL, (ma_uint32)frameCount); + } (void)pStream; return MA_AAUDIO_CALLBACK_RESULT_CONTINUE; @@ -37656,32 +37916,25 @@ static ma_result ma_create_and_configure_AAudioStreamBuilder__aaudio(ma_context* ((MA_PFN_AAudioStreamBuilder_setSampleRate)pContext->aaudio.AAudioStreamBuilder_setSampleRate)(pBuilder, pDescriptor->sampleRate); } - if (deviceType == ma_device_type_capture) { - if (pDescriptor->channels != 0) { - ((MA_PFN_AAudioStreamBuilder_setChannelCount)pContext->aaudio.AAudioStreamBuilder_setChannelCount)(pBuilder, pDescriptor->channels); - } - if (pDescriptor->format != ma_format_unknown) { - ((MA_PFN_AAudioStreamBuilder_setFormat)pContext->aaudio.AAudioStreamBuilder_setFormat)(pBuilder, (pDescriptor->format == ma_format_s16) ? MA_AAUDIO_FORMAT_PCM_I16 : MA_AAUDIO_FORMAT_PCM_FLOAT); - } - } else { - if (pDescriptor->channels != 0) { - ((MA_PFN_AAudioStreamBuilder_setChannelCount)pContext->aaudio.AAudioStreamBuilder_setChannelCount)(pBuilder, pDescriptor->channels); - } - if (pDescriptor->format != ma_format_unknown) { - ((MA_PFN_AAudioStreamBuilder_setFormat)pContext->aaudio.AAudioStreamBuilder_setFormat)(pBuilder, (pDescriptor->format == ma_format_s16) ? MA_AAUDIO_FORMAT_PCM_I16 : MA_AAUDIO_FORMAT_PCM_FLOAT); - } + if (pDescriptor->channels != 0) { + ((MA_PFN_AAudioStreamBuilder_setChannelCount)pContext->aaudio.AAudioStreamBuilder_setChannelCount)(pBuilder, pDescriptor->channels); + } + + if (pDescriptor->format != ma_format_unknown) { + ((MA_PFN_AAudioStreamBuilder_setFormat)pContext->aaudio.AAudioStreamBuilder_setFormat)(pBuilder, (pDescriptor->format == ma_format_s16) ? MA_AAUDIO_FORMAT_PCM_I16 : MA_AAUDIO_FORMAT_PCM_FLOAT); } /* - There have been reports where setting the frames per data callback results in an error - later on from Android. To address this, I'm experimenting with simply not setting it on - anything from Android 11 and earlier. Suggestions welcome on how we might be able to make - this more targetted. + There have been reports where setting the frames per data callback results in an error. + In particular, re-routing may inadvertently switch from low-latency mode, resulting in a less stable + stream from the legacy path (AudioStreamLegacy). To address this, we simply don't set the value. It + can still be set if it's explicitly requested via the aaudio.allowSetBufferCapacity variable in the + device config. */ - if (!pConfig->aaudio.enableCompatibilityWorkarounds || ma_android_sdk_version() > 30) { + if ((!pConfig->aaudio.enableCompatibilityWorkarounds || ma_android_sdk_version() > 30) && pConfig->aaudio.allowSetBufferCapacity) { /* - AAudio is annoying when it comes to it's buffer calculation stuff because it doesn't let you + AAudio is annoying when it comes to its buffer calculation stuff because it doesn't let you retrieve the actual sample rate until after you've opened the stream. But you need to configure the buffer capacity before you open the stream... :/ @@ -37715,7 +37968,11 @@ static ma_result ma_create_and_configure_AAudioStreamBuilder__aaudio(ma_context* ((MA_PFN_AAudioStreamBuilder_setDataCallback)pContext->aaudio.AAudioStreamBuilder_setDataCallback)(pBuilder, ma_stream_data_callback_playback__aaudio, (void*)pDevice); } - /* Not sure how this affects things, but since there's a mapping between miniaudio's performance profiles and AAudio's performance modes, let go ahead and set it. */ + /* + If we set AAUDIO_PERFORMANCE_MODE_LOW_LATENCY, we allow for MMAP (non-legacy path). + Since there's a mapping between miniaudio's performance profiles and AAudio's performance modes, let's use it. + Beware though, with a conservative performance profile, AAudio will indeed take the legacy path. + */ ((MA_PFN_AAudioStreamBuilder_setPerformanceMode)pContext->aaudio.AAudioStreamBuilder_setPerformanceMode)(pBuilder, (pConfig->performanceProfile == ma_performance_profile_low_latency) ? MA_AAUDIO_PERFORMANCE_MODE_LOW_LATENCY : MA_AAUDIO_PERFORMANCE_MODE_NONE); /* We need to set an error callback to detect device changes. */ @@ -37751,6 +38008,9 @@ static ma_result ma_open_stream_basic__aaudio(ma_context* pContext, const ma_dev return result; } + /* Let's give AAudio a hint to avoid the legacy path (AudioStreamLegacy). */ + ((MA_PFN_AAudioStreamBuilder_setPerformanceMode)pContext->aaudio.AAudioStreamBuilder_setPerformanceMode)(pBuilder, MA_AAUDIO_PERFORMANCE_MODE_LOW_LATENCY); + return ma_open_stream_and_close_builder__aaudio(pContext, pBuilder, ppStream); } @@ -37775,6 +38035,10 @@ static ma_result ma_open_stream__aaudio(ma_device* pDevice, const ma_device_conf static ma_result ma_close_stream__aaudio(ma_context* pContext, ma_AAudioStream* pStream) { + if (pStream == NULL) { + return MA_INVALID_ARGS; + } + return ma_result_from_aaudio(((MA_PFN_AAudioStream_close)pContext->aaudio.AAudioStream_close)(pStream)); } @@ -37901,20 +38165,36 @@ static ma_result ma_context_get_device_info__aaudio(ma_context* pContext, ma_dev return MA_SUCCESS; } +static ma_result ma_close_streams__aaudio(ma_device* pDevice) +{ + MA_ASSERT(pDevice != NULL); + + /* When re-routing, streams may have been closed and never re-opened. Hence the extra checks below. */ + if (pDevice->type == ma_device_type_capture || pDevice->type == ma_device_type_duplex) { + ma_close_stream__aaudio(pDevice->pContext, (ma_AAudioStream*)pDevice->aaudio.pStreamCapture); + pDevice->aaudio.pStreamCapture = NULL; + } + if (pDevice->type == ma_device_type_playback || pDevice->type == ma_device_type_duplex) { + ma_close_stream__aaudio(pDevice->pContext, (ma_AAudioStream*)pDevice->aaudio.pStreamPlayback); + pDevice->aaudio.pStreamPlayback = NULL; + } + + return MA_SUCCESS; +} static ma_result ma_device_uninit__aaudio(ma_device* pDevice) { MA_ASSERT(pDevice != NULL); - if (pDevice->type == ma_device_type_capture || pDevice->type == ma_device_type_duplex) { - ma_close_stream__aaudio(pDevice->pContext, (ma_AAudioStream*)pDevice->aaudio.pStreamCapture); - pDevice->aaudio.pStreamCapture = NULL; + /* Wait for any rerouting to finish before attempting to close the streams. */ + ma_mutex_lock(&pDevice->aaudio.rerouteLock); + { + ma_close_streams__aaudio(pDevice); } + ma_mutex_unlock(&pDevice->aaudio.rerouteLock); - if (pDevice->type == ma_device_type_playback || pDevice->type == ma_device_type_duplex) { - ma_close_stream__aaudio(pDevice->pContext, (ma_AAudioStream*)pDevice->aaudio.pStreamPlayback); - pDevice->aaudio.pStreamPlayback = NULL; - } + /* Destroy re-routing lock. */ + ma_mutex_uninit(&pDevice->aaudio.rerouteLock); return MA_SUCCESS; } @@ -37966,7 +38246,7 @@ static ma_result ma_device_init_by_type__aaudio(ma_device* pDevice, const ma_dev return MA_SUCCESS; } -static ma_result ma_device_init__aaudio(ma_device* pDevice, const ma_device_config* pConfig, ma_device_descriptor* pDescriptorPlayback, ma_device_descriptor* pDescriptorCapture) +static ma_result ma_device_init_streams__aaudio(ma_device* pDevice, const ma_device_config* pConfig, ma_device_descriptor* pDescriptorPlayback, ma_device_descriptor* pDescriptorCapture) { ma_result result; @@ -37999,6 +38279,25 @@ static ma_result ma_device_init__aaudio(ma_device* pDevice, const ma_device_conf return MA_SUCCESS; } +static ma_result ma_device_init__aaudio(ma_device* pDevice, const ma_device_config* pConfig, ma_device_descriptor* pDescriptorPlayback, ma_device_descriptor* pDescriptorCapture) +{ + ma_result result; + + MA_ASSERT(pDevice != NULL); + + result = ma_device_init_streams__aaudio(pDevice, pConfig, pDescriptorPlayback, pDescriptorCapture); + if (result != MA_SUCCESS) { + return result; + } + + result = ma_mutex_init(&pDevice->aaudio.rerouteLock); + if (result != MA_SUCCESS) { + return result; + } + + return MA_SUCCESS; +} + static ma_result ma_device_start_stream__aaudio(ma_device* pDevice, ma_AAudioStream* pStream) { ma_aaudio_result_t resultAA; @@ -38006,12 +38305,16 @@ static ma_result ma_device_start_stream__aaudio(ma_device* pDevice, ma_AAudioStr MA_ASSERT(pDevice != NULL); + if (pStream == NULL) { + return MA_INVALID_ARGS; + } + resultAA = ((MA_PFN_AAudioStream_requestStart)pDevice->pContext->aaudio.AAudioStream_requestStart)(pStream); if (resultAA != MA_AAUDIO_OK) { return ma_result_from_aaudio(resultAA); } - /* Do we actually need to wait for the device to transition into it's started state? */ + /* Do we actually need to wait for the device to transition into its started state? */ /* The device should be in either a starting or started state. If it's not set to started we need to wait for it to transition. It should go from starting to started. */ currentState = ((MA_PFN_AAudioStream_getState)pDevice->pContext->aaudio.AAudioStream_getState)(pStream); @@ -38038,6 +38341,10 @@ static ma_result ma_device_stop_stream__aaudio(ma_device* pDevice, ma_AAudioStre MA_ASSERT(pDevice != NULL); + if (pStream == NULL) { + return MA_INVALID_ARGS; + } + /* From the AAudio documentation: @@ -38123,22 +38430,20 @@ static ma_result ma_device_stop__aaudio(ma_device* pDevice) static ma_result ma_device_reinit__aaudio(ma_device* pDevice, ma_device_type deviceType) { ma_result result; + int32_t retries = 0; MA_ASSERT(pDevice != NULL); - /* The first thing to do is close the streams. */ - if (deviceType == ma_device_type_capture || deviceType == ma_device_type_duplex) { - ma_close_stream__aaudio(pDevice->pContext, (ma_AAudioStream*)pDevice->aaudio.pStreamCapture); - pDevice->aaudio.pStreamCapture = NULL; - } - - if (deviceType == ma_device_type_playback || deviceType == ma_device_type_duplex) { - ma_close_stream__aaudio(pDevice->pContext, (ma_AAudioStream*)pDevice->aaudio.pStreamPlayback); - pDevice->aaudio.pStreamPlayback = NULL; - } - - /* Now we need to reinitialize each streams. The hardest part with this is just filling output the config and descriptors. */ + /* + TODO: Stop retrying if main thread is about to uninit device. + */ + ma_mutex_lock(&pDevice->aaudio.rerouteLock); { +error_disconnected: + /* The first thing to do is close the streams. */ + ma_close_streams__aaudio(pDevice); + + /* Now we need to reinitialize each streams. The hardest part with this is just filling output the config and descriptors. */ ma_device_config deviceConfig; ma_device_descriptor descriptorPlayback; ma_device_descriptor descriptorCapture; @@ -38187,15 +38492,17 @@ static ma_result ma_device_reinit__aaudio(ma_device* pDevice, ma_device_type dev descriptorPlayback.periodCount = deviceConfig.periods; } - result = ma_device_init__aaudio(pDevice, &deviceConfig, &descriptorPlayback, &descriptorCapture); + result = ma_device_init_streams__aaudio(pDevice, &deviceConfig, &descriptorPlayback, &descriptorCapture); if (result != MA_SUCCESS) { - return result; + ma_log_post(ma_device_get_log(pDevice), MA_LOG_LEVEL_WARNING, "[AAudio] Failed to create stream after route change."); + goto done; } result = ma_device_post_init(pDevice, deviceType, &descriptorPlayback, &descriptorCapture); if (result != MA_SUCCESS) { - ma_device_uninit__aaudio(pDevice); - return result; + ma_log_post(ma_device_get_log(pDevice), MA_LOG_LEVEL_WARNING, "[AAudio] Failed to initialize device after route change."); + ma_close_streams__aaudio(pDevice); + goto done; } /* We'll only ever do this in response to a reroute. */ @@ -38204,14 +38511,29 @@ static ma_result ma_device_reinit__aaudio(ma_device* pDevice, ma_device_type dev /* If the device is started, start the streams. Maybe make this configurable? */ if (ma_device_get_state(pDevice) == ma_device_state_started) { if (pDevice->aaudio.noAutoStartAfterReroute == MA_FALSE) { - ma_device_start__aaudio(pDevice); + result = ma_device_start__aaudio(pDevice); + if (result != MA_SUCCESS) { + /* We got disconnected! Retry a few times, until we find a connected device! */ + retries += 1; + if (retries <= 3) { + ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_INFO, "[AAudio] Failed to start stream after route change, retrying(%d)", retries); + goto error_disconnected; + } + ma_log_post(ma_device_get_log(pDevice), MA_LOG_LEVEL_INFO, "[AAudio] Failed to start stream after route change."); + goto done; + } } else { ma_device_stop(pDevice); /* Do a full device stop so we set internal state correctly. */ } } - - return MA_SUCCESS; + + result = MA_SUCCESS; } +done: + /* Re-routing done */ + ma_mutex_unlock(&pDevice->aaudio.rerouteLock); + + return result; } static ma_result ma_device_get_info__aaudio(ma_device* pDevice, ma_device_type type, ma_device_info* pDeviceInfo) @@ -38222,12 +38544,12 @@ static ma_result ma_device_get_info__aaudio(ma_device* pDevice, ma_device_type t MA_ASSERT(type != ma_device_type_duplex); MA_ASSERT(pDeviceInfo != NULL); - if (type == ma_device_type_playback) { + if (type == ma_device_type_capture) { pStream = (ma_AAudioStream*)pDevice->aaudio.pStreamCapture; pDeviceInfo->id.aaudio = pDevice->capture.id.aaudio; ma_strncpy_s(pDeviceInfo->name, sizeof(pDeviceInfo->name), MA_DEFAULT_CAPTURE_DEVICE_NAME, (size_t)-1); /* Only supporting default devices. */ } - if (type == ma_device_type_capture) { + if (type == ma_device_type_playback) { pStream = (ma_AAudioStream*)pDevice->aaudio.pStreamPlayback; pDeviceInfo->id.aaudio = pDevice->playback.id.aaudio; ma_strncpy_s(pDeviceInfo->name, sizeof(pDeviceInfo->name), MA_DEFAULT_PLAYBACK_DEVICE_NAME, (size_t)-1); /* Only supporting default devices. */ @@ -38260,6 +38582,7 @@ static ma_result ma_context_uninit__aaudio(ma_context* pContext) static ma_result ma_context_init__aaudio(ma_context* pContext, const ma_context_config* pConfig, ma_backend_callbacks* pCallbacks) { +#if !defined(MA_NO_RUNTIME_LINKING) size_t i; const char* libNames[] = { "libaaudio.so" @@ -38305,7 +38628,39 @@ static ma_result ma_context_init__aaudio(ma_context* pContext, const ma_context_ pContext->aaudio.AAudioStream_getFramesPerBurst = (ma_proc)ma_dlsym(ma_context_get_log(pContext), pContext->aaudio.hAAudio, "AAudioStream_getFramesPerBurst"); pContext->aaudio.AAudioStream_requestStart = (ma_proc)ma_dlsym(ma_context_get_log(pContext), pContext->aaudio.hAAudio, "AAudioStream_requestStart"); pContext->aaudio.AAudioStream_requestStop = (ma_proc)ma_dlsym(ma_context_get_log(pContext), pContext->aaudio.hAAudio, "AAudioStream_requestStop"); - +#else + pContext->aaudio.AAudio_createStreamBuilder = (ma_proc)AAudio_createStreamBuilder; + pContext->aaudio.AAudioStreamBuilder_delete = (ma_proc)AAudioStreamBuilder_delete; + pContext->aaudio.AAudioStreamBuilder_setDeviceId = (ma_proc)AAudioStreamBuilder_setDeviceId; + pContext->aaudio.AAudioStreamBuilder_setDirection = (ma_proc)AAudioStreamBuilder_setDirection; + pContext->aaudio.AAudioStreamBuilder_setSharingMode = (ma_proc)AAudioStreamBuilder_setSharingMode; + pContext->aaudio.AAudioStreamBuilder_setFormat = (ma_proc)AAudioStreamBuilder_setFormat; + pContext->aaudio.AAudioStreamBuilder_setChannelCount = (ma_proc)AAudioStreamBuilder_setChannelCount; + pContext->aaudio.AAudioStreamBuilder_setSampleRate = (ma_proc)AAudioStreamBuilder_setSampleRate; + pContext->aaudio.AAudioStreamBuilder_setBufferCapacityInFrames = (ma_proc)AAudioStreamBuilder_setBufferCapacityInFrames; + pContext->aaudio.AAudioStreamBuilder_setFramesPerDataCallback = (ma_proc)AAudioStreamBuilder_setFramesPerDataCallback; + pContext->aaudio.AAudioStreamBuilder_setDataCallback = (ma_proc)AAudioStreamBuilder_setDataCallback; + pContext->aaudio.AAudioStreamBuilder_setErrorCallback = (ma_proc)AAudioStreamBuilder_setErrorCallback; + pContext->aaudio.AAudioStreamBuilder_setPerformanceMode = (ma_proc)AAudioStreamBuilder_setPerformanceMode; + pContext->aaudio.AAudioStreamBuilder_setUsage = (ma_proc)AAudioStreamBuilder_setUsage; + pContext->aaudio.AAudioStreamBuilder_setContentType = (ma_proc)AAudioStreamBuilder_setContentType; + pContext->aaudio.AAudioStreamBuilder_setInputPreset = (ma_proc)AAudioStreamBuilder_setInputPreset; + #if defined(__ANDROID_API__) && __ANDROID_API__ >= 29 + pContext->aaudio.AAudioStreamBuilder_setAllowedCapturePolicy = (ma_proc)AAudioStreamBuilder_setAllowedCapturePolicy; + #endif + pContext->aaudio.AAudioStreamBuilder_openStream = (ma_proc)AAudioStreamBuilder_openStream; + pContext->aaudio.AAudioStream_close = (ma_proc)AAudioStream_close; + pContext->aaudio.AAudioStream_getState = (ma_proc)AAudioStream_getState; + pContext->aaudio.AAudioStream_waitForStateChange = (ma_proc)AAudioStream_waitForStateChange; + pContext->aaudio.AAudioStream_getFormat = (ma_proc)AAudioStream_getFormat; + pContext->aaudio.AAudioStream_getChannelCount = (ma_proc)AAudioStream_getChannelCount; + pContext->aaudio.AAudioStream_getSampleRate = (ma_proc)AAudioStream_getSampleRate; + pContext->aaudio.AAudioStream_getBufferCapacityInFrames = (ma_proc)AAudioStream_getBufferCapacityInFrames; + pContext->aaudio.AAudioStream_getFramesPerDataCallback = (ma_proc)AAudioStream_getFramesPerDataCallback; + pContext->aaudio.AAudioStream_getFramesPerBurst = (ma_proc)AAudioStream_getFramesPerBurst; + pContext->aaudio.AAudioStream_requestStart = (ma_proc)AAudioStream_requestStart; + pContext->aaudio.AAudioStream_requestStop = (ma_proc)AAudioStream_requestStop; +#endif pCallbacks->onContextInit = ma_context_init__aaudio; pCallbacks->onContextUninit = ma_context_uninit__aaudio; @@ -38343,6 +38698,7 @@ static ma_result ma_context_init__aaudio(ma_context* pContext, const ma_context_ static ma_result ma_job_process__device__aaudio_reroute(ma_job* pJob) { + ma_result result; ma_device* pDevice; MA_ASSERT(pJob != NULL); @@ -38351,7 +38707,18 @@ static ma_result ma_job_process__device__aaudio_reroute(ma_job* pJob) MA_ASSERT(pDevice != NULL); /* Here is where we need to reroute the device. To do this we need to uninitialize the stream and reinitialize it. */ - return ma_device_reinit__aaudio(pDevice, (ma_device_type)pJob->data.device.aaudio.reroute.deviceType); + result = ma_device_reinit__aaudio(pDevice, (ma_device_type)pJob->data.device.aaudio.reroute.deviceType); + if (result != MA_SUCCESS) { + /* + Getting here means we failed to reroute the device. The best thing I can think of here is to + just stop the device. + */ + ma_log_post(ma_device_get_log(pDevice), MA_LOG_LEVEL_ERROR, "[AAudio] Stopping device due to reroute failure."); + ma_device_stop(pDevice); + return result; + } + + return MA_SUCCESS; } #else /* Getting here means there is no AAudio backend so we need a no-op job implementation. */ @@ -39637,6 +40004,10 @@ Web Audio Backend #if (__EMSCRIPTEN_major__ > 3) || (__EMSCRIPTEN_major__ == 3 && (__EMSCRIPTEN_minor__ > 1 || (__EMSCRIPTEN_minor__ == 1 && __EMSCRIPTEN_tiny__ >= 32))) #include #define MA_SUPPORT_AUDIO_WORKLETS + + #if (__EMSCRIPTEN_major__ > 3) || (__EMSCRIPTEN_major__ == 3 && (__EMSCRIPTEN_minor__ > 1 || (__EMSCRIPTEN_minor__ == 1 && __EMSCRIPTEN_tiny__ >= 70))) + #define MA_SUPPORT_AUDIO_WORKLETS_VARIABLE_BUFFER_SIZE + #endif #endif /* @@ -39648,7 +40019,7 @@ TODO: Version 0.12: Swap this logic around so that AudioWorklets are used by def /* The thread stack size must be a multiple of 16. */ #ifndef MA_AUDIO_WORKLETS_THREAD_STACK_SIZE -#define MA_AUDIO_WORKLETS_THREAD_STACK_SIZE 16384 +#define MA_AUDIO_WORKLETS_THREAD_STACK_SIZE 131072 #endif #if defined(MA_USE_AUDIO_WORKLETS) @@ -39774,12 +40145,14 @@ static ma_result ma_device_uninit__webaudio(ma_device* pDevice) #if defined(MA_USE_AUDIO_WORKLETS) { EM_ASM({ - var device = miniaudio.get_device_by_index($0); + var device = window.miniaudio.get_device_by_index($0); if (device.streamNode !== undefined) { device.streamNode.disconnect(); device.streamNode = undefined; } + + device.pDevice = undefined; }, pDevice->webaudio.deviceIndex); emscripten_destroy_web_audio_node(pDevice->webaudio.audioWorklet); @@ -39789,7 +40162,7 @@ static ma_result ma_device_uninit__webaudio(ma_device* pDevice) #else { EM_ASM({ - var device = miniaudio.get_device_by_index($0); + var device = window.miniaudio.get_device_by_index($0); /* Make sure all nodes are disconnected and marked for collection. */ if (device.scriptNode !== undefined) { @@ -39816,7 +40189,7 @@ static ma_result ma_device_uninit__webaudio(ma_device* pDevice) /* Clean up the device on the JS side. */ EM_ASM({ - miniaudio.untrack_device_by_index($0); + window.miniaudio.untrack_device_by_index($0); }, pDevice->webaudio.deviceIndex); ma_free(pDevice->webaudio.pIntermediaryBuffer, &pDevice->pContext->allocationCallbacks); @@ -39882,10 +40255,6 @@ static EM_BOOL ma_audio_worklet_process_callback__webaudio(int inputCount, const (void)paramCount; (void)pParams; - if (ma_device_get_state(pDevice) != ma_device_state_started) { - return EM_TRUE; - } - /* The Emscripten documentation says that it'll always be 128 frames being passed in. Hard coding it like that feels like a very bad idea to me. Even if it's hard coded in the backend, the API and documentation should always refer @@ -39894,7 +40263,20 @@ static EM_BOOL ma_audio_worklet_process_callback__webaudio(int inputCount, const Unfortunately the audio data is not interleaved so we'll need to convert it before we give the data to miniaudio for further processing. */ - frameCount = 128; + if (pDevice->type == ma_device_type_playback) { + frameCount = pDevice->playback.internalPeriodSizeInFrames; + } else { + frameCount = pDevice->capture.internalPeriodSizeInFrames; + } + + if (ma_device_get_state(pDevice) != ma_device_state_started) { + /* Fill the output buffer with zero to avoid a noise sound */ + for (int i = 0; i < outputCount; i += 1) { + MA_ZERO_MEMORY(pOutputs[i].data, pOutputs[i].numberOfChannels * frameCount * sizeof(float)); + } + + return EM_TRUE; + } if (inputCount > 0) { /* Input data needs to be interleaved before we hand it to the client. */ @@ -39949,7 +40331,7 @@ static void ma_audio_worklet_processor_created__webaudio(EMSCRIPTEN_WEBAUDIO_T a count from MediaStreamAudioSourceNode (what we use for capture)? The only way to have control is to configure an output channel count on the capture side. This is slightly confusing for capture mode because intuitively you wouldn't actually connect an output to an input-only node, but this is what we'll have to do in order to have - proper control over the channel count. In the capture case, we'll have to output silence to it's output node. + proper control over the channel count. In the capture case, we'll have to output silence to its output node. */ if (pParameters->pConfig->deviceType == ma_device_type_capture) { channels = (int)((pParameters->pDescriptorCapture->channels > 0) ? pParameters->pDescriptorCapture->channels : MA_DEFAULT_CHANNELS); @@ -39972,7 +40354,15 @@ static void ma_audio_worklet_processor_created__webaudio(EMSCRIPTEN_WEBAUDIO_T a Now that we know the channel count to use we can allocate the intermediary buffer. The intermediary buffer is used for interleaving and deinterleaving. */ - intermediaryBufferSizeInFrames = 128; + #if defined(MA_SUPPORT_AUDIO_WORKLETS_VARIABLE_BUFFER_SIZE) + { + intermediaryBufferSizeInFrames = (size_t)emscripten_audio_context_quantum_size(audioContext); + } + #else + { + intermediaryBufferSizeInFrames = 128; + } + #endif pParameters->pDevice->webaudio.pIntermediaryBuffer = (float*)ma_malloc(intermediaryBufferSizeInFrames * (ma_uint32)channels * sizeof(float), &pParameters->pDevice->pContext->allocationCallbacks); if (pParameters->pDevice->webaudio.pIntermediaryBuffer == NULL) { @@ -39981,7 +40371,6 @@ static void ma_audio_worklet_processor_created__webaudio(EMSCRIPTEN_WEBAUDIO_T a return; } - pParameters->pDevice->webaudio.audioWorklet = emscripten_create_wasm_audio_worklet_node(audioContext, "miniaudio", &audioWorkletOptions, &ma_audio_worklet_process_callback__webaudio, pParameters->pDevice); /* With the audio worklet initialized we can now attach it to the graph. */ @@ -40121,7 +40510,6 @@ static ma_result ma_device_init__webaudio(ma_device* pDevice, const ma_device_co /* It's not clear if this can return an error. None of the tests in the Emscripten repository check for this, so neither am I for now. */ pDevice->webaudio.audioContext = emscripten_create_audio_context(&audioContextAttributes); - /* With the context created we can now create the worklet. We can only have a single worklet per audio context which means we'll need to craft this appropriately to handle duplex devices correctly. @@ -40170,11 +40558,12 @@ static ma_result ma_device_init__webaudio(ma_device* pDevice, const ma_device_co /* We need to add an entry to the miniaudio.devices list on the JS side so we can do some JS/C interop. */ pDevice->webaudio.deviceIndex = EM_ASM_INT({ - return miniaudio.track_device({ + return window.miniaudio.track_device({ webaudio: emscriptenGetAudioObject($0), - state: 1 /* 1 = ma_device_state_stopped */ + state: 1, /* 1 = ma_device_state_stopped */ + pDevice: $1 }); - }, pDevice->webaudio.audioContext); + }, pDevice->webaudio.audioContext, pDevice); return MA_SUCCESS; } @@ -40186,7 +40575,7 @@ static ma_result ma_device_init__webaudio(ma_device* pDevice, const ma_device_co ma_uint32 sampleRate; ma_uint32 periodSizeInFrames; - /* The channel count will depend on the device type. If it's a capture, use it's, otherwise use the playback side. */ + /* The channel count will depend on the device type. If it's a capture, use its, otherwise use the playback side. */ if (pConfig->deviceType == ma_device_type_capture) { channels = (pDescriptorCapture->channels > 0) ? pDescriptorCapture->channels : MA_DEFAULT_CHANNELS; } else { @@ -40255,11 +40644,11 @@ static ma_result ma_device_init__webaudio(ma_device* pDevice, const ma_device_co /* The node processing callback. */ device.scriptNode.onaudioprocess = function(e) { if (device.intermediaryBufferView == null || device.intermediaryBufferView.length == 0) { - device.intermediaryBufferView = new Float32Array(Module.HEAPF32.buffer, pIntermediaryBuffer, bufferSize * channels); + device.intermediaryBufferView = new Float32Array(HEAPF32.buffer, pIntermediaryBuffer, bufferSize * channels); } /* Do the capture side first. */ - if (deviceType == miniaudio.device_type.capture || deviceType == miniaudio.device_type.duplex) { + if (deviceType == window.miniaudio.device_type.capture || deviceType == window.miniaudio.device_type.duplex) { /* The data must be interleaved before being processed miniaudio. */ for (var iChannel = 0; iChannel < channels; iChannel += 1) { var inputBuffer = e.inputBuffer.getChannelData(iChannel); @@ -40273,7 +40662,7 @@ static ma_result ma_device_init__webaudio(ma_device* pDevice, const ma_device_co _ma_device_process_pcm_frames_capture__webaudio(pDevice, bufferSize, pIntermediaryBuffer); } - if (deviceType == miniaudio.device_type.playback || deviceType == miniaudio.device_type.duplex) { + if (deviceType == window.miniaudio.device_type.playback || deviceType == window.miniaudio.device_type.duplex) { _ma_device_process_pcm_frames_playback__webaudio(pDevice, bufferSize, pIntermediaryBuffer); for (var iChannel = 0; iChannel < e.outputBuffer.numberOfChannels; ++iChannel) { @@ -40293,7 +40682,7 @@ static ma_result ma_device_init__webaudio(ma_device* pDevice, const ma_device_co }; /* Now we need to connect our node to the graph. */ - if (deviceType == miniaudio.device_type.capture || deviceType == miniaudio.device_type.duplex) { + if (deviceType == window.miniaudio.device_type.capture || deviceType == window.miniaudio.device_type.duplex) { navigator.mediaDevices.getUserMedia({audio:true, video:false}) .then(function(stream) { device.streamNode = device.webaudio.createMediaStreamSource(stream); @@ -40305,13 +40694,13 @@ static ma_result ma_device_init__webaudio(ma_device* pDevice, const ma_device_co }); } - if (deviceType == miniaudio.device_type.playback) { + if (deviceType == window.miniaudio.device_type.playback) { device.scriptNode.connect(device.webaudio.destination); } device.pDevice = pDevice; - return miniaudio.track_device(device); + return window.miniaudio.track_device(device); }, pConfig->deviceType, channels, sampleRate, periodSizeInFrames, pDevice->webaudio.pIntermediaryBuffer, pDevice); if (deviceIndex < 0) { @@ -40321,7 +40710,7 @@ static ma_result ma_device_init__webaudio(ma_device* pDevice, const ma_device_co pDevice->webaudio.deviceIndex = deviceIndex; /* Grab the sample rate from the audio context directly. */ - sampleRate = (ma_uint32)EM_ASM_INT({ return miniaudio.get_device_by_index($0).webaudio.sampleRate; }, deviceIndex); + sampleRate = (ma_uint32)EM_ASM_INT({ return window.miniaudio.get_device_by_index($0).webaudio.sampleRate; }, deviceIndex); if (pDescriptorCapture != NULL) { pDescriptorCapture->format = ma_format_f32; @@ -40351,9 +40740,9 @@ static ma_result ma_device_start__webaudio(ma_device* pDevice) MA_ASSERT(pDevice != NULL); EM_ASM({ - var device = miniaudio.get_device_by_index($0); + var device = window.miniaudio.get_device_by_index($0); device.webaudio.resume(); - device.state = miniaudio.device_state.started; + device.state = window.miniaudio.device_state.started; }, pDevice->webaudio.deviceIndex); return MA_SUCCESS; @@ -40373,9 +40762,9 @@ static ma_result ma_device_stop__webaudio(ma_device* pDevice) do any kind of explicit draining. */ EM_ASM({ - var device = miniaudio.get_device_by_index($0); + var device = window.miniaudio.get_device_by_index($0); device.webaudio.suspend(); - device.state = miniaudio.device_state.stopped; + device.state = window.miniaudio.device_state.stopped; }, pDevice->webaudio.deviceIndex); ma_device__on_notification_stopped(pDevice); @@ -40393,6 +40782,10 @@ static ma_result ma_context_uninit__webaudio(ma_context* pContext) /* Remove the global miniaudio object from window if there are no more references to it. */ EM_ASM({ if (typeof(window.miniaudio) !== 'undefined') { + miniaudio.unlock_event_types.map(function(event_type) { + document.removeEventListener(event_type, miniaudio.unlock, true); + }); + window.miniaudio.referenceCount -= 1; if (window.miniaudio.referenceCount === 0) { delete window.miniaudio; @@ -40434,6 +40827,7 @@ static ma_result ma_context_init__webaudio(ma_context* pContext, const ma_contex window.miniaudio.device_state.started = $4; /* Device cache for mapping devices to indexes for JavaScript/C interop. */ + let miniaudio = window.miniaudio; miniaudio.devices = []; miniaudio.track_device = function(device) { @@ -40485,13 +40879,13 @@ static ma_result ma_context_init__webaudio(ma_context* pContext, const ma_contex var device = miniaudio.devices[i]; if (device != null && device.webaudio != null && - device.state === window.miniaudio.device_state.started) { + device.state === miniaudio.device_state.started) { device.webaudio.resume().then(() => { - Module._ma_device__on_notification_unlocked(device.pDevice); - }, - (error) => {console.error("Failed to resume audiocontext", error); - }); + _ma_device__on_notification_unlocked(device.pDevice); + }, + (error) => {console.error("Failed to resume audiocontext", error); + }); } } miniaudio.unlock_event_types.map(function(event_type) { @@ -40527,7 +40921,7 @@ static ma_result ma_context_init__webaudio(ma_context* pContext, const ma_contex return MA_SUCCESS; } -#endif /* Web Audio */ +#endif /* MA_HAS_WEBAUDIO */ @@ -40806,7 +41200,7 @@ MA_API ma_result ma_device_post_init(ma_device* pDevice, ma_device_type deviceTy ma_device_info deviceInfo; if (deviceType == ma_device_type_capture || deviceType == ma_device_type_duplex || deviceType == ma_device_type_loopback) { - result = ma_device_get_info(pDevice, (deviceType == ma_device_type_loopback) ? ma_device_type_playback : ma_device_type_capture, &deviceInfo); + result = ma_device_get_info(pDevice, ma_device_type_capture, &deviceInfo); if (result == MA_SUCCESS) { ma_strncpy_s(pDevice->capture.name, sizeof(pDevice->capture.name), deviceInfo.name, (size_t)-1); } else { @@ -40853,7 +41247,7 @@ static ma_thread_result MA_THREADCALL ma_worker_thread(void* pData) #endif /* - When the device is being initialized it's initial state is set to ma_device_state_uninitialized. Before returning from + When the device is being initialized its initial state is set to ma_device_state_uninitialized. Before returning from ma_device_init(), the state needs to be set to something valid. In miniaudio the device's default state immediately after initialization is stopped, so therefore we need to mark the device as such. miniaudio will wait on the worker thread to signal an event to know when the worker thread is ready for action. @@ -41198,6 +41592,24 @@ MA_API ma_result ma_device_job_thread_next(ma_device_job_thread* pJobThread, ma_ } +MA_API ma_bool32 ma_device_id_equal(const ma_device_id* pA, const ma_device_id* pB) +{ + size_t i; + + if (pA == NULL || pB == NULL) { + return MA_FALSE; + } + + for (i = 0; i < sizeof(ma_device_id); i += 1) { + if (((const char*)pA)[i] != ((const char*)pB)[i]) { + return MA_FALSE; + } + } + + return MA_TRUE; +} + + MA_API ma_context_config ma_context_config_init(void) { @@ -41971,7 +42383,7 @@ MA_API ma_result ma_device_init(ma_context* pContext, const ma_device_config* pC return result; } - /* Wait for the worker thread to put the device into it's stopped state for real. */ + /* Wait for the worker thread to put the device into its stopped state for real. */ ma_event_wait(&pDevice->stopEvent); MA_ASSERT(ma_device_get_state(pDevice) == ma_device_state_stopped); } else { @@ -41997,7 +42409,7 @@ MA_API ma_result ma_device_init(ma_context* pContext, const ma_device_config* pC ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_INFO, "[%s]\n", ma_get_backend_name(pDevice->pContext->backend)); if (pDevice->type == ma_device_type_capture || pDevice->type == ma_device_type_duplex || pDevice->type == ma_device_type_loopback) { char name[MA_MAX_DEVICE_NAME_LENGTH + 1]; - ma_device_get_name(pDevice, (pDevice->type == ma_device_type_loopback) ? ma_device_type_playback : ma_device_type_capture, name, sizeof(name), NULL); + ma_device_get_name(pDevice, ma_device_type_capture, name, sizeof(name), NULL); ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_INFO, " %s (%s)\n", name, "Capture"); ma_log_postf(ma_device_get_log(pDevice), MA_LOG_LEVEL_INFO, " Format: %s -> %s\n", ma_get_format_name(pDevice->capture.internalFormat), ma_get_format_name(pDevice->capture.format)); @@ -42250,6 +42662,17 @@ MA_API ma_result ma_device_get_info(ma_device* pDevice, ma_device_type type, ma_ if (type == ma_device_type_playback) { return ma_context_get_device_info(pDevice->pContext, type, pDevice->playback.pID, pDeviceInfo); } else { + /* + Here we're getting the capture side, which is the branch we'll be entering for a loopback + device, since loopback is capturing. However, if the device is using the default device ID, + it won't get the correct information because it'll think we're asking for the default + capture device, where in fact for loopback we want the default *playback* device. We'll do + a bit of a hack here to make sure we get the correct info. + */ + if (pDevice->type == ma_device_type_loopback && pDevice->capture.pID == NULL) { + type = ma_device_type_playback; + } + return ma_context_get_device_info(pDevice->pContext, type, pDevice->capture.pID, pDeviceInfo); } } @@ -42311,6 +42734,15 @@ MA_API ma_result ma_device_start(ma_device* pDevice) ma_mutex_lock(&pDevice->startStopLock); { + /* + We need to check again if the device is in a started state because it's possible for one thread to have started the device + while another was waiting on the mutex. + */ + if (ma_device_get_state(pDevice) == ma_device_state_started) { + ma_mutex_unlock(&pDevice->startStopLock); + return MA_SUCCESS; /* Already started. */ + } + /* Starting and stopping are wrapped in a mutex which means we can assert that the device is in a stopped or paused state. */ MA_ASSERT(ma_device_get_state(pDevice) == ma_device_state_stopped); @@ -42371,6 +42803,15 @@ MA_API ma_result ma_device_stop(ma_device* pDevice) ma_mutex_lock(&pDevice->startStopLock); { + /* + We need to check again if the device is in a stopped state because it's possible for one thread to have stopped the device + while another was waiting on the mutex. + */ + if (ma_device_get_state(pDevice) == ma_device_state_stopped) { + ma_mutex_unlock(&pDevice->startStopLock); + return MA_SUCCESS; /* Already stopped. */ + } + /* Starting and stopping are wrapped in a mutex which means we can assert that the device is in a started or paused state. */ MA_ASSERT(ma_device_get_state(pDevice) == ma_device_state_started); @@ -42389,7 +42830,7 @@ MA_API ma_result ma_device_stop(ma_device* pDevice) } else { /* Synchronous backends. The stop callback is always called from the worker thread. Do not call the stop callback here. If - the backend is implementing it's own audio thread loop we'll need to wake it up if required. Note that we need to make + the backend is implementing its own audio thread loop we'll need to wake it up if required. Note that we need to make sure the state of the device is *not* playing right now, which it shouldn't be since we set it above. This is super important though, so I'm asserting it here as well for extra safety in case we accidentally change something later. */ @@ -42506,6 +42947,15 @@ MA_API ma_result ma_device_handle_backend_data_callback(ma_device* pDevice, void return MA_INVALID_ARGS; } + /* + There is an assert deeper in the code that checks that frameCount > 0. Since this is a public facing + API we'll need to check for that here. I've had reports that AAudio can sometimes post a frame count + of 0. + */ + if (frameCount == 0) { + return MA_INVALID_ARGS; + } + if (pDevice->type == ma_device_type_duplex) { if (pInput != NULL) { ma_device__handle_duplex_callback_capture(pDevice, frameCount, pInput, &pDevice->duplexRB.rb); @@ -42580,7 +43030,7 @@ MA_API ma_uint32 ma_calculate_buffer_size_in_milliseconds_from_frames(ma_uint32 return 0; } - return bufferSizeInFrames*1000 / sampleRate; + return (bufferSizeInFrames*1000 + (sampleRate - 1)) / sampleRate; } MA_API ma_uint32 ma_calculate_buffer_size_in_frames_from_milliseconds(ma_uint32 bufferSizeInMilliseconds, ma_uint32 sampleRate) @@ -47408,7 +47858,7 @@ static ma_result ma_bpf_get_heap_layout(const ma_bpf_config* pConfig, ma_bpf_hea return MA_INVALID_ARGS; } - bpf2Count = pConfig->channels / 2; + bpf2Count = pConfig->order / 2; pHeapLayout->sizeInBytes = 0; @@ -49466,7 +49916,7 @@ MA_API float ma_fader_get_current_volume(const ma_fader* pFader) } else if ((ma_uint64)pFader->cursorInFrames >= pFader->lengthInFrames) { /* Safe case because the < 0 case was checked above. */ return pFader->volumeEnd; } else { - /* The cursor is somewhere inside the fading period. We can figure this out with a simple linear interpoluation between volumeBeg and volumeEnd based on our cursor position. */ + /* The cursor is somewhere inside the fading period. We can figure this out with a simple linear interpolation between volumeBeg and volumeEnd based on our cursor position. */ return ma_mix_f32_fast(pFader->volumeBeg, pFader->volumeEnd, (ma_uint32)pFader->cursorInFrames / (float)((ma_uint32)pFader->lengthInFrames)); /* Safe cast to uint32 because we clamp it in ma_fader_process_pcm_frames(). */ } } @@ -49689,9 +50139,9 @@ static float ma_attenuation_exponential(float distance, float minDistance, float /* -Dopper Effect calculation taken from the OpenAL spec, with two main differences: +Doppler Effect calculation taken from the OpenAL spec, with two main differences: - 1) The source to listener vector will have already been calcualted at an earlier step so we can + 1) The source to listener vector will have already been calculated at an earlier step so we can just use that directly. We need only the position of the source relative to the origin. 2) We don't scale by a frequency because we actually just want the ratio which we'll plug straight @@ -49730,7 +50180,7 @@ static void ma_get_default_channel_map_for_spatializer(ma_channel* pChannelMap, Special case for stereo. Want to default the left and right speakers to side left and side right so that they're facing directly down the X axis rather than slightly forward. Not doing this will result in sounds being quieter when behind the listener. This might - actually be good for some scenerios, but I don't think it's an appropriate default because + actually be good for some scenarios, but I don't think it's an appropriate default because it can be a bit unexpected. */ if (channelCount == 2) { @@ -50064,7 +50514,7 @@ MA_API ma_spatializer_config ma_spatializer_config_init(ma_uint32 channelsIn, ma config.maxDistance = MA_FLT_MAX; config.rolloff = 1; config.coneInnerAngleInRadians = 6.283185f; /* 360 degrees. */ - config.coneOuterAngleInRadians = 6.283185f; /* 360 degress. */ + config.coneOuterAngleInRadians = 6.283185f; /* 360 degrees. */ config.coneOuterGain = 0.0f; config.dopplerFactor = 1; config.directionalAttenuationFactor = 1; @@ -50298,7 +50748,7 @@ static float ma_calculate_angular_gain(ma_vec3f dirA, ma_vec3f dirB, float coneI To do cone attenuation, I'm just using the same math that we'd use to implement a basic spotlight in OpenGL. We just need to get the direction from the source to the listener and then do a dot product against that and the direction of the spotlight. Then we just compare that dot product against the cosine of the inner and outer - angles. If the dot product is greater than the the outer angle, we just use coneOuterGain. If it's less than + angles. If the dot product is greater than the outer angle, we just use coneOuterGain. If it's less than the inner angle, we just use a gain of 1. Otherwise we linearly interpolate between 1 and coneOuterGain. */ if (coneInnerAngleInRadians < 6.283185f) { @@ -50368,7 +50818,7 @@ MA_API ma_result ma_spatializer_process_pcm_frames(ma_spatializer* pSpatializer, ma_vec3f relativePosNormalized; ma_vec3f relativePos; /* The position relative to the listener. */ ma_vec3f relativeDir; /* The direction of the sound, relative to the listener. */ - ma_vec3f listenerVel; /* The volocity of the listener. For doppler pitch calculation. */ + ma_vec3f listenerVel; /* The velocity of the listener. For doppler pitch calculation. */ float speedOfSound; float distance = 0; float gain = 1; @@ -50449,11 +50899,11 @@ MA_API ma_result ma_spatializer_process_pcm_frames(ma_spatializer* pSpatializer, To do cone attenuation, I'm just using the same math that we'd use to implement a basic spotlight in OpenGL. We just need to get the direction from the source to the listener and then do a dot product against that and the direction of the spotlight. Then we just compare that dot product against the cosine of the inner and outer - angles. If the dot product is greater than the the outer angle, we just use coneOuterGain. If it's less than + angles. If the dot product is greater than the outer angle, we just use coneOuterGain. If it's less than the inner angle, we just use a gain of 1. Otherwise we linearly interpolate between 1 and coneOuterGain. */ if (distance > 0) { - /* Source anglular gain. */ + /* Source angular gain. */ float spatializerConeInnerAngle; float spatializerConeOuterAngle; float spatializerConeOuterGain; @@ -50965,7 +51415,7 @@ MA_API void ma_spatializer_get_relative_position_and_direction(const ma_spatiali listenerDirection = ma_spatializer_listener_get_direction(pListener); /* - We need to calcualte the right vector from our forward and up vectors. This is done with + We need to calculate the right vector from our forward and up vectors. This is done with a cross product. */ axisZ = ma_vec3f_normalize(listenerDirection); /* Normalization required here because we can't trust the caller. */ @@ -51111,7 +51561,7 @@ static ma_result ma_linear_resampler_set_rate_internal(ma_linear_resampler* pRes lpfConfig = ma_lpf_config_init(pResampler->config.format, pResampler->config.channels, lpfSampleRate, lpfCutoffFrequency, pResampler->config.lpfOrder); /* - If the resampler is alreay initialized we don't want to do a fresh initialization of the low-pass filter because it will result in the cached frames + If the resampler is already initialized we don't want to do a fresh initialization of the low-pass filter because it will result in the cached frames getting cleared. Instead we re-initialize the filter which will maintain any cached frames. */ if (isResamplerAlreadyInitialized) { @@ -51806,7 +52256,7 @@ MA_API ma_result ma_linear_resampler_get_expected_output_frame_count(const ma_li preliminaryInputFrameCount = (pResampler->inTimeInt + outputFrameCount*pResampler->inAdvanceInt ) + preliminaryInputFrameCountFromFrac; /* - If the total number of *whole* input frames that would be required to generate our preliminary output frame count is greather than + If the total number of *whole* input frames that would be required to generate our preliminary output frame count is greater than the amount of whole input frames we have available as input we need to *not* add an extra output frame as there won't be enough data to actually process. Otherwise we need to add the extra output frame. */ @@ -51844,7 +52294,7 @@ MA_API ma_result ma_linear_resampler_reset(ma_linear_resampler* pResampler) } } - /* The low pass filter needs to have it's cache reset. */ + /* The low pass filter needs to have its cache reset. */ ma_lpf_clear_cache(&pResampler->lpf); return MA_SUCCESS; @@ -52361,19 +52811,19 @@ static float ma_calculate_channel_position_rectangular_weight(ma_channel channel of contribution to apply to the side/left and back/left speakers, however, is a bit more complicated. Imagine the front/left speaker as emitting audio from two planes - the front plane and the left plane. You can think of the front/left - speaker emitting half of it's total volume from the front, and the other half from the left. Since part of it's volume is being emitted + speaker emitting half of its total volume from the front, and the other half from the left. Since part of its volume is being emitted from the left side, and the side/left and back/left channels also emit audio from the left plane, one would expect that they would receive some amount of contribution from front/left speaker. The amount of contribution depends on how many planes are shared between the two speakers. Note that in the examples below I've added a top/front/left speaker as an example just to show how the math works across 3 spatial dimensions. The first thing to do is figure out how each speaker's volume is spread over each of plane: - - front/left: 2 planes (front and left) = 1/2 = half it's total volume on each plane + - front/left: 2 planes (front and left) = 1/2 = half its total volume on each plane - side/left: 1 plane (left only) = 1/1 = entire volume from left plane - - back/left: 2 planes (back and left) = 1/2 = half it's total volume on each plane - - top/front/left: 3 planes (top, front and left) = 1/3 = one third it's total volume on each plane + - back/left: 2 planes (back and left) = 1/2 = half its total volume on each plane + - top/front/left: 3 planes (top, front and left) = 1/3 = one third its total volume on each plane - The amount of volume each channel contributes to each of it's planes is what controls how much it is willing to given and take to other + The amount of volume each channel contributes to each of its planes is what controls how much it is willing to given and take to other channels on the same plane. The volume that is willing to the given by one channel is multiplied by the volume that is willing to be taken by the other to produce the final contribution. */ @@ -52484,12 +52934,7 @@ static ma_channel_conversion_path ma_channel_map_get_conversion_path(const ma_ch ma_uint32 iChannelIn; ma_bool32 areAllChannelPositionsPresent = MA_TRUE; for (iChannelIn = 0; iChannelIn < channelsIn; ++iChannelIn) { - ma_bool32 isInputChannelPositionInOutput = MA_FALSE; - if (ma_channel_map_contains_channel_position(channelsOut, pChannelMapOut, ma_channel_map_get_channel(pChannelMapIn, channelsIn, iChannelIn))) { - isInputChannelPositionInOutput = MA_TRUE; - break; - } - + ma_bool32 isInputChannelPositionInOutput = ma_channel_map_contains_channel_position(channelsOut, pChannelMapOut, ma_channel_map_get_channel(pChannelMapIn, channelsIn, iChannelIn)); if (!isInputChannelPositionInOutput) { areAllChannelPositionsPresent = MA_FALSE; break; @@ -52516,8 +52961,8 @@ static ma_result ma_channel_map_build_shuffle_table(const ma_channel* pChannelMa } /* - When building the shuffle table we just do a 1:1 mapping based on the first occurance of a channel. If the - input channel has more than one occurance of a channel position, the second one will be ignored. + When building the shuffle table we just do a 1:1 mapping based on the first occurrence of a channel. If the + input channel has more than one occurrence of a channel position, the second one will be ignored. */ for (iChannelOut = 0; iChannelOut < channelCountOut; iChannelOut += 1) { ma_channel channelOut; @@ -54812,7 +55257,7 @@ static ma_result ma_data_converter_process_pcm_frames__channels_first(ma_data_co Before doing any processing we need to determine how many frames we should try processing this iteration, for both input and output. The resampler requires us to perform format and channel conversion before passing any data into it. If we get our input count wrong, we'll - end up peforming redundant pre-processing. This isn't the end of the world, but it does + end up performing redundant pre-processing. This isn't the end of the world, but it does result in some inefficiencies proportionate to how far our estimates are off. If the resampler has a means to calculate exactly how much we'll need, we'll use that. @@ -55982,7 +56427,7 @@ MA_API const char* ma_channel_position_to_string(ma_channel channel) case MA_CHANNEL_LFE : return "CHANNEL_LFE"; case MA_CHANNEL_BACK_LEFT : return "CHANNEL_BACK_LEFT"; case MA_CHANNEL_BACK_RIGHT : return "CHANNEL_BACK_RIGHT"; - case MA_CHANNEL_FRONT_LEFT_CENTER : return "CHANNEL_FRONT_LEFT_CENTER "; + case MA_CHANNEL_FRONT_LEFT_CENTER : return "CHANNEL_FRONT_LEFT_CENTER"; case MA_CHANNEL_FRONT_RIGHT_CENTER: return "CHANNEL_FRONT_RIGHT_CENTER"; case MA_CHANNEL_BACK_CENTER : return "CHANNEL_BACK_CENTER"; case MA_CHANNEL_SIDE_LEFT : return "CHANNEL_SIDE_LEFT"; @@ -56287,13 +56732,9 @@ MA_API ma_result ma_rb_commit_read(ma_rb* pRB, size_t sizeInBytes) newReadOffsetLoopFlag ^= 0x80000000; } - ma_atomic_exchange_32(&pRB->encodedReadOffset, ma_rb__construct_offset(newReadOffsetLoopFlag, newReadOffsetInBytes)); + ma_atomic_exchange_32(&pRB->encodedReadOffset, ma_rb__construct_offset(newReadOffsetInBytes, newReadOffsetLoopFlag)); - if (ma_rb_pointer_distance(pRB) == 0) { - return MA_AT_END; - } else { - return MA_SUCCESS; - } + return MA_SUCCESS; } MA_API ma_result ma_rb_acquire_write(ma_rb* pRB, size_t* pSizeInBytes, void** ppBufferOut) @@ -56373,13 +56814,9 @@ MA_API ma_result ma_rb_commit_write(ma_rb* pRB, size_t sizeInBytes) newWriteOffsetLoopFlag ^= 0x80000000; } - ma_atomic_exchange_32(&pRB->encodedWriteOffset, ma_rb__construct_offset(newWriteOffsetLoopFlag, newWriteOffsetInBytes)); + ma_atomic_exchange_32(&pRB->encodedWriteOffset, ma_rb__construct_offset(newWriteOffsetInBytes, newWriteOffsetLoopFlag)); - if (ma_rb_pointer_distance(pRB) == 0) { - return MA_AT_END; - } else { - return MA_SUCCESS; - } + return MA_SUCCESS; } MA_API ma_result ma_rb_seek_read(ma_rb* pRB, size_t offsetInBytes) @@ -56602,6 +57039,16 @@ static ma_result ma_pcm_rb_data_source__on_read(ma_data_source* pDataSource, voi totalFramesRead += mappedFrameCount; } + /* + There is no notion of an "end" in a ring buffer. If we didn't have enough data to fill the requested frame + count we'll need to pad with silence. If we don't do this, totalFramesRead might equal 0 which will result + in the data source layer at a higher level translating this to MA_AT_END which is incorrect for a ring buffer. + */ + if (totalFramesRead < frameCount) { + ma_silence_pcm_frames(ma_offset_pcm_frames_ptr(pFramesOut, totalFramesRead, pRB->format, pRB->channels), (frameCount - totalFramesRead), pRB->format, pRB->channels); + totalFramesRead = frameCount; + } + *pFramesRead = totalFramesRead; return MA_SUCCESS; } @@ -57150,6 +57597,10 @@ MA_API ma_result ma_data_source_init(const ma_data_source_config* pConfig, ma_da return MA_INVALID_ARGS; } + if (pConfig->vtable == NULL) { + return MA_INVALID_ARGS; + } + pDataSourceBase->vtable = pConfig->vtable; pDataSourceBase->rangeBegInFrames = MA_DATA_SOURCE_DEFAULT_RANGE_BEG; pDataSourceBase->rangeEndInFrames = MA_DATA_SOURCE_DEFAULT_RANGE_END; @@ -57200,6 +57651,58 @@ static ma_result ma_data_source_resolve_current(ma_data_source* pDataSource, ma_ return MA_SUCCESS; } +static ma_result ma_data_source_read_pcm_frames_from_backend(ma_data_source* pDataSource, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead) +{ + ma_data_source_base* pDataSourceBase = (ma_data_source_base*)pDataSource; + + MA_ASSERT(pDataSourceBase != NULL); + MA_ASSERT(pDataSourceBase->vtable != NULL); + MA_ASSERT(pDataSourceBase->vtable->onRead != NULL); + MA_ASSERT(pFramesRead != NULL); + + if (pFramesOut != NULL) { + return pDataSourceBase->vtable->onRead(pDataSourceBase, pFramesOut, frameCount, pFramesRead); + } else { + /* + No output buffer. Probably seeking forward. Read and discard. Can probably optimize this in terms of + onSeek and onGetCursor, but need to keep in mind that the data source may not implement these functions. + */ + ma_result result; + ma_uint64 framesRead; + ma_format format; + ma_uint32 channels; + ma_uint64 discardBufferCapInFrames; + ma_uint8 pDiscardBuffer[4096]; + + result = ma_data_source_get_data_format(pDataSource, &format, &channels, NULL, NULL, 0); + if (result != MA_SUCCESS) { + return result; + } + + discardBufferCapInFrames = sizeof(pDiscardBuffer) / ma_get_bytes_per_frame(format, channels); + + framesRead = 0; + while (framesRead < frameCount) { + ma_uint64 framesReadThisIteration = 0; + ma_uint64 framesToRead = frameCount - framesRead; + if (framesToRead > discardBufferCapInFrames) { + framesToRead = discardBufferCapInFrames; + } + + result = pDataSourceBase->vtable->onRead(pDataSourceBase, pDiscardBuffer, framesToRead, &framesReadThisIteration); + if (result != MA_SUCCESS) { + return result; + } + + framesRead += framesReadThisIteration; + } + + *pFramesRead = framesRead; + + return MA_SUCCESS; + } +} + static ma_result ma_data_source_read_pcm_frames_within_range(ma_data_source* pDataSource, void* pFramesOut, ma_uint64 frameCount, ma_uint64* pFramesRead) { ma_data_source_base* pDataSourceBase = (ma_data_source_base*)pDataSource; @@ -57215,9 +57718,11 @@ static ma_result ma_data_source_read_pcm_frames_within_range(ma_data_source* pDa return MA_INVALID_ARGS; } + MA_ASSERT(pDataSourceBase->vtable != NULL); + if ((pDataSourceBase->vtable->flags & MA_DATA_SOURCE_SELF_MANAGED_RANGE_AND_LOOP_POINT) != 0 || (pDataSourceBase->rangeEndInFrames == ~((ma_uint64)0) && (pDataSourceBase->loopEndInFrames == ~((ma_uint64)0) || loop == MA_FALSE))) { /* Either the data source is self-managing the range, or no range is set - just read like normal. The data source itself will tell us when the end is reached. */ - result = pDataSourceBase->vtable->onRead(pDataSourceBase, pFramesOut, frameCount, &framesRead); + result = ma_data_source_read_pcm_frames_from_backend(pDataSource, pFramesOut, frameCount, &framesRead); } else { /* Need to clamp to within the range. */ ma_uint64 relativeCursor; @@ -57226,7 +57731,7 @@ static ma_result ma_data_source_read_pcm_frames_within_range(ma_data_source* pDa result = ma_data_source_get_cursor_in_pcm_frames(pDataSourceBase, &relativeCursor); if (result != MA_SUCCESS) { /* Failed to retrieve the cursor. Cannot read within a range or loop points. Just read like normal - this may happen for things like noise data sources where it doesn't really matter. */ - result = pDataSourceBase->vtable->onRead(pDataSourceBase, pFramesOut, frameCount, &framesRead); + result = ma_data_source_read_pcm_frames_from_backend(pDataSource, pFramesOut, frameCount, &framesRead); } else { ma_uint64 rangeBeg; ma_uint64 rangeEnd; @@ -57254,7 +57759,7 @@ static ma_result ma_data_source_read_pcm_frames_within_range(ma_data_source* pDa MA_AT_END so the higher level function can know about it. */ if (frameCount > 0) { - result = pDataSourceBase->vtable->onRead(pDataSourceBase, pFramesOut, frameCount, &framesRead); + result = ma_data_source_read_pcm_frames_from_backend(pDataSource, pFramesOut, frameCount, &framesRead); } else { result = MA_AT_END; /* The cursor is sitting on the end of the range which means we're at the end. */ } @@ -57336,7 +57841,7 @@ MA_API ma_result ma_data_source_read_pcm_frames(ma_data_source* pDataSource, voi totalFramesProcessed += framesProcessed; /* - If we encounted an error from the read callback, make sure it's propagated to the caller. The caller may need to know whether or not MA_BUSY is returned which is + If we encountered an error from the read callback, make sure it's propagated to the caller. The caller may need to know whether or not MA_BUSY is returned which is not necessarily considered an error. */ if (result != MA_SUCCESS && result != MA_AT_END) { @@ -57427,7 +57932,7 @@ MA_API ma_result ma_data_source_seek_to_pcm_frame(ma_data_source* pDataSource, m ma_data_source_base* pDataSourceBase = (ma_data_source_base*)pDataSource; if (pDataSourceBase == NULL) { - return MA_SUCCESS; + return MA_INVALID_ARGS; } if (pDataSourceBase->vtable->onSeek == NULL) { @@ -57435,12 +57940,61 @@ MA_API ma_result ma_data_source_seek_to_pcm_frame(ma_data_source* pDataSource, m } if (frameIndex > pDataSourceBase->rangeEndInFrames) { - return MA_INVALID_OPERATION; /* Trying to seek to far forward. */ + return MA_INVALID_OPERATION; /* Trying to seek too far forward. */ } + MA_ASSERT(pDataSourceBase->vtable != NULL); + return pDataSourceBase->vtable->onSeek(pDataSource, pDataSourceBase->rangeBegInFrames + frameIndex); } +MA_API ma_result ma_data_source_seek_seconds(ma_data_source* pDataSource, float secondCount, float* pSecondsSeeked) +{ + ma_uint64 frameCount; + ma_uint64 framesSeeked = 0; + ma_uint32 sampleRate; + ma_result result; + + if (pDataSource == NULL) { + return MA_INVALID_ARGS; + } + + result = ma_data_source_get_data_format(pDataSource, NULL, NULL, &sampleRate, NULL, 0); + if (result != MA_SUCCESS) { + return result; + } + + /* We need PCM frames instead of seconds */ + frameCount = (ma_uint64)(secondCount * sampleRate); + + result = ma_data_source_seek_pcm_frames(pDataSource, frameCount, &framesSeeked); + + /* VC6 doesn't support division between unsigned 64-bit integer and floating point number. Signed integer needed. This shouldn't affect anything in practice */ + *pSecondsSeeked = (ma_int64)framesSeeked / (float)sampleRate; + return result; +} + +MA_API ma_result ma_data_source_seek_to_second(ma_data_source* pDataSource, float seekPointInSeconds) +{ + ma_uint64 frameIndex; + ma_uint32 sampleRate; + ma_result result; + + if (pDataSource == NULL) { + return MA_INVALID_ARGS; + } + + result = ma_data_source_get_data_format(pDataSource, NULL, NULL, &sampleRate, NULL, 0); + if (result != MA_SUCCESS) { + return result; + } + + /* We need PCM frames instead of seconds */ + frameIndex = (ma_uint64)(seekPointInSeconds * sampleRate); + + return ma_data_source_seek_to_pcm_frame(pDataSource, frameIndex); +} + MA_API ma_result ma_data_source_get_data_format(ma_data_source* pDataSource, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate, ma_channel* pChannelMap, size_t channelMapCap) { ma_data_source_base* pDataSourceBase = (ma_data_source_base*)pDataSource; @@ -57467,6 +58021,8 @@ MA_API ma_result ma_data_source_get_data_format(ma_data_source* pDataSource, ma_ return MA_INVALID_ARGS; } + MA_ASSERT(pDataSourceBase->vtable != NULL); + if (pDataSourceBase->vtable->onGetDataFormat == NULL) { return MA_NOT_IMPLEMENTED; } @@ -57507,6 +58063,8 @@ MA_API ma_result ma_data_source_get_cursor_in_pcm_frames(ma_data_source* pDataSo return MA_SUCCESS; } + MA_ASSERT(pDataSourceBase->vtable != NULL); + if (pDataSourceBase->vtable->onGetCursor == NULL) { return MA_NOT_IMPLEMENTED; } @@ -57540,6 +58098,8 @@ MA_API ma_result ma_data_source_get_length_in_pcm_frames(ma_data_source* pDataSo return MA_INVALID_ARGS; } + MA_ASSERT(pDataSourceBase->vtable != NULL); + /* If we have a range defined we'll use that to determine the length. This is one of rare times where we'll actually trust the caller. If they've set the range, I think it's mostly safe to @@ -57627,6 +58187,8 @@ MA_API ma_result ma_data_source_set_looping(ma_data_source* pDataSource, ma_bool ma_atomic_exchange_32(&pDataSourceBase->isLooping, isLooping); + MA_ASSERT(pDataSourceBase->vtable != NULL); + /* If there's no callback for this just treat it as a successful no-op. */ if (pDataSourceBase->vtable->onSetLooping == NULL) { return MA_SUCCESS; @@ -57664,7 +58226,7 @@ MA_API ma_result ma_data_source_set_range_in_pcm_frames(ma_data_source* pDataSou /* We may need to adjust the position of the cursor to ensure it's clamped to the range. Grab it now - so we can calculate it's absolute position before we change the range. + so we can calculate its absolute position before we change the range. */ result = ma_data_source_get_cursor_in_pcm_frames(pDataSource, &relativeCursor); if (result == MA_SUCCESS) { @@ -57698,7 +58260,7 @@ MA_API ma_result ma_data_source_set_range_in_pcm_frames(ma_data_source* pDataSou /* Seek to within range. Note that our seek positions here are relative to the new range. We don't want - do do this if we failed to retrieve the cursor earlier on because it probably means the data source + to do this if we failed to retrieve the cursor earlier on because it probably means the data source has no notion of a cursor. In practice the seek would probably fail (which we silently ignore), but I'm just not even going to attempt it. */ @@ -57717,6 +58279,13 @@ MA_API void ma_data_source_get_range_in_pcm_frames(const ma_data_source* pDataSo { const ma_data_source_base* pDataSourceBase = (const ma_data_source_base*)pDataSource; + if (pRangeBegInFrames != NULL) { + *pRangeBegInFrames = 0; + } + if (pRangeEndInFrames != NULL) { + *pRangeEndInFrames = 0; + } + if (pDataSource == NULL) { return; } @@ -57761,6 +58330,13 @@ MA_API void ma_data_source_get_loop_point_in_pcm_frames(const ma_data_source* pD { const ma_data_source_base* pDataSourceBase = (const ma_data_source_base*)pDataSource; + if (pLoopBegInFrames != NULL) { + *pLoopBegInFrames = 0; + } + if (pLoopEndInFrames != NULL) { + *pLoopEndInFrames = 0; + } + if (pDataSource == NULL) { return; } @@ -59155,7 +59731,7 @@ static ma_result ma_default_vfs_seek__win32(ma_vfs* pVFS, ma_vfs_file file, ma_i result = ma_SetFilePointerEx((HANDLE)file, liDistanceToMove, NULL, dwMoveMethod); } else if (ma_SetFilePointer != NULL) { /* No SetFilePointerEx() so restrict to 31 bits. */ - if (origin > 0x7FFFFFFF) { + if (offset > 0x7FFFFFFF) { return MA_OUT_OF_RANGE; } @@ -59365,7 +59941,7 @@ static ma_result ma_default_vfs_seek__stdio(ma_vfs* pVFS, ma_vfs_file file, ma_i result = _fseeki64((FILE*)file, offset, whence); #else /* No _fseeki64() so restrict to 31 bits. */ - if (origin > 0x7FFFFFFF) { + if (offset > 0x7FFFFFFF) { return MA_OUT_OF_RANGE; } @@ -59758,7 +60334,7 @@ extern "C" { #define MA_DR_WAV_XSTRINGIFY(x) MA_DR_WAV_STRINGIFY(x) #define MA_DR_WAV_VERSION_MAJOR 0 #define MA_DR_WAV_VERSION_MINOR 13 -#define MA_DR_WAV_VERSION_REVISION 13 +#define MA_DR_WAV_VERSION_REVISION 18 #define MA_DR_WAV_VERSION_STRING MA_DR_WAV_XSTRINGIFY(MA_DR_WAV_VERSION_MAJOR) "." MA_DR_WAV_XSTRINGIFY(MA_DR_WAV_VERSION_MINOR) "." MA_DR_WAV_XSTRINGIFY(MA_DR_WAV_VERSION_REVISION) #include #define MA_DR_WAVE_FORMAT_PCM 0x1 @@ -60178,7 +60754,7 @@ extern "C" { #define MA_DR_FLAC_XSTRINGIFY(x) MA_DR_FLAC_STRINGIFY(x) #define MA_DR_FLAC_VERSION_MAJOR 0 #define MA_DR_FLAC_VERSION_MINOR 12 -#define MA_DR_FLAC_VERSION_REVISION 42 +#define MA_DR_FLAC_VERSION_REVISION 43 #define MA_DR_FLAC_VERSION_STRING MA_DR_FLAC_XSTRINGIFY(MA_DR_FLAC_VERSION_MAJOR) "." MA_DR_FLAC_XSTRINGIFY(MA_DR_FLAC_VERSION_MINOR) "." MA_DR_FLAC_XSTRINGIFY(MA_DR_FLAC_VERSION_REVISION) #include #if defined(_MSC_VER) && _MSC_VER >= 1700 @@ -60465,7 +61041,7 @@ extern "C" { #define MA_DR_MP3_XSTRINGIFY(x) MA_DR_MP3_STRINGIFY(x) #define MA_DR_MP3_VERSION_MAJOR 0 #define MA_DR_MP3_VERSION_MINOR 6 -#define MA_DR_MP3_VERSION_REVISION 38 +#define MA_DR_MP3_VERSION_REVISION 40 #define MA_DR_MP3_VERSION_STRING MA_DR_MP3_XSTRINGIFY(MA_DR_MP3_VERSION_MAJOR) "." MA_DR_MP3_XSTRINGIFY(MA_DR_MP3_VERSION_MINOR) "." MA_DR_MP3_XSTRINGIFY(MA_DR_MP3_VERSION_REVISION) #include #define MA_DR_MP3_MAX_PCM_FRAMES_PER_MP3_FRAME 1152 @@ -60627,7 +61203,7 @@ MA_API ma_decoder_config ma_decoder_config_init(ma_format outputFormat, ma_uint3 return config; } -MA_API ma_decoder_config ma_decoder_config_init_default() +MA_API ma_decoder_config ma_decoder_config_init_default(void) { return ma_decoder_config_init(ma_format_unknown, 0, 0); } @@ -63220,7 +63796,7 @@ MA_API ma_result ma_stbvorbis_init(ma_read_proc onRead, ma_seek_proc onSeek, ma_ #if !defined(MA_NO_VORBIS) { /* - stb_vorbis lacks a callback based API for it's pulling API which means we're stuck with the + stb_vorbis lacks a callback based API for its pulling API which means we're stuck with the pushing API. In order for us to be able to successfully initialize the decoder we need to supply it with enough data. We need to keep loading data until we have enough. */ @@ -63301,7 +63877,7 @@ MA_API ma_result ma_stbvorbis_init_memory(const void* pData, size_t dataSize, co { (void)pAllocationCallbacks; - /* stb_vorbis uses an int as it's size specifier, restricting it to 32-bit even on 64-bit systems. *sigh*. */ + /* stb_vorbis uses an int as its size specifier, restricting it to 32-bit even on 64-bit systems. *sigh*. */ if (dataSize > INT_MAX) { return MA_TOO_BIG; } @@ -63391,7 +63967,7 @@ MA_API ma_result ma_stbvorbis_read_pcm_frames(ma_stbvorbis* pVorbis, void* pFram /* The first thing to do is read from any already-cached frames. */ ma_uint32 framesToReadFromCache = (ma_uint32)ma_min(pVorbis->push.framesRemaining, (frameCount - totalFramesRead)); /* Safe cast because pVorbis->framesRemaining is 32-bit. */ - /* The output pointer can be null in which case we just treate it as a seek. */ + /* The output pointer can be null in which case we just treat it as a seek. */ if (pFramesOut != NULL) { ma_uint64 iFrame; for (iFrame = 0; iFrame < framesToReadFromCache; iFrame += 1) { @@ -63465,7 +64041,7 @@ MA_API ma_result ma_stbvorbis_read_pcm_frames(ma_stbvorbis* pVorbis, void* pFram } } - /* If we don't have a success code at this point it means we've encounted an error or the end of the file has been reached (probably the latter). */ + /* If we don't have a success code at this point it means we've encountered an error or the end of the file has been reached (probably the latter). */ if (result != MA_SUCCESS) { break; } @@ -64279,8 +64855,7 @@ MA_API ma_result ma_decoder_init_memory(const void* pData, size_t dataSize, cons #if defined(MA_HAS_WAV) || \ defined(MA_HAS_MP3) || \ defined(MA_HAS_FLAC) || \ - defined(MA_HAS_VORBIS) || \ - defined(MA_HAS_OPUS) + defined(MA_HAS_VORBIS) #define MA_HAS_PATH_API #endif @@ -65095,7 +65670,7 @@ MA_API ma_result ma_decoder_read_pcm_frames(ma_decoder* pDecoder, void* pFramesO } else { /* Getting here means we need to do data conversion. If we're seeking forward and are _not_ doing resampling we can run this in a fast path. If we're doing resampling we - need to run through each sample because we need to ensure it's internal cache is updated. + need to run through each sample because we need to ensure its internal cache is updated. */ if (pFramesOut == NULL && pDecoder->converter.hasResampler == MA_FALSE) { result = ma_data_source_read_pcm_frames(pDecoder->pBackend, NULL, frameCount, &totalFramesReadOut); @@ -65185,8 +65760,17 @@ MA_API ma_result ma_decoder_read_pcm_frames(ma_decoder* pDecoder, void* pFramesO if (requiredInputFrameCount > 0) { result = ma_data_source_read_pcm_frames(pDecoder->pBackend, pIntermediaryBuffer, framesToReadThisIterationIn, &framesReadThisIterationIn); + + /* + Note here that even if we've reached the end, we don't want to abort because there might be more output frames needing to be + generated from cached input data, which might happen if resampling is being performed. + */ + if (result != MA_SUCCESS && result != MA_AT_END) { + break; + } } else { framesReadThisIterationIn = 0; + pIntermediaryBuffer[0] = 0; /* <-- This is just to silence a static analysis warning. */ } /* @@ -66667,7 +67251,7 @@ MA_API ma_result ma_noise_set_type(ma_noise* pNoise, ma_noise_type type) /* This function should never have been implemented in the first place. Changing the type dynamically is not - supported. Instead you need to uninitialize and reinitiailize a fresh `ma_noise` object. This function + supported. Instead you need to uninitialize and reinitialize a fresh `ma_noise` object. This function will be removed in version 0.12. */ MA_ASSERT(MA_FALSE); @@ -67713,7 +68297,7 @@ MA_API ma_result ma_resource_manager_init(const ma_resource_manager_config* pCon pResourceManager->config.pVFS = &pResourceManager->defaultVFS; } - /* If threading has been disabled at compile time, enfore it at run time as well. */ + /* If threading has been disabled at compile time, enforce it at run time as well. */ #ifdef MA_NO_THREADING { pResourceManager->config.flags |= MA_RESOURCE_MANAGER_FLAG_NO_THREADING; @@ -67750,15 +68334,17 @@ MA_API ma_result ma_resource_manager_init(const ma_resource_manager_config* pCon /* Custom decoding backends. */ if (pConfig->ppCustomDecodingBackendVTables != NULL && pConfig->customDecodingBackendCount > 0) { size_t sizeInBytes = sizeof(*pResourceManager->config.ppCustomDecodingBackendVTables) * pConfig->customDecodingBackendCount; + ma_decoding_backend_vtable** ppCustomDecodingBackendVTables; - pResourceManager->config.ppCustomDecodingBackendVTables = (ma_decoding_backend_vtable**)ma_malloc(sizeInBytes, &pResourceManager->config.allocationCallbacks); + ppCustomDecodingBackendVTables = (ma_decoding_backend_vtable**)ma_malloc(sizeInBytes, &pResourceManager->config.allocationCallbacks); if (pResourceManager->config.ppCustomDecodingBackendVTables == NULL) { ma_job_queue_uninit(&pResourceManager->jobQueue, &pResourceManager->config.allocationCallbacks); return MA_OUT_OF_MEMORY; } - MA_COPY_MEMORY(pResourceManager->config.ppCustomDecodingBackendVTables, pConfig->ppCustomDecodingBackendVTables, sizeInBytes); + MA_COPY_MEMORY(ppCustomDecodingBackendVTables, pConfig->ppCustomDecodingBackendVTables, sizeInBytes); + pResourceManager->config.ppCustomDecodingBackendVTables = ppCustomDecodingBackendVTables; pResourceManager->config.customDecodingBackendCount = pConfig->customDecodingBackendCount; pResourceManager->config.pCustomDecodingBackendUserData = pConfig->pCustomDecodingBackendUserData; } @@ -67809,7 +68395,7 @@ static void ma_resource_manager_delete_all_data_buffer_nodes(ma_resource_manager ma_resource_manager_data_buffer_node* pDataBufferNode = pResourceManager->pRootDataBufferNode; ma_resource_manager_data_buffer_node_remove(pResourceManager, pDataBufferNode); - /* The data buffer has been removed from the BST, so now we need to free it's data. */ + /* The data buffer has been removed from the BST, so now we need to free its data. */ ma_resource_manager_data_buffer_node_free(pResourceManager, pDataBufferNode); } } @@ -67822,7 +68408,7 @@ MA_API void ma_resource_manager_uninit(ma_resource_manager* pResourceManager) /* Job threads need to be killed first. To do this we need to post a quit message to the message queue and then wait for the thread. The quit message will never be removed from the - queue which means it will never not be returned after being encounted for the first time which means all threads will eventually receive it. + queue which means it will never not be returned after being encountered for the first time which means all threads will eventually receive it. */ ma_resource_manager_post_job_quit(pResourceManager); @@ -67862,7 +68448,7 @@ MA_API void ma_resource_manager_uninit(ma_resource_manager* pResourceManager) #endif } - ma_free(pResourceManager->config.ppCustomDecodingBackendVTables, &pResourceManager->config.allocationCallbacks); + ma_free((ma_decoding_backend_vtable**)pResourceManager->config.ppCustomDecodingBackendVTables, &pResourceManager->config.allocationCallbacks); /* <-- Naughty const-cast, but this is safe. */ if (pResourceManager->config.pLog == &pResourceManager->log) { ma_log_uninit(&pResourceManager->log); @@ -68280,7 +68866,7 @@ static ma_result ma_resource_manager_data_buffer_node_decode_next_page(ma_resour } result = ma_decoder_read_pcm_frames(pDecoder, pPage->pAudioData, framesToTryReading, &framesRead); - if (framesRead > 0) { + if (result == MA_SUCCESS && framesRead > 0) { pPage->sizeInFrames = framesRead; result = ma_paged_audio_buffer_data_append_page(&pDataBufferNode->data.backend.decodedPaged.data, pPage); @@ -68433,7 +69019,7 @@ static ma_result ma_resource_manager_data_buffer_node_acquire_critical_section(m if ((flags & MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_WAIT_INIT) != 0) { ma_resource_manager_inline_notification_uninit(pInitNotification); } else { - /* These will have been freed by the job thread, but with WAIT_INIT they will already have happend sinced the job has already been handled. */ + /* These will have been freed by the job thread, but with WAIT_INIT they will already have happened since the job has already been handled. */ ma_free(pFilePathCopy, &pResourceManager->config.allocationCallbacks); ma_free(pFilePathWCopy, &pResourceManager->config.allocationCallbacks); } @@ -68798,6 +69384,10 @@ static ma_result ma_resource_manager_data_buffer_init_ex_internal(ma_resource_ma flags &= ~MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_ASYNC; } + if (pConfig->isLooping) { + flags |= MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING; + } + async = (flags & MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_ASYNC) != 0; /* @@ -68810,7 +69400,7 @@ static ma_result ma_resource_manager_data_buffer_init_ex_internal(ma_resource_ma These fences are always released at the "done" tag at the end of this function. They'll be acquired a second if loading asynchronously. This double acquisition system is just done to - simplify code maintanence. + simplify code maintenance. */ ma_resource_manager_pipeline_notifications_acquire_all_fences(¬ifications); { @@ -68855,7 +69445,7 @@ static ma_result ma_resource_manager_data_buffer_init_ex_internal(ma_resource_ma /* The status of the data buffer needs to be set to MA_BUSY before posting the job so that the - worker thread is aware of it's busy state. If the LOAD_DATA_BUFFER job sees a status other + worker thread is aware of its busy state. If the LOAD_DATA_BUFFER job sees a status other than MA_BUSY, it'll assume an error and fall through to an early exit. */ ma_atomic_exchange_i32(&pDataBuffer->result, MA_BUSY); @@ -68874,7 +69464,7 @@ static ma_result ma_resource_manager_data_buffer_init_ex_internal(ma_resource_ma job.data.resourceManager.loadDataBuffer.rangeEndInPCMFrames = pConfig->rangeEndInPCMFrames; job.data.resourceManager.loadDataBuffer.loopPointBegInPCMFrames = pConfig->loopPointBegInPCMFrames; job.data.resourceManager.loadDataBuffer.loopPointEndInPCMFrames = pConfig->loopPointEndInPCMFrames; - job.data.resourceManager.loadDataBuffer.isLooping = pConfig->isLooping; + job.data.resourceManager.loadDataBuffer.isLooping = (flags & MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING) != 0; /* If we need to wait for initialization to complete we can just process the job in place. */ if ((flags & MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_WAIT_INIT) != 0) { @@ -69095,22 +69685,29 @@ MA_API ma_result ma_resource_manager_data_buffer_read_pcm_frames(ma_resource_man isDecodedBufferBusy = (ma_resource_manager_data_buffer_node_result(pDataBuffer->pNode) == MA_BUSY); if (ma_resource_manager_data_buffer_get_available_frames(pDataBuffer, &availableFrames) == MA_SUCCESS) { - /* Don't try reading more than the available frame count. */ - if (frameCount > availableFrames) { - frameCount = availableFrames; + /* Don't try reading more than the available frame count if the data buffer node is still loading. */ + if (isDecodedBufferBusy) { + if (frameCount > availableFrames) { + frameCount = availableFrames; - /* - If there's no frames available we want to set the status to MA_AT_END. The logic below - will check if the node is busy, and if so, change it to MA_BUSY. The reason we do this - is because we don't want to call `ma_data_source_read_pcm_frames()` if the frame count - is 0 because that'll result in a situation where it's possible MA_AT_END won't get - returned. - */ - if (frameCount == 0) { - result = MA_AT_END; + /* + If there's no frames available we want to set the status to MA_AT_END. The logic below + will check if the node is busy, and if so, change it to MA_BUSY. The reason we do this + is because we don't want to call `ma_data_source_read_pcm_frames()` if the frame count + is 0 because that'll result in a situation where it's possible MA_AT_END won't get + returned. + */ + if (frameCount == 0) { + result = MA_AT_END; + } + } else { + isDecodedBufferBusy = MA_FALSE; /* We have enough frames available in the buffer to avoid a MA_BUSY status. */ } } else { - isDecodedBufferBusy = MA_FALSE; /* We have enough frames available in the buffer to avoid a MA_BUSY status. */ + /* + Getting here means the buffer has been fully loaded. We can just pass the frame count straight + into ma_data_source_read_pcm_frames() below and let ma_data_source handle it. + */ } } } @@ -69510,6 +70107,7 @@ MA_API ma_result ma_resource_manager_data_stream_init_ex(ma_resource_manager* pR ma_bool32 waitBeforeReturning = MA_FALSE; ma_resource_manager_inline_notification waitNotification; ma_resource_manager_pipeline_notifications notifications; + ma_uint32 flags; if (pDataStream == NULL) { if (pConfig != NULL && pConfig->pNotifications != NULL) { @@ -69540,13 +70138,18 @@ MA_API ma_result ma_resource_manager_data_stream_init_ex(ma_resource_manager* pR return result; } + flags = pConfig->flags; + if (pConfig->isLooping) { + flags |= MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING; + } + pDataStream->pResourceManager = pResourceManager; pDataStream->flags = pConfig->flags; pDataStream->result = MA_BUSY; ma_data_source_set_range_in_pcm_frames(pDataStream, pConfig->rangeBegInPCMFrames, pConfig->rangeEndInPCMFrames); ma_data_source_set_loop_point_in_pcm_frames(pDataStream, pConfig->loopPointBegInPCMFrames, pConfig->loopPointEndInPCMFrames); - ma_data_source_set_looping(pDataStream, pConfig->isLooping); + ma_data_source_set_looping(pDataStream, (flags & MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING) != 0); if (pResourceManager == NULL || (pConfig->pFilePath == NULL && pConfig->pFilePathW == NULL)) { ma_resource_manager_pipeline_notifications_signal_all_notifications(¬ifications); @@ -70168,6 +70771,9 @@ static ma_result ma_resource_manager_data_source_preinit(ma_resource_manager* pR } pDataSource->flags = pConfig->flags; + if (pConfig->isLooping) { + pDataSource->flags |= MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING; + } return MA_SUCCESS; } @@ -70726,9 +71332,10 @@ static ma_result ma_job_process__resource_manager__load_data_buffer(ma_job* pJob */ result = ma_resource_manager_data_buffer_result(pDataBuffer); if (result != MA_BUSY) { - goto done; /* <-- This will ensure the exucution pointer is incremented. */ + goto done; /* <-- This will ensure the execution pointer is incremented. */ } else { result = MA_SUCCESS; /* <-- Make sure this is reset. */ + (void)result; /* <-- This is to suppress a static analysis diagnostic about "result" not being used. But for safety when I do future maintenance I don't want to delete that assignment. */ } /* Try initializing the connector if we haven't already. */ @@ -71075,11 +71682,74 @@ static ma_result ma_job_process__resource_manager__seek_data_stream(ma_job* pJob #ifndef MA_NO_NODE_GRAPH + +static ma_stack* ma_stack_init(size_t sizeInBytes, const ma_allocation_callbacks* pAllocationCallbacks) +{ + ma_stack* pStack; + + if (sizeInBytes == 0) { + return NULL; + } + + pStack = (ma_stack*)ma_malloc(sizeof(*pStack) - sizeof(pStack->_data) + sizeInBytes, pAllocationCallbacks); + if (pStack == NULL) { + return NULL; + } + + pStack->offset = 0; + pStack->sizeInBytes = sizeInBytes; + + return pStack; +} + +static void ma_stack_uninit(ma_stack* pStack, const ma_allocation_callbacks* pAllocationCallbacks) +{ + if (pStack == NULL) { + return; + } + + ma_free(pStack, pAllocationCallbacks); +} + +static void* ma_stack_alloc(ma_stack* pStack, size_t sz) +{ + /* The size of the allocation is stored in the memory directly before the pointer. This needs to include padding to keep it aligned to ma_uintptr */ + void* p = (void*)((char*)pStack->_data + pStack->offset); + size_t* pSize = (size_t*)p; + + sz = (sz + (sizeof(ma_uintptr) - 1)) & ~(sizeof(ma_uintptr) - 1); /* Padding. */ + if (pStack->offset + sz + sizeof(size_t) > pStack->sizeInBytes) { + return NULL; /* Out of memory. */ + } + + pStack->offset += sz + sizeof(size_t); + + *pSize = sz; + return (void*)((char*)p + sizeof(size_t)); +} + +static void ma_stack_free(ma_stack* pStack, void* p) +{ + size_t* pSize; + + if (p == NULL) { + return; + } + + pSize = (size_t*)p - 1; + pStack->offset -= *pSize + sizeof(size_t); +} + + + /* 10ms @ 48K = 480. Must never exceed 65535. */ #ifndef MA_DEFAULT_NODE_CACHE_CAP_IN_FRAMES_PER_BUS #define MA_DEFAULT_NODE_CACHE_CAP_IN_FRAMES_PER_BUS 480 #endif +#ifndef MA_DEFAULT_PREMIX_STACK_SIZE_PER_CHANNEL +#define MA_DEFAULT_PREMIX_STACK_SIZE_PER_CHANNEL 524288 +#endif static ma_result ma_node_read_pcm_frames(ma_node* pNode, ma_uint32 outputBusIndex, float* pFramesOut, ma_uint32 frameCount, ma_uint32* pFramesRead, ma_uint64 globalTime); @@ -71119,8 +71789,8 @@ MA_API ma_node_graph_config ma_node_graph_config_init(ma_uint32 channels) ma_node_graph_config config; MA_ZERO_OBJECT(&config); - config.channels = channels; - config.nodeCacheCapInFrames = MA_DEFAULT_NODE_CACHE_CAP_IN_FRAMES_PER_BUS; + config.channels = channels; + config.processingSizeInFrames = 0; return config; } @@ -71207,11 +71877,7 @@ MA_API ma_result ma_node_graph_init(const ma_node_graph_config* pConfig, const m } MA_ZERO_OBJECT(pNodeGraph); - pNodeGraph->nodeCacheCapInFrames = pConfig->nodeCacheCapInFrames; - if (pNodeGraph->nodeCacheCapInFrames == 0) { - pNodeGraph->nodeCacheCapInFrames = MA_DEFAULT_NODE_CACHE_CAP_IN_FRAMES_PER_BUS; - } - + pNodeGraph->processingSizeInFrames = pConfig->processingSizeInFrames; /* Base node so we can use the node graph as a node into another graph. */ baseConfig = ma_node_config_init(); @@ -71236,6 +71902,40 @@ MA_API ma_result ma_node_graph_init(const ma_node_graph_config* pConfig, const m return result; } + + /* Processing cache. */ + if (pConfig->processingSizeInFrames > 0) { + pNodeGraph->pProcessingCache = (float*)ma_malloc(pConfig->processingSizeInFrames * pConfig->channels * sizeof(float), pAllocationCallbacks); + if (pNodeGraph->pProcessingCache == NULL) { + ma_node_uninit(&pNodeGraph->endpoint, pAllocationCallbacks); + ma_node_uninit(&pNodeGraph->base, pAllocationCallbacks); + return MA_OUT_OF_MEMORY; + } + } + + + /* + We need a pre-mix stack. The size of this stack is configurable via the config. The default value depends on the channel count. + */ + { + size_t preMixStackSizeInBytes = pConfig->preMixStackSizeInBytes; + if (preMixStackSizeInBytes == 0) { + preMixStackSizeInBytes = pConfig->channels * MA_DEFAULT_PREMIX_STACK_SIZE_PER_CHANNEL; + } + + pNodeGraph->pPreMixStack = ma_stack_init(preMixStackSizeInBytes, pAllocationCallbacks); + if (pNodeGraph->pPreMixStack == NULL) { + ma_node_uninit(&pNodeGraph->endpoint, pAllocationCallbacks); + ma_node_uninit(&pNodeGraph->base, pAllocationCallbacks); + if (pNodeGraph->pProcessingCache != NULL) { + ma_free(pNodeGraph->pProcessingCache, pAllocationCallbacks); + } + + return MA_OUT_OF_MEMORY; + } + } + + return MA_SUCCESS; } @@ -71246,6 +71946,17 @@ MA_API void ma_node_graph_uninit(ma_node_graph* pNodeGraph, const ma_allocation_ } ma_node_uninit(&pNodeGraph->endpoint, pAllocationCallbacks); + ma_node_uninit(&pNodeGraph->base, pAllocationCallbacks); + + if (pNodeGraph->pProcessingCache != NULL) { + ma_free(pNodeGraph->pProcessingCache, pAllocationCallbacks); + pNodeGraph->pProcessingCache = NULL; + } + + if (pNodeGraph->pPreMixStack != NULL) { + ma_stack_uninit(pNodeGraph->pPreMixStack, pAllocationCallbacks); + pNodeGraph->pPreMixStack = NULL; + } } MA_API ma_node* ma_node_graph_get_endpoint(ma_node_graph* pNodeGraph) @@ -71278,27 +71989,72 @@ MA_API ma_result ma_node_graph_read_pcm_frames(ma_node_graph* pNodeGraph, void* totalFramesRead = 0; while (totalFramesRead < frameCount) { ma_uint32 framesJustRead; - ma_uint64 framesToRead = frameCount - totalFramesRead; + ma_uint64 framesToRead; + float* pRunningFramesOut; + framesToRead = frameCount - totalFramesRead; if (framesToRead > 0xFFFFFFFF) { framesToRead = 0xFFFFFFFF; } - ma_node_graph_set_is_reading(pNodeGraph, MA_TRUE); - { - result = ma_node_read_pcm_frames(&pNodeGraph->endpoint, 0, (float*)ma_offset_pcm_frames_ptr(pFramesOut, totalFramesRead, ma_format_f32, channels), (ma_uint32)framesToRead, &framesJustRead, ma_node_get_time(&pNodeGraph->endpoint)); - } - ma_node_graph_set_is_reading(pNodeGraph, MA_FALSE); + pRunningFramesOut = (float*)ma_offset_pcm_frames_ptr(pFramesOut, totalFramesRead, ma_format_f32, channels); - totalFramesRead += framesJustRead; + /* If there's anything in the cache, consume that first. */ + if (pNodeGraph->processingCacheFramesRemaining > 0) { + ma_uint32 framesToReadFromCache; - if (result != MA_SUCCESS) { - break; - } + framesToReadFromCache = (ma_uint32)framesToRead; + if (framesToReadFromCache > pNodeGraph->processingCacheFramesRemaining) { + framesToReadFromCache = pNodeGraph->processingCacheFramesRemaining; + } - /* Abort if we weren't able to read any frames or else we risk getting stuck in a loop. */ - if (framesJustRead == 0) { - break; + MA_COPY_MEMORY(pRunningFramesOut, pNodeGraph->pProcessingCache, framesToReadFromCache * channels * sizeof(float)); + MA_MOVE_MEMORY(pNodeGraph->pProcessingCache, pNodeGraph->pProcessingCache + (framesToReadFromCache * channels), (pNodeGraph->processingCacheFramesRemaining - framesToReadFromCache) * channels * sizeof(float)); + pNodeGraph->processingCacheFramesRemaining -= framesToReadFromCache; + + totalFramesRead += framesToReadFromCache; + continue; + } else { + /* + If processingSizeInFrames is non-zero, we need to make sure we always read in chunks of that size. If the frame count is less than + that, we need to read into the cache and then continue on. + */ + float* pReadDst = pRunningFramesOut; + + if (pNodeGraph->processingSizeInFrames > 0) { + if (framesToRead < pNodeGraph->processingSizeInFrames) { + pReadDst = pNodeGraph->pProcessingCache; /* We need to read into the cache because otherwise we'll overflow the output buffer. */ + } + + framesToRead = pNodeGraph->processingSizeInFrames; + } + + ma_node_graph_set_is_reading(pNodeGraph, MA_TRUE); + { + result = ma_node_read_pcm_frames(&pNodeGraph->endpoint, 0, pReadDst, (ma_uint32)framesToRead, &framesJustRead, ma_node_get_time(&pNodeGraph->endpoint)); + } + ma_node_graph_set_is_reading(pNodeGraph, MA_FALSE); + + /* + Do not increment the total frames read counter if we read into the cache. We use this to determine how many frames have + been written to the final output buffer. + */ + if (pReadDst == pNodeGraph->pProcessingCache) { + /* We read into the cache. */ + pNodeGraph->processingCacheFramesRemaining = framesJustRead; + } else { + /* We read straight into the output buffer. */ + totalFramesRead += framesJustRead; + } + + if (result != MA_SUCCESS) { + break; + } + + /* Abort if we weren't able to read any frames or else we risk getting stuck in a loop. */ + if (framesJustRead == 0) { + break; + } } } @@ -71499,7 +72255,7 @@ static void ma_node_input_bus_detach__no_output_bus_lock(ma_node_input_bus* pInp *not* using a lock when iterating over the list in the audio thread. We therefore need to craft this in a way such that the iteration on the audio thread doesn't break. - The the first thing to do is swap out the "next" pointer of the previous output bus with the + The first thing to do is swap out the "next" pointer of the previous output bus with the new "next" output bus. This is the operation that matters for iteration on the audio thread. After that, the previous pointer on the new "next" pointer needs to be updated, after which point the linked list will be in a good state. @@ -71592,7 +72348,7 @@ static void ma_node_input_bus_attach(ma_node_input_bus* pInputBus, ma_node_outpu /* Now we need to attach the output bus to the linked list. This involves updating two pointers on two different output buses so I'm going to go ahead and keep this simple and just use a lock. - There are ways to do this without a lock, but it's just too hard to maintain for it's value. + There are ways to do this without a lock, but it's just too hard to maintain for its value. Although we're locking here, it's important to remember that we're *not* locking when iterating and reading audio data since that'll be running on the audio thread. As a result we need to be @@ -71685,11 +72441,9 @@ static ma_result ma_node_input_bus_read_pcm_frames(ma_node* pInputNode, ma_node_ ma_uint32 inputChannels; ma_bool32 doesOutputBufferHaveContent = MA_FALSE; - (void)pInputNode; /* Not currently used. */ - /* This will be called from the audio thread which means we can't be doing any locking. Basically, - this function will not perfom any locking, whereas attaching and detaching will, but crafted in + this function will not perform any locking, whereas attaching and detaching will, but crafted in such a way that we don't need to perform any locking here. The important thing to remember is to always iterate in a forward direction. @@ -71735,19 +72489,12 @@ static ma_result ma_node_input_bus_read_pcm_frames(ma_node* pInputNode, ma_node_ if (pFramesOut != NULL) { /* Read. */ - float temp[MA_DATA_CONVERTER_STACK_BUFFER_SIZE / sizeof(float)]; - ma_uint32 tempCapInFrames = ma_countof(temp) / inputChannels; - while (framesProcessed < frameCount) { float* pRunningFramesOut; ma_uint32 framesToRead; - ma_uint32 framesJustRead; + ma_uint32 framesJustRead = 0; framesToRead = frameCount - framesProcessed; - if (framesToRead > tempCapInFrames) { - framesToRead = tempCapInFrames; - } - pRunningFramesOut = ma_offset_pcm_frames_ptr_f32(pFramesOut, framesProcessed, inputChannels); if (doesOutputBufferHaveContent == MA_FALSE) { @@ -71755,11 +72502,32 @@ static ma_result ma_node_input_bus_read_pcm_frames(ma_node* pInputNode, ma_node_ result = ma_node_read_pcm_frames(pOutputBus->pNode, pOutputBus->outputBusIndex, pRunningFramesOut, framesToRead, &framesJustRead, globalTime + framesProcessed); } else { /* Slow path. Not the first attachment. Mixing required. */ - result = ma_node_read_pcm_frames(pOutputBus->pNode, pOutputBus->outputBusIndex, temp, framesToRead, &framesJustRead, globalTime + framesProcessed); - if (result == MA_SUCCESS || result == MA_AT_END) { - if (isSilentOutput == MA_FALSE) { /* Don't mix if the node outputs silence. */ - ma_mix_pcm_frames_f32(pRunningFramesOut, temp, framesJustRead, inputChannels, /*volume*/1); + ma_uint32 preMixBufferCapInFrames = ((ma_node_base*)pInputNode)->cachedDataCapInFramesPerBus; + float* pPreMixBuffer = (float*)ma_stack_alloc(((ma_node_base*)pInputNode)->pNodeGraph->pPreMixStack, preMixBufferCapInFrames * inputChannels * sizeof(float)); + + if (pPreMixBuffer == NULL) { + /* + If you're hitting this assert it means you've got an unusually deep chain of nodes, you've got an excessively large processing + size, or you have a combination of both, and as a result have run out of stack space. You can increase this using the + preMixStackSizeInBytes variable in ma_node_graph_config. If you're using ma_engine, you can do it via the preMixStackSizeInBytes + variable in ma_engine_config. It defaults to 512KB per output channel. + */ + MA_ASSERT(MA_FALSE); + } else { + if (framesToRead > preMixBufferCapInFrames) { + framesToRead = preMixBufferCapInFrames; } + + result = ma_node_read_pcm_frames(pOutputBus->pNode, pOutputBus->outputBusIndex, pPreMixBuffer, framesToRead, &framesJustRead, globalTime + framesProcessed); + if (result == MA_SUCCESS || result == MA_AT_END) { + if (isSilentOutput == MA_FALSE) { /* Don't mix if the node outputs silence. */ + ma_mix_pcm_frames_f32(pRunningFramesOut, pPreMixBuffer, framesJustRead, inputChannels, /*volume*/1); + } + } + + /* The pre-mix buffer is no longer required. */ + ma_stack_free(((ma_node_base*)pInputNode)->pNodeGraph->pPreMixStack, pPreMixBuffer); + pPreMixBuffer = NULL; } } @@ -71814,6 +72582,25 @@ MA_API ma_node_config ma_node_config_init(void) return config; } +static ma_uint16 ma_node_config_get_cache_size_in_frames(const ma_node_config* pConfig, const ma_node_graph* pNodeGraph) +{ + ma_uint32 cacheSizeInFrames; + + (void)pConfig; + + if (pNodeGraph->processingSizeInFrames > 0) { + cacheSizeInFrames = pNodeGraph->processingSizeInFrames; + } else { + cacheSizeInFrames = MA_DEFAULT_NODE_CACHE_CAP_IN_FRAMES_PER_BUS; + } + + if (cacheSizeInFrames > 0xFFFF) { + cacheSizeInFrames = 0xFFFF; + } + + return (ma_uint16)cacheSizeInFrames; +} + static ma_result ma_node_detach_full(ma_node* pNode); @@ -71968,7 +72755,7 @@ static ma_result ma_node_get_heap_layout(ma_node_graph* pNodeGraph, const ma_nod /* Cached audio data. - We need to allocate memory for a caching both input and output data. We have an optimization + We need to allocate memory for caching both input and output data. We have an optimization where no caching is necessary for specific conditions: - The node has 0 inputs and 1 output. @@ -71987,14 +72774,18 @@ static ma_result ma_node_get_heap_layout(ma_node_graph* pNodeGraph, const ma_nod } else { /* Slow path. Cache needed. */ size_t cachedDataSizeInBytes = 0; + ma_uint32 cacheCapInFrames; ma_uint32 iBus; + /* The capacity of the cache is based on our callback processing size. */ + cacheCapInFrames = ma_node_config_get_cache_size_in_frames(pConfig, pNodeGraph); + for (iBus = 0; iBus < inputBusCount; iBus += 1) { - cachedDataSizeInBytes += pNodeGraph->nodeCacheCapInFrames * ma_get_bytes_per_frame(ma_format_f32, pConfig->pInputChannels[iBus]); + cachedDataSizeInBytes += cacheCapInFrames * ma_get_bytes_per_frame(ma_format_f32, pConfig->pInputChannels[iBus]); } for (iBus = 0; iBus < outputBusCount; iBus += 1) { - cachedDataSizeInBytes += pNodeGraph->nodeCacheCapInFrames * ma_get_bytes_per_frame(ma_format_f32, pConfig->pOutputChannels[iBus]); + cachedDataSizeInBytes += cacheCapInFrames * ma_get_bytes_per_frame(ma_format_f32, pConfig->pOutputChannels[iBus]); } pHeapLayout->cachedDataOffset = pHeapLayout->sizeInBytes; @@ -72080,13 +72871,12 @@ MA_API ma_result ma_node_init_preallocated(ma_node_graph* pNodeGraph, const ma_n if (heapLayout.cachedDataOffset != MA_SIZE_MAX) { pNodeBase->pCachedData = (float*)ma_offset_ptr(pHeap, heapLayout.cachedDataOffset); - pNodeBase->cachedDataCapInFramesPerBus = pNodeGraph->nodeCacheCapInFrames; + pNodeBase->cachedDataCapInFramesPerBus = ma_node_config_get_cache_size_in_frames(pConfig, pNodeGraph); } else { pNodeBase->pCachedData = NULL; } - /* We need to run an initialization step for each input and output bus. */ for (iInputBus = 0; iInputBus < ma_node_get_input_bus_count(pNodeBase); iInputBus += 1) { result = ma_node_input_bus_init(pConfig->pInputChannels[iInputBus], &pNodeBase->pInputBuses[iInputBus]); @@ -72260,7 +73050,7 @@ static ma_result ma_node_detach_full(ma_node* pNode) /* At this point all output buses will have been detached from the graph and we can be guaranteed - that none of it's input nodes will be getting processed by the graph. We can detach these + that none of its input nodes will be getting processed by the graph. We can detach these without needing to worry about the audio thread touching them. */ for (iInputBus = 0; iInputBus < ma_node_get_input_bus_count(pNode); iInputBus += 1) { @@ -72275,7 +73065,7 @@ static ma_result ma_node_detach_full(ma_node* pNode) linked list logic. We don't need to worry about the audio thread referencing these because the step above severed the connection to the graph. */ - for (pOutputBus = (ma_node_output_bus*)ma_atomic_load_ptr(&pInputBus->head.pNext); pOutputBus != NULL; pOutputBus = (ma_node_output_bus*)ma_atomic_load_ptr(&pOutputBus->pNext)) { + for (pOutputBus = (ma_node_output_bus*)ma_atomic_load_ptr(&pInputBus->head.pNext); pOutputBus != NULL; pOutputBus = (ma_node_output_bus*)ma_atomic_load_ptr(&pInputBus->head.pNext)) { ma_node_detach_output_bus(pOutputBus->pNode, pOutputBus->outputBusIndex); /* This won't do any waiting in practice and should be efficient. */ } } @@ -72297,7 +73087,7 @@ MA_API ma_result ma_node_detach_output_bus(ma_node* pNode, ma_uint32 outputBusIn return MA_INVALID_ARGS; /* Invalid output bus index. */ } - /* We need to lock the output bus because we need to inspect the input node and grab it's input bus. */ + /* We need to lock the output bus because we need to inspect the input node and grab its input bus. */ ma_node_output_bus_lock(&pNodeBase->pOutputBuses[outputBusIndex]); { pInputNodeBase = (ma_node_base*)pNodeBase->pOutputBuses[outputBusIndex].pInputNode; @@ -72463,7 +73253,7 @@ MA_API ma_node_state ma_node_get_state_by_time_range(const ma_node* pNode, ma_ui /* Getting here means the node is marked as started, but it may still not be truly started due to - it's start time not having been reached yet. Also, the stop time may have also been reached in + its start time not having been reached yet. Also, the stop time may have also been reached in which case it'll be considered stopped. */ if (ma_node_get_state_time(pNode, ma_node_state_started) > globalTimeBeg) { @@ -72474,7 +73264,7 @@ MA_API ma_node_state ma_node_get_state_by_time_range(const ma_node* pNode, ma_ui return ma_node_state_stopped; /* Stop time has been reached. */ } - /* Getting here means the node is marked as started and is within it's start/stop times. */ + /* Getting here means the node is marked as started and is within its start/stop times. */ return ma_node_state_started; } @@ -72636,12 +73426,12 @@ static ma_result ma_node_read_pcm_frames(ma_node* pNode, ma_uint32 outputBusInde frameCountOut = totalFramesRead; if (totalFramesRead > 0) { - ma_node_process_pcm_frames_internal(pNode, (const float**)ppFramesIn, &frameCountIn, ppFramesOut, &frameCountOut); /* From GCC: expected 'const float **' but argument is of type 'float **'. Shouldn't this be implicit? Excplicit cast to silence the warning. */ + ma_node_process_pcm_frames_internal(pNode, (const float**)ppFramesIn, &frameCountIn, ppFramesOut, &frameCountOut); /* From GCC: expected 'const float **' but argument is of type 'float **'. Shouldn't this be implicit? Explicit cast to silence the warning. */ } /* A passthrough should never have modified the input and output frame counts. If you're - triggering these assers you need to fix your processing callback. + triggering these asserts you need to fix your processing callback. */ MA_ASSERT(frameCountIn == totalFramesRead); MA_ASSERT(frameCountOut == totalFramesRead); @@ -72819,7 +73609,7 @@ static ma_result ma_node_read_pcm_frames(ma_node* pNode, ma_uint32 outputBusInde frames available right now. */ if (frameCountIn > 0 || (pNodeBase->vtable->flags & MA_NODE_FLAG_DIFFERENT_PROCESSING_RATES) != 0) { - ma_node_process_pcm_frames_internal(pNode, (const float**)ppFramesIn, &frameCountIn, ppFramesOut, &frameCountOut); /* From GCC: expected 'const float **' but argument is of type 'float **'. Shouldn't this be implicit? Excplicit cast to silence the warning. */ + ma_node_process_pcm_frames_internal(pNode, (const float**)ppFramesIn, &frameCountIn, ppFramesOut, &frameCountOut); /* From GCC: expected 'const float **' but argument is of type 'float **'. Shouldn't this be implicit? Explicit cast to silence the warning. */ } else { frameCountOut = 0; /* No data was processed. */ } @@ -74056,7 +74846,7 @@ static ma_bool32 ma_engine_node_is_pitching_enabled(const ma_engine_node* pEngin { MA_ASSERT(pEngineNode != NULL); - /* Don't try to be clever by skiping resampling in the pitch=1 case or else you'll glitch when moving away from 1. */ + /* Don't try to be clever by skipping resampling in the pitch=1 case or else you'll glitch when moving away from 1. */ return !ma_atomic_load_explicit_32(&pEngineNode->isPitchDisabled, ma_atomic_memory_order_acquire); } @@ -74093,7 +74883,7 @@ static ma_result ma_engine_node_set_volume(ma_engine_node* pEngineNode, float vo /* If we're not smoothing we should bypass the volume gainer entirely. */ if (pEngineNode->volumeSmoothTimeInPCMFrames == 0) { - /* We should always have an active spatializer because it can be enabled and disabled dynamically. We can just use that for hodling our volume. */ + /* We should always have an active spatializer because it can be enabled and disabled dynamically. We can just use that for holding our volume. */ ma_spatializer_set_master_volume(&pEngineNode->spatializer, volume); } else { /* We're using volume smoothing, so apply the master volume to the gainer. */ @@ -74408,7 +75198,7 @@ static void ma_engine_node_process_pcm_frames__sound(ma_node* pNode, const float ma_sound_set_at_end(pSound, MA_TRUE); /* This will be set to false in ma_sound_start(). */ } - pRunningFramesOut = ma_offset_pcm_frames_ptr_f32(ppFramesOut[0], totalFramesRead, ma_engine_get_channels(ma_sound_get_engine(pSound))); + pRunningFramesOut = ma_offset_pcm_frames_ptr_f32(ppFramesOut[0], totalFramesRead, ma_node_get_output_channels(pNode, 0)); frameCountIn = (ma_uint32)framesJustRead; frameCountOut = framesRemaining; @@ -74739,7 +75529,7 @@ MA_API ma_result ma_engine_node_init_preallocated(const ma_engine_node_config* p /* - Spatialization comes next. We spatialize based ont he node's output channel count. It's up the caller to + Spatialization comes next. We spatialize based on the node's output channel count. It's up the caller to ensure channels counts link up correctly in the node graph. */ spatializerConfig = ma_engine_node_spatializer_config_init(&baseNodeConfig); @@ -74929,6 +75719,21 @@ static void ma_engine_data_callback_internal(ma_device* pDevice, void* pFramesOu ma_engine_read_pcm_frames(pEngine, pFramesOut, frameCount, NULL); } + +static ma_uint32 ma_device__get_processing_size_in_frames(ma_device* pDevice) +{ + /* + The processing size is the period size. The device can have a fixed sized processing size, or + it can be decided by the backend in which case it can be variable. + */ + if (pDevice->playback.intermediaryBufferCap > 0) { + /* Using a fixed sized processing callback. */ + return pDevice->playback.intermediaryBufferCap; + } else { + /* Not using a fixed sized processing callback. Need to estimate the processing size based on the backend. */ + return pDevice->playback.internalPeriodSizeInFrames; + } +} #endif MA_API ma_result ma_engine_init(const ma_engine_config* pConfig, ma_engine* pEngine) @@ -75022,6 +75827,14 @@ MA_API ma_result ma_engine_init(const ma_engine_config* pConfig, ma_engine* pEng if (pEngine->pDevice != NULL) { engineConfig.channels = pEngine->pDevice->playback.channels; engineConfig.sampleRate = pEngine->pDevice->sampleRate; + + /* + The processing size used by the engine is determined by engineConfig.periodSizeInFrames. We want + to make this equal to what the device is using for it's period size. If we don't do that, it's + possible that the node graph will split it's processing into multiple passes which can introduce + glitching. + */ + engineConfig.periodSizeInFrames = ma_device__get_processing_size_in_frames(pEngine->pDevice); } } #endif @@ -75048,9 +75861,10 @@ MA_API ma_result ma_engine_init(const ma_engine_config* pConfig, ma_engine* pEng } - /* The engine is a node graph. This needs to be initialized after we have the device so we can can determine the channel count. */ + /* The engine is a node graph. This needs to be initialized after we have the device so we can determine the channel count. */ nodeGraphConfig = ma_node_graph_config_init(engineConfig.channels); - nodeGraphConfig.nodeCacheCapInFrames = (engineConfig.periodSizeInFrames > 0xFFFF) ? 0xFFFF : (ma_uint16)engineConfig.periodSizeInFrames; + nodeGraphConfig.processingSizeInFrames = engineConfig.periodSizeInFrames; + nodeGraphConfig.preMixStackSizeInBytes = engineConfig.preMixStackSizeInBytes; result = ma_node_graph_init(&nodeGraphConfig, &pEngine->allocationCallbacks, &pEngine->nodeGraph); if (result != MA_SUCCESS) { @@ -75130,8 +75944,8 @@ MA_API ma_result ma_engine_init(const ma_engine_config* pConfig, ma_engine* pEng ma_allocation_callbacks_init_copy(&resourceManagerConfig.allocationCallbacks, &pEngine->allocationCallbacks); resourceManagerConfig.pVFS = engineConfig.pResourceManagerVFS; - /* The Emscripten build cannot use threads. */ - #if defined(MA_EMSCRIPTEN) + /* The Emscripten build cannot use threads unless it's targeting pthreads. */ + #if defined(MA_EMSCRIPTEN) && !defined(__EMSCRIPTEN_PTHREADS__) { resourceManagerConfig.jobThreadCount = 0; resourceManagerConfig.flags |= MA_RESOURCE_MANAGER_FLAG_NO_THREADING; @@ -75646,7 +76460,7 @@ MA_API ma_result ma_engine_play_sound_ex(ma_engine* pEngine, const char* pFilePa return MA_INVALID_ARGS; } - /* Attach to the endpoint node if nothing is specicied. */ + /* Attach to the endpoint node if nothing is specified. */ if (pNode == NULL) { pNode = ma_node_graph_get_endpoint(&pEngine->nodeGraph); nodeInputBusIndex = 0; @@ -75863,7 +76677,7 @@ static ma_result ma_sound_init_from_data_source_internal(ma_engine* pEngine, con ma_data_source_set_range_in_pcm_frames(ma_sound_get_data_source(pSound), pConfig->loopPointBegInPCMFrames, pConfig->loopPointEndInPCMFrames); } - ma_sound_set_looping(pSound, pConfig->isLooping); + ma_sound_set_looping(pSound, pConfig->isLooping || ((pConfig->flags & MA_SOUND_FLAG_LOOPING) != 0)); return MA_SUCCESS; } @@ -75887,6 +76701,9 @@ MA_API ma_result ma_sound_init_from_file_internal(ma_engine* pEngine, const ma_s it and can avoid accessing the sound from within the notification. */ flags = pConfig->flags | MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_WAIT_INIT; + if (pConfig->isLooping) { + flags |= MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING; + } pSound->pResourceManagerDataSource = (ma_resource_manager_data_source*)ma_malloc(sizeof(*pSound->pResourceManagerDataSource), &pEngine->allocationCallbacks); if (pSound->pResourceManagerDataSource == NULL) { @@ -75915,7 +76732,7 @@ MA_API ma_result ma_sound_init_from_file_internal(ma_engine* pEngine, const ma_s resourceManagerDataSourceConfig.rangeEndInPCMFrames = pConfig->rangeEndInPCMFrames; resourceManagerDataSourceConfig.loopPointBegInPCMFrames = pConfig->loopPointBegInPCMFrames; resourceManagerDataSourceConfig.loopPointEndInPCMFrames = pConfig->loopPointEndInPCMFrames; - resourceManagerDataSourceConfig.isLooping = pConfig->isLooping; + resourceManagerDataSourceConfig.isLooping = (flags & MA_RESOURCE_MANAGER_DATA_SOURCE_FLAG_LOOPING) != 0; result = ma_resource_manager_data_source_init_ex(pEngine->pResourceManager, &resourceManagerDataSourceConfig, pSound->pResourceManagerDataSource); if (result != MA_SUCCESS) { @@ -76067,7 +76884,7 @@ MA_API ma_result ma_sound_init_ex(ma_engine* pEngine, const ma_sound_config* pCo { /* Getting here means we're not loading from a file. We may be loading from an already-initialized - data source, or none at all. If we aren't specifying any data source, we'll be initializing the + data source, or none at all. If we aren't specifying any data source, we'll be initializing the equivalent to a group. ma_data_source_init_from_data_source_internal() will deal with this for us, so no special treatment required here. */ @@ -76787,6 +77604,27 @@ MA_API ma_result ma_sound_seek_to_pcm_frame(ma_sound* pSound, ma_uint64 frameInd return MA_SUCCESS; } +MA_API ma_result ma_sound_seek_to_second(ma_sound* pSound, float seekPointInSeconds) +{ + ma_uint64 frameIndex; + ma_uint32 sampleRate; + ma_result result; + + if (pSound == NULL) { + return MA_INVALID_ARGS; + } + + result = ma_sound_get_data_format(pSound, NULL, NULL, &sampleRate, NULL, 0); + if (result != MA_SUCCESS) { + return result; + } + + /* We need PCM frames. We need to convert first */ + frameIndex = (ma_uint64)(seekPointInSeconds * sampleRate); + + return ma_sound_seek_to_pcm_frame(pSound, frameIndex); +} + MA_API ma_result ma_sound_get_data_format(ma_sound* pSound, ma_format* pFormat, ma_uint32* pChannels, ma_uint32* pSampleRate, ma_channel* pChannelMap, size_t channelMapCap) { if (pSound == NULL) { @@ -77233,7 +78071,7 @@ code below please report the bug to the respective repository for the relevant p *************************************************************************************************************************************************************** **************************************************************************************************************************************************************/ #if !defined(MA_NO_WAV) && (!defined(MA_NO_DECODING) || !defined(MA_NO_ENCODING)) -#if !defined(MA_DR_WAV_IMPLEMENTATION) && !defined(MA_DR_WAV_IMPLEMENTATION) /* For backwards compatibility. Will be removed in version 0.11 for cleanliness. */ +#if !defined(MA_DR_WAV_IMPLEMENTATION) /* dr_wav_c begin */ #ifndef ma_dr_wav_c #define ma_dr_wav_c @@ -78555,7 +79393,6 @@ MA_PRIVATE ma_bool32 ma_dr_wav_init__internal(ma_dr_wav* pWav, ma_dr_wav_chunk_p } if (pWav->container == ma_dr_wav_container_riff || pWav->container == ma_dr_wav_container_rifx) { if (ma_dr_wav_bytes_to_u32_ex(chunkSizeBytes, pWav->container) < 36) { - return MA_FALSE; } } else if (pWav->container == ma_dr_wav_container_rf64) { if (ma_dr_wav_bytes_to_u32_le(chunkSizeBytes) != 0xFFFFFFFF) { @@ -78824,7 +79661,9 @@ MA_PRIVATE ma_bool32 ma_dr_wav_init__internal(ma_dr_wav* pWav, ma_dr_wav_chunk_p compressionFormat = MA_DR_WAVE_FORMAT_MULAW; } else if (ma_dr_wav_fourcc_equal(type, "ima4")) { compressionFormat = MA_DR_WAVE_FORMAT_DVI_ADPCM; - sampleSizeInBits = 4; + sampleSizeInBits = 4; + (void)compressionFormat; + (void)sampleSizeInBits; return MA_FALSE; } else { return MA_FALSE; @@ -78882,9 +79721,7 @@ MA_PRIVATE ma_bool32 ma_dr_wav_init__internal(ma_dr_wav* pWav, ma_dr_wav_chunk_p } } if (isProcessingMetadata) { - ma_uint64 metadataBytesRead; - metadataBytesRead = ma_dr_wav__metadata_process_chunk(&metadataParser, &header, ma_dr_wav_metadata_type_all_including_unknown); - MA_DR_WAV_ASSERT(metadataBytesRead <= header.sizeInBytes); + ma_dr_wav__metadata_process_chunk(&metadataParser, &header, ma_dr_wav_metadata_type_all_including_unknown); if (ma_dr_wav__seek_from_start(pWav->onSeek, cursor, pWav->pUserData) == MA_FALSE) { break; } @@ -80332,6 +81169,12 @@ MA_API ma_uint64 ma_dr_wav_write_pcm_frames(ma_dr_wav* pWav, ma_uint64 framesToW MA_PRIVATE ma_uint64 ma_dr_wav_read_pcm_frames_s16__msadpcm(ma_dr_wav* pWav, ma_uint64 framesToRead, ma_int16* pBufferOut) { ma_uint64 totalFramesRead = 0; + static ma_int32 adaptationTable[] = { + 230, 230, 230, 230, 307, 409, 512, 614, + 768, 614, 512, 409, 307, 230, 230, 230 + }; + static ma_int32 coeff1Table[] = { 256, 512, 0, 192, 240, 460, 392 }; + static ma_int32 coeff2Table[] = { 0, -256, 0, 64, 0, -208, -232 }; MA_DR_WAV_ASSERT(pWav != NULL); MA_DR_WAV_ASSERT(framesToRead > 0); while (pWav->readCursorInPCMFrames < pWav->totalPCMFrameCount) { @@ -80350,6 +81193,9 @@ MA_PRIVATE ma_uint64 ma_dr_wav_read_pcm_frames_s16__msadpcm(ma_dr_wav* pWav, ma_ pWav->msadpcm.cachedFrames[2] = pWav->msadpcm.prevFrames[0][0]; pWav->msadpcm.cachedFrames[3] = pWav->msadpcm.prevFrames[0][1]; pWav->msadpcm.cachedFrameCount = 2; + if (pWav->msadpcm.predictor[0] >= ma_dr_wav_countof(coeff1Table)) { + return totalFramesRead; + } } else { ma_uint8 header[14]; if (pWav->onRead(pWav->pUserData, header, sizeof(header)) != sizeof(header)) { @@ -80369,6 +81215,9 @@ MA_PRIVATE ma_uint64 ma_dr_wav_read_pcm_frames_s16__msadpcm(ma_dr_wav* pWav, ma_ pWav->msadpcm.cachedFrames[2] = pWav->msadpcm.prevFrames[0][1]; pWav->msadpcm.cachedFrames[3] = pWav->msadpcm.prevFrames[1][1]; pWav->msadpcm.cachedFrameCount = 2; + if (pWav->msadpcm.predictor[0] >= ma_dr_wav_countof(coeff1Table) || pWav->msadpcm.predictor[1] >= ma_dr_wav_countof(coeff2Table)) { + return totalFramesRead; + } } } while (framesToRead > 0 && pWav->msadpcm.cachedFrameCount > 0 && pWav->readCursorInPCMFrames < pWav->totalPCMFrameCount) { @@ -80391,12 +81240,6 @@ MA_PRIVATE ma_uint64 ma_dr_wav_read_pcm_frames_s16__msadpcm(ma_dr_wav* pWav, ma_ if (pWav->msadpcm.bytesRemainingInBlock == 0) { continue; } else { - static ma_int32 adaptationTable[] = { - 230, 230, 230, 230, 307, 409, 512, 614, - 768, 614, 512, 409, 307, 230, 230, 230 - }; - static ma_int32 coeff1Table[] = { 256, 512, 0, 192, 240, 460, 392 }; - static ma_int32 coeff2Table[] = { 0, -256, 0, 64, 0, -208, -232 }; ma_uint8 nibbles; ma_int32 nibble0; ma_int32 nibble1; @@ -81647,7 +82490,7 @@ MA_API void ma_dr_wav_f32_to_s32(ma_int32* pOut, const float* pIn, size_t sample return; } for (i = 0; i < sampleCount; ++i) { - *pOut++ = (ma_int32)(2147483648.0 * pIn[i]); + *pOut++ = (ma_int32)(2147483648.0f * pIn[i]); } } MA_API void ma_dr_wav_f64_to_s32(ma_int32* pOut, const double* pIn, size_t sampleCount) @@ -82061,7 +82904,7 @@ MA_API ma_bool32 ma_dr_wav_fourcc_equal(const ma_uint8* a, const char* b) #endif /* MA_NO_WAV */ #if !defined(MA_NO_FLAC) && !defined(MA_NO_DECODING) -#if !defined(MA_DR_FLAC_IMPLEMENTATION) && !defined(MA_DR_FLAC_IMPLEMENTATION) /* For backwards compatibility. Will be removed in version 0.11 for cleanliness. */ +#if !defined(MA_DR_FLAC_IMPLEMENTATION) /* dr_flac_c begin */ #ifndef ma_dr_flac_c #define ma_dr_flac_c @@ -85093,6 +85936,7 @@ static ma_bool32 ma_dr_flac__read_subframe_header(ma_dr_flac_bs* bs, ma_dr_flac_ if ((header & 0x80) != 0) { return MA_FALSE; } + pSubframe->lpcOrder = 0; type = (header & 0x7E) >> 1; if (type == 0) { pSubframe->subframeType = MA_DR_FLAC_SUBFRAME_CONSTANT; @@ -85150,6 +85994,9 @@ static ma_bool32 ma_dr_flac__decode_subframe(ma_dr_flac_bs* bs, ma_dr_flac_frame } subframeBitsPerSample -= pSubframe->wastedBitsPerSample; pSubframe->pSamplesS32 = pDecodedSamplesOut; + if (frame->header.blockSizeInPCMFrames < pSubframe->lpcOrder) { + return MA_FALSE; + } switch (pSubframe->subframeType) { case MA_DR_FLAC_SUBFRAME_CONSTANT: @@ -89806,7 +90653,7 @@ MA_API ma_bool32 ma_dr_flac_next_cuesheet_track(ma_dr_flac_cuesheet_track_iterat #endif /* MA_NO_FLAC */ #if !defined(MA_NO_MP3) && !defined(MA_NO_DECODING) -#if !defined(MA_DR_MP3_IMPLEMENTATION) && !defined(MA_DR_MP3_IMPLEMENTATION) /* For backwards compatibility. Will be removed in version 0.11 for cleanliness. */ +#if !defined(MA_DR_MP3_IMPLEMENTATION) /* dr_mp3_c begin */ #ifndef ma_dr_mp3_c #define ma_dr_mp3_c @@ -89867,7 +90714,7 @@ MA_API const char* ma_dr_mp3_version_string(void) #define MA_DR_MP3_MIN(a, b) ((a) > (b) ? (b) : (a)) #define MA_DR_MP3_MAX(a, b) ((a) < (b) ? (b) : (a)) #if !defined(MA_DR_MP3_NO_SIMD) -#if !defined(MA_DR_MP3_ONLY_SIMD) && (defined(_M_X64) || defined(__x86_64__) || defined(__aarch64__) || defined(_M_ARM64)) +#if !defined(MA_DR_MP3_ONLY_SIMD) && (defined(_M_X64) || defined(__x86_64__) || defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC)) #define MA_DR_MP3_ONLY_SIMD #endif #if ((defined(_MSC_VER) && _MSC_VER >= 1400) && defined(_M_X64)) || ((defined(__i386) || defined(_M_IX86) || defined(__i386__) || defined(__x86_64__)) && ((defined(_M_IX86_FP) && _M_IX86_FP == 2) || defined(__SSE2__))) @@ -89940,7 +90787,7 @@ end: return g_have_simd - 1; #endif } -#elif defined(__ARM_NEON) || defined(__aarch64__) || defined(_M_ARM64) +#elif defined(__ARM_NEON) || defined(__aarch64__) || defined(_M_ARM64) || defined(_M_ARM64EC) #include #define MA_DR_MP3_HAVE_SSE 0 #define MA_DR_MP3_HAVE_SIMD 1 @@ -89969,7 +90816,7 @@ static int ma_dr_mp3_have_simd(void) #else #define MA_DR_MP3_HAVE_SIMD 0 #endif -#if defined(__ARM_ARCH) && (__ARM_ARCH >= 6) && !defined(__aarch64__) && !defined(_M_ARM64) && !defined(__ARM_ARCH_6M__) +#if defined(__ARM_ARCH) && (__ARM_ARCH >= 6) && !defined(__aarch64__) && !defined(_M_ARM64) && !defined(_M_ARM64EC) && !defined(__ARM_ARCH_6M__) #define MA_DR_MP3_HAVE_ARMV6 1 static __inline__ __attribute__((always_inline)) ma_int32 ma_dr_mp3_clip_int16_arm(ma_int32 a) { @@ -91135,8 +91982,8 @@ static ma_int16 ma_dr_mp3d_scale_pcm(float sample) s32 -= (s32 < 0); s = (ma_int16)ma_dr_mp3_clip_int16_arm(s32); #else - if (sample >= 32766.5) return (ma_int16) 32767; - if (sample <= -32767.5) return (ma_int16)-32768; + if (sample >= 32766.5f) return (ma_int16) 32767; + if (sample <= -32767.5f) return (ma_int16)-32768; s = (ma_int16)(sample + .5f); s -= (s < 0); #endif @@ -91522,9 +92369,9 @@ MA_API void ma_dr_mp3dec_f32_to_s16(const float *in, ma_int16 *out, size_t num_s for(; i < num_samples; i++) { float sample = in[i] * 32768.0f; - if (sample >= 32766.5) + if (sample >= 32766.5f) out[i] = (ma_int16) 32767; - else if (sample <= -32767.5) + else if (sample <= -32767.5f) out[i] = (ma_int16)-32768; else { @@ -92602,7 +93449,7 @@ For more information, please refer to =============================================================================== ALTERNATIVE 2 - MIT No Attribution =============================================================================== -Copyright 2023 David Reid +Copyright 2025 David Reid Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in diff --git a/vendor/miniaudio/synchronization.odin b/vendor/miniaudio/synchronization.odin index 012f52c2c..08182c32b 100644 --- a/vendor/miniaudio/synchronization.odin +++ b/vendor/miniaudio/synchronization.odin @@ -62,6 +62,11 @@ when !NO_THREADING { Signals the specified auto-reset event. */ event_signal :: proc(pEvent: ^event) -> result --- + + semaphore_init :: proc(initialValue: i32, pSemaphore: ^semaphore) -> result --- + semaphore_uninit :: proc(pSemaphore: ^semaphore) --- + semaphore_wait :: proc(pSemaphore: ^semaphore) -> result --- + semaphore_release :: proc(pSemaphore: ^semaphore) -> result --- } /* NO_THREADING */ } diff --git a/vendor/miniaudio/utilities.odin b/vendor/miniaudio/utilities.odin index 9285874b6..d59bb75a4 100644 --- a/vendor/miniaudio/utilities.odin +++ b/vendor/miniaudio/utilities.odin @@ -7,7 +7,7 @@ foreign import lib { LIB } @(default_calling_convention="c", link_prefix="ma_") foreign lib { /* - Calculates a buffer size in milliseconds from the specified number of frames and sample rate. + Calculates a buffer size in milliseconds (rounded up) from the specified number of frames and sample rate. */ calculate_buffer_size_in_milliseconds_from_frames :: proc(bufferSizeInFrames: u32, sampleRate: u32) -> u32 --- @@ -163,6 +163,8 @@ foreign lib { data_source_read_pcm_frames :: proc(pDataSource: ^data_source, pFramesOut: rawptr, frameCount: u64, pFramesRead: ^u64) -> result --- /* Must support pFramesOut = NULL in which case a forward seek should be performed. */ data_source_seek_pcm_frames :: proc(pDataSource: ^data_source, frameCount: u64, pFramesSeeked: ^u64) -> result --- /* Can only seek forward. Equivalent to ma_data_source_read_pcm_frames(pDataSource, NULL, frameCount); */ data_source_seek_to_pcm_frame :: proc(pDataSource: ^data_source, frameIndex: u64) -> result --- + data_source_seek_seconds :: proc(pDataSource: ^data_source, secondCount: f32, pSecondsSeeked: ^f32) -> result --- /* Can only seek forward. Abstraction to ma_data_source_seek_pcm_frames() */ + data_source_seek_to_seconds :: proc(pDataSource: ^data_source, seekPointInSeconds: f32) -> result --- /* Abstraction to ma_data_source_seek_to_pcm_frame() */ data_source_get_data_format :: proc(pDataSource: ^data_source, pFormat: ^format, pChannels: ^u32, pSampleRate: ^u32, pChannelMap: [^]channel, channelMapCap: c.size_t) -> result --- data_source_get_cursor_in_pcm_frames :: proc(pDataSource: ^data_source, pCursor: ^u64) -> result --- data_source_get_length_in_pcm_frames :: proc(pDataSource: ^data_source, pLength: ^u64) -> result --- /* Returns MA_NOT_IMPLEMENTED if the length is unknown or cannot be determined. Decoders can return this. */ From 326454f0f00945a2a4f5d02e8d8c5bc37f472883 Mon Sep 17 00:00:00 2001 From: Laytan Date: Fri, 16 May 2025 22:14:26 +0200 Subject: [PATCH 080/120] generate xlib package docs on linux --- examples/all/all_linux.odin | 6 +++++- examples/all/all_vendor.odin | 4 ---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/all/all_linux.odin b/examples/all/all_linux.odin index ca51d6562..dde712b8d 100644 --- a/examples/all/all_linux.odin +++ b/examples/all/all_linux.odin @@ -3,4 +3,8 @@ package all import linux "core:sys/linux" -_ :: linux \ No newline at end of file +import xlib "vendor:x11/xlib" + +_ :: linux + +_ :: xlib diff --git a/examples/all/all_vendor.odin b/examples/all/all_vendor.odin index b224a3bbe..ebbfe786b 100644 --- a/examples/all/all_vendor.odin +++ b/examples/all/all_vendor.odin @@ -28,8 +28,6 @@ import nvg "vendor:nanovg" import nvg_gl "vendor:nanovg/gl" import fontstash "vendor:fontstash" -import xlib "vendor:x11/xlib" - _ :: cgltf // _ :: commonmark _ :: ENet @@ -57,8 +55,6 @@ _ :: nvg _ :: nvg_gl _ :: fontstash -_ :: xlib - // NOTE: needed for doc generator From d77124feae57a919734e77e88c3801d86ee097dd Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 17 May 2025 11:36:24 +0100 Subject: [PATCH 081/120] Add Objective-C helper for creating subclasses --- core/sys/darwin/Foundation/NSApplication.odin | 2 +- core/sys/darwin/Foundation/NSArray.odin | 46 ++ core/sys/darwin/Foundation/NSMenu.odin | 629 +++++++++++++++--- core/sys/darwin/Foundation/objc_helper.odin | 137 ++++ 4 files changed, 716 insertions(+), 98 deletions(-) create mode 100644 core/sys/darwin/Foundation/objc_helper.odin diff --git a/core/sys/darwin/Foundation/NSApplication.odin b/core/sys/darwin/Foundation/NSApplication.odin index 254da75ad..7b14d8ebc 100644 --- a/core/sys/darwin/Foundation/NSApplication.odin +++ b/core/sys/darwin/Foundation/NSApplication.odin @@ -99,7 +99,7 @@ Application_setTitle :: proc "c" (self: ^Application, title: ^String) { } @(objc_type=Application, objc_name="mainMenu") -Window_mainMenu :: proc "c" (self: ^Application) -> ^Menu { +Application_mainMenu :: proc "c" (self: ^Application) -> ^Menu { return msgSend(^Menu, self, "mainMenu") } diff --git a/core/sys/darwin/Foundation/NSArray.odin b/core/sys/darwin/Foundation/NSArray.odin index b238f63f8..0977c6469 100644 --- a/core/sys/darwin/Foundation/NSArray.odin +++ b/core/sys/darwin/Foundation/NSArray.odin @@ -40,3 +40,49 @@ Array_objectAs :: proc "c" (self: ^Array, index: UInteger, $T: typeid) -> T wher Array_count :: proc "c" (self: ^Array) -> UInteger { return msgSend(UInteger, self, "count") } + + +@(objc_class="NSMutableArray") +MutableArray :: struct { + using _: Copying(MutableArray), +} + +@(objc_type=MutableArray, objc_name="alloc", objc_is_class_method=true) +MutableArray_alloc :: proc "c" () -> ^MutableArray { + return msgSend(^MutableArray, MutableArray, "alloc") +} + +@(objc_type=MutableArray, objc_name="init") +MutableArray_init :: proc "c" (self: ^MutableArray) -> ^MutableArray { + return msgSend(^MutableArray, self, "init") +} + +@(objc_type=MutableArray, objc_name="initWithObjects") +MutableArray_initWithObjects :: proc "c" (self: ^MutableArray, objects: [^]^Object, count: UInteger) -> ^MutableArray { + return msgSend(^MutableArray, self, "initWithObjects:count:", objects, count) +} + +@(objc_type=MutableArray, objc_name="initWithCoder") +MutableArray_initWithCoder :: proc "c" (self: ^MutableArray, coder: ^Coder) -> ^MutableArray { + return msgSend(^MutableArray, self, "initWithCoder:", coder) +} + +@(objc_type=MutableArray, objc_name="object") +MutableArray_object :: proc "c" (self: ^MutableArray, index: UInteger) -> ^Object { + return msgSend(^Object, self, "objectAtIndex:", index) +} +@(objc_type=MutableArray, objc_name="objectAs") +MutableArray_objectAs :: proc "c" (self: ^MutableArray, index: UInteger, $T: typeid) -> T where intrinsics.type_is_pointer(T), intrinsics.type_is_subtype_of(T, ^Object) { + return (T)(MutableArray_object(self, index)) +} + +@(objc_type=MutableArray, objc_name="count") +MutableArray_count :: proc "c" (self: ^MutableArray) -> UInteger { + return msgSend(UInteger, self, "count") +} + + +@(objc_type=MutableArray, objc_name="exchangeObjectAtIndex") +MutableArray_exchangeObjectAtIndex :: proc "c" (self: ^MutableArray, idx1, idx2: UInteger) { + msgSend(nil, self, "exchangeObjectAtIndex:withObjectAtIndex:", idx1, idx2) +} diff --git a/core/sys/darwin/Foundation/NSMenu.odin b/core/sys/darwin/Foundation/NSMenu.odin index 9a74151b0..747920ab7 100644 --- a/core/sys/darwin/Foundation/NSMenu.odin +++ b/core/sys/darwin/Foundation/NSMenu.odin @@ -2,127 +2,562 @@ package objc_Foundation import "base:builtin" import "base:intrinsics" - -KeyEquivalentModifierFlag :: enum UInteger { - CapsLock = 16, // Set if Caps Lock key is pressed. - Shift = 17, // Set if Shift key is pressed. - Control = 18, // Set if Control key is pressed. - Option = 19, // Set if Option or Alternate key is pressed. - Command = 20, // Set if Command key is pressed. - NumericPad = 21, // Set if any key in the numeric keypad is pressed. - Help = 22, // Set if the Help key is pressed. - Function = 23, // Set if any function key is pressed. -} -KeyEquivalentModifierMask :: distinct bit_set[KeyEquivalentModifierFlag; UInteger] - -// Used to retrieve only the device-independent modifier flags, allowing applications to mask off the device-dependent modifier flags, including event coalescing information. -KeyEventModifierFlagDeviceIndependentFlagsMask := transmute(KeyEquivalentModifierMask)_KeyEventModifierFlagDeviceIndependentFlagsMask -@(private) _KeyEventModifierFlagDeviceIndependentFlagsMask := UInteger(0xffff0000) +import "core:c" -MenuItemCallback :: proc "c" (unused: rawptr, name: SEL, sender: ^Object) - - -@(objc_class="NSMenuItem") -MenuItem :: struct {using _: Object} - -@(objc_type=MenuItem, objc_name="alloc", objc_is_class_method=true) -MenuItem_alloc :: proc "c" () -> ^MenuItem { - return msgSend(^MenuItem, MenuItem, "alloc") +MenuSelectionMode :: enum c.long { + Automatic = 0, + SelectOne = 1, + SelectAny = 2, } -@(objc_type=MenuItem, objc_name="registerActionCallback", objc_is_class_method=true) -MenuItem_registerActionCallback :: proc "c" (name: cstring, callback: MenuItemCallback) -> SEL { - s := string(name) - n := len(s) - sel: SEL - if n > 0 && s[n-1] != ':' { - col_name := intrinsics.alloca(n+2, 1) - builtin.copy(col_name[:n], s) - col_name[n] = ':' - col_name[n+1] = 0 - sel = sel_registerName(cstring(col_name)) - } else { - sel = sel_registerName(name) - } - if callback != nil { - class_addMethod(intrinsics.objc_find_class("NSObject"), sel, auto_cast callback, "v@:@") - } - return sel +MenuPresentationStyle :: enum c.long { + Regular = 0, + Palette = 1, } -@(objc_type=MenuItem, objc_name="separatorItem", objc_is_class_method=true) -MenuItem_separatorItem :: proc "c" () -> ^MenuItem { - return msgSend(^MenuItem, MenuItem, "separatorItem") +UserInterfaceLayoutDirection :: enum c.long { + LeftToRight = 0, + RightToLeft = 1, } -@(objc_type=MenuItem, objc_name="init") -MenuItem_init :: proc "c" (self: ^MenuItem) -> ^MenuItem { - return msgSend(^MenuItem, self, "init") +MenuPropertyItem :: enum c.ulong { + Title = 0, + AttributedTitle = 1, + KeyEquivalent = 2, + Image = 3, + Enabled = 4, + AccessibilityDescription = 5, } - -@(objc_type=MenuItem, objc_name="initWithTitle") -MenuItem_initWithTitle :: proc "c" (self: ^MenuItem, title: ^String, action: SEL, keyEquivalent: ^String) -> ^MenuItem { - return msgSend(^MenuItem, self, "initWithTitle:action:keyEquivalent:", title, action, keyEquivalent) -} - -@(objc_type=MenuItem, objc_name="setKeyEquivalentModifierMask") -MenuItem_setKeyEquivalentModifierMask :: proc "c" (self: ^MenuItem, modifierMask: KeyEquivalentModifierMask) { - msgSend(nil, self, "setKeyEquivalentModifierMask:", modifierMask) -} - -@(objc_type=MenuItem, objc_name="keyEquivalentModifierMask") -MenuItem_keyEquivalentModifierMask :: proc "c" (self: ^MenuItem) -> KeyEquivalentModifierMask { - return msgSend(KeyEquivalentModifierMask, self, "keyEquivalentModifierMask") -} - -@(objc_type=MenuItem, objc_name="setSubmenu") -MenuItem_setSubmenu :: proc "c" (self: ^MenuItem, submenu: ^Menu) { - msgSend(nil, self, "setSubmenu:", submenu) -} - -@(objc_type=MenuItem, objc_name="title") -MenuItem_title :: proc "c" (self: ^MenuItem) -> ^String { - return msgSend(^String, self, "title") -} - -@(objc_type=MenuItem, objc_name="setTitle") -MenuItem_setTitle :: proc "c" (self: ^MenuItem, title: ^String) -> ^String { - return msgSend(^String, self, "title:", title) -} - +MenuProperties :: distinct bit_set[MenuPropertyItem; c.ulong] @(objc_class="NSMenu") Menu :: struct {using _: Object} -@(objc_type=Menu, objc_name="alloc", objc_is_class_method=true) -Menu_alloc :: proc "c" () -> ^Menu { - return msgSend(^Menu, Menu, "alloc") -} - @(objc_type=Menu, objc_name="init") Menu_init :: proc "c" (self: ^Menu) -> ^Menu { return msgSend(^Menu, self, "init") } + @(objc_type=Menu, objc_name="initWithTitle") -Menu_initWithTitle :: proc "c" (self: ^Menu, title: ^String) -> ^Menu { +Menu_initWithTitle :: #force_inline proc "c" (self: ^Menu, title: ^String) -> ^Menu { return msgSend(^Menu, self, "initWithTitle:", title) } - - +@(objc_type=Menu, objc_name="initWithCoder") +Menu_initWithCoder :: #force_inline proc "c" (self: ^Menu, coder: ^Coder) -> ^Menu { + return msgSend(^Menu, self, "initWithCoder:", coder) +} +@(objc_type=Menu, objc_name="popUpContextMenu_withEvent_forView", objc_is_class_method=true) +Menu_popUpContextMenu_withEvent_forView :: #force_inline proc "c" (menu: ^Menu, event: ^Event, view: ^View) { + msgSend(nil, Menu, "popUpContextMenu:withEvent:forView:", menu, event, view) +} +// @(objc_type=Menu, objc_name="popUpContextMenu_withEvent_forView_withFont", objc_is_class_method=true) +// Menu_popUpContextMenu_withEvent_forView_withFont :: #force_inline proc "c" (menu: ^Menu, event: ^Event, view: ^View, font: ^Font) { +// msgSend(nil, Menu, "popUpContextMenu:withEvent:forView:withFont:", menu, event, view, font) +// } +@(objc_type=Menu, objc_name="popUpMenuPositioningItem") +Menu_popUpMenuPositioningItem :: #force_inline proc "c" (self: ^Menu, item: ^MenuItem, location: Point, view: ^View) -> bool { + return msgSend(bool, self, "popUpMenuPositioningItem:atLocation:inView:", item, location, view) +} +@(objc_type=Menu, objc_name="setMenuBarVisible", objc_is_class_method=true) +Menu_setMenuBarVisible :: #force_inline proc "c" (visible: bool) { + msgSend(nil, Menu, "setMenuBarVisible:", visible) +} +@(objc_type=Menu, objc_name="menuBarVisible", objc_is_class_method=true) +Menu_menuBarVisible :: #force_inline proc "c" () -> bool { + return msgSend(bool, Menu, "menuBarVisible") +} +@(objc_type=Menu, objc_name="insertItem") +Menu_insertItem :: #force_inline proc "c" (self: ^Menu, newItem: ^MenuItem, index: Integer) { + msgSend(nil, self, "insertItem:atIndex:", newItem, index) +} @(objc_type=Menu, objc_name="addItem") -Menu_addItem :: proc "c" (self: ^Menu, item: ^MenuItem) { - msgSend(nil, self, "addItem:", item) +Menu_addItem :: #force_inline proc "c" (self: ^Menu, newItem: ^MenuItem) { + msgSend(nil, self, "addItem:", newItem) +} +@(objc_type=Menu, objc_name="insertItemWithTitle") +Menu_insertItemWithTitle :: #force_inline proc "c" (self: ^Menu, string: ^String, selector: SEL, charCode: ^String, index: Integer) -> ^MenuItem { + return msgSend(^MenuItem, self, "insertItemWithTitle:action:keyEquivalent:atIndex:", string, selector, charCode, index) } - @(objc_type=Menu, objc_name="addItemWithTitle") -Menu_addItemWithTitle :: proc "c" (self: ^Menu, title: ^String, selector: SEL, keyEquivalent: ^String) -> ^MenuItem { - return msgSend(^MenuItem, self, "addItemWithTitle:action:keyEquivalent:", title, selector, keyEquivalent) +Menu_addItemWithTitle :: #force_inline proc "c" (self: ^Menu, string: ^String, selector: SEL, charCode: ^String) -> ^MenuItem { + return msgSend(^MenuItem, self, "addItemWithTitle:action:keyEquivalent:", string, selector, charCode) +} +@(objc_type=Menu, objc_name="removeItemAtIndex") +Menu_removeItemAtIndex :: #force_inline proc "c" (self: ^Menu, index: Integer) { + msgSend(nil, self, "removeItemAtIndex:", index) +} +@(objc_type=Menu, objc_name="removeItem") +Menu_removeItem :: #force_inline proc "c" (self: ^Menu, item: ^MenuItem) { + msgSend(nil, self, "removeItem:", item) +} +@(objc_type=Menu, objc_name="setSubmenu") +Menu_setSubmenu :: #force_inline proc "c" (self: ^Menu, menu: ^Menu, item: ^MenuItem) { + msgSend(nil, self, "setSubmenu:forItem:", menu, item) +} +@(objc_type=Menu, objc_name="removeAllItems") +Menu_removeAllItems :: #force_inline proc "c" (self: ^Menu) { + msgSend(nil, self, "removeAllItems") +} +@(objc_type=Menu, objc_name="itemAtIndex") +Menu_itemAtIndex :: #force_inline proc "c" (self: ^Menu, index: Integer) -> ^MenuItem { + return msgSend(^MenuItem, self, "itemAtIndex:", index) +} +@(objc_type=Menu, objc_name="indexOfItem") +Menu_indexOfItem :: #force_inline proc "c" (self: ^Menu, item: ^MenuItem) -> Integer { + return msgSend(Integer, self, "indexOfItem:", item) +} +@(objc_type=Menu, objc_name="indexOfItemWithTitle") +Menu_indexOfItemWithTitle :: #force_inline proc "c" (self: ^Menu, title: ^String) -> Integer { + return msgSend(Integer, self, "indexOfItemWithTitle:", title) +} +@(objc_type=Menu, objc_name="indexOfItemWithTag") +Menu_indexOfItemWithTag :: #force_inline proc "c" (self: ^Menu, tag: Integer) -> Integer { + return msgSend(Integer, self, "indexOfItemWithTag:", tag) +} +@(objc_type=Menu, objc_name="indexOfItemWithRepresentedObject") +Menu_indexOfItemWithRepresentedObject :: #force_inline proc "c" (self: ^Menu, object: id) -> Integer { + return msgSend(Integer, self, "indexOfItemWithRepresentedObject:", object) +} +@(objc_type=Menu, objc_name="indexOfItemWithSubmenu") +Menu_indexOfItemWithSubmenu :: #force_inline proc "c" (self: ^Menu, submenu: ^Menu) -> Integer { + return msgSend(Integer, self, "indexOfItemWithSubmenu:", submenu) +} +@(objc_type=Menu, objc_name="indexOfItemWithTarget") +Menu_indexOfItemWithTarget :: #force_inline proc "c" (self: ^Menu, target: id, actionSelector: SEL) -> Integer { + return msgSend(Integer, self, "indexOfItemWithTarget:andAction:", target, actionSelector) +} +@(objc_type=Menu, objc_name="itemWithTitle") +Menu_itemWithTitle :: #force_inline proc "c" (self: ^Menu, title: ^String) -> ^MenuItem { + return msgSend(^MenuItem, self, "itemWithTitle:", title) +} +@(objc_type=Menu, objc_name="itemWithTag") +Menu_itemWithTag :: #force_inline proc "c" (self: ^Menu, tag: Integer) -> ^MenuItem { + return msgSend(^MenuItem, self, "itemWithTag:", tag) +} +@(objc_type=Menu, objc_name="update") +Menu_update :: #force_inline proc "c" (self: ^Menu) { + msgSend(nil, self, "update") +} +@(objc_type=Menu, objc_name="performKeyEquivalent") +Menu_performKeyEquivalent :: #force_inline proc "c" (self: ^Menu, event: ^Event) -> bool { + return msgSend(bool, self, "performKeyEquivalent:", event) +} +@(objc_type=Menu, objc_name="itemChanged") +Menu_itemChanged :: #force_inline proc "c" (self: ^Menu, item: ^MenuItem) { + msgSend(nil, self, "itemChanged:", item) +} +@(objc_type=Menu, objc_name="performActionForItemAtIndex") +Menu_performActionForItemAtIndex :: #force_inline proc "c" (self: ^Menu, index: Integer) { + msgSend(nil, self, "performActionForItemAtIndex:", index) +} +@(objc_type=Menu, objc_name="cancelTracking") +Menu_cancelTracking :: #force_inline proc "c" (self: ^Menu) { + msgSend(nil, self, "cancelTracking") +} +@(objc_type=Menu, objc_name="cancelTrackingWithoutAnimation") +Menu_cancelTrackingWithoutAnimation :: #force_inline proc "c" (self: ^Menu) { + msgSend(nil, self, "cancelTrackingWithoutAnimation") +} +@(objc_type=Menu, objc_name="title") +Menu_title :: #force_inline proc "c" (self: ^Menu) -> ^String { + return msgSend(^String, self, "title") +} +@(objc_type=Menu, objc_name="setTitle") +Menu_setTitle :: #force_inline proc "c" (self: ^Menu, title: ^String) { + msgSend(nil, self, "setTitle:", title) +} +@(objc_type=Menu, objc_name="supermenu") +Menu_supermenu :: #force_inline proc "c" (self: ^Menu) -> ^Menu { + return msgSend(^Menu, self, "supermenu") +} +@(objc_type=Menu, objc_name="setSupermenu") +Menu_setSupermenu :: #force_inline proc "c" (self: ^Menu, supermenu: ^Menu) { + msgSend(nil, self, "setSupermenu:", supermenu) +} +@(objc_type=Menu, objc_name="itemArray") +Menu_itemArray :: #force_inline proc "c" (self: ^Menu) -> ^Array { + return msgSend(^Array, self, "itemArray") +} +@(objc_type=Menu, objc_name="setItemArray") +Menu_setItemArray :: #force_inline proc "c" (self: ^Menu, itemArray: ^Array) { + msgSend(nil, self, "setItemArray:", itemArray) +} +@(objc_type=Menu, objc_name="numberOfItems") +Menu_numberOfItems :: #force_inline proc "c" (self: ^Menu) -> Integer { + return msgSend(Integer, self, "numberOfItems") +} +@(objc_type=Menu, objc_name="autoenablesItems") +Menu_autoenablesItems :: #force_inline proc "c" (self: ^Menu) -> bool { + return msgSend(bool, self, "autoenablesItems") +} +@(objc_type=Menu, objc_name="setAutoenablesItems") +Menu_setAutoenablesItems :: #force_inline proc "c" (self: ^Menu, autoenablesItems: bool) { + msgSend(nil, self, "setAutoenablesItems:", autoenablesItems) +} +@(objc_type=Menu, objc_name="delegate") +Menu_delegate :: #force_inline proc "c" (self: ^Menu) -> ^MenuDelegate { + return msgSend(^MenuDelegate, self, "delegate") +} +@(objc_type=Menu, objc_name="setDelegate") +Menu_setDelegate :: #force_inline proc "c" (self: ^Menu, delegate: ^MenuDelegate) { + msgSend(nil, self, "setDelegate:", delegate) +} +@(objc_type=Menu, objc_name="menuBarHeight") +Menu_menuBarHeight :: #force_inline proc "c" (self: ^Menu) -> Float { + return msgSend(Float, self, "menuBarHeight") +} +@(objc_type=Menu, objc_name="highlightedItem") +Menu_highlightedItem :: #force_inline proc "c" (self: ^Menu) -> ^MenuItem { + return msgSend(^MenuItem, self, "highlightedItem") +} +@(objc_type=Menu, objc_name="minimumWidth") +Menu_minimumWidth :: #force_inline proc "c" (self: ^Menu) -> Float { + return msgSend(Float, self, "minimumWidth") +} +@(objc_type=Menu, objc_name="setMinimumWidth") +Menu_setMinimumWidth :: #force_inline proc "c" (self: ^Menu, minimumWidth: Float) { + msgSend(nil, self, "setMinimumWidth:", minimumWidth) +} +@(objc_type=Menu, objc_name="size") +Menu_size :: #force_inline proc "c" (self: ^Menu) -> Size { + return msgSend(Size, self, "size") +} +// @(objc_type=Menu, objc_name="font") +// Menu_font :: #force_inline proc "c" (self: ^Menu) -> ^Font { +// return msgSend(^Font, self, "font") +// } +// @(objc_type=Menu, objc_name="setFont") +// Menu_setFont :: #force_inline proc "c" (self: ^Menu, font: ^Font) { +// msgSend(nil, self, "setFont:", font) +// } +@(objc_type=Menu, objc_name="allowsContextMenuPlugIns") +Menu_allowsContextMenuPlugIns :: #force_inline proc "c" (self: ^Menu) -> bool { + return msgSend(bool, self, "allowsContextMenuPlugIns") +} +@(objc_type=Menu, objc_name="setAllowsContextMenuPlugIns") +Menu_setAllowsContextMenuPlugIns :: #force_inline proc "c" (self: ^Menu, allowsContextMenuPlugIns: bool) { + msgSend(nil, self, "setAllowsContextMenuPlugIns:", allowsContextMenuPlugIns) +} +@(objc_type=Menu, objc_name="showsStateColumn") +Menu_showsStateColumn :: #force_inline proc "c" (self: ^Menu) -> bool { + return msgSend(bool, self, "showsStateColumn") +} +@(objc_type=Menu, objc_name="setShowsStateColumn") +Menu_setShowsStateColumn :: #force_inline proc "c" (self: ^Menu, showsStateColumn: bool) { + msgSend(nil, self, "setShowsStateColumn:", showsStateColumn) +} +@(objc_type=Menu, objc_name="userInterfaceLayoutDirection") +Menu_userInterfaceLayoutDirection :: #force_inline proc "c" (self: ^Menu) -> UserInterfaceLayoutDirection { + return msgSend(UserInterfaceLayoutDirection, self, "userInterfaceLayoutDirection") +} +@(objc_type=Menu, objc_name="setUserInterfaceLayoutDirection") +Menu_setUserInterfaceLayoutDirection :: #force_inline proc "c" (self: ^Menu, userInterfaceLayoutDirection: UserInterfaceLayoutDirection) { + msgSend(nil, self, "setUserInterfaceLayoutDirection:", userInterfaceLayoutDirection) +} +@(objc_type=Menu, objc_name="paletteMenuWithColors_titles_selectionHandler", objc_is_class_method=true) +Menu_paletteMenuWithColors_titles_selectionHandler :: #force_inline proc "c" (colors: ^Array, itemTitles: ^Array, onSelectionChange: proc "c" (_arg_0: ^Menu)) -> ^Menu { + return msgSend(^Menu, Menu, "paletteMenuWithColors:titles:selectionHandler:", colors, itemTitles, onSelectionChange) +} +// @(objc_type=Menu, objc_name="paletteMenuWithColors_titles_templateImage_selectionHandler", objc_is_class_method=true) +// Menu_paletteMenuWithColors_titles_templateImage_selectionHandler :: #force_inline proc "c" (colors: ^Array, itemTitles: ^Array, image: ^Image, onSelectionChange: proc "c" (_arg_0: ^Menu)) -> ^Menu { +// return msgSend(^Menu, Menu, "paletteMenuWithColors:titles:templateImage:selectionHandler:", colors, itemTitles, image, onSelectionChange) +// } +@(objc_type=Menu, objc_name="presentationStyle") +Menu_presentationStyle :: #force_inline proc "c" (self: ^Menu) -> MenuPresentationStyle { + return msgSend(MenuPresentationStyle, self, "presentationStyle") +} +@(objc_type=Menu, objc_name="setPresentationStyle") +Menu_setPresentationStyle :: #force_inline proc "c" (self: ^Menu, presentationStyle: MenuPresentationStyle) { + msgSend(nil, self, "setPresentationStyle:", presentationStyle) +} +@(objc_type=Menu, objc_name="selectionMode") +Menu_selectionMode :: #force_inline proc "c" (self: ^Menu) -> MenuSelectionMode { + return msgSend(MenuSelectionMode, self, "selectionMode") +} +@(objc_type=Menu, objc_name="setSelectionMode") +Menu_setSelectionMode :: #force_inline proc "c" (self: ^Menu, selectionMode: MenuSelectionMode) { + msgSend(nil, self, "setSelectionMode:", selectionMode) +} +@(objc_type=Menu, objc_name="selectedItems") +Menu_selectedItems :: #force_inline proc "c" (self: ^Menu) -> ^Array { + return msgSend(^Array, self, "selectedItems") +} +@(objc_type=Menu, objc_name="setSelectedItems") +Menu_setSelectedItems :: #force_inline proc "c" (self: ^Menu, selectedItems: ^Array) { + msgSend(nil, self, "setSelectedItems:", selectedItems) +} +@(objc_type=Menu, objc_name="submenuAction") +Menu_submenuAction :: #force_inline proc "c" (self: ^Menu, sender: id) { + msgSend(nil, self, "submenuAction:", sender) +} +@(objc_type=Menu, objc_name="propertiesToUpdate") +Menu_propertiesToUpdate :: #force_inline proc "c" (self: ^Menu) -> MenuProperties { + return msgSend(MenuProperties, self, "propertiesToUpdate") +} +@(objc_type=Menu, objc_name="setMenuRepresentation") +Menu_setMenuRepresentation :: #force_inline proc "c" (self: ^Menu, menuRep: id) { + msgSend(nil, self, "setMenuRepresentation:", menuRep) +} +@(objc_type=Menu, objc_name="menuRepresentation") +Menu_menuRepresentation :: #force_inline proc "c" (self: ^Menu) -> id { + return msgSend(id, self, "menuRepresentation") +} +@(objc_type=Menu, objc_name="setContextMenuRepresentation") +Menu_setContextMenuRepresentation :: #force_inline proc "c" (self: ^Menu, menuRep: id) { + msgSend(nil, self, "setContextMenuRepresentation:", menuRep) +} +@(objc_type=Menu, objc_name="contextMenuRepresentation") +Menu_contextMenuRepresentation :: #force_inline proc "c" (self: ^Menu) -> id { + return msgSend(id, self, "contextMenuRepresentation") +} +@(objc_type=Menu, objc_name="setTearOffMenuRepresentation") +Menu_setTearOffMenuRepresentation :: #force_inline proc "c" (self: ^Menu, menuRep: id) { + msgSend(nil, self, "setTearOffMenuRepresentation:", menuRep) +} +@(objc_type=Menu, objc_name="tearOffMenuRepresentation") +Menu_tearOffMenuRepresentation :: #force_inline proc "c" (self: ^Menu) -> id { + return msgSend(id, self, "tearOffMenuRepresentation") +} +@(objc_type=Menu, objc_name="menuZone", objc_is_class_method=true) +Menu_menuZone :: #force_inline proc "c" () -> ^Zone { + return msgSend(^Zone, Menu, "menuZone") +} +@(objc_type=Menu, objc_name="setMenuZone", objc_is_class_method=true) +Menu_setMenuZone :: #force_inline proc "c" (zone: ^Zone) { + msgSend(nil, Menu, "setMenuZone:", zone) +} +@(objc_type=Menu, objc_name="attachedMenu") +Menu_attachedMenu :: #force_inline proc "c" (self: ^Menu) -> ^Menu { + return msgSend(^Menu, self, "attachedMenu") +} +@(objc_type=Menu, objc_name="isAttached") +Menu_isAttached :: #force_inline proc "c" (self: ^Menu) -> bool { + return msgSend(bool, self, "isAttached") +} +@(objc_type=Menu, objc_name="sizeToFit") +Menu_sizeToFit :: #force_inline proc "c" (self: ^Menu) { + msgSend(nil, self, "sizeToFit") +} +@(objc_type=Menu, objc_name="locationForSubmenu") +Menu_locationForSubmenu :: #force_inline proc "c" (self: ^Menu, submenu: ^Menu) -> Point { + return msgSend(Point, self, "locationForSubmenu:", submenu) +} +@(objc_type=Menu, objc_name="helpRequested") +Menu_helpRequested :: #force_inline proc "c" (self: ^Menu, eventPtr: ^Event) { + msgSend(nil, self, "helpRequested:", eventPtr) +} +@(objc_type=Menu, objc_name="menuChangedMessagesEnabled") +Menu_menuChangedMessagesEnabled :: #force_inline proc "c" (self: ^Menu) -> bool { + return msgSend(bool, self, "menuChangedMessagesEnabled") +} +@(objc_type=Menu, objc_name="setMenuChangedMessagesEnabled") +Menu_setMenuChangedMessagesEnabled :: #force_inline proc "c" (self: ^Menu, menuChangedMessagesEnabled: bool) { + msgSend(nil, self, "setMenuChangedMessagesEnabled:", menuChangedMessagesEnabled) +} +@(objc_type=Menu, objc_name="isTornOff") +Menu_isTornOff :: #force_inline proc "c" (self: ^Menu) -> bool { + return msgSend(bool, self, "isTornOff") +} +@(objc_type=Menu, objc_name="load", objc_is_class_method=true) +Menu_load :: #force_inline proc "c" () { + msgSend(nil, Menu, "load") +} +@(objc_type=Menu, objc_name="initialize", objc_is_class_method=true) +Menu_initialize :: #force_inline proc "c" () { + msgSend(nil, Menu, "initialize") +} +@(objc_type=Menu, objc_name="new", objc_is_class_method=true) +Menu_new :: #force_inline proc "c" () -> ^Menu { + return msgSend(^Menu, Menu, "new") +} +@(objc_type=Menu, objc_name="allocWithZone", objc_is_class_method=true) +Menu_allocWithZone :: #force_inline proc "c" (zone: ^Zone) -> ^Menu { + return msgSend(^Menu, Menu, "allocWithZone:", zone) +} +@(objc_type=Menu, objc_name="alloc", objc_is_class_method=true) +Menu_alloc :: #force_inline proc "c" () -> ^Menu { + return msgSend(^Menu, Menu, "alloc") +} +@(objc_type=Menu, objc_name="copyWithZone", objc_is_class_method=true) +Menu_copyWithZone :: #force_inline proc "c" (zone: ^Zone) -> id { + return msgSend(id, Menu, "copyWithZone:", zone) +} +@(objc_type=Menu, objc_name="mutableCopyWithZone", objc_is_class_method=true) +Menu_mutableCopyWithZone :: #force_inline proc "c" (zone: ^Zone) -> id { + return msgSend(id, Menu, "mutableCopyWithZone:", zone) +} +@(objc_type=Menu, objc_name="instancesRespondToSelector", objc_is_class_method=true) +Menu_instancesRespondToSelector :: #force_inline proc "c" (aSelector: SEL) -> bool { + return msgSend(bool, Menu, "instancesRespondToSelector:", aSelector) +} +@(objc_type=Menu, objc_name="conformsToProtocol", objc_is_class_method=true) +Menu_conformsToProtocol :: #force_inline proc "c" (protocol: ^Protocol) -> bool { + return msgSend(bool, Menu, "conformsToProtocol:", protocol) +} +@(objc_type=Menu, objc_name="instanceMethodForSelector", objc_is_class_method=true) +Menu_instanceMethodForSelector :: #force_inline proc "c" (aSelector: SEL) -> IMP { + return msgSend(IMP, Menu, "instanceMethodForSelector:", aSelector) +} +// @(objc_type=Menu, objc_name="instanceMethodSignatureForSelector", objc_is_class_method=true) +// Menu_instanceMethodSignatureForSelector :: #force_inline proc "c" (aSelector: SEL) -> ^MethodSignature { +// return msgSend(^MethodSignature, Menu, "instanceMethodSignatureForSelector:", aSelector) +// } +@(objc_type=Menu, objc_name="isSubclassOfClass", objc_is_class_method=true) +Menu_isSubclassOfClass :: #force_inline proc "c" (aClass: Class) -> bool { + return msgSend(bool, Menu, "isSubclassOfClass:", aClass) +} +@(objc_type=Menu, objc_name="resolveClassMethod", objc_is_class_method=true) +Menu_resolveClassMethod :: #force_inline proc "c" (sel: SEL) -> bool { + return msgSend(bool, Menu, "resolveClassMethod:", sel) +} +@(objc_type=Menu, objc_name="resolveInstanceMethod", objc_is_class_method=true) +Menu_resolveInstanceMethod :: #force_inline proc "c" (sel: SEL) -> bool { + return msgSend(bool, Menu, "resolveInstanceMethod:", sel) +} +@(objc_type=Menu, objc_name="hash", objc_is_class_method=true) +Menu_hash :: #force_inline proc "c" () -> UInteger { + return msgSend(UInteger, Menu, "hash") +} +@(objc_type=Menu, objc_name="superclass", objc_is_class_method=true) +Menu_superclass :: #force_inline proc "c" () -> Class { + return msgSend(Class, Menu, "superclass") +} +@(objc_type=Menu, objc_name="class", objc_is_class_method=true) +Menu_class :: #force_inline proc "c" () -> Class { + return msgSend(Class, Menu, "class") +} +@(objc_type=Menu, objc_name="description", objc_is_class_method=true) +Menu_description :: #force_inline proc "c" () -> ^String { + return msgSend(^String, Menu, "description") +} +@(objc_type=Menu, objc_name="debugDescription", objc_is_class_method=true) +Menu_debugDescription :: #force_inline proc "c" () -> ^String { + return msgSend(^String, Menu, "debugDescription") +} +@(objc_type=Menu, objc_name="version", objc_is_class_method=true) +Menu_version :: #force_inline proc "c" () -> Integer { + return msgSend(Integer, Menu, "version") +} +@(objc_type=Menu, objc_name="setVersion", objc_is_class_method=true) +Menu_setVersion :: #force_inline proc "c" (aVersion: Integer) { + msgSend(nil, Menu, "setVersion:", aVersion) +} +@(objc_type=Menu, objc_name="poseAsClass", objc_is_class_method=true) +Menu_poseAsClass :: #force_inline proc "c" (aClass: Class) { + msgSend(nil, Menu, "poseAsClass:", aClass) +} +@(objc_type=Menu, objc_name="cancelPreviousPerformRequestsWithTarget_selector_object", objc_is_class_method=true) +Menu_cancelPreviousPerformRequestsWithTarget_selector_object :: #force_inline proc "c" (aTarget: id, aSelector: SEL, anArgument: id) { + msgSend(nil, Menu, "cancelPreviousPerformRequestsWithTarget:selector:object:", aTarget, aSelector, anArgument) +} +@(objc_type=Menu, objc_name="cancelPreviousPerformRequestsWithTarget_", objc_is_class_method=true) +Menu_cancelPreviousPerformRequestsWithTarget_ :: #force_inline proc "c" (aTarget: id) { + msgSend(nil, Menu, "cancelPreviousPerformRequestsWithTarget:", aTarget) +} +@(objc_type=Menu, objc_name="accessInstanceVariablesDirectly", objc_is_class_method=true) +Menu_accessInstanceVariablesDirectly :: #force_inline proc "c" () -> bool { + return msgSend(bool, Menu, "accessInstanceVariablesDirectly") +} +@(objc_type=Menu, objc_name="useStoredAccessor", objc_is_class_method=true) +Menu_useStoredAccessor :: #force_inline proc "c" () -> bool { + return msgSend(bool, Menu, "useStoredAccessor") +} +@(objc_type=Menu, objc_name="keyPathsForValuesAffectingValueForKey", objc_is_class_method=true) +Menu_keyPathsForValuesAffectingValueForKey :: #force_inline proc "c" (key: ^String) -> ^Set { + return msgSend(^Set, Menu, "keyPathsForValuesAffectingValueForKey:", key) +} +@(objc_type=Menu, objc_name="automaticallyNotifiesObserversForKey", objc_is_class_method=true) +Menu_automaticallyNotifiesObserversForKey :: #force_inline proc "c" (key: ^String) -> bool { + return msgSend(bool, Menu, "automaticallyNotifiesObserversForKey:", key) +} +@(objc_type=Menu, objc_name="setKeys", objc_is_class_method=true) +Menu_setKeys :: #force_inline proc "c" (keys: ^Array, dependentKey: ^String) { + msgSend(nil, Menu, "setKeys:triggerChangeNotificationsForDependentKey:", keys, dependentKey) +} +@(objc_type=Menu, objc_name="classFallbacksForKeyedArchiver", objc_is_class_method=true) +Menu_classFallbacksForKeyedArchiver :: #force_inline proc "c" () -> ^Array { + return msgSend(^Array, Menu, "classFallbacksForKeyedArchiver") +} +@(objc_type=Menu, objc_name="classForKeyedUnarchiver", objc_is_class_method=true) +Menu_classForKeyedUnarchiver :: #force_inline proc "c" () -> Class { + return msgSend(Class, Menu, "classForKeyedUnarchiver") +} +@(objc_type=Menu, objc_name="exposeBinding", objc_is_class_method=true) +Menu_exposeBinding :: #force_inline proc "c" (binding: ^String) { + msgSend(nil, Menu, "exposeBinding:", binding) +} +@(objc_type=Menu, objc_name="setDefaultPlaceholder", objc_is_class_method=true) +Menu_setDefaultPlaceholder :: #force_inline proc "c" (placeholder: id, marker: id, binding: ^String) { + msgSend(nil, Menu, "setDefaultPlaceholder:forMarker:withBinding:", placeholder, marker, binding) +} +@(objc_type=Menu, objc_name="defaultPlaceholderForMarker", objc_is_class_method=true) +Menu_defaultPlaceholderForMarker :: #force_inline proc "c" (marker: id, binding: ^String) -> id { + return msgSend(id, Menu, "defaultPlaceholderForMarker:withBinding:", marker, binding) +} +@(objc_type=Menu, objc_name="popUpContextMenu") +Menu_popUpContextMenu :: proc { + Menu_popUpContextMenu_withEvent_forView, + // Menu_popUpContextMenu_withEvent_forView_withFont, } -@(objc_type=Menu, objc_name="itemArray") -Menu_itemArray :: proc "c" (self: ^Menu) -> ^Array { - return msgSend(^Array, self, "itemArray") -} \ No newline at end of file +@(objc_type=Menu, objc_name="paletteMenuWithColors") +Menu_paletteMenuWithColors :: proc { + Menu_paletteMenuWithColors_titles_selectionHandler, + // Menu_paletteMenuWithColors_titles_templateImage_selectionHandler, +} + +@(objc_type=Menu, objc_name="cancelPreviousPerformRequestsWithTarget") +Menu_cancelPreviousPerformRequestsWithTarget :: proc { + Menu_cancelPreviousPerformRequestsWithTarget_selector_object, + Menu_cancelPreviousPerformRequestsWithTarget_, +} + + + + + + + +@(objc_class="NSMenuDelegate") +MenuDelegate :: struct {using _: Object, using _: ObjectProtocol} + +@(objc_type=MenuDelegate, objc_name="menuNeedsUpdate") +MenuDelegate_menuNeedsUpdate :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu) { + msgSend(nil, self, "menuNeedsUpdate:", menu) +} +@(objc_type=MenuDelegate, objc_name="numberOfItemsInMenu") +MenuDelegate_numberOfItemsInMenu :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu) -> Integer { + return msgSend(Integer, self, "numberOfItemsInMenu:", menu) +} +@(objc_type=MenuDelegate, objc_name="menu_updateItem_atIndex_shouldCancel") +MenuDelegate_menu_updateItem_atIndex_shouldCancel :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu, item: ^MenuItem, index: Integer, shouldCancel: bool) -> bool { + return msgSend(bool, self, "menu:updateItem:atIndex:shouldCancel:", menu, item, index, shouldCancel) +} +@(objc_type=MenuDelegate, objc_name="menuHasKeyEquivalent") +MenuDelegate_menuHasKeyEquivalent :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu, event: ^Event, target: ^id, action: ^SEL) -> bool { + return msgSend(bool, self, "menuHasKeyEquivalent:forEvent:target:action:", menu, event, target, action) +} +@(objc_type=MenuDelegate, objc_name="menuWillOpen") +MenuDelegate_menuWillOpen :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu) { + msgSend(nil, self, "menuWillOpen:", menu) +} +@(objc_type=MenuDelegate, objc_name="menuDidClose") +MenuDelegate_menuDidClose :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu) { + msgSend(nil, self, "menuDidClose:", menu) +} +@(objc_type=MenuDelegate, objc_name="menu_willHighlightItem") +MenuDelegate_menu_willHighlightItem :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu, item: ^MenuItem) { + msgSend(nil, self, "menu:willHighlightItem:", menu, item) +} +@(objc_type=MenuDelegate, objc_name="confinementRectForMenu") +MenuDelegate_confinementRectForMenu :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu, screen: ^Screen) -> Rect { + return msgSend(Rect, self, "confinementRectForMenu:onScreen:", menu, screen) +} +@(objc_type=MenuDelegate, objc_name="menu") +MenuDelegate_menu :: proc { + MenuDelegate_menu_updateItem_atIndex_shouldCancel, + MenuDelegate_menu_willHighlightItem, +} diff --git a/core/sys/darwin/Foundation/objc_helper.odin b/core/sys/darwin/Foundation/objc_helper.odin new file mode 100644 index 000000000..76e6c840f --- /dev/null +++ b/core/sys/darwin/Foundation/objc_helper.odin @@ -0,0 +1,137 @@ +package objc_Foundation + +import "base:runtime" +import "base:intrinsics" + +Subclasser_Proc :: proc(cls: Class, vtable: rawptr) + +Object_VTable_Info :: struct { + vtable: rawptr, + size: uint, + impl: Subclasser_Proc, +} + +Class_VTable_Info :: struct { + _context: runtime.Context, + super_vtable: rawptr, + protocol_vtable: rawptr, +} + +@(require_results) +class_get_metaclass :: #force_inline proc "contextless" (cls: Class) -> Class { + return (^Class)(cls)^ +} + +@(require_results) +object_get_vtable_info :: proc "contextless" (obj: id) -> ^Class_VTable_Info { + return (^Class_VTable_Info)(object_getIndexedIvars(obj)) +} + +@(require_results) +make_subclasser :: #force_inline proc(vtable: ^$T, impl: proc(cls: Class, vt: ^T)) -> Object_VTable_Info { + return Object_VTable_Info{ + vtable = vtable, + size = size_of(T), + impl = (Subclasser_Proc)(impl), + } +} + +@(require_results) +register_subclass :: proc( + class_name: cstring, + superclass: Class, + superclass_overrides: Maybe(Object_VTable_Info) = nil, + protocol: Maybe(Object_VTable_Info) = nil, + _context: Maybe(runtime.Context) = nil, +) -> Class { + assert(superclass != nil) + + super_size: uint + proto_size: uint + + if superclass_overrides != nil { + // Align to 8-byte boundary + super_size = (superclass_overrides.?.size + 7)/8 * 8 + } + + if protocol != nil { + // Align to 8-byte boundary + proto_size = (protocol.?.size + 7)/8 * 8 + } + + cls := objc_lookUpClass(class_name) + if cls != nil { + return cls + } + + extra_size := uint(size_of(Class_VTable_Info)) + 8 + super_size + proto_size + + cls = objc_allocateClassPair(superclass, class_name, extra_size) + assert(cls != nil) + + if s, ok := superclass_overrides.?; ok { + s.impl(cls, s.vtable) + } + + if p, ok := protocol.?; ok { + p.impl(cls, p.vtable) + } + + objc_registerClassPair(cls) + meta_cls := class_get_metaclass(cls) + class_size1 := uint(class_getInstanceSize(cls)) + meta_size := uint(class_getInstanceSize(meta_cls)) + + // Offsets are always aligned to 8-byte boundary + info_offset := (meta_size + 7) / 8 * 8 + super_vtable_offset := (info_offset + size_of(Class_VTable_Info) + 7) / 8 * 8 + ptoto_vtable_offset := super_vtable_offset + super_size + + + p_info := (^Class_VTable_Info)(([^]u8)(cls)[info_offset:]) + p_super_vtable := ([^]u8)(cls)[super_vtable_offset:] + p_proto_vtable := ([^]u8)(cls)[ptoto_vtable_offset:] + + intrinsics.mem_zero(p_info, size_of(Class_VTable_Info)) + + // Assign the context + p_info._context = _context.? or_else context + + if s, ok := superclass_overrides.?; ok { + p_info.super_vtable = p_super_vtable + intrinsics.mem_copy(p_super_vtable, s.vtable, super_size) + } + if p, ok := protocol.?; ok { + p_info.protocol_vtable = p_proto_vtable + intrinsics.mem_copy(p_proto_vtable, p.vtable, p.size) + } + + return cls +} + +@(require_results) +class_get_vtable_info :: proc "contextless" (cls: Class) -> ^Class_VTable_Info { + meta_cls := class_get_metaclass(cls) + meta_size := uint(class_getInstanceSize(meta_cls)) + + // Align to 8-byte boundary + info_offset := (meta_size+7) / 8 * 8 + + p_cls := ([^]u8)(cls)[info_offset:] + ctx := (^Class_VTable_Info)(p_cls) + return ctx +} + +@(require_results) +alloc_user_object :: proc "contextless" (cls: Class, _context: Maybe(runtime.Context) = nil) -> id { + info := class_get_vtable_info(cls) + + obj := class_createInstance(cls, size_of(Class_VTable_Info)) + obj_info := (^Class_VTable_Info)(object_getIndexedIvars(obj)) + obj_info^ = info^ + + if _context != nil { + obj_info._context = _context.? + } + return obj +} \ No newline at end of file From 5454e120fe29476d94dd1b42fed48a5791b0dc2c Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 17 May 2025 13:27:54 +0100 Subject: [PATCH 082/120] Add NSMenuItem.odin --- core/sys/darwin/Foundation/NSMenuItem.odin | 461 +++++++++++++++++++++ 1 file changed, 461 insertions(+) create mode 100644 core/sys/darwin/Foundation/NSMenuItem.odin diff --git a/core/sys/darwin/Foundation/NSMenuItem.odin b/core/sys/darwin/Foundation/NSMenuItem.odin new file mode 100644 index 000000000..ed7168899 --- /dev/null +++ b/core/sys/darwin/Foundation/NSMenuItem.odin @@ -0,0 +1,461 @@ +package objc_Foundation + +import "base:builtin" +import "base:intrinsics" +import "core:c" + +KeyEquivalentModifierFlag :: EventModifierFlag +KeyEquivalentModifierMask :: EventModifierFlags + +// Used to retrieve only the device-independent modifier flags, allowing applications to mask off the device-dependent modifier flags, including event coalescing information. +KeyEventModifierFlagDeviceIndependentFlagsMask := transmute(KeyEquivalentModifierMask)_KeyEventModifierFlagDeviceIndependentFlagsMask +@(private) _KeyEventModifierFlagDeviceIndependentFlagsMask := UInteger(0xffff0000) + +MenuItemCallback :: proc "c" (unused: rawptr, name: SEL, sender: ^Object) + +@(objc_class="NSMenuItem") +MenuItem :: struct {using _: Object} + +@(objc_type=MenuItem, objc_name="registerActionCallback", objc_is_class_method=true) +MenuItem_registerActionCallback :: proc "c" (name: cstring, callback: MenuItemCallback) -> SEL { + s := string(name) + n := len(s) + sel: SEL + if n > 0 && s[n-1] != ':' { + col_name := intrinsics.alloca(n+2, 1) + builtin.copy(col_name[:n], s) + col_name[n] = ':' + col_name[n+1] = 0 + sel = sel_registerName(cstring(col_name)) + } else { + sel = sel_registerName(name) + } + if callback != nil { + class_addMethod(intrinsics.objc_find_class("NSObject"), sel, auto_cast callback, "v@:@") + } + return sel +} + +@(objc_type=MenuItem, objc_name="init") +MenuItem_init :: proc "c" (self: ^MenuItem) -> ^MenuItem { + return msgSend(^MenuItem, self, "init") +} + + +@(objc_type=MenuItem, objc_name="separatorItem", objc_is_class_method=true) +MenuItem_separatorItem :: #force_inline proc "c" () -> ^MenuItem { + return msgSend(^MenuItem, MenuItem, "separatorItem") +} +@(objc_type=MenuItem, objc_name="sectionHeaderWithTitle", objc_is_class_method=true) +MenuItem_sectionHeaderWithTitle :: #force_inline proc "c" (title: ^String) -> ^MenuItem { + return msgSend(^MenuItem, MenuItem, "sectionHeaderWithTitle:", title) +} +@(objc_type=MenuItem, objc_name="initWithTitle") +MenuItem_initWithTitle :: #force_inline proc "c" (self: ^MenuItem, string: ^String, selector: SEL, charCode: ^String) -> ^MenuItem { + return msgSend(^MenuItem, self, "initWithTitle:action:keyEquivalent:", string, selector, charCode) +} +@(objc_type=MenuItem, objc_name="initWithCoder") +MenuItem_initWithCoder :: #force_inline proc "c" (self: ^MenuItem, coder: ^Coder) -> ^MenuItem { + return msgSend(^MenuItem, self, "initWithCoder:", coder) +} +@(objc_type=MenuItem, objc_name="usesUserKeyEquivalents", objc_is_class_method=true) +MenuItem_usesUserKeyEquivalents :: #force_inline proc "c" () -> bool { + return msgSend(bool, MenuItem, "usesUserKeyEquivalents") +} +@(objc_type=MenuItem, objc_name="setUsesUserKeyEquivalents", objc_is_class_method=true) +MenuItem_setUsesUserKeyEquivalents :: #force_inline proc "c" (usesUserKeyEquivalents: bool) { + msgSend(nil, MenuItem, "setUsesUserKeyEquivalents:", usesUserKeyEquivalents) +} +@(objc_type=MenuItem, objc_name="menu") +MenuItem_menu :: #force_inline proc "c" (self: ^MenuItem) -> ^Menu { + return msgSend(^Menu, self, "menu") +} +@(objc_type=MenuItem, objc_name="setMenu") +MenuItem_setMenu :: #force_inline proc "c" (self: ^MenuItem, menu: ^Menu) { + msgSend(nil, self, "setMenu:", menu) +} +@(objc_type=MenuItem, objc_name="hasSubmenu") +MenuItem_hasSubmenu :: #force_inline proc "c" (self: ^MenuItem) -> bool { + return msgSend(bool, self, "hasSubmenu") +} +@(objc_type=MenuItem, objc_name="submenu") +MenuItem_submenu :: #force_inline proc "c" (self: ^MenuItem) -> ^Menu { + return msgSend(^Menu, self, "submenu") +} +@(objc_type=MenuItem, objc_name="setSubmenu") +MenuItem_setSubmenu :: #force_inline proc "c" (self: ^MenuItem, submenu: ^Menu) { + msgSend(nil, self, "setSubmenu:", submenu) +} +@(objc_type=MenuItem, objc_name="parentItem") +MenuItem_parentItem :: #force_inline proc "c" (self: ^MenuItem) -> ^MenuItem { + return msgSend(^MenuItem, self, "parentItem") +} +@(objc_type=MenuItem, objc_name="title") +MenuItem_title :: #force_inline proc "c" (self: ^MenuItem) -> ^String { + return msgSend(^String, self, "title") +} +@(objc_type=MenuItem, objc_name="setTitle") +MenuItem_setTitle :: #force_inline proc "c" (self: ^MenuItem, title: ^String) { + msgSend(nil, self, "setTitle:", title) +} +// @(objc_type=MenuItem, objc_name="attributedTitle") +// MenuItem_attributedTitle :: #force_inline proc "c" (self: ^MenuItem) -> ^AttributedString { +// return msgSend(^AttributedString, self, "attributedTitle") +// } +// @(objc_type=MenuItem, objc_name="setAttributedTitle") +// MenuItem_setAttributedTitle :: #force_inline proc "c" (self: ^MenuItem, attributedTitle: ^AttributedString) { +// msgSend(nil, self, "setAttributedTitle:", attributedTitle) +// } +@(objc_type=MenuItem, objc_name="subtitle") +MenuItem_subtitle :: #force_inline proc "c" (self: ^MenuItem) -> ^String { + return msgSend(^String, self, "subtitle") +} +@(objc_type=MenuItem, objc_name="setSubtitle") +MenuItem_setSubtitle :: #force_inline proc "c" (self: ^MenuItem, subtitle: ^String) { + msgSend(nil, self, "setSubtitle:", subtitle) +} +@(objc_type=MenuItem, objc_name="isSeparatorItem") +MenuItem_isSeparatorItem :: #force_inline proc "c" (self: ^MenuItem) -> bool { + return msgSend(bool, self, "isSeparatorItem") +} +@(objc_type=MenuItem, objc_name="isSectionHeader") +MenuItem_isSectionHeader :: #force_inline proc "c" (self: ^MenuItem) -> bool { + return msgSend(bool, self, "isSectionHeader") +} +@(objc_type=MenuItem, objc_name="keyEquivalent") +MenuItem_keyEquivalent :: #force_inline proc "c" (self: ^MenuItem) -> ^String { + return msgSend(^String, self, "keyEquivalent") +} +@(objc_type=MenuItem, objc_name="setKeyEquivalent") +MenuItem_setKeyEquivalent :: #force_inline proc "c" (self: ^MenuItem, keyEquivalent: ^String) { + msgSend(nil, self, "setKeyEquivalent:", keyEquivalent) +} +@(objc_type=MenuItem, objc_name="keyEquivalentModifierMask") +MenuItem_keyEquivalentModifierMask :: #force_inline proc "c" (self: ^MenuItem) -> EventModifierFlags { + return msgSend(EventModifierFlags, self, "keyEquivalentModifierMask") +} +@(objc_type=MenuItem, objc_name="setKeyEquivalentModifierMask") +MenuItem_setKeyEquivalentModifierMask :: #force_inline proc "c" (self: ^MenuItem, keyEquivalentModifierMask: EventModifierFlags) { + msgSend(nil, self, "setKeyEquivalentModifierMask:", keyEquivalentModifierMask) +} +@(objc_type=MenuItem, objc_name="userKeyEquivalent") +MenuItem_userKeyEquivalent :: #force_inline proc "c" (self: ^MenuItem) -> ^String { + return msgSend(^String, self, "userKeyEquivalent") +} +@(objc_type=MenuItem, objc_name="allowsKeyEquivalentWhenHidden") +MenuItem_allowsKeyEquivalentWhenHidden :: #force_inline proc "c" (self: ^MenuItem) -> bool { + return msgSend(bool, self, "allowsKeyEquivalentWhenHidden") +} +@(objc_type=MenuItem, objc_name="setAllowsKeyEquivalentWhenHidden") +MenuItem_setAllowsKeyEquivalentWhenHidden :: #force_inline proc "c" (self: ^MenuItem, allowsKeyEquivalentWhenHidden: bool) { + msgSend(nil, self, "setAllowsKeyEquivalentWhenHidden:", allowsKeyEquivalentWhenHidden) +} +@(objc_type=MenuItem, objc_name="allowsAutomaticKeyEquivalentLocalization") +MenuItem_allowsAutomaticKeyEquivalentLocalization :: #force_inline proc "c" (self: ^MenuItem) -> bool { + return msgSend(bool, self, "allowsAutomaticKeyEquivalentLocalization") +} +@(objc_type=MenuItem, objc_name="setAllowsAutomaticKeyEquivalentLocalization") +MenuItem_setAllowsAutomaticKeyEquivalentLocalization :: #force_inline proc "c" (self: ^MenuItem, allowsAutomaticKeyEquivalentLocalization: bool) { + msgSend(nil, self, "setAllowsAutomaticKeyEquivalentLocalization:", allowsAutomaticKeyEquivalentLocalization) +} +@(objc_type=MenuItem, objc_name="allowsAutomaticKeyEquivalentMirroring") +MenuItem_allowsAutomaticKeyEquivalentMirroring :: #force_inline proc "c" (self: ^MenuItem) -> bool { + return msgSend(bool, self, "allowsAutomaticKeyEquivalentMirroring") +} +@(objc_type=MenuItem, objc_name="setAllowsAutomaticKeyEquivalentMirroring") +MenuItem_setAllowsAutomaticKeyEquivalentMirroring :: #force_inline proc "c" (self: ^MenuItem, allowsAutomaticKeyEquivalentMirroring: bool) { + msgSend(nil, self, "setAllowsAutomaticKeyEquivalentMirroring:", allowsAutomaticKeyEquivalentMirroring) +} +// @(objc_type=MenuItem, objc_name="image") +// MenuItem_image :: #force_inline proc "c" (self: ^MenuItem) -> ^Image { +// return msgSend(^Image, self, "image") +// } +// @(objc_type=MenuItem, objc_name="setImage") +// MenuItem_setImage :: #force_inline proc "c" (self: ^MenuItem, image: ^Image) { +// msgSend(nil, self, "setImage:", image) +// } +// @(objc_type=MenuItem, objc_name="state") +// MenuItem_state :: #force_inline proc "c" (self: ^MenuItem) -> ControlStateValue { +// return msgSend(ControlStateValue, self, "state") +// } +// @(objc_type=MenuItem, objc_name="setState") +// MenuItem_setState :: #force_inline proc "c" (self: ^MenuItem, state: ControlStateValue) { +// msgSend(nil, self, "setState:", state) +// } +// @(objc_type=MenuItem, objc_name="onStateImage") +// MenuItem_onStateImage :: #force_inline proc "c" (self: ^MenuItem) -> ^Image { +// return msgSend(^Image, self, "onStateImage") +// } +// @(objc_type=MenuItem, objc_name="setOnStateImage") +// MenuItem_setOnStateImage :: #force_inline proc "c" (self: ^MenuItem, onStateImage: ^Image) { +// msgSend(nil, self, "setOnStateImage:", onStateImage) +// } +// @(objc_type=MenuItem, objc_name="offStateImage") +// MenuItem_offStateImage :: #force_inline proc "c" (self: ^MenuItem) -> ^Image { +// return msgSend(^Image, self, "offStateImage") +// } +// @(objc_type=MenuItem, objc_name="setOffStateImage") +// MenuItem_setOffStateImage :: #force_inline proc "c" (self: ^MenuItem, offStateImage: ^Image) { +// msgSend(nil, self, "setOffStateImage:", offStateImage) +// } +// @(objc_type=MenuItem, objc_name="mixedStateImage") +// MenuItem_mixedStateImage :: #force_inline proc "c" (self: ^MenuItem) -> ^Image { +// return msgSend(^Image, self, "mixedStateImage") +// } +// @(objc_type=MenuItem, objc_name="setMixedStateImage") +// MenuItem_setMixedStateImage :: #force_inline proc "c" (self: ^MenuItem, mixedStateImage: ^Image) { +// msgSend(nil, self, "setMixedStateImage:", mixedStateImage) +// } +@(objc_type=MenuItem, objc_name="isEnabled") +MenuItem_isEnabled :: #force_inline proc "c" (self: ^MenuItem) -> bool { + return msgSend(bool, self, "isEnabled") +} +@(objc_type=MenuItem, objc_name="setEnabled") +MenuItem_setEnabled :: #force_inline proc "c" (self: ^MenuItem, enabled: bool) { + msgSend(nil, self, "setEnabled:", enabled) +} +@(objc_type=MenuItem, objc_name="isAlternate") +MenuItem_isAlternate :: #force_inline proc "c" (self: ^MenuItem) -> bool { + return msgSend(bool, self, "isAlternate") +} +@(objc_type=MenuItem, objc_name="setAlternate") +MenuItem_setAlternate :: #force_inline proc "c" (self: ^MenuItem, alternate: bool) { + msgSend(nil, self, "setAlternate:", alternate) +} +@(objc_type=MenuItem, objc_name="indentationLevel") +MenuItem_indentationLevel :: #force_inline proc "c" (self: ^MenuItem) -> Integer { + return msgSend(Integer, self, "indentationLevel") +} +@(objc_type=MenuItem, objc_name="setIndentationLevel") +MenuItem_setIndentationLevel :: #force_inline proc "c" (self: ^MenuItem, indentationLevel: Integer) { + msgSend(nil, self, "setIndentationLevel:", indentationLevel) +} +@(objc_type=MenuItem, objc_name="target") +MenuItem_target :: #force_inline proc "c" (self: ^MenuItem) -> id { + return msgSend(id, self, "target") +} +@(objc_type=MenuItem, objc_name="setTarget") +MenuItem_setTarget :: #force_inline proc "c" (self: ^MenuItem, target: id) { + msgSend(nil, self, "setTarget:", target) +} +@(objc_type=MenuItem, objc_name="action") +MenuItem_action :: #force_inline proc "c" (self: ^MenuItem) -> SEL { + return msgSend(SEL, self, "action") +} +@(objc_type=MenuItem, objc_name="setAction") +MenuItem_setAction :: #force_inline proc "c" (self: ^MenuItem, action: SEL) { + msgSend(nil, self, "setAction:", action) +} +@(objc_type=MenuItem, objc_name="tag") +MenuItem_tag :: #force_inline proc "c" (self: ^MenuItem) -> Integer { + return msgSend(Integer, self, "tag") +} +@(objc_type=MenuItem, objc_name="setTag") +MenuItem_setTag :: #force_inline proc "c" (self: ^MenuItem, tag: Integer) { + msgSend(nil, self, "setTag:", tag) +} +@(objc_type=MenuItem, objc_name="representedObject") +MenuItem_representedObject :: #force_inline proc "c" (self: ^MenuItem) -> id { + return msgSend(id, self, "representedObject") +} +@(objc_type=MenuItem, objc_name="setRepresentedObject") +MenuItem_setRepresentedObject :: #force_inline proc "c" (self: ^MenuItem, representedObject: id) { + msgSend(nil, self, "setRepresentedObject:", representedObject) +} +@(objc_type=MenuItem, objc_name="view") +MenuItem_view :: #force_inline proc "c" (self: ^MenuItem) -> ^View { + return msgSend(^View, self, "view") +} +@(objc_type=MenuItem, objc_name="setView") +MenuItem_setView :: #force_inline proc "c" (self: ^MenuItem, view: ^View) { + msgSend(nil, self, "setView:", view) +} +@(objc_type=MenuItem, objc_name="isHighlighted") +MenuItem_isHighlighted :: #force_inline proc "c" (self: ^MenuItem) -> bool { + return msgSend(bool, self, "isHighlighted") +} +@(objc_type=MenuItem, objc_name="isHidden") +MenuItem_isHidden :: #force_inline proc "c" (self: ^MenuItem) -> bool { + return msgSend(bool, self, "isHidden") +} +@(objc_type=MenuItem, objc_name="setHidden") +MenuItem_setHidden :: #force_inline proc "c" (self: ^MenuItem, hidden: bool) { + msgSend(nil, self, "setHidden:", hidden) +} +@(objc_type=MenuItem, objc_name="isHiddenOrHasHiddenAncestor") +MenuItem_isHiddenOrHasHiddenAncestor :: #force_inline proc "c" (self: ^MenuItem) -> bool { + return msgSend(bool, self, "isHiddenOrHasHiddenAncestor") +} +@(objc_type=MenuItem, objc_name="toolTip") +MenuItem_toolTip :: #force_inline proc "c" (self: ^MenuItem) -> ^String { + return msgSend(^String, self, "toolTip") +} +@(objc_type=MenuItem, objc_name="setToolTip") +MenuItem_setToolTip :: #force_inline proc "c" (self: ^MenuItem, toolTip: ^String) { + msgSend(nil, self, "setToolTip:", toolTip) +} +// @(objc_type=MenuItem, objc_name="badge") +// MenuItem_badge :: #force_inline proc "c" (self: ^MenuItem) -> ^MenuItemBadge { +// return msgSend(^MenuItemBadge, self, "badge") +// } +// @(objc_type=MenuItem, objc_name="setBadge") +// MenuItem_setBadge :: #force_inline proc "c" (self: ^MenuItem, badge: ^MenuItemBadge) { +// msgSend(nil, self, "setBadge:", badge) +// } +@(objc_type=MenuItem, objc_name="setMnemonicLocation") +MenuItem_setMnemonicLocation :: #force_inline proc "c" (self: ^MenuItem, location: UInteger) { + msgSend(nil, self, "setMnemonicLocation:", location) +} +@(objc_type=MenuItem, objc_name="mnemonicLocation") +MenuItem_mnemonicLocation :: #force_inline proc "c" (self: ^MenuItem) -> UInteger { + return msgSend(UInteger, self, "mnemonicLocation") +} +@(objc_type=MenuItem, objc_name="mnemonic") +MenuItem_mnemonic :: #force_inline proc "c" (self: ^MenuItem) -> ^String { + return msgSend(^String, self, "mnemonic") +} +@(objc_type=MenuItem, objc_name="setTitleWithMnemonic") +MenuItem_setTitleWithMnemonic :: #force_inline proc "c" (self: ^MenuItem, stringWithAmpersand: ^String) { + msgSend(nil, self, "setTitleWithMnemonic:", stringWithAmpersand) +} +@(objc_type=MenuItem, objc_name="load", objc_is_class_method=true) +MenuItem_load :: #force_inline proc "c" () { + msgSend(nil, MenuItem, "load") +} +@(objc_type=MenuItem, objc_name="initialize", objc_is_class_method=true) +MenuItem_initialize :: #force_inline proc "c" () { + msgSend(nil, MenuItem, "initialize") +} +@(objc_type=MenuItem, objc_name="new", objc_is_class_method=true) +MenuItem_new :: #force_inline proc "c" () -> ^MenuItem { + return msgSend(^MenuItem, MenuItem, "new") +} +@(objc_type=MenuItem, objc_name="allocWithZone", objc_is_class_method=true) +MenuItem_allocWithZone :: #force_inline proc "c" (zone: ^Zone) -> ^MenuItem { + return msgSend(^MenuItem, MenuItem, "allocWithZone:", zone) +} +@(objc_type=MenuItem, objc_name="alloc", objc_is_class_method=true) +MenuItem_alloc :: #force_inline proc "c" () -> ^MenuItem { + return msgSend(^MenuItem, MenuItem, "alloc") +} +@(objc_type=MenuItem, objc_name="copyWithZone", objc_is_class_method=true) +MenuItem_copyWithZone :: #force_inline proc "c" (zone: ^Zone) -> id { + return msgSend(id, MenuItem, "copyWithZone:", zone) +} +@(objc_type=MenuItem, objc_name="mutableCopyWithZone", objc_is_class_method=true) +MenuItem_mutableCopyWithZone :: #force_inline proc "c" (zone: ^Zone) -> id { + return msgSend(id, MenuItem, "mutableCopyWithZone:", zone) +} +@(objc_type=MenuItem, objc_name="instancesRespondToSelector", objc_is_class_method=true) +MenuItem_instancesRespondToSelector :: #force_inline proc "c" (aSelector: SEL) -> bool { + return msgSend(bool, MenuItem, "instancesRespondToSelector:", aSelector) +} +@(objc_type=MenuItem, objc_name="conformsToProtocol", objc_is_class_method=true) +MenuItem_conformsToProtocol :: #force_inline proc "c" (protocol: ^Protocol) -> bool { + return msgSend(bool, MenuItem, "conformsToProtocol:", protocol) +} +@(objc_type=MenuItem, objc_name="instanceMethodForSelector", objc_is_class_method=true) +MenuItem_instanceMethodForSelector :: #force_inline proc "c" (aSelector: SEL) -> IMP { + return msgSend(IMP, MenuItem, "instanceMethodForSelector:", aSelector) +} +// @(objc_type=MenuItem, objc_name="instanceMethodSignatureForSelector", objc_is_class_method=true) +// MenuItem_instanceMethodSignatureForSelector :: #force_inline proc "c" (aSelector: SEL) -> ^MethodSignature { +// return msgSend(^MethodSignature, MenuItem, "instanceMethodSignatureForSelector:", aSelector) +// } +@(objc_type=MenuItem, objc_name="isSubclassOfClass", objc_is_class_method=true) +MenuItem_isSubclassOfClass :: #force_inline proc "c" (aClass: Class) -> bool { + return msgSend(bool, MenuItem, "isSubclassOfClass:", aClass) +} +@(objc_type=MenuItem, objc_name="resolveClassMethod", objc_is_class_method=true) +MenuItem_resolveClassMethod :: #force_inline proc "c" (sel: SEL) -> bool { + return msgSend(bool, MenuItem, "resolveClassMethod:", sel) +} +@(objc_type=MenuItem, objc_name="resolveInstanceMethod", objc_is_class_method=true) +MenuItem_resolveInstanceMethod :: #force_inline proc "c" (sel: SEL) -> bool { + return msgSend(bool, MenuItem, "resolveInstanceMethod:", sel) +} +@(objc_type=MenuItem, objc_name="hash", objc_is_class_method=true) +MenuItem_hash :: #force_inline proc "c" () -> UInteger { + return msgSend(UInteger, MenuItem, "hash") +} +@(objc_type=MenuItem, objc_name="superclass", objc_is_class_method=true) +MenuItem_superclass :: #force_inline proc "c" () -> Class { + return msgSend(Class, MenuItem, "superclass") +} +@(objc_type=MenuItem, objc_name="class", objc_is_class_method=true) +MenuItem_class :: #force_inline proc "c" () -> Class { + return msgSend(Class, MenuItem, "class") +} +@(objc_type=MenuItem, objc_name="description", objc_is_class_method=true) +MenuItem_description :: #force_inline proc "c" () -> ^String { + return msgSend(^String, MenuItem, "description") +} +@(objc_type=MenuItem, objc_name="debugDescription", objc_is_class_method=true) +MenuItem_debugDescription :: #force_inline proc "c" () -> ^String { + return msgSend(^String, MenuItem, "debugDescription") +} +@(objc_type=MenuItem, objc_name="version", objc_is_class_method=true) +MenuItem_version :: #force_inline proc "c" () -> Integer { + return msgSend(Integer, MenuItem, "version") +} +@(objc_type=MenuItem, objc_name="setVersion", objc_is_class_method=true) +MenuItem_setVersion :: #force_inline proc "c" (aVersion: Integer) { + msgSend(nil, MenuItem, "setVersion:", aVersion) +} +@(objc_type=MenuItem, objc_name="poseAsClass", objc_is_class_method=true) +MenuItem_poseAsClass :: #force_inline proc "c" (aClass: Class) { + msgSend(nil, MenuItem, "poseAsClass:", aClass) +} +@(objc_type=MenuItem, objc_name="cancelPreviousPerformRequestsWithTarget_selector_object", objc_is_class_method=true) +MenuItem_cancelPreviousPerformRequestsWithTarget_selector_object :: #force_inline proc "c" (aTarget: id, aSelector: SEL, anArgument: id) { + msgSend(nil, MenuItem, "cancelPreviousPerformRequestsWithTarget:selector:object:", aTarget, aSelector, anArgument) +} +@(objc_type=MenuItem, objc_name="cancelPreviousPerformRequestsWithTarget_", objc_is_class_method=true) +MenuItem_cancelPreviousPerformRequestsWithTarget_ :: #force_inline proc "c" (aTarget: id) { + msgSend(nil, MenuItem, "cancelPreviousPerformRequestsWithTarget:", aTarget) +} +@(objc_type=MenuItem, objc_name="accessInstanceVariablesDirectly", objc_is_class_method=true) +MenuItem_accessInstanceVariablesDirectly :: #force_inline proc "c" () -> bool { + return msgSend(bool, MenuItem, "accessInstanceVariablesDirectly") +} +@(objc_type=MenuItem, objc_name="useStoredAccessor", objc_is_class_method=true) +MenuItem_useStoredAccessor :: #force_inline proc "c" () -> bool { + return msgSend(bool, MenuItem, "useStoredAccessor") +} +@(objc_type=MenuItem, objc_name="keyPathsForValuesAffectingValueForKey", objc_is_class_method=true) +MenuItem_keyPathsForValuesAffectingValueForKey :: #force_inline proc "c" (key: ^String) -> ^Set { + return msgSend(^Set, MenuItem, "keyPathsForValuesAffectingValueForKey:", key) +} +@(objc_type=MenuItem, objc_name="automaticallyNotifiesObserversForKey", objc_is_class_method=true) +MenuItem_automaticallyNotifiesObserversForKey :: #force_inline proc "c" (key: ^String) -> bool { + return msgSend(bool, MenuItem, "automaticallyNotifiesObserversForKey:", key) +} +@(objc_type=MenuItem, objc_name="setKeys", objc_is_class_method=true) +MenuItem_setKeys :: #force_inline proc "c" (keys: ^Array, dependentKey: ^String) { + msgSend(nil, MenuItem, "setKeys:triggerChangeNotificationsForDependentKey:", keys, dependentKey) +} +@(objc_type=MenuItem, objc_name="classFallbacksForKeyedArchiver", objc_is_class_method=true) +MenuItem_classFallbacksForKeyedArchiver :: #force_inline proc "c" () -> ^Array { + return msgSend(^Array, MenuItem, "classFallbacksForKeyedArchiver") +} +@(objc_type=MenuItem, objc_name="classForKeyedUnarchiver", objc_is_class_method=true) +MenuItem_classForKeyedUnarchiver :: #force_inline proc "c" () -> Class { + return msgSend(Class, MenuItem, "classForKeyedUnarchiver") +} +@(objc_type=MenuItem, objc_name="exposeBinding", objc_is_class_method=true) +MenuItem_exposeBinding :: #force_inline proc "c" (binding: ^String) { + msgSend(nil, MenuItem, "exposeBinding:", binding) +} +@(objc_type=MenuItem, objc_name="setDefaultPlaceholder", objc_is_class_method=true) +MenuItem_setDefaultPlaceholder :: #force_inline proc "c" (placeholder: id, marker: id, binding: ^String) { + msgSend(nil, MenuItem, "setDefaultPlaceholder:forMarker:withBinding:", placeholder, marker, binding) +} +@(objc_type=MenuItem, objc_name="defaultPlaceholderForMarker", objc_is_class_method=true) +MenuItem_defaultPlaceholderForMarker :: #force_inline proc "c" (marker: id, binding: ^String) -> id { + return msgSend(id, MenuItem, "defaultPlaceholderForMarker:withBinding:", marker, binding) +} +@(objc_type=MenuItem, objc_name="cancelPreviousPerformRequestsWithTarget") +MenuItem_cancelPreviousPerformRequestsWithTarget :: proc { + MenuItem_cancelPreviousPerformRequestsWithTarget_selector_object, + MenuItem_cancelPreviousPerformRequestsWithTarget_, +} \ No newline at end of file From 7c80df483066e9e92fdb05b03192c4cca148f448 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Sat, 17 May 2025 16:22:47 +0200 Subject: [PATCH 083/120] @(init), @(fini) and @(export) procedures are classified as used. For the purposes of `-vet-unused-procedures`, exported procedures and `@(init)` and `@(fini)` are now disregarded. --- src/checker.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/checker.cpp b/src/checker.cpp index 17575668f..909ee705b 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -728,12 +728,17 @@ gb_internal void check_scope_usage_internal(Checker *c, Scope *scope, u64 vet_fl bool is_unused = false; if (vet_unused && check_vet_unused(c, e, &ve_unused)) { is_unused = true; - } else if (vet_unused_procedures && - e->kind == Entity_Procedure) { + } else if (vet_unused_procedures && e->kind == Entity_Procedure) { if (e->flags&EntityFlag_Used) { is_unused = false; } else if (e->flags & EntityFlag_Require) { is_unused = false; + } else if (e->flags & EntityFlag_Init) { + is_unused = false; + } else if (e->flags & EntityFlag_Fini) { + is_unused = false; + } else if (e->Procedure.is_export) { + is_unused = false; } else if (e->pkg && e->pkg->kind == Package_Init && e->token.string == "main") { is_unused = false; } else { From d6210ae76f01fd14b8eb09b12f9d3d1f48b32cea Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Sat, 17 May 2025 16:36:10 +0200 Subject: [PATCH 084/120] Fix -vet complaints in `core:sys/darwin/Foundation` --- core/sys/darwin/Foundation/NSMenuItem.odin | 1 - core/sys/darwin/Foundation/objc_helper.odin | 1 - 2 files changed, 2 deletions(-) diff --git a/core/sys/darwin/Foundation/NSMenuItem.odin b/core/sys/darwin/Foundation/NSMenuItem.odin index ed7168899..248a0cf4f 100644 --- a/core/sys/darwin/Foundation/NSMenuItem.odin +++ b/core/sys/darwin/Foundation/NSMenuItem.odin @@ -2,7 +2,6 @@ package objc_Foundation import "base:builtin" import "base:intrinsics" -import "core:c" KeyEquivalentModifierFlag :: EventModifierFlag KeyEquivalentModifierMask :: EventModifierFlags diff --git a/core/sys/darwin/Foundation/objc_helper.odin b/core/sys/darwin/Foundation/objc_helper.odin index 76e6c840f..0748d700b 100644 --- a/core/sys/darwin/Foundation/objc_helper.odin +++ b/core/sys/darwin/Foundation/objc_helper.odin @@ -79,7 +79,6 @@ register_subclass :: proc( objc_registerClassPair(cls) meta_cls := class_get_metaclass(cls) - class_size1 := uint(class_getInstanceSize(cls)) meta_size := uint(class_getInstanceSize(meta_cls)) // Offsets are always aligned to 8-byte boundary From c35a45e823401a1d7a15f11c6fb07e4fe9e6007a Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Sat, 17 May 2025 16:28:34 +0200 Subject: [PATCH 085/120] fix global and static any Fixes #4627 --- src/llvm_backend.cpp | 23 +++---------- src/llvm_backend_general.cpp | 43 ++++++++++++++----------- src/llvm_backend_stmt.cpp | 50 +++++++++++++++++------------ tests/internal/test_global_any.odin | 40 +++++++++++++++++++++++ 4 files changed, 98 insertions(+), 58 deletions(-) create mode 100644 tests/internal/test_global_any.odin diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 7de147058..361a0c46b 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1973,14 +1973,14 @@ gb_internal lbProcedure *lb_create_startup_runtime(lbModule *main_module, lbProc gbString var_name = gb_string_make(permanent_allocator(), "__$global_any::"); gbString e_str = string_canonical_entity_name(temporary_allocator(), e); var_name = gb_string_append_length(var_name, e_str, gb_strlen(e_str)); - lbAddr g = lb_add_global_generated_with_name(main_module, var_type, var.init, make_string_c(var_name)); + lbAddr g = lb_add_global_generated_with_name(main_module, var_type, {}, make_string_c(var_name)); lb_addr_store(p, g, var.init); lbValue gp = lb_addr_get_ptr(p, g); lbValue data = lb_emit_struct_ep(p, var.var, 0); lbValue ti = lb_emit_struct_ep(p, var.var, 1); lb_emit_store(p, data, lb_emit_conv(p, gp, t_rawptr)); - lb_emit_store(p, ti, lb_type_info(p, var_type)); + lb_emit_store(p, ti, lb_typeid(p->module, var_type)); } else { LLVMTypeRef vt = llvm_addr_type(p->module, var.var); lbValue src0 = lb_emit_conv(p, var.init, t); @@ -3194,24 +3194,9 @@ gb_internal bool lb_generate_code(lbGenerator *gen) { lbValue g = {}; g.value = LLVMAddGlobal(m->mod, lb_type(m, e->type), alloc_cstring(permanent_allocator(), name)); g.type = alloc_type_pointer(e->type); - if (e->Variable.thread_local_model != "") { - LLVMSetThreadLocal(g.value, true); - String m = e->Variable.thread_local_model; - LLVMThreadLocalMode mode = LLVMGeneralDynamicTLSModel; - if (m == "default") { - mode = LLVMGeneralDynamicTLSModel; - } else if (m == "localdynamic") { - mode = LLVMLocalDynamicTLSModel; - } else if (m == "initialexec") { - mode = LLVMInitialExecTLSModel; - } else if (m == "localexec") { - mode = LLVMLocalExecTLSModel; - } else { - GB_PANIC("Unhandled thread local mode %.*s", LIT(m)); - } - LLVMSetThreadLocalMode(g.value, mode); - } + lb_apply_thread_local_model(g.value, e->Variable.thread_local_model); + if (is_foreign) { LLVMSetLinkage(g.value, LLVMExternalLinkage); LLVMSetDLLStorageClass(g.value, LLVMDLLImportStorageClass); diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 504c8234e..85a165de4 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -2387,6 +2387,29 @@ gb_internal void lb_add_attribute_to_proc_with_string(lbModule *m, LLVMValueRef } +gb_internal bool lb_apply_thread_local_model(LLVMValueRef value, String model) { + if (model != "") { + LLVMSetThreadLocal(value, true); + + LLVMThreadLocalMode mode = LLVMGeneralDynamicTLSModel; + if (model == "default") { + mode = LLVMGeneralDynamicTLSModel; + } else if (model == "localdynamic") { + mode = LLVMLocalDynamicTLSModel; + } else if (model == "initialexec") { + mode = LLVMInitialExecTLSModel; + } else if (model == "localexec") { + mode = LLVMLocalExecTLSModel; + } else { + GB_PANIC("Unhandled thread local mode %.*s", LIT(model)); + } + LLVMSetThreadLocalMode(value, mode); + return true; + } + + return false; +} + gb_internal void lb_add_edge(lbBlock *from, lbBlock *to) { LLVMValueRef instr = LLVMGetLastInstruction(from->block); @@ -2990,25 +3013,7 @@ gb_internal lbValue lb_find_value_from_entity(lbModule *m, Entity *e) { lb_set_entity_from_other_modules_linkage_correctly(other_module, e, name); - if (e->Variable.thread_local_model != "") { - LLVMSetThreadLocal(g.value, true); - - String m = e->Variable.thread_local_model; - LLVMThreadLocalMode mode = LLVMGeneralDynamicTLSModel; - if (m == "default") { - mode = LLVMGeneralDynamicTLSModel; - } else if (m == "localdynamic") { - mode = LLVMLocalDynamicTLSModel; - } else if (m == "initialexec") { - mode = LLVMInitialExecTLSModel; - } else if (m == "localexec") { - mode = LLVMLocalExecTLSModel; - } else { - GB_PANIC("Unhandled thread local mode %.*s", LIT(m)); - } - LLVMSetThreadLocalMode(g.value, mode); - } - + lb_apply_thread_local_model(g.value, e->Variable.thread_local_model); return g; } diff --git a/src/llvm_backend_stmt.cpp b/src/llvm_backend_stmt.cpp index 44a78b036..9b5b14626 100644 --- a/src/llvm_backend_stmt.cpp +++ b/src/llvm_backend_stmt.cpp @@ -2022,33 +2022,43 @@ gb_internal void lb_build_static_variables(lbProcedure *p, AstValueDecl *vd) { LLVMValueRef global = LLVMAddGlobal(p->module->mod, lb_type(p->module, e->type), c_name); LLVMSetAlignment(global, cast(u32)type_align_of(e->type)); LLVMSetInitializer(global, LLVMConstNull(lb_type(p->module, e->type))); - if (value.value != nullptr) { - LLVMSetInitializer(global, value.value); - } + if (e->Variable.is_rodata) { LLVMSetGlobalConstant(global, true); } - if (e->Variable.thread_local_model != "") { - LLVMSetThreadLocal(global, true); - String m = e->Variable.thread_local_model; - LLVMThreadLocalMode mode = LLVMGeneralDynamicTLSModel; - if (m == "default") { - mode = LLVMGeneralDynamicTLSModel; - } else if (m == "localdynamic") { - mode = LLVMLocalDynamicTLSModel; - } else if (m == "initialexec") { - mode = LLVMInitialExecTLSModel; - } else if (m == "localexec") { - mode = LLVMLocalExecTLSModel; - } else { - GB_PANIC("Unhandled thread local mode %.*s", LIT(m)); - } - LLVMSetThreadLocalMode(global, mode); - } else { + if (!lb_apply_thread_local_model(global, e->Variable.thread_local_model)) { LLVMSetLinkage(global, LLVMInternalLinkage); } + if (value.value != nullptr) { + if (is_type_any(e->type)) { + Type *var_type = default_type(value.type); + + gbString var_name = gb_string_make(temporary_allocator(), "__$static_any::"); + var_name = gb_string_append_length(var_name, mangled_name.text, mangled_name.len); + + lbAddr var_global = lb_add_global_generated_with_name(p->module, var_type, value, make_string_c(var_name), nullptr); + LLVMValueRef var_global_ref = var_global.addr.value; + + if (e->Variable.is_rodata) { + LLVMSetGlobalConstant(var_global_ref, true); + } + + if (!lb_apply_thread_local_model(var_global_ref, e->Variable.thread_local_model)) { + LLVMSetLinkage(var_global_ref, LLVMInternalLinkage); + } + + LLVMValueRef vals[2] = { + lb_emit_conv(p, var_global.addr, t_rawptr).value, + lb_typeid(p->module, var_type).value, + }; + LLVMValueRef init = llvm_const_named_struct(p->module, e->type, vals, gb_count_of(vals)); + LLVMSetInitializer(global, init); + } else { + LLVMSetInitializer(global, value.value); + } + } lbValue global_val = {global, alloc_type_pointer(e->type)}; lb_add_entity(p->module, e, global_val); diff --git a/tests/internal/test_global_any.odin b/tests/internal/test_global_any.odin new file mode 100644 index 000000000..73b70e0a4 --- /dev/null +++ b/tests/internal/test_global_any.odin @@ -0,0 +1,40 @@ +package test_internal + +@(private="file") +global_any_from_proc: any = from_proc() + +from_proc :: proc() -> f32 { + return 1.1 +} + +@(private="file") +global_any: any = 1 + +import "core:testing" + +@(test) +test_global_any :: proc(t: ^testing.T) { + as_f32, is_f32 := global_any_from_proc.(f32) + testing.expect(t, is_f32 == true) + testing.expect(t, as_f32 == 1.1) + + as_int, is_int := global_any.(int) + testing.expect(t, is_int == true) + testing.expect(t, as_int == 1) +} + +@(test) +test_static_any :: proc(t: ^testing.T) { + @(static) + var: any = 3 + + as_int, is_int := var.(int) + testing.expect(t, is_int == true) + testing.expect(t, as_int == 3) + + var = f32(1.1) + + as_f32, is_f32 := var.(f32) + testing.expect(t, is_f32 == true) + testing.expect(t, as_f32 == 1.1) +} From 306d3a16c4935dbb0f68735de01773800d1bad87 Mon Sep 17 00:00:00 2001 From: Krzesimir Nowak Date: Sat, 17 May 2025 19:40:57 +0200 Subject: [PATCH 086/120] sys/linux: Improve documentation for Dirent and related procedures --- core/sys/linux/types.odin | 2 +- core/sys/linux/wrappers.odin | 68 ++++++++++++++++++++++++++---------- 2 files changed, 51 insertions(+), 19 deletions(-) diff --git a/core/sys/linux/types.odin b/core/sys/linux/types.odin index b5670cf87..08e0026d3 100644 --- a/core/sys/linux/types.odin +++ b/core/sys/linux/types.odin @@ -288,7 +288,7 @@ Rename_Flags :: bit_set[Rename_Flags_Bits; u32] /* Directory entry record. - Recommended iterate these with `dirent_iterator()`, + Recommended to iterate these with `dirent_iterate_buf()`, and obtain the name via `dirent_name()`. */ Dirent :: struct { diff --git a/core/sys/linux/wrappers.odin b/core/sys/linux/wrappers.odin index 7b0dc61e2..d93928364 100644 --- a/core/sys/linux/wrappers.odin +++ b/core/sys/linux/wrappers.odin @@ -54,22 +54,45 @@ WCOREDUMP :: #force_inline proc "contextless" (s: u32) -> bool { // TODO: sigaddset etc -/// Iterate the results of getdents -/// Only iterates as much data as loaded in the buffer -/// In case you need to iterate *all* files in a directory -/// consider using dirent_get_iterate -/// -/// Example of using dirent_iterate_buf -/// // Get dirents into a buffer -/// buf: [128]u8 -/// sys.getdents(dirfd, buf[:]) -/// // Print the names of the files -/// for dir in sys.dirent_iterate_buf(buf[:], &offs) { -/// name := sys.dirent_name(dir) -/// fmt.println(name) -/// } -/// This function doesn't automatically make a request -/// for the buffer to be refilled +/* +Iterate the results of `getdents()`. + +This procedure extracts a directory entry from `buf` at the offset `offs`. +`offs` will be modified to store an offset to the possible next directory entry +in `buf`. The procedure only iterates as much data as loaded in the buffer and +does not automatically make a request for the buffer to be refilled. + +**Inputs**: +- `buf` - byte buffer with data from `getdents()` +- `offs` - offset to the next possible directory entry in `buf` + +**Returns**: +- A pointer to a directory entry in `buf`, or `nil`. +- A bool value denoting if a valid directory entry is returned. + +**Example**: + + import "core:fmt" + import "core:sys/linux" + + print_names :: proc(dirfd: linux.Fd) { + // Get dirents into a buffer. + buf: [128]u8 + // Loop until there are no more entries. + for { + written, err := linux.getdents(dirfd, buf[:]) + if err != .NONE || written == 0 { + break + } + // Print the names of the files. + offset : int + for dir in linux.dirent_iterate_buf(buf[:written], &offset) { + name := linux.dirent_name(dir) + fmt.println(name) + } + } + } +*/ dirent_iterate_buf :: proc "contextless" (buf: []u8, offs: ^int) -> (d: ^Dirent, cont: bool) { // Stopped iterating when there's no space left if offs^ >= len(buf) { @@ -82,8 +105,17 @@ dirent_iterate_buf :: proc "contextless" (buf: []u8, offs: ^int) -> (d: ^Dirent, return dirent, true } -/// Obtain the name of dirent as a string -/// The lifetime of the string is bound to the lifetime of the provided dirent structure +/* +Obtain the name of dirent as a string. + +The lifetime of the returned string is bound to the lifetime of the provided dirent structure. + +**Inputs**: +- `dirent` - directory entry + +**Returns**: +- A name of the entry +*/ dirent_name :: proc "contextless" (dirent: ^Dirent) -> string #no_bounds_check { str := ([^]u8)(&dirent.name) // Dirents are aligned to 8 bytes, so there is guaranteed to be a null From 3e5110bb46d96f5bccc86558fe7f28c0646a5343 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 18 May 2025 11:20:55 +0100 Subject: [PATCH 087/120] Minor style changes for sdl3 and sdl3/ttf --- vendor/sdl3/sdl3_gpu.odin | 44 ++++-- vendor/sdl3/ttf/sdl3_textengine.odin | 11 +- vendor/sdl3/ttf/sdl3_ttf.odin | 201 +++++++++++++-------------- 3 files changed, 134 insertions(+), 122 deletions(-) diff --git a/vendor/sdl3/sdl3_gpu.odin b/vendor/sdl3/sdl3_gpu.odin index ec414f98e..f0017a525 100644 --- a/vendor/sdl3/sdl3_gpu.odin +++ b/vendor/sdl3/sdl3_gpu.odin @@ -46,7 +46,7 @@ GPUIndexElementSize :: enum c.int { GPUTextureFormat :: enum c.int { INVALID, - /* Unsigned Normalized Float Color Formats */ + /* Unsigned Normalized Float Color Formats */ A8_UNORM, R8_UNORM, R8G8_UNORM, @@ -59,34 +59,41 @@ GPUTextureFormat :: enum c.int { B5G5R5A1_UNORM, B4G4R4A4_UNORM, B8G8R8A8_UNORM, - /* Compressed Unsigned Normalized Float Color Formats */ + + /* Compressed Unsigned Normalized Float Color Formats */ BC1_RGBA_UNORM, BC2_RGBA_UNORM, BC3_RGBA_UNORM, BC4_R_UNORM, BC5_RG_UNORM, BC7_RGBA_UNORM, - /* Compressed Signed Float Color Formats */ + + /* Compressed Signed Float Color Formats */ BC6H_RGB_FLOAT, - /* Compressed Unsigned Float Color Formats */ + + /* Compressed Unsigned Float Color Formats */ BC6H_RGB_UFLOAT, - /* Signed Normalized Float Color Formats */ + + /* Signed Normalized Float Color Formats */ R8_SNORM, R8G8_SNORM, R8G8B8A8_SNORM, R16_SNORM, R16G16_SNORM, R16G16B16A16_SNORM, - /* Signed Float Color Formats */ + + /* Signed Float Color Formats */ R16_FLOAT, R16G16_FLOAT, R16G16B16A16_FLOAT, R32_FLOAT, R32G32_FLOAT, R32G32B32A32_FLOAT, - /* Unsigned Float Color Formats */ + + /* Unsigned Float Color Formats */ R11G11B10_UFLOAT, - /* Unsigned Integer Color Formats */ + + /* Unsigned Integer Color Formats */ R8_UINT, R8G8_UINT, R8G8B8A8_UINT, @@ -96,7 +103,8 @@ GPUTextureFormat :: enum c.int { R32_UINT, R32G32_UINT, R32G32B32A32_UINT, - /* Signed Integer Color Formats */ + + /* Signed Integer Color Formats */ R8_INT, R8G8_INT, R8G8B8A8_INT, @@ -106,21 +114,25 @@ GPUTextureFormat :: enum c.int { R32_INT, R32G32_INT, R32G32B32A32_INT, - /* SRGB Unsigned Normalized Color Formats */ + + /* SRGB Unsigned Normalized Color Formats */ R8G8B8A8_UNORM_SRGB, B8G8R8A8_UNORM_SRGB, - /* Compressed SRGB Unsigned Normalized Color Formats */ + + /* Compressed SRGB Unsigned Normalized Color Formats */ BC1_RGBA_UNORM_SRGB, BC2_RGBA_UNORM_SRGB, BC3_RGBA_UNORM_SRGB, BC7_RGBA_UNORM_SRGB, - /* Depth Formats */ + + /* Depth Formats */ D16_UNORM, D24_UNORM, D32_FLOAT, D24_UNORM_S8_UINT, D32_FLOAT_S8_UINT, - /* Compressed ASTC Normalized Float Color Formats*/ + + /* Compressed ASTC Normalized Float Color Formats*/ ASTC_4x4_UNORM, ASTC_5x4_UNORM, ASTC_5x5_UNORM, @@ -135,7 +147,8 @@ GPUTextureFormat :: enum c.int { ASTC_10x10_UNORM, ASTC_12x10_UNORM, ASTC_12x12_UNORM, - /* Compressed SRGB ASTC Normalized Float Color Formats*/ + + /* Compressed SRGB ASTC Normalized Float Color Formats*/ ASTC_4x4_UNORM_SRGB, ASTC_5x4_UNORM_SRGB, ASTC_5x5_UNORM_SRGB, @@ -150,7 +163,8 @@ GPUTextureFormat :: enum c.int { ASTC_10x10_UNORM_SRGB, ASTC_12x10_UNORM_SRGB, ASTC_12x12_UNORM_SRGB, - /* Compressed ASTC Signed Float Color Formats*/ + + /* Compressed ASTC Signed Float Color Formats*/ ASTC_4x4_FLOAT, ASTC_5x4_FLOAT, ASTC_5x5_FLOAT, diff --git a/vendor/sdl3/ttf/sdl3_textengine.odin b/vendor/sdl3/ttf/sdl3_textengine.odin index 55e5f1c0a..00bf881dd 100644 --- a/vendor/sdl3/ttf/sdl3_textengine.odin +++ b/vendor/sdl3/ttf/sdl3_textengine.odin @@ -18,7 +18,7 @@ CopyOperation :: struct { cmd: DrawCommand, text_offset: c.int, glyph_font: ^Font, - glyph_index: SDL.Uint32, + glyph_index: u32, src: SDL.Rect, dst: SDL.Rect, reserved: rawptr, @@ -30,8 +30,7 @@ DrawOperation :: struct #raw_union { copy: CopyOperation, } -TextLayout :: struct { -} +TextLayout :: struct {} TextData :: struct { font: ^Font, @@ -41,9 +40,9 @@ TextData :: struct { x, y: c.int, w, h: c.int, num_ops: c.int, - ops: [^]DrawOperation, + ops: [^]DrawOperation `fmt:"v,num_ops"`, num_clusters: c.int, - clusters: [^]SubString, + clusters: [^]SubString `fmt:"v,num_clusters"`, props: SDL.PropertiesID, needs_engine_update: bool, engine: ^TextEngine, @@ -51,7 +50,7 @@ TextData :: struct { } TextEngine :: struct { - version: SDL.Uint32, + version: u32, userdata: rawptr, CreateText: proc "c" (userdata: rawptr, text: ^Text) -> bool, DestroyText: proc "c" (userdata: rawptr, Textext: ^Text), diff --git a/vendor/sdl3/ttf/sdl3_ttf.odin b/vendor/sdl3/ttf/sdl3_ttf.odin index d3b8d7508..9b46143e8 100644 --- a/vendor/sdl3/ttf/sdl3_ttf.odin +++ b/vendor/sdl3/ttf/sdl3_ttf.odin @@ -10,48 +10,47 @@ when ODIN_OS == .Windows { } -PROP_FONT_CREATE_FILENAME_STRING :: "SDL_ttf.font.create.filename" -PROP_FONT_CREATE_IOSTREAM_POINTER :: "SDL_ttf.font.create.iostream" -PROP_FONT_CREATE_IOSTREAM_OFFSET_NUMBER :: "SDL_ttf.font.create.iostream.offset" +PROP_FONT_CREATE_FILENAME_STRING :: "SDL_ttf.font.create.filename" +PROP_FONT_CREATE_IOSTREAM_POINTER :: "SDL_ttf.font.create.iostream" +PROP_FONT_CREATE_IOSTREAM_OFFSET_NUMBER :: "SDL_ttf.font.create.iostream.offset" PROP_FONT_CREATE_IOSTREAM_AUTOCLOSE_BOOLEAN :: "SDL_ttf.font.create.iostream.autoclose" -PROP_FONT_CREATE_SIZE_FLOAT :: "SDL_ttf.font.create.size" -PROP_FONT_CREATE_FACE_NUMBER :: "SDL_ttf.font.create.face" -PROP_FONT_CREATE_HORIZONTAL_DPI_NUMBER :: "SDL_ttf.font.create.hdpi" -PROP_FONT_CREATE_VERTICAL_DPI_NUMBER :: "SDL_ttf.font.create.vdpi" -PROP_FONT_CREATE_EXISTING_FONT :: "SDL_ttf.font.create.existing_font" +PROP_FONT_CREATE_SIZE_FLOAT :: "SDL_ttf.font.create.size" +PROP_FONT_CREATE_FACE_NUMBER :: "SDL_ttf.font.create.face" +PROP_FONT_CREATE_HORIZONTAL_DPI_NUMBER :: "SDL_ttf.font.create.hdpi" +PROP_FONT_CREATE_VERTICAL_DPI_NUMBER :: "SDL_ttf.font.create.vdpi" +PROP_FONT_CREATE_EXISTING_FONT :: "SDL_ttf.font.create.existing_font" -FONT_WEIGHT_THIN :: 100 /**< Thin (100) named font weight value */ +FONT_WEIGHT_THIN :: 100 /**< Thin (100) named font weight value */ FONT_WEIGHT_EXTRA_LIGHT :: 200 /**< ExtraLight (200) named font weight value */ -FONT_WEIGHT_LIGHT :: 300 /**< Light (300) named font weight value */ -FONT_WEIGHT_NORMAL :: 400 /**< Normal (400) named font weight value */ -FONT_WEIGHT_MEDIUM :: 500 /**< Medium (500) named font weight value */ -FONT_WEIGHT_SEMI_BOLD :: 600 /**< SemiBold (600) named font weight value */ -FONT_WEIGHT_BOLD :: 700 /**< Bold (700) named font weight value */ -FONT_WEIGHT_EXTRA_BOLD :: 800 /**< ExtraBold (800) named font weight value */ -FONT_WEIGHT_BLACK :: 900 /**< Black (900) named font weight value */ +FONT_WEIGHT_LIGHT :: 300 /**< Light (300) named font weight value */ +FONT_WEIGHT_NORMAL :: 400 /**< Normal (400) named font weight value */ +FONT_WEIGHT_MEDIUM :: 500 /**< Medium (500) named font weight value */ +FONT_WEIGHT_SEMI_BOLD :: 600 /**< SemiBold (600) named font weight value */ +FONT_WEIGHT_BOLD :: 700 /**< Bold (700) named font weight value */ +FONT_WEIGHT_EXTRA_BOLD :: 800 /**< ExtraBold (800) named font weight value */ +FONT_WEIGHT_BLACK :: 900 /**< Black (900) named font weight value */ FONT_WEIGHT_EXTRA_BLACK :: 950 /**< ExtraBlack (950) named font weight value */ -PROP_RENDERER_TEXT_ENGINE_RENDERER :: "SDL_ttf.renderer_text_engine.create.renderer" +PROP_RENDERER_TEXT_ENGINE_RENDERER :: "SDL_ttf.renderer_text_engine.create.renderer" PROP_RENDERER_TEXT_ENGINE_ATLAS_TEXTURE_SIZE :: "SDL_ttf.renderer_text_engine.create.atlas_texture_size" -PROP_GPU_TEXT_ENGINE_DEVICE :: "SDL_ttf.gpu_text_engine.create.device" +PROP_GPU_TEXT_ENGINE_DEVICE :: "SDL_ttf.gpu_text_engine.create.device" PROP_GPU_TEXT_ENGINE_ATLAS_TEXTURE_SIZE :: "SDL_ttf.gpu_text_engine.create.atlas_texture_size" MAJOR_VERSION :: 3 MINOR_VERSION :: 2 -PATCHLEVEL :: 2 +PATCHLEVEL :: 2 -Font :: struct { -} +Font :: struct {} Text :: struct { - text: ^c.char, + text: [^]u8, num_lines: c.int, refcount: c.int, internal: ^TextData, } -FontStyle :: enum SDL.Uint32 { +FontStyle :: enum u32 { NORMAL, BOLD, ITALIC, @@ -59,7 +58,7 @@ FontStyle :: enum SDL.Uint32 { STRIKETHROUGH, } -FontStyleFlags :: bit_set[FontStyle;SDL.Uint32] +FontStyleFlags :: distinct bit_set[FontStyle; u32] // NOTE: This is called TTF_HintingFlags but its not a bit_set so // the "flags" doesnt really make sense, its just the hinting. @@ -96,21 +95,21 @@ ImageType :: enum c.int { GPUAtlasDrawSequence :: struct { atlas_texture: ^SDL.GPUTexture, - xy, uv: [^]SDL.FPoint, + xy, uv: [^]SDL.FPoint `fmt:"v,num_vertices"`, num_vertices: c.int, - indices: [^]c.int, + indices: [^]c.int `fmt:"v,num_indices"`, num_indices: c.int, image_type: ImageType, next: ^GPUAtlasDrawSequence, } GPUTextEngineWinding :: enum c.int { - INVALID = -1, - CLOCKWISE, - COUNTER_CLOCKWISE, + INVALID = -1, + CLOCKWISE = 0, + COUNTER_CLOCKWISE = +1, } -SubStringFlags :: bit_field SDL.Uint32 { +SubStringFlags :: bit_field u32 { direction: u8 | 8, text_start: bool | 1, line_start: bool | 1, @@ -125,31 +124,31 @@ SubString :: struct { rect: SDL.Rect, } -@(default_calling_convention = "c", link_prefix = "TTF_", require_results) +@(default_calling_convention="c", link_prefix="TTF_", require_results) foreign lib { - Version :: proc() -> c.int --- + Version :: proc() -> c.int --- GetFreeTypeVersion :: proc(major, minor, patch: ^c.int) --- GetHarfBuzzVersion :: proc(major, minor, patch: ^c.int) --- Init :: proc() -> bool --- - OpenFont :: proc(file: cstring, ptsize: f32) -> ^Font --- - OpenFontIO :: proc(src: ^SDL.IOStream, closeio: bool, ptsize: f32) -> ^Font --- + OpenFont :: proc(file: cstring, ptsize: f32) -> ^Font --- + OpenFontIO :: proc(src: ^SDL.IOStream, closeio: bool, ptsize: f32) -> ^Font --- OpenFontWithProperties :: proc(props: SDL.PropertiesID) -> ^Font --- CopyFont :: proc(existing_font: ^Font) -> ^Font --- GetFontProperties :: proc(font: ^Font) -> SDL.PropertiesID --- - GetFontGeneration :: proc(font: ^Font) -> SDL.Uint32 --- + GetFontGeneration :: proc(font: ^Font) -> u32 --- - AddFallbackFont :: proc(font: ^Font, fallback: ^Font) -> bool --- + AddFallbackFont :: proc(font: ^Font, fallback: ^Font) -> bool --- RemoveFallbackFont :: proc(font: ^Font, fallback: ^Font) --- ClearFallbackFonts :: proc(font: ^Font) --- - SetFontSize :: proc(font: ^Font, ptsize: f32) -> bool --- + SetFontSize :: proc(font: ^Font, ptsize: f32) -> bool --- SetFontSizeDPI :: proc(font: ^Font, ptsize: f32, hdpi: c.int, vdpi: c.int) -> bool --- - GetFontSize :: proc(font: ^Font) -> f32 --- - GetFontDPI :: proc(font: ^Font, hdpi: ^c.int, vdpi: ^c.int) -> bool --- + GetFontSize :: proc(font: ^Font) -> f32 --- + GetFontDPI :: proc(font: ^Font, hdpi: ^c.int, vdpi: ^c.int) -> bool --- SetFontStyle :: proc(font: ^Font, style: FontStyleFlags) --- GetFontStyle :: proc(#by_ptr font: Font) -> FontStyleFlags --- @@ -189,92 +188,92 @@ foreign lib { SetFontDirection :: proc(font: ^Font, direction: Direction) -> bool --- GetFontDirection :: proc(#by_ptr font: Font) -> Direction --- - StringToTag :: proc(string: cstring) -> SDL.Uint32 --- - TagToString :: proc(tag: SDL.Uint32, string: [^]c.char, size: c.size_t) --- + StringToTag :: proc(string: cstring) -> u32 --- + TagToString :: proc(tag: u32, string: [^]c.char, size: c.size_t) --- - SetFontScript :: proc(font: ^Font, script: SDL.Uint32) -> bool --- - GetFontScript :: proc(font: ^Font) -> SDL.Uint32 --- + SetFontScript :: proc(font: ^Font, script: u32) -> bool --- + GetFontScript :: proc(font: ^Font) -> u32 --- SetFontLanguage :: proc(font: ^Font, language_bcp47: cstring) -> bool --- - GetGlyphScript :: proc(ch: SDL.Uint32) -> SDL.Uint32 --- - FontHasGlyph :: proc(font: ^Font, ch: SDL.Uint32) -> bool --- - GetGlyphImage :: proc(font: ^Font, ch: SDL.Uint32, image_type: ^ImageType) -> ^SDL.Surface --- - GetGlyphImageForIndex :: proc(font: ^Font, glyph_index: SDL.Uint32, image_type: ^ImageType) -> ^SDL.Surface --- - GetGlyphMetrics :: proc(font: ^Font, ch: SDL.Uint32, minx, maxx, miny, maxy, advance: ^c.int) -> bool --- - GetGlyphKerning :: proc(font: ^Font, previous_ch: SDL.Uint32, ch: SDL.Uint32, kerning: ^c.int) -> bool --- + GetGlyphScript :: proc(ch: u32) -> u32 --- + FontHasGlyph :: proc(font: ^Font, ch: u32) -> bool --- + GetGlyphImage :: proc(font: ^Font, ch: u32, image_type: ^ImageType) -> ^SDL.Surface --- + GetGlyphImageForIndex :: proc(font: ^Font, glyph_index: u32, image_type: ^ImageType) -> ^SDL.Surface --- + GetGlyphMetrics :: proc(font: ^Font, ch: u32, minx, maxx, miny, maxy, advance: ^c.int) -> bool --- + GetGlyphKerning :: proc(font: ^Font, previous_ch: u32, ch: u32, kerning: ^c.int) -> bool --- - GetStringSize :: proc(font: ^Font, text: cstring, length: c.size_t, w, h: ^c.int) -> bool --- + GetStringSize :: proc(font: ^Font, text: cstring, length: c.size_t, w, h: ^c.int) -> bool --- GetStringSizeWrapped :: proc(font: ^Font, text: cstring, length: c.size_t, wrap_width: c.int, w, h: ^c.int) -> bool --- - MeasureString :: proc(font: ^Font, text: cstring, length: c.size_t, max_width: c.int, measured_width: ^c.int, measured_length: ^c.size_t) -> bool --- + MeasureString :: proc(font: ^Font, text: cstring, length: c.size_t, max_width: c.int, measured_width: ^c.int, measured_length: ^c.size_t) -> bool --- - RenderText_Solid :: proc(font: ^Font, text: cstring, length: c.size_t, fg: SDL.Color) -> ^SDL.Surface --- - RenderText_Solid_Wrapped :: proc(font: ^Font, text: cstring, length: c.size_t, fg: SDL.Color, wrap_Length: c.int) -> ^SDL.Surface --- - RenderGylph_Solid :: proc(font: ^Font, ch: SDL.Uint32, fg: SDL.Color) -> ^SDL.Surface --- - RenderText_Shaded :: proc(font: ^Font, text: cstring, length: c.size_t, fg, bg: SDL.Color) -> ^SDL.Surface --- - RenderText_Shaded_Wrapped :: proc(font: ^Font, text: cstring, length: c.size_t, fg, bg: SDL.Color, wrap_width: c.int) -> ^SDL.Surface --- - RenderGlyph_Shaded :: proc(font: ^Font, ch: SDL.Uint32, fg, bg: SDL.Color) -> ^SDL.Surface --- - RenderText_Blended :: proc(font: ^Font, text: cstring, length: c.size_t, fg: SDL.Color) -> ^SDL.Surface --- + RenderText_Solid :: proc(font: ^Font, text: cstring, length: c.size_t, fg: SDL.Color) -> ^SDL.Surface --- + RenderText_Solid_Wrapped :: proc(font: ^Font, text: cstring, length: c.size_t, fg: SDL.Color, wrap_Length: c.int) -> ^SDL.Surface --- + RenderGylph_Solid :: proc(font: ^Font, ch: u32, fg: SDL.Color) -> ^SDL.Surface --- + RenderText_Shaded :: proc(font: ^Font, text: cstring, length: c.size_t, fg, bg: SDL.Color) -> ^SDL.Surface --- + RenderText_Shaded_Wrapped :: proc(font: ^Font, text: cstring, length: c.size_t, fg, bg: SDL.Color, wrap_width: c.int) -> ^SDL.Surface --- + RenderGlyph_Shaded :: proc(font: ^Font, ch: u32, fg, bg: SDL.Color) -> ^SDL.Surface --- + RenderText_Blended :: proc(font: ^Font, text: cstring, length: c.size_t, fg: SDL.Color) -> ^SDL.Surface --- RnederText_Blended_Wrapped :: proc(font: ^Font, text: cstring, length: c.size_t, fg: SDL.Color, wrap_width: c.int) -> ^SDL.Surface --- - RenderGlyph_Blended :: proc(font: ^Font, ch: SDL.Uint32, fg: SDL.Color) -> ^SDL.Surface --- - RenderText_LCD :: proc(font: ^Font, text: cstring, length: c.size_t, fg, bg: SDL.Color) -> ^SDL.Surface --- - RenderText_LCD_Wrapped :: proc(font: ^Font, text: cstring, length: c.size_t, fg, bg: SDL.Color, wrap_width: c.int) -> ^SDL.Surface --- - RenderGlyph_LCD :: proc(font: ^Font, ch: SDL.Uint32, fg, bg: SDL.Color) -> ^SDL.Surface --- + RenderGlyph_Blended :: proc(font: ^Font, ch: u32, fg: SDL.Color) -> ^SDL.Surface --- + RenderText_LCD :: proc(font: ^Font, text: cstring, length: c.size_t, fg, bg: SDL.Color) -> ^SDL.Surface --- + RenderText_LCD_Wrapped :: proc(font: ^Font, text: cstring, length: c.size_t, fg, bg: SDL.Color, wrap_width: c.int) -> ^SDL.Surface --- + RenderGlyph_LCD :: proc(font: ^Font, ch: u32, fg, bg: SDL.Color) -> ^SDL.Surface --- - CreateSurfaceTextEngine :: proc() -> ^TextEngine --- - DrawSurfaceText :: proc(text: ^Text, x, y: int, surface: ^SDL.Surface) -> bool --- + CreateSurfaceTextEngine :: proc() -> ^TextEngine --- + DrawSurfaceText :: proc(text: ^Text, x, y: c.int, surface: ^SDL.Surface) -> bool --- DestroySurfaceTextEngine :: proc(engine: ^TextEngine) --- - CreateRendererTextEngine :: proc(renderer: ^SDL.Renderer) -> ^TextEngine --- + CreateRendererTextEngine :: proc(renderer: ^SDL.Renderer) -> ^TextEngine --- CreateRendererTextEngineWithProperties :: proc(props: SDL.PropertiesID) -> ^TextEngine --- - DrawRendererText :: proc(text: ^Text, x, y: f32) -> bool --- - DestroyRendererTextEngine :: proc(engine: ^TextEngine) --- + DrawRendererText :: proc(text: ^Text, x, y: f32) -> bool --- + DestroyRendererTextEngine :: proc(engine: ^TextEngine) --- - CreateGPUTextEngine :: proc(device: ^SDL.GPUDevice) -> ^TextEngine --- + CreateGPUTextEngine :: proc(device: ^SDL.GPUDevice) -> ^TextEngine --- CreateGPUTextEngineWithProperties :: proc(props: SDL.PropertiesID) -> ^TextEngine --- - GetGPUTextDrawData :: proc(text: ^Text) -> ^GPUAtlasDrawSequence --- - DestroyGPUTextEngine :: proc(engine: ^TextEngine) --- - SetGPUTextEngineWinding :: proc(engine: ^TextEngine, winding: GPUTextEngineWinding) --- - GetGPUTextEngineWinding :: proc(#by_ptr engine: TextEngine) -> GPUTextEngineWinding --- + GetGPUTextDrawData :: proc(text: ^Text) -> ^GPUAtlasDrawSequence --- + DestroyGPUTextEngine :: proc(engine: ^TextEngine) --- + SetGPUTextEngineWinding :: proc(engine: ^TextEngine, winding: GPUTextEngineWinding) --- + GetGPUTextEngineWinding :: proc(#by_ptr engine: TextEngine) -> GPUTextEngineWinding --- - CreateText :: proc(engine: ^TextEngine, font: ^Font, text: cstring, length: c.size_t) -> ^Text --- - GetTextProperties :: proc(text: ^Text) -> SDL.PropertiesID --- - SetTextEngine :: proc(text: ^Text, engine: ^TextEngine) -> bool --- - GetTextEngine :: proc(text: ^Text) -> ^TextEngine --- - SetTextFont :: proc(text: ^Text, font: ^Font) -> bool --- - GetTextFont :: proc(text: ^Text) -> ^Font --- - SetTextDirection :: proc(text: ^Text, direction: Direction) -> bool --- - GetTextDirection :: proc(text: ^Text) -> Direction --- - SetTextScript :: proc(text: ^Text, script: SDL.Uint32) -> bool --- - GetTextScript :: proc(text: ^Text) -> SDL.Uint32 --- - SetTextColor :: proc(text: ^Text, r, g, b, a: SDL.Uint8) -> bool --- - SetTextColorFloat :: proc(text: ^Text, r, g, b, a: f32) -> bool --- - GetTextColor :: proc(text: ^Text, r, g, b, a: ^SDL.Uint8) -> bool --- - GetTextColorFloat :: proc(text: ^Text, r, g, b, a: ^f32) -> bool --- - SetTextPosition :: proc(text: ^Text, x, y: c.int) -> bool --- - GetTextPosition :: proc(text: ^Text, x, y: ^c.int) -> bool --- - SetTextWrapWidth :: proc(text: ^Text, wrap_width: c.int) -> bool --- - GetTextWrapWidth :: proc(text: ^Text, wrap_width: ^c.int) -> bool --- + CreateText :: proc(engine: ^TextEngine, font: ^Font, text: cstring, length: c.size_t) -> ^Text --- + GetTextProperties :: proc(text: ^Text) -> SDL.PropertiesID --- + SetTextEngine :: proc(text: ^Text, engine: ^TextEngine) -> bool --- + GetTextEngine :: proc(text: ^Text) -> ^TextEngine --- + SetTextFont :: proc(text: ^Text, font: ^Font) -> bool --- + GetTextFont :: proc(text: ^Text) -> ^Font --- + SetTextDirection :: proc(text: ^Text, direction: Direction) -> bool --- + GetTextDirection :: proc(text: ^Text) -> Direction --- + SetTextScript :: proc(text: ^Text, script: u32) -> bool --- + GetTextScript :: proc(text: ^Text) -> u32 --- + SetTextColor :: proc(text: ^Text, r, g, b, a: u8) -> bool --- + SetTextColorFloat :: proc(text: ^Text, r, g, b, a: f32) -> bool --- + GetTextColor :: proc(text: ^Text, r, g, b, a: ^u8) -> bool --- + GetTextColorFloat :: proc(text: ^Text, r, g, b, a: ^f32) -> bool --- + SetTextPosition :: proc(text: ^Text, x, y: c.int) -> bool --- + GetTextPosition :: proc(text: ^Text, x, y: ^c.int) -> bool --- + SetTextWrapWidth :: proc(text: ^Text, wrap_width: c.int) -> bool --- + GetTextWrapWidth :: proc(text: ^Text, wrap_width: ^c.int) -> bool --- SetTextWrapWhitespaceVisible :: proc(text: ^Text, visible: bool) -> bool --- - TextWrapWhitespaceVisible :: proc(text: ^Text) -> bool --- + TextWrapWhitespaceVisible :: proc(text: ^Text) -> bool --- - SetTextString :: proc(text: ^Text, string: cstring, length: c.size_t) -> bool --- + SetTextString :: proc(text: ^Text, string: cstring, length: c.size_t) -> bool --- InsertTextString :: proc(text: ^Text, offset: c.int, string: cstring, length: c.size_t) -> bool --- AppendTextString :: proc(text: ^Text, string: cstring, length: c.size_t) -> bool --- DeleteTextString :: proc(text: ^Text, offset, length: c.int) -> bool --- GetTextSize :: proc(text: ^Text, w, h: ^c.int) -> bool --- - GetTextSubString :: proc(text: ^Text, offset: c.int, substring: ^SubString) -> bool --- - GetTextSubStringForLine :: proc(text: ^Text, line: c.int, substring: ^SubString) -> bool --- + GetTextSubString :: proc(text: ^Text, offset: c.int, substring: ^SubString) -> bool --- + GetTextSubStringForLine :: proc(text: ^Text, line: c.int, substring: ^SubString) -> bool --- GetTextSubStringsForRange :: proc(text: ^Text, offset, length: c.int, count: ^c.int) -> [^]^SubString --- - GetTextSubStringForPoint :: proc(text: ^Text, x, y: c.int, substring: ^SubString) -> bool --- - GetPreviousTextSubString :: proc(text: ^Text, #by_ptr substring: SubString, previous: ^SubString) -> bool --- - GetNextTextSubString :: proc(text: ^Text, #by_ptr substring: SubString, next: ^SubString) -> bool --- + GetTextSubStringForPoint :: proc(text: ^Text, x, y: c.int, substring: ^SubString) -> bool --- + GetPreviousTextSubString :: proc(text: ^Text, #by_ptr substring: SubString, previous: ^SubString) -> bool --- + GetNextTextSubString :: proc(text: ^Text, #by_ptr substring: SubString, next: ^SubString) -> bool --- - UpdateText :: proc(text: ^Text) -> bool --- + UpdateText :: proc(text: ^Text) -> bool --- DestroyText :: proc(text: ^Text) --- - CloseFont :: proc(font: ^Font) --- - Quit :: proc() --- - WasInit :: proc() -> c.int --- + CloseFont :: proc(font: ^Font) --- + Quit :: proc() --- + WasInit :: proc() -> c.int --- } From 1b13152286bf6e2127808929651753fd2bafd5ba Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Sun, 18 May 2025 15:08:10 +0200 Subject: [PATCH 088/120] Change XAudio2 DLL search flags to DEFAULT_DIRS --- vendor/windows/XAudio2/xaudio2.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/windows/XAudio2/xaudio2.odin b/vendor/windows/XAudio2/xaudio2.odin index 178463b64..078ec4095 100644 --- a/vendor/windows/XAudio2/xaudio2.odin +++ b/vendor/windows/XAudio2/xaudio2.odin @@ -724,7 +724,7 @@ Create :: proc "stdcall" (ppXAudio2: ^^IXAudio2, Flags: FLAGS = {}, XAudio2Proce create_info: CreateInfoFunc if dll_Instance == nil { - dll_Instance = win.LoadLibraryExW(win.L("xaudio2_9.dll"), nil, {.LOAD_LIBRARY_SEARCH_SYSTEM32}) + dll_Instance = win.LoadLibraryExW(win.L("xaudio2_9.dll"), nil, {.LOAD_LIBRARY_SEARCH_DEFAULT_DIRS}) if dll_Instance == nil { return HRESULT(win.GetLastError()) } From 3519cecb7c59d0e803369464e555c0c38f9b1268 Mon Sep 17 00:00:00 2001 From: Krzesimir Nowak Date: Sun, 18 May 2025 15:25:17 +0200 Subject: [PATCH 089/120] Formatting fixes --- core/sys/linux/wrappers.odin | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/core/sys/linux/wrappers.odin b/core/sys/linux/wrappers.odin index d93928364..53eb80f86 100644 --- a/core/sys/linux/wrappers.odin +++ b/core/sys/linux/wrappers.odin @@ -62,15 +62,15 @@ This procedure extracts a directory entry from `buf` at the offset `offs`. in `buf`. The procedure only iterates as much data as loaded in the buffer and does not automatically make a request for the buffer to be refilled. -**Inputs**: -- `buf` - byte buffer with data from `getdents()` -- `offs` - offset to the next possible directory entry in `buf` +Inputs: +- buf: A byte buffer with data from `getdents()` +- offs: An offset to the next possible directory entry in `buf` -**Returns**: -- A pointer to a directory entry in `buf`, or `nil`. -- A bool value denoting if a valid directory entry is returned. +Returns: +- A pointer to a directory entry in `buf`, or `nil` +- A bool value denoting if a valid directory entry is returned -**Example**: +Example: import "core:fmt" import "core:sys/linux" @@ -110,10 +110,10 @@ Obtain the name of dirent as a string. The lifetime of the returned string is bound to the lifetime of the provided dirent structure. -**Inputs**: -- `dirent` - directory entry +Inputs: +- dirent: A directory entry -**Returns**: +Returns: - A name of the entry */ dirent_name :: proc "contextless" (dirent: ^Dirent) -> string #no_bounds_check { From 591118c68804bf89b9ee3d371b14c54133f4655c Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Sun, 18 May 2025 10:51:08 -0400 Subject: [PATCH 090/120] Use `--sysroot` instead of `-Wl,-syslibroot` on Darwin This keeps the linker from using the wrong SDK and mirrors how we build the Odin compiler itself in `build_odin.sh`. --- src/linker.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/linker.cpp b/src/linker.cpp index ec165ef7d..087bb49f1 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -769,7 +769,17 @@ try_cross_linking:; gbString platform_lib_str = gb_string_make(heap_allocator(), ""); defer (gb_string_free(platform_lib_str)); if (build_context.metrics.os == TargetOs_darwin) { - platform_lib_str = gb_string_appendc(platform_lib_str, "-Wl,-syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -L/usr/local/lib "); + // Get the MacOSX SDK path. + gbString darwin_sdk_path = gb_string_make(temporary_allocator(), ""); + if (!system_exec_command_line_app_output("xcrun --sdk macosx --show-sdk-path", &darwin_sdk_path)) { + darwin_sdk_path = gb_string_set(darwin_sdk_path, "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk"); + } else { + // Trim the trailing newline. + darwin_sdk_path = gb_string_trim_space(darwin_sdk_path); + } + platform_lib_str = gb_string_append_fmt(platform_lib_str, "--sysroot %s ", darwin_sdk_path); + + platform_lib_str = gb_string_appendc(platform_lib_str, "-L/usr/local/lib "); // Homebrew's default library path, checking if it exists to avoid linking warnings. if (gb_file_exists("/opt/homebrew/lib")) { From eb051a2d7c0ddfa1b28d22ba5466ea973eb0e40d Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Sun, 18 May 2025 17:13:39 -0400 Subject: [PATCH 091/120] Re-enable static map calls on AMD64 SysV --- src/build_settings.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/build_settings.cpp b/src/build_settings.cpp index c941e0f68..04101761c 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -1915,12 +1915,6 @@ gb_internal void init_build_context(TargetMetrics *cross_target, Subtarget subta } - // TODO: Static map calls are bugged on `amd64sysv` abi. - if (bc->metrics.os != TargetOs_windows && bc->metrics.arch == TargetArch_amd64) { - // ENFORCE DYNAMIC MAP CALLS - bc->dynamic_map_calls = true; - } - bc->ODIN_VALGRIND_SUPPORT = false; if (build_context.metrics.os != TargetOs_windows) { switch (bc->metrics.arch) { From e8d52ac2bcbc0b618b079df1c04316c018cfb333 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Mon, 19 May 2025 07:15:36 -0400 Subject: [PATCH 092/120] Make `odin help` more precise about what it accepts --- src/main.cpp | 65 ++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 50 insertions(+), 15 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index b2cfbe018..d8b866e83 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2221,20 +2221,30 @@ gb_internal void remove_temp_files(lbGenerator *gen) { } -gb_internal void print_show_help(String const arg0, String command, String optional_flag = {}) { +gb_internal int print_show_help(String const arg0, String command, String optional_flag = {}) { + bool help_resolved = false; + bool printed_usage_header = false; + bool printed_flags_header = false; + if (command == "help" && optional_flag.len != 0 && optional_flag[0] != '-') { command = optional_flag; optional_flag = {}; } - print_usage_line(0, "%.*s is a tool for managing Odin source code.", LIT(arg0)); - print_usage_line(0, "Usage:"); - print_usage_line(1, "%.*s %.*s [arguments]", LIT(arg0), LIT(command)); - print_usage_line(0, ""); - defer (print_usage_line(0, "")); - + auto const print_usage_header_once = [&help_resolved, &printed_usage_header, arg0, command]() { + if (printed_usage_header) { + return; + } + print_usage_line(0, "%.*s is a tool for managing Odin source code.", LIT(arg0)); + print_usage_line(0, "Usage:"); + print_usage_line(1, "%.*s %.*s [arguments]", LIT(arg0), LIT(command)); + print_usage_line(0, ""); + help_resolved = true; + printed_usage_header = true; + }; if (command == "build") { + print_usage_header_once(); print_usage_line(1, "build Compiles directory of .odin files as an executable."); print_usage_line(2, "One must contain the program's entry point, all must be in the same package."); print_usage_line(2, "Use `-file` to build a single file instead."); @@ -2243,6 +2253,7 @@ gb_internal void print_show_help(String const arg0, String command, String optio print_usage_line(3, "odin build

    Builds package in ."); print_usage_line(3, "odin build filename.odin -file Builds single-file package, must contain entry point."); } else if (command == "run") { + print_usage_header_once(); print_usage_line(1, "run Same as 'build', but also then runs the newly compiled executable."); print_usage_line(2, "Append an empty flag and then the args, '-- ', to specify args for the output."); print_usage_line(2, "Examples:"); @@ -2250,25 +2261,31 @@ gb_internal void print_show_help(String const arg0, String command, String optio print_usage_line(3, "odin run Builds and runs package in ."); print_usage_line(3, "odin run filename.odin -file Builds and runs single-file package, must contain entry point."); } else if (command == "check") { + print_usage_header_once(); print_usage_line(1, "check Parses and type checks directory of .odin files."); print_usage_line(2, "Examples:"); print_usage_line(3, "odin check . Type checks package in current directory."); print_usage_line(3, "odin check Type checks package in ."); print_usage_line(3, "odin check filename.odin -file Type checks single-file package, must contain entry point."); } else if (command == "test") { + print_usage_header_once(); print_usage_line(1, "test Builds and runs procedures with the attribute @(test) in the initial package."); } else if (command == "doc") { + print_usage_header_once(); print_usage_line(1, "doc Generates documentation from a directory of .odin files."); print_usage_line(2, "Examples:"); print_usage_line(3, "odin doc . Generates documentation on package in current directory."); print_usage_line(3, "odin doc Generates documentation on package in ."); print_usage_line(3, "odin doc filename.odin -file Generates documentation on single-file package."); } else if (command == "version") { + print_usage_header_once(); print_usage_line(1, "version Prints version."); } else if (command == "strip-semicolon") { + print_usage_header_once(); print_usage_line(1, "strip-semicolon"); print_usage_line(2, "Parses and type checks .odin file(s) and then removes unneeded semicolons from the entire project."); } else if (command == "bundle") { + print_usage_header_once(); print_usage_line(1, "bundle Bundles a directory in a specific layout for that platform"); print_usage_line(2, "Supported platforms:"); print_usage_line(3, "android"); @@ -2293,13 +2310,10 @@ gb_internal void print_show_help(String const arg0, String command, String optio check = true; } - print_usage_line(0, ""); - print_usage_line(1, "Flags"); - print_usage_line(0, ""); - auto const print_flag = [&optional_flag](char const *flag) -> bool { + auto const print_flag = [&optional_flag, &help_resolved, &printed_flags_header, print_usage_header_once](char const *flag) -> bool { if (optional_flag.len != 0) { String f = make_string_c(flag); isize i = string_index_byte(f, ':'); @@ -2310,6 +2324,14 @@ gb_internal void print_show_help(String const arg0, String command, String optio return false; } } + print_usage_header_once(); + if (!printed_flags_header) { + print_usage_line(0, ""); + print_usage_line(1, "Flags"); + print_usage_line(0, ""); + printed_flags_header = true; + } + help_resolved = true; print_usage_line(0, ""); print_usage_line(1, flag); return true; @@ -2867,6 +2889,21 @@ gb_internal void print_show_help(String const arg0, String command, String optio print_usage_line(2, "If this is omitted, the terminal will prompt you to provide it."); } } + + if (!help_resolved) { + usage(arg0); + print_usage_line(0, ""); + if (command == "help") { + print_usage_line(0, "'%.*s' is not a recognized flag.", LIT(optional_flag)); + } else { + print_usage_line(0, "'%.*s' is not a recognized command.", LIT(command)); + } + return 1; + } + + print_usage_line(0, ""); + + return 0; } gb_internal void print_show_unused(Checker *c) { @@ -3354,8 +3391,7 @@ int main(int arg_count, char const **arg_ptr) { usage(args[0]); return 1; } else { - print_show_help(args[0], args[1], args[2]); - return 0; + return print_show_help(args[0], args[1], args[2]); } } else if (command == "bundle") { if (args.count < 4) { @@ -3441,8 +3477,7 @@ int main(int arg_count, char const **arg_ptr) { } if (build_context.show_help) { - print_show_help(args[0], command); - return 0; + return print_show_help(args[0], command); } if (command == "bundle") { From fa63d351acea69ecb6a1cb1b127a12e17538124d Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Mon, 19 May 2025 07:19:28 -0400 Subject: [PATCH 093/120] Add missing commands to `odin help` --- src/main.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index d8b866e83..818e5b60e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2289,6 +2289,12 @@ gb_internal int print_show_help(String const arg0, String command, String option print_usage_line(1, "bundle Bundles a directory in a specific layout for that platform"); print_usage_line(2, "Supported platforms:"); print_usage_line(3, "android"); + } else if (command == "report") { + print_usage_header_once(); + print_usage_line(1, "report Prints information useful to reporting a bug."); + } else if (command == "root") { + print_usage_header_once(); + print_usage_line(1, "root Prints the root path where Odin looks for the builtin collections."); } bool doc = command == "doc"; From a5926532a2316340e6ceed7d8a7fee2b02fde7b7 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Mon, 19 May 2025 07:22:47 -0400 Subject: [PATCH 094/120] Sync command descriptions between `odin help` and usage --- src/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 818e5b60e..f64575cac 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -278,10 +278,10 @@ gb_internal void usage(String argv0, String argv1 = {}) { print_usage_line(1, " One must contain the program's entry point, all must be in the same package."); print_usage_line(1, "run Same as 'build', but also then runs the newly compiled executable."); print_usage_line(1, "bundle Bundles a directory in a specific layout for that platform."); - print_usage_line(1, "check Parses, and type checks a directory of .odin files."); + print_usage_line(1, "check Parses and type checks a directory of .odin files."); print_usage_line(1, "strip-semicolon Parses, type checks, and removes unneeded semicolons from the entire program."); print_usage_line(1, "test Builds and runs procedures with the attribute @(test) in the initial package."); - print_usage_line(1, "doc Generates documentation on a directory of .odin files."); + print_usage_line(1, "doc Generates documentation from a directory of .odin files."); print_usage_line(1, "version Prints version."); print_usage_line(1, "report Prints information useful to reporting a bug."); print_usage_line(1, "root Prints the root path where Odin looks for the builtin collections."); From 4495a4c58ed73c7b6c4b552855537ead65cd93d3 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Mon, 19 May 2025 09:25:18 -0400 Subject: [PATCH 095/120] Check for `-help` sooner and show it immediately --- src/main.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index f64575cac..d32ae9c28 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3282,6 +3282,16 @@ int main(int arg_count, char const **arg_ptr) { String run_args_string = {}; isize last_non_run_arg = args.count; + for_array(i, args) { + if (args[i] == "--") { + break; + } + if (args[i] == "-help" || args[i] == "--help") { + build_context.show_help = true; + return print_show_help(args[0], command); + } + } + bool run_output = false; if (command == "run" || command == "test") { if (args.count < 3) { @@ -3428,11 +3438,6 @@ int main(int arg_count, char const **arg_ptr) { init_filename = copy_string(permanent_allocator(), init_filename); - if (init_filename == "-help" || - init_filename == "--help") { - build_context.show_help = true; - } - if (init_filename.len > 0 && !build_context.show_help) { // The command must be build, run, test, check, or another that takes a directory or filename. if (!path_is_directory(init_filename)) { From 2c25a72b45b9047862535aeb9b069292eba8a6e4 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Mon, 19 May 2025 09:26:57 -0400 Subject: [PATCH 096/120] Make certain commands fail if passed excess arguments --- src/main.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index d32ae9c28..00032c1ff 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3385,6 +3385,10 @@ int main(int arg_count, char const **arg_ptr) { return 1; #endif } else if (command == "version") { + if (args.count != 2) { + usage(args[0]); + return 1; + } build_context.command_kind = Command_version; gb_printf("%.*s version %.*s", LIT(args[0]), LIT(ODIN_VERSION)); @@ -3399,6 +3403,10 @@ int main(int arg_count, char const **arg_ptr) { gb_printf("\n"); return 0; } else if (command == "report") { + if (args.count != 2) { + usage(args[0]); + return 1; + } build_context.command_kind = Command_bug_report; print_bug_report_help(); return 0; @@ -3423,6 +3431,10 @@ int main(int arg_count, char const **arg_ptr) { } init_filename = args[3]; } else if (command == "root") { + if (args.count != 2) { + usage(args[0]); + return 1; + } gb_printf("%.*s", LIT(odin_root_dir())); return 0; } else if (command == "clear-cache") { From ab9593250295137d0a654e942965feee7f506206 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Mon, 19 May 2025 20:44:27 +0200 Subject: [PATCH 097/120] -dynamic-literals --- src/build_settings.cpp | 1 + src/check_expr.cpp | 2 +- src/llvm_backend_expr.cpp | 2 +- src/main.cpp | 5 +++++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 04101761c..8364bbfbe 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -459,6 +459,7 @@ struct BuildContext { bool ignore_unknown_attributes; bool no_bounds_check; bool no_type_assert; + bool dynamic_literals; // Opt-in to `#+feature dynamic-literals` project-wide. bool no_output_files; bool no_crt; bool no_rpath; diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 7ccca1b57..167052772 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -9433,7 +9433,7 @@ gb_internal bool is_expr_inferred_fixed_array(Ast *type_expr) { } gb_internal bool check_for_dynamic_literals(CheckerContext *c, Ast *node, AstCompoundLit *cl) { - if (cl->elems.count > 0 && (check_feature_flags(c, node) & OptInFeatureFlag_DynamicLiterals) == 0) { + if (cl->elems.count > 0 && (check_feature_flags(c, node) & OptInFeatureFlag_DynamicLiterals) == 0 && !build_context.dynamic_literals) { ERROR_BLOCK(); error(node, "Compound literals of dynamic types are disabled by default"); error_line("\tSuggestion: If you want to enable them for this specific file, add '#+feature dynamic-literals' at the top of the file\n"); diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index 0909b189a..e17d958d7 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -4844,7 +4844,7 @@ gb_internal lbAddr lb_build_addr_compound_lit(lbProcedure *p, Ast *expr) { if (cl->elems.count == 0) { break; } - GB_ASSERT(expr->file()->feature_flags & OptInFeatureFlag_DynamicLiterals); + GB_ASSERT(expr->file()->feature_flags & OptInFeatureFlag_DynamicLiterals || build_context.dynamic_literals); lbValue err = lb_dynamic_map_reserve(p, v.addr, 2*cl->elems.count, pos); gb_unused(err); diff --git a/src/main.cpp b/src/main.cpp index 00032c1ff..3692e4f06 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -319,6 +319,7 @@ enum BuildFlagKind { BuildFlag_NoBoundsCheck, BuildFlag_NoTypeAssert, BuildFlag_NoDynamicLiterals, + BuildFlag_DynamicLiterals, BuildFlag_NoCRT, BuildFlag_NoRPath, BuildFlag_NoEntryPoint, @@ -538,6 +539,7 @@ gb_internal bool parse_build_flags(Array args) { add_flag(&build_flags, BuildFlag_NoTypeAssert, str_lit("no-type-assert"), BuildFlagParam_None, Command__does_check); add_flag(&build_flags, BuildFlag_NoThreadLocal, str_lit("no-thread-local"), BuildFlagParam_None, Command__does_check); add_flag(&build_flags, BuildFlag_NoDynamicLiterals, str_lit("no-dynamic-literals"), BuildFlagParam_None, Command__does_check); + add_flag(&build_flags, BuildFlag_DynamicLiterals, str_lit("dynamic-literals"), BuildFlagParam_None, Command__does_check); add_flag(&build_flags, BuildFlag_NoCRT, str_lit("no-crt"), BuildFlagParam_None, Command__does_build); add_flag(&build_flags, BuildFlag_NoRPath, str_lit("no-rpath"), BuildFlagParam_None, Command__does_build); add_flag(&build_flags, BuildFlag_NoEntryPoint, str_lit("no-entry-point"), BuildFlagParam_None, Command__does_check &~ Command_test); @@ -1207,6 +1209,9 @@ gb_internal bool parse_build_flags(Array args) { case BuildFlag_NoDynamicLiterals: gb_printf_err("Warning: Use of -no-dynamic-literals is now redundant\n"); break; + case BuildFlag_DynamicLiterals: + build_context.dynamic_literals = true; + break; case BuildFlag_NoCRT: build_context.no_crt = true; break; From b0185288336f148b71240514b9fa61deeb31c8b4 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Mon, 19 May 2025 20:29:01 -0400 Subject: [PATCH 098/120] Do not call disabled deferred procedures --- src/checker.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/checker.cpp b/src/checker.cpp index 909ee705b..aaa815365 100644 --- a/src/checker.cpp +++ b/src/checker.cpp @@ -6325,6 +6325,12 @@ gb_internal void check_deferred_procedures(Checker *c) { continue; } + if (dst->flags & EntityFlag_Disabled) { + // Prevent procedures that have been disabled from acting as deferrals. + src->Procedure.deferred_procedure = {}; + continue; + } + GB_ASSERT(is_type_proc(src->type)); GB_ASSERT(is_type_proc(dst->type)); Type *src_params = base_type(src->type)->Proc.params; From e36db15b48091a5924e6c35b220546862c51ed70 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 20 May 2025 09:16:14 +0100 Subject: [PATCH 099/120] Fix typo `_beginthreadx` -> `_beginthreadex` --- vendor/sdl3/sdl3_thread.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/sdl3/sdl3_thread.odin b/vendor/sdl3/sdl3_thread.odin index 9b2d068d9..e6bbf7d16 100644 --- a/vendor/sdl3/sdl3_thread.odin +++ b/vendor/sdl3/sdl3_thread.odin @@ -49,7 +49,7 @@ PROP_THREAD_CREATE_STACKSIZE_NUMBER :: "SDL.thread.create.stacksize" BeginThreadFunction :: proc "c" () -> FunctionPointer { when ODIN_OS == .Windows { foreign { - _beginthreadx :: proc "c" ( + _beginthreadex :: proc "c" ( security: rawptr, stack_size: c.uint, start_address: proc "c" (rawptr), @@ -58,7 +58,7 @@ BeginThreadFunction :: proc "c" () -> FunctionPointer { thraddr: ^c.uint, ) -> uintptr --- } - return FunctionPointer(_beginthreadx) + return FunctionPointer(_beginthreadex) } else { return nil } From 8bffd247b77bf757449d326a4e6ae6cf49167e94 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Tue, 20 May 2025 16:51:24 +0200 Subject: [PATCH 100/120] Restore console mode when test runner exits. --- core/testing/runner.odin | 4 ++++ core/testing/runner_windows.odin | 26 ++++++++++++++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/core/testing/runner.odin b/core/testing/runner.odin index 83a5ac4e7..db0587370 100644 --- a/core/testing/runner.odin +++ b/core/testing/runner.odin @@ -949,5 +949,9 @@ To partly mitigate this, redirect STDERR to a file or use the -define:ODIN_TEST_ fmt.assertf(err == nil, "Error writing JSON report: %v", err) } + when ODIN_OS == .Windows { + console_ansi_fini() + } + return total_success_count == total_test_count } diff --git a/core/testing/runner_windows.odin b/core/testing/runner_windows.odin index 401804c71..b35914c72 100644 --- a/core/testing/runner_windows.odin +++ b/core/testing/runner_windows.odin @@ -3,20 +3,34 @@ package testing import win32 "core:sys/windows" +old_stdout_mode: u32 +old_stderr_mode: u32 + console_ansi_init :: proc() { stdout := win32.GetStdHandle(win32.STD_OUTPUT_HANDLE) if stdout != win32.INVALID_HANDLE && stdout != nil { - old_console_mode: u32 - if win32.GetConsoleMode(stdout, &old_console_mode) { - win32.SetConsoleMode(stdout, old_console_mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING) + if win32.GetConsoleMode(stdout, &old_stdout_mode) { + win32.SetConsoleMode(stdout, old_stdout_mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING) } } stderr := win32.GetStdHandle(win32.STD_ERROR_HANDLE) if stderr != win32.INVALID_HANDLE && stderr != nil { - old_console_mode: u32 - if win32.GetConsoleMode(stderr, &old_console_mode) { - win32.SetConsoleMode(stderr, old_console_mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING) + if win32.GetConsoleMode(stderr, &old_stderr_mode) { + win32.SetConsoleMode(stderr, old_stderr_mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING) } } } + +// Restore the cursor on exit +console_ansi_fini :: proc() { + stdout := win32.GetStdHandle(win32.STD_OUTPUT_HANDLE) + if stdout != win32.INVALID_HANDLE && stdout != nil { + win32.SetConsoleMode(stdout, old_stdout_mode) + } + + stderr := win32.GetStdHandle(win32.STD_ERROR_HANDLE) + if stderr != win32.INVALID_HANDLE && stderr != nil { + win32.SetConsoleMode(stderr, old_stderr_mode) + } +} \ No newline at end of file From eab3e2be2212ec11c568f4fcb5e74e30b379e37f Mon Sep 17 00:00:00 2001 From: Laytan Laats Date: Tue, 20 May 2025 19:47:48 +0200 Subject: [PATCH 101/120] os2: remove libc use on Linux --- core/os/os2/path_linux.odin | 18 ++++++++++++++++++ core/os/os2/path_posix.odin | 17 +++++++++++++++++ core/os/os2/path_posixfs.odin | 21 --------------------- 3 files changed, 35 insertions(+), 21 deletions(-) diff --git a/core/os/os2/path_linux.odin b/core/os/os2/path_linux.odin index 64f415187..8b185f419 100644 --- a/core/os/os2/path_linux.odin +++ b/core/os/os2/path_linux.odin @@ -207,3 +207,21 @@ _get_full_path :: proc(fd: linux.Fd, allocator: runtime.Allocator) -> (fullpath: } return } + +_get_absolute_path :: proc(path: string, allocator: runtime.Allocator) -> (absolute_path: string, err: Error) { + rel := path + if rel == "" { + rel = "." + } + + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) + + fd, errno := linux.open(clone_to_cstring(path, temp_allocator) or_return, {}) + if errno != nil { + err = _get_platform_error(errno) + return + } + defer linux.close(fd) + + return _get_full_path(fd, allocator) +} diff --git a/core/os/os2/path_posix.odin b/core/os/os2/path_posix.odin index e59567240..f22cd446b 100644 --- a/core/os/os2/path_posix.odin +++ b/core/os/os2/path_posix.odin @@ -123,3 +123,20 @@ _set_working_directory :: proc(dir: string) -> (err: Error) { } return } + +_get_absolute_path :: proc(path: string, allocator: runtime.Allocator) -> (absolute_path: string, err: Error) { + rel := path + if rel == "" { + rel = "." + } + temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) + rel_cstr := clone_to_cstring(rel, temp_allocator) or_return + path_ptr := posix.realpath(rel_cstr, nil) + if path_ptr == nil { + return "", Platform_Error(posix.errno()) + } + defer posix.free(path_ptr) + + path_str := clone_string(string(path_ptr), allocator) or_return + return path_str, nil +} diff --git a/core/os/os2/path_posixfs.odin b/core/os/os2/path_posixfs.odin index 4102d71c1..0736e73d1 100644 --- a/core/os/os2/path_posixfs.odin +++ b/core/os/os2/path_posixfs.odin @@ -4,10 +4,6 @@ package os2 // This implementation is for all systems that have POSIX-compliant filesystem paths. -import "base:runtime" -import "core:strings" -import "core:sys/posix" - _are_paths_identical :: proc(a, b: string) -> (identical: bool) { return a == b } @@ -26,23 +22,6 @@ _is_absolute_path :: proc(path: string) -> bool { return len(path) > 0 && _is_path_separator(path[0]) } -_get_absolute_path :: proc(path: string, allocator: runtime.Allocator) -> (absolute_path: string, err: Error) { - rel := path - if rel == "" { - rel = "." - } - temp_allocator := TEMP_ALLOCATOR_GUARD({ allocator }) - rel_cstr := strings.clone_to_cstring(rel, temp_allocator) - path_ptr := posix.realpath(rel_cstr, nil) - if path_ptr == nil { - return "", Platform_Error(posix.errno()) - } - defer posix.free(path_ptr) - - path_str := strings.clone(string(path_ptr), allocator) - return path_str, nil -} - _get_relative_path_handle_start :: proc(base, target: string) -> bool { base_rooted := len(base) > 0 && _is_path_separator(base[0]) target_rooted := len(target) > 0 && _is_path_separator(target[0]) From bcaba47e15e81d7cbf4964423286f72a6065bd4c Mon Sep 17 00:00:00 2001 From: deadwanderer Date: Tue, 20 May 2025 15:42:06 -0400 Subject: [PATCH 102/120] Fix incorrect resource state bit_set --- vendor/directx/d3d12/d3d12.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/directx/d3d12/d3d12.odin b/vendor/directx/d3d12/d3d12.odin index eef93d13c..810172b0c 100644 --- a/vendor/directx/d3d12/d3d12.odin +++ b/vendor/directx/d3d12/d3d12.odin @@ -1551,7 +1551,7 @@ RESOURCE_STATE_GENERIC_READ :: RESOURCE_STATES{ .VERTEX_AND_CONSTANT_BUFFER, .INDEX_BUFFER, .NON_PIXEL_SHADER_RESOURCE, .PIXEL_SHADER_RESOURCE, .INDIRECT_ARGUMENT, .COPY_SOURCE, } RESOURCE_STATE_ALL_SHADER_RESOURCE :: RESOURCE_STATES{ - .SHADING_RATE_SOURCE, .INDEX_BUFFER, + .NON_PIXEL_SHADER_RESOURCE, .PIXEL_SHADER_RESOURCE, } RESOURCE_BARRIER_TYPE :: enum i32 { From 9f559af5305a26593c3e92d2b1b12ac9cb310946 Mon Sep 17 00:00:00 2001 From: deadwanderer Date: Tue, 20 May 2025 15:45:03 -0400 Subject: [PATCH 103/120] Add GPU_UPLOAD heap type --- vendor/directx/d3d12/d3d12.odin | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/vendor/directx/d3d12/d3d12.odin b/vendor/directx/d3d12/d3d12.odin index 810172b0c..9cb1eec48 100644 --- a/vendor/directx/d3d12/d3d12.odin +++ b/vendor/directx/d3d12/d3d12.odin @@ -1316,10 +1316,11 @@ RESOURCE_ALLOCATION_INFO1 :: struct { } HEAP_TYPE :: enum i32 { - DEFAULT = 1, - UPLOAD = 2, - READBACK = 3, - CUSTOM = 4, + DEFAULT = 1, + UPLOAD = 2, + READBACK = 3, + CUSTOM = 4, + GPU_UPLOAD = 5, } CPU_PAGE_PROPERTY :: enum i32 { From c090a28b9d390ccd5352af2b2443491be806e464 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Tue, 20 May 2025 18:56:18 -0400 Subject: [PATCH 104/120] Add `/usr/local/lib` to FreeBSD linker path --- src/linker.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/linker.cpp b/src/linker.cpp index 087bb49f1..41d4a13a1 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -801,6 +801,9 @@ try_cross_linking:; // This points the linker to where the entry point is link_settings = gb_string_appendc(link_settings, "-e _main "); } + } else if (build_context.metrics.os == TargetOs_freebsd) { + // FreeBSD pkg installs third-party shared libraries in /usr/local/lib. + platform_lib_str = gb_string_appendc(platform_lib_str, "-Wl,-L/usr/local/lib "); } else if (build_context.metrics.os == TargetOs_openbsd) { // OpenBSD ports install shared libraries in /usr/local/lib. Also, we must explicitly link libpthread. platform_lib_str = gb_string_appendc(platform_lib_str, "-lpthread -Wl,-L/usr/local/lib "); From 30c1b887414197268bc866aec770786023bd457e Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Tue, 20 May 2025 15:32:01 -0400 Subject: [PATCH 105/120] Add `core:terminal` --- core/terminal/doc.odin | 4 ++ core/terminal/terminal.odin | 104 ++++++++++++++++++++++++++++ core/terminal/terminal_posix.odin | 9 +++ core/terminal/terminal_windows.odin | 9 +++ examples/all/all_main.odin | 3 + 5 files changed, 129 insertions(+) create mode 100644 core/terminal/doc.odin create mode 100644 core/terminal/terminal.odin create mode 100644 core/terminal/terminal_posix.odin create mode 100644 core/terminal/terminal_windows.odin diff --git a/core/terminal/doc.odin b/core/terminal/doc.odin new file mode 100644 index 000000000..490e9d398 --- /dev/null +++ b/core/terminal/doc.odin @@ -0,0 +1,4 @@ +/* +This package is for interacting with the command line interface of the system. +*/ +package terminal diff --git a/core/terminal/terminal.odin b/core/terminal/terminal.odin new file mode 100644 index 000000000..fae6f880a --- /dev/null +++ b/core/terminal/terminal.odin @@ -0,0 +1,104 @@ +package terminal + +import "core:os" +import "core:strings" + +/* +This describes the range of colors that a terminal is capable of supporting. +*/ +Color_Depth :: enum { + None, // No color support + Three_Bit, // 8 colors + Four_Bit, // 16 colors + Eight_Bit, // 256 colors + True_Color, // 24-bit true color +} + +/* +Returns true if the file `handle` is attached to a terminal. + +This is normally true for `os.stdout` and `os.stderr` unless they are +redirected to a file. +*/ +@(require_results) +is_terminal :: proc(handle: os.Handle) -> bool { + return _is_terminal(handle) +} + +/* +Get the color depth support for the terminal. +*/ +@(require_results) +get_color_depth :: proc() -> Color_Depth { + // Reference documentation: + // + // - [[ https://no-color.org/ ]] + // - [[ https://github.com/termstandard/colors ]] + // - [[ https://invisible-island.net/ncurses/terminfo.src.html ]] + + // Respect `NO_COLOR` above all. + if no_color, ok := os.lookup_env("NO_COLOR"); ok { + defer delete(no_color) + if no_color != "" { + return .None + } + } + + // `COLORTERM` is non-standard but widespread and unambiguous. + if colorterm, ok := os.lookup_env("COLORTERM"); ok { + defer delete(colorterm) + // These are the only values that are typically advertised that have + // anything to do with color depth. + if colorterm == "truecolor" || colorterm == "24bit" { + return .True_Color + } + } + + if term, ok := os.lookup_env("TERM"); ok { + defer delete(term) + if strings.contains(term, "-truecolor") { + return .True_Color + } + if strings.contains(term, "-256color") { + return .Eight_Bit + } + if strings.contains(term, "-16color") { + return .Four_Bit + } + + // The `terminfo` database, which is stored in binary on *nix + // platforms, has an undocumented format that is not guaranteed to be + // portable, so beyond this point, we can only make safe assumptions. + // + // This section should only be necessary for terminals that do not + // define any of the previous environment values. + // + // Only a small sampling of some common values are checked here. + switch term { + case "ansi": fallthrough + case "konsole": fallthrough + case "putty": fallthrough + case "rxvt": fallthrough + case "rxvt-color": fallthrough + case "screen": fallthrough + case "st": fallthrough + case "tmux": fallthrough + case "vte": fallthrough + case "xterm": fallthrough + case "xterm-color": + return .Three_Bit + } + } + + return .None +} + +/* +This is true if the terminal is accepting any form of colored text output. +*/ +color_enabled: bool + +@(init, private) +init_terminal_status :: proc() { + color_enabled = get_color_depth() > .None +} diff --git a/core/terminal/terminal_posix.odin b/core/terminal/terminal_posix.odin new file mode 100644 index 000000000..adfb6a0da --- /dev/null +++ b/core/terminal/terminal_posix.odin @@ -0,0 +1,9 @@ +#+build linux, darwin, netbsd, openbsd, freebsd, haiku +package terminal + +import "core:os" +import "core:sys/posix" + +_is_terminal :: proc(handle: os.Handle) -> bool { + return bool(posix.isatty(posix.FD(handle))) +} diff --git a/core/terminal/terminal_windows.odin b/core/terminal/terminal_windows.odin new file mode 100644 index 000000000..caab87cc7 --- /dev/null +++ b/core/terminal/terminal_windows.odin @@ -0,0 +1,9 @@ +package terminal + +import "core:os" +import "core:sys/windows" + +_is_terminal :: proc(handle: os.Handle) -> bool { + mode: windows.DWORD + return bool(windows.GetConsoleMode(windows.HANDLE(handle), &mode)) +} diff --git a/examples/all/all_main.odin b/examples/all/all_main.odin index 0a17227b8..97ecfee45 100644 --- a/examples/all/all_main.odin +++ b/examples/all/all_main.odin @@ -129,6 +129,8 @@ import strings "core:strings" import sync "core:sync" import testing "core:testing" +import terminal "core:terminal" + import edit "core:text/edit" import i18n "core:text/i18n" import match "core:text/match" @@ -257,6 +259,7 @@ _ :: strconv _ :: strings _ :: sync _ :: testing +_ :: terminal _ :: scanner _ :: i18n _ :: match From df5e64beebd02971292838acc4150471620bae24 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Tue, 20 May 2025 15:35:11 -0400 Subject: [PATCH 106/120] Add terminal color detection to `core:log` --- core/log/file_console_logger.odin | 62 ++++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 10 deletions(-) diff --git a/core/log/file_console_logger.odin b/core/log/file_console_logger.odin index 6d93fb879..f807f321f 100644 --- a/core/log/file_console_logger.odin +++ b/core/log/file_console_logger.odin @@ -2,10 +2,12 @@ #+build !orca package log +import "base:runtime" import "core:encoding/ansi" import "core:fmt" import "core:strings" import "core:os" +import "core:terminal" import "core:time" Level_Headers := [?]string{ @@ -37,11 +39,36 @@ File_Console_Logger_Data :: struct { ident: string, } +@(private) global_subtract_stdout_options: Options +@(private) global_subtract_stderr_options: Options + +@(init, private) +init_standard_stream_status :: proc() { + // NOTE(Feoramund): While it is technically possible for these streams to + // be redirected during the runtime of the program, the cost of checking on + // every single log message is not worth it to support such an + // uncommonly-used feature. + if terminal.color_enabled { + // This is done this way because it's possible that only one of these + // streams could be redirected to a file. + if !terminal.is_terminal(os.stdout) { + global_subtract_stdout_options = {.Terminal_Color} + } + if !terminal.is_terminal(os.stderr) { + global_subtract_stderr_options = {.Terminal_Color} + } + } else { + // Override any terminal coloring. + global_subtract_stdout_options = {.Terminal_Color} + global_subtract_stderr_options = {.Terminal_Color} + } +} + create_file_logger :: proc(h: os.Handle, lowest := Level.Debug, opt := Default_File_Logger_Opts, ident := "", allocator := context.allocator) -> Logger { data := new(File_Console_Logger_Data, allocator) data.file_handle = h data.ident = ident - return Logger{file_console_logger_proc, data, lowest, opt} + return Logger{file_logger_proc, data, lowest, opt} } destroy_file_logger :: proc(log: Logger, allocator := context.allocator) { @@ -56,19 +83,15 @@ create_console_logger :: proc(lowest := Level.Debug, opt := Default_Console_Logg data := new(File_Console_Logger_Data, allocator) data.file_handle = os.INVALID_HANDLE data.ident = ident - return Logger{file_console_logger_proc, data, lowest, opt} + return Logger{console_logger_proc, data, lowest, opt} } destroy_console_logger :: proc(log: Logger, allocator := context.allocator) { free(log.data, allocator) } -file_console_logger_proc :: proc(logger_data: rawptr, level: Level, text: string, options: Options, location := #caller_location) { - data := cast(^File_Console_Logger_Data)logger_data - h: os.Handle = os.stdout if level <= Level.Error else os.stderr - if data.file_handle != os.INVALID_HANDLE { - h = data.file_handle - } +@(private) +_file_console_logger_proc :: proc(h: os.Handle, ident: string, level: Level, text: string, options: Options, location: runtime.Source_Code_Location) { backing: [1024]byte //NOTE(Hoej): 1024 might be too much for a header backing, unless somebody has really long paths. buf := strings.builder_from_bytes(backing[:]) @@ -86,13 +109,32 @@ file_console_logger_proc :: proc(logger_data: rawptr, level: Level, text: string fmt.sbprintf(&buf, "[{}] ", os.current_thread_id()) } - if data.ident != "" { - fmt.sbprintf(&buf, "[%s] ", data.ident) + if ident != "" { + fmt.sbprintf(&buf, "[%s] ", ident) } //TODO(Hoej): When we have better atomics and such, make this thread-safe fmt.fprintf(h, "%s%s\n", strings.to_string(buf), text) } +file_logger_proc :: proc(logger_data: rawptr, level: Level, text: string, options: Options, location := #caller_location) { + data := cast(^File_Console_Logger_Data)logger_data + _file_console_logger_proc(data.file_handle, data.ident, level, text, options, location) +} + +console_logger_proc :: proc(logger_data: rawptr, level: Level, text: string, options: Options, location := #caller_location) { + options := options + data := cast(^File_Console_Logger_Data)logger_data + h: os.Handle = --- + if level < Level.Error { + h = os.stdout + options -= global_subtract_stdout_options + } else { + h = os.stderr + options -= global_subtract_stderr_options + } + _file_console_logger_proc(h, data.ident, level, text, options, location) +} + do_level_header :: proc(opts: Options, str: ^strings.Builder, level: Level) { RESET :: ansi.CSI + ansi.RESET + ansi.SGR From a9df1b1cde1037d030f4e823ce576dfd9bcf9c97 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Tue, 20 May 2025 15:41:35 -0400 Subject: [PATCH 107/120] Rename `core:encoding/ansi` to `core:terminal/ansi` --- core/log/file_console_logger.odin | 2 +- core/{encoding => terminal}/ansi/ansi.odin | 0 core/{encoding => terminal}/ansi/doc.odin | 0 core/testing/reporting.odin | 2 +- core/testing/runner.odin | 2 +- core/testing/signal_handler_libc.odin | 4 ++-- examples/all/all_main.odin | 4 ++-- 7 files changed, 7 insertions(+), 7 deletions(-) rename core/{encoding => terminal}/ansi/ansi.odin (100%) rename core/{encoding => terminal}/ansi/doc.odin (100%) diff --git a/core/log/file_console_logger.odin b/core/log/file_console_logger.odin index f807f321f..0fe5c3477 100644 --- a/core/log/file_console_logger.odin +++ b/core/log/file_console_logger.odin @@ -3,11 +3,11 @@ package log import "base:runtime" -import "core:encoding/ansi" import "core:fmt" import "core:strings" import "core:os" import "core:terminal" +import "core:terminal/ansi" import "core:time" Level_Headers := [?]string{ diff --git a/core/encoding/ansi/ansi.odin b/core/terminal/ansi/ansi.odin similarity index 100% rename from core/encoding/ansi/ansi.odin rename to core/terminal/ansi/ansi.odin diff --git a/core/encoding/ansi/doc.odin b/core/terminal/ansi/doc.odin similarity index 100% rename from core/encoding/ansi/doc.odin rename to core/terminal/ansi/doc.odin diff --git a/core/testing/reporting.odin b/core/testing/reporting.odin index 6752cd79b..7c7eb7b2d 100644 --- a/core/testing/reporting.odin +++ b/core/testing/reporting.odin @@ -10,12 +10,12 @@ package testing */ import "base:runtime" -import "core:encoding/ansi" import "core:fmt" import "core:io" import "core:mem" import "core:path/filepath" import "core:strings" +import "core:terminal/ansi" // Definitions of colors for use in the test runner. SGR_RESET :: ansi.CSI + ansi.RESET + ansi.SGR diff --git a/core/testing/runner.odin b/core/testing/runner.odin index db0587370..c81d07109 100644 --- a/core/testing/runner.odin +++ b/core/testing/runner.odin @@ -13,7 +13,6 @@ package testing import "base:intrinsics" import "base:runtime" import "core:bytes" -import "core:encoding/ansi" @require import "core:encoding/base64" @require import "core:encoding/json" import "core:fmt" @@ -25,6 +24,7 @@ import "core:os" import "core:slice" @require import "core:strings" import "core:sync/chan" +import "core:terminal/ansi" import "core:thread" import "core:time" diff --git a/core/testing/signal_handler_libc.odin b/core/testing/signal_handler_libc.odin index 281fbde40..d17a6d6dc 100644 --- a/core/testing/signal_handler_libc.odin +++ b/core/testing/signal_handler_libc.odin @@ -12,9 +12,9 @@ package testing import "base:intrinsics" import "core:c/libc" -import "core:encoding/ansi" -import "core:sync" import "core:os" +import "core:sync" +import "core:terminal/ansi" @(private="file") stop_runner_flag: libc.sig_atomic_t diff --git a/examples/all/all_main.odin b/examples/all/all_main.odin index 97ecfee45..de037f6cd 100644 --- a/examples/all/all_main.odin +++ b/examples/all/all_main.odin @@ -58,7 +58,6 @@ import trace "core:debug/trace" import dynlib "core:dynlib" import net "core:net" -import ansi "core:encoding/ansi" import base32 "core:encoding/base32" import base64 "core:encoding/base64" import cbor "core:encoding/cbor" @@ -130,6 +129,7 @@ import sync "core:sync" import testing "core:testing" import terminal "core:terminal" +import ansi "core:terminal/ansi" import edit "core:text/edit" import i18n "core:text/i18n" @@ -203,7 +203,6 @@ _ :: pe _ :: trace _ :: dynlib _ :: net -_ :: ansi _ :: base32 _ :: base64 _ :: csv @@ -260,6 +259,7 @@ _ :: strings _ :: sync _ :: testing _ :: terminal +_ :: ansi _ :: scanner _ :: i18n _ :: match From 3c40a54dcd9ff8e1b608fac5c91ed0f1d0ed7d00 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Tue, 20 May 2025 15:43:47 -0400 Subject: [PATCH 108/120] Add terminal color detection to logging in `core:testing` --- core/testing/runner.odin | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/core/testing/runner.odin b/core/testing/runner.odin index c81d07109..ff8ca00b9 100644 --- a/core/testing/runner.odin +++ b/core/testing/runner.odin @@ -24,6 +24,7 @@ import "core:os" import "core:slice" @require import "core:strings" import "core:sync/chan" +import "core:terminal" import "core:terminal/ansi" import "core:thread" import "core:time" @@ -70,6 +71,8 @@ get_log_level :: #force_inline proc() -> runtime.Logger_Level { } } +@(private) global_log_colors_disabled: bool + JSON :: struct { total: int, success: int, @@ -129,11 +132,16 @@ run_test_task :: proc(task: thread.Task) { context.assertion_failure_proc = test_assertion_failure_proc + logger_options := Default_Test_Logger_Opts + if global_log_colors_disabled { + logger_options -= {.Terminal_Color} + } + context.logger = { procedure = test_logger_proc, data = &data.t, lowest_level = get_log_level(), - options = Default_Test_Logger_Opts, + options = logger_options, } random_generator_state: runtime.Default_Random_State @@ -211,6 +219,8 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { stdout := io.to_writer(os.stream_from_handle(os.stdout)) stderr := io.to_writer(os.stream_from_handle(os.stderr)) + global_log_colors_disabled = !terminal.color_enabled || !terminal.is_terminal(os.stderr) + // -- Prepare test data. alloc_error: mem.Allocator_Error @@ -442,11 +452,16 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { // digging through the source to divine everywhere it is used for that. shared_log_allocator := context.allocator + logger_options := Default_Test_Logger_Opts - {.Short_File_Path, .Line, .Procedure} + if global_log_colors_disabled { + logger_options -= {.Terminal_Color} + } + context.logger = { procedure = runner_logger_proc, data = &log_messages, lowest_level = get_log_level(), - options = Default_Test_Logger_Opts - {.Short_File_Path, .Line, .Procedure}, + options = logger_options, } run_index: int From 1b407ef20789b1d04d61b0a53ca8c98fe6621db2 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Tue, 20 May 2025 16:17:14 -0400 Subject: [PATCH 109/120] Add animation detection support to test runner --- core/testing/runner.odin | 133 +++++++++++++++----------- core/testing/signal_handler_libc.odin | 8 +- 2 files changed, 80 insertions(+), 61 deletions(-) diff --git a/core/testing/runner.odin b/core/testing/runner.odin index ff8ca00b9..a184eb28c 100644 --- a/core/testing/runner.odin +++ b/core/testing/runner.odin @@ -45,6 +45,7 @@ PER_THREAD_MEMORY : int : #config(ODIN_TEST_THREAD_MEMORY, mem.ROLLBACK_S // The format is: `package.test_name,test_name_only,...` TEST_NAMES : string : #config(ODIN_TEST_NAMES, "") // Show the fancy animated progress report. +// This requires terminal color support, as well as STDOUT to not be redirected to a file. FANCY_OUTPUT : bool : #config(ODIN_TEST_FANCY, true) // Copy failed tests to the clipboard when done. USE_CLIPBOARD : bool : #config(ODIN_TEST_CLIPBOARD, false) @@ -72,6 +73,7 @@ get_log_level :: #force_inline proc() -> runtime.Logger_Level { } @(private) global_log_colors_disabled: bool +@(private) global_ansi_disabled: bool JSON :: struct { total: int, @@ -219,7 +221,12 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { stdout := io.to_writer(os.stream_from_handle(os.stdout)) stderr := io.to_writer(os.stream_from_handle(os.stderr)) + // The animations are only ever shown through STDOUT; + // STDERR is used exclusively for logging regardless of error level. global_log_colors_disabled = !terminal.color_enabled || !terminal.is_terminal(os.stderr) + global_ansi_disabled = !terminal.is_terminal(os.stdout) + + should_show_animations := FANCY_OUTPUT && terminal.color_enabled && !global_ansi_disabled // -- Prepare test data. @@ -278,12 +285,12 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { total_done_count := 0 total_test_count := len(internal_tests) - when !FANCY_OUTPUT { - // This is strictly for updating the window title when the progress - // report is disabled. We're otherwise able to depend on the call to - // `needs_to_redraw`. - last_done_count := -1 - } + + // This is strictly for updating the window title when the progress + // report is disabled. We're otherwise able to depend on the call to + // `needs_to_redraw`. + last_done_count := -1 + if total_test_count == 0 { // Exit early. @@ -352,31 +359,31 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { fmt.assertf(alloc_error == nil, "Error allocating memory for test report: %v", alloc_error) defer destroy_report(&report) - when FANCY_OUTPUT { - // We cannot make use of the ANSI save/restore cursor codes, because they - // work by absolute screen coordinates. This will cause unnecessary - // scrollback if we print at the bottom of someone's terminal. - ansi_redraw_string := fmt.aprintf( - // ANSI for "go up N lines then erase the screen from the cursor forward." - ansi.CSI + "%i" + ansi.CPL + ansi.CSI + ansi.ED + - // We'll combine this with the window title format string, since it - // can be printed at the same time. - "%s", - // 1 extra line for the status bar. - 1 + len(report.packages), OSC_WINDOW_TITLE) - assert(len(ansi_redraw_string) > 0, "Error allocating ANSI redraw string.") - defer delete(ansi_redraw_string) - thread_count_status_string: string = --- - { - PADDING :: PROGRESS_COLUMN_SPACING + PROGRESS_WIDTH + // We cannot make use of the ANSI save/restore cursor codes, because they + // work by absolute screen coordinates. This will cause unnecessary + // scrollback if we print at the bottom of someone's terminal. + ansi_redraw_string := fmt.aprintf( + // ANSI for "go up N lines then erase the screen from the cursor forward." + ansi.CSI + "%i" + ansi.CPL + ansi.CSI + ansi.ED + + // We'll combine this with the window title format string, since it + // can be printed at the same time. + "%s", + // 1 extra line for the status bar. + 1 + len(report.packages), OSC_WINDOW_TITLE) + assert(len(ansi_redraw_string) > 0, "Error allocating ANSI redraw string.") + defer delete(ansi_redraw_string) - unpadded := fmt.tprintf("%i thread%s", thread_count, "" if thread_count == 1 else "s") - thread_count_status_string = fmt.aprintf("%- *[1]s", unpadded, report.pkg_column_len + PADDING) - assert(len(thread_count_status_string) > 0, "Error allocating thread count status string.") - } - defer delete(thread_count_status_string) + thread_count_status_string: string = --- + { + PADDING :: PROGRESS_COLUMN_SPACING + PROGRESS_WIDTH + + unpadded := fmt.tprintf("%i thread%s", thread_count, "" if thread_count == 1 else "s") + thread_count_status_string = fmt.aprintf("%- *[1]s", unpadded, report.pkg_column_len + PADDING) + assert(len(thread_count_status_string) > 0, "Error allocating thread count status string.") } + defer delete(thread_count_status_string) + task_data_slots: []Task_Data = --- task_data_slots, alloc_error = make([]Task_Data, thread_count) @@ -496,11 +503,13 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { setup_signal_handler() - fmt.wprint(stdout, ansi.CSI + ansi.DECTCEM_HIDE) + if !global_ansi_disabled { + fmt.wprint(stdout, ansi.CSI + ansi.DECTCEM_HIDE) + } - when FANCY_OUTPUT { - signals_were_raised := false + signals_were_raised := false + if should_show_animations { redraw_report(stdout, report) draw_status_bar(stdout, thread_count_status_string, total_done_count, total_test_count) } @@ -718,22 +727,22 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { break main_loop } - when FANCY_OUTPUT { - // Because the bounds checking procs send directly to STDERR with - // no way to redirect or handle them, we need to at least try to - // let the user see those messages when using the animated progress - // report. This flag may be set by the block of code below if a - // signal is raised. - // - // It'll be purely by luck if the output is interleaved properly, - // given the nature of non-thread-safe printing. - // - // At worst, if Odin did not print any error for this signal, we'll - // just re-display the progress report. The fatal log error message - // should be enough to clue the user in that something dire has - // occurred. - bypass_progress_overwrite := false - } + + // Because the bounds checking procs send directly to STDERR with + // no way to redirect or handle them, we need to at least try to + // let the user see those messages when using the animated progress + // report. This flag may be set by the block of code below if a + // signal is raised. + // + // It'll be purely by luck if the output is interleaved properly, + // given the nature of non-thread-safe printing. + // + // At worst, if Odin did not print any error for this signal, we'll + // just re-display the progress report. The fatal log error message + // should be enough to clue the user in that something dire has + // occurred. + bypass_progress_overwrite := false + if test_index, reason, ok := should_stop_test(); ok { #no_bounds_check report.all_test_states[test_index] = .Failed @@ -767,7 +776,7 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { log.fatalf("Caught signal to stop test #%i %s.%s for: %v.", test_index, it.pkg, it.name, reason) } - when FANCY_OUTPUT { + if should_show_animations { bypass_progress_overwrite = true signals_were_raised = true } @@ -781,7 +790,7 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { // -- Redraw. - when FANCY_OUTPUT { + if should_show_animations { if len(log_messages) == 0 && !needs_to_redraw(report) { continue main_loop } @@ -791,7 +800,9 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { } } else { if total_done_count != last_done_count { - fmt.wprintf(stdout, OSC_WINDOW_TITLE, total_done_count, total_test_count) + if !global_ansi_disabled { + fmt.wprintf(stdout, OSC_WINDOW_TITLE, total_done_count, total_test_count) + } last_done_count = total_done_count } @@ -816,7 +827,7 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { clear(&log_messages) bytes.buffer_reset(&batch_buffer) - when FANCY_OUTPUT { + if should_show_animations { redraw_report(batch_writer, report) draw_status_bar(batch_writer, thread_count_status_string, total_done_count, total_test_count) fmt.wprint(stdout, bytes.buffer_to_string(&batch_buffer)) @@ -837,7 +848,7 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { finished_in := time.since(start_time) - when !FANCY_OUTPUT { + if !should_show_animations || !terminal.is_terminal(os.stderr) { // One line to space out the results, since we don't have the status // bar in plain mode. fmt.wprintln(batch_writer) @@ -851,24 +862,28 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { if total_done_count != total_test_count { not_run_count := total_test_count - total_done_count + message := " %i %s left undone." if global_log_colors_disabled else " " + SGR_READY + "%i" + SGR_RESET + " %s left undone." fmt.wprintf(batch_writer, - " " + SGR_READY + "%i" + SGR_RESET + " %s left undone.", + message, not_run_count, "test was" if not_run_count == 1 else "tests were") } if total_success_count == total_test_count { + message := " %s successful." if global_log_colors_disabled else " %s " + SGR_SUCCESS + "successful." + SGR_RESET fmt.wprintfln(batch_writer, - " %s " + SGR_SUCCESS + "successful." + SGR_RESET, + message, "The test was" if total_test_count == 1 else "All tests were") } else if total_failure_count > 0 { if total_failure_count == total_test_count { + message := " %s failed." if global_log_colors_disabled else " %s " + SGR_FAILED + "failed." + SGR_RESET fmt.wprintfln(batch_writer, - " %s " + SGR_FAILED + "failed." + SGR_RESET, + message, "The test" if total_test_count == 1 else "All tests") } else { + message := " %i test%s failed." if global_log_colors_disabled else " " + SGR_FAILED + "%i" + SGR_RESET + " test%s failed." fmt.wprintfln(batch_writer, - " " + SGR_FAILED + "%i" + SGR_RESET + " test%s failed.", + message, total_failure_count, "" if total_failure_count == 1 else "s") } @@ -922,9 +937,11 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { } } - fmt.wprint(stdout, ansi.CSI + ansi.DECTCEM_SHOW) + if !global_ansi_disabled { + fmt.wprint(stdout, ansi.CSI + ansi.DECTCEM_SHOW) + } - when FANCY_OUTPUT { + if should_show_animations { if signals_were_raised { fmt.wprintln(batch_writer, ` Signals were raised during this test run. Log messages are likely to have collided with each other. diff --git a/core/testing/signal_handler_libc.odin b/core/testing/signal_handler_libc.odin index d17a6d6dc..f9527e22f 100644 --- a/core/testing/signal_handler_libc.odin +++ b/core/testing/signal_handler_libc.odin @@ -63,9 +63,11 @@ stop_test_callback :: proc "c" (sig: libc.int) { // NOTE(Feoramund): Using these write calls in a signal handler is // undefined behavior in C99 but possibly tolerated in POSIX 2008. // Either way, we may as well try to salvage what we can. - show_cursor := ansi.CSI + ansi.DECTCEM_SHOW - libc.fwrite(raw_data(show_cursor), size_of(byte), len(show_cursor), libc.stdout) - libc.fflush(libc.stdout) + if !global_ansi_disabled { + show_cursor := ansi.CSI + ansi.DECTCEM_SHOW + libc.fwrite(raw_data(show_cursor), size_of(byte), len(show_cursor), libc.stdout) + libc.fflush(libc.stdout) + } // This is an attempt at being compliant by avoiding printf. sigbuf: [8]byte From b6f1821bbabbb711724d309e4c62d4c866d44c67 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Wed, 21 May 2025 05:20:58 -0400 Subject: [PATCH 110/120] Fix terminal detection on Windows --- core/terminal/terminal_windows.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/terminal/terminal_windows.odin b/core/terminal/terminal_windows.odin index caab87cc7..55a3903fe 100644 --- a/core/terminal/terminal_windows.odin +++ b/core/terminal/terminal_windows.odin @@ -4,6 +4,6 @@ import "core:os" import "core:sys/windows" _is_terminal :: proc(handle: os.Handle) -> bool { - mode: windows.DWORD - return bool(windows.GetConsoleMode(windows.HANDLE(handle), &mode)) + is_tty := windows.GetFileType(windows.HANDLE(handle)) == windows.FILE_TYPE_CHAR + return is_tty } From e659df1a3f1b57ee67600cdacf75e672d8cd3d9b Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Wed, 21 May 2025 07:49:08 -0400 Subject: [PATCH 111/120] Restructure `core:terminal` for better Windows support --- core/terminal/internal.odin | 87 +++++++++++++++++++++++++++++ core/terminal/terminal.odin | 78 ++------------------------ core/terminal/terminal_posix.odin | 7 +++ core/terminal/terminal_windows.odin | 51 +++++++++++++++++ core/testing/runner.odin | 8 --- core/testing/runner_windows.odin | 36 ------------ 6 files changed, 150 insertions(+), 117 deletions(-) create mode 100644 core/terminal/internal.odin delete mode 100644 core/testing/runner_windows.odin diff --git a/core/terminal/internal.odin b/core/terminal/internal.odin new file mode 100644 index 000000000..485f6868d --- /dev/null +++ b/core/terminal/internal.odin @@ -0,0 +1,87 @@ +#+private +package terminal + +import "core:os" +import "core:strings" + +// Reference documentation: +// +// - [[ https://no-color.org/ ]] +// - [[ https://github.com/termstandard/colors ]] +// - [[ https://invisible-island.net/ncurses/terminfo.src.html ]] + +get_no_color :: proc() -> bool { + if no_color, ok := os.lookup_env("NO_COLOR"); ok { + defer delete(no_color) + return no_color != "" + } + return false +} + +get_environment_color :: proc() -> Color_Depth { + // `COLORTERM` is non-standard but widespread and unambiguous. + if colorterm, ok := os.lookup_env("COLORTERM"); ok { + defer delete(colorterm) + // These are the only values that are typically advertised that have + // anything to do with color depth. + if colorterm == "truecolor" || colorterm == "24bit" { + return .True_Color + } + } + + if term, ok := os.lookup_env("TERM"); ok { + defer delete(term) + if strings.contains(term, "-truecolor") { + return .True_Color + } + if strings.contains(term, "-256color") { + return .Eight_Bit + } + if strings.contains(term, "-16color") { + return .Four_Bit + } + + // The `terminfo` database, which is stored in binary on *nix + // platforms, has an undocumented format that is not guaranteed to be + // portable, so beyond this point, we can only make safe assumptions. + // + // This section should only be necessary for terminals that do not + // define any of the previous environment values. + // + // Only a small sampling of some common values are checked here. + switch term { + case "ansi": fallthrough + case "konsole": fallthrough + case "putty": fallthrough + case "rxvt": fallthrough + case "rxvt-color": fallthrough + case "screen": fallthrough + case "st": fallthrough + case "tmux": fallthrough + case "vte": fallthrough + case "xterm": fallthrough + case "xterm-color": + return .Three_Bit + } + } + + return .None +} + +@(init) +init_terminal :: proc() { + _init_terminal() + + // We respect `NO_COLOR` specifically as a color-disabler but not as a + // blanket ban on any terminal manipulation codes, hence why this comes + // after `_init_terminal` which will allow Windows to enable Virtual + // Terminal Processing for non-color control sequences. + if !get_no_color() { + color_enabled = color_depth > .None + } +} + +@(fini) +fini_terminal :: proc() { + _fini_terminal() +} diff --git a/core/terminal/terminal.odin b/core/terminal/terminal.odin index fae6f880a..1e5566295 100644 --- a/core/terminal/terminal.odin +++ b/core/terminal/terminal.odin @@ -1,7 +1,6 @@ package terminal import "core:os" -import "core:strings" /* This describes the range of colors that a terminal is capable of supporting. @@ -25,80 +24,13 @@ is_terminal :: proc(handle: os.Handle) -> bool { return _is_terminal(handle) } -/* -Get the color depth support for the terminal. -*/ -@(require_results) -get_color_depth :: proc() -> Color_Depth { - // Reference documentation: - // - // - [[ https://no-color.org/ ]] - // - [[ https://github.com/termstandard/colors ]] - // - [[ https://invisible-island.net/ncurses/terminfo.src.html ]] - - // Respect `NO_COLOR` above all. - if no_color, ok := os.lookup_env("NO_COLOR"); ok { - defer delete(no_color) - if no_color != "" { - return .None - } - } - - // `COLORTERM` is non-standard but widespread and unambiguous. - if colorterm, ok := os.lookup_env("COLORTERM"); ok { - defer delete(colorterm) - // These are the only values that are typically advertised that have - // anything to do with color depth. - if colorterm == "truecolor" || colorterm == "24bit" { - return .True_Color - } - } - - if term, ok := os.lookup_env("TERM"); ok { - defer delete(term) - if strings.contains(term, "-truecolor") { - return .True_Color - } - if strings.contains(term, "-256color") { - return .Eight_Bit - } - if strings.contains(term, "-16color") { - return .Four_Bit - } - - // The `terminfo` database, which is stored in binary on *nix - // platforms, has an undocumented format that is not guaranteed to be - // portable, so beyond this point, we can only make safe assumptions. - // - // This section should only be necessary for terminals that do not - // define any of the previous environment values. - // - // Only a small sampling of some common values are checked here. - switch term { - case "ansi": fallthrough - case "konsole": fallthrough - case "putty": fallthrough - case "rxvt": fallthrough - case "rxvt-color": fallthrough - case "screen": fallthrough - case "st": fallthrough - case "tmux": fallthrough - case "vte": fallthrough - case "xterm": fallthrough - case "xterm-color": - return .Three_Bit - } - } - - return .None -} - /* This is true if the terminal is accepting any form of colored text output. */ color_enabled: bool -@(init, private) -init_terminal_status :: proc() { - color_enabled = get_color_depth() > .None -} +/* +This value reports the color depth support as reported by the terminal at the +start of the program. +*/ +color_depth: Color_Depth diff --git a/core/terminal/terminal_posix.odin b/core/terminal/terminal_posix.odin index adfb6a0da..f578e12c6 100644 --- a/core/terminal/terminal_posix.odin +++ b/core/terminal/terminal_posix.odin @@ -1,3 +1,4 @@ +#+private #+build linux, darwin, netbsd, openbsd, freebsd, haiku package terminal @@ -7,3 +8,9 @@ import "core:sys/posix" _is_terminal :: proc(handle: os.Handle) -> bool { return bool(posix.isatty(posix.FD(handle))) } + +_init_terminal :: proc() { + color_depth = get_environment_color() +} + +_fini_terminal :: proc() { } diff --git a/core/terminal/terminal_windows.odin b/core/terminal/terminal_windows.odin index 55a3903fe..cc28add98 100644 --- a/core/terminal/terminal_windows.odin +++ b/core/terminal/terminal_windows.odin @@ -1,3 +1,4 @@ +#+private package terminal import "core:os" @@ -7,3 +8,53 @@ _is_terminal :: proc(handle: os.Handle) -> bool { is_tty := windows.GetFileType(windows.HANDLE(handle)) == windows.FILE_TYPE_CHAR return is_tty } + +old_modes: [2]struct{ + handle: windows.DWORD, + mode: windows.DWORD, +} = { + {windows.STD_OUTPUT_HANDLE, 0}, + {windows.STD_ERROR_HANDLE, 0}, +} + +@(init) +_init_terminal :: proc() { + vtp_enabled: bool + + for &v in old_modes { + handle := windows.GetStdHandle(v.handle) + if handle == windows.INVALID_HANDLE || handle == nil { + return + } + if windows.GetConsoleMode(handle, &v.mode) { + windows.SetConsoleMode(handle, v.mode | windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING) + + new_mode: windows.DWORD + windows.GetConsoleMode(handle, &new_mode) + + if new_mode & windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING != 0 { + vtp_enabled = true + } + } + } + + if vtp_enabled { + // This color depth is available on Windows 10 since build 10586. + color_depth = .Four_Bit + } else { + // The user may be on a non-default terminal emulator. + color_depth = get_environment_color() + } +} + +@(fini) +_fini_terminal :: proc() { + for v in old_modes { + handle := windows.GetStdHandle(v.handle) + if handle == windows.INVALID_HANDLE || handle == nil { + return + } + + windows.SetConsoleMode(handle, v.mode) + } +} diff --git a/core/testing/runner.odin b/core/testing/runner.odin index a184eb28c..56d561d3d 100644 --- a/core/testing/runner.odin +++ b/core/testing/runner.odin @@ -214,10 +214,6 @@ runner :: proc(internal_tests: []Internal_Test) -> bool { } } - when ODIN_OS == .Windows { - console_ansi_init() - } - stdout := io.to_writer(os.stream_from_handle(os.stdout)) stderr := io.to_writer(os.stream_from_handle(os.stderr)) @@ -981,9 +977,5 @@ To partly mitigate this, redirect STDERR to a file or use the -define:ODIN_TEST_ fmt.assertf(err == nil, "Error writing JSON report: %v", err) } - when ODIN_OS == .Windows { - console_ansi_fini() - } - return total_success_count == total_test_count } diff --git a/core/testing/runner_windows.odin b/core/testing/runner_windows.odin deleted file mode 100644 index b35914c72..000000000 --- a/core/testing/runner_windows.odin +++ /dev/null @@ -1,36 +0,0 @@ -#+private -package testing - -import win32 "core:sys/windows" - -old_stdout_mode: u32 -old_stderr_mode: u32 - -console_ansi_init :: proc() { - stdout := win32.GetStdHandle(win32.STD_OUTPUT_HANDLE) - if stdout != win32.INVALID_HANDLE && stdout != nil { - if win32.GetConsoleMode(stdout, &old_stdout_mode) { - win32.SetConsoleMode(stdout, old_stdout_mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING) - } - } - - stderr := win32.GetStdHandle(win32.STD_ERROR_HANDLE) - if stderr != win32.INVALID_HANDLE && stderr != nil { - if win32.GetConsoleMode(stderr, &old_stderr_mode) { - win32.SetConsoleMode(stderr, old_stderr_mode | win32.ENABLE_VIRTUAL_TERMINAL_PROCESSING) - } - } -} - -// Restore the cursor on exit -console_ansi_fini :: proc() { - stdout := win32.GetStdHandle(win32.STD_OUTPUT_HANDLE) - if stdout != win32.INVALID_HANDLE && stdout != nil { - win32.SetConsoleMode(stdout, old_stdout_mode) - } - - stderr := win32.GetStdHandle(win32.STD_ERROR_HANDLE) - if stderr != win32.INVALID_HANDLE && stderr != nil { - win32.SetConsoleMode(stderr, old_stderr_mode) - } -} \ No newline at end of file From 899cfe9c3786f8b4807a415d0d13abe9e5e6ad96 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Wed, 21 May 2025 08:40:19 -0400 Subject: [PATCH 112/120] Also use `ENABLE_PROCESSED_OUTPUT` on Windows terminals This is specified to be necessary when using `ENABLE_VIRTUAL_TERMINAL_PROCESSING`. --- core/terminal/terminal_windows.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/terminal/terminal_windows.odin b/core/terminal/terminal_windows.odin index cc28add98..18ec98332 100644 --- a/core/terminal/terminal_windows.odin +++ b/core/terminal/terminal_windows.odin @@ -27,12 +27,12 @@ _init_terminal :: proc() { return } if windows.GetConsoleMode(handle, &v.mode) { - windows.SetConsoleMode(handle, v.mode | windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING) + windows.SetConsoleMode(handle, v.mode | windows.ENABLE_PROCESSED_OUTPUT | windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING) new_mode: windows.DWORD windows.GetConsoleMode(handle, &new_mode) - if new_mode & windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING != 0 { + if new_mode & (windows.ENABLE_PROCESSED_OUTPUT | windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING) != 0 { vtp_enabled = true } } From 1662ab10af9187a91a8b26867074a797237aa28a Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Wed, 21 May 2025 09:26:24 -0400 Subject: [PATCH 113/120] Fix off-by-one error in `priority_queue.remove` --- core/container/priority_queue/priority_queue.odin | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/core/container/priority_queue/priority_queue.odin b/core/container/priority_queue/priority_queue.odin index 7387a8d09..c62a821f4 100644 --- a/core/container/priority_queue/priority_queue.odin +++ b/core/container/priority_queue/priority_queue.odin @@ -133,12 +133,10 @@ pop_safe :: proc(pq: ^$Q/Priority_Queue($T), loc := #caller_location) -> (value: remove :: proc(pq: ^$Q/Priority_Queue($T), i: int) -> (value: T, ok: bool) { n := builtin.len(pq.queue) if 0 <= i && i < n { - if n != i { - pq.swap(pq.queue[:], i, n) - _shift_down(pq, i, n) - _shift_up(pq, i) - } - value, ok = builtin.pop_safe(&pq.queue) + pq.swap(pq.queue[:], i, n-1) + _shift_down(pq, i, n-1) + _shift_up(pq, i) + value, ok = builtin.pop(&pq.queue), true } return } From 96fd07e0eec5e75ab746efc9b0fe2d46caa52950 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Wed, 21 May 2025 19:20:58 +0200 Subject: [PATCH 114/120] Fix #5177 - Tweak error messages. --- src/check_expr.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 167052772..8721aab5d 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -5461,6 +5461,16 @@ gb_internal Entity *check_selector(CheckerContext *c, Operand *operand, Ast *nod } } + if (operand->type && is_type_simd_vector(type_deref(operand->type))) { + String field_name = selector->Ident.token.string; + if (field_name.len == 1) { + error(op_expr, "Extracting an element from a #simd array using .%.*s syntax is disallowed, prefer `simd.extract`", LIT(field_name)); + } else { + error(op_expr, "Extracting elements from a #simd array using .%.*s syntax is disallowed, prefer `swizzle`", LIT(field_name)); + } + return nullptr; + } + if (entity == nullptr && selector->kind == Ast_Ident && operand->type != nullptr && (is_type_array(type_deref(operand->type)) || is_type_simd_vector(type_deref(operand->type)))) { String field_name = selector->Ident.token.string; From 95183e4b9ce7f5cecf652e129ace6b7b15362167 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Wed, 21 May 2025 19:37:09 +0200 Subject: [PATCH 115/120] Remove now unnecessary checks. --- src/check_expr.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 8721aab5d..95c898adf 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -5472,7 +5472,7 @@ gb_internal Entity *check_selector(CheckerContext *c, Operand *operand, Ast *nod } if (entity == nullptr && selector->kind == Ast_Ident && operand->type != nullptr && - (is_type_array(type_deref(operand->type)) || is_type_simd_vector(type_deref(operand->type)))) { + (is_type_array(type_deref(operand->type)))) { String field_name = selector->Ident.token.string; if (1 < field_name.len && field_name.len <= 4) { u8 swizzles_xyzw[4] = {'x', 'y', 'z', 'w'}; @@ -5527,7 +5527,7 @@ gb_internal Entity *check_selector(CheckerContext *c, Operand *operand, Ast *nod Type *original_type = operand->type; Type *array_type = base_type(type_deref(original_type)); - GB_ASSERT(array_type->kind == Type_Array || array_type->kind == Type_SimdVector); + GB_ASSERT(array_type->kind == Type_Array); i64 array_count = get_array_type_count(array_type); @@ -5568,10 +5568,6 @@ gb_internal Entity *check_selector(CheckerContext *c, Operand *operand, Ast *nod break; } - if (array_type->kind == Type_SimdVector) { - operand->mode = Addressing_Value; - } - Entity *swizzle_entity = alloc_entity_variable(nullptr, make_token_ident(field_name), operand->type, EntityState_Resolved); add_type_and_value(c, operand->expr, operand->mode, operand->type, operand->value); return swizzle_entity; From c32b7ba593f78469d12a3ffdf333e7fb54116316 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Wed, 21 May 2025 20:24:27 +0200 Subject: [PATCH 116/120] List -subtarget in `odin help build` --- src/main.cpp | 115 +++++++++++++++++++++++++++++---------------------- 1 file changed, 65 insertions(+), 50 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 3692e4f06..bc57c677e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2364,20 +2364,20 @@ gb_internal int print_show_help(String const arg0, String command, String option if (print_flag("-build-mode:")) { print_usage_line(2, "Sets the build mode."); print_usage_line(2, "Available options:"); - print_usage_line(3, "-build-mode:exe Builds as an executable."); - print_usage_line(3, "-build-mode:test Builds as an executable that executes tests."); - print_usage_line(3, "-build-mode:dll Builds as a dynamically linked library."); - print_usage_line(3, "-build-mode:shared Builds as a dynamically linked library."); - print_usage_line(3, "-build-mode:dynamic Builds as a dynamically linked library."); - print_usage_line(3, "-build-mode:lib Builds as a statically linked library."); - print_usage_line(3, "-build-mode:static Builds as a statically linked library."); - print_usage_line(3, "-build-mode:obj Builds as an object file."); - print_usage_line(3, "-build-mode:object Builds as an object file."); - print_usage_line(3, "-build-mode:assembly Builds as an assembly file."); - print_usage_line(3, "-build-mode:assembler Builds as an assembly file."); - print_usage_line(3, "-build-mode:asm Builds as an assembly file."); - print_usage_line(3, "-build-mode:llvm-ir Builds as an LLVM IR file."); - print_usage_line(3, "-build-mode:llvm Builds as an LLVM IR file."); + print_usage_line(3, "-build-mode:exe Builds as an executable."); + print_usage_line(3, "-build-mode:test Builds as an executable that executes tests."); + print_usage_line(3, "-build-mode:dll Builds as a dynamically linked library."); + print_usage_line(3, "-build-mode:shared Builds as a dynamically linked library."); + print_usage_line(3, "-build-mode:dynamic Builds as a dynamically linked library."); + print_usage_line(3, "-build-mode:lib Builds as a statically linked library."); + print_usage_line(3, "-build-mode:static Builds as a statically linked library."); + print_usage_line(3, "-build-mode:obj Builds as an object file."); + print_usage_line(3, "-build-mode:object Builds as an object file."); + print_usage_line(3, "-build-mode:assembly Builds as an assembly file."); + print_usage_line(3, "-build-mode:assembler Builds as an assembly file."); + print_usage_line(3, "-build-mode:asm Builds as an assembly file."); + print_usage_line(3, "-build-mode:llvm-ir Builds as an LLVM IR file."); + print_usage_line(3, "-build-mode:llvm Builds as an LLVM IR file."); } } @@ -2386,16 +2386,16 @@ gb_internal int print_show_help(String const arg0, String command, String option print_usage_line(2, "Defines a library collection used for imports."); print_usage_line(2, "Example: -collection:shared=dir/to/shared"); print_usage_line(2, "Usage in Code:"); - print_usage_line(3, "import \"shared:foo\""); + print_usage_line(3, "import \"shared:foo\""); } if (print_flag("-custom-attribute:")) { print_usage_line(2, "Add a custom attribute which will be ignored if it is unknown."); print_usage_line(2, "This can be used with metaprogramming tools."); print_usage_line(2, "Examples:"); - print_usage_line(3, "-custom-attribute:my_tag"); - print_usage_line(3, "-custom-attribute:my_tag,the_other_thing"); - print_usage_line(3, "-custom-attribute:my_tag -custom-attribute:the_other_thing"); + print_usage_line(3, "-custom-attribute:my_tag"); + print_usage_line(3, "-custom-attribute:my_tag,the_other_thing"); + print_usage_line(3, "-custom-attribute:my_tag -custom-attribute:the_other_thing"); } } @@ -2418,7 +2418,7 @@ gb_internal int print_show_help(String const arg0, String command, String option print_usage_line(2, "Defines a scalar boolean, integer or string as global constant."); print_usage_line(2, "Example: -define:SPAM=123"); print_usage_line(2, "Usage in code:"); - print_usage_line(3, "#config(SPAM, default_value)"); + print_usage_line(3, "#config(SPAM, default_value)"); } } @@ -2453,9 +2453,9 @@ gb_internal int print_show_help(String const arg0, String command, String option if (check) { if (print_flag("-error-pos-style:")) { print_usage_line(2, "Available options:"); - print_usage_line(3, "-error-pos-style:unix file/path:45:3:"); - print_usage_line(3, "-error-pos-style:odin file/path(45:3)"); - print_usage_line(3, "-error-pos-style:default (Defaults to 'odin'.)"); + print_usage_line(3, "-error-pos-style:unix file/path:45:3:"); + print_usage_line(3, "-error-pos-style:odin file/path(45:3)"); + print_usage_line(3, "-error-pos-style:default (Defaults to 'odin'.)"); } if (print_flag("-export-defineables:")) { @@ -2466,8 +2466,8 @@ gb_internal int print_show_help(String const arg0, String command, String option if (print_flag("-export-dependencies:")) { print_usage_line(2, "Exports dependencies to one of a few formats. Requires `-export-dependencies-file`."); print_usage_line(2, "Available options:"); - print_usage_line(3, "-export-dependencies:make Exports in Makefile format"); - print_usage_line(3, "-export-dependencies:json Exports in JSON format"); + print_usage_line(3, "-export-dependencies:make Exports in Makefile format"); + print_usage_line(3, "-export-dependencies:json Exports in JSON format"); } if (print_flag("-export-dependencies-file:")) { @@ -2478,8 +2478,8 @@ gb_internal int print_show_help(String const arg0, String command, String option if (print_flag("-export-timings:")) { print_usage_line(2, "Exports timings to one of a few formats. Requires `-show-timings` or `-show-more-timings`."); print_usage_line(2, "Available options:"); - print_usage_line(3, "-export-timings:json Exports compile time stats to JSON."); - print_usage_line(3, "-export-timings:csv Exports compile time stats to CSV."); + print_usage_line(3, "-export-timings:json Exports compile time stats to JSON."); + print_usage_line(3, "-export-timings:csv Exports compile time stats to CSV."); } if (print_flag("-export-timings-file:")) { @@ -2569,9 +2569,9 @@ gb_internal int print_show_help(String const arg0, String command, String option if (print_flag("-microarch:")) { print_usage_line(2, "Specifies the specific micro-architecture for the build in a string."); print_usage_line(2, "Examples:"); - print_usage_line(3, "-microarch:sandybridge"); - print_usage_line(3, "-microarch:native"); - print_usage_line(3, "-microarch:\"?\" for a list"); + print_usage_line(3, "-microarch:sandybridge"); + print_usage_line(3, "-microarch:native"); + print_usage_line(3, "-microarch:\"?\" for a list"); } } @@ -2628,10 +2628,10 @@ gb_internal int print_show_help(String const arg0, String command, String option if (print_flag("-o:")) { print_usage_line(2, "Sets the optimization mode for compilation."); print_usage_line(2, "Available options:"); - print_usage_line(3, "-o:none"); - print_usage_line(3, "-o:minimal"); - print_usage_line(3, "-o:size"); - print_usage_line(3, "-o:speed"); + print_usage_line(3, "-o:none"); + print_usage_line(3, "-o:minimal"); + print_usage_line(3, "-o:size"); + print_usage_line(3, "-o:speed"); if (LB_USE_NEW_PASS_SYSTEM) { print_usage_line(3, "-o:aggressive (use this with caution)"); } @@ -2682,10 +2682,10 @@ gb_internal int print_show_help(String const arg0, String command, String option if (print_flag("-reloc-mode:")) { print_usage_line(2, "Specifies the reloc mode."); print_usage_line(2, "Available options:"); - print_usage_line(3, "-reloc-mode:default"); - print_usage_line(3, "-reloc-mode:static"); - print_usage_line(3, "-reloc-mode:pic"); - print_usage_line(3, "-reloc-mode:dynamic-no-pic"); + print_usage_line(3, "-reloc-mode:default"); + print_usage_line(3, "-reloc-mode:static"); + print_usage_line(3, "-reloc-mode:pic"); + print_usage_line(3, "-reloc-mode:dynamic-no-pic"); } #if defined(GB_SYSTEM_WINDOWS) @@ -2700,9 +2700,9 @@ gb_internal int print_show_help(String const arg0, String command, String option if (print_flag("-sanitize:")) { print_usage_line(2, "Enables sanitization analysis."); print_usage_line(2, "Available options:"); - print_usage_line(3, "-sanitize:address"); - print_usage_line(3, "-sanitize:memory"); - print_usage_line(3, "-sanitize:thread"); + print_usage_line(3, "-sanitize:address"); + print_usage_line(3, "-sanitize:memory"); + print_usage_line(3, "-sanitize:thread"); print_usage_line(2, "NOTE: This flag can be used multiple times."); } } @@ -2763,17 +2763,32 @@ gb_internal int print_show_help(String const arg0, String command, String option print_usage_line(2, "[Windows only]"); print_usage_line(2, "Defines the subsystem for the application."); print_usage_line(2, "Available options:"); - print_usage_line(3, "-subsystem:console"); - print_usage_line(3, "-subsystem:windows"); + print_usage_line(3, "-subsystem:console"); + print_usage_line(3, "-subsystem:windows"); } #endif + } + if (build) { + if (print_flag("-subtarget")) { + print_usage_line(2, "[Darwin and Linux only]"); + print_usage_line(2, "Available subtargets:"); + String prefix = str_lit("-subtarget:"); + for (u32 i = 1; i < Subtarget_COUNT; i++) { + String name = subtarget_strings[i]; + String help_string = concatenate_strings(temporary_allocator(), prefix, name); + print_usage_line(3, (const char *)help_string.text); + } + } + } + + if (run_or_build) { if (print_flag("-target-features:")) { print_usage_line(2, "Specifies CPU features to enable on top of the enabled features implied by -microarch."); print_usage_line(2, "Examples:"); - print_usage_line(3, "-target-features:atomics"); - print_usage_line(3, "-target-features:\"sse2,aes\""); - print_usage_line(3, "-target-features:\"?\" for a list"); + print_usage_line(3, "-target-features:atomics"); + print_usage_line(3, "-target-features:\"sse2,aes\""); + print_usage_line(3, "-target-features:\"?\" for a list"); } } @@ -2810,11 +2825,11 @@ gb_internal int print_show_help(String const arg0, String command, String option if (print_flag("-vet")) { print_usage_line(2, "Does extra checks on the code."); print_usage_line(2, "Extra checks include:"); - print_usage_line(3, "-vet-unused"); - print_usage_line(3, "-vet-unused-variables"); - print_usage_line(3, "-vet-unused-imports"); - print_usage_line(3, "-vet-shadowing"); - print_usage_line(3, "-vet-using-stmt"); + print_usage_line(3, "-vet-unused"); + print_usage_line(3, "-vet-unused-variables"); + print_usage_line(3, "-vet-unused-imports"); + print_usage_line(3, "-vet-shadowing"); + print_usage_line(3, "-vet-using-stmt"); } if (print_flag("-vet-cast")) { From f8bbeb54d4a6ce1e2c17cec68bd6fbeb5e628121 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Wed, 21 May 2025 20:28:21 +0200 Subject: [PATCH 117/120] Slight tweak. --- src/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main.cpp b/src/main.cpp index bc57c677e..90f2aad7a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2770,7 +2770,7 @@ gb_internal int print_show_help(String const arg0, String command, String option } if (build) { - if (print_flag("-subtarget")) { + if (print_flag("-subtarget:")) { print_usage_line(2, "[Darwin and Linux only]"); print_usage_line(2, "Available subtargets:"); String prefix = str_lit("-subtarget:"); From e35e1dcc7b4814a063c94b9bb02f1e371ae251a5 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Thu, 22 May 2025 08:08:53 -0400 Subject: [PATCH 118/120] Only trim `.odin` from build filenames --- src/build_settings.cpp | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 8364bbfbe..b3bbf726b 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -2209,11 +2209,34 @@ gb_internal bool init_build_paths(String init_filename) { while (output_name.len > 0 && (output_name[output_name.len-1] == '/' || output_name[output_name.len-1] == '\\')) { output_name.len -= 1; } + // Only trim the extension if it's an Odin source file. + // This lets people build folders with extensions or files beginning with dots. + if (path_extension(output_name) == ".odin" && !path_is_directory(output_name)) { + output_name = remove_extension_from_path(output_name); + } output_name = remove_directory_from_path(output_name); - output_name = remove_extension_from_path(output_name); output_name = copy_string(ha, string_trim_whitespace(output_name)); - output_path = path_from_string(ha, output_name); - + // This is `path_from_string` without the extension trimming. + Path res = {}; + if (output_name.len > 0) { + String fullpath = path_to_full_path(ha, output_name); + defer (gb_free(ha, fullpath.text)); + + res.basename = directory_from_path(fullpath); + res.basename = copy_string(ha, res.basename); + + if (path_is_directory(fullpath)) { + if (res.basename.len > 0 && res.basename.text[res.basename.len - 1] == '/') { + res.basename.len--; + } + } else { + isize name_start = (res.basename.len > 0) ? res.basename.len + 1 : res.basename.len; + res.name = substring(fullpath, name_start, fullpath.len); + res.name = copy_string(ha, res.name); + } + } + output_path = res; + // Note(Dragos): This is a fix for empty filenames // Turn the trailing folder into the file name if (output_path.name.len == 0) { From 713360a792ea54211624f7ac18e68c4c4a16aeb1 Mon Sep 17 00:00:00 2001 From: Feoramund <161657516+Feoramund@users.noreply.github.com> Date: Sat, 17 May 2025 18:15:08 -0400 Subject: [PATCH 119/120] Keep shared libraries from calling main program's startup/cleanup procs on Linux --- src/llvm_backend.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index 7de147058..395238753 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -1907,6 +1907,10 @@ gb_internal lbProcedure *lb_create_startup_runtime(lbModule *main_module, lbProc lb_add_attribute_to_proc(p->module, p->value, "optnone"); lb_add_attribute_to_proc(p->module, p->value, "noinline"); + // Make sure shared libraries call their own runtime startup on Linux. + LLVMSetVisibility(p->value, LLVMHiddenVisibility); + LLVMSetLinkage(p->value, LLVMWeakAnyLinkage); + lb_begin_procedure_body(p); lb_setup_type_info_data(main_module); @@ -2016,6 +2020,10 @@ gb_internal lbProcedure *lb_create_cleanup_runtime(lbModule *main_module) { // C lb_add_attribute_to_proc(p->module, p->value, "optnone"); lb_add_attribute_to_proc(p->module, p->value, "noinline"); + // Make sure shared libraries call their own runtime cleanup on Linux. + LLVMSetVisibility(p->value, LLVMHiddenVisibility); + LLVMSetLinkage(p->value, LLVMWeakAnyLinkage); + lb_begin_procedure_body(p); CheckerInfo *info = main_module->gen->info; From affced2d02090762dff8360d9357bfbbc8e18938 Mon Sep 17 00:00:00 2001 From: Hector Date: Thu, 22 May 2025 15:35:09 +0100 Subject: [PATCH 120/120] Added Semaphore API to the SDL3 vendor bindings --- vendor/sdl3/sdl3_mutex.odin | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/vendor/sdl3/sdl3_mutex.odin b/vendor/sdl3/sdl3_mutex.odin index ada8006bc..8067473f3 100644 --- a/vendor/sdl3/sdl3_mutex.odin +++ b/vendor/sdl3/sdl3_mutex.odin @@ -1,8 +1,8 @@ package sdl3 -Mutex :: struct {} -RWLock :: struct {} - +Mutex :: struct {} +RWLock :: struct {} +Semaphore :: struct {} @(default_calling_convention="c", link_prefix="SDL_", require_results) foreign lib { @@ -19,4 +19,12 @@ foreign lib { TryLockRWLockForWriting :: proc(rwlock: ^RWLock) -> bool --- UnlockRWLock :: proc(rwlock: ^RWLock) --- DestroyRWLock :: proc(rwlock: ^RWLock) --- -} \ No newline at end of file + + CreateSemaphore :: proc(initial_value: Uint32) -> ^Semaphore --- + DestroySemaphore :: proc(sem: ^Semaphore) --- + GetSemaphoreValue :: proc(sem: ^Semaphore) -> Uint32 --- + SignalSemaphore :: proc(sem: ^Semaphore) --- + TryWaitSemaphore :: proc(sem: ^Semaphore) -> bool --- + WaitSemaphore :: proc(sem: ^Semaphore) --- + WaitSemaphoreTimeout :: proc(sem: ^Semaphore, timeout_ms: Sint32) --- +}

    MFcv{DXx>R<|jlV^3xT4!gaHWf;RxlUb<;m{s5>(2z z|0w0O+PAT@&EmBcaQb!m8~C>ir|=>BEohM;9VC^|J$Z-p6EZ5HVvN+l@L~9XcpmiQXIv}O(as* zSf11yjXyx!?F_#N_5EamU1K!-3qmlT2aLugKz4#QTksFLg63Kv0K4Pa?)!5?sq1pl zF(1pF4Ul1a+HP*857G+b6^kB5v=hwQNUdyWHlb2|YXq_B0jI&4SAJ|1mEn5l{CD@S zkXOEupUL`3d_2S|vqkLyZpg$ekf*mz$g+` zEjxar-2-zt{H`WtrbpR7!^n=`h|zj&iF^P~6$TI-+TLoHL4?ZYq(?ZJIIGQv!la|J zkx|UJ$I(~8^cG5<2)>^aj5!mxk+#u|g34q+0CC?di`U0MDwP|F@%bwWI}k|2P5}Ci zgniFL=Kp+r9{*g(c@VlmTn%Sq?#q|Oa5k=P-Bh}b zlOU!(9ESE_+6&p+NF7JPm(&l@R|A)isC~O=q*OsZgj7wtOC_`ZiBbDLDh`J1zsm3# z!Lg2=3zlXq7(PjyEtjX_R3?ZcnW^PhJyl>d7NZrN00Ls86>%&MjcGtC;dX$2_Bop zB=1jv)X1bBNZ;E8G*4m|134SxY3E)*d--b4QVZW(jxp%p9ycz*@DwW&jxR{37fvUc z3}DX^y`EB2HF#<2-fcxusVUe(zb&4W;>S5%%uaBQyQ0baxNt_x@1wpowi8JK)TZk~ zZmPrGkKaTuv>?)G4Dcxy65_Hw76R!V&&)XUrB+b$Gg^LZED%i|YbPe6*4R3niXUu- zd2C17&ID|E3+zOhME<-U1tMm=W9-N6FSfH2k~5kXX2WHn{7K$g1U7- zjhfksr}E_+Xm&pE8+a*`yA|&H4NhC&CG}2o;oVE|z9o3~as)5Ma|@oASTYPP?M?wv1U)B6{h4y^pfMY_&r5}ZhQ*91*}G>Fy?I9CMvNlM z4#WR>)dDmw%;ZRbkTOtKgLZ+)H$2-V3^g-~rWzL^mmRK4%AUv$$5fI7mjEikQ3|4$ z12%Vo)7*tlbC)>H9dw$z8qeF&{54KDiqPio;VK~|n|5)R!2P)0xB!2Xviq?c>jiTj z-U=c^8>rQyeH)n@8BZ|XWd^jx&^`dPHD$lBkR_pcFsZ0F0Ps4lQ3Z{78NpMg2%Q4_ z6CYfs07v_s0x-sP0nkw!P8OoKaLSPJ3$V8vcmTk7E1FuxQIB!XNkJxw|7Ok6ukceq zc~O<#l^jVz%|Bct;t7lDv(oA4N$KfSvL5wMCMah@r}EIL9`t}G_9S{2A=Z*)LIq5o zD}mrrb}ZwTvuByDg#PWCNBy3nf(*v>Zru*gCN6d<64DGCu1WJn1@su>bQNDV{e zNzT8-jX+R6VW>a^Ef`$jlBCnaB4%=Wm|`aB;Rr4+RQrW~y}Jl)hRCGPDBD`tR)PkM zUE_2n)F7k9E$B=itK;v_NnU>@^QO8!9xT_#gTFi1Lyd79nA%KV4wsO<@OS)F%4axA zdFtrQ{P^X}Pkxo_h-Ig^5c#wgxKLdJb%le_cPg*>2OwSNP6yKUbuy5ybDKb1YBKr> z3R)~HC|qPa=)bULIY-Tqx{M{qSt7#V#3zAxfg?4Vfn`7OM9D08p1Nv$kUXGO%HtmT zAI;^8Kb(7;G>(5g?jDuYZpa9u?k$?I3dVNymld9vrw4&bAfbgFcat>g*Uk#s6k>Ed9l9)Qu)^tK-zme zNcfF#N1Z_0d(_ozlDtO&X~}E@Jwx#GC&y=Rg8J)!m=oXMY(|M{oo>JAOn@_RDM;dp z!b{o?_i8X6Na^P|uLdU2ETI~*9%FHwWt`MHuV4ocf%2i&nBQbxRoc=fq|zoj10}|B zqO10jaluaGq-W+Gv%{FRFG|UQR-|lycNiC~mrCG>>LcT#4tAo_no-1@ptXzJjFUc` zmzHOF6_xOB?MLP7m3dFk&rGSd3 zLyzK$0vrLOPpxL0K!VTZiL|_*`<-fGv9BPD9h+gLep2T62sj0el7-yT7!Uq4Fdu^+ zWKOv03T4kpy29(EBK|tK7XRtjy|U!W*iZi>YXwB9w`npK@d}zNgKPa1s;XIPYL#CT zG#YP0djVPT1^8PXpGyNdySjwOjWv`@Z&Cpag?kTkcs5OibPfvf0|uczSw`51EF;Wl z_ziN(C^H)W1rVpfx8Y|so4b1N>){*1tUuSQfH1r3Y<7&vmU2hAisg{%N7lULw z650CftNLBVYhPajy|Mh}T-1WChAx7*evmGLW#Dv?U%B^Pw|853u0>uQzCQ-i6Tvw^ zI(*r}x>Z>Ur0KZr({v94X}YI?X3HRZ$4mD#nF!MyXL~s=0n&Hy z+!2dOp=FnI7}`m4EWLN$h1X!(J;8BYjTK<7w*nw4$5q&CzM5^#=?O;@P)aG?DQge! zFUGjEcn(la9r320NhZI;RL^PgosjnBtqppZ-e(Rv6kbAxje77 zzRJWQzms?M-nmp>?5;T(7q@qyAk@~<>YiaqeT7rEN9FgaZxy3D-TKB)$x_!Ryt-1# zkJghlj2n0^>(atrirv-B5ge%633Lb`rhD*2RQ5I5T~`3<-WyAnr$+&h#$5){}2kyC7ArsnpqrF*Hk*0ge(#eUqtPWVx4n+c` z(xZWNN&7aC()B4o`^(Y{6Fjm!GNYkcUgD%*2saX2SzzP(_%yTmoQty7A&PsV!-MO*v(Cqb0M>8mWJo93DUTroHwvha{t3`y(dl0l9 zG<%ouI1u}_E|d$J<5=f)-W(Pf3B%@9qU)4GARDMAvvpl@7CtLP*PbprZ3Vm1Zo72)Ku4KfW! z($?+<9gk1b-lKM%_8$98dv6Mm&PsJa?+e4!1f)4`0n%BCtBmI0uuMxj&Z++-?9`_~ z%1#YKORDrW2$Yi8D}c1TIv_1C4y5IAJFK%DS3;ax;lqV;;lT$JmHkqre7TT8g`ITB z;5#G(IPTAlf7>Mktd_zRQ9x6IB1#7IF^yl{J}zS)hX(dBgiCIZcy906$2ewoRG(Gl zE)A3RFWJLhdFem6E_2wuW$fM{dmB3*@{inqXg36bw4r|vqzz458Et6rEKWmnQq_hI zsvBL;vhW$Kr&&fkjI7wyL5JWiVa~V`z~|?J@rAMy9Dvq>{`6_8{rR6^{rv*$s9R7Lhfw_T-gQ&kL#K1y&8b+) zLgqZmJH$1cy0lh3J#JVe=1J}=u(0uNabb5eM;(bTM$Mb)bi3U^Yd9S0w)S@IHs9x? z<{jhZ`<<6>6&A@}yDfeAD%$S=jFB@vfRU>p)?^6O-Z|43a^f%YGnwo|FuIqtEn#v0 z8~+`Qm*}7ZkM0cXaX>n#E@7;&KwUsTkk#Q`AYC1H0_iOyp99T1iZ_o?J?9chM^9Rs z?nEF>cQVlYqnNG%Xn`OO-0KA`2D(lVnFI~H-9zM3H1-}Zj7#;;j$(Pg_QJ>{Xx;~b zG{fkOGz75f^81^~A-)5aR#HHz;ZiwO)vKcyAHbW=rW(YgJO)+?%kFd4y*)VRqre&{=mI;;FO|iYCOe;0D`fuIDe4c!OSN>Va2bSxPm~-rIFY~Yc z_A;rjeJ}I)m)gtBMO*7+@iU-S$$Jx!P8PrOVmaJ&ef~dQEO$T3A-n*j`<5?&w7k8* zM`@0IfV8|rfZTlxMPQU`Wp*vD|0(cOE~_5wGr7ALYzRZlSrwE@i51?7ewhLL1fRre zh|RK39OcS6CZLEv%OqD0q?25q!3=7fn4L`)hbyiGt+b^nK{i=A83t9!2BT396MryRtJ!4l!9#+_E&#RlE-3?L;lglK!T35bgGSS%DBmg<1*X_h;0($6_*HR`?S2H|XE}d-+k@#8>|FQVEUe=rLb5LF zxRJ7`IuNuq>*8*_txq8}U$u}vTMh1CW;-{|oQ7|W+IKgjwyp~+%mQ+^<- zkdqFRPn|Ev=TaCT-w2@RJIswXx7+{UPH+} zlZN!A$*0K^4EPpz3yLVpQa!3|14ro$%p-wx@Q(-50nEX=M0R{DfOK|U3#9u&p1j{C zu{~bwKAdk%}f0v)rh1n z(Jv+M6d=tz3rI_r1!bBFN^p^!%qJh$qU8q)N+>wnhB*W5+PqWI>fGuehtco>zDK4P za+jbnNJ<0t(*rgxsGD<&;}deR&8+eVNQlmjve<%^*`JflgP`j=M3g_kbGW%dE*vGa z6Pp;c0y`s#1v?9JO-_t0oh&cjqTRhxy>)W`B zA6|fA* zsLTy}V{(-ttks}~!Z1WQ^T#gmomkD{SM%(^(m)&w;cKy^;m8N)O;)kgnSL`k!-zwT z4m#8L$e1qbW$;KNzk@eHb*2fbyL;r70o+=Hs?5WK**q(ISG6bDOmb4uiF8hTIgN*J zNAG>bR)b`0kXBO$jbd+{Ui5D|_wXZ=2>gmOzZC-M{B{hG&Tl~=WlN?2DO-Y1bz)}# zDM9}jNcrRh(7hrnTkIjSIX}cinwRshK(&H8fVAX|Kw9#1K>FS{fRuqE+n^GeAkD$``$tkTeMo4IDM0$RS|F{}%^sqkC=I&U9}9hUOl zp9Cgu4Cci5vl2I2Vg-9+bxsU=abNLB?t1KPdua;jpSkel4nNH1)i`(WxBaC;n{&R0 zH}h1lZwQYE`-Wg!-X~ zUfa$=Lg_!|WaNnAA6g(B6$0tXj5dto^nIMgTzQDNrVE%~*UaYGAf10rl3JM?za zhHg9S=-Lk@o(Nvt76g&$9K>})&zUpp1~?xlmfK^Up}21748;=|ojvaY(z$RMkghZ& zWVNMz#Y5XX)a#+q_z+EZERfcPG^%ys8li8aAa}Z~8-B@MmH zLY-anbB35VHNAZI9;MGrIq@qsFU1{u=KWdION(aSbqtpwY(;d~V#>u4vPY*vJ_{ z5FOT8>ps*{oN}pf&)h_0whDa~Vs}UB4`d6vEp{}jrfqT@kaDLK!fBgS0I8Ib zvy37L#+;erQXriH7654}2_T(s76EA~Jm=MP_j~9u5Bb`Y*RIQMIedQBhIHvy2$#O; z#9(8Vz_sTKKu^PMcdo;wsRsBO+Z)SjatRonarUi%&h%GK8YwuiE{ z`7@ViZS%|wf(vZG9ST9IM|o$WRMrvcuy5vgaJ|e!i3aHny&~Pkvrz}+p<%Tx9@bIV!S-6%Vs#jmt;HRI?do_PBkMabfTZvT@>16>Ies|o$Kqoh37(2v zWhbPE5o-8cSCy4C(!*kBTlT8?C{d+|zH*1QccwnLl`9VFli~}V_Rgn^Fan<<$Kh)4 zTtrzSnvCt2v3D+`z4Pf_(}#hS{?GK9p3*{{uekfwE_wk-?VVro(s71YduQ@9gWEgH zeZmXht4GE#1VhQ`T~+qSFm;B-A3D^u-^aXSH1IA_D_OV2O3sG~U=1vwXSdWY(Pp`p zN~%WVuaU&0b@Sa!o02=AqV@=}R%k~RY@5<_+5z82L3;7pko`alLTK4s+)d|)g=WQC z$jwEbPGe_B@fxPITY)FYVxz)%Job^UGj|zm0UPlZ6uom%6D#LYH2w>sLJSSD1pLxW zfxl7y($INSnbXsNy{sZpsV9Ohg6`GBN{s^seb>^aQio?%+iJP-~6p}lo#`EnJi;yin++ML1zs}3C zbEJ+JWb0x=9Y4B%8T#f>as@x9dldv+3*qH2xhUqE|Kg-m4l(-FCm!lwPIo=Bx>DGv zT?e17o&^9qAIBM6@ss1I^~0$&3<@8o@Q;=c+zLc>050I(DmK2328A^okMrS6TD*~( z$&+BCTaTo4)#$g;9S4HaJ;e$Sy#@4uNX}`&t7=C(fqG77g?{$6u%>+h%3?ILg^g__uxV;w)Kl7xA`Yc(Enl0(wwA&1xX-p$ zrOdef1O~VX$F?@JINMU5tBW-fG$#zNbN5Un@EkO;>hZlC3Y=6lz1r3CRl8R3s33V8 z-;&L)mT&5F$lxy~yIn1d#e{17S5~{)D>3xGoL%kA>=g0;yIn13Qnjn)23n7z=tM#X zlm&`ZyV_YmSIbEU@7mClj-LYQlE>}!PbBtcAmvIZ_T=mbaej&8_=J)MK9?DfygSz9 zun#CbVF3}5sDU80G5NNKjG}i%YxW8mZMQzkt0HD}lX(d4>TdnyaC=Sb)*}O*SFFKo za$|8vQj*mgSGVpk{tW-yvp^YS94>0vVO+R&hcUgi4RTn$>N<3VM6ygN&$!?fl$|zr zZS7xfsJKN^m{)W#b**V!jq?87va8#DL;oCjW0zYSFo!4?6}qqs6?hYsTaU~zc~Ns1 zBz+cf&m(R#{=H=sJ<*0NZ4epeTn7<+eh$@NiSlwxpqn6V$;+AL#op(It@hHr?uBLA z%_!=Wk3d~EeCeh`?WeD4L+?6On&7?aRPR;j^0B@)HHx+x$4wlsOLDqi&NqlNH?XMNI6{S%v~ShAt?lxvT{wkW!HzH zKnFN5rN{ro%fh9vguy?Lw1tMl_LJ!|Grgy;;NP5ZaqGbTE8SGw;k;=(+@wnpp;R!} zZZ&sp$D6_sb4(6h(dtn18ch`plYiw_soXQ*72173}C=Mx1bx>Z; zPdv21i~XY)_PK}X61(>pJmx^qne!7}l=~?d;i4N=n~fr|{b9z133PwlJ>3>aFyn_r zGt7o?r4F+pUh=S$_30IH-M&@E5nrxs0mTs4N)3WQKbP1lFIKj&8MP;M;tCsIsg6@Y z)J~=`i^|qd4q7*k9akAUOWg_)eTTfg$b0)lpgB^vN}#(W_FONvZ{6x(RR>2iJv(4V zn~$N6!%zr&E&C$`2zbd@w`m$i$0q#aWQaLvdS}Qu4hO^di>VoNPRJW1HIHxU*BHQFE!!*_l!CFs}pV;wJBfc+QA%xxiFe-<7j5Lj+xA1$UQPj#3 zkBg13!Q&}LQ8!-v5|W>t4=^>KRWjDKuv(o)(OTm;*rFisC$JQJbo^2j#u3W|M$zj? z^H*ctD@?lu!KmQ$*J&46v%@rI;c4cJh`HU#HRCP3P2-GSlF_Gv6?Z@CpPg zW4|M0%-GC0PP)+){9Q%tiwh$5wPV9Z(bP`-ITsc_f4ZcNv%=9waNea@`#UlN*S42IFp+4M*{GQQ<@2a0FM%!3eZAO2Ji&IM1T$g+>bcrDS`9V z*g^m&FjHP7I1HeRU@XAf1Y-cU5)=TuM=%OtJ3&6cUjWX^GnSp*6L`r!`!i$NegPPu zL6MkOj9`}$I7LqI*OCc#K|p!2;{j$@Lg3oz|si&j)V6aOsE!p2cGf zkBc&ob$DEydAtgbOEQnM@pyaY@iIK#m3gee<2{+j8F*Zpd7O^NUuPcA!{hy#$7(!2 zn0buiae3y^!s8z^k0CrZXC8xid^GcTDjr)hk7am#BJ(&Aj~$uE5&`L#N(@($HVa0m3bVC$G0<&WAL~&^H_k#_cD*8@VGtmn2*Q5c#jw4 zS(i@j!Q->hz$WX`b3d~#HQXm2azJ5@vx-b9k^%AAv3x)C_c)phtl&71RRs13^y!{iC1`pc+9>0bL@f6KIy8 z=YVDkN}PtK#3v8mVHuBMxd%5tyg7&vFaVFOZ$1O4xK(yhZJ5{h${8}5OiNLSXxEgk zH-2R%;SYa0?8(4EnDC8hCaXsY>w)d>qG5Jx>(;Rg-vm3KGyX<%5t8l=Ck*tTDXu)g ztKr5-W3&mczjT+pa1m;PpS$$ue*J0IpAP-m!k?AqDYfNrx!m*_7(B~({KAVMVJgfW z7RaNdX|LfU@@oN#h7DU68h`w-`cL<{0es6j)mf)XNROGO=Q-(fAnb_wa8_hsn_%qWbJLMcx}Nm#zS)X z*v>6<(Kvhjh`D2phdSv_x5l4-0@C9;DU`Hx%l#v0C3H(=)(YZQK&E;)h%bkI;Ap(s zZmPqNvGU&8_=yy+HyTUP*^Qf^yNHzblddeVwHp^CwBUlDGOM(sw)IcWQ%P;esw|^Mfpgj4#+t zeEy*EhBggbt6%f9H<5t&Uw082#%%2lL^f~5e!qB4Z^t+7HK4sh$y?cAwMiLj^uh66 zv-wP@e!4@Jw`L!~i5n&a<4~>9;|5L^CvljbH9;m}tGE>x3Kq5NwgMpx1+CU%TZ@Oib(hj4&ra9_~UT#J3PHK%;w=z9TBah4=@wGg>x{O zjK~B!Rh4}*u64KC*HXX|wf`E~{JzX8=J6XNyIzQndx)<`pj%U(Mb@#p^?W7vLsH*J zaf^u?VkyZIi}1)NC<{d~`aV;xMl5|NxzBYGNcgr@$WZ)&T(h2P@KzXVnNoBpdu zZe>rJfR6eZH#&=fls)ML8h1FusMq%SVMO$Oq&YaGHpEMBm0kS4Gtxs`Jni5B;ZyHUMe+Jqz@_wBHLr+J1lXV&C;* z>AqTHKL^?+y>KDc(>EpW)j)3xiUVoMKLyepzXj49H4yXl$QNA(v`f%zpq+xQ0{W|< zI-tJ@iUI8qG#}_AK?{IB6jTqC`)&3@15l2jML@k0yBO#TLDZxCT+r=6p9#7P=u<(o zmi|(@Smf{%gc5}#6Hf(@-`bzp!fO;_t0?&(i^SQLXHO5U zt9`9YMf3&(r%!i0AaNqVLKHXNO+Lu{*?6&L^729qn+#>-l+w znkWxs&6(y5x=t=_Nx#jFg??8IXnz^kzX3W_+EBSt_ahg+$8!A+R~yE2;r>@gZWp{ zQ_T`oGvwAYQrsGbGwg~MqiHO{;TVxQuvAsqf61&-9kND!gaE{B{Xm zOE5W`_I60`L-xCvps+V=*dJv-7R2X-Qgd;0!u!l#=&Bv5r^>O}=O3`W;4=@&u$1Zj z6JN+-z@eEiKbz?&^9{leYjN)iv#e~ZTUB3BnD(QX-tssM&7r+c3yescAEgXj86tCs`m2>KC_QtkCXuL#F=E70qLegUL8?)K9C-V5XTtCqs1(NZ=5 zX(`kb&{F;fNK1LwOV6S*;6@N$S=LnV+(1eW=-Ij ztpnf29pUUaT)$-Yl>amWw3NDGf<4l=tsFLId^GhqDKcV@h}xZz)^|@&v<`#Az(!Ox z2QHYqx8v7*JjlPRF+*T)`C+*Di!cT$jAwOkc_4yOwv1Jo)h+vt^wIcZg2*zv%>l`H zq@}w}caWIJ5Xj0 z?DlD7*CuzcM8|DH7#Bs3l+eiMJq|%ia2g{CmiUcm@^(>>3^#0w?Pu110#oHmz6;F^ z{XWZ1SEa@`h|7GukE{gjF*3D16iJ=Ztkl&LoO&x$kvHdC+T6-#y-PleO+6fRn1#oJ z^~7N9oN`10uSM;y^eNHQe@MI8uaOOdH&ET>4`_Eco#qDL(7sL^OZWSjsf3p*@$L1= zJ5n%Kpq9 zBvFjP>f}hYdcM)r35FAvUdBTkOqq?K9czM>fr1Eb(QQHF<44x{igm_K_aQOvj0hLM zPpxlW_&|Q-yRS4r4R2qxZ{lY;{e&$)K@Rt;-2OQX{bSi%*gsZl`c!mI{ijCC%$0#K;Su{_D7EY-L#R#5O1lki?b>XOd)eBYMy%V;o8LjZqp?T65lJ45 zkLjkzxl=*YwHVX`8)XJw(YI0da)`Di(z>;RoG=XGJjjeJ=Ux@ipJo-_T-Spx5hW?e>k3t^&XlwnR@M>jqsZt&m9}0CoqcW2O>?b4N%G(r4-q%uY2mN_f)w1bmtE zk#gJdZodX{iZenerUezjWW;sAgdJgQoY~t^4^17&9yHQuxc<}L-VnqBe0lfPc#s*) zb!-TBitBaaiTSQD;^MXwkWv{GDpDyER1T!93f0y$_WMBl{fq*}3%uB$c(L<=MoTRI zIC;r@X+$ejM+1!xj(%8#^l;!#nkd|^g zke0$xr08BC&G8>VTHXUdnu8u@H1;(hEsuKg8hapSDJ|ta4^6_ntfia}q&a2+X(>Md z(!4hVY2IASTZ+yD(!8^QH19P)nl}cddG7+!99-rVT@9ppZvxW1Ng&O83y|g|zv8?N z9N8gQv}g*$ zL)2<#&|!Lm1a7O|m1{Kc9FTfkH4aC6XZE4Ui-wn?=jrSPJnJ9>7Ne*hiBgkf*j{dL zfJGS{C+W~N1M9>H3j=ovQc)$frx1e=9F)rcuo04BYd?>GMM#1%TsYU@h{5`eI?8nl zzQ;z1(99?ZV|D?>1#4v{LTM<5Z*nFhr^F(P3{3llOgU*xY7P2%NGcC^v1B}O2FOwb zLhH3)oz*BCb%roBv*u$QS3?);U?kDboCKuZ9|6((T*=4>za8X)az${sa#Ban7A zcRSkE$D-G?tAFevc6wn5bso!Yi(eFrYoU-cT)GW?|8WQ#gKBZ(1#n)NwNKj(i_BcAo^t^sjw^zR+&8kxeubovNZci z1YmK%9#wjyyY6hPCL3|-&vsOpjQP5U=>V1+fmWoN4TBDzA*IILj3Xa>W}Qn}5GirG z%mHmtLPoosBK(5DjGH@-#;YnmG7?8k2Gym`&ecs!xcI|R5;w^r8JDM!Gd^6|!1WVi zBX&fM$JV52XBp4Ob`IsI_k||J8dFpupc{?JK6q_@*zW57Go~W*Q6>o$zavDCZG4fr z@Z%gr7zy6Q4wI?^RxJ_4kFoN$GW@_Eu8{}N_69vlF7r;R-}27j&C=VeP_7=rukjAy z-2_FoyGc;Ey98r*m!M#G3GxR|0Geyb#ID@n`#>+aHYttK&BHJ~l5dqG=23Vy?Zq7C zIg!BAy>CMETH48X82?u0-P(kD8t-o>?>(A8kK>0(py%;JB+vu-Ark0`{16HBNIq)< zL)(b$CTH@#4|Lk8JwZa^e`ng~Jy~L=%v{UZkeplu!|mj4q%P2`oe^e_j&iJt;M=}_ zg3El3p!Uw1^tVXeBZLu5k7UThqUO_Kw}t{;I8p(H8;KGa$kA$!g9W<>GtdL>5L}rB znc?Pblr>B@E54YAO~`si1U~Mj;hI_eMQRF`f+MI6e9mBVhHsS6+uS#!1areTqeQfk zzMfIyj1jCQY3vv>!{l8H)R#FCL%fJyHzU{?J%Nv9oLIQ#{djDlw?c%s zr46;3_!4AaO?(NmuO_|(*;f-^g6yk_FG2QkA_=muCKB}(SCh7|Hy*y+YJxq7t|mug zHOan;)NmCU?JP7{NwAQ7&T;W&7ZR%LeluLW5&z9_appc9(_hbU8Ejd(ZBo`{WdVZs zWLc^C%FD_=+zbZ0KjQ#;B#22bRE#^}aiFeRH#il={-j6uC;s)t?zca2*B6KuP-R(P zT0LD@t}lF&^@TF2Y}*tjkZsCP31od4DuJvoLnV;)WvB$QzGP2;^`(_7pvDduFcLiU z`XbGP^(DbZfMafFeZjX6*sVxuPP>V2u75f9YM}|TuP?q5vac_`1liXYUxMuGi!VX; z0V4@A>r1O|w<1y5)|WQyR)Pa|E0DEk*sx2n|H$lCLev2H5?dBnI=2Xs%f4mopev2_ zx2!b2f#Y9k1{*kf>^9WE(WRPN-hN7O2w*72j3aAE#*7JuWXzagNXCo_hGxuU;P|-> zA0_xXjqWeSnBlzx29A_A)WGp2$Ubm<39=6yUxMrd$Cn`c!0{!>K5!&K_JJc&yBj!z ztu)7-nsuewAHjRF(pX=4rOAgtxw{+djO<^yeSy&TORq2A3=>BT_RTQy%{RIfb9o+Q zR_P-R%f7z!k%k3uhL%}h_IPOtc-xn8SX8K=tH<*|%RP^-QyX?Y{DDK$< z8Q3=qifdZ-R=&%L`De*Ny8fF5MTNuurur%)Wv~Th%gI?6lvV@}xu8Tx;#4U#em3;p z$3ZZL{rq=M4~I#eD=Li>17Sj9bPL>+d`#RHB{Sc@bK)rrRM=M{8>n(p=Zx1s6SEoJc#u> zF270PTW~+mSX@A`NZ9>w@wA7T7nDaP;m2;=w4yHIS0KEn9DQjFjA5ytP8OEa-Beyti(@#rRzxqj(hKcYTEMd!-n^>m!WcE1NSV!}z^YjNdgD#_yFanOGRVSBmkw z#=`i$QjFjAu>_A|{H~7^@F>Rb`UvCqN-=)dM;O0XZpoAkqZq&IBaGiG#rRzxVfL9WBsDs4fqYe^_k2**!KI$N` z_^5-#;-d}{i;p@;EI#TWvG}Ni#Nwk45{r*INGv|;AhGzUgT&&a4ibxxI!G)&>L9WB zsDs3kp$-y@OCFeE@-j1w5=#I}QS$u!J*Ji+$%Lfgl8KKlNG3kIAes2+f@I>O3zCVC zE=VRmx*(bO=z?V8qYILWk1j|iKDr>8_~?RU;-d?aiH|NwCO*0#nfT~}Wa6U>l8KKl zNG3kIAes2+f@I>O3zCVCE=VRmx*(bO=z?V8qYILWk1j|iKDr>8_~?RU;-d?YiAxvG zl#=JnA|R9e0c3(HWt5dzS724ZgRGIbtdLu1=%u*l?%fx^1_Ng5v0TWgLG@T%%R+ZI z?;ZSqqtD_VhKjsvD4iPFe`Zer{`wnz7N1VaP)91-g5D1P@1@UT9+%_pKfc@vWS4sa zxqE#Ukq>{P&oZRu**Bxa)x6U|kX;-sgW&5NC4=qW4>>mL?md9uA$RYNKFi-A4u*}~ zH~K8QJvNbL#4oz}yGXg<#c8l(6FPV*$$H)>wNM%z^4NqW40&wA1VbL1FhTZl;;X|R z9h>-96Um$H*klj1BX=C_jfXF{ns@@?Z}eHD+lM-*ly2W$0-w~s|52#Rb$v5jYFm9W z-=UTje^asf2AN&@9H01y%V5h&+mTt9l?M^Ln`LDy6@|Y>eHNc4v0tAhv3q?MlBc@9 zbGHaX>a#F;k*B9IU`Ewm8B(9c8!)Ow(VyJ4gdz1=Sb_|g>?ODZ#;>H|qX55x#vrFC zgXpv1y#v-4DNXB~eSPsI$iBY#5@cUrdySwyLG=wb4W+Lz-Fx6e2db-4j7L5B79q+x$AeU{RLyy5U=_AlS) zvv2}bUBYh^BnK=9B;)Lyn6n%(L3U2emte>RsX#4)aNSDf6M}HxN@a&2T)0yCl%NSfoq~#ho)d&SS1Pv%!lf&f zuL?R0s7ny8U8#Iq5bj;6+$sncuT;J#XcW+PLHR&`5rn%}DtiJwcI9WdOK?P>$5s2l zvF_$xGw_+GFLF9u=s6lAgWP%JW|h7>KS7_Ko%k`$l_&eWN|XzR@0G-)N7pZ?s3)H`*iY8|@MHjrIupMtg*PqdmgD(H>#n zXpgXOv`5%C+9T{6?Gg5k_6Yk%dxU+XJ;J`x9%0{TkFamhBWNM^&1Xa-jAg_5D_!z= z@`k)U?h98dgTn=vqd*U6@$WfM#L(OsD2trV&@NzSXcw?Ev zyMUdcUBJ%JE?{S97qBz53)mUj1?&v%0(ORW0XsvxfSsXTz|PPvU}tC-urss^*csXd z>;`Roc7rxPyFnYD-Jp%nZqUYOH)!Lt8?^D+4chqZ25o$HgEl_9K^vdlppDON z(8gysXydaRwDH*u+W6=O82~aQ^4Jae?sVnZ>vOvLLX-)TH~4f6ZhGkrn)Uy2JYAG? zilUaL>vIDRHyYI5AI{Vgn?}N|M{0Vm8j^*JH;3SDBuGP>P(OVG__v^zC!JVA;UHo> z)|oyS_cq5zhzVMHBtlvqfr(E}acANaIM0A1n(nLNv&VDF;g;9O{&_nzsiUd8>G#02 zM@CcP_^x7QBl#P3Q&Lqw)m#W6mBKi32z(;F&*$n=Iv zAe`h-35HNT&^pMTD|-n+xX$H9LSqNms7Y|GnJnnOAI%_sG)%j@SY2tgSY>zF zix;vPs_e9t+Kb2vbcnrLmZsALwWYVi4ju`mZ3jyEoO1dm8z}3`nrtASIWSo?bssyL zOlLIp0O??09}cJ~sDrX!WE#kb_IpKoZ!`|3KfMGiq(t`cqfOXd}GUs z%E-!1Rv~G#M1f@XI>l~Q*4pOo+OCzQm8+IkAS!6S;9F{1p;<9uNo9(r^8Y>0nfoxn zIO^_y|NGxv{d{D;_ndRjJ?}5iIp;ZU)DpdE9biT96h&@P20D#ZmC(RO-BPo9?C@Ao zxv3ss6``QnGv#e6FwJBUQ>ZAOmPME&e;V7Xkw1;?)ySX5_G;vh zvHfvm5&jIpz~0;G28`SjktLq<8q2VOIKn?}PbuPY{rK~_*Y}S*xbyejvcItr%G%qo z3R1cYC6cZvyT}_}5=1ONHh1ztbsjIt5Or!08k?odW-EDFDTre!ag#KuYg# zCP-=a9VfPrf|TChC&czc&{^1o6=4ZO@2u|D>km>_@6z=H>h`>2LftTsS7vshyM?9* z%@SH9v;*``cT5Z{$Hc4~=J9_2gzgraBJ^jW@QghuCq(c7}kkW_z1}OY- zisjoNl`d9@q||q9La9R8LQ{q22(1+QR45FJwwHFNxY^^ZiOHfw{VDRRBqWo{;vsT3r!W8BeY8BYoTL87q>Tk?g3iCF>-^{H-0Jf zl+Zk(YN79i&OXC@_X?pbkcv@0NX2L$NafZ6kjkx}K`OVdhGtMcng-`}a`J4$_$MJnkY-b9+FZ7vEqfqRbrq2$ckwT>)72i)lD!%ueWq!8^ zq+;}n&`P1Ng(5Z6T@RswLU#&H2B{c%KwCLRbH#S8(04)_glH-RB>Pizi_kbBuTU9C z#pqLziqS7{HLc3QERf2<`#>rOe-BcjdLN{|@tIJgP%PHTm90bQ9-#uE=Y`$_DW8{t zYB;`Mifvmg$1DFX7t)0u5c-YK>q0Aq4ue#Dot@11E(59W?g6Q9w1IvhMVAQ;6dEn$ z5&Emp2SU3*%4Z+Q$1&=F9XQJ8D}-(q8Y@&P^p?;@p>Ks^p*UW}C>f-3@HLRi!M8vv z2N!}=4(H*+ELVY4ER#VhEQ3Hlb69Re52@1SZjgE-8>HTt z4C-p5mcIbo)0MlaAmwfvNV$6nqvE-UF#Owt((rcW2|T%A+?x zDqYqI?GuW=)U>@?=vJW|p{YWzgC^m9t7V;-?GuW=O#BnNRcO4>bfI}dyFn_&=>}O9 z`bRD|G(sp}=mnugLhFRS2PvNqfqu&|>Y8Bs ze7(?}LX(7M36%@&7CI`Fc!e1w9i(FPAxM?yl^~T{AAwYEg{X`EaiAADzJoyO8)JmLLT?JK7pfQPm}tJ6Ae04CrSmnAitja7o8KJ@ zQeVpxdQNDO&^Dn%LY=QM-@Q`k7LdxpUx5D1F`6j0FA04h^tq5F$@K4Hq5eX52$h0V zjNSmL81?97=3pX7xJrtI`%f*T_cnsbidGVK+5Oef#!02 z|0cE{3mp`Sxz_Z#kI-#Gj|n{|v>K%1+vz$pzP|&h?=AqT7;ONAjvZ=+CbifQH$x<{x`=#N5+g?50H&tHH(;P|$Ml1KH8%Y}5I2ZVkj^t#X* zp|6E5xZaHK0g#I2QIP5f!*4KS*$Je=asjB4!!qqg^NnXf>Wvv7l`iu^>WxL9T7DzO zVZPA~q~5TB)Eh}4^@bDF9zCGd@|XVR8*hNr8*hWu8y|ssvb!lxGq>VW%@lG8Jt$-d z%@tZJR3{XkX8Lj|NQLSu(4b2xRDHzkHlce!DrY8(nMcg#h}nEGTQ6o?#Vlf=`Lzxp z<=-`8)>q8#7qhWq_MDjgLCjtivn?Q1vcChVw&?-gOx+xiD%p7;mAdbORLnmCsjwUt zI^SiQ^%c5J=+{Ee3%wy!4N^Yu1P$dh{X)z--elT#0jcjMi>6#q3EjdrHif zh*^c0eJ5rI#O(4x=6A0Gsqfw^W)F$kOCXh!Znv3!LqMu@W`b1ujRmP#P5|A(v7B_X z`NoqV^@agbZ_EOzH~tEGg5S6}!!#QTTEe5@OwfBwBSG&nWq}qmjRGxV8Vy>=GzRoH zrX0`$rd-f+rhHHZ(?rlRrUFnoQxT|)sRZ;P(=^ZrOr@arnWlr*GR*+3VVVj0h-nsR zHPdX+DyBK0DyF%hN~Zasl}rmjA2TfmZDCpp+RRi2+QhURw2`R_w1H_2sG6x7w4P}* z=yRrRpwF0gf<9%c0qtbk1KPn<3;KjV2K+#M^AdRU6bQaSz(3wo7pbkvaK~YRIKxZ(` z1hr?H1&U;v4Qj_U2h^5nE~pLDd{6|_0+5wyF({mADJYDo3}j(i4r=5SssbHjS_3-D zR1G@9v>DWo-`EC9VcH4m%TxpE!?XvK%v1}yj%hFGTBdqXZ>IgAUQ7+3B&H*vYnUvz zS}a#HMSv2SB0*O%bpTz-6b-t9sS_xHDFzhJ)D_f|DHha&$p(sJiUVEFlmNPnDG_uj zQ!kK>DH+tAsUPSPCOhb2CMPJCNe6Xfa)T~n$^c!+G!%3PQzmF6(@4nW1DMJ{{h5}7986UpJJTA_ zjZD>`8<;kOo?zMrdYow|Xd+V$=rN`}pkFi9f*xhs3(9Az2Tfqw4|;^D0hGsd1eD8U z8Dg=FXNmxgV~Pa*im3xAhbbB~mZ=lyVWt?+FPXZ6#xTW#9%8bA9%PCGJ;0Oz8qJgl zx}T{RD4Qu6bRSbc&?qK5=w2o#=pH5=bT^Y5l*N<*x{GNjXev`C=t-uLpkk&hP!ZE8 zP$AQ3&=jUIpvg=*paP~`P$^SB=xL^jpr@D$KwhRI&@`qJkij$!^c$v9kcVkH=mn-3 zpczavLC-VI0zJnx8}uyG9ME*8xu9p5=7WC6v;g!crp2H?GA#woVk!f@%(NWz2c{~} zOH6A(GnuMEzh~MEdYx$-=ryLDpjVk{Ky#S(fd0x<3;GMwUeGH{^`O~I`#}qs8bI$b z9Ra<~WEpC)yu}m&n$Hvon#a@u^d?g@=nbY$p!b<#Kuejrf|fAFg5G1Yf!<|`11)As z04-ul1TAFh1zO3J3|hg|544=g4ys^sf|fDqpmHWRsEjEC^dZww(AP|vps$!lg1%(R z0_|ZM1^R+%G-x-|7|<@J98e8YF6eWne9&i16G5Lc6@Yd!6@hjzm4H5Bng-g=R0`V0 zG##{+X$I(HrkS8EOtV0nnP!7FG0g#OWSR@wz%(CJ&9nfto@p^?9n(_KTBb748m8r- zkC>`JtC`k-RxwqBs+cx|B6&=`4b+ZlC#Wq`4X6#%9#8~REy&8W7ZlD^4+>-253(>d zfExK5M?lAzEWY0*3`S49k7+2V2gf%P6vs3Y zbU9NN=rX2Jpi7xXgKSJ=K;4;gK$kG(f-Yvt2gNc?1a)I70A0jX1iFx^1k{yj8t4M1 zQqcKK(?MOBW`JUtW`a61%>tdrG#hj-(;QGIrn#VVnC64dW?BI1$g~(la(%01DM(`~ z1D(aR9CRjA6{rK#8c-BdHRuec&7hl@wt-wsJ3%^A4QL?K9#9%nEhv>~FUZMM4;sL< zAJm_z0pwsh0UJt&)LKj=QD2GA&`BcOYk=$86>m?A)TGev^3m^y&&Vu}Xc$pqfJ&HhKvS7=K~FN}gNm6Zf{K_5K!r?2 zpealxpvg?rKm|;tph--8Dfkd|BRE|JAE#~tCuLlYrMO2CxC-N}U;cKY{QrC6bE2 zyzft`RteO?0S*GTNWm5kaF!^v1E`t^?EokILOZ}|zT-L2RN_#AwTz&L&l+ZXxXc(w zapAUHG33`WffIXm7YCm4dESbyTa{#gxjrSmEVw$Qj8E+KZhm>)dUe^hBc+iJ>fvk< z?%6)dw{AJ&8&B}9ZlNt=!s9#LOve!Tpl^#leD26 z@JZTG4*umjSz6sjAMzSuM7ot)JdWOf{B3nj3MBms^5}*~t|z#ZzNwDTb=z@G)g(8! z)m7UQ?mmH5uUf-x%Xf6&yXmW_pWrcVh|`Vf+#wn3jB;pK!MV2$z9e^17S6#r8drKc zOmUJn{qa#r-}-)gDB#eG+d#+UHqcS&h0Eg{cREJib>|(oS7et`nf^!qVS(4bT8gDg z|BhcQ;`!Hc?hxBiAhqN70kM4vq}JbF0jc$#>(M@|6{kCeCJD_FDi_)}BpTt9=< ziXtBT>2fVdy^#r0K0hk-qRSH>rldx#lPFN9yyEO#aaDEtw;WxRO5T6*26v{HR)UY>LpHN zBYsQs$$G>N;Ed6Xdw{bt8NW4_;b9D-)V&;;T8)QXTNcjyBiEBtwGrRq@VFhH0^;_w z4o~8D$6~zM==Qj6cBEK8nC#h9bFdnmknPkSuFp=@at`2#@UaMO8l5|!MmH0`4)4uJ zespSMhu8n8jXl5c5UhK{7!UVE7y2T|>dqQ6E`An?0pkZ_$t=4X?^6(T&s;vZ==SRX z@GP}8z@ghSn>CRjwz7vRs43lNr^6&JWtzSj!fNKQPCy&ld{#KMTrB!1tH zKk>B)x()G-Yjp>TR`foF(5=0{%(oU)=nKmoL4R&2JQSuC--~p})*ik!?nmv32V+5L zo3kC-!)vp(do~~y9{w_08}kk9hHt|c@2SC`F}rN%_`2cP>@e0*Sni`gshlXoU`myZ zvYg)Buiip(Y{6qjB)%5I34}0EkQyjR)fA+SzAgdpQqah5%m#YHcMQW@)7z%NJxpG0 zqt6@xY;P984ZhX%PVvUPNXKHz=(;m?WTay;_7Pc}@nsGSo5%C5=dr%s=&PFDdLFBF zBc(J=S}I1tg*garsUn&uhO3p%(?C5kejUe{yc|dCgL1&5-@ynJW{$1ybSA~kJo*jg zfJeWf9IzglP!4Efc$`3@Stx6=ZLXWbe96}xxy?Fc{0d~$#BkbFij~W{-mi8dm^Nq* zl|Q9g#b3VbPpK0*Xsu+Tg%81X5C(*ywd$7^KD1WzA`Y6gKm=-oX3w4G%G4NTVv2aWc0eWQ>Du9MH&hM% zU#%U@ss_yn6Psp)T9I)zTI4|q+_dZQ<*;|Blxb6QVSIv_;Yup*H26z2dwexL#FX%q zZav#by~a|ie9riV4cT@CuVN{$R6CA^UVqI9(HHM)&s(la5~#k{X-Ug}P?l z!aZ?P;!mwxkhP`jT6PPEU7Pj=b_=9%^;Elsz-6VDGwLAAN|bC(%S!YVa#@KSgj`l4 z2O*c0$U(?uC33(M>*FmKxly2$*6+hDWze;Sy-O6k;Lhck9&`XlaM$C)Q`a4 z<8=KvT|X>p=fp|%9#b@z<>6(JUuA1Q)Q}mi zAYol(%qI?Q=x5sSFS50L|=iw6t@a|_Sgo* zW;K0hEUh*n0gkOk@YpGmy05l^98vD|)m8(?(n8zV4SHd1Sl$fZ(=_|`X%mMDnQ{zCgqXvZ zrtnZsQtZv}Y^3mL#kp8*G?$S5i>X-Ij&r zpKeP=LOP6Pg*8VYKaF#wEYrMgyV5qz+rk{Y4v`xF5#9C>>%;=FP3vYyx$0I#K3n_) zCR2Ge6kDInl@IN3fr~!O89hRH+0CS8;8;jAFtwxj&@SPuafdO zI^;Q3TP0>IRr8#-C+Dp7^dpFG>b?i0X6v~~Yu9e?5<6`SL)yEIpH3na>Bd)ZjGG(w zoyalzWOJ(mW@Sil%As^)vtPcIZlJmFXIEW2zf0`gNcHq|8@RZ`6P=0;Ed%2Cx`)Ox zT=tOe38USk&2D;lG6qH8yhCM3g1?HXdKK!X2djC}!y>-u0acZBJ;%~T4;%TShgB}4 zR^Rk(YRZPDiyk)lMxr97#&2*KhaJ3C=b}fjrRSF5Tf6<$)9oD;rxkumlbS_5_Cx_v z7qdj-iWW-zbmJVljm4~<%aFd!t0$R+te)f`Wc4HmA*&}j2w6SJLCES!4nkMYWs={m zhij^O&M>Q|zit*c)y;GRx5!PVW;ESskh)pRb@L1V@;U_}Fy&emcXH5L2oTg++=+^} z3s;{6yY#QMZ*K29l;LoF5;bxeu5K}FWV&(eBtk(241S+Xm8`R-8(%c9m+8g|)XQb* z#?F><=jN3XbC@uvvDH6+3ape?hbOH0wGH2Q!mu##+J-~g)K6h%R#b1N&fHb6IM1pES0>NfL9Kkk#jbJArmY@dEm0%AbhM*SEiC`}vnxG!gfnYx%lAr+)VQuhz zbT$p?o2S_6Bx;sKb2bI{NIZ;Lo;N!ZwGmioUW zKQV%O{*TFIt_$kt-zDDJ3%P3RxSxuE=(V6eoLI6{m)rWg#}z}>4Q%bWrKqZ|duum- zDOO#iX=ON$5YibvZC)4zU1|jy;>Wm6jkp)mUkt3rXpzs;M=vao&^=1}g^MC-4e;@E zoV0<1R}FlZ>V>V`V#36F3v6@PIe)n$C4uA02__6ib$pZ@pnn*!&f_^3nnw}R$QqVvzB zuHX!&@gSuHU@cmAb&UQyAq}0MGD{S?MQEH*snB1AmV;i##y+d%YcY$&*hBf(L+B=< zhlHjHy&+U3bO@x5^q+?TmkK={^H=A>p9Luu1}}otx$ruW`fdk|gB4vNbhFS{p;DnY zg;ogd2FqS2#pdd7W#`&rBJPq z6|z(1%XJ_Xw}~JXx3eK?R<=n(Lxu8$o)cOmv_)vIP(ECAmwwq(8EGc3(XhW zAoPRKnOH|rzSu!3^qC+P`eh)MGpj%@HBDiWf=~dK9E$^jnaM zk)?~7gY7^n2RndN4)zDBP>lj9pNob5B2+0y^clyuSZx0y zR4G&|)cyj~XSzmAg^I2WQ2(AW?e5aQ>`~hrPVx;s^<$qs+24NsZw%IcQd5DgoX({BJ{ivU09*w zMi)IOqN@!QwYQmRa1N-RQ}RMFa|*dZ>WzoQY`mELPRw2uvvLFG6>vfr#ekmYz{f8Z-(r*~(5ZqcV zF)2_c#MBk^7bdz&=oKa#Xf{(E=+8_Epg%Dsg8sqo2GCbbM?haPS)kTv4^sr_3#LfWZl(^PT};uS z8m3O5&zWLC`c}(^L{~0aEd?NrsR(oyQwiuyrfHxKOr@YGrs<$Fm}Y?5GtC4=GR*?DW108j9c5YrI>J;9`k84n=rB`& zhAPq*YwD<~hu@@+%F#j}6%@uoOB3s(Vx3iZV2xBzBL-xRRPSSNa--;^!hYkdFi2*) zmn-c~*s0Y(nyKvg?}R$4DWruex$szrM=oI$l@pvwwC%C4{n`{ARc?TXY{HIn|TJ*?4+CaP|~dLzF=t6S@T z#J1}g)@b!Myr!otQ>E2yq|z#{Bbkk6eOC8W`{uz9QkZlb{jsywq?s_nZtaIN;^6X$ z(XrV5-9NZ8sape;N!^FnpdRU_ZT`2QE@_vK&l13|(Jj?U^$(^_id4F`2#jV1CWgGt zil)E>S15IBphBr_6n6xs*8di3l&XLsMJ%hON~!+AR7yPy*Gi+*T@ec{_QY0`_s;DSnP3oj*zn(G=qD!iO5M5HFWh@cN;@_u>;s~J>%1BNHD;irv zI>(Me+t>!JunGf9?6~iZP+PnMS=ku#`*s+xvawi{INlm>9w8JRKPRhxfhh_?vx z*{J}{Rnytj+;QLR@cC&CR)Z-^j<@&rv<9oD#6dgTN)5xwYOuN_P)E;J48j97SgGRK zv`hUYm00;-Yp`pDJ(?dyZ>`5F)>Kt;T8|a&iuUhn_G@Qq+JW9u(;Q`alkIVikDRU} ze^(s|eFXiT*r109XTmt-5p*0PWc_VWW@V~{^PdkqRXtYK;Q@NAPWKt7wOB!~owNo2 z1ifydwOIZ6LMiyCa_amfv{-4zI_ohUIZsVG@ONoBd=T~Icsf8yZLjg4r2{k@#lYW% zoJ{XPsd`$MRp<@^Y2@_qX(&;|a6DaBNrB_2r!l7pqNXGt#?nW??|1F^ylyOW^n{Xy zS{JEW*!>Txvuf~tM!my_Qc zv%gTbt!5K!d}_*j{(CD%5alGt>ob}uC%GNV(LwqQCyb@f2;O1Tn{ugBSBp!kt>~<` z5_au#;sE<;l~(2?9JK-}J^cMbYdO^4Q7cZXw1TYlR8(4}VJFJp(P6YwX=OW}N~_q@ zDy_@{-crQm*U;2d16n#bT|Zd#APMxZP-%53Hkt+LHO_)@$X)}|D5o*h1}z-g*zd4P zGn*G89ISH*kFB*_EoY@xSQ%Q@q}7U*UcqQ_Z3uLwNPlKG+uq|w$aRrS?5R7BrLA{lKy$0)eg@>cGsncKuEeOw(6TX%L?sArAVDaX2{7H`6 z#?OcGydHm&JzHNEWD_@oUdRZ+No2HL0mil|5l zm5Y@={m56VsHM{&LDQ3enKfmoEm@m#|CglcX@OtU(@N6xq}G}o zDJwN^du)_U4X*4dyVO5!F!fxVw1%g{tl^30n2z|vr!_pOg{mOU<0)x)sz0sa2^y;Y z4>dg1qXRox4Np+DcXAq@reh~|K!s|WLuzY<7=xQ3@x84 zo))oACs{$`Cy|S{(oBTR|A#a@LE+ZFtA;22RCKNdYIt%RM_Z+1Fa=WoR~nvDjgL=C z!&74fMoCQ?p4_-)ZfYIO{1r9T+vz->T4V9V(G&M7K^D7?H9Xamh9~SqitE18ujF&n z*HH~_Pa$1TYE+u4o%SV7EVBDGJDuwadaoiBJGqQ4tlQ~we7Tu!C)%LI8>jr6TwM2N z6zKQbC+ga~>bl6*wt5k4^I==1TQ>xCPyz?Jp&U$ugPc$fO5tEkC3E{^o}KnLKktdXaCF|2_I=V(&l()-96;wi2hn-YA#~pJb~^8QFP-;% zs6dNTTQKR|C+(?I2S(+D=l{~x$~470{qNr=1*RjY>P*P*L6MKssnA&^e;}x zCG?<>Av9NLtx&B{m$v3xBD7Ly zkI>ITF*xm+z@bl(bDtxH9vAw9(1$`bLSYbRs8Z5ZC>^BE+1v+GIkOR@a%MY7<;-Uw zl`~h#Y0nIyUkUwA=pCWWLO%$#mouI{K)pF`ZZZ3%&{IP5gsO$U7djiKLRH+Z5V{+r z;`S;?#m$DHr>a|NAoa%mLM1}43au8Z6QYx%>fKnOejw$u6LbT|=zg&+5qecO6Z%3ZLe6+z zBGgA{7)bei2WTM2w?J(FD6~xI3!w;{3RPjbR47g8ZlPyED!!k9RD6fvEU5Z!o}3DO zPH2(PHlag8=gVo&WTC-A4}p}=<3Sl5qvynSkMSQp zlZAdEG(qSop*KM4Yl}b+@Yl-4><6L4AoblYvE~~WgOr(F%ycokU(Cje*|TEyl9;U& zvvp$jqnQ0HW^FDuzk3--eV0zHs?d)Fsg%qEsggq{PgTh|08%CAXOJp6LoP9W$rXB5 zh)$!bZ)_E65IV2BX?ul`3#7s_1T>CQ@(wX85}F25KEEzz?}*t(G5bW!4vATq&3yNA zkowwHVwNdpSz`92m^~$CFNxU_FD^ot`0;Y+ec%}kSPo^SJ52g}O9Md$=8pGEhIJ z9o0bQ4o2kc%k>q%(B|WirKrMljhx z!IJ%$DH(JNQ$Nt%OmQdK{gP=GXbjVA&_hgfKo2s_1^t?7KIl=V1)zMU#h?jHOF@q?m4Wh@ zmV;mV84ZVoDwbrdvqqZ=_U4{l9rwPsmR!Qjcoj>T~&aD`KXIoQ<8 zhdgvTs_OQPvc;wrf2$R>i=gHB1-2RR%?U9|34Wn9s{lVYdHcPUTGW`^*_(txnr$Ymu!KR)r0*+LJxP0Y~{}f#b-Z zlQw!&)zt#^VRSCC4S5SGbOHUktW~&^;@%OEI;XMJS-*EMWXx%%j2VxRD5secWjs#9 zqbWbeBc#P?rnDH3kPWAqvSBs&<&q9h5*XZ(?%0OO?cWU0%*=o%OaQs7)b!t%W0Ve za{xmLpx-wwg8=$*)7%75G@GUqKy_=HlK@&#)9eIgfPMr}^O=@RPzC5k0Ns{pi3HFw znU+8RrH^TG1W?DAW+Q;c#I#s~8bDV9s3c5_A*cm(B7k1Nv}gjT`b+CT05yJTkp$4y zmli>AM4Q*vx(x}v>F2O+I&SC5ax|_?P5Ej3nPxlUi^k+Q~Erw1a6b=o6;-pzTZxK--uWgSIj)1%1p^2HL{39JHCK3bcu74QL}% zHE09VW>7VgeaNukj^U0Gdg0!T^n2@ZGaQ}4Hhlh((e}YXy8ylT0F9eIIgYJoDGy;> z-aEtf@-HHEW36uejD|b9ZftU6AY|u`q_|8gdI)t#TX^%?+QKK!@j4pj9L;NsJCMS1 z&nP(5KCfLWz7yV9S=bn>O{H3m z6om`OigutLL+gZAw1lBuZjZu4F%*H_*w77Jh9dRI{SSTAVa0Yzj}^VB_O-V|~kD)+GlENNyK| zJlmP_)%a-rUKJc2I~9z^A7AIl)rBXOxzU-}se?gYsBA*dl0iMoop;<$ZG*o7y8@(| z)oVbi0Ym)#w$#90#0_VL*ivJ9$%WK#wnHw>i`Djp+lRv-yqZK^L&?o1lxBD#e|B zgkv}gW3rBtSj?mIxdVfiL1RRMZmidFIc0`^@Dm-SDzk8RI~rbRQBg~za)vQB@>vSo zy%+}LPCjE`LV2yVa8iOj+v%B?44JoQDqU%o7Yz@^@wISl3{F^VN3`_#a=ox2a$KzL zeVMj)=!Vs8;0#MmqziYn6_!Wp9;>ec4nH8*jt?X8H~xEP{4tbY&9S&G$ACvrb!THA z$T-xUc1>pfK@@)(>JI#$s9ZtHb8u9=h0B@(h z9uzy3JU8UtKn2fOk78$*n&MeFfJT)J#g1wk?t4U0q)}WJjp8zC;FrNexjXNwP<3(> zq}u*k6$?^z?oyDdb3;LmJRF$}QbIjy+ICH(nzj$Lhv@)F4LyDasdq0&MyWS`FZ2^g zxjO<HJB z_gFa%zBAHo1YY&+ieIf2kA%OeXi_@VUC+KA0yYlx?eXb!_b4z@}mMV&U@G+bj6& zsUyCuu%VqcRUJO%G;$b41(XslYguEBPG{GHohD*0{fXBq%_JuN#5<9L*b_NueL-Z4 zPeh-{hu{~02c{RLVZdFFY}Ite4$0pr0#ZvXe->IU^raAKYEbT|wNsQTG*YMt zqWJcMAP}(B(`Gpv#z!fG%Z1=U}lhMS!|9MS?D2>HxZ!DH?P&QzuX& zQw-=TrmmnXnPNe-P-eB*KnYAVV2x)=0QF?@A!jT|LrZ21bx;_?<#y7GH|A=((LY8n zF3WAJ8)xf{H5K+D!yQ9u>ajS-?w2g-@o2eJi=VVyr~PZNanq#*F34&z(o3Y2*J1QCAR0zm(TlKm8&;R`anh>BY8{~=(;}E+64T4=b=vGn z8y8z>hnPw}Qp7&sjuv!+DV zlh&wkOpDN{r`uLETbmO2- z8^9qK^$xY!aU|cZ%|o;i!R0PQQ1^D2%5MZus&wPaR;g9I72{7DOyU0Gv|dRY$t&F( zQH&I@xZ~^LV=@Bc4+e^d8w0K6x?hpwcX`lD?&;Gh<=WKG$S-eNbUI}N4Q$g5Ju)5T zGs!PDsS9(aJgI+o5@@Q)z<+Lo|MM7MxcyO;_3^w(r| z2S~MxRI3uvbVgW4p!{6HG#M1bzAOh_$aFxcbGZ4&AW%29T_I-sK+2bZY8ZRmY6zPX zSHt)dR6}^e)sQ_y@x(7z!*vL=zZ#Mgs)p}c03oX33$Slp4GUo!ylk~9SVdRkqpho< zwd{Yt7E+w37V!j3Q|`Ywku^5ZrsWF-XVAB(DRM zc4cUb23(8LRh71AP^QbeO7}V%bT7|p9nv6Xx z_e@%){fR;oTkbmt*2+-F(Ya{p1PhnPRnTq*H69{q-%895+gPv@%Ca03X>s_?A}u6; zrVWA-mMqW;reA_ogUkucX{#HDn-X?A8t)+M*+?v2%m{9qw9&Dcwluplwep6wZMtuZjsGayl0IIvgAfL{3NT{56I++bQV zAlVog;~8LAImDTRA)0>#cqvF_4#i!K0Q-sU08kniDP3%7%&5kA4}(-^L`yp(FvU`O z+za=PZl0YPwBuwOT&EkmXu41X#GzG5F|DXOdMQlZw4(C?JZkO;NGj7tlzALolQwD{ z9f=N}?11dL$C05=E-!&MoFqvYYZ$YUPDvYePhly*u^2ktl_hB;sD?|PDWoPf>Yfz0 zX9;ai$Ldcw)^u`|t_e^+M$fRD0XwH>$t-fBJzJ@J9*T5(?u~YO#>eQM@v&~tLrD3@ zGGU&D=h2mg1@PX2@KzSm^vsU`jawnakI;$-Arx3b*9!;e5jenU@8{Br=fJ*TqRrvd zib<#j?4P6+M*<nN=5yoV^9cjt}5&wv4WcQ~=yfhqDDwe(@EpjjH4nOL*z z)(!7BSiO3GULw7Ee_juIbx7VNCw%n+Gs`H0a-*;^ms`p!bt{n3h<`>vJszz#DmX^+ z;jc~zvZ~XMfmA7-A#@h9=z3lQa)AahjR!T=>>XpP)+g_!iWgX%Qz31CzZ9NA zFyJ;`A@3<6(e`b}f{)YlK#VF+n9RD2?;VXFtCEljZ=5Isi4LvGVKg|5vhsc19FuF1 z(w6etm^qWQVw&+g3L7rbirIV2@Ueoo6$gO1kWO4*_}3>YrE6t;_B{1 z+MvE`i=4K;XcX*~1JJ-@&FQhB)LbWN(eRQ2o8vOpXwhz)PIn^YXdP2aC?E65KGW&> zWr5Z)eFjYDG=9uw&i4{LarSv*7Jjs%r|{S9Eu4eufvS+9dk1AEZS)5*H`kf``V!dW zK7<}_$$KE9Z~^`zxS_f`dqHF9{;rTb)fT$@#Ui2{sFFdwvMUGJ8yjhioMbSjbTR*oqHPI{(#jn5%6o`JVuz~u4)ZXD*5d|IV)x+FL z8&i|YQj>Nht#TC}4j*?(y7#6=wXlrQ!Cf2%ARzKbr?~Xh( zy}!3>IOIGI>yE;olky%?O%IivWL2QUv|`dui5i_e3GVXxt1?e6dP$L|CJionrR8jr2=XTtuyD-l2VP}lxF8XeSy8=KU}8b782zk+P6kqarA!% zAv5dMpW(vThA~1vM2?zY{$}D}#Lkw40%N;ITR7Bqbzc91!}sT1-*OQDM2k)fh%#_uBI?S)#~~Zr|lYlqU3dHtnmE` zHM&`r6#o*%gNmq^%R|#doXSg6>Ad}piX|{mjfvBMe2gQRQju4I^hylNTdKZoY=RA? zPVVagiSBn@*btF79nO1Y=XvpiG=CC5*WRraKZaldk?zGgKoTk;0`{i&wBk$(In1=x z#t+7_^6$D$-VGD8b?OT)JdDQaYI+^TS#Oq7T2U8z-Dw+Icp%K-8Hk|>8WTs!KnzBl zwqF1+9C6}4R?k3gpKgL0lYw?eali^DTvC?qtwS5p(DQ-40JfEuVwm$BB9iuNdV zhVDr%A=}ZO)Kauhb6~dE(YV=FI8aY=d7rLE4RRR+b-bCV7nZ%{@=T>lWu)32o~dP^ zCgni7*HeIRYSH0Z^i9#a_jml%(Sa}apQUwlmBM&F#u>BlT!!cQc&^5C8J=tKT#e^? zJQLUJg>_+hZ@@1^Whh038z=Hu>lg+H(LO7(zp3FVgp&c>+x;bLdakPX#<1cJ_94iV~+H32q(tiNIkwvPuZ?(12O5@k$bLgbatb1S*tPJ;bv41 zyDOSj&69Pib2NzwGJhG&ok7$5#f9*zt|9|;E87kOsjdQ#{(&*=6~Smd*A|1lCcO12 z7DG^seR);kkOOjT%(D=QXNCohCq%qtJ3Y9qPCL3Q@i9t7yVlKaF`mvrS<#J8_4v>9 zl#jH+$*{##E75p97Zy&VJbnZ9CX<)tlRN8HP6A^pzh$j=dOjp_TkDZl^x;1T|1iec zvVA4DjgI|CPwFJ8M<{6T0a}J!-g^*B&D&iS>f=cEU?1=CvI_Ewx({7OW!;B~2(e1q z>p)j?(o!#|lJ;h?rR46#wzrAxpFnCxLaCyBSqHj~-O+YS<;$m_ffrH@q3xFH4QRi1 z8>=9ke~)T0S0s|&O~;rL6{-0=+Bob$w=L7?J;6(0apR*%!Y_kc>c)^r{oeI@%IZl8 z*oBtYUbha4##5bDPdPlHi|!c|%}szRl3YHyT=FyZCRAeC1hW8tRB5NGDydh4R8;$m zEtT26oDh_V%GMt*vyjqZfmq%Yg<^WZVPF&ScO)-BZRCmTo571i@d1kHyyIBz$Vz*q7IgIvqyn7r^4?OV%m-o-&Kc#Ok4erce9Wa1M zsT!Y(deGkLb9xq0fh*oI3GY<~f3HQra@(eSH*tDhhorK)Gvhz7?pr+EO8N-(h zx3R$-5>~k|c1HJ!!9?RmnseozO(m|mRElPgm_3)5*LEvui)|}Zi!l4LO)6|YOa&UlcN*`5Fu>>Smg&?^6fcI!2P9x2 zGe{YV%lr&MNpY2*a}Zn{AF?N{!e5;(sLLc#JR~@XD7~2F#u76QN*gt>|_b zLjJ@fkM`(vAza|qZS>nTuE*ku9H*%e&zNyS&^tGa z(Sxw$7-2}&SdEohj?qwB(dhDXt(D+P9dk~@fqM*Es_H1 zNr4)LGKEIU?yEx*Aon7*DQ}}3bL?M6P#qXKQ0~11Lo=qFdq_yyo8ZsACt%HS-K64* z;R5oMHonu?swwv>wBolYSv+|q>E7WHl!GqoXDCZ);rKJ$TE06ns+u0dOlr%3p%^xp zdWOx=3u`0vlx5m9PF>HiS#Ik_xbIJ|-()S{6&Y1Uk6|W-16+m6BBH947udK_UK{So zo1>#7O}UgaV~5)_Y(Dw|nh-cCn)EFe(oBmW2jsKM+uzFHad~eFhe^20duy1>@3}jw zicIhXqSwhhepz}{l?$tn(>|mGwQg`URyb2W8#ha`2|0~!qN#LZ97b7!7RZ-LcL_{B zN&*ON%EcIAbB3G+kIW3AT{IywgtXTLW=O-ksET-@((UbqjR(llkJv>83zXJyp-VyT z#8Z}e9xriupD(}*ltF{Novw0d(d|;NSw+(>;9yK;(&qpM#`2^KCW$aX%0~~h!(f?62PB{(%k`=Ebhd2PGGnlMi)cB8x98gON3!6+?Tv835pDf& zrIcyYhQgi8TJ1Pi?(Dm6-1{yA`y+UlO=lN12>~U!CtM=oTn3k99j!H$WZIvE_&bx+ zZI5JW(N?XaMT;JUWYD9HL9re^7Bftnwr~&vQei7vm79ctwb>s30QaZ@Kj0l>P$V35 z@aXs{i`I=ZbPdZHXSkqOH*XsUF5N~21ZBdL7e_%vdLf9s1IOQ_aRF&jnMqQMl0)_Q zqMx}Q$7)l)K|*q|*^1GP*$Qu=L_U5iyb#u0Y?`&gv)HsnEBtHn39T?%F0RKndppF_ z83}D+6pBC9hyhgj7*xgdK!&(59P%Vo&zeYQR2kP>L8}9ZjEsPd3z-?e%;`y;i3%UX zSxDEwphKF4Y&>OO=D?Ru?8|Z#C-^d7`GTTDL7_1AHv`+>4D4bUM!-cI(?wf^ zYZkQ!F^&jP)CR%2 zby4fhrY(w^Mn3sFd|xcS!zY*f0D^_*Vlu~|!}=r3mnbr$bx#=g;|KZdiPM%-{!O?C z6_5sBoaFpqeIK0MTG6wn`8r=op!>&7^Yy+QAd)KdKU(H( z)9zpNukHB=oDzFmP&(AMQEGlWT~3=UX(n(k(;RdfO2lnD0|#f=EDm%YQv#?nQz9sa zsTZgVQ!?m$rhcHVOm@(POfBZmO;hKWQC@?{ceI5=db_;?AkAx9_(b!FeTW~`Qc8n6 zLo%DYwe=96hy4CQyv&hf@s64SAvpd8Pns>O8IT>MmH^zK%PyoDzY_!Q7&_ALm-STm9E zba~qP_Q3J`^oHX@^dFXZpELew@wa)$KRBZspVwWCKRChNbjavjyo%5BIy`5TvDQ_& z67?B}g1&p#4oiE_wXTC7ySuB?CA#8X5=O6~hZJGQ zQoL=6Kje)68bTCkZ%{|HTBTIF@txcFxz473aSkz5s!A%znXUCm0$2Ad`OH?+g5ibu zw$nJrpQ1RjwT6#uwS}?E7>49r<3F>NZv2E(T8KPOY;iu}@RoUUYmJ=T!rDEhol4P5 zoS07JyFA12g}Jr@m}5^W&T>U+Q~!d&CU!I6$c5uwv@ZD0a>u4!j)UJjG3U&8q^!`M zEQAxMQIi^vnN}^9$WyN=LvCorw8_3O#ZCw0nxZirj++(eh;bJ-Pjw_YKCO8j5x({C zL8bhMX394r~S(QsV9Mvj4(qPyuJ=*w7VU?@gmx6I|8>ENV(Z;s~iSJJfR3a{g|HQPQLk`W- zLe<|HFb+(Ma@8LA{N=35b#Q~b`)WQb!-oW`oKb6$97qeyyviK~hq|HJ_gHh!K+@o# zU^Kjge){Gmq!$c>rU)IKY=e54Qdmxj@_(EnFCo#JrHCpWPr?`}a&jf3>BuCN4sBsI zrktKAR1b$XZ! zq#y><&_oj5lT6v}xP$gn++Gon_f)S*D=+0ejeDjx&DopI1-%md-xgY2!#T4@LkvkaKB8Z{q__@4zs}2X%6vDOAh%CQOOKt#W3w_FbA8w#%-@yBx8&`9t? z$Kn@m3OZk)`Y`zh3ktthSWkZ!Jwv75?Zx3D%Hj6dsbvSH8__swq-p{V?9z=Ss0mci z`Q|WX!iSt`3Irh=_WQQJ#Dr?X^iU4?kaH*pe8@SJ13u&&$^q4cOPNW|BNNw*zUhb#Rat_YUzX2lvu0W##dO$!Sz>APDTfwTc%&@t4EN) z*aFic6@xlMr8yaAs5&Qf=Jx)cvK`-UeIB~?x82@%sA#}-w9BYFDev!%gX>6j`3fc~ z&C5uOFW{a^s1u<=<}&tE)}&(rMisXfE}al%=DStDKzl!_o4{Bk$5DyA0k-uYtcGt? zCvo$Dw%X;1_Oz|*5g-s4g*!t{347Jub*Skbkis-cE8uJGR)huhz%$8x0X z)257vh>b-CJPsml3OIF#&W-jh7a#-}6zPt;?t<15ECKH*g~>nkk2*lrQzwAbxTEE0V{D^I-lo(zk-RMxb;|91Ji$26FK@#xqDnob zVL~4)?UTrgBvutPrh$k{CI#=}QH}ZPdB^QX||j&ync>ma)ceFT76k1u-*JuSIEEz~h)xO*f z+QDXdpwF1_$KN7N7I)8x*^40cjhDrCK1lhp9He~t2&CGzYH_z8q-rhAKb7rxkeaRK zgH)(!pSH4n5u|2tFN^IOkn%+&=P~99E-aLaK7#SVE02G>R&H=xZ0&B+_&3&I^8y|BqD{UKOPhuz?KoGJ-KCOD!MeKvVtW%v zW!_+rN~SE3O7>jPkDPgrfmG5JfRwwZK}!1K7%M zVHVHhpJV?}W$M?_Z-ry{zP&QF&hlNjr80G&y&Dekr2bfN1N|JlWH|l&Ty_WjG+H3w zs7$pw=h9ERf+h45Wtk9$pGlU;4vm$?h4@HxrBXDG^iOeNzT9wprC*jrLU;fDncS~D>XQwGCdtjU-ofp>uqmudvDv@ z_IF#L)oMbN1dx|eK&2Jbs|i8HcSI!r?{}?p&YXE9gj;WKfB)b0(~>o3@3YT-ti9IS z>$Q>4E%NTJ=sA~1I$!h7;~X$>M0h&$2z$$;VsE(|&uJa7$0A08_1fTmhl54leIk0! z6OqpSLh@h6xwU4*E(aN@yS*w8Da^+HffEXU8#pV$FX&xN<%XIe@8AqEJW(U**j>WG z_iBPKLoJo5|38J@NwczK*#Lk@rp~0-*`R&;(#n5re z$~l|$>`uS4IV^ca`fLsp4E0Q=W5nuT8i`u35<_22o7gN<7b4>_F?5??=w%rg`g@4? zx#snLJXZ`A)Hv$IhGb?3#L#xZ&?Cf9&M0Pikds=BzU18Xund}3j!8Wh6g@H+6czg_ zF66cMCQx*zdCtf2z>A`v$9XH)R9=baAew_lQQB6+BX$ako~kG+v>Pb8&4Z$$rbEXY z_e=*jab|Ro)43jJ%AC{bTXd%Ec%Sb0OJTfz47d*Wo-|5|;RqZ0n^Mvf(CJ*0`!?wM zhfGO#0Z(zk@&}-wKY!n7J^)&6&+t&pFr5}jQxW~sFBMpTPUW28{6+Ba%wqAo(bWGW zm-;QfpU&;ohRwu0={D@#c}H;~0a*pRhcBecO2YNeCW}h(`;p4;?*}2r6mAtJ)jb?w z3*s$raM-`nRcx!K1zU9zbjnQ69UI>gH)^k1r)stYGiREjZ){jT)4gb=8NO(%) z602ryqPD+N+^{uepIZ21Q;U5*}V%1bJxOq;4LR@b>V= zIr287#k98%z)31>tgV&TLzZo$pzCkP6l0D56KHN7-KeB7q!osA`v<&IAL?sC;@sMz zo+)TtqP><6Fcf+>#k&h6dZWJcc_<)}x1v5Vy$DW-U$_A?+&+245(8^$MOQwTm|oaj z586Gs&{$cI7o*AgLWCevhtMr5fh@KahqN5C-s1T`C83;zZbp-L6gqO0iYEn&MjLD5 zAICI=68=EEdK|1OKcN&;(EVpjjq+5@-3!MMn&ijy>lnh;d(JuW;W#$f|hlvKb5 zgg<7mg6m;Iqe48gE%ta(h4tbF(wW0<316)%~-hsW(bhak}Tr;D-?t$-de)&RhRUv9DWdC zEZ=ZU7u{b0v>G_Bs*&#iQXSS00I8DX-`&#R13Gy*^<;l^OP>dncP5{`4xs%`LbRM~ zd-TWF_6$JU9uzZ;ApP10Zt2+|N7~Al0O>b=3rN55m|J=_ScA6w z2|(IP2#|ia7Lb1J7C_qGeSoyRK0w;uNHA+H{Q@9;m(~Vtc^M#W<(qEl_W{}3K(~~4 zEodvHkS+8Z3@p-b+z3cZ9|NQ<{~3_B@**JpZZ{zPngO9v-l#$ z(jNlSZ~Vk9?Es{$oC!~3{l*+X`i%xa!v&w8aG^7BXx8@51~f``z`20*Ycl{H9!^logr`V=&f%|Ep$q+0JK~1^lCs_dIKQsU#nZM1CWk#i(BtM-O>Yqbd;~V zrKdwNp{?8jNJqI2koM{kK>FQB0qJ+20;F$@hyF_IT>?nITM0<(&2mex0i@r(-Ys1P zNLzUokbd_f!)b34ApP!TfV90Cfb35%YONW46Xe-wN z((gVF=mS}q=K(2|qGlYi^|vs#K9zc^G;E3Brb-}d*|?b14e<{dSN59L*C~SWGNj-U zrt3j=gyC;S;h6!i4)|&mgv8>}a{`?;LhCNahr&T<>Kb4GN&=DKAdRiT6g^do3lJCE zy&F{J;VL`|z6%dln4imBccf3F=&x``nuSK;gpuLMqFy+3!e}0-g193MR6*R42C5+L zNCQ=%6GlIMfb=2mNcwt~JCZ!^J{y$Y+7jGUxy5xwvN+_3uX6xbBzborS0qn`+^$HT z3h<}Mm|k~G`ib1GNS+pQyCQiiQ2q}a;GN4j4GmWP6U z$-2IH?^!e;U6I>M3Azz%jra0U-H0>#-no@Qe3NXSC73i;Qp(_640`qw*AY1IdhTN2 zFL6_vsyigZB_;ylVz!{zcj=f|Cz@n-bNCd2jb_ zlm^ptQb!pq9!rp!=$qsWzW4M@j4K-uQo?Wu`sA4-4u%qqn%5`gJEU31z#3@uoJ-f~ z1+;d$`JCETbDjR0|4zrtn)K&3KRw0!bG1{xeyZc+RyHGp$A-OtqW}j zwEP@;mb~dcE5ZKM_AYjzt6gY`3w_sx{@_ASx)42rl#8DUNPB-SARW;^0#f3Mv!p>oLCI`Rhqt(0&4GoWUH=!YE_=$C-*7U(yCRtQ9USCc?Y z1$mc14*~j;KrMjo73fhwNr5^5eN~{x0a*fV2lN$zo&=N-Xg8o$0__2Gk3dMsPNxE( zFgg$J!CV$dzs0-Nd{Dq<`|DE-)|F6XZn>j!sk2At}C(Iv{Z*2}%kMs3*p^o@td@EI% ziP!$jR?PUJ{KhdsEU>jX-hR1Vx8atmBkh8Fp;edld@93n9QjM0X!KiK(!9pm7}SVi z@Hk9~8SFAEw=DTcAA~YUVmPD-1B0lRs2+#5(X2GzGZX`)F#@#e7oIAIQ>MbG+`R<( zfz`QibB5mk{LP~FKd37IloMXke|kcFvXFPNF|Yf1%sna0f{+|w;b|BO{^e+%hJz&z zcAwxhAL%?`TczQG@?`X!pDKws;CLE}BOxqjvpw#Ha5RIr;gr+}ZOb+-5wK`*Xx8RX z=ZkbRd@D7=P|`ojJ4E#;gwrMy0L`>zv-$MlKHJ5`^8hKnU*O_mm0MZ|=w(sqMBUQ) zfYcxDc0dQEbSWU+A0oek@|g z?o}&M?6=xpwdzuPXJ7$Q-tjFon$JRi&E&1)tm*2SL@q}gRqv8Ynx`CRS|M<7Jyn_g zoF5XkfFpFO-4sg9&&&T3OeO!qr`;l{*ogi*qG|?4^r-bg&)N9r=v>fsseK_6(dD~% zm>O5ZRI4UW`x@*JliQMs);1l4?HO!)(#l9M4u-M|mha(kLiv~5!%@t}v}O3pUKg5= zEZE0{-m1at54{yJbD{SSUBo;Ei=~LkxJ*S%YIhX%E_F-8fD|z!Zs{F>6fwnVlMOD-1n-1bVeO=UE^3v9|vUOx`@Plr^8kxw3BC{_5Ad_+heQl6>g6oo{TaZhTC z+>^QyBrTE{p7dYDNm(k18C01W4ju{x-=#0xKn_@M5_jKB_Zw1mN)l>eJ1M@{zvR}} zsP&&I+=Ukwi1g1~BApr>4L4ysz#5WV*xDejf)*Z|)_3@VJwoV)AR6)P{1+IG?Y(KA zrxCK;`JxDPk3wwW=s>hDG!ybZjAU?QXGRO)^$XBLHR33c>cCijDY=$kBDY)+P2P~6 z;{x9A5hj%Df&^TO1Q(_8)>6!4_a=;4nOx{krGP~aew7rU|6C04_m5b6dd`*J02%}( zKn5Du0}J=(?u^(TSk4FdkeDR#2=lAG^~*H z#$x>Yg=bw1=oNt`1JVr~0;Jm(j?eZp@;l{TpLRSlxIQGt(7F zWfd(DEkWMl3H*FL{(dBNO#1~=mf2gt4!V^ivF&*E%l=9wwCh*7OOYgGIRYSF`7Z@P zFv=_O1I=m!wt^qH(m>J~Fvi6RhccRrKsBsbN*?7E?a;c&Aq=7OUaiZ6*bNU>;h%@8 zb_qTmd{YTS`qk|3d!n_3FMA1twb==Uu#Pys=iG~MJ^zz%K)Ro&I>-2;u+uvacfJnLNCC z<5DA%C=B3oiB-$lJOUOJ>#189cg;+aN|gcFG2g}InRY2h6XdQ=ai;H zM;aUClQhf5U&xa>*1L9I&(CaN+)`=O*JAtAI1|t4g3NV`9PujfhRFcUyS zrzxqRZKMLbF7xOU5k}1HD)ZY6yrVhUE(N5_EDT7QZ3K`qvuoYbPXl^SSoRHW=`y#p z3D99FUFnwoz%Bg=AZ_{QZt3scQZi~SZFNgu0;FtmB34*gY!r~P(^-JD&vOB3Pvd~} zjpqTiOJ9BmWKg?3J$3ZicwmC+P`mMsJk-s*W)z(+>`*r+8M$bAa2s!g+446@67pvo z5Ya97<2Jxg*@sM?U|o8JE)v)98rciw8d?c-2qUWurjkPPBOe12y-0oyeMy3%p zB|G^vY}++VSj{sz_AC>$R-pZIzzSmFAE*Vf@DEf$Ec^pipq;IsJ~$SBeLc&@paIM*-zdPX~v$gta)-fXHVGCD!_=D!`ScnL~dihr$TOH zzo$ZOW4~0$ZS0q##4m_VcFvK9X&{Fe37HU%naEzqti^X@s!Z#P&X7F`0S+dDah&;qh_}?&-SN59m?)=8rtPL=uO6G;6nZHiXdZ3Pp5?^8( z9vAu~t1bQ{EHSy>Jgz&AuO${EqitW~h;}HX@e_#?8qIiL0khg|%k5u{o|mo@p2<7c zMz!ws$?*|h2~cXE-;r{ar2-r#Uiu|(w>96i7qoWy!il&fz)A-!h$Gd>qE5Q_XcKuWLo0Q$r^{O(>r zlLUGZ&_sdgw*7H|4gk7DAYKT6u|T{Keu6-}5WYen@y8OP4P)UWg36Jy%596!2I_1s zhus2LBrD=98J2_T#t=O$wEK<|G?}OK%<^J6&-~?mBipOXFss-O+ii3|7xW(s%j{)p z8Tw&?cOp^dmv)rbHc#P4}pnxYtYwr1OqxGVKWmPs2@c*C3h~x82_o zsA{j1ubS;rUFJCceihS(!Vvq%Dw#}2m0>h@@prrjtn&S;#e48C^2k$&s9zn2#*C74 zsxF^fGtwnz#2IM^X{^*9!d}^PgAC|TLIPTYT`OBMgEmi!_YNdBr#{;dvF13RTn_~c zlyC@$`xz%CS$ICWUXYkE&P-ya*!OrX1UcRggfKV^S8mwi5MkA8^n-BeRinC)FrtBm zxD)v$)Ovq3r5F0;sQB|9AQhNS02ZpiR02r1;%R_%15%}>Z+sq*ib>o=wy*)OMx3p9 zQ|!EJpr?mL{=a-%>@B!0Hu-QlzEV^1A{oofkhN#!D-EZw=0#)4t4+_$oz>S?`R6-d zw(k2Rs*{7f`%L`#;m&jv+ElpPfVgaZnRVXT{qy0xs^#9?R6T6n%UVLpt^1Z1Q&j%) zLi{n-{_sZpi3E|CsvMhwnc9Y+rnT8QAj0uS&G(R>;QRA}{j0pb;s;YP#}J?3HUv4n zOVe06o1Y0rn% zd^bmJ`quaDg*jQK#^d|-g8N;aGvdVWlV4S`|9`A|NH9p)qlBq zedQ`QbZT6uuhhuGiGLvmiFaHG^jtLNt-P#H=U{v<3>%R>P3sjI#eCED75ZH4A!gV@zx@nzIV3(b!|QTBOt@7hZjp6 zY%*Tm$jEeUdzNxUqNX(F*@Alf6`?HfK@r{gua)n?2gTt)4cCR8j=DLemrS*d7V6b% zw*c1@*q7g+n=7K+=y@^%N`0n?K=Np@QOLm`oTI+-FJYqw8k0wDEdVcLz|AVQJKzEe znN+)%GmmN;2K!h2N40?Rj%k3#!pQ7RZ}UYw3!KSk6h}41=X&>zjexd^;I|c!@|^;# zor<13q^bBwqntuFxlqD|{?&yxy3k85loCfrfp}@lV*m{~m%=44H`JDyd{v z)apX}TqqyHrM_{73)KM9Z$tr&kZ;`Tmfq_^|L#ItUFcO8I??a6e1Qv@E_5Rxo$=cM zscNJFkj~!~2q2XM7zU(r!0CXrTH zfC>cK3uw4NF9I4SP#2(~0v!P47l! z2z|{?4PFm%dt1Eia-_0ys$J4EBjwW-G5*xiQ^MB8rwcz@oJ^o~Nk~=DszR(s59X* z1PlBpbe~*NH&UiulBY0CMuG=U$>o`5Arnvoue4fR7EOK(-vpT-j(?Hm{cdh*35`i5 z>irBJ{S}chSMdW`+8mGGY@iCFHyfye=*M~CSNPaoAVV(-P)n%Rvxz%N!3c1x~o(j3uWl|xx zx=f0^KK}!z>4hxfkQk%65oF&~7yleFF`Ifya-%hZlj2hl3d01whnJjfb?7E!mR@zc z#4R=Ac8OG?-6QdhQ1I}v%8H;0q2S5jAptRc~)XwhO;KI35|b2akK(uX-cUoW3X zAWTd*L`DFGE#gB@`mKQ~NFdBW6(kU5pb8QQGf)L?h<^GY$04^gD-cFn?XJg$2nP>B zD8y;#O4%J7V%9U!|**sB-Q+yTwRH0v(>Sof^)E8!|W+_5eJPk&{P5XL=zi>;7=} zgxXff8lVDmW#a#y5Sg3Nf0YX9J*hI|D=u^*&_Nb^_8_dkxTc&*3Off_$j;DqLu`3pKhBuZYxo9WL~?3!MR( zQA=w9=_tPo=sWU_9{{>fAcn|%TOfwWd`lpP$b3^EhRA$FAcn|%T_A?YtQLqNG7kvE z5Sbqd#1NSu3d9hZ`vqc%%nt-&h|E6<#1NV93&aqa?+KJHE~=I_@|mu*`^b+6+BoW| zXf(fy25=E3@nVi!5^A8$_ z#y`k!IIii?agD>^(lDg2m6z<{TFH2uR2^CIO0WagkpgJTnty;t@%{M?%j5fpH{2FK zG|E_cztoyF#Q60Ne9`^Rm+_do&8k0Qoxuy8l7@v$+*vi*Xt?1>3$7O7Eq+QIU zZm6f$RLF%Wu(mM+kTlu@2|&Kmvs8qa}Qw}S13>G%~Dr~v1{o*TfA_84<7uwz|m*lPzseG3?nLeJo)U14y@dp$8DYfo7 zh>=B*cn4SKn#r$Gr)#fr<1ApIu`-ErXg65RTaGK+lQYcFx(D!FUN94qSxRj#GpVrv zon~5JSY%RBj9IU__YNCt=HQC9I$Y7_?F6rAbCK%|Iom~o&zU=VBEIL$%D*(gs`6%c zi0XE0h8a!X!>%xbV}ykpMAz0`0_5x9;mQ|D6xdU7P420PBqjs|&$=to+$Cs7G2~J} zfBpyRL#6;y44LPaE&vo*&eG4hrAypWo|w*+(zsjtZMT%$?R+WyC%5!LK*P>td(XPi z0YGEU;xnd2QHXwz_VE;uUNQFoAno(d0BOs=1f+cye6%e+awfwp0WlJ}ouH`Qn-p62 zm3~TTOM{~X?qIie^=-#d^e*S(Jhi{s<>m@ZW#3(Q>_Wvq5@OwkC(RY@=vI?c8nn&C z(~6{yUdq@vs{mF1)m%ZRn7iz%OP)c$8b(4NP^7i+b*Z(=KMGk#CL*+=~CN=WmRC z9tLq;2im%0Otf+v67wS5Ct}pTZU%RnJNBDCWK7#>8dG-mAO$^QUe`w|+l{+7YqQbH zU3ej4R3C~Mzm|rjQB06DI}aF>b6zkLYo0@m-I$8hgDku2Bi#>yCqlu0%K`V>B(XuTYe zqB@z{NJ0810bOt=k^T_YQlXPUp>@OXpradx_oeBE`34}Z_e=K~oa(O*+4n%uNsg=w zF~~Med!;{`rb=C&YdsOrl}8qhrer;0(#;DRheea0F?*^*%wY#v7BKvqyo+I4Z_B)~ ztl|k=H@~BN97%C%sJ{d8nH?O{ceC|+yL*H!9!+WyXiX; zt?XNTDZ-_>XcAOrth^VUb6UKO;!ljxx2eEe9^65_x$f5?6p>*lkeHmab>kM`a!;XE zy?|5ZJD9k60oeA$Xk~BXP_y!2LnLR{jg@s++@AZeYn-Oc%JwSbTNJqO##0-e>_^?V zxJdD7K;)syLdF477IGmV<(H(6iU5pmRs{GzfK-;D^Y2FmWf-QatcH<_T6#AiMU-#5 zkf6tGLYq^jCj8{S?7 z8f`ScgD=%rR$pS=bAaEpW=#Z27|qOlH*HeMcH^F>0Ff3eU7L{NV*i-N#Ws-^4TgzL zvu1BEK;?10(~~8qM{zOVOcQEHP~3>`{mO%j$0uv^;l>Br5p987yu*mo1Gm0r(q~(W zjAlfaTlyM?N0MLcGkxzxEQtG-%eH~uSNCI!LHgKfkm0{c9N`L#u%|*b={W(rmDr0brV@)~yPB0<+^)S1)6%wUyZt45yMCJoID0nDO8BCyaMXmy zQZe$H_uaLlYeZ{X6xXgL==v73Bxz3#lDUdQH5`K&3ygfhQPs87hve2q zs#@)P9Jkvy*Fg(fUsKV11;&g7&TFY17pI`q3uP>iupD)BS1CPul~G5pQgrkx1p`%q zR(!o%j*fOXZbBT3TTox4_Y}5y@3K1^vt>_J$ZB4}!A5+oeS0Go^ci`hLQlC6H=;fx(NpL`7XrJpTb>8#RGi*?dCT2W>In3WHWzxyg^t6P z)Y5S-G{c2%aiL~FW2EI(fX))=tANfFXf>eG0`c10GX!FCr_%-c0ie?adH~QUfht_& z%&D=^L=*)8p?L8xR^>N>7s-i_j2;KL2TM_EPKvWOoeXQ|=2W|xlRn-ExAqyToOHu* z%FX1gB62avSX1CYkK>nVodl}e2Ms6A&~2xoe=|gYxd6~NN+|tS0y5>j|W) zfklg1Y;YoSLnE4-P!+qjg}Zi#Y`gt-ez)yF<9(z6U!5s+BnuMFSHSkx6v5LfW~z$4 zYX_=g@7jT?*t>S1D)z1&sEWO7b63GQctvkPYS((k!a=sxlVcC~-{~mTje0hq69rvs z0qHj3>M8V97y7jeJ>f!cyHIM&GImzqCB~j2Er$V}ED#iLc_jidN@}D)IPBz|B+zU? z#R36;^NIxeBp^c|K?u!xSOaegS=WiO*fvV(BQAA)T}9!P%=NbOVF5D=r{+KhEhcjt zpqPwpfMPPW0g8#0Ig6E-6;5@QR*A7Jt2}INqpOH+jT-FF^J=UPJN@HoW6cma-{*&| zR!qYv>?~k^bw%Ob5k{pv5BXvQUJc5wL>=9Lb~StdVf!_q-blBet>kYA6p3b)X)Sjf zYu>|Flr#`8At>FnlTUiAJGhHWAHw6*j-?6ij#*!&td&PHcR&83Qw>Y`&rJSPhRfHD zmA}GsYx6q%+t;}_Ic?NA8#=qNKxV}@b*?|~j zeM$vC2Iz62Vl>hy6(qIP{Wb#-GcWt{cnD^!pD*vXE=28uK6}fBMq>x)GX#IieF3d@ zP%!RhAsn|>u213Te=E+uTYxgkRmesT`Kah_Q+*45NWL7^X5^o9M$EonN z^@CeT0+k5*h`V9>LWz9NSdmfW4;V!lrBOV@D4tp*69C3nhTszU6U8i`;xM)U)9x}` zhtUu!>YkSD*t+93^0%OP`+&MDsNMr{tUB2S1NMGxWu;_Xl^!(mau{?2lt0F^=(?WqtMFwtoM7#*U`J*lp%9k+O6fp;V?m#< zXSGDA(Coq)fDsScCai8bQ+~8r=wS7k+#1OJcN%Nv|Aok4BJ<*^t9f-+`| z+%PL-U1n`-uMt`c;b4?mv8nZC2v`)U@+u~Og?9DsQIU!cJavD9eBviQyE*&ON?e9@uEo7K*Nr9~U{9E4Wm{ua zD1Qw0dw62)=sU_o7Sy;WaOGBGEVIkc#05VH=9D?uf#Yqc!vA%6yTTn}bhxs0(X(l& zjZGNa>mk^49ql=iUJ)CVa!&!I>?#820uc|U15$Ri1CWXg5um6-%p9Z8WlfwvAmM|SYOKa>?2;R)GGaSpAn#QBnVl+iF08w7p4V8?m&=vSl!@_QD z4ksRDT5Nby+rqc zuR|7%YI<-fUhG5NW%%1zz^n>Xgvp2O<{SSBOX4vjsM-r*U}7-ih6WXJbzj%Fp|+!| z0+ZO`ZK?rrv{iZicmw>*wC0%L15hi@aqRoBC(WQeDGKdo6!s(>+a^X~)WNmxmEDcU zMUwtX>!brnAnx$NeUCcW`%I# zt_8yNx<~V2@YRObO(-!PYo&TBsA;l2WVLs{0}~HVf{H*F1G-QU=o5exfvyFl+OmHD zR41hMX&34NR4dPz7fqo6Ag#x9gKE%L15*9kPXMWY?RW08E50Uy3 zH`=bojkXI>Cyju^WN;{&{0KUL=kM7EbJJQ$-@n>%zu5vaTs$U6+A%eZqtr(L@9zP9%4TCZmA~Vki^uBFdGPlgO`u zi)F05o*%&{dVT_KhM0By%mX*Oklm_KZg!FO2m5N6JVogh*2~Z zz5Ry#Dh@RnMN=LyiX*G>_%}vz=mGq0!SCPT_jdel!SB8Jy&b;~;y2-gk$6{rjrChxk>Y#Bc*`am)nPIu6voH0QozSOfd{EK{4yJCTGQ}YX#@-m(xG}n7%H$ zQf}e<lk*p$c-gJa3%2H%kA_b9I znF%-%h68h5#1ZMKTtz%cca)w|jD+ub%0znNG4ql$sI9vVP>L5obLyBZ{`TESQQQB~ zZYVvo5s3mUO@TlZL8w?_nuAb@X}fJiQkAMKGQNQg2jU#q{a82hmLaGBD~@xP5k=YbLIGz)Zxx8%@mrdE+f` z-WSa=wvwFjno>V$UKt9nI9ON`qUWpFXcVvf4ZfI=f92$pxc_&2@NHVa9D7V+WecCl zJBj-rmGZ~&Z&U@=Sc@D`BG!{(&RooTEQWjH62A*fgmEvLcqp*f87&X&edrz>M;op% zicU0&uEsvR12_D{aE^@zZZwL&%}*J{vjaE~y<;@*K<#?tw$^&n_)=%Rv3PeueZ=_E zh8TP^kAoCyH2;Pb@Ms${Ug<@U%za>cGN6A;%|v699gs>=v{ZZ(nF(Pb1}`7OQ+&AQ zH^$nUyw)!NJ2iPm!;n7MGGcGRo!hF}-MViW2DV^DYX^r8Di-gBK4ciCctz`X^Yi5q zdem@2#M<=-K7h`o=Va+#F}ermxIgk~#YWuDgis~U!h3$6@y$_;SZG3-pp8%{Gnrfs zdtWqBSH#5F0FdhZHXNH*uEJw8Q3su)1D0AVoA5AESB899<*q@-Og1&)O``}jSTzX6 zRZT__^aaHxbOz8D6jwcf-H)n5EQh~EdH%@n->v;=v0 zR>ZSM;yY9!ptK0H(=$~1T~qOj*)Dj*cn`^C^@Y_oqX;K(*N3fK4o~`AiP8KZ>R=X` z5^+=1YKJ=o5=vOH@0u2n8Ct9xW3V+_HLG~Sz`_ceL$75fYgY3S&JOY^!ezL>`R4@m zgajV+5gb#D=KFl)CN)hm-wF9K8<}5ltJU^yhH?rvgb@=qmqWsx=}jd2OPR@HAxu@D z6=%a_VQbX-0wyjURjgL7_wiV7T!Dne9x01W-#dCjTHAH0cgv>_W2(5!tAIT2Aw``f zL+fU8O_NuRQnF#yY=;}=BisQ+HNOGRGUNMNForIpC`nXBUPw6d)gWz9^(9u#!9;aA zObl5hrW!87f}_ zu9Co@>>yVhT`-!zjACSKH<}Xw5OiYt;_ROpe~?W>W>0UHU1og0XnBfkKG@& z%UPRM=Jr#?ic8<@Bd2AtdpuoMu1Ajl#^Ex~o*`5K8O^VwEue6X^)|gvn}3R*sr{rb zv92GG<4em9n90doP!}sJ&6~bmk;<0PI#9ek&ljN6J*hE*Ivf=)xiu~SB-7|H6ZoSK zaXOwJ7z| zMMaQgPQQ-})BtFrK+S+I5h#EStKRfaoE}sfo=jcSs>;q(s}_vnvnQ6F0>Jl zzPk&Mz8eNNQ1it!K#}Df(M&*UzPQ0Hy%kVYN*BAOD*$OL-*ur)fb<)OT&RASQ?JQ| z+5xFa<39nZnd5c$*~j4KV_Vj2VF*lOh=pAE1>uz3< zlY)R|Ufkn{Bf`b?VdFLtZbA>2;${96$rPzA5It}y9_3ZM1L$HxZ-k8^Og4Mj5GV_y zOLQ-@Z94Jg3-THxDJ?aO>x1^GjKe*FFH&|$+1>H*w1WXOha;PXS8-ar0JAb?lQ%sE0B9-`LEFwcx$ z0Io4N*ouW(XjZ<5ti4gAZXct0a0lKHq%tXEcWM?wQazYcRc9T8Axzm&5nxb&P zn8|hgH!OX;y8t=&F+uR9GMc}EZi+wE*H|QTm4~O8p{C^*k23CA1qewlYLe4?Bdz;~ zFb-tp53#Lc#D->kBxY@iKye*}wPt6`T8~v(W+o%0Z-$K9Mi;+n+;%)%ON#1^TOp6t z+*EJ8v70dd!g1KRZGFA5==FSKcAIf^2gJm-dgDlIy>VzW9`DV^Kl}2HYquNMZVVao zcHsXTjk5JdNvm=44z-G0p;i%Vdb04_=t^F!@^K@6*74Xt)}u&BCziOo<5-OtazWv) znMm;ISaKdN4(##INS5r1SRa_JJwp&*G(9=`hh|?}ELr$HV@y?wb6`T3)mq^(heOt^ z!=cW-_Q#qgRG_t%k;hjN&PLu-@=IIINBN$Aqkr z$JEr2%$9)k+ATl2U2ZM+T2|L%9AX)HyV7EpRKd}=ZCD5(9}Sq=#}-CP2=#3g1pS^M=${2aksLx0G<|(-Y@K4<7C0T)dU^)7?gdspj*k&zcRLvS zCNTC<<7)oC73g{d=z3_6jnaJZ#%|-<9mchr2gcesCc?(rCyn@xAmW0x>lJJNMX>f7 zVC~^Z@K7Xq4Y2k#VD0GVVoWyk+K^}vF_pyH_E@syk2d|{q)xGBR~!yo)rUKu$IqK^ z;d19*plgk?8_96R`+s9X-@=er&uKwVas>y4f?X$6WnDN z{pg~9;1+RjMs^pG^C+W>g28MO@xRpt12oyW7uZ^gv712J98Dk0Y8rU_8u0k1z~eAP z9dZg2q7MmttP-pCe?T2UJMOdbx!NiT)>uA#v}`h zbs%Y%g{(XL)z<6_dh4w41&8ab!VBu~3w!Z}&KE*f8?dJH<<6IgMM%umxmPG&=e|(q z^MXvZE03HDs zO%I{8pB%R98+Lu%)wj>7?+z`uR--#YN_2K!+7g`m|?H3ADcyB*Jsx2kg zX8e{wd44SU*+40qh$ZhR(r&(Gtb7<~(9PgLnQz{(7o%m`IuZ+h5KDdzP&YSV4UVCh z;ZFuI#ghXe9N0L?=W>$Izlgt_BJRfa_cl2V0l|b4vyrY*hyrb8df!fRo zuJz6@Yi|qfc+aUlEOUBmy|c^OJ3~7TIkjuECbu?oZfo7CbzdsMtd??$iz4w?u)W$n zY=XAJiDDFIoFF12A>;70!Ly&U1*6Hrq|5Hd6YV|h{#UXr$Hwm6lOmTdWX-NTT$7uA zZuQVl%zWqG9lc%(CCCKMpQ2FuM2Kj}Dyal<$U&b5)9R3{Mun2Hvwn0o7rhxwvycZe zJ1gXr?G~V2o19{#KuBTv)>g87YrSl8hna91fO4pov9qRlX{t_!EgO6tiw=gp`12ll z0QB?x8fysUfq|zf_xDsX@Qx=b@0qNx|Hc*#wgR%jZvnj9iEl> zsi_;~<+u8W&mSR*2gW!y&))E3QC|SUgizh`&n{ zSN?$2^NK5%$gZ1Wi!1OTv&9uZRD-WjT!DWer1X1TafL?*FfVKNd52@@V8{yLFSL`J znF4Zi=U!{G4~K(WH$nJMq0}~zkam(|a}WQm+RgV5;@yLTd+SAcYcJn=3vazOxVH|- zTU~ss7jO02Z>9AQ9ot40!@j-c^s)*wNAcklD1A(>!NnCkrOKR=6I_x7FILz|RoNGuAiXiq$%TtML zOX?s_12~kT3Z6RTRok>3myw~ee94%%RZE2bM*}4o8z|!Sg(2(uA`GpBqbdYXA78{_ z;b(X}j!)@h16AbkFs3#Pi@(;(*iyr?<&RO$XxHQ8TWw5=21c_hGFo;^228PJt2-P# ziUtBw3&V9Ql{u9}?vYC4>`FjWyQOkgVx#ag#o$I^aHBCe?8UnR9NcIQu9Snr&+zzB z&Z-eRxp4gr4j)L3&okSTWgt3=iCQUp*}~4U(dyjax8{&M9U87b zpHmh~{l~N1VC1Yhx_j9B*HVT2*yb5Bo z>~M5{ke@cU9)Th=E2y@G6bO+i`+GU@?vqNJbQCeQ{{a z_cC(ML|R|=voPlS0P=1$xSxAo&2<;vct8O|FT*udYK<{i({9w zL#!>bAO5eHT9s2z^3d_YPi=Cv2&<9GJx2T=-sM3ObQrwT48kF`7lfF+Gn$-5-f0Hk zk0!6Rd1uM4)KOm*R7lb>`avqF9G`L^Zw2@!G%=7@DVO1hj|sIpFtygk9Q?!Gj#Gt$ zPT9>Cz(K2pgAU>~VWCs@@-?u~YGI*+cujcdlrFvo9$GCt6tAWA(1X}hUA&%R^H9#c zGv_ju45iEYauu+?xL9pz}jxiyrRY_jX^O zD|9j4tO{M14o2vzhgTDXu2>MF7j&Ud)Thqd+_0_yR^k=Fwu2zF8P`5T5e#~wr=dcE z%IFEBtc_YDqh!5t@-t$_EuM=RfC)EU{+fjTdgZUnfJ4-Rf~Vs&M3qr2ImMO1OkCyx z87$`85(&QIieTX!@)zZf=SBY76ohCfGz)()x58XB@0YO5s@?jn=7`&-k{JJmSY``kf9n3W92G<&gT!95tcC*FegsTxsHxaUqszoFMKb&! z64@aTf*zQrXwWW?B;@VMwg(K@Qil@7>7)H)f)RsyOXPm{;RSe@8?FuS|$v`mB;^~eE#zERuR0cyC zB(SR>fz5{mHop{uazrk2%gjNgtWiJ!eo=crSC| z!hBT(t&L`KO%q5AdLK)Efpv-hB934Tk4s~^i1zrlvzTLl665Q__^^NHgWoKFi!0DI zARc01ii!u^@g0=$acF$~Eqp}RkRP_cR4Z!vHhy!DGq4OSdXdj%38}8YXfx6503J(u z7e|;~4(?Q33$je*)%T7?-okdrjg7bk8$#F8Xyqm&eodCV#Wak_!oLq9mmil-MBGAAT^7}~HE0Qv*In>+gRYTc?PzEl?+o}MdVN$xGF#fpz#qYC z>~oo4*46nXl$u}u$}ztn`E~XL1Dug_hFM@wF{|gAV^+~gW{q64%o=Zz;@82($9eV= zZ$}Vt6oXlEtuxP%mxQQ`#PGo@6d@q;dWEl$2w$V`w;87hV6$8SjEO6SasD|5%{mej z9$o(Gp!`L&%w(Xt!%`=dDZ)Uf?n#rt2KAzF(5Ww`$zX$eQCR5I18GuN_KVz1+`gFn zDdeGYMx1K%(Bm`Zu%8_eIqZH=g}j*WDdnA~Km_xMW7*$e`_7)lcl^)sYY@w9f$X8~ znP}D($Uf={WTRCey9!z`YB{I|Ti;7nSVUAEJ8P&1+t~1_bdhX_BQFc(bQEHRh;$ca zn6Lnlfv2G$iyTyG>wH4wH^I_O^@Zc(JMR+Z=(mO3?A!i%d^8hbB>t4!5^ z=ZAmUUx-w=b0!k}vq)owf3WR$R`_&V9fp*!SAtbR1_24e;g+0IR9{uQttr^BA!}1+ z!5+Mg4V>eZz19>d$a>{Pyz*AgSGuezQjqn^0lY$OZ+6EHT2s=r;o4mrZ_XCk%Q2n7 zOuuA*Umxd)cq3Esw&gzsgN99eQ&#iTbZxVyKqm1H8c$P(-`4JrphY-r*b1;3D8P2A z0!-yCYQSbw119noHDJ%vDG1)K)PDt$DDg`Wy5M2TAoK<}odw@8MO9uM z+$6Tj3mhzsO>_GMYzd1SN|au?>J)MhY|@qrunqB5aJZBpCJmKnIV7!=zKdu10uHB; zhxsCorv&4H&g;K0p3(Y&QS6L84qJ_ZYjac@LC3(wJ-Uu``AVjuj1`;_NY7Qq;t*{T zhSg>zeoypVDIFIFG>QWn%>k8iK;WNsuAa+Lat&&MM7d=zkSMoO1M@6nn1i#`LRC8X z*{c}!tdMCBE`weo;!Xzy?bh|<9DNoCRK@{~%UBbR4>n=dfpMG@Fit4NsOq9QHv{|9 zX5Ce23ICE=SA~`{K$%$8XmN1vwC}aoMg}OARHKDTskIT-pY}cX$od0JY35(ZW zU?UGg04R@IUzKB0v~r^npEi(~1qbMED7ToQ#a3=beK=(ugqXz*Ey^wIX>RPhAYA3# z)vDV%`c6n2>;L@RO6msNG;u6*Yb&*4RBHY7MVtHC`YdM31bcKusz~tt7_?i;{Yv0d zD%?+W5z75WKj_+DA$5)reU`O})*$kM4(tG%|Ec{DMxPKEpqKw?!5+RXd@k!9v;!Ma zj(1+r3fhO%EhsA_I!y^?Zq{D46tv)%#Jdztm1S|6z1 zLDYMf^$reP@2!Y$q<<+i9;;Hr=a{P>aXvI`K`uH{0`3p@eTe+3-q6WUXXfR z$-M&6wf231XjoLQVA`qGQ}|v$`i*b1RO)>nkba{Wax{Iehvt3%1P3zUrmfE&D0Lu- zr4k2WI|K?2!br|$OXe^Pxb{J72k0jpgej^oqvvR;it6(ysv|L(7_1$$Ap~|f)_nv6 zfdA;O8sBb;?;+prXmBUR_nDB&#DKj+TLDPKoj1H1z(FK zLn65&NyzOmSl<~ah_t>sB+|EGYSRCER1xcRktBf;0o^fC;T$}kURg9w7s5C_8^-CB zfDWNZY@8|~ZOtK{Q(d@TX_THl z-YcIU({OT#=Q2>}RWihLh;l;w)e0@v?UV>e@tg-pIbetgNby`v;I5oV@m$U$8R9v| zGm7JZ9Xd)o^z89o@%)&^Gk|pNnbrQKb5EuIrE{9@?SoY=>73&!<9HnD+#Uf(=L+W> zWu|bRj(YrvJLeQ2WjfP^^G!lF-C7jRGggMeIaelKIL}y_E-qc#_b8m(hydZ7=H_2O zICppe)o?d*|1C8wY*+BeBC#otAz_U_RzS0{TndeJ&M!ge-WT)1m3gn9?>AwaMt!}} z;4M&$2A@~C`;JnI-Po>lB+0o~J!1Dj2;mvT^sG6n<#{G;%BE+{SZ(HnP3K`IZN6$V zr)#=9TeX<11DLFjLPE(sS&UjNP4jD9f=Q!m7$?TdrB1_h*s8XGi7_xE7TkeE+_1>+ z_k%otC1yQGkFc2Uv1ssFSfU`-ech{|054DtleN`mS6fmfTvpa*R~C=ew%o1H$*rhg z@;c>ciE^v#H^{80Udnz$nN{{1y>pmJPKL!G|i`nQ8Agh%0|}#Qt50DAeG5J4^c;DGLO83oS;|PxAl}6 zYi_>@m~X7P30f&60ac%>kgv<(d@u-d*^vAY*|rukvZpi(|G*}EA{N|dCU9|%$njqR z_j62v2x=*SW{NkOETG~F;_GtkuLdN8byZa10CYIl9OfQ6J!Jg@x6#>Td1sU5oegSp zwx3~Q3v7h}l2%sHHt(vX(rJ%WRb`P&5oe@WUtNEkZ$^so4F}zK=nl!HO;2W|*j`<_ zRw`9Rm|k5`*qU2t%`LK)mf$E}N{v)0HBzP2NR^gYRgOYxAbOBF2H|>~N@>>FjTZ zwAPghnMl#h8B|E6(bc+4hBqUN-_^P7ZpH+RWVAK6)LI(gNT`Y`r7EhFs;JU{Rpn@+ z1{z7uB}uWnx(r=ZYBp2Mt}a~@m8z0rb#*3L0cMR{n@h%}14FM9MmGbQjpvTD=9XJa zC%A~jF~FPZ5uz}MN5xd>I1aDesw#uh$w4!2QnXH;P>STFI0IjRmWbDwz?wm^;H~{Y@Zw>JIHD?Kw!w_)(MvbW8?Nh3_7+W)KK7V zu;87P#@&zu6DieS8cMzf_C|Xhxtgs=N@r-3xf3UICr-vroGilU|2+(iM!9r`=A9qP z0%T}nev>55vC6GR{Pr}iw!sb3<4v+DuC{X!Tn#!SII#TxnV)U_Q25!_MKDUqnd`dH zeBQJ)0UJ`86|?Xl`d2Qk49&qA9Y^)|j5W)a;do9&pBQh)Uw8&aE%+(vaUF;Bkgr#m z6+%9tW5HQ{Jra{ft@W$1oz&ThXLZNZoVqMfj=`MOBTRAmM;x?mn{B5NUktoRoz>fL zL7`gMh%b^>JZ7~a!7Y9E;j-A}k0kH#<3@uak>uwKnDsU};XY(_eTqldyH|&-@P&uX zd8gd?7`j%=&w++N|?C>c7bP6nrx4 zcUiSrhj-M6Q$+YeianY24_dWp>O|=zXi^vU-UVV&!?ViJ0_Im-0NDwQfk#0ZcWpWIK)00xWmM+*1t67q zJd%zk$8l~Z>|ZxTZ#vZtRRB_agJ+bDZ@&vPp>d#`gK9C{UPsLkU8Z_tK?!iU5}F}k zn>Vxp$X0TiC$xc{bwD`rtP|ak<5-tlH?%e_uHn0?8#)<1QK{R;H|n$*)ey1XiUi+K z-O#HD$MkPEp=yAXjmQRg(3kulSCtJ(>oi+4lnQOI-~*oF7~nY8xjfZztYZVzC&M#y zP_KzsfJv`_)7}!*_26C;p8%6S0jJr~4LQC>o=?^f*!iI zx)PEw9kX|B*%y_qWw7*EJj@z>Z>&Q{!Q=2$U_DDyX)~|_d zLi<0tzadshzrwa$%om&?a_o334J{tm!SS6s&K7=B2v4i?q?FQSv#<;!#sBBQAUv-e zBZV-YYcbuCa{AoCmSd>=;f@sF<6tM`80qfRNcZ$NQp)r?886yZoRPxpRK<;#HhEnf zn@o=Qh2i6w1AR*dYO9^D6M;OXZsMMI^-aule$4tN1~J?LS2{Rwr1ZlGUQ&TPeI7AY z&`=QhZ7({^{&)xux0GG1bIKFF&Mh(B_AgPcEK{iTX}7*at>9oH%8N_T?Ben{o(Y zZboQpq|&${l38Zyr2c|uDxckzTPHQgRZ5i(LMcT>)IuBz94@MIzegYSDqX0+Pg6Rn z<*JiHzCF=NW$U9>V^fShR?a%s<*Z||xjdW|x+}~cj)A2g0&7L5xupL+ymf5f|)0I{EL0sZtA;&QvqCU<<)mMWGR^+-bzWn#Ne60J9nE`Du*xFN0vL?n(3i zHO{*8L*uMF7yT)9#Jrx$v5Ub!Q_3-T72Lwqcnyx4Os@%wAFz4nAsTez8$?;QApTe{ z)h0K>zyrfh1TG`gbs&%f_b=RmByS_G%bDaYrR{he3Y-{{EnbJTi=yM$<+a>_ej#rq zQaMoHaa@MJNSz?rcvKvK)$PkwJXPK9{H}CArPYPm}XlW zRo}tY!W1s9g^>GYhm@$3N994&g;>=dZr+OUqr(Ke_$TF}a(hlx5>RO6X+KA%b5 zo8A!y{afghZF4ch>dkdMpt<7B^;tmb&2+6E z4k*gpB;UoWHC7iwypi?MX#Vj~M_I>wmB7-Ep**i9ITP5vNun)~0dVDyA!YKMuo`9X z+(J%R01iq=tzEI;lY+`m#;jI1H6So}^hv>(@%z(zcr;K@9a_0rSH|6%V z&4_<+oS^y%90tO5UDLxNYymhr#gf+n)ptaapA0y-zS*?iCAvp~Z%s{(wp??16PsX) z4TN%696pB3fTCtak~IxD1YYR_Ne>jZ{1t;w3@9)9G8>YVKYL(PKSd!1<7>VukRb=1cbRto}smGWOP~6M>ZgvIE zC=XCu)t0{v=>Uh}8}y?fhKBk!36lN@aMXI%I1k!$AS;P}UM#pLg{fnzu)e88mVuGL z)`3$48n_EPDY?$j~vB=2api-UO9_vZcB$=bHZVly#PMJwYgFSZt|qMN>3F?BSc*< z)gK4EJyODftwqi*_vQ7yN5J^wYic(dD^41!d{@Sw>Jfu4LV5zFF;m{ z+FVHjod!Ginh2?sB!PFNCkd2sd-GYz1K>0d{l9W>`aV!g@JZnG9?8OEm7LLkNQb~+C6z~d)UAS+%*UO;VIFvLy^s80&LIK=ne z%ymo(SO9z4U8SVihvo98W-;W@5b@sP(HnE(f%kygoBxk=<8noP%WqByrLy4fF@ z97LNi6M2aY8WmcJMm?kw6c(sQ${4b?(0D$G1c3e0OS>9=gI%UdpQnB(Ifj$ z|K}M>uJnJ7B;XxO8o@;RKVI1w$L-yesl@|*e%nWYNb1;kB_I`|5piLMUC`N5#p!WS zbZRKZlYsQu+aSQ6!{UI#cB!jEwO|9#-~$-AHNdpXR+Uon7OK5kC<@58PfVB(3BJb= zViA1OO!x!hNDH^WQA`dXheVmZ*(D^_B_!4*Al4;F44IXQbWrpg#5w}Vwq`8gH=tzh^&K4gGL6^7odEZJ$`fS4Pww^_G>bxYKO(J_KsW|Lnl77^T zj|=3hS&4gKJ)K=fsgh8LR2?Y%Kas+J&RGxoqwugq`V&hs(g1XxSsH?mM|pPIhx4$@ zOs@wsWhT7KL)H@V(ky?k|L1A_U7+>UpgoRB4&(5PNOD!&pl z4;vMz{An3f{zq7w{;2#OrSi{$%KwK;Z zf|PQP7m>_wy9lV0BG{v-4&k-m@dM@5VQ^1}k_(~VI25y9rvlHk_EU#vT2E7fHxJis z=eWtnQH@YcX+jgUnJqwe?v)Qv;^s|8U&m8NCjx)9SPPBoe;1(nPxIcBkG~r?8+?}vc$lX)CfEj|5qXxu@ za%;?bfm!-T;`+alZn?Lbn}F2T)q4vsN{Z%L9-d7FZKq)p+ z2x3#I+?a4z+KmZPXlq6u109T3VnHgw_aPbG3#Tf3{3E@Zk=%2Tc2Pnr6^!1C66AsA z%fKg~8QBH=?4!onX#PGh6quQz5J{owYGaL!pSZLmP?W9>5&Xmf+;dSvhBgGM>ojGE z{64BK1X#Mt(S@W?m3fdI0m_T2KP9R{U4LT~={%y=Q?cZ&e&FnkWZ-cM`!kZaBr(MI z6={z+2%Fk}(;$8#O>K=;BifK@-is3~Zz}CfWe5ZkCb9R*o$^Q!7b5L=G?_<@$T2mU zmgioCk#Imzn7xExS0hT1ew)nFCPvSdY>;yllMvfD}m*z zM4tjkmFRVVREa(Vkjnp!fK=8$6-cGB{uo#OU+>EQBJigLM_=7Y z9Cx3izhtNO=1Y#V4_->^9QcP5Zz-9*HSi3{-{|^!y0}vzms`w&$@Xb+ow`K*U%w9I z_F3CfZant%3BBP23)+N+7Ci##rOY{~4$k+LcVpt9`B0zJ#1mgW=aRs)~FzGEVbdyD8Znh*Kk6}IHtlH3s1%|F^T!5?nrMY&M z&4LZQ($gQ15mHPb9psSN0q48$Z6&qhS#yTt|7vGcP1Px59UTOGU^s}ZD(crdj^ooW zh-H$YWHU#l!pS(Q(Hs^08KeFHN9DwlVa56#mECVNZmZH$Do_U*wo`ROyo8NtFW} zbB-!$@nzpgxwGo#l?0L0eio$MTF(IiPC4DYVIuA(EsQ#5bxW+79Zbz2YLEYola-7v zsTmphX{|rD8RV2Mg_W{tgUK&H`YMZ>9Wv}P513Oygn z3a1{O>C7q!=5Kt-;crKODRp&)%ir))TIW1V>E&-~ z)gpfbFIo&)s#%x{U0TgxJChTW#~@Qq9@AnuuC1AkJFj_XAQ!J&n+mzMHM7^Yr9!Uf z;Y%u+rQBPWLWa_#yhjS-f!>L^F3ogr)r|$$94Gv`0u)-s9NW!xpSrh#K|0~qEnu9n zp7IXhnde=GaU(G>AcKp8Mk zI2J$+U^o3ajY1Ma0Ta~_*^C`8AE(jvJG_51K(m8rMbnDezCwg`AAmo9>|CLanL&r2hB0h!!~J4dFkVw#}%+zz%VC? zVQQmxWD;w5(!fF%hppZmu=+#}0Yd`@m;VnjOqtpHGt2?NlFr;eR#g@50>0T7s2b!S z33h-SPoV1mU)bae3p}yM+>VcOT%1ifXbW*F^1iuk z-V&BE@)gz-JBG=jAPV(15G}`x3!_j+b3R3JVH1VgY0b~wnDP{b+8sopwocDRmKH{# zj_e;_r`1+&9Sic?U$llziB;nB95_+$sVqWaMn z(NHz=$FTyvGC2>7%<%kbbOz-tgd4=({e!JK`-6#DCy zsXA8z+zU#8r*b90XP6S;Up<}@;6Jlf)0fqc_G}&S>ZQN2h1ILJk-9Ti3;d?)#zPbX zUrdB+t{C{`*$W;Hih*lrb1u(LdRRuHc?#9tN1<#}4E$Owex?}s^8_@QV&Jdo(wBe@ zhRUWD48xYg`4z3C|D43+MDsgNvvN$DiM*Q|@n)HTUpD8j6K+xq+`7UOx5D;F2m!SS z5;(&AZ831XS;niyp8fAqIC=j2R90T?Tp1i5B4YBuMoybr;MnwMstK@CT^?m7Z_syr!U{*}Cp2ZsQ&_e%7K8LeK4}psjiwfb^w$>s z=9W);B0Gy}z$~qQ;Ix?$25o2Lbu%L&#kB$}yNBR3n@}@99|F9|_-;Lprarr3TA35G z=QkJAYLY8R%HhQPZA^#!lk?xyypTKNrq;rFahaE4c3#p2^Wvo2aSM2MZj!;=yqb!= ztO;@bGK4KNA;%F*>b7=8`TvHgOv<4fCflhYOY3jD=kN)XeratUQSh^cwM}0HYZVNF zK3DFU7)j8&#(!IPOjM2l6uy-IUdrE1ZppZ;35EMGEWQjZp?rZNZ!S>e%>_i>T!4hA z;L+m>l|0@u${HbPH?~W4eocf;?#xckI3^r2cV?HO9tn1ld6xePkln_g)*Vs)7qr~g zZb3|OjT4J*n3kD2c8?Hy><-%TvG4LXHTHe;H6mbC@}XOv5Cg0UGyqmj_Pe-*DG0YK z8N<0l^iM%3#UOEx1LH`o7wI?vbnHMMwmtp)Zp7yMCdECiqa3Yu5nt*N;5? zvb&BC@3oYtdfsg72*0Kjynmf!_m6f-yZ}8SVu2VZ8``8* zPhS4-4wn}g!$`GO|Av4T81WARV(GL9!;KsrP7gx(PjK)4n%o;%`Vle^`SpQ-9z^cS z(Sv7F)R{W7I#iHx*Y%^+o*=&sIWujgRLVt!+cbMD5Eg&e`C|341`}aQt5HCb-oA*jM@!I5n(4T(&u#6A>i_o$ zjm^X-bls51q$cd-Z+rs2)y&KZAJU#VVF!QfCcMj;x(V;|chQ7B78kz`E~?DzR>l$c z$+iH>1;_^)8iee_P7PZ4nn&IsWuTdfv-cl16Hw+YhMybwQ+}xr{^Y_K9R85tjoq*9 zD?q05JJ?i9<(eGP?#~Ac`(Nxy!0R4hEYJ+K@-snR7vk56+UYi5l6Cxgd5axJ9uHF!_86?Q*l2Oj z;-tkui$@-Goq2-zMjj)dw-{LiL3}kwC}jJGF4i=^Qa|S~j9hD-@X$j-cm}73h7JlBjgWLB zvg{G@@Nw|)M|8o`!k<&$5$=#=Z=v!k2@hAMVl9;P^T|Z6A~~!&D&+(;?^DEC#Yd7O zA$JV*Lk`~DeLe4CFsceI>W8RHZVsd&5kUz=!aa+2yZJQV5!xkVhf@C5l)u;YyTCk4 zfOGuaUrdD?pAh!zpnWqZkQ^yBK?HCD1aLxxd}SuJ+Mn1YqJ1LJKI9LPKeSSIb&5;9 zCn{$U(h$8o85GsKPH|A zO?&FUM3HR@5_ryI?ZmN8^RkI=GM}D5LnRi9DL)`)>V}_X8{DTPv$gJvGF+Fby5Sd*EL8Y{-K&!Ym)4mvHczy`tl6f zG6Xct;nG5|Y(3>ern^!Ks<&sNmE& zSohC~P?F2!d47AdR;2%o7G-Wl=GNo8M_7_tk0Z1m>qclj){oG7oH;`4anT5^$J7YX z{kjp7OX4F~k1BTmH)cK7OT3s_F*}eyG$7U;7#`Hls%l#hXHbCmE-$vhP?!PmRqyC< zA$Thf1Mg-@*rVh;oFS;8(AZ3uKzjsWv#4nzw8+LhGw&NL(G)Nffc{nzGIxn+%uA4` zRbgW_vE7;tyy=EQdj9)n8kFss?0?!;JtN62nMoD8UR{&@nw^jQgs28%P>xX>FhnLV z5Si>RC#rPgH!7lLUNkjqWjk(4DZQ<_NN9Ifm$a0#cFt6H}p$vhdkye9U?q>?%9F4Ta1B3a2S zsqzT^dPum0opI1ZqJuVX&mDvQ?-n&Y$ApyRw%ZVaXEKgnrDguj6hUlewQrG&VWNtE zfFa{#Tf%@*e~U@IfY@iUFC>+gY;V$UNyc^&l${54UKuIsxAaZ)+i|S?ajg7ziW;5} zC=3=cvRv}fO$#Q8-ee=+hu~l`GR)o%9sL7twpK&U%$#@-Us@;_Ifs^9zaS8oU*CRQ z#L!5^re;bY6$?5~2hfpG{w5O%*j+5e>~C_kuuX|qV+W*|^(ThPy7t}Cg~U+Cd1&GB zO2>UP@s~N_*sE%D(yfLjvQu6vD>QM#4LG}ttTt9AWfiWa@IKe?l*9?EM;@M%Nu7U4 z$Vlo{F|ub1*63eI5nmXLA~tbSde7BpXUcefu|Ge8Z}S{O|BNXn;cqsTjyJy@_d7%j z5kn*#Z{SyV8rhhB?=VLu-%N`nWnGhSye>Z|i7@XkO4l6;R2z zp_26@kd8$kt#o`G^l_S@kENoIee(;v{bvz&&kn%NFb;?J$p+ph2k`#iMjId77CzYY*r+(@@S7lv5N^lrx^EoT8Sp z@+_hPZu3_RKRY(foPHS1ELfItpD-DMWy(c4CEJl>73$d;dpfsFz@;IF#7BoPZBR}v zlYx}8!0{JkZ6@5f93BQQ+d;Sstc=Xe@8Iv-CD{s}A2OA8u8hBCP=|;}3miHHFKB+J z{zjAjU{f+id@(}S#+1LRU<6PQN`ZWLbRnS)e1880vJ$m+;Q#cpWBy+)SFfsP0eHR+ zGW#F+47}KDIVnI8TMxt}6dSstP|QMrp=U=A$>bXaVCZ%0L~+MS6hPFkS1y%B$-Lvmw{k=87=F@nnBA7wuVN>;pH|-$`v+>sIblzax0lp05Zwlou*sl4>9EW+qAH% zE8(>9hm=DgQ+NWFYG^?iF8(d2=^jo%e?QF+H@u-_4gSkX{iSMFCl$`Di$rNAR9y+X z*>^~n;%VcLTqL+gFtIt`l{_mKN$X$eB7v}f%D535?#5GXcG9J)Rypa75xNyqNxHjI zu@{rEu6_cUx@SEk7X?&DT{F{>-c}UeG;E`rEse6XMIMs<#zRsj4@s(wnSs69KxS$_ z8DF-17J^SAdo7y1b$J*V{dWta&s!Lg0{%sh?HV!c_b&pY0#r2Mk_SUMWO7+Ka^Mn} zFgY5KfuCltlsp)1fd>N+nyego4~AfR3=ali8)?DT)DLX`M08jxc8CPhcY3kc0UL4& zsAl0+j4$Bg8ma2qALM;gTCm@VH5-`4hml%!?Ud~Bk_0>j+x&K8kVl@Fnn|5%tVgF> z*!?=-mKJu}VrFp*6J~d@*=d&FB8h*mTruC|eZa{fUCzzU=*Y*0 zw*O*!dy%w?w;3K|@z*jyhH1vwNu2I^9|q(+yeU3x6VOP6Utuq~|AOnU<52^Sm*c}) zVP%uE!-rubjTzAjDlBXM@R2(6qJ%A-!J0q(44rvBcV-uG9FmBwwq^$VEdkVeIr4_p z9ViFiCX0h8Jyv}rWnNAa2a)<1@sKqR35y>e=q6x04Bi=s!Rd) z!`6oj@c~u{{;q#PMFIj8F(4#dNS=?G%AhfNOitnlXq(?;>_-4vA-n*V{{pwhhrLY5 zz!!^L1LFA=w*$Md9K z!TD^#Y>z!a*Vn`d(lGn}y;%2gu9s(X>&0}uaM3WAEE=#QSTz4(wHm7n+La^9Yqh}} zX;~AF_P!XQ*$t)Uj><&fONH}5MS3rlJY2DegT z;K|1l$V>ekX?k4r8N2+ZVH?c4*v^VW=s31B4cR2NIZ(QVPyJnuW5B2WuEsGrXPUmJ zPl}u!!PRIMpRkIl0;^bvU=@=GR-wv{Vetv0y34fY1UY4yltV)#4|N<+0W;-32;eht zfBnE*DmJeDctCS(xa6IT7)1s+8Fj|MCGTX^nH*e>B(u)gWhA_g28-*diblX<)|W&b5=K@0DzeLhfFv^L@3<#zKqvVBMC!H2f$97`? z{9=rFIifz)r0qAW}TV%7>i zg_czoJX%&+P^v}CG!_Bt0`_6|f#!A}mE!~!vUzsJ*7b@(GKB!sWX(j$AA z%-+`hzC~6ZoKPJ}|MgUiI=I;1s8WoTC#M@(tCu9;LL<)xV+gkz!y!cAqxs+g`zUMm z&b#1^h3EH-2^!mH;V}ZOHS)NHRtJ1+E*vEQFVy?|gQDl>TdViFKx$P+Rb%G1w$`s% zvp06yM0hKM{$^nIhNH#QGCzu>Ki{v`sD&GNUnm>`(hcr zFUIJ7vCKXf2PuXj{t{A=Ee&_t77uR*G2&s0k;KER-Eg~=4+9^RM8=#CUIre9pf@WB~j|4mEUp^JM$6eCG#NNdbleI#Q}N{9wmtZCj;KMz_@%2iKFbVn-IQRBZ* zFh5ZBRWQKe;(~o4JbeM&$Dkf!ZXu{P*4*C`VftHeB9yB7V8JvmwjYD>uTq$hVy_o` z&zQgb;S&pOIepN=eNb{xmYfox1smIV6ykg=OHR&+WAxlv?yMmAxJK3+8+?4@Nl+L? zNPeA$f{&fRjp|-|ZMQ}Ow9%u3z{(){SizdV)F?AQJ7)Cpudg0dU^zVccttsHjBQDb z?`1U+db}tIJ@)d1fcTg%rm_jo%Vt&Ly^H%pGAE5er8qqHc!W6{#2$xq;Qao!t2^Qq zGlJOTnYq~G*(Ub*>f-9g-V+xiV|``Dpk4NB<|q_;|MsKHhCYi*4}n z&xfgJiJJ&DxEhJ{;e7Bh5lH=lk8dU$uL(Y$iZj^+A1j@u2|m73m%gO25`26I%=6RUvZkh13*kN*E_h6#C}Qt*%~DqHkpR=v50*+T>DvzkZBSU`3A}~t6`gY zYf;`%G=G~ykKg2vf|S3G#pqjWKX7h$xAG^+Iv~>G!M=R0>lRG2IqeRbSiWh;mDKjY z#(j{kXCqLwXGs9iO0mTG#4>;qUOuw;P^##+nhRp`s%>QPy7<`*a}46-B8zL3=0q{_ zaSZ^YV z%OyUV_`sZX?zrHsz`{YSb4J)46z)nbN{Q;0`!?imX5WiRWCAdUz(vklO6g%JA~)JU{oRMi2NqMBQSDnszc z!qjlbp}H!9Y%rz%nPV%j2y3y;Zf5G1ygtvt*1Rgufi(TY0)}mPa3XW%hi>M|R}-13 zZzVF9@8s@XPV@P2(QXN`#yK9*Vr2Y81S>F@Foit)?Rfj=m6bsZt5`}_vB((NwXkDI z80e>~Yrs}&BN1U-h75v;%wSu>oBa0lR*Yhueuw#O@mKRZY{QgnbfEyqr-^HKVi+y9tamADf1Y+HfaDcEOe)4dk|S4OAvX_`Zc$@O83P z++Hoh=b=Ba0H4Alp4HfDs#ZJcOX=72Y-tnrJt6)Sf4JkS24Ju+$;8Zr+n{u-MCn#R z=~{Sh{)^pZJZO4Ov~jNIT5vfQ9r8{bO$&m_UNWNdxXU>o&`wkG@?3I7BC zHpQQn8^Lp39N9DO&oYKVWu6rwUNZO!>QTK~6R&f&ytixbQH;lzb>jnNS@@F&JYwLxm=1jr>v9HXg3wu7Hf&a&4e&&vrkTZCGM9e{wtyg8!4@G27$ZDEJOEGb%;CvV zkwgOmQzjl6Q+5za9KbSIU&js4$9Oc4Asg}-vf5&ZqF!GYxFH#974-_`P}J+S{V`;- zVP|>yRQS@G!87WLpGq8`qTOa}m0VZ6xD@Qbb zkVA&UgY^3ojUX~QPc#TlYR-e}4I+C3aOLOYxZ(9LJUkv@ZjaOSLq!@78l~Ei=Vk;8 z6Rdgz)Xv1JMuJ$?@Y*0$HIZ@cX1LeA-VPh3dWa}hS6|6RsY-%$>Aek8)rLW9WV@f1 z4O7)lH)~}3cUso8ww2bvFx4+3Y}jX~(z0Qym(jA%K10iTdfpq7YlYA#?77dPpA<#~ zDkM<(KZBJ)ipszY0QE2yJFO3Ev3rUZxFw670tahZDOl{pqPEn;o<)ZJ5dSs-Ab!CJ$#e@*rIZk&?!){RnydwKimngUMzhcvOR> z@q(5HPtJeISm4R2a;-7MRnqaV-D=W=#f=G$&=CUe;>3-x{~&7gVyW{s%F%yE*^On3 zn20V^mvE4rXMsEs4x^uezCAwjzbS zxByv6*RKt!7V))_K}6>~h;7h)KZ;~B%Veej+^YcY?ErT=z`Y*ePTQHtTn})sLXyG! z{$R>ij1yfk@D*r{S*T;r^JxR)GaG z2#!<}oNVFQ`7Z<6s7-7agoGL#qt4c%icw~T6@-Etca}oI>DoB?af0~JBz7&&l%4;} z7n;%BTNswX6tAj%!32hLXMY}t%o56^YDk%x9U2jj&3{EO190^qA^jXh zoGbWv1@P*_@WE1-b+klPL|rU#A@^ffah|r!ETApyhm)>s7%#+SbYV5H zf>6(6%4tvZi)K+}Izm|t(WwbPZ=le}h=-qO1bLDleN_nt@^aho)rf7YZ5gXo^Iv3Y zP0qr=@IUW3=*{mKdD4H!n*0sDStQ%CAv0PI>IlRJDq@HY7G)6|N>yFUT8^Kar!H~- z1xaol$Zrzdh>Ik&Q+MPAw{vrX+qp(?TTARs=9Vo10lM6%e-Iwl$W+$IbzKl1*2s0c z8kT5Mp*zN$e>mOAks3m&7E~8N(9oSGMyKLv!^=#+1NfQlNphT$=?_4hl*SZo=}!)n zWxQe#0%UVnSBm@)>nDGT$WI3Uiiv55g&j!ZQq`G~8aV?MIIER?Q%&|()||}WthsXI zqS1#JD!hgG_r3*9_zwX7Mgz)5K2-3)Ke9Zrn(B?9W46U9y(ru;MuyM zRmc4N=8Zlw#oL9bL<-Uo!bI#8lq&`^<-Z@qU>XW>Axg1J|1o@ba}M>*@IeJ zDHtTn{pBiLf_{s^K9}B=B|fY`H!ldgJmwN#0bs} zzA}-CU?NEcv~AUV6UkmJe(MD*pnqjLmCdlynDT;HcjS zi(H?Ni_FZzgd0ReW@cf*4PqfPv$_V2g0vxz@k|2aM9r)5%q%Pu*Y3>B!hrjE8E|F7 zG$0rTNRmEbq0>ve*p5{8TO~v}*7#dB_&@-~VtpITw}DmKV1pYA<^9yT7=VpUZD4TY zn?XeAEAe43nGjJtzT1pNcN50kAh;2m&`h{80#-qAN2(;RdK^LJG;TBu&Rq&JP*m9>EGmO)Gu3;qLfxIfhk|3B0)|aC}qI578 z5GKdUMfM1$dVayzlCkH6y^`)mS^Sj(EEpXXe=#oxv5OlIFhn}Id7BVeJZF?a=Kz&| z)gP75po5m}_eGsFFi}=D_Sg}e@i2i^!;NM{jj(BoSxl7EPJ=VCinE!?177APBxppc zg&R_tIh{c)V?Ji_9!-B?%%c1mIe;XyQ>k*(fr>)VqH@eCXz|^+e*r5)?u^^Z2Z>aa zOjU_Qg zOX3{>XQB^7z$6C)hAj{|+q#V~#lo(RvmL|8 ztp*5w0T3jN;%HI18obBrY$XsRDw(y43MB}fyvK&X@j7`6Wr({mL>fq>s@5;~3NE#K zjg7cbz|r{8u7(%5crWW86Ikd|3*2ezkRKxJj8wIL{_iww1l&3axNIaAhUZH!UvIY7 z2i8VDXXV?=Xj%F8o3t!BRy@KW;egfxFfp(%LPv5bkx>Y8Rjr(+XL*g4cH3zoX%y}N zl?P87Kx3=q#Jj?5(|TU@lmiq%n8g-=*PRJbL{Csw*(T))?2HNs?B~NP3|{zs&WUa$ z*Ch-D)@Pl1;per-Gg2%k-YLN{#t;C0g*QygP-hoDW&!!EQT`{&t`jK#1;$1j?`MsT z1eo<18|ASKlz(DAyQEf)v!ye4ke(ggKOPGCH=%1{m0yVT@r^ zJ!qVf?{@i7O=BZTqwQ~o#Rlz%$SX5p?NkHCQxan=1S0G%3)6n|)>(P2sX(O>-+^aCBy z^%v)qf0E6xTl0*Bek)Ft9=m%!UDktyI3O;3S0l|twy<3|qcm|Nvcm7*`VO$E@8 zTOA+xFS5$N(ff_cZ|9&%i*kUvZ~W|5-50r@cbLv!1%bSyCiZ@AVbIBwu|no4qpXrL z3oHconc=PROk6cfut|2z*GBb9@tFUjs&6=9PSq!5a)7EoY;djv?b7_l4z!;0#+NAr5L+3!mmF)oNt@Px2*9L%WU zd@u7WJ?kxL%?H7G+3DW+P44oaaNggdt05nw>*H$moICy%uj=NBo-^&{iGFfUvTE-w zHfPRHtH?hHDj?+omX^Z2ycuK!}}g;;A<+bt#8NLgmuoSu&K?bSsR zJ|;Fq*-$_gH}mQ4(;3m8yDIrx)bPoI3;q@vEW-J#Wam^G2`_#7#E^66Mw)!*!W(cM z4MkQ7zteNV??N~mJpUmBitN2d8?e`Lm-#wxAtb3Otru7Qc|qa#1&Gzo1MNM3O=$lG z&Q);e>0ith&r11snXfpHb>gIR9-BV#1J5~!R7SNY@T!n=UhDi3A2@ZbG!~rX$#bFq z8rcH-LCP7^X@{8#ch-bE?F4LTex>1477URFd=&?PXnDS+d-oOfKgR-4;zgrF-mYb5EJh z1h06?+#OA}=pK6z+{2mRo|fP<_BX1})FxNzTPuTaaS(i~Q}3~-gZ^{|_i!b+=Na8& zPY2)POz^E|g8ppKJ@z2Dhcm%F8-o7W-=IIwsXxyJ-{K(n7MbG8g402NwgmTZCAjBR z-D6J&-{MU0tyhEoY}GyXAh?G!!981p{^-|Pc9*8IYJ+q4MF!ymiZl_XL=F)T1p2hW zaUoFDq>Br(ET<|;v|GI|vrRNP7YVcV39OHh5$afO@iL_q?(eHbQM1F1jl9pg@AbGl9>C zp6u1D4iNm4Zr%5}4Q_aC^P0sY?o*lGYNGs}CQ_K&X7o0%xxHuaOPhDN!!{}-lP&P5 zVsQUxEhvk!-I6Hj-Ftl3Rp#Ol{vfxv-Syka|IykN#wnz3dHx1B-B#?i9tiuLUU(!K z8TF zayNG+hP94g15_5Dn?QEnND?(9Sy-0e;_m&xjcttk?4t?_RF*~V@p@a?7`uoZy~t*6 z@5{hU|Di`exFN}@28y2ND6Yn&i z#%)}gC+0poaNvSg(cEqX)x|StCAL;>!sh!B%30=yK@f#``Q=~`Y)%qmZn=GoGo(VTL6SxDe%JlFJwyPRd?Yr=1M>Gp7P?qmYfs1zNnhw$o}a4~4-W+s=oRg+5> z1JdVuCJnM8!s~=}fn0vHW#P9?c9xZna+hA-%WF(8tM=VC_xQg2#Up+BlgIJN#KeCU zOq^w{t`lDg@-7{ME>X-Y4alnYJ9obcGD^Lfn2me_GBI&(Oa0B< zKds21%+M#be0#nzu8a3&psUH=cE2^; zQnkgodmd=TH121LMH6enq@#FE@iP;hrUN`jx*I}aoMmHCfr=2Y$fGif3AlT#2K0wh zxnpy0`cL6>N2DhVX1FUvm;-c*H^1RD{i9xD(E^eLDS{xSTZSaVr}V>%guk+9!T^E< zHA=T05}`ag9a?_ntXZ?%yeEuf6L#=ru8%aPBE>O{8i4w zaOiFRs)lDIq}}4POltvsux~j9aDTEmLU5f@%V!cj)CAyKt~pQoK^PcOY+YhkIcl_8i#+b`AI_!kM)@z)}<@IvSt2|dPN zi_$UyT10N%wD@+qQ_cx5)|$$?$bns6pVXGjdQmdsxQ09;r8&`Wmuz*Sqf4CVXIv** z=2Wh7D%U!zH=XX(?r>^fRq3JHmCo!QDRZmeIo&BM^3ttQrvGdl*HN>NZ$XG0bw@ds+nlp+LQ$CgM~-ifI%hB3 z;#9s)`y%wvm-zQ=+&Q~iI>G08AL2q~%Lnm5UFGDbb&?aaJGjkT&Yu~N@MreJ{Hdtm z@qIk;Hm~2UoBo(^Dm$IZ9sF$Ixb8VFzTs4^=K5Yfd256>8kFF~d-{y|rk>o)P;ZXv z8PtL3&86Jn3581}*~x`n*Ql>%I)09OgjxVd&T&Djt0 z#Ldi*rl+h{v5^bgg{`9(Yf@DkCTd#3@gmdukNmk6v?|TH7ioRgwBDi>Gp$cUlTS1) zB`-M5v?kHA_lZ0k&pqxQg?M5^9H8;cz^|FWtiGhRWRzIzf8Ixk@AzKbY09}wOiFq^ zVCerp@zqrJU+x1_JpY4ac3w$xNyj)=VxPuBokLL@IXWJ{mY)`QeWlz#I7!OGvrD?T z$iokqyJ{rMtyUK?$_H2YESpQpdpo@JYHeNrtK^c^(%{{yj~D%SCBOQKc|C+x&P9Do z;ow>;u*YEx;gM+l$dtb(nSJOgdd7=We!F>ht#C(UU%=}9SbxeqGY(>>>K0)0p2 z+p9q{gN>=|=gWC1o|07NZu5RG+x!XMpIowY3m{5mn@{9Os=`ERlk|GQDXHuyd4_cR zIktmtw&G0A_?=cJZ|#oAt<(v*3qjZ+zS-f)@CIku)I;e5#m)n*d$yd8z*D^WPmPy^ z>c0q`pW2&^^rpg7-(^7K&XAUwy}s9*+sTBzrE!EAY3aRYfWg zc5;-6NcRbDl|~A!D-x|Ma-!wXy6CZK9fYezw5~Fl?t<3gSX+U*nr?&Eu_5@C+kfON zyY6FB4ggTfU452lHoShOJM>%Dn9@6GAks7oGG6$3_la^E@!0ytkBS>kO!%#Ka?U_! zT<&qD@uM)Tqa|P{sc?(Ap3GieNIrA$Wwt~;p*lyTp3J|UzW_W^^d=^kvR&p5ztZ|A)A}7P`^2jJRR^wV z&uQKFTj>5ywsJS}1$*N-Q!o~ z-sNs4q~@pQ7Lu=ox8hSnFsUeZ!E9$)s)7LHZ&XBn;7SZI0on^ma~EUm(b2iFI&U$tQM{K za)Xlq=)awkXnL!D_7eaeYvXzyG@yW?n-y8(P21c} z+ucoXy4h4k@7`@2cVs6QB|=_rA{0%8W-C}4y@5T^Jw4}CPyF8K`iet|&4&`t9ZEcZ zDDgsL;>F^|#1{U&6mCqs%)eLo_o|eGL^$rV5Nt_SkvhBRmrXlaqF6lE;x1_^28dEE zo?J+Wm-DYWUIh$O8_1#(Yir$Kym_A#8NUt6WQ(3PrMU|!rglT3x#ji_##H8ppQ&Gv z0vvsGj`={7Cy;e3JQOqh9CPk#z~}GH z`udpGV}_fiSYNf~>M!!G*JzD`8V5#cv#%krDZ*y^+Z3x4&f{}VBp%Gal;mYEDPc{f zqJkWu{=OPN^aE5GJsC}JAL?B73WZI6Cq&2Emzuk!CVW~vo7~6bPALM!r@F1%OV~D} zJQLzCoh7V&S&^h=JRg!v7Vz3tl-5LbC(-qc?AzGd=3r6vpQ#McgY{<7pBMU?o*0Hiid;xJ1&Mx(0jX+ zKHyk)l6IYS$?3X1ydfT5xA3$5Y_Px@%LCOSuxe-%HI~X-d;FJ|99Y8ZZ#&tWi@zZH zKyx)mJq=3^fDxhFhGs`U&v7VQdb;*me>uIaI>rXR?{w;@CEThKuB@_bCsFT@5 zW(B#EM|C$S$3hT|!TZNy=@I^bMjPLaSG{de2YF2WcBYf$r2Po^xo#W0WI(b>S5KE4sIR421meyt-3lbqIfu-BKoc<9`0QD>4Nbej&H8!