gitradar 0.1.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. demo/api/index.py +14 -0
  2. demo/gitradar/__init__.py +22 -0
  3. demo/gitradar/cli.py +214 -0
  4. demo/gitradar/config.py +117 -0
  5. demo/gitradar/models.py +67 -0
  6. demo/gitradar/prompts/__init__.py +18 -0
  7. demo/gitradar/services/github.py +179 -0
  8. demo/gitradar/services/llm.py +342 -0
  9. demo/gitradar/utils/ui.py +196 -0
  10. demo/gitradar/web/__init__.py +7 -0
  11. demo/gitradar/web/app.py +173 -0
  12. examples/python_sdk_usage.py +48 -0
  13. gitradar/__init__.py +22 -0
  14. gitradar/cli.py +214 -0
  15. gitradar/config.py +117 -0
  16. gitradar/models.py +67 -0
  17. gitradar/prompts/__init__.py +18 -0
  18. gitradar/prompts/gap_analysis_system.j2 +36 -0
  19. gitradar/prompts/gap_analysis_user.j2 +21 -0
  20. gitradar/prompts/query_expansion_system.j2 +19 -0
  21. gitradar/prompts/query_expansion_user.j2 +1 -0
  22. gitradar/prompts/relevance_evaluation_system.j2 +22 -0
  23. gitradar/prompts/relevance_evaluation_user.j2 +14 -0
  24. gitradar/services/github.py +179 -0
  25. gitradar/services/llm.py +342 -0
  26. gitradar/utils/ui.py +196 -0
  27. gitradar/web/__init__.py +7 -0
  28. gitradar/web/app.py +173 -0
  29. gitradar/web/static/apple-touch-icon.png +0 -0
  30. gitradar/web/static/css/style.css +1430 -0
  31. gitradar/web/static/favicon-96x96.png +0 -0
  32. gitradar/web/static/favicon.ico +0 -0
  33. gitradar/web/static/favicon.svg +1 -0
  34. gitradar/web/static/js/app.js +1206 -0
  35. gitradar/web/static/site.webmanifest +21 -0
  36. gitradar/web/static/web-app-manifest-192x192.png +0 -0
  37. gitradar/web/static/web-app-manifest-512x512.png +0 -0
  38. gitradar/web/templates/index.html +521 -0
  39. gitradar-0.1.5.dist-info/METADATA +251 -0
  40. gitradar-0.1.5.dist-info/RECORD +51 -0
  41. gitradar-0.1.5.dist-info/WHEEL +5 -0
  42. gitradar-0.1.5.dist-info/entry_points.txt +2 -0
  43. gitradar-0.1.5.dist-info/licenses/LICENSE +21 -0
  44. gitradar-0.1.5.dist-info/top_level.txt +4 -0
  45. tests/conftest.py +27 -0
  46. tests/test_cli.py +29 -0
  47. tests/test_llm.py +163 -0
  48. tests/test_models.py +90 -0
  49. tests/test_prompts.py +58 -0
  50. tests/test_relevance.py +75 -0
  51. tests/test_web.py +81 -0
