From f1cff2024962c446422e99d992bc593f393b0aff Mon Sep 17 00:00:00 2001 From: phillvancejr Date: Mon, 24 Jan 2022 10:02:56 -0500 Subject: [PATCH 001/130] moved mac os glfw static lib to lib/darwin subdirectory --- vendor/glfw/bindings/bindings.odin | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/vendor/glfw/bindings/bindings.odin b/vendor/glfw/bindings/bindings.odin index 84905f603..52dc10a13 100644 --- a/vendor/glfw/bindings/bindings.odin +++ b/vendor/glfw/bindings/bindings.odin @@ -4,7 +4,14 @@ import "core:c" import vk "vendor:vulkan" when ODIN_OS == "linux" { foreign import glfw "system:glfw" } // TODO: Add the billion-or-so static libs to link to in linux -when ODIN_OS == "darwin" { foreign import glfw "system:glfw" } +when ODIN_OS == "darwin" { + foreign import glfw { + "../lib/darwin/libglfw3.a", + "system:Cocoa.framework", + "system:IOKit.framework", + "system:OpenGL.framework", + } +} when ODIN_OS == "windows" { foreign import glfw { "../lib/glfw3_mt.lib", From f28c268d97c80f840777007262a0bd43b3086652 Mon Sep 17 00:00:00 2001 From: phillvancejr Date: Mon, 24 Jan 2022 10:03:38 -0500 Subject: [PATCH 002/130] move libgflw3.a to lib/darwin --- vendor/glfw/lib/darwin/libglfw3.a | Bin 0 -> 281384 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 vendor/glfw/lib/darwin/libglfw3.a diff --git a/vendor/glfw/lib/darwin/libglfw3.a b/vendor/glfw/lib/darwin/libglfw3.a new file mode 100644 index 0000000000000000000000000000000000000000..242197e413e1cb6f476b4c8b9b03f7d5b3c1d5f3 GIT binary patch literal 281384 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�StA-{aHurn2Vd?r=|!Rq5H%*kyECBLz; z-D71#xEseA;El@iumTqDFy{)`_r-9tgo_-@Vb_C1)tLv481&fy!1?d`23VW6--A3C~>y?}l3y_!(1D&02J;xq& zFF>>fr|4P&f4OfAr%`$6=TL@A6TT%!aE|S?o)wCjdSkbjg$5oP!O}}0lIb>@VPPv572y%qo`W&-z zNs?c9B>R&j&w3=|Ns`Arl8GeA10Ko2B+1u3k|RlyFL@+KlO$j8NVp>=kvpIENHUWo z!yZX?lH^v8BqvF7lSdMygex1%QHxN*EEUYSFR&C#0@N9#Vgn}ksXNISsc7tW+L_kd=ce;EoYq@xI&XKS^>*EK z-gc(-wthNqpMkeSCt`63&GbTaCfJqgU9dj%((6XF6nzavp6#j1kafF+e5l}+Bgo2HuXB_}laV%GN4p1&rUX5EOg7nAx2WiVZPg)kBM(s*c^yaLS`IUh#N(H#{NPW?O;RV|ldV zl^Gtrv(o5gdi3U{(VOMbJ3EbDwny)rG6A-92$5$Bh)l#ihtSTSwpX&%xYp6{lXLI#RxQ!KYRnOWQOpmpd0=pRFMM%Lh+w948YiapHC3&p-|s%h+QRw&yIL?6fVCvtjq z?55Jg-1_rr^q1a#^ze14bhe>rfjIUsjac7QIa@1`!No4HhE&y{0PcM95{aiusw*L2k`4>WAJ2ab@9H z;n?BJeaYXF;(_p1bZJQbV;CWu2g2)^RtEhXXxGz~qwgv+y=~!BhmWV}SDAv-0;O4Z zKY8Mlj6e`Y`Q8=BWur3YtjGZLo^NCLa3K~|9>Jf(SsuotVAv=>$`lU#*No^7A z<{{%a3SYm==OfKV`A2=4Y10Zk|7D;Ps5&?!n34j_ps`%o}_a zzV>LJ)jyCq+#~d@A+v31;9)+vk;`Al-?CWs{Q28n%cy0xe;AByuN}wVgLmO~+`>IU z1l+U_MqrXgAPgLi#5eOW`=g(^n-Xl5;*PJ^O_(#Vf9E1lh}K{mFmCXlHcAyyYi{t> ztic+{57m2>ri8i^(TJNUfr-#g>;__}B-9$!52G&+#qQ=~24&BIB{t6R!C=OEoYBRD zAvVM|Ik0t6AQD7wbMzF5ygf8}FRVpr-fn6$wJEM#66ig{y8-Q1C~8mAAbz6r^X`jc z#3c2^5u1A&P?r)>MI4XXIPP?D{0Jgb6MbX{XvA%&DYC&DL_8~xuT_Dp^GvUrpt6w< zp}m9r!jE#-DP#@uotKp=Gb1!~uhAN^9dcI1cy;W;Lo9ZG1GylnZ#aCeUw%%q{0xks zzK@QB4G6E7XfWKn$L?&-H!b^V%k~Tc5B)DQKD?I^t}L9a!FZzqkBiLep~W-sYJNC7 z>&#MY5xI~&3d<{F_wPV9Jcyh_502r3{RFD;sllSj^Pa*qx>_L||0{$ z@d>Vdd;O+KvDtt#Il=Phe1m74>a_V*clG2%e7{fh^{L^bxh0>#Q>-@;096WzTeGY(gf7`PPb;8Ky(3w%19adc>+yZdC2Q zqr~PnmwvuqnB3xiCVZ>6lUa5+8;y*6m{M$AN|^_?$ zR*xth@hQrFodU0%EpNj)^tccLRD9N(#7gWODyyyHPrLTuR$jo+S2ONB`UJAY1Cg5TCY!W+@~?Loq}E8(ODlhH_s(sB+wwdbsl?hi)?_1_M#G*ejqPaNEyx6;h)TQ~H>=%P zSYKYF>h4%Y-s+!7mnr9__BNDo5UOkxfx6zNCam%>Wo~aEHu5#`Y-W>5*M@_M5^XkW zI8onhAv7L?ji%;ce;M`*V!f!dx7!v{kPCG7D_FCsjk^<_+-}yxso);Jo$lc6Kv_qy zw*&j~IyZHoePI`#J6)Mu3=;$vo_fQ|uKCq2d8S*>hZ0q_>c)1fse0Up<+1_ew1f% z8}?B0f6<0*hNcv`8y6SoF|UG~dwWo$>?fK*6eIJ2)eW&n2hoi$p=_VngYIkn`gQA< z2QOWF$=Y?7uQe6Uu-LMe2iJD0vZBiLz#~qD@4)6%BTKYnuH(8OTy09(cX0EjQ*a&< zil#2wh}smOt-HF3M5U;cTUx^%K`sS%v7*}Q*kcA6#pdG!JK*5oRX%#F=xxGX!e@lD z^byp(!uJag3fE%u65Vfv=Wv4&+;ze?#Q(VPtKwTNtXpBAlWPBDwiy6%qZVI-Gx#Q) zAXWHXl4IG9Zc6-yC9gHYsqvqX{KM18 zyH26mKwvTcrwV_!am=R zb9$bAo9z(f97?aZ06Lt4D3u<|%{XT-#Xi(0pfK{Xwaaoe&gpyhq5c7akoLE-JdJaD zo_KP9X}|PTu6R*S-Y?5^bAM@{^jN;eIX#a(?k^pY9?N+;z1yLe`HD>k%X>P#Z$U38 zJ(lZqdOw3+=ooqzp?;i-eTOFkQI%Hw0e?tyA(QkyqPL2^Sa_Q7Rn%WJ<@~3CV6Au% z$o;Bc0HSW?|C{C4Y?b^HVFi%k6akOJe#diw)SqYNH782`8rmo2FAEO|e=U3-2$%a1 z5M5RN*MNve&Bw&AvGj@yf%unSh(EOVP9R=zbKeTYR)gGsVipkDmHQ_k-rRG41w@t4 z{V{L`a2JsKb3Y2il7D^+kakuBnT}W_*3E2K>Gh1+5@s?#StLG{WXyOeq`H8?(INqDah{^b^@u_1fYpn*NA&B+B!>SNAmvYp{+{R|(SxEd6TMdSnWEnz`qwCA*3X{NctC| z|6BAEq8}Cg@1pM)JuI3N_{pQHT^qKkp7$LEP=wPJbG4*bvDA?z3S3A==? z!Uo|+VXZJEEESdr3xs*XpfFnqFyS*l@o#3SFeoIG{0Zn0$Alxoeqn>KR2UQjjK7&k zNoO-5a6b_3#s#}XyK%r3 zqTO@99W?jtx^c>aMcs>W%0e6`W z`$XIEf{oi{o7;P~Zbn3>?4&jEuro$g9hLEYo8B$6<*l8#&uG<3Bp2@|wAI8r#@)S< zy5koq>nM!So^vqIM^@a;$1l@W`_2O?K>x{C(-91gb|Y@^7vDdLp^@1;Nn{);`&ZpG z`zQ1GJWk#}i46BFWkm<5Viqs+5G|~$%WZrI^gk|cSz zM^c(3Im06fB}v}yk<=zhPVq=KCP`*_Bn^~c>17Fa=P{mv$O8Og=z+*t_{Gq$UXEY1 z9*E4wFIvMg^zX4ii^TpIc|LUynavVx6MF($Ho1FEKEZ3?(ATWj-(rO7-gSM{xX_`7%}=+rjdx!FI0Z(CAqRB@-hKEJWAheQ@vKM*L;>6&$+p#TZAwzTLZ=>Q+w=^UR>@U_EIoCs!@)X%%k0(tE@N)9a`G=S?U&S5JGZ*dGW}Bz|GT)5MuCBWL=Xn$Ze?V(Qy~U;tEUa#} z2Sps;fYxzc4fY>KpQ(yIhx3p^u}4kFL%q+TjK)JlH9xB!s@yj@%+3mVbrm)pM&1&u zd@g!?&ESE^39-uYvgnNY+_Eq;R{68C=n1A))u1rX3dJh-RYhl}Ss*p%PXxKE${e+W z9B1IDY}`3<_^1DW#-Cm6|AY8v`{SQ#{n%tX&*xxj(_~NLd=4y(**mZomS`2tlBw2_ ztt5HGic{lLu=e5J)HFsX`Nm#)tZWF;P%f)@bpSGf6s3N==ktVHGe)P`7%_$ zRB|`){u%tIIzM89oh}^5hH$cG3I08D3^^wm>G*_(o8sTS_hVR^QeGhcwZ?PC6#xB_ zk3pX5{E1RUd^)*#`GDUw_@63&IDbGl?fSuA@yLf``55Qs$364%6%ce`rxYE_$vCIy znMZGjpig=%uOz+DfEo7B2lFocAJ%yjEH~qvJIyT$>pX&#^-=seC zli%!=Vpkg->w$5;cwB^GKVC8OPXuDBd&OUnp(vs`KL?V}p)vWz;^&J0anw)puLE+P zHzfKU!l!3g|9gP6$8#X?s+PYS2!Ay@EUw_W56H{>S|IJ51PB+XuwI-0ScM^4zO{NPaHoli_m5!KA-?g>!+7|NlUV{AYj+ zho23dif}#&qpVocFNL5 vCe^H^lT4i_bP|&w&Rsf2^7N(SdS)=aEH{bic*a_M9@BBBPGw4hq6_?Q?ViN2 literal 0 HcmV?d00001 From 8f600798ef201ce3f34e29d7cdbf07b9bfc5db21 Mon Sep 17 00:00:00 2001 From: phillvancejr Date: Fri, 4 Feb 2022 13:03:20 -0500 Subject: [PATCH 003/130] stb_image --- Makefile | 2 +- vendor/stb/image/stb_image.odin | 1 + vendor/stb/image/stb_image_resize.odin | 3 ++- vendor/stb/image/stb_image_write.odin | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index d3d3c6a2d..df5fe0605 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ ifeq ($(OS), Darwin) LLVM_VERSIONS = "13.%.%" else # allow for x86 / amd64 all llvm versions begining from 11 - LLVM_VERSIONS = "13.%.%" "12.0.1" "11.1.0" + LLVM_VERSIONS = "13.%.%" "12.0.1" "11.0.0" endif LLVM_VERSION_PATTERN_SEPERATOR = )|( diff --git a/vendor/stb/image/stb_image.odin b/vendor/stb/image/stb_image.odin index 9e72760ab..12f7aea9f 100644 --- a/vendor/stb/image/stb_image.odin +++ b/vendor/stb/image/stb_image.odin @@ -6,6 +6,7 @@ import c "core:c/libc" when ODIN_OS == "windows" { foreign import stbi "../lib/stb_image.lib" } when ODIN_OS == "linux" { foreign import stbi "../lib/stb_image.a" } +when ODIN_OS == "darwin" { foreign import stbi "../lib/darwin/stb_image.a" } #assert(size_of(b32) == size_of(c.int)) diff --git a/vendor/stb/image/stb_image_resize.odin b/vendor/stb/image/stb_image_resize.odin index bee29a15e..c75a95fc9 100644 --- a/vendor/stb/image/stb_image_resize.odin +++ b/vendor/stb/image/stb_image_resize.odin @@ -4,6 +4,7 @@ import c "core:c/libc" when ODIN_OS == "windows" { foreign import lib "../lib/stb_image_resize.lib" } when ODIN_OS == "linux" { foreign import lib "../lib/stb_image_resize.a" } +when ODIN_OS == "darwin" { foreign import lib "../lib/darwin/stb_image_resize.a" } ////////////////////////////////////////////////////////////////////////////// // @@ -184,4 +185,4 @@ foreign lib { space: colorspace, alloc_context: rawptr, s0, t0, s1, t1: f32) -> c.int --- -} \ No newline at end of file +} diff --git a/vendor/stb/image/stb_image_write.odin b/vendor/stb/image/stb_image_write.odin index 1f0cfce85..2a2ec240c 100644 --- a/vendor/stb/image/stb_image_write.odin +++ b/vendor/stb/image/stb_image_write.odin @@ -4,6 +4,7 @@ import c "core:c/libc" when ODIN_OS == "windows" { foreign import stbiw "../lib/stb_image_write.lib" } when ODIN_OS == "linux" { foreign import stbiw "../lib/stb_image_write.a" } +when ODIN_OS == "darwin" { foreign import stbiw "../lib/darwin/stb_image_write.a" } write_func :: proc "c" (ctx: rawptr, data: rawptr, size: c.int) From 42364f2fcee1f0f588b006bf2b7e9bc6f88acb93 Mon Sep 17 00:00:00 2001 From: phillvancejr Date: Fri, 4 Feb 2022 13:15:43 -0500 Subject: [PATCH 004/130] sync with main --- core/bindgen/c-parser-evaluate.odin | 266 +++++++ core/bindgen/c-parser-helpers.odin | 267 +++++++ core/bindgen/c-parser-nodes.odin | 132 ++++ core/bindgen/c-parser.odin | 840 +++++++++++++++++++++++ core/bindgen/errors.odin | 44 ++ core/bindgen/generator-clean.odin | 284 ++++++++ core/bindgen/generator-export.odin | 166 +++++ core/bindgen/generator-helpers.odin | 392 +++++++++++ core/bindgen/generator.odin | 205 ++++++ vendor/stb/lib/darwin/libstb_image.a | Bin 0 -> 55744 bytes vendor/stb/lib/darwin/stb_image.a | Bin 0 -> 97544 bytes vendor/stb/lib/darwin/stb_image_resize.a | Bin 0 -> 36824 bytes vendor/stb/lib/darwin/stb_image_write.a | Bin 0 -> 32896 bytes vendor/stb/lib/darwin/stb_rect_pack.a | Bin 0 -> 5064 bytes vendor/stb/lib/darwin/stb_truetype.a | Bin 0 -> 67008 bytes wasm-ld | 1 + 16 files changed, 2597 insertions(+) create mode 100644 core/bindgen/c-parser-evaluate.odin create mode 100644 core/bindgen/c-parser-helpers.odin create mode 100644 core/bindgen/c-parser-nodes.odin create mode 100644 core/bindgen/c-parser.odin create mode 100644 core/bindgen/errors.odin create mode 100644 core/bindgen/generator-clean.odin create mode 100644 core/bindgen/generator-export.odin create mode 100644 core/bindgen/generator-helpers.odin create mode 100644 core/bindgen/generator.odin create mode 100644 vendor/stb/lib/darwin/libstb_image.a create mode 100644 vendor/stb/lib/darwin/stb_image.a create mode 100644 vendor/stb/lib/darwin/stb_image_resize.a create mode 100644 vendor/stb/lib/darwin/stb_image_write.a create mode 100644 vendor/stb/lib/darwin/stb_rect_pack.a create mode 100644 vendor/stb/lib/darwin/stb_truetype.a create mode 120000 wasm-ld diff --git a/core/bindgen/c-parser-evaluate.odin b/core/bindgen/c-parser-evaluate.odin new file mode 100644 index 000000000..13cb5042c --- /dev/null +++ b/core/bindgen/c-parser-evaluate.odin @@ -0,0 +1,266 @@ +package bindgen + +import "core:fmt" +import "core:strconv" + +// Evaluates an expression to a i64, without checking. +evaluate_i64 :: proc(data : ^ParserData) -> i64 { + ok : bool; + value : LiteralValue; + + value, ok = evaluate(data); + return value.(i64); +} + +// Evaluate an expression, returns whether it succeeded. +evaluate :: proc(data : ^ParserData) -> (LiteralValue, bool) { + return evaluate_level_5(data); +} + +// @note Evaluate levels numbers are based on +// https://en.cppreference.com/w/c/language/operator_precedence. + +// Bitwise shift level. +evaluate_level_5 :: proc(data : ^ParserData) -> (value : LiteralValue, ok : bool) { + value, ok = evaluate_level_4(data); + if !ok do return; + + invalid_value : LiteralValue; + token := peek_token(data); + + if token == "<<" { + v : LiteralValue; + eat_token(data); + + v, ok = evaluate_level_5(data); + if is_i64(v) do value = value.(i64) << cast(u64) v.(i64); + else do invalid_value = v; + } else if token == ">>" { + v : LiteralValue; + eat_token(data); + + v, ok = evaluate_level_5(data); + if is_i64(v) do value = value.(i64) >> cast(u64) v.(i64); + else do invalid_value = v; + } + + if invalid_value != nil { + print_warning("Invalid operand for bitwise shift ", invalid_value); + } + + return; +} + +// Additive level. +evaluate_level_4 :: proc(data : ^ParserData) -> (value : LiteralValue, ok : bool) { + value, ok = evaluate_level_3(data); + if !ok do return; + + token := peek_token(data); + if token == "+" { + v : LiteralValue; + eat_token(data); + v, ok = evaluate_level_4(data); + if is_i64(v) do value = value.(i64) + v.(i64); + else if is_f64(v) do value = value.(f64) + v.(f64); + } + else if token == "-" { + v : LiteralValue; + eat_token(data); + v, ok = evaluate_level_4(data); + if is_i64(v) do value = value.(i64) - v.(i64); + else if is_f64(v) do value = value.(f64) - v.(f64); + } + + return; +} + +// Multiplicative level. +evaluate_level_3 :: proc(data : ^ParserData) -> (value : LiteralValue, ok : bool) { + value, ok = evaluate_level_2(data); + if !ok do return; + + token := peek_token(data); + if token == "*" { + v : LiteralValue; + eat_token(data); + v, ok = evaluate_level_3(data); + if is_i64(v) do value = value.(i64) * v.(i64); + else if is_f64(v) do value = value.(f64) * v.(f64); + } + else if token == "/" { + v : LiteralValue; + eat_token(data); + v, ok = evaluate_level_3(data); + if is_i64(v) do value = value.(i64) / v.(i64); + else if is_f64(v) do value = value.(f64) / v.(f64); + } + + return; +} + +// Prefix level. +evaluate_level_2 :: proc(data : ^ParserData) -> (value : LiteralValue, ok : bool) { + token := peek_token(data); + + // Bitwise not + if token == "~" { + check_and_eat_token(data, "~"); + value, ok = evaluate_level_2(data); + value = ~value.(i64); + } + else { + // @note Should call evaluate_level_1, but we don't have that because we do not dereferenciation. + value, ok = evaluate_level_0(data); + } + + return; +} + +// Does not try to compose with arithmetics, it just evaluates one single expression. +evaluate_level_0 :: proc(data : ^ParserData) -> (value : LiteralValue, ok : bool) { + ok = true; + value = 0; + token := peek_token(data); + + // Parentheses + if token == "(" { + value, ok = evaluate_parentheses(data); + } // Number literal + else if (token[0] == '-') || (token[0] >= '0' && token[0] <= '9') { + value, ok = evaluate_number_literal(data); + } // String literal + else if token[0] == '"' { + value = evaluate_string_literal(data); + } // Function-like + else if token == "sizeof" { + value = evaluate_sizeof(data); + } // Knowned literal + else if token in data.knownedLiterals { + value = evaluate_knowned_literal(data); + } // Custom expression + else if token in data.options.customExpressionHandlers { + value = data.options.customExpressionHandlers[token](data); + } + else { + print_warning("Unknown token ", token, " for expression evaluation."); + ok = false; + } + + return; +} + +evaluate_sizeof :: proc(data : ^ParserData) -> LiteralValue { + print_warning("Using 'sizeof()'. Currently not able to precompute that. Please check generated code."); + + check_and_eat_token(data, "sizeof"); + check_and_eat_token(data, "("); + for data.bytes[data.offset] != ')' { + data.offset += 1; + } + check_and_eat_token(data, ")"); + return 1; +} + +evaluate_parentheses :: proc(data : ^ParserData) -> (value : LiteralValue, ok : bool) { + check_and_eat_token(data, "("); + + // Cast to int (via "(int)" syntax) + token := peek_token(data); + if token == "int" { + check_and_eat_token(data, "int"); + check_and_eat_token(data, ")"); + value, ok = evaluate(data); + return; + } // Cast to enum value (via "(enum XXX)" syntax) + else if token == "enum" { + check_and_eat_token(data, "enum"); + eat_token(data); + check_and_eat_token(data, ")"); + value, ok = evaluate(data); + return; + } + + value, ok = evaluate(data); + check_and_eat_token(data, ")"); + return; +} + +evaluate_number_literal :: proc(data : ^ParserData, loc := #caller_location) -> (value : LiteralValue, ok : bool) { + token := parse_any(data); + + // Unary - before numbers + numberLitteral := token; + for token == "-" { + token = parse_any(data); + numberLitteral = tcat(numberLitteral, token); + } + token = numberLitteral; + + // Check if any point or scientific notation in number + foundPointOrExp := false; + for c in token { + if c == '.' || c == 'e' || c == 'E' { + foundPointOrExp = true; + break; + } + } + + isHexadecimal := len(token) >= 2 && token[:2] == "0x"; + + // Computing postfix + tokenLength := len(token); + l := tokenLength - 1; + for l > 0 { + c := token[l]; + if c >= '0' && c <= '9' { break; } + if isHexadecimal && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) { break; } + l -= 1; + } + + postfix : string; + if l != tokenLength - 1 { + postfix = token[l+1:]; + token = token[:l+1]; + } + + if postfix != "" && (postfix[0] == 'u' || postfix[0] == 'U') { + print_warning("Found number litteral '", token, "' with unsigned postfix, we cast it to an int64 internally."); + } + + // Floating point + if !isHexadecimal && (foundPointOrExp || postfix == "f") { + value, ok = strconv.parse_f64(token); + } // Integer + else { + value, ok = strconv.parse_i64(token); + } + + if !ok { + print_error(data, loc, "Expected number litteral but got '", token, "'."); + } + + return value, ok; +} + +evaluate_string_literal :: proc(data : ^ParserData) -> string { + token := parse_any(data); + return token; +} + +evaluate_knowned_literal :: proc(data : ^ParserData) -> LiteralValue { + token := parse_any(data); + return data.knownedLiterals[token]; +} + +is_i64 :: proc(value : LiteralValue) -> (ok : bool) { + v : i64; + v, ok = value.(i64); + return ok; +} + +is_f64 :: proc(value : LiteralValue) -> (ok : bool) { + v : f64; + v, ok = value.(f64); + return ok; +} diff --git a/core/bindgen/c-parser-helpers.odin b/core/bindgen/c-parser-helpers.odin new file mode 100644 index 000000000..a99d83dd2 --- /dev/null +++ b/core/bindgen/c-parser-helpers.odin @@ -0,0 +1,267 @@ +package bindgen + +import "core:os" +import "core:fmt" +import "core:strings" +import "core:strconv" + +// Extract from start (included) to end (excluded) offsets +extract_string :: proc(data : ^ParserData, startOffset : u32, endOffset : u32) -> string { + return strings.string_from_ptr(&data.bytes[startOffset], cast(int) (endOffset - startOffset)); +} + +// Peek the end offset of the next token +peek_token_end :: proc(data : ^ParserData) -> u32 { + offset : u32; + + for true { + eat_whitespaces_and_comments(data); + if data.offset >= data.bytesLength { + return data.bytesLength; + } + offset = data.offset; + + // Identifier + if (data.bytes[offset] >= 'a' && data.bytes[offset] <= 'z') || + (data.bytes[offset] >= 'A' && data.bytes[offset] <= 'Z') || + (data.bytes[offset] == '_') { + offset += 1; + for (data.bytes[offset] >= 'a' && data.bytes[offset] <= 'z') || + (data.bytes[offset] >= 'A' && data.bytes[offset] <= 'Z') || + (data.bytes[offset] >= '0' && data.bytes[offset] <= '9') || + (data.bytes[offset] == '_') { + offset += 1; + } + } + if offset != data.offset { + // Nothing to do: we found an identifier + } // Number literal + else if (data.bytes[offset] >= '0' && data.bytes[offset] <= '9') { + offset += 1; + // Hexademical literal + if data.bytes[offset - 1] == '0' && data.bytes[offset] == 'x' { + offset += 1; + for (data.bytes[offset] >= '0' && data.bytes[offset] <= '9') || + (data.bytes[offset] >= 'a' && data.bytes[offset] <= 'f') || + (data.bytes[offset] >= 'A' && data.bytes[offset] <= 'F') { + offset += 1; + } + } // Basic number literal + else { + for (data.bytes[offset] >= '0' && data.bytes[offset] <= '9') || + data.bytes[offset] == '.' { + offset += 1; + } + + if (data.bytes[offset] == 'e' || data.bytes[offset] == 'E') { + offset += 1; + if data.bytes[offset] == '-' { + offset += 1; + } + } + + for (data.bytes[offset] >= '0' && data.bytes[offset] <= '9') { + offset += 1; + } + } + + // Number suffix? + for (data.bytes[offset] == 'u' || data.bytes[offset] == 'U') || + (data.bytes[offset] == 'l' || data.bytes[offset] == 'L') || + (data.bytes[offset] == 'f') { + offset += 1; + } + } // String literal + else if data.bytes[offset] == '"' { + offset += 1; + for data.bytes[offset-1] == '\\' || data.bytes[offset] != '"' { + offset += 1; + } + offset += 1; + } // Possible shifts + else if data.bytes[offset] == '<' || data.bytes[offset] == '>' { + offset += 1; + if data.bytes[offset] == data.bytes[offset-1] { + offset += 1; + } + } // Single character + else { + offset += 1; + } + + token := extract_string(data, data.offset, offset); + + // Ignore __attribute__ + if token == "__attribute__" { + print_warning("__attribute__ is ignored."); + + for data.bytes[offset] != '(' { + offset += 1; + } + + parenthesesCount := 1; + for true { + offset += 1; + if data.bytes[offset] == '(' do parenthesesCount += 1; + else if data.bytes[offset] == ')' do parenthesesCount -= 1; + if parenthesesCount == 0 do break; + } + offset += 1; + + data.offset = offset; + } // Ignore certain keywords + else if (token == "inline" || token == "__inline" || token == "static" + || token == "restrict" || token == "__restrict" + || token == "volatile" + || token == "__extension__") { + data.offset = offset; + } // Ignore ignored tokens ;) + else { + for ignoredToken in data.options.ignoredTokens { + if token == ignoredToken { + data.offset = offset; + break; + } + } + } + + if data.offset != offset { + break; + } + } + + return offset; +} + +// Peek the next token (just eating whitespaces and comment) +peek_token :: proc(data : ^ParserData) -> string { + tokenEnd := peek_token_end(data); + if tokenEnd == data.bytesLength { + return "EOF"; + } + return extract_string(data, data.offset, tokenEnd); +} + +// Find the end of the define directive (understanding endline backslashes) +// @note Tricky cases like comments hiding a backslash effect are not handled. +peek_define_end :: proc(data : ^ParserData) -> u32 { + defineEndOffset := data.offset; + for data.bytes[defineEndOffset-1] == '\\' || data.bytes[defineEndOffset] != '\n' { + defineEndOffset += 1; + } + return defineEndOffset; +} + +eat_comment :: proc(data : ^ParserData) { + if data.offset >= data.bytesLength || data.bytes[data.offset] != '/' { + return; + } + + // Line comment + if data.bytes[data.offset + 1] == '/' { + eat_line(data); + } // Range comment + else if data.bytes[data.offset + 1] == '*' { + data.offset += 2; + for data.bytes[data.offset] != '*' || data.bytes[data.offset + 1] != '/' { + data.offset += 1; + } + data.offset += 2; + } +} + +// Eat whitespaces +eat_whitespaces :: proc(data : ^ParserData) { + // Effective whitespace + for data.offset < data.bytesLength && + (data.bytes[data.offset] == ' ' || data.bytes[data.offset] == '\t' || + data.bytes[data.offset] == '\r' || data.bytes[data.offset] == '\n') { + if data.bytes[data.offset] == '\n' && data.bytes[data.offset] != '\\' { + data.foundFullReturn = true; + } + data.offset += 1; + } +} + +// Removes whitespaces and comments +eat_whitespaces_and_comments :: proc(data : ^ParserData) { + startOffset : u32 = 0xFFFFFFFF; + for startOffset != data.offset { + startOffset = data.offset; + eat_whitespaces(data); + eat_comment(data); + } +} + +// Eat full line +eat_line :: proc(data : ^ParserData) { + for ; data.bytes[data.offset] != '\n'; data.offset += 1 { + } +} + +// Eat a line, and repeat if it ends with a backslash +eat_define_lines :: proc(data : ^ParserData) { + for data.bytes[data.offset-1] == '\\' || data.bytes[data.offset] != '\n' { + data.offset += 1; + } +} + +// Eat next token +eat_token :: proc(data : ^ParserData) { + data.offset = peek_token_end(data); +} + +// Eat next token +check_and_eat_token :: proc(data : ^ParserData, expectedToken : string, loc := #caller_location) { + token := peek_token(data); + if token != expectedToken { + print_error(data, loc, "Expected ", expectedToken, " but found ", token, "."); + } + data.offset += cast(u32) len(token); +} + +// Check whether the next token is outside #define range +is_define_end :: proc(data : ^ParserData) -> bool { + defineEnd := peek_define_end(data); + tokenEnd := peek_token_end(data); + + return (defineEnd < tokenEnd); +} + +// Check if the current #define is a macro definition +is_define_macro :: proc(data : ^ParserData) -> bool { + startOffset := data.offset; + defer data.offset = startOffset; + + token := parse_any(data); + if token != "(" do return false; + + // Find the other parenthesis + parenthesesCount := 1; + for parenthesesCount != 0 { + token = parse_any(data); + if token == "(" do parenthesesCount += 1; + else if token == ")" do parenthesesCount -= 1; + } + + // Its a macro if after the parentheses, it's not the end + return !is_define_end(data); +} + +// @note Very slow function to get line number, +// use only for errors. +// @todo Well, this does not seem to work properly, UTF-8 problem? +get_line_column :: proc(data : ^ParserData) -> (u32, u32) { + line : u32 = 1; + column : u32 = 0; + for i : u32 = 0; i < data.offset; i += 1 { + if data.bytes[i] == '\n' { + column = 0; + line += 1; + } + else { + column += 1; + } + } + return line, column; +} diff --git a/core/bindgen/c-parser-nodes.odin b/core/bindgen/c-parser-nodes.odin new file mode 100644 index 000000000..0620e0187 --- /dev/null +++ b/core/bindgen/c-parser-nodes.odin @@ -0,0 +1,132 @@ +package bindgen + +DefineNode :: struct { + name : string, + value : LiteralValue, +} + +StructDefinitionNode :: struct { + name : string, + members : [dynamic]StructOrUnionMember, + forwardDeclared : bool, +} + +UnionDefinitionNode :: struct { + name : string, + members : [dynamic]StructOrUnionMember, +} + +EnumDefinitionNode :: struct { + name : string, + members : [dynamic]EnumMember, +} + +FunctionDeclarationNode :: struct { + name : string, + returnType : Type, + parameters : [dynamic]FunctionParameter, +} + +TypedefNode :: struct { + name : string, + type : Type, +} + +Nodes :: struct { + defines : [dynamic]DefineNode, + enumDefinitions : [dynamic]EnumDefinitionNode, + unionDefinitions : [dynamic]UnionDefinitionNode, + structDefinitions : [dynamic]StructDefinitionNode, + functionDeclarations : [dynamic]FunctionDeclarationNode, + typedefs : [dynamic]TypedefNode, +} + +LiteralValue :: union { + i64, + f64, + string, +} + +// Type, might be an array +Type :: struct { + base : BaseType, + dimensions : [dynamic]u64, // Array dimensions +} + +BaseType :: union { + BuiltinType, + PointerType, + IdentifierType, + FunctionType, + FunctionPointerType, +} + +BuiltinType :: enum { + Unknown, + Void, + Int, + UInt, + LongInt, + ULongInt, + LongLongInt, + ULongLongInt, + ShortInt, + UShortInt, + Char, + SChar, + UChar, + Float, + Double, + LongDouble, + + // Not defined by C language but in + Int8, + Int16, + Int32, + Int64, + UInt8, + UInt16, + UInt32, + UInt64, + Size, + SSize, + PtrDiff, + UIntPtr, + IntPtr, +} + +PointerType :: struct { + type : ^Type, // Pointer is there to prevent definition cycle. Null means void. +} + +IdentifierType :: struct { + name : string, + anonymous : bool, // An anonymous identifier can be hard-given a name in some contexts. +} + +FunctionType :: struct { + returnType : ^Type, // Pointer is there to prevent definition cycle. Null means void. + parameters : [dynamic]FunctionParameter, +} + +FunctionPointerType :: struct { + name : string, + returnType : ^Type, // Pointer is there to prevent definition cycle. Null means void. + parameters : [dynamic]FunctionParameter, +} + +EnumMember :: struct { + name : string, + value : i64, + hasValue : bool, +} + +StructOrUnionMember :: struct { + name : string, + type : Type, +} + +FunctionParameter :: struct { + name : string, + type : Type, +} diff --git a/core/bindgen/c-parser.odin b/core/bindgen/c-parser.odin new file mode 100644 index 000000000..c3ef4937f --- /dev/null +++ b/core/bindgen/c-parser.odin @@ -0,0 +1,840 @@ +package bindgen + +import "core:os" +import "core:fmt" +import "core:strings" +import "core:strconv" + +// Global counters +anonymousStructCount := 0; +anonymousUnionCount := 0; +anonymousEnumCount := 0; + +knownTypeAliases : map[string]Type; + +CustomHandler :: proc(data : ^ParserData); +CustomExpressionHandler :: proc(data : ^ParserData) -> LiteralValue; + +ParserOptions :: struct { + ignoredTokens : []string, + + // Handlers + customHandlers : map[string]CustomHandler, + customExpressionHandlers : map[string]CustomExpressionHandler, +} + +ParserData :: struct { + bytes : []u8, + bytesLength : u32, + offset : u32, + + // References + nodes : Nodes, + options : ^ParserOptions, + + // Knowned values + knownedLiterals : map[string]LiteralValue, + + // Whether we have eaten a '\n' character that has no backslash just before + foundFullReturn : bool, +} + +is_identifier :: proc(token : string) -> bool { + return (token[0] >= 'a' && token[0] <= 'z') || + (token[0] >= 'A' && token[0] <= 'Z') || + (token[0] == '_'); +} + +parse :: proc(bytes : []u8, options : ParserOptions, loc := #caller_location) -> Nodes { + options := options; + + data : ParserData; + data.bytes = bytes; + data.bytesLength = cast(u32) len(bytes); + data.options = &options; + + for data.offset = 0; data.offset < data.bytesLength; { + token := peek_token(&data); + if data.offset == data.bytesLength do break; + + if token in options.customHandlers { + options.customHandlers[token](&data); + } + else if token == "{" || token == "}" || token == ";" { + eat_token(&data); + } + else if token == "extern" { + check_and_eat_token(&data, "extern"); + } + else if token == "\"C\"" { + check_and_eat_token(&data, "\"C\""); + } + else if token == "#" { + parse_directive(&data); + } + else if token == "typedef" { + parse_typedef(&data); + } + else if is_identifier(token) { + parse_variable_or_function_declaration(&data); + } + else { + print_error(&data, loc, "Unexpected token: ", token, "."); + return data.nodes; + } + } + + return data.nodes; +} + +parse_any :: proc(data : ^ParserData) -> string { + offset := peek_token_end(data); + identifier := extract_string(data, data.offset, offset); + data.offset = offset; + return identifier; +} + +parse_identifier :: proc(data : ^ParserData, loc := #caller_location) -> string { + identifier := parse_any(data); + + if (identifier[0] < 'a' || identifier[0] > 'z') && + (identifier[0] < 'A' || identifier[0] > 'Z') && + (identifier[0] != '_') { + print_error(data, loc, "Expected identifier but found ", identifier, "."); + } + + return identifier; +} + +parse_type_dimensions :: proc(data : ^ParserData, type : ^Type) { + token := peek_token(data); + for token == "[" { + eat_token(data); + token = peek_token(data); + if token == "]" { + pointerType : PointerType; + pointerType.type = new(Type); + pointerType.type^ = type^; // Copy + type.base = pointerType; + delete(type.dimensions); + } else { + dimension := evaluate_i64(data); + append(&type.dimensions, cast(u64) dimension); + } + check_and_eat_token(data, "]"); + token = peek_token(data); + } +} + +// This will parse anything that look like a type: +// Builtin: char/int/float/... +// Struct-like: struct A/struct { ... }/enum E +// Function pointer: void (*f)(...) +// +// Definition permitted: If a struct-like definition is found, it will generate +// the according Node and return a corresponding type. +parse_type :: proc(data : ^ParserData, definitionPermitted := false) -> Type { + type : Type; + + // Eat qualifiers + token := peek_token(data); + if token == "const" { + eat_token(data); + token = peek_token(data); + } + + // Parse main type + if token == "struct" { + type.base = parse_struct_type(data, definitionPermitted); + } + else if token == "union" { + type.base = parse_union_type(data); + } + else if token == "enum" { + type.base = parse_enum_type(data); + } + else { + // Test builtin type + type.base = parse_builtin_type(data); + if type.base.(BuiltinType) == BuiltinType.Unknown { + // Basic identifier type + identifierType : IdentifierType; + identifierType.name = parse_identifier(data); + type.base = identifierType; + } + } + + // Eat qualifiers + token = peek_token(data); + if token == "const" { + eat_token(data); + token = peek_token(data); + } + + // Check if pointer + for token == "*" { + check_and_eat_token(data, "*"); + token = peek_token(data); + + pointerType : PointerType; + pointerType.type = new(Type); + pointerType.type^ = type; // Copy + + type.base = pointerType; + + // Eat qualifiers + if token == "const" { + eat_token(data); + token = peek_token(data); + } + } + + // Parse array dimensions if any. + parse_type_dimensions(data, &type); + + // ----- Function pointer type + + if token == "(" { + check_and_eat_token(data, "("); + check_and_eat_token(data, "*"); + + functionPointerType : FunctionPointerType; + functionPointerType.returnType = new(Type); + functionPointerType.returnType^ = type; + functionPointerType.name = parse_identifier(data); + + check_and_eat_token(data, ")"); + parse_function_parameters(data, &functionPointerType.parameters); + + type.base = functionPointerType; + } + + return type; +} + +parse_builtin_type :: proc(data : ^ParserData) -> BuiltinType { + previousBuiltinType := BuiltinType.Unknown; + intFound := false; + shortFound := false; + signedFound := false; + unsignedFound := false; + longCount := 0; + + for true { + token := peek_token(data); + + // Attribute + attributeFound := true; + if token == "long" do longCount += 1; + else if token == "short" do shortFound = true; + else if token == "unsigned" do unsignedFound = true; + else if token == "signed" do signedFound = true; + else do attributeFound = false; + if attributeFound { eat_token(data); continue; } + + // Known type alias + if token in knownTypeAliases { + builtinType, ok := knownTypeAliases[token].base.(BuiltinType); + if ok { + eat_token(data); + previousBuiltinType = builtinType; + } + break; + } + + // Classic type and standard types + if token == "void" { eat_token(data); return BuiltinType.Void; } + else if token == "int" { + eat_token(data); + intFound = true; + } + else if token == "float" { eat_token(data); return BuiltinType.Float; } + else if token == "double" { + eat_token(data); + if longCount == 0 do return BuiltinType.Double; + else do return BuiltinType.LongDouble; + } + else if token == "char" { + eat_token(data); + if signedFound do return BuiltinType.SChar; + else if unsignedFound do return BuiltinType.UChar; + else do return BuiltinType.Char; + } + else if token == "__int8" { + // @note :MicrosoftDumminess __intX are Microsoft's fixed-size integers + // https://docs.microsoft.com/fr-fr/cpp/cpp/int8-int16-int32-int64 + // and for unsigned version, they prefixed it with "unsigned"... + eat_token(data); + if unsignedFound do return BuiltinType.UInt8; + else do return BuiltinType.Int8; + } + else if token == "__int16" { + eat_token(data); + if unsignedFound do return BuiltinType.UInt16; + else do return BuiltinType.Int16; + } + else if token == "__int32" { + eat_token(data); + if unsignedFound do return BuiltinType.UInt32; + else do return BuiltinType.Int32; + } + else if token == "__int64" { + eat_token(data); + if unsignedFound do return BuiltinType.UInt64; + else do return BuiltinType.Int64; + } + else if token == "int8_t" { eat_token(data); return BuiltinType.Int8; } + else if token == "int16_t" { eat_token(data); return BuiltinType.Int16; } + else if token == "int32_t" { eat_token(data); return BuiltinType.Int32; } + else if token == "int64_t" { eat_token(data); return BuiltinType.Int64; } + else if token == "uint8_t" { eat_token(data); return BuiltinType.UInt8; } + else if token == "uint16_t" { eat_token(data); return BuiltinType.UInt16; } + else if token == "uint32_t" { eat_token(data); return BuiltinType.UInt32; } + else if token == "uint64_t" { eat_token(data); return BuiltinType.UInt64; } + else if token == "size_t" { eat_token(data); return BuiltinType.Size; } + else if token == "ssize_t" { eat_token(data); return BuiltinType.SSize; } + else if token == "ptrdiff_t" { eat_token(data); return BuiltinType.PtrDiff; } + else if token == "uintptr_t" { eat_token(data); return BuiltinType.UIntPtr; } + else if token == "intptr_t" { eat_token(data); return BuiltinType.IntPtr; } + + break; + } + + // Adapt previous builtin type + if previousBuiltinType == BuiltinType.ShortInt { + shortFound = true; + } + else if previousBuiltinType == BuiltinType.Int { + intFound = true; + } + else if previousBuiltinType == BuiltinType.LongInt { + longCount += 1; + } + else if previousBuiltinType == BuiltinType.LongLongInt { + longCount += 2; + } + else if previousBuiltinType == BuiltinType.UShortInt { + unsignedFound = true; + shortFound = true; + } + else if previousBuiltinType == BuiltinType.UInt { + unsignedFound = true; + } + else if previousBuiltinType == BuiltinType.ULongInt { + unsignedFound = true; + longCount += 1; + } + else if previousBuiltinType == BuiltinType.ULongLongInt { + unsignedFound = true; + longCount += 2; + } + else if (previousBuiltinType != BuiltinType.Unknown) { + return previousBuiltinType; // float, void, etc. + } + + // Implicit and explicit int + if intFound || shortFound || unsignedFound || signedFound || longCount > 0 { + if unsignedFound { + if shortFound do return BuiltinType.UShortInt; + if longCount == 0 do return BuiltinType.UInt; + if longCount == 1 do return BuiltinType.ULongInt; + if longCount == 2 do return BuiltinType.ULongLongInt; + } else { + if shortFound do return BuiltinType.ShortInt; + if longCount == 0 do return BuiltinType.Int; + if longCount == 1 do return BuiltinType.LongInt; + if longCount == 2 do return BuiltinType.LongLongInt; + } + } + + return BuiltinType.Unknown; +} + +parse_struct_type :: proc(data : ^ParserData, definitionPermitted : bool) -> IdentifierType { + check_and_eat_token(data, "struct"); + + type : IdentifierType; + token := peek_token(data); + + if !definitionPermitted || token != "{" { + type.name = parse_identifier(data); + token = peek_token(data); + } else { + type.name = tcat("AnonymousStruct", anonymousStructCount); + type.anonymous = true; + anonymousStructCount += 1; + } + + if token == "{" { + node := parse_struct_definition(data); + node.name = type.name; + } else if definitionPermitted { + // @note Whatever happens, we create a definition of the struct, + // as it might be used to forward declare it and then use it only with a pointer. + // This for instance the pattern for xcb_connection_t which definition + // is never known from user API. + node : StructDefinitionNode; + node.forwardDeclared = false; + node.name = type.name; + append(&data.nodes.structDefinitions, node); + } + + return type; +} + +parse_union_type :: proc(data : ^ParserData) -> IdentifierType { + check_and_eat_token(data, "union"); + + type : IdentifierType; + token := peek_token(data); + + if token != "{" { + type.name = parse_identifier(data); + token = peek_token(data); + } else { + type.name = tcat("AnonymousUnion", anonymousUnionCount); + type.anonymous = true; + anonymousUnionCount += 1; + } + + if token == "{" { + node := parse_union_definition(data); + node.name = type.name; + } + + return type; +} + +parse_enum_type :: proc(data : ^ParserData) -> IdentifierType { + check_and_eat_token(data, "enum"); + + type : IdentifierType; + token := peek_token(data); + + if token != "{" { + type.name = parse_identifier(data); + token = peek_token(data); + } else { + type.name = tcat("AnonymousEnum", anonymousEnumCount); + type.anonymous = true; + anonymousEnumCount += 1; + } + + if token == "{" { + node := parse_enum_definition(data); + node.name = type.name; + } + + return type; +} + +/** + * We only care about defines of some value + */ +parse_directive :: proc(data : ^ParserData) { + check_and_eat_token(data, "#"); + + token := peek_token(data); + if token == "define" { + parse_define(data); + } // We ignore all other directives + else { + eat_line(data); + } +} + +parse_define :: proc(data : ^ParserData) { + check_and_eat_token(data, "define"); + data.foundFullReturn = false; + + node : DefineNode; + node.name = parse_identifier(data); + + // Does it look like end? It might be a #define with no expression + if is_define_end(data) { + node.value = 1; + append(&data.nodes.defines, node); + data.knownedLiterals[node.name] = node.value; + } // Macros are ignored + else if is_define_macro(data) { + print_warning("Ignoring define macro for ", node.name, "."); + } + else { + literalValue, ok := evaluate(data); + if ok { + node.value = literalValue; + append(&data.nodes.defines, node); + data.knownedLiterals[node.name] = node.value; + } + else { + print_warning("Ignoring define expression for ", node.name, "."); + } + } + + // Evaluating the expression, we might have already eaten a full return, + // if so, do nothing. + if !data.foundFullReturn { + eat_define_lines(data); + } +} + +// @fixme Move +change_anonymous_node_name :: proc (data : ^ParserData, oldName : string, newName : string) -> bool { + for i := 0; i < len(data.nodes.structDefinitions); i += 1 { + if data.nodes.structDefinitions[i].name == oldName { + data.nodes.structDefinitions[i].name = newName; + return true; + } + } + + for i := 0; i < len(data.nodes.enumDefinitions); i += 1 { + if data.nodes.enumDefinitions[i].name == oldName { + data.nodes.enumDefinitions[i].name = newName; + return true; + } + } + + for i := 0; i < len(data.nodes.unionDefinitions); i += 1 { + if data.nodes.unionDefinitions[i].name == oldName { + data.nodes.unionDefinitions[i].name = newName; + return true; + } + } + + return false; +} + +/** + * Type aliasing. + * typedef ; + */ +parse_typedef :: proc(data : ^ParserData) { + check_and_eat_token(data, "typedef"); + + // @note Struct-like definitions (and such) + // are generated within type parsing. + // + // So that typedef struct { int foo; }* Ap; is valid. + + // Parsing type + node : TypedefNode; + node.type = parse_type(data, true); + + if sourceType, ok := node.type.base.(FunctionPointerType); ok { + node.name = sourceType.name; + } else { + node.name = parse_identifier(data); + } + + // Checking if function type + token := peek_token(data); + if token == "(" { + functionType : FunctionType; + functionType.returnType = new(Type); + functionType.returnType^ = node.type; + + parse_function_parameters(data, &functionType.parameters); + + node.type.base = functionType; + } + + // Checking if array + parse_type_dimensions(data, &node.type); + + // If the underlying type is anonymous, + // we just affect it the name. + addTypedefNode := true; + if identifierType, ok := node.type.base.(IdentifierType); ok { + if identifierType.anonymous { + addTypedefNode = !change_anonymous_node_name(data, identifierType.name, node.name); + } + } + + if addTypedefNode { + knownTypeAliases[node.name] = node.type; + append(&data.nodes.typedefs, node); + } + + check_and_eat_token(data, ";"); + + // @note Commented tool for debug + // fmt.println("Typedef: ", node.type, node.name); +} + +parse_struct_definition :: proc(data : ^ParserData) -> ^StructDefinitionNode { + node : StructDefinitionNode; + node.forwardDeclared = false; + parse_struct_or_union_members(data, &node.members); + + append(&data.nodes.structDefinitions, node); + return &data.nodes.structDefinitions[len(data.nodes.structDefinitions) - 1]; +} + +parse_union_definition :: proc(data : ^ParserData) -> ^UnionDefinitionNode { + node : UnionDefinitionNode; + parse_struct_or_union_members(data, &node.members); + + append(&data.nodes.unionDefinitions, node); + return &data.nodes.unionDefinitions[len(data.nodes.unionDefinitions) - 1]; +} + +parse_enum_definition :: proc(data : ^ParserData) -> ^EnumDefinitionNode { + node : EnumDefinitionNode; + parse_enum_members(data, &node.members); + + append(&data.nodes.enumDefinitions, node); + return &data.nodes.enumDefinitions[len(data.nodes.enumDefinitions) - 1]; +} + +/** + * { + * = , + * , + * } + */ +parse_enum_members :: proc(data : ^ParserData, members : ^[dynamic]EnumMember) { + check_and_eat_token(data, "{"); + + nextMemberValue : i64 = 0; + token := peek_token(data); + for token != "}" { + member : EnumMember; + member.name = parse_identifier(data); + member.hasValue = false; + + token = peek_token(data); + if token == "=" { + check_and_eat_token(data, "="); + + member.hasValue = true; + member.value = evaluate_i64(data); + nextMemberValue = member.value; + token = peek_token(data); + } else { + member.value = nextMemberValue; + } + + data.knownedLiterals[member.name] = member.value; + nextMemberValue += 1; + + // Eat until end, as this might be a complex expression that we couldn't understand + if token != "," && token != "}" { + print_warning("Parser cannot understand fully the expression of enum member ", member.name, "."); + for token != "," && token != "}" { + eat_token(data); + token = peek_token(data); + } + } + if token == "," { + check_and_eat_token(data, ","); + token = peek_token(data); + } + + append(members, member); + } + + check_and_eat_token(data, "}"); +} + +/** + * { + * ; + * , ; + * []; + * } + */ +parse_struct_or_union_members :: proc(data : ^ParserData, structOrUnionMembers : ^[dynamic]StructOrUnionMember) { + check_and_eat_token(data, "{"); + + // To ensure unique id + unamedCount := 0; + + token := peek_token(data); + for token != "}" { + member : StructOrUnionMember; + member.type = parse_type(data, true); + + for true { + // In the case of function pointer types, the name has been parsed + // during type inspection. + if type, ok := member.type.base.(FunctionPointerType); ok { + member.name = type.name; + } + else { + // Unamed (struct or union) + token = peek_token(data); + if !is_identifier(token) { + member.name = tcat("unamed", unamedCount); + unamedCount += 1; + } + else { + member.name = parse_identifier(data); + } + } + + parse_type_dimensions(data, &member.type); + + token = peek_token(data); + if token == ":" { + check_and_eat_token(data, ":"); + print_warning("Found bitfield in struct, which is not handled correctly."); + evaluate_i64(data); + token = peek_token(data); + } + + append(structOrUnionMembers, member); + + // Multiple declarations on one line + if token == "," { + check_and_eat_token(data, ","); + continue; + } + + break; + } + + check_and_eat_token(data, ";"); + token = peek_token(data); + } + + check_and_eat_token(data, "}"); +} + +parse_variable_or_function_declaration :: proc(data : ^ParserData) { + type := parse_type(data, true); + + // If it's just a type, it might be a struct definition + token := peek_token(data); + if token == ";" { + check_and_eat_token(data, ";"); + return; + } + + // Eat array declaration if any + // @fixme The return type of a function declaration will be wrong! + for data.bytes[data.offset] == '[' { + for data.bytes[data.offset] != ']' { + data.offset += 1; + } + data.offset += 1; + } + + name := parse_identifier(data); + + token = peek_token(data); + if token == "(" { + functionDeclarationNode := parse_function_declaration(data); + functionDeclarationNode.returnType = type; + functionDeclarationNode.name = name; + return; + } else if token == "[" { + // Eat whole array declaration + for data.bytes[data.offset] == '[' { + for data.bytes[data.offset] != ']' { + data.offset += 1; + } + data.offset += 1; + } + } + + // Global variable declaration (with possible multiple declarations) + token = peek_token(data); + + for true { + if token == "," { + print_warning("Found global variable declaration '", name, "', we won't generated any binding for it."); + check_and_eat_token(data, ","); + + name = parse_identifier(data); + token = peek_token(data); + continue; + } + else if token == ";" { + if name != "" { + print_warning("Found global variable declaration '", name, "', we won't generated any binding for it."); + } + check_and_eat_token(data, ";"); + break; + } + + // Global variable assignment, considered as constant define. + node : DefineNode; + + check_and_eat_token(data, "="); + literalValue, ok := evaluate(data); + if ok { + node.name = name; + node.value = literalValue; + append(&data.nodes.defines, node); + } + else { + print_warning("Ignoring global variable expression for '", name, "'."); + } + + name = ""; + token = peek_token(data); + } +} + +parse_function_declaration :: proc(data : ^ParserData) -> ^FunctionDeclarationNode { + node : FunctionDeclarationNode; + + parse_function_parameters(data, &node.parameters); + + // Function definition? Ignore it. + token := peek_token(data); + if token == "{" { + bracesCount := 1; + for true { + data.offset += 1; + if data.bytes[data.offset] == '{' do bracesCount += 1; + else if data.bytes[data.offset] == '}' do bracesCount -= 1; + if bracesCount == 0 do break; + } + data.offset += 1; + } // Function declaration + else { + check_and_eat_token(data, ";"); + } + + append(&data.nodes.functionDeclarations, node); + return &data.nodes.functionDeclarations[len(data.nodes.functionDeclarations) - 1]; +} + +parse_function_parameters :: proc(data : ^ParserData, parameters : ^[dynamic]FunctionParameter) { + check_and_eat_token(data, "("); + + token := peek_token(data); + for token != ")" { + parameter : FunctionParameter; + + token = peek_token(data); + if token == "." { + print_warning("A function accepts variadic arguments, this is currently not handled within generated code."); + + check_and_eat_token(data, "."); + check_and_eat_token(data, "."); + check_and_eat_token(data, "."); + break; + } else { + parameter.type = parse_type(data); + } + + // Check if named parameter + token = peek_token(data); + if token != ")" && token != "," { + parameter.name = parse_identifier(data); + parse_type_dimensions(data, ¶meter.type); + token = peek_token(data); + } + + if token == "," { + eat_token(data); + token = peek_token(data); + } + + append(parameters, parameter); + } + + check_and_eat_token(data, ")"); +} diff --git a/core/bindgen/errors.odin b/core/bindgen/errors.odin new file mode 100644 index 000000000..9564c5244 --- /dev/null +++ b/core/bindgen/errors.odin @@ -0,0 +1,44 @@ +package bindgen + +import "core:fmt" +import "core:os" + +seenWarnings : map[string]bool; + +print_warning :: proc(args : ..any) { + message := tcat(..args); + + if !seenWarnings[message] { + fmt.eprint("[bindgen] Warning: ", message, "\n"); + seenWarnings[message] = true; + } +} + +print_error :: proc(data : ^ParserData, loc := #caller_location, args : ..any) { + message := tcat(..args); + + min : u32 = 0; + for i := data.offset - 1; i > 0; i -= 1 { + if data.bytes[i] == '\n' { + min = i + 1; + break; + } + } + + max := min + 200; + for i := min + 1; i < max; i += 1 { + if data.bytes[i] == '\n' { + max = i; + break; + } + } + + line, _ := get_line_column(data); + + fmt.eprint("[bindgen] Error: ", message, "\n"); + fmt.eprint("[bindgen] ... from ", loc.procedure, "\n"); + fmt.eprint("[bindgen] ... at line ", line, " within this context:\n"); + fmt.eprint("> ", extract_string(data, min, max), "\n"); + + os.exit(1); +} diff --git a/core/bindgen/generator-clean.odin b/core/bindgen/generator-clean.odin new file mode 100644 index 000000000..8dd837b10 --- /dev/null +++ b/core/bindgen/generator-clean.odin @@ -0,0 +1,284 @@ +package bindgen + +import "core:fmt" + +// Prevent keywords clashes and other tricky cases +clean_identifier :: proc(name : string) -> string { + name := name; + + if name == "" { + return name; + } + + // Starting with _? Try removing that. + for true { + if name[0] == '_' { + name = name[1:]; + } + else { + break; + } + } + + // Number + if name[0] >= '0' && name[0] <= '9' { + return tcat("_", name); + } // Keywords clash + else if name == "map" || name == "proc" || name == "opaque" || name == "in" { + return tcat("_", name); + } // Jai keywords clash + else if name == "context" || + name == "float32" || name == "float64" || + name == "s8" || name == "s16" || name == "s32" || name == "s64" || + name == "u8" || name == "u16" || name == "u32" || name == "u64" { + return tcat("_", name); + } + + return name; +} + +clean_variable_name :: proc(name : string, options : ^GeneratorOptions) -> string { + name := name; + name = change_case(name, options.variableCase); + return clean_identifier(name); +} + +clean_pseudo_type_name :: proc(structName : string, options : ^GeneratorOptions) -> string { + structName := structName; + structName = remove_postfixes(structName, options.pseudoTypePostfixes, options.pseudoTypeTransparentPostfixes); + structName = remove_prefixes(structName, options.pseudoTypePrefixes, options.pseudoTypeTransparentPrefixes); + structName = change_case(structName, options.pseudoTypeCase); + return structName; +} + +// Clean up the enum name so that it can be used to remove the prefix from enum values. +clean_enum_name_for_prefix_removal :: proc(enumName : string, options : ^GeneratorOptions) -> (string, [dynamic]string) { + enumName := enumName; + + if !options.enumValueNameRemove { + return enumName, nil; + } + + // Remove postfix and use same case convention as the enum values + removedPostfixes : [dynamic]string; + enumName, removedPostfixes = remove_postfixes_with_removed(enumName, options.enumValueNameRemovePostfixes); + enumName = change_case(enumName, options.enumValueCase); + return enumName, removedPostfixes; +} + +clean_enum_value_name :: proc(valueName : string, enumName : string, postfixes : []string, options : ^GeneratorOptions) -> string { + valueName := valueName; + + valueName = remove_prefixes(valueName, options.enumValuePrefixes, options.enumValueTransparentPrefixes); + valueName = remove_postfixes(valueName, postfixes, options.enumValueTransparentPostfixes); + + if options.enumValueNameRemove { + valueName = remove_prefixes(valueName, []string{enumName}); + } + + valueName = change_case(valueName, options.enumValueCase); + + return clean_identifier(valueName); +} + +clean_function_name :: proc(functionName : string, options : ^GeneratorOptions) -> string { + functionName := functionName; + functionName = remove_prefixes(functionName, options.functionPrefixes, options.functionTransparentPrefixes); + functionName = remove_postfixes(functionName, options.definePostfixes, options.defineTransparentPostfixes); + functionName = change_case(functionName, options.functionCase); + return functionName; +} + +clean_define_name :: proc(defineName : string, options : ^GeneratorOptions) -> string { + defineName := defineName; + defineName = remove_prefixes(defineName, options.definePrefixes, options.defineTransparentPrefixes); + defineName = remove_postfixes(defineName, options.definePostfixes, options.defineTransparentPostfixes); + defineName = change_case(defineName, options.defineCase); + return defineName; +} + +// Convert to Odin's types +clean_type :: proc(data : ^GeneratorData, type : Type, baseTab : string = "", explicitSharpType := true) -> string { + output := ""; + + for dimension in type.dimensions { + output = tcat(output, "[", dimension, "]"); + } + output = tcat(output, clean_base_type(data, type.base, baseTab, explicitSharpType)); + + return output; +} + +clean_base_type :: proc(data : ^GeneratorData, baseType : BaseType, baseTab : string = "", explicitSharpType := true) -> string { + options := data.options; + + if _type, ok := baseType.(BuiltinType); ok { + if _type == BuiltinType.Void do return options.mode == "jai" ? "void" : ""; + else if _type == BuiltinType.Int do return options.mode == "jai" ? "s64" : "_c.int"; + else if _type == BuiltinType.UInt do return options.mode == "jai" ? "u64" :"_c.uint"; + else if _type == BuiltinType.LongInt do return options.mode == "jai" ? "s64" :"_c.long"; + else if _type == BuiltinType.ULongInt do return options.mode == "jai" ? "u64" :"_c.ulong"; + else if _type == BuiltinType.LongLongInt do return options.mode == "jai" ? "s64" :"_c.longlong"; + else if _type == BuiltinType.ULongLongInt do return options.mode == "jai" ? "u64" :"_c.ulonglong"; + else if _type == BuiltinType.ShortInt do return options.mode == "jai" ? "s16" :"_c.short"; + else if _type == BuiltinType.UShortInt do return options.mode == "jai" ? "u16" :"_c.ushort"; + else if _type == BuiltinType.Char do return options.mode == "jai" ? "u8" :"_c.char"; + else if _type == BuiltinType.SChar do return options.mode == "jai" ? "s8" :"_c.schar"; + else if _type == BuiltinType.UChar do return options.mode == "jai" ? "u8" :"_c.uchar"; + else if _type == BuiltinType.Float do return options.mode == "jai" ? "float32" :"_c.float"; + else if _type == BuiltinType.Double do return options.mode == "jai" ? "float64" :"_c.double"; + else if _type == BuiltinType.LongDouble { + print_warning("Found long double which is currently not supported. Fallback to double in generated code."); + return options.mode == "jai" ? "double" :"_c.double"; + } + else if _type == BuiltinType.Int8 do return options.mode == "jai" ? "s8" :"i8"; + else if _type == BuiltinType.Int16 do return options.mode == "jai" ? "s16" :"i16"; + else if _type == BuiltinType.Int32 do return options.mode == "jai" ? "s32" :"i32"; + else if _type == BuiltinType.Int64 do return options.mode == "jai" ? "s64" :"i64"; + else if _type == BuiltinType.UInt8 do return options.mode == "jai" ? "u8" :"u8"; + else if _type == BuiltinType.UInt16 do return options.mode == "jai" ? "u16" :"u16"; + else if _type == BuiltinType.UInt32 do return options.mode == "jai" ? "u32" :"u32"; + else if _type == BuiltinType.UInt64 do return options.mode == "jai" ? "u64" :"u64"; + else if _type == BuiltinType.Size do return options.mode == "jai" ? "u64" :"_c.size_t"; + else if _type == BuiltinType.SSize do return options.mode == "jai" ? "u64" :"_c.ssize_t"; + else if _type == BuiltinType.PtrDiff do return options.mode == "jai" ? "s64" :"_c.ptrdiff_t"; + else if _type == BuiltinType.UIntPtr do return options.mode == "jai" ? "u64" :"_c.uintptr_t"; + else if _type == BuiltinType.IntPtr do return options.mode == "jai" ? "s64" :"_c.intptr_t"; + } + else if _type, ok := baseType.(PointerType); ok { + if options.mode == "jai" { + // Hide pointers to types that were not declared. + if !is_known_base_type(data, _type.type.base) { + print_warning("*", _type.type.base.(IdentifierType).name, " replaced by *void as the pointed type is unknown."); + return "*void"; + } + } else { + if __type, ok := _type.type.base.(BuiltinType); ok { + if __type == BuiltinType.Void do return "rawptr"; + else if __type == BuiltinType.Char do return "cstring"; + } + } + name := clean_type(data, _type.type^, baseTab); + return tcat(options.mode == "jai" ? "*" :"^", name); + } + else if _type, ok := baseType.(IdentifierType); ok { + return clean_pseudo_type_name(_type.name, options); + } + else if _type, ok := baseType.(FunctionType); ok { + output : string; + if explicitSharpType { + output = "#type "; + } + output = tcat(output, options.mode == "jai" ? "(" :"proc("); + parameters := clean_function_parameters(data, _type.parameters, baseTab); + output = tcat(output, parameters, ")"); + + returnType := clean_type(data, _type.returnType^); + if len(returnType) > 0 && returnType != "void" { + output = tcat(output, " -> ", returnType); + } + return output; + } + else if _type, ok := baseType.(FunctionPointerType); ok { + output : string; + if explicitSharpType { + output = "#type "; + } + output = tcat(output, options.mode == "jai" ? "(" :"proc("); + parameters := clean_function_parameters(data, _type.parameters, baseTab); + output = tcat(output, parameters, ")"); + + returnType := clean_type(data, _type.returnType^); + if len(returnType) > 0 && returnType != "void" { + output = tcat(output, " -> ", returnType); + } + + if options.mode == "jai" { + output = tcat(output, " #foreign"); + } + return output; + } + + return ""; +} + +clean_function_parameters :: proc(data : ^GeneratorData, parameters : [dynamic]FunctionParameter, baseTab : string) -> string { + output := ""; + options := data.options; + + // Special case: function(void) does not really have a parameter + if len(parameters) == 1 { + if _type, ok := parameters[0].type.base.(BuiltinType); ok { + if _type == BuiltinType.Void { + return ""; + } + } + } + + tab := ""; + if options.mode == "jai" { // @note :OdinCodingStyle Odin forces a coding style, now. Ugh. + if (len(parameters) > 1) { + output = tcat(output, "\n"); + tab = tcat(baseTab, " "); + } + } + + unamedParametersCount := 0; + for parameter, i in parameters { + type := clean_type(data, parameter.type); + + name : string; + if len(parameter.name) != 0 { + name = clean_variable_name(parameter.name, options); + } else { + name = tcat("unamed", unamedParametersCount); + unamedParametersCount += 1; + } + + output = tcat(output, tab, name, " : ", type); + + if i != len(parameters) - 1 { + if options.mode == "jai" { // @note :OdinCodingStyle + output = tcat(output, ",\n"); + } else { + output = tcat(output, ", "); + } + } + } + + if (len(parameters) > 1) { + if options.mode == "jai" { // @note :OdinCodingStyle + output = tcat(output, "\n", baseTab); + } + } + + return output; +} + +is_known_base_type :: proc(data : ^GeneratorData, baseType : BaseType) -> bool { + if _type, ok := baseType.(IdentifierType); ok { + for it in data.nodes.typedefs { + if _type.name == it.name { + return true; + } + } + for it in data.nodes.structDefinitions { + if _type.name == it.name { + return true; + } + } + for it in data.nodes.enumDefinitions { + if _type.name == it.name { + return true; + } + } + for it in data.nodes.unionDefinitions { + if _type.name == it.name { + return true; + } + } + return false; + } + + return true; +} diff --git a/core/bindgen/generator-export.odin b/core/bindgen/generator-export.odin new file mode 100644 index 000000000..a04113ed9 --- /dev/null +++ b/core/bindgen/generator-export.odin @@ -0,0 +1,166 @@ +package bindgen + +import "core:os" +import "core:fmt" + +export_defines :: proc(data : ^GeneratorData) { + for node in data.nodes.defines { + defineName := clean_define_name(node.name, data.options); + + // @fixme fprint of float numbers are pretty badly handled, + // just has a 10^-3 precision. + fcat(data.handle, defineName, " :: ", node.value, ";\n"); + } + fcat(data.handle, "\n"); +} + +export_typedefs :: proc(data : ^GeneratorData) { + for node in data.nodes.typedefs { + name := clean_pseudo_type_name(node.name, data.options); + type := clean_type(data, node.type, "", true); + if name == type do continue; + fcat(data.handle, name, " :: ", type, ";\n"); + } + fcat(data.handle, "\n"); +} + +export_enums :: proc(data : ^GeneratorData) { + for node in data.nodes.enumDefinitions { + enumName := clean_pseudo_type_name(node.name, data.options); + + if data.options.mode == "jai" { + consideredFlags := false; + for postfix in data.options.enumConsideredFlagsPostfixes { + if ends_with(node.name, postfix) { + consideredFlags = true; + break; + } + } + + if consideredFlags { + fcat(data.handle, enumName, " :: enum_flags u32 {"); + } else { + fcat(data.handle, enumName, " :: enum s32 {"); + } + } else { + fcat(data.handle, enumName, " :: enum i32 {"); + } + + postfixes : [dynamic]string; + enumName, postfixes = clean_enum_name_for_prefix_removal(enumName, data.options); + + // Changing the case of postfixes to the enum value one, + // so that they can be removed. + enumValueCase := find_case(node.members[0].name); + for postfix, i in postfixes { + postfixes[i] = change_case(postfix, enumValueCase); + } + + // And changing the case of enumName to the enum value one + enumName = change_case(enumName, enumValueCase); + + // Merging enum value postfixes with postfixes that have been removed from the enum name. + for postfix in data.options.enumValuePostfixes { + append(&postfixes, postfix); + } + + export_enum_members(data, node.members, enumName, postfixes[:]); + fcat(data.handle, data.options.mode == "jai" ? "}\n" : "};\n"); + fcat(data.handle, "\n"); + } +} + +export_structs :: proc(data : ^GeneratorData) { + for node in data.nodes.structDefinitions { + structName := clean_pseudo_type_name(node.name, data.options); + fcat(data.handle, structName, " :: struct {"); + export_struct_or_union_members(data, node.members); + fcat(data.handle, data.options.mode == "jai" ? "}\n" : "};\n"); + fcat(data.handle, "\n"); + } +} + +export_unions :: proc(data : ^GeneratorData) { + for node in data.nodes.unionDefinitions { + unionName := clean_pseudo_type_name(node.name, data.options); + fcat(data.handle, unionName, data.options.mode == "jai" ? " :: union {" : " :: struct #raw_union {"); + export_struct_or_union_members(data, node.members); + fcat(data.handle, data.options.mode == "jai" ? "}\n" : "};\n"); + fcat(data.handle, "\n"); + } +} + +export_functions :: proc(data : ^GeneratorData) { + for node in data.nodes.functionDeclarations { + functionName := clean_function_name(node.name, data.options); + if data.options.mode == "jai" { + fcat(data.handle, functionName, " :: ("); + } else { + fcat(data.handle, " @(link_name=\"", node.name, "\")\n"); + fcat(data.handle, " ", functionName, " :: proc("); + } + parameters := clean_function_parameters(data, node.parameters, data.options.mode == "jai" ? "" : " "); + fcat(data.handle, parameters, ")"); + returnType := clean_type(data, node.returnType); + if len(returnType) > 0 { + fcat(data.handle, " -> ", returnType); + } + if data.options.mode == "jai" { + fcat(data.handle, " #foreign ", data.foreignLibrary, " \"", node.name ,"\";\n"); + } else { + fcat(data.handle, " ---;\n"); + } + fcat(data.handle, "\n"); + } +} + +export_enum_members :: proc(data : ^GeneratorData, members : [dynamic]EnumMember, enumName : string, postfixes : []string) { + if (len(members) > 0) { + fcat(data.handle, "\n"); + } + + cleanedMembers : [dynamic]EnumMember; + for member in members { + cleanedMember : EnumMember; + cleanedMember.hasValue = member.hasValue; + cleanedMember.value = member.value; + cleanedMember.name = clean_enum_value_name(member.name, enumName, postfixes, data.options); + + if len(cleanedMember.name) == 0 { + // print_warning("Enum member ", member.name, " resolves to an empty name. Ignoring it."); + continue; + } + + // Ensuring that we don't collide with an other enum member. + foundCopy := false; + for existingCleanedMember in cleanedMembers { + if cleanedMember.name == existingCleanedMember.name && + cleanedMember.hasValue == existingCleanedMember.hasValue && + cleanedMember.value == existingCleanedMember.value { + print_warning("Enum member ", member.name, " is duplicated once cleaned. Keeping only one copy."); + foundCopy = true; + break; + } + } + if foundCopy do continue; + + fcat(data.handle, " ", cleanedMember.name); + if member.hasValue { + fcat(data.handle, data.options.mode == "jai" ? " :: " : " = ", member.value); + } + fcat(data.handle, data.options.mode == "jai" ? ";\n" : ",\n"); + + append(&cleanedMembers, cleanedMember); + } +} + +export_struct_or_union_members :: proc(data : ^GeneratorData, members : [dynamic]StructOrUnionMember) { + if (len(members) > 0) { + fcat(data.handle, "\n"); + } + for member in members { + type := clean_type(data, member.type, " "); + name := clean_variable_name(member.name, data.options); + fcat(data.handle, " ", name, " : ", type, data.options.mode == "jai" ? ";\n" : ",\n"); + } +} diff --git a/core/bindgen/generator-helpers.odin b/core/bindgen/generator-helpers.odin new file mode 100644 index 000000000..a3b37f4f6 --- /dev/null +++ b/core/bindgen/generator-helpers.odin @@ -0,0 +1,392 @@ +package bindgen + +import "core:fmt" +import "core:os" +import "core:io" +import "core:strings" +import "core:unicode/utf8" + +Case :: enum { + Unknown, + Camel, + Constant, + Kebab, + Pascal, + Snake, +} + +WordCase :: enum { + Unknown, + Up, + Low, + FirstUp, + // When first upping, numbers are followed always by a capital + FirstUpNumberReset, +} + +// Change a character to a capital. +to_uppercase :: proc(c : rune) -> rune { + c := c; + if c >= 'a' && c <= 'z' { + c = c - 'a' + 'A'; + } + return c; +} + +// Change a character to lowercase. +to_lowercase :: proc(c : rune) -> rune { + c := c; + if c >= 'A' && c <= 'Z' { + c = c - 'A' + 'a'; + } + return c; +} + +// @note Stolen tprint and fprint from fmt package, because it was confusing due to args: ..any and sep default parameter. +tcat :: proc(args: ..any) -> string { + return fmt.tprint(args=args, sep=""); +} + +fcat :: proc(fd: os.Handle, args: ..any) -> int { + return fmt.fprint(fd=fd, args=args, sep=""); +} + +// Change the case convention of a word. +change_word_case :: proc(str : string, targetCase : WordCase) -> string { + newStr : string; + if targetCase == WordCase.Up { + for c in str { + newStr = tcat(newStr, to_uppercase(c)); + } + } + else if targetCase == WordCase.Low { + for c in str { + newStr = tcat(newStr, to_lowercase(c)); + } + } + else if targetCase == WordCase.FirstUp { + for c, i in str { + if i == 0 { + newStr = tcat(newStr, to_uppercase(c)); + } else { + newStr = tcat(newStr, to_lowercase(c)); + } + } + } + else if targetCase == WordCase.FirstUpNumberReset { + for c, i in str { + if i == 0 || (str[i - 1] >= '0' && str[i - 1] <= '9') { + newStr = tcat(newStr, to_uppercase(c)); + } else { + newStr = tcat(newStr, to_lowercase(c)); + } + } + } + return newStr; +} + +// Change the case convention of a string by detecting original convention, +// then splitting it into words. +change_case :: proc(str : string, targetCase : Case) -> string { + if targetCase == Case.Unknown { + return str; + } + + // Split + parts := autosplit_string(str); + + // Join + newStr : string; + if targetCase == Case.Pascal { + for part, i in parts { + newStr = tcat(newStr, change_word_case(part, WordCase.FirstUpNumberReset)); + } + } + else if targetCase == Case.Snake { + for part, i in parts { + newStr = tcat(newStr, change_word_case(part, WordCase.Low), (i != len(parts) - 1) ? "_" : ""); + } + } + else if targetCase == Case.Kebab { + for part, i in parts { + newStr = tcat(newStr, change_word_case(part, WordCase.Low), (i != len(parts) - 1) ? "-" : ""); + } + } + else if targetCase == Case.Camel { + for part, i in parts { + if i == 0 { + newStr = tcat(newStr, change_word_case(part, WordCase.Low)); + } else { + newStr = tcat(newStr, change_word_case(part, WordCase.FirstUpNumberReset)); + } + } + } + else if targetCase == Case.Constant { + for part, i in parts { + newStr = tcat(newStr, change_word_case(part, WordCase.Up), (i != len(parts) - 1) ? "_" : ""); + } + } + + return newStr; +} + +// Identify the case of the provided string. +// Full lowercase with no separator is identified as camelCase. +find_case :: proc(str : string) -> Case { + refuted : bool; + + // CONSTANT_CASE + refuted = false; + for c in str { + if (c != '_') && (c < 'A' || c > 'Z') && (c < '0' || c > '9') { + refuted = true; + break; + } + } + if !refuted do return Case.Constant; + + for c in str { + // snake_case + if c == '_' { + return Case.Snake; + } // kebab-case + else if c == '-' { + return Case.Kebab; + } + } + + // PascalCase + if str[0] >= 'A' && str[0] <= 'Z' { + return Case.Pascal; + } + + // camelCase + return Case.Camel; +} + +// Splits the string according to detected case. +// HeyBuddy -> {"Hey", "Buddy"} +// hey-buddy -> {"hey", "buddy"} +// _hey_buddy -> {"", "hey", "buddy"} +// and such... +autosplit_string :: proc(str : string) -> [dynamic]string { + lowCount := 0; + upCount := 0; + for c in str { + // If any '_', split according to that (CONSTANT_CASE or snake_case) + if c == '_' { + return split_from_separator(str, '_'); + } // If any '-', split according to that (kebab-case) + else if c == '-' { + return split_from_separator(str, '-'); + } + else if c >= 'a' && c <= 'z' { + lowCount += 1; + } + else if c >= 'A' && c <= 'Z' { + upCount += 1; + } + } + + // If it seems to be only one word + if lowCount == 0 || upCount == 0 { + parts : [dynamic]string; + append(&parts, str); + return parts; + } + + // Split at each uppercase letter (PascalCase or camelCase) + return split_from_capital(str); +} + +split_from_separator :: proc(str : string, sep : rune) -> [dynamic]string { + parts : [dynamic]string; + + lastI := 0; + + // Empty strings for starting separators in string + for c in str { + if c == sep { + append(&parts, ""); + lastI += 1; + } else { + break; + } + } + + // Ignore non letter prefix + if lastI == 0 { + for c in str { + if (c < 'a' || c > 'z') && (c < 'A' || c > 'Z') { + lastI += 1; + } + else { + break; + } + } + } + + for c, i in str { + if i > lastI + 1 && c == sep { + append(&parts, str[lastI:i]); + lastI = i + 1; + } + } + + append(&parts, str[lastI:]); + + return parts; +} + +split_from_capital :: proc(str : string) -> [dynamic]string { + parts : [dynamic]string; + + // Ignore non letter prefix + lastI := 0; + for c in str { + if (c < 'a' || c > 'z') && (c < 'A' || c > 'Z') { + lastI += 1; + } + else { + break; + } + } + + // We want to handle: + // myBrainIsCRAZY -> my Brain Is Crazy + // myCRAZYBrain -> my CRAZY Brain + // SOLO -> SOLO + + // Do split + for i := 1; i < len(str); i += 1 { + if str[i] >= 'A' && str[i] <= 'Z' { + // Do not split too much if it seems to be a capitalized word + if (lastI == i - 1) && (str[lastI] >= 'A' && str[lastI] <= 'Z') { + for ; i + 1 < len(str); i += 1 { + if str[i + 1] < 'A' || str[i + 1] > 'Z' { + break; + } + } + if (i + 1 == len(str)) && (str[i] >= 'A' && str[i] <= 'Z') { + i += 1; + } + } + + append(&parts, str[lastI:i]); + lastI = i; + } + } + + if lastI != len(str) { + append(&parts, str[lastI:]); + } + + return parts; +} + +// Check if str if prefixed with any of the provided strings, +// even combinaisons of those, and remove them. +remove_prefixes :: proc(str : string, prefixes : []string, transparentPrefixes : []string = nil) -> string { + str := str; + transparentStr := ""; + + found := true; + for found { + found = false; + + // Remove effective prefixes + for prefix in prefixes { + if len(str) >= len(prefix) && + str[:len(prefix)] == prefix { + str = str[len(prefix):]; + if len(str) != 0 && (str[0] == '_' || str[0] == '-') { + str = str[1:]; + } + found = true; + break; + } + } + + if found do continue; + + // Remove transparent ones, only one by one, + // as we want effective ones to be fully removed. + for prefix in transparentPrefixes { + if len(str) >= len(prefix) && + str[:len(prefix)] == prefix { + str = str[len(prefix):]; + transparentStr = tcat(transparentStr, prefix); + if len(str) != 0 && (str[0] == '_' || str[0] == '-') { + str = str[1:]; + transparentStr = tcat(transparentStr, '_'); + } + found = true; + break; + } + } + } + + return tcat(transparentStr, str); +} + +// Check if str if postfixes with any of the provided strings, +// even combinaisons of those, and remove them. +remove_postfixes_with_removed :: proc( + str : string, + postfixes : []string, + transparentPostfixes : []string = nil) -> (string, [dynamic]string) { + str := str; + removedPostfixes : [dynamic]string; + transparentStr := ""; + + found := true; + for found { + found = false; + + // Remove effective postfixes + for postfix in postfixes { + if ends_with(str, postfix) { + str = str[:len(str) - len(postfix)]; + if len(str) != 0 && (str[len(str)-1] == '_' || str[len(str)-1] == '-') { + str = str[:len(str)-1]; + } + append(&removedPostfixes, postfix); + found = true; + break; + } + } + + if found do continue; + + // Remove transparent ones, only one by one, + // as we want effective ones to be fully removed. + for postfix in transparentPostfixes { + if ends_with(str, postfix) { + str = str[:len(str) - len(postfix)]; + transparentStr = tcat(postfix, transparentStr); + if len(str) != 0 && (str[len(str)-1] == '_' || str[len(str)-1] == '-') { + str = str[:len(str)-1]; + transparentStr = tcat('_', transparentStr); + } + found = true; + break; + } + } + } + + return tcat(str, transparentStr), removedPostfixes; +} + +remove_postfixes :: proc( + str : string, + postfixes : []string, + transparentPostfixes : []string = nil) -> string { + str := str; + removedPostfixes : [dynamic]string; + str, removedPostfixes = remove_postfixes_with_removed(str, postfixes, transparentPostfixes); + return str; +} + +ends_with :: proc(str : string, postfix : string) -> bool { + return len(str) >= len(postfix) && str[len(str) - len(postfix):] == postfix; +} diff --git a/core/bindgen/generator.odin b/core/bindgen/generator.odin new file mode 100644 index 000000000..3ef3d69c0 --- /dev/null +++ b/core/bindgen/generator.odin @@ -0,0 +1,205 @@ +/** + * Odin binding generator from C header data. + */ + +package bindgen + +import "core:os" +import "core:fmt" +import "core:runtime" + +GeneratorOptions :: struct { + mode : string, // "odin" or "jai" + + // Variable + variableCase : Case, + + // Defines + definePrefixes : []string, + defineTransparentPrefixes : []string, + definePostfixes : []string, + defineTransparentPostfixes : []string, + defineCase : Case, + + // Pseudo-types + pseudoTypePrefixes : []string, + pseudoTypeTransparentPrefixes : []string, + pseudoTypePostfixes : []string, + pseudoTypeTransparentPostfixes : []string, + pseudoTypeCase : Case, + + // Enums + enumConsideredFlagsPostfixes : []string, + + // Functions + functionPrefixes : []string, + functionTransparentPrefixes : []string, + functionPostfixes : []string, + functionTransparentPostfixes : []string, + functionCase : Case, + + // Enum values + enumValuePrefixes : []string, + enumValueTransparentPrefixes : []string, + enumValuePostfixes : []string, + enumValueTransparentPostfixes : []string, + enumValueCase : Case, + enumValueNameRemove : bool, + enumValueNameRemovePostfixes : []string, + + parserOptions : ParserOptions, +} + +GeneratorData :: struct { + handle : os.Handle, + nodes : Nodes, + + // References + foreignLibrary : string, + options : ^GeneratorOptions, +} + +generate :: proc( + packageName : string, + foreignLibrary : string, + outputFile : string, + headerFiles : []string, + options : GeneratorOptions, +) { + options := options; + data : GeneratorData; + data.options = &options; + data.foreignLibrary = foreignLibrary; + + if options.mode == "" { + options.mode = "odin"; + } + + // Outputing odin file + errno : os.Errno; + + // chmod 664 when creating file + mode: int = 0; + when os.OS == "linux" || os.OS == "darwin" { + mode = os.S_IRUSR | os.S_IWUSR | os.S_IRGRP | os.S_IWGRP | os.S_IROTH; + } + + data.handle, errno = os.open(outputFile, os.O_WRONLY | os.O_CREATE | os.O_TRUNC, mode); + if errno != 0 { + fmt.eprint("[bindgen] Unable to write to output file ", outputFile, " (", errno ,")\n"); + return; + } + defer os.close(data.handle); + + if options.mode == "jai" { + fcat(data.handle, foreignLibrary, " :: #foreign_library \"", foreignLibrary, "\";\n"); + fcat(data.handle, "\n"); + } else { + fcat(data.handle, "package ", packageName, "\n"); + fcat(data.handle, "\n"); + fcat(data.handle, "foreign import \"", foreignLibrary, "\"\n"); + fcat(data.handle, "\n"); + fcat(data.handle, "import _c \"core:c\"\n"); + fcat(data.handle, "\n"); + } + + // Parsing header files + anonymousStructCount = 0; + anonymousUnionCount = 0; + anonymousEnumCount = 0; + + for headerFile in headerFiles { + bytes, ok := os.read_entire_file(headerFile); + if !ok { + fmt.eprint("[bindgen] Unable to read file ", headerFile, "\n"); + return; + } + + // We fuse the SOAs + headerNodes := parse(bytes, options.parserOptions); + merge_generic_nodes(&data.nodes.defines, &headerNodes.defines); + merge_generic_nodes(&data.nodes.enumDefinitions, &headerNodes.enumDefinitions); + merge_generic_nodes(&data.nodes.unionDefinitions, &headerNodes.unionDefinitions); + merge_forward_declared_nodes(&data.nodes.structDefinitions, &headerNodes.structDefinitions); + merge_generic_nodes(&data.nodes.functionDeclarations, &headerNodes.functionDeclarations); + merge_generic_nodes(&data.nodes.typedefs, &headerNodes.typedefs); + } + + // Exporting + export_defines(&data); + export_typedefs(&data); + export_enums(&data); + export_structs(&data); + export_unions(&data); + + // Foreign block for functions + if options.mode != "jai" { + foreignLibrarySimple := simplify_library_name(foreignLibrary); + fcat(data.handle, "@(default_calling_convention=\"c\")\n"); + fcat(data.handle, "foreign ", foreignLibrarySimple, " {\n"); + fcat(data.handle, "\n"); + } + + export_functions(&data); + + if options.mode != "jai" { + fcat(data.handle, "}\n"); + } +} + +// system:foo.lib -> foo +simplify_library_name :: proc(libraryName : string) -> string { + startOffset := 0; + endOffset := len(libraryName); + + for c, i in libraryName { + if startOffset == 0 && c == ':' { + startOffset = i + 1; + } + else if c == '.' { + endOffset = i; + break; + } + } + + return libraryName[startOffset:endOffset]; +} + +merge_generic_nodes :: proc(nodes : ^$T, headerNodes : ^T) { + for headerNode in headerNodes { + // Check that there are no duplicated nodes (due to forward declaration or such) + duplicatedIndex := -1; + for i := 0; i < len(nodes); i += 1 { + node := nodes[i]; + if node.name == headerNode.name { + duplicatedIndex = i; + break; + } + } + + if duplicatedIndex < 0 { + append(nodes, headerNode); + } + } +} + +merge_forward_declared_nodes :: proc(nodes : ^$T, headerNodes : ^T) { + for headerNode in headerNodes { + // Check that there are no duplicated nodes (due to forward declaration or such) + duplicatedIndex := -1; + for i := 0; i < len(nodes); i += 1 { + node := nodes[i]; + if node.name == headerNode.name { + duplicatedIndex = i; + break; + } + } + + if duplicatedIndex < 0 { + append(nodes, headerNode); + } + else if !headerNode.forwardDeclared && len(headerNode.members) > 0 { + nodes[duplicatedIndex] = headerNode; + } + } +} diff --git a/vendor/stb/lib/darwin/libstb_image.a b/vendor/stb/lib/darwin/libstb_image.a new file mode 100644 index 0000000000000000000000000000000000000000..06ce4432192e21268b40c487d33f54d0d4ec0007 GIT binary patch literal 55744 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 NM4g=;br$D{{|6{&o+bbQ literal 0 HcmV?d00001 diff --git a/vendor/stb/lib/darwin/stb_image.a b/vendor/stb/lib/darwin/stb_image.a new file mode 100644 index 0000000000000000000000000000000000000000..1379d6f9e70c8dd9a853de55e1f5346d8d17f244 GIT binary patch literal 97544 zcmeFa3wTsTwlChDZjufJDk^GJggC|-qK*7<+ylPZo?_bHaqpxe#O)um8qT^3#U%Lb(%-D;cteWer+~a zw#`;#J}H6T?=zp(=JQGO`3Lj)s`=byK0h#@$INFwU=y4|^Lc~${E_(#n9mjF^Iy&9 zM)SGHeE!XRo;061SrYEq=JP7^=`){|=JQeW`OoI_x8`$)`P^$hKQ^CP4hi>s^I2*> z=a|p1`TSS&x!HWaZ9ZL2S^iS zfV^=2gJ#*e_f!$E`|-GU_5%;hJ~et_#q9g%n9=hdn0@b@^2(|?sfY(F=UZtAB5D2u z9kPprHP%S)~;zk8m)@B3*$TiIoDI{eI(zLlWe zy)_UK`p0}>c`7Xvb}BjpFp&||q{MV;rbVYylX}`jLUek`wV7}I<78%)iJ7$%=k(hS zQAVVswIVYTWKXYMWIh%8z4IzhQ*mWlX){k>KA;NCq&{f$2Xx^ae|hEo^A?m7@6RJx zso`N(^$j^PIiE82JI+i%kK8}+?(%!)RLs9;PWjz|%E~zwZ=@$Y01W0=^ix76l;0be zvvA?Ud5>5_0}v_4os9c@f#x(`ohcqRK~l^as@|i891fGrYxYJm@LZgUbs-ctI9ORER2Um_X~TY zGT@z=7Ei$xyoYC35y0~DOn3z*e$ScZ3V|Q}O_^%9QCrUvZ@oX|7Gh>pUwBcIFY}BY_?d>q(6_^FP0gret3i|csJ<4(_yv+9IcS%6A%yCw5 z^4sxyV8QGP5{ZlEJ$O%fxlff4Gfx1wsVlpHa7(ffvfP3Xd_CofwpY?qd%fQq11l6-BySvAwl_E zP*j`ojND_ljRZ3To^1;L(O<~?cNw1R@sDKIfAw#=#{Z`2-_!Uu zjW_xDr#}9kk00~!4w2^NjT%2Bf^t~->O%ALwxN_n4J zwVIE+QHRRIANM4aUjCYwzp3$~Uf!eWf_cz7jeA<~MugT3V`MU!)VR`)7#GEGrOnF9 zl~#@aq(iHxeyWy<-Ay$VqCbuEr{p7ohtFu}K$Sk8lr7O$H6zx`SG7_iM;-6__(wi| zSk(n?A{UVXMsjy&|*glwXS!ySWlskcfClp%3QsukM*5N559(aZmV@fK$=)id43~1OGnvR`duEUcR01zrqvlTz0m~J4$xePP^HzM26;R z$(ZJD4s=-EnYhqX@3`%@A zI1c@lwD~V2oN_eX)2!+v75zFzKgY*E1g-)vA8!MfjQnQu{6AJXl~wj={0+$}G(0j` z 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 VgvCIU*OUwPCyoSGl89s9wlAP9^WFde literal 0 HcmV?d00001 diff --git a/vendor/stb/lib/darwin/stb_image_resize.a b/vendor/stb/lib/darwin/stb_image_resize.a new file mode 100644 index 0000000000000000000000000000000000000000..f39c507a6c92d777f16c781d44a9dd3b623c42f9 GIT binary patch literal 36824 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�v~7pkgTJ;d*1^hn>h_iu?g+9QcFkLJdSa5i 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 literal 0 HcmV?d00001 diff --git a/vendor/stb/lib/darwin/stb_rect_pack.a b/vendor/stb/lib/darwin/stb_rect_pack.a new file mode 100644 index 0000000000000000000000000000000000000000..3b55ab8025d7dca76643a92399f45397e35f46e7 GIT binary patch literal 5064 zcma)A4{Q_H89x&fjB7XpX$g#Wx8k-~t3#ZG1TT=~;Ep`AJN_jeOe4L7V2DNjfPF5Z zvPmWr#M@y&TQ`k~Zb*|hG-(5EMd}#a9D+z`vNnON)!J&KU8@#cCQ7C>&<*ct z5G7B3_j}*>{l4#g@7=q1&-b-e_2Gub3j0#;@}ffSVeyuh6#IOorQVesx1!Js2E*(v zEG#W4;W+P#QcA9~D@sB2cVt0a$5n6KQX>is6pmb=+<>}(;xiQ2Qmg}1BI=ItUM18L zQWdp6ygR6xs=f6Mdz5gnL5-N2NKlRLRqC6XTK6lhQB`T(r8Ebd$6FhN(QqiDh8iF? zDU*(?=+WaUDO*XWq0SDe=?N$#m4a41-dp!?KbXZZmK=~QP_0mHGvLBOg|Z0h5n`C6 zha713H+H&P)Q+7Qpvp_xsFQ|Cf~=htfHs_o~0^1FPu0wgK17wxOOX2MLMrMh+!6E(6TRWq7Mqz*TvcJ16-s zMj*O`w=P4;s+9;=72^FXd#YA}OC@M4X}??fZ}S1ZrWz$aYeRSlHQepI#vVHd_s)<1 z%j0)Ya&4aXDz>3a7fPh^{l2%NcTsWVuh_V(3d)b<#qtw@R@Ocu? z=}kfCRF60a{Z{sfeFSd)jtrnj=+z(6n@@u)B^Yc8rzumykOz!gzNn86 zIm;!!yvAj1FDn-Z<4zWCv7d|%dM`1M|IE6lxjyBqcK?QPtP$2(GPhuiF+2d^ViUjwICzo zk40aJD{hyyW}E1XGO=Mvi=U7?Z?lIE1BcgY8Nody;SmXcz#f?oL-pf6Kkh+E-i9>4 z&9~^_zj@yh7km6mSXC1K1pmVr@hN@8Ft+xUWST8qFy@Z(_11Q`CZ7UzY+kwC7ju-? z_Qw}OOP!f^V!033_QUY>?&2wu)6IRb2#^*{q0V8X87o6GR)!YrkhJC#?4j>NqNI-; zd5|xMyV)L-HNnNnFbQFVU)KWtJa+Q9((2cc&5tD)hqSrAdGWbO+YIy91&iiQga;%o za74nnNZV%5i5qwXy*C2e?uc;6Lml=_gF99J8AqK!9`d)ek zdJQseClzvng$c`qL_nF8$YLKacC%a5dwV-{K_YJYf zf2!Z-Dx0s6J@!Lr3rTB{H^pCoCL{W~w>$N_g&}N4eyHhL*9K!V9#C$X93?x=Lqii zc+1~KJS5_Gczjv(U5Wif!1KsFWX%GZ0F+#Pi=>-eaZiUiR+#z=H=#W`M?mQ@C~q5- z^@MUei&6$ki1K@bvYk*)!)0ugJcDw=psXd7UuIE0*KI4B4GMYPU8u{V6oU*Mtv4v& zB$Vf}C{Ba&oI&|Ip%j=DLg9$+OsJ0tSP0W-mZyvcOy>AP^~_{;@>(XP&43C1uNr!WgG0)|wwV*`gXHi6 zML!GDW00XSu9lewlJhE*3I2}*n{uO#|oy@;t3VZz& z_Cr(He>H_Yj}F)J(iXD@l$H#jfI4?upPI=_M>&4{BiCIT;lQWN5kHcZe$n!Fwbl=F6u7e42 z$#_14x|#CmdYHf?{gdrz4dsz_p%=6NszmP5(cX>z1>pac^67n^5SR4d1iaU$!Fw5a z-P7P*1m2&g!TSh!f0zc(0f(bkr@<=$-q|U5S73pVzi1Z$f&Tb;iod1!3u-?}O0O7Bo=M_NsJ^5oQ9|nYeo?K03Hz53; zd>@psusyfno)IKF67jzS>xb|c1A@x)xV|VE&uI|gm)k+Hj$$Q6jv_pTxieJ7ez4(9~sfpG8zQ_hmozH}^?0P7>eT z7td4K+y}`Uo!HHN?@ekSyU($}G2bhtU?;Nq9@#@>b3gkTl>zip3s<0z7P1G9mCdg( z<6p|g`%>9Q-uWhDicdY{i;vP84($%L)Hgw6XD|#OLzMbRBp6neu-anAne1zj9-vV_ zU>M&h!ol$_qel)?{qRduK|^cP&Vpjo@QA?}j3Sef?K*16Ixl6pO&ZucS>RE_BLjPx F{{yO}#B2Zn literal 0 HcmV?d00001 diff --git a/vendor/stb/lib/darwin/stb_truetype.a b/vendor/stb/lib/darwin/stb_truetype.a new file mode 100644 index 0000000000000000000000000000000000000000..c4a895b54b69c674e69c31dc2464951a929cc3a4 GIT binary patch literal 67008 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 r6E3W Date: Fri, 4 Feb 2022 13:45:36 -0500 Subject: [PATCH 005/130] Reverted experimental changes that were meant for a branch, in sync with master --- Makefile | 2 +- core/bindgen/c-parser-evaluate.odin | 266 --------- core/bindgen/c-parser-helpers.odin | 267 --------- core/bindgen/c-parser-nodes.odin | 132 ----- core/bindgen/c-parser.odin | 840 ---------------------------- core/bindgen/errors.odin | 44 -- core/bindgen/generator-clean.odin | 284 ---------- core/bindgen/generator-export.odin | 166 ------ core/bindgen/generator-helpers.odin | 392 ------------- core/bindgen/generator.odin | 205 ------- wasm-ld | 1 - 11 files changed, 1 insertion(+), 2598 deletions(-) delete mode 100644 core/bindgen/c-parser-evaluate.odin delete mode 100644 core/bindgen/c-parser-helpers.odin delete mode 100644 core/bindgen/c-parser-nodes.odin delete mode 100644 core/bindgen/c-parser.odin delete mode 100644 core/bindgen/errors.odin delete mode 100644 core/bindgen/generator-clean.odin delete mode 100644 core/bindgen/generator-export.odin delete mode 100644 core/bindgen/generator-helpers.odin delete mode 100644 core/bindgen/generator.odin delete mode 120000 wasm-ld diff --git a/Makefile b/Makefile index df5fe0605..d3d3c6a2d 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ ifeq ($(OS), Darwin) LLVM_VERSIONS = "13.%.%" else # allow for x86 / amd64 all llvm versions begining from 11 - LLVM_VERSIONS = "13.%.%" "12.0.1" "11.0.0" + LLVM_VERSIONS = "13.%.%" "12.0.1" "11.1.0" endif LLVM_VERSION_PATTERN_SEPERATOR = )|( diff --git a/core/bindgen/c-parser-evaluate.odin b/core/bindgen/c-parser-evaluate.odin deleted file mode 100644 index 13cb5042c..000000000 --- a/core/bindgen/c-parser-evaluate.odin +++ /dev/null @@ -1,266 +0,0 @@ -package bindgen - -import "core:fmt" -import "core:strconv" - -// Evaluates an expression to a i64, without checking. -evaluate_i64 :: proc(data : ^ParserData) -> i64 { - ok : bool; - value : LiteralValue; - - value, ok = evaluate(data); - return value.(i64); -} - -// Evaluate an expression, returns whether it succeeded. -evaluate :: proc(data : ^ParserData) -> (LiteralValue, bool) { - return evaluate_level_5(data); -} - -// @note Evaluate levels numbers are based on -// https://en.cppreference.com/w/c/language/operator_precedence. - -// Bitwise shift level. -evaluate_level_5 :: proc(data : ^ParserData) -> (value : LiteralValue, ok : bool) { - value, ok = evaluate_level_4(data); - if !ok do return; - - invalid_value : LiteralValue; - token := peek_token(data); - - if token == "<<" { - v : LiteralValue; - eat_token(data); - - v, ok = evaluate_level_5(data); - if is_i64(v) do value = value.(i64) << cast(u64) v.(i64); - else do invalid_value = v; - } else if token == ">>" { - v : LiteralValue; - eat_token(data); - - v, ok = evaluate_level_5(data); - if is_i64(v) do value = value.(i64) >> cast(u64) v.(i64); - else do invalid_value = v; - } - - if invalid_value != nil { - print_warning("Invalid operand for bitwise shift ", invalid_value); - } - - return; -} - -// Additive level. -evaluate_level_4 :: proc(data : ^ParserData) -> (value : LiteralValue, ok : bool) { - value, ok = evaluate_level_3(data); - if !ok do return; - - token := peek_token(data); - if token == "+" { - v : LiteralValue; - eat_token(data); - v, ok = evaluate_level_4(data); - if is_i64(v) do value = value.(i64) + v.(i64); - else if is_f64(v) do value = value.(f64) + v.(f64); - } - else if token == "-" { - v : LiteralValue; - eat_token(data); - v, ok = evaluate_level_4(data); - if is_i64(v) do value = value.(i64) - v.(i64); - else if is_f64(v) do value = value.(f64) - v.(f64); - } - - return; -} - -// Multiplicative level. -evaluate_level_3 :: proc(data : ^ParserData) -> (value : LiteralValue, ok : bool) { - value, ok = evaluate_level_2(data); - if !ok do return; - - token := peek_token(data); - if token == "*" { - v : LiteralValue; - eat_token(data); - v, ok = evaluate_level_3(data); - if is_i64(v) do value = value.(i64) * v.(i64); - else if is_f64(v) do value = value.(f64) * v.(f64); - } - else if token == "/" { - v : LiteralValue; - eat_token(data); - v, ok = evaluate_level_3(data); - if is_i64(v) do value = value.(i64) / v.(i64); - else if is_f64(v) do value = value.(f64) / v.(f64); - } - - return; -} - -// Prefix level. -evaluate_level_2 :: proc(data : ^ParserData) -> (value : LiteralValue, ok : bool) { - token := peek_token(data); - - // Bitwise not - if token == "~" { - check_and_eat_token(data, "~"); - value, ok = evaluate_level_2(data); - value = ~value.(i64); - } - else { - // @note Should call evaluate_level_1, but we don't have that because we do not dereferenciation. - value, ok = evaluate_level_0(data); - } - - return; -} - -// Does not try to compose with arithmetics, it just evaluates one single expression. -evaluate_level_0 :: proc(data : ^ParserData) -> (value : LiteralValue, ok : bool) { - ok = true; - value = 0; - token := peek_token(data); - - // Parentheses - if token == "(" { - value, ok = evaluate_parentheses(data); - } // Number literal - else if (token[0] == '-') || (token[0] >= '0' && token[0] <= '9') { - value, ok = evaluate_number_literal(data); - } // String literal - else if token[0] == '"' { - value = evaluate_string_literal(data); - } // Function-like - else if token == "sizeof" { - value = evaluate_sizeof(data); - } // Knowned literal - else if token in data.knownedLiterals { - value = evaluate_knowned_literal(data); - } // Custom expression - else if token in data.options.customExpressionHandlers { - value = data.options.customExpressionHandlers[token](data); - } - else { - print_warning("Unknown token ", token, " for expression evaluation."); - ok = false; - } - - return; -} - -evaluate_sizeof :: proc(data : ^ParserData) -> LiteralValue { - print_warning("Using 'sizeof()'. Currently not able to precompute that. Please check generated code."); - - check_and_eat_token(data, "sizeof"); - check_and_eat_token(data, "("); - for data.bytes[data.offset] != ')' { - data.offset += 1; - } - check_and_eat_token(data, ")"); - return 1; -} - -evaluate_parentheses :: proc(data : ^ParserData) -> (value : LiteralValue, ok : bool) { - check_and_eat_token(data, "("); - - // Cast to int (via "(int)" syntax) - token := peek_token(data); - if token == "int" { - check_and_eat_token(data, "int"); - check_and_eat_token(data, ")"); - value, ok = evaluate(data); - return; - } // Cast to enum value (via "(enum XXX)" syntax) - else if token == "enum" { - check_and_eat_token(data, "enum"); - eat_token(data); - check_and_eat_token(data, ")"); - value, ok = evaluate(data); - return; - } - - value, ok = evaluate(data); - check_and_eat_token(data, ")"); - return; -} - -evaluate_number_literal :: proc(data : ^ParserData, loc := #caller_location) -> (value : LiteralValue, ok : bool) { - token := parse_any(data); - - // Unary - before numbers - numberLitteral := token; - for token == "-" { - token = parse_any(data); - numberLitteral = tcat(numberLitteral, token); - } - token = numberLitteral; - - // Check if any point or scientific notation in number - foundPointOrExp := false; - for c in token { - if c == '.' || c == 'e' || c == 'E' { - foundPointOrExp = true; - break; - } - } - - isHexadecimal := len(token) >= 2 && token[:2] == "0x"; - - // Computing postfix - tokenLength := len(token); - l := tokenLength - 1; - for l > 0 { - c := token[l]; - if c >= '0' && c <= '9' { break; } - if isHexadecimal && ((c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')) { break; } - l -= 1; - } - - postfix : string; - if l != tokenLength - 1 { - postfix = token[l+1:]; - token = token[:l+1]; - } - - if postfix != "" && (postfix[0] == 'u' || postfix[0] == 'U') { - print_warning("Found number litteral '", token, "' with unsigned postfix, we cast it to an int64 internally."); - } - - // Floating point - if !isHexadecimal && (foundPointOrExp || postfix == "f") { - value, ok = strconv.parse_f64(token); - } // Integer - else { - value, ok = strconv.parse_i64(token); - } - - if !ok { - print_error(data, loc, "Expected number litteral but got '", token, "'."); - } - - return value, ok; -} - -evaluate_string_literal :: proc(data : ^ParserData) -> string { - token := parse_any(data); - return token; -} - -evaluate_knowned_literal :: proc(data : ^ParserData) -> LiteralValue { - token := parse_any(data); - return data.knownedLiterals[token]; -} - -is_i64 :: proc(value : LiteralValue) -> (ok : bool) { - v : i64; - v, ok = value.(i64); - return ok; -} - -is_f64 :: proc(value : LiteralValue) -> (ok : bool) { - v : f64; - v, ok = value.(f64); - return ok; -} diff --git a/core/bindgen/c-parser-helpers.odin b/core/bindgen/c-parser-helpers.odin deleted file mode 100644 index a99d83dd2..000000000 --- a/core/bindgen/c-parser-helpers.odin +++ /dev/null @@ -1,267 +0,0 @@ -package bindgen - -import "core:os" -import "core:fmt" -import "core:strings" -import "core:strconv" - -// Extract from start (included) to end (excluded) offsets -extract_string :: proc(data : ^ParserData, startOffset : u32, endOffset : u32) -> string { - return strings.string_from_ptr(&data.bytes[startOffset], cast(int) (endOffset - startOffset)); -} - -// Peek the end offset of the next token -peek_token_end :: proc(data : ^ParserData) -> u32 { - offset : u32; - - for true { - eat_whitespaces_and_comments(data); - if data.offset >= data.bytesLength { - return data.bytesLength; - } - offset = data.offset; - - // Identifier - if (data.bytes[offset] >= 'a' && data.bytes[offset] <= 'z') || - (data.bytes[offset] >= 'A' && data.bytes[offset] <= 'Z') || - (data.bytes[offset] == '_') { - offset += 1; - for (data.bytes[offset] >= 'a' && data.bytes[offset] <= 'z') || - (data.bytes[offset] >= 'A' && data.bytes[offset] <= 'Z') || - (data.bytes[offset] >= '0' && data.bytes[offset] <= '9') || - (data.bytes[offset] == '_') { - offset += 1; - } - } - if offset != data.offset { - // Nothing to do: we found an identifier - } // Number literal - else if (data.bytes[offset] >= '0' && data.bytes[offset] <= '9') { - offset += 1; - // Hexademical literal - if data.bytes[offset - 1] == '0' && data.bytes[offset] == 'x' { - offset += 1; - for (data.bytes[offset] >= '0' && data.bytes[offset] <= '9') || - (data.bytes[offset] >= 'a' && data.bytes[offset] <= 'f') || - (data.bytes[offset] >= 'A' && data.bytes[offset] <= 'F') { - offset += 1; - } - } // Basic number literal - else { - for (data.bytes[offset] >= '0' && data.bytes[offset] <= '9') || - data.bytes[offset] == '.' { - offset += 1; - } - - if (data.bytes[offset] == 'e' || data.bytes[offset] == 'E') { - offset += 1; - if data.bytes[offset] == '-' { - offset += 1; - } - } - - for (data.bytes[offset] >= '0' && data.bytes[offset] <= '9') { - offset += 1; - } - } - - // Number suffix? - for (data.bytes[offset] == 'u' || data.bytes[offset] == 'U') || - (data.bytes[offset] == 'l' || data.bytes[offset] == 'L') || - (data.bytes[offset] == 'f') { - offset += 1; - } - } // String literal - else if data.bytes[offset] == '"' { - offset += 1; - for data.bytes[offset-1] == '\\' || data.bytes[offset] != '"' { - offset += 1; - } - offset += 1; - } // Possible shifts - else if data.bytes[offset] == '<' || data.bytes[offset] == '>' { - offset += 1; - if data.bytes[offset] == data.bytes[offset-1] { - offset += 1; - } - } // Single character - else { - offset += 1; - } - - token := extract_string(data, data.offset, offset); - - // Ignore __attribute__ - if token == "__attribute__" { - print_warning("__attribute__ is ignored."); - - for data.bytes[offset] != '(' { - offset += 1; - } - - parenthesesCount := 1; - for true { - offset += 1; - if data.bytes[offset] == '(' do parenthesesCount += 1; - else if data.bytes[offset] == ')' do parenthesesCount -= 1; - if parenthesesCount == 0 do break; - } - offset += 1; - - data.offset = offset; - } // Ignore certain keywords - else if (token == "inline" || token == "__inline" || token == "static" - || token == "restrict" || token == "__restrict" - || token == "volatile" - || token == "__extension__") { - data.offset = offset; - } // Ignore ignored tokens ;) - else { - for ignoredToken in data.options.ignoredTokens { - if token == ignoredToken { - data.offset = offset; - break; - } - } - } - - if data.offset != offset { - break; - } - } - - return offset; -} - -// Peek the next token (just eating whitespaces and comment) -peek_token :: proc(data : ^ParserData) -> string { - tokenEnd := peek_token_end(data); - if tokenEnd == data.bytesLength { - return "EOF"; - } - return extract_string(data, data.offset, tokenEnd); -} - -// Find the end of the define directive (understanding endline backslashes) -// @note Tricky cases like comments hiding a backslash effect are not handled. -peek_define_end :: proc(data : ^ParserData) -> u32 { - defineEndOffset := data.offset; - for data.bytes[defineEndOffset-1] == '\\' || data.bytes[defineEndOffset] != '\n' { - defineEndOffset += 1; - } - return defineEndOffset; -} - -eat_comment :: proc(data : ^ParserData) { - if data.offset >= data.bytesLength || data.bytes[data.offset] != '/' { - return; - } - - // Line comment - if data.bytes[data.offset + 1] == '/' { - eat_line(data); - } // Range comment - else if data.bytes[data.offset + 1] == '*' { - data.offset += 2; - for data.bytes[data.offset] != '*' || data.bytes[data.offset + 1] != '/' { - data.offset += 1; - } - data.offset += 2; - } -} - -// Eat whitespaces -eat_whitespaces :: proc(data : ^ParserData) { - // Effective whitespace - for data.offset < data.bytesLength && - (data.bytes[data.offset] == ' ' || data.bytes[data.offset] == '\t' || - data.bytes[data.offset] == '\r' || data.bytes[data.offset] == '\n') { - if data.bytes[data.offset] == '\n' && data.bytes[data.offset] != '\\' { - data.foundFullReturn = true; - } - data.offset += 1; - } -} - -// Removes whitespaces and comments -eat_whitespaces_and_comments :: proc(data : ^ParserData) { - startOffset : u32 = 0xFFFFFFFF; - for startOffset != data.offset { - startOffset = data.offset; - eat_whitespaces(data); - eat_comment(data); - } -} - -// Eat full line -eat_line :: proc(data : ^ParserData) { - for ; data.bytes[data.offset] != '\n'; data.offset += 1 { - } -} - -// Eat a line, and repeat if it ends with a backslash -eat_define_lines :: proc(data : ^ParserData) { - for data.bytes[data.offset-1] == '\\' || data.bytes[data.offset] != '\n' { - data.offset += 1; - } -} - -// Eat next token -eat_token :: proc(data : ^ParserData) { - data.offset = peek_token_end(data); -} - -// Eat next token -check_and_eat_token :: proc(data : ^ParserData, expectedToken : string, loc := #caller_location) { - token := peek_token(data); - if token != expectedToken { - print_error(data, loc, "Expected ", expectedToken, " but found ", token, "."); - } - data.offset += cast(u32) len(token); -} - -// Check whether the next token is outside #define range -is_define_end :: proc(data : ^ParserData) -> bool { - defineEnd := peek_define_end(data); - tokenEnd := peek_token_end(data); - - return (defineEnd < tokenEnd); -} - -// Check if the current #define is a macro definition -is_define_macro :: proc(data : ^ParserData) -> bool { - startOffset := data.offset; - defer data.offset = startOffset; - - token := parse_any(data); - if token != "(" do return false; - - // Find the other parenthesis - parenthesesCount := 1; - for parenthesesCount != 0 { - token = parse_any(data); - if token == "(" do parenthesesCount += 1; - else if token == ")" do parenthesesCount -= 1; - } - - // Its a macro if after the parentheses, it's not the end - return !is_define_end(data); -} - -// @note Very slow function to get line number, -// use only for errors. -// @todo Well, this does not seem to work properly, UTF-8 problem? -get_line_column :: proc(data : ^ParserData) -> (u32, u32) { - line : u32 = 1; - column : u32 = 0; - for i : u32 = 0; i < data.offset; i += 1 { - if data.bytes[i] == '\n' { - column = 0; - line += 1; - } - else { - column += 1; - } - } - return line, column; -} diff --git a/core/bindgen/c-parser-nodes.odin b/core/bindgen/c-parser-nodes.odin deleted file mode 100644 index 0620e0187..000000000 --- a/core/bindgen/c-parser-nodes.odin +++ /dev/null @@ -1,132 +0,0 @@ -package bindgen - -DefineNode :: struct { - name : string, - value : LiteralValue, -} - -StructDefinitionNode :: struct { - name : string, - members : [dynamic]StructOrUnionMember, - forwardDeclared : bool, -} - -UnionDefinitionNode :: struct { - name : string, - members : [dynamic]StructOrUnionMember, -} - -EnumDefinitionNode :: struct { - name : string, - members : [dynamic]EnumMember, -} - -FunctionDeclarationNode :: struct { - name : string, - returnType : Type, - parameters : [dynamic]FunctionParameter, -} - -TypedefNode :: struct { - name : string, - type : Type, -} - -Nodes :: struct { - defines : [dynamic]DefineNode, - enumDefinitions : [dynamic]EnumDefinitionNode, - unionDefinitions : [dynamic]UnionDefinitionNode, - structDefinitions : [dynamic]StructDefinitionNode, - functionDeclarations : [dynamic]FunctionDeclarationNode, - typedefs : [dynamic]TypedefNode, -} - -LiteralValue :: union { - i64, - f64, - string, -} - -// Type, might be an array -Type :: struct { - base : BaseType, - dimensions : [dynamic]u64, // Array dimensions -} - -BaseType :: union { - BuiltinType, - PointerType, - IdentifierType, - FunctionType, - FunctionPointerType, -} - -BuiltinType :: enum { - Unknown, - Void, - Int, - UInt, - LongInt, - ULongInt, - LongLongInt, - ULongLongInt, - ShortInt, - UShortInt, - Char, - SChar, - UChar, - Float, - Double, - LongDouble, - - // Not defined by C language but in - Int8, - Int16, - Int32, - Int64, - UInt8, - UInt16, - UInt32, - UInt64, - Size, - SSize, - PtrDiff, - UIntPtr, - IntPtr, -} - -PointerType :: struct { - type : ^Type, // Pointer is there to prevent definition cycle. Null means void. -} - -IdentifierType :: struct { - name : string, - anonymous : bool, // An anonymous identifier can be hard-given a name in some contexts. -} - -FunctionType :: struct { - returnType : ^Type, // Pointer is there to prevent definition cycle. Null means void. - parameters : [dynamic]FunctionParameter, -} - -FunctionPointerType :: struct { - name : string, - returnType : ^Type, // Pointer is there to prevent definition cycle. Null means void. - parameters : [dynamic]FunctionParameter, -} - -EnumMember :: struct { - name : string, - value : i64, - hasValue : bool, -} - -StructOrUnionMember :: struct { - name : string, - type : Type, -} - -FunctionParameter :: struct { - name : string, - type : Type, -} diff --git a/core/bindgen/c-parser.odin b/core/bindgen/c-parser.odin deleted file mode 100644 index c3ef4937f..000000000 --- a/core/bindgen/c-parser.odin +++ /dev/null @@ -1,840 +0,0 @@ -package bindgen - -import "core:os" -import "core:fmt" -import "core:strings" -import "core:strconv" - -// Global counters -anonymousStructCount := 0; -anonymousUnionCount := 0; -anonymousEnumCount := 0; - -knownTypeAliases : map[string]Type; - -CustomHandler :: proc(data : ^ParserData); -CustomExpressionHandler :: proc(data : ^ParserData) -> LiteralValue; - -ParserOptions :: struct { - ignoredTokens : []string, - - // Handlers - customHandlers : map[string]CustomHandler, - customExpressionHandlers : map[string]CustomExpressionHandler, -} - -ParserData :: struct { - bytes : []u8, - bytesLength : u32, - offset : u32, - - // References - nodes : Nodes, - options : ^ParserOptions, - - // Knowned values - knownedLiterals : map[string]LiteralValue, - - // Whether we have eaten a '\n' character that has no backslash just before - foundFullReturn : bool, -} - -is_identifier :: proc(token : string) -> bool { - return (token[0] >= 'a' && token[0] <= 'z') || - (token[0] >= 'A' && token[0] <= 'Z') || - (token[0] == '_'); -} - -parse :: proc(bytes : []u8, options : ParserOptions, loc := #caller_location) -> Nodes { - options := options; - - data : ParserData; - data.bytes = bytes; - data.bytesLength = cast(u32) len(bytes); - data.options = &options; - - for data.offset = 0; data.offset < data.bytesLength; { - token := peek_token(&data); - if data.offset == data.bytesLength do break; - - if token in options.customHandlers { - options.customHandlers[token](&data); - } - else if token == "{" || token == "}" || token == ";" { - eat_token(&data); - } - else if token == "extern" { - check_and_eat_token(&data, "extern"); - } - else if token == "\"C\"" { - check_and_eat_token(&data, "\"C\""); - } - else if token == "#" { - parse_directive(&data); - } - else if token == "typedef" { - parse_typedef(&data); - } - else if is_identifier(token) { - parse_variable_or_function_declaration(&data); - } - else { - print_error(&data, loc, "Unexpected token: ", token, "."); - return data.nodes; - } - } - - return data.nodes; -} - -parse_any :: proc(data : ^ParserData) -> string { - offset := peek_token_end(data); - identifier := extract_string(data, data.offset, offset); - data.offset = offset; - return identifier; -} - -parse_identifier :: proc(data : ^ParserData, loc := #caller_location) -> string { - identifier := parse_any(data); - - if (identifier[0] < 'a' || identifier[0] > 'z') && - (identifier[0] < 'A' || identifier[0] > 'Z') && - (identifier[0] != '_') { - print_error(data, loc, "Expected identifier but found ", identifier, "."); - } - - return identifier; -} - -parse_type_dimensions :: proc(data : ^ParserData, type : ^Type) { - token := peek_token(data); - for token == "[" { - eat_token(data); - token = peek_token(data); - if token == "]" { - pointerType : PointerType; - pointerType.type = new(Type); - pointerType.type^ = type^; // Copy - type.base = pointerType; - delete(type.dimensions); - } else { - dimension := evaluate_i64(data); - append(&type.dimensions, cast(u64) dimension); - } - check_and_eat_token(data, "]"); - token = peek_token(data); - } -} - -// This will parse anything that look like a type: -// Builtin: char/int/float/... -// Struct-like: struct A/struct { ... }/enum E -// Function pointer: void (*f)(...) -// -// Definition permitted: If a struct-like definition is found, it will generate -// the according Node and return a corresponding type. -parse_type :: proc(data : ^ParserData, definitionPermitted := false) -> Type { - type : Type; - - // Eat qualifiers - token := peek_token(data); - if token == "const" { - eat_token(data); - token = peek_token(data); - } - - // Parse main type - if token == "struct" { - type.base = parse_struct_type(data, definitionPermitted); - } - else if token == "union" { - type.base = parse_union_type(data); - } - else if token == "enum" { - type.base = parse_enum_type(data); - } - else { - // Test builtin type - type.base = parse_builtin_type(data); - if type.base.(BuiltinType) == BuiltinType.Unknown { - // Basic identifier type - identifierType : IdentifierType; - identifierType.name = parse_identifier(data); - type.base = identifierType; - } - } - - // Eat qualifiers - token = peek_token(data); - if token == "const" { - eat_token(data); - token = peek_token(data); - } - - // Check if pointer - for token == "*" { - check_and_eat_token(data, "*"); - token = peek_token(data); - - pointerType : PointerType; - pointerType.type = new(Type); - pointerType.type^ = type; // Copy - - type.base = pointerType; - - // Eat qualifiers - if token == "const" { - eat_token(data); - token = peek_token(data); - } - } - - // Parse array dimensions if any. - parse_type_dimensions(data, &type); - - // ----- Function pointer type - - if token == "(" { - check_and_eat_token(data, "("); - check_and_eat_token(data, "*"); - - functionPointerType : FunctionPointerType; - functionPointerType.returnType = new(Type); - functionPointerType.returnType^ = type; - functionPointerType.name = parse_identifier(data); - - check_and_eat_token(data, ")"); - parse_function_parameters(data, &functionPointerType.parameters); - - type.base = functionPointerType; - } - - return type; -} - -parse_builtin_type :: proc(data : ^ParserData) -> BuiltinType { - previousBuiltinType := BuiltinType.Unknown; - intFound := false; - shortFound := false; - signedFound := false; - unsignedFound := false; - longCount := 0; - - for true { - token := peek_token(data); - - // Attribute - attributeFound := true; - if token == "long" do longCount += 1; - else if token == "short" do shortFound = true; - else if token == "unsigned" do unsignedFound = true; - else if token == "signed" do signedFound = true; - else do attributeFound = false; - if attributeFound { eat_token(data); continue; } - - // Known type alias - if token in knownTypeAliases { - builtinType, ok := knownTypeAliases[token].base.(BuiltinType); - if ok { - eat_token(data); - previousBuiltinType = builtinType; - } - break; - } - - // Classic type and standard types - if token == "void" { eat_token(data); return BuiltinType.Void; } - else if token == "int" { - eat_token(data); - intFound = true; - } - else if token == "float" { eat_token(data); return BuiltinType.Float; } - else if token == "double" { - eat_token(data); - if longCount == 0 do return BuiltinType.Double; - else do return BuiltinType.LongDouble; - } - else if token == "char" { - eat_token(data); - if signedFound do return BuiltinType.SChar; - else if unsignedFound do return BuiltinType.UChar; - else do return BuiltinType.Char; - } - else if token == "__int8" { - // @note :MicrosoftDumminess __intX are Microsoft's fixed-size integers - // https://docs.microsoft.com/fr-fr/cpp/cpp/int8-int16-int32-int64 - // and for unsigned version, they prefixed it with "unsigned"... - eat_token(data); - if unsignedFound do return BuiltinType.UInt8; - else do return BuiltinType.Int8; - } - else if token == "__int16" { - eat_token(data); - if unsignedFound do return BuiltinType.UInt16; - else do return BuiltinType.Int16; - } - else if token == "__int32" { - eat_token(data); - if unsignedFound do return BuiltinType.UInt32; - else do return BuiltinType.Int32; - } - else if token == "__int64" { - eat_token(data); - if unsignedFound do return BuiltinType.UInt64; - else do return BuiltinType.Int64; - } - else if token == "int8_t" { eat_token(data); return BuiltinType.Int8; } - else if token == "int16_t" { eat_token(data); return BuiltinType.Int16; } - else if token == "int32_t" { eat_token(data); return BuiltinType.Int32; } - else if token == "int64_t" { eat_token(data); return BuiltinType.Int64; } - else if token == "uint8_t" { eat_token(data); return BuiltinType.UInt8; } - else if token == "uint16_t" { eat_token(data); return BuiltinType.UInt16; } - else if token == "uint32_t" { eat_token(data); return BuiltinType.UInt32; } - else if token == "uint64_t" { eat_token(data); return BuiltinType.UInt64; } - else if token == "size_t" { eat_token(data); return BuiltinType.Size; } - else if token == "ssize_t" { eat_token(data); return BuiltinType.SSize; } - else if token == "ptrdiff_t" { eat_token(data); return BuiltinType.PtrDiff; } - else if token == "uintptr_t" { eat_token(data); return BuiltinType.UIntPtr; } - else if token == "intptr_t" { eat_token(data); return BuiltinType.IntPtr; } - - break; - } - - // Adapt previous builtin type - if previousBuiltinType == BuiltinType.ShortInt { - shortFound = true; - } - else if previousBuiltinType == BuiltinType.Int { - intFound = true; - } - else if previousBuiltinType == BuiltinType.LongInt { - longCount += 1; - } - else if previousBuiltinType == BuiltinType.LongLongInt { - longCount += 2; - } - else if previousBuiltinType == BuiltinType.UShortInt { - unsignedFound = true; - shortFound = true; - } - else if previousBuiltinType == BuiltinType.UInt { - unsignedFound = true; - } - else if previousBuiltinType == BuiltinType.ULongInt { - unsignedFound = true; - longCount += 1; - } - else if previousBuiltinType == BuiltinType.ULongLongInt { - unsignedFound = true; - longCount += 2; - } - else if (previousBuiltinType != BuiltinType.Unknown) { - return previousBuiltinType; // float, void, etc. - } - - // Implicit and explicit int - if intFound || shortFound || unsignedFound || signedFound || longCount > 0 { - if unsignedFound { - if shortFound do return BuiltinType.UShortInt; - if longCount == 0 do return BuiltinType.UInt; - if longCount == 1 do return BuiltinType.ULongInt; - if longCount == 2 do return BuiltinType.ULongLongInt; - } else { - if shortFound do return BuiltinType.ShortInt; - if longCount == 0 do return BuiltinType.Int; - if longCount == 1 do return BuiltinType.LongInt; - if longCount == 2 do return BuiltinType.LongLongInt; - } - } - - return BuiltinType.Unknown; -} - -parse_struct_type :: proc(data : ^ParserData, definitionPermitted : bool) -> IdentifierType { - check_and_eat_token(data, "struct"); - - type : IdentifierType; - token := peek_token(data); - - if !definitionPermitted || token != "{" { - type.name = parse_identifier(data); - token = peek_token(data); - } else { - type.name = tcat("AnonymousStruct", anonymousStructCount); - type.anonymous = true; - anonymousStructCount += 1; - } - - if token == "{" { - node := parse_struct_definition(data); - node.name = type.name; - } else if definitionPermitted { - // @note Whatever happens, we create a definition of the struct, - // as it might be used to forward declare it and then use it only with a pointer. - // This for instance the pattern for xcb_connection_t which definition - // is never known from user API. - node : StructDefinitionNode; - node.forwardDeclared = false; - node.name = type.name; - append(&data.nodes.structDefinitions, node); - } - - return type; -} - -parse_union_type :: proc(data : ^ParserData) -> IdentifierType { - check_and_eat_token(data, "union"); - - type : IdentifierType; - token := peek_token(data); - - if token != "{" { - type.name = parse_identifier(data); - token = peek_token(data); - } else { - type.name = tcat("AnonymousUnion", anonymousUnionCount); - type.anonymous = true; - anonymousUnionCount += 1; - } - - if token == "{" { - node := parse_union_definition(data); - node.name = type.name; - } - - return type; -} - -parse_enum_type :: proc(data : ^ParserData) -> IdentifierType { - check_and_eat_token(data, "enum"); - - type : IdentifierType; - token := peek_token(data); - - if token != "{" { - type.name = parse_identifier(data); - token = peek_token(data); - } else { - type.name = tcat("AnonymousEnum", anonymousEnumCount); - type.anonymous = true; - anonymousEnumCount += 1; - } - - if token == "{" { - node := parse_enum_definition(data); - node.name = type.name; - } - - return type; -} - -/** - * We only care about defines of some value - */ -parse_directive :: proc(data : ^ParserData) { - check_and_eat_token(data, "#"); - - token := peek_token(data); - if token == "define" { - parse_define(data); - } // We ignore all other directives - else { - eat_line(data); - } -} - -parse_define :: proc(data : ^ParserData) { - check_and_eat_token(data, "define"); - data.foundFullReturn = false; - - node : DefineNode; - node.name = parse_identifier(data); - - // Does it look like end? It might be a #define with no expression - if is_define_end(data) { - node.value = 1; - append(&data.nodes.defines, node); - data.knownedLiterals[node.name] = node.value; - } // Macros are ignored - else if is_define_macro(data) { - print_warning("Ignoring define macro for ", node.name, "."); - } - else { - literalValue, ok := evaluate(data); - if ok { - node.value = literalValue; - append(&data.nodes.defines, node); - data.knownedLiterals[node.name] = node.value; - } - else { - print_warning("Ignoring define expression for ", node.name, "."); - } - } - - // Evaluating the expression, we might have already eaten a full return, - // if so, do nothing. - if !data.foundFullReturn { - eat_define_lines(data); - } -} - -// @fixme Move -change_anonymous_node_name :: proc (data : ^ParserData, oldName : string, newName : string) -> bool { - for i := 0; i < len(data.nodes.structDefinitions); i += 1 { - if data.nodes.structDefinitions[i].name == oldName { - data.nodes.structDefinitions[i].name = newName; - return true; - } - } - - for i := 0; i < len(data.nodes.enumDefinitions); i += 1 { - if data.nodes.enumDefinitions[i].name == oldName { - data.nodes.enumDefinitions[i].name = newName; - return true; - } - } - - for i := 0; i < len(data.nodes.unionDefinitions); i += 1 { - if data.nodes.unionDefinitions[i].name == oldName { - data.nodes.unionDefinitions[i].name = newName; - return true; - } - } - - return false; -} - -/** - * Type aliasing. - * typedef ; - */ -parse_typedef :: proc(data : ^ParserData) { - check_and_eat_token(data, "typedef"); - - // @note Struct-like definitions (and such) - // are generated within type parsing. - // - // So that typedef struct { int foo; }* Ap; is valid. - - // Parsing type - node : TypedefNode; - node.type = parse_type(data, true); - - if sourceType, ok := node.type.base.(FunctionPointerType); ok { - node.name = sourceType.name; - } else { - node.name = parse_identifier(data); - } - - // Checking if function type - token := peek_token(data); - if token == "(" { - functionType : FunctionType; - functionType.returnType = new(Type); - functionType.returnType^ = node.type; - - parse_function_parameters(data, &functionType.parameters); - - node.type.base = functionType; - } - - // Checking if array - parse_type_dimensions(data, &node.type); - - // If the underlying type is anonymous, - // we just affect it the name. - addTypedefNode := true; - if identifierType, ok := node.type.base.(IdentifierType); ok { - if identifierType.anonymous { - addTypedefNode = !change_anonymous_node_name(data, identifierType.name, node.name); - } - } - - if addTypedefNode { - knownTypeAliases[node.name] = node.type; - append(&data.nodes.typedefs, node); - } - - check_and_eat_token(data, ";"); - - // @note Commented tool for debug - // fmt.println("Typedef: ", node.type, node.name); -} - -parse_struct_definition :: proc(data : ^ParserData) -> ^StructDefinitionNode { - node : StructDefinitionNode; - node.forwardDeclared = false; - parse_struct_or_union_members(data, &node.members); - - append(&data.nodes.structDefinitions, node); - return &data.nodes.structDefinitions[len(data.nodes.structDefinitions) - 1]; -} - -parse_union_definition :: proc(data : ^ParserData) -> ^UnionDefinitionNode { - node : UnionDefinitionNode; - parse_struct_or_union_members(data, &node.members); - - append(&data.nodes.unionDefinitions, node); - return &data.nodes.unionDefinitions[len(data.nodes.unionDefinitions) - 1]; -} - -parse_enum_definition :: proc(data : ^ParserData) -> ^EnumDefinitionNode { - node : EnumDefinitionNode; - parse_enum_members(data, &node.members); - - append(&data.nodes.enumDefinitions, node); - return &data.nodes.enumDefinitions[len(data.nodes.enumDefinitions) - 1]; -} - -/** - * { - * = , - * , - * } - */ -parse_enum_members :: proc(data : ^ParserData, members : ^[dynamic]EnumMember) { - check_and_eat_token(data, "{"); - - nextMemberValue : i64 = 0; - token := peek_token(data); - for token != "}" { - member : EnumMember; - member.name = parse_identifier(data); - member.hasValue = false; - - token = peek_token(data); - if token == "=" { - check_and_eat_token(data, "="); - - member.hasValue = true; - member.value = evaluate_i64(data); - nextMemberValue = member.value; - token = peek_token(data); - } else { - member.value = nextMemberValue; - } - - data.knownedLiterals[member.name] = member.value; - nextMemberValue += 1; - - // Eat until end, as this might be a complex expression that we couldn't understand - if token != "," && token != "}" { - print_warning("Parser cannot understand fully the expression of enum member ", member.name, "."); - for token != "," && token != "}" { - eat_token(data); - token = peek_token(data); - } - } - if token == "," { - check_and_eat_token(data, ","); - token = peek_token(data); - } - - append(members, member); - } - - check_and_eat_token(data, "}"); -} - -/** - * { - * ; - * , ; - * []; - * } - */ -parse_struct_or_union_members :: proc(data : ^ParserData, structOrUnionMembers : ^[dynamic]StructOrUnionMember) { - check_and_eat_token(data, "{"); - - // To ensure unique id - unamedCount := 0; - - token := peek_token(data); - for token != "}" { - member : StructOrUnionMember; - member.type = parse_type(data, true); - - for true { - // In the case of function pointer types, the name has been parsed - // during type inspection. - if type, ok := member.type.base.(FunctionPointerType); ok { - member.name = type.name; - } - else { - // Unamed (struct or union) - token = peek_token(data); - if !is_identifier(token) { - member.name = tcat("unamed", unamedCount); - unamedCount += 1; - } - else { - member.name = parse_identifier(data); - } - } - - parse_type_dimensions(data, &member.type); - - token = peek_token(data); - if token == ":" { - check_and_eat_token(data, ":"); - print_warning("Found bitfield in struct, which is not handled correctly."); - evaluate_i64(data); - token = peek_token(data); - } - - append(structOrUnionMembers, member); - - // Multiple declarations on one line - if token == "," { - check_and_eat_token(data, ","); - continue; - } - - break; - } - - check_and_eat_token(data, ";"); - token = peek_token(data); - } - - check_and_eat_token(data, "}"); -} - -parse_variable_or_function_declaration :: proc(data : ^ParserData) { - type := parse_type(data, true); - - // If it's just a type, it might be a struct definition - token := peek_token(data); - if token == ";" { - check_and_eat_token(data, ";"); - return; - } - - // Eat array declaration if any - // @fixme The return type of a function declaration will be wrong! - for data.bytes[data.offset] == '[' { - for data.bytes[data.offset] != ']' { - data.offset += 1; - } - data.offset += 1; - } - - name := parse_identifier(data); - - token = peek_token(data); - if token == "(" { - functionDeclarationNode := parse_function_declaration(data); - functionDeclarationNode.returnType = type; - functionDeclarationNode.name = name; - return; - } else if token == "[" { - // Eat whole array declaration - for data.bytes[data.offset] == '[' { - for data.bytes[data.offset] != ']' { - data.offset += 1; - } - data.offset += 1; - } - } - - // Global variable declaration (with possible multiple declarations) - token = peek_token(data); - - for true { - if token == "," { - print_warning("Found global variable declaration '", name, "', we won't generated any binding for it."); - check_and_eat_token(data, ","); - - name = parse_identifier(data); - token = peek_token(data); - continue; - } - else if token == ";" { - if name != "" { - print_warning("Found global variable declaration '", name, "', we won't generated any binding for it."); - } - check_and_eat_token(data, ";"); - break; - } - - // Global variable assignment, considered as constant define. - node : DefineNode; - - check_and_eat_token(data, "="); - literalValue, ok := evaluate(data); - if ok { - node.name = name; - node.value = literalValue; - append(&data.nodes.defines, node); - } - else { - print_warning("Ignoring global variable expression for '", name, "'."); - } - - name = ""; - token = peek_token(data); - } -} - -parse_function_declaration :: proc(data : ^ParserData) -> ^FunctionDeclarationNode { - node : FunctionDeclarationNode; - - parse_function_parameters(data, &node.parameters); - - // Function definition? Ignore it. - token := peek_token(data); - if token == "{" { - bracesCount := 1; - for true { - data.offset += 1; - if data.bytes[data.offset] == '{' do bracesCount += 1; - else if data.bytes[data.offset] == '}' do bracesCount -= 1; - if bracesCount == 0 do break; - } - data.offset += 1; - } // Function declaration - else { - check_and_eat_token(data, ";"); - } - - append(&data.nodes.functionDeclarations, node); - return &data.nodes.functionDeclarations[len(data.nodes.functionDeclarations) - 1]; -} - -parse_function_parameters :: proc(data : ^ParserData, parameters : ^[dynamic]FunctionParameter) { - check_and_eat_token(data, "("); - - token := peek_token(data); - for token != ")" { - parameter : FunctionParameter; - - token = peek_token(data); - if token == "." { - print_warning("A function accepts variadic arguments, this is currently not handled within generated code."); - - check_and_eat_token(data, "."); - check_and_eat_token(data, "."); - check_and_eat_token(data, "."); - break; - } else { - parameter.type = parse_type(data); - } - - // Check if named parameter - token = peek_token(data); - if token != ")" && token != "," { - parameter.name = parse_identifier(data); - parse_type_dimensions(data, ¶meter.type); - token = peek_token(data); - } - - if token == "," { - eat_token(data); - token = peek_token(data); - } - - append(parameters, parameter); - } - - check_and_eat_token(data, ")"); -} diff --git a/core/bindgen/errors.odin b/core/bindgen/errors.odin deleted file mode 100644 index 9564c5244..000000000 --- a/core/bindgen/errors.odin +++ /dev/null @@ -1,44 +0,0 @@ -package bindgen - -import "core:fmt" -import "core:os" - -seenWarnings : map[string]bool; - -print_warning :: proc(args : ..any) { - message := tcat(..args); - - if !seenWarnings[message] { - fmt.eprint("[bindgen] Warning: ", message, "\n"); - seenWarnings[message] = true; - } -} - -print_error :: proc(data : ^ParserData, loc := #caller_location, args : ..any) { - message := tcat(..args); - - min : u32 = 0; - for i := data.offset - 1; i > 0; i -= 1 { - if data.bytes[i] == '\n' { - min = i + 1; - break; - } - } - - max := min + 200; - for i := min + 1; i < max; i += 1 { - if data.bytes[i] == '\n' { - max = i; - break; - } - } - - line, _ := get_line_column(data); - - fmt.eprint("[bindgen] Error: ", message, "\n"); - fmt.eprint("[bindgen] ... from ", loc.procedure, "\n"); - fmt.eprint("[bindgen] ... at line ", line, " within this context:\n"); - fmt.eprint("> ", extract_string(data, min, max), "\n"); - - os.exit(1); -} diff --git a/core/bindgen/generator-clean.odin b/core/bindgen/generator-clean.odin deleted file mode 100644 index 8dd837b10..000000000 --- a/core/bindgen/generator-clean.odin +++ /dev/null @@ -1,284 +0,0 @@ -package bindgen - -import "core:fmt" - -// Prevent keywords clashes and other tricky cases -clean_identifier :: proc(name : string) -> string { - name := name; - - if name == "" { - return name; - } - - // Starting with _? Try removing that. - for true { - if name[0] == '_' { - name = name[1:]; - } - else { - break; - } - } - - // Number - if name[0] >= '0' && name[0] <= '9' { - return tcat("_", name); - } // Keywords clash - else if name == "map" || name == "proc" || name == "opaque" || name == "in" { - return tcat("_", name); - } // Jai keywords clash - else if name == "context" || - name == "float32" || name == "float64" || - name == "s8" || name == "s16" || name == "s32" || name == "s64" || - name == "u8" || name == "u16" || name == "u32" || name == "u64" { - return tcat("_", name); - } - - return name; -} - -clean_variable_name :: proc(name : string, options : ^GeneratorOptions) -> string { - name := name; - name = change_case(name, options.variableCase); - return clean_identifier(name); -} - -clean_pseudo_type_name :: proc(structName : string, options : ^GeneratorOptions) -> string { - structName := structName; - structName = remove_postfixes(structName, options.pseudoTypePostfixes, options.pseudoTypeTransparentPostfixes); - structName = remove_prefixes(structName, options.pseudoTypePrefixes, options.pseudoTypeTransparentPrefixes); - structName = change_case(structName, options.pseudoTypeCase); - return structName; -} - -// Clean up the enum name so that it can be used to remove the prefix from enum values. -clean_enum_name_for_prefix_removal :: proc(enumName : string, options : ^GeneratorOptions) -> (string, [dynamic]string) { - enumName := enumName; - - if !options.enumValueNameRemove { - return enumName, nil; - } - - // Remove postfix and use same case convention as the enum values - removedPostfixes : [dynamic]string; - enumName, removedPostfixes = remove_postfixes_with_removed(enumName, options.enumValueNameRemovePostfixes); - enumName = change_case(enumName, options.enumValueCase); - return enumName, removedPostfixes; -} - -clean_enum_value_name :: proc(valueName : string, enumName : string, postfixes : []string, options : ^GeneratorOptions) -> string { - valueName := valueName; - - valueName = remove_prefixes(valueName, options.enumValuePrefixes, options.enumValueTransparentPrefixes); - valueName = remove_postfixes(valueName, postfixes, options.enumValueTransparentPostfixes); - - if options.enumValueNameRemove { - valueName = remove_prefixes(valueName, []string{enumName}); - } - - valueName = change_case(valueName, options.enumValueCase); - - return clean_identifier(valueName); -} - -clean_function_name :: proc(functionName : string, options : ^GeneratorOptions) -> string { - functionName := functionName; - functionName = remove_prefixes(functionName, options.functionPrefixes, options.functionTransparentPrefixes); - functionName = remove_postfixes(functionName, options.definePostfixes, options.defineTransparentPostfixes); - functionName = change_case(functionName, options.functionCase); - return functionName; -} - -clean_define_name :: proc(defineName : string, options : ^GeneratorOptions) -> string { - defineName := defineName; - defineName = remove_prefixes(defineName, options.definePrefixes, options.defineTransparentPrefixes); - defineName = remove_postfixes(defineName, options.definePostfixes, options.defineTransparentPostfixes); - defineName = change_case(defineName, options.defineCase); - return defineName; -} - -// Convert to Odin's types -clean_type :: proc(data : ^GeneratorData, type : Type, baseTab : string = "", explicitSharpType := true) -> string { - output := ""; - - for dimension in type.dimensions { - output = tcat(output, "[", dimension, "]"); - } - output = tcat(output, clean_base_type(data, type.base, baseTab, explicitSharpType)); - - return output; -} - -clean_base_type :: proc(data : ^GeneratorData, baseType : BaseType, baseTab : string = "", explicitSharpType := true) -> string { - options := data.options; - - if _type, ok := baseType.(BuiltinType); ok { - if _type == BuiltinType.Void do return options.mode == "jai" ? "void" : ""; - else if _type == BuiltinType.Int do return options.mode == "jai" ? "s64" : "_c.int"; - else if _type == BuiltinType.UInt do return options.mode == "jai" ? "u64" :"_c.uint"; - else if _type == BuiltinType.LongInt do return options.mode == "jai" ? "s64" :"_c.long"; - else if _type == BuiltinType.ULongInt do return options.mode == "jai" ? "u64" :"_c.ulong"; - else if _type == BuiltinType.LongLongInt do return options.mode == "jai" ? "s64" :"_c.longlong"; - else if _type == BuiltinType.ULongLongInt do return options.mode == "jai" ? "u64" :"_c.ulonglong"; - else if _type == BuiltinType.ShortInt do return options.mode == "jai" ? "s16" :"_c.short"; - else if _type == BuiltinType.UShortInt do return options.mode == "jai" ? "u16" :"_c.ushort"; - else if _type == BuiltinType.Char do return options.mode == "jai" ? "u8" :"_c.char"; - else if _type == BuiltinType.SChar do return options.mode == "jai" ? "s8" :"_c.schar"; - else if _type == BuiltinType.UChar do return options.mode == "jai" ? "u8" :"_c.uchar"; - else if _type == BuiltinType.Float do return options.mode == "jai" ? "float32" :"_c.float"; - else if _type == BuiltinType.Double do return options.mode == "jai" ? "float64" :"_c.double"; - else if _type == BuiltinType.LongDouble { - print_warning("Found long double which is currently not supported. Fallback to double in generated code."); - return options.mode == "jai" ? "double" :"_c.double"; - } - else if _type == BuiltinType.Int8 do return options.mode == "jai" ? "s8" :"i8"; - else if _type == BuiltinType.Int16 do return options.mode == "jai" ? "s16" :"i16"; - else if _type == BuiltinType.Int32 do return options.mode == "jai" ? "s32" :"i32"; - else if _type == BuiltinType.Int64 do return options.mode == "jai" ? "s64" :"i64"; - else if _type == BuiltinType.UInt8 do return options.mode == "jai" ? "u8" :"u8"; - else if _type == BuiltinType.UInt16 do return options.mode == "jai" ? "u16" :"u16"; - else if _type == BuiltinType.UInt32 do return options.mode == "jai" ? "u32" :"u32"; - else if _type == BuiltinType.UInt64 do return options.mode == "jai" ? "u64" :"u64"; - else if _type == BuiltinType.Size do return options.mode == "jai" ? "u64" :"_c.size_t"; - else if _type == BuiltinType.SSize do return options.mode == "jai" ? "u64" :"_c.ssize_t"; - else if _type == BuiltinType.PtrDiff do return options.mode == "jai" ? "s64" :"_c.ptrdiff_t"; - else if _type == BuiltinType.UIntPtr do return options.mode == "jai" ? "u64" :"_c.uintptr_t"; - else if _type == BuiltinType.IntPtr do return options.mode == "jai" ? "s64" :"_c.intptr_t"; - } - else if _type, ok := baseType.(PointerType); ok { - if options.mode == "jai" { - // Hide pointers to types that were not declared. - if !is_known_base_type(data, _type.type.base) { - print_warning("*", _type.type.base.(IdentifierType).name, " replaced by *void as the pointed type is unknown."); - return "*void"; - } - } else { - if __type, ok := _type.type.base.(BuiltinType); ok { - if __type == BuiltinType.Void do return "rawptr"; - else if __type == BuiltinType.Char do return "cstring"; - } - } - name := clean_type(data, _type.type^, baseTab); - return tcat(options.mode == "jai" ? "*" :"^", name); - } - else if _type, ok := baseType.(IdentifierType); ok { - return clean_pseudo_type_name(_type.name, options); - } - else if _type, ok := baseType.(FunctionType); ok { - output : string; - if explicitSharpType { - output = "#type "; - } - output = tcat(output, options.mode == "jai" ? "(" :"proc("); - parameters := clean_function_parameters(data, _type.parameters, baseTab); - output = tcat(output, parameters, ")"); - - returnType := clean_type(data, _type.returnType^); - if len(returnType) > 0 && returnType != "void" { - output = tcat(output, " -> ", returnType); - } - return output; - } - else if _type, ok := baseType.(FunctionPointerType); ok { - output : string; - if explicitSharpType { - output = "#type "; - } - output = tcat(output, options.mode == "jai" ? "(" :"proc("); - parameters := clean_function_parameters(data, _type.parameters, baseTab); - output = tcat(output, parameters, ")"); - - returnType := clean_type(data, _type.returnType^); - if len(returnType) > 0 && returnType != "void" { - output = tcat(output, " -> ", returnType); - } - - if options.mode == "jai" { - output = tcat(output, " #foreign"); - } - return output; - } - - return ""; -} - -clean_function_parameters :: proc(data : ^GeneratorData, parameters : [dynamic]FunctionParameter, baseTab : string) -> string { - output := ""; - options := data.options; - - // Special case: function(void) does not really have a parameter - if len(parameters) == 1 { - if _type, ok := parameters[0].type.base.(BuiltinType); ok { - if _type == BuiltinType.Void { - return ""; - } - } - } - - tab := ""; - if options.mode == "jai" { // @note :OdinCodingStyle Odin forces a coding style, now. Ugh. - if (len(parameters) > 1) { - output = tcat(output, "\n"); - tab = tcat(baseTab, " "); - } - } - - unamedParametersCount := 0; - for parameter, i in parameters { - type := clean_type(data, parameter.type); - - name : string; - if len(parameter.name) != 0 { - name = clean_variable_name(parameter.name, options); - } else { - name = tcat("unamed", unamedParametersCount); - unamedParametersCount += 1; - } - - output = tcat(output, tab, name, " : ", type); - - if i != len(parameters) - 1 { - if options.mode == "jai" { // @note :OdinCodingStyle - output = tcat(output, ",\n"); - } else { - output = tcat(output, ", "); - } - } - } - - if (len(parameters) > 1) { - if options.mode == "jai" { // @note :OdinCodingStyle - output = tcat(output, "\n", baseTab); - } - } - - return output; -} - -is_known_base_type :: proc(data : ^GeneratorData, baseType : BaseType) -> bool { - if _type, ok := baseType.(IdentifierType); ok { - for it in data.nodes.typedefs { - if _type.name == it.name { - return true; - } - } - for it in data.nodes.structDefinitions { - if _type.name == it.name { - return true; - } - } - for it in data.nodes.enumDefinitions { - if _type.name == it.name { - return true; - } - } - for it in data.nodes.unionDefinitions { - if _type.name == it.name { - return true; - } - } - return false; - } - - return true; -} diff --git a/core/bindgen/generator-export.odin b/core/bindgen/generator-export.odin deleted file mode 100644 index a04113ed9..000000000 --- a/core/bindgen/generator-export.odin +++ /dev/null @@ -1,166 +0,0 @@ -package bindgen - -import "core:os" -import "core:fmt" - -export_defines :: proc(data : ^GeneratorData) { - for node in data.nodes.defines { - defineName := clean_define_name(node.name, data.options); - - // @fixme fprint of float numbers are pretty badly handled, - // just has a 10^-3 precision. - fcat(data.handle, defineName, " :: ", node.value, ";\n"); - } - fcat(data.handle, "\n"); -} - -export_typedefs :: proc(data : ^GeneratorData) { - for node in data.nodes.typedefs { - name := clean_pseudo_type_name(node.name, data.options); - type := clean_type(data, node.type, "", true); - if name == type do continue; - fcat(data.handle, name, " :: ", type, ";\n"); - } - fcat(data.handle, "\n"); -} - -export_enums :: proc(data : ^GeneratorData) { - for node in data.nodes.enumDefinitions { - enumName := clean_pseudo_type_name(node.name, data.options); - - if data.options.mode == "jai" { - consideredFlags := false; - for postfix in data.options.enumConsideredFlagsPostfixes { - if ends_with(node.name, postfix) { - consideredFlags = true; - break; - } - } - - if consideredFlags { - fcat(data.handle, enumName, " :: enum_flags u32 {"); - } else { - fcat(data.handle, enumName, " :: enum s32 {"); - } - } else { - fcat(data.handle, enumName, " :: enum i32 {"); - } - - postfixes : [dynamic]string; - enumName, postfixes = clean_enum_name_for_prefix_removal(enumName, data.options); - - // Changing the case of postfixes to the enum value one, - // so that they can be removed. - enumValueCase := find_case(node.members[0].name); - for postfix, i in postfixes { - postfixes[i] = change_case(postfix, enumValueCase); - } - - // And changing the case of enumName to the enum value one - enumName = change_case(enumName, enumValueCase); - - // Merging enum value postfixes with postfixes that have been removed from the enum name. - for postfix in data.options.enumValuePostfixes { - append(&postfixes, postfix); - } - - export_enum_members(data, node.members, enumName, postfixes[:]); - fcat(data.handle, data.options.mode == "jai" ? "}\n" : "};\n"); - fcat(data.handle, "\n"); - } -} - -export_structs :: proc(data : ^GeneratorData) { - for node in data.nodes.structDefinitions { - structName := clean_pseudo_type_name(node.name, data.options); - fcat(data.handle, structName, " :: struct {"); - export_struct_or_union_members(data, node.members); - fcat(data.handle, data.options.mode == "jai" ? "}\n" : "};\n"); - fcat(data.handle, "\n"); - } -} - -export_unions :: proc(data : ^GeneratorData) { - for node in data.nodes.unionDefinitions { - unionName := clean_pseudo_type_name(node.name, data.options); - fcat(data.handle, unionName, data.options.mode == "jai" ? " :: union {" : " :: struct #raw_union {"); - export_struct_or_union_members(data, node.members); - fcat(data.handle, data.options.mode == "jai" ? "}\n" : "};\n"); - fcat(data.handle, "\n"); - } -} - -export_functions :: proc(data : ^GeneratorData) { - for node in data.nodes.functionDeclarations { - functionName := clean_function_name(node.name, data.options); - if data.options.mode == "jai" { - fcat(data.handle, functionName, " :: ("); - } else { - fcat(data.handle, " @(link_name=\"", node.name, "\")\n"); - fcat(data.handle, " ", functionName, " :: proc("); - } - parameters := clean_function_parameters(data, node.parameters, data.options.mode == "jai" ? "" : " "); - fcat(data.handle, parameters, ")"); - returnType := clean_type(data, node.returnType); - if len(returnType) > 0 { - fcat(data.handle, " -> ", returnType); - } - if data.options.mode == "jai" { - fcat(data.handle, " #foreign ", data.foreignLibrary, " \"", node.name ,"\";\n"); - } else { - fcat(data.handle, " ---;\n"); - } - fcat(data.handle, "\n"); - } -} - -export_enum_members :: proc(data : ^GeneratorData, members : [dynamic]EnumMember, enumName : string, postfixes : []string) { - if (len(members) > 0) { - fcat(data.handle, "\n"); - } - - cleanedMembers : [dynamic]EnumMember; - for member in members { - cleanedMember : EnumMember; - cleanedMember.hasValue = member.hasValue; - cleanedMember.value = member.value; - cleanedMember.name = clean_enum_value_name(member.name, enumName, postfixes, data.options); - - if len(cleanedMember.name) == 0 { - // print_warning("Enum member ", member.name, " resolves to an empty name. Ignoring it."); - continue; - } - - // Ensuring that we don't collide with an other enum member. - foundCopy := false; - for existingCleanedMember in cleanedMembers { - if cleanedMember.name == existingCleanedMember.name && - cleanedMember.hasValue == existingCleanedMember.hasValue && - cleanedMember.value == existingCleanedMember.value { - print_warning("Enum member ", member.name, " is duplicated once cleaned. Keeping only one copy."); - foundCopy = true; - break; - } - } - if foundCopy do continue; - - fcat(data.handle, " ", cleanedMember.name); - if member.hasValue { - fcat(data.handle, data.options.mode == "jai" ? " :: " : " = ", member.value); - } - fcat(data.handle, data.options.mode == "jai" ? ";\n" : ",\n"); - - append(&cleanedMembers, cleanedMember); - } -} - -export_struct_or_union_members :: proc(data : ^GeneratorData, members : [dynamic]StructOrUnionMember) { - if (len(members) > 0) { - fcat(data.handle, "\n"); - } - for member in members { - type := clean_type(data, member.type, " "); - name := clean_variable_name(member.name, data.options); - fcat(data.handle, " ", name, " : ", type, data.options.mode == "jai" ? ";\n" : ",\n"); - } -} diff --git a/core/bindgen/generator-helpers.odin b/core/bindgen/generator-helpers.odin deleted file mode 100644 index a3b37f4f6..000000000 --- a/core/bindgen/generator-helpers.odin +++ /dev/null @@ -1,392 +0,0 @@ -package bindgen - -import "core:fmt" -import "core:os" -import "core:io" -import "core:strings" -import "core:unicode/utf8" - -Case :: enum { - Unknown, - Camel, - Constant, - Kebab, - Pascal, - Snake, -} - -WordCase :: enum { - Unknown, - Up, - Low, - FirstUp, - // When first upping, numbers are followed always by a capital - FirstUpNumberReset, -} - -// Change a character to a capital. -to_uppercase :: proc(c : rune) -> rune { - c := c; - if c >= 'a' && c <= 'z' { - c = c - 'a' + 'A'; - } - return c; -} - -// Change a character to lowercase. -to_lowercase :: proc(c : rune) -> rune { - c := c; - if c >= 'A' && c <= 'Z' { - c = c - 'A' + 'a'; - } - return c; -} - -// @note Stolen tprint and fprint from fmt package, because it was confusing due to args: ..any and sep default parameter. -tcat :: proc(args: ..any) -> string { - return fmt.tprint(args=args, sep=""); -} - -fcat :: proc(fd: os.Handle, args: ..any) -> int { - return fmt.fprint(fd=fd, args=args, sep=""); -} - -// Change the case convention of a word. -change_word_case :: proc(str : string, targetCase : WordCase) -> string { - newStr : string; - if targetCase == WordCase.Up { - for c in str { - newStr = tcat(newStr, to_uppercase(c)); - } - } - else if targetCase == WordCase.Low { - for c in str { - newStr = tcat(newStr, to_lowercase(c)); - } - } - else if targetCase == WordCase.FirstUp { - for c, i in str { - if i == 0 { - newStr = tcat(newStr, to_uppercase(c)); - } else { - newStr = tcat(newStr, to_lowercase(c)); - } - } - } - else if targetCase == WordCase.FirstUpNumberReset { - for c, i in str { - if i == 0 || (str[i - 1] >= '0' && str[i - 1] <= '9') { - newStr = tcat(newStr, to_uppercase(c)); - } else { - newStr = tcat(newStr, to_lowercase(c)); - } - } - } - return newStr; -} - -// Change the case convention of a string by detecting original convention, -// then splitting it into words. -change_case :: proc(str : string, targetCase : Case) -> string { - if targetCase == Case.Unknown { - return str; - } - - // Split - parts := autosplit_string(str); - - // Join - newStr : string; - if targetCase == Case.Pascal { - for part, i in parts { - newStr = tcat(newStr, change_word_case(part, WordCase.FirstUpNumberReset)); - } - } - else if targetCase == Case.Snake { - for part, i in parts { - newStr = tcat(newStr, change_word_case(part, WordCase.Low), (i != len(parts) - 1) ? "_" : ""); - } - } - else if targetCase == Case.Kebab { - for part, i in parts { - newStr = tcat(newStr, change_word_case(part, WordCase.Low), (i != len(parts) - 1) ? "-" : ""); - } - } - else if targetCase == Case.Camel { - for part, i in parts { - if i == 0 { - newStr = tcat(newStr, change_word_case(part, WordCase.Low)); - } else { - newStr = tcat(newStr, change_word_case(part, WordCase.FirstUpNumberReset)); - } - } - } - else if targetCase == Case.Constant { - for part, i in parts { - newStr = tcat(newStr, change_word_case(part, WordCase.Up), (i != len(parts) - 1) ? "_" : ""); - } - } - - return newStr; -} - -// Identify the case of the provided string. -// Full lowercase with no separator is identified as camelCase. -find_case :: proc(str : string) -> Case { - refuted : bool; - - // CONSTANT_CASE - refuted = false; - for c in str { - if (c != '_') && (c < 'A' || c > 'Z') && (c < '0' || c > '9') { - refuted = true; - break; - } - } - if !refuted do return Case.Constant; - - for c in str { - // snake_case - if c == '_' { - return Case.Snake; - } // kebab-case - else if c == '-' { - return Case.Kebab; - } - } - - // PascalCase - if str[0] >= 'A' && str[0] <= 'Z' { - return Case.Pascal; - } - - // camelCase - return Case.Camel; -} - -// Splits the string according to detected case. -// HeyBuddy -> {"Hey", "Buddy"} -// hey-buddy -> {"hey", "buddy"} -// _hey_buddy -> {"", "hey", "buddy"} -// and such... -autosplit_string :: proc(str : string) -> [dynamic]string { - lowCount := 0; - upCount := 0; - for c in str { - // If any '_', split according to that (CONSTANT_CASE or snake_case) - if c == '_' { - return split_from_separator(str, '_'); - } // If any '-', split according to that (kebab-case) - else if c == '-' { - return split_from_separator(str, '-'); - } - else if c >= 'a' && c <= 'z' { - lowCount += 1; - } - else if c >= 'A' && c <= 'Z' { - upCount += 1; - } - } - - // If it seems to be only one word - if lowCount == 0 || upCount == 0 { - parts : [dynamic]string; - append(&parts, str); - return parts; - } - - // Split at each uppercase letter (PascalCase or camelCase) - return split_from_capital(str); -} - -split_from_separator :: proc(str : string, sep : rune) -> [dynamic]string { - parts : [dynamic]string; - - lastI := 0; - - // Empty strings for starting separators in string - for c in str { - if c == sep { - append(&parts, ""); - lastI += 1; - } else { - break; - } - } - - // Ignore non letter prefix - if lastI == 0 { - for c in str { - if (c < 'a' || c > 'z') && (c < 'A' || c > 'Z') { - lastI += 1; - } - else { - break; - } - } - } - - for c, i in str { - if i > lastI + 1 && c == sep { - append(&parts, str[lastI:i]); - lastI = i + 1; - } - } - - append(&parts, str[lastI:]); - - return parts; -} - -split_from_capital :: proc(str : string) -> [dynamic]string { - parts : [dynamic]string; - - // Ignore non letter prefix - lastI := 0; - for c in str { - if (c < 'a' || c > 'z') && (c < 'A' || c > 'Z') { - lastI += 1; - } - else { - break; - } - } - - // We want to handle: - // myBrainIsCRAZY -> my Brain Is Crazy - // myCRAZYBrain -> my CRAZY Brain - // SOLO -> SOLO - - // Do split - for i := 1; i < len(str); i += 1 { - if str[i] >= 'A' && str[i] <= 'Z' { - // Do not split too much if it seems to be a capitalized word - if (lastI == i - 1) && (str[lastI] >= 'A' && str[lastI] <= 'Z') { - for ; i + 1 < len(str); i += 1 { - if str[i + 1] < 'A' || str[i + 1] > 'Z' { - break; - } - } - if (i + 1 == len(str)) && (str[i] >= 'A' && str[i] <= 'Z') { - i += 1; - } - } - - append(&parts, str[lastI:i]); - lastI = i; - } - } - - if lastI != len(str) { - append(&parts, str[lastI:]); - } - - return parts; -} - -// Check if str if prefixed with any of the provided strings, -// even combinaisons of those, and remove them. -remove_prefixes :: proc(str : string, prefixes : []string, transparentPrefixes : []string = nil) -> string { - str := str; - transparentStr := ""; - - found := true; - for found { - found = false; - - // Remove effective prefixes - for prefix in prefixes { - if len(str) >= len(prefix) && - str[:len(prefix)] == prefix { - str = str[len(prefix):]; - if len(str) != 0 && (str[0] == '_' || str[0] == '-') { - str = str[1:]; - } - found = true; - break; - } - } - - if found do continue; - - // Remove transparent ones, only one by one, - // as we want effective ones to be fully removed. - for prefix in transparentPrefixes { - if len(str) >= len(prefix) && - str[:len(prefix)] == prefix { - str = str[len(prefix):]; - transparentStr = tcat(transparentStr, prefix); - if len(str) != 0 && (str[0] == '_' || str[0] == '-') { - str = str[1:]; - transparentStr = tcat(transparentStr, '_'); - } - found = true; - break; - } - } - } - - return tcat(transparentStr, str); -} - -// Check if str if postfixes with any of the provided strings, -// even combinaisons of those, and remove them. -remove_postfixes_with_removed :: proc( - str : string, - postfixes : []string, - transparentPostfixes : []string = nil) -> (string, [dynamic]string) { - str := str; - removedPostfixes : [dynamic]string; - transparentStr := ""; - - found := true; - for found { - found = false; - - // Remove effective postfixes - for postfix in postfixes { - if ends_with(str, postfix) { - str = str[:len(str) - len(postfix)]; - if len(str) != 0 && (str[len(str)-1] == '_' || str[len(str)-1] == '-') { - str = str[:len(str)-1]; - } - append(&removedPostfixes, postfix); - found = true; - break; - } - } - - if found do continue; - - // Remove transparent ones, only one by one, - // as we want effective ones to be fully removed. - for postfix in transparentPostfixes { - if ends_with(str, postfix) { - str = str[:len(str) - len(postfix)]; - transparentStr = tcat(postfix, transparentStr); - if len(str) != 0 && (str[len(str)-1] == '_' || str[len(str)-1] == '-') { - str = str[:len(str)-1]; - transparentStr = tcat('_', transparentStr); - } - found = true; - break; - } - } - } - - return tcat(str, transparentStr), removedPostfixes; -} - -remove_postfixes :: proc( - str : string, - postfixes : []string, - transparentPostfixes : []string = nil) -> string { - str := str; - removedPostfixes : [dynamic]string; - str, removedPostfixes = remove_postfixes_with_removed(str, postfixes, transparentPostfixes); - return str; -} - -ends_with :: proc(str : string, postfix : string) -> bool { - return len(str) >= len(postfix) && str[len(str) - len(postfix):] == postfix; -} diff --git a/core/bindgen/generator.odin b/core/bindgen/generator.odin deleted file mode 100644 index 3ef3d69c0..000000000 --- a/core/bindgen/generator.odin +++ /dev/null @@ -1,205 +0,0 @@ -/** - * Odin binding generator from C header data. - */ - -package bindgen - -import "core:os" -import "core:fmt" -import "core:runtime" - -GeneratorOptions :: struct { - mode : string, // "odin" or "jai" - - // Variable - variableCase : Case, - - // Defines - definePrefixes : []string, - defineTransparentPrefixes : []string, - definePostfixes : []string, - defineTransparentPostfixes : []string, - defineCase : Case, - - // Pseudo-types - pseudoTypePrefixes : []string, - pseudoTypeTransparentPrefixes : []string, - pseudoTypePostfixes : []string, - pseudoTypeTransparentPostfixes : []string, - pseudoTypeCase : Case, - - // Enums - enumConsideredFlagsPostfixes : []string, - - // Functions - functionPrefixes : []string, - functionTransparentPrefixes : []string, - functionPostfixes : []string, - functionTransparentPostfixes : []string, - functionCase : Case, - - // Enum values - enumValuePrefixes : []string, - enumValueTransparentPrefixes : []string, - enumValuePostfixes : []string, - enumValueTransparentPostfixes : []string, - enumValueCase : Case, - enumValueNameRemove : bool, - enumValueNameRemovePostfixes : []string, - - parserOptions : ParserOptions, -} - -GeneratorData :: struct { - handle : os.Handle, - nodes : Nodes, - - // References - foreignLibrary : string, - options : ^GeneratorOptions, -} - -generate :: proc( - packageName : string, - foreignLibrary : string, - outputFile : string, - headerFiles : []string, - options : GeneratorOptions, -) { - options := options; - data : GeneratorData; - data.options = &options; - data.foreignLibrary = foreignLibrary; - - if options.mode == "" { - options.mode = "odin"; - } - - // Outputing odin file - errno : os.Errno; - - // chmod 664 when creating file - mode: int = 0; - when os.OS == "linux" || os.OS == "darwin" { - mode = os.S_IRUSR | os.S_IWUSR | os.S_IRGRP | os.S_IWGRP | os.S_IROTH; - } - - data.handle, errno = os.open(outputFile, os.O_WRONLY | os.O_CREATE | os.O_TRUNC, mode); - if errno != 0 { - fmt.eprint("[bindgen] Unable to write to output file ", outputFile, " (", errno ,")\n"); - return; - } - defer os.close(data.handle); - - if options.mode == "jai" { - fcat(data.handle, foreignLibrary, " :: #foreign_library \"", foreignLibrary, "\";\n"); - fcat(data.handle, "\n"); - } else { - fcat(data.handle, "package ", packageName, "\n"); - fcat(data.handle, "\n"); - fcat(data.handle, "foreign import \"", foreignLibrary, "\"\n"); - fcat(data.handle, "\n"); - fcat(data.handle, "import _c \"core:c\"\n"); - fcat(data.handle, "\n"); - } - - // Parsing header files - anonymousStructCount = 0; - anonymousUnionCount = 0; - anonymousEnumCount = 0; - - for headerFile in headerFiles { - bytes, ok := os.read_entire_file(headerFile); - if !ok { - fmt.eprint("[bindgen] Unable to read file ", headerFile, "\n"); - return; - } - - // We fuse the SOAs - headerNodes := parse(bytes, options.parserOptions); - merge_generic_nodes(&data.nodes.defines, &headerNodes.defines); - merge_generic_nodes(&data.nodes.enumDefinitions, &headerNodes.enumDefinitions); - merge_generic_nodes(&data.nodes.unionDefinitions, &headerNodes.unionDefinitions); - merge_forward_declared_nodes(&data.nodes.structDefinitions, &headerNodes.structDefinitions); - merge_generic_nodes(&data.nodes.functionDeclarations, &headerNodes.functionDeclarations); - merge_generic_nodes(&data.nodes.typedefs, &headerNodes.typedefs); - } - - // Exporting - export_defines(&data); - export_typedefs(&data); - export_enums(&data); - export_structs(&data); - export_unions(&data); - - // Foreign block for functions - if options.mode != "jai" { - foreignLibrarySimple := simplify_library_name(foreignLibrary); - fcat(data.handle, "@(default_calling_convention=\"c\")\n"); - fcat(data.handle, "foreign ", foreignLibrarySimple, " {\n"); - fcat(data.handle, "\n"); - } - - export_functions(&data); - - if options.mode != "jai" { - fcat(data.handle, "}\n"); - } -} - -// system:foo.lib -> foo -simplify_library_name :: proc(libraryName : string) -> string { - startOffset := 0; - endOffset := len(libraryName); - - for c, i in libraryName { - if startOffset == 0 && c == ':' { - startOffset = i + 1; - } - else if c == '.' { - endOffset = i; - break; - } - } - - return libraryName[startOffset:endOffset]; -} - -merge_generic_nodes :: proc(nodes : ^$T, headerNodes : ^T) { - for headerNode in headerNodes { - // Check that there are no duplicated nodes (due to forward declaration or such) - duplicatedIndex := -1; - for i := 0; i < len(nodes); i += 1 { - node := nodes[i]; - if node.name == headerNode.name { - duplicatedIndex = i; - break; - } - } - - if duplicatedIndex < 0 { - append(nodes, headerNode); - } - } -} - -merge_forward_declared_nodes :: proc(nodes : ^$T, headerNodes : ^T) { - for headerNode in headerNodes { - // Check that there are no duplicated nodes (due to forward declaration or such) - duplicatedIndex := -1; - for i := 0; i < len(nodes); i += 1 { - node := nodes[i]; - if node.name == headerNode.name { - duplicatedIndex = i; - break; - } - } - - if duplicatedIndex < 0 { - append(nodes, headerNode); - } - else if !headerNode.forwardDeclared && len(headerNode.members) > 0 { - nodes[duplicatedIndex] = headerNode; - } - } -} diff --git a/wasm-ld b/wasm-ld deleted file mode 120000 index 01ef2a7e7..000000000 --- a/wasm-ld +++ /dev/null @@ -1 +0,0 @@ -/Volumes/Phill_Backup/pers/programming/sdk/emsdk/upstream/bin/lld \ No newline at end of file From 89222a0ab22bbe8067111405caf4f2b703f44732 Mon Sep 17 00:00:00 2001 From: Ronald1985 Date: Tue, 14 Jun 2022 09:55:06 +0100 Subject: [PATCH 006/130] Added missing #includes on OpenBSD --- src/common.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/common.cpp b/src/common.cpp index 77caddfe8..2f7ab7916 100644 --- a/src/common.cpp +++ b/src/common.cpp @@ -25,6 +25,11 @@ #include #endif +#if defined(GB_SYSTEM_OPENBSD) +#include +#include +#endif + #include #include #include // Because I wanted the C++11 memory order semantics, of which gb.h does not offer (because it was a C89 library) From b89bb877599d1b966ed831343503bb74e7e43908 Mon Sep 17 00:00:00 2001 From: Phil Date: Thu, 23 Jun 2022 22:59:42 -0700 Subject: [PATCH 007/130] Add OpenGL bindless textures ARB api to vendor --- vendor/OpenGL/impl.odin | 44 +++++++++++++++++++++++++++++++++++++ vendor/OpenGL/wrappers.odin | 30 +++++++++++++++++++++++++ 2 files changed, 74 insertions(+) diff --git a/vendor/OpenGL/impl.odin b/vendor/OpenGL/impl.odin index 530865cb0..e9adda4bd 100644 --- a/vendor/OpenGL/impl.odin +++ b/vendor/OpenGL/impl.odin @@ -947,6 +947,13 @@ impl_DrawTransformFeedbackStream: proc "c" (mode: u32, id: u32, stream: u32) impl_BeginQueryIndexed: proc "c" (target: u32, index: u32, id: u32) impl_EndQueryIndexed: proc "c" (target: u32, index: u32) impl_GetQueryIndexediv: proc "c" (target: u32, index: u32, pname: u32, params: [^]i32) +impl_GetTextureHandleARB: proc "c" (texture: u32) -> u64 +impl_GetTextureSamplerHandleARB: proc "c" (texture, sampler: u32) -> u64 +impl_GetImageHandleARB: proc "c" (texture: u32, level: i32, layered: bool, layer: i32, format: u32) -> u64 +impl_MakeTextureHandleResidentARB: proc "c" (handle: u64) +impl_MakeImageHandleResidentARB: proc "c" (handle: u64, access: u32) +impl_MakeTextureHandleNonResidentARB:proc "c" (handle: u64) +impl_MakeImageHandleNonResidentARB: proc "c" (handle: u64) load_4_0 :: proc(set_proc_address: Set_Proc_Address_Type) { set_proc_address(&impl_MinSampleShading, "glMinSampleShading") @@ -995,6 +1002,42 @@ load_4_0 :: proc(set_proc_address: Set_Proc_Address_Type) { set_proc_address(&impl_BeginQueryIndexed, "glBeginQueryIndexed") set_proc_address(&impl_EndQueryIndexed, "glEndQueryIndexed") set_proc_address(&impl_GetQueryIndexediv, "glGetQueryIndexediv") + + // Load ARB (architecture review board, vendor specific) extensions that might be available + set_proc_address(&impl_GetTextureHandleARB, "glGetTextureHandleARB") + if impl_GetTextureHandleARB == nil { + set_proc_address(&impl_GetTextureHandleARB, "glGetTextureHandleNV") + } + + set_proc_address(&impl_GetTextureSamplerHandleARB, "glGetTextureSamplerHandleARB") + if impl_GetTextureSamplerHandleARB == nil { + set_proc_address(&impl_GetTextureSamplerHandleARB, "glGetTextureSamplerHandleNV") + } + + set_proc_address(&impl_GetImageHandleARB, "glGetImageHandleARB") + if impl_GetImageHandleARB == nil { + set_proc_address(&impl_GetImageHandleARB, "glGetImageHandleNV") + } + + set_proc_address(&impl_MakeTextureHandleResidentARB, "glMakeTextureHandleResidentARB") + if impl_MakeTextureHandleResidentARB == nil { + set_proc_address(&impl_MakeTextureHandleResidentARB, "glMakeTextureHandleResidentNV") + } + + set_proc_address(&impl_MakeImageHandleResidentARB, "glMakeImageHandleResidentARB") + if impl_MakeImageHandleResidentARB == nil { + set_proc_address(&impl_MakeImageHandleResidentARB, "glMakeImageHandleResidentNV") + } + + set_proc_address(&impl_MakeTextureHandleNonResidentARB, "glMakeTextureHandleNonResidentARB") + if impl_MakeTextureHandleNonResidentARB == nil { + set_proc_address(&impl_MakeTextureHandleNonResidentARB, "glMakeTextureHandleNonResidentNV") + } + + set_proc_address(&impl_MakeImageHandleNonResidentARB, "glMakeImageHandleNonResidentARB") + if impl_MakeImageHandleNonResidentARB == nil { + set_proc_address(&impl_MakeImageHandleNonResidentARB, "glMakeImageHandleNonResidentNV") + } } @@ -1594,3 +1637,4 @@ load_4_6 :: proc(set_proc_address: Set_Proc_Address_Type) { set_proc_address(&impl_MultiDrawElementsIndirectCount, "glMultiDrawElementsIndirectCount") set_proc_address(&impl_PolygonOffsetClamp, "glPolygonOffsetClamp") } + diff --git a/vendor/OpenGL/wrappers.odin b/vendor/OpenGL/wrappers.odin index c0b5304b0..bb71b0e82 100644 --- a/vendor/OpenGL/wrappers.odin +++ b/vendor/OpenGL/wrappers.odin @@ -449,6 +449,20 @@ when !ODIN_DEBUG { BeginQueryIndexed :: proc "c" (target: u32, index: u32, id: u32) { impl_BeginQueryIndexed(target, index, id) } EndQueryIndexed :: proc "c" (target: u32, index: u32) { impl_EndQueryIndexed(target, index) } GetQueryIndexediv :: proc "c" (target: u32, index: u32, pname: u32, params: [^]i32) { impl_GetQueryIndexediv(target, index, pname, params) } + GetTextureHandleARB :: proc "c" (texture: u32) -> u64 + { return impl_GetTextureHandleARB(texture) } + GetTextureSamplerHandleARB :: proc "c" (texture, sampler: u32) -> u64 + { return impl_GetTextureSamplerHandleARB(texture, sampler) } + GetImageHandleARB :: proc "c" (texture: u32, level: i32, layered: bool, layer: i32, format: u32) -> u64 + { return impl_GetImageHandleARB(texture, level, layered, layer, format) } + MakeTextureHandleResidentARB :: proc "c" (handle: u64) + { impl_MakeTextureHandleResidentARB(handle) } + MakeImageHandleResidentARB :: proc "c" (handle: u64, access: u32) + { impl_MakeImageHandleResidentARB(handle, access) } + MakeTextureHandleNonResidentARB:: proc "c" (handle: u64) + { impl_MakeTextureHandleNonResidentARB(handle) } + MakeImageHandleNonResidentARB :: proc "c" (handle: u64) + { impl_MakeImageHandleNonResidentARB(handle) } // VERSION_4_1 ReleaseShaderCompiler :: proc "c" () { impl_ReleaseShaderCompiler() } @@ -1249,6 +1263,22 @@ when !ODIN_DEBUG { BeginQueryIndexed :: proc "c" (target: u32, index: u32, id: u32, loc := #caller_location) { impl_BeginQueryIndexed(target, index, id); debug_helper(loc, 0, target, index, id) } EndQueryIndexed :: proc "c" (target: u32, index: u32, loc := #caller_location) { impl_EndQueryIndexed(target, index); debug_helper(loc, 0, target, index) } GetQueryIndexediv :: proc "c" (target: u32, index: u32, pname: u32, params: [^]i32, loc := #caller_location) { impl_GetQueryIndexediv(target, index, pname, params); debug_helper(loc, 0, target, index, pname, params) } + GetTextureHandleARB :: proc "c" (target: u32, loc := #caller_location) -> u64 + { ret := impl_GetTextureHandleARB(target); debug_helper(loc, 0, target); return ret } + GetTextureSamplerHandleARB :: proc "c" (texture, sampler: u32, loc := #caller_location) -> u64 + { ret := impl_GetTextureSamplerHandleARB(texture, sampler); debug_helper(loc, 0, texture, sampler); return ret; } + GetImageHandleARB :: proc "c" (texture: u32, level: i32, layered: bool, layer: i32, format: u32, loc := #caller_location) -> u64 + { ret := impl_GetImageHandleARB(texture, level, layered, layer, format); debug_helper(loc, 0, texture, level, layered, layer, format); return ret; } + MakeTextureHandleResidentARB :: proc "c" (handle: u64, loc := #caller_location) + { impl_MakeTextureHandleResidentARB(handle); debug_helper(loc, 0, handle) } + MakeImageHandleResidentARB :: proc "c" (handle: u64, access: u32, loc := #caller_location) + { impl_MakeImageHandleResidentARB(handle, access); debug_helper(loc, 0, handle, access) } + MakeTextureHandleNonResidentARB:: proc "c" (handle: u64, loc := #caller_location) + { impl_MakeTextureHandleNonResidentARB(handle); debug_helper(loc, 0, handle) } + MakeImageHandleNonResidentARB :: proc "c" (handle: u64, loc := #caller_location) + { impl_MakeImageHandleNonResidentARB(handle); debug_helper(loc, 0, handle) } + + // VERSION_4_1 ReleaseShaderCompiler :: proc "c" (loc := #caller_location) { impl_ReleaseShaderCompiler(); debug_helper(loc, 0) } From b313d09c2cebbe5da02dd9bccca40a5a67f50c3c Mon Sep 17 00:00:00 2001 From: Michael Kutowski Date: Tue, 28 Jun 2022 18:27:52 +0200 Subject: [PATCH 008/130] flux fixed key deletion and generic in `flux_to` --- core/math/ease/ease.odin | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/core/math/ease/ease.odin b/core/math/ease/ease.odin index 5a767b5a9..0bd7c3641 100644 --- a/core/math/ease/ease.odin +++ b/core/math/ease/ease.odin @@ -325,9 +325,9 @@ ease :: proc "contextless" (type: Ease, p: $T) -> T // in case type was invalid return 0 } - Flux_Map :: struct($T: typeid) { values: map[^T]Flux_Tween(T), + keys_to_be_deleted: [dynamic]^T, } Flux_Tween :: struct($T: typeid) { @@ -353,15 +353,17 @@ Flux_Tween :: struct($T: typeid) { } // init flux map to a float type and a wanted cap -flux_init :: proc($T: typeid, cap := 8) -> Flux_Map(T) where intrinsics.type_is_float(T) { +flux_init :: proc($T: typeid, value_capacity := 8) -> Flux_Map(T) where intrinsics.type_is_float(T) { return { - make(map[^T]Flux_Tween(T), cap), + values = make(map[^T]Flux_Tween(T), value_capacity), + keys_to_be_deleted = make([dynamic]^T, 0, value_capacity) } } // delete map content flux_destroy :: proc(flux: Flux_Map($T)) where intrinsics.type_is_float(T) { delete(flux.values) + delete(flux.keys_to_be_deleted) } // clear map content, stops all animations @@ -374,8 +376,8 @@ flux_clear :: proc(flux: ^Flux_Map($T)) where intrinsics.type_is_float(T) { // return value can be used to set callbacks flux_to :: proc( flux: ^Flux_Map($T), - value: ^f32, - goal: f32, + value: ^T, + goal: T, type: Ease = .Quadratic_Out, duration: time.Duration = time.Second, delay: f64 = 0, @@ -413,6 +415,8 @@ flux_tween_init :: proc(tween: ^Flux_Tween($T), duration: time.Duration) where i // calls callbacks in all stages, when they're filled // deletes tween from the map after completion flux_update :: proc(flux: ^Flux_Map($T), dt: f64) where intrinsics.type_is_float(T) { + clear(&flux.keys_to_be_deleted) + for key, tween in &flux.values { delay_remainder := f64(0) @@ -451,7 +455,8 @@ flux_update :: proc(flux: ^Flux_Map($T), dt: f64) where intrinsics.type_is_float } if tween.progress >= 1 { - delete_key(&flux.values, key) + // append keys to array that will be deleted after the loop + append(&flux.keys_to_be_deleted, key) if tween.on_complete != nil { tween.on_complete(flux, tween.data) @@ -459,17 +464,24 @@ flux_update :: proc(flux: ^Flux_Map($T), dt: f64) where intrinsics.type_is_float } } } + + // loop through keys that should be deleted from the map + if len(flux.keys_to_be_deleted) != 0 { + for key in flux.keys_to_be_deleted { + delete_key(&flux.values, key) + } + } } // stop a specific key inside the map // returns true when it successfully removed the key flux_stop :: proc(flux: ^Flux_Map($T), key: ^T) -> bool where intrinsics.type_is_float(T) { - if key in flux.values { - delete_key(&flux.values, key) - return true - } + if key in flux.values { + delete_key(&flux.values, key) + return true + } - return false + return false } // returns the amount of time left for the tween animation, if the key exists in the map From 0a8e6169d741e96a6d8b2a2b98bbccd67ef7d4fc Mon Sep 17 00:00:00 2001 From: Phil Date: Tue, 28 Jun 2022 11:36:50 -0700 Subject: [PATCH 009/130] remove unneeded semicolons --- vendor/OpenGL/wrappers.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/OpenGL/wrappers.odin b/vendor/OpenGL/wrappers.odin index bb71b0e82..b62ed216b 100644 --- a/vendor/OpenGL/wrappers.odin +++ b/vendor/OpenGL/wrappers.odin @@ -1266,9 +1266,9 @@ when !ODIN_DEBUG { GetTextureHandleARB :: proc "c" (target: u32, loc := #caller_location) -> u64 { ret := impl_GetTextureHandleARB(target); debug_helper(loc, 0, target); return ret } GetTextureSamplerHandleARB :: proc "c" (texture, sampler: u32, loc := #caller_location) -> u64 - { ret := impl_GetTextureSamplerHandleARB(texture, sampler); debug_helper(loc, 0, texture, sampler); return ret; } + { ret := impl_GetTextureSamplerHandleARB(texture, sampler); debug_helper(loc, 0, texture, sampler); return ret } GetImageHandleARB :: proc "c" (texture: u32, level: i32, layered: bool, layer: i32, format: u32, loc := #caller_location) -> u64 - { ret := impl_GetImageHandleARB(texture, level, layered, layer, format); debug_helper(loc, 0, texture, level, layered, layer, format); return ret; } + { ret := impl_GetImageHandleARB(texture, level, layered, layer, format); debug_helper(loc, 0, texture, level, layered, layer, format); return ret } MakeTextureHandleResidentARB :: proc "c" (handle: u64, loc := #caller_location) { impl_MakeTextureHandleResidentARB(handle); debug_helper(loc, 0, handle) } MakeImageHandleResidentARB :: proc "c" (handle: u64, access: u32, loc := #caller_location) From 4d06a54c0ce7266d8f30c0f6b10dd527c3f9d8c6 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 30 Jun 2022 15:42:02 +0100 Subject: [PATCH 010/130] Use `memmove` if possible when emitting store over a certain size --- src/llvm_backend_general.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index e3d30ccff..8122f1d86 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -852,6 +852,12 @@ bool lb_is_type_proc_recursive(Type *t) { void lb_emit_store(lbProcedure *p, lbValue ptr, lbValue value) { GB_ASSERT(value.value != nullptr); Type *a = type_deref(ptr.type); + + if (LLVMIsNull(value.value)) { + LLVMTypeRef src_t = LLVMGetElementType(LLVMTypeOf(ptr.value)); + LLVMBuildStore(p->builder, LLVMConstNull(src_t), ptr.value); + return; + } if (is_type_boolean(a)) { // NOTE(bill): There are multiple sized booleans, thus force a conversion (if necessarily) value = lb_emit_conv(p, value, a); @@ -861,6 +867,20 @@ void lb_emit_store(lbProcedure *p, lbValue ptr, lbValue value) { GB_ASSERT_MSG(are_types_identical(ca, core_type(value.type)), "%s != %s", type_to_string(a), type_to_string(value.type)); } + enum {MAX_STORE_SIZE = 32}; + + if (LLVMIsALoadInst(value.value) && lb_sizeof(LLVMTypeOf(value.value)) > 32) { + LLVMValueRef dst_ptr = ptr.value; + LLVMValueRef src_ptr = LLVMGetOperand(value.value, 0); + src_ptr = LLVMBuildPointerCast(p->builder, src_ptr, LLVMTypeOf(dst_ptr), ""); + + LLVMBuildMemMove(p->builder, + dst_ptr, 1, + src_ptr, 1, + LLVMConstInt(LLVMInt64TypeInContext(p->module->ctx), lb_sizeof(LLVMTypeOf(value.value)), false)); + return; + } + if (lb_is_type_proc_recursive(a)) { // NOTE(bill, 2020-11-11): Because of certain LLVM rules, a procedure value may be // stored as regular pointer with no procedure information From 1676c643dfd9ef45f2aaa4dfddb69cea4bcf80fc Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 30 Jun 2022 15:47:19 +0100 Subject: [PATCH 011/130] Change MAX_STORE_SIZE --- src/llvm_backend_general.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 8122f1d86..5b43a11ab 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -867,9 +867,9 @@ void lb_emit_store(lbProcedure *p, lbValue ptr, lbValue value) { GB_ASSERT_MSG(are_types_identical(ca, core_type(value.type)), "%s != %s", type_to_string(a), type_to_string(value.type)); } - enum {MAX_STORE_SIZE = 32}; + enum {MAX_STORE_SIZE = 64}; - if (LLVMIsALoadInst(value.value) && lb_sizeof(LLVMTypeOf(value.value)) > 32) { + if (LLVMIsALoadInst(value.value) && lb_sizeof(LLVMTypeOf(value.value)) > MAX_STORE_SIZE) { LLVMValueRef dst_ptr = ptr.value; LLVMValueRef src_ptr = LLVMGetOperand(value.value, 0); src_ptr = LLVMBuildPointerCast(p->builder, src_ptr, LLVMTypeOf(dst_ptr), ""); From 23842a8950be99afca4f4180aca95a7c2da771dc Mon Sep 17 00:00:00 2001 From: Wes Hardee Date: Thu, 30 Jun 2022 12:40:32 -0500 Subject: [PATCH 012/130] fix -build-mode:shared on MacOS --- src/main.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 7531fb37c..beefec702 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -463,8 +463,15 @@ i32 linker_stage(lbGenerator *gen) { // correctly this way since all the other dependencies provided implicitly // by the compiler frontend are still needed and most of the command // line arguments prepared previously are incompatible with ld. - link_settings = gb_string_appendc(link_settings, "-Wl,-init,'_odin_entry_point' "); - link_settings = gb_string_appendc(link_settings, "-Wl,-fini,'_odin_exit_point' "); + if (build_context.metrics.os == TargetOs_darwin) { + link_settings = gb_string_appendc(link_settings, "-Wl,-init,'__odin_entry_point' "); + // NOTE(weshardee): __odin_exit_point should also be added, but -fini + // does not exist on MacOS + } else { + link_settings = gb_string_appendc(link_settings, "-Wl,-init,'_odin_entry_point' "); + link_settings = gb_string_appendc(link_settings, "-Wl,-fini,'_odin_exit_point' "); + } + } else if (build_context.metrics.os != TargetOs_openbsd) { // OpenBSD defaults to PIE executable. do not pass -no-pie for it. link_settings = gb_string_appendc(link_settings, "-no-pie "); From a8b44f33bda904e82d17624d524d50eb9b828e09 Mon Sep 17 00:00:00 2001 From: Mohamed Akram Date: Fri, 8 Jul 2022 16:14:54 +0400 Subject: [PATCH 013/130] Allow passing config options to build script --- build_odin.sh | 54 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/build_odin.sh b/build_odin.sh index aef3f2836..8ef5e4e94 100755 --- a/build_odin.sh +++ b/build_odin.sh @@ -1,12 +1,20 @@ #!/bin/bash set -eu -GIT_SHA=$(git rev-parse --short HEAD) +: ${CXX=clang++} +: ${CPPFLAGS=} +: ${CXXFLAGS=} +: ${LDFLAGS=} +: ${ODIN_VERSION=dev-$(date +"%Y-%m")} + +CPPFLAGS="$CPPFLAGS -DODIN_VERSION_RAW=\"$ODIN_VERSION\"" +CXXFLAGS="$CXXFLAGS -std=c++14" +LDFLAGS="$LDFLAGS -pthread -lm -lstdc++" + +GIT_SHA=$(git rev-parse --short HEAD || :) +if [ "$GIT_SHA" ]; then CPPFLAGS="$CPPFLAGS -DGIT_SHA=\"$GIT_SHA\""; fi + DISABLED_WARNINGS="-Wno-switch -Wno-macro-redefined -Wno-unused-value" -LDFLAGS="-pthread -lm -lstdc++" -CFLAGS="-std=c++14 -DGIT_SHA=\"$GIT_SHA\"" -CFLAGS="$CFLAGS -DODIN_VERSION_RAW=\"dev-$(date +"%Y-%m")\"" -CC=clang OS=$(uname) panic() { @@ -18,7 +26,7 @@ version() { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; config_darwin() { ARCH=$(uname -m) - LLVM_CONFIG=llvm-config + : ${LLVM_CONFIG=llvm-config} # allow for arm only llvm's with version 13 if [ ARCH == arm64 ]; then @@ -37,34 +45,38 @@ config_darwin() { fi LDFLAGS="$LDFLAGS -liconv -ldl" - CFLAGS="$CFLAGS $($LLVM_CONFIG --cxxflags --ldflags)" + CXXFLAGS="$CXXFLAGS $($LLVM_CONFIG --cxxflags --ldflags)" LDFLAGS="$LDFLAGS -lLLVM-C" } config_freebsd() { - LLVM_CONFIG=/usr/local/bin/llvm-config11 + : ${LLVM_CONFIG=/usr/local/bin/llvm-config11} - CFLAGS="$CFLAGS $($LLVM_CONFIG --cxxflags --ldflags)" + CXXFLAGS="$CXXFLAGS $($LLVM_CONFIG --cxxflags --ldflags)" LDFLAGS="$LDFLAGS $($LLVM_CONFIG --libs core native --system-libs)" } config_openbsd() { - LLVM_CONFIG=/usr/local/bin/llvm-config + : ${LLVM_CONFIG=/usr/local/bin/llvm-config} LDFLAGS="$LDFLAGS -liconv" - CFLAGS="$CFLAGS $($LLVM_CONFIG --cxxflags --ldflags)" + CXXFLAGS="$CXXFLAGS $($LLVM_CONFIG --cxxflags --ldflags)" LDFLAGS="$LDFLAGS $($LLVM_CONFIG --libs core native --system-libs)" } config_linux() { - if which llvm-config > /dev/null 2>&1; then - LLVM_CONFIG=llvm-config - elif which llvm-config-11 > /dev/null 2>&1; then - LLVM_CONFIG=llvm-config-11 - elif which llvm-config-11-64 > /dev/null 2>&1; then - LLVM_CONFIG=llvm-config-11-64 - else - panic "Unable to find LLVM-config" + : ${LLVM_CONFIG=} + + if [ ! "$LLVM_CONFIG" ]; then + if which llvm-config > /dev/null 2>&1; then + LLVM_CONFIG=llvm-config + elif which llvm-config-11 > /dev/null 2>&1; then + LLVM_CONFIG=llvm-config-11 + elif which llvm-config-11-64 > /dev/null 2>&1; then + LLVM_CONFIG=llvm-config-11-64 + else + panic "Unable to find LLVM-config" + fi fi MIN_LLVM_VERSION=("11.0.0") @@ -74,7 +86,7 @@ config_linux() { fi LDFLAGS="$LDFLAGS -ldl" - CFLAGS="$CFLAGS $($LLVM_CONFIG --cxxflags --ldflags)" + CXXFLAGS="$CXXFLAGS $($LLVM_CONFIG --cxxflags --ldflags)" LDFLAGS="$LDFLAGS $($LLVM_CONFIG --libs core native --system-libs)" } @@ -97,7 +109,7 @@ build_odin() { esac set -x - $CC src/main.cpp src/libtommath.cpp $DISABLED_WARNINGS $CFLAGS $EXTRAFLAGS $LDFLAGS -o odin + $CXX src/main.cpp src/libtommath.cpp $DISABLED_WARNINGS $CPPFLAGS $CXXFLAGS $EXTRAFLAGS $LDFLAGS -o odin set +x } From babbc304b8985bf86c94ea635eb273e8526764ad Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 9 Jul 2022 23:53:18 +0100 Subject: [PATCH 014/130] Fix wasm compilation in windows --- src/build_settings.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/build_settings.cpp b/src/build_settings.cpp index a82cc80c9..53f28b01a 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -1321,7 +1321,7 @@ bool init_build_paths(String init_filename) { return true; } - #if defined(GB_SYSTEM_WINDOWS) + if (bc->metrics.os == TargetOs_windows) { if (bc->resource_filepath.len > 0) { bc->build_paths[BuildPath_RC] = path_from_string(ha, bc->resource_filepath); bc->build_paths[BuildPath_RES] = path_from_string(ha, bc->resource_filepath); @@ -1377,7 +1377,7 @@ bool init_build_paths(String init_filename) { } } } - #endif + } // All the build targets and OSes. String output_extension; From e8148055ad78489832c55aab9b81edd694440d63 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 9 Jul 2022 23:55:02 +0100 Subject: [PATCH 015/130] Fix compilation on non-windows platforms --- src/build_settings.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 53f28b01a..65da09df0 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -1321,6 +1321,7 @@ bool init_build_paths(String init_filename) { return true; } + #if defined(GB_SYSTEM_WINDOWS) if (bc->metrics.os == TargetOs_windows) { if (bc->resource_filepath.len > 0) { bc->build_paths[BuildPath_RC] = path_from_string(ha, bc->resource_filepath); @@ -1378,6 +1379,7 @@ bool init_build_paths(String init_filename) { } } } + #endif // All the build targets and OSes. String output_extension; From 9e376fbda75970b6cafa229873bfe8113da251d6 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 10 Jul 2022 00:52:59 +0100 Subject: [PATCH 016/130] Update README.md --- vendor/wasm/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vendor/wasm/README.md b/vendor/wasm/README.md index 55cbd1b7a..d0b0a2f6f 100644 --- a/vendor/wasm/README.md +++ b/vendor/wasm/README.md @@ -10,6 +10,6 @@ The `js_wasm32` target assumes that the WASM output will be ran within a web bro -``` \ No newline at end of file +``` From c90b7c38f1a54e1f6bc144bea76b976f7c126644 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 11 Jul 2022 11:50:08 +0100 Subject: [PATCH 017/130] Rename strings.Builder procedures to be consistent with the rest of the core library --- core/c/frontend/preprocessor/preprocess.odin | 2 +- core/encoding/entity/entity.odin | 8 +- core/encoding/json/marshal.odin | 4 +- core/fmt/fmt.odin | 14 +- core/image/netpbm/netpbm.odin | 4 +- core/io/util.odin | 24 +++ core/odin/printer/printer.odin | 2 +- core/odin/printer/visit.odin | 6 +- core/strings/builder.odin | 148 ++++++------------- core/strings/conversion.odin | 20 +-- core/strings/strings.odin | 16 +- vendor/microui/microui.odin | 2 +- 12 files changed, 106 insertions(+), 144 deletions(-) diff --git a/core/c/frontend/preprocessor/preprocess.odin b/core/c/frontend/preprocessor/preprocess.odin index 1db3fafa3..4cfad2c1c 100644 --- a/core/c/frontend/preprocessor/preprocess.odin +++ b/core/c/frontend/preprocessor/preprocess.odin @@ -519,7 +519,7 @@ join_adjacent_string_literals :: proc(cpp: ^Preprocessor, initial_tok: ^Token) { quote_string :: proc(s: string) -> []byte { - b := strings.make_builder(0, len(s)+2) + b := strings.builder_make(0, len(s)+2) io.write_quoted_string(strings.to_writer(&b), s, '"') return b.buf[:] } diff --git a/core/encoding/entity/entity.odin b/core/encoding/entity/entity.odin index e5831a75f..694fcdffc 100644 --- a/core/encoding/entity/entity.odin +++ b/core/encoding/entity/entity.odin @@ -25,8 +25,8 @@ import "core:strings" MAX_RUNE_CODEPOINT :: int(unicode.MAX_RUNE) -write_rune :: strings.write_rune_builder -write_string :: strings.write_string_builder +write_rune :: strings.write_rune +write_string :: strings.write_string Error :: enum u8 { None = 0, @@ -94,8 +94,8 @@ decode_xml :: proc(input: string, options := XML_Decode_Options{}, allocator := l := len(input) if l == 0 { return "", .None } - builder := strings.make_builder() - defer strings.destroy_builder(&builder) + builder := strings.builder_make() + defer strings.builder_destroy(&builder) t := Tokenizer{src=input} in_data := false diff --git a/core/encoding/json/marshal.odin b/core/encoding/json/marshal.odin index 14df4c127..54fab44c6 100644 --- a/core/encoding/json/marshal.odin +++ b/core/encoding/json/marshal.odin @@ -18,9 +18,9 @@ Marshal_Error :: union #shared_nil { } marshal :: proc(v: any, allocator := context.allocator) -> (data: []byte, err: Marshal_Error) { - b := strings.make_builder(allocator) + b := strings.builder_make(allocator) defer if err != nil { - strings.destroy_builder(&b) + strings.builder_destroy(&b) } marshal_to_builder(&b, v) or_return diff --git a/core/fmt/fmt.odin b/core/fmt/fmt.odin index 78d4ddcd7..e03dfd678 100644 --- a/core/fmt/fmt.odin +++ b/core/fmt/fmt.odin @@ -77,7 +77,7 @@ register_user_formatter :: proc(id: typeid, formatter: User_Formatter) -> Regist // They must be freed accordingly aprint :: proc(args: ..any, sep := " ") -> string { str: strings.Builder - strings.init_builder(&str) + strings.builder_init(&str) sbprint(buf=&str, args=args, sep=sep) return strings.to_string(str) } @@ -85,7 +85,7 @@ aprint :: proc(args: ..any, sep := " ") -> string { // They must be freed accordingly aprintln :: proc(args: ..any, sep := " ") -> string { str: strings.Builder - strings.init_builder(&str) + strings.builder_init(&str) sbprintln(buf=&str, args=args, sep=sep) return strings.to_string(str) } @@ -93,7 +93,7 @@ aprintln :: proc(args: ..any, sep := " ") -> string { // They must be freed accordingly aprintf :: proc(fmt: string, args: ..any) -> string { str: strings.Builder - strings.init_builder(&str) + strings.builder_init(&str) sbprintf(&str, fmt, ..args) return strings.to_string(str) } @@ -102,21 +102,21 @@ aprintf :: proc(fmt: string, args: ..any) -> string { // tprint procedure return a string that was allocated with the current context's temporary allocator tprint :: proc(args: ..any, sep := " ") -> string { str: strings.Builder - strings.init_builder(&str, context.temp_allocator) + strings.builder_init(&str, context.temp_allocator) sbprint(buf=&str, args=args, sep=sep) return strings.to_string(str) } // tprintln procedure return a string that was allocated with the current context's temporary allocator tprintln :: proc(args: ..any, sep := " ") -> string { str: strings.Builder - strings.init_builder(&str, context.temp_allocator) + strings.builder_init(&str, context.temp_allocator) sbprintln(buf=&str, args=args, sep=sep) return strings.to_string(str) } // tprintf procedure return a string that was allocated with the current context's temporary allocator tprintf :: proc(fmt: string, args: ..any) -> string { str: strings.Builder - strings.init_builder(&str, context.temp_allocator) + strings.builder_init(&str, context.temp_allocator) sbprintf(&str, fmt, ..args) return strings.to_string(str) } @@ -776,7 +776,7 @@ fmt_rune :: proc(fi: ^Info, r: rune, verb: rune) { case 'c', 'r', 'v': io.write_rune(fi.writer, r, &fi.n) case 'q': - fi.n += strings.write_quoted_rune(fi.writer, r) + fi.n += io.write_quoted_rune(fi.writer, r) case: fmt_int(fi, u64(r), false, 32, verb) } diff --git a/core/image/netpbm/netpbm.odin b/core/image/netpbm/netpbm.odin index 5a504cd7c..18545092d 100644 --- a/core/image/netpbm/netpbm.odin +++ b/core/image/netpbm/netpbm.odin @@ -130,7 +130,7 @@ save_to_buffer :: proc(img: ^Image, custom_info: Info = {}, allocator := context // we will write to a string builder data: strings.Builder - strings.init_builder(&data) + strings.builder_init(&data) // all PNM headers start with the format fmt.sbprintf(&data, "%s\n", header.format) @@ -409,7 +409,7 @@ _parse_header_pam :: proc(data: []byte, allocator := context.allocator) -> (head // string buffer for the tupltype tupltype: strings.Builder - strings.init_builder(&tupltype, context.temp_allocator); defer strings.destroy_builder(&tupltype) + strings.builder_init(&tupltype, context.temp_allocator); defer strings.builder_destroy(&tupltype) fmt.sbprint(&tupltype, "") // PAM uses actual lines, so we can iterate easily diff --git a/core/io/util.odin b/core/io/util.odin index 9d253807b..46aa97919 100644 --- a/core/io/util.odin +++ b/core/io/util.odin @@ -247,6 +247,30 @@ write_quoted_string :: proc(w: Writer, str: string, quote: byte = '"', n_written return } +// writer append a quoted rune into the byte buffer, return the written size +write_quoted_rune :: proc(w: Writer, r: rune) -> (n: int) { + _write_byte :: #force_inline proc(w: Writer, c: byte) -> int { + err := write_byte(w, c) + return 1 if err == nil else 0 + } + + quote := byte('\'') + n += _write_byte(w, quote) + buf, width := utf8.encode_rune(r) + if width == 1 && r == utf8.RUNE_ERROR { + n += _write_byte(w, '\\') + n += _write_byte(w, 'x') + n += _write_byte(w, DIGITS_LOWER[buf[0]>>4]) + n += _write_byte(w, DIGITS_LOWER[buf[0]&0xf]) + } else { + i, _ := write_escaped_rune(w, r, quote) + n += i + } + n += _write_byte(w, quote) + return +} + + Tee_Reader :: struct { diff --git a/core/odin/printer/printer.odin b/core/odin/printer/printer.odin index 807cc99bd..63a3b543d 100644 --- a/core/odin/printer/printer.odin +++ b/core/odin/printer/printer.odin @@ -151,7 +151,7 @@ print :: proc(p: ^Printer, file: ^ast.File) -> string { fix_lines(p) - builder := strings.make_builder(0, 5 * mem.Megabyte, p.allocator) + builder := strings.builder_make(0, 5 * mem.Megabyte, p.allocator) last_line := 0 diff --git a/core/odin/printer/visit.odin b/core/odin/printer/visit.odin index 70140f180..66166aa81 100644 --- a/core/odin/printer/visit.odin +++ b/core/odin/printer/visit.odin @@ -71,7 +71,7 @@ push_comment :: proc(p: ^Printer, comment: tokenizer.Token) -> int { return 0 } else { - builder := strings.make_builder(context.temp_allocator) + builder := strings.builder_make(context.temp_allocator) c_len := len(comment.text) trim_space := true @@ -90,12 +90,12 @@ push_comment :: proc(p: ^Printer, comment: tokenizer.Token) -> int { continue case c == '\r' && comment.text[min(c_len - 1, i + 1)] == '\n': append(&multilines, strings.to_string(builder)) - builder = strings.make_builder(context.temp_allocator) + builder = strings.builder_make(context.temp_allocator) trim_space = true i += 1 case c == '\n': append(&multilines, strings.to_string(builder)) - builder = strings.make_builder(context.temp_allocator) + builder = strings.builder_make(context.temp_allocator) trim_space = true case c == '/' && comment.text[min(c_len - 1, i + 1)] == '*': strings.write_string(&builder, "/*") diff --git a/core/strings/builder.odin b/core/strings/builder.odin index a910b0988..6de42804d 100644 --- a/core/strings/builder.odin +++ b/core/strings/builder.odin @@ -17,50 +17,53 @@ Builder :: struct { } // return a builder, default length 0 / cap 16 are done through make -make_builder_none :: proc(allocator := context.allocator) -> Builder { +builder_make_none :: proc(allocator := context.allocator) -> Builder { return Builder{buf=make([dynamic]byte, allocator)} } // return a builder, with a set length `len` and cap 16 byte buffer -make_builder_len :: proc(len: int, allocator := context.allocator) -> Builder { +builder_make_len :: proc(len: int, allocator := context.allocator) -> Builder { return Builder{buf=make([dynamic]byte, len, allocator)} } // return a builder, with a set length `len` byte buffer and a custom `cap` -make_builder_len_cap :: proc(len, cap: int, allocator := context.allocator) -> Builder { +builder_make_len_cap :: proc(len, cap: int, allocator := context.allocator) -> Builder { return Builder{buf=make([dynamic]byte, len, cap, allocator)} } -// overload simple `make_builder_*` with or without len / cap parameters -make_builder :: proc{ - make_builder_none, - make_builder_len, - make_builder_len_cap, +// overload simple `builder_make_*` with or without len / cap parameters +builder_make :: proc{ + builder_make_none, + builder_make_len, + builder_make_len_cap, } // initialize a builder, default length 0 / cap 16 are done through make // replaces the existing `buf` -init_builder_none :: proc(b: ^Builder, allocator := context.allocator) { +builder_init_none :: proc(b: ^Builder, allocator := context.allocator) -> ^Builder { b.buf = make([dynamic]byte, allocator) + return b } // initialize a builder, with a set length `len` and cap 16 byte buffer // replaces the existing `buf` -init_builder_len :: proc(b: ^Builder, len: int, allocator := context.allocator) { +builder_init_len :: proc(b: ^Builder, len: int, allocator := context.allocator) -> ^Builder { b.buf = make([dynamic]byte, len, allocator) + return b } // initialize a builder, with a set length `len` byte buffer and a custom `cap` // replaces the existing `buf` -init_builder_len_cap :: proc(b: ^Builder, len, cap: int, allocator := context.allocator) { +builder_init_len_cap :: proc(b: ^Builder, len, cap: int, allocator := context.allocator) -> ^Builder { b.buf = make([dynamic]byte, len, cap, allocator) + return b } -// overload simple `init_builder_*` with or without len / ap parameters -init_builder :: proc{ - init_builder_none, - init_builder_len, - init_builder_len_cap, +// overload simple `builder_init_*` with or without len / ap parameters +builder_init :: proc{ + builder_init_none, + builder_init_len, + builder_init_len_cap, } @(private) @@ -103,18 +106,18 @@ to_writer :: proc(b: ^Builder) -> io.Writer { } // delete and clear the builder byte buffer content -destroy_builder :: proc(b: ^Builder) { +builder_destroy :: proc(b: ^Builder) { delete(b.buf) clear(&b.buf) } // reserve the builfer byte buffer to a specific cap, when it's higher than before -grow_builder :: proc(b: ^Builder, cap: int) { +builder_grow :: proc(b: ^Builder, cap: int) { reserve(&b.buf, cap) } // clear the builder byte buffer content -reset_builder :: proc(b: ^Builder) { +builder_reset :: proc(b: ^Builder) { clear(&b.buf) } @@ -165,7 +168,7 @@ builder_space :: proc(b: Builder) -> int { /* appends a byte to the builder, returns the append diff - builder := strings.make_builder() + builder := strings.builder_make() strings.write_byte(&builder, 'a') // 1 strings.write_byte(&builder, 'b') // 1 strings.write_byte(&builder, 'c') // 1 @@ -181,7 +184,7 @@ write_byte :: proc(b: ^Builder, x: byte) -> (n: int) { /* appends a slice of bytes to the builder, returns the append diff - builder := strings.make_builder() + builder := strings.builder_make() bytes := [?]byte { 'a', 'b', 'c' } strings.write_bytes(&builder, bytes[:]) // 3 fmt.println(strings.to_string(builder)) // -> abc @@ -196,77 +199,46 @@ write_bytes :: proc(b: ^Builder, x: []byte) -> (n: int) { /* appends a single rune into the builder, returns written rune size and an `io.Error` - builder := strings.make_builder() - strings.write_rune_builder(&builder, 'ä') // 2 None - strings.write_rune_builder(&builder, 'b') // 1 None - strings.write_rune_builder(&builder, 'c') // 1 None + builder := strings.builder_make() + strings.write_rune(&builder, 'ä') // 2 None + strings.write_rune(&builder, 'b') // 1 None + strings.write_rune(&builder, 'c') // 1 None fmt.println(strings.to_string(builder)) // -> äbc */ -write_rune_builder :: proc(b: ^Builder, r: rune) -> (int, io.Error) { +write_rune :: proc(b: ^Builder, r: rune) -> (int, io.Error) { return io.write_rune(to_writer(b), r) } /* appends a quoted rune into the builder, returns written size - builder := strings.make_builder() + builder := strings.builder_make() strings.write_string(&builder, "abc") // 3 - strings.write_quoted_rune_builder(&builder, 'ä') // 4 + strings.write_quoted_rune(&builder, 'ä') // 4 strings.write_string(&builder, "abc") // 3 fmt.println(strings.to_string(builder)) // -> abc'ä'abc */ -write_quoted_rune_builder :: proc(b: ^Builder, r: rune) -> (n: int) { - return write_quoted_rune(to_writer(b), r) +write_quoted_rune :: proc(b: ^Builder, r: rune) -> (n: int) { + return io.write_quoted_rune(to_writer(b), r) } -@(private) -_write_byte :: proc(w: io.Writer, c: byte) -> int { - err := io.write_byte(w, c) - return 1 if err == nil else 0 -} - -// writer append a quoted rune into the byte buffer, return the written size -write_quoted_rune :: proc(w: io.Writer, r: rune) -> (n: int) { - quote := byte('\'') - n += _write_byte(w, quote) - buf, width := utf8.encode_rune(r) - if width == 1 && r == utf8.RUNE_ERROR { - n += _write_byte(w, '\\') - n += _write_byte(w, 'x') - n += _write_byte(w, DIGITS_LOWER[buf[0]>>4]) - n += _write_byte(w, DIGITS_LOWER[buf[0]&0xf]) - } else { - i, _ := io.write_escaped_rune(w, r, quote) - n += i - } - n += _write_byte(w, quote) - return -} - -// overload for `write_string_*` variants -write_string :: proc{ - write_string_builder, - write_string_writer, -} /* appends a string to the builder, return the written byte size - builder := strings.make_builder() + builder := strings.builder_make() strings.write_string(&builder, "a") // 1 strings.write_string(&builder, "bc") // 2 strings.write_string(&builder, "xyz") // 3 fmt.println(strings.to_string(builder)) // -> abcxyz */ -write_string_builder :: proc(b: ^Builder, s: string) -> (n: int) { - return write_string_writer(to_writer(b), s) +write_string :: proc(b: ^Builder, s: string) -> (n: int) { + n0 := len(b.buf) + append(&b.buf, s) + n1 := len(b.buf) + return n1-n0 } -// appends a string to the writer -write_string_writer :: proc(w: io.Writer, s: string) -> (n: int) { - n, _ = io.write(w, transmute([]byte)s) - return -} // pops and returns the last byte in the builder // returns 0 when the builder is empty @@ -297,70 +269,36 @@ pop_rune :: proc(b: ^Builder) -> (r: rune, width: int) { @(private) DIGITS_LOWER := "0123456789abcdefx" -// overload for `write_quoted_string_*` variants -write_quoted_string :: proc{ - write_quoted_string_builder, - write_quoted_string_writer, -} - /* append a quoted string into the builder, return the written byte size - builder := strings.make_builder() + builder := strings.builder_make() strings.write_quoted_string(&builder, "a") // 3 strings.write_quoted_string(&builder, "bc", '\'') // 4 strings.write_quoted_string(&builder, "xyz") // 5 fmt.println(strings.to_string(builder)) // -> "a"'bc'xyz" */ -write_quoted_string_builder :: proc(b: ^Builder, str: string, quote: byte = '"') -> (n: int) { +write_quoted_string :: proc(b: ^Builder, str: string, quote: byte = '"') -> (n: int) { n, _ = io.write_quoted_string(to_writer(b), str, quote) return } -@(deprecated="prefer io.write_quoted_string") -write_quoted_string_writer :: proc(w: io.Writer, str: string, quote: byte = '"') -> (n: int) { - n, _ = io.write_quoted_string(w, str, quote) - return -} - -// overload for `write_encoded_rune_*` -write_encoded_rune :: proc{ - write_encoded_rune_builder, - write_encoded_rune_writer, -} // appends a rune to the builder, optional `write_quote` boolean tag, returns the written rune size -write_encoded_rune_builder :: proc(b: ^Builder, r: rune, write_quote := true) -> (n: int) { +write_encoded_rune :: proc(b: ^Builder, r: rune, write_quote := true) -> (n: int) { n, _ = io.write_encoded_rune(to_writer(b), r, write_quote) return } -@(deprecated="prefer io.write_encoded_rune") -write_encoded_rune_writer :: proc(w: io.Writer, r: rune, write_quote := true) -> (n: int) { - n, _ = io.write_encoded_rune(w, r, write_quote) - return -} - -// overload for `write_escaped_rune_*` -write_escaped_rune :: proc{ - write_escaped_rune_builder, - write_escaped_rune_writer, -} // appends a rune to the builder, fully written out in case of escaped runes e.g. '\a' will be written as such // when `r` and `quote` match and `quote` is `\\` - they will be written as two slashes // `html_safe` flag in case the runes '<', '>', '&' should be encoded as digits e.g. `\u0026` -write_escaped_rune_builder :: proc(b: ^Builder, r: rune, quote: byte, html_safe := false) -> (n: int) { +write_escaped_rune :: proc(b: ^Builder, r: rune, quote: byte, html_safe := false) -> (n: int) { n, _ = io.write_escaped_rune(to_writer(b), r, quote, html_safe) return } -@(deprecated="prefer io.write_escaped_rune") -write_escaped_rune_writer :: proc(w: io.Writer, r: rune, quote: byte, html_safe := false) -> (n: int) { - n, _ = io.write_escaped_rune(w, r, quote, html_safe) - return -} - // writes a u64 value `i` in `base` = 10 into the builder, returns the written amount of characters write_u64 :: proc(b: ^Builder, i: u64, base: int = 10) -> (n: int) { buf: [32]byte diff --git a/core/strings/conversion.odin b/core/strings/conversion.odin index 5e7110281..ab827490d 100644 --- a/core/strings/conversion.odin +++ b/core/strings/conversion.odin @@ -10,7 +10,7 @@ to_valid_utf8 :: proc(s, replacement: string, allocator := context.allocator) -> } b: Builder - init_builder(&b, 0, 0, allocator) + builder_init(&b, 0, 0, allocator) s := s for c, i in s { @@ -20,7 +20,7 @@ to_valid_utf8 :: proc(s, replacement: string, allocator := context.allocator) -> _, w := utf8.decode_rune_in_string(s[i:]) if w == 1 { - grow_builder(&b, len(s) + len(replacement)) + builder_grow(&b, len(s) + len(replacement)) write_string(&b, s[:i]) s = s[i:] break @@ -67,9 +67,9 @@ to_valid_utf8 :: proc(s, replacement: string, allocator := context.allocator) -> */ to_lower :: proc(s: string, allocator := context.allocator) -> string { b: Builder - init_builder(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) for r in s { - write_rune_builder(&b, unicode.to_lower(r)) + write_rune(&b, unicode.to_lower(r)) } return to_string(b) } @@ -83,9 +83,9 @@ to_lower :: proc(s: string, allocator := context.allocator) -> string { */ to_upper :: proc(s: string, allocator := context.allocator) -> string { b: Builder - init_builder(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) for r in s { - write_rune_builder(&b, unicode.to_upper(r)) + write_rune(&b, unicode.to_upper(r)) } return to_string(b) } @@ -147,7 +147,7 @@ to_camel_case :: proc(s: string, allocator := context.allocator) -> string { s := s s = trim_space(s) b: Builder - init_builder(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) w := to_writer(&b) string_case_iterator(w, s, proc(w: io.Writer, prev, curr, next: rune) { @@ -172,7 +172,7 @@ to_pascal_case :: proc(s: string, allocator := context.allocator) -> string { s := s s = trim_space(s) b: Builder - init_builder(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) w := to_writer(&b) string_case_iterator(w, s, proc(w: io.Writer, prev, curr, next: rune) { @@ -203,7 +203,7 @@ to_delimiter_case :: proc(s: string, delimiter: rune, all_upper_case: bool, allo s := s s = trim_space(s) b: Builder - init_builder(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) w := to_writer(&b) adjust_case := unicode.to_upper if all_upper_case else unicode.to_lower @@ -272,7 +272,7 @@ to_ada_case :: proc(s: string, allocator := context.allocator) -> string { s := s s = trim_space(s) b: Builder - init_builder(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) w := to_writer(&b) prev, curr: rune diff --git a/core/strings/strings.odin b/core/strings/strings.odin index 6bdafbba4..603917698 100644 --- a/core/strings/strings.odin +++ b/core/strings/strings.odin @@ -1553,7 +1553,7 @@ split_multi_iterate :: proc(using sm: ^Split_Multi) -> (res: string, ok: bool) # scrub :: proc(s: string, replacement: string, allocator := context.allocator) -> string { str := s b: Builder - init_builder(&b, 0, len(s), allocator) + builder_init(&b, 0, len(s), allocator) has_error := false cursor := 0 @@ -1622,7 +1622,7 @@ expand_tabs :: proc(s: string, tab_size: int, allocator := context.allocator) -> } b: Builder - init_builder(&b, allocator) + builder_init(&b, allocator) writer := to_writer(&b) str := s column: int @@ -1690,8 +1690,8 @@ centre_justify :: proc(str: string, length: int, pad: string, allocator := conte pad_len := rune_count(pad) b: Builder - init_builder(&b, allocator) - grow_builder(&b, len(str) + (remains/pad_len + 1)*len(pad)) + builder_init(&b, allocator) + builder_grow(&b, len(str) + (remains/pad_len + 1)*len(pad)) w := to_writer(&b) @@ -1713,8 +1713,8 @@ left_justify :: proc(str: string, length: int, pad: string, allocator := context pad_len := rune_count(pad) b: Builder - init_builder(&b, allocator) - grow_builder(&b, len(str) + (remains/pad_len + 1)*len(pad)) + builder_init(&b, allocator) + builder_grow(&b, len(str) + (remains/pad_len + 1)*len(pad)) w := to_writer(&b) @@ -1735,8 +1735,8 @@ right_justify :: proc(str: string, length: int, pad: string, allocator := contex pad_len := rune_count(pad) b: Builder - init_builder(&b, allocator) - grow_builder(&b, len(str) + (remains/pad_len + 1)*len(pad)) + builder_init(&b, allocator) + builder_grow(&b, len(str) + (remains/pad_len + 1)*len(pad)) w := to_writer(&b) diff --git a/vendor/microui/microui.odin b/vendor/microui/microui.odin index 09a6b8430..7967f7f4b 100644 --- a/vendor/microui/microui.odin +++ b/vendor/microui/microui.odin @@ -353,7 +353,7 @@ end :: proc(ctx: ^Context) { /* reset input state */ ctx.key_pressed_bits = {} // clear - strings.reset_builder(&ctx.text_input) + strings.builder_reset(&ctx.text_input) ctx.mouse_pressed_bits = {} // clear ctx.mouse_released_bits = {} // clear ctx.scroll_delta = Vec2{0, 0} From ae9d540c1c77bfc84a4fff964e218aebcb0c2680 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 11 Jul 2022 11:55:49 +0100 Subject: [PATCH 018/130] Correct naming in tests --- core/encoding/entity/example/entity_example.odin | 2 +- core/encoding/xml/example/xml_example.odin | 2 +- core/unicode/tools/generate_entity_table.odin | 2 +- tests/core/encoding/varint/test_core_varint.odin | 6 +++--- tests/core/encoding/xml/test_core_xml.odin | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/encoding/entity/example/entity_example.odin b/core/encoding/entity/example/entity_example.odin index 6fc377f9d..6301eb263 100644 --- a/core/encoding/entity/example/entity_example.odin +++ b/core/encoding/entity/example/entity_example.odin @@ -8,7 +8,7 @@ import "core:time" doc_print :: proc(doc: ^xml.Document) { buf: strings.Builder - defer strings.destroy_builder(&buf) + defer strings.builder_destroy(&buf) w := strings.to_writer(&buf) xml.print(w, doc) diff --git a/core/encoding/xml/example/xml_example.odin b/core/encoding/xml/example/xml_example.odin index f7e74840e..887b40764 100644 --- a/core/encoding/xml/example/xml_example.odin +++ b/core/encoding/xml/example/xml_example.odin @@ -84,7 +84,7 @@ example :: proc() { doc_hash :: proc(doc: ^xml.Document, print := false) -> (crc32: u32) { buf: strings.Builder - defer strings.destroy_builder(&buf) + defer strings.builder_destroy(&buf) w := strings.to_writer(&buf) xml.print(w, doc) diff --git a/core/unicode/tools/generate_entity_table.odin b/core/unicode/tools/generate_entity_table.odin index 075ec1cca..328ba9091 100644 --- a/core/unicode/tools/generate_entity_table.odin +++ b/core/unicode/tools/generate_entity_table.odin @@ -45,7 +45,7 @@ generate_encoding_entity_table :: proc() { printf("\"%v\" loaded and parsed.\n", filename) generated_buf: strings.Builder - defer strings.destroy_builder(&generated_buf) + defer strings.builder_destroy(&generated_buf) w := strings.to_writer(&generated_buf) charlist, charlist_ok := xml.find_child_by_ident(doc.root, "charlist") diff --git a/tests/core/encoding/varint/test_core_varint.odin b/tests/core/encoding/varint/test_core_varint.odin index 2c3669afa..ee1798aa7 100644 --- a/tests/core/encoding/varint/test_core_varint.odin +++ b/tests/core/encoding/varint/test_core_varint.odin @@ -79,8 +79,8 @@ test_leb128 :: proc(t: ^testing.T) { } } - for num_bytes in 1..uint(16) { - for _ in 0..RANDOM_TESTS { + for num_bytes in 1..=uint(16) { + for _ in 0..=RANDOM_TESTS { unsigned, signed := get_random(num_bytes) { @@ -109,7 +109,7 @@ test_leb128 :: proc(t: ^testing.T) { get_random :: proc(byte_count: uint) -> (u: u128, i: i128) { assert(byte_count >= 0 && byte_count <= size_of(u128)) - for _ in 1..byte_count { + for _ in 1..=byte_count { u <<= 8 u |= u128(rand.uint32() & 0xff) } diff --git a/tests/core/encoding/xml/test_core_xml.odin b/tests/core/encoding/xml/test_core_xml.odin index a17594b7e..3cfc75a65 100644 --- a/tests/core/encoding/xml/test_core_xml.odin +++ b/tests/core/encoding/xml/test_core_xml.odin @@ -281,7 +281,7 @@ doc_to_string :: proc(doc: ^xml.Document) -> (result: string) { } buf: strings.Builder - defer strings.destroy_builder(&buf) + defer strings.builder_destroy(&buf) print(strings.to_writer(&buf), doc) return strings.clone(strings.to_string(buf)) From 37d04198ab73441510a8556abd1aa1b5a4615c9b Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 11 Jul 2022 12:31:01 +0100 Subject: [PATCH 019/130] Add improved error message when doing `^x` instead of `&x` for addressable variables --- src/check_type.cpp | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/check_type.cpp b/src/check_type.cpp index bc89a9be9..cd4b43fab 100644 --- a/src/check_type.cpp +++ b/src/check_type.cpp @@ -2685,7 +2685,28 @@ bool check_type_internal(CheckerContext *ctx, Ast *e, Type **type, Type *named_t case_end; case_ast_node(pt, PointerType, e); - *type = alloc_type_pointer(check_type(ctx, pt->type)); + CheckerContext c = *ctx; + c.type_path = new_checker_type_path(); + defer (destroy_checker_type_path(c.type_path)); + + Type *elem = t_invalid; + Operand o = {}; + check_expr_or_type(&c, &o, pt->type); + if (o.mode != Addressing_Invalid && o.mode != Addressing_Type) { + // NOTE(bill): call check_type_expr again to get a consistent error message + begin_error_block(); + elem = check_type_expr(&c, pt->type, nullptr); + if (o.mode == Addressing_Variable) { + gbString s = expr_to_string(pt->type); + error_line("\tSuggestion: ^ is used for pointer types, did you mean '&%s'?\n", s); + gb_string_free(s); + } + end_error_block(); + } else { + elem = o.type; + } + + *type = alloc_type_pointer(elem); set_base_type(named_type, *type); return true; case_end; From 5332705e3108c35889020b105d0b1f68b6d48644 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Thu, 14 Jul 2022 11:07:52 +0200 Subject: [PATCH 020/130] [hash] Give crc-64 a 64-bit seed. --- core/hash/crc.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/hash/crc.odin b/core/hash/crc.odin index b504e92fb..9c0048a0f 100644 --- a/core/hash/crc.odin +++ b/core/hash/crc.odin @@ -1,8 +1,8 @@ package hash @(optimization_mode="speed") -crc64_ecma_182 :: proc(data: []byte, seed := u32(0)) -> u64 #no_bounds_check { - result := u64(seed) +crc64_ecma_182 :: proc(data: []byte, seed := u64(0)) -> (result: u64) #no_bounds_check { + result = seed #no_bounds_check for b in data { result = result<<8 ~ _crc64_table_ecma_182[((result>>56) ~ u64(b)) & 0xff] } From f28547cae1dbc009283e63250de0cdbde68543d7 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 14 Jul 2022 11:56:05 +0100 Subject: [PATCH 021/130] Fix `libc.putchar` --- core/c/libc/stdio.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/c/libc/stdio.odin b/core/c/libc/stdio.odin index 01d0cd427..9b1089d85 100644 --- a/core/c/libc/stdio.odin +++ b/core/c/libc/stdio.odin @@ -196,7 +196,7 @@ foreign libc { getc :: proc(stream: ^FILE) -> int --- getchar :: proc() -> int --- putc :: proc(c: int, stream: ^FILE) -> int --- - putchar :: proc() -> int --- + putchar :: proc(c: int) -> int --- puts :: proc(s: cstring) -> int --- ungetc :: proc(c: int, stream: ^FILE) -> int --- fread :: proc(ptr: rawptr, size: size_t, nmemb: size_t, stream: ^FILE) -> size_t --- From d3081bd8891e3b018a92064cff41877f6b71ff20 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 14 Jul 2022 15:26:50 +0100 Subject: [PATCH 022/130] Add `buffer_read_ptr` and `buffer_write_ptr` --- core/bytes/buffer.odin | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/bytes/buffer.odin b/core/bytes/buffer.odin index 7d8ae596d..96f057a9b 100644 --- a/core/bytes/buffer.odin +++ b/core/bytes/buffer.odin @@ -161,6 +161,10 @@ buffer_write :: proc(b: ^Buffer, p: []byte) -> (n: int, err: io.Error) { return copy(b.buf[m:], p), nil } +buffer_write_ptr :: proc(b: ^Buffer, ptr: rawptr, size: int) -> (n: int, err: io.Error) { + return buffer_write(b, ([^]byte)(ptr)[:size]) +} + buffer_write_string :: proc(b: ^Buffer, s: string) -> (n: int, err: io.Error) { b.last_read = .Invalid m, ok := _buffer_try_grow(b, len(s)) @@ -229,6 +233,10 @@ buffer_read :: proc(b: ^Buffer, p: []byte) -> (n: int, err: io.Error) { return } +buffer_read_ptr :: proc(b: ^Buffer, ptr: rawptr, size: int) -> (n: int, err: io.Error) { + return buffer_read(b, ([^]byte)(ptr)[:size]) +} + buffer_read_at :: proc(b: ^Buffer, p: []byte, offset: int) -> (n: int, err: io.Error) { b.last_read = .Invalid From 157c87b2a2ce3d82bb55bcabd746f14d1a810e12 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Fri, 15 Jul 2022 00:34:26 +0100 Subject: [PATCH 023/130] Fix typo --- core/fmt/fmt.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/fmt/fmt.odin b/core/fmt/fmt.odin index e03dfd678..4db140afa 100644 --- a/core/fmt/fmt.odin +++ b/core/fmt/fmt.odin @@ -1014,7 +1014,7 @@ fmt_pointer :: proc(fi: ^Info, p: rawptr, verb: rune) { u := u64(uintptr(p)) switch verb { case 'p', 'v': - if !fi.hash || verb == 'v' { + if !fi.hash && verb == 'v' { io.write_string(fi.writer, "0x", &fi.n) } _fmt_int(fi, u, 16, false, 8*size_of(rawptr), __DIGITS_UPPER) From 3e6ec65dd97698a9a676ba18998848a59f0ab88e Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Fri, 15 Jul 2022 13:02:07 +0200 Subject: [PATCH 024/130] Fix murmur64a's tail handling. Also, split up the murmur64 proc into murmur64a and murmur64b as they're distinct hashes with their own output. --- core/hash/hash.odin | 196 +++++++++++++++++++++++--------------------- 1 file changed, 101 insertions(+), 95 deletions(-) diff --git a/core/hash/hash.odin b/core/hash/hash.odin index 63708a096..870d6a638 100644 --- a/core/hash/hash.odin +++ b/core/hash/hash.odin @@ -172,108 +172,114 @@ murmur32 :: proc(data: []byte, seed := u32(0)) -> u32 { return h1 } +// See https://github.com/aappleby/smhasher/blob/master/src/MurmurHash2.cpp#L96 @(optimization_mode="speed") -murmur64 :: proc(data: []byte, seed := u64(0x9747b28c)) -> u64 { - when size_of(int) == 8 { - m :: 0xc6a4a7935bd1e995 - r :: 47 +murmur64a :: proc(data: []byte, seed := u64(0x9747b28c)) -> u64 { + m :: 0xc6a4a7935bd1e995 + r :: 47 - h: u64 = seed ~ (u64(len(data)) * m) - data64 := mem.slice_ptr(cast(^u64)raw_data(data), len(data)/size_of(u64)) + h: u64 = seed ~ (u64(len(data)) * m) + data64 := mem.slice_data_cast([]u64, data) - for _, i in data64 { - k := data64[i] + for _, i in data64 { + k := data64[i] - k *= m - k ~= k>>r - k *= m + k *= m + k ~= k>>r + k *= m - h ~= k - h *= m - } - - switch len(data)&7 { - case 7: h ~= u64(data[6]) << 48; fallthrough - case 6: h ~= u64(data[5]) << 40; fallthrough - case 5: h ~= u64(data[4]) << 32; fallthrough - case 4: h ~= u64(data[3]) << 24; fallthrough - case 3: h ~= u64(data[2]) << 16; fallthrough - case 2: h ~= u64(data[1]) << 8; fallthrough - case 1: - h ~= u64(data[0]) - h *= m - } - - h ~= h>>r + h ~= k h *= m - h ~= h>>r - - return h - } else { - m :: 0x5bd1e995 - r :: 24 - - h1 := u32(seed) ~ u32(len(data)) - h2 := u32(seed) >> 32 - data32 := mem.slice_ptr(cast(^u32)raw_data(data), len(data)/size_of(u32)) - len := len(data) - i := 0 - - for len >= 8 { - k1, k2: u32 - k1 = data32[i]; i += 1 - k1 *= m - k1 ~= k1>>r - k1 *= m - h1 *= m - h1 ~= k1 - len -= 4 - - k2 = data32[i]; i += 1 - k2 *= m - k2 ~= k2>>r - k2 *= m - h2 *= m - h2 ~= k2 - len -= 4 - } - - if len >= 4 { - k1: u32 - k1 = data32[i]; i += 1 - k1 *= m - k1 ~= k1>>r - k1 *= m - h1 *= m - h1 ~= k1 - len -= 4 - } - - // TODO(bill): Fix this - #no_bounds_check data8 := mem.slice_to_bytes(data32[i:])[:3] - switch len { - case 3: - h2 ~= u32(data8[2]) << 16 - fallthrough - case 2: - h2 ~= u32(data8[1]) << 8 - fallthrough - case 1: - h2 ~= u32(data8[0]) - h2 *= m - } - - h1 ~= h2>>18 - h1 *= m - h2 ~= h1>>22 - h2 *= m - h1 ~= h2>>17 - h1 *= m - h2 ~= h1>>19 - h2 *= m - - return u64(h1)<<32 | u64(h2) } + + offset := len(data64) * size_of(u64) + + switch len(data)&7 { + case 7: h ~= u64(data[offset + 6]) << 48; fallthrough + case 6: h ~= u64(data[offset + 5]) << 40; fallthrough + case 5: h ~= u64(data[offset + 4]) << 32; fallthrough + case 4: h ~= u64(data[offset + 3]) << 24; fallthrough + case 3: h ~= u64(data[offset + 2]) << 16; fallthrough + case 2: h ~= u64(data[offset + 1]) << 8; fallthrough + case 1: + h ~= u64(data[offset + 0]) + h *= m + } + + h ~= h>>r + h *= m + h ~= h>>r + + return h +} + +// See https://github.com/aappleby/smhasher/blob/master/src/MurmurHash2.cpp#L140 +@(optimization_mode="speed") +murmur64b :: proc(data: []byte, seed := u64(0x9747b28c)) -> u64 { + m :: 0x5bd1e995 + r :: 24 + + h1 := u32(seed) ~ u32(len(data)) + h2 := u32(seed) >> 32 + + data32 := mem.slice_ptr(cast(^u32)raw_data(data), len(data)/size_of(u32)) + len := len(data) + i := 0 + + for len >= 8 { + k1, k2: u32 + k1 = data32[i]; i += 1 + k1 *= m + k1 ~= k1>>r + k1 *= m + h1 *= m + h1 ~= k1 + len -= 4 + + k2 = data32[i]; i += 1 + k2 *= m + k2 ~= k2>>r + k2 *= m + h2 *= m + h2 ~= k2 + len -= 4 + } + + if len >= 4 { + k1: u32 + k1 = data32[i]; i += 1 + k1 *= m + k1 ~= k1>>r + k1 *= m + h1 *= m + h1 ~= k1 + len -= 4 + } + + // TODO(bill): Fix this + #no_bounds_check data8 := mem.slice_to_bytes(data32[i:])[:3] + switch len { + case 3: + h2 ~= u32(data8[2]) << 16 + fallthrough + case 2: + h2 ~= u32(data8[1]) << 8 + fallthrough + case 1: + h2 ~= u32(data8[0]) + h2 *= m + } + + h1 ~= h2>>18 + h1 *= m + h2 ~= h1>>22 + h2 *= m + h1 ~= h2>>17 + h1 *= m + h2 ~= h1>>19 + h2 *= m + + return u64(h1)<<32 | u64(h2) } @(optimization_mode="speed") From 872d391cfb8579bc52f248d2827c97d5c010e334 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 16 Jul 2022 16:12:16 +0100 Subject: [PATCH 025/130] Mock up for the ability to enforce our own `runtime.memset` if necessary --- src/llvm_backend_utility.cpp | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp index 52d3a17cf..2fa43bb0a 100644 --- a/src/llvm_backend_utility.cpp +++ b/src/llvm_backend_utility.cpp @@ -1,3 +1,5 @@ +lbValue lb_lookup_runtime_procedure(lbModule *m, String const &name); + bool lb_is_type_aggregate(Type *t) { t = base_type(t); switch (t->kind) { @@ -60,6 +62,7 @@ void lb_mem_zero_ptr_internal(lbProcedure *p, LLVMValueRef ptr, LLVMValueRef len } } + char const *name = "llvm.memset"; if (is_inlinable) { name = "llvm.memset.inline"; @@ -69,17 +72,29 @@ void lb_mem_zero_ptr_internal(lbProcedure *p, LLVMValueRef ptr, LLVMValueRef len lb_type(p->module, t_rawptr), lb_type(p->module, t_int) }; - unsigned id = LLVMLookupIntrinsicID(name, gb_strlen(name)); - GB_ASSERT_MSG(id != 0, "Unable to find %s.%s.%s", name, LLVMPrintTypeToString(types[0]), LLVMPrintTypeToString(types[1])); - LLVMValueRef ip = LLVMGetIntrinsicDeclaration(p->module->mod, id, types, gb_count_of(types)); + if (true || is_inlinable) { + unsigned id = LLVMLookupIntrinsicID(name, gb_strlen(name)); + GB_ASSERT_MSG(id != 0, "Unable to find %s.%s.%s", name, LLVMPrintTypeToString(types[0]), LLVMPrintTypeToString(types[1])); + LLVMValueRef ip = LLVMGetIntrinsicDeclaration(p->module->mod, id, types, gb_count_of(types)); - LLVMValueRef args[4] = {}; - args[0] = LLVMBuildPointerCast(p->builder, ptr, types[0], ""); - args[1] = LLVMConstInt(LLVMInt8TypeInContext(p->module->ctx), 0, false); - args[2] = LLVMBuildIntCast2(p->builder, len, types[1], /*signed*/false, ""); - args[3] = LLVMConstInt(LLVMInt1TypeInContext(p->module->ctx), is_volatile, false); + LLVMValueRef args[4] = {}; + args[0] = LLVMBuildPointerCast(p->builder, ptr, types[0], ""); + args[1] = LLVMConstInt(LLVMInt8TypeInContext(p->module->ctx), 0, false); + args[2] = LLVMBuildIntCast2(p->builder, len, types[1], /*signed*/false, ""); + args[3] = LLVMConstInt(LLVMInt1TypeInContext(p->module->ctx), is_volatile, false); + + LLVMBuildCall(p->builder, ip, args, gb_count_of(args), ""); + } else { + LLVMValueRef ip = lb_lookup_runtime_procedure(p->module, str_lit("memset")).value; + + LLVMValueRef args[3] = {}; + args[0] = LLVMBuildPointerCast(p->builder, ptr, types[0], ""); + args[1] = LLVMConstInt(LLVMInt32TypeInContext(p->module->ctx), 0, false); + args[2] = LLVMBuildIntCast2(p->builder, len, types[1], /*signed*/false, ""); + + LLVMBuildCall(p->builder, ip, args, gb_count_of(args), ""); + } - LLVMBuildCall(p->builder, ip, args, gb_count_of(args), ""); } void lb_mem_zero_ptr(lbProcedure *p, LLVMValueRef ptr, Type *type, unsigned alignment) { @@ -1842,8 +1857,6 @@ void lb_set_wasm_export_attributes(LLVMValueRef value, String export_name) { } -lbValue lb_lookup_runtime_procedure(lbModule *m, String const &name); - lbAddr lb_handle_objc_find_or_register_selector(lbProcedure *p, String const &name) { lbAddr *found = string_map_get(&p->module->objc_selectors, name); From 041625381cfd6236de5bc5fea3a398123b7328ed Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 16 Jul 2022 17:36:03 +0100 Subject: [PATCH 026/130] Fix #1888 --- src/check_expr.cpp | 8 ++++++-- src/llvm_backend.hpp | 2 ++ src/llvm_backend_expr.cpp | 38 ++++++++++++++++++++++++++++---------- src/llvm_backend_proc.cpp | 5 +---- src/parser.cpp | 1 + src/parser.hpp | 4 +++- 6 files changed, 41 insertions(+), 17 deletions(-) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index b42301cd6..13d6badbe 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -8643,6 +8643,8 @@ ExprKind check_selector_call_expr(CheckerContext *c, Operand *o, Ast *node, Type Ast *first_arg = x.expr->SelectorExpr.expr; GB_ASSERT(first_arg != nullptr); + first_arg->state_flags |= StateFlag_SelectorCallExpr; + Type *pt = base_type(x.type); GB_ASSERT(pt->kind == Type_Proc); Type *first_type = nullptr; @@ -8668,6 +8670,7 @@ ExprKind check_selector_call_expr(CheckerContext *c, Operand *o, Ast *node, Type y.mode = first_arg->tav.mode; y.type = first_arg->tav.type; y.value = first_arg->tav.value; + if (check_is_assignable_to(c, &y, first_type)) { // Do nothing, it's valid } else { @@ -10034,9 +10037,10 @@ gbString write_expr_to_string(gbString str, Ast *node, bool shorthand) { str = write_expr_to_string(str, ce->proc, shorthand); str = gb_string_appendc(str, "("); - for_array(i, ce->args) { + isize idx0 = cast(isize)ce->was_selector; + for (isize i = idx0; i < ce->args.count; i++) { Ast *arg = ce->args[i]; - if (i > 0) { + if (i > idx0) { str = gb_string_appendc(str, ", "); } str = write_expr_to_string(str, arg, shorthand); diff --git a/src/llvm_backend.hpp b/src/llvm_backend.hpp index f65e1079e..87a354a49 100644 --- a/src/llvm_backend.hpp +++ b/src/llvm_backend.hpp @@ -292,6 +292,8 @@ struct lbProcedure { LLVMMetadataRef debug_info; lbCopyElisionHint copy_elision_hint; + + PtrMap selector_values; }; diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index 1894e85f6..a95d884b0 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -2993,9 +2993,8 @@ lbValue lb_build_unary_and(lbProcedure *p, Ast *expr) { return lb_build_addr_ptr(p, ue->expr); } +lbValue lb_build_expr_internal(lbProcedure *p, Ast *expr); lbValue lb_build_expr(lbProcedure *p, Ast *expr) { - lbModule *m = p->module; - u16 prev_state_flags = p->state_flags; defer (p->state_flags = prev_state_flags); @@ -3022,6 +3021,32 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { p->state_flags = out; } + + // IMPORTANT NOTE(bill): + // Selector Call Expressions (foo->bar(...)) + // must only evaluate `foo` once as it gets transformed into + // `foo.bar(foo, ...)` + // And if `foo` is a procedure call or something more complex, storing the value + // once is a very good idea + // If a stored value is found, it must be removed from the cache + if (expr->state_flags & StateFlag_SelectorCallExpr) { + lbValue *pp = map_get(&p->selector_values, expr); + if (pp != nullptr) { + lbValue res = *pp; + map_remove(&p->selector_values, expr); + return res; + } + } + lbValue res = lb_build_expr_internal(p, expr); + if (expr->state_flags & StateFlag_SelectorCallExpr) { + map_set(&p->selector_values, expr, res); + } + return res; +} + +lbValue lb_build_expr_internal(lbProcedure *p, Ast *expr) { + lbModule *m = p->module; + expr = unparen_expr(expr); TokenPos expr_pos = ast_token(expr).pos; @@ -3119,14 +3144,7 @@ lbValue lb_build_expr(lbProcedure *p, Ast *expr) { case_ast_node(se, SelectorCallExpr, expr); GB_ASSERT(se->modified_call); - TypeAndValue tav = type_and_value_of_expr(expr); - GB_ASSERT(tav.mode != Addressing_Invalid); - lbValue res = lb_build_call_expr(p, se->call); - - ast_node(ce, CallExpr, se->call); - ce->sce_temp_data = gb_alloc_copy(permanent_allocator(), &res, gb_size_of(res)); - - return res; + return lb_build_call_expr(p, se->call); case_end; case_ast_node(te, TernaryIfExpr, expr); diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index 75ca77641..1c0ecabbe 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -113,6 +113,7 @@ lbProcedure *lb_create_procedure(lbModule *m, Entity *entity, bool ignore_body) p->branch_blocks.allocator = a; p->context_stack.allocator = a; p->scope_stack.allocator = a; + map_init(&p->selector_values, a); if (p->is_foreign) { lb_add_foreign_library_path(p->module, entity->Procedure.foreign_library); @@ -2832,10 +2833,6 @@ lbValue lb_build_call_expr(lbProcedure *p, Ast *expr) { expr = unparen_expr(expr); ast_node(ce, CallExpr, expr); - if (ce->sce_temp_data) { - return *(lbValue *)ce->sce_temp_data; - } - lbValue res = lb_build_call_expr_internal(p, expr); if (ce->optional_ok_one) { // TODO(bill): Minor hack for #optional_ok procedures diff --git a/src/parser.cpp b/src/parser.cpp index a6f30cdfd..b63c530d6 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -164,6 +164,7 @@ Ast *clone_ast(Ast *node) { case Ast_SelectorCallExpr: n->SelectorCallExpr.expr = clone_ast(n->SelectorCallExpr.expr); n->SelectorCallExpr.call = clone_ast(n->SelectorCallExpr.call); + GB_ASSERT(n->SelectorCallExpr.modified_call); break; case Ast_IndexExpr: n->IndexExpr.expr = clone_ast(n->IndexExpr.expr); diff --git a/src/parser.hpp b/src/parser.hpp index c167ef6d5..8719b5e56 100644 --- a/src/parser.hpp +++ b/src/parser.hpp @@ -282,6 +282,8 @@ enum StateFlag : u8 { StateFlag_type_assert = 1<<2, StateFlag_no_type_assert = 1<<3, + StateFlag_SelectorCallExpr = 1<<6, + StateFlag_BeenHandled = 1<<7, }; @@ -411,7 +413,7 @@ AST_KIND(_ExprBegin, "", bool) \ Token ellipsis; \ ProcInlining inlining; \ bool optional_ok_one; \ - void *sce_temp_data; \ + bool was_selector; \ }) \ AST_KIND(FieldValue, "field value", struct { Token eq; Ast *field, *value; }) \ AST_KIND(EnumFieldValue, "enum field value", struct { \ From 80c10644ddb6676c879e045e24f200632cd6e2a7 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 16 Jul 2022 17:39:13 +0100 Subject: [PATCH 027/130] Remove assert --- src/parser.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/parser.cpp b/src/parser.cpp index b63c530d6..a6f30cdfd 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -164,7 +164,6 @@ Ast *clone_ast(Ast *node) { case Ast_SelectorCallExpr: n->SelectorCallExpr.expr = clone_ast(n->SelectorCallExpr.expr); n->SelectorCallExpr.call = clone_ast(n->SelectorCallExpr.call); - GB_ASSERT(n->SelectorCallExpr.modified_call); break; case Ast_IndexExpr: n->IndexExpr.expr = clone_ast(n->IndexExpr.expr); From 0571b80d3725a815562f1bc0937743046301d955 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 16 Jul 2022 17:56:15 +0100 Subject: [PATCH 028/130] Fix printing of `bit_set` types --- core/reflect/types.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/reflect/types.odin b/core/reflect/types.odin index b211abb45..7be7ff812 100644 --- a/core/reflect/types.odin +++ b/core/reflect/types.odin @@ -573,11 +573,11 @@ write_type_writer :: proc(w: io.Writer, ti: ^Type_Info, n_written: ^int = nil) - write_type(w, info.elem, &n) or_return case is_rune(info.elem): io.write_encoded_rune(w, rune(info.lower), true, &n) or_return - io.write_string(w, "..", &n) or_return + io.write_string(w, "..=", &n) or_return io.write_encoded_rune(w, rune(info.upper), true, &n) or_return case: io.write_i64(w, info.lower, 10, &n) or_return - io.write_string(w, "..", &n) or_return + io.write_string(w, "..=", &n) or_return io.write_i64(w, info.upper, 10, &n) or_return } if info.underlying != nil { From eafa5098aa5fd10554f3348acba5ac6164a4b83e Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 16 Jul 2022 18:03:43 +0100 Subject: [PATCH 029/130] Fix #1883 --- src/check_expr.cpp | 33 ++++++++++++++++++++------------- src/llvm_backend_const.cpp | 23 +++++++++++------------ 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/src/check_expr.cpp b/src/check_expr.cpp index 13d6badbe..721b5a5af 100644 --- a/src/check_expr.cpp +++ b/src/check_expr.cpp @@ -8404,23 +8404,30 @@ ExprKind check_compound_literal(CheckerContext *c, Operand *o, Ast *node, Type * if (is_type_bit_set(type)) { // NOTE(bill): Encode as an integer - i64 lower = base_type(type)->BitSet.lower; + Type *bt = base_type(type); + BigInt bits = {}; + BigInt one = {}; + big_int_from_u64(&one, 1); - u64 bits = 0; - for_array(index, cl->elems) { - Ast *elem = cl->elems[index]; - GB_ASSERT(elem->kind != Ast_FieldValue); - TypeAndValue tav = elem->tav; - ExactValue i = exact_value_to_integer(tav.value); - if (i.kind != ExactValue_Integer) { + for_array(i, cl->elems) { + Ast *e = cl->elems[i]; + GB_ASSERT(e->kind != Ast_FieldValue); + + TypeAndValue tav = e->tav; + if (tav.mode != Addressing_Constant) { continue; } - i64 val = big_int_to_i64(&i.value_integer); - val -= lower; - u64 bit = u64(1ll<BitSet.lower; + u64 index = cast(u64)(v-lower); + BigInt bit = {}; + big_int_from_u64(&bit, index); + big_int_shl(&bit, &one, &bit); + big_int_or(&bits, &bits, &bit); } - o->value = exact_value_u64(bits); + o->value.kind = ExactValue_Integer; + o->value.value_integer = bits; } else if (is_type_constant_type(type) && cl->elems.count == 0) { ExactValue value = exact_value_compound(node); Type *bt = core_type(type); diff --git a/src/llvm_backend_const.cpp b/src/llvm_backend_const.cpp index 00452eb50..24b2bc3a2 100644 --- a/src/llvm_backend_const.cpp +++ b/src/llvm_backend_const.cpp @@ -1025,7 +1025,10 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bool allow_loc return lb_const_nil(m, original_type); } - u64 bits = 0; + BigInt bits = {}; + BigInt one = {}; + big_int_from_u64(&one, 1); + for_array(i, cl->elems) { Ast *e = cl->elems[i]; GB_ASSERT(e->kind != Ast_FieldValue); @@ -1037,18 +1040,14 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bool allow_loc GB_ASSERT(tav.value.kind == ExactValue_Integer); i64 v = big_int_to_i64(&tav.value.value_integer); i64 lower = type->BitSet.lower; - bits |= 1ull< Date: Sat, 16 Jul 2022 22:18:07 +0100 Subject: [PATCH 030/130] Fix #1880 --- src/llvm_backend_expr.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index a95d884b0..5df1e6ca7 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -3160,19 +3160,27 @@ lbValue lb_build_expr_internal(lbProcedure *p, Ast *expr) { lb_start_block(p, then); Type *type = default_type(type_of_expr(expr)); + LLVMTypeRef llvm_type = lb_type(p->module, type); incoming_values[0] = lb_emit_conv(p, lb_build_expr(p, te->x), type).value; + if (is_type_internally_pointer_like(type)) { + incoming_values[0] = LLVMBuildBitCast(p->builder, incoming_values[0], llvm_type, ""); + } lb_emit_jump(p, done); lb_start_block(p, else_); incoming_values[1] = lb_emit_conv(p, lb_build_expr(p, te->y), type).value; + if (is_type_internally_pointer_like(type)) { + incoming_values[1] = LLVMBuildBitCast(p->builder, incoming_values[1], llvm_type, ""); + } + lb_emit_jump(p, done); lb_start_block(p, done); lbValue res = {}; - res.value = LLVMBuildPhi(p->builder, lb_type(p->module, type), ""); + res.value = LLVMBuildPhi(p->builder, llvm_type, ""); res.type = type; GB_ASSERT(p->curr_block->preds.count >= 2); From e61b73d7add5893e332953ccc7825a9f7e6d25c9 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 16 Jul 2022 22:30:57 +0100 Subject: [PATCH 031/130] Fix #1869 --- src/llvm_backend_general.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 5b43a11ab..f6bd306d2 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -2369,6 +2369,9 @@ LLVMValueRef lb_find_or_add_entity_string_ptr(lbModule *m, String const &str) { LLVMValueRef global_data = LLVMAddGlobal(m->mod, LLVMTypeOf(data), name); LLVMSetInitializer(global_data, data); LLVMSetLinkage(global_data, LLVMPrivateLinkage); + LLVMSetUnnamedAddress(global_data, LLVMGlobalUnnamedAddr); + LLVMSetAlignment(global_data, 1); + LLVMSetGlobalConstant(global_data, true); LLVMValueRef ptr = LLVMConstInBoundsGEP(global_data, indices, 2); string_map_set(&m->const_strings, key, ptr); @@ -2411,6 +2414,9 @@ lbValue lb_find_or_add_entity_string_byte_slice(lbModule *m, String const &str) LLVMValueRef global_data = LLVMAddGlobal(m->mod, LLVMTypeOf(data), name); LLVMSetInitializer(global_data, data); LLVMSetLinkage(global_data, LLVMPrivateLinkage); + LLVMSetUnnamedAddress(global_data, LLVMGlobalUnnamedAddr); + LLVMSetAlignment(global_data, 1); + LLVMSetGlobalConstant(global_data, true); LLVMValueRef ptr = nullptr; if (str.len != 0) { @@ -2647,6 +2653,7 @@ lbValue lb_generate_global_array(lbModule *m, Type *elem_type, i64 count, String g.type = alloc_type_pointer(t); LLVMSetInitializer(g.value, LLVMConstNull(lb_type(m, t))); LLVMSetLinkage(g.value, LLVMPrivateLinkage); + LLVMSetUnnamedAddress(g.value, LLVMGlobalUnnamedAddr); string_map_set(&m->members, s, g); return g; } From 78826071c009c5afbc5dadd733e10eb2a4fed65a Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 16 Jul 2022 23:14:09 +0100 Subject: [PATCH 032/130] Fix #1836 --- src/llvm_backend_expr.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index 5df1e6ca7..59f75d43f 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -1425,10 +1425,13 @@ lbValue lb_build_binary_expr(lbProcedure *p, Ast *expr) { Type *it = bit_set_to_int(rt); left = lb_emit_conv(p, left, it); + if (is_type_different_to_arch_endianness(it)) { + left = lb_emit_byte_swap(p, left, integer_endian_type_to_platform_type(it)); + } - lbValue lower = lb_const_value(p->module, it, exact_value_i64(rt->BitSet.lower)); - lbValue key = lb_emit_arith(p, Token_Sub, left, lower, it); - lbValue bit = lb_emit_arith(p, Token_Shl, lb_const_int(p->module, it, 1), key, it); + lbValue lower = lb_const_value(p->module, left.type, exact_value_i64(rt->BitSet.lower)); + lbValue key = lb_emit_arith(p, Token_Sub, left, lower, left.type); + lbValue bit = lb_emit_arith(p, Token_Shl, lb_const_int(p->module, left.type, 1), key, left.type); bit = lb_emit_conv(p, bit, it); lbValue old_value = lb_emit_transmute(p, right, it); From 6c7e5748a8ee80b01b99fe41192d4aac32651849 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 18 Jul 2022 12:49:29 +0100 Subject: [PATCH 033/130] Integrate numerous debug fixes from #1877 --- src/llvm_backend_debug.cpp | 2 +- src/llvm_backend_expr.cpp | 11 -------- src/llvm_backend_general.cpp | 8 +++--- src/llvm_backend_proc.cpp | 55 +++++++++++++++++++++++++++--------- src/llvm_backend_stmt.cpp | 8 ++---- 5 files changed, 49 insertions(+), 35 deletions(-) diff --git a/src/llvm_backend_debug.cpp b/src/llvm_backend_debug.cpp index 45a868581..207164c63 100644 --- a/src/llvm_backend_debug.cpp +++ b/src/llvm_backend_debug.cpp @@ -969,7 +969,7 @@ void lb_add_debug_local_variable(lbProcedure *p, LLVMValueRef ptr, Type *type, T ); LLVMValueRef storage = ptr; - LLVMBasicBlockRef block = p->decl_block->block; + LLVMBasicBlockRef block = p->curr_block->block; LLVMMetadataRef llvm_debug_loc = lb_debug_location_from_token_pos(p, token.pos); LLVMMetadataRef llvm_expr = LLVMDIBuilderCreateExpression(m->debug_builder, nullptr, 0); lb_set_llvm_metadata(m, ptr, llvm_expr); diff --git a/src/llvm_backend_expr.cpp b/src/llvm_backend_expr.cpp index 59f75d43f..624d06188 100644 --- a/src/llvm_backend_expr.cpp +++ b/src/llvm_backend_expr.cpp @@ -3068,17 +3068,6 @@ lbValue lb_build_expr_internal(lbProcedure *p, Ast *expr) { return lb_const_value(p->module, type, tv.value); } - #if 0 - LLVMMetadataRef prev_debug_location = nullptr; - if (p->debug_info != nullptr) { - prev_debug_location = LLVMGetCurrentDebugLocation2(p->builder); - LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_ast(p, expr)); - } - defer (if (prev_debug_location != nullptr) { - LLVMSetCurrentDebugLocation2(p->builder, prev_debug_location); - }); - #endif - switch (expr->kind) { case_ast_node(bl, BasicLit, expr); TokenPos pos = bl->token.pos; diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index f6bd306d2..b2a609f85 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -2746,10 +2746,6 @@ lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e, bool zero_init, i32 p } } - if (zero_init) { - lb_mem_zero_ptr(p, ptr, type, alignment); - } - lbValue val = {}; val.value = ptr; val.type = alloc_type_pointer(type); @@ -2759,6 +2755,10 @@ lbAddr lb_add_local(lbProcedure *p, Type *type, Entity *e, bool zero_init, i32 p lb_add_debug_local_variable(p, ptr, type, e->token); } + if (zero_init) { + lb_mem_zero_ptr(p, ptr, type, alignment); + } + return lb_addr(val); } diff --git a/src/llvm_backend_proc.cpp b/src/llvm_backend_proc.cpp index 1c0ecabbe..0ffe1c4c7 100644 --- a/src/llvm_backend_proc.cpp +++ b/src/llvm_backend_proc.cpp @@ -434,6 +434,40 @@ void lb_start_block(lbProcedure *p, lbBlock *b) { p->curr_block = b; } +void lb_set_debug_position_to_procedure_begin(lbProcedure *p) { + if (p->debug_info == nullptr) { + return; + } + TokenPos pos = {}; + if (p->body != nullptr) { + pos = ast_token(p->body).pos; + } else if (p->type_expr != nullptr) { + pos = ast_token(p->type_expr).pos; + } else if (p->entity != nullptr) { + pos = p->entity->token.pos; + } + if (pos.file_id != 0) { + LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_token_pos(p, pos)); + } +} + +void lb_set_debug_position_to_procedure_end(lbProcedure *p) { + if (p->debug_info == nullptr) { + return; + } + TokenPos pos = {}; + if (p->body != nullptr) { + pos = ast_end_token(p->body).pos; + } else if (p->type_expr != nullptr) { + pos = ast_end_token(p->type_expr).pos; + } else if (p->entity != nullptr) { + pos = p->entity->token.pos; + } + if (pos.file_id != 0) { + LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_token_pos(p, pos)); + } +} + void lb_begin_procedure_body(lbProcedure *p) { DeclInfo *decl = decl_info_of_entity(p->entity); if (decl != nullptr) { @@ -565,29 +599,21 @@ void lb_begin_procedure_body(lbProcedure *p) { lb_push_context_onto_stack_from_implicit_parameter(p); } - lb_start_block(p, p->entry_block); - + lb_set_debug_position_to_procedure_begin(p); if (p->debug_info != nullptr) { - TokenPos pos = {}; - if (p->body != nullptr) { - pos = ast_token(p->body).pos; - } else if (p->type_expr != nullptr) { - pos = ast_token(p->type_expr).pos; - } else if (p->entity != nullptr) { - pos = p->entity->token.pos; - } - if (pos.file_id != 0) { - LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_token_pos(p, pos)); - } - if (p->context_stack.count != 0) { + p->curr_block = p->decl_block; lb_add_debug_context_variable(p, lb_find_or_generate_context_ptr(p)); } } + + lb_start_block(p, p->entry_block); } void lb_end_procedure_body(lbProcedure *p) { + lb_set_debug_position_to_procedure_begin(p); + LLVMPositionBuilderAtEnd(p->builder, p->decl_block->block); LLVMBuildBr(p->builder, p->entry_block->block); LLVMPositionBuilderAtEnd(p->builder, p->curr_block->block); @@ -599,6 +625,7 @@ void lb_end_procedure_body(lbProcedure *p) { instr = LLVMGetLastInstruction(p->curr_block->block); if (!lb_is_instr_terminating(instr)) { lb_emit_defer_stmts(p, lbDeferExit_Return, nullptr); + lb_set_debug_position_to_procedure_end(p); LLVMBuildRetVoid(p->builder); } } diff --git a/src/llvm_backend_stmt.cpp b/src/llvm_backend_stmt.cpp index 2afb5300b..d007ac747 100644 --- a/src/llvm_backend_stmt.cpp +++ b/src/llvm_backend_stmt.cpp @@ -1721,6 +1721,9 @@ void lb_build_for_stmt(lbProcedure *p, Ast *node) { ast_node(fs, ForStmt, node); lb_open_scope(p, fs->scope); // Open Scope here + if (p->debug_info != nullptr) { + LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_ast(p, node)); + } if (fs->init != nullptr) { #if 1 @@ -1971,14 +1974,9 @@ void lb_build_stmt(lbProcedure *p, Ast *node) { } } - LLVMMetadataRef prev_debug_location = nullptr; if (p->debug_info != nullptr) { - prev_debug_location = LLVMGetCurrentDebugLocation2(p->builder); LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_ast(p, node)); } - defer (if (prev_debug_location != nullptr) { - LLVMSetCurrentDebugLocation2(p->builder, prev_debug_location); - }); u16 prev_state_flags = p->state_flags; defer (p->state_flags = prev_state_flags); From 22a0c3fce1b41c62a2038060b592e0ae79912d4d Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 18 Jul 2022 15:09:04 +0100 Subject: [PATCH 034/130] Disallow `proc() do stmt` and only allow `proc() { stmt }` --- core/sys/windows/winerror.odin | 2 +- src/parser.cpp | 6 +----- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/core/sys/windows/winerror.odin b/core/sys/windows/winerror.odin index b7652d1f4..7bd0bfe9f 100644 --- a/core/sys/windows/winerror.odin +++ b/core/sys/windows/winerror.odin @@ -45,4 +45,4 @@ ERROR_NOT_SAME_OBJECT : DWORD : 1656 E_NOTIMPL :: HRESULT(-0x7fff_bfff) // 0x8000_4001 -SUCCEEDED :: #force_inline proc(#any_int result: int) -> bool do return result >= 0 +SUCCEEDED :: #force_inline proc(#any_int result: int) -> bool { return result >= 0 } diff --git a/src/parser.cpp b/src/parser.cpp index a6f30cdfd..dd9d6f036 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -2324,11 +2324,7 @@ Ast *parse_operand(AstFile *f, bool lhs) { body = convert_stmt_to_body(f, parse_stmt(f)); f->curr_proc = curr_proc; - if (build_context.disallow_do) { - syntax_error(body, "'do' has been disallowed"); - } else if (!ast_on_same_line(type, body)) { - syntax_error(body, "The body of a 'do' must be on the same line as the signature"); - } + syntax_error(body, "'do' for procedure bodies is not allowed, prefer {}"); return ast_proc_lit(f, type, body, tags, where_token, where_clauses); } From e91f8feedfec3316c93e32172d4c0ae989776b32 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 18 Jul 2022 15:12:54 +0100 Subject: [PATCH 035/130] Keep -vet happy --- vendor/OpenGL/helpers.odin | 1 + 1 file changed, 1 insertion(+) diff --git a/vendor/OpenGL/helpers.odin b/vendor/OpenGL/helpers.odin index 661de318c..927129130 100644 --- a/vendor/OpenGL/helpers.odin +++ b/vendor/OpenGL/helpers.odin @@ -5,6 +5,7 @@ package odin_gl import "core:os" import "core:fmt" import "core:strings" +_ :: fmt Shader_Type :: enum i32 { NONE = 0x0000, From 9eb3da0474c7e00d0c246dc60409cf86f7db4e51 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 18 Jul 2022 15:20:28 +0100 Subject: [PATCH 036/130] Remove import cycle on FreeBSD --- core/os/dir_freebsd.odin | 8 +++++--- core/os/os_freebsd.odin | 16 ++++++++-------- core/sync/futex_freebsd.odin | 20 ++++++++------------ core/sync/primitives_freebsd.odin | 10 ++++++++-- 4 files changed, 29 insertions(+), 25 deletions(-) diff --git a/core/os/dir_freebsd.odin b/core/os/dir_freebsd.odin index 74c410a51..c664ffb34 100644 --- a/core/os/dir_freebsd.odin +++ b/core/os/dir_freebsd.odin @@ -1,6 +1,5 @@ package os -import "core:strings" import "core:mem" read_dir :: proc(fd: Handle, n: int, allocator := context.allocator) -> (fi: []File_Info, err: Errno) { @@ -51,10 +50,13 @@ read_dir :: proc(fd: Handle, n: int, allocator := context.allocator) -> (fi: []F continue } - fullpath := strings.join( []string{ dirpath, filename }, "/", context.temp_allocator) + fullpath := make([]byte, len(dirpath)+1+len(filename)) + copy(fullpath, dirpath) + copy(fullpath[len(dirpath):], "/") + copy(fullpath[len(dirpath)+1:], filename) defer delete(fullpath, context.temp_allocator) - fi_, err = stat(fullpath, allocator) + fi_, err = stat(string(fullpath), allocator) if err != ERROR_NONE { for fi__ in dfi { file_info_delete(fi__, allocator) diff --git a/core/os/os_freebsd.odin b/core/os/os_freebsd.odin index a991caafc..adf4f246f 100644 --- a/core/os/os_freebsd.odin +++ b/core/os/os_freebsd.odin @@ -241,13 +241,13 @@ S_ISGID :: 0o2000 // Set group id on execution S_ISVTX :: 0o1000 // Directory restrcted delete -S_ISLNK :: #force_inline proc(m: mode_t) -> bool do return (m & S_IFMT) == S_IFLNK -S_ISREG :: #force_inline proc(m: mode_t) -> bool do return (m & S_IFMT) == S_IFREG -S_ISDIR :: #force_inline proc(m: mode_t) -> bool do return (m & S_IFMT) == S_IFDIR -S_ISCHR :: #force_inline proc(m: mode_t) -> bool do return (m & S_IFMT) == S_IFCHR -S_ISBLK :: #force_inline proc(m: mode_t) -> bool do return (m & S_IFMT) == S_IFBLK -S_ISFIFO :: #force_inline proc(m: mode_t) -> bool do return (m & S_IFMT) == S_IFIFO -S_ISSOCK :: #force_inline proc(m: mode_t) -> bool do return (m & S_IFMT) == S_IFSOCK +S_ISLNK :: #force_inline proc(m: mode_t) -> bool { return (m & S_IFMT) == S_IFLNK } +S_ISREG :: #force_inline proc(m: mode_t) -> bool { return (m & S_IFMT) == S_IFREG } +S_ISDIR :: #force_inline proc(m: mode_t) -> bool { return (m & S_IFMT) == S_IFDIR } +S_ISCHR :: #force_inline proc(m: mode_t) -> bool { return (m & S_IFMT) == S_IFCHR } +S_ISBLK :: #force_inline proc(m: mode_t) -> bool { return (m & S_IFMT) == S_IFBLK } +S_ISFIFO :: #force_inline proc(m: mode_t) -> bool { return (m & S_IFMT) == S_IFIFO } +S_ISSOCK :: #force_inline proc(m: mode_t) -> bool { return (m & S_IFMT) == S_IFSOCK } F_OK :: 0 // Test for file existance X_OK :: 1 // Test for execute permission @@ -257,7 +257,7 @@ R_OK :: 4 // Test for read permission foreign libc { @(link_name="__error") __errno_location :: proc() -> ^int --- - @(link_name="open") _unix_open :: proc(path: cstring, flags: c.int, mode: c.int) -> Handle --- + @(link_name="open") _unix_open :: proc(path: cstring, flags: c.int, mode: c.int) -> Handle --- @(link_name="close") _unix_close :: proc(fd: Handle) -> c.int --- @(link_name="read") _unix_read :: proc(fd: Handle, buf: rawptr, size: c.size_t) -> c.ssize_t --- @(link_name="write") _unix_write :: proc(fd: Handle, buf: rawptr, size: c.size_t) -> c.ssize_t --- diff --git a/core/sync/futex_freebsd.odin b/core/sync/futex_freebsd.odin index 2e1d065bc..07fba82a8 100644 --- a/core/sync/futex_freebsd.odin +++ b/core/sync/futex_freebsd.odin @@ -3,24 +3,22 @@ package sync import "core:c" -import "core:os" import "core:time" UMTX_OP_WAIT :: 2 UMTX_OP_WAKE :: 3 +ETIMEDOUT :: 60 + foreign import libc "system:c" foreign libc { _umtx_op :: proc "c" (obj: rawptr, op: c.int, val: c.ulong, uaddr: rawptr, uaddr2: rawptr) -> c.int --- + __error :: proc "c" () -> ^c.int --- } _futex_wait :: proc(f: ^Futex, expected: u32) -> bool { - timeout := os.Unix_File_Time{ - seconds = 5, - nanoseconds = 0, - } - + timeout := [2]i64{14400, 0} // 4 hours for { res := _umtx_op(f, UMTX_OP_WAIT, c.ulong(expected), nil, &timeout) @@ -28,7 +26,7 @@ _futex_wait :: proc(f: ^Futex, expected: u32) -> bool { return true } - if os.Errno(os.get_last_error()) == os.ETIMEDOUT { + if __error()^ == ETIMEDOUT { continue } @@ -42,16 +40,14 @@ _futex_wait_with_timeout :: proc(f: ^Futex, expected: u32, duration: time.Durati return false } - res := _umtx_op(f, UMTX_OP_WAIT, c.ulong(expected), nil, &os.Unix_File_Time{ - seconds = (os.time_t)(duration/1e9), - nanoseconds = (c.long)(duration%1e9), - }) + timeout := [2]i64{i64(duration/1e9), i64(duration%1e9)} + res := _umtx_op(f, UMTX_OP_WAIT, c.ulong(expected), nil, &timeout) if res != -1 { return true } - if os.Errno(os.get_last_error()) == os.ETIMEDOUT { + if __error()^ == ETIMEDOUT { return false } diff --git a/core/sync/primitives_freebsd.odin b/core/sync/primitives_freebsd.odin index e6219acf1..2d7cbf18d 100644 --- a/core/sync/primitives_freebsd.odin +++ b/core/sync/primitives_freebsd.odin @@ -2,8 +2,14 @@ //+private package sync -import "core:os" +import "core:c" + +foreign import dl "system:dl" + +foreign dl { + pthread_getthreadid_np :: proc "c" () -> c.int --- +} _current_thread_id :: proc "contextless" () -> int { - return os.current_thread_id() + return int(pthread_getthreadid_np()) } From 0992239d86dd8e59cc6324ec5f1d84dee6427271 Mon Sep 17 00:00:00 2001 From: Fabian Sperber Date: Fri, 8 Jul 2022 21:48:33 +0200 Subject: [PATCH 037/130] Embed natvis in windows debug build for easier viewing of strings and Arrays --- build.bat | 2 +- src/odin_compiler.natvis | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 src/odin_compiler.natvis diff --git a/build.bat b/build.bat index f663c185c..06bc6c823 100644 --- a/build.bat +++ b/build.bat @@ -58,7 +58,7 @@ set libs= ^ set linker_flags= -incremental:no -opt:ref -subsystem:console if %release_mode% EQU 0 ( rem Debug - set linker_flags=%linker_flags% -debug + set linker_flags=%linker_flags% -debug /NATVIS:src\odin_compiler.natvis ) else ( rem Release set linker_flags=%linker_flags% -debug ) diff --git a/src/odin_compiler.natvis b/src/odin_compiler.natvis new file mode 100644 index 000000000..845eaf1c0 --- /dev/null +++ b/src/odin_compiler.natvis @@ -0,0 +1,28 @@ + + + + {text,[len]s8} + text,[len]s8 + + + {{ size={count} capacity={capacity} }} + + + count + data + + + + + {{ size={count} }} + + + count + data + + + + + Procedure {name} + + From fb167d1d0aa5b428dc1f477e8879d68664d155d9 Mon Sep 17 00:00:00 2001 From: Fabian Sperber Date: Mon, 11 Jul 2022 21:03:46 +0200 Subject: [PATCH 038/130] Fix loop var (init) becoming hidden while stepping on the for-line - set debug location of jumps between block (similar to clang to the location of 'for') - extend scope range to include all parts of the for-stmt --- src/llvm_backend_debug.cpp | 4 ++++ src/llvm_backend_stmt.cpp | 10 ++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/llvm_backend_debug.cpp b/src/llvm_backend_debug.cpp index 207164c63..29e074473 100644 --- a/src/llvm_backend_debug.cpp +++ b/src/llvm_backend_debug.cpp @@ -43,6 +43,10 @@ LLVMMetadataRef lb_debug_location_from_ast(lbProcedure *p, Ast *node) { GB_ASSERT(node != nullptr); return lb_debug_location_from_token_pos(p, ast_token(node).pos); } +LLVMMetadataRef lb_debug_end_location_from_ast(lbProcedure *p, Ast *node) { + GB_ASSERT(node != nullptr); + return lb_debug_location_from_token_pos(p, ast_end_token(node).pos); +} LLVMMetadataRef lb_debug_type_internal_proc(lbModule *m, Type *type) { i64 size = type_size_of(type); // Check size diff --git a/src/llvm_backend_stmt.cpp b/src/llvm_backend_stmt.cpp index d007ac747..d2b9ac555 100644 --- a/src/llvm_backend_stmt.cpp +++ b/src/llvm_backend_stmt.cpp @@ -1744,11 +1744,14 @@ void lb_build_for_stmt(lbProcedure *p, Ast *node) { post = lb_create_block(p, "for.post"); } - lb_emit_jump(p, loop); lb_start_block(p, loop); if (loop != body) { + // right now the condition (all expressions) will not set it's debug location, so we will do it here + if (p->debug_info != nullptr) { + LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_ast(p, fs->cond)); + } lb_build_cond(p, fs->cond, body, done); lb_start_block(p, body); } @@ -1756,10 +1759,12 @@ void lb_build_for_stmt(lbProcedure *p, Ast *node) { lb_push_target_list(p, fs->label, done, post, nullptr); lb_build_stmt(p, fs->body); - lb_close_scope(p, lbDeferExit_Default, nullptr); lb_pop_target_list(p); + if (p->debug_info != nullptr) { + LLVMSetCurrentDebugLocation2(p->builder, lb_debug_end_location_from_ast(p, fs->body)); + } lb_emit_jump(p, post); if (fs->post != nullptr) { @@ -1769,6 +1774,7 @@ void lb_build_for_stmt(lbProcedure *p, Ast *node) { } lb_start_block(p, done); + lb_close_scope(p, lbDeferExit_Default, nullptr); } void lb_build_assign_stmt_array(lbProcedure *p, TokenKind op, lbAddr const &lhs, lbValue const &value) { From 9c059f1a128638f67a96715af1dbd8a668120a25 Mon Sep 17 00:00:00 2001 From: Fabian Sperber Date: Tue, 19 Jul 2022 00:14:45 +0200 Subject: [PATCH 039/130] Fix debug info for type switch variable to be only visible in correct switch case - use correct scopes for type switch --- src/llvm_backend_stmt.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/llvm_backend_stmt.cpp b/src/llvm_backend_stmt.cpp index d2b9ac555..a8f543c1f 100644 --- a/src/llvm_backend_stmt.cpp +++ b/src/llvm_backend_stmt.cpp @@ -1210,8 +1210,8 @@ void lb_build_switch_stmt(lbProcedure *p, AstSwitchStmt *ss, Scope *scope) { } lb_emit_jump(p, done); - lb_close_scope(p, lbDeferExit_Default, done); lb_start_block(p, done); + lb_close_scope(p, lbDeferExit_Default, done); } void lb_store_type_case_implicit(lbProcedure *p, Ast *clause, lbValue value) { @@ -1253,7 +1253,6 @@ void lb_type_case_body(lbProcedure *p, Ast *label, Ast *clause, lbBlock *body, l ast_node(cc, CaseClause, clause); lb_push_target_list(p, label, done, nullptr, nullptr); - lb_open_scope(p, body->scope); lb_build_stmt_list(p, cc->stmts); lb_close_scope(p, lbDeferExit_Default, body); lb_pop_target_list(p); @@ -1263,6 +1262,7 @@ void lb_type_case_body(lbProcedure *p, Ast *label, Ast *clause, lbBlock *body, l void lb_build_type_switch_stmt(lbProcedure *p, AstTypeSwitchStmt *ss) { lbModule *m = p->module; + lb_open_scope(p, ss->scope); ast_node(as, AssignStmt, ss->tag); GB_ASSERT(as->lhs.count == 1); @@ -1321,6 +1321,7 @@ void lb_build_type_switch_stmt(lbProcedure *p, AstTypeSwitchStmt *ss) { for_array(i, body->stmts) { Ast *clause = body->stmts[i]; ast_node(cc, CaseClause, clause); + lb_open_scope(p, cc->scope); if (cc->list.count == 0) { lb_start_block(p, default_block); lb_store_type_case_implicit(p, clause, parent_value); @@ -1329,6 +1330,9 @@ void lb_build_type_switch_stmt(lbProcedure *p, AstTypeSwitchStmt *ss) { } lbBlock *body = lb_create_block(p, "typeswitch.body"); + if (p->debug_info != nullptr) { + LLVMSetCurrentDebugLocation2(p->builder, lb_debug_location_from_ast(p, clause)); + } Type *case_type = nullptr; for_array(type_index, cc->list) { case_type = type_of_expr(cc->list[type_index]); @@ -1375,6 +1379,7 @@ void lb_build_type_switch_stmt(lbProcedure *p, AstTypeSwitchStmt *ss) { lb_emit_jump(p, done); lb_start_block(p, done); + lb_close_scope(p, lbDeferExit_Default, done); } From 7420fbd95b1130e3b2e7eaf52c56302a6e1f3b31 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 19 Jul 2022 16:16:51 +0100 Subject: [PATCH 040/130] Add custom event handling to wasm --- vendor/wasm/js/events.odin | 33 ++++++++++++++++++++--- vendor/wasm/js/runtime.js | 55 ++++++++++++++++++++++++++++---------- 2 files changed, 71 insertions(+), 17 deletions(-) diff --git a/vendor/wasm/js/events.odin b/vendor/wasm/js/events.odin index dd9524adb..136c0610d 100644 --- a/vendor/wasm/js/events.odin +++ b/vendor/wasm/js/events.odin @@ -79,6 +79,8 @@ Event_Kind :: enum u32 { Context_Menu, + Custom, + } event_kind_string := [Event_Kind]string{ .Invalid = "", @@ -155,6 +157,8 @@ event_kind_string := [Event_Kind]string{ .Touch_Start = "touchstart", .Context_Menu = "contextmenu", + + .Custom = "?custom?", } Delta_Mode :: enum u32 { @@ -186,6 +190,13 @@ Event_Phase :: enum u8 { Bubbling_Phase = 3, } +Event_Option :: enum u8 { + Bubbles = 0, + Cancelable = 1, + Composed = 2, +} +Event_Options :: distinct bit_set[Event_Option; u8] + Event :: struct { kind: Event_Kind, target_kind: Event_Target_Kind, @@ -194,9 +205,7 @@ Event :: struct { timestamp: f64, phase: Event_Phase, - bubbles: bool, - cancelable: bool, - composed: bool, + options: Event_Options, is_composing: bool, is_trusted: bool, @@ -255,6 +264,7 @@ foreign dom_lib { event_stop_propagation :: proc() --- event_stop_immediate_propagation :: proc() --- event_prevent_default :: proc() --- + dispatch_custom_event :: proc(id: string, name: string, options := Event_Options{}) -> bool --- } add_event_listener :: proc(id: string, kind: Event_Kind, user_data: rawptr, callback: proc(e: Event), use_capture := false) -> bool { @@ -301,6 +311,23 @@ remove_event_listener_from_event :: proc(e: Event) -> bool { return remove_event_listener(e.id, e.kind, e.user_data, e.callback) } +add_custom_event_listener :: proc(id: string, name: string, user_data: rawptr, callback: proc(e: Event), use_capture := false) -> bool { + @(default_calling_convention="contextless") + foreign dom_lib { + @(link_name="add_event_listener") + _add_event_listener :: proc(id: string, name: string, name_code: Event_Kind, user_data: rawptr, callback: proc "odin" (Event), use_capture: bool) -> bool --- + } + return _add_event_listener(id, name, .Custom, user_data, callback, use_capture) +} +remove_custom_event_listener :: proc(id: string, name: string, user_data: rawptr, callback: proc(e: Event)) -> bool { + @(default_calling_convention="contextless") + foreign dom_lib { + @(link_name="remove_event_listener") + _remove_event_listener :: proc(id: string, name: string, user_data: rawptr, callback: proc "odin" (Event)) -> bool --- + } + return _remove_event_listener(id, name, user_data, callback) +} + diff --git a/vendor/wasm/js/runtime.js b/vendor/wasm/js/runtime.js index 424a9a4db..60d114506 100644 --- a/vendor/wasm/js/runtime.js +++ b/vendor/wasm/js/runtime.js @@ -1,6 +1,14 @@ "use strict"; (function() { + +function getElement(name) { + if (name) { + return document.getElementById(name); + } + return undefined; +} + class WasmMemoryInterface { constructor() { this.memory = null; @@ -204,12 +212,12 @@ class WebGLInterface { return { SetCurrentContextById: (name_ptr, name_len) => { let name = this.mem.loadString(name_ptr, name_len); - let element = document.getElementById(name); + let element = getElement(name); return this.setCurrentContext(element, {alpha: true, antialias: true, depth: true, premultipliedAlpha: true}); }, CreateCurrentContextById: (name_ptr, name_len, attributes) => { let name = this.mem.loadString(name_ptr, name_len); - let element = document.getElementById(name); + let element = getElement(name); let contextSettings = { alpha: !(attributes & (1<<0)), @@ -1380,9 +1388,11 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { wmi.storeF64(off(8), e.timeStamp*1e-3); wmi.storeU8(off(1), e.eventPhase); - wmi.storeU8(off(1), !!e.bubbles); - wmi.storeU8(off(1), !!e.cancelable); - wmi.storeU8(off(1), !!e.composed); + let options = 0; + if (!!e.bubbles) { options |= 1<<0; } + if (!!e.cancelable) { options |= 1<<1; } + if (!!e.composed) { options |= 1<<2; } + wmi.storeU8(off(1), options); wmi.storeU8(off(1), !!e.isComposing); wmi.storeU8(off(1), !!e.isTrusted); @@ -1433,7 +1443,7 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { add_event_listener: (id_ptr, id_len, name_ptr, name_len, name_code, data, callback, use_capture) => { let id = wasmMemoryInterface.loadString(id_ptr, id_len); let name = wasmMemoryInterface.loadString(name_ptr, name_len); - let element = document.getElementById(id); + let element = getElement(id); if (element == undefined) { return false; } @@ -1454,7 +1464,7 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { remove_event_listener: (id_ptr, id_len, name_ptr, name_len, data, callback) => { let id = wasmMemoryInterface.loadString(id_ptr, id_len); let name = wasmMemoryInterface.loadString(name_ptr, name_len); - let element = document.getElementById(id); + let element = getElement(id); if (element == undefined) { return false; } @@ -1514,14 +1524,31 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { } }, + dispatch_custom_event: (id_ptr, id_len, name_ptr, name_len, options_bits) => { + let id = wasmMemoryInterface.loadString(id_ptr, id_len); + let name = wasmMemoryInterface.loadString(name_ptr, name_len); + let options = { + bubbles: (options_bits & (1<<0)) !== 0, + cancelabe: (options_bits & (1<<1)) !== 0, + composed: (options_bits & (1<<2)) !== 0, + }; + + let element = getElement(id); + if (element) { + element.dispatchEvent(new Event(name, options)); + return true; + } + return false; + }, + get_element_value_f64: (id_ptr, id_len) => { let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let element = document.getElementById(id); + let element = getElement(id); return element ? element.value : 0; }, get_element_value_string: (id_ptr, id_len, buf_ptr, buf_len) => { let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let element = document.getElementById(id); + let element = getElement(id); if (element) { let str = element.value; if (buf_len > 0 && buf_ptr) { @@ -1535,7 +1562,7 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { }, get_element_value_string_length: (id_ptr, id_len) => { let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let element = document.getElementById(id); + let element = getElement(id); if (element) { return element.value.length; } @@ -1543,7 +1570,7 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { }, get_element_min_max: (ptr_array2_f64, id_ptr, id_len) => { let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let element = document.getElementById(id); + let element = getElement(id); if (element) { let values = wasmMemoryInterface.loadF64Array(ptr_array2_f64, 2); values[0] = element.min; @@ -1552,7 +1579,7 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { }, set_element_value_f64: (id_ptr, id_len, value) => { let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let element = document.getElementById(id); + let element = getElement(id); if (element) { element.value = value; } @@ -1560,7 +1587,7 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { set_element_value_string: (id_ptr, id_len, value_ptr, value_id) => { let id = wasmMemoryInterface.loadString(id_ptr, id_len); let value = wasmMemoryInterface.loadString(value_ptr, value_len); - let element = document.getElementById(id); + let element = getElement(id); if (element) { element.value = value; } @@ -1569,7 +1596,7 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) { get_bounding_client_rect: (rect_ptr, id_ptr, id_len) => { let id = wasmMemoryInterface.loadString(id_ptr, id_len); - let element = document.getElementById(id); + let element = getElement(id); if (element) { let values = wasmMemoryInterface.loadF64Array(rect_ptr, 4); let rect = element.getBoundingClientRect(); From 3db3047f47ddda7f99dc7c481e368cff68db4aaf Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 19 Jul 2022 16:17:23 +0100 Subject: [PATCH 041/130] Minor improvements --- core/os/env_windows.odin | 32 ++++++++++++++++---------------- src/check_type.cpp | 4 +++- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/core/os/env_windows.odin b/core/os/env_windows.odin index 9a33a0611..6e14127ed 100644 --- a/core/os/env_windows.odin +++ b/core/os/env_windows.odin @@ -11,24 +11,24 @@ lookup_env :: proc(key: string, allocator := context.allocator) -> (value: strin return } wkey := win32.utf8_to_wstring(key) - b := make([dynamic]u16, 100, context.temp_allocator) - for { - n := win32.GetEnvironmentVariableW(wkey, raw_data(b), u32(len(b))) - if n == 0 { - err := win32.GetLastError() - if err == u32(ERROR_ENVVAR_NOT_FOUND) { - return "", false - } + n := win32.GetEnvironmentVariableW(wkey, nil, 0) + if n == 0 { + err := win32.GetLastError() + if err == u32(ERROR_ENVVAR_NOT_FOUND) { + return "", false } - - if n <= u32(len(b)) { - value, _ = win32.utf16_to_utf8(b[:n], allocator) - found = true - return - } - - resize(&b, len(b)*2) } + b := make([dynamic]u16, n, context.temp_allocator) + n = win32.GetEnvironmentVariableW(wkey, raw_data(b), u32(len(b))) + if n == 0 { + err := win32.GetLastError() + if err == u32(ERROR_ENVVAR_NOT_FOUND) { + return "", false + } + } + value, _ = win32.utf16_to_utf8(b[:n], allocator) + found = true + return } diff --git a/src/check_type.cpp b/src/check_type.cpp index cd4b43fab..741385e29 100644 --- a/src/check_type.cpp +++ b/src/check_type.cpp @@ -1345,7 +1345,9 @@ ParameterValue handle_parameter_value(CheckerContext *ctx, Type *in_type, Type * param_value.kind = ParameterValue_Constant; param_value.value = o.value; } else { - error(expr, "Default parameter must be a constant, %d", o.mode); + gbString s = expr_to_string(o.expr); + error(expr, "Default parameter must be a constant, got %s", s); + gb_string_free(s); } } } else { From 59b4c889d32bf00a0f59e4de632b74c080c10389 Mon Sep 17 00:00:00 2001 From: Eduardo Nunes Date: Wed, 20 Jul 2022 18:23:09 -0300 Subject: [PATCH 042/130] Update `vendor:raylib` to support macos-arm64 (apple silicon) --- .../raylib/macos-arm64/libraylib.4.0.0.dylib | Bin 0 -> 1339808 bytes vendor/raylib/macos-arm64/libraylib.400.dylib | Bin 0 -> 1339808 bytes vendor/raylib/macos-arm64/libraylib.a | Bin 0 -> 1764080 bytes vendor/raylib/macos-arm64/libraylib.dylib | Bin 0 -> 1339808 bytes vendor/raylib/raylib.odin | 19 +++++++++++++----- 5 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 vendor/raylib/macos-arm64/libraylib.4.0.0.dylib create mode 100644 vendor/raylib/macos-arm64/libraylib.400.dylib create mode 100644 vendor/raylib/macos-arm64/libraylib.a create mode 100644 vendor/raylib/macos-arm64/libraylib.dylib diff --git a/vendor/raylib/macos-arm64/libraylib.4.0.0.dylib b/vendor/raylib/macos-arm64/libraylib.4.0.0.dylib new file mode 100644 index 0000000000000000000000000000000000000000..a40219baa0f110966e833480c0633ea8129290d2 GIT binary patch literal 1339808 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%0D|>b7b39=qiLWzt*pxSP0 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

Bu;&yAN4F z;PS*oEAqGj+?m_puLN@c5=7cy+KbG?UZcJH`#(FY8eFp$TvI^XXVP{DZ4Y+0{Z(}R zUSu8IPapo%_Df$+*pvon5M95valjvDRSj^>DjD#?tX$eZiS{Sbem{8Xb$TDJrCqb2 zkFMcvU?%OILA$3TM~sb1rz@QL zcT&&G?_T8^;i-$e)|1#0mG($|Ql``=b$tu|mU;z$d<9OIx{Uo}N;T!X^_qQ|%OJ)i zn6U|AE<=%F31iHzU@pU%OCRi-nri;ST>inmZ#?Zk%CXHn(jhRpb(pi^71~#|E!*)j zbGZO{@#JXk%oJyX$>}_24s*?{x7tcE+dc5j_my_eFASQ1?T6oPsm=k zIyyniWA7*pL|&aeCTl}!$X?2PZo|_dxzH2Ok#D13yB+F5?uB7xS=hFtAcMQ zZ6g2AQl7}SKh2j#nX71v&=n`gl{Dxig2f}NO+pu|l0{+R+ zRepSf`Tk1VvV44kxAEO@I3YOu@V4MM{#*GTK@NW~vM2+gML%-JX??PJ50W~te>3le z7biI$7#O(ddt`Kq{Q_^RGC!HN8vj?!k>J>-56AWwnfjN^Po$lCOLcvBt&i&ryu`D) zX4jX%%&V`cn@#L@S?q7Q)?{d>6z$9FoUS)E>HivBIf8T~DLiXXF z%Fc3q1s(hq|0nx3rib|jF8VfB+=xZr-aN?_=GTAG@QuH@c8vD&tgw%tndS5Gz*)mT z-ac#P;lx=!xBDzwWe;7n(&@A4nH--*^qKIdXYDk9lD2*0rfXk1{OqjlhX>8_`}jHB z!L#1X@m=(+-EYx$r|%;9&n5l#!`o&(vZ3hO=Qb2yyN@)vr2pm8(ph&#m(Kb!$8XV{ z%-5acSI@flciZOA;VUNHR?^!KZ=IES*gng?w0Ks0bn&dL9A%N6v;)T%&1(Ez)%;a_ zk?h;{ltk^M_WG>EjivLy#a*oJoOLgKOu#=|`bhugXs^sVN!ViibMO!T$KXYN{}{Ar zr}?jG_iiknFL@3Se~|wQ(kv!Tv9@d00>YZ`7vmrJ_koMz{}I2a3L5;^Nh7sS4#&@G zJv?w$5OiY>aOKNf7vUVxDl+W*Jena4*}osIwAnIz04EC~S;LKtQekc1c!SrP=xBykC#s1N~{w9u6#bgoQ{w8#{E}5pT~SoC+W4cxrO$2(AFYb ze#u+!yz===GMW3~n>zCUopf3IQG(uepl=K1`-&@{ucVJwJ(^jET)LfA2Z`AI48JeC;LZrp2t;x*UCe89M7ybk`#E z`6cM{=<1_4^d@P|{*&mRQ_i>R&SH$a*TLSd=(p?dY$HBi{5S7e-nYHOb##F2+sOxy zI{5aYKdUZ1D!o*gO1J`D7n z51l8lIMzXEy!(L3|4Q~AXw1dW&*}vyV1Qnvs`x zA29iUiJ4c<@RWL^j5;TJUX(H!&q{lvuq_(;%SCxnv_ZxXnwK;)UBhp#{TumcgBSQO z_|`|7)lV5GMbS1%v*0@Y*Zu~sXp5hA+{HIKZIbu|8);8eg7$cH zygxe;-+cyk#hjm)eFb_nJ~co4#@K0|A2U{6%pRs^80){ue%cMpC2ce2o|wO5FO}>E zyNS7{4U{c&QcIbSlD%3R*vlpHfX-)kq_}l$w#-ij(%63m4GQ?i$vAZy`aGWBhkUz} z@$g;9_lwZ57&@2J?t17P1KuV>)0cqDnEZnbHC`TqP5Q(fGk-AjY>&vkjDLJQTgac! zQ}%($+QS0o+5W%R$Jp7&FQ1>v_4;!?Oey2fmFY8vK zd3QkLbbfwsy61lQFde$e`y}2)F47HprgP>1X$C#hJs0pUGUO1R>#jXZ`lvN){MU?n zGEH73#;ln!j+9#O8J;fIpt6@D zHWq$~hCeR+;oT#yV+@PEzTWrt8N(lAoXA|tsh9+9uOHatcWQ@!g6{a_Z)cySy?yrZ zc;-+O&>so#?RxfwW5tM}BZ+g9Crlz8vzD_7roELKZcbLHAw<*XNhb;*C< z*qR0WGWa>Sa&Ca`-+R%I{MncBT>n#l_KiF@EG8CsRbKWjrTN*ntuDw8;Fpy!cduoL z-koVYoACuU-gtiY9k*YQT@IgYWxYyhF@s-F&JlFxi&>M{ zN6B7!^pC{p-k=f2TueFB*uN|12fRc%5{LVZxhL_Z ztTQ|zV$YxA|9w)UWgBP772vBowY^D<2SWS(vooMK>!D{i5XWkc!FJ{-J0Lcr?Vh~H zn;F;3o;TuLMV0J1{BpQf{Zr!RgUyj!F{4jk_h*0N^zW6JQVeH!eHT4=53>3MdN7{& z$TVbi!@1z>hk4o2$l^`xU7aa+RUx0Fc;1XIeT4TJJV%pO!~5Ix`Csf!-e#;7m}Bg< z{SophGI0E@S=ZF2ec$sMZIu7dnEz!>o$zQf`Xg!F4A1E0=mzxB^R%IbHvF76c-h08 z9|uq4=ajP7*^m8gi}f1*wpNtu8OlDTeD=BafZP1s*`7c1yb65F-slt1PjqzN9G~ZQ zbaV}Eyo!C&&jGtVi*)v4YZ>Qy3e&yZ2%YQsCF>J3VyS8Dzm@uA|E$=1sZU4GNZVUq zn{|!XTk5&wL~oJkL9sdQ@M=D~K<)_3$Bw-z|2YrgCF0E=qW@lE+#>RQ8EsH}bB4iJ zA2$0u@$@|*#f0FmSrYedUiG#D^+N;#XJ5SJ@WcA!)_o@p1^S`d{raJHC;J1O z#G@F4H#o1(6+Uh-`M4H7t}D3udGQg1k8AI_!?=@=b^J#BMDCX8mG}wtIJI#x{kfce zUB)`nOBo+Wnd4T+p^v6J@&BS2vqrD8pJ&{_ICU#Ahtr+;b9c`9*}o*lCNWhf zXU#dSHCD*qVdU>4VhUaCGnKgOG2}1AdXoZT2{XArri^xnnB#nOdw%v#VuymKO7JAI zE9*eIo>egw>pR)U;KMH#pLi1ATl;A{(=VXC=i{$3FJq3sBj;tBId@TFu`S?BVss() zF|S&EbMCxMZT-Ztm)!2fHp?9x6ZFx>zCfXG6uMUSBg-8~a)x;=diT@+Q*$=lMLDIN zz8vTOjs-JwWj&2OUM=z$%RFGA-aLE4ByGLuk)g!)c9e6bHSZFCXTNk$H#&v$nPg3h zF}HD+*8JvF{-5o?>&>&dyXRB((;=lJ=LOU`{nI@Dhd%WkdSsp>{%AYpT+ZCbv>5+v z_N-Pvt`Dz*2NS-a%=s-@RbqqoG557QUMt%1v^ryZ$K&kjka=(N-`|pTQ0_#p9ibIT z{lDVBtnGFD@LJDpdF336!5f`#GcZDyOc#@wy~NN&FFip%h%Yq+D>qI=rGX;+)6WqxpB*ypH+re}W?^ z>%AuK5uktfa}VNsKhoE;zr5(Z(fay!?iEO-47nds+AnR9K6ruO&%50DEBa*r{8`uh z8r=Vry56I%1JE~$az6&2chQ!QnNw!M$g{!8j5FMCL1yEMvuRcEb@4ZlL)U$HMv{QWaYyKlUfcpvT9K|2b; z{aX6`nu+^n`ZWUF%bKJvV3*+o99s2p?zC3z@_FFiMfs0k5I>IgR(}ea^%N%;dmfL0|CT;VYPx+rg-JD0?rYK|?9GjlHSzoR`em4@Up}d*y!yYe6{2X~qQ3ach8Y+}mfJExgTn z1@T#{%5oRDz^%WK=S`K;W3xy zzfJJZvq{s_|5x%JU-mofjvkDe=+Aslb9B|GYeo0|aMoo~b{4ose%~Cbz3|!4gtpJ_ z=bSfzxBX$(&#ou!L4NVgq8D2~OVG*}C*;-M_?;ilikCdo%Rb0m;?rhahpx(Asa@SCzkp)7hY|~=guLGJMM+9td;sZ{rQ~lHai?$rP%vKzMoO{dG3#X2jBcdTYt0f zkB>a<7<%uckN8iNL$e?KR=<27cO8Uy-$wn^WhckQzh?sMM&e6z#znV0)@4<~3(^?sqRFN>~98N#_9*Rj?L zd|fVeZWunSW&`Jnvi@UQE&cg?=&+ib9`Ntk!G8@KB>y*z3>fL<$i@eohShwx?7Ms3 z(>T+EeORpBmbC!WT8IY|TN$;I`>$NCfC1Bx$wc-~Zz$WaXY+9SgAB?#lRTb}koUW1 zfJc|M{@N**+}=!^IXh{TYuKQu;ButSooesot5lQpbM$4i|WsphtDplQx9B zL!va!g&bC+KgPyQA}^GAx$q{sBB5Z2^i%b{P0rY7O{jby zL)%}17h{HLP1C4L@*a*3*OyN}V}Qj_Ukv%1FAmI21Yd%Gjed**CN#NuxW7s6>bQA0 zcS%#v!y}pRIHs?^4jQ_^>2+lpd!$VVXpi(o+J^ENRbj)w7d*v~SLj8X3|v=Ghk;}A zegQ3SD!XY9=eVqCp${T^We%+=1kGKnEpWLgn>vj4Qjh3{mF>OErxO369^s{4Evjn^ zGWUV>nLd5Mx6OWq!#{Yn%$GOmnS!SS@d|GiZ`2*D@o{P;Et0cLunC*Vor|Ig0*8>>y((=b$>1_6Tetu+LfV zC-X=93X=A$YKyKe(_*SayHbOzYI$#tt`1H11k2i@szZlagQfBRW36XZv$MLa&B=MD z6M|*6qz%z~%9?pPdHQ*d;91Nwj;F>mou`-QIGzC~W%8`$If192=Tx4>JhOOeJac$@ zoz)E$qr1zR9o3;Z{BPqqoo9e&0nb{V^W?uyzWDC4TD>}S5&!*;>IP>*cZT=w#V+DJ zqSIIX&#Y_8iUl6u9UEWliDS*RcHDVsTNUSYYmVwNFKN4`1y?oe^o#PGiQQ#>c~XBd z&t21lWg6vkS6Ufo<1|!^>Mry0pL^5FYUTgP?o|QCM#a2Oo)wg{N9ST=wlCXV6LNrm z>~7tAj-qa7>J->H z3&Znc=A12kJ2ghz_6+yY_`efQtB;=ZJxM!G8Y^!4%E~w4p8#(=8iuz!|+l~wdZHR9i08`H_}E!Pe-HRc;gss1MAq)bJfBV?mOaY zf~!~UnTPB(RTOonnDuQmpXGmW6uGX5s~LknPUURv_pm!vS8xt4eB^Q}J}P<5QN%q{ zQ$kA>ABA3Z%=nqXN67{s$$9^`QaAo3cvCRP$#V^UxG@6W!MzLXfcb5C^S@F!xGn;o zc3k1C1h~fe!dBV!|5Ev{1|9(3j{cW*h?CJ}9lY08EbEqizlY)R_qo?W?y8D}Kk8iC zExyG7c*W9g(T@Y+i@P(Chm-ixwJ)8>VO__1!EX!t8J~Joi2Vt~hpRJ+Qfu7Nfu>dL zopQMYO=X;MBW>GCTR%mQT5XfNyNvc-n%8q=VP4N%$`(B@G_~?LIbZrw=M~-0R4nN} z!urqeTlKe|$T`4y2n~B3PjTMjo6?T0n|JroxqY95b3{_7Oo6TopzB<0$I<8XrWNo& z)`eOT@twsDl*|QrgeH#(x^{Ax$1eJ^pBTu_ z#Grd6X%zxX3cAvHzDrsG&x2Zz+(mX`X;w|4$v1V+!8hQ=;+u@;gpX4Uo^c#IH(vC` z(b331zM=&$?NYRTA2{R7KDeVx<^Kn8{|p=ah~kky0T0X!!?(Pz%Hbm3ZN+nJJOUm5 z&e@fb^nD+`{S9gFM5H+r0*l{&mpeNS`g@MROQWHI?9K5$eIh5rNsJ^HpYe6gIQuzt z=kA(@)n$gAYkAU96yiIZ~ceD_xFL<+Ti&n{CmLLZ1C2{(|lzXhEsa;J+dQC2Z)WV{WIr@myaLe_C}P-)T06`Vz|U*nwez+yYj zN*?Wxv(QfAbA^|*cUAk&rp#vcx>)e~Hf7#E&{c*gZ=x}lra%k&M>6;3E960)LW(YkjG|;ZdtPx*hIPI3ZGo)>u z8;rL0NIMuO43NbmiI)Z+Ko+H+p@W?1%smeGGT!?cy3y$OiQZYnzmiVZ*Y@rG`#Mhi zPW<*Z_+0#S@r_!3+@EHJKX%NJc5Zo9(dz~JfgjyxTgKArwE@yor{dj_ULN6P2 zG$ll&?Ix{{7SGY2i1eNI^qMfOq&>IXeq@&sa219HO3Xnrdx6l zW8$c-@F zZ{&MUnQj@O^kd>;z}8Y-_vwL=N%l%MW9# zC!$}a4&jd=X><7=zs2y;GK%61pW*1Us$Fi{b@WNIjXL}a|LUB_Ci%vi@;eWmw43o{ z8}`=XXD#N1Fk;E&4(I%Y@{@G~wP6?ss@|su= zyQchiy+vvb{^&+O_N zg**-TY#QnQn;lOj1a+ef&AZz3;!TdCS4r>ZQ%x10s;K)Jr}C+Y%@{tNcB}HKTpI@W zsq$_P`&7%Jf%sGtph4Ef8nP$;RFU$hDE}CI@(4cF{GHL&h5KbZJ2E(bCGQpTJ}Nlh z>8xI`Gpf2UopI-`(ZNFIuR^=yg7XhMs|%gH?;0MQpHBV)^6whTx8$u5_=w>A{qn7| z`r^aDoTNWFELfOM+T?^_VFAy3w4TBW8P_HT3s>^ot@X?=;G55N@;jgRo>ypIbm-LF;mpgS{6AEAA1f8ANO*76a? z8a_hW&lRt2NW`|e#O5h@ex0%r>wx>Qc@{j)gkLB5ZSdAwrHe~|dt<}-OKX+wyc&4G z26xn|@~;41%zTVh{+1o8J(mJ+8ybdN`R4;?6?kCF1--u3`RFEmLx=h`*a2_%F z7Gh+T__kXYJ+L_Vt6$#8Ui>v7&L0-r5?Obmt&N@NW&Dz!5VrnH;!Ei21ny5+Q~ptJ z(F5Rt_|oD|{NzgB#eR*&epz(us8;xE9|=8&*zj7d==oRRfvhmR)x`H71%752o@UbL zb>M9__?8D1AN^j+x4|6`s`B?sep~sa52*I+1ul4^?wKLlzg*gGjsN(6c=Ga~%supn zEenE&CK(@!Pc)@Fm(oB3}8UK}6B zcj>LFoDIM=BYtF-bBiix9q?x0*0}x8f-9TvQbD@#cjvFezK4bx_x-?y;?t^jZP}#SdlB{8`(0|n^Q0d}yh7!7Y*PK016;*16uka>s+^g? zn{D~izNhj}1zu~5S7b=PBmCs^$z#cOC;ouQj_j3Ha~Rk9 zX>omV@M+S-C)z$u;aO-|LfmPLtqv>hbabPwe8w0SEj#JQ;Iv#A{JB}alzYorCvwm^ zYK*bl-_(f?kugTg-+POy*_U02PBO+CmcBFNT}OA>>fITxS8&W7d`V?|H;ncU;3dWi zcTj&mc`C^x{$>MDnR`9JQ`*#d&?wK~C6id|8n79 z9ZOF(;%Bi>>ea)Dp}BVI)ko74gRvF7uax&u!M-?KIZ@b9VTv*J|^hisp4y$ zJIAV6TY>myDJs_Xo{F*A<)z%)UtU~Z$BZ9?GfTI%UZ!kWJalMF59?^hl}ZL;ffr8< z!&{4#%tQg#CfVT2R5|~SN5*XM{AJ39b^{OC;2ldiGgz)!+MwUfhX z9T%!L9U-lpFwF0XBHddfYFW50TUehz)_@)lY0AX-58n1VG`Ry=rv2HhqCfiEQ)iftXR}7U-Zt}iqAISTeEGQ=)%9)((V3j z>$emgGRbSFL+Q5^p3;H0+5Cu(^Aw)O0}p)FJF^U$TYmj)Y`I0pwDVNCiR81}!!2{w z_rrkqv!8QS{vndzW>;J1sCMYUwQg0PtPK)g75!W&Jc~^f+_`uc-Q6z@{{#Ee^c(sg z86%Q-`yVOSl8?5i?pbe-7)S$+JR(1Rbbe3KS@u>$;`{^jyX2MF(O^E)Kdf}d8-v;K zcdT^AEJE}CV;16FZ}%3lCv!l(?~YLQmW`}lJc0EdGA^2Lyt~)T2QL|VWlAS@N^sEy zE=0Fw6pc~7*K;OivD+H}d^c@0&Ne(zJV`GqZ>hH&C9~Tw+s;-%WGZbaoJP zbI2Ug*kETp@2&hMrvy9md8Vnj!MXI^K9A_@(u=-gUaHKTk8U`s_nSv79jEy1JM>-o z;pY5ex`MBWfTvAX@GF5g8~&ZjUph+h`4Zr5Hh4#(;`2*@*CJOXj70_4B15ITTfT`J zk0&*Xz9?H3j;St!KdkZeCgw`T4;t_tyvIFA+gO7%stjAyFYXB6_4(QGnB|*op*{V5 zvvJ1U;E}{DgR@N9t#FQABfPMhINepW^_qY6&f3(`lhXi=g)XwsT=th&pqow(kKl(E z_@Uym?&B9R*N6?e)-1EQP4Pq7U-hTt-dHKWl6gdH4y*3(dQk)4jiG#*|8-H$xmUYt z{OQi>Hs<|)@{^gy99}!J?BLt3U+CKwJ~-^;)rTF7;bs0q!H)pHM!q5DB(N>SciVt* zMr5O$9iMT@usy`Gd;Cw1sBU9E%F6RDd8AFQ`2QPO_?5HC)wXLfF|Q_>Ph>r1QwUqy z$-Jh_ZTAp!%esd-n$65-RcSrqrxDjN=Drpj9#MUQxv=@pQO3NNn|{o_+Ff&>Gr4-} z;UwnM;)7csCKfi?5xmzqqWZpyVbxm;;`y%!@7+JVdMk0TW0Rf1t@{(IJ9kHsC$W0# z63U*c^=w@k&z#zj;JrH&s<&1EE8u*z4a2JM-yd83Kmp}AhvL_fZ-bQYCSNRNlkds6 z;MM|nb!Sct<;GNZJ{KF5_(-MG#hMcGKO9?KSrLoBI6PQcK^xPD1uLf`TN|~WN{Ra| z;klpq-gV^NnN(f5KZ*EYLa=fJ&+WjL06RPy-!U<`b?2z+dsik_-#f{LnfoYfC;xZx#19Q+jR|(kT#1u71#=}Oujxg{nGZV9H~+8C*bZI#=HpMzHu&I{ z;n)u&-lya+KUT@-df>%2cv`HI!!^L0M~i=8%DLN=f8cF4_!hU4=M@p~e7EvHu8e>? zO!yLkj|rEbX2LH4u8j@DTV1N0i-6bK;Ax-DHvE!2;LY6OYqhif)7fW>zcL5-0dpLr z<~Bz+a%S1KhmieNc(cDgNo^d9oL7-1Hqsi?$oGSdm0MbLV_n8r`21bQlcI;Y1E6RY z-`Z(Y-mDkd=WAWfx)JlY+M4fDIE|-W%EvHqJw)|6HUeI6!r856#449DCYGm27_-NWbV(}nn0mM)w}y=mYmwDjD*nCC0#E3xUa zF2fFgLEy?(@3qF<)>vNVSq`Ib?*d<!+(<67#OPCcUc2hbk7E^{OU;KaA2{sC}&MzPtJZ}jeOdSs5v zm@{E+YmM(Pu|3wD99WuDlVrq8)w(TGX`d?jyM?O*oJDjcR{N$M9rRMs*|xt-gUuO)Kx1nrAl3-IMV{+^b{ z^r8@B$jZlbV=X{3a^|p&9V@A;jj^M(KA?G*{*;u**>J{P9aT%Xt7C*(3t*Q={ZS>4 zG6uKSy_D_L`*cU^k=fr9-EpRrZ_q-?QQ8Lzeg^P>F&ClW4ioMLt{HO<{oyH+-&iN1 z;2lR4O-D(7V_e?{H+1xH;NGcWT}FPRJuZRI>IXOSJAnKB-+X<-D)Qr_C>^&^(Lv;Y zFdbL-h|+Pg_Dtkg)}D1;q!rDEhIX8m{8Zso<}xju9{5QZr{L&p!Rfn0`}=|QX5S7) zz)O!P-EKz_sC+@NS-wdV+ZvGmKbx!tpF9%|BTMSq&P?-p=bkb_tVfWoT{-WU54ul&t{x)#UMzi|ADB3KK zfVZ0Ea3QflGc^uSGEcM|5#$?LVLkq((&F|Key<0>FMdv9_UX8SNE>P=9-!&k)hq$>|8~Lq|AQtt<8!i zvIf|aqslvVW8F)~A*Bamz>V-oEo)!IzFp0KX{(G+yhXDOp8Np*4Q&YHWP-`ZuP~>_ z{jCYNoa~*o#_C7G>HAT4dqh7N3v{kj`P;7c_mt06;|m!tyj`zvlfE51V{m@UyLBMH zHQW;BxBM4X|NamM|JcTa`L8JW0pNZcJk5l+0x!0~JASY7KM!2!t-euw6%VeA*tku8 zYXn#H$&z2$dtk|+;iJ$`@f{|jM+RGu`hLzJJe2P5;as6U9y-ci1B-`l!7dK9a6k3* zxNo_>Kkg0PJ1&e{(Y1DY&ReJO8(PZU;OOfEYs0v8v?`gs1)K!f^JVGN))s{;&IUGc zRcoXvT)hZP#@BXTcbVX7VHj8TF|jcwpX2YTxAl9NjCmfLKO7@?nis~?h{1HvWPi^x@(B+6@!NBX-zrVH78`W*^)McjutA%^ zqZdD2)(v&Rm!U+~Ygs&%bb8$St{I5ig`DqvI^5P>)gQMRSA}ug`h>zsM{IxGZh1oK z`@aGA+T^nI358oWF871yo8`O#JW^gKf?JW-e)!2!`0;}uk<|e@eVo5X?7f|D>jg(6 z!t@xxw{iZSFUVu*{M9dn@h$S|1>eGZog>V7Hz#ZR@GWJ2!1s7>k$y_0_nz!ck{E%k zgX($R--FB(E66j}z0G6ITl$T?MR&wT#C}|?xhu%)IX+LtevZ&*i3J8OQ?Z}Qg@eZe zTP`_GERZp1i1H-nlr(lsRj0)LI{58M4t8$gSugLz1WS456X#&=O5%Yb=B^^+fprV? zqLa?lDV1hCFk^u}qXs-!`XjAU(X<5G`E54ev03rJ)e-P5JC!_M0bKcL%73fBRh4sT z1UzknDrY|MTHBbm{zk=n1;C5((TUd@W4*JW`xf5&`C0GznM-24v}{h_cy$Ti^~J0I zYRF5^&xjX_z8moUyUOPn0EfoIOj=p7zoV?dk=Wl!Vt>M$m3{HWacWHcmTlYwe^}$D z)wJiI$gkDz4&rde8o!5^2R+mw`^r-NJvkwGq+cxYWA>i8BlwB<@B4G$r|F8HE;rk# zeM|9^YqmbF_QjY_Z^do%Fd`*wUI%JNsc)I?S#GiZdhZeGj^Gjl;67Lip5|Dj6<{Ia^siI%Q z`*t#>Dqqi0rR1cFa%*KiGySS>G@tny`9*g~J+gi&-rwI& z$T#-ANG(&uR;YbPC(W_nZssuq%fjnf>oWDC?cmh%RWmXb4aF|C-lgbt6>UO)S6lw- zugx~fxffp6CP>~Jfc43vDHl>FF&$$KYYFXs6&V;1%O@_$KJ0DQ++*3Y@H#xHSNhaf zE_y)Lze*g#p6{~Ae5O7S`ib2ZzUW)KanL5eFNfv#cC$~`c+KzY$q_vudZ8r5*$0#( zZTX5mgpf;-qhtHRb42@z7k%l9kmDi9agLJVV)|&z4^1%Vhf=~e!9E}08&AxHZ=`(L zUo@05UP~KV(=bdwDf?Kigl}c7gv2VjC%Pz@fL!LJ1m7i3c#a4=A+}+QlH<;Ecw!$! zer3#31OJwpap$_RdeI5$DYWdvSWAZ0-inU-iUrC|0b3H zwFr2tX$M}8fah;e`CB63rFp9S=YV^S7>?N=9wfuW{2+;IQ%2y1Uvj$ftz;34*!k7(HV?Any!K0CYWe%F@;IKOOLbb?z3~P1Dwd#+sC+-q>kbP1qKKPNjqH%dz^=&H^o$Yg&dUSuE zr827jTuA;*#WOR&mDlF8bgdF>?Et?5{y`UTl}Z0JCu8jQnU9lw8P}L}DDLex_GNI_l`%gU z5?dnke#@R^t$}K5GG$pha6W!(#%;5^#V^p})Q}wZNe_pQoFopU9 z%W`U57w7GfGe7c9$eo*`8l!CG$=YGjsrGz&kIHvqNVr~eZr$*)`ujym$}c*NUY$r? zc3(a07cC14uM00q+~3-(ApE$1`PZL)+&k-M$GdY_52AGKb2eRj)L0wRe?Fc)mhVr7 z&nGB8kFxOlMYk~@FXfhftQmfjozLq&mHXh;K2E!CJ(y|wOq6NxxVeYZmCoGVldMB4 z&{>CO+sDaXO*ej0Y=u@m3}4A5bCK!zP%A|T<6l9iP|i5D_G~}zyV&>nFi-p|k!Snf zF#RL^4g3DUW16|%OzFV<@rwU%fo)7`gpQmsY2i%VH`dHQXXyAQu2xHFfKd)6; zO#VLKgmpaN+ZZ3qS$IdWW7v`=?TT53FZM3HFE-3r9}DiS{c48`;`KRRu=AWd9~YE z3obP9u|`?uN`;>C-@>iT9rRzjZ1NXlhCaUo{}np)NDTV7^r63=R(t1b3Cb4&$SoSOTyY{qIHJ{h4@0j}v_h`M6$?rU^DHfd| zehYJA3D&;+kMKDTviDnjmsh4~hki>L7qdoV{z}d~c``A0@nNlcemd_pnz5hjnCvNI zjLiD%p84qgf3lWi{s#WDhGYIpp1a2c7c9}M=d%vEb9Yj30XAWNg}f&R7og+kS6~B( z)6CzA--AuRra-H{dZp|Ob2Zx6k(Tf6uajJRwHZGV{b%l-X#FVHm?!Lx##b@cT9|tw zQWXz>2E5n?PfJxg<`{6b) zX6!`|RgstVPU7eGj?<03=mtG(dz;&TZP6@Q?ce@2_7LAH|8J^KoHb~!V_x!&#{FNA z-;%N7$GdYn$K|R00kox)Hb|VZopU*Fx9M8<9m#$3h9$eTB9VWwg|ePSdSn-=+M;>&a*Nshtli z-6HLfcHytCZ=wCKFn$^6E2K1LnL1R~e%jNO&zx%b%nzD*iXT-zvy^)vM)}R%_)A|x zAM1P_&SL6o%T_0CvH8qja$lO|GrOE)<3t{%tXr_FL+M-FQu=24%yqS@Z=4;`SDxrt z@qz96N_MDx+4g*U{I;cEF1M);s|CbSTlD*er3(n$O|0CVT zo@-g}?G&B-Ykv=COE+0-bwYe=$)_QI(d@OZvDuyNVY`zG9=4F*in)J;-@-YRoGGR3 z%0BiW?_}pU zJ7ZcS*8bkupsc->HGO??m0c;p6U0=$%GavxV^`mUtdGP-S@HIU2f}l8TlOj4@PjDE zmc|-zb1d4V-~r&xw)vL)CZz{&2ky0vU0e4kJ$MsvSqo^5MSstKvEc*8qr^d$fM>yv z#apuGY61J*=Q5`!=L^`sv5!-qFu(KO8*vVXeLG1;pN27h=Q{UADO6T(fMeA7u||J*g54c1G}^ z#8!sDgHFYR*O|C#4upB|z{Y_*sNWgp!N}Ok!Z~XHQ;2e>EJw>1DBY=e_aN}Lv%~O?dR5MgQvS5?81f$W z;@b7TF&7QJe*rBjBhs8A`|!na^roz}c7u1ZowXYj-ZQc}FNipk@JA=-1zBfv<=rTF zPcqJIlCi#=2P8I+0oy*kvhQh&Jf&&AW3ZC{x?)PNuaVK!4 z2Nb;ib%jd~_c!BR3ZDNH1;0_?MvT-ff4eGwEpUmETKZpNr1m|)TS&KfT=uw&jj^ZS zZc8`U()OHf=1DQe^JcpbDjv9u{3`CC;9Fi%{aGOGu=UgNipqaJaQZ*95d6t{#jwpV zW2C!mvX76JfsZCO=0Uz2bgYuNBv=5y2ro#wi*jWTjbZ1oQG9RsMOKV~H*KPIomOO;Oa4t}4sCux})FNSvJHLYM>t&R_PtI%ZAm_DDq{0gne zSU<{nQTBC;>}h4+a=1TvMXEpI&xV$&{xmEJ_ox0@)t_I{7UuH$bdlp(B@Ye2y*AyI zf2Znay}%9mQT=bdL*@S&@B#8;tUJmz;w(>)ZuQyRSJ)$G&V=wE?R(JD{!ht4CHZTO z*pZ3n8r9w{QojxE_^E<#lKe(2Tjh7$so>uS?vK)DR>I$%$cXT@_{|or`g|^Arq6aV z{;}j|AKwouKMyYsZZPR9^eD#HFJuk0$dBwhD>UV)%vP^OXZ+Rmb(|4?H}+Q6QW|nZ zti+Hbh^>DrsPGSuVJYI}~v^~M-FMdo=!HEN%1)^v0#{2_jaQHE{I zoHt7|_PEH}$OGm+mj=!glyP&~O4Wybw6zr(Q~JnU|4X~9Hf^8Log+G1Xc?->Ynp&g zku(1{(N4<;H2j046+x%T8*S&n1HFnTE5|F}AarL_SpQ7J{(oiiEdD_(dbbN3u-eDD z_QM<}kM4*5#F+f||L@$R#OtR(*FN3-q|)8HISYgRU5hz8tS5`u(wWT5ivAW~q7WT! zoE7*a^93!~75q8(dY;d+-T>Kf;lG8ZCIv<2PN44!O+TWASQY&==w7+Z)ZfM#D$2e( z{zu{LMsQ}g|Md?ly|xy(-{u#jJ*e`37kIM`USFc%#lSUVoT19Ee?aNMs|0TB6;|-p z`&IrT-~l^)iK=%IaLbn`t`d%&VuSnS8yU3pQ4RSAUAKe&;Jz$FS6O2mV?8H6yo_W2 z&*Tfin|E0Etnu)G$Zw_1mmh^)mh=$1#n@N6Y*xSh9IZc4ZT8Uyb^ejLuEd0o11|G@ zR$QUuZq@hE!2ND*rs%>8(PNSI9*6ggdY@Hs+wI7?U-I?ojIb<~k5~53b%nBjl2`OW z73b;6S}i+I_&Cp9%?*t+WUs-9zbU%pmn(VyCwCY%8}{7flXBI^5ODDYE!jGcK8RdN zJKNCpuhG7cVc+H$_Dy_r(dDx4-CLw!_@%}^Z|G{Qm6vZt_qT8_j}>t{nx<~0#}S<}Lr3ef|WuVu-n<#Rb%PZ5PJ5gj7W!E{gy@wt9F2w9Z4T^!?h zS?^@&paJo(kxCC8SgK-om8>Tc9n>*T;pu>k;hz!8lNQBEH!;YgAW*|hbT+F zb5pM9l;xsR@cUfi12VThhyDtV?fy~=_ZtYWsBws?KkR3D%~8BuO5ciY{?eA23J=!+ zw|ojE$NzclLXiC8SJ-`Iwa+)Xak`0v&8&r$c8c#U`>kY6vC!w;=rC?9p0Ie~FmoLB zCNEgePR_Q&w@8pVZ)1Nd@zIi()SVo{GYylk&y;lGfgop~OZ+r1?NpJ(?d)?B#u~lE zZwDjyb{u*5n&6-4j}!3(E0 zE&zY?`|e?Wm+!y0^mnvL51uN}suPJfWo&A#>1C}$iQF6DLa)aAdocWluF~{*@5ud4 z0q(_XqYWa@(gt}ywK0#f)p`3N@?>&90QZhQd@p>G;hj?Bn#R0+-ikd7hiR8@=A6a? z%3r~=nRcx}pGbYN#5XgeW8-8Un7q%|-EkUs#JCs-PiW5Uies!IxRgH1^Tc(}!3R40 z;Gk|N{fOc|alKmXMB%24nv62eFlOIxIc3Xz&V{sR48Eku#_#WR*JPHd^Tf+(!xzq| z#;qE%&s`Bx{;7@UQ)U5W=Tk=>y!K*))cG&Y{I~S^*h}0s8J7n3WDW^5<-#KtzI4`& z2(B2F??L zK8EjUPn~0|@$K;+^DXz_$+rssW5D~scGkk@Ui$Dl&u@ey=uplc$IqS7@P8Ei?`%8{ zzNDWLr@R*#ReVo;lD0Emc?$pYO?a+R{(V^~Kux{CZBKf zpxX<5G?RN8D)F&}_DRvioEHW5bjAdlX4&Z0!Z=Cj<^|^=hefk7jXweJ6Ut`gqQ83r z*lt;8EclhZ1gFDqH}zR#7pc>IM}K}3TnE1azeUnR%5u?unSa`$sdIvKV8gkKP1;ur zziIda5_4O_yp+VvWG{$o)44SVerQi#K>i>ehbrg2!4+ITLynnsO$(Ui=AsnUR{lrk9H83e1kjqYN5Tz8e{gJTIln!*`|+po{o<)&<`%r4<_$t zfDZ$=y0YQi6|+Xpip)Td?clztg@$~n`#!d6dfZII?nOo5&(dLb+@9KaA>UlUx93wv0cGW5FZ0mwJE2M&txuD@mZ3Z zzx_(_S(H8w-V*zv^hGqh6@a(I4-h^~BE5&F5$9%2*iLL4`;{AuMaG?D33oFu$h`e8 zfxAX&hv4Z?8}Q@T%$;t`;cw-Rr`6oemFbSH^6C@bdD8G9i0^!sW6W*W^S_pFwPw@G=7EqY@)_YyqIxNQk#$(of7JVj=v^AtV$Fi*+z zIeC8~_(9)BKa5T09wDJg;Ob|w-J=`ZPW5iL;%HmJZ6-L*aBDrRzpf6L^xU{otH#gn z`h1ALXFun!e9x4l>xCbk4*1al4>{qbD0nIw-hvl54na37ezeO}3Gsf$XN@9P;(NOE zWMlob;xwAiOuy#gBEJJy%|x+ZU59=Pbsn_^$A3HTG}~wc?bc8y#(m&Ub z70qr14xjhI^Z%saHv-QST**46<*awWW^)%$P-I=!dKH30?MjJRj&8i0ylu4UD)ewH zX;+I4+?=fXCi;fsz?rQ2b=+pVc?%X9${1!GdOEp^yfnMUW+}Jd~)6`bH3H$`sKBA8m^0 z{LIdcZ&j|&>@MS7(vFV6?~h~c>LfiVFo{oy8@g|xubdHF+s{|l;=kn)ef!_|%M%|8`^&R= zm%A`6Upe!!|LiLdCI4VPeA%P@+x6eJskb`ZrWEQBeBsADWVLHm-G6S^2Yi2O<39Xe z?p8k8yFIjd3o_w~n=qF9HnF#vin*jHAt))3lya@YI%sj}I>D__p{A zV$`Fwr<#fHZU!G+=uO7Hi@!pDxahx|anL+`HqKQo8b|+EElaJ*q^zyR{w$Z_XE@$c zeVs3DM|Z7CJ72}1sZV0iQlIE0xwA;d;!j9lMi}}g;Vbk-uVdVrG0UAFtvVBW@_D{*worZhMzbwFH_D=H{t}?8~1G!maM|(C^qbbt4ja$j<-f3^TqVF zES58AXse_##zngleBD?Tia{-!YY>Yf)UHH$0lU_F85u#%zE?iv&GIy zy<4d_K-p5~m*~&{b#jNbQK!JA&aKp$_@@kXU^q_kUzh){JKuWmKbL>2y?hsUuZkb| z`yZ`eey{X*Qf!SD?PuG3uIEgCn%mD-s9aAr`GTZ*NsHzGup!zfkGK5K><7>h%+;)a zEn!E>?(CuChMp5xd>`+X*{*R}CrB(@s~&w3bHXE<&kLpF^Te`G)DbxEV)#e= z$z)nW)_7Fl;E2AUSaBP+n+>d`wMk-Ke&^6hB);v<&+1wOuY}APh3MgThWmT+x|Hq_pREG?h_By%ROuao z-3hD~T~&8f=`?}e1`OVxQDTGL1dOr3j4w88!NBLL&*SKGn^Wtl>r~$csPp~1)m)AL zLsf^2cLE{R2EmWgkmA0>k(i0h?W;)bmb-`BDjbi`a975)Rp^hGGe&Qt zeLD|phq#-)@mt%`;hgXKbj3B@ZEdPAp_NwqM>YOd+F#K!H-vq%=xmIOAL-pL@q{S3 z$DaGI-NSA$##$NN%Q{gHoR?w#*O(vST*|!;^auCe8}~Iw#vtr5UG&@HXBHUxeq_nF zTuVy79lvDdoy*@^dkHp(_R5(3O5P=gP|j~D@Ai1a&WpLXD19$_k$CAwbYq29ExIrR zz34_SO8NggNclyS;~gJdq>pb{bRO?|{8=7vrq84En{BJ3GkyQsd#Pivn1$tY$ymvX z%}IS*2B|NXGOc*rB;#H6EzPK_f6U=}>KjboOTWrecP^Tb-k(DM;>`YicaZv0DYtn1 z?nQay8y7|MZuQk+tIyKwi>a^IsUNapdZHf-7g#>@gzieO*Yg^>=Ym|X=exN+&o0*_ z&l|2YJRfG9?fJ0T=LtzVdgsH8$)3BCCwuPk`#dkXCVL)rP4q%%D<{xa%4#jGRI%Bj$M;-pplJ%{RG!2hE_&9mXh9_5v9ckp< zJH(&ez>~3K_0yE`4!<3aq%IvDHdt)+vxU7$VjDi5)3olR={oZ!4s5-1-GKN~>Z69e zFM$Tm_%l6cy3##)(8Lix*)s~f&7_?p;?MRBi}!lYN>20m;O}}z8hIyq@{`j&1sPL4 zQSiCnJJEA3->!r{D>Je^ce&F%=ks3SPWR;VEWIYpGbJ<4b1>8EDZ8`yp+uegT;Zhx zcu8VJQOL|q#E0Z=WQ)i4eV27G_^I~zR%dzveaWX!dFwu&^RnSTNX+8nIXW;0X-@hX zML+w;Esl)Sv+t#^YvA>Z;q`2IeK@>6ivEqJpTeJ8L+7M!p>O%FO!{}0XJu}h>Qe^& zq;L7IG|w;G6Fncq`S-rW|6jmk-=&`~0DC=SlBa;aR*-iKutJ`ypTr{Q+u`xQHv0Mg z2>;%5=_mJwC$t08NZUa_^NfCm$IYGT=hK%0`jk&U^VV5oXBo$RJjVgtNqQ80ji#^t z$8sM`aAv=sB-CRc{;#BKKU2&?vs49t1sWUaK87e{Mml;4JDt2%QkSM^6xE$k0pN|`7b3;vHL8~?ex=6zr5(R zJY+#^{kKS~rJnlXdDy2kPwPm3c0S)}qCZ7H@b2SX@&z)pz};D%vO&r@ll1y6{_Hx3 zf3FwZw$Ns&UvO7qwj-N7yD3B3vTTqt#*t2ZaDCmEy+vOP(Pl;BWHRZe!^s%ZES$Ip z$rp)}Sn^yVct@sZ4APcvv5DURFOpB;CEJrWNI4&n{&jfykUUn~|HAuO{51IJ)W-S9 zMj%=k zm#t)EYl8Ee$<|l*DcPzU^YyYd>dDHKN@U8Npe5X^=X$!v+_!j5%QH7Fyd$e-&8gzI z*66WuYwvI+R^72MZfJI3@omAOGNBF0XUn{@E z{I=Wh91t8E^!Iw6qK%PqaVzONh<(c(n`o#(7SvnuB9a7Gs~oj9I6cI1oQRk#{wQNG5$O z=_!qAz>1w|=%p-AK6uew8R+y(kB_G>V~QtckZ(o<+mxjx1kCSd4Dww!dVTZ8==I#G z(72L0L%V&p$Ehs*ijDSz->$6ZkUySa(e2{N$nnJ(KJpZm5h>uq3*X_~kKWALI6TY+i<7zzg;@aW#D$7H{@*!Bo_t&Xod*5Ge*9qlucH6G z6$8gCr}N(e-btQv;%S@=?i)(JHp+|35Z`X9 zr|sTwTO#dhJ$W4!{%oDGoA`-7`V;9V?j%pM*_IY;tN5wgfNcQ3K77LukRuJ8e^VZ7 zfrp6$K4jU_eDsNo$L?bMCHCftgWFhTx~U@YllYDZ{d$);Jzt zR!F{!@Z&DThl?2F?N_p3`Dik)A-30&1?>-ESr~>atd5X{2W+y?Jg6*y$J2~|9)e!N zd*#0m%YyLG>Bc{W$O3m36n!*7+j}#-{(X4;7Wljp*%06DmH*OrYq>z#!JBxB@Al_G ze76kfZ}~rkHvVd7tnQWZ9Ag@vE8F9PSKQ@QQg&OMwzmwv=-i#39qBu|`2L^7QZ&Xc8MgYnsK3~hw-V$nkGeYHPmu>#2EGXS zQ^_y!o2k$=GVedg+eJ*F*yQ&T+AC%J3Al`tL>^0!DS^EOO#DS3{>WJ3{gG{ak96sW zMtgd<>f0nfdM0&-h7@EAjyj2PNO?YD8#?9fBY!(}d+{gi@Fw8ay4+iU=4bL=%y_xfj3aD$XmDF0`7D2K0`H~73`)$HLHPp% zZGo3OmflX}{W|Qd()|~pYa_?PFRi^0evIUaP4H7BF9qP6I({9*%MLTIAbiu6^;^St z?`ECH@nufRxATo!XDMq-WX?}wvlidT{PXs?3b$?0WfJYYHebcH5xmKK%^}`vDZ?JGZv)mA@hxTaqt|QXiDNu!;eQ|h z1C&!vTei@a3fl4qV9n66)udy`Y3L|E?EK73kI+VZ^I!5mlINZS)(U-FO!~GDLf;1R zSoE#o{bOWrF1WMP`1rB{?54G+;-$6pV^Dh5L(g_-bC_}K{m}fsq33qKb)jPt8ySMkyVjk&!Hr)Q3!lXy`$LiaVc3k}%%?hynDi>-UDlh(9EJGVqVqFWtufaB zg(hq4NjZygir4c#YsV^iy6*OR?&4kGf#qJ0<|8KYT82mLunulz-l9y#6zm(8H6)fF zbsK)v1m^PY>x)~h>xq@hZ)@2Y_S^LMDZ~dv`6_Q5 zzXXm?SW=+ILA9f~REM42X6}o<$ zr0qS1z1cHTr5BDo$B37Yxb61mCH5k*^4%`RU83*!Ni0v|Lq`Tk-L?&G@(-Co4!l9ZnXJX5l1nkbIFi z$tRDrW8EO_m?ml804I{q!pYTxlrw?!ufvI#JXX6Cd6%`}D-yL&S)WoA+No8$hNV;u zo#fBH5q%$;%swReYt_YT`u3RlCc``Ur*^#~<;lF9=#+GL(Cq3tGF*h;+aqJvtpT%G0Rh8^H0N@$4EPdA8xhbAA{tL zq{VyWk^G(M{=LG}hxq?Z@Gtqm$zIDh-_QTA!}km1k^F+6XQdwWt+7YejK{tt>8I)2 z)1-AV?vZ&_Y3Hs%@<#TpLGnSF@J5*YVII;Bl~q8c`O{B&HFd$ljO5-m(Kgw^=YD+U-%(O>WJvm8Ng20 zr_r`=U4!I{?2p^bFZer&-TEf|k$gfU`Q~HZzpg)@nE9nYhk4JD|Jcb?>bCS%=NVyr zRcFLbzqvk=bu+O)U>|@p2A^g)x@rVED;}RF0iR|hx-1c$HVWM~8XY$VpC*a*meGb! zv)c4&Bt{_d3DKREY09T*aE>w7(gh2N1L4oC;*6rOFEhoHXY*x7;BSQRWrCbz^3@=| z%vyYzIDDSsu~Q9S#*5FW;Ro60;6J@v`7$Ll!@i8nbI82A<;TpykCC|^%a3^tTY1my zOwUIXVzXbuk9i|^s^^mlaoI00|5HWU`%{NzZ^8Gt0Qmb!!?Fv2e==ft_D3T|Wbfy@ z!%6Ykho>fF%bb7Pv(ec{@qIp;J~I20>517NOdXZ|LDJ~#PvXX8e-xLL{m-Q2?0-%j zo87fPhTo9vBhR|B1s`7eedJPY@BPHXKG~sX9~3#X#ZQk@{zV5Txa+?g7^Efrlp?TuT^(tsTkBp_(jRDsB~F_znk>}Wxt$d>x4g%^BqTNST>S9=|)&_%4t5 zlzf*B?3>7rk#DLMCqC1&)YcZi*_J%BEy9>NVTaZnh;Bm=Pl*PHg!KUT{}A zBBg4W&!7D`enNwDsj;RmGcGK5I(|YkJW>iUSe4r@R5DYV?%2%G(V3g>$lz%T4$tAOZ^gB zcmGz=^B6c08fW3txHsPP{E0zm8)8iCb!T|o;LMJz67c^TXg4ZOPR;#q+DLf=tm5b5>)~B}qek7oEl1PCExkR9Ozw4YCh=`Xy@B7F3oOAZs zXJ6J{d#$zCUTbZ5kmxj?=Kb5?kmSP$Y)4oZ@+j}$geQ-YNAe2|UM=-p!Bc8T`>MYA z`PT95^z5*X;@+#|y|Qojkw;{ca2xO7{oC|S^2t9zL7ohJ7y+V3Il ztJ*(6|L=#{(O1cHW&30Fyz{b6a{m_X*Yic*kbMUF{Y~vZOP;pKA7poN&*M_e_rcUd z%z?xpI_E@Ub56v6?n-)nioAYo@cxf}-<9=u?!;BA=}A>5pT$--i}x_C+VgSwr8SKq zBYb;$Br<}wR@-!J>>r?2hK*3~*c4({U5`F|9XcVA2@273h)fXHhyO4Sn))+?7m42a z80~7Kj~3FUPYZk5t^XI_4s8nMefa8n=9kD*hb~8SHoxNeoAk`JkG^>xHo_I z%doqfdc$z}0ngz+f3Meb5zpavUf=6^4$t9#XYqWscK?UBCt2*o3yBYOHGBTvcBHQR z9m2on{f%}C&+!#a)<1jsR^3<4yB~XT{4@^yZmod>XV)0_HpWbJ zHM_3R)wuYtgl_|->?`t+_X~QO?~up;@T%;1?k(iKq@(@{n?=dz$7Vf(`>x)4Xxeb) zo^#(&-p?8LP1wd_+kJ8&v8@U(;lUSu6quX3&HA^qlhGQ(`opl_!Z_??#$zWl0o$ok zU@AJl3@&t8uHdf{|7{gwXhZyhzTPGo=9 zm!kJxqqp7dh|Oh9$6RUzPF29x4vxxP3hN>ck=A=I$$tGLU@K*2+_p4j9Q~HLbUpuH zId}egt1)K=gzi_$EEk2wf5n{nly9=HpG-St9VUI2b(pNd{(hDJuAD<3N*?6=e6Bz7 zEcVpjg#VIH>ioRwa-HFM@LzoUHuFyM$y%!&{CJgTnLGK+9kcuooPylHtsTvD@I++{ za!4#V`B&tV0`|5gE%-=nY6f=w9lx(lC4PggguU+!^bZ}9&b#FG=AfU?aq2n*Cu6SL z^y7ym<5}h6J;Ui}BfsP=A#c@H^5#=+?|jeaVCRod)+^{G{>Xm3llL0Rj`NIm6p;Qr z`}RK~Z7qIZ&(YS1)WMFUIjj%KFMITQ8&U@A`VD8!5dP0_)YI-DzONQ(zuYye%@ul9 zJWKl?#xF-@P(FGevA$@UzR~zE16zEBZJm@8hC>*3k>LLG_?s=JPo?Nf z-r#vH`PcE>hdsujTz%eqZdJy6FRa=^9Y5mo10(g`P{-02>IO}45Vvwc(lXjo$~9=bLwz6r8|ajO7yED2YZBiLa7yy|mko8SE(O+uGRQZ` z@eVdL&oG`|+aSka`u4D8tUmrKWwc{$i}8P7{`WIB^8esvnGR>Ei~)GM!0C7gpPl?r zKB*@oRL_=W!yM0)O1;2r0e&LP5ic=t;*`n`!!(XQj+Q#PzsNn#Hq0^FHq_Bi4RRy^ zv&ZS@tM5I#DzSXD;|bdsN6DZu`rfP>G@3nT*6rZXG43VQVa%5y=*h5!3Bh(Z-$0z>*y~bs~op3C>;J_EJ+lLKJQ^>@Q0{N;2Gf zK4VYkO52b(b^kj{6mb#Q6V2y8Eshul%)y16cjE$feJKO~_-1P&=SLCePxkjM(R)%Y z79(GEA2qKQAFM9)G#$jfk(kP}S5`hT9C^1S+H#$*gqVQvk1biFpU$GZ)uhegzJ`0B zDeZSXUe-@1(>lASThlvN&rXFGA^iUFxAxx2P6%p@TJC-bT|l>jtesvnY3;L`5GoyCwRM zdi&F}RI|iD)Ha&8SyG7Oq3Vk)Q;3t1K|DWTAa;%7i+JJg2y|Olw`UZ7U5wB5yTqc^ z;~vnKZnMc#hRpAJNZSUy^muw(@FB}5F34g$^8_AA#Ol&{B)$VCo*UtP_y-*Pk45a? z-QH*9IeeE(uTR=+i|{s=gD3KwY9+Q3&(*|Cn59|lZpOkLy*qWnN=sTbYtX|ci|-xc zz^>~{ED|l%=i|9^m}*WY?i72h&2H7-o=5D@xy%D%n;op~=WQNHpRHUy!}_`<#+KAW zEKB#JJWC$=ehRyAflY9tYCd{O{LPbfJKPb8#5Sf3Vi%8-I&CV|UQDcsEOguHYM`$Z zeCo)PbnL-+ANb1CsXzYh&z`dKuF(eh);UqyYV)m^yp%7o#ZIH|=y=q7?iBSniL0`n zwhyQ6mE=2Xwl*GvPHlyLG!Qd_xS7ozW0f95qKCWS@#$pMy^uI#((fSuo~E31t-oH! zR^l?&lXe09p7cxNDad<@*1s?)^^#ZWkhlv$?$(Xoa~|p_)>3?P8N;JTjsCauuh=3V zOHiAnZ!gp5YG7am1_EP&L2xqjif=yYEB#CdHg+>4~U%G~Qo5cseo>)>+*E(~kE@DbC4iX>g^<$JBJw&;!5#H`~{Zu#m zs@>~|Eo$^3T8Dv$K7C4k9cEi&wMHJEH>h-DP^To)@=G%PK3<;00s#p5is*1M>ezj7Dt<`vLGy79JBWqKI z4tU6CW6lxF^5hn1gT(tg6khXs1-=F-!VUwX#^ z5ue}-clU+nM50&!a$FEy9ygD^<@7y9yai%fTvV#MD4#l)S8AK|xG&7zb$tz8dS^Pg z15RZvFWq*GK0Z3+-PFUHy7xNbINr59dl_d;9oQM6Ud;!;g9$D!)Hd_lDZw?&0p>yL^~8m+w@j^D?Vl24EbCKM^Y4f`w%gV}posBu(ofu4 z>a8m!kXT) zM#Wc`Pu%8ZpR1I3KdNlPcGrDTX<}a{?^dmUz?En8)v|oqwhUrT$hR`Sx%tLk$Byu` zZE$^&Ct5YjyN7RHVzVfh%OUYxe8if+$!xP1o9+6Xl^ETrRuwPtvRq{owuS2y_y_N} z8#^cZNnP~?1?MbUasb-XeCgTR>zVpqCr|yZ{Bx%gRCils%ha|ttEU+Mv%Zhc&khP* z0j@uv0!=j~2in%WF{K0B4Q$7|RfK;k@rr8dfi3Zix;nuxX+z?oyMJ)@8Da?(s2YLS z?}Vl?UV8bAlZ?@G6DhCQfT=a!+no_@#G2QBaxXh!#zJ>zeX@=AdJZ|+x{u8cSG z`JFS^*D>t#!|_RarfCPR^yiW?X5MmliqPOf=pVjX2NQ{nv-M`9egig%0i_Wy#0tG4 zo*45NoKiIp&`x|A^geE)PnDdF6#)MdZZiHYF#$93mcnm>394ECsl9=?oxn5_oG&TJ zKNrD0tmBh-z_d}11+nf%ql}CQZ_^-a%T#ThYEr}}k@B{t?? zi81;cV)8p%#@{1(<$D78y>Y~ktc+|hVzeYSwXI3u>cYOzeD(U%dSu#DD!RRbZ}aqnvVHg znOZ||Ecg55Sv9n_8hG^!@<d+GOdd`hh-PW?@m+F#u$9d*3dkDsp8HaX`R zZ5OybDs?S3>T>Qd>RLpa9>Xqz*quB}+|w4Nwn|zRpzb)g4t;G3TGd1Eo-3`tc`lm{~`yl7Aw(0#%YSh|l`c$@zT}uTOj?B~FIWTIN0SJp7dQbRgr4>};bwg~VAxo~+qNdpgY4 z!p=3*bD=ZiY<%ycUg9m)EGa9`na!Ou=Em!50nJ8aITb&a@|;|M18x#ya58O|{_f^~ z`Bv(?FGp}{H~$HrmNX0BgM1fwSg(Lb&}=C*X$f}2uQjc)lzDw~s7wp<>uNA0#@G{5 zwtNc`!&~}CU$5FfcPOv)oqp_thSvn?uPan`2mKXT^d2Kq=pUKS?R=j`n*^>w?BArF zMKW%Y`MUgBg*^7zjm7T&T$PySC61u*-wjt_kgFn@(FBQ$l|zA0_#{;BsVHBtKX zDsARWu=f>TzW{crvW{`VJ7o@j{-n9) z!n5X@)32Fp5}7N@pEc$cusir|X^utOG0j{PgtrCfb5G;Gm^(6Z@ILPF)ZiL(&F9b` znXjksQw{C-LW?XUG^c&dE!ol**=vzKj-!E_^>_}8dA1~^2@i({YuTJf(R^QV;^vOO zdz(v#DtAZbP43d6n)@SQ_tD4@tQS)kaBBm8FHK_pWwuNW77`Z=S-YgKf2zp8L10x0 zpYB4>aV6XZ<~zsp-$-w_6JGn-jo#+h!MkpFeULVvAM5Qt5A9s|D}&YvPu_d4(sAwd zM9%q}&sqgM@8BNfpN`Bpch3yQHywN!=AU}5*hZ{dQ_Tju+O#{};Cub=@VXP`<-1h` zc^Kc6TMHWWdZ3;8zclLcQ_m~ZBX#`lN6P(Lk>-{%>*&+A+e{6@)2#1$x4CJn&cEZS z{|$K2-TtWpbB+H`U8goh(KdKyw{zX)a-X8y(lnzj3Lb2N2X9$#@XmVkO}gDl+1av7 zd%0DtH{iXTBk@H${?G5sM-F*QkBxekIVf}_1DWTs2eI{Wzb7Z1@+6Moap>jaw%9;CaSo+i!Ie0Pb4a;Po*(1e z@n~;u&%*Edwoo?wDt?0&jb0+f_Y!-TjhxFF;EJRC4{ZMCxs*3&<$$#8%IM8at-}Kw zZP9^WN2{8VXIC9MW{zq+aKPw`wD~~0(HCj+fs;mGs^nQS`clVplQzH}2hG{9#Rg7- zn^JElG!gs%q8P60wK%(C&*pLX;Yr42v`K>wYn&BgYpm1;`1Yc=$bWD^T0VMDiH&`P zHTE>(*x&x(swdZ$-=0&e#_OmX;C}G#;icu?FGtgFIEG5cHquA=<&PU zv1$5PD8>TXDEwOB;;BqYD+Y)5F}@;iaMn}J65v~_jn~I_3Gl7eT>AJfiI8Wvt^-(N z<(Y9_NLwmTrf>UTQNCN`lPt>fapqWYYgX4jbl;!BAG#Mu=sYoabmT4I`o&JYDpkB3}i~sh-qh4<34d4Cf&;zAG5p3tXi$yxZ29lZkT=O)dZZl*6mj&+RTq z-*(ufnu+T}`%La&th&e=C3}#p2bqU$w6R|TuPhCnPWj@?H=Mvo!wQP zdjD<8T}k{{iR-Dy5r%eu1f7lm$I!`alCf*!jPz>WiDTKka5cPIpL;^zjq}1KFZ%3F zZ3*y7=wWcUK^s|T=g&vZ89b(>{Ii@k#$-Er z>&nOF80*crlcGbCdA*Y~|3xEj@7QUw<_^a}Ph}2CywbMh+SG8I^M5BUTF})r&ZLhgp?p@?Ee74SUxclv%77<@t< z(=NA@_|}{JXVGIIV>R%v0l(-boBHUWoVTr_|2U2KumpK4j6~TH>t>9fK!aO0Pwi zuy#QH16#oFa`aoX$va!?Z|}TWYj$IMjDGXv7Ut3V6Z9{ys<~rERdYS-MavzR;S(&@ zn$J)3Hj7<-@E61|)~o?^XSwcMQ|8-}xKC9H<20McI>1P?e8)&*Z{AaFvJ{FBt0Kmm z(56agQz^7b^d2Iwe~$clZictHEzdu7w^?m1IkW1}i_kp53t79$8mjEA+EfqllC@w4 z`((40S3V(lUR5;eX;~{4kY;A@Y%zOh12>6o_DGppWV&=(ofZn&!LCkTT#xwnZIb}O3UVs>)8V-b8Snvv#+xTS)Fm+ zxmxM5u0_`)YoDG+RP#u1x-$>@4$exPnBrL0GBT%lKe9MdPeazdZ>E*FMA!~^${+D_g*R*ux zJ=qIG*W+=ctI3v~yFvnDMDcLhhB$9opc?5h%G9HdV6 z5W8*EJC5^d^>JZ5jxrt}J;}JNF~(iS4p+<2~cnak*%x^mQjZPN(z#?0NkH`q#6MsqQoA0ZzZDD2sUHr?h67 z7hRl-&KxE#aDrzK@?R%1#qf{4IhFL)l2n~Kn|_JzrvB3&bi@`9{JuMZSoO01^a6FX zbx}V3k}}XuaSpt{NOUP4?ri}D?XYncnVO(hu6*(-@(a)Ku2HW`{R5%BVpnjMI!`12 z2+gh^xZtkmmP;8GTA4P>A@ku%0dF>mVmNARqk{6YhRr@+=YLB785fJZ+r8cEeP!Eb%6>d+j!KiYOU4+u$8SQORV&AB9?4jpdC}YK z|E-~4;J<_Ht?Of4p1?Vg%*%H4c!3qA+XPqOm7E#jKR5yyFa47{a5rOkU35&~m3K!5 zRA29oR*gL?>{YzTo3Gq9Zu3d@58GNdq(0XASZX|HfxP-|Mj!*9YA1&_FO%Al z!M~E0fnAd7t9JZ`^4cg%(sWxb8!(FKm4|aKB%bqe*1;QCSM5ipt<<8rTG@Xu({x)9 z_6fDFeAah{t~RN01hCzSfBJ>TyxpwpWj-A2U=LStxXYa6nR9F6W!$tWe>7e-uYU7aQ+`c*WZ&{Ib7~1Z zP4p8YcfJhVi}SO(kWCkCxOE(LsqACOAOA#Fk$*QvsBY$A4dYYe=Df;c&EB<;{`7pp z+=n*hMQ9a;Wom(o@?6W)$13y>JE3zzZ>}+`M8DwdPNuLC2s$G0>ow zN5^d52o6}#i3g8s&9k|8c4^H?nziuzn!T_=Q_X>mYMV}{z-{3fHz8|D*{7jBXP`a1 zS0(8*=Nal0np46Ww3g?#n^pHIXwDMojOZh~n9qWPLHgFYn9FSQbOFDmqrJH@_jfYq z>%fnlR^uG2rCQ7KI_83(v0fU{vV05A@3LpO!I`~zBj29keFN!hxUa_c%quuT-YV?e zR%4Im#12Wfc@tb}!LE>fS!W8e0lZY|Q&CQb$d$dz+=305lv(wisO!+X#w@Y6EMHC9 zl4$Ov5mPtjW7f9Md^l*t656mvzDXPShHf_I*$*>E6udVmX3=}k#2k(FUR?O0bHudw zoH6 z-}>(nb9%A2xdj=?>Kfr_o7^(hMcgbsE(Nse{hw-^reep<-f7cO`;2Uj*y*xIz8m@Q zEM;J4QrHQ;r3|s9i9Mck4zWY9@wEJLkfUuP^BW(;fxtCQY})5!INDxPJCtRLqwPht zqvNpJacrk|hqO`nXy7`$jP}iYwI+4+ zcU401mJFY_)t{=SsDvTFpf9?pNbV|QnB$Lc4{@}-J=AdrF$j-ORsE#x(jJ}@PI5oU zRhKc^(b8v(1Kq%a*Lc65D+Ak1Z{KlTYQc-Z{V&)>4zo>h+%RdF<4*36aPRLK<@g=; zm~VTA>GqggCn58Li+=Qd{jvMpiVfpmu+yx^zH%vN$@M3;_WP;B9KYY?bR>BuI{s=K z??{?7(eW4Vmdp%Cr`U&NPIh$tqBeDoX7>d7uk-ENRQbP)Z`kH|>INC#fvcxbQ$@9! zz5I8M9LIXzi#b0<=(0ScQK}K)3=t)VUA`k*Z1c7o9gKI?EKo)1zMur z&3uEto^1bA&NXEplJf`p+a@@EmpZ|*o4)LNVX{NcZjpbJ!11?$uatEyaDB@)+EK%O zv}dg2Eo^8z?tB&nAs?ypH|sTb6Nptp68)^H6L`rLKQi#yk3YhC0?x8R}R(1sh@7h0eL3 z@0!}wnLPXG%l-64%36b6YbpJ^hI=)48~J9F?@jccvd)~W9H$>zL+k&bJi)oXJ`IEGpVJD$h3Sy_fK zj@gbovarzQo1En!@%){v(|&*sZqA&2m)Dg$6l2jw5qDj%jm8a<+uqQ80(NwAinzImE-{ zJ##KLtGq9q3th?~Ry2Oaiu)FPck42pj*n(Q2j9+gJU1i5v2iGNuDK%}YjZiL0^jvE z{1`H!kA8eJT6n&L=M%u^0I(5Q=F_i->9-RY_2v8nC$vW3D{y;+{+ex>jv=-o4wKk9 z+Xg%G!TT0yk@((=y|@{8cwK`XF8*nUZioz3%5w%Z4W3(sOjBe6euBTk`{W!AY;O~t z@XNO-=Pl}$a^9ev#iWTHznqs45jWZ~EMcOQ>%!{B$sF>U+aD@($I{pOA6t zbI&lwL}K5;Yx!5`xC#FTa~wFq_r-jZahplIPNZo&P9|tOK8e+Kc%VH}w(#h-L-34y zCh9yZPALIYyUBtVzNq9SOzf)a2MY@G_T`%zGk+-zp z>AjfYDsdbm{bWM^juUD5J9^CdJ1!pf?hqa)Wk_D_&m#wl&&kn4#QC6o;#c%hZ2peb z(huyc7V@nMTX@B|mC!Fga)!Xs%_TCI@H^pqKLnnFpMB!S=JVWg>kYSI3EG-GQS4_D`}T5|I-HLo+;TFg^*3!O!QQC3n!j671repe3C)HBR8{17=>K3)~k^HqKM|nDbJurH(fk zpKCcYMQD+ntumBzQ-rq4c`9;l%o@gj5ov;_&*tQT-_W0&sd`>Hi{V-7^dj?IgX}h! zx@SdVa~`Twr$yAcXtL8Wjj}(Yydl8+8J@49%(c`b^5_tJgv9sc4Zh2{EmE!?r;7V( z>XddlsZ;Xi%m36V>k6qen>y>UrVmBdn0jv>qwKfWp=KN@z^MojK-`;QQ}PJBX`lTMqFOhl#b~2vmbbG@oT+Sn3QI4DwD(w~j zDk<;f(EVe*+>wr^Z)ktT73GH8FXt8stjqX*8vIB%C;FV|jE3p;K|}R=vP1P{>$F|( z2kBSq$981MtEK;g^dA#5`fA?tNY+>94mwLlT^2ql*zP}G%%N!T_@{_Kf zt&3@^_`x-D{*scA&I|ea-6!a_KHP$gm_#860&^IS%+=zU$=x=4)<$dAb z+}ndUg1;Y>Z5O(yK5%cBHjBTU7rgw8_N|#Dx+b^dVeW663bIdlosO9Y)}^`+tWW*q z!%+_Bhwy_BhdQ49aImB1!y%5_|4){~!@Mt|4cAQKd^pPx$1C7n1nzzZvR{9cDXP9n`^u1PBMU92k>%!P^!Z#;{(_B zr-0Wn=HX7ElhE%^vGqH>7+uwHbZ3kSGRHxo`K`;1e-=Jay4?vsakelH(0ZrvHrD%Y z8OMv}3iqoUQX5U^A@_Oob34<~cZfaBXV4?jKXyLp-7yXuC!v8I;I324=X@h4F>=%n z3v|xPRo2t9wd1hCD>`3e|BUh2YDx(Nq4Ve+biUF0UeAIea0uIlieO}Is^rgO?b*RT zZX!OMr{NXYK{N_I+=3l~&_~$^*^S;fl{#jc)YkF*FMDBQx%=2hMprmb_OMmehN7d; z>N@u6`zzJmwb)-Ib{E1kO3{bz=Dc$YddPZgYU}#uvu{oe1>oys97KMV7yt`HdMWX> za}ETbAJVe7*s!a}72IYlfT7AECMf-Gz@A*%F6Wf1D9T7uJL=GrssY@k?cZUa3Z5Wz zw_`?a>UxtZnuR^WENmpLeCq(V!ZU*C54WS|tVo z&wI9h#`p^_Z39lg2Rm+W_k#O`_a-*J&Nu|&uVM!;x-FptbM z8n5Lpy!pCrBj%&aCbr0_jb73@q%2WnMDaDTyt*zmh|aZ*vdxjuXzm(!(Xr2z_eTa| zLm63fp|A1nbGb*RG_+;1ufpDnQ*1QIi@y%GkH#KYYle}wDxCIgWKGpzBW-y&js2J{ zp|txYEwZ@b$YZxObm`9n8iMHLWIfypfBB5PvrWilqN8K4XPoTWB=g?EUUMFDi>1N) zfQz_i;eH&@+nCxQd(l=c+2_%cJ)$ouW?V(5BD#_;WE&qo8t#=PhxGJ>z*8Lw>z?Wy zmWDjS`OMdhyGLK^(6_rv)utZyMZ&rj*VZw@C9gvWea+9bUPY!P}Z3GI;zB2^Zf%{lXs`QGZ*E|xaIUI z75a20&D;IAa?SmN%G9(BU@X1}*YQns+%3pj=pkb{JNu&SqqVSx{RH2@*Ep+P<_a+x zo7b7__Sxpd!Y=H}3eEPyDD>_BG)FcbB_5W@+U{9 z6<{yd1D!=@hAo`8d$BSFJ~GE**3D3Oy#_YKK;UhLWW7<+W1;i&~G*6tL4K2w}e zd`(+`!K?i&0nwdj^i|ny+%@E-jJ{g-e&B@7pZ$6*w(zhP>wAegn~mM!PIQ*i&N=Ki zqZ4DlB(1B8{gS)DxrJlLjSA!3m9{u?9!76}vpsi08#yoMX<)4HK{J-WQ?aVsD0`qTdrhG{k>lGK8;KonVZT2Cf3p6J#rk^_How#_G2m_W zUeM6pYkzUZEY#G+b+`53>>4u7ExIfx*P;k5dv=nyc`x%>)(3^?pQ9NoS$7A>>&sU) zQP?oVVAl|%V(d{W%06duR9X|XU*uI8zq^==`?cu6arnmx_NESC8$WvAs2s7oJRaI( z6~5I3FW;aUKB+Q(!e2f!t8PDaRk_FAAh5shPG}MR*~D6@)|A%OijGg_$^TS9hoQ|U z40x{V!Lg{PQQ@0*s;^cU(2x5C;c%09s##Me7h5yNzYW{6HtfiTc+{q? z*a^}%eZI2!^N7K?2;T?6y$H{QLd=NI^3&$G7eEV5;6DiZ&P zPe0yS6y5SfRP^V8{-P6aJpNQu>tj!CXnpjl^r@=i$D<#A>ieTN zJ~eUlhNqG#2N-nw(~LQWUS`v7Q&M9eEjbjsH=%J2ysS4Y!Zz9(cp~uVefII5=a;5* za0Uze$c-7`zS!r^V*jktg}qM8y41#B{<3KOFPrc6tZdwDf6j=7GW+7J!MCeZ>l-7R<-64R z+4Tj)Z^SkoJ4gfH%m}qve2tRw;;=}PnU>6OaN`>xB=35r~Zawg_l3h80cKp+C0-o)R(>idpy1(q{ z8gv62iG!WMyAWUGN=@^%K%=p5sF@8<%hLwxH19&BzbNlPRq-jfo;Mh|5c-tI7;EsA zYW&2J1uLx2SEpJc*4ahp;TIhZ{Ov4qx3npP{^t2rh1d$^T`*!QoR_w_vmNd5ihT6j zt7E)PYi%u4k3OlIjxbm2IZruB8vq?wHFBPUob&fQeUP?SXHME|i8kOV^+gCgu?t_v z{Bp%(Pl5lcv_X7Wo6rLUp=Bvriap)j-{(W_ytrZxV^+x6&1MW|F_tsoD>Lw8zLqh* zhFBK(Gfy+loX?Q80dTWo``y9#Dc~jiz*<(4103`*5gZ|1_iZ-vw&aSQ(WCIG#fC&_ zExD4%%~@U^Yg)fz&0HbtOB;6E_%4l`8IjsAT{Bg*!{c4u=y=GN{$o{9FYocG^JgWg zezPf0Z0V%T4#p!re|km6mg-a*l<0{b*sr+ia+xS@#uZX#C1vKbSBITrZfS%XXAh-u z?)-wht>y~!Q48|;ZwvQA+ErO)s%T|wsUxvX#{7V}q8i!L6aSrl#jWNFC(qL6M)=gF z@=3E(K5MgaODMmVIt4EnpWJ%#MTOGx$tUG`4v@f+xCZL6v!eQFy$$}`Lw7&6Xn5^b^Bn6 zOCtG1r&fBgMNH7+zC*pt<;pEn_^{)2zbtj(c2tP#;SaK*K>OtB2~Hh;o8J(#JQPvFy@ zFSHn%*<(jP3C}1mxPl(9k@L;W%$3V@@ylm4n;Lf$|D}QWFIPLKJbV`9vo6jrflkQz z9CAj`8Qw)lFKM!Nl~|{@y5XzngBNm1`Z4m<_4PJA1I=g;C~TMgQx_3~w+(tB^1A#l z@#uwih|cG+e|<6TRPVWdeDbuVoLyK`?;5}jt^NnaLm`|yuYY~J<`Bj_CQ0tOwNuLx-IP>9#SH5V|?L|+|52{ zzUW0tfTxx8*~q^>XudDr7AS${&l)mdvlAOB>}qb4b=d~WIBZJs^?&W>smWThy~mW~ zD@2yvP5epW8zTFL;Uaa3zC&OkFmMj=pxe!ItfpOqWWKRyCv#5Dj=S0#_p8pVOqW;% zQnsd=gf`fr5tSkOAogt8&mc`vl6Hyw(iZmCOn$D?1ML(zc^SI{BJBlVO~k0suUFQ^fZ zLCO|Bn736`lrW}wP3R`%&bx*Ee@jI5P1b?l9Qjwq+taG%6%XNjbH*8bDY8RD=P-w6 zuZ&8YrMd0$y^OU%Hus%wRWS{^D*sAeFLtI|3!E|bJ*1Q4EK8EKMOQR=C;HEsYlmnf$!?^E@-c;v5>oRUEIaL%9!gv)%UhU zMif{`*<-lNJU7;>NsU{Ohq3o9YD2HqA9+cs{sD>SA^QkV@y(BZt(0WC+KmJTyH)JUXAtOQ(-qjLo3M79;I(1`7PvW z0X9`!R^Xne4e+`CyPEttdVY(RP$>W0&Oe9u=H?i%nvQ%s4f(bJxa1?>zNz~Me;qE$ zxzlICLmgIsHE>wgP%kdkHnCafoxi>F4{q zrUb(9%rmEUd4Q7v>jZQ%NsUhOtT3n8-!~-%WUR1R6uiW*Ev+#R|G;)^TQd$AZTdRA z`m(>53HWHbAJz9`4Zkv}SKxFjaDuO#=>I`v_s`f<6*}Xh54L|A^}JMGmb0(iowE=8 ztJKE%+QE^1CTpM)+EMs{>l|x}cv%CqkPa=W$)u z)yh_?CHE+01QbJ8EwbbbZh8!x{27I3mZFfJ)Slk=YZ z%NT~+BI8hN!e=i8d-2(8E53SrzDjQ+^jzkV%c9wZHcX&RPOkr^E}`inTZtT22wn?) zK8FqXUmi5-@L%iQCNdZMJjC&t7&sH_$KS=+=k?vCZTfFhvR(9Ot+bCm$M>gvgWmRU z{Dki^CM72SQ&-dB2tP`{pjF7eFaN%xT4QnrN5xMl{X%-h5}`K__MKn0%xH@xB6SQr zCf5?j{!F48>xxjh;8hX2nZ$Ijw_>lJKMMc3v@v^rV*C@%Z{r_ZR^PGk&RqRptI93q zUxZ%%onGOQHR6N)=39Rpsw;ZnrMmQgr$_1kUMh$G^>U(BZZ+kEan>bk!h4M}q<>#E zCSg5{$O1AKgtiNhtk!ASW&MhjOL~!vQ42h+isv%MP4)&v_wo{b7M?5g-!Hlq#>#ww zwa5b#w~1UU_9bCmgFPhA$QTEqeVXpqlGL~|G){Gl(@*ue_CsRRCs!bx5__;p39&il&{wn zrHG%1Pkk*qO&dA@U0x%vg)16a^4IJ!Ev4`KSK8B5AN>EwAFD+b#%Wq%Ewa(^Esv*u z3Y`sNQ!ac|^2CuR$`n=jsAjicuk7prn0&|a$%xXT3;&4>_^COraj#~xckx~7-FJaF z!Tc+AO8wmoONH%E$k77#zxN<9v6|D zT^C9Yc`j5wS*TfTvw1h*WbvU$SrDMD(Ypmc_DlT~pHa6K?P0xGA#|*gKCdUQZMQFn z^-jFBS;oIG+mt5XNq^GlYe8$=c5jv z7ORhe)bUULsSVW=OM8HgUXSE$B5xCU_tTzs@=6&p9`ND#S=rV!H@>`$z^afv?g08c zZRq+OC#mmvViViJ8jka!Gm)d~Oejfeuv{qy1z#1G}&EophoYjc^ zd%)M~4oE*F-xAg;$IMxtrfAh~E;M8Vdc#_DanlEQKW8is2%Kc?Ab#1a;Xe(7^4(H) z7xI$eU?*$TB)%KZ#CoB9a(0QN&!Nus@YF`Br))`1?Pz0tU(Ek|fm0SRe3@@P;$?M) z#!1F=iIy^^mN=veoIA@HNq#$VFkGf{6Zw9yk^YMgAWKUwT+beMIk*aLh|R#kbS+uO zRavhIuGW*+);ci|2;pitU*|~GPz&wuq7HOxhr;VR(UW{8ap2I+Tr2$cf$`f!U$WDb z*hT*r1c&9jrEH<&U&T**-jIEXKFCU(8@{41=fG+;A|ncYZi_TG9EmkG^rWLhlRc<4 zs^%y%T0VO$1@!%=>=m6(_BSU%A0&3dZg6|kze)~SwIpnA&P`m0zC!vXV^D@HYolMm z*VaAN@!I;Q!gEpN%-}H9AbmJ`pQ>3HvPCGN>|nacbFAgGB)jahTbM`Hzr{viGIaF~ zVvnKMk#fQ~+&kt4{nGh@B`e=8@=`i<0p-;K*8ljHvVI0BkL+e8eb-%2n|r@Sn;~@-A

q%kNn>`nz%SN84I%$}?%cxZl>M#+YL4@Ys1f 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

!zDiwreASA@=F6i_x#Ri$?O;B#$k9Ew=EI%P1%C zlrn~wE-5$Hp#Qf&Jik&HhU8n=v-$dKOlTwxRa1ZyDo9~Yu7+5oKxlH&y z&b8@fM^c70u9;8D{z>}Iex?sUOtC5Kyu@hxNA#zC)RnC%<+jB4M=QOzU%`Dh(RTee zjMm3sw*LvRfB!7)|DCmrjOA(SE5EO>^%HACOW@bsLjo_iO|)msXiySAr2cOB+{4+* z^LKFG#B8VRy20(FG0qRq(oULHfe*l=&h?#GdFT4B0q@Ao+IDyHx%07xJZC-bjB|ev zao5S&`jNso+}UUUz7>21kV$7NFW)*b8proGDYZ0=&p9sS>ETI<^4rxc~8uYGuA)jEblKRmK*&a zS_XYOMW^fgeXQNIgh%LWe${!GJUk%=4s%A|77GV~!P(}Pz`Fe$G$-GFO`9_RmSu~c zo7VD4t}l|Vq=uz`oy@0R_~Lu;#Sb~x`Q|uf#_i*j=lc#QUbF8qmra`YB_EKtB-?Boyx_mxgM1LY z2!3Q=rTJ#tcCTM)xV;}QcYF@Kq;?RJ_)Prv#>w;F@C(=u+y%D*YkD}1^~VbK8jth_Z+g?-B)__Y&5US`b}q_|9aaO4bY+mo1@vM&`ako7kcG0z90IG z@4xzt??=x5U1Y!P*LT#ZdphbY{H*-q_{Hz(m>Imh@AwcMFVz?qYld*T8vp+>cINR> zR@cLSo|y!mN!Sx0EM@`J8Bp8+i3T&1AZD>D5j8F?6RXT;e|cs!Fdj`t-6rduRj%{cVg1%rnS1g4DEBn2{>&t` z?u!3o%!N&P!Ckme?IqARXVrL@7F&5d`lg4neBPxYr-Fw!K_AM>@h(kqD%sZj9_d|L z;!yRJNPd@h=~KFDqe|ak=Jz!5pX^=whNkK<^Xb`3r)jDlGoLE)e+2((<3gU=Iq zYv<_(^u%nRjDT~AutVa7R3{rQGdwUMdN^qr2> z)H`QtBV~VR(m4CY3i8F%xabl#EF(YbjhTNX{-LlhTcF=LK9T;#Pi{Z@|7_UF@v`9$ zrT?Z+{x|)J%+dV zT-r8?+ub#6gurLc56T%`!_0Z4Ge7Kcwdq0jw?WE}<6VuTtr@1wSiA73a)6}Q$ex*c z?D~a%C4L$3O8w%~t%)_0|gOO;C>i=3{yG580(m~UC9&Hl^V=@)4u#lA4?SU-Lvcsv>mW00|e z--8S3@6qO$iA$RwVjphz+l)^+`ub(25Br|z#3A2>4VehJ?=?SJqMSrf3~on`Zm zhFy9+zS|B|e2o8S>%3z3pL~6GRX*l*2fh&F@7MM$EJN2dpF77FwAgoT=bm|VopCGo z8btRhI3NFg|%(MvL4r$Hq%~ktFqSiA|Z@U6Hv{xbl$6 zFXkTZHUB$F6MdriOWe=bvWBPVX>y*iN5<6UXKvGI;(qt{mbNDJMar!{b= zBpSS4($ea%AMIX$n|7OcM>yA8&B{W8&oYthlrCi*4wUF!A7*e+zE8nbQ1hXT-! zv|aw4-2E5_JQ?6|Z0LI0U{4=ac{5B}k$3Dx=c{NS_Kte|yIeB1Lf_n5jph@sBkc0! z)TONOM)93eiXDBo=bpOpBGVbfW%+Wt_W`%~ER%WJ<#ix!o6 zB{bxM#`EQU81l=wNn8ZjC7g=B*_9dKE#qlb@^(YjxU5kN*E^T)C%ig2Ync}~cvmC^ z`-0QiXLBy^o+@^y3w3u@ggp5}Cob!72FFXCy@gJEpAEt<%V6fDf&STr{y7Ez0IA&h z9MW>w>8zKv%KaOkvIRX!i|!lFohSPH6ldG>fu-oqyeJrvIWO zY*;JsXXLidMZ!<$FV=(`;X(y z?>4?Q!cG4;{^!~|Ip=9c<9V7_`?=d??9q5jJ4l;y&-C2y2A|$>iFb!?xHI>j=G{?f zc+@>k{tJi`Ti?yt@Hb+!AK>3>WM{4ckCVA$sB!nWRpR-U_*&BC{+DSBj7_}q8Kc*4 zzgMe|499<+!>F#or#$-=(>AtcQ-2PN{nt-y>2^%{=uCWjCJ2x3v8>_hKb|+uf?|*YV*g z_uLm#Hu;R>GoPT1dHlbQPsxw*<@qt+_i&e;I~F@mrtF9${H}73eT0GkR`;=)BZg?) zvjE<7ZHE`%qgn>{JgJX&vhcZe9CruQ9a7e7d>g7e)k2#BgR4Q|yk$)mW(15oH0sFk z?r;wA?wCtk$tQbv44UHI@g(&~{%6*wPF#yG(~;o&3*!{-l?r^>nO*GD#0Or0InuF7 z$4BUt%uZ-s&-3nh9M}thXAR}%Qf3Ni@;1eOCvQemrh>7Od+P8zA3%)&*ptC3NGjJTZS}T3yzk)H6dnVpWH~CWQ8hs02_CbGJ$hVIC zIp8LTG#}vr@j{Q;mD66%!e5EV&)N756yJg3hZI|$dfD4FuUTl?LAdH-G%0&xSxNE4S#@_;N+0&Fd?-`Ih*!b9P8OldQNLYfgA? zN}ZU^-C*R6&!@uI9e?+6Z+KEBynTU#ahHC1xI5sPvp!Y!Ze6{1m&xAFrQIWM2;Sr~ z&fDR-thsCw_w1!_1;)8%J5K5~?;=yaz$h`}*4!8$SETawi<_tN-4LH|?vC~IUMQPP z{jvHAb`&paPKbk!?_r(_4bZ0aN&2Ii{lQO(gy~N<{Wj>2F(+vDCt~%-pg*3gx!d(O z&yB)shMtMO?~)zxq?m64Cwpr3-mDf{%sD%2?Y3I>J!%b)$vu88>%H~Jed|SMf_zxS zzxaa>ntA1(gAvL`UKHCEkr_nhRCmkOo4r+MATLl(_Eb{0$d-b0kxwOGqKwsx&)35@ z11D>d{l+rudw4f`0K-)f4$438U3K+to@s2$A zXF7;4j{6onMq`T4BYV+O@aVzMg@h}ZBl-M4&A;d$YPho`-=+LlQGP1*dC`YNj@Mc$ zR;xW}D*dP=%}tti3~z4HC)t}Jdqi`tS9>-;>Di=5(SwRSa+rJA^wFG$HXM6svqe*I zv;k8-ZxoAvh9lZtsrJ5~impN0SfSeZm~YvWc3806eHp^qE^DLEdj3dl=>~LPQ~6Gv z=na3;`*7Kv;O}aENa`l~yII=hzw60OcWp*3gbPauaERUXSv$<|B*JUxqm0P zI)Spr2=p-M_~P?+E?4lik=MwUF?%#NW|T|vcvqP+;S@=`?})TcV8{mE=dAuVtx$M> z%KG+M_z<0SH~6TyMx}3&_85!Wk@!10!E3$?I@I*n85q^g8NZCH^lv(8!$xQ`Mh@W~ zr}$)-IKm&Ycm9mMhtTOT+IP@5kzeabKZ$TJ>3<&mi}B8MeDK)ugzfm@*r@c<#vbyY zEMff2aA$MDXZoLkrJB9Fn z^rX`N+&X-Mz%^XPm3gp9-sK|wSi)aq)!hc>1X7qK~IIl1fjxZKPS( zNa~`0W<68rUxAiXI)AQX0(~>%CegP=n!}7^jTKy&@skM`XigOmP4&eS?u%#K`{D`r z#WUu8@r3Po@S@rTFC!d|(vkBnHI+_10{L`K?rhdG<&HN$$7Uk}(&QHF3 z^`X^H!ZqMSzVjX2%{9YDC?ETlCc>ZKALLW#@X&teNcNA8P!9G()#!yQ{v&%><(sj$ z(1DGK6S*x3`7IeaZVTf`Wi!&uH^OwVR)=OU9AwlLNvFP1f=8(3v5S{KHRPo^HtKG?fW+LSgb=!+pb zYVwz|mIN86&gbCgh4+}_A!its=zL@iTA%5FCmN?W{#f-d2rSIy8O@w&lgHG_1SgT_ zIcz4ij9G5V1dnrs?fS1le{d1@$19<+zILYE+t*Gzbw}8@dM{V?Unli5w#|dQBLz>b zm#cnASa@lKF%W)TCBAWpYyNNk$lz2*Si4N&&`4YFpeWete8Ns~Fa?H_7x8qCcAHfOCT zG9SSSIGk}B^Qe+BZl?blGEC(#Xl#g#xw?aExS6-iF=?k_smtK{xcGijoKGDZNi&@yw(97pyyjW%tvcg+%+1{y~GDhp=%qJH>@=#Qjd8hWNq z`t`(YnLFnDiz8*fyOaIyQ}Bt2z-utSEO}?X^jpqu`r^iE^P4VEG&e3jexx>EFHDybj{xggHj{JhJmt-_k z&M*q_Nsn)`6PP2=m`#TZY2T)|wtR*2%ZQ7g3ze_NU|0g}$J5leCqPp|$0sY?+w>XV zhUnwWHjoE9&r)sJ`SKImGTM&bR)^iz>>t)vMS+?>$MxYR=F=#?f6^a~G0}KyIES%# zVkSOp8RIWb*BWd%Wxi?btA52eW@qP^|Kh7aKbJi=zUCxd$KTRn_{f0y{&-}*@2-8B z^+jjiqpP^tiJxYzzIV-tHw7LUyUJloFW9_hVh?ifHjz=93(+ZI($iYb<&>P zK?%-0>tqRQ=-)a92j*x^t$7_=YVu~0)@tBAF#2>Hf>MP$y`B!T4 z7=v{8)k80kx?MVFoY>1672cl6V!cOr0=fq5kyTmY1x3f7Wy&U6vUh989okl{zAdj~ zV{Kl#q|vqs`=rZDD-AiAu%5O~3!U60LI~l`r=uF^fZZ0Vgvagmn;W5I;n%7*R^fUkU z_MQ9a@M`FUJ1VjBlkcv5wOMG;J*j{Hv?lPjr8e(%=rTCzEEE5IICU|`*j{LzyYf2r zt;yR#p32E~c^`P!x4Pae?CE+tsYlnnTRYciTep$tnHk{X{NF>fYTqre7i}rYsD!`F z0AHuj&$lDs+b-h+y)>kgCcHX+?kBDf?Jub|#im8OY3&>hnr>w5o=ei6 zDW^^Usq><()G6Qo>GQZhfv$tQv%(*?5f@x`uDQ0RBD0BZ<9XuRXU&VI@$PWt2TE3{ za5zmm2u_ssH7(TQ(i+63Ex7DXS!28FSYtOnpy2QiDv0g^$Eyc9@VlNA_Wzxe? zMaADo*dE)9DVMl@ne==w^9uYvOP@`7B~Dk9HP^RvD1CP$2R0)IW@(1`-n+^e_+LGf(Ki*1^a)R+46DTDXF6kg%I@0b$nCu=MlL=>F@c z@N+Ne;N8^!N7k2QM8HeOsfxa*f=iKA1Ddv7cx&V;i?*=iME(wMq%7^uFgUxfq>gyH zY+?M|p1IL%Pg2z0kLF*OytEzM8Qz?_)#w{opBL=o4vA}M@$4?$IivUg9CnVNLn7(TB~dwrzba?_g73KJ^vowfJ*a zK8=J2&IH!l$9&Pfv}?!5)0>yJ4$@-e{i@>Yw z>!qKZHHMpccSXk61@7EAj@+c6FFKcc0#-ea9`9jqwm-85{5Zaoa7AV#VJ#`^8vV}x zZ94ApMTIT|K7q;kxG!4Bx8M41zDbR<<4_59ui#WO_81i--ZZ$A=E;1l%$523W!kN- z33hq(n7pl?WBQ^thF~kZJ7>1kTQpG{<;o6(J-c)2N;GX$Drr?qJhM}h^$R6j&G~0l zvX-0Ta>Tw}8b0it7p9P2OuBn0-|4YBk9Kzb6=&%7J4_-YiwtaVhEcp+_2smR5%o(P z=wHF>@`5Dw{}VQR#5hN6yz;IuFh<*I|*1?Ku6*Ip(?)ps&JrZo;Qy?2J6N&f9hp z@$0WCzd{=YCeFN3g)49LEWTxZ^4AXD>aQKdFPUEwKPNv2Kb@bp)$a(*iRUSDeipC$ zm-;)|7w(;`)sLDCuVRlU?^@`*-Juy3nUPd{(edpgEO>tFxY&ANpCQ3N`}Fi#$P4mo zt|-Z9XKqJ&e_0kpx9rxCThTiQ;a9tVlX9};Nt9c)wcfDsD|`PU@}0T2(6dhM6#Y`C z!lMWLY2Y%RcWdyy?^ug8=J_}B4=?DEf2|<=75|C-w&AS2q9ntOd~yVw$YF9uFZfv! zN-@VY5#C7e17_cXB9pVv#Y!a5NQo6MOe(`3=Ixs3wR#mlR z_Cnx+M=n@h<(ZAGYkmIq!6qG7uF}H9$I9PkmB-fsL_X6$&wIGyBW<{TXU=p_o<6J? z{nhG8j$BWkQ-$$q8%s}CaZ@FIunJF)Pj{)fQzboBg=eXBjrv`ALsi@vj$BvXa1}nw zkz0A27S4!+v9eYR%if^nSS1@u-#h7hr9*TwdUYc-RpD@i6(5M z%ejk@mzWP(=*wkI$?_(fHZadX6O1i74;>!X)?5ZH*mYh@og%v!TJn7HYqXoS~?lNCG*K(K6QYXw%rOZB3mr5;1|ASw|~Bh z8x=p#>~Jk`4%BAEr~2u(+I)qv={JX8S8a+sZnrbD4|g$HOynDF=>Ph)&bv!84M&Ih?Oy38Y^5zA?VXBP+6sRr?{KTJ7^;oz znyg);zohW;F7LJ5`%U#$pKj{GZ5R{Nb_28U#VxECUf%K(p4YGM(D#x_S=Y$>9x^Ah zk7+qiKc@M-#Cr1S_dx!q-#X+ySr9;D;hpqCaSm_1o^xFX?YOb4Tq1W9zT&volf7y=a<(r&-`(9Hj5e zpKaS51yOkJw%~McRBZTa=(p4<{QDf*Y;bs^GuUql4!9%T(7bneeHU}h&{h5>tzlD|tl5w^l8-qD$;t+i%=j5^$Ba5bHd9# zg3k|6R`_hT@Y!hMGcB}Fc&>%V7xCqs5{Jk5^%jO z&%Q;!r+@i(e@OW>t2}!zy`g{k*M3O(kyd&3N&4gc%Wof`e4@NIW4NN{AahXGQJI5T zUi^8-tuI1@zWa|{Umm4?wKm6O1ECS&3&`#>j7jWU%9HYWp&!s4MD#y%~^ShZ}jAWibpE95PW0J!0GBZUAiDQ|^lSUK#Uq68G+Xp`wDD-GJ+fc= z_w?)M-_x(34KyC~!5ohqYdjM6aWlSB@P6<7xb;YQ-{t*c=o9*h(Ywr#xxhKl{P@zD zHr1XZX9BC5KlmOzWn_Jp#(9`C_>kBoCC=gW13wJLoEwjX@#&+$IN=AtI4T~-inM+( zR(_&j;@l!!%)B#cDBJU}2VT$u4Y}k^Ug!wl_z&w#98tlGEl1oDjqMNI`;T6aN9v8M zM_W?RZ~a=?*Eh9yh~NLO_&A2M2=EBs`zLzK4#I)2N}?OTO6gbEqQ1If=V4uw!`P|o z*f}_`cW`npmBhJJGCKZ2yiKIn_r5amO`-MnT(4=X-n=HmJeQET%6-KdkvXbe1Kaxc zGr3#sbk^_ZSGvwoUwogVzUwzBEu~Ko-Y#KROXRxQ+>m}}d;+)QCaFLa7urnGd zB`(z&buUu7gUE2=&LJ+%8Evkx;229>A#oF&(V_|~Ulwus#7%Z`mS?qbJaK0dH_aJs z_gih8MBM4bokqKUE8pqFokrZ5)aSSA%O?&S`A8vU7h3twA#NIRrOs%j9d|x)#}juU z?Jl&+UP9bt;x4C+pIGfKByIw6i)q7-yNbB6#8uPZpIBwDB`%A&<@EQ*R)23Gj=PwV zn<@KaE8lA3xc44e1AJFlZQMZ|_ctST&ZrvG(V?rLi7b4n>7&?7Ej|Z-o$CG{V~6MI zzvM-Zch>9jkG}(KD7Jpfcz1B;Q*@c-QuaIjfE%Be-#}ND)&ALLdEWZqzBDv50h$>f z+QJ=`o!D~}IVaTNxV-)w>L_yJD``8vF1b6BwUzrx{1;)b_%-z&q8$E6-+H9#dThNW zhUU`Fx7089$2$4mOL_ru0pygT>YHb0b#eC+x#B(UWqw$jY~K6$)~si&Rc3VPMDmOO z0%=>-GdeWKiu(t=UHkypu!(Q63CZ5*lFAQyXRZNWn-}dqNo!cnT}J!+1MB+` zb;;i0l6+OZ8#-FTJ%enY_prX!JuGKt&h)A1@z7n)O5wkxMjJU*SNc5Gw^=UqdLH7c zC{vs)@yWwfd~z(_rSy9$esC;)sKmRh{H|F1NQqCi;!|Vsqa}W*6+biiho7_6F+|_0C23nb1{d*N z%(s(o$5w6d+^vq`XY&ouPJ(BX-*IN^9OLctdW^pg>(PVo^OFN}*pH9>>M6C}wokfG zd^gs&bH3WjdFzYJN&VLG56=Pbt(?1>>H7GG?Ydml<*Lc*aXkB2p8o8kdD^p&NiLWRAp1hlZ%l)K+D~-KL zx0y-YDLM{mBT;sou_-18$^Pi5`@iE9 zkB`^&9b@%5QNFzs9iabz?Elt|;C#v4U!H}`sYs=mqa)Z{_=;x zsplLC=a;;3&Db0vhc5!of#h&o2EPnAy$Nt?z$tzRdSB5^z2ebizx)weRAicLP1`!U zLBZafu;*Evum{bVa3t)nD%jaGA4xl=P7z-TGOn^8olbvRfmiko_I}jExAdn1+B}Z_ zv>xuA(ZzmL@=U$Rc(|1Qq#o|&95wJ3K0NA0Cik$no7py^ewIG6{`8s=^&-dZXFgm5 zFME1jLGC8bKmwdkZ^F(MKCxhv@Ndp_K0)Uud7fHdkQ?AF+^6o^m0Kb2x^VC5>H1x{ zH4^52)z!|P(^pd_(BfUCQICO*SQm6H_r9N|j%w_D=her|efv+O zKfUDY**tiZvRd9FV!bLRPgbXP0KMdbI@0ByRtY@j9mYxOPC*|iXIA2~XgO>1INtvn z&s#YL@1_LFpMw9V;+2KD`Shz1c=G9&oJHmXV+H-{k~+zga#LY$_DxkUyKa4jchOY8 zjG9->H|?Zf@{ZkkjF-ISQoz3f+$~mFL&`3x%+urz8}1ZoZg-}?YWB;rZWoc}qHk}I zx0v_8@S~cNMc@4NZB^B5o+adtJO3GJ@a)C#Y}RDqL&CpgFCo83pxCq}lJky=oS2St z##gbul$|%YTIH2^;?UxeYT7COgMaRM;-SCRXC-H{s8ztz8IfK_1Ki0&z zrY(L<8|TlA*CVD$z03uhPuOpFiq0lcH@|IFY@WN(uNtD4$9CW;#zWxG-tD?VLqC54 z-)m`4_|+P_U89n_S~oq0E#ICXc1$9d*n3J_hhyvEKRd+z9y>a&IJ*lRcrxMSf^HOXivUL!WK@8~7ph zaCakrWKs3Ge9O8cJiv?}p?p-C;cRsVITZRAdNKJwI8U^nwC#4?DjdBxyMBa52L@z>5-#pc8>gSsni%#pTTWt9*o}e}SE6wMTu*hK!$~*ZD z;upd$s}nljiw;`SiGM4J-?x<6JJ@TM$soL)xiI>0@Amdlb4{Bsv9)f+Udx65&Pli4 zx>5A~DVjIBkn;iIMH>D^3$nF0J;`eQ6I&N= zoq`Wi>>T4^lluF^rt0>IygHbB3Y(Sf{WQ+pnG z)+}ssg_dM)ZiSv2*++`LwR3nNjDFwL!^(R{7eT{9TdTqQit{wtuZJr)Yhj@m8~@aA z${D)QKX*G*;4}ExNX74Ws>ki~OygVLMfK>Z#JRX*gzt%LugAa^Yw8JJPxY-S6L{~f zx{bbZ=drqme{8419)9FEeb>wQ8o+}dV5y-8#_tYoC~FCYc&p6w@YKVr-}W5#zl|S> z)Fql0F6QTvpUYJ$a0suQMw`VNbz(Cw>B2Xq9XD~{Zls$yX`_#q^X)!I@jB5{w!jNq zBj<`w;jot6UzfP(;J|#{eRiz;ZmWD3{|4nX&LiX3!TAYw_|(~VpB-f1`dma?g zhx5pcV$)8-UP~v+Sp+z(+)Vur?CzLf@wD*gKDc7~$SE?nYN77fs9nKGtac&al!-av3P{`J$wtFnGPRr<*t;hHCl!jdno3z z$2$M!?WG9voaoauCPULo^wior4#0Cj_73++PgacL62=kJt?q1H<8)&jAPX z*n6MNetYgU-O~!M0Y@fJ8wl@}$3ailemFfKHs$G|Gvs{0)M2NGo@OtVWuD12JQP13 zX_-~8q(9i4;&{5Zi=612iOMxkCmJ5$XQW6MQy z9y{YS#`I)sy#3GQT_=5LB92Gf8?^URq5)0YewCrZt=x5MdM57z$@7Awf1DC+MAkvx z4*7noXi3&FP3KCyYDKOLmgN$j~meFD3dG1r=lWk?D*6_Qyy`}f1;&Q>C&#h$5$j;l#n(utU zynpa1Yp!tuzVLj?r+({G3jdxfTqYf&AMJOCN^7%l!J1N85Ub}->WTPk`s!^(rjHb@ z>-*M`|Fi#~#$0GQ7+1EH{YN}ZvLErbTVqFFqczqJcEt-Scl@%fX!(;S{GyxFcE(`x z?~b+6(He_y-EGko^?Adwu=ac`?B5p4-|^d6e5*~9l+FH4tbYI27>wRfEWWilR@VDu zES%jG3wJcd+VXFS#W!w=)u}xmi|=?oR)6ApZ1fhHHbB|Xfvj`i;V0JS?^9&{Sn-1Q ze!PQ^J z(ccSU0MeFEFnHr6Y>wksX@>gN89$o)CYVHxk|M2EmQ*lV=t9MCP4xmXLu zZ~CU|)tOvh`5aZgjXi>0#@1E%>@t&-|AzRzmh;N~cT${{{l6VI_P@j8xTXKMGtfW3 zzPA4z82!5b-){O~WNTsl>i+S%Tgk=WUHcMix6az_VD08k?9Hs-=oWfk8LsRPX6Bb0 z>_wW_Oz3&xLq#VB{uSEs=PvInn>IM&KMy}VA7TS8Z;5}&-c#-yeGLt1gA2IV=-g_^ z*>fo}hSSHrM$Uik__4ZY`n9?fX?*G9Jel+@dObd~>m5r1WreIS2QN?ee0_-){W6O^ zej$3FPoYD6A7|4qeI@r$u;CQG(J{??SZj5D*Rj}pxU-tDp&d4y1*RRU=5$2U|2D{D zbQgxZF87A_*I}2`Xn0101AIG#yIx{GPSHL35XxXLT*TVng?^8{;Z$QSZ^@ht&(Q++ z8jXWmjFYt}@YnAJmVL-Lo6}iOlbHv+HPVcXW6O{4f7bgzqugP5KXxXR1I&%%w1 z*q0*fM*gDsp3u)~XvRE;rCl8w?X%-V$9V8^twn!S@$A2Ru4MM+HJ6)bMZ4Xxvm#l$ zq%Ove^P>KDZ@#4@p1*btzqNT< zGWk*hbEKZuv92rps$dm;f(u@o z74$B>nlTl>OfA?5yEJ@hap#~J`DTB*>tt!SF5xYCJx3EeyM8#Ljd~w#W!>prdM9PO z@GaF>--+B=!ER#zsH4>PtTTK+^%Zl^-E5zG?v?mf-Y`PRXo>B!uU#sBJYDNF*&C;O zwA;%li@fBjZp1!fNy4`W-y?Q9cZV1Bm2Yu|Z=`(R_f1-OMf~@zTKKy7?;0(9b^P~w zP4*nI@^@+BE91ZG*;mJZ-=~GIi2wev7A}wf{-qX%Xk+y~s)aA$TR&C{pC|twEqt#0 zpQwdPY!!zsF$bp1_d__+9dZO$-z+gQ2R zoZ(E#_a|p~qWr(>VERH1GTLwb!JX_k8=lpU}eal~}!h+kT*)E=>#_t`6J_AYuZqm`GcDU2 zj+c3^q?`s1vGqSPU*%W%gvzh8F30b!%Yo0%Q}lR|smE)>#@X)21@Y-yRQmgI=|!ab z*lRH+N9YCHn^gX$p|Se%;_7Q}RC2uGX04}=c(_g_-!9rYTHTSyRNWuP!E$U|-H}JF z{ssqmzKY8;kv#F^Zuh zG1Mct2!e}vIyLau7Q{Zmj{AcC>`UX0>0(7MVuv+QpW5#$%8)&W^hw&5J~i^s_fqjm zun@laCt%QxVP?DJ-7alKpntn9gM02aE!c5;K8u}23SOH03NNoAf7p3sERQyJM!g!l zVR3aoPo0VRkESm+?pEc;$Cdxp0Ojqm4c?{l&yCCf5cw15RMDM^W@PUCY;3IGchfJ? z0orqFAY4~&D9RAL$@#sUr)!VrWQy+ttu;X>S+2%xRRXROalFigPtnoEz+(5seTVAH z6LE9uD)RQF->%Z9#r1VzeEPbh&$)}pcP8cHWf{BP$~E*4S<}=XL8ET=iZa&X&nkZ2 z+HnQcB{JS*Y_2QOdp2X&A>VfT32CuD1p^9Zd|dX?+Np6c2Ui~*W;gjJQO<_beVeK) zo%(H@W|3#0F>Aj?&3R<+QRcm5NqJ}%-;yNV`e~$l0oW?nq=1(!Uv@+`d;znso}Hn4YLmX zN||*OgvG~u+F|Kx%&cg4nPQwqW_$p4Un z@bml+G!{#)E6P|edwuqI!k6S;Z`Vu1PBneGg2N)lWy3BtE{XCV@3e=7Z$_NjcDqj* z^vNE7JMPg>d&kNiD;s>0H`f0+ z9-W6?*}wd_A5#8ut30|4{p$YZT|cD!rB-=#B>Hvz%SS)?0q|d9l}ERvujpUC>xY!T z$SRMHN58Ru`M>{=@)ug=(Fy6d^e?~rhm@ahl}Cr92l|)C;qdp5-}zQ~bWZx({^eT+ zC~wndMS%S%* z(U-`1W6j%Vj*#}(09X7Rvg^0wZl)bO{4nj?Fc%dmm|lv5={oZ2%;WeqIqe*^SMd)j zmGi4@pJt0ssMP4{VX4u|>6dbj&v_2t=s&hqo_cAt;tVT}^j7j`vtFf8XXkh&i^w@t z&P2rrG|N|N8GW$VHG7R0eh?3b4fn=HMdi;?udMGncVL%e3x$7XOqKfEd<;}}o4=@h z0dPuPY4|@ApQ^~eGXnGQp-O$LxLe*peG8~ha3-)^K1lA#i$7imHpxzOiAm@Z`=1#f znxk;k%sbXWbTDJ^4b?iT(7dmo_N}*E>RwFU(r()~-txU)on?;Qmao&_~7qMwv-PL#V+uh*9CJ*dh(&KW`c*=^6lxxiS6-88=TIlrAZS=QRv z*=}OG;8^PI1jaLIQ{*kN1C_W2;^hB6{%`71?Tx2jV|!G1QuU2JG6tf*KY_B1;8pI* zdrvQnPUl9?HQAm&8D2Ujm9#qrr`pT-NrN09zCGy zh@C%hXNrD*#NDYV_LAbW*ndW0^jrGZW!X_m*_j8ukG&(O3EZ)~d68RjjWSpG#jSgxX2p^{L%Q)t=qIHquPnHuC+Ru-p^c!~baT*?5-F zUq5~RXf7D9%b<=m= zPjxsO%O14i_U-qU*LL^shv4lV(rsApA{-CvdcJK~H}8+ZDt55;I4q8M%U`w9Y*=q5 z-M;Ig&ZJ^AA@6`LC;dAUCu2gZ37g}FKh2+5Vg29q&zdKdQkOM8f4}Ce@@%IyfBz-p zGbZFGUG7YEa?eY?udwP^{E@fZ5m7L|YW>^i+80`R*6gE>gtU(s!&1_1oD>mOIFUD| z#)jrvW%qT)>bL8avUzc3a}&zWw8|EC(7%rrY#&+wb{!{>r;~eZwT{Lz58)0geIjdx zz+v~l;-B7fb;fmco-_`-Ut6w9=j=i7+`KqO{GRyR`i^R-z+)ns>G%hd)@9*Y=3P&FTC)(Yx}=Z(OWpeJR@qp@+|9&=$M|- zStjq=*7kd7Ib# z*gWqjt~jgjZcHb8Gda5h4$eE&+3R=Ls=F%tD09@aEer0*Pi(j+^z4AY3XCS*!V{n4 zdmrCp4TZCgQK=^H)JT&&1+S}rAOB*5Ecqqg3;&e=w%5GnzqaB!;ES6Gcl;L{7S2lS zdDe3g<7Ux*&8yz>%~t+K_@va)N!*(479O>lvWKLOF{#lA{>j~}qc37>fvmIbY5oOw zUHqGT{#{i@_?Xbbo5ag}6Mp`hgiZM%J+zCk+?&wfKGWQHoWfh$GDd<^87F5TQ1-rE zCvndcUWq&)WA+mG6&M4bS^eGVEnjBA-$Z!VBL(IfevK6u_*CW7NvkAo@2FA}pRfF0 z#TT7_R(X=OCRGrZ4BS5E$;Rh}D7IL&m9`cCh5#Zv@^dNp1WhCAIa7Dx>3z{V$G* zmTX^FHqC`k>y*Z2-BnXx*x(|MtMQBdN#t>n=YuiPH%Je;sBhPa;r$XO@BUw%7*6@k zx-x0MwZyn$PYU)y&yP7w9XD>U;sd3|BYS|gqbiga8XS0Q>R{>})cQpznR=_H^_0-R z)FIeBP$mU9s#8^X!wc)m_9Uxt$+mT6Pg(KOR^vIw6&?Q^bGU>yrr{&cY>#@Xv#okw zqRz=y_>Y8hRQL_)r=90T;;nGWo^@rVQ^=F8`fv7UE^SO5d)RD`@Efm6AEtiy#%t7p z9eC-nDsM_V?ecBH@cO#4Iy+4KQ&zYNSf(BazRs8)-tdQYW!+Z%8!yxDajI+;{~ILF zpy}a~S14=6zX6a3e)we@?-+IBjo3NzMr6_f-MW`CjXBxz4SdDGmlfxlQ|0@4HUC>UZ|#^mF51c)!M@+A zxF?AdUePi2(rA+v_k`q|J}xS8`U@&wqr{!6;wr4Thb3;-IFpAp$oVzlsm3*05khCi{NYq-#<_(bcUEIzS``46ubTr?5>DPi>Br`vqcN1UIy2z!Ng zc#R$3_Ly4NE+uV-ruIzw%W97&a&JZJnHNZ%_MR!Z%k(E@+Upfk#y&4EJ}I_-*tQ>P z{TTSXd_MS$Uqj`toV4S6K*^mmsoSqN&XTyw<74Y^&Hdi;>7+?~1!0ker}8c9S^S!s zXd^U%JhBd5^v*dZ|7^7Om6w3~o$MobvTtnsrX=czhnGnlW8eH=WiKRc6-|!8&{?l= zHiSAG$uo}sovcC4@Lo6ThPe-$uJ#cN?iJY@KUw72Z1LviNwK|^zEQ1nJbKd5N*T%f z6=6HCkMdve-ALJ9{&%uoZXQz_-36Qim$pNVzYmxqX1+_K%fRh=Xhh*8W;^wM7VqUY zsj(Hg{-4+R{B4F;)k{AQ8gFE|G*y7B~E|L zj++n?*p#i>xX>>NuQJ#5@u5EwzS#^<2<^7Y{ek~SShqKE2e65IAQ!b+^p#R-j%9_+ zZN_v5`5KAS2U&MK=<|HiB(B08i#wmV=ZM=z{!ZW)+*anERi19)R_wKkt#X3rIfR8j zNgMLrLb+`Ip| z8HCS&rwMcWFiQq>j_>KM*22A~K|fiw_ZGjP@H3VBq$SCv>aJKO_Nu<5XDi^n!1osY zFzt-z&==vU@o}?>6Im=i?lj^=4(q%}jiJ!XKZxsKtU3#^dCErSlAqSJ>>A?52B`D2 z6qA-atn?R{JDqpO%F9>>D8CoGsS0pb!gqZ7t9JTEm0pmL{<59EMx~#@ccfa`M|NF> zZ4@$kiuh)kV_Z0me-HnkEcS-)B77&|Pfv5SbRVy`?4PW)I3GImWEroHoqGLfV2>2m z=60P^o4dcXHn;oy+T2ertj+!OlG@zQF0ak~&%)Z=&llI`9=NJDx1*Z>HAyZ1dBxfC z=}Xl2oZiy)l-9EELB-RhJ~<;0x|xKp;Vxjb=bG5uiNAKyN&FKVzN{qeKy|9NK=d?9 z7m*SAKjLK$9_C->-7m<$(5ZFT;Gb3I)E#`Ye$AIVKN0RIN}SXwdF^mkwzl*W_Dj@n z-doNxxF3W)a8b8oepW8$N`x(+HRHd9#+L-v%bPh>I=07RuOYrXvZhcL`x`TSGJe7d zPa|#NKFxf0zUUQgzLd>6R$E%g`N0&@ipHw?BkXlz^^XpDw7XUPz*O|Ll%sy&Uqilc z#Sg>Bz(*Z7W2>1Bj&$%QJVf^By!Q|t&pD0gHn<$v5a115>8H>}0KJWb^CXPELHS9U z7^)#(2EIE4r)vpkfxlFIX~_38e9OGPjeptOyl?RdYp%bwk36zRy2Z>lI<&&dC;JhZ zLw35v%bxk_zVtEu(j{K%ypn(QZr12f1!3N~Vw}c=enR*o2{TtZp&5A(c^~>353)eo z1;blLmyc-40T(sc2ONgS*l&Edd^V?VPbo41{DJ-C+2}XtqRT8qr&$0m@u4?--8^4C z7u*y*V67S4k2f6HiQedq=IhSxMmaC^DnH!9CuIE+yM)Abe!+dJ{KiEi>PJ&v=o$N& z2Jsgmei&*f8-Tz1ncL;`Yg0-pe&}Osq|_TPml)hrE8-rb$PV~hj!vMAITx%wzMpre zWzClRu?@g4`+SKTDfzVY?jf`%-*fo(*LtI=iRFot@&@s1?efIw@#XnGQOe)$jea{m zp?%_{d=K#}?DE7NkbHLgd>=!3!NnBDO#XfLcv<@9yCX_pZ|lLkCckveK=!M)9k4H1 zn>z>p-I#dna$(s_=_HSu- zr$g)B^DTFf1{t#i?^|s+nY*F~kvPE{56G##Jvfni;3*BFPp92d;~3*Y{9i2H`~D{U z_$z(p0@^XhnDP%&b`$M9g&tYPron2X6#gS^j6wbw`?ta7IwR@Q-Y*i`gN7S;GcGFq zl=p3oQ|^Dr;4SIBRgu|tn`hW$_H+-=kf59H_H|YpTMSA=J683!lNb3I|E@4zZB9WUxYFB zJ{x>U(t4eP@p&*Bzj0&WM`Phj8StlZ@Tu|GZBO8S9{$XL#occ8-8rsj??!xJ3I7L& zEsV**C$Udpd~1k12bhG9N*;+5U1%eDmS3lM)6M7!R}WTqV@2n(1U;eWrpliDyR@k6 zLvKb;n59oJ^@NurCmduw3Gl9f4vtTz?h5kP-gfIo^hMFXGUsJ3^b(E$L(rqmkT($p z-sZ?0Q=abnxB9Q1cwHwVph2_t_S*v&@H z*TSbEgMP_*RL81SFXYpo#$&lJO87FuvR0`1=)^Bvl4%3naVdKre4gzBMv>X}A`9(v z;`5bFHm#k3hI+R!rm{Tv-7>-i}-F#WlVN*@0+m3T>{<9Ju<=~pLEVqbq2AOSA2P5 z$aj{CTSMH34(&ivhW8tpXL3$(4{=4%v%F(v?zOfEJ&y_HK!>-Jws)U=^R5NowR{WS zKHxv{6mt<9A07Nk-0Kqel8URK?n>%RqE2b!2GW=VW#UIe?$HbE#{jRSRh*$iG=lRnTt)!BrJU+&D4osNnJvFl24sKjS1O%fhzJ!I~VhR zA9jH^0n-BJAUr>My}$=7-;ieSpK9hQIsDa+dLJ#L?-Utubm$K0EAfk{NA^0)_&4ya(uoY+Lwxqxs?AQ~ z&9Rm-V5|kt?XJjM2IusCgE0r^eV>+6Dxu+nqaCT1n_*Hz%9O-0T7dZ7(`q%e6(iIJj4&@}IJwuwn(Azu4BRX+K zCyH)*c)Lm3i}HU+(%u#tq7Gm=V5W@@eZjxbi|DDkxJ$8K)+&85>;GczC0Aq${Rqz! z+7#J5y9c_V|98`FaHDou=FoA3Wo&cEQ-fSOiGS=TAGi!zTlnNcr_ue&-+LF#B>q0q zZ)P5U32!_&*^3V^e!$kmdz`WldXRDrleGHfmcOwM@{BWSbZlrW|IN-z&9%z&Ky0n@ zLHmbqzMM7WGS-qySyRecTP{J?y_mbs7je&du({3(%yQ0uv@?EN-s)Ve)nm_2pOhRj z8JaTbns}k>)qKNCXZRhyu&haYz@gC7wfqb36!}cXOZIO!88yhovMyzWsz{f$>P`L) zZJhWxGVgBr@AV!=He+nYhR&p2XwMv{pVCev;~{&N4;>lZZSYMw>v$hthHrea>)kFe z{F?gww`);s^i5ijI9Uh5rwN;k`9)@b(nHsicOZKK`!0BIq4>w?e~(J^h0?!cSq}vd z0qU=(9_eF1V4tkj50(1YwC0Jg%SvQTc^^h-Zxi{X{dn1lHtL5@(9#qAD+#|A+2>J|uF9N&9eSWdmbxzJGY}XlIsZ0E83*KcsD;RGX z&r8fYpeNEq&Xqb>Gxm0!B4f!fajzEt*1>bkBdNEQddE?ICG*eFZp>^3-^&TR30Io9 zm-p;q`?byEWz1g2pMuU@i@iS?U-u(+-M{cgJD|^;wElXr3-)m@k~G1$@3Z{!`^jHC zar1eV6Stga$G3f&Uw#kq_W_GHV@amwU6k4A&~|L(+n-Tse*5{Bc@=+`vTO3ISKnm9 zIPiYTzSH*=cly4DrbUjr&VpCF+k$tvS_ABLXbSL3nh9@LetA_Kyf;{Qi-4;!j9Iq3 zlCi&yJyV4V!j~;Z?&B;z z71>N=5y>xWiqx@sm%Do!br`pLH@fgqgUxQ(`0>Ptg_m@}OI$AQ!C84Dd8-QK|5cfi+r*6Sh2RbEWo75WS?up<| za4qRuN=~nftjfCZ@e+64zwp%{yjJw(t0{+k3C}{0ge|A(M~M4{$XuqZ?H!pkv1wK1 z%Q;4NrU$y%z}i=Qllw;c85XCI6T%msvT$(-JNw2#qs{(*O5X%e7ttT?2EMg_y0_&M z;AjR9GB^AwNfUiHEx9EJ|9&|c*_mytJTF(oeQ$NRQrj*&@#UJhxS{k};*i_xcRF0% zIzA`5=!3|6f-`9+0KQ*Ian-$=BJZa1ZX07i!yNlDp){+n@jO88W8XL~W?v$($uH77 zPu*|QeEse>ov_!oOH}^qdS6L=$IM~w#hbs(FJ}*E?$z`+2(w0uOzUM{rzHvhReX~2 zCVp-E7A?se{VVrfHFGRf8;R?lxo(ipes5Wu>ofU{{z88Fd9>k&7W(>8S5(fr*DbRB z7Gz*a)0$QOn%DBn3&>wdoNH-eIA7PQTgfM~EH6HUCGVraBI(+*s!YzV{PLNUv3YQO zT1{Ji`Ezw#ag0E4(W4&r`oz+ z--TxR8uhL5%^JKQ2Y#sE>f}v0t9*?rZ{ttTU6a>-A5C4_ms; zKOG*R4jGSxb}8G}?m_OgeR|qU_$1Qt*W}=>s@NTV6K={@@NVNs-sh8h=bG*dcXQ?{ z@}kgf6|zINdvRu}iL>g=A>eEh_}WXJKp)Pk%{5u){*>Pu6PaHcewHTTTdDAv(0P-9 zX_?RnZHV5?=AB)W3xLgc&8MfmcJ;rzkL;g4H;rqH%7yl1e%631xkvCK@`KQk;Q0>Z zc?sLN(&2N7_(uNg_vTfntc@ScGxeHj$Bv7-&bhrz*Ijk4qT9n7IxJ%9P6CJ^(B%{I38XvR*2Bh{>9A zuQL%h$>cZXVXHphQ>s3RSF)h8=kDQlQes*BfkwG;Y4XvUNAkElU0h%~+{j<)+U(SC}tE}t^+c5F% zud3|XZhc2y%rF1a!b8oy3J;q}OXQmZOC+5Cpg~>sc=+n`%NrOop-Z8!#Q(&xlsew| zoxroACvnZJxGlfDhIai`D|+nl{KUHZ=YC%GA#vWhm~#hzZ_O3Q#oRp)mQ|sr$j47( z6LUt!GQymYcKy#P+~+)zUw#$sY;ueVS58;7uklvFNReIGQ%YX#8I@OmJiq)3^1A6C zZyNNYGs)NbYb)Pl`Q>Hgleo^N{Bj%qAI0G&9v6}?_?!F()4-*K+in!RJ4_kgxaHip zo%+O4&I?AKCbS^)OZb~z=k88*ccp0^>wm(0k-FNSj@7GQuj-u!Yy;KHobIdlIqDr~ zZM5G!mAVhL$oQ}9ajo-)tKx87!FiFS`)Z`U^w4nHtE^htqyNcw*qB{m`pjzzs5FB# zzoh-ucUUJ)GZtQ>d3c-9y(m-k#eMS4&ES!>K=zkXcPI2Ab@vcwmd~xoe6W*sg}So- zq({yFH+6V)|MgVpG7cS)O111bsMKyTONI?fS?o^!dxUc5@c1b{me;uIgW`-3bHsQT1WQ0~SwUKCf(4 z^SOojTw>8!7V~+E3!m%EY3Z}J(c+`G=a;Xb{hiEB;Twr-(f?|*VPmY#cOMzJ&1~At zvD)(8>n3~|AuFV9_eDkS z?OP8P<(H2DR_S97VWCTVK8pYH?rE=HZJ769)f~0sWR6Oi$nA>H|D1cHvW_3AuTuDH zUzd*#hnerkD&N1Y^d|E=J+%2F z?gjvF5^~Omq{*6$?#f()+pbV${%(~ig3sA&W=^@JY4zN{X3dQ89(!#Tz3jmH3-y+? zz!dyvo_SszvF=FScd69rFz4^f(&l&0rE*S-57JR$msNC!qF3YW>^iY8AA_x~)KfE0 z%B6>XLmA;^V_8SWvW`faaZCP#H?rdXC_7}M?zbI*G4e#E#secdO1L=a4PFLY>!8r)Qvwdu$=L*e!q$|TZJ`;z`Xv4WIXATED1I)8Zs%h9lc+z5mn|v^ z6s)|rZSD_c%ycs@J@hSijpUtUiEHvnKJ0(3`$rvbIj+!M{>(}IvbY1EJ+U&=H<34x z(QiBs{oTpWZRt7&S-iY?v66vpo-I0wYk@ERTX<4{zR17mb7g;f^z*0KTz0owbJ^Nw zT;>;Ezp9U)SAg3;0J|;MRGg{$vx_)?)v6vHxn>b_Q2N?-hDv*hG@E}_hE@G0O}~^^ z9(hvfwi@9>5?7I{_7?jlYxPrr|7ptFvO?=6`Q^Xn8-Atc_r=!yJ~cMK8%ek4x9@b- z{yu2;A>u`kXu>rM{XgHbPZGFv&TrlxrP{IW6MFF7CwZg%D;;$PI>51^Amv0~eLMf- z{~zaMt4{9``+`l5vE6Ox5d{ZAucDVd2|S3-xpCF0hZdu`gY{bfp=qzU~c zwi!Qf?*Eardwq{jV5RMjBK8G@MRzFkM8bXJ&-yTq@B6s(D|u@?`Q-wG*so#sN)tQA| z^ex!h{XgeY;9B55=?-Mx${yR^|CoPrwvElYA9+aLG8F%b1JS=t`!c37N8V<7)b5%fub<#bta8t{%j%q@248J>EiG;MaPzgLxDX9U?Zx zo$$7~J-rXecW0V;*;kyPtFRz_@|r{k`9Hec%83{_k)-%stQaIWy1n*+#%c4e{F!*yD8sHGvyv z5ZUQkV-AnFXg!S9S<_H9SWEWGaKoELcylWQzbB0K!LdbLgqj0glww?S4)eRo+_NbJ! z71omCk1v5Ag_r6g^PYjX+?u}vl)qF?H4UZ*;4ASb!c1e^yWpj5jm924?w6v@DPd*R zK>N3bP4?1vafBah*p#npSmUI;UFO0qRLS99Q2cI^{U-h{noe7J6jq@ZzA?)71jkDS zPX*o)ju#3Z?L(dfFB9^H(nsbPxce5o)Q7GM(^PIKf3KVt0?eLn3)B2%b3V*Ru@_r} zGc8B$Y5n=5_@P+;qO+Si%->=;Gv+cl!(VP6jlJPOE#kaO?{U$bpt{uOwg(Smq5$xl~?#&G<{6wokH<1j_`B)^>FH9y*j@L z?F#MUDC$xQ-12MAelJC7&6)Vr*N>HS^iS6FFxT)Khe0SK8e0#u+P#_@3whHCa;GEY zPY1}M_Bcz_4sxn3=AP*HXZ-bd6G;BN4gVyM60CJ9`k5Rz@u_T-wYNCW*VlZ=Z#S!7 z`sSU6m-jVUPvkP`3j4Bf!Nd1I)6pi}2%B&zEn#p&;TP4A+q`3gzBuFWbtf9Kzb^I@ zlzLqFha6@g+$*w+(wu_w$q=I@Sw?1h3r6uHoR|GHfFCpJFZo>!8B5=;C1JEn#jW2R z(NvpwkYjkS3FT3K4#oxPu51pcg&#$>FMc53Sv#5(WvYfVpj1{NR^G(ZvfbpwC{q~D z1>g+BDdPb7j^8WvKi5$P${ZDCx9A4yLIZsFr?4}kFQ7K9gFk9B55S`^6#swxjsIJ) zll+!icF1{p{VWH~!Or2$AltE*a;EAO{43)shPq05ivCfQ?po4sU{T(cGK?;i`NzOl zc!dQr?+|!YzxnajPQ>dcL`dT(Gx{4H+Vq%9w5GI2T2uP#Ij{1!+;b2fjcGEKc6drO zeF0vED#g$BHpAPt47JHDfY`;xj8>0QTOlx}(uAshH&qYyRw+!Ja zc8Qlo(l4SuP<=Uda8_`PVF4&M9dGdpo-o02Oz+cX^E zS2Pc%aRz?7OF9=Z2;tH9p!R|NfbH5?)IqeRRLtY4ZTyI_1D)SprnLVfbO*CW&fD-u z-*x|4+1wZALnyJ&fv-QtbC1#=Eaef zr2jGZj`?%sgT84SghBbpr#Ky0YleA_1;5Xg51GK!Nxp?hk5UimZ8gG$Cvhhi-;U15 zHHLrki{E3F{I0h8&4j;HtKY02L=&wsN#Ou%RreP$oSzji9;{VK9-J!p#xzHv@~3p$ zaq0fMxTBAYczeM*?m32ZyN|+{bCmB(j6vnHE1#46f!~k$YuhZ3vj~3pdX=?HG~EWT zte(Mq6Xt)no}ET~cbe{&+FwP#H&f9WwIkLvux;`fA$7ZGItm`GWdz`SduOca4#)lm z`$D$gpD&v7VZRJ@w0?MkZwBgo5zbXzfVm#_$p?fbgNEa5?vziJ_IY^3XUJDY`#${Hz$MmvC}kJDNi;15Pg$>4`1`*S zO$)%s{PKT({txNk_i5wKE zjJc(;WVZGF00I3D^}Wet$Ms=vRS<7qn|M>RMHBs|F4|cr#VfU|9daMq%O<>zHsMkF z+rtgzC&B7Bdb8}8_#`uw@kN-8-%!|-e~K?TpnPnRx>YpMZl57L#f6YN>xs=RX*0S#zXQEYovF~kSodfhLpBp_^o8pY0YNQZ%lAQzYr&tUnY3U94hrQnfDoZ^(!dTP?YC0mx{}j%9F}f zDO38ERHxDqFSXTwnpgX+l*>PbPxo>;-4nr++wki$jqb_bu6KCE;3}`n5^6&O;fHU7 zSt~@-An?eJ@{Kxd4YT|$V_qJSyPh^-L@yCdIM`nnMyG!xj2N3RvX+XbwpM7~bi$oLgX$^?(VG%E3gKU?zP?lZQVgK5E z4SWyq=uWACan%yE0kd^Xw?9QRIl+#?@moN3s#*?>IW-8s0mAQqesBo&gVuGFG>oCv z`mFDE$Y(>hn?9f8Cl1W>F zl+UrYxxHSODUL1w8*yZ%il)!upUOayx6$COv59vH;OZuxJYIvrzn{Qiz2 zYvxN~y*{T&{hRPU;KHMDu3WYAHQz{5+6vDFIOQP>O9B!$65|B5k9)BR3Mu4Zq zJcsH@0x;DvWv->1MYRn}xzF+@7apyFQkaE!(~n-;nHLLP)hoK%&8AOi} zO%|+|EAttelU_qvW6$x7v~CU^Yvy>@#eC*Z_*eR|j9(+m_5cz`iKcpRa|`x-IuQTD zi%3UBa*`hlpMgKBW6GGfu(xPB3!Zcj##--Ehl{3@;PplsVBPK2d(de-j&(EX-kq(y z+KqTCIxj-9m%a_fw;kb8eW7}1!0*y4vbC^>XxaulI!mj_wbUV^X%l!1bBMH)(XWh{ z^P5i!uXN$Vq&qIDXQE%xT^GC}^GX_HQTlK;SCPLBu{KBh;l}Wx(prHKFtmJJl!Wih ztp(t~s?<+3K^toWe~)k;wW75I3Of|`a+$w={$mRAZ!2pk&l9bAejhq7Z}#^WO%uSQ zxh3@_!+wZ^-;R6X{nJ?nL0YI|ud=4gi?>AXdap&KV*-o2#&cX4Ph$Aa^n`EK%?f`xC1 zrta4C9u1M-Tc&qG@ILgy+t^pRjkA`iBJ;e3y&p<@66zxAFZvyvGX{mDjL;8Z-;V`f z!yV@&>s!M`56bKCQD8OZGld8fzxgSZO_67fxsFHD;*a9JLNA;zru{~L+#gr#^z5najq=)I-m^Oqb%ED zowe;o%R%{WN&}=ld7NBU+V5~S1#ihQoS`832R9X#zwMsT3-t4fTr>_4P1NsS_cRWr zZI8|Fs*Bzg`RhQ>xAM2aS$7$Kj5=h-+AFm`l*8tNQM6uLJ?CGDGoS9~!%X=W+Ec!(=gb9PYOCPS z1D5w#tLG3lV%)V9WnxAdm?4K2fk*55H4%3apLV=Ul#Tj#dkFT;8XWbGMLe;da(V)O zme0`|(Z|p{e>B3Na?X5Z*^&BAcq>Xvg0)ZfmFu}Qrt1%Pa(#Y%O|GJGT`#z$@}zVk z&D#e_e#^&cu`Yidr**XYp*S$-S)5>%Q9t5$!(|yI&ov_8*LDm-aVhtM1iWnqH)Z4T z_pIY;!JozfRdd?F&UP#<)w^ifUXkmzuOd71JIMX> z{!r0Gd}Uqy=-NnAb$kzed#OIKwpMq(R4?T7WE!|v`e`9Vo*PhqUJ6-4dC(bUKZ#!C zr)th~@D=y_gJk#DQO6#FPv!g@bnF95@f}0_jS;^A@8s;qyqxcMmGgPeu{UMg_xy}7 z6d6=tkmE0GC7Ot@-qrLQTZV}o|nxUm~}9Bx)K&g`KL228CSxjvS@r+)*W?hBZa3!e56;_A3es}*b}Uc(Va?? zS$$A;N?kBFmg@qwyETnu+0zU533xMt;!X9#x3}`UfiHbechS^^${+inW@{f*G^K5B zCzMlxGG5eTJ4)m2^(p>bDsh_#$hMvd|2 zhxTUY;zWa7AL#rQ?f>Z5?TJR>NWAKdlWB5Jk+f`ZaZN#OcIusG^u9RVP zl#G@7^y68}vU507Np;GV(jnEUiu)#t-%pffuM$7boxL7^_a*VOmH3gT+ZcNlVvI!Y z<#R3az9qG}gc5oGxC+kvBb?$w{p)o-8)>_QJ?XMG;>ddVg~@JkAOCfJgq$w=Z6p5d z5#>9%S$p}uDeh*{T0nvIH&GWLe5#ve=Z|KTzfDk3k1fP+(4t?9Zq6( zKPWX^&V%x8lI8SaEGgf|L7RK+zKU&lT4v0}dR$Nf`m;Zg_UY3Y#>C}oUvwYtD$+&z z6X>@7nKeB(;g{0m7xH>~+Wn{L!5bn!Pb0~X?&Fj;=-=CDb?)0uc*K0(C$!RWh52JqqSZ!OpJeDHOUb=9nCe}?)Y$%+|joJDuW znAZhm8<^ zZ*mzhE+hBZSTm=)`E+JAtEDX8ufRRki_9^0{RYlv$I$0lT#Hh5^c!!p+2-Z=;3887>H+R-zK|e5O>jd$L5k{&(TljBhmuX>h^2^CO|V z3a-w7QW$-k?$QcQ&d2&T-$i*fAdTeD{6cS9hJKlF)_uL{8tm3kKOG}T?IXLo{JVbD z+DGHfJ&eN-Arfcy6{zU^w|wGfJj1`5R)?y`BdRZk89KSC%z>S=W+B5lZ4nTYiGD)LU)a9 z&xKID4G|8>nT!c-bCWTyv*2wE`b{PJ2C3KZ4cf4U2W#UzBizxu7j+?j=yyr`BOV&Z z_l3^bfK^$l0eDw3QJT+YykXa0zN8IUMu>h2Z*<-%&*kW zz9rronU`htyNh@mWL~Nu=VKf3a%5hjmA8p_n`B`7k)d(xM}9^>bX6|g6L73@i01AEdpz#enT zj2zgLz6tiwQRmNOIn9FnFkGNIjlNuplgxEpjAI3~^#Jr zn49@h4xf0w#5)|Ao6q^JMZDvIxdku7;wTPs=S94efw{(#a$XhUok1KW<#9L>?*jaC zJUilD3e3&O8<(4macaiazQwSY!j{fN?yOZzJoZWsN8;_SRZL_0Fzlb0=LF*Y6!~rA zB|G~To4_NPaSdw>BnL88h70sI(kJ+yJz$prv$-?;!@e(l|IU4jGwJ)_`#ScV6`!hd zoI4wO8gz;ac0mc&^t8tsk$D5ks6;NyXfo#@{#UYDPv%W12Wwix$-EWi_e#!BFqwA- z=Hk7k8dR?+{D$Dse97;b90v7uiXHB@NOp%*6}1c?GrA2A6r>X z^*4E+wJ-Pz@x!XM`Y!ZMGJeE&fV?ExR?!-RWriJoGteF9gFUc*?TJ3T zD*AFSjP0voY;U&^;}ZOKoh<*eJ*;DVwfFPS_E_`UrLXk+iS&+F0Di|*i!&z{77yc&GF;mwis@)Co%SpJL^Ti6@hzL@fSR1#kYa}9^&<$ zn({n(qBX3x6qYyYuq+pfdZOPKst-?f!MPtBH%a#8ZZe$RLozTYz?(AG^X299oh--^ z>5c@(4~0&D4M(Ld4+m=>p|L0z+qif)0os}&Pw<|vt(!DWc{q;9`;NhmpF!T`+PX{P z+-2MU)jo!|clxWnKX32$SNk=*z2{%;5AgQY|7!2gm1}k&%cVOz+Hl-8iD0?AG55ut zIFFU|4ky0zYP`eg{Ls>i-l(w6Ctqe6PiureLfhZ33Liu5Ns-}+Xb=AIOLd|E@f6}r z6YWRjovLQEX&$Rq>E&X@)myV(}=S5 z+QRy@UfUb(vKQKCPqfo`wAUUu&mV{Jww*MdGjj3ju;w-N^KrRUKk*h_kfQ^BQvvrN z1f(wm^GTXl6k&fwJGpMp*_e|xVd-UWg(SdDXU-fAvlG%q^LaWKTo?JIe$uh(taz&9 zx9d4I?gYEGuycg21=0GflJ8^E7#+VEabA|ouS&801UI2@L*X_C(fE!0HUZ7We0Dn0 zcL(Wn7Mz=8V4jFN9n_Vj#g9OF*A-lbqYvuUj58;~oEJWy<9%q$ zsVIvP_@>7-EaVPksw4dT4nH5&ofY5J>ZeQJ#=C}oGcI>F#sRZ2uWiESl$9;Rep6@8 zoCx!6`2XEAU7B|{J{B;S=FJ8>mg|GGx*_~~uy;pU-$(fFu=}HLi(RhxZQW6b^UuDm zc4@vA6wHi8*}jQUs!@KqrO!Xms3^5jrhpU2{Mr8{{ct` z!pcqlgqM+c9}s)6)Sv0P3&r^uhf!JHMjL7zEUz&P{d%0VmO$-|-PH6iXv$tuxl3-) zo*Uy$nF`lgu50>J{It$O>ooM9y(7}1bJe)X{D2Z_d*TbrGTQG*o{PGT@{h&3In`_W z{>iKR7CWKLlzP_`^$xPmL+bAj$o)N?+e_Z_dY+{G^hAEprbD|3#mUak(@vqVrd@H(nECD7x2ORAaUGRh4%5evB8$ zp5`eh@%vu7H!-JTY{&Rn#^*t}%MtKqv^4(Js^vL;KvS#(Sl0()ovplpA+zK#A`cWrSZbzDb~3a#^f~aqqi{<;SGf^Lu@z*}Qiza=m3v$?1QFb(!qy1~z1EcT6&`!0O|C{M|2r;(d=d_=` zC?Ds2X$=c9N0R*vV+b0*U;E*&Z{WQ)enYy?jhEA{#FL6TSC>_lep{mOtSq~g@RTv! zi61OA(lFpTT3h&^-bawqw|%4>R~Gm*m!fo2`A(0AJ-&~`$K0xn z-;Lf9Dxcdc`vl3ut?Q5D^6wGv zK&|2g_%A#x*O%XkcUa~LN8~zrlX%Bvp5GDKT>@m=L^KU@VejA z#JdC@+F9}e%!5fkj(IThkbF|kOY#}agUNgWzZY0+*>MzkQ0B3z-^ux^g|eZvCp@=o z--$5s{o1@o}hI;)>}?nz<2T*fh5;Aqp!k#f-}~)W8ICp&7j|Dq-q@NWz6jie7BLh@$XeM zjT`&CK2|cL-{HqfSuk&edz$+Mz->0hVSfAMauvaw4ZC5W-y7K>o$`3Z5qi^r=*F1i zjE#mop92}!3~T9sV9tFKZZ}~(fw6?g7Z``kMgRY&!owIK2W#3*kls0Hd(pe)dPRL4 z?IXm-HlB-p2WjqJhQ}|DuVa|)m z-3K$;2>MMSCkXZONzdq^S<}2eGb3#`5huy(ge0MO{BBk5`+2I|qi8z`{i2Kg&1rZO z$t#EMTvA!)qs*y~$hY=I#ke;|=MJK`%k@&}BibY16|EbP{FdhTh?jIlCPx3--c+F+ zH{lEb>a*fbd!;?jaYAO}`z0XHB;y&ivv*#X)wCXNyB40Um&;F*+gNj<`&!Cg|5KEU z_B8qf#8=o8?+LVJ3$J5c{Kf#bkm569ERMCV?Kl&cdlYlc_X$^(#^|}@38UOIz<*E1 zwC*PDE6~_X**~UwD6QAl!5&JsTwX7~m+J?=CSJB4UO^r*LjNHT=l{>;A#tsohvR>f z2iv|cqqR+ch4R)~%gA;;d%GNNSwFfN=gi!3?wG0SUXU>Mt;?_zhut{r$zkkimAUuk zurG)GIoy!LxVuv37jH(E;Xn?Da5#d)B8Ou*+=0WLIoyrI@f_~M;eH%`hr>x69?aok z93I8taU7n&;VB%R#^E#$&*JbL4$tH8A`UO*@CpvE;_w;{Z{Tnahc|I}D~ES-csGah zIDCM^hdF$l!zVd>hQk*)e2K%qa`+mDZ*ll{4*$vFha7&&;TIe(<**9(%F60Lhn+a= z#$itmSLd)dhkZHh&*6p~Zo=Uf91i4g2!|s$+?m6DIQ$NWAHi8_U5oJhy6L+ki$(l z+=9b_91h`d1cyZq$8fj!^1c{io@eLJb}YgI6RHR zX&j!#;W-?h$KgdBUdrJW9A3rYH5}f+;T#Tc;_y}u@8s}q4(Dt9bJ&T)ZXEXHaCHuQbJ&-|{v2+| z;U*kz!Qns-hj2K8!y<=cINX85ojKf%!|@#M!{L4$euu+J93IT!VH_UC;c*~!cq@l@a(Fj~^EiBf!-qM1oWmzM ze1^kMIsAgdr5skZR=wj<;CcfolVY0mD0^aIl}qGQn4aKW3!G5(WIs*MZ#yCi}*)kNd=dxz0%ncNee^@O<#^ z18afj0k2zSu{{3BflUO?1TFv`4qO0y0{C4k&Op39fpx1bmM_8Y2z(cKIdCL!vrLO6 z9k`_xj{&X+JOcdwz%_tR0Cxg*w&EaQOC9*lvRHJ$kAN2gy8!3a$7<*r8f^ymbegN=A@DIZM4d6q--vB>eXR&Ms{sK5)gT=BEcs1||;0)j{hV!4l)Of3KxY z2?ueQv24zu8$qOGcSsA4e<{jrxZ5L4ug2j7g(w~cldb^~kEh@l^P*~e(<7{)#h{or zZQe7C_M8z>67;j2q)@0PxT(9e114_LeHGsJga;AGL^=` z#RCSfn!fd$v<{2u*tJKWw-N>o8$I5^$<>`zt&a4%s_mIqx3187Azhq})Pi9hO z>9D$yxiY`ZexEfRRzJL(GXLa;voGU=SC)RxzAS9A=ZFux%+0=XH;TQYmxT>Cr1&x_ z3zz)c*q7NEWIHnR{>#k&WRGyAG}!o;L$lgh-SFW{m{ihge~PZ~U(?~QBL9jTC2!cb* z79G>JUHc9lJH>YH()EpQ-Q#-1_w3cX&zq*c{SuP~3>-9gNb=BO!$*u9HG0h0aqo?P zf5OB`lc%(59oQx)I3zSIylG1c1M2VlB-xG4f2lu`gNcZYD(i&=m0DwG@1S*ba&~cb ztK#nAS=Fmr^%^xH$VqwE_Nn7rSLf$nuYQAujRG1sY1*uLicU=$K42vTsMQmZu@J3D)O2M4Xz(b37t+1bSf=jg0q+aq)>!gs=zQdd?5u~cO> zSZ!99)niRr8y3mhvYu=JdymavYuQ0|ovEaXD2GomP#hEs#X~XKQBJf@ZZ&;dMJJ>& zW{(*|O%y-^3dJlS+HwY^&{}`Wl17Phb#;TP0_AR19#-XPRaLFZ%SKhRQPpi!4I5SS zA5^V>P~QKbYX80RL3?3Z2SMM*JsV?SH2}VSiSty6(_x za##mUlmIe=lr~E4iFh-Qsg2VZnc5$@qbfsl17{GbCh8$$I7=(ViSy2A3$k1wc|hTi z!oGUBa$)TE7VUby^m88NxEXmh`6DO|7a@;)Fc<|G!e~y ze4Fgp5yt`p16=~$+?mE+>*V6dw9T70moNs#;4l`5l58X_VtMQ?W1j>bNMdgIndIs< zy?t)5YAA$ig6-cah!NtAfo}Wv1M_+G=#kGOoT$}$`BQqR+^Ni|45`fN8&H`lO#rzqp)6AO8=&C6?0knDHhOqo~=8@PT`X`v!UfL1F8I3%U^DY zSG#{K*1Oynyc?psDSY4k&+U1koxG`AWv+gZLAfbW^3`^3A!`5Bx&v8i`=N8YvD@`J3Hu3;M&2~ z0eq6nYLFxNB%kd-_OS0au(p)o;(!RBmvu@X5UtH{44YX%nq! zlg!pM??YZBzZ56=A@_u>?kNn|mrE|W1gPFQOJzi5=pvO9m7}XvR#cX5C@uOLRUkp+ zGIvMM<^tEw&^_T&3zH}MIybm>gAmE!l1`!DZulUN^n{yn1`gw?O=_(a4waPLn&mo4 zu6b3KW`xOO-VI^ij<7AsZm5P+%9Za!wN}oJT)QbRlrjg&4W&y7m;95e$jrwjyDE35 z*eQM$|F(R^pW;q2+q$pJAMZ{H!VF&|)EuioDK^~N6q#s0MI7sKGe8w@qawKgzM z-)78ltYdx0ci=S=6wA7?L2MWs4bungFgpSLT~#FhldT>8{$P)QUb4DE4a_zo*)btb z=q<42YjeT2Q97o>+(}72W4Z>#^OzI9fI07jcOQRHH}hfB&c2Sger5EJj`PyE>vWA< zcxwH%OsANO-MeaEh*9qTAN>041K4L31(Lni-_Bjr-ksfFyDm@*{~Fn>(-mKPN2_9~ zD)EE5k3T>)k>WSoBigiuBfG#(@a%rT&GN!18&3y z1b8{6t5S`fGCQ%nDk}G{?>uu%7gt~Gp4pN4XWVeiY9iUgeJAE0pw(n5{@28@y!n_v z>K-Hf)OU+kp2D-Ij1`p4BL3}UN)F9}3rmaHclF-0m(F%}Gh_B?IjW8!=8JnnLv^`)> zGs7ISFTdsEw$J@aW=`A39Hnux(vB$p|EW@Gn1<;(MN9rLnb5!-rNcCt6wLQOxcY47 zy)HfS?!C;r7uiF@+DCiM4Cox26EJ6uPTNCszkT%Me+6{zNah0P9vXMpr(5lr(?XTx zzh&psIYlq?3Z~))A(TdIq`-CfC#m!*3DC>UGPmsim*ulMiC3R9lh`OXo82AP1iUCW zGf`;LAjUsl`JU!E>L&jF^&6L&onY@-?%wPq%rJ` zgDOVl-kAA&<)b>kn&y~=YQ1NV+OtYKw6>Wsj;ThSySs;=)yU@QRdPv$9E_tdL86N;D2o$G2<=@RlM?&B`7PfwEU z$*h@@6`)Fy!kasdlI#5KJ$!sgN##g$?|)KSI~__ro%yG>_i&HFMS&O;t~RE};wET5 z>*L@Z_L7puu3EISQna*}UJLJ##&p^=ozt3tIbI9VzyjuoWbZ85OJ>NwIsR~>wc2z3 zTfQLwq>R%4@_)K=_*W$OyB@~PkCK6krYMpFMKNY`2~E>6|96y=_H<#FC{+}rJ2&G@G0F&9u-}& zv(cz6_LdRLbW6rp~98%81fJJW4Z}m2aS=nRtX1KIueC`B0ft7-S|=+$rDU zpL7bpA~#Arie8yJ@=NKjC=B9J+7&l^-W5#q76tPE&6_iFyMzA}8F{d^yO6#Z5Q<{}}QWco%Q?L%JHZoR#S=}y|5(L(~-McJy^h$>PlebZh z$JiYfBy<-3^L2YQ6|STz-VrFDP5uY_L}m)O@?9c%{waTV`e^j6XUBEx=<4L{#4NqB zQYL?UXj0uEo!pTsOSWvR(4OjwQm?3PDRr6rDs~mwBXB!=?f=J=E8Cg|_1U zPF1k?L^6QB1IY~f)+EcQ{7LrEeha@pL*Jg-dks)+5Xppkpr#<&-KDvHTToBX0ML7& z8KAYGgP`jm41oV_MNWBA>WZSPVb2rggC|=#$VW`!QaI#a$v@?t@=g0ulvmo(_5-yB zMS~JSsi6HJK>!8`2n0=?2?#_$0SYKQn$ijwbP6;>(ScfljGzQosX|avUTyQHVHOEeynHzjlX#?*Izf18D~E~A65amX-NW(I zT8BnD%zr#=Oz`>vx7RKixGFH?vfH{{S0?-3K3|aW^OukzxFtM=ogx>1quxDV}mBRb*yxUoaloW7xs>Ud7m<<(5rGsAZ{ zt$&fdBY4E}tuYsl?YV3$-uvbC5f=mB?|-%ZkFFQ4^wppK;>%V)H;iDv_AvMO>1g%D zQ~P#2-tJfL(6&CGF4_HKmG$55TD40Rpv|y*ck9nChwI;V-tu9}=$0N`lTBaLN!+h* zK6vMX=qnTK$6glp>dq{0;(q?#?3r7}*4?qwe*KMotJ|F0RkY@q!=#{MR%Kqc->@w+x$|sM=57N8r1dNOH<<3H%|805iy?aU3;z7 zo^#RbuXg@v$wmFhL#Nlhe0<^Tu-il1mi#;_s6)n(uTJesxb$9gO}m?Q)NS7F>XdUV z#r2n{v37Ae(W*x7?#_9$bS}pl>_~od+sx5A$8&>oSKmlH=~n#fJIjy#+}MBlsmze_zpZbo>-H9r{lER@s}Z~Nbu)JTv2)wL6)x9ys#l!ZGCsWH`QN{uc;;W#8eZ1S zsD9-=Pv-&G(<28i7Ke>=&F(jBit~?dH~wXD{G`z)=Coy%!w2m?sdE3!TJ49)4+Y=S z1NKATelzLW_d^Dm$A*lk^_%_hQ4?yPD=lbxc6Prhm)uWu{$AZFzu7mS%(f>42yqwwflo1drl8|bMJ;<>~|Qtglz3}sj2J5uC<-Me%e_b zk}yRReehnw)!tW!WZ#=Ns`cc&p&dTjmiWE*jKO;|&x~#maxFQ2$wZeE>WKwfVrn&l)})aCha} zVedPAGE%kC-f^WN#O=<^Ar9lJzRB#;I`3QJHD%YeO-;8<4XeG=<+FKb7P;n~zxmC* zD=B_gFFT(*b9PqDwQ~=iZ~G;A)Qn4Yf2f|9`c}i-r-c(YkDl1^o0_-!X*0$Qt717G zX+OBXv*2M_HE90OO-awsT81aK|8Ye1N!Oe*|2*URQ?D7CZU?rh!xI}0`TSY+gi~*H z92$Fh;wZ86u+y8a^t92X-HC z^~tuL8`f^GZx?cE_b2v0{m}T$UwiEv@^ifwQwDF_)j9Eys&?|*i<^#a5}N0{J!_uJ z!P-~t`h9#))f^JRjz%IR^JJx*;lLRn66tESN~5;3!#W%jK7bw5c-VRRwT`y0+9T1y zf2>zv>cT8-y_hZgtHqzbU%yS#xHLy6Ix*xepAfR1F;dPsDd(G%(@n~$rWxroXMLD4 zd(NUy7B5-4Z26}v)~sE(e#7V48*{d9+rDGxH@k9oA2@jEyTeD09y@;K?78z7e!BSc zrNV31Z`{1~ThZ;`A3S{Y_{q~}&x>C`>dVz}Y zA|Sb*A>JqOJ0I>AfEI!lfj$8(1}yho6kYnppBp$&=;UDL0^F?Q!l9O;C~a` zd=1(R+5*}N+6LMV+5xIeJxAH)Pp`su!p%3JU7%dhZqOdkUJ#zWtjs$et#xF1u-^yD z2ki$P038G!0(}QM4601Mfd3<~KMFbqIu80CbOQ7P=p^VzP-UtZ-|iIbPlL{Y&VtT? z&Vw$1ega(tRi<9R|Ie_$1iB2m0{R8?E9fey08|L7Og+c9zXtp3pc|l@pj)8dKt-V2 zpx;52sXMT{3;F}}C+HsNKIj4HA?Ok4F{mO{jJTh`?kVUQ=sBnu^aAt}R04VhDg{-n z%G*B4f|_WHwLoEL6C?v36Wmjq=i72+{z=|Ev$lU~ z2M16W`F5|g>B{_*>>*i2ZJ63YMQxwjc4dm>2g$9!Yx~r;D^nyts1E*J+o!f&nIgGK z^5gH?KDF)26v-c|gMZidscl!LNcR3+yI0zFW&TO_{$0CQ+ID6BN&fs@yI0zFW&TP2 z{9U_O+ID6BN&fs@yI0zFW&WuR{$0CQ+IMCC3k+`m*!HQ7SENXG9YlNiPuo9*N~3yO z_a%&FXBGgWHF-KHsH_3g{fep}Z%_m%3WT@GrF$2&Hq84Chq*l{%xX{T;nhKPKostq zpg0g6bMOR_T>}ugZwDF)8UlI)MCqvqqPUEp9-w5}wh!)NySjVVX`v^4+`BE?Nqhd*=?Z z9i(j!9AUya)yp`wWx2#$uvw|{PinkJQBP(rh>H7oSrj|6D#|x_L)4_RUqu-=?1<|B z#kWzGTi-=J?{zZjoo5%KI-j~4wf>i)s9Amwqt1Q$GAePsO7HWjgWfyaMgP_r5B=Sm zHS{N@`siQ1@Y8>=w2}UeZq4$TB8@e0@fP|u(j;@ayMe%eJp*3v_NB;BMR(ePdU zPXB5~w!Y^NU+Ql++@kNeaEJa~=iT~UOY-zRS{>AHxqL+b^Rg5A=z*v8zZ);; z3tC*(|Eqa{{wPygnr$9i@B7y1bq7JcpMD)HSIJMm*Tt(bV-N%YzG9Bk+v14t6U4$L z1I5Eblf~K{M~L-Wj1fQc9WTzPIZ3SJlOpc)GK(R)G;u+zbn#&OS>ma8GsJJE%@HTA z`A7`>ex6wLe1SNz=_jIUz!Gur>Sf|@1)qvBjaG`e<5r1H4`zzXYpxa9d+WuSXFeAj zhUSO|Grtu3Rry+MHDinDU$RYfpR!Yoe6>rQF>{Yt!w`9`rXhK;w_#$ekD;UBYq+?l zuA%c}Kg0a+dWLl+^$l|mG&HoE8({dMPZL9UgJy<|r_Bw^j<+-{&uVQLF}01s&lGIP z4GlH;dxsmQSt1O3e~U7lI3pT<%r_biZHY0=UEj{oeq{&4!zG;zsf#)rG>f_-zHWw7 zpT-%y*Tfr4U-dF%?CE3p;)Ka?rl6nU^0WSiB9C_sMJ*Byce@QRTpv5g@XN9xhRgXw z4JYmnH|(!H%CP&5F@~LK;|x1@k2h?5GQqH=&1Az5J@nd=Gn#Q$S|W zhoFx^i$NG$+|tATPV`*i^f{>=(NoEYjX2EVGXhVjNlt*Bx}i zRIR7r>}W46b}V5voF1|zPTvbvoHq%NotFsTyO@O~uA_uLZtn=LRpNxbRoV&z+y|;0 zJVaHPXC2j>RRz^xuiL`lYG;Lh)$@gRHNF<=*KDmWty!vC>U~C4&F3rCv^pQF&iRf} zdF%S9;{A-O5B%F|R@W<4=QlW{-q&c6I;-&z^{}SV>N?Hqs`FYf^&71=+nsLR+b%oE z!7e`ZJI(poBj=PJ5rOZ`)7k?ry(6{)F9^z31C4 zGWE6V`&K}&^K~6;OiFh-QRj{M2Aw^eP&BP;jA6EZVT+_a~;ryiA`WDBV<=tMfF>m%e7xFI8 z-0p_hWGWK8*XiCppW0xEqYVO zM7`eWLxWF?HzI+*MeveR;-|Q=w~b2_vlAD)VF!wmG}AHsn~TcuhpdGDV*CygFK zLkTIZwC7EV((QJ$VYR8>Uq+qIM_^Z@_vAjmyejjSp=NWscUmjosvBj!*vfazSE=nC zG2oxadtOm`NWDM${lpQ8$%!Mz zj7cOj#lx2;@kr6xAX4Oy+$iS|NGIhWYf{+}RLYXlOp5YO%9{n_Faic5tfNQ0VD|pB zS!~FdqbaQar9oray4j0AV{v^GS?}Q=uf;ns>>hIxe2|>xLZr}77y@*a*$dG^vJlGL zy=vEM%G`aLgtl{augYqAOXE{lj6|EWszM{yM2gMA>;xwvI4m-tJ$oa%T}ReqeUDym zw(CC-wzN|w;IKwx0i(cOd-7N})xOmx$e`T)Su<^^Ux9&hZ`>WSvt$R$Q;&9VCX`MW(>jIjz zpf*_pWA_#~OB2nyBi(jFlJwtB7%J%>NdFgDd3M5QKx;sUShJ{3IOJbt$&w|#mn5=) zrY*xe$6dVGtAFC~QPbwLI&pDv4M1(8+Q-p2I}{^xlVB3!nF*14*P|IhKQ>GlCJbOh zF`V}GC(fI!yU-m!@R@``cI~>%-b3x^s{B_wI=eEpojqR8cdGAR&D+zfeeF7RJI4Ce zYtZG5?mc?;e$(`ts#CXKgW8^6hz^HpXsg0k=U=~JK$B)IS_KA$ghfoN{ z*G!ipXQT6SC+0N9u}GV&z3*Ul@N(E}A7}sAF4L|nE==vxjMoHdo~!fKbJQkvfck~% zlxl;@tm?0dPx~la!aCxt7Lt!yPcUwwBl&180cbh(@OhAY=7aU%T9_ME$K1(_ zmEV$eLm%#nujGtBy5UTBo$1yy-fZK_%De~jz%Rl00Mheq#{By*mSI8(PlQa{qGIe% zmGt7(!={WG>q4d_;fq{RB!;!T|2<8Xqw+CTTOVYn*xT4iGS-Gyp^^8`V{)vR6&)<; z9WUrcjz>;OkzGZ6*%tPkA08|AivD+YiW}0+hJ#PCrJD$fPF%ceCh-VEadFC++}gV5 z%?h>&hYw2%Q*o#06}XoY@ZW#`ErI{PlmN*{h&)+IZ}rHp=+H|#)B%}c15wG0AaVPR zHjWD)wVAtB2#V4<1=aJe8kDfnC+PE^8U}Uwx^+-oq&{fOhp|ERGW!JWS~M`I_sI8x zGFGPsl{n7{`b6_d(9lIIg97($2r?|$67)&kZ-Z_OJr?wp`9e_0*c(9`Vjl%%d?WmWS@@^#3{kkq#~ zgakL=5^`ko-jExQj)n;83n2-2u7~*Uc^IK`a-ABHP?HGK07ubboR1wpH5Ruq3aBVSTQ)3cL7rRM?`=I)y!4 z*E_7uhXcY!#f=L)>yR2YeAw);G}EH6CYL`8b1YdOmi*o3u*jIbVU4F94a=N)KJ4c~ z*TagMJq)}3n1y%f;~4JN)-$}vq1xd)t~Usu{za?sH4US}zf0&8-g9v8@EPp}geN9D;I>D@ojaZn53F}R{EwRt!t4CV zBJ5f?MzpHw8L@F`?TBjI8bo|Eu~kIMy~qfshMgjgH0m93OBfI_>A={C$i3!>+qGs# z99AugxIF!{i0@adkGS~u=7@V|_e5;d9*xM*o{v~va4o`N^@E818(HKjJIBa({_u#b zGPHJNdRl|XS8ZEG4%rnMnRusTgJ$5 zQE8tXiOQXOE^7N**P0;JT&&tqeq%G8UdbUDua$K)}c;IXO^A>yb>b^(xBi}fu?_cYh z{`B$t`nSTEIPqhx*k+`MxS+sWZ1kYM*kWT#@x!W-;_=9i;u|e`iJ{LE#q`g|i1Qnm z#rGy>h}Yg+C|)_XLM*P^Yq9q8-Qp78BVwB>=foO66^i=w`{H3wW*9d}YxpF_ z!_ah_x8Y=deZ!XbTN<`ri7*TjIvVQS?`e3sBhm0OVGR1u@;;u%rKB)wVl*a|l|0*0 zOG75L18HhIG66%A{!30MoWBy@5THJ~LOa=gKG_>VP}2Jl`Orah{M`)V6@^c3%^*4| zZwASV#n=9d7F&Dz%;b(vb}DE8l{5de=R@l| zv`0dFKeP{01BB%djPT_<9RAQ7fUr!0SpdCBCGXWlL5~5&g5p3lbxQ;d2TcH_f#!q$ z1^Nn<2RaR+GI<56fqYXL^#HvGS`OL|`V*u>Ci;LDfzE+^P_`pL2SN3b`FS7}YV!<` zI|||pP#8{d@(&eQ^rO!)`mR>9kC=DysVwo|ybW&-jQd4QRWtSzx zvfNT+d2Tt14VwT`)m28=0>0~ikGG7$D(7i}_k@>RVrS4_I%gpBm&vnleo@W*p z6zhr;isN35dFB49)vHsl?!Q{_YV)hOk})OjC9O(MmE12`P_ntiT+Qrd#$49yVRkoH zHG7)tn0?H3&A#SZ=9=c(X779_qf6QD@nB4^N3mfT6g8G6p)~z$gz6ZH;|K<9U$#MG4`sn7p_4EP zbKRPF_%IB&0WS(ih37(%uw2Lxb_v;n3A==ou&Y=TEg=l^*o*8a&Jz@|OSV!tyJ!+F{(J#X7vK~ef24I zE490Nj5DWmp5M4FBw>}xMX|Dxst~vUax{)^?Eh_)#6v%U!8mP_?1^_ zP-(By@ueS?t}OksbZ_a2(krEROG`>!EIyWImMBYCOMlAV)b`)kmrks;;VLDi_sV;RM!6J`%r?6V*v_>wBuWHv$WG~fF@AE1DCSrY^OPeku1-E`qYy0YC@7c9Vlj7m^ z`mwii5gXK*=Y`sP--nzk{4%92Jn59DJ^Rcht?lhQ)n#7zx#zTY#D_?sK2JWXTeI*W^aU6L1@OK9R~3x1as&XPo zle|6L)^+{7^UkC8crR-`7v)-7TJWd_<&6HR_8gmp6&OW3Iy#K@csX=Y4Ve!Mz3l4h zvX{d+)WA{V%rno#IH-So%G5}4$pLskJlwz&&CNK&Pqn9-bO0XOQ{^~>&CfM}SHGMA zJX#p+<@a;2*cvs!XDf$ZID^kt&OB}l_%uIuz4Ff!JWqmDfPJzwHqQws__PzA=s(eq zjk^9Pp6GunLP7k9F7u!GM8E$O*e-F8@8Lbs4|F2l7 z+TVna%ZtrJNUrO`7}(|y?XS#HkY=hT8S^&58eG>Sk`K|G72Z3E z=sp#1KE5;9_`Hv%4xM`F-h*;%_VLJZsy-^{^VzuWP@6Y>he zZ3k{XaN~j5%#Z8Pg9q$~@0yRYOedC$c=>6`LB!TSX7Id~8I zQjiy~@V5ElzAHWaz16h^KFDd;2G=O^*Ckx1drtRcyd&P|!ArfTd4mVjp0wv_c>D1l z1cZlNi(N5D9rqo$_W&R(pc?RWK@JJSZ$q&w9Nz zY@6$?zAe5n-v-~PkH+Xa#75~YdspC{#e3M7z^K}MB@cg}>*4RDH|d?idm5uU-F>?I zO3xEK8BaS#@#%wc*N`iH@KVn??sMEDo+~_QciO!e`TL&cewzC zWVquFVa1;14r0x+)e7A4K3c}w`oY0BA1ogX9z5gVDF^wgm3U3#)R4=q7XDm&XbcvF z4c<}s#=5=hy*W?LQ^tFRcb%6;LvwSkC+kUKu1@y^4^jW8Tu*QfdlH_w=e~m@?h%aO z9QPHX?`e#VFp*&)!##<2gn4IUbw=G`fqPz}Ilw>vqjx;gwmb6h`yU#4DEd(FA%=tA zle}u}x$09@*TDz&$M$>n-@5PR`(pcC`~J1}`+INQd*j~g_KxiB+Iz;{Q}#Z%=XZN< z+jGmF=lHMPbLF1&o=f+9-G7_E#s4{fbk8nGzrj5x`p?*N@}AH5FYvqe-0FYukxTsd zJ<{X9_mT5`=led5_p|W+l>bToy#E9K_xo4*-|D~2e~a%H-+6dHbRc}7bl_3%A@4yb z9tWU)?Du{RYREm_=z;HezT^27-j^Qujr-TGU%UR#^cJfC#^(zVC?Chxbs>HUB5Ub_Dp&o!Qpzl6k zcz*BsqWg>PpLkyCdBFXE`}Lkl&;9QE-S5Wxe?1@dJm`9!>#2DExBErze)l)rKX$Kn zx5E4RJNIwh_qm?ydW!o;?#tbGxvzHr(ESDX>)d_rkGS9EzSBM7`hn{r_vhW;cYWWr z%yqBpC3xQfZ|XbU|IdA)>q6I6?(Oc+x<2dr9=xa@cD>ehyQ|mrKd#NL7eK>&jcccC zt?NVZjlUh*<_8gl@HW@0p^a_@CAiu5Oy92Ei+rEnz0!B{?i+W%*|*ep?e3TRI(%2| zPVc^S_l@2gz0bh=2Hz8Xukfw$o$HJ4zRr7{cM0Ct;(e3rRnThx)AbhDE8&gbA}CA6 z)$Pi;*1J|fYe~AwzLM`s@0H%u@m@#t$(Ql9`)DPP_|Cy*h3(aRd$jW2=kLLFOXzvgAMD~34k?%N3x(~Vk&wbGS57$3jzi}UMf7ktY_pjai-4qeG@FI-=Njp0quApeY2@QCXg*Uw!acirvUjrU(*E%=k`jjo4XKXbho)`&j< zCx7dDiYvYE(tUlt=)T~-GxlBNTjo1?-@U%i`(EOEj?cC4g}x8_UhBIZ{{8>)ZT3C5 z_v^k3egDsQmG8yA`}VeYTfDdVKIgm3b+zk-&)JGrqU`F7RI9-R`^IcdPG%zVp53d!J8q!22xklYDRU z<$WLUUE+JSZ=3J^zE$2;-nV)$^WNe;&wI1?nchqHyvjT7{ZDU?_buL)-sqlJdN%?m z7Xi0#aJ|{P#XII*>V1ai8J-)xPxQXRyN1!E!c&^2pFtD59Uk;R+ z_)Qix`CLYe*MS;8xI4pWal418@rdUf@X4EZr#x5SC=22vZJ^LY?jiSLyf4L@WPw3& z7A_BPN#H*~i=*y~A*-F`B6=Kj5qBY(;1vgUKXUuS4?R={MLuKZG?~c+_a58_neWpF z_xK+1UE|yBEBYSw@b|;MO}>Y`4|xah?!^14c>mk?frHCE{Cx?Zb>JV~dk_58`%CYx1AhU%{50g2k9luA@O$qsKuQ1Rb{+h?>+i1bxPArv zdY|hP?)QT3eiiul6^3blbbZV99@kG?|MLFR`=IAR&-3v19q{fS-uHvO<-KR^y&qhn zyeGWp&oCz4?fbItPrf($e&&0b?@PX)`rhFCgRkH%c)yAF7k&Tjdy(&@z6W4_>i2!a z_j>Q^VT!un`(wN(egEsbcHeWoecmhgecqeix7xGX^IPvzyg%|@?!C)YW z`Y7=6U7(mxc74Qqr+32p1MeNMynGM#u@8G+>wTy9cJF5I|MPy`^L5XSdw0PKbM4+% zcdPq%p8GtXWAyXwu8Tb1_bl@~$MYFaaPPhDd)?bXNqas2iyAy z-2Qd@&ffcTC7g=X3Ukhk5(c343_DY(2>E6%yqI+-lt@W<;ehAe2?Y`~4;NB-P z8hpL?das2B6aDq(y_eukwEIaeqOLc%Zr-!a`+gHGex{e`@K!~MKL81XXtAWhBt=;1 zFUb(sGD-O9-Wwkws(YpP+DBG+R(Q&!%YgRofUTV5Uy_K429rE&P~WG4CX@6VXEc~= zVmI$*I+!Qo8ARkEr@CB6ttHdz&w{W%gLPk_2S(|x`BFK&3(yq^V6GrvPm zu)ggE6&PvgAeATcBdHLP$X+|Xc6#EBonNfHcIU&(@7_7^?Gtvr>B`n!H*~Jw1slz- zXWjnRT|apK$9DbTb6?-}=r?|`>;GQ!(5`zP@!#g%d+KeXekbZ*jQSU&{>7*tMg1u1 zM^QhD`cc%6qJ9+hqo^N6{Vvq+dV1oFuHXE$wd>kXU)VMA?Mu3n=U&$Jr>~85ZTQbE zUFmzT>q47dli@daeeJ||b!plyU9Uayqg`JQ-r99~@rzxDzJ6O5p4YYG)*p18xAvD^ z*X@0vOaIE>yWaEG-Cggv?$NGaM7=TeCHB%Qo*cXA(8;m!4?ZpS({;~^<)5m@_TGDT zEcf1}u{U1X8e7*Nj=d|~5$ihRqFCVcu2|1$-LcZMdSh>1dT9(}hz(!A3yc_*cb17ZR~_=-w^x!>KkG^ zAANHSV~>69b?=CMaQ(Yucbxsc*y+1(ioNYy?~kp#AG_{XUyQxzp0C6f@7x&!%wku3;?CGNKJv|&|HI#oo%)gQ#{TlL@5iqH z%#UKf|ME{`fM@JGKlycR@Xz_4^mW#_x&@BF$ae%j@}IOZY#)wi4w|3hF=Jn`Kp#eY(Ga{N6{eQNxM zPoEV3?C>dZ%u#&D`%a6WlQ=#8@4r1g{>QgIGmaeo@eBX@ocO!m{=7KmFD`N5^|_6! z-}{H2&QFYeY4y_HGs(xzKJ=Zg(LE{yn9+6Z!>@Qj=THAP-TA9$mOHQg;!8TCKYv;0 z!EapCncI6!=Nlfqrt{F}Je@y()q|_u<(pPlx>v1!&Zl-=^s2khz34w~9=|a3lF|h? z?YgFO-FIKw`I>)h@4Wk*O6QASKGAvhshQ4e|Foeq@{F~eZC|~x^TLmYF8c6?eXBR# za{20K?|$cMijg0D@!wW&d;JqTzx9)6b-v`^E$9pNr}{%}Q=8NlA7l0Z)HbzAZPD|n zEIpt4L3OEL)IVyA`b*EFvh;lF2i2v1QU9nd>MylHb*T=Or80Ccx#+CuE6>$B-|#-I zv+HTkzxZ{duFh?@`8q#&tLNeuJml%@JnQ7nXYKt;=lH*#(D|IVE$(dl)LT0{-tpwl z9k=&%Ua)Ul=c)@%>+HGx)t&GA&HB#53!m3{&h}q+{^OmiJ1^SV()peX-+wV+@HKdd zv1a$|f(IM8{rs4=;~Oz;C&H!wsU_#!?}>efE|jJvdL zZ|>&xccT7@pbM9v{)DGR# z-=#%l{STx5(@{T;`e}ULg8FCNu1%r-O@E6cS$#tL(`|QXzdex9u76`fd)wZmcIe!@ zw6EVNp8pQiKO6N|qizPD3i=L%D}EN&rY=SQe|m?eFG^}tD-xRfS4r&|?RROD&yZF^{?Qc7i+RtKl?TEfn)E`9s zanwHpb+5qZ2GrkryQX9Ac76);cXC1tJOcQghVj3?OFQ#3N$m}n+_mGO*NgfA)V~__ zpNYDc<8xA%roHlZ?c#^A&Tm2+XeW*%D>gnosqNT)yY|`-Cbj2YdYAUH*NOT%>R*rg zr=so#e6))-{f)P4zx}_scEuaw+KwN@wU2r4)SmrJjNf~Q*7A;|_Sy}1X}@_5>R*iU zpM?5vM*SzDF5%#xc4-&C{dR5VpHa7j&&T81w@q6-8J}RZ_}>03FF7y???iM*T=PYoOq}91=RoW8}861u1;#d%G{-$_bSxi zf#?7BVom!f>hJ5qZeY~^&~4g|kD&j*0NpzsZLE!JC!Tbt_8!##-skSn1~Wx`u~Iae?k2q>i-b+Zw35*2>5*yxO_rf(@(uq`zOYK!*A};zIRDd%NH^JYf=9u zJbx#ie;ev!-nFw(|IlsP#a}}GZ=?Q7{JtTk-F_PS{|w-t?@sMND5?Fja+kK~nr>|8 zvYa%joqUStRO1Q`cw)clFMUk6o`PcyEoGmgK~6BATG{K>FZ6m_JWptGpQ?F1CwWiM zJtr=4KcU47RRkWS|NiJlBmL8_j@<3v5Lw)FO60rke+oa+|AjF2D}_JxrH$dDuO*Cq zOW_B;a&PE2+ddRRZsgFr^ZlV0|M0Ak*X;^j|IKd)TV8uh@Y)?af)DOr8+`N+X9V?& zwcyUT-W|CAtv3fw(02sBGqN^No;)MqK1mC_sORqGvCD2=?mA(|@{e4&cKNb_GnQ*! zZTUd^-L1&<->SKHw4NDW+xp(_Gg@I`Y<*qu?qx4X-n?vwwqx1Oz}jX1n>b^cxz9MC zIdc2!&y1YvbwyUb@&54mdp;Zf(V%`1}zcYU2TX{(#SZ@%an>en)(M zfxkb;hwA(cpP%CM6MTM%550bj&yVo=GyTBpSGLa&@SC3XeSGf4N4|cIFW24`hjt-w@Iv>s zJ1zvSbO1*>kUZp0!1)qF-S0kt_x$=#f)xep~e|taIi3B4_T)T7C)jz#N`hnd=I2SMnEjYO$CM?G+SSarTmyz$+ph+6!NF z1#*gyzj&fBRoQaY)!IbihN%+1yzIJHXlI?X$kl zKHt@aj0PLP4u`bMv|)rR4Z^Pzb#=k-6NiT=>GJY!Yd-Op;z{U5bBjm4kxB z#s>d0e?7Z3py7j)0jY?VyXT&05B^?)&lU6=pA0?}w8#E}TdcrOYMY;+dSmB%;fa0? zKCi;(mH3>AdnX_+Zm74rca`3ku9WiI^l~Mg*{m10(T(^F5A|%^ zlp2o4)^1AmJU_8iRO?DtGUIw~A~%^URLZKNMoq>h(vwsAWWH1?mh`QqG`<(JIlWM< z=;i6DsbZ;;%j!$I@r0hCp@E@IvEFFk;HJdJ;ias4UwT`9a(Yrv7xLv|rBs~CXY|qh zL?u_!CvsbI6Q)M;WqomeBdZmyDxEKkS)VCe*E7Wl^lW5$bTn5g>l69OJoTtj)H_&_ zfkMtwL`UdoeoIat*{>q^u)w=qf#=RpWu^5#pJ}ux&ljOivv@+LU%7Ac_pXk3;9Yu zJ(0hvX4|zoG+l7&5}|xb;Whf6E0puaLK!$TU8rEFc?L?+hiq<3K0}=tEtV$J6%<^h zA=pM=t*_4&vc=LWd|zA^mxgdDSIXg{y0jiBOO;Hex_eXT0=-a*dK2F`jE7H7l>jz^ z5r=2lSU7xchhxF!iiMUZqOm554z3?+=E2d_a5JsNFoJ2!S9u(0fOV>92kU)`UB#3Z zOX)GJO}3cz;>e4!8qH-nmE(ZaM;O%tkpoDK^wPItuKiUu9FmR7EP>YZFEx` zwWmerh~Pk~63!D;w?fEanrc_5F=4eU)R;Qw3RMeyxc0)^ z$@EltY0V`s(Au~k&rMavCAQb69>xl%DkZke1PVDUaq65tlCKz@NrB5vkL1unRK9XL zS0)DHIFSMfsF0YPs%+OYqFSbuW2;}!7IS6ub|NWNMO2DN<*k2nAq#3)Jo>tL2`k9MlX zM>SY1L!2lUH2!lqw=GsIma^h!KQZ|U@gqiJr!1E)09h;Ym#7u01I&qhVY3{@RH-M|Ve82mNa6 zYKsQ7p-6Y6D-w-}8&TW}hv?HC4t1HoMezf&VsO(?cbEDSrEg)n#J;uhZzPMbV)zoW ze2Ho#MX*cqOH?B{VN+yVgjZ(2I<|H2U+enU_7806*LtKJPBad5Xd*vC0&D~tuK_AU zSl7FuNsdDoj57&Z+W?e;rka^3l8kFn61sbn8_bkz46`*^#N)91HuUtz2k5SeW>!k+ zLU}3;#+CttP8alIVPZR}dzoTkG(QGiB&(0)fV4S%D}So$7DGwZ=$ic4xE>$unNuTu zsc3Xo4GazTtkQc5P?RUq8FZOx-Ln}Eho1m&9zf9ZlO$wMg7^avOgd&b7wxbxOh~x| z_!P_nq!R0-vXvp|zd9w*Gg_IZX&g0r@2; zzl5~mo<8D@!|4*CRwX}~)2DJJ@K8txpf!O|Yal!d{yi~~FM|*ivSn>?c{xU%x-2!E z=p!hUFV|BHH05#FMJnmd0FniXU$|UDI-x`l*tfA9icn-t5@$9KIs>fUt{OIqX2yxd zkX1vK;$%>CfmkOgh>UQp(g#ZUv3vm{Q5i%F1@ro{)jE}FRaYDyQpzoZct(^t$GV07 zkSu+S2UsJwUVTwpu%8ij2H4W^@P*mC5xw*w&+uW zHxt5+Y_CAhrt6U8$Hp*Q6#$4#JIH=T_9ZBq7`e6e6gCxuwg?@Q(P#pVwNR4kGI5^D znvE55{%k$vs4g0neXMS`SLmfxPnSppOs1uf)z=O6>X1gsz=l5Nvl>H_a~GG-)sPH~ z*$eb=IKWH<)&DI5bhhL&Vf;s;k`!nzFqaf%LZXb6a-7OUL>VUSSPG!QMa60KF_#I^ zS{ZX}MwN-MGLFsYizM^K%8lq);r0j7v$hoTAcE<9VaZbSSj^uSy~O;>`THWeZ0@dp zQ56_e8P;7@z|whEW^7`U1TadWgGs&C+yV+8r|7O0HH4R6W zscse`9e4jo!%4P)h#xZai=wRYuMnmhSn(JK|S}=edr3gM0)S zKvaZ8vp5jWw~pmU71ks%dF65P2%*2|3JG|mVU@A~j4G9?qycN^LI87Ft9}5#LLwM@ z<`h~R?&-g5pz9K|)CJX`%s`bZ!EwNa1>&w~G`mP6p=6bI!AQECYmaEFmM_=HQKoIY z?D;(!)1tOQ&DR%?@_&o8Efw{xV7iR^+2!nC^_N8&yNla&&-f#*^ULyoeh~%nZ;>`p z-VWpBq_hf57joOCxO5JqClC{Bnb{IrwbJxNPQ%PYngm6f%4xua0*Y#6fzwLcG~6g% zrB$|RmF-&PDy_UtE2AjBq_tKU-nG{Jm6KZQ*hFRY0{lOswQebH)A|yrHA3DsXb2-- zlQ~Q&0S~&f^!yZ=eH1cdc^tVqhZ93RQTQ`#@)NHOL}0T~)xy?sxbq0H*?p~VAf7-Q z%8)^nWK0+Do_$#HJkRxGTC(Lv-IWj{(|seaXe5t2Jd@(XMQDzL8)N zP1kyEWsPx>nsDq&Uy zL?nO+kqXS#D8vTx1QbBxI9;VXSkNQILar=2Vo*rQkQt3yrI)A1;RkM1YCH#*K~p6& zz-n?WH);`GZTM8^r_&7wfCvBplktLKZu;hi2LOY4d9jYMaun4gyABu=S8r)LkS<6u zW+pd*|EG!jTevYP_}Qh4H2sNMA-9##0bCz)%=9EoJX4$2rum;N|5Ijv`uU%c=}9sZ zO>N3*>?;W=8q7e{2tFVJT4_W}!=YZ$s6&{uG>c0pmddC>p(G^k$?w!CXF%ux8PCen zdIT|qD@ypXIbSG)y-vdARn`h%OeCYg11A1xT$TZ%lr^X?R0w}Wc!9Qd&CsR^q7LOv zQ_}@z$I$q1c1t~f(-tBWh|nc^k_@Fv0x zVMNjf2U0yO45oizs4v>94M+RC6aB;F--`{v&Zor&ka=6XWT2;iIHhe!^mMPmUt?Nm zW~YEHm>$@H2ADXGF-}eazYCRNSnUCRa@7#KzztgZWXspc<{ll=)+b^i`Y%lXMTjbd z=)W-i7a@S)0T726jnOKl=^S7UuYkk`_SD{7VXQLFzNWyj02DrO4RJ7R#Nbz!K}UxX zeATsXIFZuu1tadoH<+(`V))A=qO|^j{)9FV8;-6?#D@TwOV^Rq)K3vZiH(D}**^>s zN}Dd_wW$$sR5(#5@|mIH^w>Di4EV&Hj9YR^7{V~c90;(>kglv1Gnt8LnrC@ImX^Pf zGk!cx#7-L+j9!XxroL!ut=83>=#OjcUJOp$(NQg1oQ5)(B4d>eH_@pSh$^B9D+c3CuUyUc9g8o79y^`a~~2@e7zLV`7D<>GV+PchFsa4TP)2Avs$!5OTDsE+tX zF_tNf{vXy}T+9=xFK>odqyp5=7hqc~=emGkeWdFX5r(gVAV?%zgXB9-3Lv@Gz~1Qc z5RF~iK3d$OT{W66X;&4n*0gPSvbLT6%Z%qIvcOEn2N@F+JPec%j?n`UDsI6pb6m12F@g7$c5@NRk-ndz4fIdZhWM&MWbomHkiXm%|JC&1#S*O*On{5a=}Mo3!61k(P;IN!hWX(_JBzw-y2sL0v?Z8=4)g8boLlHMK8yFl=RV^`c-b{Zi;OOC!Ee9s_ zB`gZ&`=&Uo>2Qctyy;*&b4Hf)WD+MvOoq2AqG4&N_OzfiO9yP2Fg7uqrH`F8jgmQH=-9&38!zcUt!sY6#@$H4nUp$o)1^Cz27f+4JPO$b_We$TrILCFT zKo~O;**d*`V53mTO?1YgOcl(iBBKqo3hd@GMrmn22=5uKWeZqKOqKH!pj%8vCx}#v zMI938Sgut|4)hNrf?60PM_~+iA~<9T2Vl2PjUy(swL%upVr5io9R&~KEjY0X)>?(j zapdS;$HM!h@ssYdwqQ*~Tf7+q22h7Fin2b8>17QuSnyKH6AT81NNEZ#XB3QigIhqz zAUPI@L*!TtDxa)$WdaIi)nj1AqF4`V2|7WpL_=MwEe_@NB~5K7`w?OWLCuZx-FgE zLNXjK*O@CZO$0o#qOp)IQ)Qm#X3zwYIOoFgMZS4$E3D(>;AkDsmNca zT5A?TB%)-Tn4x1Sa{;Fn!5uhGQP!fSfp1h@#QiW#s|vdvWTCQb@ri(1+xn}HzBO8x zHAMW7^AjA3OQQfD#Y1&jO-rCf5AjoJG`1ShZGjsqXpkF|`DnHIHjv8p7NKPl80Py$ zhF!GGh8-=(ppDDHD~mY?i2*QKfLYJUC&A)?!IOBDjO?Lkd0tKCylv6)yqe7|Emxb) zmxThM;2iAd%!MH5a=!nCqBG}M#}8##`QJK|v4J2}_|Lh5K!2;T?jREflPCB+hngjlWiL2-)dNJSw77zN=2$C{v~;Qm$; zog5O$<(y|BD0DlyoM1SEq@l(fC8HRWobqNBFbTDuhnJDJDor4(JhV` zwn4~!6SND31>f;-J9K+`f_uR*2Iz$>L@z6!Dr-q!WO@roA;oLR0x<(>jKGVhngNrA zvkX27)#f^5F9Z~4x<>-X$kY@W<@5Lp&5zA#upK{iObs@gLcAb#*Suj%G9s>rVPa$_ zt@YqERuAEW9Y?SpW=+q*77wqrXs5bcKqs*mPhmeF9*K+8wIxG~^WBT{U5oQk5`9EN z)$9(-rY^p*i57fXVI6OVKhQuf?t%`7u*ryUy@UQzL@CxC*-ca*U=@ThibPh6!wOOl zvyGHB)5Mt{@3hN^_P`1!ibi&SzKMy~;^YAHM&T+;9TzJs^$3O@<8x|4*jnpUmahvk z8+OM@(7|A-4wGdGI7~1R;+X`DL1)-qxwpx()QmEG&#u~v#fOaGAJC-Qdvf^J!Ww~| zkz<0PNb z(R>L(WP}#1BQSDO+^as=JDkueL;Wc|JxZ!e5BL@TJ;KBHSpj+?E5y1@rMH5VfX;w! zYak%35OAS53Svrz!{R8DGI5JFNRQ1G$n?+ICRsK4^Z7W`Po|Op=!zq8h%sI#L%v|~ zmixTe5=JOE(P24LY=;#+5Ft<0H)edtVkhqrlvZ#|+ND5_L%2C}V<1WNi_CxU76Js? zS)D`CIGjhZ1byx9B715@r`hA8!A0Q^&C;gQL~c`QY=oYyx+`dxw(K(9a+zVMSTE;q z)YW(?@S7>&U}dEC5nhn{0)bkk>8T1E{Z$lBLAoRQhVhVx4*`X64)WWQ-I1S>6_s^~ zQt49|li0UQ^8&l4_@%Q={Okb~6$if?N>gWe5BTqK7~lXfcAXV~kGEn15Ckm-p+#CS zs7LfrNRLG5ANvx)tJZZCqLTE-{6X;`D$@r|1cT;BouzLm<;kx=GDNvDvWemKrmeV` zYaL(YJU5G&PcMZ{^A|}`PNz^|^J~!}%+}(pj(MT*FTuRx@f6oB+0+pRFocCcI0?$7 zZHU5U*x!wBi)<+nFX&~3M8o)%z&(7 z0?bUo)*q$SF<`P`+e%mmMa3`?4rR(b{NEhXUjl~^yE2%Che?CfSpl2oK|ti*sdK9P z3=R!T@j=!oX7tWsD1p{spf!RWV94Uo%`idYftH}W9Qc)r4)$nqw#g(#f;w%w>g$7$ zff%ajbQWHsGOV9PEluB-M3!m;sgyQ2JyFi_yV2fMRJ#PZL$oNrK!R7Q_iFgBH{?b{ z6EU`>RO`oPAx)%;Fl_*1{2Vl+gm_~JXk{R%f)Kk`-ad&_&h591XkQ57fDU7gBKHEE zc@%L$T1G10+{ z0c2Em1K>l&R@h8gW(#Kd1@Oe}R%Dpj4CM!|YefIT=U^&DKCThk9Y!nwEQ{`o*6R1) z;pwsT6uHNx#Ef=eEF^t}aqDdv1nBAEP?Kq(~GiV#thfH#0>8{LWtUpc!8PENPL$>~;#MUKIU#kMqC zZgKCTo`UoPT9`c#6-6u@HObsk7qXexhg*QkP>{ z*=5yf9q|t2ik7jjsBM%P%CYbU>uvS~qs$;8?0^y^T$|dULR3ahfob6}TrdbE!{maF z?O~?v9-QWw*S@XR)^QLa6LkVwOREDb3BnOePD5FiXPYxQwC*Bl1x$j z>Jhqzr2a6sapi+nDi6IF;I=if^HTicQ4xc=k_dVNB`(0U2GySjn;0g7+%}Sn)pZF8 zcDbw#OSOZ^CnWm7wqfW$IaYu<)3iYZZ9roul^x0_MFX0CK?X&H0+TIhe`pUtZu-fE z4&2Zg{U*1S7A3VSOK?G;9W+Cw_iB8Fl1&Nf1Ph&kUVzOBJrr%STxbd$m^~D8LfVLV z=+gzGt*UW@G0}G5E@%|#EaF}epVlLEt#U56S?eklY4h$>9^ryv=!=lwOjTK9vX;|r@LyZy4rUjEWtKY^Xh~v2wkGUFDeKix zgq5~l)t3xYpfT`gkYJQus&O+0_#g9E$R@?roi4JY-L(0V7-hr5L)v&}1fe6z? z>c%RXbUaYWQ0YQ$kyfWPv*L?K*DEMZM~vPr(k{A4i!IY)XKC?eTKp_6u}n+i-&tDs zGOhb8ExJsLo~3otQM*Br0kaJ`Fjr_DS|`pxU5WI=T^cr1Y6;}T>_%41UYw9RggloU zHRzAw))4-*w}yjSbY0wBA!X^Db3nC@09YyIy?i5$b&^&Zn3eG2!cr8g>_?sfNb7a@zP-gCPm2`7#w*_ zS#?O>%!}}6#B0VznC{c#vEt29ndGF>*IY&Z4odaL{t7J(AwH=AB+oPtfObJ+A2=i$ zz#57s@k4wlbkG1obu|Gj0ZVJE)zx{Am4kqexaYEf+^{GhqDnya!7ds$6{?8ET(v

LIl2TT&MF4PE!;QI*SKA+c+ zh=mA-5N*zD7zA%~zGt3?J{U7mEAoNmo81({LZom8ycSPeA|p~rBHWwUgmk%ydiQB> zw&VTSnrMH2qBq5F^7a?W6)d#tsUoCclX6H|3~0wZC;&N+ok|;|n7ocqzTg%qPC(*U zt_z~e#MZ#2AW}0ctBqPVM{GE?5R0}JF^R#T1J@8`27=aLioj^yhP~U6NDzNNl!(d{ zMa=Rp+OmqL7P8WZT|z8LGb4va-~q``Bodn~=BBa^WLP8cua<@m#UP0^TW<;GD9E*B z%67J!XQmgeuUIH*DS$s$)cVMUDcTyQq>`MDBRK<`K{5K;Y(x%*k3+CMQ?Laelp3?C znA312w0lhE3NuBnW=q74L?;abO-&RaCL^ z5BabtoFq`g2}|LG7j6e>3t+5};%KFJPSz3&hj1q?gG?B+WI07iFe7I|lF*(TwnGsKFtYtn8u(?H zU?xV2+wAqkWn0yr0wiastk}AQTvK95s$qGzAIZ@;n3!9Yx{x9(YxTwA6u(AAY7U%k znm~<+u%c1Rbi=r40JR)DVcKEv7z5t|Wkwf>qX$2?F{RvGX!) z6?sV8l$?y`--dWyp$sPo-@-O1Sli$>(WQM+=V}7KXfqERi!PmE1`;?Kxa(msh8;8{ z6Jm2Yg>UcxD7NdvV$v>7V!NzUEi4~PoznSQU+dadZKx-i)P|DCE`EFo5?8Px8M(hQ(>YxmAzbP0Neyf1EH*GxY?p>LnA0XIxY3hJ4r@KJfkAlv zknEx-Iz&JF=s#?w?dk3x(s~Bz+wjm@+GfU;A9ArNOP_!-4~HSU3t1)*4;bj!Xp}+d z9z!VAwg6s!WLPf9f#b^ zV~3I$Sc#J|IK+U~*a#`1DZr6PEdzRy9f}}Fzj{r-bVTA~SqZbp7XC|6$poczK`y*J z=0Z6oNs1X^hD+I`gc+Cs(fB$gO(U*TcyYFs{UZaWY@3;_$gXBX0NzZ!l2y-yeOiXB z*&1Wm)S{1p<;dr91golHYP4o023HPA%G zCz2Y#Z97naSzAD>TnQcs=9?y&GOaq=M0YTUKu%CAp4DK6jU-e( z79AqIy%h0^(xm=)<+<i(pjgKQkOiaPBky| zsVXb2<7j%d2ZGKdn#KY0yq1$^F;`sFHOTY%kf4REy9|=Hly%Q%-$9#~;XVWR{KG#G zws01;0{bn`lR;e?` zxhj{bgKc$Tq=%f?&J4xrqn~cHx7DPpgh`JJD9v3$3x=Fkq5ee5Ss9uuUu;?|2{|bt z*`m&RcFfa)KuB^E2U;-CP;#2`!yr1$9=R3jSYg9??y(LWX#@$ZaAy013no4*O=a%N zP18zRAZ*dml-M=T8~|qiqi&T*LG~WzBAc_Q_d19;9nLliXPXjjL*_uKE?G|No z0bq0F2-dR&QmBUYJVmBYC)L9V9jw}_%|c{b`wd0LpfsV>;PHRkMFb?ui!ya|mKo<;IXIByS8XXe~@A+{1*EdiGt629O z(NRuzDB!GH)dJ-)r=mxkRzn?JJLUk?9&)x}G{B(85a$D7XRU&IY?3BxShZ&^RtmAv zkRxZxJLF=OzI!PdnaRsMiA6_0>j#jk)N-9R`bx zAz<6Q=FO|)!TPXadl#aGYzb!zlPEbyIEfW^1ZwBaLoDQMz+eOwR*dtVB<`b@QO;H; z354nsrsGiJ6v^r`my~G((qkacNLi0&vDYG3nunF=q!t_o3RTl)-1K@2b~vjU&(GEJ z895DgUe#MEqJ#rsY4m5aDW|V?*JeluW-$_`Dq*w+YnbU0Mrbt)5(PbwHT!SJO zUbP?=j%6kllkZT`gKc%<2|7jt3=lyJl0yE8X0VUHJG#sPC=|}gV&-Qj`S9Q`IVKxW znhyn&4cLJq!s-DOgRX?6X>lb1CDbsaG7#j#V7Sc^3J0K+rnf2H9TIV`3keU7L3JsU z*f`J_9uCW$!GrB1s2gHxg9o6);Da?Yv~HumF4YB0=}YK?(fHhfQ%n4-i#A6Dm`2k) z4rVkkI%*{?$hL%YkfYs~EF*GBFaqvS6eSOIJK7P55#2x?D$}0D78H7oWGr+B3yLME z682LI>7@|GIZzo3>9zW?(rqtmOnR-mb8MS)(xI10io(cjW3CenvUoul&oWljhz|!% zlH2?Z8T*z^})c{90vlWcyD22#8(2;aDD7K7^TI>Ul z2}I-u;@Oi{+M+B~cSEUp+PZF!>?{Unkhgmg+ z=i``FjaljA%dnvt5CS(hUW7VqqC>ufMA9ZR1~+TXYDb)5Jg=jrF1Re!-jtr2Z5Jv? zw#^!h9nF_;l=|^?rq)?xB{z-Yf17SHnZ62{(t44i-zIa;O_>!kCpT`?z$uZ@M_Deo z#mp+7<6wwPaMegvq2T- zN)bMHk}SEbee+>G;yiP7u}dT-d@-P-qJEkq&bdgCk!4uit^RE@aONhqHNSua`?3lm zb@`Qj1xXMwa>!~jdMLV1N zz$0Pm4oGE8GvteU!9CK*grEa!a5MD|pw8!z20e0IO;Ku!au@_{4uh^P9SH(y3J(*0 zLvIkQnxlo03Dr<$>M{tKE_E*0EvaEBy~650>55005SF9^r>0EX^A4+zKu9rlSBw=# za>+|MU5Y*YDmYjp6b!W|9VF2?X=sl*vur2`OQ;}F z)}qS@sB|U!%=zXlRAuIJXDyk+5(H(72%1HTV!Li2II1&=;SyKF*dPg~_OK)NSpAST zW#$+`q4uzC|4mn7cwkVE4fGEW4fOURX?C@qcdURWavWXx)e!4cbo{%vAm!Z zXxfj1#)dUYz_Xi_I1@LeMm@@Du(CKeXV2;gz~)RZtA!*W*!VFE7pYpd+v69ylKMcw zY>DT-z#}kX)mi9oPVWaca1#g;!7}s^|Fv}G$3}96qf}9JPyw0)M?22HU=Rpd6KtEn zakwn>M~10P0i;U$XZYb@a_Doa^AqX)8FTKi z@44(MrMFJZixtMn{Hm-A&F`^NRSYMEVP2V`(OLRPp#oWbq+O+AakJi+E|r-n$|~2+ zjoKWstEr(eNi3IU$YQjA+~4**pr#25Rr_oHa(Zw~ulm*PypW6?||Nw>K?@TT0uR9^Vo5w zBY~*Re4Z9NI%^Kw_C&yrI8LDNXWLCF@~cxCsOQ) z*~1_J&cN(l*G|`*gqQ2!a&CK|&EnZ_iQ(Lw%|$)BHqbFbqdv;jLo0V`XyuKxt>9F| zt_H=5Bc=4*3CIz|iDv2+8R3zB;jr~MnHD-`SEik^2)#}oFX4!&w>iBn#~;*@v#DZ+ zM4&I(*fp?G$Ceiz=bh@}%)q6GVUbEnh!R~i^vzg(RW^6EI+MlO+TPqMmas}A`KCo} zwZIC;C^J~83^PNyOb!PEmsp~wVtMMl(ZRDEATL;_Z(R|`VkdUM!h!V)bahLc5evNObI z9Cv?I z3324%!(deGTzD)}D|ZxOt74tlZ~{r{I1$0o#q`A~Odd>*u|Uy+9Y=zSGcXzfW{#tz zv6`kP(v{I-$sxmn9DFb|ViOT)S+K$Ly_-z7#M)p|!i;_TRxs4{M{93yO{ z1RG^dm0$@4oWL@SIT$l#sXk`FGLjV`sv(R28jO;#g>t8^&%;;1@?e_x3eAnCT9JpZ z8Zq}P*-B9~vWXQWmW;%m0AEk41%t{OoJKhwO<~~mGK7wf@|3&bV7Pis!DydhA!Q6E za(m`NE~tfZR6DTWdUQtSW)7^hNZlNBQsYIWlnu?D`yOqW5)Q857-9vA87ge!yhX8} ztBPh>KnuB%!jMxGTQaSnddUQ2L?(b^flNyxs;34AhK5rPu~c)@?xow7R@% zVV0Ivs%t3dk7k7YVoNm8l1P`g>)oaN)O>4neAtR+Hjz_8kX2PhkyJx)t&0yip~Ivt z&Z8{rS_>l-ldL$VOq;2ab9SYtUjQmE00<6Y{C^HQggjK>ZUEJSJC zFgTAQvY~*|`RY;Gkq!Z;h-KL*IN3wIk6!lUutu5!jP;b3^6@ds!EdxQBS6m`vXSXl}C?RZo#AT z6=q^N{2Jlh9lwsT0!n{wZmEPKA(7N*#IgmpC6VgWSHd_&bi`s)n4@-7PoCrV>gq;9 z7g9DorU)riF-&rXK|#rL%_TR5w8osi!45mBl*_q7CC?pV^J%5DK*UZ@6-c;89EN^j zhBV9$R*=-8rw)X}(5dTLDV0TT)OIFgVq@acDg>Dqf+2O^$AG;w-jOEG5`e+U8dXH# z(1()zWH1C3VRM>}4Fv5A3L-Ai&S23rrl$?P;2qM|X339)4KvAbHNlvx252)OH8EZ> zLPZvgjUWbDP;`>>&V~tF0&=dcNl6~hLzZWGLX5KFd5u|iGO5?aOWXP94d(#owKKsb z7))E^+C+!u#>B1NuS=DimtrIxYsT@YP_jAJEpu1E>{2y7Y!%KwIMj-29ssI}n(XFA zCj}E6hGlsXi3#ZQB)1)HQ!e-51+%t2cu6qkDlRjhVVzA-U8@{o&|E|8P&Vr3!dTU4 zbN11;J)TE9Y9B39qCfuTR-BE9FglC>p(TmX!s6(t9?wloZ_AypN2jy-BHu=2iqB?S zvikFd3W5@gdTMLFk{Kr$&5h(8#TE| zbd!^57PJnSwNn_#+@W;zvIqq)Yv8&gyxJaDfKmizhKOY`h!Vw0MJA%An$depq)uAED zp6)fnJ^kH!YPcu1R$ss1#6gXq`5`ukurhsn2zFZYizBSakY%yq&x>ZL#sl?)*kv;e z(WoOh0xCJkCe29#YTP*D#Qa*|aSNWtWj8gT8S}*2u_&_!h}`!X>WElq7YB&g+4wj{ zgmA3|pbsaAPA}llJH%#-n$&rvJW!}P+?G?>5wN*j7!zU)XzrY+v5+g#`^a!sDxj=5 z%s`P~XhtWiX3H{I(~$jVDC){_2OZb7LWZLdy~7m!+vIwHo@qq7?^W9yczEem+H3!4EEfKar2Gf9b^Nk7gIjc##4|6!YeJ7 zAxx|oxM@d9#IOxn=_{8IR41AUg%?akRZ%>|KbmK8;NiW6Wojz)wCr!u|1m~%j?mp+_ozA4WV;RD8^?)$Z|*K)|Ox! zKRwn06-G}4VAfM!29A2b2rN4Qg&QVmSLqzmQF7drz_CX7HIE0PzJ1@Euu?ip{wy=Y zN?MQ|bz-g+$^>hmj0rLpQais`!&i(#cPAeiw6E+$4oB&NzOb($${fnSMlfN*L~D>f zc|p)Vp$n*I)OD+Ivd}nsLmnp^uq2WSv~&kLHnIqQ3(SNkTuHV~XgW$qXM2kqb|@{< zeuc6&I@KMj?#}#9q0Q#*G=(;^i*17JHg{u!3~^8KSrgr^$8V%(KV-M{(xx1{17|Qs zwDGV7q%|@7R!1<#%pj;x*zigi5KLtw|dX>Imd8pSRYWm=KmxcWok%wJ`axIj8hpY8fczhvOO4xRCEa4GipFjLb^G zo6&Lw_L_hp)jNlgF>Gc6P`&ULp{@a1h-`o$ytB&zA{AU`l|;&=TuYSGIRo2_Y+&Y` zsiC_8k&;|o7bn9ABE>lqEU+vD1KBSeU_?`D$bo!{XE8WcMG0X|dJ%*W7S3927;LSk z@+|+GMJ_yQ1ThDDdXs{f6ig#B>zA459HTHnj$W401AkM46*8sGh_H z9BfDl1?3Zq-tKmh;;FMb+T5NI>0=D?WG-^e^F^Ox&f>0#X&eh%tc;r&f)d1n5J%>q ztvi`A>PlzMDvX5>&QxWItY~BDN!o*m+BCg5^}vC+roqmVDLBzbNy#4rR?v`Lj^bs4 zg!-yLV$MKeSujWY4w{CbQ72M5amf@NpFEg~=*j7VZM7VJsiGN`z)D~wL6LlTK6dGi zNcq`G-$gD`y?c0BAP`x`1M-k#fP9@wRWOu0(&(5N$n`vva%UDiSPA2TA_az?R_~k` zDJ2H6$yVV!z7X0MLwY>FB|R|#vn9>2HR1ByX7>mq4-F+nxhFN<(Pnklcc(PIhg_+NAwJBImK(#et=+i4A(cZ1J#c$Qi(*oT+CW&H`e9~ z`RVep$5tgk!a>U(FwhqU5FCxSZ4_=fy=x+URnC-<64YgO%IFbBSQ;`{mBZP(v!V(> z-6aIa=F?@Jr>8l#mQ`CO$ktQXns?C*By#Q|Cz=A%`uSdKR=M3K!ZzU^mf4<#tH^H6 zFf2ZX0<4V5%qGwfl_1h{5q89iOD)~qiIstsI!;I`=8^j~&5rmvDt!>OVAIeCfzyx} zVa|lCxzby@^TkRovzf4EZV)+Qtzb>VCKSxrWIzrZhm?$S1Jw~mqnid$ChUwn`udF_ zn{<4P0w{7EKy|ZmhuUpvr@IIBjXm)yUNtWv-@@Etb$h~lLd$OknuE;-Cw+ow!Jx)7 z+$$^{G1-XS5i=O4lMjzIcx2i|WK5{dA||(V4{kixV4=?JXtPFAwLrMrk}p#-0qo^r zS~q!Ig_nk)WV1*(aT%#U&%phps?5+sqs9?-9!GZso2i5PM%duRc&cW4etb5j0W`bv zRTbfCWyWR^g=xfm)C-D{cBOzlFKc%xmn%fed3NsXd~!*Pe7=C`#pS#}uShv4#W#K$E%BIF9-vqQOka>g1AUGq76eqhk`kM92y4zVg1!u-Onj$;a=E=inW~ofIPWRjHzW!Vk1kT zY~hFtrxZ~rezUTX;HWmOhz?_tAzQOnixfC4PI+1m$&{Yh$nug~AacyaYJ^wVOqv9d zK5Xe%)Btc{gmM0nWag@J9o3jEiDpQm%5I~U1V%g`+up5gzn+tE21=3?GwoJwAt*5Y zfh`Y+&B{aFT%?;^6c&O9pwOb2hb#a`9XLh-5caYH^L%UeE9i_5`g#3&UIKzPvCo~6cdz=9JR&99=zK=vw^mUxoZOQ zpEX2p%_Z?=)#jg>i@mkRWfA!oa#NiHLo}((^~?xz@!R%3VeuD{J1Ra9rCGPI#Cf6r zYOb4*i>tMtd6NS=Eb0)EJQ}r1Y@;$JEesHjT=TKSiV~v(q=u`v*u#a8CW8R4JYf^buy+%)@M7h z#txeli|v+3i@zyx>P`*OQE92H?j@M3nr6F`VZphY}!)=W@yWk zykMnGVB$Cm26;HtQ@IAMi+G{A<;--~j3cERPUknzuM6~OWt1TtpJS$S9D&4f36?Et zdN1XFuCk2H+rshs`W+S2>SrCdiiNQpE=0Sn6a`DGN^;KNFIf1Zkgdb>Y&6sJz8X5dz35gV$ zK$T~@sl6UTQDMnb8ip%M2AZoy6(?cOn+J2(Y_NHOXyOcKPC}^Nk|)44a{~pI{BFT4 z!q(XLneX?3h|IJ5EjeE z7ViMXoJu$2*%uAiGOi*vZr;Kl(p8+9R!u+S$qP(dX8-_W>x4saSaaDt6;H7riN(kS zlc+7@RU2eRkU~Qy&}GSG8SJrtkV-gaS>h~J%pDi96nEsfPMj0IjkU=g$!nM6xEl(no}txNNkyS1Y2ES z9cel*f`(it*hJPWjZ{_Ufk-F`D`c0j7#>s)dOo*Q1gxZD7UEUFeyE6a)q~y`#6oE( z%@GTP8w)o>(4wO-ViD4d1tk1fo=Pq6Z;w!Bb`sAkMIC8y^{xR1Fw5>DK^v9MSru^6 zaN29ePqQ-vo8Cm!QKeg8iVp|dllVIGWp3LJ%h3F&6muf*o&s)fub#|Ku zk;O3xrJ$t>M1#jHjM_3{2Svzw0CP(|UMl9ZhMZtHHO~uhs6j(fK$6QEN%9Oe+0YuTN%9&Ru)!CZf(*mDgHGJHpVbFtf+6+R*OY~!6Z~!RK}U^rIT4W+iV`*mYxFA&qOi3_~eU)K^`4oQJeX~ zH4+T-2nf~HCNdw|cSu=hjM4Xcd%$Fd1f(ptIEakSV{eP-`TS+Vn8^SIc~Vu_Ia&=d zQKo|lW$fb`OmtUoYy6yxnrS-w?WypgPULZ~-2WEpz^L$G-V26ys#tfo0YsiFaL#AVezRbkT zC^;5Xx0dr6<=DRJd}tTT#P?;`L1W)IIamBTY>`olu{DWRD{^9At#u!9par_^GDtr9 zlHR2)=X2Hs89BtiZ(qgaHDsq9S0ZMfmDY7ByR z9hGBPVIkwDc^I09d8mH~kua+{%mdRTo1X_chN^iu^2aceg}O+uFgKWB2y7IDOJwVb zPE3tMCmt_yd2en4kCg}67X{r_T(b!t)G)&UTV-{W$%bO^=qOKV4=LCZ4A*iAGE*j# z>?El9RIeWch$!(3hwNb^Pec7W6bUioL)B*EOD;&V({X8YgHL@CSu$B` z5cgqGp_&F%husNN3s7unnNFadp?p^hQVlqikUZQjtmJfSd-rdTGr-r`t3!!)@01PCAVECdNv#n4_2Q=`%| znj5n;EJ2vEN)E=DEq0Z8@vaK0&1r-j%@N^;GJ(UY%O9iQ5NA?mgBgo-z*YnfpukCk z#+w z7|d8DDq39}og}=FPJe7NUG3jdPR-f*1uY>_HlKeJnw%{p%5Fh5=&`|rBBZUQ;cNl_)_+4NYum&qDv(KH7N)SP`Hq7sXgVO!Ne zALn9v2rtsjY#TTOEq&<>PJZ29#U|$%9~l;Y65)olDX&ck4hwGrmiW=$-e#4p`d}Q7 zr7KtIvDV?%q1N8kp(^Oicv(E=BB*)wRGEe9<#&=`Y71D?!~t^zm{_7x5D$HDXyEXq zT9ii2BN?sQ>_*U<@H)2lO-uahh}b+aR(PdYoX&7UPn~}p#|)U+&f%*Iv*UP19Izv3 zJ*dk@$0VMG&L@-i!V!Kh{w)|G6Yib4xJVU}1v{*kJ!d3i09(Kv;oSD%3^0VbG!&)< zL}UYYYq(*FFf79}^!G@BwTEg66n*(j2??H#ixmh;5Yl-^pw@C6PK21(iHR3%+7@m# zRwt=A z=MJU0VI&x^=HbC&0yWDNnWt`H(1VX(N+k=Z(AF{lG{l{iVoO>&J7P&o0pM&Cp@i%6 zr3$%R>f}{jIk%|xg+UX=pbdj+y@OrVhT34rPII@9PNd7@atX23;~=eAT}igd=0mJ& z5EgSNIjn7aNE@Z&3I>q;0b)9jbLQUnzv%X4B#YahCPeZJU~rG zg08RxxF8ZtL9H*1_#VAKrEvThh;Ed)lnvFwB{Nj!7WY(3n6O|D98%^bc4P#{X2tG{ zU?6QxI#3&T0IK;t$n7zQQbRAK3Y@dXkeOB(rC|`U*7|6%q$3kP@|T0hrf7>)DqTUg za6MBjR7%B(iCoDfzs`b68>GqRu#;XGwL!5ufWz!eXy}uZ95e^DU&^5L*PtvL@<`7P zURnlyaS$gUgjsQAgk|=jb%5|<%J;+Eh1MiLay2>AVaac1uzpmP##%oENxg$WC0T*P zy@pT$kgQ_~;fXt&fTHkYNxY{pHC>s9qnxY)%8|d0B=AC25)G}AcqzZdoP%+WE5jCu zpuF)$+-N;-yzFW^XP;-Mu5v6_PFS9^N?>`L3CqLyPN}TKx->6j)?J0EGwf|95M-|6 zl`E}BGPd+N^_Dv3Ah=dPyq=>G2bXa>vxPDcZ6K>@xj0(UQ~7KTF$;*dHqko{syXTx zHoDh@mToryDgYb0L_Ks+qqT6!W=A_?|Fd;r&*NyDLw-5h&J_>^;vYVDK$R%+!;mT&`T%K9Q4$U04hUhaFGt9Q*&X_io#58(G)r_b9m9e|m&+ z69iAnoh-|a6U)*kDvr8u{sEGZ&5lHRP?QhZWB0S~SygKlP=x|e;7OE8_GnviECn^O z4s#t#r$+qb6p^l4Ow%&wLU4A$J8=EN0zN5r@DQb!dK+Jz_EYm662tI(SG-W!==qU) zrEU@5@*-tkOxB9b%|4CucW-h=Oxyc9U}dFSs=4a9v1SE4=7*TpdS7MZN|}pg!R;P5a`Oh2(bO#s2g?Au z?a>H<(MEvq3QL5AYcuL)A~`jleVyWuLwqS5kd>t6^c9sdQeR|cC=?VvXV(r-Q+RnW zxj?d0wm=doHc3*#rm!`|DrxKEyJtxSV-2_kIH zF~&$5?_(4qf~(}q?Cw#l7YrgaV6`)u>YQZMM$OD$Jpopl^81B28mp#7fOA;Ao!;Uq zrN#Fj4>E09>Ot1zj1$KUImrH)-c9b2cf!PpXs0!bV1@yDeqvS=vvezoVYFb5li}lC zEYswMgL*EAkgLjdd{pjfNrq-+k+Zcxh5?IF&E-7_XBG07!l*q+VEm0I) zM3F_A9riG3)4AS>+Xg3J$)sL6B7uka4_t{uNv8pl@&!W_v^4p{0qys)eUyB=7hUkrJtrxvca3jQ00 zlV9?`aokcH_}Wq1a+nSxvFd+gnE!7Ct)tJgIhOv8x^X zyJHnP-=E#QefP&r@aE+F?DUV9XBo@wc*G@2KUxMolHK*2%_{j3BuQ29!^9{)G;r|i zOH$2Q+Zq&v0*BN0{fe0A%0PV<;GSh)^lkuuU)P_f#>i zkc5%dHTZt;XYdufN5@vL+iEm_XCb~x_5D`=hSQ_z z$=j>f?=IG6uA!HP_>hPwd}1pJ%qpXceg^&Fvuo>aE=Q_lI=y~NHQ&W% zRMfaY#^pVsHamQ%%Y+PJk%2|HPZV0o1;K}Uh_w~6& zq{O7VIr}NBNDZxl5i(#}#}&?89Keb_!_GD?=JE7nw#9#APKI)sBuZwr&4;6yqO^fz zO4OwpO9LSk8ZZ9%*NN<@%Wz!{Q<}&XNeS_)k$Dwkd-5IPYr*V9D!1QY@gZ^14%HAJ z3m8|9PPrKU?WMqoOtbv^meB#14TY;I%MpW-$Q=J|*K9*>T(+fO9v3cSlw&cq=qzDl zucS8_K5IhC=Pd?rrJX8c8(t-is|$^n-ne{qsoFz7izQ=oxjSFxT+-|5R^sc%DpEw z$vC#k@RxV-_rW5TiAfVxqwL-UC<42Li{9k zLS56$X2#to^!1mLOKUr&PRSx`c}b-ZrC!pz)g;X`>IoUYJR^%j)H820lt8g4e3&d^ zVg230ZVU%z$EL(of^Y+r4a=G^Uw&Yj@T?3}N_onYtTpJDv#+?PQD#ohWcc7dm+vcQ zAE*45eaeEDuOy@N<(p1!34>RO5byZzw{3*7YvGM_Y3;DnR0tz!V-8PvUFgnsf}>Sw zHMALIjNDS=H$K5qbKJ4mwdjI4yAy*r+r7thmj#GBjl&rCiDo_x3D&pZ98EWxHbTo} z46?bzmX`>bYGuV|g1fr7BN-mQ0A7pGZDjEXAwu7Rd!TX(Cjsa&dKuDYTnGW*JY%=egw?H`u|SM170 zNXDzR!Zi~Zli8W&2gJRV{KjH-c2Jj&fu!?LX+=F0bs3p9EgODLBE|BLyHpn?1Kj{J zi<#`vLa)}B1idSx7@O&Zp*G0xiY*5wL>nZ(4v75vtYMw0mn7r6@FfrmE#WbMsa;er zlbsC$vvgFzn^StGTh9UW3^R+Ve|LzDpUKf;V{jfRHmx5)Y{(eZZwuwcGgt{}Zdth; zlmhd^8=5XY!o+lWu!HOk3{5F8+R#+4CdtLvhV@m=D(rSCEnOOXTK>t}f0nt{(4j?e z^X#8W(``Hq5-}50s5n3|LQoCLvk%ZKOU1`D*&CW$`-L601u+X^mHl4>~&1}ff+89o*&0kRZawH%4hE!tO1di zf)&Y;;j=8hqhzd<@0eLZ$f228COYI!EGxcKscIZlg>5@6n3JN_QaD}^S*o^`3T!1r z$Ze?$eT}@S(@YzD2ZvdyHfhw3CghLvTP1ZkI9vt&=`igwhgL51?%gTWu3XZ z0ea;y&Yl&_+fbEw4Z`CDW;L~P0i#1Ie<<{~)GXQ$V|BS;%WO^%v4HJ_4BdDx0zekn zoptc(*$GFthS_icvwi_^SLb#kHJ`=ls3{!>V+9Y?m5yE@!_~iB}19y0O7Jq|3Q_9iWA> zxL@kor!A{#JlR}xl2=i(Zu95hOZcMO-84X&XE8OCxXZ9E^;kqY^xv(?$vAt0pvAnk zXWg55mI>*0gM=_dqjoNLvfkxIKLA7{HFla|EC+}b80?8quQz92)~#qJcQKMmR>ovE z)Qf?MkL~8EC)*9SW5C1*VC?=e**C_LvoUM)>{N+neh$Fc9fxsvkeK=XFXB=ZTb0zb zSSvI(!yybEY-(E%8@#Iz5$fN=wpYxh3b7-@7dw`TRhAAnK7bPm9{ zRjGFX#t97S0tZ!c&e|jgVB8WDs?gvNMA9q(2ajRv0E}B=`Uha#z#JcdF@WL9LDIFi zR17*+&+cl~$F)@s?k5kUP_|LH%S_xDVRb>RV+`_^)?AE+W_u7)5to~pz^-VgtTi#+ zr%}a@*@P^5Hg0lHziP9ek<_<#5OA%KHUhf#X_}p)_WXF-DC%fOP_2HI!wqmH>TQOY z@y&c1{~J$-bamfq693%tNg9!s8xbku5)!n&Ew|{*ACj%K%K8gQGY`qjI5?S);&BrE zHp4!j$>^^@%q*^6ad&~FYv=yDqrXL$+o97K8LMn8U^xi8UWdlI$o!$}n-B62?v2m- zEJaI0^B+0J;J1r^4X)pw{=WJf zF876e7L@qh9!~!Sz0=Tdq*lLJ>!t`{@*vF+W9d8X3;9-R`sQ6SdRj-fWc$saMeUHA z)y?)w>zV(zeRc9$ycxN`wY#i=;y0r@=+YLJ`W-|I|s>1 zKh@Z^-Po;f^SZ$lce4GXAFB&-ah0OsB^pb_kZFL~4(`N!v;BdtceW zcC(N9b$q(rmbq%>DjrW}gHQOci2tb3Jp5dy4^p;ns($6*+woAXP&E}Fy^dG$=TFmQ z5nLyuPt)1m?BgVP2%=XP*5z2{Z4_dZa^0(-kkmu7mV_5pfAx2d9Q^WCemyFd@mX0hyU5d;d~9rmn5}x42a*ql~F3N%kR$yHUd2{5yfm>=y7ekY#LsA{<0ZQe&)78go<9= zAYMGqr^4gXydN7KNq_|6NJWZQM`j1JQw952RphSUkBcZ+Zo}@I*KQ=8xbZot*%DrU zP~OoSv|cpDp@}b>DGBQ&iolug!8!>g?DXMH_g~5U`IY6ya-Hsf;E*%<^7vK{u}Y%0 zoTag#M+!yMyRn(i*D)Ah;hS=tPrj%0e6IIZ@q)6NFJFk)0~>wf&)|X0>QB)F zf53I}^W>XttV|2wJ7FZ=1+Z6JOXT1!l5mxoM;3{eG4fLMz<*9A0k0A_uZ2|_oJz*J z%$NW6MXmJdy2T>C;VpNZv}4-g<{SHhO4JJZmQKT`0hPa#dGPD^@my{eC;8pfg5XjE zQ(DmBy#)9P4$<)22dqJ8sipK8(GVb9#?!^8WF7}UVczr~8P~RCCFA*~f;3QJB~a}r z0t!+}jt{^XEp6Jy*i9SSL(Qh?C0w^N zki&txTzKo3`0X0eu}0$+V1s1-CBAF?EKKV6U&Ot(N9xNX1hr{mOc80M3u`7_p$c*KtelVD72AMn>(X|TMfN6p2o^%WRTT?`b$$1YN1_vL)}BTJpq2*(;ZO^=ndLN@=ab zu6Cz=6)K4+djR_-u8xn1J6p`nhf*AWm}3sd805q!jMPhIf2Q8%-DLWgtiTS=-kb!g z4}*)GnXr@IZGH8#t^m(@ZmVA^4WsOV$X>F`VPgC8L`jrZ! zsbQ6!mOK@eZ?zCs1GVKBquG5RJ>POitO3Rp@AHjNjEt?Qa13WVZjBg*$-fu2JeGc^U0Sr%k@@5F|4jeScs;0)zNsM;tx80KO+{l7_qfoQyDs?$ z*a_{F4yHn5<|iuQVe8Xun|YPSARZ?3#ca0tv~LW#e;iVZ;nrL%xWACZQBy(^#<$!V zFD(qDWU@#QNqryA<{x!dXd5QiBNJwl<`R?ZXixR4nlUb|=+?+enYaWWUWCD$_&)jJ zuGrDzt$uK&OE@eVO=9%wQFO#iW6Ygnz(C$cB-6Eg!`mk3^4ICYQ+d)OhABW{Nuh$} z3BAr{oIwCxqEIcgj8IuRSD#CXT2=OZS&0`Nc|HAz7rQAM!rE|&JIk7iodrbITyGhQ z>cuisQd+`Ew!11VT?plc)3`$m@NAr5OmfC_#T)Ic>Zrf@)O;oFGH}SZ-+Cx5-{T?) z+1SaMLz!vHwQ^MQH*zMC#y@MqGO|X9wA!OQn-hqoTSJvjXqHMubPE7E?Up}1E&!Ioz$b7JQ=@LX7T?T z=?(=i2Q75k?lVF<`U~C0*clSkj0AMv+qBKpR!6y4OTl)+Qzd;iKSl|%iP-7>;c@yg zID7l%QU!lTzvOyGfJnQh0-W z*m-yl_CdX|?1F5r>RL6TfoY2^$P$>c8}3;G+L4h#6ap?J;CwPdYm^Xy;4*DlVRTlM zf~~24>OEx3m_I0b;fT%z*r3d3S~s?lUR|eA%%YOzX4Ms~P&Kr+JC!o?jNu_=%ccz^ zb*+R)t5n+w&&3oizlqzd*3TW74)rPR4c5c4!6|b&y@)nOV4=Dd91GpLyo*CaaT>sUu}514vOT(jA+ zF?C-3_n63{VYXAj_UY^4EbOZ`xV9uUT)L|2$#=By*^P%q`wv&iIcTop;pkVT zH*KP+aZahMy^f}Uu91iNjSFyFdu}ss`T{6|uVjSw_=#>nklFr@*y-9Wsp-G~Nb}t4 z9~-lEum=LN-P{n#T@$VT&|HBw7|rHMaH9F^Hn@lq9v{}uHo@kvX$a#`X}>(tai=A_ z0a~4&F)`a1j2>^r#tX~h8Tp|N^4HyHv_|$r#yg_Im;E#b$;UW&lT4F`$pc9KbP_}_ zgVAh?*^;|EHMAj%nY!lZGb3lTieX)~CY8lrSwA2r`RFOt1D=bglnqkq8M|wG#xy|7 zS5);wGnpydVjm5e%$WO(8iUvAT~n-!Ru>ZGS+$o?WT8}@tiJOUVrhIUX@b5_aAfWW zZ49RIU&+hw3$RkOL!kH@vA*Y5YL91Vl#Bb$c+#Qx0>-vU#!*@zs~qR z-4l?TUMqUE++x&Kcuna^>aGNCQ7GB%SPo5W|20RlB*^JWTuf%2j|On1Q5uEEmS=hL zN9%{7d?d`=8EHwEXaX>qyIarPqNG)2O%(dk#?_Bzz0j3HEe|qMQ#AFJOf8eFHU^)Q zWGu&ayPZx)$BJMU5@S6oznqR4Ninlt$#dwXQcjTsQ7+44aOWz1f}`f-XM8j+$0fLQ z(>o6smkpAwwU#VXDykz2NkuDnS@&tG&4fib3?VS@#GLm4-u^Fi!b@^M1Z(qc@E*Eh zN=->mW)V6vr&>mpI4jodn2Y=}>U2GuPtxwfA4P5|kr{`4xyG@Ku^P(D#TNfO`hsk^)x^@Mh|EyYeEsna9w=Ho}VsT2Xwev&ja%7 zjKY!wf{P&2`G6*>w1lb8*<7vHTfJ6J`&sW?ky;-R_y^cR;HrBsEd+fJjBeg#q+by> z+y+c)F!Z=1iT$qo-d{ea*#Wba6k?^{)%&$Z%uu|#btzh(KBo}_ z*u8DVyiUJNGi2ltQA=nk5Av%G^72%(^H(HfBs9UV$T#pnqw!9)YhObO?FX2J{erd?(pE$9>r%Hy8$a~7=&}Gb6*b>V-C?WJGulRARjyBXA zYh)_}Sv9h#&N4|A?M$EC8CNo`Azh?~#GF~_6?fX-i;L7Ii|@fr_bBRr5cWc%vo{+C zn1{CP#>DG4|JG( zLekZ+S|)tjO6JcWwPu-sy#@h(SfJ%z>Eq?>Yi8#&D`V|JTtcmUC4%CDn#k4HO3JY7 zpHLceDtcJiWT$1VT^BXA6L`OjSa+p8}t z^$)wyfu7(47%LIOjj}L}uf??&xawj^#r`zFGD|sTg~DT39^dZ5T-|N~rz{ZQa+JH$ znS!#;63&1b6YzkoaXmvLKMLT}#bK{$y4RFPew*g>UgLT`n?8sssGRgXzxdVc+^Xc8 zom*AK8Fj4jnQK8evuUu^VzyXa3-y0f+sB!)0 z=^#MhGFvQgS2)*k4Jj!>x+-{(ki@n88Ff2DZhqD{lQ z*esfTk+7CuC(~f?2^;v=Z2*kpn9Wp6co3_Z3PTVQJ-5TnG)$DbkYk#kvzq-SC=wHR zkk&?VvFijXqvLqZscR;>TJ2g>CZe|k_?5@d79{6~!k+q_C8qIs6@OIIBE-;EGmKB3 zps49ETJ4rx5!f|0(SmZ|<{+Dt38|4GB#$o8n@-=OMM6DlXI94?lPrTp=@?n*KxMe6 z6LcLbL051l`Np4Hf{u(uZm3_PQ#RKyqzT)8I5N$989IBDu+tGsXhkeO=;+{Nxp>a- zE}OKXO9v<#oz?-JU;dm-aZBMtLkA?he+rE<2DdD-rO(pSEbW1LaZyM<V3Opjk#A z1F42pB`W0<+H3gr`0#o@EFw4P=Z6b?Xk{_&e3qs%)i&MI?Wb+GO||9#jmln9wEeoyR&qI&ME{mX zhT37|h0{8vXlrDRvh+EkUzzFZMoNlcv-2M9!(@n7=E-at{5Jb8YhEKNF4 zB&`2}ZiDk{`Qoeh;INIHS>wZGgrE5>5LfETu6Al^$5u8mX7~ILjF}fE;o|qFJ}_th ztjgTF-#4hNJa#-D8ac1V7g)mJRq|z$x!aBN9rLK;uUr8zVeWf;C$}{+!)? z!Q}BYKZg5*BNC58*;^jM$!0$d*L|b5?)>1`bP`pm!x9nG4Ii*+vfT8O9}JsPAMKZ@ z)E8q&pXXJE<>Djfv@{Th_7`n%au|nLFI=Z(qd%#otnt3KS5V2Bu>M*ilNj8w+mrain7xp zkt&OWd-#p*X<&|PO2mr5P?ChwLuM3=(weX;r4qskq=NhsSsAy;_#wlg9>QR=r{Y$&bmi%pd@+hs=uFWH@C@nS78jopMP!(t%7pZR*!W zW^*#L6UjC%!-q|)&A!UYY!a9MR@+~vhh}YzJO3?fQ1H|xx^}IPPrjh&!{Uq`w=Qm* zn;YMKJz{xj#>=9z+`x*_-M55=DU}xyZOAYHUMVej=q!q#h2a%vU87%vW1$P&URokE zo6{x=pi0S1IXGmF-5%Rdmzd?D3(5!;Rh;-_*zAM_W^BgJ;`{*{VS5w1VN!ah{l^Dvnoy@|fA z4i4L!oxALza&9y1wPY($yB(QpBm_+73Z^pC40>8~12xQDNE5T})ECK8FyT@YNMmI6qr=VkRr=K4eWjNJN@32VOFqNdicEW}6AZPp58sz-< ztE21SWICSD)NQ3kpTyE)luMv)R*Z(FsW2oFeZ+_}s8|zb4h8=E?CRq3-5Cam%Ggjbzi}4V%3_GLIOv; zWbvk@q1k(MG##Z|ybLj7s8!n+|qWMv|&y|fk~Tzw}$1tRowiRk{7J=8xLqm3y7e5UFCD>1wj5`OT6DgC#wmbU%JUI( z%A~Dq;aq<_RV_BTN9X*tNYU>0qqmP0kH@d7-v<>7Nmx(rH@FA$(?Qohz}bJ+rg5E^j4zgptOKX{je> zc&M5xN$#0&Ne^qFW^M>_j*k0**7v|nn^tGvd>*qnqV5hZtHO*aIeS>Zrk;u`j?X94 ziO_7Ti$REj>`ND4pi6+~i1ZA&RawAfA4NjW?bs#H#>uB0dN$ZZ>NQitUR=U&oD5Jz z%tU8v_0@IdO6piDmZlEY5-0h}>`s{cD@$&v<%27RG;`26`8Ii=Xi$m~U&FI%G0Z^3 zs&=T5%QR1=h*)i9nM;b&eqVhbmGYnVH9UDpc)Lj$GkGCP{_@pHaDMUTB)GZk9Nh$$ zcaINw|JhpBBoQ!L8O``pCB?NNub(5g%0#UE06W7qSl_X5z)_qpfoix6RLi!*)aqk! znr};}%9EiLP_Vo@*W zv)Nz4c|3m*E50ovCG$Re4Oh6^aBXOfpyp1_HG+BR!lfN5GE&QLRWb;_Hcltw3M<{(GokBPdY_VjUBFqv7C zh#O&vf~eH*+wLo!?8&&V|FZw`j6cAoWk#^ox>cD$biYV0jdRcDAA=7sqTuTBet4Gz z*~IwLg0YNY{(1GzvLjx0W;lD@Ug4=cJh9tP$61tVmRB%LrXOLH@9$%ArTXeBv%3Jz|fZquUAhIZ+zQpJCe&o39y z$v1`PXw&)eI@nB?Hr^|tVlk@Ucuyjue?aQ`9Wvrvx1BN4WR%;z4wB>TUN`KHySP#X zze`P%a18`pMH!(DTA!^L=4$mBHA7{Jaa{&|QuUG8$Z+*>YKhU_MqzrK%-%^MWJm%g z7cdCLQW$(wonW%3Z5-A(Q%(|Cc4jRb}u-$oN%O2A#N zoef0|b<*FWi;1437)?q_Nm5-=krN$+tVqGrlc%X)X;T4{e(GG~D49t87wR4>H%CGj zCpX^AlVp1GFo}b=)6om}L?z9oP5tnM71M#Vp4uD^xcsSyjB1l2#r>7=&@DHl_SSHz5h62`YmJFB@*V=q5qASq>U zl6#TG3l3r>dNxcfPW)wQDYXYc?h?A8&8tyO|6LTSqav zhl2jm@Nuy~?_(yHW{hZ1x>+ZOJ?elOa9QG$9i^ptQN9_t*(HZ3;RYwb$j}k;Fu_mn z{?YhZc&2Z^AU12MufL10+l?dr=Y93H{PQs1^kZKUY}b4(-1Q-0 zt>F;1yqJd|!d;~+m0AR8Zr8hnDr=QX;6*=q$qy^h6q_F0U zZT2xC)uC3R6e&zQ?6a}HEfgUDlZud94=0svpX$=Y^t2eI3a8=&Ek>#zO(e2ff@?pu zMA6kDSz4&bE;V>q@whXHige$eXKqxZ#L7k%JT>5Y2$KtNdu+t{nj=^wrjtsh&LKpn z@#1flfR{zqtBdUvYIfS|rGWK40o(Hg83WdDQ(A+wh^B-MgiQ#p&w|0v2PxB+llR+5 zs;G}kEiKUYT++C;Pj9N@BmyQwzRZF**GJ8!%rLH&JlHX!UY#;vT-t4`V3>`2kv>4&3)qZ$h>rrYLvblUq{^YXZD2pBxJxDm=M;)zujQ&L#C& zb9ib|ANM@|I2i@+2l|Xiqb|A3v#5wn*-PEYDq!QPIhtjyoS)VBYLD8cyK)^R(*;ZEk)coZ*e#%hQ*t~eR6l?w3NP~|@IYBp97ui{X$se+2 zo+6UXYRhs?pNvr?K#&)E`}T#Io(bh3`3K4dwJmLHm&m<6yIjIZQW)W()TtT^BwfnfGwi>sGZPi*u zcXBpFgGcM=^K8Cg$Ci7v`cr(|#ZlVI4pXFDZPzLyKH5{kO;hf|C8w=!9{$*;Ok_8I{E2ro*>nPMJ@kuj^6Aox3>|5Y)F}C zytfd%oPAB^CkODd7m4VeqD&L5Fh_at#6qsw6nnYu?$lJg;q+@Wvz?8(tGj=4m@zTR z3ETlQ4!1iLfQN0>_XVd%O8VjLtG6c^(F(pa!xt*?X-F96uWQDaEMjWhDlO|7X&sAU zy0!|sEq)D#se9x+8Kxe>q?M6qP?RFpxO{aPd`RXGj}Pgf$y(ak87iAWZ8~D&9#R$) zVS2=;aXFdC(@$}5vzR9cp)o;|5fQ;M+z#EBSeNlcEAvnoPo)B7(dm4=B_#-HhjhqW zXB|9gLYuBN9LH*9A}}J6K==sCB--Z+@>dp8uA^)A;(u8EEn2v1o+RqwT3Gc-PcopB ze3&d^%_Vcuzma>(ruKF2%`L}x1M209ypNsKrr_UrOS-4nvzX6Rq&psA{j2=Y*%b8< z<0ohGLf5@zYrsP>cYgWI+%E^MY!u-kwPbA<7t!ZU z846XRJD6vUb(R3rd%Uzl_&#Yw#7Yuc*`YU9P?)P*&j}Ddosk`IZa%Rb93p)6Cn^<7 znG&t=rR5#DY!T(Q$|WCc&@%Xts^m=lUgHBh!uN_ZK8KZoWII@fMs1xtkv6w+SgZIy z%%~g~9puQmO;ckuQdL3-(E%gINafd>j8W3H3Fx3>QSyq zY5NvQ1JuFhJOz&dP(1n1V{kqjPVSPNS*l;eA)uaR;Zh^TyW=cTibbkLE{gq(rt@3u z^#a{I$d(i;&7aher&7K_GXE0a<)liFf7jH$(pzHGCDRmE%zEc;aUeb$utb=;@Y^_>0&vE)!%& z`1hr`ZqC~4yqVoESeNwY4%J}}@`Q(?SI71Y%Z=$xd8V{;hvIy#d{cLm>0fo)E$Y59 zdL?P8#e65#?G;_@_?6NXVuzCYu=aeJ-95^(iO9;ErERyw)$~)jb|jKVYO>!+mdJ3S zG~)@^Q|%zz5n9b%Znw#;<+^5=4?D#b0;;()rHXQA+a5;!m~T;mM_Y$zN)re1^eg&F zQOCTP!k#2WQHZMPnKeAJWu=oO{VitKs?LGbG+8Uu^GjZHJBzFUwJjhw$&MKK^>XxlA;^q3FO%h8wSu=Yy zxy2~6wa5^?4i}N^f~m($f?mWcH~&;Oghn0JM%W5tu4u^TZK(UtpZ4DKrdo~LyfttH zA(30Gq_4X~pQDx&F4k#zsn4-;q)G!S+eFkLLfP9dOvw&r)9-Sx&LEjS$Z&pd9U5aa zN>lqJbQ+^i!cw<`4=wR>4WOWgOST-@>hug;KO>bXI2ItK7ZRL|j8;HJRn}%Yg7?Oh2Jzdt_!CgGCbG2OlQ$g;)btHuzk9nW%CG|_Rd=aDkswfw$71dktANnJRIU~TRj1QUxfJ{OsNaz77 zyB#5cB%$51*Xc#AOgM3XDjqRZmV*gE!=D|JTvw#h+(a!R2X|ZyABlk2B3v-Kx{R zRlOBqXUHwdiho^ynm;})?&F6AI(F2S+9|d|e+(k5R%Rv1^``q$`4W~&{kvKj@|h%V z(AA|2zBP$*%T`O1+dXlzNfrV^(Xm^aMq`|s31^1sVqJyPxxy(Ke2qT`m)N~##y#5? zuN_GcYuK7);`Mqm7dIQu@0Fm*NyVIu=_tro#)u2Kg8=SUQM2Vs2%G*ECnsjJ#@UHA5GPKlO>(K3S5o_Vf3SLuGO3!gRFgD3vbW2xVCvrpb^{os7v& zrDYb*adfH1633rC1XUuey6quYZ#7%!JrSI! zA)vTQ?q>^GOptb=L%S#RR4&*9pFVTLun5>iWZvSy+;&D7HWFvm=O8;_o}GBVtcyU; zK~;{Og^}WOgxKq;&S5XKlG*F7oWRPT2~Wd^lEnZ{IOrmvzBf2`F4c)fQrt3kv<#^+ z(mbW*oA?f8{tCs@RGbE#SK3XMI#U76s~<}q!-mH;&l_uyU( zvYRBh6QbER8QcLVD<8uOhoXHZaRuunB}&%RCSS5!<8&Z^AWH80(Sg8^d9S%;m@wO? zaEes-tilP`Dld}suAMa645(z1#^?-NB%D#L4Ta>cJNBJOlw780+qCUqpT5qUDUM~? z(Y4G>)>UH(ML<>EZo&E(#e6ZfGVBVz3-sBP?87n2l=~%aWBcZFsg?q-!-eNkg4lkI z#}qJV!Z4hD!)V(9D9eB)6iX6LWatk-=^15~D0H1FOCQp5AgOv}&r=JZ^M?otmNV>} zl+eL+sbTlX!%|dMWZ22jyBWLhV#OR7t1eeD80rD5Y29bS9JSBG--t!;)9nm>i+ZM6IrLC^J-M zV%k>c#JkD#@moX3Hlu!v3fen_42{N?mLDq2kw=cI2pOuHbcxR)7=|JKd3H$ zth2vc79{L#M;13j--3!83Y@iCvypjhNtQF=)uv#z6dTp>e0<}Abz9Gu^Hv;m3woP! z+W`e&8&WK;8JpciYt3OfDqSjQ_f*s-Ej6|yndgs8VV{*hGSUJoi8;tjv&q~qL_tP; zemt3}txc94gf_9v$lp1JUZXZGL2%Y;aB8cS1yQ%PsxO$O+)4!G4+WN z7Fx`K+xu*KX(cA>addVsP0Fs?dY~IhWIsIyxPN-}cKZ2o@eiRFD<)ib)~eb~;T#~4 z?cf$1Uc!X5r{Q?=nB5d$rehr6q7y-84@nsvUe@YvWpzr!O-j!*bGBD^rzJ{mpI4L1#>zZODQ+i zMYM*W>5)2H@KdF1u08&?_gb;E(1T-fp8P6m(MutACm$T~t$grI_-$LEC9tkjy2(8r z)o^?tk0hr)s<{%BCF>PdYsA+uM7TpX8%Ug-Uj1>Swws=upNTutHRs`>^&fYS3CkXt zcAip12fb+!PHwTi?niX0WJj>tDqAu)iId1qXyXVcGPV4j^3Z_D}Ll9n|(4|n#rI1HNk>} z&%r6SFwO2C#2wJx=Fh>G@I|*Pz%qJ0gCvz=~AnrRZT!jzR-LV6?K6|0O8&aQad z$=xKu7W8?d_WzvD?mt7lhIfgKzXGZ=7$>gn+f068P;VN&$eg;8uv*-^c;i&cz0EtX z?af^5(TGj8kEv)(m&8%$PqT4yAO9^cU;y*5G05f?jbM0Lg`$QiJv9aen8Be^9c=%1ll zdyNM#848E0M52ku%U37C`Nf-);O4S(bW^a{zqYJ!bXKP#?PF^;9+P2Hy|luuSaD|q zCtM$_?-R}?Hfo3YMHm@mh>W#1r>g0!l%Sfb1#OY`TK@!>K{h#TQNT~CG~!j|SjZ`` zN+C+Z;LRywv`nNQgfE&=a6cQ%g_IW8UY`N7U~*j)Vb9l;!{o7vTUz91p+z1=M2L!E zdV_KZsv#yu2EndxrHiDBD7SxJ#PaeR*E}vKa?u+LO{Ks!UTU$D34i1kv+~8FWx)2M zIQSj@zA6R3N9N#-a>Iuaygv~gW8 z2&CYINbnadQ8pQ)VS&sZk{WxI3wlWS=4*IH2R50B=VF7+6dF1uH%X+jGM~-<3eMxX zC~dSe#%F&yfW|7^ZLGFJ1Sbt~yzj4hOXhX=6g=)o!z+a>P80emWT^f6aoE-<$nmv03)5Y?zRg zg&bQ^p$aaIjes)e8qt+>sobFcnk*)KJA6)5T)l}TubDe^tlR-Qwk28U<0GUMACl7V zLo}$qiN_z4h0KYcJ`M}YnoEQ>nFvk1ozfW3+U=1MyNvhyFIOf?YiktMp=2VdL92Bu zf7jmc^!so&{}_CD5d~L|_oC9hmLhjioKhx=KRc_DR-jUDuZ}pQWDo_dp*|!^Uli0< z7X?8!lz7Oir{u0?)oUt4lBG*&H8j*!*0xaL-ad-|tfYWPv}<1sWa*6V-Xbsni2~*9 zBp7_gh1{|&{Cvs$0d?vfG0l0Twu z7|AGBrjM3SV0)PylMvLG7mE;-YnE3kd)Vgoke1md^7`)kc=B-)d;n>hXG{(v+6}C1 zQ?67yDVNRp9FNC$NhoUS>dV$Ih|AQMZG?%OL(+9${sWzrl2%LqH(aSoT|3IebPhH} z#iOvJnv=L*M4%+=?!)a>Kg#|4&#YN|n^i0O;50k-H{=(BG0u03m{_!u-0^=%99rOw$^1 z(7^<3F3NXY*H4g{Z{Nst;5s7lZ}pK}ieouzODzZl{S#79GGvdro|jt0BV}^2@le{_ za7f--pz<)8AH8WmlWv>1`x76u>`SOpE;E~rhsgqEj3MsqmD-lSn0B@Dk5@w5lHj+%j6-z&1UzLX^h*TrTxB)Va+p}v(wCv z$qtppVK!Go8uYi+>V?Mg0A*W4HnGh0)G37Lrbm}#KST6Y80of{`e78AE6rAtk<{N( z>-n`G)hinBUuhAA8p$cqB`!Af9b0ZN}Xu=b+Ql~{wGX@{`2zmAHm5qzMFjv&Z#BP;$NgV z%BI>ZT|1Cfd=3aQCO#_o(dby^=+Q+i%|&{e-%h1h38;5(-^ex?wyfZXyx^Uq+Ft?8 z|Hjjoaq!#hyBaCGynD=Nk!&`hJb`|*YM8E+O<3tL5U6YiLWPCvMk-i9jaR+c^!Z;M z$5 zt`f9eov2w@gl;d|>qE?*d?-U~^|l6QMW|L+zebF%Ixmo|9YL%{)XWW|^>g8#GRC)3 z6d`tY@-8^JIz4%X)kl!A56|8D^eKRX5h4d6Y^`oy#7Yb>V^pM{MwfO;GWrxppvXo@ z!Ic&uWzdebc~{fwgsbKusot1jYtp^BSx0FQZjp|TB$ZkJ?M5nS%RoXdhqNMxO*wFp zyenm9d6!-Vil<@0M2!5ThNTRY_SQhD;jUOxR`*Zw7)5IF32&wSi6TYd8-kvSmc-!f zCb)i_4{6b(p-+1fgR>9EHGR_Fn1X}3j^;a?tu4j+)DKc-f}qDv+G%koakAC2 zX&h74;hJ0Vk41Sk%j%D*G~R19J6(L;5Rpq@!KA_%L!HIsk=z=A#l`6mQiLz%%S5A+ z_#2O(@kQ7mkW`)_4Kpdjq&m;66+X&qmKuE|29)5aA7JksDGkScHutc?&_xc?@QGiP zxw9a8advYwIK!q@G-?HykCdLkKy1x~g3UUFsh0XwBxm^0=m?dc)P7M!yCv_>A;a#~ zZ8bu~EZqogo(i}TszD6+2UtO6rFN{VC%CELjp#rYeuz01Ye2N&mNlW%#|ZL|W&fIBRlxdacDy)nGmR)GSt_4a&#ari&<yo_1KM!` zXl_UJV~zs@E>(mkUC@5|x8&g=xK2i&)OKcSH896kB~W`}*cd3xPpgCw8;=yIH*e04 zo5y15#}%gSCU=~3d6x22)CyKXpN6rj;ZT}hfF$8+Xqcum^sIbWcUTCsYHlZ3KUSFl zdxiY-l5q5RAd_~XDKOx2(AjZ>lLtS&`$ywv^;|G8E%o*HU!<`)(tqA>$gky}=gBA8 z-_$yrr3y~3=utuKeSCICKI0RRE6^uEZcKipKxW^;)f(PGdE$^_^Yj(zcTif|AqMb_ zPeAWrIHvyDXvD98%);#ZXHc$_yU(BEVDM=+`b#k8)l%p+7_$d=qx>UNZY#^;F$Y#r zqC&taJun6c6*Ssn{%e5wfq8N#JTYDAro#y!v|95}xx89|#WrB7a4ZZ{->wJzRsfTf zA?E1IQ(qgWGUkgtZB`Dqywz+-6YlP!uNptCkRBfUf@2|7Q)8%&!|)*C(WTLoaX2E; zQF@;zRO6rZE2Kb)mFr*msc0tX>sS=;1gucywOqx`D(QGx#5i)<6F4$NPMum zScYp2Q?^9Hdhq(&bKHG^|f%?rzwG%K4)`z^EeEhVK zGQA!3;e*!b>C@jrR@t3Fm9-U54e2-gUT|z)Klp4lT0r%;xb_)p>8J%qTQ%+#7>t4F z)ef%Dg2B(*k&)duvHdnJ`pD^%bVwFrn-?QDVl{+{e}Gl-ax$HzWDJ`id1I<&X4RGP z+=Fkm2pB=rdQC1JdG``yY_y}kf-LWu3Ly)A8oYk{VViRds%;@wYzSLs9mQ|y(Aa8u z)KDv?9oTV)D2KTn_d%9)){tc>q&pdO%?AWPh8bvJ63hLRL@B$4Zs`7|V-772DpD&A zM=b{AAwixrAgTpQv~f_BMIv2#QiQkwueMx6%ThmwHMK|R?o|u>_R&1^y+qt!EYZO) z2pp!1SawjN^#_bemQD?XR?PYt1s$YFgza5IObUE`Mz7M8pt&@>!ZP!A%rUsxs6Zzt6t% z&78Z!cCuxVUGqZpQ_Dc__&kP*2;Qe#bbk209G3fWi)5i16SThmU@cu0a>Ew{hs{{U z0UN}~%mr`FYEtS3mPF@*eWGxre&w}U36eBWsI0Fgjrwyk2~J@@AD~xe2Q?Ya6=g|z z65X!~;m+Z7fn70Ja=u8g z4&EhKxX`I4?JFwamDV{uLhFh;CvjtU!oB>)97_k2h}xCt_Y%xpi0zpsjzdCAlO%0> zl_m-aJK)qD(>+WePO^&blq%pPrhDi2Ut?VOfmyXqK0msz@>PY~mwXOm&!EEAMw%om zAP-W!ev3cH(=~{dN#v-LhgT(KNx4r0FPDxfa9n*2QShY|{Pf3QPZ0triZIZ=gshnotEVi!5FDv={J!(iBqr4>fo&k%;JyPk z>e3CTG1}_Xhc$7E9glmvmxx>E_3vcKp?~w)>{i#f5PZvI9Iu%rW)Tg3onJ8*U?jh+b$uQiWGDcjih;eY&((mUQ(vXq z`Yb@=G1iae05NM!H6td|lRgg^dLeBNFyulk^xP-eAQQ$$tu<82k`@{+-kbzCmz|@N zzoZyKH1hbh%l$=$$Z%hqEc_Q$ zYbuK2ygXFpLnS%{P>i|q;0GfvDy>K4rf4ZK(RyNW-*0dw+KE=IjC& z8gKK03qg-c%U`54nTlSv@={Uk<$^eF;gzRN73S>b?Ylp25NEs+Suk(m`jBeI0CY3o0=QUBP9O$7rC0n|*sl+gE5gGH)P?dVGhn zG=9y-`w0rK)A1~bUX>U-u{?bISqK<*`-mYnX?^jvSTrt|i(B<(pQ}GhZMamwqJpw@ zsHR?4X&(v~une)~e=IIy6YIJjf}j2~`#zdY$N99Cc6h_ElO9&2M)|O!#3K*e=1uB= z#SBV}^d8-arQeuGag>*ctNb3|mH%!16DV49yFEA&u3|glRiXu{Am|7>l>6qjAc$R= zj(#rb1@-(Qq>tr6Z2KgH1a1N#D=2li`~TV_F~zCOjQ{#Ci@fyk@;s&qV_3kLSn45CKMqksnj({CH#2AX6|+Bth1EKUgJA#MKKxE4^8VL!mv+V zgI^Urw1}I{ZW)7|X%+T$FHFv!j~d&rS>GaJn?66petbGx2v~t$97N1UOs`!mK_&IBC8Kl=)#0Em&7L0#Kz6%(l&E(SWQc`M^N8| zmsm71#6N(Xy8a2|3Ejk|lnc^p=e)cAo%oIcm_RF+jo0whbs9SdQISj$6o}{*Sdj{8 z(okmhu)rPOvtZip7~7%+K|(EVZIG4Q0!1>kNO&Y;Ew*eYiBh3T%i((XL9yiu$Z+Ge ztm=eKWlhom|HIo?Z%^D@q-IrvIY{Zfva0QpvGGa5nq?lFUYF*neWuVgGPqAd7}#QD zf-lYRMN?*p4EriCrjl1z)m1!qO^-~A6?-UDVOM-jlTSfRR|tIyVm4B2p&IXP8QNQ< z$Uq^rq`p#v*a9dD1OD~<1#Ymul2vbmT`X<9?V5*+maw{cbjx#ghW%TyDN4gxEk$Li z#!yw22??QSiq7D7h0RRf-12eO`oG9*kg=u_0y0Dh$2nFPa8ax-VkP18yPhuJvd)zG zsG(T7WCjcXF(M>fkhv(Z#W@71;tz`>KMfm!|N8|G$4jVn#t{K7qX5&dVUUR}fkR*8 zP%auuP_$^!?)Ex3*lE~M^IJ3#7vsSB8t&0TBaPX`c5ycj*Rq_E z!mAVk5_-}O+Zm;az|>D`*+`o(il+ibO?B53mUOBK2Ud=Y>Gy8~F_|G(m?8=IYVu|B zKucc98J91BO>#*Uucjcg#VMcaGxqHoig^9@p$qLtn)?i zZZUolTwx^n78~YKXuA2Q82NuWpNv1|LmX-FYEdm)(&az9npW%kMoat4=gMH7t1TjD zdc%=5tBFMj^5!Q~k&H5TZ30n(3}6=jmbIxqG&rsF&iW^$5ll)O%nD^u-G?OU_Ex#c zD5P~jT9Wo28s5A=?2{j5r*Zk}GB|mCeRlQc-Nm1@MML^k(bH>+k`d60>7_ENKp{9bAV%_a@{GAjub(uxV zxf&z$N}%o_H{&kW+vJunwox*dLD04KEJzoRr`(vQ9W0o*{H$pI@dzLU{dFV)@JHFmK1-5$IVw|LM3A5FV)y$0TUxzv?2x(-$^7B*A<#Fz zB2wD4+2=m(k|A#Nl;zR_marZ}RGvWGp&*fx zFZzPw$hx3dUQK*_oRh0n^9fYI(M@hygMdVAr8rSo%<@QyI4zKrVSv?fM9nIrAj4)y zLeWNqu56|hU9%w&L3h$t5%H<^l_Qc_jaC~GvP$idN=c35rs|j1(ehpV9o9|UoMrJy zOPQnv(OF0{@wi;GT-K;o&2np50u}c= z+-GV>t=DX)i(H9xUGPr3D2f~L_$_mra2kIBrUAX>50gb)>|0e&usAl7zM>&iT7G;j z`b1@uiQ7Dup4)XWT_GqdpRt2ruGMT>wt1Po^575E9vkGdVr=!_=kC1ak#jWqg_~UCuHjs2*Y6Gob=# zidkr9s)VW(v;d*Cs`Cz#`6PJ=2I^08HmvqWD$`dzVH&!$eoBOdO;;F;ONXRCHw2G^ zBBUaQcS*j7ZBIlk1C!IjYnaX_*ehWRUQVX=1U0^CaNM%3{yZ7U1_F!gu4ep86z?hW zRuv|nYl`h$O>xk&V6nKfdCo0|08u-XX*O(zlm;X9KZDXoG%l1jSqb}~xWDi|ME!XzEFGJp1b~hP zNy_z2B%5OuMqxfGuT*>PI@TzVYh|HrrjIoWrsL)$p)@Ij_z z@QXvO_Q)h#;R7O2xi&Tve73FdVf(?S&te_3?VqhQmt36%Mz8rMF3_;_qyXvo$_B`7 zcj^ui)@gCrr5J0}R)yGu1ihO~AHOy9wTLW1DL@AaasxEtoo+h6W2@MH+n^BvbWpJ( z71ID6RLoE@3?fRl+~nnwX*y%QDrRQVpCDTIbM979!KOJw4c80HGO70`Wj}=g9TZC` zRuMpI(oX~zwgl}NJ+uKjICraiybz#+in&#cCFr1H?f@g{+AXky&Thu=_mhWFDC@MU z{a)8wHx|uX%EnM-9R2|+Q>t#&2I=N#NTUmB)%|ky_8S*ZEX}`bUgxul1j#M=^kGZU zUL7#~Z#;b&2PgAUJWj-Bz=3G>7pIXmDtKsF#H&9>pr@P6bE)kloQztgnOv`6k-wxAp~`&ms4+iamREPJv#3!%Da@SL+e5(oLXNGtN#Sr);{7+||k3-~L!1I<~7SOMdPY zI-RCkPR9ga$<mjqdj%pI!A7wcEFTEMy-Ca%Ak`hH5*x& z+`e!7TDKvyu7fY1kwy(zj{tMYRUR-kn-*~&#KUC1n9UZSis|}~O+tCVs@d+iBAWw1Ie=(K2O0JQK-!QuY1zEV z&oSlsCBAzS_3~K3Z)K93)@aG{d**Fgz~FQvImN}&v!CGDAxqShpyKsnG>E}vWT#-BCMZ%q}nWS0A=g-v*UFHuV?d75?nprV^NIQ z5Scj*H7aEkjlK^40rrjzS4@#&)zVlMw^l$YsO3dTQcj|xepVZnoK`nu3PXIX z`VVUE;xC&t-_m+E0~Bc4prngK90HVPqCK>X7W3-pf#s)fV6wi!^zEop4Fwu11ZwQrNtp6rT4O0ZY1pAN*9<@oOh=I%Zun+vh49{H6DMc zmKgQ((Wj-@LaXVfR+j^D&DB}~T4r!!LoB=&RO5aqLtfepE^IP8_%D;$Jj1Ej5}Tq> z>TeXADmAS{sEYiJ8Bw&$d!!JM(k8n^u4+rq^7_;YxvW(m=9!ecD1B@*>r}LBgEaTH z*^(OD!u?8=86u27#nV6IY4B!(dv&q&UxbFP4RY4guFwA4zHpsp&aqxX`oapZx{(5_ z*P$_8Es(#Sy#Mp$y#VQ-bT8HC4Aq2v`@t65Q~)&`adRpzNL3Eglqv#B36!|Ti=3u0 z-&4Oq!qgR0|5YuUsrl2kMUe7!Zq+E^h&S8Y@^n3ad|1d3d#}Zb^$xcsxW!3akC(a6 zdY^0(Z$3nMQEfidGW71K+v%o#&r2I2Q>jYhm2KGQirXT1Qvgq=V4**mp4s%fDVQO2hy)n@)fN2feE4+?jVi8-&O#!^x|QnF+Bp;u9hS zf*!yc2VW7 zGh)Xkgf6F(dxF{+R$TB%^ogkGiR&@AwqiWNbjfUr8u{IwQoyatl}DP+O!I=-$~2y4 zqszC_kj)w=yrLhs+lh~KdRWjkSS0bi7eIweY(?ImF85edISZmZzDvaPDiV+K>lVHy zP|`9Xfu>Q?5w}l=h(?6w7Y~Toh@@3Lhm1%s#yg=d!c>JYL{}*jJCUy~in3 zDdhuB?oCn5TOz_Kq|GcMPV$nclnU2O6h?LE@Y9wj$YwKE;W2GIq!th-RyXf5s#h~n zXl9tp!i1;Ag)DbGhScB_;r<5kL9$S0C4kF3!8#5(V2B+BZ$GFn2ckD8xIW7Or0Rj| z&E9bQQ=`j4f6MY5kT8jcGyvV^5nr~`kJHiYJ{Y`4PU{XfT3pVIa*f6Uai*+|(p}~{ zs8dqF59pKYw0q}t9b6_dE7tyW@sTgHjeaKeAwTo@8Lv{Lcwf%G1s#!?6VL8W^7@dr zGGX7n1TPPd+)_RX&}4DB60<3nv$>o@l5ITOnjvX-;NtLU@p>x#VE;b<*U{z0pJ!LW z>BWoS-Sw*%!JCuwv&)lLxfi!|(Z{ysPhJ(P$kXeaX2y|xefWi5V=-Dm6kPvt_3}cX zwpxc)Q9|g+QL9+4!l;F957b11%tv%GAW^lyh_!E(D{M7~(lKZ`yZ$6v8Sdi;6v={C zFqsBn@akFsCA0PH1!^m#X-!K7$|Fn9sm01>T1UCeXSp216L!krkxS*M_#-#Z>?1_2 zNI|3>jv+x3qHE;2K0=(LqsjD0UShqPnW`a6ik(!n;i)uS4O!BRC2hRY37pp#qk_N3xl+_FA?2GsDX~`fJavR~y zDMg-%?2SAr*_)N3xKdNBdizV&r@|DwYdomzRPcO_O{s&ju(=dBcjtUn?bZ&T>^{kr zj(h4mEpkozC!`Y~4yT1|hCgPlE}3Ln$w!ukoH{jj1aB^bo41l`Z@mt$Sb3>fZLAhT zaj;&9((1?@0or0@J>J6V@@C%?yIK+Z%6+;0{MF+$cpto)Prf9&g=lqlZCdV9OSMam z{)?Dcovcx~o;zG&t1LG8G8v-QGMRqN#=83y zpA5&U$Q`PUU?Pn|6moW-B*8!|0~hV+W=oopF4RG8{W)st6U(+p5i#_cU%^0?OjI{} zBdHQ;$S|9sAL}82tLg`*pCX&9)OMkzn#ol*r^16Q3!&$y=w)GS<@pur)&ihow%Y;c5T*D>K;Vru6J zgoc)3Gz2D@lPVN&*p;zC*N zw2Hdu?Ek(tY2uv>(CsmwS}xX|(W>uam9%Eule?Qv|Aow9c$q+P(vFXXwJH+M>SI~n zcMUli{p1`AXKJqUtokpQuDN3HYS^az2(daE#3q#(dSjQy2!rWXa=43sU1}@o`Ss&! zLzqsklz6Tis`3|Yw!RQ+BQuGhK=-d#h~r{M&cemnMY&9_rg z%HoYyux&CQu`9>r;d(1!x~9WZBTGypZ&8ab%^{=K_;7Xf^5RBk_FzJmo6~kla>2>A z!2v2XwRcQ=6+(5Z4A4-T`sZY#FKY3LUwkPNhs5e7r@@P*^8V0hB}w^^Be_}X=SVcL zR8cnZsAU{%voJR!M$_d+q+c<=hTef-fPuf!CutT;Y*w?-jE&nG6bO+5&c`_N4=CPa zQUqLu5ZRHK7NVP|+q7J>fzW!Jp6GnLw?Z$64_}IOz(*2F#wR?c#xXWR5+AL7C90+c z$>_RD>E`hHUm3+9A*@$ZeH@t_Kx+ICUx~&bq47|GbdaR^{V&$-?m3W_m!z6r-<>hs zJ-ba|Zl~XEb#Ht9Rx^sCt_Th~y)K#s8gk#O@NGV}NnT<%o_(Fl5m!AhDFR>_V&RYV zRBe+7ChZnjqcCNz!>iHbtC2QhJ2X43zC>7~`Lf(#E!mxErG&JP-mf zn5DEKBaKd{Dw0^&Ze(1W!}zHAe_29uBnK_&L2;40cwEQ? zG=G>j&2a|l2ZqQp&`GRWw{&%>@c8hg+JZ#slIKDyEqTH%Ybr#EY)#uFSZMMy_0Mo{ zTP2pIuHOQSO*i5^OZj}j3OnH1l7ai$D9*$w17v3@ndw;8%7ZFZSgTU1RBo+`RFU$! zrK%YGbUqs=cL6RP>OT$3e9CT3x<#HnAX<8qo$paQiDsD&QPap_EO!5pvt&*q7iN(o zzvz>^tErvO#qirOMLLX;R!*sAHB3uSo9C|FA*)7xCA(zBEVGY`u9Pm;l&F1%iuO?- zq^dCQsqK`8N{n-p0@BE)J14at28tJWg2Ssg`P*>z&B%71#Sh;H=lNp!k51vqlD9j} zkqB@w`y&4YC{aQ|tn1_i-asr}?sSh{{+^4PS8OaaI6ECkpawn7lB6d@1E6iBZy5GHp9MGS zH#I9gAH`#tr^0xqxbw_fuc9i!0syMJa1Exd8WP1CQi}fUJFC2c6zXP_!L6J>Ea|^( zDKmnz$Sc=%AJ)Imt}ZU${V@nG+iXpQp18XjH>oGPFsBP|EsZVSc`-^NG#l?PR#Cs( ziH^JNZiKeBCf3)8ui7YD!nQ=6C~EXyP8P3b*+zGR;M7l$m==UIMFkYfVrYL9dRP$H zGO31?SfTmn^heMi7$!u|0XPekC)4qKhAEK$0R-ZI$59W^bi1vn-R;VMZbv=*lZNK? zY1HI}J_a_zF4W2$nb4@{iVoJQpJ3xDABAnpUTmZrKRcpK8_CYkOtmP5A;JX^EgZcg z3fWx%0x9VLl0Iam)ortcoa0CEB90X=L$u;b59aJ#!kHy7G&f^{9 z-HL;W|F`737Nu3(d4U7tO>f|MW}Dftj+pcL!~$hHV7Uce0 z9d)`|h}ZY_P_-3u%unjGYt0r-D7D|=@QxsmeP||1C3ue!4hXS?e!{3ln-@)NR1jw^ zZK1S9Q*0<_*;G5l3S|=qI#wzdg^huc8IV{1ZYg11|l@g1Z66rr7UAgmDEv7 zIYksQWvvJnZ88)hHz__jSr#mU(%m{im9jeXU3ideAeJSamF|jlt=n?D^T886AKqXe z{}1tQTX?%7a6{t?-nRPFP`_Ep!Y*^~c7y4dt=I#*TU?90Em)M-bqf}4SKbEASlM-~ zLQW9^ilhuucnAkEl?pi#mJ&8VhKH84%x7|Uc3x(BYs^zwrm{|eOiqM6DO*Z?p%)C4 zgPp?8!c^i8siO2w9|{C$5J-p8NcJgF&;(F`%2cQ#h}P;%%q*wR3g;!1=A&T>ThdlCuO5=oOX}Ivw940*NlZls!%7`fYMR+*EuLyNn{0aPX{1q9u$?W`h=@a@;HTiaB zg|Z7z5CRpH&jrcuhK-l=+3c_2Jf1&@bx;;EQg*@Em1E1*w#sr-TMD>Jx&_3`7lI%U zEDEuxI>Q2qQYLI`L$+GsimSloZyR#9KyeIMigf#3sr+i+(}=D9c% zFJk6IsoqcqOPWoc(!b|dnhACt=>YZiL^8mol^U!O7ppq5=B%@mA|pAN%mZpKHC(&4 zP(Cq=DV1f_yKN+picPpk9m`lB#tL!`F&62@uFzeGbJTbPXg$(aScbsShI+jW=8iU%5%3u+XC$VL_4Vl?sR%AEQvE!~9MNK*?w$Nth z&E>1$=9SJB8K`VXlRWAe6{f{CM5!Ce{7efpM>vC4zuO$O+i@%akrB%IrkEg2vpfBW$kOvXaiN0ed$s+TNuf_im4oNAwJPppKA1ByJBClC6Cqh>RB#ovW zY!8nB<1gYG(F7aeQAK(N5b)#F_y;_4$gJ|H(crq^X;N&K^ZPfVRqPLY&}?7pb% z%HI0Mw@tht>1V%#hrpDqebv$M*D>+G*JXC)fmJoW{9Ce4wJH5kIDH(tutun7Ede3JP>T; z1y67eA!w45373NU6`os^_Jjzw8{#fmpe#rkB|X#8v)Htmwte z8K(_~Xj>{=7vqBd24Degl?p6;9sC{yM<_3TZ@in~V#);Ts9)n|;ynuQ0fJz1Fa)q` z!W0VwjXDCfOO$w0SbAH9WlQo>9I*isNDH?(2uG{_Nz}l^EZ|cC^R&4RWoIEBLUBYI zNYF;X%f#3Ct#KZIoQ#6^gZ;9)lG}(u$YcBu88Zoxz(od1u)2E+i!iZ*r;31H$c!NF z_&}9}#)Fi|x|ASZ<*_D3ENQH%V`K`uR4a?KxFxB*bd9QzD_Yz{+$`Q3 zezzY=zAnVCtHqmYi$waoxrz{~dXhY*e?^a07)Q!nX00Ph90s5Y^^-c-1-f#o5@IO2 ztYM}MoaKphCy{SqgHlLx?QV&C#Z!o<5$OljT!~3l{Il%e7f&)7&1Vm@+eL75B=!o4 z#X06up_Onh%ZYk4YjB#+-CWR@u;BaNsFl!8@jL}mew8U9K8$B+NCB?){j?X{; zNT*P>gz$)%5C4aik{m?Dgdz@vV4>?^PjTsWU|%qq+0AT=@3zHd;_82m_h&cPu8ggF zu~PlUO5Q=C6SlT<(!MEOS)N&YqpdinpL+>?b*w7*qH-_GYwst>-%iI!KYLxUlFhcJ~E}vTNSA076i_HS)j5xZa-y%;Yc)2J7h^h`~Xyg5dx3AuwxGVV2 z&ewW*kahyjdE9Q}|LC^{8@UzB#Kf=N5Yv{&dk6^}s4A}r-hng+epSvyI1sVmX8)vw z%`MuaRLgkOllFFW+f!X-IY@#p&G1E2-sMWwKGGi_`|533o;DF=qY`2knY-3yuU!Eu zSt_;%sI(O-;|f`6=Lo8%@9UKr<)%wx=5in89MSab3xWv|H3<>sh|K%{&))d}NHy&b z{G9t|cB`$Xe=15NMX}XZTWzbfTU%|~YHPPzL`^%h?bPhfnwi~pQ!GLVMUPN~B!rMB zgwP{|cs+^`;)M`Gh<@Mi`F`*G+nsH_`0<_{w$I#i&pr2??>XmtzUO<+y@M`hc-8^J z)Zz`ysB?X@X1Uce?(gCIh_FX$E}litsX+$eoe(f@i@U4<*;fN97}w|?z=Gkd7GDj9 zlaW5jxp``vDQ@ajE{or2Svq!WZ#{NS!ZLewA+3dYXbs`5JE33vjdCW`<{yFL;fz8# zZD7tZ07QUhh4mnQKPY-+XQzUPZB3{8K`+#Husnyq+@&%H-?8PFm%*3bYUw?^+2B`O zSuwR-cf&p+;|j`-j~|mOL#?AiLqPKiyulFOzgAiNPF?)>a$nTTq{2pk#x*+0z=MZd z-OE*8YFrivFv*NgUr+y&4BJ0Gw*z zsx-QGQFGu!OW0U&*)a_ohZ+b;`46xj`S>k2PDIa4>+@pPx@V?!4~OuklR5_voQ0yE z!2KBb01*x*xDSI~c7cOOggpBH56DAp5{f^V(#}|TSV%dC(fx^QCHOiQ)UACjc|>iY z3u)2%`Z;Seur1Tz*VxpdYj_q9!)PsAJ`b}479WAaQ36L#RF}BkjJ1zjS?~ckZUIpx z4v(QnQsn>N=fmo!AMn{I><8%0#f4>j-7N0Yz^N$g()f!>Lv1NT9~HI>v?7#^fhHzC z<~i`MB@NIBXhz_o2)eFt1Yv6n+X=k8AN{WW$6H<*~&{E^t@v2&HeR4Zgan)2mA2Wk)wPvk7&z+#&_j&S15U+Uw^ zi_>?Hm}rK16aS9(LJ7&jzB@zA)zB5zm915g4s2`S{BS@ z<$r;-C}=_SfGciA#krLFi9URMRXs_h9xSZ!A{y!?p&0;`w_Xcvp=%&eG{lN9u&k5j7STA>&6h?}1E4O?6;Z1&`}2 zDK9UD3d+B6QoF~DEcrU#(FyZjwdjWX?3Kq*i39t-T53q1;G6@`h@Vzo3UBKubOvik zAY^aUx6{|=G5j;mgRvo_Nbun%Y{l4+@y$!H?;Zr!j|DT@6Dal^xlrP0!ny{FdMr}b zy+&7SKM!qxuG`gWS*d;d^rqidfw!l#8YC-~n#}~KXJ)x$jBmQ9mNzkkT26fw;eSc1 zsUepE4RXO>JgXrW{xy&3)>aN`FYtS}6;5wNcls5ZTK)4Bagb(5KSQ{EXV1%eSVEYB=to?Z$LC6v zSq)_(4T<9?3?Nh%kIRwkE1cyH*7A<9uvz_|DuHl0>hZP&OCg3YV#iPIgJ<13P}Ls# zMb*#%U!tG?=u4&ddP-+ugH~1`Oh(Dx`PHkip(UT1FLZzmper9-)i6Yp(#RR#QjkChAr$;um%p5 zgMR#e$$8Gw+0KZ8DD+~B=y8SLz)`391uyTYr4I16*pty>L^}bOAhB)WtBGJL1sMpI z`_*Qw+8q){Vm*ah^Wm*WYtXl@0Z(UL+6r$O==KpaEvb*SZoQts5;*>%fTdm40)E^* z=8#qVH5Pml7#DI;yWrS?>oM50YRPQOW|u!}n?k|kCIr<}u#`N4sP!h;)s#2Vkqy6f z7hwia!H!T-MNOJxM!`S)w-S^F!)jJPya6p#ExJMFqb38j9#<$KEBZ)k`~P?TRhPoS zAqyG=KHQAz6Q|aW;1(3*m^SbS3sE>8D_KYXSU#G=NWfysFumwU2D zz0Hk(p{7>#73*yvbynwS2ihunpDXmsda5s+K-1HNXdtO~^s3H|3(TN*lk>vAG<1Z< zQEf`P)+Sy1^FzOC%U*qUw#NODC>(8|g)5H>I+x%Zwr_m*7AirgNcfqCTJ&CY0qfxn zi*SA&=Kbezb8^?=tOS4G7GGmV@5jQSv2Svoue8d6?^e!pmj=}P6v?6a-@No+--T{f zD>w+FVW*5c_!kW!WoTo4{gs7-O9Su&@9;0a4hVNiz@KW|xTy&26BJHvp874Zkab8y zIXriNWM*PLykD>*pEVV~6EFTt;h+m(!^a6Z7KOS2s9E@q#x9t-Sd>Ygpffa;LkD*4 zzU%sRPo;D~^@bl72>mMX;dWn;$1TO>=AV4&*IWInV+#G7lAITGJ4@>FAoRC>+?b~R z;fDgqA;PLN+Ssj+g%tA$E|iTcpl(Cgat?(G)c=2^Ku`=-Cw)?St5>I|6v0!*__IY& zLvGNgevdog80#sS9`y?BBkCB`_(GG7dW`TjCn)?vwHTiWSZ(o_5v(dqElQ!1y6Km< zLksiy#s2a@aEvnm?~rr2^JY8C9Jv$5)zwHthV6gq8LHI+fcY;DrghsqEC5T2N3t8J zU+RDX{Rj4U!|#js15+NJm``=WGqD3<(h1MR!Y=Im*`89z#Jr&ncn_oP@!^p3F#!3k7Tp@p7)g7=1^%}@Hbwk0?) zZ*hW)uj8a41%F#l?cfI;490HqB&WB+?KrGr3%e8RI~%IM*EqV#(60=@Q|C}B`rZe= z*LW#`<#1%V9f7wI3=mwWB+CppE#u~P+MtSCn+G(ANI;vxeg62!l-kRnCQQoF4x)nL zJ$bUn;~3_31_GW!)yw|ej}g}L{KH`%BZPv|!$A1HCwvG3SF!OCIur~X{1rrilV$Mm z;jRPa>qEyp`Vi=S@u?sJzuW5$1RUApCXC9>%&PB;J$|*x8b`N8`=S1jz0UCma;1OK z>4-0v14|g%3_ewiszxcF$I$y&$n;>v7yX3ouNj1+HK#Rb9m$Za z6a+pxM{92I0$=DMxaS?6!7#o1A1ETUe{`>+uN%A#Fsee)a2!?BHK@q{i6X)XXg$7z zD_~$ufx=faQ5*>V2a0GJ)&1OLRHwP=sn-*Jh0N#{GGPg99Kwv4Sg*xORum3|vm2wR-L$ ze^KGY_AS`F6#8-4aNk1V4EMsDtQ~#o)q?6XRs9e8*dO}4GO?0^ALZcRIE&OmD5<m03z!TA~H zQ6U+HCNXskY@zk?`lzMoL9MPiN_{-R;KHU=HTqEocy)t1tfjBj=KrQ8tGI6}%UeYw{@Iv}MJ+mRL@`p+)w$BahZH;d!1Hu+%ee`y! zwLC|@q44rtUHaw^wGm-bK~K}c^h?dha04)Ig~a_1uq;fiq&{U2jal`bjIq`M+wRXW zg5e@r+;K}SkK?93oPw!$(H4Auw@Au zR0CMC3SBgw={;6ABMLU@KHYfUGU1&lOmj~ zzj9TWy9F=&g`Bd~7D5WM9!ev2O~1Br(-R>2-4)@*%#7tKZ!&X8bgeXybS+Tz@?Qu>2)m+FGm zsDY_bzpD^AG9-@~;c*PF#NQ-vyK4F6?_W7kMB5R+*Z9CasMhgN)k&?Tj%YQi)FYiG z?%(idYijJ)sC(RwYCECVv+x^8P~TzeuH`KWQ4jq54=cZ#B1uD$s5gey?}kZIV)^Wp3Rst@+hG>o<}V{~!yL ztj3s30pt~q`R%ocJsokK!m$s_)vA-Nce1#sL7`5LeJ9KRicXGbMu)e?tY&1%hdbPF zFQ4D28U3b>Cqhz(?{J~%D!=FubvAT3e5AX?7gP_ys1{V){5kY+a8%ojO%XP_9$|{1 z-SYpX+yA4)6DrJq>DK?K!dR3t&8MvT%8Ar{GUy!dvzQKd15k+y*T%h3wVHb;93POutd< zv*h*vY>!#(%G$*cnj_z`|HrRIlyoAzWF(ug zbS4+WbB2Fq*+kgyv9ihZ7dl<|Oqr)})?Zmf^t`4e9Yw2ijqrMA6bBnb#1C9Y%E%H? zmb0|b?Z}09YyE{aQ2$8D(05BdBg^5TdH-KoIPiN2u^&q~S^n}8$7oORFD9P+Vz&c_ zYlqh}-S6~QIXnSJsW0g8lzM_5r`I#b?Gg~j@1_%u!g9agT^e*0`rwziD}!QGDZC^S z-YV$y&nPd!6R^?P;VuPPmO1^fLfjP<13AgnCY;*Jv{v9nA`DSqyY-1z1>x1-QmiZY%K(M!s_ zZj>9`3ndpUhU{47h$*{uHDxB~sDigRPItRO5OpRpe8Plr6Ve?M$BrI5Zt_^FY!w!& z7p!YXG5oZ;Bc-xyN?Jk02{h|Ud@wY}oZ&J@o|@pC4N=PjZumFI^@F7hl$VwH{8&J! zGgZC-JY4TC3EgFuyUNkk6FQ_crk4kU5I-WEZ&~IGK+D8aMeu*1!(92&x}$hNHZ$197JFRqm1FTnlKXhomFth0Lb0v2$VRzURG_W z$OGlxAY`c67XZZq4t$U)MDW4e%&|{n#)?#>K^&L6!UKh?Gu9|;n4;@_MGj}F!#91V zyAX${a<5CZDNwZGqN17&X-sulc)aktodI8IKq+3YZ-%GP=|$m|6<5J)3gA0u3A3p* zuNR5|y@>P!-rUM9XCbOQ;bG3}tb!f_Ld6DO20}p@!+oN1?8SbBl^4D)-01k)kZz5N zW(^cIB1Mm-);J3JroLhnxsmp=vEu8@!+F2O%RwX-N0Kfs-0X_z3xzKcA zNW*HdZi;mZX~R8T*lhx^b`14C8`^xZ7|jXQTf(;uiwKN~U@_g^%ARUyE>8f4iYj#< zl(;h@`ysW6I??HvG%Jq; z0ct22s~0q7zy~)_bqumA?ZGVr3^NdcGWDpZQ4>}Q9=n_}v_y=lF==AX=*+PWGB&K? zft*1hX{vUBT|d;esaMd@akz`H?Z6u(s8YGOPzKf9P+Emv4|XjyD+6FH!6~$Lr;Z&r z6$@n9u6!X6ZIux=2cN0UHi|qIfWZX}gczHHW0Zh-RRZ>K{Nzi(lBhd|6RpjlL#b~V zebZ}Z(O2dy^aR0>3Y$cHeU&7WKoi(8EGuQ3t~--G${rH7ik5CM+AvLS#;d z{^#hLAz+CHhpm9fhWCJCKrwwAhiWq*@`_yK`{yTb^83HvaA63Hi;&m zW8pRKZhttXls+(X>Qkvwi}OA7y9*exzJHLJv3XS2d`oWR!)OXgW}ljjgPse3jpA0r z3^v99HIdpbz&duq2pk(14KX$6SM7e(IPMbgR3Z)=f)6c*#KYk%Hjq+{o>&BJ98|FC z8V+UPqZ#I+9%rS;*Q#1~mhe0`J)eJ>L-OAbo_l$BcIKxOu1{^M*GRD-%0lJ|S?3YroX9~yVg|3L5-=dL% zbMTNc30ln>QlKWlIC8ngRJsB5OX%9e;gx%n!P5bGg*j^Uxv?2@BC$5jYm`O6ZEF%3CH7YKoLV1iU^83)W0~2`F;Vt2W$BEDdYy!t#&?`^P z{(I$+zp0n1U~G?pUgOK1{@|QpKEFFc6V=F(YD%?7%^ZW%Bv3-oSZZ9yx&j6c(4pA+ zDm?DlFgYEjEKzkOTSGA6vM#p_V{6(6tG59h>S3N%V_FtAVZy0m1L9O+ZdZ>~Ys>&6 zQjJ$6&LkVCYHArTD%%91k-P4AB6nQgsDfIo0Hts$gO2>1ytr{nz~rcm7>2;ohTp9M zbv805GDS7_b33RzJHjIn#pB@NdDh${WaWqZC&kPMa}T`RGjPW1h?v@_J`CL(jKqjp zg>}EaV1qzY=-acmvinQG4CmPog!KW-7Cf8NeHCubHoWxE??!I|zTO+#0oc|qH_YI` zB7)u@TQ=2H!JJ3GJKE}HsGP9v!Ca(9WNx2aVwN!aS->!27Ylp?{|Y;5u{2~QqxZ!< z!wbVHDC#25j7(+mMFj=;$kN~xeK@*D@l0qM?Z%^gw;zmFH0rYq{p8PIm^}cztweW$)fK z17U{eh4!FMWR4w~Gkj_&6_^Zyry7%~?Zi}W`Ek#?`o>RnYK3yE#ZO#$hAg3Y=|vx0 z%c#ddT2uqMd@iacFh-2@paVG|$QqlKHi?M>hAOWOU`#89@?}vYo@%vTI9*Hd)KcG6 zo-p$H8D6-=>+=U-7DIwW#~5T~DmaIxmO))lg^gM`ivYtqlqfaCsYTxMK(V@|-{+;` z;DitRM@U;xaJY@c_Do2V`c7=b>1eoww2)QSNCg%Vqqfr|5peCOUQ_&rOM8N79d2>WJ0 z_GHjwYDFQxD*Nt~XHT66{~g=}=icFKq5YHN5q*c{rJyZ+GfHt~$q}BL!bRZ&azLXC z5iAYxzF6+ba15^p9B+^s)f?)g@CsB&*O#KNM7gtJfeP~-*4tJC4J83;vpy-P@d<_s zv`4W{;j(fr8xBB)ygJ5}X!*dvsD_`OngL=#4;WSkTHd&_l+0rSrwCGjF#;AGASx|Q zg&j%C`NC!94ql%evyF|JMH?PmEu01`EZeg{iT6Kok4U-qExq-Z~3xp%8wn%{vRRZ*Y zbK8V@4R+6%HaWW(7822Is+PK_IR?=BAeT(fG}bqCSeq3>XK1h)M)w{L3&gbqlYJ84 zQ!yq3#g8-(C`4H|Fhr1*z}G@xmb)xi92*#E9nj^G8oLey!HOKx_?G4jjU;GyQY_8` zr0nz02A@=q2v;xHNR-V9wH=c@3~WWPLKVFLZN&*Uis&IElt?&2XwIbuQC3fN#RHoa zT+vj^wZyBf6$*5DWxKtg%hgwOI&mk-viyK!^J)(rrxs+?Wz;uAS74&5v6KcU;dE?l zUOqHr>DN{p-3w$v%pvQ&+^2aAn5c$XBKj`))8@+S#gydl&LXCpg z6V~EF^NRGybLnUvPn?hgGLE=Hg^qyEQF~}Dk@MXpWi>9K8)I*tSQ_*M!SP%pN}VS| z*_aG<2+o;_qoVTzJ48!^HIhsZ1qafxR`cA!AT-H9I_!?0or{;`I!oQ&=t9KED6


-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

)|5;L1Q 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