利用 JAXP 对 XML文件 的处理,把xml当做一个数据库来对待
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA9gAAAH5CAIAAAD1JwGcAAAgAElEQVR4nO29X4wbV77nx4e5CIJA1w8X2IsFVi/LrB+yuICfV3kJEIAIkgUSBLnOQ4LkIkESBljcbLiGgNV13DBsRITtyOOFvV4PLcGSx4RsSbE7cm5PW7LUKlHdzbZHwij2KFYz1mjco5E0vgIEjyBYBioPP+rn06eKxSJZxTrn8PPFBwK7WH9OUazf+daPv3Oqtv7tZwAAAAAAMGdqlbcAAAAAAGABwYgDAAAAAFQARhwAAAAAoAIw4gAAAAAAFYARBwAAAACoAIw4AAAAAEAFYMQBAAAAACoAIw4AAAAAUAEYcQAAAACACsCIAwAAAABUAEYcAAAAAKACMOIAAAAAABWAEQcAAAAAqACMOAAAAABABWDEAQAAAAAqACMOAAAAAFABGHEAAAAAgArAiAMAAAAAVABGHAAAAACgAjDiAAAAAAAVgBEHAAAAAKgAjDgAAAAAQAVgxAEAAAAAKgAjDgAAAABQARhxAAAAAIAKwIgDAAAAAFQARhwAAAAAoAIw4gAAAAAAFYARBwAAAACoAIw4AAAAAEAFYMQBAAAAACoAIw4AAAAAUAEYcQAAAACACsCIAwAAAABUAEYcAAAAAKACMOIAAAAAABWAEQcAAAAAqACMOAAAAABABWDEAQAAAAAqACMOAAAAAFABGHEAAAAAgArAiAMAAAAAVABGHAAAAACgAjDiAAAAAAAVgBEHAAAAAKgAjDjAGJ78iydrbuipp56q/NMAAACAosCIA4yhVqvFbqhW44IFAAAIB/p1gDFgxAEAAKAM6NcBxoARBwAAgDKgXwcYA0YcAAAAyoB+HWAMGHEAAAAoA/p1gDFgxAEAAKAM6NcBxoARBwAAgDKgXwcYA0YcAAAAyoB+HWAMGHEAAAAoA/p1gDFgxAEAAKAM6NcBxpBtxKMokufP1+t1XdjtdvW59KM2HAwGskKj0cCIAwAALCD06wBjyJMRF+fdbDbNhdafltS41+v1druNEQcAAFg06NcBxpDTiLfb7Vqt1u128xjxwWBgrmZuZWppaQkjDgAAECr06wBjyGnEoygSL64m2zTi9XpdClGiKDI3jKIoozQFIw4AABAw9OsAY8hvxOM4bjQaWnOiRrxer0vOWypY1Is3Gg2ruNwy3xhxAACAgKFfBxjDREZc7LJYcPlXRnPqmo1GwypZMYvLl5aWMOIAAAALAv06wBgmNeKS9u52u2Kvu92umfNuNpuWEdcVlhKyjoIRBwAACAn6dYAxTGrExW1rnlsy4mbhuDVHilkmnuq/MeIAAABBQr8OMIYpjHgcx/V63awRV6ttmnJRo9EwZ03BiAMAACwI9OsAYxhrxGXMpTWP+GAwMP/U5/uIX9fHAFkzHmYLIw4AABAS9OsAY+AR9wAAAFAG9OsAY8CIA8CkPPkXT9Zc1VNPPVX55wMAAv06wBhqGHEAmBB34kZSRBIAd+BqBBiDOx0q3SeAL7gTN5IikgC4A1cjwBjc6VDpPgF8wZ24kRSRBMAduBoBxuBOh0r3CeAL7sSNpIgkAO7A1QgwBnc6VLpPAF9wJ24kRSQBcAeuRoAxuNOh0n0C+II7cSMpIgmAO3A1AozBnQ6V7hPAF9yJG0kRSQDcgasRYAzudKh0nwC+4E7cSIpIAuAOXI0AY3CnQ6X7BPAFd+JGUkQSAHfgagQYgzsdKt0ngC+4EzeSIpIAuANXI8AY3OlQ6T4BfCE7bkRRJE+br9frurDb7epT6Mdu2Gg0iCQAAcDVCDAGjDgATEqeuCHOu9lsmgutPy2p/05uSCQB8BGuRoAxYMQBYFJyGvF2u12r1brdri7MsNdRFJnbmtl0U0tLS0QSAF/gagQYA0YcACYlpxGPoki8+GAwkIWmEa/X61KIYlpwURRFGHGAAOBqBBgDRhwAJiW/EY/juNFoqKtWI16v1yVTLhUslheXbLr+aZpvjDiAR3A1AowBIw4AkzKREY+Nmm/5VwZl6pqNRsMqWTHT4UtLSxhxAE/hagQYA0YcACZlUiMuae9utyuG2yoBbzabphFvt9tayrKUEJEEwCO4GgHGgBEHgEmZ1IjHcdxsNjUvLhlxs3BcC1GsopQ4kREnkgB4BFcjwBgw4gAwKVMY8TiO6/W6WSNuTlYopjyKIl1hMBjodCsYcQBP4WoEGANGHAAmZWzcaDQaMiOKWXMyGAzMP/X5PuLXZX4VU0QSAN/hagQYA0YcACbFnbiRFJEEwB24GgHG4E6HSvcJ4AvuxI2kiCQA7sDVCDCGPU/sqbmhPU/sqfzTAIA81DDiAJADrkYAAICCwYgDQB64GgEAAAoGIw4AeeBqBAAAKBiMOADkgasRAACgYDDiAJAHrkYAAICCwYgDQB64GgEAAAoGIw4AeeBqBAAAKBiMOADkgasRAACgYDDiAJAHrkYAAICCwYgDQB5cvBqf/Isn5/u8QoRsPfXUU5VfCADgLzWMOADkwMWr0eX4hRZEdFQAMAsud2TENwB3cPFqdDl+oQURHVUY8PMaKkN5fjGrOdyR1YhvAM7g4tXocvxCCyI6qjAgmKAylCc+uPzdI745C7mD4JW8jXfxaqw5HL/QgqhGRxUEBBNUhvLEB5e/e8Q3Z3H5a4MKUfLqc/Fq5IuIKhcdVRgQTFAZwohDSbj8tUGFCCOOUC7RUYUBwQSVIYw4lITLXxtUiDDiCOUSHVUYEExQGcKIQ0m4/LVBhQgjjlAu0VGFAcEElSGMOJSEy18bVIgw4tUr/9nlGX5bamOm2H8w/3d0VGEQzBcSOSWMOJSEy18bVIgw4k5ITzDbW4/9HPJ8ULNYbasxOW8AMt6d6L6i2q8BHVUYBB9MUCXCiENJuPy1QYUoECNer9ct69btdnVJu93W191uN+dHMxgMdKtGoyELoyiSJc1ms9vt1uv1qT/6VCXPdJQRT/1MZnfqExnxUa/zaNKGTbRaGaKjCgN6NVSGMOJQEi5/bVAhCsSIx3HcbDabzWZyobwQAz3dB6QuXHeVPNDUsrypNjL5Ivk66Wvz2+hJ10kebuxdwUTKv4eqohIdVRjQq6EyhBGHknD5a5OqnIm2qS3ZNG1yWxjxMWq321bau9vtDgaDKXaVrYmMuHUuczDiGY0ZtdVEae+xKfOcLUxqaWlpovUzjlv5hQCzM/b7Y/68poqiKLlmxm9ijUZDt83/K5zK/BFPVeD9v2jUec1B5i+WZqZjVKBuNBrtdnuODZxYGHEoCZe/NqYy3Eu2Q0jGutmdjF/CiI+RFKiY3ZX2B+12W7sQ7VdkiXTD8tpc3mw2Uzu/nN/gmmHWM1ZIVc7TL8qIj9rP7JZ97LuWMOJgkufLY17a8ePLOWkEZXnq5WzGouk8tEQeveeXCJNdCzfRUWSHhZv7PJIwmPxTqwFnP0QURVPc/8wijDiUxNivjXnbL2FKrimJGPpuMoFo+hZrD1N/i+KERYnH9fvZBiDVpud37V5ooY14zv/CRqOh+xkMBhLf5RssvfVgMNBuu16vywqNRkN76Hq9Lq9181EtyWPEM9o/oxFPXj/Jw+Vs2NijTLok/7vxbvONEQeTKYx4/LhjM3uywWAgP5dZYafZbCaL2WqT58UtI677GdVNRlE00ZCVZrMpefeJWjW75CwsTyB2IZ4hY2Kp0WiM+sCLCgiWMOJQEnm+Nsn7arnA5bVc6UmDJP5bL8babD+RZVhka0nyz+SuUl+nrhyAMOLj92z2HO12W7+12ltbvyPLQdvtth5du8/UTtT6dupC64W1cNTrUWdRlBFPXS11k5z2Ov/CnO8uLS1hxGEU0xlxscXm9SuhwCpdS64mUqOZX0kjHsdxo9GQw+mocek7zUqPbrdrvZu6c2l/cgWNZhq+rJ/7zKPructWGvRkz/V63QyY1ikkDzoYDGTPun9tm1maotk+XWK1R4uLUu9MKjTie57YU3NVe57YU/m1CanU8llPvYjiOO52u6Ydkj+t/QwGAyu/UCuiVk2/UeYS60VyeVLJ1VL/zFBJV3oZqgVjxE3jq5q9NEUkPUq8+8df7a1T7wEGg4F0A91uV2tJkz10bVwi3PpGmt/R5OuMc8xz+rXRRjz5VsalMvU6OVub8e5SQhn7mUjJSwV8JGcwSfrmWiLhFCdK10Ylvy33mX2pilKNuPammvHVBLxZsJ58N3mCsmfz5z7ZiZmZFmcsuzXP1DyQxDRNSWhIHAwGqaeQek8iXj+KIjmumeDQs5YDdbtdeaE7lxf6wcqJ6y+TojLuzC0RH6Ak8luXRqPRaDTUe6jk5lxtjKjZbFo/T81uxE2fkG1mRi1PnqzuLUOpjcGIV/BFTPadURRZKZOpPybJe1l1h2ZGPLW3q9frknmSD1pfJ5X6BR31jcxYOLV/zbmfSY14PPpczBVyXldjjyUq1n+bx638QoDZKcSIm6HA9LJzM+LJpqaOHB0Vmqxst9lOq/HmD9zmJiodCWN24am5CVEeI67Ldbem4zePLr48eSzTiJf0E5kl4gOURH7roqMsrLghRtz6+U7ulvMb8fxds/ki1ZqPWj+5zth3Lc3hSi9D4Rhx60dh6xs2S2lKbPzSai7UTs7qfbVXkN5IU1NyAzrqvyH5Z8Y3clTLHTTiY9+ddP08e8OIwyimM+ISAcxr3LSDGhkySlMmHRY5qjTFbJjUYIwy4ua7pszCFVFyNIt5RMuap5p7dee6smnTrR2OKk2JE4Fa26NG3Ep1x2m3CuZq5f1EZon4ACUxUQdqFqioxIjHxk9GsqRYI66rjVqY9Dm6PFXWDsdajvnccpehcIx4vPsRPObXa9QDffIb8TjxG65VSWlmiayJDpKvU/8bkq+zv4ip7R97OqNWSC7PuJxSW5K9yUShJOcHNWfR0YZBnq/QqMGa5p/62qpOSRrN1FLssRo1WFNv7GuPf2RLGvHku9a5mH+akS05S2Ayt50xaaNEObPNtcRtiSa/U9uQzIhrCY1mxK0dpp5jRka8JBEfoCTy93rykJNkCFIjrrVqZmVdeYM1zbfi3f4h1WrHmVYk26/P7Za7DAVlxP1V9jdylP3N2CTPscZulX1JJJdn3yfkv+3J3555io42DKYw4lIOocau3W5b3ZVVil0bN31hnmshdfpCPYp2mebvctr7Jt81d2s1xhqMrg2T8hvTW5tDPM2hk/HjGvH4cT2e/OotO0ymq0dNX6iN0cYn7xDMhJ+00NzEbM+oGvGSRHyAksjf8ZkRwLzu1IjrxWsNtNCtzMg23RygGWYm1Takrpm62tiF3vlvFUbcCaV+TeO0G8exmvS42ZskzXRqO801s1tivpvndNz5r6ejDYOx36jUB/rou8lJec0f3HRh9gN9xn6xUx/oY+7HnCe4tvuRBeJfk+/Gxg93VgmfudDcNtkYWZKclUXPV+2yHDo7dy5Kne2xtvvuJXXWFN158gdJbXPGh1ysasQHKIecX+NaohZXLxk14vHjS1VeZxtxuak29z+2JeY6tRG2O7mkluYHMjYctTD2qhzFVDJ6uBhN5hlPEUoVHW0YEEx8VMa84I6I+AAlMTZkae7AnDHZvNE135XylXj3DbY1Btq60TX3mfNayLDd1pJU4558nWxeqmv3VBhxhHKJjjYMCCY+ykrOOSjiA5SEXyFLnXGqmbbWjHMb8eRRimx01cKII5RLdLRhQDDxSMnJWJwV8QFKwpeQlUxOZzjyZDI7Nck96tx9+UxyCiOOUC7R0YYBwQSVIeIDlAQhK3hhxBHKJTraMCCYoDJEfICSIGQFL4w4QrlERxsGBBNUhogPUBKErOC1uEacLzeaSHS0YcCFj8oQ8QFKgpAVvMIx4hlV/6kT3PDlRhOJjjYMuPBRGSI+QEkQsoJXOEY8nuSZkdlvIZQUHW0YzOfntVmm3JpzHFuE2cHmIOIDlAQXY/AKyoinnl5ySWqyPDt9jhAdbRjMeHVbv7yNfZG67dif7Kbw4qn7zHOyOYOkj1Fxnm0mPkBJ+HjpoYkUiBG3esc8HYnVZab2r1PL0+esogzR0YbBLFf3KH+cM4Zk2PSxRnw6jbL+kx66kPbo0ZvNZhRF3W7XfLafSB/mpw+6rxnPC9Tn/6U+CLC8luc8u8q/2xAkGPHgFYgRj3M8QHXU+hhxlEd0tGEw9dWdGmFGeUFrSfLPsTsftX/rKJO2OTYiXnKfGUe0Dj2RxFW32235Ux7TI38OBoNaraZPzazVao1Gw2xqFEXmrrrdri5pNBq6T228tf6oD6Fw1YgPUA7z+QKjCpWMHi5Gkym+iLVxxrqW24jn7H5M840RD090tGEwda82asOkQx1llGtpNn2swZ3urYwVRrVqij9zql6va1ZbNBgMZIllxJvNpibF4wmNuBzI3Hy6Nk8XvYkPUBIY8eAVlBFP9n9Wz5ex8oxGfGlpCSMetuhow2C6Xi3DhceJGJLHiI/ac4atz2jVKFs/tkkZDRilUY0ZJUmHJxPVItOIW4nzeHIjLrn2GZPiGHFwCox48ArQiOfpw5Lr5Oz5UrWU0ESbIy9ERxsGBRrxjBv+ZFRJXX/snuPRJnvUDrMPlMeaZ7ctuU72alIIrjlvS2LERanJ7ImMuFj5brc76YnMnkYhPkBJYMSDVzhGfFT/lN0jxmld5hTfe/x38KKjDYMCjXjGW6PCji7PTjZnhKOpjfioP0e1P2dgLMSIDwYDGX+Z3PkcjHghv2cSH6AkMOLBK3wjHo+z2mP7m7E9jQgjHrboaMOgQCM+1klbGYFUf5zh41NXmNGIjw19yXZm+PU8GlUuIjJLU2rGBCmier0+RWlK0vRnNL6o3zOJD1ASGPHgFYgRz2OyszutUR1qnOi90GKKjjYMpr6WR22YYa/z+OOijHhqBBvbpIwGWIExuU5+JR12HMcyO4ppxJOWvV6vW+ntZrOpPjt1sKY56YoePbt5hfyeSXyAksB+BK8AjfjY5aOM+Ni9oUUWHW0YFGvER7ne1PWTmeaMm/94hHWeKFKNcu0Z7Uye0SgHn1x/lMRhm15cN7FmTZECFf3TKmtpt9umz06dvnCidLgKIw7OgiEJXoEY8dQTS+0hrJ6JrzjKKTraMJjlkp/IjI5akpGuTu5wbATL2eDsY6VumNx27JoZMgdl6vrmA300852xjrpwa2/Wu2PPrgwRH6AkcCnBK1gjjlCxoqMNgxmDSaozTprmVBs9kRHPOFxGY1JXzl4tmZvIcOp+JS/m2VTiA5SER1ccmk4YcYRyiY42DAoMJqM8a6ojT3pcK6Gbuv88h8vfvNQVMtbxy3ZXK+IDlATXYPDCiCOUS3S0YUAwQWWI+AAlQcgKXhhxhHKJjjYMCCaoDBEfoCQIWcELI45QLtHRhgHBBJUh4gOUBCEreGHEEcolOtowIJigMkR8gJIgZAUvjDhCuURHGwYEE1SGiA9QEoSs4IURr0KppzP2HEv9EGTnyUPkWTLdsfLsc7oPqhzR0YZBaMEEuSHiA5QEISt4YcSrkLNGPHkUc3mSGY+VsSRj+RTHTW38hKdDRxsGoQUT5IaID1AShKzgFYoR37s3xVedODGXzzC39u2LP/88jndbyVEO2NJU3nEC5be8BWbEM17M2AD9qPM0I5/oaMOAXg2VIeIDlAQhK3iFYsTjOG614n37fvxz3764VotbrfI+u8m0d2984kSKjc5jxIs1xDlzw1bDysiIpx4idc2xC1NXy74Tw4gvJPRqqAwRH6AkCFnBK1wjHsfx00/Htdr4zOgc9PTT8aFDw9cTGdykLbZ2MoVyuttRhnvGQye9/ij3P8UdS/JwU7w1cgsXLw2YlFzBZMbf05KxyFnt3Tt8IRea/Pn002O2+vxzV0JrTkmD5QT37SsjQUN8gJLAiAevoI24BF+JuWLKtacR6cLUuCzlLocODT10q7XLF2p6Wzot2ZWsKcl4/fPzz3cdNGnEreWjNIUTzd5Pnp1n3C1MnRTP9t+jmprq0bPVaqX/z07VcjraMMhb5za1ET90KK7VPDDiEh5F6k1loRrxsY7cF+3d+2NZ4KiAn6FWa+xdB/EBSgIjHryCNuJxPOxUzC5H/fHTTw+7GdOvq9R/7907fKEZoL17hyufOLHLYcvCVmu4vjh1WWL2Z5ahTC7P0CwFIdZOLC+baoVLuv4zDprTiOeU9R9kbj753uhow4CM+FDqTePE+Uq8Sr18fJSVv58iI54j/U98gJLAiAevxTDipkxjrX1Pq2V3OYcOjeyEzDiundmJE8O9WcNGT5yIn376x/UzbG72ORZiwTPakMcTF5IOn/SgGVuNVfIH9BnuN+how2ACI57Mnuo33/pSWQvNWCQJcjNHnvx1TpIC8ptbhveV77MkAuRY+uOb7Fx/tdMkgrbKauShQ7sCo+zHlDZb9iZnJKtJrNP1JaLKW7pPLQWxzt1S6ombh5bWytF1uX6G5m418Fp3UObeZH0zgOv/svWjpf7XmyeS+fsA8QFKAiMevII24hJDtThbY+6hQ7ZFS7Xd2slZOzT7Zi1+MK221RNYCRjLC451t6kOeBYrnOFurbfMo6Q2bDpVZcQzzHeOfdLRhkFeI14zKtDkitYXYhzV4CYXaiz6/PMfg5IY1uSvc+qeJUqYIcuS/Lin32rNWMsSbYbphrVYzmqY+NrkKZshVKOielk5hIbB2AiS6s71Z0P94XGUCx914jKuXXYuo2tMH7x3765PUtZ8+unhi9RIPiojbt5O7Ns33FA/QDlucvMRIj5ASWDEg1fQRlyyJo9PdPiumRHXrkgyOqmSPFD8uAOIdxtrrf82c+RWD2dmxLUxeXxthgkeu0mGchrxUVtlGOKc9wajdpXcvEAjPtZ5j9stHa1frN3qL1/bTC6fuDRFrnfL4UlaOnVhbMQic2BJMqVqulV9KxlAVOZqoxpsjkgxy76t+2o1u6ashLp5dlZ0TWbE48TlJvvPrm/JPnF91zy6GX7NeyQTyzSPMuLm0U1bb50jRhwqBSMevMI14pKqSfYoZudnpkOsPkBrxE+ciPfts3MnprGWPzWCm7s9dCg+ccL+FfjxBz9+ydi3CjTi8TinW6wRt3x/xgnmXzkpNQE5b3syRUfrF2dubrY60cEPe5Ydn9iIy410MryMWhgbsWiUdTZ/nYtzG/F4RN7aTFdLMzQ7Hu82zaknaEkj2CxGXLMPGTmO7BM3b12yjfhYozzKiCd/q7TCOEYcHAAjHrxCMeKpD/TZfaJDdC6U2PhdVcOx2Qnpu/pjq7kHszrFSvlYhZvmj9HamDjh/Aox4tn7sY6edOHJhmWsNlFTM/aW0byc9wlmh13bXao7alTW5KGNjtYvxIgLph2fJiMut+XmhhkL490Z8dSBK9avc/mNuO5By5dlQ7PBcuevdSmpPtLKiJt3C7r+LEbcTMNnKPXEtWB9oox4xuDajIy4eVJ61tJBkBEHN8CIB69QjLjjSh2vOZERH0VyzbHK3srMQGe0cLp7gDzrj73ryH+UqW8YEnrw8Pt/8k//6u1oHXzhzfPrasRNO57XiCdnRlLXa9V5JxeqcRQzp8ZaKp5Tf53LWZqipd5WPt5yorXdY0xl8mzdibbEXCGZWTDPfVIjnnO6leSJW2n1nEZcK7zjtKkGs2vE9VdTayineY4YcagO7/0PGieM+Lwk3cyoPP109jq/lc9YJ+fhxq423f9RztPP+UGZGvsT/yT69v4Dy9WBp/x7+/6jXP/ltcRkGmaWV21ZcqFWWptj/swV9E/5bU1/apMEbc0oWbEkFllbZR7amvtchjkmT0cNulUxIrY+eVmZO6/Vdt1d1B4/HEcbbJ6mLs8+ndQT19fW75xyUnoW1jQp5scYG09zMxsmht5skr6bnLNFdxg/TtJnTkmJEYeSCMH/oExhxOconbsAlS0tky1Ijx79sPfJp5avbYIvvH9lw7Lgr62un7mZLyO+CEodr1mULOddwpMsx0uLc+YijDiUBCEreGHEEcolOlq/MGvExYLLcoLJUOU9pt56hJkMWJ+znn56zk8jIj5ASRCyghdGHKFcoqP1CzHipgUXCCa7VJJbNatK3H/IaBEiPkBJELKCF0YcoVyio/WLtVt9y4ILBBNUhogPUBKErOCFEUcol+how4BggsoQ8QFKgpAVvDDiCOUSHW0YEExQGSI+QEkQsoIXRhyhXKKjDQOCCSpDxAcoCUJW8ArdiE83JTZCCdHRhgG9GipDxAcolrVb/eVrm+uErAXQQhrx1OV811Gm6GjDgF4NlSHiAxSLzPt08MPe3iefqvrbjcpVKEbcetri2KcwZhhx+mmUJjraMMCIL67K/IGU+ADFYj4J4Y3Tv9reuTfF1xJ5oVCMuHFC6X+SGkeziY42DDDivio1vZKdcEnuIefyyb8k/9a//e+8Ha0DFMWb59etZwNjx0NVWEY8Ix0+KkZPEoKXlpbyfq4oOGHEw2AeRvzQobwPymm1hqHp0KG41Rr/nMt9+2Z6XHz+huVU4Y/n/PzzyR4ANCqqz/0H0j/9sz+3bBNAGWx+9fsJLhDkg0I04qlLzBdWIB71OiGM+CILIx4GpRvxEyfiWi2X35U1RU8//aOjLemZ8PkbNlbmE+wL10R3CxOlwMv8gfQnP/mT5WubAEXx/pUNy4J317769v6DnF9I5JECMuKWn86fAsk04qb5xogvsjDiYeBQRrzV2pX91Yz4vn2lGPH8DctWq1WuEY/j+NChXIfI48Ln9QMp8QGKxawRx4KHrbCMeJ7fHFOXa8jeraWlJYw4EtHRhkGuYCLJY0VMYa02rCTZt29YkqFVJSJd2Gr96HcPHRouTFZcyFGsUpO9e4fryx7Mg8q7cjix1NpOLQ6RzLpy4sSunVtGXFfTzc3zsnYoG5r7//zzXUl9s/F6XGnwvn0/fow5tXfvsFVy+snql1Fm2lxh1JISfiAlPkCxiBF/bXX9T//sz7O+58h/BWTEH5/Q8N+JigLTjPhSQtN+yCgE0dGGQd67erGS+/YN7Z5nENUAACAASURBVKNYTDXTTz89NNCm59at9u4dLjQrntVDm9IacdMx65rWQcXOHjr0o/+Wt7SR6rPFT1suPN5txHUF0+nqi717hxl607NKq55+eng4de1Ws+Xe48SJYYPltbQ5fzW5fsKpsiJ2diZ7Lj+QEh+gWNZu9c/cZB7xhVBARjw1q50zIz5iTfw3UtHRhsH4YGIOQJRs7uNvQJa1NQs2zIXJzHrad+vHlHO827KP8uimpVZnbNa6pNa36FZWalxst3mySemh9XCxUeZupcbNGxjZatJhnVbdjqlU/52M/GPzLxnbpq2c/QMp8QFKAiMevAIy4vEkRYGpCZURXnyWzxcFIzraMMgVTNTFmvY6acQl46s1G0kjbi7MlvhUyQFPbcTNBLYUrlgy7xBMmyuTsYwq/tYEfIYRt5y9rlO4Ec8236krz+UHUuIDlARGPHiFaMSzl+jyPGkVhB6LjjYMJqsRtyqq1dpKqlumN1HPrcZxlN+1JEUmqqR5jSc04rFRw51a12FmxK0E9qFD6UM5a4ny9IyMuFmqbt1UFGLEczrveERupcwfSIkPUBIY8eAVkBGfLvLm9+5osUVHGwa5gknq1CK1xBjE2LC24kTVqop/NRfGiVn/LDesa5pVJRMZcZmMPENWjbiVR5cXZmvN9fXQZuLcrEjZu3dXGY/Wmk9nxJM14nliderPnnP5gZT4ACWBEQ9eoRhxK6qOjbzJrfIsRwssOtowyGvEzbhx4oQ9H4gWf8tyqyJ8376UWVPEhoofVd9szlKivtPaec0YA6pr6gr6+umn7clerNsJa/4W89Dqj809yEHNvdV2DxU1m/H4Itm1rQ7WtD4Etew6rDPe7eNjY9YUuatJltnE4wL1RAE/NTUzSUdAfICSwIgHr1CMOEIli442DHIFE2uY4ywPs0xV4TsUnTixK+Usc5X4KGse8c8/T59YPeO/cu4/kBIfoCTwP8ELI45QLtHRhsH4YGIVRViV3DPKKv8oVlbtR9mP3SlJ1gQs5gSRlvL8pDmvH0iJD1AS+J/ghRFHKJfoaMNgsqeD1SZ8DE21MitARpVzOC4pXPFQxAcoCfxP8MKII5RLdLRhQDBBZYj4ACVByApeGHGEcomONgwIJqgMER+gJAhZwQsjjlAu0dGGAcEElSHiA5QEISt4YcQRyiU62jAgmKAyRHyAkiBkBS+MOEK5REcbBgQTVIaID1AShKzghRFHKJfoaMOAYILKEPEBSoKQFbzCMeKDwaBWq9VqtUajMRgM2u32pJ9FvV7vdrtTfYxOq16vyycTx3Gz2Zx082azOcVWlhqNRrvdnuI/xR3R0YYBvRoqQ8QHKAlCVvAKx4irjY6iqFarqefLaSIbjUatVpvUiM/uUMuWaaPlLkWX59m83W7XarVJT7Pdbg8GA/2zXq9HURQX5OmrEh1tGNCroTJEfICSIGQFr0CMuKTD1fxpRrzb7ar1HKtJM+JRFNXr9fzrVyLrpMQHy8eVcw9TuGfz/6LZbFoNyPMhLy0tTXTEOYiONgzo1VAZIj5ASRCyglcgRjyO43q9btliyeZqvYpmdq3kd7PZlLdMz6rlHJLK7Xa7ktaVhYPBoNvt6s4tZ6n7n6ISQ1yvtNw8HbM92owoivQcoygSe23deMjZmflp3Vw/FjmQlfyWE6zX66YRl73pDw56/6Ofg76WXQ0GA+s/xVxSr9dH3SZhxKEk6NVQGSI+QEkQsoJXOEZcLaCZvm2322Yxhr6lnltXEN8pC5vNZqr/ljUbjYbsR961miHmOH5cFW2+Ja7XktVa0+aOao8cRc/LzPqnWn8x8WZT5Yx0c31LPyJdQT5VPd9U/y1rtttt2Y/560S73U5m07VSxZJpvjHiUBJT9GoOfhuRayI+QElgxINXOEZcpClbsXpjjbiZLTYXmpL8d9KtjjLis1w2oxpptcdsudh32WRUDl7z97LCWCPeaDTMXwzMXxJUmv+WZuh+zIWS3bcak7xFieN4aWkJIw5zACOOyhDxAUoCIx68QjPiokajoeUWGUbcqixPXSjKb8Rj42bA2snYjHieRpprmkn9brcrVSsZH4tY9sFgMNaIm1U6qQtFY414qudOLlxKKOMsqhIdbRjkDCaO3xYi10R8gJLAiAevcIy46WjVaOYx4mpezQy05WgnMuK62hRDOUdlxJMOu9vtSsmKFMOk5p7jxOwoNaPKPOPU6vW6Oe2MZsStQ5SXEXdQdLRhkCeYuP/7DHJNxAcoCYx48ArHiNd2j7/Uym+zflpem4MdNXeuFc/mwvjxTHyjCqkzasST4xTzKNWIJ9ujDTaPlWrEtaI9flygEu+eNcU05Vq+ornz+HGJubUwiqJRpSmxUTYjdwtWk/LUiDsoOtowGBtMvPh9Brkm4gOUBEY8eIVjxCUrLFZSHWHqhB7ia9W16yaps6ZI1lnX0fGU4i/NwmuR+Hj19BP9Z5g7151Ik8z26Pqm+R5lxNvttjnBi1mHo3szd6771waYVt76hHW3eghZLtvKk5Ws/zvz/qS2ewip46KjDYMpMuIIjRXxAUoCIx68wjHiyE1Z1SnN3fOIe/SsTTraMMgZTDDiaCIRH6Ak8D/BCyOOSldyskhdjhGHOUMwQWWI+AAlQcgKXhhxNA/JAM1kvbhHoqMNA4IJKkPEBygJQlbwwogjlEt0tGFAMEFliPgAJUHICl4Y8cp0/48Pq24CmkB0tGEQZDBBlYv4ACVByApeGPFqtL1zb/+Ri70vfld1Q1Be0dGGQXjBBLkg4gOUBCEreGHEq9Hte9+9cHyr1YlOXNyuui0ol+howyC8YIJcEPEBSoKQFbww4pXpwcPvf/rRlVYn+tnfXn3w8Puqm4PGiI42DIIMJqhyER+gJAhZwQsjXqUePfqhu/ZVqxMdPPH5t/cfVN0clCU62jAINZigakV8gJIgZAUvjHj1Wrv6TasTHTh6aXvnXtVtQSNFRxsGYQcTVJWID1AShKzghRF3Qle/vrv/yMX9Ry5ufvX7qtuC0kVHGwbBBxNUiYgPUBKErOCFEXdFO3eHwzc/2hhU3RaUIjraMFiEYILmL+IDlAQhK3hhxB3S/T8+lOGbhz/5guGbromONgwWJJigOYv4ACVByApei2vEl5aWCt/n7Hr06Idjn/661YleOfVLhm86JTraMMgTTGq1WhRFU39V2u12o9GYevM5qNFoDAYDeVGr1Wq12mAwaDabk+6npDOt1+uF77NsER+gJDDiwQsj7qJ+8dmNVida+vnGjdv3q24LGoqONgzGBpN6vT6LEe92u7VazWUjXq/X5exMG12v19X+ttttsenZmu5Mu93u2M92MBjIvcFEe65WxAcoCYx48FosI26ab5eNeBzHl7dvy/DNy9u3q24LimM62lBY8Ix4s9nsdrvyutFotNtt8y15kd8ET3GmehuQrcFgkCcv7k4YJz5ASWDEg9cCGfGlpSWPjHgcxzdu31/6+UarE/3isxtVtwXR0QZCfiMuNRumVa09lulTkwtNeyppYzNz3Gw2ZYkazWaz2Ww22+22udCUJOm73a54aFlTFMexNlWctOxf1tTKE/nTcreyH9MWSypaG6yHsJLf5oejC7VVpqGPokgaLx+juXPzBGX/8jnoQr1nkHdT7bs7YZz4ACWBEQ9ei2LElxIq5OMrW9/ef/DKqV+2OtGxT3/96NEPVTdnoUVHGwY5jbjpccUC6gtxnGK7UxeqPR0MBmbtR7fbFaerR+l2u+pf1apqxlqk/lv2EBsZ63q9LluJ39VNZGG73Zb15SxkiVUIbrptkVkWohtaJ2WeviyMoijVf8ua4qTNd60PXHbS7XbNs+h2u6npdjfzKcQHKAmMePBaFCMeJzLivujRox8Of/KFDN+8/8eHVTdncUVHGwb5M+LyWuo3LI8oDjh1YWx4VjN1baaKdX0xymYmWBeqrKOYMmtL6vW6umdpvFphkXhlM8EvshLqY424uRNzoXksvamQlpj7STXiybO2tlI5+8Mm8QFKAiMevBbIiMcuRe1J9dHGoNWJXji+tXP3u6rbsqCiow2DSY24+E6rGFoccOrCeLc9TZ2KRL1vHiMej85b14zKGWlP/DgdHqdZXqso3JSWf4w14uZOUhcmP8axRjy1EChpxF3+YZP4ACWBEQ9e4RhxzehYPxxPMSeXm9r86vcyfPPq13erbssiio42DKbIiEtxiLlhxsJ4d0Y8WVyh5Rw5M+Lm/nVDyZGb9lfrv80cubUrKyOemqHPY8R1w+xbjvxGXGQWAsX5MuLuiPgAJYERD17hGPFF0I3b9w8cvdTqRGcv/6bqtiyc6GjDIKcRT9ZeW8UbGQvVnoqVVDcsow91h/lLU7TUu9FomPbUykPLn2YuX9eUSQO73a41GtIaf6n5C3lhmnIpdJFTULssqXpr4WAwyChNSZ01RZshJ6htHlsj7o6y48PJqxuVf/PBU/A/wQsj7pm+vf/g4InPW52ou/YVwzfnKYx4GOQMJlIpYRZnmzOK6AQpyYXW5CE6a4ppc3Xn+q+sb01yIhI/au5BNzEnJJFDW9XkuqE5zlLfFdeu7TF/BNBNdA+ma9eKcE3Sx4m5XLSR5ieg21rt1B2mzpoiex71Q4EjGhUf3ru88Wy392y3V/k3HzwF/xO8MOL+6cHD73/2t1dbneinH1158PD7qpuzKMKIh8GCB5PU8ZoOKjmPuOPNTsYHseCtTtTqRBhxmJoFD1mLIIy4rzpxcVuGb96+x/DNeQgjHgYEk4wydHdkZuitWnw3ZcYH04IL+9+J3o7WAabgn/zTv/rFZzfWrn5T9XcclSWMuMfqffG7Vic6cPTSl7/9u6rbEr4w4mFAMInjuNFouPwAeZ2K0SNpfHhtdd204ACF8MLxraq/46gsYcT91vbOPRm+ye1y2cKIhwHBZEbdvvcdo1OSMuPD8rXNgx/uyogfOBYtX9sEmIK9Tz61vXPvxu37VX/HUVnCiHuv2/e+e+H4VqsTnbi4XXVbQhZGPAwIJjPq8CdfcNufVDI+LBt2nBpxmBpCVvDCiIegBw+/f+P0r1qd6I3Tv2L4ZknCiIcBwWQW7dz9rtWJln6+QVLc0qj4IHYcIw5TQ8gKXhjxQPTo0Q/dta9anejgic8ZvlmGMOJhQDCZRYc/+UJSvCTFLWXHh5Xtrcq/+eAphKzghREPSmtXv2l1ogNHL23v3Ku6LaEJIx4GBJOpJelwgaS4JeIDlAQhK3gFYsT14RGmRj1IuSqlzlRgzZU7u65+fffA0Uv7j1zsffG7Yve84KKjDQN6taml6XCS4kkRH6AkCFnBKxAjHhuPlRbJA+HceQZE6oOd490Pfy5KO3eHwzc/2vBsCjCXRUcbBnkuN31eptw8TxFGCpyrWx9+2Wg0ms2m+ezJDCXXrNfr7XZ76laZ6XCS4kkRH6AkMOLBK1gjHj9+bLIL89Hqs5pTFUWR1fJULS0t5T/i/T8+/OlHV1qd6PAnXzB8sxDR0YZBnmCiNlpMsBrxnCZYsgCTWt5RO5cGy71Bzmgmz4Q3d6jbNhqN6dITVjqcpLgl4gOUBEY8eIVsxKXrkl5HTHmtVjNLQXRhas8k5S7dblc6VOnbRLGRppLeTnYla0o3rH9az2qWp8RZ+apGoyH5cnk3NXc+kRGP4/jRox+OffrrVid65dQvv73/YKJtUVJ0tGEwNphYllcz4t1uN88Ns2jSjHgURalValP/YmZGGA0vqX+OkhVwtnfuCUs/33jl1C/l9c5dxoUPRXyAksCIB6+QjbicXrPZlJ5Vl0gHqR2V6ddV6r+1Q9W+WX7hjRN9pyzUH3+1B22325bnlv1b26bmw8y+cFIjLjp7+TcyfJPHAcwoOtowyJkRt2yxeR8ud9pywVrJb7khbzabphHXESx6sy2FarJwMBjI7bd59548qB5O7wqsncgmsqt6va7xLfmDm7nESpybGhVwXji+9cbpX439DBdNxAcoCYx48FoII24uMY21poXa7bbV71pG2ZT5264+ijmKItmbNWw0iqJms2m6/NRUWerhlpaWZjficRxf3r69/8jF/UcuXt6+Pd0eUExHGwoT1Yib0cOMMGa+Wa9oXUHcsN7wp/pvWVPKvuPRAcfMiIvLb7fbo3aiK0v79ce65C9+o6pc8gQcjHiqiA9QEhjx4BWyEZfeSF2v9l7dbtf69Tm1F9QKE2uHZvq83W5rIlw/UOtnX6soU5thLkw2YCmhsZ9Ahnbufrf0841WJzq99fUs+1lk0dGGQf5eTUvX5Ioea8TNkGIuNCX5b73YdT95jHicyIhbO2k0GmZuPrlQlZoOyHnnjxFPFfEBSgIjHrxCNuLSj+p5yrtmB6ldUUb1Z6PR0A2l5zONtdZ/mzlyq4dLzUhJ/6qWPU9GfEZ9e//BK6d+2epExz79NXMdTCE62jCYtFdrNBp6jWcYcevePnWhqDwjbgaf1IWq5ML8d/4Y8VQRH6AkMOLBK1gjbtZump2W9kCmTU8mjbRGXOopze7QynDLn2qpzd12u90oirrdbrJGPN49ZCpPjfjsevToB5n64JVTv7z/x4cF7nkRREcbBnmCiXkxmoM9xhpxvaJTS+BEpRpxc4KXGTPio4QRTxXxAUoCIx68AjHiqQ/0sc5TpHOhxEbxidl7yYaSI9dfk81DyAuzOsXqQXVD6bbNoaKx8Xt36qwpMjyrqBmIU3V662uZA5gZDyYSHW0Y5OnVarvHX2rltxpxNeVaaSZ37BIKtIbNXChbjSpNyTlrSrYRl+hhxqv2YyVPcGyN+ChhxFNFfICSwIgHr0CMuONKrU5RJac1KPs5RJtf/V6Gb179+m6pBwpJdLRhkPPnteSEp2qvNf8tN9tmdlk3SZ01RQZu6jo6KYrYaCspEO+eNcVMDZhts3ZiZgFGWXwNOHIW+edkFGHEU0V8gJLw3f+gscKIz0mj5hVODhudz8neuH3/wNFLrU509vJv5nC4AERHGwYBBJNJZVWnWPOIT3rbjxFPFfEBSmIBQ9aiCSM+P8njsq2FFZ4awzcnEh1tGFQeTA5/8sVHG/N+3G/tcam69SixKQrhMOKpIj5ASVQeslDZwogvtB48/P5nf3u11Yl++tGVBw+/r7o5TouONgwqDyZVGVmpY5m97A0jniriA5RE5SELlS2MOIo/2hi0OtELx7cYvpkhOtowqDyY+G5kfW9/SSI+QElUHrJQ2cKIoziO494Xv2t1ogNHL33527+rui2Oio42DCoPJr4bWd/bX5KID1ASlYcsVLYw4mio7Z17Mnxz7eo3VbfFRdHRhkHlwcR3I+t7+0sS8QFKovKQhcoWRhz9qNv3vjt44vNWJzpxcZvhm5boaMOg8mDiu5H1vf0lifgAJVF5yEJlCyOOdunBw+/fOP2rVid64/SvGL5pio42DCoPJr4bWd/bX5KID1ASlYcsVLYw4sjWo0c/nLi43epEB098fvsewzeHoqMNg8qDie9G1vf2lyTiA5TEnif21FDQ2vPEHus/3cVoUsvRd5rPuhsMBlPM0jXqmTuFqNFoTPoEO5H5dD2VORPw1NK96fO6Ta1d/UaGb27v3DMbY60pz9wu+1GgLqhGRxsEeYJJqfLdyPre/pJEfACAonAxmuTpO9VGy0Ok1Rrm9KzyaOhJjXjOncszrqcz4vGIp29aj62eVPp0vYzbjy9/+3cyfLP3xe/0uOZZ1Ov11KeEBCk62jDAiM8o39tfkogPAFAULkaTsX2nZVU1I97tdvPb30kz4lEU5XfDqVnnnLLOLk7cbEyh2uMn7WVr5+53LxzfanUieRageRbNZtP8uKw/R2lpaWnaJlcsOtowwIjPKN/bX5KIDwBQFC5Gk5wZccsWm0UdkvCWrK2V/G42m/KWacQlh61utdvtSvZXFg4GA0kPiywDqvs3jXKxRlyOIuerrTK9tS5M3iqY68u7ms+Wt7TIR/b24OH3L7wbtTrRf/7XL/3v7ZfkLAaDgbVnc4m2LSmMOFQLRnxG+d7+kkR8AICicDGaTFQjbtZIWBlcfUs9t64gxloWNpvNVP8tazYaDdmPvGs1I4oi8d9SPJ3aElPi2rNLwFONuNw/yB602XIIabDuP9UTq8+W25Vms6kfoLpz9dw/+cmf/OvlrVYn+q//t8P/yX/2X8hWyVoUrVSxZJpvjDhUC0Z8Rvne/pJEfACAonAxmuTvO8Wemi4z24ibBtdcaEry32pndT+jjHhqawvPiKsRTx7CPFPZNumPzYVWRjy5N7mjOHv5N61O9NdvrN64fV8XmrLuPURLS0sYcXAHjPiM8r39JYn4AABF4WI0mbTv1DRwthG3DG7qQlF+Ix4bNwPmTgrPiFvTsJjjQS1DPKMRN/f2/P/x1j//N5/uP3LxL//HZ/IY8aWEkp+AL6KjDQOM+Izyvf0lifgAAEXhYjTJ03ea5lUNZR4jrn7UzIhbznUiI66rme+WMVhTK1LkXTOHbR4raeLjCY24fm7tdvs//cv/ZunnG61O9Df/yh6amScj7q/oaMMAIz6jfG9/SSI+AEBRuBhN8vSdtd3jL7XyWy2pOkut+Y6iSHPn5ghFs6663W6PKk1JnTVFa8St4YwFGnFrGsFkHY5p00fNG5PfiMvhZGXJ3//P/+x/+Zu3z7Y60eFPvnj06AfdZ54acX9FRxsGGPEZ5Xv7SxLxAQCKwsVokqfvlOGD5nDD2LDXmv8WC2tOkKKbpM6aIgM3dR2diUWcq7w208Di48069dioP5li8u/UB/pY8wbqztWg66QuekR15+asKWLB9bW5f/2szENoPcxXX13/j/+H51qd6JVTv/z2/oN4942HtGTSM3VcdLRhUPk303cj63v7SxLxAQCKwsVoUnnfiZJqNpt/86+6rU609PONnbvfWfOIy51Phc0rXHS0YVB5MPHdyPre/pJEfACAonAxmlTed6JU1ev114/+n/uPXGz97PzT/90/1+VmWXkwoqMNgz1P7En+xDRP/fftD/7yX7xWbRtmke/tL0l7nthT+XcbAMLARbdRw4i7qkaj8cIrb/yv/+ZsqxOdvfybqptTomoYcSiCZ7u9gx/2Km/GwrYfAMBxXHQbIRnxs5d/c3n79s7d76puSJH69v6DV079stWJjn36a3P4ZkjCiEMh+G5kfW8/AIDjuOg2QjLiH20MWp1IeOXULw9/8sUvPrtx9eu7t+/5bc0fPPz+8CdftDrRTz+6cv+PD6tuTvHCiEMh+G5kfW8/AIDjuOg2QjLi9//4cP+Ri+rFle2de1U3rQDJbcYLx7cCS/nHGHEoCN+NrO/tBwBwHBfdRkhGPN6dFBd+8dmNqhtVmHpf/G7/kYsHjl66+vXdqttSpDDiUAi+G1nf2w8A4Dguuo3AjLiVFN9/5KJMxR2MtnfuHTh6qdWJ1q5+U3VbChNGHArBdyPre/sBABzHRbcRmBGP4/j01tfiwsWwhpc/vn3vu4MnPm91ou7aV2EM38SIQyH4bmR9bz8AgOO46DbCM+KPHv2w9PMNKQ3f3rknrz/aGIThWUUPHn7/xulftTrRG6d/9eDh91U3Z1ZhxKEQfDeyvrcfAMBxXHQb4RnxOI7Xrn7z0cbw2ZP3//jwZ397VeZR8X36FEsnLm7L8E3fzwsjDoXgu5H1vf0AAI7jotsI0og/evSDlf8+e/k3Uqay+dXvq2pVGVq7+o2cl9czw2DEoRB8N7K+tx8AwHFcdBtBGvFU3bh9X8pUgimtFn3527+TavjeF7+rui1TCiMOheC7kfW9/QAAjuOi21gcIx4bT8Y5eOJz38s5TN2+990Lx7danejExe2q2zKNMOJQCL4bWd/bDwDgOC66jYUy4qK1q9/sP3Jx/5GL/qaQk3rw8PuffnSl1Yl+9rdXvRu+iRGHQvDdyPrefgAAx3HRbSygEY/j+Mbt+zID4LFPf+2dbR2lR49+6K59Jfl+v2ZPx4hDIfhuZH1vPwCA47joNhbTiMdx/ODh98c+/bXY1hu371fdnMKkw1I9OimMOBSC70bW9/YDADiOi25jYY24aPOr30uZSkgPqrz69V05KV+miMGIQyH4bmR9bz8AgOO46DYW3IjHxoMqfayuHqWdu8PhmzqfusvCiEMh+G5kfW8/AIDjuOg2MOKxUV299PMNjyo6snX/jw9fOfXLVic6/MkXjk/XiBGHQvDdyPrefgAAx3HRbWDEVZe3b8uE3Gcv/6bqthSjR49+kDr4V0790uXhmxhxKATfjazv7QcAcBwX3QZG3NTte99JFvmN07+6/8eHVTenGP3isxuOJ/sx4lAIvhtZ39sPAOA4LroNjLilR49++GhjIM7V6+fGm7q8fVuGb17evl11W1KEEYdC8N3I+t5+AADHcdFtYMRTdfXru1Kmcnrr66rbUoxu3L6/9PONVif6xWc3qm6LLYw4FILvRtb39gMAOI6LbgMjPkrf3n8gz6r86UdXwihT+fb+Aym8Ofbpr50avokRh0Lw3cj63n4AAMdx0W1gxLN1eutreT7O1a/vVt2WAvTg4feHP/nCtbsLjDgUgu9G1vf2AwA4jotuAyM+Vl/+9u+kqOOjjYFTieSpJUXwLxzf2rn7XdVtiWOMOBSE70bW9/YDADiOi24DI55H9//48I3Tv5JE8u17TpjXGaWPFHUh048Rh0Lw3cj63n4AAMdx0W1gxPNL5gE8cPSSm3OPTKrtnXsyIHXt6jfVtgQjDoXgu5H1vf0AAI7jotvY88SeGsqtv/8P//H/9MqHrU70H/5X/+InP/mTqpszq/70z/78v33h561O1Pirf1nh6ex5Yk/lFwIEgO9G1vf2AwA4jotGHCZl7Vb/peVeqxM9d7y3emOz8vYUdTovnuyt3epX3h6AqfHdyPrefgAAx8GIh8OR3qVnDl945vCF9y5vVN6Y2Xn97HqrEz3bDeHWAhYW342s7+0HAHAcjHhQnL7ef7bburPPcgAAIABJREFUa3Wi11bXA8glv9vfaHWi/e9Ep77Ei4OX+G5kfW8/AIDjYMRDY+1W/9WVYZnKyvZW5e2ZkVNfbu5/J2p1onf7IaT5YdHw3cj63n4AAMfBiIfJu/0NKVM5urleeWNmZPXGpqT5Xz/r/bnAouG7kfW9/QAAjoMRD5aV7a3njvdanejlj70f8rh2q3/ww16rEx380PtzgYXCdyPre/sBABwHIx4yvTtbr60Ohzyevu63f9Vzee5478xNSsbBD3w3sr63HwDAcTDi4fPe5Y1nDl9odaIjvUuVN2ZGjm6uy/DN5Wt4cfAA342s7+0HAHAcjPhCsHpj8/kPLrY60UvL3pd2nLy6sf+d6JnDFxi+Ce7ju5H1vf0AAI6DEV8Uene2ZGbuA8e8TyevbG/J8M03zzN8E5zGdyPre/sBABwHI75YSDq51Ynejvy2sOd2+i+eDGQoKgSM70bW9/YDADgORnzhOHNzUyzsiyd753Y8trC9O1syY/rzH1xk+Ca4ie9G1vf2AwA4DkZ8Eend2XorWg/joZVvR8N6G9+nhYEg8d3I+t5+AADHwYgvLvrQyrei9d4dj5/B+f6V4dOL3r/C8E1wC9+NrO/tBwBwHIz4QqOV1i+e9Hty7pXtrQPHhjcVlTcGQPHdyPrefgAAx8GIw7C6Y/870cmrHmeUz9wcTtH46krP6wQ/hITvRtb39gMAOA5GHD5b//az5WubklF+/azHZSq9O1svfzwcvun1OFQIBt+NrO/tBwBwHIw4DDm3039peehiV294XKby5vnh8M2VbV/vKCAYfDeyvrcfAMBxMOKwiyO9S61O9MzhC+9d9rhM5b3Lw+GbXhfbQAD4bmR9bz8AgONgxMHm9PW+PLfytVWPy1ROX+/LnDBHepcqbwwsLL4bWd/bDwDgOBhxSGHtVl+KrZ873vO3wOPMzc3njnt/RwFe47uR9b39AACOgxGHkRzdXJcCj3f7vhZ4rN0aFr6/eLK3dovhmzBvfDeyvrcfAMBxMOKQxcr2liSVX13x2MjK8M1nux5n98FTfDeyvrcfAMBxMOIwhrVb/VdXemJk/X2M/Lv9DZkr/dSXHk8IA97hu5H1vf0AAI6DEYdc6DwkRzd9fXTl8rVNGb7p7ymAd/huZH1vPwCA42DEIS+rN4ZjH19a9rVMZfXGpkwI8/pZvDjMA9+NrO/tBwBwHIw4TEDvztbrZ4ePy/G0TGXtVv/gh71WJzr4oa+3E+ARvhtZ39sPAOA4GHGYmPevbEiNx9uRl3llvZ147njP62eIgvv4bmR9bz8AgONgxGEaVm9svnhymFc+t+NlXvno5roM31y+hheHsvDdyPrefgAAx8GIw5T07mzJtIAHjvk6FcnJqxv734m8nigdHMd3I+t7+wEAHAcjDjMhXrbVid7ys0xlZXtLhm++ed7L9oPj+G5kfW8/AIDjYMRhVs7t9KVM5cWTXpaprN0att/f2WDAWXw3sr63HwDAcTDiUAxvRcOS65NX/Svz6N3ZkocWPf/BxTM3vSyzATfx3cj63n4AAMfBiENhLF/bPHAskjKP3h3/HiZ/pHdJ7iU8nZkRHMR3I+t7+wEAHAcjDkVybmc4S/fzH1z0cWbA968MHyD6/hX/8vrgIL4bWd/bDwDgOBhxKB5NLftoZ1e2tySv7+nwU3AK342s7+0HAHAcjDiUwunrfbGzr636V6Zybqf//AcXW53o5Y973jUenMJ3I+t7+wEAHAcjDmWxdqv/0nLP0wdY9u5svfzxsMbGx6lgwBF8N7K+tx8AwHEw4lAuRzfXper6vcv+lanIVDAHjkUr2+TFYRp8N7K+tx8AwHEw4lA6p6/35aE5r674N1E3wzdhFnw3sr63HwDAcTDiMA/WbvVlou7njve8mxzw9PW+PD30SO9S5Y0Bv/DdyPrefgAAx8GIw/x4tz/MLh/d9GxCkjM3N2X45qsrDN+ECfDdyPrefgAAx8GIw1xZvbH53PGeTEjiV5mKjj198aRnLYcK8d3I+t5+AADHwYjDvOnd2XptdTgI0rsylTfPr7c60bPdHsM3IQ++G1nf2w8A4DgYcaiG9y5veFp4LQU2+9+JTl5l+CaMwXcj63v7AQAcByMOlbF6Y1h4/dJyz6+5upevbcpdhHfF7jBnfDeyvrcfAMBxMOJQJb07W6+fHZapLF/z6aE/Wuz++ln/Hh0Kc8N3I+t7+wEAHAcjDtVz8uqwTOXtyKcE89qt/sEPe61OdPBDhm9COr4bWd/bDwDgOBhxcIIzNzdfPDmck8SvMhXJ6D/b7a3e8CmjD/PBdyPre/sBABwHIw4OIY+U3/9OdOpLn0zt0c1hs/2qroE54LuR9b39AACOgxEHtzj15XAc5Jvnfaq91ma/22cqFfgR342s7+0HAHAcjDg4x7mdYe31iyd7Z256k2Ne2d56ttuTW4jKGwOO4LuR9b39AACOgxEHR3n7cZnK+1e8yTGv3epLpftLywzfhM/W/TeyvrcfAMBxMOLgLsvXNg8ci/yaIlCfG/rccZ/S+VASvhtZ39sPAOA4GHFwmrVb/ZeWe61O9PwHFz2aluRI75Kk809fJy++0PhuZH1vPwCA42DEwQOO9C49c/jCM4cvvHfZmzKVk1c3vGszFI7vRtb39gMAOA5GHPzg9PW+DIV8bXXdl/Lrle0tKa1h+ObC4ruR9b39AACOgxEHb1i71X/5456UX69s+1Eyfm6n//wHF1ud6OWPe76UucOM9O5svbTcO/hh7+CHvWcOX9j/TiSvfbwfw4gDAJQKRhw8493+sOTDlxm7e3e2Xl0ZlrkzfHNBePP8eqsTWZy86sc31gQjDgBQKhhx8I+V7a3njvckzexLmYo8NPTAsciXXD7Mwrmd/jOHL5gu/PkPLlbeqinAiAMAlApGHLxk7VZfZgl8ttvzZWaS968Mc/kezYwOU2MlxX1Mh69jxAEASgYjDh7z3uWhtT3Su1R5Y/Jw+npfhm++HflXLgwTYSbFPU2Hr2PEAQBKBiMOfrN6Y1PKVHx5mOWZm5syfPPVFYZvBo4mxT1Nh69jxAEASgYjDt7Tu7P1+tlhBfbyNQ9GQ+r0Ly+e7J3b8eDmAaZDkuL+psPXMeIAACWDEYdAeP/Kxv53fKr6kHTps11vpmIsjyf/4slaoPoP/st/9u8+9e9X3Yrp9ff/4T/+e//gH1XdClf01FNPVX6xAEBgYMQhHM7c3HzxZK/ViQ5+6EemWaZi3P+Ox6ULhVCr1eJA9eDh91U3ARWmWo0eEwAKhrACQdG7syWZ5v3vRKe+9KBMZfnapiTyj276kcgvg4CNOApJGHEAKBzCCgTIqS+H7vYtH8pUztwcjjd9bXV9MYdvYsSRF8KIA0DhEFYgTM7t9KVM5cWTPfefZ7l2q3/ww2FRjRdzvxQLRhx5IYw4ABQOYQVCRp5n6UsRtsz98my3t3rD9TuHYsGIIy+EEQeAwiGsQOAsX9uUZ+i8ed6Dwo93+xseFbgXBUYceSGMOAAUDmEFwufcTv+l5Z484ND9ZLMWuL/b9yCLXwgYceSFMOIAUDiEFVgUjvQuSbL5vcuuG9zVG5vPdnutTvT6WQ8Gm84ORhx5IYw4ABQOYQUWiNPX+1Km4v78JGu3hoNNX1oOf/gmRnyeSv20p/4vyL/h7McdtfJ0bRj1Onvzyi8WAAgMwgosFvp4+eeOuz4msndn67XVdWmq+xO/zAJGfJ7KMMRT/EfoJqmPoiz2uKP2MPbQqXvAiAOACxBWYBE5urn+zOELzxy+4H4d9tHN4cQvy9eC9eJ5bNBgMBCD1Wg0BoNBu93O45xM1ev1brc76VaW2u120vM1m82M1fTdKIpGrS/Nq9Vq9XrdXNjtdpNLdM+yiXwmyUObG7bbbT337Mz0FCnqPIY7/3EnsvLZ+8w+XH77bm5e+cUCAIFBWIEF5fT1vjxG59UV12s/Tl7dkNsG96vbpyOP+VMbLXZWjXiqqU2q0WjUarVJjXjqzuWWYDAYyJ/ijE3X22g0Mv4Uw6ebi+SkkoeTZkdRlNEAcd7mnYl1o9JsNs0/ZzSjplJtdJ6Vcx5XjX7qmqP2k7rP1M2TbRt7vpVfLAAQGIQVWFzWbvVfXRmWqZy+7rQXX9nekuGbb54PcPjmWBtkWU81mt1u10wGZ2vSjHgURVY2OrUx8e57A/Hl1iamyW42m/V63croNx/LOlC73a7X68nllhEXL65+3TTi3W5XN89wvRP5b3OTDFtsrjndcWsTZsTzr5/t2jPaU/nFAgCBQViBRee9y8N889FNpz2uPiv05Y9dT+FPSh4PVK/XLVtsln9I5lgcp5X8bjab8pZpxLWoQ8yrVIBo6chgMDArQLrdrrwlKyeNeGykvev1evLeQNqgry2zPhgMUo14u91WL24uTxpx2YPu0zTi9XrdamrSjMb5UtqpOxm1bR4TnLptRktSl2Qrow1jd54URhwACoewAvDZ6o1NKVNxfIqS3p0tSeE//8HFkIZv5vFAWiNuutV2u62u1zSy6rl1BfG+srDZbKb6b1mz0WjIfpL12WZLLHerPrg2umRcNpF3zVsFddLWhvKnHM6sTkk14rFxD6BGPDWpb5nR6Yx4qlJ3OMVxx3r0jKNnr2DeAIx17al7qPxiAYDAIKwAfLZuTFFy4FjkeJnK25Ef7cxPfvMnfleN6VgjbhpWc6EpyX+rYdX9lGrEzTy3LLGMeBRF6tT13iC1AWrEZbnm0eMRpTtFGfGkiy3KiI/6c1TbrAaMOhHLhY9qXoYw4gBQOIQVgB95/8qGPNXySO9S5Y3JbqeU07x/JYThm5NmYbUOJNuIW4Y1daFodiPeaDSkJaNKUyzbrXluNdyWEddbDpHZklFGPH7s+Lvdrhhx8/NRmd431UObu9J7ldQZWqx95jfiGcc110ndv7VOtr8ftYdampLnldxJ5RcLAAQGYQVgF6s3Np//4GKrEx38sHdux92Usz6c6O3I6dL2POTxQFa2WDbJY8S1qMPMiFvzkMxoxKU9WgyTtOnm6Exz1Kba9zjNiFtHNMdijjLi8eMS+TwZ8eTCSe+IrB3mNOJjjzvRHuJEqjvjLKZLhJsrV36xAEBgEFYAbHp3tt48Pyz/cHn27jM3h/cMr670HH9QaDY5k5Hm+Eut/FajqaZca76jKNLcuZaYmwvjxy421YjnnDVFqs9Nv5s9faE1rbhp0PWtdrtt3SroKScbYBlx+axkt5LJTn6SyWRzPJUXT6aZM/aT/7jWW8nlqfvMPrq1ziiNPd/KLxYACAzCCkA6J68Oy1Tecjjl3LuzJQ8Kff6Diy7n77PJY/7a7bZWa6i5VHut+W/xxOYEKbpJ6qwpMnBT19F6DB1SKaZWc96pD/RJzoqY/UAftdHycCLTGkpli7mOtTfrtZ6IOR9iFEXmrCnq6S2vaf6pr/P8X5iqpXnl5ML8x62lOfLUP0ftMGPlPK3NUA0jDgBFQ1gBGMmZm5syY+CLJ50uU5H8/bPd3sq2l3nxSc0fyq88U60nbfFEyuOhcx43e6tUf59h1se+O1FrY4w4AJQAYQVgDG9Fw4fMn7zq7shInQ3d5UaOAiNeqpITI5rKmXXO0KgseJ6tcq6f6rlT18nZ1OSaOTev/GIBgMAgrACM59SXmzIy8s3z685WY5++3vdiypckGPGy1W63J3qqKEoVRhwACoewApCLczv9gx8Oy1RWbzg6gvPMzeGTiV5bdfeGIQlGHHkhjDgAFA5hBWAC3n5cpuLsBN5rt/ovLQ9vGFx+SqgJRhx5IYw4ABQOYQVgMnQC79fPupt1fv3scPims8l7E4w48kIYcQAoHMIKwMRo1vm54+463Xf7G5K8P/Wloy1UMOLIC2HEAaBwCCsAU3Kkd0kmKnnvsqNlKsvXNmX45tFNd6dCX8eII0+EEQeAwiGsAEzP6ev9Z7vDwZFuFmSv3tiUFr5+1l0vPrsRx8qjOQgjDgCFQ1gBmIm1W/1XV4ZlKm4+T2ft1nC+l4MfOjp8M+fDXyzF4x6jiFCxwogDQOEQVgAK4N3+8Hk6bhaB9O5svba67mxRe/7nGo59oQ+NR6hwYcQBoHAIKwDFsLK9JXN4v/yxo4nno5vDuReXr7nlxQs04vI6iqJCDRhCcTyhEX/yL55M/oyzyHrqqacqDzUADoIRBygMTTw/2+2dvu6iFz95dWP/O9Ezhy+823dogGktx6PFR0lXsNYftaulpaXZDRlaTNUmMeJjv9WLpok+PYDFgQsDoGDeu7zxzOELzj5qfmV7S4ZvvnnelSqanJYlabtHGfF2u91ut1N3ghFHUwsjPosw4gCpcGEAFM/qjc3nP7jY6kQvLbtYpnJup//iSYeqaKY24sm3RFEU1et1/dM03xhxNLUw4rMIIw6QChcGQCn07mzJ4y0PHHOuJluaJ5O9PP/BxTM3K25eHstS210FnvFuHMeDwaBWq8mozaWlJYw4KkQY8VmEEQdIhQsDoESkJrvVid6OXKkDMTnSuyTDN6utaM9TIz5qiVUsLlIjvpRQgcYCLZow4rMIIw6Q5NIftrgwAMrlzM1NqQN58WTv3E71dSAW718ZTrz4/pXKhm9OYVmyN8nIiCM0tTDiswgjDpAEIw4wD3p3tt6KhlMHnvrSuTKVle2tA8eiVid6q6K0fc7SlGyZK2fUiCM0tTDiswgjDmBx6Q9bvbt9LgyAOXHqy00pU3krWu/dcesZnGduDkeXvrrSm3/bCs+IZ8yagtDUwojPIow4gIm48Iu3N7kwAOaHTlfy4sle5UMkLXp3tl7+eDh8c84lNIUbcTwQKkOBGfFRLUwdkpFHYw9XeZQDcIdLf9jq3elHtze4MADmzduPy1ROXnXoqTqClNAcOBatbM8vL56nC8/vA+r1erfbzWdFEJpAgRnxOMcERNmbTHSOGHEARdPhF36/zoUBUAHL1zalLPv1s86VqcgDiZ45fGFu9wkFWpZGo8Hz7VFJKtCIR1Ekd4/mYIZut5snuyxjkWe525wlw40RB5gdTYev/Q4jDlAR53b6Ly0PS0FWb7hVpnL6el/K2efzcFAvcocIFZ4RF+fdbDbNhdafltTBF/izT56mTufarT1UHtkAHEHT4ed+e5ELA6BKZCbvZw5feO+yW2Uq8xy+iRFHXqgMI95uty1XnW3ERQXWX+W8+nS11Iw4RhwgP1KXIunws7+JuDAAKub09f6z3V6rE7226laZytqtYc7+xZO9tVslDt/EiCMvVIYRj6JIvLhMex/vNuL1el3yzVbBVSFGfKL0NkYcoCikLuXC79fPfdP75OvzXBgA1bN2qy8zljx3vDfPUZJ5ePP8eqsTPdstsWEYceSFSjLicRw3Gg0tFlcjrm5bKlhML55hxHMWisSTzJoSU5oCUBzDupRb65/evPiL7XNcGACucHRzXUZJvtt3q0zl3f5GqU8jwogjL1SeEZediwWXf6UWXNdsNBpWprwQIz6dq57ugsWIAwhal3LmxoWV659yYQA4xMr21nPHe1KZXWo1yKQsXxs+jejoZvFP38SIIy9UqhGXtHe32xXD3e12zQlVms1mTiM+0enkXD42HZ7TvlcexwBcoHe3f+H36+d3Ln1yY+3//n/PcmEAuMXarf6rKz2pBjl93SEvvnpjU24SCp9yESOOvFCpRjyO42azqXlxyYibhePmw2LnXyNubpXxZ/aGlQcxgMr5sUD8txdX/7/zH//6Ey4MABfRybzLyEBPzdqt/sEPe61OdPDDIhP2GHHkhco24nEc1+t1s0a80WjoodWUx1XUiKfufKIrFyMOsL7biP9i+9z/9eUqFwaAo2gG+qVlh8pUene2Xj+7LuNKi5r+vCgj3mg0zKxhsWo0GuJCBoPBnCeYQ46oWCOu3yjz62R9uzRFrX5dnuYjSv22l2rErVblOYq5VeXhC6ByLv1h68eRmtfPLf8/v+DCAHAXdb0HjkVOlakc3VyX4ZvL1wrw4hVmxPNY6jiO2+225ibr9boW77bbbTNPicJW4RnxajVFaUoyIz6R7688cAFUjhrxs7+JMOIAfvD+lQ0ZKPl25FCZyqkvh8M3Z5/jpSrLIsnFPGtauXa171bBgO9aWlqquglOKzwjnnN5HoOe53CVRy2AyjGN+Mr1Tz+6usKFAeABqzc2Xzw5LM4+t+NKanxle0seRfTm+ZnuEHL24vpwb/XE8rpWq0m6WqpBdDWdDK5Wq5nLZVfmn7JDWTP1F385ilnOa1YINJtN2ZusJpvr+jLfhbxlzoOhz2pJWhzZuR5CS1x0E/NOIIoiWS7peT1BWUFPUw9tTlltCSOercCM+JyFEQdYx4gD+EvvzpY8W+fAsbLm856CtVt9uUOYpZB9rGVRAxo/dpbqPrViRCpuxbPKu7q5OONGoyHvNptN2cqcqlkeNh4bJthqg1b06hJdU+2vOnhpmz400XTn2gadpS47Adlut+Vcut2u2ezBYKAfy2AwkNnuZE09QWmJtj+1pNg03xjxbGHEZxFGHGCd0hQA3zl5dVim8pYzZSq9O1sy3+LzH1w8c3OaO4T8GXF5rZ6yNvpxg/V6Xcy0JL/NXWnBt2nE1WdbSWhTVq7dtOzW41fiREbcaqFpi5O+39yzNZ+09a4exWyAnqC4fJW6c9XS0hJGPL8w4rMIIw6wzmBNgAA4tzNMQr940qEylSO9SzJ8c4pBpZMacZ1TOcOIt9ttWcdKA5t5dNO85p/kRJ83PosR1/R2ap16hhHXFHseI26OMU1qKaE8p7/IwojPIow4wDrTFwIEw1vRcN6Sk1dnHStZFCevDuc+f+/yZE2aIiMudjbDiEvlRmwYcSkBHwwGozLiGVMfWpOryIFmMeKxUW9jJezjEUZcy9AnyoiPKgcX4b8nEkZ8FmHEAdZ5oA9ASCxf2zxwLJKxksU+6nJqVra3pEkTVc7kNOJmDbcuHGXE48feWlfQldWnmruSTLO6ais7blZdm488nNqIy/jOUSebasR1P/mNuKxp3ookj4URz6+SjHjym1NC26sXRhxA+PER91+f5xH3AH5zbmf4qMvnP7hY1ON1Zm/S8x9cbHWilz/u5bw9yGnEtYxbrKeVUU4mmHWYo0gnRTGrU+S1Ob9KbffcJrora9IVWS5NMuc/0dZqNbm+0PbLwFCzetuyyLpci7zr9bo5/0ltt8xacH1tZv2TH9QURgphxGcRRhxA6N3tR7c31n63fubGhZXrn3JhAHiP1me/f8WJMpVJh2/mNOIZKWTvZGXcy3sg6KijhzT9+dxUhhFPrmbdZZVwHtUIIw4g9O72fxyvuX2OCwMgBE5f70tNyGurrpSpSBX7gWPRyvaY9iyaEbdmV4xzP+CzEDUajXkeLiQVbsSTnjvg7DhGHED4sUz8m94nX5/nwgAIhLVb/ZeWe61O9NzxniNlKu9fGQ7fzE7Vj3UbGeMaPZWWrASW9QxbZRhx83Vqdjx1Qx8r+zHiAMKlP2xpdcrZ30RcGABBcXRzfbqpS0ri9PW+THx+pHdp1Do4UeSFyjbi2SuYwogDeM2wOuX36+d+e5ELAyA0Tl/vy5PnX12Z/mmXBXLm5qYM33x1JX34JkYceaH5GPFR7tz3Ry9hxAEUqU6RpDgXBkCArN3qy3DJ5473pnjCThnteflj+yFEZ25uSskKRhx5oTnUiOty60UAz0DFiAMoUp0iSXEuDIBgebc/LNE+ujnBrN7l8eb59VYnerbbW9ne6t3Zev6DiweORb07Wxhx5IXmVppiGfEwnoGKEQcw0aQ4FwZAyKze2HzueE9m9XahTEXuDfa/E714stfqRK1OdPLqBkYceaEKa8T99d8qjDiAiSbFuTAAAqd3Z+u11eFMgi6UqSxf23zm8AVx4VKsghFHXqjawZoYcYDAEC/OhQGwELx3eWPs7CXz4f0rG+rChb/3D/5R1SYBofFyZ9YUH4URB0hy6Q9bXBgAi8LqjeHsJS8t/zhics6cvt430+FC46/+ZdUmAaHxmttgTXOFEs6jGmHEAZJgxAEWi96drdfPDstUlq9V8NCf5Wubb55fl/sB5a//9Zn7f3xYtU9AaIzmmREP70lPGHGAVLgwABaOk1eHZSpvR5XNprJ2q3/y6sab59dl1OYvPrsxByvge5UtqlaFG/GFEkYcIBUuDIBF5MzNTXHA5sTeVfGTn/zJzt3v5mAFMOJoFmHEZxFGHCAVLgyAxeWtaL3Vifa/E536soIyFaVUy+L7Y1CQO8KIzyKMOEAqXBgAC82pLzelTOXN8+upz5+fA+VZlgCeR4jcEUZ8FmHEAVLhwgBYdM7t9A9+OCxTOXOzgtR4SZYljOcRIneEEZ9FGHGAVLgwAOCz9W8/e/txmcr7VzbmfOi5ZcQRmkUY8VmEEQdIhQsDAIYsX9s8cCxqdaLXz861TGVuNeIIzSKM+CzCiAOkwoUBAD+ydqv/0nKv1Yme/+Di6o05lanknHG52WzGcdxut2u12mAwGLsQoWKFEZ9FGHGAVLgwAMDmSO/SM4cvPHP4wnuX51GmgmVBXggjPosw4gCpcGEAQAqnr/ef7fZanei11fW1W+VONI5lQV4IIz6LMOIAqXBhAEA6a7f6L3/ca3Wi5473VrZLLBnHsiAvhBGfRRhxgFS4MAAgi3f7G1Km8m6/rDIVLAvyQhjxWYQRB0iFCwMAxrCyvfXc8V6rE738ca+MMhUsC/JCGPFZhBEHSIULAwDGs3ar/9rqeqsTPdvtnb5esBfHsiAvhBGfRRhxgFS4MAAgL+9dHpapHOldKnC3WBbkhTDiswgjDpAKFwYATMDqjU0pU3lpubAyFSwL8kIY8VmEEQdIhQsDACajd2fr9bPrrU504Fi0fK2Ah/5gWZAXwojPIow4QCpcGAAwDe9f2dj/TtTqRG9H6zPuCsuCvBBGfBZhxAFS4cIAgCk5c3PzxZO9Vic6+GHv3M70ZSpYFuSyix9HAAADfElEQVSFMOKzCCMOkAoXBgBMT+/O1pvn11udaP870akvpyxTwbIgL4QRn0UYcYBUuDAAYFZOfbkpZSpvTVWmgmVBXmgiK7nniT01ZGjPE3sqj1QADoIRB4ACOLfTlzKVF0/2ztycLDVew4gjH1QjpwsARUNYAYDCeCsalqmcvLqRfyuMOPJCGHEAKBzCCgAUyfK1zQPHolYnevP8eu/OVp5NMOLIC2HEAaBwCCsAUDDndvovLfdanej5Dy6u3hhfpoIRR14IIw4AhUNYAYBSONK7JGUq710eU6aCEUdeCCMOAIVDWAGAsjh9vS9lKq+tZpWpYMSRF8KIA0DhEFYAoETWbvVf/rjX6kTPHe+NKlPBiCMvhBEHgMIhrABA6RzdXH/m8IVnDl94t59SpoIRR14IIw4AhUNYAYB5cPp6/7njvVYnenWlt3arb76FEUdeCCMOAIVDWAGAObF2q//qyrBM5fT1H704Rhx5IYw4ABQOYQUA5sp7lzekTOXo5roswYgjL4QRB4DCIawAwLxZvbEpZSovLffWbvUx4sgLYcQBoHAIKwBQAb07W6+trrc60YFj0Z/+2Z9XbbEQGi+MOAAUDmEFACrj/SsbL3/cIyOOvBBGHAAKh7ACABWDEUdeCCMOAIVDWAGAisGIIy+EEQeAwiGsAEDFYMSRF8KIA0DhEFYAoGIw4sgLYcQBoHAIKwBQMRhx5IUw4gBQOIQVAKgYjDjyQhhxACgcwgoAVAxGHHkhjDgAFA5hBQAqBiOOvBBGHAAKh7ACABWDEUdeCCMOAIVDWAGAisGIIy+EEQeAwiGsAEDFYMSRF8KIA0DhEFYAoGIw4sgLYcQBoHAIKwBQMRhx5IUw4gBQOIQVAKgYjDjyQhhxACgcwgoAVAxGHHkhjDgAFA5hBQAqBiOOvBBGHAAKh7ACABWDEUdeCCMOAIVDWAGAisGIIy+EEQeAwiGsAEDFYMSRF8KIA0DhEFYAoGL2PLGnhpDz2vPEnsovFgAIDIw4AAAAAEAFYMQBAAAAACoAIw4AAAAAUAEYcQAAAACACsCIAwAAAABUAEYcAAAAAKACMOIAAAAAABWAEQcAAAAAqACMOAAAAABABWDEAQAAAAAqACMOAAAAAFABGHEAAAAAgArAiAMAAAAAVABGHAAAAACgAjDiAAAAAAAVgBEHAAAAAKiA/x9Ye0O/AzwrewAAAABJRU5ErkJggg==" alt="" />
Student对象定义类
public class Student { private String idcard;//身份证号 private String examid;//准考证号 private String name;//姓名 private String location;//籍贯 private float grade;//成绩 public Student(){} public Student(String idcard, String examid, String name, String location, float grade) { super(); this.idcard = idcard; this.examid = examid; this.name = name; this.location = location; this.grade = grade; } public String getIdcard() { return idcard; } public void setIdcard(String idcard) { this.idcard = idcard; } public String getExamid() { return examid; } public void setExamid(String examid) { this.examid = examid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getLocation() { return location; } public void setLocation(String location) { this.location = location; } public float getGrade() { return grade; } public void setGrade(float grade) { this.grade = grade; } @Override public String toString() { return "Student [idcard=" + idcard + ", examid=" + examid + ", name=" + name + ", location=" + location + ", grade=" + grade + "]"; } }
StudentDao 接口类
//原则:抽象和实现分离
//根据功能要求
//接口中的每个方法:注释要写的清清楚楚,做到没有歧义
public interface StudentDao { /** * 添加学生信息到数据库 * @param s 封装了要保存的信息的学生对象 * @return 成功了返回true,否则false */ boolean addStudent(Student s); /** * 根据准考证号查询学生的信息 * @param examid 准考证号 * @return 没有找到返回null */ Student findByExamid(String examid); /** * 根据姓名删除学生信息 * @param name 学生的姓名 * @return 删除成功返回true。删除失败或学生不存在都返回false */ boolean delStudentByName(String name); }
StudentDaoimpl 实现类
public class StudentDaoImpl implements StudentDao { public boolean addStudent(Student s) { boolean result = false; try { //得到Document对象 Document doc = JaxpUtil.getDocument();//异常怎么办?抛:调用者得有能力处理。处理 //创建<student>:设置属性 Element studentE = doc.createElement("student");//<student></student> studentE.setAttribute("idcard", s.getIdcard()); studentE.setAttribute("examid", s.getExamid());//<student idcard="370101" examid="438"> //依次创建<name><location><grade>并设置主体内容 Element nameE = doc.createElement("name");//<name></name> nameE.setTextContent(s.getName());// <name>郭美美</name> Element locationE = doc.createElement("location"); locationE.setTextContent(s.getLocation()); Element gradeE = doc.createElement("grade"); gradeE.setTextContent(s.getGrade()+""); //建立与student元素的父子关系 studentE.appendChild(nameE); studentE.appendChild(locationE); studentE.appendChild(gradeE); //把student挂接到根元素上 Node rootNode = doc.getElementsByTagName("exam").item(0); rootNode.appendChild(studentE); //写回xml文档中 JaxpUtil.write2xml(doc); result = true; } catch (Exception e) { throw new RuntimeException(e);//编译时异常--》运行时异常:异常转义;异常链 } return result; } public Student findByExamid(String examid) { Student s = null; try { //得到Document对象 Document doc = JaxpUtil.getDocument(); //得到所有的<student>元素 NodeList nl = doc.getElementsByTagName("student"); //遍历:判断属性的值和参数的值是否相等 for(int i=0;i<nl.getLength();i++){ //相等:读取属性和子元素的文本,封装到Student对象中 Node node = nl.item(i); if(node.getNodeType()==Node.ELEMENT_NODE){ Element e = (Element)node; if(e.getAttribute("examid").equals(examid)){ s = new Student(); s.setIdcard(e.getAttribute("idcard")); s.setExamid(examid); s.setName(e.getElementsByTagName("name").item(0).getTextContent()); s.setLocation(e.getElementsByTagName("location").item(0).getTextContent()); s.setGrade(Float.parseFloat(e.getElementsByTagName("grade").item(0).getTextContent())); break; } } } //返回数据 } catch (Exception e) { throw new RuntimeException(e);//编译时异常--》运行时异常:异常转义;异常链 } return s; } public boolean delStudentByName(String name) { boolean result = false; try { //得到Document对象 Document doc = JaxpUtil.getDocument(); //得到所有的name元素 NodeList nl = doc.getElementsByTagName("name"); //遍历:判断元素的文本和参数是否相等 for(int i=0;i<nl.getLength();i++){ Node node = nl.item(i); if(node.getTextContent().equals(name)){ //如果是:爷爷干掉爸爸 node.getParentNode().getParentNode().removeChild(node.getParentNode()); //写回xml文档 JaxpUtil.write2xml(doc); //设置标记为true result = true; } } } catch (Exception e) { throw new RuntimeException(e);//编译时异常--》运行时异常:异常转义;异常链 } return result; } }
JavaUtil
//工具类
//异常可以处理:不给调用者添麻烦
//可以抛:谁用谁处理
public class JaxpUtil { public static Document getDocument() throws ParserConfigurationException, SAXException, IOException{ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbf.newDocumentBuilder();//异常怎么办?哲学问题 Document document = builder.parse("src/exam.xml"); return document; } public static void write2xml(Document document) throws TransformerException{ TransformerFactory tf = TransformerFactory.newInstance(); Transformer ts = tf.newTransformer(); ts.transform(new DOMSource(document), new StreamResult("src/exam.xml")); } }
StudentDaoImplTest 测试类
public class StudentDaoImplTest { public static void main(String[] args) { StudentDao dao = new StudentDaoImpl(); // Student s = new Student(); // s.setExamid("999"); // s.setIdcard("1101"); // s.setName("牛骞"); // s.setLocation("河南"); // s.setGrade(100); // dao.addStudent(s); Student s = dao.findByExamid("999"); System.out.println(s); // boolean b = dao.delStudentByName("牛骞"); // System.out.println(b); }
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
/* 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-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.0pt;
font-family:"Times New Roman",serif;}