From 28566289b5054b1974701733f08c8f7eb076000d Mon Sep 17 00:00:00 2001 From: Boyeon Date: Thu, 21 Feb 2019 10:40:17 +0900 Subject: [PATCH 1/1] Add a sample folder for Device Manager App --- Debug/.ninja_deps | Bin 0 -> 1412 bytes Debug/.ninja_log | 56 +++++++ Debug/build.ninja | 26 +++ Debug/compile_commands.json | 5 + Debug/devicemanagerservice | Bin 0 -> 13964 bytes Debug/rules.ninja | 321 ++++++++++++++++++++++++++++++++++++ Debug/src/devicemanagerservice.o | Bin 0 -> 7352 bytes Debug/src/subdir.ninja | 13 ++ Debug/target.ninja | 5 + inc/devicemanagerservice.h | 12 ++ inc/iot-device-manage-type.h | 88 ++++++++++ inc/iot-device-manage.h | 42 +++++ inc/log.h | 50 ++++++ lib/libiot-device-manage.so | Bin 0 -> 9284 bytes project_def.prop | 11 ++ shared/res/devicemanagerservice.png | Bin 0 -> 57662 bytes src/devicemanagerservice.c | 67 ++++++++ tizen-manifest.xml | 8 + 18 files changed, 704 insertions(+) create mode 100644 Debug/.ninja_deps create mode 100644 Debug/.ninja_log create mode 100644 Debug/build.ninja create mode 100644 Debug/compile_commands.json create mode 100755 Debug/devicemanagerservice create mode 100644 Debug/rules.ninja create mode 100644 Debug/src/devicemanagerservice.o create mode 100644 Debug/src/subdir.ninja create mode 100644 Debug/target.ninja create mode 100644 inc/devicemanagerservice.h create mode 100644 inc/iot-device-manage-type.h create mode 100644 inc/iot-device-manage.h create mode 100755 inc/log.h create mode 100755 lib/libiot-device-manage.so create mode 100644 project_def.prop create mode 100644 shared/res/devicemanagerservice.png create mode 100644 src/devicemanagerservice.c create mode 100644 tizen-manifest.xml diff --git a/Debug/.ninja_deps b/Debug/.ninja_deps new file mode 100644 index 0000000000000000000000000000000000000000..f1d27562db2746bf26253679ce016706f91670a9 GIT binary patch literal 1412 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 WuhalS_bsy*yhez7Fn8#n?foy++%CER literal 0 HcmV?d00001 diff --git a/Debug/rules.ninja b/Debug/rules.ninja new file mode 100644 index 0000000..d0f3580 --- /dev/null +++ b/Debug/rules.ninja @@ -0,0 +1,321 @@ +################################################################################# +# C/ CPP Compilation Rules +################################################################################# + +rule build_c + command = $ctool -MMD -MT $out -MF $out.d $pchInc $cflags $otherflags -c $in -o $out + description = Building $out + depfile = $out.d + deps = gcc + +rule build_long_c + command = $ctool -MMD -MT $out -MF $out.d @$out.rsp -c $in -o $out + description = Building $out + depfile = $out.d + deps = gcc + rspfile = $out.rsp + rspfile_content = $pchInc $cflags + +rule build_cpp + command = $cpptool -MMD -MT $out -MF $out.d $pchInc $cppflags $otherflags -c $in -o $out + description = Building $out + depfile = $out.d + +rule build_long_cpp + command = $cpptool -MMD -MT $out -MF $out.d @$out.rsp -c $in -o $out + description = Building $out + depfile = $out.d + rspfile = $out.rsp + rspfile_content = $pchInc $cppflags + +################################################################################# +# Unsupported Compilation Rules +################################################################################# + +rule build_unsupported + command = echo "Ignoring unsupported extension" + description = Building $in not supported + +rule build_long_unsupported + command = echo "Ignoring unsupported extension" + description = Building $in not supported + + +################################################################################# +# Link Rules +################################################################################# + +rule build_target + command = $targettool -o $out $in $userobj $libs $targetflags $otherflags + description = Linking $out + +rule build_long_target + command = $targettool -o $out @$out.rsp + description = Linking $out + rspfile = $out.rsp + rspfile_content = $in $userobj $libs $targetflags + +build main-build: phony all + +################################################################################# +# Prebuild/ Postbuild Rules +################################################################################# + +rule pre_build + command = $bashshell $prebuildcmd + description = Executing Prebuild Steps + pool = console + +rule post_build + command = $bashshell $postbuildcmd + description = Executing Postbuild Steps + pool = console + +rule build_pch + command = $pchtool -x c-header -MMD -MT $out -MF $out.d $pchflags -c $in -o $out + description = Building $out + depfile = $out.d + +rule build_long_pch + command = $pchtool -x c-header -MMD -MT $out -MF $out.d $pchflags -c $in -o $out + description = Building $out + depfile = $out.d + rspfile = $out.rsp + rspfile_content = $pchflags + +build pre-build: pre_build +build post-build: post_build | main_build + +################################################################################# +# Secondary Output Rules +################################################################################# + +rule build_edc + command = $edctool $edje-cc-dep-options $edcflags $in $out + description = Building $out + depfile = $out.d + deps = gcc + +rule build_long_edc + command = $edctool $edje-cc-dep-options @$out.rsp $in $out + description = Building $out + depfile = $out.d + deps = gcc + rspfile = $out.rsp + rspfile_content = $edcflags + +rule build_po + command = $potool -o $out $in + description = Building $out + +rule build_long_po + command = $potool -o $out @$out.rsp + description = Building $out + rspfile = $out.rsp + rspfile_content = $in + + +################################################################################# +# APIChecker Rules +################################################################################# + +rule build_c_api + command = APIChecker $apichecker-options $in -o $out -- $pchInc $cflags -w -fretain-comments-from-system-headers + description = Building $out + +rule build_long_c_api + command = APIChecker $apichecker-options $in -o $out -- @$out.rsp -w -fretain-comments-from-system-headers + description = Building $out + rspfile = $out.rsp + rspfile_content = $pchInc $cflags + +rule build_cpp_api + command = APIChecker $apichecker-options $in -o $out -- $pchInc $cppflags -w -fretain-comments-from-system-headers + description = Building $out + +rule build_long_cpp_api + command = APIChecker $apichecker-options $in -o $out -- @$out.rsp -w -fretain-comments-from-system-headers + description = Building $out + rspfile = $out.rsp + rspfile_content = $pchInc $cppflags + +################################################################################# +# APIChecker Unused Privilege Rules +################################################################################# + +rule unusedapi_rule + command = APIChecker -o $out $in $apichecker-misc-options $apichecker-options -- + description = Running Unused Privilege Check $out + +################################################################################# +# AST Rules +################################################################################# + +rule build_c_ast + command = $ctool -emit-ast -c $in -o $out $pchInc $cflags + description = Building $out + +rule build_long_c_ast + command = $ctool -emit-ast -c $in -o $out @$out.rsp + description = Building $out + rspfile = $out.rsp + rspfile_content = $pchInc $cflags + +rule build_cpp_ast + command = $cpptool -emit-ast -c $in -o $out $pchInc $cppflags + description = Building $out + +rule build_long_cpp_ast + command = $cpptool -emit-ast -c $in -o $out @$out.rsp + description = Building $out + rspfile = $out.rsp + rspfile_content = $pchInc $cppflags + +################################################################################# +# FN Map Rules +################################################################################# + +rule build_c_fn + command = clangFnMapGen -o $out -ast $in $in -- + description = Building $out + +rule build_long_c_fn + command = clangFnMapGen -o $out -ast $in $in -- + description = Building $out + +rule build_cpp_fn + command = clangFnMapGen -o $out -ast $in $in -- + description = Building $out + +rule build_long_cpp_fn + command = clangFnMapGen -o $out -ast $in $in -- + description = Building $out + +rule ext_fn + command = $shell cat $in > $sareportdir/externalFnMap.txt + description = Generating External Function Map + pool = console + +rule fast_ext_fn + command = clangFnMapGen -o $out $in -- + description = Generating External Function Map + pool = console + +################################################################################# +# SA Rules +################################################################################# + +rule build_c_sa + command = $ctool --analyze --analyzer-no-default-checks $in -Xclang -analyzer-purge=block -Xclang -analyzer-checker=$sa_checkers -o $sareportdir $pchInc $cflags + description = Building $out + +rule build_long_c_sa + command = $ctool --analyze --analyzer-no-default-checks $in -Xclang -analyzer-purge=block -Xclang -analyzer-checker=$sa_checkers -o $sareportdir @$out.rsp + description = Building $out + rspfile = $out.rsp + rspfile_content = $pchInc $cflags + +rule build_cpp_sa + command = $cpptool --analyze --analyzer-no-default-checks $in -Xclang -analyzer-purge=block -Xclang -analyzer-checker=$sa_checkers -o $sareportdir $pchInc $cppflags + description = Building $out + +rule build_long_cpp_sa + command = $cpptool --analyze --analyzer-no-default-checks $in -Xclang -analyzer-purge=block -Xclang -analyzer-checker=$sa_checkers -o $sareportdir @$out.rsp + description = Building $out + rspfile = $out.rsp + rspfile_content = $pchInc $cppflags + +################################################################################# +# FAST AST Rules +################################################################################# + +rule build_c_fast_ast + command = $ctool -emit-ast -Xclang -fmust-emit-func-decls -c $in -o $out $pchInc $cflags + description = Building $out + +rule build_long_c_fast_ast + command = $ctool -emit-ast -Xclang -fmust-emit-func-decls -c $in -o $out @$out.rsp + description = Building $out + rspfile = $out.rsp + rspfile_content = $pchInc $cflags + +rule build_cpp_fast_ast + command = $cpptool -emit-ast -Xclang -fmust-emit-func-decls -c $in -o $out $pchInc $cppflags + description = Building $out + +rule build_long_cpp_fast_ast + command = $cpptool -emit-ast -Xclang -fmust-emit-func-decls -c $in -o $out @$out.rsp + description = Building $out + rspfile = $out.rsp + rspfile_content = $pchInc $cppflags + +################################################################################# +# FAST SA Rules +################################################################################# + +ast_deps_prefix = Importing AST for File: +rule build_c_fast_sa + command = $ctool --analyze --analyzer-no-default-checks $in -Xanalyzer -analyzer-purge=block -Xanalyzer -analyzer-checker=$sa_checkers -Xanalyzer -emit-ast-deps -o $out + description = Analyzing $in + deps = ast + +rule build_long_c_fast_sa + command = $ctool --analyze --analyzer-no-default-checks $in -Xanalyzer -analyzer-purge=block -Xanalyzer -analyzer-checker=$sa_checkers -Xanalyzer -emit-ast-deps -o $out + description = Analyzing $in + deps = ast + +rule build_cpp_fast_sa + command = $cpptool --analyze --analyzer-no-default-checks $in -Xanalyzer -analyzer-purge=block -Xanalyzer -analyzer-checker=$sa_checkers -Xanalyzer -emit-ast-deps -o $out + description = Analyzing $in + deps = ast + +rule build_long_cpp_fast_sa + command = $cpptool --analyze --analyzer-no-default-checks $in -Xanalyzer -analyzer-purge=block -Xanalyzer -analyzer-checker=$sa_checkers -Xanalyzer -emit-ast-deps -o $out + description = Analyzing $in + deps = ast + +################################################################################# +# Coverage Rules +################################################################################# + +rule build_cov + command = llvm-cov show $binaryName -instr-profile=coverage.profdata $in -outfile=$out + description = Generating coverage file $out + +rule cov_report + command = llvm-cov report $binaryName -tizen-cov -instr-profile=coverage.profdata ../src/* -outfile=$coveragedir/report.txt + description = Generating coverage report $out + + +################################################################################# +# Clean Rules +################################################################################# + +rule clean_all + command = ninja -t clean + description = Cleaning build files ... +build clean: clean_all || clean_sa + +rule sa_report_clean + command = rm -rf "$sareportdir/*.xml" rm -rf "$sareportdir/src" + description = Cleaning SA Report files .. + +build clean_sa: sa_report_clean || clean_cov + +rule cov_report_clean + command = rm -rf "$coveragedir/src" rm -rf "$coveragedir/report.txt" + description = Cleaning Coverage Reports.. + +build clean_cov: cov_report_clean + +################################################################################# +# Compilation DB Step +################################################################################# + +rule compdb_json + command = $shell ninja -t compdb cc cxx > $out + description = Generating $out +build $builddir/compile_commands.json: compdb_json +build compdb: phony $builddir/compile_commands.json + + diff --git a/Debug/src/devicemanagerservice.o b/Debug/src/devicemanagerservice.o new file mode 100644 index 0000000000000000000000000000000000000000..638a6079117b415e329c5757d3a575360faa7290 GIT binary patch literal 7352 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 wAUWF)UwLn!yd`t2gFU|THsZT<#u-~ + +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "devicemanagerservice" + + +#endif /* __devicemanagerservice_H__ */ diff --git a/inc/iot-device-manage-type.h b/inc/iot-device-manage-type.h new file mode 100644 index 0000000..d31d3f4 --- /dev/null +++ b/inc/iot-device-manage-type.h @@ -0,0 +1,88 @@ + /* + * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * + * 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. + */ + +#ifndef __IOT_DEVICE_MANAGE_TYPE_H__ +#define __IOT_DEVICE_MANAGE_TYPE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + IDM_CMD_TYPE_UNKNOWN = 0, + IDM_CMD_TYPE_POWER = 1, + IDM_CMD_TYPE_PACKAGE = 3, + IDM_CMD_TYPE_DIAGNOSIS = 4, + IDM_CMD_TYPE_INFO = 5, + IDM_CMD_TYPE_MAX, +} idm_cmd_type_e; + +typedef enum { + IDM_CMD_CREATED = 0, + IDM_CMD_INITIALIZED, + IDM_CMD_RUNNING, + IDM_CMD_DONE, +} idm_cmd_status_e; + +typedef enum { /* TBD */ + IDM_CMD_POWER_REBOOT = 100, + IDM_CMD_POWER_MAX, +} idm_cmd_power_e; + +typedef enum { + IDM_CMD_PACKAGE_INSTALL = 300, + IDM_CMD_PACKAGE_REMOVE, + IDM_CMD_PACKAGE_GET_APP_LIST, + IDM_CMD_PACKAGE_GET_PACKAGE_LIST, + IDM_CMD_PACKAGE_MAX, +} idm_cmd_package_e; + +typedef enum { /* TBD */ + IDM_CMD_DIAGNOSIS_GET_LOG = 400, + IDM_CMD_DIAGNOSIS_MAX, +} idm_cmd_diagnosis_e; + +typedef enum { /* TBD */ + IDM_CMD_INFO_GET_SYSINFO = 500, + IDM_CMD_INFO_GET_TASKINFO, + IDM_CMD_INFO_GET_MAX, +} idm_cmd_info_e; + +typedef enum { + IDM_RESULT_RUNNING, + IDM_RESULT_SUCCESS, + IDM_RESULT_FAIL, +} idm_result_e; + +typedef enum { + IDM_REASON_NONE, + IDM_REASON_UNKNOWN, + IDM_REASON_INVALID_PARAMETER, + IDM_REASON_OUT_OF_MEMORY, + IDM_REASON_IO_ERROR, + IDM_REASON_PERMISSION_DENIED, + IDM_REASON_INVALID_OPERATION, + IDM_REASON_STOPPED, +} idm_reason_e; + +typedef struct __idm_command_h *idm_command_h; + +typedef void (*idm_result_cb) (idm_command_h command, idm_result_e result, idm_reason_e reason, const char *detail, void *data); /* TBD */ + +#ifdef __cplusplus +} +#endif +#endif /* __IOT_DEVICE_MANAGE_TYPE_H__ */ diff --git a/inc/iot-device-manage.h b/inc/iot-device-manage.h new file mode 100644 index 0000000..038e7f8 --- /dev/null +++ b/inc/iot-device-manage.h @@ -0,0 +1,42 @@ + /* + * Copyright (c) 2019 Samsung Electronics Co., Ltd. + * + * 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. + */ + +#ifndef __IOT_DEVICE_MANAGE_H__ +#define __IOT_DEVICE_MANAGE_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int idm_command_new(idm_command_h *command); +int idm_command_free(idm_command_h command); +int idm_command_run(idm_command_h command, idm_result_cb result_cb, void *user_data); +int idm_command_stop(idm_command_h command); +int idm_command_get_state(idm_command_h command, idm_cmd_status_e *state); +int idm_command_set_id(idm_command_h command, unsigned long id); +int idm_command_get_id(idm_command_h command, unsigned long *id); + +int idm_command_set_power_cmd(idm_command_h command, idm_cmd_power_e cmd, const char* reason); +int idm_command_set_package_cmd(idm_command_h command, idm_cmd_package_e cmd, const char* detail); +int idm_command_set_diagnosis_cmd(idm_command_h command, idm_cmd_diagnosis_e cmd, const char* detail); +int idm_command_set_info_cmd(idm_command_h command, idm_cmd_info_e cmd, const char* detail); + +#ifdef __cplusplus +} +#endif +#endif /* __IOT_DEVICE_MANAGE_H__ */ diff --git a/inc/log.h b/inc/log.h new file mode 100755 index 0000000..8dd533c --- /dev/null +++ b/inc/log.h @@ -0,0 +1,50 @@ +/* + * log.h + * + * Created on: Sep 19, 2018 + * Author: simplatform + */ + +#ifndef __LOG_H__ +#define __LOG_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "DM" + +#define _E(fmt, args...) dlog_print(DLOG_ERROR, LOG_TAG, "%s : %s(%d) > " fmt" \n", rindex(__FILE__, '/') + 1, __func__, __LINE__, ##args) +#define _W(fmt, args...) dlog_print(DLOG_WARN, LOG_TAG, "%s : %s(%d) > " fmt" \n", rindex(__FILE__, '/') + 1, __func__, __LINE__, ##args) +#define _I(fmt, args...) dlog_print(DLOG_INFO, LOG_TAG, "%s : %s(%d) > " fmt" \n", rindex(__FILE__, '/') + 1, __func__, __LINE__, ##args) +#define _D(fmt, args...) dlog_print(DLOG_DEBUG, LOG_TAG, "%s : %s(%d) > " fmt" \n", rindex(__FILE__, '/') + 1, __func__, __LINE__, ##args) + +#define FN_CALL dlog_print(DLOG_DEBUG, LOG_TAG, ">>>>>>>> called") +#define FN_END dlog_print(DLOG_DEBUG, LOG_TAG, "<<<<<<<< ended") + +#define retv_if(expr, val) do { \ + if(expr) { \ + dlog_print(DLOG_INFO, "(%s) -> %s() return", #expr, __FUNCTION__); \ + return (val); \ + } \ +} while (0) + +#define ret_if(expr) do { \ + if(expr) { \ + dlog_print(DLOG_INFO, "(%s) -> %s() return", #expr, __FUNCTION__); \ + return; \ + } \ +} while (0) + + + +#ifdef __cplusplus +} +#endif + +#endif /* __LOG_H__ */ diff --git a/lib/libiot-device-manage.so b/lib/libiot-device-manage.so new file mode 100755 index 0000000000000000000000000000000000000000..62d8bc5d495f5aa8e1ff0dcdbbd603a99799d4b7 GIT binary patch literal 9284 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 CE#f@@ literal 0 HcmV?d00001 diff --git a/project_def.prop b/project_def.prop new file mode 100644 index 0000000..755ffdf --- /dev/null +++ b/project_def.prop @@ -0,0 +1,11 @@ +APPNAME = devicemanagerservice + +type = app +profile = iot-headless-5.0 + +USER_SRCS = src/devicemanagerservice.c +USER_DEFS = +USER_INC_DIRS = inc +USER_OBJS = +USER_LIBS = +USER_EDCS = diff --git a/shared/res/devicemanagerservice.png b/shared/res/devicemanagerservice.png new file mode 100644 index 0000000000000000000000000000000000000000..9765b1bda7e5bddf0925555ab204b887a873bf24 GIT binary patch literal 57662 zcmdU&2Y{Bv)wXAQhoyJerGpfaq9DE5J1S~atXN|Avn3kQ*!`l$D2ie%v3Ct9iU9$! zARxVWkS4wCvh_dLJny{>uV6_upZ~zTGjrz5nKS2}_RLfEz7vl>A}6zMrgJXms3ZHI zY~lal(^KvD>g2b^T99$|k!M`zTvj!Ff*bL4ZRavixU^rt6HmP4s_U=1?vksn&O54K zzr3rjz3Spie}9p4H!U1_%FscltgqRlVCl}j$J~4S-;TNJ8N(x+7h3`nl`#k2P&{pByWKUm|WHre-Q&QDvN|NLL>eBs{vzbanwhZioN zJGS84sb!<)^<4YLj*;(APaB_}{rHg`PwISo_N#pxR#|@M=aVL{SlzDou*{}cyWI5m zFU-HLv`K<1ysdlpgBp)d`cVb&Nq{W}Uo#k#HS@`5165LsT%de5} z>?1C(+C}&Fcb6RQ-k5&c{R7 zy7#VDF8L2`$QMnT+~ofJq^mw~`{~`c9rRZ2+SX>NC*SKnrfJs!!_G=?drjKur?+d^ za@tX~4yxYeyu|ZH^lmrd<|peMGOSbO`OD}^=eFH2 zF15Vz`RA`HTQmLjt9v`Q;`-ZWl(lL9e%;#-Prdz$vgey^PQK)vtY`nH;DL+ZtK55( zdv^W8(|25rZ3aB|@R$V))~sGV|L945&pPj`({C*sI^o>$rQvN1Z=raO>);PO5s%U;2-D zaK|ApHomX#Ut4|FY-ag|E0?t?PU^X=vwP>Vo(X?=r0pwbUy!u>m=?K%uOGj%z`5-o zU-jwimgz~iUvlS)={J^d=~a5fv(4P?7a#T4Yn(f$f75n@zIwmc=jqP%e|A{wcly-Z z`DyJo<5TN@nzH!Qtdb#J{@l0eqzQd<`(|Evd;M#Nw0h%?zAf*b`c8w^L)y>o-JsL> zlP9wA`t1$o5 zBa^E>&@}JMd#j(+_?SmJAKBsL`v>KndSrv`J+4jcde83$e)P!UU${f=D7ky=5gqMx?DE{&Z(hHo^1_FD_WS(c z@#|`*b)5A3gWFA>*!SJT+GIR>!IXC!zmfg=7-QI$QDYM*~dhkFJe z*`~?dst;9bpZkY<`%OBuY1RAs9nxaV!-+?|`;S30tIixa^U9N(tZ(z`Q=N{i+vL$N z7hZVzdud(&)+Xtyw@>iD~U1v@1noes{ zFM8sTKBvAg;^ZZ-JU6IH=ZDVh`{r|_Pk#HPdtRy5>3>FaoqA`@qmFs;&F3GRRriuw zmlRz3_PXmosH)iMDUE|Kr?;YB*&QrD1Y7eb*W9_$} zIQFGFvmU7P`JjUj?XdBQwNF-l@~Tq@w;tX4k2N0oD)X_UA8Y(m{mP8syjtLL0@>std)?Rd(nS2Jcm{`#q}jXZJVDfLbn`s(4Y-1FMdSFRe=>mRqB zQF>qM85574ctXE_ob>Fw=dKz%IWOyiI`7}qCjauB*YEzHVVx&6e|PGFKi<&#<0ncR zeEdL<*Is?DYrl?1cRc<5lXv{>;$CU1p17v)>FbZrSljaD;X7`-e`)nCtyZ?G_fn^0 z$8@;pcbC8R`0&REzkcNFC%t~e#!tGuwdv)NFMTrL<1>nfRqFHk(Jg-0;)tOSO-mWM z_LK#uEO|Ne<(kL!=(g*vcCTIjV!h`+?tkOBD_`FH#54ao=k{lgz3SzqH-ECWsQ#_( zO9z!+QS|bzBeDmlzMtJRby4=T+TB0ve9cwe8?^s?(YBNNojtL4zZcJY?7ZPC{`|<8 z8Qou)Gw^>0R(|l($-i6Gbk!A;ubBKo^VH_~&5t>5!*QEOoP6Avms-7a__2o{`}x$b zr#?S*?vtIL>d|4|A#0yn`_#OrmVGef%$v?^Gy0X$A6|6Sd#lfU>5R>z$6k5YnO)C# zaqy{Up8fv7H%GqNZ0^Tze*AKkm&Y9c=<%;VGk563ceaiGa`dYo)Olyk{M1EnjlN>^ zt>+Crzt+$XK6`88=0`ty^wy7V{om3aX*u^SsPuY+GaKA?-9N9b-tDw*OGiw5dULN^ zKim2E`u0NyPtTn`zvHUW)uyzXbm_=bo|<*U&{{*sTzBV=dmp&(m^-Gl8{V_sQ}re< z`Qnq+M_<3|nzL8jGIQ6+r`~^R!lqXiy}h~1=1Vu_SwSx1u)atpr=e2)d)pJ$% zLzf=1^o(=AK6LyCUwkm-go#%@bM9Ts`u(X%`Gw`Tl+SQ4-`*@?XwrSd`V2cOvAFP- zKjx47ORsK=F53Oxf=zuMe0EHq8hswR*juwcHXz=JuvaM>=t+3bJyv2_xj7#_YST*qr>pdH_lkx@499Ei~2v_f9X?0JDkw< z?Y2jEZr$^>c9(Tuc<4u+KI%2O-Nk2oJ!kO9!AJf6nEGAYwSKG1mB0VjvXV_Z?pZl< zW!9=c)Ow=*7iV96^K;WC?7Zvcny3_{09TwNGyAS86`kY(vBH+}v7SBoA#^yw{s zFW*#kLe&+29sT0n$DH1_!QgK{dE>IK?{&ZC=0%ySYNQ-=_i3qbbpP=F(XFqTbHeMJ zP9Of(ZJ#v1<+#g-o%88ecYHc3;qr}Hr)I9X>(-5n=WROsgu(64ST^dsqPs`d>sjNz z``@a*sMhcrf12NN@l9*$-E-AfnL*e;B*F(|2*KGPcX=YMsT9Znn=Z%>?r@_n~gHC>E?m-)msPuWGf0d2ga%0<^E;*=WtUaHYRgBt*RPm4p!|WghmSpc+V8f1c>VVG7Okmv`iG~Fc)Q!VS8TX`L-(>r zXPxl*$4`Ge;;k{iyL`;%TRs`}hl>l=*L&vBX-jr~a`U#D<#Xpe)3wKvPj=jLRl#Qk zyOz~la@(~nN~cZvc)^V=HorOcgt6!D?7gYaf__WxnbYg6vc>baEdJAF<8OR+$Be~C z6r|pD=k&5ic0E+NU&=#IJ~ZX-oVzzZb6C%=U03$Hwsd{T%l)QbIKBBZwaT6^oAOqz zn(c2ZoU?J>v>8v#cy9Ri;g62H;*T$uZWzC@&fAM7Png{BUtiwTvBNn#Pb=Q^>5YqT zY_R2pWtC4@{l~mNwJg76&%3)$`R3)~N9#QLXnAtd6FW*S=-76V?Kkr-IP&D4Mz_yQf&Wh47dMTpt?0I)agY+wM0#Qez+jqzAB7t5&&n>(x6tB{`*gQc}_( ziHV8LQd3hiGcqzOS@QdeADY`(-57430* z_7u6o!a`S2P+;kz-Nv`bc&3$`b6HuL9-!U3cY8qg>;arT9xMaH;jz7d3;|9~ zPIh=YKw4T_h0n~)^c`UPjva3IuHBAs`}Xa{CTn(SNy)fv+qORc#TQ>Nl1t1p;{Q*l z>fbb|rktkMl&J`)CsmG_KrnRVAB{!jJ)v7K#JKK+>UAuNU{0=iXz~LB` zfXAqm3)93y2VY1F1KC8UvH*HKj+-p1rfOvaYdF*}F=WDk;^fRdY7CnlZOBTHMZ^JN>j74-RR8 z5`ro|(ZnNq7>b8!Su-mJBM!(pIXSL!<;pHMH`nyo<-Xgr$!*!P*|04dZyoHRi4!J_ zH+jY88NL6tsrferY6xcEe*Mn0Dey|$@U*K{tEOXA0^%k!+_r7oDhw+SFmk*TV1(o| zas|}>8g5{C5n&$u;1SA#DdZuK5nR1`br1BW&70l&^&6Zm0W%8=3jX@ZCu3i-BL6jT zL*0CX(D%RCseGNLgr?b)zWw?SPEAX_!PdxD_3G7iSvJjW*s#HEHbY@NbPJUhND4#U z#YY~Vv}kH9p~^}=BQu`v3HBqNP>$-9{2DcCcz~Inzg@eIX?p&iJ%#s;{rKZoOa$Qm zs?&0)oAmy#f@%t|;HC8H-Mg!e$_KKtvpY3xP~Wk8UAuOz2NRuhb>QUL}A zf*pW}<8hi&mFJ1}gW&}xG?iBks8y?$v!=S$tJk>o8#b)B9o4O4$A0|0@&2NtHr^)a@~eSrmHE-xq)C%X&0Dm1 zDl;?dr2PE61iRLAD_5@ch6_g+29cAopot#R5G}gO5W>USrfHKf_t+sWvuPW*@ui1d z*`~GrdenBo?cCDl7S<|A2v4T4ToK=jG?KLtHR_z6VrgX$xMXiZ}{}MuwM>fX6_}qm0TyXR2jgCJt|T z%R^nI8%DUq{5Gz{4tI-7t)Ai{FJH3*b>XE4Ax=6F;^61hNp(Zl`VLKWbu{u-R(V{O z*$8#mA-{2cquksoAKG$srHM~9-d`RAHO9B#Km0*K+XSWe?%n5awzD15v}u!sEp~ar zW(XJGa2l`r$sT8mOFVX{OF8Tqmt>~0gMF7`qckbWoUoC}Tr-`X7`Gv57pYvM~BAZ@~v>esKI)23~^S1VPnG_Y}Ao?EeEg+B$N2%yLi zq)|o+g@%v;#KR~F4Wu$`hB#p&O_|c#Os(T;28NU!Ae7sPGGMLS_n5Z%z7_Tk8+oiu^LqE`TYt{%S*IEA4&#k3nkDex z41W<&O`#;)5LId3qUGos)vI^5%N4hH@ghGJY822w8b>3E%Mr&g&~X?;Wk?f;CSyUv zDBMxOF@lOZ9_7l8xzvx&a+_+sDC`*YeLDg0MulHSrcOMvaneh=D1?p|KcN7mocM@K zSK{y}FO5Yugv9n&hc(F6P z8DC;&Q**5G547^%8Sj4t?0*ERDUj5xS+lAQ8|96uQKM!%c9nMDu>u$jL?hK80R)Xa z8Z90g99}|Te9|&9an?^9#w@Pi$}K(eI+tw+7)ds@h9fh?2O!WxP)W!4VrZIr$&)cC&y*`elplJ$Tik7k zOEtT*yNwM+2BtatF%?jwyo^!GShY@6V)~dI*5ds+>8(70DV<4&U=qix+>h~v?V()) zoAS$-FL!x)c~srblA~;CVZ?4XzF+~7W6Zedgolb z4nr{<3dc7X#nosUg9kj($cM)Ch$F2KV{*w-0r2rxxi31N8-Zzn`b!qVQoEe7uvj!( zTS-HQ=JAfnmOg}`mtKT&)Gt6)PI-jrOgqG6*jCX90h`Xsh^=I&UDc{q?cDmH zgWkZtR^Pvc&(AIttB6DS$8vKk_v6}Y*|KF`Pa3U}20=zpgUEx14;zmWLqm!m8M^gG ze9y@@xk)v;yQ~BoHP(p*pdHQFRXn4%%(2S_%!)8ZXS`CsyZ}_1kb0pLk|r*F6_OXm z(MxGU%HVP0rL8#faiLt*3oiqMJ&9fN^y}TH&*R3LVr70dMn7x%wF=NGxnIBjSJ~45 z=Wr(6CTH9-8!qE?&h6aqvpVh!XvV{Nke>(8Hxh_8KwE4T)RK}u<>zTOe=qq`&pox#H60RdiTi4%ovuRmzQ97A1Xi$d!Op3 z@i+lXTn&&RNsEts8VU`gvHlU(ZFi`9u}WX-PR1JpG*Ud8R<$u=e6W66H$s$miX}2V zbNLgyIZh_VmO}^9p)SfJBrnuGzHG=N0K@VJiqk$hfz0KO0h_RR$&z6`di0z&apHvW z#zTmJCN4UeV*r?cLBM zxNkaNVDqp&R+3ugifn`$wg%l^#{}iK6wyHS8ziIn{{(EHY)1C_pp)v{E8&M@@T(na z7h&j>Ry)ExXaY~2L43%?QC_wo&BFpVaMG77UHWw6#*I5!K0D&Qy%44YxSs^738V!n z&6+oV%5I%C;xWqb)>f3gx95|_qqvkO#5mAVp0o^wZjvE>MihK4I(2j7wwanKHqxw9 z+gP&s&k7JXpoCp=%*GrtMANX<51;WE$#KO@{oxvBqzWfvLy!&?nHEu-pdm*9s14Ge z{7{zC)Qep4iAS>FLl$&+ctVng-)h#V*~kixusb_v7`@13(CQy_H2bHxq&|K7o|BVP z>BK5_Zn<$I570$UKq*8ayc&R#`}6R_BM*=CB~*HAO?xS`pv2B`t+CK;SIY*e*gCD> zAX&ULw$o*EWV39v>-F*2VSX$woe8CrXy}8-`0QwPP{H*wUTL1v;Ov;R07Zt{p*SN` zqZ51JNULqCpAZ+ORTewvn$mpJgxkB(GRDADHks>w;och;+0 zCxIPWIPD^u#;E~eRZpy)KGLEqR9=`St~6zk ziA_{Ld9o2Sbiq!cEm`IoG-!~pd*`lU7QSWmY_)PfI1T?Gs3rj0q%_LQd$eY)nzi&m zn3N)0U`ctU389Hjqi~d^TqJt0aiZMl7eL|5$f<1Lm{IM2q8Zz7h)iQz#58PMLd!E1 z{jN7E3j`iW1Df|OBIp4%mLKR8ubcFWr$;3tUCC4DAjAt8_>jTKW;EkMS&GwXv>J(vKXc%}H(e>&#aNA4m;C{D(oXQ$$9tdLWIloUJm> zXGiOq^rLR-#CRAPAL`?aSsUUV?NT0b%7o>R4-neu3E;3^$)rQ5yz*rS)dMd#02(!F zWH~l*=JuEdGEGa0%PF;K{cUhpOT)D{y^P2brM&vUR_aC3ZRf0MkZ+# z1vGf1pg>e!sIY_rB91bW*{or0w=>6p*|f(c7THC;X~eo}OQ`jXXtb7FJ;heWH1Xw= zEYI(DEuTpWR&sWiC%arL8yegfupjhR2c&*E(nr&i|?A$#qyRsQO z)0Jdbv-)g$-?7#0+Op9V?u^cvEJZUPGQIro&N~#g$Nm=61aVQ=->ca5IXjn7X zmDR{}Im_&Nb$0}6GzUi|Y@9?>u?LnBV{%z84NTtwVzN2yEi+J&iF_Qo$YX4b&Zr`e zBThS^bIOCOTsha5shv^c(lc`0)E&9*>+%L}?5<3=-Q<;}*}Y%uoQ*QeU7L+lotycI z+q!tRZ!2|k#lVAabRgP|eCV=)Yyu4jT{LWB4~x63?5xA=H1G6J$B%!}SoVAEx?fOD z7?w`4(Q{Mv>ecLtxYb@bMj(qyiOUgJuU1H&=xPK&OG%ZD54lf@{Hj%|xbl=NcX;z^ zuEV_DZo-;ES1r{>r4=Z3cHC$PmKsndkonv;P!nq9q#&Q(X5=^WC9s zTDp39OXce{t?rn<4)D@AqXSWjZ6 zNyMCqZi#ikCE16&w0_-P=Z-U7+QgS!!HW4_4v*b%sY0iT%)GaQQ@`vZT|)b?w%TZA zI=f2T3U)d(_1~mJ^!z7-G!qHT(Nbq zjG9(khTS4eNp_{?%V@hjN0V&RL<-Ztb*M?X2fN%;4t5=A#?Z?t|7R1+4B(v*}dc|nOM;N)Zg(y)bIG!)v5SiO3~( z>(;Hez1Px)Ib01DD1-olCoZ}`QW{0Yhgk6=4<16rm8Y_VfLf(Wt}84xgJx#Cdrxj= z#@JmHYEPX;F0+L%;iexIGk=-@7!fi&U6`d>}BU%1JraZ161?T2#o->mU|#0Kt0Cb>;X>3KCoGP3Xi|q6&`n` z9eYOCxGZtlnq9JH2#rkiL=O!DLf!@hAH&H$_hlQ5IJXbM8j@(Q;MYt}N$yi(2GUeO zna~haNJXM6uIWm2LMap)6N8CIa-qdu&G*-2j1s1%RGZ?g?beB$8-8AUH*U^Gw{Gn= zSF27XS7fURl9+ZAjVaL;xn>LBa;?hOyDU4-_1~ zU$e*$64p!Fjm^+iI--trmumJJhqLco^tR{2YR;WImo+k)pDhw0BTlnj&04iCvzL5Q z=sEivRiZH}soX1XA#w5u$rGPw3ROnsM3)NCc{Y~DF$E$k+14~%)tof<=GC2D$<_i_ zu)WYF+qA`qO)1>tDs5ZtI)3q>Ym@k$FU#?o0F`Vy9mc^cP8i0OPZ>JgMI)xUZ`T#L zI`wQVH{I9_mHIW*OlR1XgO<_hT!0mgOp6=A$32(=H_A75pO;jpkxRd3xJ&JQYK0E0 zv)Y_WZ^95@(yXmEqovfSS@SYW?t^1R!U~~Ra#CXAi5L=tsKE%KfuUE=0VJG2L=1d{ zc;&;RIHC9zl8+;gZ9CI%xUNLG&UJ5D!`*UfGq-ug77u2!=~-{n7p~{(H(g6Rte|cV z!qr(+Cv*X}KM+G2N2~BZ_Tggp^1oKP+D)tZvt|xD%9(OKsMbzPmw}x9-wR?4z&bovvG&UPOBybGt_g!b** zH&04RZn4{X3x(tq$3PMGk@2Yz8eTjqLkJyX32104BRLAWE~F7mxjZ+_D}lNbLOD73 z|9n~-H*WSuH*4xL*EV~qYmrspa_xYC>uKtf!w~2tK&6Z7Bn;zGIWEJ}+~;%GyDMIp z<0{z*O|;9EBBoith8kKnI?JuBzr}|P`^S{4sWuv|q|FAFzc)`b=&?NV&8Kzj6dy{9v&K0S{j|ej6A=k z>ss=v2NXWL-?-20B15QN((3gZm86NwlTNjB#+`P=chhs@Y`bcY(d4Asp#~$8O%dxU zQ?N#9)HVRB7^yxU0p%}mJa`d^6>F}67>!neYvoNyN~J2U&gJ*Gs>hsDp;M@L7)Mv0 zfzGX5DIqf}>l`yrg<->yYW7aH&)V!IVNg86WE_mksDg$g1Q3k^z+l>>9AyYmAar3` z@(BT)sh4+6xU>j$p*-cv?4Y5zxX`s|RKpD!GQ>Ui+;d(BMm2TEJIWvzU5FFn4iuIe zPWRq>udBOqnQNBS!R>O<5ur6CHaZC-a2c&8$OGitYH>y#WPrx+LpOrxCN7HmFh;jb zz^#4CP`7#1^M0nnuAvLVp{;hz+t16_6k}a#>s5i z!Bs!<43}K9eg&vh$Rf{rz_yz>yp)$iN%-U$!8`WEB(?xf6~* z&b4aU(w`M;=PaJE9^$kM8S>B+55rL(e&klITH{|B?v^muHD39e-&HfSX$`HojPW2E zIMzHr3M~Y*eMe*rJOS-_qG>;xt|LIBj$j>c!)mwn&EfuIA)2k!DY3siwxO-enr5rE z_Q*@FnZ;_^dySK5>)25_m2#5x78#ioqVXY^&=J(?hDZHlm{m`?-0fOA$L*T^h1)fK zqAOgz7#2S|kfo>UxrhfSWZ@KIPyhi?p73Xb#Me*4Q7WJa;oqCKFIC@svpe(5Gd*Zb zN0h|~ICwR!tE|tk9~p(TbYaK;!V51{?4H?$w@xc|IrB!iMNLn1>(g7o9f2F$^?CqV zQ$4`3(2xb(c-r0#(!RjEb<14Q+|S+a#WP%z#kqk{Xfr1IOE-nI4LXiEOQ78(NVa3u zqihL!-pHkzYpwo-p7wb-x4meaFQ6X@lOT-4)VOW-6lY7cf21VIuD7xqv~(Fqp6iO% zEO&+TzH)^#Cc2_!v;AHh1G4r~7I`|s(MZ(vZFlzl)Tv1O})LZ4%LCGVIBQD;1?zzXe4H-BNEm+^1)~V*Iu6oza-MYxlJLpt!rC@AS zS{NIl-vbh0_sIiH|1e(xYEoiSaz}0D#jGBWAPfTt2*i*(CXI4Q%?|OS)juj?orh;*f=0>f%h3(QrORAC!)30T?NXObca@8GdLXMbZs2udx!`sh`k^QFX&^~o z(rPm_Iq8PJ#I3DOEzi1=t*J&#Xn*j*O|5VSJvH7*Acb*+_+&eeEnGCiB{b_01JW)J z3{Xa`)e!+~VEZThpjD~s%DSB3$~vFm%C~KFiA$!rw3+{MDJ$ogylDMC%&rNu?PHR1 zD69I_Xwmi;UVr`d?y}1+^ZGHu7zvbrvu2*L6&Wy<4tjy6IMozm0+ zADx9WWoCh@1?yeI*>Ah5*>)+l#n#{1<6ON7e|HU+PI7rE#jZikYTjlH7RoRxnckU6 z@W@oCHYm-k2~D21h)3~|m$nxb6;HJX)4pN)1+mu2w%FRD;@d+*C;*tm5k?$gqy>EO z%t@~N*vtG$vIoxd9$=*U={Xw7jA%{Od$MY{g!X;imragv&wX&MTe|97*Ry9&$2v(5 zSEJM*=@X`*;h^>C(ZemUk7kS?Ki=z%@!6QMvyOKke)ypueHaiv^?dk{i46pT%F>~s zV*?u*&OZ3%Hroh(XVmMiR`sf`RQ$Q+ zS2;p^OvTD3&}*aTFHBIrJ=a?yM8XtOk>Uywlv-@3NvjsR(t6GO)a!x57_n)%V(K-U zn_e*>8M%093Z1KxQRHUS?c-|9ALHiCnd3JthaY~pJLHfg`aoU{Mz0GmywJ^< zF~i@^f}a_NkrFx%{6F~M1HUN?4^se)k%c^5SRcFcu3fu&-=|NXip|*e4d1#ZxoK|L zW6${STxfSsd2A>?2*MSoX1e0M_8z2Y>WzUG12Lijs7;5l&6Ee#@|lh`H3M*AZY`Jg z$us`e8`p^6e*3MPJbAKv@4fe&eFo02L!35YG#V=dD2z0Uewl8^jvec-IpOCpd)b}0Vv(U8yo~Pof{{l$%u^c()i#C7ql}#LNRyv#=K$80t+rl2$Mll|STuSHi{L%X1Mqf7|Zs7 z~>zPG#0BHaG9(YOR~&HzgQ_HH~@zgiR0+HACaNl2OLm zi{YC$Z|*w)`a)+UGFoH^?mt530$-g3K-F%(BWQQ2DyDmF3PU?c7IlOUo6rI6sLspR zwJmkwB!jxbj&UG)DnrMhOlWg2(0)`_p`T$4N2&u<7_xP(6iZk1UeXA~hf@=ZQlYPO z#&}m;tGUIa>2$xqDvw^ZPkb-HiT0Sv)>>`d9t-)X6>A;9pc@SY1nT9;5hHSG!L-Ws z4A20ZmzU?JO`GOY^3!PfYF`N*riLCik&g?@iJCeUh()mY=fTY)TvV^_wmOc z`|{{4JE<&n;*g;@JUG<q?l#FfE$OQ$KYXlmF}gT7^p-5l9mv~NlPGM z;=IXjPrr-(+u9|XPHi*-F6$=k(8x4WG*t&9*_82*qa>MP3HD^*wpuM+)%ElI8pr-8)*fnX-cZA#9r>qKC$8%H_?rL|cS+Rc}+#aC*CT zyVNU3BbY+T7r@+Qfi69{AlEKb`?q53bM>naq`MA-Di7?8Cz=|eeq?M0Rp_hNR z+HL7@oZD$ryX_Gx)=fWZ%|5&+Ox*ta2d@D$iAOyRNbh5553GFxAbrDJms}8mL~o}K zdMCY~=@(;R5Yf@eo`iJ$`t|c8mFXFN>8UmlQU*F}E@>`Xn8I<;Lyy7Y)1oQ#1?@+& z*_17}vtr2?sNzE&&f5)xm{T1-5lc(YkfyTKjhBNLv)i|n@AV_q8ee3iEd!b94({hbRI(G>f1&UHqN<_Jl$5CJg93kXtT;sF^t9f3_2?c|H$6AQ- zC*Z<3d2+}FD0E~NvBUL>vdB_7Lb*_;Xp|REd>kINA(Thwu!qA7tql)G8>NKAokq-t zSx!PpV;JSB5n;Y)8TRr>-ziVHH(FlgN(|UUdygb~*M-qZJO-*YI05hsOr~2O0=DJj z6KoW(v`+-*WY|M!yVrV_ z=?KgOY?xSE(T`arv>7@AylAp7bmHO66!M4ykWG&dkW&GqQk)um@epGX&o(uq*|kSE987e)s44iW80;Ino;uUJL<^2iii% zLB$CtoZ#Ml_gybnmmjo)wzIRw0We33fCN}?zx}owHoc+i&~&BiZF=@^TitbSUflqT z-Y?2ZXJ&}5Sy=+ufYDjdgE*mViC)x4h!dR1Q3QoNz3tk4^!XnZ^pUK+26Rs+8yPVl~;3{%5vOyyAs?s12M_|v}JCR zUHsdtVD)NeyDp9Dxo*v>xZbU++f(OzHxy+h_C$aQw(sFueNhdeK4D`O=LP^%D*6Kg zvkxOS+$2fYbIv)(KQGJ_iSgiPG|3k5(NQ_IV!fsAwYlwGc8w}-(&_>?asFa=_oyYV zeZxwwXUl5t*!HztzjpjZsa#i7xZ7pe?7}9FQLfIS8IUv{nF3IH5z-zU`S{Q&Egte> zc-f*Afok2wEr%F-F`@)?fgLXhKIOrO<2DzYkA(6fw{h&#u2ai4u4CIauGF5@Ey=8I zH0gX;FgKs7EU{L=2r>c=<6ZuQbO;?zq$gkd`5=Q4&fVT}lMrw0R;bc0`U z!W(bA(VchRd49U11F#m#@S$wt)L-7HgG)$HbG0+mT|%vF8`WiQ#->6y?Vros!(&#s zfi`llAK1VRI4Ik7Xk5#!S=+$h>*QKpQ?TR;%+RLFQz+Y#Mqkp>A3G>+WbCrc*vkA7 zlKolBde)ndR{ExTZTA4NzRxaLL2Qg*x!aKwm~Nnpp0`T1KdfLQ+P^t&uViH8*c4qY%cWD%c6tfkc-Emi@Yb;4|U^255q7I9@6#(9N&Z(X%DYW_n_L}jVZCu z%U-It%U}!}9vXtUfE0)dRfh8L&=VOw>@F+kWVyKu7Q5wZzq7|so!hw89_z4UiX?k1 z)in3Ys~*bZXb3L85uO#Hl3ni2C8e%+UWTiZR_4B* z_DzLe*h^0OE3LNv)U-MVwzjt4YG>Z-?Te}9<@Pk);*!#m0vaDyLYzt{sKQjHv_g1f zAo68Q;y4V(LtBj69lHzsMfvR6v;7ke-24W3Mgzt}htQz|@+3b@i^h`@T;t~D2>#pcg9zP+KnMrk9h#K0>xUt(WliPEX|%?FF8rMg1fSh?&B zSFNdi?$0K|(tV> z`Gox_Pi@4;<`$Xv^SO2?hH1$(6W9*rB@9j+4UVTl$0!&~`BIWJj!^mJAsa(+UzAZx zdd!$H{-U01MW#WfNG>68OoKQ9hz^QFN9KbMKInTZGXZ%x_{2*GQJc^Q9`Q*}(fGS; z7him_8$Nuv*PY86^rxO}b=tb3tmvktuOV`)>afEO^N00ZQ$iQel{vONs2j-CO-zP{of0*CG7MJwE1ET z=iUjqW$x1*iEc>$6WyFo-tl0?Mwg`dy68aYfSx#b(4G3_$b%NPi8`#T;kWNdE!(_l z(+BoNmJ$>owY}Q*Y(ixSUmGW36yH|ka@eoEW z2LL!Vma| zwc(7Ghs^{o`8W@Zg~Nso^I&U~`pj59apY4c9S4V6v;%!`((6FsJ$K#Zet+eao{w)1 zCuUai@8GL_e129fB~-KZwKaQ*)#t;{h-GKIDJ##%(T#Ogve1Wip|5E0NLTVjCoTs+ z1IaqwEPIM@i_yJGnttIcwH@%d%%qGCtV5wd3JV12q;aYUg+jo{g9lz26&em&$O|8G z*l_|VhvE1yzx>iqgFK$e2C8x6CieZJs{Tcz`)njJnpsEVN9DhaT#9KZnDNEseX|hpt#o;1-y4VA3&5TAZXO1#yk+QX8#BnU!57TT)76 zyL8!+`eiTVNe}EoTzRrLG&yD<+t`h_bj2vy2UP3z&)aKpe4EFf3*NgqB90)0$|F?9 zpi(IaT~7H*6RNxvi!aB92@tiBV$`l!zRVrb{V>;~O*8km4<`C!H?Bw3SjmmAhcxxz zciE0MHN}j_*V1CN9||dZ?X}ms$usA<`SztW|K^%aG#)q)8itL~gNE~AkO%0>D@e1? z*cySUTr-Adz<97^6Z9jG(8~|(Pg(41e-)#A=gwWvTmF7QEuTMc-a>mCZh@^)EfFl? z3gbb74oyn=nu8xdLTq}#g*@?!k}t)HGgGi;ax0AE#sv!(xtTL(xrb^ua*J#V+t}#> zn@epY5xZyWKViqIlz+rG}V zKBS8qYtM7ptAh4NVysg`kAbC87y%dMS(P!TksSeBU?$Jl^_`sw7x+B@)9-Q`>sC!<}n%Cp_FlZW{!+?1=Z zo^QGRL>7qY9upQbO9gL&P2Z{O*Vt)$bdQ&{5Jy`DB5g(|<&h5!Cp(ibXEjUA*{-C~LDqh1His=@g)Qn`G;)oOVzGSXu_kBk zSnEn{wqVmo{j`lR)J672pyHv;iQ_3#Y@emGPXCy(R!qH=+Xqx*wlA_JY_N^Wcr(ZV z3di>%3W-J>9vsHPQCWPxKq6l~PyF#T%6o;)xEL7zlBS(pV(&BkO?LPr9t#DmZGZre zO;Gf)ji_Vs5lFtffU5{&dU|5)M_|%<_?v6oisKp>hYq*~Z{6Mt%)^4jE zR0S<&h%8|`M3E>oHfEKYc2!np5540glep}G9c2^I6p}}qLr2;$9dG(>Kunmo52&$> z65CBZWTSNeT2YaJix&((`BH{-$U`|s9Lf=AgopVm7f#P=2&XRaCZ?vl;&bou7NcF> zQ%|fe)6PDWGqb>CG;7bD6~e?8PN%5b4J)EwIbXfyFK?JmBcEtfv~8lyr&?Wm>5AJEhIToVFmKX6oj=khvSk>@ zR-q>^w3*W2V+Z)-EWOVtCI5RP)r@JjNGP_E@@QgG(v$YAi|?sw9EEVCF^u8@&=X?$ ziW5rFkQN_@hY^ZgI!D4`$Jv)CI{InXV`l{-Y#4X+|0qo!0P-a=WJF&ki$cGq+P%h9 zzRPM(qk+-MG{}3Z8ll`|;4M22Lo`K(?V=M@n)s3{Yu3q?)ylJu=S4=-t{}PCQpb(Bz7KH72ahm_+5S-@u{OlCfFpAI8>!@!+Dp4H6z$o=b0JJf;(P2=U~{)51LEV`$bjWS7;>cS)ySk9c3d2he^1uwtaf(&Uj5eTfV( zZG%S|fH|kLQB*lCYO3nsT9~zS=FFM?wjIE73B{cxc%&b?$TLNAB$@K}oA?`;u@P!v zI6{eAy^P$7QCqm(KC#2MEuw=2wO6*0{Rr{YCmV-0r=yW)ooj*J-Fm@Vz0U>-GvM|M zstE>tJL508M{5!5o<^HODWOpGut)h?><1n-LbNa>pDB-!hGbp-a5NGD&KTL~AeXoW zQCw*WGK2E%T@R=km8rMLu3xil{%cf)NvXuIot#E-50(eHM~@!uM<$m|j9Ti)`MQuF z=K;2gO{d8(-{E)09=zmes%58~VsRf@+)v8}aMGL!el0~7P94T4Vn5U?51--+VUsS_ z>1>n1Sw>9Rm<$E`1vQpgYQ6Z?l9J-D!%G+`rV2u^C6rM401c1Ip@;HBgP&;^M}u?D z`GZT$@$b(XFS2}A4A2;`MuJSru=5E&Au~FS;DNP*yY`g12368rp8b`IBKw;$Tz_)8 z!U$!DtBsHVML!vxc)Ujw%2ZxsBX8EH(J1vJ)2=VAUS7fUe;6SaXSBN66Dd~V;yX8; zSWfoAZa9V5inxu|FKo~As%7mh~Ld~Z!vmI*hz__g&019hwk^tGS>6;L@ODWP(N zAy~wfR!F0CuM~c!733l-?ckm+z1wmAc_1t5K})cc9J7%J*W>49Ml`fauy=2umviES zZZVJSQu`8Uqk8tYZIX-Kf+gSDBQ=Zs8p?fKZXmD$!iNt1)HdRwgO0w0g)iLUD&@C! z2~}!ED}2Q|N@s{ll@-}d|M^o~5|6!@EZQg+pN5W&LXhE+4XtdEbtu-P1CCN;{Ln}x zpPlgJJw-)tQW5jHCt5{R22FJG!i}+Ck-F@tZ&52>`q9v%O3D`01`lY zFoD+M&?-W>AP|t}<3s>AMxd}gQgTSWG`DNxN;hrBEH`D!6#pFw9ya5&iYZ@4Q>dAR zH1TjY5)b;48omN-H8tT{6Xieo)b?F9ZC{r@f9gyV(vhoRW3e83@*gk;o z3GLg{JlEcz9|YAZqgxekSik=FCXkEViV9RwsDNlPgz~}$scJPu>nQ0u*VsC0?FiRT zK%!}k#Yi4HM0(hTlJAv19TV)QU?Tu*L9sn~P%YcFOW)`|`{HYVo;B zr*@F1HZU^rO4BBEubya!B>x;yv5qqRde8c5@siKp^VjF_Q(mEDk!E>Qs5(`j^6WjC zwe}9~4VM3dqm=SL2r3L_>@r(#Hd`6Sda;uuwY zHBY_VrRN_M1JKIHWO(3Wz%uYi`#hg7a0wxp$5}|as4&$HsA)Uat&811?CuWhCP#Ga za2XZxo}#ozBS!Hs4NY`r9e_>za+E7yHq(z(ZIT$ZNqg*-%LP*r>&y5^>__b;#3?N> zL%L;`+v(At>{4sH)%}B`6j?tCDoo}|Z43Rpf$$CqRV*M0L!|&R-V0FmJPdLN`9_Gq^y7Fhrp9j%ExMena@Rd&nH&Dee_ge1-P((d^rO?RFK9nM2~?P^5)S*f+In=M#osqW_y>nj z2BRFv(EtpJ3wcqR#X$in&Lq?r=oI>L0g)VYo92)7ctkTLO9s#Sm4|-lD<0CJgO9wB zpL{^U(|Hp}0_9#H6X1f!Rm-haa0R>e=6cBQL5C=m5r z5q>PRN*R_Z_RYYjY}0YJjDQ@xlqJMNLvh~N=BYq7Dk=6^*~M$t+Fxa==IUK_mmL;l z`Fo+fdCsTqz^KGdf{6322v0XT#r9cJfaE>bVzU@w(7ROuGl%9ED{mkNer6`a%Y*DV=UF)xKw&j(%#q6ebKSBhII2XoQTwI;%%N zHIh_b@?v!n>|+elG#t4R2}`umSIJ(X z_{fy$Oc`Xw%Oj1lfJ*Phljb@Rh4S+9_L=ga$%lFfX!4LL9y$cm9+wuJ3=xti7q5@# zKNS8@`LKRuOTI$n#?zIjk*T&w2k4^N#%Rjw)vE^DF8wE6zJ$6;-oG_cD+(thB-v40 zReKnFtc}=q&{0s05FeqG7L9b+7&VxDKu6h7VWp9+xMYQ)@EoIP%3$s0NDpLu6t^bsE(n5a2yf`FMJKTJ;Dd z(yB{&Y9DmP4==aP%^}$Q2B%*2&Bam)&c!MP5_}dWkY$&lO6&Ry7yP2&&gegBgi2S{t2E&+0;(5ez}gy{W8l7K$_@w{K|T$VF+)X&hiQ0m zG+J~TuQ+*OoHP#E(8F@#BUIfHcl3)+;wO{~`NbnZkOQyyp{pLzkRyK4lva6o$g@q+ z$98OanysNbEd8?pMTY7oF87Opia@Kt{*Z4cW6%zuM9F0}O zp@quI5SpS@=7&O+C!~Dn!g}KMA{~~cTsU=ya)?V7q3RKhe90G0`dFIl(C6%~%jI?n z^rO36WbMyM*D&uF1r@1|@bOT=FfL=M0O?Sc=#<$X zUHJ;(k$lDXSC%}1p|WA9x)dreJ`Ek3IBF8VC((5ItTEMwxg+k|%noWK3p7S<*64C@;Rufzm3YeCmvM@BpYl zjqh0ES3YUU32D$NtM*&oO1sg0p^eZ_EsHlIe(*Y!@;~HMXUOxbfJy~c8J0@27o95G zCC^hfb)IOA^Yzi_P?-b8WqcWww0Ma_S6YoyI^98#-M+l(g*@40a+YsG0bLNa^jr<=? zx5y2h+OQ7|<$i5v75h)FT5s3%*4E!ev`3XLRvC?=&9O5ZR~{Dc@Xo)ab&y4LC9i7xGCmoe0{MD!5urgm^q=g69ZU~%imq0h0 zFZ2!4Ot9BIRaYKmR{oN3@*X{2^C5O$DP8HE&8W8hI-bfv}r zLm?dqClFOubrXh8^{FoLS^1eJ>rn&qMdJs|Uwo2!1ic#Vf?b-djrddQ~P z@y7aJ0~5V)`)m9EIjE6pUO5nCT29W(%d2Uh+WEa1@I+I(nS~L$K_g`J5D3ZoPeU1s z5cx_Y*XlJ=`63J7wzuLQTfTfbkIwQS&96GmQuqE`sGIVCGoVT#LQ@oQnVOTEHf`F% zHdQ=f(Z}d*jOItM8iUb8Z}}A?4*G$d%7-CwdC7^%U_{O~AjjFw?|;~{!}Bd4Aemyn zzb!scrN07Q`iG)_lb}jLQd`!VcPK4UMIq`6?FY>(F@k_}g5RW$5yke+hYkW}9Kd?XEQzUukRQ0^7NMWv|@x zwG+T&6#DSD0;1`&kBdyQ56LC)MX~>1olS!p$pSkJiQ^PTspwbpG9e!D!m!-zBA%$k kZ}gYfNaCF}xV$|1>H6z0+kD +#include +#include "devicemanagerservice.h" +#include "iot-device-manage.h" +#include "iot-device-manage-type.h" +#include "log.h" + +bool service_app_create(void *data) +{ + // Todo: add your code here. + return true; +} + +void service_app_terminate(void *data) +{ + // Todo: add your code here. + return; +} + +void service_app_control(app_control_h app_control, void *data) +{ + // Todo: add your code here. + return; +} + +static void +service_app_lang_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LANGUAGE_CHANGED*/ + return; +} + +static void +service_app_region_changed(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_REGION_FORMAT_CHANGED*/ +} + +static void +service_app_low_battery(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LOW_BATTERY*/ +} + +static void +service_app_low_memory(app_event_info_h event_info, void *user_data) +{ + /*APP_EVENT_LOW_MEMORY*/ +} + +int main(int argc, char* argv[]) +{ + char ad[50] = {0,}; + service_app_lifecycle_callback_s event_callback; + app_event_handler_h handlers[5] = {NULL, }; + + event_callback.create = service_app_create; + event_callback.terminate = service_app_terminate; + event_callback.app_control = service_app_control; + + service_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, service_app_low_battery, &ad); + service_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, service_app_low_memory, &ad); + service_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, service_app_lang_changed, &ad); + service_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, service_app_region_changed, &ad); + + return service_app_main(argc, argv, &event_callback, ad); +} diff --git a/tizen-manifest.xml b/tizen-manifest.xml new file mode 100644 index 0000000..fa54ed7 --- /dev/null +++ b/tizen-manifest.xml @@ -0,0 +1,8 @@ + + + + + devicemanagerservice.png + + + -- 2.7.4