From 2b1f11fff4912c5fb97df962c0661f5772a6a703 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Svensson?= Date: Tue, 27 May 2025 08:33:44 +0200 Subject: [PATCH 1/9] Remove unused functions in build_utils.sh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Björn Svensson --- build_utils.sh | 63 -------------------------------------------------- 1 file changed, 63 deletions(-) diff --git a/build_utils.sh b/build_utils.sh index 64fbae0..46a8646 100644 --- a/build_utils.sh +++ b/build_utils.sh @@ -17,70 +17,7 @@ build_project() { ~/erlide_tools/${OTP_VSNS[$VSN]}/bin/escript $REBAR "$@" } -build_projects() { - build_project erlide_common 23 "$@" - build_project erlide_debugger_23 23 "$@" - build_project erlide_debugger_24 24 "$@" - build_project erlide_debugger_25 25 "$@" - build_project erlide_debugger 23 "$@" - build_project erlide_tools 23 "$@" - - build_project erlide_ide 23 "$@" -} - -assemble_eclipse_plugin() { - echo "Assemble eclipse plugin" - mkdir -p org.erlide.kernel/common - cp erlide_common/_build/default/lib/*/ebin/*.* org.erlide.kernel/common - cp erlide_tools/_build/default/lib/*/ebin/*.* org.erlide.kernel/common - - mkdir -p org.erlide.kernel/ide - cp erlide_ide/_build/default/lib/*/ebin/*.* org.erlide.kernel/ide - - mkdir -p org.erlide.kernel/debugger - cp erlide_debugger/_build/default/lib/*/ebin/*.* org.erlide.kernel/debugger - - mkdir -p org.erlide.kernel/debugger/23 - cp erlide_debugger_23/_build/default/lib/*/ebin/*.* org.erlide.kernel/debugger/23 - mkdir -p org.erlide.kernel/debugger/24 - cp erlide_debugger_24/_build/default/lib/*/ebin/*.* org.erlide.kernel/debugger/24 - mkdir -p org.erlide.kernel/debugger/25 - cp erlide_debugger_25/_build/default/lib/*/ebin/*.* org.erlide.kernel/debugger/25 - - cd org.erlide.kernel - rm -f org.erlide.kernel_*.zip - VSN=`get_plugin_vsn .` - zip -r org.erlide.kernel_$VSN.zip * > /dev/null - cd .. - - mkdir -p _build - rm -f _build/org.erlide.kernel_*.zip - mv org.erlide.kernel/org.erlide.kernel_*.zip _build - echo "Created _build/org.erlide.kernel_$VSN.zip" -} - -get_plugin_vsn() { - x=`cat $1/META-INF/MANIFEST.MF | grep "Bundle-Version:" | cut -d " " -f 2` - echo "${x%.qualifier}" -} - get_feature_vsn() { x=`cat $1/feature.xml | grep "version=" | head -n 2 | tail -n 1 | cut -d '"' -f 2` echo "${x%.qualifier}" } - -assemble_language_server() { - echo "Assemble language_server" - #cd - VSN=`get_server_vsn` - - #echo "Created _build/erlide_server_$VSN.zip" -} - -get_server_vsn() { - # FIXME - #x=`cat META-INF/MANIFEST.MF | grep "Bundle-Version:" | cut -d " " -f 2` - #echo "${x%.qualifier}" - echo "x.x.x" -} - From 04c4a48018c110f26f79bad61f5383d75a78a164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Svensson?= Date: Mon, 26 May 2025 16:02:22 +0200 Subject: [PATCH 2/9] Add erlide_debugger_26 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit dbg_*.erl and int.erl copied from otp_src_26.2.5.12.tar.gz located in otp_src_26.2.5.12/lib/debugger/src/ Signed-off-by: Björn Svensson --- debugger/erlide_debugger_26/build | 8 + debugger/erlide_debugger_26/include/.keep | 0 debugger/erlide_debugger_26/priv/.keep | 0 debugger/erlide_debugger_26/rebar.config | 24 + debugger/erlide_debugger_26/rebar.lock | 1 + .../erlide_debugger_26/src/dbg_debugged.erl | 101 + debugger/erlide_debugger_26/src/dbg_icmd.erl | 480 ++++ debugger/erlide_debugger_26/src/dbg_idb.erl | 55 + debugger/erlide_debugger_26/src/dbg_ieval.erl | 1952 +++++++++++++++++ debugger/erlide_debugger_26/src/dbg_ieval.hrl | 32 + debugger/erlide_debugger_26/src/dbg_iload.erl | 1061 +++++++++ .../erlide_debugger_26/src/dbg_iserver.erl | 612 ++++++ debugger/erlide_debugger_26/src/dbg_istk.erl | 252 +++ .../src/erlide_debugger_26.app.src | 10 + debugger/erlide_debugger_26/src/int.erl | 748 +++++++ 15 files changed, 5336 insertions(+) create mode 100755 debugger/erlide_debugger_26/build create mode 100644 debugger/erlide_debugger_26/include/.keep create mode 100644 debugger/erlide_debugger_26/priv/.keep create mode 100644 debugger/erlide_debugger_26/rebar.config create mode 100644 debugger/erlide_debugger_26/rebar.lock create mode 100644 debugger/erlide_debugger_26/src/dbg_debugged.erl create mode 100644 debugger/erlide_debugger_26/src/dbg_icmd.erl create mode 100644 debugger/erlide_debugger_26/src/dbg_idb.erl create mode 100644 debugger/erlide_debugger_26/src/dbg_ieval.erl create mode 100644 debugger/erlide_debugger_26/src/dbg_ieval.hrl create mode 100644 debugger/erlide_debugger_26/src/dbg_iload.erl create mode 100644 debugger/erlide_debugger_26/src/dbg_iserver.erl create mode 100644 debugger/erlide_debugger_26/src/dbg_istk.erl create mode 100644 debugger/erlide_debugger_26/src/erlide_debugger_26.app.src create mode 100644 debugger/erlide_debugger_26/src/int.erl diff --git a/debugger/erlide_debugger_26/build b/debugger/erlide_debugger_26/build new file mode 100755 index 0000000..3c78842 --- /dev/null +++ b/debugger/erlide_debugger_26/build @@ -0,0 +1,8 @@ +#!/bin/bash + +source ../../build_utils.sh + +dir=`pwd` +prj=`basename $dir` + +build_project ../../rebar3 $prj 26 "$@" diff --git a/debugger/erlide_debugger_26/include/.keep b/debugger/erlide_debugger_26/include/.keep new file mode 100644 index 0000000..e69de29 diff --git a/debugger/erlide_debugger_26/priv/.keep b/debugger/erlide_debugger_26/priv/.keep new file mode 100644 index 0000000..e69de29 diff --git a/debugger/erlide_debugger_26/rebar.config b/debugger/erlide_debugger_26/rebar.config new file mode 100644 index 0000000..b21cbca --- /dev/null +++ b/debugger/erlide_debugger_26/rebar.config @@ -0,0 +1,24 @@ +{require_otp_vsn, "26.*"}. + +{plugins, []}. + +{erl_opts, []}. +{edoc_opts,[{todo,true}]}. + +{eunit_opts, [verbose, {report,{eunit_surefire,[{dir,"."}]}}]}. + +{cover_export_enabled, true}. +{cover_enabled, false}. +{cover_print_enable, true}. + +{covertool_eunit, {".eunit/cover.coverdata", "eunit.coverage.xml"}}. +{covertool_prefix_len, 0}. + +{xref_checks,[ + undefined_function_calls, + undefined_functions, + locals_not_used, + %exports_not_used, + deprecated_function_calls, + deprecated_functions + ]}. diff --git a/debugger/erlide_debugger_26/rebar.lock b/debugger/erlide_debugger_26/rebar.lock new file mode 100644 index 0000000..57afcca --- /dev/null +++ b/debugger/erlide_debugger_26/rebar.lock @@ -0,0 +1 @@ +[]. diff --git a/debugger/erlide_debugger_26/src/dbg_debugged.erl b/debugger/erlide_debugger_26/src/dbg_debugged.erl new file mode 100644 index 0000000..5296b8d --- /dev/null +++ b/debugger/erlide_debugger_26/src/dbg_debugged.erl @@ -0,0 +1,101 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2018. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +-module(dbg_debugged). + +%% External exports +-export([eval/3]). + +%%==================================================================== +%% External exports +%%==================================================================== + +%%-------------------------------------------------------------------- +%% eval(Mod, Func, Args) -> Value +%% Main entry point from external (non-interpreted) code. +%% Called via the error handler. +%%-------------------------------------------------------------------- +eval(Mod, Func, Args) -> + Meta = dbg_ieval:eval(Mod, Func, Args), + Mref = erlang:monitor(process, Meta), + msg_loop(Meta, Mref). + +%%==================================================================== +%% Internal functions +%%==================================================================== + +msg_loop(Meta, Mref) -> + receive + + %% Evaluated function has returned a value + {sys, Meta, {ready, Val}} -> + erlang:demonitor(Mref, [flush]), + case Val of + {dbg_apply,M,F,A} -> + apply(M, F, A); + _ -> + Val + end; + + %% Evaluated function raised an (uncaught) exception + {sys, Meta, {exception,{Class,Reason,Stacktrace}}} -> + erlang:demonitor(Mref, [flush]), + + %% ...raise the same exception + erlang:error(erlang:raise(Class, Reason, Stacktrace), + [Class,Reason,Stacktrace]); + + %% Meta is evaluating a receive, must be done within context + %% of real (=this) process + {sys, Meta, {'receive',Msg}} -> + receive Msg -> + Meta ! {self(), rec_acked}, + ok + end, + msg_loop(Meta, Mref); + + %% Meta needs something evaluated within context of real process + {sys, Meta, {command,Command}} -> + Reply = handle_command(Command), + Meta ! {sys, self(), Reply}, + msg_loop(Meta, Mref); + + %% Meta has terminated + %% Must be due to int:stop() (or -heaven forbid- a debugger bug) + {'DOWN', Mref, _, _, Reason} -> + {interpreter_terminated, Reason} + end. + +handle_command(Command) -> + try + reply(Command) + catch Class:Reason:Stacktrace -> + {exception,{Class,Reason,stacktrace_f(Stacktrace)}} + end. + +reply({apply,M,F,As}) -> + {value, erlang:apply(M,F,As)}; +reply({eval,Expr,Bs}) -> + %% Bindings is an orddict (sort them) + erl_eval:expr(Expr, lists:sort(Bs)). % {value, Value, Bs2} + +%% Fix stacktrace - keep all above call to this module. +%% +stacktrace_f([]) -> []; +stacktrace_f([{?MODULE,_,_,_}|_]) -> []; +stacktrace_f([F|S]) -> [F|stacktrace_f(S)]. diff --git a/debugger/erlide_debugger_26/src/dbg_icmd.erl b/debugger/erlide_debugger_26/src/dbg_icmd.erl new file mode 100644 index 0000000..3bbd05d --- /dev/null +++ b/debugger/erlide_debugger_26/src/dbg_icmd.erl @@ -0,0 +1,480 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2023. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(dbg_icmd). + +%% Internal command receiver/handler +-export([cmd/3]). + +%% User control of process execution and settings +-export([step/1, next/1, continue/1, finish/1, skip/1, timeout/1, + stop/1]). +-export([eval/2]). +-export([set/3, get/3]). +-export([handle_msg/4]). + +%% Library functions for attached process handling +-export([tell_attached/1]). + +%% get_binding/2 +-export([get_binding/2]). + +-include("dbg_ieval.hrl"). + +%%==================================================================== +%% Internal command receiver/handler +%%==================================================================== + +%%-------------------------------------------------------------------- +%% cmd(Expr, Bs, Ieval) -> {skip, Bs} | Bs +%% This function is called from dbg_ieval before evaluating any +%% expression to give the user the chance to inspect variables etc. +%% get(next_break) => break | running +%% | Le +%% specifies if the process should break. +%%-------------------------------------------------------------------- + +cmd(Expr, Bs, Ieval) -> + cmd(Expr, Bs, get(next_break), Ieval). + +%% Evaluation should break +cmd(Expr, Bs, break, Ieval) -> + break(Expr, Bs, Ieval); +%% Evaluation should continue, unless there is a breakpoint at +%% the current line +cmd(Expr, Bs, running, #ieval{level=Le,module=M}=Ieval) -> + Line = element(2, Expr), + case break_p(M, Line, Le, Bs) of + true -> + put(next_break, break), + break(Expr, Bs, Ieval); + false -> + handle_cmd(Bs, running, Ieval) + end; +%% Evaluation should continue for now (until we've returned to +%% call level Next) +cmd(Expr, Bs, Next, #ieval{level=Le}=Ieval) when is_integer(Next), + Next + Line = element(2, Expr), + handle_cmd(Bs, Next, Ieval#ieval{line=Line}); +%% Evaluation has returned to call level Next, break +cmd(Expr, Bs, Next, #ieval{level=Le}=Ieval) when is_integer(Next), + Next>=Le -> + put(next_break, break), + break(Expr, Bs, Ieval). + +%% break_p(Mod, Line, Le, Bs) -> true | false +%% Checks if there is a breakpoint at Line in Mod. +%% As a side effect, disables or deletes breakpoint as specified +break_p(Mod, Line, Le, Bs) -> + case lists:keysearch({Mod, Line}, 1, get(breakpoints)) of + {value, {_Point, [active, Action, _, Cond]}} -> + case get(user_eval) of + [{Line, Le}|_] -> false; + _ -> + Bool = case Cond of + null -> true; + {CM, CN} -> + try CM:CN(Bs) of + true -> true; + false -> false; + _Term -> false + catch + _C:_R -> false + end + end, + if + Bool -> + case Action of + enable -> ignore; + disable -> + dbg_iserver:cast(get(int), + {break_option, + {Mod, Line}, + status, + inactive}); + delete -> + dbg_iserver:cast(get(int), + {delete_break, + {Mod, Line}}) + end; + true -> ignore + end, + Bool + end; + _Other -> % {value, {_Point, [inactive|_]}} | false + false + end. + +%% Called whenever evaluation enters break mode, informs attached +%% process and dbg_iserver +break(Expr, Bs, #ieval{level=Le,module=M}=Ieval) -> + Line = element(2, Expr), + dbg_iserver:cast(get(int), {set_status,self(),break,{M,Line}}), + tell_attached({break_at,M,Line,Le}), + handle_cmd(Bs, break, Ieval#ieval{line=Line}). + +%%-------------------------------------------------------------------- +%% handle_cmd(Bs0, Status, Ieval) -> Bs1 | {skip, Bs1} +%% Status = break | running | Le +%% In break mode, loop waiting for user commands (and handle other +%% messages meanwhile). +%% In other modes, handle other messages, if any. +%%-------------------------------------------------------------------- +handle_cmd(Bs, break, #ieval{level=Le}=Ieval) -> + receive + {user, {cmd, Cmd}} -> + dbg_iserver:cast(get(int), {set_status,self(),running,{}}), + tell_attached(running), + case Cmd of + step -> Bs; + next -> put(next_break, Le), Bs; + continue -> put(next_break, running), Bs; + finish -> put(next_break, Le-1), Bs; + skip -> {skip, Bs} + end; + {user, {eval, Cmd}} -> + Bs1 = eval_nonrestricted(Cmd, Bs, Ieval), + handle_cmd(Bs1, break, Ieval); + Msg -> + dbg_ieval:check_exit_msg(Msg, Bs, Ieval), + handle_msg(Msg, break, Bs, Ieval), + handle_cmd(Bs, break, Ieval) + end; +handle_cmd(Bs, Status, Ieval) -> + receive + Msg -> + dbg_ieval:check_exit_msg(Msg, Bs, Ieval), + handle_msg(Msg, Status, Bs, Ieval), + handle_cmd(Bs, Status, Ieval) + after 0 -> + Bs + end. + +%%==================================================================== +%% User control of process execution and settings +%%==================================================================== + +step(Meta) -> Meta ! {user, {cmd, step}}, ok. +next(Meta) -> Meta ! {user, {cmd, next}}, ok. +continue(Meta) -> Meta ! {user, {cmd, continue}}, ok. +finish(Meta) -> Meta ! {user, {cmd, finish}}, ok. +skip(Meta) -> Meta ! {user, {cmd, skip}}. + +timeout(Meta) -> Meta ! {user, timeout}. + +stop(Meta) -> Meta ! {user, {cmd, stop}}. + +eval(Meta, {Mod, Cmd}) -> + eval(Meta, {Mod, Cmd, nostack}); +eval(Meta, {Mod, Cmd, SP}) -> + Cmd2 = case lists:reverse(Cmd) of % Commands must end with ".\n" + [10,$.|_] -> Cmd; + [10|T] -> lists:reverse([10,$.|T]); + [$.|T] -> lists:reverse([10,$.|T]); + T -> lists:reverse([10,$.|T]) + end, + Meta ! {user, {eval, {self(), Mod, Cmd2, SP}}}. + +%% Tag Args +%% --- ---- +%% trace Bool +%% stack_trace Flag +set(Meta, Tag, Args) -> + Meta ! {user, {set, Tag, Args}}. + +%% Tag Args Reply +%% --- ---- ----- +%% bindings nostack | SP [{Var,Val}] (Var=atom(), Val=term()) +%% stack_frame {up|down, SP} [{Le,Where,Bs}] | top | bottom +%% (Where = {Mod,Li} +%% messages null [Msg] (Msg=term()) +%% backtrace all | N [{Le,MFA}] (MFA={M,F,Args}|{Fun,Args}) +get(Meta, Tag, Args) -> + Meta ! {user, {get, Tag, self(), Args}}, + receive + {Meta, Tag, Reply} -> Reply + end. + +%%-------------------------------------------------------------------- +%% handle_msg({int, Msg} | {user, Msg}, Status, Bs, Ieval) +%% Status = idle | exit_at | wait_at | wait_after_at +%% | break | running | Le | {Le,MFA} +%%-------------------------------------------------------------------- +handle_msg({int, Msg}, Status, Bs, Ieval) -> + handle_int_msg(Msg, Status, Bs, Ieval); +handle_msg({user, Msg}, Status, Bs, Ieval) -> + handle_user_msg(Msg, Status, Bs, Ieval); +handle_msg(Msg, Status, Bs, Ieval) -> + io:format("***WARNING*** Unexp msg ~p, info ~p~n", + [Msg,{Status,Bs,Ieval}]). + +%% handle_int_msg(Msg, Status, Bs, Ieval) +%% Msg = {attached, AttPid} | {detached, AttPid} +%% | {old_code, Mod} +%% | {new_break, Break} | {delete_break, Break} +%% | {break_options, {Break, Options}} +%% | no_break | {no_break, Mod} +%% | stop (only when Status==exit_at, means AttPid has terminated) +%% Interpreter internal messages (from dbg_iserver) +handle_int_msg({attached, AttPid}, Status, _Bs, + #ieval{level=Le,module=M,line=Line}) -> + + %% Update process dictionary + put(attached, AttPid), + put(next_break, break), + + %% Tell attached process in which module evalution is located + if + Le =:= 1 -> + tell_attached({attached, undefined, -1, get(trace)}); + true -> + tell_attached({attached, M, Line, get(trace)}), + + %% Give info about status and call level as well + %% In this case, Status cannot be exit_at + Msg = case Status of + idle -> {func_at,M,Line,Le}; + break -> {break_at,M,Line,Le}; + wait_at -> {wait_at,M,Line,Le}; + wait_after_at -> {wait_after_at,M,Line,Le}; + _ -> running % running | Le | {Le,MFA} + end, + tell_attached(Msg) + end; +handle_int_msg(detached, _Status, _Bs, _Ieval) -> + %% Update process dictionary + put(attached, undefined), + put(next_break, running), + put(trace, false); % no need for tracing if there is no AttPid +handle_int_msg({old_code,Mod}, Status, Bs, + #ieval{level=Le,module=M}=Ieval) -> + if + Status =:= idle, Le =:= 1 -> + erase(?DB_REF_KEY(Mod)), + put(cache, []); + true -> + case dbg_istk:in_use_p(Mod, M) of + true -> + %% A call to Mod is on the stack (or might be), + %% so we must terminate. + exit(get(self), kill), + dbg_ieval:exception(exit, old_code, Bs, Ieval); + false -> + erase(?DB_REF_KEY(Mod)), + put(cache, []) + end + end; +handle_int_msg({new_break, Break}, _Status, _Bs, _Ieval) -> + put(breakpoints, [Break | get(breakpoints)]); +handle_int_msg({delete_break, Point}, _Status, _Bs, _Ieval) -> + put(breakpoints, lists:keydelete(Point, 1, get(breakpoints))); +handle_int_msg({break_options, Break}, _Status, _Bs, _Ieval) -> + {Point, _Options} = Break, + put(breakpoints, lists:keyreplace(Point,1,get(breakpoints), Break)); +handle_int_msg(no_break, _Status, _Bs, _Ieval) -> + put(breakpoints, []); +handle_int_msg({no_break,M}, _Status, _Bs, _Ieval) -> + put(breakpoints, [B || {{Mod,_L},_Flags}=B <- get(breakpoints), + Mod =/= M]); +handle_int_msg(stop, exit_at, _Bs, _Ieval) -> + erlang:exit(normal). + +%% handle_user_msg(Msg, Status, Bs, Ieval) +%% Msg = {cmd, Cmd}, Cmd = step | next | continue | finish| skip| stop +%% | timeout +%% | {eval, {Pid, Mod, Str, SP}} +%% | {set, Tag, Args} | {get, Tag, Pid, Args} +%% Messages from the attached process +%% Msg = {cmd, Cmd}, Cmd /= stop, can only be received in break mode, +%% handled in handle_cmd/3 +%% Msg = timeout is handled when needed (when evaluating receive..after) +%% in dbg_ieval:do_receive/5 when Status==wait_after_at +%% For all other Status, it should be ignored +handle_user_msg({cmd, stop}, Status, _Bs, _Ieval) -> + case lists:member(Status, [running, wait_at, wait_after_at]) of + true -> + put(next_break, break); + false when is_integer(Status); is_tuple(Status) -> + put(next_break, break); + false -> % idle | exit_at (| break) + ignore + end; +handle_user_msg({cmd, continue}, Status, _Bs, _Ieval) -> + %% Allow leaving break mode when waiting in a receive + case lists:member(Status, [wait_at, wait_after_at]) of + true -> + put(next_break, running); + false -> + ignore + end; +handle_user_msg({cmd, _Cmd}, _Status, _Bs, _Ieval) -> + ignore; +handle_user_msg(timeout, _Status, _Bs, _Ieval) -> + ignore; +handle_user_msg({eval,Cmd}, wait_at, Bs, _Ieval) -> + eval_restricted(Cmd, Bs); +handle_user_msg({eval,Cmd}, wait_after_at, Bs, _Ieval) -> + eval_restricted(Cmd, Bs); +handle_user_msg({set,trace,Bool}, _Status, _Bs, _Ieval) -> + put(trace, Bool), + tell_attached({trace, Bool}); +handle_user_msg({set,stack_trace,Flag}, _Status, _Bs, _Ieval) -> + set_stack_trace(Flag); +handle_user_msg({get,bindings,From,SP}, _Status, Bs, _Ieval) -> + reply(From, bindings, bindings(Bs, SP)); +handle_user_msg({get,stack_frame,From,{Dir,SP}}, _Status, _Bs,_Ieval) -> + reply(From, stack_frame, dbg_istk:stack_frame(Dir, SP)); +handle_user_msg({get,messages,From,_}, _Status, _Bs, _Ieval) -> + reply(From, messages, messages()); +handle_user_msg({get,backtrace,From,N}, _Status, _Bs, Ieval) -> + reply(From, backtrace, dbg_istk:backtrace(N, Ieval)). + +set_stack_trace(true) -> + set_stack_trace(all); +set_stack_trace(Flag) -> + if + Flag =:= false -> + put(stack, []); + Flag =:= no_tail; Flag =:= all -> + ignore + end, + put(trace_stack, Flag), + tell_attached({stack_trace, Flag}). + +reply(From, Tag, Reply) -> + From ! {self(), Tag, Reply}. + +bindings(Bs, nostack) -> + Bs; +bindings(Bs, SP) -> + case dbg_istk:stack_level() of + Le when SP > Le -> + Bs; + _ -> + dbg_istk:bindings(SP) + end. + +messages() -> + {messages, Msgs} = erlang:process_info(get(self), messages), + Msgs. + +%%==================================================================== +%% Evaluating expressions within process context +%%==================================================================== + +eval_restricted({From,_Mod,Cmd,SP}, Bs) -> + case catch parse_cmd(Cmd, 1) of + {'EXIT', _Reason} -> + From ! {self(), {eval_rsp, 'Parse error'}}; + [{var,_,Var}] -> + Bs2 = bindings(Bs, SP), + Res = case get_binding(Var, Bs2) of + {value, Value} -> Value; + unbound -> unbound + end, + From ! {self(), {eval_rsp, Res}}; + _Forms -> + Rsp = 'Only possible to inspect variables', + From ! {self(), {eval_rsp, Rsp}} + end. + +eval_nonrestricted({From,Mod,Cmd,SP}, Bs, #ieval{level=Le}) when SP < Le-> + %% Evaluate in stack + _ = eval_restricted({From, Mod, Cmd, SP}, Bs), + Bs; +eval_nonrestricted({From, _Mod, Cmd, _SP}, Bs, + #ieval{level=Le,module=M,line=Line}=Ieval) -> + case catch parse_cmd(Cmd, Line) of + {'EXIT', _Reason} -> + From ! {self(), {eval_rsp, 'Parse error'}}, + Bs; + Forms -> + mark_running(Line, Le), + {Res, Bs1} = + lists:foldl(fun(Expr, {_Res, Bs0}) -> + eval_nonrestricted_1(Expr,Bs0,Ieval) + end, + {null, Bs}, + Forms), + mark_break(M, Line, Le), + From ! {self(), {eval_rsp, Res}}, + Bs1 + end. + +eval_nonrestricted_1({match,_,{var,_,Var},Expr}, Bs, Ieval) -> + {Res,Bs2} = eval_expr(Expr, Bs, Ieval), + Bs3 = case lists:keyfind(Var, 1, Bs) of + {Var,_Value} -> + lists:keyreplace(Var, 1, Bs2, {Var,Res}); + false -> [{Var,Res} | Bs2] + end, + {Res,Bs3}; +eval_nonrestricted_1({var,_,Var}, Bs, _Ieval) -> + Res = case lists:keyfind(Var, 1, Bs) of + {Var, Value} -> Value; + false -> unbound + end, + {Res,Bs}; +eval_nonrestricted_1(Expr, Bs, Ieval) -> + eval_expr(Expr, Bs, Ieval). + +eval_expr(Expr, Bs, Ieval) -> + {value,Res,Bs2} = + dbg_ieval:eval_expr(Expr, Bs, Ieval#ieval{top=false}), + {Res,Bs2}. + +mark_running(LineNo, Le) -> + put(next_break, running), + put(user_eval, [{LineNo, Le} | get(user_eval)]), + dbg_iserver:cast(get(int), {set_status, self(), running, {}}), + tell_attached(running). + +mark_break(Cm, LineNo, Le) -> + put(next_break, break), + put(user_eval, tl(get(user_eval))), + tell_attached({break_at, Cm, LineNo, Le}), + dbg_iserver:cast(get(int), {set_status,self(),break,{Cm,LineNo}}). + +parse_cmd(Cmd, LineNo) -> + {ok,Tokens,_} = erl_scan:string(Cmd, LineNo, [text]), + {ok,Forms} = erl_eval:extended_parse_exprs(Tokens), + Forms. + +%%==================================================================== +%% Library functions for attached process handling +%%==================================================================== + +tell_attached(Msg) -> + case get(attached) of + undefined -> ignore; + AttPid -> + AttPid ! {self(), Msg}, + ignore + end. + +%%==================================================================== +%% get_binding/2 +%%==================================================================== + +get_binding(Var, Bs) -> + case lists:keyfind(Var, 1, Bs) of + {Var, Value} -> {value, Value}; + false -> unbound + end. diff --git a/debugger/erlide_debugger_26/src/dbg_idb.erl b/debugger/erlide_debugger_26/src/dbg_idb.erl new file mode 100644 index 0000000..55177bb --- /dev/null +++ b/debugger/erlide_debugger_26/src/dbg_idb.erl @@ -0,0 +1,55 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2016. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(dbg_idb). + +%% External exports +-export([insert/3, lookup/2, match_object/2]). + +%%==================================================================== +%% External exports +%%==================================================================== + +insert(DbRef, Key, Value) -> + case DbRef of + {Node, ModDb} -> + rpc:block_call(Node, ets, insert, [ModDb, {Key, Value}]); + ModDb -> + ets:insert(ModDb, {Key, Value}) + end. + +lookup(DbRef, Key) -> + Res = case DbRef of + {Node, ModDb} -> + rpc:block_call(Node, ets, lookup, [ModDb, Key]); + ModDb -> + ets:lookup(ModDb, Key) + end, + case Res of + [{Key, Value}] -> {ok, Value}; + _ -> not_found + end. + +match_object(DbRef, Key) -> + case DbRef of + {Node, ModDb} -> + rpc:block_call(Node, ets, match_object, [ModDb, Key]); + ModDb -> + ets:match_object(ModDb, Key) + end. diff --git a/debugger/erlide_debugger_26/src/dbg_ieval.erl b/debugger/erlide_debugger_26/src/dbg_ieval.erl new file mode 100644 index 0000000..b235b4c --- /dev/null +++ b/debugger/erlide_debugger_26/src/dbg_ieval.erl @@ -0,0 +1,1952 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2024. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(dbg_ieval). + +-export([eval/3,exit_info/5]). +-export([eval_expr/3]). +-export([check_exit_msg/3,exception/4]). + +-include("dbg_ieval.hrl"). + +%%==================================================================== +%% External exports +%%==================================================================== + +%%-------------------------------------------------------------------- +%% eval(Mod, Func, Args) -> Meta +%% Mod = Func = atom() +%% Args = [term()] +%% MFA = {Mod,Func,Args} | {Mod,Func,Arity} | {Fun,Args} +%% Arity = integer() +%% Meta = pid() +%% Entry point from debugged process (dbg_debugged). +%% Immediately returns the pid for the meta process. +%% The evaluated value will later be sent as a message to +%% the calling process. +%%-------------------------------------------------------------------- +eval(Mod, Func, Args) -> + Debugged = self(), + Int = dbg_iserver:find(), + case dbg_iserver:call(Int, {get_meta,Debugged}) of + {ok,Meta} -> + Meta ! {re_entry, Debugged, {eval,{Mod,Func,Args}}}, + Meta; + {error,not_interpreted} -> + spawn(fun() -> + meta(Int, Debugged, Mod, Func, Args) + end) + end. + +%%-------------------------------------------------------------------- +%% exit_info(Int, AttPid, OrigPid, Reason, ExitInfo) +%% Int = AttPid = OrigPid = pid() +%% Reason = term() +%% ExitInfo = {{Mod,Line}, Bs, Stack} | {} +%% Meta process started when attaching to a terminated process. +%% Spawned (by dbg_iserver) in response to user request. +%%-------------------------------------------------------------------- +exit_info(Int, AttPid, OrigPid, Reason, ExitInfo) -> + put(int, Int), + put(attached, AttPid), + put(breakpoints, dbg_iserver:call(Int, all_breaks)), + put(self, OrigPid), + put(exit_info, ExitInfo), + + case ExitInfo of + {{Mod,Line},Bs,S} -> + dbg_istk:from_external(S), + Le = dbg_istk:stack_level(), + dbg_icmd:tell_attached({exit_at, {Mod, Line}, Reason, Le}), + exit_loop(OrigPid, Reason, Bs,#ieval{module=Mod,line=Line}); + {} -> + dbg_istk:init(), + dbg_icmd:tell_attached({exit_at, null, Reason, 1}), + exit_loop(OrigPid, Reason, erl_eval:new_bindings(),#ieval{}) + end. + +%%-------------------------------------------------------------------- +%% eval_expr(Expr, Bs, Ieval) -> {value, Value, Bs} +%% +%% Evaluate a shell expression in the real process. +%% Called (dbg_icmd) in response to a user request. +%%-------------------------------------------------------------------- +eval_expr(Expr0, Bs, Ieval) -> + + %% Save current exit info + ExitInfo = get(exit_info), + Stacktrace = get(stacktrace), + + Expr = expand_records(Expr0, Ieval#ieval.module), + + %% Emulate a surrounding catch + try debugged_cmd({eval,Expr,Bs}, Bs, Ieval) + catch + Class:Reason -> + Result = case Class of + throw -> Reason; + _ -> {'EXIT', Reason} + end, + + %% Reset exit info + put(exit_info, ExitInfo), + put(stacktrace, Stacktrace), + + {value, Result, Bs} + end. + +%%-------------------------------------------------------------------- +%% check_exit_msg(Msg, Bs, Ieval) +%% Msg = term() +%% Check if Msg is an 'EXIT' msg from the iserver or a 'DOWN' msg +%% from the debugged process. If so exit with correct reason. +%%-------------------------------------------------------------------- +check_exit_msg({'EXIT', Int, Reason}, _Bs, #ieval{level=Le}) -> + %% This *must* be interpreter which has terminated, + %% we are not linked to anyone else + if + Le =:= 1 -> + exit(Reason); + Le > 1 -> + exit({Int, Reason}) + end; +check_exit_msg({'DOWN',_,_,_,Reason}, Bs, + #ieval{level=Le, module=Mod, line=Li}) -> + %% This *must* be Debugged which has terminated, + %% we are not monitoring anyone else + + %% Inform Int about current position, bindings and stack + ExitInfo = + case get(exit_info) of + + %% Debugged has been terminated by someone + %% - really the position, bindings and stack are of no + %% importance in this case + %% If we don't save them, however, post-mortem analysis + %% of the process isn't possible + undefined when Le =:= 1 -> % died outside interpreted code + {}; + undefined when Le > 1 -> + StackExternal = (dbg_istk:delayed_to_external())(), + {{Mod, Li}, Bs, StackExternal}; + + %% Debugged has terminated due to an exception + ExitInfo0 when is_function(ExitInfo0, 0) -> + ExitInfo0() + end, + dbg_iserver:cast(get(int), {set_exit_info,self(),ExitInfo}), + + if + Le =:= 1 -> + exit(Reason); + Le > 1 -> + exit({get(self), Reason}) + end; +check_exit_msg(_Msg, _Bs, _Ieval) -> + ignore. + +%%-------------------------------------------------------------------- +%% exception(Class, Reason, Bs, Ieval) +%% Class = error | exit | throw +%% Reason = term() +%% Bs = bindings() +%% Ieval = #ieval{} +%% Store information about where in the code the error is located +%% and then raise the exception. +%%-------------------------------------------------------------------- +exception(Class, Reason, Bs, Ieval) -> + exception(Class, Reason, Bs, Ieval, false). + +exception(Class, Reason, Bs, Ieval, false) -> + do_exception(Class, Reason, + dbg_istk:delayed_stacktrace(no_args, Ieval), + Bs, Ieval); +exception(Class, Reason, Bs, Ieval, true) -> + do_exception(Class, Reason, + dbg_istk:delayed_stacktrace(include_args, Ieval), + Bs, Ieval). + +do_exception(Class, Reason, Stacktrace, Bs, #ieval{module=M, line=Line}) -> + StackFun = dbg_istk:delayed_to_external(), + ExitInfo = fun() -> + {{M,Line},Bs,StackFun()} + end, + put(exit_info, ExitInfo), + put(stacktrace, Stacktrace), + erlang:Class(Reason). + +%%==================================================================== +%% Internal functions +%%==================================================================== + +%%--Loops------------------------------------------------------------- + +%% Entry point for first-time initialization of meta process +meta(Int, Debugged, M, F, As) -> + process_flag(trap_exit, true), + erlang:monitor(process, Debugged), + + %% Inform dbg_iserver, get the initial status in return + Pargs = case {M, F} of + %% If it's a fun we're evaluating, show a text + %% representation of the fun and its arguments, + %% not dbg_ieval:eval_fun(...) + {dbg_ieval, EvalFun} when EvalFun =:= eval_fun; + EvalFun =:= eval_named_fun -> + {Mx, Fx} = lists:last(As), + {Mx, Fx, lists:nth(2, As)}; + _ -> + {M, F, As} + end, + Status = dbg_iserver:call(Int, {new_process,Debugged,self(),Pargs}), + + %% Initiate process dictionary + put(int, Int), % pid() dbg_iserver + put(attached, undefined),% pid() attached process + put(breakpoints, dbg_iserver:call(Int, all_breaks)), + put(cache, []), + put(next_break, Status), % break | running (other values later) + put(self, Debugged), % pid() interpreted process + dbg_istk:init(), + put(stacktrace, []), + put(trace_stack, dbg_iserver:call(Int, get_stack_trace)), + put(trace, false), % bool() Trace on/off + put(user_eval, []), + + + %% Send the result of the meta process + Ieval = #ieval{}, + Debugged ! {sys, self(), eval_mfa(Debugged,M,F,As,Ieval)}, + + dbg_iserver:cast(Int, {set_status, self(), idle, {}}), + dbg_icmd:tell_attached(idle), + + meta_loop(Debugged, erl_eval:new_bindings(), Ieval). + +debugged_cmd(Cmd, Bs, Ieval) -> + Debugged = get(self), + Debugged ! {sys, self(), {command,Cmd}}, + meta_loop(Debugged, Bs, Ieval). + +meta_loop(Debugged, Bs, #ieval{level=Le} = Ieval) -> + receive + + %% The following messages can only be received when Meta is + %% waiting for Debugged to evaluate non-interpreted code + %% or a Bif. Le>1 + {sys, Debugged, {value,Val}} -> + {value, Val, Bs}; + {sys, Debugged, {value,Val,Bs2}} -> + {value, Val, merge_bindings(Bs2, Bs, Ieval)}; + {sys, Debugged, {exception,{Class,Reason,Stk}}} -> + case get(exit_info) of + + %% Error occurred outside of interpreted code. + undefined -> + MakeStk0 = dbg_istk:delayed_stacktrace(), + MakeStk = fun(Depth0) -> + Depth = max(0, Depth0 - length(Stk)), + Stk ++ MakeStk0(Depth) + end, + do_exception(Class, Reason, MakeStk, Bs, Ieval); + + %% Error must have occurred within a re-entry to + %% interpreted code, simply raise the exception + _ -> + erlang:Class(Reason) + end; + + %% Re-entry to Meta from non-interpreted code + {re_entry, Debugged, {eval,{M,F,As}}} when Le =:= 1 -> + %% Reset process dictionary + %% This is really only necessary if the process left + %% interpreted code at a call level > 1 + dbg_istk:init(), + put(stacktrace, []), + put(exit_info, undefined), + + dbg_iserver:cast(get(int), {set_status,self(),running,{}}), + dbg_icmd:tell_attached(running), + + %% Tell attached process(es) to update source code. + dbg_icmd:tell_attached({re_entry,M,F}), + + %% Send the result of the meta process + Debugged ! {sys,self(),eval_mfa(Debugged,M,F,As,Ieval)}, + + dbg_iserver:cast(get(int), {set_status,self(),idle,{}}), + dbg_icmd:tell_attached(idle), + meta_loop(Debugged, Bs, Ieval); + + %% Evaluation in Debugged results in call to interpreted + %% function (probably? a fun) + {re_entry, Debugged, {eval,{M,F,As}}} when Le>1 -> + Ieval2 = Ieval#ieval{module=undefined, line=-1}, + Debugged ! {sys,self(),eval_mfa(Debugged,M,F,As,Ieval2)}, + meta_loop(Debugged, Bs, Ieval); + + Msg -> + check_exit_msg(Msg, Bs, Ieval), + dbg_icmd:handle_msg(Msg, idle, Bs, Ieval), + meta_loop(Debugged, Bs, Ieval) + end. + +exit_loop(OrigPid, Reason, Bs, Ieval) -> + receive + Msg -> + check_exit_msg(Msg, Bs, Ieval), + dbg_icmd:handle_msg(Msg, exit_at, Bs, Ieval), + exit_loop(OrigPid, Reason, Bs, Ieval) + end. + +%%--Trace function---------------------------------------------------- + +%%-------------------------------------------------------------------- +%% trace(What, Args) +%% What = send | receivex | received | call | return | bif +%% Args depends on What, see the code. +%%-------------------------------------------------------------------- +trace(What, Args) -> + trace(What, Args, get(trace)). + +trace(return, {_Le,{dbg_apply,_,_,_}}, _Bool) -> + ignore; +trace(What, Args, true) -> + Fun = fun(P) -> format_trace(What, Args, P) end, + dbg_icmd:tell_attached({trace_output, Fun}); +trace(_What, _Args, false) -> + ignore. + +format_trace(What, Args, P) -> + case What of + send -> + {To,Msg} = Args, + io_lib:format("==> ~w : "++P++"~n", [To, Msg]); + receivex -> + {Le, TimeoutP} = Args, + Tail = case TimeoutP of + true -> "with timeout~n"; + false -> "~n" + end, + io_lib:format(" (~w) receive " ++ Tail, [Le]); + + received when Args =:= null -> + io_lib:format("~n", []); + received -> % Args=Msg + io_lib:format("~n<== "++P++"~n", [Args]); + + call -> + {Called, {Le,Li,M,F,As}} = Args, + case Called of + extern -> + io_lib:format("++ (~w) <~w> ~w:~tw~ts~n", + [Le,Li,M,F,format_args(As, P)]); + local -> + io_lib:format("++ (~w) <~w> ~tw~ts~n", + [Le,Li,F,format_args(As, P)]) + end; + call_fun -> + {Le,Li,F,As} = Args, + io_lib:format("++ (~w) <~w> ~tw~ts~n", + [Le, Li, F, format_args(As, P)]); + return -> + {Le,Val} = Args, + io_lib:format("-- (~w) "++P++"~n", [Le, Val]); + + + bif -> + {Le,Li,M,F,As} = Args, + io_lib:format("++ (~w) <~w> ~w:~tw~ts~n", + [Le, Li, M, F, format_args(As, P)]) + end. + +format_args(As, P) when is_list(As) -> + [$(,format_args1(As, P),$)]; +format_args(A, P) -> + [$/,io_lib:format(P, [A])]. + +format_args1([A], P) -> + [io_lib:format(P, [A])]; +format_args1([A|As], P) -> + [io_lib:format(P, [A]),$,|format_args1(As, P)]; +format_args1([], _) -> + []. + +%%--Other useful functions-------------------------------------------- + +%% Mimic catch behaviour +catch_value(error, Reason) -> + {'EXIT',{Reason,get_stacktrace()}}; +catch_value(exit, Reason) -> + {'EXIT',Reason}; +catch_value(throw, Reason) -> + Reason. + +%%--Code interpretation----------------------------------------------- + +%%-------------------------------------------------------------------- +%% Top level function of meta evaluator. +%% Return message to be replied to the target process. +%%-------------------------------------------------------------------- +eval_mfa(Debugged, M, F, As, #ieval{level=Le}=Ieval0) -> + Int = get(int), + Bs = erl_eval:new_bindings(), + Ieval = Ieval0#ieval{level=Le+1,top=true}, + try do_eval_function(M, F, As, Bs, extern, Ieval) of + {value, Val, _Bs} -> + trace(return, {Le,Val}), + {ready, Val} + catch + exit:{Debugged, Reason} -> + exit(Reason); + exit:{Int, Reason} -> + exit(Reason); + Class:Reason -> + {exception, {Class, Reason, get_stacktrace()}} + end. + +eval_function(Mod, Name, As, Bs, Called, Ieval0, Lc) -> + Tail = Lc andalso get(trace_stack) =:= no_tail, + case Tail of + false -> + Ieval = dbg_istk:push(Bs, Ieval0, Lc), + {value,Val,_} = do_eval_function(Mod, Name, As, Bs, Called, Ieval), + dbg_istk:pop(), + trace(return, {Ieval#ieval.level,Val}), + {value,Val,Bs}; + true -> + do_eval_function(Mod, Name, As, Bs, Called, Ieval0) + end. + +do_eval_function(Mod, Fun, As0, Bs0, _, Ieval0) when is_function(Fun); + Mod =:= ?MODULE, + Fun =:= eval_fun orelse + Fun =:= eval_named_fun -> + #ieval{level=Le,line=Li,top=Top} = Ieval0, + case lambda(Fun, As0) of + {[{clause,Fc,_,_,_}|_]=Cs,Module,Name,As,Bs} -> + Ieval = Ieval0#ieval{module=Module,function=Name, + arguments=As0,line=Fc}, + trace(call_fun, {Le,Li,Name,As}), + fnk_clauses(Cs, As, Bs, Ieval); + + not_interpreted when Top -> % We are leaving interpreted code + trace(call_fun, {Le,Li,Fun,As0}), + {value, {dbg_apply,erlang,apply,[Fun,As0]}, Bs0}; + not_interpreted -> + trace(call_fun, {Le,Li,Fun,As0}), + debugged_cmd({apply,erlang,apply,[Fun,As0]}, Bs0, Ieval0); + + {error,Reason} -> + %% It's ok not to push anything in this case, the error + %% reason contains information about the culprit + %% ({badarity,{{Mod,Name},As}}) + exception(error, Reason, Bs0, Ieval0) + end; + +do_eval_function(Mod, Name, As0, Bs0, Called, Ieval0) -> + #ieval{level=Le,line=Li,top=Top} = Ieval0, + trace(call, {Called, {Le,Li,Mod,Name,As0}}), + Ieval = Ieval0#ieval{module=Mod,function=Name,arguments=As0}, + case get_function(Mod, Name, As0, Called) of + [{clause,FcLine,_,_,_}|_]=Cs -> + fnk_clauses(Cs, As0, erl_eval:new_bindings(), + Ieval#ieval{line=FcLine}); + + not_interpreted when Top -> % We are leaving interpreted code + {value, {dbg_apply,Mod,Name,As0}, Bs0}; + not_interpreted -> + debugged_cmd({apply,Mod,Name,As0}, Bs0, Ieval); + + undef -> + exception(error, undef, Bs0, Ieval, true) + end. + +lambda(eval_fun, [Cs,As,Bs,{Mod,Name}=F]) -> + %% Fun defined in interpreted code, called from outside + if + length(element(3,hd(Cs))) =:= length(As) -> + db_ref(Mod), %% Adds ref between module and process + {Cs,Mod,Name,As,Bs}; + true -> + {error,{badarity,{F,As}}} + end; +lambda(eval_named_fun, [Cs,As,Bs0,FName,RF,{Mod,Name}=F]) -> + %% Fun defined in interpreted code, called from outside + if + length(element(3,hd(Cs))) =:= length(As) -> + db_ref(Mod), %% Adds ref between module and process + Bs1 = add_binding(FName, RF, Bs0), + {Cs,Mod,Name,As,Bs1}; + true -> + {error,{badarity,{F,As}}} + end; +lambda(Fun, As) when is_function(Fun) -> + %% Fun called from within interpreted code... + case erlang:fun_info(Fun, module) of + + %% ... and the fun was defined in interpreted code + {module, ?MODULE} -> + {Mod,Name,Bs, Cs} = + case erlang:fun_info(Fun, env) of + {env,[{{M,F},Bs0,Cs0}]} -> + {M,F,Bs0, Cs0}; + {env,[{{M,F},Bs0,Cs0,FName}]} -> + {M,F,add_binding(FName, Fun, Bs0), Cs0} + end, + {arity, Arity} = erlang:fun_info(Fun, arity), + if + length(As) =:= Arity -> + db_ref(Mod), %% Adds ref between module and process + {Cs,Mod,Name,As,Bs}; + true -> + {error,{badarity,{Fun,As}}} + end; + + %% ... and the fun was defined outside interpreted code + _ -> + not_interpreted + end. + +get_function(Mod, Name, Args, local) -> + Arity = length(Args), + Key = {Mod,Name,Arity}, + case cached(Key) of + false -> + DbRef = db_ref(Mod), + case dbg_idb:match_object(DbRef, {{Mod,Name,Arity,'_'},'_'}) of + [{{Mod,Name,Arity,Exp},Clauses}] -> + cache(Key, {Exp,Clauses}), + Clauses; + _ -> undef + end; + {_Exp,Cs} -> Cs + end; +get_function(Mod, Name, Args, extern) -> + Arity = length(Args), + Key = {Mod,Name,Arity}, + case cached(Key) of + false -> + case db_ref(Mod) of + not_found -> not_interpreted; + DbRef -> + case dbg_idb:lookup(DbRef, {Mod,Name,Arity,true}) of + {ok,Data} -> + cache(Key, {true,Data}), + Data; + not_found -> + case dbg_idb:lookup(DbRef, module) of + {ok,_} -> undef; + not_found -> not_interpreted + end + end + end; + {true,Cs} -> Cs; + {false,_} -> undef + end. + +db_ref(Mod) -> + case get(?DB_REF_KEY(Mod)) of + undefined -> + case dbg_iserver:call(get(int), + {get_module_db, Mod, get(self)}) of + not_found -> + not_found; + ModDb -> + Node = node(get(int)), + DbRef = if + Node =/= node() -> {Node,ModDb}; + true -> ModDb + end, + put(?DB_REF_KEY(Mod), DbRef), + DbRef + end; + DbRef -> + DbRef + end. + +cache(Key, Data) -> + put(cache, lists:sublist([{Key,Data}|get(cache)], 5)). + +cached(Key) -> + case lists:keyfind(Key, 1, get(cache)) of + {Key,Data} -> Data; + false -> false + end. + +%% Try to find a matching function clause +%% #ieval.level is set, the other fields must be set in this function +fnk_clauses([{clause,Line,Pars,Gs,Body}|Cs], As, Bs0, Ieval) -> + case head_match(Pars, As, [], Bs0) of + {match,Bs1} -> + Bs = add_bindings(Bs1, Bs0), + case guard(Gs, Bs) of + true -> + seq(Body, Bs, Ieval#ieval{line=Line}); + false -> + fnk_clauses(Cs, As, Bs0, Ieval) + end; + nomatch -> + fnk_clauses(Cs, As, Bs0, Ieval) + end; +fnk_clauses([], _As, Bs, Ieval) -> + exception(error, function_clause, Bs, Ieval, true). + +seq([E], Bs0, Ieval) -> + case dbg_icmd:cmd(E, Bs0, Ieval) of + {skip,Bs} -> + {value,skipped,Bs}; + Bs -> + expr(E, Bs, Ieval) + end; +seq([E|Es], Bs0, Ieval) -> + case dbg_icmd:cmd(E, Bs0, Ieval) of + {skip,Bs} -> + seq(Es, Bs, Ieval); + Bs1 -> + case expr(E, Bs1, Ieval#ieval{top=false}) of + {value,_,Bs} -> + seq(Es, Bs, Ieval); + {bad_maybe_match,_}=Bad -> + Bad + end + end; +seq([], Bs, _) -> + {value,true,Bs}. + +%% Variable +expr({var,Line,V}, Bs, Ieval) -> + case binding(V, Bs) of + {value,Val} -> + {value,Val,Bs}; + unbound -> + exception(error, {unbound,V}, Bs, Ieval#ieval{line=Line}) + end; + +expr({value,_,Val}, Bs, _Ieval) -> + {value,Val,Bs}; +expr({value,Val}, Bs, _Ieval) -> % Special case straight values + {value,Val,Bs}; + +%% List +expr({cons,Line,H0,T0}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line,top=false}, + {value,H,Bs1} = expr(H0, Bs0, Ieval), + {value,T,Bs2} = expr(T0, Bs0, Ieval), + {value,[H|T],merge_bindings(Bs2, Bs1, Ieval)}; + +%% Tuple +expr({tuple,Line,Es0}, Bs0, Ieval) -> + {Vs,Bs} = eval_list(Es0, Bs0, Ieval#ieval{line=Line}), + {value,list_to_tuple(Vs),Bs}; + +%% Map +expr({map,Line,Fs}, Bs0, Ieval) -> + {Map,Bs} = eval_new_map_fields(Fs, Bs0, Ieval#ieval{line=Line,top=false}, + fun expr/3), + {value,Map,Bs}; +expr({map,Line,E0,Fs0}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line,top=false}, + {value,E,Bs1} = expr(E0, Bs0, Ieval), + {Fs,Bs2} = eval_map_fields(Fs0, Bs0, Ieval), + _ = maps:put(k, v, E), %Validate map. + Value = lists:foldl(fun ({map_assoc,K,V}, Mi) -> maps:put(K,V,Mi); + ({map_exact,K,V}, Mi) -> maps:update(K,V,Mi) + end, E, Fs), + {value,Value,merge_bindings(Bs2, Bs1, Ieval)}; + +%% Record update +expr({record_update,Line,Es},Bs,#ieval{level=Le}=Ieval0) -> + %% Incr Level, we don't need to step (next) through temp + %% variables creation and matching + Ieval = Ieval0#ieval{top=false, line=Line, level=Le+1}, + Seq = fun(E, {_, _, Bs1}) -> expr(E, Bs1, Ieval) end, + {value,Value,Bs1} = lists:foldl(Seq, {value, true, Bs}, Es), + {value,Value,remove_temporary_bindings(Bs1)}; + +%% A block of statements +expr({block,Line,Es},Bs,Ieval) -> + seq(Es, Bs, Ieval#ieval{line=Line}); + +%% Catch statement +expr({'catch',Line,Expr}, Bs0, Ieval) -> + try expr(Expr, Bs0, Ieval#ieval{line=Line, top=false}) + catch + Class:Reason -> + %% Exception caught, reset exit info + put(exit_info, undefined), + dbg_istk:pop(Ieval#ieval.level), + Value = catch_value(Class, Reason), + trace(return, {Ieval#ieval.level,Value}), + {value, Value, Bs0} + end; + +%% Try-catch statement +expr({'try',Line,Es,CaseCs,CatchCs,[]}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + try seq(Es, Bs0, Ieval#ieval{top=false}) of + {value,Val,Bs} = Value -> + case CaseCs of + [] -> Value; + _ -> + case_clauses(Val, CaseCs, Bs, try_clause, Ieval) + end + catch + Class:Reason when CatchCs =/= [] -> + catch_clauses({Class,Reason,get_stacktrace()}, CatchCs, Bs0, Ieval) + end; +expr({'try',Line,Es,CaseCs,CatchCs,As}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + try seq(Es, Bs0, Ieval#ieval{top=false}) of + {value,Val,Bs} = Value -> + case CaseCs of + [] -> Value; + _ -> + case_clauses(Val, CaseCs, Bs, try_clause, Ieval) + end + catch + Class:Reason when CatchCs =/= [] -> + catch_clauses({Class,Reason,get_stacktrace()}, CatchCs, Bs0, Ieval) + after + seq(As, Bs0, Ieval#ieval{top=false}) + end; + +%% Case statement +expr({'case',Line,E,Cs}, Bs0, Ieval) -> + {value,Val,Bs} = + expr(E, Bs0, Ieval#ieval{line=Line, top=false}), + case_clauses(Val, Cs, Bs, case_clause, Ieval#ieval{line=Line}); + +%% If statement +expr({'if',Line,Cs}, Bs, Ieval) -> + if_clauses(Cs, Bs, Ieval#ieval{line=Line}); + +%% Andalso/orelse +expr({'andalso',Line,E1,E2}, Bs0, Ieval) -> + case expr(E1, Bs0, Ieval#ieval{line=Line, top=false}) of + {value,false,_}=Res -> + Res; + {value,true,Bs} -> + {value,Val,_} = expr(E2, Bs, Ieval#ieval{line=Line, top=false}), + {value,Val,Bs}; + {value,Val,Bs} -> + exception(error, {badarg,Val}, Bs, Ieval) + end; +expr({'orelse',Line,E1,E2}, Bs0, Ieval) -> + case expr(E1, Bs0, Ieval#ieval{line=Line, top=false}) of + {value,true,_}=Res -> + Res; + {value,false,Bs} -> + {value,Val,_} = expr(E2, Bs, Ieval#ieval{line=Line, top=false}), + {value,Val,Bs}; + {value,Val,Bs} -> + exception(error, {badarg,Val}, Bs, Ieval) + end; + +%% Maybe statement without else +expr({'maybe',Line,Es}, Bs, Ieval) -> + case seq(Es, Bs, Ieval#ieval{line=Line}) of + {bad_maybe_match,Val} -> + {value,Val,Bs}; + {value,_,_}=Other -> + Other + end; + +%% Maybe statement with else +expr({'maybe',Line,Es,Cs}, Bs, Ieval) -> + case seq(Es, Bs, Ieval#ieval{line=Line}) of + {bad_maybe_match,Val} -> + case_clauses(Val, Cs, Bs, else_clause, Ieval#ieval{line=Line}); + {value,_,_}=Other -> + Other + end; + +%% Matching expression +expr({match,Line,Lhs,Rhs0}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {value,Rhs,Bs1} = expr(Rhs0, Bs0, Ieval#ieval{top=false}), + case match(Lhs, Rhs, Bs1) of + {match,Bs} -> + {value,Rhs,Bs}; + nomatch -> + exception(error, {badmatch,Rhs}, Bs1, Ieval) + end; + +%% Conditional match expression (?=) +expr({maybe_match,Line,Lhs,Rhs0}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {value,Rhs,Bs1} = expr(Rhs0, Bs0, Ieval#ieval{top=false}), + case match(Lhs, Rhs, Bs1) of + {match,Bs} -> + {value,Rhs,Bs}; + nomatch -> + {bad_maybe_match,Rhs} + end; + +%% Construct a fun +expr({make_fun,Line,Name,Cs}, Bs, #ieval{module=Module}=Ieval) -> + Arity = length(element(3,hd(Cs))), + Info = {{Module,Name},Bs,Cs}, + Fun = + case Arity of + 0 -> fun() -> eval_fun([], Info) end; + 1 -> fun(A) -> eval_fun([A], Info) end; + 2 -> fun(A,B) -> eval_fun([A,B], Info) end; + 3 -> fun(A,B,C) -> eval_fun([A,B,C], Info) end; + 4 -> fun(A,B,C,D) -> eval_fun([A,B,C,D], Info) end; + 5 -> fun(A,B,C,D,E) -> eval_fun([A,B,C,D,E], Info) end; + 6 -> fun(A,B,C,D,E,F) -> eval_fun([A,B,C,D,E,F], Info) end; + 7 -> fun(A,B,C,D,E,F,G) -> + eval_fun([A,B,C,D,E,F,G], Info) end; + 8 -> fun(A,B,C,D,E,F,G,H) -> + eval_fun([A,B,C,D,E,F,G,H], Info) end; + 9 -> fun(A,B,C,D,E,F,G,H,I) -> + eval_fun([A,B,C,D,E,F,G,H,I], Info) end; + 10 -> fun(A,B,C,D,E,F,G,H,I,J) -> + eval_fun([A,B,C,D,E,F,G,H,I,J], Info) end; + 11 -> fun(A,B,C,D,E,F,G,H,I,J,K) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K], Info) end; + 12 -> fun(A,B,C,D,E,F,G,H,I,J,K,L) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L], Info) end; + 13 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M], Info) end; + 14 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N], Info) end; + 15 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O], Info) end; + 16 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P], Info) end; + 17 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q], Info) end; + 18 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R], Info) end; + 19 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S],Info) end; + 20 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T],Info) end; + _Other -> + exception(error, {'argument_limit',{'fun',Cs}}, Bs, + Ieval#ieval{line=Line}) + end, + {value,Fun,Bs}; + +%% Construct a fun +expr({make_named_fun,Line,Name,FName,Cs}, Bs, #ieval{module=Module}=Ieval) -> + Arity = length(element(3,hd(Cs))), + Info = {{Module,Name},Bs,Cs,FName}, + Fun = + case Arity of + 0 -> fun RF() -> eval_named_fun([], RF, Info) end; + 1 -> fun RF(A) -> eval_named_fun([A], RF, Info) end; + 2 -> fun RF(A,B) -> + eval_named_fun([A,B], RF, Info) end; + 3 -> fun RF(A,B,C) -> + eval_named_fun([A,B,C], RF, Info) end; + 4 -> fun RF(A,B,C,D) -> + eval_named_fun([A,B,C,D], RF, Info) end; + 5 -> fun RF(A,B,C,D,E) -> + eval_named_fun([A,B,C,D,E], + RF, Info) end; + 6 -> fun RF(A,B,C,D,E,F) -> + eval_named_fun([A,B,C,D,E,F], + RF, Info) end; + 7 -> fun RF(A,B,C,D,E,F,G) -> + eval_named_fun([A,B,C,D,E,F,G], + RF, Info) end; + 8 -> fun RF(A,B,C,D,E,F,G,H) -> + eval_named_fun([A,B,C,D,E,F,G,H], + RF, Info) end; + 9 -> fun RF(A,B,C,D,E,F,G,H,I) -> + eval_named_fun([A,B,C,D,E,F,G,H,I], + RF, Info) end; + 10 -> fun RF(A,B,C,D,E,F,G,H,I,J) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J], + RF, Info) end; + 11 -> fun RF(A,B,C,D,E,F,G,H,I,J,K) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K], + RF, Info) end; + 12 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L], + RF, Info) end; + 13 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M], + RF, Info) end; + 14 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N], + RF, Info) end; + 15 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O], + RF, Info) end; + 16 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P], + RF, Info) end; + 17 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q], + RF, Info) end; + 18 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q, + R], + RF, Info) end; + 19 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q, + R,S], + RF, Info) end; + 20 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q, + R,S,T], + RF, Info) end; + _Other -> + exception(error, {'argument_limit',{named_fun,FName,Cs}}, Bs, + Ieval#ieval{line=Line}) + end, + {value,Fun,Bs}; + +%% Construct an external fun. +expr({make_ext_fun,Line,MFA0}, Bs0, Ieval0) -> + {[M,F,A],Bs} = eval_list(MFA0, Bs0, Ieval0), + try erlang:make_fun(M, F, A) of + Value -> + {value,Value,Bs} + catch + error:badarg -> + Ieval1 = Ieval0#ieval{line=Line}, + Ieval2 = dbg_istk:push(Bs0, Ieval1, false), + Ieval = Ieval2#ieval{module=erlang,function=make_fun, + arguments=[M,F,A],line=-1}, + exception(error, badarg, Bs, Ieval, true) + end; + +%% Local function call +expr({local_call,Line,F,As0,Lc}, Bs0, #ieval{module=M} = Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {As,Bs} = eval_list(As0, Bs0, Ieval), + eval_function(M, F, As, Bs, local, Ieval, Lc); + +%% Remote function call +expr({call_remote,Line,M,F,As0,Lc}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {As,Bs} = eval_list(As0, Bs0, Ieval), + eval_function(M, F, As, Bs, extern, Ieval, Lc); + +%% Emulated semantics of some BIFs +expr({dbg,Line,self,[]}, Bs, #ieval{level=Le}) -> + trace(bif, {Le,Line,erlang,self,[]}), + Self = get(self), + trace(return, {Le,Self}), + {value,Self,Bs}; +expr({dbg,Line,raise,As0}, Bs0, #ieval{level=Le}=Ieval0) -> + %% Since stacktraces are emulated, we will + %% need to emulate erlang:raise/3 so that we can + %% capture the stacktrace. + Ieval = Ieval0#ieval{line=Line}, + {[Class,Reason,Stk0]=As,Bs} = eval_list(As0, Bs0, Ieval), + trace(bif, {Le,Line,erlang,raise,As}), + try + %% Evaluate raise/3 for error checking and + %% truncating of the stacktrace to the correct depth. + Error = erlang:raise(Class, Reason, Stk0), + trace(return, {Le,Error}), + {value,Error,Bs} + catch + _:_:Stk -> %Possibly truncated. + StkFun = fun(_) -> Stk end, + do_exception(Class, Reason, StkFun, Bs, Ieval) + end; +expr({dbg,Line,throw,As0}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {[Term],Bs} = eval_list(As0, Bs0, Ieval), + trace(bif, {Le,Line,erlang,throw,[Term]}), + exception(throw, Term, Bs, Ieval); +expr({dbg,Line,error,As0}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {[Term],Bs} = eval_list(As0, Bs0, Ieval), + trace(bif, {Le,Line,erlang,error,[Term]}), + exception(error, Term, Bs, Ieval); +expr({dbg,Line,exit,As0}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {[Term],Bs} = eval_list(As0, Bs0, Ieval), + trace(bif, {Le,Line,erlang,exit,[Term]}), + exception(exit, Term, Bs, Ieval); + +%% Call to "safe" BIF, ie a BIF that can be executed in Meta process +expr({safe_bif,Line,M,F,As0}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval1 = Ieval0#ieval{line=Line}, + {As,Bs} = eval_list(As0, Bs0, Ieval1), + trace(bif, {Le,Line,M,F,As}), + Ieval2 = dbg_istk:push(Bs0, Ieval1, false), + Ieval = Ieval2#ieval{module=M,function=F,arguments=As,line=-1}, + {_,Value,_} = Res = safe_bif(M, F, As, Bs, Ieval), + trace(return, {Le,Value}), + dbg_istk:pop(), + Res; + +%% Call to a BIF that must be evaluated in the correct process +expr({bif,Line,M,F,As0}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval1 = Ieval0#ieval{line=Line}, + {As,Bs} = eval_list(As0, Bs0, Ieval1), + trace(bif, {Le,Line,M,F,As}), + Ieval2 = dbg_istk:push(Bs0, Ieval1, false), + Ieval = Ieval2#ieval{module=M,function=F,arguments=As,line=-1}, + {_,Value,_} = Res = debugged_cmd({apply,M,F,As}, Bs, Ieval), + trace(return, {Le,Value}), + dbg_istk:pop(), + Res; + +%% Call to an operation +expr({op,Line,Op,As0}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {As,Bs} = eval_list(As0, Bs0, Ieval), + try apply(erlang,Op,As) of + Value -> + {value,Value,Bs} + catch + Class:Reason -> + exception(Class, Reason, Bs, Ieval) + end; + +%% apply/2 (fun) +expr({apply_fun,Line,Fun0,As0,Lc}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + FunValue = case expr(Fun0, Bs0, Ieval) of + {value,{dbg_apply,Mx,Fx,Asx},Bsx} -> + debugged_cmd({apply,Mx,Fx,Asx}, + Bsx, Ieval#ieval{level=Le+1}); + OtherFunValue -> + OtherFunValue + end, + case FunValue of + {value,Fun,Bs1} when is_function(Fun) -> + {As,Bs} = eval_list(As0, Bs1, Ieval), + eval_function(undefined, Fun, As, Bs, extern, Ieval, Lc); + {value,{M,F},Bs1} when is_atom(M), is_atom(F) -> + {As,Bs} = eval_list(As0, Bs1, Ieval), + eval_function(M, F, As, Bs, extern, Ieval, Lc); + {value,BadFun,Bs1} -> + exception(error, {badfun,BadFun}, Bs1, Ieval) + end; + +%% apply/3 +expr({apply,Line,As0,Lc}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {[M,F,As],Bs} = eval_list(As0, Bs0, Ieval), + eval_function(M, F, As, Bs, extern, Ieval, Lc); + +%% Receive statement +expr({'receive',Line,Cs}, Bs0, #ieval{level=Le}=Ieval) -> + trace(receivex, {Le,false}), + eval_receive(get(self), Cs, Bs0, Ieval#ieval{line=Line}); + +%% Receive..after statement +expr({'receive',Line,Cs,To,ToExprs}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {value,ToVal,ToBs} = expr(To, Bs0, Ieval#ieval{top=false}), + trace(receivex, {Le,true}), + check_timeoutvalue(ToVal, ToBs, To, Ieval), + {Stamp,_} = statistics(wall_clock), + eval_receive(get(self), Cs, ToVal, ToExprs, ToBs, Bs0, + 0, Stamp, Ieval); + +%% Send (!) +expr({send,Line,To0,Msg0}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + Ieval1 = Ieval#ieval{top=false}, + {value,To,Bs1} = expr(To0, Bs0, Ieval1), + {value,Msg,Bs2} = expr(Msg0, Bs0, Ieval1), + Bs = merge_bindings(Bs2, Bs1, Ieval), + eval_send(To, Msg, Bs, Ieval); + +%% Binary +expr({bin,Line,Fs}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line,top=false}, + try + eval_bits:expr_grp(Fs, Bs0, + fun (E, B) -> expr(E, B, Ieval) end) + catch + Class:Reason -> + exception(Class, Reason, Bs0, Ieval) + end; + +%% List comprehension +expr({lc,_Line,E,Qs}, Bs, Ieval) -> + eval_lc(E, Qs, Bs, Ieval); +expr({bc,_Line,E,Qs}, Bs, Ieval) -> + eval_bc(E, Qs, Bs, Ieval); +expr({mc,_Line,E,Qs}, Bs, Ieval) -> + eval_mc(E, Qs, Bs, Ieval); + +%% Brutal exit on unknown expressions/clauses/values/etc. +expr(E, _Bs, _Ieval) -> + erlang:error({'NYI',E}). + +%% Interpreted fun() called from uninterpreted module, recurse +eval_fun(As, {Info,Bs,Cs}) -> + dbg_debugged:eval(?MODULE, eval_fun, [Cs,As,Bs,Info]). + +%% Interpreted named fun() called from uninterpreted module, recurse +eval_named_fun(As, RF, {Info,Bs,Cs,FName}) -> + dbg_debugged:eval(?MODULE, eval_named_fun, [Cs,As,Bs,FName,RF,Info]). + +%% eval_lc(Expr,[Qualifier],Bindings,IevalState) -> +%% {value,Value,Bindings}. +%% This is evaluating list comprehensions "straight out of the book". +%% Copied from rv's implementation in erl_eval. +eval_lc(E, Qs, Bs, Ieval) -> + {value,eval_lc1(E, Qs, Bs, Ieval),Bs}. + +eval_lc1(E, [{generator,G}|Qs], Bs, Ieval) -> + CompFun = fun(NewBs) -> eval_lc1(E, Qs, NewBs, Ieval) end, + eval_generator(G, Bs, CompFun, Ieval); +eval_lc1(E, [{guard,Q}|Qs], Bs0, Ieval) -> + case guard(Q, Bs0) of + true -> eval_lc1(E, Qs, Bs0, Ieval); + false -> [] + end; +eval_lc1(E, [Q|Qs], Bs0, Ieval) -> + case expr(Q, Bs0, Ieval#ieval{top=false}) of + {value,true,Bs} -> eval_lc1(E, Qs, Bs, Ieval); + {value,false,_Bs} -> []; + {value,V,Bs} -> exception(error, {bad_filter,V}, Bs, Ieval) + end; +eval_lc1(E, [], Bs, Ieval) -> + {value,V,_} = expr(E, Bs, Ieval#ieval{top=false}), + [V]. + +%% eval_bc(Expr,[Qualifier],Bindings,IevalState) -> +%% {value,Value,Bindings}. +%% This is evaluating list comprehensions "straight out of the book". +%% Copied from rv's implementation in erl_eval. +eval_bc(E, Qs, Bs, Ieval) -> + Val = erlang:list_to_bitstring(eval_bc1(E, Qs, Bs, Ieval)), + {value,Val,Bs}. + +eval_bc1(E, [{generator,G}|Qs], Bs, Ieval) -> + CompFun = fun(NewBs) -> eval_bc1(E, Qs, NewBs, Ieval) end, + eval_generator(G, Bs, CompFun, Ieval); +eval_bc1(E, [{guard,Q}|Qs], Bs0, Ieval) -> + case guard(Q, Bs0) of + true -> eval_bc1(E, Qs, Bs0, Ieval); + false -> [] + end; +eval_bc1(E, [Q|Qs], Bs0, Ieval) -> + case expr(Q, Bs0, Ieval#ieval{top=false}) of + {value,true,Bs} -> eval_bc1(E, Qs, Bs, Ieval); + {value,false,_Bs} -> []; + {value,V,Bs} -> exception(error, {bad_filter,V}, Bs, Ieval) + end; +eval_bc1(E, [], Bs, Ieval) -> + {value,V,_} = expr(E, Bs, Ieval#ieval{top=false}), + [V]. + +eval_mc(E, Qs, Bs, Ieval) -> + Map = eval_mc1(E, Qs, Bs, Ieval), + {value,maps:from_list(Map),Bs}. + +eval_mc1(E, [{generator,G}|Qs], Bs, Ieval) -> + CompFun = fun(NewBs) -> eval_mc1(E, Qs, NewBs, Ieval) end, + eval_generator(G, Bs, CompFun, Ieval); +eval_mc1(E, [{guard,Q}|Qs], Bs0, Ieval) -> + case guard(Q, Bs0) of + true -> eval_mc1(E, Qs, Bs0, Ieval); + false -> [] + end; +eval_mc1(E, [Q|Qs], Bs0, Ieval) -> + case expr(Q, Bs0, Ieval#ieval{top=false}) of + {value,true,Bs} -> eval_mc1(E, Qs, Bs, Ieval); + {value,false,_Bs} -> []; + {value,V,Bs} -> exception(error, {bad_filter,V}, Bs, Ieval) + end; +eval_mc1({map_field_assoc,_,K0,V0}, [], Bs, Ieval) -> + {value,K,_} = expr(K0, Bs, Ieval#ieval{top=false}), + {value,V,_} = expr(V0, Bs, Ieval#ieval{top=false}), + [{K,V}]. + +eval_generator({generate,Line,P,L0}, Bs0, CompFun, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {value,L1,Bs1} = expr(L0, Bs0, Ieval#ieval{top=false}), + eval_generate(L1, P, Bs1, CompFun, Ieval); +eval_generator({b_generate,Line,P,Bin0}, Bs0, CompFun, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {value,Bin,Bs1} = expr(Bin0, Bs0, Ieval#ieval{top=false}), + eval_b_generate(Bin, P, Bs1, CompFun, Ieval); +eval_generator({m_generate,Line,P,Map0}, Bs0, CompFun, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {map_field_exact,_,K,V} = P, + {value,Map,_Bs1} = expr(Map0, Bs0, Ieval), + Iter = case is_map(Map) of + true -> + maps:iterator(Map); + false -> + %% Validate iterator. + try maps:foreach(fun(_, _) -> ok end, Map) of + _ -> + Map + catch + _:_ -> + exception(error, {bad_generator,Map}, Bs0, Ieval) + end + end, + eval_m_generate(Iter, {tuple,Line,[K,V]}, Bs0, CompFun, Ieval). + +eval_generate([V|Rest], P, Bs0, CompFun, Ieval) -> + case catch match1(P, V, erl_eval:new_bindings(), Bs0) of + {match,Bsn} -> + Bs2 = add_bindings(Bsn, Bs0), + CompFun(Bs2) ++ eval_generate(Rest, P, Bs0, CompFun, Ieval); + nomatch -> + eval_generate(Rest, P, Bs0, CompFun, Ieval) + end; +eval_generate([], _P, _Bs0, _CompFun, _Ieval) -> + []; +eval_generate(Term, _P, Bs, _CompFun, Ieval) -> + exception(error, {bad_generator,Term}, Bs, Ieval). + +eval_b_generate(<<_/bitstring>>=Bin, P, Bs0, CompFun, Ieval) -> + Mfun = match_fun(Bs0), + Efun = fun(Exp, Bs) -> expr(Exp, Bs, #ieval{}) end, + case eval_bits:bin_gen(P, Bin, erl_eval:new_bindings(), Bs0, Mfun, Efun) of + {match,Rest,Bs1} -> + Bs2 = add_bindings(Bs1, Bs0), + CompFun(Bs2) ++ eval_b_generate(Rest, P, Bs0, CompFun, Ieval); + {nomatch,Rest} -> + eval_b_generate(Rest, P, Bs0, CompFun, Ieval); + done -> + [] + end; +eval_b_generate(Term, _P, Bs, _CompFun, Ieval) -> + exception(error, {bad_generator,Term}, Bs, Ieval). + +eval_m_generate(Iter0, P, Bs0, CompFun, Ieval) -> + case maps:next(Iter0) of + {K,V,Iter} -> + case catch match1(P, {K,V}, erl_eval:new_bindings(), Bs0) of + {match,Bsn} -> + Bs2 = add_bindings(Bsn, Bs0), + CompFun(Bs2) ++ eval_m_generate(Iter, P, Bs0, CompFun, Ieval); + nomatch -> + eval_m_generate(Iter, P, Bs0, CompFun, Ieval) + end; + none -> + [] + end. + +safe_bif(M, F, As, Bs, Ieval0) -> + try apply(M, F, As) of + Value -> + {value,Value,Bs} + catch + Class:Reason:Stk -> + [{_,_,_,Info}|_] = Stk, + Ieval = case lists:keyfind(error_info, 1, Info) of + false -> Ieval0#ieval{error_info=[]}; + ErrorInfo -> Ieval0#ieval{error_info=[ErrorInfo]} + end, + exception(Class, Reason, Bs, Ieval, true) + end. + +eval_send(To, Msg, Bs, Ieval) -> + try To ! Msg of + Msg -> + trace(send, {To,Msg}), + {value,Msg,Bs} + catch + Class:Reason -> + exception(Class, Reason, Bs, Ieval) + end. + +%% Start tracing of messages before fetching current messages in +%% the queue to make sure that no messages are lost. +eval_receive(Debugged, Cs, Bs0, + #ieval{module=M,line=Line,level=Le}=Ieval) -> + %% To avoid private message passing protocol between META + %% and interpreted process. + erlang:trace(Debugged,true,['receive']), + {_,Msgs} = erlang:process_info(Debugged,messages), + case receive_clauses(Cs, Bs0, Msgs) of + nomatch -> + dbg_iserver:cast(get(int), {set_status, self(),waiting,{}}), + dbg_icmd:tell_attached({wait_at,M,Line,Le}), + eval_receive1(Debugged, Cs, Bs0, Ieval); + {eval,B,Bs,Msg} -> + rec_mess(Debugged, Msg, Bs, Ieval), + seq(B, Bs, Ieval) + end. + +eval_receive1(Debugged, Cs, Bs0, Ieval) -> + Msgs = do_receive(Debugged, Bs0, Ieval), + case receive_clauses(Cs, Bs0, Msgs) of + nomatch -> + eval_receive1(Debugged, Cs, Bs0, Ieval); + {eval,B,Bs,Msg} -> + rec_mess(Debugged, Msg, Bs0, Ieval), + dbg_iserver:cast(get(int), {set_status, self(),running,{}}), + dbg_icmd:tell_attached(running), + seq(B, Bs, Ieval) + end. + +check_timeoutvalue(ToVal,_,_,_) when is_integer(ToVal), ToVal>=0 -> true; +check_timeoutvalue(infinity,_,_,_) -> true; +check_timeoutvalue(_ToVal, ToBs, To, Ieval) -> + Line = element(2, To), + exception(error, timeout_value, ToBs, Ieval#ieval{line=Line}). + +eval_receive(Debugged, Cs, 0, ToExprs, ToBs, Bs0, 0, _Stamp, Ieval) -> + {_,Msgs} = erlang:process_info(Debugged,messages), + case receive_clauses(Cs, Bs0, Msgs) of + nomatch -> + trace(received,null), + seq(ToExprs, ToBs, Ieval); + {eval,B,Bs,Msg} -> + rec_mess_no_trace(Debugged, Msg, Bs0, Ieval), + seq(B, Bs, Ieval) + end; +eval_receive(Debugged, Cs, ToVal, ToExprs, ToBs, Bs0, + 0, Stamp, #ieval{module=M,line=Line,level=Le}=Ieval)-> + erlang:trace(Debugged,true,['receive']), + {_,Msgs} = erlang:process_info(Debugged,messages), + case receive_clauses(Cs, Bs0, Msgs) of + nomatch -> + {Stamp1,Time1} = newtime(Stamp,ToVal), + dbg_iserver:cast(get(int), {set_status, self(),waiting,{}}), + dbg_icmd:tell_attached({wait_after_at,M,Line,Le}), + eval_receive(Debugged, Cs, Time1, ToExprs, ToBs, Bs0, + infinity,Stamp1, Ieval); + {eval,B,Bs,Msg} -> + rec_mess(Debugged, Msg, Bs0, Ieval), + seq(B, Bs, Ieval) + end; +eval_receive(Debugged, Cs, ToVal, ToExprs, ToBs, Bs0, + _, Stamp, Ieval) -> + case do_receive(Debugged, ToVal, Stamp, Bs0, Ieval) of + timeout -> + trace(received,null), + rec_mess(Debugged), + dbg_iserver:cast(get(int), {set_status, self(),running,{}}), + dbg_icmd:tell_attached(running), + seq(ToExprs, ToBs, Ieval); + Msgs -> + case receive_clauses(Cs, Bs0, Msgs) of + nomatch -> + {Stamp1,Time1} = newtime(Stamp,ToVal), + eval_receive(Debugged, Cs, Time1, ToExprs, ToBs, + Bs0, infinity,Stamp1, Ieval); + {eval,B,Bs,Msg} -> + rec_mess(Debugged, Msg, Bs0, Ieval), + dbg_iserver:cast(get(int), + {set_status, self(), running, {}}), + dbg_icmd:tell_attached(running), + seq(B, Bs, Ieval) + end + end. + +do_receive(Debugged, Bs, Ieval) -> + receive + {trace,Debugged,'receive',Msg} -> + [Msg]; + Msg -> + check_exit_msg(Msg, Bs, Ieval), + dbg_icmd:handle_msg(Msg, wait_at, Bs, Ieval), + do_receive(Debugged, Bs, Ieval) + end. + +do_receive(Debugged, Time, Stamp, Bs, Ieval) -> + receive + {trace,Debugged,'receive',Msg} -> + [Msg]; + {user, timeout} -> + timeout; + Msg -> + check_exit_msg(Msg, Bs, Ieval), + dbg_icmd:handle_msg(Msg, wait_after_at, Bs, Ieval), + {Stamp1,Time1} = newtime(Stamp,Time), + do_receive(Debugged, Time1, Stamp1, Bs, Ieval) + after Time -> + timeout + end. + +newtime(Stamp,infinity) -> + {Stamp,infinity}; +newtime(Stamp,Time) -> + {Stamp1,_} = statistics(wall_clock), + case Time - (Stamp1 - Stamp) of + NewTime when NewTime > 0 -> + {Stamp1,NewTime}; + _ -> + {Stamp1,0} + end. + +rec_mess(Debugged, Msg, Bs, Ieval) -> + erlang:trace(Debugged, false, ['receive']), + flush_traces(Debugged), + Debugged ! {sys,self(),{'receive',Msg}}, + rec_ack(Debugged, Bs, Ieval). + +rec_mess(Debugged) -> + erlang:trace(Debugged, false, ['receive']), + flush_traces(Debugged). + +rec_mess_no_trace(Debugged, Msg, Bs, Ieval) -> + Debugged ! {sys,self(),{'receive',Msg}}, + rec_ack(Debugged, Bs, Ieval). + +rec_ack(Debugged, Bs, Ieval) -> + receive + {Debugged,rec_acked} -> + true; + Msg -> + check_exit_msg(Msg, Bs, Ieval), + io:format("***WARNING*** Unexp msg ~p, ieval ~p~n", + [Msg, Ieval]) + end. + +flush_traces(Debugged) -> + receive + {trace,Debugged,'receive',_} -> + flush_traces(Debugged) + after 0 -> + true + end. + +%% eval_list(ExpressionList, Bindings, Ieval) +%% Evaluate a list of expressions "in parallel" at the same level. +eval_list(Es, Bs, Ieval) -> + eval_list_1(Es, [], Bs, Bs, Ieval#ieval{top=false}). + +eval_list_1([E|Es], Vs, BsOrig, Bs0, Ieval) -> + {value,V,Bs1} = expr(E, BsOrig, Ieval), + eval_list_1(Es, [V|Vs], BsOrig, merge_bindings(Bs1, Bs0, Ieval), Ieval); +eval_list_1([], Vs, _, Bs, _Ieval) -> + {lists:reverse(Vs,[]),Bs}. + +%% if_clauses(Clauses, Bindings, Ieval) +if_clauses([{clause,_,[],G,B}|Cs], Bs, Ieval) -> + case guard(G, Bs) of + true -> + seq(B, Bs, Ieval); + false -> + if_clauses(Cs, Bs, Ieval) + end; +if_clauses([], Bs, Ieval) -> + exception(error, if_clause, Bs, Ieval). + +%% case_clauses(Value, Clauses, Bindings, Error, Ieval) +%% Error = try_clause | case_clause +case_clauses(Val, [{clause,_,[P],G,B}|Cs], Bs0, Error, Ieval) -> + case match(P, Val, Bs0) of + {match,Bs} -> + case guard(G, Bs) of + true -> + seq(B, Bs, Ieval); + false -> + case_clauses(Val, Cs, Bs0, Error, Ieval) + end; + nomatch -> + case_clauses(Val, Cs, Bs0, Error, Ieval) + end; +case_clauses(Val,[], Bs, Error, Ieval) -> + exception(error, {Error,Val}, Bs, Ieval). + +%% catch_clauses(Exception, Clauses, Bindings, Ieval) +%% Exception = {Class,Reason,[]} +catch_clauses(Exception, [{clause,_,[P],G,B}|CatchCs], Bs0, Ieval) -> + case match(P, Exception, Bs0) of + {match,Bs} -> + case guard(G, Bs) of + true -> + %% Exception caught, reset exit info + put(exit_info, undefined), + dbg_istk:pop(Ieval#ieval.level), + seq(B, Bs, Ieval); + false -> + catch_clauses(Exception, CatchCs, Bs0, Ieval) + end; + nomatch -> + catch_clauses(Exception, CatchCs, Bs0, Ieval) + end; +catch_clauses({Class,Reason,_}, [], _Bs, _Ieval) -> + erlang:Class(Reason). + +receive_clauses(Cs, Bs0, [Msg|Msgs]) -> + case rec_clauses(Cs, Bs0, Msg) of + nomatch -> + receive_clauses(Cs, Bs0, Msgs); + {eval,B,Bs} -> + {eval,B,Bs,Msg} + end; +receive_clauses(_, _, []) -> + nomatch. + +rec_clauses([{clause,_,Pars,G,B}|Cs], Bs0, Msg) -> + case rec_match(Pars, Msg, Bs0) of + {match,Bs} -> + case guard(G, Bs) of + true -> + trace(received, Msg), + {eval,B,Bs}; + false -> + rec_clauses(Cs, Bs0, Msg) + end; + nomatch -> + rec_clauses(Cs, Bs0, Msg) + end; +rec_clauses([], _, _) -> + nomatch. + +%% guard(GuardTests,Bindings) +%% Evaluate a list of guards. +guard([], _) -> true; +guard(Gs, Bs) -> or_guard(Gs, Bs). + +or_guard([G|Gs], Bs) -> + %% Short-circuit OR. + and_guard(G, Bs) orelse or_guard(Gs, Bs); +or_guard([], _) -> false. + +and_guard([G|Gs], Bs) -> + %% Short-circuit AND. + case catch guard_expr(G, Bs) of + {value,true} -> and_guard(Gs, Bs); + _ -> false + end; +and_guard([],_) -> true. + +guard_exprs([A0|As0], Bs) -> + {value,A} = guard_expr(A0, Bs), + {values,As} = guard_exprs(As0, Bs), + {values,[A|As]}; +guard_exprs([], _) -> + {values,[]}. + +guard_expr({'andalso',_,E1,E2}, Bs) -> + case guard_expr(E1, Bs) of + {value,false}=Res -> Res; + {value,true} -> + case guard_expr(E2, Bs) of + {value,_Val}=Res -> Res + end + end; +guard_expr({'orelse',_,E1,E2}, Bs) -> + case guard_expr(E1, Bs) of + {value,true}=Res -> Res; + {value,false} -> + case guard_expr(E2, Bs) of + {value,_Val}=Res -> Res + end + end; +guard_expr({'case',_,E0,Cs}, Bs) -> + {value,E} = guard_expr(E0, Bs), + guard_case_clauses(E, Cs, Bs); +guard_expr({dbg,_,self,[]}, _) -> + {value,get(self)}; +guard_expr({safe_bif,_,erlang,'not',As0}, Bs) -> + {values,As} = guard_exprs(As0, Bs), + {value,apply(erlang, 'not', As)}; +guard_expr({safe_bif,_,Mod,Func,As0}, Bs) -> + {values,As} = guard_exprs(As0, Bs), + {value,apply(Mod, Func, As)}; +guard_expr({var,_,V}, Bs) -> + {value,_} = binding(V, Bs); +guard_expr({value,_,Val}, _Bs) -> + {value,Val}; +guard_expr({cons,_,H0,T0}, Bs) -> + {value,H} = guard_expr(H0, Bs), + {value,T} = guard_expr(T0, Bs), + {value,[H|T]}; +guard_expr({tuple,_,Es0}, Bs) -> + {values,Es} = guard_exprs(Es0, Bs), + {value,list_to_tuple(Es)}; +guard_expr({map,_,Fs}, Bs0) -> + F = fun (G0, B0, _) -> + {value,G} = guard_expr(G0, B0), + {value,G,B0} + end, + {Map,_} = eval_new_map_fields(Fs, Bs0, #ieval{top=false}, F), + {value,Map}; +guard_expr({map,_,E0,Fs0}, Bs) -> + {value,E} = guard_expr(E0, Bs), + Fs = eval_map_fields_guard(Fs0, Bs), + Value = lists:foldl(fun ({map_assoc,K,V}, Mi) -> maps:put(K,V,Mi); + ({map_exact,K,V}, Mi) -> maps:update(K,V,Mi) end, + E, Fs), + {value,Value}; +guard_expr({bin,_,Flds}, Bs) -> + {value,V,_Bs} = + eval_bits:expr_grp(Flds, Bs, + fun(E,B) -> + {value,V} = guard_expr(E,B), + {value,V,B} + end), + {value,V}. + +%% guard_case_clauses(Value, Clauses, Bindings, Error, Ieval) +%% Error = try_clause | case_clause +guard_case_clauses(Val, [{clause,_,[P],G,B}|Cs], Bs0) -> + case match(P, Val, Bs0) of + {match,Bs} -> + case guard(G, Bs) of + true -> + guard_expr(hd(B), Bs); + false -> + guard_case_clauses(Val, Cs, Bs0) + end; + nomatch -> + guard_case_clauses(Val, Cs, Bs0) + end. + +%% eval_map_fields([Field], Bindings, IEvalState) -> +%% {[{map_assoc | map_exact,Key,Value}],Bindings} + +eval_map_fields(Fs, Bs, Ieval) -> + eval_map_fields(Fs, Bs, Ieval, fun expr/3). + +eval_map_fields_guard(Fs0, Bs) -> + {Fs,_} = eval_map_fields(Fs0, Bs, #ieval{}, + fun (G0, Bs0, _) -> + {value,G} = guard_expr(G0, Bs0), + {value,G,Bs0} + end), + Fs. + +eval_map_fields(Fs, Bs, Ieval, F) -> + eval_map_fields(Fs, Bs, Ieval, F, []). + +eval_map_fields([{map_field_assoc,Line,K0,V0}|Fs], Bs0, Ieval0, F, Acc) -> + Ieval = Ieval0#ieval{line=Line}, + {value,K,Bs1} = F(K0, Bs0, Ieval), + {value,V,Bs2} = F(V0, Bs1, Ieval), + eval_map_fields(Fs, Bs2, Ieval0, F, [{map_assoc,K,V}|Acc]); +eval_map_fields([{map_field_exact,Line,K0,V0}|Fs], Bs0, Ieval0, F, Acc) -> + Ieval = Ieval0#ieval{line=Line}, + {value,K,Bs1} = F(K0, Bs0, Ieval), + {value,V,Bs2} = F(V0, Bs1, Ieval), + eval_map_fields(Fs, Bs2, Ieval0, F, [{map_exact,K,V}|Acc]); +eval_map_fields([], Bs, _Ieval, _F, Acc) -> + {lists:reverse(Acc),Bs}. + +eval_new_map_fields(Fs, Bs0, Ieval, F) -> + eval_new_map_fields(Fs, Bs0, Ieval, F, []). + +eval_new_map_fields([{Line,K0,V0}|Fs], Bs0, Ieval0, F, Acc) -> + Ieval = Ieval0#ieval{line=Line}, + {value,K,Bs1} = F(K0, Bs0, Ieval), + {value,V,Bs2} = F(V0, Bs1, Ieval), + eval_new_map_fields(Fs, Bs2, Ieval0, F, [{K,V}|Acc]); +eval_new_map_fields([], Bs, _, _, Acc) -> + {maps:from_list(lists:reverse(Acc)),Bs}. + +%% match(Pattern,Term,Bs) -> {match,Bs} | nomatch +match(Pat, Term, Bs) -> + try match1(Pat, Term, Bs, Bs) + catch + Result -> Result + end. + +match1({value,_,V}, V, Bs,_BBs) -> + {match,Bs}; +match1({var,_,'_'}, Term, Bs,_BBs) -> % Anonymous variable matches + {match,add_anon(Term, Bs)}; % everything,save it anyway +match1({var,_,Name}, Term, Bs, _BBs) -> + case binding(Name, Bs) of + {value,Term} -> + {match,Bs}; + {value,_} -> + throw(nomatch); + unbound -> + {match,[{Name,Term}|Bs]} % Add the new binding + end; +match1({match,_,Pat1,Pat2}, Term, Bs0, BBs) -> + {match,Bs1} = match1(Pat1, Term, Bs0, BBs), + match1(Pat2, Term, Bs1, BBs); +match1({cons,_,H,T}, [H1|T1], Bs0, BBs) -> + {match,Bs} = match1(H, H1, Bs0, BBs), + match1(T, T1, Bs, BBs); +match1({tuple,_,Elts}, Tuple, Bs, BBs) + when length(Elts) =:= tuple_size(Tuple) -> + match_tuple(Elts, Tuple, 1, Bs, BBs); +match1({map,_,Fields}, Map, Bs, BBs) when is_map(Map) -> + match_map(Fields, Map, Bs, BBs); +match1({bin,_,Fs}, B, Bs0, BBs) when is_bitstring(B) -> + try eval_bits:match_bits(Fs, B, Bs0, BBs, + match_fun(BBs), + fun(E, Bs) -> expr(E, Bs, #ieval{}) end) + catch + _:_ -> throw(nomatch) + end; +match1(_,_,_,_) -> + throw(nomatch). + +match_fun(BBs) -> + fun(match, {L,R,Bs}) -> match1(L, R, Bs, BBs); + (binding, {Name,Bs}) -> binding(Name, Bs); + (add_binding, {Name,Val,Bs}) -> add_binding(Name, Val, Bs) + end. + +match_tuple([E|Es], Tuple, I, Bs0, BBs) -> + {match,Bs} = match1(E, element(I, Tuple), Bs0, BBs), + match_tuple(Es, Tuple, I+1, Bs, BBs); +match_tuple([], _, _, Bs, _BBs) -> + {match,Bs}. + +match_map([{map_field_exact,_,K0,Pat}|Fs], Map, Bs0, BBs) -> + try guard_expr(K0, BBs) of + {value,K} -> + case Map of + #{K := Value} -> + {match,Bs} = match1(Pat, Value, Bs0, BBs), + match_map(Fs, Map, Bs, BBs); + #{} -> + throw(nomatch) + end + catch _:_ -> + throw(nomatch) + end; +match_map([], _, Bs, _BBs) -> + {match,Bs}. + +head_match([Par|Pars], [Arg|Args], Bs0, BBs) -> + try match1(Par, Arg, Bs0, BBs) of + {match,Bs} -> head_match(Pars, Args, Bs, BBs) + catch + Result -> Result + end; +head_match([],[],Bs,_) -> {match,Bs}. + +rec_match([Par],Msg,Bs0) -> + match(Par,Msg,Bs0). + +binding(Name,[{Name,Val}|_]) -> + {value,Val}; +binding(Name,[_,{Name,Val}|_]) -> + {value,Val}; +binding(Name,[_,_,{Name,Val}|_]) -> + {value,Val}; +binding(Name,[_,_,_,{Name,Val}|_]) -> + {value,Val}; +binding(Name,[_,_,_,_,{Name,Val}|_]) -> + {value,Val}; +binding(Name,[_,_,_,_,_,{Name,Val}|_]) -> + {value,Val}; +binding(Name,[_,_,_,_,_,_|Bs]) -> + binding(Name,Bs); +binding(Name,[_,_,_,_,_|Bs]) -> + binding(Name,Bs); +binding(Name,[_,_,_,_|Bs]) -> + binding(Name,Bs); +binding(Name,[_,_,_|Bs]) -> + binding(Name,Bs); +binding(Name,[_,_|Bs]) -> + binding(Name,Bs); +binding(Name,[_|Bs]) -> + binding(Name,Bs); +binding(_,[]) -> + unbound. + +add_anon(Val,[{'_',_}|Bs]) -> + [{'_',Val}|Bs]; +add_anon(Val,[B1,{'_',_}|Bs]) -> + [B1,{'_',Val}|Bs]; +add_anon(Val,[B1,B2,{'_',_}|Bs]) -> + [B1,B2,{'_',Val}|Bs]; +add_anon(Val,[B1,B2,B3,{'_',_}|Bs]) -> + [B1,B2,B3,{'_',Val}|Bs]; +add_anon(Val,[B1,B2,B3,B4,{'_',_}|Bs]) -> + [B1,B2,B3,B4,{'_',Val}|Bs]; +add_anon(Val,[B1,B2,B3,B4,B5,{'_',_}|Bs]) -> + [B1,B2,B3,B4,B5,{'_',Val}|Bs]; +add_anon(Val,[B1,B2,B3,B4,B5,B6|Bs]) -> + [B1,B2,B3,B4,B5,B6|add_anon(Val,Bs)]; +add_anon(Val,[B1,B2,B3,B4,B5|Bs]) -> + [B1,B2,B3,B4,B5|add_anon(Val,Bs)]; +add_anon(Val,[B1,B2,B3,B4|Bs]) -> + [B1,B2,B3,B4|add_anon(Val,Bs)]; +add_anon(Val,[B1,B2,B3|Bs]) -> + [B1,B2,B3|add_anon(Val,Bs)]; +add_anon(Val,[B1,B2|Bs]) -> + [B1,B2|add_anon(Val,Bs)]; +add_anon(Val,[B1|Bs]) -> + [B1|add_anon(Val,Bs)]; +add_anon(Val,[]) -> + [{'_',Val}]. + +%% merge_bindings(Bindings1, Bindings2, Ieval) +%% Merge bindings detecting bad matches. +%% Special case '_',save the new one !!! +%% Bindings1 is the newest bindings. +merge_bindings(Bs, Bs, _Ieval) -> + Bs; % Identical bindings +merge_bindings([{Name,V}|B1s], B2s, Ieval) -> + case binding(Name, B2s) of + {value,V} -> % Already there, and the same + merge_bindings(B1s, B2s, Ieval); + {value,_} when Name =:= '_' -> % Already there, but anonymous + B2s1 = lists:keydelete('_', 1, B2s), + [{Name,V}|merge_bindings(B1s, B2s1, Ieval)]; + {value,_} -> % Already there, but different => badmatch + exception(error, {badmatch,V}, B2s, Ieval); + unbound -> % Not there,add it + [{Name,V}|merge_bindings(B1s, B2s, Ieval)] + end; +merge_bindings([], B2s, _Ieval) -> + B2s. + +%% add_bindings(Bindings1,Bindings2) +%% Add Bindings1 to Bindings2. Bindings in +%% Bindings1 hides bindings in Bindings2. +%% Used in list comprehensions (and funs). +add_bindings(Bs1,[]) -> + Bs1; +add_bindings([{Name,V}|Bs],ToBs0) -> + ToBs = add_binding(Name,V,ToBs0), + add_bindings(Bs,ToBs); +add_bindings([],ToBs) -> + ToBs. + +add_binding(N,Val,[{N,_}|Bs]) -> + [{N,Val}|Bs]; +add_binding(N,Val,[B1,{N,_}|Bs]) -> + [B1,{N,Val}|Bs]; +add_binding(N,Val,[B1,B2,{N,_}|Bs]) -> + [B1,B2,{N,Val}|Bs]; +add_binding(N,Val,[B1,B2,B3,{N,_}|Bs]) -> + [B1,B2,B3,{N,Val}|Bs]; +add_binding(N,Val,[B1,B2,B3,B4,{N,_}|Bs]) -> + [B1,B2,B3,B4,{N,Val}|Bs]; +add_binding(N,Val,[B1,B2,B3,B4,B5,{N,_}|Bs]) -> + [B1,B2,B3,B4,B5,{N,Val}|Bs]; +add_binding(N,Val,[B1,B2,B3,B4,B5,B6|Bs]) -> + [B1,B2,B3,B4,B5,B6|add_binding(N,Val,Bs)]; +add_binding(N,Val,[B1,B2,B3,B4,B5|Bs]) -> + [B1,B2,B3,B4,B5|add_binding(N,Val,Bs)]; +add_binding(N,Val,[B1,B2,B3,B4|Bs]) -> + [B1,B2,B3,B4|add_binding(N,Val,Bs)]; +add_binding(N,Val,[B1,B2,B3|Bs]) -> + [B1,B2,B3|add_binding(N,Val,Bs)]; +add_binding(N,Val,[B1,B2|Bs]) -> + [B1,B2|add_binding(N,Val,Bs)]; +add_binding(N,Val,[B1|Bs]) -> + [B1|add_binding(N,Val,Bs)]; +add_binding(N,Val,[]) -> + [{N,Val}]. + +remove_temporary_bindings(Bs0) -> + [{Var,Val} || {Var, Val} <- Bs0, hd(atom_to_list(Var)) =/= $%]. + +%% get_stacktrace() -> Stacktrace +%% Return the latest stacktrace for the process. +get_stacktrace() -> + case get(stacktrace) of + MakeStk when is_function(MakeStk, 1) -> + %% The stacktrace has not been constructed before. + %% Construct it and remember the result. + Depth = erlang:system_flag(backtrace_depth, 8), + erlang:system_flag(backtrace_depth, Depth), + Stk = MakeStk(Depth), + put(stacktrace, Stk), + Stk; + Stk when is_list(Stk) -> + Stk + end. + +%%% eval record exprs +%%% copied from stdlib/src/shell.erl + +expand_records(Expr, Mod) -> + try + expand_records_1(used_record_defs(Expr, Mod), Expr) + catch _:_Err:_ST -> + Expr + end. + +expand_records_1([], Expr) -> + Expr; +expand_records_1(UsedRecords, Expr) -> + A = erl_anno:new(1), + RecordDefs = [{attribute, A, record, + {Name, [{record_field,A,{atom,A,F}} || F <- Fields]} + } || {Name,Fields} <- UsedRecords], + Forms0 = RecordDefs ++ [{function,A,foo,0,[{clause,A,[],[],[Expr]}]}], + Forms = erl_expand_records:module(Forms0, [strict_record_tests]), + {function,A,foo,0,[{clause,A,[],[],[NE]}]} = lists:last(Forms), + NE. + +used_record_defs(E, Mod) -> + case mod_recs(Mod) of + [] -> []; + Recs0 -> + Recs = [{Name, Fields} || {{_,_,Name,_}, Fields} <- Recs0], + L0 = used_record_defs(E, maps:from_list(Recs), [], []), + L1 = lists:zip(L0, lists:seq(1, length(L0))), + L2 = lists:keysort(2, lists:ukeysort(1, L1)), + [R || {R, _} <- L2] + end. + +used_record_defs(E, Recs, Skip, Used) -> + case used_records(E) of + {name,Name,E1} -> + case lists:member(Name, Skip) of + true -> + used_record_defs(E1, Recs, Skip, Used); + false -> + case maps:get(Name, Recs, undefined) of + undefined -> + used_record_defs(E1, Recs, [Name|Skip], Used); + Fields -> + used_record_defs(E1, Recs, [Name|Skip], [{Name, Fields}|Used]) + end + end; + {expr,[E1 | Es]} -> + used_record_defs(Es, Recs, Skip, used_record_defs(E1, Recs, Skip, Used)); + _ -> + Used + end. + +mod_recs(Mod) -> + case db_ref(Mod) of + not_found -> + []; + ModDb -> + dbg_idb:match_object(ModDb, {{record, Mod, '_', '_'}, '_'}) + end. + +used_records({record_index,_,Name,F}) -> + {name, Name, F}; +used_records({record,_,Name,Is}) -> + {name, Name, Is}; +used_records({record_field,_,R,Name,F}) -> + {name, Name, [R | F]}; +used_records({record,_,R,Name,Ups}) -> + {name, Name, [R | Ups]}; +used_records({record_field,_,R,F}) -> % illegal + {expr, [R | F]}; +used_records({call,_,{atom,_,record},[A,{atom,_,Name}]}) -> + {name, Name, A}; +used_records({call,_,{atom,_,is_record},[A,{atom,_,Name}]}) -> + {name, Name, A}; +used_records({call,_,{remote,_,{atom,_,erlang},{atom,_,is_record}}, + [A,{atom,_,Name}]}) -> + {name, Name, A}; +used_records({call,_,{atom,_,record_info},[A,{atom,_,Name}]}) -> + {name, Name, A}; +used_records({call,A,{tuple,_,[M,F]},As}) -> + used_records({call,A,{remote,A,M,F},As}); +used_records({type,_,record,[{atom,_,Name}|Fs]}) -> + {name, Name, Fs}; +used_records(T) when is_tuple(T) -> + {expr, tuple_to_list(T)}; +used_records(E) -> + {expr, E}. diff --git a/debugger/erlide_debugger_26/src/dbg_ieval.hrl b/debugger/erlide_debugger_26/src/dbg_ieval.hrl new file mode 100644 index 0000000..990692c --- /dev/null +++ b/debugger/erlide_debugger_26/src/dbg_ieval.hrl @@ -0,0 +1,32 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2005-2021. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-record(ieval, {level = 1, % Current call level + line = -1, % Current source code line (of module) + module, % MFA which called the currently + function, % interpreted function + arguments, % + error_info = [], % [{error_info,Map}] | [] + + %% True if the current expression is at the top level + %% (i.e. the next call will leave interpreted code). + top = false + }). + +-define(DB_REF_KEY(Mod), {Mod,db}). diff --git a/debugger/erlide_debugger_26/src/dbg_iload.erl b/debugger/erlide_debugger_26/src/dbg_iload.erl new file mode 100644 index 0000000..d185d6b --- /dev/null +++ b/debugger/erlide_debugger_26/src/dbg_iload.erl @@ -0,0 +1,1061 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2023. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(dbg_iload). + +-export([load_mod/4]). + +%%==================================================================== +%% External exports +%%==================================================================== + +%%-------------------------------------------------------------------- +%% load_mod(Mod, File, Binary, Db) -> {ok, Mod} +%% Mod = module() +%% File = string() Source file (including path) +%% Binary = binary() +%% Db = ETS identifier +%% Load a new module into the database. +%% +%% We want the loading of a module to be synchronous so that no other +%% process tries to interpret code in a module not being completely +%% loaded. This is achieved as this function is called from +%% dbg_iserver. We are suspended until the module has been loaded. +%%-------------------------------------------------------------------- +-spec load_mod(Mod, file:filename(), binary(), ets:tid()) -> + {'ok', Mod} when Mod :: atom(). + +load_mod(Mod, File, Binary, Db) -> + Flag = process_flag(trap_exit, true), + Pid = spawn_link(load_mod1(Mod, File, Binary, Db)), + receive + {'EXIT', Pid, What} -> + process_flag(trap_exit, Flag), + What + end. + +-spec load_mod1(atom(), file:filename(), binary(), ets:tid()) -> + fun(() -> no_return()). + +load_mod1(Mod, File, Binary, Db) -> + fun() -> + store_module(Mod, File, Binary, Db), + exit({ok, Mod}) + end. + +%%==================================================================== +%% Internal functions +%%==================================================================== + +store_module(Mod, File, Binary, Db) -> + {interpreter_module, Exp, Abst, Src, MD5} = binary_to_term(Binary), + Forms0 = case abstr(Abst) of + {abstract_v1,_} -> + exit({Mod,too_old_beam_file}); + {abstract_v2,_} -> + exit({Mod,too_old_beam_file}); + {raw_abstract_v1,Code} -> + Code + end, + dbg_idb:insert(Db, mod_file, File), + dbg_idb:insert(Db, defs, []), + + put(vcount, 0), + put(fun_count, 0), + put(funs, []), + put(mod_md5, MD5), + + Forms1 = interpret_file_attribute(Forms0), + {Forms,Ctype} = standard_transforms(Forms1), + store_forms(Forms, Mod, Db, #{exp=>Exp, ctype => Ctype}), + + erase(mod_md5), + erase(current_function), + %% store_funs(Db, Mod), + erase(vcount), + erase(funs), + erase(fun_count), + + NewBinary = store_mod_line_no(Mod, Db, binary_to_list(Src)), + dbg_idb:insert(Db, mod_bin, NewBinary), + dbg_idb:insert(Db, mod_raw, <>). %% Add eos + +standard_transforms(Forms0) -> + Forms = erl_internal:add_predefined_functions(Forms0), + Ctype = init_calltype(Forms), + {Forms, Ctype}. + +init_calltype(Forms) -> + Locals = [{{Name,Arity},local} || {function,_,Name,Arity,_} <- Forms], + Ctype = maps:from_list(Locals), + init_calltype_imports(Forms, Ctype). + +init_calltype_imports([{attribute,_,import,{Mod,Fs}}|T], Ctype0) -> + true = is_atom(Mod), + Ctype = lists:foldl(fun(FA, Acc) -> + Acc#{FA=>{imported,Mod}} + end, Ctype0, Fs), + init_calltype_imports(T, Ctype); +init_calltype_imports([_|T], Ctype) -> + init_calltype_imports(T, Ctype); +init_calltype_imports([], Ctype) -> Ctype. + +%% Adjust line numbers using the file/2 attribute. +%% Also take the absolute value of line numbers. +%% This simple fix will make the marker point at the correct line +%% (assuming the file attributes are correct) in the source; it will +%% not point at code in included files. +interpret_file_attribute(Code) -> + epp:interpret_file_attribute(Code). + +abstr(Bin) when is_binary(Bin) -> binary_to_term(Bin); +abstr(Term) -> Term. + +% store_funs(Db, Mod) -> +% store_funs_1(get(funs), Db, Mod). + +% store_funs_1([{Name,Index,Uniq,_,_,Arity,Cs}|Fs], Db, Mod) -> +% dbg_idb:insert(Db, {Mod,Name,Arity,false}, Cs), +% dbg_idb:insert(Db, {'fun',Mod,Index,Uniq}, {Name,Arity,Cs}), +% store_funs_1(Fs, Db, Mod); +% store_funs_1([], _, _) -> ok. + +store_forms([{function,_,Name,Arity,Cs0}|Fs], Mod, Db, #{exp:=Exp} = St) -> + FA = {Name,Arity}, + put(current_function, FA), + Cs = clauses(Cs0,St), + Exported = lists:member(FA, Exp), + dbg_idb:insert(Db, {Mod,Name,Arity,Exported}, Cs), + store_forms(Fs, Mod, Db, St); +store_forms([{attribute,_,record,{Name,Defs}}|Fs], Mod, Db, St) -> + NDefs = normalise_rec_fields(Defs), + Fields = [F || {record_field, _, {atom, _, F}, _} <- NDefs], + dbg_idb:insert(Db, {record,Mod,Name,length(Fields)}, Fields), + Recs = maps:get(recs, St, #{}), + store_forms(Fs, Mod, Db, St#{recs => Recs#{Name => NDefs}}); +store_forms([{attribute,_,_Name,_Val}|Fs], Mod, Db, St) -> + store_forms(Fs, Mod, Db, St); +store_forms([_|Fs], Mod, Db, St) -> + %% Ignore other forms such as {eof,_} or {warning,_}. + store_forms(Fs, Mod, Db, St); +store_forms([], _, _, _) -> + ok. + +store_mod_line_no(Mod, Db, Contents) -> + store_mod_line_no(Mod, Db, Contents, 1, 0, []). + +store_mod_line_no(_, _, [], _, _, NewCont) -> + list_to_binary(lists:reverse(NewCont)); +store_mod_line_no(Mod, Db, Contents, LineNo, Pos, NewCont) when is_integer(LineNo) -> + {ContTail,Pos1,NewCont1} = store_line(Mod, Db, Contents, LineNo, Pos, NewCont), + store_mod_line_no(Mod, Db, ContTail, LineNo+1, Pos1, NewCont1). + +store_line(_, Db, Contents, LineNo, Pos, NewCont) -> + {ContHead,ContTail,PosNL} = get_nl(Contents,Pos+8,[]), + dbg_idb:insert(Db,LineNo,{Pos+8,PosNL}), + {ContTail,PosNL+1,[make_lineno(LineNo, 8, ContHead)|NewCont]}. + +make_lineno(N, P, Acc) -> + S = integer_to_list(N), + S ++ [$:|spaces(P-length(S)-1, Acc)]. + +spaces(P, Acc) when P > 0 -> + spaces(P-1, [$\s|Acc]); +spaces(_, Acc) -> Acc. + + +%% normalise_rec_fields([RecDef]) -> [Field]. +%% Normalise the field definitions to always have a default value. If +%% none has been given then use 'undefined'. + +normalise_rec_fields(Fs) -> + lists:map(fun ({record_field,Anno,Field}) -> + {record_field,Anno,Field,{atom,Anno,undefined}}; + ({typed_record_field,{record_field,Anno,Field},_Type}) -> + {record_field,Anno,Field,{atom,Anno,undefined}}; + ({typed_record_field,Field,_Type}) -> + Field; + (F) -> F + end, Fs). + +get_nl([10|T],Pos,Head) -> {lists:reverse([10|Head]),T,Pos}; +get_nl([H|T],Pos,Head) -> + get_nl(T,Pos+1,[H|Head]); +get_nl([],Pos,Head) -> {lists:reverse(Head),[],Pos}. + +%%% Rewrite the abstract syntax tree to that it will be easier (== faster) +%%% to interpret. + +clauses([C0|Cs],St) -> + C1 = clause(C0, true, St), + [C1|clauses(Cs, St)]; +clauses([], _St) -> []. + +clause({clause,Anno,H0,G0,B0}, Lc, St) -> + H1 = head(H0, St), + G1 = guard(G0, St), + B1 = exprs(B0, Lc, St), + {clause,ln(Anno),H1,G1,B1}. + +head(Ps, St) -> patterns(Ps, St). + +%% These patterns are processed "sequentially" for purposes of variable +%% definition etc. + +patterns([P0|Ps], St) -> + P1 = pattern(P0, St), + [P1|patterns(Ps, St)]; +patterns([], _St) -> []. + +%% N.B. Only valid patterns are included here. + +pattern({var,Anno,V}, _St) -> {var,ln(Anno),V}; +pattern({char,Anno,I}, _St) -> {value,ln(Anno),I}; +pattern({integer,Anno,I}, _St) -> {value,ln(Anno),I}; +pattern({match,Anno,Pat1,Pat2}, St) -> + {match,ln(Anno),pattern(Pat1, St),pattern(Pat2, St)}; +pattern({float,Anno,F}, _St) -> {value,ln(Anno),F}; +pattern({atom,Anno,A}, _St) -> {value,ln(Anno),A}; +pattern({string,Anno,S}, _St) -> {value,ln(Anno),S}; +pattern({nil,Anno}, _St) -> {value,ln(Anno),[]}; +pattern({cons,Anno,H0,T0}, St) -> + H1 = pattern(H0, St), + T1 = pattern(T0, St), + {cons,ln(Anno),H1,T1}; +pattern({tuple,Anno,Ps0}, St) -> + Ps1 = pattern_list(Ps0, St), + {tuple,ln(Anno),Ps1}; +pattern({record_index,Anno,Name,Field} = _DBG, St) -> + Expr = index_expr(Anno, Field, Name, record_fields(Name, Anno, St)), + pattern(Expr, St); +pattern({record,Anno,Name,Pfs}, St0) -> + Fs = record_fields(Name, Anno, St0), + TMs = pattern_list(pattern_fields(Fs, Pfs), St0), + {tuple,ln(Anno),[{value,ln(Anno),Name} | TMs]}; +pattern({map,Anno,Fs0}, St) -> + Fs1 = lists:map(fun ({map_field_exact,L,K,V}) -> + {map_field_exact,L,gexpr(K, St),pattern(V, St)} + end, Fs0), + {map,ln(Anno),Fs1}; +pattern({op,_,'-',{integer,Anno,I}}, _St) -> + {value,ln(Anno),-I}; +pattern({op,_,'+',{integer,Anno,I}}, _St) -> + {value,ln(Anno),I}; +pattern({op,_,'-',{char,Anno,I}}, _St) -> + {value,ln(Anno),-I}; +pattern({op,_,'+',{char,Anno,I}}, _St) -> + {value,ln(Anno),I}; +pattern({op,_,'-',{float,Anno,I}}, _St) -> + {value,ln(Anno),-I}; +pattern({op,_,'+',{float,Anno,I}}, _St) -> + {value,ln(Anno),I}; +pattern({bin,Anno,Grp}, St) -> + Grp1 = pattern_list(bin_expand_strings(Grp), St), + {bin,ln(Anno),Grp1}; +pattern({bin_element,Anno,Expr0,Size0,Type0}, St) -> + {Size1,Type} = make_bit_type(Anno, Size0, Type0), + Expr1 = pattern(Expr0,St), + Expr = coerce_to_float(Expr1, Type0), + Size = expr(Size1, false, St), + {bin_element,ln(Anno),Expr,Size,Type}; +%% Evaluate compile-time expressions. +pattern({op,_,'++',{nil,_},R}, St) -> + pattern(R, St); +pattern({op,_,'++',{cons,Li,H,T},R}, St) -> + pattern({cons,Li,H,{op,Li,'++',T,R}}, St); +pattern({op,_,'++',{string,Li,L},R}, St) -> + pattern(string_to_conses(Li, L, R), St); +pattern({op,_Line,_Op,_A}=Op, St) -> + pattern(erl_eval:partial_eval(Op), St); +pattern({op,_Line,_Op,_L,_R}=Op, St) -> + pattern(erl_eval:partial_eval(Op), St). + +string_to_conses(Anno, Cs, Tail) -> + lists:foldr(fun (C, T) -> {cons,Anno,{char,Anno,C},T} end, Tail, Cs). + +coerce_to_float({value,Anno,Int}=E, [float|_]) when is_integer(Int) -> + try + {value,Anno,float(Int)} + catch + error:badarg -> E + end; +coerce_to_float(E, _) -> E. + +%% These patterns are processed "in parallel" for purposes of variable +%% definition etc. + +pattern_list([P0|Ps], St) -> + P1 = pattern(P0, St), + [P1|pattern_list(Ps, St)]; +pattern_list([], _St) -> []. + +guard([G0|Gs], St) -> + G1 = and_guard(G0, St), + [G1|guard(Gs, St)]; +guard([], _St) -> []. + +and_guard([G0|Gs], St) -> + G1 = guard_test(G0, St), + [G1|and_guard(Gs, St)]; +and_guard([], _St) -> []. + + +guard_test({call,Anno,{atom,_,is_record},[A,{atom,_,Name}]}, St) -> + record_test_in_guard(Anno, A, Name, St); +guard_test({call,Anno,{remote,_,{atom,_,erlang},{atom,_,is_record}}, [A,{atom,_,Name}]}, + St) -> + record_test_in_guard(Anno, A, Name, St); +guard_test({call,Anno,{tuple,_,[{atom,_,erlang},{atom,_,is_record}]}, + [A,{atom,_,Name}]}, St) -> + record_test_in_guard(Anno, A, Name, St); +guard_test({call,Anno,{remote,_,{atom,_,erlang},{atom,_,F}},As0}, St) -> + As = gexpr_list(As0, St), + {safe_bif,ln(Anno),erlang,F,As}; +guard_test({call,Anno,{atom,_, F0},As0}, St) -> + F = normalise_test(F0, length(As0)), + true = erl_internal:bif(F,length(As0)), + As = gexpr_list(As0, St), + {safe_bif,ln(Anno),erlang,F,As}; +guard_test({op,Anno,Op,L0}, St) -> + true = erl_internal:arith_op(Op, 1) orelse %Assertion. + erl_internal:bool_op(Op, 1), + L1 = gexpr(L0, St), + {safe_bif,ln(Anno),erlang,Op,[L1]}; +guard_test({op,Anno,Op,L0,R0}, St) when Op =:= 'andalso'; Op =:= 'orelse' -> + L1 = gexpr(L0, St), + R1 = gexpr(R0, St), %They see the same variables + {Op,ln(Anno),L1,R1}; +guard_test({op,Anno,Op,L0,R0}, St) -> + true = erl_internal:comp_op(Op, 2) orelse %Assertion. + erl_internal:bool_op(Op, 2) orelse + erl_internal:arith_op(Op, 2), + L1 = gexpr(L0, St), + R1 = gexpr(R0, St), %They see the same variables + {safe_bif,ln(Anno),erlang,Op,[L1,R1]}; +guard_test({record_field,_A,R,Name,F}, St) -> + Anno = erl_parse:first_anno(R), + get_record_field_guard(Anno, R, F, Name, St); +guard_test({var,_,_}=V, _St) ->V; % Boolean var +guard_test({atom,Anno,true}, _St) -> {value,ln(Anno),true}; +%% All other constants at this level means false. +guard_test({atom,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({integer,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({char,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({float,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({string,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({nil,Anno}, _St) -> {value,ln(Anno),false}; +guard_test({cons,Anno,_,_}, _St) -> {value,ln(Anno),false}; +guard_test({tuple,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({map,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({map,Anno,_,_}, _St) -> {value,ln(Anno),false}; +guard_test({bin,Anno,_}, _St) -> {value,ln(Anno),false}. + +gexpr({var,Anno,V}, _St) -> {var,ln(Anno),V}; +gexpr({integer,Anno,I}, _St) -> {value,ln(Anno),I}; +gexpr({char,Anno,I}, _St) -> {value,ln(Anno),I}; +gexpr({float,Anno,F}, _St) -> {value,ln(Anno),F}; +gexpr({atom,Anno,A}, _St) -> {value,ln(Anno),A}; +gexpr({string,Anno,S}, _St) -> {value,ln(Anno),S}; +gexpr({nil,Anno}, _St) -> {value,ln(Anno),[]}; +gexpr({cons,Anno,H0,T0}, St) -> + case {gexpr(H0, St),gexpr(T0, St)} of + {{value,Line,H1},{value,Line,T1}} -> {value,Line,[H1|T1]}; + {H1,T1} -> {cons,ln(Anno),H1,T1} + end; +gexpr({tuple,Anno,Es0}, St) -> + Es1 = gexpr_list(Es0, St), + {tuple,ln(Anno),Es1}; +gexpr({record, _, _, _}=Rec, St) -> + expr(Rec, false, St); +gexpr({map,Anno,Fs0}, St) -> + new_map(Fs0, Anno, St, fun(F) -> gexpr(F,St) end); +gexpr({map,Anno,E0,Fs0}, St) -> + E1 = gexpr(E0, St), + Fs1 = map_fields(Fs0, St, fun(F) -> gexpr(F,St) end), + {map,ln(Anno),E1,Fs1}; +gexpr({bin,Anno,Flds0}, St) -> + Flds = gexpr_list(bin_expand_strings(Flds0), St), + {bin,ln(Anno),Flds}; +gexpr({bin_element,Anno,Expr0,Size0,Type0}, St) -> + {Size1,Type} = make_bit_type(Anno, Size0, Type0), + Expr = gexpr(Expr0, St), + Size = gexpr(Size1, St), + {bin_element,ln(Anno),Expr,Size,Type}; +gexpr({call,Anno,{atom,_,is_record},[A,{atom,_,Name}]}, St) -> + record_test_in_guard(Anno, A, Name, St); +gexpr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,is_record}}, [A,{atom,_,Name}]}, + St) -> + record_test_in_guard(Anno, A, Name, St); +gexpr({call,Anno,{tuple,_,[{atom,_,erlang},{atom,_,is_record}]}, + [A,{atom,_,Name}]}, St) -> + record_test_in_guard(Anno, A, Name, St); +gexpr({record_field,_A,R,Name,F}, St) -> + Anno = erl_parse:first_anno(R), + get_record_field_guard(Anno, R, F, Name, St); +gexpr({record_index,Anno,Name,F}, St) -> + I = index_expr(Anno, F, Name, record_fields(Name, Anno, St)), + gexpr(I, St); +gexpr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,self}},[]}, _St) -> + {dbg,ln(Anno),self,[]}; +gexpr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,F}},As0}, St) -> + As = gexpr_list(As0, St), + {safe_bif,ln(Anno),erlang,F,As}; +gexpr({call,Anno,{atom,_,self},[]}, _St) -> + {dbg,ln(Anno),self,[]}; +gexpr({call,Anno,{atom,_, F},As0}, St) -> + true = erl_internal:bif(F,length(As0)), + As = gexpr_list(As0, St), + {safe_bif,ln(Anno),erlang,F,As}; +gexpr({op,Anno,Op,A0}, St) -> + erl_internal:arith_op(Op, 1), + A1 = gexpr(A0, St), + {safe_bif,ln(Anno),erlang,Op,[A1]}; +gexpr({op,Anno,Op,L0,R0}, St) when Op =:= 'andalso'; Op =:= 'orelse' -> + L1 = gexpr(L0, St), + R1 = gexpr(R0, St), %They see the same variables + {Op,ln(Anno),L1,R1}; +gexpr({op,Anno,Op,L0,R0}, St) -> + true = erl_internal:arith_op(Op, 2) orelse erl_internal:comp_op(Op, 2) + orelse erl_internal:bool_op(Op, 2), + L1 = gexpr(L0, St), + R1 = gexpr(R0, St), %They see the same variables + {safe_bif,ln(Anno),erlang,Op,[L1,R1]}. + +%% These expressions are processed "in parallel" for purposes of variable +%% definition etc. + +gexpr_list([E0|Es], St) -> + E1 = gexpr(E0, St), + [E1|gexpr_list(Es, St)]; +gexpr_list([], _St) -> []. + +%% These expressions are processed "sequentially" for purposes of variable +%% definition etc. + +exprs([E], Lc, St) -> + [expr(E, Lc, St)]; +exprs([E0|Es], Lc, St) -> + E1 = expr(E0, false, St), + [E1|exprs(Es, Lc, St)]; +exprs([], _Lc, _St) -> []. + +expr({var,Anno,V}, _Lc, _St) -> {var,ln(Anno),V}; +expr({integer,Anno,I}, _Lc, _St) -> {value,ln(Anno),I}; +expr({char,Anno,I}, _Lc, _St) -> {value,ln(Anno),I}; +expr({float,Anno,F}, _Lc, _St) -> {value,ln(Anno),F}; +expr({atom,Anno,A}, _Lc, _St) -> {value,ln(Anno),A}; +expr({string,Anno,S}, _Lc, _St) -> {value,ln(Anno),S}; +expr({nil,Anno}, _Lc, _St) -> {value,ln(Anno),[]}; +expr({cons,Anno,H0,T0}, _Lc, St) -> + case {expr(H0, false, St),expr(T0, false, St)} of + {{value,Line,H1},{value,Line,T1}} -> {value,Line,[H1|T1]}; + {H1,T1} -> {cons,ln(Anno),H1,T1} + end; +expr({tuple,Anno,Es0}, _Lc, St) -> + Es1 = expr_list(Es0, St), + {tuple,ln(Anno),Es1}; +expr({record_index,Anno,Name,F}, Lc, St) -> + I = index_expr(Anno, F, Name, record_fields(Name, Anno, St)), + expr(I, Lc, St); +expr({record_field,_A,R,Name,F}, _Lc, St) -> + Anno = erl_parse:first_anno(R), + get_record_field_body(Anno, R, F, Name, St); +expr({record,Anno,R,Name,Us}, Lc, St) -> + Ue = record_update(R, Name, record_fields(Name, Anno, St), Us, St), + expr(Ue, Lc, St); +expr({record,Anno,Name,Is}, Lc, St) -> + expr({tuple,Anno,[{atom,Anno,Name} | + record_inits(record_fields(Name, Anno, St), Is)]}, + Lc, St); +expr({record_update, Anno, Es0}, Lc, St) -> + %% Unfold block into a sequence. + Es1 = exprs(Es0, Lc, St), + {record_update,ln(Anno),Es1}; +expr({map,Anno,Fs}, _Lc, St) -> + new_map(Fs, Anno, St, fun (E) -> expr(E, false, St) end); +expr({map,Anno,E0,Fs0}, _Lc, St) -> + E1 = expr(E0, false, St), + Fs1 = map_fields(Fs0, St), + {map,ln(Anno),E1,Fs1}; +expr({block,Anno,Es0}, Lc, St) -> + %% Unfold block into a sequence. + Es1 = exprs(Es0, Lc, St), + {block,ln(Anno),Es1}; +expr({'if',Anno,Cs0}, Lc, St) -> + Cs1 = icr_clauses(Cs0, Lc, St), + {'if',ln(Anno),Cs1}; +expr({'case',Anno,E0,Cs0}, Lc, St) -> + E1 = expr(E0, false, St), + Cs1 = icr_clauses(Cs0, Lc, St), + {'case',ln(Anno),E1,Cs1}; +expr({'receive',Anno,Cs0}, Lc, St) -> + Cs1 = icr_clauses(Cs0, Lc, St), + {'receive',ln(Anno),Cs1}; +expr({'receive',Anno,Cs0,To0,ToEs0}, Lc, St) -> + To1 = expr(To0, false, St), + ToEs1 = exprs(ToEs0, Lc, St), + Cs1 = icr_clauses(Cs0, Lc, St), + {'receive',ln(Anno),Cs1,To1,ToEs1}; +expr({'maybe',Anno,Es0}, Lc, St) -> + Es1 = exprs(Es0, Lc, St), + {'maybe',ln(Anno),Es1}; +expr({'maybe',Anno,Es0,{'else',_ElseAnno,Cs0}}, Lc, St) -> + Es1 = exprs(Es0, Lc, St), + Cs1 = icr_clauses(Cs0, Lc, St), + {'maybe',ln(Anno),Es1,Cs1}; +expr({'fun',Anno,{clauses,Cs0}}, _Lc, St) -> + %% New R10B-2 format (abstract_v2). + Cs = fun_clauses(Cs0, St), + Name = new_fun_name(), + {make_fun,ln(Anno),Name,Cs}; +expr({'fun',Anno,{function,F,A}}, _Lc, _St) -> + %% New R8 format (abstract_v2). + Line = ln(Anno), + As = new_vars(A, Line), + Name = new_fun_name(), + Cs = [{clause,Line,As,[],[{local_call,Line,F,As,true}]}], + {make_fun,Line,Name,Cs}; +expr({named_fun,Anno,FName,Cs0}, _Lc, St) -> + Cs = fun_clauses(Cs0, St), + Name = new_fun_name(), + {make_named_fun,ln(Anno),Name,FName,Cs}; +expr({'fun',Anno,{function,{atom,_,M},{atom,_,F},{integer,_,A}}}, _Lc, _St) + when 0 =< A, A =< 255 -> + %% New format in R15 for fun M:F/A (literal values). + {value,ln(Anno),erlang:make_fun(M, F, A)}; +expr({'fun',Anno,{function,M,F,A}}, _Lc, St) -> + %% New format in R15 for fun M:F/A (one or more variables). + MFA = expr_list([M,F,A], St), + {make_ext_fun,ln(Anno),MFA}; +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,self}},[]}, _Lc, _St) -> + {dbg,ln(Anno),self,[]}; +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,throw}},[_]=As}, _Lc, St) -> + {dbg,ln(Anno),throw,expr_list(As, St)}; +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,error}},[_]=As}, _Lc, St) -> + {dbg,ln(Anno),error,expr_list(As, St)}; +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,exit}},[_]=As}, _Lc, St) -> + {dbg,ln(Anno),exit,expr_list(As, St)}; +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,raise}},[_,_,_]=As}, _Lc, St) -> + {dbg,ln(Anno),raise,expr_list(As, St)}; +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,apply}},[_,_,_]=As0}, Lc, St) -> + As = expr_list(As0, St), + {apply,ln(Anno),As,Lc}; +expr({call,Anno,{atom,_,is_record},[A,{atom,_,Name}]}, Lc, St) -> + record_test_in_body(Anno, A, Name, Lc, St); +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,is_record}}, [A,{atom,_,Name}]}, + Lc, St) -> + record_test_in_body(Anno, A, Name, Lc, St); +expr({call,Anno,{tuple,_,[{atom,_,erlang},{atom,_,is_record}]}, + [A,{atom,_,Name}]}, Lc, St) -> + record_test_in_body(Anno, A, Name, Lc, St); +expr({call,Anno,{atom,_AnnoA,record_info},[_,_]=As0}, Lc, St) -> + As = expr_list(As0, St), + expr(record_info_call(Anno, As, St), Lc, St); +expr({call,Anno,{remote,_,{atom,_,Mod},{atom,_,Func}},As0}, Lc, St) -> + As = expr_list(As0, St), + case erlang:is_builtin(Mod, Func, length(As)) of + false -> + {call_remote,ln(Anno),Mod,Func,As,Lc}; + true -> + case bif_type(Mod, Func, length(As0)) of + safe -> {safe_bif,ln(Anno),Mod,Func,As}; + unsafe ->{bif,ln(Anno),Mod,Func,As} + end + end; +expr({call,Anno,{remote,_,Mod0,Func0},As0}, Lc, St) -> + %% New R8 format (abstract_v2). + Mod = expr(Mod0, false, St), + Func = expr(Func0, false, St), + As = consify(expr_list(As0, St)), + {apply,ln(Anno),[Mod,Func,As],Lc}; +expr({call,Anno,{atom,_,Func}=F,As0}, Lc, #{ctype:=Ctypes} = St) -> + As = expr_list(As0, St), + Ar = length(As), + NA = {Func,Ar}, + Special = lists:member(Func, [self,throw,error,exit,raise,apply]), + case maps:get(NA, Ctypes, undefined) of + local -> + {local_call,ln(Anno),Func,As,Lc}; + {imported, Mod} -> + {call_remote,ln(Anno),Mod,Func,As,Lc}; + undefined when Special -> + expr({call,Anno,{remote,Anno,{atom,Anno,erlang},F},As0}, Lc, St); + undefined -> + case erl_internal:bif(Func, Ar) andalso bif_type(erlang, Func, Ar) of + false -> {local_call,ln(Anno),Func,As,Lc}; + safe -> {safe_bif,ln(Anno),erlang,Func,As}; + unsafe -> {bif,ln(Anno),erlang,Func,As} + end + end; +expr({call,Anno,Fun0,As0}, Lc, St) -> + Fun = expr(Fun0, false, St), + As = expr_list(As0, St), + {apply_fun,ln(Anno),Fun,As,Lc}; +expr({'catch',Anno,E0}, _Lc, St) -> + %% No new variables added. + E1 = expr(E0, false, St), + {'catch',ln(Anno),E1}; +expr({'try',Anno,Es0,CaseCs0,CatchCs0,As0}, Lc, St) -> + %% No new variables added. + Es = expr_list(Es0, St), + CaseCs = icr_clauses(CaseCs0, Lc, St), + CatchCs = icr_clauses(CatchCs0, Lc, St), + As = expr_list(As0, St), + {'try',ln(Anno),Es,CaseCs,CatchCs,As}; +expr({lc,_,_,_}=Compr, _Lc, St) -> + expr_comprehension(Compr, St); +expr({bc,_,_,_}=Compr, _Lc, St) -> + expr_comprehension(Compr, St); +expr({mc,_,_,_}=Compr, _Lc, St) -> + expr_comprehension(Compr, St); +expr({match,Anno,P0,E0}, _Lc, St) -> + E1 = expr(E0, false, St), + P1 = pattern(P0, St), + {match,ln(Anno),P1,E1}; +expr({maybe_match,Anno,P0,E0}, _Lc, St) -> + E1 = expr(E0, false, St), + P1 = pattern(P0, St), + {maybe_match,ln(Anno),P1,E1}; +expr({op,Anno,Op,A0}, _Lc, St) -> + A1 = expr(A0, false, St), + {op,ln(Anno),Op,[A1]}; +expr({op,Anno,'++',L0,R0}, _Lc, St) -> + L1 = expr(L0, false, St), + R1 = expr(R0, false, St), %They see the same variables + {op,ln(Anno),append,[L1,R1]}; +expr({op,Anno,'--',L0,R0}, _Lc, St) -> + L1 = expr(L0, false, St), + R1 = expr(R0, false, St), %They see the same variables + {op,ln(Anno),subtract,[L1,R1]}; +expr({op,Anno,'!',L0,R0}, _Lc, St) -> + L1 = expr(L0, false, St), + R1 = expr(R0, false, St), %They see the same variables + {send,ln(Anno),L1,R1}; +expr({op,Anno,Op,L0,R0}, _Lc, St) when Op =:= 'andalso'; Op =:= 'orelse' -> + L1 = expr(L0, false, St), + R1 = expr(R0, false, St), %They see the same variables + {Op,ln(Anno),L1,R1}; +expr({op,Anno,Op,L0,R0}, _Lc, St) -> + L1 = expr(L0, false, St), + R1 = expr(R0, false, St), %They see the same variables + {op,ln(Anno),Op,[L1,R1]}; +expr({bin,Anno,Grp}, _Lc, St) -> + Grp1 = expr_list(bin_expand_strings(Grp), St), + {bin,ln(Anno),Grp1}; +expr({bin_element,Anno,Expr0,Size0,Type0}, _Lc, St) -> + {Size1,Type} = make_bit_type(Anno, Size0, Type0), + Expr = expr(Expr0, false, St), + Size = expr(Size1, false, St), + {bin_element,ln(Anno),Expr,Size,Type}; +expr({map_field_assoc,L,K0,V0}, _Lc, St) -> + K = expr(K0, false, St), + V = expr(V0, false, St), + {map_field_assoc,L,K,V}. + +consify([A|As]) -> + {cons,0,A,consify(As)}; +consify([]) -> {value,0,[]}. + +make_bit_type(Line, default, Type0) -> + case erl_bits:set_bit_type(default, Type0) of + {ok,all,Bt} -> {{atom,Line,all},erl_bits:as_list(Bt)}; + {ok,undefined,Bt} -> {{atom,Line,undefined},erl_bits:as_list(Bt)}; + {ok,Size,Bt} -> {{integer,Line,Size},erl_bits:as_list(Bt)} + end; +make_bit_type(_Line, Size, Type0) -> %Integer or 'all' + {ok,Size,Bt} = erl_bits:set_bit_type(Size, Type0), + {Size,erl_bits:as_list(Bt)}. + +expr_comprehension({Tag,Anno,E0,Gs0}, St) -> + Gs = [case G of + ({generate,L,P0,Qs}) -> + {generator,{generate,L,pattern(P0, St),expr(Qs, false, St)}}; + ({b_generate,L,P0,Qs}) -> %R12. + {generator,{b_generate,L,pattern(P0, St),expr(Qs, false, St)}}; + ({m_generate,L,P0,Qs}) -> %OTP 26 + {generator,{m_generate,L,mc_pattern(P0, St),expr(Qs, false, St)}}; + (Expr) -> + case is_guard_test(Expr, St) of + true -> {guard,guard([[Expr]], St)}; + false -> expr(Expr, false, St) + end + end || G <- Gs0], + {Tag,ln(Anno),expr(E0, false, St),Gs}. + +mc_pattern({map_field_exact,L,KeyP0,ValP0}, St) -> + KeyP1 = pattern(KeyP0, St), + ValP1 = pattern(ValP0, St), + {map_field_exact,L,KeyP1,ValP1}. + +is_guard_test(Expr, #{ctype:=Ctypes}) -> + IsOverridden = fun(NA) -> + case maps:get(NA, Ctypes, undefined) of + local -> true; + {imported,_} -> true; + undefined -> false + end + end, + erl_lint:is_guard_test(Expr, [], IsOverridden). + +normalise_test(atom, 1) -> is_atom; +normalise_test(binary, 1) -> is_binary; +normalise_test(float, 1) -> is_float; +normalise_test(function, 1) -> is_function; +normalise_test(integer, 1) -> is_integer; +normalise_test(list, 1) -> is_list; +normalise_test(number, 1) -> is_number; +normalise_test(pid, 1) -> is_pid; +normalise_test(port, 1) -> is_port; +normalise_test(record, 2) -> is_record; +normalise_test(reference, 1) -> is_reference; +normalise_test(tuple, 1) -> is_tuple; +normalise_test(Name, _) -> Name. + +%% As Expr may have side effects, we must evaluate it +%% first and bind the value to a new variable. +%% We must use also handle the case that Expr does not +%% evaluate to a tuple properly. + +record_test_in_body(Anno, Expr, Name, Lc, St) -> + Fs = record_fields(Name, Anno, St), + Var = {var, Anno, new_var_name()}, + expr({block,Anno, + [{match,Anno,Var,Expr}, + {call,Anno,{remote,Anno,{atom,Anno,erlang}, + {atom,Anno,is_record}}, + [Var,{atom,Anno,Name},{integer,Anno,length(Fs)+1}]}]}, Lc, St). + +record_test_in_guard(Anno, Term, Name, St) -> + Fs = record_fields(Name, Anno, St), + expr({call,Anno,{remote,Anno,{atom,Anno,erlang},{atom,Anno,is_record}}, + [Term,{atom,Anno,Name},{integer,Anno,length(Fs)+1}]}, false, St). + +%% Expand a call to record_info/2. We have checked that it is not +%% shadowed by an import. + +record_info_call(Anno, [{value,_AnnoI,Info},{value,_AnnoN,Name}], St) -> + case Info of + size -> + {integer,Anno,1+length(record_fields(Name, Anno, St))}; + fields -> + Fs = lists:map(fun({record_field,_,Field,_Val}) -> Field end, + record_fields(Name, Anno, St)), + lists:foldr(fun (H, T) -> {cons,Anno,H,T} end, {nil,Anno}, Fs) + end. + +record_fields(R, Anno, #{recs := Recs}) -> + Fields = maps:get(R, Recs), + [{record_field,Anno,{atom,Anno,F},copy_expr(Di, Anno)} || + {record_field,_Anno,{atom,_AnnoA,F},Di} <- Fields]. + + +%% record_inits([RecDefField], [Init]) -> [InitExpr]. +%% Build a list of initialisation expressions for the record tuple +%% elements. This expansion must be passed through expr +%% again. N.B. We are scanning the record definition field list! + +record_inits(Fs, Is) -> + WildcardInit = record_wildcard_init(Is), + lists:map(fun ({record_field,_,{atom,_,F},D}) -> + case find_field(F, Is) of + {ok,Init} -> Init; + error when WildcardInit =:= none -> D; + error -> WildcardInit + end + end, Fs). + +record_wildcard_init([{record_field,_,{var,_,'_'},D} | _]) -> D; +record_wildcard_init([_ | Is]) -> record_wildcard_init(Is); +record_wildcard_init([]) -> none. + +%% copy_expr(Expr, Anno) -> Expr. +%% Make a copy of Expr converting all annotations to Anno. +copy_expr(Expr, Anno) -> + erl_parse:map_anno(fun(_A) -> Anno end, Expr). + +find_field(F, [{record_field,_,{atom,_,F},Val} | _]) -> {ok,Val}; +find_field(F, [_ | Fs]) -> find_field(F, Fs); +find_field(_, []) -> error. + +%% record_update(Record, RecordName, [RecDefField], [Update], State) -> +%% {Expr,State'} +%% Build an expression to update fields in a record returning a new +%% record. Try to be smart and optimise this. This expansion must be +%% passed through expr again. + +record_update(R, Name, Fs, Us0, St) -> + Anno = element(2, R), + {Pre,Us} = record_exprs(Us0, St), + %% We need a new variable for the record expression + %% to guarantee that it is only evaluated once. + Var = {var, Anno, new_var_name()}, + Update = record_match(Var, Name, Anno, Fs, Us, St), + {record_update,Anno, Pre ++ [{match,Anno,Var,R},Update]}. + +%% record_match(Record, RecordName, Anno, [RecDefField], [Update], State) +%% Build a 'case' expression to modify record fields. + +record_match(R, Name, Anno, Fs, Us, St) -> + {Ps,News} = record_upd_fs(Fs, Us, St), + {'case',ln(Anno),R, + [{clause,ln(Anno),[{tuple,Anno,[{atom,Anno,Name} | Ps]}],[], + [{tuple,Anno,[{atom,Anno,Name} | News]}]}, + {clause,Anno,[{var,Anno,'_'}],[], + [call_error(Anno, {tuple,Anno,[{atom,Anno,badrecord},{atom,Anno,Name}]})]} + ]}. + +record_upd_fs([{record_field,Anno,{atom,_AnnoA,F},_Val} | Fs], Us, St) -> + P = {var, Anno, new_var_name()}, + {Ps,News} = record_upd_fs(Fs, Us, St), + case find_field(F, Us) of + {ok,New} -> {[P | Ps],[New | News]}; + error -> {[P | Ps],[P | News]} + end; +record_upd_fs([], _, _) -> {[],[]}. + +call_error(Anno, R) -> + {call,Anno,{remote,Anno,{atom,Anno,erlang},{atom,Anno,error}},[R]}. + +%% Break out expressions from an record update list and bind to new +%% variables. The idea is that we will evaluate all update expressions +%% before starting to update the record. + +record_exprs(Us, St) -> + record_exprs(Us, St, [], []). + +record_exprs([{record_field,Anno,{atom,_AnnoA,_F}=Name,Val}=Field0 | Us], St, Pre, Fs) -> + case is_simple_val(Val) of + true -> + record_exprs(Us, St, Pre, [Field0 | Fs]); + false -> + Var = {var, Anno, new_var_name()}, + Bind = {match,ln(Anno),Var,Val}, + Field = {record_field,ln(Anno),Name,Var}, + record_exprs(Us, St, [Bind | Pre], [Field | Fs]) + end; +record_exprs([], _St, Pre, Fs) -> + {lists:reverse(Pre),Fs}. + +is_simple_val({var,_,_}) -> true; +is_simple_val(Val) -> + try + erl_parse:normalise(Val), + true + catch error:_ -> + false + end. + +%% pattern_fields([RecDefField], [Match]) -> [Pattern]. +%% Build a list of match patterns for the record tuple elements. +%% This expansion must be passed through pattern again. N.B. We are +%% scanning the record definition field list! + +pattern_fields(Fs, Ms) -> + Wildcard = record_wildcard_init(Ms), + lists:map(fun ({record_field,Anno,{atom,_,F},_}) -> + case find_field(F, Ms) of + {ok,Match} -> Match; + error when Wildcard =:= none -> {var,Anno,'_'}; + error -> Wildcard + end + end, Fs). + +%% index_expr(Anno, FieldExpr, Name, Fields) -> IndexExpr. +%% Return an expression which evaluates to the index of a +%% field. Currently only handle the case where the field is an +%% atom. This expansion must be passed through expr again. + +index_expr(Anno, {atom,_,F}, _Name, Fs) -> + {integer,Anno,index_expr(F, Fs, 2)}. + +index_expr(F, [{record_field,_,{atom,_,F},_} | _], I) -> I; +index_expr(F, [_ | Fs], I) -> index_expr(F, Fs, I+1). + + +%% get_record_field(Anno, RecExpr, FieldExpr, Name, St) -> {Expr,St'}. +%% Return an expression which verifies that the type of record +%% is correct and then returns the value of the field. +%% This expansion must be passed through expr again. + +get_record_field_body(Anno, R, {atom,_,F}, Name, St) -> + Var = {var, Anno, new_var_name()}, + Fs = record_fields(Name, Anno, St), + I = index_expr(F, Fs, 2), + P = record_pattern(2, I, Var, length(Fs)+1, Anno, [{atom,Anno,Name}]), + E = {'case',Anno,R, + [{clause,Anno,[{tuple,Anno,P}],[],[Var]}, + {clause,Anno,[{var,Anno,'_'}],[], + [{call,Anno,{remote,Anno, + {atom,Anno,erlang}, + {atom,Anno,error}}, + [{tuple,Anno,[{atom,Anno,badrecord},{atom,Anno,Name}]}]}]}]}, + expr(E, false, St). + +get_record_field_guard(Anno, R, {atom,_,F}, Name, St) -> + Fs = record_fields(Name, Anno, St), + I = index_expr(F, Fs, 2), + ExpR = expr(R, false, St), + %% Just to make comparison simple: + %% A0 = erl_anno:new(0), + %% ExpRp = erl_parse:map_anno(fun(_A) -> A0 end, ExpR), + %% RA = {{Name,ExpRp},Anno,ExpR,length(Fs)+1}, + %% St2 = St1#exprec{strict_ra = [RA | St1#exprec.strict_ra]}, + {safe_bif,ln(Anno),erlang,element,[{value,ln(Anno),I},ExpR]}. + +record_pattern(I, I, Var, Sz, Anno, Acc) -> + record_pattern(I+1, I, Var, Sz, Anno, [Var | Acc]); +record_pattern(Cur, I, Var, Sz, Anno, Acc) when Cur =< Sz -> + record_pattern(Cur+1, I, Var, Sz, Anno, [{var,Anno,'_'} | Acc]); +record_pattern(_, _, _, _, _, Acc) -> lists:reverse(Acc). + +%% The debugger converts both strings "abc" and lists [67, 68, 69] +%% into {value, Line, [67, 68, 69]}, making it impossible to later +%% distinguish one or the other inside binaries when evaluating. To +%% avoid <<[67, 68, 69]>> from evaluating, we convert strings into +%% chars to avoid the ambiguity. +bin_expand_strings(Es) -> + lists:foldr(fun ({bin_element,Line,{string,_,S},Sz,Ts}, Es1) -> + lists:foldr(fun (C, Es2) -> + [{bin_element,Line,{char,Line,C},Sz,Ts}|Es2] + end, Es1, S); + (E, Es1) -> [E|Es1] + end, [], Es). + +%% -type expr_list([Expression]) -> [Expression]. +%% These expressions are processed "in parallel" for purposes of variable +%% definition etc. + +expr_list([E0|Es], St) -> + E1 = expr(E0, false, St), + [E1|expr_list(Es, St)]; +expr_list([], _St) -> []. + +icr_clauses([C0|Cs], Lc, St) -> + C1 = clause(C0, Lc, St), + [C1|icr_clauses(Cs, Lc, St)]; +icr_clauses([], _, _St) -> []. + +fun_clauses([{clause,A,H,G,B}|Cs], St) -> + [{clause,ln(A),head(H, St),guard(G, St),exprs(B, true, St)}|fun_clauses(Cs, St)]; +fun_clauses([], _St) -> []. + +new_map(Fs0, Anno, St, F) -> + Line = ln(Anno), + Fs1 = map_fields(Fs0, St, F), + Fs2 = [{L,K,V} || {map_field_assoc,L,K,V} <- Fs1], + try + {value,Line,map_literal(Fs2, #{})} + catch + throw:not_literal -> + {map,Line,Fs2} + end. + +map_literal([{_,{value,_,K},{value,_,V}}|T], M) -> + map_literal(T, maps:put(K, V, M)); +map_literal([_|_], _) -> + throw(not_literal); +map_literal([], M) -> M. + +map_fields(Fs, St) -> + map_fields(Fs, St, fun (E) -> expr(E, false, St) end). + +map_fields([{map_field_assoc,A,N,V}|Fs], St, F) -> + [{map_field_assoc,ln(A),F(N),F(V)}|map_fields(Fs, St, F)]; +map_fields([{map_field_exact,A,N,V}|Fs], St, F) -> + [{map_field_exact,ln(A),F(N),F(V)}|map_fields(Fs, St, F)]; +map_fields([], _St, _) -> []. + +%% new_var_name() -> VarName. + +new_var_name() -> + C = get(vcount), + put(vcount, C+1), + list_to_atom("%" ++ integer_to_list(C)). + +%% new_vars(Count, Line) -> [Var]. +%% Make Count new variables. + +new_vars(N, L) -> new_vars(N, L, []). + +new_vars(N, L, Vs) when N > 0 -> + V = {var,L,new_var_name()}, + new_vars(N-1, L, [V|Vs]); +new_vars(0, _, Vs) -> Vs. + +new_fun_name() -> + {F,A} = get(current_function), + I = get(fun_count), + put(fun_count, I+1), + Name = "-" ++ atom_to_list(F) ++ "/" ++ integer_to_list(A) ++ + "-fun-" ++ integer_to_list(I) ++ "-", + list_to_atom(Name). + +ln(Anno) -> + erl_anno:line(Anno). + +bif_type(erlang, Name, Arity) -> + case erl_internal:guard_bif(Name, Arity) of + true -> + %% Guard BIFs are safe (except for self/0, but it is + %% handled with a special instruction anyway). + safe; + false -> + bif_type(Name) + end; +bif_type(_, _, _) -> unsafe. + +bif_type(register) -> safe; +bif_type(unregister) -> safe; +bif_type(whereis) -> safe; +bif_type(registered) -> safe; +bif_type(setelement) -> safe; +bif_type(atom_to_list) -> safe; +bif_type(list_to_atom) -> safe; +bif_type(integer_to_list) -> safe; +bif_type(list_to_integer) -> safe; +bif_type(float_to_list) -> safe; +bif_type(list_to_float) -> safe; +bif_type(tuple_to_list) -> safe; +bif_type(list_to_tuple) -> safe; +bif_type(make_ref) -> safe; +bif_type(time) -> safe; +bif_type(date) -> safe; +bif_type(processes) -> safe; +bif_type(process_info) -> safe; +bif_type(load_module) -> safe; +bif_type(delete_module) -> safe; +bif_type(halt) -> safe; +bif_type(check_process_code) -> safe; +bif_type(purge_module) -> safe; +bif_type(pid_to_list) -> safe; +bif_type(list_to_pid) -> safe; +bif_type(module_loaded) -> safe; +bif_type(binary_to_term) -> safe; +bif_type(term_to_binary) -> safe; +bif_type(nodes) -> safe; +bif_type(is_alive) -> safe; +bif_type(disconnect_node) -> safe; +bif_type(binary_to_list) -> safe; +bif_type(list_to_binary) -> safe; +bif_type(split_binary) -> safe; +bif_type(hash) -> safe; +bif_type(pre_loaded) -> safe; +bif_type(set_cookie) -> safe; +bif_type(get_cookie) -> safe; +bif_type(_) -> unsafe. diff --git a/debugger/erlide_debugger_26/src/dbg_iserver.erl b/debugger/erlide_debugger_26/src/dbg_iserver.erl new file mode 100644 index 0000000..fae3338 --- /dev/null +++ b/debugger/erlide_debugger_26/src/dbg_iserver.erl @@ -0,0 +1,612 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2021. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(dbg_iserver). +-behaviour(gen_server). + +%% External exports +-export([start/0, stop/0, find/0, + call/1, call/2, cast/1, cast/2, safe_call/1, safe_cast/1]). + +%% gen_server callbacks +-export([init/1, handle_call/3, handle_cast/2, handle_info/2, + terminate/2, code_change/3]). + +-record(proc, {pid, % pid() Debugged process + meta, % pid() Meta process + attpid, % pid() | undefined Attached process + status, % running | exit | idle | waiting + info = {}, % {} | term() + exit_info= {}, % {} | {{Mod,Line}, Bs, Stack} + function % {Mod,Func,Args} Initial function call + }). + +-record(state, {db, % ETS table + procs = [], % [#proc{}] + breaks = [], % [{{M,L},Options} Breakpoints + auto, % Auto attach settings + stack, % Stack trace settings + subs = [] % [pid()] Subscribers (Debugger) + }). + + +%%==================================================================== +%% External exports +%%==================================================================== + +start() -> + gen_server:start({local, ?MODULE}, ?MODULE, [], []). + +stop() -> + gen_server:cast(?MODULE, stop). + +find() -> + global:whereis_name(?MODULE). + +call(Request) -> + gen_server:call(?MODULE, Request, infinity). + +call(Int, Request) -> + gen_server:call(Int, Request, infinity). + +cast(Request) -> + gen_server:cast(?MODULE, Request). + +cast(Int, Request) -> + gen_server:cast(Int, Request). + +safe_call(Request) -> + {ok, _} = ensure_started(), + call(Request). + +safe_cast(Request) -> + {ok, _} = ensure_started(), + cast(Request). + +ensure_started() -> + case whereis(?MODULE) of + undefined -> start(); + Pid -> {ok, Pid} + end. + +%%--Module database--------------------------------------------------- +%% This server creates an ETS table, where the following information +%% is saved: +%% +%% Key Value +%% --- ----- +%% {Mod, refs} [ModDb] +%% ModDb [pid()] +%% +%% In each ModDb, the following information is saved by dbg_iload: +%% +%% Key Value +%% --- ----- +%% defs [] +%% mod_bin Binary +%% mod_raw Raw Binary +%% mod_file File +%% {Mod,Name,Arity,Exported} Cs +%% {'fun',Mod,Index,Uniq} {Name,Arity,Cs} +%% Line {Pos,PosNL} + + +%%==================================================================== +%% gen_server callbacks +%%==================================================================== + +init([]) -> + process_flag(trap_exit, true), + global:register_name(?MODULE, self()), + Db = ets:new(?MODULE, [ordered_set, protected]), + {ok, #state{db=Db, auto=false, stack=no_tail}}. + +%% Attaching to a process +handle_call({attached, AttPid, Pid}, _From, State) -> + {true, Proc} = get_proc({pid, Pid}, State#state.procs), + case Proc#proc.attpid of + undefined -> + link(AttPid), + case Proc#proc.status of + exit -> + Args = [self(), + AttPid,Pid,Proc#proc.info, + Proc#proc.exit_info], + Meta = spawn_link(dbg_ieval, exit_info, Args), + Proc2 = Proc#proc{meta=Meta, attpid=AttPid}, + Procs = lists:keyreplace(Pid, #proc.pid, + State#state.procs, Proc2), + {reply, {ok,Meta}, State#state{procs=Procs}}; + _Status -> + Meta = Proc#proc.meta, + send(Meta, {attached, AttPid}), + Procs = lists:keyreplace(Pid, #proc.pid, + State#state.procs, + Proc#proc{attpid=AttPid}), + {reply, {ok, Meta}, State#state{procs=Procs}} + end; + _AttPid -> % there is already an attached process + {reply, error, State} + end; + +%% Getting and setting options +handle_call(get_auto_attach, _From, State) -> + {reply, State#state.auto, State}; +handle_call(get_stack_trace, _From, State) -> + {reply, State#state.stack, State}; + +%% Retrieving information +handle_call(snapshot, _From, State) -> + Reply = [{Proc#proc.pid, Proc#proc.function, + Proc#proc.status, Proc#proc.info} || Proc <- State#state.procs], + {reply, Reply, State}; +handle_call({get_meta, Pid}, _From, State) -> + Reply = case get_proc({pid, Pid}, State#state.procs) of + {true, Proc} -> + {ok, Proc#proc.meta}; + false -> + {error, not_interpreted} + end, + {reply, Reply, State}; +handle_call({get_attpid, Pid}, _From, State) -> + Reply = case get_proc({pid, Pid}, State#state.procs) of + {true, Proc} -> + {ok, Proc#proc.attpid}; + false -> + {error, not_interpreted} + end, + {reply, Reply, State}; + + +%% Breakpoint handling +handle_call({new_break, Point, Options}, _From, State) -> + case lists:keymember(Point, 1, State#state.breaks) of + false -> + Break = {Point, Options}, + send_all([subscriber, meta, attached], + {new_break, Break}, State), + Breaks = keyinsert(Break, 1, State#state.breaks), + {reply, ok, State#state{breaks=Breaks}}; + true -> + {reply, {error, break_exists}, State} + end; +handle_call(all_breaks, _From, State) -> + {reply, State#state.breaks, State}; +handle_call({all_breaks, Mod}, _From, State) -> + Reply = [Break || Break = {{M, _},_} <- State#state.breaks, M =:= Mod], + {reply, Reply, State}; + +%% From Meta process +handle_call({new_process, Pid, Meta, Function}, _From, State) -> + link(Meta), + + %% A new, debugged process has been started. Return its status, + %% ie running (running as usual) or break (stop) + %% The status depends on if the process is automatically attached to + %% or not. + Reply = case auto_attach(init, State#state.auto, Pid) of + AttPid when is_pid(AttPid) -> break; + ignore -> running + end, + + %% Do not add AttPid, it should call attached/2 when started instead + Proc = #proc{pid=Pid, meta=Meta, status=running, function=Function}, + send_all(subscriber, + {new_process, {Pid,Function,running,{}}}, State), + + {reply, Reply, State#state{procs=State#state.procs++[Proc]}}; + +%% Code loading +handle_call({load, Mod, Src, Bin}, _From, State) -> + %% Create an ETS table for storing information about the module + Db = State#state.db, + ModDb = ets:new(Mod, [ordered_set, public]), + ModDbs = case ets:lookup(Db, {Mod, refs}) of + [] -> []; + [{{Mod, refs}, ModDbs1}] -> ModDbs1 + end, + ets:insert(Db, {{Mod, refs}, [ModDb|ModDbs]}), + ets:insert(Db, {ModDb, []}), + + %% Load the code + {ok, Mod} = dbg_iload:load_mod(Mod, Src, Bin, ModDb), + + %% Inform all subscribers and attached processes + send_all([subscriber, attached], {interpret, Mod}, State), + + {reply, {module, Mod}, State}; + +%% Module database +handle_call({get_module_db, Mod}, _From, State) -> + Db = State#state.db, + Reply = case ets:lookup(Db, {Mod, refs}) of + [] -> not_found; + [{{Mod, refs}, [ModDb|_ModDbs]}] -> + ModDb + end, + {reply, Reply, State}; +handle_call({get_module_db, Mod, Pid}, _From, State) -> + Db = State#state.db, + Reply = case ets:lookup(Db, {Mod, refs}) of + [] -> not_found; + [{{Mod, refs}, [ModDb|_ModDbs]}] -> + [{ModDb, Pids}] = ets:lookup(Db, ModDb), + ets:insert(Db, {ModDb, [Pid|Pids]}), + ModDb + end, + {reply, Reply, State}; +handle_call({lookup, Mod, Key}, _From, State) -> + Db = State#state.db, + Reply = case ets:lookup(Db, {Mod, refs}) of + [] -> not_found; + [{{Mod, refs}, [ModDb|_ModDbs]}] -> + case ets:lookup(ModDb, Key) of + [] -> not_found; + [{Key, Value}] -> {ok, Value} + end + end, + {reply, Reply, State}; +handle_call({functions, Mod}, _From, State) -> + Db = State#state.db, + Reply = case ets:lookup(Db, {Mod, refs}) of + [] -> []; + [{{Mod, refs}, [ModDb|_ModDbs]}] -> + Pattern = {{Mod,'$1','$2','_'}, '_'}, + ets:match(ModDb, Pattern) + end, + {reply, Reply, State}; +handle_call({contents, Mod, Pid}, _From, State) -> + Db = State#state.db, + [{{Mod, refs}, ModDbs}] = ets:lookup(Db, {Mod, refs}), + ModDb = if + Pid =:= any -> hd(ModDbs); + true -> + lists:foldl(fun(T, not_found) -> + [{T, Pids}] = ets:lookup(Db, T), + case lists:member(Pid, Pids) of + true -> T; + false -> not_found + end; + (_T, T) -> T + end, + not_found, + ModDbs) + end, + [{mod_bin, Bin}] = ets:lookup(ModDb, mod_bin), + {reply, {ok, Bin}, State}; +handle_call({raw_contents, Mod, Pid}, _From, State) -> + Db = State#state.db, + case ets:lookup(Db, {Mod, refs}) of + [{{Mod, refs}, ModDbs}] -> + ModDb = + if + Pid =:= any -> hd(ModDbs); + true -> + lists:foldl(fun(T, not_found) -> + [{T, Pids}] = ets:lookup(Db, T), + case lists:member(Pid, Pids) of + true -> T; + false -> not_found + end; + (_T, T) -> T + end, + not_found, + ModDbs) + end, + [{mod_raw, Bin}] = ets:lookup(ModDb, mod_raw), + {reply, {ok, Bin}, State}; + [] -> % code not interpreted + {reply, not_found, State} + end; +handle_call({is_interpreted, Mod, Name, Arity}, _From, State) -> + Db = State#state.db, + Reply = case ets:lookup(Db, {Mod, refs}) of + [] -> false; + [{{Mod, refs}, [ModDb|_ModDbs]}] -> + Pattern = {{Mod,Name,Arity,'_'}, '_'}, + case ets:match_object(ModDb, Pattern) of + [{_Key, Clauses}] -> {true, Clauses}; + [] -> false + end + end, + {reply, Reply, State}; +handle_call(all_interpreted, _From, State) -> + Db = State#state.db, + Mods = ets:select(Db, [{{{'$1',refs},'_'},[],['$1']}]), + {reply, Mods, State}; +handle_call({file, Mod}, From, State) -> + {reply, Res, _} = handle_call({lookup, Mod, mod_file}, From, State), + Reply = case Res of + {ok, File} -> File; + not_found -> {error, not_loaded} + end, + {reply, Reply, State}. + + +handle_cast(stop, State) -> + {stop, shutdown, State}; +handle_cast({subscribe, Sub}, State) -> + {noreply, State#state{subs=[Sub|State#state.subs]}}; + +%% Attaching to a process +handle_cast({attach, Pid, {Mod, Func, Args}}, State) -> + %% Simply spawn process, which should call int:attached(Pid) + spawn(Mod, Func, [Pid | Args]), + {noreply, State}; + +%% Getting and setting options +handle_cast({set_auto_attach, false}, State) -> + send_all(subscriber, {auto_attach, false}, State), + {noreply, State#state{auto=false}}; +handle_cast({set_auto_attach, Flags, Function}, State) -> + send_all(subscriber, {auto_attach, {Flags, Function}}, State), + {noreply, State#state{auto={Flags, Function}}}; +handle_cast({set_stack_trace, Flag}, State) -> + send_all(subscriber, {stack_trace, Flag}, State), + {noreply, State#state{stack=Flag}}; + +%% Retrieving information +handle_cast(clear, State) -> + Procs = lists:filter(fun(#proc{status=Status}) -> + Status =/= exit + end, + State#state.procs), + {noreply, State#state{procs=Procs}}; + +%% Breakpoint handling +handle_cast({delete_break, Point}, State) -> + case lists:keymember(Point, 1, State#state.breaks) of + true -> + send_all([subscriber, meta, attached], + {delete_break, Point}, State), + Breaks = lists:keydelete(Point, 1, State#state.breaks), + {noreply, State#state{breaks=Breaks}}; + false -> + {noreply, State} + end; +handle_cast({break_option, Point, Option, Value}, State) -> + case lists:keyfind(Point, 1, State#state.breaks) of + {Point, Options} -> + N = case Option of + status -> 1; + action -> 2; + condition -> 4 + end, + Options2 = list_setelement(N, Options, Value), + send_all([subscriber, meta, attached], + {break_options, {Point, Options2}}, State), + Breaks = lists:keyreplace(Point, 1, State#state.breaks, + {Point, Options2}), + {noreply, State#state{breaks=Breaks}}; + false -> + {noreply, State} + end; +handle_cast(no_break, State) -> + send_all([subscriber, meta, attached], no_break, State), + {noreply, State#state{breaks=[]}}; +handle_cast({no_break, Mod}, State) -> + send_all([subscriber, meta, attached], {no_break, Mod}, State), + Breaks = lists:filter(fun({{M, _L}, _O}) -> + M =/= Mod + end, + State#state.breaks), + {noreply, State#state{breaks=Breaks}}; + +%% From Meta process +handle_cast({set_status, Meta, Status, Info}, State) -> + {true, Proc} = get_proc({meta, Meta}, State#state.procs), + send_all(subscriber, {new_status, Proc#proc.pid, Status, Info}, State), + if + Status =:= break -> + _ = auto_attach(break, State#state.auto, Proc), + ok; + true -> + ok + end, + Proc2 = Proc#proc{status=Status, info=Info}, + {noreply, State#state{procs=lists:keyreplace(Meta, #proc.meta, + State#state.procs, Proc2)}}; +handle_cast({set_exit_info, Meta, ExitInfo}, State) -> + {true, Proc} = get_proc({meta, Meta}, State#state.procs), + Procs = lists:keyreplace(Meta, #proc.meta, State#state.procs, + Proc#proc{exit_info=ExitInfo}), + {noreply,State#state{procs=Procs}}; + +%% Code loading +handle_cast({delete, Mod}, State) -> + + %% Remove the ETS table with information about the module + Db = State#state.db, + case ets:lookup(Db, {Mod, refs}) of + [] -> % Mod is not interpreted + {noreply, State}; + [{{Mod, refs}, ModDbs}] -> + ets:delete(Db, {Mod, refs}), + AllPids = lists:foldl( + fun(ModDb, PidsAcc) -> + [{ModDb, Pids}] = ets:lookup(Db, ModDb), + ets:delete(Db, ModDb), + ets:delete(ModDb), + PidsAcc++Pids + end, + [], + ModDbs), + lists:foreach(fun(Pid) -> + case get_proc({pid, Pid}, + State#state.procs) of + {true, Proc} -> + send(Proc#proc.meta, + {old_code, Mod}); + false -> ignore % pid may have exited + end + end, + AllPids), + + send_all([subscriber,attached], {no_interpret, Mod}, State), + + %% Remove all breakpoints for Mod + handle_cast({no_break, Mod}, State) + end. + +%% Process exits +handle_info({'EXIT',Who,Why}, State) -> + case get_proc({meta, Who}, State#state.procs) of + + %% Exited process is a meta process for exit_info + {true,#proc{status=exit}} -> + {noreply,State}; + + %% Exited process is a meta process + {true,Proc} -> + Pid = Proc#proc.pid, + ExitInfo = Proc#proc.exit_info, + %% Check if someone is attached to the debugged process, + %% if so a new meta process should be started + Meta = case Proc#proc.attpid of + AttPid when is_pid(AttPid) -> + spawn_link(dbg_ieval, exit_info, + [self(),AttPid,Pid,Why,ExitInfo]); + undefined -> + %% Otherwise, auto attach if necessary + _ = auto_attach(exit, State#state.auto, Pid), + Who + end, + send_all(subscriber, {new_status,Pid,exit,Why}, State), + Procs = lists:keyreplace(Who, #proc.meta, State#state.procs, + Proc#proc{meta=Meta, + status=exit, + info=Why}), + {noreply,State#state{procs=Procs}}; + + false -> + case get_proc({attpid, Who}, State#state.procs) of + + %% Exited process is an attached process + {true, Proc} -> + %% If status==exit, then the meta process is a + %% simple meta for a terminated process and can be + %% terminated as well (it is only needed by + %% the attached process) + case Proc#proc.status of + exit -> send(Proc#proc.meta, stop); + _Status -> send(Proc#proc.meta, detached) + end, + Procs = lists:keyreplace(Proc#proc.pid, #proc.pid, + State#state.procs, + Proc#proc{attpid=undefined}), + {noreply, State#state{procs=Procs}}; + + %% Otherwise exited process must be a subscriber + false -> + Subs = lists:delete(Who, State#state.subs), + {noreply, State#state{subs=Subs}} + end + end. + +terminate(_Reason, _State) -> + EbinDir = filename:join(code:lib_dir(debugger), "ebin"), + code:unstick_dir(EbinDir), + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + + +%%==================================================================== +%% Internal functions +%%==================================================================== + +auto_attach(Why, Auto, #proc{attpid = Attpid, pid = Pid}) -> + case Attpid of + undefined -> auto_attach(Why, Auto, Pid); + _ when is_pid(Attpid) -> ignore + end; +auto_attach(Why, Auto, Pid) when is_pid(Pid) -> + case Auto of + false -> ignore; + {Flags, {Mod, Func, Args}} -> + case lists:member(Why, Flags) of + true -> + spawn(Mod, Func, [Pid | Args]); + false -> ignore + end + end. + +keyinsert(Tuple1, N, [Tuple2|Tuples]) -> + if + element(N, Tuple1) < element(N, Tuple2) -> + [Tuple1, Tuple2|Tuples]; + true -> + [Tuple2 | keyinsert(Tuple1, N, Tuples)] + end; +keyinsert(Tuple, _N, []) -> + [Tuple]. + +list_setelement(N, L, E) -> list_setelement(1, N, L, E). + +list_setelement(I, I, [_|T], E) -> + [E|T]; +list_setelement(I, N, [H|T], E) -> + [H|list_setelement(I+1, N, T, E)]. + +mapfilter(Fun, [H|T]) -> + case Fun(H) of + ignore -> mapfilter(Fun, T); + H2 -> [H2|mapfilter(Fun, T)] + end; +mapfilter(_Fun, []) -> + []. + +send_all([Type|Types], Msg, State) -> + send_all(Type, Msg, State), + send_all(Types, Msg, State); +send_all([], _Msg, _State) -> ok; + +send_all(subscriber, Msg, State) -> + send_all(State#state.subs, Msg); +send_all(meta, Msg, State) -> + Metas = [Proc#proc.meta || Proc <- State#state.procs], + send_all(Metas, Msg); +send_all(attached, Msg, State) -> + AttPids= mapfilter(fun(Proc) -> + case Proc#proc.attpid of + Pid when is_pid(Pid) -> Pid; + undefined -> ignore + end + end, + State#state.procs), + send_all(AttPids, Msg). + +send_all(Pids, Msg) -> + lists:foreach(fun(Pid) -> send(Pid, Msg) end, Pids). + +send(Pid, Msg) -> + Pid ! {int, Msg}, + ok. + +get_proc({Type, Pid}, Procs) -> + Index = case Type of + pid -> #proc.pid; + meta -> #proc.meta; + attpid -> #proc.attpid + end, + case lists:keyfind(Pid, Index, Procs) of + false -> false; + Proc -> {true, Proc} + end. diff --git a/debugger/erlide_debugger_26/src/dbg_istk.erl b/debugger/erlide_debugger_26/src/dbg_istk.erl new file mode 100644 index 0000000..4ba2000 --- /dev/null +++ b/debugger/erlide_debugger_26/src/dbg_istk.erl @@ -0,0 +1,252 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2011-2021. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(dbg_istk). +-export([init/0,delayed_to_external/0,from_external/1, + push/3,pop/0,pop/1,stack_level/0, + delayed_stacktrace/0,delayed_stacktrace/2, + bindings/1,stack_frame/2,backtrace/2, + in_use_p/2]). + +-include("dbg_ieval.hrl"). + +-define(STACK, ?MODULE). + +-record(e, + {level, %Level + mfa, %{Mod,Func,Args|Arity}|{Fun,Args} + line, %Line called from + error_info=[], %[{error_info,Map}] | [] + bindings, + lc %Last call (true|false) + }). + +init() -> + init([]). + +delayed_to_external() -> + Stack = get(?STACK), + fun() -> {stack,term_to_binary(Stack)} end. + +from_external({stack,Stk}) -> + put(?STACK, binary_to_term(Stk)). + +init(Stack) -> + put(?STACK, Stack). + +%% We keep track of a call stack that is used for +%% 1) saving stack frames that can be inspected from an Attached +%% Process GUI (using dbg_icmd:get(Meta, stack_frame, {Dir, SP}) +%% 2) generate an approximation of regular stacktrace -- sent to +%% Debugged when it should raise an exception or evaluate a +%% function (since it might possible raise an exception) +%% +%% How to push depends on the "Stack Trace" option (value saved in +%% process dictionary item 'trace_stack'). +%% all - everything is pushed +%% no_tail - tail recursive push +%% false - nothing is pushed +%% Whenever a function returns, the corresponding call frame is popped. + +push(Bs, #ieval{level=Le,module=Mod,function=Name, + arguments=As,line=Li}=Ieval, Lc) -> + Entry = #e{level=Le,mfa={Mod,Name,As},line=Li,bindings=Bs,lc=Lc}, + case get(trace_stack) of + false -> + Ieval#ieval{level=Le+1}; + no_tail when Lc -> + Ieval; + _ -> % all | no_tail when Lc =:= false + put(?STACK, [Entry|get(?STACK)]), + Ieval#ieval{level=Le+1} + end. + +pop() -> + case get(trace_stack) of + false -> ignore; + _ -> % all | no_tail + case get(?STACK) of + [_Entry|Entries] -> + put(?STACK, Entries); + [] -> + ignore + end + end. + +pop(Le) -> + case get(trace_stack) of + false -> ignore; + _ -> % all | no_tail + put(?STACK, pop(Le, get(?STACK))) + end. + +pop(Level, [#e{level=Le}|Stack]) when Level =< Le -> + pop(Level, Stack); +pop(_Level, Stack) -> + Stack. + +%% stack_level() -> Le +%% stack_level(Stack) -> Le +%% Top call level +stack_level() -> + stack_level(get(?STACK)). + +stack_level([]) -> 1; +stack_level([#e{level=Le}|_]) -> Le. + +%% delayed_stacktrace() -> CreateStacktraceFun +%% delayed_stacktrace(ArgFlag, #ieval{}) -> CreateStacktraceFun +%% ArgFlag = no_args | include_args +%% CreateStacktraceFun = fun(NumberOfEntries) +%% +%% Return a fun that can convert the internal stack format to +%% an imitation of the regular stacktrace. + +delayed_stacktrace() -> + Stack0 = get(?STACK), + fun(NumEntries) -> + Stack = stacktrace(NumEntries, Stack0, []), + [finalize(ArityOnly) || {ArityOnly,_} <- Stack] + end. + +delayed_stacktrace(include_args, Ieval) -> + #ieval{module=Mod,function=Name,arguments=As, + line=Li,error_info=ErrorInfo} = Ieval, + Stack0 = [#e{mfa={Mod,Name,As},line=Li,error_info=ErrorInfo}|get(?STACK)], + fun(NumEntries) -> + case stacktrace(NumEntries, Stack0, []) of + [] -> + []; + [{_,WithArgs}|Stack] -> + [finalize(WithArgs) | + [finalize(ArityOnly) || {ArityOnly,_} <- Stack]] + end + end; +delayed_stacktrace(no_args, Ieval) -> + #ieval{module=Mod,function=Name,arguments=As,line=Li} = Ieval, + Stack0 = [#e{mfa={Mod,Name,As},line=Li}|get(?STACK)], + fun(NumEntries) -> + Stack = stacktrace(NumEntries, Stack0, []), + [finalize(ArityOnly) || {ArityOnly,_} <- Stack] + end. + +stacktrace(N, [#e{lc=true}|T], Acc) -> + stacktrace(N, T, Acc); +stacktrace(N, [E|T], []) -> + stacktrace(N-1, T, [normalize(E)]); +stacktrace(N, [E|T], [{P,_}|_]=Acc) when N > 0 -> + case normalize(E) of + {P,_} -> + stacktrace(N, T, Acc); + New -> + stacktrace(N-1, T, [New|Acc]) + end; +stacktrace(_, _, Acc) -> + lists:reverse(Acc). + +normalize(#e{mfa={M,Fun,As},line=Li,error_info=ErrorInfo}) when is_function(Fun) -> + Loc = {M,Li,ErrorInfo}, + {{Fun,length(As),Loc},{Fun,As,Loc}}; +normalize(#e{mfa={M,F,As},line=Li,error_info=ErrorInfo}) -> + Loc = {M,Li,ErrorInfo}, + {{M,F,length(As),Loc},{M,F,As,Loc}}. + +finalize({M,F,A,Loc}) -> {M,F,A,line(Loc)}; +finalize({Fun,A,Loc}) -> {Fun,A,line(Loc)}. + +line({Mod,Line,ErrorInfo}) -> + if Line > 0 -> + [{file,atom_to_list(Mod)++".erl"},{line,Line}|ErrorInfo]; + true -> + ErrorInfo + end; +line(_) -> []. + +%% bindings(SP) -> Bs +%% SP = Le % stack pointer +%% Return the bindings for the specified call level +bindings(SP) -> + bindings(SP, get(?STACK)). + +bindings(SP, [#e{level=SP,bindings=Bs}|_]) -> + Bs; +bindings(SP, [_Entry|Entries]) -> + bindings(SP, Entries); +bindings(_SP, []) -> + erl_eval:new_bindings(). + +%% stack_frame(Dir, SP) -> {Le, Where, Bs} | top | bottom +%% Dir = up | down +%% Where = {Cm, Li} +%% Cm = Module | undefined % module +%% Li = int() | -1 % line number +%% Bs = bindings() +%% Return stack frame info one step up/down from given stack pointer +%% up = to lower call levels +%% down = to higher call levels +stack_frame(up, SP) -> + stack_frame(SP, up, get(?STACK)); +stack_frame(down, SP) -> + stack_frame(SP, down, lists:reverse(get(?STACK))). + +stack_frame(SP, up, [#e{level=Le,mfa={Cm,_,_},line=Li,bindings=Bs}|_]) + when Le < SP -> + {Le,{Cm,Li},Bs}; +stack_frame(SP, down, [#e{level=Le,mfa={Cm,_,_},line=Li,bindings=Bs}|_]) + when Le > SP -> + {Le,{Cm,Li},Bs}; +stack_frame(SP, Dir, [#e{level=SP}|Stack]) -> + case Stack of + [#e{level=Le,mfa={Cm,_,_},line=Li,bindings=Bs}|_] -> + {Le,{Cm,Li},Bs}; + [] when Dir =:= up -> + top; + [] when Dir =:= down -> + bottom + end; +stack_frame(SP, Dir, [_Entry|Stack]) -> + stack_frame(SP, Dir, Stack). + +%% backtrace(HowMany) -> Backtrace +%% HowMany = all | int() +%% Backtrace = {Le, MFA} +%% Return all/the last N called functions, in reversed call order +backtrace(HowMany, Ieval) -> + #ieval{level=Level,module=Mod,function=Name,arguments=As} = Ieval, + Stack0 = [#e{level=Level,mfa={Mod,Name,As}}|get(?STACK)], + Stack = case HowMany of + all -> Stack0; + N -> lists:sublist(Stack0, N) + end, + [{Le,MFA} || #e{level=Le,mfa=MFA} <- Stack]. + +%%-------------------------------------------------------------------- +%% in_use_p(Mod, Cm) -> boolean() +%% Mod = Cm = atom() +%% Returns true if Mod is found on the stack, otherwise false. +%%-------------------------------------------------------------------- +in_use_p(Mod, Mod) -> true; +in_use_p(Mod, _Cm) -> + case get(trace_stack) of + false -> true; + _ -> % all | no_tail + lists:any(fun(#e{mfa={M,_,_}}) when M =:= Mod -> true; + (_) -> false + end, get(?STACK)) + end. diff --git a/debugger/erlide_debugger_26/src/erlide_debugger_26.app.src b/debugger/erlide_debugger_26/src/erlide_debugger_26.app.src new file mode 100644 index 0000000..63b0c46 --- /dev/null +++ b/debugger/erlide_debugger_26/src/erlide_debugger_26.app.src @@ -0,0 +1,10 @@ +{application, erlide_debugger_26, + [ + {description, "erlide_debugger_26"}, + {vsn, "0.117.0"}, + {erlide_context, debugger}, + {registered, []}, + {applications, [kernel, stdlib]}, + {env, []} + ] +}. diff --git a/debugger/erlide_debugger_26/src/int.erl b/debugger/erlide_debugger_26/src/int.erl new file mode 100644 index 0000000..fdf5957 --- /dev/null +++ b/debugger/erlide_debugger_26/src/int.erl @@ -0,0 +1,748 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2017. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(int). + +%% External exports +-export([i/1, i/2, ni/1, ni/2, n/1, nn/1, interpreted/0, file/1, + interpretable/1]). +-export([auto_attach/0, auto_attach/1, auto_attach/2, + stack_trace/0, stack_trace/1]). +-export([break/2, delete_break/2, break_in/3, del_break_in/3, + no_break/0, no_break/1, + disable_break/2, enable_break/2, + action_at_break/3, test_at_break/3, get_binding/2, + all_breaks/0, all_breaks/1]). +-export([snapshot/0, clear/0]). +-export([continue/1, continue/3]). + +%% External exports only to be used by Debugger +-export([start/0, stop/0, subscribe/0]). +-export([attach/2, step/1, next/1, finish/1]). + +%% External exports only to be used by an attached process +-export([attached/1, meta/2, meta/3, contents/2, functions/1]). + +%% External export only to be used by error_handler +-export([eval/3]). + +-include_lib("kernel/include/file.hrl"). + +%%==Erlang Interpreter================================================ +%% +%% int +%% --- +%% Interface module. +%% +%% i +%% - +%% Interface module to int, retained for backwards compatibility only. +%% +%% dbg_debugged +%% ------------ +%% Contains the message loops for a debugged process and is the main +%% entry point from the breakpoint handler in the error_handler module +%% (via the int module). +%% +%% When a process is debugged, most code is executed in another +%% process, called the meta process. When the meta process is +%% interpreting code, the process being debugged just waits in a +%% receive loop in dbg_debugged. However the debugged process itself +%% calls any BIFs that must execute in the correct process (such as +%% link/1 and spawn_link/1), and external code which is not +%% interpreted. +%% +%% dbg_icmd, dbg_ieval +%% ------------------- +%% Code for the meta process. +%% +%% dbg_iserver +%% ----------- +%% Interpreter main process, keeping and distributing information +%% about interpreted modules and debugged processes. +%% +%% dbg_idb +%% ------- +%% ETS wrapper, allowing transparent access to tables at a remote node. +%% +%% dbg_iload +%% --------- +%% Code for interpreting a module. +%%==================================================================== + +%%==================================================================== +%% External exports +%%==================================================================== + +%%-------------------------------------------------------------------- +%% i(AbsMods) -> {module,Mod} | error | ok +%% ni(AbsMods) -> {module,Mod} | error | ok +%% AbsMods = AbsMod | [AbsMod] +%% AbsMod = atom() | string() +%% Mod = atom() +%% Options = term() ignored +%%-------------------------------------------------------------------- +i(AbsMods) -> i2(AbsMods, local, ok). +i(AbsMods, _Options) -> i2(AbsMods, local, ok). +ni(AbsMods) -> i2(AbsMods, distributed, ok). +ni(AbsMods, _Options) -> i2(AbsMods, distributed, ok). + +i2([AbsMod|AbsMods], Dist, Acc) + when is_atom(AbsMod); is_list(AbsMod); is_tuple(AbsMod) -> + Res = int_mod(AbsMod, Dist), + case Acc of + error -> + i2(AbsMods, Dist, Acc); + _ -> + i2(AbsMods, Dist, Res) + end; +i2([], _Dist, Acc) -> + Acc; +i2(AbsMod, Dist, _Acc) when is_atom(AbsMod); is_list(AbsMod); is_tuple(AbsMod) -> + int_mod(AbsMod, Dist). + +%%-------------------------------------------------------------------- +%% n(AbsMods) -> ok +%% nn(AbsMods) -> ok +%%-------------------------------------------------------------------- +n(AbsMods) -> n2(AbsMods, local). +nn(AbsMods) -> n2(AbsMods, distributed). + +n2([AbsMod|AbsMods], Dist) when is_atom(AbsMod); is_list(AbsMod) -> + del_mod(AbsMod, Dist), + n2(AbsMods, Dist); +n2([AbsMod], Dist) when is_atom(AbsMod); is_list(AbsMod) -> + del_mod(AbsMod, Dist); +n2([], _Dist) -> + ok; +n2(AbsMod, Dist) when is_atom(AbsMod); is_list(AbsMod) -> + del_mod(AbsMod, Dist). + +%%-------------------------------------------------------------------- +%% interpreted() -> [Mod] +%%-------------------------------------------------------------------- +interpreted() -> + dbg_iserver:safe_call(all_interpreted). + +%%-------------------------------------------------------------------- +%% file(Mod) -> File | {error, not_loaded} +%% Mod = atom() +%% File = string() +%%-------------------------------------------------------------------- +file(Mod) when is_atom(Mod) -> + dbg_iserver:safe_call({file, Mod}). + +%%-------------------------------------------------------------------- +%% interpretable(AbsMod) -> true | {error, Reason} +%% AbsMod = Mod | File +%% Reason = no_src | no_beam | no_debug_info | badarg | {app, App} +%%-------------------------------------------------------------------- +interpretable(AbsMod) -> + case check(AbsMod) of + {ok, _Res} -> true; + Error -> Error + end. + +%%-------------------------------------------------------------------- +%% auto_attach() -> false | {Flags, Function} +%% auto_attach(false) +%% auto_attach(false|Flags, Function) +%% Flags = Flag | [Flag] +%% Flag = init | break | exit +%% Function = {Mod, Func} | {Mod, Func, Args} +%% Will result in calling: +%% spawn(Mod, Func, [Dist, Pid, Meta | Args]) (living process) or +%% spawn(Mod, Func, [Dist, Pid, Reason, Info | Args]) (dead process) +%%-------------------------------------------------------------------- +auto_attach() -> + dbg_iserver:safe_call(get_auto_attach). + +auto_attach(false) -> + dbg_iserver:safe_cast({set_auto_attach, false}). + +auto_attach([], _Function) -> + auto_attach(false); +auto_attach(Flags, {Mod, Func}) -> + auto_attach(Flags, {Mod, Func, []}); +auto_attach(Flags, {Mod, Func, Args}) when is_atom(Mod),is_atom(Func),is_list(Args) -> + check_flags(Flags), + dbg_iserver:safe_cast({set_auto_attach, Flags, {Mod, Func, Args}}). + +check_flags([init|Flags]) -> check_flags(Flags); +check_flags([break|Flags]) -> check_flags(Flags); +check_flags([exit|Flags]) -> check_flags(Flags); +check_flags([]) -> true. + +%%-------------------------------------------------------------------- +%% stack_trace() -> Flag +%% stack_trace(Flag) +%% Flag = all | true | no_tail | false +%%-------------------------------------------------------------------- +stack_trace() -> + dbg_iserver:safe_call(get_stack_trace). + +stack_trace(true) -> + stack_trace(all); +stack_trace(Flag) -> + check_flag(Flag), + dbg_iserver:safe_cast({set_stack_trace, Flag}). + +check_flag(all) -> true; +check_flag(no_tail) -> true; +check_flag(false) -> true. + +%%-------------------------------------------------------------------- +%% break(Mod, Line) -> ok | {error, break_exists} +%% delete_break(Mod, Line) -> ok +%% break_in(Mod, Func, Arity) -> ok | {error, function_not_found} +%% del_break_in(Mod, Function, Arity) -> ok | {error, function_not_found} +%% no_break() +%% no_break(Mod) +%% disable_break(Mod, Line) -> ok +%% enable_break(Mod, Line) -> ok +%% action_at_break(Mod, Line, Action) -> ok +%% test_at_break(Mod, Line, Function) -> ok +%% get_binding(Var, Bindings) -> {value, Value} | unbound +%% all_breaks() -> [Break] +%% all_breaks(Mod) -> [Break] +%% Mod = atom() +%% Line = integer() +%% Func = atom() function name +%% Arity = integer() +%% Action = enable | disable | delete +%% Function = {Mod, Func} must have arity 1 (Bindings) +%% Var = atom() +%% Bindings = Value = term() +%% Break = {Point, Options} +%% Point = {Mod, Line} +%% Options = [Status, Action, null, Cond] +%% Status = active | inactive +%% Cond = null | Function +%%-------------------------------------------------------------------- +break(Mod, Line) when is_atom(Mod), is_integer(Line) -> + dbg_iserver:safe_call({new_break, {Mod, Line}, + [active, enable, null, null]}). + +delete_break(Mod, Line) when is_atom(Mod), is_integer(Line) -> + dbg_iserver:safe_cast({delete_break, {Mod, Line}}). + +break_in(Mod, Func, Arity) when is_atom(Mod), is_atom(Func), is_integer(Arity) -> + case dbg_iserver:safe_call({is_interpreted, Mod, Func, Arity}) of + {true, Clauses} -> + Lines = first_lines(Clauses), + lists:foreach(fun(Line) -> break(Mod, Line) end, Lines); + false -> + {error, function_not_found} + end. + +del_break_in(Mod, Func, Arity) when is_atom(Mod), is_atom(Func), is_integer(Arity) -> + case dbg_iserver:safe_call({is_interpreted, Mod, Func, Arity}) of + {true, Clauses} -> + Lines = first_lines(Clauses), + lists:foreach(fun(Line) -> delete_break(Mod, Line) end, + Lines); + false -> + {error, function_not_found} + end. + +first_lines(Clauses) -> + [first_line(Clause) || Clause <- Clauses]. + +first_line({clause,_L,_Vars,_,Exprs}) -> + first_line(Exprs); +first_line([Expr|_Exprs]) -> % Expr = {Op, Line, ..varying no of args..} + element(2, Expr). + +no_break() -> + dbg_iserver:safe_cast(no_break). + +no_break(Mod) when is_atom(Mod) -> + dbg_iserver:safe_cast({no_break, Mod}). + +disable_break(Mod, Line) when is_atom(Mod), is_integer(Line) -> + dbg_iserver:safe_cast({break_option, {Mod, Line}, status, inactive}). + +enable_break(Mod, Line) when is_atom(Mod), is_integer(Line) -> + dbg_iserver:safe_cast({break_option, {Mod, Line}, status, active}). + +action_at_break(Mod, Line, Action) when is_atom(Mod), is_integer(Line) -> + check_action(Action), + dbg_iserver:safe_cast({break_option, {Mod, Line}, action, Action}). + +check_action(enable) -> true; +check_action(disable) -> true; +check_action(delete) -> true. + +test_at_break(Mod, Line, Function) when is_atom(Mod), is_integer(Line) -> + check_function(Function), + dbg_iserver:safe_cast({break_option, {Mod, Line}, condition, Function}). + +check_function({Mod, Func}) when is_atom(Mod), is_atom(Func) -> true. + +get_binding(Var, Bs) -> + dbg_icmd:get_binding(Var, Bs). + +all_breaks() -> + dbg_iserver:safe_call(all_breaks). +all_breaks(Mod) when is_atom(Mod) -> + dbg_iserver:safe_call({all_breaks, Mod}). + +%%-------------------------------------------------------------------- +%% snapshot() -> [{Pid, Init, Status, Info}] +%% Pid = pid() +%% Init = atom() First interpreted function +%% Status = idle | running | waiting | break | exit +%% Info = {} | {Mod, Line} | ExitReason +%% Mod = atom() +%% Line = integer() +%% ExitReason = term() +%%-------------------------------------------------------------------- +snapshot() -> + dbg_iserver:safe_call(snapshot). + +%%-------------------------------------------------------------------- +%% clear() +%%-------------------------------------------------------------------- +clear() -> + dbg_iserver:safe_cast(clear). + +%%-------------------------------------------------------------------- +%% continue(Pid) -> ok | {error, not_interpreted} +%% continue(X, Y, Z) -> ok | {error, not_interpreted} +%%-------------------------------------------------------------------- +continue(Pid) when is_pid(Pid) -> + case dbg_iserver:safe_call({get_meta, Pid}) of + {ok, Meta} when is_pid(Meta) -> + dbg_icmd:continue(Meta), + ok; + Error -> + Error + end. + +continue(X, Y, Z) when is_integer(X), is_integer(Y), is_integer(Z) -> + continue(c:pid(X, Y, Z)). + + +%%==================================================================== +%% External exports only to be used by Debugger +%%==================================================================== + +%%-------------------------------------------------------------------- +%% start() +%% stop() +%% Functions for starting and stopping dbg_iserver explicitly. +%%-------------------------------------------------------------------- +start() -> dbg_iserver:start(). +stop() -> + lists:foreach( + fun(Mod) -> + _ = everywhere(distributed, + fun() -> + erts_debug:breakpoint({Mod,'_','_'}, false) + end) + end, + interpreted()), + dbg_iserver:stop(). + +%%-------------------------------------------------------------------- +%% subscribe() +%% Subscribe to information from dbg_iserver. The process calling this +%% function will receive the following messages: +%% {int, {interpret, Mod}} +%% {int, {no_interpret, Mod}} +%% {int, {new_process, {Pid, Function, Status, Info}}} +%% {int, {new_status, Pid, Status, Info}} +%% {int, {new_break, {Point, Options}}} +%% {int, {delete_break, Point}} +%% {int, {break_options, {Point, Options}}} +%% {int, no_break} +%% {int, {no_break, Mod}} +%% {int, {auto_attach, false|{Flags, Function}}} +%% {int, {stack_trace, Flag}} +%%-------------------------------------------------------------------- +subscribe() -> dbg_iserver:cast({subscribe, self()}). + +%%-------------------------------------------------------------------- +%% attach(Pid, Function) +%% Pid = pid() +%% Function = {Mod, Func} | {Mod, Func, Args} (see auto_attach/2) +%% Tell dbg_iserver to attach to Pid using Function. Will result in: +%% spawn(Mod, Func, [Pid, Status | Args]) +%%-------------------------------------------------------------------- +attach(Pid, {Mod, Func}) -> + attach(Pid, {Mod, Func, []}); +attach(Pid, Function) -> + dbg_iserver:cast({attach, Pid, Function}). + +%%-------------------------------------------------------------------- +%% step(Pid) +%% next(Pid) +%% (continue(Pid)) +%% finish(Pid) +%%-------------------------------------------------------------------- +step(Pid) -> + {ok, Meta} = dbg_iserver:call({get_meta, Pid}), + dbg_icmd:step(Meta). +next(Pid) -> + {ok, Meta} = dbg_iserver:call({get_meta, Pid}), + dbg_icmd:next(Meta). +finish(Pid) -> + {ok, Meta} = dbg_iserver:call({get_meta, Pid}), + dbg_icmd:finish(Meta). + + +%%==================================================================== +%% External exports only to be used by an attached process +%%==================================================================== + +%%-------------------------------------------------------------------- +%% attached(Pid) -> {ok, Meta} | error +%% Pid = Meta = pid() +%% Tell dbg_iserver that I have attached to Pid. dbg_iserver informs +%% the meta process and returns its pid. dbg_iserver may also refuse, +%% if there already is a process attached to Pid. +%%-------------------------------------------------------------------- +attached(Pid) -> + dbg_iserver:call({attached, self(), Pid}). + +%%-------------------------------------------------------------------- +%% meta(Meta, Cmd) +%% Meta = pid() +%% Cmd = step | next | continue | finish | skip | timeout | stop +%% Cmd = messages => [Message] +%% meta(Meta, Cmd, Arg) +%% Cmd = trace, Arg = bool() +%% Cmd = stack_trace Arg = all | notail | false +%% Cmd = stack_frame Arg = {up|down, Sp} +%% => {Sp, Mod, Line} | top | bottom +%% Cmd = backtrace Arg = integer() +%% => {Sp, Mod, {Func, Arity}, Line} +%% Cmd = eval Arg = {Cm, Cmd} | {Cm, Cmd, Sp} +%%-------------------------------------------------------------------- +meta(Meta, step) -> dbg_icmd:step(Meta); +meta(Meta, next) -> dbg_icmd:next(Meta); +meta(Meta, continue) -> dbg_icmd:continue(Meta); +meta(Meta, finish) -> dbg_icmd:finish(Meta); +meta(Meta, skip) -> dbg_icmd:skip(Meta); +meta(Meta, timeout) -> dbg_icmd:timeout(Meta); +meta(Meta, stop) -> dbg_icmd:stop(Meta); +meta(Meta, messages) -> dbg_icmd:get(Meta, messages, null). + +meta(Meta, trace, Trace) -> dbg_icmd:set(Meta, trace, Trace); +meta(Meta, stack_trace, Flag) -> dbg_icmd:set(Meta, stack_trace, Flag); +meta(Meta, bindings, Stack) -> dbg_icmd:get(Meta, bindings, Stack); +meta(Meta, stack_frame, Arg) -> dbg_icmd:get(Meta, stack_frame, Arg); +meta(Meta, backtrace, N) -> dbg_icmd:get(Meta, backtrace, N); +meta(Meta, eval, Arg) -> dbg_icmd:eval(Meta, Arg). + +%%-------------------------------------------------------------------- +%% contents(Mod, Pid) -> string() +%% Mod = atom() +%% Pid = pid() | any +%% Return the contents of an interpreted module. +%%-------------------------------------------------------------------- +contents(Mod, Pid) -> + {ok, Bin} = dbg_iserver:call({contents, Mod, Pid}), + binary_to_list(Bin). + +%%-------------------------------------------------------------------- +%% functions(Mod) -> [[Name, Arity]] +%% Mod = Name = atom() +%% Arity = integer() +%%-------------------------------------------------------------------- +functions(Mod) -> + [F || F <- dbg_iserver:call({functions, Mod}), functions_1(F)]. + +functions_1([module_info, _Arity]) -> false; +functions_1(_Func) -> true. + + +%%==================================================================== +%% External exports only to be used by error_handler +%%==================================================================== + +eval(Mod, Func, Args) -> + dbg_debugged:eval(Mod, Func, Args). + + +%%==================================================================== +%% Internal functions +%%==================================================================== + +%%--Interpreting modules---------------------------------------------- + +int_mod({Mod, Src, Beam, BeamBin}, Dist) + when is_atom(Mod), is_list(Src), is_list(Beam), is_binary(BeamBin) -> + try + case is_file(Src) of + true -> + check_application(Src), + case check_beam(BeamBin) of + {ok, Exp, Abst, _BeamBin} -> + load({Mod, Src, Beam, BeamBin, Exp, Abst}, Dist); + error -> + error + end; + false -> + error + end + catch + throw:Reason -> + Reason + end; +int_mod(AbsMod, Dist) when is_atom(AbsMod); is_list(AbsMod) -> + case check(AbsMod) of + {ok, Res} -> + load(Res, Dist); + {error, {app, App}} -> + io:format("** Cannot interpret ~p module: ~p~n", + [App, AbsMod]), + error; + _Error -> + io:format("** Invalid beam file or no abstract code: ~tp\n", + [AbsMod]), + error + end. + +check(Mod) when is_atom(Mod) -> catch check_module(Mod); +check(File) when is_list(File) -> catch check_file(File). + +load({Mod, Src, Beam, BeamBin, Exp, Abst}, Dist) -> + _ = everywhere(Dist, + fun() -> + code:purge(Mod), + erts_debug:breakpoint({Mod,'_','_'}, false), + {module,Mod} = code:load_binary(Mod, Beam, BeamBin) + end), + case erl_prim_loader:get_file(filename:absname(Src)) of + {ok, SrcBin, _} -> + MD5 = code:module_md5(BeamBin), + SrcBin1 = unicode:characters_to_binary(SrcBin, enc(SrcBin)), + true = is_binary(SrcBin1), + Bin = term_to_binary({interpreter_module,Exp,Abst,SrcBin1,MD5}), + {module, Mod} = dbg_iserver:safe_call({load, Mod, Src, Bin}), + _ = everywhere(Dist, + fun() -> + true = erts_debug:breakpoint({Mod,'_','_'}, true) > 0 + end), + {module, Mod}; + error -> + error + end. + +check_module(Mod) -> + case code:which(Mod) of + Beam when is_list(Beam) -> + case find_src(Mod, Beam) of + Src when is_list(Src) -> + check_application(Src), + case check_beam(Beam) of + {ok, Exp, Abst, BeamBin} -> + {ok, {Mod, Src, Beam, BeamBin, Exp, Abst}}; + error -> + {error, no_debug_info} + end; + error -> + {error, no_src} + end; + _ -> + {error, badarg} + end. + +check_file(Name0) -> + Src = + case is_file(Name0) of + true -> + Name0; + false -> + Name = Name0 ++ ".erl", + case is_file(Name) of + true -> Name; + false -> error + end + end, + if + is_list(Src) -> + check_application(Src), + Mod = scan_module_name(Src), + case find_beam(Mod, Src) of + Beam when is_list(Beam) -> + case check_beam(Beam) of + {ok, Exp, Abst, BeamBin} -> + {ok, {Mod, Src, Beam, BeamBin, Exp, Abst}}; + error -> + {error, no_debug_info} + end; + error -> + {error, no_beam} + end; + true -> + {error, badarg} + end. + +%% Try to avoid interpreting a kernel, stdlib, gs or debugger module. +check_application(Src) -> + case lists:reverse(filename:split(filename:absname(Src))) of + [_Mod,"src",AppS|_] -> + check_application2(AppS); + _ -> ok + end. +check_application2("kernel-"++_) -> throw({error,{app,kernel}}); +check_application2("stdlib-"++_) -> throw({error,{app,stdlib}}); +check_application2("erts-"++_) -> throw({error,{app,erts}}); +check_application2("gs-"++_) -> throw({error,{app,gs}}); +check_application2("debugger-"++_) -> throw({error,{app,debugger}}); +check_application2(_) -> ok. + +find_src(Mod, Beam) -> + Src0 = filename:rootname(Beam) ++ ".erl", + case is_file(Src0) of + true -> Src0; + false -> + EbinDir = filename:dirname(Beam), + Src = filename:join([filename:dirname(EbinDir), "src", + filename:basename(Src0)]), + case is_file(Src) of + true -> Src; + false -> find_src_from_module(Mod) + end + end. + +find_src_from_module(Mod) -> + Compile = Mod:module_info(compile), + case lists:keyfind(source, 1, Compile) of + {source, Src} -> + case is_file(Src) of + true -> Src; + false -> error + end; + false -> + error + end. + +find_beam(Mod, Src) -> + SrcDir = filename:dirname(Src), + BeamFile = atom_to_list(Mod) ++ code:objfile_extension(), + File = filename:join(SrcDir, BeamFile), + case is_file(File) of + true -> File; + false -> find_beam_1(BeamFile, SrcDir) + end. + +find_beam_1(BeamFile, SrcDir) -> + RootDir = filename:dirname(SrcDir), + EbinDir = filename:join(RootDir, "ebin"), + CodePath = [EbinDir | code:get_path()], + lists:foldl(fun(_, Beam) when is_list(Beam) -> Beam; + (Dir, error) -> + File = filename:join(Dir, BeamFile), + case is_file(File) of + true -> File; + false -> error + end + end, + error, + CodePath). + +check_beam(BeamBin) when is_binary(BeamBin) -> + case beam_lib:chunks(BeamBin, [abstract_code,exports]) of + {ok,{_Mod,[{abstract_code,no_abstract_code}|_]}} -> + error; + {ok,{_Mod,[{abstract_code,Abst},{exports,Exp}]}} -> + {ok,Exp,Abst, BeamBin}; + _ -> + error + end; +check_beam(Beam) when is_list(Beam) -> + {ok, Bin, _FullPath} = erl_prim_loader:get_file(filename:absname(Beam)), + check_beam(Bin). + +is_file(Name) -> + filelib:is_regular(filename:absname(Name), erl_prim_loader). + +everywhere(distributed, Fun) -> + case is_alive() of + true -> rpc:multicall(erlang, apply, [Fun,[]]); + false -> Fun() + end; +everywhere(local, Fun) -> + Fun(). + +scan_module_name(File) -> + try + {ok, Bin, _FullPath} = + erl_prim_loader:get_file(filename:absname(File)), + scan_module_name_1([], <<>>, Bin, enc(Bin)) + catch + _:_ -> + throw({error, no_beam}) + end. + +scan_module_name_1(Cont0, B0, Bin0, Enc) -> + N = min(100, byte_size(Bin0)), + {Bin1, Bin} = erlang:split_binary(Bin0, N), + {Chars, B1} = + case unicode:characters_to_list(list_to_binary([B0, Bin1]), Enc) of + {incomplete, List, Binary} -> + {List, Binary}; + List when is_list(List), List =/= [] -> + {List, <<>>} + end, + scan_module_name_2(Cont0, Chars, B1, Bin, Enc). + +scan_module_name_2(Cont0, Chars, B1, Bin, Enc) -> + case erl_scan:tokens(Cont0, Chars, _AnyLine = 1) of + {done, {ok, Ts, _}, Rest} -> + scan_module_name_3(Ts, Rest, B1, Bin, Enc); + {more, Cont} -> + scan_module_name_1(Cont, B1, Bin, Enc) + end. + +scan_module_name_3([{'-',_},{atom,_,module},{'(',_} | _]=Ts, + _Chars, _B1, _Bin, _Enc) -> + scan_module_name_4(Ts); +scan_module_name_3([{'-',_},{atom,_,_} | _], Chars, B1, Bin, Enc) -> + scan_module_name_2("", Chars, B1, Bin, Enc). + +scan_module_name_4(Ts) -> + {ok, {attribute,_,module,M}} = erl_parse:parse_form(Ts), + true = is_atom(M), + M. + +enc(Bin) -> + case epp:read_encoding_from_binary(Bin) of + none -> epp:default_encoding(); + Encoding -> Encoding + end. + +%%--Stop interpreting modules----------------------------------------- + +del_mod(AbsMod, Dist) -> + Mod = if + is_atom(AbsMod) -> AbsMod; + is_list(AbsMod) -> + list_to_atom(filename:basename(AbsMod,".erl")) + end, + dbg_iserver:safe_cast({delete, Mod}), + _ = everywhere(Dist, + fun() -> + erts_debug:breakpoint({Mod,'_','_'}, false), + erlang:yield() + end), + ok. From 1d2bf901cb0d673a2ab5fa62ff4fad5d787b59c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Svensson?= Date: Mon, 26 May 2025 16:09:08 +0200 Subject: [PATCH 3/9] Add erlide_debugger_27 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit dbg_*.erl and int.erl copied from otp_src_27.3.3.tar.gz located in otp_src_27.3.3/lib/debugger/src/ Signed-off-by: Björn Svensson --- debugger/erlide_debugger_27/build | 8 + debugger/erlide_debugger_27/include/.keep | 0 debugger/erlide_debugger_27/priv/.keep | 0 debugger/erlide_debugger_27/rebar.config | 24 + debugger/erlide_debugger_27/rebar.lock | 1 + .../erlide_debugger_27/src/dbg_debugged.erl | 102 + debugger/erlide_debugger_27/src/dbg_icmd.erl | 481 ++++ debugger/erlide_debugger_27/src/dbg_idb.erl | 56 + debugger/erlide_debugger_27/src/dbg_ieval.erl | 1960 +++++++++++++++++ debugger/erlide_debugger_27/src/dbg_ieval.hrl | 32 + debugger/erlide_debugger_27/src/dbg_iload.erl | 1069 +++++++++ .../erlide_debugger_27/src/dbg_iserver.erl | 613 ++++++ debugger/erlide_debugger_27/src/dbg_istk.erl | 253 +++ .../src/erlide_debugger_27.app.src | 10 + debugger/erlide_debugger_27/src/int.erl | 1090 +++++++++ 15 files changed, 5699 insertions(+) create mode 100755 debugger/erlide_debugger_27/build create mode 100644 debugger/erlide_debugger_27/include/.keep create mode 100644 debugger/erlide_debugger_27/priv/.keep create mode 100644 debugger/erlide_debugger_27/rebar.config create mode 100644 debugger/erlide_debugger_27/rebar.lock create mode 100644 debugger/erlide_debugger_27/src/dbg_debugged.erl create mode 100644 debugger/erlide_debugger_27/src/dbg_icmd.erl create mode 100644 debugger/erlide_debugger_27/src/dbg_idb.erl create mode 100644 debugger/erlide_debugger_27/src/dbg_ieval.erl create mode 100644 debugger/erlide_debugger_27/src/dbg_ieval.hrl create mode 100644 debugger/erlide_debugger_27/src/dbg_iload.erl create mode 100644 debugger/erlide_debugger_27/src/dbg_iserver.erl create mode 100644 debugger/erlide_debugger_27/src/dbg_istk.erl create mode 100644 debugger/erlide_debugger_27/src/erlide_debugger_27.app.src create mode 100644 debugger/erlide_debugger_27/src/int.erl diff --git a/debugger/erlide_debugger_27/build b/debugger/erlide_debugger_27/build new file mode 100755 index 0000000..c363823 --- /dev/null +++ b/debugger/erlide_debugger_27/build @@ -0,0 +1,8 @@ +#!/bin/bash + +source ../../build_utils.sh + +dir=`pwd` +prj=`basename $dir` + +build_project ../../rebar3 $prj 27 "$@" diff --git a/debugger/erlide_debugger_27/include/.keep b/debugger/erlide_debugger_27/include/.keep new file mode 100644 index 0000000..e69de29 diff --git a/debugger/erlide_debugger_27/priv/.keep b/debugger/erlide_debugger_27/priv/.keep new file mode 100644 index 0000000..e69de29 diff --git a/debugger/erlide_debugger_27/rebar.config b/debugger/erlide_debugger_27/rebar.config new file mode 100644 index 0000000..2684deb --- /dev/null +++ b/debugger/erlide_debugger_27/rebar.config @@ -0,0 +1,24 @@ +{require_otp_vsn, "27.*"}. + +{plugins, []}. + +{erl_opts, []}. +{edoc_opts,[{todo,true}]}. + +{eunit_opts, [verbose, {report,{eunit_surefire,[{dir,"."}]}}]}. + +{cover_export_enabled, true}. +{cover_enabled, false}. +{cover_print_enable, true}. + +{covertool_eunit, {".eunit/cover.coverdata", "eunit.coverage.xml"}}. +{covertool_prefix_len, 0}. + +{xref_checks,[ + undefined_function_calls, + undefined_functions, + locals_not_used, + %exports_not_used, + deprecated_function_calls, + deprecated_functions + ]}. diff --git a/debugger/erlide_debugger_27/rebar.lock b/debugger/erlide_debugger_27/rebar.lock new file mode 100644 index 0000000..57afcca --- /dev/null +++ b/debugger/erlide_debugger_27/rebar.lock @@ -0,0 +1 @@ +[]. diff --git a/debugger/erlide_debugger_27/src/dbg_debugged.erl b/debugger/erlide_debugger_27/src/dbg_debugged.erl new file mode 100644 index 0000000..d48a235 --- /dev/null +++ b/debugger/erlide_debugger_27/src/dbg_debugged.erl @@ -0,0 +1,102 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2024. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +-module(dbg_debugged). +-moduledoc false. + +%% External exports +-export([eval/3]). + +%%==================================================================== +%% External exports +%%==================================================================== + +%%-------------------------------------------------------------------- +%% eval(Mod, Func, Args) -> Value +%% Main entry point from external (non-interpreted) code. +%% Called via the error handler. +%%-------------------------------------------------------------------- +eval(Mod, Func, Args) -> + Meta = dbg_ieval:eval(Mod, Func, Args), + Mref = erlang:monitor(process, Meta), + msg_loop(Meta, Mref). + +%%==================================================================== +%% Internal functions +%%==================================================================== + +msg_loop(Meta, Mref) -> + receive + + %% Evaluated function has returned a value + {sys, Meta, {ready, Val}} -> + erlang:demonitor(Mref, [flush]), + case Val of + {dbg_apply,M,F,A} -> + apply(M, F, A); + _ -> + Val + end; + + %% Evaluated function raised an (uncaught) exception + {sys, Meta, {exception,{Class,Reason,Stacktrace}}} -> + erlang:demonitor(Mref, [flush]), + + %% ...raise the same exception + erlang:error(erlang:raise(Class, Reason, Stacktrace), + [Class,Reason,Stacktrace]); + + %% Meta is evaluating a receive, must be done within context + %% of real (=this) process + {sys, Meta, {'receive',Msg}} -> + receive Msg -> + Meta ! {self(), rec_acked}, + ok + end, + msg_loop(Meta, Mref); + + %% Meta needs something evaluated within context of real process + {sys, Meta, {command,Command}} -> + Reply = handle_command(Command), + Meta ! {sys, self(), Reply}, + msg_loop(Meta, Mref); + + %% Meta has terminated + %% Must be due to int:stop() (or -heaven forbid- a debugger bug) + {'DOWN', Mref, _, _, Reason} -> + {interpreter_terminated, Reason} + end. + +handle_command(Command) -> + try + reply(Command) + catch Class:Reason:Stacktrace -> + {exception,{Class,Reason,stacktrace_f(Stacktrace)}} + end. + +reply({apply,M,F,As}) -> + {value, erlang:apply(M,F,As)}; +reply({eval,Expr,Bs}) -> + %% Bindings is an orddict (sort them) + erl_eval:expr(Expr, lists:sort(Bs)). % {value, Value, Bs2} + +%% Fix stacktrace - keep all above call to this module. +%% +stacktrace_f([]) -> []; +stacktrace_f([{?MODULE,_,_,_}|_]) -> []; +stacktrace_f([F|S]) -> [F|stacktrace_f(S)]. diff --git a/debugger/erlide_debugger_27/src/dbg_icmd.erl b/debugger/erlide_debugger_27/src/dbg_icmd.erl new file mode 100644 index 0000000..19d95d8 --- /dev/null +++ b/debugger/erlide_debugger_27/src/dbg_icmd.erl @@ -0,0 +1,481 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2024. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(dbg_icmd). +-moduledoc false. + +%% Internal command receiver/handler +-export([cmd/3]). + +%% User control of process execution and settings +-export([step/1, next/1, continue/1, finish/1, skip/1, timeout/1, + stop/1]). +-export([eval/2]). +-export([set/3, get/3]). +-export([handle_msg/4]). + +%% Library functions for attached process handling +-export([tell_attached/1]). + +%% get_binding/2 +-export([get_binding/2]). + +-include("dbg_ieval.hrl"). + +%%==================================================================== +%% Internal command receiver/handler +%%==================================================================== + +%%-------------------------------------------------------------------- +%% cmd(Expr, Bs, Ieval) -> {skip, Bs} | Bs +%% This function is called from dbg_ieval before evaluating any +%% expression to give the user the chance to inspect variables etc. +%% get(next_break) => break | running +%% | Le +%% specifies if the process should break. +%%-------------------------------------------------------------------- + +cmd(Expr, Bs, Ieval) -> + cmd(Expr, Bs, get(next_break), Ieval). + +%% Evaluation should break +cmd(Expr, Bs, break, Ieval) -> + break(Expr, Bs, Ieval); +%% Evaluation should continue, unless there is a breakpoint at +%% the current line +cmd(Expr, Bs, running, #ieval{level=Le,module=M}=Ieval) -> + Line = element(2, Expr), + case break_p(M, Line, Le, Bs) of + true -> + put(next_break, break), + break(Expr, Bs, Ieval); + false -> + handle_cmd(Bs, running, Ieval) + end; +%% Evaluation should continue for now (until we've returned to +%% call level Next) +cmd(Expr, Bs, Next, #ieval{level=Le}=Ieval) when is_integer(Next), + Next + Line = element(2, Expr), + handle_cmd(Bs, Next, Ieval#ieval{line=Line}); +%% Evaluation has returned to call level Next, break +cmd(Expr, Bs, Next, #ieval{level=Le}=Ieval) when is_integer(Next), + Next>=Le -> + put(next_break, break), + break(Expr, Bs, Ieval). + +%% break_p(Mod, Line, Le, Bs) -> true | false +%% Checks if there is a breakpoint at Line in Mod. +%% As a side effect, disables or deletes breakpoint as specified +break_p(Mod, Line, Le, Bs) -> + case lists:keysearch({Mod, Line}, 1, get(breakpoints)) of + {value, {_Point, [active, Action, _, Cond]}} -> + case get(user_eval) of + [{Line, Le}|_] -> false; + _ -> + Bool = case Cond of + null -> true; + {CM, CN} -> + try CM:CN(Bs) of + true -> true; + false -> false; + _Term -> false + catch + _C:_R -> false + end + end, + if + Bool -> + case Action of + enable -> ignore; + disable -> + dbg_iserver:cast(get(int), + {break_option, + {Mod, Line}, + status, + inactive}); + delete -> + dbg_iserver:cast(get(int), + {delete_break, + {Mod, Line}}) + end; + true -> ignore + end, + Bool + end; + _Other -> % {value, {_Point, [inactive|_]}} | false + false + end. + +%% Called whenever evaluation enters break mode, informs attached +%% process and dbg_iserver +break(Expr, Bs, #ieval{level=Le,module=M}=Ieval) -> + Line = element(2, Expr), + dbg_iserver:cast(get(int), {set_status,self(),break,{M,Line}}), + tell_attached({break_at,M,Line,Le}), + handle_cmd(Bs, break, Ieval#ieval{line=Line}). + +%%-------------------------------------------------------------------- +%% handle_cmd(Bs0, Status, Ieval) -> Bs1 | {skip, Bs1} +%% Status = break | running | Le +%% In break mode, loop waiting for user commands (and handle other +%% messages meanwhile). +%% In other modes, handle other messages, if any. +%%-------------------------------------------------------------------- +handle_cmd(Bs, break, #ieval{level=Le}=Ieval) -> + receive + {user, {cmd, Cmd}} -> + dbg_iserver:cast(get(int), {set_status,self(),running,{}}), + tell_attached(running), + case Cmd of + step -> Bs; + next -> put(next_break, Le), Bs; + continue -> put(next_break, running), Bs; + finish -> put(next_break, Le-1), Bs; + skip -> {skip, Bs} + end; + {user, {eval, Cmd}} -> + Bs1 = eval_nonrestricted(Cmd, Bs, Ieval), + handle_cmd(Bs1, break, Ieval); + Msg -> + dbg_ieval:check_exit_msg(Msg, Bs, Ieval), + handle_msg(Msg, break, Bs, Ieval), + handle_cmd(Bs, break, Ieval) + end; +handle_cmd(Bs, Status, Ieval) -> + receive + Msg -> + dbg_ieval:check_exit_msg(Msg, Bs, Ieval), + handle_msg(Msg, Status, Bs, Ieval), + handle_cmd(Bs, Status, Ieval) + after 0 -> + Bs + end. + +%%==================================================================== +%% User control of process execution and settings +%%==================================================================== + +step(Meta) -> Meta ! {user, {cmd, step}}, ok. +next(Meta) -> Meta ! {user, {cmd, next}}, ok. +continue(Meta) -> Meta ! {user, {cmd, continue}}, ok. +finish(Meta) -> Meta ! {user, {cmd, finish}}, ok. +skip(Meta) -> Meta ! {user, {cmd, skip}}. + +timeout(Meta) -> Meta ! {user, timeout}. + +stop(Meta) -> Meta ! {user, {cmd, stop}}. + +eval(Meta, {Mod, Cmd}) -> + eval(Meta, {Mod, Cmd, nostack}); +eval(Meta, {Mod, Cmd, SP}) -> + Cmd2 = case lists:reverse(Cmd) of % Commands must end with ".\n" + [10,$.|_] -> Cmd; + [10|T] -> lists:reverse([10,$.|T]); + [$.|T] -> lists:reverse([10,$.|T]); + T -> lists:reverse([10,$.|T]) + end, + Meta ! {user, {eval, {self(), Mod, Cmd2, SP}}}. + +%% Tag Args +%% --- ---- +%% trace Bool +%% stack_trace Flag +set(Meta, Tag, Args) -> + Meta ! {user, {set, Tag, Args}}. + +%% Tag Args Reply +%% --- ---- ----- +%% bindings nostack | SP [{Var,Val}] (Var=atom(), Val=term()) +%% stack_frame {up|down, SP} [{Le,Where,Bs}] | top | bottom +%% (Where = {Mod,Li} +%% messages null [Msg] (Msg=term()) +%% backtrace all | N [{Le,MFA}] (MFA={M,F,Args}|{Fun,Args}) +get(Meta, Tag, Args) -> + Meta ! {user, {get, Tag, self(), Args}}, + receive + {Meta, Tag, Reply} -> Reply + end. + +%%-------------------------------------------------------------------- +%% handle_msg({int, Msg} | {user, Msg}, Status, Bs, Ieval) +%% Status = idle | exit_at | wait_at | wait_after_at +%% | break | running | Le | {Le,MFA} +%%-------------------------------------------------------------------- +handle_msg({int, Msg}, Status, Bs, Ieval) -> + handle_int_msg(Msg, Status, Bs, Ieval); +handle_msg({user, Msg}, Status, Bs, Ieval) -> + handle_user_msg(Msg, Status, Bs, Ieval); +handle_msg(Msg, Status, Bs, Ieval) -> + io:format("***WARNING*** Unexp msg ~p, info ~p~n", + [Msg,{Status,Bs,Ieval}]). + +%% handle_int_msg(Msg, Status, Bs, Ieval) +%% Msg = {attached, AttPid} | {detached, AttPid} +%% | {old_code, Mod} +%% | {new_break, Break} | {delete_break, Break} +%% | {break_options, {Break, Options}} +%% | no_break | {no_break, Mod} +%% | stop (only when Status==exit_at, means AttPid has terminated) +%% Interpreter internal messages (from dbg_iserver) +handle_int_msg({attached, AttPid}, Status, _Bs, + #ieval{level=Le,module=M,line=Line}) -> + + %% Update process dictionary + put(attached, AttPid), + put(next_break, break), + + %% Tell attached process in which module evalution is located + if + Le =:= 1 -> + tell_attached({attached, undefined, -1, get(trace)}); + true -> + tell_attached({attached, M, Line, get(trace)}), + + %% Give info about status and call level as well + %% In this case, Status cannot be exit_at + Msg = case Status of + idle -> {func_at,M,Line,Le}; + break -> {break_at,M,Line,Le}; + wait_at -> {wait_at,M,Line,Le}; + wait_after_at -> {wait_after_at,M,Line,Le}; + _ -> running % running | Le | {Le,MFA} + end, + tell_attached(Msg) + end; +handle_int_msg(detached, _Status, _Bs, _Ieval) -> + %% Update process dictionary + put(attached, undefined), + put(next_break, running), + put(trace, false); % no need for tracing if there is no AttPid +handle_int_msg({old_code,Mod}, Status, Bs, + #ieval{level=Le,module=M}=Ieval) -> + if + Status =:= idle, Le =:= 1 -> + erase(?DB_REF_KEY(Mod)), + put(cache, []); + true -> + case dbg_istk:in_use_p(Mod, M) of + true -> + %% A call to Mod is on the stack (or might be), + %% so we must terminate. + exit(get(self), kill), + dbg_ieval:exception(exit, old_code, Bs, Ieval); + false -> + erase(?DB_REF_KEY(Mod)), + put(cache, []) + end + end; +handle_int_msg({new_break, Break}, _Status, _Bs, _Ieval) -> + put(breakpoints, [Break | get(breakpoints)]); +handle_int_msg({delete_break, Point}, _Status, _Bs, _Ieval) -> + put(breakpoints, lists:keydelete(Point, 1, get(breakpoints))); +handle_int_msg({break_options, Break}, _Status, _Bs, _Ieval) -> + {Point, _Options} = Break, + put(breakpoints, lists:keyreplace(Point,1,get(breakpoints), Break)); +handle_int_msg(no_break, _Status, _Bs, _Ieval) -> + put(breakpoints, []); +handle_int_msg({no_break,M}, _Status, _Bs, _Ieval) -> + put(breakpoints, [B || {{Mod,_L},_Flags}=B <- get(breakpoints), + Mod =/= M]); +handle_int_msg(stop, exit_at, _Bs, _Ieval) -> + erlang:exit(normal). + +%% handle_user_msg(Msg, Status, Bs, Ieval) +%% Msg = {cmd, Cmd}, Cmd = step | next | continue | finish| skip| stop +%% | timeout +%% | {eval, {Pid, Mod, Str, SP}} +%% | {set, Tag, Args} | {get, Tag, Pid, Args} +%% Messages from the attached process +%% Msg = {cmd, Cmd}, Cmd /= stop, can only be received in break mode, +%% handled in handle_cmd/3 +%% Msg = timeout is handled when needed (when evaluating receive..after) +%% in dbg_ieval:do_receive/5 when Status==wait_after_at +%% For all other Status, it should be ignored +handle_user_msg({cmd, stop}, Status, _Bs, _Ieval) -> + case lists:member(Status, [running, wait_at, wait_after_at]) of + true -> + put(next_break, break); + false when is_integer(Status); is_tuple(Status) -> + put(next_break, break); + false -> % idle | exit_at (| break) + ignore + end; +handle_user_msg({cmd, continue}, Status, _Bs, _Ieval) -> + %% Allow leaving break mode when waiting in a receive + case lists:member(Status, [wait_at, wait_after_at]) of + true -> + put(next_break, running); + false -> + ignore + end; +handle_user_msg({cmd, _Cmd}, _Status, _Bs, _Ieval) -> + ignore; +handle_user_msg(timeout, _Status, _Bs, _Ieval) -> + ignore; +handle_user_msg({eval,Cmd}, wait_at, Bs, _Ieval) -> + eval_restricted(Cmd, Bs); +handle_user_msg({eval,Cmd}, wait_after_at, Bs, _Ieval) -> + eval_restricted(Cmd, Bs); +handle_user_msg({set,trace,Bool}, _Status, _Bs, _Ieval) -> + put(trace, Bool), + tell_attached({trace, Bool}); +handle_user_msg({set,stack_trace,Flag}, _Status, _Bs, _Ieval) -> + set_stack_trace(Flag); +handle_user_msg({get,bindings,From,SP}, _Status, Bs, _Ieval) -> + reply(From, bindings, bindings(Bs, SP)); +handle_user_msg({get,stack_frame,From,{Dir,SP}}, _Status, _Bs,_Ieval) -> + reply(From, stack_frame, dbg_istk:stack_frame(Dir, SP)); +handle_user_msg({get,messages,From,_}, _Status, _Bs, _Ieval) -> + reply(From, messages, messages()); +handle_user_msg({get,backtrace,From,N}, _Status, _Bs, Ieval) -> + reply(From, backtrace, dbg_istk:backtrace(N, Ieval)). + +set_stack_trace(true) -> + set_stack_trace(all); +set_stack_trace(Flag) -> + if + Flag =:= false -> + put(stack, []); + Flag =:= no_tail; Flag =:= all -> + ignore + end, + put(trace_stack, Flag), + tell_attached({stack_trace, Flag}). + +reply(From, Tag, Reply) -> + From ! {self(), Tag, Reply}. + +bindings(Bs, nostack) -> + Bs; +bindings(Bs, SP) -> + case dbg_istk:stack_level() of + Le when SP > Le -> + Bs; + _ -> + dbg_istk:bindings(SP) + end. + +messages() -> + {messages, Msgs} = erlang:process_info(get(self), messages), + Msgs. + +%%==================================================================== +%% Evaluating expressions within process context +%%==================================================================== + +eval_restricted({From,_Mod,Cmd,SP}, Bs) -> + case catch parse_cmd(Cmd, 1) of + {'EXIT', _Reason} -> + From ! {self(), {eval_rsp, 'Parse error'}}; + [{var,_,Var}] -> + Bs2 = bindings(Bs, SP), + Res = case get_binding(Var, Bs2) of + {value, Value} -> Value; + unbound -> unbound + end, + From ! {self(), {eval_rsp, Res}}; + _Forms -> + Rsp = 'Only possible to inspect variables', + From ! {self(), {eval_rsp, Rsp}} + end. + +eval_nonrestricted({From,Mod,Cmd,SP}, Bs, #ieval{level=Le}) when SP < Le-> + %% Evaluate in stack + _ = eval_restricted({From, Mod, Cmd, SP}, Bs), + Bs; +eval_nonrestricted({From, _Mod, Cmd, _SP}, Bs, + #ieval{level=Le,module=M,line=Line}=Ieval) -> + case catch parse_cmd(Cmd, Line) of + {'EXIT', _Reason} -> + From ! {self(), {eval_rsp, 'Parse error'}}, + Bs; + Forms -> + mark_running(Line, Le), + {Res, Bs1} = + lists:foldl(fun(Expr, {_Res, Bs0}) -> + eval_nonrestricted_1(Expr,Bs0,Ieval) + end, + {null, Bs}, + Forms), + mark_break(M, Line, Le), + From ! {self(), {eval_rsp, Res}}, + Bs1 + end. + +eval_nonrestricted_1({match,_,{var,_,Var},Expr}, Bs, Ieval) -> + {Res,Bs2} = eval_expr(Expr, Bs, Ieval), + Bs3 = case lists:keyfind(Var, 1, Bs) of + {Var,_Value} -> + lists:keyreplace(Var, 1, Bs2, {Var,Res}); + false -> [{Var,Res} | Bs2] + end, + {Res,Bs3}; +eval_nonrestricted_1({var,_,Var}, Bs, _Ieval) -> + Res = case lists:keyfind(Var, 1, Bs) of + {Var, Value} -> Value; + false -> unbound + end, + {Res,Bs}; +eval_nonrestricted_1(Expr, Bs, Ieval) -> + eval_expr(Expr, Bs, Ieval). + +eval_expr(Expr, Bs, Ieval) -> + {value,Res,Bs2} = + dbg_ieval:eval_expr(Expr, Bs, Ieval#ieval{top=false}), + {Res,Bs2}. + +mark_running(LineNo, Le) -> + put(next_break, running), + put(user_eval, [{LineNo, Le} | get(user_eval)]), + dbg_iserver:cast(get(int), {set_status, self(), running, {}}), + tell_attached(running). + +mark_break(Cm, LineNo, Le) -> + put(next_break, break), + put(user_eval, tl(get(user_eval))), + tell_attached({break_at, Cm, LineNo, Le}), + dbg_iserver:cast(get(int), {set_status,self(),break,{Cm,LineNo}}). + +parse_cmd(Cmd, LineNo) -> + {ok,Tokens,_} = erl_scan:string(Cmd, LineNo, [text]), + {ok,Forms} = erl_eval:extended_parse_exprs(Tokens), + Forms. + +%%==================================================================== +%% Library functions for attached process handling +%%==================================================================== + +tell_attached(Msg) -> + case get(attached) of + undefined -> ignore; + AttPid -> + AttPid ! {self(), Msg}, + ignore + end. + +%%==================================================================== +%% get_binding/2 +%%==================================================================== + +get_binding(Var, Bs) -> + case lists:keyfind(Var, 1, Bs) of + {Var, Value} -> {value, Value}; + false -> unbound + end. diff --git a/debugger/erlide_debugger_27/src/dbg_idb.erl b/debugger/erlide_debugger_27/src/dbg_idb.erl new file mode 100644 index 0000000..7afaebf --- /dev/null +++ b/debugger/erlide_debugger_27/src/dbg_idb.erl @@ -0,0 +1,56 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2024. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(dbg_idb). +-moduledoc false. + +%% External exports +-export([insert/3, lookup/2, match_object/2]). + +%%==================================================================== +%% External exports +%%==================================================================== + +insert(DbRef, Key, Value) -> + case DbRef of + {Node, ModDb} -> + rpc:block_call(Node, ets, insert, [ModDb, {Key, Value}]); + ModDb -> + ets:insert(ModDb, {Key, Value}) + end. + +lookup(DbRef, Key) -> + Res = case DbRef of + {Node, ModDb} -> + rpc:block_call(Node, ets, lookup, [ModDb, Key]); + ModDb -> + ets:lookup(ModDb, Key) + end, + case Res of + [{Key, Value}] -> {ok, Value}; + _ -> not_found + end. + +match_object(DbRef, Key) -> + case DbRef of + {Node, ModDb} -> + rpc:block_call(Node, ets, match_object, [ModDb, Key]); + ModDb -> + ets:match_object(ModDb, Key) + end. diff --git a/debugger/erlide_debugger_27/src/dbg_ieval.erl b/debugger/erlide_debugger_27/src/dbg_ieval.erl new file mode 100644 index 0000000..60a3dc8 --- /dev/null +++ b/debugger/erlide_debugger_27/src/dbg_ieval.erl @@ -0,0 +1,1960 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2024. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(dbg_ieval). +-moduledoc false. + +-export([eval/3,exit_info/5]). +-export([eval_expr/3]). +-export([check_exit_msg/3,exception/4]). + +-include("dbg_ieval.hrl"). + +%%==================================================================== +%% External exports +%%==================================================================== + +%%-------------------------------------------------------------------- +%% eval(Mod, Func, Args) -> Meta +%% Mod = Func = atom() +%% Args = [term()] +%% MFA = {Mod,Func,Args} | {Mod,Func,Arity} | {Fun,Args} +%% Arity = integer() +%% Meta = pid() +%% Entry point from debugged process (dbg_debugged). +%% Immediately returns the pid for the meta process. +%% The evaluated value will later be sent as a message to +%% the calling process. +%%-------------------------------------------------------------------- +eval(Mod, Func, Args) -> + Debugged = self(), + Int = dbg_iserver:find(), + case dbg_iserver:call(Int, {get_meta,Debugged}) of + {ok,Meta} -> + Meta ! {re_entry, Debugged, {eval,{Mod,Func,Args}}}, + Meta; + {error,not_interpreted} -> + spawn(fun() -> + meta(Int, Debugged, Mod, Func, Args) + end) + end. + +%%-------------------------------------------------------------------- +%% exit_info(Int, AttPid, OrigPid, Reason, ExitInfo) +%% Int = AttPid = OrigPid = pid() +%% Reason = term() +%% ExitInfo = {{Mod,Line}, Bs, Stack} | {} +%% Meta process started when attaching to a terminated process. +%% Spawned (by dbg_iserver) in response to user request. +%%-------------------------------------------------------------------- +exit_info(Int, AttPid, OrigPid, Reason, ExitInfo) -> + put(int, Int), + put(attached, AttPid), + put(breakpoints, dbg_iserver:call(Int, all_breaks)), + put(self, OrigPid), + put(exit_info, ExitInfo), + + case ExitInfo of + {{Mod,Line},Bs,S} -> + dbg_istk:from_external(S), + Le = dbg_istk:stack_level(), + dbg_icmd:tell_attached({exit_at, {Mod, Line}, Reason, Le}), + exit_loop(OrigPid, Reason, Bs,#ieval{module=Mod,line=Line}); + {} -> + dbg_istk:init(), + dbg_icmd:tell_attached({exit_at, null, Reason, 1}), + exit_loop(OrigPid, Reason, erl_eval:new_bindings(),#ieval{}) + end. + +%%-------------------------------------------------------------------- +%% eval_expr(Expr, Bs, Ieval) -> {value, Value, Bs} +%% +%% Evaluate a shell expression in the real process. +%% Called (dbg_icmd) in response to a user request. +%%-------------------------------------------------------------------- +eval_expr(Expr0, Bs, Ieval) -> + + %% Save current exit info + ExitInfo = get(exit_info), + Stacktrace = get(stacktrace), + + Expr = expand_records(Expr0, Ieval#ieval.module), + + %% Emulate a surrounding catch + try debugged_cmd({eval,Expr,Bs}, Bs, Ieval) + catch + Class:Reason -> + Result = case Class of + throw -> Reason; + _ -> {'EXIT', Reason} + end, + + %% Reset exit info + put(exit_info, ExitInfo), + put(stacktrace, Stacktrace), + + {value, Result, Bs} + end. + +%%-------------------------------------------------------------------- +%% check_exit_msg(Msg, Bs, Ieval) +%% Msg = term() +%% Check if Msg is an 'EXIT' msg from the iserver or a 'DOWN' msg +%% from the debugged process. If so exit with correct reason. +%%-------------------------------------------------------------------- +check_exit_msg({'EXIT', Int, Reason}, _Bs, #ieval{level=Le}) -> + %% This *must* be interpreter which has terminated, + %% we are not linked to anyone else + if + Le =:= 1 -> + exit(Reason); + Le > 1 -> + exit({Int, Reason}) + end; +check_exit_msg({'DOWN',_,_,_,Reason}, Bs, + #ieval{level=Le, module=Mod, line=Li}) -> + %% This *must* be Debugged which has terminated, + %% we are not monitoring anyone else + + %% Inform Int about current position, bindings and stack + ExitInfo = + case get(exit_info) of + + %% Debugged has been terminated by someone + %% - really the position, bindings and stack are of no + %% importance in this case + %% If we don't save them, however, post-mortem analysis + %% of the process isn't possible + undefined when Le =:= 1 -> % died outside interpreted code + {}; + undefined when Le > 1 -> + StackExternal = (dbg_istk:delayed_to_external())(), + {{Mod, Li}, Bs, StackExternal}; + + %% Debugged has terminated due to an exception + ExitInfo0 when is_function(ExitInfo0, 0) -> + ExitInfo0() + end, + dbg_iserver:cast(get(int), {set_exit_info,self(),ExitInfo}), + + if + Le =:= 1 -> + exit(Reason); + Le > 1 -> + exit({get(self), Reason}) + end; +check_exit_msg(_Msg, _Bs, _Ieval) -> + ignore. + +%%-------------------------------------------------------------------- +%% exception(Class, Reason, Bs, Ieval) +%% Class = error | exit | throw +%% Reason = term() +%% Bs = bindings() +%% Ieval = #ieval{} +%% Store information about where in the code the error is located +%% and then raise the exception. +%%-------------------------------------------------------------------- +exception(Class, Reason, Bs, Ieval) -> + exception(Class, Reason, Bs, Ieval, false). + +exception(Class, Reason, Bs, Ieval, false) -> + do_exception(Class, Reason, + dbg_istk:delayed_stacktrace(no_args, Ieval), + Bs, Ieval); +exception(Class, Reason, Bs, Ieval, true) -> + do_exception(Class, Reason, + dbg_istk:delayed_stacktrace(include_args, Ieval), + Bs, Ieval). + +do_exception(Class, Reason, Stacktrace, Bs, #ieval{module=M, line=Line}) -> + StackFun = dbg_istk:delayed_to_external(), + ExitInfo = fun() -> + {{M,Line},Bs,StackFun()} + end, + put(exit_info, ExitInfo), + put(stacktrace, Stacktrace), + erlang:Class(Reason). + +%%==================================================================== +%% Internal functions +%%==================================================================== + +%%--Loops------------------------------------------------------------- + +%% Entry point for first-time initialization of meta process +meta(Int, Debugged, M, F, As) -> + process_flag(trap_exit, true), + erlang:monitor(process, Debugged), + + %% Inform dbg_iserver, get the initial status in return + Pargs = case {M, F} of + %% If it's a fun we're evaluating, show a text + %% representation of the fun and its arguments, + %% not dbg_ieval:eval_fun(...) + {dbg_ieval, EvalFun} when EvalFun =:= eval_fun; + EvalFun =:= eval_named_fun -> + {Mx, Fx} = lists:last(As), + {Mx, Fx, lists:nth(2, As)}; + _ -> + {M, F, As} + end, + Status = dbg_iserver:call(Int, {new_process,Debugged,self(),Pargs}), + + %% Initiate process dictionary + put(int, Int), % pid() dbg_iserver + put(attached, undefined),% pid() attached process + put(breakpoints, dbg_iserver:call(Int, all_breaks)), + put(cache, []), + put(next_break, Status), % break | running (other values later) + put(self, Debugged), % pid() interpreted process + dbg_istk:init(), + put(stacktrace, []), + put(trace_stack, dbg_iserver:call(Int, get_stack_trace)), + put(trace, false), % bool() Trace on/off + put(user_eval, []), + + Session = trace:session_create(debugger, self(), []), + put(trace_session, Session), + + %% Send the result of the meta process + Ieval = #ieval{}, + Debugged ! {sys, self(), eval_mfa(Debugged,M,F,As,Ieval)}, + + dbg_iserver:cast(Int, {set_status, self(), idle, {}}), + dbg_icmd:tell_attached(idle), + + meta_loop(Debugged, erl_eval:new_bindings(), Ieval). + +debugged_cmd(Cmd, Bs, Ieval) -> + Debugged = get(self), + Debugged ! {sys, self(), {command,Cmd}}, + meta_loop(Debugged, Bs, Ieval). + +meta_loop(Debugged, Bs, #ieval{level=Le} = Ieval) -> + receive + + %% The following messages can only be received when Meta is + %% waiting for Debugged to evaluate non-interpreted code + %% or a Bif. Le>1 + {sys, Debugged, {value,Val}} -> + {value, Val, Bs}; + {sys, Debugged, {value,Val,Bs2}} -> + {value, Val, merge_bindings(Bs2, Bs, Ieval)}; + {sys, Debugged, {exception,{Class,Reason,Stk}}} -> + case get(exit_info) of + + %% Error occurred outside of interpreted code. + undefined -> + MakeStk0 = dbg_istk:delayed_stacktrace(), + MakeStk = fun(Depth0) -> + Depth = max(0, Depth0 - length(Stk)), + Stk ++ MakeStk0(Depth) + end, + do_exception(Class, Reason, MakeStk, Bs, Ieval); + + %% Error must have occurred within a re-entry to + %% interpreted code, simply raise the exception + _ -> + erlang:Class(Reason) + end; + + %% Re-entry to Meta from non-interpreted code + {re_entry, Debugged, {eval,{M,F,As}}} when Le =:= 1 -> + %% Reset process dictionary + %% This is really only necessary if the process left + %% interpreted code at a call level > 1 + dbg_istk:init(), + put(stacktrace, []), + put(exit_info, undefined), + + dbg_iserver:cast(get(int), {set_status,self(),running,{}}), + dbg_icmd:tell_attached(running), + + %% Tell attached process(es) to update source code. + dbg_icmd:tell_attached({re_entry,M,F}), + + %% Send the result of the meta process + Debugged ! {sys,self(),eval_mfa(Debugged,M,F,As,Ieval)}, + + dbg_iserver:cast(get(int), {set_status,self(),idle,{}}), + dbg_icmd:tell_attached(idle), + meta_loop(Debugged, Bs, Ieval); + + %% Evaluation in Debugged results in call to interpreted + %% function (probably? a fun) + {re_entry, Debugged, {eval,{M,F,As}}} when Le>1 -> + Ieval2 = Ieval#ieval{module=undefined, line=-1}, + Debugged ! {sys,self(),eval_mfa(Debugged,M,F,As,Ieval2)}, + meta_loop(Debugged, Bs, Ieval); + + Msg -> + check_exit_msg(Msg, Bs, Ieval), + dbg_icmd:handle_msg(Msg, idle, Bs, Ieval), + meta_loop(Debugged, Bs, Ieval) + end. + +exit_loop(OrigPid, Reason, Bs, Ieval) -> + receive + Msg -> + check_exit_msg(Msg, Bs, Ieval), + dbg_icmd:handle_msg(Msg, exit_at, Bs, Ieval), + exit_loop(OrigPid, Reason, Bs, Ieval) + end. + +%%--Trace function---------------------------------------------------- + +%%-------------------------------------------------------------------- +%% trace(What, Args) +%% What = send | receivex | received | call | return | bif +%% Args depends on What, see the code. +%%-------------------------------------------------------------------- +trace(What, Args) -> + trace(What, Args, get(trace)). + +trace(return, {_Le,{dbg_apply,_,_,_}}, _Bool) -> + ignore; +trace(What, Args, true) -> + Fun = fun(P) -> format_trace(What, Args, P) end, + dbg_icmd:tell_attached({trace_output, Fun}); +trace(_What, _Args, false) -> + ignore. + +format_trace(What, Args, P) -> + case What of + send -> + {To,Msg} = Args, + io_lib:format("==> ~w : "++P++"~n", [To, Msg]); + receivex -> + {Le, TimeoutP} = Args, + Tail = case TimeoutP of + true -> "with timeout~n"; + false -> "~n" + end, + io_lib:format(" (~w) receive " ++ Tail, [Le]); + + received when Args =:= null -> + io_lib:format("~n", []); + received -> % Args=Msg + io_lib:format("~n<== "++P++"~n", [Args]); + + call -> + {Called, {Le,Li,M,F,As}} = Args, + case Called of + extern -> + io_lib:format("++ (~w) <~w> ~w:~tw~ts~n", + [Le,Li,M,F,format_args(As, P)]); + local -> + io_lib:format("++ (~w) <~w> ~tw~ts~n", + [Le,Li,F,format_args(As, P)]) + end; + call_fun -> + {Le,Li,F,As} = Args, + io_lib:format("++ (~w) <~w> ~tw~ts~n", + [Le, Li, F, format_args(As, P)]); + return -> + {Le,Val} = Args, + io_lib:format("-- (~w) "++P++"~n", [Le, Val]); + + + bif -> + {Le,Li,M,F,As} = Args, + io_lib:format("++ (~w) <~w> ~w:~tw~ts~n", + [Le, Li, M, F, format_args(As, P)]) + end. + +format_args(As, P) when is_list(As) -> + [$(,format_args1(As, P),$)]; +format_args(A, P) -> + [$/,io_lib:format(P, [A])]. + +format_args1([A], P) -> + [io_lib:format(P, [A])]; +format_args1([A|As], P) -> + [io_lib:format(P, [A]),$,|format_args1(As, P)]; +format_args1([], _) -> + []. + +%%--Other useful functions-------------------------------------------- + +%% Mimic catch behaviour +catch_value(error, Reason) -> + {'EXIT',{Reason,get_stacktrace()}}; +catch_value(exit, Reason) -> + {'EXIT',Reason}; +catch_value(throw, Reason) -> + Reason. + +%%--Code interpretation----------------------------------------------- + +%%-------------------------------------------------------------------- +%% Top level function of meta evaluator. +%% Return message to be replied to the target process. +%%-------------------------------------------------------------------- +eval_mfa(Debugged, M, F, As, #ieval{level=Le}=Ieval0) -> + Int = get(int), + Bs = erl_eval:new_bindings(), + Ieval = Ieval0#ieval{level=Le+1,top=true}, + try do_eval_function(M, F, As, Bs, extern, Ieval) of + {value, Val, _Bs} -> + trace(return, {Le,Val}), + {ready, Val} + catch + exit:{Debugged, Reason} -> + exit(Reason); + exit:{Int, Reason} -> + exit(Reason); + Class:Reason -> + {exception, {Class, Reason, get_stacktrace()}} + end. + +eval_function(Mod, Name, As, Bs, Called, Ieval0, Lc) -> + Tail = Lc andalso get(trace_stack) =:= no_tail, + case Tail of + false -> + Ieval = dbg_istk:push(Bs, Ieval0, Lc), + {value,Val,_} = do_eval_function(Mod, Name, As, Bs, Called, Ieval), + dbg_istk:pop(), + trace(return, {Ieval#ieval.level,Val}), + {value,Val,Bs}; + true -> + do_eval_function(Mod, Name, As, Bs, Called, Ieval0) + end. + +do_eval_function(Mod, Fun, As0, Bs0, _, Ieval0) when is_function(Fun); + Mod =:= ?MODULE, + Fun =:= eval_fun orelse + Fun =:= eval_named_fun -> + #ieval{level=Le,line=Li,top=Top} = Ieval0, + case lambda(Fun, As0) of + {[{clause,Fc,_,_,_}|_]=Cs,Module,Name,As,Bs} -> + Ieval = Ieval0#ieval{module=Module,function=Name, + arguments=As0,line=Fc}, + trace(call_fun, {Le,Li,Name,As}), + fnk_clauses(Cs, As, Bs, Ieval); + + not_interpreted when Top -> % We are leaving interpreted code + trace(call_fun, {Le,Li,Fun,As0}), + {value, {dbg_apply,erlang,apply,[Fun,As0]}, Bs0}; + not_interpreted -> + trace(call_fun, {Le,Li,Fun,As0}), + debugged_cmd({apply,erlang,apply,[Fun,As0]}, Bs0, Ieval0); + + {error,Reason} -> + %% It's ok not to push anything in this case, the error + %% reason contains information about the culprit + %% ({badarity,{{Mod,Name},As}}) + exception(error, Reason, Bs0, Ieval0) + end; + +do_eval_function(Mod, Name, As0, Bs0, Called, Ieval0) -> + #ieval{level=Le,line=Li,top=Top} = Ieval0, + trace(call, {Called, {Le,Li,Mod,Name,As0}}), + Ieval = Ieval0#ieval{module=Mod,function=Name,arguments=As0}, + case get_function(Mod, Name, As0, Called) of + [{clause,FcLine,_,_,_}|_]=Cs -> + fnk_clauses(Cs, As0, erl_eval:new_bindings(), + Ieval#ieval{line=FcLine}); + + not_interpreted when Top -> % We are leaving interpreted code + {value, {dbg_apply,Mod,Name,As0}, Bs0}; + not_interpreted -> + debugged_cmd({apply,Mod,Name,As0}, Bs0, Ieval); + + undef -> + exception(error, undef, Bs0, Ieval, true) + end. + +lambda(eval_fun, [Cs,As,Bs,{Mod,Name}=F]) -> + %% Fun defined in interpreted code, called from outside + if + length(element(3,hd(Cs))) =:= length(As) -> + db_ref(Mod), %% Adds ref between module and process + {Cs,Mod,Name,As,Bs}; + true -> + {error,{badarity,{F,As}}} + end; +lambda(eval_named_fun, [Cs,As,Bs0,FName,RF,{Mod,Name}=F]) -> + %% Fun defined in interpreted code, called from outside + if + length(element(3,hd(Cs))) =:= length(As) -> + db_ref(Mod), %% Adds ref between module and process + Bs1 = add_binding(FName, RF, Bs0), + {Cs,Mod,Name,As,Bs1}; + true -> + {error,{badarity,{F,As}}} + end; +lambda(Fun, As) when is_function(Fun) -> + %% Fun called from within interpreted code... + case erlang:fun_info(Fun, module) of + + %% ... and the fun was defined in interpreted code + {module, ?MODULE} -> + {Mod,Name,Bs, Cs} = + case erlang:fun_info(Fun, env) of + {env,[{{M,F},Bs0,Cs0}]} -> + {M,F,Bs0, Cs0}; + {env,[{{M,F},Bs0,Cs0,FName}]} -> + {M,F,add_binding(FName, Fun, Bs0), Cs0} + end, + {arity, Arity} = erlang:fun_info(Fun, arity), + if + length(As) =:= Arity -> + db_ref(Mod), %% Adds ref between module and process + {Cs,Mod,Name,As,Bs}; + true -> + {error,{badarity,{Fun,As}}} + end; + + %% ... and the fun was defined outside interpreted code + _ -> + not_interpreted + end. + +get_function(Mod, Name, Args, local) -> + Arity = length(Args), + Key = {Mod,Name,Arity}, + case cached(Key) of + false -> + DbRef = db_ref(Mod), + case dbg_idb:match_object(DbRef, {{Mod,Name,Arity,'_'},'_'}) of + [{{Mod,Name,Arity,Exp},Clauses}] -> + cache(Key, {Exp,Clauses}), + Clauses; + _ -> undef + end; + {_Exp,Cs} -> Cs + end; +get_function(Mod, Name, Args, extern) -> + Arity = length(Args), + Key = {Mod,Name,Arity}, + case cached(Key) of + false -> + case db_ref(Mod) of + not_found -> not_interpreted; + DbRef -> + case dbg_idb:lookup(DbRef, {Mod,Name,Arity,true}) of + {ok,Data} -> + cache(Key, {true,Data}), + Data; + not_found -> + case dbg_idb:lookup(DbRef, module) of + {ok,_} -> undef; + not_found -> not_interpreted + end + end + end; + {true,Cs} -> Cs; + {false,_} -> undef + end. + +db_ref(Mod) -> + case get(?DB_REF_KEY(Mod)) of + undefined -> + case dbg_iserver:call(get(int), + {get_module_db, Mod, get(self)}) of + not_found -> + not_found; + ModDb -> + Node = node(get(int)), + DbRef = if + Node =/= node() -> {Node,ModDb}; + true -> ModDb + end, + put(?DB_REF_KEY(Mod), DbRef), + DbRef + end; + DbRef -> + DbRef + end. + +cache(Key, Data) -> + put(cache, lists:sublist([{Key,Data}|get(cache)], 5)). + +cached(Key) -> + case lists:keyfind(Key, 1, get(cache)) of + {Key,Data} -> Data; + false -> false + end. + +%% Try to find a matching function clause +%% #ieval.level is set, the other fields must be set in this function +fnk_clauses([{clause,Line,Pars,Gs,Body}|Cs], As, Bs0, Ieval) -> + case head_match(Pars, As, [], Bs0) of + {match,Bs1} -> + Bs = add_bindings(Bs1, Bs0), + case guard(Gs, Bs) of + true -> + seq(Body, Bs, Ieval#ieval{line=Line}); + false -> + fnk_clauses(Cs, As, Bs0, Ieval) + end; + nomatch -> + fnk_clauses(Cs, As, Bs0, Ieval) + end; +fnk_clauses([], _As, Bs, Ieval) -> + exception(error, function_clause, Bs, Ieval, true). + +seq([E], Bs0, Ieval) -> + case dbg_icmd:cmd(E, Bs0, Ieval) of + {skip,Bs} -> + {value,skipped,Bs}; + Bs -> + expr(E, Bs, Ieval) + end; +seq([E|Es], Bs0, Ieval) -> + case dbg_icmd:cmd(E, Bs0, Ieval) of + {skip,Bs} -> + seq(Es, Bs, Ieval); + Bs1 -> + case expr(E, Bs1, Ieval#ieval{top=false}) of + {value,_,Bs} -> + seq(Es, Bs, Ieval); + {bad_maybe_match,_}=Bad -> + Bad + end + end; +seq([], Bs, _) -> + {value,true,Bs}. + +%% Variable +expr({var,Line,V}, Bs, Ieval) -> + case binding(V, Bs) of + {value,Val} -> + {value,Val,Bs}; + unbound -> + exception(error, {unbound,V}, Bs, Ieval#ieval{line=Line}) + end; + +expr({value,_,Val}, Bs, _Ieval) -> + {value,Val,Bs}; +expr({value,Val}, Bs, _Ieval) -> % Special case straight values + {value,Val,Bs}; + +%% List +expr({cons,Line,H0,T0}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line,top=false}, + {value,H,Bs1} = expr(H0, Bs0, Ieval), + {value,T,Bs2} = expr(T0, Bs0, Ieval), + {value,[H|T],merge_bindings(Bs2, Bs1, Ieval)}; + +%% Tuple +expr({tuple,Line,Es0}, Bs0, Ieval) -> + {Vs,Bs} = eval_list(Es0, Bs0, Ieval#ieval{line=Line}), + {value,list_to_tuple(Vs),Bs}; + +%% Map +expr({map,Line,Fs}, Bs0, Ieval) -> + {Map,Bs} = eval_new_map_fields(Fs, Bs0, Ieval#ieval{line=Line,top=false}, + fun expr/3), + {value,Map,Bs}; +expr({map,Line,E0,Fs0}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line,top=false}, + {value,E,Bs1} = expr(E0, Bs0, Ieval), + {Fs,Bs2} = eval_map_fields(Fs0, Bs0, Ieval), + _ = maps:put(k, v, E), %Validate map. + Value = lists:foldl(fun ({map_assoc,K,V}, Mi) -> maps:put(K,V,Mi); + ({map_exact,K,V}, Mi) -> maps:update(K,V,Mi) + end, E, Fs), + {value,Value,merge_bindings(Bs2, Bs1, Ieval)}; + +%% Record update +expr({record_update,Line,Es},Bs,#ieval{level=Le}=Ieval0) -> + %% Incr Level, we don't need to step (next) through temp + %% variables creation and matching + Ieval = Ieval0#ieval{top=false, line=Line, level=Le+1}, + Seq = fun(E, {_, _, Bs1}) -> expr(E, Bs1, Ieval) end, + {value,Value,Bs1} = lists:foldl(Seq, {value, true, Bs}, Es), + {value,Value,remove_temporary_bindings(Bs1)}; + +%% A block of statements +expr({block,Line,Es},Bs,Ieval) -> + seq(Es, Bs, Ieval#ieval{line=Line}); + +%% Catch statement +expr({'catch',Line,Expr}, Bs0, Ieval) -> + try expr(Expr, Bs0, Ieval#ieval{line=Line, top=false}) + catch + Class:Reason -> + %% Exception caught, reset exit info + put(exit_info, undefined), + dbg_istk:pop(Ieval#ieval.level), + Value = catch_value(Class, Reason), + trace(return, {Ieval#ieval.level,Value}), + {value, Value, Bs0} + end; + +%% Try-catch statement +expr({'try',Line,Es,CaseCs,CatchCs,[]}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + try seq(Es, Bs0, Ieval#ieval{top=false}) of + {value,Val,Bs} = Value -> + case CaseCs of + [] -> Value; + _ -> + case_clauses(Val, CaseCs, Bs, try_clause, Ieval) + end + catch + Class:Reason when CatchCs =/= [] -> + catch_clauses({Class,Reason,get_stacktrace()}, CatchCs, Bs0, Ieval) + end; +expr({'try',Line,Es,CaseCs,CatchCs,As}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + try seq(Es, Bs0, Ieval#ieval{top=false}) of + {value,Val,Bs} = Value -> + case CaseCs of + [] -> Value; + _ -> + case_clauses(Val, CaseCs, Bs, try_clause, Ieval) + end + catch + Class:Reason when CatchCs =/= [] -> + catch_clauses({Class,Reason,get_stacktrace()}, CatchCs, Bs0, Ieval) + after + seq(As, Bs0, Ieval#ieval{top=false}) + end; + +%% Case statement +expr({'case',Line,E,Cs}, Bs0, Ieval) -> + {value,Val,Bs} = + expr(E, Bs0, Ieval#ieval{line=Line, top=false}), + case_clauses(Val, Cs, Bs, case_clause, Ieval#ieval{line=Line}); + +%% If statement +expr({'if',Line,Cs}, Bs, Ieval) -> + if_clauses(Cs, Bs, Ieval#ieval{line=Line}); + +%% Andalso/orelse +expr({'andalso',Line,E1,E2}, Bs0, Ieval) -> + case expr(E1, Bs0, Ieval#ieval{line=Line, top=false}) of + {value,false,_}=Res -> + Res; + {value,true,Bs} -> + {value,Val,_} = expr(E2, Bs, Ieval#ieval{line=Line, top=false}), + {value,Val,Bs}; + {value,Val,Bs} -> + exception(error, {badarg,Val}, Bs, Ieval) + end; +expr({'orelse',Line,E1,E2}, Bs0, Ieval) -> + case expr(E1, Bs0, Ieval#ieval{line=Line, top=false}) of + {value,true,_}=Res -> + Res; + {value,false,Bs} -> + {value,Val,_} = expr(E2, Bs, Ieval#ieval{line=Line, top=false}), + {value,Val,Bs}; + {value,Val,Bs} -> + exception(error, {badarg,Val}, Bs, Ieval) + end; + +%% Maybe statement without else +expr({'maybe',Line,Es}, Bs, Ieval) -> + case seq(Es, Bs, Ieval#ieval{line=Line}) of + {bad_maybe_match,Val} -> + {value,Val,Bs}; + {value,_,_}=Other -> + Other + end; + +%% Maybe statement with else +expr({'maybe',Line,Es,Cs}, Bs, Ieval) -> + case seq(Es, Bs, Ieval#ieval{line=Line}) of + {bad_maybe_match,Val} -> + case_clauses(Val, Cs, Bs, else_clause, Ieval#ieval{line=Line}); + {value,_,_}=Other -> + Other + end; + +%% Matching expression +expr({match,Line,Lhs,Rhs0}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {value,Rhs,Bs1} = expr(Rhs0, Bs0, Ieval#ieval{top=false}), + case match(Lhs, Rhs, Bs1) of + {match,Bs} -> + {value,Rhs,Bs}; + nomatch -> + exception(error, {badmatch,Rhs}, Bs1, Ieval) + end; + +%% Conditional match expression (?=) +expr({maybe_match,Line,Lhs,Rhs0}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {value,Rhs,Bs1} = expr(Rhs0, Bs0, Ieval#ieval{top=false}), + case match(Lhs, Rhs, Bs1) of + {match,Bs} -> + {value,Rhs,Bs}; + nomatch -> + {bad_maybe_match,Rhs} + end; + +%% Construct a fun +expr({make_fun,Line,Name,Cs}, Bs, #ieval{module=Module}=Ieval) -> + Arity = length(element(3,hd(Cs))), + Info = {{Module,Name},Bs,Cs}, + Fun = + case Arity of + 0 -> fun() -> eval_fun([], Info) end; + 1 -> fun(A) -> eval_fun([A], Info) end; + 2 -> fun(A,B) -> eval_fun([A,B], Info) end; + 3 -> fun(A,B,C) -> eval_fun([A,B,C], Info) end; + 4 -> fun(A,B,C,D) -> eval_fun([A,B,C,D], Info) end; + 5 -> fun(A,B,C,D,E) -> eval_fun([A,B,C,D,E], Info) end; + 6 -> fun(A,B,C,D,E,F) -> eval_fun([A,B,C,D,E,F], Info) end; + 7 -> fun(A,B,C,D,E,F,G) -> + eval_fun([A,B,C,D,E,F,G], Info) end; + 8 -> fun(A,B,C,D,E,F,G,H) -> + eval_fun([A,B,C,D,E,F,G,H], Info) end; + 9 -> fun(A,B,C,D,E,F,G,H,I) -> + eval_fun([A,B,C,D,E,F,G,H,I], Info) end; + 10 -> fun(A,B,C,D,E,F,G,H,I,J) -> + eval_fun([A,B,C,D,E,F,G,H,I,J], Info) end; + 11 -> fun(A,B,C,D,E,F,G,H,I,J,K) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K], Info) end; + 12 -> fun(A,B,C,D,E,F,G,H,I,J,K,L) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L], Info) end; + 13 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M], Info) end; + 14 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N], Info) end; + 15 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O], Info) end; + 16 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P], Info) end; + 17 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q], Info) end; + 18 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R], Info) end; + 19 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S],Info) end; + 20 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T) -> + eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T],Info) end; + _Other -> + exception(error, {'argument_limit',{'fun',Cs}}, Bs, + Ieval#ieval{line=Line}) + end, + {value,Fun,Bs}; + +%% Construct a fun +expr({make_named_fun,Line,Name,FName,Cs}, Bs, #ieval{module=Module}=Ieval) -> + Arity = length(element(3,hd(Cs))), + Info = {{Module,Name},Bs,Cs,FName}, + Fun = + case Arity of + 0 -> fun RF() -> eval_named_fun([], RF, Info) end; + 1 -> fun RF(A) -> eval_named_fun([A], RF, Info) end; + 2 -> fun RF(A,B) -> + eval_named_fun([A,B], RF, Info) end; + 3 -> fun RF(A,B,C) -> + eval_named_fun([A,B,C], RF, Info) end; + 4 -> fun RF(A,B,C,D) -> + eval_named_fun([A,B,C,D], RF, Info) end; + 5 -> fun RF(A,B,C,D,E) -> + eval_named_fun([A,B,C,D,E], + RF, Info) end; + 6 -> fun RF(A,B,C,D,E,F) -> + eval_named_fun([A,B,C,D,E,F], + RF, Info) end; + 7 -> fun RF(A,B,C,D,E,F,G) -> + eval_named_fun([A,B,C,D,E,F,G], + RF, Info) end; + 8 -> fun RF(A,B,C,D,E,F,G,H) -> + eval_named_fun([A,B,C,D,E,F,G,H], + RF, Info) end; + 9 -> fun RF(A,B,C,D,E,F,G,H,I) -> + eval_named_fun([A,B,C,D,E,F,G,H,I], + RF, Info) end; + 10 -> fun RF(A,B,C,D,E,F,G,H,I,J) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J], + RF, Info) end; + 11 -> fun RF(A,B,C,D,E,F,G,H,I,J,K) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K], + RF, Info) end; + 12 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L], + RF, Info) end; + 13 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M], + RF, Info) end; + 14 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N], + RF, Info) end; + 15 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O], + RF, Info) end; + 16 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P], + RF, Info) end; + 17 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q], + RF, Info) end; + 18 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q, + R], + RF, Info) end; + 19 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q, + R,S], + RF, Info) end; + 20 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T) -> + eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q, + R,S,T], + RF, Info) end; + _Other -> + exception(error, {'argument_limit',{named_fun,FName,Cs}}, Bs, + Ieval#ieval{line=Line}) + end, + {value,Fun,Bs}; + +%% Construct an external fun. +expr({make_ext_fun,Line,MFA0}, Bs0, Ieval0) -> + {[M,F,A],Bs} = eval_list(MFA0, Bs0, Ieval0), + try erlang:make_fun(M, F, A) of + Value -> + {value,Value,Bs} + catch + error:badarg -> + Ieval1 = Ieval0#ieval{line=Line}, + Ieval2 = dbg_istk:push(Bs0, Ieval1, false), + Ieval = Ieval2#ieval{module=erlang,function=make_fun, + arguments=[M,F,A],line=-1}, + exception(error, badarg, Bs, Ieval, true) + end; + +%% Local function call +expr({local_call,Line,F,As0,Lc}, Bs0, #ieval{module=M} = Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {As,Bs} = eval_list(As0, Bs0, Ieval), + eval_function(M, F, As, Bs, local, Ieval, Lc); + +%% Remote function call +expr({call_remote,Line,M,F,As0,Lc}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {As,Bs} = eval_list(As0, Bs0, Ieval), + eval_function(M, F, As, Bs, extern, Ieval, Lc); + +%% Emulated semantics of some BIFs +expr({dbg,Line,self,[]}, Bs, #ieval{level=Le}) -> + trace(bif, {Le,Line,erlang,self,[]}), + Self = get(self), + trace(return, {Le,Self}), + {value,Self,Bs}; +expr({dbg,Line,raise,As0}, Bs0, #ieval{level=Le}=Ieval0) -> + %% Since stacktraces are emulated, we will + %% need to emulate erlang:raise/3 so that we can + %% capture the stacktrace. + Ieval = Ieval0#ieval{line=Line}, + {[Class,Reason,Stk0]=As,Bs} = eval_list(As0, Bs0, Ieval), + trace(bif, {Le,Line,erlang,raise,As}), + try + %% Evaluate raise/3 for error checking and + %% truncating of the stacktrace to the correct depth. + Error = erlang:raise(Class, Reason, Stk0), + trace(return, {Le,Error}), + {value,Error,Bs} + catch + _:_:Stk -> %Possibly truncated. + StkFun = fun(_) -> Stk end, + do_exception(Class, Reason, StkFun, Bs, Ieval) + end; +expr({dbg,Line,throw,As0}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {[Term],Bs} = eval_list(As0, Bs0, Ieval), + trace(bif, {Le,Line,erlang,throw,[Term]}), + exception(throw, Term, Bs, Ieval); +expr({dbg,Line,error,As0}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {[Term],Bs} = eval_list(As0, Bs0, Ieval), + trace(bif, {Le,Line,erlang,error,[Term]}), + exception(error, Term, Bs, Ieval); +expr({dbg,Line,exit,As0}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {[Term],Bs} = eval_list(As0, Bs0, Ieval), + trace(bif, {Le,Line,erlang,exit,[Term]}), + exception(exit, Term, Bs, Ieval); + +%% Call to "safe" BIF, ie a BIF that can be executed in Meta process +expr({safe_bif,Line,M,F,As0}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval1 = Ieval0#ieval{line=Line}, + {As,Bs} = eval_list(As0, Bs0, Ieval1), + trace(bif, {Le,Line,M,F,As}), + Ieval2 = dbg_istk:push(Bs0, Ieval1, false), + Ieval = Ieval2#ieval{module=M,function=F,arguments=As,line=-1}, + {_,Value,_} = Res = safe_bif(M, F, As, Bs, Ieval), + trace(return, {Le,Value}), + dbg_istk:pop(), + Res; + +%% Call to a BIF that must be evaluated in the correct process +expr({bif,Line,M,F,As0}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval1 = Ieval0#ieval{line=Line}, + {As,Bs} = eval_list(As0, Bs0, Ieval1), + trace(bif, {Le,Line,M,F,As}), + Ieval2 = dbg_istk:push(Bs0, Ieval1, false), + Ieval = Ieval2#ieval{module=M,function=F,arguments=As,line=-1}, + {_,Value,_} = Res = debugged_cmd({apply,M,F,As}, Bs, Ieval), + trace(return, {Le,Value}), + dbg_istk:pop(), + Res; + +%% Call to an operation +expr({op,Line,Op,As0}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {As,Bs} = eval_list(As0, Bs0, Ieval), + try apply(erlang,Op,As) of + Value -> + {value,Value,Bs} + catch + Class:Reason -> + exception(Class, Reason, Bs, Ieval) + end; + +%% apply/2 (fun) +expr({apply_fun,Line,Fun0,As0,Lc}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + FunValue = case expr(Fun0, Bs0, Ieval) of + {value,{dbg_apply,Mx,Fx,Asx},Bsx} -> + debugged_cmd({apply,Mx,Fx,Asx}, + Bsx, Ieval#ieval{level=Le+1}); + OtherFunValue -> + OtherFunValue + end, + case FunValue of + {value,Fun,Bs1} when is_function(Fun) -> + {As,Bs} = eval_list(As0, Bs1, Ieval), + eval_function(undefined, Fun, As, Bs, extern, Ieval, Lc); + {value,{M,F},Bs1} when is_atom(M), is_atom(F) -> + {As,Bs} = eval_list(As0, Bs1, Ieval), + eval_function(M, F, As, Bs, extern, Ieval, Lc); + {value,BadFun,Bs1} -> + exception(error, {badfun,BadFun}, Bs1, Ieval) + end; + +%% apply/3 +expr({apply,Line,As0,Lc}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {[M,F,As],Bs} = eval_list(As0, Bs0, Ieval), + eval_function(M, F, As, Bs, extern, Ieval, Lc); + +%% Receive statement +expr({'receive',Line,Cs}, Bs0, #ieval{level=Le}=Ieval) -> + trace(receivex, {Le,false}), + eval_receive(get(self), Cs, Bs0, Ieval#ieval{line=Line}); + +%% Receive..after statement +expr({'receive',Line,Cs,To,ToExprs}, Bs0, #ieval{level=Le}=Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {value,ToVal,ToBs} = expr(To, Bs0, Ieval#ieval{top=false}), + trace(receivex, {Le,true}), + check_timeoutvalue(ToVal, ToBs, To, Ieval), + {Stamp,_} = statistics(wall_clock), + eval_receive(get(self), Cs, ToVal, ToExprs, ToBs, Bs0, + 0, Stamp, Ieval); + +%% Send (!) +expr({send,Line,To0,Msg0}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + Ieval1 = Ieval#ieval{top=false}, + {value,To,Bs1} = expr(To0, Bs0, Ieval1), + {value,Msg,Bs2} = expr(Msg0, Bs0, Ieval1), + Bs = merge_bindings(Bs2, Bs1, Ieval), + eval_send(To, Msg, Bs, Ieval); + +%% Binary +expr({bin,Line,Fs}, Bs0, Ieval0) -> + Ieval = Ieval0#ieval{line=Line,top=false}, + try + eval_bits:expr_grp(Fs, Bs0, + fun (E, B) -> expr(E, B, Ieval) end) + catch + Class:Reason -> + exception(Class, Reason, Bs0, Ieval) + end; + +%% List comprehension +expr({lc,_Line,E,Qs}, Bs, Ieval) -> + eval_lc(E, Qs, Bs, Ieval); +expr({bc,_Line,E,Qs}, Bs, Ieval) -> + eval_bc(E, Qs, Bs, Ieval); +expr({mc,_Line,E,Qs}, Bs, Ieval) -> + eval_mc(E, Qs, Bs, Ieval); + +%% Brutal exit on unknown expressions/clauses/values/etc. +expr(E, _Bs, _Ieval) -> + erlang:error({'NYI',E}). + +%% Interpreted fun() called from uninterpreted module, recurse +eval_fun(As, {Info,Bs,Cs}) -> + dbg_debugged:eval(?MODULE, eval_fun, [Cs,As,Bs,Info]). + +%% Interpreted named fun() called from uninterpreted module, recurse +eval_named_fun(As, RF, {Info,Bs,Cs,FName}) -> + dbg_debugged:eval(?MODULE, eval_named_fun, [Cs,As,Bs,FName,RF,Info]). + +%% eval_lc(Expr,[Qualifier],Bindings,IevalState) -> +%% {value,Value,Bindings}. +%% This is evaluating list comprehensions "straight out of the book". +%% Copied from rv's implementation in erl_eval. +eval_lc(E, Qs, Bs, Ieval) -> + {value,eval_lc1(E, Qs, Bs, Ieval),Bs}. + +eval_lc1(E, [{generator,G}|Qs], Bs, Ieval) -> + CompFun = fun(NewBs) -> eval_lc1(E, Qs, NewBs, Ieval) end, + eval_generator(G, Bs, CompFun, Ieval); +eval_lc1(E, [{guard,Q}|Qs], Bs0, Ieval) -> + case guard(Q, Bs0) of + true -> eval_lc1(E, Qs, Bs0, Ieval); + false -> [] + end; +eval_lc1(E, [Q|Qs], Bs0, Ieval) -> + case expr(Q, Bs0, Ieval#ieval{top=false}) of + {value,true,Bs} -> eval_lc1(E, Qs, Bs, Ieval); + {value,false,_Bs} -> []; + {value,V,Bs} -> exception(error, {bad_filter,V}, Bs, Ieval) + end; +eval_lc1(E, [], Bs, Ieval) -> + {value,V,_} = expr(E, Bs, Ieval#ieval{top=false}), + [V]. + +%% eval_bc(Expr,[Qualifier],Bindings,IevalState) -> +%% {value,Value,Bindings}. +%% This is evaluating list comprehensions "straight out of the book". +%% Copied from rv's implementation in erl_eval. +eval_bc(E, Qs, Bs, Ieval) -> + Val = erlang:list_to_bitstring(eval_bc1(E, Qs, Bs, Ieval)), + {value,Val,Bs}. + +eval_bc1(E, [{generator,G}|Qs], Bs, Ieval) -> + CompFun = fun(NewBs) -> eval_bc1(E, Qs, NewBs, Ieval) end, + eval_generator(G, Bs, CompFun, Ieval); +eval_bc1(E, [{guard,Q}|Qs], Bs0, Ieval) -> + case guard(Q, Bs0) of + true -> eval_bc1(E, Qs, Bs0, Ieval); + false -> [] + end; +eval_bc1(E, [Q|Qs], Bs0, Ieval) -> + case expr(Q, Bs0, Ieval#ieval{top=false}) of + {value,true,Bs} -> eval_bc1(E, Qs, Bs, Ieval); + {value,false,_Bs} -> []; + {value,V,Bs} -> exception(error, {bad_filter,V}, Bs, Ieval) + end; +eval_bc1(E, [], Bs, Ieval) -> + {value,V,_} = expr(E, Bs, Ieval#ieval{top=false}), + [V]. + +eval_mc(E, Qs, Bs, Ieval) -> + Map = eval_mc1(E, Qs, Bs, Ieval), + {value,maps:from_list(Map),Bs}. + +eval_mc1(E, [{generator,G}|Qs], Bs, Ieval) -> + CompFun = fun(NewBs) -> eval_mc1(E, Qs, NewBs, Ieval) end, + eval_generator(G, Bs, CompFun, Ieval); +eval_mc1(E, [{guard,Q}|Qs], Bs0, Ieval) -> + case guard(Q, Bs0) of + true -> eval_mc1(E, Qs, Bs0, Ieval); + false -> [] + end; +eval_mc1(E, [Q|Qs], Bs0, Ieval) -> + case expr(Q, Bs0, Ieval#ieval{top=false}) of + {value,true,Bs} -> eval_mc1(E, Qs, Bs, Ieval); + {value,false,_Bs} -> []; + {value,V,Bs} -> exception(error, {bad_filter,V}, Bs, Ieval) + end; +eval_mc1({map_field_assoc,_,K0,V0}, [], Bs, Ieval) -> + {value,K,_} = expr(K0, Bs, Ieval#ieval{top=false}), + {value,V,_} = expr(V0, Bs, Ieval#ieval{top=false}), + [{K,V}]. + +eval_generator({generate,Line,P,L0}, Bs0, CompFun, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {value,L1,Bs1} = expr(L0, Bs0, Ieval#ieval{top=false}), + eval_generate(L1, P, Bs1, CompFun, Ieval); +eval_generator({b_generate,Line,P,Bin0}, Bs0, CompFun, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {value,Bin,Bs1} = expr(Bin0, Bs0, Ieval#ieval{top=false}), + eval_b_generate(Bin, P, Bs1, CompFun, Ieval); +eval_generator({m_generate,Line,P,Map0}, Bs0, CompFun, Ieval0) -> + Ieval = Ieval0#ieval{line=Line}, + {map_field_exact,_,K,V} = P, + {value,Map,_Bs1} = expr(Map0, Bs0, Ieval), + Iter = case is_map(Map) of + true -> + maps:iterator(Map); + false -> + %% Validate iterator. + try maps:foreach(fun(_, _) -> ok end, Map) of + _ -> + Map + catch + _:_ -> + exception(error, {bad_generator,Map}, Bs0, Ieval) + end + end, + eval_m_generate(Iter, {tuple,Line,[K,V]}, Bs0, CompFun, Ieval). + +eval_generate([V|Rest], P, Bs0, CompFun, Ieval) -> + case catch match1(P, V, erl_eval:new_bindings(), Bs0) of + {match,Bsn} -> + Bs2 = add_bindings(Bsn, Bs0), + CompFun(Bs2) ++ eval_generate(Rest, P, Bs0, CompFun, Ieval); + nomatch -> + eval_generate(Rest, P, Bs0, CompFun, Ieval) + end; +eval_generate([], _P, _Bs0, _CompFun, _Ieval) -> + []; +eval_generate(Term, _P, Bs, _CompFun, Ieval) -> + exception(error, {bad_generator,Term}, Bs, Ieval). + +eval_b_generate(<<_/bitstring>>=Bin, P, Bs0, CompFun, Ieval) -> + Mfun = match_fun(Bs0), + Efun = fun(Exp, Bs) -> expr(Exp, Bs, #ieval{}) end, + case eval_bits:bin_gen(P, Bin, erl_eval:new_bindings(), Bs0, Mfun, Efun) of + {match,Rest,Bs1} -> + Bs2 = add_bindings(Bs1, Bs0), + CompFun(Bs2) ++ eval_b_generate(Rest, P, Bs0, CompFun, Ieval); + {nomatch,Rest} -> + eval_b_generate(Rest, P, Bs0, CompFun, Ieval); + done -> + [] + end; +eval_b_generate(Term, _P, Bs, _CompFun, Ieval) -> + exception(error, {bad_generator,Term}, Bs, Ieval). + +eval_m_generate(Iter0, P, Bs0, CompFun, Ieval) -> + case maps:next(Iter0) of + {K,V,Iter} -> + case catch match1(P, {K,V}, erl_eval:new_bindings(), Bs0) of + {match,Bsn} -> + Bs2 = add_bindings(Bsn, Bs0), + CompFun(Bs2) ++ eval_m_generate(Iter, P, Bs0, CompFun, Ieval); + nomatch -> + eval_m_generate(Iter, P, Bs0, CompFun, Ieval) + end; + none -> + [] + end. + +safe_bif(M, F, As, Bs, Ieval0) -> + try apply(M, F, As) of + Value -> + {value,Value,Bs} + catch + Class:Reason:Stk -> + [{_,_,_,Info}|_] = Stk, + Ieval = case lists:keyfind(error_info, 1, Info) of + false -> Ieval0#ieval{error_info=[]}; + ErrorInfo -> Ieval0#ieval{error_info=[ErrorInfo]} + end, + exception(Class, Reason, Bs, Ieval, true) + end. + +eval_send(To, Msg, Bs, Ieval) -> + try To ! Msg of + Msg -> + trace(send, {To,Msg}), + {value,Msg,Bs} + catch + Class:Reason -> + exception(Class, Reason, Bs, Ieval) + end. + +%% Start tracing of messages before fetching current messages in +%% the queue to make sure that no messages are lost. +eval_receive(Debugged, Cs, Bs0, + #ieval{module=M,line=Line,level=Le}=Ieval) -> + %% To avoid private message passing protocol between META + %% and interpreted process. + session_recv_trace(Debugged, true), + {_,Msgs} = erlang:process_info(Debugged, messages), + case receive_clauses(Cs, Bs0, Msgs) of + nomatch -> + dbg_iserver:cast(get(int), {set_status, self(),waiting,{}}), + dbg_icmd:tell_attached({wait_at,M,Line,Le}), + eval_receive1(Debugged, Cs, Bs0, Ieval); + {eval,B,Bs,Msg} -> + rec_mess(Debugged, Msg, Bs, Ieval), + seq(B, Bs, Ieval) + end. + +eval_receive1(Debugged, Cs, Bs0, Ieval) -> + Msgs = do_receive(Debugged, Bs0, Ieval), + case receive_clauses(Cs, Bs0, Msgs) of + nomatch -> + eval_receive1(Debugged, Cs, Bs0, Ieval); + {eval,B,Bs,Msg} -> + rec_mess(Debugged, Msg, Bs0, Ieval), + dbg_iserver:cast(get(int), {set_status, self(),running,{}}), + dbg_icmd:tell_attached(running), + seq(B, Bs, Ieval) + end. + +check_timeoutvalue(ToVal,_,_,_) when is_integer(ToVal), ToVal>=0 -> true; +check_timeoutvalue(infinity,_,_,_) -> true; +check_timeoutvalue(_ToVal, ToBs, To, Ieval) -> + Line = element(2, To), + exception(error, timeout_value, ToBs, Ieval#ieval{line=Line}). + +eval_receive(Debugged, Cs, 0, ToExprs, ToBs, Bs0, 0, _Stamp, Ieval) -> + {_,Msgs} = erlang:process_info(Debugged,messages), + case receive_clauses(Cs, Bs0, Msgs) of + nomatch -> + trace(received,null), + seq(ToExprs, ToBs, Ieval); + {eval,B,Bs,Msg} -> + rec_mess_no_trace(Debugged, Msg, Bs0, Ieval), + seq(B, Bs, Ieval) + end; +eval_receive(Debugged, Cs, ToVal, ToExprs, ToBs, Bs0, + 0, Stamp, #ieval{module=M,line=Line,level=Le}=Ieval)-> + session_recv_trace(Debugged, true), + {_,Msgs} = erlang:process_info(Debugged, messages), + case receive_clauses(Cs, Bs0, Msgs) of + nomatch -> + {Stamp1,Time1} = newtime(Stamp,ToVal), + dbg_iserver:cast(get(int), {set_status, self(),waiting,{}}), + dbg_icmd:tell_attached({wait_after_at,M,Line,Le}), + eval_receive(Debugged, Cs, Time1, ToExprs, ToBs, Bs0, + infinity,Stamp1, Ieval); + {eval,B,Bs,Msg} -> + rec_mess(Debugged, Msg, Bs0, Ieval), + seq(B, Bs, Ieval) + end; +eval_receive(Debugged, Cs, ToVal, ToExprs, ToBs, Bs0, + _, Stamp, Ieval) -> + case do_receive(Debugged, ToVal, Stamp, Bs0, Ieval) of + timeout -> + trace(received,null), + rec_mess(Debugged), + dbg_iserver:cast(get(int), {set_status, self(),running,{}}), + dbg_icmd:tell_attached(running), + seq(ToExprs, ToBs, Ieval); + Msgs -> + case receive_clauses(Cs, Bs0, Msgs) of + nomatch -> + {Stamp1,Time1} = newtime(Stamp,ToVal), + eval_receive(Debugged, Cs, Time1, ToExprs, ToBs, + Bs0, infinity,Stamp1, Ieval); + {eval,B,Bs,Msg} -> + rec_mess(Debugged, Msg, Bs0, Ieval), + dbg_iserver:cast(get(int), + {set_status, self(), running, {}}), + dbg_icmd:tell_attached(running), + seq(B, Bs, Ieval) + end + end. + +do_receive(Debugged, Bs, Ieval) -> + receive + {trace,Debugged,'receive',Msg} -> + [Msg]; + Msg -> + check_exit_msg(Msg, Bs, Ieval), + dbg_icmd:handle_msg(Msg, wait_at, Bs, Ieval), + do_receive(Debugged, Bs, Ieval) + end. + +do_receive(Debugged, Time, Stamp, Bs, Ieval) -> + receive + {trace,Debugged,'receive',Msg} -> + [Msg]; + {user, timeout} -> + timeout; + Msg -> + check_exit_msg(Msg, Bs, Ieval), + dbg_icmd:handle_msg(Msg, wait_after_at, Bs, Ieval), + {Stamp1,Time1} = newtime(Stamp,Time), + do_receive(Debugged, Time1, Stamp1, Bs, Ieval) + after Time -> + timeout + end. + +newtime(Stamp,infinity) -> + {Stamp,infinity}; +newtime(Stamp,Time) -> + {Stamp1,_} = statistics(wall_clock), + case Time - (Stamp1 - Stamp) of + NewTime when NewTime > 0 -> + {Stamp1,NewTime}; + _ -> + {Stamp1,0} + end. + +rec_mess(Debugged, Msg, Bs, Ieval) -> + session_recv_trace(Debugged, false), + flush_traces(Debugged), + Debugged ! {sys,self(),{'receive',Msg}}, + rec_ack(Debugged, Bs, Ieval). + +rec_mess(Debugged) -> + session_recv_trace(Debugged, false), + flush_traces(Debugged). + +rec_mess_no_trace(Debugged, Msg, Bs, Ieval) -> + Debugged ! {sys,self(),{'receive',Msg}}, + rec_ack(Debugged, Bs, Ieval). + +rec_ack(Debugged, Bs, Ieval) -> + receive + {Debugged,rec_acked} -> + true; + Msg -> + check_exit_msg(Msg, Bs, Ieval), + io:format("***WARNING*** Unexp msg ~p, ieval ~p~n", + [Msg, Ieval]) + end. + +flush_traces(Debugged) -> + receive + {trace,Debugged,'receive',_} -> + flush_traces(Debugged) + after 0 -> + true + end. + +%% eval_list(ExpressionList, Bindings, Ieval) +%% Evaluate a list of expressions "in parallel" at the same level. +eval_list(Es, Bs, Ieval) -> + eval_list_1(Es, [], Bs, Bs, Ieval#ieval{top=false}). + +eval_list_1([E|Es], Vs, BsOrig, Bs0, Ieval) -> + {value,V,Bs1} = expr(E, BsOrig, Ieval), + eval_list_1(Es, [V|Vs], BsOrig, merge_bindings(Bs1, Bs0, Ieval), Ieval); +eval_list_1([], Vs, _, Bs, _Ieval) -> + {lists:reverse(Vs,[]),Bs}. + +%% if_clauses(Clauses, Bindings, Ieval) +if_clauses([{clause,_,[],G,B}|Cs], Bs, Ieval) -> + case guard(G, Bs) of + true -> + seq(B, Bs, Ieval); + false -> + if_clauses(Cs, Bs, Ieval) + end; +if_clauses([], Bs, Ieval) -> + exception(error, if_clause, Bs, Ieval). + +%% case_clauses(Value, Clauses, Bindings, Error, Ieval) +%% Error = try_clause | case_clause +case_clauses(Val, [{clause,_,[P],G,B}|Cs], Bs0, Error, Ieval) -> + case match(P, Val, Bs0) of + {match,Bs} -> + case guard(G, Bs) of + true -> + seq(B, Bs, Ieval); + false -> + case_clauses(Val, Cs, Bs0, Error, Ieval) + end; + nomatch -> + case_clauses(Val, Cs, Bs0, Error, Ieval) + end; +case_clauses(Val,[], Bs, Error, Ieval) -> + exception(error, {Error,Val}, Bs, Ieval). + +%% catch_clauses(Exception, Clauses, Bindings, Ieval) +%% Exception = {Class,Reason,[]} +catch_clauses(Exception, [{clause,_,[P],G,B}|CatchCs], Bs0, Ieval) -> + case match(P, Exception, Bs0) of + {match,Bs} -> + case guard(G, Bs) of + true -> + %% Exception caught, reset exit info + put(exit_info, undefined), + dbg_istk:pop(Ieval#ieval.level), + seq(B, Bs, Ieval); + false -> + catch_clauses(Exception, CatchCs, Bs0, Ieval) + end; + nomatch -> + catch_clauses(Exception, CatchCs, Bs0, Ieval) + end; +catch_clauses({Class,Reason,_}, [], _Bs, _Ieval) -> + erlang:Class(Reason). + +receive_clauses(Cs, Bs0, [Msg|Msgs]) -> + case rec_clauses(Cs, Bs0, Msg) of + nomatch -> + receive_clauses(Cs, Bs0, Msgs); + {eval,B,Bs} -> + {eval,B,Bs,Msg} + end; +receive_clauses(_, _, []) -> + nomatch. + +rec_clauses([{clause,_,Pars,G,B}|Cs], Bs0, Msg) -> + case rec_match(Pars, Msg, Bs0) of + {match,Bs} -> + case guard(G, Bs) of + true -> + trace(received, Msg), + {eval,B,Bs}; + false -> + rec_clauses(Cs, Bs0, Msg) + end; + nomatch -> + rec_clauses(Cs, Bs0, Msg) + end; +rec_clauses([], _, _) -> + nomatch. + +%% guard(GuardTests,Bindings) +%% Evaluate a list of guards. +guard([], _) -> true; +guard(Gs, Bs) -> or_guard(Gs, Bs). + +or_guard([G|Gs], Bs) -> + %% Short-circuit OR. + and_guard(G, Bs) orelse or_guard(Gs, Bs); +or_guard([], _) -> false. + +and_guard([G|Gs], Bs) -> + %% Short-circuit AND. + case catch guard_expr(G, Bs) of + {value,true} -> and_guard(Gs, Bs); + _ -> false + end; +and_guard([],_) -> true. + +guard_exprs([A0|As0], Bs) -> + {value,A} = guard_expr(A0, Bs), + {values,As} = guard_exprs(As0, Bs), + {values,[A|As]}; +guard_exprs([], _) -> + {values,[]}. + +guard_expr({'andalso',_,E1,E2}, Bs) -> + case guard_expr(E1, Bs) of + {value,false}=Res -> Res; + {value,true} -> + case guard_expr(E2, Bs) of + {value,_Val}=Res -> Res + end + end; +guard_expr({'orelse',_,E1,E2}, Bs) -> + case guard_expr(E1, Bs) of + {value,true}=Res -> Res; + {value,false} -> + case guard_expr(E2, Bs) of + {value,_Val}=Res -> Res + end + end; +guard_expr({'case',_,E0,Cs}, Bs) -> + {value,E} = guard_expr(E0, Bs), + guard_case_clauses(E, Cs, Bs); +guard_expr({dbg,_,self,[]}, _) -> + {value,get(self)}; +guard_expr({safe_bif,_,erlang,'not',As0}, Bs) -> + {values,As} = guard_exprs(As0, Bs), + {value,apply(erlang, 'not', As)}; +guard_expr({safe_bif,_,Mod,Func,As0}, Bs) -> + {values,As} = guard_exprs(As0, Bs), + {value,apply(Mod, Func, As)}; +guard_expr({var,_,V}, Bs) -> + {value,_} = binding(V, Bs); +guard_expr({value,_,Val}, _Bs) -> + {value,Val}; +guard_expr({cons,_,H0,T0}, Bs) -> + {value,H} = guard_expr(H0, Bs), + {value,T} = guard_expr(T0, Bs), + {value,[H|T]}; +guard_expr({tuple,_,Es0}, Bs) -> + {values,Es} = guard_exprs(Es0, Bs), + {value,list_to_tuple(Es)}; +guard_expr({map,_,Fs}, Bs0) -> + F = fun (G0, B0, _) -> + {value,G} = guard_expr(G0, B0), + {value,G,B0} + end, + {Map,_} = eval_new_map_fields(Fs, Bs0, #ieval{top=false}, F), + {value,Map}; +guard_expr({map,_,E0,Fs0}, Bs) -> + {value,E} = guard_expr(E0, Bs), + Fs = eval_map_fields_guard(Fs0, Bs), + Value = lists:foldl(fun ({map_assoc,K,V}, Mi) -> maps:put(K,V,Mi); + ({map_exact,K,V}, Mi) -> maps:update(K,V,Mi) end, + E, Fs), + {value,Value}; +guard_expr({bin,_,Flds}, Bs) -> + {value,V,_Bs} = + eval_bits:expr_grp(Flds, Bs, + fun(E,B) -> + {value,V} = guard_expr(E,B), + {value,V,B} + end), + {value,V}. + +%% guard_case_clauses(Value, Clauses, Bindings, Error, Ieval) +%% Error = try_clause | case_clause +guard_case_clauses(Val, [{clause,_,[P],G,B}|Cs], Bs0) -> + case match(P, Val, Bs0) of + {match,Bs} -> + case guard(G, Bs) of + true -> + guard_expr(hd(B), Bs); + false -> + guard_case_clauses(Val, Cs, Bs0) + end; + nomatch -> + guard_case_clauses(Val, Cs, Bs0) + end. + +%% eval_map_fields([Field], Bindings, IEvalState) -> +%% {[{map_assoc | map_exact,Key,Value}],Bindings} + +eval_map_fields(Fs, Bs, Ieval) -> + eval_map_fields(Fs, Bs, Ieval, fun expr/3). + +eval_map_fields_guard(Fs0, Bs) -> + {Fs,_} = eval_map_fields(Fs0, Bs, #ieval{}, + fun (G0, Bs0, _) -> + {value,G} = guard_expr(G0, Bs0), + {value,G,Bs0} + end), + Fs. + +eval_map_fields(Fs, Bs, Ieval, F) -> + eval_map_fields(Fs, Bs, Ieval, F, []). + +eval_map_fields([{map_field_assoc,Line,K0,V0}|Fs], Bs0, Ieval0, F, Acc) -> + Ieval = Ieval0#ieval{line=Line}, + {value,K,Bs1} = F(K0, Bs0, Ieval), + {value,V,Bs2} = F(V0, Bs1, Ieval), + eval_map_fields(Fs, Bs2, Ieval0, F, [{map_assoc,K,V}|Acc]); +eval_map_fields([{map_field_exact,Line,K0,V0}|Fs], Bs0, Ieval0, F, Acc) -> + Ieval = Ieval0#ieval{line=Line}, + {value,K,Bs1} = F(K0, Bs0, Ieval), + {value,V,Bs2} = F(V0, Bs1, Ieval), + eval_map_fields(Fs, Bs2, Ieval0, F, [{map_exact,K,V}|Acc]); +eval_map_fields([], Bs, _Ieval, _F, Acc) -> + {lists:reverse(Acc),Bs}. + +eval_new_map_fields(Fs, Bs0, Ieval, F) -> + eval_new_map_fields(Fs, Bs0, Ieval, F, []). + +eval_new_map_fields([{Line,K0,V0}|Fs], Bs0, Ieval0, F, Acc) -> + Ieval = Ieval0#ieval{line=Line}, + {value,K,Bs1} = F(K0, Bs0, Ieval), + {value,V,Bs2} = F(V0, Bs1, Ieval), + eval_new_map_fields(Fs, Bs2, Ieval0, F, [{K,V}|Acc]); +eval_new_map_fields([], Bs, _, _, Acc) -> + {maps:from_list(lists:reverse(Acc)),Bs}. + +%% match(Pattern,Term,Bs) -> {match,Bs} | nomatch +match(Pat, Term, Bs) -> + try match1(Pat, Term, Bs, Bs) + catch + Result -> Result + end. + +match1({value,_,V}, V, Bs,_BBs) -> + {match,Bs}; +match1({var,_,'_'}, Term, Bs,_BBs) -> % Anonymous variable matches + {match,add_anon(Term, Bs)}; % everything,save it anyway +match1({var,_,Name}, Term, Bs, _BBs) -> + case binding(Name, Bs) of + {value,Term} -> + {match,Bs}; + {value,_} -> + throw(nomatch); + unbound -> + {match,[{Name,Term}|Bs]} % Add the new binding + end; +match1({match,_,Pat1,Pat2}, Term, Bs0, BBs) -> + {match,Bs1} = match1(Pat1, Term, Bs0, BBs), + match1(Pat2, Term, Bs1, BBs); +match1({cons,_,H,T}, [H1|T1], Bs0, BBs) -> + {match,Bs} = match1(H, H1, Bs0, BBs), + match1(T, T1, Bs, BBs); +match1({tuple,_,Elts}, Tuple, Bs, BBs) + when length(Elts) =:= tuple_size(Tuple) -> + match_tuple(Elts, Tuple, 1, Bs, BBs); +match1({map,_,Fields}, Map, Bs, BBs) when is_map(Map) -> + match_map(Fields, Map, Bs, BBs); +match1({bin,_,Fs}, B, Bs0, BBs) when is_bitstring(B) -> + try eval_bits:match_bits(Fs, B, Bs0, BBs, + match_fun(BBs), + fun(E, Bs) -> expr(E, Bs, #ieval{}) end) + catch + _:_ -> throw(nomatch) + end; +match1(_,_,_,_) -> + throw(nomatch). + +match_fun(BBs) -> + fun(match, {L,R,Bs}) -> match1(L, R, Bs, BBs); + (binding, {Name,Bs}) -> binding(Name, Bs); + (add_binding, {Name,Val,Bs}) -> add_binding(Name, Val, Bs) + end. + +match_tuple([E|Es], Tuple, I, Bs0, BBs) -> + {match,Bs} = match1(E, element(I, Tuple), Bs0, BBs), + match_tuple(Es, Tuple, I+1, Bs, BBs); +match_tuple([], _, _, Bs, _BBs) -> + {match,Bs}. + +match_map([{map_field_exact,_,K0,Pat}|Fs], Map, Bs0, BBs) -> + try guard_expr(K0, BBs) of + {value,K} -> + case Map of + #{K := Value} -> + {match,Bs} = match1(Pat, Value, Bs0, BBs), + match_map(Fs, Map, Bs, BBs); + #{} -> + throw(nomatch) + end + catch _:_ -> + throw(nomatch) + end; +match_map([], _, Bs, _BBs) -> + {match,Bs}. + +head_match([Par|Pars], [Arg|Args], Bs0, BBs) -> + try match1(Par, Arg, Bs0, BBs) of + {match,Bs} -> head_match(Pars, Args, Bs, BBs) + catch + Result -> Result + end; +head_match([],[],Bs,_) -> {match,Bs}. + +rec_match([Par],Msg,Bs0) -> + match(Par,Msg,Bs0). + +binding(Name,[{Name,Val}|_]) -> + {value,Val}; +binding(Name,[_,{Name,Val}|_]) -> + {value,Val}; +binding(Name,[_,_,{Name,Val}|_]) -> + {value,Val}; +binding(Name,[_,_,_,{Name,Val}|_]) -> + {value,Val}; +binding(Name,[_,_,_,_,{Name,Val}|_]) -> + {value,Val}; +binding(Name,[_,_,_,_,_,{Name,Val}|_]) -> + {value,Val}; +binding(Name,[_,_,_,_,_,_|Bs]) -> + binding(Name,Bs); +binding(Name,[_,_,_,_,_|Bs]) -> + binding(Name,Bs); +binding(Name,[_,_,_,_|Bs]) -> + binding(Name,Bs); +binding(Name,[_,_,_|Bs]) -> + binding(Name,Bs); +binding(Name,[_,_|Bs]) -> + binding(Name,Bs); +binding(Name,[_|Bs]) -> + binding(Name,Bs); +binding(_,[]) -> + unbound. + +add_anon(Val,[{'_',_}|Bs]) -> + [{'_',Val}|Bs]; +add_anon(Val,[B1,{'_',_}|Bs]) -> + [B1,{'_',Val}|Bs]; +add_anon(Val,[B1,B2,{'_',_}|Bs]) -> + [B1,B2,{'_',Val}|Bs]; +add_anon(Val,[B1,B2,B3,{'_',_}|Bs]) -> + [B1,B2,B3,{'_',Val}|Bs]; +add_anon(Val,[B1,B2,B3,B4,{'_',_}|Bs]) -> + [B1,B2,B3,B4,{'_',Val}|Bs]; +add_anon(Val,[B1,B2,B3,B4,B5,{'_',_}|Bs]) -> + [B1,B2,B3,B4,B5,{'_',Val}|Bs]; +add_anon(Val,[B1,B2,B3,B4,B5,B6|Bs]) -> + [B1,B2,B3,B4,B5,B6|add_anon(Val,Bs)]; +add_anon(Val,[B1,B2,B3,B4,B5|Bs]) -> + [B1,B2,B3,B4,B5|add_anon(Val,Bs)]; +add_anon(Val,[B1,B2,B3,B4|Bs]) -> + [B1,B2,B3,B4|add_anon(Val,Bs)]; +add_anon(Val,[B1,B2,B3|Bs]) -> + [B1,B2,B3|add_anon(Val,Bs)]; +add_anon(Val,[B1,B2|Bs]) -> + [B1,B2|add_anon(Val,Bs)]; +add_anon(Val,[B1|Bs]) -> + [B1|add_anon(Val,Bs)]; +add_anon(Val,[]) -> + [{'_',Val}]. + +%% merge_bindings(Bindings1, Bindings2, Ieval) +%% Merge bindings detecting bad matches. +%% Special case '_',save the new one !!! +%% Bindings1 is the newest bindings. +merge_bindings(Bs, Bs, _Ieval) -> + Bs; % Identical bindings +merge_bindings([{Name,V}|B1s], B2s, Ieval) -> + case binding(Name, B2s) of + {value,V} -> % Already there, and the same + merge_bindings(B1s, B2s, Ieval); + {value,_} when Name =:= '_' -> % Already there, but anonymous + B2s1 = lists:keydelete('_', 1, B2s), + [{Name,V}|merge_bindings(B1s, B2s1, Ieval)]; + {value,_} -> % Already there, but different => badmatch + exception(error, {badmatch,V}, B2s, Ieval); + unbound -> % Not there,add it + [{Name,V}|merge_bindings(B1s, B2s, Ieval)] + end; +merge_bindings([], B2s, _Ieval) -> + B2s. + +%% add_bindings(Bindings1,Bindings2) +%% Add Bindings1 to Bindings2. Bindings in +%% Bindings1 hides bindings in Bindings2. +%% Used in list comprehensions (and funs). +add_bindings(Bs1,[]) -> + Bs1; +add_bindings([{Name,V}|Bs],ToBs0) -> + ToBs = add_binding(Name,V,ToBs0), + add_bindings(Bs,ToBs); +add_bindings([],ToBs) -> + ToBs. + +add_binding(N,Val,[{N,_}|Bs]) -> + [{N,Val}|Bs]; +add_binding(N,Val,[B1,{N,_}|Bs]) -> + [B1,{N,Val}|Bs]; +add_binding(N,Val,[B1,B2,{N,_}|Bs]) -> + [B1,B2,{N,Val}|Bs]; +add_binding(N,Val,[B1,B2,B3,{N,_}|Bs]) -> + [B1,B2,B3,{N,Val}|Bs]; +add_binding(N,Val,[B1,B2,B3,B4,{N,_}|Bs]) -> + [B1,B2,B3,B4,{N,Val}|Bs]; +add_binding(N,Val,[B1,B2,B3,B4,B5,{N,_}|Bs]) -> + [B1,B2,B3,B4,B5,{N,Val}|Bs]; +add_binding(N,Val,[B1,B2,B3,B4,B5,B6|Bs]) -> + [B1,B2,B3,B4,B5,B6|add_binding(N,Val,Bs)]; +add_binding(N,Val,[B1,B2,B3,B4,B5|Bs]) -> + [B1,B2,B3,B4,B5|add_binding(N,Val,Bs)]; +add_binding(N,Val,[B1,B2,B3,B4|Bs]) -> + [B1,B2,B3,B4|add_binding(N,Val,Bs)]; +add_binding(N,Val,[B1,B2,B3|Bs]) -> + [B1,B2,B3|add_binding(N,Val,Bs)]; +add_binding(N,Val,[B1,B2|Bs]) -> + [B1,B2|add_binding(N,Val,Bs)]; +add_binding(N,Val,[B1|Bs]) -> + [B1|add_binding(N,Val,Bs)]; +add_binding(N,Val,[]) -> + [{N,Val}]. + +remove_temporary_bindings(Bs0) -> + [{Var,Val} || {Var, Val} <- Bs0, hd(atom_to_list(Var)) =/= $%]. + +%% get_stacktrace() -> Stacktrace +%% Return the latest stacktrace for the process. +get_stacktrace() -> + case get(stacktrace) of + MakeStk when is_function(MakeStk, 1) -> + %% The stacktrace has not been constructed before. + %% Construct it and remember the result. + Depth = erlang:system_flag(backtrace_depth, 8), + erlang:system_flag(backtrace_depth, Depth), + Stk = MakeStk(Depth), + put(stacktrace, Stk), + Stk; + Stk when is_list(Stk) -> + Stk + end. + +%%% eval record exprs +%%% copied from stdlib/src/shell.erl + +expand_records(Expr, Mod) -> + try + expand_records_1(used_record_defs(Expr, Mod), Expr) + catch _:_Err:_ST -> + Expr + end. + +expand_records_1([], Expr) -> + Expr; +expand_records_1(UsedRecords, Expr) -> + A = erl_anno:new(1), + RecordDefs = [{attribute, A, record, + {Name, [{record_field,A,{atom,A,F}} || F <- Fields]} + } || {Name,Fields} <- UsedRecords], + Forms0 = RecordDefs ++ [{function,A,foo,0,[{clause,A,[],[],[Expr]}]}], + Forms = erl_expand_records:module(Forms0, [strict_record_tests]), + {function,A,foo,0,[{clause,A,[],[],[NE]}]} = lists:last(Forms), + NE. + +used_record_defs(E, Mod) -> + case mod_recs(Mod) of + [] -> []; + Recs0 -> + Recs = [{Name, Fields} || {{_,_,Name,_}, Fields} <- Recs0], + L0 = used_record_defs(E, maps:from_list(Recs), [], []), + L1 = lists:zip(L0, lists:seq(1, length(L0))), + L2 = lists:keysort(2, lists:ukeysort(1, L1)), + [R || {R, _} <- L2] + end. + +used_record_defs(E, Recs, Skip, Used) -> + case used_records(E) of + {name,Name,E1} -> + case lists:member(Name, Skip) of + true -> + used_record_defs(E1, Recs, Skip, Used); + false -> + case maps:get(Name, Recs, undefined) of + undefined -> + used_record_defs(E1, Recs, [Name|Skip], Used); + Fields -> + used_record_defs(E1, Recs, [Name|Skip], [{Name, Fields}|Used]) + end + end; + {expr,[E1 | Es]} -> + used_record_defs(Es, Recs, Skip, used_record_defs(E1, Recs, Skip, Used)); + _ -> + Used + end. + +mod_recs(Mod) -> + case db_ref(Mod) of + not_found -> + []; + ModDb -> + dbg_idb:match_object(ModDb, {{record, Mod, '_', '_'}, '_'}) + end. + +used_records({record_index,_,Name,F}) -> + {name, Name, F}; +used_records({record,_,Name,Is}) -> + {name, Name, Is}; +used_records({record_field,_,R,Name,F}) -> + {name, Name, [R | F]}; +used_records({record,_,R,Name,Ups}) -> + {name, Name, [R | Ups]}; +used_records({record_field,_,R,F}) -> % illegal + {expr, [R | F]}; +used_records({call,_,{atom,_,record},[A,{atom,_,Name}]}) -> + {name, Name, A}; +used_records({call,_,{atom,_,is_record},[A,{atom,_,Name}]}) -> + {name, Name, A}; +used_records({call,_,{remote,_,{atom,_,erlang},{atom,_,is_record}}, + [A,{atom,_,Name}]}) -> + {name, Name, A}; +used_records({call,_,{atom,_,record_info},[A,{atom,_,Name}]}) -> + {name, Name, A}; +used_records({call,A,{tuple,_,[M,F]},As}) -> + used_records({call,A,{remote,A,M,F},As}); +used_records({type,_,record,[{atom,_,Name}|Fs]}) -> + {name, Name, Fs}; +used_records(T) when is_tuple(T) -> + {expr, tuple_to_list(T)}; +used_records(E) -> + {expr, E}. + +session_recv_trace(Subject, How) -> + Session = get(trace_session), + _ = trace:process(Session, Subject, How, ['receive']), + ok. diff --git a/debugger/erlide_debugger_27/src/dbg_ieval.hrl b/debugger/erlide_debugger_27/src/dbg_ieval.hrl new file mode 100644 index 0000000..990692c --- /dev/null +++ b/debugger/erlide_debugger_27/src/dbg_ieval.hrl @@ -0,0 +1,32 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2005-2021. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-record(ieval, {level = 1, % Current call level + line = -1, % Current source code line (of module) + module, % MFA which called the currently + function, % interpreted function + arguments, % + error_info = [], % [{error_info,Map}] | [] + + %% True if the current expression is at the top level + %% (i.e. the next call will leave interpreted code). + top = false + }). + +-define(DB_REF_KEY(Mod), {Mod,db}). diff --git a/debugger/erlide_debugger_27/src/dbg_iload.erl b/debugger/erlide_debugger_27/src/dbg_iload.erl new file mode 100644 index 0000000..aba270a --- /dev/null +++ b/debugger/erlide_debugger_27/src/dbg_iload.erl @@ -0,0 +1,1069 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2024. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(dbg_iload). +-moduledoc false. + +-export([load_mod/4]). + +%%==================================================================== +%% External exports +%%==================================================================== + +%%-------------------------------------------------------------------- +%% load_mod(Mod, File, Binary, Db) -> {ok, Mod} +%% Mod = module() +%% File = string() Source file (including path) +%% Binary = binary() +%% Db = ETS identifier +%% Load a new module into the database. +%% +%% We want the loading of a module to be synchronous so that no other +%% process tries to interpret code in a module not being completely +%% loaded. This is achieved as this function is called from +%% dbg_iserver. We are suspended until the module has been loaded. +%%-------------------------------------------------------------------- +-spec load_mod(Mod, file:filename(), binary(), ets:tid()) -> + {'ok', Mod} when Mod :: atom(). + +load_mod(Mod, File, Binary, Db) -> + Flag = process_flag(trap_exit, true), + Pid = spawn_link(load_mod1(Mod, File, Binary, Db)), + receive + {'EXIT', Pid, What} -> + process_flag(trap_exit, Flag), + What + end. + +-spec load_mod1(atom(), file:filename(), binary(), ets:tid()) -> + fun(() -> no_return()). + +load_mod1(Mod, File, Binary, Db) -> + fun() -> + store_module(Mod, File, Binary, Db), + exit({ok, Mod}) + end. + +%%==================================================================== +%% Internal functions +%%==================================================================== + +store_module(Mod, File, Binary, Db) -> + {interpreter_module, Exp, Abst, Src, MD5} = binary_to_term(Binary), + Forms0 = case abstr(Abst) of + {abstract_v1,_} -> + exit({Mod,too_old_beam_file}); + {abstract_v2,_} -> + exit({Mod,too_old_beam_file}); + {raw_abstract_v1,Code} -> + Code + end, + dbg_idb:insert(Db, mod_file, File), + dbg_idb:insert(Db, defs, []), + + put(vcount, 0), + put(fun_count, 0), + put(funs, []), + put(mod_md5, MD5), + + Forms1 = interpret_file_attribute(Forms0), + {Forms,Ctype} = standard_transforms(Forms1), + store_forms(Forms, Mod, Db, #{exp=>Exp, ctype => Ctype}), + + erase(mod_md5), + erase(current_function), + %% store_funs(Db, Mod), + erase(vcount), + erase(funs), + erase(fun_count), + + NewBinary = store_mod_line_no(Mod, Db, binary_to_list(Src)), + dbg_idb:insert(Db, mod_bin, NewBinary), + dbg_idb:insert(Db, mod_raw, <>). %% Add eos + +standard_transforms(Forms0) -> + Forms = erl_internal:add_predefined_functions(Forms0), + Ctype = init_calltype(Forms), + {Forms, Ctype}. + +init_calltype(Forms) -> + Locals = [{{Name,Arity},local} || {function,_,Name,Arity,_} <- Forms], + Ctype = maps:from_list(Locals), + init_calltype_imports(Forms, Ctype). + +init_calltype_imports([{attribute,_,import,{Mod,Fs}}|T], Ctype0) -> + true = is_atom(Mod), + Ctype = lists:foldl(fun(FA, Acc) -> + Acc#{FA=>{imported,Mod}} + end, Ctype0, Fs), + init_calltype_imports(T, Ctype); +init_calltype_imports([_|T], Ctype) -> + init_calltype_imports(T, Ctype); +init_calltype_imports([], Ctype) -> Ctype. + +%% Adjust line numbers using the file/2 attribute. +%% Also take the absolute value of line numbers. +%% This simple fix will make the marker point at the correct line +%% (assuming the file attributes are correct) in the source; it will +%% not point at code in included files. +interpret_file_attribute(Code) -> + epp:interpret_file_attribute(Code). + +abstr(Bin) when is_binary(Bin) -> binary_to_term(Bin); +abstr(Term) -> Term. + +% store_funs(Db, Mod) -> +% store_funs_1(get(funs), Db, Mod). + +% store_funs_1([{Name,Index,Uniq,_,_,Arity,Cs}|Fs], Db, Mod) -> +% dbg_idb:insert(Db, {Mod,Name,Arity,false}, Cs), +% dbg_idb:insert(Db, {'fun',Mod,Index,Uniq}, {Name,Arity,Cs}), +% store_funs_1(Fs, Db, Mod); +% store_funs_1([], _, _) -> ok. + +store_forms([{function,_,Name,Arity,Cs0}|Fs], Mod, Db, #{exp:=Exp} = St) -> + FA = {Name,Arity}, + put(current_function, FA), + Cs = clauses(Cs0,St), + Exported = lists:member(FA, Exp), + dbg_idb:insert(Db, {Mod,Name,Arity,Exported}, Cs), + store_forms(Fs, Mod, Db, St); +store_forms([{attribute,_,record,{Name,Defs}}|Fs], Mod, Db, St) -> + NDefs = normalise_rec_fields(Defs), + Fields = [F || {record_field, _, {atom, _, F}, _} <- NDefs], + dbg_idb:insert(Db, {record,Mod,Name,length(Fields)}, Fields), + Recs = maps:get(recs, St, #{}), + store_forms(Fs, Mod, Db, St#{recs => Recs#{Name => NDefs}}); +store_forms([{attribute,_,_Name,_Val}|Fs], Mod, Db, St) -> + store_forms(Fs, Mod, Db, St); +store_forms([_|Fs], Mod, Db, St) -> + %% Ignore other forms such as {eof,_} or {warning,_}. + store_forms(Fs, Mod, Db, St); +store_forms([], _, _, _) -> + ok. + +store_mod_line_no(Mod, Db, Contents) -> + store_mod_line_no(Mod, Db, Contents, 1, 0, []). + +store_mod_line_no(_, _, [], _, _, NewCont) -> + list_to_binary(lists:reverse(NewCont)); +store_mod_line_no(Mod, Db, Contents, LineNo, Pos, NewCont) when is_integer(LineNo) -> + {ContTail,Pos1,NewCont1} = store_line(Mod, Db, Contents, LineNo, Pos, NewCont), + store_mod_line_no(Mod, Db, ContTail, LineNo+1, Pos1, NewCont1). + +store_line(_, Db, Contents, LineNo, Pos, NewCont) -> + {ContHead,ContTail,PosNL} = get_nl(Contents,Pos+8,[]), + dbg_idb:insert(Db,LineNo,{Pos+8,PosNL}), + {ContTail,PosNL+1,[make_lineno(LineNo, 8, ContHead)|NewCont]}. + +make_lineno(N, P, Acc) -> + S = integer_to_list(N), + S ++ [$:|spaces(P-length(S)-1, Acc)]. + +spaces(P, Acc) when P > 0 -> + spaces(P-1, [$\s|Acc]); +spaces(_, Acc) -> Acc. + + +%% normalise_rec_fields([RecDef]) -> [Field]. +%% Normalise the field definitions to always have a default value. If +%% none has been given then use 'undefined'. + +normalise_rec_fields(Fs) -> + lists:map(fun ({record_field,Anno,Field}) -> + {record_field,Anno,Field,{atom,Anno,undefined}}; + ({typed_record_field,{record_field,Anno,Field},_Type}) -> + {record_field,Anno,Field,{atom,Anno,undefined}}; + ({typed_record_field,Field,_Type}) -> + Field; + (F) -> F + end, Fs). + +get_nl([10|T],Pos,Head) -> {lists:reverse([10|Head]),T,Pos}; +get_nl([H|T],Pos,Head) -> + get_nl(T,Pos+1,[H|Head]); +get_nl([],Pos,Head) -> {lists:reverse(Head),[],Pos}. + +%%% Rewrite the abstract syntax tree to that it will be easier (== faster) +%%% to interpret. + +clauses([C0|Cs],St) -> + C1 = clause(C0, true, St), + [C1|clauses(Cs, St)]; +clauses([], _St) -> []. + +clause({clause,Anno,H0,G0,B0}, Lc, St) -> + H1 = head(H0, St), + G1 = guard(G0, St), + B1 = exprs(B0, Lc, St), + {clause,ln(Anno),H1,G1,B1}. + +head(Ps, St) -> patterns(Ps, St). + +%% These patterns are processed "sequentially" for purposes of variable +%% definition etc. + +patterns([P0|Ps], St) -> + P1 = pattern(P0, St), + [P1|patterns(Ps, St)]; +patterns([], _St) -> []. + +%% N.B. Only valid patterns are included here. + +pattern({var,Anno,V}, _St) -> {var,ln(Anno),V}; +pattern({char,Anno,I}, _St) -> {value,ln(Anno),I}; +pattern({integer,Anno,I}, _St) -> {value,ln(Anno),I}; +pattern({match,Anno,Pat1,Pat2}, St) -> + {match,ln(Anno),pattern(Pat1, St),pattern(Pat2, St)}; +pattern({float,Anno,F}, _St) -> {value,ln(Anno),F}; +pattern({atom,Anno,A}, _St) -> {value,ln(Anno),A}; +pattern({string,Anno,S}, _St) -> {value,ln(Anno),S}; +pattern({nil,Anno}, _St) -> {value,ln(Anno),[]}; +pattern({cons,Anno,H0,T0}, St) -> + H1 = pattern(H0, St), + T1 = pattern(T0, St), + {cons,ln(Anno),H1,T1}; +pattern({tuple,Anno,Ps0}, St) -> + Ps1 = pattern_list(Ps0, St), + {tuple,ln(Anno),Ps1}; +pattern({record_index,Anno,Name,Field} = _DBG, St) -> + Expr = index_expr(Anno, Field, Name, record_fields(Name, Anno, St)), + pattern(Expr, St); +pattern({record,Anno,Name,Pfs}, St0) -> + Fs = record_fields(Name, Anno, St0), + TMs = pattern_list(pattern_fields(Fs, Pfs), St0), + {tuple,ln(Anno),[{value,ln(Anno),Name} | TMs]}; +pattern({map,Anno,Fs0}, St) -> + Fs1 = lists:map(fun ({map_field_exact,L,K,V}) -> + {map_field_exact,L,gexpr(K, St),pattern(V, St)} + end, Fs0), + {map,ln(Anno),Fs1}; +pattern({op,_,'-',{integer,Anno,I}}, _St) -> + {value,ln(Anno),-I}; +pattern({op,_,'+',{integer,Anno,I}}, _St) -> + {value,ln(Anno),I}; +pattern({op,_,'-',{char,Anno,I}}, _St) -> + {value,ln(Anno),-I}; +pattern({op,_,'+',{char,Anno,I}}, _St) -> + {value,ln(Anno),I}; +pattern({op,_,'-',{float,Anno,I}}, _St) -> + {value,ln(Anno),-I}; +pattern({op,_,'+',{float,Anno,I}}, _St) -> + {value,ln(Anno),I}; +pattern({bin,Anno,Grp}, St) -> + Grp1 = pattern_list(bin_expand_strings(Grp), St), + {bin,ln(Anno),Grp1}; +pattern({bin_element,Anno,Expr0,Size0,Type0}, St) -> + {Size1,Type} = make_bit_type(Anno, Size0, Type0), + Expr1 = pattern(Expr0,St), + Expr = coerce_to_float(Expr1, Type0), + Size = expr(Size1, false, St), + {bin_element,ln(Anno),Expr,Size,Type}; +%% Evaluate compile-time expressions. +pattern({op,_,'++',{nil,_},R}, St) -> + pattern(R, St); +pattern({op,_,'++',{cons,Li,H,T},R}, St) -> + pattern({cons,Li,H,{op,Li,'++',T,R}}, St); +pattern({op,_,'++',{string,Li,L},R}, St) -> + pattern(string_to_conses(Li, L, R), St); +pattern({op,_Line,_Op,_A}=Op, St) -> + pattern(erl_eval:partial_eval(Op), St); +pattern({op,_Line,_Op,_L,_R}=Op, St) -> + pattern(erl_eval:partial_eval(Op), St). + +string_to_conses(Anno, Cs, Tail) -> + lists:foldr(fun (C, T) -> {cons,Anno,{char,Anno,C},T} end, Tail, Cs). + +coerce_to_float({value,Anno,Int}=E, [float|_]) when is_integer(Int) -> + try + {value,Anno,float(Int)} + catch + error:badarg -> E + end; +coerce_to_float(E, _) -> E. + +%% These patterns are processed "in parallel" for purposes of variable +%% definition etc. + +pattern_list([P0|Ps], St) -> + P1 = pattern(P0, St), + [P1|pattern_list(Ps, St)]; +pattern_list([], _St) -> []. + +guard([G0|Gs], St) -> + G1 = and_guard(G0, St), + [G1|guard(Gs, St)]; +guard([], _St) -> []. + +and_guard([G0|Gs], St) -> + G1 = guard_test(G0, St), + [G1|and_guard(Gs, St)]; +and_guard([], _St) -> []. + + +guard_test({call,Anno,{atom,_,is_record},[A,{atom,_,Name}]}, St) -> + record_test_in_guard(Anno, A, Name, St); +guard_test({call,Anno,{remote,_,{atom,_,erlang},{atom,_,is_record}}, [A,{atom,_,Name}]}, + St) -> + record_test_in_guard(Anno, A, Name, St); +guard_test({call,Anno,{tuple,_,[{atom,_,erlang},{atom,_,is_record}]}, + [A,{atom,_,Name}]}, St) -> + record_test_in_guard(Anno, A, Name, St); +guard_test({call,Anno,{remote,_,{atom,_,erlang},{atom,_,F}},As0}, St) -> + As = gexpr_list(As0, St), + {safe_bif,ln(Anno),erlang,F,As}; +guard_test({call,Anno,{atom,_, F0},As0}, St) -> + F = normalise_test(F0, length(As0)), + true = erl_internal:bif(F,length(As0)), + As = gexpr_list(As0, St), + {safe_bif,ln(Anno),erlang,F,As}; +guard_test({op,Anno,Op,L0}, St) -> + true = erl_internal:arith_op(Op, 1) orelse %Assertion. + erl_internal:bool_op(Op, 1), + L1 = gexpr(L0, St), + {safe_bif,ln(Anno),erlang,Op,[L1]}; +guard_test({op,Anno,Op,L0,R0}, St) when Op =:= 'andalso'; Op =:= 'orelse' -> + L1 = gexpr(L0, St), + R1 = gexpr(R0, St), %They see the same variables + {Op,ln(Anno),L1,R1}; +guard_test({op,Anno,Op,L0,R0}, St) -> + true = erl_internal:comp_op(Op, 2) orelse %Assertion. + erl_internal:bool_op(Op, 2) orelse + erl_internal:arith_op(Op, 2), + L1 = gexpr(L0, St), + R1 = gexpr(R0, St), %They see the same variables + {safe_bif,ln(Anno),erlang,Op,[L1,R1]}; +guard_test({record_field,_A,R,Name,F}, St) -> + Anno = erl_parse:first_anno(R), + get_record_field_guard(Anno, R, F, Name, St); +guard_test({var,_,_}=V, _St) ->V; % Boolean var +guard_test({atom,Anno,true}, _St) -> {value,ln(Anno),true}; +%% All other constants at this level means false. +guard_test({atom,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({integer,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({char,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({float,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({string,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({nil,Anno}, _St) -> {value,ln(Anno),false}; +guard_test({cons,Anno,_,_}, _St) -> {value,ln(Anno),false}; +guard_test({tuple,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({map,Anno,_}, _St) -> {value,ln(Anno),false}; +guard_test({map,Anno,_,_}, _St) -> {value,ln(Anno),false}; +guard_test({bin,Anno,_}, _St) -> {value,ln(Anno),false}. + +gexpr({var,Anno,V}, _St) -> {var,ln(Anno),V}; +gexpr({integer,Anno,I}, _St) -> {value,ln(Anno),I}; +gexpr({char,Anno,I}, _St) -> {value,ln(Anno),I}; +gexpr({float,Anno,F}, _St) -> {value,ln(Anno),F}; +gexpr({atom,Anno,A}, _St) -> {value,ln(Anno),A}; +gexpr({string,Anno,S}, _St) -> {value,ln(Anno),S}; +gexpr({nil,Anno}, _St) -> {value,ln(Anno),[]}; +gexpr({cons,Anno,H0,T0}, St) -> + case {gexpr(H0, St),gexpr(T0, St)} of + {{value,Line,H1},{value,Line,T1}} -> {value,Line,[H1|T1]}; + {H1,T1} -> {cons,ln(Anno),H1,T1} + end; +gexpr({tuple,Anno,Es0}, St) -> + Es1 = gexpr_list(Es0, St), + {tuple,ln(Anno),Es1}; +gexpr({record, _, _, _}=Rec, St) -> + expr(Rec, false, St); +gexpr({map,Anno,Fs0}, St) -> + new_map(Fs0, Anno, St, fun(F) -> gexpr(F,St) end); +gexpr({map,Anno,E0,Fs0}, St) -> + E1 = gexpr(E0, St), + Fs1 = map_fields(Fs0, St, fun(F) -> gexpr(F,St) end), + {map,ln(Anno),E1,Fs1}; +gexpr({bin,Anno,Flds0}, St) -> + Flds = gexpr_list(bin_expand_strings(Flds0), St), + {bin,ln(Anno),Flds}; +gexpr({bin_element,Anno,Expr0,Size0,Type0}, St) -> + {Size1,Type} = make_bit_type(Anno, Size0, Type0), + Expr = gexpr(Expr0, St), + Size = gexpr(Size1, St), + {bin_element,ln(Anno),Expr,Size,Type}; +gexpr({call,Anno,{atom,_,is_record},[A,{atom,_,Name}]}, St) -> + record_test_in_guard(Anno, A, Name, St); +gexpr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,is_record}}, [A,{atom,_,Name}]}, + St) -> + record_test_in_guard(Anno, A, Name, St); +gexpr({call,Anno,{tuple,_,[{atom,_,erlang},{atom,_,is_record}]}, + [A,{atom,_,Name}]}, St) -> + record_test_in_guard(Anno, A, Name, St); +gexpr({record_field,_A,R,Name,F}, St) -> + Anno = erl_parse:first_anno(R), + get_record_field_guard(Anno, R, F, Name, St); +gexpr({record_index,Anno,Name,F}, St) -> + I = index_expr(Anno, F, Name, record_fields(Name, Anno, St)), + gexpr(I, St); +gexpr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,self}},[]}, _St) -> + {dbg,ln(Anno),self,[]}; +gexpr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,F}},As0}, St) -> + As = gexpr_list(As0, St), + {safe_bif,ln(Anno),erlang,F,As}; +gexpr({call,Anno,{atom,_,self},[]}, _St) -> + {dbg,ln(Anno),self,[]}; +gexpr({call,Anno,{atom,_, F},As0}, St) -> + true = erl_internal:bif(F,length(As0)), + As = gexpr_list(As0, St), + {safe_bif,ln(Anno),erlang,F,As}; +gexpr({op,Anno,Op,A0}, St) -> + erl_internal:arith_op(Op, 1), + A1 = gexpr(A0, St), + {safe_bif,ln(Anno),erlang,Op,[A1]}; +gexpr({op,Anno,Op,L0,R0}, St) when Op =:= 'andalso'; Op =:= 'orelse' -> + L1 = gexpr(L0, St), + R1 = gexpr(R0, St), %They see the same variables + {Op,ln(Anno),L1,R1}; +gexpr({op,Anno,Op,L0,R0}, St) -> + true = erl_internal:arith_op(Op, 2) orelse erl_internal:comp_op(Op, 2) + orelse erl_internal:bool_op(Op, 2), + L1 = gexpr(L0, St), + R1 = gexpr(R0, St), %They see the same variables + {safe_bif,ln(Anno),erlang,Op,[L1,R1]}. + +%% These expressions are processed "in parallel" for purposes of variable +%% definition etc. + +gexpr_list([E0|Es], St) -> + E1 = gexpr(E0, St), + [E1|gexpr_list(Es, St)]; +gexpr_list([], _St) -> []. + +%% These expressions are processed "sequentially" for purposes of variable +%% definition etc. + +exprs([E], Lc, St) -> + [expr(E, Lc, St)]; +exprs([E0|Es], Lc, St) -> + E1 = expr(E0, false, St), + [E1|exprs(Es, Lc, St)]; +exprs([], _Lc, _St) -> []. + +expr({var,Anno,V}, _Lc, _St) -> {var,ln(Anno),V}; +expr({integer,Anno,I}, _Lc, _St) -> {value,ln(Anno),I}; +expr({char,Anno,I}, _Lc, _St) -> {value,ln(Anno),I}; +expr({float,Anno,F}, _Lc, _St) -> {value,ln(Anno),F}; +expr({atom,Anno,A}, _Lc, _St) -> {value,ln(Anno),A}; +expr({string,Anno,S}, _Lc, _St) -> {value,ln(Anno),S}; +expr({nil,Anno}, _Lc, _St) -> {value,ln(Anno),[]}; +expr({cons,Anno,H0,T0}, _Lc, St) -> + case {expr(H0, false, St),expr(T0, false, St)} of + {{value,Line,H1},{value,Line,T1}} -> {value,Line,[H1|T1]}; + {H1,T1} -> {cons,ln(Anno),H1,T1} + end; +expr({tuple,Anno,Es0}, _Lc, St) -> + Es1 = expr_list(Es0, St), + {tuple,ln(Anno),Es1}; +expr({record_index,Anno,Name,F}, Lc, St) -> + I = index_expr(Anno, F, Name, record_fields(Name, Anno, St)), + expr(I, Lc, St); +expr({record_field,_A,R,Name,F}, _Lc, St) -> + Anno = erl_parse:first_anno(R), + get_record_field_body(Anno, R, F, Name, St); +expr({record,Anno,R,Name,Us}, Lc, St) -> + Ue = record_update(R, Name, record_fields(Name, Anno, St), Us, St), + expr(Ue, Lc, St); +expr({record,Anno,Name,Is}, Lc, St) -> + expr({tuple,Anno,[{atom,Anno,Name} | + record_inits(record_fields(Name, Anno, St), Is)]}, + Lc, St); +expr({record_update, Anno, Es0}, Lc, St) -> + %% Unfold block into a sequence. + Es1 = exprs(Es0, Lc, St), + {record_update,ln(Anno),Es1}; +expr({map,Anno,Fs}, _Lc, St) -> + new_map(Fs, Anno, St, fun (E) -> expr(E, false, St) end); +expr({map,Anno,E0,Fs0}, _Lc, St) -> + E1 = expr(E0, false, St), + Fs1 = map_fields(Fs0, St), + {map,ln(Anno),E1,Fs1}; +expr({block,Anno,Es0}, Lc, St) -> + %% Unfold block into a sequence. + Es1 = exprs(Es0, Lc, St), + {block,ln(Anno),Es1}; +expr({'if',Anno,Cs0}, Lc, St) -> + Cs1 = icr_clauses(Cs0, Lc, St), + {'if',ln(Anno),Cs1}; +expr({'case',Anno,E0,Cs0}, Lc, St) -> + E1 = expr(E0, false, St), + Cs1 = icr_clauses(Cs0, Lc, St), + {'case',ln(Anno),E1,Cs1}; +expr({'receive',Anno,Cs0}, Lc, St) -> + Cs1 = icr_clauses(Cs0, Lc, St), + {'receive',ln(Anno),Cs1}; +expr({'receive',Anno,Cs0,To0,ToEs0}, Lc, St) -> + To1 = expr(To0, false, St), + ToEs1 = exprs(ToEs0, Lc, St), + Cs1 = icr_clauses(Cs0, Lc, St), + {'receive',ln(Anno),Cs1,To1,ToEs1}; +expr({'maybe',Anno,Es0}, Lc, St) -> + Es1 = exprs(Es0, Lc, St), + {'maybe',ln(Anno),Es1}; +expr({'maybe',Anno,Es0,{'else',_ElseAnno,Cs0}}, Lc, St) -> + Es1 = exprs(Es0, Lc, St), + Cs1 = icr_clauses(Cs0, Lc, St), + {'maybe',ln(Anno),Es1,Cs1}; +expr({'fun',Anno,{clauses,Cs0}}, _Lc, St) -> + %% New R10B-2 format (abstract_v2). + Cs = fun_clauses(Cs0, St), + Name = new_fun_name(), + {make_fun,ln(Anno),Name,Cs}; +expr({'fun',Anno,{function,F,A}}, _Lc, _St) -> + %% New R8 format (abstract_v2). + Line = ln(Anno), + case erl_internal:bif(F, A) of + true -> + %% Auto-imported BIF. Create an external fun. + {value,Line,fun erlang:F/A}; + false -> + %% A local function. + As = new_vars(A, Line), + Name = new_fun_name(), + Cs = [{clause,Line,As,[],[{local_call,Line,F,As,true}]}], + {make_fun,Line,Name,Cs} + end; +expr({named_fun,Anno,FName,Cs0}, _Lc, St) -> + Cs = fun_clauses(Cs0, St), + Name = new_fun_name(), + {make_named_fun,ln(Anno),Name,FName,Cs}; +expr({'fun',Anno,{function,{atom,_,M},{atom,_,F},{integer,_,A}}}, _Lc, _St) + when 0 =< A, A =< 255 -> + %% New format in R15 for fun M:F/A (literal values). + {value,ln(Anno),erlang:make_fun(M, F, A)}; +expr({'fun',Anno,{function,M,F,A}}, _Lc, St) -> + %% New format in R15 for fun M:F/A (one or more variables). + MFA = expr_list([M,F,A], St), + {make_ext_fun,ln(Anno),MFA}; +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,self}},[]}, _Lc, _St) -> + {dbg,ln(Anno),self,[]}; +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,throw}},[_]=As}, _Lc, St) -> + {dbg,ln(Anno),throw,expr_list(As, St)}; +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,error}},[_]=As}, _Lc, St) -> + {dbg,ln(Anno),error,expr_list(As, St)}; +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,exit}},[_]=As}, _Lc, St) -> + {dbg,ln(Anno),exit,expr_list(As, St)}; +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,raise}},[_,_,_]=As}, _Lc, St) -> + {dbg,ln(Anno),raise,expr_list(As, St)}; +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,apply}},[_,_,_]=As0}, Lc, St) -> + As = expr_list(As0, St), + {apply,ln(Anno),As,Lc}; +expr({call,Anno,{atom,_,is_record},[A,{atom,_,Name}]}, Lc, St) -> + record_test_in_body(Anno, A, Name, Lc, St); +expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,is_record}}, [A,{atom,_,Name}]}, + Lc, St) -> + record_test_in_body(Anno, A, Name, Lc, St); +expr({call,Anno,{tuple,_,[{atom,_,erlang},{atom,_,is_record}]}, + [A,{atom,_,Name}]}, Lc, St) -> + record_test_in_body(Anno, A, Name, Lc, St); +expr({call,Anno,{atom,_AnnoA,record_info},[_,_]=As0}, Lc, St) -> + As = expr_list(As0, St), + expr(record_info_call(Anno, As, St), Lc, St); +expr({call,Anno,{remote,_,{atom,_,Mod},{atom,_,Func}},As0}, Lc, St) -> + As = expr_list(As0, St), + case erlang:is_builtin(Mod, Func, length(As)) of + false -> + {call_remote,ln(Anno),Mod,Func,As,Lc}; + true -> + case bif_type(Mod, Func, length(As0)) of + safe -> {safe_bif,ln(Anno),Mod,Func,As}; + unsafe ->{bif,ln(Anno),Mod,Func,As} + end + end; +expr({call,Anno,{remote,_,Mod0,Func0},As0}, Lc, St) -> + %% New R8 format (abstract_v2). + Mod = expr(Mod0, false, St), + Func = expr(Func0, false, St), + As = consify(expr_list(As0, St)), + {apply,ln(Anno),[Mod,Func,As],Lc}; +expr({call,Anno,{atom,_,Func}=F,As0}, Lc, #{ctype:=Ctypes} = St) -> + As = expr_list(As0, St), + Ar = length(As), + NA = {Func,Ar}, + Special = lists:member(Func, [self,throw,error,exit,raise,apply]), + case maps:get(NA, Ctypes, undefined) of + local -> + {local_call,ln(Anno),Func,As,Lc}; + {imported, Mod} -> + {call_remote,ln(Anno),Mod,Func,As,Lc}; + undefined when Special -> + expr({call,Anno,{remote,Anno,{atom,Anno,erlang},F},As0}, Lc, St); + undefined -> + case erl_internal:bif(Func, Ar) andalso bif_type(erlang, Func, Ar) of + false -> {local_call,ln(Anno),Func,As,Lc}; + safe -> {safe_bif,ln(Anno),erlang,Func,As}; + unsafe -> {bif,ln(Anno),erlang,Func,As} + end + end; +expr({call,Anno,Fun0,As0}, Lc, St) -> + Fun = expr(Fun0, false, St), + As = expr_list(As0, St), + {apply_fun,ln(Anno),Fun,As,Lc}; +expr({'catch',Anno,E0}, _Lc, St) -> + %% No new variables added. + E1 = expr(E0, false, St), + {'catch',ln(Anno),E1}; +expr({'try',Anno,Es0,CaseCs0,CatchCs0,As0}, Lc, St) -> + %% No new variables added. + Es = expr_list(Es0, St), + CaseCs = icr_clauses(CaseCs0, Lc, St), + CatchCs = icr_clauses(CatchCs0, Lc, St), + As = expr_list(As0, St), + {'try',ln(Anno),Es,CaseCs,CatchCs,As}; +expr({lc,_,_,_}=Compr, _Lc, St) -> + expr_comprehension(Compr, St); +expr({bc,_,_,_}=Compr, _Lc, St) -> + expr_comprehension(Compr, St); +expr({mc,_,_,_}=Compr, _Lc, St) -> + expr_comprehension(Compr, St); +expr({match,Anno,P0,E0}, _Lc, St) -> + E1 = expr(E0, false, St), + P1 = pattern(P0, St), + {match,ln(Anno),P1,E1}; +expr({maybe_match,Anno,P0,E0}, _Lc, St) -> + E1 = expr(E0, false, St), + P1 = pattern(P0, St), + {maybe_match,ln(Anno),P1,E1}; +expr({op,Anno,Op,A0}, _Lc, St) -> + A1 = expr(A0, false, St), + {op,ln(Anno),Op,[A1]}; +expr({op,Anno,'++',L0,R0}, _Lc, St) -> + L1 = expr(L0, false, St), + R1 = expr(R0, false, St), %They see the same variables + {op,ln(Anno),append,[L1,R1]}; +expr({op,Anno,'--',L0,R0}, _Lc, St) -> + L1 = expr(L0, false, St), + R1 = expr(R0, false, St), %They see the same variables + {op,ln(Anno),subtract,[L1,R1]}; +expr({op,Anno,'!',L0,R0}, _Lc, St) -> + L1 = expr(L0, false, St), + R1 = expr(R0, false, St), %They see the same variables + {send,ln(Anno),L1,R1}; +expr({op,Anno,Op,L0,R0}, _Lc, St) when Op =:= 'andalso'; Op =:= 'orelse' -> + L1 = expr(L0, false, St), + R1 = expr(R0, false, St), %They see the same variables + {Op,ln(Anno),L1,R1}; +expr({op,Anno,Op,L0,R0}, _Lc, St) -> + L1 = expr(L0, false, St), + R1 = expr(R0, false, St), %They see the same variables + {op,ln(Anno),Op,[L1,R1]}; +expr({bin,Anno,Grp}, _Lc, St) -> + Grp1 = expr_list(bin_expand_strings(Grp), St), + {bin,ln(Anno),Grp1}; +expr({bin_element,Anno,Expr0,Size0,Type0}, _Lc, St) -> + {Size1,Type} = make_bit_type(Anno, Size0, Type0), + Expr = expr(Expr0, false, St), + Size = expr(Size1, false, St), + {bin_element,ln(Anno),Expr,Size,Type}; +expr({map_field_assoc,L,K0,V0}, _Lc, St) -> + K = expr(K0, false, St), + V = expr(V0, false, St), + {map_field_assoc,L,K,V}. + +consify([A|As]) -> + {cons,0,A,consify(As)}; +consify([]) -> {value,0,[]}. + +make_bit_type(Line, default, Type0) -> + case erl_bits:set_bit_type(default, Type0) of + {ok,all,Bt} -> {{atom,Line,all},erl_bits:as_list(Bt)}; + {ok,undefined,Bt} -> {{atom,Line,undefined},erl_bits:as_list(Bt)}; + {ok,Size,Bt} -> {{integer,Line,Size},erl_bits:as_list(Bt)} + end; +make_bit_type(_Line, Size, Type0) -> %Integer or 'all' + {ok,Size,Bt} = erl_bits:set_bit_type(Size, Type0), + {Size,erl_bits:as_list(Bt)}. + +expr_comprehension({Tag,Anno,E0,Gs0}, St) -> + Gs = [case G of + ({generate,L,P0,Qs}) -> + {generator,{generate,L,pattern(P0, St),expr(Qs, false, St)}}; + ({b_generate,L,P0,Qs}) -> %R12. + {generator,{b_generate,L,pattern(P0, St),expr(Qs, false, St)}}; + ({m_generate,L,P0,Qs}) -> %OTP 26 + {generator,{m_generate,L,mc_pattern(P0, St),expr(Qs, false, St)}}; + (Expr) -> + case is_guard_test(Expr, St) of + true -> {guard,guard([[Expr]], St)}; + false -> expr(Expr, false, St) + end + end || G <- Gs0], + {Tag,ln(Anno),expr(E0, false, St),Gs}. + +mc_pattern({map_field_exact,L,KeyP0,ValP0}, St) -> + KeyP1 = pattern(KeyP0, St), + ValP1 = pattern(ValP0, St), + {map_field_exact,L,KeyP1,ValP1}. + +is_guard_test(Expr, #{ctype:=Ctypes}) -> + IsOverridden = fun(NA) -> + case maps:get(NA, Ctypes, undefined) of + local -> true; + {imported,_} -> true; + undefined -> false + end + end, + erl_lint:is_guard_test(Expr, [], IsOverridden). + +normalise_test(atom, 1) -> is_atom; +normalise_test(binary, 1) -> is_binary; +normalise_test(float, 1) -> is_float; +normalise_test(function, 1) -> is_function; +normalise_test(integer, 1) -> is_integer; +normalise_test(list, 1) -> is_list; +normalise_test(number, 1) -> is_number; +normalise_test(pid, 1) -> is_pid; +normalise_test(port, 1) -> is_port; +normalise_test(record, 2) -> is_record; +normalise_test(reference, 1) -> is_reference; +normalise_test(tuple, 1) -> is_tuple; +normalise_test(Name, _) -> Name. + +%% As Expr may have side effects, we must evaluate it +%% first and bind the value to a new variable. +%% We must use also handle the case that Expr does not +%% evaluate to a tuple properly. + +record_test_in_body(Anno, Expr, Name, Lc, St) -> + Fs = record_fields(Name, Anno, St), + Var = {var, Anno, new_var_name()}, + expr({block,Anno, + [{match,Anno,Var,Expr}, + {call,Anno,{remote,Anno,{atom,Anno,erlang}, + {atom,Anno,is_record}}, + [Var,{atom,Anno,Name},{integer,Anno,length(Fs)+1}]}]}, Lc, St). + +record_test_in_guard(Anno, Term, Name, St) -> + Fs = record_fields(Name, Anno, St), + expr({call,Anno,{remote,Anno,{atom,Anno,erlang},{atom,Anno,is_record}}, + [Term,{atom,Anno,Name},{integer,Anno,length(Fs)+1}]}, false, St). + +%% Expand a call to record_info/2. We have checked that it is not +%% shadowed by an import. + +record_info_call(Anno, [{value,_AnnoI,Info},{value,_AnnoN,Name}], St) -> + case Info of + size -> + {integer,Anno,1+length(record_fields(Name, Anno, St))}; + fields -> + Fs = lists:map(fun({record_field,_,Field,_Val}) -> Field end, + record_fields(Name, Anno, St)), + lists:foldr(fun (H, T) -> {cons,Anno,H,T} end, {nil,Anno}, Fs) + end. + +record_fields(R, Anno, #{recs := Recs}) -> + Fields = maps:get(R, Recs), + [{record_field,Anno,{atom,Anno,F},copy_expr(Di, Anno)} || + {record_field,_Anno,{atom,_AnnoA,F},Di} <- Fields]. + + +%% record_inits([RecDefField], [Init]) -> [InitExpr]. +%% Build a list of initialisation expressions for the record tuple +%% elements. This expansion must be passed through expr +%% again. N.B. We are scanning the record definition field list! + +record_inits(Fs, Is) -> + WildcardInit = record_wildcard_init(Is), + lists:map(fun ({record_field,_,{atom,_,F},D}) -> + case find_field(F, Is) of + {ok,Init} -> Init; + error when WildcardInit =:= none -> D; + error -> WildcardInit + end + end, Fs). + +record_wildcard_init([{record_field,_,{var,_,'_'},D} | _]) -> D; +record_wildcard_init([_ | Is]) -> record_wildcard_init(Is); +record_wildcard_init([]) -> none. + +%% copy_expr(Expr, Anno) -> Expr. +%% Make a copy of Expr converting all annotations to Anno. +copy_expr(Expr, Anno) -> + erl_parse:map_anno(fun(_A) -> Anno end, Expr). + +find_field(F, [{record_field,_,{atom,_,F},Val} | _]) -> {ok,Val}; +find_field(F, [_ | Fs]) -> find_field(F, Fs); +find_field(_, []) -> error. + +%% record_update(Record, RecordName, [RecDefField], [Update], State) -> +%% {Expr,State'} +%% Build an expression to update fields in a record returning a new +%% record. Try to be smart and optimise this. This expansion must be +%% passed through expr again. + +record_update(R, Name, Fs, Us0, St) -> + Anno = element(2, R), + {Pre,Us} = record_exprs(Us0, St), + %% We need a new variable for the record expression + %% to guarantee that it is only evaluated once. + Var = {var, Anno, new_var_name()}, + Update = record_match(Var, Name, Anno, Fs, Us, St), + {record_update,Anno, Pre ++ [{match,Anno,Var,R},Update]}. + +%% record_match(Record, RecordName, Anno, [RecDefField], [Update], State) +%% Build a 'case' expression to modify record fields. + +record_match(R, Name, Anno, Fs, Us, St) -> + {Ps,News} = record_upd_fs(Fs, Us, St), + {'case',ln(Anno),R, + [{clause,ln(Anno),[{tuple,Anno,[{atom,Anno,Name} | Ps]}],[], + [{tuple,Anno,[{atom,Anno,Name} | News]}]}, + {clause,Anno,[{var,Anno,'_'}],[], + [call_error(Anno, {tuple,Anno,[{atom,Anno,badrecord},{atom,Anno,Name}]})]} + ]}. + +record_upd_fs([{record_field,Anno,{atom,_AnnoA,F},_Val} | Fs], Us, St) -> + P = {var, Anno, new_var_name()}, + {Ps,News} = record_upd_fs(Fs, Us, St), + case find_field(F, Us) of + {ok,New} -> {[P | Ps],[New | News]}; + error -> {[P | Ps],[P | News]} + end; +record_upd_fs([], _, _) -> {[],[]}. + +call_error(Anno, R) -> + {call,Anno,{remote,Anno,{atom,Anno,erlang},{atom,Anno,error}},[R]}. + +%% Break out expressions from an record update list and bind to new +%% variables. The idea is that we will evaluate all update expressions +%% before starting to update the record. + +record_exprs(Us, St) -> + record_exprs(Us, St, [], []). + +record_exprs([{record_field,Anno,{atom,_AnnoA,_F}=Name,Val}=Field0 | Us], St, Pre, Fs) -> + case is_simple_val(Val) of + true -> + record_exprs(Us, St, Pre, [Field0 | Fs]); + false -> + Var = {var, Anno, new_var_name()}, + Bind = {match,ln(Anno),Var,Val}, + Field = {record_field,ln(Anno),Name,Var}, + record_exprs(Us, St, [Bind | Pre], [Field | Fs]) + end; +record_exprs([], _St, Pre, Fs) -> + {lists:reverse(Pre),Fs}. + +is_simple_val({var,_,_}) -> true; +is_simple_val(Val) -> + try + erl_parse:normalise(Val), + true + catch error:_ -> + false + end. + +%% pattern_fields([RecDefField], [Match]) -> [Pattern]. +%% Build a list of match patterns for the record tuple elements. +%% This expansion must be passed through pattern again. N.B. We are +%% scanning the record definition field list! + +pattern_fields(Fs, Ms) -> + Wildcard = record_wildcard_init(Ms), + lists:map(fun ({record_field,Anno,{atom,_,F},_}) -> + case find_field(F, Ms) of + {ok,Match} -> Match; + error when Wildcard =:= none -> {var,Anno,'_'}; + error -> Wildcard + end + end, Fs). + +%% index_expr(Anno, FieldExpr, Name, Fields) -> IndexExpr. +%% Return an expression which evaluates to the index of a +%% field. Currently only handle the case where the field is an +%% atom. This expansion must be passed through expr again. + +index_expr(Anno, {atom,_,F}, _Name, Fs) -> + {integer,Anno,index_expr(F, Fs, 2)}. + +index_expr(F, [{record_field,_,{atom,_,F},_} | _], I) -> I; +index_expr(F, [_ | Fs], I) -> index_expr(F, Fs, I+1). + + +%% get_record_field(Anno, RecExpr, FieldExpr, Name, St) -> {Expr,St'}. +%% Return an expression which verifies that the type of record +%% is correct and then returns the value of the field. +%% This expansion must be passed through expr again. + +get_record_field_body(Anno, R, {atom,_,F}, Name, St) -> + Var = {var, Anno, new_var_name()}, + Fs = record_fields(Name, Anno, St), + I = index_expr(F, Fs, 2), + P = record_pattern(2, I, Var, length(Fs)+1, Anno, [{atom,Anno,Name}]), + E = {'case',Anno,R, + [{clause,Anno,[{tuple,Anno,P}],[],[Var]}, + {clause,Anno,[{var,Anno,'_'}],[], + [{call,Anno,{remote,Anno, + {atom,Anno,erlang}, + {atom,Anno,error}}, + [{tuple,Anno,[{atom,Anno,badrecord},{atom,Anno,Name}]}]}]}]}, + expr(E, false, St). + +get_record_field_guard(Anno, R, {atom,_,F}, Name, St) -> + Fs = record_fields(Name, Anno, St), + I = index_expr(F, Fs, 2), + ExpR = expr(R, false, St), + %% Just to make comparison simple: + %% A0 = erl_anno:new(0), + %% ExpRp = erl_parse:map_anno(fun(_A) -> A0 end, ExpR), + %% RA = {{Name,ExpRp},Anno,ExpR,length(Fs)+1}, + %% St2 = St1#exprec{strict_ra = [RA | St1#exprec.strict_ra]}, + {safe_bif,ln(Anno),erlang,element,[{value,ln(Anno),I},ExpR]}. + +record_pattern(I, I, Var, Sz, Anno, Acc) -> + record_pattern(I+1, I, Var, Sz, Anno, [Var | Acc]); +record_pattern(Cur, I, Var, Sz, Anno, Acc) when Cur =< Sz -> + record_pattern(Cur+1, I, Var, Sz, Anno, [{var,Anno,'_'} | Acc]); +record_pattern(_, _, _, _, _, Acc) -> lists:reverse(Acc). + +%% The debugger converts both strings "abc" and lists [67, 68, 69] +%% into {value, Line, [67, 68, 69]}, making it impossible to later +%% distinguish one or the other inside binaries when evaluating. To +%% avoid <<[67, 68, 69]>> from evaluating, we convert strings into +%% chars to avoid the ambiguity. +bin_expand_strings(Es) -> + lists:foldr(fun ({bin_element,Line,{string,_,S},Sz,Ts}, Es1) -> + lists:foldr(fun (C, Es2) -> + [{bin_element,Line,{char,Line,C},Sz,Ts}|Es2] + end, Es1, S); + (E, Es1) -> [E|Es1] + end, [], Es). + +%% -type expr_list([Expression]) -> [Expression]. +%% These expressions are processed "in parallel" for purposes of variable +%% definition etc. + +expr_list([E0|Es], St) -> + E1 = expr(E0, false, St), + [E1|expr_list(Es, St)]; +expr_list([], _St) -> []. + +icr_clauses([C0|Cs], Lc, St) -> + C1 = clause(C0, Lc, St), + [C1|icr_clauses(Cs, Lc, St)]; +icr_clauses([], _, _St) -> []. + +fun_clauses([{clause,A,H,G,B}|Cs], St) -> + [{clause,ln(A),head(H, St),guard(G, St),exprs(B, true, St)}|fun_clauses(Cs, St)]; +fun_clauses([], _St) -> []. + +new_map(Fs0, Anno, St, F) -> + Line = ln(Anno), + Fs1 = map_fields(Fs0, St, F), + Fs2 = [{L,K,V} || {map_field_assoc,L,K,V} <- Fs1], + try + {value,Line,map_literal(Fs2, #{})} + catch + throw:not_literal -> + {map,Line,Fs2} + end. + +map_literal([{_,{value,_,K},{value,_,V}}|T], M) -> + map_literal(T, maps:put(K, V, M)); +map_literal([_|_], _) -> + throw(not_literal); +map_literal([], M) -> M. + +map_fields(Fs, St) -> + map_fields(Fs, St, fun (E) -> expr(E, false, St) end). + +map_fields([{map_field_assoc,A,N,V}|Fs], St, F) -> + [{map_field_assoc,ln(A),F(N),F(V)}|map_fields(Fs, St, F)]; +map_fields([{map_field_exact,A,N,V}|Fs], St, F) -> + [{map_field_exact,ln(A),F(N),F(V)}|map_fields(Fs, St, F)]; +map_fields([], _St, _) -> []. + +%% new_var_name() -> VarName. + +new_var_name() -> + C = get(vcount), + put(vcount, C+1), + list_to_atom("%" ++ integer_to_list(C)). + +%% new_vars(Count, Line) -> [Var]. +%% Make Count new variables. + +new_vars(N, L) -> new_vars(N, L, []). + +new_vars(N, L, Vs) when N > 0 -> + V = {var,L,new_var_name()}, + new_vars(N-1, L, [V|Vs]); +new_vars(0, _, Vs) -> Vs. + +new_fun_name() -> + {F,A} = get(current_function), + I = get(fun_count), + put(fun_count, I+1), + Name = "-" ++ atom_to_list(F) ++ "/" ++ integer_to_list(A) ++ + "-fun-" ++ integer_to_list(I) ++ "-", + list_to_atom(Name). + +ln(Anno) -> + erl_anno:line(Anno). + +bif_type(erlang, Name, Arity) -> + case erl_internal:guard_bif(Name, Arity) of + true -> + %% Guard BIFs are safe (except for self/0, but it is + %% handled with a special instruction anyway). + safe; + false -> + bif_type(Name) + end; +bif_type(_, _, _) -> unsafe. + +bif_type(register) -> safe; +bif_type(unregister) -> safe; +bif_type(whereis) -> safe; +bif_type(registered) -> safe; +bif_type(setelement) -> safe; +bif_type(atom_to_list) -> safe; +bif_type(list_to_atom) -> safe; +bif_type(integer_to_list) -> safe; +bif_type(list_to_integer) -> safe; +bif_type(float_to_list) -> safe; +bif_type(list_to_float) -> safe; +bif_type(tuple_to_list) -> safe; +bif_type(list_to_tuple) -> safe; +bif_type(make_ref) -> safe; +bif_type(time) -> safe; +bif_type(date) -> safe; +bif_type(processes) -> safe; +bif_type(process_info) -> safe; +bif_type(load_module) -> safe; +bif_type(delete_module) -> safe; +bif_type(halt) -> safe; +bif_type(check_process_code) -> safe; +bif_type(purge_module) -> safe; +bif_type(pid_to_list) -> safe; +bif_type(list_to_pid) -> safe; +bif_type(module_loaded) -> safe; +bif_type(binary_to_term) -> safe; +bif_type(term_to_binary) -> safe; +bif_type(nodes) -> safe; +bif_type(is_alive) -> safe; +bif_type(disconnect_node) -> safe; +bif_type(binary_to_list) -> safe; +bif_type(list_to_binary) -> safe; +bif_type(split_binary) -> safe; +bif_type(hash) -> safe; +bif_type(pre_loaded) -> safe; +bif_type(set_cookie) -> safe; +bif_type(get_cookie) -> safe; +bif_type(_) -> unsafe. diff --git a/debugger/erlide_debugger_27/src/dbg_iserver.erl b/debugger/erlide_debugger_27/src/dbg_iserver.erl new file mode 100644 index 0000000..5a0a41f --- /dev/null +++ b/debugger/erlide_debugger_27/src/dbg_iserver.erl @@ -0,0 +1,613 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2024. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(dbg_iserver). +-moduledoc false. +-behaviour(gen_server). + +%% External exports +-export([start/0, stop/0, find/0, + call/1, call/2, cast/1, cast/2, safe_call/1, safe_cast/1]). + +%% gen_server callbacks +-export([init/1, handle_call/3, handle_cast/2, handle_info/2, + terminate/2, code_change/3]). + +-record(proc, {pid, % pid() Debugged process + meta, % pid() Meta process + attpid, % pid() | undefined Attached process + status, % running | exit | idle | waiting + info = {}, % {} | term() + exit_info= {}, % {} | {{Mod,Line}, Bs, Stack} + function % {Mod,Func,Args} Initial function call + }). + +-record(state, {db, % ETS table + procs = [], % [#proc{}] + breaks = [], % [{{M,L},Options} Breakpoints + auto, % Auto attach settings + stack, % Stack trace settings + subs = [] % [pid()] Subscribers (Debugger) + }). + + +%%==================================================================== +%% External exports +%%==================================================================== + +start() -> + gen_server:start({local, ?MODULE}, ?MODULE, [], []). + +stop() -> + gen_server:cast(?MODULE, stop). + +find() -> + global:whereis_name(?MODULE). + +call(Request) -> + gen_server:call(?MODULE, Request, infinity). + +call(Int, Request) -> + gen_server:call(Int, Request, infinity). + +cast(Request) -> + gen_server:cast(?MODULE, Request). + +cast(Int, Request) -> + gen_server:cast(Int, Request). + +safe_call(Request) -> + {ok, _} = ensure_started(), + call(Request). + +safe_cast(Request) -> + {ok, _} = ensure_started(), + cast(Request). + +ensure_started() -> + case whereis(?MODULE) of + undefined -> start(); + Pid -> {ok, Pid} + end. + +%%--Module database--------------------------------------------------- +%% This server creates an ETS table, where the following information +%% is saved: +%% +%% Key Value +%% --- ----- +%% {Mod, refs} [ModDb] +%% ModDb [pid()] +%% +%% In each ModDb, the following information is saved by dbg_iload: +%% +%% Key Value +%% --- ----- +%% defs [] +%% mod_bin Binary +%% mod_raw Raw Binary +%% mod_file File +%% {Mod,Name,Arity,Exported} Cs +%% {'fun',Mod,Index,Uniq} {Name,Arity,Cs} +%% Line {Pos,PosNL} + + +%%==================================================================== +%% gen_server callbacks +%%==================================================================== + +init([]) -> + process_flag(trap_exit, true), + global:register_name(?MODULE, self()), + Db = ets:new(?MODULE, [ordered_set, protected]), + {ok, #state{db=Db, auto=false, stack=no_tail}}. + +%% Attaching to a process +handle_call({attached, AttPid, Pid}, _From, State) -> + {true, Proc} = get_proc({pid, Pid}, State#state.procs), + case Proc#proc.attpid of + undefined -> + link(AttPid), + case Proc#proc.status of + exit -> + Args = [self(), + AttPid,Pid,Proc#proc.info, + Proc#proc.exit_info], + Meta = spawn_link(dbg_ieval, exit_info, Args), + Proc2 = Proc#proc{meta=Meta, attpid=AttPid}, + Procs = lists:keyreplace(Pid, #proc.pid, + State#state.procs, Proc2), + {reply, {ok,Meta}, State#state{procs=Procs}}; + _Status -> + Meta = Proc#proc.meta, + send(Meta, {attached, AttPid}), + Procs = lists:keyreplace(Pid, #proc.pid, + State#state.procs, + Proc#proc{attpid=AttPid}), + {reply, {ok, Meta}, State#state{procs=Procs}} + end; + _AttPid -> % there is already an attached process + {reply, error, State} + end; + +%% Getting and setting options +handle_call(get_auto_attach, _From, State) -> + {reply, State#state.auto, State}; +handle_call(get_stack_trace, _From, State) -> + {reply, State#state.stack, State}; + +%% Retrieving information +handle_call(snapshot, _From, State) -> + Reply = [{Proc#proc.pid, Proc#proc.function, + Proc#proc.status, Proc#proc.info} || Proc <- State#state.procs], + {reply, Reply, State}; +handle_call({get_meta, Pid}, _From, State) -> + Reply = case get_proc({pid, Pid}, State#state.procs) of + {true, Proc} -> + {ok, Proc#proc.meta}; + false -> + {error, not_interpreted} + end, + {reply, Reply, State}; +handle_call({get_attpid, Pid}, _From, State) -> + Reply = case get_proc({pid, Pid}, State#state.procs) of + {true, Proc} -> + {ok, Proc#proc.attpid}; + false -> + {error, not_interpreted} + end, + {reply, Reply, State}; + + +%% Breakpoint handling +handle_call({new_break, Point, Options}, _From, State) -> + case lists:keymember(Point, 1, State#state.breaks) of + false -> + Break = {Point, Options}, + send_all([subscriber, meta, attached], + {new_break, Break}, State), + Breaks = keyinsert(Break, 1, State#state.breaks), + {reply, ok, State#state{breaks=Breaks}}; + true -> + {reply, {error, break_exists}, State} + end; +handle_call(all_breaks, _From, State) -> + {reply, State#state.breaks, State}; +handle_call({all_breaks, Mod}, _From, State) -> + Reply = [Break || Break = {{M, _},_} <- State#state.breaks, M =:= Mod], + {reply, Reply, State}; + +%% From Meta process +handle_call({new_process, Pid, Meta, Function}, _From, State) -> + link(Meta), + + %% A new, debugged process has been started. Return its status, + %% ie running (running as usual) or break (stop) + %% The status depends on if the process is automatically attached to + %% or not. + Reply = case auto_attach(init, State#state.auto, Pid) of + AttPid when is_pid(AttPid) -> break; + ignore -> running + end, + + %% Do not add AttPid, it should call attached/2 when started instead + Proc = #proc{pid=Pid, meta=Meta, status=running, function=Function}, + send_all(subscriber, + {new_process, {Pid,Function,running,{}}}, State), + + {reply, Reply, State#state{procs=State#state.procs++[Proc]}}; + +%% Code loading +handle_call({load, Mod, Src, Bin}, _From, State) -> + %% Create an ETS table for storing information about the module + Db = State#state.db, + ModDb = ets:new(Mod, [ordered_set, public]), + ModDbs = case ets:lookup(Db, {Mod, refs}) of + [] -> []; + [{{Mod, refs}, ModDbs1}] -> ModDbs1 + end, + ets:insert(Db, {{Mod, refs}, [ModDb|ModDbs]}), + ets:insert(Db, {ModDb, []}), + + %% Load the code + {ok, Mod} = dbg_iload:load_mod(Mod, Src, Bin, ModDb), + + %% Inform all subscribers and attached processes + send_all([subscriber, attached], {interpret, Mod}, State), + + {reply, {module, Mod}, State}; + +%% Module database +handle_call({get_module_db, Mod}, _From, State) -> + Db = State#state.db, + Reply = case ets:lookup(Db, {Mod, refs}) of + [] -> not_found; + [{{Mod, refs}, [ModDb|_ModDbs]}] -> + ModDb + end, + {reply, Reply, State}; +handle_call({get_module_db, Mod, Pid}, _From, State) -> + Db = State#state.db, + Reply = case ets:lookup(Db, {Mod, refs}) of + [] -> not_found; + [{{Mod, refs}, [ModDb|_ModDbs]}] -> + [{ModDb, Pids}] = ets:lookup(Db, ModDb), + ets:insert(Db, {ModDb, [Pid|Pids]}), + ModDb + end, + {reply, Reply, State}; +handle_call({lookup, Mod, Key}, _From, State) -> + Db = State#state.db, + Reply = case ets:lookup(Db, {Mod, refs}) of + [] -> not_found; + [{{Mod, refs}, [ModDb|_ModDbs]}] -> + case ets:lookup(ModDb, Key) of + [] -> not_found; + [{Key, Value}] -> {ok, Value} + end + end, + {reply, Reply, State}; +handle_call({functions, Mod}, _From, State) -> + Db = State#state.db, + Reply = case ets:lookup(Db, {Mod, refs}) of + [] -> []; + [{{Mod, refs}, [ModDb|_ModDbs]}] -> + Pattern = {{Mod,'$1','$2','_'}, '_'}, + ets:match(ModDb, Pattern) + end, + {reply, Reply, State}; +handle_call({contents, Mod, Pid}, _From, State) -> + Db = State#state.db, + [{{Mod, refs}, ModDbs}] = ets:lookup(Db, {Mod, refs}), + ModDb = if + Pid =:= any -> hd(ModDbs); + true -> + lists:foldl(fun(T, not_found) -> + [{T, Pids}] = ets:lookup(Db, T), + case lists:member(Pid, Pids) of + true -> T; + false -> not_found + end; + (_T, T) -> T + end, + not_found, + ModDbs) + end, + [{mod_bin, Bin}] = ets:lookup(ModDb, mod_bin), + {reply, {ok, Bin}, State}; +handle_call({raw_contents, Mod, Pid}, _From, State) -> + Db = State#state.db, + case ets:lookup(Db, {Mod, refs}) of + [{{Mod, refs}, ModDbs}] -> + ModDb = + if + Pid =:= any -> hd(ModDbs); + true -> + lists:foldl(fun(T, not_found) -> + [{T, Pids}] = ets:lookup(Db, T), + case lists:member(Pid, Pids) of + true -> T; + false -> not_found + end; + (_T, T) -> T + end, + not_found, + ModDbs) + end, + [{mod_raw, Bin}] = ets:lookup(ModDb, mod_raw), + {reply, {ok, Bin}, State}; + [] -> % code not interpreted + {reply, not_found, State} + end; +handle_call({is_interpreted, Mod, Name, Arity}, _From, State) -> + Db = State#state.db, + Reply = case ets:lookup(Db, {Mod, refs}) of + [] -> false; + [{{Mod, refs}, [ModDb|_ModDbs]}] -> + Pattern = {{Mod,Name,Arity,'_'}, '_'}, + case ets:match_object(ModDb, Pattern) of + [{_Key, Clauses}] -> {true, Clauses}; + [] -> false + end + end, + {reply, Reply, State}; +handle_call(all_interpreted, _From, State) -> + Db = State#state.db, + Mods = ets:select(Db, [{{{'$1',refs},'_'},[],['$1']}]), + {reply, Mods, State}; +handle_call({file, Mod}, From, State) -> + {reply, Res, _} = handle_call({lookup, Mod, mod_file}, From, State), + Reply = case Res of + {ok, File} -> File; + not_found -> {error, not_loaded} + end, + {reply, Reply, State}. + + +handle_cast(stop, State) -> + {stop, shutdown, State}; +handle_cast({subscribe, Sub}, State) -> + {noreply, State#state{subs=[Sub|State#state.subs]}}; + +%% Attaching to a process +handle_cast({attach, Pid, {Mod, Func, Args}}, State) -> + %% Simply spawn process, which should call int:attached(Pid) + spawn(Mod, Func, [Pid | Args]), + {noreply, State}; + +%% Getting and setting options +handle_cast({set_auto_attach, false}, State) -> + send_all(subscriber, {auto_attach, false}, State), + {noreply, State#state{auto=false}}; +handle_cast({set_auto_attach, Flags, Function}, State) -> + send_all(subscriber, {auto_attach, {Flags, Function}}, State), + {noreply, State#state{auto={Flags, Function}}}; +handle_cast({set_stack_trace, Flag}, State) -> + send_all(subscriber, {stack_trace, Flag}, State), + {noreply, State#state{stack=Flag}}; + +%% Retrieving information +handle_cast(clear, State) -> + Procs = lists:filter(fun(#proc{status=Status}) -> + Status =/= exit + end, + State#state.procs), + {noreply, State#state{procs=Procs}}; + +%% Breakpoint handling +handle_cast({delete_break, Point}, State) -> + case lists:keymember(Point, 1, State#state.breaks) of + true -> + send_all([subscriber, meta, attached], + {delete_break, Point}, State), + Breaks = lists:keydelete(Point, 1, State#state.breaks), + {noreply, State#state{breaks=Breaks}}; + false -> + {noreply, State} + end; +handle_cast({break_option, Point, Option, Value}, State) -> + case lists:keyfind(Point, 1, State#state.breaks) of + {Point, Options} -> + N = case Option of + status -> 1; + action -> 2; + condition -> 4 + end, + Options2 = list_setelement(N, Options, Value), + send_all([subscriber, meta, attached], + {break_options, {Point, Options2}}, State), + Breaks = lists:keyreplace(Point, 1, State#state.breaks, + {Point, Options2}), + {noreply, State#state{breaks=Breaks}}; + false -> + {noreply, State} + end; +handle_cast(no_break, State) -> + send_all([subscriber, meta, attached], no_break, State), + {noreply, State#state{breaks=[]}}; +handle_cast({no_break, Mod}, State) -> + send_all([subscriber, meta, attached], {no_break, Mod}, State), + Breaks = lists:filter(fun({{M, _L}, _O}) -> + M =/= Mod + end, + State#state.breaks), + {noreply, State#state{breaks=Breaks}}; + +%% From Meta process +handle_cast({set_status, Meta, Status, Info}, State) -> + {true, Proc} = get_proc({meta, Meta}, State#state.procs), + send_all(subscriber, {new_status, Proc#proc.pid, Status, Info}, State), + if + Status =:= break -> + _ = auto_attach(break, State#state.auto, Proc), + ok; + true -> + ok + end, + Proc2 = Proc#proc{status=Status, info=Info}, + {noreply, State#state{procs=lists:keyreplace(Meta, #proc.meta, + State#state.procs, Proc2)}}; +handle_cast({set_exit_info, Meta, ExitInfo}, State) -> + {true, Proc} = get_proc({meta, Meta}, State#state.procs), + Procs = lists:keyreplace(Meta, #proc.meta, State#state.procs, + Proc#proc{exit_info=ExitInfo}), + {noreply,State#state{procs=Procs}}; + +%% Code loading +handle_cast({delete, Mod}, State) -> + + %% Remove the ETS table with information about the module + Db = State#state.db, + case ets:lookup(Db, {Mod, refs}) of + [] -> % Mod is not interpreted + {noreply, State}; + [{{Mod, refs}, ModDbs}] -> + ets:delete(Db, {Mod, refs}), + AllPids = lists:foldl( + fun(ModDb, PidsAcc) -> + [{ModDb, Pids}] = ets:lookup(Db, ModDb), + ets:delete(Db, ModDb), + ets:delete(ModDb), + PidsAcc++Pids + end, + [], + ModDbs), + lists:foreach(fun(Pid) -> + case get_proc({pid, Pid}, + State#state.procs) of + {true, Proc} -> + send(Proc#proc.meta, + {old_code, Mod}); + false -> ignore % pid may have exited + end + end, + AllPids), + + send_all([subscriber,attached], {no_interpret, Mod}, State), + + %% Remove all breakpoints for Mod + handle_cast({no_break, Mod}, State) + end. + +%% Process exits +handle_info({'EXIT',Who,Why}, State) -> + case get_proc({meta, Who}, State#state.procs) of + + %% Exited process is a meta process for exit_info + {true,#proc{status=exit}} -> + {noreply,State}; + + %% Exited process is a meta process + {true,Proc} -> + Pid = Proc#proc.pid, + ExitInfo = Proc#proc.exit_info, + %% Check if someone is attached to the debugged process, + %% if so a new meta process should be started + Meta = case Proc#proc.attpid of + AttPid when is_pid(AttPid) -> + spawn_link(dbg_ieval, exit_info, + [self(),AttPid,Pid,Why,ExitInfo]); + undefined -> + %% Otherwise, auto attach if necessary + _ = auto_attach(exit, State#state.auto, Pid), + Who + end, + send_all(subscriber, {new_status,Pid,exit,Why}, State), + Procs = lists:keyreplace(Who, #proc.meta, State#state.procs, + Proc#proc{meta=Meta, + status=exit, + info=Why}), + {noreply,State#state{procs=Procs}}; + + false -> + case get_proc({attpid, Who}, State#state.procs) of + + %% Exited process is an attached process + {true, Proc} -> + %% If status==exit, then the meta process is a + %% simple meta for a terminated process and can be + %% terminated as well (it is only needed by + %% the attached process) + case Proc#proc.status of + exit -> send(Proc#proc.meta, stop); + _Status -> send(Proc#proc.meta, detached) + end, + Procs = lists:keyreplace(Proc#proc.pid, #proc.pid, + State#state.procs, + Proc#proc{attpid=undefined}), + {noreply, State#state{procs=Procs}}; + + %% Otherwise exited process must be a subscriber + false -> + Subs = lists:delete(Who, State#state.subs), + {noreply, State#state{subs=Subs}} + end + end. + +terminate(_Reason, _State) -> + EbinDir = filename:join(code:lib_dir(debugger), "ebin"), + code:unstick_dir(EbinDir), + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + + +%%==================================================================== +%% Internal functions +%%==================================================================== + +auto_attach(Why, Auto, #proc{attpid = Attpid, pid = Pid}) -> + case Attpid of + undefined -> auto_attach(Why, Auto, Pid); + _ when is_pid(Attpid) -> ignore + end; +auto_attach(Why, Auto, Pid) when is_pid(Pid) -> + case Auto of + false -> ignore; + {Flags, {Mod, Func, Args}} -> + case lists:member(Why, Flags) of + true -> + spawn(Mod, Func, [Pid | Args]); + false -> ignore + end + end. + +keyinsert(Tuple1, N, [Tuple2|Tuples]) -> + if + element(N, Tuple1) < element(N, Tuple2) -> + [Tuple1, Tuple2|Tuples]; + true -> + [Tuple2 | keyinsert(Tuple1, N, Tuples)] + end; +keyinsert(Tuple, _N, []) -> + [Tuple]. + +list_setelement(N, L, E) -> list_setelement(1, N, L, E). + +list_setelement(I, I, [_|T], E) -> + [E|T]; +list_setelement(I, N, [H|T], E) -> + [H|list_setelement(I+1, N, T, E)]. + +mapfilter(Fun, [H|T]) -> + case Fun(H) of + ignore -> mapfilter(Fun, T); + H2 -> [H2|mapfilter(Fun, T)] + end; +mapfilter(_Fun, []) -> + []. + +send_all([Type|Types], Msg, State) -> + send_all(Type, Msg, State), + send_all(Types, Msg, State); +send_all([], _Msg, _State) -> ok; + +send_all(subscriber, Msg, State) -> + send_all(State#state.subs, Msg); +send_all(meta, Msg, State) -> + Metas = [Proc#proc.meta || Proc <- State#state.procs], + send_all(Metas, Msg); +send_all(attached, Msg, State) -> + AttPids= mapfilter(fun(Proc) -> + case Proc#proc.attpid of + Pid when is_pid(Pid) -> Pid; + undefined -> ignore + end + end, + State#state.procs), + send_all(AttPids, Msg). + +send_all(Pids, Msg) -> + lists:foreach(fun(Pid) -> send(Pid, Msg) end, Pids). + +send(Pid, Msg) -> + Pid ! {int, Msg}, + ok. + +get_proc({Type, Pid}, Procs) -> + Index = case Type of + pid -> #proc.pid; + meta -> #proc.meta; + attpid -> #proc.attpid + end, + case lists:keyfind(Pid, Index, Procs) of + false -> false; + Proc -> {true, Proc} + end. diff --git a/debugger/erlide_debugger_27/src/dbg_istk.erl b/debugger/erlide_debugger_27/src/dbg_istk.erl new file mode 100644 index 0000000..6d16e45 --- /dev/null +++ b/debugger/erlide_debugger_27/src/dbg_istk.erl @@ -0,0 +1,253 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2011-2024. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(dbg_istk). +-moduledoc false. +-export([init/0,delayed_to_external/0,from_external/1, + push/3,pop/0,pop/1,stack_level/0, + delayed_stacktrace/0,delayed_stacktrace/2, + bindings/1,stack_frame/2,backtrace/2, + in_use_p/2]). + +-include("dbg_ieval.hrl"). + +-define(STACK, ?MODULE). + +-record(e, + {level, %Level + mfa, %{Mod,Func,Args|Arity}|{Fun,Args} + line, %Line called from + error_info=[], %[{error_info,Map}] | [] + bindings, + lc %Last call (true|false) + }). + +init() -> + init([]). + +delayed_to_external() -> + Stack = get(?STACK), + fun() -> {stack,term_to_binary(Stack)} end. + +from_external({stack,Stk}) -> + put(?STACK, binary_to_term(Stk)). + +init(Stack) -> + put(?STACK, Stack). + +%% We keep track of a call stack that is used for +%% 1) saving stack frames that can be inspected from an Attached +%% Process GUI (using dbg_icmd:get(Meta, stack_frame, {Dir, SP}) +%% 2) generate an approximation of regular stacktrace -- sent to +%% Debugged when it should raise an exception or evaluate a +%% function (since it might possible raise an exception) +%% +%% How to push depends on the "Stack Trace" option (value saved in +%% process dictionary item 'trace_stack'). +%% all - everything is pushed +%% no_tail - tail recursive push +%% false - nothing is pushed +%% Whenever a function returns, the corresponding call frame is popped. + +push(Bs, #ieval{level=Le,module=Mod,function=Name, + arguments=As,line=Li}=Ieval, Lc) -> + Entry = #e{level=Le,mfa={Mod,Name,As},line=Li,bindings=Bs,lc=Lc}, + case get(trace_stack) of + false -> + Ieval#ieval{level=Le+1}; + no_tail when Lc -> + Ieval; + _ -> % all | no_tail when Lc =:= false + put(?STACK, [Entry|get(?STACK)]), + Ieval#ieval{level=Le+1} + end. + +pop() -> + case get(trace_stack) of + false -> ignore; + _ -> % all | no_tail + case get(?STACK) of + [_Entry|Entries] -> + put(?STACK, Entries); + [] -> + ignore + end + end. + +pop(Le) -> + case get(trace_stack) of + false -> ignore; + _ -> % all | no_tail + put(?STACK, pop(Le, get(?STACK))) + end. + +pop(Level, [#e{level=Le}|Stack]) when Level =< Le -> + pop(Level, Stack); +pop(_Level, Stack) -> + Stack. + +%% stack_level() -> Le +%% stack_level(Stack) -> Le +%% Top call level +stack_level() -> + stack_level(get(?STACK)). + +stack_level([]) -> 1; +stack_level([#e{level=Le}|_]) -> Le. + +%% delayed_stacktrace() -> CreateStacktraceFun +%% delayed_stacktrace(ArgFlag, #ieval{}) -> CreateStacktraceFun +%% ArgFlag = no_args | include_args +%% CreateStacktraceFun = fun(NumberOfEntries) +%% +%% Return a fun that can convert the internal stack format to +%% an imitation of the regular stacktrace. + +delayed_stacktrace() -> + Stack0 = get(?STACK), + fun(NumEntries) -> + Stack = stacktrace(NumEntries, Stack0, []), + [finalize(ArityOnly) || {ArityOnly,_} <- Stack] + end. + +delayed_stacktrace(include_args, Ieval) -> + #ieval{module=Mod,function=Name,arguments=As, + line=Li,error_info=ErrorInfo} = Ieval, + Stack0 = [#e{mfa={Mod,Name,As},line=Li,error_info=ErrorInfo}|get(?STACK)], + fun(NumEntries) -> + case stacktrace(NumEntries, Stack0, []) of + [] -> + []; + [{_,WithArgs}|Stack] -> + [finalize(WithArgs) | + [finalize(ArityOnly) || {ArityOnly,_} <- Stack]] + end + end; +delayed_stacktrace(no_args, Ieval) -> + #ieval{module=Mod,function=Name,arguments=As,line=Li} = Ieval, + Stack0 = [#e{mfa={Mod,Name,As},line=Li}|get(?STACK)], + fun(NumEntries) -> + Stack = stacktrace(NumEntries, Stack0, []), + [finalize(ArityOnly) || {ArityOnly,_} <- Stack] + end. + +stacktrace(N, [#e{lc=true}|T], Acc) -> + stacktrace(N, T, Acc); +stacktrace(N, [E|T], []) -> + stacktrace(N-1, T, [normalize(E)]); +stacktrace(N, [E|T], [{P,_}|_]=Acc) when N > 0 -> + case normalize(E) of + {P,_} -> + stacktrace(N, T, Acc); + New -> + stacktrace(N-1, T, [New|Acc]) + end; +stacktrace(_, _, Acc) -> + lists:reverse(Acc). + +normalize(#e{mfa={M,Fun,As},line=Li,error_info=ErrorInfo}) when is_function(Fun) -> + Loc = {M,Li,ErrorInfo}, + {{Fun,length(As),Loc},{Fun,As,Loc}}; +normalize(#e{mfa={M,F,As},line=Li,error_info=ErrorInfo}) -> + Loc = {M,Li,ErrorInfo}, + {{M,F,length(As),Loc},{M,F,As,Loc}}. + +finalize({M,F,A,Loc}) -> {M,F,A,line(Loc)}; +finalize({Fun,A,Loc}) -> {Fun,A,line(Loc)}. + +line({Mod,Line,ErrorInfo}) -> + if Line > 0 -> + [{file,atom_to_list(Mod)++".erl"},{line,Line}|ErrorInfo]; + true -> + ErrorInfo + end; +line(_) -> []. + +%% bindings(SP) -> Bs +%% SP = Le % stack pointer +%% Return the bindings for the specified call level +bindings(SP) -> + bindings(SP, get(?STACK)). + +bindings(SP, [#e{level=SP,bindings=Bs}|_]) -> + Bs; +bindings(SP, [_Entry|Entries]) -> + bindings(SP, Entries); +bindings(_SP, []) -> + erl_eval:new_bindings(). + +%% stack_frame(Dir, SP) -> {Le, Where, Bs} | top | bottom +%% Dir = up | down +%% Where = {Cm, Li} +%% Cm = Module | undefined % module +%% Li = int() | -1 % line number +%% Bs = bindings() +%% Return stack frame info one step up/down from given stack pointer +%% up = to lower call levels +%% down = to higher call levels +stack_frame(up, SP) -> + stack_frame(SP, up, get(?STACK)); +stack_frame(down, SP) -> + stack_frame(SP, down, lists:reverse(get(?STACK))). + +stack_frame(SP, up, [#e{level=Le,mfa={Cm,_,_},line=Li,bindings=Bs}|_]) + when Le < SP -> + {Le,{Cm,Li},Bs}; +stack_frame(SP, down, [#e{level=Le,mfa={Cm,_,_},line=Li,bindings=Bs}|_]) + when Le > SP -> + {Le,{Cm,Li},Bs}; +stack_frame(SP, Dir, [#e{level=SP}|Stack]) -> + case Stack of + [#e{level=Le,mfa={Cm,_,_},line=Li,bindings=Bs}|_] -> + {Le,{Cm,Li},Bs}; + [] when Dir =:= up -> + top; + [] when Dir =:= down -> + bottom + end; +stack_frame(SP, Dir, [_Entry|Stack]) -> + stack_frame(SP, Dir, Stack). + +%% backtrace(HowMany) -> Backtrace +%% HowMany = all | int() +%% Backtrace = {Le, MFA} +%% Return all/the last N called functions, in reversed call order +backtrace(HowMany, Ieval) -> + #ieval{level=Level,module=Mod,function=Name,arguments=As} = Ieval, + Stack0 = [#e{level=Level,mfa={Mod,Name,As}}|get(?STACK)], + Stack = case HowMany of + all -> Stack0; + N -> lists:sublist(Stack0, N) + end, + [{Le,MFA} || #e{level=Le,mfa=MFA} <- Stack]. + +%%-------------------------------------------------------------------- +%% in_use_p(Mod, Cm) -> boolean() +%% Mod = Cm = atom() +%% Returns true if Mod is found on the stack, otherwise false. +%%-------------------------------------------------------------------- +in_use_p(Mod, Mod) -> true; +in_use_p(Mod, _Cm) -> + case get(trace_stack) of + false -> true; + _ -> % all | no_tail + lists:any(fun(#e{mfa={M,_,_}}) when M =:= Mod -> true; + (_) -> false + end, get(?STACK)) + end. diff --git a/debugger/erlide_debugger_27/src/erlide_debugger_27.app.src b/debugger/erlide_debugger_27/src/erlide_debugger_27.app.src new file mode 100644 index 0000000..3bc452a --- /dev/null +++ b/debugger/erlide_debugger_27/src/erlide_debugger_27.app.src @@ -0,0 +1,10 @@ +{application, erlide_debugger_27, + [ + {description, "erlide_debugger_27"}, + {vsn, "0.117.0"}, + {erlide_context, debugger}, + {registered, []}, + {applications, [kernel, stdlib]}, + {env, []} + ] +}. diff --git a/debugger/erlide_debugger_27/src/int.erl b/debugger/erlide_debugger_27/src/int.erl new file mode 100644 index 0000000..740f52b --- /dev/null +++ b/debugger/erlide_debugger_27/src/int.erl @@ -0,0 +1,1090 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2024. All Rights Reserved. +%% +%% Licensed under the Apache License, Version 2.0 (the "License"); +%% you may not use this file except in compliance with the License. +%% You may obtain a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, software +%% distributed under the License is distributed on an "AS IS" BASIS, +%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +%% See the License for the specific language governing permissions and +%% limitations under the License. +%% +%% %CopyrightEnd% +%% +-module(int). +-moduledoc """ +Interpreter Interface. + +The Erlang interpreter provides mechanisms for breakpoints and stepwise +execution of code. It is primarily intended to be used by Debugger; see the +[Users's Guide for Debugger](debugger_chapter.md) and module `m:debugger`. + +The following can be done from the shell: + +- Specify the modules to be interpreted. +- Specify breakpoints. +- Monitor the current status of all processes executing code in interpreted + modules, also processes at other Erlang nodes. + +By _attaching to_ a process executing interpreted code, it is possible to +examine variable bindings and order stepwise execution. This is done by sending +and receiving information to/from the process through a third process, called +the meta process. You can implement your own attached process. See `int.erl` for +available functions and `dbg_wx_trace.erl` for possible messages. + +The interpreter depends on the Kernel, STDLIB, and WX applications. This means +that modules belonging to any of these applications are not allowed to be +interpreted, as it could lead to a deadlock or emulator crash. This also applies +to modules belonging to the Debugger application. + +[](){: #int_breakpoints } + +## Breakpoints + +Breakpoints are specified on a line basis. When a process executing code in an +interpreted module reaches a breakpoint, it stops. This means that a breakpoint +must be set at an executable line, that is, a code line containing an executable +expression. + +A breakpoint has the following: + +- A status, which is _active_ or _inactive_. An inactive breakpoint is ignored. +- A trigger action. When a breakpoint is reached, the trigger action specifies + if the breakpoint is to continue as active (_enable_), or to become inactive + (_disable_), or to be removed (_delete_). +- Optionally an associated condition. A condition is a tuple `{Module,Name}`. + When the breakpoint is reached, `Module:Name(Bindings)` is called. If it + evaluates to `true`, execution stops. If it evaluates to `false`, the + breakpoint is ignored. `Bindings` contains the current variable bindings. To + retrieve the value for a specified variable use `get_binding/2`. + +By default, a breakpoint is active, has trigger action `enable`, and has no +associated condition. For details about breakpoints, see +[Breakpoints and Break Dialog +Windows](debugger_chapter.md#breakpoints-and-break-dialog-windows) +in the User's Guide for Debugger. +""". + +%% External exports +-export([i/1, i/2, ni/1, ni/2, n/1, nn/1, interpreted/0, file/1, + interpretable/1]). +-export([auto_attach/0, auto_attach/1, auto_attach/2, + stack_trace/0, stack_trace/1]). +-export([break/2, delete_break/2, break_in/3, del_break_in/3, + no_break/0, no_break/1, + disable_break/2, enable_break/2, + action_at_break/3, test_at_break/3, get_binding/2, + all_breaks/0, all_breaks/1]). +-export([snapshot/0, clear/0]). +-export([continue/1, continue/3]). + +%% External exports only to be used by Debugger +-export([start/0, stop/0, subscribe/0]). +-export([attach/2, step/1, next/1, finish/1]). + +%% External exports only to be used by an attached process +-export([attached/1, meta/2, meta/3, contents/2, functions/1]). + +%% External export only to be used by error_handler +-export([eval/3]). + +-include_lib("kernel/include/file.hrl"). + +%%==Erlang Interpreter================================================ +%% +%% int +%% --- +%% Interface module. +%% +%% i +%% - +%% Interface module to int, retained for backwards compatibility only. +%% +%% dbg_debugged +%% ------------ +%% Contains the message loops for a debugged process and is the main +%% entry point from the breakpoint handler in the error_handler module +%% (via the int module). +%% +%% When a process is debugged, most code is executed in another +%% process, called the meta process. When the meta process is +%% interpreting code, the process being debugged just waits in a +%% receive loop in dbg_debugged. However the debugged process itself +%% calls any BIFs that must execute in the correct process (such as +%% link/1 and spawn_link/1), and external code which is not +%% interpreted. +%% +%% dbg_icmd, dbg_ieval +%% ------------------- +%% Code for the meta process. +%% +%% dbg_iserver +%% ----------- +%% Interpreter main process, keeping and distributing information +%% about interpreted modules and debugged processes. +%% +%% dbg_idb +%% ------- +%% ETS wrapper, allowing transparent access to tables at a remote node. +%% +%% dbg_iload +%% --------- +%% Code for interpreting a module. +%%==================================================================== + +%%==================================================================== +%% External exports +%%==================================================================== + +-doc """ +Interprets the specified module(s) on the local node. + +A module can be specified by its module name (atom) or filename. + +If specified by its module name, the object code `Module.beam` is searched for +in the current path. The source code `Module.erl` is searched for first in the +same directory as the object code, then in an `src` directory next to it. + +If specified by its filename, the filename can include a path and the `.erl` +extension can be omitted. The object code `Module.beam` is searched for first in +the same directory as the source code, then in an `ebin` directory next to it, +and then in the current path. + +> #### Note {: .info } +> +> The interpreter requires both the source code and the object code. The object +> code _must_ include debug information, that is, only modules compiled with +> option `debug_info` can be interpreted. + +The functions returns `{module,Module}` if the module was interpreted, otherwise +`error` is returned. + +The argument can also be a list of modules or filenames, in which case the +function tries to interpret each module as specified earlier. The function then +always returns `ok`, but prints some information to `stdout` if a module cannot +be interpreted. +""". +-spec i(AbsModules | AbsModule) -> Result when + AbsModules :: [AbsModule,...], + AbsModule :: Module | File, + Module :: module(), + File :: file:name_all(), + Result :: AbsModuleResult | AbsModulesResult, + AbsModuleResult :: {module, Module} | error, + AbsModulesResult :: ok. +i(AbsMods) -> i2(AbsMods, local, ok). +-doc false. +i(AbsMods, _Options) -> i2(AbsMods, local, ok). + +-doc """ +Interprets the specified module(s) on all known nodes. + +A module can be specified by its module name (atom) or filename. + +If specified by its module name, the object code `Module.beam` is searched for +in the current path. The source code `Module.erl` is searched for first in the +same directory as the object code, then in an `src` directory next to it. + +If specified by its filename, the filename can include a path and the `.erl` +extension can be omitted. The object code `Module.beam` is searched for first in +the same directory as the source code, then in an `ebin` directory next to it, +and then in the current path. + +> #### Note {: .info } +> +> The interpreter requires both the source code and the object code. The object +> code _must_ include debug information, that is, only modules compiled with +> option `debug_info` can be interpreted. + +The functions returns `{module,Module}` if the module was interpreted, otherwise +`error` is returned. + +The argument can also be a list of modules or filenames, in which case the +function tries to interpret each module as specified earlier. The function then +always returns `ok`, but prints some information to `stdout` if a module cannot +be interpreted. +""". +-spec ni(AbsModules | AbsModule) -> Result when + AbsModules :: [AbsModule], + AbsModule :: Module | File, + Module :: module(), + File :: file:name_all(), + Result :: AbsModuleResult | AbsModulesResult, + AbsModuleResult :: {module, Module} | error, + AbsModulesResult :: ok. +ni(AbsMods) -> i2(AbsMods, distributed, ok). +-doc false. +ni(AbsMods, _Options) -> i2(AbsMods, distributed, ok). + +i2([AbsMod|AbsMods], Dist, Acc) + when is_atom(AbsMod); is_list(AbsMod); is_tuple(AbsMod) -> + Res = int_mod(AbsMod, Dist), + case Acc of + error -> + i2(AbsMods, Dist, Acc); + _ -> + i2(AbsMods, Dist, Res) + end; +i2([], _Dist, Acc) -> + Acc; +i2(AbsMod, Dist, _Acc) when is_atom(AbsMod); is_list(AbsMod); is_tuple(AbsMod) -> + int_mod(AbsMod, Dist). + +-doc """ +Stops interpreting the specified module on the local node. + +Similar to [`i/1`](`i/1`) and [`ni/1`](`ni/1`), a module can be specified by its +module name or filename. +""". +-spec n(AbsModule) -> ok when AbsModule :: Module | File | [Module | File], + Module :: module(), + File :: file:name_all(). +n(AbsMods) -> n2(AbsMods, local). +-doc """ +Stops interpreting the specified module on all known nodes. + +Similar to [`i/1`](`i/1`) and [`ni/1`](`ni/1`), a module can be specified by its +module name or filename. +""". +-spec nn(AbsModule) -> ok when + AbsModule :: Module | File | [Module | File], + Module :: module(), + File :: file:name_all(). +nn(AbsMods) -> n2(AbsMods, distributed). + +n2([AbsMod|AbsMods], Dist) when is_atom(AbsMod); is_list(AbsMod) -> + del_mod(AbsMod, Dist), + n2(AbsMods, Dist); +n2([AbsMod], Dist) when is_atom(AbsMod); is_list(AbsMod) -> + del_mod(AbsMod, Dist); +n2([], _Dist) -> + ok; +n2(AbsMod, Dist) when is_atom(AbsMod); is_list(AbsMod) -> + del_mod(AbsMod, Dist). + +-doc "Returns a list with all interpreted modules.". +-spec interpreted() -> [Module] when Module :: module(). +interpreted() -> + dbg_iserver:safe_call(all_interpreted). + +-doc """ +Returns the source code filename `File` for an interpreted module `Module`. +""". +-spec file(Module) -> File | {error,not_loaded} when Module :: module(), + File :: file:filename_all(). +file(Mod) when is_atom(Mod) -> + dbg_iserver:safe_call({file, Mod}). + +-doc """ +Checks if a module can be interpreted. + +The module can be specified by its module name `Module` or its source +filename `File`. If specified by a module name, the module is searched +for in the code path. + +The function returns `true` if all of the following apply: + +- Both source code and object code for the module is found. +- The module has been compiled with option `debug_info` set. +- The module does not belong to any of the applications Kernel, STDLIB, WX, or + Debugger. + +The function returns `{error,Reason}` if the module cannot be interpreted. +`Reason` can have the following values: + +- **`no_src`** - No source code is found. It is assumed that the source code and + object code are located either in the same directory, or in `src` and `ebin` + directories next to each other. + +- **`no_beam`** - No object code is found. It is assumed that the source code + and object code are located either in the same directory, or in `src` and + `ebin` directories next to each other. + +- **`no_debug_info`** - The module has not been compiled with option + `debug_info` set. + +- **`badarg`** - `AbsModule` is not found. This could be because the specified + file does not exist, or because `code:which/1` does not return a BEAM + filename, which is the case not only for non-existing modules but also for + modules that are preloaded or cover-compiled. + +- **`{app,App}`** - `App` is `kernel`, `stdlib`, `gs`, or `debugger` if + `AbsModule` belongs to one of these applications. + +Notice that the function can return `true` for a module that is not +interpretable the module is marked as sticky or resides in a directory +marked as sticky. The reason is that this is not discovered until the +interpreter tries to load the module. +""". +-spec interpretable(AbsModule) -> true | {error,Reason} when + AbsModule :: Module | File, + Module :: module(), + File :: file:name_all(), + Reason :: no_src | no_beam | no_debug_info | badarg | {app,App}, + App :: atom(). +interpretable(AbsMod) -> + case check(AbsMod) of + {ok, _Res} -> true; + Error -> Error + end. + +%%-------------------------------------------------------------------- +-doc """ +Gets how to attach automatically to a process executing code in +interpreted modules. + +See `auto_attach/2` for the meaning of the possible values in `Flags`. +""". +-spec auto_attach() -> false | {Flags,Function} when Flags :: [init | break | exit], + Function :: {Module,Name,Args}, + Module :: module(), + Name :: atom(), + Args :: [term()]. +auto_attach() -> + dbg_iserver:safe_call(get_auto_attach). + +-doc "Disables auto attach.". +-spec auto_attach(false) -> term(). +auto_attach(false) -> + dbg_iserver:safe_cast({set_auto_attach, false}). + +-doc """ +Sets when and how to attach automatically to a process executing code +in interpreted modules. + +By default when the interpreter is started, automatic attach is disabled. + +If `Flags` is an empty list, automatic attach is disabled. + +Otherwise `Flags` should be a list containing at least one of the following +flags: + +- `init` - Attach when a process for the first time calls an interpreted + function. +- `break` - Attach whenever a process reaches a breakpoint. +- `exit` - Attach when a process terminates. + +When the specified event occurs, the function `Function` is called as: + +```erlang +spawn(Module, Name, [Pid | Args]) +``` + +`Pid` is the pid of the process executing interpreted code. +""". +-spec auto_attach(Flags, Function) -> term() when + Flags :: [init | break | exit], + Function :: {Module,Name,Args}, + Module :: module(), + Name :: atom(), + Args :: [term()]. +auto_attach([], _Function) -> + auto_attach(false); +auto_attach(Flags, {Mod, Func}) -> + auto_attach(Flags, {Mod, Func, []}); +auto_attach(Flags, {Mod, Func, Args}) when is_atom(Mod),is_atom(Func),is_list(Args) -> + check_flags(Flags), + dbg_iserver:safe_cast({set_auto_attach, Flags, {Mod, Func, Args}}). + +check_flags([init|Flags]) -> check_flags(Flags); +check_flags([break|Flags]) -> check_flags(Flags); +check_flags([exit|Flags]) -> check_flags(Flags); +check_flags([]) -> true. + +-doc """ +Gets how to save call frames in the stack. + +See `stack_trace/1` for the meaning of `Flag`. +""". +-spec stack_trace() -> Flag when Flag :: all | no_tail | false. +stack_trace() -> + dbg_iserver:safe_call(get_stack_trace). + +-doc """ +Sets how to save call frames in the stack. + +Saving call frames makes it possible to inspect the call chain of a +process, and is also used to emulate the stack trace if an error (an +exception of class error) occurs. The following flags can be +specified: + +- **`all`** - Save information about all current calls, that is, function calls + that have not yet returned a value. + +- **`no_tail`** - Save information about current calls, but discard previous + information when a tail-recursive call is made. This option consumes less + memory and can be necessary to use for processes with long lifetimes and many + tail-recursive calls. This is the default. + +- **`false`** - Save no information about current calls. +""". +-spec stack_trace(Flag) -> term() when Flag :: all | no_tail | false. +stack_trace(true) -> + stack_trace(all); +stack_trace(Flag) -> + check_flag(Flag), + dbg_iserver:safe_cast({set_stack_trace, Flag}). + +check_flag(all) -> true; +check_flag(no_tail) -> true; +check_flag(false) -> true. + +-doc """ +Creates a breakpoint at `Line` in `Module`. +""". +-spec break(Module, Line) -> ok | {error, break_exists} + when Module :: module(), Line :: integer(). +break(Mod, Line) when is_atom(Mod), is_integer(Line) -> + dbg_iserver:safe_call({new_break, {Mod, Line}, + [active, enable, null, null]}). + +-doc """ +Deletes the breakpoint at `Line` in `Module`. +""". +-spec delete_break(Module, Line) -> ok + when Module :: module(), Line :: integer(). +delete_break(Mod, Line) when is_atom(Mod), is_integer(Line) -> + dbg_iserver:safe_cast({delete_break, {Mod, Line}}). + +-doc """ +break_in(Module, Name, Arity) +Creates a breakpoint at the first line of every clause of function +`Module:Name/Arity`. +""". +-spec break_in(Module, Name, Arity) -> ok | {error, function_not_found} + when Module :: module(), Name :: atom(), Arity :: integer(). +break_in(Mod, Func, Arity) when is_atom(Mod), is_atom(Func), is_integer(Arity) -> + case dbg_iserver:safe_call({is_interpreted, Mod, Func, Arity}) of + {true, Clauses} -> + Lines = first_lines(Clauses), + lists:foreach(fun(Line) -> break(Mod, Line) end, Lines); + false -> + {error, function_not_found} + end. + +-doc """ +Deletes the breakpoints at the first line of every clause of function +`Module:Name/Arity`. +""". +-spec del_break_in(Module, Name, Arity) -> + ok | {error, function_not_found} + when + Module :: module(), + Name :: atom(), + Arity :: integer(). +del_break_in(Mod, Func, Arity) when is_atom(Mod), is_atom(Func), is_integer(Arity) -> + case dbg_iserver:safe_call({is_interpreted, Mod, Func, Arity}) of + {true, Clauses} -> + Lines = first_lines(Clauses), + lists:foreach(fun(Line) -> delete_break(Mod, Line) end, + Lines); + false -> + {error, function_not_found} + end. + +first_lines(Clauses) -> + [first_line(Clause) || Clause <- Clauses]. + +first_line({clause,_L,_Vars,_,Exprs}) -> + first_line(Exprs); +first_line([Expr|_Exprs]) -> % Expr = {Op, Line, ..varying no of args..} + element(2, Expr). + +-doc """ +Deletes all breakpoints. +""". +-spec no_break() -> ok. +no_break() -> + dbg_iserver:safe_cast(no_break). + +-doc """ +Deletes all breakpoints in `Module`. +""". +-spec no_break(Module :: term()) -> ok. +no_break(Mod) when is_atom(Mod) -> + dbg_iserver:safe_cast({no_break, Mod}). + +-doc """ +Makes the breakpoint at `Line` in `Module` inactive. +""". +-spec disable_break(Module, Line) -> ok + when Module :: module(), Line :: integer(). +disable_break(Mod, Line) when is_atom(Mod), is_integer(Line) -> + dbg_iserver:safe_cast({break_option, {Mod, Line}, status, inactive}). + +-doc """ +Makes the breakpoint at `Line` in `Module` active. +""". +-spec enable_break(Module, Line) -> ok + when Module :: module(), Line :: integer(). +enable_break(Mod, Line) when is_atom(Mod), is_integer(Line) -> + dbg_iserver:safe_cast({break_option, {Mod, Line}, status, active}). + +-doc """ +Sets the trigger action of the breakpoint at `Line` in `Module` to `Action`. +""". +-spec action_at_break(Module, Line, Action) -> ok + when + Module :: module(), + Line :: integer(), + Action :: enable | disable | delete. +action_at_break(Mod, Line, Action) when is_atom(Mod), is_integer(Line) -> + check_action(Action), + dbg_iserver:safe_cast({break_option, {Mod, Line}, action, Action}). + +check_action(enable) -> true; +check_action(disable) -> true; +check_action(delete) -> true. + +-doc """ +Sets the conditional test of the breakpoint at `Line` in `Module` to `Function`. + +Function `Function` must fulfill the requirements specified in section +[Breakpoints](`m:int#int_breakpoints`). +""". +-spec test_at_break(Module, Line, Function) -> ok when + Module :: module(), + Line :: integer(), + Function :: {Module,Name}, + Name :: atom(). +test_at_break(Mod, Line, Function) when is_atom(Mod), is_integer(Line) -> + check_function(Function), + dbg_iserver:safe_cast({break_option, {Mod, Line}, condition, Function}). + +check_function({Mod, Func}) when is_atom(Mod), is_atom(Func) -> true. + +-doc """ +Retrieves the binding of `Var` from `Bindings`. + +This function is intended to be used by the conditional function of a breakpoint. +""". +-spec get_binding(Var, Bindings) -> {value,Value} | unbound when Var :: atom(), + Bindings :: term(), + Value :: term(). +get_binding(Var, Bs) -> + dbg_icmd:get_binding(Var, Bs). + +-doc "Gets all breakpoints.". +-spec all_breaks() -> [Break] when + Break :: {Point,Options}, + Point :: {Module,Line}, + Module :: module(), + Line :: integer(), + Options :: [Status | Trigger | null | Cond], + Status :: active | inactive, + Trigger :: enable | disable | delete, + Cond :: null | Function, + Function :: {Module,Name}, + Name :: atom(). +all_breaks() -> + dbg_iserver:safe_call(all_breaks). + +-doc """ +Gets all breakpoints in module `Module`. +""". +-spec all_breaks(Module) -> [Break] when + Break :: {Point,Options}, + Point :: {Module,Line}, + Module :: module(), + Line :: integer(), + Options :: [Status | Trigger | null | Cond], + Status :: active | inactive, + Trigger :: enable | disable | delete, + Cond :: null | Function, + Function :: {Module,Name}, + Name :: atom(). +all_breaks(Mod) when is_atom(Mod) -> + dbg_iserver:safe_call({all_breaks, Mod}). + +-doc """ +Gets information about all processes executing interpreted code. + +- `Pid` - Process identifier. +- `Function` - First interpreted function called by the process. +- `Status` - Current status of the process. +- `Info` - More information. + +`Status` is one of the following: + +- `idle` - The process is no longer executing interpreted code. + `Info` is `{}`. +- `running` - The process is running. `Info` is `{}`. +- `waiting` - The process is waiting at a `receive`. `Info` is `{}`. +- `break` - Process execution is stopped, normally at a breakpoint. + `Info` is `{Module,Line}`. +- `exit` - The process is terminated. `Info` is `ExitReason`. +- `no_conn` - The connection is down to the node where the process is running. + `Info` is `{}`. +""". +-spec snapshot() -> [Snapshot] when + Snapshot :: {Pid, Function, Status, Info}, + Pid :: pid(), + Function :: {Module,Name,Args}, + Module :: module(), + Name :: atom(), + Args :: [term()], + Status :: idle | running | waiting | break | exit | no_conn, + Info :: {} | {Module,Line} | ExitReason, + Line :: integer(), + ExitReason :: term(). +snapshot() -> + dbg_iserver:safe_call(snapshot). + +-doc """ +Clears information about processes executing interpreted code by removing all +information about terminated processes. +""". +-spec clear() -> ok. +clear() -> + dbg_iserver:safe_cast(clear). + +-doc """ +Resumes process execution for `Pid`. +""". +-spec continue(Pid :: pid()) -> ok | {error,not_interpreted}. +continue(Pid) when is_pid(Pid) -> + case dbg_iserver:safe_call({get_meta, Pid}) of + {ok, Meta} when is_pid(Meta) -> + dbg_icmd:continue(Meta), + ok; + Error -> + Error + end. + +-doc """ +Resumes process execution for `c:pid(X, Y, Z)`. +""". +-spec continue(X,Y,Z) -> ok | {error,not_interpreted} when + X :: integer(), + Y :: integer(), + Z :: integer(). +continue(X, Y, Z) when is_integer(X), is_integer(Y), is_integer(Z) -> + continue(c:pid(X, Y, Z)). + + +%%==================================================================== +%% External exports only to be used by Debugger +%%==================================================================== + +%%-------------------------------------------------------------------- +%% start() +%% stop() +%% Functions for starting and stopping dbg_iserver explicitly. +%%-------------------------------------------------------------------- +-doc false. +start() -> dbg_iserver:start(). +-doc false. +stop() -> + lists:foreach( + fun(Mod) -> + _ = everywhere(distributed, + fun() -> + erts_debug:breakpoint({Mod,'_','_'}, false) + end) + end, + interpreted()), + dbg_iserver:stop(). + +%%-------------------------------------------------------------------- +%% subscribe() +%% Subscribe to information from dbg_iserver. The process calling this +%% function will receive the following messages: +%% {int, {interpret, Mod}} +%% {int, {no_interpret, Mod}} +%% {int, {new_process, {Pid, Function, Status, Info}}} +%% {int, {new_status, Pid, Status, Info}} +%% {int, {new_break, {Point, Options}}} +%% {int, {delete_break, Point}} +%% {int, {break_options, {Point, Options}}} +%% {int, no_break} +%% {int, {no_break, Mod}} +%% {int, {auto_attach, false|{Flags, Function}}} +%% {int, {stack_trace, Flag}} +%%-------------------------------------------------------------------- +-doc false. +subscribe() -> dbg_iserver:cast({subscribe, self()}). + +%%-------------------------------------------------------------------- +%% attach(Pid, Function) +%% Pid = pid() +%% Function = {Mod, Func} | {Mod, Func, Args} (see auto_attach/2) +%% Tell dbg_iserver to attach to Pid using Function. Will result in: +%% spawn(Mod, Func, [Pid, Status | Args]) +%%-------------------------------------------------------------------- +-doc false. +attach(Pid, {Mod, Func}) -> + attach(Pid, {Mod, Func, []}); +attach(Pid, Function) -> + dbg_iserver:cast({attach, Pid, Function}). + +%%-------------------------------------------------------------------- +%% step(Pid) +%% next(Pid) +%% (continue(Pid)) +%% finish(Pid) +%%-------------------------------------------------------------------- +-doc false. +step(Pid) -> + {ok, Meta} = dbg_iserver:call({get_meta, Pid}), + dbg_icmd:step(Meta). +-doc false. +next(Pid) -> + {ok, Meta} = dbg_iserver:call({get_meta, Pid}), + dbg_icmd:next(Meta). +-doc false. +finish(Pid) -> + {ok, Meta} = dbg_iserver:call({get_meta, Pid}), + dbg_icmd:finish(Meta). + + +%%==================================================================== +%% External exports only to be used by an attached process +%%==================================================================== + +%%-------------------------------------------------------------------- +%% attached(Pid) -> {ok, Meta} | error +%% Pid = Meta = pid() +%% Tell dbg_iserver that I have attached to Pid. dbg_iserver informs +%% the meta process and returns its pid. dbg_iserver may also refuse, +%% if there already is a process attached to Pid. +%%-------------------------------------------------------------------- +-doc false. +attached(Pid) -> + dbg_iserver:call({attached, self(), Pid}). + +%%-------------------------------------------------------------------- +%% meta(Meta, Cmd) +%% Meta = pid() +%% Cmd = step | next | continue | finish | skip | timeout | stop +%% Cmd = messages => [Message] +%% meta(Meta, Cmd, Arg) +%% Cmd = trace, Arg = bool() +%% Cmd = stack_trace Arg = all | notail | false +%% Cmd = stack_frame Arg = {up|down, Sp} +%% => {Sp, Mod, Line} | top | bottom +%% Cmd = backtrace Arg = integer() +%% => {Sp, Mod, {Func, Arity}, Line} +%% Cmd = eval Arg = {Cm, Cmd} | {Cm, Cmd, Sp} +%%-------------------------------------------------------------------- +-doc false. +meta(Meta, step) -> dbg_icmd:step(Meta); +meta(Meta, next) -> dbg_icmd:next(Meta); +meta(Meta, continue) -> dbg_icmd:continue(Meta); +meta(Meta, finish) -> dbg_icmd:finish(Meta); +meta(Meta, skip) -> dbg_icmd:skip(Meta); +meta(Meta, timeout) -> dbg_icmd:timeout(Meta); +meta(Meta, stop) -> dbg_icmd:stop(Meta); +meta(Meta, messages) -> dbg_icmd:get(Meta, messages, null). + +-doc false. +meta(Meta, trace, Trace) -> dbg_icmd:set(Meta, trace, Trace); +meta(Meta, stack_trace, Flag) -> dbg_icmd:set(Meta, stack_trace, Flag); +meta(Meta, bindings, Stack) -> dbg_icmd:get(Meta, bindings, Stack); +meta(Meta, stack_frame, Arg) -> dbg_icmd:get(Meta, stack_frame, Arg); +meta(Meta, backtrace, N) -> dbg_icmd:get(Meta, backtrace, N); +meta(Meta, eval, Arg) -> dbg_icmd:eval(Meta, Arg). + +%%-------------------------------------------------------------------- +%% contents(Mod, Pid) -> string() +%% Mod = atom() +%% Pid = pid() | any +%% Return the contents of an interpreted module. +%%-------------------------------------------------------------------- +-doc false. +contents(Mod, Pid) -> + {ok, Bin} = dbg_iserver:call({contents, Mod, Pid}), + binary_to_list(Bin). + +%%-------------------------------------------------------------------- +%% functions(Mod) -> [[Name, Arity]] +%% Mod = Name = atom() +%% Arity = integer() +%%-------------------------------------------------------------------- +-doc false. +functions(Mod) -> + [F || F <- dbg_iserver:call({functions, Mod}), functions_1(F)]. + +functions_1([module_info, _Arity]) -> false; +functions_1(_Func) -> true. + + +%%==================================================================== +%% External exports only to be used by error_handler +%%==================================================================== + +-doc false. +eval(Mod, Func, Args) -> + dbg_debugged:eval(Mod, Func, Args). + + +%%==================================================================== +%% Internal functions +%%==================================================================== + +%%--Interpreting modules---------------------------------------------- + +int_mod({Mod, Src, Beam, BeamBin}, Dist) + when is_atom(Mod), is_list(Src), is_list(Beam), is_binary(BeamBin) -> + try + case is_file(Src) of + true -> + check_application(Src), + case check_beam(BeamBin) of + {ok, Exp, Abst, _BeamBin} -> + load({Mod, Src, Beam, BeamBin, Exp, Abst}, Dist); + error -> + error + end; + false -> + error + end + catch + throw:Reason -> + Reason + end; +int_mod(AbsMod, Dist) when is_atom(AbsMod); is_list(AbsMod) -> + case check(AbsMod) of + {ok, Res} -> + load(Res, Dist); + {error, {app, App}} -> + io:format("** Cannot interpret ~p module: ~p~n", + [App, AbsMod]), + error; + _Error -> + io:format("** Invalid beam file or no abstract code: ~tp\n", + [AbsMod]), + error + end. + +check(Mod) when is_atom(Mod) -> catch check_module(Mod); +check(File) when is_list(File) -> catch check_file(File). + +load({Mod, Src, Beam, BeamBin, Exp, Abst}, Dist) -> + _ = everywhere(Dist, + fun() -> + code:purge(Mod), + erts_debug:breakpoint({Mod,'_','_'}, false), + {module,Mod} = code:load_binary(Mod, Beam, BeamBin) + end), + case erl_prim_loader:read_file(filename:absname(Src)) of + {ok, SrcBin} -> + MD5 = code:module_md5(BeamBin), + SrcBin1 = unicode:characters_to_binary(SrcBin, enc(SrcBin)), + true = is_binary(SrcBin1), + Bin = term_to_binary({interpreter_module,Exp,Abst,SrcBin1,MD5}), + {module, Mod} = dbg_iserver:safe_call({load, Mod, Src, Bin}), + _ = everywhere(Dist, + fun() -> + true = erts_debug:breakpoint({Mod,'_','_'}, true) > 0 + end), + {module, Mod}; + error -> + error + end. + +check_module(Mod) -> + case code:which(Mod) of + Beam when is_list(Beam) -> + case find_src(Mod, Beam) of + Src when is_list(Src) -> + check_application(Src), + case check_beam(Beam) of + {ok, Exp, Abst, BeamBin} -> + {ok, {Mod, Src, Beam, BeamBin, Exp, Abst}}; + error -> + {error, no_debug_info} + end; + error -> + {error, no_src} + end; + _ -> + {error, badarg} + end. + +check_file(Name0) -> + Src = + case is_file(Name0) of + true -> + Name0; + false -> + Name = Name0 ++ ".erl", + case is_file(Name) of + true -> Name; + false -> error + end + end, + if + is_list(Src) -> + check_application(Src), + Mod = scan_module_name(Src), + case find_beam(Mod, Src) of + Beam when is_list(Beam) -> + case check_beam(Beam) of + {ok, Exp, Abst, BeamBin} -> + {ok, {Mod, Src, Beam, BeamBin, Exp, Abst}}; + error -> + {error, no_debug_info} + end; + error -> + {error, no_beam} + end; + true -> + {error, badarg} + end. + +%% Try to avoid interpreting a kernel, stdlib, gs or debugger module. +check_application(Src) -> + case lists:reverse(filename:split(filename:absname(Src))) of + [_Mod,"src",AppS|_] -> + check_application2(AppS); + _ -> ok + end. +check_application2("kernel-"++_) -> throw({error,{app,kernel}}); +check_application2("stdlib-"++_) -> throw({error,{app,stdlib}}); +check_application2("erts-"++_) -> throw({error,{app,erts}}); +check_application2("gs-"++_) -> throw({error,{app,gs}}); +check_application2("debugger-"++_) -> throw({error,{app,debugger}}); +check_application2(_) -> ok. + +find_src(Mod, Beam) -> + Src0 = filename:rootname(Beam) ++ ".erl", + case is_file(Src0) of + true -> Src0; + false -> + EbinDir = filename:dirname(Beam), + Src = filename:join([filename:dirname(EbinDir), "src", + filename:basename(Src0)]), + case is_file(Src) of + true -> Src; + false -> find_src_from_module(Mod) + end + end. + +find_src_from_module(Mod) -> + Compile = Mod:module_info(compile), + case lists:keyfind(source, 1, Compile) of + {source, Src} -> + case is_file(Src) of + true -> Src; + false -> error + end; + false -> + error + end. + +find_beam(Mod, Src) -> + SrcDir = filename:dirname(Src), + BeamFile = atom_to_list(Mod) ++ code:objfile_extension(), + File = filename:join(SrcDir, BeamFile), + case is_file(File) of + true -> File; + false -> find_beam_1(BeamFile, SrcDir) + end. + +find_beam_1(BeamFile, SrcDir) -> + RootDir = filename:dirname(SrcDir), + EbinDir = filename:join(RootDir, "ebin"), + CodePath = [EbinDir | code:get_path()], + lists:foldl(fun(_, Beam) when is_list(Beam) -> Beam; + (Dir, error) -> + File = filename:join(Dir, BeamFile), + case is_file(File) of + true -> File; + false -> error + end + end, + error, + CodePath). + +check_beam(BeamBin) when is_binary(BeamBin) -> + case beam_lib:chunks(BeamBin, [abstract_code,exports]) of + {ok,{_Mod,[{abstract_code,no_abstract_code}|_]}} -> + error; + {ok,{_Mod,[{abstract_code,Abst},{exports,Exp}]}} -> + {ok,Exp,Abst, BeamBin}; + _ -> + error + end; +check_beam(Beam) when is_list(Beam) -> + {ok, Bin} = erl_prim_loader:read_file(filename:absname(Beam)), + check_beam(Bin). + +is_file(Name) -> + filelib:is_regular(filename:absname(Name), erl_prim_loader). + +everywhere(distributed, Fun) -> + case is_alive() of + true -> rpc:multicall(erlang, apply, [Fun,[]]); + false -> Fun() + end; +everywhere(local, Fun) -> + Fun(). + +scan_module_name(File) -> + try + {ok, Bin} = erl_prim_loader:read_file(filename:absname(File)), + scan_module_name_1([], <<>>, Bin, enc(Bin)) + catch + _:_ -> + throw({error, no_beam}) + end. + +scan_module_name_1(Cont0, B0, Bin0, Enc) -> + N = min(100, byte_size(Bin0)), + {Bin1, Bin} = erlang:split_binary(Bin0, N), + {Chars, B1} = + case unicode:characters_to_list(list_to_binary([B0, Bin1]), Enc) of + {incomplete, List, Binary} -> + {List, Binary}; + List when is_list(List), List =/= [] -> + {List, <<>>} + end, + scan_module_name_2(Cont0, Chars, B1, Bin, Enc). + +scan_module_name_2(Cont0, Chars, B1, Bin, Enc) -> + case erl_scan:tokens(Cont0, Chars, _AnyLine = 1) of + {done, {ok, Ts, _}, Rest} -> + scan_module_name_3(Ts, Rest, B1, Bin, Enc); + {more, Cont} -> + scan_module_name_1(Cont, B1, Bin, Enc) + end. + +scan_module_name_3([{'-',_},{atom,_,module},{'(',_} | _]=Ts, + _Chars, _B1, _Bin, _Enc) -> + scan_module_name_4(Ts); +scan_module_name_3([{'-',_},{atom,_,_} | _], Chars, B1, Bin, Enc) -> + scan_module_name_2("", Chars, B1, Bin, Enc). + +scan_module_name_4(Ts) -> + {ok, {attribute,_,module,M}} = erl_parse:parse_form(Ts), + true = is_atom(M), + M. + +enc(Bin) -> + case epp:read_encoding_from_binary(Bin) of + none -> epp:default_encoding(); + Encoding -> Encoding + end. + +%%--Stop interpreting modules----------------------------------------- + +del_mod(AbsMod, Dist) -> + Mod = if + is_atom(AbsMod) -> AbsMod; + is_list(AbsMod) -> + list_to_atom(filename:basename(AbsMod,".erl")) + end, + dbg_iserver:safe_cast({delete, Mod}), + _ = everywhere(Dist, + fun() -> + erts_debug:breakpoint({Mod,'_','_'}, false), + erlang:yield() + end), + ok. + From 8d28ca2408af1931e2d7476c80da0018e79c4f7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Svensson?= Date: Tue, 27 May 2025 10:18:29 +0200 Subject: [PATCH 4/9] Patch OTP26/27 debugger code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Apply the same changes done in erlide_debugger_25 but add comments to highlight the modifications. Signed-off-by: Björn Svensson --- debugger/erlide_debugger_26/src/dbg_icmd.erl | 35 +++++++++++++++++++ debugger/erlide_debugger_26/src/dbg_ieval.erl | 33 +++++++++++++++-- debugger/erlide_debugger_26/src/dbg_istk.erl | 28 +++++++++++++++ debugger/erlide_debugger_26/src/int.erl | 5 +++ debugger/erlide_debugger_27/src/dbg_icmd.erl | 35 +++++++++++++++++++ debugger/erlide_debugger_27/src/dbg_ieval.erl | 33 +++++++++++++++-- debugger/erlide_debugger_27/src/dbg_istk.erl | 28 +++++++++++++++ debugger/erlide_debugger_27/src/int.erl | 5 +++ 8 files changed, 198 insertions(+), 4 deletions(-) diff --git a/debugger/erlide_debugger_26/src/dbg_icmd.erl b/debugger/erlide_debugger_26/src/dbg_icmd.erl index 3bbd05d..8f9e991 100644 --- a/debugger/erlide_debugger_26/src/dbg_icmd.erl +++ b/debugger/erlide_debugger_26/src/dbg_icmd.erl @@ -29,6 +29,10 @@ -export([set/3, get/3]). -export([handle_msg/4]). +%% erlide patch ------------------------------------------------------ +-export([set_variable_value/4]). +%% erlide patch ------------------------------------------------------ + %% Library functions for attached process handling -export([tell_attached/1]). @@ -50,6 +54,12 @@ %% specifies if the process should break. %%-------------------------------------------------------------------- +%% erlide patch ------------------------------------------------------ +%% Common Test adaptation +cmd({call_remote,0,ct_line,line,_As}, Bs, _Ieval) -> + Bs; +%% erlide patch ------------------------------------------------------ + cmd(Expr, Bs, Ieval) -> cmd(Expr, Bs, get(next_break), Ieval). @@ -181,6 +191,17 @@ timeout(Meta) -> Meta ! {user, timeout}. stop(Meta) -> Meta ! {user, {cmd, stop}}. +%% erlide patch ------------------------------------------------------ +set_variable_value(Meta, Variable, Value, SP) -> + eval(Meta, {no_module, Variable++"="++Value, SP}), + receive + {Meta, EvalRsp} -> + EvalRsp + after 5000 -> + {error, timeout} + end. +%% erlide patch ------------------------------------------------------ + eval(Meta, {Mod, Cmd}) -> eval(Meta, {Mod, Cmd, nostack}); eval(Meta, {Mod, Cmd, SP}) -> @@ -337,6 +358,12 @@ handle_user_msg({set,trace,Bool}, _Status, _Bs, _Ieval) -> tell_attached({trace, Bool}); handle_user_msg({set,stack_trace,Flag}, _Status, _Bs, _Ieval) -> set_stack_trace(Flag); +%% erlide patch ------------------------------------------------------ +handle_user_msg({get,all_stack_frames,From,_}, _Status, Bs, _Ieval) -> + reply(From, all_stack_frames, {all_frames(), Bs}); +handle_user_msg({get,all_modules_on_stack,From,_}, _Status, _Bs, _Ieval) -> + reply(From, all_modules_on_stack, all_modules_on_stack()); +%% erlide patch ------------------------------------------------------ handle_user_msg({get,bindings,From,SP}, _Status, Bs, _Ieval) -> reply(From, bindings, bindings(Bs, SP)); handle_user_msg({get,stack_frame,From,{Dir,SP}}, _Status, _Bs,_Ieval) -> @@ -346,6 +373,14 @@ handle_user_msg({get,messages,From,_}, _Status, _Bs, _Ieval) -> handle_user_msg({get,backtrace,From,N}, _Status, _Bs, Ieval) -> reply(From, backtrace, dbg_istk:backtrace(N, Ieval)). +%% erlide patch ------------------------------------------------------ +all_modules_on_stack() -> + dbg_istk:all_modules_on_stack(). + +all_frames() -> + dbg_ieval:all_frames(). +%% erlide patch ------------------------------------------------------ + set_stack_trace(true) -> set_stack_trace(all); set_stack_trace(Flag) -> diff --git a/debugger/erlide_debugger_26/src/dbg_ieval.erl b/debugger/erlide_debugger_26/src/dbg_ieval.erl index b235b4c..fed8d72 100644 --- a/debugger/erlide_debugger_26/src/dbg_ieval.erl +++ b/debugger/erlide_debugger_26/src/dbg_ieval.erl @@ -23,6 +23,10 @@ -export([eval_expr/3]). -export([check_exit_msg/3,exception/4]). +%% erlide patch ------------------------------------------------------ +-export([all_frames/0]). +%% erlide patch ------------------------------------------------------ + -include("dbg_ieval.hrl"). %%==================================================================== @@ -73,14 +77,25 @@ exit_info(Int, AttPid, OrigPid, Reason, ExitInfo) -> {{Mod,Line},Bs,S} -> dbg_istk:from_external(S), Le = dbg_istk:stack_level(), - dbg_icmd:tell_attached({exit_at, {Mod, Line}, Reason, Le}), +%% erlide patch ------------------------------------------------------ + %% dbg_icmd:tell_attached({exit_at, {Mod, Line}, Reason, Le}), + dbg_icmd:tell_attached({exit_at, {Mod, Line}, Reason, Le, OrigPid, dbg_istk:all_frames(S), Bs}), +%% erlide patch ------------------------------------------------------ exit_loop(OrigPid, Reason, Bs,#ieval{module=Mod,line=Line}); {} -> dbg_istk:init(), - dbg_icmd:tell_attached({exit_at, null, Reason, 1}), +%% erlide patch ------------------------------------------------------ + %% dbg_icmd:tell_attached({exit_at, null, Reason, 1}), + dbg_icmd:tell_attached({exit_at, null, Reason, 1, OrigPid}), +%% erlide patch ------------------------------------------------------ exit_loop(OrigPid, Reason, erl_eval:new_bindings(),#ieval{}) end. +%% erlide patch ------------------------------------------------------ +all_frames() -> + {dbg_istk:all_frames(), []}. +%% erlide patch ------------------------------------------------------ + %%-------------------------------------------------------------------- %% eval_expr(Expr, Bs, Ieval) -> {value, Value, Bs} %% @@ -460,6 +475,13 @@ do_eval_function(Mod, Fun, As0, Bs0, _, Ieval0) when is_function(Fun); exception(error, Reason, Bs0, Ieval0) end; +%% erlide patch ------------------------------------------------------ +%% Common Test adaptation +do_eval_function(ct_line, line, As, Bs, extern, #ieval{level=Le}=Ieval) -> + debugged_cmd({apply,ct_line,line,As}, Bs, Ieval#ieval{level=Le+1}), + {value, ignore, Bs}; +%% erlide patch ------------------------------------------------------ + do_eval_function(Mod, Name, As0, Bs0, Called, Ieval0) -> #ieval{level=Le,line=Li,top=Top} = Ieval0, trace(call, {Called, {Le,Li,Mod,Name,As0}}), @@ -932,6 +954,13 @@ expr({make_ext_fun,Line,MFA0}, Bs0, Ieval0) -> exception(error, badarg, Bs, Ieval, true) end; +%% erlide patch ------------------------------------------------------ +%% Common test adaptation +expr({call_remote,0,ct_line,line,As0,Lc}, Bs0, Ieval0) -> + {As,_Bs} = eval_list(As0, Bs0, Ieval0), + eval_function(ct_line, line, As, Bs0, extern, Ieval0, Lc); +%% erlide patch ------------------------------------------------------ + %% Local function call expr({local_call,Line,F,As0,Lc}, Bs0, #ieval{module=M} = Ieval0) -> Ieval = Ieval0#ieval{line=Line}, diff --git a/debugger/erlide_debugger_26/src/dbg_istk.erl b/debugger/erlide_debugger_26/src/dbg_istk.erl index 4ba2000..67bf537 100644 --- a/debugger/erlide_debugger_26/src/dbg_istk.erl +++ b/debugger/erlide_debugger_26/src/dbg_istk.erl @@ -24,6 +24,10 @@ bindings/1,stack_frame/2,backtrace/2, in_use_p/2]). +%% erlide patch ------------------------------------------------------ +-export([all_frames/0, all_frames/1, all_modules_on_stack/0]). +%% erlide patch ------------------------------------------------------ + -include("dbg_ieval.hrl"). -define(STACK, ?MODULE). @@ -50,6 +54,30 @@ from_external({stack,Stk}) -> init(Stack) -> put(?STACK, Stack). +%% erlide patch ------------------------------------------------------ +all_frames() -> + all_frames(get(?STACK)). + +all_frames(Stack) -> + [erlide_frame(E) || E <- Stack]. + +erlide_frame(#e{mfa={M, F, As}, line=Wh, bindings=Bs, level=Lvl}) -> + {{M, F, args2arity(As)}, Wh, erl_eval:bindings(Bs), Lvl}; +erlide_frame(#e{mfa={F, As}, line=Wh, bindings=Bs, level=Lvl}) -> + {{F, args2arity(As)}, Wh, erl_eval:bindings(Bs), Lvl}; +erlide_frame(E) -> + E. + +all_modules_on_stack() -> + all_modules_on_stack(get(stack)). + +all_modules_on_stack(Stack) -> + [M || {_X, {{M, _F, _As}, _Wh, _Bs}} <- Stack]. + +args2arity(As) when is_list(As) -> + length(As). +%% erlide patch ------------------------------------------------------ + %% We keep track of a call stack that is used for %% 1) saving stack frames that can be inspected from an Attached %% Process GUI (using dbg_icmd:get(Meta, stack_frame, {Dir, SP}) diff --git a/debugger/erlide_debugger_26/src/int.erl b/debugger/erlide_debugger_26/src/int.erl index fdf5957..ed56212 100644 --- a/debugger/erlide_debugger_26/src/int.erl +++ b/debugger/erlide_debugger_26/src/int.erl @@ -266,6 +266,11 @@ first_lines(Clauses) -> first_line({clause,_L,_Vars,_,Exprs}) -> first_line(Exprs); +%% erlide patch ------------------------------------------------------ +%% Common Test adaptation +first_line([{call_remote,0,ct_line,line,_As}|Exprs]) -> + first_line(Exprs); +%% erlide patch ------------------------------------------------------ first_line([Expr|_Exprs]) -> % Expr = {Op, Line, ..varying no of args..} element(2, Expr). diff --git a/debugger/erlide_debugger_27/src/dbg_icmd.erl b/debugger/erlide_debugger_27/src/dbg_icmd.erl index 19d95d8..984a7d7 100644 --- a/debugger/erlide_debugger_27/src/dbg_icmd.erl +++ b/debugger/erlide_debugger_27/src/dbg_icmd.erl @@ -30,6 +30,10 @@ -export([set/3, get/3]). -export([handle_msg/4]). +%% erlide patch ------------------------------------------------------ +-export([set_variable_value/4]). +%% erlide patch ------------------------------------------------------ + %% Library functions for attached process handling -export([tell_attached/1]). @@ -51,6 +55,12 @@ %% specifies if the process should break. %%-------------------------------------------------------------------- +%% erlide patch ------------------------------------------------------ +%% Common Test adaptation +cmd({call_remote,0,ct_line,line,_As}, Bs, _Ieval) -> + Bs; +%% erlide patch ------------------------------------------------------ + cmd(Expr, Bs, Ieval) -> cmd(Expr, Bs, get(next_break), Ieval). @@ -182,6 +192,17 @@ timeout(Meta) -> Meta ! {user, timeout}. stop(Meta) -> Meta ! {user, {cmd, stop}}. +%% erlide patch ------------------------------------------------------ +set_variable_value(Meta, Variable, Value, SP) -> + eval(Meta, {no_module, Variable++"="++Value, SP}), + receive + {Meta, EvalRsp} -> + EvalRsp + after 5000 -> + {error, timeout} + end. +%% erlide patch ------------------------------------------------------ + eval(Meta, {Mod, Cmd}) -> eval(Meta, {Mod, Cmd, nostack}); eval(Meta, {Mod, Cmd, SP}) -> @@ -338,6 +359,12 @@ handle_user_msg({set,trace,Bool}, _Status, _Bs, _Ieval) -> tell_attached({trace, Bool}); handle_user_msg({set,stack_trace,Flag}, _Status, _Bs, _Ieval) -> set_stack_trace(Flag); +%% erlide patch ------------------------------------------------------ +handle_user_msg({get,all_stack_frames,From,_}, _Status, Bs, _Ieval) -> + reply(From, all_stack_frames, {all_frames(), Bs}); +handle_user_msg({get,all_modules_on_stack,From,_}, _Status, _Bs, _Ieval) -> + reply(From, all_modules_on_stack, all_modules_on_stack()); +%% erlide patch ------------------------------------------------------ handle_user_msg({get,bindings,From,SP}, _Status, Bs, _Ieval) -> reply(From, bindings, bindings(Bs, SP)); handle_user_msg({get,stack_frame,From,{Dir,SP}}, _Status, _Bs,_Ieval) -> @@ -347,6 +374,14 @@ handle_user_msg({get,messages,From,_}, _Status, _Bs, _Ieval) -> handle_user_msg({get,backtrace,From,N}, _Status, _Bs, Ieval) -> reply(From, backtrace, dbg_istk:backtrace(N, Ieval)). +%% erlide patch ------------------------------------------------------ +all_modules_on_stack() -> + dbg_istk:all_modules_on_stack(). + +all_frames() -> + dbg_ieval:all_frames(). +%% erlide patch ------------------------------------------------------ + set_stack_trace(true) -> set_stack_trace(all); set_stack_trace(Flag) -> diff --git a/debugger/erlide_debugger_27/src/dbg_ieval.erl b/debugger/erlide_debugger_27/src/dbg_ieval.erl index 60a3dc8..388819b 100644 --- a/debugger/erlide_debugger_27/src/dbg_ieval.erl +++ b/debugger/erlide_debugger_27/src/dbg_ieval.erl @@ -24,6 +24,10 @@ -export([eval_expr/3]). -export([check_exit_msg/3,exception/4]). +%% erlide patch ------------------------------------------------------ +-export([all_frames/0]). +%% erlide patch ------------------------------------------------------ + -include("dbg_ieval.hrl"). %%==================================================================== @@ -74,14 +78,25 @@ exit_info(Int, AttPid, OrigPid, Reason, ExitInfo) -> {{Mod,Line},Bs,S} -> dbg_istk:from_external(S), Le = dbg_istk:stack_level(), - dbg_icmd:tell_attached({exit_at, {Mod, Line}, Reason, Le}), +%% erlide patch ------------------------------------------------------ + %% dbg_icmd:tell_attached({exit_at, {Mod, Line}, Reason, Le}), + dbg_icmd:tell_attached({exit_at, {Mod, Line}, Reason, Le, OrigPid, dbg_istk:all_frames(S), Bs}), +%% erlide patch ------------------------------------------------------ exit_loop(OrigPid, Reason, Bs,#ieval{module=Mod,line=Line}); {} -> dbg_istk:init(), - dbg_icmd:tell_attached({exit_at, null, Reason, 1}), +%% erlide patch ------------------------------------------------------ + %% dbg_icmd:tell_attached({exit_at, null, Reason, 1}), + dbg_icmd:tell_attached({exit_at, null, Reason, 1, OrigPid}), +%% erlide patch ------------------------------------------------------ exit_loop(OrigPid, Reason, erl_eval:new_bindings(),#ieval{}) end. +%% erlide patch ------------------------------------------------------ +all_frames() -> + {dbg_istk:all_frames(), []}. +%% erlide patch ------------------------------------------------------ + %%-------------------------------------------------------------------- %% eval_expr(Expr, Bs, Ieval) -> {value, Value, Bs} %% @@ -463,6 +478,13 @@ do_eval_function(Mod, Fun, As0, Bs0, _, Ieval0) when is_function(Fun); exception(error, Reason, Bs0, Ieval0) end; +%% erlide patch ------------------------------------------------------ +%% Common Test adaptation +do_eval_function(ct_line, line, As, Bs, extern, #ieval{level=Le}=Ieval) -> + debugged_cmd({apply,ct_line,line,As}, Bs, Ieval#ieval{level=Le+1}), + {value, ignore, Bs}; +%% erlide patch ------------------------------------------------------ + do_eval_function(Mod, Name, As0, Bs0, Called, Ieval0) -> #ieval{level=Le,line=Li,top=Top} = Ieval0, trace(call, {Called, {Le,Li,Mod,Name,As0}}), @@ -935,6 +957,13 @@ expr({make_ext_fun,Line,MFA0}, Bs0, Ieval0) -> exception(error, badarg, Bs, Ieval, true) end; +%% erlide patch ------------------------------------------------------ +%% Common test adaptation +expr({call_remote,0,ct_line,line,As0,Lc}, Bs0, Ieval0) -> + {As,_Bs} = eval_list(As0, Bs0, Ieval0), + eval_function(ct_line, line, As, Bs0, extern, Ieval0, Lc); +%% erlide patch ------------------------------------------------------ + %% Local function call expr({local_call,Line,F,As0,Lc}, Bs0, #ieval{module=M} = Ieval0) -> Ieval = Ieval0#ieval{line=Line}, diff --git a/debugger/erlide_debugger_27/src/dbg_istk.erl b/debugger/erlide_debugger_27/src/dbg_istk.erl index 6d16e45..4b03db0 100644 --- a/debugger/erlide_debugger_27/src/dbg_istk.erl +++ b/debugger/erlide_debugger_27/src/dbg_istk.erl @@ -25,6 +25,10 @@ bindings/1,stack_frame/2,backtrace/2, in_use_p/2]). +%% erlide patch ------------------------------------------------------ +-export([all_frames/0, all_frames/1, all_modules_on_stack/0]). +%% erlide patch ------------------------------------------------------ + -include("dbg_ieval.hrl"). -define(STACK, ?MODULE). @@ -51,6 +55,30 @@ from_external({stack,Stk}) -> init(Stack) -> put(?STACK, Stack). +%% erlide patch ------------------------------------------------------ +all_frames() -> + all_frames(get(?STACK)). + +all_frames(Stack) -> + [erlide_frame(E) || E <- Stack]. + +erlide_frame(#e{mfa={M, F, As}, line=Wh, bindings=Bs, level=Lvl}) -> + {{M, F, args2arity(As)}, Wh, erl_eval:bindings(Bs), Lvl}; +erlide_frame(#e{mfa={F, As}, line=Wh, bindings=Bs, level=Lvl}) -> + {{F, args2arity(As)}, Wh, erl_eval:bindings(Bs), Lvl}; +erlide_frame(E) -> + E. + +all_modules_on_stack() -> + all_modules_on_stack(get(stack)). + +all_modules_on_stack(Stack) -> + [M || {_X, {{M, _F, _As}, _Wh, _Bs}} <- Stack]. + +args2arity(As) when is_list(As) -> + length(As). +%% erlide patch ------------------------------------------------------ + %% We keep track of a call stack that is used for %% 1) saving stack frames that can be inspected from an Attached %% Process GUI (using dbg_icmd:get(Meta, stack_frame, {Dir, SP}) diff --git a/debugger/erlide_debugger_27/src/int.erl b/debugger/erlide_debugger_27/src/int.erl index 740f52b..5a009e5 100644 --- a/debugger/erlide_debugger_27/src/int.erl +++ b/debugger/erlide_debugger_27/src/int.erl @@ -493,6 +493,11 @@ first_lines(Clauses) -> first_line({clause,_L,_Vars,_,Exprs}) -> first_line(Exprs); +%% erlide patch ------------------------------------------------------ +%% Common Test adaptation +first_line([{call_remote,0,ct_line,line,_As}|Exprs]) -> + first_line(Exprs); +%% erlide patch ------------------------------------------------------ first_line([Expr|_Exprs]) -> % Expr = {Op, Line, ..varying no of args..} element(2, Expr). From 5e08f873ac57f0d0864e1992a62f1a153368f7cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Svensson?= Date: Mon, 26 May 2025 16:42:09 +0200 Subject: [PATCH 5/9] Update to OTP25 with OTP26/27 debugger support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Björn Svensson --- build_utils.sh | 2 +- common/build | 2 +- common/rebar.config | 2 +- debugger/build | 6 +++--- debugger/erlide_debugger/build | 2 +- debugger/erlide_debugger/rebar.config | 4 ++-- debugger/erlide_debugger/rebar.lock | 2 +- eclipse/build | 10 +++++----- .../org.erlide.kernel.debugger/build.properties | 2 +- eclipse/org.erlide.kernel.debugger/plugin.xml | 14 +++++++------- ide/build | 2 +- ide/rebar.config | 2 +- 12 files changed, 25 insertions(+), 25 deletions(-) diff --git a/build_utils.sh b/build_utils.sh index 46a8646..85a10ae 100644 --- a/build_utils.sh +++ b/build_utils.sh @@ -1,6 +1,6 @@ #! /bin/bash -e -declare -A OTP_VSNS=( ["23"]="23.3.4.18" ["24"]="24.3.4.7" ["25"]="25.2" ) +declare -A OTP_VSNS=( ["25"]="25.3.2.21" ["26"]="26.2.5.12" ["27"]="27.3.3" ) build_project() { REBAR=$1 diff --git a/common/build b/common/build index 2aebcee..8013922 100755 --- a/common/build +++ b/common/build @@ -5,4 +5,4 @@ source ../build_utils.sh dir=`pwd` prj=`basename $dir` -build_project ../rebar3 $prj 23 "$@" +build_project ../rebar3 $prj 25 "$@" diff --git a/common/rebar.config b/common/rebar.config index 59fcaa7..5cc5a38 100644 --- a/common/rebar.config +++ b/common/rebar.config @@ -1,4 +1,4 @@ -{require_otp_vsn, "23.*"}. +{require_otp_vsn, "25.*"}. {plugins, [ covertool diff --git a/debugger/build b/debugger/build index aef77d7..d8ef21b 100755 --- a/debugger/build +++ b/debugger/build @@ -1,10 +1,10 @@ #! /bin/bash -e -cd erlide_debugger_23 +cd erlide_debugger_25 ./build "$@" -cd ../erlide_debugger_24 +cd ../erlide_debugger_26 ./build "$@" -cd ../erlide_debugger_25 +cd ../erlide_debugger_27 ./build "$@" cd ../erlide_debugger ./build "$@" diff --git a/debugger/erlide_debugger/build b/debugger/erlide_debugger/build index 54d7e91..aeeede3 100755 --- a/debugger/erlide_debugger/build +++ b/debugger/erlide_debugger/build @@ -5,4 +5,4 @@ source ../../build_utils.sh dir=`pwd` prj=`basename $dir` -build_project ../../rebar3 $prj 23 do clean,compile +build_project ../../rebar3 $prj 25 do clean,compile diff --git a/debugger/erlide_debugger/rebar.config b/debugger/erlide_debugger/rebar.config index 6df14b4..184d765 100644 --- a/debugger/erlide_debugger/rebar.config +++ b/debugger/erlide_debugger/rebar.config @@ -1,4 +1,4 @@ -{require_otp_vsn, "23.*"}. +{require_otp_vsn, "25.*"}. {plugins, [ {rebar_localdep, {git, "https://github.com/alinpopa/rebar3-localdep-plugin.git", {branch, "master"}}} @@ -6,7 +6,7 @@ {deps, [ {erlide_common, {localdep, "common/apps/erlide_common"}}, - {erlide_debugger_23, {localdep, "debugger/erlide_debugger_23"}} + {erlide_debugger_25, {localdep, "debugger/erlide_debugger_25"}} ]}. diff --git a/debugger/erlide_debugger/rebar.lock b/debugger/erlide_debugger/rebar.lock index 88d695a..d36fad2 100644 --- a/debugger/erlide_debugger/rebar.lock +++ b/debugger/erlide_debugger/rebar.lock @@ -1,2 +1,2 @@ [{<<"erlide_common">>,{localdep,"common/apps/erlide_common"},0}, - {<<"erlide_debugger_23">>,{localdep,"debugger/erlide_debugger_23"},0}]. + {<<"erlide_debugger_25">>,{localdep,"debugger/erlide_debugger_25"},0}]. diff --git a/eclipse/build b/eclipse/build index b28a9da..15cf8ca 100755 --- a/eclipse/build +++ b/eclipse/build @@ -13,18 +13,18 @@ rm -rf org.erlide.kernel.ide/ebin mkdir -p org.erlide.kernel.common/ebin mkdir -p org.erlide.kernel.debugger/ebin -mkdir -p org.erlide.kernel.debugger/ebin/23 -mkdir -p org.erlide.kernel.debugger/ebin/24 mkdir -p org.erlide.kernel.debugger/ebin/25 +mkdir -p org.erlide.kernel.debugger/ebin/26 +mkdir -p org.erlide.kernel.debugger/ebin/27 mkdir -p org.erlide.kernel.ide/ebin # what if we keep the otp app structure? /priv might be useful find ../common/_build/default/lib -type f \( -name "*.beam" -o -name "*.app" \) -exec cp {} org.erlide.kernel.common/ebin/ \; -find ../debugger/erlide_debugger/_build/default/lib -type f \( -name "*.beam" -o -name "*.app" \) ! -path "*/erlide_debugger_23/*" -exec cp {} org.erlide.kernel.debugger/ebin/ \; -find ../debugger/erlide_debugger_23/_build/default/lib -type f \( -name "*.beam" -o -name "*.app" \) -exec cp {} org.erlide.kernel.debugger/ebin/23/ \; -find ../debugger/erlide_debugger_24/_build/default/lib -type f \( -name "*.beam" -o -name "*.app" \) -exec cp {} org.erlide.kernel.debugger/ebin/24/ \; +find ../debugger/erlide_debugger/_build/default/lib -type f \( -name "*.beam" -o -name "*.app" \) ! -path "*/erlide_debugger_25/*" -exec cp {} org.erlide.kernel.debugger/ebin/ \; find ../debugger/erlide_debugger_25/_build/default/lib -type f \( -name "*.beam" -o -name "*.app" \) -exec cp {} org.erlide.kernel.debugger/ebin/25/ \; +find ../debugger/erlide_debugger_26/_build/default/lib -type f \( -name "*.beam" -o -name "*.app" \) -exec cp {} org.erlide.kernel.debugger/ebin/26/ \; +find ../debugger/erlide_debugger_27/_build/default/lib -type f \( -name "*.beam" -o -name "*.app" \) -exec cp {} org.erlide.kernel.debugger/ebin/27/ \; find ../ide/_build/default/lib -type f \( -name "*.beam" -o -name "*.app" \) -exec cp {} org.erlide.kernel.ide/ebin/ \; VSN=`get_feature_vsn org.erlide.kernel.feature` diff --git a/eclipse/org.erlide.kernel.debugger/build.properties b/eclipse/org.erlide.kernel.debugger/build.properties index bd25cb1..2bc314a 100644 --- a/eclipse/org.erlide.kernel.debugger/build.properties +++ b/eclipse/org.erlide.kernel.debugger/build.properties @@ -1,3 +1,3 @@ -bin.includes = META-INF/, ebin/, ebin/23/, ebin/24/, ebin/25/, plugin.xml +bin.includes = META-INF/, ebin/, ebin/25/, ebin/26/, ebin/27/, plugin.xml jars.compile.order = . source.. = / diff --git a/eclipse/org.erlide.kernel.debugger/plugin.xml b/eclipse/org.erlide.kernel.debugger/plugin.xml index a00b86b..367b96f 100644 --- a/eclipse/org.erlide.kernel.debugger/plugin.xml +++ b/eclipse/org.erlide.kernel.debugger/plugin.xml @@ -6,22 +6,22 @@ + otp_version="25"> + otp_version="25"> + otp_version="26"> + otp_version="27"> ​ diff --git a/ide/build b/ide/build index 2d65d0d..56dd966 100755 --- a/ide/build +++ b/ide/build @@ -8,4 +8,4 @@ prj=`basename $dir` export LOCALDEP_DIR=`pwd` export REBAR_COLOR="low" -build_project ../rebar3 $prj 23 "$@" +build_project ../rebar3 $prj 25 "$@" diff --git a/ide/rebar.config b/ide/rebar.config index 0810834..a6b945a 100644 --- a/ide/rebar.config +++ b/ide/rebar.config @@ -1,4 +1,4 @@ -{require_otp_vsn, "23.*"}. +{require_otp_vsn, "25.*"}. {plugins, [ {rebar_localdep, {git, "https://github.com/alinpopa/rebar3-localdep-plugin.git", {branch, "master"}}}, From ba4be015aa30d04f4aa036ae3cfcd61ef99ec54d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Svensson?= Date: Tue, 27 May 2025 09:05:27 +0200 Subject: [PATCH 6/9] Remove debugger_support for OTP23 and OTP24 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Björn Svensson --- debugger/erlide_debugger_23/build | 8 - debugger/erlide_debugger_23/include/.keep | 0 debugger/erlide_debugger_23/priv/.keep | 0 debugger/erlide_debugger_23/rebar.config | 24 - debugger/erlide_debugger_23/rebar.lock | 1 - .../erlide_debugger_23/src/dbg_debugged.erl | 101 - debugger/erlide_debugger_23/src/dbg_icmd.erl | 518 ----- debugger/erlide_debugger_23/src/dbg_idb.erl | 55 - debugger/erlide_debugger_23/src/dbg_ieval.erl | 1758 ---------------- debugger/erlide_debugger_23/src/dbg_ieval.hrl | 31 - debugger/erlide_debugger_23/src/dbg_iload.erl | 693 ------ .../erlide_debugger_23/src/dbg_iserver.erl | 604 ------ debugger/erlide_debugger_23/src/dbg_istk.erl | 270 --- .../src/erlide_debugger_23.app.src | 10 - debugger/erlide_debugger_23/src/int.erl | 751 ------- debugger/erlide_debugger_24/build | 8 - debugger/erlide_debugger_24/include/.keep | 0 debugger/erlide_debugger_24/priv/.keep | 0 debugger/erlide_debugger_24/rebar.config | 24 - debugger/erlide_debugger_24/rebar.lock | 1 - .../erlide_debugger_24/src/dbg_debugged.erl | 101 - debugger/erlide_debugger_24/src/dbg_icmd.erl | 518 ----- debugger/erlide_debugger_24/src/dbg_idb.erl | 55 - debugger/erlide_debugger_24/src/dbg_ieval.erl | 1867 ----------------- debugger/erlide_debugger_24/src/dbg_ieval.hrl | 32 - debugger/erlide_debugger_24/src/dbg_iload.erl | 1036 --------- .../erlide_debugger_24/src/dbg_iserver.erl | 612 ------ debugger/erlide_debugger_24/src/dbg_istk.erl | 276 --- .../src/erlide_debugger_24.app.src | 10 - debugger/erlide_debugger_24/src/int.erl | 751 ------- 30 files changed, 10115 deletions(-) delete mode 100755 debugger/erlide_debugger_23/build delete mode 100644 debugger/erlide_debugger_23/include/.keep delete mode 100644 debugger/erlide_debugger_23/priv/.keep delete mode 100644 debugger/erlide_debugger_23/rebar.config delete mode 100644 debugger/erlide_debugger_23/rebar.lock delete mode 100644 debugger/erlide_debugger_23/src/dbg_debugged.erl delete mode 100644 debugger/erlide_debugger_23/src/dbg_icmd.erl delete mode 100644 debugger/erlide_debugger_23/src/dbg_idb.erl delete mode 100644 debugger/erlide_debugger_23/src/dbg_ieval.erl delete mode 100644 debugger/erlide_debugger_23/src/dbg_ieval.hrl delete mode 100644 debugger/erlide_debugger_23/src/dbg_iload.erl delete mode 100644 debugger/erlide_debugger_23/src/dbg_iserver.erl delete mode 100644 debugger/erlide_debugger_23/src/dbg_istk.erl delete mode 100644 debugger/erlide_debugger_23/src/erlide_debugger_23.app.src delete mode 100644 debugger/erlide_debugger_23/src/int.erl delete mode 100755 debugger/erlide_debugger_24/build delete mode 100644 debugger/erlide_debugger_24/include/.keep delete mode 100644 debugger/erlide_debugger_24/priv/.keep delete mode 100644 debugger/erlide_debugger_24/rebar.config delete mode 100644 debugger/erlide_debugger_24/rebar.lock delete mode 100644 debugger/erlide_debugger_24/src/dbg_debugged.erl delete mode 100644 debugger/erlide_debugger_24/src/dbg_icmd.erl delete mode 100644 debugger/erlide_debugger_24/src/dbg_idb.erl delete mode 100644 debugger/erlide_debugger_24/src/dbg_ieval.erl delete mode 100644 debugger/erlide_debugger_24/src/dbg_ieval.hrl delete mode 100644 debugger/erlide_debugger_24/src/dbg_iload.erl delete mode 100644 debugger/erlide_debugger_24/src/dbg_iserver.erl delete mode 100644 debugger/erlide_debugger_24/src/dbg_istk.erl delete mode 100644 debugger/erlide_debugger_24/src/erlide_debugger_24.app.src delete mode 100644 debugger/erlide_debugger_24/src/int.erl diff --git a/debugger/erlide_debugger_23/build b/debugger/erlide_debugger_23/build deleted file mode 100755 index 370027c..0000000 --- a/debugger/erlide_debugger_23/build +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -source ../../build_utils.sh - -dir=`pwd` -prj=`basename $dir` - -build_project ../../rebar3 $prj 23 "$@" diff --git a/debugger/erlide_debugger_23/include/.keep b/debugger/erlide_debugger_23/include/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/debugger/erlide_debugger_23/priv/.keep b/debugger/erlide_debugger_23/priv/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/debugger/erlide_debugger_23/rebar.config b/debugger/erlide_debugger_23/rebar.config deleted file mode 100644 index ca51233..0000000 --- a/debugger/erlide_debugger_23/rebar.config +++ /dev/null @@ -1,24 +0,0 @@ -{require_otp_vsn, "23.*"}. - -{plugins, []}. - -{erl_opts, []}. -{edoc_opts,[{todo,true}]}. - -{eunit_opts, [verbose, {report,{eunit_surefire,[{dir,"."}]}}]}. - -{cover_export_enabled, true}. -{cover_enabled, false}. -{cover_print_enable, true}. - -{covertool_eunit, {".eunit/cover.coverdata", "eunit.coverage.xml"}}. -{covertool_prefix_len, 0}. - -{xref_checks,[ - undefined_function_calls, - undefined_functions, - locals_not_used, - %exports_not_used, - deprecated_function_calls, - deprecated_functions - ]}. diff --git a/debugger/erlide_debugger_23/rebar.lock b/debugger/erlide_debugger_23/rebar.lock deleted file mode 100644 index 57afcca..0000000 --- a/debugger/erlide_debugger_23/rebar.lock +++ /dev/null @@ -1 +0,0 @@ -[]. diff --git a/debugger/erlide_debugger_23/src/dbg_debugged.erl b/debugger/erlide_debugger_23/src/dbg_debugged.erl deleted file mode 100644 index 5296b8d..0000000 --- a/debugger/erlide_debugger_23/src/dbg_debugged.erl +++ /dev/null @@ -1,101 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2018. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% --module(dbg_debugged). - -%% External exports --export([eval/3]). - -%%==================================================================== -%% External exports -%%==================================================================== - -%%-------------------------------------------------------------------- -%% eval(Mod, Func, Args) -> Value -%% Main entry point from external (non-interpreted) code. -%% Called via the error handler. -%%-------------------------------------------------------------------- -eval(Mod, Func, Args) -> - Meta = dbg_ieval:eval(Mod, Func, Args), - Mref = erlang:monitor(process, Meta), - msg_loop(Meta, Mref). - -%%==================================================================== -%% Internal functions -%%==================================================================== - -msg_loop(Meta, Mref) -> - receive - - %% Evaluated function has returned a value - {sys, Meta, {ready, Val}} -> - erlang:demonitor(Mref, [flush]), - case Val of - {dbg_apply,M,F,A} -> - apply(M, F, A); - _ -> - Val - end; - - %% Evaluated function raised an (uncaught) exception - {sys, Meta, {exception,{Class,Reason,Stacktrace}}} -> - erlang:demonitor(Mref, [flush]), - - %% ...raise the same exception - erlang:error(erlang:raise(Class, Reason, Stacktrace), - [Class,Reason,Stacktrace]); - - %% Meta is evaluating a receive, must be done within context - %% of real (=this) process - {sys, Meta, {'receive',Msg}} -> - receive Msg -> - Meta ! {self(), rec_acked}, - ok - end, - msg_loop(Meta, Mref); - - %% Meta needs something evaluated within context of real process - {sys, Meta, {command,Command}} -> - Reply = handle_command(Command), - Meta ! {sys, self(), Reply}, - msg_loop(Meta, Mref); - - %% Meta has terminated - %% Must be due to int:stop() (or -heaven forbid- a debugger bug) - {'DOWN', Mref, _, _, Reason} -> - {interpreter_terminated, Reason} - end. - -handle_command(Command) -> - try - reply(Command) - catch Class:Reason:Stacktrace -> - {exception,{Class,Reason,stacktrace_f(Stacktrace)}} - end. - -reply({apply,M,F,As}) -> - {value, erlang:apply(M,F,As)}; -reply({eval,Expr,Bs}) -> - %% Bindings is an orddict (sort them) - erl_eval:expr(Expr, lists:sort(Bs)). % {value, Value, Bs2} - -%% Fix stacktrace - keep all above call to this module. -%% -stacktrace_f([]) -> []; -stacktrace_f([{?MODULE,_,_,_}|_]) -> []; -stacktrace_f([F|S]) -> [F|stacktrace_f(S)]. diff --git a/debugger/erlide_debugger_23/src/dbg_icmd.erl b/debugger/erlide_debugger_23/src/dbg_icmd.erl deleted file mode 100644 index b3e06c4..0000000 --- a/debugger/erlide_debugger_23/src/dbg_icmd.erl +++ /dev/null @@ -1,518 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2018. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(dbg_icmd). - -%% Internal command receiver/handler --export([cmd/3]). - -%% User control of process execution and settings --export([step/1, next/1, continue/1, finish/1, skip/1, timeout/1, - stop/1]). --export([eval/2]). --export([set_variable_value/4]). --export([set/3, get/3]). --export([handle_msg/4]). - -%% Library functions for attached process handling --export([tell_attached/1]). - -%% get_binding/2 --export([get_binding/2]). - --include("dbg_ieval.hrl"). - -%%==================================================================== -%% Internal command receiver/handler -%%==================================================================== - -%%-------------------------------------------------------------------- -%% cmd(Expr, Bs, Ieval) -> {skip, Bs} | Bs -%% This function is called from dbg_ieval before evaluating any -%% expression to give the user the chance to inspect variables etc. -%% get(next_break) => break | running -%% | Le -%% specifies if the process should break. -%%-------------------------------------------------------------------- - -%% Common Test adaptation -cmd({call_remote,0,ct_line,line,_As}, Bs, _Ieval) -> - Bs; - -cmd(Expr, Bs, Ieval) -> - cmd(Expr, Bs, get(next_break), Ieval). - -%% Evaluation should break -cmd(Expr, Bs, break, Ieval) -> - break(Expr, Bs, Ieval); -%% Evaluation should continue, unless there is a breakpoint at -%% the current line -cmd(Expr, Bs, running, #ieval{level=Le,module=M}=Ieval) -> - Line = element(2, Expr), - case break_p(M, Line, Le, Bs) of - true -> - put(next_break, break), - break(Expr, Bs, Ieval); - false -> - handle_cmd(Bs, running, Ieval) - end; -%% Evaluation should continue for now (until we've returned to -%% call level Next) -cmd(Expr, Bs, Next, #ieval{level=Le}=Ieval) when is_integer(Next), - Next - Line = element(2, Expr), - handle_cmd(Bs, Next, Ieval#ieval{line=Line}); -%% Evaluation has returned to call level Next, break -cmd(Expr, Bs, Next, #ieval{level=Le}=Ieval) when is_integer(Next), - Next>=Le -> - put(next_break, break), - break(Expr, Bs, Ieval). - -%% break_p(Mod, Line, Le, Bs) -> true | false -%% Checks if there is a breakpoint at Line in Mod. -%% As a side effect, disables or deletes breakpoint as specified -break_p(Mod, Line, Le, Bs) -> - case lists:keysearch({Mod, Line}, 1, get(breakpoints)) of - {value, {_Point, [active, Action, _, Cond]}} -> - case get(user_eval) of - [{Line, Le}|_] -> false; - _ -> - Bool = case Cond of - null -> true; - {CM, CN} -> - try CM:CN(Bs) of - true -> true; - false -> false; - _Term -> false - catch - _C:_R -> false - end - end, - if - Bool -> - case Action of - enable -> ignore; - disable -> - dbg_iserver:cast(get(int), - {break_option, - {Mod, Line}, - status, - inactive}); - delete -> - dbg_iserver:cast(get(int), - {delete_break, - {Mod, Line}}) - end; - true -> ignore - end, - Bool - end; - _Other -> % {value, {_Point, [inactive|_]}} | false - false - end. - -%% Called whenever evaluation enters break mode, informs attached -%% process and dbg_iserver -break(Expr, Bs, #ieval{level=Le,module=M}=Ieval) -> - Line = element(2, Expr), - dbg_iserver:cast(get(int), {set_status,self(),break,{M,Line}}), - tell_attached({break_at,M,Line,Le}), - handle_cmd(Bs, break, Ieval#ieval{line=Line}). - -%%-------------------------------------------------------------------- -%% handle_cmd(Bs0, Status, Ieval) -> Bs1 | {skip, Bs1} -%% Status = break | running | Le -%% In break mode, loop waiting for user commands (and handle other -%% messages meanwhile). -%% In other modes, handle other messages, if any. -%%-------------------------------------------------------------------- -handle_cmd(Bs, break, #ieval{level=Le}=Ieval) -> - receive - {user, {cmd, Cmd}} -> - dbg_iserver:cast(get(int), {set_status,self(),running,{}}), - tell_attached(running), - case Cmd of - step -> Bs; - next -> put(next_break, Le), Bs; - continue -> put(next_break, running), Bs; - finish -> put(next_break, Le-1), Bs; - skip -> {skip, Bs} - end; - {user, {eval, Cmd}} -> - Bs1 = eval_nonrestricted(Cmd, Bs, Ieval), - handle_cmd(Bs1, break, Ieval); - Msg -> - dbg_ieval:check_exit_msg(Msg, Bs, Ieval), - handle_msg(Msg, break, Bs, Ieval), - handle_cmd(Bs, break, Ieval) - end; -handle_cmd(Bs, Status, Ieval) -> - receive - Msg -> - dbg_ieval:check_exit_msg(Msg, Bs, Ieval), - handle_msg(Msg, Status, Bs, Ieval), - handle_cmd(Bs, Status, Ieval) - after 0 -> - Bs - end. - -%%==================================================================== -%% User control of process execution and settings -%%==================================================================== - -step(Meta) -> Meta ! {user, {cmd, step}}, ok. -next(Meta) -> Meta ! {user, {cmd, next}}, ok. -continue(Meta) -> Meta ! {user, {cmd, continue}}, ok. -finish(Meta) -> Meta ! {user, {cmd, finish}}, ok. -skip(Meta) -> Meta ! {user, {cmd, skip}}. - -timeout(Meta) -> Meta ! {user, timeout}. - -stop(Meta) -> Meta ! {user, {cmd, stop}}. - -set_variable_value(Meta, Variable, Value, SP) -> - eval(Meta, {no_module, Variable++"="++Value, SP}), - receive - {Meta, EvalRsp} -> - EvalRsp - after 5000 -> - {error, timeout} - end. - - -eval(Meta, {Mod, Cmd}) -> - eval(Meta, {Mod, Cmd, nostack}); -eval(Meta, {Mod, Cmd, SP}) -> - Cmd2 = case lists:reverse(Cmd) of % Commands must end with ".\n" - [10,$.|_] -> Cmd; - [10|T] -> lists:reverse([10,$.|T]); - [$.|T] -> lists:reverse([10,$.|T]); - T -> lists:reverse([10,$.|T]) - end, - Meta ! {user, {eval, {self(), Mod, Cmd2, SP}}}. - -%% Tag Args -%% --- ---- -%% trace Bool -%% stack_trace Flag -set(Meta, Tag, Args) -> - Meta ! {user, {set, Tag, Args}}. - -%% Tag Args Reply -%% --- ---- ----- -%% bindings nostack | SP [{Var,Val}] (Var=atom(), Val=term()) -%% stack_frame {up|down, SP} [{Le,Where,Bs}] | top | bottom -%% (Where = {Mod,Li} -%% messages null [Msg] (Msg=term()) -%% backtrace all | N [{Le,MFA}] (MFA={M,F,Args}|{Fun,Args}) -get(Meta, Tag, Args) -> - Meta ! {user, {get, Tag, self(), Args}}, - receive - {Meta, Tag, Reply} -> Reply - end. - -%%-------------------------------------------------------------------- -%% handle_msg({int, Msg} | {user, Msg}, Status, Bs, Ieval) -%% Status = idle | exit_at | wait_at | wait_after_at -%% | break | running | Le | {Le,MFA} -%%-------------------------------------------------------------------- -handle_msg({int, Msg}, Status, Bs, Ieval) -> - handle_int_msg(Msg, Status, Bs, Ieval); -handle_msg({user, Msg}, Status, Bs, Ieval) -> - handle_user_msg(Msg, Status, Bs, Ieval); -handle_msg(Msg, Status, Bs, Ieval) -> - io:format("***WARNING*** Unexp msg ~p, info ~p~n", - [Msg,{Status,Bs,Ieval}]). - -%% handle_int_msg(Msg, Status, Bs, Ieval) -%% Msg = {attached, AttPid} | {detached, AttPid} -%% | {old_code, Mod} -%% | {new_break, Break} | {delete_break, Break} -%% | {break_options, {Break, Options}} -%% | no_break | {no_break, Mod} -%% | stop (only when Status==exit_at, means AttPid has terminated) -%% Interpreter internal messages (from dbg_iserver) -handle_int_msg({attached, AttPid}, Status, _Bs, - #ieval{level=Le,module=M,line=Line}) -> - - %% Update process dictionary - put(attached, AttPid), - put(next_break, break), - - %% Tell attached process in which module evalution is located - if - Le =:= 1 -> - tell_attached({attached, undefined, -1, get(trace)}); - true -> - tell_attached({attached, M, Line, get(trace)}), - - %% Give info about status and call level as well - %% In this case, Status cannot be exit_at - Msg = case Status of - idle -> {func_at,M,Line,Le}; - break -> {break_at,M,Line,Le}; - wait_at -> {wait_at,M,Line,Le}; - wait_after_at -> {wait_after_at,M,Line,Le}; - _ -> running % running | Le | {Le,MFA} - end, - tell_attached(Msg) - end; -handle_int_msg(detached, _Status, _Bs, _Ieval) -> - %% Update process dictionary - put(attached, undefined), - put(next_break, running), - put(trace, false); % no need for tracing if there is no AttPid -handle_int_msg({old_code,Mod}, Status, Bs, - #ieval{level=Le,module=M}=Ieval) -> - if - Status =:= idle, Le =:= 1 -> - erase(?DB_REF_KEY(Mod)), - put(cache, []); - true -> - case dbg_istk:in_use_p(Mod, M) of - true -> - %% A call to Mod is on the stack (or might be), - %% so we must terminate. - exit(get(self), kill), - dbg_ieval:exception(exit, old_code, Bs, Ieval); - false -> - erase(?DB_REF_KEY(Mod)), - put(cache, []) - end - end; -handle_int_msg({new_break, Break}, _Status, _Bs, _Ieval) -> - put(breakpoints, [Break | get(breakpoints)]); -handle_int_msg({delete_break, Point}, _Status, _Bs, _Ieval) -> - put(breakpoints, lists:keydelete(Point, 1, get(breakpoints))); -handle_int_msg({break_options, Break}, _Status, _Bs, _Ieval) -> - {Point, _Options} = Break, - put(breakpoints, lists:keyreplace(Point,1,get(breakpoints), Break)); -handle_int_msg(no_break, _Status, _Bs, _Ieval) -> - put(breakpoints, []); -handle_int_msg({no_break,M}, _Status, _Bs, _Ieval) -> - put(breakpoints, [ML || {Mod,_L}=ML <- get(breakpoints), Mod=/=M]); -handle_int_msg(stop, exit_at, _Bs, _Ieval) -> - erlang:exit(normal). - -%% handle_user_msg(Msg, Status, Bs, Ieval) -%% Msg = {cmd, Cmd}, Cmd = step | next | continue | finish| skip| stop -%% | timeout -%% | {eval, {Pid, Mod, Str, SP}} -%% | {set, Tag, Args} | {get, Tag, Pid, Args} -%% Messages from the attached process -%% Msg = {cmd, Cmd}, Cmd /= stop, can only be received in break mode, -%% handled in handle_cmd/3 -%% Msg = timeout is handled when needed (when evaluating receive..after) -%% in dbg_ieval:do_receive/5 when Status==wait_after_at -%% For all other Status, it should be ignored -handle_user_msg({cmd, stop}, Status, _Bs, _Ieval) -> - case lists:member(Status, [running, wait_at, wait_after_at]) of - true -> - put(next_break, break); - false when is_integer(Status); is_tuple(Status) -> - put(next_break, break); - false -> % idle | exit_at (| break) - ignore - end; -handle_user_msg({cmd, continue}, Status, _Bs, _Ieval) -> - %% Allow leaving break mode when waiting in a receive - case lists:member(Status, [wait_at, wait_after_at]) of - true -> - put(next_break, running); - false -> - ignore - end; -handle_user_msg({cmd, _Cmd}, _Status, _Bs, _Ieval) -> - ignore; -handle_user_msg(timeout, _Status, _Bs, _Ieval) -> - ignore; -handle_user_msg({eval,Cmd}, wait_at, Bs, _Ieval) -> - eval_restricted(Cmd, Bs); -handle_user_msg({eval,Cmd}, wait_after_at, Bs, _Ieval) -> - eval_restricted(Cmd, Bs); -handle_user_msg({set,trace,Bool}, _Status, _Bs, _Ieval) -> - put(trace, Bool), - tell_attached({trace, Bool}); -handle_user_msg({set,stack_trace,Flag}, _Status, _Bs, _Ieval) -> - set_stack_trace(Flag); -handle_user_msg({get, all_stack_frames, From, _}, _Status, Bs, _Ieval) -> - reply(From, all_stack_frames, {all_frames(), Bs}); -handle_user_msg({get, all_modules_on_stack, From, _}, _Status, _Bs, _Ieval) -> - reply(From, all_modules_on_stack, all_modules_on_stack()); -handle_user_msg({get,bindings,From,SP}, _Status, Bs, _Ieval) -> - reply(From, bindings, bindings(Bs, SP)); -handle_user_msg({get,stack_frame,From,{Dir,SP}}, _Status, _Bs,_Ieval) -> - reply(From, stack_frame, dbg_istk:stack_frame(Dir, SP)); -handle_user_msg({get,messages,From,_}, _Status, _Bs, _Ieval) -> - reply(From, messages, messages()); -handle_user_msg({get,backtrace,From,N}, _Status, _Bs, Ieval) -> - reply(From, backtrace, dbg_istk:backtrace(N, Ieval)). - -all_modules_on_stack() -> - dbg_istk:all_modules_on_stack(). - -all_frames() -> - dbg_ieval:all_frames(). - -set_stack_trace(true) -> - set_stack_trace(all); -set_stack_trace(Flag) -> - if - Flag =:= false -> - put(stack, []); - Flag =:= no_tail; Flag =:= all -> - ignore - end, - put(trace_stack, Flag), - tell_attached({stack_trace, Flag}). - -reply(From, Tag, Reply) -> - From ! {self(), Tag, Reply}. - -bindings(Bs, nostack) -> - Bs; -bindings(Bs, SP) -> - case dbg_istk:stack_level() of - Le when SP > Le -> - Bs; - _ -> - dbg_istk:bindings(SP) - end. - -messages() -> - {messages, Msgs} = erlang:process_info(get(self), messages), - Msgs. - -%%==================================================================== -%% Evaluating expressions within process context -%%==================================================================== - -eval_restricted({From,_Mod,Cmd,SP}, Bs) -> - case catch parse_cmd(Cmd, 1) of - {'EXIT', _Reason} -> - From ! {self(), {eval_rsp, 'Parse error'}}; - {[{var,_,Var}], XBs} -> - Bs2 = bindings(Bs, SP), - Res = case get_binding(Var, Bs2) of - {value, Value} -> Value; - unbound -> - case get_binding(Var, XBs) of - {value, _} -> - 'Only possible to inspect variables'; - unbound -> unbound - end - end, - From ! {self(), {eval_rsp, Res}}; - {_Forms, _XBs} -> - Rsp = 'Only possible to inspect variables', - From ! {self(), {eval_rsp, Rsp}} - end. - -eval_nonrestricted({From,Mod,Cmd,SP}, Bs, #ieval{level=Le}) when SP < Le-> - %% Evaluate in stack - _ = eval_restricted({From, Mod, Cmd, SP}, Bs), - Bs; -eval_nonrestricted({From, _Mod, Cmd, _SP}, Bs, - #ieval{level=Le,module=M,line=Line}=Ieval) -> - case catch parse_cmd(Cmd, Line) of - {'EXIT', _Reason} -> - From ! {self(), {eval_rsp, 'Parse error'}}, - Bs; - {Forms, XBs} -> - mark_running(Line, Le), - Bs1 = merge_bindings(Bs, XBs), - {Res, Bs2} = - lists:foldl(fun(Expr, {_Res, Bs0}) -> - eval_nonrestricted_1(Expr,Bs0,Ieval) - end, - {null, Bs1}, - Forms), - mark_break(M, Line, Le), - From ! {self(), {eval_rsp, Res}}, - remove_binding_structs(Bs2, XBs) - end. - -eval_nonrestricted_1({match,_,{var,_,Var},Expr}, Bs, Ieval) -> - {Res,Bs2} = eval_expr(Expr, Bs, Ieval), - Bs3 = case lists:keyfind(Var, 1, Bs) of - {Var,_Value} -> - lists:keyreplace(Var, 1, Bs2, {Var,Res}); - false -> [{Var,Res} | Bs2] - end, - {Res,Bs3}; -eval_nonrestricted_1({var,_,Var}, Bs, _Ieval) -> - Res = case lists:keyfind(Var, 1, Bs) of - {Var, Value} -> Value; - false -> unbound - end, - {Res,Bs}; -eval_nonrestricted_1(Expr, Bs, Ieval) -> - eval_expr(Expr, Bs, Ieval). - -eval_expr(Expr, Bs, Ieval) -> - {value,Res,Bs2} = - dbg_ieval:eval_expr(Expr, Bs, Ieval#ieval{top=false}), - {Res,Bs2}. - -%% XBs have unique keys. -merge_bindings(Bs1, XBs) -> - Bs1 ++ erl_eval:bindings(XBs). - -remove_binding_structs(Bs1, XBs) -> - lists:foldl(fun({N, _V}, Bs) -> lists:keydelete(N, 1, Bs) - end, Bs1, erl_eval:bindings(XBs)). - -mark_running(LineNo, Le) -> - put(next_break, running), - put(user_eval, [{LineNo, Le} | get(user_eval)]), - dbg_iserver:cast(get(int), {set_status, self(), running, {}}), - tell_attached(running). - -mark_break(Cm, LineNo, Le) -> - put(next_break, break), - put(user_eval, tl(get(user_eval))), - tell_attached({break_at, Cm, LineNo, Le}), - dbg_iserver:cast(get(int), {set_status,self(),break,{Cm,LineNo}}). - -parse_cmd(Cmd, LineNo) -> - {ok,Tokens,_} = erl_scan:string(Cmd, LineNo, [text]), - {ok,Forms,Bs} = erl_eval:extended_parse_exprs(Tokens), - {Forms, Bs}. - -%%==================================================================== -%% Library functions for attached process handling -%%==================================================================== - -tell_attached(Msg) -> - case get(attached) of - undefined -> ignore; - AttPid -> - AttPid ! {self(), Msg}, - ignore - end. - -%%==================================================================== -%% get_binding/2 -%%==================================================================== - -get_binding(Var, Bs) -> - case lists:keyfind(Var, 1, Bs) of - {Var, Value} -> {value, Value}; - false -> unbound - end. diff --git a/debugger/erlide_debugger_23/src/dbg_idb.erl b/debugger/erlide_debugger_23/src/dbg_idb.erl deleted file mode 100644 index 55177bb..0000000 --- a/debugger/erlide_debugger_23/src/dbg_idb.erl +++ /dev/null @@ -1,55 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2016. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(dbg_idb). - -%% External exports --export([insert/3, lookup/2, match_object/2]). - -%%==================================================================== -%% External exports -%%==================================================================== - -insert(DbRef, Key, Value) -> - case DbRef of - {Node, ModDb} -> - rpc:block_call(Node, ets, insert, [ModDb, {Key, Value}]); - ModDb -> - ets:insert(ModDb, {Key, Value}) - end. - -lookup(DbRef, Key) -> - Res = case DbRef of - {Node, ModDb} -> - rpc:block_call(Node, ets, lookup, [ModDb, Key]); - ModDb -> - ets:lookup(ModDb, Key) - end, - case Res of - [{Key, Value}] -> {ok, Value}; - _ -> not_found - end. - -match_object(DbRef, Key) -> - case DbRef of - {Node, ModDb} -> - rpc:block_call(Node, ets, match_object, [ModDb, Key]); - ModDb -> - ets:match_object(ModDb, Key) - end. diff --git a/debugger/erlide_debugger_23/src/dbg_ieval.erl b/debugger/erlide_debugger_23/src/dbg_ieval.erl deleted file mode 100644 index 121a2e7..0000000 --- a/debugger/erlide_debugger_23/src/dbg_ieval.erl +++ /dev/null @@ -1,1758 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2018. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(dbg_ieval). - --export([eval/3,exit_info/5]). --export([eval_expr/3]). --export([check_exit_msg/3,exception/4]). --export([all_frames/0]). - --include("dbg_ieval.hrl"). - -%%==================================================================== -%% External exports -%%==================================================================== - -%%-------------------------------------------------------------------- -%% eval(Mod, Func, Args) -> Meta -%% Mod = Func = atom() -%% Args = [term()] -%% MFA = {Mod,Func,Args} | {Mod,Func,Arity} | {Fun,Args} -%% Arity = integer() -%% Meta = pid() -%% Entry point from debugged process (dbg_debugged). -%% Immediately returns the pid for the meta process. -%% The evaluated value will later be sent as a message to -%% the calling process. -%%-------------------------------------------------------------------- -eval(Mod, Func, Args) -> - Debugged = self(), - Int = dbg_iserver:find(), - case dbg_iserver:call(Int, {get_meta,Debugged}) of - {ok,Meta} -> - Meta ! {re_entry, Debugged, {eval,{Mod,Func,Args}}}, - Meta; - {error,not_interpreted} -> - spawn(fun() -> - meta(Int, Debugged, Mod, Func, Args) - end) - end. - -%%-------------------------------------------------------------------- -%% exit_info(Int, AttPid, OrigPid, Reason, ExitInfo) -%% Int = AttPid = OrigPid = pid() -%% Reason = term() -%% ExitInfo = {{Mod,Line}, Bs, Stack} | {} -%% Meta process started when attaching to a terminated process. -%% Spawned (by dbg_iserver) in response to user request. -%%-------------------------------------------------------------------- -exit_info(Int, AttPid, OrigPid, Reason, ExitInfo) -> - put(int, Int), - put(attached, AttPid), - put(breakpoints, dbg_iserver:call(Int, all_breaks)), - put(self, OrigPid), - put(exit_info, ExitInfo), - - case ExitInfo of - {{Mod,Line},Bs,S} -> - dbg_istk:from_external(S), - Le = dbg_istk:stack_level(), - dbg_icmd:tell_attached({exit_at, {Mod, Line}, Reason, Le, OrigPid, dbg_istk:all_frames(S), Bs}), - exit_loop(OrigPid, Reason, Bs,#ieval{module=Mod,line=Line}); - {} -> - dbg_istk:init(), - dbg_icmd:tell_attached({exit_at, null, Reason, 1, OrigPid}), - exit_loop(OrigPid, Reason, erl_eval:new_bindings(),#ieval{}) - end. - -all_frames() -> - {dbg_istk:all_frames(), []}. - -%%-------------------------------------------------------------------- -%% eval_expr(Expr, Bs, Ieval) -> {value, Value, Bs} -%% -%% Evalute a shell expression in the real process. -%% Called (dbg_icmd) in response to a user request. -%%-------------------------------------------------------------------- -eval_expr(Expr, Bs, Ieval) -> - - %% Save current exit info - ExitInfo = get(exit_info), - Stacktrace = get(stacktrace), - - %% Emulate a surrounding catch - try debugged_cmd({eval,Expr,Bs}, Bs, Ieval) - catch - Class:Reason -> - Result = case Class of - throw -> Reason; - _ -> {'EXIT', Reason} - end, - - %% Reset exit info - put(exit_info, ExitInfo), - put(stacktrace, Stacktrace), - - {value, Result, Bs} - end. - -%%-------------------------------------------------------------------- -%% check_exit_msg(Msg, Bs, Ieval) -%% Msg = term() -%% Check if Msg is an 'EXIT' msg from the iserver or a 'DOWN' msg -%% from the debugged process. If so exit with correct reason. -%%-------------------------------------------------------------------- -check_exit_msg({'EXIT', Int, Reason}, _Bs, #ieval{level=Le}) -> - %% This *must* be interpreter which has terminated, - %% we are not linked to anyone else - if - Le =:= 1 -> - exit(Reason); - Le > 1 -> - exit({Int, Reason}) - end; -check_exit_msg({'DOWN',_,_,_,Reason}, Bs, - #ieval{level=Le, module=Mod, line=Li}) -> - %% This *must* be Debugged which has terminated, - %% we are not monitoring anyone else - - %% Inform Int about current position, bindings and stack - ExitInfo = - case get(exit_info) of - - %% Debugged has been terminated by someone - %% - really the position, bindings and stack are of no - %% importance in this case - %% If we don't save them, however, post-mortem analysis - %% of the process isn't possible - undefined when Le =:= 1 -> % died outside interpreted code - {}; - undefined when Le > 1 -> - StackExternal = (dbg_istk:delayed_to_external())(), - {{Mod, Li}, Bs, StackExternal}; - - %% Debugged has terminated due to an exception - ExitInfo0 when is_function(ExitInfo0, 0) -> - ExitInfo0() - end, - dbg_iserver:cast(get(int), {set_exit_info,self(),ExitInfo}), - - if - Le =:= 1 -> - exit(Reason); - Le > 1 -> - exit({get(self), Reason}) - end; -check_exit_msg(_Msg, _Bs, _Ieval) -> - ignore. - -%%-------------------------------------------------------------------- -%% exception(Class, Reason, Bs, Ieval) -%% Class = error | exit | throw -%% Reason = term() -%% Bs = bindings() -%% Ieval = #ieval{} -%% Store information about where in the code the error is located -%% and then raise the exception. -%%-------------------------------------------------------------------- -exception(Class, Reason, Bs, Ieval) -> - exception(Class, Reason, Bs, Ieval, false). - -exception(Class, Reason, Bs, Ieval, false) -> - do_exception(Class, Reason, - dbg_istk:delayed_stacktrace(no_args, Ieval), - Bs, Ieval); -exception(Class, Reason, Bs, Ieval, true) -> - do_exception(Class, Reason, - dbg_istk:delayed_stacktrace(include_args, Ieval), - Bs, Ieval). - -do_exception(Class, Reason, Stacktrace, Bs, #ieval{module=M, line=Line}) -> - StackFun = dbg_istk:delayed_to_external(), - ExitInfo = fun() -> - {{M,Line},Bs,StackFun()} - end, - put(exit_info, ExitInfo), - put(stacktrace, Stacktrace), - erlang:Class(Reason). - -%%==================================================================== -%% Internal functions -%%==================================================================== - -%%--Loops------------------------------------------------------------- - -%% Entry point for first-time initialization of meta process -meta(Int, Debugged, M, F, As) -> - process_flag(trap_exit, true), - erlang:monitor(process, Debugged), - - %% Inform dbg_iserver, get the initial status in return - Pargs = case {M, F} of - %% If it's a fun we're evaluating, show a text - %% representation of the fun and its arguments, - %% not dbg_ieval:eval_fun(...) - {dbg_ieval, EvalFun} when EvalFun =:= eval_fun; - EvalFun =:= eval_named_fun -> - {Mx, Fx} = lists:last(As), - {Mx, Fx, lists:nth(2, As)}; - _ -> - {M, F, As} - end, - Status = dbg_iserver:call(Int, {new_process,Debugged,self(),Pargs}), - - %% Initiate process dictionary - put(int, Int), % pid() dbg_iserver - put(attached, undefined),% pid() attached process - put(breakpoints, dbg_iserver:call(Int, all_breaks)), - put(cache, []), - put(next_break, Status), % break | running (other values later) - put(self, Debugged), % pid() interpreted process - dbg_istk:init(), - put(stacktrace, []), - put(trace_stack, dbg_iserver:call(Int, get_stack_trace)), - put(trace, false), % bool() Trace on/off - put(user_eval, []), - - - %% Send the result of the meta process - Ieval = #ieval{}, - Debugged ! {sys, self(), eval_mfa(Debugged,M,F,As,Ieval)}, - - dbg_iserver:cast(Int, {set_status, self(), idle, {}}), - dbg_icmd:tell_attached(idle), - - meta_loop(Debugged, erl_eval:new_bindings(), Ieval). - -debugged_cmd(Cmd, Bs, Ieval) -> - Debugged = get(self), - Debugged ! {sys, self(), {command,Cmd}}, - meta_loop(Debugged, Bs, Ieval). - -meta_loop(Debugged, Bs, #ieval{level=Le} = Ieval) -> - receive - - %% The following messages can only be received when Meta is - %% waiting for Debugged to evaluate non-interpreted code - %% or a Bif. Le>1 - {sys, Debugged, {value,Val}} -> - {value, Val, Bs}; - {sys, Debugged, {value,Val,Bs2}} -> - {value, Val, merge_bindings(Bs2, Bs, Ieval)}; - {sys, Debugged, {exception,{Class,Reason,Stk}}} -> - case get(exit_info) of - - %% Error occurred outside of interpreted code. - undefined -> - MakeStk0 = dbg_istk:delayed_stacktrace(), - MakeStk = fun(Depth0) -> - Depth = max(0, Depth0 - length(Stk)), - Stk ++ MakeStk0(Depth) - end, - do_exception(Class, Reason, MakeStk, Bs, Ieval); - - %% Error must have occured within a re-entry to - %% interpreted code, simply raise the exception - _ -> - erlang:Class(Reason) - end; - - %% Re-entry to Meta from non-interpreted code - {re_entry, Debugged, {eval,{M,F,As}}} when Le =:= 1 -> - %% Reset process dictionary - %% This is really only necessary if the process left - %% interpreted code at a call level > 1 - dbg_istk:init(), - put(stacktrace, []), - put(exit_info, undefined), - - dbg_iserver:cast(get(int), {set_status,self(),running,{}}), - dbg_icmd:tell_attached(running), - - %% Tell attached process(es) to update source code. - dbg_icmd:tell_attached({re_entry,M,F}), - - %% Send the result of the meta process - Debugged ! {sys,self(),eval_mfa(Debugged,M,F,As,Ieval)}, - - dbg_iserver:cast(get(int), {set_status,self(),idle,{}}), - dbg_icmd:tell_attached(idle), - meta_loop(Debugged, Bs, Ieval); - - %% Evaluation in Debugged results in call to interpreted - %% function (probably? a fun) - {re_entry, Debugged, {eval,{M,F,As}}} when Le>1 -> - Ieval2 = Ieval#ieval{module=undefined, line=-1}, - Debugged ! {sys,self(),eval_mfa(Debugged,M,F,As,Ieval2)}, - meta_loop(Debugged, Bs, Ieval); - - Msg -> - check_exit_msg(Msg, Bs, Ieval), - dbg_icmd:handle_msg(Msg, idle, Bs, Ieval), - meta_loop(Debugged, Bs, Ieval) - end. - -exit_loop(OrigPid, Reason, Bs, Ieval) -> - receive - Msg -> - check_exit_msg(Msg, Bs, Ieval), - dbg_icmd:handle_msg(Msg, exit_at, Bs, Ieval), - exit_loop(OrigPid, Reason, Bs, Ieval) - end. - -%%--Trace function---------------------------------------------------- - -%%-------------------------------------------------------------------- -%% trace(What, Args) -%% What = send | receivex | received | call | return | bif -%% Args depends on What, see the code. -%%-------------------------------------------------------------------- -trace(What, Args) -> - trace(What, Args, get(trace)). - -trace(return, {_Le,{dbg_apply,_,_,_}}, _Bool) -> - ignore; -trace(What, Args, true) -> - Fun = fun(P) -> format_trace(What, Args, P) end, - dbg_icmd:tell_attached({trace_output, Fun}); -trace(_What, _Args, false) -> - ignore. - -format_trace(What, Args, P) -> - case What of - send -> - {To,Msg} = Args, - io_lib:format("==> ~w : "++P++"~n", [To, Msg]); - receivex -> - {Le, TimeoutP} = Args, - Tail = case TimeoutP of - true -> "with timeout~n"; - false -> "~n" - end, - io_lib:format(" (~w) receive " ++ Tail, [Le]); - - received when Args =:= null -> - io_lib:format("~n", []); - received -> % Args=Msg - io_lib:format("~n<== "++P++"~n", [Args]); - - call -> - {Called, {Le,Li,M,F,As}} = Args, - case Called of - extern -> - io_lib:format("++ (~w) <~w> ~w:~tw~ts~n", - [Le,Li,M,F,format_args(As, P)]); - local -> - io_lib:format("++ (~w) <~w> ~tw~ts~n", - [Le,Li,F,format_args(As, P)]) - end; - call_fun -> - {Le,Li,F,As} = Args, - io_lib:format("++ (~w) <~w> ~tw~ts~n", - [Le, Li, F, format_args(As, P)]); - return -> - {Le,Val} = Args, - io_lib:format("-- (~w) "++P++"~n", [Le, Val]); - - - bif -> - {Le,Li,M,F,As} = Args, - io_lib:format("++ (~w) <~w> ~w:~tw~ts~n", - [Le, Li, M, F, format_args(As, P)]) - end. - -format_args(As, P) when is_list(As) -> - [$(,format_args1(As, P),$)]; -format_args(A, P) -> - [$/,io_lib:format(P, [A])]. - -format_args1([A], P) -> - [io_lib:format(P, [A])]; -format_args1([A|As], P) -> - [io_lib:format(P, [A]),$,|format_args1(As, P)]; -format_args1([], _) -> - []. - -%%--Other useful functions-------------------------------------------- - -%% Mimic catch behaviour -catch_value(error, Reason) -> - {'EXIT',{Reason,get_stacktrace()}}; -catch_value(exit, Reason) -> - {'EXIT',Reason}; -catch_value(throw, Reason) -> - Reason. - -%%--Code interpretation----------------------------------------------- - -%%-------------------------------------------------------------------- -%% Top level function of meta evaluator. -%% Return message to be replied to the target process. -%%-------------------------------------------------------------------- -eval_mfa(Debugged, M, F, As, #ieval{level=Le}=Ieval0) -> - Int = get(int), - Bs = erl_eval:new_bindings(), - Ieval = Ieval0#ieval{level=Le+1,top=true}, - try do_eval_function(M, F, As, Bs, extern, Ieval) of - {value, Val, _Bs} -> - trace(return, {Le,Val}), - {ready, Val} - catch - exit:{Debugged, Reason} -> - exit(Reason); - exit:{Int, Reason} -> - exit(Reason); - Class:Reason -> - {exception, {Class, Reason, get_stacktrace()}} - end. - -eval_function(Mod, Name, As, Bs, Called, Ieval0, Lc) -> - Tail = Lc andalso get(trace_stack) =:= no_tail, - case Tail of - false -> - Ieval = dbg_istk:push(Bs, Ieval0, Lc), - {value,Val,_} = do_eval_function(Mod, Name, As, Bs, Called, Ieval), - dbg_istk:pop(), - trace(return, {Ieval#ieval.level,Val}), - {value,Val,Bs}; - true -> - do_eval_function(Mod, Name, As, Bs, Called, Ieval0) - end. - -do_eval_function(Mod, Fun, As0, Bs0, _, Ieval0) when is_function(Fun); - Mod =:= ?MODULE, - Fun =:= eval_fun orelse - Fun =:= eval_named_fun -> - #ieval{level=Le,line=Li,top=Top} = Ieval0, - case lambda(Fun, As0) of - {[{clause,Fc,_,_,_}|_]=Cs,Module,Name,As,Bs} -> - Ieval = Ieval0#ieval{module=Module,function=Name, - arguments=As0,line=Fc}, - trace(call_fun, {Le,Li,Name,As}), - fnk_clauses(Cs, As, Bs, Ieval); - - not_interpreted when Top -> % We are leaving interpreted code - trace(call_fun, {Le,Li,Fun,As0}), - {value, {dbg_apply,erlang,apply,[Fun,As0]}, Bs0}; - not_interpreted -> - trace(call_fun, {Le,Li,Fun,As0}), - debugged_cmd({apply,erlang,apply,[Fun,As0]}, Bs0, Ieval0); - - {error,Reason} -> - %% It's ok not to push anything in this case, the error - %% reason contains information about the culprit - %% ({badarity,{{Mod,Name},As}}) - exception(error, Reason, Bs0, Ieval0) - end; - -%% Common Test adaptation -do_eval_function(ct_line, line, As, Bs, extern, #ieval{level=Le}=Ieval) -> - debugged_cmd({apply,ct_line,line,As}, Bs, Ieval#ieval{level=Le+1}), - {value, ignore, Bs}; - -do_eval_function(Mod, Name, As0, Bs0, Called, Ieval0) -> - #ieval{level=Le,line=Li,top=Top} = Ieval0, - trace(call, {Called, {Le,Li,Mod,Name,As0}}), - Ieval = Ieval0#ieval{module=Mod,function=Name,arguments=As0}, - case get_function(Mod, Name, As0, Called) of - [{clause,FcLine,_,_,_}|_]=Cs -> - fnk_clauses(Cs, As0, erl_eval:new_bindings(), - Ieval#ieval{line=FcLine}); - - not_interpreted when Top -> % We are leaving interpreted code - {value, {dbg_apply,Mod,Name,As0}, Bs0}; - not_interpreted -> - debugged_cmd({apply,Mod,Name,As0}, Bs0, Ieval); - - undef -> - exception(error, undef, Bs0, Ieval, true) - end. - -lambda(eval_fun, [Cs,As,Bs,{Mod,Name}=F]) -> - %% Fun defined in interpreted code, called from outside - if - length(element(3,hd(Cs))) =:= length(As) -> - db_ref(Mod), %% Adds ref between module and process - {Cs,Mod,Name,As,Bs}; - true -> - {error,{badarity,{F,As}}} - end; -lambda(eval_named_fun, [Cs,As,Bs0,FName,RF,{Mod,Name}=F]) -> - %% Fun defined in interpreted code, called from outside - if - length(element(3,hd(Cs))) =:= length(As) -> - db_ref(Mod), %% Adds ref between module and process - Bs1 = add_binding(FName, RF, Bs0), - {Cs,Mod,Name,As,Bs1}; - true -> - {error,{badarity,{F,As}}} - end; -lambda(Fun, As) when is_function(Fun) -> - %% Fun called from within interpreted code... - case erlang:fun_info(Fun, module) of - - %% ... and the fun was defined in interpreted code - {module, ?MODULE} -> - {Mod,Name,Bs, Cs} = - case erlang:fun_info(Fun, env) of - {env,[{{M,F},Bs0,Cs0}]} -> - {M,F,Bs0, Cs0}; - {env,[{{M,F},Bs0,Cs0,FName}]} -> - {M,F,add_binding(FName, Fun, Bs0), Cs0} - end, - {arity, Arity} = erlang:fun_info(Fun, arity), - if - length(As) =:= Arity -> - db_ref(Mod), %% Adds ref between module and process - {Cs,Mod,Name,As,Bs}; - true -> - {error,{badarity,{Fun,As}}} - end; - - %% ... and the fun was defined outside interpreted code - _ -> - not_interpreted - end. - -get_function(Mod, Name, Args, local) -> - Arity = length(Args), - Key = {Mod,Name,Arity}, - case cached(Key) of - false -> - DbRef = db_ref(Mod), - case dbg_idb:match_object(DbRef, {{Mod,Name,Arity,'_'},'_'}) of - [{{Mod,Name,Arity,Exp},Clauses}] -> - cache(Key, {Exp,Clauses}), - Clauses; - _ -> undef - end; - {_Exp,Cs} -> Cs - end; -get_function(Mod, Name, Args, extern) -> - Arity = length(Args), - Key = {Mod,Name,Arity}, - case cached(Key) of - false -> - case db_ref(Mod) of - not_found -> not_interpreted; - DbRef -> - case dbg_idb:lookup(DbRef, {Mod,Name,Arity,true}) of - {ok,Data} -> - cache(Key, {true,Data}), - Data; - not_found -> - case dbg_idb:lookup(DbRef, module) of - {ok,_} -> undef; - not_found -> not_interpreted - end - end - end; - {true,Cs} -> Cs; - {false,_} -> undef - end. - -db_ref(Mod) -> - case get(?DB_REF_KEY(Mod)) of - undefined -> - case dbg_iserver:call(get(int), - {get_module_db, Mod, get(self)}) of - not_found -> - not_found; - ModDb -> - Node = node(get(int)), - DbRef = if - Node =/= node() -> {Node,ModDb}; - true -> ModDb - end, - put(?DB_REF_KEY(Mod), DbRef), - DbRef - end; - DbRef -> - DbRef - end. - -cache(Key, Data) -> - put(cache, lists:sublist([{Key,Data}|get(cache)], 5)). - -cached(Key) -> - case lists:keyfind(Key, 1, get(cache)) of - {Key,Data} -> Data; - false -> false - end. - -%% Try to find a matching function clause -%% #ieval.level is set, the other fields must be set in this function -fnk_clauses([{clause,Line,Pars,Gs,Body}|Cs], As, Bs0, Ieval) -> - case head_match(Pars, As, [], Bs0) of - {match,Bs1} -> - Bs = add_bindings(Bs1, Bs0), - case guard(Gs, Bs) of - true -> - seq(Body, Bs, Ieval#ieval{line=Line}); - false -> - fnk_clauses(Cs, As, Bs0, Ieval) - end; - nomatch -> - fnk_clauses(Cs, As, Bs0, Ieval) - end; -fnk_clauses([], _As, Bs, Ieval) -> - exception(error, function_clause, Bs, Ieval, true). - -seq([E], Bs0, Ieval) -> - case dbg_icmd:cmd(E, Bs0, Ieval) of - {skip,Bs} -> - {value,skipped,Bs}; - Bs -> - expr(E, Bs, Ieval) - end; -seq([E|Es], Bs0, Ieval) -> - case dbg_icmd:cmd(E, Bs0, Ieval) of - {skip,Bs} -> - seq(Es, Bs, Ieval); - Bs1 -> - {value,_,Bs} = expr(E, Bs1, Ieval#ieval{top=false}), - seq(Es, Bs, Ieval) - end; -seq([], Bs, _) -> - {value,true,Bs}. - -%% Variable -expr({var,Line,V}, Bs, Ieval) -> - case binding(V, Bs) of - {value,Val} -> - {value,Val,Bs}; - unbound -> - exception(error, {unbound,V}, Bs, Ieval#ieval{line=Line}) - end; - -expr({value,_,Val}, Bs, _Ieval) -> - {value,Val,Bs}; -expr({value,Val}, Bs, _Ieval) -> % Special case straight values - {value,Val,Bs}; - -%% List -expr({cons,Line,H0,T0}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line,top=false}, - {value,H,Bs1} = expr(H0, Bs0, Ieval), - {value,T,Bs2} = expr(T0, Bs0, Ieval), - {value,[H|T],merge_bindings(Bs2, Bs1, Ieval)}; - -%% Tuple -expr({tuple,Line,Es0}, Bs0, Ieval) -> - {Vs,Bs} = eval_list(Es0, Bs0, Ieval#ieval{line=Line}), - {value,list_to_tuple(Vs),Bs}; - -%% Map -expr({map,Line,Fs}, Bs0, Ieval) -> - {Map,Bs} = eval_new_map_fields(Fs, Bs0, Ieval#ieval{line=Line,top=false}, - fun expr/3), - {value,Map,Bs}; -expr({map,Line,E0,Fs0}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line,top=false}, - {value,E,Bs1} = expr(E0, Bs0, Ieval), - {Fs,Bs2} = eval_map_fields(Fs0, Bs0, Ieval), - _ = maps:put(k, v, E), %Validate map. - Value = lists:foldl(fun ({map_assoc,K,V}, Mi) -> maps:put(K,V,Mi); - ({map_exact,K,V}, Mi) -> maps:update(K,V,Mi) - end, E, Fs), - {value,Value,merge_bindings(Bs2, Bs1, Ieval)}; -%% A block of statements -expr({block,Line,Es},Bs,Ieval) -> - seq(Es, Bs, Ieval#ieval{line=Line}); - -%% Catch statement -expr({'catch',Line,Expr}, Bs0, Ieval) -> - try expr(Expr, Bs0, Ieval#ieval{line=Line, top=false}) - catch - Class:Reason -> - %% Exception caught, reset exit info - put(exit_info, undefined), - dbg_istk:pop(Ieval#ieval.level), - Value = catch_value(Class, Reason), - trace(return, {Ieval#ieval.level,Value}), - {value, Value, Bs0} - end; - -%% Try-catch statement -expr({'try',Line,Es,CaseCs,CatchCs,[]}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - try seq(Es, Bs0, Ieval#ieval{top=false}) of - {value,Val,Bs} = Value -> - case CaseCs of - [] -> Value; - _ -> - case_clauses(Val, CaseCs, Bs, try_clause, Ieval) - end - catch - Class:Reason when CatchCs =/= [] -> - catch_clauses({Class,Reason,get_stacktrace()}, CatchCs, Bs0, Ieval) - end; -expr({'try',Line,Es,CaseCs,CatchCs,As}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - try seq(Es, Bs0, Ieval#ieval{top=false}) of - {value,Val,Bs} = Value -> - case CaseCs of - [] -> Value; - _ -> - case_clauses(Val, CaseCs, Bs, try_clause, Ieval) - end - catch - Class:Reason when CatchCs =/= [] -> - catch_clauses({Class,Reason,get_stacktrace()}, CatchCs, Bs0, Ieval) - after - seq(As, Bs0, Ieval#ieval{top=false}) - end; - -%% Case statement -expr({'case',Line,E,Cs}, Bs0, Ieval) -> - {value,Val,Bs} = - expr(E, Bs0, Ieval#ieval{line=Line, top=false}), - case_clauses(Val, Cs, Bs, case_clause, Ieval#ieval{line=Line}); - -%% If statement -expr({'if',Line,Cs}, Bs, Ieval) -> - if_clauses(Cs, Bs, Ieval#ieval{line=Line}); - -%% Andalso/orelse -expr({'andalso',Line,E1,E2}, Bs0, Ieval) -> - case expr(E1, Bs0, Ieval#ieval{line=Line, top=false}) of - {value,false,_}=Res -> - Res; - {value,true,Bs} -> - {value,Val,_} = expr(E2, Bs, Ieval#ieval{line=Line, top=false}), - {value,Val,Bs}; - {value,Val,Bs} -> - exception(error, {badarg,Val}, Bs, Ieval) - end; -expr({'orelse',Line,E1,E2}, Bs0, Ieval) -> - case expr(E1, Bs0, Ieval#ieval{line=Line, top=false}) of - {value,true,_}=Res -> - Res; - {value,false,Bs} -> - {value,Val,_} = expr(E2, Bs, Ieval#ieval{line=Line, top=false}), - {value,Val,Bs}; - {value,Val,Bs} -> - exception(error, {badarg,Val}, Bs, Ieval) - end; - -%% Matching expression -expr({match,Line,Lhs,Rhs0}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {value,Rhs,Bs1} = expr(Rhs0, Bs0, Ieval#ieval{top=false}), - case match(Lhs, Rhs, Bs1) of - {match,Bs} -> - {value,Rhs,Bs}; - nomatch -> - exception(error, {badmatch,Rhs}, Bs1, Ieval) - end; - -%% Construct a fun -expr({make_fun,Line,Name,Cs}, Bs, #ieval{module=Module}=Ieval) -> - Arity = length(element(3,hd(Cs))), - Info = {{Module,Name},Bs,Cs}, - Fun = - case Arity of - 0 -> fun() -> eval_fun([], Info) end; - 1 -> fun(A) -> eval_fun([A], Info) end; - 2 -> fun(A,B) -> eval_fun([A,B], Info) end; - 3 -> fun(A,B,C) -> eval_fun([A,B,C], Info) end; - 4 -> fun(A,B,C,D) -> eval_fun([A,B,C,D], Info) end; - 5 -> fun(A,B,C,D,E) -> eval_fun([A,B,C,D,E], Info) end; - 6 -> fun(A,B,C,D,E,F) -> eval_fun([A,B,C,D,E,F], Info) end; - 7 -> fun(A,B,C,D,E,F,G) -> - eval_fun([A,B,C,D,E,F,G], Info) end; - 8 -> fun(A,B,C,D,E,F,G,H) -> - eval_fun([A,B,C,D,E,F,G,H], Info) end; - 9 -> fun(A,B,C,D,E,F,G,H,I) -> - eval_fun([A,B,C,D,E,F,G,H,I], Info) end; - 10 -> fun(A,B,C,D,E,F,G,H,I,J) -> - eval_fun([A,B,C,D,E,F,G,H,I,J], Info) end; - 11 -> fun(A,B,C,D,E,F,G,H,I,J,K) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K], Info) end; - 12 -> fun(A,B,C,D,E,F,G,H,I,J,K,L) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L], Info) end; - 13 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M], Info) end; - 14 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N], Info) end; - 15 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O], Info) end; - 16 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P], Info) end; - 17 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q], Info) end; - 18 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R], Info) end; - 19 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S],Info) end; - 20 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T],Info) end; - _Other -> - exception(error, {'argument_limit',{'fun',Cs}}, Bs, - Ieval#ieval{line=Line}) - end, - {value,Fun,Bs}; - -%% Construct a fun -expr({make_named_fun,Line,Name,FName,Cs}, Bs, #ieval{module=Module}=Ieval) -> - Arity = length(element(3,hd(Cs))), - Info = {{Module,Name},Bs,Cs,FName}, - Fun = - case Arity of - 0 -> fun RF() -> eval_named_fun([], RF, Info) end; - 1 -> fun RF(A) -> eval_named_fun([A], RF, Info) end; - 2 -> fun RF(A,B) -> - eval_named_fun([A,B], RF, Info) end; - 3 -> fun RF(A,B,C) -> - eval_named_fun([A,B,C], RF, Info) end; - 4 -> fun RF(A,B,C,D) -> - eval_named_fun([A,B,C,D], RF, Info) end; - 5 -> fun RF(A,B,C,D,E) -> - eval_named_fun([A,B,C,D,E], - RF, Info) end; - 6 -> fun RF(A,B,C,D,E,F) -> - eval_named_fun([A,B,C,D,E,F], - RF, Info) end; - 7 -> fun RF(A,B,C,D,E,F,G) -> - eval_named_fun([A,B,C,D,E,F,G], - RF, Info) end; - 8 -> fun RF(A,B,C,D,E,F,G,H) -> - eval_named_fun([A,B,C,D,E,F,G,H], - RF, Info) end; - 9 -> fun RF(A,B,C,D,E,F,G,H,I) -> - eval_named_fun([A,B,C,D,E,F,G,H,I], - RF, Info) end; - 10 -> fun RF(A,B,C,D,E,F,G,H,I,J) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J], - RF, Info) end; - 11 -> fun RF(A,B,C,D,E,F,G,H,I,J,K) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K], - RF, Info) end; - 12 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L], - RF, Info) end; - 13 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M], - RF, Info) end; - 14 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N], - RF, Info) end; - 15 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O], - RF, Info) end; - 16 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P], - RF, Info) end; - 17 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q], - RF, Info) end; - 18 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q, - R], - RF, Info) end; - 19 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q, - R,S], - RF, Info) end; - 20 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q, - R,S,T], - RF, Info) end; - _Other -> - exception(error, {'argument_limit',{named_fun,FName,Cs}}, Bs, - Ieval#ieval{line=Line}) - end, - {value,Fun,Bs}; - -%% Construct an external fun. -expr({make_ext_fun,Line,MFA0}, Bs0, Ieval0) -> - {[M,F,A],Bs} = eval_list(MFA0, Bs0, Ieval0), - try erlang:make_fun(M, F, A) of - Value -> - {value,Value,Bs} - catch - error:badarg -> - Ieval1 = Ieval0#ieval{line=Line}, - Ieval2 = dbg_istk:push(Bs0, Ieval1, false), - Ieval = Ieval2#ieval{module=erlang,function=make_fun, - arguments=[M,F,A],line=-1}, - exception(error, badarg, Bs, Ieval, true) - end; - -%% Common test adaptation -expr({call_remote,0,ct_line,line,As0,Lc}, Bs0, Ieval0) -> - {As,_Bs} = eval_list(As0, Bs0, Ieval0), - eval_function(ct_line, line, As, Bs0, extern, Ieval0, Lc); - -%% Local function call -expr({local_call,Line,F,As0,Lc}, Bs0, #ieval{module=M} = Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {As,Bs} = eval_list(As0, Bs0, Ieval), - eval_function(M, F, As, Bs, local, Ieval, Lc); - -%% Remote function call -expr({call_remote,Line,M,F,As0,Lc}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {As,Bs} = eval_list(As0, Bs0, Ieval), - eval_function(M, F, As, Bs, extern, Ieval, Lc); - -%% Emulated semantics of some BIFs -expr({dbg,Line,self,[]}, Bs, #ieval{level=Le}) -> - trace(bif, {Le,Line,erlang,self,[]}), - Self = get(self), - trace(return, {Le,Self}), - {value,Self,Bs}; -expr({dbg,Line,raise,As0}, Bs0, #ieval{level=Le}=Ieval0) -> - %% Since stacktraces are emulated, we will - %% need to emulate erlang:raise/3 so that we can - %% capture the stacktrace. - Ieval = Ieval0#ieval{line=Line}, - {[Class,Reason,Stk0]=As,Bs} = eval_list(As0, Bs0, Ieval), - trace(bif, {Le,Line,erlang,raise,As}), - try - %% Evaluate raise/3 for error checking and - %% truncating of the stacktrace to the correct depth. - Error = erlang:raise(Class, Reason, Stk0), - trace(return, {Le,Error}), - {value,Error,Bs} - catch - _:_:Stk -> %Possibly truncated. - StkFun = fun(_) -> Stk end, - do_exception(Class, Reason, StkFun, Bs, Ieval) - end; -expr({dbg,Line,throw,As0}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {[Term],Bs} = eval_list(As0, Bs0, Ieval), - trace(bif, {Le,Line,erlang,throw,[Term]}), - exception(throw, Term, Bs, Ieval); -expr({dbg,Line,error,As0}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {[Term],Bs} = eval_list(As0, Bs0, Ieval), - trace(bif, {Le,Line,erlang,error,[Term]}), - exception(error, Term, Bs, Ieval); -expr({dbg,Line,exit,As0}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {[Term],Bs} = eval_list(As0, Bs0, Ieval), - trace(bif, {Le,Line,erlang,exit,[Term]}), - exception(exit, Term, Bs, Ieval); - -%% Call to "safe" BIF, ie a BIF that can be executed in Meta process -expr({safe_bif,Line,M,F,As0}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval1 = Ieval0#ieval{line=Line}, - {As,Bs} = eval_list(As0, Bs0, Ieval1), - trace(bif, {Le,Line,M,F,As}), - Ieval2 = dbg_istk:push(Bs0, Ieval1, false), - Ieval = Ieval2#ieval{module=M,function=F,arguments=As,line=-1}, - {_,Value,_} = Res = safe_bif(M, F, As, Bs, Ieval), - trace(return, {Le,Value}), - dbg_istk:pop(), - Res; - -%% Call to a BIF that must be evaluated in the correct process -expr({bif,Line,M,F,As0}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval1 = Ieval0#ieval{line=Line}, - {As,Bs} = eval_list(As0, Bs0, Ieval1), - trace(bif, {Le,Line,M,F,As}), - Ieval2 = dbg_istk:push(Bs0, Ieval1, false), - Ieval = Ieval2#ieval{module=M,function=F,arguments=As,line=-1}, - {_,Value,_} = Res = debugged_cmd({apply,M,F,As}, Bs, Ieval), - trace(return, {Le,Value}), - dbg_istk:pop(), - Res; - -%% Call to an operation -expr({op,Line,Op,As0}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {As,Bs} = eval_list(As0, Bs0, Ieval), - try apply(erlang,Op,As) of - Value -> - {value,Value,Bs} - catch - Class:Reason -> - exception(Class, Reason, Bs, Ieval) - end; - -%% apply/2 (fun) -expr({apply_fun,Line,Fun0,As0,Lc}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - FunValue = case expr(Fun0, Bs0, Ieval) of - {value,{dbg_apply,Mx,Fx,Asx},Bsx} -> - debugged_cmd({apply,Mx,Fx,Asx}, - Bsx, Ieval#ieval{level=Le+1}); - OtherFunValue -> - OtherFunValue - end, - case FunValue of - {value,Fun,Bs1} when is_function(Fun) -> - {As,Bs} = eval_list(As0, Bs1, Ieval), - eval_function(undefined, Fun, As, Bs, extern, Ieval, Lc); - {value,{M,F},Bs1} when is_atom(M), is_atom(F) -> - {As,Bs} = eval_list(As0, Bs1, Ieval), - eval_function(M, F, As, Bs, extern, Ieval, Lc); - {value,BadFun,Bs1} -> - exception(error, {badfun,BadFun}, Bs1, Ieval) - end; - -%% apply/3 -expr({apply,Line,As0,Lc}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {[M,F,As],Bs} = eval_list(As0, Bs0, Ieval), - eval_function(M, F, As, Bs, extern, Ieval, Lc); - -%% Receive statement -expr({'receive',Line,Cs}, Bs0, #ieval{level=Le}=Ieval) -> - trace(receivex, {Le,false}), - eval_receive(get(self), Cs, Bs0, Ieval#ieval{line=Line}); - -%% Receive..after statement -expr({'receive',Line,Cs,To,ToExprs}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {value,ToVal,ToBs} = expr(To, Bs0, Ieval#ieval{top=false}), - trace(receivex, {Le,true}), - check_timeoutvalue(ToVal, ToBs, To, Ieval), - {Stamp,_} = statistics(wall_clock), - eval_receive(get(self), Cs, ToVal, ToExprs, ToBs, Bs0, - 0, Stamp, Ieval); - -%% Send (!) -expr({send,Line,To0,Msg0}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - Ieval1 = Ieval#ieval{top=false}, - {value,To,Bs1} = expr(To0, Bs0, Ieval1), - {value,Msg,Bs2} = expr(Msg0, Bs0, Ieval1), - Bs = merge_bindings(Bs2, Bs1, Ieval), - eval_send(To, Msg, Bs, Ieval); - -%% Binary -expr({bin,Line,Fs}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line,top=false}, - try - eval_bits:expr_grp(Fs, Bs0, - fun (E, B) -> expr(E, B, Ieval) end, - [], - false) - catch - Class:Reason -> - exception(Class, Reason, Bs0, Ieval) - end; - -%% List comprehension -expr({lc,_Line,E,Qs}, Bs, Ieval) -> - eval_lc(E, Qs, Bs, Ieval); -expr({bc,_Line,E,Qs}, Bs, Ieval) -> - eval_bc(E, Qs, Bs, Ieval); - -%% Brutal exit on unknown expressions/clauses/values/etc. -expr(E, _Bs, _Ieval) -> - erlang:error({'NYI',E}). - -%% Interpreted fun() called from uninterpreted module, recurse -eval_fun(As, {Info,Bs,Cs}) -> - dbg_debugged:eval(?MODULE, eval_fun, [Cs,As,Bs,Info]). - -%% Interpreted named fun() called from uninterpreted module, recurse -eval_named_fun(As, RF, {Info,Bs,Cs,FName}) -> - dbg_debugged:eval(?MODULE, eval_named_fun, [Cs,As,Bs,FName,RF,Info]). - -%% eval_lc(Expr,[Qualifier],Bindings,IevalState) -> -%% {value,Value,Bindings}. -%% This is evaluating list comprehensions "straight out of the book". -%% Copied from rv's implementation in erl_eval. -eval_lc(E, Qs, Bs, Ieval) -> - {value,eval_lc1(E, Qs, Bs, Ieval),Bs}. - -eval_lc1(E, [{generate,Line,P,L0}|Qs], Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {value,L1,Bs1} = expr(L0, Bs0, Ieval#ieval{top=false}), - CompFun = fun(NewBs) -> eval_lc1(E, Qs, NewBs, Ieval) end, - eval_generate(L1, P, Bs1, CompFun, Ieval); -eval_lc1(E, [{b_generate,Line,P,L0}|Qs], Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {value,Bin,_} = expr(L0, Bs0, Ieval#ieval{top=false}), - CompFun = fun(NewBs) -> eval_lc1(E, Qs, NewBs, Ieval) end, - eval_b_generate(Bin, P, Bs0, CompFun, Ieval); -eval_lc1(E, [{guard,Q}|Qs], Bs0, Ieval) -> - case guard(Q, Bs0) of - true -> eval_lc1(E, Qs, Bs0, Ieval); - false -> [] - end; -eval_lc1(E, [Q|Qs], Bs0, Ieval) -> - case expr(Q, Bs0, Ieval#ieval{top=false}) of - {value,true,Bs} -> eval_lc1(E, Qs, Bs, Ieval); - {value,false,_Bs} -> []; - {value,V,Bs} -> exception(error, {bad_filter,V}, Bs, Ieval) - end; -eval_lc1(E, [], Bs, Ieval) -> - {value,V,_} = expr(E, Bs, Ieval#ieval{top=false}), - [V]. - -%% eval_bc(Expr,[Qualifier],Bindings,IevalState) -> -%% {value,Value,Bindings}. -%% This is evaluating list comprehensions "straight out of the book". -%% Copied from rv's implementation in erl_eval. -eval_bc(E, Qs, Bs, Ieval) -> - Val = erlang:list_to_bitstring(eval_bc1(E, Qs, Bs, Ieval)), - {value,Val,Bs}. - -eval_bc1(E, [{generate,Line,P,L0}|Qs], Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {value,L1,Bs1} = expr(L0, Bs0, Ieval#ieval{top=false}), - CompFun = fun(NewBs) -> eval_bc1(E, Qs, NewBs, Ieval) end, - eval_generate(L1, P, Bs1, CompFun, Ieval); -eval_bc1(E, [{b_generate,Line,P,L0}|Qs], Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {value,Bin,_} = expr(L0, Bs0, Ieval#ieval{top=false}), - CompFun = fun(NewBs) -> eval_bc1(E, Qs, NewBs, Ieval) end, - eval_b_generate(Bin, P, Bs0, CompFun, Ieval); -eval_bc1(E, [{guard,Q}|Qs], Bs0, Ieval) -> - case guard(Q, Bs0) of - true -> eval_bc1(E, Qs, Bs0, Ieval); - false -> [] - end; -eval_bc1(E, [Q|Qs], Bs0, Ieval) -> - case expr(Q, Bs0, Ieval#ieval{top=false}) of - {value,true,Bs} -> eval_bc1(E, Qs, Bs, Ieval); - {value,false,_Bs} -> []; - {value,V,Bs} -> exception(error, {bad_filter,V}, Bs, Ieval) - end; -eval_bc1(E, [], Bs, Ieval) -> - {value,V,_} = expr(E, Bs, Ieval#ieval{top=false}), - [V]. - -eval_generate([V|Rest], P, Bs0, CompFun, Ieval) -> - case catch match1(P, V, erl_eval:new_bindings(), Bs0) of - {match,Bsn} -> - Bs2 = add_bindings(Bsn, Bs0), - CompFun(Bs2) ++ eval_generate(Rest, P, Bs0, CompFun, Ieval); - nomatch -> - eval_generate(Rest, P, Bs0, CompFun, Ieval) - end; -eval_generate([], _P, _Bs0, _CompFun, _Ieval) -> - []; -eval_generate(Term, _P, Bs, _CompFun, Ieval) -> - exception(error, {bad_generator,Term}, Bs, Ieval). - -eval_b_generate(<<_/bitstring>>=Bin, P, Bs0, CompFun, Ieval) -> - Mfun = match_fun(Bs0), - Efun = fun(Exp, Bs) -> expr(Exp, Bs, #ieval{}) end, - case eval_bits:bin_gen(P, Bin, erl_eval:new_bindings(), Bs0, Mfun, Efun) of - {match,Rest,Bs1} -> - Bs2 = add_bindings(Bs1, Bs0), - CompFun(Bs2) ++ eval_b_generate(Rest, P, Bs0, CompFun, Ieval); - {nomatch,Rest} -> - eval_b_generate(Rest, P, Bs0, CompFun, Ieval); - done -> - [] - end; -eval_b_generate(Term, _P, Bs, _CompFun, Ieval) -> - exception(error, {bad_generator,Term}, Bs, Ieval). - -safe_bif(M, F, As, Bs, Ieval) -> - try apply(M, F, As) of - Value -> - {value,Value,Bs} - catch - Class:Reason -> - exception(Class, Reason, Bs, Ieval, true) - end. - -eval_send(To, Msg, Bs, Ieval) -> - try To ! Msg of - Msg -> - trace(send, {To,Msg}), - {value,Msg,Bs} - catch - Class:Reason -> - exception(Class, Reason, Bs, Ieval) - end. - -%% Start tracing of messages before fetching current messages in -%% the queue to make sure that no messages are lost. -eval_receive(Debugged, Cs, Bs0, - #ieval{module=M,line=Line,level=Le}=Ieval) -> - %% To avoid private message passing protocol between META - %% and interpreted process. - erlang:trace(Debugged,true,['receive']), - {_,Msgs} = erlang:process_info(Debugged,messages), - case receive_clauses(Cs, Bs0, Msgs) of - nomatch -> - dbg_iserver:cast(get(int), {set_status, self(),waiting,{}}), - dbg_icmd:tell_attached({wait_at,M,Line,Le}), - eval_receive1(Debugged, Cs, Bs0, Ieval); - {eval,B,Bs,Msg} -> - rec_mess(Debugged, Msg, Bs, Ieval), - seq(B, Bs, Ieval) - end. - -eval_receive1(Debugged, Cs, Bs0, Ieval) -> - Msgs = do_receive(Debugged, Bs0, Ieval), - case receive_clauses(Cs, Bs0, Msgs) of - nomatch -> - eval_receive1(Debugged, Cs, Bs0, Ieval); - {eval,B,Bs,Msg} -> - rec_mess(Debugged, Msg, Bs0, Ieval), - dbg_iserver:cast(get(int), {set_status, self(),running,{}}), - dbg_icmd:tell_attached(running), - seq(B, Bs, Ieval) - end. - -check_timeoutvalue(ToVal,_,_,_) when is_integer(ToVal), ToVal>=0 -> true; -check_timeoutvalue(infinity,_,_,_) -> true; -check_timeoutvalue(_ToVal, ToBs, To, Ieval) -> - Line = element(2, To), - exception(error, timeout_value, ToBs, Ieval#ieval{line=Line}). - -eval_receive(Debugged, Cs, 0, ToExprs, ToBs, Bs0, 0, _Stamp, Ieval) -> - {_,Msgs} = erlang:process_info(Debugged,messages), - case receive_clauses(Cs, Bs0, Msgs) of - nomatch -> - trace(received,null), - seq(ToExprs, ToBs, Ieval); - {eval,B,Bs,Msg} -> - rec_mess_no_trace(Debugged, Msg, Bs0, Ieval), - seq(B, Bs, Ieval) - end; -eval_receive(Debugged, Cs, ToVal, ToExprs, ToBs, Bs0, - 0, Stamp, #ieval{module=M,line=Line,level=Le}=Ieval)-> - erlang:trace(Debugged,true,['receive']), - {_,Msgs} = erlang:process_info(Debugged,messages), - case receive_clauses(Cs, Bs0, Msgs) of - nomatch -> - {Stamp1,Time1} = newtime(Stamp,ToVal), - dbg_iserver:cast(get(int), {set_status, self(),waiting,{}}), - dbg_icmd:tell_attached({wait_after_at,M,Line,Le}), - eval_receive(Debugged, Cs, Time1, ToExprs, ToBs, Bs0, - infinity,Stamp1, Ieval); - {eval,B,Bs,Msg} -> - rec_mess(Debugged, Msg, Bs0, Ieval), - seq(B, Bs, Ieval) - end; -eval_receive(Debugged, Cs, ToVal, ToExprs, ToBs, Bs0, - _, Stamp, Ieval) -> - case do_receive(Debugged, ToVal, Stamp, Bs0, Ieval) of - timeout -> - trace(received,null), - rec_mess(Debugged), - dbg_iserver:cast(get(int), {set_status, self(),running,{}}), - dbg_icmd:tell_attached(running), - seq(ToExprs, ToBs, Ieval); - Msgs -> - case receive_clauses(Cs, Bs0, Msgs) of - nomatch -> - {Stamp1,Time1} = newtime(Stamp,ToVal), - eval_receive(Debugged, Cs, Time1, ToExprs, ToBs, - Bs0, infinity,Stamp1, Ieval); - {eval,B,Bs,Msg} -> - rec_mess(Debugged, Msg, Bs0, Ieval), - dbg_iserver:cast(get(int), - {set_status, self(), running, {}}), - dbg_icmd:tell_attached(running), - seq(B, Bs, Ieval) - end - end. - -do_receive(Debugged, Bs, Ieval) -> - receive - {trace,Debugged,'receive',Msg} -> - [Msg]; - Msg -> - check_exit_msg(Msg, Bs, Ieval), - dbg_icmd:handle_msg(Msg, wait_at, Bs, Ieval), - do_receive(Debugged, Bs, Ieval) - end. - -do_receive(Debugged, Time, Stamp, Bs, Ieval) -> - receive - {trace,Debugged,'receive',Msg} -> - [Msg]; - {user, timeout} -> - timeout; - Msg -> - check_exit_msg(Msg, Bs, Ieval), - dbg_icmd:handle_msg(Msg, wait_after_at, Bs, Ieval), - {Stamp1,Time1} = newtime(Stamp,Time), - do_receive(Debugged, Time1, Stamp1, Bs, Ieval) - after Time -> - timeout - end. - -newtime(Stamp,infinity) -> - {Stamp,infinity}; -newtime(Stamp,Time) -> - {Stamp1,_} = statistics(wall_clock), - case Time - (Stamp1 - Stamp) of - NewTime when NewTime > 0 -> - {Stamp1,NewTime}; - _ -> - {Stamp1,0} - end. - -rec_mess(Debugged, Msg, Bs, Ieval) -> - erlang:trace(Debugged, false, ['receive']), - flush_traces(Debugged), - Debugged ! {sys,self(),{'receive',Msg}}, - rec_ack(Debugged, Bs, Ieval). - -rec_mess(Debugged) -> - erlang:trace(Debugged, false, ['receive']), - flush_traces(Debugged). - -rec_mess_no_trace(Debugged, Msg, Bs, Ieval) -> - Debugged ! {sys,self(),{'receive',Msg}}, - rec_ack(Debugged, Bs, Ieval). - -rec_ack(Debugged, Bs, Ieval) -> - receive - {Debugged,rec_acked} -> - true; - Msg -> - check_exit_msg(Msg, Bs, Ieval), - io:format("***WARNING*** Unexp msg ~p, ieval ~p~n", - [Msg, Ieval]) - end. - -flush_traces(Debugged) -> - receive - {trace,Debugged,'receive',_} -> - flush_traces(Debugged) - after 0 -> - true - end. - -%% eval_list(ExpressionList, Bindings, Ieval) -%% Evaluate a list of expressions "in parallel" at the same level. -eval_list(Es, Bs, Ieval) -> - eval_list_1(Es, [], Bs, Bs, Ieval#ieval{top=false}). - -eval_list_1([E|Es], Vs, BsOrig, Bs0, Ieval) -> - {value,V,Bs1} = expr(E, BsOrig, Ieval), - eval_list_1(Es, [V|Vs], BsOrig, merge_bindings(Bs1, Bs0, Ieval), Ieval); -eval_list_1([], Vs, _, Bs, _Ieval) -> - {lists:reverse(Vs,[]),Bs}. - -%% if_clauses(Clauses, Bindings, Ieval) -if_clauses([{clause,_,[],G,B}|Cs], Bs, Ieval) -> - case guard(G, Bs) of - true -> - seq(B, Bs, Ieval); - false -> - if_clauses(Cs, Bs, Ieval) - end; -if_clauses([], Bs, Ieval) -> - exception(error, if_clause, Bs, Ieval). - -%% case_clauses(Value, Clauses, Bindings, Error, Ieval) -%% Error = try_clause | case_clause -case_clauses(Val, [{clause,_,[P],G,B}|Cs], Bs0, Error, Ieval) -> - case match(P, Val, Bs0) of - {match,Bs} -> - case guard(G, Bs) of - true -> - seq(B, Bs, Ieval); - false -> - case_clauses(Val, Cs, Bs0, Error, Ieval) - end; - nomatch -> - case_clauses(Val, Cs, Bs0, Error, Ieval) - end; -case_clauses(Val,[], Bs, Error, Ieval) -> - exception(error, {Error,Val}, Bs, Ieval). - -%% catch_clauses(Exception, Clauses, Bindings, Ieval) -%% Exception = {Class,Reason,[]} -catch_clauses(Exception, [{clause,_,[P],G,B}|CatchCs], Bs0, Ieval) -> - case match(P, Exception, Bs0) of - {match,Bs} -> - case guard(G, Bs) of - true -> - %% Exception caught, reset exit info - put(exit_info, undefined), - dbg_istk:pop(Ieval#ieval.level), - seq(B, Bs, Ieval); - false -> - catch_clauses(Exception, CatchCs, Bs0, Ieval) - end; - nomatch -> - catch_clauses(Exception, CatchCs, Bs0, Ieval) - end; -catch_clauses({Class,Reason,_}, [], _Bs, _Ieval) -> - erlang:Class(Reason). - -receive_clauses(Cs, Bs0, [Msg|Msgs]) -> - case rec_clauses(Cs, Bs0, Msg) of - nomatch -> - receive_clauses(Cs, Bs0, Msgs); - {eval,B,Bs} -> - {eval,B,Bs,Msg} - end; -receive_clauses(_, _, []) -> - nomatch. - -rec_clauses([{clause,_,Pars,G,B}|Cs], Bs0, Msg) -> - case rec_match(Pars, Msg, Bs0) of - {match,Bs} -> - case guard(G, Bs) of - true -> - trace(received, Msg), - {eval,B,Bs}; - false -> - rec_clauses(Cs, Bs0, Msg) - end; - nomatch -> - rec_clauses(Cs, Bs0, Msg) - end; -rec_clauses([], _, _) -> - nomatch. - -%% guard(GuardTests,Bindings) -%% Evaluate a list of guards. -guard([], _) -> true; -guard(Gs, Bs) -> or_guard(Gs, Bs). - -or_guard([G|Gs], Bs) -> - %% Short-circuit OR. - and_guard(G, Bs) orelse or_guard(Gs, Bs); -or_guard([], _) -> false. - -and_guard([G|Gs], Bs) -> - %% Short-circuit AND. - case catch guard_expr(G, Bs) of - {value,true} -> and_guard(Gs, Bs); - _ -> false - end; -and_guard([],_) -> true. - -guard_exprs([A0|As0], Bs) -> - {value,A} = guard_expr(A0, Bs), - {values,As} = guard_exprs(As0, Bs), - {values,[A|As]}; -guard_exprs([], _) -> - {values,[]}. - -guard_expr({'andalso',_,E1,E2}, Bs) -> - case guard_expr(E1, Bs) of - {value,false}=Res -> Res; - {value,true} -> - case guard_expr(E2, Bs) of - {value,_Val}=Res -> Res - end - end; -guard_expr({'orelse',_,E1,E2}, Bs) -> - case guard_expr(E1, Bs) of - {value,true}=Res -> Res; - {value,false} -> - case guard_expr(E2, Bs) of - {value,_Val}=Res -> Res - end - end; -guard_expr({dbg,_,self,[]}, _) -> - {value,get(self)}; -guard_expr({safe_bif,_,erlang,'not',As0}, Bs) -> - {values,As} = guard_exprs(As0, Bs), - {value,apply(erlang, 'not', As)}; -guard_expr({safe_bif,_,Mod,Func,As0}, Bs) -> - {values,As} = guard_exprs(As0, Bs), - {value,apply(Mod, Func, As)}; -guard_expr({var,_,V}, Bs) -> - {value,_} = binding(V, Bs); -guard_expr({value,_,Val}, _Bs) -> - {value,Val}; -guard_expr({cons,_,H0,T0}, Bs) -> - {value,H} = guard_expr(H0, Bs), - {value,T} = guard_expr(T0, Bs), - {value,[H|T]}; -guard_expr({tuple,_,Es0}, Bs) -> - {values,Es} = guard_exprs(Es0, Bs), - {value,list_to_tuple(Es)}; -guard_expr({map,_,Fs}, Bs0) -> - F = fun (G0, B0, _) -> - {value,G} = guard_expr(G0, B0), - {value,G,B0} - end, - {Map,_} = eval_new_map_fields(Fs, Bs0, #ieval{top=false}, F), - {value,Map}; -guard_expr({map,_,E0,Fs0}, Bs) -> - {value,E} = guard_expr(E0, Bs), - Fs = eval_map_fields_guard(Fs0, Bs), - Value = lists:foldl(fun ({map_assoc,K,V}, Mi) -> maps:put(K,V,Mi); - ({map_exact,K,V}, Mi) -> maps:update(K,V,Mi) end, - E, Fs), - {value,Value}; -guard_expr({bin,_,Flds}, Bs) -> - {value,V,_Bs} = - eval_bits:expr_grp(Flds, Bs, - fun(E,B) -> - {value,V} = guard_expr(E,B), - {value,V,B} - end, [], false), - {value,V}. - - -%% eval_map_fields([Field], Bindings, IEvalState) -> -%% {[{map_assoc | map_exact,Key,Value}],Bindings} - -eval_map_fields(Fs, Bs, Ieval) -> - eval_map_fields(Fs, Bs, Ieval, fun expr/3). - -eval_map_fields_guard(Fs0, Bs) -> - {Fs,_} = eval_map_fields(Fs0, Bs, #ieval{}, - fun (G0, Bs0, _) -> - {value,G} = guard_expr(G0, Bs0), - {value,G,Bs0} - end), - Fs. - -eval_map_fields(Fs, Bs, Ieval, F) -> - eval_map_fields(Fs, Bs, Ieval, F, []). - -eval_map_fields([{map_field_assoc,Line,K0,V0}|Fs], Bs0, Ieval0, F, Acc) -> - Ieval = Ieval0#ieval{line=Line}, - {value,K,Bs1} = F(K0, Bs0, Ieval), - {value,V,Bs2} = F(V0, Bs1, Ieval), - eval_map_fields(Fs, Bs2, Ieval0, F, [{map_assoc,K,V}|Acc]); -eval_map_fields([{map_field_exact,Line,K0,V0}|Fs], Bs0, Ieval0, F, Acc) -> - Ieval = Ieval0#ieval{line=Line}, - {value,K,Bs1} = F(K0, Bs0, Ieval), - {value,V,Bs2} = F(V0, Bs1, Ieval), - eval_map_fields(Fs, Bs2, Ieval0, F, [{map_exact,K,V}|Acc]); -eval_map_fields([], Bs, _Ieval, _F, Acc) -> - {lists:reverse(Acc),Bs}. - -eval_new_map_fields(Fs, Bs0, Ieval, F) -> - eval_new_map_fields(Fs, Bs0, Ieval, F, []). - -eval_new_map_fields([{Line,K0,V0}|Fs], Bs0, Ieval0, F, Acc) -> - Ieval = Ieval0#ieval{line=Line}, - {value,K,Bs1} = F(K0, Bs0, Ieval), - {value,V,Bs2} = F(V0, Bs1, Ieval), - eval_new_map_fields(Fs, Bs2, Ieval0, F, [{K,V}|Acc]); -eval_new_map_fields([], Bs, _, _, Acc) -> - {maps:from_list(lists:reverse(Acc)),Bs}. - -%% match(Pattern,Term,Bs) -> {match,Bs} | nomatch -match(Pat, Term, Bs) -> - try match1(Pat, Term, Bs, Bs) - catch - Result -> Result - end. - -match1({value,_,V}, V, Bs,_BBs) -> - {match,Bs}; -match1({var,_,'_'}, Term, Bs,_BBs) -> % Anonymous variable matches - {match,add_anon(Term, Bs)}; % everything,save it anyway -match1({var,_,Name}, Term, Bs, _BBs) -> - case binding(Name, Bs) of - {value,Term} -> - {match,Bs}; - {value,_} -> - throw(nomatch); - unbound -> - {match,[{Name,Term}|Bs]} % Add the new binding - end; -match1({match,_,Pat1,Pat2}, Term, Bs0, BBs) -> - {match,Bs1} = match1(Pat1, Term, Bs0, BBs), - match1(Pat2, Term, Bs1, BBs); -match1({cons,_,H,T}, [H1|T1], Bs0, BBs) -> - {match,Bs} = match1(H, H1, Bs0, BBs), - match1(T, T1, Bs, BBs); -match1({tuple,_,Elts}, Tuple, Bs, BBs) - when length(Elts) =:= tuple_size(Tuple) -> - match_tuple(Elts, Tuple, 1, Bs, BBs); -match1({map,_,Fields}, Map, Bs, BBs) when is_map(Map) -> - match_map(Fields, Map, Bs, BBs); -match1({bin,_,Fs}, B, Bs0, BBs) when is_bitstring(B) -> - try eval_bits:match_bits(Fs, B, Bs0, BBs, - match_fun(BBs), - fun(E, Bs) -> expr(E, Bs, #ieval{}) end, - false) - catch - _:_ -> throw(nomatch) - end; -match1(_,_,_,_) -> - throw(nomatch). - -match_fun(BBs) -> - fun(match, {L,R,Bs}) -> match1(L, R, Bs, BBs); - (binding, {Name,Bs}) -> binding(Name, Bs); - (add_binding, {Name,Val,Bs}) -> add_binding(Name, Val, Bs) - end. - -match_tuple([E|Es], Tuple, I, Bs0, BBs) -> - {match,Bs} = match1(E, element(I, Tuple), Bs0, BBs), - match_tuple(Es, Tuple, I+1, Bs, BBs); -match_tuple([], _, _, Bs, _BBs) -> - {match,Bs}. - -match_map([{map_field_exact,_,K0,Pat}|Fs], Map, Bs0, BBs) -> - try guard_expr(K0, BBs) of - {value,K} -> - case Map of - #{K := Value} -> - {match,Bs} = match1(Pat, Value, Bs0, BBs), - match_map(Fs, Map, Bs, BBs); - #{} -> - throw(nomatch) - end - catch _:_ -> - throw(nomatch) - end; -match_map([], _, Bs, _BBs) -> - {match,Bs}. - -head_match([Par|Pars], [Arg|Args], Bs0, BBs) -> - try match1(Par, Arg, Bs0, BBs) of - {match,Bs} -> head_match(Pars, Args, Bs, BBs) - catch - Result -> Result - end; -head_match([],[],Bs,_) -> {match,Bs}. - -rec_match([Par],Msg,Bs0) -> - match(Par,Msg,Bs0). - -binding(Name,[{Name,Val}|_]) -> - {value,Val}; -binding(Name,[_,{Name,Val}|_]) -> - {value,Val}; -binding(Name,[_,_,{Name,Val}|_]) -> - {value,Val}; -binding(Name,[_,_,_,{Name,Val}|_]) -> - {value,Val}; -binding(Name,[_,_,_,_,{Name,Val}|_]) -> - {value,Val}; -binding(Name,[_,_,_,_,_,{Name,Val}|_]) -> - {value,Val}; -binding(Name,[_,_,_,_,_,_|Bs]) -> - binding(Name,Bs); -binding(Name,[_,_,_,_,_|Bs]) -> - binding(Name,Bs); -binding(Name,[_,_,_,_|Bs]) -> - binding(Name,Bs); -binding(Name,[_,_,_|Bs]) -> - binding(Name,Bs); -binding(Name,[_,_|Bs]) -> - binding(Name,Bs); -binding(Name,[_|Bs]) -> - binding(Name,Bs); -binding(_,[]) -> - unbound. - -add_anon(Val,[{'_',_}|Bs]) -> - [{'_',Val}|Bs]; -add_anon(Val,[B1,{'_',_}|Bs]) -> - [B1,{'_',Val}|Bs]; -add_anon(Val,[B1,B2,{'_',_}|Bs]) -> - [B1,B2,{'_',Val}|Bs]; -add_anon(Val,[B1,B2,B3,{'_',_}|Bs]) -> - [B1,B2,B3,{'_',Val}|Bs]; -add_anon(Val,[B1,B2,B3,B4,{'_',_}|Bs]) -> - [B1,B2,B3,B4,{'_',Val}|Bs]; -add_anon(Val,[B1,B2,B3,B4,B5,{'_',_}|Bs]) -> - [B1,B2,B3,B4,B5,{'_',Val}|Bs]; -add_anon(Val,[B1,B2,B3,B4,B5,B6|Bs]) -> - [B1,B2,B3,B4,B5,B6|add_anon(Val,Bs)]; -add_anon(Val,[B1,B2,B3,B4,B5|Bs]) -> - [B1,B2,B3,B4,B5|add_anon(Val,Bs)]; -add_anon(Val,[B1,B2,B3,B4|Bs]) -> - [B1,B2,B3,B4|add_anon(Val,Bs)]; -add_anon(Val,[B1,B2,B3|Bs]) -> - [B1,B2,B3|add_anon(Val,Bs)]; -add_anon(Val,[B1,B2|Bs]) -> - [B1,B2|add_anon(Val,Bs)]; -add_anon(Val,[B1|Bs]) -> - [B1|add_anon(Val,Bs)]; -add_anon(Val,[]) -> - [{'_',Val}]. - -%% merge_bindings(Bindings1, Bindings2, Ieval) -%% Merge bindings detecting bad matches. -%% Special case '_',save the new one !!! -%% Bindings1 is the newest bindings. -merge_bindings(Bs, Bs, _Ieval) -> - Bs; % Identical bindings -merge_bindings([{Name,V}|B1s], B2s, Ieval) -> - case binding(Name, B2s) of - {value,V} -> % Already there, and the same - merge_bindings(B1s, B2s, Ieval); - {value,_} when Name =:= '_' -> % Already there, but anonymous - B2s1 = lists:keydelete('_', 1, B2s), - [{Name,V}|merge_bindings(B1s, B2s1, Ieval)]; - {value,_} -> % Already there, but different => badmatch - exception(error, {badmatch,V}, B2s, Ieval); - unbound -> % Not there,add it - [{Name,V}|merge_bindings(B1s, B2s, Ieval)] - end; -merge_bindings([], B2s, _Ieval) -> - B2s. - -%% add_bindings(Bindings1,Bindings2) -%% Add Bindings1 to Bindings2. Bindings in -%% Bindings1 hides bindings in Bindings2. -%% Used in list comprehensions (and funs). -add_bindings(Bs1,[]) -> - Bs1; -add_bindings([{Name,V}|Bs],ToBs0) -> - ToBs = add_binding(Name,V,ToBs0), - add_bindings(Bs,ToBs); -add_bindings([],ToBs) -> - ToBs. - -add_binding(N,Val,[{N,_}|Bs]) -> - [{N,Val}|Bs]; -add_binding(N,Val,[B1,{N,_}|Bs]) -> - [B1,{N,Val}|Bs]; -add_binding(N,Val,[B1,B2,{N,_}|Bs]) -> - [B1,B2,{N,Val}|Bs]; -add_binding(N,Val,[B1,B2,B3,{N,_}|Bs]) -> - [B1,B2,B3,{N,Val}|Bs]; -add_binding(N,Val,[B1,B2,B3,B4,{N,_}|Bs]) -> - [B1,B2,B3,B4,{N,Val}|Bs]; -add_binding(N,Val,[B1,B2,B3,B4,B5,{N,_}|Bs]) -> - [B1,B2,B3,B4,B5,{N,Val}|Bs]; -add_binding(N,Val,[B1,B2,B3,B4,B5,B6|Bs]) -> - [B1,B2,B3,B4,B5,B6|add_binding(N,Val,Bs)]; -add_binding(N,Val,[B1,B2,B3,B4,B5|Bs]) -> - [B1,B2,B3,B4,B5|add_binding(N,Val,Bs)]; -add_binding(N,Val,[B1,B2,B3,B4|Bs]) -> - [B1,B2,B3,B4|add_binding(N,Val,Bs)]; -add_binding(N,Val,[B1,B2,B3|Bs]) -> - [B1,B2,B3|add_binding(N,Val,Bs)]; -add_binding(N,Val,[B1,B2|Bs]) -> - [B1,B2|add_binding(N,Val,Bs)]; -add_binding(N,Val,[B1|Bs]) -> - [B1|add_binding(N,Val,Bs)]; -add_binding(N,Val,[]) -> - [{N,Val}]. - -%% get_stacktrace() -> Stacktrace -%% Return the latest stacktrace for the process. -get_stacktrace() -> - case get(stacktrace) of - MakeStk when is_function(MakeStk, 1) -> - %% The stacktrace has not been constructed before. - %% Construct it and remember the result. - Depth = erlang:system_flag(backtrace_depth, 8), - erlang:system_flag(backtrace_depth, Depth), - Stk = MakeStk(Depth), - put(stacktrace, Stk), - Stk; - Stk when is_list(Stk) -> - Stk - end. diff --git a/debugger/erlide_debugger_23/src/dbg_ieval.hrl b/debugger/erlide_debugger_23/src/dbg_ieval.hrl deleted file mode 100644 index ad422a9..0000000 --- a/debugger/erlide_debugger_23/src/dbg_ieval.hrl +++ /dev/null @@ -1,31 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2005-2016. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --record(ieval, {level = 1, % Current call level - line = -1, % Current source code line (of module) - module, % MFA which called the currently - function, % interpreted function - arguments, % - - %% True if the current expression is at the top level - %% (i.e. the next call will leave interpreted code). - top = false - }). - --define(DB_REF_KEY(Mod), {Mod,db}). diff --git a/debugger/erlide_debugger_23/src/dbg_iload.erl b/debugger/erlide_debugger_23/src/dbg_iload.erl deleted file mode 100644 index d15292d..0000000 --- a/debugger/erlide_debugger_23/src/dbg_iload.erl +++ /dev/null @@ -1,693 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2017. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(dbg_iload). - --export([load_mod/4]). - -%%==================================================================== -%% External exports -%%==================================================================== - -%%-------------------------------------------------------------------- -%% load_mod(Mod, File, Binary, Db) -> {ok, Mod} -%% Mod = module() -%% File = string() Source file (including path) -%% Binary = binary() -%% Db = ETS identifier -%% Load a new module into the database. -%% -%% We want the loading of a module to be synchronous so that no other -%% process tries to interpret code in a module not being completely -%% loaded. This is achieved as this function is called from -%% dbg_iserver. We are suspended until the module has been loaded. -%%-------------------------------------------------------------------- --spec load_mod(Mod, file:filename(), binary(), ets:tid()) -> - {'ok', Mod} when Mod :: atom(). - -load_mod(Mod, File, Binary, Db) -> - Flag = process_flag(trap_exit, true), - Pid = spawn_link(load_mod1(Mod, File, Binary, Db)), - receive - {'EXIT', Pid, What} -> - process_flag(trap_exit, Flag), - What - end. - --spec load_mod1(atom(), file:filename(), binary(), ets:tid()) -> - fun(() -> no_return()). - -load_mod1(Mod, File, Binary, Db) -> - fun() -> - store_module(Mod, File, Binary, Db), - exit({ok, Mod}) - end. - -%%==================================================================== -%% Internal functions -%%==================================================================== - -store_module(Mod, File, Binary, Db) -> - {interpreter_module, Exp, Abst, Src, MD5} = binary_to_term(Binary), - Forms = case abstr(Abst) of - {abstract_v1,_} -> - exit({Mod,too_old_beam_file}); - {abstract_v2,_} -> - exit({Mod,too_old_beam_file}); - {raw_abstract_v1,Code0} -> - Code = interpret_file_attribute(Code0), - standard_transforms(Code) - end, - dbg_idb:insert(Db, mod_file, File), - dbg_idb:insert(Db, defs, []), - - put(vcount, 0), - put(fun_count, 0), - put(funs, []), - put(mod_md5, MD5), - store_forms(Forms, Mod, Db, Exp), - erase(mod_md5), - erase(current_function), - %% store_funs(Db, Mod), - erase(vcount), - erase(funs), - erase(fun_count), - - NewBinary = store_mod_line_no(Mod, Db, binary_to_list(Src)), - dbg_idb:insert(Db, mod_bin, NewBinary), - dbg_idb:insert(Db, mod_raw, <>). %% Add eos - -standard_transforms(Forms0) -> - Forms = erl_expand_records:module(Forms0, []), - erl_internal:add_predefined_functions(Forms). - - -%% Adjust line numbers using the file/2 attribute. -%% Also take the absolute value of line numbers. -%% This simple fix will make the marker point at the correct line -%% (assuming the file attributes are correct) in the source; it will -%% not point at code in included files. -interpret_file_attribute(Code) -> - epp:interpret_file_attribute(Code). - -abstr(Bin) when is_binary(Bin) -> binary_to_term(Bin); -abstr(Term) -> Term. - -% store_funs(Db, Mod) -> -% store_funs_1(get(funs), Db, Mod). - -% store_funs_1([{Name,Index,Uniq,_,_,Arity,Cs}|Fs], Db, Mod) -> -% dbg_idb:insert(Db, {Mod,Name,Arity,false}, Cs), -% dbg_idb:insert(Db, {'fun',Mod,Index,Uniq}, {Name,Arity,Cs}), -% store_funs_1(Fs, Db, Mod); -% store_funs_1([], _, _) -> ok. - -store_forms([{function,_,Name,Arity,Cs0}|Fs], Mod, Db, Exp) -> - FA = {Name,Arity}, - put(current_function, FA), - Cs = clauses(Cs0), - Exported = lists:member(FA, Exp), - dbg_idb:insert(Db, {Mod,Name,Arity,Exported}, Cs), - store_forms(Fs, Mod, Db, Exp); -store_forms([{attribute,_,_Name,_Val}|Fs], Mod, Db, Exp) -> - store_forms(Fs, Mod, Db, Exp); -store_forms([_|Fs], Mod, Db, Exp) -> - %% Ignore other forms such as {eof,_} or {warning,_}. - store_forms(Fs, Mod, Db, Exp); -store_forms([], _, _, _) -> - ok. - -store_mod_line_no(Mod, Db, Contents) -> - store_mod_line_no(Mod, Db, Contents, 1, 0, []). - -store_mod_line_no(_, _, [], _, _, NewCont) -> - list_to_binary(lists:reverse(NewCont)); -store_mod_line_no(Mod, Db, Contents, LineNo, Pos, NewCont) when is_integer(LineNo) -> - {ContTail,Pos1,NewCont1} = store_line(Mod, Db, Contents, LineNo, Pos, NewCont), - store_mod_line_no(Mod, Db, ContTail, LineNo+1, Pos1, NewCont1). - -store_line(_, Db, Contents, LineNo, Pos, NewCont) -> - {ContHead,ContTail,PosNL} = get_nl(Contents,Pos+8,[]), - dbg_idb:insert(Db,LineNo,{Pos+8,PosNL}), - {ContTail,PosNL+1,[make_lineno(LineNo, 8, ContHead)|NewCont]}. - -make_lineno(N, P, Acc) -> - S = integer_to_list(N), - S ++ [$:|spaces(P-length(S)-1, Acc)]. - -spaces(P, Acc) when P > 0 -> - spaces(P-1, [$\s|Acc]); -spaces(_, Acc) -> Acc. - -get_nl([10|T],Pos,Head) -> {lists:reverse([10|Head]),T,Pos}; -get_nl([H|T],Pos,Head) -> - get_nl(T,Pos+1,[H|Head]); -get_nl([],Pos,Head) -> {lists:reverse(Head),[],Pos}. - -%%% Rewrite the abstract syntax tree to that it will be easier (== faster) -%%% to interpret. - -clauses([C0|Cs]) -> - C1 = clause(C0, true), - [C1|clauses(Cs)]; -clauses([]) -> []. - -clause({clause,Anno,H0,G0,B0}, Lc) -> - H1 = head(H0), - G1 = guard(G0), - B1 = exprs(B0, Lc), - {clause,ln(Anno),H1,G1,B1}. - -head(Ps) -> patterns(Ps). - -%% These patterns are processed "sequentially" for purposes of variable -%% definition etc. - -patterns([P0|Ps]) -> - P1 = pattern(P0), - [P1|patterns(Ps)]; -patterns([]) -> []. - -%% N.B. Only valid patterns are included here. - -pattern({var,Anno,V}) -> {var,ln(Anno),V}; -pattern({char,Anno,I}) -> {value,ln(Anno),I}; -pattern({integer,Anno,I}) -> {value,ln(Anno),I}; -pattern({match,Anno,Pat1,Pat2}) -> - {match,ln(Anno),pattern(Pat1),pattern(Pat2)}; -pattern({float,Anno,F}) -> {value,ln(Anno),F}; -pattern({atom,Anno,A}) -> {value,ln(Anno),A}; -pattern({string,Anno,S}) -> {value,ln(Anno),S}; -pattern({nil,Anno}) -> {value,ln(Anno),[]}; -pattern({cons,Anno,H0,T0}) -> - H1 = pattern(H0), - T1 = pattern(T0), - {cons,ln(Anno),H1,T1}; -pattern({tuple,Anno,Ps0}) -> - Ps1 = pattern_list(Ps0), - {tuple,ln(Anno),Ps1}; -pattern({map,Anno,Fs0}) -> - Fs1 = lists:map(fun ({map_field_exact,L,K,V}) -> - {map_field_exact,L,gexpr(K),pattern(V)} - end, Fs0), - {map,ln(Anno),Fs1}; -pattern({op,_,'-',{integer,Anno,I}}) -> - {value,ln(Anno),-I}; -pattern({op,_,'+',{integer,Anno,I}}) -> - {value,ln(Anno),I}; -pattern({op,_,'-',{char,Anno,I}}) -> - {value,ln(Anno),-I}; -pattern({op,_,'+',{char,Anno,I}}) -> - {value,ln(Anno),I}; -pattern({op,_,'-',{float,Anno,I}}) -> - {value,ln(Anno),-I}; -pattern({op,_,'+',{float,Anno,I}}) -> - {value,ln(Anno),I}; -pattern({bin,Anno,Grp}) -> - Grp1 = pattern_list(bin_expand_strings(Grp)), - {bin,ln(Anno),Grp1}; -pattern({bin_element,Anno,Expr0,Size0,Type0}) -> - {Size1,Type} = make_bit_type(Anno, Size0, Type0), - Expr1 = pattern(Expr0), - Expr = coerce_to_float(Expr1, Type0), - Size = expr(Size1, false), - {bin_element,ln(Anno),Expr,Size,Type}; -%% Evaluate compile-time expressions. -pattern({op,_,'++',{nil,_},R}) -> - pattern(R); -pattern({op,_,'++',{cons,Li,H,T},R}) -> - pattern({cons,Li,H,{op,Li,'++',T,R}}); -pattern({op,_,'++',{string,Li,L},R}) -> - pattern(string_to_conses(Li, L, R)); -pattern({op,_Line,_Op,_A}=Op) -> - pattern(erl_eval:partial_eval(Op)); -pattern({op,_Line,_Op,_L,_R}=Op) -> - pattern(erl_eval:partial_eval(Op)). - -string_to_conses(Anno, Cs, Tail) -> - lists:foldr(fun (C, T) -> {cons,Anno,{char,Anno,C},T} end, Tail, Cs). - -coerce_to_float({value,Anno,Int}=E, [float|_]) when is_integer(Int) -> - try - {value,Anno,float(Int)} - catch - error:badarg -> E - end; -coerce_to_float(E, _) -> E. - -%% These patterns are processed "in parallel" for purposes of variable -%% definition etc. - -pattern_list([P0|Ps]) -> - P1 = pattern(P0), - [P1|pattern_list(Ps)]; -pattern_list([]) -> []. - -guard([G0|Gs]) -> - G1 = and_guard(G0), - [G1|guard(Gs)]; -guard([]) -> []. - -and_guard([G0|Gs]) -> - G1 = guard_test(G0), - [G1|and_guard(Gs)]; -and_guard([]) -> []. - -guard_test({call,Anno,{remote,_,{atom,_,erlang},{atom,_,F}},As0}) -> - As = gexpr_list(As0), - {safe_bif,ln(Anno),erlang,F,As}; -guard_test({op,Anno,Op,L0}) -> - true = erl_internal:arith_op(Op, 1) orelse %Assertion. - erl_internal:bool_op(Op, 1), - L1 = gexpr(L0), - {safe_bif,ln(Anno),erlang,Op,[L1]}; -guard_test({op,Anno,Op,L0,R0}) when Op =:= 'andalso'; Op =:= 'orelse' -> - L1 = gexpr(L0), - R1 = gexpr(R0), %They see the same variables - {Op,ln(Anno),L1,R1}; -guard_test({op,Anno,Op,L0,R0}) -> - true = erl_internal:comp_op(Op, 2) orelse %Assertion. - erl_internal:bool_op(Op, 2) orelse - erl_internal:arith_op(Op, 2), - L1 = gexpr(L0), - R1 = gexpr(R0), %They see the same variables - {safe_bif,ln(Anno),erlang,Op,[L1,R1]}; -guard_test({var,_,_}=V) ->V; % Boolean var -guard_test({atom,Anno,true}) -> {value,ln(Anno),true}; -%% All other constants at this level means false. -guard_test({atom,Anno,_}) -> {value,ln(Anno),false}; -guard_test({integer,Anno,_}) -> {value,ln(Anno),false}; -guard_test({char,Anno,_}) -> {value,ln(Anno),false}; -guard_test({float,Anno,_}) -> {value,ln(Anno),false}; -guard_test({string,Anno,_}) -> {value,ln(Anno),false}; -guard_test({nil,Anno}) -> {value,ln(Anno),false}; -guard_test({cons,Anno,_,_}) -> {value,ln(Anno),false}; -guard_test({tuple,Anno,_}) -> {value,ln(Anno),false}; -guard_test({map,Anno,_}) -> {value,ln(Anno),false}; -guard_test({map,Anno,_,_}) -> {value,ln(Anno),false}; -guard_test({bin,Anno,_}) -> {value,ln(Anno),false}. - -gexpr({var,Anno,V}) -> {var,ln(Anno),V}; -gexpr({integer,Anno,I}) -> {value,ln(Anno),I}; -gexpr({char,Anno,I}) -> {value,ln(Anno),I}; -gexpr({float,Anno,F}) -> {value,ln(Anno),F}; -gexpr({atom,Anno,A}) -> {value,ln(Anno),A}; -gexpr({string,Anno,S}) -> {value,ln(Anno),S}; -gexpr({nil,Anno}) -> {value,ln(Anno),[]}; -gexpr({cons,Anno,H0,T0}) -> - case {gexpr(H0),gexpr(T0)} of - {{value,Line,H1},{value,Line,T1}} -> {value,Line,[H1|T1]}; - {H1,T1} -> {cons,ln(Anno),H1,T1} - end; -gexpr({tuple,Anno,Es0}) -> - Es1 = gexpr_list(Es0), - {tuple,ln(Anno),Es1}; -gexpr({map,Anno,Fs0}) -> - new_map(Fs0, Anno, fun gexpr/1); -gexpr({map,Anno,E0,Fs0}) -> - E1 = gexpr(E0), - Fs1 = map_fields(Fs0, fun gexpr/1), - {map,ln(Anno),E1,Fs1}; -gexpr({bin,Anno,Flds0}) -> - Flds = gexpr_list(bin_expand_strings(Flds0)), - {bin,ln(Anno),Flds}; -gexpr({bin_element,Anno,Expr0,Size0,Type0}) -> - {Size1,Type} = make_bit_type(Anno, Size0, Type0), - Expr = gexpr(Expr0), - Size = gexpr(Size1), - {bin_element,ln(Anno),Expr,Size,Type}; -%%% The erl_expand_records pass has added the module name 'erlang' to -%%% all BIF calls, even in guards. -gexpr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,self}},[]}) -> - {dbg,ln(Anno),self,[]}; -gexpr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,F}},As0}) -> - As = gexpr_list(As0), - {safe_bif,ln(Anno),erlang,F,As}; -gexpr({op,Anno,Op,A0}) -> - erl_internal:arith_op(Op, 1), - A1 = gexpr(A0), - {safe_bif,ln(Anno),erlang,Op,[A1]}; -gexpr({op,Anno,Op,L0,R0}) when Op =:= 'andalso'; Op =:= 'orelse' -> - L1 = gexpr(L0), - R1 = gexpr(R0), %They see the same variables - {Op,ln(Anno),L1,R1}; -gexpr({op,Anno,Op,L0,R0}) -> - true = erl_internal:arith_op(Op, 2) orelse erl_internal:comp_op(Op, 2) - orelse erl_internal:bool_op(Op, 2), - L1 = gexpr(L0), - R1 = gexpr(R0), %They see the same variables - {safe_bif,ln(Anno),erlang,Op,[L1,R1]}. - -%% These expressions are processed "in parallel" for purposes of variable -%% definition etc. - -gexpr_list([E0|Es]) -> - E1 = gexpr(E0), - [E1|gexpr_list(Es)]; -gexpr_list([]) -> []. - -%% These expressions are processed "sequentially" for purposes of variable -%% definition etc. - -exprs([E], Lc) -> - [expr(E, Lc)]; -exprs([E0|Es], Lc) -> - E1 = expr(E0, false), - [E1|exprs(Es, Lc)]; -exprs([], _Lc) -> []. - -expr({var,Anno,V}, _Lc) -> {var,ln(Anno),V}; -expr({integer,Anno,I}, _Lc) -> {value,ln(Anno),I}; -expr({char,Anno,I}, _Lc) -> {value,ln(Anno),I}; -expr({float,Anno,F}, _Lc) -> {value,ln(Anno),F}; -expr({atom,Anno,A}, _Lc) -> {value,ln(Anno),A}; -expr({string,Anno,S}, _Lc) -> {value,ln(Anno),S}; -expr({nil,Anno}, _Lc) -> {value,ln(Anno),[]}; -expr({cons,Anno,H0,T0}, _Lc) -> - case {expr(H0, false),expr(T0, false)} of - {{value,Line,H1},{value,Line,T1}} -> {value,Line,[H1|T1]}; - {H1,T1} -> {cons,ln(Anno),H1,T1} - end; -expr({tuple,Anno,Es0}, _Lc) -> - Es1 = expr_list(Es0), - {tuple,ln(Anno),Es1}; -expr({map,Anno,Fs}, _Lc) -> - new_map(Fs, Anno, fun (E) -> expr(E, false) end); -expr({map,Anno,E0,Fs0}, _Lc) -> - E1 = expr(E0, false), - Fs1 = map_fields(Fs0), - {map,ln(Anno),E1,Fs1}; -expr({block,Anno,Es0}, Lc) -> - %% Unfold block into a sequence. - Es1 = exprs(Es0, Lc), - {block,ln(Anno),Es1}; -expr({'if',Anno,Cs0}, Lc) -> - Cs1 = icr_clauses(Cs0, Lc), - {'if',ln(Anno),Cs1}; -expr({'case',Anno,E0,Cs0}, Lc) -> - E1 = expr(E0, false), - Cs1 = icr_clauses(Cs0, Lc), - {'case',ln(Anno),E1,Cs1}; -expr({'receive',Anno,Cs0}, Lc) -> - Cs1 = icr_clauses(Cs0, Lc), - {'receive',ln(Anno),Cs1}; -expr({'receive',Anno,Cs0,To0,ToEs0}, Lc) -> - To1 = expr(To0, false), - ToEs1 = exprs(ToEs0, Lc), - Cs1 = icr_clauses(Cs0, Lc), - {'receive',ln(Anno),Cs1,To1,ToEs1}; -expr({'fun',Anno,{clauses,Cs0}}, _Lc) -> - %% New R10B-2 format (abstract_v2). - Cs = fun_clauses(Cs0), - Name = new_fun_name(), - {make_fun,ln(Anno),Name,Cs}; -expr({'fun',Anno,{function,F,A}}, _Lc) -> - %% New R8 format (abstract_v2). - Line = ln(Anno), - As = new_vars(A, Line), - Name = new_fun_name(), - Cs = [{clause,Line,As,[],[{local_call,Line,F,As,true}]}], - {make_fun,Line,Name,Cs}; -expr({named_fun,Anno,FName,Cs0}, _Lc) -> - Cs = fun_clauses(Cs0), - Name = new_fun_name(), - {make_named_fun,ln(Anno),Name,FName,Cs}; -expr({'fun',Anno,{function,{atom,_,M},{atom,_,F},{integer,_,A}}}, _Lc) - when 0 =< A, A =< 255 -> - %% New format in R15 for fun M:F/A (literal values). - {value,ln(Anno),erlang:make_fun(M, F, A)}; -expr({'fun',Anno,{function,M,F,A}}, _Lc) -> - %% New format in R15 for fun M:F/A (one or more variables). - MFA = expr_list([M,F,A]), - {make_ext_fun,ln(Anno),MFA}; -expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,self}},[]}, _Lc) -> - {dbg,ln(Anno),self,[]}; -expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,throw}},[_]=As}, _Lc) -> - {dbg,ln(Anno),throw,expr_list(As)}; -expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,error}},[_]=As}, _Lc) -> - {dbg,ln(Anno),error,expr_list(As)}; -expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,exit}},[_]=As}, _Lc) -> - {dbg,ln(Anno),exit,expr_list(As)}; -expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,raise}},[_,_,_]=As}, _Lc) -> - {dbg,ln(Anno),raise,expr_list(As)}; -expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,apply}},[_,_,_]=As0}, Lc) -> - As = expr_list(As0), - {apply,ln(Anno),As,Lc}; -expr({call,Anno,{remote,_,{atom,_,Mod},{atom,_,Func}},As0}, Lc) -> - As = expr_list(As0), - case erlang:is_builtin(Mod, Func, length(As)) of - false -> - {call_remote,ln(Anno),Mod,Func,As,Lc}; - true -> - case bif_type(Mod, Func, length(As0)) of - safe -> {safe_bif,ln(Anno),Mod,Func,As}; - unsafe ->{bif,ln(Anno),Mod,Func,As} - end - end; -expr({call,Anno,{remote,_,Mod0,Func0},As0}, Lc) -> - %% New R8 format (abstract_v2). - Mod = expr(Mod0, false), - Func = expr(Func0, false), - As = consify(expr_list(As0)), - {apply,ln(Anno),[Mod,Func,As],Lc}; -expr({call,Anno,{atom,_,Func},As0}, Lc) -> - As = expr_list(As0), - {local_call,ln(Anno),Func,As,Lc}; -expr({call,Anno,Fun0,As0}, Lc) -> - Fun = expr(Fun0, false), - As = expr_list(As0), - {apply_fun,ln(Anno),Fun,As,Lc}; -expr({'catch',Anno,E0}, _Lc) -> - %% No new variables added. - E1 = expr(E0, false), - {'catch',ln(Anno),E1}; -expr({'try',Anno,Es0,CaseCs0,CatchCs0,As0}, Lc) -> - %% No new variables added. - Es = expr_list(Es0), - CaseCs = icr_clauses(CaseCs0, Lc), - CatchCs = icr_clauses(CatchCs0, Lc), - As = expr_list(As0), - {'try',ln(Anno),Es,CaseCs,CatchCs,As}; -expr({lc,_,_,_}=Compr, _Lc) -> - expr_lc_bc(Compr); -expr({bc,_,_,_}=Compr, _Lc) -> - expr_lc_bc(Compr); -expr({match,Anno,P0,E0}, _Lc) -> - E1 = expr(E0, false), - P1 = pattern(P0), - {match,ln(Anno),P1,E1}; -expr({op,Anno,Op,A0}, _Lc) -> - A1 = expr(A0, false), - {op,ln(Anno),Op,[A1]}; -expr({op,Anno,'++',L0,R0}, _Lc) -> - L1 = expr(L0, false), - R1 = expr(R0, false), %They see the same variables - {op,ln(Anno),append,[L1,R1]}; -expr({op,Anno,'--',L0,R0}, _Lc) -> - L1 = expr(L0, false), - R1 = expr(R0, false), %They see the same variables - {op,ln(Anno),subtract,[L1,R1]}; -expr({op,Anno,'!',L0,R0}, _Lc) -> - L1 = expr(L0, false), - R1 = expr(R0, false), %They see the same variables - {send,ln(Anno),L1,R1}; -expr({op,Anno,Op,L0,R0}, _Lc) when Op =:= 'andalso'; Op =:= 'orelse' -> - L1 = expr(L0, false), - R1 = expr(R0, false), %They see the same variables - {Op,ln(Anno),L1,R1}; -expr({op,Anno,Op,L0,R0}, _Lc) -> - L1 = expr(L0, false), - R1 = expr(R0, false), %They see the same variables - {op,ln(Anno),Op,[L1,R1]}; -expr({bin,Anno,Grp}, _Lc) -> - Grp1 = expr_list(bin_expand_strings(Grp)), - {bin,ln(Anno),Grp1}; -expr({bin_element,Anno,Expr0,Size0,Type0}, _Lc) -> - {Size1,Type} = make_bit_type(Anno, Size0, Type0), - Expr = expr(Expr0, false), - Size = expr(Size1, false), - {bin_element,ln(Anno),Expr,Size,Type}. - -consify([A|As]) -> - {cons,0,A,consify(As)}; -consify([]) -> {value,0,[]}. - -make_bit_type(Line, default, Type0) -> - case erl_bits:set_bit_type(default, Type0) of - {ok,all,Bt} -> {{atom,Line,all},erl_bits:as_list(Bt)}; - {ok,undefined,Bt} -> {{atom,Line,undefined},erl_bits:as_list(Bt)}; - {ok,Size,Bt} -> {{integer,Line,Size},erl_bits:as_list(Bt)} - end; -make_bit_type(_Line, Size, Type0) -> %Integer or 'all' - {ok,Size,Bt} = erl_bits:set_bit_type(Size, Type0), - {Size,erl_bits:as_list(Bt)}. - -expr_lc_bc({Tag,Anno,E0,Gs0}) -> - Gs = lists:map(fun ({generate,L,P0,Qs}) -> - {generate,L,pattern(P0),expr(Qs, false)}; - ({b_generate,L,P0,Qs}) -> %R12. - {b_generate,L,pattern(P0),expr(Qs, false)}; - (Expr) -> - case is_guard_test(Expr) of - true -> {guard,guard([[Expr]])}; - false -> expr(Expr, false) - end - end, Gs0), - {Tag,ln(Anno),expr(E0, false),Gs}. - -is_guard_test(Expr) -> - IsOverridden = fun({_,_}) -> true end, - erl_lint:is_guard_test(Expr, [], IsOverridden). - -%% The debugger converts both strings "abc" and lists [67, 68, 69] -%% into {value, Line, [67, 68, 69]}, making it impossible to later -%% distingish one or the other inside binaries when evaluating. To -%% avoid <<[67, 68, 69]>> from evaluating, we convert strings into -%% chars to avoid the ambiguity. -bin_expand_strings(Es) -> - lists:foldr(fun ({bin_element,Line,{string,_,S},Sz,Ts}, Es1) -> - lists:foldr(fun (C, Es2) -> - [{bin_element,Line,{char,Line,C},Sz,Ts}|Es2] - end, Es1, S); - (E, Es1) -> [E|Es1] - end, [], Es). - -%% -type expr_list([Expression]) -> [Expression]. -%% These expressions are processed "in parallel" for purposes of variable -%% definition etc. - -expr_list([E0|Es]) -> - E1 = expr(E0, false), - [E1|expr_list(Es)]; -expr_list([]) -> []. - -icr_clauses([C0|Cs], Lc) -> - C1 = clause(C0, Lc), - [C1|icr_clauses(Cs, Lc)]; -icr_clauses([], _) -> []. - -fun_clauses([{clause,A,H,G,B}|Cs]) -> - [{clause,ln(A),head(H),guard(G),exprs(B, true)}|fun_clauses(Cs)]; -fun_clauses([]) -> []. - - -new_map(Fs0, Anno, F) -> - Line = ln(Anno), - Fs1 = map_fields(Fs0, F), - Fs2 = [{L,K,V} || {map_field_assoc,L,K,V} <- Fs1], - try - {value,Line,map_literal(Fs2, #{})} - catch - throw:not_literal -> - {map,Line,Fs2} - end. - -map_literal([{_,{value,_,K},{value,_,V}}|T], M) -> - map_literal(T, maps:put(K, V, M)); -map_literal([_|_], _) -> - throw(not_literal); -map_literal([], M) -> M. - -map_fields(Fs) -> - map_fields(Fs, fun (E) -> expr(E, false) end). - -map_fields([{map_field_assoc,A,N,V}|Fs], F) -> - [{map_field_assoc,ln(A),F(N),F(V)}|map_fields(Fs)]; -map_fields([{map_field_exact,A,N,V}|Fs], F) -> - [{map_field_exact,ln(A),F(N),F(V)}|map_fields(Fs)]; -map_fields([], _) -> []. - -%% new_var_name() -> VarName. - -new_var_name() -> - C = get(vcount), - put(vcount, C+1), - list_to_atom("%" ++ integer_to_list(C)). - -%% new_vars(Count, Line) -> [Var]. -%% Make Count new variables. - -new_vars(N, L) -> new_vars(N, L, []). - -new_vars(N, L, Vs) when N > 0 -> - V = {var,L,new_var_name()}, - new_vars(N-1, L, [V|Vs]); -new_vars(0, _, Vs) -> Vs. - -new_fun_name() -> - {F,A} = get(current_function), - I = get(fun_count), - put(fun_count, I+1), - Name = "-" ++ atom_to_list(F) ++ "/" ++ integer_to_list(A) ++ - "-fun-" ++ integer_to_list(I) ++ "-", - list_to_atom(Name). - -ln(Anno) -> - erl_anno:line(Anno). - -bif_type(erlang, Name, Arity) -> - case erl_internal:guard_bif(Name, Arity) of - true -> - %% Guard BIFs are safe (except for self/0, but it is - %% handled with a special instruction anyway). - safe; - false -> - bif_type(Name) - end; -bif_type(_, _, _) -> unsafe. - -bif_type(register) -> safe; -bif_type(unregister) -> safe; -bif_type(whereis) -> safe; -bif_type(registered) -> safe; -bif_type(setelement) -> safe; -bif_type(atom_to_list) -> safe; -bif_type(list_to_atom) -> safe; -bif_type(integer_to_list) -> safe; -bif_type(list_to_integer) -> safe; -bif_type(float_to_list) -> safe; -bif_type(list_to_float) -> safe; -bif_type(tuple_to_list) -> safe; -bif_type(list_to_tuple) -> safe; -bif_type(make_ref) -> safe; -bif_type(time) -> safe; -bif_type(date) -> safe; -bif_type(processes) -> safe; -bif_type(process_info) -> safe; -bif_type(load_module) -> safe; -bif_type(delete_module) -> safe; -bif_type(halt) -> safe; -bif_type(check_process_code) -> safe; -bif_type(purge_module) -> safe; -bif_type(pid_to_list) -> safe; -bif_type(list_to_pid) -> safe; -bif_type(module_loaded) -> safe; -bif_type(binary_to_term) -> safe; -bif_type(term_to_binary) -> safe; -bif_type(nodes) -> safe; -bif_type(is_alive) -> safe; -bif_type(disconnect_node) -> safe; -bif_type(binary_to_list) -> safe; -bif_type(list_to_binary) -> safe; -bif_type(split_binary) -> safe; -bif_type(hash) -> safe; -bif_type(pre_loaded) -> safe; -bif_type(set_cookie) -> safe; -bif_type(get_cookie) -> safe; -bif_type(_) -> unsafe. diff --git a/debugger/erlide_debugger_23/src/dbg_iserver.erl b/debugger/erlide_debugger_23/src/dbg_iserver.erl deleted file mode 100644 index 3e959e8..0000000 --- a/debugger/erlide_debugger_23/src/dbg_iserver.erl +++ /dev/null @@ -1,604 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2016. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(dbg_iserver). --behaviour(gen_server). - -%% External exports --export([start/0, stop/0, find/0, - call/1, call/2, cast/1, cast/2, safe_call/1, safe_cast/1]). - -%% gen_server callbacks --export([init/1, handle_call/3, handle_cast/2, handle_info/2, - terminate/2, code_change/3]). - --record(proc, {pid, % pid() Debugged process - meta, % pid() Meta process - attpid, % pid() | undefined Attached process - status, % running | exit | idle | waiting - info = {}, % {} | term() - exit_info= {}, % {} | {{Mod,Line}, Bs, Stack} - function % {Mod,Func,Args} Initial function call - }). - --record(state, {db, % ETS table - procs = [], % [#proc{}] - breaks = [], % [{{M,L},Options} Breakpoints - auto, % Auto attach settings - stack, % Stack trace settings - subs = [] % [pid()] Subscribers (Debugger) - }). - - -%%==================================================================== -%% External exports -%%==================================================================== - -start() -> - gen_server:start({local, ?MODULE}, ?MODULE, [], []). - -stop() -> - gen_server:cast(?MODULE, stop). - -find() -> - global:whereis_name(?MODULE). - -call(Request) -> - gen_server:call(?MODULE, Request, infinity). - -call(Int, Request) -> - gen_server:call(Int, Request, infinity). - -cast(Request) -> - gen_server:cast(?MODULE, Request). - -cast(Int, Request) -> - gen_server:cast(Int, Request). - -safe_call(Request) -> - {ok, _} = ensure_started(), - call(Request). - -safe_cast(Request) -> - {ok, _} = ensure_started(), - cast(Request). - -ensure_started() -> - case whereis(?MODULE) of - undefined -> start(); - Pid -> {ok, Pid} - end. - -%%--Module database--------------------------------------------------- -%% This server creates an ETS table, where the following information -%% is saved: -%% -%% Key Value -%% --- ----- -%% {Mod, refs} [ModDb] -%% ModDb [pid()] -%% -%% In each ModDb, the following information is saved by dbg_iload: -%% -%% Key Value -%% --- ----- -%% defs [] -%% mod_bin Binary -%% mod_raw Raw Binary -%% mod_file File -%% {Mod,Name,Arity,Exported} Cs -%% {'fun',Mod,Index,Uniq} {Name,Arity,Cs} -%% Line {Pos,PosNL} - - -%%==================================================================== -%% gen_server callbacks -%%==================================================================== - -init([]) -> - process_flag(trap_exit, true), - global:register_name(?MODULE, self()), - Db = ets:new(?MODULE, [ordered_set, protected]), - {ok, #state{db=Db, auto=false, stack=no_tail}}. - -%% Attaching to a process -handle_call({attached, AttPid, Pid}, _From, State) -> - {true, Proc} = get_proc({pid, Pid}, State#state.procs), - case Proc#proc.attpid of - undefined -> - link(AttPid), - case Proc#proc.status of - exit -> - Args = [self(), - AttPid,Pid,Proc#proc.info, - Proc#proc.exit_info], - Meta = spawn_link(dbg_ieval, exit_info, Args), - Proc2 = Proc#proc{meta=Meta, attpid=AttPid}, - Procs = lists:keyreplace(Pid, #proc.pid, - State#state.procs, Proc2), - {reply, {ok,Meta}, State#state{procs=Procs}}; - _Status -> - Meta = Proc#proc.meta, - send(Meta, {attached, AttPid}), - Procs = lists:keyreplace(Pid, #proc.pid, - State#state.procs, - Proc#proc{attpid=AttPid}), - {reply, {ok, Meta}, State#state{procs=Procs}} - end; - _AttPid -> % there is already an attached process - {reply, error, State} - end; - -%% Getting and setting options -handle_call(get_auto_attach, _From, State) -> - {reply, State#state.auto, State}; -handle_call(get_stack_trace, _From, State) -> - {reply, State#state.stack, State}; - -%% Retrieving information -handle_call(snapshot, _From, State) -> - Reply = [{Proc#proc.pid, Proc#proc.function, - Proc#proc.status, Proc#proc.info} || Proc <- State#state.procs], - {reply, Reply, State}; -handle_call({get_meta, Pid}, _From, State) -> - Reply = case get_proc({pid, Pid}, State#state.procs) of - {true, Proc} -> - {ok, Proc#proc.meta}; - false -> - {error, not_interpreted} - end, - {reply, Reply, State}; -handle_call({get_attpid, Pid}, _From, State) -> - Reply = case get_proc({pid, Pid}, State#state.procs) of - {true, Proc} -> - {ok, Proc#proc.attpid}; - false -> - {error, not_interpreted} - end, - {reply, Reply, State}; - - -%% Breakpoint handling -handle_call({new_break, Point, Options}, _From, State) -> - case lists:keymember(Point, 1, State#state.breaks) of - false -> - Break = {Point, Options}, - send_all([subscriber, meta, attached], - {new_break, Break}, State), - Breaks = keyinsert(Break, 1, State#state.breaks), - {reply, ok, State#state{breaks=Breaks}}; - true -> - {reply, {error, break_exists}, State} - end; -handle_call(all_breaks, _From, State) -> - {reply, State#state.breaks, State}; -handle_call({all_breaks, Mod}, _From, State) -> - Reply = [Break || Break = {{M, _},_} <- State#state.breaks, M =:= Mod], - {reply, Reply, State}; - -%% From Meta process -handle_call({new_process, Pid, Meta, Function}, _From, State) -> - link(Meta), - - %% A new, debugged process has been started. Return its status, - %% ie running (running as usual) or break (stop) - %% The status depends on if the process is automatically attached to - %% or not. - Reply = case auto_attach(init, State#state.auto, Pid) of - AttPid when is_pid(AttPid) -> break; - ignore -> running - end, - - %% Do not add AttPid, it should call attached/2 when started instead - Proc = #proc{pid=Pid, meta=Meta, status=running, function=Function}, - send_all(subscriber, - {new_process, {Pid,Function,running,{}}}, State), - - {reply, Reply, State#state{procs=State#state.procs++[Proc]}}; - -%% Code loading -handle_call({load, Mod, Src, Bin}, _From, State) -> - %% Create an ETS table for storing information about the module - Db = State#state.db, - ModDb = ets:new(Mod, [ordered_set, public]), - ModDbs = case ets:lookup(Db, {Mod, refs}) of - [] -> []; - [{{Mod, refs}, ModDbs1}] -> ModDbs1 - end, - ets:insert(Db, {{Mod, refs}, [ModDb|ModDbs]}), - ets:insert(Db, {ModDb, []}), - - %% Load the code - {ok, Mod} = dbg_iload:load_mod(Mod, Src, Bin, ModDb), - - %% Inform all subscribers and attached processes - send_all([subscriber, attached], {interpret, Mod}, State), - - {reply, {module, Mod}, State}; - -%% Module database -handle_call({get_module_db, Mod, Pid}, _From, State) -> - Db = State#state.db, - Reply = case ets:lookup(Db, {Mod, refs}) of - [] -> not_found; - [{{Mod, refs}, [ModDb|_ModDbs]}] -> - [{ModDb, Pids}] = ets:lookup(Db, ModDb), - ets:insert(Db, {ModDb, [Pid|Pids]}), - ModDb - end, - {reply, Reply, State}; -handle_call({lookup, Mod, Key}, _From, State) -> - Db = State#state.db, - Reply = case ets:lookup(Db, {Mod, refs}) of - [] -> not_found; - [{{Mod, refs}, [ModDb|_ModDbs]}] -> - case ets:lookup(ModDb, Key) of - [] -> not_found; - [{Key, Value}] -> {ok, Value} - end - end, - {reply, Reply, State}; -handle_call({functions, Mod}, _From, State) -> - Db = State#state.db, - Reply = case ets:lookup(Db, {Mod, refs}) of - [] -> []; - [{{Mod, refs}, [ModDb|_ModDbs]}] -> - Pattern = {{Mod,'$1','$2','_'}, '_'}, - ets:match(ModDb, Pattern) - end, - {reply, Reply, State}; -handle_call({contents, Mod, Pid}, _From, State) -> - Db = State#state.db, - [{{Mod, refs}, ModDbs}] = ets:lookup(Db, {Mod, refs}), - ModDb = if - Pid =:= any -> hd(ModDbs); - true -> - lists:foldl(fun(T, not_found) -> - [{T, Pids}] = ets:lookup(Db, T), - case lists:member(Pid, Pids) of - true -> T; - false -> not_found - end; - (_T, T) -> T - end, - not_found, - ModDbs) - end, - [{mod_bin, Bin}] = ets:lookup(ModDb, mod_bin), - {reply, {ok, Bin}, State}; -handle_call({raw_contents, Mod, Pid}, _From, State) -> - Db = State#state.db, - case ets:lookup(Db, {Mod, refs}) of - [{{Mod, refs}, ModDbs}] -> - ModDb = - if - Pid =:= any -> hd(ModDbs); - true -> - lists:foldl(fun(T, not_found) -> - [{T, Pids}] = ets:lookup(Db, T), - case lists:member(Pid, Pids) of - true -> T; - false -> not_found - end; - (_T, T) -> T - end, - not_found, - ModDbs) - end, - [{mod_raw, Bin}] = ets:lookup(ModDb, mod_raw), - {reply, {ok, Bin}, State}; - [] -> % code not interpreted - {reply, not_found, State} - end; -handle_call({is_interpreted, Mod, Name, Arity}, _From, State) -> - Db = State#state.db, - Reply = case ets:lookup(Db, {Mod, refs}) of - [] -> false; - [{{Mod, refs}, [ModDb|_ModDbs]}] -> - Pattern = {{Mod,Name,Arity,'_'}, '_'}, - case ets:match_object(ModDb, Pattern) of - [{_Key, Clauses}] -> {true, Clauses}; - [] -> false - end - end, - {reply, Reply, State}; -handle_call(all_interpreted, _From, State) -> - Db = State#state.db, - Mods = ets:select(Db, [{{{'$1',refs},'_'},[],['$1']}]), - {reply, Mods, State}; -handle_call({file, Mod}, From, State) -> - {reply, Res, _} = handle_call({lookup, Mod, mod_file}, From, State), - Reply = case Res of - {ok, File} -> File; - not_found -> {error, not_loaded} - end, - {reply, Reply, State}. - - -handle_cast(stop, State) -> - {stop, shutdown, State}; -handle_cast({subscribe, Sub}, State) -> - {noreply, State#state{subs=[Sub|State#state.subs]}}; - -%% Attaching to a process -handle_cast({attach, Pid, {Mod, Func, Args}}, State) -> - %% Simply spawn process, which should call int:attached(Pid) - spawn(Mod, Func, [Pid | Args]), - {noreply, State}; - -%% Getting and setting options -handle_cast({set_auto_attach, false}, State) -> - send_all(subscriber, {auto_attach, false}, State), - {noreply, State#state{auto=false}}; -handle_cast({set_auto_attach, Flags, Function}, State) -> - send_all(subscriber, {auto_attach, {Flags, Function}}, State), - {noreply, State#state{auto={Flags, Function}}}; -handle_cast({set_stack_trace, Flag}, State) -> - send_all(subscriber, {stack_trace, Flag}, State), - {noreply, State#state{stack=Flag}}; - -%% Retrieving information -handle_cast(clear, State) -> - Procs = lists:filter(fun(#proc{status=Status}) -> - Status =/= exit - end, - State#state.procs), - {noreply, State#state{procs=Procs}}; - -%% Breakpoint handling -handle_cast({delete_break, Point}, State) -> - case lists:keymember(Point, 1, State#state.breaks) of - true -> - send_all([subscriber, meta, attached], - {delete_break, Point}, State), - Breaks = lists:keydelete(Point, 1, State#state.breaks), - {noreply, State#state{breaks=Breaks}}; - false -> - {noreply, State} - end; -handle_cast({break_option, Point, Option, Value}, State) -> - case lists:keyfind(Point, 1, State#state.breaks) of - {Point, Options} -> - N = case Option of - status -> 1; - action -> 2; - condition -> 4 - end, - Options2 = list_setelement(N, Options, Value), - send_all([subscriber, meta, attached], - {break_options, {Point, Options2}}, State), - Breaks = lists:keyreplace(Point, 1, State#state.breaks, - {Point, Options2}), - {noreply, State#state{breaks=Breaks}}; - false -> - {noreply, State} - end; -handle_cast(no_break, State) -> - send_all([subscriber, meta, attached], no_break, State), - {noreply, State#state{breaks=[]}}; -handle_cast({no_break, Mod}, State) -> - send_all([subscriber, meta, attached], {no_break, Mod}, State), - Breaks = lists:filter(fun({{M, _L}, _O}) -> - M =/= Mod - end, - State#state.breaks), - {noreply, State#state{breaks=Breaks}}; - -%% From Meta process -handle_cast({set_status, Meta, Status, Info}, State) -> - {true, Proc} = get_proc({meta, Meta}, State#state.procs), - send_all(subscriber, {new_status, Proc#proc.pid, Status, Info}, State), - if - Status =:= break -> - _ = auto_attach(break, State#state.auto, Proc), - ok; - true -> - ok - end, - Proc2 = Proc#proc{status=Status, info=Info}, - {noreply, State#state{procs=lists:keyreplace(Meta, #proc.meta, - State#state.procs, Proc2)}}; -handle_cast({set_exit_info, Meta, ExitInfo}, State) -> - {true, Proc} = get_proc({meta, Meta}, State#state.procs), - Procs = lists:keyreplace(Meta, #proc.meta, State#state.procs, - Proc#proc{exit_info=ExitInfo}), - {noreply,State#state{procs=Procs}}; - -%% Code loading -handle_cast({delete, Mod}, State) -> - - %% Remove the ETS table with information about the module - Db = State#state.db, - case ets:lookup(Db, {Mod, refs}) of - [] -> % Mod is not interpreted - {noreply, State}; - [{{Mod, refs}, ModDbs}] -> - ets:delete(Db, {Mod, refs}), - AllPids = lists:foldl( - fun(ModDb, PidsAcc) -> - [{ModDb, Pids}] = ets:lookup(Db, ModDb), - ets:delete(Db, ModDb), - ets:delete(ModDb), - PidsAcc++Pids - end, - [], - ModDbs), - lists:foreach(fun(Pid) -> - case get_proc({pid, Pid}, - State#state.procs) of - {true, Proc} -> - send(Proc#proc.meta, - {old_code, Mod}); - false -> ignore % pid may have exited - end - end, - AllPids), - - send_all([subscriber,attached], {no_interpret, Mod}, State), - - %% Remove all breakpoints for Mod - handle_cast({no_break, Mod}, State) - end. - -%% Process exits -handle_info({'EXIT',Who,Why}, State) -> - case get_proc({meta, Who}, State#state.procs) of - - %% Exited process is a meta process for exit_info - {true,#proc{status=exit}} -> - {noreply,State}; - - %% Exited process is a meta process - {true,Proc} -> - Pid = Proc#proc.pid, - ExitInfo = Proc#proc.exit_info, - %% Check if someone is attached to the debugged process, - %% if so a new meta process should be started - Meta = case Proc#proc.attpid of - AttPid when is_pid(AttPid) -> - spawn_link(dbg_ieval, exit_info, - [self(),AttPid,Pid,Why,ExitInfo]); - undefined -> - %% Otherwise, auto attach if necessary - _ = auto_attach(exit, State#state.auto, Pid), - Who - end, - send_all(subscriber, {new_status,Pid,exit,Why}, State), - Procs = lists:keyreplace(Who, #proc.meta, State#state.procs, - Proc#proc{meta=Meta, - status=exit, - info=Why}), - {noreply,State#state{procs=Procs}}; - - false -> - case get_proc({attpid, Who}, State#state.procs) of - - %% Exited process is an attached process - {true, Proc} -> - %% If status==exit, then the meta process is a - %% simple meta for a terminated process and can be - %% terminated as well (it is only needed by - %% the attached process) - case Proc#proc.status of - exit -> send(Proc#proc.meta, stop); - _Status -> send(Proc#proc.meta, detached) - end, - Procs = lists:keyreplace(Proc#proc.pid, #proc.pid, - State#state.procs, - Proc#proc{attpid=undefined}), - {noreply, State#state{procs=Procs}}; - - %% Otherwise exited process must be a subscriber - false -> - Subs = lists:delete(Who, State#state.subs), - {noreply, State#state{subs=Subs}} - end - end. - -terminate(_Reason, _State) -> - EbinDir = filename:join(code:lib_dir(debugger), "ebin"), - code:unstick_dir(EbinDir), - ok. - -code_change(_OldVsn, State, _Extra) -> - {ok, State}. - - -%%==================================================================== -%% Internal functions -%%==================================================================== - -auto_attach(Why, Auto, #proc{attpid = Attpid, pid = Pid}) -> - case Attpid of - undefined -> auto_attach(Why, Auto, Pid); - _ when is_pid(Attpid) -> ignore - end; -auto_attach(Why, Auto, Pid) when is_pid(Pid) -> - case Auto of - false -> ignore; - {Flags, {Mod, Func, Args}} -> - case lists:member(Why, Flags) of - true -> - spawn(Mod, Func, [Pid | Args]); - false -> ignore - end - end. - -keyinsert(Tuple1, N, [Tuple2|Tuples]) -> - if - element(N, Tuple1) < element(N, Tuple2) -> - [Tuple1, Tuple2|Tuples]; - true -> - [Tuple2 | keyinsert(Tuple1, N, Tuples)] - end; -keyinsert(Tuple, _N, []) -> - [Tuple]. - -list_setelement(N, L, E) -> list_setelement(1, N, L, E). - -list_setelement(I, I, [_|T], E) -> - [E|T]; -list_setelement(I, N, [H|T], E) -> - [H|list_setelement(I+1, N, T, E)]. - -mapfilter(Fun, [H|T]) -> - case Fun(H) of - ignore -> mapfilter(Fun, T); - H2 -> [H2|mapfilter(Fun, T)] - end; -mapfilter(_Fun, []) -> - []. - -send_all([Type|Types], Msg, State) -> - send_all(Type, Msg, State), - send_all(Types, Msg, State); -send_all([], _Msg, _State) -> ok; - -send_all(subscriber, Msg, State) -> - send_all(State#state.subs, Msg); -send_all(meta, Msg, State) -> - Metas = [Proc#proc.meta || Proc <- State#state.procs], - send_all(Metas, Msg); -send_all(attached, Msg, State) -> - AttPids= mapfilter(fun(Proc) -> - case Proc#proc.attpid of - Pid when is_pid(Pid) -> Pid; - undefined -> ignore - end - end, - State#state.procs), - send_all(AttPids, Msg). - -send_all(Pids, Msg) -> - lists:foreach(fun(Pid) -> send(Pid, Msg) end, Pids). - -send(Pid, Msg) -> - Pid ! {int, Msg}, - ok. - -get_proc({Type, Pid}, Procs) -> - Index = case Type of - pid -> #proc.pid; - meta -> #proc.meta; - attpid -> #proc.attpid - end, - case lists:keyfind(Pid, Index, Procs) of - false -> false; - Proc -> {true, Proc} - end. diff --git a/debugger/erlide_debugger_23/src/dbg_istk.erl b/debugger/erlide_debugger_23/src/dbg_istk.erl deleted file mode 100644 index e89f437..0000000 --- a/debugger/erlide_debugger_23/src/dbg_istk.erl +++ /dev/null @@ -1,270 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2011-2016. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(dbg_istk). --export([init/0,delayed_to_external/0,from_external/1, - push/3,pop/0,pop/1,stack_level/0, - delayed_stacktrace/0,delayed_stacktrace/2, - bindings/1,stack_frame/2,backtrace/2, - in_use_p/2]). - --export([all_frames/0, all_frames/1, all_modules_on_stack/0]). - --include("dbg_ieval.hrl"). - --define(STACK, ?MODULE). - --record(e, - {level, %Level - mfa, %{Mod,Func,Args|Arity}|{Fun,Args} - line, %Line called from - bindings, - lc %Last call (true|false) - }). - -init() -> - init([]). - -delayed_to_external() -> - Stack = get(?STACK), - fun() -> {stack,term_to_binary(Stack)} end. - -from_external({stack,Stk}) -> - put(?STACK, binary_to_term(Stk)). - -init(Stack) -> - put(?STACK, Stack). - -all_frames() -> - all_frames(get(?STACK)). - -all_frames(Stack) -> - [erlide_frame(E) || E <- Stack]. - -erlide_frame(#e{mfa={M, F, As}, line=Wh, bindings=Bs, level=Lvl}) -> - {{M, F, args2arity(As)}, Wh, erl_eval:bindings(Bs), Lvl}; -erlide_frame(#e{mfa={F, As}, line=Wh, bindings=Bs, level=Lvl}) -> - {{F, args2arity(As)}, Wh, erl_eval:bindings(Bs), Lvl}; -erlide_frame(E) -> - E. - -all_modules_on_stack() -> - all_modules_on_stack(get(stack)). - -all_modules_on_stack(Stack) -> - [M || {_X, {{M, _F, _As}, _Wh, _Bs}} <- Stack]. - -args2arity(As) when is_list(As) -> - length(As). - -%% We keep track of a call stack that is used for -%% 1) saving stack frames that can be inspected from an Attached -%% Process GUI (using dbg_icmd:get(Meta, stack_frame, {Dir, SP}) -%% 2) generate an approximation of regular stacktrace -- sent to -%% Debugged when it should raise an exception or evaluate a -%% function (since it might possible raise an exception) -%% -%% How to push depends on the "Stack Trace" option (value saved in -%% process dictionary item 'trace_stack'). -%% all - everything is pushed -%% no_tail - tail recursive push -%% false - nothing is pushed -%% Whenever a function returns, the corresponding call frame is popped. - -push(Bs, #ieval{level=Le,module=Mod,function=Name, - arguments=As,line=Li}=Ieval, Lc) -> - Entry = #e{level=Le,mfa={Mod,Name,As},line=Li,bindings=Bs,lc=Lc}, - case get(trace_stack) of - false -> - Ieval#ieval{level=Le+1}; - no_tail when Lc -> - Ieval; - _ -> % all | no_tail when Lc =:= false - put(?STACK, [Entry|get(?STACK)]), - Ieval#ieval{level=Le+1} - end. - -pop() -> - case get(trace_stack) of - false -> ignore; - _ -> % all | no_tail - case get(?STACK) of - [_Entry|Entries] -> - put(?STACK, Entries); - [] -> - ignore - end - end. - -pop(Le) -> - case get(trace_stack) of - false -> ignore; - _ -> % all | no_tail - put(?STACK, pop(Le, get(?STACK))) - end. - -pop(Level, [#e{level=Le}|Stack]) when Level =< Le -> - pop(Level, Stack); -pop(_Level, Stack) -> - Stack. - -%% stack_level() -> Le -%% stack_level(Stack) -> Le -%% Top call level -stack_level() -> - stack_level(get(?STACK)). - -stack_level([]) -> 1; -stack_level([#e{level=Le}|_]) -> Le. - -%% delayed_stacktrace() -> CreateStacktraceFun -%% delayed_stacktrace(ArgFlag, #ieval{}) -> CreateStacktraceFun -%% ArgFlag = no_args | include_args -%% CreateStacktraceFun = fun(NumberOfEntries) -%% -%% Return a fun that can convert the internal stack format to -%% an imitation of the regular stacktrace. - -delayed_stacktrace() -> - Stack0 = get(?STACK), - fun(NumEntries) -> - Stack = stacktrace(NumEntries, Stack0, []), - [finalize(ArityOnly) || {ArityOnly,_} <- Stack] - end. - -delayed_stacktrace(include_args, Ieval) -> - #ieval{module=Mod,function=Name,arguments=As,line=Li} = Ieval, - Stack0 = [#e{mfa={Mod,Name,As},line=Li}|get(?STACK)], - fun(NumEntries) -> - case stacktrace(NumEntries, Stack0, []) of - [] -> - []; - [{_,WithArgs}|Stack] -> - [finalize(WithArgs) | - [finalize(ArityOnly) || {ArityOnly,_} <- Stack]] - end - end; -delayed_stacktrace(no_args, Ieval) -> - #ieval{module=Mod,function=Name,arguments=As,line=Li} = Ieval, - Stack0 = [#e{mfa={Mod,Name,As},line=Li}|get(?STACK)], - fun(NumEntries) -> - Stack = stacktrace(NumEntries, Stack0, []), - [finalize(ArityOnly) || {ArityOnly,_} <- Stack] - end. - -stacktrace(N, [#e{lc=true}|T], Acc) -> - stacktrace(N, T, Acc); -stacktrace(N, [E|T], []) -> - stacktrace(N-1, T, [normalize(E)]); -stacktrace(N, [E|T], [{P,_}|_]=Acc) when N > 0 -> - case normalize(E) of - {P,_} -> - stacktrace(N, T, Acc); - New -> - stacktrace(N-1, T, [New|Acc]) - end; -stacktrace(_, _, Acc) -> - lists:reverse(Acc). - -normalize(#e{mfa={M,Fun,As},line=Li}) when is_function(Fun) -> - Loc = {M,Li}, - {{Fun,length(As),Loc},{Fun,As,Loc}}; -normalize(#e{mfa={M,F,As},line=Li}) -> - Loc = {M,Li}, - {{M,F,length(As),Loc},{M,F,As,Loc}}. - -finalize({M,F,A,Loc}) -> {M,F,A,line(Loc)}; -finalize({Fun,A,Loc}) -> {Fun,A,line(Loc)}. - -line({Mod,Line}) when Line > 0 -> - [{file,atom_to_list(Mod)++".erl"},{line,Line}]; -line(_) -> []. - -%% bindings(SP) -> Bs -%% SP = Le % stack pointer -%% Return the bindings for the specified call level -bindings(SP) -> - bindings(SP, get(?STACK)). - -bindings(SP, [#e{level=SP,bindings=Bs}|_]) -> - Bs; -bindings(SP, [_Entry|Entries]) -> - bindings(SP, Entries); -bindings(_SP, []) -> - erl_eval:new_bindings(). - -%% stack_frame(Dir, SP) -> {Le, Where, Bs} | top | bottom -%% Dir = up | down -%% Where = {Cm, Li} -%% Cm = Module | undefined % module -%% Li = int() | -1 % line number -%% Bs = bindings() -%% Return stack frame info one step up/down from given stack pointer -%% up = to lower call levels -%% down = to higher call levels -stack_frame(up, SP) -> - stack_frame(SP, up, get(?STACK)); -stack_frame(down, SP) -> - stack_frame(SP, down, lists:reverse(get(?STACK))). - -stack_frame(SP, up, [#e{level=Le,mfa={Cm,_,_},line=Li,bindings=Bs}|_]) - when Le < SP -> - {Le,{Cm,Li},Bs}; -stack_frame(SP, down, [#e{level=Le,mfa={Cm,_,_},line=Li,bindings=Bs}|_]) - when Le > SP -> - {Le,{Cm,Li},Bs}; -stack_frame(SP, Dir, [#e{level=SP}|Stack]) -> - case Stack of - [#e{level=Le,mfa={Cm,_,_},line=Li,bindings=Bs}|_] -> - {Le,{Cm,Li},Bs}; - [] when Dir =:= up -> - top; - [] when Dir =:= down -> - bottom - end; -stack_frame(SP, Dir, [_Entry|Stack]) -> - stack_frame(SP, Dir, Stack). - -%% backtrace(HowMany) -> Backtrace -%% HowMany = all | int() -%% Backtrace = {Le, MFA} -%% Return all/the last N called functions, in reversed call order -backtrace(HowMany, Ieval) -> - #ieval{level=Level,module=Mod,function=Name,arguments=As} = Ieval, - Stack0 = [#e{level=Level,mfa={Mod,Name,As}}|get(?STACK)], - Stack = case HowMany of - all -> Stack0; - N -> lists:sublist(Stack0, N) - end, - [{Le,MFA} || #e{level=Le,mfa=MFA} <- Stack]. - -%%-------------------------------------------------------------------- -%% in_use_p(Mod, Cm) -> boolean() -%% Mod = Cm = atom() -%% Returns true if Mod is found on the stack, otherwise false. -%%-------------------------------------------------------------------- -in_use_p(Mod, Mod) -> true; -in_use_p(Mod, _Cm) -> - case get(trace_stack) of - false -> true; - _ -> % all | no_tail - lists:any(fun(#e{mfa={M,_,_}}) when M =:= Mod -> true; - (_) -> false - end, get(?STACK)) - end. diff --git a/debugger/erlide_debugger_23/src/erlide_debugger_23.app.src b/debugger/erlide_debugger_23/src/erlide_debugger_23.app.src deleted file mode 100644 index f8e8f31..0000000 --- a/debugger/erlide_debugger_23/src/erlide_debugger_23.app.src +++ /dev/null @@ -1,10 +0,0 @@ -{application, erlide_debugger_23, - [ - {description, "erlide_debugger_23"}, - {vsn, "5.0"}, - {erlide_context, debugger}, - {registered, []}, - {applications, [kernel, stdlib]}, - {env, []} - ] -}. diff --git a/debugger/erlide_debugger_23/src/int.erl b/debugger/erlide_debugger_23/src/int.erl deleted file mode 100644 index bb39d5f..0000000 --- a/debugger/erlide_debugger_23/src/int.erl +++ /dev/null @@ -1,751 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2017. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(int). - -%% External exports --export([i/1, i/2, ni/1, ni/2, n/1, nn/1, interpreted/0, file/1, - interpretable/1]). --export([auto_attach/0, auto_attach/1, auto_attach/2, - stack_trace/0, stack_trace/1]). --export([break/2, delete_break/2, break_in/3, del_break_in/3, - no_break/0, no_break/1, - disable_break/2, enable_break/2, - action_at_break/3, test_at_break/3, get_binding/2, - all_breaks/0, all_breaks/1]). --export([snapshot/0, clear/0]). --export([continue/1, continue/3]). - -%% External exports only to be used by Debugger --export([start/0, stop/0, subscribe/0]). --export([attach/2, step/1, next/1, finish/1]). - -%% External exports only to be used by an attached process --export([attached/1, meta/2, meta/3, contents/2, functions/1]). - -%% External export only to be used by error_handler --export([eval/3]). - --include_lib("kernel/include/file.hrl"). - -%%==Erlang Interpreter================================================ -%% -%% int -%% --- -%% Interface module. -%% -%% i -%% - -%% Interface module to int, retained for backwards compatibility only. -%% -%% dbg_debugged -%% ------------ -%% Contains the message loops for a debugged process and is the main -%% entry point from the breakpoint handler in the error_handler module -%% (via the int module). -%% -%% When a process is debugged, most code is executed in another -%% process, called the meta process. When the meta process is -%% interpreting code, the process being debugged just waits in a -%% receive loop in dbg_debugged. However the debugged process itself -%% calls any BIFs that must execute in the correct process (such as -%% link/1 and spawn_link/1), and external code which is not -%% interpreted. -%% -%% dbg_icmd, dbg_ieval -%% ------------------- -%% Code for the meta process. -%% -%% dbg_iserver -%% ----------- -%% Interpreter main process, keeping and distributing information -%% about interpreted modules and debugged processes. -%% -%% dbg_idb -%% ------- -%% ETS wrapper, allowing transparent access to tables at a remote node. -%% -%% dbg_iload -%% --------- -%% Code for interpreting a module. -%%==================================================================== - -%%==================================================================== -%% External exports -%%==================================================================== - -%%-------------------------------------------------------------------- -%% i(AbsMods) -> {module,Mod} | error | ok -%% ni(AbsMods) -> {module,Mod} | error | ok -%% AbsMods = AbsMod | [AbsMod] -%% AbsMod = atom() | string() -%% Mod = atom() -%% Options = term() ignored -%%-------------------------------------------------------------------- -i(AbsMods) -> i2(AbsMods, local, ok). -i(AbsMods, _Options) -> i2(AbsMods, local, ok). -ni(AbsMods) -> i2(AbsMods, distributed, ok). -ni(AbsMods, _Options) -> i2(AbsMods, distributed, ok). - -i2([AbsMod|AbsMods], Dist, Acc) - when is_atom(AbsMod); is_list(AbsMod); is_tuple(AbsMod) -> - Res = int_mod(AbsMod, Dist), - case Acc of - error -> - i2(AbsMods, Dist, Acc); - _ -> - i2(AbsMods, Dist, Res) - end; -i2([], _Dist, Acc) -> - Acc; -i2(AbsMod, Dist, _Acc) when is_atom(AbsMod); is_list(AbsMod); is_tuple(AbsMod) -> - int_mod(AbsMod, Dist). - -%%-------------------------------------------------------------------- -%% n(AbsMods) -> ok -%% nn(AbsMods) -> ok -%%-------------------------------------------------------------------- -n(AbsMods) -> n2(AbsMods, local). -nn(AbsMods) -> n2(AbsMods, distributed). - -n2([AbsMod|AbsMods], Dist) when is_atom(AbsMod); is_list(AbsMod) -> - del_mod(AbsMod, Dist), - n2(AbsMods, Dist); -n2([AbsMod], Dist) when is_atom(AbsMod); is_list(AbsMod) -> - del_mod(AbsMod, Dist); -n2([], _Dist) -> - ok; -n2(AbsMod, Dist) when is_atom(AbsMod); is_list(AbsMod) -> - del_mod(AbsMod, Dist). - -%%-------------------------------------------------------------------- -%% interpreted() -> [Mod] -%%-------------------------------------------------------------------- -interpreted() -> - dbg_iserver:safe_call(all_interpreted). - -%%-------------------------------------------------------------------- -%% file(Mod) -> File | {error, not_loaded} -%% Mod = atom() -%% File = string() -%%-------------------------------------------------------------------- -file(Mod) when is_atom(Mod) -> - dbg_iserver:safe_call({file, Mod}). - -%%-------------------------------------------------------------------- -%% interpretable(AbsMod) -> true | {error, Reason} -%% AbsMod = Mod | File -%% Reason = no_src | no_beam | no_debug_info | badarg | {app, App} -%%-------------------------------------------------------------------- -interpretable(AbsMod) -> - case check(AbsMod) of - {ok, _Res} -> true; - Error -> Error - end. - -%%-------------------------------------------------------------------- -%% auto_attach() -> false | {Flags, Function} -%% auto_attach(false) -%% auto_attach(false|Flags, Function) -%% Flags = Flag | [Flag] -%% Flag = init | break | exit -%% Function = {Mod, Func} | {Mod, Func, Args} -%% Will result in calling: -%% spawn(Mod, Func, [Dist, Pid, Meta | Args]) (living process) or -%% spawn(Mod, Func, [Dist, Pid, Reason, Info | Args]) (dead process) -%%-------------------------------------------------------------------- -auto_attach() -> - dbg_iserver:safe_call(get_auto_attach). - -auto_attach(false) -> - dbg_iserver:safe_cast({set_auto_attach, false}). - -auto_attach([], _Function) -> - auto_attach(false); -auto_attach(Flags, {Mod, Func}) -> - auto_attach(Flags, {Mod, Func, []}); -auto_attach(Flags, {Mod, Func, Args}) when is_atom(Mod),is_atom(Func),is_list(Args) -> - check_flags(Flags), - dbg_iserver:safe_cast({set_auto_attach, Flags, {Mod, Func, Args}}). - -check_flags([init|Flags]) -> check_flags(Flags); -check_flags([break|Flags]) -> check_flags(Flags); -check_flags([exit|Flags]) -> check_flags(Flags); -check_flags([]) -> true. - -%%-------------------------------------------------------------------- -%% stack_trace() -> Flag -%% stack_trace(Flag) -%% Flag = all | true | no_tail | false -%%-------------------------------------------------------------------- -stack_trace() -> - dbg_iserver:safe_call(get_stack_trace). - -stack_trace(true) -> - stack_trace(all); -stack_trace(Flag) -> - check_flag(Flag), - dbg_iserver:safe_cast({set_stack_trace, Flag}). - -check_flag(all) -> true; -check_flag(no_tail) -> true; -check_flag(false) -> true. - -%%-------------------------------------------------------------------- -%% break(Mod, Line) -> ok | {error, break_exists} -%% delete_break(Mod, Line) -> ok -%% break_in(Mod, Func, Arity) -> ok | {error, function_not_found} -%% del_break_in(Mod, Function, Arity) -> ok | {error, function_not_found} -%% no_break() -%% no_break(Mod) -%% disable_break(Mod, Line) -> ok -%% enable_break(Mod, Line) -> ok -%% action_at_break(Mod, Line, Action) -> ok -%% test_at_break(Mod, Line, Function) -> ok -%% get_binding(Var, Bindings) -> {value, Value} | unbound -%% all_breaks() -> [Break] -%% all_breaks(Mod) -> [Break] -%% Mod = atom() -%% Line = integer() -%% Func = atom() function name -%% Arity = integer() -%% Action = enable | disable | delete -%% Function = {Mod, Func} must have arity 1 (Bindings) -%% Var = atom() -%% Bindings = Value = term() -%% Break = {Point, Options} -%% Point = {Mod, Line} -%% Options = [Status, Action, null, Cond] -%% Status = active | inactive -%% Cond = null | Function -%%-------------------------------------------------------------------- -break(Mod, Line) when is_atom(Mod), is_integer(Line) -> - dbg_iserver:safe_call({new_break, {Mod, Line}, - [active, enable, null, null]}). - -delete_break(Mod, Line) when is_atom(Mod), is_integer(Line) -> - dbg_iserver:safe_cast({delete_break, {Mod, Line}}). - -break_in(Mod, Func, Arity) when is_atom(Mod), is_atom(Func), is_integer(Arity) -> - case dbg_iserver:safe_call({is_interpreted, Mod, Func, Arity}) of - {true, Clauses} -> - Lines = first_lines(Clauses), - lists:foreach(fun(Line) -> break(Mod, Line) end, Lines); - false -> - {error, function_not_found} - end. - -del_break_in(Mod, Func, Arity) when is_atom(Mod), is_atom(Func), is_integer(Arity) -> - case dbg_iserver:safe_call({is_interpreted, Mod, Func, Arity}) of - {true, Clauses} -> - Lines = first_lines(Clauses), - lists:foreach(fun(Line) -> delete_break(Mod, Line) end, - Lines); - false -> - {error, function_not_found} - end. - -first_lines(Clauses) -> - [first_line(Clause) || Clause <- Clauses]. - -first_line({clause,_L,_Vars,_,Exprs}) -> - first_line(Exprs); -%% Common Test adaptation -first_line([{call_remote,0,ct_line,line,_As}|Exprs]) -> - first_line(Exprs); -first_line([Expr|_Exprs]) -> % Expr = {Op, Line, ..varying no of args..} - element(2, Expr). - -no_break() -> - dbg_iserver:safe_cast(no_break). - -no_break(Mod) when is_atom(Mod) -> - dbg_iserver:safe_cast({no_break, Mod}). - -disable_break(Mod, Line) when is_atom(Mod), is_integer(Line) -> - dbg_iserver:safe_cast({break_option, {Mod, Line}, status, inactive}). - -enable_break(Mod, Line) when is_atom(Mod), is_integer(Line) -> - dbg_iserver:safe_cast({break_option, {Mod, Line}, status, active}). - -action_at_break(Mod, Line, Action) when is_atom(Mod), is_integer(Line) -> - check_action(Action), - dbg_iserver:safe_cast({break_option, {Mod, Line}, action, Action}). - -check_action(enable) -> true; -check_action(disable) -> true; -check_action(delete) -> true. - -test_at_break(Mod, Line, Function) when is_atom(Mod), is_integer(Line) -> - check_function(Function), - dbg_iserver:safe_cast({break_option, {Mod, Line}, condition, Function}). - -check_function({Mod, Func}) when is_atom(Mod), is_atom(Func) -> true. - -get_binding(Var, Bs) -> - dbg_icmd:get_binding(Var, Bs). - -all_breaks() -> - dbg_iserver:safe_call(all_breaks). -all_breaks(Mod) when is_atom(Mod) -> - dbg_iserver:safe_call({all_breaks, Mod}). - -%%-------------------------------------------------------------------- -%% snapshot() -> [{Pid, Init, Status, Info}] -%% Pid = pid() -%% Init = atom() First interpreted function -%% Status = idle | running | waiting | break | exit -%% Info = {} | {Mod, Line} | ExitReason -%% Mod = atom() -%% Line = integer() -%% ExitReason = term() -%%-------------------------------------------------------------------- -snapshot() -> - dbg_iserver:safe_call(snapshot). - -%%-------------------------------------------------------------------- -%% clear() -%%-------------------------------------------------------------------- -clear() -> - dbg_iserver:safe_cast(clear). - -%%-------------------------------------------------------------------- -%% continue(Pid) -> ok | {error, not_interpreted} -%% continue(X, Y, Z) -> ok | {error, not_interpreted} -%%-------------------------------------------------------------------- -continue(Pid) when is_pid(Pid) -> - case dbg_iserver:safe_call({get_meta, Pid}) of - {ok, Meta} when is_pid(Meta) -> - dbg_icmd:continue(Meta), - ok; - Error -> - Error - end. - -continue(X, Y, Z) when is_integer(X), is_integer(Y), is_integer(Z) -> - continue(c:pid(X, Y, Z)). - - -%%==================================================================== -%% External exports only to be used by Debugger -%%==================================================================== - -%%-------------------------------------------------------------------- -%% start() -%% stop() -%% Functions for starting and stopping dbg_iserver explicitly. -%%-------------------------------------------------------------------- -start() -> dbg_iserver:start(). -stop() -> - lists:foreach( - fun(Mod) -> - _ = everywhere(distributed, - fun() -> - erts_debug:breakpoint({Mod,'_','_'}, false) - end) - end, - interpreted()), - dbg_iserver:stop(). - -%%-------------------------------------------------------------------- -%% subscribe() -%% Subscribe to information from dbg_iserver. The process calling this -%% function will receive the following messages: -%% {int, {interpret, Mod}} -%% {int, {no_interpret, Mod}} -%% {int, {new_process, {Pid, Function, Status, Info}}} -%% {int, {new_status, Pid, Status, Info}} -%% {int, {new_break, {Point, Options}}} -%% {int, {delete_break, Point}} -%% {int, {break_options, {Point, Options}}} -%% {int, no_break} -%% {int, {no_break, Mod}} -%% {int, {auto_attach, false|{Flags, Function}}} -%% {int, {stack_trace, Flag}} -%%-------------------------------------------------------------------- -subscribe() -> dbg_iserver:cast({subscribe, self()}). - -%%-------------------------------------------------------------------- -%% attach(Pid, Function) -%% Pid = pid() -%% Function = {Mod, Func} | {Mod, Func, Args} (see auto_attach/2) -%% Tell dbg_iserver to attach to Pid using Function. Will result in: -%% spawn(Mod, Func, [Pid, Status | Args]) -%%-------------------------------------------------------------------- -attach(Pid, {Mod, Func}) -> - attach(Pid, {Mod, Func, []}); -attach(Pid, Function) -> - dbg_iserver:cast({attach, Pid, Function}). - -%%-------------------------------------------------------------------- -%% step(Pid) -%% next(Pid) -%% (continue(Pid)) -%% finish(Pid) -%%-------------------------------------------------------------------- -step(Pid) -> - {ok, Meta} = dbg_iserver:call({get_meta, Pid}), - dbg_icmd:step(Meta). -next(Pid) -> - {ok, Meta} = dbg_iserver:call({get_meta, Pid}), - dbg_icmd:next(Meta). -finish(Pid) -> - {ok, Meta} = dbg_iserver:call({get_meta, Pid}), - dbg_icmd:finish(Meta). - - -%%==================================================================== -%% External exports only to be used by an attached process -%%==================================================================== - -%%-------------------------------------------------------------------- -%% attached(Pid) -> {ok, Meta} | error -%% Pid = Meta = pid() -%% Tell dbg_iserver that I have attached to Pid. dbg_iserver informs -%% the meta process and returns its pid. dbg_iserver may also refuse, -%% if there already is a process attached to Pid. -%%-------------------------------------------------------------------- -attached(Pid) -> - dbg_iserver:call({attached, self(), Pid}). - -%%-------------------------------------------------------------------- -%% meta(Meta, Cmd) -%% Meta = pid() -%% Cmd = step | next | continue | finish | skip | timeout | stop -%% Cmd = messages => [Message] -%% meta(Meta, Cmd, Arg) -%% Cmd = trace, Arg = bool() -%% Cmd = stack_trace Arg = all | notail | false -%% Cmd = stack_frame Arg = {up|down, Sp} -%% => {Sp, Mod, Line} | top | bottom -%% Cmd = backtrace Arg = integer() -%% => {Sp, Mod, {Func, Arity}, Line} -%% Cmd = eval Arg = {Cm, Cmd} | {Cm, Cmd, Sp} -%%-------------------------------------------------------------------- -meta(Meta, step) -> dbg_icmd:step(Meta); -meta(Meta, next) -> dbg_icmd:next(Meta); -meta(Meta, continue) -> dbg_icmd:continue(Meta); -meta(Meta, finish) -> dbg_icmd:finish(Meta); -meta(Meta, skip) -> dbg_icmd:skip(Meta); -meta(Meta, timeout) -> dbg_icmd:timeout(Meta); -meta(Meta, stop) -> dbg_icmd:stop(Meta); -meta(Meta, messages) -> dbg_icmd:get(Meta, messages, null). - -meta(Meta, trace, Trace) -> dbg_icmd:set(Meta, trace, Trace); -meta(Meta, stack_trace, Flag) -> dbg_icmd:set(Meta, stack_trace, Flag); -meta(Meta, bindings, Stack) -> dbg_icmd:get(Meta, bindings, Stack); -meta(Meta, stack_frame, Arg) -> dbg_icmd:get(Meta, stack_frame, Arg); -meta(Meta, backtrace, N) -> dbg_icmd:get(Meta, backtrace, N); -meta(Meta, eval, Arg) -> dbg_icmd:eval(Meta, Arg). - -%%-------------------------------------------------------------------- -%% contents(Mod, Pid) -> string() -%% Mod = atom() -%% Pid = pid() | any -%% Return the contents of an interpreted module. -%%-------------------------------------------------------------------- -contents(Mod, Pid) -> - {ok, Bin} = dbg_iserver:call({contents, Mod, Pid}), - binary_to_list(Bin). - -%%-------------------------------------------------------------------- -%% functions(Mod) -> [[Name, Arity]] -%% Mod = Name = atom() -%% Arity = integer() -%%-------------------------------------------------------------------- -functions(Mod) -> - [F || F <- dbg_iserver:call({functions, Mod}), functions_1(F)]. - -functions_1([module_info, _Arity]) -> false; -functions_1(_Func) -> true. - - -%%==================================================================== -%% External exports only to be used by error_handler -%%==================================================================== - -eval(Mod, Func, Args) -> - dbg_debugged:eval(Mod, Func, Args). - - -%%==================================================================== -%% Internal functions -%%==================================================================== - -%%--Interpreting modules---------------------------------------------- - -int_mod({Mod, Src, Beam, BeamBin}, Dist) - when is_atom(Mod), is_list(Src), is_list(Beam), is_binary(BeamBin) -> - try - case is_file(Src) of - true -> - check_application(Src), - case check_beam(BeamBin) of - {ok, Exp, Abst, _BeamBin} -> - load({Mod, Src, Beam, BeamBin, Exp, Abst}, Dist); - error -> - error - end; - false -> - error - end - catch - throw:Reason -> - Reason - end; -int_mod(AbsMod, Dist) when is_atom(AbsMod); is_list(AbsMod) -> - case check(AbsMod) of - {ok, Res} -> - load(Res, Dist); - {error, {app, App}} -> - io:format("** Cannot interpret ~p module: ~p~n", - [App, AbsMod]), - error; - _Error -> - io:format("** Invalid beam file or no abstract code: ~tp\n", - [AbsMod]), - error - end. - -check(Mod) when is_atom(Mod) -> catch check_module(Mod); -check(File) when is_list(File) -> catch check_file(File). - -load({Mod, Src, Beam, BeamBin, Exp, Abst}, Dist) -> - _ = everywhere(Dist, - fun() -> - code:purge(Mod), - erts_debug:breakpoint({Mod,'_','_'}, false), - {module,Mod} = code:load_binary(Mod, Beam, BeamBin) - end), - case erl_prim_loader:get_file(filename:absname(Src)) of - {ok, SrcBin, _} -> - MD5 = code:module_md5(BeamBin), - SrcBin1 = unicode:characters_to_binary(SrcBin, enc(SrcBin)), - true = is_binary(SrcBin1), - Bin = term_to_binary({interpreter_module,Exp,Abst,SrcBin1,MD5}), - {module, Mod} = dbg_iserver:safe_call({load, Mod, Src, Bin}), - _ = everywhere(Dist, - fun() -> - true = erts_debug:breakpoint({Mod,'_','_'}, true) > 0 - end), - {module, Mod}; - error -> - error - end. - -check_module(Mod) -> - case code:which(Mod) of - Beam when is_list(Beam) -> - case find_src(Mod, Beam) of - Src when is_list(Src) -> - check_application(Src), - case check_beam(Beam) of - {ok, Exp, Abst, BeamBin} -> - {ok, {Mod, Src, Beam, BeamBin, Exp, Abst}}; - error -> - {error, no_debug_info} - end; - error -> - {error, no_src} - end; - _ -> - {error, badarg} - end. - -check_file(Name0) -> - Src = - case is_file(Name0) of - true -> - Name0; - false -> - Name = Name0 ++ ".erl", - case is_file(Name) of - true -> Name; - false -> error - end - end, - if - is_list(Src) -> - check_application(Src), - Mod = scan_module_name(Src), - case find_beam(Mod, Src) of - Beam when is_list(Beam) -> - case check_beam(Beam) of - {ok, Exp, Abst, BeamBin} -> - {ok, {Mod, Src, Beam, BeamBin, Exp, Abst}}; - error -> - {error, no_debug_info} - end; - error -> - {error, no_beam} - end; - true -> - {error, badarg} - end. - -%% Try to avoid interpreting a kernel, stdlib, gs or debugger module. -check_application(Src) -> - case lists:reverse(filename:split(filename:absname(Src))) of - [_Mod,"src",AppS|_] -> - check_application2(AppS); - _ -> ok - end. -check_application2("kernel-"++_) -> throw({error,{app,kernel}}); -check_application2("stdlib-"++_) -> throw({error,{app,stdlib}}); -check_application2("erts-"++_) -> throw({error,{app,erts}}); -check_application2("gs-"++_) -> throw({error,{app,gs}}); -check_application2("debugger-"++_) -> throw({error,{app,debugger}}); -check_application2(_) -> ok. - -find_src(Mod, Beam) -> - Src0 = filename:rootname(Beam) ++ ".erl", - case is_file(Src0) of - true -> Src0; - false -> - EbinDir = filename:dirname(Beam), - Src = filename:join([filename:dirname(EbinDir), "src", - filename:basename(Src0)]), - case is_file(Src) of - true -> Src; - false -> find_src_from_module(Mod) - end - end. - -find_src_from_module(Mod) -> - Compile = Mod:module_info(compile), - case lists:keyfind(source, 1, Compile) of - {source, Src} -> - case is_file(Src) of - true -> Src; - false -> error - end; - false -> - error - end. - -find_beam(Mod, Src) -> - SrcDir = filename:dirname(Src), - BeamFile = atom_to_list(Mod) ++ code:objfile_extension(), - File = filename:join(SrcDir, BeamFile), - case is_file(File) of - true -> File; - false -> find_beam_1(BeamFile, SrcDir) - end. - -find_beam_1(BeamFile, SrcDir) -> - RootDir = filename:dirname(SrcDir), - EbinDir = filename:join(RootDir, "ebin"), - CodePath = [EbinDir | code:get_path()], - lists:foldl(fun(_, Beam) when is_list(Beam) -> Beam; - (Dir, error) -> - File = filename:join(Dir, BeamFile), - case is_file(File) of - true -> File; - false -> error - end - end, - error, - CodePath). - -check_beam(BeamBin) when is_binary(BeamBin) -> - case beam_lib:chunks(BeamBin, [abstract_code,exports]) of - {ok,{_Mod,[{abstract_code,no_abstract_code}|_]}} -> - error; - {ok,{_Mod,[{abstract_code,Abst},{exports,Exp}]}} -> - {ok,Exp,Abst, BeamBin}; - _ -> - error - end; -check_beam(Beam) when is_list(Beam) -> - {ok, Bin, _FullPath} = erl_prim_loader:get_file(filename:absname(Beam)), - check_beam(Bin). - -is_file(Name) -> - filelib:is_regular(filename:absname(Name), erl_prim_loader). - -everywhere(distributed, Fun) -> - case is_alive() of - true -> rpc:multicall(erlang, apply, [Fun,[]]); - false -> Fun() - end; -everywhere(local, Fun) -> - Fun(). - -scan_module_name(File) -> - try - {ok, Bin, _FullPath} = - erl_prim_loader:get_file(filename:absname(File)), - scan_module_name_1([], <<>>, Bin, enc(Bin)) - catch - _:_ -> - throw({error, no_beam}) - end. - -scan_module_name_1(Cont0, B0, Bin0, Enc) -> - N = min(100, byte_size(Bin0)), - {Bin1, Bin} = erlang:split_binary(Bin0, N), - {Chars, B1} = - case unicode:characters_to_list(list_to_binary([B0, Bin1]), Enc) of - {incomplete, List, Binary} -> - {List, Binary}; - List when is_list(List), List =/= [] -> - {List, <<>>} - end, - scan_module_name_2(Cont0, Chars, B1, Bin, Enc). - -scan_module_name_2(Cont0, Chars, B1, Bin, Enc) -> - case erl_scan:tokens(Cont0, Chars, _AnyLine = 1) of - {done, {ok, Ts, _}, Rest} -> - scan_module_name_3(Ts, Rest, B1, Bin, Enc); - {more, Cont} -> - scan_module_name_1(Cont, B1, Bin, Enc) - end. - -scan_module_name_3([{'-',_},{atom,_,module},{'(',_} | _]=Ts, - _Chars, _B1, _Bin, _Enc) -> - scan_module_name_4(Ts); -scan_module_name_3([{'-',_},{atom,_,_} | _], Chars, B1, Bin, Enc) -> - scan_module_name_2("", Chars, B1, Bin, Enc). - -scan_module_name_4(Ts) -> - {ok, {attribute,_,module,M}} = erl_parse:parse_form(Ts), - true = is_atom(M), - M. - -enc(Bin) -> - case epp:read_encoding_from_binary(Bin) of - none -> epp:default_encoding(); - Encoding -> Encoding - end. - -%%--Stop interpreting modules----------------------------------------- - -del_mod(AbsMod, Dist) -> - Mod = if - is_atom(AbsMod) -> AbsMod; - is_list(AbsMod) -> - list_to_atom(filename:basename(AbsMod,".erl")) - end, - dbg_iserver:safe_cast({delete, Mod}), - _ = everywhere(Dist, - fun() -> - erts_debug:breakpoint({Mod,'_','_'}, false), - erlang:yield() - end), - ok. diff --git a/debugger/erlide_debugger_24/build b/debugger/erlide_debugger_24/build deleted file mode 100755 index 3ad6e9e..0000000 --- a/debugger/erlide_debugger_24/build +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -source ../../build_utils.sh - -dir=`pwd` -prj=`basename $dir` - -build_project ../../rebar3 $prj 24 "$@" diff --git a/debugger/erlide_debugger_24/include/.keep b/debugger/erlide_debugger_24/include/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/debugger/erlide_debugger_24/priv/.keep b/debugger/erlide_debugger_24/priv/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/debugger/erlide_debugger_24/rebar.config b/debugger/erlide_debugger_24/rebar.config deleted file mode 100644 index a5d5fcc..0000000 --- a/debugger/erlide_debugger_24/rebar.config +++ /dev/null @@ -1,24 +0,0 @@ -{require_otp_vsn, "24.*"}. - -{plugins, []}. - -{erl_opts, []}. -{edoc_opts,[{todo,true}]}. - -{eunit_opts, [verbose, {report,{eunit_surefire,[{dir,"."}]}}]}. - -{cover_export_enabled, true}. -{cover_enabled, false}. -{cover_print_enable, true}. - -{covertool_eunit, {".eunit/cover.coverdata", "eunit.coverage.xml"}}. -{covertool_prefix_len, 0}. - -{xref_checks,[ - undefined_function_calls, - undefined_functions, - locals_not_used, - %exports_not_used, - deprecated_function_calls, - deprecated_functions - ]}. diff --git a/debugger/erlide_debugger_24/rebar.lock b/debugger/erlide_debugger_24/rebar.lock deleted file mode 100644 index 57afcca..0000000 --- a/debugger/erlide_debugger_24/rebar.lock +++ /dev/null @@ -1 +0,0 @@ -[]. diff --git a/debugger/erlide_debugger_24/src/dbg_debugged.erl b/debugger/erlide_debugger_24/src/dbg_debugged.erl deleted file mode 100644 index 5296b8d..0000000 --- a/debugger/erlide_debugger_24/src/dbg_debugged.erl +++ /dev/null @@ -1,101 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2018. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% --module(dbg_debugged). - -%% External exports --export([eval/3]). - -%%==================================================================== -%% External exports -%%==================================================================== - -%%-------------------------------------------------------------------- -%% eval(Mod, Func, Args) -> Value -%% Main entry point from external (non-interpreted) code. -%% Called via the error handler. -%%-------------------------------------------------------------------- -eval(Mod, Func, Args) -> - Meta = dbg_ieval:eval(Mod, Func, Args), - Mref = erlang:monitor(process, Meta), - msg_loop(Meta, Mref). - -%%==================================================================== -%% Internal functions -%%==================================================================== - -msg_loop(Meta, Mref) -> - receive - - %% Evaluated function has returned a value - {sys, Meta, {ready, Val}} -> - erlang:demonitor(Mref, [flush]), - case Val of - {dbg_apply,M,F,A} -> - apply(M, F, A); - _ -> - Val - end; - - %% Evaluated function raised an (uncaught) exception - {sys, Meta, {exception,{Class,Reason,Stacktrace}}} -> - erlang:demonitor(Mref, [flush]), - - %% ...raise the same exception - erlang:error(erlang:raise(Class, Reason, Stacktrace), - [Class,Reason,Stacktrace]); - - %% Meta is evaluating a receive, must be done within context - %% of real (=this) process - {sys, Meta, {'receive',Msg}} -> - receive Msg -> - Meta ! {self(), rec_acked}, - ok - end, - msg_loop(Meta, Mref); - - %% Meta needs something evaluated within context of real process - {sys, Meta, {command,Command}} -> - Reply = handle_command(Command), - Meta ! {sys, self(), Reply}, - msg_loop(Meta, Mref); - - %% Meta has terminated - %% Must be due to int:stop() (or -heaven forbid- a debugger bug) - {'DOWN', Mref, _, _, Reason} -> - {interpreter_terminated, Reason} - end. - -handle_command(Command) -> - try - reply(Command) - catch Class:Reason:Stacktrace -> - {exception,{Class,Reason,stacktrace_f(Stacktrace)}} - end. - -reply({apply,M,F,As}) -> - {value, erlang:apply(M,F,As)}; -reply({eval,Expr,Bs}) -> - %% Bindings is an orddict (sort them) - erl_eval:expr(Expr, lists:sort(Bs)). % {value, Value, Bs2} - -%% Fix stacktrace - keep all above call to this module. -%% -stacktrace_f([]) -> []; -stacktrace_f([{?MODULE,_,_,_}|_]) -> []; -stacktrace_f([F|S]) -> [F|stacktrace_f(S)]. diff --git a/debugger/erlide_debugger_24/src/dbg_icmd.erl b/debugger/erlide_debugger_24/src/dbg_icmd.erl deleted file mode 100644 index b3e06c4..0000000 --- a/debugger/erlide_debugger_24/src/dbg_icmd.erl +++ /dev/null @@ -1,518 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2018. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(dbg_icmd). - -%% Internal command receiver/handler --export([cmd/3]). - -%% User control of process execution and settings --export([step/1, next/1, continue/1, finish/1, skip/1, timeout/1, - stop/1]). --export([eval/2]). --export([set_variable_value/4]). --export([set/3, get/3]). --export([handle_msg/4]). - -%% Library functions for attached process handling --export([tell_attached/1]). - -%% get_binding/2 --export([get_binding/2]). - --include("dbg_ieval.hrl"). - -%%==================================================================== -%% Internal command receiver/handler -%%==================================================================== - -%%-------------------------------------------------------------------- -%% cmd(Expr, Bs, Ieval) -> {skip, Bs} | Bs -%% This function is called from dbg_ieval before evaluating any -%% expression to give the user the chance to inspect variables etc. -%% get(next_break) => break | running -%% | Le -%% specifies if the process should break. -%%-------------------------------------------------------------------- - -%% Common Test adaptation -cmd({call_remote,0,ct_line,line,_As}, Bs, _Ieval) -> - Bs; - -cmd(Expr, Bs, Ieval) -> - cmd(Expr, Bs, get(next_break), Ieval). - -%% Evaluation should break -cmd(Expr, Bs, break, Ieval) -> - break(Expr, Bs, Ieval); -%% Evaluation should continue, unless there is a breakpoint at -%% the current line -cmd(Expr, Bs, running, #ieval{level=Le,module=M}=Ieval) -> - Line = element(2, Expr), - case break_p(M, Line, Le, Bs) of - true -> - put(next_break, break), - break(Expr, Bs, Ieval); - false -> - handle_cmd(Bs, running, Ieval) - end; -%% Evaluation should continue for now (until we've returned to -%% call level Next) -cmd(Expr, Bs, Next, #ieval{level=Le}=Ieval) when is_integer(Next), - Next - Line = element(2, Expr), - handle_cmd(Bs, Next, Ieval#ieval{line=Line}); -%% Evaluation has returned to call level Next, break -cmd(Expr, Bs, Next, #ieval{level=Le}=Ieval) when is_integer(Next), - Next>=Le -> - put(next_break, break), - break(Expr, Bs, Ieval). - -%% break_p(Mod, Line, Le, Bs) -> true | false -%% Checks if there is a breakpoint at Line in Mod. -%% As a side effect, disables or deletes breakpoint as specified -break_p(Mod, Line, Le, Bs) -> - case lists:keysearch({Mod, Line}, 1, get(breakpoints)) of - {value, {_Point, [active, Action, _, Cond]}} -> - case get(user_eval) of - [{Line, Le}|_] -> false; - _ -> - Bool = case Cond of - null -> true; - {CM, CN} -> - try CM:CN(Bs) of - true -> true; - false -> false; - _Term -> false - catch - _C:_R -> false - end - end, - if - Bool -> - case Action of - enable -> ignore; - disable -> - dbg_iserver:cast(get(int), - {break_option, - {Mod, Line}, - status, - inactive}); - delete -> - dbg_iserver:cast(get(int), - {delete_break, - {Mod, Line}}) - end; - true -> ignore - end, - Bool - end; - _Other -> % {value, {_Point, [inactive|_]}} | false - false - end. - -%% Called whenever evaluation enters break mode, informs attached -%% process and dbg_iserver -break(Expr, Bs, #ieval{level=Le,module=M}=Ieval) -> - Line = element(2, Expr), - dbg_iserver:cast(get(int), {set_status,self(),break,{M,Line}}), - tell_attached({break_at,M,Line,Le}), - handle_cmd(Bs, break, Ieval#ieval{line=Line}). - -%%-------------------------------------------------------------------- -%% handle_cmd(Bs0, Status, Ieval) -> Bs1 | {skip, Bs1} -%% Status = break | running | Le -%% In break mode, loop waiting for user commands (and handle other -%% messages meanwhile). -%% In other modes, handle other messages, if any. -%%-------------------------------------------------------------------- -handle_cmd(Bs, break, #ieval{level=Le}=Ieval) -> - receive - {user, {cmd, Cmd}} -> - dbg_iserver:cast(get(int), {set_status,self(),running,{}}), - tell_attached(running), - case Cmd of - step -> Bs; - next -> put(next_break, Le), Bs; - continue -> put(next_break, running), Bs; - finish -> put(next_break, Le-1), Bs; - skip -> {skip, Bs} - end; - {user, {eval, Cmd}} -> - Bs1 = eval_nonrestricted(Cmd, Bs, Ieval), - handle_cmd(Bs1, break, Ieval); - Msg -> - dbg_ieval:check_exit_msg(Msg, Bs, Ieval), - handle_msg(Msg, break, Bs, Ieval), - handle_cmd(Bs, break, Ieval) - end; -handle_cmd(Bs, Status, Ieval) -> - receive - Msg -> - dbg_ieval:check_exit_msg(Msg, Bs, Ieval), - handle_msg(Msg, Status, Bs, Ieval), - handle_cmd(Bs, Status, Ieval) - after 0 -> - Bs - end. - -%%==================================================================== -%% User control of process execution and settings -%%==================================================================== - -step(Meta) -> Meta ! {user, {cmd, step}}, ok. -next(Meta) -> Meta ! {user, {cmd, next}}, ok. -continue(Meta) -> Meta ! {user, {cmd, continue}}, ok. -finish(Meta) -> Meta ! {user, {cmd, finish}}, ok. -skip(Meta) -> Meta ! {user, {cmd, skip}}. - -timeout(Meta) -> Meta ! {user, timeout}. - -stop(Meta) -> Meta ! {user, {cmd, stop}}. - -set_variable_value(Meta, Variable, Value, SP) -> - eval(Meta, {no_module, Variable++"="++Value, SP}), - receive - {Meta, EvalRsp} -> - EvalRsp - after 5000 -> - {error, timeout} - end. - - -eval(Meta, {Mod, Cmd}) -> - eval(Meta, {Mod, Cmd, nostack}); -eval(Meta, {Mod, Cmd, SP}) -> - Cmd2 = case lists:reverse(Cmd) of % Commands must end with ".\n" - [10,$.|_] -> Cmd; - [10|T] -> lists:reverse([10,$.|T]); - [$.|T] -> lists:reverse([10,$.|T]); - T -> lists:reverse([10,$.|T]) - end, - Meta ! {user, {eval, {self(), Mod, Cmd2, SP}}}. - -%% Tag Args -%% --- ---- -%% trace Bool -%% stack_trace Flag -set(Meta, Tag, Args) -> - Meta ! {user, {set, Tag, Args}}. - -%% Tag Args Reply -%% --- ---- ----- -%% bindings nostack | SP [{Var,Val}] (Var=atom(), Val=term()) -%% stack_frame {up|down, SP} [{Le,Where,Bs}] | top | bottom -%% (Where = {Mod,Li} -%% messages null [Msg] (Msg=term()) -%% backtrace all | N [{Le,MFA}] (MFA={M,F,Args}|{Fun,Args}) -get(Meta, Tag, Args) -> - Meta ! {user, {get, Tag, self(), Args}}, - receive - {Meta, Tag, Reply} -> Reply - end. - -%%-------------------------------------------------------------------- -%% handle_msg({int, Msg} | {user, Msg}, Status, Bs, Ieval) -%% Status = idle | exit_at | wait_at | wait_after_at -%% | break | running | Le | {Le,MFA} -%%-------------------------------------------------------------------- -handle_msg({int, Msg}, Status, Bs, Ieval) -> - handle_int_msg(Msg, Status, Bs, Ieval); -handle_msg({user, Msg}, Status, Bs, Ieval) -> - handle_user_msg(Msg, Status, Bs, Ieval); -handle_msg(Msg, Status, Bs, Ieval) -> - io:format("***WARNING*** Unexp msg ~p, info ~p~n", - [Msg,{Status,Bs,Ieval}]). - -%% handle_int_msg(Msg, Status, Bs, Ieval) -%% Msg = {attached, AttPid} | {detached, AttPid} -%% | {old_code, Mod} -%% | {new_break, Break} | {delete_break, Break} -%% | {break_options, {Break, Options}} -%% | no_break | {no_break, Mod} -%% | stop (only when Status==exit_at, means AttPid has terminated) -%% Interpreter internal messages (from dbg_iserver) -handle_int_msg({attached, AttPid}, Status, _Bs, - #ieval{level=Le,module=M,line=Line}) -> - - %% Update process dictionary - put(attached, AttPid), - put(next_break, break), - - %% Tell attached process in which module evalution is located - if - Le =:= 1 -> - tell_attached({attached, undefined, -1, get(trace)}); - true -> - tell_attached({attached, M, Line, get(trace)}), - - %% Give info about status and call level as well - %% In this case, Status cannot be exit_at - Msg = case Status of - idle -> {func_at,M,Line,Le}; - break -> {break_at,M,Line,Le}; - wait_at -> {wait_at,M,Line,Le}; - wait_after_at -> {wait_after_at,M,Line,Le}; - _ -> running % running | Le | {Le,MFA} - end, - tell_attached(Msg) - end; -handle_int_msg(detached, _Status, _Bs, _Ieval) -> - %% Update process dictionary - put(attached, undefined), - put(next_break, running), - put(trace, false); % no need for tracing if there is no AttPid -handle_int_msg({old_code,Mod}, Status, Bs, - #ieval{level=Le,module=M}=Ieval) -> - if - Status =:= idle, Le =:= 1 -> - erase(?DB_REF_KEY(Mod)), - put(cache, []); - true -> - case dbg_istk:in_use_p(Mod, M) of - true -> - %% A call to Mod is on the stack (or might be), - %% so we must terminate. - exit(get(self), kill), - dbg_ieval:exception(exit, old_code, Bs, Ieval); - false -> - erase(?DB_REF_KEY(Mod)), - put(cache, []) - end - end; -handle_int_msg({new_break, Break}, _Status, _Bs, _Ieval) -> - put(breakpoints, [Break | get(breakpoints)]); -handle_int_msg({delete_break, Point}, _Status, _Bs, _Ieval) -> - put(breakpoints, lists:keydelete(Point, 1, get(breakpoints))); -handle_int_msg({break_options, Break}, _Status, _Bs, _Ieval) -> - {Point, _Options} = Break, - put(breakpoints, lists:keyreplace(Point,1,get(breakpoints), Break)); -handle_int_msg(no_break, _Status, _Bs, _Ieval) -> - put(breakpoints, []); -handle_int_msg({no_break,M}, _Status, _Bs, _Ieval) -> - put(breakpoints, [ML || {Mod,_L}=ML <- get(breakpoints), Mod=/=M]); -handle_int_msg(stop, exit_at, _Bs, _Ieval) -> - erlang:exit(normal). - -%% handle_user_msg(Msg, Status, Bs, Ieval) -%% Msg = {cmd, Cmd}, Cmd = step | next | continue | finish| skip| stop -%% | timeout -%% | {eval, {Pid, Mod, Str, SP}} -%% | {set, Tag, Args} | {get, Tag, Pid, Args} -%% Messages from the attached process -%% Msg = {cmd, Cmd}, Cmd /= stop, can only be received in break mode, -%% handled in handle_cmd/3 -%% Msg = timeout is handled when needed (when evaluating receive..after) -%% in dbg_ieval:do_receive/5 when Status==wait_after_at -%% For all other Status, it should be ignored -handle_user_msg({cmd, stop}, Status, _Bs, _Ieval) -> - case lists:member(Status, [running, wait_at, wait_after_at]) of - true -> - put(next_break, break); - false when is_integer(Status); is_tuple(Status) -> - put(next_break, break); - false -> % idle | exit_at (| break) - ignore - end; -handle_user_msg({cmd, continue}, Status, _Bs, _Ieval) -> - %% Allow leaving break mode when waiting in a receive - case lists:member(Status, [wait_at, wait_after_at]) of - true -> - put(next_break, running); - false -> - ignore - end; -handle_user_msg({cmd, _Cmd}, _Status, _Bs, _Ieval) -> - ignore; -handle_user_msg(timeout, _Status, _Bs, _Ieval) -> - ignore; -handle_user_msg({eval,Cmd}, wait_at, Bs, _Ieval) -> - eval_restricted(Cmd, Bs); -handle_user_msg({eval,Cmd}, wait_after_at, Bs, _Ieval) -> - eval_restricted(Cmd, Bs); -handle_user_msg({set,trace,Bool}, _Status, _Bs, _Ieval) -> - put(trace, Bool), - tell_attached({trace, Bool}); -handle_user_msg({set,stack_trace,Flag}, _Status, _Bs, _Ieval) -> - set_stack_trace(Flag); -handle_user_msg({get, all_stack_frames, From, _}, _Status, Bs, _Ieval) -> - reply(From, all_stack_frames, {all_frames(), Bs}); -handle_user_msg({get, all_modules_on_stack, From, _}, _Status, _Bs, _Ieval) -> - reply(From, all_modules_on_stack, all_modules_on_stack()); -handle_user_msg({get,bindings,From,SP}, _Status, Bs, _Ieval) -> - reply(From, bindings, bindings(Bs, SP)); -handle_user_msg({get,stack_frame,From,{Dir,SP}}, _Status, _Bs,_Ieval) -> - reply(From, stack_frame, dbg_istk:stack_frame(Dir, SP)); -handle_user_msg({get,messages,From,_}, _Status, _Bs, _Ieval) -> - reply(From, messages, messages()); -handle_user_msg({get,backtrace,From,N}, _Status, _Bs, Ieval) -> - reply(From, backtrace, dbg_istk:backtrace(N, Ieval)). - -all_modules_on_stack() -> - dbg_istk:all_modules_on_stack(). - -all_frames() -> - dbg_ieval:all_frames(). - -set_stack_trace(true) -> - set_stack_trace(all); -set_stack_trace(Flag) -> - if - Flag =:= false -> - put(stack, []); - Flag =:= no_tail; Flag =:= all -> - ignore - end, - put(trace_stack, Flag), - tell_attached({stack_trace, Flag}). - -reply(From, Tag, Reply) -> - From ! {self(), Tag, Reply}. - -bindings(Bs, nostack) -> - Bs; -bindings(Bs, SP) -> - case dbg_istk:stack_level() of - Le when SP > Le -> - Bs; - _ -> - dbg_istk:bindings(SP) - end. - -messages() -> - {messages, Msgs} = erlang:process_info(get(self), messages), - Msgs. - -%%==================================================================== -%% Evaluating expressions within process context -%%==================================================================== - -eval_restricted({From,_Mod,Cmd,SP}, Bs) -> - case catch parse_cmd(Cmd, 1) of - {'EXIT', _Reason} -> - From ! {self(), {eval_rsp, 'Parse error'}}; - {[{var,_,Var}], XBs} -> - Bs2 = bindings(Bs, SP), - Res = case get_binding(Var, Bs2) of - {value, Value} -> Value; - unbound -> - case get_binding(Var, XBs) of - {value, _} -> - 'Only possible to inspect variables'; - unbound -> unbound - end - end, - From ! {self(), {eval_rsp, Res}}; - {_Forms, _XBs} -> - Rsp = 'Only possible to inspect variables', - From ! {self(), {eval_rsp, Rsp}} - end. - -eval_nonrestricted({From,Mod,Cmd,SP}, Bs, #ieval{level=Le}) when SP < Le-> - %% Evaluate in stack - _ = eval_restricted({From, Mod, Cmd, SP}, Bs), - Bs; -eval_nonrestricted({From, _Mod, Cmd, _SP}, Bs, - #ieval{level=Le,module=M,line=Line}=Ieval) -> - case catch parse_cmd(Cmd, Line) of - {'EXIT', _Reason} -> - From ! {self(), {eval_rsp, 'Parse error'}}, - Bs; - {Forms, XBs} -> - mark_running(Line, Le), - Bs1 = merge_bindings(Bs, XBs), - {Res, Bs2} = - lists:foldl(fun(Expr, {_Res, Bs0}) -> - eval_nonrestricted_1(Expr,Bs0,Ieval) - end, - {null, Bs1}, - Forms), - mark_break(M, Line, Le), - From ! {self(), {eval_rsp, Res}}, - remove_binding_structs(Bs2, XBs) - end. - -eval_nonrestricted_1({match,_,{var,_,Var},Expr}, Bs, Ieval) -> - {Res,Bs2} = eval_expr(Expr, Bs, Ieval), - Bs3 = case lists:keyfind(Var, 1, Bs) of - {Var,_Value} -> - lists:keyreplace(Var, 1, Bs2, {Var,Res}); - false -> [{Var,Res} | Bs2] - end, - {Res,Bs3}; -eval_nonrestricted_1({var,_,Var}, Bs, _Ieval) -> - Res = case lists:keyfind(Var, 1, Bs) of - {Var, Value} -> Value; - false -> unbound - end, - {Res,Bs}; -eval_nonrestricted_1(Expr, Bs, Ieval) -> - eval_expr(Expr, Bs, Ieval). - -eval_expr(Expr, Bs, Ieval) -> - {value,Res,Bs2} = - dbg_ieval:eval_expr(Expr, Bs, Ieval#ieval{top=false}), - {Res,Bs2}. - -%% XBs have unique keys. -merge_bindings(Bs1, XBs) -> - Bs1 ++ erl_eval:bindings(XBs). - -remove_binding_structs(Bs1, XBs) -> - lists:foldl(fun({N, _V}, Bs) -> lists:keydelete(N, 1, Bs) - end, Bs1, erl_eval:bindings(XBs)). - -mark_running(LineNo, Le) -> - put(next_break, running), - put(user_eval, [{LineNo, Le} | get(user_eval)]), - dbg_iserver:cast(get(int), {set_status, self(), running, {}}), - tell_attached(running). - -mark_break(Cm, LineNo, Le) -> - put(next_break, break), - put(user_eval, tl(get(user_eval))), - tell_attached({break_at, Cm, LineNo, Le}), - dbg_iserver:cast(get(int), {set_status,self(),break,{Cm,LineNo}}). - -parse_cmd(Cmd, LineNo) -> - {ok,Tokens,_} = erl_scan:string(Cmd, LineNo, [text]), - {ok,Forms,Bs} = erl_eval:extended_parse_exprs(Tokens), - {Forms, Bs}. - -%%==================================================================== -%% Library functions for attached process handling -%%==================================================================== - -tell_attached(Msg) -> - case get(attached) of - undefined -> ignore; - AttPid -> - AttPid ! {self(), Msg}, - ignore - end. - -%%==================================================================== -%% get_binding/2 -%%==================================================================== - -get_binding(Var, Bs) -> - case lists:keyfind(Var, 1, Bs) of - {Var, Value} -> {value, Value}; - false -> unbound - end. diff --git a/debugger/erlide_debugger_24/src/dbg_idb.erl b/debugger/erlide_debugger_24/src/dbg_idb.erl deleted file mode 100644 index 55177bb..0000000 --- a/debugger/erlide_debugger_24/src/dbg_idb.erl +++ /dev/null @@ -1,55 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2016. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(dbg_idb). - -%% External exports --export([insert/3, lookup/2, match_object/2]). - -%%==================================================================== -%% External exports -%%==================================================================== - -insert(DbRef, Key, Value) -> - case DbRef of - {Node, ModDb} -> - rpc:block_call(Node, ets, insert, [ModDb, {Key, Value}]); - ModDb -> - ets:insert(ModDb, {Key, Value}) - end. - -lookup(DbRef, Key) -> - Res = case DbRef of - {Node, ModDb} -> - rpc:block_call(Node, ets, lookup, [ModDb, Key]); - ModDb -> - ets:lookup(ModDb, Key) - end, - case Res of - [{Key, Value}] -> {ok, Value}; - _ -> not_found - end. - -match_object(DbRef, Key) -> - case DbRef of - {Node, ModDb} -> - rpc:block_call(Node, ets, match_object, [ModDb, Key]); - ModDb -> - ets:match_object(ModDb, Key) - end. diff --git a/debugger/erlide_debugger_24/src/dbg_ieval.erl b/debugger/erlide_debugger_24/src/dbg_ieval.erl deleted file mode 100644 index bb76c52..0000000 --- a/debugger/erlide_debugger_24/src/dbg_ieval.erl +++ /dev/null @@ -1,1867 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2021. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(dbg_ieval). - --export([eval/3,exit_info/5]). --export([eval_expr/3]). --export([check_exit_msg/3,exception/4]). --export([all_frames/0]). - --include("dbg_ieval.hrl"). - -%%==================================================================== -%% External exports -%%==================================================================== - -%%-------------------------------------------------------------------- -%% eval(Mod, Func, Args) -> Meta -%% Mod = Func = atom() -%% Args = [term()] -%% MFA = {Mod,Func,Args} | {Mod,Func,Arity} | {Fun,Args} -%% Arity = integer() -%% Meta = pid() -%% Entry point from debugged process (dbg_debugged). -%% Immediately returns the pid for the meta process. -%% The evaluated value will later be sent as a message to -%% the calling process. -%%-------------------------------------------------------------------- -eval(Mod, Func, Args) -> - Debugged = self(), - Int = dbg_iserver:find(), - case dbg_iserver:call(Int, {get_meta,Debugged}) of - {ok,Meta} -> - Meta ! {re_entry, Debugged, {eval,{Mod,Func,Args}}}, - Meta; - {error,not_interpreted} -> - spawn(fun() -> - meta(Int, Debugged, Mod, Func, Args) - end) - end. - -%%-------------------------------------------------------------------- -%% exit_info(Int, AttPid, OrigPid, Reason, ExitInfo) -%% Int = AttPid = OrigPid = pid() -%% Reason = term() -%% ExitInfo = {{Mod,Line}, Bs, Stack} | {} -%% Meta process started when attaching to a terminated process. -%% Spawned (by dbg_iserver) in response to user request. -%%-------------------------------------------------------------------- -exit_info(Int, AttPid, OrigPid, Reason, ExitInfo) -> - put(int, Int), - put(attached, AttPid), - put(breakpoints, dbg_iserver:call(Int, all_breaks)), - put(self, OrigPid), - put(exit_info, ExitInfo), - - case ExitInfo of - {{Mod,Line},Bs,S} -> - dbg_istk:from_external(S), - Le = dbg_istk:stack_level(), - dbg_icmd:tell_attached({exit_at, {Mod, Line}, Reason, Le, OrigPid, dbg_istk:all_frames(S), Bs}), - exit_loop(OrigPid, Reason, Bs,#ieval{module=Mod,line=Line}); - {} -> - dbg_istk:init(), - dbg_icmd:tell_attached({exit_at, null, Reason, 1, OrigPid}), - exit_loop(OrigPid, Reason, erl_eval:new_bindings(),#ieval{}) - end. - -all_frames() -> - {dbg_istk:all_frames(), []}. - -%%-------------------------------------------------------------------- -%% eval_expr(Expr, Bs, Ieval) -> {value, Value, Bs} -%% -%% Evalute a shell expression in the real process. -%% Called (dbg_icmd) in response to a user request. -%%-------------------------------------------------------------------- -eval_expr(Expr0, Bs, Ieval) -> - - %% Save current exit info - ExitInfo = get(exit_info), - Stacktrace = get(stacktrace), - - Expr = expand_records(Expr0, Ieval#ieval.module), - - %% Emulate a surrounding catch - try debugged_cmd({eval,Expr,Bs}, Bs, Ieval) - catch - Class:Reason -> - Result = case Class of - throw -> Reason; - _ -> {'EXIT', Reason} - end, - - %% Reset exit info - put(exit_info, ExitInfo), - put(stacktrace, Stacktrace), - - {value, Result, Bs} - end. - -%%-------------------------------------------------------------------- -%% check_exit_msg(Msg, Bs, Ieval) -%% Msg = term() -%% Check if Msg is an 'EXIT' msg from the iserver or a 'DOWN' msg -%% from the debugged process. If so exit with correct reason. -%%-------------------------------------------------------------------- -check_exit_msg({'EXIT', Int, Reason}, _Bs, #ieval{level=Le}) -> - %% This *must* be interpreter which has terminated, - %% we are not linked to anyone else - if - Le =:= 1 -> - exit(Reason); - Le > 1 -> - exit({Int, Reason}) - end; -check_exit_msg({'DOWN',_,_,_,Reason}, Bs, - #ieval{level=Le, module=Mod, line=Li}) -> - %% This *must* be Debugged which has terminated, - %% we are not monitoring anyone else - - %% Inform Int about current position, bindings and stack - ExitInfo = - case get(exit_info) of - - %% Debugged has been terminated by someone - %% - really the position, bindings and stack are of no - %% importance in this case - %% If we don't save them, however, post-mortem analysis - %% of the process isn't possible - undefined when Le =:= 1 -> % died outside interpreted code - {}; - undefined when Le > 1 -> - StackExternal = (dbg_istk:delayed_to_external())(), - {{Mod, Li}, Bs, StackExternal}; - - %% Debugged has terminated due to an exception - ExitInfo0 when is_function(ExitInfo0, 0) -> - ExitInfo0() - end, - dbg_iserver:cast(get(int), {set_exit_info,self(),ExitInfo}), - - if - Le =:= 1 -> - exit(Reason); - Le > 1 -> - exit({get(self), Reason}) - end; -check_exit_msg(_Msg, _Bs, _Ieval) -> - ignore. - -%%-------------------------------------------------------------------- -%% exception(Class, Reason, Bs, Ieval) -%% Class = error | exit | throw -%% Reason = term() -%% Bs = bindings() -%% Ieval = #ieval{} -%% Store information about where in the code the error is located -%% and then raise the exception. -%%-------------------------------------------------------------------- -exception(Class, Reason, Bs, Ieval) -> - exception(Class, Reason, Bs, Ieval, false). - -exception(Class, Reason, Bs, Ieval, false) -> - do_exception(Class, Reason, - dbg_istk:delayed_stacktrace(no_args, Ieval), - Bs, Ieval); -exception(Class, Reason, Bs, Ieval, true) -> - do_exception(Class, Reason, - dbg_istk:delayed_stacktrace(include_args, Ieval), - Bs, Ieval). - -do_exception(Class, Reason, Stacktrace, Bs, #ieval{module=M, line=Line}) -> - StackFun = dbg_istk:delayed_to_external(), - ExitInfo = fun() -> - {{M,Line},Bs,StackFun()} - end, - put(exit_info, ExitInfo), - put(stacktrace, Stacktrace), - erlang:Class(Reason). - -%%==================================================================== -%% Internal functions -%%==================================================================== - -%%--Loops------------------------------------------------------------- - -%% Entry point for first-time initialization of meta process -meta(Int, Debugged, M, F, As) -> - process_flag(trap_exit, true), - erlang:monitor(process, Debugged), - - %% Inform dbg_iserver, get the initial status in return - Pargs = case {M, F} of - %% If it's a fun we're evaluating, show a text - %% representation of the fun and its arguments, - %% not dbg_ieval:eval_fun(...) - {dbg_ieval, EvalFun} when EvalFun =:= eval_fun; - EvalFun =:= eval_named_fun -> - {Mx, Fx} = lists:last(As), - {Mx, Fx, lists:nth(2, As)}; - _ -> - {M, F, As} - end, - Status = dbg_iserver:call(Int, {new_process,Debugged,self(),Pargs}), - - %% Initiate process dictionary - put(int, Int), % pid() dbg_iserver - put(attached, undefined),% pid() attached process - put(breakpoints, dbg_iserver:call(Int, all_breaks)), - put(cache, []), - put(next_break, Status), % break | running (other values later) - put(self, Debugged), % pid() interpreted process - dbg_istk:init(), - put(stacktrace, []), - put(trace_stack, dbg_iserver:call(Int, get_stack_trace)), - put(trace, false), % bool() Trace on/off - put(user_eval, []), - - - %% Send the result of the meta process - Ieval = #ieval{}, - Debugged ! {sys, self(), eval_mfa(Debugged,M,F,As,Ieval)}, - - dbg_iserver:cast(Int, {set_status, self(), idle, {}}), - dbg_icmd:tell_attached(idle), - - meta_loop(Debugged, erl_eval:new_bindings(), Ieval). - -debugged_cmd(Cmd, Bs, Ieval) -> - Debugged = get(self), - Debugged ! {sys, self(), {command,Cmd}}, - meta_loop(Debugged, Bs, Ieval). - -meta_loop(Debugged, Bs, #ieval{level=Le} = Ieval) -> - receive - - %% The following messages can only be received when Meta is - %% waiting for Debugged to evaluate non-interpreted code - %% or a Bif. Le>1 - {sys, Debugged, {value,Val}} -> - {value, Val, Bs}; - {sys, Debugged, {value,Val,Bs2}} -> - {value, Val, merge_bindings(Bs2, Bs, Ieval)}; - {sys, Debugged, {exception,{Class,Reason,Stk}}} -> - case get(exit_info) of - - %% Error occurred outside of interpreted code. - undefined -> - MakeStk0 = dbg_istk:delayed_stacktrace(), - MakeStk = fun(Depth0) -> - Depth = max(0, Depth0 - length(Stk)), - Stk ++ MakeStk0(Depth) - end, - do_exception(Class, Reason, MakeStk, Bs, Ieval); - - %% Error must have occured within a re-entry to - %% interpreted code, simply raise the exception - _ -> - erlang:Class(Reason) - end; - - %% Re-entry to Meta from non-interpreted code - {re_entry, Debugged, {eval,{M,F,As}}} when Le =:= 1 -> - %% Reset process dictionary - %% This is really only necessary if the process left - %% interpreted code at a call level > 1 - dbg_istk:init(), - put(stacktrace, []), - put(exit_info, undefined), - - dbg_iserver:cast(get(int), {set_status,self(),running,{}}), - dbg_icmd:tell_attached(running), - - %% Tell attached process(es) to update source code. - dbg_icmd:tell_attached({re_entry,M,F}), - - %% Send the result of the meta process - Debugged ! {sys,self(),eval_mfa(Debugged,M,F,As,Ieval)}, - - dbg_iserver:cast(get(int), {set_status,self(),idle,{}}), - dbg_icmd:tell_attached(idle), - meta_loop(Debugged, Bs, Ieval); - - %% Evaluation in Debugged results in call to interpreted - %% function (probably? a fun) - {re_entry, Debugged, {eval,{M,F,As}}} when Le>1 -> - Ieval2 = Ieval#ieval{module=undefined, line=-1}, - Debugged ! {sys,self(),eval_mfa(Debugged,M,F,As,Ieval2)}, - meta_loop(Debugged, Bs, Ieval); - - Msg -> - check_exit_msg(Msg, Bs, Ieval), - dbg_icmd:handle_msg(Msg, idle, Bs, Ieval), - meta_loop(Debugged, Bs, Ieval) - end. - -exit_loop(OrigPid, Reason, Bs, Ieval) -> - receive - Msg -> - check_exit_msg(Msg, Bs, Ieval), - dbg_icmd:handle_msg(Msg, exit_at, Bs, Ieval), - exit_loop(OrigPid, Reason, Bs, Ieval) - end. - -%%--Trace function---------------------------------------------------- - -%%-------------------------------------------------------------------- -%% trace(What, Args) -%% What = send | receivex | received | call | return | bif -%% Args depends on What, see the code. -%%-------------------------------------------------------------------- -trace(What, Args) -> - trace(What, Args, get(trace)). - -trace(return, {_Le,{dbg_apply,_,_,_}}, _Bool) -> - ignore; -trace(What, Args, true) -> - Fun = fun(P) -> format_trace(What, Args, P) end, - dbg_icmd:tell_attached({trace_output, Fun}); -trace(_What, _Args, false) -> - ignore. - -format_trace(What, Args, P) -> - case What of - send -> - {To,Msg} = Args, - io_lib:format("==> ~w : "++P++"~n", [To, Msg]); - receivex -> - {Le, TimeoutP} = Args, - Tail = case TimeoutP of - true -> "with timeout~n"; - false -> "~n" - end, - io_lib:format(" (~w) receive " ++ Tail, [Le]); - - received when Args =:= null -> - io_lib:format("~n", []); - received -> % Args=Msg - io_lib:format("~n<== "++P++"~n", [Args]); - - call -> - {Called, {Le,Li,M,F,As}} = Args, - case Called of - extern -> - io_lib:format("++ (~w) <~w> ~w:~tw~ts~n", - [Le,Li,M,F,format_args(As, P)]); - local -> - io_lib:format("++ (~w) <~w> ~tw~ts~n", - [Le,Li,F,format_args(As, P)]) - end; - call_fun -> - {Le,Li,F,As} = Args, - io_lib:format("++ (~w) <~w> ~tw~ts~n", - [Le, Li, F, format_args(As, P)]); - return -> - {Le,Val} = Args, - io_lib:format("-- (~w) "++P++"~n", [Le, Val]); - - - bif -> - {Le,Li,M,F,As} = Args, - io_lib:format("++ (~w) <~w> ~w:~tw~ts~n", - [Le, Li, M, F, format_args(As, P)]) - end. - -format_args(As, P) when is_list(As) -> - [$(,format_args1(As, P),$)]; -format_args(A, P) -> - [$/,io_lib:format(P, [A])]. - -format_args1([A], P) -> - [io_lib:format(P, [A])]; -format_args1([A|As], P) -> - [io_lib:format(P, [A]),$,|format_args1(As, P)]; -format_args1([], _) -> - []. - -%%--Other useful functions-------------------------------------------- - -%% Mimic catch behaviour -catch_value(error, Reason) -> - {'EXIT',{Reason,get_stacktrace()}}; -catch_value(exit, Reason) -> - {'EXIT',Reason}; -catch_value(throw, Reason) -> - Reason. - -%%--Code interpretation----------------------------------------------- - -%%-------------------------------------------------------------------- -%% Top level function of meta evaluator. -%% Return message to be replied to the target process. -%%-------------------------------------------------------------------- -eval_mfa(Debugged, M, F, As, #ieval{level=Le}=Ieval0) -> - Int = get(int), - Bs = erl_eval:new_bindings(), - Ieval = Ieval0#ieval{level=Le+1,top=true}, - try do_eval_function(M, F, As, Bs, extern, Ieval) of - {value, Val, _Bs} -> - trace(return, {Le,Val}), - {ready, Val} - catch - exit:{Debugged, Reason} -> - exit(Reason); - exit:{Int, Reason} -> - exit(Reason); - Class:Reason -> - {exception, {Class, Reason, get_stacktrace()}} - end. - -eval_function(Mod, Name, As, Bs, Called, Ieval0, Lc) -> - Tail = Lc andalso get(trace_stack) =:= no_tail, - case Tail of - false -> - Ieval = dbg_istk:push(Bs, Ieval0, Lc), - {value,Val,_} = do_eval_function(Mod, Name, As, Bs, Called, Ieval), - dbg_istk:pop(), - trace(return, {Ieval#ieval.level,Val}), - {value,Val,Bs}; - true -> - do_eval_function(Mod, Name, As, Bs, Called, Ieval0) - end. - -do_eval_function(Mod, Fun, As0, Bs0, _, Ieval0) when is_function(Fun); - Mod =:= ?MODULE, - Fun =:= eval_fun orelse - Fun =:= eval_named_fun -> - #ieval{level=Le,line=Li,top=Top} = Ieval0, - case lambda(Fun, As0) of - {[{clause,Fc,_,_,_}|_]=Cs,Module,Name,As,Bs} -> - Ieval = Ieval0#ieval{module=Module,function=Name, - arguments=As0,line=Fc}, - trace(call_fun, {Le,Li,Name,As}), - fnk_clauses(Cs, As, Bs, Ieval); - - not_interpreted when Top -> % We are leaving interpreted code - trace(call_fun, {Le,Li,Fun,As0}), - {value, {dbg_apply,erlang,apply,[Fun,As0]}, Bs0}; - not_interpreted -> - trace(call_fun, {Le,Li,Fun,As0}), - debugged_cmd({apply,erlang,apply,[Fun,As0]}, Bs0, Ieval0); - - {error,Reason} -> - %% It's ok not to push anything in this case, the error - %% reason contains information about the culprit - %% ({badarity,{{Mod,Name},As}}) - exception(error, Reason, Bs0, Ieval0) - end; - -%% Common Test adaptation -do_eval_function(ct_line, line, As, Bs, extern, #ieval{level=Le}=Ieval) -> - debugged_cmd({apply,ct_line,line,As}, Bs, Ieval#ieval{level=Le+1}), - {value, ignore, Bs}; - -do_eval_function(Mod, Name, As0, Bs0, Called, Ieval0) -> - #ieval{level=Le,line=Li,top=Top} = Ieval0, - trace(call, {Called, {Le,Li,Mod,Name,As0}}), - Ieval = Ieval0#ieval{module=Mod,function=Name,arguments=As0}, - case get_function(Mod, Name, As0, Called) of - [{clause,FcLine,_,_,_}|_]=Cs -> - fnk_clauses(Cs, As0, erl_eval:new_bindings(), - Ieval#ieval{line=FcLine}); - - not_interpreted when Top -> % We are leaving interpreted code - {value, {dbg_apply,Mod,Name,As0}, Bs0}; - not_interpreted -> - debugged_cmd({apply,Mod,Name,As0}, Bs0, Ieval); - - undef -> - exception(error, undef, Bs0, Ieval, true) - end. - -lambda(eval_fun, [Cs,As,Bs,{Mod,Name}=F]) -> - %% Fun defined in interpreted code, called from outside - if - length(element(3,hd(Cs))) =:= length(As) -> - db_ref(Mod), %% Adds ref between module and process - {Cs,Mod,Name,As,Bs}; - true -> - {error,{badarity,{F,As}}} - end; -lambda(eval_named_fun, [Cs,As,Bs0,FName,RF,{Mod,Name}=F]) -> - %% Fun defined in interpreted code, called from outside - if - length(element(3,hd(Cs))) =:= length(As) -> - db_ref(Mod), %% Adds ref between module and process - Bs1 = add_binding(FName, RF, Bs0), - {Cs,Mod,Name,As,Bs1}; - true -> - {error,{badarity,{F,As}}} - end; -lambda(Fun, As) when is_function(Fun) -> - %% Fun called from within interpreted code... - case erlang:fun_info(Fun, module) of - - %% ... and the fun was defined in interpreted code - {module, ?MODULE} -> - {Mod,Name,Bs, Cs} = - case erlang:fun_info(Fun, env) of - {env,[{{M,F},Bs0,Cs0}]} -> - {M,F,Bs0, Cs0}; - {env,[{{M,F},Bs0,Cs0,FName}]} -> - {M,F,add_binding(FName, Fun, Bs0), Cs0} - end, - {arity, Arity} = erlang:fun_info(Fun, arity), - if - length(As) =:= Arity -> - db_ref(Mod), %% Adds ref between module and process - {Cs,Mod,Name,As,Bs}; - true -> - {error,{badarity,{Fun,As}}} - end; - - %% ... and the fun was defined outside interpreted code - _ -> - not_interpreted - end. - -get_function(Mod, Name, Args, local) -> - Arity = length(Args), - Key = {Mod,Name,Arity}, - case cached(Key) of - false -> - DbRef = db_ref(Mod), - case dbg_idb:match_object(DbRef, {{Mod,Name,Arity,'_'},'_'}) of - [{{Mod,Name,Arity,Exp},Clauses}] -> - cache(Key, {Exp,Clauses}), - Clauses; - _ -> undef - end; - {_Exp,Cs} -> Cs - end; -get_function(Mod, Name, Args, extern) -> - Arity = length(Args), - Key = {Mod,Name,Arity}, - case cached(Key) of - false -> - case db_ref(Mod) of - not_found -> not_interpreted; - DbRef -> - case dbg_idb:lookup(DbRef, {Mod,Name,Arity,true}) of - {ok,Data} -> - cache(Key, {true,Data}), - Data; - not_found -> - case dbg_idb:lookup(DbRef, module) of - {ok,_} -> undef; - not_found -> not_interpreted - end - end - end; - {true,Cs} -> Cs; - {false,_} -> undef - end. - -db_ref(Mod) -> - case get(?DB_REF_KEY(Mod)) of - undefined -> - case dbg_iserver:call(get(int), - {get_module_db, Mod, get(self)}) of - not_found -> - not_found; - ModDb -> - Node = node(get(int)), - DbRef = if - Node =/= node() -> {Node,ModDb}; - true -> ModDb - end, - put(?DB_REF_KEY(Mod), DbRef), - DbRef - end; - DbRef -> - DbRef - end. - -cache(Key, Data) -> - put(cache, lists:sublist([{Key,Data}|get(cache)], 5)). - -cached(Key) -> - case lists:keyfind(Key, 1, get(cache)) of - {Key,Data} -> Data; - false -> false - end. - -%% Try to find a matching function clause -%% #ieval.level is set, the other fields must be set in this function -fnk_clauses([{clause,Line,Pars,Gs,Body}|Cs], As, Bs0, Ieval) -> - case head_match(Pars, As, [], Bs0) of - {match,Bs1} -> - Bs = add_bindings(Bs1, Bs0), - case guard(Gs, Bs) of - true -> - seq(Body, Bs, Ieval#ieval{line=Line}); - false -> - fnk_clauses(Cs, As, Bs0, Ieval) - end; - nomatch -> - fnk_clauses(Cs, As, Bs0, Ieval) - end; -fnk_clauses([], _As, Bs, Ieval) -> - exception(error, function_clause, Bs, Ieval, true). - -seq([E], Bs0, Ieval) -> - case dbg_icmd:cmd(E, Bs0, Ieval) of - {skip,Bs} -> - {value,skipped,Bs}; - Bs -> - expr(E, Bs, Ieval) - end; -seq([E|Es], Bs0, Ieval) -> - case dbg_icmd:cmd(E, Bs0, Ieval) of - {skip,Bs} -> - seq(Es, Bs, Ieval); - Bs1 -> - {value,_,Bs} = expr(E, Bs1, Ieval#ieval{top=false}), - seq(Es, Bs, Ieval) - end; -seq([], Bs, _) -> - {value,true,Bs}. - -%% Variable -expr({var,Line,V}, Bs, Ieval) -> - case binding(V, Bs) of - {value,Val} -> - {value,Val,Bs}; - unbound -> - exception(error, {unbound,V}, Bs, Ieval#ieval{line=Line}) - end; - -expr({value,_,Val}, Bs, _Ieval) -> - {value,Val,Bs}; -expr({value,Val}, Bs, _Ieval) -> % Special case straight values - {value,Val,Bs}; - -%% List -expr({cons,Line,H0,T0}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line,top=false}, - {value,H,Bs1} = expr(H0, Bs0, Ieval), - {value,T,Bs2} = expr(T0, Bs0, Ieval), - {value,[H|T],merge_bindings(Bs2, Bs1, Ieval)}; - -%% Tuple -expr({tuple,Line,Es0}, Bs0, Ieval) -> - {Vs,Bs} = eval_list(Es0, Bs0, Ieval#ieval{line=Line}), - {value,list_to_tuple(Vs),Bs}; - -%% Map -expr({map,Line,Fs}, Bs0, Ieval) -> - {Map,Bs} = eval_new_map_fields(Fs, Bs0, Ieval#ieval{line=Line,top=false}, - fun expr/3), - {value,Map,Bs}; -expr({map,Line,E0,Fs0}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line,top=false}, - {value,E,Bs1} = expr(E0, Bs0, Ieval), - {Fs,Bs2} = eval_map_fields(Fs0, Bs0, Ieval), - _ = maps:put(k, v, E), %Validate map. - Value = lists:foldl(fun ({map_assoc,K,V}, Mi) -> maps:put(K,V,Mi); - ({map_exact,K,V}, Mi) -> maps:update(K,V,Mi) - end, E, Fs), - {value,Value,merge_bindings(Bs2, Bs1, Ieval)}; - -%% Record update -expr({record_update,Line,Es},Bs,#ieval{level=Le}=Ieval0) -> - %% Incr Level, we don't need to step (next) trough temp - %% variables creation and matching - Ieval = Ieval0#ieval{top=false, line=Line, level=Le+1}, - Seq = fun(E, {_, _, Bs1}) -> expr(E, Bs1, Ieval) end, - {value,Value,Bs1} = lists:foldl(Seq, {value, true, Bs}, Es), - {value,Value,remove_temporary_bindings(Bs1)}; - -%% A block of statements -expr({block,Line,Es},Bs,Ieval) -> - seq(Es, Bs, Ieval#ieval{line=Line}); - -%% Catch statement -expr({'catch',Line,Expr}, Bs0, Ieval) -> - try expr(Expr, Bs0, Ieval#ieval{line=Line, top=false}) - catch - Class:Reason -> - %% Exception caught, reset exit info - put(exit_info, undefined), - dbg_istk:pop(Ieval#ieval.level), - Value = catch_value(Class, Reason), - trace(return, {Ieval#ieval.level,Value}), - {value, Value, Bs0} - end; - -%% Try-catch statement -expr({'try',Line,Es,CaseCs,CatchCs,[]}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - try seq(Es, Bs0, Ieval#ieval{top=false}) of - {value,Val,Bs} = Value -> - case CaseCs of - [] -> Value; - _ -> - case_clauses(Val, CaseCs, Bs, try_clause, Ieval) - end - catch - Class:Reason when CatchCs =/= [] -> - catch_clauses({Class,Reason,get_stacktrace()}, CatchCs, Bs0, Ieval) - end; -expr({'try',Line,Es,CaseCs,CatchCs,As}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - try seq(Es, Bs0, Ieval#ieval{top=false}) of - {value,Val,Bs} = Value -> - case CaseCs of - [] -> Value; - _ -> - case_clauses(Val, CaseCs, Bs, try_clause, Ieval) - end - catch - Class:Reason when CatchCs =/= [] -> - catch_clauses({Class,Reason,get_stacktrace()}, CatchCs, Bs0, Ieval) - after - seq(As, Bs0, Ieval#ieval{top=false}) - end; - -%% Case statement -expr({'case',Line,E,Cs}, Bs0, Ieval) -> - {value,Val,Bs} = - expr(E, Bs0, Ieval#ieval{line=Line, top=false}), - case_clauses(Val, Cs, Bs, case_clause, Ieval#ieval{line=Line}); - -%% If statement -expr({'if',Line,Cs}, Bs, Ieval) -> - if_clauses(Cs, Bs, Ieval#ieval{line=Line}); - -%% Andalso/orelse -expr({'andalso',Line,E1,E2}, Bs0, Ieval) -> - case expr(E1, Bs0, Ieval#ieval{line=Line, top=false}) of - {value,false,_}=Res -> - Res; - {value,true,Bs} -> - {value,Val,_} = expr(E2, Bs, Ieval#ieval{line=Line, top=false}), - {value,Val,Bs}; - {value,Val,Bs} -> - exception(error, {badarg,Val}, Bs, Ieval) - end; -expr({'orelse',Line,E1,E2}, Bs0, Ieval) -> - case expr(E1, Bs0, Ieval#ieval{line=Line, top=false}) of - {value,true,_}=Res -> - Res; - {value,false,Bs} -> - {value,Val,_} = expr(E2, Bs, Ieval#ieval{line=Line, top=false}), - {value,Val,Bs}; - {value,Val,Bs} -> - exception(error, {badarg,Val}, Bs, Ieval) - end; - -%% Matching expression -expr({match,Line,Lhs,Rhs0}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {value,Rhs,Bs1} = expr(Rhs0, Bs0, Ieval#ieval{top=false}), - case match(Lhs, Rhs, Bs1) of - {match,Bs} -> - {value,Rhs,Bs}; - nomatch -> - exception(error, {badmatch,Rhs}, Bs1, Ieval) - end; - -%% Construct a fun -expr({make_fun,Line,Name,Cs}, Bs, #ieval{module=Module}=Ieval) -> - Arity = length(element(3,hd(Cs))), - Info = {{Module,Name},Bs,Cs}, - Fun = - case Arity of - 0 -> fun() -> eval_fun([], Info) end; - 1 -> fun(A) -> eval_fun([A], Info) end; - 2 -> fun(A,B) -> eval_fun([A,B], Info) end; - 3 -> fun(A,B,C) -> eval_fun([A,B,C], Info) end; - 4 -> fun(A,B,C,D) -> eval_fun([A,B,C,D], Info) end; - 5 -> fun(A,B,C,D,E) -> eval_fun([A,B,C,D,E], Info) end; - 6 -> fun(A,B,C,D,E,F) -> eval_fun([A,B,C,D,E,F], Info) end; - 7 -> fun(A,B,C,D,E,F,G) -> - eval_fun([A,B,C,D,E,F,G], Info) end; - 8 -> fun(A,B,C,D,E,F,G,H) -> - eval_fun([A,B,C,D,E,F,G,H], Info) end; - 9 -> fun(A,B,C,D,E,F,G,H,I) -> - eval_fun([A,B,C,D,E,F,G,H,I], Info) end; - 10 -> fun(A,B,C,D,E,F,G,H,I,J) -> - eval_fun([A,B,C,D,E,F,G,H,I,J], Info) end; - 11 -> fun(A,B,C,D,E,F,G,H,I,J,K) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K], Info) end; - 12 -> fun(A,B,C,D,E,F,G,H,I,J,K,L) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L], Info) end; - 13 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M], Info) end; - 14 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N], Info) end; - 15 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O], Info) end; - 16 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P], Info) end; - 17 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q], Info) end; - 18 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R], Info) end; - 19 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S],Info) end; - 20 -> fun(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T) -> - eval_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T],Info) end; - _Other -> - exception(error, {'argument_limit',{'fun',Cs}}, Bs, - Ieval#ieval{line=Line}) - end, - {value,Fun,Bs}; - -%% Construct a fun -expr({make_named_fun,Line,Name,FName,Cs}, Bs, #ieval{module=Module}=Ieval) -> - Arity = length(element(3,hd(Cs))), - Info = {{Module,Name},Bs,Cs,FName}, - Fun = - case Arity of - 0 -> fun RF() -> eval_named_fun([], RF, Info) end; - 1 -> fun RF(A) -> eval_named_fun([A], RF, Info) end; - 2 -> fun RF(A,B) -> - eval_named_fun([A,B], RF, Info) end; - 3 -> fun RF(A,B,C) -> - eval_named_fun([A,B,C], RF, Info) end; - 4 -> fun RF(A,B,C,D) -> - eval_named_fun([A,B,C,D], RF, Info) end; - 5 -> fun RF(A,B,C,D,E) -> - eval_named_fun([A,B,C,D,E], - RF, Info) end; - 6 -> fun RF(A,B,C,D,E,F) -> - eval_named_fun([A,B,C,D,E,F], - RF, Info) end; - 7 -> fun RF(A,B,C,D,E,F,G) -> - eval_named_fun([A,B,C,D,E,F,G], - RF, Info) end; - 8 -> fun RF(A,B,C,D,E,F,G,H) -> - eval_named_fun([A,B,C,D,E,F,G,H], - RF, Info) end; - 9 -> fun RF(A,B,C,D,E,F,G,H,I) -> - eval_named_fun([A,B,C,D,E,F,G,H,I], - RF, Info) end; - 10 -> fun RF(A,B,C,D,E,F,G,H,I,J) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J], - RF, Info) end; - 11 -> fun RF(A,B,C,D,E,F,G,H,I,J,K) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K], - RF, Info) end; - 12 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L], - RF, Info) end; - 13 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M], - RF, Info) end; - 14 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N], - RF, Info) end; - 15 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O], - RF, Info) end; - 16 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P], - RF, Info) end; - 17 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q], - RF, Info) end; - 18 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q, - R], - RF, Info) end; - 19 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q, - R,S], - RF, Info) end; - 20 -> fun RF(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T) -> - eval_named_fun([A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q, - R,S,T], - RF, Info) end; - _Other -> - exception(error, {'argument_limit',{named_fun,FName,Cs}}, Bs, - Ieval#ieval{line=Line}) - end, - {value,Fun,Bs}; - -%% Construct an external fun. -expr({make_ext_fun,Line,MFA0}, Bs0, Ieval0) -> - {[M,F,A],Bs} = eval_list(MFA0, Bs0, Ieval0), - try erlang:make_fun(M, F, A) of - Value -> - {value,Value,Bs} - catch - error:badarg -> - Ieval1 = Ieval0#ieval{line=Line}, - Ieval2 = dbg_istk:push(Bs0, Ieval1, false), - Ieval = Ieval2#ieval{module=erlang,function=make_fun, - arguments=[M,F,A],line=-1}, - exception(error, badarg, Bs, Ieval, true) - end; - -%% Common test adaptation -expr({call_remote,0,ct_line,line,As0,Lc}, Bs0, Ieval0) -> - {As,_Bs} = eval_list(As0, Bs0, Ieval0), - eval_function(ct_line, line, As, Bs0, extern, Ieval0, Lc); - -%% Local function call -expr({local_call,Line,F,As0,Lc}, Bs0, #ieval{module=M} = Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {As,Bs} = eval_list(As0, Bs0, Ieval), - eval_function(M, F, As, Bs, local, Ieval, Lc); - -%% Remote function call -expr({call_remote,Line,M,F,As0,Lc}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {As,Bs} = eval_list(As0, Bs0, Ieval), - eval_function(M, F, As, Bs, extern, Ieval, Lc); - -%% Emulated semantics of some BIFs -expr({dbg,Line,self,[]}, Bs, #ieval{level=Le}) -> - trace(bif, {Le,Line,erlang,self,[]}), - Self = get(self), - trace(return, {Le,Self}), - {value,Self,Bs}; -expr({dbg,Line,raise,As0}, Bs0, #ieval{level=Le}=Ieval0) -> - %% Since stacktraces are emulated, we will - %% need to emulate erlang:raise/3 so that we can - %% capture the stacktrace. - Ieval = Ieval0#ieval{line=Line}, - {[Class,Reason,Stk0]=As,Bs} = eval_list(As0, Bs0, Ieval), - trace(bif, {Le,Line,erlang,raise,As}), - try - %% Evaluate raise/3 for error checking and - %% truncating of the stacktrace to the correct depth. - Error = erlang:raise(Class, Reason, Stk0), - trace(return, {Le,Error}), - {value,Error,Bs} - catch - _:_:Stk -> %Possibly truncated. - StkFun = fun(_) -> Stk end, - do_exception(Class, Reason, StkFun, Bs, Ieval) - end; -expr({dbg,Line,throw,As0}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {[Term],Bs} = eval_list(As0, Bs0, Ieval), - trace(bif, {Le,Line,erlang,throw,[Term]}), - exception(throw, Term, Bs, Ieval); -expr({dbg,Line,error,As0}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {[Term],Bs} = eval_list(As0, Bs0, Ieval), - trace(bif, {Le,Line,erlang,error,[Term]}), - exception(error, Term, Bs, Ieval); -expr({dbg,Line,exit,As0}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {[Term],Bs} = eval_list(As0, Bs0, Ieval), - trace(bif, {Le,Line,erlang,exit,[Term]}), - exception(exit, Term, Bs, Ieval); - -%% Call to "safe" BIF, ie a BIF that can be executed in Meta process -expr({safe_bif,Line,M,F,As0}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval1 = Ieval0#ieval{line=Line}, - {As,Bs} = eval_list(As0, Bs0, Ieval1), - trace(bif, {Le,Line,M,F,As}), - Ieval2 = dbg_istk:push(Bs0, Ieval1, false), - Ieval = Ieval2#ieval{module=M,function=F,arguments=As,line=-1}, - {_,Value,_} = Res = safe_bif(M, F, As, Bs, Ieval), - trace(return, {Le,Value}), - dbg_istk:pop(), - Res; - -%% Call to a BIF that must be evaluated in the correct process -expr({bif,Line,M,F,As0}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval1 = Ieval0#ieval{line=Line}, - {As,Bs} = eval_list(As0, Bs0, Ieval1), - trace(bif, {Le,Line,M,F,As}), - Ieval2 = dbg_istk:push(Bs0, Ieval1, false), - Ieval = Ieval2#ieval{module=M,function=F,arguments=As,line=-1}, - {_,Value,_} = Res = debugged_cmd({apply,M,F,As}, Bs, Ieval), - trace(return, {Le,Value}), - dbg_istk:pop(), - Res; - -%% Call to an operation -expr({op,Line,Op,As0}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {As,Bs} = eval_list(As0, Bs0, Ieval), - try apply(erlang,Op,As) of - Value -> - {value,Value,Bs} - catch - Class:Reason -> - exception(Class, Reason, Bs, Ieval) - end; - -%% apply/2 (fun) -expr({apply_fun,Line,Fun0,As0,Lc}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - FunValue = case expr(Fun0, Bs0, Ieval) of - {value,{dbg_apply,Mx,Fx,Asx},Bsx} -> - debugged_cmd({apply,Mx,Fx,Asx}, - Bsx, Ieval#ieval{level=Le+1}); - OtherFunValue -> - OtherFunValue - end, - case FunValue of - {value,Fun,Bs1} when is_function(Fun) -> - {As,Bs} = eval_list(As0, Bs1, Ieval), - eval_function(undefined, Fun, As, Bs, extern, Ieval, Lc); - {value,{M,F},Bs1} when is_atom(M), is_atom(F) -> - {As,Bs} = eval_list(As0, Bs1, Ieval), - eval_function(M, F, As, Bs, extern, Ieval, Lc); - {value,BadFun,Bs1} -> - exception(error, {badfun,BadFun}, Bs1, Ieval) - end; - -%% apply/3 -expr({apply,Line,As0,Lc}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {[M,F,As],Bs} = eval_list(As0, Bs0, Ieval), - eval_function(M, F, As, Bs, extern, Ieval, Lc); - -%% Receive statement -expr({'receive',Line,Cs}, Bs0, #ieval{level=Le}=Ieval) -> - trace(receivex, {Le,false}), - eval_receive(get(self), Cs, Bs0, Ieval#ieval{line=Line}); - -%% Receive..after statement -expr({'receive',Line,Cs,To,ToExprs}, Bs0, #ieval{level=Le}=Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {value,ToVal,ToBs} = expr(To, Bs0, Ieval#ieval{top=false}), - trace(receivex, {Le,true}), - check_timeoutvalue(ToVal, ToBs, To, Ieval), - {Stamp,_} = statistics(wall_clock), - eval_receive(get(self), Cs, ToVal, ToExprs, ToBs, Bs0, - 0, Stamp, Ieval); - -%% Send (!) -expr({send,Line,To0,Msg0}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - Ieval1 = Ieval#ieval{top=false}, - {value,To,Bs1} = expr(To0, Bs0, Ieval1), - {value,Msg,Bs2} = expr(Msg0, Bs0, Ieval1), - Bs = merge_bindings(Bs2, Bs1, Ieval), - eval_send(To, Msg, Bs, Ieval); - -%% Binary -expr({bin,Line,Fs}, Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line,top=false}, - try - eval_bits:expr_grp(Fs, Bs0, - fun (E, B) -> expr(E, B, Ieval) end, - [], - false) - catch - Class:Reason -> - exception(Class, Reason, Bs0, Ieval) - end; - -%% List comprehension -expr({lc,_Line,E,Qs}, Bs, Ieval) -> - eval_lc(E, Qs, Bs, Ieval); -expr({bc,_Line,E,Qs}, Bs, Ieval) -> - eval_bc(E, Qs, Bs, Ieval); - -%% Brutal exit on unknown expressions/clauses/values/etc. -expr(E, _Bs, _Ieval) -> - erlang:error({'NYI',E}). - -%% Interpreted fun() called from uninterpreted module, recurse -eval_fun(As, {Info,Bs,Cs}) -> - dbg_debugged:eval(?MODULE, eval_fun, [Cs,As,Bs,Info]). - -%% Interpreted named fun() called from uninterpreted module, recurse -eval_named_fun(As, RF, {Info,Bs,Cs,FName}) -> - dbg_debugged:eval(?MODULE, eval_named_fun, [Cs,As,Bs,FName,RF,Info]). - -%% eval_lc(Expr,[Qualifier],Bindings,IevalState) -> -%% {value,Value,Bindings}. -%% This is evaluating list comprehensions "straight out of the book". -%% Copied from rv's implementation in erl_eval. -eval_lc(E, Qs, Bs, Ieval) -> - {value,eval_lc1(E, Qs, Bs, Ieval),Bs}. - -eval_lc1(E, [{generate,Line,P,L0}|Qs], Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {value,L1,Bs1} = expr(L0, Bs0, Ieval#ieval{top=false}), - CompFun = fun(NewBs) -> eval_lc1(E, Qs, NewBs, Ieval) end, - eval_generate(L1, P, Bs1, CompFun, Ieval); -eval_lc1(E, [{b_generate,Line,P,L0}|Qs], Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {value,Bin,_} = expr(L0, Bs0, Ieval#ieval{top=false}), - CompFun = fun(NewBs) -> eval_lc1(E, Qs, NewBs, Ieval) end, - eval_b_generate(Bin, P, Bs0, CompFun, Ieval); -eval_lc1(E, [{guard,Q}|Qs], Bs0, Ieval) -> - case guard(Q, Bs0) of - true -> eval_lc1(E, Qs, Bs0, Ieval); - false -> [] - end; -eval_lc1(E, [Q|Qs], Bs0, Ieval) -> - case expr(Q, Bs0, Ieval#ieval{top=false}) of - {value,true,Bs} -> eval_lc1(E, Qs, Bs, Ieval); - {value,false,_Bs} -> []; - {value,V,Bs} -> exception(error, {bad_filter,V}, Bs, Ieval) - end; -eval_lc1(E, [], Bs, Ieval) -> - {value,V,_} = expr(E, Bs, Ieval#ieval{top=false}), - [V]. - -%% eval_bc(Expr,[Qualifier],Bindings,IevalState) -> -%% {value,Value,Bindings}. -%% This is evaluating list comprehensions "straight out of the book". -%% Copied from rv's implementation in erl_eval. -eval_bc(E, Qs, Bs, Ieval) -> - Val = erlang:list_to_bitstring(eval_bc1(E, Qs, Bs, Ieval)), - {value,Val,Bs}. - -eval_bc1(E, [{generate,Line,P,L0}|Qs], Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {value,L1,Bs1} = expr(L0, Bs0, Ieval#ieval{top=false}), - CompFun = fun(NewBs) -> eval_bc1(E, Qs, NewBs, Ieval) end, - eval_generate(L1, P, Bs1, CompFun, Ieval); -eval_bc1(E, [{b_generate,Line,P,L0}|Qs], Bs0, Ieval0) -> - Ieval = Ieval0#ieval{line=Line}, - {value,Bin,_} = expr(L0, Bs0, Ieval#ieval{top=false}), - CompFun = fun(NewBs) -> eval_bc1(E, Qs, NewBs, Ieval) end, - eval_b_generate(Bin, P, Bs0, CompFun, Ieval); -eval_bc1(E, [{guard,Q}|Qs], Bs0, Ieval) -> - case guard(Q, Bs0) of - true -> eval_bc1(E, Qs, Bs0, Ieval); - false -> [] - end; -eval_bc1(E, [Q|Qs], Bs0, Ieval) -> - case expr(Q, Bs0, Ieval#ieval{top=false}) of - {value,true,Bs} -> eval_bc1(E, Qs, Bs, Ieval); - {value,false,_Bs} -> []; - {value,V,Bs} -> exception(error, {bad_filter,V}, Bs, Ieval) - end; -eval_bc1(E, [], Bs, Ieval) -> - {value,V,_} = expr(E, Bs, Ieval#ieval{top=false}), - [V]. - -eval_generate([V|Rest], P, Bs0, CompFun, Ieval) -> - case catch match1(P, V, erl_eval:new_bindings(), Bs0) of - {match,Bsn} -> - Bs2 = add_bindings(Bsn, Bs0), - CompFun(Bs2) ++ eval_generate(Rest, P, Bs0, CompFun, Ieval); - nomatch -> - eval_generate(Rest, P, Bs0, CompFun, Ieval) - end; -eval_generate([], _P, _Bs0, _CompFun, _Ieval) -> - []; -eval_generate(Term, _P, Bs, _CompFun, Ieval) -> - exception(error, {bad_generator,Term}, Bs, Ieval). - -eval_b_generate(<<_/bitstring>>=Bin, P, Bs0, CompFun, Ieval) -> - Mfun = match_fun(Bs0), - Efun = fun(Exp, Bs) -> expr(Exp, Bs, #ieval{}) end, - case eval_bits:bin_gen(P, Bin, erl_eval:new_bindings(), Bs0, Mfun, Efun) of - {match,Rest,Bs1} -> - Bs2 = add_bindings(Bs1, Bs0), - CompFun(Bs2) ++ eval_b_generate(Rest, P, Bs0, CompFun, Ieval); - {nomatch,Rest} -> - eval_b_generate(Rest, P, Bs0, CompFun, Ieval); - done -> - [] - end; -eval_b_generate(Term, _P, Bs, _CompFun, Ieval) -> - exception(error, {bad_generator,Term}, Bs, Ieval). - -safe_bif(M, F, As, Bs, Ieval0) -> - try apply(M, F, As) of - Value -> - {value,Value,Bs} - catch - Class:Reason:Stk -> - [{_,_,_,Info}|_] = Stk, - Ieval = case lists:keyfind(error_info, 1, Info) of - false -> Ieval0#ieval{error_info=[]}; - ErrorInfo -> Ieval0#ieval{error_info=[ErrorInfo]} - end, - exception(Class, Reason, Bs, Ieval, true) - end. - -eval_send(To, Msg, Bs, Ieval) -> - try To ! Msg of - Msg -> - trace(send, {To,Msg}), - {value,Msg,Bs} - catch - Class:Reason -> - exception(Class, Reason, Bs, Ieval) - end. - -%% Start tracing of messages before fetching current messages in -%% the queue to make sure that no messages are lost. -eval_receive(Debugged, Cs, Bs0, - #ieval{module=M,line=Line,level=Le}=Ieval) -> - %% To avoid private message passing protocol between META - %% and interpreted process. - erlang:trace(Debugged,true,['receive']), - {_,Msgs} = erlang:process_info(Debugged,messages), - case receive_clauses(Cs, Bs0, Msgs) of - nomatch -> - dbg_iserver:cast(get(int), {set_status, self(),waiting,{}}), - dbg_icmd:tell_attached({wait_at,M,Line,Le}), - eval_receive1(Debugged, Cs, Bs0, Ieval); - {eval,B,Bs,Msg} -> - rec_mess(Debugged, Msg, Bs, Ieval), - seq(B, Bs, Ieval) - end. - -eval_receive1(Debugged, Cs, Bs0, Ieval) -> - Msgs = do_receive(Debugged, Bs0, Ieval), - case receive_clauses(Cs, Bs0, Msgs) of - nomatch -> - eval_receive1(Debugged, Cs, Bs0, Ieval); - {eval,B,Bs,Msg} -> - rec_mess(Debugged, Msg, Bs0, Ieval), - dbg_iserver:cast(get(int), {set_status, self(),running,{}}), - dbg_icmd:tell_attached(running), - seq(B, Bs, Ieval) - end. - -check_timeoutvalue(ToVal,_,_,_) when is_integer(ToVal), ToVal>=0 -> true; -check_timeoutvalue(infinity,_,_,_) -> true; -check_timeoutvalue(_ToVal, ToBs, To, Ieval) -> - Line = element(2, To), - exception(error, timeout_value, ToBs, Ieval#ieval{line=Line}). - -eval_receive(Debugged, Cs, 0, ToExprs, ToBs, Bs0, 0, _Stamp, Ieval) -> - {_,Msgs} = erlang:process_info(Debugged,messages), - case receive_clauses(Cs, Bs0, Msgs) of - nomatch -> - trace(received,null), - seq(ToExprs, ToBs, Ieval); - {eval,B,Bs,Msg} -> - rec_mess_no_trace(Debugged, Msg, Bs0, Ieval), - seq(B, Bs, Ieval) - end; -eval_receive(Debugged, Cs, ToVal, ToExprs, ToBs, Bs0, - 0, Stamp, #ieval{module=M,line=Line,level=Le}=Ieval)-> - erlang:trace(Debugged,true,['receive']), - {_,Msgs} = erlang:process_info(Debugged,messages), - case receive_clauses(Cs, Bs0, Msgs) of - nomatch -> - {Stamp1,Time1} = newtime(Stamp,ToVal), - dbg_iserver:cast(get(int), {set_status, self(),waiting,{}}), - dbg_icmd:tell_attached({wait_after_at,M,Line,Le}), - eval_receive(Debugged, Cs, Time1, ToExprs, ToBs, Bs0, - infinity,Stamp1, Ieval); - {eval,B,Bs,Msg} -> - rec_mess(Debugged, Msg, Bs0, Ieval), - seq(B, Bs, Ieval) - end; -eval_receive(Debugged, Cs, ToVal, ToExprs, ToBs, Bs0, - _, Stamp, Ieval) -> - case do_receive(Debugged, ToVal, Stamp, Bs0, Ieval) of - timeout -> - trace(received,null), - rec_mess(Debugged), - dbg_iserver:cast(get(int), {set_status, self(),running,{}}), - dbg_icmd:tell_attached(running), - seq(ToExprs, ToBs, Ieval); - Msgs -> - case receive_clauses(Cs, Bs0, Msgs) of - nomatch -> - {Stamp1,Time1} = newtime(Stamp,ToVal), - eval_receive(Debugged, Cs, Time1, ToExprs, ToBs, - Bs0, infinity,Stamp1, Ieval); - {eval,B,Bs,Msg} -> - rec_mess(Debugged, Msg, Bs0, Ieval), - dbg_iserver:cast(get(int), - {set_status, self(), running, {}}), - dbg_icmd:tell_attached(running), - seq(B, Bs, Ieval) - end - end. - -do_receive(Debugged, Bs, Ieval) -> - receive - {trace,Debugged,'receive',Msg} -> - [Msg]; - Msg -> - check_exit_msg(Msg, Bs, Ieval), - dbg_icmd:handle_msg(Msg, wait_at, Bs, Ieval), - do_receive(Debugged, Bs, Ieval) - end. - -do_receive(Debugged, Time, Stamp, Bs, Ieval) -> - receive - {trace,Debugged,'receive',Msg} -> - [Msg]; - {user, timeout} -> - timeout; - Msg -> - check_exit_msg(Msg, Bs, Ieval), - dbg_icmd:handle_msg(Msg, wait_after_at, Bs, Ieval), - {Stamp1,Time1} = newtime(Stamp,Time), - do_receive(Debugged, Time1, Stamp1, Bs, Ieval) - after Time -> - timeout - end. - -newtime(Stamp,infinity) -> - {Stamp,infinity}; -newtime(Stamp,Time) -> - {Stamp1,_} = statistics(wall_clock), - case Time - (Stamp1 - Stamp) of - NewTime when NewTime > 0 -> - {Stamp1,NewTime}; - _ -> - {Stamp1,0} - end. - -rec_mess(Debugged, Msg, Bs, Ieval) -> - erlang:trace(Debugged, false, ['receive']), - flush_traces(Debugged), - Debugged ! {sys,self(),{'receive',Msg}}, - rec_ack(Debugged, Bs, Ieval). - -rec_mess(Debugged) -> - erlang:trace(Debugged, false, ['receive']), - flush_traces(Debugged). - -rec_mess_no_trace(Debugged, Msg, Bs, Ieval) -> - Debugged ! {sys,self(),{'receive',Msg}}, - rec_ack(Debugged, Bs, Ieval). - -rec_ack(Debugged, Bs, Ieval) -> - receive - {Debugged,rec_acked} -> - true; - Msg -> - check_exit_msg(Msg, Bs, Ieval), - io:format("***WARNING*** Unexp msg ~p, ieval ~p~n", - [Msg, Ieval]) - end. - -flush_traces(Debugged) -> - receive - {trace,Debugged,'receive',_} -> - flush_traces(Debugged) - after 0 -> - true - end. - -%% eval_list(ExpressionList, Bindings, Ieval) -%% Evaluate a list of expressions "in parallel" at the same level. -eval_list(Es, Bs, Ieval) -> - eval_list_1(Es, [], Bs, Bs, Ieval#ieval{top=false}). - -eval_list_1([E|Es], Vs, BsOrig, Bs0, Ieval) -> - {value,V,Bs1} = expr(E, BsOrig, Ieval), - eval_list_1(Es, [V|Vs], BsOrig, merge_bindings(Bs1, Bs0, Ieval), Ieval); -eval_list_1([], Vs, _, Bs, _Ieval) -> - {lists:reverse(Vs,[]),Bs}. - -%% if_clauses(Clauses, Bindings, Ieval) -if_clauses([{clause,_,[],G,B}|Cs], Bs, Ieval) -> - case guard(G, Bs) of - true -> - seq(B, Bs, Ieval); - false -> - if_clauses(Cs, Bs, Ieval) - end; -if_clauses([], Bs, Ieval) -> - exception(error, if_clause, Bs, Ieval). - -%% case_clauses(Value, Clauses, Bindings, Error, Ieval) -%% Error = try_clause | case_clause -case_clauses(Val, [{clause,_,[P],G,B}|Cs], Bs0, Error, Ieval) -> - case match(P, Val, Bs0) of - {match,Bs} -> - case guard(G, Bs) of - true -> - seq(B, Bs, Ieval); - false -> - case_clauses(Val, Cs, Bs0, Error, Ieval) - end; - nomatch -> - case_clauses(Val, Cs, Bs0, Error, Ieval) - end; -case_clauses(Val,[], Bs, Error, Ieval) -> - exception(error, {Error,Val}, Bs, Ieval). - -%% catch_clauses(Exception, Clauses, Bindings, Ieval) -%% Exception = {Class,Reason,[]} -catch_clauses(Exception, [{clause,_,[P],G,B}|CatchCs], Bs0, Ieval) -> - case match(P, Exception, Bs0) of - {match,Bs} -> - case guard(G, Bs) of - true -> - %% Exception caught, reset exit info - put(exit_info, undefined), - dbg_istk:pop(Ieval#ieval.level), - seq(B, Bs, Ieval); - false -> - catch_clauses(Exception, CatchCs, Bs0, Ieval) - end; - nomatch -> - catch_clauses(Exception, CatchCs, Bs0, Ieval) - end; -catch_clauses({Class,Reason,_}, [], _Bs, _Ieval) -> - erlang:Class(Reason). - -receive_clauses(Cs, Bs0, [Msg|Msgs]) -> - case rec_clauses(Cs, Bs0, Msg) of - nomatch -> - receive_clauses(Cs, Bs0, Msgs); - {eval,B,Bs} -> - {eval,B,Bs,Msg} - end; -receive_clauses(_, _, []) -> - nomatch. - -rec_clauses([{clause,_,Pars,G,B}|Cs], Bs0, Msg) -> - case rec_match(Pars, Msg, Bs0) of - {match,Bs} -> - case guard(G, Bs) of - true -> - trace(received, Msg), - {eval,B,Bs}; - false -> - rec_clauses(Cs, Bs0, Msg) - end; - nomatch -> - rec_clauses(Cs, Bs0, Msg) - end; -rec_clauses([], _, _) -> - nomatch. - -%% guard(GuardTests,Bindings) -%% Evaluate a list of guards. -guard([], _) -> true; -guard(Gs, Bs) -> or_guard(Gs, Bs). - -or_guard([G|Gs], Bs) -> - %% Short-circuit OR. - and_guard(G, Bs) orelse or_guard(Gs, Bs); -or_guard([], _) -> false. - -and_guard([G|Gs], Bs) -> - %% Short-circuit AND. - case catch guard_expr(G, Bs) of - {value,true} -> and_guard(Gs, Bs); - _ -> false - end; -and_guard([],_) -> true. - -guard_exprs([A0|As0], Bs) -> - {value,A} = guard_expr(A0, Bs), - {values,As} = guard_exprs(As0, Bs), - {values,[A|As]}; -guard_exprs([], _) -> - {values,[]}. - -guard_expr({'andalso',_,E1,E2}, Bs) -> - case guard_expr(E1, Bs) of - {value,false}=Res -> Res; - {value,true} -> - case guard_expr(E2, Bs) of - {value,_Val}=Res -> Res - end - end; -guard_expr({'orelse',_,E1,E2}, Bs) -> - case guard_expr(E1, Bs) of - {value,true}=Res -> Res; - {value,false} -> - case guard_expr(E2, Bs) of - {value,_Val}=Res -> Res - end - end; -guard_expr({dbg,_,self,[]}, _) -> - {value,get(self)}; -guard_expr({safe_bif,_,erlang,'not',As0}, Bs) -> - {values,As} = guard_exprs(As0, Bs), - {value,apply(erlang, 'not', As)}; -guard_expr({safe_bif,_,Mod,Func,As0}, Bs) -> - {values,As} = guard_exprs(As0, Bs), - {value,apply(Mod, Func, As)}; -guard_expr({var,_,V}, Bs) -> - {value,_} = binding(V, Bs); -guard_expr({value,_,Val}, _Bs) -> - {value,Val}; -guard_expr({cons,_,H0,T0}, Bs) -> - {value,H} = guard_expr(H0, Bs), - {value,T} = guard_expr(T0, Bs), - {value,[H|T]}; -guard_expr({tuple,_,Es0}, Bs) -> - {values,Es} = guard_exprs(Es0, Bs), - {value,list_to_tuple(Es)}; -guard_expr({map,_,Fs}, Bs0) -> - F = fun (G0, B0, _) -> - {value,G} = guard_expr(G0, B0), - {value,G,B0} - end, - {Map,_} = eval_new_map_fields(Fs, Bs0, #ieval{top=false}, F), - {value,Map}; -guard_expr({map,_,E0,Fs0}, Bs) -> - {value,E} = guard_expr(E0, Bs), - Fs = eval_map_fields_guard(Fs0, Bs), - Value = lists:foldl(fun ({map_assoc,K,V}, Mi) -> maps:put(K,V,Mi); - ({map_exact,K,V}, Mi) -> maps:update(K,V,Mi) end, - E, Fs), - {value,Value}; -guard_expr({bin,_,Flds}, Bs) -> - {value,V,_Bs} = - eval_bits:expr_grp(Flds, Bs, - fun(E,B) -> - {value,V} = guard_expr(E,B), - {value,V,B} - end, [], false), - {value,V}. - - -%% eval_map_fields([Field], Bindings, IEvalState) -> -%% {[{map_assoc | map_exact,Key,Value}],Bindings} - -eval_map_fields(Fs, Bs, Ieval) -> - eval_map_fields(Fs, Bs, Ieval, fun expr/3). - -eval_map_fields_guard(Fs0, Bs) -> - {Fs,_} = eval_map_fields(Fs0, Bs, #ieval{}, - fun (G0, Bs0, _) -> - {value,G} = guard_expr(G0, Bs0), - {value,G,Bs0} - end), - Fs. - -eval_map_fields(Fs, Bs, Ieval, F) -> - eval_map_fields(Fs, Bs, Ieval, F, []). - -eval_map_fields([{map_field_assoc,Line,K0,V0}|Fs], Bs0, Ieval0, F, Acc) -> - Ieval = Ieval0#ieval{line=Line}, - {value,K,Bs1} = F(K0, Bs0, Ieval), - {value,V,Bs2} = F(V0, Bs1, Ieval), - eval_map_fields(Fs, Bs2, Ieval0, F, [{map_assoc,K,V}|Acc]); -eval_map_fields([{map_field_exact,Line,K0,V0}|Fs], Bs0, Ieval0, F, Acc) -> - Ieval = Ieval0#ieval{line=Line}, - {value,K,Bs1} = F(K0, Bs0, Ieval), - {value,V,Bs2} = F(V0, Bs1, Ieval), - eval_map_fields(Fs, Bs2, Ieval0, F, [{map_exact,K,V}|Acc]); -eval_map_fields([], Bs, _Ieval, _F, Acc) -> - {lists:reverse(Acc),Bs}. - -eval_new_map_fields(Fs, Bs0, Ieval, F) -> - eval_new_map_fields(Fs, Bs0, Ieval, F, []). - -eval_new_map_fields([{Line,K0,V0}|Fs], Bs0, Ieval0, F, Acc) -> - Ieval = Ieval0#ieval{line=Line}, - {value,K,Bs1} = F(K0, Bs0, Ieval), - {value,V,Bs2} = F(V0, Bs1, Ieval), - eval_new_map_fields(Fs, Bs2, Ieval0, F, [{K,V}|Acc]); -eval_new_map_fields([], Bs, _, _, Acc) -> - {maps:from_list(lists:reverse(Acc)),Bs}. - -%% match(Pattern,Term,Bs) -> {match,Bs} | nomatch -match(Pat, Term, Bs) -> - try match1(Pat, Term, Bs, Bs) - catch - Result -> Result - end. - -match1({value,_,V}, V, Bs,_BBs) -> - {match,Bs}; -match1({var,_,'_'}, Term, Bs,_BBs) -> % Anonymous variable matches - {match,add_anon(Term, Bs)}; % everything,save it anyway -match1({var,_,Name}, Term, Bs, _BBs) -> - case binding(Name, Bs) of - {value,Term} -> - {match,Bs}; - {value,_} -> - throw(nomatch); - unbound -> - {match,[{Name,Term}|Bs]} % Add the new binding - end; -match1({match,_,Pat1,Pat2}, Term, Bs0, BBs) -> - {match,Bs1} = match1(Pat1, Term, Bs0, BBs), - match1(Pat2, Term, Bs1, BBs); -match1({cons,_,H,T}, [H1|T1], Bs0, BBs) -> - {match,Bs} = match1(H, H1, Bs0, BBs), - match1(T, T1, Bs, BBs); -match1({tuple,_,Elts}, Tuple, Bs, BBs) - when length(Elts) =:= tuple_size(Tuple) -> - match_tuple(Elts, Tuple, 1, Bs, BBs); -match1({map,_,Fields}, Map, Bs, BBs) when is_map(Map) -> - match_map(Fields, Map, Bs, BBs); -match1({bin,_,Fs}, B, Bs0, BBs) when is_bitstring(B) -> - try eval_bits:match_bits(Fs, B, Bs0, BBs, - match_fun(BBs), - fun(E, Bs) -> expr(E, Bs, #ieval{}) end, - false) - catch - _:_ -> throw(nomatch) - end; -match1(_,_,_,_) -> - throw(nomatch). - -match_fun(BBs) -> - fun(match, {L,R,Bs}) -> match1(L, R, Bs, BBs); - (binding, {Name,Bs}) -> binding(Name, Bs); - (add_binding, {Name,Val,Bs}) -> add_binding(Name, Val, Bs) - end. - -match_tuple([E|Es], Tuple, I, Bs0, BBs) -> - {match,Bs} = match1(E, element(I, Tuple), Bs0, BBs), - match_tuple(Es, Tuple, I+1, Bs, BBs); -match_tuple([], _, _, Bs, _BBs) -> - {match,Bs}. - -match_map([{map_field_exact,_,K0,Pat}|Fs], Map, Bs0, BBs) -> - try guard_expr(K0, BBs) of - {value,K} -> - case Map of - #{K := Value} -> - {match,Bs} = match1(Pat, Value, Bs0, BBs), - match_map(Fs, Map, Bs, BBs); - #{} -> - throw(nomatch) - end - catch _:_ -> - throw(nomatch) - end; -match_map([], _, Bs, _BBs) -> - {match,Bs}. - -head_match([Par|Pars], [Arg|Args], Bs0, BBs) -> - try match1(Par, Arg, Bs0, BBs) of - {match,Bs} -> head_match(Pars, Args, Bs, BBs) - catch - Result -> Result - end; -head_match([],[],Bs,_) -> {match,Bs}. - -rec_match([Par],Msg,Bs0) -> - match(Par,Msg,Bs0). - -binding(Name,[{Name,Val}|_]) -> - {value,Val}; -binding(Name,[_,{Name,Val}|_]) -> - {value,Val}; -binding(Name,[_,_,{Name,Val}|_]) -> - {value,Val}; -binding(Name,[_,_,_,{Name,Val}|_]) -> - {value,Val}; -binding(Name,[_,_,_,_,{Name,Val}|_]) -> - {value,Val}; -binding(Name,[_,_,_,_,_,{Name,Val}|_]) -> - {value,Val}; -binding(Name,[_,_,_,_,_,_|Bs]) -> - binding(Name,Bs); -binding(Name,[_,_,_,_,_|Bs]) -> - binding(Name,Bs); -binding(Name,[_,_,_,_|Bs]) -> - binding(Name,Bs); -binding(Name,[_,_,_|Bs]) -> - binding(Name,Bs); -binding(Name,[_,_|Bs]) -> - binding(Name,Bs); -binding(Name,[_|Bs]) -> - binding(Name,Bs); -binding(_,[]) -> - unbound. - -add_anon(Val,[{'_',_}|Bs]) -> - [{'_',Val}|Bs]; -add_anon(Val,[B1,{'_',_}|Bs]) -> - [B1,{'_',Val}|Bs]; -add_anon(Val,[B1,B2,{'_',_}|Bs]) -> - [B1,B2,{'_',Val}|Bs]; -add_anon(Val,[B1,B2,B3,{'_',_}|Bs]) -> - [B1,B2,B3,{'_',Val}|Bs]; -add_anon(Val,[B1,B2,B3,B4,{'_',_}|Bs]) -> - [B1,B2,B3,B4,{'_',Val}|Bs]; -add_anon(Val,[B1,B2,B3,B4,B5,{'_',_}|Bs]) -> - [B1,B2,B3,B4,B5,{'_',Val}|Bs]; -add_anon(Val,[B1,B2,B3,B4,B5,B6|Bs]) -> - [B1,B2,B3,B4,B5,B6|add_anon(Val,Bs)]; -add_anon(Val,[B1,B2,B3,B4,B5|Bs]) -> - [B1,B2,B3,B4,B5|add_anon(Val,Bs)]; -add_anon(Val,[B1,B2,B3,B4|Bs]) -> - [B1,B2,B3,B4|add_anon(Val,Bs)]; -add_anon(Val,[B1,B2,B3|Bs]) -> - [B1,B2,B3|add_anon(Val,Bs)]; -add_anon(Val,[B1,B2|Bs]) -> - [B1,B2|add_anon(Val,Bs)]; -add_anon(Val,[B1|Bs]) -> - [B1|add_anon(Val,Bs)]; -add_anon(Val,[]) -> - [{'_',Val}]. - -%% merge_bindings(Bindings1, Bindings2, Ieval) -%% Merge bindings detecting bad matches. -%% Special case '_',save the new one !!! -%% Bindings1 is the newest bindings. -merge_bindings(Bs, Bs, _Ieval) -> - Bs; % Identical bindings -merge_bindings([{Name,V}|B1s], B2s, Ieval) -> - case binding(Name, B2s) of - {value,V} -> % Already there, and the same - merge_bindings(B1s, B2s, Ieval); - {value,_} when Name =:= '_' -> % Already there, but anonymous - B2s1 = lists:keydelete('_', 1, B2s), - [{Name,V}|merge_bindings(B1s, B2s1, Ieval)]; - {value,_} -> % Already there, but different => badmatch - exception(error, {badmatch,V}, B2s, Ieval); - unbound -> % Not there,add it - [{Name,V}|merge_bindings(B1s, B2s, Ieval)] - end; -merge_bindings([], B2s, _Ieval) -> - B2s. - -%% add_bindings(Bindings1,Bindings2) -%% Add Bindings1 to Bindings2. Bindings in -%% Bindings1 hides bindings in Bindings2. -%% Used in list comprehensions (and funs). -add_bindings(Bs1,[]) -> - Bs1; -add_bindings([{Name,V}|Bs],ToBs0) -> - ToBs = add_binding(Name,V,ToBs0), - add_bindings(Bs,ToBs); -add_bindings([],ToBs) -> - ToBs. - -add_binding(N,Val,[{N,_}|Bs]) -> - [{N,Val}|Bs]; -add_binding(N,Val,[B1,{N,_}|Bs]) -> - [B1,{N,Val}|Bs]; -add_binding(N,Val,[B1,B2,{N,_}|Bs]) -> - [B1,B2,{N,Val}|Bs]; -add_binding(N,Val,[B1,B2,B3,{N,_}|Bs]) -> - [B1,B2,B3,{N,Val}|Bs]; -add_binding(N,Val,[B1,B2,B3,B4,{N,_}|Bs]) -> - [B1,B2,B3,B4,{N,Val}|Bs]; -add_binding(N,Val,[B1,B2,B3,B4,B5,{N,_}|Bs]) -> - [B1,B2,B3,B4,B5,{N,Val}|Bs]; -add_binding(N,Val,[B1,B2,B3,B4,B5,B6|Bs]) -> - [B1,B2,B3,B4,B5,B6|add_binding(N,Val,Bs)]; -add_binding(N,Val,[B1,B2,B3,B4,B5|Bs]) -> - [B1,B2,B3,B4,B5|add_binding(N,Val,Bs)]; -add_binding(N,Val,[B1,B2,B3,B4|Bs]) -> - [B1,B2,B3,B4|add_binding(N,Val,Bs)]; -add_binding(N,Val,[B1,B2,B3|Bs]) -> - [B1,B2,B3|add_binding(N,Val,Bs)]; -add_binding(N,Val,[B1,B2|Bs]) -> - [B1,B2|add_binding(N,Val,Bs)]; -add_binding(N,Val,[B1|Bs]) -> - [B1|add_binding(N,Val,Bs)]; -add_binding(N,Val,[]) -> - [{N,Val}]. - -remove_temporary_bindings(Bs0) -> - [{Var,Val} || {Var, Val} <- Bs0, hd(atom_to_list(Var)) =/= $%]. - -%% get_stacktrace() -> Stacktrace -%% Return the latest stacktrace for the process. -get_stacktrace() -> - case get(stacktrace) of - MakeStk when is_function(MakeStk, 1) -> - %% The stacktrace has not been constructed before. - %% Construct it and remember the result. - Depth = erlang:system_flag(backtrace_depth, 8), - erlang:system_flag(backtrace_depth, Depth), - Stk = MakeStk(Depth), - put(stacktrace, Stk), - Stk; - Stk when is_list(Stk) -> - Stk - end. - -%%% eval record exprs -%%% copied from stdlib/src/shell.erl - -expand_records(Expr, Mod) -> - try - expand_records_1(used_record_defs(Expr, Mod), Expr) - catch _:_Err:_ST -> - Expr - end. - -expand_records_1([], Expr) -> - Expr; -expand_records_1(UsedRecords, Expr) -> - A = erl_anno:new(1), - RecordDefs = [{attribute, A, record, - {Name, [{record_field,A,{atom,A,F}} || F <- Fields]} - } || {Name,Fields} <- UsedRecords], - Forms0 = RecordDefs ++ [{function,A,foo,0,[{clause,A,[],[],[Expr]}]}], - Forms = erl_expand_records:module(Forms0, [strict_record_tests]), - {function,A,foo,0,[{clause,A,[],[],[NE]}]} = lists:last(Forms), - NE. - -used_record_defs(E, Mod) -> - case mod_recs(Mod) of - [] -> []; - Recs0 -> - Recs = [{Name, Fields} || {{_,_,Name,_}, Fields} <- Recs0], - L0 = used_record_defs(E, maps:from_list(Recs), [], []), - L1 = lists:zip(L0, lists:seq(1, length(L0))), - L2 = lists:keysort(2, lists:ukeysort(1, L1)), - [R || {R, _} <- L2] - end. - -used_record_defs(E, Recs, Skip, Used) -> - case used_records(E) of - {name,Name,E1} -> - case lists:member(Name, Skip) of - true -> - used_record_defs(E1, Recs, Skip, Used); - false -> - case maps:get(Name, Recs, undefined) of - undefined -> - used_record_defs(E1, Recs, [Name|Skip], Used); - Fields -> - used_record_defs(E1, Recs, [Name|Skip], [{Name, Fields}|Used]) - end - end; - {expr,[E1 | Es]} -> - used_record_defs(Es, Recs, Skip, used_record_defs(E1, Recs, Skip, Used)); - _ -> - Used - end. - -mod_recs(Mod) -> - case db_ref(Mod) of - not_found -> - []; - ModDb -> - dbg_idb:match_object(ModDb, {{record, Mod, '_', '_'}, '_'}) - end. - -used_records({record_index,_,Name,F}) -> - {name, Name, F}; -used_records({record,_,Name,Is}) -> - {name, Name, Is}; -used_records({record_field,_,R,Name,F}) -> - {name, Name, [R | F]}; -used_records({record,_,R,Name,Ups}) -> - {name, Name, [R | Ups]}; -used_records({record_field,_,R,F}) -> % illegal - {expr, [R | F]}; -used_records({call,_,{atom,_,record},[A,{atom,_,Name}]}) -> - {name, Name, A}; -used_records({call,_,{atom,_,is_record},[A,{atom,_,Name}]}) -> - {name, Name, A}; -used_records({call,_,{remote,_,{atom,_,erlang},{atom,_,is_record}}, - [A,{atom,_,Name}]}) -> - {name, Name, A}; -used_records({call,_,{atom,_,record_info},[A,{atom,_,Name}]}) -> - {name, Name, A}; -used_records({call,A,{tuple,_,[M,F]},As}) -> - used_records({call,A,{remote,A,M,F},As}); -used_records({type,_,record,[{atom,_,Name}|Fs]}) -> - {name, Name, Fs}; -used_records(T) when is_tuple(T) -> - {expr, tuple_to_list(T)}; -used_records(E) -> - {expr, E}. diff --git a/debugger/erlide_debugger_24/src/dbg_ieval.hrl b/debugger/erlide_debugger_24/src/dbg_ieval.hrl deleted file mode 100644 index 990692c..0000000 --- a/debugger/erlide_debugger_24/src/dbg_ieval.hrl +++ /dev/null @@ -1,32 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2005-2021. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --record(ieval, {level = 1, % Current call level - line = -1, % Current source code line (of module) - module, % MFA which called the currently - function, % interpreted function - arguments, % - error_info = [], % [{error_info,Map}] | [] - - %% True if the current expression is at the top level - %% (i.e. the next call will leave interpreted code). - top = false - }). - --define(DB_REF_KEY(Mod), {Mod,db}). diff --git a/debugger/erlide_debugger_24/src/dbg_iload.erl b/debugger/erlide_debugger_24/src/dbg_iload.erl deleted file mode 100644 index 888de26..0000000 --- a/debugger/erlide_debugger_24/src/dbg_iload.erl +++ /dev/null @@ -1,1036 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2022. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(dbg_iload). - --export([load_mod/4]). - -%%==================================================================== -%% External exports -%%==================================================================== - -%%-------------------------------------------------------------------- -%% load_mod(Mod, File, Binary, Db) -> {ok, Mod} -%% Mod = module() -%% File = string() Source file (including path) -%% Binary = binary() -%% Db = ETS identifier -%% Load a new module into the database. -%% -%% We want the loading of a module to be synchronous so that no other -%% process tries to interpret code in a module not being completely -%% loaded. This is achieved as this function is called from -%% dbg_iserver. We are suspended until the module has been loaded. -%%-------------------------------------------------------------------- --spec load_mod(Mod, file:filename(), binary(), ets:tid()) -> - {'ok', Mod} when Mod :: atom(). - -load_mod(Mod, File, Binary, Db) -> - Flag = process_flag(trap_exit, true), - Pid = spawn_link(load_mod1(Mod, File, Binary, Db)), - receive - {'EXIT', Pid, What} -> - process_flag(trap_exit, Flag), - What - end. - --spec load_mod1(atom(), file:filename(), binary(), ets:tid()) -> - fun(() -> no_return()). - -load_mod1(Mod, File, Binary, Db) -> - fun() -> - store_module(Mod, File, Binary, Db), - exit({ok, Mod}) - end. - -%%==================================================================== -%% Internal functions -%%==================================================================== - -store_module(Mod, File, Binary, Db) -> - {interpreter_module, Exp, Abst, Src, MD5} = binary_to_term(Binary), - Forms0 = case abstr(Abst) of - {abstract_v1,_} -> - exit({Mod,too_old_beam_file}); - {abstract_v2,_} -> - exit({Mod,too_old_beam_file}); - {raw_abstract_v1,Code} -> - Code - end, - dbg_idb:insert(Db, mod_file, File), - dbg_idb:insert(Db, defs, []), - - put(vcount, 0), - put(fun_count, 0), - put(funs, []), - put(mod_md5, MD5), - - Forms1 = interpret_file_attribute(Forms0), - {Forms,Ctype} = standard_transforms(Forms1), - store_forms(Forms, Mod, Db, #{exp=>Exp, ctype => Ctype}), - - erase(mod_md5), - erase(current_function), - %% store_funs(Db, Mod), - erase(vcount), - erase(funs), - erase(fun_count), - - NewBinary = store_mod_line_no(Mod, Db, binary_to_list(Src)), - dbg_idb:insert(Db, mod_bin, NewBinary), - dbg_idb:insert(Db, mod_raw, <>). %% Add eos - -standard_transforms(Forms0) -> - Forms = erl_internal:add_predefined_functions(Forms0), - Ctype = init_calltype(Forms), - {Forms, Ctype}. - -init_calltype(Forms) -> - Locals = [{{Name,Arity},local} || {function,_,Name,Arity,_} <- Forms], - Ctype = maps:from_list(Locals), - init_calltype_imports(Forms, Ctype). - -init_calltype_imports([{attribute,_,import,{Mod,Fs}}|T], Ctype0) -> - true = is_atom(Mod), - Ctype = lists:foldl(fun(FA, Acc) -> - Acc#{FA=>{imported,Mod}} - end, Ctype0, Fs), - init_calltype_imports(T, Ctype); -init_calltype_imports([_|T], Ctype) -> - init_calltype_imports(T, Ctype); -init_calltype_imports([], Ctype) -> Ctype. - -%% Adjust line numbers using the file/2 attribute. -%% Also take the absolute value of line numbers. -%% This simple fix will make the marker point at the correct line -%% (assuming the file attributes are correct) in the source; it will -%% not point at code in included files. -interpret_file_attribute(Code) -> - epp:interpret_file_attribute(Code). - -abstr(Bin) when is_binary(Bin) -> binary_to_term(Bin); -abstr(Term) -> Term. - -% store_funs(Db, Mod) -> -% store_funs_1(get(funs), Db, Mod). - -% store_funs_1([{Name,Index,Uniq,_,_,Arity,Cs}|Fs], Db, Mod) -> -% dbg_idb:insert(Db, {Mod,Name,Arity,false}, Cs), -% dbg_idb:insert(Db, {'fun',Mod,Index,Uniq}, {Name,Arity,Cs}), -% store_funs_1(Fs, Db, Mod); -% store_funs_1([], _, _) -> ok. - -store_forms([{function,_,Name,Arity,Cs0}|Fs], Mod, Db, #{exp:=Exp} = St) -> - FA = {Name,Arity}, - put(current_function, FA), - Cs = clauses(Cs0,St), - Exported = lists:member(FA, Exp), - dbg_idb:insert(Db, {Mod,Name,Arity,Exported}, Cs), - store_forms(Fs, Mod, Db, St); -store_forms([{attribute,_,record,{Name,Defs}}|Fs], Mod, Db, St) -> - NDefs = normalise_rec_fields(Defs), - Fields = [F || {record_field, _, {atom, _, F}, _} <- NDefs], - dbg_idb:insert(Db, {record,Mod,Name,length(Fields)}, Fields), - Recs = maps:get(recs, St, #{}), - store_forms(Fs, Mod, Db, St#{recs => Recs#{Name => NDefs}}); -store_forms([{attribute,_,_Name,_Val}|Fs], Mod, Db, St) -> - store_forms(Fs, Mod, Db, St); -store_forms([_|Fs], Mod, Db, St) -> - %% Ignore other forms such as {eof,_} or {warning,_}. - store_forms(Fs, Mod, Db, St); -store_forms([], _, _, _) -> - ok. - -store_mod_line_no(Mod, Db, Contents) -> - store_mod_line_no(Mod, Db, Contents, 1, 0, []). - -store_mod_line_no(_, _, [], _, _, NewCont) -> - list_to_binary(lists:reverse(NewCont)); -store_mod_line_no(Mod, Db, Contents, LineNo, Pos, NewCont) when is_integer(LineNo) -> - {ContTail,Pos1,NewCont1} = store_line(Mod, Db, Contents, LineNo, Pos, NewCont), - store_mod_line_no(Mod, Db, ContTail, LineNo+1, Pos1, NewCont1). - -store_line(_, Db, Contents, LineNo, Pos, NewCont) -> - {ContHead,ContTail,PosNL} = get_nl(Contents,Pos+8,[]), - dbg_idb:insert(Db,LineNo,{Pos+8,PosNL}), - {ContTail,PosNL+1,[make_lineno(LineNo, 8, ContHead)|NewCont]}. - -make_lineno(N, P, Acc) -> - S = integer_to_list(N), - S ++ [$:|spaces(P-length(S)-1, Acc)]. - -spaces(P, Acc) when P > 0 -> - spaces(P-1, [$\s|Acc]); -spaces(_, Acc) -> Acc. - - -%% normalise_rec_fields([RecDef]) -> [Field]. -%% Normalise the field definitions to always have a default value. If -%% none has been given then use 'undefined'. - -normalise_rec_fields(Fs) -> - lists:map(fun ({record_field,Anno,Field}) -> - {record_field,Anno,Field,{atom,Anno,undefined}}; - ({typed_record_field,{record_field,Anno,Field},_Type}) -> - {record_field,Anno,Field,{atom,Anno,undefined}}; - ({typed_record_field,Field,_Type}) -> - Field; - (F) -> F - end, Fs). - -get_nl([10|T],Pos,Head) -> {lists:reverse([10|Head]),T,Pos}; -get_nl([H|T],Pos,Head) -> - get_nl(T,Pos+1,[H|Head]); -get_nl([],Pos,Head) -> {lists:reverse(Head),[],Pos}. - -%%% Rewrite the abstract syntax tree to that it will be easier (== faster) -%%% to interpret. - -clauses([C0|Cs],St) -> - C1 = clause(C0, true, St), - [C1|clauses(Cs, St)]; -clauses([], _St) -> []. - -clause({clause,Anno,H0,G0,B0}, Lc, St) -> - H1 = head(H0, St), - G1 = guard(G0, St), - B1 = exprs(B0, Lc, St), - {clause,ln(Anno),H1,G1,B1}. - -head(Ps, St) -> patterns(Ps, St). - -%% These patterns are processed "sequentially" for purposes of variable -%% definition etc. - -patterns([P0|Ps], St) -> - P1 = pattern(P0, St), - [P1|patterns(Ps, St)]; -patterns([], _St) -> []. - -%% N.B. Only valid patterns are included here. - -pattern({var,Anno,V}, _St) -> {var,ln(Anno),V}; -pattern({char,Anno,I}, _St) -> {value,ln(Anno),I}; -pattern({integer,Anno,I}, _St) -> {value,ln(Anno),I}; -pattern({match,Anno,Pat1,Pat2}, St) -> - {match,ln(Anno),pattern(Pat1, St),pattern(Pat2, St)}; -pattern({float,Anno,F}, _St) -> {value,ln(Anno),F}; -pattern({atom,Anno,A}, _St) -> {value,ln(Anno),A}; -pattern({string,Anno,S}, _St) -> {value,ln(Anno),S}; -pattern({nil,Anno}, _St) -> {value,ln(Anno),[]}; -pattern({cons,Anno,H0,T0}, St) -> - H1 = pattern(H0, St), - T1 = pattern(T0, St), - {cons,ln(Anno),H1,T1}; -pattern({tuple,Anno,Ps0}, St) -> - Ps1 = pattern_list(Ps0, St), - {tuple,ln(Anno),Ps1}; -pattern({record_index,Anno,Name,Field} = _DBG, St) -> - Expr = index_expr(Anno, Field, Name, record_fields(Name, Anno, St)), - pattern(Expr, St); -pattern({record,Anno,Name,Pfs}, St0) -> - Fs = record_fields(Name, Anno, St0), - TMs = pattern_list(pattern_fields(Fs, Pfs), St0), - {tuple,ln(Anno),[{value,ln(Anno),Name} | TMs]}; -pattern({map,Anno,Fs0}, St) -> - Fs1 = lists:map(fun ({map_field_exact,L,K,V}) -> - {map_field_exact,L,gexpr(K, St),pattern(V, St)} - end, Fs0), - {map,ln(Anno),Fs1}; -pattern({op,_,'-',{integer,Anno,I}}, _St) -> - {value,ln(Anno),-I}; -pattern({op,_,'+',{integer,Anno,I}}, _St) -> - {value,ln(Anno),I}; -pattern({op,_,'-',{char,Anno,I}}, _St) -> - {value,ln(Anno),-I}; -pattern({op,_,'+',{char,Anno,I}}, _St) -> - {value,ln(Anno),I}; -pattern({op,_,'-',{float,Anno,I}}, _St) -> - {value,ln(Anno),-I}; -pattern({op,_,'+',{float,Anno,I}}, _St) -> - {value,ln(Anno),I}; -pattern({bin,Anno,Grp}, St) -> - Grp1 = pattern_list(bin_expand_strings(Grp), St), - {bin,ln(Anno),Grp1}; -pattern({bin_element,Anno,Expr0,Size0,Type0}, St) -> - {Size1,Type} = make_bit_type(Anno, Size0, Type0), - Expr1 = pattern(Expr0,St), - Expr = coerce_to_float(Expr1, Type0), - Size = expr(Size1, false, St), - {bin_element,ln(Anno),Expr,Size,Type}; -%% Evaluate compile-time expressions. -pattern({op,_,'++',{nil,_},R}, St) -> - pattern(R, St); -pattern({op,_,'++',{cons,Li,H,T},R}, St) -> - pattern({cons,Li,H,{op,Li,'++',T,R}}, St); -pattern({op,_,'++',{string,Li,L},R}, St) -> - pattern(string_to_conses(Li, L, R), St); -pattern({op,_Line,_Op,_A}=Op, St) -> - pattern(erl_eval:partial_eval(Op), St); -pattern({op,_Line,_Op,_L,_R}=Op, St) -> - pattern(erl_eval:partial_eval(Op), St). - -string_to_conses(Anno, Cs, Tail) -> - lists:foldr(fun (C, T) -> {cons,Anno,{char,Anno,C},T} end, Tail, Cs). - -coerce_to_float({value,Anno,Int}=E, [float|_]) when is_integer(Int) -> - try - {value,Anno,float(Int)} - catch - error:badarg -> E - end; -coerce_to_float(E, _) -> E. - -%% These patterns are processed "in parallel" for purposes of variable -%% definition etc. - -pattern_list([P0|Ps], St) -> - P1 = pattern(P0, St), - [P1|pattern_list(Ps, St)]; -pattern_list([], _St) -> []. - -guard([G0|Gs], St) -> - G1 = and_guard(G0, St), - [G1|guard(Gs, St)]; -guard([], _St) -> []. - -and_guard([G0|Gs], St) -> - G1 = guard_test(G0, St), - [G1|and_guard(Gs, St)]; -and_guard([], _St) -> []. - - -guard_test({call,Anno,{atom,_,is_record},[A,{atom,_,Name}]}, St) -> - record_test_in_guard(Anno, A, Name, St); -guard_test({call,Anno,{remote,_,{atom,_,erlang},{atom,_,is_record}}, [A,{atom,_,Name}]}, - St) -> - record_test_in_guard(Anno, A, Name, St); -guard_test({call,Anno,{tuple,_,[{atom,_,erlang},{atom,_,is_record}]}, - [A,{atom,_,Name}]}, St) -> - record_test_in_guard(Anno, A, Name, St); -guard_test({call,Anno,{remote,_,{atom,_,erlang},{atom,_,F}},As0}, St) -> - As = gexpr_list(As0, St), - {safe_bif,ln(Anno),erlang,F,As}; -guard_test({call,Anno,{atom,_, F0},As0}, St) -> - F = normalise_test(F0, length(As0)), - true = erl_internal:bif(F,length(As0)), - As = gexpr_list(As0, St), - {safe_bif,ln(Anno),erlang,F,As}; -guard_test({op,Anno,Op,L0}, St) -> - true = erl_internal:arith_op(Op, 1) orelse %Assertion. - erl_internal:bool_op(Op, 1), - L1 = gexpr(L0, St), - {safe_bif,ln(Anno),erlang,Op,[L1]}; -guard_test({op,Anno,Op,L0,R0}, St) when Op =:= 'andalso'; Op =:= 'orelse' -> - L1 = gexpr(L0, St), - R1 = gexpr(R0, St), %They see the same variables - {Op,ln(Anno),L1,R1}; -guard_test({op,Anno,Op,L0,R0}, St) -> - true = erl_internal:comp_op(Op, 2) orelse %Assertion. - erl_internal:bool_op(Op, 2) orelse - erl_internal:arith_op(Op, 2), - L1 = gexpr(L0, St), - R1 = gexpr(R0, St), %They see the same variables - {safe_bif,ln(Anno),erlang,Op,[L1,R1]}; -guard_test({record_field,_A,R,Name,F}, St) -> - Anno = erl_parse:first_anno(R), - get_record_field_guard(Anno, R, F, Name, St); -guard_test({var,_,_}=V, _St) ->V; % Boolean var -guard_test({atom,Anno,true}, _St) -> {value,ln(Anno),true}; -%% All other constants at this level means false. -guard_test({atom,Anno,_}, _St) -> {value,ln(Anno),false}; -guard_test({integer,Anno,_}, _St) -> {value,ln(Anno),false}; -guard_test({char,Anno,_}, _St) -> {value,ln(Anno),false}; -guard_test({float,Anno,_}, _St) -> {value,ln(Anno),false}; -guard_test({string,Anno,_}, _St) -> {value,ln(Anno),false}; -guard_test({nil,Anno}, _St) -> {value,ln(Anno),false}; -guard_test({cons,Anno,_,_}, _St) -> {value,ln(Anno),false}; -guard_test({tuple,Anno,_}, _St) -> {value,ln(Anno),false}; -guard_test({map,Anno,_}, _St) -> {value,ln(Anno),false}; -guard_test({map,Anno,_,_}, _St) -> {value,ln(Anno),false}; -guard_test({bin,Anno,_}, _St) -> {value,ln(Anno),false}. - -gexpr({var,Anno,V}, _St) -> {var,ln(Anno),V}; -gexpr({integer,Anno,I}, _St) -> {value,ln(Anno),I}; -gexpr({char,Anno,I}, _St) -> {value,ln(Anno),I}; -gexpr({float,Anno,F}, _St) -> {value,ln(Anno),F}; -gexpr({atom,Anno,A}, _St) -> {value,ln(Anno),A}; -gexpr({string,Anno,S}, _St) -> {value,ln(Anno),S}; -gexpr({nil,Anno}, _St) -> {value,ln(Anno),[]}; -gexpr({cons,Anno,H0,T0}, St) -> - case {gexpr(H0, St),gexpr(T0, St)} of - {{value,Line,H1},{value,Line,T1}} -> {value,Line,[H1|T1]}; - {H1,T1} -> {cons,ln(Anno),H1,T1} - end; -gexpr({tuple,Anno,Es0}, St) -> - Es1 = gexpr_list(Es0, St), - {tuple,ln(Anno),Es1}; -gexpr({record, _, _, _}=Rec, St) -> - expr(Rec, false, St); -gexpr({map,Anno,Fs0}, St) -> - new_map(Fs0, Anno, St, fun(F) -> gexpr(F,St) end); -gexpr({map,Anno,E0,Fs0}, St) -> - E1 = gexpr(E0, St), - Fs1 = map_fields(Fs0, St, fun(F) -> gexpr(F,St) end), - {map,ln(Anno),E1,Fs1}; -gexpr({bin,Anno,Flds0}, St) -> - Flds = gexpr_list(bin_expand_strings(Flds0), St), - {bin,ln(Anno),Flds}; -gexpr({bin_element,Anno,Expr0,Size0,Type0}, St) -> - {Size1,Type} = make_bit_type(Anno, Size0, Type0), - Expr = gexpr(Expr0, St), - Size = gexpr(Size1, St), - {bin_element,ln(Anno),Expr,Size,Type}; -gexpr({call,Anno,{atom,_,is_record},[A,{atom,_,Name}]}, St) -> - record_test_in_guard(Anno, A, Name, St); -gexpr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,is_record}}, [A,{atom,_,Name}]}, - St) -> - record_test_in_guard(Anno, A, Name, St); -gexpr({call,Anno,{tuple,_,[{atom,_,erlang},{atom,_,is_record}]}, - [A,{atom,_,Name}]}, St) -> - record_test_in_guard(Anno, A, Name, St); -gexpr({record_field,_A,R,Name,F}, St) -> - Anno = erl_parse:first_anno(R), - get_record_field_guard(Anno, R, F, Name, St); -gexpr({record_index,Anno,Name,F}, St) -> - I = index_expr(Anno, F, Name, record_fields(Name, Anno, St)), - gexpr(I, St); -gexpr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,self}},[]}, _St) -> - {dbg,ln(Anno),self,[]}; -gexpr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,F}},As0}, St) -> - As = gexpr_list(As0, St), - {safe_bif,ln(Anno),erlang,F,As}; -gexpr({call,Anno,{atom,_,self},[]}, _St) -> - {dbg,ln(Anno),self,[]}; -gexpr({call,Anno,{atom,_, F},As0}, St) -> - true = erl_internal:bif(F,length(As0)), - As = gexpr_list(As0, St), - {safe_bif,ln(Anno),erlang,F,As}; -gexpr({op,Anno,Op,A0}, St) -> - erl_internal:arith_op(Op, 1), - A1 = gexpr(A0, St), - {safe_bif,ln(Anno),erlang,Op,[A1]}; -gexpr({op,Anno,Op,L0,R0}, St) when Op =:= 'andalso'; Op =:= 'orelse' -> - L1 = gexpr(L0, St), - R1 = gexpr(R0, St), %They see the same variables - {Op,ln(Anno),L1,R1}; -gexpr({op,Anno,Op,L0,R0}, St) -> - true = erl_internal:arith_op(Op, 2) orelse erl_internal:comp_op(Op, 2) - orelse erl_internal:bool_op(Op, 2), - L1 = gexpr(L0, St), - R1 = gexpr(R0, St), %They see the same variables - {safe_bif,ln(Anno),erlang,Op,[L1,R1]}. - -%% These expressions are processed "in parallel" for purposes of variable -%% definition etc. - -gexpr_list([E0|Es], St) -> - E1 = gexpr(E0, St), - [E1|gexpr_list(Es, St)]; -gexpr_list([], _St) -> []. - -%% These expressions are processed "sequentially" for purposes of variable -%% definition etc. - -exprs([E], Lc, St) -> - [expr(E, Lc, St)]; -exprs([E0|Es], Lc, St) -> - E1 = expr(E0, false, St), - [E1|exprs(Es, Lc, St)]; -exprs([], _Lc, _St) -> []. - -expr({var,Anno,V}, _Lc, _St) -> {var,ln(Anno),V}; -expr({integer,Anno,I}, _Lc, _St) -> {value,ln(Anno),I}; -expr({char,Anno,I}, _Lc, _St) -> {value,ln(Anno),I}; -expr({float,Anno,F}, _Lc, _St) -> {value,ln(Anno),F}; -expr({atom,Anno,A}, _Lc, _St) -> {value,ln(Anno),A}; -expr({string,Anno,S}, _Lc, _St) -> {value,ln(Anno),S}; -expr({nil,Anno}, _Lc, _St) -> {value,ln(Anno),[]}; -expr({cons,Anno,H0,T0}, _Lc, St) -> - case {expr(H0, false, St),expr(T0, false, St)} of - {{value,Line,H1},{value,Line,T1}} -> {value,Line,[H1|T1]}; - {H1,T1} -> {cons,ln(Anno),H1,T1} - end; -expr({tuple,Anno,Es0}, _Lc, St) -> - Es1 = expr_list(Es0, St), - {tuple,ln(Anno),Es1}; -expr({record_index,Anno,Name,F}, Lc, St) -> - I = index_expr(Anno, F, Name, record_fields(Name, Anno, St)), - expr(I, Lc, St); -expr({record_field,_A,R,Name,F}, _Lc, St) -> - Anno = erl_parse:first_anno(R), - get_record_field_body(Anno, R, F, Name, St); -expr({record,Anno,R,Name,Us}, Lc, St) -> - Ue = record_update(R, Name, record_fields(Name, Anno, St), Us, St), - expr(Ue, Lc, St); -expr({record,Anno,Name,Is}, Lc, St) -> - expr({tuple,Anno,[{atom,Anno,Name} | - record_inits(record_fields(Name, Anno, St), Is)]}, - Lc, St); -expr({record_update, Anno, Es0}, Lc, St) -> - %% Unfold block into a sequence. - Es1 = exprs(Es0, Lc, St), - {record_update,ln(Anno),Es1}; -expr({map,Anno,Fs}, _Lc, St) -> - new_map(Fs, Anno, St, fun (E) -> expr(E, false, St) end); -expr({map,Anno,E0,Fs0}, _Lc, St) -> - E1 = expr(E0, false, St), - Fs1 = map_fields(Fs0, St), - {map,ln(Anno),E1,Fs1}; -expr({block,Anno,Es0}, Lc, St) -> - %% Unfold block into a sequence. - Es1 = exprs(Es0, Lc, St), - {block,ln(Anno),Es1}; -expr({'if',Anno,Cs0}, Lc, St) -> - Cs1 = icr_clauses(Cs0, Lc, St), - {'if',ln(Anno),Cs1}; -expr({'case',Anno,E0,Cs0}, Lc, St) -> - E1 = expr(E0, false, St), - Cs1 = icr_clauses(Cs0, Lc, St), - {'case',ln(Anno),E1,Cs1}; -expr({'receive',Anno,Cs0}, Lc, St) -> - Cs1 = icr_clauses(Cs0, Lc, St), - {'receive',ln(Anno),Cs1}; -expr({'receive',Anno,Cs0,To0,ToEs0}, Lc, St) -> - To1 = expr(To0, false, St), - ToEs1 = exprs(ToEs0, Lc, St), - Cs1 = icr_clauses(Cs0, Lc, St), - {'receive',ln(Anno),Cs1,To1,ToEs1}; -expr({'fun',Anno,{clauses,Cs0}}, _Lc, St) -> - %% New R10B-2 format (abstract_v2). - Cs = fun_clauses(Cs0, St), - Name = new_fun_name(), - {make_fun,ln(Anno),Name,Cs}; -expr({'fun',Anno,{function,F,A}}, _Lc, _St) -> - %% New R8 format (abstract_v2). - Line = ln(Anno), - As = new_vars(A, Line), - Name = new_fun_name(), - Cs = [{clause,Line,As,[],[{local_call,Line,F,As,true}]}], - {make_fun,Line,Name,Cs}; -expr({named_fun,Anno,FName,Cs0}, _Lc, St) -> - Cs = fun_clauses(Cs0, St), - Name = new_fun_name(), - {make_named_fun,ln(Anno),Name,FName,Cs}; -expr({'fun',Anno,{function,{atom,_,M},{atom,_,F},{integer,_,A}}}, _Lc, _St) - when 0 =< A, A =< 255 -> - %% New format in R15 for fun M:F/A (literal values). - {value,ln(Anno),erlang:make_fun(M, F, A)}; -expr({'fun',Anno,{function,M,F,A}}, _Lc, St) -> - %% New format in R15 for fun M:F/A (one or more variables). - MFA = expr_list([M,F,A], St), - {make_ext_fun,ln(Anno),MFA}; -expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,self}},[]}, _Lc, _St) -> - {dbg,ln(Anno),self,[]}; -expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,throw}},[_]=As}, _Lc, St) -> - {dbg,ln(Anno),throw,expr_list(As, St)}; -expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,error}},[_]=As}, _Lc, St) -> - {dbg,ln(Anno),error,expr_list(As, St)}; -expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,exit}},[_]=As}, _Lc, St) -> - {dbg,ln(Anno),exit,expr_list(As, St)}; -expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,raise}},[_,_,_]=As}, _Lc, St) -> - {dbg,ln(Anno),raise,expr_list(As, St)}; -expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,apply}},[_,_,_]=As0}, Lc, St) -> - As = expr_list(As0, St), - {apply,ln(Anno),As,Lc}; -expr({call,Anno,{atom,_,is_record},[A,{atom,_,Name}]}, Lc, St) -> - record_test_in_body(Anno, A, Name, Lc, St); -expr({call,Anno,{remote,_,{atom,_,erlang},{atom,_,is_record}}, [A,{atom,_,Name}]}, - Lc, St) -> - record_test_in_body(Anno, A, Name, Lc, St); -expr({call,Anno,{tuple,_,[{atom,_,erlang},{atom,_,is_record}]}, - [A,{atom,_,Name}]}, Lc, St) -> - record_test_in_body(Anno, A, Name, Lc, St); -expr({call,Anno,{atom,_AnnoA,record_info},[_,_]=As0}, Lc, St) -> - As = expr_list(As0, St), - expr(record_info_call(Anno, As, St), Lc, St); -expr({call,Anno,{remote,_,{atom,_,Mod},{atom,_,Func}},As0}, Lc, St) -> - As = expr_list(As0, St), - case erlang:is_builtin(Mod, Func, length(As)) of - false -> - {call_remote,ln(Anno),Mod,Func,As,Lc}; - true -> - case bif_type(Mod, Func, length(As0)) of - safe -> {safe_bif,ln(Anno),Mod,Func,As}; - unsafe ->{bif,ln(Anno),Mod,Func,As} - end - end; -expr({call,Anno,{remote,_,Mod0,Func0},As0}, Lc, St) -> - %% New R8 format (abstract_v2). - Mod = expr(Mod0, false, St), - Func = expr(Func0, false, St), - As = consify(expr_list(As0, St)), - {apply,ln(Anno),[Mod,Func,As],Lc}; -expr({call,Anno,{atom,_,Func}=F,As0}, Lc, #{ctype:=Ctypes} = St) -> - As = expr_list(As0, St), - Ar = length(As), - NA = {Func,Ar}, - Special = lists:member(Func, [self,throw,error,exit,raise,apply]), - case maps:get(NA, Ctypes, undefined) of - local -> - {local_call,ln(Anno),Func,As,Lc}; - {imported, Mod} -> - {call_remote,ln(Anno),Mod,Func,As,Lc}; - undefined when Special -> - expr({call,Anno,{remote,Anno,{atom,Anno,erlang},F},As0}, Lc, St); - undefined -> - case erl_internal:bif(Func, Ar) andalso bif_type(erlang, Func, Ar) of - false -> {local_call,ln(Anno),Func,As,Lc}; - safe -> {safe_bif,ln(Anno),erlang,Func,As}; - unsafe -> {bif,ln(Anno),erlang,Func,As} - end - end; -expr({call,Anno,Fun0,As0}, Lc, St) -> - Fun = expr(Fun0, false, St), - As = expr_list(As0, St), - {apply_fun,ln(Anno),Fun,As,Lc}; -expr({'catch',Anno,E0}, _Lc, St) -> - %% No new variables added. - E1 = expr(E0, false, St), - {'catch',ln(Anno),E1}; -expr({'try',Anno,Es0,CaseCs0,CatchCs0,As0}, Lc, St) -> - %% No new variables added. - Es = expr_list(Es0, St), - CaseCs = icr_clauses(CaseCs0, Lc, St), - CatchCs = icr_clauses(CatchCs0, Lc, St), - As = expr_list(As0, St), - {'try',ln(Anno),Es,CaseCs,CatchCs,As}; -expr({lc,_,_,_}=Compr, _Lc, St) -> - expr_lc_bc(Compr, St); -expr({bc,_,_,_}=Compr, _Lc, St) -> - expr_lc_bc(Compr, St); -expr({match,Anno,P0,E0}, _Lc, St) -> - E1 = expr(E0, false, St), - P1 = pattern(P0, St), - {match,ln(Anno),P1,E1}; -expr({op,Anno,Op,A0}, _Lc, St) -> - A1 = expr(A0, false, St), - {op,ln(Anno),Op,[A1]}; -expr({op,Anno,'++',L0,R0}, _Lc, St) -> - L1 = expr(L0, false, St), - R1 = expr(R0, false, St), %They see the same variables - {op,ln(Anno),append,[L1,R1]}; -expr({op,Anno,'--',L0,R0}, _Lc, St) -> - L1 = expr(L0, false, St), - R1 = expr(R0, false, St), %They see the same variables - {op,ln(Anno),subtract,[L1,R1]}; -expr({op,Anno,'!',L0,R0}, _Lc, St) -> - L1 = expr(L0, false, St), - R1 = expr(R0, false, St), %They see the same variables - {send,ln(Anno),L1,R1}; -expr({op,Anno,Op,L0,R0}, _Lc, St) when Op =:= 'andalso'; Op =:= 'orelse' -> - L1 = expr(L0, false, St), - R1 = expr(R0, false, St), %They see the same variables - {Op,ln(Anno),L1,R1}; -expr({op,Anno,Op,L0,R0}, _Lc, St) -> - L1 = expr(L0, false, St), - R1 = expr(R0, false, St), %They see the same variables - {op,ln(Anno),Op,[L1,R1]}; -expr({bin,Anno,Grp}, _Lc, St) -> - Grp1 = expr_list(bin_expand_strings(Grp), St), - {bin,ln(Anno),Grp1}; -expr({bin_element,Anno,Expr0,Size0,Type0}, _Lc, St) -> - {Size1,Type} = make_bit_type(Anno, Size0, Type0), - Expr = expr(Expr0, false, St), - Size = expr(Size1, false, St), - {bin_element,ln(Anno),Expr,Size,Type}. - -consify([A|As]) -> - {cons,0,A,consify(As)}; -consify([]) -> {value,0,[]}. - -make_bit_type(Line, default, Type0) -> - case erl_bits:set_bit_type(default, Type0) of - {ok,all,Bt} -> {{atom,Line,all},erl_bits:as_list(Bt)}; - {ok,undefined,Bt} -> {{atom,Line,undefined},erl_bits:as_list(Bt)}; - {ok,Size,Bt} -> {{integer,Line,Size},erl_bits:as_list(Bt)} - end; -make_bit_type(_Line, Size, Type0) -> %Integer or 'all' - {ok,Size,Bt} = erl_bits:set_bit_type(Size, Type0), - {Size,erl_bits:as_list(Bt)}. - -expr_lc_bc({Tag,Anno,E0,Gs0}, St) -> - Gs = lists:map(fun ({generate,L,P0,Qs}) -> - {generate,L,pattern(P0, St),expr(Qs, false, St)}; - ({b_generate,L,P0,Qs}) -> %R12. - {b_generate,L,pattern(P0, St),expr(Qs, false, St)}; - (Expr) -> - case is_guard_test(Expr, St) of - true -> {guard,guard([[Expr]], St)}; - false -> expr(Expr, false, St) - end - end, Gs0), - {Tag,ln(Anno),expr(E0, false, St),Gs}. - -is_guard_test(Expr, #{ctype:=Ctypes}) -> - IsOverridden = fun(NA) -> - case maps:get(NA, Ctypes, undefined) of - local -> true; - {imported,_} -> true; - undefined -> false - end - end, - erl_lint:is_guard_test(Expr, [], IsOverridden). - -normalise_test(atom, 1) -> is_atom; -normalise_test(binary, 1) -> is_binary; -normalise_test(float, 1) -> is_float; -normalise_test(function, 1) -> is_function; -normalise_test(integer, 1) -> is_integer; -normalise_test(list, 1) -> is_list; -normalise_test(number, 1) -> is_number; -normalise_test(pid, 1) -> is_pid; -normalise_test(port, 1) -> is_port; -normalise_test(record, 2) -> is_record; -normalise_test(reference, 1) -> is_reference; -normalise_test(tuple, 1) -> is_tuple; -normalise_test(Name, _) -> Name. - -%% As Expr may have side effects, we must evaluate it -%% first and bind the value to a new variable. -%% We must use also handle the case that Expr does not -%% evaluate to a tuple properly. - -record_test_in_body(Anno, Expr, Name, Lc, St) -> - Fs = record_fields(Name, Anno, St), - Var = {var, Anno, new_var_name()}, - expr({block,Anno, - [{match,Anno,Var,Expr}, - {call,Anno,{remote,Anno,{atom,Anno,erlang}, - {atom,Anno,is_record}}, - [Var,{atom,Anno,Name},{integer,Anno,length(Fs)+1}]}]}, Lc, St). - -record_test_in_guard(Anno, Term, Name, St) -> - Fs = record_fields(Name, Anno, St), - expr({call,Anno,{remote,Anno,{atom,Anno,erlang},{atom,Anno,is_record}}, - [Term,{atom,Anno,Name},{integer,Anno,length(Fs)+1}]}, false, St). - -%% Expand a call to record_info/2. We have checked that it is not -%% shadowed by an import. - -record_info_call(Anno, [{value,_AnnoI,Info},{value,_AnnoN,Name}], St) -> - case Info of - size -> - {integer,Anno,1+length(record_fields(Name, Anno, St))}; - fields -> - Fs = lists:map(fun({record_field,_,Field,_Val}) -> Field end, - record_fields(Name, Anno, St)), - lists:foldr(fun (H, T) -> {cons,Anno,H,T} end, {nil,Anno}, Fs) - end. - -record_fields(R, Anno, #{recs := Recs}) -> - Fields = maps:get(R, Recs), - [{record_field,Anno,{atom,Anno,F},copy_expr(Di, Anno)} || - {record_field,_Anno,{atom,_AnnoA,F},Di} <- Fields]. - - -%% record_inits([RecDefField], [Init]) -> [InitExpr]. -%% Build a list of initialisation expressions for the record tuple -%% elements. This expansion must be passed through expr -%% again. N.B. We are scanning the record definition field list! - -record_inits(Fs, Is) -> - WildcardInit = record_wildcard_init(Is), - lists:map(fun ({record_field,_,{atom,_,F},D}) -> - case find_field(F, Is) of - {ok,Init} -> Init; - error when WildcardInit =:= none -> D; - error -> WildcardInit - end - end, Fs). - -record_wildcard_init([{record_field,_,{var,_,'_'},D} | _]) -> D; -record_wildcard_init([_ | Is]) -> record_wildcard_init(Is); -record_wildcard_init([]) -> none. - -%% copy_expr(Expr, Anno) -> Expr. -%% Make a copy of Expr converting all annotations to Anno. -copy_expr(Expr, Anno) -> - erl_parse:map_anno(fun(_A) -> Anno end, Expr). - -find_field(F, [{record_field,_,{atom,_,F},Val} | _]) -> {ok,Val}; -find_field(F, [_ | Fs]) -> find_field(F, Fs); -find_field(_, []) -> error. - -%% record_update(Record, RecordName, [RecDefField], [Update], State) -> -%% {Expr,State'} -%% Build an expression to update fields in a record returning a new -%% record. Try to be smart and optimise this. This expansion must be -%% passed through expr again. - -record_update(R, Name, Fs, Us0, St) -> - Anno = element(2, R), - {Pre,Us} = record_exprs(Us0, St), - %% We need a new variable for the record expression - %% to guarantee that it is only evaluated once. - Var = {var, Anno, new_var_name()}, - Update = record_match(Var, Name, Anno, Fs, Us, St), - {record_update,Anno, Pre ++ [{match,Anno,Var,R},Update]}. - -%% record_match(Record, RecordName, Anno, [RecDefField], [Update], State) -%% Build a 'case' expression to modify record fields. - -record_match(R, Name, Anno, Fs, Us, St) -> - {Ps,News} = record_upd_fs(Fs, Us, St), - {'case',ln(Anno),R, - [{clause,ln(Anno),[{tuple,Anno,[{atom,Anno,Name} | Ps]}],[], - [{tuple,Anno,[{atom,Anno,Name} | News]}]}, - {clause,Anno,[{var,Anno,'_'}],[], - [call_error(Anno, {tuple,Anno,[{atom,Anno,badrecord},{atom,Anno,Name}]})]} - ]}. - -record_upd_fs([{record_field,Anno,{atom,_AnnoA,F},_Val} | Fs], Us, St) -> - P = {var, Anno, new_var_name()}, - {Ps,News} = record_upd_fs(Fs, Us, St), - case find_field(F, Us) of - {ok,New} -> {[P | Ps],[New | News]}; - error -> {[P | Ps],[P | News]} - end; -record_upd_fs([], _, _) -> {[],[]}. - -call_error(Anno, R) -> - {call,Anno,{remote,Anno,{atom,Anno,erlang},{atom,Anno,error}},[R]}. - -%% Break out expressions from an record update list and bind to new -%% variables. The idea is that we will evaluate all update expressions -%% before starting to update the record. - -record_exprs(Us, St) -> - record_exprs(Us, St, [], []). - -record_exprs([{record_field,Anno,{atom,_AnnoA,_F}=Name,Val}=Field0 | Us], St, Pre, Fs) -> - case is_simple_val(Val) of - true -> - record_exprs(Us, St, Pre, [Field0 | Fs]); - false -> - Var = {var, Anno, new_var_name()}, - Bind = {match,ln(Anno),Var,Val}, - Field = {record_field,ln(Anno),Name,Var}, - record_exprs(Us, St, [Bind | Pre], [Field | Fs]) - end; -record_exprs([], _St, Pre, Fs) -> - {lists:reverse(Pre),Fs}. - -is_simple_val({var,_,_}) -> true; -is_simple_val(Val) -> - try - erl_parse:normalise(Val), - true - catch error:_ -> - false - end. - -%% pattern_fields([RecDefField], [Match]) -> [Pattern]. -%% Build a list of match patterns for the record tuple elements. -%% This expansion must be passed through pattern again. N.B. We are -%% scanning the record definition field list! - -pattern_fields(Fs, Ms) -> - Wildcard = record_wildcard_init(Ms), - lists:map(fun ({record_field,Anno,{atom,_,F},_}) -> - case find_field(F, Ms) of - {ok,Match} -> Match; - error when Wildcard =:= none -> {var,Anno,'_'}; - error -> Wildcard - end - end, Fs). - -%% index_expr(Anno, FieldExpr, Name, Fields) -> IndexExpr. -%% Return an expression which evaluates to the index of a -%% field. Currently only handle the case where the field is an -%% atom. This expansion must be passed through expr again. - -index_expr(Anno, {atom,_,F}, _Name, Fs) -> - {integer,Anno,index_expr(F, Fs, 2)}. - -index_expr(F, [{record_field,_,{atom,_,F},_} | _], I) -> I; -index_expr(F, [_ | Fs], I) -> index_expr(F, Fs, I+1). - - -%% get_record_field(Anno, RecExpr, FieldExpr, Name, St) -> {Expr,St'}. -%% Return an expression which verifies that the type of record -%% is correct and then returns the value of the field. -%% This expansion must be passed through expr again. - -get_record_field_body(Anno, R, {atom,_,F}, Name, St) -> - Var = {var, Anno, new_var_name()}, - Fs = record_fields(Name, Anno, St), - I = index_expr(F, Fs, 2), - P = record_pattern(2, I, Var, length(Fs)+1, Anno, [{atom,Anno,Name}]), - E = {'case',Anno,R, - [{clause,Anno,[{tuple,Anno,P}],[],[Var]}, - {clause,Anno,[{var,Anno,'_'}],[], - [{call,Anno,{remote,Anno, - {atom,Anno,erlang}, - {atom,Anno,error}}, - [{tuple,Anno,[{atom,Anno,badrecord},{atom,Anno,Name}]}]}]}]}, - expr(E, false, St). - -get_record_field_guard(Anno, R, {atom,_,F}, Name, St) -> - Fs = record_fields(Name, Anno, St), - I = index_expr(F, Fs, 2), - ExpR = expr(R, false, St), - %% Just to make comparison simple: - %% A0 = erl_anno:new(0), - %% ExpRp = erl_parse:map_anno(fun(_A) -> A0 end, ExpR), - %% RA = {{Name,ExpRp},Anno,ExpR,length(Fs)+1}, - %% St2 = St1#exprec{strict_ra = [RA | St1#exprec.strict_ra]}, - {safe_bif,ln(Anno),erlang,element,[{value,ln(Anno),I},ExpR]}. - -record_pattern(I, I, Var, Sz, Anno, Acc) -> - record_pattern(I+1, I, Var, Sz, Anno, [Var | Acc]); -record_pattern(Cur, I, Var, Sz, Anno, Acc) when Cur =< Sz -> - record_pattern(Cur+1, I, Var, Sz, Anno, [{var,Anno,'_'} | Acc]); -record_pattern(_, _, _, _, _, Acc) -> lists:reverse(Acc). - -%% The debugger converts both strings "abc" and lists [67, 68, 69] -%% into {value, Line, [67, 68, 69]}, making it impossible to later -%% distingish one or the other inside binaries when evaluating. To -%% avoid <<[67, 68, 69]>> from evaluating, we convert strings into -%% chars to avoid the ambiguity. -bin_expand_strings(Es) -> - lists:foldr(fun ({bin_element,Line,{string,_,S},Sz,Ts}, Es1) -> - lists:foldr(fun (C, Es2) -> - [{bin_element,Line,{char,Line,C},Sz,Ts}|Es2] - end, Es1, S); - (E, Es1) -> [E|Es1] - end, [], Es). - -%% -type expr_list([Expression]) -> [Expression]. -%% These expressions are processed "in parallel" for purposes of variable -%% definition etc. - -expr_list([E0|Es], St) -> - E1 = expr(E0, false, St), - [E1|expr_list(Es, St)]; -expr_list([], _St) -> []. - -icr_clauses([C0|Cs], Lc, St) -> - C1 = clause(C0, Lc, St), - [C1|icr_clauses(Cs, Lc, St)]; -icr_clauses([], _, _St) -> []. - -fun_clauses([{clause,A,H,G,B}|Cs], St) -> - [{clause,ln(A),head(H, St),guard(G, St),exprs(B, true, St)}|fun_clauses(Cs, St)]; -fun_clauses([], _St) -> []. - -new_map(Fs0, Anno, St, F) -> - Line = ln(Anno), - Fs1 = map_fields(Fs0, St, F), - Fs2 = [{L,K,V} || {map_field_assoc,L,K,V} <- Fs1], - try - {value,Line,map_literal(Fs2, #{})} - catch - throw:not_literal -> - {map,Line,Fs2} - end. - -map_literal([{_,{value,_,K},{value,_,V}}|T], M) -> - map_literal(T, maps:put(K, V, M)); -map_literal([_|_], _) -> - throw(not_literal); -map_literal([], M) -> M. - -map_fields(Fs, St) -> - map_fields(Fs, St, fun (E) -> expr(E, false, St) end). - -map_fields([{map_field_assoc,A,N,V}|Fs], St, F) -> - [{map_field_assoc,ln(A),F(N),F(V)}|map_fields(Fs, St, F)]; -map_fields([{map_field_exact,A,N,V}|Fs], St, F) -> - [{map_field_exact,ln(A),F(N),F(V)}|map_fields(Fs, St, F)]; -map_fields([], _St, _) -> []. - -%% new_var_name() -> VarName. - -new_var_name() -> - C = get(vcount), - put(vcount, C+1), - list_to_atom("%" ++ integer_to_list(C)). - -%% new_vars(Count, Line) -> [Var]. -%% Make Count new variables. - -new_vars(N, L) -> new_vars(N, L, []). - -new_vars(N, L, Vs) when N > 0 -> - V = {var,L,new_var_name()}, - new_vars(N-1, L, [V|Vs]); -new_vars(0, _, Vs) -> Vs. - -new_fun_name() -> - {F,A} = get(current_function), - I = get(fun_count), - put(fun_count, I+1), - Name = "-" ++ atom_to_list(F) ++ "/" ++ integer_to_list(A) ++ - "-fun-" ++ integer_to_list(I) ++ "-", - list_to_atom(Name). - -ln(Anno) -> - erl_anno:line(Anno). - -bif_type(erlang, Name, Arity) -> - case erl_internal:guard_bif(Name, Arity) of - true -> - %% Guard BIFs are safe (except for self/0, but it is - %% handled with a special instruction anyway). - safe; - false -> - bif_type(Name) - end; -bif_type(_, _, _) -> unsafe. - -bif_type(register) -> safe; -bif_type(unregister) -> safe; -bif_type(whereis) -> safe; -bif_type(registered) -> safe; -bif_type(setelement) -> safe; -bif_type(atom_to_list) -> safe; -bif_type(list_to_atom) -> safe; -bif_type(integer_to_list) -> safe; -bif_type(list_to_integer) -> safe; -bif_type(float_to_list) -> safe; -bif_type(list_to_float) -> safe; -bif_type(tuple_to_list) -> safe; -bif_type(list_to_tuple) -> safe; -bif_type(make_ref) -> safe; -bif_type(time) -> safe; -bif_type(date) -> safe; -bif_type(processes) -> safe; -bif_type(process_info) -> safe; -bif_type(load_module) -> safe; -bif_type(delete_module) -> safe; -bif_type(halt) -> safe; -bif_type(check_process_code) -> safe; -bif_type(purge_module) -> safe; -bif_type(pid_to_list) -> safe; -bif_type(list_to_pid) -> safe; -bif_type(module_loaded) -> safe; -bif_type(binary_to_term) -> safe; -bif_type(term_to_binary) -> safe; -bif_type(nodes) -> safe; -bif_type(is_alive) -> safe; -bif_type(disconnect_node) -> safe; -bif_type(binary_to_list) -> safe; -bif_type(list_to_binary) -> safe; -bif_type(split_binary) -> safe; -bif_type(hash) -> safe; -bif_type(pre_loaded) -> safe; -bif_type(set_cookie) -> safe; -bif_type(get_cookie) -> safe; -bif_type(_) -> unsafe. diff --git a/debugger/erlide_debugger_24/src/dbg_iserver.erl b/debugger/erlide_debugger_24/src/dbg_iserver.erl deleted file mode 100644 index fae3338..0000000 --- a/debugger/erlide_debugger_24/src/dbg_iserver.erl +++ /dev/null @@ -1,612 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2021. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(dbg_iserver). --behaviour(gen_server). - -%% External exports --export([start/0, stop/0, find/0, - call/1, call/2, cast/1, cast/2, safe_call/1, safe_cast/1]). - -%% gen_server callbacks --export([init/1, handle_call/3, handle_cast/2, handle_info/2, - terminate/2, code_change/3]). - --record(proc, {pid, % pid() Debugged process - meta, % pid() Meta process - attpid, % pid() | undefined Attached process - status, % running | exit | idle | waiting - info = {}, % {} | term() - exit_info= {}, % {} | {{Mod,Line}, Bs, Stack} - function % {Mod,Func,Args} Initial function call - }). - --record(state, {db, % ETS table - procs = [], % [#proc{}] - breaks = [], % [{{M,L},Options} Breakpoints - auto, % Auto attach settings - stack, % Stack trace settings - subs = [] % [pid()] Subscribers (Debugger) - }). - - -%%==================================================================== -%% External exports -%%==================================================================== - -start() -> - gen_server:start({local, ?MODULE}, ?MODULE, [], []). - -stop() -> - gen_server:cast(?MODULE, stop). - -find() -> - global:whereis_name(?MODULE). - -call(Request) -> - gen_server:call(?MODULE, Request, infinity). - -call(Int, Request) -> - gen_server:call(Int, Request, infinity). - -cast(Request) -> - gen_server:cast(?MODULE, Request). - -cast(Int, Request) -> - gen_server:cast(Int, Request). - -safe_call(Request) -> - {ok, _} = ensure_started(), - call(Request). - -safe_cast(Request) -> - {ok, _} = ensure_started(), - cast(Request). - -ensure_started() -> - case whereis(?MODULE) of - undefined -> start(); - Pid -> {ok, Pid} - end. - -%%--Module database--------------------------------------------------- -%% This server creates an ETS table, where the following information -%% is saved: -%% -%% Key Value -%% --- ----- -%% {Mod, refs} [ModDb] -%% ModDb [pid()] -%% -%% In each ModDb, the following information is saved by dbg_iload: -%% -%% Key Value -%% --- ----- -%% defs [] -%% mod_bin Binary -%% mod_raw Raw Binary -%% mod_file File -%% {Mod,Name,Arity,Exported} Cs -%% {'fun',Mod,Index,Uniq} {Name,Arity,Cs} -%% Line {Pos,PosNL} - - -%%==================================================================== -%% gen_server callbacks -%%==================================================================== - -init([]) -> - process_flag(trap_exit, true), - global:register_name(?MODULE, self()), - Db = ets:new(?MODULE, [ordered_set, protected]), - {ok, #state{db=Db, auto=false, stack=no_tail}}. - -%% Attaching to a process -handle_call({attached, AttPid, Pid}, _From, State) -> - {true, Proc} = get_proc({pid, Pid}, State#state.procs), - case Proc#proc.attpid of - undefined -> - link(AttPid), - case Proc#proc.status of - exit -> - Args = [self(), - AttPid,Pid,Proc#proc.info, - Proc#proc.exit_info], - Meta = spawn_link(dbg_ieval, exit_info, Args), - Proc2 = Proc#proc{meta=Meta, attpid=AttPid}, - Procs = lists:keyreplace(Pid, #proc.pid, - State#state.procs, Proc2), - {reply, {ok,Meta}, State#state{procs=Procs}}; - _Status -> - Meta = Proc#proc.meta, - send(Meta, {attached, AttPid}), - Procs = lists:keyreplace(Pid, #proc.pid, - State#state.procs, - Proc#proc{attpid=AttPid}), - {reply, {ok, Meta}, State#state{procs=Procs}} - end; - _AttPid -> % there is already an attached process - {reply, error, State} - end; - -%% Getting and setting options -handle_call(get_auto_attach, _From, State) -> - {reply, State#state.auto, State}; -handle_call(get_stack_trace, _From, State) -> - {reply, State#state.stack, State}; - -%% Retrieving information -handle_call(snapshot, _From, State) -> - Reply = [{Proc#proc.pid, Proc#proc.function, - Proc#proc.status, Proc#proc.info} || Proc <- State#state.procs], - {reply, Reply, State}; -handle_call({get_meta, Pid}, _From, State) -> - Reply = case get_proc({pid, Pid}, State#state.procs) of - {true, Proc} -> - {ok, Proc#proc.meta}; - false -> - {error, not_interpreted} - end, - {reply, Reply, State}; -handle_call({get_attpid, Pid}, _From, State) -> - Reply = case get_proc({pid, Pid}, State#state.procs) of - {true, Proc} -> - {ok, Proc#proc.attpid}; - false -> - {error, not_interpreted} - end, - {reply, Reply, State}; - - -%% Breakpoint handling -handle_call({new_break, Point, Options}, _From, State) -> - case lists:keymember(Point, 1, State#state.breaks) of - false -> - Break = {Point, Options}, - send_all([subscriber, meta, attached], - {new_break, Break}, State), - Breaks = keyinsert(Break, 1, State#state.breaks), - {reply, ok, State#state{breaks=Breaks}}; - true -> - {reply, {error, break_exists}, State} - end; -handle_call(all_breaks, _From, State) -> - {reply, State#state.breaks, State}; -handle_call({all_breaks, Mod}, _From, State) -> - Reply = [Break || Break = {{M, _},_} <- State#state.breaks, M =:= Mod], - {reply, Reply, State}; - -%% From Meta process -handle_call({new_process, Pid, Meta, Function}, _From, State) -> - link(Meta), - - %% A new, debugged process has been started. Return its status, - %% ie running (running as usual) or break (stop) - %% The status depends on if the process is automatically attached to - %% or not. - Reply = case auto_attach(init, State#state.auto, Pid) of - AttPid when is_pid(AttPid) -> break; - ignore -> running - end, - - %% Do not add AttPid, it should call attached/2 when started instead - Proc = #proc{pid=Pid, meta=Meta, status=running, function=Function}, - send_all(subscriber, - {new_process, {Pid,Function,running,{}}}, State), - - {reply, Reply, State#state{procs=State#state.procs++[Proc]}}; - -%% Code loading -handle_call({load, Mod, Src, Bin}, _From, State) -> - %% Create an ETS table for storing information about the module - Db = State#state.db, - ModDb = ets:new(Mod, [ordered_set, public]), - ModDbs = case ets:lookup(Db, {Mod, refs}) of - [] -> []; - [{{Mod, refs}, ModDbs1}] -> ModDbs1 - end, - ets:insert(Db, {{Mod, refs}, [ModDb|ModDbs]}), - ets:insert(Db, {ModDb, []}), - - %% Load the code - {ok, Mod} = dbg_iload:load_mod(Mod, Src, Bin, ModDb), - - %% Inform all subscribers and attached processes - send_all([subscriber, attached], {interpret, Mod}, State), - - {reply, {module, Mod}, State}; - -%% Module database -handle_call({get_module_db, Mod}, _From, State) -> - Db = State#state.db, - Reply = case ets:lookup(Db, {Mod, refs}) of - [] -> not_found; - [{{Mod, refs}, [ModDb|_ModDbs]}] -> - ModDb - end, - {reply, Reply, State}; -handle_call({get_module_db, Mod, Pid}, _From, State) -> - Db = State#state.db, - Reply = case ets:lookup(Db, {Mod, refs}) of - [] -> not_found; - [{{Mod, refs}, [ModDb|_ModDbs]}] -> - [{ModDb, Pids}] = ets:lookup(Db, ModDb), - ets:insert(Db, {ModDb, [Pid|Pids]}), - ModDb - end, - {reply, Reply, State}; -handle_call({lookup, Mod, Key}, _From, State) -> - Db = State#state.db, - Reply = case ets:lookup(Db, {Mod, refs}) of - [] -> not_found; - [{{Mod, refs}, [ModDb|_ModDbs]}] -> - case ets:lookup(ModDb, Key) of - [] -> not_found; - [{Key, Value}] -> {ok, Value} - end - end, - {reply, Reply, State}; -handle_call({functions, Mod}, _From, State) -> - Db = State#state.db, - Reply = case ets:lookup(Db, {Mod, refs}) of - [] -> []; - [{{Mod, refs}, [ModDb|_ModDbs]}] -> - Pattern = {{Mod,'$1','$2','_'}, '_'}, - ets:match(ModDb, Pattern) - end, - {reply, Reply, State}; -handle_call({contents, Mod, Pid}, _From, State) -> - Db = State#state.db, - [{{Mod, refs}, ModDbs}] = ets:lookup(Db, {Mod, refs}), - ModDb = if - Pid =:= any -> hd(ModDbs); - true -> - lists:foldl(fun(T, not_found) -> - [{T, Pids}] = ets:lookup(Db, T), - case lists:member(Pid, Pids) of - true -> T; - false -> not_found - end; - (_T, T) -> T - end, - not_found, - ModDbs) - end, - [{mod_bin, Bin}] = ets:lookup(ModDb, mod_bin), - {reply, {ok, Bin}, State}; -handle_call({raw_contents, Mod, Pid}, _From, State) -> - Db = State#state.db, - case ets:lookup(Db, {Mod, refs}) of - [{{Mod, refs}, ModDbs}] -> - ModDb = - if - Pid =:= any -> hd(ModDbs); - true -> - lists:foldl(fun(T, not_found) -> - [{T, Pids}] = ets:lookup(Db, T), - case lists:member(Pid, Pids) of - true -> T; - false -> not_found - end; - (_T, T) -> T - end, - not_found, - ModDbs) - end, - [{mod_raw, Bin}] = ets:lookup(ModDb, mod_raw), - {reply, {ok, Bin}, State}; - [] -> % code not interpreted - {reply, not_found, State} - end; -handle_call({is_interpreted, Mod, Name, Arity}, _From, State) -> - Db = State#state.db, - Reply = case ets:lookup(Db, {Mod, refs}) of - [] -> false; - [{{Mod, refs}, [ModDb|_ModDbs]}] -> - Pattern = {{Mod,Name,Arity,'_'}, '_'}, - case ets:match_object(ModDb, Pattern) of - [{_Key, Clauses}] -> {true, Clauses}; - [] -> false - end - end, - {reply, Reply, State}; -handle_call(all_interpreted, _From, State) -> - Db = State#state.db, - Mods = ets:select(Db, [{{{'$1',refs},'_'},[],['$1']}]), - {reply, Mods, State}; -handle_call({file, Mod}, From, State) -> - {reply, Res, _} = handle_call({lookup, Mod, mod_file}, From, State), - Reply = case Res of - {ok, File} -> File; - not_found -> {error, not_loaded} - end, - {reply, Reply, State}. - - -handle_cast(stop, State) -> - {stop, shutdown, State}; -handle_cast({subscribe, Sub}, State) -> - {noreply, State#state{subs=[Sub|State#state.subs]}}; - -%% Attaching to a process -handle_cast({attach, Pid, {Mod, Func, Args}}, State) -> - %% Simply spawn process, which should call int:attached(Pid) - spawn(Mod, Func, [Pid | Args]), - {noreply, State}; - -%% Getting and setting options -handle_cast({set_auto_attach, false}, State) -> - send_all(subscriber, {auto_attach, false}, State), - {noreply, State#state{auto=false}}; -handle_cast({set_auto_attach, Flags, Function}, State) -> - send_all(subscriber, {auto_attach, {Flags, Function}}, State), - {noreply, State#state{auto={Flags, Function}}}; -handle_cast({set_stack_trace, Flag}, State) -> - send_all(subscriber, {stack_trace, Flag}, State), - {noreply, State#state{stack=Flag}}; - -%% Retrieving information -handle_cast(clear, State) -> - Procs = lists:filter(fun(#proc{status=Status}) -> - Status =/= exit - end, - State#state.procs), - {noreply, State#state{procs=Procs}}; - -%% Breakpoint handling -handle_cast({delete_break, Point}, State) -> - case lists:keymember(Point, 1, State#state.breaks) of - true -> - send_all([subscriber, meta, attached], - {delete_break, Point}, State), - Breaks = lists:keydelete(Point, 1, State#state.breaks), - {noreply, State#state{breaks=Breaks}}; - false -> - {noreply, State} - end; -handle_cast({break_option, Point, Option, Value}, State) -> - case lists:keyfind(Point, 1, State#state.breaks) of - {Point, Options} -> - N = case Option of - status -> 1; - action -> 2; - condition -> 4 - end, - Options2 = list_setelement(N, Options, Value), - send_all([subscriber, meta, attached], - {break_options, {Point, Options2}}, State), - Breaks = lists:keyreplace(Point, 1, State#state.breaks, - {Point, Options2}), - {noreply, State#state{breaks=Breaks}}; - false -> - {noreply, State} - end; -handle_cast(no_break, State) -> - send_all([subscriber, meta, attached], no_break, State), - {noreply, State#state{breaks=[]}}; -handle_cast({no_break, Mod}, State) -> - send_all([subscriber, meta, attached], {no_break, Mod}, State), - Breaks = lists:filter(fun({{M, _L}, _O}) -> - M =/= Mod - end, - State#state.breaks), - {noreply, State#state{breaks=Breaks}}; - -%% From Meta process -handle_cast({set_status, Meta, Status, Info}, State) -> - {true, Proc} = get_proc({meta, Meta}, State#state.procs), - send_all(subscriber, {new_status, Proc#proc.pid, Status, Info}, State), - if - Status =:= break -> - _ = auto_attach(break, State#state.auto, Proc), - ok; - true -> - ok - end, - Proc2 = Proc#proc{status=Status, info=Info}, - {noreply, State#state{procs=lists:keyreplace(Meta, #proc.meta, - State#state.procs, Proc2)}}; -handle_cast({set_exit_info, Meta, ExitInfo}, State) -> - {true, Proc} = get_proc({meta, Meta}, State#state.procs), - Procs = lists:keyreplace(Meta, #proc.meta, State#state.procs, - Proc#proc{exit_info=ExitInfo}), - {noreply,State#state{procs=Procs}}; - -%% Code loading -handle_cast({delete, Mod}, State) -> - - %% Remove the ETS table with information about the module - Db = State#state.db, - case ets:lookup(Db, {Mod, refs}) of - [] -> % Mod is not interpreted - {noreply, State}; - [{{Mod, refs}, ModDbs}] -> - ets:delete(Db, {Mod, refs}), - AllPids = lists:foldl( - fun(ModDb, PidsAcc) -> - [{ModDb, Pids}] = ets:lookup(Db, ModDb), - ets:delete(Db, ModDb), - ets:delete(ModDb), - PidsAcc++Pids - end, - [], - ModDbs), - lists:foreach(fun(Pid) -> - case get_proc({pid, Pid}, - State#state.procs) of - {true, Proc} -> - send(Proc#proc.meta, - {old_code, Mod}); - false -> ignore % pid may have exited - end - end, - AllPids), - - send_all([subscriber,attached], {no_interpret, Mod}, State), - - %% Remove all breakpoints for Mod - handle_cast({no_break, Mod}, State) - end. - -%% Process exits -handle_info({'EXIT',Who,Why}, State) -> - case get_proc({meta, Who}, State#state.procs) of - - %% Exited process is a meta process for exit_info - {true,#proc{status=exit}} -> - {noreply,State}; - - %% Exited process is a meta process - {true,Proc} -> - Pid = Proc#proc.pid, - ExitInfo = Proc#proc.exit_info, - %% Check if someone is attached to the debugged process, - %% if so a new meta process should be started - Meta = case Proc#proc.attpid of - AttPid when is_pid(AttPid) -> - spawn_link(dbg_ieval, exit_info, - [self(),AttPid,Pid,Why,ExitInfo]); - undefined -> - %% Otherwise, auto attach if necessary - _ = auto_attach(exit, State#state.auto, Pid), - Who - end, - send_all(subscriber, {new_status,Pid,exit,Why}, State), - Procs = lists:keyreplace(Who, #proc.meta, State#state.procs, - Proc#proc{meta=Meta, - status=exit, - info=Why}), - {noreply,State#state{procs=Procs}}; - - false -> - case get_proc({attpid, Who}, State#state.procs) of - - %% Exited process is an attached process - {true, Proc} -> - %% If status==exit, then the meta process is a - %% simple meta for a terminated process and can be - %% terminated as well (it is only needed by - %% the attached process) - case Proc#proc.status of - exit -> send(Proc#proc.meta, stop); - _Status -> send(Proc#proc.meta, detached) - end, - Procs = lists:keyreplace(Proc#proc.pid, #proc.pid, - State#state.procs, - Proc#proc{attpid=undefined}), - {noreply, State#state{procs=Procs}}; - - %% Otherwise exited process must be a subscriber - false -> - Subs = lists:delete(Who, State#state.subs), - {noreply, State#state{subs=Subs}} - end - end. - -terminate(_Reason, _State) -> - EbinDir = filename:join(code:lib_dir(debugger), "ebin"), - code:unstick_dir(EbinDir), - ok. - -code_change(_OldVsn, State, _Extra) -> - {ok, State}. - - -%%==================================================================== -%% Internal functions -%%==================================================================== - -auto_attach(Why, Auto, #proc{attpid = Attpid, pid = Pid}) -> - case Attpid of - undefined -> auto_attach(Why, Auto, Pid); - _ when is_pid(Attpid) -> ignore - end; -auto_attach(Why, Auto, Pid) when is_pid(Pid) -> - case Auto of - false -> ignore; - {Flags, {Mod, Func, Args}} -> - case lists:member(Why, Flags) of - true -> - spawn(Mod, Func, [Pid | Args]); - false -> ignore - end - end. - -keyinsert(Tuple1, N, [Tuple2|Tuples]) -> - if - element(N, Tuple1) < element(N, Tuple2) -> - [Tuple1, Tuple2|Tuples]; - true -> - [Tuple2 | keyinsert(Tuple1, N, Tuples)] - end; -keyinsert(Tuple, _N, []) -> - [Tuple]. - -list_setelement(N, L, E) -> list_setelement(1, N, L, E). - -list_setelement(I, I, [_|T], E) -> - [E|T]; -list_setelement(I, N, [H|T], E) -> - [H|list_setelement(I+1, N, T, E)]. - -mapfilter(Fun, [H|T]) -> - case Fun(H) of - ignore -> mapfilter(Fun, T); - H2 -> [H2|mapfilter(Fun, T)] - end; -mapfilter(_Fun, []) -> - []. - -send_all([Type|Types], Msg, State) -> - send_all(Type, Msg, State), - send_all(Types, Msg, State); -send_all([], _Msg, _State) -> ok; - -send_all(subscriber, Msg, State) -> - send_all(State#state.subs, Msg); -send_all(meta, Msg, State) -> - Metas = [Proc#proc.meta || Proc <- State#state.procs], - send_all(Metas, Msg); -send_all(attached, Msg, State) -> - AttPids= mapfilter(fun(Proc) -> - case Proc#proc.attpid of - Pid when is_pid(Pid) -> Pid; - undefined -> ignore - end - end, - State#state.procs), - send_all(AttPids, Msg). - -send_all(Pids, Msg) -> - lists:foreach(fun(Pid) -> send(Pid, Msg) end, Pids). - -send(Pid, Msg) -> - Pid ! {int, Msg}, - ok. - -get_proc({Type, Pid}, Procs) -> - Index = case Type of - pid -> #proc.pid; - meta -> #proc.meta; - attpid -> #proc.attpid - end, - case lists:keyfind(Pid, Index, Procs) of - false -> false; - Proc -> {true, Proc} - end. diff --git a/debugger/erlide_debugger_24/src/dbg_istk.erl b/debugger/erlide_debugger_24/src/dbg_istk.erl deleted file mode 100644 index 49283fe..0000000 --- a/debugger/erlide_debugger_24/src/dbg_istk.erl +++ /dev/null @@ -1,276 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2011-2021. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(dbg_istk). --export([init/0,delayed_to_external/0,from_external/1, - push/3,pop/0,pop/1,stack_level/0, - delayed_stacktrace/0,delayed_stacktrace/2, - bindings/1,stack_frame/2,backtrace/2, - in_use_p/2]). - --export([all_frames/0, all_frames/1, all_modules_on_stack/0]). - --include("dbg_ieval.hrl"). - --define(STACK, ?MODULE). - --record(e, - {level, %Level - mfa, %{Mod,Func,Args|Arity}|{Fun,Args} - line, %Line called from - error_info=[], %[{error_info,Map}] | [] - bindings, - lc %Last call (true|false) - }). - -init() -> - init([]). - -delayed_to_external() -> - Stack = get(?STACK), - fun() -> {stack,term_to_binary(Stack)} end. - -from_external({stack,Stk}) -> - put(?STACK, binary_to_term(Stk)). - -init(Stack) -> - put(?STACK, Stack). - -all_frames() -> - all_frames(get(?STACK)). - -all_frames(Stack) -> - [erlide_frame(E) || E <- Stack]. - -erlide_frame(#e{mfa={M, F, As}, line=Wh, bindings=Bs, level=Lvl}) -> - {{M, F, args2arity(As)}, Wh, erl_eval:bindings(Bs), Lvl}; -erlide_frame(#e{mfa={F, As}, line=Wh, bindings=Bs, level=Lvl}) -> - {{F, args2arity(As)}, Wh, erl_eval:bindings(Bs), Lvl}; -erlide_frame(E) -> - E. - -all_modules_on_stack() -> - all_modules_on_stack(get(stack)). - -all_modules_on_stack(Stack) -> - [M || {_X, {{M, _F, _As}, _Wh, _Bs}} <- Stack]. - -args2arity(As) when is_list(As) -> - length(As). - -%% We keep track of a call stack that is used for -%% 1) saving stack frames that can be inspected from an Attached -%% Process GUI (using dbg_icmd:get(Meta, stack_frame, {Dir, SP}) -%% 2) generate an approximation of regular stacktrace -- sent to -%% Debugged when it should raise an exception or evaluate a -%% function (since it might possible raise an exception) -%% -%% How to push depends on the "Stack Trace" option (value saved in -%% process dictionary item 'trace_stack'). -%% all - everything is pushed -%% no_tail - tail recursive push -%% false - nothing is pushed -%% Whenever a function returns, the corresponding call frame is popped. - -push(Bs, #ieval{level=Le,module=Mod,function=Name, - arguments=As,line=Li}=Ieval, Lc) -> - Entry = #e{level=Le,mfa={Mod,Name,As},line=Li,bindings=Bs,lc=Lc}, - case get(trace_stack) of - false -> - Ieval#ieval{level=Le+1}; - no_tail when Lc -> - Ieval; - _ -> % all | no_tail when Lc =:= false - put(?STACK, [Entry|get(?STACK)]), - Ieval#ieval{level=Le+1} - end. - -pop() -> - case get(trace_stack) of - false -> ignore; - _ -> % all | no_tail - case get(?STACK) of - [_Entry|Entries] -> - put(?STACK, Entries); - [] -> - ignore - end - end. - -pop(Le) -> - case get(trace_stack) of - false -> ignore; - _ -> % all | no_tail - put(?STACK, pop(Le, get(?STACK))) - end. - -pop(Level, [#e{level=Le}|Stack]) when Level =< Le -> - pop(Level, Stack); -pop(_Level, Stack) -> - Stack. - -%% stack_level() -> Le -%% stack_level(Stack) -> Le -%% Top call level -stack_level() -> - stack_level(get(?STACK)). - -stack_level([]) -> 1; -stack_level([#e{level=Le}|_]) -> Le. - -%% delayed_stacktrace() -> CreateStacktraceFun -%% delayed_stacktrace(ArgFlag, #ieval{}) -> CreateStacktraceFun -%% ArgFlag = no_args | include_args -%% CreateStacktraceFun = fun(NumberOfEntries) -%% -%% Return a fun that can convert the internal stack format to -%% an imitation of the regular stacktrace. - -delayed_stacktrace() -> - Stack0 = get(?STACK), - fun(NumEntries) -> - Stack = stacktrace(NumEntries, Stack0, []), - [finalize(ArityOnly) || {ArityOnly,_} <- Stack] - end. - -delayed_stacktrace(include_args, Ieval) -> - #ieval{module=Mod,function=Name,arguments=As, - line=Li,error_info=ErrorInfo} = Ieval, - Stack0 = [#e{mfa={Mod,Name,As},line=Li,error_info=ErrorInfo}|get(?STACK)], - fun(NumEntries) -> - case stacktrace(NumEntries, Stack0, []) of - [] -> - []; - [{_,WithArgs}|Stack] -> - [finalize(WithArgs) | - [finalize(ArityOnly) || {ArityOnly,_} <- Stack]] - end - end; -delayed_stacktrace(no_args, Ieval) -> - #ieval{module=Mod,function=Name,arguments=As,line=Li} = Ieval, - Stack0 = [#e{mfa={Mod,Name,As},line=Li}|get(?STACK)], - fun(NumEntries) -> - Stack = stacktrace(NumEntries, Stack0, []), - [finalize(ArityOnly) || {ArityOnly,_} <- Stack] - end. - -stacktrace(N, [#e{lc=true}|T], Acc) -> - stacktrace(N, T, Acc); -stacktrace(N, [E|T], []) -> - stacktrace(N-1, T, [normalize(E)]); -stacktrace(N, [E|T], [{P,_}|_]=Acc) when N > 0 -> - case normalize(E) of - {P,_} -> - stacktrace(N, T, Acc); - New -> - stacktrace(N-1, T, [New|Acc]) - end; -stacktrace(_, _, Acc) -> - lists:reverse(Acc). - -normalize(#e{mfa={M,Fun,As},line=Li,error_info=ErrorInfo}) when is_function(Fun) -> - Loc = {M,Li,ErrorInfo}, - {{Fun,length(As),Loc},{Fun,As,Loc}}; -normalize(#e{mfa={M,F,As},line=Li,error_info=ErrorInfo}) -> - Loc = {M,Li,ErrorInfo}, - {{M,F,length(As),Loc},{M,F,As,Loc}}. - -finalize({M,F,A,Loc}) -> {M,F,A,line(Loc)}; -finalize({Fun,A,Loc}) -> {Fun,A,line(Loc)}. - -line({Mod,Line,ErrorInfo}) -> - if Line > 0 -> - [{file,atom_to_list(Mod)++".erl"},{line,Line}|ErrorInfo]; - true -> - ErrorInfo - end; -line(_) -> []. - -%% bindings(SP) -> Bs -%% SP = Le % stack pointer -%% Return the bindings for the specified call level -bindings(SP) -> - bindings(SP, get(?STACK)). - -bindings(SP, [#e{level=SP,bindings=Bs}|_]) -> - Bs; -bindings(SP, [_Entry|Entries]) -> - bindings(SP, Entries); -bindings(_SP, []) -> - erl_eval:new_bindings(). - -%% stack_frame(Dir, SP) -> {Le, Where, Bs} | top | bottom -%% Dir = up | down -%% Where = {Cm, Li} -%% Cm = Module | undefined % module -%% Li = int() | -1 % line number -%% Bs = bindings() -%% Return stack frame info one step up/down from given stack pointer -%% up = to lower call levels -%% down = to higher call levels -stack_frame(up, SP) -> - stack_frame(SP, up, get(?STACK)); -stack_frame(down, SP) -> - stack_frame(SP, down, lists:reverse(get(?STACK))). - -stack_frame(SP, up, [#e{level=Le,mfa={Cm,_,_},line=Li,bindings=Bs}|_]) - when Le < SP -> - {Le,{Cm,Li},Bs}; -stack_frame(SP, down, [#e{level=Le,mfa={Cm,_,_},line=Li,bindings=Bs}|_]) - when Le > SP -> - {Le,{Cm,Li},Bs}; -stack_frame(SP, Dir, [#e{level=SP}|Stack]) -> - case Stack of - [#e{level=Le,mfa={Cm,_,_},line=Li,bindings=Bs}|_] -> - {Le,{Cm,Li},Bs}; - [] when Dir =:= up -> - top; - [] when Dir =:= down -> - bottom - end; -stack_frame(SP, Dir, [_Entry|Stack]) -> - stack_frame(SP, Dir, Stack). - -%% backtrace(HowMany) -> Backtrace -%% HowMany = all | int() -%% Backtrace = {Le, MFA} -%% Return all/the last N called functions, in reversed call order -backtrace(HowMany, Ieval) -> - #ieval{level=Level,module=Mod,function=Name,arguments=As} = Ieval, - Stack0 = [#e{level=Level,mfa={Mod,Name,As}}|get(?STACK)], - Stack = case HowMany of - all -> Stack0; - N -> lists:sublist(Stack0, N) - end, - [{Le,MFA} || #e{level=Le,mfa=MFA} <- Stack]. - -%%-------------------------------------------------------------------- -%% in_use_p(Mod, Cm) -> boolean() -%% Mod = Cm = atom() -%% Returns true if Mod is found on the stack, otherwise false. -%%-------------------------------------------------------------------- -in_use_p(Mod, Mod) -> true; -in_use_p(Mod, _Cm) -> - case get(trace_stack) of - false -> true; - _ -> % all | no_tail - lists:any(fun(#e{mfa={M,_,_}}) when M =:= Mod -> true; - (_) -> false - end, get(?STACK)) - end. diff --git a/debugger/erlide_debugger_24/src/erlide_debugger_24.app.src b/debugger/erlide_debugger_24/src/erlide_debugger_24.app.src deleted file mode 100644 index 84dc055..0000000 --- a/debugger/erlide_debugger_24/src/erlide_debugger_24.app.src +++ /dev/null @@ -1,10 +0,0 @@ -{application, erlide_debugger_24, - [ - {description, "erlide_debugger_24"}, - {vsn, "5.2.1"}, - {erlide_context, debugger}, - {registered, []}, - {applications, [kernel, stdlib]}, - {env, []} - ] -}. diff --git a/debugger/erlide_debugger_24/src/int.erl b/debugger/erlide_debugger_24/src/int.erl deleted file mode 100644 index bb39d5f..0000000 --- a/debugger/erlide_debugger_24/src/int.erl +++ /dev/null @@ -1,751 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2017. All Rights Reserved. -%% -%% Licensed under the Apache License, Version 2.0 (the "License"); -%% you may not use this file except in compliance with the License. -%% You may obtain a copy of the License at -%% -%% http://www.apache.org/licenses/LICENSE-2.0 -%% -%% Unless required by applicable law or agreed to in writing, software -%% distributed under the License is distributed on an "AS IS" BASIS, -%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -%% See the License for the specific language governing permissions and -%% limitations under the License. -%% -%% %CopyrightEnd% -%% --module(int). - -%% External exports --export([i/1, i/2, ni/1, ni/2, n/1, nn/1, interpreted/0, file/1, - interpretable/1]). --export([auto_attach/0, auto_attach/1, auto_attach/2, - stack_trace/0, stack_trace/1]). --export([break/2, delete_break/2, break_in/3, del_break_in/3, - no_break/0, no_break/1, - disable_break/2, enable_break/2, - action_at_break/3, test_at_break/3, get_binding/2, - all_breaks/0, all_breaks/1]). --export([snapshot/0, clear/0]). --export([continue/1, continue/3]). - -%% External exports only to be used by Debugger --export([start/0, stop/0, subscribe/0]). --export([attach/2, step/1, next/1, finish/1]). - -%% External exports only to be used by an attached process --export([attached/1, meta/2, meta/3, contents/2, functions/1]). - -%% External export only to be used by error_handler --export([eval/3]). - --include_lib("kernel/include/file.hrl"). - -%%==Erlang Interpreter================================================ -%% -%% int -%% --- -%% Interface module. -%% -%% i -%% - -%% Interface module to int, retained for backwards compatibility only. -%% -%% dbg_debugged -%% ------------ -%% Contains the message loops for a debugged process and is the main -%% entry point from the breakpoint handler in the error_handler module -%% (via the int module). -%% -%% When a process is debugged, most code is executed in another -%% process, called the meta process. When the meta process is -%% interpreting code, the process being debugged just waits in a -%% receive loop in dbg_debugged. However the debugged process itself -%% calls any BIFs that must execute in the correct process (such as -%% link/1 and spawn_link/1), and external code which is not -%% interpreted. -%% -%% dbg_icmd, dbg_ieval -%% ------------------- -%% Code for the meta process. -%% -%% dbg_iserver -%% ----------- -%% Interpreter main process, keeping and distributing information -%% about interpreted modules and debugged processes. -%% -%% dbg_idb -%% ------- -%% ETS wrapper, allowing transparent access to tables at a remote node. -%% -%% dbg_iload -%% --------- -%% Code for interpreting a module. -%%==================================================================== - -%%==================================================================== -%% External exports -%%==================================================================== - -%%-------------------------------------------------------------------- -%% i(AbsMods) -> {module,Mod} | error | ok -%% ni(AbsMods) -> {module,Mod} | error | ok -%% AbsMods = AbsMod | [AbsMod] -%% AbsMod = atom() | string() -%% Mod = atom() -%% Options = term() ignored -%%-------------------------------------------------------------------- -i(AbsMods) -> i2(AbsMods, local, ok). -i(AbsMods, _Options) -> i2(AbsMods, local, ok). -ni(AbsMods) -> i2(AbsMods, distributed, ok). -ni(AbsMods, _Options) -> i2(AbsMods, distributed, ok). - -i2([AbsMod|AbsMods], Dist, Acc) - when is_atom(AbsMod); is_list(AbsMod); is_tuple(AbsMod) -> - Res = int_mod(AbsMod, Dist), - case Acc of - error -> - i2(AbsMods, Dist, Acc); - _ -> - i2(AbsMods, Dist, Res) - end; -i2([], _Dist, Acc) -> - Acc; -i2(AbsMod, Dist, _Acc) when is_atom(AbsMod); is_list(AbsMod); is_tuple(AbsMod) -> - int_mod(AbsMod, Dist). - -%%-------------------------------------------------------------------- -%% n(AbsMods) -> ok -%% nn(AbsMods) -> ok -%%-------------------------------------------------------------------- -n(AbsMods) -> n2(AbsMods, local). -nn(AbsMods) -> n2(AbsMods, distributed). - -n2([AbsMod|AbsMods], Dist) when is_atom(AbsMod); is_list(AbsMod) -> - del_mod(AbsMod, Dist), - n2(AbsMods, Dist); -n2([AbsMod], Dist) when is_atom(AbsMod); is_list(AbsMod) -> - del_mod(AbsMod, Dist); -n2([], _Dist) -> - ok; -n2(AbsMod, Dist) when is_atom(AbsMod); is_list(AbsMod) -> - del_mod(AbsMod, Dist). - -%%-------------------------------------------------------------------- -%% interpreted() -> [Mod] -%%-------------------------------------------------------------------- -interpreted() -> - dbg_iserver:safe_call(all_interpreted). - -%%-------------------------------------------------------------------- -%% file(Mod) -> File | {error, not_loaded} -%% Mod = atom() -%% File = string() -%%-------------------------------------------------------------------- -file(Mod) when is_atom(Mod) -> - dbg_iserver:safe_call({file, Mod}). - -%%-------------------------------------------------------------------- -%% interpretable(AbsMod) -> true | {error, Reason} -%% AbsMod = Mod | File -%% Reason = no_src | no_beam | no_debug_info | badarg | {app, App} -%%-------------------------------------------------------------------- -interpretable(AbsMod) -> - case check(AbsMod) of - {ok, _Res} -> true; - Error -> Error - end. - -%%-------------------------------------------------------------------- -%% auto_attach() -> false | {Flags, Function} -%% auto_attach(false) -%% auto_attach(false|Flags, Function) -%% Flags = Flag | [Flag] -%% Flag = init | break | exit -%% Function = {Mod, Func} | {Mod, Func, Args} -%% Will result in calling: -%% spawn(Mod, Func, [Dist, Pid, Meta | Args]) (living process) or -%% spawn(Mod, Func, [Dist, Pid, Reason, Info | Args]) (dead process) -%%-------------------------------------------------------------------- -auto_attach() -> - dbg_iserver:safe_call(get_auto_attach). - -auto_attach(false) -> - dbg_iserver:safe_cast({set_auto_attach, false}). - -auto_attach([], _Function) -> - auto_attach(false); -auto_attach(Flags, {Mod, Func}) -> - auto_attach(Flags, {Mod, Func, []}); -auto_attach(Flags, {Mod, Func, Args}) when is_atom(Mod),is_atom(Func),is_list(Args) -> - check_flags(Flags), - dbg_iserver:safe_cast({set_auto_attach, Flags, {Mod, Func, Args}}). - -check_flags([init|Flags]) -> check_flags(Flags); -check_flags([break|Flags]) -> check_flags(Flags); -check_flags([exit|Flags]) -> check_flags(Flags); -check_flags([]) -> true. - -%%-------------------------------------------------------------------- -%% stack_trace() -> Flag -%% stack_trace(Flag) -%% Flag = all | true | no_tail | false -%%-------------------------------------------------------------------- -stack_trace() -> - dbg_iserver:safe_call(get_stack_trace). - -stack_trace(true) -> - stack_trace(all); -stack_trace(Flag) -> - check_flag(Flag), - dbg_iserver:safe_cast({set_stack_trace, Flag}). - -check_flag(all) -> true; -check_flag(no_tail) -> true; -check_flag(false) -> true. - -%%-------------------------------------------------------------------- -%% break(Mod, Line) -> ok | {error, break_exists} -%% delete_break(Mod, Line) -> ok -%% break_in(Mod, Func, Arity) -> ok | {error, function_not_found} -%% del_break_in(Mod, Function, Arity) -> ok | {error, function_not_found} -%% no_break() -%% no_break(Mod) -%% disable_break(Mod, Line) -> ok -%% enable_break(Mod, Line) -> ok -%% action_at_break(Mod, Line, Action) -> ok -%% test_at_break(Mod, Line, Function) -> ok -%% get_binding(Var, Bindings) -> {value, Value} | unbound -%% all_breaks() -> [Break] -%% all_breaks(Mod) -> [Break] -%% Mod = atom() -%% Line = integer() -%% Func = atom() function name -%% Arity = integer() -%% Action = enable | disable | delete -%% Function = {Mod, Func} must have arity 1 (Bindings) -%% Var = atom() -%% Bindings = Value = term() -%% Break = {Point, Options} -%% Point = {Mod, Line} -%% Options = [Status, Action, null, Cond] -%% Status = active | inactive -%% Cond = null | Function -%%-------------------------------------------------------------------- -break(Mod, Line) when is_atom(Mod), is_integer(Line) -> - dbg_iserver:safe_call({new_break, {Mod, Line}, - [active, enable, null, null]}). - -delete_break(Mod, Line) when is_atom(Mod), is_integer(Line) -> - dbg_iserver:safe_cast({delete_break, {Mod, Line}}). - -break_in(Mod, Func, Arity) when is_atom(Mod), is_atom(Func), is_integer(Arity) -> - case dbg_iserver:safe_call({is_interpreted, Mod, Func, Arity}) of - {true, Clauses} -> - Lines = first_lines(Clauses), - lists:foreach(fun(Line) -> break(Mod, Line) end, Lines); - false -> - {error, function_not_found} - end. - -del_break_in(Mod, Func, Arity) when is_atom(Mod), is_atom(Func), is_integer(Arity) -> - case dbg_iserver:safe_call({is_interpreted, Mod, Func, Arity}) of - {true, Clauses} -> - Lines = first_lines(Clauses), - lists:foreach(fun(Line) -> delete_break(Mod, Line) end, - Lines); - false -> - {error, function_not_found} - end. - -first_lines(Clauses) -> - [first_line(Clause) || Clause <- Clauses]. - -first_line({clause,_L,_Vars,_,Exprs}) -> - first_line(Exprs); -%% Common Test adaptation -first_line([{call_remote,0,ct_line,line,_As}|Exprs]) -> - first_line(Exprs); -first_line([Expr|_Exprs]) -> % Expr = {Op, Line, ..varying no of args..} - element(2, Expr). - -no_break() -> - dbg_iserver:safe_cast(no_break). - -no_break(Mod) when is_atom(Mod) -> - dbg_iserver:safe_cast({no_break, Mod}). - -disable_break(Mod, Line) when is_atom(Mod), is_integer(Line) -> - dbg_iserver:safe_cast({break_option, {Mod, Line}, status, inactive}). - -enable_break(Mod, Line) when is_atom(Mod), is_integer(Line) -> - dbg_iserver:safe_cast({break_option, {Mod, Line}, status, active}). - -action_at_break(Mod, Line, Action) when is_atom(Mod), is_integer(Line) -> - check_action(Action), - dbg_iserver:safe_cast({break_option, {Mod, Line}, action, Action}). - -check_action(enable) -> true; -check_action(disable) -> true; -check_action(delete) -> true. - -test_at_break(Mod, Line, Function) when is_atom(Mod), is_integer(Line) -> - check_function(Function), - dbg_iserver:safe_cast({break_option, {Mod, Line}, condition, Function}). - -check_function({Mod, Func}) when is_atom(Mod), is_atom(Func) -> true. - -get_binding(Var, Bs) -> - dbg_icmd:get_binding(Var, Bs). - -all_breaks() -> - dbg_iserver:safe_call(all_breaks). -all_breaks(Mod) when is_atom(Mod) -> - dbg_iserver:safe_call({all_breaks, Mod}). - -%%-------------------------------------------------------------------- -%% snapshot() -> [{Pid, Init, Status, Info}] -%% Pid = pid() -%% Init = atom() First interpreted function -%% Status = idle | running | waiting | break | exit -%% Info = {} | {Mod, Line} | ExitReason -%% Mod = atom() -%% Line = integer() -%% ExitReason = term() -%%-------------------------------------------------------------------- -snapshot() -> - dbg_iserver:safe_call(snapshot). - -%%-------------------------------------------------------------------- -%% clear() -%%-------------------------------------------------------------------- -clear() -> - dbg_iserver:safe_cast(clear). - -%%-------------------------------------------------------------------- -%% continue(Pid) -> ok | {error, not_interpreted} -%% continue(X, Y, Z) -> ok | {error, not_interpreted} -%%-------------------------------------------------------------------- -continue(Pid) when is_pid(Pid) -> - case dbg_iserver:safe_call({get_meta, Pid}) of - {ok, Meta} when is_pid(Meta) -> - dbg_icmd:continue(Meta), - ok; - Error -> - Error - end. - -continue(X, Y, Z) when is_integer(X), is_integer(Y), is_integer(Z) -> - continue(c:pid(X, Y, Z)). - - -%%==================================================================== -%% External exports only to be used by Debugger -%%==================================================================== - -%%-------------------------------------------------------------------- -%% start() -%% stop() -%% Functions for starting and stopping dbg_iserver explicitly. -%%-------------------------------------------------------------------- -start() -> dbg_iserver:start(). -stop() -> - lists:foreach( - fun(Mod) -> - _ = everywhere(distributed, - fun() -> - erts_debug:breakpoint({Mod,'_','_'}, false) - end) - end, - interpreted()), - dbg_iserver:stop(). - -%%-------------------------------------------------------------------- -%% subscribe() -%% Subscribe to information from dbg_iserver. The process calling this -%% function will receive the following messages: -%% {int, {interpret, Mod}} -%% {int, {no_interpret, Mod}} -%% {int, {new_process, {Pid, Function, Status, Info}}} -%% {int, {new_status, Pid, Status, Info}} -%% {int, {new_break, {Point, Options}}} -%% {int, {delete_break, Point}} -%% {int, {break_options, {Point, Options}}} -%% {int, no_break} -%% {int, {no_break, Mod}} -%% {int, {auto_attach, false|{Flags, Function}}} -%% {int, {stack_trace, Flag}} -%%-------------------------------------------------------------------- -subscribe() -> dbg_iserver:cast({subscribe, self()}). - -%%-------------------------------------------------------------------- -%% attach(Pid, Function) -%% Pid = pid() -%% Function = {Mod, Func} | {Mod, Func, Args} (see auto_attach/2) -%% Tell dbg_iserver to attach to Pid using Function. Will result in: -%% spawn(Mod, Func, [Pid, Status | Args]) -%%-------------------------------------------------------------------- -attach(Pid, {Mod, Func}) -> - attach(Pid, {Mod, Func, []}); -attach(Pid, Function) -> - dbg_iserver:cast({attach, Pid, Function}). - -%%-------------------------------------------------------------------- -%% step(Pid) -%% next(Pid) -%% (continue(Pid)) -%% finish(Pid) -%%-------------------------------------------------------------------- -step(Pid) -> - {ok, Meta} = dbg_iserver:call({get_meta, Pid}), - dbg_icmd:step(Meta). -next(Pid) -> - {ok, Meta} = dbg_iserver:call({get_meta, Pid}), - dbg_icmd:next(Meta). -finish(Pid) -> - {ok, Meta} = dbg_iserver:call({get_meta, Pid}), - dbg_icmd:finish(Meta). - - -%%==================================================================== -%% External exports only to be used by an attached process -%%==================================================================== - -%%-------------------------------------------------------------------- -%% attached(Pid) -> {ok, Meta} | error -%% Pid = Meta = pid() -%% Tell dbg_iserver that I have attached to Pid. dbg_iserver informs -%% the meta process and returns its pid. dbg_iserver may also refuse, -%% if there already is a process attached to Pid. -%%-------------------------------------------------------------------- -attached(Pid) -> - dbg_iserver:call({attached, self(), Pid}). - -%%-------------------------------------------------------------------- -%% meta(Meta, Cmd) -%% Meta = pid() -%% Cmd = step | next | continue | finish | skip | timeout | stop -%% Cmd = messages => [Message] -%% meta(Meta, Cmd, Arg) -%% Cmd = trace, Arg = bool() -%% Cmd = stack_trace Arg = all | notail | false -%% Cmd = stack_frame Arg = {up|down, Sp} -%% => {Sp, Mod, Line} | top | bottom -%% Cmd = backtrace Arg = integer() -%% => {Sp, Mod, {Func, Arity}, Line} -%% Cmd = eval Arg = {Cm, Cmd} | {Cm, Cmd, Sp} -%%-------------------------------------------------------------------- -meta(Meta, step) -> dbg_icmd:step(Meta); -meta(Meta, next) -> dbg_icmd:next(Meta); -meta(Meta, continue) -> dbg_icmd:continue(Meta); -meta(Meta, finish) -> dbg_icmd:finish(Meta); -meta(Meta, skip) -> dbg_icmd:skip(Meta); -meta(Meta, timeout) -> dbg_icmd:timeout(Meta); -meta(Meta, stop) -> dbg_icmd:stop(Meta); -meta(Meta, messages) -> dbg_icmd:get(Meta, messages, null). - -meta(Meta, trace, Trace) -> dbg_icmd:set(Meta, trace, Trace); -meta(Meta, stack_trace, Flag) -> dbg_icmd:set(Meta, stack_trace, Flag); -meta(Meta, bindings, Stack) -> dbg_icmd:get(Meta, bindings, Stack); -meta(Meta, stack_frame, Arg) -> dbg_icmd:get(Meta, stack_frame, Arg); -meta(Meta, backtrace, N) -> dbg_icmd:get(Meta, backtrace, N); -meta(Meta, eval, Arg) -> dbg_icmd:eval(Meta, Arg). - -%%-------------------------------------------------------------------- -%% contents(Mod, Pid) -> string() -%% Mod = atom() -%% Pid = pid() | any -%% Return the contents of an interpreted module. -%%-------------------------------------------------------------------- -contents(Mod, Pid) -> - {ok, Bin} = dbg_iserver:call({contents, Mod, Pid}), - binary_to_list(Bin). - -%%-------------------------------------------------------------------- -%% functions(Mod) -> [[Name, Arity]] -%% Mod = Name = atom() -%% Arity = integer() -%%-------------------------------------------------------------------- -functions(Mod) -> - [F || F <- dbg_iserver:call({functions, Mod}), functions_1(F)]. - -functions_1([module_info, _Arity]) -> false; -functions_1(_Func) -> true. - - -%%==================================================================== -%% External exports only to be used by error_handler -%%==================================================================== - -eval(Mod, Func, Args) -> - dbg_debugged:eval(Mod, Func, Args). - - -%%==================================================================== -%% Internal functions -%%==================================================================== - -%%--Interpreting modules---------------------------------------------- - -int_mod({Mod, Src, Beam, BeamBin}, Dist) - when is_atom(Mod), is_list(Src), is_list(Beam), is_binary(BeamBin) -> - try - case is_file(Src) of - true -> - check_application(Src), - case check_beam(BeamBin) of - {ok, Exp, Abst, _BeamBin} -> - load({Mod, Src, Beam, BeamBin, Exp, Abst}, Dist); - error -> - error - end; - false -> - error - end - catch - throw:Reason -> - Reason - end; -int_mod(AbsMod, Dist) when is_atom(AbsMod); is_list(AbsMod) -> - case check(AbsMod) of - {ok, Res} -> - load(Res, Dist); - {error, {app, App}} -> - io:format("** Cannot interpret ~p module: ~p~n", - [App, AbsMod]), - error; - _Error -> - io:format("** Invalid beam file or no abstract code: ~tp\n", - [AbsMod]), - error - end. - -check(Mod) when is_atom(Mod) -> catch check_module(Mod); -check(File) when is_list(File) -> catch check_file(File). - -load({Mod, Src, Beam, BeamBin, Exp, Abst}, Dist) -> - _ = everywhere(Dist, - fun() -> - code:purge(Mod), - erts_debug:breakpoint({Mod,'_','_'}, false), - {module,Mod} = code:load_binary(Mod, Beam, BeamBin) - end), - case erl_prim_loader:get_file(filename:absname(Src)) of - {ok, SrcBin, _} -> - MD5 = code:module_md5(BeamBin), - SrcBin1 = unicode:characters_to_binary(SrcBin, enc(SrcBin)), - true = is_binary(SrcBin1), - Bin = term_to_binary({interpreter_module,Exp,Abst,SrcBin1,MD5}), - {module, Mod} = dbg_iserver:safe_call({load, Mod, Src, Bin}), - _ = everywhere(Dist, - fun() -> - true = erts_debug:breakpoint({Mod,'_','_'}, true) > 0 - end), - {module, Mod}; - error -> - error - end. - -check_module(Mod) -> - case code:which(Mod) of - Beam when is_list(Beam) -> - case find_src(Mod, Beam) of - Src when is_list(Src) -> - check_application(Src), - case check_beam(Beam) of - {ok, Exp, Abst, BeamBin} -> - {ok, {Mod, Src, Beam, BeamBin, Exp, Abst}}; - error -> - {error, no_debug_info} - end; - error -> - {error, no_src} - end; - _ -> - {error, badarg} - end. - -check_file(Name0) -> - Src = - case is_file(Name0) of - true -> - Name0; - false -> - Name = Name0 ++ ".erl", - case is_file(Name) of - true -> Name; - false -> error - end - end, - if - is_list(Src) -> - check_application(Src), - Mod = scan_module_name(Src), - case find_beam(Mod, Src) of - Beam when is_list(Beam) -> - case check_beam(Beam) of - {ok, Exp, Abst, BeamBin} -> - {ok, {Mod, Src, Beam, BeamBin, Exp, Abst}}; - error -> - {error, no_debug_info} - end; - error -> - {error, no_beam} - end; - true -> - {error, badarg} - end. - -%% Try to avoid interpreting a kernel, stdlib, gs or debugger module. -check_application(Src) -> - case lists:reverse(filename:split(filename:absname(Src))) of - [_Mod,"src",AppS|_] -> - check_application2(AppS); - _ -> ok - end. -check_application2("kernel-"++_) -> throw({error,{app,kernel}}); -check_application2("stdlib-"++_) -> throw({error,{app,stdlib}}); -check_application2("erts-"++_) -> throw({error,{app,erts}}); -check_application2("gs-"++_) -> throw({error,{app,gs}}); -check_application2("debugger-"++_) -> throw({error,{app,debugger}}); -check_application2(_) -> ok. - -find_src(Mod, Beam) -> - Src0 = filename:rootname(Beam) ++ ".erl", - case is_file(Src0) of - true -> Src0; - false -> - EbinDir = filename:dirname(Beam), - Src = filename:join([filename:dirname(EbinDir), "src", - filename:basename(Src0)]), - case is_file(Src) of - true -> Src; - false -> find_src_from_module(Mod) - end - end. - -find_src_from_module(Mod) -> - Compile = Mod:module_info(compile), - case lists:keyfind(source, 1, Compile) of - {source, Src} -> - case is_file(Src) of - true -> Src; - false -> error - end; - false -> - error - end. - -find_beam(Mod, Src) -> - SrcDir = filename:dirname(Src), - BeamFile = atom_to_list(Mod) ++ code:objfile_extension(), - File = filename:join(SrcDir, BeamFile), - case is_file(File) of - true -> File; - false -> find_beam_1(BeamFile, SrcDir) - end. - -find_beam_1(BeamFile, SrcDir) -> - RootDir = filename:dirname(SrcDir), - EbinDir = filename:join(RootDir, "ebin"), - CodePath = [EbinDir | code:get_path()], - lists:foldl(fun(_, Beam) when is_list(Beam) -> Beam; - (Dir, error) -> - File = filename:join(Dir, BeamFile), - case is_file(File) of - true -> File; - false -> error - end - end, - error, - CodePath). - -check_beam(BeamBin) when is_binary(BeamBin) -> - case beam_lib:chunks(BeamBin, [abstract_code,exports]) of - {ok,{_Mod,[{abstract_code,no_abstract_code}|_]}} -> - error; - {ok,{_Mod,[{abstract_code,Abst},{exports,Exp}]}} -> - {ok,Exp,Abst, BeamBin}; - _ -> - error - end; -check_beam(Beam) when is_list(Beam) -> - {ok, Bin, _FullPath} = erl_prim_loader:get_file(filename:absname(Beam)), - check_beam(Bin). - -is_file(Name) -> - filelib:is_regular(filename:absname(Name), erl_prim_loader). - -everywhere(distributed, Fun) -> - case is_alive() of - true -> rpc:multicall(erlang, apply, [Fun,[]]); - false -> Fun() - end; -everywhere(local, Fun) -> - Fun(). - -scan_module_name(File) -> - try - {ok, Bin, _FullPath} = - erl_prim_loader:get_file(filename:absname(File)), - scan_module_name_1([], <<>>, Bin, enc(Bin)) - catch - _:_ -> - throw({error, no_beam}) - end. - -scan_module_name_1(Cont0, B0, Bin0, Enc) -> - N = min(100, byte_size(Bin0)), - {Bin1, Bin} = erlang:split_binary(Bin0, N), - {Chars, B1} = - case unicode:characters_to_list(list_to_binary([B0, Bin1]), Enc) of - {incomplete, List, Binary} -> - {List, Binary}; - List when is_list(List), List =/= [] -> - {List, <<>>} - end, - scan_module_name_2(Cont0, Chars, B1, Bin, Enc). - -scan_module_name_2(Cont0, Chars, B1, Bin, Enc) -> - case erl_scan:tokens(Cont0, Chars, _AnyLine = 1) of - {done, {ok, Ts, _}, Rest} -> - scan_module_name_3(Ts, Rest, B1, Bin, Enc); - {more, Cont} -> - scan_module_name_1(Cont, B1, Bin, Enc) - end. - -scan_module_name_3([{'-',_},{atom,_,module},{'(',_} | _]=Ts, - _Chars, _B1, _Bin, _Enc) -> - scan_module_name_4(Ts); -scan_module_name_3([{'-',_},{atom,_,_} | _], Chars, B1, Bin, Enc) -> - scan_module_name_2("", Chars, B1, Bin, Enc). - -scan_module_name_4(Ts) -> - {ok, {attribute,_,module,M}} = erl_parse:parse_form(Ts), - true = is_atom(M), - M. - -enc(Bin) -> - case epp:read_encoding_from_binary(Bin) of - none -> epp:default_encoding(); - Encoding -> Encoding - end. - -%%--Stop interpreting modules----------------------------------------- - -del_mod(AbsMod, Dist) -> - Mod = if - is_atom(AbsMod) -> AbsMod; - is_list(AbsMod) -> - list_to_atom(filename:basename(AbsMod,".erl")) - end, - dbg_iserver:safe_cast({delete, Mod}), - _ = everywhere(Dist, - fun() -> - erts_debug:breakpoint({Mod,'_','_'}, false), - erlang:yield() - end), - ok. From 9e5f6b3dfd2145f9c3e6dd0cbdad2c90e006b7a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Svensson?= Date: Tue, 27 May 2025 08:17:46 +0200 Subject: [PATCH 7/9] CI: build OTP using OpenSSL 3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Björn Svensson --- .github/workflows/ci.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0988488..0f14271 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,14 +7,6 @@ jobs: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 - - name: Install OpenSSL 1.1.1 (for OTP23/24) - run: | - curl -O http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.24_amd64.deb - curl -O http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl-dev_1.1.1f-1ubuntu2.24_amd64.deb - curl -O http://security.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.1.1f-1ubuntu2.24_amd64.deb - sudo dpkg -i openssl_1.1.1f-1ubuntu2.24_amd64.deb \ - libssl1.1_1.1.1f-1ubuntu2.24_amd64.deb \ - libssl-dev_1.1.1f-1ubuntu2.24_amd64.deb - uses: actions/cache@v4 with: path: | From 3aabdb8310c8985a334329b8bd10d082d1528d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Svensson?= Date: Tue, 27 May 2025 08:41:47 +0200 Subject: [PATCH 8/9] Update rebar3 version to 3.24.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use a rebar3 version with OTP support range: 25-27 File copied from: https://github.com/erlang/rebar3/releases/download/3.24.0/rebar3 Signed-off-by: Björn Svensson --- rebar3 | Bin 794893 -> 839384 bytes 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 rebar3 diff --git a/rebar3 b/rebar3 old mode 100644 new mode 100755 index ed2a36d577b0b2aefba7506deceda906c481d4e7..762dc0b84296a22a65e868c1dcb86253e1947d70 GIT binary patch delta 812164 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

d7cPh$@&%h`f6%twT(R-< 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 z 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

tjh2lkiK<;Io|%RAK=jCyPU zTl*VD+;GkG)AH%REuw}>Ml8By>k;D^&HzSXfpO{qbsytuSl{PtFP`hSLDq32ujhEu zx$1W6HaE&=@yXulPda{@#oz0^8=Os{?dgDn(Fu4OD_6fvd^iTHKa4Wyarr*#(> zw@Ehjeyl)?icJg28il#+Y80u{1er}Vw;Vnr?&2DG>qcK`*)1_J+F$BT+SQvT+h0xa zu9IJGMfg_@o;W#a(|tEnyhipkx|9T5-~ZlT8Lj zm?K_ePN1=)uKJ#5F}WXSJ?3Zf*<Dd?8cfV^vB>XtgKWCWEtk1h*PY@@ zr*lbk?Dle2v?kB#zrp`+;a#bW8bgc(1cXNb1Vr=GeK&Qqb~8-HpZfvWXrtH>S2YcZ z1es{gOZg!nfwYqd#V@w=32)6xN^^h*3?+aCPrwS5;wvX0{;tPgO5|FLLLHYn)GA&d z`)k5dpQw?XD7R^eLvH)exy0qD>44)_acOE5RX*_n(22PFFYH_{B7M~7{qyw5=$ zwbSL@F(m!u^5SfDQ*nI>Fv7HH3^z#j%Z5vFu>q2eUs2-UZ`l*EdF<$wW)m7=*O-ql zoWxzallj5dq+@&n>3`#U2_=}Q#ok6#+0y?)t?1F68pdzCa>h!WJPK;q_{5%;r{N!r zc;v4h5_r|8|9EJcR1zCFprgEsKY>ou7BQerjIYC8OiCA?pd_O zVG&H6MB*S0DM?OX0DinsxeFzjDB^7VxkTe*=NUjaPFhDb7>n?fPDI*tXJ?yKg3fJ4 zsE87ZOSfWPf^C}N)6>WS=#HBjX= zbAdUwx->0jDpQm)4psOx7WSEUA*CXgN@a4ualcdt(kCd#&K!^CC2;jaEX4Ybk|=e? zCz2S+t}|**T=Vw%w3;l~shjzed_0MMomOeh!Zr3x)cmt(2p;O>iT?$FIkpx(*FzOVWTtQt{KhRdbW zYoc>tVt9+)zY_b4_C1FS>P@9qKU(S!Cz>;H)NQ;!pOXp%Efi!tCl!7fJ|_#7WvBP)|vzfM3y0b*sUCx32flB zhz3XF5X}&nAD3^mttUTo*bTRBde32rnJ(wt42zvYx&jh=^&qLAQZkwvY63>#1X}|H zFygs74JiidwO1snp#mHS&xdN!NW>4jSs}uw`WaW|7f}FFLm7qSrySD?4XX(0zQF)i zlw5ZxCmHoC*soXFs0ay2k$s>V`GZamib@F|FY*)O2^oGr=!Jcp60(aQg)&}OW#BIF z?>){u)9{`QETc8&HjT<5|)gC5jI*U45-BPCYF2> z34!xYRc2^{m7bH*V4;4Ft5f-Rf~JT(t|+n${5TdjMxF;&#i(jr0S?wraa-Eo=hTAN1RR=KDpS>8+~k~FNSh#{HB zpTG%1ECQJDmG~V^^NXmEUJXHuJkc}osp3$TG_K}V?v@R$STjm*`p^R0iVWTc zLJvre9wc|eMnJz%pqA}MgoqIWkgMJdZ56MrTG?&#ylLm*E2a_n^SO?q_Uxs)g2HaV zff}KaQv*U@scIKAplTg04z6s~ui93{Y7a!m03NE6DY{ZFiVvX&c1RS*YjcR3v}w9K zEMyB*y+xca9uaOkH~9-}%@GNeyK%yE(!Qi4A7u)K7Uv%BZ47$|EkAV_(7nXETQW@~ zRd5R7#e5F;whKqZwuH-1EqX%VoPN}0_V2w9Nb=JY6taH>DX5{p4<2zb%=}$ZheUCl zjK%{cQejL2Bt04e0oV?!!bRB>D`JwYMpVFEXLkxh58_Zvp?TO-sI0!tWVcSa$60I@ zhF@vv562kUlb;!nRm+nH<<%M^d_TZGg08H^)_{@Ej}o;t?$MhdRp z8vg473Y%o?A_l4>@LCi?PtqHk9uGYt z&k<4S7O*EWV9_hMO&FF)22R9ZX+r^mCnY{ro);}HIv^paq*Kp25JuMdHq;n}z4Hbn z8`qjZG$5F8JGi3=T1#9LjqOg~)&fl6W7%3DgWpQ(D14_cWWRgPWufm_VKdNns3_#V z`7mb3;jmi-fQvPIWO>p!uo3jowT~xA*o6?$q|70Ym29NY#kJ#Qo!5U4r^E(z^P|k{ zOSE3{q)#(*nC{CKT8As*gPWpWr}^PQZGtz^3w7==U>Mfh?%ERBfGfrGDNL=xZGu|j zu~Du7v$X$>P%v_Uu88RJOtT%Hs}3hE)oh`87wTmL>;*uJI973;4)F+$ED3`?2XxyQ zT*qmv(L5QoXnG`R@D)IXYI?7t@flI`uQO)%$et+{JOG0}`_Er0j3U}1*QXBWHpFH7 z@u|Q|N6Qk)p|$k=tBT2*;0!ZVUJ3GF37lm>;xX%CG-f;_r`u0wLW|K}^v%nuE9d*H zry=A3+(008Kn4*gj^kz(<%l*%05J&siGKn*V|HSzIIb)&c0=(pq>$fFPl!E>$5TQ~ z2+Mw=#$Bo4ki&5&rCNuL5RkRu`)!leAn^=x#(LG}Jy&Y4cNeBqY|HMNVzCJ{;Vr3H zEl%{bZSByW?V8C6CALkj9GzYLg@HZ<)>YyIa8$cWY#4YqLUha{K*%RxtO63DL{C>J zMR6(4C>w?Ef^KjiG&z8#LUlg?%!{D-d8=Vn3FOdt1hjr+C$3@!*Fx9Rs)nXXae(;k za95?bzE=zkjz6#)yh`<8gO!Mc{L<^(3P{yxGv*MO1{ntvrwhAT4BME8u^Z1c*mwW{ zByj^6GkK-nhS8I(t}lDCnTQ^VdcQ^S_Y4&^fYgIQVVQC_UBIU(`2VR#so!R-Zc0 ze1Vn)8m@mJQiHz?9qP2GeHgbAXZY&?f2j0CZQ{BMTeCnl#W^n|eNmI1G-*b;26Dd< zbgl|tP*rLIcBF4-X05Hr1s?z^BJG=OeIE@IrQm zm-l_Q95ST~*Zul0D*R0D8SmSU9sgDmEPRJRs8*I_^%|qkQidbkFMD zb7rr{9-&@%O%!}@HlT@F7sfVY`=vD#;QW>S{cb*2td==|Kr`xsek^-++BPcTmyS;ZCGvT?L1|)tkieAUOxV* zRrJzbx0=%fJY_Vlq;~^aaImcika!J8-jKG4e;zKpO3Gv!(J-$eeX*C3IrEVwxE1nn z_*5_&C94bYaJWx;ddA@WS4Jf6^d09TnxxKAPzTL>8trm?ajNc4elH8bH!IsZ&bql)Ei%4g|F{-hkidk9U_kxgly=V*WTKqgXafQ zmR6EuwsveoyTlIo`fWE`kww9%G(uz~XIezwOSMD5|3mwf5A7nY{jeW_VE@Nw___xI z`=9>a67tSgYtL4~61A z9ns1!VfBnmkNeEmsmV^aXIJ}C`g3dwz{||}{^!Q~mTouPU0B#bx!U<7!x|)(sl_a3ikz;N56yh5bhSR= zsA#QY;4N3skmO06az9)1A382>ihQnfwaH&5_8%fkk#{I!m~jVeNcp`2>1Zh(z)kSl z0$Z1<`p}|9VbOAGDdokXi7E)=p&}~9<)L7MN!LfFH8mM_j-4=OhgTm z%b5Ot3;i6Jwwe|0`WoI$Y6e7tGi=fb(J5awP1RIv*dfUvt`sH>nb~YL4HHzxRC0#l z_eg~lS`V5qQNT?^Sw$ND8>a~r0156FpSp;67czs1F-NSIk*~*(02aGAhqzJq(1J|p z5W;n2!YQ9pOUZ3b0-rFF(QwJUC)98!@|^$@Q&tqQ z{16BMvV9Jj7zr7cTF@$-r7B;&8LgboGRZxQ*BxSQw0kS=MTkt^8%kQqZljrA*9!B^o`Up!a&J$J>H|xb%cKb(_ z{PlW$LN1SHU!9J;0HwewUp**M39sA6K~!8K0Qq6t5 zCyEH?o`>3|f}^kzrhg!?-Xq!i+4|rY;XsPc_R0=~CQN{kI}%0_44HlKl)sAl>clAk zR{Am{;svRh9O(!KckTrpz5O3L2WBqKQ%b1^J=%3a%Xc3?pbsjk7K2Q}M&{EuR=O;= zkPqaD`T#FGz0lXT&fv|ZRk0>{u{UPfr0pN(4p4K}+lqqj6X$HR6nEs8O~|>EC(%i1 z%q5R^$D59|WmkK%;j#9N^T)^4Ki;&Sq#Bn^F1s=-M8M4E{dllB1V}ZbjpxxK=has4 z(OV>8&4$|)!1ztO|M=H_ETr8k*EUI)=U%@mX4AF&@U(bJagKm97cT$zO5$I2!u5}B zqpj>*iWv@p(=EXLbZpC{p!8FZpvNgPeeXiM)wRVC#)w+0?)%=v z91oo}mj|gIPG{fZ#?I5`I|eR%!6F1N-rnG@)JpjHS{T!tdK2fYsp%$ES(K=sv7dulsrY!e7Sj?VV5O zbMaR151rGN70fSJ?~P8(uZLe2EX=%In~`IE`#v+aFD5gC*Q35Scb$Q?UvERojBs7g z)7i1=gdOZ(o?pw6y_eZM*w5zi7_Ls<R84q-}}WC zfS~WkR4YN+o~iL{;_SRV%xTD+qU&`-@To4#@M~x z*kkP0T650z&5%Onx%s)Y@8u`K+uhTS?PapJb^+R)r1kemzKNM*p0i_~iT@_t&49j; zoBr@BX?}Q>zd`;FSP5`-wxcsLHMDiUM`SWFFi>@La(Qr}fo?P~FergEvTIs6c&Xdt zIqFz&`Y90j9YIgYN?c3B+}%LI$4pO~!_3J@PEN_l*{(s+{f~s1pPrE%pKc&4BS$Gc z0Y+^kSu61;0XdbEt%VXpLQ|NLmXeT`lAae~Rn?VC7vSt8MFp6F&+ygo1qM+Q`hjqQ zFoUNCCW2w2!HJ}~gMs0uYT_manp2@NKyg6P7^1T?7#X6YAephGTK13}ko24|Y$vYv zgoX(AglP(_glYP%_DZ@J3FiWV8u!RRkmddc9s;vID&0entQ0Mb1V@mW=!=9$xPlX~ z0?Fu69|Hd^Dhq&%#K8?r{q#*o@O=e|#K27r5)^^~i9{3-$^gUUU*R(~Gk~I_gaPJU zVQvNz83$tgh2#vvh=IgRRGX$l-D8F8n~E07`R}enfep$*_)uWaMqmQOv|eBmyf)2? zNm}5@0;JYxF!LZVFfcJN5SsHCll)cUjfYpc_0Ez!#vh<DT zOhBrM6VgNqLK!ANz)H_ZNzO{jOUueg(o)gNQ4L*TjGUhn4Erfk;n~;1XE;8d=y#>x z45Ac?fm}9_aO%xj=d&z3Z@L;ctLrCi+`XpeRJOaNKr2~|hgq!0Q{6(IkwM?6nL+am z^BnU$GcX`RNJ*Jd0!tbuz(mi-%TdtCUC+zO$4<~p&PvfsP|?T9%8^lm(b$YFpx#H! z$F9sr(Na&(D$d8Kwv=p!kR~7h!wV0G1rSCfu^p>z&0+j+L zUL>XD{e{_apAPEFXr#qxe(EmVB@Dq+0X$I~kFuz<5d>#r*Y{1m~^?7d-aQIDVpj(9jGq zJ_X=$Zuc@eO;4Dr#%G&4JcoAfR784u%M%^E+UT#WkHklBorL16X?R&@w2eR`;xam_ zcGG)Cq59J9u04C-@SI*4xO{?$;yuHIT6ovv-({q!Qp1=s zfI|kdLH7Bzu^=;sPalQc%NfBRK)yrPxjYllWGv~qOgh4A6JHR!OA=IzO%tPP+Fqwk z+B^_~$#hz~KKY`#exNJjANEDWf-@FTu{vVQ=E-!PgK2(g?48ABL}Ay6`4( z!_@~m%0l#8!ug%JhCN=r!#qx$mkp}|(eApD!k@{GonE~StBcL6BeGJuUUcJTKY{`*-8WMF`RDE`NDbg{GilTv&Ni<|;;3X1}$RMY+0 z574q#x!bvySN+agt+}Hmd2TsY18cTw-7Gi!PyR0BkRp+1*u+K%=w44Z@;+TnFfm&z zOO+);1-|(bA(e>}$4N6i! z`stloTzNfjTzfrdGV?=5;}ZZd0<%xO9Ied80DqN`0?Q4Ar6%jLl2vWh&@~&QY?`p^ zZDLxxOt|6EZ5iGC2C*wfz0hs7vabhqoBDKO2EB{>fJdw8>M@-&R6PY{q_ZDMg!PKi z9ygsvFex|RT5+Epw z;$Vu*#G&D0|3nv{WmzUe@tIRKVBlKV2U-ISQ`=1D3c|!dl~G*dICpulDGmo`O$HJz zRFuWwYVi_@&KzZVk~{%nR{-djDH%OMWr^u3mj@-EI^klA+>Ry6#Jg9J(qossLcPZ` zXd|a98ki%JORT)OyuetglD~A1_iZV^oy`Q9##t=3+dMdPC(}$d zCBdAsiNP{uMP#8JEk(Szmj&Os7YhEJeeTGJR3hJc2oaxyrY8d6rX)pHv&4m%VnQ39 zo=Knr6ChIdMPAr((umz9^W8^hrssj9&K!KATnoL>Gr2=W(!lJ+7cfF8o{vz`_D0Tp zf__&K`5UFjqncuOAmXP}kUL9l(~$N)5{n=mc7e^xfSro=nxnJ=hk(&GNRYyK%zzKf zXMk;e2?SexVm<*73zB>q^iPX7g(w5^I#^?WR6eA`UhlCcO)$~G%n>X0o~BGDu-!JO zOCn+DN^Ql&1I0s zzZpkx1!XzP{Cd-Tpb#3OEu=e&>)r~JGnUxvJzLZ!7F=ib-}aDB*I*Ll#aVyhZ&L`qAZ z@s9fbqP-ivEoC=I5RvPE@JnXZKYR=E z3q9V{>k4F1;LFoYj5D0?F48fV(Qc-7R4|`Y33Sjo#X#ZBn7B#stLl_@+b9+~F}xo` zyB5H@PRul0^)q_BqmWdC>tdmGsh@CJ0Fxdx8Sc2f*J6Yhr7Qo{i(?_G4|fMiUhcIE zc9~ayNQ^prv$HnrW)aK@ENuf5Gm{R|*iZp)gcZP_lD<&N)$j^kj`zGk$e6r#*t z(FSnt)j}^~j*yEm-BE_r&zmUQr!&`4D{otkk}h1TO^<@RVP%pnPd3C`zoWj7h9zJk zXfWkz?hC`?Zy5nBR{jHTY<#QMUrFd-pjat_Qb!o_F7C!(jhn6Z9bNVtIk3+&JnC)pNgSzcA|b zs&4d*uMEX}=O}yaaobkaqw)dfZZL41x}icSwxgkr0KW^@;{gAKdTmyC1Yrh7_@6o` zl5#eo9Bd#UOuCe~r=QaMNX=I_9MxpC)1=B2p_r}>C;-3k4k-ON|- zu6I4jSfQfD4j}V80kTee)@OT&d_8%iX)tgiyWl-K_}DPRBBm*N9RS2E~T=C zk3MXRlDR;xoM)W*`Xnhzh*_Q5gM_JI0{(Pr45_b&3VwZ>=ZR&i$+E4R^C*kjnqV{B z>7;a@3MJ~;ELLYgHMP^ zU(7a|QDH~7G*61~0n9CUH`}$m`dDB?vnFj1t?=kgy7oK`h8N}|ETL2S;=spN>#s&4 zA_jFzG%M?rN7-rC@vy`A^qg|_wxA@l{52am3d1Tnd^A7eizVq+58>jAGtw0dLXUqU z7DlY!E&AnvcgDcA>BAVZXOrfukd7(2hRN@k1dT*Lz^beQZ z8YNQXkt&;pfq{)vBVZAlDYQ>5`_8$F!_Nq| zGLDuvJj)jNxO;%+c&!@GdS>pGdlU7vPMB8XqI(%DVWy1>L#O0F(LbqETD{MEfv{*M zcjS%b`}6Wp3*jg>=SQ@zc{d_WFQM4{9M9PO*F|b6{T`f@hlX94^>sLTI7K%p6sM&j z5C>@C_^{g?WHooxIzfUBKeA&7#)g;XLC;B9Z@*{qQ0 zdQ%bN#H=YAN_wIqgj~_aos;ZilcJx7b^%v~HO9vbUkL5}8Nn&E!XwhJ2LW_Gn}&=T z)H2iaYO%ts_?UW4+3VOIXoK3}TxYVLBW=4={!RPXlv|t|#DyukP&&0TkA=RiaU*{V zcf^TseEht}BTK&d2JeY^)>)Vt^1Zc*(l13dtJ7vTdc@Wjcw#j52w*p$x$|Tp^Z*U? zwpPrJ%O8JxmVV(&LnPFOp4N)c70J=E+YqliY z#Jj3cHNdLj`nbx~jNTgI@Aqdw_4dNlpziZNu<~8Jp8T)HX<6?0 zQL*@m`2=%WZVn7)^7*z?q%N?)AK+gRma{nzo-3X`^S<5U!c?`2JD-2Wz?>*KeDK5clT+~Ylm(auSBk_0zdDQwrA z?QVQkps=5lMvrVL-E{-{O(T-7AW;?#M29@~;ZfcRaUmIHkk}JpJ&0YS3LT(#-#Vb0 z&xK_xMDJ~|1dO4|jWt^Xbt%aA)~A#Vm=zj}s0)FS$(FgYT`gD>fd(j}nSd9Rv6-ui zxqiBVWsBhEai+6(>7`9^cKT_jcAjRhAT4d}JoF2AdWB*MCu6{O2y!pfGyK8>9o2S5 z*0Hjo3)!B1tXcLiH_0|#?>Yc4P{N$IsRb5dsks>PV@~4$?o09Mp(HT5k@2)H)jPT` z*@ZCTq$)MYeaSdH3OULi>gBM|_#H(V6UE@`nva9qOcJ*Rm(U!4qdgXh)N*m*R%$O#OEwW&;+KAZo#bl!;9{ zu0=EC)j*FRtHU_b1!e|nalujLj2G*c$rdh9TaYCW)=l|Ne^RQW=vumC@W4M~xT=RE ztJ5gqyhbG3APb74Yytq9x*Q{t^Eqn0tueJ9>`T);?-6-qp`b$=e`7EotfU7faWI;E zH3FV>Wv3e6DiCV}~By zKUcoo>%7u;J>%KX+-_iAOJCyMi?>|WF1Wd(gU9(CZKHf3}!4l zo(yK}HCI?@`8$A(k^>!>{-Nihfs%vG$DK{RsOzYV1QqxpKO_1Hw%QBkNQW$Q>G4uX z!obmU@xhfBd>%WG4HFB2XUtPJ<@Ny$Dm(e$Ak&Q|9&+$8un&*TU;70RCL9z0EC~8I z$u5>wCjO$5@zs*B4%Jxb!`hBLuCrbT`)&g*i|wv;+4ceI>vG`3J|%*OIvEDugDA(f zhlm>W4N5Pp&p+x8#kqD?h9h~ihlckPve!nHB&V@%D?l5#4!O85MzGrn?g>6`fMyDf z$%?b=RB(OwAyZT2TDXwcTkt#g8ze#x+sq?#y@4+OfV80$CCIH%=4A}>4Bsh1NkeEI zPhf?!(i#AgXVYBJN9y${Rgd`!bR{8(cG#6@K(a~4dSK(5pJ{v&&N|Y5Sl%k@$XFBF zGqv5G~aEAZF>PsI~`OkNhJ)D$tH>P%ipKH=#reY@z6C5vTaZw zMg*&2z!`tXN$e2`1*{LZ3Z;%sCW^dIYJ?n=d+Y%rho2H#lPk%pZ>Nz41-TzkeT^w$ z0SysbZ;dUY`^^TT2G&kr*O{ zdfTnBM%{C8<73Uy0@0xJ%7o65aak(YspJ>w_*5Lb9<3dvftEHXqH- z|E5DBPgDYx;rl!QJ>v)8kwXNSD2P8dl}C7ji#z8ujhDQbIhnW7|GLO|$WJu~1RoIo zLG?Dn$RUgKi&_cEy?2RQ7F=tys$dR`jhp zYD9dcf7?jq65Q<1ctAGfCAMLapPA5vtVr+E4YvIH^~4!94f#PbvO>%}R#!D3z9`*0%89Oi)NB^8Z!9*d20DVi< znE7i7{c?B$kU=NG<;7qKf{6!EX~&FPn$pld)!&?7`TydJVww^G1+U2Tqmx?gs{-{MdWdR>FC5OLbnb;Cc8r#R|eDt{l=y zBBsn0cr+pjCQL$6zWngI&jRYsDw#rZz_iZ_S}uNc+4k4&7*L$H9L+6nZ^hw=nL7#!~+;2 zgKfJ@;BCQ80Pjb*0j~J88}wdenwEEanzXEEM& zUFl$6{L@`ZZskIzT#|DVeYCDS>q#D|M^tt-u5`{Sb>2Qcp%|-FX6y(ajlAgS!-{L( z=Gd{EwD{ca;0^c|((F{zd^HGqJy#h!JYV@QG>ZY2$%#Hqq|L;GIej>tVc+e7d*kW`?=(Ban|fAWc6t!2>?u!ZG!#g&s%03%}B?SiZ!> zvE_3=6RKFgj)LYmifFvsK>Faz_KV94Z=2Pm_v<$YFPga>c>SNQ|Ll06UT$|HRe6t% zT~`L5KdbjYLjL^HDx75kSF~0BGpag(7okpe-QB8{=##t}bzM$%@cFCU+B|zD{~)7} z@{12|ps-p5d)V}!&`>(>xgGR!{Bo~>i9+Wa6`3~y-8{TD0gv(LNM|Ph+zilSz3JomAM<4!$f9K)` zbqb-nk&mLHbX<6Ga^@49$qftHW^&&*Zcui;FAiKh*BSU*e8Ll=x_X$HEO=Wg*{*;0 z4RG8duG6L6(fec^fQe$Sq3MGpYu;_l`C#34^^QR7o80$4Bnxym`5VN0dY|QiwmL>O z6?eFmJqeDjtFmiSe#NVPsQcHAzQ7j<1HerMj3W+w!p{4vDW0MQ`c<XaM=D{-b!20$~4GlBF3Z$JG9kBt2mrL}dNq-7p8<6P4In zqunAjUoH8&z7{YXo$+AkSJi&E?ld4Yt4=_&J#^8`@--FuHzhj%I-TzG8f5)%n9f$- z?Vzu`(B=5erPqe5_MorME4xd;!r|%%+P^P1_hg?Kx#mC8B>o-6U2ULelcC%1z<_T= z3eUy)m*@SeWwqo7rJ3iP+%Dhml#jC=%C1lP{{?@ld9oy(;%}{!y_=7)W{H#zd?Z?v zE*4ahBvQ!6#nrI0t(!GIh@p zcPZ{vj7B~A@8t@_>i>r0W=AWw z+$Ft7$+W7}hc!F}@$fWv93i5y@w(zA$iN{2enMdeAm^X?G{b%ZK~|VmlC9`|Y`_^u zXA0etU~P%#zc3YYEWze2=}=O~PLCA`iZ)wWrv7S;zS6{wH|9D9)91Fr>5~n+t4#mp z8au4Y!!FV#Z~fv{hW`a{%e}q5jed5{+Ta-&x#i%T{>zyI#+fbSP9>P0Y2Kz|*OsXl zGnD4e*K?vi#9%!f{?GO*@3A$JSstMm^{ls|m*0YWVoj#Vi^vcAPzOZxjM?v~)>6jL zgNkEp0OtfV&3&xEh1`NSqY~XGEfI^QI?#h+=7n!fjd2nu=DG-Q>!lSvTzT5g`e@8} z%PK^93MwwtX7fuK_1m)fg-zaA(D=zoW>ZPWCVT#N_JWH+yV_BPx}ce`Gs*eQ_t4?= z7?Ju({CeB^jZM0f-+ngUaKBM*wcS78z7Y*=VJWz2X~q3$Ov>)Onyu@8ucx25Jjrgj zaeBL`_<^%|y-)@)W1JGFb@Y1auyLQm!%n~FQ6t)xB^*H8Ss4J0(f<>$a7E7=#qxeL zR{eNv4aj~@C$M2Z@krfjTYcE)e|(;#`|(BwpQSt-ZeMSd*Lk^Hk6-jF;v_+zznBNg zpG12Ktc#`1qq@}i-Ig1=Sjou@L@%m=7u)~*@g9a=RN{v2#A0 zpD(9yTSWpQbj8=B+nZLtt?IuuBX1)&$JzIDoELSnoYA|PaA)eb|1?>AfyUH`=3aJt zpML1vj$vTrp)fy-;$hfV)hVW-UmknEy(PJ5{~a#l#i82_iPhQ9t@*Nc6%48f(%bxL za2O*xoC-;Mo|0Emp|))6-s0MQO{jq^j(lcIb&LieZ2bMOGtKG;zG}RVU&#tzbWL8L z!Yw0kxni1pM9-GFWchknOn?Ms&U5Z!8xOapzB1KsQ=BKKQLDA7v*R+UKE7nSRC$QL z%yk}vSwJ+YJQ@4O_cjH!9R9>E)?U2uEK}kA>ksfY$a`z`}a zK1lrTowPPRH*CpSHGWTf)HXfaqV`m9ALck8w&9@aT+ zVWgWWv zhK~bV!3@WKbHWf7Kf#zWbVrGp*bYFFlapElhZ2$WCGm+c)c|x7p5*4=MvejRqP=Ob z@U#fQ7+T4;Rhc0VE`=L$O)=jDuaWrvL}z_!v>SLYQJLWtrS@3bTae21z>#v-PC)%k z{F5IgEd_hA!NWwSr5LAkGq&=iO&dO(`IWwK*=&7^R2rufp0+x;nJ%Yd+#aA-6y3U} zDMYQkDzvL~{n4p*Dz|20X+yzgr(15H}c*d zY^=;r7(e0R`#Z7m39u>(J@DZ$3cw?Vk5Bd=QOB{QiwzahK==|Assn)iv`v^SE)Ak) zS?KfLh8LFQy;EPOZJW4r6aZ8@A93no@+k~&c7hwnr(2S8*xYgRxa~c~v+kzc&Bu$& zT`@Z^{mNh_$Ci?k&|@0;yDf~)^OAbQQ&)Gq4ilza3LocF?yJ|#5mDiJ#&*)*hw<6? z;9lCqjxC(BXYw~|GXdIsq}*e*Wr8j@`HP8I}!UM}YgUsPC zeLNPbt=xRfx9fPN^U`waScPhRZFJ10WB7%^_?fwtVUs}+FM5&H{C>6g;#34I?!a8t zK=2q4+kpI_7T|Z_bNmo({3>@KzmR~up!^M>z!^t=!{iYn>;VXo;|*{~gkcK$>{dV_ z2_f%xq$vW4IAF+gajE{HlIv{%N zV4MU2{{;!S!OiZozu|`KC18LfzQNw=q38$#^mZ#ECpmyn5o7QRsjBpcl|*BgL?|l| zz&l`12{<X#Sv4YD{vw>;@(daB zkQoq>?IQ4m72mKV8-uGEp_%Og^MtOZ2EomD@1$siivGon*-_*PCQS{u zY=ND3{5e54>j+=I;o9m!?+8t)LGB(JUkS{~MYI#-e=r*cf)fG`HlPSsh-|LG1N0zd zhSkqNnddX63lKc?YnJ$Fl>|5|Ai_HUBlPZmKf9VET-hRncx=UdzRLsHyS%q%#REQ5 zpw9cD#y|U^GTt%Z&;JXW>YGJUm?D4-$^hVUy#S@Hb7f%~K|imFqwp)J$9#P*lMMNX z229tnzZq9fPr7%2#@vd#w)qG<@&rS3@XD(gFFDg4E6pE7mOw9N7#}JOdeCv=vN-PNt-=E2b+qGVWjzB zgv0%4_xshcQJ#R_76OmDV~u^`*|cE_UnPR)=`+$pW5{l-^gG>$_s#mRrya#+M=K1z zA9UU?c;sR4L$?h3{|u~zc(z_e{{{k5U`vre0mTC(YFPf!Ud&p)_pYl(+dNoR534^8 zB9{}+r2 zzPbmn#=LlS2~QHsHENX6QJ9XQnNui_z?+I^U33-g@pWUr4BsVL6`HnaxH7FOb_-d% zjv1%*Nz7YJ>EqF2AiiWdwQAT=a=+sVG)f???5CZ@YGvopUra|HIt$0f)1$8)%Y`r< z#y#D76~@y?ve39Jq>N43{(7xb7PntL#>ECqVK~wD8>d+}^i0u#H z(63T)32VBrIicZ9VS_`faauFs-(cFc$okry&=}NAq)fuy>B*cJ(8v-jM0<+i-uDD# zGEE1lq5v!89vBJu52-iQ8pE-+;!p{cOPW4isc5g zIFZdL9?$fFs46ArTH;Z1(C{1OuH3wA@b-xJRj9~ogr7%kLgiRiC1hWCOKMz%Fo*Ui zQ^A!*dCH_*0tZV7u|+^kNzS^h=1m7sYq^y$D!BLYmM8wJLcVat{WV<0Mq((`X0wA; zBZGQ)EG)%WL(5k(A4eirBP*sco&6v_a|tzWUNjY5g+v@XMHqfuN)~N4Ov-E^O}{j+ z><0^_{?iL3o9w}U7%{0gIH8Uzyn2fZ1YYbuK^dtcuI>CwX;5ZSlLbR>Iy?w)tb-t> zzhKIMSSVK0K-fX`Cx1#qa#jspO2IXc$Wp$#i8UTkHEsyD11*T?7~3 z2Ca=_)VpTx4nE8_+dPd&DT6M6a}5c1rt%8n)uFr6;aW?nMqCzBz57^D_8aZ$-pT;S z*i{2M>4!&aHTIOot*`Qw*~~BAzvHRSNQa8I=F~`q>dfz%=;ktL6CJlkb|8OV`y3qo z?v_qp%cklx8~Bzuli|193_pXX;IncNV?gjPb(T2EyUy9!dXn9yWMeo1k^GP+igYI` z+CVMv@~FNWT2vU)R{T)Ex2?01r-`!2Oep4Zk&AZ{;{r_eK?<+#E5Gb7*n_9vxp(g^ z)%V(EnRW6@KY5gy*=b2K(C_|Pb}bp6_y_7JvtJ{N0KVb{jZ$$uLj^rTVfF~URT zfzpb0ZG#Vo!ts2a>?AEl>Q2(Km!`@Y8!Wv6ilY$NQNi0VJZ5lC34i#+5|cAq654vd zq+VSmUJJd`88p^ncasdm>!mjNOpNWQfaT11JNY(btNz#cKxD zq)-^Ufi+?LkEJsf?S^k2E;uL9$kAaW7@#QeOBBugQeaUfHGiHH+LpL_uQ?wI37_kW zo&fBuZ8Z@=FJ>PZKLSNB;DafG_L{@hpY|O`8=GNePXGsS4%JXEimi+Kkmj#(Q(>`B z$EuYl0n#*wBt~yZ)alJ9q_ZX#)gYgbC)f{rOXJ}Qk0;fdNbH%6lkoe3S-=uyu6)0n zUJB|2K8o(jNc!J0ik&~Q3bBH$o2A5D7+Q^q<_m((+U_ zhm+<81br3&q+VHn3TuW8lCRO0=`Dz?igJY$nEBY zS}dynglDLwXzC~^9&*zd%pWjs2q{FJl!>vFY>Q1HiFQO_Ez^ShPIQt6SCnhW2(!RS zh)Tiixs#usjA5*VH{LMDs4r<4ygZu z2znWf@LxJH&l4lVI;?NAn5*%p6EV@iH&uiolWYWsIN~o!S3=C-L5K+&Lg6;t+e;%1 ziu`4Xd|6DqpxI;Xxf52X)>4}*QqT{U_DmW58ZQ0Z31s0nQkF>@UwQ!*ldmsY5`etG z7K{}@2BZcezM2eM_k1pi!FjYmj2=!-Ej!vk=iV0M#g>E5GL83)siRPlod0wdH4{P`ndTvg>4zWw4IcMgv zqXy)w(xqIAmVzgx(vi{X5tMy&U5VIoI|~h9nK5!`Rcve0SiwrT!o^xxEStWZyR0nZ zq^yel-BWxBTVr$yK1{?{YqX@y0nb;dH z*HM)O>1BwIA=EK9T92_$WLHXPn&lHxqG7{)iK8Orns1>VCL+{dZFSpX)@7>z%a}_* zeS5Lc+X?DAiO@}y&5mJ;9$0){oKoAm1oX}PFCwg8pvfg58eMECp99P`KRrvn@6+4daF92DdOIBW7`xp*>?Z_ay6iv*S8zl)zBE z$sE!u{=;Odq9(SpIjGPN$C)){{_@ZOr-pVEgs?>_{XQfI#ye3}@ffKz5+$)=h_Z2; z)iM}v$v%te5^PMCprS2$2oxfWggMa?qOxQTDr)m_#wa`06}EOBk_R6{bL&(AV8R-y z3n>F#x(xGBPdaVH6vLP{5aihG%y?6Bh@ztTPyrP?oa2ceY9bl9wb>r2Q4Mkc)6-L; zG-|PQ{>T zIDEnrYU*|iJC-3kYl}XhdD;QMzL7I`B0KiUKCVDsScO&LJzB^+V?)c*PDHna#RT0VRdq#NL%+k^-^ zXTarC-cw}_^Gq7xA&Iv5Loy{Myh+&CzCwWjp3i}bM8Ni_D4k-io}w3(`Kurbld}E_ z?z%%>d|HhSfMEKZU3tNpUH7izL7R9vu*I=7I7H~96PEJIjBomW(7ZEu+0%-7GDxQe zGDV08iKV_^0sREPJ>$UAm_~rey8yZD zYRDTZ#T%lGQgZ~W+?G9Y;i%5F-=S%P{c0obBa6+ly3P`?mBHalc>;A%54=oy^ea<7 zZv7;xfnESzcmX@YRj6>iX5gDY5oGQ12@wS5I8YtFq{9OQs%F$W4Rg7YpK=%Z#FTF* zoINMLeUkJcB=9-3DuX3UkM-YwG(`PgbGkE4*#ctI?m4P*u|XNP-74OEcews_#|KM% zVdv#AlT*Ri-ab?zEZ4O+htq3A&Es7VA=^7YU!TpFH%s}~qm39IaT^kG8y0apf7a7L zuD%z4`J@xDbwU}nbsRPGQDkk@bvBpL^XlZ#)g8eLG=(_r)TN(~_;YbiMNR;+49WUt z@Ok0GjQeTPBfoAPaujmrOApL25A?TX>9gx-PW!iH4gyJ*EeoDaX#RIoFhws<&&@=R{ltC%(CapTiA ze#o5M;L1PNO$W~>!S#><^EkA;5sm8Fnak7>HTGm2)2s6@>Y&*}iPmnH#(QX3)`A;z zTnqx>_|SzsS}Q`4|Kn?0vHt33krLkdK;alp2lo`sr*How;v{D5Njlbr44b~fWyTq^ zXLI-V9pv0K^op~SX(3l@Z}o7k)28kurvG)MQ}vGB;-T)0d1FUx-}%D-9V0M+0>8zjx-=4~TZE%RA-px~=I!aAlJHg|XPRQq-;G*$Emc4VO{ANU~ zXOB!1jK_yd8Nq%MJ4cBWEgxMh{gXFX5TVodT|>apHn4kVAQa!Hrhbi?a@WT;!G#Pk zAC6PGBN_Nv*B1Vq0&iYi#N#I{o2M3P-QmQuQPL(@^f{dV5R1548?O8?Iy|eX684e0 zD<$*4Pv(Sc?zL9jg~(Doc9Fdkbad71LJIB+JL{yeYt;1I8d7yErACCLYuS-=?Asp@ zM!}E)%u`+c0jG&)o%PSEOf!>(ZdU*iI`3}qx76T{`#dki?bGMkpnx}$0&mUE+?7&6 zrvBxcW(NvvT%fYm@_oBe<1?yw1$*)f*@8Z8x=v}u*fch6zS@ph5jE1{s6=V3XqWffDo{Ifv^T%fa2G+D=MbVpKDun(9Kb+kteszX=|*8@ z-J`zk<$FdVqq76}i1r&Qixt_FAACB8!j4~U8kw?i3bn37c(5gg?m3$nHR~*o9|4~jX~*ACpc>v zBmp1Png@IjyZEUY(57$8@EC!)V7a|D&_#~-DNol)Ah;R!?+dqg*zBoFY}@e^)CpM- z(EKDqHVzbZESR`Lf9OoJXIHwOx{-~S(`l2* z5d-YbVL8akpqGHl~0!$Y++ic&>?X|3%HZ ziaE;~+UeA3wwmtuDS?OrnAYpZt`!E1gI-kYdZ02@2TVNgU9gMTQs&wbJ$l<9l*bNB zrBrNzmT#|IEIVs-UIXTad#x}!9@puf_@s6|hf?adOW`;cU!0x-BO^|j548VTfjl}-V!DfVS1j`A_}@3yZp1eDUzg}X5H}%!CbitI)Hovp+0dsZx|Gaoiu*e z+L+(F#McFvbH&#W;-^B?=#gcY(@N@fn5i>^VxuR}I3K2TZm3n+el1=PMc)^5<~>&) z1Bdz!ZV|f(X+4*-;r0BQA*;ibZ6>kB>d)0b#7o;k0@ox*f5V=Uo4M@J&WNK2=HNw_;srF4v8Mkw~MN@L~S81;p%Y^OJBui}&U#TZ?}ugVSlm zN)eZJR_;&_abn{uxp0BUFPMMmwGZZ)^lsGvms9DRRRBCxuf9pXUA!z#acsBM!?w;_ z9a!$-H|x|_fZP4o1@=?-|F=^M)nNbrQeDd)Ex1gJ?X@J=psNflDr8==1f{fvK`jbY z3bwAb%7rbm{B>eEUvQ*^bkbdgku2_`t|Jh+hd3sR>Yy2`+5tq(4y>+rIIOBJqSgvc zQ=#JmsC~~mKqcaP|Cp`^{Oy{`VBfyAF#+T~@O$U5cE0lPRA? z5vDKHRJ?ZD#f<1extyS)o3~=9JJCqHfoI1AOmO)d(-3nYGgZj`s&rNsS?DJUQ?n*b zv7RRhF>|yWjAx6N_Cqhzd}ub>4Lv~Za!nhwnly_{@xcPw)h9JSK;qGSXfy+TOM=cz z65STC&gVqOi^+8fhEv8w*WNf(rAgvHSK!xzkkyfu{vE4PcS-pi>YjN7*;lX#oxa0Qiy+#GR5TPyz~U`@BS)@ZcLqfX-mu#Z5z zMZE2N+oD-x9mSOYc&p5K6Nc+#92&|449%!vCTSbbx)fW*Qjw_3`rYK0Cu`@fl1v)T zTUmq=zy``;@GnySSqfcx3&$Q+rR2nASDV-TSBErk4Ch#CQ#5p32A5OJR56iyspVy* zaxycS@onZ{AJ>aTI%zb|5i)cPaG;D`8yllRt@tBYn=Zn*3S^0LIp~={c)VT{?h%(1 zg_dc8LsUw!B~0}Y+c!p;-V01s=UAFeoY=%p`s5!6~6xJ5O1k)6;ef1x!hG@ zw$(Kkud~px(@ALGv&AvCa7z!pqEN6umT7flbhxiHg1ht!idFS9G8C=w@(jkCGaH)O zf?i@%yTTH_7WAQ~s7OgOG_ugg4tS$e_jF$J6H$BheW_(^=q45g=!_IPW5J0$FTK=4 zFOUZ#2)z7}$W$$RI-JPEygu|k8RQC7e(wcOF5fa7Q>xeG)XtA+6K-Hi8hVLZAW*v@ z2V+MuIk8r+ym<_G`6MStSc5MP_|+4Z^e$+Zmz|0E#*Av`&w%stY;4*h$p==16_^d# z#aXezAIt|*1fJ>zU^ZTq(QIPju5*zVY(2%r=w56cU^>7AjRwZ_&ogz1rH@IvmT^${ z=R1LDL47to<~BGJ(UYK9Cf68S(E?Hh$`M|sK_9QGs+Q{|S(ex`U=(h;?gft8&!Zk@0Ta#y8`G=Vfp4MLzic+kV-VlnS_=~z6pK0r& z8+8Ipn7Nl9WuAoNNWOYCk1Oxp)43{fzopD@v;6}>z-vEH}Tp^VrN8%4dSt)SOnk(gwN zO{h-V^bD$0$EEfzwB47@G``=Ixvz~XUVKLi+&@Viy*%mW>;G|eP3@V5TQat7vt!%r z*tTu!OUJft+qSKaZFOu;&dk-B=h;{L2duZMR;{W;nzMKoJ}7NKk}*~Z1xg1bLDcp- zg#44WKeGmm#;-JBxIecBv`5peyYz&Aj0OPG26)35=kh*YWUrYC9@>11C{Kg5(ob1$Y!b&sVi7)F#U!`QXy^?pi zQn##HkuR+NY!r{X#wdjQEP;1eRn*WNiy8r+zxi4z{=)x!NoI{4H|C0nzGEBSG*Bu^-8u;L10snU-a*L z7MHa$3;&07F>47_UY?|xFj-A4PglGcq^$r1_~OQtX8y<0`p(P!tKNUU&ad;KgzV`9 ziKSi6=i92;u}8V*&l{@c_W#~({sO+TB1c1V-#;EI-aoc#^*O(0_?_Rv%6)nV46k%^ zuX5D|s*T10widcu2U-u!r20jf?K%HI-RmBuXI z%;(R&YXSB>4|_u`z5}Hzn>@JQ1lJD9a=vY*kn5}Nx?9INRo0{Nik6|$+kmg>DRimD z^^=qB_F}_YE&HoA=ZP*6$aQ{?o3pBw+Dk40-|wz>j_0*_Q+rE`iML&+bKY3{gP+I?(Wx1d-ZEM+|J#Lj_XUM z`=^38w%%WO*O49u{A;mDu7EmO2nNzOkQ|8K*^8X3d(i@7{kHTl3!OS-GjosFoLEg2 zNc7ezZeb=adBby&8GWkyQCcnuL4$?7?hd(T=?8b zpaGkTH(}tG>@B20V%axvomIq6;YrZY6)>*+XKRAuVn?l_%m>GOqv%cLLl#nQvjIKM zJMAh|L@q>So(FQ8_^oiAVbj%t!4aAO2z%1o2Z{~juyY?wIbu7m$^>fjrkG~~CCso1 zp~*UBd+HrE#r?~{U%7L#kQZ5 zGK-_+qbR9tzryC|q~x@sd>&UB8-%v6UoWK&7TmOd;{L+VdKGc7z(X%4sJQuE*bon{ ziP3Uq;7>4l@USEMDh4pK%qAJbA`OyD=mswfsNL8~$Y)PnCmov2L-3#jk-3*JusbUf z{9wM#bC7=ro!qNgGq?zH>*)2h6AXuESAY5vH7OTDD~djY@o$P!3DD>wScXMDIgZ`4 zD{&3!MY?`seSk6J;UhEOLD9+zL=fd&BAC+04=m<9eHQb%!d66tmPC{gZes$0f306h zyg^I!mcL>Z+R`xg%CZ^WV?>zp-+RI7tPll_hupAh5-S-OuC|*8vV-&TwJXCuae!rM zD}!z+r9y)T^T{tr?^lpk99!9i=IS803ZZ)Pjx<=_29OBYQDy8!_Klzgi$v>EhkS-o zJLJt1KE8D4$q71-77UqlV!?HYlOD$Z%dIaVdsVZok!oFsv$HTKQwo4HH(H>)T zTy8kY#St(}-TGLa3Ea{QZO?4Hn-5OpAn0~h8p+}won$k8r~MP2>&rT>++z1|cQiRm z-)+NP1gN3%DAqq~s=ss%HOGp>jy6Jc6(|>-L-tTdgiO@JD2_l&=pw3 z$LqQ~pyWT#*dXP4(pY2W=F%H1pSRdYU`up2Ia@-=3Y>*m4Ef&jVu z4N$*CoSH`Tq{Jf$6$m68SHDyJ;QR3XFzE?Kyg|HienIdf5Xc22=nn`Cj=o^NV7{Kb z9(_1}{PKhUM)`*5P2TChKKV`+m;#J^Cx0gh%;fIN-($W?f0%y#`j+oeZkHWbARDeY zr1F#kh^a~?DHY3L7r?2DQyC}SN>ww90s5sH7b=>los$rbh>un#d`#m}lyg*x$^K-w$6;I+FF58U14{x5ECr$C$e8Fmp;-IEFKc+ zYV{Wih`t3I3^F7d)5~Kqj}!GO?>UO2>+L8A8*4s$7!R6u!!cMyl8{4c61M^i+A&*R ziT7_q(@YeN1<2-BwJ-cO(s0(L2(NFD@S@!;nwVY}N66K0w8Y|$;*9cuGuqHm-y+z{ z>YGz~7CnHT=L)+m@XJ$)D?*gvVwh5*a?|CoUag zlh~2n*uZKIcT-JnX0boI2!x5CMS`Z4R-P5W{o16Np1i5i(RB6TO-48zVPYCsvHo}= zN<#mb*F(~`nQqN#!VvGm?X9(71w~YfJ5>6RfokU*Kfx5G>U02hR8VAPCiW1*{!8&n zL=K4*0ANN>Fkv7UNr{Iw8X1NFi!XJ+kq-xv9)?lKM@x?^Uv;k~A(Df;VJuN;uqKbC z_}RNp9PI+KsGyJ;#(8QR+Z*=jZ&m86wWgn4*>+O}miZYyjCn07R#ckRgC9~av)0zm z&fZlKZtHIf+wJ!3Ul&6n2Vn!P%Dx8Un0Vjo0M5JKXOl-b0?zC{Y`xdVW6j&+%+7{8 zTP6w?oX^MU<@dhFvmT*gBMW+)>8Gc^akO-Byf`vkIX`Yy3>QlEKNI28->bn{M$-#6 z4qw$TgX7D0WK}m$-&!w^ZomGr8JW&U^Yn##W8~fft>T2N7PSx74l5P1N#N2!J(HMq27vB(J`5bTOyndKu*J|4_UgDi_RXFYE?gBsXkIP$b_B_kl_kL^V z`RmGELJ!buy1^_|RtD3|+QM<{wgdz6_ETTyEyVf1# z2lfxtLCc?GCDUYAM0KLX&% zed9%!9o`}bsIbz`8DRA9Q*q`UShee7e;a`Jz#FV zS&v=TTUW%$ong|AP>#uHN8uSaP1tP_limjnM=+%rG8y-?y!=Z8uL8iB7-4(d z(P4bbj$SIaYp6TV9VF0`oTQOFrFmpbpQRN>oP88RJxzkK1*sJA9JkdH4-d^inh5ba zf`%7Tr~z>)V~pN0FquF_6N}+-)Wf>jXLxX5s*UYef5gIe9@M?}g#XCLqZIV5Tmtc8 zv?pgx11&Hc9vR{01N?3o9srE6S@58Q(i#w9GpN*X8Z4uZaC6WCJS3L8rY?Uh(=aF0 zS;Me&iX2!dOd_)*OEKX2K_qmFoKd7kSsiF7Y$WG97dzm5rXd~FN;sz3p?hp$bVt*i z3b=e4yJe8*xG`}23-k(x3+ zhHXVuwOT1;47)uB=@OvVQy$_-@OL0_nVqqh|Di{@6-H&KpEUNWtO0__5FLsXrpFG} zDXbyVy-aXz2VYZ&1Ot?4^YjxlsErbz4^!w(9MZ=2nMz|3@r5a})1bEiT^fE;aCQz2 z@uxtDL`u|3FkjJ8qsZ!_-&mo!9CFe`1ER*7popr!1Lbc24 zSgQ+!@TRxPDFG~bA~#1!Y9ZfUDQY0kOo?>$rPT|W@f!~3lMP6nes|zy5L*ryUSNaljw~agDY{|YK1`9<62uLE&$5Fb{RuKX#W7Wk4uQiQlVj) z2X+2NWE9B{FiE`9_^IWR?LuG$>(i5_vjvB@o2%QNW^McHA6tV+v^5=fA+5Sjvad$p z)<47z1tC;donp5ifD0RNK-9(r)IF{>H546J%kFkX7L>&dWe=unOR|ktgqzo%-Z4#q z@TUVkuLi&;$%9onSdlYTF=}?@ik>_fq1r;x8F4i5#}IOPXxd=6EnNGOIn(|kpViyy z3}Yz_tu@x|S2ZOO*yK$L??2J=-;r0FP_Nro`)X#G%x&;iw%LGIX?5O9JBPq(c!SBa z!i{+2j4D{hdA7{aqa`6f@0=?r;Wl?K87T14;tK!{tEK`BI8UG#(&2`no?)DvwTkWv zI-}!X+w%E9U^8){s(O&CQI)?#xQ2Rv=jo|@Fc%E8g#N*vz-mQms*@e6^n0a-bJT~d z8SYPW1dwc7?z=%15umKKS}^!aZ?h-KO$x1pDlu>1a@Q*o}rdB z5Iww4O8|}7Hz9~DXvbnPvAhsSbRzERGNg+r9c(z@bWz9!POr&MP%^#=b#v3(;xYkvC^zQ8ySmF6PXa~4k?SBaRtHr+X0^sq?{{2W%UYxaf__E zxC-r1IB*~65C^;tJXh%YfF&5)KX*O9YeB7!-d9f$`b;zDB||`0M|b->6S2Pvgio7j z;Gp>-2;DFz$3(f2k#>zJQGSdV+D_GSb9#8s{sOvKY>z1mY9aKs`<4+f?&i|KUWRr% zj%$Z30K$SYWdqJqx;qlw3WW*?UE4EBO?34q2-ZeI+91kX^z;hRZ)a?o1w(rx;VK3j zR2`?yn#b3@d}s0q1_{SkSZZv3$WmS6_0=&6%HO;STZzMF_d??NRs4w|c|mUEOFc6Zuv!mUxS`{REW*XuNH7SmlQLX0Tr*JA zP=5X5)kx0DnSEX}7m7y^_iiHy(bo`V*k_Jx|APKPk(0l{9)Y!{ehxSE!5dUlji-w~ z!0v7c(;Kdjs-fFoam)am=}a@h*DX6`4FA;#($_93Ef2G!Uuf*1N_iCffERPoj-QDZ z^U)#e%)ak5{P*k5oFlUJC{DGOO;EkhYVSQT%Pg0(3SCEnr;4aF{U1=NcEsJvm?ds( zW5~TVm+iqDh1Iaj3l{*pR4hid-3Gms(y9#ONapxMN{;0VPlFyHHyfZjbB0}a?4>V!t$ zw>o`Lf6+PlL5>n0?V!H6efenYnn&Jiw|^i#&+gmDoTSF{>0i(lvC z%iq+1`Q1rShOUq5LV)|*T4bai=ZBg07Y`4h`C4igH4q@5wUfD?_R{hqQ1gtV&-L72 zt!tj!`?;d8`Dn0lWIesV!@Uiw_cr?s_-Oby_Vnj{OnGc zvpXcI+6KguX|O}sFbT0I#BT>7!#-ojZ#s;O5pV)&XDTbE6l&L%^sf(I+%FYrUG07} zCR%Cg^wMSV^OyS#vu#W&Et-PQS=OS58jGaK@1tOg?rdfZ+*|2vdlx%Mfdimcra&R#bBdm zoCEyqWg*id7Hq73SOY}x+;_40kmQI`y7yrFyNay|O4WCU_xoCu?_0dwSkL=h@ua+; z=ef0(Cd)K7U#qWbZLi<`F(F4Qc~0baRpmivujYGc_ULGjH)_2V;cCG-9$Z5XP`S42 zok4xu)9>uEwO5@m>n#xAeVjZKyjTHR>q$b>Lv-!i{QSqf_x9}R`1C&ad+2$QLExUS z7em0W6|rRf*kb|c`WVJtpvv4^lZ9(st09Ipfnq_5J&wI0-i9ReH_sW7wj|}66rd%3 z%LH*v;wcg8jNG><7mp~A?6(q`NP|fb9+|{g;2{>5ECGr6IJi*)jY$-*bWOs^7@Jde zm*7{FPw*y@KIIM(;I|$nKx~`HK3@9}|L*xPcii@l_!az>{59!=7=26XyZ#!78w{@g*L4RYn`nl$b-AiPf!oIO}xHHE`JSH)8Jp4P>NSL_; zp_Eu&I3{;-VPckY;gRcG<7DlPXeNGm97{883i;Ol>?~{QRsX-`1}@6o{G^}I@Leb% zAd>%x47dP&7kdZ$|CQycRjqB%RMB$Md2G!m#I+OmQL78Z+FUV?B z-M#&B%w2R_UrTp2Yw05-D~KNw4VQB902f0Q5+lkmc#t4Y!>WT10b`;F!O~AN2xFr7 zQs8xWw`%=hB9^-|o#FdWI_}9-x3f39Ku z-+d};e7)pI#UjRv9KTto`Jsquij{-q7)$D$dqKj+BziR~Tb@hp=ZaU`Y8g-cAl*l9 zWub0}evxgXezMVuy;!Tt_((MuGf~zDoRR`3XY;AVip`I zy`rE#65A2G#FTIZ#z;4Pc$PYO;OP>Uf_rym~x6VVY!>xZjEr8u-d8)5xh@K0ED z1rM?syON{|8F#+u&skmvv>L{T6eG|idP-XWq>vDh&;W>#AT&xmGWW?b*8ISOUv1Q9 z+yyI7Vpt-z451Su(>_ZYzh+FZ_*<5D0c>!hhr$#pv_Aj$)H z5zh`&^f1v8@~$yY@Rs!1D>y1M*y;h_5=n(_QO7kOezjZoG$5)|Gf0$nJ_{;t(>v+~ zSM*h$6ngc-!Y)Ue$%wqfqDCBfobnyn=hu5<%(w{#@w@U>~8bR!)on2sFS z1Wp;tDm`sz02x)8o))M-9n=Ty10&QVwJOX#`{tfW0jXtg5+h zeU+ZoyGpiiU1eZh!=TtqBNOJ`-#P|{E~wcQgQlQ`dzsxy!)Oi9lg6JJ=%O3jACbs| z{Z<|H6vcb}n)2(44?G6~=x&B2JX_z1-nxrzX!gMxA$$i)qw_?AJ6_TRB|MBN*#d_E zicJ?@A0MY__DO!YpOZ7#gzHW%|Vb zmuj17_tE|J*c@L~lwK07tX~_h=KFpz9~t=gx4M!ZGBLI% zz+G30&-Hv!pvA3tcJsUZb>_9O_gieIlT8KTU7KZ>zbL2JjG!TvydhuI51sI6<@Ule z_Dc!5b=)ZMfU^MCt&53wl{HS0P(|~Zli@mqNzzH_m%v)lzi)%Aj5m^9`U~? z`A(3f8O_fmk4o*42BiRK|4eQyeim&v^Aug~?0?+~Ei$lM^#3j!j4WglsljQaEZbSF z*sf--a%{~RSQ67UsUV=%jRK&9kl5gsXi5ES7fZA)q*V*Wa)`~;+w&K zJ>#%7b@dEYhSA;qB8lvdP?#oRfXz@7W;dKBF@i2`o?>21pgUb&DoduK&nPkzpXVz} zy-!i|F`%<*f}aCD<|aiS&G9i zc=ZU20KXR&I04(1lR6P5o_dDnKd+;k?;=*DY>NwGBHjlS&a8{DetU&=pk&efu1WoE zx5ktqK&|LLN%m};eLNdX6$0y3DMeCJAv1jQWSH@-P=KYM9#h^TKlcGoRt4>4O$cp0 z8SMI`nb8{<^msG?@eVWn9TXHTWWPvisNC*Q?3;ZIkQh)EvTxiy4%?hI^mXp<0(`RYx=j(keXDu z<&0U}XI=jL+j+wcB4>?%!?)zwZNuhbBvzZl&bQX}sgRB?dvEMP=KW^3bgz#RQ;T%J zxkif7se&37B9HvwQO@MH%-99RK_U4-Gc5{Gl4o-SZ&9*X)}$+aNo+mnTuJV|xn`{i zalV215Yt_v<)gsmP<7{)i`K5?aq&U;iI}tQNtJ!IQBtBnr*+7~xYLY@Q&Lcly}Q2D zoPRN1Lm5$4q7B8$R80bnqw)~Hc;suvnt$X%9@!J$kx!myX~bM?BG}4Va+GIrsEQ82 z+2@}g3xkN76fas5JMbjWM2n}THcNitrOgm8IGnrpK#0f~J5H=SY`Cr0SaM~L?anHcT z={+?NI>03?;-;9<;Q6xC#I@78h7m00y26>t*k8S=Gw1F+e|S072j%GHQw7u#-yY|$ zRWkUD>hN=V<{xDW05-b5SDYaUwo#1|UwEm1by)X-X;?fS>L~JFm~X5C(KJXQw`Be^ zd|&l*^WPfhpN*-jt%GJCFIj_&q~~Ryz54vl1b@0*FR_wXw~PJc@B$juZS? z9IhL@6WC`)TT^6>gC81BDv%Ci#wPHcV-1NdF|cb*{3a%ktf{#0hq8QfBm16PQQF{x z%f2ag7udcsv+GLy=4+E7(qnLZnRHm_^Qj6-y^*W{F%9jna z*u`LLGOn|jn7CZm*^MfPF7mdIQH(y2(B%H99>Yqpy|rXXoh75ow6=MOI*h6+H8`U% zKa2=+maU=1Q#itbnOrhYMxQkiLLZo)T6!Irifqej}dHoJVdKj2@ft3%L~z_|+3WaRdaz zh*AmQX2$eTGh=g1$g3AJ$-u+r4<}q_hi4a>#pwJ`P1kB_?`? znshWHl12l3bUvJfj)17W2Mc0uT39E}_4^+e^wW*CSy03%g$uN`B1aIO5Q))ivym_$ zGRPE~j4HkkBlvekQJx=~>*O1X(@O%SXqEE|P?Z|YuL@T1r$qhh8x$hbx*lHArC$xT zKH_E0(uv99K$`F>nQmG1buCQzgc=1@4m1Ijv);)g%_A8OlQfl4)IO>xFSraV_ zSCN9U5v4#q5Z&kk@79kHttlWT=z2B-oTZgfwGG=`Qhzo0;M*|v_U}!GDb4jbid!V; z6w5lmkixX(mFg$rrN&+SfBLV7;Z_Kt&xb$P|9Bi@}05x^~3D=yKn zHuwalg|&-^gvakXk#eo&1xwPoH?vN^E??eM3dy1q(Xj}#fM83C{1b+us3*YZM3$MGbq|GBeNSUbN_B`QH4YI?<<-&+|>_$O9?WU9e` zdE+4Ro?%eet-KoWw!7;NZMZrNs4E(vF9;(GAx*$j4W3qXc9%A4_@zjxxY@RQBK+T8&>S`-=cR6uuBP(#h>yu>u`sR_| zF~Ek!=^DyzCUBMuuCA#M;Kx@CK1Y8GJZbHWg!GIY?LUF2$q&*A>%h@BFK39mnPWsK zOpy1l<6LM?6jQrXR`{lmux^^~5WLQqR(`$nAzLtn_hC!$jek7>N-)lS)C(&8SVd$> zLFZ3dv2TJtWdD2?JlYPJqWmbdJm~Zvdx{cUMZdIT`;u3@qic;Jz)o}3>?5J0^(+40 zb>Y!>i`oIiVgGV=lkqCE>_X3T~a<&b50V1$F?1gf{@&4A`5NJd7zc@1qPv;>jGvFY)zc0i zsyirZD}TpdWwflUo*S6;`?s~vGwZ}z{TN+d#>bIj_ieq~i;L@_61D74G3P-@PxON6RBdqjGCvp6ymS08Y^-PMYN=J_T>;^z0=r zrwO*iE;_1jj-?%~T%^#|ZSk!DDZ6P0bYAA&1dwUbi(e4`wDD%ML3Uzg$mcRP(SfNM z|68^By0-mmHn;0`q118QSrQvN{AvuLe>HW>NA#}yaB^bIR07-HTv}UNLb@~Z_>SEl z=lHOWqsES*g}y=Ja|GmU^5cCE@T1mR?AKCT>*V*2K% zVU`vv-36+oSmfq62V^KM3)}46`x;i1%`auii+kEk0n|yTbh%zBiS(TB;rOYO>R=Gz z*zb*|KEh07vyI(4;FfG2bkNetSef3h?CoTCmG2+}z(sg$peb@M;H{ehPP`CQeQLs( zGH2tx#?ADglclrvxkZkU^DB3i0TJ;1yz?b8?Y{FZu~A8r6uyR7`RkW}MW4)3q&*^A zme=(5W9>P7b+YWX*H#(M!_|yNexUdBTdm1*x0lJwHP22j!0?e0z1+U*rjYRR`zKj- z=&ZE@0C;Te6^;3Ny}Omjr3zm>yzJkhvFI74{m3|T4uRioZo^sGgKs0?I8fUR;W(h* zjP`aUjM??;0v){}@Bu2lMIz`2_kqjpW7w_TbM(Q>IDOPXmO0~N#kDYC+UtR1*NZC|%t1PlWNozFX>p6vu zP`F3u)3#e{i~Hl1R4cTZVV-Ee3`#U4OO)6!m;);LJkdB&hW|VmJcN-X9w0nKfED>$ zPz33w`w4;)fKC7T=(~OL$(Q?l+Cx0k{XA`%h&j0#STB2tVW-!CjMiNx;P;x22Y*~2^E^}P=HQrWDvlP7)FNs$$06Bt1UrLkH^e>aZjFU9{3FV;@#t(p1;5NNq zQuL2ez%p>bv9;(Ew}5fEfLmwGV;GntDr{tzhXfZVK?5CmuxrZi7Y#D&Z`uxJhf51* z+}f?msrOtqG*}ih4*hJ}8g1Eq3ky8AZi}!te%>Wmhpnkg)bpJZGJopy<>XuYqx@)- zp2`<|fr?;O)cTZC#R0t=od@6xI(B+5oj9-61d&P5EdRc|JQi{LC z+8J=y(Bidx*8hkN$-?pv6zs^|`v$@tyQg0Qa7n`$= zXnrEe?|X@jhjjE-HGKeQ;9uroh;;$yp=pk^Qu_i&5aQvN4G`>h4zUmfb19$|o&_N( zGnQl{#17U#B*?D;GV&7&CQ)l>TbWw`TUR+-l++E5s?=qj_WD=$%c%+}@P^Z(01k=G z&z-I!U?lsG)AEVwztgdcNy^`ln{57N@Ez7Sj~NTbT}#PlQT2MFH$=No>|h4*wiwtP zhOG{lDJ-4s7ywdEnHb{KG&~OB@?e(PF74qIZ?iGel4{I;^E(=(j}$!N68S)V%Wzf8 zd3D^ohJK%Do@w6W%uOlf5gC2wFAxew7PENjRIPJo&2u-cHz5r#MVqr7yp`S66!T&N z=^52y&1URT2>uNhi|8`!EaITeU5~#tZYR_u>JJYUi2wH_xfJ%lM) zwH97ke}1U66i4he7x!ylN&Mew+|c*_H&YJ2%CGcw&*SEd=M9XmV368i9Q#9#3})tk zt>p-t{qhxw{Blz}lBsL~+|A$+yu)vVAK?|UMtdKEQ)XFY;;N`_Yoj7lf9 z@c!?;z*&yHc7 zdBDufBV_X2&2n@%UpOS}xL!Dy*&z_OF{uXM1tm@S?iEChFyL zIt68Hx4snr#j1Z_V!in~O;%4n`ffzOhnV&_Sd1IE6ZCS?_@DHVFNmnc5jSKMjceWU zI}x{s*-&66$|u;G@T>{3$H_jgrV%`dNigLwUvud>Tho8g-RJjh;ed2%2O55Z{I_hl zw&L1e|1-$j;DLZ}Qs@0Z(E)}ImjAc@QU57Ymq6d?)_ixHX`Oj_+P`;S?rA)@)&>l_ zRm_Du$NXh?l;KZmfy$nBxAy*be^uX#Icf>Y*+zCbswjP7 zUw_PUS&7$LyMswNVY$%_gN}^3I3rmOi{)qvsdf4#$&RdwoZ6BeC>r+eh;|FSCU@fO zOl5PSuX2L|$qWVXWWz1E&)=Y@yl6HRD zTe&~wn1ZxUu(nu8PIE)RdIOtEkfc~s6PP`LPIImbyLyTa*4caNbphn}xbT47ObRAN z)W&iZc&*{_^w`{DTb$F3l(%LAV+sW`_OxWaD7UWGs&_g-dyJZ;S!D)lIpKkU?6_IJ zA)S4ZT3@YES0u+#Py22leF)xG(cf4K+UDYG;49y$E&+3Ob@>x|V@kO(oWuOoW?s;V z-H<$?&dTj?vmA$wt$3r_i7BkvuhixJ4kp{0z?d-1>5I-UX;e|~juL0_)b(LoP|Q(i zLP34xnj0Sg;vsOHR1W75s)dqA@Py&|hD7F}(l6E9ib4+%(qHnQ5mKgq3W(rICD6l) z6o_RcOd{Sakdg(f2IM)HP*;EYexAYPt01m>C^-*gyg-y;dN1iYRW)vc5^uq12Xd3! zgp$cCknWf%L)#)H-BP+?PO^~3Hb{u^0OMR2&^p9`57UzcPQ@4N8B_V)XBdF<5jVH5 zuK)@0QSIKJ4MX9-^L0_;qntq|UuvU|4h+dcsNv4js5ih$RT}Y7+;s80W9rBRaUj-= z0|rKUA|#c9Ywgf|KzqY^xui36s|LlADlwQVJS0i;m|*JUZBz+oX#sfk!U{z(iR8vs zet#YT2GC(aAVh~@%s{`W8PwpV{u=g5S>_5J5s4wI@iIXjGD0f@OHnRL_IUkbP(zf= zzllH-{(^p!3WI7wjKI%#5)fmO&_OI?6a$GC082;YP6_j{ykbY)~x3gU@{g-RRjSJ z28vYZ4?k+7G>vT&`e){VMbJ^j55{5}|ld4XS#V6_Sbx#pl%vBS`a!x4-R zsQ+q4k<%3?X4-{KG?ib)yk&EqB&ZosFQxZ>`e}q0Z0twI1=pl(Mkoh= z<%TH2pjw2cQe15FO2^dRjr-$TNE$*6s6z$O{;ZH1%xwa45bK&~HY~RlP%8Ha`4!Y! zze2qOAG1nZkqW$g6-L)L2QPMtmB4K(px812lE*P%>4q8{1p@^R<I>i+F9tc*(`Q z)R9|8qp!iwX!g$-7C5#_y~PoapS@R`;oH85)lW9t{H+l?0Env@=tM^~GvfBh?&a2) zk$0x-{eQt%a#R0t8P{e~W+Ha*W^O%l&Ayk~_03%wW$FU9dqjSoajY>wEJ6+5+N=00 z`Z)tEFW}NVN9*Cle0CdZ8SoVD%riQAdL)7v6M0=i@B457x@iLa9P@ZIIwSEkX?mBF z`}MTyeLaP6w%|Uy#r>FQ&tE4ZFoXD_r~fgPE)sgKwW7=S`1;D@UCBG$D)9AAdOY!1 z9n0_hUi@rya{ck|fZ-Fcr@r>e@pyWJ2ypInIeMR8+?1P^t7GBIFw>mzQo@^$8dA}c z9xiPT%5H4B+{9~hOZ%Pjd~ZjHey!>1>XxI}O0iYL*bQ2=SS@zp>uTv*Zy1N6t}ck9 zYZJKP9k3x#*{wBR{n!YowAGHXwnaP@Tpp8$8{pGJvGPIaEsq4m6MY@v-klsDxA2+B z1jjmR;C-OchSP4D(N&Ejx?qZ6(F0pa`C}Gr$m`j zG~1+r-@oy4;AOL6HkBo_z)eTcXDs_HEtH_B?VKac?#veeNsBGMsr2JbYmKXh(B;Mm zaU`7SNNJm5zo-Cco#FH{*qqgrGEZ8*84%iZ%vRWu_<)`T78jJ}o27j@bfz?a7`&Ma zR*#GmVK_N(R$SN(h5yMgv&sk7Ijtmf5|=NMp>5Z!q@N_tynW^mc%Re7HKUD8|30xuY)%STEOJrcv>-|iPFOHqT z?|C=$xcj}laU%c;SL<0g}fmXIbA|62AQfv2W^bjp#n_rF;+Wx97)(OIvMHu$!{>jvC+RP&&_L5(z>jJD*bt2@7X%o-Kaw z0Cv7VduQES0e53WK(@WHW~prkP4khmDS$Ywu$8Yu z@Y9xcy`lPJ{nh*tfuBEGFa&lrF@+em_i}*2s)k1sn>&84VoSHQuOEDNZzUPFw+k?B z&IWgsdgl`-M-j(UDszR?s<^m>kn)IZl6r?`dfh0S-e-!7FGkz>%J(>+0cTeGwke>q z>9=BMjplZ8O5wfS>8R|2N$7!LDvZ?rpyY-Y zs50eg{%X%GIx6YX>nk(G9^>7f`X8>YDLk-nNd^;}6Wg{qv2AB!+mjR9wr$%sCYsoG zGO>2`tVP{B`}F;Vv>US+v3>UY9^Rd zoJY`9 z+T(nLP-GIn-kH<>=}Ej7i%9ry^5lzuuzU3&UuyecEV z<|RuP2LxaQ^*k34k&rkZH4qmIKo9$G&j6oa+wY&Oy!W~0W@e$FCl*o1BPAmNFNq+2 zfDHN@>Oq?J4_CD(o27;62z}AIumJwfD}q8Z-W2J$<5#zx1o87ut3R5QGTxOnYR++1`vJIOL-US~ zf^xN6hmeK=W_i}#!o&fWEmFjaqFnXVz+E_Kc%n8x(|Y0sDu$GQylz5hy9x+JGPI2} zGYr+bS&0g&7{h|<^N>x5indnTG=+l6f}XO#y;LohlHpTmokoV-ks%JpJ#&0G^`;^> zIYlPUQh0cJN$V=;ka$BY>utoJo!vFDxt)H01y%%s2J!Z3NI4S67m6J;4bW0*0EUa6 zCToQtQa6x3xTA=#2$$=79QT@|!u)J{#ps1p1Qi6F1l9B0(RG7X7Tl$#g?s&d*XWV+ zL(7q583xjRc0R(7>KO04W@bw$n=2xbZd0oaGmACbH?Q5t_=UukQcClju+Nr`D^3FG zT1%*YsL24(K6F@@3BjhlI$8290E}dyW0y#Vo`}B;NNi=f@|B(t?0h9MXU?e@4d$3{Icsx8VJ{Con zuHAk-zr-Uo^N>0#u1_O1**7c9dBe&G9OVw)qNY|cZi;lBDkUk{qfp|%1A5BwFf1-k zHl-@-%|r{9DHnf6T67*QiGyGZpGpmXE|hCoNRWFQ(3o=YpLMbu7r>@{G9qXvd|p8w zKxpSO2&cSXLm7o(Qt&pGMifg)jM%tiS-BRi?I6yxCUl_K342;!(=p64Kom2gn&i_4PxKw^ea0I~K0@oA^ zV6;y;Sa#t}m}%)>vSxKbw5+M*RIl@}#oYgNiPl4^f=-pWvUM7NxbnFEP4P3a&d#^& zYr=40F-+v>>_((C&%lH!Xh7f@YH|0Sh(+;fn30A=rKl%WU-H{mU*C6MzS+0;m+o2q zCxPpqi7Fx>&mALZKhb`+v=IUzio_=;{e#K`$>gi5-o{kBB8U<^sd`|5Ur*_VM?Fe8;iFuFlS zUAdc}5-#bo`?%vlKEg|rimb%%4{>am1EN?hcPiEIE~J8Lto-@15z_a@Y2OQ7QSSDb zF!!@{*~y2x2OLsC+&>Uj7&I$UYm(`u7$#icr1ELg?_e`y4nanplC(N^V6ykhth&Fw zD5o)gc$;cyC+or0;fVnBD}IzNn2O(nkohK{7n4VF@@u%2hK5RZm~j<&5%{>wdG5j% zM8G6>$Zy(SQ#dxSrJ+DqdY0OezNuzjNhN&^NOgYZRf2PJ%#9p6&st49^5Ae4tRa?4 z5~ZH6y70*L9SG*n2z;q2cHZk9IvM{GKgn!*>_5Kc(*b7@9%qgE77tfaFfLmX?|B{oWjH5@ZcUE$)nD$2RBhs6(kc>Br zw@GDcfQ2|NjJjyj!NqE{l^wcLN6c#dJ0fo0cOaAMrZI^4y$TqAf1s-{Pvor6a;m-|-YEHYST zyUW3P=ly}#TZ5;-T;R2;mhcCDtH^Blt^iAS z$*m^IxfhVv{klueS?^vgHsA6-9?$e|PAuI%>%E`_B&h|K{}BOE_epTFu)AT@33Vt8ZOCg08Py*V5-nv?>YxUI&AEhH_l@ z%E7XjEW8!obGx?l+H|vbU)?;X%}Y%xMIo~a9%ki$t``3pSrX3dPc+|0SoV!MA?*g0 zoPq)q^~VraR=3>(Y&gY`R8OXTlcwtFM10()&OxZm0maQnT&dIIcWDmvOrokl!r z*fN6LsM%x@bJ!nxYV08r_I&dAHts-&8cXbkj5~L$hKx}Zxg=@QC6?}l8d7!`a4|j4&-Dd%H$vX zKX;Xj$XFtH>15np7ZOuk(2UKMv}MfD$tJ8iIo6H%eHg!4g=6`VbQVvK4$7##jNZ5Wjl` zM4`dPJv~L6{?L0&quI8rV_BMNG&v3PeJRD=LfZ)Wv4f4mI?6NUZ6585$ig{eL5e^| z{Xkvoh;`(^w8}$T;9H&GQ!`8a-{ml!{d&> zdyku!%Jj$vH^A4==JbJ>f-xuI2E_|=u#6=KH3ZZxlJ*HDMK*81q55$Q|8rt|F}2K@ zNRxYER^?X68jBtr{uqhMDnbFFm86*-0a@wMF=p9&j@U8cQ24L~D zuJ)gH5uxLpJ0f|}jcsU7_Cs~0U-Doh2#v#Fa1EQd{qnH-kuuYm18B0@nE%OVd-d!t zU|@CqEF62RqI~{LlLEwY%%iNJ=Nxu;#>uHtZ&Uex}aOnZ5?) zb+u=-4Y&7$k!LmMchBY?2S4+I(np`39Z8Y8mfjr=Z%v*~x?SJ{)%)_SD*&UB@v5u4 zlhnmRWxnCgRReRg!?VP#;A`gP{yS`i-RI|)quM*b@UWkg^RdK!>)J`E({nm}XYZW* zn46*L@gD8pf`pkBwfTIJ$-9I$-(5J`>+yPM@M@KDJ7OJAzH7PVx2L)$OaU6GN?nsz z^e2Xl_9szeBUH`rMzH(9YW(7{bb*Lz^Tt4+lrUq2|u|zHAWnPXS9#Q^2keG z_Xl^tjiW|=y`C{UHdMZ=7I#~K z(L?A16;L8^OF;=z1=LAn;Q1~*r}`?BSTKtKM8+o^crWRZ3+S%hdzl5KbjUSuVs$&Y z_YNqGsIcTfLTNiZ1$MW)Kh|WpCNOU48|SxJ``?A^?QLkx4&mZ*Mq#Oa=onb=Q$+E3 zU2GoBtGTuxx4thq^_V~Z&Y@kh&;I;5-cMrpmhOzCrv9rt3{s6(z{Y^>re*2x@w)_Y zR)P73N%E54R;$H4h+kbjOghmO*j>JEt?=cLx94TLmz+8hE8y;rv)OU^@v^<$F+caT zo=@*y>ukH8bx&S7whL7fdY`S%1vRd4?}FbQWLL28*G#)qZmpp6RNsrYJ8(;?SL(VH zX-?wA$SdeGji7k+r0~oApG+71t7DMfzTW$DJoH+AzUw^Z-Teb;^8a;Yg|nIHS^vs7 zlYaGL1$5`qz-fJ{?UzZDo4CZ4qGcZ$JsHvx=nm#|yUtTp%EGOgwIRNqi9JPUFjm z8Q>^-!T359W~d#)82t%w;4O!3>nJXHwCm)f>CJJ=TFp%vpr)HybpgoO_ zNIEz}p6bk8b?qt4Ek@s{XZBAd86|F`v!jwAlwxP^{iMC5c>diO6orh18LOi27o=(1 zOgcGQrY0N$Dyt@Zv|`0J#Ai}3WD*!%VEDp(#cUB#no&-ux#4EX78KSJ%#o4autuvn zauOjPXC{RsVa;-w-BNe*2~FmFLJ~RPi|fik zVGJ=P7C)2sR&`WyCwnxwN5Z{E59#u=fq!W`y}i!e)R5fa>-c<^86+m_RNU}e2YFVh zcRvxZT55sdFh`e+P&SU%re@V9MT2oCB!mBS4Fjq7-KgGuGBn+B>S*LZh#~v)GBUGM zut)9rVNiiakf2O81StdUx$5@;YY<_E|JXdeGfogB>Kj@t*=wfyq+9(wag!fphpdd- z#qTQWO7*2>gfJ6aEgF}98vb9)n=~duk&6Cm<`d*DBuE8B%u88-G9KhdvJ_+)N){5XHwI#D*@tH0}yCtPF17j(@(?$qf; zn%?B&>~$oq$s+kE$~-U#=vzLsm{thlxis=#1ywhe_`_FOe*@4Xg6unUjN{)QNB=9s zT!Rq+(3}5vfI=ho7;W(H5qG6d`+`#g>w5=hC+C`|R{ec_JKu(?HpE75vCA=T$6v(C zeW=SV!;87eh2-_M&3N4He5Ebrt$fV%wFPvnl;n-|c>pgfDZT_I@IYr@X_`4acOpzf zKfh$5Da4_vC@@xtw4fv`EDXF2?6hEP1Tz*U7;I)H9xiC+Hy9=+NWT}bC>TUwYJi9s z0@N&IC!qj2jyR_sf=C-OEZr{+;y|6qOw^dQUEOcV!tWx$IF1iDX&OXr@|!8^i%AN| z5^FWMG*FSYfaAkz-x3&Rb&;4-r;Sy zXOLIrJiAro7&2`1+3ntzeT<(;F+lcYVl5ijY`aRY^D__q_-y^R+PPAB)w2C*(;%%| zbk{DerL7zoBcy{f*}_)O2`AFZrEpQpST?1EbRnH~^t@3^5}C;l&h49h0mL-xez^f}7%- zv$4ROY%muaLVsLpuAK6Hy~$Q@itof7^ODWCJZ+tbL{Tp2SRlACe`}^ay~AfX+SF-k ze|}oBUK@o7ey1c1nX?Duf)k~ev zH}8C(w}a;&(Sf<{Z?ed_8AEu_JDV{3IV76EpWAXOePiuxR1>Ykd^;={e zNXYHQ1X07+WZN0g;v4u9bV&cjuA!o=#iZw^#i4}X1&e!Cba_b%zE03=)2v)6N$CD} zkUx-|wHyi35-Ix})StehYjW|{Q!*Q2!kBe$CMTR8r)0nZ0~Z@pi!m|GkB&`Q z>vT@APt$?ZbU(3sIBCCtVIosHYWM`tm)l{8@I%i&7SdKCR?23oo;)f+?&dbEqBLgK z%zkA-QbA6&-ZC~u#%9T0zFsPwUMhC#`Y|l=VajB)qoNb==HioM6AIy=hsekTBZ@x> z=0D8zo#ZX0X{OLs8f3@8EX`?W80n?ur_CHFO~e6XVPWP0@K@7vPwGA=b}_>8xFztE zqP{UFDe2j7kh_aVAckd;8dK@(=9BJYex=E+WbC`)VQFYcvss1uQZqCClaWOgR)s&F zc<3~?dAEV?>fNldj9yTUiPX*OUuA5ULkfjj8xz&$4C7ML*-LvSaaKCnB};srL)WbZ z8TmjGVyBr^i7sjWX*T1TBq|KoMO z{BF7+<7+keQ&BrTQNu#)9)faAf5h;&}sgyD(s!_Rrwc8y~)$H-Dg$JFt zu$7~!{GJQtOBs1wY!IK4l+uMR3jX04>Ta$j>8H$51V@doxkWt-0bA77S=Xue`15Jo z_wCo)=x1xMvji!xrIf%+j`vmjahCU%^ZI6}xN*Jvwm!jjD`4=JlU<+otVLIHarG1d zEP1|pEIr~ZwHy|k>)Fp+{XB2a;rO}aXt88_4O{BDXvOt#rrW4OuPRaDJ9+2hJ#Y0O zK}o#(YJrQYDy-C;X=`u!P_VymSYx?TNg#<9qhrg(8m?&Awfk%<$h}^-X4^@f@tC#b z7PF?d?fJ*7g}0J-x`p4|TkWara++fU_<2sk?bfL8YF?S5kvSSH^B2#*grA>Nw?wn7 z20bo3#?a5ocB_W|IeS2hZEiX@Ipy7&hmDy6OwO!*Ctw^T6Kk2~9?-BV0 z;z8}OM+PLm^3KTCSbry1bSsyTvI}d@y+}JWrJa@wGgSRzcB9F>a5TOGAfdcDqw~+5 z&35bg!8P`}3SkLI?l~KwoAxge5$b~K-_B_4D|&V3w?A_hS`yK9cd%>Ob+?b`SKQZP z)}zp7FS{TJQH2{S)e0be*5yG~TDsAjU{IziR#dXhHgjC#j9_;Bcb>KOiF50HUc$(>#Lp`f zsTDnJUHkR#)V3ei;B}LY4w6*@Eg`AyesCeE|UnZD{$@Arolqcfc1Df2;SE`_I zZVcIJDw+pa%JtX6fh`!Ag%9;XOATIuCB}xn3JlEXNf8X!itN9cJ(cIntpH9(~%`Ezl^_GXXvF``2C3!dqeU~Pgc^}?dyaLkt6lce9n){m0{ zFUfyIHwDfXFWS~~TD#fjRf*`uCfVKc{hZVkTd>+ z47;U1EzZg}kxWJ5yx$pTwhR2;Mum(j`E$k`$mrg2>t)K!(l2oGG6H<`#0PkC#FYmn z3uGS+Mpka22yGp_YE=Px6)qv%HNd>KpLYQ>4N8ovl=TQD@%f>@Ip=^4Y&XA zo%!7};3^46?bBaF{}SoVu$ec)q+{LmL(#l_5lU#FC3Y|grt@^7AA#pB8}s*ChnhL&+Y) zbFm%%tk|9W>AF7VP{{GT1HBw?Buq%{?6&YoHw6bIw)r(P@iE~YQnxf_Qz%a4`0r9h z1KwjjI*(?djMQ4)q*Emb9Q$6lA&j*N>k;#p-8Mo6c!;L!;+pdC2*cp#(p-IVqi{6iZU6Vd@wt(!rm1SYn4j9U3 z4LQwcaRnceJMY1#q)vz5Yqr_R>*l#eb34W_gF5e#Yexr+)#bSg%~JCr(Ve%iE_5O*dOS0HxB5qm)V`shyrHdKFmy%tyTeevTXOl$ z`RI_`MN=E%tcO-7k8OsT68k;&0v6jUVuUQK{WqWJ475%ZkoDV$EUaaYNL+MZ5zo;g zBgBT%##h5WD8sui0yNTmF+hBbgcEZpZXk33YZd`993^lgAGbuCjn&f`iWSP8Pk#>F zuB_yb|DQmK9p)0m6OZ9&7bX2Q)EjtX$TLKdobr&=<%-wO;4SjxaT!j8@bf>lGR8X0 z(QrFDCZGnXir#vj6AVwFif_VmqX-(Oc|*BiVCW{8uR$__>Z52=lPM*{^F zZz`c}3AtULYgg&mg&nt$>Og}OzI`>7Q!Q|SmUIv<^$~(E^liPbf{%g*y7rfm2k4kc zcFnISS#H7TowcYP9Kp!0W1S+2(udn9tDqK+fmXGUA%Vwp3<6;K%Qm)$Vka<8-;ZQp zWRF8+J!{#OOg_EY!LhO;a{VFEOKT~*A!9Oi=|_E4MsfoWx0-sXwc!%WA60sTDoMN6 zc!N6mZ|^t``2P8J5+t%_p5iF(rLfP@Vc_ML#y|ztmGmWYtz2{juL@@*uQGX-TzDsj zZ)mwKC4qZ}c091WlCg%Uea+IWr2Uk+Hr+(P)Qno~p1CHkO(|y^wHyfAi`n2V{FtAR z_M_b+d!ST&SlHvu^%P5am#6D2Wnqs1()zEHfnX|Y1M}}My1?|>oo8-zIcezYS?$7@p?SlZPMtcG@t25!_FqdH&}j>8@cO#=B)LX%c+E_dc= zF=`z0RK3qW!0jm&N=_687H-h4g-?^IV>rqlydb}~C>2VH5^^`8f85y9p@YTlFZTYF z;lAg{2<AP&p$=#R=G52}&lIFe$oH_ha31mUdAslOw{i8eR5+ADKXZ(%k>_T1rH$nJ+_S{<-L3qn7id-TCtGz*h6M@AO@y&>v# zvNo%pS6XTeujx6HUNt072i^=F8MnIdwFdCd1ZSnwe%Haj-GwYUcUmPMlwCtWWX~M5 z@bCeyi;-%-ZPblyLXht%mEg4qrj6b+X>&#CfoM&C@Qsg%8il;eX%t|xE{Fp&xLHBH}R-}-j( z?Vv#u4US)6l%jurhO+cY-GGCj`vR~$+ZKM&I5+E#+|JrQOf-(ACgFuVt}|=}p)7oh zVX8%+_rfnvBILJ5X*RXbVFQAEG+VA|ah8Cs2Ssn*>LoUBxHl@+U@1CrQpk z&LU#Cg7s4bYgo|28pW-oA0>gK&_K(JEbH=x7RXeDv?OYv*mbVxY-c?0nleSvZs+43N=k3TqcL-gh8 z#cvzpVcXB=1*-0oZ?Q*#uX>Yl#u6!vQD{gjI2Ru+m(y)Gl@^y-orB8diE!-J74~bO z5)Z#mNqzTN|M0{PuUg}IfrXF~>EsKUrFdr5jvW21 z*s20fZvZ%?0n&5#4#193`Kco11Mc}(E*SW!>VxmpBXva|W>5RB11k7KmFjAnA^h6! ztP}QYrtBHBtcMnM{z8%Ip6xiFIXhESa?(DWlL(i?a0h=SrtWYy^o_|YFG3&`&$EV; zN|5q?AM9@58}=*b9Y^WjY$WXa5E9YLfDov-XAIcK8)z@#D=-D}7MQ&^+OQN8PKfEg zn>wh0KrTp~kebUrtl6VGWIjez@(6WvdMlG=A^U#9#4EK;wmBOKwOh-Wu{j$-s6PX~ zbYjCycyqShA<%vI8k^U|Eos14#B+B!$~*KF{f!F!Gto~+u^V#f%Tt!m{({@)WY3eP zOprD#m*%}R4CptO;xiD%Qx_k;Pi~0M#KD|ZNXJ0Wh|rqKR2d#BdhQ+oS`wPbeD$>` z=Fjvpa?v6+`UMS81(_{mpu`14KS_32i*VUKO{Lyp3Ddu0d{!#m!WEMF#*fyP-9(zz zH%uJ``>mXe6b;;BJmPLVR}TQJH2Qtf-|q(ZAWois0Ajnn2;;!_8=f)SxUbJ9kNQku zmCn+kNS46QF!if)k2>#edhVwbXoVM*?YZ; zB#}0AKuiQN9H>^cfg>RBGT{+n zI7F~kb>Vp-uRo$QP}r$%wbsRJe?4s_tgXHE0Oea--fyav%dLCsuU))K>E|6X4eVCO%hf7fCTtWq|??K-Q{BDA8gDCwSHbJ4k8mKUSwQGwp#Pp!Ilf4!U z0|r$$32$!VX3thIE&48g)r?}@5aV(CL42ic`|FogYmSzLCuWB0!%%-7@4oTTf3CRv zeUg2dYJR58Fi=*x7xDvp6AReV(qJ7p04c1#k0?M$2ZTrlYAH7j;V_5!Dy#? zEg9avi0!!+AY4^M8T-P8?(+X;#vmngto>g7c>+bwW^xw2Z@G09>#OD7nMV}=i=oX1fZR~ zFt^R!qfK)P>)~e7f3^nE$%w6Cjx}_378bO>)LV_JYhm%#Y&03S%Pt$mGFbrkXz_@Y z*H>0?S@c7>sYb+{gLvNYwA@{0W`8RsUH_^?0&9%z2=lBhqnPz4sY}69&@$S1jQTvPsDo|pQVeIjmHa69%1a}bw~B&RoaS}jBlaVrg+GVnTcsK`KmiWLfq zF$vAd+mWX*@HYegxA~5`OZPMgJI3sB_BR-eNKGYId2%_;R0NIgN1@z^LRB@)-g292b{w=jC{<emZE5Z@WsaY9b&TtY$ zvO(-aAd6*i`=7B5gnr$Ac1yCf&iEs|E3R~x&P*xy7jV0Wt+Bt$ZRf|vyCzy%>87i) z#lM#P6XC>T@iVqXPlzpg;i1Hr-j8PP;!uJiO4e>Y+MV#!jVmbBfsu^0w9Hcn$w=EB zXE^NW#iTfRD;C(ZfPgd=hcPk9!s@CrjYi|a$k@P$$z7JeS$Qwj3P*IzD0bpMV;r<& z%&~s_<|=rx4I7oqAxD%RgT=H|!Q9hQ-C?ZoWL)O>d1(#f$yBXW6&ZMYY~jnh%wXRl zYAR;b`$vsB4Ys8n96)i^49p5>%VwdlD^=W>7>~EoG7Yb2a=EO(O}r95CCcq&4V&vb z&a=|KWxJ+zp*6(9(<7#Mb(U`f)tUyRTMs0TUXAKl_-J5L>t>h~*eXKR`4xE)gxrY{%{A~T2Pt3M^n-u9xm|mhRTUgiJ@4u%|E{%x{$Y|L1$ZX zm0vD9!#tBUGSpoNx_7`kLc2hu2TPUNO6g2-q6%;hZNrz`+t_MjQ6J6+z!W4l(KCRj@icO)JXM_8knK1T3bro- zygQm972DDzg4~&RE#;$4eop|4=~(!#KRKo$sLBBuWQ;3Tq}Z-BD^PcGL(55i3x8(a z8*kPUFqZL*P~+zEjd=l*juiYnQ-6k=u!(*%W$;K?_yq6zvyYgI(lDeuo%?NdxrqFT zKFN8rd)Vxo)@mr45203j4xJ580>*5Bj`TgD;V8$2Bx9T_!$WKjzKQ!Z04HEzTOz76xd#%b zyvyN~-9cA@kaMqdV-Nc6GhHw4I9k+};;LA+RpDgNHtw0wmR!SpZyY`Bys^o+wd{rm za1zAY&#iN{b+neDsF_+W?jp8+bT|B(9aUy4T|`!*gQwyVt~dV&C6e`2c_*O5art4b z`w!n0BaVw?$+#7Vwyxr{D;i8zHtk?2m@aWZd$}}wp{jCd$dyd85cFDrdY3t zcyM>FQ)nVNCxTNfs4&SF2!`hfK4=U0;GA`g^R<5vtncT0eBwUi7ryka$LQ`g@s>QU zM@8#0QK@5EeiAxl5pd1yF~<~=tVb^h#e8L@9r#w;n8aUZe0@(l#5F0D!j*>wPG=b^ zJmv+yNZRqj*mYIW3enA}26#XGijLS?M}?z55aJb~SFw19(Q<{;MjSCF{t%}Yxq=(v zW*3bc-fF6$4i>Tlm<`*|tFh(K+!Z4vTcbkpUkI*6YSW@Pw5dN(Zfn@S=*R4T5HXhb zDZ%@`3kuz%Yf)@Og2fdmhOP$!B!w?u0ncVZUM&UOmVa5i%nirxRR4YI92LOQI#|ua(4Wo=6<;+8 z$J3{qH#xh=t;0XPpY@pHsOC|NJvLk|&JeWMRtO3I-m*gIxz)Iu&t-;7r7QWNklInd9_Q63?zRE#AB_TZnn3 zu7Gfh;VCAodS)S?H14%2rB4t` zYYR)#<)z4-8+ZVjo@FBiOr}O;3Xqj+UN}iMh zRhI7uH(W+HuY!rTMq;S%k7=zRR1%&WPP6|jre=hV%t)v;W|Y4K1ZP|38;0-8J>ASm zXPJbfv2DX)Y$CYpDp6_}?{4l?^h1^}*XR-{3~hL`apK4QWb-UYnuhPsdwE0V#C{Ha zNg>KO9zzQ#Myg|LbvY%Q795iL;5t3vSp};h6#ixzo&wR3{HI0Q6V^;{gw8@fo%D3% z6Gr@=?$&ksD`ff!Fe0vfDHX>HS(7xyg1V9(MvR%GR={ob%{Vfc zceU_}`sY+@+>wAI@poU6O_J%}=-Wn9LcA4kL-$6aIauE*U{L~A$}bX$tjG^t%HOD8 z!;-7ZQj;n@)~FnRnSDn$T>7F#Jd1ceWgbfJs9wr9D!aQnRa&gwRM(R9J)}O(9(!gc z;TV}1>bUU~o^LjPRsco|gja$bTuK)J`&KV19Lch=shX-_+b06OfKKx@m|xSNSZoRM zE@^xbqh{#|h~K1(`iQ_m&JzkhHDw6IV6!UzfyNccQ9aiaJs;LiiuFMIjY3{{bvrGC zEBiah7Okz2iBBUkeCLho{cl&q58>vhppsZ#2IUkOx&HCBW+yoTjXknHy_&e= z;{|UAXmvwCCQE^Gc$|oTItJ57^Ox}Lek#7n8~Y*(FlxkDlvad^0O~UB!VlIZb;U7@jpLeTikcj-yj${PWI- zLJt%13PfFg+fPU60x{tz*Pr$3SFsNy^c6(+?s#i0S4D$NkHaB84oRxbH&;bdXu9=^MPQWDN0++3dgo7;wa9Io?>rMt+O zsKOD+vshSv26MlKw6;n;XCo^Km#&_;4MP`u1NNq6Tx>neYc?P{F)%t60=G6VI+fy3 zT*d~TLtm*&p3DTQsa1#{ttbO=%qJ_7C67cBa5aWixPwGLmXY9`Cc}-TBh=RIftR_! z9yC3>9XN6=BzTHKnwU zku8v=Mhs1@vX9e%*hJKOEK?C_c*c^g!Rh}iM_=;u3GL4&`zkoEtL{qn?}2MtjsChq-b%5q+AeM^H$>uMym<|M=n#I9%4V*H z+Ae;qM>qSbld}TFr|4Sqg$nXg_121Lm)6n|%}6bW#9-|(p{$tx8~(Ua?7usqog@kw zv(nYJQ|#{Db|<#nuA0{B5AB)_9?eoQqm-a;;_e$e}-n?gzO$VMK@PvZ1PkIC*3g9{-J?_E82`29B< z`Rh%R56RcCAsV3?mol_^EYfG9x65$>1 zb;IdMks4N6*gt45!uCqw_=^1uMB61|_;FvzW3}_fzA$&TVh3>lvZV+kyNvMeg7@PX zaUy+gH4mcS;zC=&Ugrzvz9i>jv4cO)=IrQI4PFeH-hE(@5pYBWjeTj>8@%?H*WEh% zoU1Wq{EkQaoU<|0QTbLdZ%sz`fbrC`h$kvXnn(9t*w85t-ZAfHE(BfxMx%2xDO8^Z>FFZDU2_kSUY_x` zTYujhV*<|RQn@hK=rZmU{>CSUCzT7*JR=gPae9XiKBp$xePj**C=WL4`9vz6DQRr_ zz*{LCInG{ORh<_EumhdGxYIf)(4L68I6Al~z}=gNjZ9DVzHzU`ggDvNK(6hT-^zS~YSvtW z$xRPgu>oV%0uw9)2rBIu%?Ojv6hAo*A89z^9O2^La7{908Gm`&vYP2chjX%a=g4%! z%QZouOWk`T$z|cn&M_icvO4NBG2h(>VID)F@kaE@S=5K5WlS2_r}EF4`TC6&@7Hr= z&Ii|4+oo)&r4#NfRnQl=yudykg8sd^^j`$m)-|Mk0SU4LlAg4TzuU3Ls(qi@^P>U( zYM%RaSHt}fig;7UZL;va#;qIr<)Vc4y}&jrCGKhA(6CPpQwd=%HqLkxdiMjSeI2p2 z%(mvN_YqXci*t=`c(!Yx%`KT<~MhV_2kCMqD(qb1Os0@I0=d6aX3 zx-Crlr48Exs3(Bg3$OoJwKJEXVx5!CmCqnmaA%tI5yduC3)KAfj8J!1Yjg-j154vD z@Y|R5xqylzLBT8yXUQ{^*`#U}A7)I(GN21{WnffFSS$0g&zNFMK6i$&LVY*Mhbb!s zNqetfwhDQ}bl7wxt^QF7!KMJ_mCYu}*7q7CGh8nVK=>C|CtwpE8V65*dsFZQ^`GHZ zlom`D`tVZj+F9_b+k6TEK4Vk1_s$EKG(PfU^*JZaHBOVkvyKlW`TY4!-zT2bMtu9aJ?gkI~3f@h8 zjPB7uO*$(5Ph&0em1&Iw)0)LKyCI*^$gNbl%fvzqSzS_@9vgfQ&jd8lQZA z=evgrHz<$}qJiT$5k=HVipGiMNHazlk=|C%9AkPSDM;ywwwOdLngbbM*)=nD$hW;) zW9yWbh)eJ$yJ0ePn&*vWtRbbIM2AOGsFT*V8paCEklt3z-I1-ZyQIZGKfUy)yH*)^ z@F>Pn?JUsYZTOih=&5&C>os(8vb=_ptt&rybv)Uj*g?#u$3{AnlHS%#tGzit31iue zRMjtOP9a$-A<aaPoxE92OJp&PN zArr!M!$&sJe@m!$riGWjO<3ME8G38bpGS!HsK1+e;OL9-*p8Mbc%8l7b|EX}cHMI! z`^RpNQPS1Cv}micmBr%ke4iLJ50NWhUG~Q4h2m(%UF%7}S$^u~D)N-Aebi_wlar71 zPoXA>pG#_&_Y3%8jcZmnMPUTfyS*>3I^*ZOttY%#; z@lBcV6|iz<*~YzYMPUDWl_$t{jYZ~*6h#;yf%M}52_`orMbo;E2s*UQ1Ka9b`eX#* zcDD!<8m{9H4WBhQ?t11{x$w`Sw$pQp=n75y{pdHSzUd6ul^BkOfM3ILHb*!^-0DmW372}(;gXMP~g zbWh`r)5J(&i`NnnbhNC^(n=ts%iI^CXSlO0!BjZLv2)|A8Ybd_=(ftXTs@J3&p+Ac z6vr*gmlcQW*ssXcS`GWMPYtIF6w_YQAD_yoT}8?6I7a9% zC!3L)-;($cZZx{;gWeu-(W-DA5xOS3HmfK;GKt#z*@BKP*#U|vRKV@Mods=aL|2|e z$x?1~Vu!j+n%gr*q12JdlZh$dXq?M4BW#h5Zx<`~(VJ7jbQ8aQTj5%?Gmy>&?&q|_ z^A$XHC#b|Z__s=8a5mYt1)vG?@v5s#bjnpT*`Pg*e5_2i4QlowIO)T%@7`h1>1yV6HxIZH zQ1I#M6O7Uf)0pg4A-eN8G0wES+e*o=SO+;2L(2mw{GK$pU*P@TBL_`nBZzzwlP-#n z$R2}^L@5QtFmN4>6O{wQVu%lagVNbc@4j8P9nJQQh}^*x00d+{?zxjx66G&~vJeYJ zVPT&pJ8aZalpm|1X@-Ll)w_cH(~G`otuFmBy^zxyj;>JAuurAxXBnBtxrZWL{C|aN z$TW=&81}iz?1WFb8u5L!c9#ik?>=RwKS`qn%y(|<=ADkwr+1SaJM|>^V;>;n1s%GE zbcUsVcS1CA03do9{+-&$K60=m2ptk|X_?n1-pyGt>q>$!uYc@i5ZkJ-#5S|{9r49B z=iHh8Dk%PE6WVLy?|x^hqvFhVzW9x&7oIXA8@b@fblQ*6SsN<4BkD$_XY#a&yf{BU zJszvM$kHF#ghtL3kYBk2)$e~G-pDNnGAAaAKN1uRIAaZ@h3`JAWi=|%QsbBF)n{kq z>e$?^kh^6s3wM-*JzjjUP5wdH4a+nm3-L;v@{_354sQWP8{WKAe8k}I%g8=WDYYN# zBmV`Xxh9H^(0VOjO3j`x!|6<)p*Gmy{ku-t0Wy+uz zYv%NI|AC9zzuVQZh+CT+sikF0EdooExE>lG9i_O*8QK!B%;}zCd*yW2p?!a>=qgE~ zH^RQ-+w{mDQ!-9@A|XIO>(=8nn)LDv&pI3`*sZVDD6l$W3$7HkTR$4&?&(w*jB{;1 z)d~7C{Pz2Oe?oY-J`VknEixdY1Vi5B@5 z=1I44|%5O0Xff$D8*f+Fgn7E^3fKPQnpc!ado){ zSkz&wZ%2s{8PSnZfB0r z{r4F{*~QpE!R(v+V$B#6tNim7PuZErzfX}TAyGAxIg8U~q95`u z#5Z!iEB?Z@#wE%&w?!>%KA%VG43S4JfWINtq$R^C*d_rWJfq~|$5TppesDh_dk&u> zAH&F%{|`;bqT9{f|3imWBVLX~Jq6>LYf-i4pBKIaL|oEA-HuYCHr9{yB?YdH>eDNm zzjr!LI%vAkIVCPi`1#O-d-#PCNcP~-$*bB^t#j^MGbMJyt@vm=pDYe&Es?ZBz$4KP z&q65G_PpEnd@)OG%@Kaa?4|^(Y%wF;yD7f$kcxcThONAvJIIawp*Xk*SkyQ;s zn3bF#36qV1=il%){t&}WEGJVoexWo~-L_C~*$8S?$oSQdlB_3jWTFiP*`gB}R}yi- z?hXU)ZtGo80H=4hFRB)AbMnIeGh&?%&yW-5N`rIU4ouF5yK^#nF92{E%0P*z)S(0;g`%B!lm1bn#Wc0XD2hj^D*DdhmKx;_4(dsiYEMNGQkbt!hy2cXp^f&;vTMi=Jue;Fs@ES4^I5cDRP4- zRaha(3R&$2rF1TQ(-IIh)zJugZqxO_66&fTgJ&Q3@Q$ELz^w_WHCvK>hS{um@sALJ zKXeoC&?IUOMInD$ga4EH7ExiNeHMbJxWSxU(}EHg!*Mk!+a*9KHs50Dk!52*=~MIU zjC?&OhXyo&UR(cu_d>qbOKh^era>ph*IBeB(4_}OT6UQQ#g$BYa}J& z;#QsM=K2(rL{kFBJp~1VUJYv(w&R(x67PI-D&m>Sm)EqiABRochOVbQiN*qCBA?Cf2lL2B#qu={f^0!oHES4_*;uA&KbJKz!YBg{SO$>GB`ZQ6*RCL|KA* z?KZHvNg?LudI%Ui#rFks7-NsWkW#pxj zR7wDUYVJ$B=A@aGD{4a?%KY#Pl&nwHr-veTqkOM>pAam;a+ZioypZGrg`xloI~59h zh!_FJ=_T9!d*D5OsL=_O-r4;%DWNZ`2jP4So75Xe$y1&ojOjFfXwK=+yoR9btnMeG z#QQa|y`R6j90^{q3!{H5jo+`=V-Sia!$$!tm1P1G(Fi_7xPL48Uo;6-l%c{92XX6t z7XBi;{S%sF5i`cn8zAOfs8voLcAGhGr^DI-JncPesDR-70PfO{|PoLbbd5Y1$|-`$*ESf zNZ9TVK?A@@D=YTt2I6M_4e_0=&^M857vglZi>M5^VB1SllDq0h@^a?9bXcTRsz-6T z4dXp5auU>R);VQ-1oc5xp+br9*8{e`K9on-Jd`)F@-uB>V_AbPVhlG-65t-fd^@f) z&KRo}i()>}`Js^rQVCQlMMmPTf0oqEHooH=#wn4)^f1{VOQ}vVg|~f1+}GMC?VSem zaKGatkY_vh{tCkXX)%ZWbnfI_r$5tpPv~Q{bR1n0i2Ax%qUI)MEL#Td0(|c*@h4|4 z{T(HSaYs`}_uWg_tQ1`7>)(9!3E)g!(QL(aUYhS3uBck2iMudb%UD_Ba0jo2^Lx*% zB*kuOnprt60xx;tfazy_w#HAR@G0aa1jO5i*5$IcIZkKSzYhC_@?^HZN;n+UD#_D? zc%$P>>Re~>Z2;t4+)&Uqz_msoqGZ<6IlF`hUvpuuQgeZ^wrVo_omz6A@O?0l)3Tv8-_|}T*Wc5ui!(mzSqph+IRNB zA0|-A#0)F=4wmdzU_VSxY)(yauO?ZnNZHdivF9U&fG}CjweloIz?cd1F0R@TA3s{l zf<;Bf^UmHIBCDe%N9U>TPtMNh)N7mn2ZLLuG+C)treek{8z9^P28r5*>9iKgfE>Ons#kTG|{|Zs=svg~pGbp9XW8eQ-L{ zLE|q-ZGzURCYo`+0G)hk`Zx{@e-bV`vpGo$;canA`vMylXw4^2R#lpP1 zBu*@eVEDKkVib$PI<^_KhPZmH%TJ(hB6-gOZ8~YOsFr_izmyiou*S*@FiR*}` zBC=#;w_+aWgy%+c2 zvnXGI%q6x8P*p|9CZ^ABR@{+VQnr_DlR9RNa!^)bW7IlE9i<9(mg=uJvECNM2xb3k z05;D|$O8OJId=LPYZa6Kj$Djm>O+=ag-ibajn0Q6Umxjsk;P^Gx8G)M=lma}m2b~m zp2y0%q$6y9Sgqk+D36SioHsv2imQSU=@@v}|KUZh07O>cuExSur1dbKXvHP1mHxl- zKgK1-{a?~R&l3rKyeuNLuGW|P}#wgbpej`~rF$K=t3*;dNiKKy_ ze|&=eCn3w%^zcT|c+F~d>K&IGB6mu&{*jzatkb+kEbRQte$GM;7pAiQ2l=*kFtId> z|4K>j+){3Xx=b4Fh9`}-b-6H#k*$=9m(uGE;FZ}-#d72E`FhR$=*@r2H|f!Eo9@Kb zWRnv`eA#&5!TI;mgEPc1>Csbi)XUP+o?TBsO6FCpHeuVsQqU{L&7o~;Yo>`k{XX2I ziF@`oiOn1q1N$?aKo-ZJ_Fld&g=cmKRPDqVI@G{Jo99U)XuTVQi(u`7w)8BOmg?{s zNTT&gA4-d}EKy8Q77h_S;zFk(IvB%Lla?`&qp5RVN-{F+mX%MKDZ4H7q|8>Xa~4Z@ z@ek~mkdeIIH;sCKot~=TRu+7Dgo8Yx`jXKklPHEC;iTu;^dxG z&8q$pFq|~mf}P0832h*}O!VhQYrqDQNmKqi>#UY^!kUC0<9N~}Ge_-w_tno1@6=gL zLr50FI)q}o+J79b2*&%}xgfA}=^OBZ=0d7Q7RU7TPoQJ{rQea^>-|*@@xkn&0J@An zHy*tFA_AB2*Za1l=IA(ZP1FN3=oF#jLeIpCjJVu?P{iPNP5(~%r5#ER^%EPQacXMi zSu}>qQU@0X(7^e#VUyYqCowVeX~S&_FOi1U>B5_GXnM#L)6z&NbwG$b|AKi5^t~yk zMJSm_wdxhD6N*<=3_&fWHBHm}0~8d%m41guc6U@t2o4af7t?OpOH;Ls0$C7?kQEVc zk@zjXp!v)i_!5qJBHfCLJ)O*)fuTkNWdy(6dh%Q;O*ZK9uQ1z!aWR7F7mhfVhRGm# zE>%uCR;q$b64^f8*bnu5;+w5t3KC)%_|DvSJ;(&?S3$L7H0FOCVij{L7yuxm7Rr%k zMz1*{7N7@*83Gxe$JxXkjt(^^*Wr!OJG4R_1sW~_k0EA!d0@EF;+S%dh+(~_Z>jsqF*dIAW`9+a zv@|~Lv>&sXepy25$bAU57<$}Qc+^N^1%H~<3`%wz=ZbB(EenOK6&N(8%6sF|1Wf?F%$AIZsa}4LuO3J_#HN-6$*GQoqs7YryhQ8ws#F%aul}zj0uJ)b_*9 z;bXq2_9(0^$9(>gIpk$SOyScQ)u;8!dtkqRcbMrH-ek@__-^vScEL4)&rlZT%6>?R4D zg$fhGOp z3ya_f%4LjiLORrs0o|;}p%ULufes_+q13=P(X#r6kY*0T35@?aXyGG9L^iYFr;2qU z6dzIGN=+o}wR>oyGZ6JbB@-0d&3L}Cj=8pxFn%uK7yW9t_cTq*Wj%Y~^j(5v3GgzW zF8@ptS71>r{f?JNGa?20U6RgNL%M;#my-!E&SY+62?isH7*t_W-b&*d_f{O@;s<24@8<>(s12#h_ zw<1cz)Db>|=q<6RThryzwrj)1)Pwe!5RfNq8d0Dd}zk2 zxe}!^6%|!VbXutCt=qtG3+Ix^Zv&9Mv63=XU^iU>ivV)yI87a1bT(5?hrexI+Q5r) zK~S?^bqF`_q9zM;HB8RBC*S=1{z zpjP6L1))Km*lo_ZI2|=l4BCyqdZ{oLss?B5$UFr^44aVk!xwRDB-hs9k`rSqBB-)g zWfBto6#*aQ(gV1(IKOHpHsx@f<)}!ks=40^^Jnnb8q zY#$1U@#)G`3M-$(V;0hHHP7A6%N?o=#`pqfjhJs!Q3R&+);mh?*tL6RFK}7H6T-|P zDAf&v7NoPgcp*kEkTuQmT2U=9$RPTeNL5RIv;x*UmBw{oZvNI~+2_u)JdujaYZ|)^ z70%!4UY~1HBUO+^w_Z~lI|A@*@IW!OEalZVSll$|QKHZ%@XH~RLufzhRyULOm6q^H zLwkihZPku{!v-4&pTWbQma;nVAhbVT36L>bNo!@xytuVhYjE2zlA*LY zEdy#G!SFUJR^Yxpy=9;%-!HgX*X_XVgCg|n$|Q7fLL`$BOVk_3duo3p#_U!s8kR=x z%Vq4#Mm(=nq4_nt*)Q$B)uC&>SlL#yM!o^0vXZc%{AQr96ZT<|@ZXSW~Z z8)H4=3c*eeC;%S+jn)1{zI9u99E>0TCZe|i^}B7RKXe1lAfWrzZ~s?onqZOI_ylX1FvpB0kO> zD=bb+p4dEzH7;QL4|WgDR{*?zQ!F27E_Xk8_-COrVT>`u1b3DLiClbhW(BK8v@tvn zPED|m&OVg~YZc9VN&P$h|7i}^ib?91<}od9WAL=aZM86~A75D+A+1zPm``fw5}m(g zUJ-vH@vOo+-(|Vn5%9c~AztQh%xxz@L zMkDzfL|z2nn@QIdX)_=e`Hx3}d0>k;^1Htqa^&foNc-}jrVhqC$fJplh+DUXoC9kl zWuPQE_VLo>39=`1HwHHlQjRCpew-KlD2WK#X>pcv1n?UoiL6?O);+-jo*!>6uW6(HMZf8+BNeN&0o-<%$`YmLvLU|4o3$O(hX zg`32u%i?(&DXfATYsoB-{mzjR@B8ma0t8c1EESm%ei!8sDF@3;GK*td$yyz z*>BhNFmk!Eqs&byG?}Mm$lgNbw5Q1ypsdoZ|Fw z@n$)AXAcyGFiCMnmSa46J(s8tZhTHy?^?g` z6=kq`ThE2B>TY~i>dPu$joiXDBDS`X{nIIG(O{cJl-HRn`@YP#HFjIvL4~J#v;02I zBniLI$%7TGIhJwtE=2SAT72-k_#uo;ozL!J+aBlzEO2UE=5ESXYqeKhIqK(tg^yK6 z>-Epfp9=+|v$%LM>v@-Eng4V>8?t!&Tr?f4D?XRLJ)(`6*QI@=calwRT)p&#(Y*66 zxG-+c8!se2GXzNvcBahlj5IKmy@n*2@kQQ7c&$`C7ClayL0$OR-)#noA~6%STX~h! z-vU;KR*n;MZdI4q_a75wO!L}*usk2aRpc4Md6>T5IU+mb&~a8TR*;z767FD{ri`8f>}O|?HZIzHM*Qs`)^1LGF6Q(P{Ud#35M4cp z5tFyuyshn@uGMm5fP+&1lV{rj8*jCMci`hrPyy+y@Fr8>_ zc}yUY@p9?0ncp&xJ4er}>pFO~KK;O(+oEGW(3!5Uq>PK@T&y@ZM63--c#46=?ZB@!2(&cF5~GEU0qfx&A!e7j=8Sj@e(HKIe3C z^@P;I@Pm+NyRo*ja#fqnVQc)8!%`#b3n~;=`%!yUw!WO`E8wGYtfi8mMzq)_%%D{{ z(Rw=??UAU}Px1Hbj$A4x3!VSm)$rzhtMFZBG<@T|PN6q(wPEt(#i80o0a#eS<8J=< z*wZr+gz3Gf;-$B|&@UPM#5XY<7OtaqlI+B#<;j@I#op;WL2YNhdrxIA_V9gJeiXBG ze%E+*RbWR4-)Cb>^ssAiH3X{+yl9=f)@8Dwa&(l@rs-vMrmy5Ye|M)z@LN%fQC1@% zS^E(W#YMuV>_=JcFLlI?W5AyZX&`!!!$jF;A@;5#pq5qT)wJL+51ELiVd-Vsi(biPj5B$+gW1$J#I6Ub@Ld;wMx_Gt z8r%``WOt8HXMsnLJt<#k&gASpbTFGgA|=O`F8NRZ0us!(jNsSb!$6Ap6P$ys|F*o? z;!QeRu*~lYu?KvEU*B-IGR6NoO@o;8+LAm`8vs2{(9AN->6^}S{*P_VhuB;6MLwZt z>RlTU_7G#pnJ&K(`Uu-}{4AIA8pa~Ig zJ0Xz#pGmq)m<5TkCxOjZF{BNu4-#i@oi#G-O-8q&7EQ@U=z-dY;6rbYE$$c2e>j&v z0hGvRdNNOD!Nsuh1cUtD_DkGu?9nm^<2OdsRc3iC=m8^|>!Y0MODBlDsD45%Tw6ZT zqvFf&Ir_oR5ZzLAq_6URc{?|1_ z1^lB52r?hGv7oQcu>EFmQi4klC}_bBwg;4Sq+7k70Q+oy6J2krcM0Z&Ub|ehO~X|f zpKoKUq4XW|AEH<2$&JW-I0tfpf=CBh&;y=tf3^&n?aALn4K{=b0nWENcHx_m?i3dRmq)U(1xc# zf$geO;Ewdobg54rCwlJ0{*<3mCR1{BNHQPD0Q&Y4%pX8-RC&-4LdGpL=rH(5af9!K{5t5fnTE2~KGavs;f90WLF9KVyRCdgXy?TYPF>Y-Uv z&LRWWOSYk?@xprtdNmYwI~#$Ds(36MyA|4fwR){5N~I?#Rl#O#5-RpaBaxO1mM)1J z5mu&*wifI2^YtxeRW1txr?0OUlgqDfj=qVeP9a)JjQNRC^#r`hbND*s8ZyuXETkxF zz4W8OkXnhRkY*5E6Y1}@;>TBM)MOV)8jog&9y7Wr3vitSQlrDy0=Phz zz{nb%MG)*@Z2U^>D1{bA{Gxm&T<8|ck<7Z-R*eb2n?q|1Y>2_|h;wvGqCtORAuKYNJ%53toqC=N3?Gb4DyiuSRZly`As2YO+^B*JGYn25B1Gp>>PGJDBCVX7GyZv9De7(O;LREu81j&mhP+^UUFfiBbZ@i1ez(LZ$0`3 z%O9*-uFtZpD1tg=hP z0i&`Pp$SI6m!S!6v-{BjiJ@2w@0*cac~FifR#uzfccw~izP?7M?9<#hv9S2AtEi`U;ay6uNa z@gS95U<+~ci#dXnA=q;Y=hC$mWy15-=Yow&_+9e3!ixl_Z{vkBXu{%-DNf{kN{A4$ zbM~^Ge@#2!3Uluj{KS=e{vNHD14f(QIW3zicWX()P+)q;QIU($SC_~!gSjGoISW0{eCV7A$9ps#u?8#2-dJ_&p@}-2CU)yB%+TZB3 zB_}zcFdZhe`D@(bW)9-Hli42-v_-hx8VdC2GzTKxaBKh*UhYi5SV3DB(v_n?chM7l z*6!`k39Khl{T<-iv~r8-Nv5M`@riQtpw&BujzZBtzhy2K8786SCZ3OOJl~Ix><=m( zL4JZoSe!-JUw02Z9+_}*8LS`il{308qe3|3h>p^QCd16v(!tq#QkjtnVK=GhQaQ31 zah9wq2P1&D7IlPaN*md!X@E`qc#T@aXoxcXt4U|PbQpeOo-*ZN{!hjs@n(9Ao1mXb zXgHJa^NVa2flPb$~!uro(kVcM~sXL4p? z(y{GJ^7p@X=>w+0Y4E!od9sx__LRvYZ2hvFY-0dD+u#`c?YKzoTsdpmxaV!5EO^T%(Cb6DvpiDT*nTqzT}!Az$OTlAYYHN*k`;`o6crM2cg4((PVTxTj>i~_ zKLIo!d!@dm?h!;T*iUdOOW*iZjeN(R7xMMf)(_kgt5QNTw}`?omaX1Mzp8776o!;8 z`Jg*#{NL<021~#MlnHNTZ&XmCF1nqA&#%yU#hx%H%sx| zqGC>!T#}q_vF2e}XFZpWImbnSD=AcQ*@f0gWn1Np0J{fm*}{beNhaRi`$|tGWQj2Y zex^lS0iyWmD)>dr(+$a6T|*=XfvBb%J3_o^#Li-&VH6;>ux9S^zom7;uIxjrlV3xJ z*(?u!k!2(#>D*{lGh)S?igl633IA+^8`aqBF^bqhz57++EWm&zq5X@Mtw!0s1I^L3 zTrGR!k&A^l1rs8Caey-A-zgJpJ}X(5f{KtT1W>3e>p(hc3i{Tj8-2wo{v>ySwLN1t z5MyEi_Ev#F`eqBFCBL0wDereSf!HgYsDbSlXY>b@3fwz&Mw2sHaTi$C>ucV6wmC(FZDqXVFuWA=rVh$S}`Cj%?Z2?{k|!=STNzgvUNw zw1JM^-$%G>lK3jrQ&NrQ!?{}Zp`cv95@|76=V)jAze)JE%Tw)~sGeRc3SvCeG2-oL z3P3XxY$jr|UGioSg@9j^ZEDaxG_SW~-D^}W&pw{s_b3%fd*93RiSD9(^($AhL7_H} zb&s*7{6jqT1SRpo#bg)i+%4@WV&E#hSOEyRUp4Qm%g8p1x~I~?Lkd!@$zV9~p$sj% z`<+lFFc3!9bx*l4zNk{!R2Qcf%MUlJ9nQE;G!o9LWh$E}6Y+y5y*iKIr=Q zIWxsKxtaR=dklVW|4?iLKR(W{kYNb{jTH7_)`rAzlYKW%4W>5U4KKDd?PZkgn@OOR zFhi<9z0*BMnL7RFAb3@VM}f1b)+VsKGd6!cJ)flTsoPfT@Eqdii|hHh@E&mJHAAPr zv9T(6HSd55-}db2;(i=p@KV)HB?*N{o+)v#A#F5pQ=nZEuif~NZa?wC?Q**66tjN1 zxas@;V$S3p zBqh>k6&!dM&5cbQE>w%#;g?_HIjUONmG}04EpxQk2l0PjOPm}!X~GvAJ4yZ$4(9(W zW;WZKAM94GaV{#W(2f$UVdERz3WSQMnD2@)@*R|M^Cc?18lBD`E?kq=+m)+ht!UIq zk%)drh=)tCpzM=ak&+0bqUIyRfPS|!QbPyF?p{*u9bGsO@pu?XXi>{v5ebtzp1fc??9^S83TV%trWY;#!>XP zK#om<9pF|6B4D_=lVEE9X@(+5Vzg41hy_MLeg@C%k|u?2lRLu0uyU1N((VUgGZ|Fg zW%+O1D337xO5QuAi(`^P5DW=3MXQ}s44{1N13Az9vwu8ZTK&WCo!hP!?HNv~-+3=3 z27eTJ3)vxCdnBL`bR4j~R)XfDGyff84&qk-7i?bsNC=S)w9LvPtExMUt0$Nc9W0e; zm?KY{b1D{61lQ8<4*k&(k(g}}JgttBP4?&{h|q-b%nwxc6x?jn_4{Vb7zVU^Y%L)M z&r~0CD&lubHDV#C?~fu>>-jFJXH>)t%WDn*;#_C+1h{P)d@jSaf zDh>`Bq?av#5L$AIk|4;Z`dhM46wdEd?H_>4NtG>##b5<9$g%u+`f#S%(N(hOR4uNMKgo}M%#RT~YsfD^) zFq)!jJ1x^Jr>pSKnN>t1%f7Kb+e5L)1KAbip)NIeS9{~E>geB zCLBNhD8S`@Bhd zN^gy9JAST>S%FIP(>W+9Ex)}y_2&?ma)po@$I-TiBRXzhxYlaruQ)iGt*H2b6bXzJ zkMqvHm6XgcWBB_7-mYlxmrJUb3|0-PunTTm)4!LD zmW@!VKrJh?G*%jSK&kYh^SkB`^Bg*t!$BmSoxVWUnRaXCzisRl&f}#_3aHW%FAe84n4g;O z4~=P^X-&IxS+lMMUM-X9S+R#aI%A5JQI`_ot$He0o3zxlZV8%&2EHOgHROfvI=Hwt zuSUCW^_)oa8818YYjhsla;JiPcYR3<;HMmIDh`fUX7{P5_RedqJC-ZiS)9LOu-P?C z_NG4{SzbVE*ci?5Rk~zNDA`n!jSAywjN2k(Xw1!662{Ix8RSM6q&(p%22wcoH}PQh zGp~hSHiz{8Cq!M~;4)3^%O@xc0|G+wUl~o(B^(k^q3&aY-;a^iu61aaQCr)={c1D# zgF_EaO8J$eVb-Xq@NX@_-#K~2Y8`?6%*QsThn3UyabGS(gub3;Ovum~scbuFD=`{S zBNQ;!geOHB)L1Eos9cCr-_Y-MA|m3j#Y#CC(&mh(2c;iMFfIjdw+G{wUsf8<+E=^N ziB(PjjQGy!0~^-TDv2947y1uXN{kE5pUTx^ z#_{mc;^J>Ms5d(pi6~6FBoU>ko7zNi_Km_o6pv`T`jO?k2y(~!;}&J(bw_Io)h(kV<{?=;mlCYW852)R zO9R$b^P9*Ghg_x0U;{MeRQck!0ddtDVID(oPg1@}nnCJ+0-+SeF=jy#?A4?sgrmd6 z!I}x~;e$r%CTaVIg0ekWmx~#4? z<|=iEUgNE;ULJVfugTB?QYL-fA0IS67gp*XdD}brZj+FZCOTmct-3dg@~T|k_{J~G ze75ddC%LXKecEo?7v~t*fyYcfufy$%P0nyQ?^oVNxsQXs{>ky%T|wRE!<>Qf;^TfY zH{H?>^VNc8CZ|`#w~vn${q$Ew_v6IFtkm`!$B(garudLn`{&**PxEu*thSkBpz-!R zGq~UOl%p9qqe(x0o!$?ZL_~axrsNmnOPDv^Fu+RN+<>)o{-{SMwG4)4RFF6db%Y-G9a=Dmx+xcpc zA${!b!)2}AT0D}2Lwm61OdKU%#v9;j>Mdw!=C-enf$1_!3y|cAnI9egZHT2oZf~w= zKR>n2ps-%jz>Zu5gurc?Dl0BHoQxOhq++~*eIM>@0^8D)V-bZG5*OzOHYM2=Acx#d$eLC_^R2N_eyzasR_~-3uuZX{&6kIdUmfi0v+x5*RFMVGEBtPcfmX4WLV(611 zI(Zsfa;_IoA*Y@K(1Px7W4w4jnjeCrqVyvw$zD#por|^$sU#$J2BXv@%?3XOoL}CF z7J)ft*R2nrU&ZZ%!}X@)eX_jWVSjckvs0k?@kH|G$k)~K7y#wL2U*N&xx(wB2#i-` z`VJj8MOp`I>rZNf*+JtibA;6Z%Ntbgkmk_JOuY62Fyespdf6yHbU0X7G8VY9dxJb- z{m*U4q%Z0S<4a|UF8kjwA!*L{%T8@$X>4leWa{*PBLr_PD0lRJtV!f}oO{b79I?>f zEwE@#Fcc9loWntTA{Rp`G8UM>esDCi4X>yC{4Ls-U93c}saQ>{ELN_m_|Fg0rg#Ys zvu^`WQ|Ys|_3zp($H?Qq=F7&{mo(1KWrmXCuR?GSB-&KfBf3b9!=kSTVDD2Pr0!rG z7RSk)J>)b}Ds8%9^UT1hsl%z>$m&Q=|5W5epp(oMuU}3E`j7kv=I7EqLR7Bk0>6y@PtwJzm@kp46BBa;LNMmQnxGXGgkc3ESUoK!h*qBO+6OYqcYY}@XbfxDUvvIZ`( zqbJ*%W?dEwAcNHsTya5L(3rtW!mWBiWn$l%8Q&VTyKsOq`Q~M>$?3#oWG2hak;etl18!J zc?ez}I!9;%MfWZ>fG7>Ey!3fZHkfv5U`J!NxAvbvi{KzjXWE_@ZB0ym9K(0~6l<%% zZoV0?0Cyd5_&wWm=HFC1#98N6vXde=;PDd@fe5O4oFq1}Bgznl0SRY{fu=lfFdRM1 z|6!1q!nExHcPtmYyVf@>wlA$p=H|7sdptcS)k zH1zcZ?~y3QuM}OP-ajIM<`pq~Bt9F8Z(Fz$g2W#uJI}s$N5dCCQYytoBBqfuL?S!; z(!`{pxJHHp26#OZy!0)3vEwob$b5u>EP>HVshQ%+B9<$D)ixNDWzf7F6xZyYO*x=H zJ^66&5>9J-S%yfyOVW73!L+DK@uDQA<(7*g;kYo%#|)q{tJ~Y#a;V{g-9V44&A6OukB_>h6c8OYt&^V^v~A4Im~0RNRV$}D`5yjcAubine>m~7Z#@i$ zsJ`pp_dP~~Ch*H67N1=gTIo_;ndf`v1~KFS#AjSODc_)Z1;np0FCIlmI8O>(dw+x3 ziEW7y+WCE6A26p29l;dFMbqc+0InnTAJGs^HMb_dKbMW=m=x;T=f06mgC)eDBC8)k zt2K22wh;`e_ff#5p&9wMp`c<=fDO=_tb7-0F$_FNt9S#tW zwGL^-Rw~I|2tw*6PqJvtJ8j_MKgQx zjxU~|xGICuw)$#3sFu*yDuarEOJiT6s=-=|Yt|bhs6rUfBDwbyF1wn!6qce=#?IBn z>*e9Jv{ox~q^;6^`U=B5UYD%^|UNxoLo`Xh1j>8yqRSR+a;t2*UHBO}?69v%!2YWz- zzdJ1@J9G#y^n=0OUfH~EKh*P5KkVSXAk^`SN~o2|^ZB^H*u0n-tePf&Rn34PuNF{a zw(l%LXQ`fAiVW4L*>FP-HTC7on)>843aUn4jei7dmDg(#R;Qjj0b%tP=Fx6Pn4z$Z z2x~}TvB$7NIET4mAuENmmG}XGhK;NQ?vPV$5wXzmOcdc%5ywvCxNZKV1_OnuVn>0c%mN~v% z_X;=MCa=|St6mkb2K23J)~x-P*_f+NT2?u4vuT3|ACzxb`_=}8-GAYzSV>txs_{yi zdMBZG_HZPCyJbLd7om40U_+Ol4Ngu}3HNakfqMzPI|27}J$TQ5J$SDw`9sLV`&8JE zB5b2WiCe(^yw=)O?^nYIpUxj}3RJ;^-0K#b2z^ksC2svq)~MI!A?Tr$*)UYjg_l_o z?2xnJ1vwM8OV;&_oPP`3ScT6k=fab$QqG4ectSF+$0gf(RI;o`B)fW;(1(@9tw{YN z&a-jYJjl;6YR!T^>L3$w0b6+74V(F#Hh7HC$JC5?1}WXFlD8dUThw!yY(1{9R}l7u zeQw*5ocr`EG%BC$X*g^(PbNQe;E!g`+&L4$$xu_;c0G@lc)cSazE2k zai8abDtMOAXL}gM1-kGT!*jX_M8z~hpR*RR$FmbH;^$QWAEN-aD`qn0;7dYZv`-Qq%tT*O>HYy>J5<|ZCi=3IR0ZHw9w>xY2z^CyfX9)*t4axe zrSV!y-wu#{`hU4R8GI&t^dsrxZrP(B${u}Bo(kTTCxUlmpS~^o^mRgCPaU((@CJ*S z1$o2aSug@`@pu^CB=k)?Q6Yl7c+2)Sl>RSWpg7&zb^syFt>1BoL}EeMskh35oD|t< zTf?;MT?>kZ@LQbsoG+4^U>9#P-~-+ohxZA6-#*`m4u3^bAJ}~mItpRCl=d;*D`ReG zB3c< zLglEPKULWeB9}f>sWuSyxjpt03HYK5`XZG|W^!S^7Lps(9xh7YCoan2M=pHu0~gca zdoF_T9e)=Fe9J`xe8WW)zUCqhU-2m==6d+j9xHe{e`PO`5PlExwY`Cb+7R}QO6+`u zeQS@>5Po(2oxRb879#9>+bsHwK!31LUm^U0;YTI93}HXn)F`wHVSAJ->k+m$Wuf(B zg@UtEaWJb8!2E);nPPty6#Fql^p*?l7rDrOCV%v2oAZWlL#lppG^;l(2(OKaH1mb^ zuY~@psOGAkj*EZumLU8_=x-{qk2oH33HXcGMd5cse^-5QQUd-V}>@{-W*!Tjqhg4IC zR3grG9)f38ok%gBMa~|AZLOrGG%r`Ueti;D6~Kln{fvR1EG}MJCZwKe_!w zh5E*(rGDr#cdlG(_~w~O8RAG=uuUAsgY(2txn#wmM6q=GW@7fpRDXnx>J)!x zYuVZTawg|+-{4}}I1k3qKr4(UY_v&`9VtcxV@#|lQi8Ct2G+&SS)G-W-OW8&Ha+4A zi(mB`Oc_g(A~YAT(!B5!VdG3fy(meT7pXynN1L+NMrI>fc~aKx2+B8?M=IAZ6 zOY^}5tq#U(jZmnyLIGg~CV!Pb5<*mkCN?{=1YzS9_e&5qA>AT?W3+0RNZ3SEJ=Q;Wm+@1wHBDBEr6-oLMS4v z$do=Ta;3?}h?C^gK)DB|&|nKpri&WENtn}I$(V0-R_?HFD9^Gjj(=RcI;$YB8zvbX zZVQWFrT?U8RzX-SQU6Ysq>(kq_ft%4MdTiYO;z!D8e!9vf}7J6ET$m<@o>O&!ltXt z+lmN_RdRh023G=eS(rd0lu}p#C4`kIEk8m`N=>Z8hak7&yI0Z=EV3OLTb4{#_1YKt z0=+JeX5}Jo6)O5aB7aP`Xz8hgO4=9%4`Cj)@qR}Hl`5@nL|B!HHAD%*ycWjQHBe34 zLcj^*(k|OFL{Kd^V|0In%`ma+qXQAn`wq>Eh3mD!x5c~u-VcOc6e`H8?=0wt2y9AtpJWC>{#VKu?>z(P#%}Q zjmHSX0FEc@_%x?9(DpVsleP!p40>8CoIuzKlAk`%;y$Q=79($)2|F<*^rVE)lQIiE znXr@l7TQ2q!+$P>u1E=`FbA3_G{GDSbD@#2Mp@^gF66Q~Cbl$Mjj$%Um7)y@Yc{b+ z6j#<3mAGdkY;MZVc?oP@W;^|a`7JI>+DTZeB_$lbT9Fd7>U>=6f>TsxU2F|@rwDe3 z2=;u!=7%AW&?8{+Dzrj7g*IrT&<+a-TVN5{76=QGL4OE9n6NhGn5BI$Yd4qqqF420 zT}K#BO(=G1CdERAVhat$f`kS8mbh^D6btQ+Vx3`Flu&F@CdE!S6kBX4b{b))^(}Gn z?kN_Qts}Y|Wzy-pqwE=~3fzha&s60simFu*(w8ZS?aQA+foAO&=wCYA#922kVhecbChNe zA?#db`lATzR-5-ZgqDS=Q zAD1W6FMnLV`E(c^?h4sLWBn0>E3Gv>pBGVZa50fxCAr5AKm=F!MQ}}DFRx8|xs5_O zEPtnErLc^80dAx-N<}u-c;NxS!TdkC&0>^kX*ST@q(dYKkI2)aR)<&_o<3_noA z4TRmO?8(r`O5kP+$H7g6-K4xU2ywqzZiLuSge@~M-Jg%J zV+CO=Q~|IfF}GyusHC~a$o z)il@!w-a`|?4L0wqFSxoQHijqESNDL!q!-drz;qOJDjZ@3yrYdp_Duck=$tsVSk_* z?xrC>+(p=3DrcGy!QFB$kIhRSz#3wwpc(NV8P3=uM02mjYL__6iDc!I=nOBcC2Xxy z4NnO7DXY5?cE6fts;rq;2@g{6!2^UnpqO2hRB>_aa-`yeiT8-{LrU24)VVUY3el`n zG`KH3Y*C`r1CP?0YFJO$dg(j1E`M!Nm)Oeih@t5Q3bn>#7HlAFgIsP~gZMvU-GlkY z9yE*4qtX+8PbU74i&6oPiQOocL#eU+vA*{6<9)q+!V)~U7oL{E^SaMve z4ASX&wOfbwrs~l|;T2Qj2VzQmUn>-USHsI%ExbV33n~|R%8Fzs?MYbzFNtS9yeOXI z1yUf8n6pq?7z@M3gaR8atp{9nf&koQ#?w;)TM2tnX? z8u)&M{y{YCZ?zWqMr(yHMB|Q&#{H>i+@BEki9AfkzO?A#0N73o z#DlQyvYh)1k*rUx6MwfKKBvJZ_>8d6)W-T15qz%N-yaBz%TE%qe-QSCg>k43zNVpt zu!FE2Qj@r5Z5Dp`iq33-FA4ing?c{X`jzZB@dFX|wH#gJ*1-!^#BY?uA&Br>OA&9G z58qRN7`~&yph5MW+75UO`(8RFj>oVc6!+l>`!T)RxZ!8{wSV>})z(&`)jwyd9wPGj z{4mYI2WbVozbGI5#Ax@o=7GON$^KJh#V>^YVm;t>!f(b@_A6n(D!s-ev#&UwkFxJK zsY%>vjYB*9LFcrb1RNNcmJV|1`&k)DTkc62VsAi*y4B%!v3}hYhDC9X($B$ z5cZEr&=YS&1b;gf7EWP$KWlp}<$Ka`1)LC_SYFnY@hn>B;(HK%4;8;F5VtI8PW)9jg4)fs8u0;uoFrH zT>P#3j4I_V;W@QHKJ>3r^J!meNiM}_JIgbh?7MRTZru*$}b2pg1&#oz=sIL(kA3T{4B zoF4fQ!++#M#n{FVp)iwE3Uj%g=ys`8d=p|!m9w`Z>=0F|wju0Lg?);!A<8j35H?h; z`wn4;rIb%%X`gCsLo^rXnwxvIa$c!baJRN6`-8jOgluE{^(jy&$5?pB^pD*`-^)`$4f zM1Plecf;(q{g8k>X`tPPh8JC4-*wq-IS6z}X?9yK0_Bxmk==&+m0p;zWGn*ZrQK4y z&9RG9Nxt;W1nXh8oKKeLp;|AWNc4%B{O(kKFG{6OQgnJxYDmRGp7!)fiP;KKO;(NR zLxfF9SmsV$tm<1(?U|a~M#-tKLF^)z=6~hW#m<>V^l2)4Mj^J-%~`P6ZmUcUgL<)f z?Uh{PvRd87OR3MxONd^Qhz;tFdTAod>JX^z;@DxCoLDZ7D7=j5WtO=*+rM1igxQlf zVdj@(-S~3MD~MkH|C3axQm`EPPe*@y%rBrx%`12D4RHnjdYC*`d1zW2Say1I5|Wv73)>#v=B>b(a` zx_eiu&gNg)a<}W>_Et|1yp^57mD6jzb$SR2%lgXB@XFd5XZ+Oqn&$;p4?XWB3O)uF zPNkX)jABetT9q!xis=YKB_}+F+gz#{#~Ip)%Sg?Qz%j`SjrJb;779~o8h*)O1Fq*~2avLVO(J42E&yb~z3z2EA*vm8pnry}+=;bk`!6y^S zPUZ`!l*%%OYN_01mMfBLq880&nff7tZ6MqelC2F~Ze$XCk29fhos`wqKsKq#s-J%-erHk}XfruNc z`8c--sfzf7hm@F-24+li0)b~NMhiETo|;5up-SEQa^*t#LZ!C3d8zz`YI!*5cSDp0 z8=4YP5yGI;N}!9H+jM{|+QsD-YC^y-UmvxKxO2_247C|Rf2ZSIrhha%HCp+;57lzH ztQ&)_n^~$c8Bqzl9q3&{8KQ<kXxJ_RYNawQuR)Px#l@`c0+TFa&g+ozIg@UMg2C0^ z*0Nv+w*swhUJZI(KPL`%3NI6iIwo@0-JA}LcAbMZCG8jB4PCai(D<}5tBkVBPY}Tf z9wC)&&LwPd9jC}qw+r;NW(I1|5G*(NNZYus>2yFUYME?V5PuFAA!d#g5Cq%pn{!4D zL!`kN7a2;3waPP0ByDSk+H%K7;((U$;sJ#ctt26<1m$A+jEU|j}(vcDuRRpVShRss79I4QOX8XQP zpfRlXtj;r^IDg~dY5-3u%9zoP2{foT{5JH6-86W+?T@S2Wibz@@FG$xJJ}%Yv~57c zak`<>j3`9OLTl8icOm0rlVvK@)G?teu$iI|2h{6!hVAApdIjjVhpx*)!8nlwG|n7w z`hCWQK~3NhhY|vejk$3AIc&iNIfPN*x|6u0hfncpz2f6G`P}fu^a%^$q?~u5;URNZ=^U^x=_bBcTt9OHQ^@d z3~n?X6@Mu?Dm)?b2xRqoLz!h-@V`Q>$jm_%%FMD@^QaLR{IYDeT7$l`-g19M+m|g9 zfhES1`cTwpxp0tnl%d0bI{KR5+9tfoX)aw6f(%2qiaY;|sEnkklvAcj^6A8=L;s)$ z-BoQDk4x)>W1H-bG(-=YH-at;6Iw}IZx4fZKYt-;WTD1*bcR5)*??vX>La&sOcE0n z$_uR{U`NeD0SHsr7K}uXDv~c!*ly(5XVU}uu`V^BBMr6EnivZe)ULp3J}n@qSWI2% zZ`2B1*C9g8rF7{`xS&-QLl;fb`A1u&7O}+6X>m?C9oX@E%|~i+)b&t*|LMEaZ}s{_ zRDYy>WCR|GMb~fVp+MStabS>aRn9xIGrc5=7Pel;9tGmsSP)KWInE7nM_RO7L6ZcC z{+T9S6PKv!mCemfQ_WaJr#j)S4XTW@WtNyskpBD1*dWwAv*n9QV?jPk+GcKCg(i}OXX&CZ6z@X^?V@FLfBKGamSi>Z)=|0-l4x&&%;p-+{yq(L zROoy><~-D`)h@>Inzfmc#fx0`e*F8Ne(_6BzW$G&oY{OrzxT(7`}>WyoY2^QF@Jx} z%|Ag^HH7ojJ3%LB>0;@8VO0gyjGOjY#0Y+{P*s=zx~!z56*^P`^wvI-Td9jH($N`!)Jf@6aWAK z2mk>9A?#&#SlLG-008_%0GCtl2oaayegg)V`{V-;e`|0P*A>?FO7@ZB3oEURFc1*P z!6wFGjSL|?!h*~rBqRnwOrGntw6+yn(xR0doQ5DmL!Y!HZD}v1l%%0~G;I=STKb@q z>9jvOo$0il>Hkb;`oGiZ-_G>heQ9OO8T*H|_ndRj`Mz`R{j~PMCyoyW0>l5^e_-Fy zebtjYe*%HX?LZ)KYk4KDPU&Y5Gn%AmY*r=3^nSxn0 z!;^Ydoz-S)dgyT;-Z7%(rnN~ue4>D>s#Y|_Mgr9eiBxo>Y!<5J${ZMWwArp1hF;1G z+RRM5S*;XGlQG{mCufiYiqs55pyySs8ux{Gf8{z%Jy$N}%}_}zmCXctCkpyZ-Y%_r z_4LY&R+Wp0J8whCYErE#FB4HTWaTAed=wNR?2w|3xfeNwM< zl*;OaR+#ZQw+~TgVH51Al?ohwJU69Pv|LrMm}<4G+BiVRreahzIIdw^#>*99+^j_M zf4WOJ)_7D0)tpw%O@;JIrCbS5;^eF+(F(yz7Lr;;kNWm(RrBRSRrFab#_c_|QeK}} znV&G!imv6IZlKBbhpeG@RP+mg2ziF|ugJG->B?qv<4go|Wn(UC zP8STP1$M-0%QB;vCaY6eX{Jyt@cvsqf6?+yR?0QQHc-ou-s)d%AF@~e&NRw3E@x)!5dnEYjTs7a=I46>ylHRD9hb|n^itozpGC+YdtwWjI$<36IEG3rvCXF;-_C1N4BHin%?b=)Xk{WG3Ijb(LNDv{r%B~$?2rjur$iysV_{-aidf!S5-}&E|p&_spvLw%RRG= zoWY`In89g%&g_^dBZ}NqTY0)|U|?CXV4BvQysbf0_A4bFE_Dq?1UpZj;S3@e_Cad7N_k%OErRqR-Fo2ioT3XNy9^pie9a9{yZdH zE%TAi>N5gT4Zct=lsfr$0SAYN$fWMV`W9KvSN4Fd^$OQpuK3N%xLGgNiuRID=%{OM z%6m{#&6>SlW_zqqbalEeZs?pSl=AK-YAxKjxbiC@f#l<(fe*vZ)VcB_r z9UA4Z@Vjrekkfs9TnjJ5*A*jYdu;@KX(6znIxCL^uDd2qquO)P_ven_RGf8}-_GN# z4Qs96rhlL2l;d&H#(v&iG_P$H=A|>E9t?L}{9xd7)LnbAF)!2`QU}KJMa;8!(IRh( z;Zw)3_2p71>3NE;5{>VIf6#E#fY7WE%V|tEITQW~`s|WBNuMq59ZR2at(DY5Fh1wCPSs4C{DvlX(;(fD zbxk3S{w?&IJb)8u^7ApFv5Q|*{(W31m$=Wq+|oQN|Kg7MZFX1he<_ypwHdA$6J_gA z`__qprW?OyaA2ZV8juG%wQ9M@r_6J956ly!EomognSQ2P(Mo!`W~wNJiGe0*^TN6Y ze6s0S2M4<6S!Z%R&&!BF9-v&vCiRkDK^T=l2K6iu*wlvau42IcxfKYI5Ak!Bh)isY zZAg-&+$AY(sdo7Qf00=dO)^nBWm!oD6)CO=JxmVD14Ic*A0)(}vQ=P8M>4Q0{#s&e z9N(K>JxN9sK~j2zP?C1ZWXxNLGBMo6O_|i$$dNd?%*NVcZzRbLMM^1$0#dvDNAeLf z&?b{luYDq1|727U6Un#IowA~&gGwr{NIlp8VHs};oBtuSe<6wusY#^6&o))Y}44C7x1(LP(~4GWj>V(H8qpl7Q${rZECh_7R$8 z0gt5QTvvrjRn;^ma=oMN;ysqoGSaV0Gvh`#Go8jbTUQHlK(wc^!j$G4X0lob03P z1%kiA=Y*z#BId}Nq}V2$#|`TltmR%&NQ_0+h~gnp2rKVL?oA4*8r_hR!-@!EdJZ20 z$gCYPe-PMkSRjyMunsG&#Y#PW^gdqczR#_6AA{tgl{PjiZS+;z$Sd_SSdW#~VWqxK zF^SD$u%SatGDz`02`#$R^Z8xc#Na;6h@t`a_tF0FxluuG2^{SldOw4WXG2LDm*I1% zvmsd-O)24e3irtVqhRkzjhtuDi}52Ef7)TPf0;oamfVOX2e#48f~8b+3xNk1Y~l`N zw`CiBKQvW{7igXNXYS^ zf51P6diX~&a=-nt2>}g&I5t9Hh`|Ghp&v19+a=H;)KR*lLLYpUZYQwao(6KiLEu4e zF->5Hx7bPGAqHD8$7ZCoQ)$a6B&|dSvIByYajjg7A)D z8a29CsGk=D7j|8sdlSl=^x<%f?jf)Te>a^Z@GyQL$i43h<{VXoK&Lpyb^mJUP%=1% z!kk5oVKCSs8dpO>Ta~S&q2Rv#1oko5iZutZ=Kl91TfLf(3H2z}?5B@jAT@easGr8w z1#V`LJ{!7RAHATAO0sk|WL(D2(UdIhlIQ`BZy51q2xK@rMc9is;c9AvN!V@5D$Fm3JUn{@(*7;N_(HwD4)oH+uA z89caf*YgA(VX$MNV~W5L1`jQCJWb%yX70W8D29Z)v1!-?PW-gl)Qq~*jFe(Zc7q?Y z26I#h^jmug|47MXsbe~d+d02Ie{>&#$FXHcQUso0uoH*24Tm=3A6nKO+HpR#tP4EL zhqkNr&|aj+1VgF^q|On8YfCP!WP6m%kdhwe=Qqc7W?D>&2ZW)FGHmsx2hS}EevS)1 zo?9H{F+?bG1v}ncwU=gjyYTSuTvEF*Ro3JC1c4I_b|cU2$n&J1=P8%xe<B%TV7CE7roI>D9m)vM`sa|@@A-8);_q3nfvo5)3E|4?0;sv?U)`(~3nedE0>t%h4z;g`tV%CQ+>+}Asnwxcu zw@h<+XuM@g>z19Ns(>Byf35>oS9vcO?BneiYfjTkHK!eWm(&itj+zJjIRfJh_9O6} z2t3DUlnW|ZcSdQH`3xS!zwH-9L5XJ@;|g;1bOx1YFpL>?VFul%euhp6;iMR_!B5z= z@&qOs9Kguk7&+xe7Vt~jjV#!alLTI1a1bN+pl(m2Vz(0RB7qqOe}^#YVa!+b3%B73 zx50(699~6B1WLH+%LK~!ae;tg=|e>ba48VR_`7VTpPnAg8j%6K|EI5p1j`!D;;Mps zssv01hq2yXtXK69`4xA_XZeup?sQ(^Lw;mY(SDI*n?-Cj0yV!#Bgk3*8qvPU;D}$e z&vVg!IZD5T6aYI@RCj@Hux25D0ME{bz8LST(p};bj}^oxuy}-y+dsh!1tpg zT(DndFoFY9a9|hw1H0%B>@_~Hi!SJkd|<~G6S6PP7qYBRf5`A!2$_W{UBvtGMOVmP zYcADGFFH4OWJ&$OV{p+U`6_`gF*uIo_93}1`^jB$$$g!ZyX029#K~nBBlk6j+?Zkg z^@?wDxgI4uq-2Jb^a<}9=>{_Ir(YQz!U-tB>>m160$;KIc1lT?(v#!wm)Mgr0$;NQEz8^T^=6R0^pew-<4bA_-j+*VTfRi#8w^fj zTlQmHzUgnv>uy^vbA5l^7W3CFF-Ix6JkNy3`E@VrHwe7J;7QDy!K~l%XT9QP{SI&T z6_>{q-t5uE^!?jS`i|AVZMWkTZ^w6<)AZ6SPCK4le^NW}=3eoDzd_);44y*Z!wCF) zt@Qor&((K+ei?&jFv9`NaMe}q@4Nbr;J9YtznM_Z)3?JS{Skp5;ilgZcpE={LExq( zB|rA`e_e^hvk@tSO7UY1c$dIC3{*`12qu5mKhaz6L_g*ez3q-uJH&+D{m0elh3s`-(M9_aR8zl@-e=@2t zbU{%{iI$?+mBLWZ0?a8^yHX&%BPvA(O|WW$;`jaz{K%BJdx!#gx2~BO={@Mxe+vF# zj@cOFtz)-{+qG(5W^KPf-n$d{K7qVX$!G+gguoAkYaT7bs5#AALbT>+uQ?P-JVuN3 zQCCqGHM3KTPSDyrSYXBs#1@L!e>8!7K*<o-lz1W8*CLRQ!exsl8Z`lq6PRzs3E!0XjA_!Rn@lZa zqtaD0SXqc;rH>W6wa8#C01%4|>lD#0+wB!%l*KAW$|(NFl;rg=3gitdxucPR7dP z2>^Ch4W+Xpor$Uvq>~ZS@rR@@AD61*rO*3Hp9$o%0_m8(QIw3=Z8&s`+<3gc(=2DD z9#R#^F@G0KU|sNetn>w3f2KH*pvDq(SdrcrluWEObhmyrC53;!`Xwck?pk%~tI5*W z0y$nFozN>q$>cwVI^}L-C;Xunu~1J^GNo1pRvk=ClgPX1D*<`Z`j>I$xNNHvJTX1li&<4&o}<^%wpyFwyv8P={ugt zY`))PoOS%B)z(0-X@rB-z{&gMyA7ff#*^cu^8&d*$s8m(z%G#Q?a~FS7UIBGTolL; zl+0xdsKv!_yQW!@b;rA)e-qR3H}a>t6$?iQ=Y zP?>Z+MFh7?M{IRhLb#mF;!9982O?V-X4$bK)Tj&juaxU$(vN;oWksk}v@-zu$1>?B zzb!F9i=cnff2?e}LCGQn^dbVfSt{K?KsON34c(4O)+2IgIxLfZ*3FnA5*XA4BAnrJ zn&!Ywt!N1dYOxU;!lN=p_`~|SO!|dOBQA%i=?DwIlu5sGi{hOH7Spdt5YsJ6mLRl& z2<^90=@vq}h0ty>TbfBpFq!q}#AN(3J3v6?cS@E*e`OGE>)UqecSQ@a*0ZaEU_&D= zV+(e{CWKq;nqt&Mvu5=d`BlBhYAA}V8go^#SPc6NC|M5AL*O~ARBa%ZsU|(?a!0tPv8}V3H6>aT+n1^J zd6_z@e*{rcqg~w+r`8v2M7GF@yP~a{sA%2Obig}H2)e`~3#7MN=V^=f9$pqp$}%}m~|W42Ym$`x+K z5+I1onTIIZ2D>@1+q$D_730)s!Df9@wTXf)I^528Av;=qn3C;bvLz?_NwtlrZy{wUt7r+9=IpKe<_S}Q1XA^^1-#&LKyQTCI1977EFhLR7Xnw1+D;G zC%+Wl+5ZMJ4&go>F3b36rsO}!yGtjvv;I=Bb(ZZ0J<0J{dJ{=P^ly~B1+58yakAaN zKNH0yIZd!VL&@7%D#TKk&Z3&YZtAYNYJ9PZi%>%#X67~?pb-OI0U9%qf1sIcZ0<(M zZs<>fej=xyrKAefWbAHtS+nTJqDWM9cReWCgS9DG>v{KDFG}`etr*!p=g;|TKw>uR50n=$`xa5r1?JR|8$`(mkeds+!T+D!5K0b0 zZXP_oRH+UXWo5l0TJqF%#Zq6E4c5+9H9ab=X;QkH)-*X?O>NpgM}1kay*w2Xq*L-Z zOa`r(WuB^2wkkiB%cwM+YQm+4GAez8BH}M6OCY=XfoLc>qz5$ge-A4yJEPy5q3x zC?pm`V&uIgMp5z+B$l9Y+?r`Ab2yrkk3lU1<I$d%4(=giB*ehRf_MS za#B|*q2v@))<9)ytU9e$W!gPdPU|YKP;v$;YoRi|Qk`?Be?w>2cIa$>ht6UhI+Jzi z48b;IDkSs{osHguALeDIPO=^iB4_Djle&_#|GZDn>S4{fcc0FsmFScuh`1$-cqt`cgIf=78Ms!AdzF%J zz-<7x9Gr!5f0Pn8d!wqS>nyZ~ZM0-P&H=#>{OCyq|WlJr)fHr!TiZK4c;yP0ffr%H{Q?kMd-U zNFU|`*>jW!YXbYwX@p_K2*n7&Xp9kM@Gn|09^#ns)*zYaAlxPh+qir?4118SBS@w_ z$4xLge+J2?L$a5k8h)2Rw(6| z{ak^^29B5Gv7X~)cvNz{1dj@?y9o1Z9529J&hb3VYdM~dc@4)?F|X!$3g$A7Ct+U2 z@dV5(IWEAwg8R+KgL3S{V>!ocUzTy~!D9)>e{MV$b2}q3FXVVQ<^>#QVxGq_tHWIX zo(Y37&*pd_=2={Z)ocdG12DhBWt^C&aoiX4R4&s8a|y@2F&FdLp2K4bm+y&rGRNI9 zPvY{4m#}CM?S}_|MEC~0uLX@tX~IV;PeOr$E;s& ze`B!R*g3h#F=PziV?4}pJC2#W%4d=5gapR3d2V(lGdaJ5`{Mm&2nld@}Ub{OeQG6EF90mwXV`XX2IWK7%4RdIr*)&&_XntLlJyWaNhNjn1X6aBb;R)wQ?0eXba7 zKRBbMv$Acw>)k${v(P-*c!{2EdGd@oeokh$A6ozByz8q@2q+0nq5(9U-#wvD$%gT>|x zFUIw+*j@P2$)n%r|Fm=at<9C?+aG+&b)~}S8u<3M$$x);jkx>N?axWa&%Yg>7`yb} zz2=UZ`dMY`Zl2p9ufq!kf*%U*Ga(qH> zD!=J7&YymzNxSU$mcqIve;vE@cKO&H+MuLk#La8G(TX6Irgmx;xk!*OfO*&MgTJdERJn6o%$ zceaaTGe1KNH^iL5v4nXD$6=TU^7HT;#)}-^#CU<@YZ&Z2vUlIte;7`FF3(}~!>EVx zDMnv@-af)eX2%QT2u2@{4`L*7d;p_2$NSkfa$JS+9LN8`=*96rFnV&#_Ol1a?7h*Q z`(^w2Ea%xfA(3PD9_YsLa$YBf*&W}NCyw8XCZpc>sT!pi9CFXnG`XO`6hNrH#+$Fu5+Bvl8e=pB=8GPa9a3(-9bJ9nS z8}G`!a}*`_=+r!SrYqO$ab(hx{ci@lUiGx<`*q&vmC}<+(F_ zIiuZ-Ymm=WQj^m0!FXSaa(=2eZz$7EPS?LO?@L?qyZtMwk#`*T&*5LW_od&^@A|JP zhv%pI#(7++e>rZSW!-JXUr^4 zN$LGyiC$8&qTfz$ZdqM1RMbCvXjj>wC$G11f5WBn&l_L;w(I0w-N(+)-7zg|%g4tv z($YVfLn?ji{-@_eUaDXATjs31^lUc_$!E|IMy3w7wC~LvK6|Ek{n(xj(b24`_SnTr#Wa*k%2ij(l^mN!x*pQ-s=SD|JvOJx^V_0I%U7-oRnJ ziMR0%-o+6d#d~-kpJ4=F;wzlOPZ-4y_zov=0^eX5r*Q^9V;mDWhYL85v$%-g5oN`0 z-p#2zgKy;wzLPUKn{&B<7xMk=;bMM-7c+A?m-2F6$!qvYeu{No%K;X)ILr;ae~H_8 zGk0(&zrq82fCu??KE#LlEgs?{{2_nD0DwS$zn}7P9_A7LnosbLJjUaEfiH=YWSJt@ z%XCSVnUW@%0?C&9BvmK(J%o|D+1 zJEDpFM6ZIflB1QjBuGGe>B;gmmd?(`HRc-$yuBnrH)E`hw0|XQR000O80RSQF z?|wTxRx$tpm}UR~A(zp90~M7_1QCB*Y!ufS-s7{jkC#0#yR&A&1~Xv|CNUcZ)({fo zWX#%J11vVgB^TDSyJLIf_0BT0Yj6t9CX_ZwQ^hLk!>J;dR;_wbAJRyDk1F-Os#K{` zU!qodk1F-O|C!s)*kej0GJF2p`M&QzH=nyUb377RSU)>Gd1bPB^K>M#>vDf268U$+ z$Q75gd&Nen*ig&M>Y^6Y>Sev66<5r~zLu#O#fsWg`x=Jcs8!9T*|(@Qi>qp_rNySS zhE}gY_*!ql&h4GiYMN?l!i?6e8rq6hZ_YN=X3I==iWZ&Nn4vXvv)a^+wP;;k(THK^ znmuZR*TrhB)?+q}YJJh4?aY7ByQ&#xRj==?*6V<=yrh+v&DKi1;$o_5X0KtPsO;2R zO<&Alpjr@Tj{(K?dhd#6nt-w27usRF!_e-uoU~p?HKI3~07tE1K))9<7OGmU;&Lr| z+%%)6)))IqYfY_aR^QWlO4Yh*tnJZ?;R*Y_QV#K=pW!|?EzG%ROR9gPM_Mat_121y z{EWpqIWv9Z;>`3^aca6SGo7EjF+H`*HC?>=#^mc4r>Hx=cH_eIjOU%1zB+kjdP;D| zv(x#TGZ$~%+MyMjYYnYf()C*Rf?6}RXwztE)G^!L?QPYoT;)`GNj20mw8|_t^`b3I z+^qnDnL<_PYp~-b8Z3WBsL||&f7+sEL`y2HoRV(fl4-;$n%li(=V$SFv8*=BOWm4b z=tkcntbFU2V1)pl;(}VOwG1uc%Q;c3=+&mbiqoi`;TGtfEvd<#X(dSicWU~7uI&qQ;%+He$e z-TN(DO{*_9mjFhsx>9XwUUJg%E*g5P;hJ_?rre3(_|%w};uFbPcwy=|t`Hp@Pr9;c zZ96-DXtO<_K#ZrR;_#XAvFxYnJ3 zexJ%6Ytq$svk8>#m|&NL-VZTLG^=Kx^RrlTjm6cf_p^UiiLGeHqSX~M;r(<^h_2C5 zpV2)d{FY#kQyo_aWDJgj>cSegigmqNREx`X{chb|sdUvpV{}Drn9*fz&Fo#!0cClq zOJDBFW_PYsP18E^c?V2kwP?0VK2S~-_pI`{g9vx8h5{G8gbr?DbrX^FYPi}vRy%iR zq6EV7ADVw!w;x}0)qjO1x!<`)9a9gORAVu|>c2m&GS{=qrC1`D@3Z-_E$-Z|8AV!jScU)1Rk0)A6`OC!co<%tK*eUO6-2!EoEpmm&O4 zxMP1WHtB_WP49(RK1g~NFIwQDG<;8;KI_?4t!otuf25eM&)j9|Ed%hCV88OXJv-DBut@E}K0A+<(&c<@UnfCY2XBXWb`fMq0f%}X@R#6K< zY0VR@sG2tIg8_G-g>J}!KuAZqt$vdSZ~}h;KW`8i`}u}dJRpT$Q1>IWCzHvGmI6ICV&n~p;Sveb5oB9gxFRwX}-Fzw@%QUMmmZmI05PrTko6)ZiHjpbWQyb9Zd1(6M(aMDl-d z@AY zdyXL)t+T?V6netuyOO_@&=-oBQOm;;maYG>J0i5j^jH59+Ff&4 z`cF)Vw7Vh+WjLcmv6345NRl99l069x6cS1_qoi;*gh+@8?2E2sECIg~9#nrSB9dfZ zal4F&_&H7D4Vtt7$CCM&m}7s1(gm-y=#-WcaoOUM;qoeZY{B??JG?25munAUc?Cx| zXlia4sK-+HC{5um=nTa00QN0}WFZ8R)CTRhqxvx;LZEiksVyg*JjjwK=x#*%VJ1X& zZ_u=zyIW)=0l88eZ^EVU+~0p;5#-4O`E*hSG4?Q$1U1s2(%z0rgNO_;B60^r4t`Dt zK&An!d$Bz^Mp7_=vPGmqA}%R>4dRrN;|iVFp!?=hJZUeW>JLQ~;Z3tq@uuxdN`PuV zBfDYp0Wb`8P{HT`BWdmcRMO}40H8WxH*YW>+Xuk*Jf(Yiw|hCedt`s_v$Sv0YTt9V zxci|o1EGzX_ci7ftDVnn(1Ui?5M&Mh-*!$;&=#i&`KFY`uD0~PCXHU}?9njB*f)+M`egP&Q^@Gj==oiQ6 zQ3v!fMn<9bVW=(pK_7*@K}NFMgMRVpppP?h3<{4x;S=MSo=$&1i5;OY#h$09VlU8> zu~9k}J4$niz+#sJ3&Um7NI;b_MvjMi+uVB+<_Pt!bMGlePK0`&aPLculYZAhRI%m z$u6Fx7qIn0p_dW4#K<}B0AVhlq?d49vNjA{6B&`ePRMz9p71*nJJHyG7r@>mLY_$K#LbJL&mf(6{@N z^sT-D`X(Z8LgE@CZ^5UD$lLJI5qamg_~9D8jU#cP!LOR1b)OfajkNOT*)PlRkYVI% zuh9Nkchr8GS*zwYWX>Z}WaJtEI0pdce;+&V0a(WC2>>uk-+hc)w1(I3z~~{E+l&+* zbU%MtpL;CNi3RaNcl!x^=Q0IxT%;8awhUlP09Hjr<#d6#MHf(){9}M$_K$%_g^}w} zQGtqgGUFM#l750{H9?o2ql?Gs!gZ=4qA@Z9G4l{}JZI(ei86qDkE=fb$kzzcY}X=jL;f{^z8*9K^HE@oreK|)*XQ|%0tl> zec5VP4M#?;T*N<_0($o5)t~@pI6;eutbk~j;8{^;WDZ(+30kT9TWPqhyu({*xX=yW z%I}1?@-A)Qw%Cq{@%c7CjLei$9#&?@l>C&EvzEQd&!*1=Ntnh{d1Y)?xnXHE3>|-k z`_$z3DJ*c{+5nuw1$gh=3C=x24K5qpB6H6q8>|k)V_iqYWaJjGy$o!deztdAwyT`& zU3bR2ob8+2v28hQ3qH2_F(n7b4ek}bP{#7gR8GOOAr#>RX}J_vgAyAH)$&qNV6 z#9fb~iO4-h-U5nOfa02;;(eFmcR7E>`|gbQImNfPqxjxtinBqA!?O-cpoq6ne9xu$ z-Qa{H^u9y!t!JVLXTW`r;ypwjF!Byiyb2V*=cm|qDZc+0-GdQK_z*sA`_z1YlLcbKxGjJRWi3is8cDqYp9Y=Iwu&ozEjMGS7eI_F%fb-{(2mAv>e!z$dzzYEUhrCl}R4My9m4o}R6qT~-SuDVx%H=@QqWo5I z+Vv45WvFu<>U?YqaF2e1`y?S^Q~1Q5@gqcj#7G4qXCU%ZH}c2-0{{U3|EyVgc$C%k z&gD+zWX#v!Bwrxl*5IU_Pr`p~gOgfXNPFW%ptO~tgHGL}gZsjSNhGM~z@VZc2Euj` z$0(o?Q4v&JP!U{k7uW8!``*%pZnU-U{g%l$nWRsC&*LBAes??Pyze>p+;bUTAwy+{ zWsTDq-MX3cY_o9-qveXuA5k4l)G@kE23rzxL<&s|e;LW5XmXN;rP+TYnR!^Rv4T;z zq6@HLb}yq9TY|A(&hO*^bFOjJ37BcNuFcs*TkZM;NOrjx~BJ#v3ac zt%QIV81&vHw0_j>A zG!wzc&N56Si>h6>yq{9V9WY)ZjX$rXSA-tP&L7p>PC~1@+L;t z*!}g;wt>;@iY^3{QvhYdmf*Akl>7L$DnMy4`gX8RV=Ld*j$RJKSw$BuEZ^Oo+|igc zx^{}``NNq2`evr`)MeTr_1l&jbaCdreAJcGmdK!0XxbudB`{V=fq^kV92wKp7fAERcuGZ*ySS6 z3=27O%dP_Q#~D4Xs1wLf1M+A5$oG24_h{sMJ&k)c@+*fz{+x@vyVpLRyhira%UqMp zw93?MnV2JE9WuJaLvMT+{4^NPCR=ehWgydR>}G%TtmLMw56f1*wYDzMs%U~rCE4GS*rqi(N%zZ2H?Kphx?ib_thP&3q2^zp~*UR!K(v? za0$Ftkoq#C*A-n2sb@m!8-A(#J*jVL68C#J_G=Qa8Jxr}<4q0@3-=AQzv*~?p{C=l zVlfe8ze~r}!=eNC-Ts2%uQPgE(X}xAEEs?Oj`muQd-)W3Eov&d4yXFu6M2Zsn%p1` z4Corlb=|v)vXFT;WWMK+(Pg~PE9y|6*>K)>w7<*f14WCl@*J%EmbdcT+^*#8mEU$& ze!%EEiWXyK8!EZ)+9jM_z9sDPEv1P{8{cR2Jw-XJIu}NKALUzGyCIYAG(O~6ly85z z$vNZ0TDi#hA?lbPF!}*D{hiSd(fpawhkZP=!1ysQ)AufK!?igk)?oZ75p2QL`6GRm z>anp2^nQ#TKV|e2MN6RVJZSqVtS@N$J0w3JFD&owPUc+a zq$%?-ge0WT_qiGs-y$DN-A>D9~=k$p~yi8uu*>_Yc_tu z=#L;vS2}-Ev<&V_!Cim$yX&CmuD@t^9rR2-sNHqz;O=_3yeu6uYukb+ghJEmG^{!u zZf3aC_-i0>gAL@;61x0e%j^|J@J%kO%&s8vG$o^C1oXw!y*A zH~zuXc9t)Ii`n4ZTICS82S^>{+QO2xtMXO-=g)sau?W0sc zCOjYMRKB`Dl_&b$70_waag;Su(Hcm&2olJF-X$uW3~n1=;piI4te~Q`Sa~s49`3EI zbTYWTveH=@WR{_59aeu{Qpc=M*r_|%@;@HqBE+o!Q>3ut(q3kTe2;N4+Ix(P(Rh`L zQ5DsqrecgRD~=V_72`z}v#KB<#;j^IUt*RP_eEyap!poLMxkkB)@c0#6Gyn|z8lZ1 zqhi4$6B9&jGS%k1sk)I)j!rSFc7hm_=^r{K!>ln4Vr)()9&3NBJG?!I&JmD(6tj+0 zv>t|E2E&i?RRiKUw;B)@ssSO~YaGLfoZE+bdW&N<$Z-H!2aulx$YTKVXl5Pldpc{h z$N2kz{Yifx`0M2cyy6Giih4^YPGwd^(Osnz)0t%z^A-`py;Rl@r~J{*InH*x zz@=jEWxDY$6<-*PFA0P36GX#+FlcBH6Pz%Z;12`gRaoLkW_<><;`*^ZtLSb7#pMW! zMt@L5y`VT=2SwBa7u7+rafmuwO#C<=+9HHgJJHR_*71ME$|EA`CZW5B#Vi6ST7dmo zW;H3=1h`iK?&th)CwXu`ui;MeG)~fRHxC8(gpcE)ZNojmgZuenR`-XDPmj`i9>6_30Uf`L*o%3bS zIkH%JM6|eY`-TM<$*-jVx0zWdD%t|L^8h#Ihdb4SdycKs!Sb0QDb>VIq7F^{1sRg(vGHaTmt$>>W-06RQxHCMsU%?X>Jza31$vPqSl>tLY zwlfM+r!niRiXMQ}4oLl)U+PRx>dBhKnI4Xrn#2c(c;bq$`=7X4``4Xv=pjwV$;DzK zVx~*S1H+;N_sYzI;a_D|T+ucd-U-8J{m&=v!^3*w+OGSCqV14*C1fVthpU+FK5;di z*^YnqZ!qf=MLV!^K31OUtxUR4T)i^stUQHT-&FJnR(4_Vw8>nYqp#nytHfF3#F-Pt z87<;;W}PmB4ICHD88T?;_DmU^pxd)#@HpL`Era8Adk+5E6g>)Y3s7&JTN$d;!KyEN z``KaY(p=GFfi^J*l~pKUp2*9>8v1;3p4opG&X$F{@WHcXn@!#rYHZxZYwNcFrLDIGly9Y!DYgWik;DHA)RI8V0f6+Juj z>?MkJ5138ZvvF}Hvo7rtm)VY2^jxW_iv|k2%rSM3HuZ8vd;7OQs$I27F^^eS6muLA zbKQdIdH0>ro+=`}@FuZ8!FWuXVVQq&mCo(sDd=r$7ASbqp~kr8B?bpQH3Md}D|!Jg zzZx%ud5C4HT^>WO?%;8_JkcOB2_%*dCyR7whrhV6T=qg+mFY%aG$GAs0b|C$IwCsU zbN-UOOFQ1%9(KTX^zj(Xlg*-?S)GdZ!J2F0%(@cR#I-evc&Avv+h9$qL3DqmnB9Yd zR1P1o=VhSoPNrNg;{5^mirtGsQplar!X?V)fSYi!@d5`Op0cii)uc28Hanuu87 z0(sr#yFF2)x2@j?woj{~+6M_YP8Rg>1cb+%MJKbaQuGEuE<|~Cb)&c{EJs8^#X@FX zqv%aN0beYvY?Lw_kY+|9U zXQ{cqJj@&Q2ZnFRiyIwT+#A+O??xHc%~D10!l*2ax@m)03Zs_7sHL`1!RlDhj8@9H z{onZE8fn%`-emvK7S}(tMX?|+Zce&Cu<1|J{xpls!xYkKvslKgoAct9WW6(1I(tiA zEK4>GGRv%Gd2y>VHHv@hPg}+)6bND1R-@=W{qumgXB2N1-ORc*FP6It`GBeAd2yR3 zZot%Ss5qF_ofj*dy`xS2R;jbUswEg(krykSy(LpC?SFd|y$?zkfznkQL=PzK0i`_- zH)9+(OZzh~Ry(6(J&)lF5?1HM8i&=fyfC4?wZ?JUT16i~!(xAEShqo}g@(1zu-0+f zk+I-Wg;>HT2J%8VdXC0KSS$Z800030|D;z5cuZIOpPM^mTp~A_L=ssH8FC^nL!zPy zu1Xl?)-JS`EJhMy64|I$rJ?<3b&;KZy|$v1Hnn|}T3Raq-?{fp zO!E2u&(nU-Gv|N4zvp+}_dW0X&U?;1R|t*nBF*QBS|-g;;>7@q5E?zdUU;~yA&$&1 zlNKbIDIZqDhry(jBMZu;Qr*OTiX)|E(n8Io!VH?XQDElC!ZN8$Q?KA%G!ME=4yWP+ z)pWwcSD0?$$ReBcfm!wluWyqUbL2zSbdpZkII_5r#U_87jWX{ihnwXNylOh-X)(kZ zr4<21snYUXX<4zfv_x9MktK33n_1?=Wk0^2P1*vdOXXhjBW44bWpc0nkC;_pmdm}8 zA2Hj(tdRX^B(gArGUvdoR82o1oL3Oes#0kUUnZ@lNy!yGwnsPW-(QY4$~_RCRW`@S zd_tL2uBCr`nC~Qggm_OIZAx($shlGpi54;Oa7?(&o8?|Pn)m)3DHkn<#O*O=*%~ez z`I(}un$8$)(h*8mSk1DZMq4bZ>8wU~vKcHQ{goSx0Tw?aBA1PRGeuD~{pcy4qt2-t zgK9eGX}KW_vv^+vioLp##iAEdHJxXAy^45Gi%EYJWpODVU=v>Fb7dncVP<)+ks8YQFmHg_P%3?b(tNCyM)2(+n4`U9i&mX*KiO=R z`Itn(*KC%1pePqz846}simL-eqiXsY6Q|3h%A^?DWPYe&1yAR#X4UiyDmkT#RLPMF zT1kJw&#H&FNGqkxk;*b@qi*QWYa0HVbJbJ@ub*;cW0|x`pKqeiH__&?GK%smU6~`B z+zKpO11vFCIfj?5F*9u_@TJ-XzU*G$kKGD<#Z}<-bqZWutH7VQ3cQsSc(ZD{igLb* za()VC3r9XvP1nG@1!haB^d$=Xg}(m+qrHD@7FiBA%4R>AwHL-jg@vWB>e$^9JJQ6}xw=fm{*FgAZruhGsj>1%DiLYuB| zYnMNCjj!FRXsg>Uf7Y(zefKKva;xG4R~2v6sbXraD(-ew(Im1mexsWHLeWZ4v^{aW z^liW*fk=CWNQ~APQ5bEcy&Ty~m&Jdg-x6sbKfK6bFaQjnR$X1qOJLaSz8e2N%>Q?) z=^^~T1ONMN(g8kKI^@!ngN#1JdbSS(iPBL7SJiIGaifopb`#&&4cFYj?x)dUS~Qm5ChrDMq@G#20_b!UuHW3tqIX479Dpa@iPQP)U7Hv8bk(&?P?lKjlk1 z#@8g8%m$8JREa12Ee8AUWj+!m1qbHk$2E`ojMsSGrd$-7S&saO4hx zYC?m$3lKoTJ%B(8{s0J~;7?hIr}Dl^%<#1uz8*wLfAPW^Xf&lWe=&`RD)EEHTKp~5 zQPM-IVdm?L3eVY5eSd#Ut+Q};E=n=fObMLbLnTcxwO-`xd>pTM1T5kdlaJ!rT&dq) zsn=aGa(1IEL}3AYJy{@B)|Z7gRC>xnB$XyvXia4Ul?1@m2DlR7ssY{0inkD{G!|Mb zUP6@8NNA%p_dgO+@1u4KHC3l_f<&{m`XS| z>j~TaRMHgGMo|8YYNC>0P@9lw0HXp`5(4UDP(h+>(axn$c=I!24rgzwl2FWThKFD= zS?~N$^(ODaYZ@Uc34_LG&fgefHHFV>=~+}_f!-I;YySV~ zwNOcO=zWP5!$E z$U#{SrBzUVrqYtLx151VQ}Wj5Aq;W}ElVqn3N!`kTruS$G>({pbuO23MB`+WMdwl} z7rD~RFGEnSf_&vlKqW1-99sX!j7CSPBpj)2MQUx(Ankv#9~4`z(ymx(TcSvuT|!F- z(*@cBgiz29Ad~_dKo|w>AG4@c^WH%vE#Z9|yhleVF?=smGg(+eZDL$D+aKAq(rh}a zBmy=&VDm(j(n;S{&8SVM$Jh|fCRQbpu-S>;>?{jkQ{^XB(i+q*P;s)*mQwL5i2}77 zR2TTPP_BQgO4@+?23$9A+Afe)B7xfjt~2BUp2>KUc<(v0-zdOgOby=G%qNe9?`2bCk`E*xvs!Mx8XH0V;`w(LopuT&@hS z*#^TNHTf`o8zj+fFqCeCL7aV19Sv<8458a#FlQe;1C!b|7=~6x7&L?-8mVmrH+HDT zYFojLP10CxGq|zC{`+?5tmQKN@!R29l{|?Q4gArNUoJ>Muc1fJw};9 z-OZ>K13xG~cQCy|`!*F?v^E8L7!4es>zLqh<`2qG$uG!D$#bNQPf2&=IGke~&a~%y zPso8j7YLgG3?oK83=a$oMso}fqdk8{2ZkvhBqX^&TcrK=_g<$y4l*@bb2$~ z0;8{+PL7+-G=^Wr_?Mf{nQl6-F--YIZumnt+}O?k$vW8O=LgCsPNwzopr0ijF;3{Z z9^)9M>KS+(XLu|g#~2=i$M+1U;&Fu8CPN-(cqHT@hM$8x$nZeO0}S_r+|Pe7t;=@| z(|YY=xF_UZhI>HnVe59s;~R#%;jx?HE_m!>I1Z1U4AcK?2lMj;$P;Vwm>cMyBHrS;?>&vVz6tgU1HO3y|v> z<{{THKlFcGt7EPja<#6*J%E2KXZSYcDu!=Du3-2&k&|RvhCm-n2G9GQLpHsfItx_*|Di#-C=qldb9EPqEr&u{eJWl<%9Fj~IC9 zc?VA}y_R&wdBo=T%z~H&d+XPW5iM5Ho--t~Xy@&XJs11Vj*PO8NE~%}&83_Fy4LoG zf>AH0pPzg8eCXS;h1d3FmK^GB&Pe?tA7pO%n5V9@%? z_=bO)0!!xgn>=)3{}kWTVdW<-#oxMGf7|Hv!{b|rw2uAxYSqg}pPCr|`tR~uyXo|k zf6O^_dB^pBJ{zJlcf^#R9r@&#D{G^hezt$>{n#m0o4+|XyY-Qrs$0kIpEqpUdScM7 zF6sB*i3^$9J>-AEn-z^qM;9M@? z?tNK%?P9ab!^RF-`K{$yN5Vocbv?0%2EQ`qebW)=Gb4ZIthYRP{otXK-5m3dZP@U{ z&|I&%<@1NEo!@Fw=-GjO;)iD^1_j+HYT`F{PMqW7-dB(Q7WdjaV|F#|yvjT6{n$g7 zhc_TkOdFZvi1<_oKxQ05?S_ezHqO?O}QSpL`Y>T#7{?Md>k?mK=-y|>D5WP}=b_Iwg{b0cLDqC zXAgg$V|YrPJ?y@3-S?{d{w!nX7xg!voiEhiJcg;=dkoWe&^rv%cS;Gv^nEdh;q8!b zGrSe@Er#jY{wBkpLcYN;JuhZ6OwZw07^Y`zF~c;Lml=K+vWVeXkS{SjVG(j1i<90pGBG@X8$xCs0}O!JUg3^aCnC*s-qaST)69hnaG z5zTno8#adNy-H%3_C^H5^p4z$VXA-Il3}WAWjG2WoMD2|jA3fmlwk|QG=?yPemAFl zFvFCm_a`65n;G_CQeeCn!<28>JwG3P&KGHCmNz}K_`*D=c7QoW!@hzKXWbp1{^sUm z-9~l2v#oR-RWOaoOv!qFiX*q?nDcUGk1oKsLvCJ93%XUyL+6$?k_6{J$@fsQN(zJ&hC!vDlH z$Zg^L%vzsgf5%M|R|Nlq4|7c@2{qqev97z6=>r0ybHFa4nqPx56ZPu}6~gT7157qHBdUonPz^Jp z_bc%uZ0WXPwxKtv9*l;VQQ2J{C0WxQX3$xvIox_)kOQjW2pYOuHO;8l!hU6>Jy*|D z?MA+)sfN8!H~e-(bvb{HA+d|YmCpf>J!13N1MK<(+fBnAOBi!!39PvT`5rZv^7I|0 z-0bN+rk-!ORlhR%-!h!Rp!w$u*b7w6qZ_KnZVYkcs$oaa73sIz@61tckq_j1&XvQF zHoj4w73uuL;o3D-WA58C*jm{$q|R>d-Dj-TTH7+wHE!Gs^+tcn+>#kncV*N+xvMU- zaZFn6^x_*?#|t-nyY$TC)%$-^G2K}lKA;2l`LIyB{a>VUMALGh?^ zUsrr)z_jO1oocNQJX#aZxjK3O$yJYZB)b>Ayye5}uM-+eD&9*y@yo@rMd#KPcXsrj zT@iV(=UGz~C9Z#6=_*TJWMxEelE48fcp(RJAqXafp%_Y_6y`%YRDeJgEQe}%6KbFq z-h%b;4!jHX&;X6F8Jb`VY=v#G9dzp0$;^NxCEEtGJG9ZVl}S98hjr&;a1#lynq++5?;oucnz=P4eTTf-Ah(_fcnrw)SDipB*SNegKaEv71Zjh53&s-`uxmg;B| zZKfvLLM^nH_Rwx>rcY=mZKn@tKebUS9in6OC7qz-bc9aQDf)&^(|6oX=jjT^aU%ES z$2gUr;xr!4BluY!$r(JJi6`{f`BASFS%cmq>l^~o21E586{(7yiAZu zk|on*rnto?c``>r5|(*VETvK=<+4x~%L-X7Yo$)s$$Hr!^|DbKWRo57IY=XOy)io5kp=xaV>91*tCX^CB(59DQ2t(}T_ooIi>AwE=|*1p zC$S`S(@6aWAK2mk>9A?zjVpFV&U004w1001DD(S8FJm%TFt4u6bTeRx#W znV*|8NlwNbxXB#|AjS(5j5tJYnD8Z_7eWjmAHe}5C{AW3H_4D>W-@msBz(w_fMTtc zy4vos7SYQ3t*CXoZns;CTDPuUsa>nC?Urs=tNZwef3(l;^X&eyzjN=I$pq3q^6+xs z^S;0L`f^Vu@rlGpZ(1 zB4#9;ins!5Av7FiD?wJTmGQ=+2oOtUNX*Xox~)PcwG(WlITDX%<9+2;CX>ok^`cOR zQymDBiu6Pi14yZ+#AZpPJC(?mO5D;a8gj{Qt7mq1PdbvZqTP|6gf-9|fv8Y>GUfQ2 z)!jQapdw@0xj_s04u2@YnFYP8i^#@#K ziNQqHDp=My%HB*WmzI)gjwG~X(sEggT>6~69ekB!Be8-oGMp%~1KqwsE7R-r$5xAM z!OgIhN%V{giIz-dBhg5IGPN%m8MJIW+G|x0mtehv(X{RDw|_?Ma%YoO_M{Lb-dC3D zFKcR=Hkhz&XHcRaHY_K$jv7NQ?&ffJB^&H_)y|N;>1ejE+)+#ulb_JAbjHeNMS=oS zl}(BM4O;`18T^~EErOK1dsB&Iwb<|?Rm{+4g+(%oI;M-2+gN8kv!G37O2yNJ*h=OG z-6iX>upJ97FMq>^v2*TvnyYc3P*oRHLQvh4NOl*Dn6oJ0{0?J}4#rXg=!)A1VO#*% zF2a!ufD5e=Y2knmC*oE~Jq3vfBi5O8+|{}nh^3Q(ld4=5i@FF2L6m)5n3ElC9q;q zTa*;hs%T0&8t=y@b~IJam5{(TX1Fiyg3d1Qi4NG-bUT&HAj??Pwgh^XFvpD;xkzqn z1qH5J#F~(aeB-HPHkwEdTFER$Y7WFvru!!;>q;kBBG(F&ERp$(+pKcbh>aFo z7m3<#@qhCtsV5Dx0J(A!WTJnU>TLlK1x(V5F+n&(99MA?6RD)oxj!Jdp;Vkwmg5lfSsRsVA3gGMcKR+0>wzvhX>xsq}hU9Fmx6)<`xJ zOqYiXR7$$KQ(IQPt!Ac^ULypsk9^)qk?u`MRPTGc>a-P+_zw2G=1n6tmhe z%z)R_{3dDOhSy+O)2lsKr+UpLgqxMRC%DreGl^z4ka9g|C>^|GlV9oLU1hZyT}hi- zz-;$u6~;qKo~I!*loO8}BPWk_617er3-SC*zYl5`SY-_NdmU=_(A3Bbq{0PHPU8>jsuphXaSo z4YM;~R^ zzm#dDS~pOfXm3ChgQPPsNetE`0n<;)4K@=lW^g(aMzdfvv%150u1@#*O|8KsEq{IM zSsmKVX&pAioW%Ot4y0eVcYVPp39?z8{x09_N7*c|?wcb$`(~5J9O$f5>IL-)QfK(R zL_As=#6$O8?mp%qp;=Vz>QLxxPG=*BxyWHokj*ABxAzq~o2$^vIh_OL707k2>8o!w zl@K0bQwf+_+*GuRG^D8Rp!`guLP+(PnEvY-Du%;TeXdVkTvun1q zg$iBB>6O5A0Mi_D?1k}0gTUIyi2XtDRdF1^Dk9wR%jEaflC$F zEA-mQwKuY6K&mj~x#)o?e1FKE)Qr4rM!>W+x50~@fix3O(6Lp-Bal`~$78tTF-phN z3^P&J8rGoDC1};AfI>r@Hegr_Fszo+VJ$BVYnd3<@%Ih#WkY1m8He4E)=&)6t}t%akVI}@y``^-NnVVmK4{}D(XXV zD4IiY7}>UX>n$uxEscm5v)W&A#^W- z8!i%ILz+deYZSVc(|?8Vx)5I1m3nO}cwH}A)>f#aO|W)%0D;lhkUxTTxCI@`96sKoS# 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%0A(DD@KBOXF4gIydMn15Obai0 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

H}ow<_N|2_1xU+4I*IF@#F6I2wfjV?dn0mG)TC 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

jWMBj#x!yTJY^AXm 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�*j-z%Cj3EMujA6Fkipm~07jDwk;1>yZ}X zK>-NEWJ_KAl=Xd14)}@D&a2EN&OYt~z;YKqXQvz>E(i?pydE;dK73$69h)d$7|7z38EsG2Jl+-s`2Wqx-tFUy_v3mplj(!vyfg?9qH zD=qJ`YOX|ZSAW5K6uecIw}kJ@*!_a-I|05`mao)gS3?qOp|oYq+;Sw)>~e`)L4H@X za;0cJ;wlPdnJe$*V4lPdLU@OS(px{SNC>G6@F9KoB z0|*9O1M|Z7k?nyxyQUC)okP|(V=LS_ERTdL&M(xOY;|r9TTp;V2rxNoGcA~rAkk_O zYUQfXIuH^JjLoBJZl&K{n@2Vf%t;LlbBYTN5YI{v900I*$eOQ%kZK9i zS|qjE$<0D?4CDp}16$>x#Lw|{7PGYk<}#_TGASs314Xl|WiK+R9-am3nv4}DrJ5X1 zmP2HHG`kiy0(hEWE`lC06AMIK@8a1d)m#mKa<7p|G!529Xe1kf93W7}Mpj~%La!Rg z(Mly`vQ5C$3JY0k;cAh!nS8PkXh#Cs9pHuo!Yljg?Y+cU8>ZerDe@VgL=ss@vlgTd z4i%tW2bA?KT*H?r{RoImwwaOM_z$GkiIh#+(7-j4Wze{As=BX$xV%t`LYi$d`(Utt zHpr>Dg=;|`Yx=E`V5h?geTeK=IK|+o224u>*Gi~bv#I(B6QZc?DdRf$k3cmwHPq(O z1n6`C+C{_$!hp~qIUr6Dhpl7Vo(tl!?fF@H0f;vX@3Z*|ZEnJ~45Y-y5PPYuuK*Ek zJi%1hWBEY>wq6Oc(#9|F5PMbDSmeKdFl5__F4=gZ*JtUCS(wHw&gLx6mMqTo1k*WA zYDLL*ehoIZ+SbWuHHh1`lYCiQXY4VE?%0%$UuWk|+D*1EXme2Xd-E@E(Nbhyy1~Vd zA0O?Vj=w1Jjgwx+chzlqr!TzCc1QlW<8to0>u)-?JMZp`)2AAJu0hJ5dtJ70)I?!GG0R=xWdubvKm~^3fg9o*lP_e>~-`eBjLL*AqvIestlUhxYe$KQsR7@qG9D%+tS| zO;5Lf`nQv#b8U@z?Irm+A6LA8_7{5p5%G?<2VEBj-M8f3dUo3@7ruY)gOcZ*AFThL z`Q52qPc}tvnSOh|wQNHy@TV1jF4j8gJKk+MeDY9B+>E??9J$o+q$=ZGWCbUzd!Zc(l=&Ws^Z?4LKn)mJsV7aZ~pL}u4_N| zZ0G*5UB^zkm?s`MFswX(^dA$m4U3X=W_{2xsCVQK7!|MAF*?G+hLE(**e>vN*VB*I2a?y zA%{Ytv1FVy=r~WE%onGBU-~KIpkFvy+4y{E+b{v(esw4^romO$f+-Zc@C>osx!Pb{ zH`MSrTyZS`F@E7C5}}8OH*Ss(fN%fexUMmH=)iSzgmN|4G}W}$)LB+NLGGYQ0?SdT z;R>O-ME&^j2WQ&yUX(mJefK?ljIP~%ge`YE zXZkCruikiYdn?aqM%TFbCu4F!cnx6gau2(DOKXOj@Yk#Gv zE%5Aucz;eUe!3UVO7BP5i+Nm*E3hB0!mIIG9K#H{vGTg4g3V+>Sf&Cftp; z;A?OXz7g-hJMk`j6At5kJb*{=AlC72JdXF_Z{vgb5WWph;v@KWd?!AN@5Wp4HheAK zfUo#JR3CyG{x?ud0|XQR000O8OlD72YH(wJ;|Kr%@C=tAjRqH&pt=VHmvCbU1eZ>3 z2n>IJY!lZVzw=$}yTne;K8KKygiGweASAvJ7ZTD$kNhN1l0ZU6`QQcbx42 zl6qIT?B7!d_lx{g7isA5C>7>t#T)T6X86|{669dt;8O>Na~6?^Y|fpn@g zshXv)?|Yy3d7t-v-}im?x3P6;8HU;K);534UpzmytOCREzhD?v#%f}BPz$KqU_cPn zXdtGEA}PsIj8-*eP!dEfY7J>(FeauYnb8>Z?Lk2Zj1w%%fJIQ)kP?XmWe5kgs3-)2 zT5mL^Cm4>3wn0(rR-z(ORKrp<7NvW|SYR+1j*C<<95xoV_b6H<7z>D+rf614350*8 zZfg?DP&G-8O$bkrLNP)X*QFR@DLqP92-~4}zZi-If~p!NHARV$J(4Wg2E+|fMT?~v zy6H)!P@fbQG*Pxl3K`p=id3ji3=Jspn9UTiidr}*_u9m;7!lL`L8g2ecTInpudIYGNlzvZ24|2-IT#V`iYE0+axfeijLK$q z<1r~5wGD=%2+Qb+%b}R0$bnEe7>|nC->?LvKzVCaiEAOz3Ud$RO@qsb@FY-r>J&l5 zFj9qQ&0xvT5opt(rQ(dvSX_k+&e<6T5F}{A2%WPr7$8_c5EwkHoa{Dfp_VfEUterxXN%$17Tr76GQ03EnFMENguJeQe8YgYzMrP z1RghFy@2oo577(bB=uu9tP6j|>-WHrout#RpR@5QV!*`{Hf9rWvrf03AUQ_?3>f%X zkUE*r$86j%oL+f|*#9QMX^;d+_YlJaC!s&EaU;O%L8|U@V1WP$-m4`Uc8KB7IK?1> z+aQqTpot?=z7It3~XaY>ryNZ{vm$_4k83-EtLg~Q3tXY1N4 zFV)SvRL9%ZF1QOfsPlq$KPayUo(@0={yXgqhcyUIJj@M%+N_N`mPFbJxUK3>@v-D< zmq~CxCa8#jKdAL`1gK|qDifx{&1_<7y%<^RWmuSSqJbrdhNeyMizHa57c>n+iA*Q~ zI#?sGIyDJqtkS^{`yGESn6O%cVU0~@p-pxeo2)N~IUnKy1YyFALoY{p^rM{voMMXM zRG1;ZL4|V!G@#;?(|?Ht8o}a}3$6pxL%}d7!~EoPIOVP)99dZ)b*f`hD(A?=sZ7u` zg1D1F(=qhSs&ue0knFUSb56oj?3nCH^?;^xXlQa3>zI-S4mf{uQoW9BoXXaz97ro5 zh{uJNfKzi&rBOKy$2WKoHU_aN1~!G^c~q<(7*I9}ELX>1Ttyg8gQlAr94g*C2ta8+$4`*r}E7(;Dw>4J_*BVTp@}xLP*{xssIkNN03(tJ@4 zm-Bjb%0uz+goyT-)`5O(njPStcKGvQ0kX%`(?T z{3#Roz6pGOLOf-N->@F#1OsNgMdtWa)5pvhGfdnDjWT`GTm$)*#<+}ha?STrGnR1; z9RIvy#WR0W4CTKO+E?rMio=WL3p}&UvGw~i!K${qbUVK;g^dKET4Z|6%EuWq|ob*8DerEg`y)wRt( zsky&onfsq3OWXck{?;1LyK6HRo;*^x%Kq|0`u>`#uIbIEPwVghxH>oU;O<{FjHJ9W zqkYEhm51ND**WWj6%~msr~Fl&LGSEGtM~l%xB07!?gi|fq1UZ1ES)v?L-~7$zN=J<>?!Nt3L8ayLV&Q zGfHUU*-gy(^a*v8Z~AWYd`PpVT_&HNAB%r!@TqPIBc#tFU-E7aSJpiDNliZ@(A{ERa8QE(^af49sPPWW7*3OVWknMM>ou{*ARzE-ZB-EO@2_i? zd*Ij)o~(=7vnXsb1~A*)(mAD-rLzrGQBmg+MYI$F%a)ZuR1L0!t%wp)rLc%vMkRkF zMx%&~3j)UWKomA@0n~N{lKqG=CJkVfzCI-)`n0$#i<)npq7C?rcBg#&5$KM?mdpnw z1s~K%!oH{$8ds?Pb_$Xl3de=VaXj^{RE+GJ9o7KW_`ftz1NvkGzHjKSOJRH25A#~z z-7CSz;Vo_OM9SCi-8WjDeu1~AbnSoH|2$r{b_Z2pwT^Zd9bZ(prM=Q|rUvgwPrQ9? zW9$A~Kc@#T9=%nz;N=JL!kZ@=PnPcL|7xhlxvqHgPVa{lwsP|;-rsN8ckt9Z1@)b| z{tcsFoCpt%CEoX2w?~)@dv|>Ki)&l+j~-ssI%h@w@~bbLoO@;TlMOX@7Y=_3Gn)_R zoV_W0dO}?}jeK}K@o3lY3hz9$9`BYugS9Wou$RORU{5}Cpm|WSxgOFknxXUPe0nO) z(O$ZUoRLFQA+0Mf4K7lU_xypl8$NbTK`PE}=_lAI<;2 zvWsE=0Z>Z=1QY-O00;m~W={)Mfhp|>5Gw!xNJN)lcL*qdd{|p>8%K7V+N$;CvD3Xy?!kHT+imEBu=u* zW)nxrW`A9&+JEOGRr!l6RmoRARH<_1H|KWG0Ho}gRRp?k_kHxe=ia`JGw049NhBt$ zvB}eCPX|wb-kV6M|CLB2{yW`r=ImCv*;*=B>$ZF4Wv8Xo8}&d5T5U)1nt`uW9lxUb z3tlTI)3CqU@|NmVr{(umT8`%S2j%&?>y({V%WDn9XA;xF&UD#sHR_F;Z?qei8s2iFY&V6hy4M(pX+ml* zXWha->1Y+l_rXdWzP4yznRB4l#Cs70p{*lzEM~^&b-}rH!N>%H>(tX9N2x4pCz8VLAvUdZ(ALR2b|X*ppkPq zXxYNi{8U6kP}VQfw3mCOx9tO>{ag&Oq-f++0>R&rPP62^YX^&Vb0F}VW!G79Tp+vY zvv{4^uG<~ZQcph5z0Pe*IhQMLyXx>QO0`}ImU|&Rn~u%zJKCrCoxtZ_!zQ zoO4?0yc1Lw%9orgem@q)8l#ajS8pi%qvBPaBtSutR4WTkFE}lyTo;>C4X**Upd&9BYC@HNJPm5uZ{wV_rN7~E$kwYWU+1{*??ju$iOEAi zWujN0AQl$+54lte7W#!hKvqyD{QmhCEF-g+-=4#3CpaDho)yWAkjVNk6mTkQrv2n9Ya7-|G?&>7W98fbO{*8A{AaHZ)C%(dZv_b%!Y zjCPA>B!b$!!llJ%-rRw;$nn0K>&@BjV22!MwJsLQ6&t3KtbxuJ?wM|W5ZdC*i;4Y_ zNp2wHOft44y;hZcr$y(AfQ@)n=n!;LZT+OIubXil{p|*FzTR-EeNLrZX)KY?2_q^$ zxd@*?ncu3A$$p9)8b?~C`+^{UQ}G#hiRZa2_HtiPU&Qxj*Qwc+D;?)=jtWye-x3$x zsH%%)RZ!{fk|DWYPy?r`#l?ve^orN;JtRylP2=ek&*YZ9Y%I6xK~w-c0O-;-0pT4o zodFW(>ot| zy6dM_RiF<=oT~gL!f`Z~QNW@rp6W}r?pJ_$x|VRGf-=xuBO_Alu0db#_!S&fP&Tbw zRb0=m%1eHO-&8nKD((VWa7WU0EDreH$Ra7Nr#UV^YiUS zzL4LU-v9y7-Ae94VdTjFyLJR?NAhgG?YeZBfsMf3lfNB%*xnV{Q}=e~Z-f4Z4aulO z*_Gc|A4iU^+tfE_SJ5nG^4(${9q35DPZWqBSu5nX!gDHW_KJtJ9vVL?f}W64TrDG5hs+x4%EA#*G0?%wS4};fPU;CuHY`P6)f1SRx?a#p%1t?)Fr?{lwkLf)Aew#F>t&ALgm(*uRwTyfp{>?Etq0k0J4sR)@wr`=N84J1J z5=qX2I;ez9R|?v2JqJgf(gvlkFXo1|w5)C&)zZdELrV|Mn*Uk&SL^rEH)BRZ=4(Tz zzL&o3%(h{F_8rYm$k@H2Zr5~m$M@>a@6}!3OSkk{liZNzE>(BSks7A!Yv!1t%bdK2 zf2HN_9*GUsOE`{|E3FpvkPRw&elrYC>xRVAZWf=$#gdg(EF(wTl+vncM%&zsBC$;P z-Gj2kwuCI*lUDa8B({}&&x~ZEX-$1&(8ye&kWGDmEAz=($TEEKJA+2i;w>y@n7IZ4 zLm}G&S^IT~Z5!20`J}9w@Q${#pzW}%T9h|tQO9Xt_PEOq0C2j$6 z7blv!N#+o7D~P)}@s5z~fmaTi65E$5n1hH&1_8vLp{!-dmO2b~?ghrav2q-B>M(fs zCJWzKnJh>lGqHFl@{mxe9u`a^px@DD8q9%z1hzZCHmqf3^)L^5j#7{9OX}ZR3K+7? zT!C-0e3HYYAhBG??u2U1nvB@3OU*>fH1f)02xf}8x1{4o} zhU_k6HVhd~Sp}%dW(d4;$)Z@?t>{{joRGuhASVBONIOIoi|ycPm7KhwvP;CRXP|ynrUI%udHXUU;8-x#!;8^6tqaiCInxh~U2gvCq ziakm=JBBhjDk?A)wPQSg6-eF%L+?qNEIq0nM^QY^i(;HQ$Kj;i+OeBjNn)sfCa~Z* z>_QITBj1dx%`x37z@UP^bCv;l6VSbXC%!Y-{d8$iWFG*sPFuMw`KBaWSy*S`Vz@Y}Js`s; zMN1j)YMIuqOiSzmPAd``Za)&C=LsBt zFJx7)zqhG9g0vY6*%S;u1B1s?31H_z@NDhX^C`q;B4iI?@j)z3#;19h)?sTc5vh6v z!5QMl!-hv;!+2z}`mnJ15!if|Y)1Y)G&HL|sy(Ql)uz;kwKEbsLp6pf>|@Mi+hEWX zv3ASYImF@jymXzT4Y1^Y!BySl9MfDE;sV_YMU5AnY0eN8n`u#O9)bY`$A?4qIL>pf zDX~Yirr88GDjDmEoHbsuiW63L#*(XObSU*qk$UF|BI-2ve--m5xbG)WSKyl&;d~k- z*miyp7*n)neEIE6xc1}*s@=QUxPgusxX*nn2`2vEwb69%}HMdlRz19o`2bp$u zR$`Bl#kA{1`22By?uiRP$FBH(&dKD-tRd{UK(16Mg{%zv5*()twhC1{1u2x{t`o9h z)VY%OsB9I{`Z4$ieWLm-?$XCoZ~(uoLS`fUGorURZ``Dc8nQXiUcgarWIA}5gA!Zd zp_kN2?0j5HcS1^qDi09`c_a7PF|U zWi=dm56*d~L1S~J7h8}!Px3PPRLB+}_5#E{EyRYb4u-wRh3EKP^z2dX8Hqg;*>qFk zY|lboP88bbz(Cl2K4cdm$%dpC229=rvrE98xLpt8fYd8+>`?u3VfP&!Pt*iX7dcL4 zj#EmHMSx*{9}fRw$QqFCApI`ftCfuuB9*0n<+Ndd&BLki$$cw}~ z2Mj}4xum^FeFSVr3cLil^Pt)T6uC^Tzzu2LW{4jdG8eJ{3^fcZolw^-0&fO~YGYd# zYt@h~VOt&cI^5Q%y{b(M`)adf6cCjWMPxY%@f-tx1jzkRc$pN!mGdFH0!bG!ti@h^ z8S%++GhZhEcCXKuc~N}@%XbcI3$nTx18EnyUX6gXkT!AhddOab+y)32#mPhVIxgdX z;ZcGCZ@`-`b=zFmxOqUkq)efW%JK{|wI%Rg;=;S)2=qez8v|Zx|?ezW>%DXAYd7-{WJ(8K2RCx71 z2zo-4omF1JcMIb#hwMF=a~U`FmDKF?pfZ@T#&cE{-R6WP&!FCf>}T-6T{oz#y-y=? zE#HsMv#y2)j6tT~K7=dBB znRo;~<4-8zKARr?r0ZL#>B8TEB?3uKYkN zYSu5H^-T=lENO3T(E3)$zWiyeU;a>QzN7WaSnFFq(E4`BLTG&(5WD&#qUnL6UIj9K zNq4)>cJkj>)V4xDuuM*|!-nxy7KC?7li6tat{74>U+w(*qF&4JXEPu%L6!G^SJ3xP z$o>GTS228dUKNSFNF8(@+r%itf2p_Vl250{>z&byw zy@wL>UZ=#o$4kuWP3@Y*t^w?SNRV-BCQCd4y6j-JiQ@F<3Yu^6%KD04S;}p%EPi3G z(%dQqtFuUtzo4HBW@F>z$&8G~C;=Ofz>vSZtxWz^R3_hpja0mT7P4Q#pYNl1z5k<+ z_zz&njrEWC4D89qK7H&HeP*d+FG$o>IKp8(~b-1bxp**}U0)2BcBU;@Xdyi@!w2g1fj z+viyQEM)%#(Vt@Yc}e?!qImmV@w@INM+hs4?)-OD^w-24{7z;PUD+}D{{R30|Nneg z30zF;`#;l}>KGlSW>S`FG()4P(V~r<-l<}Y(MTtU&d4m?U6$(bMQp5;sq>L>Ha`_7S zijdM3ri#FWIKI1oNJEq=1$LFpT`CfBeyt?kNfGkPo)j@+v`ClR9|<*Z&rR%O6k0^eL2TM<$aYy-h%Z3!i2WFp}B68ey8 zDV>DhSF|M(^jAm?7E<~u_aH%??(MMs?p|D{dzK{n>&*Rs9SW}UrC=1h%Cgi|aCIlJ zNk6*^s)C*1%r)eU1-*+D*mNdcrpG|icR@76zDIK%MFWoVZ4-qGRTww8FvQ^Y4K56s zl;J}pHjJ3mWavE#9<`gL{sH?e*xzGI@3qkpN*I#Q6)cY{m;@CJ70X4$S;+${|1JGq zmdgMCOP~LLzoj4kz4ZAAkP_lnlOdh&H79>gAM;bClUeE}xSu59Q7IPmK2op?41!Pl zbQBUs#AitHTp7Ker3#>4))2ccAMp~Zw*{R_T0pm9gFk*_9p1Myu>tcvt5 zw~^1acqxQwsd_;9Z5RzVhCi9HMYV8+mIy>G8BLFcoE~PWGKeSzVolRw6uLh;lBMox z3uilj(#J?AAjt@lfDYXU;N_4~TkH!QOP0Ei1kNOV)BsL2eZ-nh=TYg5-~i_;I^Pw@ zO_r*J9Gwt0sE$!8R9q&4Dv!V?=m0uFGItr*e{LeKt$ko~Rp+^_MnR>cD%PNp#5K1R zs>)5NYA|t1s1PD3Qq`(Q64BwUtcI)n6}Mgo+kkZy~pV9$iQaE{HhLkZJ>y~??~r=lF9T1QUV8%5sn~*BxGG7Fhnn=*XR@iLaqfU zoaQ3B0NYROM|<7Q`QaeikPR z2}Y0wD<5H{t0v_LORAh-XRKAFxxrGOz-~6U@Q;oJ&o7qxtW8i(-@Qzf5FmoW=Cf1> zB*PrS&10#5(ME_eA4SP+WTa$BG%_xRyndk+lquleWT~&9c^)(i)EkbazCpJ+!->7k zo!DE}bRmx_1bf^-yv0o-bmZiJ1n3RrrV;$$!KpA#ri-{zbb=sHnJ;<$M5fK~tSCf~lSlUKU$`()X7ghp34WO8^QL`!;xto_AQe z76fz^vT#?2fE34oTiSp)oDtj*seV%6GLuZ-BPFLfyB?GWc+>@?t`2m68R<%jr0|rw zN^Rg-D%~&Trl}3`=04z-+QK4i^8By33?PsP_rL%;{^hJ(0G`|gC+~l6HCEmgd>Mg8 z6z2Gy9JDrSYcZTl38c7!mFvLvLTI|mZW1A?yqpF-ZjQ*i0p|wQso|ux&&?6x^X3cvJ&wTGYJ{na)0Lgnh_X6H5T#T>yN< z=#eY|c071gvq}m+Jw{G)3lhqcM?GQXVpu7Iygk)Y&;>l|84MMFklX{^76^~64YqHOMpkcMRQLCrR~8-F9o#--r3S`5W;(wN&tjf zK=|N5caS>Bw3yFLss!8*pSgbcWKDnMQ6E)Ke1HS=sq+nx0N@|g!9O#C2WUSWr?H^e zVN1V9w*F=124JfWUjJWo6x=nGX5_4l4PLmG=U?1|d%lts&>J^4{?Cp@JvZ5KdG;-!lROICiYO4|InvPYzp+K%o&7 z_~`JE++31^*cgo%u)y`Wv9@Fx`~|x+zrRlc!GNpIdJ6n*I_XlNf)x(CpCQMpYV}>ij$^3iH}@WQ+| z&KZG!`6<{>r2mVW&NPfO6KEEeck)Q?2Q*tvCjet2d7zqaK^Pxl&c!_PXP(;LaLmU5 z#j53DA?AMr`dy7*jPVh_L`@!#<;aKCYB^j({HQOV_)*^tYIe6`e!H5j-9UTP^pn-{ zzaL{B20DcKG@x`GBeHuE^Ig>BD6VsA{&&`Y0`WO&@?6Yc1iFOxUIw~?eYgg6U5)<- z>*oRG6F=%+pjNM2YOy#FKWg0>FRI0DwfvX<#B1PORbak~_|gAJ#|Y~q%zB(_bao!8 z=`^e9JXVYA8I~jdIpWd{`SdxcDm(;3(n`g zTsl?+D;F+U@R(&o5)AlP>z6kaF16Y$q3(NFG}p}U6=vt1zHRloeAo7i7o2XM9$66E zXK3YwW{LOyQx-wyTWmzV2N#%@>n{$Iuf5?Sc4G}S%lDXWNS$(V=&93&+U3uGyZQEB zbNQIKea>#EMFUgrnAS&9Q*W@X9t>=d2XG*Inh~2=dhf|Xrk1WieNAD+|u8%lG&EU%eD^g+V%L|V_k9s zgCcf}^A6bAZ}im7|6UwuCJsK`rM=XDiO<{wqx*$EIva<1r<&$}Oj_fzRkCf}%gOv& zSLx@v8kcMR4R@WG{O)9#)j_Y-zkUwT7Caqj^v-N${j0Ydw!XAmb)fRm>Y+#bjdYxJ zbJY#=;>i1}&0b9@$gFxcd8)K#I?r*#Bh9@YA+5hihtFT2cX)5#-odWbP0=GW$4}ar zJKt&Yp7>qO7f0@YNlWz@U1r9Zht8jAxFdPJVYK&&jZZ=iEmpd&y)>@J?rZx!x1Gw4 zc*uK_U-YN>nxNc=XQrk2-+Gwh^>E4GdE&*sQO@<*L3wS5%!9s-m~z5AX+}|i-QMW< zSWB}8mxz8ZF7oc)pEGOJjYeO0mtFkik)=(QK{@qtS`MFo-&B0-Wm>0^W*1cw_<8A_ zaNXvqV=IQHwMSn{NczRq*{$r$0a@>&<+&*tS%YU0VKvKt@$cyMcfh={CtczSEiY^3 zZA&!_Gi=_LyFYuS-ouXYAzR*tD-u62zsE^FE^o<73(mV&`%6Mw#jn-RR#dfLdq2}a zR=jt&zHVQCrd+?t!Sr}~nYXF^+D${f2i~hV{lX^0Ax^UHQnW#=(}a`0c7+kv+r{3m z<&!*3dz&h92E~RMuPN!e^g-6gimpqgd*@a8_UpKH%g=XzS-4Tjmi-ahdgHhEjoDoj z^=iu9w%xV!UOSc~o_!kdpl|id@CdtxRdZVMHdTIqEIHV8pl%^s>@Uq(<-I}vsCR5a z@v#{3@iIFDNo4bxSu1_a2i0Wmn{uypuR-+SMq}wPw-x&rX)I03n$lD=eRHOx#>cm< ztb=!T>qfT%ru=F2POBFuDkBD5lV6#|<|pP@%@!$U_o_N?sJ%;jm2~~E`bfviPx~JI zwDm84jXv2MNWb#sJBw}O$4L6kjb>AHe|1dwc26!Ue_6VzewI(>*)WPT%e!X(vsaZQD!SmJrXT zcv|gwvZ$pYw0v;CFLPI%)9-$#m+y9qY2VgAx&9zA?@!nH_YU+;3URluZuvbR_i$`~ z>Gic$;^)?Ks{}5+dCKbFldiuxZA$vBaK3X^}pkt5uD~ol5HNOt& zR@+jdE1pnjSg`bs$x+3FgJm_-F3kv*`3}GFe6e<6P(hc~dv+bUIek0N-_&f?(rY#L zgOp)en2Mgb_8jm$3@75Uy zKUAJScE+wbEbX>(*S4d92Pbd4b1r=A4RTD0RkY{7tJ1a%lm|Lro7MHg<)+f4p{YJc zvj09~V$zXub6)X;9m-Y1NAz@mcrojP(VjnIy_=o9oouqcdG66|NEX?;j~|q!^k3(2 zuA8~u^tT`VDcr}mct>D9-x zwoaQp^|}2(zsr}tOW(|xkis8DebX;Gp@{=dBxs5 z;a7Ll*_-#Ze*0^OQ}gdhQ?_&;-eZ8>lQ;d1o4UkXulPDQZ*Z{o*z2bKW|&vB76pou z3zVNOEQ^s5y5cI#JfJ@@HQ%M?DfR~mPU0ZDQxc2eTF()^d#Fi_DoSWV>>A}B8*MA#6 zxx+PqAjU-nqHnB3xO)!`|x{7ts{qj7Pqx*9< z=JPR+d`I`~OybA=`!v?M0(1)FpnH1;)<<{y<5=e`&@sFhVI0D8wC^C6p8!h1a`auX z7vmt^B+R3A7UvCpr|iT$TDQhLl5N5KHlWRzN6$^z)<#T-Uk|hvg^i*P7^MN9S17RP5(?pb3QPj*a@<6YHaI>QR_?BUIlZh<61V zj`z9%4Z}S8HXll;{yAbo`Zk2>y9D`Z0W=u%=>HJRu|Md48_5LkMc@8fn5T%&Zv~LK z#>S$&9aw?Bmicovf(UX!OeFW|94RCwYVBFpHu}EBo#S7;KBk`S8HNGu#0RR83lW$Cw1sKI&2=6?ls9Bp8xk;cMbzTt^{UBDL<6tUgI+Gc2 zxz~K*a_{xMUX}b5wD?nq8Kne-B0*zH5QKiHL?jE93y~!=`)ARbE0rxNF=simKDM=< z?d&;!AI|gJo)5=iw_J`)%kHTfJ7!txW9gmF@_b zZl~R6d7XB*>G+Fada~RBr|ULl?th|W-#oYZy#XuBm18XaH%6w<=l|z{TQ1#aZAo{U zneM!2UDhm@<<3rWJYyP$QD2a17$LFSs;Yy33&T5Sj~SJ*yXNJPm`x?4r`T*kM|8{5 z#DY}|#=f5r@?>~lcmMVkHRlduOIOpmnB>aKfyjZ@C2h0Hvac5H9p+R+u}!v#Mm|?f&N{H`Om)F>hVc+Me>Z_!Gf@ z3wa4YrW84+tN#8Y1I{b0zO<=fLoIzb%1%ZO4%u29=CENrZhBmX5!z_{Jt0+pYT8Y6 zHy%JVVlW3YF%R)@!9+H4;6^Sy@WR3-6rmU;D8*~og9?;m7j|GLDp7;I*oRuw;Y~E4 z5eLwWchHJ99L9V203A4rPJE1RoI($Og6PF3IE^zHz*&5O^Y{+mV-P>#XI#W3T*eT7 z!7zTqRgB;U4Tds|HiCEZE{@??hI1Upa{?#wUQS{JALL|4@*zfZ8mDsx?TleO=W`Js z;bTl@3YT#?Q@NTe`4rbPohGyCW-dMS($CEdFrNi{frTt)8F#Xrud;%#vyxSRtmYf6 z;a=`zE$i68Mjm7{TiMP-?BG#$@)*1LA&>JTcJm~I>|rna`6*BHGoIl9&+DMibas+C%;HCnHym97kbWy+x}xwJv1-15n<&Dy5zDpZk*^`c%MP90O1j;mWI)T5v(#0|XQR000O8OlD72(^Bt86bAqRWC{QR034U`xCIoK zpt=VHe`IeiVr5}%rB;7z-1HUy`o5R5ot{(Q+07+s+PJ-Ip-Yx?N!B*>mvfgiE&X*` zLf7%@a(8x8CwJ$==S$Neq%H*(bppyZ7~UGF)Y6Gcw9Udm)!2v_8yk$0Wdn6ZT`@g;(p~|~ro$Y(ut=l&tMD-wq zB)_SpQ)aSY4kcB?tLJr#EttlTu4-n{moc@Jr7f9vDO#ZWQ>vO=aPSy|9@X$?j9f02 zSCc8Tzv%jwEInJ~h#_eiNh?(xEVB7jPAe8t8Lh5gvlcOm$@G!r;*$4}mMt)<8{*T< ze{3q>?@w7qj^JeVqU9$yG9gAUal=K;qTLW$)%sGUtW}|zreRjjlgSvSwiNcuXvJdE zCF}1q%v{P!I(|N#V5fcawxzk$k+gP$Q(z%<(Xu3GsHLoy)boADQj$#BJZ`8OLbxAl z%cJ@0S&&sA48_~LC%BrYBtOq9*sF9Qe{4%Mj}$B@UOdVpm`OY@^Jj2KGI0gmQMi}dy1AW+OveVD9j@%I1ZI?@J{(<2c$(*goqNx_8e?WwiLrkq($)v;3ZQR zTQ$tfl9Qw$P?I(TC9YhSpr-tZe?-8m#2pIZRz>KrnE;^ykP(N7fC(j=2@*CPpa?*x z@jbD!8mg#tgah7y7=S3zD|6LtTmat+BE>KgHVa%Jq*R7D-u#%F1@iNb%V=p5LIYl# zsivi=HZBMu!Nri^V#r(*$G3V2jaCc?lAstqm=Gu?0Gr*0DJBR2WCTtjf5@herx=l! z_)hE*lrA3IOwB%NmSUFKOf4+0kSV6xFUtX^;6lV^>S$@MjjP97Fjo(!%GJqSh+;y7 zM$RMW`S;*lnH!l#M{gYC>SJcGbwr$(C?P=TA z*S2lj?rBfkp0;h!I77fQ>`qbQCj^n;Y63=Xy4;?J6o-?wL@6;Ce&78-B9>5Dca9;5MY?M{8G z5>IOKU-s|4Uy8GQqX<3T{^nmZgtMs{hMB8(z7NHqhB5ZAc=mW+T=xvY*Ld9cfVZ#4 zMpnk|)~W*`zl+4le0ftzi}G!&CqK&3KIi+_R@g^I9Y?FtY z{w&+)9|kIs|0ilu*Df6uVTT3+8iN0iF%7`X)WPIGjkH$N&k=VCxo?qI`^9ve?+g!c zd|*3H*uSbmLe9km&6tMAnSiLuD<`v_XtuQ`pt~H|m5dLQYkn`hkb+Q_u>i{AZbgwW zlR`#r79b)`-Li<01P4kjhm9jp4o(3-7=pkg-=)aIN%7+vR%yQ6-gWcx{N?Td$Zs)d zf4i9En)z|nd|8jRsin`wJE_{^x?YD7#h1ga>}F0>LFXs6b=b}-(a0uDZ!D8 zE5W@b5@il$i+mK@;UeMcH}!}M2-Ty>olc|k&|sxs)cj;taMa8 zez=K^KG4e%I$BA$hss~gQ-Z-AyHKtJlY|d zfVHH4e{M)Qy4UK$Yyv;n+F#Pi7Q(e20+dp!@xQ=`g=oW8ePa5=G{o;YrYHRK22lgg z2!Y+_Ziodk5IOe=d{>H0Aa__#5F&qZQ!cd?Z{m>6VA08Ru#4}I07T*3IBAwFXccfF zpwb@|lsu)>Xw=o}y&h^-8^PU6tUhFGx}xNvgj5p7z&7L<`a;0ONbQP3S`w9#63<#YfkuV;fp@SK7KMKX4w_WQorTz`zDo+CvhCqK6=l5TM(%sK+o@J3vH)L0|)4 zeIgEz?8if+s6(-(+ej^=VRsWKGBL>sDL0H$B?Yc1zQOSr0UGPZ>@}?@26}U6^$-v! zOcg;<3|Ehu%p%N8fpaSPa(h}h)t5e6g>y<5wQU$9F~Y66dv){JA(vzQliuluy~P4@(_gIi%ujVrvX(%*hVdyC zcRd$Vw<0vCS?N=Qa=~>IBi$e#Y4k~3Lhz$WS1>P}a`rKls9^w_h%W-S1a1gCNVq$0 z=JV)*$ujTS;}Rx;_V_KbSe7U?&H-2|HQ2&}5#YSf2%LzYJ8b3nXr6!}Y2j1vYRn?{ zVb*E0txXpWCH1$zfol?v9|FaLOYHd0^c_ah&`aAOH%<_!$vUskn;_fS zzGp()!PRwUym|Ys`8_I*fs31ItFLzkr1!JFUC{I9 z7+}Hi#UZ0%kKN%_^YRjBiP=nO&boIPpBIzeuu#kAvv|W#5zy^2i^-U$d-v}?w5`bNA@%g+S|sOd%E`v} zcK@{5g~Q9P;dZP#9(&aHaU@)Sjgm4xd9ZbRnGegp^gM{{P^!M9Qh`CeEgzu;-DIGyMMydIvODR%%b->@Ed_YR+quVb{M0-hz6&uNYA0EaB- z?u@sS)oet(j)%|c!@tQpUo-7@gS-SC9~HV?<=^3$9pd4A`KtvMT3;MoZrO%?9OW~u zM70Wj+79f~7ljGM&He_LMxQqHlK~d~nrUu-B4qdGLNZMt@=5Uk(+AUlV}{T3Em!Ba zLCpM9JToA^intO=wjLw2Uoe#a0=?3PkDTqe%5kl&y9yD|fv4U|u^Ff1<0zI-!i=t- zWly{*j66dl&0`+)wi=sE)JN}&FwKb^v*3<3ey```u{@lO~{cwv#PVbxfuEt(n` zD05jsbu$T<8KJ1DP&7A^J$GBB4>TM?bD!N0*6W3E8^88O>~zF^nQkD? zeI$efip>~ZM_PlZja#10V4u6#--r&wJAXEAfe41MYxd}t@90+tP(4u$LpPit<94YG z;!L>WGh6nApSRc(Zk}Wtb+*zBt#AbMD~B+Mf$%1EFvIA%ga@DC39sl zxz=V+GVcqFqf5xRnRzS?gvH2{!+k0aSX2rs(d=vuV=ReeoZ~|SqZtA(tv53v!Q4t3 zS7wpojLk}xwZx7^8qsCl^>~hgc=Ay$%gl0Jj)I$i`m?v%MmOPGIp5`}_hrjr=i0B= zWVlKu+RV71uFzfE&Kw~B$9NpDVBDDFRu;3YM3W)s1{v$hg)VPiqzkXhMliifBD9J! zF4swvDdQ?hDnXM=sDND~I&Wu<-!>mF8gXGE1rcN!%b(`LCDF?J;p1`jA8=96w(02hMn5^ZEC zM*1Bq!6o`(g%LFzgiM+_!>Q7!)V-x+zyNnSA!c$GBuBD}6C19gYd>k+pS;y5tR2!C zM$+$Du{g%6QYkjUj0Mh}dH&Kunz)*xp`y{g0e8Pi%s@-NY-<+z<(CATo9haO|X zH0IUr%k~T*1IvNXv-}bJZc1n(W`-e8^dJ5DI>H^-76?F0btM84t#mKqXwZ-b7f~V; zMX}%ChNKs*g=(d1F1yg+He8(j;9cZosBR@_r3gb%@E#;2iNc@Ko)P#;>I8Q8iU}v= zY(v6Mwh4SB(ZGt#4AU$C;pGkMqcR^u?22ILu7fA^*;Y6j58_KY19m2CX zC4{WJc?Bq3W}8JIw*6(8NwN=#0&n(wmC!eOCOn5~*DC*E~5qtx_DK}R`d zBRfRWSd@~eFw_|C!uk{>6< z_Lo31QgX1ZPEOazvTY}*2q#=gjzj`NSW+!%4(qrQGikRLSkW{0xUi=R48u_z+olMx)=_l z*Z`nX=ol6yXF5ep1HOkF#Bz?ZKRg1;uC}Ac}ciFKL zUEXf2H>^3pHTZ*grD@#P6jX}xPhj?jrD``nO&dWnFIBangUo$p+EngN}F-D!7 z?Jh$L5q(8r^)}De4(=Di?D#Kh_~95~R0N=JC0dO|1yE8oqM_}LBE1V<#6-qJb7-U! zN~25L=gZNqBLDCJo*c@esVuXm&nu9rD`Zel&n=rYXLemP_qI!eNQKuVOqSJCcMi5q z#l@j-`pnSSuWDwuWHC^Gcbbn+_ji4_N;)!7XLsweo;Q={Z48naDk

>r7nv`J>FfStQaJ2I0=m2Y=M#IiaZS7fLQVN6UFf zI-lObJ56%RJ~S^Bq!^pp^=7PTsyMY9^?Ry1)eie>IrHXR!zC$7Uc4p0$^i|5m!?_M zrCh~Nb4tY(3$d|JM>2_*8J`U*CBnM7WfMSVn#`N28SC{+5Vfiy%Le-FnaOAyhsNs3 zTFO(gJH`(SA`O-lxaRckF>caR+%4eLR?F-a_y~&yi>Bo6PZ0N|oS@p)nuSH%@?JJ+ zZli2W@j?cFG1zrwPn78iv;hqFrdHAKxuAXrc?|dy za0OJ+8Ke9U;4AXr z;#9mVY(t=;O&I>NEQJ%gf@K>orgnAwtX37)8m||HC>-f37z!Tnt(PXz6~l)p4Wr%i z9DmfpXQ>~g)|!Y|`U1GPtaI7$xyB&D>5K=dXweF7|4vX_t2Hhf?MU(MPGE1Kh>bSnqh5*c053} zrcSBb!kxuZCFVh=CW9B9vWJqit5wrqw`ZS6#W)c%aItrEDh@!{uuf5dW~OwZ`E|G& zo|?FJy$ocvf7dHBc7tBNXsg?XTXD(kgG@?$MeAv;%(kA9XZC@WWbMXBK!6WzbzMs*S zTZ0A_uR7%p1s4#XxVkIq(_!XZ4~FrcUW`JzGWnawf&)XDZ8WS4&k;FO{`jpVqN< zY5DtwPmj*CPuqA#p$mk#GI)h8s?VSg>cwySYldwbhiU8F zC7xp#{cB#VD9~Sc8KjB4o7wj2{Ez3p20eME#$LyG8Z%=ym`#;j8(vuJfQ@0RO6YU- z{#7`Ps-HpWg#PK0Tf6)Vx7&2EP^K;T(OR+cK@DIx^BK{!6M8R8t{hmOSdT(idau~Y zV(_<(=>gL%lhbeR7IoJ^I&E;vsNYr*s8bG2OMlhdvum(Nu$k=3>N==}G_aqr5?1Mw zYYXWQ8I?}&lOmylC9bn<=}B18uSvPa?vNWavo94A+Jk-F3s-ba7q<=*3^PeD2y|mv zG>ri+YWjA!S{;!Tx{}YtF(}!S2X2_!k&tBuwby%+1o8BYEWf=uQy~df^UEnhSwH^{ zacf)#sj^e(BBJsjJ$i*=gzOST(D`U(G7d<3&~Xr2-s^F$K_E#A>rF=f`$B_zRV~;g zYUPdxt!_q4gZnmvCrwmB)Eqj1N--&m5=8>~cftY|B4m>lpJ_cTwe0n#nAA5r6-B9V z$=oFiWy`Hy9$w#&`ZS!w2y+!Y+GwQd23Ais&&>?L_l{_?DH=m5qJ?JZGMXZ?jZGC9 z<;x!?j2JY4Z7{NH;MJg&=*Klv{ZMqRo7|0(8XPjE2%mHzyEjE6ll{i@>nDwysAd55 z=#IXWhjg545{_Hp1cu1}9CTqA*rZBl>$@)8YCANZxe|rX6*1%fpwX?0m1{JQ%!Xi9 zwdz<6K(}`OER@%zXsL21rt~z%uXf;{-DmSM z+LcKrM+(61R@v$-)};t(A2yZtTrLKDY^{ZzsCyIgBn4d}dt6h*8I!Apvz*UW-pwzJ zjlf!{9LB(3)jTB0J)l8oj9AIfyt%P0Yt$<`|=6CM|Qrk&h*wxIaT6H^SI^fKxB7p*(2ZTQai=<8AZJOQsu`CVC8>t$kA#a*qQe4iln(F`xJOydmRTO|zP&*QDB8gMS;&pri)`L&+5Atx@o{%~QQZ z1Gl5IcgD^JkO}VlcI$tw9gFlldn2EKa&5LBdpF`g!72KXwSf-8l;H&v@`6q-{M2=gC=i)D(vHkz(db1{;G275*5(Y*aG|b>yK&IXHBU?=i0vJ8 zTq#(rlJm_}H~`I~n8tR@7x$l$y1dA;ZPe1RP?>&IED+C?=Bw=k=E98r7EFmJ|FzbL zm8Sm3i~Dr|Pis8z3?NI^izSQ7w3o}xHVDRtS1mTiIE+JlOWG&_-3@Eg-CzZhraLD$ zltp%kdZPviWE`ZybOc{^1@>vAaj~sHx%boZ56q8bzrZl4ZeS(awXRtMp?K%!?uG@^ zW4ydN$)&sXFk+AT>7nn}$wCc33d*~s1(W-(n{GT&0Nx38^N9QOakhmzUd2GUBj(=2 z<4(-UXgNByn=M>RA#G-bj5|4PSFT76-4wXh+rC!|H|kbj{eH+Q#w>yQokQTY# zwd)=SjEXaiKHau8Cx2CM&};ghcU=@qj(a|ri^4T({Z1u+(!ZbVc;n$^H4zOp_SGaP zDGW22oaDx<3>6etS`0qYZfm`e?&?0v`SyB~>rM=Dc^pjQyXSq@&evekoWbRYQA7W3nEYuj}EmWm$# zH9F$)^K>2m{c^6m(>g_~tEbU?ew%N2##F~CCfFjF|1yI~zSv%GXz_M&?E;txF~obF zZ#Q@yrUdvj9qr?)3%oov$tu!q9{P6~Es6811Fx@&G!4{$k`!`}hY z!_2@pLp*ezRs{GcuKpa?huD10(+M9d2FoG!fNm5HVs1gMWM1nX*N)pOS zpd+KKpdQX#^fAL|EV|f>xwytv`dd?ETNw}(*Y8g;*XKNCi%Y;|gRy{&dA+ZM z>Rg4l^&OCy%OZx2k?q(tM zP^%3`1HKV}vD4>z=i1tHPdUXpjQ>u%NekaK7*Ua1*kWg9(i@X{iq?YMMHR(EKIS=o z7&UvTrgfulfC)oXW)tmZv875D%Vp%~MK*jdsN&CO=dhLhdZ!hcm{V*0gyw;6zK48u zxcmmRZb4KRylP{u7lu})=T?4TX%FM zdm>3t|7J4|rRc8DIfQ;PZ|6_W{-6wP7Je#E{yE2V`8b(}71P4r5|iHZ*G@lwUexs#xtW0jgY%76g}{c6%f$!qtZJz$p`wEWx2HYYS+eAeI@{F` zy}AHv?^}igmA@TP16gw$z;P)QWquprxs-W%tBabS2A;3oSjgz%#>egGe;y6Lt*;+V ziFo;aar!uuDk&jCuWr|GF?-Fg@g;q2Y`6;;r3XFFI!-*IH2*t!pz(2DBx|C&60VT` z<2cTXF<%dL_uKyVXYUOC!6XdZHOr3LcQwNLRXJF)0a}>Nh!tl(#60AdOy`adEu>Ib z5)T@S=~p2x3ie|W;zk2LBXM-DCwA8@48$ExSOaAJo?Ca|7gxxy?#T8#1c_S)2`4lF zDp%agEwI9_sN6o8!X9bP2zHJ*g6b>W;wv8OD~{nluHK*ae=N%bKJzG8^dadeofdTYJ_La0{0N$Hh^{CarT2;fQ0_=NP?0UPRtx40VqQ%-` zv3f$?oBQUpCic=mCB{{UH0`2po>9Y1R2@em_VImYv1k+&Q0$KB`T?2~DcGx6jw_PQ z-0fyX33bPt$Ik4!PPz>T$BV*-;77ewpmyXIFD1_E?X6jgUAJTM;ntx_ApZS1fUenG z$H`i+Aj`uaKN(MFc4+schf;^$y?8;%_LG*^_1hXZu`>U-&4 z9c&`4S{%4C1&8LFemP1cR(>ADfNV|{>H$G$_a2q1Wg2ygiG)a!XJ@LbvTAWb$mu2L zLN%-NYx`k?VQ`$`I9me>IqYN$=mOQA-(d?<7WLvzPJbv?@T2gl=?5ann1`5b(EK%1 z_SS|r8lGu81NRTO6LF}~c_u5BIV~~V78?l$OFXrLD$BZo*z2S^9UDfEyiZ7RXS~-E|03T{PVol>i6SptShi#E`_10@OqcaWQtzpGJ6=*7m>0a{)`8OXD0D}9a9 zBpKfrt_KAj7H>{{V%m&kA(uS}mh$3U4X%Grg!rWF{yig`c1Gnajo;k8Y+LcrTl!_K zu-4#T_l?}{hM3iQ0SImxM4x2Y^J_|#TEuHSkb-$RlciUsZGrztLGUT9gt2p9EuOf| z@?lr6y!*Oz;rb*q_LgO*!-T?!PpZ6q{UlH>Z?#x0=3IxBb?{s}Xl*^Y>swr(*10`* zT2*)XW3v5T^yFVDWlpgjfrbG~^9#~sE%?rb0&4-w)3hwJ0C2d`akBH8W+5#86Pk5p zj?+JwEnC%_f!Z?tfq;+?Bh2A`~4oD24#Anc!*+>p~>JjILOVj}iQ zY{`QF>thiVNKDy?4Uy}($-GV)H~-6P6At0Zxk$q&#nX%Tlk2kK^e^*~SnPJ;1|iZL zf%taK;fYoWOyNe`D7^|A1j^oEgxf7w$-rUI%-E0UAwYx8iR;*5I&+)HdwF^DtoDH5 z#`c`)czs}6keD1VQ$etR=L97K zS%#D?^3b;n-5vfOq4|}!&+0*RusgDKGxT^P7~ap~(~fP@b7L3U#n06jJgY}$3XY6p z_$T{uGXP<9K_Rm-V9Gm1quhhC^Lr-dO&`!613t5BHGVJ3U~FYk@UBwkw0OV)qHAg0 z-J|K+1RFYj>5tJ+z~3~FVt(Rel9*vLh3OJAOkzuioYtu3YS}&5Vgi~-QSu7;yTdly zPwGHpEQTAIA61A?E!5X*PC%vtE>Af0UTTi-8o)-pglta;W67td*)MM^SsKS}PDgQ| zjc3Iy-ZgUa48sc2PT~$2YH9elY!@S+bb*&0GM59EOyQX(&*Q-gj`1qXnqdR6PPkNj zc*jm;?)l>Dg?^t5yniYY1)TRUdkH_3nAEiVwKkg*SR%)05Z(q>mQ8D$4~>2BnhM(l zfJo+2_0ApW&$YtL(ZhfP9aa^1b!yTS|d6wn# z2SytzFtWmpimS3_zwfHiP-mvwS5s)wLS>uf+Kb>ja8k;`ZxkqVLi^OA(uO6UT#vdX zAzjB|=Q5+BQ-gCr;EN)G;!9_o^6yKr~aj-|R{W2m^y;G-e3qajEPLN-kq>Dl}XC#UR8WB;_ zO~~XvPPm-lA%!?wvyMj;`U3h37!_ge!k_vjvSIA#h4A?sjA8Z)*+z@7Im7#$F3`e9 z>l~k~2Tdi#tb&u6O=_kUVS_4MR$6QL;;t6&MESsGs<=s7Y>@Rs5^lTZ>DBD^Sfycj zV@|O0y?r2ZGMITgQi>x2Y;uT9K$FT2`XT0T8LsXb^B8aHfVhPlWt3YkV6;Buc@jUi zJ|6{lf7Nk6WHBt{G?q+Ekq=Es+(ER|HpdBYM_{VSaG>@0E^myI8)JBSS6%P`v)j&W zs`_2Q2Ax5ilP`Zi6#|_Mm4$-Tfiv-86QLK3H!F&S>GiMvYhjuxF`>2wHFx=*zP!kV zZ~Fv$OqKkbqmF=kd>}tSuQ#1iypFX~6@=C*V?#9Y1=)}y7G6-jAHfebn*pe`pfej| z5X*Ma-84a8+*m~cJ-=~4sQa)IL?V4$Yfn6Rk)`jiO@Hignn;8@g$!M&w>ONQ4c|nV za{ctl;-R)&oSh&j^~6SeTfyYF>YayA?*b;zpp-2jv*=3M;v;&%L6C|HCoBH55RM%13SkTsH$Q2yEW z^x-!2xr=m$;rgyZ(|j(Kngn7tRigd^>6Vypggpd!wCjPhWI{ieA$)#Ac^dNq=kb1kl&Irr_U6IH-%-UoQROzF0eAk>i zXpMg09t^x@dG^{tv7>J$A5}4up}&YlCUM79!7+(Z-@<`Og4{rdovQIz6XnIx#T{L% z4}}Ba(V%_HqRpws8H%R1Gs8nY76clJ5U_n}!Fd$|t^qut(z|Q@;J_5*+F+5iO_vz5 zP{rk@c>t?#*DOv38WAt`qI{?ojxs3>%)d6uKtY)~UXduIVhSWKS)mrGDKjOLR>%|_0wl zzdtOB%Qgg{QI+|UZB~l9?58jH#DahkIP%x7KR-k?F1vs5=wv}mfU^niF*KLhv^^Mh z70|`SVE_%Pka!kE2hDh=_=zpzIin!CeHEl9YNSeF2y>Y6^BSz8W)WQS?>mR*SAh(i z&`Q(bN;uc+pTITI zVwUT)_IY49*HFLU{v9uICvLsf4{M-e5ceXvp84gYRI7mlk3o0F2?8K=C?X|T)gsIJX_9!M`GXhR!MmkbdV)U8 zP4K^}m6Df{kK+4@2FkI95rSQU1go2boCmm^(bkj@#LE5PhRdGZXf73POSyQEdV-Q2 zd5Y~Y=CTsWSgmB8)`%BztD3wif3cS`!I)A336&{gho3$>f@U>EqN!}Xl*IPJn4OsZ z9#+2fqc`C@?FF&d7s&16B3*c!2zMbScKt*vn2}XhcfjWdt`jKEzaG?k_JPX&fIbBp zj0ypO`lm756{5ayc5Y6gTRhev2~sqpb`0ky3B~5Ov_A^OK)F;LfbMn0A$(0GCR3LH zjyCCB1-R%miBz|1139;8gUn-sWV)wQZ*GJvPP!tOu}C9MgeLKVa-4r2W1kyfj)+9K zxkyujSyFf@hOcn?^hF#~vf{g&9YyhK#dkfJxjv!X2zGvz$%fyYqCk%CWe6gV6Q2SB zb;FsQ2y2y}5XTEf!Ko=*cqqhUxz;@ch;rkV6-g`~DcsQc8BB%^u0r^)^Bbh&34`-` zJbP?pHm_DLw(Q6r!F+EtbH9*oLlC`;cg=8c3sS0XMAcm*0@jy1<{H{QG0tFM&f72a1MqH{p-~Y!VVi z$D4_`{DQb2ChJ>a8G9}sd0(I*QfQ|>bQmFAG|#5OS*#s``&U*bUtBoBO;Uo!Pu_I# z54!hW;HcT8rQ$^m-0RG6VmCE^Qpqytc(Nf;x9C}^Xvw9|*29`-#b?5&SC<9=ucLR3 zCZFuqnfAGY;>gee4j_jI(OUt4hi~;T0%iBB1prd~#T-lM!XcT%<>%;Iaz}X{jmZ9O zDlZp>$EguvF~^lBac~<0zfWB($ya(;9nMYRP}EbEeg7Q*vG3&D0uqW@ z5OMw{9iLz{nZ@;xd+q#`O?I~4;mDJ>zIZn16oK+fxZ*$rjb%L|TSV*z_(@qs%a3#xy`to+|my1`yF zndE2d_c;0cgg4U%<{bFGk%7F>0zTUy#_IP*Zp>Pc%kk~`Ac6@8cRLyGcyZzeWS(xO z4(|UY0*oi3*`Au({_zZ|`~uv)QYw9ssr?9`F`czYLkR#%BRYo&rIv`|E9ky~>y@A0 z>j{3~oE3%tf$dtFs9$=K-<7|_K2TdN4~PLz4g^0SO$4Stn?$lgc`8lixTcD-Yoy=j zJN)0|ruh)Q0A)g@9qZ43TSP@r6*~9~?bHa++CN3zFiZK>Lr}vh?@SV(^F9vTuzl-~ zRqEf~xBWZN%9BR$naK9mjuFpSd~+XDZ)oI=6B5Ke^3L-P%6@$s>f8SU$ePevjQ?gR|0UZG;&p)AEM`Ie`ifNrn*B{iWKSHYQoYW_Ukh?%m)dM@orNo&a6*H z+N6099&R}#Q9^pXOyApM(AYC=!UMFTi6HG{P(23zc^i(5)spGUWQuW|os*n(o>l&4 zgw!XX5x!v%%XTAY+NAH)i-z8K z(hwxT_%tAZ{Pwu=1?x9t_+1UYJUEnV_m>R)v8JRFf^F$jSJ-AM>l&S=3af77vs)Mm z?J-ANsY-2b)>uk=_A9(;`$6q*LQ|DCB%x#Vuka@$>}vr&8D~Erb>bBqC6PKn_V0&= zK20j@y0#7p>IUon3H{xZDmlO=xGv!gvy$>G%3a7OHjOW`RNst{&RrA_Lxwsy&AFP= zx6-g^ST(E~pK&UV8Jx{9hx1cVYR(=3%%QeENY8}Pu!+`(iPe?7*AIzTD3<~}s$m$4 zaEDrno+eN`NxbGX!Yr_T8j6fFx)eKCNc;zZgkkg2tB{}krdx-~2^heNC&4+}Mh&`A zKUAcWE8Ym$bSYj~*5kJTvlFM$6YZ}j#jBJC?~J=LvL;|L4yD9yV6`-ncU>_vsA^B> z*@*(r8A{qb=1tZ>LvZHt>qqFFu!01oVc0Mq1h~N-CMORr@)dXrFKFtqPk1Ky%%9ZA zF4%|qK;8P%^X%U=R^NaZrXQb&Pv@ou3h0-L5D#-`2jKzSFrP&-;q})gF%VOe-|ff! z&(}(vfrhXLH`%au+i?`vz~y@)zwSK}(oek+7g6;I<@DfBX@YeLgVFO>(W4M+!aRcX zp|Vri9XK)1_J>5Y1q1UCO+U^vL~>*1MJik2_(J0xRc*}nzrz4}E~znTcHd$Yw};}j zp(m#F4KHN%3ik{$v^DA7gGt-rN$v8x(fvMTUZo(m9;h!`_ZTp@6j{G1lQ{KvLHm7Z zyu3hmV7e`m(iygV7`&uGZeX@y$D=V`y>@$2_i> zdf#p%DUQpNGMWHD`tlHC4_ZDU(z;m}xYOmyyd*`-HcK$dE>ocXsE8 zrbNM=^ep^~dn2912M@UL330cEzzR3HW}@Tet&MdGySZkvF0Q_tvo)x(F)^`r#iQF zoyWcf3jLI)m#@b9to}W5Co5-2Kh1Fmx@Wd;UOc!GHlVun5w`5QK>c8jK%FQ7Kp{wf zKu;xvSb+eAV5`7Tq(Z<%IRVE&U?4g`5kx}JL`gtCK+0fTKoJx|;6!0Stu2Tl_%Zc=DFphssYNf_XoJ?8j{$o2y z&2Xs9Ip9cK;FZ|G3SZkc%nbL?W{eav^CCZfSz3 zll&2Y;sOet@-EfXA#B5&)dDxwhN)6~?Xc~5vP-l(lVoAeEk(~HP*Hi5kJSoj&3N6^n@-VqRnu+!gY$vOQ1 zwD178Vy}Te1N6tS1za$6StH3hL)tZskh#%AzS3{oM$l||w|-RD@+P=8NtVbvq4!^Z z-gPbQ4gnzg3%#VKezXov>0O&JxN*IbC{ypPFl>mqf{lwPM~!P3@om5+ zOFj9pikMaZl<8Q0g#EJ>;W@Gh^84rmobUXuyP>oG?iqg2u`DbfD$1LrJMY*u-ZrE= zf36nC$60B`u_ccs_KY3w)}_0*E#zBs(53gJjOMv4$gte7D)dShpAm$L!&cm;*5<*2 zY}1Z1!=t9KmwjbTzZW|J%QC^pK%BmUSq?MyiC&+yqU+aae1l-oB<}$P96zQ5=JT(T z$x9eMN}1&jdlDXWT^6~T`-CM|yoK5tSy%4bUx zcNDx9U~TDNw^CLX)-&H;YxuN^@ty@I@C}=40JF9ySY{gum6Gvj@rvenaW9!iEaT9l z?mvs#m3%nbucK+AS4#S#pQ3|+gXA8aO(;9w-?NA1585XykQ6(&JDnTW&7E6+p5mA7 z4B9;wkBI6Tqy|H;;s7|#R+Z_+P9~atF*FzF9oU20^3>2ftUU#yWmR8+HnUqA{#w|A z6&H`$i?iD}A8lWuLpHoTb#S;{|HIWeL}vnQYc#g)bZpyp(y=?XZTvyU?%1~N{IS`w zZQIG~^+xyJn%1CJ)ud{j^VQz&qG=Uny3JB|28o;c^n$k8@pZ4&lBa-k4b7FS%apz1 zK$rIxTVl-gi5AzvsO9YobZ4)r0kYIoh#Y?Y%fZE!AYLI;n2EMIivsh?-G$Q#NT6DG z#x~!YncP@9Jka~iz_B~;I|f(@%wcnCd|#qN*T1;T;TgL<+vKd_BN{$&|MarKZVlR; zFCB4vmI$8s_^|k?md*&VRc_+J$|FV)&nYF?rHGrD*K?$2!w0!(@%QflF9mhd20>3yp6q+ z)^#752$OG3UY($=`P<|xxuPcQwyeOZB4k~E%jd3j|0)TWfe1j6^5*3))SK^m{8qUS z6zbZW%t&*Y3!A4Rp&pSTqF znxV=b0kr$c%oSlzPcdy&0R3(aH8!KKrZhCC(z||G#ViN-Vm~I_mszTndNFlV>Zjpt z1F}8qto5D7>;Uc`c^)QbH8c3}PxjVBVLwkN?590}Ba~kHcR`U2k$>=a(YH056I+#w z6x-`|ZgpCD#JpdsvQ+px%!7@-OZWFF>4mlgWWFwGzQmgyX0T|MuD2zVi|xGY=a=|I zza#GfS$+kg&prNAx4NsKs=p@wG(`HDrJ65wx#$Spw*mwa?S>VmH?H=#@;gR83ZY|2 zKJ7ghFA0~cpQcG$bNoM9M|?k>EuQ<+#6bP{rfPw8(p&fbhb=CIdS6={LtkNm>d))+ zEnl>aPhS3G!GaEIxR@qPG1>yI;?B<~e)9*F+I3bE2J5|CMn74bk}8Aqt>@X2 zXtr(FoD8Lhn4{V0PnRG(SB~mdM7V5Dd3-BV=qxzY!q}%Muf>+bUhHxyA%5%k%NE7N zwPZd>I|04#j*h8d0~4LAa4Y}s@huwFGkAxg13(vp4bkkZwO-t4obL5SVieEy??WKN z)C)$wc9k>#iqh(t^ygt8QlStb{ZsaqL%J5Ts#lXuRa_0%cbL;)`=GiMKvpM-cjf)| z4SqeHCm0j{&)-23)aNz$cW=U(j-oamYrO|eWLgdV4uMX6<##C{*Lf?aYt_er&&2@N zCg5m~>Rl458;0>)@ah=5kZ`T^!)2prN&?!0_u3Elf}rO^zp~kuZrWQ*puH>a-2-@C6`7kM;Nj-y zd8pheGT#blzV1CDwiy7v>S%Pg_`|Yi0$whR4s@lN5_`bueag+gn=aB*{Qfp@={&Ja zY+0@%Gx+Q{VDJqzXC0AS%uq(kC^8gwzmo}!!1yz~`}PPx>WVlqtf;JY)&?=;zmN_U zE$2eB&AqT03Mu=d*|H3c^!n$$z^o8Nj-_*D9+98FLk}H9XNlY=x-^9wH^hoY0>*fI zN^UEuTMEw8Ew&jCWT_Hf3)9Q@xOlI$jy-7W&cswA8RL+H$gBgJXzT_ zB%`4`cEuVJ>tm()35qXytNB3G7qe|K2sO(c^sXX*bOy=!uL3yFjYg&-Z@hPc(=Vke z|02zsv*Q>klcSUob#vfTL8a#a0?_in6MM2oh`G&ghk1fPrye%cJMAK*ru?_?Q=!*r z&V_tETMU^{0~Ijd?<*HX*%m(`RmwVBl|93h$S9f71l}2O&I~$E^1*yIID(Rxt5k0|Tj%`|Ofiu;bX@ETC#*Eh(V>LONpj-f&gUxn$-_-(%JG@b4J3yUom!}z^S(lodJ~cfC&YJpLyL2K8 zVU?zx$7&yeW}so@z%*u>xuo}CfYsSWhB+~ZQPm8LkJrXh);xtofC5_$X@Yrs0*?az zi6}vUa$r5pf!P$Nd&CSMAmxS67FvS)iO)nMcHbyj>LWJp>M%+&x79vu6oV`J-HD(b zYE*bXpXuuQTHBCTX+u_RnM8m0J)V$~nE37miWX#yS!8;E-*DH(8eKRRg(2X|?G>hh zO%WdpYhYC>mP!0j-}qCn%UE!q&z*C5didyJ_UTZdFcK{o)2BZTP;_Jwmz}%dBXKCH z=IE(f?C@Nyc(++&8?$-zxH*d4*nctNg*AQOHZTT-UGu=L-Bjf|lI}kDnf-|V6S(@X zX?fWQIJN5`EacZ>eZM@qpI^7v*=+Ra%{w_zg>Qu<64K)%sVW(%dic3_w)9?81l-7A zYYYCcdR_*<(AvR8uY7tw=%#2IpkFFly-e40#dFCvZNdi}s&0Cf}1DPy~n z6r=`$EHGTa3@Kp7h$U6Rh?HQJZqQ~*f2-UjusK>s_G11*XpsPb$H<7ydy>4i65u{g-|I~Zw1YI?h)5f-B#B>q- z>4btbw95?!h-!n59qM*;*noZ>lJNu~3Wwgs$O;YHbIpnf+fP^taB&1BiYwhQ?!x*0 zow|3}22nd$?8(76aDD^Th3n9F=*d^p+j&duiM$o{yc_(2A{Z36m-vDq7|gUM_kve5 z=;4T2)7RWaBs8daOZR~X>~pwf`}makes~I6CUrtoczphVkRit62O0pkJVq}DsxZ3K|rz~K|o0Vr4pUZQY}4T&{N~? zU=RT=_sFcKhKAXD2WKbeT4>gNy}h%LgTA5?0IDL-grh=@eOz z60c_IH02UQwqp|I5ftScC?P`>!kmi6va_5!l!7l!?w6g*(fm#8eU>aa7TqupK zaFZB@XewxiYCEVXj)vw=juwVF<-Lr(JH7N5z5N>`z0C6gdLqKT!iKPoZK9}+D8bBy zee%$h`IMlN&~0VRCcTp&l=(7X(Xe1}U^SES{YY0}lWgc87#KM4=B&)HgvN%pjwk@* zoUt7$!(MJsdeYuD5L0L^rM^JileC>b1t{_R{4VgqP2i(`!U%tiL5(G;a}mSS1JdBn zpiwfhF}9RAm^l+|AR~GBmAn|K@gcYa($HzAp$^$ZFHM3P(tTOwgpaDg_pmWtRNfI@ zk#KL?-XebrEDRQ0RL}J4eF@Vp%=-hPjv25OYjIK4ua2{_$*KNzMK-<#4Y+5g%({=~ z^t3aPn=YM~N8e|s-6z!_{mSb#Ce{k&S`{{5^v?g%U5{#}CkL@H4!JToC0o4xI%2iZ z8A|RBL~r>}OaBMC5363)^+SK}a+vbd!o6H-xY+?cCycX6V*GkM?H+eM{=Nb*5I-6} zVhi*XTjjq{zm-OsKhodt9Bz3bAPByWkthL~xl@ubKxv+j2;$>d(^PQMCL-^J35NMW zLnj1!;2o~Ks5F~oUj|l_4r;Z3KxWC5<3^aJzZOdvn$aK-)S0Fy5A9r}r$S-af@F>$ zs7&ia$h% zIiM=V!Vbn@D=A`zDFu}Xgyk1xU}K`_!LjslrqyChWhn&51Q2JrL>sC3s#ux-j1-(5 z#qi6+MKSu^D=eTVqtPx208d8TE3}2u6g4Nu!oVQo&x_MeIRU-* zNs&|WrewBE<$wk;8E7+}-f(HjTNuk=_WKf-9O!36lHhD{k*UD%&dv;G@OoZj3BA$d z_WI}j{>pC70+>lHZL&P1edep34x6_!cz72%dZ*v*QgW~XR1SN}8_u8^rm zXDLX3>hzE!|14!o-GzDexs=2zk)rwq zY{(%9wz-)Ewpqj?2FYkf^izDE7{EY9ZC?~D-$h5R%a+O&pp8K?#=A}}MIq?ZqH6+f zS2ZXBp|Beys?rsj6h0|607fSpb4O-=Q^f{CXQ~eZG8N!QDzfK+5{VxPPJ)Q$c9;lr zNiGA`$f6FyW(f_86K!m(MFqPPK`A4&8s=q*=>iIOi|@a%C_*Zahe+&%4~PyfN`=$n zku;Ly5;hx4PoV!86mHB~4xi^e3B>9!{5bUYZ z8dZW4QclV;Z^^Z$yzGT`N@>-ACPq^dIUIfE#vc5D*Ih=JPM$EZWF|iwhZ{!dn$2QqnDTcd`BpI>q21s*)+;i##WusK!b8^aZjlaD8zT&PhgvyDXcLTxYbi|%a zI+YsE_7_q$G@<4S#$<(L4hlkM34uJCQy?6q2KV6m=!U;G9MhI3N!GX2N1Ab*4U?-e zB1fd%q+UFQmRILPJkLvRfVd7^h}ekY1Mj$e3gD8`vM!sIM2J{~DmMNpS~aU`)*QaXSE|lagB`!YGq`Z`Ow>q6GV+nCbQAiS`{Yi?sKqV zZU2HVrN`H5F4FOD1lVsh*kS#f;wV7!ir38NX=^^Neq(+8lZ!Dc*BJ$!Uiz5NU&1%D z1xn=R-)3^Z!P9A6>A=vNjh$*o^f9d8(c+(X>V73OvsjqlsCq9*XgzgF1~}z&vi?>w zmzX&Rt}%PF9?y2@VMp2P>o(+>n%HXth&!Vn^((ftz3+HgfCssY~>6+s=6Q`pzMM zu6NuqL)iJfRaw?$y*GT@jav=)c5(RZNtkCSWo+tp`4}TSOgP%lwXW|J+IIKWo%1to z*lb|}di2SS9C_^40yH)aSPK-bbg%qxZ$0&2x6S}Rypz73Ue?ZK3dhfgh5l6p?xD>l zXRzF+czWs|C$Ew8x-RN{zMl+dy5nlLK0gc`)SkMs#`V)M+K2kYRCC$4r#2s^r3ier zIh-9oC*Q;VSWU^CRpH9gEW2S^oB6DWXDSgHvM8`3hl>YIm@uh7aQXi6Z8GmG^SFHP zGiL(?z`!W{l20nM=8uMcnWW-EDh(%*(SUTXq-7rlmp|6z1Px>7s?{Rn5WNTq^CDz< znF=NT#@g{5?;O-U(<6AM`cBPsDL=l zoa83}r3@EZ_>t<($n$W?P$YQi||`~WeI%!d?%B7 zYwdnqOM5MRJAL8i?kks6Lf3uQ%l%zzr=HA4(-zRe?qnx(@tJwgG<_~q*Wy0rp=reM zi~jbRfqq@KUyp+rq~V?^fOuv*fk0LTv@11ClDMFz{|=)jCnCc_RYZwH9}bi&vbh z$e$#gE=(;FW4a?6wLm`&P3MMMgy9|L{7;h2gj0;G^a6P z>Pp@XWu0@#xjl{@qW-x{%V1DQf(5FHLU>Ca`8VqFX(1o;E460Xb^B5|_1 zC!vRP*nr(*-6D&rD+~^g6LtOzgpF3V9D!-6s-kI<_?S-KGl>&|L?W53*tb5#FU1Ng zLhioJ%fCMhhm#JDr(z61t4^ogm=d{YjL1}nvU~KGoE6c{h#`~=?s)!wJ8I)vhva1< zNz>3%)uPHR471zat7S4>w+@dnpkrHE=?zBn*-U^2>fqR<)IpgxQy5 zi^e`xek}eC?m4bBrWGmeK|AZflCjv>C&bI`1vK{yD<)GwVX295c=P#DJL@U=q${CS zwcWQh{u(MaIbo3LAs1n1g~U3r9sEjqA>!An{&pGY8z5HNTFR%4Q0z$1)SPsPy4bge zXc8`0@!MgNck1{nbKp&I3H;BIC1N!``xuNhUMl9+aU$VB?Q2_=i$u%e6f0aDA2!I%kbLY5kIi z$`XEt>!9~Lt5XuQF)XI^YthsrxlUcgoM_7rH8GIR6(c6pkoePpdi~dl8B?qHEO61< z#xMqe2Un%e5z*J)#kKY0Su#&2mxQnC@wbz%asK-bORpQK1BEBV4R;^UjuGhc^}sc> zZ$v^1Ufj10^83jD{1z zJvebYE|8=*J;TlVxOfj!kz+IN`Fg>l8IVEh;F-UEuiCJiY8~w{zidgTjsST`)waQ>sAr^cP^Qa*SS&; z`!7)dyJzf$ifOre@HRr29oW!Q!{Cxfg>t)Y3*)6aq7AVIJvSeGcQrE*<8T#%So$_c zglOhAeCqMEs8~7njvmKB(x^KD;XTO|umW>0j!aCjGw-Ag#xpNdE!If8^v0D zwSV`Z?^f7_97R>?=PbGz;4M#}M25D$Q&-KzZk-z<*1>7o)^SGKq>Q^L;WpV)fU)}{ zLgLRnOZKs8&gj&Qe^~Qt%uFJUf?`Q@RroXr@^ie&X4``teTEXEc2sit(E~j{pl;4+ zJyu@s0yM070G*IJNkJs{sP57~#>!`rvuu?T->rR9QoYu`yeyNVMLTLp{FN~-oPWbv zZWE6M>>Snbwp;yU8_IsfG{Vkh1!+_o2h9c<4}*w3O*w`xp`Dq>MKX9JZQGEfRd+8K zw@fU;&O-~D`nflVu+LeDC+Jxm;KkoZMpJ|A%oCQfTbDhnU0T8s9>*=%uh*~!>&MYd zHd{=}WXvz&7eT-YVFU}KyT?JLjY=~&S8_ECi3Gxwgig~2&n?$y5x0X5otureUOpuL zEK8v?@gtH9maqjMEj5ABC~27}X?dvoj1kvfbvE^2%9@mRo2lpid=K3c(557Wfr!X! z%QT&Oul9Q)_?KrmU3oeVoN?|C@u{!`obcML0I@Ow*M#SjA7|5Y*1(xLbqZBZCODS&RD%%qd!ko5z_VjHe`Dg@c}pJbmM(;;}d@ri=tg*{B(5n6kpexsge;pvm0>=u$mb z_LN-{L32bQN4yyO?XndoVj5{9xL*K;1mNQ&j#Td`dHU2#QT*5T0M$hAodCX7LU$bN zsy)AF*EKv_4#|?Vmt0B91ISpowiA^CARTL!z$AMM6i2+P);4TRb+T66Ky1LbQ@A|j z#I|W$mdlE=5$llJE(x>XQCz*-`oe&7UL{=x5$e%%|HlB@c`*uYL)zAb2(`K4@V3gk zX<^XSUfsT7GZ7gPU|donUqBpW5AzV#T3A|Bnm;h9R{ElDNwK*PS~a4sELM6bkyuyrXqf_9Be?Q8;?BMu{L>zuEjoeCVZ2L&} zd4|+f$h?R-l`Eb_dk{K(J!;ulK1&!T0G5URA^AHTdb0x;kTqw|cR@bYb?}d*J}s~z zStuD*@~%wFPS~+q2WloQ@N+YEf~$?t$$^w)-6&WM_Qy~kJLHx?z+&laOmjm@m(fZ0 zd@yRmuhnU#0${uWT? zHC+1scfo-t0IY4{!bt!QH)L<(ZwYm&`>Q0q&Y^@o#a&CX)OsI0G$O};rSX}7AxdMT z<-tckB+1ec?xIPsG%I*VE`^gsNfb`2n+$4xM!XIzplp~E_ozF-ignPI=V zoVjtN36QQuqk*dxe3Val1h0f7woj;hg!-1(RYH3Xz|MLYK}v{2?yx*JDnY-zmL;h- z9O1kX&q>SFrxjJAC2iW4ny1>q_rU146!}vfH(uYIJ3%&@6gW57xxW)Tt+AM<(OM^> zsZw6HD-ZwPRPearIf^Tvj2rahzmF32&HgNt!x%M!5|0Jpe4212uLLR3t`|MeAozJc z!D*ndfDAB;_$D&(14J-C#)6q4WyITbfA$ThKF++wE$k`~NRJ!g)GK?FXEx{oWowmE zL*`FGxZK%m6Qs-lJ~m68IA{*MX(YP6z|c@4_D?;pZb2cKQxqvn7+K>$WvD`D?s%6@gEu{XG#(Za`bwg zXLw+T^b3<)07xFGJjhQa7y94m#K;FCjyXhTIc#B;Vzg#IqPqV5g@aeRMCeM}EIx9* z1CX=Ec^|nb(O+pOk=>?h*~jr#E&G1*$D%j;%)qxjUx0<4)?xS6z_^p$b5VwMLu_nb zCFdsDES}cGPR6;px;4f z{6JtSI?)TFdfsay{|V1cn7ZPbOcT^cyUdjTge2rrW?alp1SO;25V z)64UmAkW(!X$4<74O?leWhOHjge7O`ObY9?2)ShA-vQq}?OQcL#gYll7$BDV3{W!H z)FZNhjFY)3ldaO(?*pF+?Bl><%bOuDhJUPS%p=vC5dnV_xUO>$IX*_cgKzHa$JZ~- zK=aLo-aaOO+VI^KV9MfxFZvYrmif^QQ-n?aBwCH$6)_La5Ob0Di>?40@={J;4n{s` zDDyxHCTDN&9`X9#EKDy*YD(@ys)+)SJvU!gf)&2LUgz0 zIt0H((J>pD1PnJ+pjt>ZYXGH6B_xKB?<=gm(OA9Rbq;3l-V@F5Lr@RqX4YyQ)OTA^ z$oe%%?`K#0*3t9t=5{mSEVt26;bNqCOcUgCjLm7|7B%f-bwX)&J(-8h-(bel4DnysAtOudFq18&rlHrV z^^{q@2Tly^6B-1Kd;YPXUCsFKJp>y!e3~ToNoSn?1q#% zKca{b!dQ^=X3F;uBllZ2q7#0{v)sN`b6}X|&3nnobNe1;fmjo40jOPHnoPKMYd*hh z$d+wW2)0f0?A-Id_|~d^3Tu!=HP^>$e`X?zirRGi>%e zhR{5B#9F)*bK|Zi0x(<-5c$F`{pEdua{wYu+&tl*UdL~}QdUh7eOGJQx%s+#zWheN zf8wj(BNE)bxZ4r$TwnJvzI=4F1kS9Z=YG2JBQKqLmHqRDLjHUw*HFwRM)G+VtRf?t zW~qWc-;p}M@E&c9vK3M;Jsxm#w&^MU6egTD-29s3%^Klf1B}$?l+C}6@#ZKl_SrOX zd~?=M?hZ30%9_n2qnV z>|gp3Db)T`_{AjOJY8xL_Jj~bzir_C3TgfutQrH^Eie?~p!($j`HET1vLY8lk|PR;gbsOud=|`WD)zRcju6( zE6CmcvV~kjzsbw?z7J6T`DN4S>O65ay+DQS{=I%30}y&F6aain0XzLqh>7^WC&Grm znw%youP$1J7dyaaFBC@0&Tf1fOy9LK_cT70{__9g={@h^KplTJNXr7^ds1 zo-JcRz}8LFQCts~)AE^r+F7o80vEc?tgh*S7sySxE&Zp#Iex^wp>kBNpLZ9F$lBW?Sb6#)0w*M9M{RD*mbl6 zkW-D=b&l58ti{df>dd|M=fgbFBg{efbdoQJDy0ac#-_ZL?aO-q^wZF>ZSDejT_6gZ z>Tvxzng$7Ry;^X9_~*~fA755sK8Jo0cDegQs}4d}t0oU!To{h7sh?t9i4I&$?H%zc}ckd?Ca;B~202 zus$vvCm+*W)~F4+>1I29D!;9$971{BBy2SgZ@1W3AK$+g)bFj2q4#!8MLwbnC5!Ug zvrkgWF=lt|^6f@>wlQ~v3Kh%M<=Q4uaNOp}7bUXJfRakx7y}oFp#W{Soev)yKo6ZO z|8{oy&+SF^q&-20m-P0Sm!|Hf$Ip~^aKPfy`<8j#^kr(2@;oh2wh&6y>?^Q}HmN`y zf+KlFGCW+CRI}_Eokz4gZiRM%LY$K&lA5vw#*5^(KK>Y8TQo(Y@HmVHh zY1WGUneiysXjlCNG`sRzDDH#5jF8!2FwU&DBnwY*5z={8(M(E8Bq?s9Pelh;lz_FJ z7%TX!?)-cffWFJhpIu7}AhNuY33*2Q?FpP56fBOmL6QnCWUUMw_&6zrfJ1y9Uhkql z3>}HaEPbP-d4dsVxCD*!{gHS!G_&qs%cOxvo`@5JDp*(3_R~bu@RBM^hU6p;)@+)p ziMSfm_!tq*{6jZV$Y2ucct$7sP%L}Bgtc+=ptq>|p zi+}MC%x1AC92yrBRI52M0+_xI#yw+xGEk5$s<7^R(I4_GM#1XWa*7O;x!#@uo_F75 zRV9CFetbk2(*VCS@|kg7Qju@ENW+qUEHig0=g*HVHU)Z=@MLS0Y~+!Q=qAf-u_sIn z|7~z*I#2P^I8v54RB-4 zTNHTuK@rjuBetSGjTI=b8=8Xwq7`@wC8YNq5Vc+s%K%AkPz6VXpCW8oArASN(<1mA z!SJ)-n!CIk0hx~Q-n&Q-ec(91{XM||1FA_oI8EX<1X24=0JOEeb8bS5e6s1`R!1b> z-Cs$2{J#PiPa^G40(07MQuC0<9ckW7K>Wk|+VIGn7(xxHYeXq3W&@l?3sLu-(CvpY z@)cHJjO2;0y-Oh~YdVEsdLO*n{#c|X9A_fYvGN9s`H_Lo;6kawvU z#AwLB<7&|)2tWS^2h^ynkuLd9n8c0<0z&m4&4Q0Q1T;Xk2C^f@A?9{>_r#^X^H}OS zSs=>J1o12OnBLcoW-z`q0_b48cw~V6lRcMd;>1;b>npT1Nr2=qt*A{WBo(g2>?w?h z@QD_Cfos(oO0~KqE}VL$2A?tAk`U%wPq&1M1#h-fMtbY^`_{A1wa>NRwf- z()SwVVlseBJ)?CppZbkeLfNGOk%AQ0c;f`a#9J*gq9TR4SZlJ{x?*eyv0F76lPm#^ z17l20CDBqiO*VskVh=Mw&cS7@Lr$@6DyMDlRHeB=CC(V9qmM$}_)Q0jT0uq}k;6XH zY0P$)mtEURgF_;8J>#*-eA6;jeoo`wri0QQw*pWuosjmY;LKP)ridKX3RNAwu)~}- zBVAfKI<2T$qJl^jy~Og2G)q=8Zr?hrd>C!RLxu6L39YfHUM(|Ol1+A|;a{ASzB#>PBo? z9vCUtDA>*y+cJ0j+;hbH&3~EwD^M-C>s>j%Anfgy2{bFEVn!P01n>&0-NoJP2WsJI zk7ABWvHuj4Hrx+P!Gz2aQR3sv2kf2JQM7?|hhzPr)yPim z|7>M`p~;834XPC8?$c7(a>NOt(H$cc=GTK>s%pcAm4Mq96Gd!E=#d{@d-1bWy|YLD zA}iQma@Xv|7JeB1%4Jy@A&bUh4lg(V)un`PUKME87Q2P?w@BQuN`w@*E>xHSem)pr zg#+KEYZwGJqeZ5_@Bs1R6k8=S+_59!6eZ!|IV;KKpzPs!Gi(@mwF@8LXp%+f+a4x7 zTHubXXcTEMaHLYn-?I^uBEpFb zqd!42`ynA=vphg5g@i~LrdOq7@j+c>qm`@*d#h?uQ)9o-23j?(&@8Z~TYO?WP7ey1EOJHAoEDd_8{1E3vGJQ&waQPG|+0Gr>K_3KEo_hi` zT6W-Hy$n`n=IP^F){)QmH%(!g58w~`j_SgvYztNmQBUw-R2S{3!!lyJ^w2ImRnXmJ z7FAk5TMp&Ty@)FsSAH>>gQIwx&l*#$Tsa)WhRukGi%x;qQm)~1=ZgO#UkV<4%QGPi zcFWINNJF8&9x#fUa@i*j4ZP0#?K@CeQ8{9O`; zF*_&`5xyE2MJsoMprF`9%_1!6x;Z%8hoBlgj3G0?hPEQTW|t~lTG!((V&<2wr3X~2 zs;af>WxFtsxQ7q%C6-uh8R--9rhiF86#wN8J||3+hw%d&1^U3nJC>Mwvky%^G#D8y z#_48oNlQu)iF#zWG20&?@e(1NNZ?DP)MIjwmp2xhwUT?bQwpl!@j{wsLpX_s6DD(#D;!A=G0 z)TC~FuV80JRL?a|cW%eOH&ECfm##)UD*qxjU#hN^ ze?IHU>iK(2XPHdsm+`sH+*+jCQ%BijMU{4YJhWivbhF#Eb>jf*3vc>-LJd0U_U)dn z`0c*yhxg}+1PoSb1)OC+_pXk>iMz5=yU!gj|EODNe7^!xyWIdXJYG*v566E6_wI)a z#!B6h%piKY9-v)rk7xKB6764{boW-`^eY^jpK@3K+;`PipPfEd=B#OZn(THANVU-K zCl!EW9uvPTz1Jr6opgoT8Th%9Z@m`*H21q`?uB>^H*Z^2OTXD0!@BACJ?>WByx4M? z&i!2Hg-QViC>czb8Gs{v-`$(qr|Qbu&9~R-;jtSrf{g?h=dOp3QxAhzNw3pOn+hQP z)b#TtpyvComJ7&#Ja8UX-b&QL?l3oYyDlr_f6Ur^x|F10T~1`@`o)#lI_12@)BKkm zQENZbq)1lh7psIMT0=gEcnq<-S zP@|w;epZg3^F!jl&PdsGeF!MgS?$kEi%1N0QfRi)y~SDeBVcb>D^@J5@j18_3R>w% z3dI2P7-S2@_;&fGd>swp2}m52VZBAR&z!mhvb_gKT4gUrSZWM-=kdUMlOyB?V+$?{ zTxI;`7r<(O7poITz$_qrDk{IYRn)$c)J9$F$-X97ljeNu^Ttu)Ey6LQ^z`@>`Jc46 zrQVB%W+1@^iBY?)-KggK#kYgS@4%zhp$*XfJ(>9HIO=^SiGIy3pX~b~A0HW8X!gx+ z`(v`EU@I3R$D(|(I}WR-<8@a+F?YODCqZ|M?PD=tYr8#xYeMzPN{Y(e;r*@mT$l1{ zyYt{kyRt&#>#H=(0?7ZdobyV|c$HYXd^P2D)#Q7t-V>wtzxbs~nv1h`@>;^u62j!o;a8Z|VMDE7zeks95vkWY~P zFhbKx0TCViQC^U_x+&xSXX=WVFB4@}433s$1&x+kEcv%=9&Ox@9p(5)>c4LR3oT{p za=w~L1a+l?bxU83d`S=gMpn)h&-cdn*8Ar7*G%VeF3?pQSER^^qvkBL;_#3S03!;F z_!0h!`)B8nLQ&lM8DcXRhr7AY^^*cYGEGMxpb<3ax8DDlj3{7qnjQh3j(&#S$AK zc2P2pa_Rv4^+<`EHmb)|1nw^1T$O$=VSor|Evu?!y>F)YYZrs*`uPPcsFnlIM$Tq$ zC~xPvNlNU8&<0)ikizwIvu%8l03mQXg7d6&q<701;FWPx>*E zME^|fTD6*)6Vgi?OO$4LgC-*1oB+WC=1*K4+!1HbJe_9-#47g9APJ^qA2zmpuyzm= zC2UTM29Ul%nX2ih=Gj;2-$oPpR0? zzv6q(+_UU?EWA4Tk4L^bBPFx!VF+27!f-Z4ut+RfpllN1y848Xy% zupQ2IOf;gHP4CE~m$9SE&GG&@+CbqZOdoDPUzn3`Jo`jAwiky>Z~1+>m=G?&nq}sm_~H zQ=%6NG2wZSO&=?(T^9R&iFp@oF>WHs0qAo(u95zvNctW+?ZCtW~!J~~$C5bT#(I4sG` zY-HHaZHC%-OE7fr4XJylx8`6DI2D0_0;f-FQ6$Vch@N^9KRvht> z1EA8a+QyJVH!WdD@@w74r%x{=qsy~3vJkxBwop<kFq?W3 zv=`P%ue=TcrMO5tE2908G04!MR{LeO0BDggTqyTtL;+(3ISu#|@F(y=7-zKTb4E$H z98Y5?dhrG!USc2)e0-K!TX+?(b}OM^mkR9A#uI;*-0l-9Z)~k2l4)T{JzbT33rVf$ zmO{8V!yYNGL78=eqsMqbPwPEbZAJrZiePBw??KszZH%T{+23gmaD~MS4YxGDaR6f~ zb35&1bs4*javRtESy`#jST($CZG~#h_1hrWE5Pf6vk2bp3M|@M(Sbn91Pf z=x;VO_&KvWPIa53$B==(L3@rJ4xrQi<=l=6_|K#^76q_Ayd;J0Wy48D*zzEogj1P|&&iEUzsD95bZIGTL-SvM8y;B1w_8x-#=B^p) zo4-u|`j&2k=GVu4_ zYu*c8_F+v)(HBJHivQ&pP}}*o~N^U<~5ty zo?TDdtM0_17TqlpO8aG;@ZN)T+OKMGBh$#PyI0nY zl_cY3{plD$s%Tdx@OdehyV-NM=pv`92J!?4+M|asQp7!}7{AQh^74d(>P>1%sUah( zN|49+CC4>*uA_6b6q;dp-E;nox1LXhF_5p(&)sdRBV#7x<%_unr4?OKM=q3r3FlLQ z+Cz2_h{OoS5b=Lpol|foK)1DH+qP}nw(VqMJ9%R#6Wg|JO(wQ&+s;2<{dKC&cdGiT ztFO8*dhgoLT5G*D)K7%1GRVzeaG*REhE0{ArRV`5CM=tWw1cV}IX*AcE>D$WQV>s+ z;vQ16JTFG;YIo~tYBFmGL-JKZMB1Q-6WXej#Pk73A`0^zNdL+6mix*p9`4D?t}jo~ zdfhR*O^|x*1TOh0pkxdjX%Y9c?U^Eh^I2XIR-@72zdv1Dt0=>xmX1Yyv71ZTS`t-| zQxE`LJf|Ua>$dKmq?x`s;O7F0&0Hp4w$y*& zKf4Jw^eCdV)%i?5ufI!r2>RLYck8<3Y?V1Fg(2KG3JeFfeOCLGRkV%!cQ931~yc+0;P1X99~ z1qDO<*PlQE$yq3>Q|8hnc|!sLMWiv)K~n+%wzwYXeGmGVU8@Sc&)iP)6jS6*nNQ&d zF8ig>bVrSB@*7W*&9&v#R&iInlxbW7FW1?{$%2((bLHjDqT&~J^s&n-)S1hr=SJr9 zR#esf%Pn(k`6!@4K+GgU_^6`hL3h0;6X!94@f39YfSs3~nUA-guA7aS z{6vjm#0d{4|bMwgyY10{pmyw8R|z7CQ;yqWV-mnYd{^Ll#!bnX&qqH;jO) zHAfAcMhpc4#nEefDOO{OB%Ud?J_o=zQjQ`QCsCEudOJeaS;1pmhav&rHDt(L$4hkV zlz==-}(?EL9njI{(~JdDh&h>myQc+WA`J@!yO#tr!(s zzZ9OHaiRT}d&93aDfo^Wj5BKk*)cjZq?u7u=aCFKDQLU;;mS_FoS9NM@u?Bj46tVK zQ1T^&Ef^b{Rqz~~P*GYHG2_^DPm2JYKt3{-grS`PsqNr+ zsW}ru;f!urWRgFTZ0w;>t9Jk>=u;5%L-uh+$6_NGgdb$FD07hX5V^U~S2v#u0kY@2 z>{BZ=(d4xo6tDysBliG_o#AcY{!UM1NZ?=7q3?eL0$CBeUV#&ihlNP%MW*kCbp;eU zLxx!E6}o1nT{0!M-!p*Br$L%z;2e*uqw{hLs9g}iXw&A8ro1o(Z5jZhdiir6@j_Y| z3;x3iU$R~ChP$J{54l5zI-#R@`^t<*yTbwrEZEJ_d8CM0F^I{u$X<=JSV?zXvwUPa zgFc`U*&Nsik1Y||ZX|WTvss~6Ye`1E<`grA8JdL{(8MCT!;_kdKlu}dDNup9e@l(5 z>^-R(KyAw_vyshGJwE|lOn&i`Des|Rg;be>DCHtjN~xmN2Ht@>QK&*Ii13Yp@pP*v zOCI_)kN)Ybh+lFkoe#y@v7~ljqDtlPp_L`P*NB%3#R?WsZ3js(qoFrK3h-xM*5blw zK<3lz@C+M@wX77zu1{vJ2Q86;ER6@c{>3CQ<4UwRA#4wrRfZ@Gb#jFeW=gDx z@~Wan(qv?BXA5fS@+?g>(@1ww3Ig)eTHC8B=%hxNp4T4)^TRt4?jD^BEuydOp*YqL z#9z*AGTMM?t>Wo+1K(IXYF&0wvDL+VST@n!&W70FsIR%XNVD9qLeO9VvqeV&7XwWYA{SC13ZH5czgNM%7`f3$9sd}Ns9X1Tmr4QeNCrb zi#hcAJv`>*^*Eh!7H!Zv&j`8$%4hWS9>#5acpR`f``RA9z6hVI*)3TTJmiPCTI#Oq z>RuMzvVQ=7qZQ?*mwVs4R1s%Bbr8Ruz7`F`di~#U>+Zrq*vb12IeNRlH@XBfJDfUO zd|8&=&W>*K_;2jj9tU4B&EGFVs<0tI8gU;{!Y>~F!i`8J#Avmmz82#4Kb2LeDa zH=zJ~>#OtI^K0|g(o1-~Pp)vZ2@&VjI4drZPVEp&b9j?zo{P$=Or%Ck)Y4$#lw{{wlz5uey2_SJl2SI&GbBw@IDvG-iWmc zcrflbzMQ9~=_tVc*jOhy_--W}6zs4Jf0Lewwo%L&yk6(LPvzA`;&=P~SX)>df1d!D zPv(?e4<;J`2L2bcRSf#Rt{xw#SuZ_a=OwXqI|h91XIodQ^Xqn)ntFY-UtiYtKi2O( zv=4+io<)0zH{5k(DTq)e;fbLgpm&#ae2wwPU^TjS3SS!?#s$gLzNKeHl1um2~XU7b{$e-!rLmyH4hg#W*WyVF9@ zFaT&rGbu1<+vg6m|Q`@0aiI zou99jj~!eBRf`$g!t%o#+A3NLjgT8xB|!4EbX4K^TK?iLLMO-oLYkpY@ymOUagQVn z`@WFU^{scY(daBz@}@C0b0roGXx`zoryetS&SvSusC2BePuIqcQ%CSr0azX<8Upr4 zF}b`!A7#PV6|6M1aRvV_X#E6ZxW2qI7)G&?62f_RV}Ue6Yu6BH5ravTFc>nqI3P{0 zva&(>Ih>@oet@>icRLJtcuM{$o|(!`s9QxO>GI)~D20NX84bZ3w3Z^Ti#w!;*b&z@ zna`JQIRJODC4PxK(M<@RfK%33GkgOxfk});m>^M-5J7@03C4LW(2?p6Lzj(doYN~9 z2}SDB--9@MV6s_Sdgbs70ehDp68 zq!Q46Gw|k=K3M2$Smag!Z=w4=`&k;%w`(~Vx+MJ8c7q%tge~+gew|M!3Ea)@4t6QQ{8`{Ik7GEZj>CYA*d3@{#N`&Q zSaGqfJou#+SZyIWtYa+h3oroN!;lQA+b!xw`}?u~8o)ouOXd=){reI**;b)7%Dot@ z->5NtGI|swkP5hHD%FFMXQZZ7ip=uSOitLWJ4Qt;H+RAAAh`sH=FqlMCQTsp;LKb3 z?@*K$s?fM~5fO^6Zp1IQ$u4KaA;?6PF?R;t zOE4GBI!GZJi3wNe9$>(nN0N1H?)z7%yXYURrUcmX1C{c!R&qHSQ(gE>YM3O5d}6ez zTeB7m#_E!)=Sdh=sMN3^jmlv8@ax@#VEKc#yHq}osh|h=S$4Lh)M03nI?eQf;%F&7 z?~s4of-A3$1QVi4I?Q^!FIp@pid13YF929Oz6ILzaf4_)wJ2XH z2Q8}@o4G_sK|oL?%Mh9c*J@)x%^rd~SdbVk(!A&?466uZJqG&$GEx*0;W$)&0t_ok zzD58H0>=SIInb;vI?X3qCU9~E6E@Hkiq*)zQByuzY9imV^#Ce-KoK@=a{l_@g9$W9 zV5mjor7eX_At0a0hy|3U4qs%U+={0NjRFDd>BHk+SUo6TR2$L>X96eByV{<}EdUZ2QJ+xOnbV*0H7?04z#O4#9stEm7pHmRx1-=4u#hyxb3R0R%LLDj&*dciu<+6vCZvRs` z3vGDLja9}(ZnTUb96Mu5881+0tTHwZmLCaY8oty}uY*8oLo+3(lHNc>4IX)FMmaz~ zs1RfmQq$ak&Za7S4sQv0ZrR}#sb$h)G~W-XI0y8p^!!r$)1DP34H?R!Zrmsmn8nf# zQYkhXn)&BxLC#GLs<$luS?LG_G>?6bE2m$=5>XMF3kKzr;vLQo7TcLSiN#$1{LIV_Eg)RF&J<=yp zI}3m!fHHh;giQ3N(!e6&e2DxH=__*&DPA?HVC}*>sM$5B4DdWCInbOC1QBVx!hw7y zA2Jm*)UUp|u}p-4hs@aKywQb&`r!T7flPc8KsyB?G?~@voDjFuyO+~vIv0L8#qT>Y zfrQVE)YUqJ>SHSFj+9@Ws%*KR>cAQ7++zTEn{I<9anG&fh`iMXo5s6!KGi1SGmRb} zf>NhU{~C^}d+co{BR5duZ2o9YnFowf!nH}$wv(lAFQg>i6>IrPqYj!qsViD+Uhiui zDt8S&%(ePGPej9}pCVZ9(3K{NM@47%>K#@__LKYJDqKMOj>n;x$DBtj<73~Ohb6X4AL(9cqL0&V}a*MI+rH`mVMuN}G@3IR2tKJ%2^o?Wl z6N5IsY@$3JXUDh4hdMi*=}FJt2P;6%_hu1oEq;26uHVu3962{(v%5T?ZF5omt*$fa zUvj5pTz5l%^TWsOP48(X@9o_Fi(=6uH1?X0E~24BPNV&@=EirkiQb%M-OsL~4xWyq ziMP+p*-%=XFN-AS&o%g0S8CoEi-U)q)W=-+b6hC>jIChL&v{&6IBo0aOAUaLk-+OD zxFsu>!3h)I_R5o%YvtW&xia@67ogT#b}~btmC$MV(lu3)*b1QOY-eA*fr?SfL0{%>KRR`ma5Q3mL{(H1BDetLN@QN8m!Tzst%D#1~F_o^OAvjO-?+i<|J^Zwg7 zynQZ$Vapx8XV0DNz)_smYz-rKNgdG*sLqVb_gh%cz%RW!q(fYKRm&${Zy@seGYxPS z=fVr&uAh`tu!x=(Er^TH^PTmNdw19O7{oqbC!XWIzq@rb|7VEa53ds4HAE{JRGArW zVlt!P#yz)jnHHRA18`EZRzZ)rZKW*AvbW3Oo7w@h$!Yt<852d`7Pd=nsLpTh*H)^Q zF@JJGBe8}iu&y_B4+Xgv_s8tU1ij5AnKA27h6#;exw=#0^D-Y0T@=sls6`T6qpGmk z<`~yrC25ll9f;Ur1c${O8)y}IYEebW(mNbGrUpyO6{$x?2VjN;#WKU90&>9X`sOh2 zHe*aL>lzC+R*Pxeip^eu%9FXpXW_Kgu5(|s8F0aSR-((j>thqwj*XBLXPv-3H~1IXJsmgTn|IH-y@eIH@1z-& z2ATKH14%V2fUb!o%peX}()!-h!>T8qF@@ zoVDH0`wd5=&zF@s`rZypTZGkq9hYB4hV;~eoIM*!yml+`oQj^c-DvF&$=~z6+qjC~ zd>BsP zxiM8v^ts`dyF9*>1_Ao3vAB+;_5%i+VSZX8$eV#_yO6iRugKkKf+1awoc?fi!xOhO z-4Jy{GrLcou-joC`&XXFKYhT9KmW((h&6nYnhOR9XcXap9M4RQ)2uz9kkeut;ot!^ znm+$Q3-Z>werJ&5Qt)PZ1W3C>|Bk<;=;8wjQ4ld2AktP_1RbUAO z5VKY!e~jSaNL-~^7GUdcrj&{8uXqw)h)|=F35rnH#hIq=JulkH$%(i6IpzL`7VK=^ zeE0raAAT>}YrGRS4pih3i-DEqfRq)@krf6asNf``2rqZ>azyHZ@_CGyFdQ8bd67vf z8Iw&c3=?=)wScW21OoIO7bvcwJpllzw7zijZL9 z5^4#`;`&)C8IjdO$o}fN2(0M8rxe5lwy@$TAT?0T+y!h<%xHGMWMspz0YgD{=5$OU ze}U~lD8wVinf+uU+p!|&oVc|ZWr)qIqz@zuq=vCH0}K)m1|+acO;FIpH7NG_-(BTm zoyqW|eFv=ZTz@Y@lxHQRANcUp~)mO zaYPf+h3Ha-K!np%hYXA(4sWQD5J$}tm9c|+0*E`%!uAppUQnfu05LIkIHD!Yzl-E* z;pj#EA?P1mpa=*)ckf682;E+h#igFKu!1D%9K^b?M2_h3hCG}1az+*EizVT)E(Oh{ z1eQRR^{jJ3_r`C8VQ+->&`JL3GLr?IUg(esRc@WyWqB?51UE+W7VnL5)3 zFEYSlo+{+~LGQLU0wlHr7Y$%l|KhH(6|LJG<_3^uLY-FnVKC^B5!qlYi0@`-HQ~26 zkk%v>&8_S~yTtGSVPi5AOw}z|S!%IVy4MJqh3i1hFu2VcwH-T~Ilv6vRX0TL#VTy~ zR}LkY1rvWPDl;h>j|SeiDa{~*C1Ax>h$yj{8F>LPRj4i40W0DN3?h;&UbG%dnLh&D zlOI0FvT^s{0#;NKCG!E`8bLC&Z6!saL`t|}p$M?}7??2X4IxcY=Bwfgx;#urtE&oG zImMS-yY+}@O)o@@d0SQg!CZx_}SMK$^iS8Je2=ym?N1#mjFr4~?DS?vApm1ifsc%M>TtYEK z4Dr@lf`Z^x;^r!Ph5^N^Bw4{rG%3|6DG06AOL~OT+#>^UKuzpSIXA;@<4P5H<*LMz zDjBf0*ySkP2{WnS_8q+PWP4|hD690ep%1qTq%%Bf02;&@*i3g+)&Q*(D^4d+gfd%` z9Jomyhq6fWb_CLaT2^gVUMR^%VZP`~JSOw1MKmZbSde3~G{cfoopj+<6N>3n$cvOJ zm4*HyD874)Rp-0p?xR+{6A`3Zm}Au=vuuG4v^p85D~g$bq|jBi;9wW7_A*e7XO1{2 z2zQZ505vrM0V85H!Nq=0yq>^eJS6<|K*34Ci1VyBLyt!+?~jhjO8e8M9;!-+sF1vR z1&EXp!Xb-Y_hSaqa%3C*p9-+_Xz0Z86JtuGstn^q8mSuM>-zEy4XBN#_^HEBH4I)2al4yc&w9yQKtd7B6j1ykT;5dZieo7coEQP3^ppzq z3K{Ajt%-Qf&;w((8@GOch}FS=Ndx&k)_9KFF=OIcH3O9bfU@T!dBC-hV;h->e;M3}+eXEAs;_M?vJ+S;9`y1pR>Lbo5$^WVKJe!6YmWYyO+f-}hKtk-90v!*uN>$CGRf z>nocVz(X+Wa|)xTpmX(@WTmE>drfnSYtOs7hXDKG`(Ucd zoaeJ^?b#4}8Ypa=-D|O}Sy{a)z-wel5Uypi_q&8wfZ=OWg^%1P;UaP_H9GohW+n4P zP#4F}(O|p5;c#Gs03mn7|Mb@IbE)q~BGYG3&ndyc?Jng>gSe6DWvJxDCp%CTd>Pi` zF74->VZ(_sVg2PqwRCF^ln^c>_igImyD88K(6%ae@%O9S`R@JpF?{_5?D19~Q}^R!0a)q2%2 z|FD;KGu899_1gfC8Q-Q55R~@ad$(2N(ep5}MS7#Z_9Zkjxq%}&-FGy@4-VTaW8eQ# ztS`ul`Vy(Q65ZRRxXBau@{OmTSNehd$jU0a;vxj&hM!jz1bxD&`L`zJt{ueA)dx&+ z%?t{)oStG2ftoqw?kJ0)`fcu1+%eJw7g>Es>~qi}~BqJg}voT!Jyk(r0EM?IoQNHa^D{zk6v11+`Ac!lE*6nBYwwJgyWq75N z*xFJ4Kv|0%rM2@0yK=EX==ZrMc%-?LeX`+w{~(&6KNMW%ckH8^VY>C=cQ-j3SD|=Q zSCP|J`@YOcz{U5oltgH!f8TcD9%@;)nfI{2u~!vdcmW%$i2&!{^wARZQkRan7@gOj z5m?8XeseHv_Uh2^{Y`P@ijyPX)SQzm;o>U5pTkgWIm>#+?TUR>GI93DmAog&K-y4p zWwz?{;*6#LHNrk0yffkXD=+GU@W0Vkcx5E*=6}i}G0e1r=YL`2 zTa9qgfEq1$SF{zk+_{+M2Z$QJb#1ao!TDMs>1y{U&_tlf1P#FeAZXdfe}WecUQ%Y0 zmZr&Tm^Ciuz+qxGd!opsN$A!{K!lUdUj&7UUstPGGWxt)6s@MHZNvliI^n~w&CSxb zD?JX+SB(@T{FG%pCsSQF|H{tpkL#YM%Ht)Iu!NjCh_ES1D*m#`oz`?aMqHJ|b-TSB_yO<|lPjs@0;sVa9pzY7niyEnoK;L9 z0J0Uo#q5D%(US-Z0kSlBF9c_TU}Z>#3$vASNr^8q4@Sa8jTA3N&TMJP{6KVgwZTZv ze54twYA_gB)OK;U6k8OYm6>#SBsRpFb@3Nh_PDXF&>UPcAE6QlQlkaZFl$-)T>2j% za11r_h;%zXyqI7}sEal(Jgj;s%6bwf0BvPM00)7R<*pD_sfcfo)0WVy*>Z)mY9RP0 z7;lA50-d~K9`Xi;2=tIr1B+<5k}w_$^HxMt!fvv)>d-mbWdRg|xmFh_17)ou_&!&E zgC~I}4x7CqJ+eEc(Ut>AVflfMn7XZLCxJ$A0^a@r2RmL4X9;a&J zfpUSofspsukS z1Orj(h4SO0SL5H{z4Y@H^pwI^0CqWRpv*UZXal$eH+{NDYLQHSiJovg_Hwe;z&4p< z;VqLY6*~*R9LB_>kq5tSBa|B@#oawtQ2svxvB+CaFj7B2SD;>HI79{z+ zfa2|@HW4T;+Ih!*gs)pT z@eK4BRU5$|{&dJIkt|x_k|u8^eP*p#*j71STZ!?w>9~4|bNy2kqRRzXq~VncDa}p< zt%%Il07*`vUb-s~A}9#~0QHE9AYGit+TmNTOt#Qe^ZX`9c|d5*du8aq&gk}5p_FEL zTL+cH(A|%@k>eYwe<*u}&^wtslePigyAQ+IBWqaBdv!wVa-{4Pk&>0&I6)sh)i^rJ zP=9Dd-bIUzIc=PTuqhn+<3HN{(hf5&oFW*#wD47j$(-lKqh6$zAcmE889Pf zKFgjUO9SXOq z>wU8vvF!PD8#Q6sG>x3a9sl)?urAb65hPi+VmxOEK)n%3W>Lo&>3YmS4RQ(Kbkkr2 z5JpZYTDH#QKzdMseiT?O6V%*~|uviKAoyD?M0?(#a-Ck}e!YR{#4xA2bh)nQW~5?tKG5!Ga`{&N8Vg)H)0%cQwaM zEA>3Uqeb0GmS|!Z`q!+TGeNl(BvvJJhc{C_9Nc2-+C_ipyVqKF`V14v)DnFQArQ!%FSr3FDm%S32q{;KnIU9Zu9h{nKsTc?vnI_-Hon=Y?Mjlx92^!GAx&D->$^tL(^&BUeY-3 zxGkh9izHoWWL%SO2#7@GYJCZJb?gJ-D;uwVhvb(KWPHgT8^CR}Qews<1i<;q@uusSY z10?Mv>iIN`3i;?o3h`wT;-FD$qL083Q}nq_9x6AZXVJjAnJ4MDYW02ls`0A)^C)ob zQzwf^{urpIadjQbe|7Sb_E=3-D$mgL=BB4l-Zpuzpu@Ca0Z zzx{51|3&Hs5I;<}4x$0P-bKpeUjucW%PNDK%!Mi%n{ZEZ!@pHBHV*c65Ct7Unz;Q{ zu`Ax{-+v7{=$_T_0 zb^~|d40-cV9OF?v`c_wJU&hIMk^<0lK*0)APn>UW-{cTB-Me;v3Aea^EOKi2EU)C8 zWo4frGYa=7*7&o?Wl9ar0_Ues6CyY?0X{e^0dxq0Gt{aE9_w)TITwU)MaB-J$37XUjS)LN6PkmB|*2r8hju(M%K%+c0#I{SDE$Ej2BH z`t3bPNaSDq`W4cbn@#!0P#*C3lB8Ag_+l|UnHuQBhs^vAI5kCTD{*cqe+!WL(< z0bq)<8gQofygtMH@_pSO7%2ODbA+JMZ)u~m=wYr)0&peJ`g6k(a?^3s+V?d>xanrK zKRJi{;^6fZx~}>7`}^pq$xxuxYz6dOcP5VuaKUdAyPz)karo!202iQxWA-`P=ld>I z@||;8!GqqzYwQ$pYPxEv> zT{HpM>Ml6+F<*E1wtjUo{9yzbcF8KmJxT;SQTlj@B2cL-0*LA3J4n3zqJhVyLVzhJc~Cwoprg zZY}h_ly~|i<{Gt^3s{8?uoc-Php$h{mK&QJcK5thpW91P#I2o+@T}Llg5dXsw;7GA zSJ@*Q2Y1Myr`?-A4{<%$*OtEsw(LK9ur>(%fV;_Qy~mB|1i-<`g|km#A58|A^6SCh z9oow=g6y}F8x`S|oF~I=!Ta?GO})177tEWlxQkbL@U0#6@q6#yrt>7kn<%QDf)~SY ztM6dMj=s(##_ypv%c(a*zt=5G+`QV}Mys8KJa_a51Z*#Sb*T0{@Kxs!uQ^F|6O=5qo7NL1qJ6Jx_geG%k^gy_g@eFPr5#J-&fcl z7rpV`(d?i2w<*iQl0_c=kQGj+)c`;W}_(`nucJTg5MZa{|`J|+8_5`QZu7^r}+;6qg zvxKYU8bFD^wx6zF(VwLvC!-N2I^BXO5^o|5`0E%jk#{vU*s9m2LIM?2X1G%HP?WnD z+)rgYy?>%~EKh8e8h$(8rQ@wq#R>yb-|e$u z(V6P+zODNAjWkqs2Z9T~%5T~v!kdfH9qqOgf)_@v^HhGs4#RDqogu)3jQNXv$y8h3 z7vQVmwimX^f$hZCNrubI>W8owaQ$%foA8WKtF^>u;dkG++Js<^-_3IzK(|Y=Lf@tM zRnmb*Gfvz=d({8-@RHKdtKxhM(K#1y;TzTjNDq=(l zirNZKKHpACG|7rLQ$)EL6q_mz#R}(2jP=yr6>>fFS}af4qhMoJqZ!*ynDn&tCtUW; z@V`4g@<^kc?|)dZ?LR>y@&8AT;?1E^06w;=E7*c7FC)E_kwXo24+xH^lxU+v2+)Xi zLX3)xLeidbfjobIqDQPm4_XhaC* z%b3$%EF-AbpfwBsDYgHI^V4H_|66RGDv)>c+52z(z5C}V^HO^yR?gSzxmHLCz%=KW z6di5FAx3k|uqLw&Q#p2|N*Ntt=cl*oOdX(Jz*;t`%xIOAXU|rifbl$;yfcK&U{r34ZQK1ODu~h@~OVmw(0_RXl;k%730OiK-*E zSxRm)SC8!iV(B_MYH@GTWlb^Yy}7)uBVd$1=15VTS!%q_P6`%&2|k%KJD;I67$Kq% zBW1G1LgoAEPEsN7&D+2%PJ%AY+P>CSFy3#7> zJk43=Y2S!VpD<#mL&<-sxJ@#9 zti}iSYt(sYkq8BiJ$qU9-Yso-QHo>wn$>vND?aSGF7@Vujsg<-mjM)gAR6-i*-cdb z;E7v2M7&Cz*6^`CNw%H>AYu?!2I(&Kl1OTgTzuCBOxr(PE+P-_pvpYSgEaC%H)^UU z+EFGHM6$C+05YM*AM$R2QG728JxlXVsZj+1kT*}KOeEDEHB4I~)+j+W?vrf4jpG*Y z|DHm^qCEn6#K)4jv)bP=U*$!xi>k|2Bg*ZWS*MOlzqrLHM#m?aj5TQVJA@NM=*r*8NlsqmO$m= zp+S|ibZQA1jFLk3z&ry-GQlP9@MkY?_^MpEnh4PS*uOi0fE;UNECzERg zwIn!_R&RwWM5;FfsDp-))+;E4svc?zUv^PW5gPYHxj-aktDQy*qxGZv7iNo6wO|kF z{ja577`vm!WH*16(S4xTRO;-4Nh%e2F$LGlr z>{jn1@>Y4R=}n>nW%W13QN0;Xvj7i5N>a;I1=g$A?CPw`n>EV?d_(+}k~y=j_Yv>Y zLVUJ1(jRaEn81@Q4n?-4uEIgj1go5bOnW=p8dE!&^pGnAd*gbBESpb0JsO`&ml_?t z3+KRrV2}kk5|IkG!E@PniSSfbxP#@h(Jpx|S`v{AZ z_L_t`u>>H^7%o7c5S4t_+}ACeqn=!O9^9Dm8@Ab5^uRI(U3oWLsx>)EH&QL##@D9m zz2NFheMgb`&;!jWnq()Zm3>oE3tkXB#`HJ+Z)dG6Z^Q-H4s7^1+e=&S=id@yG`E{9 z&v{n>1~BQ@ZQcSskN1{`o*Th}gr7rAl)8Y=f$6F|!^k4T`;H?1)(6U$D}D^Syz}qp z)ZN%3T(zCx1^tJEg<8Pp>rB@rC~tWbQ^)?e(S+#l;rwkDHUr zN1eoT-1f(}Vb$@?&gXa3x~4&=y7|Y!$zUcRsmt3$kss4{>r?stzHogq>@f2k_W%=N zt&giqBAU?i`51EM@i;^`YuS#lPI>*kZ=ve*>j3k6&E+4%Y0>L_($sh9DtIkW@AC0y zhfh2gk-^i@=V|EQ-XFN5U>D7jX68)gKtylWT&2u2UHS1hxJ22>nT_L1nV1S(e9cVSz zA8Q3zR91)ek@zrugSm`!mYMeVAQ%|HD6=zVSgFQ7WWM5-1AnC448{VRrxsh8J*RY9 zk1mXiV=v_XK@q1hrqU~mBLt+kMndH&Lt9@{eurZS@BV1#O8*Zz+Ss7pA?SEIA{R_O zVrc`(P*C09{IfYRj%Ra%ralbW-mYg6aZ#(YpZ)xzogolk!wfrKqh(w%SyCqeypE5r z2jQj!CZDn&#ta}|S*N(wxO&!+9Rm;s2LGKeQ zpYK_$Zq5!LQ?8x&&E>rd{s&~=D7~wl&DN91L!MZ(`HEsDpzmY0fwPW-VQY1^=U_az zDRT3wA#3ZoN7{LBw-=Dz`8)|o=8UVm%xUsEEA=qs<9zYZ6j*DxosQD8wV1iyDi-*^?(!;yh&?=F6p3a4m_1iwkguS69Dw#lor^l>~>url_wXip44h4MgI_?3yLmaasG_E%XR9~vB;-U8k# z3QvA8XH7J(bxXB=LbTL4WU`@hoB$Fn2bJIg&D6ks>_g z5En8ujbA|oN;8d)R@|fIFeIB>bdlmx*ik#caE?uV2$}u*Ms;8wN9AizsgAv(MMABw z`pFVuG{H!V*fs{Sd}yftQPP~g6bv3aamaXHWl<{nBc&Z6hCqpC(}lQ|L=xk3c)r69p0RRKfKNN8dM zhNimjrHUk+%!PJBdCu1aJERs@QaK7{8}!}Z3WPQ+(g$$@Mb;0i6B`s-QWykXF8s$H zP9hF*_^?>DQ9%RxHFl(iS$r7;G;UjrDqCfJ(qMkXLZT(Z&|YhMxk`vsIK4-ZXVF1* zaGa^%Ojb;UtcI3}$i|rnq3aK!W~>?@rnK_z(oBjQ=ZSK^z!44?mH5hB{uh+{a(d=0 z2u#o_kg0P54OPqYZ?y*rMMLPAp7a80W%iNbFp;@xwNPgxscX$iyknY?$FYKXJFU2P z<99hR0*!R~MvO5$jbP~h?BoRbXYuvU`u!c=7j?}L(A*6%L-kOtgsrp)uzg|x`#xgG zk(k_AjnvSlrYf*?y$BK;E(Lcv*nWkd>76(JNCr^zVLOj40Rt!*M{dNsbp9`N)h@_F z`6Kg`ZKV*~lFg`Oo*ud^>_y;jA}NhMqQpf<9b*eL^DUScAW3pS9OxEMvZxD>r4zbK z^X@JeG_wkCsO!LpGRi(V#MK^vO1~KzkJ1^jz*kt5A*xJVzp>rjsX3WEAX@jvq}_%- zVn6HE=b;32JmJYT?NGw|cPuKA$pOCA9=_CRnG_s>NxLpqt=R9zLaJGQ`Uuf&uuhs5 z7pa{w=R_e%a?U(rE`5+5)f?^USyOLK%0k2oQ;f8&KXa5ghC-;A@kS>A?m*IOyU{_} zE0B4_I+V`Sg>Bf;T*{W{h_abLaTQwPFR(d<^D<%?0ZGH@eXg(U*o$AT&Q`?nK=@23 zL$Z)EWFM}@itEEv+8|`l8B%?=sP36WOrwA9*kG?Gkf)AM>42>A$Y-l3h+(*6hP%iQ z6FiHXxH;@&c25}+`08B&%!Mu#V2?arX5odM5fFG0ahz^!6R4M3ZLz#?ec01$v!|2h z6xm)e<-m@)7!pQOa{I|Ps0yAr_O2nQ$wck~pvYA=6n~NgEsGJsK0(p{>^LO0DRC*H1^OBaq?|K7-Re{wUF=9| zWoQXLs`vV|T_&mrU}*pumFs17ZH0QT2=ce!;Zoi&AnwfzCgRbZgrS?6yQIsZ2hP$- zw=WPyihy^PhY?zAYIz|-o zK;$zWvM@CCs_TgW91Vtv9W=0p2{6BcPV2u>85QfNTUe8^>c9t?c7if#Z&y<_xx^~0BEy6TPK4alydX=1qAj&Y_Q6aBXoH{SPtvTC#@oXeSGh;U!)E*q z)N^{~5o6IIGGzx+GTZijcAIqKL_T5S(G^7-IWmfA#~D%g&Bi;|!6M}@;wBh`rJF2< zz>mN5MS0Gws7j}^*#i^8-vW}-4{jnDpx=%`5{-lWn@T|WF~~)H7P|yWA20#_$q{5I z8rybn6w9c^7+1K-s{NK0{w zb+OXd>x%rGJHv__OzVZa)FToj|8bH5H3!lTq!Y>zLQuU18)vZ_+o{D~~Z8ydeSuG7eGLy~23 zED5pyVkc5HKy2=hk@m%v&k7ZiFP$RE|3kqb8&J$vts~cqZdGyCg;&lGUp3vlu95Lf zEkMpFUu9>Pc_aUe<3fH1UWhZxS!IU4H2aoz-qv1zq9xeTph9eVUua}e1g ze=eSIv9aj?@u%>g#Ayf;l=J#c>i$hhH&i;u-~Bg z`UgKX`yu+FRv&wVlg2RpE(qn+|7+<@7VtBacWj{2q(S~X?CVe$4O^x1#Wy zG?T+<=(FP@-r4P}{rq?BXOpGF>~FRFZ^^#ybsa+@0k$^gx@+eXmS+O@8&-$D#+RvR z!MDq?#3su){YTn7Lvl!q5*(tYo^YAmug5iewi74^?aGbAi*LK>D*0X(z!lsiv!4_m zvE5F*PyTpw2DF;R{UJhz`Fea$y2J6fecWI6R|(0XVds97;#ny=5e(OmB7(Quc>nW> z-khGleLaU;jd$X~!$2=Ip!ZTx1Po!?@g}M_mZCY>=fBG{_jf9({lb8e{jY%O7J`Fo z@Dl`PuX4w2g8y2<84!sk1ML2J37VUlw-Bor9crVHT3`!X^K@gIDtpP2J=K%e@u3@N zF`LLi2BZByuFfeqkT&Ypv29~w+qN~aZB3j^(6OC~ZDZnzF>x}nZQDLM-#It`f7w-C z)m87s?sx6I_Oq07(yz)mHwZuWZbzp=LdzsK{dudN8pX*AthyK~IQQ5L=s3#bHa!(y zNX(|7SrSbQ5jN5-f+aTTMXAwXr~(b=RUTssaE>x2$4G7VKO;erXO`5!fv(RNfIK-8 zi>N5&;UNrU$FxwNIXRyS>PTX}6evrP#Av z=GorQZx8e6mjaPeIlx(G#XhouB1ZS^-+I;LF9osIz-<}ju_!qCO7C`BQ<$?Ti7a@x zw_H$+Z?WLOcl(UKEs%5wY}7Pe5FO+YZoUre9(HR!E&axgOQIK}`J&7JZ04Y$!H~9alFfh!^ zBbXpSKMP_1SwPoR#`#rE~kK4skeTO)>E+PaXYU5g%tfpLHR z`w|8-_4M*`wl()+lQHkLstk-vkDp^|UL zCKa4$bPJky8_U||*I_cd0LWL`gzpFJcSW8KVsPt}8z^F@)(SApmvK}W=AJ7utF{db+L5qfwy$m%N*>dz3 z$)=UHnvfgTiuW@Rvye&wB`S^!T*FPdGEt0_eOb{X>Px*# zT0@h2(#DSJ+P&knR{L)2;swh9E6tb+`M1F!RyL4xK`Oe0G{qAVkV`8YQv#hb?osT> zPbmu>axk+32Ql}bSfR5whNvenLtvfRS*qqHUWTG$?D<^Wu{5bCH9qlnnyBL4@wq_c z7+CSbQq)}uZbF)g9MM?r;Y}K@p&XPt7`s&^l1iy9wDkt*uq|v}&d%y|E^e)S9$=D< z8Wh}>jT7V)lo>1nHW&S>APysvE8vlVy8Q_BkAO?Z&8}zh-TB{gkEbS+gJbjMu_An% zF8lY;wTo5GZ_e}57t=w>_Cs*UuYmVSdkfN7%NeRWyYHUmav)ZPPO?3#+>G!vq3jNmV>{|p=)>^X# zn_ssz^=I9ZQ?UE#HZ#{CPF{XI=D`#UJ^m%QwQ4X=23?jBDz_Mngzw)lGl@O7#?d^pgFWUl_s4RT5yY=3NRdZ>xPFHQ6%R8g zL6ju20(_ZBhoXegbzTGu4EOb{z$yqbmg`HmH4jx<3%BFD*uK1vZgvQT*+s6ckHt=n zP={ncW#Xe`731ZYTGghUV&!uaYf;Zq=j7NgK6J?3Dp~a!BkoWQ&uYe7> z?k}cVjbl<`yM9z;NagB&6RUdKvD?*KPWTWCwS|Maz$Ku0riH#k$f4&EVrTJsNGf;< zyC~zXyBf1I^EAJ{g?sr!orx!OcY0hLY$0y6W)S=-R+9X5DoA zPo;?XtN%6iNcKghVgITyMe>&AT zB)-pc_>0C4#P^z z$t5-_(_65~>x5BB>HXT+@}fAIL-jS(QfyLt2uTWBw#z=212S?jw5tNvhu?03PRKXY z_i^g1oGq!aa|64?{hj^!Wr8l5i<7w3`?Af`;qB%6PYjcKA;Kf|c8Mz@K<7$W@D;hU zQ_++FmWP%RZ3vSN*=#CiUhMILoJ;g(_NU6}!iSHNne;b9TKq3=`56c!x!hB;CB~*v zIE-gTYRSa^TUmZVM?5@?>hOF;Oly2*CJ1Mf(Ktg7Q(xQN|N5CDTTs@3Qf8c?4svP+ z>84+&deAQ`pIq?GL4|@Iu)(854+POe4K5(sAxosc!qYL=k{>KWQa-U)H7URzG}jK^ zP=s{%Ok&XaMf9Ys7YS!TPUD#%3HM;boTah!VFZ^*5IY#sz4&`SKrL~;SQXdJpYXF7 zRZZQV1N5@{f(^M%X+=e$QnVTkkMae~iYu~BQWCq_a`Kg6A!Tt8Frb9X6*3tsJr0=~ zJYG-sjVabX9E~VB8<(pZwL8@MdNTe`ds6xJ5`6zpw$cL`^ z!Nx8m_N(O3q~2)lN~)&MkL?Y4*R9h5x`DeW7I(kB;aaNH7p|Y73M4n11OhnOxc$CD@+?FKfQ0Avs7g9#hN7W?=sx! z9OF1 zLpTUY=3}A^ix;$&3d;$FnU6*9St%}YMe9~?gl3jIWQbeL6!8H^Bbj;%Y}*<29wmDQ zBvQyY-4@tAMC`A~dkF~kPI~X9@phM4|MYQ?sKP7=$mh>ly+Bvz-pb`vCZ z?bBkIs&mX5k&8W(&*icQ{=i#kmXMN>MURE@@UcbXfZwM5=!0!wn>|Y6=NG{c?SKdv z-MV0&{^WzfK?wi$I}&jrKh3O=HWgQb@=l&#=C&7TR&l8{LlpSQx`4J-+bBf7hZ5 zM49~VM2-n<9h{6>XEM>m3`0vvOj;;Qkq2Z~m09%%x?*@Q_S z4F-SxCk2!`1Av6*EYx86F`~vgCj}g!SVD{vZ8wtFlXHN$Q}(dhDR?BRnbc6=?vr7! zn94Z+t{)h2T1j5DCrHxR>Z5k;bm#sl0}_oC-1vhNJJljAFd*^Z4B@c8){+H>J@EaC zj56Jyq}(i4gtAOL5wDChXcmF{GEYx#bP|69C2EXWN9Ndtk>FL4vZGn#(Zde64$!0b7yx3Km9@Z;bSNks>hX{%b6N4gDh z^&&BfcL08*RXv-yW#@ymcS+r5V!4NIcgG{PZR9cg75%gQ9lh|hldMAoqbM}StdD(K z{}2UQ1RU`f2hH7@Pnq}2t4!ZK!ehz2bcNe`*3KWHx#L62AmoH?mt9Qk8fDqxkS*p3#SX?#qWOTdp;d^muQqHdn z4{k1|?)KTu5Bu8zb9mL<(ZWGqxUkA@q0N{1eIU<+Q@`X}wTr4|r;2sX@0ve?oV8c~ zl-SBWXFKm)=Gt=^VQ-wp#&`z#?kkA!<5w{gaJ#H)bcSd(TPf~)Z?bdw zXmxVC2`^4Hb(fPmSDIpTo{sw$iPhy-e-!xM2FX1-D6Sd$ zI83jX*>4sTIR30RQV4V#zlp&WP!LdxJ(mC{&Z^_uSaKIUS?6AT5;$~J(!G5?0c3oG zlokZLG=wy=c>+4AlURe=^uy8mTSm;-YF~mK$H%g)>SW&_yD+U?sNbiCKW#Ai z&D`9!*#XF^&Zo6nZAS$gnA@i+Cv7inQ_(667&rb59S9}z=llj3PrNsWqb#rjr70ce z5ju#V4Azlb2vyLkg-NyWDNV@jUk0R&lnW?cv9#qHKZf1>x=Hx($o~wY0w*nclawA_ z*+;vCMu{H&F@7tk!3(l2SADe&Brly^ydQ@y(eLUSqRSljQfgutA58dDOi;PdTTkZQ z8IS@d93mLWnvwA<|5CoUA})^Vw|g6e^Xx{)Qor_pk^UYc5!EV2=2Qi%yd{mtI{3%D zlSZCdI*IkPIlLz=!;W7X04c$-oVHto^{FmX)mTgWnvchq5hp}kTdrbX5!A7T3%OU9 zv5Q#r)bCMPNTb$g&&O$w@6{Vh&hkw2J8bQo{C=mSZM{;wmg7V%jaJuEt8sCkb%&QR zNtg15lch?h@`Ce2pPuw}cCFWb9+$Hd*kK>{UFGe1J}?7JFZpp~8afe&LSY}9iaN&- zya_~-ad}cRg~#%|QSLL0Kj{T>{uNVA-5yEYq5VWVFBv;>UXjzBO1?AU&2)b={QmsE zmW320thpn;L{$9$6H$P(`42}IMiX;m`~Q@bInKvLO(Ov_w+<_7*1;2x_-qP`aZJ!J zL(}0ryTT}>hSRwAl*04%^Pdd*l(67VZe#W7@$}eHb}pp6;NYYmzqzx=P+xrqLVR?0H{4=XiI0g%EjnS2t(x10Ys~ZZS>OO^Lp2AX}{B ziYddbS>Gtajb+Us1j~$hH2NSDkQ>;^pqd;KoMh#H>S6ve%Gxfnrlk?~B9^^v9fo+0 zKe7l++q$(F8jy*Fb7c3_iZvir%fxWw`L*9fWPre39Q`EBQZO8)lT!LtMJLcRODZJx zJ1cCFwP16^3ux$w7OyTi^~wnF@_`odf4XH9hZ2Vq9fqi2B0*sdBB@FnT!COtpF{15 z#I3@kmjzj_B7^Od&+2uSL7fE$H%X~3>&g|bN+*9KmvUG{E&3)DGlE2D9lQLy~{f_EqcI6U~D5Axz$`=D79X3#NR!^5LWPcwL&TcX`uaVDU=lHnY%)X3`U$px&T$R zi_7$8gtMOTI0-as27IqoJ#Hi~<_8JYE=GVn^;ji6jge6*xjVHCCp3h45$ShQW*9_> zf<46i5MgwdoUK`OHE`ePYav$Z#~R5r0xC$(2?e{!sq_hOtS3rcwajDxv$S6mTpx3`Ix^6_K2E%dik?z@M^h` zU$}jS=nW^d?#mJ<)V)2GB;?h#G~NDj3PY4R;R0+vnR%IwySqQw9M`!95pE5AVf}nK z&kIKq%bQ1`AE7OY*6y)%eiA1y>k>XVGAOk&o#FhHY4hIOQUok-pTTE>i|;2L1zRQ% z4zT`7M3U`C9TPqoc-}PMUc`#m|bHjl9?bo{Iv-k9gD0+!-gLUkfvX?3v(qOvU zs{5+>7n? zHH-+asrx*{Q|h>MF<85j$@`G7i6RmyqCsv1N|2D2$Wniv{d-<;_i49`$)GV=L}x)B zYH|ZQrOO2fE{)t`??I!=qmY>?S^hdjTLCBA61g(x?~!}Le?+TtIYs1FAOvAB@DFd|Nr99o9esO#GUBpVCgf5Q2u(ER_tOpbzSDC2g~r}}^KE9{DWp$H z335(;!)#b3ugKlM!}!wAUH#?HI_Djgp7q6kMyci#A$Ub(F2)wu{`PwZI7D6ien5lI zYG!vZTuMo^B7U6PCu;S`g;&X^)wDD1(HYQwbkcK`j$E_Pb!O0Q{rT2U1Kch2rDisU zf&DFB+TNUG=z5uZvWlv9R_c#(5t~(SxD`69ef|ic)?eVyc)UjQb(B4#pI%GX^K?Cv z?LFsPk->h&=WnMkUCRZnyP@_FVb5@$x_i>$$ELde)`7#+D|gMh7M}SLCn|E={lEAc zv7d|)g|r|bB;xtKjOdgRg;7e8 z(+)RXeDYa6ebfG6eUYmi=bkyKSx}Xtv?womKoygj*EU7}cqW%)$@kg=#g}&L?h! zbb{YxI=$y}8&~RMX|}9{Q>B9#4UgaN(u?_nwZz@$b%{wD_AG|`U~v8Q@kZ6M1f-$oX=T;JVRh@Z*rZ0upHU*nF3 z#qBH%Q{PIzH93xbYeOvd zJzcD7YW@4S4s}a|V6AKs$t>9o#|8B_GKw0*+ZWVz?NrueCdKw-G_u_r3P;A#b%f;j zW6=m{A(s4{Lji1O%u?Z|RrHswC+9*Z@_+pRaVYu4B=$*EZ<=IVD_atbxfX<*=UxL? zftvG4m+U-=6)h8>gL%iipn#z^?Q)8!QN6Entq`X02eVWs&CMi4CO5}8nG@e(AP$QX zH4h@P4P$iQ)~(`Op;l&gh(dv>Y{#6p7}9s{DaJm`2Sff$m%jwpXf8-xWs>dhIq$n5P$WdT@ps_Z`cCbN#IvWWxyxg5Vjx}@V`n@Oc_kQ=Dx&089;A(=@{Izc~Y ziLcg|Eke-5K`AjS44Lwr%AMz2^CR=PY;u?uGZ7gS^1hU4WVrd}fIlj$_#c@YyL?7| zvJ9mZf02CbP{A zFyN`0QUaEC#hu`~f)s1wi`PB>J%r>`E=OCa;xhgMljQaFeKA@x(99G73 zp=DXo7bFsi>NH6*gCY>`g-=&~yXnxrf)(sX4%PQdRE=}f* zQ~0LXsEjnfMr+$-!W35nBb#OkoIoWU3QqaLx!^R?EZ+7L9UYodcQ2ujL|x83XB|Ac zby2STgOe-J?Lch2{6Tl8D7*h77x?Sg`D&oj`Bd>oP(_DF^3&u&xTVALFh_h0yp$K4 zm3q$*xfX8YaiT&FC7D_gyX-Q+uR1n1q;KRO^B$~)uYJAp4qXjJ79l$ia8&dM>>dlN zk%|mVg?M0|S^Vo@=I&!zwQc21kJ=jabI1yP3vq4+j%zYD5m7)a0bBYIC^ETw+5FbB zfkkoac+pawNOfC15g-cDbpvl0l6;3^OFL>o>Df9n&*H(EtJ!WsBl4Jvp1=C5cn&@s z$f*WZ?`tjzWBqQ}sV4*yyzHvS-8CGBRD8Ghiwv-XFhUgP+rO=D#OpRU$>=%R(ls|* zKsQ7Y;?9JL5O;yS+q|s`Z>F3Zb~ItoLEi1``}F-1_k7J?L2h@WUImpP9MbnvB3KqU z9pCvVHe#Hs9jA&V7-tmyE=7Ro1b!Oaf_oUQyt;a#th{qhPuBos*RAHWVf9_8rvJ@okMnrOX8)@jCNk-Y!db)3yJOAIW`Ye^K$CyvR%dxTZ8L>6?e)P$eT zyGwj`H8MZ-i&OzP4iU`xE*fA)CDap!CqM?J|MC+@h~I@j@r7OHhF$Sf9|vqCYgNiw z=q=i7!^%?>ARgHXe~J>Zw~UzHc#0F@FPgul-I-3uDF{IyS&F8B)0IfsE!SZ_w-Ujg zrInvzVGB`GeG4^%gl*eGNjsADDUm}b!`=hdZ$d;?-)3xN?^SqAqDOz) zsBwmQ;F5ekZ5SFR#-20_aIR6r73cYOFhbw^me4Rn>)~v8886LL!LBM6ONEh*OdIRt z5^@?dq+u>4|5AN;QtAK5Bp`^8J?h%3L|4l-dOGWecbLRL?>9? zx5^mb;htB`j=9PPf{sCTkxCcD$vKVUK56mM1Nk{OzVM|CxMK zSR79xvVt=U%vQtPd{gx()7=k7DqL7O;ruNt5ON)ingCNX zMXrv=F|4LB^4^g-zD8lqDjRfkl8UQVd0pa8G}MfY4k8l{D!sa-IgOaR+$+8B$SBRE zH<@(<`YSMQd*3OI`k9X zF=~(4Nt>=o#k{z<&x>#8f*22-)30;%USoyESd}gaBWasaEIDfw32E2-T@SRtqs=f^ zq%CJ+c_Hv+<4L0}PHf?&E84d6(q3Yzc(r@&$K>6(OWQ$K=2{tJLeP+H(Q%7^JmApz3Ts9^;A|xU<$szseJA zL4sY^t}J0_+1Po*ZHy-OLybc0f>KNwpYv=fb6V2;p5!5B;N92$wGea_8Q-7Bnq*=E zl+RyyZTsNqU?R-fzJ}P|Lm&%{9@h7f8C`(kw=S4FQx$-)5H~<3oCdt+d7X#5S9YL( zQcj@i3P_9Sf>i;cv0%q4>@9%_v?lyUk7E4D*Q+Fo3npq1XP|-eFAC_Oa($A##_>v=?(uqrmSYHfG{_+8#G*^8mW}QH+z^<}IuNt{BqcmYf?z?5 z(>ykcC0tVjo^mQXgTS(L{=LeKZ1y|OQ!S=@^;Rt<2vn_%8l|Ntzr}Av%SJwPBUHk) z=?iv@^&)LK4J24!r60cB_sWsX1@J{a`j^~Z#ame@RJV$4=qEG|9=!}dHwf#%0$GBL z&Q5oK!z_{4Ki6_nl!vRMwz01G1tK*nr6Txn2Y##)*P*!|MgY>1eAHEB)hyW%@#Mzp zJtdw*3&CDmA^Zsbf8=j<*6i~xtO@)`jArW!1K-xr|4_oTpp6%^38LlPTgb@+k|l$#|g0( zFUd84#&=Sr(;;?C`SAP})X|Kd1qQ2fDPvJM$|CyrDu5${mFLxv$ut-K3zCh?UQHYZ z9xSNT!{*FGT<6vLMz5E%HO-6gScO^*@(5Qy@80r@g?VxWr$H)hp!u5(By&>ah`#_N z=1^Y2lBLSrC}$Q8ao(D|>rR3ERW;0yk8I&`w1D_F@q>7soo>aRoX|n+Jg3Og7u9fAvdT$^ zX-U3Pm7a7p#}Vtl*l&)j1wY-vvjiXzFJSRic0ZTnhE>{d=HJO0ctKLZpq9RFtW>)n(e@P?U^sK|7{!4QcM z%%C-&%*bWzdH>ZwZk}#=hdkycextRq&8j}^^#s=)de&IUtE53+H7d|fL5;KpX<4;o=LFDOJLQ-f7h)U))LZ z8(R|5Y_rE>v+e;6?$!5P;{Mk|rxuO;MyZ0gH0ywm5A+y3#rtLE_wiC zhMU)+td#r#Zk&hm_bx+398)s4v2`t;Q#NA(=D(lBr5xD@5AAv)Sc)G;fAd z0VR*+MR0el4?hrKb1Ah(9Rt$6%f_fK#7kf!eu0O;K-Ya*89r6r%5OXKcsY7(}{m z%k)TamiN)F=fnT@U*LoF)5N5o|CBpF%EYFQf-_Mg;TsKq!D)7(BaHfS7lz3h3 zBT&zWW&`ZOqgDM3Y@5!i0OUi^2;1l{5Bt?3U!$Yh2W-k3-PkA(F3iiL#|iE^0pTx% zO98{6TLP&9N0|4kH%_BZ5X?;@S^&Gn&gh1jQfTWzN&3M7$!K$I2Oik<_QMC)D~{V; zk@S3tvtR5Gf;gL0zGE1F&7Ty9>|X~&;U0yh6#1C0E`8)6rTD*Jr*dKf2ung@1CQay zaRiQ^67nm#%0Gludf$b<;u}6ce|dOlp)WsrghnunOM;7N51=6oD?=4TpeehOkVvQ% zEosWa1j_a(+qKseoB}oPmF+3o`oF8`Ds5|{^m{kzjCu`(GYVidp0fG=&^zTm=5kHC zuv!Ybya+u0!%c`zLeTs{icz^kzB-~o(5WD$+3jOAxpa9BHJlF?yawwk1JnCA&Q&IWjo5DL5!rjAUxU$w5v`v^(}v^5o2I#>=Z zSo*tjAg>)+stYTN)QSu1l`~W@kKqgXF*G?cxkSAn>q`+hl~ZZl!Hg8liS!ro{7(Z3 z_LdScSy>^9q!Lip%aX%Ol`_NSdBXqGq7B04Xx9vcMz!o19qu0y29vV0EWBUb;WU-> zpTGKTijnjV-w1ytl9{+Bufl$!dBk@~%g{K+3xXc>^^VAdqv$JL&rwKkQImVEKvh6P z+SWXq=O3K^xK~roGc`J5tuW}qX{AHa;4*w6F!TKPijmx(HMPq?=$x$a-mQt|YV&(g`YwX^dW^yEx1|wD~$V+yf5gVrrM%!Sv&g0CT*T z9C~4ZGNpWbbXko5L8$**epycV{v8<%Sd&}L(%xYWw3RHQ$Zfp4b89!W1BRN-fJ*+Kn0cSuIfJ^c2A;?*BIh{JUH<5uq>|+oCi};naT46 zlAk7&${epPD_8+bxPajrY}7+U3+iujI(EIDLbq^@!HpX3kpc8NoE(j>e;%z@1wlN% zzZz(LTwaBj4HpR)XgR1Emq_PMIidd=*j`g;js5i#+9(UkbHMEw`kO{iXYKJ0^gt*e z@POxPGk-_7_lBsX9+=Jt(m6lnMvj;*x8q)OlfO}O{p3JyV&1v zdP-qQqEJ33ihe(dRgOmvMUBkLhqR0mw>MlK?{ObO%t{NMx}M)(oTdsRs7xC!IwXT) z+M4u;wMZF&hdBa83nhvm!O_aZG&;-wWu#-RHI{;@3o6GZT{aH)`v$P^(}1JJdigq6_4W6@(v zH-s6*xVp$Kdga&+5_d7!&#mF5@_=Hs&Mx6RlkDuEz8Yl0u%g_rDJGN zb#rv!BKX5*maVnCjrV=D)5npemwmo7gzPK_xaVm>*ayHbtkxm5^IcQ>J_BxF@blPO%TxBT!!yf-6MwmIrTx{18;f7Jt8o0<;GJwU_{ ze}8QP5^=9`%Roxci-}}ygCPp08xaIEnyrdG`ha)w`J;6dr^WJfAe)p0-@DG$>4)6k znYWkeH0V>OSIeIEx=+hiye%ox77MMW8}UB(icuR|4znp!%tP5SG(N-GcgZF&spi+j zn6;zIV^imn^}4DzIR665-YQxDu_aGOl;ZWcaLjdOhMptk6!tdAH4?|KC8?K@pMw=j z@Nz9klzzhrp*pRS2xrHOw_@n!UX>=}fmEv$K@gmHog2Uq_fV`9u9Z(7$B3a*nt%x7 zP=NiL^EzSUFN01uFyj4X^z&8?f&|h32?R}^882rB?1o5VMzjBc!v0%wvq)B7dQ!QH zCTz?tBx{TW6Z{AOy^Vwy?2?ksy`=1$*ZVzCOURRWWyQq?#X1@#VNe)qUOX)A>1?2G^jI+_qbaw9DYp3t`8vMlgP8y(4X1iOY0ir>1FebP~9Qz zl~ew(uw)f;Ho>&4_1`k`h7yq_AP9Shr4*ik`sNs5=mih3d(8&IUOnKhuu1oaZlPO% zWHEzp1#f?w9xkruN+ws1YLmpt_s`(H0d3<*!6dw=gDUXTr2rzJ z8}!FdVK>oW4<0!7U!`CqDNHCo(?Suc?78@*%J}a-jcQePvXRw z(1fMrm|xuWL9iA-WD)ovV#Mm6qP4W%Z~&||1YBY<<^<9B2`MUa$DVP4W z!xow(JP-LG&V$^Emkt(Ty}aQb{j97c*mk*)H-p?e$re6LY@ML}IH@vUQO(VlWKruUtDj=y_7CT`NRM6F-b8EBc_l z?g39QOq0MArt{#2Ylw z;ASoAd4=Js0pksEZm2~6N^tv)AW3{~W_KYCJ4)vtNEGNYlvyd#80VK;5_%OydjdvW zKqcl^cLS>G@2r52ot=ozo@Hv-J*oO}vDXkX;Zv#IvFL+B zUrgb$m$_}JV-tMW0o$FV>Fh$+Emxyp6Ujs1dyuWZ+<``%$LYDp$j!kmwI=W==iLvD zpdQUBD4kQ1CDb~-FSmy=a5(IREC2iOhvnlY-9hnCn<4eN>Ej=Zn%CsSKImF7*6#CH z(}55sI&iv!JB5+yfqz%@*_vL*yCG%wQ3TCWiaH5rA2Y{uk(g};bh{rd9!Zn4`EE_# z6{5b`frxHv^L2*JcR7m_wAFy|g;Jpj9Fl=hTK>E*>{;8*BUk%RyR4_J(Y~Pj<>P*P zd#ura`;N3aKiw6ql%hONPZo&RPMUzdT_qO7E?e)LzXp{hjn+5532|(ZBh$N7)loAH zlQ?`849gaC;o}Su8!}?Zen*0=x;c`5%ay9@5v?si=_=c<3YU`KY$;%BEyp!TF3v!- zR#-h@Jb7iP$N>@aI$P?KW4zzK(sG^sI)rKHrILW%+)RfkDObPPI^@co2$Payuld17`LD9u0`)t#*=BVENz+Zi6 zb)WLn_=&>4g@0dUZs{<=7ynOae9+>Q=PwAb?L;VVMxBM^lr*9 z$vK-)QY#xP*)q7YgqYYyll64SX7Pn#WB%Hf>g!x3 z^HeY^cXl<8n|Td2f4W^PsT*kgv*7E_&S6Q2X8-Ldw0D)5)!48#PDOArpY*o zUwSt-!)`JBtg+=fmiQbC(xYY2sLf4w&MDJzop~=!3NY3l9H{8t=uT;NsJdTz7}>p= zh+CkGOp6@MH3jS!5l)#$OM9$kfyHhj+%r|m=6lw+dg0u2FB9k5=T+Ov8G1r?wi~QC zMP6T{tuDn%stFr(^_CaDv9pjdjYYyD_ZS?`}U zq0)Kr)dA)N7)o2!OD0!2E-1VQEC~eZe`N4}JXNN$)zTiWOWV0L)eSLHReDq}H2Y0Z z5F*qlGMpNa6N_z9O>X+O6`v!|!oN`BWGlL|qlC##MlQayIZe2gL0FH5}Py_2tA+)yWjuING$@-?dnJK5rg(`v^A&--HG1wdiu@8l<*~ zEe~JhGg7LxYFeMEI$wjO3f>a}mzfr&9MVm0$xFMs#1aZiwk8GXplJGt87y`72nS5G@akh zs0h#FRBkud>DpT_PL_yIFDFmeCDacdek^33h*o&^_Fb#GcTjt^@VQ#vQEfIGECRHz z4D`?23w;moo0!@}KL{6Wych3jG##>qxaqyqrB3J1&bxBg2?PqFHnBqtGgETa)SCV@ zTYD)U$D+qc=$;#1C9Q{DH7qs~rSQEuFOIdHqNe(G^S9l(yS$IMR9f0!bh#+m8{P-p z55mg9vod1QFD?8wb-VwK4PA;wa10#k;6Bf|EDfXf6AJO#0e5rdo6{Vohw{hAi9b%< z9M)cEs)epMzazU(mLoQoGyiNhxUn{$b+47+>T_@~AYAprd7W(N&XJ1wVpn?|R=sT1 zuWTpemUPk*JX*Is9>*9ytRo~`)MqDop7r<#81j$e&-N{L#Nu3^;v6{W&I9T0g2yf? zYV2-=XoPCJC^+}C#XA)hE*!^?7hLlk9c{Ra%2)k#1B1z$$j#cW+r~b$+b8oy1vcL- z1m68F5<0lrru~Y)vU=$-p+8PK+aGQngErKv@#m-QZO@i`eU@seUORHCTm-5F4Cb%3 zb2}A~pTzESU5z>UWOwLRc>&JQJZw|(Hl&RRGnzV;C-u0EZYxR$_RdULb}@jZa}kzZ z7vSt1iy&$BW1j#O2U@#^Si3&c>BcQ#Z=ZX8ESPiA$1TBcz4D-Lk6w%Lh87TOl9y`9 z^bC#CA3QllI|%i1x6z{2;g8I5fJJ?KniS7^FaPK+ z)`8)tr3Oo`(zs=!$#|jHHEm8Y5vcwkcjW%JgM?i8G^vMwrbH7}R4j2h!~^^pL64@H zRvH^YPV7pTfB7?-JdB7YHUU#Vt|<*w-{3rS8!>Gp`vnBf3` z-eKuRv%);U24xrmd>E%{mkto}44FT(%l6wLd~fLoZ>%8HWZ(?B}OKdr0hg z1dr_b^JL_ErwR^fj7yOs#%h&v8Dl=x(gHV@cjH5U| z;3c7h?~)1+U#8}(#E2qCO;55G<_Z>}wIQstvn{TDR85_AfK>|1@#P?b)uJ@BEH1*Q z3U5PZKVfUQgL)P=6)oV0syjpQ+JyblZ;q>)B=T1-HD}?HE}IcN`i0!9Oi;yfJn>OM zj;jdYHOUpwtKUf5E0#kst46=4f#oSbUX~<{CPz&+mYX+Bgz;{`{{uTb%^R&q3l0c87WHE+@{} zFaVkup)2SE#lnLbiyBY6s7W&xkoLn)hWlH7&z(s57Gr#feewAv6euAvM`6rRvndvk zCun;nRU9i?r>QcHvN~yV1lw8nmeuzTmpPV~4}Q&--kbjFCw20g`N@6~aC*jZi{~&p zpe_BUPWnWAq8chrS*vwkvN05~JN}cdT7Yr)W+Oo+_-EqQHMUp3!z~=et&oZ=WA&=o z7pBiF1@G|_y^t9P;hk`+o(@LG95UZz_Edq5!7;)Z=l_s(j@_9++m?=P+qP}nPAaL` zHs9E`Q?YGZ6}w{FcGBs4yGM_E`VZ`nYcI_C%+;EhTx!b*0TZm2hr7^`e~Cj^oi&*~ zeg>*Jw!0-~!6u#jN0}=L_d+hV%hAs{Es`jZ3h)9s>uf$qrlaejm^EdBn1Ec~#r7)N z>Xrke6zAomMJf5en$Qw{2SR^OE%wjD1f-|+-Hj#0Z3-529}oM?v7cnNC$B=!w$~wB z$(x%G4z_aAKDEAcYlge)=U|S<{?a^OT4mh#$9s3NrV9%CRT=+oXtBS_VD=81aNc6l z@cbw-974wdq)c%x-KI_2m;m}BhR1?2g@chKusQPabdiP8)^G4=>OmR*K=3L@ZT<`D z_P~Bu{z(82*Sw+0bOfTe5XW6}gbH&6le{JNasZ*6ixS9|5QMm)4!z+Hy#?IM5TC6WqUo!JZl+Z*KI((3Qmb>A>Aer#iz2ut%bKJwX z+{yP02icfI#@#|8HfELno5AYcb^izuyvG}TfgSY>z%;eMp+slwL`g2IWLIr;t*%*k z>=5Rpmgc0@ZnX-yng!(O6uFq5>eDYdRcq8NTjUU^=fX7UmvEGc3B0Q3mo|ydoM?-q zsTa3Y>hP)+=2R>QbeDOtmq|}qE%92dbb2XDy2=rjOO8I)zb)1ZcNfW-hRYm+eecxr zO(6TtDCZh7dV2&?t`0*8%+PpoaE$D7>h*z*e8(N9^Wc^V0{>3~W9uWoed_;{ z_NUc$LBj*&@Wj#bHu;~l1Y&nF*3obqiGGs|;DhUyQ4`G45<#h1h>~?|Y+m(m;dh>I z5p=iU;MSq9|BD;?X9J`QYD9+~^~Wgsv#(%YLr5lTgkx=OG5t$erf?}Uou?Bo@XL6f zYn;*ki1YgM=rSv(HUBLG4`?jb$b4=={H(+WNC*)iViY*g`3r`Yw%SI?wY*Cj2|Ohc zymST_g#0(I5Lx zV_h-^v>k2X2N|+jFg+tx5!BiSS&Q^x>6Yv&f67Zw-i9YSB@#zIAT5x;=z*`d1c5yi z%w@uWjZ7G33Iq{IL#JdA5#vcDE~qs_5+0)23o{52-V5?nRv1HYHnSDHwq|%E1lS;v z#3me8lLw`2w`36!Yc^IlQZ%au=pQrzlZd>Alrj4n!Uhjay~LOhWj-WRa7%BbfA2 zI7q{6MLBE=ywEtO>(KJKic~N^Fp6)L5egjt*13I~y505p8JX^3@%a{k0^z=GcCR3NflY;S3 z;Dd;V=|{3{7HyEC_NeP;Ixe?29bs$pmdofi_2`%B_Ay1sQH+Gk=+}DQcht~ISO-|* z=Dp&02E5CD-*$gUc`)|gucfHEEBFCU;nZ{9eV^W8eGetQkIX1Jd$>Lh+}_T!^2kx2 z!M+a?=5!419!-v|_ZfBVC{y$V2A|S0pY;GD-2Z%KJJoZQ4;U*vj-TpvE(b6FMcO`6 z3Kbue>#8&kg~!mUsDo>_^Z(hFVx0yqV5d5Rl?(pekX(XzPLAbV3Aygreb5M1*gjY#gC4>Ogwt|iiLI!oPjyU>1kzjQHUZxGl z!xhu^@-SAs2?Eh=TpUT8?lvch_@(n$~6zb`T1;u(7k)?Q5=T zKba6@w~GLj5*Y49cN4@poKQE*ShdJv#XYQKsm7Bc%r9c968A}H3Ih0#@&!ZmfX4A( zcn2UL{Qrhp|Ca^(Pd_v)Kn_h3D|eG01LNv9mz8kPlh7Q-_+~yDF+_t;ITVPnRdgnU zd#iVyLu=>s75<+mQV~_F1sPQ6_NQnKxMeZhnpvGB9MrwMmQ)o#wvm52i8!{nsEhv| zNLzB+*JBQ_6w&5u0ueBHL(k8|X!FN=ZdUYp_B*R7&4e=G;3fVx#%sXMRuKlydP zJ>tbROi1~GiK%DpRoO*n*~cltOg8IwQl>4X;3o=#U6#Yh;)qSjPC5dPHR7mXq(Q2m z<_rG*)~+-V7mg#Af+`PBQLj2OMb(l}LKg*=jz{nPD?_!T+|kfMCh7t9b9$iK?VdIa zBD&2UNe!S62}G7!2fz{^)`^UrLO|vnvE!1H%{S)598)}c(kFX}K zNirn4QoD0Qur~}P?xPI@?bt`5#Nr*x-$2f70f15GI+SEc=|&C8H;eOFzT*|~A zAKYZIQxr6FdB{Wot>q#BKhoHnll%d1Q6`0kQW=d9!*g|E0RY)>DnUw@F_$GcQgUPi z^&$Ueb~crd9!L$18I;J%hI7u1pr6P#Px`jHOLFeW7p$2{%FJ*jyM2(fl4-J~n9f{F zZbw|pUYKeScA1Vh1-Lw1#$+tmX$e9^Wc96+|3$s%LpHC%6!Ht_Gi~|f5mqLd0Vqz_p2vtJsW3oEWRwa z$1d-m*AK4}>;Jiv=lSY*pAOR>B1$0WjUU$9-g8#=0Afw}t>Hj-g>m8HVcZr-eh+kr zU?hVGFCSWa%SQf;Kl)5+-v+IIr^H~>w65L*4LBl>nNahIlzar!@ttVs(jtP1AC4fv zguJ%|6{V#$%D4OfzJ{+$LLCvuE9PNUIJqWrQl?!U(Vnp&Tt#G&`&Gn;KaWpU!SZkx z5B$Y+0P2s@9SUQ~RDpPc5{`nLd68bfZq0t> z;epvpA%ru~QFqiyfViEGrKy#9v4Csef{X0+zI%K{sO>G8qGCUS{4iwrGD{dKcDye1 zo%gbeAs4+nP4t!{`Z+!*m!Bo$rqy;AtmRMf0K88K>K)HYI=~at9#KZ}u0iXxwwRUW zv6HJa$4{*UoqnmX1_JKgE)(9c`2&?nStZ$F-UJAm=FipqFUu9LY<2HDFBP;wl8SzJ zuEL+O9}NK++mxV#f|Gu_BRvGc3v;3XA1=(`pM90UA}wVUC|8PKKHR)nZw zl^E0shF|D}a#o$1x>qA+-vS?|yHlMuleFJ3LXB1N-ijbmaqOO$|JqC2(e)TK$EpuB zoUOkAo^}5T!o`;~pi=*#Jp4-&^o77mU4jNryJ-I392pI7CA8-s3~u)*gTu`}#sTr! zKu#pd2JsJ>@s|>x0Z~kx^zbd$6^35hdiTW@aTzm)ix@7chNQW!fwZdaTKbL!LCkGP z?TDC26$MK(`a-`>R(V;uCHs=!vt4;QfG6p6$_MbiKJ)zk?qkrK^FE#atS1mU?3R|A zlAJ~bfQ@2;>kT$chn3cg(Yy;Tl2Fuw3h#j+WxRnwPaKlinvrf;rF7H}iHgY_hq>7A z^6NG4>m%a8`XJdoCT~bZbO_`e!#)?+XR@-#$fFwD^*7ohlTO|%!1G_abB*ZuTlo55 zF%mpUZKi<4EgVsaUi?S%RxCEda}IUKdQy23Ko?F>t0oy10wJu&a573-@nWjqPq_2I zXQEooN#rac4&!Vlh`EC{Jt+-bt7NW{D!q3Xe27x(ptv!5RvMsJ;%meNRht{HnaB+Q zBkcDRukpFzLZ-YCjm{!AJF)p*-5?2e@+^|ld0;4Kvtb!{k)(B4hI0`al@UQ|Q znBZ}YJMa@5Y;!Y)Sjq_9;#v>S5MxwGFp@MZ{~C~{hlqzzB$i{4X^e%jWM``qEJV}K z8knHkXV1l8NRc_BM}E;**EJJm$C&Q`q!M*3h2hR6nsjUp_4@Kd>B8ytCFOJ^nTo+A z6iZf$>kORcMY>R^me?`Wunk*V17v~LVi;&?$m4TdSwR(^b@Y}LxvL>SNhsxp{>8&a z^+|Jtj)<1=8!bv(RMI#2Nn2#HTUl@fv{vFn=)%R^{1iAO?>DFtROU>^f@mhdY}LAW z86{0R(iU^ZiL9YLv0BDLEDCtb}?q5m(r1=^-EhD1SP!&8bJD8iDQKD=>a7j-8F$0u~fYrus z9>C9;S61cru6lCyiI=L-SNvSz9kX*n&_`|QzVxAs+H@ z)V#Gv5-SsVR=5P?L=^dL)$b_T6?&WNI{N6b_?RgVp5AHeHT|BW~A8^1K zcA%PdQy$x67#m!Dx=MN7ydls^R(Pk0jtisk(XkI7ts7aBi?@6?_@No&`&d{@cv7j= zbd~7reHR=yRcVe#|F$<}f4#XbqHtAN)w}I;U99JZcjgDUi8sJ?wq75HhIF3t3|XmJ zcz;?!$T6V4xaQV0ZN#&7t$ho4eA(9gdiV7Nh)8-ZT@wtloN4+*#c+o zn11JU+Pz;IqTOafOAZrVF-MO;CKZ z>8t@GZQF5kYe>M(FmR|$Tw_SZaZx8P5LN%$<=~tYsOg}x5A+yh;HSr$l$dUA7K2~? zx1p2$C>_KMOX*%AuyQ~B;JS8TgFnAxj0c{LBGgv!rpkb`o_e{u^5Z|qfREjeC-|@i z&X{eyoVv+AGgjUlcU6%e?@jx%3`iu(;!LjqR0Y2mRa&I>(s0aSHvI zL+$_<$HOjuO+=-b((R5+!TaOS-74BJGrZ|_z3=N5>WB$v9S-iABrWv`M!dYHE3eN@ zMb=Wrzf?9?Z!7siy7tej;W`+pd+Kf2RPe zwqNy)PsN12d*7q^N=sDxIYFCooPg{l_fem^&|XCM9L(P}1N!~B9}SQ1G3#YyG$Ar2 z4du*>S~Oueis(uqYRKwx^2IV`DpnNg5>v%AW#Ef(Wy5Od&B1p{OW$cCM*jf+VQ3ES ziq`=9p=B=qv?FOEz7Xg?-3UY)ZwuTHw|N>G2C%iMUwirRbfQeUqkhCqqYF70&;1V2Jv#abmD}ADCzj2#BBv<}v$B z6|h*wSa74K#T1o@MS-p!8`AFuMkPb z8f`#;0qI6sPYEia0x6NS!T?IRxSg5x2axt!P*?_`yhjMR=Ur45ND_tz-+*&4ARw%6 z%D$j9+F3^2e|$_HMfDEy6IRmy_bhAF3LsJ$m!@0fKY6>Dw2Pq*2YVW!@_xt8>0s1H zQU+Hn1svbVSGNeb86f5N}QS5y<6&7z@XU4%%_Ke?zoqQ!Pd)QUgAO8-@vV3_&a&XqaBeQM{qB5Ntmiy_ zdeEzF%Td+wYIi;&J-(+}^fLlXO$QDl)=mL&I`x%D|CK$y=BK?t21x4pXy@ht>ffh! zYQZsAQoFxC_f(%d+#;>58+e>r;iqhQUX7}rPgb0FmKvGcBD@R*d%uEW&rl9q8!q#% zy(&GnGuI?;{}~vB#2L`&x_?BzXKeuUPmEsN*lg(V2Kku|&o@TZsw=>q+nh%%`RX3ok6v6V{!xur>{zRZgmMWZ3e2f<0}9G5=UvKyXR1BAYS|-o z1+R3c`gm$AY?LkM$~@FG9?UT2Evfm&QcVn`c6A)wlY%0#kRHs%Mr;L&lAv=T+ZrLk zHu8OM5%Ny1Z@KHSlfBZ$g!?Nc$fT9J=^NHAVmR04d`C11kwLpKW$*N>5}>?AD|!_T z2NtNq69tiW0pH`sld9!IiYtj_W!Q3WjPMG|B5|-cU++`&1NMrjKuPDg;yz7~nwtCT zSeqT*ir2vptkI;!cE>%{Vz;umHl7%=_Mfvg8A%#5^zyvg5|grVzHXk{OFie;33G9X zzZi2{&J|3?ny<x|hh>Z9iAWcrbuf|5^9$e@|#kyKN#DTq2Zo-w= zH=f?hj|Wes%Yw$uiX0c5l#$>-k})PnZX|;OPJ%25-ZHCDCyVejq#`Y!NKGpvw~OL5 z4|WouM#k+mhPg|nWhI9Xy}>(xoYC{rub>|>oJi{W%PMkY5D$?GTAsXL(x^Z8!l8*2 zaHL3n5S}e{00(SsjL%%m8UJ7nR^+0>f`tQbhn=DZGAG7`eU-FOw5--diL;I-k7^oX z{3X@KFAF&tIr0Hq>@0@Kg?%EzNeph>-Mx5>(;ZK--^bL^>o}!|rFVS|E2h#wO#t-- z#&eiZ?g8btN_c&`cnQ1`<`jBSoN7uAFrp@>%IfRV=gvG3!lZ3rki%kTzqz`ujHeok z7m6y76A!(d!Pb&9@a|K6!==NAl9cNXXv>3;Vw1DNO2gak`^ot+LXW-XMQ6*MG*4LPxg@YwZbJG;Tev*0_=cCyOG#ip_t~EXT ztS~J#z-W@4Z0s=5y0`x#qvUWL-(gSQCni3d8*LayV4?ZU0S_!3ry0o8PpPx*`x&J~QtNS}!HVp0x>7}+8 zVt&XZP0rUnNJik{6)H`$qs=T=;4GVVVlA9s9Tj2{I^K@kK~ngQAK*q0VB@8&FbZu} zGPztWkmAZ^W68GSjDXuE8*u(4DeRDUQ+A08Yt!o-(8i8%tt1=t3K~nq15xd=YLsq5 zotEy(UNb}49MYBK!gZ86_!HznK;n3yEFF`T3BB}hB#K(g{2OMvX3@zAU){@qgagsh zDfs!RQ{0tP{gAtos(#7^fHfinsszc70B6}$F3DPD5NX3#3P0AA2nT72M*f&QzA4w{ zHBX}qt;D2D_E<&nfB=nqndqgD3L;>BTY)M6#PLYN2$RLmuOLp+6)rl*&E8{nuA(38$TaWp9jFCdCo~_>q(Yt4t+E+E6^( zy-^eRTV5#J1}Ib9Qu%;j5LY9daWhKd{o%`Og#{lvC#udRRiGgu2#a*`Y~A^TD}Efy z98tQ1dSpk2O<)9y*^E>xb|y>;h0t(=ku_XiQ17Fc4ky7CP-44Qn`6dX&PgZXSr+!S_uGa@)7g4`|k?{WB}Vu6wX6(CBD2~rL93+8Are$Ye` z;|(bR-R1ckX8@9;Uu9eIg2pKja-f-GP6FQ;R3qtUeiPaPFe8oM2w*FnL`9YmA+L%( zB{$0(%?vPbI$n69qnm0?k&}4W%fz>31jaNj#6ae8n@I=Kw@&fN*Jb_+9M+==r$Z6% z?CehA16T_4tuk&xuW+T`k!)W_A3=vy_2cBZt z@s|p{-Cr3TK*zxocEJBS&B8D>@V4!jD*SMjgq+Unn=S zicw{ez;z{H(eCC9fAIjvQ|rG{0N0YC znSdx#oFneZ#zN#^t49Hkk8$W7!i=X}W<3IoValg3uHM&%fu%Us(it%%+E8XefyJLM zmOhqouFeLFk#3PY>P(VDR%?aK201WaThPvQ0i<2>OAEYHwTy%+;)q;midia#3#c@7 zFBwXq=9Uhtl>Uq?=C~QeL>~sGS!f%9cy(OptE>!RH39WRPDPoYh#{)cqCwHYaTRip zEkn94x2Y+y1L>A5!Wc5)Y0*KSl9{n|wW28*dVW*h=p+GEK$$G!z_{f^hR=B!nF~JK_{uN2S zSgwpt$O#6%Gahoe<>I8(UUd#67wSr98i5(5;4ez`Z?>eYKSPnWMz-Mz2-59#SwkFB zfb3EZGM;c&sV@4Wo>(%-_}2O|i%6xvPNF85XC_h9tDA5!HjNXqgc=Io_0G$nJBNF; z(DZM*!5H6!(DKDsEhnyK(DBrPIu*~6vcV|Rd{+L;O?iLRMJB53##A=rEiFTnzlNeM ziv*-}bfuuQl$^^bvvJZu>74oV-M+*1!ajBVm~8nF5p>L(zMN;{6Q3;m0x4`e|yqCr;J@D()q zC?pjqBrr0A$OvrRI;m~yO?VAOsTyp!YHZ=+I)20}I!$soG^6x?I8a%Z${H4J0Gy1c zt`#U6`PzcN#H*FE=itz*feJN5?Oqx#2AnX|%Pq*ImiC%tV~cIa?EWa-05zk4od|w~;I^&&jk#>PS92ru4)uxeyX#dQjq3 zu5oM3n1cAQMpdwLO9>$q2HkO=0=$_u#VZ4bbf^%>MiDqsbt${`%PnFe0-!(${b^5y zn=q_YpwpEK3tXA{5jWRtAhMeYvO&>p`SH{iurQX&EkL6oe|HIlrP72G^|p|sT>eX_ zl(E=(g1vvxnflRP!f#Yn&qMr~s!qENCzJEC1As%wA>OI2zwZJmxV}})BA~luMg6y>^V52ODU=q2qWNk; zoM^iNLX(bg1Bewn-7F|<)g(r9A?V-0NRw)?1-{>Ei^8gSu|+atj+bZAH7d%Ka_1qI zl|BOoa~5vs1vRO72$rsbs$I(YhvY z4|cV);-$}hu4pB+JH_FO;U$o$uJWAZLX1pJY;NbwOYep0^9)U=C*48oXu$Uc`ot0| zk?@V(O0E0|X+A{pKwr4Nfh;EP>B8&HjKHTik(%MEePBMy0f2Vt^sEPH-^@#O5t&Tr zsb93ru{z@j?sLgQW}?8(HzUuPE@f&MP+E(}=qPB8NnXf6sz7b4lzN509U=58%?|8Q zEzw9VDy2Ld0~(M~H5@*bzQrbaun?$qUZYG}9j94fI?C z`!i$K4Et?yYt@p=8SYijVkmw^xKjRJJ%~6@v2`eZ;fD~u!1VLTqGl94_a$fPYdg7o z=~7?*Q;pPuc1DSF%A5hDEq~#+@@r_5uO;iUPMR6xFm#C{Y{~egr9g)H$*i9_j)EqR zpL-@DiHqH!8BS7WZ5iTPjHkRr9`lEq(U@e(C9!>#{5$r&igM&Wy9xh@b8$d_11oHA zfO!}(z@FoXS*?dEyT}vR=Vd?ZxmX8dw8)8B-JSD3TK>X*&0F*9t~*SQS0|@67RTKW z*Pwf^IxWtXK+yTo+*{E565%QXv9|MN+CbKA%Hyo@bfx$1{oO7L`TQj=64MT!_q=v= z`=9H@urnmZfvrWQ-^(GcVBOaU|6@O7w|%bw;A%1nHcNry^L48uQpojba1*x*mQp|O z{`8X)=F|P*Dznp6`?>P?YMe*#tKQjBv*_(01eRAY9W#@8@M-g!XS=8V>$ly~GQGX2 zcInY&w&ug*t^VUa;g^S};cisUMD#^rN>_<>_Tm|ErIX{=9_F=}*$x839 z*;znQ0o7dThw0TMe@d}pj|;c)`M+z%E)%bvrGaV458hXI+urSut&pJz*X1my`}HK_ zEzfU}S4ji*44R{!w2#-2=4*Mt)xK{z;DGzPc?o^t8?CziJE2Rl;fIrwxo{|7=|#>CzeBB#z>Ebh7w(G&wA|TP z)sE%a$H^WQeRv-cR#K3S+Iqy2d+L-E+L<5wi~nY|@cXUP)@U-=m*vgNqdRnNpr62w zszjDx7|r(C8?4=gJD9TpO2)pXA~*7>m3Hg$JV0#R-8TcNUShiKEPkoxRgn$UTOb-| zD)V$VRWyktjqE-2-auERVjGP}7=MZJ)lr`zj(F|whRXrOBf$^F0%;nFUwY)e0|=m7 zt$X=j9tpLY>KzbO)tAxFQznwt*l1`?vy5aEGoB_Q%y)L}6+=h?`7Hi$DZrr&46;=H zz`45Uw}cVq5TMA(7%2Uoo3}#VjUT8PYO5_VXdMM z4Y^bASNy6u&TBb2t8T|%>#KJ$oP~i^RjijuvGi5z2nJet8G|iH*`HHcx@lM6gQ9KM z+XP>tuOHqFB{16neu3-y`Sp(8>pbICHK#%PX+dJMOZZ-wo{rBgQA&NrG6U}E&cn&W z{e-W3^X(_I%|+VWE%*D@xUP2Nfx$3LhMb-fza?vLf~?!S48_*T*S2y&HrM{$F7s{p z&qEKNOOvlCV{<^;Wy(NY<}#K@V62dhFl6rfBRp-k}q~F{$;irw1QF*snIUG(%2? zQ35{vnW4rTm5u1MU5qY}*1eP$nl7CG6IBf9z>BblbTwqS5##LuCRrbd>OrcoYkkxF z!qbKSyq|SDbIafZ+k=1I-`nSIguWef-T!`L_yHsk7`JEq!sUl17?L+qdgJ^e{=wo0 z-WzIQFlxWIz3YC{yDzwR|04Q<{RLw%u)QO=Z-4tdEXS;A!$6?TSMX28hQ0+oj%J#E zngJuy`3A7R@Z$NwB@m#vxAmPDWA+94KX+{*JYXZTus}d2$p0M(LevTekrsCHBdSF; z#mF5m8kbvJl&0{VO?6ufR)Mlq!I2?U`kqe>40Or&54X-7ZIaJ2+mln#Srz|NhOTMJ zPrzSTcUch?MGF&H`%6je7a^3|FT%+om)qej087Y@<4o@UYPK`$bMLqN zH6SnP<35e9nh0uQ={^$|gL5cN6BQ7A#U_k2RYeB&k;q8#`1%%XA(i~FYr!==L{`s; zheEcBlne&YlTsWw;JU&7QX1m~o{iw|h#!MMO(YZB*V;gig<{D$ftL~?+f#&v4iKYE zQi}`EK~s_lqk4SX7Z6Sqqb8*p@kO-|)p`&g02W0N3K7dI!G@7-A_GBTeE|fQ^=i(# zN9~p&*VZX$jbvHke}&VX?5l{(iVVK@i1FbiEEMVIE#{wJvO+6!6GK-pD-A2I5=kKg znpBUS>XF1+k)q!}>eD;K$3?QUkVZ%%rXAE$vYI!_QC3kfjeEjpDaCy1BHu|9vSHih zGZTZ1@`&I~4C1Y&45Y%x-vHrQ7jxV>9d#B^FQR_stnyRw^#91gynRp+#6CccNOBYQ zisWF0rLyqS9`ScApjdGD^X4W^)G4#&R&xIV_^0I{mIrAG+YFHkNYt3SHQ~sKEO#x! zJfusJo{Ots^)PW=W?aMrW3BnFVA4iir6oylqQiDyeh=lvhkS$700A6ADrX;!9s4n` zfORv*$##c!ov9t>pbU-jh_AoG&zvU-uM3Wrr<>dUs0%#?(w@#DRQT3OLw+=@G0on@ z7(o$)Lj2Yyd0ho&gQN;FLDw*+H9r7yp{cyw9E}_clxz`AQ|%Rfbj6){eC?_iV|S zUsa9@6OB`mnLN3zBM@n>9Q99c&^P~#Ctu-3UBr|c&BqX<9@M-E$I}>b(MU=mA7xqJ z9pf-fORyDJL$$IzOa_(c!B^H_6w6O_Q^3|tLvY33Pd2XG2mri3W;@AjHV{J=|EOwW zmXwb!@Juov0;#W=omPT9_&tF<1DeT@wXtsNsjuao@VL36MA!Gj#*N1ys@S0$4bwB& z4|9kW<;PZ%*kJvr*wTg^Xhy95vg%5$1=?f}m)HjV9Nlz6xtBWNKZdq1(rE_b>C}@$ z#BJ*)IT|{ZCIDDr++RQltudm>_>O2SDgJDuC)lG2Mm9AG{GmE-j_IIPF@v}`%fR!} z{^}=uq~0?5_c3%+v6;@)`k9jTfAoMrCd#-esb>o*rssnvBhRdf%z3}N;hyR#11&mU(iADA4iE_tNWI+hdd}ILW0a6F)m$#oz3@Z$r&uUIFBk zJ4!!)f(X!-jpGc=Zp9F6Lb4#|N_7H4StZZlV(-MQ{mB6KVY(xUoE@DP-(b0;NUk_P zoWU2zHFoa8MTr?lcnM~w60-_C&7C+M!0P5Oo6lpBHc3wQD-hPcl&INC-~5FC=u}F! zeACkHpM2wOVi-BvT!dmy0g{6SyYPJRm<;t0IvpTKa$Yq_MM@sqPqGY`51u+5Lc_3h zS#*A(a!P>))H8lFfXg1#bb(S)(*pCs@s3}pT)jptR^s4rUT5ksyeLQi9u9^tJt5d( zObwEUwa*V&x>E@EV#bpE^v=o|JY{Yx5(mF*KI%d~+*&plkGcKCFYg2)=7jd(IRnBCZ^B(!0Bfn!08Yv`B;s@zIy9IK0Hf@&J`2m21*uR zWIo`@rJ16{>|n>BHkQ>d67q+Eplsscpis#+9A>h(v_D*F+-fG!5x81nwxWV#MFpE+ z)+IZx2uIn0rEdPkjC12R)c~>u-?WuWUU~&Ai=EWD{VP;#mOuOz znZY!fmliP&&c+(6(7`L-%owENmL*_Rq~McSX}~uVg*%`7N{N1**nu$rWD22 zRqg~e*YB-3q&_*{znZD=Mn7*TirN9yfb(iu%qV*zj=8nRD-}QEudv+m4Ab_kikYhD z&#UpuyA_P^_pg?-8^N!p`~F({-Y@>`#?SR-c2jLO2yntJ=f!}!MI#KO24M3 zYTvvZtppGAhl7{MV@`q`fYbWJ<_z9R`)PhhH+)jM?QP3Z|FvDO+i_C8?=)aQf3??o z(L?vKyTq2T3uWWxDX3w0xHcCh3SbMSxxId7-!Sb&beC56d^V zn*(s(P3tzu&FQu|uC_%~^aeb$R_;P?LT*w%eYu__b#^TKb~^mJ)zW>Ebw37p-Jb=R z<9<7Aqcc`f1KzlU{CZ98wRau&LjkER>duYUnoC(do*lir0pg&>ni}0c&y;ig_H-Z5 z?s=MdzJ32Vk+kpD3}U|;u4XMpJ)V{mc4S96?^kSbjxm=6U3M0TYZ zn_~L|7LXQIs=g&m%TSv5*jFI@!H#a8>Ynnia_TfAH{ik}bxlaj&{Y%6-#Bf|;oZzH z_Hni1MoRIfa1^4%feTme0zS>R<4A@|O3wrQVlkbv7w8)*Bsl0~&p66wj+L#Ue#>tld?({l*1gs)!BuT;tiNoS@Sx>ZeLeSg8gTBv zyc+18KMq$`7_fZ-lnc)vgV&mLZO3W_2RZ!r&#CsOUjVzZt%i~ITa8i2Os(!)fzisK z^((-Kh2ugb$aP;rqc@4@=*adRj@_9lqTS}lBWbNYjgQCsp=?EsRma^8zPEX=(?Mgv zn<67FjJ!b`|8<7Di22iyM%tO;HGyF3q0;zhDSRjBE~8=UfU*xguaw>kUEYgt9Sa9V z*tij%9DrJNq%B=$WI~OZU5;LLbkgvM<#DnY&Il*nQ;u|Da?)HU9ena|(x@awd%DV` z#%v8+5cPKlcE+i>Uw@TxjX4KvD^ssg3)A2vlrwH)?rL9^QH_ztw?U#J()WM3LWW;a z1Au;9AsgU72k##zsFSIYVcJU@IDFbqJC5`d|7mNZs*WXaymi%5Y|3j*>P)0{L_jGFNvJ4PR&-#Yew^%pe z?w}CJKM1T0>mFFp%rx6bl}`aG(E>?Kn0Z1=1{%*Wo#^Nj#(sR59L-4g6L0hgl!{u$ z5v8zw1=khcT57W9I1HT_(e?&l1MaeHDAp&s&JWRn3EbdBbRaQ$iUL_;+lR2J z&1rfrF`M*GcFqg}=>$sO_gmEMWa5o#9V_s1EC9#y@6~GLiOoAg817$fq177Tm&{QK z^L~Vb0MVaNKxS9b7?&3dAUB#edHE)4hRS<4kWhaQ{{Wzh_H#V(-xOK}c~dfgI<@1d z2i8Gen+oP?OD~rgkJr-}%q>1aWgh2}uiQiUXZK$=I`v0=6`!A%zCF{XX?FHro)_qK7?XBdw_EuOm=rW` zGhMuB>AIF57GJ{^L9m^9c5(y&-rJA&#*$lG^_8QNYj{0NzwYpv?4a_mgPxg@r&ym2 z4E#1YFFNVtYQ<@{%X9aOZ?`I!nc10D;I5nffp&SwNE*B4R6ah)_W{edx4+BBQozN( zvvLK?G|}WJxKUMU*MuGY70AV0fyKe>p2em$0t2QDsPTKYb-GW(aegBJZt%a7iOB0Q zMu1g&4A@)6p`uWZR@sh3b^K+%3N1gGP%JG_M2DWw_Ih5wVnK|XoeLXBUc*OZ8bro| zaWwh@RFsWS8+uhuf>iV{jJmwKi-_{1%KGE?{rSbToXG#h6FJ!gnqVKW=OKZ!*C0?& zcRHw`d0w0)J1nMj>b^z*;K@R;j!6=;qbv?AG(jNmVVd1biNgD}65n~_;N6Q0)YHau zs9?Iji+9rwhxUN=zP+Nd4+6r0?1|{&=Ml_(4(zKab9l8Y-Ry+lc_p_4Qy3pIG*~B1 zcKYXzLMNv)iwze0TL#Lb78slHx_OKgas)k_o!0XWl1y3mbrrY)kfg0%=aIaGXIr{o zLC_axUv(c@lL`B!wN+07t_JEW2iN=cTdU>QmFc-$nOqysqsI%KnmKrOcB?N{&lwZ; zc@R zKUx_^c^I1VP_k_Nj`nC`{COdi8X2NsS|q!a!Uf6V1?kexQ&LFt0~BOPF^CootXV^$ z#ak_Nmtple*A0Bc-;R7{c)yNHD_N&sa9vzBmNs3#YtLNgiT1A){CYJ%m!5sEJA1FY z6=r@lR0RU|WirpttZ}WAXe+sW^{kOa6O>foETDVY=Wt>u z`Ozk0h6{7@{V@~|UiLFN%i) z$y9b0_iiotYRPe~Zz%XjqKe5cp^&X^K4l@$A{ z%E=+p@gUq4I+yq1!(xcsJd8usA{DJ4-9mqqY;B{6i8HXQrq#TmB+?!vb48RXvmouh za>2rm!0#!kN>~b6p+xUcnk2j_eam=BB&3W1at-OxrA;5!_2}IAI$?@Yu(O<0NHRkM zTe(eqx^J6M7=y7=q^#`TO0c;migL7F2ullzky_fsu1y~I@4|{8cCYLi;&B}tDDnVt z5b%G7WQ~L=X*Vqv1oTy|770ZmzDF-z!1jFUupP@Nkrn~M9uO>Khy}{AZ_y+Lug%yG z0;d$HduNwSG;7jr2i#TMUYXC5)DwY}WBb#Yk#dqqu+wv0pm_Y`y$R2A4L z5w;3mi2wThHfbXoR8L*kTqUuRqosa_9fx4e{ilRCt7PvN-2^A!w5Y7JT|x#CQb_ca z=BI3+U%OiElNFDp;HuE2KRl4ltchH!+rERN?3Pm^0#?SF)RXkK>HW);+!O%F-<+Ui zjt%$}GY)-rG{NnObopOgonvz*z_x{B+qP}nwrx9^IC*266WdNEwryJz+fMGBTXjF2 zTh-M+p}Y28YduR~!u%NSY?H0HTfoIgtE-g%Dp zXrTNJVo|OjKJ8K-m2aT(2#S#oOHlzo4ROyZENJXpQCVKjL2Nh$Xg!OMa+hwmNpBXK zpUv0|%BJC2q9Zq4V${)-S4;R+pKsVQHeHfwMDJGjr(H9uF`CuR4WkXMM_NF5S8s(R zOR51J#7`$0T*hvNaTfLUw?BDRACKCxPdva7$drI`6}nM{axIiKs1OyKqWwn!ae3Dz~>E>hkA^r{P0zBIm|$KfA&mloaXn?9p(d<0wsr8|JsrhP^W^? zs*%af(d#4+Hb^(A`FB(X;~=JrRU#r@`aSrEaEKVCcp+VEaUy$!IL1e$iZlj7FPoDat+oFw|F{RKRrCM zT3H}!s2!9#z>7u9fyK9_|HxJ<)M1>W9DythO_+(jT8q-uNR%56SBD-QmR;+aFI`_f z`xl61@QAr+vdodIGLD)$JZ;VX$ic_xu<%%y+h)?`}AHq;pvAZP0z7}>bOIzK|h`j-s3gtQvB znk~B>UF(w>rE4vh+>j2 zhUrRnO6O*Z#0!m9#iH><>nef<%TrtqY=RgOa@vgM*s%UiC07Uw^YSf7gHISSVU3)c zpIJ{^Le7bSAc z&J=IrGN4Q@C_q4GBSuVgjX*-&4XQLAL$kv#Os>GlK+AQ8>8HSfoVR|}1K-$lD>r}G z#<1gfRu`2;#%mL%WJfYY3@uq!!Hz0|8#aCo030aA90(oTt*L+(P0E(wf?w#J!^$As zta*^?s8ZDrt~BBqd9o-|E)q2X|8Zf(TTX&a(hrKB5JR(+Lgy9f5kW%T&A7xG+O#VF#&(CJ2CEbW=ebG9fC}lwBmU%-lKCZHB zU8QyFFbo`f3mbbYl~UKZ3eylJO%ygXn#274sFOn%GGQJ8z{e?4PqDZ#n-8#Kky8pu zunO^T&(flqMy?*az#HxmX|81(6rjB9YcimWO{j;Fn5{`W-}mg^n_!KD&|<);0n}ru z^LOdk06FJs^Oh{|iHB&W{^H2i=HR_ru~RSnH3x)~(!b%`kmp&*RS z#8+cNr1_5$7Xv-Y`LYAv*cNNY8NV&1u3ic+>hI+jOUV)WP~hc4Xu zqQ4VNQnaU>#|~?){dYI8Md3BX!C0Z&c(~1SNr}mN(r@?Eg;WAu@13-lHjdOvU z2I*gS_Z#GCU-kytu*Hr)Lc<>_Ia^{mS`eTWsFS}C1k?&>G|It)X6VzTp%pbUwTeB^ z@r5D!6_^?{2T7E4_E@Vsjy5Gt1o(Qfn@VfdI<)KGsVYIrb*XGXlpLZez%Ar)4lj9$ z)U(dQ_F22bi+#S1r&v?c1_1O9*6=xXwhNkgwn!wJ{SuIhD+BCnYcLnc0K{0lq%HzE zVpf|A{1uJ|AtUXHrDg$0s9evj1)a(QZAx3>YJB$d;fgdxN%SN=`ZuLjfqnzaL$Q>m zX{xthNF0l8zSWRyUvS-!o>XRdgnzayrTlYWV_-#^`sIl0`b8ASQvr`@L#RJ&WlI{K zGdO7?D+m?KJgP7{q$<(uG}bG>(e|VR+_^G)4V0|H7oCp=<>9sG|5|8vlTIqvaV@A- z4mhgl*6v6$!UHFxbY-%Dp-mV6F_5PQD;X{h>8YuLTFRHUPxjG&nyH@fel&!TWaiS5 zk8_W4A94ppL6=x6y9E@39uofMVnQ~m^h6o9hLi)ji{B5RIU0w^4(%fgj06pi4^a^5 zE3T*2rvC-K2wqX8)GV9BKs}s{CV@C@Mu{&>WXj`4&A_8a&1k@sjTT%Kt-$T;eux*| zr7(8E9G1CelgxnweLlcmic9ckAIFpxVtIr^x8lz@R!SC{Z9Ks4#7Wq>Z@vHqL2$VP zdF$#i8Z>JsD+ag&yA`Q?4eX*-O;*=y2iZ1pUjwQ|(%^>FJ{T?#)8L-o@J#|2*dajzF+;o#w9G z>_Z$flgsNA8=huhwXR9NO}+QG2K}^z6$IUMDh-1v+F5)ZF_(9H0pIQ8r7ysqm&h5A z>ZZix*zfl&{@X7c?&CVh57N`6uPtn^(2BEeOj&ND0Wez98T&6;g7b$Ej7kQBKhojF~Yh8<5 zi!Tj4+Q{4(zHh>mX&7+`WzFNSF9fX?2L$2>&cI)#PbLV&QJnt2O1a8#ipIQysu^)` zpKEa4hX5>pkQI1rC+fq3+gNNLN{dq$W=|9i@(%|=Y+IN?Ro*hozGm#(OE|-0v%M4M z-xC?Lo>X0YqN_Gxz1SBRVJ}APthiK{=AMEYM51x-@YyTsQ+qX9n^?2|E>_=NX|MB6 zYyWm}x;piko~ZuE_=O9t9jnhU7J^J4+FUEVt15EGiL1o!uvK^lAH&H&ch+q~ z#`vZAhiBOC&}(b4Ig2ml;f3+Xf{O}Vo|${`opg)fOvbOQv}B`KtOxGccvf!Ynd*{1 z+3;|L76N5=S8@o`@(wyPg-R$rmNkJBRxk6bX}u_3`pxnNJm)4#WGnsYe~D*OZ!D$3 z0j>@ytv=kIv*pKlxAc-mH$_Ob3TfS|?22 zByR`}JiKp0XPK2xmC>1-_bB zu5S1~UgHgQ8(PTcn%}D`2n55m_tCc&h94)ZtpNrfeV^X+Vz@n^apeKIWmEwSc1FreuJ;B>c2 z$oJXQx~u=_yLrm$bK|kOlhJrzAuE{mDco`eZ}}2dLD-e+`a*hD*Yz}PebOM?Q*hIJ zR{QR`{LJW(TYrc6XA zi=Vsf`dXs-lD>%%^QC`%U&gQm;A0!f^S*g__xrv-4So^mK8t?MaGU|K+MO*xsIc6w zuh(h%zdD|TNQVpd-aHjHJ!kp|)NE>gSG{=l-dWGacU{W<@P9n)@N)YW44p8fgmhPAyH zc-wTO`|;0u+^q_IP8X#0xB9Uir8tqy^L+5XGHmVcY&~eN`*xll&v?j<>=5MhI}Y>c z?OAwT+Hc>e>1|^>RPrANRHxU)G=ei;?qi65xl!baPRF*F_PR590wfHtOuNPQw^twa zE$YmlH7yj)pOr0c%${W};?17LX$R{DZH&Dg2Xtol$S-rAuRvz9c~bxkD=ZXcad*m} za@E6drA=*#{p{J?gH&=SD#25fl(V}4Fo6HZy5=AmwSOY$rjfkyA04fhE^80|K*>%-5 zZp)_x@6Xy<=Pv)I&i5PRCY9(9qBVqW0O?tt7QD-`<1YwMaf7FivUEq=EPlZtz1ysh zrv*bM)B>yGoF+Ly4wt#f(~vX-2M()$YQEh%a4i?g6Pd|QZNw$Z z#1te*_Q3Z)9os*R84$~CRp4IR(Z#+|kUFZG7=gif6E(6q8T&J%St`iaqeg{C6+R}! zZT9>0UTiBbjp?v187b;@utF#gKlz7-TEfj$E`FnZ<3}C<@m15h8+cy@kj*O}9<+D$ z?ME8$wvj|-QC|0ZTzkU?HFP>M=OpCz$24p(W~3e;=f1&xSQ}X9P1BT}o%*W@*Y)}! zo0W$5^AzvOYv}vBivDojo`m!DeCP^baRzJxt}-%q)jPfvP8^|HEj|!)>aMxm?;~N! zT{Yl6Ua|o{@uP!242HgoIj*|lp9AyVhWswpCu8A?^m;5uY22LM?x%qNr7VhvNmGS5 z;|cw&c#}hN${M5jqYCKaNl}}R_iyu<3Lsku0C+hWCfuE!gq2BDP$4G+lY+^`))697 zsMyV^F;o67Uv#Hlb`O?aca0_ir+0gDm^=(T0b1-*MVLX3S)&EM)2nWI438?fYrG*Ivhon7+QZ6O_1g`{rTD=gt+r zMLUajI33$p9L@7*^RZzZIS4s-nBnHl-#zn{wt%{g1^i|GjcQruU&$)F|7{x@YF0p9 zLI(nxA_4-!`Cr8%eeD+vVtQvQ95f(X8`cxmd_{q0(TwHFjWTD>h59O`7*mST8r4dc z8m>FEMG1x;T!vUa**cR$et_&uT$u)wzLu&gng<31rnZ_kD5_krtvR2HXi{7gfR2ei z1WR*WM0Zg6^G1>E;I?}5mUrZ(a5D9_bK`r%z56x;mvR0E3yTKxEakO)`LFIiI64X) zW*H(>#2J$M_R77V;x_jitBjGs7ZYkDnD6lR>2a-FA#0Zb%(HBop$#PSwr!Dq&cA+C2m;@CCxYkvkyxAm*tJv_GIS{KonOoR2ERvv8XrAsY!Q z6mMT&pp|oHbrP1~BcKKo!xB*FxED`31gSQ5@M{<=ws`NXmD_g*p*0%nePGMfcl+)O zWY^fWvr8Zl(TG8yT)552tX?ev(+;I@mccWy4&wBwBc}_gF97Zs(~}!BN5Ig-C>!a% zP^!aIaxTop~BA!4UPH=MAAX-J??E8=-$Sch>*&il0j+9w#O+ffDQD@1`h&7b~9tCPYw?kXqL& zq;x#2VoL${9lk)pD8V0T+lnoLtkLaSn9V=+1n~%l#Lg^v<|DcWEsZJ82Ug+pI` z2GF})&jm({!}0M1zW7`s?1Z(9UWJl8^LWCQqK*MIV?_|sE3_$3axRo7zlcgdd}~D} zVW8J;Ztf?$M4kg;}g#T3dZ$HZN{Nvb!EE5AWtV z8}Qu~1L7sa85%*3k3Ohw?O zqXX|17)d&dbZ**WLXhw(77EW1%T~H~qB2yp|4_%iS*!yry|3#o`>9Oqu4h}>dxdbQ zUYmhcYjG+oAZfVRUj)%-%S}Pdq1C%2&YMqT$j9_C)o|IW9=8lD7UxSATz;-n0s!%Y z^@Tu8;O#Vsf2tA)U*5Yu>rCYX*pFDoEDe?lLWU^gHU=y)F4thaTH9~%_AkILIQ~yYfk|~&^+6_>o znFist#F;WBsxL+*eXTuyVd=(EXJ;qx2mQ7hSm)%fhOWrYEIotprc9fH(L%>ijf{b} z$vk2T>%>LfT&f=DLdV^&hLP1yT^JhHO2Hd=U1kG}YFk5~wE%xc1#`(x|78Nj*$RQk z@kUs5md7fy9Fk|!>gj|=Z9QZgo)1ae87FJ9bW@i@4Q5NSsKkOxR>bWx+Yp zH}wFpaZkp(L1*vI87!uP){(zCqM6pK4;rM~;^CK6FcTB0a=<#yoTJ&|0U{re2}Md{ z{u5^w&1s5gsx?kx$HPdjrWrTi7P(5ylu-*=sSuY9)`Zo3h8BLtoxPtqm5s1?fFzYH zb-J|m*7!65K^mWUmc0x%#|-9Yp4>S72m26EjkiT9{o;Qc!bKt4W0Ob;dJhK6CS9H6 z94DiRK=K^n!4Vu(Z=~n6Jx4^3VoD6LQ7qIcL$M#pR3QZUN4AUs70DOZ=_S_aK19s47K&G<9CcH?eAF7S}SC_ub^shABNFp{M zp(8TkWgAKWc?2~vJi5akvt+uVMLH|^BFrk2^Z_Wjk^@N?h;?yJ4k4Wah0Vpd_z#x$m^P%OvlTc8PFYE75e;Xe z#RUZ%Ife4OtOYO=zRCf-z+`u>yCHe(uVNIEX*O#(uA$g+tH3ABdfs#)S#Ky1UDjENmIJ8)K@ zvh_HgY%HhpVagEK(703yb8*J86%izuwwoI>7YCf>HY}~#N>hk}bPQoAM*j`~7_A?O z1umhQ$xMXWWk&)-wZaUVJuzFMgenqk#v3LWi^65);WTqXyDr~0Qw?|wR5&>LvL050 zi~@99MM1ham=pA`HAD&JWVy7Ai3+p1kp(MyEXKqfRBQn2MLW!Io{}B07-f`qLu`%# zr=%pNAx%LhMYte6Eh5Zlljtv7&8v<$6HQ-B$-^ZH+dp0 z3V2^R2-Z=mQoE8#yGrDlELAdr!z0~BkqiG)cJ7K}(f$6ZS>U*y$Wc~VaQz)c9P1$- zsks0?J?DlSd~EdhbN04{Ps)v=dx<^m;FtkS5DSe4`eFa@&#sma*{3Q{L=d`@U}@j$76QN>DmnL?(X{t%t*Q~!e6 zu|$nqCi!z}o|%CVd)Gbl7Rq9rr>rig)+%_r!BZGvBIRi2(`Y{NHKId zZ7_5$R)hXRNZ59$kt$;2KhhIGTe9mJVWa*hZk|N~kp`kzVx!EKnUhxv5E@%a9p&MJeZd zV5_JUAO^pos-&hM|GEgxM3x~hutR}~S&`Begx}hVnE(UX<*$Ujh?8N6$0ktFU z+ML>s1)Y@uFj+VigT};;VI9LkIi)~1U5FJzT%l;{h@9gC24?C2HE3Fw1O~# z1iENddZ-T8}A-jK25+ zbE|(NX#m4}E6~9)iZydHz>I)l`WNsMVL(Pje_~4n)R5r}YG`#q&!<6Xf$;47C10G{=nPdN@(;) z@WVvdP^DsgLhe2;{-a%32}?-i8H#@sbW!P zO%Y3%S_5jvh;YMH<=5g1A7e^e|1C`E9Pr{%2n2;qjVMuD#u4*~TsKV4$=jaGM$V~i51ItOmH>(IkzVUwV=S@m_r0kTiG}H@)Rc(5S|xBro%rkn zK$nVfVpGPGXK-sXpf=y6f{z>-N;j+z1x&Uy2`W;ISBoQ{MDtv+HCPg|3kl8SmM~`| ze=g+vP<8Pz+*XdV+yaR$B$!IrL|Cmc?lPo0naG)lnI$ag3Yw@l@hXxirusr?MC=Wl z)^Id1CY|}zUj&Upd_`4w;qR|UA_y-&04SO2an#C0)Pdb6IAQTgz~2dPfe7hmR&=w> zDd4wk>?1&0wJTAR`EDwadL!WcMzz65VC2hgz~D!+mlVejNA!Xwv)Dd02N z!uu|^i5;2`;rFQWu4eJ08vco1)e%o&Um}}~CZu7*1ZH6*kCblCi5<#K(zp0az>R!k z5007A2+KVv zvfs?D>B-Uke%QGa6YM7he(68lF$Vq&Gv<5ewkS9f--=*i@XhQ66ns=L z&**;H-O;!G>a@Yn=gCL2iyJVZ;bHnB%1($CmiNi>TxB_1C)oLPxlk7OGrNzOH;etc z;tgYxpJlPSAi(E&y-VzJdR%jd_;DD2M4?R|ANC5C zSMRjnB^@0}$5XjDN-O(%IP8|?U~<6T{9I4T0@{1;0`Gn~`f0lWju?Zh9JM?_9p4VB z;@v{G8o+s5s_Bn3h6&nlN`FaT=sJE_epVsIRdgw_IO#>8Ud=JGV0X5E;6-@fje zK9ki6vbXPi^oI_f)P0#=%J1$r0-hzCF}L5Os}Qyy55hkTsVjTxJw2a1T5KhoV$a#4x23GttRvR!O?_0wnwP2wZ&ICt!B-UuXjF!f<7%HJ)WnX zafA_?s;=?diJzDAnqiaWpn~@8AAJ^sjf#XmRIJN$%GW(??JhUgz6*gHQ<{i;5m^{1 z*WC5PPoWRZ9(e{@KN3z`Nm1cZvolV-0v&8B^CmdHheI;}pRA8z_OFq6&A)uju6j4D zZ@Yr1C%M0W@sDq{ zV&~7}aJftcti*e4-&A6MP#V03*Lsf>zN4;6?0lIW%9>2r4t||nuctY+SRZv2(3|7B zKZ4^hDro%FjO3!PdF{%VkT<#G`=5(^o_EG~^SK><_pc-B_gtmA<{5MxYkL>0JPE(W zVX~}t8Dw+$y_IEf^D@{P_Ou&UTy;01c4&gfE;H}}?tX0@$1qAbT(7cWel;8&{PBQi z&h&vfO~nrb1D z_DLi<0Kbm>gztiJ{c$tvLcssB;;V*xh3lgo^7_?w7dEtH5_aXL-Svh|!Q-UxnO-tk zq5Jh-est&a_L;F~GAAuPmCyL^enaRB&X4Eec&kABcl%u`Wv|OVB;qaMElz-0Le zdc?!v-KPKN08zfPmHnrkaJi-e7ZLulx8-j;U^%@V)Ua0IeLpI@wbobb(NDqRWoz(y`VvN$d0P z1n&=1AM`M)_XD9vmosL|`PT~JvTZAaj~?^tNq|97b`g|dUeSl0n`7*CS?feMBERbj zVB-1O@NwnTA7@*%=)=OTF6KIZp1(o#IXJhqt9mx|gjBGZXwsZ7$~dE1lXjr@i^RA6 z5_X?ELA(*a8snYVE{QOh7! zJOcZs^eo%M{4elj)4^YCs5+}k}H-6Qt8O+fG! zaP4{<2n0f#qX7PnpYzhTX^-zvw}^2Y3I@p-+un&z{+822AYcgP)!mg4?_W0yNcRun zlw`Pf{60;#6L^KndH@X~Jt(;BeINp0M0sYs8+s+8RKrL<{ul-Icz)3ad;MDQ~!>}0r} zHZpKe9DQz}oUia)*lo$(AkuuW{B3l@~r8PJoW=QPL{lM{d3$IS+p7v)Fx% zyX1KO4&cA}cD49zp7FZ+q44FldMAz9t8r!PVHg^G@H~*ATOFR1rzpRKdP{4jP`KyA+&jDR-;W{A+n0FnXT9>~YSw}=LG75@4OdDhu)Q)mEudg%$Yv9oXp7PK9M^O$P>7(Hi7+hL&3gj%^ukwP#9{f67= zy;MA9?is7e6s@D&tJy>hH*8w9R?~j87?8?5N2%OZ@LNp0}{)W_{KuexJsdwp0|**jjf zt7qV5PU^eZU%NjR~!V zK%<8BNG~qGiDNHEW2|52GK#1Vkp+z^N9)MO5%l%0Ub!u zs>}pTrW9eLL6Ibh+AEuZit-^IVvwvkgQ507i73N31B-LvLSR}*U&o|yx(18x>9viHnl)-hdHmw3YikJN{PXAuwk*?SD;<_>Q z6jO2ULqibK430Rct{@HzG}H|+O2=xuhw(C{)bYEWRS!w;Q+t^8Sh- zr=Od=otxyr0`1P$p9_40ip2FOHhSKSy_~>qap)5_3A?Y!GNLAsFN>uZx$8-A^Qd-UO|>K=PT=cUQMrU<36#k2FLGs zJF=Og(xd>(bDA43r7R-ML-<*5Pep~X)#7;YL~6|U zHMCc?ceU>hc94_YDNU6&N-u@=62+SjNy%kJQ|AC5TvBxra7->B17?U-R+omc7Eca| zJ#z#2%3!dCLq28WaYScQWbGqwPle?~#yQXsYpbbI$EeB}XPbf|oJ=oSgncQd3(u?A zD0}f)+f_2DTZq2cC>{@JzGWZic1LT+ulWp4*PzZP3uuh6!k*4xF@%ksqwKdgxK z5h9RDRG0_BSU?T!-VBV{8O^)+KjtT*zUbj>=+e%L1wxj-MhqW$7(G}Q0udMRrc4w9Y^%A%9p@*F z$Ln!yhgxVKN?ufqj(bVTyF#OOQ9jp!0HIrAKL_Lj)eXB$%@lP99=x;?iz?YF_O4PT~$g{yX09|Hf88oVgy@3vf}oM69k&pgS+ z=JF0g-y|K!aXSZR3{AGI=p(f<@e`Q}QM1I0`Pe`$2A$jbLDLL5wu-0I7z|vcXqbO{ zwQ~Ty%z1*Ghca=P^u=9@W#-nH?Qp1*Ev~x_v2HQW+3%H$@;VO?XKyIVM`8M!Q4|7s zb<}k$fn*>6AChb!hIZ^Yw%2m%stQh<*X3h%VKlp62Zlg~pOU5nRZ-z@4z-o4V~e60 zy}SZMZ;J!+Z5u;7LzH8USUbKn1&`5#ifTZo(p^CASeg1{LrTI_8zZ7X zwg?s8<+!adcf^Lyri?KTrSH5aPugr{&tA19^Odaf#h$WCN)y5igd%$FqLFPMSSF`e zxDx#$$}V|th;NQD**kb*n*2W#sqCMFL^5$Rw7*v+XcBa$a_i*E^quos1kzzdk!}D> zKLYs4O3gbGRp&e3;3)r6PjPe7BSlY*l}_dB|yo za3|5icrU88$vU-2ixKikdO;CWLCKtbcQRdN${MQQ+03j+><$EOP!73elze=3L?e91 z2dRs2EQ%ekGYuZf>6??ZzPw3FVB7$u5aEQRkSSKJ^MkX^`bVI&L~e)vF$%37$(R}*PvqWlOh4&>23+9 zk)Hv5^l9<^BL)VABnBgOU}8roeI$J>u_t{J`S7{6CX8enzzMUYlZYs&{T>L^< z2+RlQ!%{-o4AlcPaD~Sio(xE80~!y6Qh|PXD}^pH(JrX7!AQ`Bm??d^RC5FLXuAFR z6fnZRxUCT*u*9f1j4GcAC8ZJlh zuS%HrH{sr6^=Uoy`8t(78Y?~EgUBdd8x4@Y9w)}}k|ZfH4&9KFWG6=IYa6n$e0Ovu z)P_oVJ>bX>FPsnEHk(JPgG#@sq2)2XfRR9VvB)RA=2HZ%lSs_6*%W{jLOjS)D!vM4 ztgVHo%s(s#9;bUyxS1Cnhco)68mP^(w`ZXZBVuZ18;-1{(TAkmW%!ehR-NsB5Lt5m zP5u!3m|pO}vWK&*RTr51T^`0)zEd%X{S1RCI8%4I);)?dnznJ-YpxzVcoQR`Sy1&O{BG{%ENlm2*=_=f`Z zJ9bMpzx$}`FxMks;dx4Isw4M#Ah>sgc6p}!tC%g zNL*zZHbw^0AMR{9vnDQ(k_E|PmJLJ;>KcR|$la&K#EAue+`x>Y1EOIwD;;C>kxHAIhO{9BoH1z_`w}Z^$=zl8D_9i#T28`xo0)?l|#FL%+yq*hrYy zp@g4u)uo=Cg8%^Wu<6>H1KapUW4WYkd?>Jq_Y6RA9Cc}tKjSRPFcmc*eWPn`sON84 zZ=a)jKNiOl<=C-#(0*MpiyJZs-DLmB1MHuMChaTC68k+q;WMlPdhR9>Ll6`%Ameyv zxA@BK-h9q*!x7#LIz7sMZY$Cadpb*g#xN%iT@UZ`bO7;U4tl*?jW36&?2!wW@sDKy zpOXFCD@@GK_lZzi0305D%@H49)A#ePOyR9I7ponuXWR~k1KL9r74UV^_PNrMY%aOO z%k=hK_>X6kd%o9;Rh{K){;7%Z)ie0xDZ2T!zwy12<+%HGxW031BxmsGHh${jS2yi(56c?(XqDCGp$mbmnYUk5A6b1#;yt9+iVXxBG(9ussB; zYB&MQf*e^pNoa7kuxGIBYcnO2PY{p{5}CtE#ML>ha5VfGG&FGYyWgPHys_ns1N=Ux zL>L}7kmp=F^%uQrz=P(h0z}P!ebv`HG_8P60wC!e#Jco8)JS1#{(V3-R(d;Y3s^04 zB7!O84l`ivgdKHu6dX|Su>uLwrRt=a%xdN!Y*O^VaE3ub$`wZ2k9;tGAJ$EHnrZ=A<+b<(kH*EIr{boJyEA8+nxbe>b zzK#yNdjHppKtWTR*;_VpaH{PMd`-{Gnw81;vFcIXuFU6!p2e)m@mCY-OT0mi|I1fl z)Al$(b!nv-!mn~UOF@6~l2s1Y4xhG3-j201NPm##Qo5M z4Xb}nnp3)TrY;D~^xU?8eNA>+(4M-(%_~o-H4O*MnmrRBX6?c<0bCTEk$nmSE{8+E z*?$WW*(I8vZD^4EtLREn!f48>0fR{~?liU+r4CVnF^5knDbd{!=wLjvo%HD{330e- z4()l#%b?YUetL;zf0=sw;dY(LV0FETw5-<0gQDBo+-$vnOilg89|#bd{0bD>OQR(v;Y^$uqr2?-zWukVOPdmo zta?zY%CbE^1Numk7$!g?K%_whA-=r?S<^jhTctvYg~g#EJEbxz2;S1wL4f@jf)k_h z4JzcwrZ#B`eIYA}4UJ65lSaGo3axX|q&Lo`$wwhD7lg7TwxKwk2S<0HXvATRt_pLJz=@L8IO{Siy#;cEik# z_*pGVEJoHB+H_<#j$d)CQgR%_tA>9!m`EFQYPIi1d`J;pF=556LT^C@m7IiO#M!=C zS{xe>SkD1(UC4U2L~P5LKbFuHN{p zMv+{NW`lP1n-tJmqp(J2x~oFhpQo!U;SyS)7Pkx;4%;s0ATu(pmPl&7hDXy5<-cw} zi9R@%~Ale`;x^~J;ZBMMFFl-f;-?kn3XG~&ps5eut&b0gOs zquj0$m)o<@f#OAYY-{TbbV6u-=qVG zQb=ys7|~-SEvwYVT`5I}3UZc6Y`L)HjDMt7>x>^y)S#W&38-&yOt-?~QfAdEYB4kEZ?QK|=CupkcxdbY_##KAxe??4C5z3ij^0#3SCh!Q zOQ;1URa<546rj#pe2T1T$dgx9va%_fuN|k45*A0gpN+)U|5%NDhimFYsNTWK%mxZy zqybz83K@B0>yzexyBB^DZg^!9$CSnmf@Cf`fQ6vL>>1AO;l~l6xlu+Lx8U(#|L#~*F4|Bp+JL7SWC6S%$TKex^Gvp@VEUltG||AwOfE(3@Z`vM zS57zLu}Z=DP}0YrPe13RaWFg^Yv^w7SZpfLo&Hufi8%|x7QUD*#?m_%lc%iZ)iW=9m5h&dXx{VByN8pA+A#D&o6f(4C%x9v|`VIi? z7hp9OC@iu)_3M!SO!OpUHs%Tv7fk~t1alVBjk}(dxd_PP#SluCcC-%4|mV=#nFZU zuf2KJ+W^Wz*;at+tZFv^!?hnQ%nV4jBV;P>M}Tu!-~}li*_)&yp+ z0a~fJK-0%Sw&So67@E_9LpUTK;wha{?99Rw6s)uM`H zGK``W2*#82m#I*lIt#EuFu$q6^_AIW8ifz$a;J@y`uK)TMF%Wb>AoxAw-6vVx_f;Z zZNto7EyEwRW7DunDp{@dpCZi?2jNTewTvJ$1MXP2yDNbkc)iVvi6DQU3-a34+8e%p@Ly#F0x3zoKN#5c}LHz(|pp zT?VgDW88#nfb_>f6r#F%Jl_^gacIkEWX=;U=+v8

t-{B96Ai7w^c*Y2XVyA8$B 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%0D|+t3isOZ|F(Qsx)BIvIEae!dKanw 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 Date: Tue, 27 May 2025 11:04:59 +0200 Subject: [PATCH 9/9] Update version to 0.118.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Using git ls-files | xargs sed -i 's|0\.117\.0|0.118.0|g' and manual update of erlide_debugger_25.app.src Signed-off-by: Björn Svensson --- common/apps/erlide_builder/src/erlide_builder.app.src | 2 +- common/apps/erlide_common/src/erlide_common.app.src | 2 +- common/apps/erlide_tools/src/erlide_tools.app.src | 2 +- debugger/erlide_debugger/src/erlide_debugger.app.src | 2 +- debugger/erlide_debugger_25/src/erlide_debugger_25.app.src | 2 +- debugger/erlide_debugger_26/src/erlide_debugger_26.app.src | 2 +- debugger/erlide_debugger_27/src/erlide_debugger_27.app.src | 2 +- eclipse/org.erlide.kernel.common/META-INF/MANIFEST.MF | 2 +- eclipse/org.erlide.kernel.common/pom.xml | 2 +- eclipse/org.erlide.kernel.debugger/META-INF/MANIFEST.MF | 2 +- eclipse/org.erlide.kernel.debugger/pom.xml | 2 +- eclipse/org.erlide.kernel.feature/feature.xml | 2 +- eclipse/org.erlide.kernel.feature/pom.xml | 2 +- eclipse/org.erlide.kernel.ide/META-INF/MANIFEST.MF | 2 +- eclipse/org.erlide.kernel.ide/pom.xml | 2 +- eclipse/org.erlide.kernel.site/pom.xml | 2 +- ide/apps/erlide_ide/src/erlide_ide.app.src | 2 +- ide/apps/erlide_ide_core/src/erlide_ide_core.app.src | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/common/apps/erlide_builder/src/erlide_builder.app.src b/common/apps/erlide_builder/src/erlide_builder.app.src index 4a3004f..bb01b4e 100644 --- a/common/apps/erlide_builder/src/erlide_builder.app.src +++ b/common/apps/erlide_builder/src/erlide_builder.app.src @@ -1,7 +1,7 @@ {application, erlide_builder, [ {description,"erlide_builder"}, - {vsn, "0.117.0"}, + {vsn, "0.118.0"}, {erlide_context, builder}, {registered, []}, {applications, [kernel, stdlib, erlide_common]}, diff --git a/common/apps/erlide_common/src/erlide_common.app.src b/common/apps/erlide_common/src/erlide_common.app.src index 7d5c667..7a61445 100644 --- a/common/apps/erlide_common/src/erlide_common.app.src +++ b/common/apps/erlide_common/src/erlide_common.app.src @@ -1,7 +1,7 @@ {application, erlide_common, [ {description,"erlide_common"}, - {vsn, "0.117.0"}, + {vsn, "0.118.0"}, {erlide_context, common}, {registered, []}, {applications, [kernel, stdlib]}, diff --git a/common/apps/erlide_tools/src/erlide_tools.app.src b/common/apps/erlide_tools/src/erlide_tools.app.src index c70d8cf..f2d06a9 100644 --- a/common/apps/erlide_tools/src/erlide_tools.app.src +++ b/common/apps/erlide_tools/src/erlide_tools.app.src @@ -1,7 +1,7 @@ {application, erlide_tools, [ {description,"erlide_tools"}, - {vsn, "0.117.0"}, + {vsn, "0.118.0"}, {erlide_context, common}, {registered, []}, {applications, [kernel, stdlib, erlide_common]}, diff --git a/debugger/erlide_debugger/src/erlide_debugger.app.src b/debugger/erlide_debugger/src/erlide_debugger.app.src index 70a27c5..ab9ee44 100644 --- a/debugger/erlide_debugger/src/erlide_debugger.app.src +++ b/debugger/erlide_debugger/src/erlide_debugger.app.src @@ -1,7 +1,7 @@ {application, erlide_debugger, [ {description,"erlide_debugger"}, - {vsn, "0.117.0"}, + {vsn, "0.118.0"}, {erlide_context, debugger}, {registered, []}, {applications, [kernel, stdlib]}, diff --git a/debugger/erlide_debugger_25/src/erlide_debugger_25.app.src b/debugger/erlide_debugger_25/src/erlide_debugger_25.app.src index fbca149..42c82f5 100644 --- a/debugger/erlide_debugger_25/src/erlide_debugger_25.app.src +++ b/debugger/erlide_debugger_25/src/erlide_debugger_25.app.src @@ -1,7 +1,7 @@ {application, erlide_debugger_25, [ {description, "erlide_debugger_25"}, - {vsn, "5.3"}, + {vsn, "0.118.0"}, {erlide_context, debugger}, {registered, []}, {applications, [kernel, stdlib]}, diff --git a/debugger/erlide_debugger_26/src/erlide_debugger_26.app.src b/debugger/erlide_debugger_26/src/erlide_debugger_26.app.src index 63b0c46..a5be471 100644 --- a/debugger/erlide_debugger_26/src/erlide_debugger_26.app.src +++ b/debugger/erlide_debugger_26/src/erlide_debugger_26.app.src @@ -1,7 +1,7 @@ {application, erlide_debugger_26, [ {description, "erlide_debugger_26"}, - {vsn, "0.117.0"}, + {vsn, "0.118.0"}, {erlide_context, debugger}, {registered, []}, {applications, [kernel, stdlib]}, diff --git a/debugger/erlide_debugger_27/src/erlide_debugger_27.app.src b/debugger/erlide_debugger_27/src/erlide_debugger_27.app.src index 3bc452a..b36c2a8 100644 --- a/debugger/erlide_debugger_27/src/erlide_debugger_27.app.src +++ b/debugger/erlide_debugger_27/src/erlide_debugger_27.app.src @@ -1,7 +1,7 @@ {application, erlide_debugger_27, [ {description, "erlide_debugger_27"}, - {vsn, "0.117.0"}, + {vsn, "0.118.0"}, {erlide_context, debugger}, {registered, []}, {applications, [kernel, stdlib]}, diff --git a/eclipse/org.erlide.kernel.common/META-INF/MANIFEST.MF b/eclipse/org.erlide.kernel.common/META-INF/MANIFEST.MF index 7bd08d9..15d77b1 100644 --- a/eclipse/org.erlide.kernel.common/META-INF/MANIFEST.MF +++ b/eclipse/org.erlide.kernel.common/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Erlide Kernel Bundle-SymbolicName: org.erlide.kernel.common;singleton:=true -Bundle-Version: 0.117.0.qualifier +Bundle-Version: 0.118.0.qualifier Bundle-Vendor: erlide.org project Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Eclipse-BundleShape: dir diff --git a/eclipse/org.erlide.kernel.common/pom.xml b/eclipse/org.erlide.kernel.common/pom.xml index 1879d3f..e926241 100644 --- a/eclipse/org.erlide.kernel.common/pom.xml +++ b/eclipse/org.erlide.kernel.common/pom.xml @@ -8,6 +8,6 @@ org.erlide.kernel.common - 0.117.0-SNAPSHOT + 0.118.0-SNAPSHOT eclipse-plugin diff --git a/eclipse/org.erlide.kernel.debugger/META-INF/MANIFEST.MF b/eclipse/org.erlide.kernel.debugger/META-INF/MANIFEST.MF index 535c9b8..322d92d 100644 --- a/eclipse/org.erlide.kernel.debugger/META-INF/MANIFEST.MF +++ b/eclipse/org.erlide.kernel.debugger/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Erlide Kernel Bundle-SymbolicName: org.erlide.kernel.debugger;singleton:=true -Bundle-Version: 0.117.0.qualifier +Bundle-Version: 0.118.0.qualifier Bundle-Vendor: erlide.org project Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Eclipse-BundleShape: dir diff --git a/eclipse/org.erlide.kernel.debugger/pom.xml b/eclipse/org.erlide.kernel.debugger/pom.xml index 39740db..967ed31 100644 --- a/eclipse/org.erlide.kernel.debugger/pom.xml +++ b/eclipse/org.erlide.kernel.debugger/pom.xml @@ -8,6 +8,6 @@ org.erlide.kernel.debugger - 0.117.0-SNAPSHOT + 0.118.0-SNAPSHOT eclipse-plugin diff --git a/eclipse/org.erlide.kernel.feature/feature.xml b/eclipse/org.erlide.kernel.feature/feature.xml index b0df9e1..635c184 100644 --- a/eclipse/org.erlide.kernel.feature/feature.xml +++ b/eclipse/org.erlide.kernel.feature/feature.xml @@ -2,7 +2,7 @@ diff --git a/eclipse/org.erlide.kernel.feature/pom.xml b/eclipse/org.erlide.kernel.feature/pom.xml index dbd82fe..f18f8ef 100644 --- a/eclipse/org.erlide.kernel.feature/pom.xml +++ b/eclipse/org.erlide.kernel.feature/pom.xml @@ -12,7 +12,7 @@ org.erlide.kernel.feature - 0.117.0-SNAPSHOT + 0.118.0-SNAPSHOT eclipse-feature diff --git a/eclipse/org.erlide.kernel.ide/META-INF/MANIFEST.MF b/eclipse/org.erlide.kernel.ide/META-INF/MANIFEST.MF index a499380..0341139 100644 --- a/eclipse/org.erlide.kernel.ide/META-INF/MANIFEST.MF +++ b/eclipse/org.erlide.kernel.ide/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Erlide Kernel Bundle-SymbolicName: org.erlide.kernel.ide;singleton:=true -Bundle-Version: 0.117.0.qualifier +Bundle-Version: 0.118.0.qualifier Bundle-Vendor: erlide.org project Bundle-RequiredExecutionEnvironment: JavaSE-1.6 Eclipse-BundleShape: dir diff --git a/eclipse/org.erlide.kernel.ide/pom.xml b/eclipse/org.erlide.kernel.ide/pom.xml index d3a672d..e8d5746 100644 --- a/eclipse/org.erlide.kernel.ide/pom.xml +++ b/eclipse/org.erlide.kernel.ide/pom.xml @@ -8,6 +8,6 @@ org.erlide.kernel.ide - 0.117.0-SNAPSHOT + 0.118.0-SNAPSHOT eclipse-plugin diff --git a/eclipse/org.erlide.kernel.site/pom.xml b/eclipse/org.erlide.kernel.site/pom.xml index d75edb3..d257ea9 100644 --- a/eclipse/org.erlide.kernel.site/pom.xml +++ b/eclipse/org.erlide.kernel.site/pom.xml @@ -13,5 +13,5 @@ org.erlide.kernel.site eclipse-repository -0.117.0-SNAPSHOT +0.118.0-SNAPSHOT diff --git a/ide/apps/erlide_ide/src/erlide_ide.app.src b/ide/apps/erlide_ide/src/erlide_ide.app.src index 4f6c4e9..8ce14ac 100644 --- a/ide/apps/erlide_ide/src/erlide_ide.app.src +++ b/ide/apps/erlide_ide/src/erlide_ide.app.src @@ -1,7 +1,7 @@ {application, erlide_ide, [ {description,"erlide_ide"}, - {vsn, "0.117.0"}, + {vsn, "0.118.0"}, {erlide_context, ide}, {registered, []}, {applications, [kernel, stdlib, erlide_common, erlide_ide_core]}, diff --git a/ide/apps/erlide_ide_core/src/erlide_ide_core.app.src b/ide/apps/erlide_ide_core/src/erlide_ide_core.app.src index a3b2569..fa4326e 100644 --- a/ide/apps/erlide_ide_core/src/erlide_ide_core.app.src +++ b/ide/apps/erlide_ide_core/src/erlide_ide_core.app.src @@ -1,7 +1,7 @@ {application, erlide_ide_core, [ {description,"erlide_ide_core"}, - {vsn, "0.117.0"}, + {vsn, "0.118.0"}, {erlide_context, ide}, {registered, []}, {applications, [kernel, stdlib, erlide_common]},

?fnZTz47NN`RW9XggQf5ECIM78G`fDk;Wg`cw@ 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%0D45V3I9KZ7sc*r$;W_Q901R>OTDqM(&&tM z9#&eCw^C9(XO$IbofXR?mChOQEI?jRAd(*y$ta>OeoP4NT8%kcsDNr{)@Y4H-_FQEV}Bm89+TuQH) z+wH7nqu;2t?zT!=j5Cdi!GFt`=;Ytkf0&>Sfj+L=S3cIXaW^4e;99^tD(9p8|A0#J&9@+Pi-z`oTE z_9PAaRtURV@`-@$2AS40i`BumN9IfytDW9mFfJembxUEXKio2ZV;r10X{4PIZ^M=A zlq+>My`97YZX6afgTI_2{!b3NhIhhF5q;lU-S=U*P#-4vDVSv2`URaNYs0?n6!dM# z*LOffh5I`2R4!jHc^zc6pw|Y3cM5`{gV>lN)5XSI?{=+>#WExkaoB;NH8~iVTSt}+ z&~)Q;u^tHds;1|EAF!^6b?RaLJ(|U4l^nshIXwW8l)4OY6-qt@Wq1p4n#Crino?I4 zvQv>&J@bWZQ+{`9xGVW-K@Hk0`RPGozbp9}&?bQd+Y(+p{|5j7|Nop=2~-ow7VS&YO>)=Ge``P=N0HnO6PG1% z^lqspxtpP2Nfv*Dakpo+S_dgIkqQ8Xp2=e<){XGY8_eldkY34 zt8SaPiC|SLu@wc7XLHyk~zK-PTLMejr;cqj_<8n3MKyr5x0rNlzw0iI& zx+jC=m96+k$|L+elDlW(^73VI3cqMQW5>pUZ+a&-8o8Ix-)9wm3{83R_bHNPq`mnE zBzK>GrKKeI0L5PiMo)ss-znuEQd$)G$@wx>jgu52KLsMM@YB$YYK=BDfJG|+)2k`) zY>@H@#n3v7k9x}N-9z)=M_K&sXm@+97Mnq7PzZH28_lrFF)-Uy6uQUO9O%y1Lmp5? zDz%Brw^1pEnz(7^rKiAvX_lo&@ntEeB9+R29OLPh7+dC+QjRK^wZ1F=SZd-5rpgF~ zn-qi!%wA9^T^yVoH0FUbnhey!z{lplPfXlQSP&OjkOnqV5zNT7{68f3)Wj7cT1#^O zK;S9A=U0LILJ{bX0sN4ttX*;Vw>uA={G*Gm*J6E_bgt4W9k zG~bfBx&*s|3yDN`RQsz4_N9_livfH(sM^VB!{_%!Sk_ z<=>&?MG0l%zW$g53sDk;QDHv(n=lOwZVBX9Yb|LYP=1-XZ}VlaUuhlfDUc8~ zh9(W9i7OUlG{F+g2pL^K!0)AhAXTHIA-Js0@=M{TqhZ}xRtI&>oKKL2DCfTeC-qWF z{W0&I%mv9HF>%XaYF8C$ppfHPf`oRrBh=<9YZ=`TsT~QBhq$f)`8FUgvxALD z0b!C7f-RDiQZlt*2cP67ZY4;y1!!ZH`u;O17x<(waU~$-Mvw+uJAyEOajR?y#h0am z(p+;3RLBM}Hbd!6DczMmN+*fZ-E4#sM4^5fnwhxO$QU(gunQDgQ6UsV1qm&f9zsh- z9m){8P)4QisS{c{v)=86=H6<-o;28_?M9i?S`UtuLa`ZUE-VbL-D}Wp{pbzoZf>VC zkI*x$JA7aJ*>~`xMNbBQrdXpKA~-3B3$%9!!BN>xa8Mcr_^7f|p_7DFc3{{EF#3n4 zqaCaQ?HG122&`)=;3(4283fih6`<`^Y9tX#52C`A!zoMADQha`^qJTYEViMkSW6HC zMjFmY;PXZ)tkq}VTLlQsAT^+f7~quHBym)FLyTMk1vhj2Ar@_aVV4XM+CVH^AqK5U zL+d6n_)$D3$^_T{>cQrwVr~Ab2V0towUt9p8r%W|XKZLY69IX`K%%v09VrtrK&2Q? z8q^jRM!2K#<_~Jc2-48O#M#3a5BS0a3LfAWP5B5K8cqbcN?=HX2027SQrk=6w@R%F zmr~{f$lwtmbU-tIb~JHzprRwF@C+2bz$(133QyADWmRDZDm=w1z6cOHA{E{yuXCWn z6IA%fRrcFSgRjZ!I51wo_%)L$MpCu~NU)R1>oCyXK>Gtd3e#E>w-sn#s4AUvKq1)<+)m1NI_#+~p|pz57j)Wxa@saf=PBq&9n`9!5a%5O zRD(zZ6q=nNUBfsq7Ni(W&!90JLsOJWi_RG}I%Nz2Dpnm%OXzTlrde-)P_h*w{1s{F zYV!IPY|}#KbSo9QLec&mIvO2BFg@D%;7BZGUcBxmZWqXQ0og!H(7>SaFy$_|OU7AO z-u^DQA7tWxc7v!6M0O>5ZclYM{~!6Cop$!6SoJX zx`V=Cx!QgcY3O58_yQ9M<5*agk)$ESr1%1uAYel630O!Xx57+{_AsIcOB%xEtbHhHh%j+`f$0fMBrsopPy`X3of$(Agss1jWJt{zn{9v} zeT59*q?-UHKvSUa&?L~5(3(Lbp*dj=VHaqvp-~vSig*TNG**LgM`)fH`$F>*>F}#aKJub@zr+~vBSd(x2#*%w zQ6l|+aUwoTWJ9)St~`t zdKQbuE)m)Ptw^R=WW!R7zk{|+B(p-qn?(HgB3vTEt1)g1ZH)-8#r7Z@eh}HSPGm!w z$oEZH9*y0CWf0yWlK)wRe-YtdiBEa>t!Qk2g=pS$#HTzzk7dxh{3#lHO{DX>$hJDn zBYaQf`-3L_TG#8P2)`Ds*IJC+@0he7Ls@epWM zpID3$kLp<)%)4Ps;=U!Gw-xcJrb;4mj4?Q#aB(GjT5P5w@fr})Qwpd%WDm?+>!6hn z!f~+HN-H0Tc^1!U<-1$ts9+o$E8i7=%lE?Zv+_DDkLE|YMq<7T=FvPhB3_Gmv}OvC z9$$+c6k2avk-Rsa*PpQLDXY8}=1~qcv-16uv(cFa^`ynKypl)5s?)2wsW#RgdzD$7 z_UP-}lk!e&R(2a6e5Dmv)4}D6eYMSbW972(GnRQR*soD)-2Oe~eAN4O?`9u=SQl2c zYkB>+Qsf4yO(N-`!aJ@32|6`}+Uc->_`{w2F1c zKbq}*xgd6#%y0diKI#D>Q$N(bbb6$#vU* zxp-xZw+%~wy|i~~(!evd!>!S3^>+4$&yY?-1cw0x=+UL#4&0ezm+LS&|&KEzvz0Y%hy8XubcZJTY-x@Ey zxaGetJL1mjsV6!{r>z~gC;F-1WB!lf^*<1e0YdaHy9)iS{`^Dl)mO^LY&dV)HcPVu>CI|-e13-uev%tF=*&c?X49lrM{PD^S<3@oJ_DiD{xT{>>lKf zDBDm~>9@%~WwqgjxKVw8|ZGh3;t!_f80Ry-A<&89!cn;CuJv566#x_xWYTU!H+KHOs2H-R3vV z@+U{<-03@Xny{txbi1fW^3gMWAdJ*)xA|gZSH8eRcQl%oo7By?CkoJy#C}C`JQj8!|leD z{M^>JzTMWtb&5qZXD%$<9JBb>WnXXHckEzf_2PDa4&ELa?%wkE$!FKsJjoa>Z`gG{ zVmhCdY*4(@7P#G2umgK@19z|PAI>%Wo;r8c=G?nwljp9=Q8%0Td{s(9!SJpfYIE&Z zSH|~$deW|!8WBzGI2& zxwwXl>$bR7i|eyooda_wQMYho+s4GUZQHhO=ZS6GwkI|xwrxzDiIXq&-dnfo{r*5# zcXjtZ=WMLiP9A;P(Ecy#vbKFR>awamE$M|{et=8PeHe>#0o24b&D$jR>}tdUJ9LJe z!*@pblYGJW9*CCkW8kY zWZln7paZ>zJlX#$&uvI>ZCwI$*c|Y;af+(n9V;KGX82{i{5|mq$Pky;ozM__RHyJe zz-+GPfv*j6TkbAbPZ{QuW{P15>+Wpl1JA_u+ds^0Cg6)u#+S5XPGH0n!|aZ{SaM&ioc1-^ogpYkGD)ZP{iq2s=L|-%UY#bG(?r`0hIzA2 zK~CoV-VCscoh%xsz<-vo>oW@gBLKo=c&HQgM+u4WNfi^1lJ-vcXIccSxbcj@a}Wj6 zSzt6`7xt4-)1TvUj4}Q?T%wWpPwWs@u`lHq^BJEj)NJ(qKGEpe_7m<(2hdwSWBiWu z`|VoC+|2-1&$GLcuB7I5nPe}}n;llM$Dw+R620B%z4#e`bn2NM<#-t&9y2D?2fP`x z^L5$C>%Ev}%y(AT1!Lm6su#)BiODeb?|B3(R_u8>G-Fldn=MV^<`rDC4Dr#0QT%yI z3#<5z12tak`3oDXST{H9seqdUeX^LFV19FGX4hl7o_5RRhBZDusgNPV*51-#oIM%Y3K-&KneQkk>mO zvH#vu?%f2tMc>~JQy`I`MiRtY!!j4b4vPI*l7dC~rN+3m1wNIP>7^(pLVpoWC!Tsgi)pT`U z>UAycp&}jCTknMTN2{4P^vKRRnYlS>F}5;9?pc1D8{F-}*nE+tDR4^IxJk6Am5Gm? z#^g%W#8$X7Au%T{1v@)2GcO?}H8f;mSTu+L(pKBq_p060#MoBd`^WE`^s3`bjeO)F ziJA1l;u14jBKr-9JkPBB%9Oe@VR2ibXXmHjqMIjFC4UP>fc=}FnrXN^_x`<@U@I#* zDfM9~vHC3|1A{~V+cQP_@!f!X)ZEn6&$(ZKVn)Xj^mn%bK~pr|!@gpNT^*gcQYV4oh4t}*O$6}5mV4!KSUM{bgp zFW~0%r+=Y()7B;4u5Tmr{Yy$d{0|?p4-cKRmj>Duv&q9>-i~)4QEV`mbE19XP7_H8T5F_{8u}i3zh96sg>T5!LEtpxg{!V}zK^b}3=w9GIy=!cv zKCXzaXh642Y4wa4&Z1tkWba-vCn=gaS10IUP|fS{+l&t^HyUt%wRfUJyaep;Egx`j ze>k*wjVE?dD5u`8-S=_a<%!_`*(VQBy_je>eU2?T_vS5Ijxjpt zO8ZEi6ZLj9j@4S{>TQhQ+oe2i<+_D5&KBET9vgbjBiEfi2YH>RiYOn2tSP}TNKnUx zDBa*}`*s!JPldo>A|gPRaIpo@A%ZGrK)D4hk0HcJkco4U5Q9*XAx;T!a4y8)Cqu@X zAOIO+bag?TnxN?he0M=^Q(=rFLHZ*RV%a zC#b_Aes}cq9WeiJ-z^jW80HH{FR6g97}u(BmRU6IuzJY6BHww#S6U2XAGOCb9K`G%~H74E0xd5RE^73SYEzLs=mD?+nH zU~bXybExA5r9Z_cDGJiyu0j4q!hpBTs592w!e-Yv`UNuTvPsw2nCm&ZPKoDpV7^j| zt1+^*e9#v*`k^=)N21k(4c+idCqMiCfvtpWM;3%*b-Yo#7ZLl(znnQg3hC<^zIM## zlV08k6Hi7TFG|1wG;bEF7j67$ByVK0Ck9~p!4tUro>~4-tvhb@0S9Ae7_iBi%i>9K zbK=*X-~2*!dP_WWT%0oo?i*Ksf8(2ba}Vl2tnk|SA|*vdRys0qsjL)K(xjSRrL1Bt z)4-Z)jzV2q($mfGx1?B9(&C&daY2VaxtCcGLaHVKE}4m0e^e@I3N7umNf6_Y@~e8< zq_h@swOMUVB7Bn)#-#c>Ie>>$<)2I%+PKq1f-Vj!Bc5K>rJF<5uApeuWVl4{DdTu7+gS~N z`}0wo0-n*_gkgzZo2B*}M}6@^lMj}?VHCrdz{Z}gHZ@es2KM*AmHA&a(Qd5@wc$@K zmbkW!C#{7T7I*A_PylvKa*bN-o65Fz)4xO8#+B_dOV_DO;i6}HBa_2V66eY;mr zu{jnvrVbxQMc=hQ6kLS|&%Up*|KeU@U&hAcpFfOx`_dI1bkiIbclYiqMb7so0G=Km z-v2+5LaE-OSXm?;@w0tqG46iGEd^AR9D1=`XZ-t5gW^pPUGOH?iUfETB*|Agm>v zn91sYjcCv02-%~c3&W{#Hy(X1GpFw^*L=)=#!vx!2PUYM6e>GYP(X(G03CyTl4`P+ z0t`3M%nq1?ZC&I_1ZL+veUYl%2Wi{Yv7|(e-^iO!kb0YQd}Y>2H9p_DRS4kl+fQ2w z!PetWN(Hv(<_(5tslFw~R%)P?omwqeM_61gZ4MY-7j~{23rIkWL8lXe@;;c^0d!Cu z*`gpWW<$YT-(4^P%BPvoo17U>wJ6u9#w>u=x$@Lk}3@tDlP@3C^g z*PZucqGU%-9&7a4voTK|`5m#cQK#8V;GE-!qA%;0Wp=AAVlq86to2XBVr5-!Hpg<1 zTBDO5Pt{*d@S{#rENdJj$yQu%f?X&T6}{>UG{w#G*+8XAfT>!-k*XXj*FyL4loZ0B zQ@oDN%GWCUpP9cU(wg}~vQ;WqbcEg9AbX6Ms(-V*2s^3LnI$Z_=+l9f-wWgGZ9X=@ z%J7+4$3$|ShXWCZT{;kkyaLsSbUT_edn$>TD>JPK&-N7FLF=oteK6s9JVXCjWNE(l zPE@^LkIwSq0b_fWJGrwS`T6{S;~vMq&CwcRd7g*jY~Eg%xbB7`rF!5arH*vMC?0%N6lxaS-wA|ql?RFeY1hMQ2n+k`@@?zs>{6^iwP=bK zgr6xiU(bgLkSaDn;WorAi3l=ONi*8`Ql(^#7h3ensUGc6vPutqu048Pt~*Zk32!d8 zHG+-Gs(Chbc5IapSpmja_5+MHq!M+-?;XgU25Mx2I+Anqkrs+Ndw4?+^3RRU<2hTURBJ^{xlkg`v> zvsuwgKM2I>mPw9&mW(pol7 z|0R5X<6>N3t~=llgdG@2_NG()a{zu*gdCR3w*f99%bdo*ZmaM8KaskOllXh1NpYbANnxP{jfIWHgGh*3+(pD^^@3GwZa?7U zO|Qdi!;!9jAW*wth+-=0im~GHZ9c9St^2!UtHQaW06DpldnbDwV zLqP+fjffSsT1x*FkIXzoj==oJZQiE-t;lh$BMg{r6T4W_lYfSUr2c2?w%fVrH|H_H zxwg32T3Tdt*_)~LeeYZE(|ft2ujyIjVbu8U9$)F>vagV8Yox}kWhwC6>Y?(;75qJ# zN6Y_W;#~OokRc;0(`~ zZU(Tqk({_wbj(x)LKamI~M&=3ICj<0SikxV7C-rfX0BLB`|P>o;b#KYysd~@Sw3dMP$CA-&5OJ*~uPT*8(qAZq}$7 zNwg3(3s>nLiJ6^n>S_F4?Jqk$0 zhd0LmMh{LTJwAru70Kz3VjlBe`7o@SS1<+|+6Y1>NcHgE3YRajH@%+{cDc@3O+x4N z`$wwpa^&|QUhG7y>EGDpwzd1X(Te}_wY5~+b@Q0#=b4B1wm&$OH8Y!bXog6C)2Zxd zymvDk_px7PLfA==**G-D@3D<7kPP^+cQVo0eS4b^Jxwo;EM5BaKD@(X<9Pit*xm7~ ze;jo6xM};nfiV4}j(U%W?Tf#Daq|eOy~@(}_ym5xYI5~Ny?Zpi$VdG>na9hf4|fkJ zdLM_?Eeo&VfAh#KH(;mHl1)n}J%U(}>Ku1=X3-MroRDscsv)+Sc>Auk{l)|N?=Wqa zpv8gn6Q-Ab!Zh*!C=-6dG+4SmFc=&_&A}E;3@v|q{k_?d&gHj+O=?0Y9~$XjyAIH9 zoN>oe!@}_qXYu2q&rQ3oo~~^(hx!&K@(^iS(NdJib*Mn7qy$P~B2sc3=y_2vo8#bp zP{MvqlMfKG`4aJ9mQ}i(yI^RiI?x*&NLd9Cm<0e4yP{)73CL+^a_b3lQT2 zFc6&(O&YdhI16Z--HJYVe(7~p75Zj*g^_zPv}=`=Pxb+ zlNOiHZ1${h84>wg`f4UpnYILoDSO6-mBh*9?x}3uq1o8k&{)n$W zw(=iFF3ImCAJ>Y~B4|0NhSEfu1!?yxZk`p84p)X8( zI;<8h$K-@aN|uDiwGdH&BPqZblP1P_lpKnR%}F^~!emlnOAJb_(ZVtcL);<383hhJ zraIqZjGN}t;=T!*PX$n#L=FkBG5JaI;)lge6xLfZ=Y$N+kq}~J^34#iyXu*bq7q8u zzmp=D9+iL@OF>J8lKSxsIuzcJCw{?0f(LS4#xxiDM0B7DLW$H7DhjJR#=Vzh~A$Ss$VgVdiBCr4vb~BASDE^B;hFf`hI(E_qFD)6reg z=wEX#uJ-dqNO1T{F!R$+4X|NGl4wL+ANrdcLJT4v>m|ifH=xLf$PCCZcgRM1xSwSp zqF5Rd^yH$Vj;CnNb0bsJS{^&Pr|(!J9`LIN^d5dg*WTl~pd6#RzV0e&e zy0o_+rn^pVZE=8l^P73w3mI?Fgz$K@rgdBXYwG3|SiC5X}lSKNH*2*=#GLn{TT!XOqpwqCq=R5{$Mtr8c+!okxXb zmh37@Bcg30RI5svp@c>>$FH?;kG-&&A{%O|sAyxOjZ9huDy|i)t){0@duBgGEl$Ul z-)!t6QU+KdDGpJNM2XXKX)#7W!CK+N2`EDR@ zuXohu7WYJk&91WW;84`-0^Hskvk4zW4DveGzW`hB9@R1qIlHcffA{tbOfG}FG_L(< zoHr5OulbNW*u5W*MsCtM>9{!A` z_xe2#Za9$p<7<6SrZF9#U#r9eoJ3y#c6U5T*}rWaeFkf!%gg!99=GmJfKveIlWuJG z_W2hNb}YyrKmS@0+!234`y=;dq`yFYqxIz&3^2UsSBnRI!vA+P>Gfx9i!!_SS+3JwGBruS?yX}&4Np7&<^x79nH9)JGbB)ngbj?W~|>KnlKHg5LRXaB&MmC0I;9Hvr~p36QJ zM4djDunFa`G_g#2f|@)m>DW}IFoVIArPR67YM7dWJZU{jtuJ;j_RiFsmdn`6WfDai znNmB{mr7*@v%J92M4C>G$RamCr>)46)5I+NsuUV?*ATsVVoOrRy2_SJI@5<%((I3Q ze==bG3WUa~P;5{-r5q-L0h6U8aa5XKgkR)*-jpemUS~wPC`X}$xq}p?nGsDi^|R8{ zKBD|yERPx;R3vS($;>|EOu8ib__3l))RK!SXUddDtlA1p#R5J0)wt&kw??~}nJHy9 zrIkAJU}H{w0$ytfHarYAvM3eL`9LtS)&VeeociRQdOupk7T8j|QkV!^gd3$^$!t&j zM0=^p=sHkBTZ2BkTsANhB9O}<3oc`l8I+8S+pa0qq;6lr8->uEc_+K>9AhcXp**Dl z(-L+kTE0Z(RfZm^r&#;(ToPYyJeA9()#Ax|C+?sLmc^rmPHhW+egr`O zp2cb?17q^!)&K7$-4X2POIeR=A zX=+THzMC#X)EjaUO@6ZSK9(Gs1enUAW1r zNP5qG>vE=!Mr(Dk6S9IR&5UZq*R}Nqs5`FJo1`)B+sslOBblqPO3J#I$dbr-Ud-4o zvVQ6ylQu*yukS6rqChYO;tFQM`@YtC-oB>yTnp>)_4yQ~;ysqU0sz$s?MPXB&U$yp zQ0(TYoR_1-W8pXn)L{bmt2#$&C9wqVN8LLuiTvU=LQShlP) zPFL*4gvj>To%o^U9<6rIUIy7YtO#xO7(U-81}-xKM;3vUsDFgN1HG=3d~w9N_zKQ%}dExN4Kpr(>MK7)(z2H9u z?zPPB7M;Th15kq8=mIfVc>uMV{XSkPGM1I(b9n3%)DQ~P`1lto5*+QXMi8)_ViCm# ztZUT7ArNk??G0M6Bnr?ExNIVWL9huS;Ovv?>1LPUTJ%W`NU`*S8tJ-Z7#w^7q8KP+ zj80o>0Ko^YYfKr^R!to^kE@lO?8*$V{oSpky?IqA?DO zN~fJj&JY(?n7p3P#2c^R;{x^Lylf|JZ6is}&3xE9$zN;!75>9c-e$2GjIRsKITJ(GIa0nR=#b zVX}eBn2<+jyah}=h6y>b10)+bKu)a6UTngif*Z@=zu_9P%&(^mprD0f%cmOszH>IIZW0PyTgEmla9$V{DRs zp&>MLyQychoPM(MZD`<`D`h0%n1vfUFoMjU4c={qy z8?uE9<2f;*%7}z5X@?-RVw4T1*vgyON6}%o+Gg1r_$W4+kqi1p>+m!4xxWLDST#wG z0Q5n~C;Csc)8Go>R|JS^zPV|*70={NteRGdZ0wrq(rtS0NAj()e4+d1x1AQgrlEc% z;Gu{NtL>RTt<=eUTdRT9SYMG1-wN_Rj@Wm)4C;*S2qN1kMh*Id%NhICOhc<07VWFk z4N}=87~jmIR{@B@3D9EvMV`;S!~`0ZJvQyv=4}FGBQK!#cpUd%ZUx!kPK4W0a{43 zrI4SNy{#~_RYjE;iYiXov{8|-=j8N7aj_m{&PF5BOhmJ*Nj46|T}>k84&e0ghx4tv z>>PL%Lf##sEn4#jLRgak{^sWhKLyU#beCiN0lq$O3y}{IAZPeTYNer_-ffVcOFDFLyIifW(!D- zV72w4)hCzLpF7kkC`I14p#CX^+23RB9+_Gyt5$93a@DPIwP!jrD%lk3U8!)bT^t)` zTR7>+Avn_feOODw0?10Q#o4YBZ&FcluNPNdOM1Vl@!p{;Abf{^kz~avHVM%hV z1}NeUUax$-L0m^8b@&|!ZAZwy|4QcETkKWg=3pHv_}vom31IbC9GscPIth*wsuW1EM{!DB`rI=@tjHsZ#w>&hc3gKtp39J7F=_B6wj znlew5n&1W{{wYerJt7>7mz9b@9XiPo5<4P^ifzG1&0A}Ve+rSwbFJ<^SM^wed$_m} zxZ6@uv^`>=7=Uu!M3>Wd%>?aXp!v`qvaOZ{e7fbEH-MUaAf<)?4IQ73a}GK4`@Uq_ zCc%@BjM(aM9`DIIm@1Chvy(me??D51jPg!1#jzQynSjrh5-nCSkJiSW+nNs&zNw=q z%K;hyZlJ5J;Msz-q%m#v@O?^YOO1S)In04&%oERs3ou8Vhu`1EXa0P~RCP4>)3| z%>DZ1*6I4Lijs<4&mfT_pUx;DJ?2fOru!b}=*Rt44=ctPE5s9}Vtwm+i1`B#|w z!ej@V5peQ~^T6JKBNnVA{T$E?U*bW;JGR#zLJMJbko@5i#z`x8A_P_fV zV2V*FL}+k+typpqA^*qlIWM(2z(Zu08DGNqEVwW>hwpR*~4a+d!zceN%Tny z{JZ%F;c*IXTd|#_{dgTiT}}8x)A>KR=n5lPjU^ACP!CuaIAdAmFCPVKyjb%R6@~Z2 zdFyr#za{JZm17${2N~k8f<2PeTN~=>32(Nt$$vWo;=dUw(X!$IU_Z7D;Aj1yO7(}J)gca+v_?J&Me}%(i~i*lrA^}#eJkeK`1swlKLJer{0GW|6XJ}0F3>EzB8G= ztyD~|@P-f(JIj~mjH*`V{D?GP(~>p;nzdiNRlAub#S{69WDVFD8eynN2k4^-nB1~7 zf8%+5cC3E`e|`F6$ao?z z7gu~Wh|{IMIgsK>xIut^0(5xh`jT(CQm%wB0XOY0kkAy0tYJj}SJ7|MeKIt&`6~gQ zB0wTzaFG+*XZ0nOM4rBS-k01UZPkP2(Qc~{4|-@vykR}%96*vYvY-d*Z5B2_U#;Lf z=@us_>g`e>f5ogsNsBlzZ$&&TpbM+(ZH1kazPPdf{2XS$)hB6ODLPW zV?bH@_nBFy;Q(-&I}F6BCuDwKYF(O2^i~;V?oMnI$`8V6dhDB$zb~&bo>J1%w{GAF zCu=78-lE1{xauSVY= z<4JkYjVjl4UCiqtAJe3DyH61P(V+9f@9ru4p2eFE!~^tI+`A+cBRK2cFfV&#yE`T; zDIVtM?T0kHy>EKIu%)m^B%hb5u|p_)pf zxa=UWzPF#l2rdi2m}qrW+X3A`nez_B7-`+9`uJrjQwXOQMJ4K{baMKR#dJCQlp@R^EiVqnJ1!7rbPb;5{9<>PcBbMRp-W!d>aEO^AoYvQA0K}iEO ze{f-S;UB?-imZpEEFy6|gz#JSJup-Up)f>AhH;mOu@BU%3Xy36HDO2s1Qhm?sdU0) zm<61&aI94WvC#Zws1etYY_JI}D2#2{3vejAN)Es>Mh79ciK&nP2l!;ZA2I?l;&c0( z9KnBuh!1|4L|kGSdsC#4nU56*^}vqv@pr0kGt2fA#mq4bpzVh;f$S>-)4 zBOg%NzFrw*mz)EbY@f<8$G{_!Ej)=T;dC`cl`mS$asgTJO1ceI70?1sg1BZ8sT$?n z`nZR=C?P*P1F?7+L(5--(QIvqi0u>5}O z+`E}eaRoxkW~DW16izJY(%pylX*3hSU!QX)I$@ zn%gC4otbvSSTcu5ia5Cq8?MTicDQEKCK5nkF2$-TT%y=ag}Y_KBFn{V62~tjAhpmR zwgZ-Y7(Nz}2qr{%?`0oO&P&~0vY>ua;qD0@sNN-niYj!22n8Gh!WsZ2NEi^I8_$a~ z#~~RHegBMj02<`U`}WEyCDb@dgeb%hVhD4;7357|D6L3NL*wf=$1wZfhpDy9%*T`D$mjGUI{TE$1{;Ht=ZhbUy`-J5Dm4jFS;B1K<_tL9Q zKn!gIekHQJk(fDkBD?pWs}r;jaOZOFWtU03EYJ%&{1;R|GLHVD9l{IOi$QdH>Br#Q zD|cc-@O94IfCL{Jz3GD0Xzu4A%8WuWF z^wk=h=bh>}JCo?--V5o7;D)5&)mRukeR9bl8)e zuZx4F_M_ldDbVElsdk&=t29h`_Wa%~wr;BHWS)(B`tGH|SU?At`Atsl>q@T1b*DQ~ z<%i(I(?-U^8X>$v?uTV$`*ZGVA?Am}aQz}Lp_`Z9Ywn#`vPfDB!pGT}iAb`}r^t#z z#zBS;H`^fo!B^!s1z?fER-m+6uL4jsTa}(0; zel}i^cJ$RAbj5%Vv;LdJ8*o|i9gvKO5A1%hqfH>o@gsT?@Cya z-B5<&Gp9uGTmq0kU;lP~P>z5Hv-6klP~rogNaDj67~X2cY5Xi=p9|zKLXfj?0)KY+ ziic-SH0Q6nMdH)Xo&Sr1PT`npG_&JXtZMQ!av+B>H7WSbuA+T|T) zn?QK|L-unGunTTbSi3+0;6C;xjT?8(9)3iZw9ih(-(&j^jSJq@nuW@0q#Zti)K%qcK+q9!)kxc)ez#B z|2m~|cI(??{B<8tgt11aX-i`+-@b5L_LRm8A0as5Y9K9Y)|L0q_sVwPO&Rc+2Gkg&@p26p|{ymgQQN@V?Vi~!Xbvo z{)~|O`@FIBVB81im{|L7;Zkq!!`3)eHjj0f ze}m6`-Vz)7D$c0Hn@Spg%1b5fl=hqHL8O^ZK48PgTk<+a2>Yqre@Ab5Zs(tV*uO99 z&waYs^n8J4UVjUfug9q_7mK{D28zp<%KFPO09Wfko@}-;qQBv{({G=Z+k_kURy~7< zmATp8#cOJF%zbA=dC!~Z4*@8DkZ-d%CzMiI)%z4G7_~C$-&8+NOzFl0#SG=rcC_El z@qhy*U+LNd4R#uxl-fVVe|Y|A9rGQF9Ov9O-d8&7cNF**e^h+PawP2x3qmA{E`(=H zU@@neCc82RDkdqECFv?lnxoKUN|+<_P?4bzi}{ws(UMh9vWsWru4QG}1%96@o(%O|tnvs+Q*Cjw?CFpp3=B>jnYlM(LWUm;&{xfJM=4aU`| z=a6uuhbq#nD};Si@M8<+RZAn6BvsC!vZTi5b-7dJi@+ZdxPxbkJQg}yQqmT2v}HbB zf%Swj7sXs*{nFSMb6qjFMGQ*b&#E7R_(T=v*x%UsWOj=IWrU0F-huv7eMP$q2qxZ% z`bB+nm$H+Cnw*!@Zw-3BhqWURm#St6z|_NE~P5G>pzLCK@GrM6Hrw=NxLN2p*_mdvSHb3W6g%xoiG za#Ei4s}+pY+S-luT4}kzy!L9=*3V}76}4H&jlGA{QqC`#63tu<(;v6+rT zijT%xb(2PN8m-nN6}bD@rTV%l)$nA@MV8XFaMv>UCMz3pPNh}jVZUN%o}%ieXjf~&7T+IrN7%m&QepRW5J0DS} zvDrb^WYkeEHwD+65m{+GR_SI#E6^>c7AbjY5UZqiz6Kpzx5`kp>9B`Qb^ zdcEykw_4-k^>KPRxqorq4_oeUyu4Pg{-zvxODaPvS8c_~N~;b-skwv?-LNjM)39d2 zkJS!!$)%kB)2SN-&l2U<%Bfa4@us{K3DkluEOzV%SZzT8-#|283RZEhjVV{fSHSiz zsp0g&bm+x+k0$HT&q9|)KcbVLOtlu#7-X5djjF5m9{<37sNvG4txoOai0Tpgn+b8t zyRDbE5}@8;djnd57ax~pZ4Q+w0nVNDT-#L4`v3>96tq+V2U1ls(0IlEOjxtr8!O#5 zCec&|w3c2^)8rPD;kckrlTR_-FuSRhva95WT34mMO6xgcj>%od)UmTlv`(uY$G;t8 zLTr%{)Lr%3h$Y!s3x(TBrE#>h`CWN9EWOtU=HgE8pf*yK`4O>?JR0Eg@7ShW+?wn3 zbgxsVbL7KyuRF)bb9`^7*h>}cS{Trff71H^vKT+Zirk({^Q?X|jO67ZY*1gc6O>O>s4{# zPNnx|fjBjrhMJ+05g%)TQA;!5Te9b}_Z4fd&@SwE!T@BE` z7l$_!ErcJaKxl%SUZc-){5MW*x#yx**G}0i%2hki>MCRlWO2b#^Im<@xHE_faFNme zi(9WUHCJp24Nt)65P?)Sx{+0&R6US6npDQB*E!d0d-spaV%)Vut821G%utBK@rbn4 z-R+^J=eq7nYm!+jlGD7XsqpU~(rN-vIi_L#tG%a*L;<92$71!V|4GpHiNR2peA}W^ zpQa1nE}i0y{qac{i?KcS%)f^fK*)0jNmsAa>hks@!tJr})^hs}2!+^#?^4J#VvV#M zmCDPx5huGzb|JfKg#*kC<@4nM>^^E|yO2Xf9I$`AU|Lz6hPJYeTZi)Drg#D6;s~p? z3%|)imj^-5*;S!Lx+CsZ@s=F~8%>6`vlPvrFmRvz*{e_AE14lc)G6DoF#@;cW85KAV=|WdyD3Y3dgp0;qUPqFb0I(1eyOR$Hf0ytm&GgK z`f60>UUKK(X4O{RrL&yUel-aFk!sr$-Q^oabFa+$%Cm(J`+0Tg)FxL2Mfx@bJsH1e zbZHe_&*5-G`9K+#oF9ug0Qh=G(D01qMQ;j#`vBMl1F?JFdj*1)wT!-zDO9afN!eKV z+o6 zjg2QgkI%(=4%3LYfVXepY`M;MHB+d@?oJ%IvTmyL5sl{kE7Iy5U@K@l`-%A$XH_s+ zctiLFUH=J9QR)B-n35=Eq9ROzfu_n$91d*l+cUkGeVH?G)UgeqgLHY^oBJ**UjPyp zXjn!Rxq%EZ!$Wd_0j5e$3(}N^^G%U%RCB~Lza;1)0$)@H2^Y*47By7ZIQRx-VERo! z{R_onH;_9#;w51eaEJ4uAPt}s4dH#y3&+vH@TyQ{wOGkGNs$7d>g8zWds0i@TOJO& zqFRGNL8zM-CC`i+z9r7;w-aRY40wfPv>1qyG>&z5j^{KNZ4d_cs>nH(1iPJrpZ^=- zDr_p+RzFYrj438=yd?l$c_$|X^4&M~3y2OV!IT%Wy%Q@E@Oy*=8mPM%x*amnUR=~3 zXf`jr1((PJbT@H^mjs$Xr3oosOa;XOB`4utQ6EH_t5e*Ayx)zd){f<8>7VF9x&Nr3^53<>-WmG4G+QHh|n(tL)g84RuMUT zLWrBC{HIiEx9M-ZC07q=S)s~^h;t(Dl@eIz!2#G%84qdRP%BT2Np@=1E7VU7Di`}{ zrT>coiNZ1fx%CYB66|Y#Lkx68+qsJ8^6*3L0+P?C@+suE~l9S1+!z7Q-i9W)T@Bla+WUA6H{j-PES z0<7V}Z%U_Ew@kUarwlrLX51jBC-=(t!EOH@a*59fM;#^{d@y+Ya291M@&p3f1 z-Tz_o29{7UXBpDV{xM3BpBlkE1P1;Ec1ITO{xc4)=?a3O7ZZ1EJfJCz!h%AOfnS)u z2V#7L&IxIfn)rf+=6Ajlfr?TOs}RcI1Yk~wGXBCEzm=fAFM9HXzVDF^Ic5^2XK_YW z&Iv&?nd3{}X9>_>J|Bj3{Q&L>8b^;d7JS}~i0K*}i;!&}w29Dl3!xP|!XZf~Izb}x zl#9xtmbCNol$E5UizI`N{EOoUnz)MH0jFQiCc5)N{>uvM8yHtRcxQOB|LV^k44@}7 z$5(V0ZtOhPk)tPW+)dLHHxc)i5y=acfKAliKQ@-^4Fkazom>Dh7dO4Nwfnw^? ztVTrhlNW6mr$q=^UDdOx1NwNL<9|jK0OzXz&4J0xw(ejg)A$dhRD`uDgF4F{SO` zfn53G^tiyq)E%5?6L1pQZm8*iLGP&pp=&jPM3-fsc{H;xNLV9$OA-480I<#u2Ft&DU1L0V%DwTZj%2mtAr+h8^npl2 zTY>P;L6m$zISit-_X4jDj0sC)jgWX*74&;e2)+-bP~B01{)Nn~7xn`oS)CooS^co` zIS;}Lqj?RRoQMA%gUcUh2%y2#t$2tyi|K|&ngtdef_0h?T-!s!%+-y?JCNh}Cx>ag z9Y*OzbOH%PNaElIwJQbc1^s)Fj9B@%W6!h`+ee4@c~NBb*#UKDM>N0gTzxb>J$|AG zR-nTBI8DH18|ErLWE$s~PUX>2GY!1Lsr)eQ)7Kv@85oqh}YQ26T+_>rXrv^4d7KhhB_aFy8j1qK#jj2t)SZ=@l;%C zU0pxgpn_9&&yD&XA^?6GqF#ik?|Y-(ccQLvw(dI!?sK+g+=^#xwr* zS7DN@a=JfRZP3r~I!uzsgOBNF$@NF{Q@Evn1-JAk;eGT$_<8zEM1BbY{vDAA@c1`G zK7q%-BJwME{4*k-!sDM1`Rr@_$r5Ea5X~*a4`w4Fl`_r+7!eA8%}W#h8_@jq_v=jL z)aM~=%JB>$zwV>INkmS6nZFc%;~2z*DKkj)TSPu*WC2i20E*uNJ1&Z^@j5ik<39R_ z$IvwYfY)KmAFqHKnnu4Hdb0kQZ?SG}yE&2`aj@$E_V)mG4Z!{mz&=Feq1{O)@`daEpNKqWqz>-( z&|2j~YnA>PkuP1R|3Ks`SNJ~w00960gqeAK6h+#{r>F^3#`HRq4ur#FaAuv-P`d+@ zUDnNpEu65h?8+N<(DmNvpm<_nK!Sn}L<9vjf}#a+Hi~Efg%ED>z$oI0EUf3Ec;AX5 zUa0s!PxW*$9r43|A4ykNS3mW9e^1p@RnspKc8?@>*Cy*J!tR}DEu$^tg1$wKRx8cM ztYvm_FU2NKEoy7C$IWv}EsJbhms;BFNJP%VcNY@Y+Dhk5hSz-+@D_o85mFM*hWs*9 zCezUcMMH!Bx^fu^Cif&{iYivyE!ec6$WMdi;XsJ?vzA1E1A`V6QGH(;C2UEBwX`fS zs5EX9w$y!Km+AXu(AQ#0o2sn^gx#lDW_X0K`xU#qOKD(K6Jg7j25Oopy_e2wnrN-0 zEg>MPu-X<8edqA4q*=u#86GG#0gpY&T0xuatj{i~Ym(G28_Q%SD$|uRRU?z5qz#@o zbPH~hH7PlNDk*6~R;DG1$Y=&clx2<5Pm7wYraHn_fP+EBCJ&>8wR!uESu5@06BN6` z=z4|m;|hm6=MJu92xxGC5i%Cb+<}{9)@=kfg$TxF#@2`qS0cBZNIHsV$=s zSwlnqP>o{O`Qu`qq-nw)k)u*_bW%>xs#I!KqK&dltCA&blcUP@sLG>WPh(bxR%NzP zWw!BrwnvqR2F4P6bsSFH~iJi>t~LsLB?%uPvy`4aW8jMwQK-2YNax zQk}@x@v?=7ED0Xr#n?a+J44ZeUh+e6`KcEPlu+@6642|55CA@b(O_za4|rm|rhUkQ7reLF-PWK`P5Kog?LM1o!eW+M(D2Fm)!F z`mY1tV7)+#!$F_p{|ip1I|zGGv4zlo@+_!)$!+;EEtYP}mz|a`684H>&Cv4fFk!FC zz@P;DC9z*Sg|gIHI|=)rVs}83e}M-(mj+}V>Yc8eXzil)(}KQCRmR#?E~iRtqyv78(cTNeM;*gx|s^=lMF<6H?4=*WE!CwqWkZuMcI}N#sW%p7~Lw{dJmm? z7o2*Buy^ud)~>y4Zot9!6l;NZYVC26s)+S@c?+>V4p|@dwLa``eK68`pRo7c=As*6 zA1HPwG_SY&+aO^bJc9Zn!ag*AjeLZCWNre4ee87g17V+d-Huti_1@zya2|$KTCqh2 z14{LJNTqE@l~1*fyK(Qa8}}Z&BgCWVXO5zuc@*6ZFQJ#!)?0*q4xqS+_(HL}LEm#g z-#vx;?sfJ367}8dI=UD2U2Gg%oYxmhmljE1oiB1)5ez^Uv~gra?1|QYS9Tp%lqDuZ z(N_|$!?cttlgX$|KsLI^9~7tJt^(Jeq|QPq%tA2I;)H$a?Kx)c)wAwiBT=jIq}3x4 zL~^g8{erNs6k9S3Xuno$DbSt^wBHoc?sI9sL)v|ApZkz@ndxI$o_3P;Ev?g8*5D+f zI=SAbldF?ce@64IlTYq{$9(dgx0jf;Pm?V-WGhUsD?DT{VD}lauL=8Ju{Iz|1JMtK zMEhN$A2X0s_d5x6KO|5+hkxu;1;cT_vHCq>KPk2ntd6cD+*e>#(7aXA1$4qYO#lVZ zsoi+op4X{Ckb<0w9dqJnunIKbUAz`zf@%#`8x7VNi)#usfH}o~sqywF!u^V^1#iy- zZ;LP_DZfl&NEBOlAeAQbaq(j&b0WgKDz+Y8JRe@{=3q7m=44RqEz@0yu7npWwgFm> zftCTc3lZL=xo}k7a4Il;lEOBBQ(FT ziSWZ=&bX_W=uTUIAe%0#S|qxcx7;bpic5uE+*6bmA0tA=$BQ80K`?M4;UTzG6J83J z69`AEm4uhU<+p@)$0Lg9l~1=>IF0m51bQa>i5@BE?2(1s&^twVkA9*&eW0pOn(*=p z(KCZtg!jx>w`bs{7g+8?cyGlX1h+2&xBC<_WQ4~tBlP$78xsR`M%ZkG+-&^V>=6=w;yu8y{)X^`Vow0$CBRr&$T-kt z{5>)bbo&~Jj9ZNDEr#)ThdMSsd8lKfX8fJQ_!Kh!-rH|X4AhKI8^&jhAJ2FgVSo=b zj0wX3pxCp(cquTRP{>&2GX4=6tK7b-knuTV`?);hVMW_)k}~5OGSVNtFU3Tac5th4 zaH}zYven}tOvftY;2#M8lVZ<$REZ;Dt~N4|5HwfX*r7Ue=7D4w7eX)1*cX~aW<}YXNAO>eZ?95#p#2^X@s991IJNV z6Hb?bWAS>13>=TwGi4x#*Ry1R)Ixf1OCf zh9&5?Po%yGa!(TH*zri#7ioY3&H5JGG#-q{@22J92rUhQ-E$Osf0&=}a~1ml>^FcK z>4GDq80&5?FU9TUSa)+c7GwXR*$jSY4jmt1DH(#b`(x)6mUK$6=;Pkvvhq!TL|hUQ z7xfhv_7@in7Uz!?qX{3~AkNczEA|N*NT4ZQvIpyEAt>%MVPQSb8BCwzU^>4-j7g?~ zafw9m65(SM`^>S>`MnDi+kNmS7b^C7!IPAJQY$7Beo=$CSVvc}FN|NhWKZjCkuFZC*a7!zalu4J#-Uhg%E?sc};ZYdc`N;|*ThQ7wSdu?$p z;g<#DwaA}@#vc!d-s=_n3Sv1~5K+4LQF~%eFxUljZgqrz60ErG)e%aT1SF?SW1Lo6km?1MX~R(B4XUfVIzpk4n_OFJ&*l$^ePGy_X%z}!m3o9C-B3oE-8&phFoD7F)JYDfF z;KLNCYHSwMDg4igyLst_IoWHH*0* z+gy-suC0GY(gBpZm=m{PT@N=NP=dE_$%$K0yB^e3V=QiebwV;<@or!{3$|}-7W2XO ze6T$qLIS56INP}6!#U>U#O>HaZ>WywPJ1V+g(Cd+oKUpW1Hx5KEWqY{Ol==%zL4+* zIkAv-dO-NXoM?vT?XLUn=zVie+yPD7UFX};={p?XbBZ(YeHtu)|Bj2CExSaz#>Jh4 zwID^)L(M57- z{6NiesJUAXl?Q5Cp=PlhT6>^oBh=i36R}G~2Bu@pPN=z8@x#C!oTaVJ;yxH-%cwK^ zN@{CmLjMjDiAuXt(wdxDs%OtYu>^cA@yAb^QZ1H$621h#1#Pd4;P;TBb=oqd(51n! zZ%9X_{zT%Zvw~7_3kK}-Slu4QF^tvWu;RbMYUzh6I>x6{McJ%i5I3#-@NU7+(JUJ9 zDIV+=W5<+)SYeKbXBYXv_6$nKgCz`Zekb~QDVx==b_486~R`DKSaV_C1bD~|( zLg%R+b#p*D_DFa;bRsM1n4ko~Y2~cABVSK{uYA2c@~tY6ueU2-3&k6ceA7Mht#;*W z%geV$@jf8mY>;nlv)BOgt*3g*Tk-ILRb@z^yY1xaBf#U1oLCptvt8r#fSCIuDBzK( zE8**K6h!HmFk;c@tgwS~lo#h{56=1moUn_tiQ*00W~@ZVmCN2Mid3nRzRo4M#UYC ztOGR53=RVdt^wn-UE&g-(ylSCV_X6npT>R14RKH0jY(YMZq!7LzFR#-oab-Oe+=hT z-H)&Cck5PlZR5-aG-Ne_EEyiB^3!O4*tVoZw{X_$PN=ntIF)aphHV(YI+LEx5*>i( z#k%d`K3Y{{Qms|TsT#}e5*-LlM+kcRV%-kZ+Qi=41h=+CLW170Sho{etK`Nixy`eo zL@=qgRP!8tWXuHq^N2b(gdRy_?kp$es^LS6~Qwk3`%uTw?S7r^0FoXe=mT}JlxiI8phSm2 zu+JgbAzD{W4w;}(C;$u@|K`nq8xlvT{!8YGWrroYHOOXw?1)}>l(guM*Et`BoR0gj zgzlK9?ifKI!}M_+Lp2kJsF7$LgqQ^(PDJQx$!Oh4g05|+J4+JuNq0S-sq8@AX^9SX zQ|pDmcDhq?CtiApcWR059I01D+2@K?%_h-&L9o*~fg!pxq$&z(jp~bk|I>aZF976c z>(ZHx(>Vvdw{ZbQkLIg*xrOvG$@w>p?RYG?(19dVA(< z0DRdt&T8EiwNi~ftyVRUj3b@M8&8> zYZ4s+fxiTJ9UL_%>W>oL0l1~W-2kp3;(n6oj=+5d+|R5NVt$e6NMM!$bFY+q;1CCX_|tGXuMm7rfsba!Z44{_f>j<0>bBzR{}p7iIP z+VDhIUO^ZXtcrmS3alH*ahGU+1BChpdiRjOuc5v~bHG$W z@CNn)8`Kir6R0YnJTc`Z(eXfS)Di{_reJmT0%{Xb-fC7WpJ3mTu=Mx@^#sDuNTL&< zc{2p@QK#5PSm!WS{Te zy7rS@n@V(le{kIft{?ra>j2rcnM4l+*X_`C^ObxMsn)F0klG@?rAAAs)rx?q0KTP9 zieIde5A^Gk$_Mx*8hHr&t_SOvXXIP>Sq0voF!)b|MrF$G5-Mxuv-W)EmS4&mF{_gQnKY5N|{C$c77qKAWKFRa#ftZE-} zZZFY)$w2J~DuPwDMpOrhP66rwP#qzr7IBdhoeJDR;G%$&_eCd(P6O@`aM8fEKwM{u zP6w_Uvg#7TvoMkXXbMD4Y+YK1-=>uzr`1)WjUYM#qHZC4j4ZNe7xNxXrmTsT=q%72 z1x;KC-(A+o`>*?ZB-yg0heQh?IR+9#2+zHLm2mHoph}8S;R|pK8R{Sl(3Q?@Yhc0|8|}Cx9^00XeT71ozR;w^nS-f-U)rtPUu4z`b>mI zc_;LT)eLE%6#B}fycZnUM46R$g9F=7X660h!1n+99buBkGT?7p21>LUMtK58Ip{rq zM@@n3G+3fXfKx3v4GH0s=HIcmLL&h~=+ zQDexJ=;olm2>LwGn|xSRBR*f{&F2$_d@M4(D>6&8ABfTQN2t_LG*G6sS&PJRGW%*nb$3~?R0lCeV>p0uN2vB=90Ao{jM2B;gX5s@y$fTs7ItDxgWZlXS}WV^bLNERX)DG} zz;3}leqc9a>;rZa_VEUPyAfjz*edMf3APgB24KIzxp_df0rRe4*V{4i2JAX}9O6%~ zYcYNab`AFV9jp!GM_^ZBd>`xzjDH2Y+};;)8>(d(--PNbjDLn|DaJRT`V!;oP<;vo zb|$eDW0V70XQLJJej~f&Mk2h3;VKI{1Nc%CzH9ty7`IKU`8#xH|V74 zw7wy~AUwvHZd9tZ%l&5t4PUco=BUNz4E@X67+u6w)$u#p=ihKXG-UJ5S58;=hP>I= zMLXhNq;xuP*%v{7wfkSxZaRPd=I|w>$9$AKfAb1qzVzb4tMrwsf z&Y!aD;HlgeO?!4YaQEh?RiCAKz0A=L4RkhzovxgfH=*COMcQ97IyCfDW_NFv8nxk% z!q|uE{IbG-kVQGuLpzP1@>|l4p#Azal`CSZGKZG$%zwIYM)}CO)58s>^ z50<+6MoEuqFTBin?v|`}yIQ?A`q$l?pB1|eY;ZexV*b4c;}px01wDx3VWO|1+ zY3W53!o{KMbGldN9J$ix`t)f|!Dpgcw;-F zVNU6PT&F1seFqHwp*Xbf`4{(w4Y=*yyoaYbA-;8w4QE#+&My@+^B?8}u4#Wd(75n>gjXtNx+WVE6;CT;B;%lZ{x>*MJqhUZ)5jG+s_ zcg6-e#YA4#b$oRFrEqq#Wj3=lv~bOcW9?Jso4?zzdE3P?PapPYRo%(^)klRclN5|{&d`vj{9&vKBumLor}*A6k`s?=)RhTF}hP` zV2tjF&oM^#!gP$$nLiCSd(n(Bx(o9$M)zMH#^^53#TealIT)imOu!i3L)kb_bPr|W{8eBxF?IuM#2B5? z85pDEGu@6Aub`x1{2WRu#*d+-V2tjSWQ;H2^@Pss3s63>=OeF+VHl(L#!!rZPeDn- z7`-2cV0;+LV2shdKM3O;PzGX*?&|>5Fqi>kEAkH@uE| zV~o~A0>l}`=Iw`8_c74p%|n0VF<>5kx*Jt(}3lq@bZp??UI zT9IQrnz6+_#{Fr0+Sr>-p5*5s2W5tknpaY4w8&nFX<#ysOtqMjGmA`r=~lsPLYzl& za(-b}a-UTBCqydw;nGB7o)Lb6e2}zJozyD)&o7w|iJ`W~i2dt#&j+b}ij$3|qI`!G z5@8f((}&K0wWPq9Tqu~VZ9o1XX+11WGn@1NS)W#mV9NR+se4_YC065y&9z5?#b~t( znI*{usn+aNA_pCuF`OxX6Ws&ynk12%Td~nn2$EcdTSRF4(2k)W%dEKo#VJH?E*T0x zlR3GtAa$fEIo+IJAmkY>$psd3y0NejITINf3QZ=kc|uxpreMlQE;JWe(v5PPkgMnz zmTk^AhFOYCCZi>6q}h@iW-+FvTH4l`>W`scuI~`VkXi2Y&5dF_02&VMB zqKv=tX!nnz$W!iWA5pG?|Nmm778De|9Y9zyEOfKQm=R`ao1ASNm0XYppF`faq4523 zV$-tF9k#L@PDG;ZsD+DaqU-O~ySt>!TQZAiGh&L;-_^Aytz~6=OnJYK9y>Y{{p;5r zJ~g`cl1uBT;{EG?FSRi&cv#fp`;FZNhQ)~}53-99OH@bNjDB97GDDd~Kx=j4oF zZe`Rwg6Y6?WI8d? zOlPJG(~XILW#SkE!!bP>D^tvjWJ;N_%s8fuDQ6}!Gnj?U(!=r07G@W7lsU(2V}4@p zGWVH#%uVJg^C$C$dCmOJIdkq@ea?e(<1}1TE`ST%tkiJZ>B( za@pKsZY8&xTg5Hq)^S_7@3^g8C0E7m;;OkL++l8iFL#Q&z+K{g;x2M$xjWob?m732 zyU#t~UI{KjeW8J%6evL>cnf|)Ga*2rg(x9b;Dy0L7l9Qrg%N^T$Psdd0-;oxC`=MQ z6UGVSg{i_EVX?48s1PJ!nXp2z3G0Q8!ZzWWa7%b0x(GK!Kha+d5L<{%MOthtwiCm} z)}l^-j1;?y(P9s=x7b(gBlZ*ripgTCm?91llf+EXERGh(h*q&koFJBolfaJ?Iy>xfK!Zb$Y5HAXY?(DtvTlvr zjAQG}cH*kW*)VYVe}Xiv{oT}D*=*S_xRN+qF)m+YizF2Q0F)({L4X7%e{@+1bW_)v*7K9?YsZ&7`3W1sCXm4d#o-yT z1p|2?8?$3@AV3^sEzh>FED1f?*o4J~K+>#)td|lOG9)2O6S6k6os1_-hfLFiWSVs{ z8JafjnK^T&%=EOKw4FKg-S@6!nYcOUxBmP8-@o5`bwyTe*i`FqOuuV+!?JbDe=?gF zIvmAw9S+BUlJ*BXjNV`>95iF?2_sr+BqGVE5$rPCOS(-X9gK!Dp^{WOnTp5Ej9Jod zWP&}Rc(+m1Y~fwQ_@FH*PKEm7$xyU}I}ByI(?*#Q%=D#3TW2C^`5zZ;A01GXHq7oW1Np`!Uqx1L>w=<5MRt|WNHWzof9^6!u7Blb zXDlV!Ae0j=QQSzhXF3ov9_xx_jI5>0Qnsg)-6RQ7OfVGeOeA+Ff?bAbhT4s?o;<9xE0i*w zokpKoXzi=wwj_c?Itr4Ve+4x)W4dCdY0Z!K!-VDV{!zln#qOHD5ouSat+qz%OocKX zg_dFrpZc(drqV_x!xQ9?l1!5Kug8cNr|~y!8ZuIH?o7rKMWIy6NJPuB8!?ngc9rpc z&(p_vO`2UKLa6OZzOtKbtt+zHWIA6whKr3vcbC1SZ3cE~*5wu0e@kY!y&hw0EGSfE zSrr$QwZ#(AtP!;qS)AKq%)YL0GLBB!z2U}LfN3KvIS1HK7f%c4yeAeh^6JS-co@D; zry{o2&VVni46IbeDpv&7W7~FNM!b9ZzDqGXu^yW*=Qzt?vh~-@w+o4I9OoLg=iP;P z@@TM}JJXd*BRj4lf4Bhe%C2+R@*Ffbq+($CqC6+bp%vbgR4CGkjcsX4tlJ`ntxa)l znpvG$*cOVL#+7EWJB=*EA=BXKaoil&UGOrwsb&?paS>}+#`BFN6PZvf(Pbnu1gTjN zOPT5%p{&fGV4hsfPBKsC&TY#);bhCHl|i^K*ScWHw2PlMe?mQCkXgu-5s=~jeOqsG z054#Ko{tH_vHS@0(-})9xX#Sr4s2I1lk$UlMOQM~9XEopL|f9@!FlV-nh{5Tc5O{t zccMnCDdQ)bkCZ#8sL8*dX8Q$ZjM1A(hZ07z+YI8m3gAn^;ZSeDcc_!bf5xhMfwxF&kTm9jNR#w3P1C(jU3Ken71Nv=HFc-za_VzrrWbo0zRm8i zE~|Q#TKTAQTNk>l{mIn{Zm7ars)_NOtRfne{uhw+A10S9*@A>?lWhfBI#I+@dJD)BBXH7HV&Mq?6?y zRXWQ~7L-4xNkj8KlFJm2E<4%Ty@eh{mf2aS=l5)AZ=vFGs%+>;p=vwXUiekN!&$DV z(uD=DST?GYT_{#Gb`e+wwK%vW0=PXA zDW6AOvNa&;mWaxTn=3SlxaUz-F7s$8g*VWv^6`+dm=A`f%U<0r7izQuF2*ua0i&@n zswivHTuzr;SF3b+Zbv<>L}wYP#Ei$s>dTvue{J*s-uI+a%Qlx85M=@OaF3$m&~ zVl#3Jq*u+zWZ3BHE^nQe)>fXB=ru0tf165Y)zYgs(wP#OnS-yC$kmKY0lZbMRUen- zR;VCfA(2@*&@zema*H(*xyI&}NTgY^q)e6W)6$1COcbGF^j+4=p{V8U};LcJ2HMVYJdIfs#{=#chk9YtJ?2S%d}R0Fq_?apbC465pS__QkVU_0ae&Vs_t&qopK>| z5%%6(q=Pe8wNjSIypd6=>3p^1I!31FnlU{Wb^3^AU}p1kmCcdJ0!C(_qUoq;VSYt* z*@_nNit4hl>Uc%fIp5W}imto7e8P|wD_0r`s+LYVi2)x|x!L_^xe}R!6s%gE| zgW0(r%+7h7J)#FVHTAh{b%``Eq9NOv$aV!ENwZTA@R2Z5>-5m|%VkB@-2pKdC%>u0 zL>d{H1H-FfxY91Om#&gaJc`54c9k8XQ6j4u@dG&v$TeByTDe5eBG=l;)e>39$Xp_RM#ZTvmmOZ7-)_1=)x7-+>|tmZphDB(k-aZnMV0 zh@Q*K;?#l5y==4dTE_F*&d72b4|jeJ(P>a3H;wFIHEpqO-#~6_267z@*jqEp1zZ9C zYKn+hExCP)Z`PX?f31nv9{_mKYDC|`NIhm*gFPI?uG0A|19~?N$xWDLvyZkm6}zso=aWuU%s3j2u8_`VzWBB4I`v zk;t`3GJ-^!cp}YB-Ly?^MIsR&H6oI=g7?TFFi2%3%I%Nve-?mivRkl?`qm+rM}i`?XG5Vlh2e@2>C;|#_b*$4+3L|rFnTn4FwApZTzziGWX=LTs)%aee_AH-Ji|wdkxlSgi<@JYMpO1vo|+O#Gt$fz2xorlm3V`dYzE0TdWPSM zJ#doY=@)qQ(m7mm0FrJ-Hp7u0j(SeeK6#M#S}%F3e|d(x&~Q*y`5T^W!AtU%LAtw& zr>S_9hGTC2xOO=ixsj_RvYSV!lG`166+&0t?oq67!L7y0S^lHKDc{ZyIu=X)2>eOZ2=uqjf57cZu(#@st=#2dMxqd{g6If_%tf~` zVnDPSqTBTXF8K~4ZIG;ilt8Hu6z`xnrA?QfZT z70qE)x*n>Xs1(qnjC8_k1K9f%&2ADeAiiEnN#qzKUC?fX_I@9I0F!G>@mLS&rQ`VL ze}jx9px*@jLqha0BT0yw(Zxp;-D8dX2L9V6WqD+b?1FkT)W=7t)0Xfd?Xf^lGI9$*I{-Q}e+p=?1$v5+eEnATzFehc~x zBL@Ht0s8D;h4x#}?=vz0Xc(cN^U>$!#(q7_%X&VWM`YOIpk;BEkwdVE!r}!VeUT5V zpIf{*ip8y##Y>DFhJ^u(m$RU@VbBo^^a>-l0n`rAtD}H!w?IE&Z9-GEZ!Z(;z7&eXN)`qiwrE@^U?Qn z7VnQ@@vvoafssdG(G80aeDp)U5gLcM$%muNm02eL#K>`&^uXljqioynTA+^@IRVga zfIc2&u8&%vPZ${ls28A5v!K3V(Dy9RXN;T#Xb%SVx!!nz=l0KxoPy{Ue~7-&8!vLv zzc2?Rdm;H!FPE8Py+R=US6d4I)?I2TJj5-LU*JZCWby&Ht)S zroXP#57MuX(XS=)wfJWEwRl*U4p`p|a&sol|6Q%1wA|rX)s+G-m0?{0a)JuE4s->G z%O%0nJpRf&-j#N+4SduqZjW~ z>l;$)80FkMA68Yp`og4h-~3_QYlXK(e&@K#Sv)l56!PuKUZFT+udKh)c)Bk)Bbzy9Tl%{`Jei)``XLSPyEZ_flr>B)71OK%P+ms z-uB3;!E-wfe+4J)DgMJ3cfXf-xZ(#TpN!x7r&DVlKi%=r{{MR8`N{jgsrbJ)*L;xl z&-muip_&<~uE{T!uV+i6J#RI4JI60h$Ii;Ljcf8-#4{(ZI&n(VeZoQC` z?`rC5$CJOpwizG4>5lRDjP@Lb82+3`rlt)*!1$Q;CJUEj-f!& zq*!W;%Cat}GD|m-64S+STo2irp*yw0gxF!ViOpJ@t}0UQ?RDBIQx)Zuty;I$In!jS zZEN9_Xi9dwWMRA%vpD9Nw(RrzXsOS4tObW$wGmZy+X-4HEP ze@g0N$mlS&n94+x86nlO9J5DJNJ*GiW11|6HC+)cBhEr<_Ma9dHA1`5p$aUn>nanH z28#+zl_loCIf!yxizxz+R0N)Jqbyh~bTgs$&Jr{|6pJhW&f|$YO37}x_r{8%r18Hp zB-6BREkH=9x?(U@5tv_WS35;h7Om_ZfAI0ci;$q)rtvM#bg$*7;_p0gaICiI%;Lhl zm-ZbR@GRM!E|}-_j>+?f8Uo$TH8W4vd0L9bKcCpT=Frr~G;#Lu)RI;Er{m?5!}TM+ z{>Zhyx_gq3b?vP9p@3}Y8m#!T``~-WzM2<&arUy**q_6(zVF8`FZ1?x6rVYefBx&p zM9-YVnT9o0t-*B{_l{J5G4^w+?x)p#$|B5^otjjB8#XsAm~nMz{CfX|@*l5yhh*({ zLK-z)vMZ&>&q&>uDohOIv6w?V;OfFHO_!bO${~kJA%$l%Are z=~;S?env0R%k&EUh5kyfK^~oke`0tD%AgcVU@j~KfJ!I_A5=pfEQhBc04o8Z37Vk= zUH}C&h(Hv!!WQU+1lYh}GZ+wtSD*`CgC6LEH()!YVH@m(-7o-qU>^)Z20nnJFa#qo z3ZKGhI1l4+2_|3?rr-*E3xB|M%)vY?z`L;!i?9Um!v}FLK8h7siGYveW@7YX6+Vs6 z;IkM&#MSs5K9B3M6*uB0lu*VnwqX=wXrPTrd=+~!jXSU(2XHUGiErV4d>h}vLCoNX z_z@n#qd0<};0YZ4f3Fumlz#wFO9KQH0000808D02Rr>~sv!fsY02Dlz|CIzPfBSP& z*R|I6k?d{Pn;hu~%qv772a^~F85u%iOpcLx1d)e)q^FFsl`j>oHlvs=<&5;C zHP%|SjB+}csbpHsa>*>@t%}t;W>nHsnL^cQNoKMWnK6SNa&KyLH`AW1t!$VjD_<#< zXQ=7uTcJ8V*M`5CnKY;uLQC1G5+Uf13KV41FedGBvZ^OBc-x3VwKx+hR024Zkg^) zXET-TxN3`F*>+Yf8?9r=f1FV+m&yVAZ?Nvp#&oWfuV{4=kB#QeYB6VwuE>p=K$FS2 z$RUy{0Xx}9gy6?mo*TQLVsqKBs*?s{FOcqKx%=_H;+~Va!f18~@n=isOxT*pn=Ua@ zca<$H7{#&5IGh*qllh7!C zo-`~A$BU*KO!y}=f2QT1FlMZl(GvV-$D2wMO+7t}Ci9kMcZQ(JVpH`l+NbJzl}*+6 zXlMkXyM5}4njy-R$JpeAqiA=Q-^^6T1NPusB${sSgqg@iMIaC=t(B7Ce#$5)h}8c| zDPL^Pn5I$8wTqS#{hz6nCfmgr6%nG6Eaq)Q=~xelos%DXf4{^#EtTuVi-g!HRwtb; z8#OQ>Jd@wRJhH0JevxxxtKz8LI}(ES(R?xIU1Ije(+k@RYi4q!R7j7^I5S^d_7p5f z!QzI!q>)BK5NwB@g%~H*q6<$bLvDOwsr(|sP0aJz<%-QaZCxpUcK!$WXjzy zu9piv`@$;wf3H=4FXOrsdcnE-f?bGLEu<#RSwR_wmo8B(SO>km)D1~hnWPrzicLsL zq_!$ZG3zEst39IgMI*=XEj%|!1EZOOg$^xM%ZPF$V;T0m5!dm>m!2oLH17ak;P5pk z6Y*wC#Y!e$oHU9RiqLEo`_P{(s1>rE$9iG2 zx90)ee*la?bHB(|L{Qm6234@IZVbAyo~1pFbJF$K+q3fCgSlG?Og*13dIfJm)#vQj83H>;H)nlPC9tNq>zGH-*kd$VFX?>brbebL?|+ zm79>o$gTIUD_5>79g+9q?J-@C`}Js8*E+9!3DHN&`Y)BHU?;D^_0oa=CU;<${GDGs z7dYcnYl=@hs`~VBRQD@^7+V)3U-PR?q0b`Z-_j8a5~}iBkj4lNzRy(U3jXhid=ck& zgcZG}34bdpdNeg_I^>hqIuc{~f0*2AD=@2(Ag$ zuCOrF{-v#FVXX-|pC}pvS_PNkPz-8|`PWUM|6seMU5)9QU&O}$4J$!T)sq2L1!Mjw z{OOvaM>Poj5%wsjL7YYW*ay!AG+zXWl@|kTT7S*w52-NQ!D*-|)E0)}rCZoCWl%xr zRBON$(S=z66GvgVTq4rrakex<=(0Z6p};W=F6VSH3@(Pj6OJQ&c46f>954qBZ>R6!5U}80=%blG1g_8)UD^3O?s$x?Tg`X7; zAAc)7K2|Qs2kt!xZyoTqdJ9{lv`0|B;Xy_5bGiy{I_o1{jY!w@v4|T}l+%ZBcPZ|6 zu44}?1bG_2fgTNaBdRkl`%34t1) z!O{nsnh`spYjIjtb^XLa@>u7J*SVrg`llx z6I-v?vx03P^f68!6$b#cVH11IW*x~@!iZl?3fhfPA$kYt3=8IaVFGa1;}V7p?SE}g z#)AH!=z3l08y{jD(LS8^AYpy^p->V*Z+vCQGpSrvzgDj)9kH-q5g&b>;v>=)bv`=b z?=h;HNkZeCZh(umaM9PVusB8)+gxUw2;Jn63tU?W-7GhGLLcWehC5w|aEsm)*W1=5 zbQ0CIluoqfVfG}UPjK1`jYozFeSZ=eA6Ar)mF#ep4Jam9v-&MI(4l|Gwzh^?KcW4& zlp=I1KAt0V;D(Z&VcQhnA~ktAuuJtPG4>L6BW-L^YnKClMHN%ePU$w>(FuKu(>VOC zhd=#hTaWa&M=^u&*Ug@`NR{nX%;VV2LR{mt?^K|6(b6<~HGEZzYW*5Zh<~uQBdkF} z2L&h_5rW$;HwZDo=_cIKwd2wLD0`;kDq*{WY}abGvzP7I&xQyclImGPcW}BH>cd*E zc3n}1aRhmW(4A80D51OLW|Yv~&gun1pKc7hi|y4~mvQ$D7_9gAVP&6l86ovdYIGgK-33BFVrJ?(L;2^BGcHx)hs@0PTL-tCqn(bD6JkQ z^d(Lcu(}CWkJejFdw*7s37*m(g0$diNJc#5@-)p}RzQ=icQ}68;b4d0;8>%DE|#`A z*eN;KB`xl1-~dgOmeIaM=rE_d5$$F~n-M8V`SpZI38zn^%zm+5Q58L$aP#69!^_Rc z2&a2+@o`+tIxweMPHBy(J}26o<6?wRgVVjx+yc!}PjgJc7k`_pIp$~@gpPCi3^bp> z%*^Xe3Czs6-juS(W>(N(vI#<8;q+N3J!uj;fw5@{el4@gOr?ggIom(W%#PZJtc3Yg zY+cGGTbHu}p#@xikI+ece2dT`KHes@gpXN5%^Qj}!;UL>k=O*p(Qt0lf8v+jze`2? z4}TH!hj{uCj|F%#p3_PV`JU}&ug@aiHKitMW>$zf-FGT* z@#3t=&ORqQVysS!uumZDDTG}`*cC!6ZUNZASLFr}rsM`dPRI@5OmmuqRd?{75rg+s zkeyu3Uh8GA?q@TE&Peqegucq@eyF>H*A#=-WIrYJHGiq}A)zPb=4XVSa#lYk^z}wy zU94sg-UEP#GPInP1N4AhnkYj{b9g&#vtAQ}w{MTSWL_EOCgq{ItF@n!> znnE_VA{(>y**NEA<4uu`b6(KrL^ht6K|b$h;{#0sX(Ps~;gJMuA zalOy}LVxc}*|RDuW)0wFGVd?vD13}2+If?Hqp>J{e z0&oog*W2~D&U?7t6}ZlOzRn9=N2Ki|64yH}u4E&w_>c|lML=`DSrYnCd;xfP487yP zdr821x6x%6J8#1~D&ZZKAslUhhnhVv;k`xZH-9;O8Su6N-nZ)EUGU(2Tfn>E`MMzB z9h0_?x$v->4Cp@7eo060aMr|th-y`KQ8R@gjEcLc`P4{lhm}gnn#NT5cBAz!cELuH zmPpdlTe<-WTJeHJ@=Zc7A_(y~{|=}4soM4w5WQEA=#q!%djioV&*vq9C?kDjWWv5X zzkd*&w?N9yPBtMP1q2sH{7Lo$@f2|01j;>C`CTV%S&_EyH9GEMmu#>(2{tDK$u)q* z5V|D6euvQSb7}yjj?|3BAhcE3mp9RzIw_dd;)?6Hz7CykuPy1Ww50OnF{j6IeF)cYIAEvQC(e_>j`1diu^YjIlf53^5EQL10tuK1!N#1rh7S}a=g zMW?Y)YQF255>sO_@w+eTyzhU>X?3@s&|92N!Tv5hUOuh=k#^gA&HYil=5Bj$vD+d+ zC*<4fg!`J~bXu$uLHrh;aen0_oE5&M#drUoI_?nmhamgiYWCY+_M1WW>wo?1GeSR` zX1}rt;`CKvATCVVD{au}gM{-u{FKmNIT?RVWc=6N?DIrQjp+grE)n`Urzaf?^Y8tJ z(^Ctd{Fc+#>rPS$r|teq=`v}T?C zh0s4XGT6m#+s}xz@-=%_GJkqjj(U5Q2qwfo&}Cg;x8>9J7NLJqV@ZKO0p*!J@cw5` zXOT<%Zlr%fRp}y^3BAhhDoNxr)y?jt(870}e!VL)`NpY$el;4@+=7aybS*A{-Kp2@ zVt4JPdQ;p$PTf^B7m47!jzZ7HhD{ruU zB|>>i4zjo8*nC^8;z3mL-$eg&`i>ApH9G}~RDBly=49brk%ccCZFjM+?9k84p?Ut) z{{jF2|NpI52~-qE8lI*Hs76{F2E;376x3k;wklQ-sl&w=esa_x`SLzWT5F z>+kBq)l!tG(7iIYHlr=Y^VS_U0aP!ag<2h`CL{s;@AD+Te> z7l$r)jTZbRf=c;gte?J&j4)Hy(^D8kvgoOkLLvSlcm4k5u3A=rDb`!iG3Zz+f1D`l zmb?11CIWywUVqA05-)5m$pTp^`IF&X@6rTqc|D;xBm&B+PSQsuZ*Yf((KnS4#Nnu*hpH*o zB`r{Fszz-+p8`RUbl^>K7mg8o&=fQZTJEmDBzeTL-Wn**HBY_Xv2X>gpnB1RSn@-E zSCE8tte?qa7;BZZuu2_W({=Jf5ykN=RPs54Zht7K1Qt0Q7J0LT{{ zPE>`?(Yz~3s-^rbwHLzqpIL`<1(m|Gb0Ya$4EmWYyVA!I#iA}7eBUbNtJR$j=WkOZ zFRg-Bfmv20U(KM~#H@;%&8Ri2CgliVQw0es#s(DV9c5YlVp-NWm*tLAS;}h5QpA!U z&VOY|c%dx6)Rtv6Ez4a6t%b6TfE?}__+QzPGc+0vfRWQ{YHC;#3_|^CN z{aRu_B_1ef9k?0^t{#T-kJw25-wb-xo`1$N=--|un(TxC{)vJ~y!GBZdG5SyQPc!_%{25ILct<+FL6md|{kww7 zA+0f>`P}Ihf%y*sbHihtHcH2`g!NIM9&w<(9tjqxV2y%4 z0(avD#-Ir^GLU~fl*qt%LMOA@RQ*R<(EW$IFvDrzHn{7Npw{XbO#Tyod67Xt-hVJ4 z0qHc1!9_tIgWnW@tQ38T_=LXM2vjOiu2S?}Lb)ku6HpU?a+h2PgA}wG7z_+Yl{^%* z1*kNj>N%7=6|@zYbV!rW{-&p!uh5>TybBjuAw6>6l`3V-?nrYD1w zHo|yEF{U`WBLHghrK)65&{v=|6_mtRD1EIewN=moP?`pT0)-+HNYCn2oww>#52~tf zDCiqdoerwTzf?V>ss<_OTTq<=p@Ykfp{$_$P{-@y3wG z!;+0A#$cKalgMPshe0D*Nq-GORLW4~pb`kxZoQ8E06f($=k2<{htoGTpzk21 znUGR@=#Y-2L&B}b4ve7#G=?|v9u7c9K*v{jIih;$q@bhVWfpkpT&py@PU)Dc6rrHw zp!5zXb$NwSrK%LEpc9}p2b!g;|AsF=wG{&e#j_hJyVRKHk>93&kU{eG(0|Jc$RU5Va2fo7Of@(5IK^MVf5tzIg zXdGN;GWZoHKdL4}6n}IHOp3uIHqbb<&SdB-OfIV?!xU5nChvjC@N(nmKiY6qT^o*a zwBbn7h9elmh}kfyw&5t~IS4@lj8sX|h)(3Fzi!1VYVgs2IWtBI?xpntRsdLt3CZ%ndJQqV2n z6yTD9YeKjbMFZ4wpi(7oR?!R)kPl;+;9wyFCLaxTLXUhILmGTaV5S6S(gA{YL&lH+ z_W~eG;fon^IARe$8al-qC#x<~GB0pv^O3O5+gwuTvP#G{SeV^|mX;I4sXuYv^q7(+H( zkicsh=;d@Y=DzH;l6b9FZ-Gu;b3i*c%$P^K=Dpyx)Zuj!TnNGITF}df6;AP!%8ZkX zjguL}WV*a5FE4K@Tu{Me9hgk(XngDCM9N4acOa3Q&VPwa1MRoMjMIt7=`SR*lqAAx zG()njv2Z`C@9ojVYQvdkTVi^AYO+QnPqYBf1i)M)5G{x+hzp1S;swG`>`ie~kY-MN zb0_`Rov_{sx1#!OK?0p@gPe4NDQ*W6>ZB7x`8PoZJNX&nWIL2%!Y4T4L?@i&VJxPY?As!WNezl99spw@#r5iH)Mi{42On>%xD%BBToJ?^W7$;F3Qqw$&{b9_d zIxS$#p_uejHqGrdc-W{u>A@_D8^dU!`hGBGQcU`FBE@76(<$a*Ort*Q!2?sw!D9l& z?(j&Zn7j`u6vLaOA$2F?MT$wkoCoQvalAi=C?+}wL0V88Ofk_n(vhV$F16A-$4vG+ zhJVhjb&O2DBfiGP?PMSFzLip*uI~@Ngsw52`qL0T24|CZ{4031?@ubZ8vFU+b0%SE z#+9TVZxAbVw)PDwtZ}_b*?)T=k$Ip&8oqOhuk()hBsy|)n zeyw1B#Ll0@vA+%;l0U!PGBhP!U)A-=*)21BEE&`9;iZa!V;{T!D_DQLXt3Y*0rorF zy5{PZj>=lJ<8s9F$e;(e+w5*IwX)CVp&vg=3LhJNr9njDVePKAtG8NXV?!3b-GAoG zJzaD~TQ?O%=AHe$>5{<@y1V_O!S+@uZ2kvapC@p-^8`;W=KD$=$@AY)ejOx94`RvhijrVuB|I54$6R&NK zH%}?;w)9x*EZ^DFd>>EUbRBiDJ%9M9`GqHMefB}q%ln@6I2sG)Oo#eWlq+dPoB+Re!SE9 z6IF9|?ue<^YDce{Pg0)k(Hu%|Sh)OlSxL>d>YSV-V*{~mWMN3q-sR)Q#eW2sWc*fd zZAiXLNzNtmg2rSfl5>chE#V;RXfI5Asb9({ChyW}inCto9p`=-PcdnmF|_}lgN&s3 zA;<`d?|}@b_$J68im!n5r}!jDKZ=in$QsADxh>IHOF_C(o}8y$DJExSB*o+$>_Ra)?;;F2_kdt>#&@8Yobl}`CbbNsnA9(XV)FemQB2N}Hz+2#ixiXiZD?E) zvo)q zVi!7(C|{3a!gJlTv#roa17~HBRZMV6(y+NUGx@=o1$G-1YyTmQ zD4--9pOHT~*{W(0rhz##FWzd7OUW@OX2XSraP@QJCfZWth9x_$F!Ai)u;m@LgW}bT z&)+ij%#F*=wJ-#YWiu_ri;bwcCTSX*GvjQQ_&jr5V&+5(&PcY#S*)3f z$u=8NW|ERLx)fkDa6()PHYdf|GIOkn$?6j;``~S&{T5vbViqbU${+o|@ zi^W#AfZ*I@b5f=?IVsp08aE+%Qk*3rjuzY&1lvb05xo*p$$3yd3r;{LbW+L6Ba!th zOrEaem#$jGgnwksLoM9gjwH0&(y!;NA)WZox-zl#k9|`)W#FpwA9J~1Zag2-XT{x| zmS?y1-X2t#_Ip8Bue`vS3j;1A&FGnH0}jtxxo+pt7QKcw3(G(9WLrkTrDLbV+~!Uc zDoW-(-BdZd`Nr~o13QfBHR8L)+rtkX`8mJqjlKm*ZGYwRCi~7NJ=|s)-CBEZ%dwim zZ(Cly=e8vQKZ0)uHp9Ktg`Ac2PrW1FA;6o9;$*Hb*N=MI3@7aW@=;`{MyP7LUNg@i1(|v+x{j#|v;FF2colDPD$G;0<^a-i){7 z9e;Qi-h=ny3VZ+`#7FQ^d+dz8Jmy|2AL_QUn$+yC$8hlcqNP)h>@ z6aWAK2mnlGPgR?dl3$Dl004{%0018V0GCsM0~3~=3=My+R$Xiq*A>3AcfC7z@Yv&> zg|&@;#$MaNE_la)lUNOOY)A~)7%Tj=DwXzcuFcrHGuxS6gH=^RIBij+C=^ACrgaP= z2&qz%nh^D^Dn;o-p>bVQsyy&O9#GOM4WwRr=JWy;~n>e#d%$yORzAe(>kHZ9PsL!F>kuIL!kX1ZisWh+;i z3YW6;1uLr)56zY!z{=hX%`bg$6x5 z?n?9-oZjNE^L&OVpI;o3r8hY^@HOP1%jh~b)L7;eE{Y0n_M0aM%biqe9Y?-2VK4? zsEFOatQ(cE6w`!QP-w=Q&?38hgjX`qNwdq#5VINFmg+)uLMd^4tIKZ$ybZKAHz=@U zQJ3Eol*E=rQGxmt*fOD620<+vZ;F3vLG1FepeptbiEa3j*ohUP-7l@}J6P-lZim<* zbc*d9-!7@hZzAZgcRX&Q6BG_X7YZcuy6JNHW~cy8nD4H3qsfq^1&Y{uNsMFV$_SR? zn$RWt*;{$_EHn`Z#(`0Y>2dkZ5FUqf>GgIQjvPm|I568hg%ONkWBX)JWLJMxB(6na zwVl^4KzN^D(-xQS0FfRL-Z~_1$IoJMdrVWs#Im@Jh-$_GH*j1pVA`OMHA9Z zj#sN7lrx}Vxr!^R7@?zO`TIRg8k30!cju z8dW&u*!eYuJ>O2jF!P0q{2Khg@>vg&7!gYrI9U_ob`VOQghVQEt~48C;kEI zhbwdjq5ZjO1Gf0u!X%u^t}~0Tuk2~KrPkMFUc2-QZs12R@m-p80|8)1qM=srei_E?E_Wgkazj{>Z{@}**@Akhk^WXD(n@%Usz1;I5k4~O@qvy{H zuV4M`U%K|6Xxo21zw+-Jh4T+q|Gqo)^P+TX@umO#=I)CfZ(kcb^3)IZfB*eg-+lV_ z%0K7#ethV>o;Y}|_4gm>pWi5*>@e1XuoVZ!~6uAucN!M-al zLfS|>=_1{vkEDo7c9TIeL`KLyGD;4RadMoTAm1Y=$qzJ1mgGpD6iAVn#35x;AwMDK z$in}1a}oLqP)h>@6aWAK2mnlGPgT+Co|xJQ000;c000}8QGf##mrlO~3x8c~6WJA> z@z~D2j)zP<`2~_pGA0Cq?TMWbLV&#_{475k!cSH$P&sxyaZDV~?AQjv(p3tpEu~rk zRlB>h4TQEVD(Wr^WmTyUt0J^3ZM!XvkXr2n59vdsRiD@gDz#G8o;$uttoEVOs+NxD z%(>tB&d)tFzTR`_NEgSgl79wv?|f-zVPp%(xlV8#*HdZ5;uHGWxTTv0PV0quE-|I& z-36!XNUawlNFrCR4tm%dl zFrLVzmWs<~(vXkH7D{&&W@0*PBvRNRq+O|YG{Z_Ka+!090#shfYKj-FEKU|P*%Z}~ zgQH3^Q*e6VO(s%Mi+{8PAJ1fU%IKd;OzMzaA_bjvj~m&PFAw#X44C#Mt``#N5+M{W zn8iZnl#wcC^>`*XZdB23mE8wIw^2V^POxv1jL z24n?r)fEz8ie?t3n5eJ&^i0w?#&&+Cb=ZqXN@Pp2@S#c`^x4i2S1cf%>i5Jr2ks@i5v$a9+X&sVg zcz@Jtqc%u*9V85es^>k5DXWG@#T^nPtG?k;Ic-Luyr{86e3GEmKn|-xaBPR7gQcf9 ztJA50(^*mbNBW{q%UJWu?KcwB{QAf!@ zz|ig(HV~EW&PJO9j!hhoI!OTfHYDBS(SN3r5n_bs6XMvFhdc^HY*+|G#E4fD+j*qf zr~@n!7}>7=nAq)%Wh^R2c@*_4&Sukx5Tb5?N3emi)zEhi+#_us+7ctaE*R}DC~M=8 zHqRq?mOA&xc+_K~O~4$5SeyG*vCm=N5*2%S)a#d&(iqt&v_wleLr7VGq_>p#!hb`` z0+0G^6xpxxXseCj#pvq>zJB1_;qYybiraX!t&Fd$oUaQh&wy`xi7z^&Jmb+08^!jk z0(Z1v9fS9DGy8SON7(OHJ`$n7MEOW43>J>tH)T@XC+r>X0r7$eAQ;34!h@^=sbcHY zUJc>`sR5~FnAIR_n4RitnVsU*GJm~}>6B|di$(R$vbdo#e5j05V;HK(%IrN<-+k7p z+I~<=;)|EI=Ya1?D@g_)8G5`oll9k<$s;e55IN% z*sMKQ5lBpi6Ej@m-dZD>*|+Dl!{Z}KJnR|R5__pP@!xA%UqPv8!ywV{K?80EbQ zBK}7W<$0IqTAp7A)7zQQ`hp__>vN^X)7Y zEE?}(mU>ONQk-x)pL1?<5`Q=G<;~ai*tsL^SDwD}@sGS?r%ny-%Zy;mzT`aMZCHCOzrpDa@1N8sVgrHxp-a@iAk{gkzjVPpe~kK2O1XD#gk4a0iD| zIOM?rGj9~FG2L0qOmcmZ31do+SjAip4rgZ!YZ4x)WWtIqUEoH_$#L+>8VKBAC55mSvbXU zyOQY)wDV-ydWzEzJM9+xy)q>Cx=ve|-4l_2#>`4;uQ0 ze<`(b-|f}E`6BiFfqA0c{nh>Xe_i>!ZSgDb{bc5E@RERkFMnL=y|?t)&E6?|05{=g z+>5v1!}tjPCf4ydp1=iM#AonXJdIz)-^Q=u%lP~F3ciNl!f)d@@w@mszJcfPPw-Fi zEqojQ9N)pe!0+R`_(OaYkKmW_G2Dmy@ix2_x8PRXhL!(Y`~MA4O9KQH0000808D02 zRdcuJtQs5u00kH>0017BQGf##m;T5E4u5%g6i0UNp?Wl>MkTk@0|J|)p$7yOf))}8 zaoCMOjPU^&Pn@zGC?|Qvg z?hw8&|2zKTzmwmq?hz6>;OptC_g=mGy?U)pTer6<%2K_%XZ>C4%lE8O6uwVUlz$KF zi|vVFcYmUsEcPcenVNy3n=HFEZZVV04MnoaLSo1*>j5^AP3}*W(g)nx69JXnKt5Y2 zx}}nvlGxh*k+LgSpDBlf$jtOqFbMG2Y-{5Oc|TpV0vh(Z$~1PA1H+flbMoRQ^^&Q1AA)v z)461Eq-r+oB-11A{&F!nP_8KrCzr2S2``Kk%6WA-SsGU1gHr8aF`rFj(xviLpN(XE z!(hIcO_s-1stfkgs)i~wkxiEX9T=`j=fR@C#-|d#b%7^%)-5Mf$#QaPe}6KS*y|Qc z>3mM$WGS5+N(`nmZYk_$3*`|#o!gttq*K@Y(9$BRF!(2161jXivBw=r09J8z7+OjW zy1u2r>w%KvG2;E{vRp9IqssOM7x7BDiKF3jeJ_0$|rp9 za0H?3=E|koN)B;J=iF3S+J8`k7#1pJ0Z_U$98lL}-E6)%!igf6%)09Cd^#7Q9lWKv zxl*NwK&Fe)fqY?PT%jP)D$!~CifLFw%c;@;-($jG2i}bOyU9t#piR?c(0IIVNV$_- z&dD$<%0F4+)fK~{UUJN&b9jm^4n-3A zLb)^>=DB17u^uYAL-}GlnM;%q@LZ}CY7Gw%GAykRC+SxmI)9KZga?WP?aS+FiIAYD zBvWotJ%G&R$b7^X-7aWNQv<-}T)JH2S3o2HX~DZEm*UdE^x%kEDG#oyPnOYmCX`ru zaFB|-q|(on*4DaekDz@+HaXJo`k`_Y6mgVCE>%bIOXt7^Wh;Wh?oXE7wv`bQi&Eu4 zRtg2TSU+5$K%;g*qLnL!jNhHuy4CBhqiPGN8e6Nb3P5eG(Uo`3IUo{hymhjn-k7RMbHb9xPjSx#JG-Zs@1%N-W=`ha`iD@+Y5+c&D-DBk@W zH|o4WKWj9ZaXr>!Ofk+{Sem^(mSLP_SlX)-QyMkH42_edJ#@KF*BxRvjdWs$qq4C1lpgxhkf zEgZbvI{2-vv-ak1t#;yTguWKGZ9+pMir7i^)0q=57#?qmm`;~4*lIjxH&cvmrmJfV z0mCkdMokxbi0d5!XXB$%Bi`V|jE0z_&3|MbpAj*)Q8uXTsBU_EW<>9ERQSpW+hUa& z;*ENrjKmo=hygJmskgHbk9zz@(j0WtuDP7wG}-6>4)k=7&jRHfJH(q#iW$}z9%-hS zA??IAFqF@zF~uVxKGWl~=>!hnIDz+^$-G4q@HcsUE=cFX&{;Le;1HkfaT5>|kbgN{ zVm4dL#Ox-=6s9fahWK3HOQzK#W*gePIvv%b!fSBHJgR{6YIUVMdJmhzdQ?O!ehkq0 z+$?};)z23EJiDn+i;1P$0&(*hF)zgDb%}-6YO&ZdyDf!vTe`7^iN#H$+Cs5FYZkGu zgmqlZ5ApeR3akQ83zBTzgrxXsh<~|AAc#>y+^UkqCX-wykWUiRO_R#fiGK;;f-Pnt z#21Xit^l@B!WOQvpoF6>5{tCOqB+Eyo%q+}?nO?V>$F&02hUnK&>Yc6DLv!7fp*+H z201t5d@Ihkh$Y$*(Gub6wy!n45GC287!@07mu@_Mt?gWyUgP^ zBVbG6Tl-;;wy{^?&t2U+NrI%xUj% zHf(fu^ez!=cWCPngqeo31H|hh=GXMAbBI_=mxIb0(5r4yQH@>VR{Wg`)s+7S=V|wzqJKSHH7$9Qq_zaPA_v}y+>^u zAPDZ3d=)f%Fjc>aPJiyK+<|)3hSq!Bfpfai3cBlb*(&1vMmS?Vj6$=Jk-?fbw1^Fm z*Qns|27qqE;f)^e#^D~A-7_XO68qH#ae>RGSg1bmx(U2C;F3JuB{nhrm`=Td9;r+- zn{-F%;JpdXlZ&{=H-h;lFu$!!Y^Jbn9usk2h{t<^U>Pmqc7G#ITHUT6GbPuB#zd~b z+~M&}U=;_eJG;bP1iEWX+)-r}Cswv$)tR>6DrK$Rh7|g~$2a?ORM6cnJ*^_=?vUxB zw#(dLj%7IQfZj>7z(KJ^*HvSQ*kaV0uzwb7G$C)xVzE_a)P19ta~16G;x=!D*SG4Y zDKNISS)J?*I)Amz<6EHk?NI#gF0q{y-##X``HG(u+YD@IyfBRwSOlJ@{M`!W?>Q+b zJGWt(l4WK&+5!TQWN_Re-Q4T(yCLEZ0Pd;Rkx$z}pExBRV#pQ0vF|`;8(m@-@^}}s zC*<)i%Hs!-$M=T#y~C=wPdcs_g^Tn@|aKw(peaXZ9sW+g`2P`;qR`J4Nz(%B1}52P={_;PD3_ zV+UlUf`7KA`);OjfzO2}b|N9(CWJWwVFK~sbqG`$F!O-fMHn=$EE<>V@rNLx7ZL_L z#SmM9XUZ97U~L2v?P`fWESu-U93w}F4+U5U*sv+y1A}3YC&23-EYn?L7@-_yCdd%Y z;QFQk_FQ0bP=dQXp2VShacGasjef+`;{&oJ=6@sA$~ z=#dstG_-ZqfYE%%n^CgqEv6IV#qlA??@2R(*)5y)Zfe^4sN$cB(yXpMsP-6fzQ|}m z5`XW(fY>5RXna(mgWPsb*g;qVOB_ zujy;xiq?laO#WxpMfE>K+-y}Z#C*i&H;wb&>+u4(_JixbdIwxFY(JtZ;t-h?=Pj_Q z2+d}l5|0L@s}6UF{ramiYKV{E5S8Bn@TB*nP>J3LJ-!dB4i%)Zkv=JhJhjbaEL$AB}O4(v?^g#O2E6l&Z$a(pIC>3 zX|f##A3}8IpAs)s8|x`?lpz-|On)0_jL)DkX2nxlPCOanPfEu==Ia&=>@wXRLrP%u zey*z6Q$RGRl&O!yfr#MqRqh?)X~-OvEMk&H2kp`OEmXwQGOZkNc&3{bV#EbJ4*Q7^ zJtbZwHXc7h$GfAtygXvK?lyqSQ3r|~iEQHwTEq)gMUEl`mq5T1T;~fR;D1>-kwX6* zbf)+7(2%<33ph&q7a@(_FTpSL{*K3=MCfQNKUOchVJo;j1%;ZaJH+`?Y@epB$DcVA z*7+iah9K+7)JlvhcA5OX*2=81waXm<{8aI^!sgdg332O^F|`tT`$;An@ehM3giyNK@+`lh7K zaj4XalxzUE??v=0fTMh)81p)g+KA4}(En%Eap@JROqDVY1gc+|l7B!}=Bplm1qzNr z!Pi!Z*J+S=eVOp+?JW@}(1(iR4TRwY0B_jhBy+UG(D2nQCSMxjCp*QP3}1(zhxnUa zVhoqZSoQLdU(B+3zXoBi$+=#xCSL|)C&jBwULmi`pjk>^BM3A>NAOVKTF+4Zjt9err!h zCyZ2QJU#|d&p_1Mb+#>iMy&utoX1arQCpWdD<@QH32Ib++Mm87xY}i0P6wmgS@Jy% z)9-lvE%1C6mYfT&-omx3_g#;lAuLY3H+~Uyiu1QKfn3oZZA6?L1F&V3fA2ahXoJR{A3+mqu!G8te7#(t^y?~Vd7%!5%nypu5 zkwxV_IuX^0)}SlM@(a&|59=|-cmOYj(Vtu3BBb1p9r?NcCx|+8nr%P1IZ-@x`Sy2NGF;bmr`E?*1r&pdt+sFOf_ zzDoR*A%6|mGa5WDj+Z5^KBqr~KuKAYKkX2ok(9qgr@+}aarS2({}>*`cj;f@Rt4}B z9QD_zKmX4A8{GB)o(AR5>&VVa$fsLc#4oDXz%Kxz4EkG4Mj(6(r@vSwe#vCsM-ec; z*=FSMm4QMPS!Lv&FF^at4)H6}=vVUZHArD?D}PZVbhm~$>R|{x&w%dNtHf_uoeiEb zSQ(wrhtN)GVl+9%wy#i8F++wbCMOy>P)_u~S3Vxne~sY$29V!k3Wbofu<&=Q#2=tI z{22AM9;6w?f306Ee$V23xg4hSU~-+v`S)ZLU{LlC9pblS)Zbw~2kUcS{r3pko)G^B zkAHsx$h(02BOvJz|0jGK077l!p8+`+;{Srr2tdvQ@~?mlhWHha{{WB+fc%>b!lx8s zRC_y2{}iTo`+x1?bm9LHmA*k?JIcjg`h)l8Yyof9f#pU#43COuO0bUL2?c8&z#H&1 z27fPa!ZRa)--zd?U_A@Z?BMKtJXQd2`hRZ#00960tyX(DmDwKtHn}Ve(x{<1%B1om zw!5JSAzyJKG+h`6dt;-$+1o}+5uzJH>7p8wTQ_Oweo?0BltEHSk1jNGI#Uf%F{RU) zvsTs~-|3(8JoB9IdERHe-}}Amw|?vUe(PI{VVJ25!|*VaG0ZTOFf5q=*7=lwj(=fG zxgCZ*^%IW+)m<^>Qr!*1o$B*2JgH9N_|Sf2EMMv&+>i1A4F8X~qVHFflN^>&4;fsY zV{>LfyM<$C;!JGYwr$(C{lvCy+cqaoCbsQN%#-t0oe$^zu=@{mRafuT_qs0X;B$TB zV8)`~nC#iHtkA@XUg31Rhh)W@h{T!9&lnSuI~>uDi}>;f6fUNf(tP(-bLN>UR<(@3e8ugIgyr;g= z=w;HlbMNwRrfKcH9oa`QIM!G_smFgVGx#q0ipaS|jS#)glC+c1=jc053n|ZOd@S&K z1xVf1^$epPLxg~D)gyqQo^lY3^(NlG?tQi2xM#4_yhvI(x$5nFE$a7Tv#tlco*6-T zVqax7v|Tpl8#A>#h*bkf<95?TZ`U? zw`<&W^J<6(T7l&xPI0_?n{WMT5Blz^f6Jc?7lq67)SsBXoXgCUP7~cpRj#+FZSxRy(_Ve&{#yw1suEf zBRMsGwCgdZ&q?VL^=zsJsaG*S<;VQ2@AQjc8Kil$mNl+vj`qr1^S5-xqu3A#%J=JF z;Z;bDtk}U8ue%&8l{1FL_taQ-J#~u^)79YaCep(0U_5~PENOMTZ}IO-7|I?3LhZu6bq#d49>f&CP|Q;(-F&F-YhPERc(e@)T z(rpA3;dQV0bY2mC!M;lo-DN5ed52$#U*vWzcU)w3xpiE01>SRG?EH20K`F|4t`X8jQKv^d~|3881tTAxaq%M6t$;IJCGlIW)F><%z*0 zG!sAihJK82Qp3jJTU1AlViVIq3Ox#V>3Auk5GG8e08sU~8*jFXKPq77-fEi_%6thM|>)QacL~ z58t*DMGSe!6(*AGc`X&JI>szpi;aC&lv`3t>co!Jv;Bc4xt$WbnyPJ7I>66oue(~H zOrEa&KCpSC&b?Z%`TI*T*{9^Gw`DdL`1QB$<2HOMc*D&~1Y_Jau@+U>-<&khI_p}0cUL!`Y*H@h zVei4rY*Gx3(+tY_3`e3Jg8*Y20Q#4^C;(g~UK}F)!9IG#T}Q^s#E0YEpVwm&La#qq zYXsURVV4P@P9pk5?uP+93G6T;f)pU4M8L>}6v^Sm6!>TbO3f&$MOZFaxxz(_A=mld1$0dO5dy7mE|TTlR$zkvpbv>|w~Ka`OmoFqY*i9`U4L>SGVQ22OQ z&w3;_VLsG;xm9rQe7Gk;QWZf~oWLOmuvkIbMPbnFzy$~NnE~*2C|L)zT0!Q`;9u<^ z?)fO!Lce)}PUav#Z!JI|c1gPf4PW55`?WEQQZ&%e8#1fWtESKEJ1;%lV7OCQ&B~fe zY3j|YNv%h;ntYZ6TupK`%-w!nOw1T8?c(Bu!95`N2-SV(g@p5O|2IX=s*iRF5giDq zo9cg!6{u<3IdI5;Xmw~0l(DsCFH>(dkHi$U-C$zPCL$uE zXh}8*V`#}x0U;xyUngwwLF2$2@k5*ik~gqkW#lZfH>HHOncE?)mJ4Oy-~8XtF>WDn zQ7HUz&o9S0_Ga6jJFm_E>NI&a_R_z!np=*}Q~xH04-w)5Tsd%%S`g1EO1YYF*M#K7 zDYZ4UqtXhq$5UoB)>hUsXkC(>jzV*qy4s{gay%-~`qym=;;9#F zWK5MpYBL1@`E=ScW%rt-pt{3JEV?ip>ZM-H#uGQVXQ~xK!sfO0Y^vvoITu~tUX8jH zc;@hNsU01$?>9$^7kQ#RIJRe+FAtS2TCDwN#~CpQ9yB z)t-S7c(;1iyeue7q%<2Hjj43cXC9@RuxJwFQ<-bhuD6w1sbQ3F)ReFXX#+)*$hYI8a#g`PnutR(JQLbeZCzh~gO;rDC#;BFGNeR{tb6h>*ecs$ZHj!E>o}FYjEZTKR()M)uRQLtt8?T*qjJ=Qfo9kMp7)%x=6? zWTmW#yfzBwv9G!lQLX43D7ZK2Iq#3^d^gnG!TW))yT+5#CzbH>=pT4Wr9J)onr`W= zWyP$PJotnS5ooS6UzZ=a}Gk1JXI#Cvh_pC%ousyMimUWV(Z4?dOeLe9}xK70I1VX0|+ZH{0x#TL` z@~?&@ayB~up_*NhEuG0X_#+)4X0R}m@SJG7hlM5C5 zv-^ecSaaw7fRMPbkhnZzWqsm13hIgifXS%|sdQGdTqSkSgHDOStYV}~qEaDB%A-r5 z2w6SopAC^#c>ARE!h=s7H!%B?M#Ap1OT_KWbSB`NqzotOZTMDjd%l;v!3c;UdH=mx z>r&-I>0SM}iC^%=rc?8$$zsQu5}&n_E|nssOrY(Q9%gKuJ$3rhpqhzgTSAkWb8t?c<+m|Y4kJT2vyNzp87p;hgTfhT zCvHQRcQC=TlVQTQ%)=(KP$Ur00G58IxZ10j%>dXn{ ziq%+Dhym*1I0m6@QX_UT5~o*th6I;Rf-4rUsxJl>PXMxI(-8yToYKKF#_LfaN^<~# zteAv9m@%{~`g!}3G@&Dx1z-e={%l&>MAw;4$Ig-6+%z){6=cB0xC4=B4^_1wd!ZhB zl-I_3(Y6WK`SkA$91u{ZGPMnP%)?$5I7+NtFt+}5J-O&c3!^FMNqh5cL<#bkEHbod zJp6;QTu+mmzhK&n9Bct1!V2>%=-rob7n*`J$Ep+Y@Gb+I=BY=Rd8Hzwn&Ja zLdaxBRz{8xp{1z-3ScH9fF<{neljeu&NG|fTOA!|A@ttm#4&c9llBR|RQy-pdM5O* zpMOHH7XB}_A?z{i-49_7#fv8sDs;$2P=~i%9A%24$s$-UMaP%Us?iY6DS z8~oBq-|UEOFXFF&-qE3tAsjiz5GIR^x&S1{0$mubxVp~3H~?;LL}l(cW%|L&MYQ}f zvPx(-@@tn5euhSvI;mu@!!yN;rhS$|dq}_C99Ve*?>md*8-BuqV?{E26~k+dK#@ zgMM`I%7UkEVBa#8qH#)1?Qi@)K`+`DiaSF~x|cZ?Yl7)ShU%h;$pRSpz~W36DHoT@7&nqLSL6;k z3)1ShLPH9Sy?k`|qN2K$#UU$}&Co86(|hZgXm+GD-&Blwk`>5P7))Bd^LiL^t|IJm-GDLF#nfnEOq6ULqK{+d zQ07x-x#OSwyiVt#dMH4!CX4zPq|Kbj(y&$+cxcczgY4Vl5Ep}e@)=t< zCj9Ag<(XV+*+4huv2^&yziO>>>BX;j#W&n*IT})bTEsL2!1+^fl2UIcVD@M5` zSMsO~^Hnufj3z}4d~^YuuwLn_fP6NC%8#H*D`%Sp25tGmdQ2ar{4YZ#s$WgM0-?Uz zbe@Zbe?}MSU(9@64?ZwV*n;bf%Y)()qED9fk&PLjqhdbkxBBJUd&-2=KU8vs3|E$j zmjFAcObFx%BmC4Kr=;ezBu-aQ*mCx$a1A++iUh3 z%ZJWu)E+&o*cb*g9_1AB*3C|L{gQ(2}pijuURMX53xko-d|1p^z1y2 zDCm*+o#unWmksPRrmXxqGw$!d(MB(6_}2&=oai5}F7M#6#d+W;e> z9FqO&d30T-|0oZC4alpNbG11(4%<*cwmRKA{$a;9bM$_7zW60qJ0hV(i%oa9=|Y;ONieynGcYCt)}wU zzF(?yHzz1s1tM?ZlWc4rjh%Ge z<%`&y9)DEbb2WRxlS?&P?H{470r~Tyt1-HHQHC&a%jvzt)=yJ4sNw&P=+G~Jqn-)W zunFPFPlWoy0T9rHh{v`eK!AcmEka|9L8yEsNhiUyMz9PG)JF(H>Rc$?B?J^3gfXSq zLBh03nqZUTs!GOYO13&DR>L4z7B3DCM)7BzA?6SJPS%&=#H}Csnn6B@Tr(~Za zGzAA2zu7Z!UGhSkmVuzwGA_z5<2Y+*7}1kkUSBoBC+|U%eOTYvw*>IxiZSI1GCBSH zIRydb?`j%Gb;Iv#isaMgqGW2AgL=vdaB)zsviwrFzjh?JeueU#CbHv4euin^Hzl|x zCAbzPxCW2t?w4%H-3ID;=^X{nHu-{SqH~MVH~k9r<-@=^@aC;5je81 z!+8P$JG=%nEQnzb1IQ5r%)C?)+r}a8EB%2S+1FTl)nqpn39gf@u%+T#`nkLPsD$*} zJU+CDG5JOMU|>EXjpl>}P6bWLJ{y^${3J7^`^u+^^cCnz^3+r3XMxA_RP74$6xkN! zr4JXfH+5K_ken}P9U9ljJ~ZX*8lVBON!qr9c_+nvR6HAS06;(zE!!TwlauyiYS;8j z8poOzTHB!h@!?aY!vq}u;o&cAIs`|jvT3-!!Es%-#7`=6P_zKJXjF+KftSp@-dLDd zE~>-p^9=3qI${u#dw9q0O=HMc2%%*EJU`_O;B;@>;}=TaUI>I6v1u%ScNFeZigR0p4*pFx}6;MT>0V%I z?X-19Y|?D!;83vZiLB}KJsVDK=0>pVA9kk(_ai93FQ_GNbhBNPv^60DG4d%d5l*`= z%PCTDAsT?9y4{%N5&;|?W>dJRV4Gnw0Q(dh@ z56}O+&=!BHPcXkZ3f?CGbo(x?h=tcA_<@Y1f#pYP;kyZOPYn#rmRE1-Q>B%x?H`~o ze(IeHfB^)-b%Vm;fJ1Dj{@KXp(Ht>L8YvYWQIvCAYthc`9vZ)ngmK@fK7XQDag+-k*|SqSk);h^rmIcS9v)-oSIKx{!f9I5BQrZT;#unti3|u*JK$^pl3=rl1afmFx9O*>h z8AZzOaPeP+a$s^7a;=syf(pi0{sD5neZJjiUS~OYP8W!hS151YYJ=ZSTwJZ+7u<>q03)wL{YYh1NV-J{doWfJRIrmVPhsRK}X3yq9D z@se=NdhN6s(k*dlDDDgh=*{R7(MT=SCQ9rs?3y;V=WVa(ll2pam=+|=YF#E&wByUR zl9sMN*=tDUyXdQYOBL`ET}x{kmoiIyTn!Vri`-I7kaJC;r6Qym(_F@#+8#NZyy@T5 zu41zT-s>Qi`>-y*vjzg92LQlk`RTgg*KH>Apq|t`>GLOIHj&fgR?L;!`7L>5;kiU3 zl&-L_M~3spvk(>48VNdU?eE1TP=kM)8=~1jESELC(}hYY^6M4CQA1GGX2cay71P^C z`XIzKow_36!g%C+FY zv4aXb8a6n%y%2}|gBBG_m!Z#jJE|IJTclD?*Jx(2iR*lWk>2imJ;`QhRo|{uE-z-; z%aOW5FJL&M1-tZNvkY*a@w29^Y{c4QgTdFItU=YA;eJ`q7?(v=Zto2Nq4Y0|aBltP z*uh^I_J~P8#)_0~Hv_Ii>cWQ+#avmr$I5v9k%f6`dh?wWaf)0kPOVs;oTPHQGp}fP zMi1~%=df8|aG_k5Rx^x%Rj`&c#Fmc_KGgxJ0E1CElYPCO4gmA}l-3j(gP0NGh$Z$4 zF|iS%6U*_|@PZI5?Pd$E+(iu=6)M}|7Hr}9;?&smS)%z=IkpNdHhHcrXlBofraVL? zSx4Tq)_s>kVDaHjd<86KsKzaznpT1?4*e-Ol1 z(_TCUScF>=Vt^%;$cPaQ83)$C7DU^KR?*fC3RG)GB1=;m-ID2h`Uy5_pJGv^6`_5! zmMpLEErdp3&a&kNq`Bd*6{b`2yp4u{iST0_voHRzc68b1;V+G`#qXm;$~MxjBC>+7 zJ|3dZ+&5>?FE!ODQh3&5_P_#_Vnz6Q6xb5gqBZexDS)BeP|PL#qubxQNDP}BPY(yP zyMoHXz}wHbZDO^$bqm@S4G3(qC))I_4wul+S1w1*ySe^`tlzv|`<52G-3KC%A7OH> z$+$OpZDVbgNA|j|v8|NW*OeYSR62cT)+6&XVQp95MJ_W-zn81=K05g4S$Q7ZVoZgb ze9Fxa{s3l-t;sJ>b?eKYIyooxce>5j69#70SA4xZ)oqy0aKHEORuMkm9+Rea9^iA< z9<me=9a%lbIGLSxRA|Ee{E4fJ7N^>HuIJ=M2y=;sc>JfpF`AuY=zA1WyAX z4Pb3T{8nM#_keg1==-B?Ngf7~Jm9wjpA9hhLgjb4Ux4KX;%-TOLWwfx0z^5m#&$Jm zMx3%S`Z?GPL0A{(`&n9zxZQSZJg{pATH5itZsoeMZ$_qHfcV0BU!eFxwH>gZ_77fA zuL1qK?by$|d_L&U2ZB7oVRvXgXmPuWIKzZIq4xV59zWd@loz^R2aqp>ezE$y>K@2_ zBR6-bvAdQ;h$xIGunoxAlw?efiO5cTn9`#t?3Bc4Cdha3i#sYfy@Hv+yh7i>gw4;u#F)F7R+1F3|gXqbtT2_AfYElv3)+nyAoG6RdJ_sflrU#^dZypZqn5`$j; zTXMY5uiBwZ+kWo*@#wuR&7Rv{Thk3k#;vp!Fit(l;fImMDIK)5BGb2TzuoUGhYB0| z3SMj7`i}BKDMVi!YQvo}$qsxW@GQyVKwu{L7jsySEd{HPC*RX`)?--)9s~$|7yUKbx8eD&j(8(_y1bx90{v;9kTEFx*+F#Cajlxj!2W~ggTQd!(u6;XVI!GnbdPK!9zZC!2zP-&OE$-t+pjA8%xKHBc2%=?h#M*keS`W|2llA_4N!`@ctacE2QLsEb zuXyM-n(u%Xp=w=6MMZs=AOG4i-Lk*ZTF;fJD4(`!m1MS|3r+ZS6tqnK-pC^zh+4(dU{QzR5Q0`8;2%(jL5Fn6*g9bdWY?u!pR6Do9)?70+|{F5M)H~n)7vp9h=a%aa zj#6020v13L9;;yE=7cN;$q`FcMmu!tdNCXJ?)iHEfAktuASfUiGkMim?@(l`A60tx zkHQE2KPN+)LoOTyAe+=(r&uge18CaAbm7017Fv zKI2l3E$cEWV~YnB92i{jCzOY?m^XSfqD`q%@uuc$Uuxx};I|MJrD|UHs-aLgv-Mr{ zGd~Wl-UeLPy}##7vG2TY*EzFsyE|HwimpAgv8>Qn#?jXSO3PVd3(I>fBR5GY7i0`6 zF&M##2ijQ)#(EkMyS+$ByvJg-rK~PK+ ztWc9eC&;l<;Sz~IE4Gv*QkaDVS+8Tndz5&vW|EB>=Hl5)MY@6rHF41( z-iIRU*|Fk0-!qr0+Lk%_e{NU6MM&yGmAGK0=~Fpbw^pqoz(PrA6kIZd))6LJG~(Q692h0yCj| zya)L)5QmlfLqYm(V_U?g<4J)9BC-Cy?P;Xv`}ma+kQ^$c84qDEah)bSgn=>>g-JwB zDs-m;z(HZ9r3vdY89`M?cG98=SQuHHu4WeR>T>)m+gq+L=A|onhX?DoK=>$TDNs^@ zK7^;QlECah=rwNk<`5o0$cv;Hfx()CDB2kmKoflxF=ot1uMvil#7F~gACwyov+R{( z!II1RfgCAhoj(zzM;ccI0F=>TdP*Bq-5d?ZfugrKdV%n@oM>V@M9dA_zhb6qD zO&^BTgtdhmhIG)VIM#r$M9hgJ5#fMVw{61T6QBSiQfP(aWN$MOiL45j4xIFmd6^Uj z`0J=k?IaPZB@HTSNXZ9-EiN>Nn+W3dtE+Hcfld%B)O#r%Zg5~X8c#w);^~}9DW(sU zS5RMG4D8RLAOW-(NVR;zA|8MUhk5U7mLVBahGauYT_r-hU>o%oe>S!pOcgn*f()+Y zHMu~8$0~7AqJ%W{H1KH zvd#aj_oqN55%WwjAHd_A?AeuKvHD)~uv1Q?1JO-iK*4}*FN4o)navVJo+J`zK-*pw zLl_atDKT*1Cd8oYN}!AvO`WK&>eK$Qh+3AEKqSmrxd{JRryi!BhMMXl#Ucy|7>_Rc zENwkDwLQl3M3gUha9GR(`sC;@a#&B?wlyVQR#8cHB_}eiW#WLtDqy6fLJ8tA^@;7r z@=uZehn1J8D>45B7y0+nEK=$yi*miB188!=s5IxMVLa1fKMvA1ES335Ey1jrH2mc1 z0hw_m)9U1S?QBLbOJg`(ZDEKAV2mak9S~!gL%D{1^$-fzh5IBjN_K75oE~waHG&VM znP6euXtNH{G)Z?&hdis%qKjc-vpz%?nH3-k{Hbi#HQ5noi6*O-FW&;ND08=z-x{7n zu%-|2$n}G<8E&j&T(_jr?t<#xj3g7yC&I7N zG+9G`CZ0AJPqy86hc?Q(&2056z@37H@c3#8FDKhXP0Q&|p$_~G`_nEO2b*qd)~oyw z4iv-ok8#Cyblj9NmC+SPUf&T^f>_UG%OMYl;>AOsMB<9*q#0tfO1}mA#i44-qY-h6g~zRf5>iTBAiVb7ZTaO`VSQo#F563 zHP)I))X=R9a{gF`ZdnYNX$DKOeXIVWuriYnBc5`4wTE}$n%@x=IvY~pIU22UxXT}m zOba(c-s47EFO1f&fN!#c_k|}-W<_gvsB8-ngS380A8Wm*wJ4Kah49t z6u zH?(<+YKsis>hi&Q9br1=kkP2rbCNn8#0%(Es4O(`LSzzoR9rP1#L$3Q$MDIq7|+qj zD7=*=6{yxE?6FG-fM}R^Rn%`@d0;;*22_E!CQoYkC(d*m0FuAY=Zyyxx(ixnJ|X*J zXISCRu&Yt zNJsl3Eq^lM9t#U}0n!#Yc2f1`=sg(Pmh2ocw{1Drtb79AGQzMLf~H?s&12JOyU+$E zMrHrGsawHON(aC8q5ZV5< za2>bY(e?8a&;!(4EdCrsVVo-^cvit?bs$MiR`!$%fO)kHrMlgtj-wNr8Ulz9XD$X_ z@(6>a0)VBG;z*}H>FSVb4>-da6Rg!RZ~{&*&r?ldCz?Dq3XnYB!c4|{rM#s>N$fRe zA;c>y>^u;dg6QQA&pyqClFAFZQdBe`wT4yQ4ZYG?0$S`z09OKZzKvPY4xLtO%F0ry zD*R6dKv#>0@pvqti3q%*R(}N9&xJqH4j1R!Q}zfCwF0vH)#|yx+Kf1LC-ge)PYgYL z2=q+Ub5!;4$^<*82L7Vc-*)<9g{u$yV%2{F?AH)mH-E8ZLB1;944*3ZemQ zP!p;J>;lXoEj$TS4OTBFY-<3FuzM-PO{(<)FiE9>yeSjvz}Y|Eb!&0~t;LN^#y)}d z+v9$Pz_t%Tnq|qtC|#S_RfrDQ%1XeM4WgI@mgIOW3{~^b#rqv|E;&k56<|kN?kG&l zcG0p5)v_v31d&e5Ad_ja2(>>dB*_lkqDtTJt7teg04;4<2fhZRqsO2R(qfDeaVd)h z-~zk*Ch*yfRU5)NOlx+TiU`+Oh-GIuFJq^Obhrslt}Tpo*bQ}pLsA#ontpwF%$y3f zBgx7gF3$!riV!{nnaFBz1?NA89VP*#pl89OH~bkcSwKDyW+8P-(v!vQsO>c;5`;JF z49(!W34%4f0&8oV;3r_Z=HTf%;&IRq7&h7sUPg1-L&2s+Yyx^3Pz57upM$2;K*c?> z-y_6{s%#$-#W8hf{p}m2Ir_$^$?hN&t(A=kJBT^Q`Pk{0DvTZoo$(V^Sj4$)nEbqGCeGn0gji!31c1{Uil;EdsqOq7c z@XyP4mnm9Esq&VlnPit1qR64+YZ<}b+P)jUKdZ3s%sdVTe(x}KV4k=Y>j01;#|Gu? zIM|#LW`qwSGPo<8o$1>Plk6ba>almPzU<}Xgwgob{5265Jp_cm}5sIv2L1<1XZ=!vI+}2QNzG& zDHH`R+(3*o3jk;578IdAOnTsPeG#_6ok_ID!J zSO}jU3a2#Krt|d)5(RSyAnaa`all`NS|=dbkp$ywx5A5D&Wmn33^l@YJYgxx0K@-}XkR-DSO=!w1W3!y zed}VaBhcAGrum39SxA5mb>?K_PZGN0@n4G}WD4n-!s7zf;`T2Abf+KB%Ix7+taD6{ zyqrb3R}S_;SYY}&H4YEGqG-7HSXlCP;nlj(2&zh2V`2Z6pJ=m;&d_0j@BIotv8T^& z*b72LvQu z1jg8+-xe1@A2zu!h5gmYL5~wejxt0*(``z$L%d)x;4T&!n(~V}=+ZpV9HwBLhy}x* z)Vs*=2+@bGng_)AtwEA$42csXSHOdOun`3d?l*Ef#TxRnobIsI?5ZC1~YW@XHE)g9v8@L0BPc?(e@h&H#U?k z@sFl}eJE4f04FR9ihgF{gTw>40dfd7$wyP<_Gg9!#RIy!1WXU2igrBrD7Y=>c7K*i zqYaTKbVY#}z&a;s!9YVgpetD)*UvG-ln`W198bcWj+)27swAywMI!DPh#%;xjr_$H z*cY^#Ewqc+fHDT~Rr0wm7ISJ#z#4zlmF!5*6k(=u#)#XiS(K%W0?-erm7~ox#Hb7tn+<)h+)pvu9x^^&)$DxVHVeSp! z>u^(y|LkB`9)>*;!&mW?tVq4>tBF0m=jb?}XxxO4xgkUB3B;n_`AQH1-(o9)Rn8ay z&{Wj!@{eA*ksAm1b?He{9*V547(w;gN?($>*Z_cyYhw+;_ ztlkU2igsMajgz#t?zv?F4sDHhXass^@y;XW5wl4>qX|h6xQc^pIqX*uDe+AeaiQ?o);Rs zHJ|5pW;IREf5Fi@icPV}Ov01u;j8Ud@HPv`1GrRt_LHaKb9bL)JeFCXxbxY68Asjp z{5!x6BSv%AmG^d9+A}s4&Papw%H?hUzJS$7K=n!fH~Kos@9VIaU;oVvn2AFX-{8+p z&ja|5o#Wei?hQX`M}fS@)?$5Lt}W*}+neV`r%rj;Oyrf~`MhSH1#oiX*nfH5T%-W- zxt?5FS{Fw?1l@&U>xLoqCE2C7!8i1I*tQ%!h+)30_;vku)8f=(>`Ih74o!cP}Q5oWm`aR>i2rH;)dRbUg*s_U?#)$F`!iXIH{&Iu6NDn zNa#A^X-=D7hSK``mVVDW2$GJ^$=38^mP}nQ?Wh;@r#Q3t)Ku5abY}5YbB+96_yql| zYv)yH_Ern~J;bW_UHo`+zYc!T>ZACk&nnyX%WZu6!s$A;mPhf!tL}EG0~X+(^RbU_ z`?b?r%zkZeTjOa^?^3(0rsZSuP;?Y^K3TWv=2zqPk>I{f!Ku*UxMpDfVm^TTjf1=T zcD=8T`7^z(QrU9$v2?Ok=d}6wa!>Bw_tfpXlSl4%x9)7e z+?SE~c0gR~SF#80em+ePAONTUoCMyd6ZCOAgLq%UpTwEJHSdVOvy;=(zF*nN^}W15 zQ~6Of=zKIylm1Q}6$P$=j{)#_vhFs=ZUD~RH(R3(0PT;WWoGHP@2`IdJK9f1pD673 z85r&NejcNrZB^JH=C#wEjqVFAf5$ydb5k~~7gtC6^y%<8?z%`%4gn`Cfb;C_lk#hy z?@4#P=?|w3d0yQ6y^{^Qlm!^38T72dUT0i;pIoPclEY1MdzEZnjW5%&OpDRnG~EVz zb$#vksdv{5d=kD~=Rx0B$MJug^v4SC$aMfQ+UU3SKR%M*aywh{S_rdaxL`Z**4zPi z**#hP9&9!QpPRtexPX8=A9ZM1>T15gG3SP`DP|wCH7LF&KD@Di7H4EUvdUgcAE;kf zzeqp>4czFLo>2ssH@*6}%8Jv7&?A_Ss=#U$IFXcIn1iy#y|6ZFB)C^@@`Z@*=z_&0+7Ej>N)FGQP;>R_*|PLP)=UmKK7h*L|3 z9{DBHTo=<~H-O*G+^5UYx@|cD?Ul+(u`w(bJ8jjT+*IiXll=GFlx-A3&$Dss4*+bZ zs{3p=MPzS7e%80t$NXkR+uR(UgWb+uM`*D!CJfi!#_M!G@2fPwf_I14xXPf?NONS1eAh1b>M7(lp*KeKO%-*ns9Sl?#@@Oidc zX|%9pT-LYt>a`c9z7XpQ{tc0qX#jTp>w(Sc@E@}V!rt42nf02c4ev%jTLbN-ksEYZ zvhHYW1M|3#;P<fqSF(n(w9G6VN-sJJdUace-!3 zZ=i1?FJR&;n0J(Kns112>?@mhp!ZMj)EE0ZjCblMt#_<%mTwyGZ0}g_te(kt|5w5% zig(B-wYP5mkAeM>O6-Ow707|YvrW}z9yiI|03i&*kbI_(h(gGbFN;+6o zsBDh(1+0$%7MPHt8tE-K-XRJRWf>-Njvfw17%n&}a;1!-;54Y4mE1Cd0{CUdY(&c8BAM7;c2zZjY+;)~)9GL`NKAt_vwz zrKkvP3w%%F(oPA|1z)Bw_#iG{XFP26Q(hAL;OyQM+b)kSUX^^xNeUG z4wL>#`K=?d7?dag?6r#cr$iv481Dg@M6^dzI{71>77;9!M54PHNJ6oZMk<*`G`3p2 z(9+Fn%<6KrsN#S^?kzp`q7#ohW-OxWE;^_Ep!FPqT{d&Pz4gt3%k6z@3)YHq;!cLg zxySs5^Q3Es_hi#KZSXi3uoZ)&{%llSR3+Q zLCGL6q$ngJTdnr2Lc>hr4;n1m!tQmq+MJRW*5afKZQ2iNQ|_0A7esii%yM=|NIHFT zhK@Azs$45muB<><24PKM{@EGHBie&eDb7b@2MDE!c#F(^y&4*|$-=x4`oQ?_><|sV zWbm0odjD|5NzzG5fTJuuyXqd3>`Idt=Hs6(2;~ML!O3=%@l^$~EP9dy8jOm|cz?y5 zSlOSL{KLVGhYN3kd3-89iEk3ZxT2fvd_BMRD6FVM!;nMY%u8+5sY8VcuV|iisKRt~ z;(kbrigb4x)>dUjX-$KOD?V~WoH8adJ9j$6hpK!?gGO}`U}Yw-)94BoWIE!bMz694 z|Hpu-#MH<#25$JiR6#Vx(!?S-8ytSGK(QvA6uDG$&qYf(YlDImNc=d z`&xsds49zPL%Uh;Y+gY&St)601A;m*TbxR!{Y-)l(?KDa@;ES4t_G zbbK~O+sUO+vqXCh6sZwV$mGz`cx0+cv`0eQFB=pavPF!<25jYoaUz!r6*nDepNOA& zohJx+Yrbl_RA!aaq!D_6711ZT!RA=l0zUV%Mn%^&86qJQJ_a|$(rI2d{ z2zbK{K%}#V_Ap`Lo}+0LxE4s?Yy(nkOhE{tx8%&~NaS1^8Vhq1q6lpgePiT2vi_Ng zAwA4=vB`=fE(KQXKbQO+>FmcH)o6Qz%^~T~!*V^cJ3iIhs-?zrsH&}OgBQ07oH~ri zA}*r4%0~5g)HBYG(Kc-bNCR?=b2`y|@2nLVfD*lGd6&G1RHa_!Is4n*#es7q8AX|i zyShd zRqcf#zCd4sv$3=W*^zGh=8u*>^UL|tw9a# z_nnEN$nIf&yU6xubo+3fpHc}0UfKC`rI5g*@luGKq)wEnN*hg;9laTPhmX}TbqKMZ zzBma1bb`NpEEsCv*ab93@$wpVZRyN4mRVo=IwVQodGhQFNy{%~X&otgrQeQD04CEb zJp$P45VD>1y8I>=ble@>)AC=VrFQ69rcG-veaX{C6J$gZgEV4+>W|vdAWaywZK+T} zl40kx35xOpEk@{hDNV1{Z%Ta9B%+K>U4P=*N+3G0J8DERL_U(kQ|34R5EM0vmRh1`wCLx~yEc`x%$ELjBBuhD zywe;{zH8kisF65ECUG8t8<7gC4l|;ZyRA$d6h?E$HUUL#M%XIa?>45g0K~_nS6&>A zpI3hAwG35+P79@EsT4T3%j+1&%bubODh@n>fW(+)NuQT}aD&U230}KOa;8_x29gH3 zrXeDBaxtDH^U7UjUMsr34f`%uN#3$x7Uy_%q)k2)HYjZ9P86T(9jR}*7fFhpX3Z75 zO}NDTO1lABwm=&i^n%kb1|*>nd>*cbLy;r^?O|cUD zs%<(<)k*LT5A3OTDTZ8o<=Z$?t`x(<4fm$6xcoBC+TijG+_e!E17OY9t%!kv*VyJ< zrdH3?xKTGJt2|@v+JfQ{Rd){gwcy@tKud*^U-&QC#N+l`3|hnfb73F1YJ*v6Vc0rT z(ktSS6Y)w@Mru>Q!7!9US8<0e_12kiRjpUkMo803a}sv7XF@SE+7xH(^fv6=IC@_t z@YX?2DE~pr5<5bi0fYzX|57naw=EHP4@iif)wJOsUHbuDI=`OMdhsJx3KCP;A#UbK z{Q4Cnh}U2JKLDLTV!u3%v%w$_V#2Gsx6qXg@(_IIwu+mCXT&xEsm5XRcumcIXyygQ zjkw={RVIn}fFK*`PVwdwRlIEq!pU8O34=ULuny+hfVoZJ$-M@71dO+TgRyF3Y>)$} zhE7`L0f*d0Z+DuP97}SPCIv0RE2z!@+Ot9WL8AtQK;Qx7qun4e!0v38oF zx4Z8bx4ApTtvuO^3y$*jPxr%7U@gW2+)kPaF-QtULIZ>HK`c;mK;1UWF>N`f;dq=m zX71p){WeF{y$@xSMWmN7uiPEHb~KCkg{xFm4VP|X9M&*aJ&09*m!g;Sp_hckUbiIf z)wkCmV~G7jsJ?wxnGA8}r`x!TBXw83 z!jM#|6t8s<4iSZaEQ9&|2AP28BLID%Nqi8oIY1lzgL7!<97bR#%ytl!RS!;b7d(%+ z6ymo|F3v?9jt?2+QDDR%?ypiL^R62Xh!0aEH$E=iakw4L0q`gQ4^Tj_K*N3%0ST~K zT1!qrNCv7EtpD%`E<6+#l^-$4V}REHf1p*2qNhg%1$_#CH?5Q2v<5i_oaN7m{q#g* zMs5}R<@Ff8h%EV^7yJE+zexXIF)4B32}oQ-reA^mGVU+yJ2u)ZJ|dv9RgcxPh5odR&Zp8tX4jxn0@;+@sS`fhCzi^Ow!=Mc>s1J^y8mHU9INHs5J|_lxqDs!|n1B zT$O3?fhG%0rbWyOz-||4flXmw^;W;iK$%5+a^MDk+k=S5!B#Pc9p}s)v(F-3aOK6~BfI<#)La-0&p2r{(Np0Ss(rwLm0GeA972~LdFg(QHMy_R>(OSM#}=_@9vlj# zzgy0NTZ0+FCm2hEd>xX~DvpEI_;eop$iujqhcWkg zY(;SbVLO7?M-B2M;11#SXqDunhlaMiC&9nb$~s<<)HPV|F@v0k?Ge}>tKxiD1%&hb zcFC;PN%TkP9);QQ7V*Tb%v}Id*z5{sbE2<*3$9XBvz^+RooEs#X;YX&j|S8+K%Hz6 zPu+sLcnj)=V7*#UW=pq2ooW)NDAeNyxdf<5K%H(8&y=9l?vFwJl6Apfq8Gdga|tk~ z?J#GW#K$Sj*Knf&<~U%^wun#MVx+;h$qMLMD4&4s*KuXSb_%cOTEz1+@^%|Y>h zNh?2aI)_j`SxVLPOIb&WHQBXv*Fy!aN02IYZHrsRwwH`84mlfU!6p}Ndz`R;$%mQm zQH;lI_9v*^b%@p>_XcPE+ui`vr50vk;?-VbU6{ zWHw%m3T9KyWIBHrlX>P>IuC9pQyUkPdD|S79h-}pK9(0ce}w6dv3+o5Z9k(phivhn zemt8$$mUDWl6{`p6&M$Den+x@fVFtkHvb=oo=RV6>=7EPPIbK3@x8NGIy~392Gn2o zj=k~vk2(1tdtQCx=aoC_SFTL|+q>UARvW#dyjH#Zi*G;u->Xl4%U$=}+ch6N{!#wI z=Kl26A5rUdfB&E0=b!)fFTYdUxc`5hKS_S`6>dj1PGh-|)yqj1|BD!ZQ!Mu9Fpe|%EXE|0 zPqX~;%%Xl(ufMvTe(nGKa`Z+VE>@59*3 zYGw;}t2fae*u&&bjGauT{bxJ#RoS5OdW?XsG z1V?|)p)Y(!;{I!Y$Ia#2-#Yff&Dv+*-uWjVyf8uyDw9L>SI+1mT^lqF>15SlR!_$Y zQS-OQ7(YS}f5+AgdK^DtVhhyDHKytLWHvL(xti}*--H-vD}_3_s43EG;v*G*4YLs<6!SBZAN)bgI4>QwH`B8a zY07GSIHrd0>9L%s4aK7JVVqA3|dIiHW%p0*MBr2?&AsW+aV?QLr|BFg*03peDwrVxo!0zjJqQ z%f=TIoaF2M?sva)X3m-InO*x{Sc?!@y=`aD-k$K_Q-28ILkOWx>YG{J*L2US)U&Q1 z)|B>z(6WQ7oa+RxZAMMs)|~-q%^Jyaqj}dK(Zfo^%oYYjwCxT=02P*#cPqwp->Ecx z-}U3>xTiaYW;&zVsP0>O);7t28EU$p8zf_{Zv@sWCJjLG^l&f`_b%~*v#86uVQ7Zw z1zPA96@Q}Jc2N)!L8ymjbXF$v9fvFjmFUkZ)g22{XFAQo%T%%x{8ZUV%uc>Um9dbc`KZO3usC03@ z3ZP(_$&%8Eu*&2#n37C|t%_4jO{+5QV@XNbrhnp0t*oZv6{%-YoF%JNHB|vCQIj(E zSV~gPs`ywczA_bwr_M%LDxFN>)2vTYCRKb<=#vrF$Mvf$BPlZ~zA5yX2+MGNnt76P zPsMXWzZYR1*XP+WN%=X6iOf!?lYN-P*hNXHmJucjyP8HBOycY&C^1m#*>oCtm^83C zP=6E^lSVe5R*zw_j1j1_x*nt^Mq+98G$zfAD4;dSn6%U)IaS>lXCz*wUWC6yz6$wT z8L0&MUjy7;K6desjz6p-yj5LCy9USe9EKAGNn5|^B2`S;_-DF5CiZdNxZ`a&QS@73SI>u zf>#4-gqLG!8JElQ!~~D?--L+eyk78SfF{A40WAP5VwVfP0?=NjtAg`q>--m&c8(Y8 znico!5a(TjBjH=fp_b+5YpdXGfCj-^%AU8Wtd7RA`s&N-R?7OpwL0PF>k`3h1%DQL zNd@Qqtq^>n?^2n@FKLez_KWAL8$XxJWHJU|cq*Uy=vD+pXYuz4?QwJcA`bP0p%2Uc z37ba`N(PFI1`gj~M@E~!*mJk{jf8URgTMA){_c<4L)=hf4LE#|jQeK3XyjsTX(VdJ zp{L`aAvoCH>*V2hte88(T~(u|AAeY`GmNS>c5mq3)cr(Jg<%3>z-^TVYIa;L@bobU z2GWRU*(Qv`(mdj3Y#1n>2i3N+THb=u8n^{NXBN+_VYDeR=#H2Pzu-8gpMU{7oG4DN zbqkA@Em*dZfRsi8a+Ksm0OMF>*z#~0EGK6djK$}8@}aU68yqcFG>o44uYVl6=LHW6 zNGyKGy5Vazgmz>HENJPai9UD>>&DNWpW0G4nXIkMymR3UUiy?x@q zrX`*>>UGfmMRx|8mrduf{X(}VOSdYEc7Lrt2e!ywfDf9->t{sT}; z0|XQR000O8OlD7229fMflNkU2uq~HhcL*1ka4!WCe^~2x8%35^yV_PoQ9CWS5)&Y# z6A1_yC7oCyb{?eSN1OzbI9TBskYuUtD3K*0weo-gJU|%3@Ca{;S27SD1_nH{JG(Rc zWcQr?&X@h3v*+x0&i)1ayVWg44&Za-uD(@u@2%f`R_{N0|JG0__0`DuzQg;x<3phk zzcUmHe=YXa-RXQio3GWf#ZseCJ>%B9iq(}qwc+JGmlaEOy;}1cD|{ked81ySXM^R- zO&m#x*SGo`ZI=q{HUUL!nH&U>C);pNh_+TUGtr<=0@ z<8pPD;TNvEP@>^>&s59Ba-d1mE0r578r8a&e$E32Q?1YCy{w`b)A?f7bL(?i(%JNP($E(lFXSr~ zh^f0+Mht1HcdpcElq$2?xoWXlc31ijr9)4tisy8XFCsGM)@R+U0+LX!mx^wK&AQ$y zf3PZ_&$em3{(B3#UeHT3nD=VgGmT2`$$X^<0m1ajS{_gp6(~CWTj4cfNw?UnMQGGi zQdz_Gdfa+BUzzPnrMd%B~F1G%jke^znN z>cvvQi~8CYs+F12Y#5IQ&e&#<4U=Fv2|rsZ7Yq4%F+5i~2mKIPwOVgm&#ZU8=Jqt2 zGc%=gx>s+yVcLu+ToXjpwX-RVR{xA#nyZ!j<{-ONgE3p)+vxUA)~jd30bF7HRDd)9 zn#YUvYOS1ac&iGqnCG^G$PA9re`d3?17!v$T~VW*6oxC{;8}pwbfX<>8mmi{Lb(Yy z%`T(Drg-Md%c#+6y#xmV6`WTpOuQ$jYsiiIUI`X!F+*4AOZ*{68X9bhnQfsfHwuCsTUs~^^;;C!ZqAhrB>bk1e zUe5OH+!IX|s{sKxRGX?C_7vT+>$z>0Cj4}=e#h!ST+&VB8@UuVe{*+jXI-B$ra9(S^NQ7P|4(t;>awmR`t5pVJYiY%HqNYsm@uta zCRP;x$K(%TrzUhZ3#E%9&V-&>uygXqusKg!vIHc=#^lwobCDEGVnK4joRmL>&C4P= zD&h&D4=yU5#9%^<4$hh)ZHcjjKF-Y_O)WRjWRZ0uatrG-Ev<%?hnO}m`D!p+Z)z8ZFRp>+{4ebX({{!aU6z=z zA*ug}{gd`%f1BihbOVvDwn+k{wM6(km-C2 z@ta}(8=ylHI>dpTAJcC$%0(c_BW*st1nu&ON!Eq$te?W%QmEq!S!8Rq|2-BI4d4=`c zy26ozR|4lq35~}MoFk^k;$kq_J`cH0WHS>JlL;{hjgq7hu^{@E3^^hEpbI9x_4*l| zRH2#MFcX*jc4)eq!a)b0O*p_BdVtokDGAV$iwv9Yz@~noCx}nd2k}nqxnVJl-2>RR zRv|nnfAmo?X2sI6F(7~$ebQLd$#9S`(HS{p0Lxv9b6f?GPMjA^xJe4kZ)|Pc94F97 z&lJaETjQ%G-wd4Yp49l7=;Wjr)x}_3B$C2PlK`A*6sxy@$xSUL!()MH!oX3MTqYFJ zuodfX4i14i1WRm6dB--M;<4wLP7EJiXkkW%(MTfSCN->cG;KNYbCPHLy z>n-perYrAR+rfV)gl=dF*x3?5StPDx?1GGq%eUVs`EHzU1gENqj1ic>O<9JCPcVqzW! z-XDajA8nFP=#H@<`2nDEyJ?%_$%%_re=Fl11aXs3ylfF8A|4{*Vw}y+o5CEA>(+P@ z*}2PFa6*#b3mottdGwBu#y3iSAM`nbqrq5!=BU-<7`JO2Y2q*@CNXiVnm86r+$Q-E zn!pKekJ?CAgmiG$i-(apTM!Hqe*&|Y zk@(@ji^(AOt7LOO5Ln-0G!-zqQ}PTLO+k@?WqFh8AwLe;(@2rR92uKce^{^vio`E!@se-7*VbM)9o z7>y;sCn)n2-jkBgz}hwQvY+}MO^#cPso@Eoh9aI^u#tObA$ga=8vbG-WpxYV5PSg! zIf-*T1`pXzr=M72J+`q!<9AD5q6v8Pjv-^1MIB0l`xuJ{6SSusez#PY(UGL|-h^Du>e+EQt`3fdXC)=qMyfK~(TtWVQhv?oA2r)cn= zj9<~utGFiXJ&Dn-f1uNO3gg|PXvK<>{|4hdU=f3dJdN=^L1B0Xu>jcI!HU9-&#WSg4CCr%Xyi~}rEyks1(Fa_KIf8hbNup7t`Xy`=jz_=az zF9iD!loQb6pyV&YRA*uALqo>V#J>>zLDi#xkfI7H;ALq46f)5~xr0m*-l95GtTC^J*XCiyF1ygxAMs~Drf&g{~Shx&8R8OI|>jj6~n<9?0bPiB72 zH)sY1++!Tq_!JRe_ld_r)Odz;>B~Wz3>Xh83q9Df&@c!)@w0=(4n~dz*gP7PT$Ienv+%69)T#AWlk+yg;x~qpzk>rE7%)z-i65yUqsAR}dlx$n zUT3!xe;xDh5q8(jKPLJ6Q0F#?wE)Z=+{s04Pr&^j$1eYjPP9^^o-r!08 ze;GB7LAggH>aB813fir5JE_X89;Xtk5Pc$T)Je_yGBsy>H5*_Kr7l7#Z^&pe!Kpv8coH(;H!L&lS=*EFfB z3>)WAF3(vus-%Txe~)oqxpnT_% z6*H^bOs8>PN*gbete2O`n($@)9?T%?eaL!c$awYVj>Z`Fu<-<*7CG8CPlTB+43 z`qi}Y8i{^wndonP(XZpy2GJ6te=p+dvq9r;;JOFO2SEKzx@1xsglWEo$oqFO)w7`!dIe6-&IgF{T?@8SXq<{x41y`|8yT<55#?pf57^1$oPc$ zQS~vR>SHvats6AL3zyOw()p4v_9GIDJ{Z!V=tmuwa$kcEa6j$=LF1pKjSmRpOSpnV z;3wF28FfP4W&U&o7i^9HLGq25x`b-?>7q4=4kE7c&m^}%yo~i%sODI3=0DTN3jeWw zk+A(c8m;W+Q!SyNOKxJ4M_CQT9f0`vdke@a!yfBQ;a#p%9;OD-Bh zeLhI2yR(({zf#c`B0=}Ef2Hax`M)juD3e%by2hO3mGMqN;< z{YU2~u+4hwgT#LZU$VZIOVH*k=>E-+@hyu|ZU)CC08G|VUy#wNj_ard6FBgVBCXW7{9K7zM_L3=~%y##{Ulh0RR83R%=jHM;5*V z3~*MU5L_QTG(?0PAAo=;63C!n95E8WMI@^u!wfJyX2v@pe?&=QfT&?Xg!n>0Q67ph zxI9Xea$`2cO|3==(X3i7?y4kV%PLE#(rm3!*={%!dij&8)ZVI(`|;h=U!U$i-93^d zIZ2Y_%%EU!WthxhD~;)Hq;u|0`V@xWl5Wp1jreqi84NZIo(x{3`!LKRK8L}NVz?L5 zo5#-;+RhXBe|&1|Da7*}f=K6lq2L)z?+}Ji!AD8)Twg@`VumF`TP5+O3=uRw-qw!V zMlwVR`B?knPzic8`NRl0^Er$a^k6}Mm2}Qmkxv}MYGM9g6ULh;jBBkl_E_`e`tK&_ z(ZW0{g|;f<$qehre?3F0(C%|{mU$(8=M zeyrRgaFf8z0^cmGUB0ju1p-eH;?oXWe!}s(W;3tG4it^{V>Hf(szmUdeRR_bRLj?i1Zrj->TP=?;ZvR!GAC5 zB@B*2{0F4JV;w)~HKbeDz^d=2e))cwWX*H6e<7dG7278^ON#1atIw_ZB52Bv+nz^% z|CMBG+iB&)0OfQ7yA5FCuDd3f`Oa+AAH-;`Q2Z_dt2uJ_(}2LE4{PI`kZ|7 z*ISl2gnP{Je)vN1Y0H!VJ-X$#Y#qpt5BFPD>o~IZ`qN}>s)t{&S6p@H{GNR!ZJ7tR ze?GmMntck@#h>j_U&J3Sr_^V!mr_7Axc&U8TN%re{IW`Fhvu0tH6{lQJZ?Jtj`aNb z2aY~@O>g;DU1Xmi7Z`am**?urA-tal)fAab9z6*!2uIbwOd!L*;?0L=EJ^aw0p0q#g zf8^(&j3|55_t*AYi}Rjscew4iJIpqEn(EAsKd&n>9*rL%2pSbt*89VA{sah&sW zWk2z<3AHHJpICF%)NdjAa-E-%Rm9B`YO#X2f#H4PT816uvx)lSI=>&@rt$K7V;k+Q z1nQ6LtH_J@wOkrIZ@5o1`EnnAf48QQ&hOq0()b;{fporSQplg5jY-7$nYWVs`R|Pt z#AgxbKK!g*CXJtyFB9j#Tf)d^sx-FtJZF9;`;(6=edF=U==^+sXC;)5-d0&QI>~m6 z#mN6r7+s~txbFs2dQLtZo?BhhZ9la#n+HrXWExGfUQ;CNGe!fs=#*iSfAiAvHF{Y# z$!UsgepxP88`-_8*gooQ%cC5&=w*w+WXzEq76*g{ga-tVswQ(j6D>SUsgq_HO&W_i ztX&ttP`@)M+fH0y$kj`pu9dg$HJt^7Mgn zfzha!0}D-ZPN1yUrpY1Jf0ssEV93=4GD}?`^B9u@EpocmA@bKb7>wz;1-hT}SoEu0 zMkm;QY(zOy>@Rtwna!5*0gN#X6E!-6CEdg(J3uezX2)nVdA+ulvRh6OQdHm28|l&$ z=?VOId<)umC&Ywmp*1Ggvyt*y^NdHH$f8|1Z|H74ZLj^D1 z>{`(sP?h~`SJdRfc_o#;cO9iSN}7Bxmo_w?`PwHY*(>zT-v4yv?z+==J=A_@o@-Bi z`IFOE%VxH>#>I!F#-v=?+r9Ww@BKHU{V z`wp$)M|O4@jBHOSf9^;>KMEK2r-u_am5fBfr zLjokj2GGGq*aTY00~st(0LAb&ybJF^DOAF4sDeFE4K=VA4ni#)f;wn|W@v#nXoU{w zgf8fYGjJBp!ROEem!TKFfvfO$xC{4S2!`P&cnTx%3~kUBf0gKr?&yKD&=dV|9{OW2 zhF~Zz!bntMG{)g-T!ZnLfQh&sQ*k41!Zg%lCg$K4+=^wm1Iw`jE3q2);{mM420Vg| zcodIeE4E-WHsJ|8j%|1nKg3hmiQRY>d+-uo#xJlRZ{t7l4i4abe2jP1l3J;@S39Ud zJxM)T?WT5DT~AX_S9_~xs%PU))S?d4@g+p`LT|K3M|6PaFaY1fHTWA`hp!Jrh{{>J>0|XQR000O8OlD72WPHM*V-^4a_$HU3 z_6Qf3a4!V}e`#)JZ!ThGVQqw2iGNf@w(gtTp(~wKxXJAh7KN4$io{4GtppUk352+? zgb-X%>2$hpLX%E+(+h|z?zqQg)N;EKS6rix2k$#o z)#T!PkE^x2oB&WpG6xaQgAyzMf4zf0gasfk6GnKp?Qcx#W(dO375Q zn9Sx!3ufNk7tCbSm2gdytTa^f8Fw_BcQe6Kp-`zGP36jNqrz1y*<87yQb>+u^QqGQ zy25w}FS%^F!bY<>H=mktgS!jayre_VM5;K;O()a&y=0fF6egO`lgp-4m24qjHZ$20 zbHSB_f6$iAr*qYen@Rdjg1KydJV?ZCg(7KExs&=sg=&S+=H7C?v0BWeDsB>n@m+Lw^n^d0ZLVh$m z7TN2TvZMR;TXM8enn+cGl~UDh7%dehWZq!~e;}9P3AZ$+yobwfMSHGyOQk}|@`aY9 zI4t^;lr)OI1&?wyS4rjy>G330lV!5ybOAA#sa&pgX5eaSlsqqs)sQb#5FN%XNcG}l|sp->Pzlqxs+yTRJwA#sz(Nu*|!Uww%;mQPM5O9N{HTb*^yAT zf2@M5*)+Z-r@2m}#r81Dbavn8SO0u?usITlQ74|i$5+`NJ>ND<0b*w?5 za)mJyZB{W=LQR_rr7Q*vQvsvSFrq|?1l(dW=k9fL4Wn))y^C@~XLc_Mv&w~PDeY4D zRNzKD)4SaCIHpe%#Yf2J$R%KoBTkLi)k%$_N|jC-Ec(rEg!lZ&TW zPnbfbNRiE+$mX*X)rs1BoAj83R%zT)8OX>;E|ngqA;8qvmgR-Y^nZ0JNV#QK3Nh!f z6iSusXey1-J0Y==RN1AJb?G2A>JpKxv#Gcf#T;@d%|bylZYhi+l-#juE>)UMe`z5J zI4fl{ZaG-3jCMDx6`$10xH*-{kgSQD6{I#2v&M3TkyNgJw2;f>8nL9Ss!ndGL%zd+$}#(Z5N;|2n4-(pX-0_xvk zw11)v8kVr?S{Db5XtNa%(NG}Zm_ZT8(_*JsFPiOaLGPgaH&RFc`U64Jkng1uTB~In zap8c$GMwh9B?dy4<(QH0F)h+ek$=qugXkf%HEJ6JViw3+akgSf`;S8B#Dr80Bki=;z21z^u@i3l8N!4%J z5Tfy!IM%~!CR2+e(P2b_L*_|w6m4Tt977zAG1Yv)aaImFv5aF^#PNR-O2!n-(y@@- zqJts1m7*cRu7v~X`|(sNe=?pS9Z%-ucn;Xcv|tegG+-QQo*Z!24LK__PORdXcQ`hv z+kPOfIlj2seR0jL#Wn9lT=V{qxbFCYxF&7ms9^K!TK{Po$Gkt805wq{!Cun>@q&=$ z^ah9R-r!`cH#oJjH#ohnH^}U5_!CJ#Ro@>qi|wp6+!717ZVTJ#e{f`FxUCePV}{$; zh39Sy&$DUL9vAGCy4LXgxWTL@C*BftVi8O>N|T)$wD{Ajd5hV|TLxN8vlC+YRHrVu zmbV(L#YrHFg|NAol8)F;UCaqDBwZ*z?3lI_G+TmX5#{q?VX)Sk(P=PR1S4yJiV^LP zn|)?P+D8sralxXYe`t|rI6Ez59q8l{GrR6%Hwtfr6F!J z))H|Vs5l*=`1HDkix+Tmy;utIf+KWwtwF!1QWga!y9FMoD@2^@N;TY0Ddq;%i(85D1K}; zUub%Kkr@pyf3e~g%{)Cj0{|}UL{G^HpQBzE0dgrSi(xtkd~+;=o#ycVc=2#~07kT&}YOturcl%%K^QVDV{CbO?4XFe@Q0@py+~J5Fq;3w9p$fb9&AFQp!e z9WzhXbJgbfw856D!C$r6I%2Rh1?vVP0j^~pKT~lXeu$X3HJwQb>{W zP2Sh;l=!;v65eaD-rAt7tEIQziGlYrnO+}2G&mas+eooN)$j2QD$R>eq}c<&CYk2N zf4(#~&!kBPn^l^Z2(|@O4#Z16e#uOl4$|D@OOq%DYH1G0G^cHnd}&%UX%3u7bE{5s zGo`r^XOudrTX9$~AU8ye`47 ziLK>V8f+URwI2@cjyQU2+zy&61iJ#zIRw32L$6iPYZdfzNXq_--H}ed!whfm_zpW7 zUe;?{=4vR`pkcuWY+92}xF2ij%A#dOsg5zH|A_5`FGikMVO_NAsCTHScTm*bfBY)# zc&Bo_GiIxZQVoeLSlX`&8cs%Vx-wJe6qFupo9u02|XfdpxVq!-O6eEJHm&=R7{{L+=6FmFNkKD(i2z;l_#TCxB6L}>-P8kg#p7ik`W>Lh zCAunD4mRyT@AY_9p{EJGPp}E<0s1qmpu7lAQ;P3MIof_Xl_`3z$PhG$t^!VL= zJZ+`dOZ+{8-2kIj;P3VLe?1!CO8EN(yOFwpzu)8c=`I`F)dSeBqWTymx4fHb`_;{~ zU!6GRMWjX^$XKgfClC1c$y;Xj$p-nZHp&MD!v!cj7ve)6f3W73BAOKJR_a1T4|{x4 zek)Ik~oyw8x*);kA+LX9T;Cy5Ra*k3ZvgJqO;V`J z0`GbJIgOt~_$k32f21zppZEBbAKwoALlS>Tut^wg1O5e%AJX`C!oMik!_)=*OCEpG zkDm+tBNG3zV2{FR2>4e#{<6l;C;Y2|Jw{!?ANKgGe*6O9eUXvH4E;8hPcS+fzWWDb+Q_EVcj>;3tAT50afA`JmYWNkU%Fk{~%mmUPLb zOWq5J_#s*ce+gWrj>QnB6CQ@qi^?b{jb4J$lEXFWdWtt;I>Cgz(Y=I|-znB{i>@Bw zxwv}N*>sNxkKjUL%L_?(xC0jw+lf%H^>O|Y4y_*w_A=sI4)LRI{%NdffG((Z0+;cg zSVzR^fU{S?d@4CxuU_J^>aQaCg*dN#M(34Ja9;V?e_$UIcY+Lwe!yU#U={QQ>05o= zb~@G{L2Xm4b3;K27isQJEz)KA(Y}KDnO@_8Oua#W?-6DITTBB2+P2 z(yzn+A}2g%lNe=kU!ooB4Js0COdYY74tb${1I|uEZ9RS@NFyybE!^DHS^Q1^mGg*N z>Tlv6e~XHIA=q1RpN06dIRC<4#lMI(#p&vx;t=d@R=RC!MEXRvB!Tt<3~A} zR-5C`75%iL|Ak=hfPOc!`*Ick4JP$3?S8t({L?r`et`Y8Vz6Z?09eTe=7g8#ak|G{jMzo7M) z5j6@QVMvyA^54^%?4aKr2!@=0PZJ{I*Zd*De`l&?c~k^Ixd-guIQYf|He2j;gZ-P* zeUl7+P^y5Zt z4G8uri?gLj;V-|Av>rXeKV@^x_3i;8s`>|4Q>BfkB} z;UC@nJ31Vjjr`ca3OW`Xiy7(`Q~O23$9ilQ6bAb)!M_D05ZG2J4bhLgmrNA#f2@l@ zJPQpyfja%WFGFiUGql{O_5{vk^ZM>JGK1>Xjf_ZeYDH9&3jrV{o82Uwf;>llm2zIA+0~Ge`V6Yg0@ZT zU(zz^UqBnw`scMwdJk=@)<3Id(m#zhpk;w(Yn#WlO!`OB=4$=JS|+jGq>2E_@sPzZ5O!}MAHfjBhS|xZ>$=-NA4KcHpO(|TL0 z_5E5Veb4^@00960tx|tbR8m*q9Fqc5LPsStVFfk|O)&>G6%h;_R1~$)MkzJ5f7H?JKDe6GKg~GZ zneUzNe&@Sq?m6#r92d!PTsMknu8XTE-k^w}aHAMa5yp53ffU0T?@JNDcpt`-)U9&R%&B@_>|2Yj# zKYN=;?fd$E^}7})2b2svFxvBYRa$({pW-eR_rCM6P65Tj!764FFT=5;wT zpW10uMDJ8d&P=xIcv+U@WR=lK6BAKPrRgP|wcQj~e~&C)wg{4#!S#sHgli%-qdHZ| zY^9<_vAG*Ke^Js|%*olJE=9^T3npIHnPn-3w^$Uj%3$F9QmJYZ^tx0*H0UgnO-|uE zb3z6esZEzMd97>{MPAlsOLB%*=Jm;P$kU+H+XRzAOG_HGv__Y#wa6(?D@46m1wl+P z*$mI_e-ZXVRXPW(?&>ImoA6&XlFeqzKMiy-9Tjzgm?~*_*<_5-rwMedWqDKSp9sm> zSke&Xb8v*W`+}mIVJb%J_+S(<6KCi&o9>X*_yrabjs}ImxQ4XdU_X zhFi9vmg-oSW{vT2e)P-P!*dG;UH0JS=585Of1g*fb@#~uG4J*ZUDWWP+LV8(@l2?C zMW*k;jgE)TQ}+H9W$}sONinle6uKggHC$g5{YzZFVHlPL)V3JzRh#Dy>3+Mi@yVLw zLG8EIm3rY1`nUy=r#Efpo-LIZ{p?prFS3-Rk~Ff6EGMhTYO;B5SGIVSP5&P2tI{k*b3X=OQ--Rf4E=|?1fsWgF|o>PC_Fz!#Ow)ZO{%^;X2%e zTW}X1z(aU~?x;pjd}LrTq{Y)4l6LFXDF%6}1O|Jd$3-cM%WcoWdP5m-;; zdP820gZT9r3!-m;XAI!~F$&vvJYXRx{}=`QbYao|on5=RTG_h%XLwz!1@DTwmb&U` zdKFt^AwdxM1`moN7~IG%!LlB3pe2a)U=m{X4VuJ6GkZmy;Dl*jr)lg8Gc_ zw9n@+p!>z=W!GabrpH{xA$o@6s=CnfY;<-pjU#*JJLcbq{EMdQtJ0W6jfzY{HnYZ@ zaQt{tN)2TrMtv~{dj`o$930-X$(n(^sK{8rphzrMd%Day*fzYscve{^5ht}-FZCzz?i(V#ko9rfpOOarngwyvdS zZPTj7h<+oPHFqx6$&1Onh-$Z#r#6Q{)3yV*+e@c80zolpRrOm7pzc&h)n+R$Eqe)SCapw!J;mDLPX{YF%dq~J4l;z!uB>LLGQbIHIwvc2F#+tj3 z@|mISx@SBDP*sH;Q8X`NQ8J-eGrDjDbox>=CxnZw$D#ml1FecrS;CQIUd~n7D(s9Y zA&$U>G*&ext}LSjp)H_UZwF{AhgDER(oLSG9^lxu5SGmj%2697RS1@1mr_-Hz*g#R zMyUJ-D>_&RQj$JJ!&IJhv{nqwDO>qcXV>DhL!qDflaU3))WU$D77%>Dwv46Ly@RmF}1{a zzmimjd|v^pCE}tel~a;mLt9CKP?S)W4_13lR23d7qce)S^eOh+>0OW_L5Y2m7|Qiq z7%yR|?zXTw3%k*I*tPt1Hfk9HV4OQzxJ}!=>BIM=0>_>(NBy$47IT>&2gSp2l37hH z%(f`;RXuOa5JOZP@wHy6m3d;co22REZ|X0Vw$EZ?%2J6jsWDY4&f;mlc*ZzDRHYJ) zf`nlCxXQA;4gy;RSxaR!hajHU!ck~5@d_t5FrKhG@YQbJps))T7~Pr%08p6(z)dKI zu6)(LbQ6*FdZfTU3S!s6^~8!|Ell+w5~qeC=8-EjGOM4Pm?stG=6AT$afv4bvM4?#Tl^wH8Nwo{AB)DBKzEpzOQ1iu0SN zJZr9jpJf|V(K1}#M_SbY)8b#sYF|@)E)%YWf>-;{M&QO4)g$@$)6MT{NYT@3>2zJ! zVz)@E z)-Q_l*eO)tzpj=u5pxcRGlhHNw$+|yt@whsF^E(VBPjkDDllyWGUpqBXr6fP1D;(I zg@a_#X1=a0oBoB-i6e$Z(aVF-GE{_|AQF;iz!Z7a^bd2O-Er~m7l`tH-xtwaLz<^k zA)V17$%)@{JFD7VzRf%a{a~FMI`&Bes(1q?reh zYqHs4=S|?q_6+0zE|3@*MwhhCKC|D47xPaN=9n#cY(aumv+cSvy;Krfz>26dN{hJz07fyw9*K@QV84fPiGtPw$Qs$D;bfZK*wSgpvB?ym zcA?dQ{1b&;T#v!ON%rU5$dk$JDUA@JUn4lBLZFO3Hko$-sr7B|N!ez+4e`SIi(@R~ z<;7kI-&%)vD4fd>xf2?gM_x55^9#O;4o0Eio_+XjZ1G^k)FJ_|ze|1*A-C~_Q761X z0Q?82(r)R$LGbAdG7Lpwx15?Alm}+u#fGCz>He8tppAX;ILE}x36Z-0g5gCy0C^G{ z!iswa5-0he-nd`9At2}6fAUQH)?nx1r70tT#B(>+g zdE^}Y*C};PXb@?+72D=Tj`#(Ik!IF@bvIE=9E&NW=cQRtiHe4!XOoDM0Y!@{vaY)+ zftev8*g59DUW{&#eZWn?G2-YiAA9o2y>Q+Ihz{A(ZiqW3_{IrVKd%5sP?il8rq#oQ zee84m*cL7lDt$^6%JP&I;}TwfAd{=d#HSCWz&(K`G=4K|Q6(4q1?3pzD{%sb_vv;7 z7*0+~-<3wj5W1o|M@q~Vs2~H0Q8yH-+}v`4f^@(b%+UD5U06I}>a$+AHsO+>m|)^$V%=~rux z8xVgi2+PDp&onMFMj>*Y`Fxc`!@jOGU{PQ5mjalST1JkAyr}CNjU?QR;ryl3w%3x9 zq9deR%jP<=Po8iH7jLZW6<3z z0XO|5&m|bFM`B%Z02dfe^FbXq{qHZ_ut+HbVMVaISZ>E3w@a!njCW5ck|uze4E&R!fRV2Pl$GY|obz88xDAW`nq5F8&)BI`67nS}@?3vHT2KClto7h>vj~frG=*`3U{(7tRfZ7NXGKkjlFEH;EJztw z`vb z<6%Q`pG4rvLWQ&4me)YB0NBgb#q>7(a8aT{R#s0Jmb9iexI+I{yvM@+P0`>E^-(R{ zrZq(Ri%0+{Ef|fn{UC3S&K(DYoz3tT=&X0TJjeSohqqTGUyf&>Yi=&`o1n0#sxNetpF?yfLA_Mk5f+%{FEWt zt3B=}Z01h@M~e@$0$7d+?e0-&y_4dQ4+GE{EE7=_Z!bgU0A;{imORKQ?IlA)3ogP{ z5wv&0^SlTX!xz6hLHT~iKz1II88`<_K9~|=??|0iyC%r)d%-ShT6IZWQh*637<+5b z2q?T{u1~|I+wyul05Xt!`95>JZ~uZ!cYzUz74$|QpA8#R#0^DnJiDoKR-xg9_S*NVhPfK^icr8Q<_Vt zUXR?LXEb|LTpMoH17|U)Lrf`c68&&m2yHQ-FjKhrojafb)17xU?4_B3B)i@?mu`5G z7VAKjIOJOb&=cSy8&K8pH0L;tnATCMVPoCNAPN-t<}Tu^Khk z&9?UKkJNr1;0oXpUB=h@_^#ZND*xW$^nqHK)lB+J()>BDP;eEj<=<+zHHU}SybluJ zqU*K80Kmq$rP*B;k2JNSjFQkoxERs3SS}O+s428OfgSQhjL&C{~ECZ5tqKXDjOF{FR6%J???2~Ezw z-ezkaaZA#3WqDkB@i}|6eeq>}%>Q|LG~DBN@T>P5i9Ovb`8lA}i0kVwIXG(jT2zI9v+8*U$~-^pGvuLVSdb^W-T zEd!QG)43aI^4PB^PK+x(jRaAKzH^&Mb~12UwWBO`XDWIGr6zc8gJyT zZdO0q`G54=%+PT|7zXcF2ub&F!0>tz8_T_IzOh5zvg)^{2I6rrDXhB@X9FpLgW(g_?ai&fY=@U zx$$ZKyRe(bb>+}^7Y#>dDym-y@anN#5iuj6b!lHK8Z(5`a#IRfaJW#}wWl4U#^SB< zF6?<))qele^jNIEqpst|Gj_P-!an3)ZJ^L@S=g*v^vyw7UQrcRwaDQvH?;trd}KFL z&*x`#R50emT_)h=b@ijaCyQ>)8r#u83N(zwZ1>s4EowuS6XRwUFqml)ht;N4 zb<*I^P1wer#?EMG@1Sq&_%Lc9!B(Z7+a^DCf~rm2%9yTrPZ}zxPEP?d(okt5FIHe!s{~@mtL2WM$EQJuuWG62`Y50dz(lSM>Z2PDHau z0pC=d&pTuOyG_r7SH&&{e!erPGZruYuHLCW21kt_ehx%ibtVRY=db-&QAEH)DR*Km zYcOQp=fT~d3mXjs=+zvYgZysC)8P7E-^02w03X%FbydsovQyojx;;o| zBD8~QZOHD>yAuo0p1d_u+TpKo0MW^(v43+Q(aC&6NY=-~#RCmu}A1w3}n~H;#1Jz^CB!+ zPZ!Qm@Q*yL)r56aUBT}2n47ujoYL>u=q3)i?KofvBq!@ON;k!X%IneelKMS_xyq2e zligt2+`R)?z;#W+B!Q1!4(?N~T||VSjvS-SyJWl^g@MM3hJQsQL9@Kj7Nm}EQ~Ncy z(~X5~XOUxmdiD?Y{CWF6b@5R0!Y3!5r)p~+V#?R2GR6FyP7Fr^`wGG+CR&w{su8gseK z0Fh$Ajkc)SX%u5yhUdy`Omwp@;Y35UXe#V8MN|2zGi8ZO?k%)sK-Z9;*k!in$(6$l zBj*7yx=}9q9oSYdB}$(zB3tL-M2s$;jM@s&pnVz@vU zW339U8ZprmSxD9Nkc-u3>1CdejGG8sT4t{bxe!D{T#8W))5(t^w-wi9$J4S116mPl zBdc;h@rIi_oFD*GMY)kFYyN!>#c~w0FzN{4L6&_q{Uc6+Hj72m)^`i9XH8XGX4u+^ zl*OF}7dUl#6MLbl&W?F1^Ej*nl*nU@YX@0bnL?fxG3=s*KKMHcPLhd1*eOcA{dE=@qYmMCEl0u?3|f z2c3PvG+#ni&=R zR-7-j#w8IpW#sF46~|&%7L^i-8T2OLbk2+LwkQkl@G4?$p(R&7lEv!mst1a$(F+BQ z{7^`nl0A$JB_*0qG6zMgGJ&C_w$)SYw=@_vS(Hrim$AOA79UHbjCNjf=m}UY1S9m> zIi||7Q^|G1IKgkPNYO&9iquy{MA1#OCL9U<0V?7pl|Kk}1Ezw+&7d3-s|X+fh17H8 zmm=pkxF%K z;*t2Pv)O-El{4`d8ai|-{&>Ns2MsSw7(4l2QJxHIQ%KQxdLX$)#O9=#R z7C_;&=?p7mMREk^6R&fZgrATD1f(%#W%-{KB1hbfa|2uznwU-d4_6vM%ZQNv%sXOd z)DqD#utwDc*!GC)!)je)isxDke7Kv6T;qYP-)YK4(h<}jIBW833>`Z6GhuJ=@b8x$ zk}B)4I`c%Js#4OW4vqyd0bgU#B>I+tM^>aPIf7HdJe8oaQD_f;`db77Hk8(0x678qA8~(Ma;OlN#$A;kZ3e@fgz}+%#cg&m64p0OPZiq7Btx^J1iGH zbn;YnRi!t{A}W?E4<>Sa)l({YD%@p;X@U;X6v^{+IB45#>&V*cFghnUJ+>GFhwcn2ag-*?M)y$17O)98Q`v~cPmY*rLMaQc}5xa_3Rlb30x)#sSo zOseOK|Nbq$Of8Yi`555Oj*dVzvjui!(eyb~t+Eu6ZT7c@!UAkny)p&N0|S46gy@8V zx^u=wawRLwoa|tYOEAc2*$tOylzl^s;Y$xPy?LERM%+}FZfnF*+%Vh;R=_a=gByaU z6)7>gVYOZ?*TD+`GeILy97YuMD@48h}jGeCl3qQ9+6cKm@L^Rb{uyMiBZew5v|0pU5 zM&lON(LIZrzl%dHh{`4~mTU$-x{40Tei4L$NgCSm>%kJz9V&;71O_n8@ghpKdGTCK z5G|O*waDy~Hm=g(#fhoYuNcfcgD!F=!;`oOO1gZk`x2)_f}_jho$1F^0J zWC9wmh_|Ew4je)o@deKCKrPS4I=~srh#HbeOa4}L1#CD}uxt>Q=b&|w>xrXun2ot3 zu&~M%-)4``3zVjCZ)7;nLvoio|y}?QVwV89e2bxZ+OU)k3Q0cnaA1}8;jHtju*Ox zCq^d#5UCUA{&{GlaqoY88XRna!jVk~LQ9hVYD52lNO%M<4C$fcqUEEFzbjL&fDt&n z`N+B9JsZX_Q+3nD%A@4$VIP|B2K1u`0@5@SUIO$uNC-SOqA9y4O*=M^JJH1c7%mpw zyjX#ZsKT3cSk9qbr&#zsi{c8E&Qi>tA!{H&7eWDk-Zr=%v)aQpfgXofs+&?$aF};s1>X1fU?yri=H$ugJI|>rZ>MZL*iRD~< zSL($PKk3s5@$R9-(74$kY4!l0YZmr};_58}(FZ(qgK{*b_|~MEwuJzb(x<=z4za zbqh|xEh7@v@U}jtqw~gp`x?qRLiGY3uiByp!@pT>m-@mLLPC1UC;Uj)5N7~aqkHb( zr>+H;t)%gKK57p`f}UpwCo94DjdSfG5QJV23B6yf=x(yReh=}mh&=$VhiXv;i#`f~ z?MY*fnB|S$KT^_#?R=F*Ae;NHC_Dg*X>R>gI+53oW9%SwKqwByf^2M zCsEOpxg5At4c4h7?Or;A|x9t)p;W_Z{r- z{ck(Y>l@zh&(kMWBe@z%;P{UDvX;$STIB=IT^A$wFYgRXy`1x~3wj=oBJDJI8ouG= zNd3`8%{4{LitJ+9Wa@W;DaF<#DwRa3FqX>O(cuwEKd66Ve)i9d!|D{+_EnN!6|TM&H2d{#hTKcnlSN(oE415*@m&QjQL+61Rm4uFYe~fX;}=rQ ziw&~b&5Otas%=k^Pp0?}ENPC6Ss%i{7yS>Ra(UTN3x=H@KlAIKtxah3JNvGez9V^) z{D*a!)!pU~`?hb%_5%P-^PA_|qo}M-dmRi^zs`6a0q?iU!`M1|M6(9zX2?!OO%|HGb?w`p&V!Zv? z7d+`d{<#)msOFnGMbSOdMbOBs-ew7jAyijmfFHYF+*vzxSN-IhWZBd;Z&T6JF53S3q2BJb(btjz9q%qz4NMOyF;Q zH|v{souXbv>ZHA&USAR;q2R&k{fYCh&SgsuZ|zjnQtf&j#xq)%!BAg%&NGhSSa0I9 zzIC?yCvz(f154%dg?}QzZ5gKm9kaTO{Hw|p9rU#dHJe)JzKhc+`&y&b%N1?^xUN`p z|H9S%W~BOKOn~l}WveRl=ToP3@A)dE`T>c~lkbo%?5oO%TW+8;HxD)1_Rc5o)|;6Z`s4Vyj?ONf>eXxvM*!XN0Rj77McXBK`&zbkd@Z5V z#IIBeuV3K~xHcA7E1`JYedQ|wNWp)DOJ(Xbt2p1k!2Q!vAs-hss?a8Di>{!(&IiDb z&8y)|u6hd9n^o<>veiocLeI42H3%x&vPy*NSF>UTE`bzkRWofugfTSTXhV~>#ur*P z4i>f)O#t-5}X;_Cqh6D^$SxgzRc$@ zk0Pz-IQ!M$wQL6%YpQ41hn4Y~ZqeK%H4AGL`I?CJArj2tn$*+b7CNaQ*rK-y4?D(l zwtd@%@DI`&i74zj(9wR7E1PuDld8G+H>YPx4Z{R6iaDkUGwUbC>XLGsfzbC`|c*0YEe5R$93qoR2N@1};) z?11glt|H!Sht%v&k%y6Q>=&tTO=ujo`C58IQr25B6Cm3CM_=wWZ0+zAYa>#!j=T(m zm40$}@BsX7;}em`&eyoyMo&3fyBIxiKS>q{YvyQrOzkI$iwxd^kY!t5je?FXVMVDZ zk3#ujZ&~=Ht_vKI5?*ZBHX3r6A*ll>DF6-Ij(4!)YzocWyVK3Ar~0agagE|^JI>8h z48{CSl%9h-2s^Ac$~-YI%yLcZO) z%HN=FrlZy1w@e7N$kyRs@MctdZ#<1B-kTb?-zvxsLpHqMcrk8O(&@u1N8Kr;^#FpG z7?j*xoOaSiYjc&F?j-lj&e@Xo`?Pg*@vVIM3a+kQ+w4V~xtsf;gU#l=ojmY%fwQ{! z%9@wR;5lt7btw0COE+`%RojSK9>g#9yA1uRl&q^BQkj*~)`(MZuD*-S#%jckD=$^6 ze{^rFc@Mi)i9Aum-CT!F2Jl}8Y{1V?_|FHMN|p^o+jm;yu!-hDTU{}{LY?Jqq!?IhMgTZ7FLJ{$ z7@8i!=2GR3ZHm_HyuFQ`K10uqv zhzJ(s(fjP+JK1^8PehJ;MDu7WyrJKTj;i;u!XNh;_CaDc)b>^1kANlw^6a3~U%Bya z{DN0<*YB8ATlF@0MeRV7<~m146P$!ifQ8q9<96d|44iQJkA(fQQPQNnu)(d{PT_m{ za5;k2SNJ4eEV21J;fdmKTY-W*T=KmrVaOy-X@6ca`q(|XH+-xZ5oeSBhOMn$6-2Bh z5-aG_kmU8!<1M7XA3*8p4NMka&`f!Z{6w_01YHg%N8m+Q-8L&2&kx0$dxV{4Ss)g~ zx6EvCI~CFq7R)ACk~s%pwV2h#@m-FsC3b}r)Tv;T>}}^G8K+iYWWW~rNE|bf_RvIp9e%{p5r|XwobPEGTAb^#o<~RctC@xos?VO!c z8H5SHMyd~X@SSq_!8rtaO!*cC>s?q3U%S?)xb0Zlu`-BYyY7)n3?A3eUS+Tc*MFzr zjy`FxS+LMa^4)hBffO z^F~P7qxOOb8baD$wIJnilj)p~AQ$mz_-9{f*=Uj9#PHVqUdXw|B>EPb*GDV#%g7i| za6l&xocnrhfiA>O_!M4&F5M6UD!57d1hO?t&=K`xM_#4&6DOh0iD@VUqow&xK=PXm zfQ4Wr4RD{0AiY1bb?hR5h8Gv@PF9tD6OJDbCP?hU;T7vqnkjIO$xwFVKNtu%mA;o8 zUn04PkQ0$Boq#R8n{bpsYvj;D9U4Vo>J&}ohsFQzhc#FMA~%NL9DF^)Oj}GeDMjkL zB9GlY)=Wrybl3|Oo1@L-z`dHj`lE@=WCqF%V#safgw7Z1hj>aK~J-w8)0#T`PI+8YA>7y}wCGl1!4Np65ix+wIpt2J}o#*k1tijn>Wx z>Tu7)lOJX)Bepo%ir|H-Gwi&-m&@j!gn9!!4Z6PBn!*(kdW~R zN|CE+zJIxqRq!y1Wp04wlZh{*;?D@!5PHVD-={zh+rcxokLEExpAtq^1Q)W1%ZMNy zKv;x}f1qkW91`|9C}?Sdg7&{7Nr-wx#V+oiE+U8SmJ#-nBC2iEREZ&M<*%y#SHB<^f#t)Tj-rs@6+ zr~WzCjkUp19)boRqH4{g;FK9~+cO8`s{;wDLbaEf!fYR_tzf(^#Y_4c|FR)MR*`pP z+2-hd1lF#EgP+PATd?201dXrM3IsEnEU{T+4Bvq$wHvZKHuy)(fL<2d)$LoQRzLNd zUIwt986AAWZKTgJR%}yqS7H`xaVu!XeU!-ln5(W46hhNE=9#vqwDbz_pD+lhqzv32 zOldT*1GY0}OMKpv?x!b9viwl2hP~Vb7E(xx3P&sjs%3mnJvUN|BoHCzDYygWl1cqh zD;0As>Z9T$tdG2Tcqp`&UP$C~Dm@-*5I;HoXW#?=RtW%Du5(3@9vAS4;HknY-eoke zF(ar9TO9q<=K;WUOTqy$Ll=rXW_T@qP4jpP@nw`t(k&SoaQH;Kc$4I};7g1iO$Vlw z{=f9m`&;W?`K67FM?ukkgJs1Tisb6qeJf>HSe|45PO=PVYMJb5@~Sdb~|^Qw4T_zO@48j z*b_VFi}ksxe{b&a@f!S$DXyEAWq-)I17i^U)gWBRAb5HDgR$d#J}H{p-b))FrBQ;u z1FQ588N^zESRISI8L|(1Noq23_?@Q?tPj?#;4A-oQec`LwhVS8?=nqIG-S^g((=Gd*l@1(}!o(d+lPal7 z$R1VbRa^kL3(9zn6pJ!Gw6NAA*B(98VjeIBiqFHx$$yY2+=t3kLFE`rlK~3LglThS zGn;1B{gA{iRC1iDd20>jQCu0L|BF6-cEG`A<_Ugf?RXjVSM`*Cg5Hg=AIRLDBr6U5 zz>d&2lC$lHK`|U^*U;dwsS$RS)({Z}_qC=hh9?*RD2%I%F+uL)6+Igv`sYsjy$0=B zSZMw9P_e>=VEx!MX2*1hpF)E$p77&-Hs|xe)m*jiicbn}StPS9Rxn@>YoTtl&J`x( z8}n~+bRW+^mhO#H#3Q-va!%|0UK#B(T9n5xKfQGD$j&b^ZRNrj>|%3>iDyieC^AQv zIq(I5r%0ydyx$uV?!JpdJlgrD@B6FdNbMh{DA1Gy2w(3=S0+nQ5t*tY)arbxy1IE; zzlhGAdUGLq%{VhuO*%>eE8s4@!z7B-%M0)@ki#C!G+JVWNmLqjRcjw$AX}bV`gj`# z=(N+`C8x$Q)5R zUCu|MX6{!|A;;!lQmCSbuMp`=<3xiQH^L5w6GSXEh-~Kx7XoLb1D~#>+>Npid=5f3 zmkjhkFxA_9w$cvv?7~Z+*RL4vO5r%5WN>y5`0fX41)+mHq#XmmGLnHF-0SV|7GD9p zNk6y}3P#6zF?ZFQ=6ooTk3>d4kd8s!xIg zXsv|5*;@Mty9uQBga-UlSOk>P0~rA^@$}xenwOI7f6i6@Dd?le`bPx=tM+8RNz-~F zXZ*5Q$W#RJDv(k>9hiK6)Cyln@xCssC8tX6ut7cY7U#OQzlzUp_N2c(G`(QeXG>$| zG_;V@iv3YO;|)KR%b^w+N%@_QK!yc>;haT|Jm^{f+*E#nTopXqsm8-nACUl_vkiwv z(<6~Tw|0AhPs7e zQ?qhJ)j%Pz3gN%@%waBe3>75;_5!vwflVOhB8>rtjG~1G;~g#sGSXpbg6ELrf)n0O z=Wba~*hGSwLN_5g;6TD-zy(dE>z-0B9{mU2UQi@>U-0w^qm%zb2{bs~7cu~J)S$<)OW#X*z^beQnpaGfUXp)=z;WmHx0 z9(yc5r&R!7>MO-Ij8nob@*+q1P80P;XU9R79CcWM5*&w!3WR3Y7&rMY@?aT7s-v(~ zL(?-opbjR8$c`ry80AQ6gBXsJ=tj^cUt6VEA z;8m?fN{L@qWUA>mRHWCQD>PRFUzj!)MOK-MMkgm?NH5t+XW>^{BdV#%Hd&iz?->jK zl!3j~u;_1uQnF_Tb89n=d3XE9X}oSTE*clM%tDs9XQ-nSe1ZJUxBQJ^t(090e1X=L z9g}HA;nLt%4rn~Z&XTq>Nn|wk+Jlv{a6H4<_F5q3Jnt4%j%tO7ccnNM8BzVh2>dzo zVUDd(l~Wif!9n^9Nyh5E8I{K{VwnNT2umPHlsl5-dic~(nZ-<$3MF+WmzF0Za-M0GL8XY!p1e~}23GP=7Gma01}NsBJP>9xsoE>D^vz=si%Sm! z-|$HyDLuSnfGp9Jv*ul-MR>Eed=$$G*3=K{-A-wyeb?%oZ{>BsUp|`hj zs%Vl83cxv43_fxnBHkOubKIUDWUCpp&Rhuy+iA2qCG%s$qpXp>U4Z{uu-`n<;ajHn zqlyhj0T=e{TYdpy5b;)Gt}DX7a0COGieMqxAt6JNUI=-k9Wr~*da?1J=~8544Ij0n zU%|YcxSKC_%KPN{LF(1SwcKOnN&!$7w9<7j0gK(lU6&o9#!kDrf4Kh^Ha8~iqAo;p z#joj%<&%8)M{q43Awv&$=2aX?^VmD6g*)y*DBa8vg(U%I^T}~3jWcdyim5OOJmjji zodhtL6)aelpuRk7Fe?#~kr@;FHITH>(jNr6vMjDV8JsYUajbHFQ4$CgCw^jFI5RB1 z0rJIj&Q6Pad*Vw?1#y|n)%b_l8Q1O{b#DM7w77j9$i|KTY)>I+*wxD`?v-(jOHa#; zEz?63g=Y5cO7Pr>Q1q-nxc2$#vwQePf+N&qgsc&;s=S;RJ!J=-M-TXUlHUj+XOGZ@ zX8vl0W_2dW*XOp(rejZ*O|WNMX|`mW0Mwg!<``tNJjdC@h}sf^B47B!Wp21NnngxM zeIq~O3mYr=tNO*C6*L1PKi~`63pu0Sn0uIdipA)OxH+VLAF;Z4r*z|42;V(;!gP&v z`3ig=;z3<+m*J3>g$soXT^${SZRU^VvH%s~$-S%rbF|ue6JM8nG-q&MxF$V8ZtNmySWu5I6 z3*%w-=ax_Z?%K!dWz@5zjQO8R+lud_7Hr( zt&CjjeK2j+?9Y}*?_Jfn0p@e)3&V zM=T6`8Au}iBI6}U-#eISNl(N-`_x&@cWxlgqu3G2Ion9h1Mjb&T~zj${8e$>p6(RJ zY=C5u?isX}C5imG0=rt*1@H&v{kmTWd_lyRK8A?zEcfXV&`|H31F+Luj*pyM=^H31 zSfx#!J-j=^v3lJpFY$X~;+#VIMQ_tMw@qmrK6}H2j0-z~9wi;21Xs0pppBr|uTmJC zpWm6MqMc3OnVxt>N9}|%7^pYSWuMVdAB={5`U>ZUSr_th+GK4d=c^skKb&+1&258= zIDf)9B+~9`oZfZ#0`6RT`hq<3X*tKz(e#^~r?x}i?#@{R3H(BiUr`M7*N5f}&IYe1 zXz8W^DPsW!C*+#@5%ZBSU}rz~i7L9fi_QT^KB}!;>Gh7Mx7!z=IxXGKeC{NbJzZs1 zmeX$`=Nub49`;O+`K`*A1jq|1Tg~pS)+Y}W_ZMhGu*@^*0Eb!J_J>*EjIZ56-Y-eJ zpQf6z>n>!;!_}G3g?tp=^0_4THlL(~&SUtk*2yfru{sYzfy(CIq6;Iv!k^+(#B1cK z=#+;Q+8@93)5SVSk9Y!3CX-j$ST#uqJ*)Q;k`sryw}*U%y`76c*PoDXBbmK&1}hvt zJvY|z9|q#ffYYx2!H?-{r#oH)&qvnVH;4TadNL6dI1os(Aww(>Y9=%`M-iHsfJ7#k z(Lv7)u*_SS4kL;bQSj+dFD62a0TE3w*#eZbL7V+>^adF9p?``+9Yb2xA@_A?;B{~x zLqWWNU`MFkAU{Re@Ir*R0VOU3$^*2VK<^G9_*(&8K&V6q0^yL~zmh$^KpvYVec!FJ|1Up+ikR zS;H?a65N5L4OUw!S)(B>99av}4NZeJ@T0K)7sj3#kgex2#6b@R4RJByW?uxmr!jjKQHwzONL91Y~Q*gBJGtb#g&>P_sn z0<;ziWx}l60Xnymuc+IB6de%h`z*^s=(b@XR3RkeLAK+8y5qsVSO``>;Rm1pFF6>n zT0}^P2Ly!21O!C#F9zvsmTu_*g_!>DBn~?LS2j2-z!P^RbM-Z*)?@^7G!Hr~Bm^3T zOiZar6Xf49oXNx}u@KU5iY#oCZ7e={6B!vdCY0gij4n)|Gq0jl0d&G5EPW~cV_K7J z_q@mkntMC!PTAH?v*0tL;Pc$~`q{<{FDbXX48}cQocZkAtcPF!RAw|ozq1_?l818e zSNhW$p#BmbEQk;S1b9X5Ny262kEU0XGL`p=tpKMHhD@k8lR-wsDUFWS#Fo{~w3_U- zfKemg;H^bmaM!#qJ(tj~sTq4v>C`K$>2l}*~*>ZHmF^IVNac~6_PgY$Cry$JQy z31yG=m1mvi0~lJE@`lU`F5@5T2Y>=@`0s=RGuo3$Rc4JBoEYoVffEe}1obL2zO_vm zK#A2t&a|4foti^a&k*b(H}Am;=Id@&6=qcH>NXV``-6Vz=;Vm6k5|==jUoPAZ>;U3 zJNQK8$nOfOQ|qTcrrZWtjGk{uwv+E*g}MTJo@_SyPP)@9B*YlY)yEWUd*1d<%BZoL z@0Va#CooqK!+(4n@qD2Kj&wyfv2TjN%qM8aIDOp%Jl6VuU2sea;XPP0VB$U--m9C zRqBG?{L14$AM2gj66X%k^mzzk1X!nT&!Pwg<1uI$9dgxd%jnp$v{%>WRfFV?cV|6| zTC!;DC}1pmL`$(B2nt{El;ahpgPTD4t^oAm)K3l(7`xFk6(r-B=O*reM+WmrManB@I}`1&uE(L> zb7Ae)rzwAI=f@%1t(?;%BW&#o!d(p?PUfQu@6u9QSDDe*64K;ED-{Yn>^Lc2>Wu&% zycU+lMx*hA0$vhQ=uEgNU>$r8GdiIB{{n?TdcP!v#pDszm9Y(ONt1ugSW>-jTB1uG z4O*2$Cey#tv?UAASaI^(Q5d~MnhEKIWyGF|2h=B~6#q+H0^riAIKmWKY#F?(%@Y4( za9iW|in>Ee2oMVY$*a74L#%$8xPfld&!f%uY!Pn;E=Y z4!I1krz&oP(~^wAPm6zwMTxKsEv5BE9c~5;V2@1OGRzcrg6{Mxv6zLHlI{*x76#qD zNv!zqohDqu7n-iP$>57+Xqk2>KV9)tAmGfn!I!KO%j}k3u`JvlPNd^vX+oyMZ7|*7 zOFO1BGLe+&0T~{ac3!f2zs({DzJur@0KUZTpu0aR&LABI!ZLqv%Q}SDWimfA;wpYB zxzWm42kdUwbOvqaYjDPL;W|k;Rt|@8pcO>Z26tyUG!~Z07Bc)y#ZQC25$GF^ib!}U zjxb<7(vgXiiL*d3_*vZ|%KF4gb^#MByJcLg$cVEIel|fCcnqglJdt7&ky&Yn&cgrU z(AiP3oQ0Ol1Y3WoBMq$=1>IMCG{8jY5_Sy^0(+t2ix;#Wwj;JB-IQ(FgRF(YC}fnh zXEFi#CLD4)vP$tKJn(+N;44V578awF0E4BP0bJ;sfGEJI_!$V$f2W)POF5Pk73Z+f zYM@yTV9O1ZD(Bf89#F;@6bs{s!!C|Z~54yZlKdtapLpE)Zk+h$k*l2|U5F1aK zmc3l8wHbe%rxdKnJWibxjPtH`Zl}rOWWqnA_)0S)ZnNSVQ=!$)Q>~FLZnsM{4|$&^ z3=P{jPs}R@UrY5exkV1732Q#Oumg1UL}5W_8A&4`N68BE9l}Y{SADwl*c|Dp&k~+U ziq#1!(pxC0!Uj*mg_}%+pR4$4IQ@J?=se-NaU_5BpdChWSVN^u$8g3CC{9)VPtBrp zzT#_fs23%sx5Kg!2gQ5f*}dzTSl^BG7VAPwMW4a@G^`RZ$nk#`>XyJ-U2zW%uOo(3 zc-G@QYAe4$@gx{uAPv4@kGN3sQ|$B#abag#+6>k0BZFV~Y2ApQOYO)EA9AP>O$7W} zDH(q}!6tn5&NBnz0AA6c_<2wSH7=t)Ohp*zJs(a!)$c*P7pA<6v{Sqf2_dP&5yp{B z>u~ZkylADrp!j+yE0L43!*%_NsQ3lJ0ADmWX;UERS9}A}!p*5(G01emkm01X2l^Qx z9kw-qF9c8*!-*GZCl0`gX@fUm3gaRJGZKGld;!5o%`MymWG)GIDy9dWoW($5@Iqko{`g3a0mm%;^?82o<{ zvd`xL4_>O@B2Y@hYf$UOw1Z4%#)5+eO_DXoL6;@P#Z;*`Ljb9Ix#AZ=iH)d0nGTsj zEYgllXh0$P6L8BAeEbZGrb*?pPi!&wiK|Tah_p4d0Hg>(X=8&5HQh?~i7V`VV%T<% zpd?37OUzZ`%81!)i5EjpR~II{Y|?)(X4rq9p-O!TAh@gvt}CKo6xw9)D++{@U+UE3f9XOKMFDagZ*h>-EFLwlB#TAqyQE@%`u&#d<*JEiT z2yamQN)TR#)XpB4!-{XAvTVfz2g0bNn@uV@{`A9#srYFRV*1#e&}&z5$!TU7QT&Tw zc{v_)Q85}0ZE8+7S3`-gB@zFj5%fkIhpy%pk3h@O4ivetDQ%?cHAIG~OAb{K@oNe7 z1e*3NtR9+X&7~1bw^xTT!V`av5i2-jO!4a=e;D%f9dVt|4iyU$_a&NA#Uz^3WOGgx zlNeOR_z~e5+|z?9|1u_3q{%)}Y|N^d2a2peWxD#o*(bI~GCipX%?aDlB2p2HrOY@D znEZO^hQVPQ9G!}|SeCHi27j@j7vmA_t}Lv?Y_XNr%nTJ8%qkJZM?inOJSrxzZt!sm zY#i~Lzy`%@D-P0c0Zi$48zj>2cExiWBL*)*`;BNIldzS5P*Qvp&bSuND0j$)Gweo2 zDLw`zRz$^(?8rV*Ny4Ti*;FB$lH`dz_RmQrT`EiZfafp7?M6-x?X_vq|p-p1k&3k zPj@Cek$*+#wt9ouY49C-F7mGi6bijPiJ|@hA8Gbr#I^?=6dHdvActPDJ0mhQ3Rxw( zCE*09%XCfRJ1I{xmbSK{M;xl(Xx2CCDF?&4&cIzTha$9F@hS`-!^xXw`<3=}tzqpg z+S)y^_GW|MEJJyJNZtcOP*$~^dP7btC9J`3!C~TktKw7O?ZK(Hbp$dKXd*knbWNX_ zMhZ;p6!5i~#twgl;daG$;=}~B`AVO--Cl=3jIx0+jk8g4M>w?EAFl5}YWWFExka~) zUH+JNC&oM|=K6~5p0C)Q%f(#|Yuuz7BsclBq)BpD6Y_T}elv|TQ01Opai85GU7&&` z`|ZZCxre%{Owtp={MssUFKbc!7N`-|H(=Ah0V{qhrqX{t?5@L~OX<8%%rI264dPyd z&n(BP>DPS1g>KHbkxmA`moSmka}f&UeZJ-QD?Saq3RrodLtlaYfN4>;L#MTVVEmV* zP2k@S;P=43uPXi(9N&(|2T_`V2b9nvj^3gD(3s^OQv6O(O@eB#rXq^Fv>gw_jz@eu zH0i@pyoP_4>E}m4M1lXB;&AK|!UlMO`}VH`?Y5@BsSP zOEe#YRimjsX=MU~$(Fg?6_^nmpHlp*P`3hgpYDH%H`Ud}9OJ-*Y<%fBHVr*Um}rdO zEv7&0DgF@07zrGGUGcqOcO$CdGxPBa4?PTHzu70AooB46q4+F0gbeWQd<2yH8#gKD zU|iFdeGQhqFyFF$ia!c@Rfyi-E1tLe?Qo(`>8UUr6}FfL^<(;?tU^fG@aUbgl9Sn+3lif^j`2yTK2-;rHR1vXp! zT!VktUj>L?p)ArHEOP?Haq96DDc!zw znD^`90U^evQk!mTD_+Hweb8>9u>_92g+K#Y=NtS7C@+w8E0lk&SNxFa8twEm+aG_7 zpF>X4bb?XDM+8Q)*FpQkr1%kq;z#~wgXbQf=Z|p?Ja2=aU+)z^Vf`$@`otTFb@+2r z2`fP_3&b0|w=l~am2n+9M~`}8`jT?k_WSNj)OY8VmP3tRqxd&DJY?{{#{d9UcO!osZ}o~_ z9Ur=vLBIa^*u4$nUnRw_DR#e}7rX6#?EV1+Wh}}C0iP)u6iFhK4 z7m67T{Gdn7-kuw?cM!9;4gMQHW^Wn%x47Pd>Ag_;-CprK{dKTUya!;vN5J;SXMF(% zo0J)_^`|mo^&T$Z?;8AfN%4PMQu%$wzXeA3jTrnNJ4W=E8b_w}bt9p_*D(Ln;J3;4 zKJfuc^#@GS2fGxD+pEM8JG7ZT%<2w6p`?$;6u<8@vT2yER7vssVS^u`I}nBL_ZlEH zH%(;FkL573@4HlTp~VM~MPdC=ar#1gKT!Ekhr$VDDC%ZgM&SLQ75{%8wjO{-|7FfK z;QN5+1yS(_G}q>r$v-S;uj1H4@YzSb;*SlVeGH#{e9ULB!e<{H@3W8n zj~0K#4 zvGVUY4(<=b$iMW8|6qUm26!wP`x&sEM%uj=bf=@@ue$T5XTML=Oavh~{8#yZ00030 z|E*OCbQ9MVozckleB+_QQkp;jkC6%fG1vkNZv+^;!Po&D%vNX+vL!&qmV{)34GjeY z!H`fEv#D%pS&CCO*A59JG=zjUl(IIV&~OgvAq310VKWrd_vL?Q7@+60C#O2+o_Tt6 z|9x-n`|~HpsALKOac7u(T@f(W%TlFc%1~kw6{}gvG%9)_Bu_e<$BX9_v!G;{LoL!7 zUi>~FM(ZNOmsoi5e2R2Ih_F}`vq>?=^b^c_#V9ByBQU}&Vzgp1D=|SCi*z377pzi) zVC2OHgKWqWbVh$A{4J;(JxCUldGTUEltH!{c$ZS7%R+<#vN4L$+D|Y&mi;hH7JD_X z78HGAuv@cYHA0`)6kfb+m9DS?SDq>$Hy5}H%b~zhc%Ex1(oLbCkT0Z4H}cZ}N<`jR zMbIl5CM7XOFpwJ7A(5bnwZe?uOCCNwNTwQAlSPe&Ji`X#i?T_dWfX)+8A{v_g)}cduuAt>#eW5^gZ4@o z#lsY-31+A$iKdn@3i@<`%SaatM#Tz>pXl=>zhX*ko*?U9ksiXzCeV2l*b6!Vg^%S@ zy6J?7Jmv9Rf*!Gs_JkS4*A&6bjEKoltck%P>;Zq(wsGBfHZIK^6jNrEVhHTjE8RHe ziXQqm82MQKsbRs*JU&)u6uA6S-%t*IYKa%Fx_c1z1qc8=fCq#E!Z0TS2*FKY5H0d#=2fOeQ?aTMkmU)FHU7{>xA#!Tl`jN<@Zx#k~Ro1oF@j&Tn_qNX3K zhSPr&uS_!uby5Lon%;V8`tPmL>7(Ja_#|jN>4&~?7^iFMW?;Z+#MLR-!{NN^xg(|9XZUeTtEnV{Tg!EzDYq2yC!2jw&yI!?*{lO#_atG$F-r@ zAB%O_W$u>VSpHqqIf;Ggbf>b|v(3l*$FQaz^K+2@Icm1>XJXwwcs~U5zrebGXsLgX z`FD_i0Gu$l8_&f&jkb)8%0 zv>nf#)#20#UGDNvQdW#qem8Z;)vI?OHB67&cp|6fVC}MAmlEn5lez`6ch8-)J<0Ry zQT2N}>ay?f_HV^y5xM0XCzS5^u1J5559_klf5UNiNZ06kN#2Yu3;%vLe%*pkul~ONG!4S1k*>bWgJk`-gYQLb31cB#+ECgr|_5p=@8WcQ?@N9~%X?61{u~Sb_6t z1T4py+`{=XU#|hGaVD1lOE5kUSd5&rfJK-;16YWf-#oKFv@_H0k9o*H1gJv(0l?eX z&;Dojjdrj667#zN(~@+8=r;wSAsF~W+KMyU3Vd$d6R}(j1F*`q;_>AoN3Ng>#eH-Rkk3YkH zSpA_GI{H>wz-jZB zf|@<#e_P^n2I)43eY}5Ncz%iQ`6WcNpyjU5Sz6|EKYOne8oY+j$I(CPOxGVgG3 z#&M7>b`{vhx!ew$-&5u*47SI+CUU6>6Feo(1Yeok?erx~@%VoxCit8Mc3)!4#a2+} zDt07*q$2?|n$rn>UtxwT7pkg+S)E#|vVnlDC&h8`~HT$`IQD?e4* z(}y40`sjh<(*}R9JH3@m{$ktd?gLg`FY9!&F1tQ{VbQ~?K5eGNRW6A6r^t=2Tp#n- zS!*`zJQAHbyuG#JaARF@)wf4aSVQNQ81}86e}DV&*&VlS${n0EDs$warS-{wIef9A z&xM>S$E)h5cAuVf+^+MEeno$y_UNO92Rog+5n5Z|x&wdbxyub_0)K*g{NoK=^BKrT zlJ=wn=}2VKnY=>cNdmDDE9p-Lk|89Y3?pxnv7~@F$OKYCCX?x82ANCNlK04O$ZyF4 zvWP4tE6FNSL$;9Zq?UX@c9LCWH`z-*Bm2k!a*X_qoF(6p%j5@gkG3IAG?E&riN;b& z<7hm!P%D4!NmFPV?M?gAbectT=x{oMj-)m^mKM-LT0|$(66&TN>ZKKQDt(Jir!#3K zolED@`Scz7F0G=~bSYgzG}Lf zqYhLDsd?%fYQ8#D9j=a0QI3XCLc_^@@_^hT zUy-lLak7joC)H#z8AFDWLI0=i$Z`J$P)h>@6aWAK2mnlGPgNKMW=2pC001x<001HY z005U}cL))e;P3?rmkzlF3V#c58^?LR!ybs;6OTIbAW@X{I0?{$qDdYJ@BxyNj{qr> zdQdc}_X`AxBM1@%kUKykZ8>JGrcs@wR$a%QlVwY(9FN_ZIGw$-}~S4w(c5i;D5NPjp6Rjot?Qo ztsEzu;5aT`VHzVbGdh}?$|h5W88xz5A#P+X1QRhEGc6-J1`DptWSMDLnba{OI+cm% zQ$~qlref(tX)KqSismxWRMN`1bK_>_c$ty5@}?2BaxpV!#68Ey4bwPeyi`h{(?#R4bUbB5DM01t3}GskwFKbB-KLRE&6JG9;sDJP!E|cB<(V{QC=FAe z)3GT-n8+m4Le9(^?y*?PGRi0|8c&+WXf9*U2$Y8ln0qXfihrlXcrunqXRKUul*|P; zl}R8N1$AI?#*@xCmXMrbP9@V|Avfs7dAv13UHqC0P8%v>omi3+pI;$|ib zc}a~qdk9sY9Dm7!X+KMbF;ac^m2*Y9SQ0 zT5ZXcF*RbCD4oeIsV$0BeSi^ehX!wpHr*C&sjXUorbhioo56tF%Wk+W+IU+uP`k7k zwQd=`toDIgb}BNku2z5RPMDkkIKR7 zxhA9z+Pc6=TG%Tqy5M^jDW_BpAWdp=%Tgo9Yqr*lc-La}Vhr|`4(tgGTrIsSAh$LSTw zKJAg!ns1?3b(c@CP;^&7?~##x-lJ=ww^7^MNTqhSD{oio?|*IZ%lvtL5LIvre-T_! z&b_UuqRf!X4c8HyUbW9}L;N-SH2i&AIm6!WfoyX<&Raj6|9#?3R zf`3Y7$E|DNmfoW(Fi{6&U4BZb)Wju7(8Z-by7wB^hGiZrEmAp>b(JkEh24Zzf=iOWlMT@UzmUoh-by>p48 zp|x>^N6m($WuQ(57(qNWaU}{?=pb@gIDZIP^ZUyEyCQ9bQj^vX zN`4;uftcVx0OVQqy5M*?X0P;Umw!Xj2H3e_Zs%EP9o>!2xD|y495G8F#MGO01;bY< zHeLlG28Y(mI@c|@P`4lX^qv9mmWD(ZH-TlVJ=#^46~X05*Z@l55aNwsHg&q%#ws{n z3r=q;2(P12sj=}ISg41EJK;0{QfuS2fM}qz?$&Vxyxzt>z#HIXXnM~urGGZq*bh)6 z)NSKgDS)1YQF&er42i*r*c1?(ePWAJIxq|eMGtuOh+iKH>ZnWifz9hY^0jBZFj-G0 zG`<_?gx2InItjw08YXAlT}TF@EkUu_D>nJXpdbcN#Q>-e*mx6lGHBx(Fe3yOH?>MZ z1VyGR{!Zi-KvP1dO$yGGPk%WjLk-*sHP=Fq3WSj=tHs)7aK72bbs(b+rY%9K6&ee5 zu=Si2Lb})v$Ie$Hg?!?MFw%S>n6<%BTcu{DQwcouh z+NMjL15yW%JD`rhrhcEenOX;Sp>`i|ba9Jxmw1=7na7)98I_-vw!pzw5Y(Bdi++&3 zrMSEr`sG<3-^Hl<0;*n2ZFH!epcs7V4>(~7fZ|Ad02H4WJEcCcMd}s9(pE7db%`6K zFptAveWVSBTB;A|K7YTi1j7-|8;&?{78?gV@{JlPg1iZp`tOCd4(%}r@oa|GAl9J| z^Ee`3<(w|mEN<{pgBqRlDLDVX4=uu{2NgK_?ZEA7k-8&g>Ht005$Lo5kkjN*p@HKj zc(IM^NJwZ<6jYBlFt^@J^+4{sgoGSByt!+?mgR~RXNIR54=j|b&#P9+eXa?Gu4Lc|y zyMRCsX$K?hEPti<2dW`4yMWdNw9Smx4;KuG+%6k$f%@)))-g~DuTaRzX`P;gyReEY z0KMDBIuN$QmO=Wi1<4>#+ySCGJsO5rg5p-C-M}2OaTu8Wz}(#`?L(5LJ6#<*0P=P# zE~Oj6od!odGKNMk*tiR3OWKjN9|E*a+AI2{Jv`pS8h_}Z;I#a`^sVDXR0SNteL-mm z(W?rq><0m~r5><3(0Vtt!-Moq&h^W9DUT1$pbPwMP)bmZDI51}gWoAgIH))Tn$z?4WT2b?Jq&1e9{m*5 z5THi@HRn+aS~H+WA^N$w^Ov`AFCbAsj)kNdFn@1GQE9JdW$mW{r>~YixFy(l8)SJo zWceN^%f}(h(>y-z^!)9x1oxC_)T7F?T-eJYdYOI7SE>4iZl9t!7YoIygK3@J0cPO# z#)=7g$_Pm5g~YDl@jal5*2BGa7OWcuFHW>dpN5x^T6hV;^^mr@EaZ1(jdY(MIZs%| ztAD_i`<&|yEwmHx^y#2)0Cx(5M0)Wa^`M&dGDLb!Y@A!)73EOk^sX6 z!vh1u;Msf;n@cdt7>~{?iuhhOr+6ikcL$6WMV!Sn}1V$=K{TS?=BbvMg9&hm>1;iF7jnh(ca-A zdtya<7c)M^<3)Q3<#bQe_;cr3%|mOmGZK^5cE z94uopm%vaMhvuxD$)|tEiEK`7Dq$Qq`*p_Fe45(%0pmuQ{9|k%@9up0N%%d=@P8cB zS-|%)Im7I?fFEGbV{Bgm-^cI~mdgUZpW$(4UjaYN@GP^xfFEJF$zoo>4>3H=u^MOi z5VQLziv>sV9myQ^{TeLwPM@86sB_ofXr-UI@WKl_!!Ex4a_ocG+&2TiyyNcozA^bi z@Q;4({oEUMAN`YGaV1~%ym8MjzJGV`3xg9E9(k{JbX}9Y=Jn>`x6qX@z4_X2Qqw>G z{A2e%@XqP~$UgWEN}g&^9>4y~-e2fje*ETVp1aX{wC}sG`+E=U{^=Kg`sJ5@HY@!7 z{U1HlasA?tKKuI3`~KwO%}0l@Pn(r`hU7-L(8Kd zer3&v!yP9(`XBxNADsNnUw?4=!V?{bzx@xF`qLNIlsxfw!m88jAN#@4$KK!f#qWLG z`{*|pJ^Z7VOWz!OX-8(1_5%3pm|F^Cl*Q=8f_xX}xH!JWIVg_rK^D{T1^F({WpTcX zYo$0J{S2qM*v{tkT=p>zJ%76$%(iwIZH&_bBgF6~7>$fie;Zi+((|>Rn?I*Z7=LAF zE=PScPo^j`?uv8hn3bjvd|Kv?{`0qf{o^+R@{T`iqasIJjL zGg3_W3O8d{>+MHtVbCuWaFWmtB4Rt$TN!`{AFHV}JYH4;y+PzmZ@2?u%Q$TKCYz zN2j)wAFp}f3;ut^+@S|9_`h@ViKi~Txu$FHir~zZU%i+*b${*ZJHe9APRXyHeel1( z^49OKdhY4%yP6Mn?f>p0Uv2sJm4BPr@~_)Y#W(dmz5K7`p7o2gX|&u z$pLbN93?RlCw~btPA154GEGj9`^m%P5%M^Bl6;9gLoSj_r-be*sWS0|XQR000O8OlD72Xsk4atOXwc001|aV0Q=?m*DUP34djB zY%XGDVQq9+Np#y*mL>Ed@f#*&P@pZ(flX$z%m}s^$Fl7BTSJ)1juOkx z83Oc>#EIh!rOe7y2~w$8No6QkPwuX+UT2d{Z#tbtuX^EiuX6gFKBs%v_kDm8LpwSL z0`UL)@4xr%eeZqnzDFM06N&8m-+%F`BS(*TC-z4o+QCR9@^1r8XD;8&73vF(O4VuR zoMtszsMkE_yw@L0Y-+FNwyTIJCFYQ4;G>BUO9nQzSJ zT3)5-Hh6h-&{YP3HA8Ij_~II`MEMm#-BG-NKpP zQnlsIv$JlEx24wtw`!%3myspU&NvqmPVMaKX22VBZoJg073c}*HtH0J-cr8mI>w41 z;e>g_+R4|}${+`ZB!4>No^#w95CwN#_;xPetWn-z)@wCutF!X0JsX7ub71g5dmxv0L(y0pWm#)z zTVh~eVZK#6<7yOwK(NoL)t#EBl7?sqRW!tQJq5WFa5v{VUQgZaLp(qRhD1q#@|9w4 z6%JIp(%OJ}GJkakDsE1OvtB}~G|9@|{2Y8V0&YuCq=ZG$c42U?3*5H9`a-?fs!H4- z5hHPWrnPH>VwLy2rrT4g_Xn?14@jobgL|Ro<x)Yq?OencI-A$h1J#uPKI$CjM+WxAD zo!*e{Oyd=$8`7Q4X?S0#P$x&pg-WU76gPJZRST)pHdNc`bt|Q?P|deoXKVV#;-(S z#j@kxbbe1-rAc;Z_|W=vcy@!f)eWOKU{HoD#qRk%a@TmrXs}^4Kj#wFyJu|ZD#*6#^AEHg=t$8+P2i?jJ7>1285~DK1a;7TZAI|FMkO! zG9%2QV4fIZK95I@?n zB!0?Fnc0TK=O=V!XrJ%I#sfnR(}twiEDl?fB$Y@K1AkSra?t{E zDI&>|)SpmEb&An{lMUFWG7ClbGo|74TLJKHTe%byc3c(7gfLUIVfGSCybWHNqd%|% zKQIe8n1sWa`NN>lhQHD5kCi3SLxGQ{;u&o0^V>n(g@EP!4*0uBnm|X}@cEsvJ2CWE zrr8)7Fid5+J+lil>nRd!(0|rORB7da{I3l|=`L>Y4Tf?JDq!*VuaC)gLbkO6}U zZ8WJJFtxFac5u?LZ5goS?*C!gr8a}J%V6puEFT6_m7jq?*%p&YN`Hj}#U8i;5j#v* za?x6Sg@l?|G~o0eY`$5j2(rzAlfsQ>CWmyBX~S3a0n^eBkDCU=BSR2~rEoEYg5vYN z6s;jW&a&5x}3XiXZHPao|Oeiv7EL)+7*(Gv!C}LKVrow^gU1ylW z*ZX`QLNA2EH|*Efn}0{liQ}XC`iTR$tcGOBN72bsQYP+0nATOU;TV8AmgIcCzZHmq;bY<;7`H}2NABzu6~qGgCA6zm7V z_69Nb`6##eRzz_VVug_jkr=@)z0bK57Z@rg(wqi;VRn{6Of3JEch5+fOroJ9Tb`50KY&1gi% zQ_^EZGZ}cCL`Ka3=z}nLD$I_9k`M`@Wx=NV;lLq;V>>8%Mc)m`ZJ|A63I+5Pn7bGB zy=7cQ?lFA`F@HI#@6d*HOW|PFVeD#A6ey;LDdnewl7CF4;tq|6^qmUdVN6FP0vKi~ z8dmsD^bU}UYPAT!xP!phMPS@!>q&(tJHXf_!MGJ*q!gaot=|qXCJ}1TKC@`s5|Sfr zNXVFR=-hfmzmwbn4FL>w9Xq8a!d_%+c2JD?trE4&gnz8y617={-xi>@OQLqWu_U=Z zlYsp_0Yw4hEEeAZ8G@0X@5Ht!5_}h2A~=T-Ji6~jfN4DK^9jKF2x50vjM|fmQtk6e z^sInMy_WtTpwY0;ryw^C^4l>nEhf~J@a3&mY9dW0=guD1@+vaz@7TA%t(IP?MyFNiqw4 zA0+Sg`NOmb4Ba<2qTem~Z~%O`N8$JM|^55G^~ctrmVeydF4)vhK+ zk}}38Vcrk2-6evFvLGN+raT4l$K^4Iz>Gur6A0sNbTjzv?G^?I%hQtlK7SG?Ir1Kx zB!7a|i2yuBd1T9@AycLA_xk*4IP?_2I~)>6ZgvWrm1kug{|!n|9NZB;KMm2R@pvQ_ zfwt4w`;OoSex62A-4#*zxX*KRwgS^9VzaXd(eZXcF{z-?0RluoynH^}K19rdUVov@ z+lPoe0UdOopz|9zBFvHb;mIOJRiJ&wpnq}{GlOCYDdE}*8*7k#1;Kv zvRS53DD|-DnNj#ru&I2B3M89c6qc+qHRANuMEhywG>=z{r`sW|gGP5D?#EyirP3pa z0^NaYg-Y0?K5rn_4n!Us)o08D`hQ8&8aE@!v7~--a8@hnC$w=~gZgoWABX*@p(jmt zNI#+Q86^M7L7vdc5SYhx1Xl&uGq}#+s^VI}Rl`-M6(Ts-L0;a*7(r)3*Mk!k-Lk_$gB!VuGh<(NF;PQ>v}G5Pl|*__Ghs0EC$cYL1YTXseGNo*f|;ZMgR z5s~Ev7GD7V_K=e7}l} zUS{DzotJ(7GB&G}m*wpDD(3U7qVGg1%( z&-(mr*!UJ~Y<4zkpMSrDJ?{x_`(@9kh3M2CL|vc1ORJ#313)hiUf15$FKGw$mo%Y2 zr=|4^+I#vrZA?F_E$JQh!MT~r#e2{>x?jJ{jxaNs(Jv?E=n_T`00!Bp-$y%m zQ)2Rd@DXt~W(3wj@`GUgE8+TAg7qKLdI?tu?zxU7A7OHARDVB@GI(B|7BKcPkU!J8 z;JnX&*FAQjL&+yla&T0C6-r)Z7NkheisW;_5k*RV8d&&RXyI#tg+4|PfsCX2MX0z4 zJJbk64=@qKiy-+Y`U@y-&nx_S%350SS+_Yav}bLTdllwa4dQQ`fypNkUIY!hzLO(tp>;vhgAPZI7umi`{N z`!;=ZiHOg?={oGagT1JZyzBFCVcQkh_Fl}k;$d=JWw8Id_CfSd*l+>}ek{w>`zTXO z3SVlUDCr~Med>lP^~0;=L2#QyNg<%FqPqtpN66h2hW-rIKL49g??+PahtT_h!apDf z68Q9n)qj86W%Y+5-0veSCi6dradiKk&;Jf?>_xOcxuSo{@I|ag1bw&AClLKW$WY~} zn65`0{~i&W!VM+kK2)(!gDq%w17`o>7-kjj`w?jT7W1Ep0p>@J89b}--v^`E=W{|p zPFNg=nm_pb8fN~4KzTQqx!1j)L(=pZ_yV`7=!UdQ|@oiTIr? z2uV8X;H2@LOvG=Ih~Fsu8)B^qkpJ496yLUI{-t~7J8<0me*gdg|NpI52~-qk67Hr4 z=zl^Q2YXzfuIsiA9={kF!)TBQHYgZD11bTp1c5tO_Pg z-0f);hZ|#!n}jZkSGW)%SgmTDtlIEIxu+ryPz8f(a{e%i(MF5YE>7qx6{FtEUw`P7 zjl_yolUel(RIT)!i-E7zH_q3liF*vHG|FEp5xo4JrX}h~*O`wsaT@Y2!DLE}p4T5Tx3yelQfGLzxu5uTp(GVdELMJ1-+HRG0(E98!D#i%G zO;)`=Mi0}TR>U#9xKk6K#W!or*@#^BuDdB<<9qq?5jCI{iCl14u)4cI}k0u_#GdnH3xYt{;&_c0_XkM_1#i`&n*CJS8YY-rIakm?{?Y-gmFj1v)qlj)P1XWM z!Dj~a!csSwoT)3w;lKk!8b#&BgQ%>)@EEBKgB}W!Dg|!~rtRkpBRi=XrF6>EB&Y^c zff2nQ{HdwyvXhtNi+ zL%cI!AZ3po>5QocnhO*R8-I_PR_nvo=yR;b91mNiBlH4}JaXUhuKPZ!i7`m990}G2 zNypol*>yWH7@q!X6rX-lkWO?_y~av)UjEWCUOYx^tY*fQUP~+zvi=U)7<^W%CtIf{ zTZ?3mTcvtRw*C>aF)p$v5Jd^R*r17(NO~{c*vTO2ln^GEg`rZTIe!>M@wQm##mIi) zW=;q<8?k|_u&yzTkIBi0U1TNR*-6$WCc}d^X~bP|k{3@|r6$Uy=@BlKE-s&FVl{H0 zt$I30`t-p-Vq1?=@h)pHroXFgH1V)=nK(DeVcaB|cm!)1`>PhJMzhoU@_cHQ&QJzt z9$`@JVsKUyk0OHu$baA*LR609#m_WRL1hIh&j(2t+V6?l-|Aci!=C^3p15F@KBvJy ze%9vJzeKH)E| z(j^-6(jzf@xME(`#5#;wi7~&TdAT--EX-)Y&9T|^AfMwHe1AMGy#deG;mR6_E9+}b ztjELEc=#LKRro^C#1m*ZVW@OP2u4xE1&h$ZU5pdFl3knY3R*mc?RHhWi6@VslWRfJ z4eT}tj@g$=Bk*@RN^>CTPXE*Vg(V~RQMsv8V z$h5}Tf3hJ&`hSiWzoj<#D9~l61{!$rJMAWJoNM~3w0NL`7jIaltF$;bHL)QIzgx9p z*Dhj1c_fMP)58FtrU z4~9KaL=-m^K=ER@1By4Z@j>ax^hOk4oqZ>UsUMm7rg{@Q+Zp8#%!WQwn7$W^ndvCs z-pq#LKFo&t>8r#2m<>Vc&-9O>3}kwW2kG>W>o`~$9*i=CbA4!DPcRNtAEe7Glwp6Lg&87<cwG$>bh%H|aht^S z^e(3A@UyynpKE8+R<|S_&lH_c8^h0|I2fLXGGFI&0mBPX{;I=^bUqg|{Yxk>GyN+l z1x!!zQXO8V!*A;FTMWOAvRsE(=xkQ%>a&{Fjeq9*jxP7LI_%5vI+TAfZW~bE)#dU} zhBu;Y($(iZT^-(UhuzrO&5Q%pf5dF4|6-kefX?T39fv*4hW5!m?qP4V^*QaggSvaH z(%~9i{SWK#QSRZ)9%p_|w8e^;OLqnL7tS^Fh3xrShUsSw_i%<*p~NtMblxI3S1^=ROPPKb$Mz-DZ)0}!o6fR<>5G{CR+e*{ z{Z__%3%mC={#%%SGrNN}{fEpC?Y|B>{eK5cPkYx}=f9fizd@1O^kdRyV_n^FmkLwn zu1y_3F8wo$F}}R;_~~WiPM6$G%3dBmxnIkOFUsG4bBA%}rH1LnAzgdFC0FmfJle50 zV?e-*;wN54qZb>8^LMl9rju*l1@zQBdeQdUP9jxa_sj$4z8Cxf$dH+LPdS zE_mx&4fg`?(SNou2>f{R{*&}DzI_{f^r0yqwcg?~UB=0)h7ET2%b?R*PV_>dRL%Z4rLhHB0-OE==|V zJ=NAUT~)sufYvu-@mlmH+!7iZSbc<~2d+Z&M_#<=bqJ1U9s7f_GP`S$^pv#TR3>~v zG#S%s951S;aodmo;OTbCWv^J8uG{onrLc~|dFOSzwtKt%Ezi(-$y**dUXpv* zSbPv0)h{rd1T2qy1^OL7=W#bC=nOKFvy|@FA2uWNI{l#P)>JbCDe~4?r{bEc-^W#$ zY2V_aIzEqj@@?HmYjKiNMBYMrcIf|FC<_9ks|Z^n+ynP3>ks*WA0zU2AJme-y}Q2_ zE`oz)Yc?uAXeHUhmFA5!^<3tY$0%9y0WY&Nt$w8s&Uyn5R-N3-GqrvO53H4WvLE!d zmd~!!&8#$j7~-bsJ#PjFdc2k#gUM9BGmOSu=oERwGLoJNdu+*A*tyf~kL<(u`~qpt zzNei6S!ZWEuod*crAM+A{Uvp>SZP^j)}?93!s(j@94}rdOU4?4q-SUjqHzy3;Q;fI z+*c{?=$|uh($u8|G!Ac$Dck9N1Z(bvsS#Lbr$6`5_MA>nSSQ}}_}6EL6)ggsk*U?= zS>lMq+^!b$*-h1YVGENZFI*}~N%#>o+8JwBI2A}`%3)0a&Lh2~^}e3uxl0+2x|iaN zlNsfdf}AVYFMR3uYVGvJAH2(vz@D+s40lCrb`!lf&&kVB9|?FElFw$v)bHGw-}u(Y zb_X5njcCrll5YPX7gAdA{!&qKb}IjF-{^SjvS?9EL8YMBxPj&zZ!1%Ir>(=o$!27s zVPWl0wqmCUxI!G7bI*fk(?GQNQc#|hny-S*mN0<$wk?8k$0l;Fo^vh?NG!zpn_{hE?gadVpt7W8<2zD&GlirdM2O7wONUvT{8n{zhvalhz#C6Z-@W8}zg@#;#n;%jt3^H_`>CZNYL?R<*ael&X)XcofRd`SK?89R))wf;K@k?2q9L8dyQiwE^8 zNogkl*RJ)um0LE!C)QUn0nY25!63GAj>M^Q9Txt2&9?_B7W$B67;`%YvwLG z7oz1JX?B>!Gj464dK(mj1N>#5{xhMUzjrW|-H^~`1oRC#>6s8u;`ESM2a3pR(&)Gm zi$9+P*q9QUTxb$Anu0_;3`?e10ydf~WxTW*T!u_8Sp<1RaXgy|mG+RZ0r`vBcWo)) zQ^rY(ah&XK{HGbs3$JI;KerzVq#5g)46QUq1*PP;qf;bXg5sFAQ>>2!W4!Dk%S-0B z1l!`|KjijFM`jf7FkgYdpyD;_X6VH=g`WS+9y}NHn=w(c$oJ&F(Rk<^X3&uVE)QIj ze5U(g!S}q^)VKdy5JON@&u*6D*g*jSX~X;9S^zqL_>YE6Sw59s_8u^mzzyifW+l!b zf?s1%=^Mcw0iKaf!H@HZC+1gEYXl_{14LTrrFA&jLd*u|rKKEbNJ!+-RaadWk{|}8 zo!uIB_YtLyyythxZ8^3YJ4v=e?7XGc-YiD)LDu-oEPbaJHrtAD(bY&l*;DA8F)*)3si6q%vKgmQ9dlLR|iYE(s8-g(bV>U23M(wkfe zI7zcjaG4t;IhF@1(wj{&N`mkJKC~P5!KIOm>zJ5RAD&QsFj=<~^I94!^|(J8 zd9MT$^46ZTcg02g%`8GpahdbTvhp-U{eWI$ZyM5VkHHyJln(3}*P13WIo2CJ}W zs9!8paWEsn^Z~ot~(ZMBJ zH?ku~6G zArA=?6Ggr7W)-U~(Dl&RvBPnA$WW(eH-$Q=(TyORr@#M3OJsF)rcXzD(B6lA;Qo## zD{^jMsW@9&rO%x(lJGF?ZRbU!yL&c1#DA2_>uI2>(p~Xx%$gVk?jyzKMyHe z5zYT1*+cmhn?B3+#+)D&ABtehG{zV?+f~5ujQKrKa;ga{LJrgqDE3f@OrwuEO^2JauWTT#(?!~*@|X^^O)1GZnKA^1dU|oJj+R<{lcd6&W2`d%(42PJg#_=8n}sP-J(kmhXqeytKjS$Yjz9+0laEF_k#$`mVst zmL45n##qmd2w#Nn4C$ha64Y-+k{(z($T6kCM3qV0a)xO0sBBp=vQ5|-oP)k?^^A;v*?am^5Ugk)Bf=tApq`OA~=29W2x+Fj8)$KIHG2}HbZey~wC-Ra+;6`7^H)}m0vYF=Q5Zx} zV7EUGidXy=ND5Q1z|ocss=a>ou9HolDi1av!7)cb18I2t;~c^msV{Vv^Qkjsa{lO<-lmZDQeRkd9ji-rL!w=xBhH)CqEJ)lr~c1j!OzVf5IT(;`Ru!s1EHb%_~-FaB#a@50l zD#o%~kW5W6g@2J49gY6D(lT0ewR1uBFajgy#nLZpas6tHr9%tLg~EZznpeXpp0NH# zjIKkVN}S!-SNUX?(urhl4;PK+n_kV5D`Cve%wS=@ZI>EDRZGT!`FZW3ieWb#=3Yvt zNE~_{e8&C3(1la^DC}046{kl5-f_no8uZ^_+;v!Ks2OnkrhSTd>~&bXF#+E^!xvIt1|;?NI&=XmVJD##MGe zrX7ALzXOCtlPGGb=C71fm`?2C7`4h>q>h7raOXiND9sLG3)@2C9|-X)>TD6}Mrk9z z#QLlHby+>CG`ef%x|X(X-7vdi0$UZPHdwATcrWE`@WIb8;%k?RWrcN|;U{#y@bqn*#uWChls0Ox73K2mp zQ~f&jQ(RyxMwRfg)&KgnfP=P*@-7?E)Pc$Bf{f8a)de0y5LbbYox`~y{)T+(DuRm1 zLq$A~ofoGn43$7CfPxlDM*Qo+i_|>P=vW;v2YUg6UmYM{z1>4%8Vv8$Mt&7O6p@yP*Gg|31p6I}jYio#RBEsmhNn z>~A37T$LR3CfI;TEf%B3qEpR+ zQKjoVX3N5QCUHujj4AKtf&!PFg=Y7p`6%{pP^h3mKaIlKlDg!T+LTsF9B>$2W1M@9 zdQ^y36fbb)AmywW$@7Q0333^`7G!OB@wB*Y>kF%|@Yq+9goUd{?bx?pDU-y(Mr3_g zniBomAlZm&^$m5dm})?d_|>Icx4tEB)b_CrNcONlk)}kSHWoRja=%@tEoh9;D+Fhj zn(wJB38*YdMR$cIeA(7pqp$5SsBH^Y3iVxh6IUiFhte+SXj zFLg>qzZXFwLgCHm`Jw%(PpcfLE9SxA$y=|O9AH&lDR@7pH~?K5SUf%X#sMle1HLr|XJO3y71;zx@kR5&v+#9|DyvLy-Ss0RB&*HS%A!$h2** zt7o#vJSP}-)?UTWbJJR9mq!b3Hxa5t0(>4fgZ2fYE3FUsm((v3Q>jnr_OAkfI*IqF zhGXgD)8DkJN5s5)BHyC!`)BsI%pJo`PQ6X;pF5@nvi7m7#Yeh=+;iVuUS7`X%L|m=UjTgF5 zhEMW8K8!EOdYz4SsP;GX6%~bm6Lr7q#ebFl$t%BCf}UqQrcY~U?JuTvpyi|!y6%L} zWAA9ch+)U=DHBttj`-x8?K6`%zli3b>z(0DLS4J)eI2&V9By%h(&wl%@hq zUm8=Fm*QA{1njM9`Y%WCmO-vDOs+aJA0^MvR-+o8$$FO$ge-1T3^ z`2hmJZ657yYR))fQ=Y7r-@|@$!<*f6)b_hs*jGy9jKOB})!i}PKT|PR&)07Aoz0)y z$li*doqDgA(BowW&kNqwzYaPZp#?pGk37MR?!ve69@b96=fBJQ?3|AqJ$HsFaf~&U zx&27Kj%;IKXFSdckzELb}Y{18JM6WM05@)gMaL@pWK`JE-UwgGr{#rE+)AeUQ%W zQ(azAop?*d(1AH|Y^+jeHU4So3%pzgowWNVm>$w?OeL;TBBPxjmK#$JdT}QwNDdH$ zSi!#nJ1NaD-wJ?DcM*13h{d}i~oy>|%Zku#mMF^Gg-N)yeF9Gr+F)5jn zau#$XJdY2}NstdsA!5iMqKULo2-vg}uV~*Zuq4z`_T|*#%m8rM~>^U#3jeS42jA_#66FTsEDV=TmOn)OaQ#*<#eR*v_+Q_9?a0! z;#ChZZd(r#xMdBf>=WP*ZEq<(W8cI16#ax^6OC0Q zEYMfJRF%J=m9S*NA-?@1C1610EELsCtDcMJpg=(6;Qsf81U8Kx4C-Hd$Y#?GqxI_I z@Xv()YmDz1yHys?IK@RKkPMUii9H%stnc$5HjK=2C-fLv zSNLAG3^y4X+Y;FCIvp&aBFR?hCiNU@F1RWozvS!tKZ#LI-s4fa>ShW?pTVsL=6MBs zue|e~Jg2!uaGe|Q&9{-K4;f9h~T&roa=r&iCh*^^cfP0CJe$g&&d z!X~+wN=oDe@|LF@;jKER;)0SgGDtR)OR|(FT<2NqYqQWp%B904n%Eww9W=ISuKiO= zWr`uh)Y*iy%O!4y7Q-_Zq)G72juAwTxp4J_Z8m<1F1tJcDhD;dS<}HWqRJ6(@_l5s zFbgH4=lp5Y#i>Mr3>lQ8RHm6zlDeJ2gulW<7>#Lp(ZDRc5LBDylvXCZanpc|2_BBK z3Alq?TE@?f2^5vi^-=vseXF|psq8)LV9KLA9Lss`1gb9i=;)#uw2Cb%sBH;GPdRB< z5wS5!gL@3Vlapn~+mf@ORe4xTWov3T>u4<1w$YLR&DysTT-?j~qzW-)_Vm%_ z?2FX~@j~j~*cmJId_YZ^kQLZHPz{sOoM7eON-{40}vNBN+zv(9_k-eP`GjD!E@`BltF2Ak%y|Oy|5uWf! z*6vvcQ7SbBJcN5h@FUaHw9|F*kv3{Rk|9)glpjIW#g6|$#9efgj10FH6Dy=|nAm1F*+SE*OoI!5<4?^k*GxU%qsI@EVg-wrOzLEWCE2lqp99Z_5JgUjqfuR5 z;o1iG*w-6yB#E@7ah?cymMjCfqG(aYZDrcutOKivDPx}^h89@yOcLa84f)K3M932p|K<#_tnMv`?NySb)PyR)E1on!xL|QOpN3lU zsYiTaxRCcOT&4c1gh}{2+G^<+^m;sajvb`QxWMLkQvwwJisWksh=Ff}?ry^=m(&OKtYgyOf0p|?OxJ0G?+Ld+IW`AOLpZvELdC3M zpEfO@6H~>+K(40rvtmh6_aP8COwHv>ywXGej37pyz^D`aD8E$7qY}=|;dMWiGb}FO z1^V+YpNHt~dS6D~M(up){MaI<5d@bqUM_1ipN=2X-%{;-_edm+HQYayI=7z=(*(V( zQojN2$NPD)2D1iCcIo_jIUY|>lD%IkPefk_k7<7KzOVP4>aukoM^uJtI%Mw9p{>1l zE5W{QpCzgvm(cd^_MI+&OtExyW<+i!ftt-9vywUsALh=|sSl4k?DyQUh)<&8K{}M8 zxIq^1l)gstlU=Ml0vu{h!-o2XomVkcjZvzL!efc!lht;VWM?F7<>fGwQ4qXlq3C#^D8eE)*G)f@*%oLcqFQu%(N&Kb1K<;+lX0BM~W37MD>ax6q$N(9y1IH|L ztkyqWL&o<$hZ1<_NN^Mo7rf8e`b%w&jrF;gc~`gCq0WEtUo*?44^@yoK4-R|IW3Be zIi|MVd1lL}?bVz@=lkQI`Lxw(U?%4nkB-jXLbq06-jHt|?`=-Nt;y@fvQ-f9IJ;~O zS<^IV+jzNYtg>6kT0!bsy_sAT#C%-Bx6cwx@`HZX{QKGWJzzwD> z5dVSU2E!YYTraB>3>~~RKv*E@p>+D~JY?#t?DP8<*niW53Z!xDY5)F#yRiRHG-6`x zl=jmd2I2p3gr5JGBdpQzwZXH*>AmxAxx(l5J#aoJm*4og@21;0q=3F2Ja;ZXKWV#C zyNo;AliqtN?=}81z4HFmixYPhP7$RFyDUB=6`5h-KwAZl@j``} ztkFvJcU~K%N)`4AKAV1eO&ip4>1hm{J%#}E581SB*8heg9^l#n8>tcMgT}JwiZ|Fg`5yo>$b+B{bRKM2ahgL=;Rm2CZ0@&2}1>}a*O*|d=Q8W;RXahL}1uD5;3t(g1;EzTr zr-4_2CCU|!9T5&;d4AVWH8HRuA6uZ)^l;=C3o0N$xapBXhco5#H=>wt%PD5%C(lXJ zS4K*ta2u||f;cQOWq>c|@oA{w{6#pz$kB6Z*sOr@(1K8H2+Cj+0TziE0`Ey`7}prj6R4QHTme-EVTA=D+=YhV z%Q&M@tOXC|*N0F-zV^KNMb)?}p=f{{?(GC`G>F^2G|>uMzjm+#2K?w0wfKbX)0hG9 zb{S_*2>Tw{v!A@08&)YxiE=9+pP7kI`CGd*^Y-~?sxM;*C4-)_8~I3$az?SPKj8^| z2;;8uHH_aC!KUSN7>=FV8}#g&o5u29AK&(V+9MnK2HVJP@XjqLMsxnr^?WEB=pmT- zRR3_eAW~$?22R4xf!C1+Ru1>$;`rI6HO>Ed&R-o6WZ^iJMOSro$?k0R zbRL7OMvJ+LEPpZSwOHo#W1eG`XuEIITM=m(xF5LK;alYeysVFyEZyT+p(}*qj;Yue z8Y=B*-A8el1(41QK1Qgq71caZ;o%ijCPFpOAh0%O$h>g8sh_+&04>?1qmY7*wJHd2c>CJ$9bDk0S((ifusTiRP7BD=pEQ^dF zPjnX7)e}ZkVc5~}{xCRW_|?GnvK+P2`Sh_Hy3pbTynLp0)|oDGLSBVGBpTn+Z} zeazPy(to}@=L!;}E4N-5{&-o7^ty9;X|Np_O-ucJne6B<+6CKpi6U-RdkGGevihtWF!g+=9_1- zAwufF(HNG*myS0<%#&NF=r}A1XzPpVE5GAvLZE8T`ZDgXICCo|ESWErxveef$9d&; z){e&cDqiS1YR=sHeDSgd{J!I#S)1bin*RE{`uhCLd)k&>@359f6qeIH1|B$DIW3o$ zQ6X$eU<#=OYwkl93Zz)(i15b3!g#*T1kaC~jaVZo0ra)x13_@z3^=k5+9?jS7z3=3 z+QNJ|Yqhec0u<=e5u=OInY`r)k2F?1NrWn^dk#FP>jjh|<6>eN)o}=oTIoe^3DD&? zTIAUg6zI#K6zD2wyiO@D0ADtCKCXTY_s3parIxyB;0Q|e9>B*f1gf355d}5K`<6WG zz>})X_+mB;>^BJL$|07d1Qd91@xQR7Y-+JU;I@B^-y3m>nkGys_1pB2Ace4IG-c+k z3!tpyYP5zXCm{Ts-fbv6#yKV%@9(c?s0l6_i4;+i3nR-=aw{nW3h5_`=f{(C8KJ_u z$nc3&Zc`G}xKNk6RcU7bNu%fbf3RmvA6C?ljCK4*peU39=nKSZtjxm_HBzEdhI$&& zp$nva8^pM}S(E$sDsiCrRMBY3H}_qfBsg5V3*_i)kIjV^^z5JywZ5ip=A!H2Ux|n8 zrJRyocrvEPZRDwdusf)fd;bK}lvr9C_ACi~Dxx|_D;W2cl99lA3@H%>wKF{2F~ry9 zCRewkR}I&u7D%ThDW25d--=WE50NO$q8(6CF0~L$&s0&_qGRLpltM*OY}rz=m7HIb zZhmA3(Tj@`$6X2z`(%=)o{@^mMTNQrEX-y*^w%Qxs%7+W)X*}z zY;cLaQ;RdB+7_wW%*xEl@ek1mm~FTM zDL%ep+OIM%#By2n7j<7+=6VnzVFel}MXfh!Ov;xiYqyMJVLC~pGB|SD-yu{HrG2C@ zh!{W1QQm2SGAfe#Fn%-Mfs6&wp{18LC?o5NID+k!F}xEZv8=+vxmCp{((tE@#Re>AOxe1Y5v_AEaDRw%;``;+M|tnG@QR*=<4B%lJ}x= z=6^>1W(?bemX&FYFF_}nU=&IH=#5_pu=w$VCwSjq$zr(y3~6|-Z+aI}1C6}?q};y` zpx%s&C#d&=QL^+`SJ-`bLlHV=`u*$C(x54>J!8{q;S+YjZ?|bLSdiJmD-hnGmIRcq z0z}bbsR2m_`Boo<<_blH+{s@iB-A1Ru8AizXGXdWoFIP}gwEMLU1DR`cWmg9*Bu@c^Rw9Lq)M;yOulyg|TYJv$%Dlr)4w_*S9)GOq8Nx^6rAs8!P5 z$bGah)J+Rm9>j(o?prYv>*F&RfY{z=*DOcsPOt&;awq(G?u#gtxH1Z9jB@`P9=<|V zE*og$+d$tK#iNZJ!M9D^ura=T)xzB^Jbi))*V!#>)yqi@o%3hlgF}--7q6*ZswrOd zQB=}rSP5#!?mhZhtvBu@0E6`HLm*7_B+xH!BL}`e@yA@N2)IoSlGX$Pu>Qp0F|y8M z_r5{dNQsXmT9b>;!^B{HT@PRG1BxZ>hE0`W7IOQWD+tZJ?7@s-SqYK63M#S*VqIGl z{<`8Duwx0H2mvIV;SzMuA+I zg086cn+pur_(sJC; z2-2(QLjC7TJn|n7VQhj28{W;>zaxLcXDWyJHjpx^EO~8Z*VM^%hG7$T0%rKtU`BNB zgX-=QQQSifv1*r<0J^^4DATwaV+JFBgeEY=9(48WLDqe=t|H$cl`hOR#yB1^u0)yI zEay}$?gCb@n-TXn~{*Jd4K;QK!{{(dTx8t`xPTgpI-DgU#cU6uR7ZD3kuD!m?Fpx>e~~hnNfL zR~A9w6zmmRH~IRc^s~M&a*z}DFNP7a;sRojCU7BpeqJGlg4KY1g8+5%7DbCeayV1A zbVm=Gas3ITHsHqgF#mgYXh$E0*0N$h9prS5o&N}+h--BU&ad_F#y~5iC<#I$f)m!{ zmsj(_=pXK>)pr#2u!8fd94Tx5KoQxJ1@GWlSkI5BFn$8D&}D4%;f`~$vSMN4|_*5-=j4(I&kIiOOto3TKQw_pY(jm=$aNy|G>Bx z`e$H<3)W}gB1d{46%Mo;6bfQ8crc)7>~BLUxc06P@&cAW0PDny0?7thzIs>&ngW&} zv>3~{NgE8Sdn+s=vFn^oSr5}xZ#?`_qf0++%v1!2~+MC=+iK6+R0FgWUyg< z3rsk`O`!rM0_H0?(RB1jrtqqPQUwhvgy-1>e|0^zfza>C$EF&KC#qqy?p6wxbf+F z=HzeA&A2_V^z3Bd@ntXYr^4@&;8#mUjVVz4r$;fe7D-Oio-WHrQYHO`=z?e!1MofY z(Z7*pcPHw4vuF3*&@(w~J|Nl@i+UqMy;`Rea7}LeI{U;ZQFN2zWp>+&>pXe8(;@mS zIn;XIo%3ATN^yUex=mMedb}}}HQ@W>NfyUnC~+&0x9+#K%u03y{di^l7VWOM}^as-+g@6+y_#as9YWtnR0gBW^>zIq%2zr`i{XkF6NZ9CeA@Q)+&9z{BN?0PwTB z{IDhKKN%f$Q=swuI&J5a4b9c@d5i;`Ts3p!Kh10YD!KzH70-Hj^yNOj3P-0&ta&|q zMPa;A0{oafoi`AjeH8E9pN$qHo~5Rm)1w83hR*Mc-o0m^<1vO*02=T(1@tmsluovT zUuJV(&3yh9J!&<08p;3)SzB{FKh_Ix_blx;fBnf7te?J0`+COGpKx>E{;0q5x@wx# zuM&vlV-q;`xCk;HYT9)Am`~d`^u3XJKmYnX?Pct`4w}_T8}4AiIb+cYqXs+w{&re9 z;bm1sLjPk9MZFQGZf?21U$k_2R5cS#ZMm^6rR7HLw2xb4D_~DXfaU9B$FqSuwxL82&yBO znmAGr$dn|ZimNxU;KZPHy-YYsec39=BbAUv3Sez0EOxd~LStxpQ70(P*Y25lb;^EG z%;oq7zlNIJl*1DjG4?SJF|rekld^sK!Ze7H3w-N79UTCA;l&jlYEkFhOwQbmgH>rB zR6uGYzBJ1<<{ha;WOsxR=Dl1vHxY`x54XYVI23ruj!y2kU9UBM9Y=PT^Km{c^{mC! zUjGfP>-}06bCbvQzS&HvLhAXLnT$Ol^6a!&iyH~E__%CX9<8!pb2C;{?XSOE&!Y2- z3zuIJP`Ux^JCX4{Z<}vZUCncI>ik}`d}caL?LC|T=CPc1_bW|7{-+O|IDGvEYi0L; zuR3->*JFvM;P%@6-Yx&!i>+iC|6Awj%cx4$@oXMH&*K9F(~Q?w`0UyZRg9AwqeMOJw^_yfzpNy^fcGfMy}y+$ruIm6fj%Ne{etv#eYr#+@U zkPA?Wv;n_iGi_!xq+$Qa94lVc-LUp=zGFT zHusEA|9eb(pASPKDZ_EN#vCPPxayFKGKyuC^H6)CYBeU^uvdey9{q2Vs#Qj}@Sj7? zCQ7`U)NWBEj!O8LN&D>k5BpR5$io{$yu;x8#y6l17etIFUm*V-5wzP&CK&yT2b7S~ zW?kX1(s+vzV1W`%M~82kI6K|$?Hlf!rQWTwB47dXk7zJhPLgeyV33Bf@Sr*}FuTMs zX|i_c9GhFY-tIIAMN{7ztSUsy2`-Stl;9RtX@ci992VzwER^VsbWs^p=hhqM8&q;w z3Tqy`z42g%1+%>}>>sz`5W^-{_zrTE;jxY#=Y#s>B zbjCxSuA&dtI1I=|E<6d+JZRjKD(+NExnd+Kc}n-ckI+3aEYYmk)8t*Mda4WDtJ?M6 zL!p974P`4OrZ=jN4@_CJ=k9I@yW^!bVl_|p^*8KlT`MGL6V4teZ@qYOR}N?x(%h}? z*N)ETVgMIX!$RCpJFa^M_h?%iXgcLZpMf^WF7gUD3@^v;x5?X4LR|HaKWNxBGsi4c zH}*|c%W|hq^inUfZ?}`TQ>2E4OU^Pp7^~cL8@K|6>$(l`TYk42abDAmQ$}ag#%fn< z&lRXm+*7IO%uC$v@RTrqHl?CP zi*moxqmBefYN+68*lW$b?s=)n4vy6u1%~y?tu!im>uK;a`RVw6Hsq?|jHtuA3jYlH zln^2%PREez->XZ|_6%ri$!2SoxH20wkRT=~r0Fyd6&pr-5e=niVU%-~7uWAhOOW4B zMh3QG+)~loQ8d=3snLe06X#%PU(G(E$B@#^xJ|+)-NL?vGx$+_3~Wek5zy9@?X@1c zBdAfoG4pN(3dJW$k)A0Tb!WJS9qrc5HV)AQCIwG|w&KTTOEBXjupY%+h+7CNmRh`Q{kexozuCh~9VCjg?2!f&FE@Si?YY!s7tSh4d_Mz5rOxrJE_8ysMK zq4`Ts1>u>u2-+6(H+noGkM!S2w}t;*KqJ#`)U!zt*mrK&RFrQd3dG{n3VX;XN>%6) zL13cmFd*_>1Y^C#1F}lQUD!v)v?5CJF$8IcNg(rwzc&X^gpEXd(#KOekHGtIw0snj zvJNpN0_b>*6qKo8U#c^Fa#di0oiG5qy<2(N5Z#{jNzK9+VyAE4l{5o?2_4c+M2wE6 zdA`4krDjRt#FC(eBce%_&oelKg*fOGz|w0%p}+}IJE?)fh=*&VjZ_SwiFmvNb(4*{bT`HXw?4`W_nRuK zA;lDQLQP>(fn5<=kr;(=v3pciXr$hlqIo;*gn{Xj>kuwoQ#~1}Fx($;PFR1Y3HdGj zy((#;dq}xjOpiya1dAS|*s@x{gRk#rjw>4r{uEnkmc$O^qcBQp(g(zCg9H77yd6{*o`q1r)as0)q(9<8fxt+ zwT%*xhwxPLInvAz*^!ZIS2_*}`iqb_=5s3TzYFBu4U%&L~U};3pm<^tL4;EM9zUAN+je8rh4kN%_-kPJDFW zK)EKc*gIe#`;gM&$1?Wq&0FHB5;sh6=`jO}G;TpNZqP9{%DDsRW+H(8+iYqod7<$e zym30#yVMqW!}RqhM27K&W%OX_O~hlmQ{S3t+`j=R0|rIU(Db!lyR9_B*G>L9l)ZcO zA4|b$sZG3evDw)4-lzK`M%rs$mvrECUeP1w{PtgOhaI9+qE}_9pVxoUeIs_x?Eh}H z_?Qh8a0>Lad<$#=Pg)zzuV?w@>Hy>tRRxE;)Je+IoCG6GKGN`#0yM4Q@}{%+;6*MEzpAKjKujsP7r#^ z?aUB5J^o^jxmFZ2tgg}omqEVz5vH2n=(=;g7E;0#)=iP4_-AKu`g5L4uX)0?rRs5& zKgu1bwmSxz!u3_XKFjKC4couwS=+u+$kHsBw!E8_oNt~JPjKCzeEHhO+=1)LY2?_PFSDnapW82euGO-gP!E;n`BxS_ zqnqyx_};zGH*)wxjSetO0}Nb|x{i1Tv6{O~yNJ(G9%S3WypH%)9;}zc+}Wd$n{loC z(AQ}^OA(Z0JyE((Z`#uHStn#F`71QClwAbtC(SQ{B0VOn~j*WpfYT+7^|_9S7uYJ@UA&u&$4MPpBp{oSy{*_qHmn*HZbRj=T4= zODiw^?6>6r@QTCE<4Wv~AnAZQHh{r|qw8+qP}nw(V(~ zJF$E9?{!r~UAz$$=Va#lWV0@%*X1)`=T2SfylL04W6gRK%{I7K0oyr>I zK_h`59w1t|c|onUe@mMywe`4jSs5IyG*j>G0Gp^Y6^2gZp`CoLMedjEX0*8d!VGI= zx_BczVpioc^P6t_7F^=Jh)aR$_)#UAV9R}!ih0}9mB0v#o;9nV)bZs<@ri1Q_N32T zLo>Kw^Rly1CYCL6DnKByQo%d}!G_%ga`9fJ8vs+LT)ak=ETY#J11?x-eyS0%z7T%X zXQ$cc;`i%yrRwxvZY{+4&-Oq?PNnR|#X!S+hM_H=3=muAjNqDY-^w$jjS*f2m{JcA3UTEbZ;&ZL9sue>eM2%yU3zOE|l6JB>sJbAXf@(fJk*V=R zW%B)C)K{K5{jtn+v$vYjvaw!=Rn~0RXrs zQAV+J%~kdonx^(060%ao;kdP$EJd<+Gi!7 zL!>$xYE^a(y7ru`W_3+&Q)W8Z<+uM0%lX{Czazgp1+0m?;bLDyh}YQ|kS(0y!E(Ug zJKJ}Lv*ikjPp=bS9I|DlPS1C^almaQ#PX38Lb4q9#k{#%tcm+zPJf~086~r^q?kNr zWrYMZ&xjVOQmE^bY*6u%p)!uN^?q83cA%6Er4<&_bl51Z0=Id&dQmcbGp!Y)6@0Vo zV6HT{DK>&K9Wu*5tIudrNv*ID!cn>5E`m56LW%Iq)GYb2LW?cDLs40n5I)1IkV9>3JlM7q#7Q#C^C zeXfluG?Q}7|ifY9gopsYC4n44MxLj#Y zwIJsHr>}BFGs*dA55Jas5Tv%y@7i#>a)zm69vhPxRENc)owp-(1^^l>%_r48xg8IL zI1?D9-{X-X)822x3n@YL+V_Jyhr`J&2}7yq;6Q+|!U=G%mE$@10x2$H5uf0DR=hS|QA&&CcS8J2P*_NhnvD^mkQCgnB@WnP z{~9#z9uv&9?rg&ycC~@-Kv4;iTP%CoX`|>fpVyd%?4l&RBS3?3oXmv0qtZDA25MrK zMu4g8y4Va==eU*`0+!ly0?Pz{g6eZ(5Hj(fW1w&OfOLEMmwcqXq*mp=U~parx-||1$ z>QWHyAhothSAs)sq=6_Hm@&!FV32#75gX1wK&#@6_7v+BS-j~HUx4?bPJ&HTy2fF0_yW%{yS`o-AMWNFYX$B znOimbC>}^}=i*W^dSmr6XEl-K3vDqT)4z2;Q_wDCOrHk6iDzD_L1Dma-!|@+|E#M^ zNC=OD4lrc;1f%t#r-dH15{4Ga1Xg%nvq)@iw0`%eiH#|GnQT$0_Zbm*_ z`iYC{TPv}u%&mG0r1rYcQ*efC-?m1G4j>NR0I?@*h2KP>URhqs{n5oI^|$n@@~Q%i z$!txTEH&b(uPDQF&w3=%YGi$@V&=C5Hv&c+udd*|Q4PCpp;fx}6-PiUNe<*GKoa8BD*6N?moqQgt38)y=?xa1uqI>ry5eC{t*;_n{GEuoaiPAo!#vo{p~pn=StTVWX?3(?LW_!h!se!o-;+Omnk!=vsV+AYu> zwUKd`W9oM5{YoUq>O5?Gb<@0iT$$>OpxXH$h#Tn&jMpAfLSzNi4S7j%F2KnScntv| z2ee*&9wZ!zV`VJ$>X_UycRSHOj;cAcxeY!f!7&KButyG)7pb>OT+=eHO=W!N2AXfb z+5|0FC0nJ=>*{VAgbM)8NK&qj-EIaFSV`yE)8Q=xTdZ^O(Uo-jM z6L;{yttYq;lZGNT*s!ipp?j7Qp_P#vdA~4v6_ud?jLCTapW91zsBRoGwIT1wgcrGq zLI*X|%MT=Fw&7U)Poad{3e96ZI;yT}hu@|Bn+-vev`?lpfa&OiN8+;%m_RY+DwF*fY3VPx z-bhnZAcH;*pMyQNe!Lq}`1s@qq@O@VyI{Z$LI9{mx8X-5S-|h`^H9(ud~Ml=7g6`0 z>Hbtfb9ht!m;|irnL2Uv_p(}X--}KOU*i2-pn#V?#PoUZ_87Hp6E#n`W6{xyt@;KY z^^pUSua>&|(%Se<@97EO=<4KU=N%+&3v`oYq&R@vty$PI*wUATDoc67>Ppb~EZJv$ zpo$+Q(7`W>H30pA1-vgLq8R5UfM3wpKMk3Z+y66I02f|R`SKuC5z@e)_l<5T0ZpVr z78IM6A-SW)O23BCC@Jn4yi*JGcU|`_be8>=N8Pp&b7Uj@C=V80D@`_I;%M#3oD<%-`U^0qT!n zq;Xz)gMf1EwD;8>j2_>6j9vVDi(UPDirrrauK@dafp>mVK-?{Xs&rz{s6){kKdapS zDFN3Nd*HV9ATB)5upz}poxqTK8@nfw;3|XrPY-Akf4) z4S=2rB#0HVPc&znK2@Lxm!waWH!TVaiF-@{H0_cbK2zLX1OZJ~FT->LVBm!T(n3fX z4f;(W*Xo1?4BQvZgZJFrC+jQ!WXl;&JY3FeA2dqBRpQyj3oK!}`+5s9_h8`j7U{KP zPv_?QD|8z4_NndBwuUbKQs$)l+8fl{2k-*}1oZP$o#Mf&`b98$vvyNEhTLFUUKR