Binary file
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="91" height="93" viewBox="0 0 91 93"><metadata><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><rdf:Description><dc:creator>RealFaviconGenerator</dc:creator><dc:source>https://realfavicongenerator.net</dc:source></rdf:Description></rdf:RDF></metadata><image width="91" height="93" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFsAAABdCAYAAADKbxqEAAABY2lDQ1BrQ0dDb2xvclNwYWNlRGlzcGxheVAzAAAokX2QsUvDUBDGv1aloHUQHRwcMolDlJIKuji0FURxCFXB6pS+pqmQxkeSIgU3/4GC/4EKzm4Whzo6OAiik+jm5KTgouV5L4mkInqP435877vjOCA5bnBu9wOoO75bXMorm6UtJfWMBL0gDObxnK6vSv6uP+P9PvTeTstZv///jcGK6TGqn5QZxl0fSKjE+p7PJe8Tj7m0FHFLshXyieRyyOeBZ71YIL4mVljNqBC/EKvlHt3q4brdYNEOcvu06WysyTmUE1jEDjxw2DDQhAId2T/8s4G/gF1yN+FSn4UafOrJkSInmMTLcMAwA5VYQ4ZSk3eO7ncX3U+NtYMnYKEjhLiItZUOcDZHJ2vH2tQ8MDIEXLW54RqB1EeZrFaB11NguASM3lDPtlfNauH26Tww8CjE2ySQOgS6LSE+joToHlPzA3DpfAEDp2ITpJYOWwAAAARjSUNQDA0AAW4D4+8AAACWZVhJZk1NACoAAAAIAAUBEgADAAAAAQABAAABGgAFAAAAAQAAAEoBGwAFAAAAAQAAAFIBKAADAAAAAQACAACHaQAEAAAAAQAAAFoAAAAAAAAAkAAAAAEAAACQAAAAAQADkoYABwAAABIAAACEoAIABAAAAAEAAABboAMABAAAAAEAAABdAAAAAEFTQ0lJAAAAU2NyZWVuc2hvdB6DW9UAAAAJcEhZcwAAFiUAABYlAUlSJPAAAALXaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xMjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MTE0PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+MTQ0PC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj4xNDQ8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpxoKAVAAAcsUlEQVR4Ae1cWWxc13n+Z+E6Qw53UiRFDleJohZqtS1bsYUkDZoWBVr0wWkbu3AW9CVFEAMBGhdo48BIgfSlKPrYPKVo0uQhiBPJsRM7UWRJtjZKIiVSpCiu4r4MOcNlFk6/7z9zOSQtuSFnSdrOkYZz5y7n3vOd/3zn3861FRZXRCVT0oKAPS13ydxEEciAnUZByICdATuNCKTxVhnJzoCdRgTSeKuMZGfATiMCabxVRrIzYKcRgTTeKiPZaQTbmcx71dfXS0tzsxQUFko0GpXFRZ+MjIzI5OQUtheTeavfeV1Om03CaONOSlLA9tZ75aW/flmamlsBtEdkfV3WI0GJrkdkZWVVgZ6bm5Pu7m65du2ajIyOSDAY2slz/t6du1Og2QBbol6/2toaee3v/0GKS8sly+kEwGFZWwlIJBIWiHccJEiCw+GQUCgsU9NTcqvzlrz7q/dk/NF4/Jz/41sJg/23X/mKnD5zVnJysgHuugSWfBIOhcRux3QAgO02dqkN/7lB/NEB+E/gA4GA9Pb1yZtvvik9PT16/Pfhj9vtlvb2A5KTnY1BGpVwOCx9eM5ZjM5EiiMnz/WPu62gsqJC/vLzL0t+Xr44HU4JBVdkdWUZQDsMuAZf3SbY/LATHLHjzqwsqd6zR848+6y07muVyYlJId38LktzU6PUYO4ZGh6V+YV5yQbgObk5Ul1TDQGxy/z8/K4fLyHOLisrE3dBgUopxTUEiTbUYejDFgXaMcC3PyEFnaDbIfqU8mNHj0nbgTa5+uFV+cH3fyDTMzPbL0n57xPHj8vc0rLc73so5WUlUl5eKrXVe6S8tESud96WhoYGGR4eMe3cxdMkBLYdPe2gpDpsgDqKIbdOhlCa0K8nY43DlHSeJQq4zWYXV55Lzp49K4cPH5Gf/eyn8pOfvGlox5yWsr8ul0uOHTsmvf1DEgwFpRwjtrzMI0cP7pP1qF36Hw5i1K7J6rJIKYCfwAjcTUkIbPLZeiSiwmtxMh+CgD9BoD/2GTlM2QPlGDFf+MIX5eSJU/Ld7/67DDx8+LHXJXKwrr4O4FZJZ1ev5OXmSmVVpZQUu2XNPy+XLv5G7I4sWQ4sy8rysuRWV2Buytn17RLi7MICtzx35hN4yDyV8CB6PwTJIC8r+ACO0mvx9cY3pRr0QWm2jpNObLjOjh128D8LG37mzHPYZ5e7d+/uupFPuvDY0aMSEYcMjTwStqUY1FFaUiCBhSkZBWdPTs2IDxwdRpv8sBPc7gKZmVmQldXVJ1X5sfsTsiCnZ2dlAZMICyklC5OJKSCVzWpfbK/52sotZkRwHABsPcH8JehOcHmhxyNf+OIX5fXXvwnwq7bUlMiPk6dOytScX6amZqW4uEiKSoultNglvplxGRkek1A4ItmYwG2YV5bX1mQJku0pKZe5hYVd3zYhyV7DQ+zbt0+8DQ36YOTsFWgjLCrF1jeA25Bq3X6MtFvnqMQbrYXSb2kutTW18swzz8gcOnhoeFjvsds/p1HPvf5hqHQhKQLQniKPFBfmytzEmDx6NAGejuqIswTGB4CPHz8hPfcHhG3ebUlIsnnTe/fiwzsLkkC1j1xu9JGYcvLYp2MHWAe2blOqWbCXvbKhsVRXV8trr30DfP6KUpV19U6+s7OzxL+CyW4tqEAXlXjEU5AtU2PDMLAmVJni3aNoAwWEboaGxgZZ9K+Iz+fbya0+cm5Ckm1qi8qzz52RAszoDictxBB6f1VB58MSLEuq1dABgATTcHb8mJ4T42xuK+/zNz48l7xNFdEBPu/oOCLNTc3S2dmJkbTykUZt38H6CuGvaW1tkS99+W8wx2TLg4F+qaiE6prnkInRIZkGnfBZOb1bQC9jlLry8sTb2Cp3urq3V7vj3wlpI7zb2Ngj6e+7jxm8WGdzF6wvv98PCYEaaINxs+2Rtv/mYW0j/ugx/WEu4u+NT2yDoBO85zBxVoHDv/PP34H12WsuwN88gOOBf6YeWkb7wYNyEJagt8ErJSUlanBdu35TijxuqcREODs+JDOgvqWlADqRg9wAzcpCsBrDwaB0PH1aLly8zF0Jl4TNdT7Bn//Zn6olSR00hAccH38kq5ixs5ycYCidlgQbbYNgWZJtNBfrHEqx0d3Nfp4XuyYm3dzvhA/GiVHEyWsB2sKPfvRDldyOjg7tALc7X0dEwL+kkj8Fr+PI6Bgmwyn4bCKSlZUjEQjDD/7ze+DoR1IEzqYFzJ5ll5MCF+Zn0aEvyIfXbqq5njDSqCBhyeZDdMGbNzU1qQo/zdtCTxGoZFIfmgJJxYQAa4l9abOsfTyHB3kiJI0eNQc2nVkAFdRBs571ZvM3gDZSCFCiUNzsHvn8X/2Fdu4cNKPurts6gd6/36ccHAAVVFVWQWWbkebmJpX89kOHtL5PfvLTcvv2LbnbfUdcLjc6wanPuTA/JwfaD4JqhpIGNJuXFLBHQSW9PXelrq5OiouKVGdd9C3AjQqdm4DGQOUX+VCteICK/9o44AfQsnQkENRcGBfZcGxR9SJPsyuoOayursiib1WHODuL1qtVtxPSeudWl7zx7X9iuzZKeXmZjM/4JC/LJoGbcwJfEDSoVrn0mwty/ufvSH3dXjl4qEOGBgfUAl5aXFDaseF5JjESklmSMEGKglq9pwqSXSY1NTU6hPmQ5G4jyDTlVXZVlaME5QDQwoJC6LjQb0E/pSXF4vEUAGhaaOvg14AsIfiwuLQITl1CXQGAHYRaJpBAOIdy8iQXDrD8fH5cKrEtUENZ35UrH0Dqzf1IN3V1tWpsPXXqlFLcwIMH8DYOyDJ0Z59vUY4eO47OzRIfnGDUeAqLyqX77r1k4qx1JQVs1sThXVzsgZqEoQrA+DuAxjjwXQDrjLxYWloK504ZvovBsW4MZSc4NCTkVqpV1mdx0W+AheTb7c4YuLkKbm5OLoynHJV45X7tTaOm2TEKDra3S2NDg1y8eFEq4ON45ZVXZF9Lk9y53QmqyAeoefLgQT+EYo/MzS/oyDp9+hn1PtbW1MkgrMn+BwNJB5oVJg3sNeite2urIHH54vV6dXRTp11bXQOoWdjvgH8hoKEyWp1s6PzcPH4DWFwbiRjAHPBFZMP/QB8EKYV8TbrQCRUPbHG/AdpMvNZkSrBz0BlNTU1Stxf0cPAAvHZVcunyFXSOU34D6qAKWFfnle7ePjkC7m5r2wdNCkLirZcp8PoH8DqmqiSFs/lwlEqqUJ03r8ohNIKNKiy0QaLuQML9GJ41yomc8BzQUnSic4KXMcy3aCTQOlhIA/xnfpGhDbDsRQtwPTH2h/XRqKI/vKfnHmgqWxobD8vr33pDOm/d1rM+ceZ5+eDKJX2WksIi7fB1hO4WQSWfPPsJ+d5/fH9zlUnfTtiC3PxEff0PZHFhDnHGq/CVOLTx1HWrqvZAQrOVW3PgtMqCpBt1EFcT1NiHgBpYjQRbNGFJsQK9+YYAnhJLkKnS0Vl19eoH2GeXEydOSktrm7z08sugsQK96sLFS7Kv7SC6cB2Opn4pcuciLnpPNR6OpBAm4VSWpEk2H3Lg4ZAcO3JQrn94WVWnvbW14M1ylejx8XFipRPk44IKlrSqJPNEfow8qyRbgFvfvF8U6sw81DROxCMjwxKE5drc2ioN3kZQEHRpdMBn/uAzmHTz5Otf/7qed/tOl84bB9oPSwDBaFqg3gavTuB0paayJFWyObvPYUj6EYe8eOFX6ojn8Ka2wbheJIIZzyoKpvlhJJoKHkpsv4E6dnIMfN0X2+Y8MDExLj/84X/JL3/xNjSXBTl56mlpbdkPispSVZE1snNeeP55+fYbb6jGwhqnp2fkbs99udfTpzfgxE0NJ8hIUwpLUsHmc3Z390IrKZGeu7cRQe/UIU7J2oNYI6Pv9AyyEDhTtm4ZQHEEG5YU6z7rdHyT1kkfkxMTcu3qh4jWTyOG2Q6JrUCHhlWiTZ+R3009n/r0p+RbcNOScrYXTsScHxj5T2VJOtjDIyPqE6HZ/sGlCzIGc5hS6PEUKqWYic9qEpEw2+qcikktJd0AvQlwHLP2cUKlkcNryyqrpR1GSXNzszrBqM/zvI2KYzfgvs9+9o/ktW/8nXXzje+yslJYvCuwF3bvPt2o7GM2kg42ebK3rx+aiEdmkB/yq3ffQUOCOkwrKioBumfDBFZM+HDWRhx7C6IYwHEJtdS82dk5yYeJ/bkXPyfPnT6tEy47klWZ6gi4KVb1nDhffPFF+dpXv2odUiuV4bAoVM//dZLNVnTf7ZFsNIDS1Acz/vLl99XPwdySakSrczHzb+FvXqRAG6QMYPTuGeDMt3G7EmzODbQqy8vKYW7XqhXJCqzztLrYtdzeXPhMX/ryl+Sllz6vu6nH01PIUBc7K5Ul6ZLNh6XDfXJyRnmVjbvy/gW539urhgonSpr03E/+BkSx9sWAxi8eY2GMkiAaIA349LcsLi4pQLRKrTnAqJI8x5zP6821Zot/LTDZYa9+7VX44U8rHblceWq2x89MzVZKwOajXrvZKXnwW7Dxq7Acf/Hzc+p542TEmF9lZYWqWxYABl5cuLFhGszrrQ9HA7OoKH/qFsWEy0LwTIdYHaO7H/vHuh9H2be++bqcfeEF7TCOlFSXlIE9Pj4h/uVVRKbDsObyZGx0WN5+65wmVFLNIn8T9DA4/qNlOyWYUUCvXxiB2Py8XJVsAkegLQPJdIpV27Zes3bj2wKcXspXX/2a1vUIz5vqkjKw+eAffHgdk5hLtQTyYtftm3Lh1++pc4oSTnXQBekngE9iSwJIcBhq4wTG0FsevH10vRqwY6lusSHxcbTLY+ZDq9WAzvQEaksMIqS6pBTswaEhpAGElBcpgTRwLv76Xblx/aryNzugBjl0HNIRhKEMAlaTjWQSUPI0kxspwfRxaxInTuMxdsbjC7vPfAyw1lncx2K+Gb7j3HAUOSSpLknz+j3pQecQtmrb1wrJXNOgANO7hocGZQ8cU4whshOYLUp/NUGhT8VQg5nsqEpq+jFuwMg9vXoW2JR0Ak5DhR1pEb6FP+uzykf3GQoiV4dDq3Ly5FMaNtscz7SuTdZ3ysFeWvJLXb1XshBwoW+bfL0MX8bY2Kh4Gxox0ZWo44hg+TH5UU6Z8EOJpaahQGObRg/1ZDqMaD1uHMP5pBRebwEaB4e1bUI8doAdxI7hSKG3ch0+9aLiUjlypEOuXL4sM8hNSUVJOdh86MnJSTlx/JhGtwkMM6cW4AqdRNyypaVV43+MqDByzoCDRQ2UauJigsPIuIIE80PJp2vU0tXZCfSHxMtmkLeCbaSd+0hBdg3s0gvo8ZToqGnd1yJvnX9LaSteX3K20gL2KgIITCVwYzJkEJeFLtepyQmkry0gn2O/hsnUbwE0/PC+EUxCYpnx7ABDF5wQRYGO4BwWMx8wVvm4sh3szb9tMjszrSOGFi8lnoYSja7LV648rrKE9qUF7NaWZpmYQbAVjahEzjMl0oDnlEegEybDtCJ+SCogH3MyJIdT8ggkwaUWwtQI/mbRDNqYU4t0QGqJ04iR3M0UQomOSzVrMFrO9MyU5GKkudxm0RUB379/P6zgbhkdHeWJSSspB1sNGEyGXd13kQk6K9UIJBSouzUC4AiSAxMmUgbgrWtubsE+ToIGcJrQJu8ENLHBy6QIgs3ofMyDCJRZDzvQALoVnzjIRqoNZ3N0hOG/mRY3LMi8fMsFbDQc5jC+9dbPVRPaWtvuf6Uc7ANt+6Wrq0tskVXEHOcQb1wVL5ZRUFIpndQ+CNLQw4cKbGNjs0ov0xno2VuGIcMYJOmHSZYbQMXANqEzM3myHkozz9n8sSR86z4srUP9M7NT6jRjtJ6dZ9VPWuFIvJJEOkk52IzUDA/2QY9eN8bD+KTkuQqlBikD1HFJzJRKgjY4MCAOTIAN0FIInAKuuYPwGoJiDKWY4c8kfEuyCRAph1hbYG0GltsWkNZ+nsu5ZG52BgHfInS+Waxkjpt6Ghsb5fqN61AJp3cvzpuuTDnYDKY+CxfoxKMxhKDWJKewXCJ2p1SWFW3QCZ+H6V8E5OHAA1UP6xHtJrjUq2nw0LAxksv+iYICqKnEudmA/XjJtgDmSOK2jihQGP0sPt+8RpK4wsCq09RrtCBG6c+dO78Jst1vphxsTnb0fzBnYyWSJbXwR9gjyzI2MqTqFqPwlFIq2FTfuM0kGro+60A31EYYT2QdzB9U8SXYG0PeAMgK2BnE3wLXAs0CefN+nstJmDkrpQgegMM+Iv3s1EqkrjH81t/fv3uUY1emHGze56lTT0nfyKQwIiKhJZmFyjc0NCyzMB5qa/eiI1wA2Ux2FuAPQSnkczqLOGkyzy8CHwp92dRmGOxl0jrRpXzzz4bkcx+PcXds+6M0QrD9yGtZhlpaqplWmzvFqpvS7sUoO3fu3BOcZnqb3+pPysHmCuBF0AcXo9rCfpnD7E/AmPFPZxS3S0rKVLdVgCDhzCuhnk0OZxfU1WFCBfBMWyMg9GevgVa4TVAsQLeAjet4zPpY57CTuG0km6b6mniQshZGpIZzyGbAdU5BPUyFoKV5915iKWkpB5uTzPBgv0SCyzDTAwpSEyLgZz/1GV0iAqMcRoxfPXk05RVwNJAczsYODT7Ua/ZCwrNxfCPTdMGHOcBEVyjppBWrbAGW4CrABJnbpnMM2H7t1MICunpNJ1jXmk7UAaNcXlNbK+fB3VRRd1tSDnYVggSD/b0Ag5NaWKpBG3/4x38CSV+SB/33Nb+avE6Dhjl8OfgYwKHOYR+oFQk1QzDjA1hlW4sRgAxXSDi9fwsAfEkdWEbb2CyVG2BR8oGOBaL5ZsfANQAaAVPDoCnQBUs4Sc8z15ptdg4rYIRpDjnbvYg47bakHGzyLjNchwEYVbmnn34aOR5L8u6774kP2VPTCArTqGEyJqUNAxzDFpMmpJC/dAETtJJxWJpcyly1p1o5nhLODFZSygI0Hnam/lPAttNBDLgYmFZnEmwnFszSoOFKg60dEruGSKPQ584VzefPn9fzdgN4ysGm149puKSAVUxG7Qfa5caNGwB6Voc3O4NqHdfiUCfv7u5WraSsvJyCpgBSBaSUM+GenzL4L/hOEwLuwTfdt/PwsYRDsajPBqikBko1oTGgUfp1m9oI5pFsuCOzkQwahh2gZ21cy+vincTL3MjG7b5ze9d52ykHmw2YQgZSKcBrbWoCKPD2IbmG2gG9dRyylGBaa/v3t+nqs+7uLvUEliN0RnrhuTTtuU0r9BGS790AubioWOsoQgI+jy+iYymh1kSp6MVANoDHAeQxHxL2c5GXzTRiUhkLz+NHO4XbsX08xn05iOq8f+kSf+64pAVsPhWTzteCYaTy1srs9CQ4eEV1aUrPMvLtWltbEUyoREpYj3I7HVR+6sDQVKgaUgWj4UJnFFW2UayFpOeQqWMcHfS35OfnqZTTDNeFTugA9CT/b3SAkVYDug+py/SLOLPoGuCoiEuybm/+jeeMYhJlEPudt9/e6By27bctaQObD0RQucyioWUfLMoR1ZuBgjR4vZpmzLU5XJBE6WFG1cjIiK4UYDI96YIaA3Vu6uI8PjqKZEq8kae0tExdAVQl3W6XahyM4mjAAefzHvzHQqll4WjhIiUPkvLtMNUN2OY4z1GJxnlm3AFoXM99eRiBNztvaL4g69lJSQvYdQCz/dBR2d9xSjyVDRLNKpB8TIgtDVy1exqOKS8Sea7IBDJdycP2bJdKIqM7lL7wOt7YAMdQIYCkRmMNZ0rpBFam8b0gXDTF4DIlmhJOvZzzAAGy1t4Ac1OwQdrw+eZ0DZAN7gN2JIsBGX/NRoy3eYA78IVrVwJLALxTf+/kj/Hk7+SKHZxb39AgbYdPSCDkBIVEZHaJ0gZ1C36I4j2NcqwFa3AQYb969SoaPg/ZgbMqv0Rqmo9CNVwQ//SglGFhUm5Zg8z418W3NCJleGNCIYyMwHJQtRvmeo8MDyJDyidHOo7L3pgBVFDg0o5bAuXQ8oTSAaTswBAyCtxIS3zjD4ul6hmEzRjgeZtfl2KgxhOiUzi3cNLm6NhJSRnYJ06eFFdFs4zPr2LokWv5MUYLDQN6AYPQHpgLwrcw5Ls9UN9sUlbdqA3xlFSI21MMCWcA2CHTWNSvsUfxYzldl5x+5imlB+YRcuJchM595dJFJAJNw1hqU7WQtFKEhE7OD/Sr0O+ifm/Ut4b7kl7I+yHsV2sxhq4BFofxm7viBUfw24MJmfPIThN7UkIjTC/zHnhKZuf90Jm5ABRPiGFoJIhWHPXgoFTgLQhFhS4A6ZP5wLq4i8oU+Cgar3o2+ZYShvWOTnQWX0XhC6xJeVG+/OTNn2oeSWVlJSScjio4vEANDHMxQT43N18BUbURWg9B5nFSCzl/AN5FBieYLETVk/SjIOM5N+MbYw88h9nLc+wYGpcuva+Tfrwj/uetlEh2TS38If5VrO7CKzHwtJY/QqUHPg/1RSv3xoehxZs2dAIl2UY/BUDfcJ2irVkg8WW4RQv2lGvLuFbm1u07umS648hhROphCSJPhZoK36TQhGCy19uoGU8QYHHb3Srh1MtpZHGlWgVU0kKMIEcu39xmyXQMuBjqURVvc4xqJVMvKmDg8BVGOykpATsLtAAqlZUQeQ0qlQV4DGiqZtEIHEngP05yPCcUhJ8D0sPJLGpDJ9ipeTB0hpgjGkjQOTKy7SF84v4JXs9F/Px4sV6dUXy+iScIQG/B8T8+Niat4FhKMKWbViwDx21tB6CNzKmqSH+5JgkRXNyL4FrMzW/ytxYcYwSUoy4fLuOdlpSATeAK130SdbqxNJpvRQvJOgBej0KTgLRGQAcReNsoWQSL+YAhJKNTuoF2HFwATD8zpYlUlOOAHyN7DZrM5rSFeJMH4bblh4n3hw8dlNbmZqwem5UPsUKMSUHehibkF9IQcqgTjG/9US6HRBvO5q0VcdU64kBjH58BHwpJGO0L7GL9TUo4m5xYX1Mqy1Ct3JAAzQlx4kHRKC4y4oevpHNh6NI3MTAwIOMT0wq8doBSDCxBaCdOO6w2LGQvyMFrLHJtSIfIldWwDevKB+Mob9syNDGiS/K4BIROJL5QaxHrbgKwMmkE8ZkIOrfZkQ58GFzmHEG8NYWC8s1tHmMfQKLXVgO66OnHP35TIz3bbv2xP1Mi2XzTTUtzI95BkiuLc2PwqlFHxivp4MMOBl0mAABJd4L7ZucXYS5joah3rw5PqmRAXcHIwXDPAhhsaATnM1OqFMs6foSG/jaFo2YIvMoP3QFcWMpXYtTWUMobNNBLjx89iBBd7VyVXqUNAzrrULcsKVDpDulzw6O7ehVeUl6B8aSGnzp5HA2rVhpZBYdy8T8zUJk1ylAXUxZUuiBRBHkN2sEqrMwgArH0cZB+aCFm5TgxQlwwXnzya6xlpEaRSGFCZ0tzk3QcOaQGFe0Bqon0p6sBpJWTWrBBsPUDVRVaC3Nc/uVf/w0+nJ4dP0JKwebTcEI6eKhd6uETYdoZJ09tAw0CiKxRzUyKArWW+FxkQ+PWIE1RXeZ8G1pHoq/nfBw6BJ4Ta8fRI7K/dZ/Q28jIDKXZqKzEG5oRPoODQ6py3kCi/25KQmDv9LXGbATdqEwT5tpIvvGGqV6UIKrUQTiq/Agq8N0gfK3GBHIE6cBKV6FKV4YXGfC1GMwd5+s8OPJ8eDtE7/1+vJfkrkaNdvs8CYG925v+f72O02+mpAmBDNhpApq3yYCdATuNCKTxVhnJzoCdRgTSeKuMZGfATiMCabxVRrIzYKcRgTTeKiPZGbDTiEAab5WR7AzYaUQgjbfKSHYG7DQikMZb/Tdb1uEwLk+wHQAAAABJRU5ErkJggg=="></image></svg>