Android Studio通过JNI调用NDK程序
NDK开发,其实是为了项目需要调用底层的一些C/C++的一些东西;另外就是为了效率更加高些,安全性更高。
如果你在Eclipse+ADT下开发过NDK就能体会到要么是配置NDK还要下载Cygwin,配置Cygwin ,然后需要编译生成,相当的蛋疼。要么是直接用Eclipse开发,但是前期配置也是一堆;真心蛋疼。但是现在在AS上Eclipse能做到的这边都OK。
(一) 通过jniaes案例说明调用NDK层配置过程
而我们通过底层来判断签名是否正确,如果正确则继续执行核心代码,否则退出程序,这样就可以防止别人恶意反编译,并进行二次打包。
首先去官网下载一个最新的NDK,随便放到哪都行,像我放在D:\Dev\Android\android-ndk-r10d.
(1) 新建一个项目:名称JniAes
首先在java类中添加native接口,注意写好native接口和System.loadLibrary()即可。代码如下:
public synchronized static native String getFromNativeIv();
public synchronized static native String getStringFromNative();
public synchronized static native int jniCheckAPP(Context context);
然后build project得到其中中间文件,我们关注的是.class文件。编译OK以后生成的class文件在AS工程的如下目录:
aes\app\build\intermediates\classes\debug\android\
(2)接下来跟class文件生成相应的.h头文件,执行如下命令即可
点击"View->Tool Windows->Terminal" 即在Studio中进行终端命令行工具.执行如下命令生成c语言头文件.
javah -d jni -classpath c:\Users\sodinochen\AppData\Local\Android\sdk\platforms
\android-16\android.jar;..\..\build\intermediates\classes\debug com.aes.jniaes.MainActivity
(3)然后将刚才的 .h文件剪切过来。在jni目录下新建一个c文件,随意取名,我的叫strk.c 。
strk.c文件,用于实现核心代码逻辑,判断包名.哈希值是否合法,如果返回1,为合法。反之,则不合法。入口方法为:
jint Java_com_aes_jniaes_MainActivity_jniCheckAPP(JNIEnv* env, jobject context,
jobject thiz)
接下来在工程的local.properties文件中添加NDK路径(上面下载好的那个NDK),类似其中的SDK路径一样,我的添加后如下:
sdk.dir=D\:\\Dev\\Android\\android-sdk-windows
ndk.dir=D\:\\Dev\\Android\\android-ndk-r10d
(4)接下来在app module目录下的build.gradle中设置库文件名(生成的so文件名)。找到gradle文件的defaultConfig这项,在里面添加如下内容:
defaultConfig {
applicationId "com.aes.jniaes"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0" ndk {
moduleName "checkapp-jni" //生成的so名字
abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库。目前可有可无。
}
}
(5)最后就是添加静态初始化loadLibrary代码,添加如下:
static {
System.loadLibrary("checkapp-jni"); //so文件的名字
}
编译出来的so文件在aes\app\build\intermediates\ndk\debug\lib目录下
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgcAAAFDCAIAAAAh4jqLAAAgAElEQVR4nOy9Z3/jSH4u2t/Jr+8nuNf2etPM9EwH5UBRpEiKOSCDlKjEnCNAggRJ5Zwl5iyp0/SE9XjX9vr47O5Ze3e9TqfviwIYJKq7Z86MvXcu6/e8kEigADyoep76/6sAPphbv5lbv5l/F8Bmc2vXprVr09q1ce3KuHZlXL0iV6/I1Sti9ZpYvcZXr9HMNZy+NqSv9alrXepay15r2BsNe6Nlb7SpG13qmS71TJ96pk/d6FM3htQNlL6B0zdI5gbL3OCrN8TqDbl2Y1y7boH8miDWrom1K2Ltili9ItauyLWr1lfGtWvjOoeOXa7I1vY9sQbq6dhlvYWbe9BVf2flOIdrbPUayVxDXURdq9lrNXujYW80qRttN3SAsfQ1lL6G09dI5hpdvcZXwfW20YOT9TvoydXq/ZfZ3r7ntfTGrRMjuurkiDKu37QPBxpSpklkmkS6gXeh2fkvlq6j6RqariKpCpwqw6kSxJagVAlOlZF0BU1XsUwNX60Tq01y7aqzLRlBu+UabbMbV21kmh1oEOn7UCfSdSJ1B+n6/bs0iHSDzDQ66r8yrnbi2rh63fqXXL0iM3fR7IWGMd0wputGtkoyJZLOkZELInhC+I8I7z7h3iVc24Rrh3DtkK4d0r1LevZIzx7p3Sf9h2TwhIycG6msMV4wJspGtmpMN4yrTeNq09hJyx10Ebt+04VetBt73A4gJh1YveqF6w703OA2OqjrJirdINMNMlUnU3UyWSXjRZLKkeFzMnhC+o9I7z7p3iUBS64do2vH6N41evaMnn2jd9/oOzQGT4zhcyOVNcbyRqZkTFaNqbox0zRmml1ne+sa128AbrN0hyty7XbjJFabXKfoQoPIgO5Qx9N1LFVrAU/V8HSdyDSITLPHbXo3roxrVw/m1q45rF+/nyV0Ut8kV5tE5grPXGGZKzRzBaWudOyVOnmlTFwpEtdy5nqWuZ5lbmYTN/LEjSL5TNnGjSp5o2FvdOyNPnUNpa6R9DWWuSZWr8lVXiMAKV1oKXW36LSlqolnABp4pkFkuL3Ibocg2+rWJDq2vwf8oW/p5jvQcYj2UZqAKCR9ZUhdaXmu5MzVLHMtY65lLbqSzxQcbhSJG0XyRpW8VrPXWvZal7oypK7g9BWaucI5tK66yV9y7xPmnKAXV92X2Zurzu0xgPRtcNsAb+i2h95EdfgBnm7gqTrG1jG2hrH1DtQwtoayNZStwmwZShb1ybwukdMmshrmUsOca5gLbeJSn8wZ2AKcKiHpCpauEZlGl/RzKl/HU3U8VcPZO+A/x9gqlgSooIkKmih3gSmjTBlhSm3ES0i8iMS5f1Gmc/tKG8kKlqxgySrGVnG2hqdqRKpOpBtk+o7Kp5tkukmkm283GA6pOpmqkWwVyBwRvSQCJ7hnD3ds4dY1fDmFmxP4fBw3M4SZIRYSxGKSWGSJpRSxnCasa6Rji/Tskf4jMnxGUlkyXiTZKpmqk+m2w+EcaXU8Vce54zYJcKpADe6IC9ly30yT5IWMzHAe3CWgq9fG237MO+hdZu5Dugtd1KUaXbbN1ohklUhUiFiBiFwQ/mPcvYfbN3HLGr6Uws0JYj5OmBnCzJALCXIxSS6y5FKKXE6TllXSsUm690jfERk6I6OXZKxAJiskWyNT/FCgdT6ta3ynEHcMR4hMg0g3uHbYofVtsFWMraJsFU1W0GQFSZQRpgQzRThehJkiDFpjooyyFYyzB+5kettDt9e2btkD0+qVafWq5Q3zd9D6yrR2beIutWnMtG52E880sXQTTV9BqStd8kqVuJqNX0liVzP0lYi+nqavp+kbUexGHHs2E38uYQCeSePPZMwzOXOjTNyok9da9tqQukLSVxjQuDQnEHiqhqXqHNJ1PM3pFy89zZa0YekGlq5jqTqa4uQDZatYqtbai2gpJnfaDTxdB7tgqVrnXh2ooeBmpOt4ptFpS++whA7L6XQdLN1E000k3YRSTW2yqWSas/GmJHYlpq9E9LWQuhbSN9M0x9UM83wm/gxAEr+RMTdy5lqZuFInr3TslSF1haSbaLqJphtoqo6mWkOG21x1GipPVwNL17F0HeUu/DZXeAdXeDdXnbugbBXpBsrW0FS90xuIDm94myWkG3gKWEINTVbRRCcqSKKCJMpwogQlijomp4lfqGJnCvpETh/NUgcyal9G7cvpI2XsRB0/0yYuDck8zJawdBUMpjh1S9VxtoYlK5ymx0tIvAjHizAQ9Din73C8CMcKEF2A6DxE5QxUzhDN3oI+eqmPXOojF7rIhS4McK4LX+gjF/rIpT56yW1JZQ2gBh4QnYfoAhwDFlJGExUsWcXZGq9ZjQ7UcfYuepkZW8MTFYIpE/EiEc3i/iPcuY0tp7H5OEZGMTSAGdyY3oUb3DjkIWAvgfgI1E9gAQIPEcYoYWaIlQzh2CQ8+0TwhIheEkyJSFZwzsMqaLJlbJzJYckqxvtolxR2yAIIp7guzHJy1t6FC5v47cHd6enWt2npCU7xOd/qSVcSoIozZTxewmMFPHKJ+w4x+xa2lMbm4hgZAVzhehducBOQh4S9JOIjUT+JBQg8SJBRwswQy2nCtoG793D/MR65wGNFPFHBExU8We0YW7SusW0SPZC56uaqhrHVltYjTJGT+25A8QIUyxtieQOd01NZXfRCFznXRs51kQtd9EIfvTTQWSheQBIljK1yLp5pkpn7w747QdUDY6ZhWm2aVq/mennDXKcrrF6Z2pbQAH6OpxtYuoGmmnCqqWeb6kRzNtYUU01htCmIXE1ErsfCN2Phm4nos0nq+RT9Qhh7IaRfCOnn0/RzUezZTOyZLH4jZ65ViStt8srANtFUE0s1ULaGJqtIotyFZAVNVlG2LXxYp1SxVSRZgRNlOFGCmRIUL0JMEU6UkGSFk7xUDUvVWzEXJ2rJCpLkFAdmOEAMZ7wwU4ITwHurWKoG+OWCj3b8cQddUUgDz7RSHw001UBSDTjV1CebKqYpu83V9Vj4ZpznisfzKfr5NP1MHLuRxK5l8SsFc6VONHXJJsQ2kFQdYWtwsgonyi1wXLFVFJgERxQYy7e5QpJlOFF+C1c8vV1ctRlmShBThOJFsDvElCCmBHOHrrWMoTMd1yato1G2LYGtY8kamqgiTBlhykicAxwvQfGiIV7Qx/Pa2KWKPpVHj6SRvZnwtii8KQytTwVXp0JrovDmTGRHRu0r6GN1/FyfyMFsCU1VsRSnR1iyijAlOFYwUDkg621NB2oeudRHLnXhc23oTBM8VQdO1P5jle9I5T1Ueg+V3kMVD6X3QOk5UHj2Fe59hXuvDc++0nug8h6qfIcq3xGA2n+k9h8DaAIn2uCZLnyuj1waojmILiDxEspUsEQVS1bxZJeEYckqlngXklUsUcHiJZwu4FQOD55izh1sKYWSURT2oVoHqlzBZGZMModL54nZBVK+SCqWSeUKobIQaiuhcxJogDBRxCKL29Zx9x4ePMGpHBYvorECEiu0DNJA5Q1UzkDlIToPxQpwvIgwpbZDpOqdwNgalqyiyQoKBK7lvkwJTZSxZAVjeV9ha+DWYMkqmqjwcVgZYcoo75pY8h4vbGt9DeNQbYOjqALAGRtTxmIFjMphkUvMf4Lat9BFFiEiKORFtQ5UsYJJ5/E7XJEqCwm4Qvw4GcXNCcyyhjl3MP8xFslisQIaK6LxEhIHYWLLOHkXTN2bVMS5kUoVTVYQpgzHixCd11NZffRSF7nQRS60kXNt+Fwb4RE+14bPNKFTTehUHTxW+Y+UvkOFd1/h3Vf6DpS+Q5X/SBM80UUuDHQOYUposoJxTty8a969Q6t04wGZrhszTVOmOddtDLexemVavTK1LCHdIPmxAJpqIGwDYhu6ZFMRb0qo5lSkORFqjgavhoPXg4GbweCz4dDz0ciL8ejLCerlJIcXU/SLafrZTOxGGruWx6/UTFOXbMJsA2FrcKICxYvAD9uI5aF4AealpxNwogwxRUO8YIjl9XROR11qoxe66KWeyhpieShehJkSsBa0ZQNADeMFQ6zAGS+d01NZPZXVUVkdldVTWT2d09M5QywPA3554yUyvDHcAz5KaGXDgRXVkVQdZhsQ29Ammop4c4ZqTkWa4/dzxeOFgHoupJ+J6JuZ2LUsdqVkmppEw5CsQ8kaxJQN8aKezoOzbZ0z4Arp4qra4gpqc5W9jyvkHq70PFc6KquLXuqilzxjOUMsDzFFJFlBU7V2iNayhF7jFNAiuSghUUGYMhIvwbEiAEQXIbqgp3Na6lJDnSujJ7Lwvji0NRVYnfCnxv3JUR8z7I2N+OLj/qQgmJkObUgiO3L6SB0/NyTycLKEJEtIoowmyki8BFE5XeRCEzwFcq/0Hio9B0rPgdJ7oOTk/lDh3pe7dmcd2zL7ltS2KbGuz1jWACSWNYllXWJZm1lZE6+sipcz4uWMaDktWkqLltKi5bR4JTNjWZNY1yXWdYl1Q2LdkFo3pLYNqW1TatuU2TdnHdty167Sc6DyHWkCp7rwhSGag+kiJyjAHgCYCsqh3IU4j/YnJZTOY9EsFr7AvIeoZQ010YjBgygtqMyMiUlMgOCTECFASCFmFBFGMWmcMZIzRlJiImcXCI2NgH04GcUXkphtA/Pso6FzJJqFo5eGyKU+fMHb5JkmcKoJnmpDZ7rwhS5yqY9mIToPx4oIA+KeVsaMu4MQnTdQOX00q49cctYbzRqoHAxMhUu4cXEbHCty8RkA1Q6qUKaCJir3WyOQ+050clVCOhErItEcGr5Ag2eoex9ZziAkhejdiGIFlZoxEYkJYHyizZVJTPJ0mQiZmVBbcciD4WF0PoFa1lDXHho8QyJZOJqFozmIykFUHqLzcAyceZFPJ7byh23TQoELJioIw3Glj2Z14XNN8BRovdJ7oPAeKDz7Cs8+0H2F90Dh3Zd79uTu3VnXjsy5LXVsSuwbM9a1GeuaxLYudWzKnNtyz57Kf6QNn0N0nnNutoanGneyaj1CLmDqDwi2Zkw3TJkGZww9/ADgyrR6Zcw0jZwltEM2lK3DbANKNrSJhjzWEEebk6HmaKA55L8a8F8/8d088T0fCLwYCr0cjbwai346Hn01Hn01Qb2apF4K6Rci+pkkdjMbu1LGm1qmYUjUIKZiiBV00aw2fKYJnqh5aEKn2si5LnoJVM8QyxtivE5ROV30Uhs514TP1METVeBY6T9S+o/UwRNN+EwXvQASb2jtyAVfl7rohTZyAXbUhM40oVN1+4inmtAp2N1A52GmhLIgI9F4tyu0LaEOcrJgAI6wdZitG5INDdOYpRuiaGMy1BwBXPm6uBqJvBqLfjoWfcXT9XKKej5NPRPT11L6ShFrqON1PVMzxMs6uqCNXmpCZ+p3ctVygjZXp9+YK3XoFFCtCpyogyfq0KkmfKaNXOjpHOCqbaKr90TQIJfaOWIClkAXIboAUXmIyhuovD6a1UYv1JFTReRIFtoTBTcF/vSolxnyUAPuyFNX6LEr8MQVHPRER33xCX9KGFqXRHYV9LE2fmlgChBTgOIFMArThc/V/mOFe48X/Q2JZX0GaL11XWrdkFjXxSurosWU0JycmmcEptikkZ4go+NEdIKMTpDUpJGaNFITJDVORMeJyDgeHuMxTkQmyOikkRKYYoK5eCem5pmp+YTQnJheZMXLGYl1XWbfVrj21L4jbfDMEM3CbQUso0wF6D4vZJ0o9gBdQKJZNHSBBk5R1x66mEKwEKK2AZnDBQgxpiNHNcYxnWlCPyeA5gSwSQCbBLBRAJPTOCFbwDV2HPFhRgpdSiOObcR/DIXO9IFTrf9Y7TtSeg8VngO5e0/u3JW7dhXufaXnQOU9VPuPNcFTXZjTeh7ACS514Qsu5GoZcHuXcy4yi2YN0ZyhZRuhcw7hC134oh1OxUpI2wh7Sj8IK2/RVUTA2IIuwnSBA5WHw5dI8AzxHSOOHcSchJEArLIiknl0msAnYWJM25urSYgUYoR0HlNZUYMHJSLIAovYNmHfERQ8MwTP9MEzXfBM233+gBlgFRBdAD4Hx4oQF4EVQPPWhS80wTO1/1jpPZC7dqX2LYltQ2Jbn7GuA8Wfsa7NWNdnwCeWNbFlVbSSnl5OCReTUwuMYD4umI8LFxLTS6xoJS2xrcvdu+rAsT56CcUKCFNCk1WcreOpRhs9kpPthNsDPFkhUzVjum7KNOZaEUMvmMBUe7pBputkqk6kakSqhrM1lK3DyQ6lCzcmAs1hX3PQe/XUe/PI8+yR5/lT/4vB4KuR8Kdjkdfj0dfj0dcT1KcC6pWQeimin8/QN7LYlSLW0MRr+nhFHytqI5fq4KnCeyB378rdu7Pu3Vn3rty9p/AecPoVOtOEzjThM6BQquCJ0n+k8B3IPfuz7l2Za1vq2JI6tmbduwrvvtJ/qA4cA63kdzlVB0/UgWNV4EjlP1L6D5W+Q+DMcs8edzgPONyhOniii1xAsTySKHPBMh8x8LNnt9axtBbStGJqbrIUSdagZN2QaGiYxizVxdUT7/Vdrsair8ejn05EP52kXk1RL6ap52LqRkpfyemGKlbTxis6uqiJXKoCJwrvwSxPVIsrVYsrcNXhc2AeqrdypXo3VwcK74Hcsy93d3PlO1QHT7SRC8M7uerMQadbuaMKwpS5MSOVM0RzhmhOH83qIhfq8KkidCgL7okDmwJfetQTH3CFHzn9nzh8Hzs8D+3ujx2ex67AoDs64o1P+tOi0OZs9EAdO9fFs/pYzhDLQXReH7lU+08U7j2pbVO8sipaSgsXklPzDK/azNR8QjAXnzBSY3h4BA0Mw74hg2dA73qqdTzVOga0zgGda1DvHtS7B3SuAZ3zqdYJvuLhHNC7Bg2eIcg7DPs6MYL4R9HAKBocJyKTppjQnBQvZaTWDblzV+U90gXPDZEsFM3DQAE7RY1uoXAvqDzSVrpt1JxAkQCqtGAzc/g0Tgpg07hubkwzP6adH9eZJ/Tmcd38mNY0qjGOqMlxPSEicPkSpnOiWAiZZ2DLOuTZ1/uONN4DlXtP7twBMdOMZV28vCpeXp2xrEmsG1LbpsyxLXftgbhH7T9RB07UgRNN4FQdOFH5jpTeg1bUBWSO34ULlVQ+kFg7UftP1D4uU6fyHqp8R2rfsdp/ogmc6kIXhkgWovIwXYRjRY6Z+83yNldUAabyMJWHWohm4dA57D+BPYewbROeYxDIhyiWUbERF+LkJGwa082N9uJqWE2O6XAhjskWULUdQfywKQ6trEHufYP/WOc71viO1N4jVTvN2L5ALsYKnmlD510InmkCpyrfsdJzIHfvyRzbEuu6eDkjXEhOmRNTZkYwzym+wMxMmRNTC4kpc0IwH5+ci02Y6AkjNU5GxojQKBYcxYPjZGRyjp4yM6LltNSxqfQeaMPnBioHx4oIU8aStbb6c2m3Op5s/9uZf3uAMSWCrZJszZiqm9INU6YJMNcCsITVpinTBKvfyFSdTNWIVI1gqzhbQ5M1OFk3JOqaOK90/uawtznouXrivn7kevbI/fyp9+VQ4NVo6PV45LOJyGeT0dcC6rWQ+lREvxLTLyT0s1n6SkE31HRVR5d00ZwqeCr37EsdmzPWtRnLqtiyKl7JiC2rEtu61LE169qZde/JPRxm3Xsy147UsQWCKbFldXo5LVxip5dSYktmhttle9a1I3fvcnsBOXPtyFzbMue2zLkldWxJ7ZsSG1fDjHVNYt+QObZmXTsK774meKKPXsJMEU1WMLaKp2rtWCwD0JW249YSdCx3wbjUfA1K3OKq8T5cTVGfTlMvRdTzGepGSl3J6bqKrmrokiaaUwZOZz37EvsmOPO7XLWIknv25Z7bXInucCX7mlyJrWsS24aU50p9hyu8tVgzc2tdZpNsTwJX0UQFiZdgugBReX4ImdVHLrXhc2XoSBbcmwlsTflWxzzMoCvyyOF7aHd9ZHd+aHN+aHN8ZHd94vA9dYWGPPS4LzkdXJdG9lT0qTZ2qaMv9VRWH83qQucq76HMsS1ezgjNScFcfIKkxvDwKBocRYOjWGgUC40ggSGDd0DrfKyyfaJY+Xh28SOp+UPJ3Iczcx9J5j+Smh/KFj6eXXwoW+AgNXOQga+WPlEsP1JaHqssj5WWx0rLI6Xlscr6RG17qnEMaJ1DBs8oGpwgolNzjGgxLbVuKFx7av+xLnSuD18aojmYKnSLWie6BY4HDJQucIJ4DxH7FjqfQJEAprTg0nlSbDRN4+YpZGHSsDCpX5jQLY5rF0Y188PKuUG58YmMHFQQkxA+Y8JUVgTywUYKWkobnDtaz77KuSu3b0mt6+Ll1enFlNCcEMzFBaaYYI6ZMieEC0nRYkq8siqxrsvsWzLH9qxjZ9a5M+vckQEbsG7MWNbEyxnRUlq4wE6ZE0JzUrQEdtmQ2jbbezl2Zh3bMvu2zL4ls2/NOnZARKLyHmr8J7oQZ5kQlefJKfZCF2kdNpDrQuQSCp5BvmPYfQBbN5C5OAL7UMUKJpkjxaRpGjNPwQuThoWJLq5MA3LjEykxIMfHDajIiMiXYb0bIqKGxbTBuaPzHGjc+yrXnty5M+vYljm4C+HAMbMrd+0p3PsK977Cc6Bw78vd+3LX3qxzR2rfAhHq9GJqap6ZMNFjRAS0xjbw8BgRHiMiY0RkFA+NYMERNDCM+IZg7yDkHjC4BiH3MOIfxUMTxujUQmLGuiZ374KeaKDzcLzITXV0zUjVsM75mI5pmAdorEAkykSyQrJVY6pmTNWN6bopXTelGyY+s8SjwbtCjUzVCLZKsCBBVoMTNShR18Yb8mhDHGpM+hojnuaQ++qp8/qR4+aR89lT94th36ux4OuJ8GeTkc+mop8Jqc9E1Gsx/UpCv5ACV6DqaqqipQqa8IXCeyh1bImW08IF4JnxyfmYYD4+tZCYXkqJVjJiy6rYsia2rnHStpKZXmrHUxNz9LiRmjBRXGC1nAJC2RGIdZjNSka0khYtp0XLqeklFlQiXEiIllNiy6rEvjHr2lH5D3XhcyhWQBNlTuw6Z9haq1x4yetcgIHzCzDQJHCFGucK0YYo1JjwNUY8zcF3cTVNvRZTr2aoF1LqmYy6klN1ZbSsjhbUoQu591Di2BItp6fu56oVh4qtq6KVTGfsOTlHT7yTK+uq2LIqtrS5mm5xZWamwF6WVYmN40obPgehVQdXrWk3jiuSB3E7fQQCBc4SdJELTfhMETyUBnZE/vVJb2rETT9xBh/a3R/Y7B/YHAAf2XhXcFPj3qQwsC4N7ympEy19oaUuddFLffRSGzxTuPelto3pxZTAFBsnoqNocAjyguH/oN49qHc91Toeq6wfy5c+ksx/IDb+ZBr/0RT6wwnoryagH07CP5pCfyzEfiLEfzLdAtHCT0XkB2LjhzOmjyTzH0nnP5LwkJofyhY/kS89Uqw8UdsH9e5RJDBBRKfmGfFyRmbfUnoONP4TXZAzhru634XoXaXLwkFu/IvYt1BzEkODuMZOyhdNMrNZOrckMS6L8CUhsjRpWBzTLAwr55/KTI9myIdC/BMxPqLGhDg6u4ToXBAeNiywOvuWxrmrsG9JLWvipbTQnBSY4hNkdBQLAfvk02WUwBSfmk9ML7LczAoPYAOCOWbSFJswUuNEdAwPjxGRCSMtmIsLzcnpxZRoMSVaSnNzM0sZ0VJatJgWL2VmVtak1g2ZfUvu3FV6OGPQR7KGSNYQzbXtgeoZNhXgHn6QhcCSsEgWCl9AgVPIdwS792HrBjLPoEgAU9uI2QWTbN4sMS3N9ORKTH4kxD8RY0MqVIDCUjOkcUBYyGBO6u1bWteeyrkjt29JOSNcFS2lpxdT0wvs9CLbeaUzK2szlnWJZX3Gsg6mpkRLGeECOzXPTIIGiYWGEf+gwTOgdw8a3IMGD8AQ5B2CfcOIfxjxD8HeQcgzoHc91Tmf6BxPtPbHGusTrX3Q4B5GfGNEaHIuJlpOy5zbYHZBH82CRQ0I0z37cmeGpvXVA4TOYUwRZ0qcNySrJFsl2aqRrQGT4L2hYQKPyXCLo2sEWwVr19BEFU7UIKaujdXl0cZMsCHwNUbdjSFn86nj6rHt+rHtZsD5fNjzcsz/6WTw9VTotTDyWhR9LaZeS6hXUurFLPVMTl0pozVVtKSJ5FXBs1nXntiyNmVmJkwgSgqP4sFRPDRORiZM1OR8TGBmBGZmysxMLTACMzM5H5sw0ePG6BgZGSWAl/pHsMAYERo3RifnYgJzHOiXcDEpXEwKF0A4xkyZGYE5zoVp87HJOXrCRI0boxMmasrMTC+xYsuqzLGp9O5rQqcGKofw6yg61553LLlrLTYAky4gT1fF2CrGrS+uwomageOqLg42BN63cSXo4GqGeiWlnsuom1nqShGtKSMldSSnDJzJXHtiy5rAzPARZRdXgvkYR5SZAZd8i6vRNlfh9+dqspsrgTkOuJI6NhU8V/AdrnAWoEakakSqTnJE1XC2iiUqKFNG4kWYLkB8rpl3hVN58EAS2Bb6Vsc9ySFX9LHD/5HN+VOr7QOr/UOb40Ob46HN/cjhH3CFh930uDc53eUKF12uYN2YXmAnTbFxPDyC+Af17qda51ON44nG/kRte6S0fDy7+OHM3E+miR8J0L+agP5yTPfnw+o/H1b/xYjmB2O6vxo3/BA4xCTyIwHyIwHKYQr98RQwDOKnIrITH4iNH87MPZSaP55deqS0DGidw5BvDAsLTDHRYooLF7xHGv+JLnimD18a2grIA8QEPQe//PgX9h8DV8AWWBwPE3qXUWWZV60sKpdWFIsW2dyKCF+eNCyOqBYGZHOPxMYPBfiPx7APJtGns+gEhEjmYY3dgAb18wmtdUPt2JZb1iVL6WlzctIUGyciI2iAc1AgUpBvGPaPosExPDJBUpNGmoMpNmGkx8koGPCOoMERJDAM+8AuI0hgDA9PkFGw5WTnBIwpLjDFpuYYoVhkEAkAACAASURBVDkpWkrPrKzJbJty567Kc6gJnOpC57rQBUcOz8k7jKFtn1mO0m5XQGybqDmJ4SFC5zSqLPPK5UXF0opiwSKbWxFhba4+AVyNYj+dQJ/IkDE9LDZBKpsBCejnEzrbpsa5q7RvzVrXZ5a5GSnBXHzSSE2QUR7UhJECFzs1n5iaT0zNM4I5RjAXnzTSvBkEhiDvgN79VOt8orE/Vtsea+xPNPYnWsdTrfOpzjWg50yC8wOt/bHG9lhtfaS2PFKtPFZbn+qdQ7B3FAtOmKjppZTUvqn0HrYmfrgpDW7WnZ+h6ZjD75yteQBHL9FYHosVsHgRixdxpsQ5REcAAeIGYAnGVI1kayRbJZJVPAmWfFWRRA1i6rpYXRGpzwTqU576mLM+bG8MWBuPV5qPLVcD9psR1/Nxz8tJ/6upwKvp0Kfi8KczkU+lkZey6PPZ6I0i2lRGqqpwUR3KKv0nMseOaDkzOUePEaFRLDCC+odg7xDsHUH9o3hwjAiPk5FxMjJujI4bo7wUhkawwDDq5wMrzxDsGUb9IOM2YYyCEfHkHA3kbMJITfC7tzBGhMfwEDjE5BwtXEiIl9NS+4aiPXuTh2N5OF5A4kWEAWsM2ovt8FSt45HXGp6qAR3k1n0nKkiiCjOcgwKuBO/BlSj86UzklSTyUhp9Phu9kUebikhVGS6qQlmF/0Tq2JleTre4Gu7JFbjSbq5G3p8rE8+V8R6uTLRwISF6b67wZJVoLdJna3iy2xX4RwTA+lFN5EweOpgJbAl9q+OexJAr+sjh+9DmaLnCRzbnx3bPY0dgwBUZdscmvOx0YEMa3lNRp1r6Qkdd6qhLfTSrDZ0rPQdS26ZoMSWYi48TkREkMGjwDGidTzX2J2rbY5X1E8XyQ5n5A7Hxx0Lsh5PwD8b0fzGi+X8Glf/3oOLPh1QtY+BCBwHyoykU4McAXCRB3IohWq7wmHMF7xgWmjTS0wtJycrarGNH6d5XtYwhdKEPX95RwHyH3vV0hRPEc4g6trHFFEFGScg7p3UsaG3LGqtVY7EqFiwzxPKkYXFYYX48Y/poivzxGPaDQfSHI8gnM8ioFhYbIZXVAPt1c3GtZV1l35pdWRMvpqbmuChhGPIN6FztGRSdc0DvGjJ4h2H/CJ9/a2EECQzD/iHIO2jwDOrdA3rXgM45oOO2H0WDY1h4DA+P45FxggceGccjE0RUYIoJzUnRYlqysiazbylce4AZbeBUF2x7A0cLZwZFhC4inamk21xlOYQvoOAZ7DuGPQeIfQtbZHEySho8Jq3drLEta6xWdU+uRrG/HEB+OIx8LIZHNNA0CSksBtivn4vrrBsax47CtildWRMvpoXmRCsMHUH8I4h/GPYPw/4RhLvqcSIyTkTH8cgYHgauOQz7Bg2epzrXE43jsdr2SGV9pLR8olx5pLI8Ulkfq22cN+hcA3r3gN79VOd8yoUI3a6gcw7BnhEsMGGkphdZiW1D4dlX+481wTN+RUAeAvk3sK4h3rXmre0K8fIDKHKBUFmEyiF0DqFzKJ1rmQSwB5KtgrQSZwmpGslWCbZKJCt4osy5AlOFmZouVleG6xJ/bcpdG3fURqy1gZX646X646XGgOVqxH4z7nw26Xkx5X0x7X8pDrycCb2Uhp7Lws9mI9eKSEMZrqhCBXXwUuk7ljq2p5fSkyZ6DA9xGTTIMwi5h4HYYcFRPDSGh8aI0BgRGsW5AS/QuCHYMwh5Bg3uIcgzjPhGQcTAa1nbCYgw0LUOBEex4CgWGMUCY3ho0kRxrmDbkLt31f4jXeTcQIFHk7IQlYPoHFiFhsQLCFNEE2U8WQWj4NZUPM5HVBhYHMlUYKYKMTUdXVd0cmV7G1eiwMuZ0EsJz5U80lCEK8pQQRW8VPBcTXRwNdjN1VgHV2N3uBp6H65IkNbkagBmALgaeW+uYJ4rlCliiTKerBAsz1LbFbgMEggXDNGsPprVRs4V4UNJcFvoXxv3Jofc0cdOP+cKtl6u4GOnAxuylivQl3oqa6CyuvC5yns469ieWV4VmhOTRnoMDw/DviGDG+jdE42dixUkcz8VkT+easUKKmAJfwlihUn4RwL0x0KsOyy4HSL8VER+IDJ+IDJ+OGP6SGr+eHbxkRJkkFzDsA+4gtCcnFlZldm3FK5dpedA7TvS+E+0wTNd6FwfvjBE7spfx+xChyuADBLiPUQdO/hSmjDSRtg3p3cu6BzLOrtVa7OpliwScllgWBxSmB+JTR8KiB+NoH/xBPnBEPJQBA9rYBEJKS0G2KczxYAryFZWxQvs1Fy8lWob0Dmfatqz6wM656DePQR5geqNIAGAYcQPggOQCWnNzA/oXIMGzzDsG0EDLf8Y48H9i4cnSWpqjpleYMXLGal1o2WZah//tAc3B5PlaQFTzZ1T0MAhWlx1pJIilzBwUO8h6tjGl9KEkTLCvjndHa4mu7n68yfIDwbhh9PwkBoSEpBixQD5ul1hVbSYmppnJo3UGBYCSxWGQAqID7CGET+YxBpBA8AwQPj1VOt8orY/VlkfqSyPlJZPFCufKFceKduuANgbMLgHDe4BvRuEC091jidaxxOt/YnG1sogjeLBCRMlXExKrGty167S17XuC5DWueS3a4FvyxUM4XM4eglHL6HoBRS5gKOXMJVFqCxK57BYAWdKRLIC5qJ5SwCBQoV3hTLKVIAr6OmaMlyT+GpCV3XcVh2xVAeXqk8Wqo/NtYGl+rClOWa7nnDcCFw3Qs8zkfe52P9MEriRBa9nQ1eKcF0ZKrdcQebYEa9kBPPxCTIyhodGscAw4htGfG2ZI8LjRHicDLcHrZzY+cGWAKNYYIwIc4NfI9Ua9k7wYjdOcLileuNkRDAXm15MzlhWZY5NBVC68Jk+Cp5f5WCIXkJUFqJzcIwXO7baZQmcK5S7XCFe093H1UIPrqZ5rqTB69nQlTxUV4TKwBWUvmOpY0e0khHMx8d7ckWExu/hauS/iSukkyvOOKtYooIxZTReQmIFridTOYjKGeicjrpQRo6loV1RYGPSxw576CfOwEd25wc2zhU+tDke2vkMkoee8LHTwQ1ZZE9F8bPNdNZA5fSRC7X/WO7alVrXRUvpljGMguVGkGdQ7wbzCiBi+HDG9JNp4kcC5K8mDD8Y1/9wEvqRAPmxEPvpNPGB2PihZO6h1MxPO5sfyswPpeaPpOaPpPPdMD+ULXyiWH6ssj7VcJYAFiMJTLHpheTMyqrMtil37ijceyrPQYf2XbS6MUwXOpbZdHsDlYMiWTh0jgROEd8R6tzBlzOEiTYid13BuCyAFkdU5icS00Mh8eMx7C8HkL8C418t7wqdscKqeJEFscIYFhpB/ENA4FrgVlv5R9AAN2PPo501MniHOpLjfNIpfCtE6FzdO2mkp+Y5V5BY12ft2wqw0qnDGPTh9tokJFZEuRW9nc9zlDroApFWDqJyMMfVCc9VmjD1dNBOrqZaXMEfi+BhDTRNAK70cwzIIClsmzJuDiYxaaJBcnII8g5B3OUPATsEroABVwgMIyCccg/o+KwRgMoK/niisT/VOp7qnAOtxB3s4+Edgr1DUPcImFuJFJteYiXWtVnnjsKzr2oZQ6htDG1XSFbxZI2bZ25lkAzhc+AHUOTcED43hM+BNyBUFqXzWLzIhwttSyD5QAFPlDGGd4V4TU/XlKGa1FcVOisT1srocmVwsfxkvvxkvjywUB1eqo2uNMatzUn7lcBxJXRdi9zXM94rqb85G2jIgzVlsKwKFdShrMp/KnfvSWwboqXUlDkumItNGikwup8gIxNGatJEC+ZiLUzO0ZMgxUFGWso1ToTHycikiRLMxabMjNDMCFvpdZAcn4sJ5miQJJk0tUABcDK3kpHaN+SuHaV3XxM41oXP9JELfeRcFz7XhcETqheG6KWBysJ0Dom3lY5oWwLIs5WxRAllul0hVJN4Oa5G7uWq2eJK7L2S+JuyQEMerCmCZVWQ42rWvSexbUzzXE10cmWiJue6uBK8D1cLb+VqrjdX4vfjCrrDFecKIJyKl5BYEabzLUCxvJ7OqqOns5GDmdD2VCAz6mUG3OGPHZ4P7Y4P7Y4PwWyz3fXI4XvqCg3za5BkkT01faqLXepjWbAy1RDNaoOnSs/BLLcEMD29kASta4KIcGaJ+IfAVJ7W/lhl+US+9JHU/MGMsTWN/FBm/nh28RPF8mOV5YnG9lRjfwryvxrbE7Xtsdr6WGV9pLQAPFZaHqssT9TWp1rHoN49DHlH0MAYHpogQZ4kIVpKSSxrMvtWhyscdQlfNAcsAY2XuCcY+GcU2noXzcLhCyRwivqOMecuvpwmjBQJeU1ah1ljW9JYLOoVi2JhRUIuT8FLY9qFQfncIzH5oQD70Qj6k3HksRQZ08MzJkgNcuUMN69gXZ9Z4lIiEyQ1ToRHseBoywCw4Fh72pkfSQCQ0XEiMoaHx7DQKBbkERrDQ+NEZNJICeZa0wkxgSk2aYpNmrhpCYEp1rYEy5rUtjnraLnCYZcrRLNtZpgy1k6RV9oCx9HFc0Xn4WgWCV8gwVPUf4y5OK6MkBdkkO7nahL74Qj64zHksQQZ04FsG4QGDOaE3r6lde+pHNuztk2JZU20lGoZwyjWssnAKBocw0PjRBjMNIwTkXEiPIaHRzHOQQc7HHeAM13gBFyQMYIG+Lg/3E6ht4do4QljdNJEC+ZjwoWEeCUjtW3IXTsKz77Ke6j2H2kCJ+DxQ94VCki8hLVe1JHkqQOuADwAGEOnK8C8K+AtV2hbAu8KTAljSihTQeKcK6hCVam3Ou2oTFjLo8vloYXS07nS07nSoLk8vFAZXaqOr9QmLPVJW2PK3hA6G2J3Q+JtyPx1eaCmDJbVoaImnNOEzpW+I7lrV2rfmLGsilfSoqXU9GJyeiExvZgULbGi5ZRoOS1aTouX02J+7dA0mBcFBrDACBcSwoWkaIkVL6dnLKs8MuKVjHiF20u0lBItsbcwvcROL7Ki5ZTEuiZzbMrduyrvgTpwrA2dAl3rELtOpcvf4wpc+ghjSihTQpgyHK/CnCtUpd6q8L25EnVzpXorV8IOrsQ8UW/havpb4kr59bnq9E6UKSFx0I1Bwy0i8SIUz2vpCyV1LIvsiUKbE3522Es9dvkfOtwPHa6P7M4P7Y6P7K5HTt+AOzzspSf8rCi0MRvdV8fO9PGsIZ6D4nk4VoConC58rvEfKz37s85tmW1DYlkVL6enF1nhQkI4z0zNxQUmesIIRC00ggaGIM+AzvlEY3uitj7R2Pi0iWsI8gzDvlE0wAtlYBQNjKD+EcQ3DHuHIM8Q1589YEtgBi1NFJqZ6YWkeCktsazJ7Hyg4AUZpGMtP6zrsgSmrXS3xS6aQ8IXSPCsrXRklDC4jWrrvGplQbG0JF9Yls0ti4klIbI4oV8YUc8NzBo/EeMfCLCPhOigEhEgiNQMax0QFtIvJHX2TY1rV2Hnxr/TC0mhGUyQgvFBfGqee8JDaE5MLySnF9lb4Fbcz8cFc3HBPL+9mZleSIqWUuLljHglI17OiLnHwlOixZRoMTW9yIJvJZY1qW1jljdL/pEIYAmnutC5IXIJUXkkVkSZMsZUsAT/spBk+31HICeJghcXcnTlESqHRC7R0BkWOOFdIUp2cLXcgyuZ8RMR/sEk9pEQHVQgkxxXMB6GFlOQc0fvPdS495XOnVnHltS6MbOSES2yU/NM92gsBugSLiSFgE8zA7aZNNFtH+UQav9NtH2Xn68GK4NBVQmuIy8khItJjsCVjMS2Puvc5hqV/0gTALHCmT5yYeA7ILBSnBMrjjEsAWabqRxC52AqC1NZKHoJgQwSnUPoPBovYB0ZJO69jCBQSIJAAbhCGYlXWq4g81ZEzorAWh5fLo0slAbni4NzxaH50shCeWyxMr5cmVipTlpqAmttyl4TOWsznprMV5MHaqpQRRMu6aIFXSSnDZ2rA8dK74HCvSt37cw6t2WOTZl9U+bYnHVszTq3u7Elc2xK7RsS27rEui6xrUsBwAMHzm25axfUA6oCu8w6tmSOLZljkwf/tx0caEvu3lV699X+Iy3IykUvQAIEorKG6CUHKssNfmMFlClhyQq3wKbTFbhAoYQyJSRehru5mv4mXFWVt7jyf3tcuf/ruCJaXHW4AhovIrECEisg8SKYnYaZoj6e1cTOldSxNLIrDK2N+xODnshjV+CRy/eJ0/PQ4f7Y6XniCg55oqM+RhBIz4S35NShNn5hYPIQk4eZAsIU4VjBEM3qQmca/7HKe6DgHtHalNo2pNZ1iWVtxrI6swKkKiVaYqcXklPz8UkjNU6EwUBvnIhMkBFuUDYXF5oZoTnBg5kCvjIXmzRxj0BPgrjWRE/Nx8GDzaDTzljAMv/NW11XC7ouN6DLwXSh1XuxZEeejekyBl7pzrHACebew5czOBkl9G5SZTEpluZnzQsS06KYXBDhC0J0QQCZx3VzIyrjwCzxaAZ7IsPG9KiIRBQriMEDk9H28wquXbljS2pbl1jWJNw7P8AjbGsS67rUug7e5CGzgycPOlbo2zeltg0JR+mapLWLbUNm35x1bMmdoHXtzDq2Z9s7clXxHZaPD8A4F7xpA0y3RDssgR/t8u8WBOsX6m2ZY1qNqojECgidR6OXaPgcC57igCtjlDB0czVDLnJcwT25QhUrCORBjDS8sgp79qHAid5/rPEddjYqiXW9Y4AFeAN9DbwBZUNiXZeA9fErGdFSenqRnV5MdmEhOb2QFPKmK1pK8a9UWQVkSu2gqnWJje/I9g3QkeWuHaVnX+U/BI1KG+JfvdW2BC5Q6FzxwYkVU36AxotovIjGC0gsj9B5hM6jsQIaL2DxIsaU8GSFYKtkqmtBKp8+KmFMEWVAYFtB4jUDXVOHq7O+qthVEdrKk5bS+FJpZKE4bC6OLpTGFkvjS+WJ5crkSkVgqQisVaGtKnJWJZ6azFdTBGvqcFUbrRjoMkQXDVReHwXvKTvVBk80gWO1/4hD4Pg2/Edq/5HKd6j0Hii9+0rvgdJ7oPIeqHyHvE+eaIOnGlBPZ1X+I7X/sPNflQ+816wdcwF3hegcHMsj8QISL8KxAhzL89On3IcoU+qYVOBWW3YQXUIZ8P6stoO+B1flyZXKZCdX7prMV1ME7nDFvdONv8ZurjSBY83bufJ9e1xFe3KVfxtXrTl5QBTvCq0FS2iyDCUKeiariZ8r6GNJZAcYw7CXHvREn3pCT9yBJ+7gkJca8zOTgZQovCGL7qliJ3omCyeLSLKIJEpooowyJThWgKisPnKhC51pgyca/7HKd6jyHig9+0oPeM/drsK9q3Dx/gq698qqeCUzw2F1xrIqsa4BjbuFDjVsK4LE0qmJ23LnDq96+yof12+5WIpL+7b8oAQSI+33cd4yhnhL6bJo+AILnWGeA9yyiptoHPIQaiupWDbKzHMzxnkRMS/C50X4/DQ2L0RNkxA5piNG1PiYDpsmMPkiCp5tNjOwdR3yHBj8x1rfodqzr3Dvyl3gRRd74JyVnn3QuVS+Q7XvSO076m4kR2of38A8+214D0AwBIb8mgBoqMdge7ALVyEfE/A20MUMROXgGG+WwA/YOljlTKabtx6CaUcMrXZF51Eqi0Uu8NAZ7j3ALWudXJm6uTLzXBk7uZpdRHVOFA+hC0nUvon6j5HwBRQ+N4TOdKEzbfBUEzhW+Q6V3n2lZ+8uA1yv8R4AfhSePTk/mOPHXt2wg0EYN7yTu3baL2H0Hap8B0ofeItXG1yXDJ5wWdzoJT+lx8Xf3DpAtkqkah10tYaw5Qfc9AA/8OeQKOPcKpEqmapxP1KRqnUsPSqBDoxybyGuIPGqIVbTRKqKQFXqqYicZaGtLLCUJpaL40vFieXS5EpJsFISWMpT1vKUtTJlq0zbK2JXVeqpyv01ZaimiVT1VBWKVxGmAnPvRwNvy8oZKPAG40v+7cTd4JYwXuhAsiJy3jnD2V4vRHXWc6m/D2BfsCPNNcHWqkr+DfslhCkiDDeYxXiWO16JXOsOFABRHFdwvGqgOa4kPbla5rni6WpxNeuvKoPfJVd0B1fUd8hV18pUtkesAMwD/MgBkixBiYI+kdPEzxX0kSSyMx1amwykx/3JMT8z4ouN+GITgeRUMCMKb0ijuwr6SBM/h5J5hC2hbBlrvRSaKSHxAkznQRCjj1zowuc60J9Dp9pgFzRB8M5U0MP3b/dw3hFvOWWrt7fQqQjg/amc+4Z4MwDsdSTN+GvnB8Is/9oxtoZ1EtWhdGjkEgufY74jzLaBmRkMDeA6J662EvIlUjpvnDEZJSaTxGSSzJkkJqOYJKZxXIhhIhKTL2E6B4YG0LkYupxBnNtI4BgKnxlCpzpukHGsCZxogqfa0KmOG3VetOSGR+s14+2GATKHXP4w3NqFE/dWQ+VfS87B0LEN1Jph4sNHJF5qjXNbIQLZ+iUG3hiIVIN4iytEL/HIBe4/wm0bOM8VobaSPFembq5IEYELMbyDK2wujllWMfceFj7HqBxK5RAqBya02+2qG3xH63wH+7kufAbeFsXZZHv0dnzba/1ghHfSGvvrIrcPAWrryNaCRZL5dsdMdEZXNd5NG516hTKlByAJDh5UxpNVPFkFf4PoHviBkfsBI+7JNbw9+C3wPzZSQcAkarSmClXl/qrUU5lxVcTO8rS9LLSVpm3laXtZ5CiLHWWxoyJ2VsTOyoyrIvVW5f6qMlhTR2o6qgbFakii440cnT94wpTuA3hVLxIvwvECHCtwC+TjxdsK1dqYQ2sbbjV9+5PWvgkQvHc+gQWeP+AeQcC7nsxqvTKXfzKr1YGZIvIurkSO8rStgys7z5WD58rDcxV+K1fMt8JV+dvgqmMmuRdX/GsWe7lCvMB1fkA4W0HZMpwsGRJ5TfxcSR/LonszkW1xeHM6tD4VXBWGVkXhTUl0Z5baV8aONfFzQyKHsCUsVcVSVTzVuQSWn70AoUxrWhvYIVBn0JfA7ytwz9Nd3MJtQWxpXORCf58itLanslB3ANq2TD5ZBBK+rd9dAAO6DqUrteZgEDqP0jmMyuLRLB48xV072EoGM8UwLIhDXlznJFQWQsm9EdqospAqC6laIZQruGIZV1sxgwfDQ9h8HFvOYI4t1HeIRi4QPqUMVJuT6U6JiRf5nxi608A66Y0V2tvzms6vFwKXUOpqSK122PHjRRwtXa2r9YNFDTLdIMEr2nq8SaWVK2+NNgBXOZ6rXXwlg5li+D1cGbu5wg0eHA/h83F8JYM7d/DAMU5l8XgR58fT7fsSL3RcfuH2NXbxA96dl+N+zKN7DGfoaDPg5zpaC+LvIA+BuLzTBphyayjWRR3vB3djBZQpPeC/qPMBAY80t5sx3eBdoU6wt1IiBSTOTYWhiRrC1AyxmjZaU4drymBN7q/O+qpSTwVA5qnIvJVZb7UFua+qCNRUoZomUtdRdShWRxJ1jOV+fQVv/5LG/W9XbwOoTxc6tKl7y7cD7MszyP1gVufbGu75Uca7LHcP61ojHZ4rusVVtc2Vu5OrDrq6uTLE6ghTx5K3uKp9M67wb8wV28UV8X/AVU9XaD/TkKrhqSqWqiJsGUrmdcylOn6mjB0rwK/uRPdk0T05fQh+dUfHXBqSeWAJeJp7rpBM17kX/XbOb/Mh8x2Ar1qmfke5gI739N3bW3YrAtOxI3+gNoEdHJLdLIFR8L1KF8tjdB6n89wQ2LmNr2TwhQRuonEijKN+HPYRiI9A/CTqJ9EAgQYI1I+jfhwP4XMxfJHFreu4awf3HeLhM5zOg2da0VtKfeeE37ON4S28bxvjviVaSHW1rltmYMw0jZkrY+aq9W/vdhUvILECGstjsTxO54nIJc/VagdXAeI9uCJcO4T/iIhcEPEikawQ3GC6cz36HfTSGS6Kvft7f/cO78odw69u8JXc8gBexHq1q24HbbtCuvCz90L+y1T+Czb3OZv9jM2+TmZfJy4/TVx8mrj4NHH5Opn9LJn9PJn9InH5Rfzii9j5F/TpF9TpF9GTz6PH9+PkC/r0C/rsi/jFl/GLLxPZL5O5n7H5n6VaKHQj/+Xbwea/ZPNfsO/a7Ovj7pn87N6vCj9LgdPIfc5mP0tmXycvAVevOrlKfG2uPue4Oue5yt7PVf49ufrWifqyBxutG9fxSatdpTra1S2uktnXbPZzNv95Kv8F28bnifxnTO7TePZVLPuCvnxBXz6nLp5RF8/oyxex7It49hWT+zSRf53Mf87mv0gVvkwVvkx1HQ7gi+5qu5Di0Toom3sr8jzevlmPvcDhuji8rw/ez9Wr5MWnLIdX7Mkz9vCK3a+zuxV2q8RuFNj1HLuWBUitZ1PrObaFjTy7XWZ3a+xBgz26Zk+fs+ev2MvXbPbzLnAn3ONs/0txl5biHbTpeitXl5+yF6/Y03u5SvFctenaKACuUgeN1PF16vRF6uJVOvtZOv95+pvSwkvWXdzTnPg28z7o2TfvaVpdXD34vzTpPvroo48++gB48KZf+qVf+qVf+oUvfVfol37pl37pl3Z58GfuN3300cf7o1/65ftd+q7QRx9fD/3SL9/v0neFPvr4euiXfvl+lx6uEPr1m/Oj//6+93+Cr3EJ7Juv3rwJsW/+zP3m/M0bw90Njt68+fWbh2/d8U8FrVP9Uzi3Dt6+dou6j3Me30UT5e5+B3X3HaVf+uX7Xd7LFc6/PYn5Fqt6S53fhSvcPsqfgvLec6rf+rl9k7v2Vld4R4XfvSvcPYG+K/RLv4DyXq7wsP7mq/q3oy/fYlVvqfObqcbbXeHrnvl/Q8j1LjH9xuf2Te7aW13hHRV+965w9wTu3v2+K/TL/z/L+2WQ2DdfvZ/cvBvfYlX31/lduMLXPfPvkyt8k7v29gzS2yv8L8gg3TmBviv0S7+A8iBU5/5qDZ3anYF989WbN2++7NVDwFdv3rx50/X5+ZvbtT2stw9msUffCwAAIABJREFU6NnZelUFtjn/mp/f6s+3N2PffNXq+a2/Oz7s1IXzNx2lp7p173iLxvM7+95lpn2SrQzVEUfF+dGbPzu6vX3PSnqf6p0r7eThfc7tnXft7iW/F29vaVH37PsO6t55f7trCNXv9arzO+3hvsbWL/3y/S4PQBftkU49evOmM/d6xHVmrlt+yXfaozdvOsWR7eq3tzrn+1cV+nX77/f5/HadPTd7b1c475AAw5cdCtV5lO4d76XxPmZunaS7bQ+cH3zZ4yh3K+l9qp3Sdg+9bzu397hrPS/5Pt7ep0Xdt++7qXv7/e2uOfTre+7mPa7Qs7H1S798v8uDzi7XlrMv37y5owu3Quzbw8mj21V3jpp7z+zdV9U9Y/+3fH6rzt6bvacr3EpfHN0et/bUnd40HrUF5S4zPUbf7P1/96zkvlPtlvW30ftN71qPS76ft3e3qPv2fT/q3nZ/3/Nu3h8r3G1s/dIv3+/S2xXe/LrHIhbDl3wIz7756k3X3z26XzfAsKtV4Tuq+kau0K7zu3SFW2f+vq7Qi5mv7Qp3K3mnK7yT3m92176+K7yjRb3FFd6Dum/sCreuqO8K/dIvb+6NFfg+dnsC4E5fBePQnokX0MdCPVP/76oq9Ot2dP8+n3fVed9mHbmOWx++JYPUlXPoPMr7u0JPZr6uK9xTSe9T7aWJt2h827m9867dc8n38fbuFnX/vvdR97739z3v5n0ZpF6NrV/65ftd7ncFvqu86c7MtOOJN2/evHnz1Zdvm9gEPZkrHTncd1bVyjm8uXMCPT/vcQm9NmvlUtrH6jnb3JG46Jyf7DrKu1yBO1aHTN9i5uu6Qu8Z/p6neic5foved57bO+9az0u+j7f3aVH3cn4fde95f7truPdu3hcr9DpKv/TL97t8vTdePKzflolvjLdXdXeByts//9ZP77+GhP/P4Vu/9v9qMu+kpL7BCfRLv3y/y9d+D9L5nRH6N8ZbqvpmrvDtnt5/+1H+NPGtX/t3TWbo111Tyl/deXru655Av/TL97v8ib4d7xu7Qh993EZHBumuJXwD9Eu/fL/Ln6gr9NHHnyz6pV++36X/W2z90i/90i/90i59V+iXfumXfumXdnmw++mv+uijjz766APgwct//N999NFHH318d3jxP/7383/4z2f/8B83v/z3xt/9sfzzf8r+7Fenn//y4NXPt59/sX7zMtW8TjbqPGrpZmPt5tnm8093X355+Prn51/8Q/6vf1P9xe/qv/hD/ee/r//N7+tf/a76s98WP/tV9uUvz29+cdr86qTx10f1nx1WvzisfnFU+9lx/Wcnjb8+u/r55bO/z7/6H6XPfl392W/rX/2u+Ys/3Pzdvz77+3+7+ft/u/7bf73+2z9e/eKPzZ//ofE3v69/9bv6V79r/M3vH+x99p999NFHH318d9h9/Z/bn/775qt/23j5x9TNP0fr/+gp/s3yxWvjcdOwl1dsHIrS6wKWFbBJQSopSCVEmfTsxrZ29wQ5LMydNq251/7yz2ONXyWvfpto/CZR/RVT/kcq93eBky9duy9X1hoLbHk+UTTFcyR9SdKXpnhuLlEwJ0vLmZp968Z78Dp09hWd//tE+X+mG7/dePaHzed/3Hj2h/Wb369d/y7T/Kd047ds7TfJyq+SlV+xtd/0XaGPPvro47vF7uv/3Pn0P7Ze/dvGy39NP/s93fiVr/y3tuwX86fP0IOSeutUsrotTK8K0xlhOi1Mp8Rra4qtff3eBX5cXji/ceQ/D1b+lmn+mr3+p+RtV3ixstZYSJXnE8W5eN5IXxrpS1M8N58oLLCl5dWaY/uZ9/Cz8PlXdP7vk5X/mWn8duPZH7Ze/HHz+b/cNQa29pt047d9V+ijjz76+G6x+/o/d17/BwgXVp//Id78TbDyS1fhq6WLV8RRXb+bnV3fF69uiVc3xavrotU16fqWeucYOcybThsr2Vfu4l+Ha79MXP2v9PU/s83/laz9ujNWsKw3FlMVc7I4x+RNsawplp1j8uZkcTFVXlmrO3ee+44+C1/8Tazwy2TlV5nmP208+5etF/+6yRnDv6zf/GHt+nerV/+cbvw23fjt6tU/912hjz766OM7Bu8KW6/+fe3FvySufxut/6Ov9Le23BfzpzfIQVm9fTa7cSDb2Jdt7Ek3dhVbh/r9S+K4unjx3J7/wl/5BdX4R/bmnzI3v0s1f8vWfv3/tnf2X01d677PX7L7d2SM88Mdo7h77YvtZvSwzxZBWhtaqlGvfRG9m1ZtdyOt5uqpPd6e3m32vQ492LIFhGq0akDe35UCgRAgAcLrkpeQ8JaFuT+sZK0515wryQJWVPh+xvcHsrLWXDMxPt85n5nM50bLzLWGcYdr+Me7fd/fenLhZpu9tPXcz83f3WiUZgn20tYLN9u/v/Xkfzvdf38w+P9qR/+raeqXtqdlT4KVPcu/uler3KtVvatVvStkNqm8K1Txe9jk9KxDEARBxknKIP3aH/m1L1LRu1L6++L1ztl/tE392DRysbb/7IPHp5xN//N27cnbNSd/rT7xq+uvdx59fb/1u+rfv68f+M/mkX+0T/7X49l//h4q6w7/80nwl465G63C9caJf9T4f/rN88Ov3f9e8fhiWcf/utlmL221l7ZeuNl2sbzj+4rH//Fr93/e63e4hq/WBUqap39pny17sii5QswY3KtVvauVPSu3epZvdS/d6l661bNsGp5dhyAIgozW0Kw49FQcfBoZmFnrn15xTy11T4aeBBY6Rp+2jEw3+yebfJNNvokm30Szf7JtdKYzMNs1vtAzGXJPLfVPrwzMrHln1gamVz1TK/2TS33j4d6xYPfIXNfw0ydDM48HZzoHpzu9053e6ceDM4+HZp4MC12+p90jcz2jC+5AqH8i7JlaHpheHRQiQ08jQ09FQpEhITIoRAaFyJAQMe37+AQEQRBknLIJ7S0o/EvB8T9/9HnWh5+9m//Jnz44uud96xvvHXw9r2C3pP0fvZ5X8Ob7h94+cDjT8j/ezT/2rx9++uePPvtLwfG9Bcf/8tHn/5b/2Z/zP8364Ni77x/NfO/wn3IPvZN78O2cj9/O+fjtfQVv7/v47ZyP38k9+E7uoT/tP5T53uF33z/6rweO/dnyyb/lf/aXDz/fW1CYLenjwniv4kcKCrMLCk3PnkUhCIIgSJJJXH8GQRAEQZJMq2vrEARBECTJtLQiQhAEQZAk01xwFYIgCIIkmWbmViAIgiBIkmlSWIIgCIIgSabAdBiCIAiCJJm6B55CEARBkCRT98AsBEEQBEky9XhnIQiCIEiSqXdwDoIgCIIkmdxD8xAEQRAkydQ/PA9BEARBkkwe3wIEQRAESTIN+IMQBEEQJMnkHVmEIAiCIEmmodFFCIIgCJJkGh4LQRAEQZAkky8QhiAIgiBJJv94GIIgCIIkmfzjSxAEQRAkyXT7fhsEQRAESTKtiesQBEEQJMm0/iwKQRAEQZJMq2IUgiAIgiSZwmtRCIIgCJJkCq1GIQiCIEiSaXHlGQRBEARJMi2sPIMgCIIgSab55WcQBEEQJMk0u7QOQRAEQZJMT8PrKamv4r/nVHSmeDIEQRD0csokhERCzYfM2YfuiTe/yP6DOfsP5uxX9pXf/PsJ6W9Zr/19hL5KFEIj9n3Zh+6JzHFRCInCvUvUJfcuvfJFM//MkNjx9xOa7UAQBEEGy/SK+dI/712KeYD50j8Xxem42v5+4rW/j8Qeustf21fetihO37ukHKTUfNB84rybPS7+syh2PPbHvUuvFDXzWojd9OA9/lMQBEGQ0TK99n9Gpu5eeqWoaSoYoXT30iv7ylqDTQfpiUJ8DnHp4D7OcfqcstZgZKqn7DXpj2DTQekP1e3uXkrczsG7EXXfIAiCIGNkmliITNy99MpfmyYWIoSaPjZf+pk80lP2x31lzQuRibuX/vjTiHy8+afCj+9GqGuZE2KN86J/7MyekWZug8RxCIIgKA0y/cGcXfDX71Vj/Cbn9/LfP/9UyIRy//j8WkzdZX/8a5PycH7t578WftctP2wqMGe/8tem8Xn/d/vix53fv0JfMt5d9kfpvvNrTT8VFjjjF+77/ufuNepMCIIgyEiZvOMhb8XFVwrrvOOhq4XH/9Ya8o7Lqsvf+0uN9HfrLxny35S8f9tLXEWfVvPD8YzCixmFdd7WXzIK62LnxG/HVc0Px/Mr+E9BEARBRsv0ivniVcYVYqG59ZeMwrqrhcyCgcoeFCeoyzdTvnL1h19qSD+QRLsC2z57u+f+NkEQBO0Qma5KI/ofvF5yrtD6S8beX66Sw3bNuULIOx7yVlz8gzn7FbNqqhG/sLBOOoEb8ek26/L3Xsz/QXMmAUEQBBkqU/7eX/4WNwMyg3S1MPsV88Wr43X5vGiuTvLEgz4n+ZNsrkAoPtVImGKCIAiCjJOJnASoXIEay2vMFWKnxYO49FCaeXjlC1NwhbgJKefwPQaCIAgyUqarhUrwvapMGmKRveaH4/zMT+Evf9urMTmIXxVzlNTWFbjtqCwHgiAIMlqm594DCIIg6MWRyTsehiAIgiBJcAUIgiBIkck7EYYgCIIgSXAFCIIgSBFcAYIgCFJk8k4sQRAEQZAk0+DUMgRBEARJMo3NRSAIgiBIkqndMw1BEARBkkz/KKuFIAiCIEkmEQCgzfD08vPuwo4A73N6SOV9hiu8uPy39z993l0AiFZpAu9zeoArvMT8S+6xrJ+qc8/+3+fdkZ0OolV6wPucHuAKLyv/8pdD7/3H7W+aZi62Cv95u/55d2dHg2iVHvA+pwe4wkvJq/uP2Crq742Efh0M1o2GWsbDtWPh592pnQuiVXrA+5we4AoAbBZEq/SA9zk9wBUA2CyIVukB73N6gCsAsFkQrdID3uf0YJArdJ3Lu3hjVPv50QfWvJNv5pXUi2L95ZPnWvXfAYAXBu3/RRM3ipT/CCl91FtLrBUT6oOx/y+sSuSvGSiNx1qYuFGknLk9/otpvs+tJW/GA079ZfkNJ6JQa4n6rSt64G8tefNylyhO3Cgqwbc1SIxwha5zvE+w9Fn3V1ykPs2jD6x5+CcBLzf+GY3/RaMPrEUPbly+eGNU/uQTUUmko9XlLpEKanQ7l7uYo0o4Uzeed9Ja0SU/u20GXprvs/QOFD3wK29g17m8k9aKLr/yZnadk0JNzAzkP+AKahK8zzI6XEH6dKo/gqMPrNL/gRjyPwM1nCHNA4CXCK3/Rf6Ki9aKifrLF89dJgdDXee4/0cud3FGVFL8SuYKIn+usINcQYZvq6IIV0idrXQFxq5FURTF1pI3FUtgbYD699g2H1+wo9D4XyQNVyfonMbJN7nJ1dEH1stdkotIB6j/C6m5Aj202oYZJO77TL5wrqwVXezo8828k+cuwxX4pPI+b2xd4eS5VrH+cnywo342Nmi6EU8rWSsmmCkFAC8H3P9F/oqL1iLVXOHijVFiNnC5i1owuPzgRlE8s0QvSGx0XWFHzRVkDybmWCRyeMFcIRlbnEFS2uWmkiRiuVTlQ08OkQB46RgVVtiD9RUP6uMZJOmj7q+4GPvYj07ERj9yqBp9YKUWA7rOkSOkDc4VtpsrcN/n+DxAWWI518pdsIlnp2VXiAFXUMN9n2km9LmC1oQuHvcnblwuOVdUUi997ltL3oxNnLtuFG2Tzy7YaYw9TbKuIE0RiC9cxIdEzPxYukQ9TtrIugK1RLE9/mdpvc8k/HUF0gmUv+NvEVIUNMnf59aSVF1B8gNp1sy2YlWSRcSAKK+kXpkrJPs+KwAvJOOz/LGVn54rxCcEE0qCiJM15a09JHMFdihmrXggzza2zVyB+z5z1wwSf4ElNp8AGmh9nuN0ncu7qG+uwE8HxV2h/nJJfezTPCFPDpRLWkveLHqg63YAPHem5le5x4n/CxPKmkFriTJ4J5PdsSDedY4dvaYwV4g9lL/qTYyOt40raL3PCq0lbxZd5H7ZPdGiNOYKNAnf59iasW5XSObY6kQe1hXAS40QTOoKoijGk91kfJeXkYse+MnVOOJnWdRpmqvNxOp0a8mbl7vIRMq2cQWt91kU4+8t6azaP4TCXCExmu8zMaDZyrmCKIqUK8QXhfCPBF5eni4mcwXWDyTkKYKSXJKZuFGU6u8V1HGfSNiy3/9+eeG+z7EMEme8Ly8blJxLlmVCioKE+z7XX6beZOyDBEAi5sNrz7sLOwK8z+khlfcZrgBAIhaXEK3SAd7n9JDK+wxXACAR4ZXI8+7CjgDvc3pI5X2GKwCQiOVVRKt0gPc5PaTyPsMVAEjE6hqiVTrA+5weUnmf4QoAJCKCYJUW8D6nh1TeZ7gCAAAABbgCAAAABbgCAAAABbgCAAAABbgCAAAABbgCAAAABbgCAAAABbgCAAAABbgCAAAABbgCAAAABX2usCLcDE/YQ2Png77ihaGzC4PFcwPfzPZ/JbhPTfcUzfR/F5x0GdRRAAAAaUCXK0TCE+cjSxXrkanQ9I9Ph23e9hNr4fvra48krYZuT/bYjOopAAAA49E3VwhPnI8sV0WWq6JRMRoVfa0FPQ1fLs3eFFddkeXf1kJ3xtqPGdRRAAAAaWCDrhBZropGo4NNHzypLgx0nV4L3VkNVizPlY60HTWoowCAnU3AabM6OjWe7HTYnAHyofapYsBp034S6HWFcdIVRE/d/scPPx3tLFqeKw0L1xanrvhbDhvUUYVKiymGpZI83mc3m0xme1+q7fTZzfyGAEiBgNNmjUGEmE5H7BgVo6TDZCSSz2PPVUe/gNPGnKKcw+2GclB9XYIuJbod1WXlokSvwhA6HRq3kU0h9gdcYRPoc4XFwLeSJayGy5+th9zVezvuH/a3fb44dSUYuDw/cmG4+aBBHY1RadEI/H12s9lsTt0VKi2yGfTZdVwHgChSQ1MliAecNqscnKzEQavN4bCpXUErigacNuKpgNNms9k4xhELfpxuKPfWuA2/SwluRwZSovVEr2JLUBxPC+n2ylsWf0NUrkDZFweYBIk+VwiOnpUsYXnhZ3FtsvtBVvvdj3zNR+dHLswOFQueMyNtR6a91wzqqxT6NT3B3qdpGRzIc/VcB4CaeEyixvicAX9qrkA9IzXNnMy9WnEKpgGtbqujocbtNDtotCvIvVJHbTpfRBsi3zjEQCDAbZA4DiT0ucK872vJEkLC1aWFhq57ma233xtqKBA8Z6bdJyd//2T8sdVbb+FfzMnY9NnNJktlpcUkpX4qLSazvTJ2mqVSSRbFYnaf3Wy22+MJJCWQx81CI7pTcwH5QfwPeqaAtBLQTXxcSo9P6YjJcQX+OJW8jBvnmaY53aBcQWsgzDzF3o6Y/HBvrvkqthbGFmhTkHNhhAWyGSQpqxa37/g7ZbXaHJ2wBRp9rjA7dFqyhPmJnwT/vz++s6f5Vrb30QHJD8ba8wVBGKg9wLu0z24hhuaxkCvFYDn8yvYQ9wPlLEtl/CCT9pGf1h7zK08oJxMOIHeA20kAEiFHSVWUTewKIvkEcR4RzagRsCoKsk3RoZzIIGkGbM3ZDN8V4msVqbyKrYZNqtGPHA6bo5MyD6wrbAJ9riAMFMmWMDlQ3FH1elPZux7XvrH2/NGWPH9jtiAInkfva13ODMTJGC1qZ3Xif9NRX3pENkE8X0nPKOLPcB0EswWwUcgku665At0GGXljZ5EXJB39U90QqTVvp0MrWmsmvBLnhTod3IVlg5NJ5MqBauLkdAbYMM/8W6S0PgFEUdTrClN9J2RLGOs+1XbrtYbSPf33s/yN2b76rOHaTEEQ+mvyOFeSXxBSQrNOV6CXFah8EwkvmMsWEmuAZzAanQSADycWawbvlFxBZQrcJVG2IXU31I1rPUe2pHm7xB1OdnBLiYV23l0kV9CK/WwOzOZwODFZ0ESfK0x0fyZbgq/jeEv5rrobu/vuZQ7XZg7V7Bmq2ZNzd7CvOpdzpWpovjFXIEf1vC8OJVo17rObzRaLmTs/iGeL+J0EgIWbMiHirDpIMuklYmDOMQUa/mxCsxvcC/kvIcnt5OaJwTj1RSvOqzCMeNDnf5s24VyBfiL5V1d3OPpcYezJUdkSBpuPtJRl1JXscjv3SJYwVLNn97Xf3a4c3qVKYsZssWxwrhD7W3NKkPC7ROo4T2SK2JUGspMAMKiHperku5XOzXCG4OwPG7S/LkSFaWadlelG0l8raHSJeztqtYI5XePnGVtL7CakA1kZz03BFdSLLIkWXXY0+lzB33FItgRP3YctZRm1118lXWGw5h1v4ycG9RWAbUwqKZj0fBP0xUFyIs31bdIHU1hX0JoYJUyX7UT0ucJ4r72/dn9vdU6vK7fXlddSllFz/Y1uZ5a7Otftyul9uM/beGzGV2VQXwHYvsAUwIuC7voKK+HpGb/T0/RFW+VbdeUHBjpLl4L4nAIAwDYBVXcAAAAowBUAAAAowBUAAAAowBUAAAAowBUAAAAo6HOFFeFmeMIeGjsf9BUvDJ1dGCyeG/hmtv8rwX1quqdopv+74KTLoI4CAABIA7pcIRKeOB9ZqliPTIWmf3w6bPO2n1gL319feyRpNXR7ssdmVE8BAAAYzwbrNkejYjQq+loLehq+XJq9Ka66Isu/rYXujLUfM6ijAAAA0sAGXSGyXBWNRgebPnhSXRjoOr0WurMarFieKx1pO2pQR3WiseUpinEC8LKSYN9ZdSEe1FfYDDpdYZx0BdFTt//xw09HO4uW50rDwrXFqSv+lsMGdVQncAVgMLq2i2M2YqP2tWOLMqv3RWV2upDP4XYj6f54vC4luh3VZeWiRK/CEDT3/JBNIfYHXGET6HOFxcC3kiWshsufrYfc1Xs77h/2t32+OHUlGLg8P3JhuPmgQR3VCcojAEMhhqZKEKc2mbYSB602hyPVus2cUmM2ZrtspZgmpxtEwQX+bfhdSnA7MpCS5RyM3piJU/VBhbw7Hm0KaldIVnYHJkGizxWCo2clS1he+Flcm+x+kNV+9yNf89H5kQuzQ8WC58xI25Fp7zWD+qoHuAJIG/GYpFncjH2YIJ6qa/fYnAHmZO7V3CrP2ttz8xIyGrfT7GB6tuvjDO3pfBFtiHzjEAOBALdB4jiQ0OcK876vJUsICVeXFhq67mW23n5vqKFA8JyZdp+Uqjd76y38izmlL6XYLZdrpqqrxcrgEGU2RVEk6yskLKpJtEweh1mArSc+LtVToZMIX0xlNabiAlOUkhuMiW4kruep9RR7O15RH7J5zVextTC2QJuCnAsjLJDNIElZNaqGUKfDarXaHJ2wBRp9rjA7dFqyBKlO5+M7e5pvZXsfHZD8YKw9XxCEgdoDvEv77BZ16bN4OJfDtGwP8eCvrs1DltWRj6bQsnwcrgC2GjlKMuXWUqrbrAq8RDSjRsCqKMg2RYdyqrZPaq7Aux3ZufhaRSqvYqthk2r0I4fD5uikzAPrCptAnysIA0WyJUwOFHdUvd5U9q7HtW+sPX+0Jc/fmC0IgufR+1qXM2N6nbXYlKG/erqQrOX4Q7gC2FKomsl65gp0G5z6m+QFSUf/nArS8eyJ06EVrTUTXonzQhrFOA1OJpErB6qJk9MZSK3qTvL1CSCKol5XmOo7IVvCWPeptluvNZTu6b+f5W/M9tVnDddmCoLQX5PHubLPbjaRJZc36grsF4hSahmuALYeTizWDN4puYLKFLhLomxD6m6oG9d6jmxJ83aJO5zs4JYSC+28u0iuoBX72RyYzeFwYrKgiT5XmOj+TLYEX8fxlvJddTd2993LHK7NlCp05twd7KvO5VxJBHSigLLeus1KhkgUxUqLpTJhy3Q5ZmSQwBbCTZkQcVYdJJn0ElmFmDUFGv5sQrMb3Av5LyHJ7eTmicE49UUrzqswjHjQ53+bNoW6zfEnkn91dYejzxXGnhyVLWGw+UhLWUZdyS6ybvPua7+7XTm8S5Ucj9li2eBcQeSkihK1bFEvNsMVwNagHpaqk+9WOjfDGYKzP2zQ/roQFaaZdVamG0l/raDRJe7tqNUK5nSNn2dsLarSytJDteem4ArqRZZEiy47Gn2u4O84JFuCp+7DlrKM2uuvkq4wWPOOt/ETg/oKwDYGhZtZJCfSXN8mfTCFdQWtiVHCdNlORJ8rjPfa+2v391bn9Lpye115LWUZNdff6HZmuatz3a6c3of7vI3HZnxVBvUVgO0LTAG8KOiur7ASnp7xOz1NX7RVvlVXfmCgs3QpiM8pAABsE1B1BwAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgII+V1gRboYn7KGx80Ff8cLQ2YXB4rmBb2b7vxLcp6Z7imb6vwtOugzqKAAAgDSgyxUi4YnzkaWK9chUaPrHp8M2b/uJtfD99bVHklZDtyd7bEb1FAAAgPFssG5zNCpGo6KvtaCn4cul2Zviqiuy/Nta6M5Y+zGDOgoAACANbNAVIstV0Wh0sOmDJ9WFga7Ta6E7q8GK5bnSkbajBnVUJ6jbDMA2I8G+s+pCPKivsBl0usI46Qqip27/44efjnYWLc+VhoVri1NX/C2HDeqoTjbrCsQufEzpNwBEndvFMRuxUfvasUWZ1fuiMjtdyOdwu5F0fzxelxLdjuqyclGiV2EImnt+yKYQ+wOusAn0ucJi4FvJElbD5c/WQ+7qvR33D/vbPl+cuhIMXJ4fuTDcfNCgjupkSzdHxU6rQA0xNFWCOLXJtJU4aLU5HKnWbeaUGrMx22UrxTQ53SAKLvBvw+9SgtuRgZQs52D0xkycqg8q5N3xaFNQu0KysjswCRJ9rhAcPStZwvLCz+LaZPeDrPa7H/maj86PXJgdKhY8Z0bajkx7rxnUVz1sZSCHKYCExGOSZnEz9mGCeKqu3WNzBpiTuVdzqzxrb8/NS8ho3E6zg+nZro8ztKfzRbQh8o1DDAQC3AaJ40BCnyvM+76WLCEkXF1aaOhbgfS0AAAZUElEQVS6l9l6+72hhgLBc2bafVKq3uytt/Av1iiNYKmUyzVXWkxme2XsNEulUpKTyN4oVTqVg4lbJo/zAzyVV2KSTHQFOM69wA4nPi7VU6GTCF9MZTWm4gJTlJIbjIluJK7nqfUUezteUR+yec1XsbUwtkCbgpwLIyyQzSBJWTWqhlCnw2q12hydsAUafa4wO3RasgSpTufjO3uab2V7Hx2Q/GCsPV8QhIHaA7xL++wWoogOWTGNrK4mB3spnqtr85ABWj6aQsvyca1hv9IwcwZlCtx7gR2NHCWZcmsp1W1WBV4imlEjYFUUZJuiQzlV2yc1V+DdjuxcfK0ilVex1bBJNfqRw2FzdFLmgXWFTaDPFYSBItkSJgeKO6pebyp71+PaN9aeP9qS52/MFgTB8+h9rcuZcbb+us0aK8DJWmbrNsttyS5ktvexpsCxEcwWgAxVM1nPXIFug1N/k7wg6eifU0E6nj1xOrSitWbCK3FeSKMYp8HJJHLlQDVxcjoDqVXdSb4+AURR1OsKU30nZEsY6z7Vduu1htI9/fez/I3Zvvqs4dpMQRD6a/I4V/bZzSZ2OK7fFdhvAqXUMusKaqS2++xm6g6cZjQnFWCnwYnFmsE7JVdQmQJ3SZRtSN0NdeNaz5Etad4ucYeTHdxSYqGddxfJFbRiP5sDszkcTkwWNNHnChPdn8mW4Os43lK+q+7G7r57mcO1mVKFzpy7g33VuZwr1aWXN1a3mcraVFoslQlbpis7J8wgSU+ZLRZzgiUFrXuBHQg3ZULEWXWQZNJLZBVi1hRo+LMJzW5wL+S/hCS3k5snBuPUF604r8Iw4kGf/23aFOo2x59I/tXVHY4+Vxh7clS2hMHmIy1lGXUlu8i6zbuv/e525fAuVfIuZotlg3MFkZu+0W7Zol5sTjjAZ+I858cN3HuBnYd6WKpOvlvp3AxnCM7+sEH760JUmGbWWZluJP21gkaXuLejViuY0zV+nrG1qEorSw/VnpuCK6gXWRItuuxo9LmCv+OQbAmeug9byjJqr79KusJgzTvexk8M6isA2xgUbmaRnEhzfZv0wRTWFbQmRgnTZTsRfa4w3mvvr93fW53T68rtdeW1lGXUXH+j25nlrs51u3J6H+7zNh6b8VUZ1FcAti8wBfCioLu+wkp4esbv9DR90Vb5Vl35gYHO0qUgPqcAALBNQNUdAAAACnAFAAAACnAFAAAACnAFAAAACnAFAAAACvpcYUW4GZ6wh8bOB33FC0NnFwaL5wa+me3/SnCfmu4pmun/LjjpMqijAAAA0oAuV4iEJ85HlirWI1Oh6R+fDtu87SfWwvfX1x5JWg3dnuyxGdVTAAAAxrPBus3RqBiNir7Wgp6GL5dmb4qrrsjyb2uhO2PtxwzqKAAAgDSwQVeILFdFo9HBpg+eVBcGuk6vhe6sBiuW50pH2o5usCMpV1QGAOxIEuw7qy7Eg/oKm0GnK4yTriB66vY/fvjpaGfR8lxpWLi2OHXF33J4gx2BK4CXC13bxTEbsVH72rFFmdX7ojI7XcjncLuRdH88XpcS3Y7qsnJRoldhCJp7fsimEPsDrrAJ9LnCYuBbyRJWw+XP1kPu6r0d9w/72z5fnLoSDFyeH7kw3HzQoI4C8CJBDE2VIE5tMm0lDlptDkeqdZs5pcZszHbZSjFNTjeIggv82/C7lOB2ZCAlyzkYvTETp+qDCnl3PNoU1K6QrOwOTIJEnysER89KlrC88LO4Ntn9IKv97ke+5qPzIxdmh4oFz5mRtiPT3msG9RWAF5J4TNIsbsY+TBBP1bV7bM4AczL3am6VZ+3tuXkJGY3baXYwPdv1cYb2dL6INkS+cYiBQIDbIHEcSOhzhXnf15IlhISrSwsNXfcyW2+/N9RQIHjOTLtPStWbvfUW3qWVFpPZXhkrT2CpVEpkapRRq2RqI6A0JngxiY9L9VToJMIXU1mNqbjAFKXkBmOiG4nreWo9xd6OV9SHbF7zVWwtjC3QpiDnwggLZDNIUlaNqiHU6bBarTZHJ2yBRp8rzA6dlixBqtP5+M6e5lvZ3kcHJD8Ya88XBGGg9gDv0koLWSOZra9Mu4IS9+Xya6iICV5I5CjJlFtLqW6zKvAS0YwaAauiINsUHcqp2j6puQLvdmTn4msVqbyKrYZNqtGPHA6bo5MyD6wrbAJ9riAMFMmWMDlQ3FH1elPZux7XvrH2/NGWPH9jtiAInkfv8y5NVmctacnlmJlgRRq8QFA1k/XMFeg2OPU3yQuSjv45FaTj2ROnQytaaya8EueFNIpxGpxMIlcOVBMnpzOQWtWd5OsTQBRFva4w1XdCtoSx7lNtt15rKN3Tfz/L35jtq88ars0UBKG/Jo936eZdQXkIbwAvApxYrBm8U3IFlSlwl0TZhtTdUDeu9RzZkubtEnc42cEtJRbaeXeRXEEr9rM5MJvD4cRkQRN9rjDR/ZlsCb6O4y3lu+pu7O67lzlcmylV6My5O9hXncu7VJ8r0EWZYxkkewrFlwFIC9yUCRFn1UGSSS+RVYhZU6DhzyY0u8G9kP8SktxObp4YjFNftOK8CsOIB33+t2lTqNscfyL5V1d3OPpcYezJUdkSBpuPtJRl1JXsIus27772u9uVw7tU51zBwi42i5wFaACeC+phqTr5bqVzM5whOPvDBu2vC1FhmllnZbqR9NcKGl3i3o5arWBO1/h5xtaiKq0sPVR7bgquoF5kSbTosqPR5wr+jkOyJXjqPmwpy6i9/irpCoM173gbP9lclzAVADsRFG5mkZxIc32b9MEU1hW0JkYJ02U7EX2uMN5r76/d31ud0+vK7XXltZRl1Fx/o9uZ5a7Odbtyeh/u8zYem/FVba5LcAWwA4EpgBcF3fUVVsLTM36np+mLtsq36soPDHSWLgW39nMKVwAAgOcGqu4AAABQgCsAAABQgCsAAABQgCsAAABQgCsAAABQ0OcKK8LN8IQ9NHY+6CteGDq7MFg8N/DNbP9XgvvUdE/RTP93wUmXQR0FAACQBnS5QiQ8cT6yVLEemQpN//h02OZtP7EWvr++9kjSauj2ZI/NqJ4CAAAwng3WbY5GxWhU9LUW9DR8uTR7U1x1RZZ/WwvdGWs/ZlBHAQAApIENukJkuSoajQ42ffCkujDQdXotdGc1WLE8VzrSdnSDHUHdZgBAIhLsO6suxIP6CptBpyuMk64geur2P3746Whn0fJcaVi4tjh1xd9yeIMd2bAraO2Z12c3Y8dtYBy6totjNmKj9rVjizKr90VldrqQz+F2I+n+eLwuJbod1WXlokSvwhA09/yQTSH2B1xhE+hzhcXAt5IlrIbLn62H3NV7O+4f9rd9vjh1JRi4PD9yYbj5oEEd5UPuvkrRZzebzZh9AKMghqZKEKc2mbYSB602hyPVus2cUmM2ZrtspZgmpxtEwQX+bfhdSnA7MpCS5RyM3piJU/VBhbw7Hm0KaldIVnYHJkGizxWCo2clS1he+Flcm+x+kNV+9yNf89H5kQuzQ8WC58xI25Fp7zWD+srQZzdre4K9T9MyANhK4jFJs7gZ+zBBPFXX7rE5A8zJ3Ku5VZ61t+fmJWQ0bqfZwfRs18cZ2tP5ItoQ+cYhBgIBboPEcSChzxXmfV9LlhASri4tNHTdy2y9/d5QQ4HgOTPtPilVb/bWW3iXVlpMZnul3SzneuKZn1jgVtdi4ySG+mJXm5RKzma7PX6eYgBxs4ArgLQQH5fqqdBJhC+mshpTcYEpSskNxkQ3Etfz1HqKvR2vqA/ZvOar2FoYW6BNQc6FERbIZpCkrBpVQ6jTYbVabY5O2AKNPleYHTotWYJUp/PxnT3Nt7K9jw5IfjDWni8IwkDtAd6llRY5cksBX1WOU1WLTfaCSotJfQLVZOyQsiyhnAdXAGlAjpJMubWU6jarAi8RzagRsCoKsk3RoZyq7ZOaK/BuR3YuvlaRyqvYatikGv3I4bA5OinzwLrCJtDnCsJAkWwJkwPFHVWvN5W963HtG2vPH23J8zdmC4LgefQ+79LN122WzISI83TUlx6RF8MVgNFQNZP1zBXoNjj1N8kLko7+ORWk49kTp0MrWmsmvBLnhTSKcRqcTCJXDlQTJ6czkFrVneTrE0AURb2uMNV3QraEse5Tbbdeayjd038/y9+Y7avPGq7NFAShvyaPd+nmXUF5aJIvUbtCpZJkMlHZJgC2HE4s1gzeKbmCyhS4S6JsQ+puqBvXeo5sSfN2iTuc7OCWEgvtvLtIrqAV+9kcmM3hcGKyoIk+V5jo/ky2BF/H8ZbyXXU3dvfdyxyuzZQqdObcHeyrzuVdqs8V5FCuPOiz24ljclKJWJZQTwwwVwCGwU2ZEHFWHSSZ9BJZhZg1BRr+bEKzG9wL+S8hye3k5onBOPVFK86rMIx40Od/mzaFus3xJ5J/dXWHo88Vxp4clS1hsPlIS1lGXckusm7z7mu/u105vEt1zhUsnF8h8H6ZoPVrBfVtANhK1MNSdfLdSudmOENw9ocN2l8XosI0s87KdCPprxU0usS9HbVawZyu8fOMrUVVWll6qPbcFFxBvciSaNFlR6PPFfwdh2RL8NR92FKWUXv9VdIVBmve8TZ+srkuoUIn2ImgcDOL5ESa69ukD6awrqA1MUqYLtuJ6HOF8V57f+3+3uqcXlduryuvpSyj5vob3c4sd3Wu25XT+3Cft/HYjK9qc12CK4AdCEwBvCjorq+wEp6e8Ts9TV+0Vb5VV35goLN0Kbi1n1O4AgAAPDdQdQcAAIACXAEAAIACXAEAAIACXAEAAIACXAEAAICCPldYEW6GJ+yhsfNBX/HC0NmFweK5gW9m+78S3Keme4pm+r8LTroM6igAAIA0oMsVIuGJ85GlivXIVGj6x6fDNm/7ibXw/fW1R5JWQ7cne2xG9RQAAIDxbLBuczQqRqOir7Wgp+HLpdmb4qorsvzbWujOWPsxgzoKAAAgDWzQFSLLVdFodLDpgyfVhYGu02uhO6vBiuW50pG2owZ1FACws0mw76y6EA/qK2wGna4wTrqC6Knb//jhp6OdRctzpWHh2uLUFX/LYR3NqYurxUm05R0ALwa6totjNmKj9rVjizKr90VldrqQz+F2I+n+eLwuJbod1WXlokSvwhA09/yQTSH2B1xhE+hzhcXAt5IlrIbLn62H3NV7O+4f9rd9vjh1JRi4PD9yYbj5YMqNyVXW6H2wsdMpeAkghqZKEKc2mbYSB602hyPVus2cUmM2ZrtspZgmpxtEwQX+bfhdSnA7MpCS5RyM3piJU/VBhbw7Hm0KaldIVnYHJkGizxWCo2clS1he+Flcm+x+kNV+9yNf89H5kQuzQ8WC58xI25Fp77XUGuPurU1X0gHgJSAekzSLm7EPE8RTde0emzPAnMy9mlvlWXt7bl5CRuN2mh1Mz3Z9nKE9nS+iDZFvHGIgEOA2SBwHEvpcYd73tWQJIeHq0kJD173M1tvvDTUUCJ4z0+6TUvVmb72FvZCspENVYjbb+1TFc8x2ezyBBH8ALwPxcameCp1E+GIqqzEVF5iilNxgTHQjcT1PrafY2/GK+pDNa76KrYWxBdoU5FwYYYFsBknKqlE1hDodVqvV5uiELdDoc4XZodOSJUh1Oh/f2dN8K9v76IDkB2Pt+YIgDNQe4F4bmw5QCSJ5YYEotcxNKwHwoiJHSabcWkp1m1WBl4hm1AhYFQXZpuhQTtX2Sc0VeLcjOxdfq0jlVWw1bFKNfuRw2BydlHlgXWET6HMFYaBItoTJgeKOqtebyt71uPaNteePtuT5G7MFQfA8el/jamkRmVeRTTYAelEBSwzgBYeqmaxnrkC3wam/SV6QdPTPqSAdz544HVrRWjPhlTgvpFGM0+BkErlyoJo4OZ2B1KruJF+fAKIo6nWFqb4TsiWMdZ9qu/VaQ+me/vtZ/sZsX33WcG2mIAj9NXkaV9OuwDUAelkBrgBeZDixWDN4p+QKKlPgLomyDam7oW5c6zmyJc3bJe5wsoNbSiy08+4iuYJW7GdzYDaHw4nJgib6XGGi+zPZEnwdx1vKd9Xd2N13L3O4NlOq0Jlzd7CvOpd7rRTilbQQlSBi1hrUJwDwQsFNmRBxVh0kmfQSWYWYNQUa/mxCsxvcC/kvIcnt5OaJwTj1RSvOqzCMeNDnf5s2hbrN8SeSf3V1h6PPFcaeHJUtYbD5SEtZRl3JLrJu8+5rv7tdOeyFlRYTGewVB+D8MAG/VgAvPOphqTr5bqVzM5whOPvDBu2vC1FhmllnZbqR9NcKGl3i3o5arWBO1/h5xtaiKq0sPVR7bgquoF5kSbTosqPR5wr+jkOyJXjqPmwpy6i9/irpCoM173gbPzGorwBsY1C4mUVyIs31bdIHU1hX0JoYJUyX7UT0ucJ4r72/dn9vdU6vK7fXlddSllFz/Y1uZ5a7Otftyul9uM/beGzGV2VQXwHYvsAUwIuC7voKK+HpGb/T0/RFW+VbdeUHBjpLl4L4nAIAwDYBVXcAAAAowBUAAAAowBUAAAAowBUAAAAowBUAAAAo6HOFFeFmeMIeGjsf9BUvDJ1dGCyeG/hmtv8rwX1quqdopv+74KTLoI4CAABIA7pcIRKeOB9ZqliPTIWmf3w6bPO2n1gL319feyRpNXR7ssdmVE8BAAAYzwbrNkejYjQq+loLehq+XJq9Ka66Isu/rYXujLUfM6ijAAAA0sAGXSGyXBWNRgebPnhSXRjoOr0WurMarFieKx1pO2pQRwEAO5sE+86qC/GgvsJm0OkK46QriJ66/Y8ffjraWbQ8VxoWri1OXfG3HNbRHLE9HrURXir742md02c3o4gbSAO6totjNmKj9rVjizKr90VldrqQz+F2I+n+eLwuJbod1WXlokSvwhA09/yQTSH2B1xhE+hzhcXAt5IlrIbLn62H3NV7O+4f9rd9vjh1JRi4PD9yYbj5YMqNybtn05tmp1JUQfOcPrvZbMYG3MBwiKGpEsSpTaatxEGrzeFItW4zp9SYjdkuWymmyekGUXCBfxt+lxLcjgykZDkHozdm4lR9UCHvjkebgtoVkpXdgUmQ6HOF4OhZyRKWF34W1ya7H2S13/3I13x0fuTC7FCx4Dkz0nZk2nsttcbI0C7/TZfd4aN5jvQEavWA9BKPSZrFzdiHCeKpunaPzRlgTuZeza3yrL09Ny8ho3E7zQ6mZ7s+ztCezhfRhsg3DjEQCHAbJI4DCX2uMO/7WrKEkHB1aaGh615m6+33hhoKBM+ZafdJqXqzt97CXqgUVeBU2KEr7Zjt9nhyKEHs55wTNwu4Akgv8XGpngqdRPhiKqsxFReYopTcYEx0I3E9T62n2NvxivqQzWu+iq2FsQXaFORcGGGBbAZJyqpRNYQ6HVar1ebohC3Q6HOF2aHTkiVIdTof39nTfCvb++iA5Adj7fmCIAzUHuBeGwvWVMyWFxbiawOVFhM3raRqiHNOn90cOwhXAOlEjpJMubWU6jarAi8RzagRsCoKsk3RoZyq7ZOaK/BuR3YuvlaRyqvYatikGv3I4bA5OinzwLrCJtDnCsJAkWwJkwPFHVWvN5W963HtG2vPH23J8zdmC4LgefS+xtV03WYyesvBnVvMmW2GOUfxBLgCSCNUzWQ9cwW6DU79TfKCpKN/TgXpePbE6dCK1poJr8R5IY1inAYnk8iVA9XEyekMpFZ1J/n6BBBFUa8rTPWdkC1hrPtU263XGkr39N/P8jdm++qzhmszBUHor8nTuJp2Ba4B0EsG/PjOOaeSqPWJ8p4gTXBisWbwTskVVKbAXRJlG1J3Q9241nNkS5q3S9zhZAe3lFho591FcgWt2M/mwGwOhxOTBU30ucJE92eyJfg6jreU76q7sbvvXuZwbaZUoTPn7mBfdS73WmVQr6R8yHkDvdagPoEkyTmYKwDj4aZMiDirDpJMeomsQsyaAg1/NqHZDe6F/JeQ5HZy88RgnPqiFedVGEY86PO/TZtC3eb4E8m/urrD0ecKY0+OypYw2HykpSyjrmQXWbd597Xf3a4c9sJKi4kM5IoDcEb2m/m1Quw5uAIwFvWwVJ18t9K5Gc4QnP1hg/bXhagwzayzMt1I+msFjS5xb0etVjCna/w8Y2tRlVaWHqo9NwVXUC+yJFp02dHocwV/xyHZEjx1H7aUZdRef5V0hcGad7yNnxjUVwC2MSjczCI5keb6NumDKawraE2MEqbLdiL6XGG8195fu7+3OqfXldvrymspy6i5/ka3M8tdnet25fQ+3OdtPDbjq9rSHirTAqwXgO0LTAG8KOiur7ASnp7xOz1NX7RVvlVXfmCgs3QpiM8pAABsE1B1BwAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgAJcAQAAgML/Byy4lukECTgjAAAAAElFTkSuQmCC" alt="" />
二 . 引用so文件
(1).在“src/main”目录中新建名为“jniLibs”的目录;
(2).将so文件复制、粘贴到“jniLibs”目录内。
aaarticlea/png;base64,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" alt="" />
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
MicrosoftInternetExplorer4
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-font-kerning:1.0pt;}
Android Studio通过JNI调用NDK程序的更多相关文章
- Android Studio使用JNI和NDK进行开发
想要学习一下在Android Studio中进行JNI的开发,文章挺多的,但是几乎没有一个完整的说明的,中间总是有一两步漏掉.分享技术就应该完整的让读者学会,藏着掖着不是君子所为.对于那些故意含糊过去 ...
- 【走过巨坑】android studio对于jni调用及运行闪退无法加载库的问题解决方案
相信很多小伙伴都在android开发中遇到调用jni的各种巨坑,因为我们不得不在很多地方用到第三方库so文件,然而第三方官方通常都只会给出ADT环境下的集成方式,而谷歌亲儿子android studi ...
- 使用Android Studio自带的NDK编译JNI
/********************************************************************************** * 使用Android Stud ...
- Android studio 下JNI编程实例并生成so库
Android studio 下JNI编程实例并生成so库 因为公司需要为Android相机做美颜等图像后期处理,需要使用JNI编程,最近学了下JNI,并且在Android Studio下实现了一个小 ...
- Android studio 配置JNI环境
Android studio配置jni开发环境,主要配置是两个build文件,以及新建一个jni文件,放c代码. 代码如下1: apply plugin: 'com.android.model.app ...
- Android Studio中JNI程序的单步调试和日志打印
近日有个算法(检测碰撞)需要用C++实现,目的是IOS和ANDROID中共享同一段程序. 下面说说android调用这段程序过程中遇到的一些事情.(过程中网上搜索了一些相关文章,大部分说的是eclip ...
- android JNI 调用NDK方法
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- android studio 1.0 开发 ndk 调用 c++ so库
一个没用过java和安卓的人使用android studio开发带c++ so库的安卓程序用例(以ndk的hello-jni为例),对于不熟悉java和安卓的人来说这个很花时间,希望通过这篇文章帮助跟 ...
- android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!从此在andrid中自由使用 图像匹配、识别、检测
目录: 1,过程感慨: 2,运行环境: 3,准备工作: 4,编译 .so 5,遇到的关键问题及其解决方法 6,实现效果截图. (原创:转载声明出处:http://www.cnblogs.com/lin ...
随机推荐
- 拖动div简单事例代码
事例文件下载 //拖动容器代码 var rDrag = { o: null, init: function (o) { o.onmousedown = this.start; }, start: fu ...
- Windows上成功编译CoreCLR源代码
昨天得知微软在GitHub上发布CoreCLR的源代码之后,立马从GitHub上签出代码,并尝试在Windows Server 2012上进行编译. 参考CoreCLR的开发者指南(Developer ...
- codepage IMLangCodePages
http://baike.baidu.com/link?url=78DSTGAri8dvHNLQ03rThSKieJqhFwFWL4sQMao6cfaRSOUWN88QVBwmSJPCZch0vf ...
- [MFC] 从文件读取与向文件添加数据
CString str,str2,str3;str2="dsf",str3="dsfds"; CStdioFile myFile, File; if(myFil ...
- jQuery的XX如何实现?——2.show与链式调用
往期回顾: jQuery的XX如何实现?——1.框架 -------------------------- 源码链接:内附实例代码 jQuery使用许久了,但是有一些API的实现实在想不通.于是抽空看 ...
- JAVA通过XPath解析XML性能比较(原创)
(转载请标明原文地址) 最近在做一个小项目,使用到XML文件解析技术,通过对该技术的了解和使用,总结了以下内容. 1 XML文件解析的4种方法 通常解析XML文件有四种经典的方法.基本的解析方式有两种 ...
- AngularJS快速入门指南02:介绍
AngularJS是一个JavaScript框架.它可以通过<script>标记被添加到HTML页面中. AngularJS通过指令对HTML属性进行了扩展,然后通过表达式将数据绑定到HT ...
- APP API如何维护多个版本的一些想法?
1.第一种形式:api版本号放在url路径中 https://api.example.com/v1/user/ID https://api.example.com/v2/user/ID https:/ ...
- 浅谈压缩感知(二十九):压缩感知算法之迭代硬阈值(IHT)
主要内容: 1.IHT的算法流程 2.IHT的MATLAB实现 3.二维信号的实验与结果 4.加速的IHT算法实验与结果 一.IHT的算法流程 文献:T. Blumensath and M. Davi ...
- 【Java】Lucene检索引擎详解
基于Java的全文索引/检索引擎——Lucene Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能. L ...