From 87e2675a72409f73fd65f6a41c910d7e2c85deb3 Mon Sep 17 00:00:00 2001 From: wupingyuan Date: Sat, 6 May 2023 17:58:51 +0800 Subject: [PATCH] add libsvm Signed-off-by: wupingyuan --- thirdparty/libsvm/HPKBUILD | 65 +++++++++++++ thirdparty/libsvm/README.OpenSource | 11 +++ thirdparty/libsvm/README_zh.md | 12 +++ thirdparty/libsvm/SHA512SUM | 1 + thirdparty/libsvm/docs/hap_integrate.md | 90 ++++++++++++++++++ .../libsvm/docs/pic/libsvm_install_dir.jpg | Bin 0 -> 16911 bytes thirdparty/libsvm/docs/pic/libsvm_test.jpg | Bin 0 -> 40229 bytes thirdparty/libsvm/docs/pic/libsvm_usage.jpg | Bin 0 -> 31625 bytes 8 files changed, 179 insertions(+) create mode 100644 thirdparty/libsvm/HPKBUILD create mode 100644 thirdparty/libsvm/README.OpenSource create mode 100644 thirdparty/libsvm/README_zh.md create mode 100644 thirdparty/libsvm/SHA512SUM create mode 100644 thirdparty/libsvm/docs/hap_integrate.md create mode 100644 thirdparty/libsvm/docs/pic/libsvm_install_dir.jpg create mode 100644 thirdparty/libsvm/docs/pic/libsvm_test.jpg create mode 100644 thirdparty/libsvm/docs/pic/libsvm_usage.jpg diff --git a/thirdparty/libsvm/HPKBUILD b/thirdparty/libsvm/HPKBUILD new file mode 100644 index 00000000..90a3aa11 --- /dev/null +++ b/thirdparty/libsvm/HPKBUILD @@ -0,0 +1,65 @@ +# Contributor: wupingyuan +# Maintainer: wupingyuan +pkgname="libsvm" +pkgver="v331" +pkgrel=0 +pkgdesc="Libsvm is a simple, easy-to-use, and efficient software for SVM classification and regression. It solves C-SVM classification, nu-SVM classification, one-class-SVM, epsilon-SVM regression, and nu-SVM regression. It also provides an automatic model selection tool for C-SVM classification. This document explains the use of libsvm." +url="https://github.com/cjlin1/libsvm" +archs=("armeabi-v7a" "arm64-v8a") +license=("BSD") +depends=() +makedepends=() +install= +source="https://github.com/cjlin1/$pkgname/archive/refs/tags/$pkgver.tar.gz" + +autounpack=true +downloadpackage=true +buildtools="make" +builddir=$pkgname-${pkgver:1} +packagename=$builddir.tar.gz +cxx= + +prepare() { + cp -rf $builddir $builddir-$ARCH-build + if [ $ARCH == ${archs[0]} ] + then + cxx=${OHOS_SDK}/native/llvm/bin/arm-linux-ohos-clang++ + fi + if [ $ARCH == ${archs[1]} ] + then + cxx=${OHOS_SDK}/native/llvm/bin/aarch64-linux-ohos-clang++ + fi +} + +build() { + cd $builddir-$ARCH-build + make CXX=${cxx} all lib -j4 > `pwd`/build.log 2>&1 + ret=$? + cd $OLDPWD + return $ret +} + +package() { + cd $builddir-$ARCH-build + # 由于没有install命令需要手动拷贝到安装目录 + mkdir -p $LYCIUM_ROOT/usr/$pkgname-$ARCH-install/include/ + mkdir -p $LYCIUM_ROOT/usr/$pkgname-$ARCH-install/lib/ + cp svm.h $LYCIUM_ROOT/usr/$pkgname-$ARCH-install/include/ + cp libsvm.so.3 $LYCIUM_ROOT/usr/$pkgname-$ARCH-install/lib/ + ret=$? + cd $OLDPWD + unset cxx + return $ret +} + +check() { + echo "The test must be on an OpenHarmony device!" + # 在OpenHarmony开发板中执行用例 + # ./svm-scale test.data > test.scale + # ./svm-train test.scale test.model + # ./svm-predict test.scale test.model test.predict +} + +cleanbuild(){ + rm -rf ${PWD}/$builddir $builddir-armeabi-v7a-build $builddir-arm64-v8a-build #${PWD}/$packagename +} \ No newline at end of file diff --git a/thirdparty/libsvm/README.OpenSource b/thirdparty/libsvm/README.OpenSource new file mode 100644 index 00000000..06929735 --- /dev/null +++ b/thirdparty/libsvm/README.OpenSource @@ -0,0 +1,11 @@ +[ + { + "Name": "libsvm", + "License": "BSD", + "License File": "COPYRIGHT", + "Version Number": "v331", + "Owner": "wupingyuan@huawei.com", + "Upstream URL": "https://github.com/cjlin1/libsvm/archive/refs/tags/v331.tar.gz", + "Description": "Libsvm is a simple, easy-to-use, and efficient software for SVM classification and regression. It solves C-SVM classification, nu-SVM classification, one-class-SVM, epsilon-SVM regression, and nu-SVM regression. It also provides an automatic model selection tool for C-SVM classification. This document explains the use of libsvm." + } +] diff --git a/thirdparty/libsvm/README_zh.md b/thirdparty/libsvm/README_zh.md new file mode 100644 index 00000000..ed0f3374 --- /dev/null +++ b/thirdparty/libsvm/README_zh.md @@ -0,0 +1,12 @@ +# libsvm三方库说明 +## 功能简介 +libsvm是一个支持向量机的库。 +## 使用约束 +- IDE版本:DevEco Studio 3.1 Release +- SDK版本:ohos_sdk_public 3.2.11.9 (API Version 9 Release) +- 三方库版本:v331 +- 当前适配的功能:支持向量机 +- [BSD](https://github.com/cjlin1/libsvm) + +## 集成方式 ++ [应用hap包集成](docs/hap_integrate.md) diff --git a/thirdparty/libsvm/SHA512SUM b/thirdparty/libsvm/SHA512SUM new file mode 100644 index 00000000..8af706ac --- /dev/null +++ b/thirdparty/libsvm/SHA512SUM @@ -0,0 +1 @@ +78d3241fbf0286da077b8e612604feee13946b551888dcd8f47d23b4791f2a1daf516f3871e9a02d1b70cb58e12705603af8ef3c2ff0aac4211423d5053c7083 libsvm-331.tar.gz \ No newline at end of file diff --git a/thirdparty/libsvm/docs/hap_integrate.md b/thirdparty/libsvm/docs/hap_integrate.md new file mode 100644 index 00000000..b4f01086 --- /dev/null +++ b/thirdparty/libsvm/docs/hap_integrate.md @@ -0,0 +1,90 @@ +# libsvm集成到应用hap +本库是在RK3568开发板上基于OpenHarmony3.2 Release版本的镜像验证的,如果是从未使用过RK3568,可以先查看[润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld)。 +## 开发环境 +- ubuntu20.04 +- [OpenHarmony3.2Release镜像](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fdayu200_standard_arm32.tar.gz) +- [ohos_sdk_public 3.2.11.9 (API Version 9 Release)](https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fopenharmony%2Fos%2F3.2-Release%2Fohos-sdk-windows_linux-public.tar.gz) +- [DevEco Studio 3.1 Beta2](https://gitee.com/link?target=https%3A%2F%2Fcontentcenter-vali-drcn.dbankcdn.cn%2Fpvt_2%2FDeveloperAlliance_package_901_9%2Ff3%2Fv3%2FuJyuq3syQ2ak4hE1QZmAug%2Fdevecostudio-windows-3.1.0.400.zip%3FHW-CC-KV%3DV1%26HW-CC-Date%3D20230408T013335Z%26HW-CC-Expire%3D315360000%26HW-CC-Sign%3D96262721EDC9B34E6F62E66884AB7AE2A94C2A7B8C28D6F7FC891F46EB211A70) +- [准备三方库构建环境](../../../tools/README.md#编译环境准备) +- [准备三方库测试环境](../../../tools/README.md#ci环境准备) +## 编译三方库 +- 下载本仓库 + ``` + git clone https://gitee.com/openharmony-sig/tpc_c_cplusplus.git --depth=1 + ``` +- 三方库目录结构 + ``` + tpc_c_cplusplus/thirdparty/libsvm #三方库libsvm的目录结构如下 + ├── docs #三方库相关文档的文件夹 + ├── HPKBUILD #构建脚本 + ├── SHA512SUM #三方库校验文件 + ├── README.OpenSource #说明三方库源码的下载地址,版本,license等信息 + ├── README_zh.md + ``` + +- 将libsvm拷贝至tools/main目录下 + ``` + cd tpc_c_cplusplus + cp thirdparty/libsvm tools/main -rf + ``` +- 在tools目录下编译三方库 + 编译环境的搭建参考[准备三方库构建环境](../../../tools/README.md#编译环境准备) + ``` + cd tools + ./build.sh libsvm + ``` +- 三方库头文件及生成的库 + 在tools目录下会生成usr目录,该目录下存在已编译完成的32位和64位三方库 + ``` + libsvm-arm64-v8a-install libsvm-armeabi-v7a-install + ``` + +- [测试三方库](#测试三方库) + +## 应用中使用三方库 + +- 在IDE的cpp目录下新增thirdparty目录,将编译生成的库拷贝到该目录下,如下图所示 + ![thirdparty_install_dir](pic/libsvm_install_dir.jpg) +- 在最外层(cpp目录下)CMakeLists.txt中添加如下语句 + ``` + #将三方库加入工程中 + add_library(svm SHARED IMPORTED) + set_target_properties(svm + PROPERTIES IMPORTED_LOCATION + ${CMAKE_SOURCE_DIR}/../../../libs/${OHOS_ARCH}/libsvm.so) + target_link_libraries(entry PUBLIC libace_napi.z.so svm) + #将三方库的头文件加入工程中 + target_include_directories(entry PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/libsvm-${OHOS_ARCH}-install/include) + ``` + ![libsvm_usage](pic/libsvm_usage.jpg) +## 测试三方库 +三方库的测试使用原库自带的测试用例来做测试,[准备三方库测试环境](../../../tools/README.md#ci环境准备) + +- 将编译生成的svm-train、svm-scale、svm-predict可执行文件及音频测试文件test.data准备好 + +- 将准备好的文件推送到开发板,在windows命令行进行如下操作 + + ``` + hdc_std shell mount -o remount,rw / #修改系统权限为可读写 + hdc_std file send svm-train /data #将可执行文件推入开发板data目录 + hdc_std file send svm-scale /data + hdc_std file send svm-predict /data + hdc_std file send libc++_shared.so /system/lib64 + hdc_std file send libsvm.so /system/lib64 + hdc_std file send test.data /data #将测试文件推入开发板data目录 + hdc_std shell #进入开 发板 + chmod 777 svm-train #添加权限 + chmod 777 svm-scale #添加权限 + chmod 777 svm-predict #添加权限 + ./svm-scale /data/test.data > /data/test.scale # 执行测试用例 + ./svm-train /data/test.scale /data/test.model + ./svm-predict /data/test.scale /data/test.model /data/test.predict + ``` + + ![libsvm_test](pic/libsvm_test.jpg) + +## 参考资料 +- [润和RK3568开发板标准系统快速上手](https://gitee.com/openharmony-sig/knowledge_demo_temp/tree/master/docs/rk3568_helloworld) +- [OpenHarmony三方库地址](https://gitee.com/openharmony-tpc) +- [OpenHarmony知识体系](https://gitee.com/openharmony-sig/knowledge) +- [通过DevEco Studio开发一个NAPI工程](https://gitee.com/openharmony-sig/knowledge_demo_temp/blob/master/docs/napi_study/docs/hello_napi.md) diff --git a/thirdparty/libsvm/docs/pic/libsvm_install_dir.jpg b/thirdparty/libsvm/docs/pic/libsvm_install_dir.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4732bee0c33d8709a9d7cd782f1cd2cfaa658bb6 GIT binary patch literal 16911 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 literal 0 HcmV?d00001 diff --git a/thirdparty/libsvm/docs/pic/libsvm_test.jpg b/thirdparty/libsvm/docs/pic/libsvm_test.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7814ebbaeba85e675e42f577225e50d6cd0cb140 GIT binary patch literal 40229 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 JTA&UF{|`Wg0T%!O literal 0 HcmV?d00001 diff --git a/thirdparty/libsvm/docs/pic/libsvm_usage.jpg b/thirdparty/libsvm/docs/pic/libsvm_usage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..382ac8daa928509992261a49175c4e2cf1926f20 GIT binary patch literal 31625 zcmdSAbyQnl)HWE3wpgLKwn(AH-Jz7CL5jN+hY(zXx6ndyD^T2>;2}7rxVr^+m*CFF z?|Ws|%$oJSpUkY8_vG%CKXQ}1pR@1XXJLvbbx0BD5wM|j~xJ7 z000I3$=iP%{?~!>?8!$AOswZGu%AwVy#zc%K}CIrhWd}!PiOl+eGWh)Kqq{|C5iD$ z^$RAQ6A|~fm@F*%kCko2YNN*tJf_Y8&tH&`l95v|zGY&5_nw!JUqDbuSn89sjI5lz zg1UyLmbQ+ro|(CYrIodft&6Lhy9dP6EAab|px~b&p|Nql;u8{oCnaa+zjXYp#V_- z1=hbK`@i5Kc*6Az4Gk3y^B-I&&pe(Cl>iO>4HpKXq$=hYr&n~`->`^2#$;8tJ*VeU zJ0>=D9(_T=z`MeT{0G{9NA^DkEZ~0$*}nt(KX4%cIH)L3!9yhgNC2*!Lo3b9oQjR4 zY(TG6oOsaWrb}MwX&d2B9=K78kkp*AbKtRc5ayP=8N#D}ZiH_HInwRRrMtFZNXoSt z0w!~T$!fHf3L%)P6=AX;vR7}_5_EEEf5dlvE<_Wq)WY;w3DmrkT%pXs-Dz+eocL+c z=$Y6b5kL8ncwM*>H*KN8v?}s#_`HUB+L1&2BcOM$vb16{Gk1fe9_-J8SW4!!E=g7- z(IyR}z8{!MSa)H4`8-7|Xl(Cpce8S(mv@P1(K>pV>O{(MYLB(QKfI<2UbNF6+F%TJE3DEe{r1TKvtm&7Cn z+OuoRnkY+k7j^Y|E%iWS(se$xvV|LrOe(-{yxgLW*b^bq9R5^Nj^SXX(8?3Z1gizNs4C z@gS+w^S~w-T>VZiXz-Vm-gTCd8WFm=b96#l?}_d*x5CXBw3^v#xmu+Xvm0>f|9EXS zQimsKef-oyim{LkS;Kq%c`PF-=vm;zGL2Izg$gkQ-|$!^=DynOLP9K8t|vhV#r!qr zHQ91_(N>{}EE)v`$g#nT{#hvE*dfRq85L5>3n|dIY;eXI$_sd3WGP4$_d^i1=ucU| z@XA9R6cVghIeI65v8O*{&%oVpwV{G4OjADzGmK^f4OE@FDEQ`Ecp(2qWdUISfEqWmS6mT&;7R958FE(U9 z;U|(Z#?2Gz8(!j%faBFoy=xi=X)mRWzrGS0lcIbVxPG3lhIR|@7gY*8)jLd-hJX8v zk(rUbId=9kt*-G$zjEnlc|Y!&#?&GFz4kPB%)rpl=H080^bxt&pAGo$e$XcvI88-r zQT42Bm!)(*yn>C`ouvU4C+0NA+<2qgd8d}F;*Izb+sH!`tiIHs*MU0x1am-7LL(JM zSfzw$MF*oBO`opIb*Mc5zQ~SqGx2x$_$788+dyA#mLe1^&=ooaF?a9<+v-}G}&U$c3LH8>G{Wb zYygv1_*coFy#eB1di;$QHE&x{c48o1)X#8jH?{lkvprdf(Y}~1@<;I=^!ng=lkt+>}t8XM#C96!2fcW{xAe(m<<}@@|@1Rfcm- zJp-YXHdq5WN6g^d$YqLyd}L4@`ehKd(VPKW$^zp=gIn8 zU0-q5FHW?zxV^TEA$zEURpE{>UU2U2XIlaO6GPruF8)#6IjnYIjjQ@JRa8D?_q|!* z=h)=9hL($^#U<&xVGuE^{x1V6&9vH<5a)xE2hHX|CH?lxWX#x0nTe3+a~Iw{Ry*Na z{qEgH=dji7GpI}Ft6dVrL1Cb3ooC8GkmJ;!)8J=3>5yvyZF*_&e%{-HceZ6Ur{}F^ zv>>vgk6fd3{wx=8cdt)~{9v0kD2JAkJ9Y^lJaSPT?NxA;MPZmbIqB<)HQLDcxIBiV zXJS%+9pC1%FOMI-t*dK{Bqt^vnEL^U=tdD*YxO$aWl7oPtWs8*)i1DYbdMAEYZj@^ zPJr(%JY|ptnMc46K7DI9eJnSRQ{LZ3@@UR)VtHfYQ2Owj1l|*h{3vT{GR$o+zLK8% zT=UE3@>TOdEkDL0BW|^g23GyHXBXr~`?spLKBjWb_4?wV>u&PF);0NPmqrerT<*ou zXu(qdX=Op~Rlucu<9KeUmU(48DQ9QKFL7;A?*qU+3lv!kwaL7C1Skje@jncYY=q~E z;T`b|I-SpV`Y+Sf5xGZ9j)qpH2B`<&LxsIV?DJ!7a&7Ws!kS{aEG?NBV!h(@ixv1* z41H7X?;rH;_q*pLz6f(1=pPaW7x*51eO_v`XE>7kPcD(RhnlBz{dF)CdHJjCXcsict|d%aBdjU zpW;}LV8w&p`BJ&fBAW;1NZOxX>^bFkl3^WFdk$`>OWa1i7axur3hCseUg|yqz6$tE z$BY6~P92W$jQhH6*3y6qQSFPABfQP>Zr}35LYP{D$mv4Twbfy0p`{P;C z;(*5&St~Pa=PEUCQ*hVB&bZ{lHWk8OGQXz`gs0-E)Pjb#^C(WE%ANB*5}rK*f*%1q zg~;-s!J*I^&`!BU{lwVx{A)}1 zqsS;_g1h8RjqXUKrkR^JJau^;HPfA#n3sIbGs5Q95!FTEwg_F_J}+zvSpj9kIo2^k zCMEI7>9bX2!hV{6SXP$Z(a@~qDuG=m1HaY@S6YM<7K88|jO(vsD zzs*fwI`$vfdtlmi_gH*gQ(I9Fob%;TfsMCJlDI1(Wr$~ewcYn=mQfe$Uoe*nfLj{w zH*XmdKV*k81O5vbs%(3M2qe&;a$HUGTUnmY_egG1@r8%9J#Z6VA`RpCnKxx)aPoHa zj;HCxNqczQuYUVwLQZ+XZsH-E>6eHlNxsgi#SamQ-_oK5&*qz=pl$-R1YG{v{U8hG zKt*nFX{EntT<~ZvE8l=! z-hQ9*!Nv@BsHrYASkm8_p8Ml@wnqH7%ItN=kf2Cn^ulod`+^Q?Cb>~jpubJ-yz&n5 zKxGqQTjiH_llQe3?7}Bb_r2xu!-m zrtMUF536?HTRM~BkHSss%E9qC?FZX-<1=uE=y>_$B?^h3k6o3w3yabSCd!YMvy7sgiE(jqNsx!f%C3t%U;MI#dAAamKbB_*d?32?Cf?^fVwWO5L&T&VXgT^!J0?F z_gXQ(IfYot5DM+ah{H?PAnEsWSRc$*QmAV2#NHQs>&k27dF$y}!*;w&9s!0w^NT(b z7HCa3xlQgs53KB$jxSgje7Itl3`X`N1_zrcN*Wjvr`XUc<3%^QyCWshXk0YD92=J9 z_~v%zgPyygpT&MU0X~n&Nt!s=%;LB zr6i%^e^%mPx>n9aEw(4pPVpK^Qx7hn{AT-hAt}@z`v+U96{3c(*-Q?p+~QyvuqS&9 zY=S#?t?seUZ@m2eX9&XTb?cI~qBTik|t|-S(YU_8a2f<#r`$5#xdcEP5QSW$I?>i&+JkVB?#+F zTI4mwLYopr7G-_x885=|<3EtCQSV{5-}GPk>(ovVGXDPC%_a0&I9fB2K3|gVXE)Kf z2Q04Y(#`L@+=1Qrje?HG7;N13V)I`j41WaBdoBH`MFi#LbX$~=yWRtbG#e6Ta%4u? zb-3-tOM1i}0Wak4Fp}dhLP+8ZDf_{yxzY(h7s{^D<(?PMW|spvpD?tpED`I-uPVJD zgQ_czm5PtF*_ZkJ9b~X_vick8ms#t*? zUI;L8iad|v=Shh-wrb_Lg!)SagK-TUQ=5k7p!Kbd-o_7$OX~&=S7vN2^;xr&DJc*> zZO9mKj|85;UAOQ%j7Es;^=XFfU|c(bm)oW~!WJ08zp*I95IN#GDvZ*dU{0=H_XUo3 zXKtG2u)4=4(m`RA^(9Y~OP9-qYT8nlk!kYcE8yVA&1QYPX?Uq{V2mMAR!Ac9?NnM$ z^Tu8kJZ9KP$2FrW)L+QmD5dfG0cW=fl)X)%5_VWxdSt&=6S=FCZ(Q{ZJi!l8>{Cp; zX7uu&xM}^N3|-svrR&VntPjPM4Vvj_#CdUj($2L2XZWhD>NX&XIAo7>>#v_jt&mbG>8PeF2r9B4(XpqF6|1Vw5ZZoTVM zT#;|Ne#AM%Lp}Z2*!&ysZc>JHY?K|ONf{>VYxf-Xd~0a^kB7Vst)!}T58s4o#$-pF zWAoR>lgr`$?iIRiCllSG((=9hz8u^^VVMZ_bUZOqsHifU<*TWv7F3OA2oUONI~aP8 zJ?NsC^0_jWnmS=U#OZpZ+=OT+}9EEs8s>PYh0&EKWt|G zMRLNgi@0t^yPeY+D`7ETVps2{JaNb($VfS$#$Zxd`B<+JGJzegqQN~O#o^M*MwAJ!;chHNE% zF5!JSX6295w|xX4MwOhzs<~=8e?dCHBb7bxxM^mDsMg*t)+4|0IZ!Ns9If{(EN|>? zz%8k8%J0uvImksW!tcg-)=-7In=P-_R`KuNYPnxL0!(gc<2}U|k3{@@dX|-1U0qLH z(r=sVsgoZXTgTe9Hw{~t{nLYKrHM3%h*YHk|K&~F_n2`}B9ubC+mUr$rz~`yQ1+MK zAUo~rSKUS!kaC&h;n1uJAMkRIy^qQx;5kjRIo~^bw>_N=HYz2%F2VM`!V_*{ck(}! z6}Z;f$$HTnmXlHG+vVBz9CR&6_}2u`UdF4T2JmJPNn_EU62`7CG1=i|Tf=b-pL_=V zOubD@AOboqNDSEVl74He8B~d;{MByUt4(m^+mqSf&$=x)+t$C0=ZPzU{r4P(AE=bQ zjC-yhLT~Wfjot^VA*a7B*CPe)7#hw~mU>;v=49WQhh&NyeA&?Od_nBq3&6d?sPds+ zo#h)2^P~QCHEe{$ai6*jhbQM^2!Z9{(Qy>lN9kYhH`ei??3znA4=qMt1~*2K?^$MA z-a%SbNA=q-y{vw^DamTw;v_m6+5MxSp$GK(+fqaOXpbCxg3@$v1>d z^juL5tD;Fvq~{;{jgzj8auo11)_t}%JhYO%x ztg!N7r?H=~l!%0|*_#TjesCmbe z@B+Q0b~OEK#+EiKhh6?e6AiBoVo3!q{L6j3=f$s%7o9`gvO@!q%|^e{48%jZ{no1v zn1e^&BLL$79<%yOyF_Pq#5Vcx8*x_=?N1npw>e!&%B%|c+*;i=l)SHsq?e4c;=Kyq zt~NzN-tvOh#jaK>1cn}aOPP;|sU1&^=yZ09J4lWXR&!T-s5w17JAJPcOzc6sXUxHI zg&8|)6tY%MU}O^u@mlTHZfR_}r8i)&XF9Y>Vh|)a?pS$IbjGF6DOi2U^v^vDBooVM;`_ZMS zBBzpA{pcq7avZ>}ql1NSB32yeq)r}?_b5ZsU#|Y%_?or*QBIVbgVH{JaiW5AyD)^t z;x>IQ-TOXR6qhGSLmvUl*Pc`n#1lR|kARpx`A0xm#3LY+Phh2w1=28? zL_DCX!j19ygX@o3W&9j~|BK(_o3)LtC+wO+o;9<^r%%O1Qg*Ytd}E@1{c&Vbp}-s; zDqd#SstI{&NBAho@FK#?YOMZ%drb|w6(TBvSBA4YZYMC#PN5SI7vB=)AI-=IshFgM zwmcXfJoq0gHrF0NTbG|)=~6WcMpCLxx*iegK!UI{Dt1XP8grBXZs>!GxGL}|2`)9C zw>`WMTs00o&qHqX<7yrA{Yt78_qL?&sh=J0&#+BYlDYI20Y3uJ3MYO+EgFs<0f6Q0 za-B&&7O46fYxcz|u(LYS3a%e?O2S>czxNe#`-c`P(VjdxIh412V81KnR)pn7eMxw7 zg0*J)?P>BNy|u#dQlW#>aNyjHjLORihyJnKYk|3*69tx*tN4QU{2gIJegE#%DnkSP zN5J$ua%u@i6NwkgpkyaUpK_P{)JeJ1*V&=(ai4`UXZ}|)Yy>;Zd*xn|qvpD0*fn&! z3as_VmAM@UYeOfhD}q$7`S>9-5#h6B)gbMv%U@z5O!OrP&AC)|O?kvsWS9^{(qQr3 zRKGECCUk(<%RILGD*!Fl3jp$76=7Y3~ zhjr%dTOuHH`V~mqU?!vXA zn@CnEt#d*d9NYeO6u&eVG5;~7>@^wTvU1npSDCY&?Ay`M(&&rEBX2|8(ixE#!62>8 zc6wLd`{qNp(;(B``*I?IpRBwZ<65BGt3`dypj~qMq|aQwRVBX|z;+R{J>7cwdDRb% zagd{pD>6S?B>Gbm6BY(mS4=W#firZ|e~LwkfA3uOB3hCjjRppFL(&>FOdPnOFh)QZ zish-Cb!`%Amsmqp+X%X{s&b=#Q(1-oQ;(g41r)|$EGhho^yK1}#^ftJDIWu@KuW6)uodRt(fvp#}!F6^hEPuu1)eK3i%I zBmeg9f=y=eD4!?et?b-%3lAd7)0T}U2zuG+K)6f8T!SQCYMrINqNEiMpu2yhTgV2)!C;dF-i!XbM zC-DFs533c+)~DEl)v^~E9a{HG?G6OGPq&wO!i#C`&%I8VaV|tL3O`E?N{c)3p7DRM zTQ`GB=0fldrp?FH`UcH~i+<~orVCD~Fk31nm=G}^&g9mY=Pw_C-6;zpYfsrn<$!!E z_@G52I?1#qh^}W>_1lZDgc>n%JqMbsck+cZvNlwt;(B`5T?CcNOMLFV6E4wQ!^$&I zk)xnR`tfrm0cBrN6_+AH*1@z6ZLT57Hf#pF9;c;rk=5L|mEaJ%>6&}08JX#ZfNI3A z#vfVn+9E%HOC)xUXQYI?Xb$opc@&9OC`=h2<9Vx0u)C&gJFsqAvws2i(w$?}l!;oD z8rr@zY90$&4#^7Z58{;@4a9g6nk6G8V1J!|74=sy_=g^Pt2YVHGxdGFh~_0lD{;jr zc)5=iOmbxj-}tIT2R?Szqvbt&X(t;`XB-dYVqIqjJad-YkykK&VdfOoF^WC}b@MEk zomFDL1t~pzBqmqtX5|TwNq1DCx|yuI(=6&-#XrcaQ!g^l5XzRpWU1MZLqOK@3@5~C z_q?^#H?X$mtADFJ{aL0uV0VTyB6Iv; z)qt}dL-PZ)jeZjo%I!~VV5|3wR1elfk^4C-f{j}7W$}q431Nz-&>Fdz?RodtvKm}7 zB{-5QW46Kf;)wmBqtl-pHL#}p?NqzTOGHyN zoescj>uXF$dabN*>(SPPPDVXkkJ2CVQ=kw_LwwnhBdavUWFF4>Zl8c_M z@(}XMCb~9@ftxafwiABd2H=MgG8w(+GIuo!IUp>(8an-LI>}&_wKdO%^ zKR776bQ8^GklSABeHSQq&4!plObOa4=;$$Up4T^3?2R{76ms)c3cxr8s{mGAo!}Fd&DP66Dl=%=EPF zW-!M|_jS=d)7B+zPy4vL^znqL`qmN(W}J7w)K=B|9%9a1YNVyvPi%_e@(s9{(z4-Q zsWr2{U6MQ$<*{fpcK-EyuAKwi->PqGd+&Pb#`GnWbN|~y z$RA9zT5t40Ad+(BV7UEWjVu}BU}vxH*1XVEy!RHcD7Y;thHr}RWzS~M0*#aj-GdDW zkL}!aMP=Ju658GzoV^@m%+#aK51q6flA%YhyJfgFWKNJ>3KLdT|6ia zs7b$nZMtEh#q3B>g=$4lZBqxUdz-Q8LZmgB5$Klo$$E3Db4$1>ia55bPqFknCfSh8 z^Ib=gvl8tkye6rFJw3npw`rS;yHp6an$e-S6UjL`E~x-K&o!#mNbMP+M3EZ_@v~?v&)bi4fY~7rHDe!sBuz%KO@qtMs&|@PjHTTn zU45i89+ob>rBvh{a*0T{Il3&;GIZzgf#NE3Si5GNp+c*nF;xCwK!8i0sPJ1@e7r%{ zAFZB+bgrr5ofh(WgxF9yYlD4MQBw%#lDbU#r)04BCeSKY^uRP+n|@}smhQ@>&`^Kd=+lM2-6S-(F>-Ntm*sN| z>ks0vzP@_X(hoz9@1%uTGQqMgaoJ@cVX>v)bI>670|(vBkYxY_&SK}rz}XjzPhThq zB{}vzYoQZn`(B$2TT0w4nVDzl_#?f^PZiBwj3--2m$18SNlc{r0sY^M*a28ck)MU0 zRS&N|O|i;w-Jnx(x1+-M@~h7_x^mH~A9o|eZQf`E$8t*^L`zb=ltd$FLnHV=Wc~jU z$G_u8*#f1FsDY1kHrf{Nk4U>kv71#^lVg@4q|S(e@nHZ zMI$2pk|I*=zLdkdPHo`xs%J%cs9MJa-6eF9w>Gx5J9d}wdj-vk@xpGbd zRU~ZJT^PMJSQNa1%J}Pnys&klp?XH{f#x6; z3Hno5FvJc_zc1J&nHD~3uXpVSD$%x2Cy}f&F*owrg1NdQm~Fmq>ypeUFT30{FWtKUlWgCt5F@OuZP~dKQv&nC!9RA zmTeg$Nu?%uy-WC8j)9PO<}%Np1EZPRHiFalAw5)7t|b|0;Ejf>xB^KWFzcA4dk6*2 zQ(N&D0Ml8?+3P-o0oE8 zWpShIO2n#Fq{Ix6kwgnL7FX3AU{@c1pf`{$+-^Zjl&K6>IKJ;-KSm&q{NJArU^`=r z@No5Y$*3&67cW98&-&;hLvN+VU4OIjVNT{&dH-IINk7p_bVzy4swpqTKv#GjMZDFZ zT%ovBT7h~<*scyW0-Qc5+?_7^TSF%J0Uho! z8DX;RwQ&@5F6Txq>`=Yf-q@dLT4_+E_Q6EPQAJEvb?|d>ONhVm)FZ%Cc=4%=kg;<~ zvB-GblD9(bwI(wO?ySv0QDp$q)lvT9y#5t48tm2RvW#n`f^4E8YOH+;;#MJUjjdw+ z%A2Ba*C)6A=e*3h{6D!OfekML)7#p?M|m=HstN3sfa#uMRjpjP74?>wAnOtE4ZLt} zrc3i5I?tI=Y1`f`1f)+SVPaZ z3U`HyiE}ObR;OkCPwxFrJRQ6*;MWfsPJ6TjJ{+sJwBdS@c{w``rBA)P0vD&;h1pNH zW!g@@#|`&KzqVLrra`_dj{pK4zY&CeUXjhEBi}(JeM9TdVkPdKuj0C0WI;pwx0@}_ z*}u%QV-3+(=fLM$Vu*(=qiQ5(yZrec{(%aqEMvR8l`pT83adzWH1*O~|0%nL?K;eF zy8gs>e5IiD*T)fgor_TMf?|@|$nFk;E{=m!X3bM-8N=tM8Wm(H6!vwiDiNRIKa`px z3MwkbR_p2elF8_}ieGwNhZaO`DtbVpB880-S6Yd!Zw4M{blA&P2M+^1Sxd-gii=(& z`srBAzY4hhJduVp>rL_jp|&@`{@L(LZZn_nD5+0eoymKR47T*!sCXAcFo>p?p|bn{ z#d2Q@Au`C$2#=U~FJm$Otdp?v;ic~9SHq|bsmZM?V!~U0ZwlI>Oxo3)wptZ?q_1`^ z(Mn1kUfJQH;AGVbWOdUuef%F-{TBS?4B+zO{U>6Vl9Q!w&&4VF!3BEOpNDBG!PGT8 za%P007OytrXR8MKgzU_xG=%*cR~)Xig%zY7%vM1jtttByIcVtSuUVaO);+%&eh?g5 z=@|lbZs%lJIqcm$0)p_=N5xqn_F@>_AEI}rji?*zbrBBu3kJNc7VXT0uN{&|lp%H* z(Wx<^eOJJOwnCqeqsd1SU#g>*=F{psKEF%4x_Ltz;qo6YdH+eKO=Q`8>IWK6U*mQs zIX6eyjvunZ9H_47I}+gPpwCKXg}U>Do(>o8$vUPan@g2%%~~Pp@8WY~l0vLboZ|jg`GWpf7Ysl_{(4KNci%b}FL$1x zA9`c9FJbQ)VPAb)`R#UfK>}}07Nc9$!hdm}{sEXtZ{p+rI+|xkw?(+6c1o1=_(mU> z9hXEP;am$bxDlh-wB02czYrp!cS=#8yGM$^%Obu=@f7>9FLZLqmdn+Xghs`=?kIO> z)8zvd7*UJ35W`+gtGcRQBfbdE-{I7=#V?UJzvSwr7h8Wy!u%g}iesJSq*YI8Sg=>w z>%ql7A5v#q?-WXDM6h}0dcI;!w!Zu)1*6I%NpiA5z!KdBUa#21FOJJ{bH85>o}vy9 zc<$nhd6pu6%XcUCF5TSuouoSWH{RTduT6>5T^V;?NRYv(fwJRnI%Rxp%A0HQja4C+ z24$#Hy@d{XBUberZi+(C=WG+inI6E&nt#AQr78|@UWIHLLB;fL}F(5?2!UZz0@ zuBLt5YZn(k)+#Dn+#Tz7WrQ_WBGH_}uGrGT)jT6}*u$%Y)c%-Zq7pCv(tLN|_LSbI zciENpZ*(r(Ku*VxfX*ozq98Eb3oo#E{)tAGQl+G3Cp@HzbwIv|(OG8Q!_= z9woE$In-i@*`N2-oxiEKQc*|N_NUVaDb2^i(8wjYc+^n2(@Kg_hT!;t8S=fL^9Q^1OhY%KDTC8f z+{*uYC;T+rz0=~(NDDrFmZBRpH)lxl7yC)a5nGBK@8HNEAYw+`W0Rb=7~zk85b^W? zIPzcR|6GY_mfZK)WbcsQbTZ94$zu)2e&wLT*%??tk`u(q{&hT~E}o;~w!*R3X}6cd zcYEGFc6(6Qx zEiNuCf_a!RoDKJ%l?xCUH4BIGuDMx_9$A6i7dV>E9M7yL@;9Eq8*01x3d}Y)+B)9^ ze|4k8s&Re6&H;O85h`M>Yhdx>t5gZGiH9EQtxq;qs=Sp%m}GWn`FyU(9!yrs<-g(shXm4Esv2(lGR83fnO zv-qKpNzRypeU;IbGub5Jnd!;l3YLpbYqe?$^7}pH1GjTK(l=s{QkWK170&{fA%5~v z1}8Q3SmD~?3p&yZZAHboxiyp{-bpU9iN#M&Hu~J8hQ=55@kHb%FU-y^-rhCf#I+fD zL}ZW9*+9c%N-z@pld8U)3ZBfApw3}t5q~sB-{aiX;>Q@_8@#;p#@dXSQg-~{*y)V5 zZWX%sc9K^_h1$le3RGdJ3vF^g`TaUo)SK;-enn3`dNA3Y(`TFH!>FuXnpfZW-gsbS zIPrCM&O7!Lwph+HquC2SAEv&YMsp(jl|7+<>D75;V~mv7AC_v+@e#2<;PAdqn2y?B zEU7Kva$8<79Xjco0&F*whCc#;gc5fz^2FAX4G7$6x$&JYs<}ydlC&Pw!V{K<4$3uNKh+aR> zLm!a&l_$Nl>1=CeB3b1phigi+uw0%ckTS*vNB3H4!=<}r1b?hyiPCl|89(Z5n>EK_ z{~k}LPio}wRCJowa6tRv8B1B3LJ7eOO*X4W!-RXEwX4*z0tF2wt+Yd^`E7H9C-9g@ zRC;*^+N4Vw#QU~>iqATiAC5!B>TK{#3M<$!RFd-dX#j+nsujlvNK$W>6Cq^T(h{)& zBe~=PQuSqp*~J)Sbxrl)riQzfHBhUyxA{|$cBmQYFK!EepVoe9_?K`Qt3a2CoNkvK zCxh1xJN)M8Z5e zmayEKvAdRzBlIZ^wGKf^&;#*)Py1nk1i5~?o<-HyR-kCF$Vp>WByo5;{;^@MbCUhp z>|t*Gca~@0He{6L+IrMS?m;DS9W>PA;sV{Pg`$$^hl$?4F5YiK5pJ;);wQx`IplV= z;!5q2FeTZA>!oA(E=#}hUVYbs4=0i>KhMha#u?VR&OPj~VbD&eP+4U2tf5}5k7&cC zQPhm#MMuNPk=mvQE=7&7m<2%rk4*jLqD2xy9ElpJ|$nZ_$J3(c9?sz;c|+n%%j9S zYkc$2S}>BZu+Un*cO#oB|G&GXN^9!>QE7aMO#jW;(&ke{mBbW*65nt9ii#nieTuu2 z?S|O~&87_HlY*arQZhKNb2+;>rIy#vI<2f9u#dMwd^DdZY?YsG&%s;rxpfTjk;0$ui_ZJh3k74(p<-0s8nJ8n3N>^NER@Bhtjwi#?ko*`19~o z{oP5>?mdvL`WUZ>7-9^|Pt*)5!3>$y<#BkFz!#pHYv8gdnoU4>QI9DWALh3v<_CTx zUs(iI*COzHeEgII=LVe>s=cgX-QFV1$EC3esKICinv>#LeDIu5Cd@$xCqPe6`EW-OT@7qD&VmoD=QKAgn&UTzNJu1#>b(%hAOI*n~uc3Xxt`P!KV8*Zm^^f3Ju%u7Ss)i9T=J|0SO> zzAd78fFwac4S~I;R%;xIvr|aL8hhJ zBF^qx^s8E~V&@pR8%$`e)kWt!DB zYJVf)=0+fPLehn(a-fi`c9yu0kiS-D|B2Rp<->vG6`sn-eFRvBIJjY@gQSBt->F%A z?yT)8`y2zS;`wLQ7+yIjizvAJaD0%EvHBdA8;Q6+WC|rG#DeShcgVli8p6@FdS3g&iW=a(cM7_4zBgb-n`wHQB|A7iM{z!X@X(hGHn^OJ^f z`h43nKWF(i1IxC-8In9@UCN#~NT{Pi)FpSK@p}RI=5?eDqzmtTYk1R>eg`YPZpy}) z18g2DQlg*P=(BD9VY}1+`$~|kDb{9#1R+~cQ62>Nw}GSxuiD9W8lQ1RtM)7JQ0`mH zxvyE=I?K*}uneSxdUXpDJrDMy&uDHZ+4pJI3#+TFLOIL&cN^g*mjIe`Zh2YdC)GpR z!7y7ujJu*kE%2=`oB{P|3)$V|LvXFMK)+?O*Kg5dZQL*7930VsZ>l{tv@xx zYsW`>C5;B33Yfd2orq1|6pI-Nl%ZR~{aOTD$U78%<|qc)N`ri~O=;d=96~&G=Yl^m z_vHzw>hb0Z_K!$_^r zef2+_yQF$lURwFnm9|v_p=0`F2re3I!mJb~v}nxC^X30^j|Q_&AD)81T?^Nmnwok5oj+|x&A$rF-JxI#aX8>j30a`4PY?*u;b#@JL)TjD>^4#s z_MYO8b3;!%k#{k}%ORCQJEAKZ_Q`p-wx_RNT&%8XnwH#Zb(N%sb`dtf3>DwfdORWr|kaesbFC}!i9?R+x|`;2~|@6d%T-25iB3HN~yyX@Qwrm zRkS6V3qj#JvLh6}>yA}{S)CW^%5SH7w&?jMmHZt}R@JMy_Ol|39BpXe(o&D^bCf(U zP;p|L7*pbn;2q=gh?QX-=va?cQ3Jt7eTcs}m0Le!37R}x01khKzLH`}qDU

8@A9 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 Y8sD5<(gDfMl>UD>@ACiFJN}*f7yZmO(EtDd literal 0 HcmV?d00001 -- Gitee