// ==UserScript== // @name 网页元素抓取管理器 - Web Element Scraper Pro // @namespace http://ecmk48.free.mbbs.cc/ // @version 1.0.0 // @description 自动抓取网页图片、视频、音频、CSS、JS等资源,支持分类筛选、批量下载和管理 // @author ECGAME // @match *://*/* // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAD2EAAA9hABFZYG7wAAIABJREFUeJzsvXewLcd93/npnnTCzfne9x4ecs4ACYBZlChBEgWSEikrmMor1a7Wrt11rWstB9llybLl8h/2bq2r1mYSZa9lrWRKNEWJIkUxEyRAgEQgQCK8eHM89+SZ7t4/JvXMOfcBFJGId75V596Znp6e+Pv+UncPjDDCCCOMMMIII4wwwggjjDDCCCOMMMIII4wwwggjjDDCCCOMMMIII4wwwggjjDDCCCOMMMIII4wwwggjjDDCCCOMMMIII4wwwggjjDDCCCOMMMIII4wwwggjjDDCCCOMMMIII4wwwggjjDDCCCOMMMIII4wwwosGkfwuWlzUFz/C9zbe/Ju4W1vzlf6BkpN1IzpKObpvRMU1sq+rTnO9JTYeVoF0ZeQddtqNBk0gBMzLfe6vFIwIYITvCVz73rmrHaluR5i3GiPmDHoewyyaOgIpQBqEg0EagYtBSGGk1riOK3QUmkMiDow2vahrvtXZUQ+Gh/rL/qL36OqnDnde7ut7uTAigBFeqRDX//LMa1Dmp40yt2LMa4UQNelLpCfI/gcSIQUIEFIgJCDjZQDpCnRkUB2F6mqMAtVR6FDHdoAxawbxaSPMnyllvvDkhw5OvZwX/VJjRAAjvKJw3S/O3CWN/ltG8SYDd0hP4I27+BMu3oSDP+3i+BLhAkKALO5ffqFNUmZMvGKUQfUMYSNCdTVhQ9HbCVE9Bdo0kPLTUpq/cpT8o6//3u75l+SiX0aMCGCElx13/Cpepz/1M2jxy0aZ10tPSH/aozLvUV3wccYk0hEYDCiTCTPpv+/EoxcxbyBFTAyA6sRE0Fnrx2TQ1YDZRoj/5Aje98gH9x55Ya/4lYMRAYzwsuGan5+81HPkvToy/4Mx3O7VHSoLPrUlH3/WjYVex1q7IONDpN58F2G9lBAQoLqa3lZEZ61Hfy9C9VVXuvLPheQ/zp7Y+4vP/DOiv/mRXnkYEcAILzmufe/4rHTcf4QyP2tg3p9wGTtZobYS4NYkRhu0MkUZN+VFM6D5vxsSyCBAOAIMhAeK9mqf9rkuuq9Bis8IYf7NYx/c/+gLcKRXBEYEMMJLiut/Yep/Ntr8ukBeW1nwGTsRUFnwcSoCExmMtmubQaE2hX+J1MfGfMHffwEgHIEQEDYU7bU+rTNddE8jpPgA0vzbxz6w//UX5kgvH0YEMMJLgpt+afYarfXv6sjc5425TFxVY+xkgHRAR4CxzPzMxBfJ6qC2Lxa9SNZAgjS7ELY0h9/u0FnroZVuC1f8q5ae/N3THzrdfeGO9tJiRAAjvKg4+fMnK2Oy8Ys6Mr8lPTkzdrLC1NU13KpER7aGN0PMfEplg25BTBMGYwSI5yKK7w4iSS921kOaz3bp7YQgeQBX/Prj79v9ygt0mJcUIwIY4UXDTb8yc1yF+v1GmbcF0z6zt4xTXfBiwdcF/V0S7Ats42giGLb/kNXvGsIVoKF5usfht9voUHWEI37bNPf/9eN/SP+FPdqLixEBjPCi4MZfnHqz0ub3BfL4xBU1pq+r4wQCHeZOvBmim8sWwWD0/4hthTbFi08CSbCwf6DYf7xFbydESu7XRvzyN39v77EX9mgvHkYEMMILjht+Yfp3VGT+N6/u+PO3T1Jf8TDKoHWp4lECe4R/P2gNPEeQ8AVOFw6DcMAoOHymS/OZDlqZTSnFzz32wb2/eGGP9OLAeblPYIRXD+5+z/HqxGudf2Mi8/dq876zePdUYvIDxBF1YascAYK4Q048Lk/k5aJQKftXHL8nEKKkw+ztw8b6vdAqL+GvyoKHN+YSHkR11dM/uXhH0Nx6uPflF/hoLzhGBDDCC4Irf3ZmIqr0/8CE5r0TV9VYumcKtyoxyhSFORFaURLSlAhseS7vZ3FBQZAL7RX3IGeOvPz54jviCg3+hENl0SdqaCds6nsXbq/ObD3cfUVbAiMXYITvGtf+0vSNUpn/iBF3TV1bZ+7mcTAGrW17PFkc4rgXyrJdTGndbudot8CY8k52vVJwsVTnhYBI0poHj7Zpr/ZAmv/qGfNrX//Qwf4Le6QXBiMCGOG7wvW/OHM9Sv2lcOTK/O2TTF1VRYWWE58IZFngBjvyMKQvwHNE/IfUP7od+3iFqgVk3YKzvUTWuyjrpPQcpJGmCw+e6HD4VAfhmC8b473r8Q9trV94z5ceIwIY4W+M635u+gaB/phw5Mml100zfkkl7jLLEE1fjvpfQLMP7QMwNEhoSutckDjy4yUryRBiTNy+MaB7hqijIbFejIq3SU/ijUkQIF0ZB/8MRWKwkbTdOtPj4LEWCB6OpPzRJ9+/szqk9suGEQGM8DfCTb80e42K1MeFJy9bef00Y8eCouYHMjG9EBk8TyIwxYViu9bOA0RQIg4EceTLCHQ/GQW40SdqKnRfo/oG3dMDbQuZzj0ATlXi1hyCWQ9vwsEbd+JT0yUyEPF8BM1TPQ4ebwHmK7Jv7n3kPx/sHXFbX3KMCGCE7xg3/NzEFQbn49IVVy2/YZqxE7nmHzS584Wyr3/hVF9Jux8RGwAKfQeKgptuN5lZrnqG3k5IZz2ktxcStVWs7dOo4ZCAIsLEXoAGYwQ6lBiTTEcQOFSXPIJph2DOxa0LKBGB9AWHT3djEpDiYy0z8e5XSvfhURbgYsVvIvnMdx4Cu+aXZlcw5s+lFNesvGGGiZMVdGiSdJyVshOZPGVqJo7WC2s9jfQXU31ZWdKQnTEQab7giMh+OUsgJAhXojqaw2e67D/eonmqQ3gQoSOd9PNPftaxhEgk3IDq+0R9B4xAhT5ae1l9o6C/F9Hd7NM8DVFL4Y9L3FoyU4mJ3YjKbJwO7e+GVweyb7Ye7n76O733LwZGFsBFhht/cerNSpn/w2hOOK74hEZ80jf6i88nSn3l3yHwD6c/jjbft3TPDNNX11AlzQ/DI/FFz8Ay14ftd4RbMDRbcIHYgHAEUVvTeKpD+3yPqKsyS2AokhlCjBZEYYDjRklbEsfTCKkxxqB7uqe1UQY0EZFBaAzCq4spDMKpOFSXK9Qv8XFqcSo0bl6w/cAh3e1+H0f+6Dc/sPvJ4Sfy0mFEABcRbvj5qfca+IBXdx235tDeCJGuAfSaEeJZYcTXtOHjRjlPPfHh7W/Z+77nPTiP1ab/q1HmxxdfM8XsjWNxt94kij8swJcul7eVI/LDXYMyEQwP+A3UNUnvvMjQeKbL4bMdorbKhvYOhTBxTCByiEIPLwgRjkS6iqinwrChNw/PR8/299VmvxHt9pt6XytCNNooEwIKwJtwptyqrC7cHHx/fdm7RvqS6krAxJWVOLNgDKpr2Lq/geqoHYnzhkc/tPPEkQ/sJcCIAC4SXPmzMxOeox8KJrzLT/7QPF7d4en/3qBxuoNXNSAMjqNjYRC6A+ILBvOfHn//wQcBbvjF6X+h+/ofzN0yyeIdk2ilk+h56UC2drcXLhj4GySCsjVQLhsa7EuCbp2tkN1vNOnthgjnAhofMFoS9Xyko3GCCOmB6mvVWus/1TgVfbO9Gj3ba6h9oEceRkyPrK2fIp5yPALk5OXezfO3Vd9VnXFX3LrD+FVVKvMeYOisRex87RCE+aPHP7j/7iNP7iXAiAAuElz3C1NvJOKzy3fPMH/zOFppenshz/zZFqqXvNcCjHLQykEIjVvpA/yO0WbNKP7d5OU1jr1pNkl9pbJwlKl/lCk/6CJ8J0RghtVLtb6B/SfbNL7Vjv1758KmvlYSHbq4VY10I7q7anPv2/2vNc+Hz3S31bnkQA65nKSCnv6i0v/0p4G2DOTk3I3BD81d57/TqTqV+skq41dUEC4cPN7h8Kk2wuUfPfaB/d8efqIvPkZBwIsEC7dV7xVS/Nj8rZN4NQejwJ9wQQia5zpIPw58SVcjpUaFPkZLHD96ow7ND1fnK5z4/jmkBLTV/dbu4C8oBfaSIF6yagf/8hU7aJd2FS7WtYN+olRPEEfZo6Zm+2uHNJ5ux+VHaH0hDDpy0JGDG2i8mqa12nv6/Ofbf7rxYPfT7dXoW1HbtACPXD5sDR8SWwPd5Nexfm1rOTTKHLTWoi81VvX9lSnnMhOqxaip8ac8qis+vT1F1FBvWbq9+t82H+5u/k2e63eLEQFcJFi4pXKvcOVbZ68bw62meWuoLQS0t/v09vqZxhTC4Ab92DzuO/h1OPGWOYIJF62wUmZ2tD+N8Kdt5NtItglLuNN90pVy1iDPBqTreaWcAwTSlXTW+2w+cEh3o4/0ihmCDAKMkajQQ0qDV9N0dqK19a90/nLtS51P9Bt6izie6ZGbNqngR+SCnwp/u/RrDSnrAlq19ZnDZ3qf8qfdY9IxV/T3IvxJl8qcR3u1L7QxV86/fvy/bX21/ZLPJTAigIsE87dVbhHwIzNXjeHV3aQXm0A6gsqMx8Gz7WTgTiI9RiAdTdj2ueStU0ycrCbpvlzYywN6CoI9bGTfkDx72l4u2Zawl60BcuGXAoQraJ7psfHlfVRXxcI/DAJMJFGhg1fVqChqbX2j9/lzf93+SGcrOg245Ka+SX6pOR8CfYpavkks8E3r16JIArZloLTm8OCZ/se0MvuVaef1ndW+rK0E+NMuvY3wCqH1/tZD3S8+3+f5QkE+d5URXhUwogdJFCtVphKMNtQWfBZvm8Ko4i46NBx/vc/0lTV0qPP9LDM/IwMKVnzRKkjN9UzGLQKxTf3MDCi6BZkLkK7LmAF2vt5k4/49DOZofx+B6rkA+PWQ7k7v7KmPNz+8+UDnE0YZBVTsS05+tsbvkAt7A9hPfnvJb7/0O7B+jeR3QEwKvZ1Hev/3/uP9e0Gf2/naIU7FwZtwMZH+8ed8hi8C3JfjoCO89BASNwuaWUJnABMa5m+eoLnapXGqhfQlOjRMnKyxdOcURhsEApPJWByUszW5yUQ7L0njdelxsnMhzR4m8YFCXZFF9JPsXFye7GgkSCnY+EqDg6daSPcIkz+B6jtI3+AGhq1v9O9f+2LrY8RCXs0vBihG8yNirZ8SgO3fp6Z9N6nTT+qngUBNbkWkkVJBrGxdwKx+tfWp2Vtm3qO66hM7DxyMCyFAis8efRUvHkYEcJHAGHOZdB3cQGKb1iJ5/YWApddO097qE7UjvJrLyj3TsfDmSYIEqdhmree5sYxkisItEJk4mHJ9IRDGZAQjEFl+X2T75MHErYcOOXi6dWGTXwu0cvDGFL19tbf6+e4n97/d+zqxqe9lJx6jnMpL/fxU4MumfSr8aVAwdRfSuIGx2rYdIJeYKHjkP+5++bpfnXkbPXMfQp/vj++/b/jFvLgYEcDFAwNmwPQ2iWBrZRhb9Fm5e5pTf7HB0l1TVGd8VF8XZt3JRtlZhGBMviJsWsiEO9kv0+aJNWGSyUIMGLtecnomO25MGMIRbD5wwN43mzj+Ed6rAKPi/byK4uBU74m1z7b/NOyYPYrmfln4y2Z/Kvi2b58Kf48856+sNmzBH3Jm2XEA+Ob/s3s/cP8R9V8SjAjgIoGQopt23BFCWNoWUgFToWHqshrH3zzP9BX1OJdum+8mDdDlBemgmLwkZRZT2DcX5WQ9EfqYTEwWfUu/2JcUZ9pfOrD9SJP9J1tHCr8QhqjvYbSgMhWx+83+I2c/3fqD5PBl4S8H+2yTPxV6O7hX1vwRxY5AptT+wOlZdV8xGBHARYJex9RrEzL2mSkKbcG4dwWLt07kn+YSOUmkyAkhjegX/f14MTlO4s8bkx/X1vJZ3ZQwhrgEri/Ze7LF9tcbyCOCfbHw+wD4YyHbj/YfXL+//Qli39vOdlndhwbM/lTrH5JH91PTv0cu/M+l9cvrYkjZKwIjArgIcDLg0upudIOY83A8Wcyn2d31UnNcGysKn2w+ysxPSnJtbYYTgdV7L7UiMiJIhD62JkzuEhAT0v6322w+eICQxXNKIYRBRS5CatxAs/7V7ie3Hup8imJnnvx0B83+NK+fCn9KAKnpnwp/2eS327yQgL8ihR9GBPBqhn/PJcEb33Sy8ivXTrs/8sm6mXgg0rnfbeX7C4KepeDSUF1RW6eVTFIorJhAbsJDwT1IzX2GEAFgRE4a6Rd+hAHhCVrrPdbv38eoI7r2Coj6HkKAP6ZY/XLnr7Ye6nyS2OS3d7AFNTX9beFvUhT+JkWzPxX+1HIot/s9iREBvLrgXb/o3vb645Wfvm7R+8G5mnM9AKFBGwM6NcMtPzv10wsxgXgptu4tIbVQDM+lZan2ZsA9SBYTIrCppeT3pyUO9A4Va5/fu4DwG3TkYbSDN9Zj65H+A1tf73wGCBhqKwyY/X2K2t/u2HOU5n8+Gv97BiMCeBXgukXvhjuWg3ffuuj9+PyYc7MUEGpDLzRoAz4CIWVu9gsBMk0BmkwAh6EopGRBOzuYl2r/1Hyw/feUCLLcflJmhB0foOj3J4G/9fv36B+GSG9I0E+ADl20FlQm+mw91n9g9fOtPwJ8Bju4lYN+du8+2+xPtX+a60/TfOVA36tC+GFEAN+zOF7l2M2XVN/+2uPBT5ycdN7kOyLoK0Nfmay/vutKxupwctnhM80Q6Ti4FZn78AVHXxTfaqt/gB0nMMk+pcRgRgTZTgOf7RZW7XRL7hZksQQMwhWsf/WA5tnucOEHMAKtXILxPtuP9x5c/ULrTzla+NP/dvfeNM9fjvh3KGr+V63ww4gAvqdw2Zx/9U3zzr23L/s/sTjm3jwRiKlQQ6gM/eRLu9KBqRmH+QWHWkVTCQw1R1NpG6K+Rocm7gxkT52dwMru5Vo93WJIrAbbh8+DdfFuxjIZsqBA0dw3w/oAkHVIkr7D7reabH+jkWUsBiEIez6V8ZDDM/1nzn++9aeJV35U13a7o09q9nfIzf1DBlN9ts9/ofz+9zRGBPAKx6Wz/jU3zznfd8tK8BOXTsnXBa6sKR2b+M2exhiB4wrGxiVT0w4T44p6HaSIskkslQJlwHFlrlGFrcVz5NP0mwFCADuYlzSTBPtiQc8Thql5D1Z0P9tGEvU32X7GgHChdxCx8cBBobNSAQKinotfDenuRlvnPtf6YzSa4e/yc5n+qea3R+/Zmv9VLfwwIoBXJK6e9a+987h7382L/n3zdXln4MpAJZq+3dNoI5BSUB93mZwUTE5oajVwZIQxYHT8tsfBfpMJuyH9TJdAiDzolubwC318StKXiq+w6qYl5bSgsPexo/vJ+eTlIpvTT8h4fe0re4TNC/j9ysH1NUbr/plPN/+/sGl2iYN+Zdgme5ryGxb0S1N9Zc3/XD37XhUYEcArBCcng0vvPCHvu3UpeOexceeewBWVvgKlDa1E00tHENRcJiclk5NQryscqRNNDyoZzZd38slF0xVgkjku41GAoqDFM9gZAuwgYPJ3SBAw69FHqWsvFNqCmAgK1kASAXB8yc7jhzSebR/p9xsd7ysdY0594vCPutvqLM9f+G3tb/fvH2b2l3v2vWoxIoCXEVfNe7fccyz40avn3PsW6/KGmi/HQg2RSs17kI5kbNxnYsphfFwT+ArXjWIfPhH68jTZdt4ttqRFTAAmzc0nTncm5fZIP7CDfFmknuHb7YE9qbmf9g8ojAWwc/0pnSRRfykl/YZi8+FG3NnnCBgl8Wqa7Ue7Dxyeib5BsXvvQHUGU37D+vh3KI7ouyg0f4oRAbzEuHLGv/6OZfdHblzy3nl80rvLc3CjIUJfH/eZmHQYn4BKRSFFD0ys7ZWyBPQIPzmDia2DrgYpKfrW1v+h4bYsb58H6bC0d2rGkwo4tktRTv9ZlkUhm2CQrmD1y7t09/pD+/kLYQh7AW6g6O6r3Y2vdP6SfETfkLPO/tuz+dij+1LNX+7ee9EIfooRAbz4EDfNebffcsx/x2Uz3htPTjqvq3jCj+zovQbXcxif9Jic9qhUFbWqRtBDa4VRoEgn1xgU1oE0XMFHj1VaKzL4Ex5uzckF9wiYrMFhx7IIoWzKW9rfuvykTZNZA7b1IV3JzhNNDp5pxd2UyzdPgIpcHF+h+mHj2U80P6xCcwDUjryAXJCP8v1tAigP54WLiARGBPAi4fol//rbltx33jzvv2NhzLnTd4VMhb7VjTW94zqMT8RCPzYp8N0QY9porYiiWKiOEvoiYmmy/fZUy6b7OSIe8iuMQEhLiw9BdkTroIUBPJYGt0f95VmD1KVIevylAT8ropDurkLDxkMHA6MKs6bSTreuYuZZHVQcefeZqv7GbsecJRZeu7+/Lfj2xB7lyTvLuf5XfbrvKIwI4IWDuGnBveu6ef9Ntx3z71sac1/jO/h9BZE29BOhdz2HqdmA+rjL2DgEFY1SHVQU0e9Z4/XtBHoeQcvy62bI5uJKDpPm/JMv3sbCOKyqrdEp6fHBjjwFF8E6VnbqVmYhJqU49pBOGuJ4ko2H9+ju9Yfn/AWEvQrC71M/0MxtqMBdcO+6xLiv3Wmp0+cP9SObTfXtdmi2KY76S81/e3x/mvq7kPBfdBgRwHeJm5a9O25b8u+7YcH/0eVx5w4pIEyEvhcajDG4rsvktM/UbMD4hES6faKwTRSFdNpxIi391hwkqTXLhC9a9klJQd0PrBbcgsjAfmQIxlwcXySTf+ZtZinAZJCPNZ8nWHl+SIU43bc8s0+Zq0ShXh4biHv7tTZ7bDy0PzzwJ0CFHggIHM3SaY0JNb14SjAxP+ZcujjuXNoJvc5aUz1+dk89tNNRZ4gFXDA4xt+eqNOe0MMW/ouOBEYE8J3Dv33ZveuWpcp9V866bzw+5b7WEYhQQS8yaBUPvPF8l9npCtNzAUHV4LgRSrXp9nvojolntRUCcVTYu6Si81UxIOxpjdQXH9aEMGQfwTTaMsWzDjsMBgONTUamQDZ5ANAkdfI2c6KyzP/CBCFxSnPrkQOitsIJhtyDRCxlpcvCpuZExSdc8Wk1Q9rtkDCKrSXPoXr5lHvHpZPuHXttdWajpR8/exA90ArNGWKNbwf/yn7/85nJ51WNEQE8P7i3Lrm33bQcvOumBe8dS2Pu9VJCpKAfGpSONb3nOUzNVJmdrzA26YAMCcMW3U4X3VYIIXNNnwlDMhinoMmTv6lfXArqDQTmbP85889zM1yKuB9A+jkvUTAvioRRPIql4QvJvrgkFeaMmBKzozzbj50tQMRR//1TbXaeODxydh8VuQhPUW0pqufabAhBrRYwMRMwOR3QboY0myFhqOJmpWBuzLlkecK95IYF702bbfXQM3vRp84fqC8BW4xM/6EYEcDR8F97LHj9VXPum29c8t+xPObc4klEXxl6yqD6sWns+w7TcxUmp3zqE3EvtX6/w8Fhh0hFSOJee0LKzG8etNXztzAXuGwazJKfH0u7wWT96vNAW1K7ON+XJedxZbsPvo2CiCc7meSYotReEvfPjfs0PHEhv18kdGEEm19voCOD4w+JRGiJVhLPD5k/18PRBi3hsNWh1e5SDXzGxgLqEzX6XU2rGdHrhkQqJp+KJ2rXzfuvv2XJf32jZx59aif86Ld31Z9tNaOHiC0Ch1fxAJ/vBCMCKMK9Y9m9+zUnKu+6dt67d67qXI+II/dhZOhamn5mrsrcfJXJaQ+ciFa7xUGrTbQfIYg7t0ghLd+Xoo/M0ZF9W6Nn9QqBv7wD7oA1kPxPhVMCHQ17EbiuGDIf4JCDU+aQnIggn6nXmj1kwB5ITf5kj6yG9CS7325xcOqIuf1E3N1XViLqB4rKYYSW6WfA4vvZ7fXp9Pp4rkO9WmFuMUDogE4rotsKQSu00jiuw8kp58abFr0bteF/emYv/Nj9Z8MPPrzW+zTW5JwXMy56ApiHsZVl95bbl4N7r1/0f2yp7twC8WCbdmjQOtH0gcPkuM/MXJWpGR/X1zTbLTb3dun1+wgDjiNioT9Ss8YoC64t5AN+/7AgXykyWLACiCuk9XRi/tcd2OmqeLovcSGVVxT5YgAw3mKyk7WtjyQekJzk4Pz+CTUow+bX9yk0bN8LLRCOxjWKmdUeOWvmqcPkUyForWm02nQ6Xeo1n6npKkuLFUxfE7b7EMZEECpJzZOTd64EP3PX8crPnN+vfOn+c+H7H9hs/+X6PqePvBUXAS5WAqjedSy469Zj3rtumvd/bLwiL3NkrOk7oUbrWIN5vsP0TJWFpRpTMwFGhBy222zs7dHr98EYpEhM/CziHcPW9Nm6ASNy0z7dLhJhKGhdS9KHEUQ6ws4gCjn/IjfEboICOgqCuovjSXRkrKAdRTawzXwjCmRWGMtvMsm2+vYP/xaASeIC0pNsP3lI4/TR/f21csBXTJ3vU2kqtDt81KJI2pfJjel0u6iwx1jNY2mmzqXHJ6g6Dr1Gj9Z+F91XdPsGz5Ucn/LuuXTWu+e+sHL47a3oT/7qVO99D57vfZZX2Iy9LwUuGgKYhfGrL/HffNWs96bblv13zNacqwV5bzylYz/WCxzmZipMTQdMz1YQjqLd67C6s0+73UFrjSNFHtDLjmB77UmJMVbwa1DTF0x9UdqGZe4nG7OYmsiNbtsqsC0BsGMC8bp0YrIyNrGUg4aky6lQZ5eXk1xm3qfiHl+MPatvbo7E9YQA1des3r97pO9jtATHUO0qpjb76PIXfoXdZB7PkAJcKXAdATqi0WggdYeV2RrHT44zdvUErYM++9sdGvs9On2FIwWOI8ZvWvb/9o1L/t9eO6zef/+Z3n95YFV/9Gyj9/TwM3z14Sg39FWBZaidOBG84TXL/ruvnffeNl2TlwL0lSFSJtH0cSBvcipgfrHGzFyAcA2tdofd/QaHrS5aa6QQOFLkJmhumcbaaGj50fWy9cK23PzOcvGl9rC3kdaxzHZLSNJ2DPCPT0fsXz7BbT91Ah0liu4oP8DY/0yhnrG225OKGGPVTXdJtxtwfMnGIwc89bG1IyL/Aq0lwlMsPtNlYruPcaz7bV+bAJncWynBleA6goonqPkwFgjqFUHdh3rgMDtZZWlukvGxKr22Zm21xdZ6i247AhG7bp4UeA60Q3342GYTfOKtAAAgAElEQVT40S+e7r/vK+d7f82r3Cp41VkAExPMXDMV3HbPinffFXPevbMV52pDMpa+H/v0GAgqLvVxj4XFOrNzAY4H7V6X89tbHBy2kwg+OFLiSFnq7nqhEN5gvYJZfoFg4FGR/wEz37IcsNbLGj1tSIgkDZho6cxOEVYlLOG2LYLCrMGm1H4yxCfNEpTiA9l2YTDasPvt5vDbJmLfHwl+V1M/iDAZ2eZ1RKHV/ByFAEeC54DnCHxX4DuCwBN4LvS6bc6vdahVK0xPjnP5lXUuvXyC7Y0O62stDg9iq6CXWAW3rwQ/c8dK8DPnG7UHHjgffuAr58KPnznoPTvkzL/n8aoggOlpJm8c999wx7HKu66ac39kIpDLkAh9KZA3MxWwuFRjdq6CdKHT67G6u81eo0UYRghMLPRpME8UPNoMw8tiFM38ohuQ1bRSeFl12/wvuAn5BttVyPfP8wIpWUAuqJKEACJzBHfFbedWfUIIJaIpTOaZtp8G/NL4QHpe1vk7nuTgTJv9Iwb8YBIC8DUTqyFOqNHOcN/fPuXU/HekiK0ACZ4b/3w3JgPXiedGdKUgCnts7fTY33cZq9eYmR9n+fgcraZifbXF5nqbdiskigyOI1gcc+585/XOnfde5Te/tVP56Oee7X7oS+d6n+JVlEH4nnUBZmH8mhPBPXcc899xzbz39slAXpJqeqXjHnkIgec5TEwFLCzWmJ0LCCqSbj9kc7fBzn6TTi8J5jkCKUTBbE8JIP4niuuWaZqb65bJn9UZNO1zE16UTH1R2I9SW5SPl96MrH5RaASxgHQ0/MaZEK6f5pafPI7uWy6AyGMGA0gFPftjF+d+Qmb9Ww0Zk+8vPcnTf7HB2oO7Q81/rR00kmrU4/iTbWRkMv/o+Zj/vhub//VAMFaB8YpkLBBUg7jcdwSOjK0EIQSSOJ0rpaRSqTI5MU69ViUMDdubXVbPNzk86BFFBiljF8FPpiXfbqoHv3im/6HPnGr94Vab9SPu3PcMvqcIYHKS6Rsm/DfdcyL4WyemvdfNVOVJQezTKx379BjwKy6TUz4LS3Vmpn2CqkO712dr95DdRotOt0cUKaQUmXmfv2QX9u+BQcF+jnpcoM2cYIrbKL349vmR1aGwLKyC1PFwgKaGf3A6JLhthpt//DhRXx/h/5vhpJBIeNH/L8YI8vpJ6jANRDqC1laPR37/dDwaccgbp5WDCDRzp7vMrPVQrijeB+v6UpKVyc9zYgKo+TEBjFcFYxXBmB8TQODGwUFXphaDSLphx+0ZDBKB53nU6nXGxsaQ0qXVDNlYa7O53qbTCiG1NBI3o9kzO6f2ok994Wz3/Z871fskcc/C7zm84l2A+RpLV875d7z2eOUnrph2f2CmJk9oE0+g0Q11pukrFZexCZ/5xRpzcxWqNUm7G7LfbLF5/pC9wxZKqSRtJ3GcPF9fMN0xmd9bsH4Tm3voPkf43YPj40WhTpweE7nZn7abTqYBRZ87KRDEvnlKCpkyTs/ZFD/64QjwBNnQ2my/AQjLrLc0fCqImSdisnbye5W6Dfl8gyTnsPbgHlFXHdnxJ+wGuLJHZ9JBbQmrn4Owqw3uKhKNLkWiqWMt78o4YOtYRJGRh91iYk1IAUqFHDb2aTUPqVVr1MbqXHn1BCcvn2Bro8PGWovGQY9uX9GXAs8Rs9cvej9545L3k/ddW/val8/1P/TwmejPnm70nhp2Z1+peEUSwNIY87etVN5682Lwjsum3R+q+2IGYk3f7uskkCcIKi5TSxXmFyrMzFaoVBzCKGLnoMWTZxvsHbaIlEKQBPMcmZuUAORdaotvWNHnTgU625quD34aN2unGMQjk85ix560q21OGGnqLh9Dn8u4TTaiIIbJ1RTiAmSTcEQmdlq99ADDpCnV2MU/eRjTIqKMtAq9/ezryGcDMoAK9QXcDPCrXXTk0pz02D2mmT/bHUwBDkFqGaUaPdbuiYaXqbUw6EIIir/YykitNEOn06TbbeG5AdV6jeWVGivHazQbIevrbbbW2tmAJEcK5mrO7e+6rnr7j1ylf+fpveDPvvBs732fOd37FPGgo1c0nvsuv0SYnGT61rnqm+9Y9t551ax774QvFyMdD6tNfXohBF7gMDVdYW4+HnRTrTpEStFodlnfPWR7v0m7Z/fMs16AZLlsbqemuMzKh5n78caiuQ+p3y2sF6tclh9LFNrEPn52jCFtQ7ZD4WW2yKzgElh1XAFbEfzG6Yj5Nyxw/duXiXpWZssUqcqy5ItV0kLL58/Mfbue9d2A2PyAXiPkGx8+Tb8ZDf26b/pxT60kTjVk5ekuY7shxsmfTXpNMllxRBL5dwVVT1D1Y99/vCIYqwrqfuL/u3F6T1qug+2qZaMy0/tuvQ/CxB2mHMfHr9So1mr4vkevp9ne7LK22qKx3yOKdB4rSLotrx+qh79yvv/hL622/uDcLucHLvoVgpeVAOZqLL9mpfJ9tx3z/9byuPOaqYqzPCyQV6l6TM0EzC9U40E3NReDYf+ww+p2g639Jt1eiEo66UiZCs7wvDxQEmRLMEXxpSsKaznolwt2WdDL2mYY4RS3FX3dgpBbx8u2W+vZFVjnmtZzBWwr+IenI2ZfN88N7zhG1H0Od9VYVGD/K/v5dl2DRQ45CRgMjifZfuKQb/7xOaQsnWR2LYZ+u4bwIgLZ58QTbfyejvsCULx3efQ/JoBKQgBjCQGMVxIC8NMYADgidhPSdlJCyJ6XGDxGgfyNQUoH1wsIqnWCagWjodmM2FxvZxkEiInAleA7gmZo9p/dDT/12dPd93/xdP+TxKMRXzF4yQlgYoKZO2er33/ncf89l007b5kI5Hym6VWSpxcCP3AzoZ+ZDajVXDCGRrvHxk6Tjb1DDltdQpX06pKyICBHCmsqfEcIdlkghwnvhTR1vm348bO2S+3GpaZgJaTXUrAErP0o7GvB2u4K2E0IYOaeOW5453FUb5AAsnhDoXDQIrAFvJABKJDAoKUgfclTH19n9Su7w8f/J9cSdgMIIiZafVae7iAtt6ZgraUEkOT7ax7UKyKzAuqBoOoLAhc8R+LIOGsg02dTEHAxYBkcRe4kCVfH9fArdfxKFdd1Yqtgq8v6aouDPSvInFgFUsL6oXrkq6v9D37ubOsPV/c4O/QmvMR4SQjg2AzHb5ur3XvVvPNDV0y5r5uuOSvKDNH0NZeZ2VjgJyZ9xsc8wNBs99nYa7J90GK30abXj2KTK4vgDxdWsAQx21ZK89l1hmj2wnqychRZlPeNt5sBgR9oo9DeoFlvH6e4niMlAns7xBPmbSj4J2ci5l83zw3vPFZ0AWwU7HmGCH9eaC5AAsMyAsKBflPx9d87Rf8gRBwxBZhRDip0kPU+c2sh8+e6uRWQXFgqrGnAz/egmqYBA5ERQC1JA8b9AUSSBiRzC/NJWS6k/cvvS7KepjgdF8cL8IMaXuCjjaCx32Nnu8fmWotWahUkGQTfEbT6ZvuJ7f4nv3q+918+d6r/58TzFLwseNEIYKHO4muOV37gpkX/nZdPe2+r+2IyFfoo0fRCxIG8mdkKs/MVZmYDgkDG01j3QnYaHTZ2D9ncb9HrhwgBrpSFhzIggAwX7AsLa7pvqd0B8ii+JIXjHXWs0r5Dj0N+Pvb2Ylmu/dL18nL+MHMS8QScDeE3z4Ycf8si1789cQEEJXVfFnjLl7c2FkggqXC0O1AkBOkJth5r8OSfnEcc4QrEn/x2UcrFq3Q5/lSXsYY9JDgXyrQTkO+SdANOUoGVpCtwEMcHCqlAmQQL02dlvUsyWUhjQTJ5AEMJIrvx6bcXJNLzcf0aXqWClA79nmJnu8va+UGrIEj7FbT1Y18+2/3Q559q/7/nO5wbckdeVLygBHByMrj0uiXeeutC5fuvmHV/sOaJuSj5jp1OtL0UglrdZ3ImYHomYHY+oFpxMAZarYhuaJidrbOxc8i3zmywuXOAweC7Tuw/crTGTS+oTACDAlh88Hk7zyNmkKwU16027fZsjVGqy8CxiudRKBuok18rpW1pGyk8ARsR/ObZiLl7Frjpx48TDXEBgGLgr/inRAR5nwB7DMAF3YGUBHzBk3+6xvpDe/FHSodACEO3OY5T6VKlzyVPdnFDHX+cNL1+iwC8RLNWfUE9IO4HEEjGKjEp5FZAHAuISWCQTI4y/+2yo6w3EMR5VoF0fRyvgutXcH0PrQ2N/ZDNjTY7W11azTgM4CRWie8I2n1z8Ohm+N++sdb9yF+f6v8F8cQlLzq+awI4PsOxm2eDt92+Unn3ySn3DTVfTKZCryxNX615zMxWWFiqMjXt43mSXt9weNDn4CBkZ7uDVnDtzfNMTwcI4pz07kGL06vbrG7u0euHSEfgSud5adWjhfUol+ECUf5S3eeKBTx/rT8YwMvOpbB//rSGEoH1JO12POBcCP/0XMQlb1vm2h9eKQYBC7G+IYG/bMHqCFTKAJhh64VsgPU9QAd6hxHf+L3T9BrhBb4ADGEnQNZDpvb7HHu2i5HFZxrn+JPOOZIkGJh0BAoEYxVJPYCaL7OuwXEsILEApGUJpM/iggRwYcWT3XhjiL/D6CDdCm5Qw/V9pBT0+5qdrS7rq232d7vFWIET913YaunH7j/X/f0vnFZ/8GKPQfgbEcCJieCKO0/IH7t2xn/bZTPu3TVfzKQfr4x75MXdLOtjHnMLVWZmK9TGPASGRiNib6cbT+7Yiuh2Q1SocT3J7XevMLdQQ6nkTRIS15EIIWm0OqzvHHBufZu9gyYCgevK4dqa4YzNEeWFNgbqHmUFPPcLUW6Hgf3z+oVtpX0olRfWh9SxycQVsJ5YAMffusx1b1+5cBZgSAYgWyxo92LPwDIJ2K5BRgImjh04vmTnW02++UfnEvfpiFPRMg65uZpLnu4w1rAGCYk8oOdIcB0I0i7BlWIsoG51CXadOCCX9R0oaH1rufR+lC3E9LyF9QzKlxHfEo1BIhwPx6vi+RWkE8/P2Gxpdrf7bKy3aR32gVhuXAcCR9AKzf5Tu+GnHjoX/qdHn+n8xVo8sekLiudNAJfN+VfftiDffs188ANXTDtvqXqyGllCb7TBcSW1upfMmhN3zOn1NPt7XQ72+zQbfcK+whhNGnlFxC/ITXcscezEOGFojTXPtKNAOhJXOoRKsbq5x6nzm+zuN4iUwnOdzH8b8LuT/Z+XFXBk3UFNfbRQD7oWDKtfIKuiFimSQP6YMtPerpOeM5DE8gtE4Ak4E8I/Pxdx6Q+ucO0PLxN1VSK3gkEpTxZt9V8W8rSuTQiUSCBzCcxAOcYgA8m3P7bO2gNHZwUQBtX3MYFmdrvLytluQgC5cKYdf5zEDQg8qPkJAVTjMQF5RiB2BRwn3fdCBFAW+CHuwJDnWr6rBjDaoFUYT1MW1BlfuISxuSUO1s4QeCYeg7DVZfVci72dQatACthuqSe+erb34c+fUf/59EHv1PAb9p3jgj0BJyaY+dFLa796zbz/fcfH5RszodeGVtKf3HElExMBY+M+fuDieYKwrzh3+pDDRODT8fQi6SyRhFcAUMpw1XWzrBwbIww1gyov/qe1IdQKIeHksXlOLM+xvX/I+fUdzq9v0+v3k95+peG36XKykG+Ll4bWHbZupaPSbTDYlTd+0fMXIi1PX4jiKL9cSFLpHpjYw7odhVmCsa4nS9eJgRM2gE88C2YW/bdiFVkjycGtpuNWsqF96XWI/GOfkExMagoXKiAbEWhIrtNY90HEIxNPvG6W3acOCZsRYkgHIYzA8SO0AHnE93ozTtHx9GdKx79QQRgZIg+UFujE+jDJNWVK5igM6x0qSvWtNgYI34DWCqUVUnqMzR+nPrfMxOIJqpMzuNUqm5shj33lIeaXxpmeDbh1qUqrGbG+2mJrs0uzkQ5IEkxU5LU/fG3tt996hf4Hj28FH3lwNfzIk892Pv7dWgXOkLJUoVX+3l2Tf/yWy6u/OubLKzR4oQKVPMGg6lEfrzAxVcVxJN1OyO52h831Fns7HTrt+Au2nguBJwlcQWiKtzUMNScuneKa62fj/H9yeJFRrLBM5Hw5fZDj9Sori7MsL8xQr1bodHt0uj0wybj6ghlX1L625ixrdlvjFtk+l8ahdQvbBrV64aWz/1nnM1BWqJsfa+CJDSzGL7mDYUcL/vpQM3vNBPNXT8RTgpX3L/Futn6EoNj1svPKC46qmC0bbfDHXIyG/WdawwlAQNT1EJ5mdiek0lYg82Ha6X3OtHk6JiCZHchzBJ4b9wZ0nThlKO2OYsm5X9ACSOuVLMMsTlN67kYrtFIYYwjGppk+cTUrN97F4tW3MrF0Aq9SjXlMKaYWZ3j8wWd45okNNjd67G73kFIwv1TlxMlxpmcqGAO9bkS/r4k0CCH8Y5PuzXce83/ytkuDdy/W3el2R5zb7am9wRv43CgTQEb8d64Eb7nvuuo/bfYN2mZeIcBxcBxJ2As53O/SOuzR68YC77uCwJNUPEGkUTttfe7p3ejRz53u/UmoTHtl0r1UG4SKNHOLdW64dZ54Aknyl2mI0Iv0qSQ3nWQfbQxB4LMwN82x5Xkmx8dQStPp9lBKJaabyNoum9EXyh5cqK4tIJk+tU4d61jFtgcFOa83KDwDgmot2EQwhFuAWDB2FXz20LBwwxSzl49hlMnOtUAmSYHt7uTHEeT3oXh9DLum8vmn+1irQgqirmHr8YM4LQikcx8YIzCRg5Hgo5hbD3E1ViaAgg8vk/ReOjtQNjGIG08KEpv+ySChNKUojiCCAWIolRWenQCt0ToCA8HYJONLJ1m87k4Wr7uD6WOX41XrGK0xWmX9J4wx+BWfueVZnn30aVQY0WlHbG92WDvfZneni+s5LCzVmFusU615GG3o9RT9yBBpqPpi7uo57/vuucT/hWvm/VuUoXG+oVb5DuYrONIFWJ6Q16Y3qTj+24CK6EVxSi9wkxsKdEOjd9r63Jl99cgTO+HXvrXde3T9UJ/rRuxcNee96e1XV35FayNUpBmfqnDT7Qs4jogzBcmrYc00PRxWeWp1xu5BhOe6XHpiiUuOL3HQaPLsmVU2tnbodHqJTyXzl7BkitvtxZ6tKFh9WRRbFF2DmLjyabrzfYxlahbN9/IEnpl5LNIpt0XednLNIjuWffKl+1Qg6rxIxqcYfxEou7l5ZZsE8mOK2LUQ1nUX7HqKdn6hWbs8Xi70MkxP3YFeo4/RBqPjrxb3ez7xx0MUwtMIT7Nwqk/QVRgnF8B8AFDeK9BNxvxnvf4KJDfshTry6wtH3uPMt0/kACEIamPU51aYXD7J2NwKTpBksVSEio7u+Rv1Q5auWOG6u27goU8/SFAN4ra1prHX5WC3i5CCSs1jeqbC0vFxFrVhf7dHY79Lvx+lLsLkTYveT9285P3Ue26oP/Khrzd+/ZG16HMDD3oIbAIo3KH1Fl+ONNjfdLVnXzFG0Ap16/Su+ubZg+iJ1Ub01FO74TfWD9Xpdkgz2aUGmMtnvNf9r3dP/K7nimo/0lRrHjfeOo/vS5QiM+lsDVE4IesNFfbfkvYyBqIobnBqcpw7brmOTrfPudUNzp7foHF4iNEa13MK7Q33z/MYAZnc5EI9OLWXFQ/Itg2O2IsrJxrY+hZfIVaQNRD/t33pNLgmsIQzPU9ht5GeV0wAUhB/EzDT3IUzz3ayCSsmATIf3yYBe+Yfe5SgwWT10nPMyiGeHtyYZHZiwdY3exgtUZEDjsGp95FC40aGWkNRbyomd0NwxIDQp4IvE6H3krEB9mxAjrRGCKbPa0gcZsCtKiELZCajS71qlfGlk4wvnmBi4RhetR63qRQ6DMmsogtqM9D9kFvffCvnnzrLztoOrufG1+jG8xSGytDr9Fk900PIuOPc+FSFqbkava6i34vodkJ6UfzAF8bkTX/ntZN//M8/vXP32QZP26/VMAyzAAQgv3q28+Cfzch/cd811d+ITW1o93XzzL567GwjfPzJregLz+yqJ9ea0TniYY8OUEl+Y8l6VA+cuV97Tf2fjVXEVDeMX6RrbppjYsonCs0FbpAYWlzm6SNvrI6HDQe+xzVXXsrllx5nd6/B08+eYXNrB6UVjiOR6Rd7UiHCFg2LFLJtlmZPX37rRcoFhYIiHND+w0yKzBJIzsYKMNoXbwt5Wh+Kypj0mEDPxLEb6ab2s31Dc3PfmKzlwWvIrtMULYGEflICys4zXU/bkPH3AA2gQ017N2T1wX12njrErQtcE1JpKao78efAKl2N39cxcTmiqO2FyITekemknrHp77tpOpBkbsDYMih0PBz2XlkvVnEOBoPWCozBdT3G5paZOXEl43NLBPWJ+L5pnWj6IcHFolk4AK00tYkab3rXm/nof/goRmscR3DQ1ZvnGurbV8+5d4z5sqJN8pXpXsTWWhMh4i9Ne76LdD1UGCHQ9CLDeCDmblmu/ujZRufflZ7EAI5yAQTg/pevt/7JI+vdv7xmLnj9+qE+/eyBenztIDxHMrwcqAIBsaaX1s8AfdfF+7U76//42IR7Ip2Q86rrZlhYrBJlEf9U5Vj3TZQLjjrFEkkMIRNjDGEUIYRkcWGW+flZ9g4anD+/ztr6Bq1WO5ki2iGdu684KUZxXv5MONO/R1gN5fqpRi0LsT2PX3Hij7SB+JqyXW2LOyOd8sc+hEUy8deBNWQ9KQduI2TvaNkayC2B1OLITz4jH4s40jaFIP4cmgQVGrr7fZqbPQ7Xu+yfbtHc6hK1FeOOob4eMb4fEbQVjiH+WrAUCDcJZMok1ScoCL4r45ReJvxO7O8HbpwOjIcDx30EbJegfIvz+xA/BCMMRmkwGi+oUJ+YY2rpBOPzy1QnZnBcN47wR6EVBymwKvmcj7ZtN/x9jnohi5ctc+PrbuRrf/UgTtVn3BfjD631/vo/P9L6rVuW/DfcOOfevTzuXDM/5h53ku9ShkrTbffymI31+kgpgiFPeoAEBsSHoiBL8kkNfGJBrxITh2PVEaWfATrvvW3st374qupPt/qaKNJccvkk1904m3T0Sek2z/ULkpuWBfsS3VwOACZv2MB2O+AXv4FZ23l9geu6CCnpdnusrq1z7twau7u7COL+BmmUONs1bZP8OYv0uFkdsnMp7mtdKoNRY0ptYu9f2DfdlrgF1lMb9lql98kX8K0+/OsNzc3vOcnlb57POwKZQdnNOGdgsE+8nnfusdYTZhJJhF0bQ7+p6Oz12Hmqye6pFs2NLmE7QvQ1fmSodQ1jjYhqM8KNDMIh+3qxJA/qOdIW/Nj9TIfbppH9dDZgzyUhgXgUoO8muf/UJUj2lzK3KArPxGgwCum4jE3NMrNyCZOLx6mMT+I4DsYYtNbWc8nfN6z/ovTg8iDx0QpNOpJ+L+RP/v1H2NvcpRK4tEPd/vufaLyz1VOnAafqUr9mzrv+piX/9dfOu29cHvOuCVxkOprWkFhHEP7zzx7c9dR2+BC5QoYhBFC2AMqEIIiF3iMW+LS+IZ8vvWw5A7R/4vra3/uhKys/3U6Ef3ahxtXXTscj/2z5t/6WXu2swgB3Fs5SDC3OeWiwk4lSCrTG9z2uvPIyLrv0ElbXNnjmmdM0Gg2iMMRx8rEHg5o+ufB0Rhz7I52Z15+7FLYFONScty8w074lCwOyfL+t7e1Ym30PCp12koL4s+CiUDk/rMnLDMnXfc3Q9fh64p0dJ4m99FSm3Q/Ot2msdens9zFdhacMla5mpqmoHkb4ocFJ5gcUjkD4IuvWW9by+S8RYAcr0h//j7sCJ0Tg5v3+vbSOzMf/W7c+Ibf482FSCCpj40wtrDCzfIKJ2UUcz0Mn0fsoE3yRxTXyT7BlN4k8TpQ/1CzUaL88JWilqdQr3PP21/HnH/o4oTJMBE7tXdcFv/L7D7d/B3A7Ef2H18MvPrweftqHymWz/nXXLzqvuWnR/4HlMecG1xG1Vqg3P/LN7j9JhN/lOb5r8FwWgEMu+I71szV/uZ3DH7iy8is/f9vYv+xHhjDSTExWuPW1C/i+g9YUGDLVypnWTm5yZgFkGjjflqf2Us2OVV8Ulo+2Eqz2hcR1XbQ2NJstnn76WdbX1+l2u3FqyXWSiyxq8LTdTKQKykAUyopaX1C4VOw6FiVaAmofk2F1h9QTQCDgq13499uGu37+co6/ZgbVGzZFl8m1fb5a0PxCilhTC4HqafqdiP3TLTafPGT3dItuI0S1IgKlqYWx0FcPI9yOxuknAiQFwhF5IE8O8emlyEx8N5nrz0vM/VT4U82fWgE5EZAN/c3mBkzbFMTuhdGg496o1bFxpuYXmV5YYXJuAa9SA+JOPPn7ab+T6YMRhWeQW275S1C0BGyrbTgJALgVn8/84ad57EuPElR9PCn4l5/b/x+/uRl9htj6joiFOiTuBNQG/Pmat1gNTP2wE53Z63KeWGlr65c81dLxhpyDsX6po65L222zP7ssoH35rHPbu2+o/0aU9MSq1jxuun2OwHdi09+++ILtazdjFVldhzKyGDB6xQVXEfk+ZUFKV6JIIaRgYnKc2++4lU6ny7mz5zh79hyNg4MkCOQWVLnI1DdJdJtMQ4LJysqf3kpjAmmKVVAMOuX+vm1ZkPnduUUwcIuKwUGKAh1/EzAlxLw8tVmwrietIxwZ913X0D0IaW102X6myc4zTZq7fXqNED9STBvDcqSYbStoKUwn/qJypON7Y1yRCXwm+Inwp5N5Zia+JDPxnUzgrf+W7592+snTgLnAZ1kCAaCJtEZqqI+NU5+YYmZphZnl4wSVanxPlUZFYXLtsZDn33WIb2oeAE6fbxo8MfkHULMbK7BfiizleCFLIIy48wdew+rT5znYOcCrePzcreP/+29/du/RZpdd8k+bC+KAuweEW+3wHG16ySOvEc9SnMpt9gqVcaGuwLbfoKz3qSz86f/uSs274n+5e+zDVVdMdEON50luvHWeWt1DpXO9H4kSl5Rbv1D1UkcvjN0AACAASURBVMHApqPjLwP1lNIIYahUAq659mouv/IKNjc2OXP6DJvr66h+hOO6sXtQEO5i34HMZBdk6b7y5aWBw6Ff/oEk/VZW+xTtf3s9q5Z/aNQQWwFgUKGONeAR54JIvh/oxC9/2FY017vsnW2x9WSDvXMd2gd9/FAxjuEyNHNGMxspqj1NGGo6oaCtBT036ZiTzECejv3I0nYiF3bHSbU1QwU9Xx4m6CmR5EIvZZ72M1qhMASVCuOTUyyduJSZxWX8SgUhBFprVJK2s7W8yV7XPFVbiMJmlcr/yR5kLvKWe4C44KuolaY+NcYb3/UmPv7Bj9MLNZdMOZf/wi1j//D/ur/568QCnypnW7t7yRsSkncESuV0qPDDhS0AGNT8tlVgX0c0Cd4v31X9P2dqzkoc8YcrrplmeiYgivI+/s9HDgchshPIiVMUeMJ+gNbmIe0ccR6lAm0MJoqQUnL8xHGOnTjO1tYWZ549xcb6Bt1uB0dKXMcZmgosCKvVUcgWtjw7YNVNziV910RiSUDx3SNtJ23TOv+4T0K8HAJLjmDKEaw9fsClb5xHyOTT3Yh4fIYb35eor+nuh+yfbbF7qsXW000ONzqYnqJiDAtCs2wUS1oxpRVeItyhhp4UcbpOg2tAE/vB2sQnJ6XJg3oFYS9p/sS8zwTdyQOBrpPn/p1U0NNlkY/yQys0Bs/3qNUnWVg5xtKJk1RqdaTjYJRCRVHBvBf2TS8IcH6v83hP3mGr/IWoLBtUmDl5CAlcwAqIen2OX3uSG193Iw/91dfoSJ+7L6nc++Ba/+1fOtP/A6BOrpR1spxqfFP6XRDlM7D1bqorZGm9rJs1oP7uPeMfvut48JPt0KAiw+VXT3H5VZNJH39bKEV+4QU/6jki/On2I+IDg/6/daysPSs2gMimfimUiWHr8XEdz0UiaTZbrJ47x7kzZ9nf20UIcJM0YhaPyK6X7BqzG2fdwbysFP23FrLLzohjOMmV90tRFfCRluAjDXj9ey/nsjfOo8K4n0SvEbJ/ps3uqRbbzzbZPd9GtSM8pZkTmuNoFrViQmvqWuNgUAi0iM1hQ3EATj8yhEoQqrgsfc+FyLW1m5n9ItPmqa8fC7pIvvhL8vGWPCOQave0c0/6AxPn0F3JxMQk80tLLK4cpzY2huv5GKOzzIWdHRoca5K8O/b7kj2/9IZb70WqULL3L3/AefbI2i/7V4ohlCAdSdiP+O//4U/ZOrdFpeqx11ar//iTez/YCtkhdwXSX0oAkbX8nDGAowggXS7/hu3Te++t9X/1w1dX/36rb4hCzbFLxrn+5niATy7+JaEs3dTsJlmCV6w/jACsFOLzIID8AecCHhfJ/KGXicBuL1mXjoPruvTDkLXzq5x55lm2tzbRKsJx3GTEY5EE8mddIgfrbg4QRWl/CvWF9be8rQhXQNvAv9kV7FQ9bv2x42ht2Hiywc6ZFq2tLo4xzLqCa6uCyx1Nd7fLmFL4mPgNEmJoONmYOI6hTJybzn467jxmyCfukDI+F6ek2QfM+bT3nqXdRSrsMhf8eKixRkpBrVZjYXGRxZVjTM1M4/lBPGhMGzI/fMgzzYW8LPjWu3bEu5nVG/Zul7YV1kvP+agH5wYea0+v8rH3/3eMNtQDyaee7nzg/V9r/V1iPz/V+MOIwP7Z7nwBFyIAu+yo8ugNJys/9St3jP1+ZIwThoaZuQq33DEfp4cyy99m2Xy9wJpDBbdMAEMEO2u3KNj2sYoZAVGoXzhWmVyOsATSOkJKXNdDG8Pu1hbnz55l9dxZ2s0mjuPEnYuSyy2SQE54Q8ut9YFl+79FBoUHVCINiOMAT0WC9zVgt2twMEw6cCIQ3FQRLDmw4Bj+f/LeI8aSJE0T+8z1U/FevFCZkVpVluzq7qruaTFiZ3awBAjwQIA8UFx44oIACR5IXnjihQuCAMELeeCFCwKzwC52SO7McrBD7rTY6RHd1V1dVVkiRaXOyszQ6kkXZjyYm9lv5v4iIqu7KwMYC7x4/tzNTfz2f9//m7m5Wd8HhinHp89GKJwhiNpQegFcyIHCgksyKLjxqMHckX5mPdvX7jwz4wMK5Exdg25eiHIPuGazgVOnT2NpZRndbhfNVhui9ATUuIMNfICVZG+TgOe0Lch9JG7ZGPaTASefynnaIFUSMG05gwSSCD/6Zz/EJ39zA0kzRugz8T//ZP/f++Xz9F9CdgUoyF3QU+sPHIMAjjpPr/NXFoJv/Ve/M/cXgcc6aSbQbIX45reXESe+dv0rLKgrSwEFAjQHiCp+zXW7YWeB3BDG7MeEh3QbKnGc/CA11Q9C+J6H0XCIh/fu4cmDB9jf3QUgyolH1S5ABeyUEGgMRs/V6ErNfdrzInEjBmwUwHrBEDOBRR/oedKXLAAN+HHKcfv56OgOJElcrvZTEoEw3QO11Ll6j8SA3O630/n6XtnG9GUeOQFHvvm5tLiIlVPLWFxcRKvdBpgczNP97Vmk7ZI9jQcST91DdM4mjLprpiGo0TJRmGkdhwS0FGtIwPN9jAYj/On/9ifY29xFIwmxdpDf/u9+svt7oxF2YboCbt9fwLb+QA0B1K0HcFhQJRSrCc79l7/b+9N25J3KCrlowRtvL6DbjcrHfTMEY4HYVNoGLuAKue76zBmADuBdt64W5EemTc8BrHwvVdVJzRILwxArp1dx7vJldPt9AAzDwQHyTM4VNwubgtyvxWJdo1KnNl5Y56uNYxJQD/jkcSGAFmNY8YF5Tw4b50J+CphBxawQ2B5mx3x6Uu3SeKVVtx7hkUk8lqvvmVl/SrxqxjIv5+EHvo+lxQVcuXIJr716HRcvXUBvfh5+4IMXcsEZUxYiT0bOUXWjhkKLyyYCo58U0KimVQE91cGyFZhTBhKXNjaNo4IQAkmnie5CF/c+voeCCyy2/IWAef6N5+n/A3ssoI4EdFJ1rfciBKDBvwB0/rPf6f7xmW7w9UkmR7Kvv9HHqdWmHPGvCKsqpFrWrSMAx+IacJL0jgKwy+zk+qwBQJpnbdfAIRx6H+cFPM/D/OIizl28hJXVM4jiBMODA0wm49JSebZULWXUInKi2K5+hShmNBp9x4AzoABDATJLEIw8dmCGAI6RdiltCf7Su3an8Zo39kw3oGrlS9kJDs45fM9DrzuHq5cv4PXXr+Hy5YtYXJhHqGbnFcri66YoGciQsltGuPKEamO7Gax7CJAN+VNdhBMHdj5al8yxStmy+LptqyTA8wLzZxYx2R/hi7tfAL6Pa/3w3btb079eH4o7ZVbU4h/tvJXhuARAVAjsH36383+8dSr6t8eZXPn36qs9XLjYRp7rYeqyTqbCxyIACiYVp5Yg7PQOc/vrAQzIlSWqXsELxdF51JQFsq/KhUCr1cbpc+dw5sJFdOcXUBQFBvv7KAr5KEqXj0ibSM45UBFmmGdWPTxUGzRDmFg5F9geHr3bta4pARFjMCvuMjLxpwS5iqNBz6R7XxTy7cyFXhevXD6P165fwStXL2JleQFRFJUeFnlOqu8nHghVNwpMDUhynxPPNJtpT4NPShK2d1AlAecaYQYX4Po+Kz5AMjZBAAunFvDo5kNMhhOEgedf6EffeP/u5J9MzBLidLDPbtQZ4UUJAP/R263//u9dTv7hKBPIc47TZ9q4er0n5/g7hT+MAKpWVN1r97Uq7jsFu6MI9N7qOMFsC36csYF6L4GBPvqbRQ66exBHWFxewdmLl7GwtIwgjDAcHGA6mZj6l7JwB9+Yc46ZszI/57lyRYXoCWfuAWNkCgKTXYCd4fEWldFtQPLRIiMANGKU8hKcl/PsBebn2rhy8SzeuH4Zr167iKXFPpIkAsD08lqqbNY3QVLFWqt4dURN79XpGSKpgJq2L62n/nZ1xIlv6TxJ12YCJ327BQWXXYF2r4O7H90FB7Dc9le8yAs+ep7+v7Bf+jl2OA4BlJKF+L3LyX/w77/e+p8mhWBFIbCw2MDrb/dRTopzGK6GGSu/XTIgAqNxyHnbsgPVEVwKYNSCcuZAkRuHpEdJZSZJoJq2W1deFGBg6Pb7WL1wEasXLiGMIkwnE4xHI8gVkz1LQV00l7DX55l7hdXc5NxL8F8JWSGwMzouAaAWGEqmnj4GwAWKcnLAXLuFK+dX8cqls3jz+iWcOb2ERhIDMEvLQ6ddJTbdNXTLQvUOtiiY1VY2IA0JUL2EfazKY7U1OV/RfZKHSwK6/MwtZJUYysDzAgurizjY2cfawzUIz8eV+fC3bm+kP9wc8Qeoe/PtiHAUAeime3sl/v3/9Fvtf8oZoiwXSBoBvvbNBYShpzf0PIwA7IYhoLPiHUYANeeYk1YF5HB+1wNYHdsNWw/y+vyp0jjldfJQ8UTZ140bCU6fO4/zV6+hO9/HaDDAaDBAURTlsumyTSng3Qaq4woB5wIAOhX1MFORc4Gd0XG3tifKrj5E+YWQoBdcoNVKcOnsMt64dh5vvHIB51aX0J1rASCWnrgitqvukq0BKFEfu0yUJMh1izQqQDSkpqFI8nAJXXseOjuqJ6QuJsIxSMBJzyovsHxuBQ8+e4DJcIIo8LxzveCNH96f/BPIiZ81WjI7HEYAWpcu9KPX/ovvtv8kCth8lguEoYfXv9ZHtxtaL/jQStYTQJ0AXBfa3KMGymzwkrSOATbXyldJhRLCceKwmjLZ1+rIxb7HHAsBCF7A83z0l5dx/so1LJ1ahQAwHo0wHY8BphbzsPwC10DIxlINYU/A1NdMS9VRgJRjzgV2j+kBGJCYTVAFBIrSxW82YpxenMcbV8/i7esXcensMubaTTDGUPBCzhVR3RhqBKw6EkC4WCkvGBmDABUmXZD4oLpURxwkj7p0yDmKc6u8DlFY96BKAhYOrOukslBdgQYarQbu3bgLDg+nOv6Zduw1P3yW/jns4hwZZhGA1pkuMP9f/27nX803/UtpLgv2xtcXsLTcKAf95Dkjw3oCsIVBGbEG1CrOLLDRcy5I6b01QLTJZgbIVWuR++38XiB/lwCdulOFV08P5vp9nL98FWcuXkZ7rovJeIzhwQE4L8pNNR2EU7HXNKRgx3yiV96Qc7wAAci2FUK+SFUUHEkcYXl+Dq9dWsU7r1/EtQsr6Hfb8DwPRcHBBXlJjRFl1/VgpD4M6t16ZuWICgDNYKoDeKV/NF3mpMjseCZdF/jV665+23qvTzhtb8qrk9fsZQrOyLEKPC+wdHYJw/0Rnj14CuH5eHUx/O7Dvfy9ZwfFbbxAV+BQAljp4uJ//tvdf3a2G747zWS/7Mr1Hs6cbZUv+BjpUWFYDeRWvHKdunX1VlRZ5loQVYiCNMZMkNfEwey4dSRh8qsjEFI2nY/JkxKMUUpTDzk4xhE3Glg+cxbnr1xDb2ERYMBgfx9ZWi4DpV/to6+tqNY7JuBrQl4I7B2DAATk22s554jDAKeXurh6bhnvvHoer146jeX+HHxPrvrMhTAv1CgwkrQsEgCRh5YbiGxpfNL+Vt1Vm5hEbUMDhxhYfTya3yyA1+otZsQnoK/DjRaDixVSuVJeS2eW8ejWI4wHY/i+h9VO8OaH9yZ/NAZSK/Ih4bCNQcR//Fbnf/z22fjfHWVyd99zlzq4cq0LTsGvKl1bESoU89tiPgIICkodjwDKAq26R8d3rT7IcQ246XXXypfld61+FeTqHQLPKW+VOCpldusE+zzAACHAixye76G/vIILV67h1NnzEFxgeHCA6XSi5xQY+Spr6dh8dQmmy+Y+AVDjhzkvCWCG21Bwaek95qE/18L188t497ULuH7xFE4vzCEM5ExQXk7JJWpB5KQuMGIXCGAoiTFSDPdYA5zZ+VhAJmJwgE+ytSjJJFtzjvyjaRsc0LSYE98mB8tgqPhOpY0HYjJTXYHuQhd3P/wchQCW2/6pIPYaHzxP/5Vb3Flh1sYgAND+D7/W+keBj4W8kHP833x7QSql0308tD9TQwgVK2oBwwZcFThHA9h4BJ4FxHq3HTPud347gD56ALAmbVpm2OlZBKivGZnycuJLqzOH81eu4dyVa0iaLUzHI4yGQ/CikLPpQNYesJpeMkBZUutBsfmWjJAXAnvj3LqfC4G8kPf32g1cWV3EN145izevnMaZpS7C0JfP86lyUOKnIHcJwb1OQGMsJtUhavWrQKkCWbWFLZa68hAVJiRA7rUMQE3aRJ8t3bUSpHW14+mauPghMtVtkheYX+ljd3MX64/XAd/HpX747s3N9C+2RvwRjtEVqCMAVt7o/8GV5D9pR94yF/LFnjTlSBoB4kS+5CIELSws6dkNT1ucAsMhAA2GYxCASxwuOA+7zwKwnY9FKGrgjc3O35AK7PytetYQRaXO5FgrBZFTGV9uosERJwlWzp7DxeuvYWH5FIo8w8H+HvIsA6MkQxrWepJArLt+aaeMWXBJAJyXG78KgWYU4fJqH9+4dgZvXTmN8ys9NBshIGQcd5Ubu1undMFWZAMiAkCtJoQESFXsY1krWlOr22DEX0rQgIw56ZqyVfXHbkMDXqr3btqg+bttbdWVVe4xumYLhcan5T51njwVCD3vQs9//Yf3pn8Ee2GQ2lBHAGotwMnpTvD6G8vRt9NCTvrZ3ppg7fkYk0mBKPYRxT6CkNmzSGZV3GJFKlRd49mgnwUo0ih1oFRpuwRRJYkZhDAjvVoCAFAlFwqCah1sUjEgp/ErIFIyKicXeZ6H3uISLly7jpXVs3JbtOEQ08lEAlvveyDDUfNEBYA049gdZ0iiCGcW5/D21VV87copXDw9j3a5e03BeTmCb8pUVWg45VfxmH1s6Qgjt9G4Jo49aEh1x8rSkACRgE7DJKrTq7j7GtNs5jGVbYUEaHnofbNI3s7U0gdaH0oCaoJQ0khw/8Y9cOZhpeWfCz2kn6xnP4bE8swmn+UB+ADCBzvppxfnw2+tdvxzYblkc1Fw7O2kWHs2wvbWFEIAzVaAMPIBMP1CySzmc/u5NqjVPYdZUZJeBdQg8eqAb+6d6e7TuBUCYKR8dl6qMatdEtSkD/uYKnVFFo4iWDKUX5wXEJyj0+3h/NVXcP7qNTRabUxGQwwPDsplzugarnYQEHqgLgh89ObauHxmCV+7vIIrZ/rothN4HkMhhFlUwxTPJFvTxhbAqaLPOtb3OXpESYTEJTFJXqR8jAEwayFW8oSdt0UoVlmYdWxdr5C4W2e3PVETB3Y8mrfV3jZ5AYAoCiydW8be1h7WH60Bvo9XFsPv3djI/2xnxJ/ikK7AYR5ANC0w+dmD6Z/f3sk+mhaC9xr+ci/xGp4vt1sej3Jsro2xsTFBmgpEkYekEcD3mO4e1BOADTAXBHVW3wY9zHEFwOQanG83ffea25h1cSzQV0mC1rF2UHIGAVBSsZXOIQD1mypGGXj57D1KEqycPY+Lr1zH3Hy/3HhyiDRNrfLwcsZdGARotxpYWejh7MoiVvpd9NoxfN/TcejAAlXmw5WWEjhRfJOSOV9Dbrb1p6+XE32x5GN0zZAvSDwtXpIuLbM+bdpH60LNPS6pWHFZNV2XBNz/Wp9oXmphWLvNK7L0PMyf6uPBJw+QTjPEoRf0G/6Fv340/eewFwe1AiWAsraaAAIASQF4zwf8yS+fZT/928fTn+9NxLSToN9v+HNxIAudTgu5NfizEQ72MviBh2YrRBB41maTujEsEKhrNSCmClQBNE2rCrZ6q03zOex+cv1QkqjxBGalT5WKOce1BOLKjCpPPQGoIISQg4Keh4VTp3HpletYvXgZYRhhsLeHyWgE5nloNRs4vdTHuVMLWFnootNswPM8+RquEM56dy7gnXOz2ti6f5YldKiA0bRg0rRkRbSZgtskY/RExzOgdkRcrYMusvXOpCm7VS5a1jJ9wiZHtb1bZ1O+evnW6YDgHK35DvzAx/1P7kF4Ps73/KsFx+TmZvZvYLoCltLMIgBKAjHkXn/tSS6KO1vZ3R/fm37w+U7+PPLQWGj5vXbseZ7HkBfAwf4Ua89G2NmewPM8xInsHjDG9DTUqqK4lpsezwArEb7lHRxGHBSg3uFEouLVdjscoFsApmWm9yglcAmGaFOlL3oYAVBNPySoKbbNdhurFy/h/JVraLZaWO4kWOm1MdeWoBeue0/VwgGbpbQVYqgjiBqg0XZXVygAXBnSrGvPUwNBS2+Xn9ErNQA0eTjkbgGf6lxdmlqFyP2qyg6IiQyr2KCCq5ICrTsAgAusXDqN7efb2H6+Bc/30Y29xb+4N/nHkEs+VBSmjgAYqpuCqE8MIBGAvz4oNn76JL31syfp58NM8JW2P99NvCjwPXAAo2GOjWdDrD0bIk0LJM0QceKXyqbqRgRrCdQFk0MKrqV1wUlIoNbKg95PBevEob9Jgxx/cNBVgFkE4Ci0o0VUUXVcSzmODoJz8KKQ3YMLl5CPJ5jubzpj6DNCbZ7MOa/qaspaJQgiB512nVFQSZJjLU8HzLo9QQBKAWhka8Bt4MOcNE2dhJO/Wy8bTfVdDqf81jEFtiOXipyoDEnO5XU/8OHHcoPQ9Scb2F3fxdazTfVKtvejJ+P/PcswRE1wW1+BP4BcMCaG3HygVX46zqdVXo/aEVt6ZzW+/vuXk69fmg+WfAZMC/nsmHOBKPKxsNTEuUs99BcbYEwt41QDIgoQCijUnDsCwCqdmUTAAD1AptKqIwDVCDUEQAFseyCz32WgBFBv8Wc1OkxZjgNeJwRhgMf3nmJjbROt9CnA8+OlQ0FbKZuRvyk/LLlYcR15zgRBnQGgcld5zWyf6j2HtiOIrlB9qWsvV08q9bGv07K6Mjia/Mnv8tjzPfhhAMEFdjf38Pj2Y9z76C7WHq0BEPADH42Q4ZP19Af/6Mf7/xYkrunS4QBmPwWo+9AgYK8+KtIC44e7+ZO/fDC5eXsre1YIxhZbXm8u8Xx4DEUB7O9NsfZ0gO3NMQou0GrHsnsAZiwRM8pwKAFUGpAIsu6aXoGHXLOe81cb2iIAAsqqB+CUfUbD1yrJixAAAb01WHTMEIQBNp5v4c7Ht3Hh6gWMUwY23UV1t5D6YOdJZV5XPlo3dc2um6GUOi/ABQDsY/0CEb1uymcDkORFjhktF0h8WFUBK1dKsqtKgezkX3udWflQknDbmFmFMul6PkMQBfA8D4O9IT772U384i9+gV/+8H3c/fBzDPeHCEIPcQn+QcoP/uiD0X+zNizuwawXYPXzXC1SkqfufwTpCShvoAGzS7D6pp+4vDc+1fJXf/9K8vVvn4leXWr7zYIDaSFQ5HKK6Fwvweq5LlZW22h3Yjm3nGxgaSmRBhEsoNkAxgwCOCROhcVnMPwxLIjduKrMsNNwFYCQlFvvOoBRxXqR4Ac+BvsDfPDTj4Eiwzd+6w082yqQPv0YQTE8NglYoDsuSbkgcEmgAggnDiXkGvnTODZ5g9xDy1g1EJW2Bpx4ANQ6DQ65HHWvVT4lh4pBqJELpKUPQh/M8zDYH+HZ/ee4//E9PHvwHMP9IRgDgsBHGPgIfbkg6+Pd/MHNzexHf/Vw8s/v7RQ/KRtkCvm6sLVS8CwCcAcCQ0gicMlAEUKD/E7I7xBA0InY4jur8fXfvZR87Uo/WGZMbiBRcPmOQdwIsHSqg9Nn59BfasL3WbmJKHMEeYh3oBv4kDX+ye+ZcSrpOfe7CgY3bTj5uJ6Fc13XheRFweIQgKVExwye72E6nuKj9z7Bwd4AywsJXnnrFaztMWw9X0drdA8QtWNENYFYZV0mer6unNSSs0pcq03qjjWwcYQOHHG/BVDz/oTxEl09M8Cn+dWTkKMPFfICrHdGnLrodAEwBXrm4WB3iOcP1rD2aA1PPn+Cva19QAgEoY/A9xAFDAUHnh8UGx+tTT+8uZG99/Fa9uNpgYcAxpCgH8MQAN0zsJYA1LdLAj4koBUZ0DECSgjup1HG933Guq8t+xf/wdXGu2+txBdCX64+kxVyNyHPZ+h0E7z6zfPo9yMwtZVwxQJU2d00ulkhqM6VVw10WBwLvC7IXYWqKIOtXBTQ9ZaPKrKtHGXOFjnoRjomATAmF+X4+BefYXN9C77v4dxKA2evXcEwj3H/4TaS6XNE4+cQx/UCLECrf7Ke+pm1+qZltcjNBXVVXjZRUJlDt7fMZbZO1BHCoV22mvaqJwH7fkokVD9q66DTMbLzPLnzlO95GI+nWH+8gSd3n+LBJw8w2BtACGXpPYS+nBWxMyrGN9bzz9/7YvrBrY30xiTHFwB2IXcMPgCwD2CIQwjA3RuQvhtCtxNSff4Ccn5xBkkAaZmwIgNKCNQraABICiGyj9fy3Y/XDu5c7o/PffNU9MpvnYtePT0XdKaeQMGBvc0hnu94YP0lBHyEpjdGyAoCAqfEjB5SoZaVceLLNhGwdzevT5NAcHagF8sMmXtZAZ9G1bxRlzpBF6O/Z5a4vmhMupCffXAbm+ubctciD4hCOQDbakUIAyBly/CzAfx8cEwSoDvdqsycV5IF5OamYKi+elSmQV9MFCoeyK675fnyWbzeexOmbVTeJg2Sr9qcVSYKvbmiFI55OxJkvz99TWj90WUjbWXVSO0QDaODQgjddNZrEuUPtTu073vwAx/pNMfa/ed4cucLPLn7FDtrO+VWZz7iOERYbpe2NSzGn2xmj37xRXb78630wd5EPIcBOWAG+9Q24u7uQFaYtTmoqlsBW+YuCQQwBDCBBP64/B6h3htoAMjubeeDe9v5vT+7M/7Z988nX/t3Xmt8uxWyWJQVLYSHVDQwyRPE3hSJlyLxc5iJGURRa1FxGHAdiB5lTS1CsIO1VMULoFMt6nvshTpqynNU8H0f9+88xLPHzxD48hXduBEgCOQMv0YUIIkDDIYZ0sYpJIN7xy+Dux12+UYR0zulgoDOfNONNTWRlPfqLVQFJQEGSjJKAHoDVAYnDThlgA1khpp7yx8lQVDDYd0DQ0K6ygCRg8pfJmDyYZoo1B4BQRhACI697QPc//QRM5lxGgAAIABJREFUHt9+gu21HeRZDt/3EIY+oiCAz4DtEU8f7aVrP3uS3Xn/6fTOQSq2IfGWld8TSBIYQuJuAmmclcUXzkeHWduDG0nbRED3H/MgicCHTQaqe6DGCxT46SCiGkDMR5nI/7+74x+8uRJc/MZqfC7PUK4NJ6TAAIx5gjGPERUZEj9DI8gReNR8OBhm9gE7Bj61m1ZJo/xBrDibFc1OsZKETqrOk6lNwSnC0bfoEIQBnj9Zw/3bD+B5rGx5gWbsa0vLPIZGI8LBwQRF2EaWLJVdgWMuFi1K0DrAtOpeegLMIgMYs2htqW1fVySgt2AXehN2mRcz1lenYQG/dL9JHJmdbfGpc2BUypBKWQnb6hPdA8oyKg/EKqOsO2OQKyJxAZ6neHzrIW598ABbazuYDifysV7go9WMEHrAJBd4/+n04c3N/NF7j9M7W+NiAxLYHMbznkAa3FH5qSMBtVnosT0Aq4l1y9oMonb9U0SQwYwVpDBjBYqdXDJolIVslp+YMf3qIuI4QOB7mKR52S2TxUhFgGkWYJBzNPwczTBHHIgjkMGc78PjHeHwQ5tt6ikzAaZOUC+YgvYwU6+LeHjex/UWgiDAzuYubn10pyyrVF7fZ+i05LNjUbZkuxVhwwMgOLJEdQWGLzAe4HQHygPquhtEGvcYxMLrDT5qPYSyTQhR2OBl2lBII17SWxlHgVVvh05Qb4hFdRWUpQbJ2yESVS5dHAEIr+wiGBlIFWHwPB9cCKTTDHs7+8hH+2hEBR599gSP76whTiJESYgkkBuy3NvJN2+tZ49+/nR6++52/ggS4BwSYwr4CvyUBOhHXctgdwUqJHAUAZhWrv/NYTrTdd0DSggRTPdAeQGqoAljKACg4AJLCy1cubqIzc0DrK0PkOWF2ToKAOcMBzzCIAuR+DnaUYEk5PBLnRUuQLX5VCDHkZ7/YUCTSkfz0K+q0GwsMqEeBu0rSrzUmXf3BE17dul838NwMMJnH95CnmfwfGnNBReIEx9RwMqttOR8/04nQRKHmEwzgPmYNs+gcXAXhuOPEQgwCKrM/SUQoSy26mMrObJqEtotV0DU/WZ5Xv8X6mUZAZAstVmHIhjtFpCyKNEybcnNrSVZYTaR6O4GHVvwZL8eYJhMMuzv72J8MADPJkiCAmHAwESAIJQf32eYZCL7ycPJnb96OP303nb+pBA4gLHc02N8FI4oQdAuwMwdg45LADS8aPdAEYCaU0A9A1XQBGC5ShQAwtDH0kIb7VaEnd0xDg4mGE9Kj0BxtRAYZz7GmY/Q52hFHO1EIJRvJpsXkVSYAR5We1ADylqfvvylLB+YpfvVwKrEw6wvx2nRGg1tWmakzZhcf+/mR7cwGozgB765VQg0Ek8OZpeb/ggh4HsMURRgPMnAGEfhN5HGi4gnL9AVQClrBURFdJbVNc4xJQHLY6qQAAxLl6ZZlATDmPIyOCCM92UPvqnBO327IR1AM4ApjrL3JP+6rgZU2rJGHpObeDLGkOUFNtZ2sb8/wnQ0QjMSmGv58JsMgByHoe9chD7DJ+vp2j9+f/gvYIxnnZWn4J6SeCkM2NVHpVOQz6/kAdSFOq+grnvgo0oGtNA5gFSY1UugFrsoigJxHGB1pYN8sYWd3TE2NoeYprmEKDPknXKG6djHwVSgGQo0YqAZy62pqu+42N2C2ZiqOWs7E04s8lhQnzrMitrXtGdwWKkOAT9jDLdu3MbO5i4Bv6l8I/Kl5dVmUKbXakbY3RuVfdgCWbyEIH/xrgAZcq8/tjhMWWdSLToQCNLftzrftnhUV0OUjM8YceOtQUFTTmO0mclXkY8qIIlXCriUmyEVjzEwz0Oec2xt7eHgYILBwRCRV6DV8DDfDxAEDLyQ3paFGNIuTOr+ABITyoVXj+7opw7sFPQF+aYzdV/oKcCXCaLmWHUPKBG4BVYFKyD0WtHUG4PgHGrrgYV+E91OjL39CbZ2xhhPUgCl8gupMjkH9iYM+2OBJAQ6TYFOwuD72hAeHhyAVQYHiRKasd+KXh7qLRwva2K2So/EJgg7+GGAB7cf4MmDpwjCwHZphUAceWiobdvVAECpk+1WTB5HCgjmYZKcRnP4APb28kcFZZVV3jbwQE5X45m+QLVrUI5ZMPOUQDM/M/1xPZ6gU2OgqmkDWouAeAxwrD/hLiHT83zlaQEHBxPs7g6xszNElmVoxB76nQBzrURulV5OdAOUzKFlL3QhACG7vzuQIB/B9OWV1Z9l5SnYZ4Hedf0tBPy6CMBNfFb3wH0hgZXnwLRjSpLSz1dLZeUCvs+w2G+i100wGE6xvjnEaJRBCFGOExgXcJIJjPeA3SFHp8HQbniII6YVUBWVlQCrdgXKHwTRVYPOzA2O8a8LldV6D49sxZ11VxAEeP74Oe7fflBaftLGQkBwgXYzQOgzFJwCWnpaSRKg3YwwGE7hMem8FYHqCjx7oa6AdvPLvC3LabEkBbIZ8afAVkjUA4qlS65cfTDoPjglAfVDWX86RqAe2Zn7bU/A1MIMbDIGeD5QFALDwRSD4RTbO0MMR1N4APrdEP2VJgJfbRMvyC5HwhgdYYyQQ/Y5bAKgo/jUU3aBz1EPejqHBzXHOvy6CWBWZm73QF1Xbx4yMGJqBG0I6jpJYRacgwGY68RoNUMMRyl2dsbYP5iCFwKeee8HDHLa8eaewM5BgWbiodsO0G74YOXouEl/NjDZrOuukauafzITzL7GqpFmXKM/bAIJggAba5v49IOb2gXWlSJ03Ig9I0v67r8AgsBDp5PgYDAhY3gcadRHkO3C4xO80LZzdI6ALi59MsDMeWs8gIBXg56SQEkvFnEoEjB1FsRTcJ86Qh9TD8tYeO1vMeg9L8fjDIPhFDt7Y4xGGXjBEcceTvVjzLUChAErtzWXRsvRXlhGWJBj0zw5gD1I0CsCUJa/rj9/mKU/EvQ0/KYIgIZZBWJl/uoRolVYYfVVTSNRQYpymepOK0KnFWE4SrG+McRwnKLIBZinbDvAPNkP2x8WOBgVaCU+up0A7aacGGOS1mP5dqDugdtNqD1/mJUn1xizz8xIg9n/AMgR/8l4gjuffA5RcHh++cIX8bYFgMD3kERy8o/6U9cBKetmMyq3H4OWuWA+pslpNEYPDqnLjECAry29QwJ1jwOh3X9RIQHVPnpswPIWStnoyTzq0V1ZBvUUAYpgFIeYPr0cU5LppxnHaJxhd09a/DznYAxoJj4WugmaDU9velJwW+aWm6+8WAcFFk0IUUBO3Z2iOnV3lrX/0qCn4asgABWIPdLegGY0ZhVcMimEJVVyWQ3uCO1SAUCrEeLiuS4mkxybO2Ps7U+Q5xyeZ2CjvIPBOMdwnCMMGHqdCN25CFEYSK+gVF7LKFuG17nIrC9zfEwOODpUI3uehzwv8Mn7n8kRf993PCf5X3Agjj3tnhp1MeQqOEMSB/B9maYiQCYK5EEbabSEeLr+AgOCZbrK0qoCKU/AsrXOt7bq6qchAT0aT2bWmTiwnzoQbTPdAwV4VQ6pD2rl5CwTGIynOBikGI4z5DmHKDjC0MNCL8JcK0ASe9IzKPv3QumqdvUJuRqGJd+CyF4XsYBx+9UYwBQ2+AWO2a9/kfBVEoAKtPDqePZIk3KpbInaMiyvFeUAUJz4OHu6jX4vxs7uBLslEeiXgIR8dAMAWcaxvjXG1u4U7WaI/nyCZiO0Vi4CMNvqWxVzH/Ed4kkc+uzfvaAen7GSe+T1mx/ewvbGNoLQgN+lAED2/xkjW25XPCuBMPDQTELs7RfWm8GyK7CAID+Az8cQL7gDteFNwqCWd2Bmy1UmBSjrbvUamS6/sLwF6uIrQlAW37b+gJQh84A8F5ikGQbjHAfDHFlmdimOQoZmJ0J/LpJdqLJ/rxZJrQW/dR6O/hLR0yC7vxPnk6L6DP/XAnoaXgYBqDCzAqIUIu2nGmV1ktBRqPClUjfiAM1TbSz2E+zsTbGzO0GqZxdCKyJjDEUhsLs/xd7BFEnio99rYL7X1AubCuBXs+hu//9Y8c198ksW2PM93Pn4czx/soYg8GskaWThMaCZeAb8QlgyVIrrMYZOJ8Hu/sSkAQCCy6cC0Qqak0dHFLomlOMBsvhCC971DlwSsP7rsQ0y5Va5+pQ3UCUEa0ovK98z4QLTTGAwKjAYF0gV6MsQhR7mOyHm2iHCgEEIjoJaewfkriGqgn/GbyIlmAE/OujnTuH9tYCehpdJAIcEKkT9jzRSFfjkBASNzwXCwMfKQhP9bozt3Qm2d8ZIs0JPKgIgnx4wee9onGE0SrG1PUKvK4kgTgJpSaiv4oJa/a/2DkjV6sYQavoQAjU3y5dIHt99jEd3H0vwk+iuDIQAosgrlRhGAWHGAVTgQqDTjhEGXrmPAEgbcORBC2nYR5xuvmBXAMai1x6bissBvlI+zpMB+XhPyYk8bqTeAuigoNAiZUyAC4YsFRhOgYMRxzTjEFzIEYWSYKKQodcJzcBeub9hxaq7mKwb8XdahmglbI9Ga3Pd83vX6v/awwklgDLoARRX4PLbda3IWYtlefnoy/cYlhcamO9G2D9Isb07wXhsPAJ1r1wpTE7lfDrOsLE5QHcuQX+hjXYrkd2DSoOaYA8iOgRhXaoBfk08dRgEPjaebeLOp3f1Cz5O5a1jwQWSyNNWT8tFjwUILU8hBMLQQxB4KIqiJkmOabSAoBjA5xO8aFfAPBK0+/EQIAN9sK5XSAClV0DeKdDYRyn30tp75WBhlgOjKcP+mCPL1b6Waq6AvLPdCtHrhGg3fNm/FwKFen6v4rm6aA1Sl7HqjJWljlTulVA3sPcbBT9wUgmACMkCv6ANQiITq295Bw5xlA4BfI9hoZegNxdha3uMrd2J7PsBemxAKiaDz+S+95vbA2xtD9FuxVhe6WJuzukeOMXX+D3U1a8187WxgsDH3u4BPv3lpxDllmCagCghqhvK0EzU4z+XLqqPqzzPQxIHmExSPaNO/ZOA8TAJl9GcPjmyzLX1sKw/rHEA/dwfKk4ZwSIBoPrCkIpq5n9wzjDKgYMJwyST7VdyOhjKWXkAWo0A/V6ETiOAAOnfU+xZDUzR7JBo5boTj36DsJYsupPAbx74Kpw8AiiVQggKYKLkNY1BFVVfFW5joHxzS6p7waVCLS400J2LMJnk2N6dYP8gBRjKCTHyXlZaFAA4GEwwGEwQxyHm+20sLXeRJFGpC8JU4bDBQIcdpEq4RGAGATzPQzrNcOvDW8hS+YKP8XRKudjVhxACcczQbvhk8K8sYw2pKtx1OjF2dkeul1rmIJD5LUyDHpJs+8W7AqayMMCXadv9f3dQEGbsjz4WJFLinGGQexhlHtKcIStk1Tzw0qpLL8j3gYV2hLl2iCSSKzeZiTuyjkbtiJdn9d8pmI/o5yvjRNrJ7X69zHDyCADGQlnW/DCrT7R/5jiBvEgulWlwgcBn6LQjtBoh9tpT2TWY5NrFpAXzyufEk2mKL77YxPr6Lnq9NpaXu2jPNeGXC2+4TVwlBeea1nJnDKGcUHPro1vY3d6T03wPtfpGDs0o0M+qbfKk8Y281ThAFPnIMvU40I7IwDENFxAWI/hiimPtK2AF2X8Hc9x5KofKkwElJVESlRwP4IJhlPsYZwEmBUNemDkCDGX3gMM85WgE6HcjNGMPXABccH3deJyqDATIWtxuHMfu1A76CUuE8hqzTr3McCIJQDWAzZ7qPCGIWuDTa1VCqCUNDvDySWRvLkK3E2I4yrCxPcZwlElLokavy5sZA3zPQ5EXWF/fxebGLrrdNvqLc5jvdxA34vK9e6rA6qhujIA5sST4Pc/D7Y/vYO3phnzcR8Ff0SL7RBQqANuPqYxi2sQoygHTOAqQTgswT9WWxgUEfEzCRTTTp24BjhkM3Ok582TAJQEAgpfdEoZJEWBSBEgLH2lRPq5lQhJDWUU1Ky+OfPR7kZwKHcjBxJyb+gjiwutjF/Ck/ja1U91ypldZnqmjxycF/TipBKD0tAJyc1yx5vpe2mg0PgW/INHtc0UJkFYzRLMR4GCQYmdvisEwAy89AmaMEcCYXodgd+cAO9v7aDRiLK3MY2Gph2Y7kS+PFE6rsxnfJPiBj0f3nuDxvcdyok9ZTsvqUKGRengMSGLPLP5hEccMgpTVQRwF2BcTKHfcVVwGjsxvYxp0keQ7eOEBQVUP9+WesvhmbFSN0nvIhI+pCDEpQqTcl6tGl9dpt1EBv9UIMNcOMNcK5Rt5XDiuPm37GsPg9uOtayY/qyGILC0ysHSRfl5+OJkEAMAS2rHAqyw0UdhaNnYan6RJwaAA22mH6LSkR7CzN8XBMENecOkRqMdQZbpeudHIdJri0f1nePpkA935Nk6tLqI7Pwc/8MvdkGAs24wgl/R6js8/+RyeJ6f4iore1CmfrEcUeohDj7yGKpw7XMUupSeATjvC5jYlVldZBYAC06BfdgVSvHhXAIQEoJHPwPULPCkPMeUhUhEi44GpgRC6X6/OqXGOVuKj343QaYeyf1/IZ/h239229sbiOPrj6A2VnWuMaq/VEcXJwT6Ak0oA1oCMw76Y4QmA2wOEdaxexjfRasjEaThRyONWI0Cr4WM8KbC5O8HBIEVeSEWsqD4DvPJx2ub6NrbWd9DptrCyuoSllT6iKJQ78Ko55E4CfhBgb2cft27cgRBCP3acCX4CVCEAwQVaDR+eB/CiTm5VOQoisyQJ4ftychSzZGjLkcPHOFhEK/uyXYGyEEqGQqBAgBQxxkWCTAS6iYw3YFttUb4Y1mmG6PdiNBO/HNjjRr5QuqRkZOuFEEoYSu9AwO/IaqarX6NrridQ8U5ffjiZBADFAS7IHcvtKL5t0eqIwwW5c28N06uvQsgJIXHs4exKE+NuhINhir39DNO0sF4kUekwJl/YEQLY3x1gb/cAXzx6jsXlPpZW+mjPtctZiGZ2kR/4GA1G+OT9T5GlWXl/nQWu1kMdM8bQaqjpwY6Cqtsdi6irWu7j2G7F2N0dye3TLPCbsQcmOFKvicDrIuG7eNGugCKXAgEyESMVMVJE4PAgBAfZMK6sR9mOXA7g+T5Dr5eg0wrQTAIwyDdFBTftZoyBKT+0PKje2IaBAlfMkFUF/FYaFS6AFfWEhBNJAHWsWWe5XeGrr+P0/11Xzz5XQzhkoEwIIIk8NOIE83MRtnan2N1PkWXcGSMw6ag39UaDMR7sP8IXD55iYbmPU2eXMb/QK68zpNMUH//iUwwPhvAD31EYCmKbBPQvLvv+jYhVlp+i9bRo1Kkjg1wsdGdn5IC/ki0gOCbBPMJ0BB8ZjuoK6LX/4WGKGFM0kfEYhbV1HTdjAzpvoWUfBh66nQS9ToQokks+ca6e7zvA1vrgEgFIHFJ/XS9h5a2Ng0sYFf0kOuR8m/y+RHfpNxROJAHoLgAFJr0GorSHgLz2XN29Kg+LNOrypKcEwOXbZMv9BPOdEPvDDLv7KSaTXPZnrUeI8mbPK1eK5RxrX6xj/dkGegs9rJxZRn+hhzuf3cP+zh58vaqPKSGplCm1sKMIIdBM1PNtO38Hy5buG0kJcC7HAcLQswYvK4NmopxYAx+jYAHtfA11QYGew0OGBClLkCIpLb2Kw00phF1HRWSNJMD8nOzfBz7Tb+TZICYgp+DXFRdaTlSWwtI1CmpafyI8AVDw25nXdDNsyiWN8HLDySQAKPnWWy+4DaHZ2JzXi0POBAxREHrvjPTqGhmAfI4MjiBgWOxG6HVC7OxNsb2XIs2kUuvZhbQsjMErV+/Z3tzG9sY2oihEluXwg8AqsyUVy5o4ApOINIt/ENlRa2VAQT6k/gIcUeijkYQ4OJjKtwMpgVaOOFKvhak3p7sCZicCDxliTFkTKUtQQNWNy9l9VJYO+DmXj/ZazQDdToS5lhybkAN7ZtEby4OxykmJwQzwUZBbj/goaB2PU5OKjmf0gRKOVR56XUcXOM7sz68qnFgCcNnVFbL5OeMc7Gsu8Csgp+dovjNIiDnXBBfIhXT/F3oxuq0Qg3GO3YMUw1EOQJRzCRwACTmfQADIshx0bT448dRx1YEx5fb98vk/d2TnjgEQBbaSL48YY2g2QuwfTGx11fKi7SLHAybeHEI+hIccGYuRIUHGEmQINSkw9TaVw2AanELKkjFgrl0O7DVk/14uFMsdMAnruM7jMwRIZOnU4zB9EzXXXb2pJeaaMQL1UwAnggdOKAGoRrKVlApQ7UFT29BEo6sThGqeAljgP4w0iKISRbOtg3yzzvNRvlnm42CYY3s3xTgtwLlZsswGKGrAPwP4NAopNxdAO/blhBdeIx+H6ERF2Q3pCQEkcaBn7ZqkquBXlreAj4G/BEAgRwS1Uq/s03M3IZ2eHM2XljPwPHS6coGWVkPOeuSFANf50nrZI/hGXUgc4cY3sqXlr6RZAXcZz9FDIwgb5LXg10l9qYemv5FwAgmAEcVADQmU1xyh08avnHMU32qwGkKY+fahdV9dGUkaEPoNvE4rQLvpYzItsLWb4mCUSyIoZ/7Sernp2IpDo9U9rRBoxPKtBe7eVAdaKguHMDmXk6Gi0EOacdBeTCWd8gcDR84inSYTRbXcDvi5kOAPQw9z7Qjz3QhJ5EMtvqEIwrrPScP674KZXqUide+d4WlS0rPTElY8Kjvb4yB56vuZpTIvM5xAAgDcRjcgsAUOOGAljWKBw3UBy7gV4DtsX83DIRIrHsnXuVcpUSP2cGY5wXCcY/cgw3BUyElFHmWBOqKjoqmc0Kc9xpBE5WNDh/xswApyicjUqXsQeIjjANOpGgcg8nPrTuRaT1rCisKFtMbNRoCFrnTzo9Ar19jjOn6lTVySFgSMuoh1ZEHLReJb8rARa3sCbn1hHVcfWdtysoiFlPdlhxNKAKgoZXXUvx6EttWnSmHuPWoWIC2EbfWrSmaXRTj50LKUSg+g1fDRapQewV6Gg2FWDnjBGrikt9MDYZ/UaTdjD3HI4C79ZZfNkQctr0OsHmNoNiLs7U2gds1xRGkps11dV8byd8Fluo3ER7cTYX4ulgN7Zf9ep201h7DauxbMjtW1ScHEt/SCAtFqQ9rurrSrxGCpgh3ZrciJCyeTAErrYCuS0V7rXB1BlK0wG/g2uo7sKtA8HUJwwVVJr4xnvspFKQQQhx5WFyNM5gLsDzLsD3KkeaHfAHSEUgt8mpWe/cfryuCW2xoqNVosBDkUmOvE2Nj09FLsFAiWp6P+CTIQp9OTbj4Y0OtEWJhPkCR+ObAnyoE9AlIHoLWj/KpN6sDmEoRwjknarj7VP142adrgrzcQFugJ75hrJ2UE4KQSAGAUyRKwzeZ14KvrH9qNDJOm1bjynEsarqU3h8JKX9/v5FsBGMlHxY1DhuV+hF4nwP4gx85+hiznYDC72Vrgt75kJRiAJGSgxaqNbxdjRl3lBc6BJPaRxAEGw6l5nkmBWKkrkVE5sBcGHlqdEN1OhE4rhIBZUbf2VVwqX8u1tvv3ph1rBgCJbCrHwhGIcK87ac2I74Lf1SVLR8l3dWbnywsnkgAEaVh1oqrT9Y1bB2ATTWm8BIoo1IQd8ybakeC1FIzEq9xLy2gUXD+9oGUWAhxA4DMs9syTg91Bjmkqy+w+IKDlEkKuaRCHavS/injbIxBEFjb4XcvIwBBHPg6GZr6+U/kal1gO4MWhj34vQbcjJxVBqP69khmBaq1bT+vpjPhbZTb1qj1PXfq6NCtEAwfQNW6/1Rh1ekLi1LbDyQgnkgB0QwIzAAwj1BlgM4oEInWlRBzMD5D0V5ENdpCPBxA8BzwPjJndRN1GPU43o/5e4lY7xEVSh+ByRcjAl9tNdds+9gY5tvczpJmMaYhAWGkksQefrv1vSmGTk1Ulo7hWeakomUCSBPaNrutfAqgQkiTiKCjXVYgQhz4KzsvFNan8CHgqbr1KlRBVBUQkjgJ5pYwE8HDTdIpDRWSRhH2+Wn64F4nOCve0EipOSjihBABHMeqV11gScg6wFKpyDgAgF5foXv06wBjSvS2Mt55iuv0MxWRY3VK4pkHrPZCagUnXYh5CWOpYTuGVfe75ToC5po/hpMDuQY7BuJAr3pAH9AxAt+WXb8uRcrjKqU+aMZaKdrsut5CLZga+fLuRTmVSt6u3BptJgJWlFpqNQC5ayjnywkz80aByrKuFQF0cG2RKXtS70TJ0AFvxJiwPgsiflsElFSstW072qaqsq+B3PETKCi85nEwCoFas0g2oUQD3HL0PNfcJ2bCiyOFFMeL+MuL+KfBsioOHn2Lw5BaYmq2jXWrjg7uEU/VSzLUjlWEWcaAsoyjX6mv6aDe80iPIkWZcl8ov3X9O05qRh7PCWY0c7fJxLlfV6bRC7OzmetMQAch9GBnQm4vR68ZoN0O9xh4vOKquPBGFY4WtMhN51gNe6Hjmbrvdq649qbWKw80uSHbd3bZwyIem4cRzuwouuVT0+iWHk0kAqGHuQ0HuMLU45JyrOEKUJreAFyVIeksYPL6p+5vM8+B5IYrpQALIIzvlzgLvLELQxXDKU4lbTUNd6rUDtBsepqnA3jDH3qBA6EOuSiTqyIkcK5lYCjujfJb8gCjyNfa4kIufdOdiLPblTkoQdNecOrde1VZYcqpjBw0qCyx1JEXK6ADSXjvA6c8DgOAImx0U6QQ8z2xZWVgVznnneh34jbTVFfvcEYvBfJXhxBKAbDRRkedsq++C3LoJuhlcT4I+3OIF/LgJ5gcQvIAoCvSuvINk+QImm19gtP4I071NgOcww3luGY/q/6FSfuuAAr+Shuxny91+GJpxiG7L7KtacTMrWTgFqoCnhjzL8jQbAYTgCMIA/V6CTjtCEstdibh+fq/SJKCwgGPyPE6/3yYjk4aRrwtwOPcCoijAeS6fqHge1ALnvMjRXD6P4fojFOnU3sOQyl3pjivbijzhHItKFDv+yWCAE0kAlVFsC/jmnMWtMyyCTtECneNPc/bOAAAgAElEQVTq6WgcftyAFybIBtton7mG1rnrgBBonbmK1pkrSHc3sPHhj8Hz1LnXUlen7DRvUu4aUqgFq1N3gyOBRswgBEPl0VItGdYkDTce7eNKMHEONJMQF8520WyEiEO51mBBFtekwLfc4ApwXXJxSMFqvlJ+xOU3RANzTOUNAV4U0r33PATNNpKF00j6qygmA2x99jMNdqbHeoQmBlvcVSIydbTJ1G532rT0hJF2pVFeUjiRBKAbnVoFdQGwlKnaDaCNUGkNojD1DcD8AMzzELZ66F39BuTyM+VGxowh6i4gSJqY7o9ld6BMhwsOUQ6SMc+3d7R28jOKa5fNOq/vqyMQUzu9+g2RR0XXnPSUe6xkXLHSpBwKiIwBvW4igV/UAZcCo0zXBT/1Dty2crtlFfAb+bgDc663ErZ7aPRPIVlYRdxdAIsSgHkQ0zH27n+CfDwAADBG9lWkrrzbDq76OfKmsrWP69t4huq9lHAyCQAwzFwjSNpAdmM54D/03ppWEAJgHsJ2F+0z16TiFLl93fPhxU2Ab0Ju6SIVduHVb0NwgeGze0j3NsHzHJ4fmIVDK2XViR5CZiZO9To576brXiPX3ZoL8s/BFdzRdFGY4wrgK/FNQlZ76QzJEwtKOoSQ7EFEQgxlXFGUezcEIcA5eJ6jeeoCFt78PpgfQpJ3AZR9fBbFaC6dxd6DjwHmgflmsVX1VMV19S1vxiWHiuWvAr6e4E+G+w+cVAKoAX/d/P1Z7DubNNzjurw5ele+Di9q2OBXgTEESRNCcAA+BOcIkiZapy6BxQ10zl3DdG8bw2f3sf/oU+jGrgFsHfArloSW2zY9FXmIumsWIKFBpk+6nkjFkhMypcc631lgpfFr0nTy08BXZaHEYqVR/mMMydIZNJfOwY8b2LzxE4h0Aj9KJPjdLlp5c3P5HPYefiqTZh5sAqPyKrcfo2RgybpO91Cre/r8ycG9DieGAIS1cwZ5NHOou6/iwFYel7HpvdTKzAhelMDeBtgO0VxfW3bBC0SdPlgYAdkUAEM8v4R44RR4PsH+o1vwggiuUtiWw62Te80ZGCRfs9KqAN++iSincGRGyiEOi+uMY9QB/jBCKT8KVIY0CJkJAcE5OC/AmKf77rzI0Dl7Hb3Xfku2k+AIW11kw/3y8a3TtmW3gYkMcW8JUXse071NMD8gZaIycEBeY3CYS4a1+mTOyb1OZ+vcywpfYkeHX3tQmqARl04ygMnXUdUusdRSWfPEZ/Yr6YARtTL1TWWX6JAYnCNs9cC8QPd9k/5p6AfkENJzKHL0rr5deguFVm5hlYvk5/aBCei01auQSE1aBKjC+u2SogGwUHnUEKZ5IYfCwgauIOWx7qslFFMWUy9VTHqvnK0ZtnvoXnoLcxdfB5f7eIExD43FVePeMw9Rpy+XCNePaSV5CF5AQG7/DcbAogbi3lI5SOibMjngd0FvVKJKmFoyNfcr5T6J4AdePgEoqWQ7Y/4o8OSy2J+9/wB/+Wc38PDzDeRZgTD05Tvz2nLbyuy+061VlJ6z+msUcC9e5CBuwAsjqaSeh6jTQ8Vj4AWC1jzmX3kHoih0WV2wq3LZFojWjYpJnSDW160HFQ8950TSZaGRHKKpLHpRA1YX1KaMKh9CQJrMUCULJ09e5Ej6p7H0zT9E5+rXEfeWASEBHTTaiOYW1KYHgBCI55fBPA/MCwC1+QpjYJ4vp3frx3wcrVMX5HmPLLnuipicdN16YUWvj2MleTKxD+DlEwAgxeP/6P74j8epyJKQgRcFnt5fx0//9cf44Z98gE9++RjDgyn80Efgq3XqiWUsvzXIqbWrAF/F/ZKl5Rxe3EDY6oIXOfyogbDZdZbgLUOeoXP+VTQXV1HkqQUMUwZhPuR31eqX96gz9FrddReUVrrQZVFAFORYAxTk2LLONlgtGbvl02BwPAXLUlbzhIAEreeR/rwHURIDCxMpc8GBIkPY6sILY0nMnqctfrX9CiTzK4jm+pIYLOssYJGesGqk5eQybBX8s8Z3ZJhVtJcRXjYBqKYO7+3w9/+Xnx38t4/2intx6KHdCBBGPoZ7Q3z807v40Z9+gPd+dBtPH+8CTHoKRohViygoyGcRwpcNno+g0YbIZZ/SS5qoHzOQefSvvwsviCAHDoWtPxYgS1fbdfcrFuUI4NdmUFc8A+aK5bf02Qa8OSZJVwjCkJj13oHjRejTdWVWaYlyBmb5EkTcWwJEOdWYyXXVgkZHgtoPakFH68yiBK1TF8k7H3UyOmTQj8apZFVhBh08jyEIPOQFMJmaZda8uuUfvqLwMgcBldTLh+xovv80/YuP19JbXz8d//3fOR///deWw9faie+lhUA2zfDw9jM8/nwN88tzOH9tGavn55E0AvBCoMiNO2iSB1E8ApBfqQsAAAxRuwchhHRN2SE8WuSIFlYxf/VtbH32HuArkRNQgB7WK5BwftPrtpWyIrjJgBKEwa65twJyUY1jW0Qjy9oRdZqvIPWg3hqVRR1BCwGUe4h7YSzdf4jSgpfB9xHPLchHr0cFXqBz5ip4nklSFuoVJ1ovKrga0nZPEPHQF6Y8D/A8udTZYFBgY22MjfURRsMMfuDBZ8DmSNwFkNHUv6rwsgiAolQRQA6glRYY/+zJ9Ec/ezK9cWnef+u3Lybf+dpKdP10x+8W3ENaCGyv7WHr+S4+77Vw5tIiTp/tobfYBCBQ5MTNLbMQMxrqy5eeI5rrw48SNOZXUG4gODsUOVorF7Fz5wMIXuDQF4tmldOx+krRhBPfTas2fW1xifsrhF0C6jWR5jKWmh7PIBHhnNdkYYNfdw0sT628t+znM98HBEfSOwW/0a59RBu15+13NWYFzhE058DTMQTnpjxUDg747WPXoJjrDJAeqscAwTAY5tjdHmNjfYL9nSmyLC83h2HwmJzW/cGz7K+gmfmrDS/bA+AwBJABmJafBoDp/Z3is/s7w4ftcLT67rn4rb93MfnG5X6whMBHVggM90f47P2H+PyTL7B0uocLV5ewtNpBEMiNLc2uNhRQRgm/tLgFhxcmiLuLCJpz9f1/9xa9Hj4AtcqPC07HatqKaK4rxati2wV59ZxTKlU48m2TUvWFGpK4qIlT16dXpdWegpuXgA248sMAeBL4sgvAkCyeQe0D9aJAPL8sAX3II9y6oK12xfuoAzqNYQTKWLk7NAMmE47trSnWn4+xtzNBOpX7Pfg+QxL5CErHJSuQ/d+fjf7pL59NfwAgBjCCkexXQgYvmwAEjPVPIcE/AhBCjk8wAP4gE2s/ujfZ/sv70xuvLweX/+By8vXXlqJzncQP0gLICo5nDzfx/PE25hfbOH91CUunO2i1YghRbg9NlN3ub36Zkgv4UYLW6mU5C+3YCifzZmTpc5omFUyFoI7p7puoTgUt5SUE6LrvFUC6ZXDATQnBIi9S/kpXwiFAfbugpbNwyBiDn7SQ9JZR63EJjqDRlmkcg5CtOqkuhlUYeui2hSmc78kt4KZTgYODFOtrE2xvjDAeSY/e8+Q+kqHPkBbA+rDY+uXT6S8/38purA3E7cf7+XswWCCbJ3w14aQQQAYJ+HH5rWZz8PJaCqBZCMFvrGW7N9ayz061/FPfPR+/+d1z0WtnukGnCD2kucDOxgG2Nw4QNyKcPjePc5cXML/QAPMYioxY4V9FzkLAC0K0T1+uB8rs26qWuWJVYKc5y+oIK4I+dC1TbTwdt0oItX164RzrOHQQDxah0G/LxbfSU7nTPEFAaZe9uXgGfqN1OMBfcHjdpiybtGzwG7kzT+7mlOcCO7uZ7Nc/H2IyzsE5h+8xRCFDWK6huDYsBh89y26/93Ry4+5mfjPleAZgF8AeJPMU5UcRwFdGAi97JiCHFEAOA3yPXKOewRhAE7J7kD4fFqP/67PRoz//fPzT75yNX3/nTPTK9aXwXLvhY5oL5NMMD249x+N7m1g61cXqhR6WTrWRNAIUGf/VxgDLIOcCvEhCwv6uA3eNVa/k4IC6fhzBTl+fEnYeFvgq4IcN1gpBkMzJaDotDqWYSplcb8wavLFJgHk+GotnzMSwX2uQflkt+MvgMYD5crPU/f0UO1sTbK5PsL87RVEUcoTfZwgjHx4DNgfF+OZW9vjjtfzB+0+nN0eZWIf0bseQeq1An0IauRx/hzwAigQ6BqCCOy4wgRTcCJIAkvLTGGUi+8H9ycYP7k/eu9IPLvzhlcY33lqJLs83vCjjHrJCYO3JNp4/3ka728CZi32snptDd6FRbsn9q9TiBdtKm0s5fFdr8VVEy9DXW/0XAr6bD3nE5pah2qcHASvxAsqUaT9e50PJonaMoQp2a4DRcgAEmB+Uk39erH9/ZCADj7osZWAMej/H0Yhjc2OA9Wcj7O9NkGcFvLJfH8eyX78/FfnNjfT53z6e3PxoLbu7NxFbkPqrjNgQwADAQfk9hNRtRQDUC/hKwsv2ABQBuIESQFp+FAkkzkcRQn53O//s7vbB3aWWf+p75+M3v3Mmvn66688ngY9pITAajHHrwye4fyvE6sUl/N6bIzROzQFpCmQ1L/78BoIQwvZSXfAfNRZA3G4ay77JTaOaj4GfMFk4YKX31j+nBwE/ydr1FMg91fizwP9VGkIB9ZgRTC6xBgZMxhx7uxOsPRthe2OMdJrr60nkI/SBYSbEF7v51ofP03t/+3h68+l+8RxST1X3VemtMmBD8hmX11P8HSYAwJCA0kvl/isCmAKIIEdK1cclAk0GG8Ni8i8+Gz35s9vjv3ltMbj0h1eTb7y+HJ1vxT5LC4E8K/Dg5hfY/h/+V1z51tu4/t1voXd+VVrmlM7Y+81Ut2KN1VnX6jvArx665+qsfvW8yc8ZhaegtBBN0iFPA2q7Bi74rbEDGVm4HgFJ3yaIrwYHAnJJNcYYskxgc2OMjbUxtjdGmIwzQAh4vuzXRwFDwYHnB/n+Tx+nt957mt56sp+vCYEhDIjV06wJTPfVJQL1W3kIf6e6AIDmW9cX1ATgwzwhcImAkoECvzrWXYSsENlHa9nuR2vZrYvzwdnfOZ+8+e658PpCw08K7mGwvYef/+m/xqc/+lucf+s6rn//W1i9fg1eI5EeQf7r9QrcBUtMlWEBhH65IBfuOf2zDvzH0SVqqYlf4ALeIa/q3ACShjsu4JACycAaRzDEVyenX3/wAh9BwJBPgYP9HOtrI6w/G2B4MAXnAr7HEAYMUdlV3B4Xk0+e5A9+9mRy++Z6/nBSiD1I/aRjVRT47u+Jc015t671p5j4jYaT4AEoh5h6AaoL4EEKx4cUVAD5iFB9FBkoAohhjxEoQpg+2MkPHuwM7v7JLbb0rbPJq985F712dT481YwDTLIct/7ml7j784/QP3MK177zTVx59220V5YBLoAs+/V5BbTGjmWkX6g5VwF/jVtvDo4orwLekSP+Kh9BwCrM/bR81iO+GvDr45r4JI7+/ZsIngdEIQCG/UfPcefmNtYe72A4zJGXk3R8j6ERevA8YG8ssl88nTx6/2l2+7ON9BHp17tzV1zQ074/BXsGY9Bo318RwK95kOPwcEJeSdCBOcfqqQCDJAH1CWDIICLfygtwuwiUFKLy3tbXVsJrv3cp+dqby9HFdsy8aS6QphmKvECr18Hld97Cq7/9bSxdugCEIZBmQHHErL+64PlI97fw+Mf/Z/lue+n4UCNX89jLPi1qLpsZgSbu0cARnKN75gKa84sQRWFALhxrTjYZtWfp1YG7ZnafO+hH4tQ/VoTOh+cpOmevof/G9+oXZnmRoEDPGNLdfTz59DY+f+9DPL19F5PBGMyTm6qEPkPoyX79w938+XtP0s8/eJbeWR8W65AgVtb+MNBTsFPAq09OPi7wqeX/O+EBuEFVWnUNlHAYZnsF1DOIIPtVs8YKKBGkH61l73+0ln1yvhuce+dsfP1758M3TrWiNhfAdDzFjR/8NW7+1c+x+splXH7nLVx+52uI5+dl1yAr8KJtZD9vJ9Wtsfqi5px9KCxBHcvqu0laVpxadmqBBSnMLPAbT0EX4xDwU8+hstKToPkevzqVwBgQBoDvI9s/wJMPPsHDjz7Fs9v3sPtsHQAQRCGSOEDoA2ku8GA333z/afr5R0/Tew/28i9gHtlR0B9m7WeBXnVlC+cjYINfS+JXqPkLhZPmAbjB9QjUR3kGfvkdoN4rOGzQUJFBXMYNmyFb+OZq+MofXGq+fanvr4Q+wzTjmE7lSyO9lQVcefdtXP/et9A7cxrwfekVHPVoyveR7m7h0b/5Y7k2APEATHgx4OujL9E1EZyju3oBzd4COC+Ob6kPeyR4aFfCBv9MT4HE4XmG9tlXsPDmC3gACvSeBzGZYv3BY9x//2M8+PAT7D5fBy84gjBEGPmIPIZcAFujfPjzJ9mdn34xvfVwJ39aCBzAnp1aB3Y1cq9cfBf0atyKAl8ZMBf0bgN+ZeAHTj4B0FDXPXDJICDf7jhB3aChIgH1HQHwGUPn8nxw9vvnkze/fTZ6Zb7hxVkBTNMceZah0Wlh+fI5XP/eu7j49TcRtNuHDxoqAvjxH8uXgex9tq0ftW58DcjFIdeOCpIAzksCUIuVUPBrV5+c095BDVlY7rvybQSqgHfi1BFEeV52AV7BwpvfP5oAgkACP02x+egL3PvFR3h44yZ2n60jG0/hRwGCIEAUyPduN0bF8Mbz7MFPv5jefrCdPx1lYhsGqLNAX2ft3b6869q7wHc/ukmOarPfVDhpXYDDQl33QHUN1HRK1TXwIRslgGygELJRZz1KbIAQghDI7m7nB3e3B3f/5W22/DsXGm9951z82tm5oIdEDho+unEbj27cwsLZU7j+/Xdx5Z2vo31qWZas9lEiaXe9KYQLfPtcnVv/Za1+XdDOtgaz9kOcR3Wq6O7zeqPH1fUMhb6tCv4ZXQMdB261q8H3JegFcLC2jsc3buLz9z7E2r2HyCZTeIGPMAzQmWvAY8AoFfz/b+/Mm9q4sih+eu9GCEmsYpXXwY5tnMRjT2aSTJLvOx9iqqamPJ7YntiJHQJ4Ay0ISSAkFqm3N3+0Wnq0uiWBsQ3m/qoodYEssfjed+95591+lm/mHuWay88K1lrdZDvoKPB+id8r8KNK/LCg5xX9MGX/kwV8kPNUAQQJfu/BisCvCsJEw6iqIKxFUADImiQk76TVa98tqLduTaqZIdUXDW04to1YagTztxdx/cGXmLu5CMHQO6KhJMGslr0KgG8BgCNBd4RA8LOQz50U5rpITC/ASI52WoCwUr7XSs09v3usN+AfkOpuG/jXO/qe/Ou7ton4/OLRCkAUPTEWDIeVHbx99hIbL/5AYfUN9nd2IUoiZMW7kakqAfUmc1a3zdyzvPV6uWytZ2tOAV5f7y8WJxXzegl5wfL+zAU9z3mqAILwv1C/EgA6FYGIbtHQL9kUeD+7hu6txLBEYDQdZj7ONbcf55q/ZhLy/PeX9KUH8+ri2JCi2a6C5kEDy/96jNWHT7324Ns/4+rXS9BGR71vRxDa/+H98G9Plu36qQKBH/L594df2YFOiR+SCNqBi841V+LzL8Qns873zh8aCsRESPC3KwTGvJM3mjfmy67vIf/bMl799xdsvFzB/s4uAE/MG4oZUCTAchg26071f3nz1cNs8/eNXTuP8KAPBn+vLbt+JX5U0Ad+2WeP81wBhBEmGvKVQXArMegp4CuCYIvAJwUZgDKqC1MP5vSbf1nQbl5JyROiADRtBsu04LoOklNjuHJvCVfuf4XRsRiy//wHLMvyUkCwjA+0AAzvofD3gbkuRqbnYSRGvam53BZfsN9vr9rtgOcTBC/i9a8Ujj4/eM4A4JMJcy2kLt1C/E8PkP99BbnlNbx99gLb+WJHzJO9Y7YMwGbNrj8v2m+eFBpraxVnw3JYDd3OvLDVng98vqfvFfRnTsw7KZ9bAuDpJRpGeQp6iYaR7YEkYGRxUr70Q0a/+/WMdnVIEQTTYTAtB7ZpQTV0TGSmkYjZmJzUoOveNFrH4QIvAL96njbMdTGSnoeRTHk+gLCVnQvWk7YG3QEf9j6d1xEFAaIIOA5DrdpAZYehVNxH+V0Wjm1DUmQoigxV8qbplA+dxoui9e7RRnN5tWJnDyy2g476HuXMC1vpg0EftnUXtdLzf6BzEfQ8n3MC8OlVFUjoXRX4LUJUe8ALiBIAfSEhz9+bVRe/mVNvzozIIy4DTNuFbdmAKMGIqRifMJCeiSGRVCAKgO24flx0OPWSn3tp18VIeg5GIlwD6BL6+OogrKcPrQ7APZ//Gpc44A/9EcBchnqtia1CHaVCDdXKAcymCUFgUBQFiiRAFoFqg1kvi813z4v2mxdbzbfbh6yEDyfmBbfugkF/7gI+yEVIAD79PAX8VuIgnoKwbcR2e6BLQurerLL44xXj7rVRJe2bTSyHeT5zSUJqTMfM3DDGxjUoSmuM2Wkfdw3BTwB6wqsAQlftdsBz10BkUPeqFPjXZMzTQCTJm4rUOLSwtVlHMbuLytYezIYFQQAkSYQie868Q5vh3Y5dfJw1V594zrwivCD3T9xF9fX8ih/ctgsLev86rLz/bIKe5yIlAJ/gz3xcT4GGo7bjnpZjAYjdmlKufjOn3rwzpV4ej0mG6QC207q9NoB4QsdU2sDYpIHhYe+Ow47z4f6fMddFPD0HYyTV0QCCq3Pwur3Kh4h1gWQRahhCa1CmADQPbVRKe+3V/mCv4X1d8oZqqJIAywE2anZluWitP8o1/3i1bWfhnaLjj4kPquAP0tfzAX+u+/rjcBETAM+gomFYVcBrBb10Aq3179RRXZj8JqPf+iGjLc2OyCMuANNh7QGmqi5jbGIIM3NDSCYVCCLgOqyzkJ4SzHURn5qFkUi1jUB8wPNBHdqvB54Xdmcmv20QWhNwHcvFdnkfm9ldFHNV7NcOwRiDKHlCniJ5Jp3yvnP4tGCtPdxoLL/ednIOY3V0n7gb5ODNcRX8CxP0PBc9AfgM6imQAx98EggmAyPkWgEgDSnC2N20eu27Be329QllLqYIQtNhXlXgMEiyiGRKx/RsDKkxFZomgble63Aa+AlAb1UAXb19u0cPUfnDtgcD1YEoeH29bbnYqzVQ2qyjsL6DamUPju1AlARIkgi1FfSVQ6exVrHzT3PNlZcla73aYFs46swb1Icf5czzz9oPYtIBPvOg56EE0E1UVdDLXBQUDcMOIfGagS8aGpmUPP99Rrt9f0ZdHItJhuN2qgIA0A0ZU9PDSM8YGB6WAYG9d1XgJYAZ6PFWAuDEvv6Kf3g7IAjwRqwxhr16E1u5GrJvy9it7MO2vLHYsuwFvSQCe03m/F42N57krLXnxear3QbbRvgx2+MevjnXzryPDSWA3gjcY9hBpH67BwMfRErowsTfFvTb92bV69dSSloSvURgt0RDRZUxNmFgKm0gNapBUbztspMkAua6iE/OQB9JtjQAoNPH9wl+7hoCgySKYAAO9k2UC7vYytdQKlTROGi2Z+ErkghZAg4sxtYqVn55y954XDBX8jW7AC+4w4K+1+Gb4EofFvjB0v5Clvj9oAQwGKfpKQgOLTniKQAw/MWkfOWny/qXd6a0S3FNkEyntXvgMEAQEE9omJ6JYWJKh2FIcI/ZHvAJoKMBRB/dPXIQSPDucefNwrexXdpD9nUF5cJuS8zzWhhZEton7nK79s6zovX64XpzueXM88U8/sRd1CGcsKB/HzHvQgd8EEoAx+O47UFQNBxkToHeeg19dkSe/fGytvRVWrk2FZfjjLXaA5fBdQHdUDA1PYSpaQPDcRnigKIhc10MT05Djyc7GgDQU+X373FnmQ6qlX0Uc1UU1rdR39mH67qeD7+l4LsAyvv2/h9lO/vv9cbLlbKz3nLm8Xbc46j4USu939v3M+lQ0EdACeBkDOIp4LcRo7YSw3YP+IQgw5tTMPrltHL97xn9zuKEOiuLHZ3AcRlkWUIipWF6Lobxcb3lKYi+90EnASTAHDe8vweDIAgQJQGu46JWPURhfQeF9W3sluuwHQeS6Il5bZPOoWs+L5pvfs42V5bL9vqBxXbR3dcPYtIJW+37OfP4kXL8I9EDSgDvxyCegmAi8HcPosxFYRVBe4zZrVZ78MWklolrguIwwLI7noJYXMPMbAyTaR26LgHo9hQw18XwhJcAgk5AoTX22nUZDg9MlPI1ZF9voVzYhWla3iz8gJj3tmoVf8lbr55Gj8/qd74+GPAnPXEHUOAfC0oAp0tQNOQtx2HJIDjPcBDRUAagj8eEifuz+s3vFvRbC0lplMFzGjouA3MBVZcwOm5gejaGZEo50h4w5mJ4PA19OAHXdVs3thQhCMDhgYlirors6xJ2SjU09ptgzOvr/f160wHe7djFJ7nmqyd5c6Ww55Tgzbnnb+XWr7zvJeaFKfgU9B8ASgCnT7A9AI62BrxW4At/Ue1BWEVgcM+RFUkYuTejLn6f0ZZuTChzmizAtBls1xMNRUlEItWxHKuqAMdxMDQ6haFkCgIYrKaNSqmO3JsyNjcq2Kt6N6nlTToMQLFu159t2m8eZRvLaxU7y9Cehd/PpMOr+FGDMoPjs6J8+D4U9KcAJYAPy0k9Bb1Ew2B74HsKhq6Oypm/zmk3HyyoN8YMSbdc73y83wLE4irGJgykp3VMZeZw0BCw8WoL5UIVO6UaHMeBJIqQW6u9CO/E3fOC+fpJ3lztceIubA5+r5l5vQ7fkJj3EaEE8PEY1FPAVwVhluOoZOB7CtSkLkw+mNVvfJvRbl9KyWOicNRToGkyEmPD2CntwWyaEFtB78/M2zeZvVwyNx7nmqu/bllvWrPw/RN3UYdv+h2zDevrXXRv3VHQf0QoAXx8+N+5rxF8CE+BpAhCcnFSyvw9oy8tpbXLcU2QPcsx4DouRH8WviTgwGJstWzlnuTMld+2rLctMY836fD79FFTdPxHG0cTRpiC3+uYLcUopa0AAAHSSURBVECB/1GgBPDpGLQ9iKoK+nkKDHR2D9TpEWn2p8vG3fuzyo2JmDTkv3G+7uz+nDVX/rPRXN7YtTcRPQs/aoRWcOsu6MHnffhk0jljUAL49PTzFPS6I1K/6UXBswfSiC6ML46q8xNxMVk5cGu/bppvW2Ox/aDs19cHg75XXx+20n+ym2AQ3VACODscZ05BlKeg1/FkXyMQQ97DD3z+VuxN7jrqbP2gYh6ZdM4olADOJv3ag2AyiBpuymsFfrXgexH89wjein3QmXlhdlzq688ZlADONlFVQVgi8B95cxHvK/A/77cTwQQQTALkzLsAUAI4P/Q6kdhvToH/IeNoAvBXaz+g+RU+OCGXTtx9hlACOJ9EWY57iYZ8pcDrAHz5HrbK9yvxfSjozyGUAM4vvSzHYSPP/cD3V3+/AvADmq8EyJl3QaAE8HnQ794HvGYgBJ7PJwG+JSAx7wJACeDzIspTwCcEvn3gV/JgIqCgvwBQAvg8Cds9CHsEust5CvoLBCWAi8Mgf2sKeIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgCIIgiNPl/xsIBONzPpCSAAAAAElFTkSuQmCC // @grant GM_download // @grant GM_setValue // @grant GM_getValue // @grant GM_addStyle // @grant unsafeWindow // @license GPL-3.0 // @run-at document-end // ==/UserScript== (function() { 'use strict'; // ==================== 配置管理 ==================== const CONFIG = { autoScan: true, scanInterval: 3000, maxHistory: 1000, // 小球配置 bubble: { size: 50, // 移动端大小 desktopSize: 60, // 桌面端大小 margin: 10, // 距离边缘的距离 snapThreshold: 0.5, // 吸附阈值(0-1,表示小球中心超过屏幕一半时吸附到另一侧) animationDuration: 300, // 吸附动画持续时间(毫秒) opacity: 0.85, // 小球透明度 hoverOpacity: 1, // 悬停时透明度 }, categories: { image: { name: '图片', extensions: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp', 'ico'] }, video: { name: '视频', extensions: ['mp4', 'webm', 'ogg', 'mov', 'mkv', 'flv', 'm3u8'] }, audio: { name: '音频', extensions: ['mp3', 'wav', 'ogg', 'aac', 'flac', 'm4a'] }, document: { name: '文档', extensions: ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt'] }, script: { name: '脚本样式', extensions: ['js', 'css', 'json', 'xml'] }, font: { name: '字体', extensions: ['woff', 'woff2', 'ttf', 'otf', 'eot'] }, other: { name: '其他', extensions: [] } } }; // ==================== 可拖动小球管理器 ==================== class DraggableBubble { constructor(onClick) { this.bubble = null; this.isDragging = false; this.startX = 0; this.startY = 0; this.startLeft = 0; this.startTop = 0; this.currentLeft = 0; this.currentTop = 0; this.onClick = onClick; this.isMoving = false; this.moveThreshold = 5; // 移动超过5px才算拖动 this.hasMoved = false; this.animationFrame = null; this.currentSide = 'right'; // 当前吸附在哪一侧 this.init(); } init() { this.createBubble(); this.bindEvents(); this.restorePosition(); this.updateSize(); // 监听窗口大小变化 window.addEventListener('resize', Utils.debounce(() => { this.updateSize(); this.snapToEdge(false); }, 300)); } createBubble() { if (document.getElementById('scraper-toggle')) return; this.bubble = document.createElement('div'); this.bubble.id = 'scraper-toggle'; this.bubble.innerHTML = '📥'; this.bubble.title = '打开资源管理器'; document.body.appendChild(this.bubble); // 添加新资源提示点 const dot = document.createElement('div'); dot.className = 'scraper-bubble-dot'; this.bubble.appendChild(dot); } bindEvents() { // 鼠标事件 this.bubble.addEventListener('mousedown', this.onDragStart.bind(this)); document.addEventListener('mousemove', this.onDragMove.bind(this)); document.addEventListener('mouseup', this.onDragEnd.bind(this)); // 触摸事件 this.bubble.addEventListener('touchstart', this.onTouchStart.bind(this), { passive: false }); document.addEventListener('touchmove', this.onTouchMove.bind(this), { passive: false }); document.addEventListener('touchend', this.onTouchEnd.bind(this)); // 点击事件(在 mouseup/touchend 中处理,避免与拖动冲突) this.bubble.addEventListener('click', (e) => { // 如果发生了拖动,阻止点击事件 if (this.hasMoved) { e.preventDefault(); e.stopPropagation(); } }); } onDragStart(e) { if (e.button !== 0) return; // 只响应左键 this.isDragging = true; this.hasMoved = false; this.startX = e.clientX; this.startY = e.clientY; const rect = this.bubble.getBoundingClientRect(); this.startLeft = rect.left; this.startTop = rect.top; // 取消过渡动画 this.bubble.style.transition = 'none'; // 防止文本选择 e.preventDefault(); } onDragMove(e) { if (!this.isDragging) return; const deltaX = e.clientX - this.startX; const deltaY = e.clientY - this.startY; // 检查是否真的在移动 if (Math.abs(deltaX) > this.moveThreshold || Math.abs(deltaY) > this.moveThreshold) { this.hasMoved = true; } let newLeft = this.startLeft + deltaX; let newTop = this.startTop + deltaY; // 限制在屏幕范围内 const bubbleSize = this.getBubbleSize(); const maxLeft = window.innerWidth - bubbleSize; const maxTop = window.innerHeight - bubbleSize; newLeft = Math.max(0, Math.min(newLeft, maxLeft)); newTop = Math.max(0, Math.min(newTop, maxTop)); this.bubble.style.left = newLeft + 'px'; this.bubble.style.top = newTop + 'px'; this.bubble.style.right = 'auto'; this.bubble.style.bottom = 'auto'; this.currentLeft = newLeft; this.currentTop = newTop; // 更新当前侧 this.updateCurrentSide(newLeft); } onDragEnd(e) { if (!this.isDragging) return; this.isDragging = false; // 吸附到最近的边缘 this.snapToEdge(true); // 如果没有移动,触发点击 if (!this.hasMoved) { setTimeout(() => { if (this.onClick) this.onClick(); }, 10); } } onTouchStart(e) { if (e.touches.length !== 1) return; const touch = e.touches[0]; this.isDragging = true; this.hasMoved = false; this.startX = touch.clientX; this.startY = touch.clientY; const rect = this.bubble.getBoundingClientRect(); this.startLeft = rect.left; this.startTop = rect.top; // 取消过渡动画 this.bubble.style.transition = 'none'; e.preventDefault(); } onTouchMove(e) { if (!this.isDragging) return; if (e.touches.length !== 1) return; const touch = e.touches[0]; const deltaX = touch.clientX - this.startX; const deltaY = touch.clientY - this.startY; if (Math.abs(deltaX) > this.moveThreshold || Math.abs(deltaY) > this.moveThreshold) { this.hasMoved = true; } let newLeft = this.startLeft + deltaX; let newTop = this.startTop + deltaY; const bubbleSize = this.getBubbleSize(); const maxLeft = window.innerWidth - bubbleSize; const maxTop = window.innerHeight - bubbleSize; newLeft = Math.max(0, Math.min(newLeft, maxLeft)); newTop = Math.max(0, Math.min(newTop, maxTop)); this.bubble.style.left = newLeft + 'px'; this.bubble.style.top = newTop + 'px'; this.bubble.style.right = 'auto'; this.bubble.style.bottom = 'auto'; this.currentLeft = newLeft; this.currentTop = newTop; this.updateCurrentSide(newLeft); e.preventDefault(); } onTouchEnd(e) { if (!this.isDragging) return; this.isDragging = false; this.snapToEdge(true); if (!this.hasMoved) { setTimeout(() => { if (this.onClick) this.onClick(); }, 10); } } updateCurrentSide(left) { const bubbleSize = this.getBubbleSize(); const centerX = left + bubbleSize / 2; const screenCenter = window.innerWidth / 2; this.currentSide = centerX < screenCenter ? 'left' : 'right'; } snapToEdge(animate) { const bubbleSize = this.getBubbleSize(); const margin = CONFIG.bubble.margin; let targetLeft; if (this.currentSide === 'left') { targetLeft = margin; } else { targetLeft = window.innerWidth - bubbleSize - margin; } // 限制垂直位置 const maxTop = window.innerHeight - bubbleSize - margin; const targetTop = Math.max(margin, Math.min(this.currentTop, maxTop)); if (animate) { this.bubble.style.transition = `all ${CONFIG.bubble.animationDuration}ms cubic-bezier(0.25, 0.46, 0.45, 0.94)`; } else { this.bubble.style.transition = 'none'; } this.bubble.style.left = targetLeft + 'px'; this.bubble.style.top = targetTop + 'px'; this.bubble.style.right = 'auto'; this.bubble.style.bottom = 'auto'; this.currentLeft = targetLeft; this.currentTop = targetTop; // 保存位置 this.savePosition(targetLeft, targetTop); } getBubbleSize() { return Utils.isMobile() ? CONFIG.bubble.size : CONFIG.bubble.desktopSize; } updateSize() { const size = this.getBubbleSize(); this.bubble.style.width = size + 'px'; this.bubble.style.height = size + 'px'; this.bubble.style.fontSize = (size * 0.4) + 'px'; } savePosition(left, top) { try { GM_setValue('bubblePosition', JSON.stringify({ left, top, side: this.currentSide })); } catch(e) {} } restorePosition() { try { const saved = GM_getValue('bubblePosition', null); if (saved) { const pos = JSON.parse(saved); const bubbleSize = this.getBubbleSize(); // 验证位置是否在屏幕内 if (pos.left >= 0 && pos.left <= window.innerWidth - bubbleSize && pos.top >= 0 && pos.top <= window.innerHeight - bubbleSize) { this.currentLeft = pos.left; this.currentTop = pos.top; this.currentSide = pos.side || 'right'; } else { this.setDefaultPosition(); } } else { this.setDefaultPosition(); } } catch(e) { this.setDefaultPosition(); } this.bubble.style.transition = 'none'; this.bubble.style.left = this.currentLeft + 'px'; this.bubble.style.top = this.currentTop + 'px'; this.bubble.style.right = 'auto'; this.bubble.style.bottom = 'auto'; } setDefaultPosition() { const bubbleSize = this.getBubbleSize(); const margin = CONFIG.bubble.margin; this.currentSide = 'right'; this.currentLeft = window.innerWidth - bubbleSize - margin; this.currentTop = window.innerHeight * 0.5 - bubbleSize / 2; } showNewBadge() { this.bubble.classList.add('has-new'); } hideNewBadge() { this.bubble.classList.remove('has-new'); } setVisible(visible) { this.bubble.style.display = visible ? 'flex' : 'none'; } } // ==================== 数据存储 ==================== class DataStore { constructor() { this.resources = new Map(); this.stats = { totalSize: 0, totalCount: 0, startTime: Date.now() }; this.loadFromStorage(); } loadFromStorage() { try { const saved = GM_getValue('scrapedResources', '[]'); const arr = JSON.parse(saved); arr.forEach(item => this.resources.set(item.id, item)); this.updateStats(); } catch(e) { console.error('加载存储数据失败:', e); } } saveToStorage() { try { const arr = Array.from(this.resources.values()); const limited = arr.slice(-CONFIG.maxHistory); GM_setValue('scrapedResources', JSON.stringify(limited)); } catch(e) { console.error('保存数据失败:', e); } } add(resource) { if (!this.resources.has(resource.id)) { this.resources.set(resource.id, resource); this.stats.totalCount++; this.stats.totalSize += resource.size || 0; this.saveToStorage(); return true; } else { const existing = this.resources.get(resource.id); if (resource.size && resource.size !== existing.size) { this.stats.totalSize -= existing.size || 0; this.stats.totalSize += resource.size; } Object.assign(existing, resource); this.resources.set(resource.id, existing); this.saveToStorage(); return false; } } remove(id) { const item = this.resources.get(id); if (item) { this.resources.delete(id); this.stats.totalSize -= item.size || 0; this.stats.totalCount--; this.saveToStorage(); } } clear() { this.resources.clear(); this.stats = { totalSize: 0, totalCount: 0, startTime: Date.now() }; this.saveToStorage(); } getAll() { return Array.from(this.resources.values()); } updateStats() { this.stats.totalCount = this.resources.size; this.stats.totalSize = Array.from(this.resources.values()) .reduce((sum, item) => sum + (item.size || 0), 0); } getStats() { return { ...this.stats }; } } const store = new DataStore(); // ==================== 工具函数 ==================== const Utils = { generateId(url) { let hash = 0; for (let i = 0; i < url.length; i++) { const char = url.charCodeAt(i); hash = ((hash << 5) - hash) + char; hash = hash & hash; } return Math.abs(hash).toString(36).slice(0, 12) + Date.now().toString(36); }, getFileInfo(url) { try { const urlObj = new URL(url); const pathname = urlObj.pathname; const filename = pathname.split('/').pop() || 'unknown'; const ext = filename.split('.').pop().toLowerCase(); const name = filename.split('.').slice(0, -1).join('.') || filename; return { url, filename, extension: ext, name, domain: urlObj.hostname, path: pathname }; } catch(e) { return { url, filename: 'unknown', extension: '', name: 'unknown', domain: '', path: '' }; } }, getCategory(extension) { if (!extension) return 'other'; for (const [cat, info] of Object.entries(CONFIG.categories)) { if (info.extensions.includes(extension)) return cat; } return 'other'; }, formatSize(bytes) { if (!bytes || bytes === 0) return '未知'; const units = ['B', 'KB', 'MB', 'GB']; let size = bytes; let unitIndex = 0; while (size >= 1024 && unitIndex < units.length - 1) { size /= 1024; unitIndex++; } return `${size.toFixed(2)} ${units[unitIndex]}`; }, formatDate(timestamp) { const date = new Date(timestamp); const month = String(date.getMonth() + 1).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0'); const hours = String(date.getHours()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0'); const seconds = String(date.getSeconds()).padStart(2, '0'); return `${month}-${day} ${hours}:${minutes}:${seconds}`; }, async getFileSize(url) { return new Promise((resolve) => { try { const xhr = new XMLHttpRequest(); xhr.open('HEAD', url, true); xhr.timeout = 3000; xhr.onload = function() { if (xhr.status === 200) { const size = xhr.getResponseHeader('Content-Length'); resolve(size ? parseInt(size) : 0); } else { resolve(0); } }; xhr.onerror = () => resolve(0); xhr.ontimeout = () => resolve(0); xhr.send(); } catch(e) { resolve(0); } }); }, debounce(func, wait) { let timeout; return function executedFunction(...args) { const later = () => { clearTimeout(timeout); func(...args); }; clearTimeout(timeout); timeout = setTimeout(later, wait); }; }, escapeHtml(str) { const div = document.createElement('div'); div.textContent = str; return div.innerHTML; }, isMobile() { return window.innerWidth <= 768; } }; // ==================== 资源抓取器 ==================== class ResourceScraper { constructor() { this.observer = null; this.scannedUrls = new Set(); this.isScanning = false; this.init(); } init() { if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', () => this.start()); } else { this.start(); } } start() { if (CONFIG.autoScan) { this.scanExisting(); this.startObserver(); setInterval(() => this.scanExisting(), CONFIG.scanInterval); } this.interceptNetworkRequests(); } interceptNetworkRequests() { if (typeof unsafeWindow !== 'undefined' && unsafeWindow.fetch) { const originalFetch = unsafeWindow.fetch; const self = this; unsafeWindow.fetch = function(...args) { const url = typeof args[0] === 'string' ? args[0] : (args[0] && args[0].url); if (url) { self.processUrl(url, 'fetch'); } return originalFetch.apply(this, args); }; } if (typeof XMLHttpRequest !== 'undefined') { const originalOpen = XMLHttpRequest.prototype.open; const self = this; XMLHttpRequest.prototype.open = function(method, url, ...rest) { if (typeof url === 'string') { self.processUrl(url, 'xhr'); } return originalOpen.call(this, method, url, ...rest); }; } } startObserver() { if (!document.body) { setTimeout(() => this.startObserver(), 500); return; } this.observer = new MutationObserver((mutations) => { if (this.isScanning) return; this.isScanning = true; mutations.forEach(mutation => { mutation.addedNodes.forEach(node => { if (node.nodeType === 1) { this.scanElement(node); if (node.querySelectorAll) { node.querySelectorAll('img, video, audio, source, link, script').forEach(el => this.scanElement(el)); } } }); }); this.isScanning = false; }); this.observer.observe(document.body, { childList: true, subtree: true }); } scanExisting() { if (this.isScanning) return; this.isScanning = true; try { const selectors = 'img, video, audio, source, link[rel="stylesheet"], script[src], iframe'; document.querySelectorAll(selectors).forEach(el => this.scanElement(el)); const allElements = document.querySelectorAll('*'); for (let i = 0; i < allElements.length; i++) { const el = allElements[i]; try { const style = window.getComputedStyle(el); const bg = style.backgroundImage; if (bg && bg !== 'none') { const match = bg.match(/url\(["']?(.*?)["']?\)/); if (match && match[1]) { this.processUrl(match[1], 'css-bg'); } } } catch(e) {} } } catch(e) { console.error('扫描现有资源时出错:', e); } finally { this.isScanning = false; } } scanElement(element) { if (!element) return; const tag = element.tagName ? element.tagName.toLowerCase() : ''; let url = null; switch(tag) { case 'img': url = element.src || element.dataset.src || element.getAttribute('data-src'); break; case 'video': case 'audio': url = element.src || element.currentSrc; if (!url && element.querySelector('source')) { url = element.querySelector('source').src; } break; case 'source': url = element.src || element.srcset; break; case 'link': if (element.rel === 'stylesheet' || element.rel === 'icon') { url = element.href; } break; case 'script': url = element.src; break; case 'iframe': url = element.src; break; default: url = element.src || element.href; } if (url && !url.startsWith('javascript:')) { this.processUrl(url, tag); } } processUrl(url, source) { if (!url || typeof url !== 'string') return; if (url.startsWith('data:') || url.startsWith('blob:') || url.startsWith('javascript:')) return; if (url.startsWith('chrome-extension:') || url.startsWith('moz-extension:')) return; try { url = new URL(url, window.location.href).href; } catch(e) { return; } if (this.scannedUrls.has(url)) return; this.scannedUrls.add(url); const fileInfo = Utils.getFileInfo(url); const category = Utils.getCategory(fileInfo.extension); const resource = { id: Utils.generateId(url), url, ...fileInfo, category, source, timestamp: Date.now(), size: 0, status: 'pending' }; Utils.getFileSize(url).then(size => { resource.size = size; resource.status = 'completed'; store.add(resource); UIManager.updateDisplay(); }).catch(() => { resource.status = 'completed'; store.add(resource); UIManager.updateDisplay(); }); if (store.add(resource)) { UIManager.updateDisplay(); } } } // ==================== UI 管理器 ==================== const UIManager = { panel: null, isOpen: false, currentPage: 1, pageSize: 50, filters: { category: 'all', domain: '', minSize: 0, maxSize: Infinity, startTime: null, endTime: null, search: '' }, sort: { field: 'timestamp', desc: true }, selected: new Set(), isMobile: false, draggableBubble: null, init() { this.isMobile = Utils.isMobile(); this.createStyles(); this.createPanel(); this.createDraggableBubble(); this.bindEvents(); window.addEventListener('resize', Utils.debounce(() => { this.isMobile = Utils.isMobile(); this.updatePanelLayout(); }, 300)); }, createDraggableBubble() { this.draggableBubble = new DraggableBubble(() => { this.toggle(); }); }, createStyles() { const styles = ` /* ========== 基础样式 ========== */ #scraper-panel * { box-sizing: border-box; margin: 0; padding: 0; } #scraper-panel { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100% !important; height: 100% !important; max-width: 100% !important; max-height: 100% !important; background: #1a1a2e !important; box-shadow: 0 20px 60px rgba(0,0,0,0.5) !important; z-index: 999999 !important; display: none !important; flex-direction: column !important; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important; color: #eee !important; overflow: hidden !important; transform: none !important; border-radius: 0 !important; } @media (min-width: 769px) { #scraper-panel { top: 50% !important; left: 50% !important; right: auto !important; bottom: auto !important; width: 90% !important; height: 80vh !important; max-width: 1200px !important; transform: translate(-50%, -50%) !important; border-radius: 12px !important; } } #scraper-panel.active { display: flex !important; } /* ========== 可拖动小球样式 ========== */ #scraper-toggle { position: fixed !important; z-index: 999998 !important; cursor: grab !important; user-select: none !important; -webkit-user-select: none !important; -webkit-tap-highlight-color: transparent !important; display: flex !important; align-items: center !important; justify-content: center !important; background: #e94560 !important; border-radius: 50% !important; border: none !important; color: white !important; box-shadow: 0 4px 20px rgba(233, 69, 96, 0.4) !important; transition: box-shadow 0.3s, opacity 0.3s !important; opacity: 0.85 !important; padding: 0 !important; margin: 0 !important; outline: none !important; } #scraper-toggle:active { cursor: grabbing !important; } #scraper-toggle:hover { opacity: 1 !important; box-shadow: 0 6px 30px rgba(233, 69, 96, 0.6) !important; transform: scale(1.05) !important; } #scraper-toggle:active { transform: scale(0.95) !important; } /* 新资源提示点 */ .scraper-bubble-dot { display: none; position: absolute !important; top: 3px !important; right: 3px !important; width: 10px !important; height: 10px !important; background: #00d9ff !important; border-radius: 50% !important; pointer-events: none !important; } @media (min-width: 769px) { .scraper-bubble-dot { top: 5px !important; right: 5px !important; width: 12px !important; height: 12px !important; } } #scraper-toggle.has-new .scraper-bubble-dot { display: block !important; animation: scraper-pulse 2s infinite !important; } @keyframes scraper-pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.5; transform: scale(1.2); } } /* 左侧吸附时的样式调整 */ #scraper-toggle.side-left { /* 可以添加左侧吸附的特殊样式 */ } /* ========== 头部 ========== */ .scraper-header { background: #16213e !important; padding: 15px !important; border-bottom: 1px solid #0f3460 !important; display: flex !important; justify-content: space-between !important; align-items: center !important; flex-shrink: 0 !important; flex-wrap: wrap !important; gap: 10px !important; } @media (min-width: 769px) { .scraper-header { padding: 20px !important; flex-wrap: nowrap !important; } } .scraper-title { font-size: 16px !important; font-weight: 600 !important; color: #e94560 !important; display: flex !important; align-items: center !important; gap: 8px !important; } @media (min-width: 769px) { .scraper-title { font-size: 20px !important; gap: 10px !important; } } .scraper-stats { display: flex !important; gap: 10px !important; font-size: 11px !important; color: #a0a0a0 !important; flex-wrap: wrap !important; } @media (min-width: 769px) { .scraper-stats { gap: 20px !important; font-size: 13px !important; flex-wrap: nowrap !important; } } /* ========== 控制区 ========== */ .scraper-controls { background: #0f3460 !important; padding: 10px !important; display: flex !important; gap: 8px !important; flex-wrap: wrap !important; align-items: center !important; border-bottom: 1px solid #16213e !important; flex-shrink: 0 !important; max-height: 200px !important; overflow-y: auto !important; } @media (min-width: 769px) { .scraper-controls { padding: 15px 20px !important; gap: 15px !important; max-height: none !important; overflow-y: visible !important; } } .scraper-filter-group { display: flex !important; align-items: center !important; gap: 4px !important; min-width: 0 !important; } @media (min-width: 769px) { .scraper-filter-group { gap: 8px !important; } } .scraper-filter-group label { font-size: 10px !important; color: #a0a0a0 !important; white-space: nowrap !important; display: none !important; } @media (min-width: 769px) { .scraper-filter-group label { font-size: 12px !important; display: inline !important; } } .scraper-input, .scraper-select { background: #1a1a2e !important; border: 1px solid #16213e !important; color: #fff !important; padding: 6px 8px !important; border-radius: 6px !important; font-size: 11px !important; outline: none !important; font-family: inherit !important; width: 100% !important; min-width: 60px !important; max-width: 120px !important; } @media (min-width: 769px) { .scraper-input, .scraper-select { padding: 6px 12px !important; font-size: 13px !important; max-width: none !important; } #filter-domain { width: 150px !important; } #filter-search { width: 150px !important; } } .scraper-btn { background: #e94560 !important; color: white !important; border: none !important; padding: 6px 10px !important; border-radius: 6px !important; cursor: pointer !important; font-size: 11px !important; transition: all 0.3s !important; display: flex !important; align-items: center !important; gap: 4px !important; font-family: inherit !important; white-space: nowrap !important; min-height: 32px !important; -webkit-tap-highlight-color: transparent !important; } @media (min-width: 769px) { .scraper-btn { padding: 8px 16px !important; font-size: 13px !important; gap: 6px !important; } } .scraper-btn:hover { background: #ff6b6b !important; transform: translateY(-1px) !important; } .scraper-btn:active { transform: scale(0.95) !important; } .scraper-btn.secondary { background: #16213e !important; } .scraper-btn.secondary:hover { background: #0f3460 !important; } .scraper-btn.success { background: #00d9ff !important; color: #1a1a2e !important; } .scraper-btn.success:hover { background: #80eeff !important; } /* ========== 工具栏 ========== */ .scraper-toolbar { background: #16213e !important; padding: 8px 10px !important; display: flex !important; justify-content: space-between !important; align-items: center !important; border-bottom: 1px solid #0f3460 !important; flex-shrink: 0 !important; gap: 8px !important; flex-wrap: wrap !important; } @media (min-width: 769px) { .scraper-toolbar { padding: 10px 20px !important; flex-wrap: nowrap !important; gap: 10px !important; } } .scraper-toolbar > div { display: flex !important; gap: 5px !important; flex-wrap: wrap !important; } @media (min-width: 769px) { .scraper-toolbar > div { gap: 10px !important; flex-wrap: nowrap !important; } } /* ========== 资源列表 ========== */ .scraper-list { flex: 1 !important; overflow-y: auto !important; padding: 10px !important; background: #1a1a2e !important; min-height: 200px !important; -webkit-overflow-scrolling: touch !important; } @media (min-width: 769px) { .scraper-list { padding: 20px !important; } } .scraper-list::-webkit-scrollbar { width: 4px; } @media (min-width: 769px) { .scraper-list::-webkit-scrollbar { width: 8px; } } .scraper-list::-webkit-scrollbar-track { background: #16213e; } .scraper-list::-webkit-scrollbar-thumb { background: #0f3460; border-radius: 4px; } .scraper-list::-webkit-scrollbar-thumb:hover { background: #e94560; } .scraper-item { background: #16213e !important; border-radius: 8px !important; padding: 10px !important; margin-bottom: 8px !important; display: flex !important; align-items: flex-start !important; gap: 8px !important; transition: all 0.2s !important; border: 2px solid transparent !important; flex-wrap: wrap !important; } @media (min-width: 769px) { .scraper-item { padding: 15px !important; margin-bottom: 10px !important; gap: 15px !important; align-items: center !important; flex-wrap: nowrap !important; } } .scraper-item:hover { border-color: #0f3460 !important; } @media (min-width: 769px) { .scraper-item:hover { transform: translateX(5px) !important; } } .scraper-item.selected { border-color: #e94560 !important; background: rgba(233, 69, 96, 0.1) !important; } .scraper-checkbox { width: 16px !important; height: 16px !important; cursor: pointer !important; accent-color: #e94560 !important; flex-shrink: 0 !important; margin-top: 2px !important; } @media (min-width: 769px) { .scraper-checkbox { width: 18px !important; height: 18px !important; margin-top: 0 !important; } } .scraper-preview { width: 40px !important; height: 40px !important; background: #0f3460 !important; border-radius: 6px !important; display: flex !important; align-items: center !important; justify-content: center !important; overflow: hidden !important; flex-shrink: 0 !important; } @media (min-width: 769px) { .scraper-preview { width: 60px !important; height: 60px !important; } } .scraper-preview img { width: 100% !important; height: 100% !important; object-fit: cover !important; } .scraper-preview-icon { font-size: 18px !important; } @media (min-width: 769px) { .scraper-preview-icon { font-size: 24px !important; } } .scraper-info { flex: 1 !important; min-width: 0 !important; width: calc(100% - 100px) !important; } @media (min-width: 769px) { .scraper-info { width: auto !important; } } .scraper-info-row { display: flex !important; gap: 8px !important; margin-bottom: 3px !important; font-size: 10px !important; color: #a0a0a0 !important; flex-wrap: wrap !important; } @media (min-width: 769px) { .scraper-info-row { gap: 15px !important; margin-bottom: 5px !important; font-size: 12px !important; } } .scraper-filename { font-weight: 600 !important; color: #fff !important; font-size: 12px !important; margin-bottom: 4px !important; white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; max-width: 200px !important; } @media (min-width: 769px) { .scraper-filename { font-size: 14px !important; margin-bottom: 5px !important; max-width: none !important; } } .scraper-tag { background: #0f3460 !important; padding: 1px 6px !important; border-radius: 4px !important; font-size: 10px !important; color: #00d9ff !important; white-space: nowrap !important; } @media (min-width: 769px) { .scraper-tag { padding: 2px 8px !important; font-size: 11px !important; } } .scraper-size { font-weight: 600 !important; color: #00d9ff !important; font-size: 11px !important; flex-shrink: 0 !important; width: 100% !important; text-align: left !important; margin-top: 5px !important; } @media (min-width: 769px) { .scraper-size { font-size: 13px !important; width: auto !important; text-align: right !important; margin-top: 0 !important; margin-left: auto !important; margin-right: 15px !important; } } .scraper-actions { display: flex !important; gap: 4px !important; flex-shrink: 0 !important; width: 100% !important; justify-content: flex-end !important; margin-top: 5px !important; } @media (min-width: 769px) { .scraper-actions { gap: 8px !important; width: auto !important; margin-top: 0 !important; } } .scraper-icon-btn { width: 28px !important; height: 28px !important; border-radius: 6px !important; border: none !important; background: #0f3460 !important; color: #fff !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; transition: all 0.2s !important; font-size: 14px !important; padding: 0 !important; -webkit-tap-highlight-color: transparent !important; } @media (min-width: 769px) { .scraper-icon-btn { width: 32px !important; height: 32px !important; font-size: 16px !important; } } .scraper-icon-btn:hover { background: #e94560 !important; } .scraper-icon-btn:active { transform: scale(0.9) !important; } .scraper-empty { text-align: center !important; padding: 40px 20px !important; color: #a0a0a0 !important; } @media (min-width: 769px) { .scraper-empty { padding: 60px !important; } } .scraper-empty-icon { font-size: 36px !important; margin-bottom: 15px !important; opacity: 0.5 !important; } @media (min-width: 769px) { .scraper-empty-icon { font-size: 48px !important; margin-bottom: 20px !important; } } .scraper-close { background: none !important; border: none !important; color: #a0a0a0 !important; font-size: 20px !important; cursor: pointer !important; padding: 5px !important; line-height: 1 !important; -webkit-tap-highlight-color: transparent !important; } @media (min-width: 769px) { .scraper-close { font-size: 24px !important; } } .scraper-close:hover { color: #e94560 !important; } /* ========== 分页 ========== */ .scraper-pagination { background: #16213e !important; padding: 10px !important; display: flex !important; justify-content: center !important; gap: 5px !important; align-items: center !important; border-top: 1px solid #0f3460 !important; flex-shrink: 0 !important; flex-wrap: wrap !important; } @media (min-width: 769px) { .scraper-pagination { padding: 15px 20px !important; gap: 10px !important; } } .scraper-page-btn { padding: 4px 8px !important; background: #0f3460 !important; border: none !important; color: #fff !important; border-radius: 4px !important; cursor: pointer !important; font-size: 11px !important; font-family: inherit !important; -webkit-tap-highlight-color: transparent !important; } @media (min-width: 769px) { .scraper-page-btn { padding: 6px 12px !important; font-size: 13px !important; } } .scraper-page-btn:disabled { opacity: 0.5 !important; cursor: not-allowed !important; } .scraper-page-btn.active { background: #e94560 !important; } .scraper-page-btn:active:not(:disabled) { transform: scale(0.95) !important; } /* ========== 移动端特殊样式 ========== */ @media (max-width: 768px) { .scraper-controls::-webkit-scrollbar { width: 3px; } .scraper-controls::-webkit-scrollbar-track { background: transparent; } .scraper-controls::-webkit-scrollbar-thumb { background: #16213e; border-radius: 2px; } } `; GM_addStyle(styles); }, createPanel() { if (document.getElementById('scraper-panel')) return; this.panel = document.createElement('div'); this.panel.id = 'scraper-panel'; this.panel.innerHTML = `
📦 资源管理器
总计: 0 大小: 0 B 已选: 0
-
📭
暂无抓取到资源
浏览网页时将自动抓取资源
`; document.body.appendChild(this.panel); }, bindEvents() { // 关闭按钮 const closeBtn = document.getElementById('scraper-close-btn'); if (closeBtn) { closeBtn.addEventListener('click', () => this.closePanel()); closeBtn.addEventListener('touchend', (e) => { e.preventDefault(); this.closePanel(); }); } // 筛选事件 const filterElements = { 'filter-category': 'change', 'filter-domain': 'input', 'filter-min': 'change', 'filter-max': 'change', 'filter-search': 'input' }; Object.entries(filterElements).forEach(([id, event]) => { const element = document.getElementById(id); if (element) { const callback = event === 'input' ? Utils.debounce(() => this.applyFilters(), 300) : () => this.applyFilters(); element.addEventListener(event, callback); } }); // 按钮事件 this.bindButtonEvents(); // ESC 关闭面板 document.addEventListener('keydown', (e) => { if (e.key === 'Escape' && this.isOpen) { this.closePanel(); } }); // 阻止面板内滚动穿透 this.panel.addEventListener('touchmove', (e) => { e.stopPropagation(); }, { passive: false }); }, bindButtonEvents() { const btnReset = document.getElementById('btn-reset'); const btnSelectAll = document.getElementById('btn-select-all'); const btnSelectNone = document.getElementById('btn-select-none'); const btnClear = document.getElementById('btn-clear'); const btnDownload = document.getElementById('btn-download'); const sortBy = document.getElementById('sort-by'); const btnSortDir = document.getElementById('btn-sort-dir'); if (btnReset) { btnReset.addEventListener('click', () => this.resetFilters()); btnReset.addEventListener('touchend', (e) => { e.preventDefault(); this.resetFilters(); }); } if (btnSelectAll) { btnSelectAll.addEventListener('click', () => this.selectAll(true)); btnSelectAll.addEventListener('touchend', (e) => { e.preventDefault(); this.selectAll(true); }); } if (btnSelectNone) { btnSelectNone.addEventListener('click', () => this.selectAll(false)); btnSelectNone.addEventListener('touchend', (e) => { e.preventDefault(); this.selectAll(false); }); } if (btnClear) { const clearHandler = () => { if (confirm('确定清空所有记录吗?')) { store.clear(); this.selected.clear(); this.currentPage = 1; this.updateDisplay(); } }; btnClear.addEventListener('click', clearHandler); btnClear.addEventListener('touchend', (e) => { e.preventDefault(); clearHandler(); }); } if (btnDownload) { const downloadHandler = () => this.downloadSelected(); btnDownload.addEventListener('click', downloadHandler); btnDownload.addEventListener('touchend', (e) => { e.preventDefault(); downloadHandler(); }); } if (sortBy) { sortBy.addEventListener('change', (e) => { this.sort.field = e.target.value; this.currentPage = 1; this.updateDisplay(); }); } if (btnSortDir) { const sortDirHandler = () => { this.sort.desc = !this.sort.desc; btnSortDir.textContent = this.sort.desc ? '↓' : '↑'; this.currentPage = 1; this.updateDisplay(); }; btnSortDir.addEventListener('click', sortDirHandler); btnSortDir.addEventListener('touchend', (e) => { e.preventDefault(); sortDirHandler(); }); } }, closePanel() { this.panel.classList.remove('active'); this.isOpen = false; document.body.style.overflow = ''; // 显示小球 if (this.draggableBubble) { this.draggableBubble.setVisible(true); } }, updatePanelLayout() { this.isMobile = Utils.isMobile(); if (this.isOpen) { this.updateDisplay(); } }, toggle() { this.isOpen = !this.isOpen; if (this.isOpen) { this.panel.classList.add('active'); document.body.style.overflow = 'hidden'; this.updateDisplay(); // 隐藏小球,隐藏新资源提示 if (this.draggableBubble) { this.draggableBubble.setVisible(false); this.draggableBubble.hideNewBadge(); } } else { this.closePanel(); } }, applyFilters() { const filterCategory = document.getElementById('filter-category'); const filterDomain = document.getElementById('filter-domain'); const filterMin = document.getElementById('filter-min'); const filterMax = document.getElementById('filter-max'); const filterSearch = document.getElementById('filter-search'); this.filters.category = filterCategory ? filterCategory.value : 'all'; this.filters.domain = filterDomain ? filterDomain.value.toLowerCase() : ''; this.filters.minSize = (parseFloat(filterMin?.value) || 0) * 1024; this.filters.maxSize = (parseFloat(filterMax?.value) || Infinity) * 1024; this.filters.search = filterSearch ? filterSearch.value.toLowerCase() : ''; this.currentPage = 1; this.updateDisplay(); }, resetFilters() { const elements = { 'filter-category': 'all', 'filter-domain': '', 'filter-min': '', 'filter-max': '', 'filter-search': '' }; Object.entries(elements).forEach(([id, value]) => { const element = document.getElementById(id); if (element) element.value = value; }); this.applyFilters(); }, getFilteredResources() { let resources = store.getAll(); if (this.filters.category !== 'all') { resources = resources.filter(r => r.category === this.filters.category); } if (this.filters.domain) { resources = resources.filter(r => r.domain && r.domain.includes(this.filters.domain)); } if (this.filters.minSize > 0) { resources = resources.filter(r => (r.size || 0) >= this.filters.minSize); } if (this.filters.maxSize !== Infinity) { resources = resources.filter(r => (r.size || 0) <= this.filters.maxSize); } if (this.filters.search) { resources = resources.filter(r => (r.filename && r.filename.toLowerCase().includes(this.filters.search)) || (r.url && r.url.toLowerCase().includes(this.filters.search)) ); } resources.sort((a, b) => { let valA, valB; switch(this.sort.field) { case 'size': valA = a.size || 0; valB = b.size || 0; break; case 'filename': valA = (a.filename || '').toLowerCase(); valB = (b.filename || '').toLowerCase(); return this.sort.desc ? valB.localeCompare(valA) : valA.localeCompare(valB); case 'timestamp': default: valA = a.timestamp || 0; valB = b.timestamp || 0; } return this.sort.desc ? (valB - valA) : (valA - valB); }); return resources; }, updateDisplay() { if (!this.isOpen) { const resources = store.getAll(); if (resources.length > 0 && this.draggableBubble) { this.draggableBubble.showNewBadge(); } return; } const resources = this.getFilteredResources(); const list = document.getElementById('resource-list'); const stats = store.getStats(); if (!list) return; const statTotal = document.getElementById('stat-total'); const statSize = document.getElementById('stat-size'); const statSelected = document.getElementById('stat-selected'); const downloadCount = document.getElementById('download-count'); if (statTotal) statTotal.textContent = stats.totalCount; if (statSize) statSize.textContent = Utils.formatSize(stats.totalSize); if (statSelected) statSelected.textContent = this.selected.size; if (downloadCount) downloadCount.textContent = this.selected.size; if (resources.length === 0) { list.innerHTML = `
🔍
没有找到匹配的资源
`; const pagination = document.getElementById('pagination'); if (pagination) pagination.innerHTML = ''; return; } const totalPages = Math.ceil(resources.length / this.pageSize); if (this.currentPage > totalPages) this.currentPage = totalPages; if (this.currentPage < 1) this.currentPage = 1; const start = (this.currentPage - 1) * this.pageSize; const end = start + this.pageSize; const displayResources = resources.slice(start, end); list.innerHTML = displayResources.map(item => { const isSelected = this.selected.has(item.id); const icon = this.getCategoryIcon(item.category); const escapedUrl = Utils.escapeHtml(item.url); const escapedFilename = Utils.escapeHtml(item.filename); const escapedId = Utils.escapeHtml(item.id); const categoryName = CONFIG.categories[item.category]?.name || '其他'; let previewHtml; if (item.category === 'image') { previewHtml = ` `; } else { previewHtml = `${icon}`; } return `
${previewHtml}
${escapedFilename}
${categoryName} ${Utils.escapeHtml(item.domain)}
${item.extension.toUpperCase()} ${Utils.formatDate(item.timestamp)}
${Utils.formatSize(item.size)}
`; }).join(''); list.onclick = (e) => { const target = e.target; if (target.classList.contains('scraper-checkbox')) { const id = target.dataset.id; if (target.checked) { this.selected.add(id); } else { this.selected.delete(id); } this.updateDisplay(); return; } if (target.classList.contains('preview-btn')) { window.open(target.dataset.url, '_blank'); return; } if (target.classList.contains('download-btn')) { this.downloadFile(target.dataset.url, target.dataset.filename); return; } if (target.classList.contains('copy-btn')) { navigator.clipboard.writeText(target.dataset.url).then(() => { this.showToast('链接已复制到剪贴板'); }).catch(() => { this.showToast('链接:' + target.dataset.url); }); return; } if (target.classList.contains('delete-btn')) { const id = target.dataset.id; store.remove(id); this.selected.delete(id); this.updateDisplay(); return; } }; const pagination = document.getElementById('pagination'); if (pagination && totalPages > 1) { let paginationHtml = ''; paginationHtml += ``; const maxVisible = this.isMobile ? 3 : 7; let startPage = Math.max(1, this.currentPage - Math.floor(maxVisible / 2)); let endPage = Math.min(totalPages, startPage + maxVisible - 1); if (endPage - startPage < maxVisible - 1) { startPage = Math.max(1, endPage - maxVisible + 1); } for (let i = startPage; i <= endPage; i++) { paginationHtml += ``; } paginationHtml += ``; paginationHtml += `${this.currentPage}/${totalPages}`; pagination.innerHTML = paginationHtml; pagination.onclick = (e) => { if (e.target.classList.contains('page-num')) { this.currentPage = parseInt(e.target.dataset.page); this.updateDisplay(); } else if (e.target.classList.contains('page-prev') && this.currentPage > 1) { this.currentPage--; this.updateDisplay(); } else if (e.target.classList.contains('page-next') && this.currentPage < totalPages) { this.currentPage++; this.updateDisplay(); } }; } else if (pagination) { pagination.innerHTML = resources.length > 0 ? `共 ${resources.length} 条` : ''; } }, getCategoryIcon(category) { const icons = { image: '🖼️', video: '🎬', audio: '🎵', document: '📄', script: '⚡', font: '🔤', other: '📦' }; return icons[category] || '📦'; }, selectAll(select) { const resources = this.getFilteredResources(); if (select) { resources.forEach(r => this.selected.add(r.id)); } else { resources.forEach(r => this.selected.delete(r.id)); } this.updateDisplay(); }, downloadSelected() { if (this.selected.size === 0) { this.showToast('请先选择要下载的文件'); return; } const confirmed = confirm(`确定要下载选中的 ${this.selected.size} 个文件吗?`); if (!confirmed) return; let count = 0; this.selected.forEach(id => { const item = store.resources.get(id); if (item) { setTimeout(() => { this.downloadFile(item.url, item.filename); }, count * 500); count++; } }); if (count > 0) { this.showToast(`已开始下载 ${count} 个文件`); } }, downloadFile(url, filename) { try { const a = document.createElement('a'); a.href = url; a.download = filename; a.target = '_blank'; a.rel = 'noopener noreferrer'; document.body.appendChild(a); a.click(); setTimeout(() => { document.body.removeChild(a); }, 100); } catch(e) { window.open(url, '_blank'); } }, showToast(message) { const toast = document.createElement('div'); toast.style.cssText = ` position: fixed; top: 20px; left: 50%; transform: translateX(-50%); background: rgba(0, 0, 0, 0.8); color: white; padding: 10px 20px; border-radius: 20px; font-size: 14px; z-index: 10000000; white-space: nowrap; animation: scraper-toast-in 0.3s ease; `; toast.textContent = message; document.body.appendChild(toast); setTimeout(() => { toast.style.animation = 'scraper-toast-out 0.3s ease'; setTimeout(() => { document.body.removeChild(toast); }, 300); }, 2000); }, exposeMethods() { // 使用事件委托,不需要全局方法 } }; // ==================== Toast 动画样式 ==================== GM_addStyle(` @keyframes scraper-toast-in { from { opacity: 0; transform: translateX(-50%) translateY(-20px); } to { opacity: 1; transform: translateX(-50%) translateY(0); } } @keyframes scraper-toast-out { from { opacity: 1; transform: translateX(-50%) translateY(0); } to { opacity: 0; transform: translateX(-50%) translateY(-20px); } } `); // ==================== 初始化 ==================== function init() { const startApp = () => { try { UIManager.init(); new ResourceScraper(); console.log('[Web Scraper Pro] ✅ 已成功启动(可拖动小球版)!'); console.log('💡 提示:拖拽右下角小球可移动位置,松手后自动吸附到屏幕边缘'); } catch(e) { console.error('[Web Scraper Pro] 启动失败:', e); } }; if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', startApp); } else { startApp(); } } init(); })();