// ==UserScript==
// @name RuTor popular torrents highlight + TorrServer integration
// @description Highlight popular torrents (based on peers), + Add to TorrServer button
// @version 1.02
// @match *://rutor.is/*
// @match *://rutor.org/*
// @match *://rutor.info/*
// @run-at document-end
// @grant none
// @copyright 2024, MSerj
// @license MIT
//
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_addStyle
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhwAAAIYCAYAAAAmbzVqAAAACXBIWXMAAAsTAAALEwEAmpwYAAA54GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMwMTQgNzkuMTU2Nzk3LCAyMDE0LzA4LzIwLTA5OjUzOjAyICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoV2luZG93cyk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMjQtMDYtMjJUMTg6MDA6MTUrMDM6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAyNC0wNi0yMlQxODowMjoxMCswMzowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMjQtMDYtMjJUMTg6MDI6MTArMDM6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDx4bXBNTTpJbnN0YW5jZUlEPnhtcC5paWQ6MGE4MDkxOTktZTMxMy03YjQ0LWExNWYtODZmMzA3OGJkZjY5PC94bXBNTTpJbnN0YW5jZUlEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOmExMmQ0ZmZmLWFjZjktODM0Zi05Njc1LWE1MzA1OTM3NTJlMjwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOmExMmQ0ZmZmLWFjZjktODM0Zi05Njc1LWE1MzA1OTM3NTJlMjwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDphMTJkNGZmZi1hY2Y5LTgzNGYtOTY3NS1hNTMwNTkzNzUyZTI8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMjQtMDYtMjJUMTg6MDA6MTUrMDM6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE0IChXaW5kb3dzKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MGE4MDkxOTktZTMxMy03YjQ0LWExNWYtODZmMzA3OGJkZjY5PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDI0LTA2LTIyVDE4OjAyOjEwKzAzOjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNCAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WVJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+NjU1MzU8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjU0MDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj41MzY8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0idyI/PmLM52kAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAEBVJREFUeNrs3dFu27gWhlGx8Jtk3v+J6mfRXBQDTNEGiWz9lDb3WlcHOJ02JinyC526Y+MlHx8fBgFgjj38+w9DnPcwBAA0iovv/pkiRHAAIC6mf20CRHAAIDIEiOAAQGSs/ZrEh+AAQGhMe53CQ3AAIDKmvnbxITgAEBrTxkN4CA4AhIbwEBwACA3hsYwf1gAAYsPYpbnhAMBhec04trrtEBwACA3hEectFQDEhjEWHABcdgiKDdEhOABw+Ik8wQGA2MAcCA4A+nx3LToEBwAONxpEoOAAcKhhjgQHAA4y6s+V4ABwgGHOBAcADi7qz53gAHBgYQ4FBwBig/pzKTgAHFCYU8EBwNuHktgQHYIDAIcR68+z4ABwCGG+BQcAYoP68y44ABw6mH/BAYDYoP46EBwADhmsB8EBgNig/roQHAAOFawPwQGA2KD+OhEcAA4RrBfBAcAfB4fYoFx0CA4ABwbWkOAAQGxQfy0JDgAHBNaU4ABwMED9tSU4ABwIWGOCA8BBAPXXmuAAEBsQX3OCA0BsQHztCQ4AsQHxNSg4AMQGxNei4AC4fnMXGywfHYIDYLHvJOGO61NwAIgNiK9TwQEgNiBOcACIDYivWcEBIDYgvnYFB4DYgPgaFhwAYgPia1lwAIgNiBMcAGID4utacACIDYiv74cxAxAakOaGA0BsQHy9Cw4AsQFxggNAbEB87QsOALEB8WdAcACIDYgTHABiA+LPg+AAEBsQJzgAxAbEnw3BASA2IE5wAIgNiD8nPtocQGhAnBsOALEBggNAbED9Z0dwAIgNiBMcAGID4s+R4AAQGxAnOADEBggOALEB9Z8rwQHYFIE4wQGIDUBwAIRCQ2zAxKgXHEDbDRCYR3AAYgMQHABiAwQHgNgAvnz+BAcgNoA4wQGIDUBwAIgNEBwAYgMQHIDYAAQHgNiABs/mwxgAQgNIc8MBiA1AcACIDRAcAGIDEByA2AAEB4DYAMEBIDYAwQGIDUBwAIgNQHAAYgMQHIDYAFbgo80BoQHEueEAxAYgOACxAQgOALEBCA5AbACCA0BsgOAAEBuA4ADEBiA4AMQGIDgAsQEIDkBsACvw0eaA0ADi3HAAYgMQHIDYAMobggMQG0Cc4ADEBiA4ALEBCA4AsQEIDkBsAJcaggMQG8AUggMQG4DgAMQGUJ+PNgeEBpAy/vsfbjgAsQHECQ5AbACCAxAbQElDcABiA5hKcABiAxAcgNgAyhmCAxAbwHSCAxAbgOAAxAZQyhAcgNgALuGjzQGhAZxlfPZ/uOEAxAYQJzhAbACcYQgOQGwAlxIcIDYA3jUEByA2gMsJDhAbAO8Y3/lFggPEBkCc4ACxAfCq8d1fKDhAbADECQ4QGwCvGEd+sY82B6EBEI2NbXPDAWIDYALBAWID4Ijxyn8kOEBsAERjQ3CA2ACIx4bgALEBMIXgALEB8JXx7m8gOEBsAERjQ3CA2ACIx4bgALEBEI8NwQFiAyAeG9vmo81BaABM4IYDxAbA/43Ebyo4QGwARGNDcIDYAIjHhuAAsQEQjw3BAWIDYMz4QwQHiA1AbAgOEBsAtWNDcIDYAMSG4ACxAVA/NgQHiA2AKXy0OQgNoI9x1R/shgPEBiA2BAeIDYDasSE4QGwAYkNwgNgAqB8bggPEBiA2BAeIDYD6sSE4QGwAYkNwgNgAWIPgALEBrGPc9QvzSaMgNACxEeeGA8QGIDYEB4gNgNqxIThAbABiQ3CA2ACoHxuCA8QGIDYEB4gNgPqxIThAbABiQ3CA2ABYg+AAsQHUMCp/8YIDxAYgNuJ8tDkIDUBsxLnhALEBiA3BAWIDEBuCA8QGgNgQHCA2ALEhOEBsACweG4IDxAaA4ACxATQyVn5xggOxASA2BAeIDUBsCA4QGwBi40s+2hyhASA24txwIDYAxIbgALEBiA3BAWIDQGwIDsQGgNgQHCA2AAQHiA2AE4zuAyA4EBsAYkNwgNgAxIbgALEBIDYEB2IDQGxcz0ebIzQAxEacGw7EBoDYEBwgNgCxIThAbAAgOBAbABO43RAciA0AsSE4QGwAYkNwgNgAEBuCA7EBIDYEB4gNQGwgOBAbAGIjzkebIzQAxEacGw7EBoDYEByIDQAEB4gNYHVuNwQHYgNAbAgOEBuA2EBwIDYAxIbgQGwAiA3BAWIDEBsIDsQGgNgQHIgNALEhOEBsACA4EBsAJ3C7ITgAQGwIDvic2w1AbCA4ABAbCA5qc7sBiA0EBwBiA8EBAGJDcACA2EBwAIDYEBwAgOAAgHW43RAcACA2BAcAiA0EBzflQ78AsYHgAEBsIDgAQGwIDgAQGwgOAMQGggMAEBwAUIvbDcEBAGIDwQGA2EBwUJAP/QLEBoIDALGB4AAAsSE4AEBsIDgAEBsIDgAQG4IDAEBwcHP+SixwNrcbggMAxAaCAwCxgeAAALEhOOAYP78BiA0EBwBiA8EBgNhAcACA2EBwcC0/vwGA4ADgttxuCA4AEBsIDu7hyrdTbFYgNhAcYNMCPLcIDt53lx8WtXmB2EBwwJRNyyYGYgPBATYz8HwiOOC4u372hk0NPJcIDrC5gecRwQHfc/Xtxjjp1wAgOMB3VuAZRHDQVbV/N8WGB549BAdiY8omZuMDsYHgABsgeNYQHPBL1dsNGyGIDQQH2BDBs4XggF/2xV6PjRE8UwgOxMaUDc0GCZ4lBAfYKAEEB110+OfnRQd4fhAcYNMEzw2Cg5V1uN2weYLnBcGB2LCJgucEwQFrbmw2U/B8IDiYYDcENlXwXCA46BIbo/mfD2IDwQE2WfAcgODgFW43bLYAggOx4WsCax/BATZesOZBcPAptxs2YLDWERy0iQ0bMVjjCA6wydmQ8RyC4OA4b6XYmMGaRnDQJjZs0GAtIzjARmejxjMIgoPj3G7YsMHaRXDQKjZW2uxs3ACCAwe01wTWK4KDGbyVYhMH6xTBQavYWH2zs5ljfYLgwGbndeL5A8HB2byVYnMH6xHBQavY6Ljh2eSxDkFwYMPz2rH+QHDwDm+l2PTBukNw0Co2bHrGAUBw4JA1HlhrIDg4xlspDgKwxhActIoNm56xwdoCwYFNzxhhTYHg4BhvpTggsJZAcNAqNmx8xgtrCAQHNj7jhrUDgoNjvJXi4MCaAcGBzQ9jiLUCgqO2O91u2PyMJYDgEBuIDqwPEBzY/DCuWBcIDm7GWykOF6wHEBy0iQ0cMlgHIDiwARprzD8IDo5zu+HQwbyD4KBVbNgEjTvmGwQHNkHjj3kGwcEx3krBYQQIDlrFhoPOXGBuQXBgEzQnmFMQHBzjrRQcUOYSBAetYsNG6KDCHILgwEaIeTJ3IDg4xlspOLjMGQgOWsWGzdABhrkCwYHNEHNnjkBwcIy3UnCgmRsQHLSKDRuigw1AcOCQwnyaDxAcHOOtFBxy5gEEB61iw4bosMP4g+DAhog5Nu4gODjGWyk4/Iw3CA5axYZN0SGIcQbBgU0R8258QXBwjLdScCgaV2jnYQhsjLRfAyK4qOfzaRAoww3HXHfa2MUG1oKxBMEhNsBBaQxBcGBjxLrA2IHguBlvpeDgNGYgOGgTG+AANVYgOLA5Yq0YIxAcHOd2AweqsQEER6vYsEFi3RgTEBzYILF+jAUIDo7xVgoOWgDB0So2HBRYS14/CA5skFhTXjeszz/edi5vpWBdiw1AcLTalG2SiAzPEQgObJKIDM8RCA5s1Fi7YgMQHDZsGyVCwzMEggMbJSLDMwQIDhs41imA4MB3ZggNzxAsxAd/rbGZ2ygRG54huDU3HCA0xAYgOLBZIjQ8PyA4AKEhNoAv+RkOBw7mXmwAggMHD3+db3MuNkBwIDoQGmIDEByiA3MrNgDBgYOJ3+bTnAKCw3dLogPz6HkFBIfDippzZ/7EBggORAfmTGwAgsNm5gCrGRrmSmyA4MB3zZgfsQEIDhubQ61maJiX859HsQGCQ3SIDsxF++cQWvKPt5272VU4RHYbs9AQGIDgEB2iQ2x4jgDBgehAaAgKQHCIDtEhNoQFIDhEh+gQGgIDEByIDoSGwABO56/F2pQ7f0duDF9bzz7rAhAcosOBedG47Q3WsMgABIfoEB3GS2gAggPRsWJo7IuvVaEBCA7RITqMjdAABAeiY9XQ2Bdek0IDEByiQ3QYB6EBCA5Ex8qhsVt/AILDpi86vObja05sAIJDdDiAb/A690XXmdAABIfoEB1eX/v1BQgOHApLH8puNQAEh+gQHV7LwmsJEBw4KJY+qN1qAEzy8CELLx2w4585h4Z/2l4srRqrQDNuOF47oGYdVm46Ml+rWw0AwVHjQP35fIqOetHhVgNAcNQ7pERHmQPdrQaA4Kh9gIqOW0eHjyUHEBzrHJyi45bR4WPJAQTHegem6LjNge9WA0BwrH1Qio7Lo8OtBoDg6HFAio5LIsCtBoDg6BMbouOS6HCrASA4+sWG6Jg2xm41AARH79gQHfGxdqsBIDjEhuiIjblbDQDBITZER3Ts3WoACA6xITpic+BWA0BwiA3REZ0LtxoAgkNsiI7YnLjVABAcYkN0ROfGrQaA4BAboiM6R/4JeQDBITZEB8YdQHCUig3RsXxoGG+AJsFR5npedCwXGwA0CY5yPwsgOpYIDWML0Cg4yv7goegoHRsANAqO8n/LQXSUCw3jCNAsOJb5K5Wio0xsANAsOJb7/AbRcevQMGYADYNj1U+mFB33jA0AGgbHvvoEiY7bhIbxAWgaHHuXSRIdl8cGAE2DY+82UaLjktAwFgCNg2PvOlmiY2psANA4OPbuEyY64q9ZbAA0D47ddIkOrxVAcIgN0VE1NMQGgOAQG6JDaAAIDrEhOmrGBgCCQ2yIjtjXLzYABIfYEB2+bgDBITZER73D260GgOAQG6JDGAEIDrEhOmoe6G41AASH2BAdLSMIQHCIDdGxwCHvVgNAcIgN0bF88ABw0+AQG6LjjD9PbAAIDrEhOpaJGwCKBYfYEB3v/t5iA0BwiA3REYsOoQEgOMSG6PhrIIwb/T4ALB4cYqNvdGxvxILQABAcYkN0vBQP46RfB0AhI3ziiI0i68DpDkBS8oZDbNRhrgAoGRwOMAAgGhxiox7vqABQKjjEhtgAgGhwiA2xAQDR4BAbYgMAosEhNsQGAESDQ2yIDQCIBofYEBsAEA0OsSE2ACAaHGJDbABANDjEhtgAgGhwiA2xAQDR4BAbYgMAosEhNsQGAESDQ2yIDQCIBofYEBsAEA0OsSE2ACAaHGJDbABANDjEhtgAgGhwiA2xAQDR4BAbYgMAosEhNsQGAMSDA7EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGzb2LdtNwwA/HFAbNswCpzlhyEAAAQHACA4AAAEBwAgOAAAwQEAIDgAAMEBACA4AADBAQAIDgAAwQEACA4AQHAAAAgOAEBwAAAIDgBAcAAAggMAQHAAAIIDABAcAACn+HcABFsc118WIq0AAAAASUVORK5CYII=
// @namespace https://greasyfork.org/en/users/1321619-mserj
// ==/UserScript==
// General styles
GM_addStyle('#mserj_settings { width: 400px; min-height: 150px; position: fixed; left: 0; top: 0; background-color: #fff; border: 1px solid #a00; }')
GM_addStyle(`#mserj_settings .header {\tbackground: #ffde00;\tpadding: 10px;\tfont-weight: bold; text-align: center; }`)
GM_addStyle('#mserj_settings .fields { padding: 5px; }')
GM_addStyle('#mserj_settings .fields .row { clear: both; height: 30px; }')
GM_addStyle('#mserj_settings .fields .row .col1 { width: 300px; float: left; }')
GM_addStyle('#mserj_settings .fields .row .col2 { width: 90px; float: left; }')
GM_addStyle('#mserj_settings .mserj-color { max-width: 70px; max-height: 20px; }')
// GM_addStyle('#mserj_settings .fields .row { display: flex; margin-bottom: 10px; }')
GM_addStyle('#mserj_settings .fields .row .label { display: flex; align-items: center; }')
GM_addStyle('#mserj_settings .fields .row .label span { margin-right: 10px; }')
GM_addStyle('#mserj_settings .fields .row .label span:first-child { width: 100px; }')
// TorrServer icon
const getTorrServerIcon = (size = 25) =>
`<img src="data:image/png;base64,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" width="${size}px" height="${size}px" alt="TorrServer" />`
// Main script
;(() => {
let settings = {}
const loadSettings = () => {
settings = {
line_color: GM_getValue('line_color', '#ff0000'),
mark_repack: GM_getValue('mark_repack', false),
repack_color: GM_getValue('repack_color', '#ddffdd'),
mark_fitGirl: GM_getValue('mark_fitGirl', true),
fitGirl_color: GM_getValue('fitGirl_color', '#ddddff'),
mark_highQuality: GM_getValue('mark_highQuality', true),
highQuality_color: GM_getValue('highQuality_color', '#f4ddff'),
mark_hidden: GM_getValue('mark_hidden', true),
hidden_opacity: GM_getValue('hidden_opacity', 0.1),
hidden_words: GM_getValue('hidden_words', 'МР3,FLAC,flac,КПК,Футбол,UFC,книг,книги,MP3'),
showAddToTorrServerButton: GM_getValue('showAddToTorrServerButton', false),
torrServerIp: GM_getValue('torrServerIp', 'localhost'),
torrServerPort: GM_getValue('torrServerPort', 8090),
torrServerLogin: GM_getValue('torrServerLogin', ''),
torrServerPassword: GM_getValue('torrServerPassword', '')
}
}
const setStyles = () => {
GM_addStyle('.mserj-line { height: 3px; background-color: ' + settings.line_color + '; }')
GM_addStyle('tr.mserj-repack td { background-color: ' + settings.repack_color + '; }')
GM_addStyle('tr.mserj-fitGirl td { background-color: ' + settings.fitGirl_color + '; }')
GM_addStyle('tr.mserj-4K td { background-color: ' + settings.highQuality_color + '; }')
GM_addStyle(`tr.mserj-hidden { ${settings.hidden_opacity ? `opacity: ${settings.hidden_opacity}; display: table-row` : 'display: none'}; }`)
}
const toggleSettings = () => {
const $sett_wnd = $('#mserj_settings'),
x = parseInt(($(window).width() - $sett_wnd.width()) / 2),
y = parseInt(($(window).height() - $sett_wnd.height()) / 2)
$('#mserj_line_color').val(settings.line_color)
$('#mserj_mark_repack').attr('checked', !!settings.mark_repack)
$('#mserj_repack_color').val(settings.repack_color)
$('#mserj_mark_fitGirl').attr('checked', !!settings.mark_fitGirl)
$('#mserj_fitGirl_color').val(settings.fitGirl_color)
$('#mserj_mark_highQuality').attr('checked', !!settings.mark_highQuality)
$('#mserj_highQuality_color').val(settings.highQuality_color)
$('#mserj_mark_hidden').attr('checked', !!settings.mark_hidden)
$('#mserj_hidden_opacity').val(settings.hidden_opacity * 10)
$('#mserj_hidden_words').val(settings.hidden_words)
$('#mserj_showAddToTorrServerButton').attr('checked', !!settings.showAddToTorrServerButton)
$('#mserj_torrServerIp').val(settings.torrServerIp)
$('#mserj_torrServerPort').val(settings.torrServerPort)
$('#mserj_torrServerLogin').val(settings.torrServerLogin)
$('#mserj_torrServerPassword').val(settings.torrServerPassword)
$('#mserj_settings').css({ left: x, top: y }).toggle('fast')
}
// Adding settings button & modal
const addSettings = () => {
const $tab = $('<a href="javascript:;" class="menu_b"><div>Настройки</div></a>')
$tab.click(toggleSettings)
$('#menu').append($tab)
const $wnd = $(`
<div id="mserj_settings" style="display: none">
<div class="header">Настройка скрипта</div>
<div class="fields">
<div class="row">
<div class="col1">Цвет полоски популярности раздачи:</div>
<div class="col2"><input type="color" class="mserj-color" id="mserj_line_color" /></div>
</div>
<div class="row">
<div class="col1"><input type="checkbox" id="mserj_mark_repack">Выделять репаки</div>
<div class="col2"><input type="color" class="mserj-color" id="mserj_repack_color" /></div>
</div>
<div class="row">
<div class="col1"><input type="checkbox" id="mserj_mark_fitGirl">Выделять репаки от FitGirl</div>
<div class="col2"><input type="color" class="mserj-color" id="mserj_fitGirl_color" /></div>
</div>
<div class="row">
<div class="col1"><input type="checkbox" id="mserj_mark_highQuality">Выделять 4K раздачи</div>
<div class="col2"><input type="color" class="mserj-color" id="mserj_highQuality_color" /></div>
</div>
<div class="row">
<div class="col1"><input type="checkbox" id="mserj_mark_hidden">Скрывать не интересные раздачи</div>
<div class="col2"><input type="range" class="mserj-color" min="0" max="10" id="mserj_hidden_opacity" /></div>
</div>
<div class="row">
<div class="col1">Скрыть раздачи включающие (через запятую):</div>
<div class="col2"><input type="text" class="mserj-color" id="mserj_hidden_words" /></div>
</div>
<hr />
<div class="row">
<label class="label">
<input type="checkbox" id="mserj_showAddToTorrServerButton">
<span>Показывать кнопку "TorrServer"</span>
${getTorrServerIcon()}
</label>
</div>
<div class="row">
<label class="label">
<span>TorrServer IP</span>
<input type="text" id="mserj_torrServerIp">
</label>
</div>
<div class="row">
<label class="label">
<span>TorrServer Port</span>
<input type="text" id="mserj_torrServerPort">
</label>
</div>
<div class="row">
<label class="label">
<span>TorrServer Login</span>
<input type="text" id="mserj_torrServerLogin">
</label>
</div>
<div class="row">
<label class="label">
<span>TorrServer Password</span>
<input type="password" id="mserj_torrServerPassword">
</label>
</div>
<div class="row" style="margin-top: 10px; text-align: center"><input type="button" value="Сохранить настройки" id="mserj_save_settings" /></div>
</div>
</div>
`)
$('body').append($wnd)
$('#mserj_save_settings').live('click', () => {
GM_setValue('line_color', $('#mserj_line_color').val())
GM_setValue('mark_repack', $('#mserj_mark_repack').is(':checked'))
GM_setValue('repack_color', $('#mserj_repack_color').val())
GM_setValue('mark_fitGirl', $('#mserj_mark_fitGirl').is(':checked'))
GM_setValue('fitGirl_color', $('#mserj_fitGirl_color').val())
GM_setValue('mark_highQuality', $('#mserj_mark_highQuality').is(':checked'))
GM_setValue('highQuality_color', $('#mserj_highQuality_color').val())
GM_setValue('mark_hidden', $('#mserj_mark_hidden').is(':checked'))
GM_setValue('hidden_opacity', $('#mserj_hidden_opacity').val() * 0.1)
GM_setValue('hidden_words', $('#mserj_hidden_words').val())
GM_setValue('showAddToTorrServerButton', $('#mserj_showAddToTorrServerButton').is(':checked'))
GM_setValue('torrServerIp', $('#mserj_torrServerIp').val())
GM_setValue('torrServerPort', $('#mserj_torrServerPort').val())
GM_setValue('torrServerLogin', $('#mserj_torrServerLogin').val())
GM_setValue('torrServerPassword', $('#mserj_torrServerPassword').val())
location.reload()
})
}
/**
* TorrServer stuff
*/
function addToTorrServer(data) {
$.ajax({
type: 'POST',
url: `${settings.torrServerIp}:${settings.torrServerPort}/torrents`,
dataType: 'json',
data: JSON.stringify({ action: 'add', save_to_db: true, ...data }),
contentType: 'application/json',
beforeSend: function (xhr) {
if (settings.torrServerLogin && settings.torrServerPassword) {
xhr.setRequestHeader('Authorization', 'Basic ' + btoa(settings.torrServerLogin + ':' + settings.torrServerPassword))
}
},
success: ok => {
alert('Успешно добавлено в TorrServer')
},
error: response => {
if (response.status === 401) {
alert('Авторизация не удалась! Проверьте ( соединение / логин / пароль )')
} else {
alert('Не удалось отправить запрос на TorrServer')
}
}
})
}
// Mark/highlight lines
const markLines = () => {
const max_width = $(window).width() - 280 - 214
$('tr.gai, tr.tum').each(function () {
const cells = $(this).find('td'),
links_cell = cells.get(1),
peers_spans = $(cells.get().pop()).find('span'),
links = $(links_cell).find('a'),
magnetLink = links.get(1).href,
titleLink = links.length === 2 ? links.get(1) : links.get(2)
const count = (parseInt($.trim($(peers_spans.get(0)).text())) + parseInt($.trim($(peers_spans.get(1)).text()))) * 1.3
$(links_cell).append('<div class="mserj-line" style="width: ' + Math.min(max_width, parseInt(count / 1)) + 'px"></div>')
// Adding "add to torrServer" button to the page.
if (settings.showAddToTorrServerButton && magnetLink) {
// Create torrServer button
const id = titleLink.href.split('torrent/')[1].split('/')[0]
const torrServerButton = document.createElement('button')
torrServerButton.id = `add_to_torrserver-${id}`
torrServerButton.title = 'Добавить в TorrServer'
torrServerButton.style.fontSize = '0px'
torrServerButton.style.border = 'none'
torrServerButton.style.padding = '0px'
torrServerButton.style.cursor = 'pointer'
torrServerButton.style.marginRight = '5px'
torrServerButton.innerHTML = getTorrServerIcon(13)
links_cell.insertBefore(torrServerButton, titleLink)
$(`#add_to_torrserver-${id}`).bind('click', () => {
addToTorrServer({
link: magnetLink.split('&dn')[0]
})
})
}
if (settings.mark_repack && (titleLink.innerHTML.includes('RePack') || titleLink.innerHTML.includes('repack'))) {
$(this).addClass('mserj-repack')
}
if (settings.mark_fitGirl && (titleLink.innerHTML.includes('FitGirl') || titleLink.innerHTML.includes('fitgirl'))) {
$(this).addClass('mserj-fitGirl')
}
if (settings.mark_highQuality && (titleLink.innerHTML.includes(' 4K') || titleLink.innerHTML.includes('2160p'))) {
$(this).addClass('mserj-4K')
}
if (settings.mark_hidden && settings.hidden_words.split(',').some(word => titleLink.innerHTML.includes(word))) {
$(this).addClass('mserj-hidden')
}
})
}
/**
* Sorting functionality
*/
function sortByColumn(sortWhat, type, field, btnIndex) {
let dataClicked = sortWhat.sorti[btnIndex].press,
press = this
sortWhat = Object.assign({}, sortWhat)
if (type === 0) {
sortWhat.razd.sort(function (a, b) {
const an = a[field],
bn = b[field]
return an - bn
})
} else if (type === 1) {
sortWhat.razd.sort(function (a, b) {
const x = a[field].toLowerCase()
const y = b[field].toLowerCase()
if (x < y) return -1
if (x > y) return 1
return 0
})
}
if (dataClicked) sortWhat.razd.reverse()
for (var i = 0; i < sortWhat.razd.length; i++) {
let elDetach = $(sortWhat.razd[i].es),
childs = null
if (elDetach.next().next().is('.my_tr')) childs = [elDetach.next(), elDetach.next().next()]
elDetach.detach().appendTo(sortWhat.category)
if (childs != null) {
$(childs[1]).detach().insertAfter(elDetach)
$(childs[0]).detach().insertAfter(elDetach)
}
}
if (btnIndex === 3 || btnIndex === 4) {
press = $(sortWhat.sorti[btnIndex].el_img)
}
sortWhat.sorti.map(function (currArr, indexArr) {
if (indexArr !== btnIndex) {
currArr.press = false
if ($(currArr.el_img).is('img')) $(currArr.el_img).css('transform', 'scaleY(1)')
else $(currArr.el_img).find('img').css('transform', 'scaleY(1)')
}
})
if ($(press).is('img')) {
$(press).css('transform', 'scaleY(' + (dataClicked ? '1' : '-1') + ')')
} else {
$(press)
.find('img[width^=15]')
.css('transform', 'scaleY(' + (dataClicked ? '1' : '-1') + ')')
}
sortWhat.sorti[btnIndex].press = !sortWhat.sorti[btnIndex].press
}
// Header events
function setEventHeaderTitle(massiv) {
let titleSort = [],
titles = $(this)
.find('.backgr > td')
.each(function (indexEl, el) {
if (indexEl === 3 && el.textContent === 'Пиры') {
let img = $('<img>')
.attr({ src: 'https://raw.githubusercontent.com/AlekPet/Rutor-Preview-Ajax/master/assets/images/arrow_icon.gif', width: '15' })
.css({ position: 'relative', top: '3px', cursor: 'pointer' })
.attr({ title: 'Сортировать по Раздающим', id: '_Up' }),
img_clone = img.clone(false).attr({ title: 'Сортировать по Качающим', id: '_Down' })
$(el)
.css({ width: '90px' })
.append($('<span class="green">').text(' Р').css({ cursor: 'pointer' }).attr({ title: 'Сортировать по Раздающим', id: '_Up' }))
.append(img)
.append($('<span class="red">>').text('К').css({ cursor: 'pointer' }).attr({ title: 'Сортировать по Качающим', id: '_Down' }))
.append(img_clone)
titleSort.push(
{
el_img: img,
index: indexEl,
press: false
},
{
el_img: img_clone,
index: indexEl + 1,
press: false
}
)
} else {
let img = $('<img>')
.attr({ src: 'https://raw.githubusercontent.com/AlekPet/Rutor-Preview-Ajax/master/assets/images/arrow_icon.gif', width: '15' })
.css({ position: 'relative', top: $(el).children().first().is('img') ? '-10px' : '3px' })
$(el)
.css({ width: '80px', cursor: 'pointer' })
.attr('title', 'Сортировать по "' + ($(el).children().first().is('img') ? 'Добавлено' : $(el).text()) + '"')
.append(img)
titleSort.push({
el_img: el,
index: indexEl,
press: false
})
}
})
massiv.sorti = titleSort
// By date
titles.eq(0).click(function () {
sortByColumn.call(this, massiv, 0, 'date', 0)
})
// By name
titles.eq(1).click(function () {
sortByColumn.call(this, massiv, 1, 'name', 1)
})
// By size
titles.eq(2).click(function () {
sortByColumn.call(this, massiv, 0, 'size', 2)
})
// By Up/Down
titles
.eq(3)
.find('div, img')
.each(function (index, el) {
$(this).click(function () {
if (el.id === '_Up') {
sortByColumn.call(el, massiv, 0, 'up', 3)
} else {
sortByColumn.call(el, massiv, 0, 'down', 4)
}
})
})
}
function sorting() {
if (!location.href.includes('/torrent/')) {
// Ищим классы для получения данных
let massivT = [],
month = ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
razmeronosti = ['kB', 'MB', 'GB']
$('#index > table').each(function (idx) {
let objCat = { category: this, name: $(this).prev().text(), razd: [] }
$(this)
.find('.gai, .tum')
.each(function () {
const rowWithComments = this.children.length === 5
const dateCell = this.children[0]
const nameCell = this.children[1]
const sizeCell = this.children[rowWithComments ? 3 : 2]
const peersCell = this.children[rowWithComments ? 4 : 3]
const name = nameCell.children[2].textContent || nameCell.children[0].getAttribute('title')
const size = sizeCell.textContent
const colR = peersCell.children[0].textContent
const colU = peersCell.children[2].textContent
// Date
let dateT = dateCell.textContent
dateT = dateT.split(/\s+/)
$.each(month, function (idx, val) {
if (dateT[1] === val.substr(0, 3)) dateT[1] = idx
})
dateT = new Date(parseInt('20' + dateT[2]), dateT[1], dateT[0], 0, 0, 0)
// Sizes
let complSize
$.each(razmeronosti, function (idx, val) {
if (size.includes(val)) {
complSize = size.substr(0, size.indexOf(razmeronosti[idx])) * 1
if (idx === 1) {
complSize = complSize * 1000
} else if (idx === 2) {
complSize = complSize * 1000000
}
} else {
complSize = parseFloat(size)
}
})
objCat.razd.push({ es: this, date: dateT, name, size: complSize, up: colR, down: colU })
})
massivT.push(objCat)
setEventHeaderTitle.call(this, massivT[idx])
})
}
}
// settings
loadSettings()
setStyles()
addSettings()
markLines()
sorting()
})()