LemmyTools

A small suite of tools to make Lemmy easier.

  1. // ==UserScript==
  2. // @name LemmyTools
  3. // @namespace https://thesimplecorner.org/c/lemmytools
  4. // @version 0.2.1.0
  5. // @description A small suite of tools to make Lemmy easier.
  6. // @author howdy@thesimplecorner.org
  7. // @author @cwagner@lemmy.cwagner.me
  8. // @grant none
  9. // @include https://*
  10. // ==/UserScript==
  11.  
  12. (function () {
  13. "use strict";
  14. if (!isLemmySite()) { //not lemmy
  15. return;
  16. }
  17. else //is Lemmy Do!
  18. {
  19. // ------------ EDIT THIS VARIABLE ---------------------
  20. const homeInstance = "";
  21. // -----------------------------------------------------
  22. // homeInstance - Fixes remote Instance home link. Example: const homeInstance = "https://lemmy.world";
  23. /* NOTHING NEEDS CHANGED BELOW */
  24. const LogDebug = 0;
  25. const LogInformation = 1;
  26. const LogImportant = 2;
  27. // Choose a log level for the console:
  28. const logLevel = LogDebug;
  29. // const logLevel = LogInformation;
  30. // const logLevel = LogImportant;
  31. // ------------ END EDIT AREA --------------------------
  32. //Nothing below needs editing.
  33. // -------------- VERSION -------------------
  34. const ltVer = "0.2.1.0";
  35. const ltTestedVer = "0.19.1";
  36. //--------------------------------------------
  37.  
  38. /* Globals */
  39.  
  40. const mobile = isltMobile();
  41. let remoteCommunityArray = [];
  42. let prevSearchCommsQueries = [];
  43. prevSearchCommsQueries.push("");
  44. let currentUrl = document.location.href;
  45.  
  46. /**
  47. * @type {Map<string, {Text: string, Color: string, Url?: string}>}
  48. */
  49. let userMap;
  50.  
  51. function isHomeInstanceSet(i2c) {
  52. return i2c.length > 3;
  53. }
  54.  
  55. function ltLog(msg, level) {
  56. level = level || LogImportant;
  57. if (level < logLevel) return;
  58. console.log("[LemmyTools]", msg);
  59. }
  60.  
  61.  
  62. function notHomeAndInCommunity(url) {
  63. return (
  64. url.includes(settings.instance) === false &&
  65. (url.includes("/c/") ||
  66. url.includes("/post/") ||
  67. url.includes("/comment/") ||
  68. url.includes("/communities"))
  69. );
  70. }
  71.  
  72. function isltMobile() {
  73. if (/Android|iPhone/i.test(navigator.userAgent)) {
  74. ltLog("is mobile!");
  75. return true;
  76. } else {
  77. ltLog("is desktop!");
  78. return false;
  79. }
  80. }
  81.  
  82. //Remote Instance
  83. function update(comm, commName, subString) {
  84. try {
  85. if (comm) {
  86. const browsedComm = `<li><h5>${comm}</h5></li>
  87. <li>
  88. <a href='${homeInstance}/c/${commName}' target='_blank'><button type="button" class='ltbutton'>Browse/Sub on Home Instance</button></a>
  89. </li>`;
  90. remoteCommunityArray.push(browsedComm);
  91. }
  92. } catch {}
  93.  
  94. return remoteCommunityArray;
  95. }
  96.  
  97. //Searches communityArray for results in LemmyTools Sidebar.
  98. function searchComms(query, full) {
  99. ltLog(`commsearch evt searchinput${query}${commsAreaStatic}`, LogDebug);
  100. const url = window.location.href;
  101. query = query || "";
  102. query = query.toLowerCase();
  103. if ((query == "-f") && (prevSearchCommsQueries.length < 2)) {
  104. const commsCount = localStorage.getItem("commsCount");
  105. if (commsCount == null || commsCount == 0 || full.length < 1) {
  106. commsAreaStatic[0].innerHTML = `<hr /><b>Welcome to LemmyTools! Ver ${ltVer}!</b><br /><br />
  107. First time? Set your lemmy homeinstance in the option page and in the UserScript.<br />
  108. No communities? Login to lemmy and reload page.`;
  109. } else {
  110. commsAreaStatic[0].innerHTML = `Communities: ${commsCount} - <hr />${full}`;
  111. }
  112. } else {
  113. //This searches the pushed communityArray with the query, saves it to a array, removes any duplicate values, sorts and then pushes to the commupdate function.
  114. commsAreaStatic[0].innerHTML = full;
  115. //if searchInput query, store it for use on another page
  116. if (query.length > 2)
  117. {
  118. prevSearchCommsQueries.push(query);
  119. localStorage.setItem("prevSearchCommsQueries", prevSearchCommsQueries);
  120. }
  121. //ltLog(`Searching for:${query}`, LogDebug);
  122. const children = commsAreaStatic[0].getElementsByTagName("li");
  123. //ltLog(`Children found: ${children.length}`, LogDebug);
  124. let data = [""];
  125. let found;
  126. for (let i = 0; i < children.length; i++) {
  127. if (children[i].innerHTML.toLowerCase().indexOf(query) !== -1) {
  128. found = children[i].innerHTML + "<br />";
  129. //ltLog(`Found: ${found}`, LogDebug);
  130. data.push(found);
  131. }
  132. }
  133. const resultSet = [...new Set(data)];
  134. resultSet.sort();
  135. if (currentUrl.indexOf(query) !== -1)
  136. {
  137. commupdate(url, resultSet, query);
  138. }
  139. else
  140. {
  141. commupdate(url, resultSet, query);
  142. }
  143. }
  144. }
  145.  
  146. function commupdate(page, data, query) {
  147. ltLog("LTbar Update");
  148. let count = -1;
  149. data.forEach((_) => count++);
  150. data = data.join("");
  151. for (let i = 0; i < commsAreaSearch.length; i++)
  152. {
  153. commsAreaSearch[i].innerHTML = `Communities: ${count}<hr /> ${data}`;
  154. }
  155.  
  156. for (let i = 0; i < commsAreaStatic.length; i++)
  157. {
  158. commsAreaStatic[i].innerHTML = `Communities: ${count}<hr /> ${data}`;
  159. }
  160. if (query.length > 2)
  161. {
  162. searchInput.value = query;
  163. }
  164. }
  165. const optionsKey = "LemmyToolsOptions";
  166.  
  167. function getSettingsFromLocalStorage() {
  168. try {
  169. return JSON.parse(localStorage.getItem(optionsKey) || "{}");
  170. } catch (_) {
  171. return {};
  172. }
  173. }
  174.  
  175. /**
  176. * Gets all currently tagged users
  177. *
  178. * @return {Map<string, {Text: string, Color: string, Url: string}>} A Map of tagged users
  179. */
  180. function getUserCommentsFromLocalStorage() {
  181. try {
  182. const notes = localStorage.getItem(optionsKey + "-userNotes") || "[]";
  183. return new Map(JSON.parse(notes));
  184. } catch (e) {
  185. console.error(e);
  186. return new Map();
  187. }
  188. }
  189.  
  190. function saveUserCommentsToLocalStorage() {
  191. localStorage.setItem(
  192. optionsKey + "-userNotes",
  193. JSON.stringify(Array.from(userMap))
  194. );
  195. }
  196.  
  197. function options(open) {
  198. const odiv = document.getElementById("ltOptions");
  199. ltLog(`Options Functions: ${open}`);
  200. let userOptions = {};
  201. if (open === 1) {
  202. odiv.style.display = "block";
  203. } else if (open === 2) {
  204. //First run set defaults or pull from localstorage.
  205. const mobile = isltMobile();
  206. userOptions = Object.assign(
  207. {},
  208. {
  209. commposSide: mobile ? "top" : "top",
  210. reverseSide: mobile ? "left" : "right",
  211. instance: homeInstance || window.location.origin,
  212. commposVertical: 0,
  213. expandImages: true,
  214. hideSideBar: false,
  215. expandImagesize: mobile ? 100 : 50,
  216. hoverCheck: false,
  217. unblurNSFW: false,
  218. widthPixels: false,
  219. blockContent: false,
  220. blockFilters: "",
  221. expandImageSpeed: 0.5,
  222. showAllImages: false,
  223. hideShowAllImagesButton: false,
  224. linksInNewTab:false,
  225. },
  226. getSettingsFromLocalStorage()
  227. );
  228. localStorage.setItem(optionsKey, JSON.stringify(userOptions));
  229. userMap = getUserCommentsFromLocalStorage();
  230. } else if (open === 3) {
  231. //save button
  232. odiv.style.display = "none";
  233. localStorage.setItem("currentBlockCount", 0);
  234.  
  235. userOptions.commposSide =
  236. document.getElementById("option_commposSide").value;
  237. userOptions.instance = document.getElementById(
  238. "option_homeInstance"
  239. ).value;
  240. userOptions.commposVertical = parseInt(
  241. document.getElementById("option_commposVertical").value
  242. );
  243. userOptions.expandImages = document.getElementById(
  244. "option_expandImages"
  245. ).checked;
  246. userOptions.expandImagesize = parseInt(
  247. document.getElementById("option_expandImagesize").value,
  248. 10
  249. );
  250. userOptions.expandImageSpeed = parseFloat(
  251. document.getElementById("option_expandImageSpeed").value
  252. );
  253. userOptions.hideSideBar =
  254. document.getElementById("option_hideSideBar").checked;
  255. userOptions.hoverCheck =
  256. document.getElementById("option_hoverCheck").checked;
  257. userOptions.unblurNSFW =
  258. document.getElementById("option_unblurNSFW").checked;
  259. userOptions.blockContent =
  260. document.getElementById("option_blockContent").checked;
  261. userOptions.blockFilters =
  262. document.getElementById("option_blockFilters").value.split(",");
  263. userOptions.linksInNewTab = document.getElementById(
  264. "option_linksInNewTab"
  265. ).checked;
  266. userOptions.widthPixels =
  267. document.getElementById("option_widthPixels").checked;
  268. userOptions.showAllImages = document.getElementById(
  269. "option_showAllImages"
  270. ).checked;
  271. userOptions.hideShowAllImagesButton = document.getElementById(
  272. "option_hideShowAllImagesButton"
  273. ).checked;
  274.  
  275. if (userOptions.commposVertical > 85) {
  276. userOptions.commposVertical = 85;
  277. } else if (userOptions.commposVertical <= -1) {
  278. userOptions.commposVertical = 0;
  279. }
  280.  
  281. if (userOptions.expandImageSpeed > 1) {
  282. userOptions.expandImageSpeed = 1;
  283. } else if (userOptions.expandImageSpeed < 0) {
  284. userOptions.expandImageSpeed = 0;
  285. }
  286.  
  287. if (userOptions.commposSide === "left") {
  288. userOptions.reverseSide = "right";
  289. } else {
  290. userOptions.reverseSide = "left";
  291. }
  292.  
  293. localStorage.setItem(optionsKey, JSON.stringify(userOptions));
  294. location.reload(true);
  295. }
  296.  
  297. userOptions = getSettingsFromLocalStorage();
  298. ltLog(`Settings ${JSON.stringify(userOptions)}`);
  299. return userOptions;
  300. }
  301.  
  302. //Used for offset removal
  303. function removeClassByWildcard(divClass) {
  304. // If the class ends with a "*", then it matches all classes that start with the given class name.
  305. if (divClass.endsWith("*")) {
  306. divClass = divClass.replace("*", "");
  307. // Get all elements with the given class name.
  308. const elements = document.getElementsByTagName("div");
  309. const re = new RegExp("(^|s)" + divClass + "(s|$)");
  310. const result = [];
  311. let className = "";
  312.  
  313. for (let i = 0; i < elements.length; i++) {
  314. if (re.test(elements[i].className)) {
  315. console.log("Match: " + elements[i]);
  316. result.push(elements[i]);
  317. for (let y = 0; y < elements[i].classList.length; y++) {
  318. if (elements[i].classList[y].indexOf(divClass) !== -1) {
  319. className = elements[i].classList[y];
  320. console.log(className);
  321. }
  322. }
  323. }
  324. }
  325. // Remove the class from all elements.
  326. for (let i = 0; i < result.length; i++) {
  327. result[i].classList.remove(className);
  328. }
  329. } else {
  330. // Otherwise, the class must match exactly.
  331. const elements = document.querySelectorAll("[class=" + divClass + "]");
  332.  
  333. // Remove the class from all elements.
  334. for (let i = 0; i < elements.length; i++) {
  335. elements[i].classList.remove(divClass);
  336. }
  337. }
  338. }
  339.  
  340. const colors = new Map([
  341. ["transparent", "inherit"],
  342. ["tomato", "white"],
  343. ["darkorange", "white"],
  344. ["gold", "black"],
  345. ["yellowgreen", "white"],
  346. ["lightseagreen", "white"],
  347. ["teal", "white"],
  348. ["indianred", "black"],
  349. ["lightcoral", "black"],
  350. ["lightpink", "black"],
  351. ["mistyrose", "black"],
  352. ["purple", "white"],
  353. ["crimson", "white"],
  354. ["teal", "white"],
  355. ["darkslategray", "white"],
  356. ]);
  357.  
  358. function addNotesToLinks(userNodes) {
  359. const userNameRegex = /\/u\/(.+)$/;
  360. for (const node of userNodes) {
  361. let userName;
  362. try {
  363. userName = node.href.match(userNameRegex)[1];
  364. } catch (error) {
  365. console.error(error, node, node.href);
  366. }
  367. let alreadyHadSpan = false;
  368. let span;
  369. const existing = node.getElementsByClassName("userNote");
  370. if (existing.length === 1) {
  371. alreadyHadSpan = true;
  372. span = existing[0];
  373. } else span = document.createElement("span");
  374.  
  375. span.innerHTML = "🏷";
  376. if (userMap.has(userName)) {
  377. span.innerHTML = userMap.get(userName).Text;
  378. span.style.backgroundColor = userMap.get(userName).Color;
  379. span.style.color = colors.get(userMap.get(userName).Color);
  380. }
  381. span.classList.add("userNote", "badge");
  382. span.dataset.user = userName;
  383. if (!alreadyHadSpan) {
  384. span.addEventListener("click", tagClick);
  385. node.appendChild(span);
  386. }
  387. node.classList.add("hasNote");
  388. }
  389. }
  390.  
  391. function tagUsers() {
  392. setInterval(() => {
  393. const userNodes = document.querySelectorAll(
  394. ".person-listing:not(.hasNote)"
  395. );
  396. addNotesToLinks(userNodes);
  397. }, 500);
  398. }
  399.  
  400. function tagClick(clickEvent) {
  401. clickEvent.preventDefault();
  402. const userName = clickEvent.currentTarget.dataset.user;
  403. const dialog = document.createElement("dialog");
  404. let colorOptions = "";
  405. colors.forEach(
  406. (val, key) =>
  407. (colorOptions += `<option style="color: ${val}; background-color: ${key}" value="${key}">${key}</option>`)
  408. );
  409. dialog.classList.add("userTagger");
  410. dialog.addEventListener("click", (e) => {
  411. if (e.target === dialog) {
  412. closeDialog(dialog);
  413. }
  414. });
  415. dialog.innerHTML = `<div style="width: 350px;">
  416. <strong>${userName}</strong>
  417. <form id="userTag">
  418. <div>
  419. <label for="userTagText">Text</label>
  420. <input type="text" id="userTagText" value="">
  421. </div>
  422. <div>
  423. <label for="userTagColor">Color</label>
  424. <select id="userTagColor">
  425. ${colorOptions}
  426. </select>
  427. </div>
  428. <div>
  429. <button type="submit">✓ save tag</button>
  430. <button formmethod="dialog" cancel</button>
  431. </div>
  432. </form>
  433. </div>`;
  434.  
  435. const userTagText = dialog.querySelector("#userTagText");
  436. const userTagColor = dialog.querySelector("#userTagColor");
  437. if (userMap.has(userName)) {
  438. userTagText.value = userMap.get(userName).Text;
  439. userTagColor.value = userMap.get(userName).Color;
  440. }
  441. const form = dialog.querySelector("#userTag");
  442. form.addEventListener("submit", (e) => {
  443. e.preventDefault();
  444. if (e.submitter.formMethod === "dialog") {
  445. closeDialog(dialog);
  446. return;
  447. }
  448. if (userTagText.value.length) {
  449. if (!userMap.has(userName))
  450. userMap.set(userName, { Text: "", Color: "" });
  451. userMap.get(userName).Text = userTagText.value;
  452. userMap.get(userName).Color = userTagColor.value;
  453. } else {
  454. userMap.delete(userName);
  455. }
  456. addNotesToLinks(document.querySelectorAll(`[href="/u/${userName}"]`));
  457. saveUserCommentsToLocalStorage();
  458. closeDialog(dialog);
  459. });
  460. document.body.appendChild(dialog);
  461. dialog.showModal();
  462. }
  463. function closeDialog(dialog) {
  464. dialog.close();
  465. dialog.remove();
  466. }
  467. function ready(fn) {
  468. if (document.readyState !== "loading") {
  469. fn();
  470. } else {
  471. document.addEventListener("DOMContentLoaded", fn);
  472. }
  473. }
  474.  
  475. //Expand all images on page
  476. function allImages(show) {
  477. let clickableImages = document.getElementsByClassName(
  478. "thumbnail rounded overflow-hidden d-inline-block position-relative p-0 border-0 bg-transparent"
  479. );
  480.  
  481. //ltLog(clickableImages.length, LogDebug);
  482. //ltLog(clickableImages, LogDebug);
  483. if (show) {
  484. for (let i = 0; i < clickableImages.length; i++) {
  485. try {
  486. console.log(clickableImages[i]);
  487.  
  488. clickableImages[i].click();
  489. } catch {}
  490. }
  491. } else {
  492. //lazy - need to figure out way to handle on dom iter
  493. location.reload(true);
  494. // for (let i = 0; i < clickableImages.length; i++) {
  495. // try {
  496. // clickableImages[i].click();
  497. // clickableImages[i].click();
  498. // } catch {}
  499. // }
  500. }
  501. }
  502.  
  503.  
  504. function linksInNewTab() {
  505. const links = document.getElementsByTagName("a");
  506. for (let i = 0; i < links.length; i++) {
  507. links[i].setAttribute("target", "_blank");
  508. links[i].setAttribute("rel", "noreferrer");
  509. }
  510. }
  511. function blockContent(filters) {
  512. const blockFilters = filters;
  513. const posts = document.getElementsByClassName("post-listing");
  514. const comments = document.getElementsByClassName("comment");
  515. var blockedCount = 0;
  516. for (let y = 0; y < blockFilters.length; y++) {
  517. if (blockFilters[y].length >= 1)
  518. {
  519. blockFilters[y] = addslashes(blockFilters[y]);
  520. for (let i = 0; i < posts.length; i++) {
  521. if (posts[i].innerHTML.toLowerCase().indexOf(blockFilters[y].toLowerCase()) !== -1) {
  522. blockedCount++
  523. posts[i].setAttribute("style", "display: none !important;");
  524. //posts[i].innerHTML = "<div class='card small'>Post blocked due to filter: " + blockFilters[y] + "</div>"
  525. }
  526. }
  527. for (let x = 0; x < comments.length; x++) {
  528. if (comments[x].innerHTML.toLowerCase().indexOf(blockFilters[y].toLowerCase()) !== -1) {
  529. blockedCount++
  530. comments[x].setAttribute("style", "display: none !important;");
  531. //comments[x].innerHTML = "<div class='card small'>Post blocked due to filter: " + blockFilters[y] + "</div>"
  532. }
  533. }
  534. }
  535. }
  536. localStorage.setItem("currentBlockCount", blockedCount);
  537. ltLog("content blocking has blocked: " + blockedCount + " posts.", 2)
  538. }
  539. function addslashes( str ) {
  540. return (str + '').replace(/[\\"']/g, '\\$&').replace(/\u0000/g, '\\0');
  541. }
  542.  
  543. // LemmyTools
  544.  
  545. //check if first run or load saved settings
  546. let settings = options(2);
  547.  
  548.  
  549. function checkedIfTrue(val) {
  550. return val ? "checked" : "";
  551. }
  552.  
  553. /* Script */
  554. let url = document.location.href;
  555. window.onload = () => {
  556. if (settings.showAllImages) allImages(true); // initial expansion
  557. const body = document.querySelector("body");
  558. const observer = new MutationObserver((_) => {
  559. if (url !== document.location.href) {
  560. url = document.location.href;
  561. if (settings.showAllImages) {
  562. // todo there has to be a better way to wait for the content to be loaded …
  563. var imagesTimer = setTimeout(allImages, 5000);
  564. clearTimeout(imagesTimer);
  565. //allImages(true);
  566. }
  567. }
  568. });
  569. observer.observe(body, { childList: true, subtree: true });
  570. };
  571. let count = 0;
  572. let eIcheck = checkedIfTrue(settings.expandImages);
  573. let hSBcheck = checkedIfTrue(settings.hideSideBar);
  574. let hoverCheck = checkedIfTrue(settings.hoverCheck);
  575. let unblurCheck = checkedIfTrue(settings.unblurNSFW);
  576. let blockContentCheck = checkedIfTrue(settings.blockContent);
  577. let widthPixelCheck = checkedIfTrue(settings.widthPixels);
  578. let widthPercentCheck = checkedIfTrue(!settings.widthPixels);
  579. let showAllImagesCheck = checkedIfTrue(settings.showAllImages);
  580. let linksCheck = checkedIfTrue(settings.linksInNewTab);
  581. let hideShowAllImagesButtonCheck = checkedIfTrue(
  582. settings.hideShowAllImagesButton
  583. );
  584.  
  585. //Option Divs
  586. //Is HomeInstance Manually Set For WorkAround
  587.  
  588. var hIAlertString = isHomeInstanceSet(homeInstance)
  589. ? ""
  590. : "<b style='color: red;'>Your Home Instance has not been manually set in the UserScript.</b><br />";
  591.  
  592. //Create Lemmy Tools Elements ----------------------------------------
  593.  
  594. const odiv = document.createElement("div");
  595. odiv.setAttribute("id", "ltOptions");
  596. odiv.setAttribute("style", "display: none;")
  597. odiv.classList.add("card", "border-secondary", "ltoptions");
  598. odiv.innerHTML = `
  599. <h4>LemmyTools ${ltVer} Options - <button class='pointer btn btn-secondary text-bg-primary' id='LTsaveoptions'>Save&Close</button></h4>
  600. </hr>
  601. <div class='table-responsive'>
  602. <table class='table'>
  603. <thead class='pointer'>
  604. <tr>
  605. <th>Option:</th>
  606. <th>Value:</th>
  607. </thead>
  608. </tr>
  609. <tbody>
  610. <tr>
  611. <td><b>LemmyTools Settings: </b></td>
  612. <td></td>
  613. </tr>
  614. <tr>
  615. <td><b>HomeInstance URL</b><br /> Make sure to edit the homeInstance variable of<br /> the UserScript for the
  616. remote instance Home button fix. (Temporary workaround).<br />(Ex:
  617. https://yourinstance.lemmy)<br />${hIAlertString}</td>
  618. <td><textarea id='option_homeInstance'>${settings.instance}</textarea></td>
  619. </tr>
  620. <tr>
  621. <td><b>LemmyTools bar window side</b><br /> - default: right</td>
  622. <td><select id="option_commposSide">
  623. <option value='${settings.commposSide}'>${settings.commposSide}</option>
  624. <option value='top'>top</option>
  625. <option value='right'>right</option>
  626. <option value='left'>left</option>
  627. </select></td>
  628. </tr>
  629. <tr>
  630. <td><b>LemmyTools bar vertical position </b><br />% from top [0-85] - default: 0</td>
  631. <td><textarea id='option_commposVertical'>${settings.commposVertical}</textarea></td>
  632. </tr>
  633. <tr>
  634. <td><b>Keep LemmyTools Bar Open</b><br />Works best for widescreen desktops.</td>
  635. <td><input type='checkbox' id='option_hoverCheck' ${hoverCheck} /></td>
  636. </tr>
  637. <tr>
  638. <td><br /><br /></td>
  639. <td></td>
  640. </tr>
  641. <tr>
  642. <td><b>Site Style and Behaviors:</b></td>
  643. <td></td>
  644. </tr>
  645. <tr>
  646. <td><b>Hide Lemmy Sidebars</b><br /> (Trending, ServerInfo, Communities)<br />
  647. </td>
  648. <td><input type='checkbox' id='option_hideSideBar' ${hSBcheck} /></td>
  649. </tr>
  650. <tr>
  651. <td><b>Expandable Images</b><br />Acts as an auto-expander and adds the ability to manually<br /> expand
  652. images by clicking and dragging.<br />Doubleclick to open full image.</td>
  653. <td><input type='checkbox' id='option_expandImages' ${eIcheck} /></td>
  654. </tr>
  655. <tr>
  656. <td><b>Auto Expand Size</b><br />Size of post image after opening a image post.<br /> Desktop Default: 50 /
  657. Mobile: 100</td>
  658. <td><textarea id='option_expandImagesize'>${settings.expandImagesize}</textarea>
  659. <br /> <label for="option_widthPixels">Pixels</label> <input type='radio' id='option_widthPixels' name="widthScaler" ${widthPixelCheck}/>
  660. <label for="option_widthPercent">Percent</label> <input type='radio' id='option_widthPercent' name="widthScaler" ${widthPercentCheck}/>
  661. </td>
  662. </tr>
  663. <tr>
  664. <td><b>Expand Image Speed</b><br />Speed multiplier for click&drag expanding images. If your images seem to
  665. expand<br /> too fast or slow, increase or decrease this value. [Values 0 to 1.0]<br /> Default: 0.50 </td>
  666. <td><textarea id='option_expandImageSpeed'>${settings.expandImageSpeed}</textarea></td>
  667. </tr>
  668. <tr>
  669. <td><b>Automatically open image posts</b><br /></td>
  670. <td><input type='checkbox' id='option_showAllImages'${showAllImagesCheck}/></td>
  671. </tr>
  672. <tr>
  673. <td><b>Hide the Show All Images button (when Auto open image posts is disabled)</b><br /></td>
  674. <td><input type='checkbox' id='option_hideShowAllImagesButton'${hideShowAllImagesButtonCheck}/></td>
  675. </tr>
  676. <tr>
  677. <td><b>Auto unblur NSFW images</b><br /></td>
  678. <td><input type='checkbox' id='option_unblurNSFW' ${unblurCheck} /></td>
  679. </tr>
  680. <tr>
  681. <td><b>Open ALL links in new tab.</b><br /></td>
  682. <td><input type='checkbox' id='option_linksInNewTab' ${linksCheck} /></td>
  683. </tr>
  684. <tr>
  685. <td><b>Content Blocking: (Blocks posts and comments matching your desired filters).</b><br /></td>
  686. <td><input type='checkbox' id='option_blockContent' ${blockContentCheck} /></td>
  687. </tr>
  688. <tr>
  689. <td>Add filters seperated by commas. Ex: filter,filter two,filter3 <br />
  690. <textarea style="width:100%; "id='option_blockFilters'>${settings.blockFilters}</textarea></td>
  691. <td>Posts/Comments blocked from filters on this page:<br />${localStorage.getItem("currentBlockCount")}</td>
  692. </tr>
  693. <tr>
  694. <td></td>
  695. <td></td>
  696. </tr>
  697. </tbody>
  698. </table>
  699. </div>
  700. <p> Tested on Lemmy Version: ${ltTestedVer} on Firefox. <br />
  701.  
  702. <hr /><Get it here: <a
  703. href='https://github.com/howdy-tsc/LemmyTools'>GitHub</a> or <a
  704. href='https://greasyfork.org/en/scripts/469169-lemmytools'>GreasyFork</a><br />Please submit issues to the GitHub
  705. for feature requests and problems: <a href='https://github.com/howdy-tsc/LemmyTools/issues'>GitHub LemmyTools
  706. Issues</a><br /></p>
  707.  
  708. <h5>Attributes/Credit: </h5>
  709. <li><b>@cwagner@lemmy.cwagner.me</b> - For coding, code cleanup, and mentoring.</li>
  710. <li><b>Charles Machalow - csm10495</b> - Coding contribution(s).</li>
  711. <li><b>jimmyhiggs337</b> - Coding contribution(s).</li>
  712. `;
  713.  
  714. //Adjust clickable area for mobile (add brandingString if desktop)
  715. let brandingString = "";
  716. if (mobile !== true) {
  717. brandingString =
  718. "<span id='brandingText' style='vertical-align: super !important; writing-mode: vertical-lr; text-orientation: mixed;'>LemmyTools</span>";
  719. }
  720.  
  721. //Comm divs
  722.  
  723.  
  724. const div = document.createElement("div");
  725. div.setAttribute("id", "myDiv");
  726. div.classList.add("ltcommsbar");
  727.  
  728. const touchdiv = document.createElement("div");
  729. touchdiv.setAttribute("id", "touchdiv");
  730.  
  731. const idiv = document.createElement("div");
  732. idiv.setAttribute("id", "searchdiv");
  733. idiv.classList.add("ltmenu", "border-secondary", "card");
  734. // todo on input
  735.  
  736. idiv.innerHTML = `
  737. <div id='ltActiveSearchDiv' class='ltActiveSearchDiv'>
  738. <header id='ltBarHeader' class='card-header'>
  739. <h6><a href=${settings.instance}>Home</a> - <a href='https://lemmyverse.net/communities' target='_new'>Find
  740. Subs</a> - <img id="lemmyLogo" width=22 height=22 class='targetImg'
  741. src='data:image/webp;base64,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' />
  742. <img id="lemmyOptionsIcon" width=22 height=22 class='targetImg' alt"LemmyTools Options" title="LemmyTools Options"
  743. src="data:image/png;base64,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AAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAACsbzvFwqlfL3AABRQAABgCKWSCSktrbW3xubXC5nSxCy2Wysvr5eNz17AABQ9OL+RwBAEYrFYlJaWirLli2T6urqOebQ/84/MpzneZJMJuXgwYPy5JNPyvHjx6Wurk7Ky8v9zxg//Z7680ejj505c0aeeuqpOf/2b/92mzk035RdpvTo4wCA4sUdJwAIiQ998/ytEqZeLycObpEv/d7aMrN7S0lp2dqqqqplrWdatv/BB3/l8YqqaY+L5Mx/g28AGgZ6kzk5ePi4PPPMs7J9+3apr6+T9ZetlRuuv9p+nv18LyFevNx8zN+7yuUyksv2iWRTI76fSRF9nhxqPiHNzYdl5owZsnBhk1RVxMzX5D8nHovLU09vlocefSrZ2dGmX3rMlJdMedSULyxZ/8aTnheTK2//oDQt3yCJ0rKBrz2fT93ZfyYAABfxKg0AjhlD0JhmyiJTtNVgtikz9Jip09fHE1LTdvJk9Qs/+VzdMz/49My+7rZq81hlRe3Mrpvf+WenL73uztXZbNoc8pkfFS8tl6O7npDnfvzP8sLj3/cfELniNb8mr/6lv7aBQkwY6Os8LSf2PCGdJ3aYAzGpbJgvM1fcIBU1+uMHzzmeKJM9T39Lnr7n12TPYZEVF18r6255jyy78i2SSZnAYr5fLF4iP7/3b+WRe/7c/yor6cVibQ1zVjRPn7+2O5fNyFVv/khm3sqrk7GEdGdS0mFCSLv5vBZTTply3JQjphw0ZZ8pZ71whBIAcAevyADggHOEjnmmrDJlpSlL/f0GU2r8UmWCR4X5WNHVeqrsxP7NpScPbZH9Lz4gB1/8H8mkk+ahfH/bm3/9X2T9G34zl0kPvvabr5V0Mifbn/i2/Ogf7vCPisxdfrXc8EufkrkXXW8DiH7egZeflM0Pf0X27t4s8VhMmuYtl0tveIcsXX+zmKwwIFEisuXhb8n3/27w+22866/lqts/IGUVZZLNakgReeSrfyZP3POn/mfkaWtMadV0qW6cK7lcVpZfcbs0Nq2Q2Usul8a5qzJlFfE+87N6zffoMQ93my/pNEVDSYcp2oqiQUS7cm03RZNS/gKMQCABgMLhFRgACkAHeX/4Hn9nOG3dWGvKalOWm7LQlLl+0TEcpuqep6HAVMKlq+2knDm6S04ceFF2bbpXDpjgMVSp+by1r/1dWX3NnTJv1UYbAJQXM+Gjr08Ob/+5bP7pF2TH41+zxxdd+jq5/PW/LfMvulFKyirtMQ0MWx75pjzytT+UtuN77bHK+jly3Z0fk3Wv/d/DAoie14n9L8vmBz4vz933D/bYvItukstf99uy8OJbpKyy1n7O7md/LE9//2/l4Ev32885l/Wv/4A5n+tNgKmT8uoGaZyzQipqqiRjfq5egyG0dURbRZpNOWSKnuw2v2ggeQXCCAAEi1ddAAjQWVo6tBuVtnBo0fBxqSlrTNEw8graIpE1Ne+ezhZpP3lAju97wYSD/5Tm7Tp8YlB5VbWsfdV7pWnFBpk2b7XUzVhoAkWV/6i2fPTK0d1Py3M//kfZ+eS3/KMiN/7Sp01Y+C1JlJUNVO41gGx77DvyxHc/ISf2Pm2PNc6/WK564wfk0lvePSyA6Pll0mkTMH4g3/v0W/yjIvNX3yAb3/anJoTcbD+np7NVWo7slJMHX5IDLz8oOx77iv+Z57Ziw12yyoQp/Z1qp801QaTWhqoRQaSfHt1qio4vedEUDSI7TdEwMuwrCCIAEAxebQFgiv2+CR2jvNhqElhsyjJTrjXlVaZcbsrZmW8SM0Ur263H98q+F/5HXn7oC3Jsz7P+J+RVT5svy698i8xZdqXtutQwZ5mUlJeIDv3oH8itAeDo7mflmR98xgSLfMuHWnXt3bLute+VhWuvMyHCP2iMJ4CoeInIyQM75Pn/+aw8d9/f+0fFfO/3yY13/42UVFTZc9Dv29PRbT73RTmye5Mc379Ztj70Rf+zz23uyuvkijd+UGYuulQqa6fblhW9RmcJIv20ZeQRUx4y5WVTtIVEu24N+OQd+evDWyQATA1eXQFgiryim5W+4ubs+A0dx7HRFB0kcYsp52VbFTIZSSd7pOP0Ydn9zPflka982H80Tyvgy656mzQtv1oWrLnJBI/lkijxbDelkcOzsyYxPPGdv5Sn7v0bySR1KEW+69Wlt7xHFl78aimvqh0269R4A4ieb6qvR47u2iTP/ujvZdfT99rj0+Ysldf8ny/K7KVXDHTv6g8iyd60HNv7nBx4+WcSMwdOHd4mu568R1K9Orzj7KpqyuXVv/5f0rTiaimvbrTfV7/n0PM/iz2mfNeU+0zRlhHtvtVnyoB8GNEnDgAwWXhVBYApMKKrlS6GoQtqaGvHnab8sikaQsZEZ4PKZtLSemK/7Hn2v+X5H/yVtLe2+o/mW0VqZq+WZetulfWv+x1pmL3YVsD7x3qMpN/r1KEtcv8X3i9HdmhjgMicpevlqjf/kQkht9quWyO/diCAfOev5MS+fIvLuQKIsmNMkkk5vP0x+eaf3ewfFWlauk5u/OV/si00iZLSYUFBv0aXDtFWjJMHt8n2J+6xY1uO7XteOk/mx56cTdyUW3/ry7Jo7c1SWTfDfK+4XYdkDEFEB6rrwJkvmKIXpMs/NoDuWQAweXhFBYBJ0r96+JBWD32N1YOXmPJeU95pSp0pY6bh4/SRnbLzqW/Lvme+I0f2PO8/klc3a5mp0F8uc1ZeK0vXv0HqZy3xHxmdDR+Ht8pP/t+75Ojezf5RkTd98Nuy+LJbpayyetQuTBpAtj9+rzz5vU/KsV1P2GPnCyBKB5u3nWyWx+75mLz008/7R0Uufc175fq3/4UJCtPO3mXKXD0NI6eb95jw83U5uf8FSfZ1yfG9z0tP+7BeU8NUVopc847/K8uuuF1qppuclzVPwdhaMfRMNF190pQfmtJnnr2snoc+iZ+iNQQAJoXeMAIATILuNR+T+3W48yCdNvevTPmEKTeaMuZlxfNdiLKm8r1DHvvGH8mWn98jbScGWwD0xXvRpa+RS275P3LZre+VxWa7vKrhrBVt2yKSTtnw8dg3/j85vOMp+/2Vrs+x+rq3S92MprOHAaO0ok6SvV1yaMvP7H5F3SyZu2KjzF6y7pytDLrmR3n1NDn07Jekz29X6Gx+Rhaue7NU1s4y4ebsb0X6fSvM7zVv1XWy6tq7ZNHFt9jB9Cf2/lyyqZ5RW3lSKTFB7VnZ98J90tN5Rqobm0zQaRjZC200evGaTHmzKbo6e7M5st98zOoD+tw+fs/HzRYA4EKM/k4FABizUabU1cENHzHlblMWmFJiyvmZV2S9459O5rtIaXer/VselSPbfirZzGBNW2e1uuzW99lpcqsbZtuuRrpq+Lno9+3pbJNN3/uUPPndv/SPijTMXGC7Q+mYkfLq2nMGEG3N2PLI1+QH/6ANOWNrAemX6uu2M2594+M3+UdEVm74Rbn89R+UWUvWS0lZ+TlDjLIhKpsz55iWXhMsDm59RH76uTukOz+EZVTVM5bK7MWXySxTVm54m8xYsMo2Z5yte9oQ+htpV6yfmqIh8hlTBtAlCwAmjhYQALgAOtZjRKvHW035F1PeaIreTR/T66wGhGRvt5zYt1l2PPkt2f7EN+XlR74iZ5q32ICjtMr7hvd/Ta58wwdl9tLLpaJmmsTj+u3PXRnWbKIBRqe8/fE/3T3QEpAw5dbf+JIJMjdIeVV9vp/ROejMVqcObrPnp8baAqISJSVSXtkg7S2HzPfQGXFFTh/eJqWV9TJ9wRqprK0/Z/jpp12gYuZ31umE62YukrWv/i0bxE4dfFG620/6nzUo2X1GWpq3yYn9m01oaTXBbruUltfaWbNicXNhzn7emujKTNE+ba81ZaYpOn2vLnoo197xMVpDAGCCCCAAMEEjBpprS8efmaJjPdaZoquTn5fe1deVw5O9uiDgY/Lig1+U537wCTlx4GXJpHr8zxJZvO71ct3b/8KuoVEzrcmEAW1UOf9deBs+0hnborL5gX+Vo3vyM1jpV7/+g9/yWz4ax/KtbEg6eWDLhAKI/p5eLCFlVQ1y+tCL0tWaH8PRdvgJWXDJ7VLVMN8PU2OXKC2RssoaqW6YK8uveossuPgWSfZ0yJmjmhOG02t5Yv9zcvClBySVTkrdjEVSVT/bhqrzBC/NaTpzmY7j0fVZdJYsnTGLEAIAE0QAAYBx0uChlU+fVlBfb8pHTdEZrmaZMiYaDvq6O+1sTwe3PCTbH/+mbHv0y3bMdL9lpmJ97R0fl4uuv1tmLV4vFTWNtjJ/vgq/0s/LpFK2pWHrz78uz/7o7/xHzPe9+q2y7rb32ZYAGz7G8P20C9ZEA4jyTILRVpvTzdvk+N78TFqptEh14zw7eL6qvnFMrSAD9GeakigttS0o1fVN0mTOZ+HFr5F4WZWc3D98wH4/PR4rqZTerhbz9THbIpIoTZzvd9DxOytM0YUiTWKTfaa0699BfyGMAMDYEEAAYBxGtHroCua/YsoHTNFB5hpGzqt/qtlkT7ccfPlBeemhL8nj3/wTOX1I18XL07v5umq4jpOYs+xqU0GfbyrJpg48hop+P525qu3kYdnxxLfkiW8PVo51BfH1t73fjr3QaWrH+j3zAWSrCSD5AS/jDSAadBIl5fbHdbQclo5TB+1hXcFdQ0PD7BX22oznd7TM52tw0SBS0zBNahoXSGPTSpl30U0m1MyVY7uf8j+xX8wce0J2PfVtSaeStiWk0vwuiUR8LL/HDFOuMkVDyGlTDpliEUIAYGwIIAAwFqZm+qE1A60earkp7zfld00599y3I6R6uqT9dLMdlP3ktz8me5//kf9I3sqNd8nFN/2KLL/yTaYivVDiJWX5loFxVsz1a47u3iRPfOuPpa87v5jfzMWXy/rX/qYsvuw2KSmvNke0+WNsLrQFpJ+2upSW10hX+0npOJ0PIVUNc6W6fo6UV0+3LSUTYs5BB5fHEyVSO32mNMxZZT7ON7/zFVIzY9GQIDJ4stotK5PJmuAyx++SNaa3xVJTdNV6/RvQvmQHTLFtN4QQADg/AggAnIftcjU40Fxr7DoW4C9M+VVTdKyH1mjPWZO3YyBM6etqlUPbfy5Pf/8z8tjX/0g6zxz1P8OkmMvfLJfc8h47W5NW7Msrq/OzS40zeCgNC20nDsi+F34iuzblVyFXKze+TS57zW+YyrbeyB97+FAX3ALiKymvMMFgoXSdOSaHt+UXQjy683FJlFVKw+xlUlXXOK7vNxoNIhpkaqfNklmL10nNtPmSSvbJ6f3PD7mc+qQk5NSB5yTZ12sDSKK0yjxPMYklxtSYtdCUV5uirSBa7CrqhBAAODcCCACcw4guV1or3WjK50x5lR7wnbMmr7NYZdJp6ek4Lc07npCffvYtcmR3fiYoFS+rlSWX3iJXvvEDNiA0Ni2SeKLsgirhGnb2v/SgbLr3r6SvO79q+uwV18mKq98q81ZdPb6xFj4NIKcOmgDyxIUFEE0AZZXl0tfTJd3tp01Q2mMPd545bseCzFx82YRC12j099RrUVk304abChMyKmpnSVdHi6T7tFVIPyEhpw9tlpcf+nc7WL92xiKpbmiSmP7C51djyltM0SSp40LspMCEEAA4uwm2cwNA8RslfOjd7q+borNcjYlWfntN8Nj73I/kgS+8T374ydulvS3lP+bJzIWXyhWve59s+MU/set76DiGTFpDi/2UCdPVx4/uedZ81HX08iumr7zydllw0Y3nXbMjCHoOTcuutt3M6mboBGIi7Sf3ypFdm6T1WP6cJ0v/tZyxYI1cf9dH5Ya3/7msMkFvQM5ccN++538kP/m3/yNHdj5pngd/1cTz06TyT6b8lik6Lsga8fcDAPDRAgIAZ6F3sX0aPnR17P8wZVyzXOkd/r3P3ydPfOfP5dDWh+zqdv3mr9wgr3nPv8qqa+60lXBdMfyC7/ybwNNxulk23/9Zeea7fznw7a54w+/I2le9207hO1G2C9ZktID4Sit0LY8lEi+rlv2bf2yPnTm6VXImnTTMWZlfm2SS6XlW1jZKvbaG1EyXlkPPSDo5PGhoYDy07RHze10h1Q1zxjM9sE5EoF3ydDaBNj1AKwgAvBItIAAwiiF3r3WlCJ1e9/Om6HoQY5IPHy2y48lvy5P3/pWcGjLDlVp1zV3yql/9vzJ9wcUSL9ExzZNDx28f3PIz2bP5/oGwM2PRepm5aJ3UTp9zwS0rk0nPpbphusxadJnMWa4923RmsC7Z/cL9rxiYP5n05zbMXiobf/GP5O6/fkmuv/tT/iOD2o7vlfu/8FvSvONxO3bEzs41Nu8zRVPHYt2hFQQAXokAAgAjDKk0ajLQvjr/YMqYbsdrRVWnv+1pPyNbH/6yPPPDz0hL83b/UfNNGirlqjd/RK68/UMyY/5aO2PTZI13UB2nj5tK82NyYs/g1LOrTdjRgdiT83POOdxlQqbNWyVrrv8lf0/kzOGX5JAJUR2nD5uwMDUVeB1ori0bdbMWyepr75Sb3vW3/Y/4H0VOH3pJHvnaH0vz9sck1dtrW4DG6H+Zos1ntm8ZIQQAhiOAAMAQQyqL2u3qTaZ80pTpemAsOluOy85NP5Jn7/tneeGBz8mZI4Orcq+/7bfljR96yISP35cZCy6WmF3NfPLoeJMDLz0gR3blVztX17/jE3Zge3Vjk50Z6kLYKzPJ+UPHglTWzpSlV9wuN7/7n/2jIkf2PCv7XrjP/NCs/b2mgmYb/da10xfY9VZuepcu1Dg0LHhydOdj8tR/f9quUp/s6RlrCNHPussUbQnR6cbs39XvE0QAwCKAAIBvxJ3q20zRCuQ8u3cO/RXkrtZjsuvpe2XT9z8jj9/zJ9LSvC3/gHHlmz5sx2DMXrLedjvSweaT2fKhtenutlOy+9nvy8n9z9lDleXm5FddIw2zl+QXHLxAU5QDzLl5UjdjvsxffZ3U1uv6fiIdJ/fLlke+LF1tJ+z+lIYQ8711vZCVG94qN/6vz/iPKH0wLgc23yfP/vhfxhtCykzRrnt/YkqlHtBfgdYQACCAAIA1omKog4k/YspFdu8ctPKqlVhdz2P3sz+Up+79azm85Wf+oyLlJgXoiuarr317vtUjEbd3/SezZ1H+HLJyaNuj0rz95/5RkSve+jdSP3uprTBPxs+bqqqzDQHm3ajGhIAr3/Jn/lGRw+b32f30f0tHy1HJXmjzzTnkQ4hnW0J0dqzr3/kJ/xHDzuObkL3PfFee/8lnxxtCNHj8sikfNGXg/ZYQAiDqCCAAMNwaUz5gynV27xyGho99L/yPPPIfvy7tJ3VR7LzL3/B78trf+KqsueGXZPr8NRIvSUxo/Y3z0XPo7WqVLQ//u13cT5WXiMxfc6NU1c2a1Gl3vSlqB9F8UV5ZLwvW3iQz56/0j4rc//n3ysEtD0uqr9sOsJ8q+RAiUjtjgVx03Tvkmjv6g5CGBQ0hJbJ707fzLSE7HjchpHesA9NrTPk9U95u9wAABBAAGHJHWme50rvVOvbjnEaGj/v/37ult9d/0Lj45vfIpbf8uqzc8BaZPm+ZnelqKsKHnkcm1SfH9jwju5/5vjmnfNpY9+aPSf3MxZIojdvzdJ45x3hJzK5YvvrGX/cP5r384Oelu+34lP8e9vubolMiX3zTu+zaLCXl1eaYPnHmutqWkHvlqe99Wpp3PmFCkV34fCx0AoO/MeVKu2fQCgIgygggACJLZ1gaMTD4d035BVPOe5u/P3zoGh8PmPDR38gQN6+qa2/6Fbn6zR+Sxqb8nXxdWHDK+i8Zfd1t8uIDujh7XlWZyLLL3yDlVQ2T3PoxtbQVpKSsUpZe/kZZd+tv2HClDrz0Uzm+93np7Wofz3S4E6bPbf2shXLpzb8ql7/+A+acKvIhxIa7mBx88cfy6Nc/Kkd3bcp/wdjoWCKd79dOz6sIIQCiigACIJI0fHz4nmGVal1oUOeCzY+CPgetGOuA8z3P/kAe+vyvSf862iVlVbLqul+SDW/9Y7vQnRfz8nfVp4ieR6qvR04efFl2bvquf1Tkols/ZCrQSyVRVjKpP3/Kq8vmB8QSCRvc1puK//T5F/sPiGx+4LPS2dI8EEqmmoYhG0Je/Wty+Rs/7B/VK5BvxtLZsV782edNLhlXwtOxRe8xxc6MpaZqmmEAcBkBBEAkjajIzjRF121YYvfOQb+u88xx2fnUd+XJ7/6l9PnpQ7/diqvfKhvf9jFTcV1iPs8cmeK6pbYG9HS2yMsPfck/IlIR10UO75SS8qop6fI15TSEmOBWP2uxLDfXs6wuv3K7toJo0Ort7AikFURpCKnzW0KuufPP/aODWk/sl2N7nh1vCPlDUzSI6DTPABBJBBAAkfShb/obeX9vyuDI53PQ2Y+O7tkk25/89rAB55e8+j2y8Rf/ZDB8TDH9EToQuqV5h2x99Mv5Y/EyWfWa37ItCAkdczIVAcj84Kn+7fS8PXOhV264U+YuvsQ/KvLEtz4q+174sQkhbfb3D4KGuLqZ+TEhN4xYMV1bQX725Q+Zv4dnJJtOjeecdIS7HQ+irXAAEDUEEACRM6Tvvb4G6krnt5pSoQfORe+8d7WekSM7N8nhLT/1j4qse+1vyRW3/76d8jaI8KE0CHW1HZedT9/rHxEpLy+Xi667WxKl5/1VnKfXsXHuSmlaeZ2U1cy2x04d3iE7nvqODV262nxQNBDVz1pg13AZSls+jmx/RJ67758kk06OJ4CsNuVuU1gpHUAkEUAARNk0U3ShuPOP+zCvlj3tLfLSg1+S7Y9/wz8qdpDyutveJw1zltuuQ0HQim6yJymtx3bL3sc/a4+VVDTI6uv/V36tEVM7L4ahBfF4XJasf4MsW/9a/4jIrse/LicPvSw9HV3jqfBPisam5UO6Yg0uBLLt51+R00e2mxCSHU/3MF0fZPAXA4AIIYAAiJQhd5u1meA3TdGRzuesyupA4e7WU7LjiXvkme//jbQd32WPX/Xm/08uefWvmYrpChs+gqr0ayW37dQB2bf5J9LenrLH9GeXVtTY1o+prpgH9cahv9OM+WtkxsJLpKTcLiZuh4Af2vqInDz40lgXA5wUOsyjuqFJVl97l1x711+aI8PHfbxw/7/JiQObJZ0cc0tItSm6NsgG3aEVBECUEEAARMZAJS//QVc5/w27dQ75ymRODm17RJ7+709IZ+txe1x7AC265NV2gcFYPBZoi4MuyJfsaZdjewangZ29aK00rbzebk/luWjXqADr/XYmr7krr5XlV93hHxHZ+sh/yNHdm8w1GPM6HJNCV7FvnLNclq5/vX+knycv/fRz8vLDX5ae9lPjCUY6GP2tptivIIQAiAoCCIDo8ew0qL9iyiy7fx59usr4o1+WM8f3+0dErrrj47bblY5FCHq2qXQyJ72dZ6TrdH4QfKKkxI5PmLtyo+jUv1Nrqr//cNryoN3K1lx/t6zcOLiY+JFdTwXeCqLPs/48Xajwits/5B9V+eDw3I/+TlqP75V0ynzi2C6Tnr12w7rN7gFARBBAAETCiLvLl5ry7vzmOeRy0tPZKoe2Piq7Nw0O9l7/uvfLsitul6r6WZO60N9YaAVYu18173xSWo7ts8emL9kg8y66SSprdMHtYANCEMoqKmX+RTfIokt1roC83U99Vfa/eL8JY/2rsARDQ0hpeY2svfFdcvEt7/WPDjrw8oPScfqwxMcejHSar3eYYr/CrgsSZHMaABQAAQRA1Cw0RfvzVNm9s9BxFqlkjxzZ+YTc+2ldHD2vrr5M1tzwLpm58BJJlE7RVLfnoOd15ugu2fPs9/wjInOXXiHzVl9v160IQtARR3+vssoyc80vtgs9qrTJHYd3PCmnDm2x+0HR5zteUmLHplx+2/ukqk6XkBn0+D1/Ii1Hdo33ubjKlDfphk7LS/wAUOwIIACiZp0p+VrsefTqIn8P/4e/l7fyxt+VulmLTSU0HnjXK6U/U9ecyKa67X7D7KUyY8FFUt2gE3oFoxBtLBkTOBqbVg0bf3Fk5+Oy86l7zDUJ9onQEKJd3abNXSVLLn+TJMpq/Efyju15RtqOHxhP97Blpgy0yLE2CIBiRwABUPRst5a8+aZoP578lEpnoQPPkz3dcurQVtnRP+WuOajdrlZuvFNKy6sLEj609aPj9HE5vn+znDy41R4rqZwm8dLK4FpixjjF02TT36+iptoO+l9+tS7dItLXeUr2vfSwtBzZWZgQYp6Qy279DTtL11CPfu0P5MSBl+xkAWOkF1VnYxvoYzbkbxYAig4BBEDRG3JHeaCry7noneuu1mN24Hm/yqoaueZtH7MDouOJ4LteKa37H939lOx94X/8IyIL194k81ffUJBAFDTNGHUzFsmqa+7yj4icOrBZNt37lyaE7JBsJtgBOZ5JGLMWX2b+Jtb6RwbZyQDGl9XmmPKe/CatIACKGwEEQFRoq4euuTDX7p2FVvL7unvsatvbHv0veyxRrov8/bJMm7fa9v8vFG0ByWZSku7rsPuNc5bI7CXrTKV8XkECUdA0ZFXU1NoK/+LLXmeP6bXY8dT3TPm2ZFK9gTfQaCtIOtnj7w06dXibtJ04bp+zMSozZaMpK0wJ+LcAgGARQAAUtSGzX11jynX5zbOLJUTaTx+SPc//yD+Sr+ivuu5uEz5MHbFQFX1TJe1ubZXTJhid2PecPRQrqTbnWzaeSu4F88x/8UK+c5jrrwsCrr1pcBKzlAkhPa1HNQ0UpOq+9sZfloWX5gNRvy2P/Jcc2fmknaZ5HBpMuTu/ybogAIoXAQRAVGj4uDK/OTqtvyZ7krb1Y8v//LM9VlY9Q5ZcdqvMXHipvdtdKHpuOvXuoe2P+UfEVHpvk+nz1gTb/Urr+OOrVE8qOyNWVa3MWrJeFq59lX/Uk8PbHpHOliOSTQffF23uqmvsZABDnT64WY4f2GzOqcU+d2Okq/Nr/zL9CABFiwACIAqaTNG1P845L5HmizPHdsvBLQ9Lqv9YvERKK+ukpKzcP1IYWoftaDksbScGF0NsWrJOGuYsC2z63QFjr1BPCR1eoWuwrLnpV/0jOTlx8GU58NIDkurrCnRxQlVaUS5L1r1eFl42fIX0Q1sfsX9L48itemWXmKJdBQsY8wBgahFAABStIV1Y9Fb56vzm2emsRd1tx6V5+yP+EZE5S9fLjAWXFnyMhVZiPVPR9iSfNmYvvkQqTSW8pKwAL+MFvhYauErKqmTeqmtlwZob/KMiL9z3aek8cyTwxSGzaZH5q6+VeSu1l9+gw1t+KqcOvTye2bCUfrauU6NjQuiGBaAoFeCdCwACd60pw/vIjCKdEkl2t0tv+xG7X1peKk1LL5e5K3VscGGl+lLSZSrXnUe32/14RaPtEhb87FdeoGNOziYW96Sqfo6svObugQaZk8175MjOp6SvqzXwVpCqulqpqGn09wZlMinp6+7z98ZEr64OKKm1ewBQhAggAIqd1grXmHLOLi1aqW49vk+adz0trSeb7bFZy26SmUuukMraOrtfSCcPvixHdj8vKf+GuE5HW1I+fAG8IOgg9FjhJgIboMFLp0NefOmtMn/NTQPjc15+8PPSYYJa0C1W2ipTXj1Npi+4zD+Sd3zfC9K84wl/b0w0T+lq/atMoRsWgKJEAAFQfEztc8hCbjeZMju/eXbaTebEgRdk3wuDs1/NW7VR5q7YGHiXntHs3/wTOXbgRX9PZMmlr5VpTSuDPzetHo+zT9FUicVjUjNtnjStvE4SFfmV4A9te1RO7N8sPR1nAm2p0edhweobZNW1g2uUqH3PfV+2Pf6N8QxE7/daU2zy/X26YQEoMgQQAEVnRHVNu1/Nym+enc0rWovM5oefz1iwRmbMv0iqG6cVfPyHiiVKJZ7INz3MmjtfGmYvkfKaKifOrZByuawkSsslMWSSgG0//6q0nzoUaE7S56Fu1mwbCkfS85vA86TB2XbDGn92AQC3EUAAFB1dRXrIStI69e45+1Dp3emO08fk2L4XbFcnFSutkVi89BVpplAyfe2SSXba7coZF4tnAknBzs2R1KOnEYslZMVVvyiLL7pW4vF8VT2X6jL/BD44xp6PBqKRWo7slOP7nh/1sXO42hRdFwQAig4BBEAx04HnM/KbZ6cBRKdMPbDlIf+IyJLLXiezl10Z/BS3I2hXsrYTB+TI7mek+0x+cLy2hngT6NMzKczPjZfmuzu5wIvFpLFpuTTOXyuldfPtsX0vPWgXbOzp7JxI16cJy2VEZi+5XK696y/8I3nNOx6XF+7/nMlE5o9pfOez1pTCzv8MAFOAAAKgmF1uSnV+8xxMpTCd6pVUX4/drTD7sxaukdrpcwtxI32AVp5z2bTsee4HcuzAFv+ozojVma/MFoAOQi/oSoSj8GJxWbr+dpmzSJd6ydvz3I+k5ciOQGfD0qekfvYimWOC61Dpnlbp6Tjl743LOlNeObUWAIQcAQRAMVtvynkDiK3op3sl29tq9xuXXyNlVQ2BT+U6Gm0B6Wo9KsmeLv+I2C5H1Q1NBQlHjvRIe4Xp8y+ykwb0T4XbfmKnpPu6Ap8yOG6yWSw+fJowbaXRGbti8fh4x3NcYgrdsAAUHQIIgKIyYuE2vSVeld88O+2q03piv5w5vtfuZ02l386i5URt27NdrrTyqhobYzJn2RV2JfCCdQ/Ta+OYRGlCSitqpaQiX18/seNJ6Ww5In3dSb2EgdF5DGoam2T9Gz7oH9GWkax0tR23A+N1exwuNsWOX2JBQgDFhAACoFhptXOZKeddteLork1yZM9z/p5I08pr8y0MTtT5TBhKJwe6XDUuuU3KqxvtnfZC0Ivq6eB8x2hr0PT5F8v0BfluWDqX2aFtj0lL8/ZgZ8My51E/a4ksXadrCQ46dXCr7Nx0r2RSfeMZl6Ljl9wZcAMAk4QAAqAYaRVvnin1du88ju97Vk417/T3zBeu3CgNc5YVpIvTSLrAXrLrlAkh+fEpifL8Hf6ChSNTe/ZGdDFygV6P2UuvkKalOmwi7/DOx6T1xL7xVPgvmJ5HaUWJCbBzhq0i2NN+TDb/+G8lm0nn/zrHTv+OWZAQQFEhgAAoRlrFW2HKmF7j4iXlkigts9szZlRLTeMcW4ksdAuI/vx0sls6Tu6VTLLdHstm9N5+YU8s5+hIkIrqSqmbsUDqG/ONBiVllRIrQFORBtdsNjPsKnleXKoaF/l747LAFAaiAygqBBAAxUgDyBJTzlv71Lvj2XSf7eakquZssHf4C936oeeVMed0Yv9Lsv/lhwbGe1TVz3nFIOegje8GfnD0GiVKq6SsQWdfNuGtt9UEtvzzGjiTHl+xSL0+qeNvjmkyZUwteQAQFgQQAMVIa3l65/i881jlsjnp6zwpyY5mux8rqbR3qwtOA0iqT7Y/8Q1JJvOrs6sVV71VKutmFTAgeeLF3OuCNcBW8vNvbe0Htkiqp70gLVk6NXDdTP0THJTTVhEdpT6+85ltil0RHQCKBQEEQLGaY8o5k4TOdHXm2G45tu8l6evt84+6Radv7TdnToU0zFkipeVlhekeZn6mjkmJJ/Ld1dyVb2XQZ/RU827pOHVsAg0PE6ctMbXT5sn17/yUf0T/1jJyZNujcnT305Lq6x3P+Uw35fxr2QBAiBBAABQjrd7NMuXsAcR8ht6N3vX0vXL80Hb/oHZ76jOVxQL3vxpqSEW1csaVNgBgdBrKmpZvkMWX3uofETmw5UE5tP3RQNcD0T+fitp6mbP0CqmqHgxr+lf1+Lc+Ln09beM5Hx3/UZnfBIDiwDsZgGKld47P+xqXTvb4A7vzVl3zdqmbsWhgzEWh5dJpf0ukvH5BYQNIgK0IE6EV/9oZTTJ97nL/iP/8+uN7gqQtHLFYXLz48NairtP78klp7HT8R0V+EwCKAwEEQDHSqrLOV3v+1zhboc/XrBuqRWYtvFgq66bZymzBmYpqsvuUv6OzdVXma7aF4tebc4U8h/PQNT8SpeUDTQY2sBXgfDVj2Ms1ImzESzRLjOt8dCFN1/u8AcC4EEAAFKsaU8ZV06tfdIOUlFcHunDd2dgTj3mS7Dhm9y0XKv7mHFwehK7V/Zg5v7JphV2/T58q7crX2d7hH+k37udQL7Z7Kz8CwAUggAAoRlrLO2e/+f5qYCbZJTm/C1ZJ9cz8HXMHZDM56elokZbDgyu0p/q6XnFHPWgmfjhzjUZlLk8sUSqldQvzu7YpIvhrpi1opSbMbnzbx/wjPvOHpzNkDfwBjg0LEQIoKgQQAMVqDHeNc5LsOi3ZlKnYG3Z9DQdaGbR+n+ztlObtj8nJE2f8oyJzlm2QeEmBZsDyuboI4VBePCGJ8vzMtdl077AxPkHR56i8qkFWXv1WKRvSYNR+dJcJlqckkxrXdXRgXmgAmDwEEADFagyvb54ku1tMAOm0ewVuXBigGSjV1y17n/+hfyRfA110yS1SVlFX0PPUFhD912VDW2kyuhhhOvgplvU5SpQmpHb6AmmYv94/ap7XrMi+zT8xIeT0eLr6uX3BAWCcCCAAIkkriLrSeE/7advdyR7Lpp1JIZ5JISXlOowlb+7ipVLTOEfiCfOyXchTtGNAwtMjKN17wjy/hVoNXdcESZsyfE30B7/0O9Lb2ZKf/wAAIoiXPwDR4+kYi7ScOrRVmvdtG6jPl1XV2/75rrSEDKXjU3LZbOE7QGkAiYcngGR6UpIzz7VLykv1MvL2CyC6eAUEEDnanyWT6pPtT3xD+rpb8weNlRvukOqGOW5MwTtCadUMW/nH+GQy+VYI9ziYcgEgIAQQAJGl3Zz0PzVrmsi0puVSWlHhZAtIaZWuq+haAHE/EGnnJ13x3j2ESQDRRQABEGGDlcCyhjX56VEdobNNZdI9/p5ISXmdDUwu0dml3KzcD9LGrGxBl7XPSdfJF/3toWgBARBdBBAAMMpq55p/Harg57KS6jrt7xgurI44ku2r5n5FWhcELIT8TFiVctOvfXXYm62O4bcD+WkEARBRBBAA0ZWzHXTspl2E0KFKvi6gl+o66e8ZTtbzQ3IXv0B96vTHlpRVysKLXyVzVl03MPC8u1uk7cQ+6evuZVgPgEgigACIHlvpy0m6t9P8m6+cxhPl5l+XWkBykuxs9ndcFZbas04d7G8GTH9ueWW9lFXU5nd825+4R9pPHRKHev0BQGAIIAAiSVsYdBFCF6e8snfFzT+pdscDSC5jr6NrdN2NdHJw/ExvT6ckewq3Foh2ARt5nV584LN2LRC6YQGIIgIIgMhK9+oUvA5WoDMiqd4uaR2cIdgumugaOwDdsQCn9fyKmmkybd4a/4jI6SO75cT+zc5V9l2a9AAAgkQAARBZqZ62fI3VIdpLp7erTY7te0H6I4e2iNROX5gfQ+DU6erJuHX9NA9Nn3eRLLjoBv+IyPH9L8jh7T+nsQEAHEEAARA9ps6sK6H3dZ7I7+i/jtzJ13HwPe2nZMfjX/OPmPDR2CTLrniTJErLHavuu0fzZHl1hdQ0zvGPiCRKyk0p8/cAAIVGAAEQKdqakE4m5XTzdmk+uH+gb37cVFBdWGfDno4Xs9O3qpg5pZnzV0rdzIUSi8f785IT9No51oBk2XNy8cQAABYBBECkaMZI9rbLtse+6h/JW33tO6Wsqt69MenmhLXlw0XZdK+5Xml/DwCAsSGAAIgk7YLVb1qNKU0rpKSsvPA3zkc0wnixEomXVvl7GIv8JSx8a1Y//Zvq6z5DWAMAHwEEQDQN6W5V0dAksXjCjSrriACkK2bHSyr8PYyFvYSO5A89l3giIVe/5Y+lbtby/EEAiDgCCIBIGlo/LSmf7m85yOUA4sCYGeeZBBKLl9hZuWYtWecfzIvFYlxCAJFEAAEQefHyOvtxROND4Wil1K+Z2i5YZY52wcqkzEVz5qoN45n/XHqDK62okdLy6mGBo/10s/R29RFCAEQOAQRA5CXKaty6m28q9XaRP8OLl/gzYrlXS9VzdHEldMtcLpeuWH419OywlLvnmR9Iy5EdwnqEAKKGAAIg8mwAcaS6ms9BOcmmevz9mHixUrvtHvdC0VBun53ISz/7V+k4fZgWEACRQwABEHnxsmrn7pan+zr69/ziIlfPKy8Mb3A6+QEARA0BBED0mHpzLju44EdMB3m7dBs6m5N0b6u/465cNmX+dW3hlH46CgQA4CICCIDIyZn/MslOf8+8EMbcugs98vxclcv2ODsGhPABAO4igACIFq2Zmkpzqre/i5ODzPmle474O5gItzuHAUC0EUAARJAO8u7yt92jLSDpLocDUki42jkMAKKOAAIgcrTbUDbpbgCxLSAhyB/5aWUd7YLlecLwbgBwEwEEQCSl+9r9LRflRId3uy6X8UOIoxgHAgBuIoAAiKR08oy/5RadjEvX/ghDAMkPtHB3tAXjQADATQQQANFjB3kf9XccYsJHKpmTns4z4QggjmOBcQBwEwEEQCRluv0Nh8TMK3LXmaNyZNcm/4hINpORTKrP33OL7X3lbDOD59wbXLqvm1YZADAIIACix/Mk0+tvO0S7X3W1HZe9z/3APyJSVlkn9bOX2UHVrlVe82PQ3R0D4tb18mTmonVSNW2xvw8A0UUAARApOmmTtij0ZvwDRlZHUzvCi8WlpKLG3xOZNnuhLL70tfY4t8/DS8PlqmvulLnLr/SPAEB0EUAARIZWApPdXXLq8Dbp8Y+p0vJa86950EF1jbOkdvpc2wKCMPOksWmJ1M+iBQQACCAAIsMzr3jdHadk68+/4h8RSeid6Y13SElZpXNLWmjkiMVizp1XWLgW2fR59DyGxgMAAQRA5PS3Jui/c5deIg1zlks8kXCzi5N2vXKUXi5Xx4Docxyv9ndcphfRtaQEAFOMAAIggvwan/kQLykzlVU3Xwr1LLljXtxON2+X9lMnbescAEQFL3kAIs2Ll5p/3ezjFDMJJBYngBSzlx/5sp12WadgBoCo4CUPQGRpN51YvMTfc4/eFY/FEv4exisMrQon9z0jvZ0t5mT9AwAQAQQQABEWk1jC4QASN+cXdzeA2HUIXV0HxIRLT2cYCIGYw+N8AGAqEEAARJe2gCS0C5ajFdVYqXgOt4DkB6G72X3NipX7GwAAlxBAAESWDj6P2TEgbvJiJaa4fXfc7TYGd1dpB4AoI4AAiC4TQOLOBxDGgEwc1w4AXEQAARBhMfEcHmPhegBxu/VDx4BU+dsAAJcQQABElnbB8nQWLEdr0l7MnJ/DXbBcHoSua03GTIADALiHAAIgujSAxFzugpVghiQAQNEhgACILrsOiMNdnLy4DSGYKIdn6AKACCOAAIgunQXLTsPrFq+/T5i2ftACMkHmKnqENwBwEQEEQGR55iVQB3rrljNyOclm0nbTjlFxPYC4ug6IeUq9BOuAAICLCCAAoktbQOKlLsUPIye5bCq/qat562hqhzkZP+xJmWsX4y0OAFzEqzOAiDEV/MyQCr5rlVRtUeg/P0yMn9lyOd7iAMBFvDoDiBbbxanP33GPiUdOn98ruNgFa6AFhGl4AcBFBBAA0dF/ZzydzG+4yFToM+kQBZB8bd8tOv7DFJdnOAOAKCOAAIgOU1fO2Qp+r3/APXp+WZcD0gguNoAMZiK3x88AQFQRQABEh62Pahcnl8dY6CD0MLWAuMrtNV4AIMoIIAAiw88fkss42sKgJ5jTQfLuttCEhc4epgs5AgDcQwABEDFawXe7i1PW4S5ir+RiHywAgMsIIAAix/VZsHKZdn/PfU6OAenHKvIA4CQCCIBIsRX8dI+/5yDtgpXu9nfCwNEEYtd4YQwIALiIAAIgWnQMiMvT3JoAkglT/nB1pqmcnhdvcQDgIl6dAURMTrIpd7s4aXtCmNYhdLYPlraAxFmIEABcRAABEDmZtMtjLHJuj6sYQbu0uUhnwYrRBQsAnEQAARA5uay/4SjHT28YT/9ztRfWQDjSjyFKdQBQ5AggAKIlpyuN+9su0vPzN8Mgk0mL+d9puWxGcpmMv1dY2Zwb5wEAhUQAARAp9l6444O8wxRAzpw4KC1Hdvh7bsrlskNaQwqrtKxaEqUV/h4ARBMBBEDkpB2+Ca3V5DAFkKN7npY9z/3Q33OYCwNrzCms3Pg2WXnNO/wDABBNBBAAkeN0Bd9UlB3v0RQ+2bS5rIW/qpqBZixYJdPmrvKPAEA0EUAAREy4xli4z9ER6I7SAfsxVmgHEHEEEADRknO/i5MDnYWKSlZbQLIO9btzddowAAgIAQRA5NACEjHa98mFMSD9yB8AIo4AAiBy3A4gtH9MNjsLlkMBRNdOAYAoI4AAiBy3B6H7HzFpcrmMDSHO8HjrBRBtvAoCiBbPczqAkD+mgA0fXFkAcAUBBEBkaD00k+rz99xjO+bQO2fyZc0Tr8VRriySCABBIYAAiATt9dLT0SanDm/zjyhT9XNobIAdK51xeJXEkMrlUm51wRrJpQHyABAAAgiASIiZV7v204dk22Nf849ob6yYxOIJf6+wNCB1tZ6RlmN7/COYNDbZUckHAFcQQABEh6cV/cFF4Oqmz5OVG95mQ0ih66cakE4f3io7N33XP2LqzNmsZF1av0KZC5XNhGut9my2T7IOt4C41AoHAEEggACIrMYZTdLYtGJYKCkk7SaUTSf9PZFZiy6Vpeve4O8Vng6jmD5/jazceKd/JCxcH1hDAAEQLQQQAJEVi8dNKfH3HKArZA9ZJbth5nxpnLvK3ys8bUSoaZwt0+et9o+ERKbPpCd3x9bYroC8GwOIEF7yAETGyPvgWvFzuftLoqTUFLfu3scS+fMKFfsUu/s8t59ulo6WM0OzJwAUNQIIgMjyXK/xmTqzc/nInpO7lfnR6Om6fM77X3xADm/7OesTAogMXu4ARJbrAYQ74pNDu465PA3v4S0PyKnDW3m+AUQGAQRAZAy9B56v6zle43OwRqrX0HN+UPcIetIOBxAVLynztwCg+BFAAETGyGqzx8jfcQtZ9LDyXbDcDiAAECW8+wKIjFeOAnC7Ou1iF7FXXsOQCNm4FQAoZgQQANHl/O38MLY3uMf2wCKAAIAzCCAAIkmr9jHPjQUIMbXyAYQuWADgCgIIADhIA5KuU+KkMDbM0AACAM4ggACIJFvBZxB6JGj2yObcXQkdAKKGd18AEeburXwC0uSxjR+0gACAM3h3AxBNpobv8kKENoA4G5DcvW5nwxgQAHAHAQRAdLk6xqKfowEpfPFD0QQCAK4ggACIpnwTg7PsqTncQhM2zMILAO4ggACIpHz+cLuCT/yYRCQQAHAGAQRANJnavefwOiA2INECMnnsBc1vAgAKiwACAI7KOVxjDtubRyaTFsahA4AbCCAAIkmnuPXirIQeFa2njsmZY3skR1csACg4AgiAaPJMAHG4i1MsYUrMBCTqyxOi0+5m00l/T+T0kZ2y++nvmQeydMUCgAIjgACIjGH1Tq3Yh6Fy72Jl2QQ3l988siZj1M9cIis33ukfEcmkU5JO9fh7AIBCIoAAiIyhecOuMu7wSuN2fLyuU0ILyLhpI0dl/XSZPu8i/4hmJs8U3vIAwAW8GgOIJq2Mulwh1e5hzII1YTq8p6S03N8DALiEAAIgohys3A9p7fDipfauPSbG9rA724BzWpUAoKAIIAAiSpchdKyCP+R0vJgGEHdfokPx5kF+AwAnEUAARJOp3LtcwXd5lXY9N+cnMM7l88eoV5FgAgAFRQABEEl2FfSYw5X8eIn5x9GXaHPZwvHmEYKgBAARRAABEBnD44bjAwFiCafHgDg/jIJWDgBwFgEEQGQw9jhC9MkOTUsNAEQLr80AIkm7OMW0m5OjYrYFxNUORJ7LvdeGoQsWALiHAAIgohyvQWv4cLgLlrPZaBhPEv4WAMAdBBAAkTG8Ok+HrGKnzzdvcgDgHl6bAUTG0Mih3Zvc7eJkzk+7YMXcfYkOTXzjXQ4AnMNLM4DIGNYC4vo6IHp+rr5EmwsZL/W3XeaZKxiG8wSAiCGAAIiMUHW6cnoMiCdeSAZXxBgEAgDOIYAAiChTuXd5kHdMAwgv0RfKc3eiMwCILN7dAETG0LhhuzhpJd9ZnjlHdwNSOHgSL632twEAriCAAIiMYV2wbOXe3Qp+LFZiApK7/YfCkI30HL14pb8HAHAFAQRAZDhfZx42TZf/0UHaMhMvbfD3XGYuIqPQAcA5BBAAkTF8ELreHnerlp/LZSWXTvp7rgvBkH4NSiV0wQIA1xBAAESSrrHhXhennA0hmDxefJRR6KGaDg0Aig8BBEBEudjHSQNI2t92Wy4WjumlRg0gAICCIoAAiCgHb4PnzDllwxBAPInHq/xtd9mxKvFyf28Ih8fXAEAUEEAARIbT9U5zchqJctkwdMHSKYJdnsK4n7mooThPAIgWAgiAyBje5qFxxKFIYtNHzgSQTH7fafZk85uO8+KjjPMJx6kDQNEigACIJicXIgzHGBDPtiw4FN7OxpxjLF7m7wwRglMHgGJGAAEQSfmV0B18CXR9FixtPdD8EYLB3RqUvNEGy9MCAgAFRQABEBmvuPHtUkXUnJxOwZtN9/gHHGUvok0gdtdptgVklC5Yr/hDAAAEiQACABgnTW5haEbwTE5iJXQAcA0BBEB02HqzwxVnc27ZTFhWQg+XXC4juUzK3wMAFBIBBEBk5Mx/2Uyfv+cem48yvfkdV+lJetqyMMrgbpfZGcay9vQBAIVFAAEQLS63gFjuD1DQwd3xkK0wbltAcmmGfwCAAwggAOAKHYSeavV3XBeyqnzWXNtMihYQAHAAAQRAxLhdcc7lwjJOIVxVee1+537rFwBEAwEEQHToOABxeKVxrR+HYSF0HQMy2voaLstlbTcsAEDhEUAARIip4WddXmncBCT3F0I3dBD6KOtrOMyOAXH6uQeA6CCAAIiWrLsrjWsDiOsLoffLha07k86AlaEFBABcQAABAFeYSj036aeI7YIVknQHAEWOAAIArtAxKiG5Se954ZoFS7tgZUl3AOAEAggAYFw8Lyaxkgp/LyS09cN2v2MmLAAoNAIIADhC5+jiHv3UyC9EyBgQAHABAQQAUPx0DIgOQqcBBAAKjgACIFIYiDwV3B8PYseAhGOOYwAoegQQAJGhU8c6vRaEXSgxXPR6hmZ9DcInADiBAAIgUlxvAQldANHrGYaxFebC2rVLwjV5FwAUJQIIADgknPfoQ1Cr1wDCGBAAcAIBBAAcoXfowxZAwtKgoI0fzIIFAG4ggAAAJsyOWtHafQjYLlgAgIIjgACAM8I3CF2ymdAMQs+ZcwUAFB4BBABwgUIwDa8WAggAOIEAAiBCtLsQldCoYg0YAHADAQRAdJj8kc0k/R23aBtCGMcoaKU+S8UeADAOBBAAkRLCURZOs+M/QtCqZLtgmaDkxeIsBQIABUYAARApVD4nm4l0IWm5aW89LV1njko2SwgFgEIigAAALoBGOjdjnbZ4JHs7/D2RMyePyIGXH5RsOikeSRQACoYAAgCYuFzOxA/3WhS0UaasslbmX3STf0QkZcLIsT2bJMtsWABQUAQQAHBFSAehuzi7lJ5SVd0sE0Bu9I+IeF5cEmWV/h4AoFAIIADgAs9UmsM4QkVr+g4GJz2lRGnchJCZkvCPAQDcQAABAAdor6BsJuXvYbJo60zc3wYAuIEAAgAF5plX4o7Tx6Tl2D7/CCYTb3QA4BZelwGgwGLmlfjYnmdl7/M/9I+ERy6bcnpQt3ZqowsWALiFAAIADtAFEocO5s6kk5LNpP09h9lFCMM3eB4AUDgEEAARYirKGTfv1ueHnw8OQp+/+no7g1MIJ8Zyhr105pIyBgQA3EIAARAZWiHNZPryO45rnL1EGptWhCCAuD5zlyexMn8TAOAEAgiA6NDavO0y5L5ESZkp/o7Dcrm0+ce9dUCGipX6GwAAJxBAAESM63fs++mYEH/TZSaAuLgQ4VBeCIIcAEQJAQQAnBSOoJQzKcnZoOSfVzwMTUkAECEEEABwkBeWhhrD7XP1JJao97cBAC4ggACAk8KTQLQVxFUajrxEub/nBte7rAHAVCOAAAAmTMf05xxeiFDF4m4FkERJhZSUMDkwgOgigACAg7yw9MFy/jQ98UyF3xXZrMjiS18jl972e/4RAIgeAggAoKh5Ds3Dq72vps1dIjPmX+QfAYDoIYAAgIvCNArdZToGJOZWdyc7LsWxcwKAIBFAAMBJIQkgWdcHVXsSL3FsELotYVjkBQCmBgEEADBhdgIs11dM9BL+hju8sARMAJgCBBAAkZLN9Plb7tIX5tAMQrfcPlcv5l4AAYAoI4AAiJCcCSA9/ra7tDofrvvjLq8D4kk84c4gdJV/bsP1DAPAZCKAAIgUur5MAcfHgMTibgUQAIg6AggAOMZGpJB0wdK2j2zW7TEgLk3DqxwfMQMAU44AAgBOoqVmUpgg58UdnPKWpxdAhBFAAABFzXOwCxZdAQFEGQEEAByj9+tDNQuWF5ZORTnJppP+NgCgUAggAIAJ0+iRc3wMyIBczvyf9ncAAIVCAAEAF4VqHZDwtIBINuNvAwAKhQACAI6J5ftg5XcwaXL6Xybl7wEACoUAAgCO0ezBIOUpkNOFKLULlgMtNgRMABFGAAEA14StbqoLEYbinHPmVF0ZA0IAARBdBBAAcIyX0H94eZ4KAwGE+j8AFAzvcADgGn1lpoI8+bQLVn8ACcu4eQAoQgQQAHBMLF5m8kc4EojW48NTl9dB6CaAED4AoKAIIADgGC9Wav4JTxNILpv1t9zHLFgAUHgEEABwjOclQtMCkheWJgUdhO7oOiAhCnEAcKEIIADgGC9Rbl6dGQQy6ew0vNoCQh8sACgkAggAuMZ2v3I3gIS1+q7nnc36XbDIdwBQMAQQAHBMLFZiMoi7NeSRZ5bLhacLluQc7YJFIAIQIQQQAHBM6MaAhCaAaP5wNICE6BoCwIUigACAY7QqSnV0KvSPAXFPeFqRAODCEUAAwDFeLC4eK6FPPlPHH1iIEABQMLzDAYBjXB8D8krhuXuf6x+EDgAoGAIIALjG8VmwRspmwxJAzHnmMnRvA4ACI4AAgGO8WIn+4++5L0xtNZm0qy0gxCIA0UEAAQDXhKr7lV91Dkn9eWAdEMcwCB1AlBBAAMAxOgA9TGNAWk8fldbje0NQiTbnl02GbHwNABQfAggAOMaLaxesuL/nvpaje2T3M9+TXDbjdH8szUfHDx+VtpMHJZN261xt6OQdGUBE8HIHAI4YrA+brRDdpE8le6Sn/ZTddu60TepI9nb4OyK6DOGeZ74vqd5Op3q6tZ8+LG3Hj/l7AFDcCCAA4ADtvpQL6RoV9u59POHvuUNbPEoramTZ5W/2j+SdOb5Lspm0U2Hp0NZHZc/z9zkVigBgqhBAAMAFuWy+CxMmjbmkUlZZJ00rNsjQDm3xRLmmJn/PDacOPCcnDmwOVcsXAEwUAQQAHJDT/7TGjEkVM8mjvKpe6sv8Aw4rKTXBCAAigAACAC7Q/kIEkClhg114xvQDQNEjgACAC+wYEFcXyRs75ybi9U9IW0IAAG4ggAAAJo1zQxj8E4qFoAsWAEQFAQQAHJDLZSSb7vP3MNlipbX+FgCg0AggAIBJ42IXLG0EiXk0gQCAKwggAOAKHYiOKRGLE0AAwBUEEABwgM7UlM2GowtWNpuRZE+bvxcGnniJSn8bAFBoBBAAcEUIpuHVRpqaxrmy4uo7/CPDObmOnjmpWIIWEABwBQEEAFyg0/Dm3F8JXRdrr25skjnLrvSPhIPnMQ8vALiCAAIADshpAMmEowtWokSkrLLO3wsHL25OGgDgBAIIADghPAsRajesXDZcq7YzCB0A3EEAAQBHhKEL1gAnB3ucjReSFpBQXVQAmDACCAA4wM6Cler299wXtqqyF0v4WwCAQiOAAACKnhcPQwBhHRgA0UAAAQAX6MCKcA2rCA+m4QUApxBAAMAFOgtWOMagn5O79/CZhhcAXEEAAQBMgDfqOBAXx4bomcZC0QULAKKBAAIADsiZ/zIhmgQrbGKsAwIAziCAAEChabOBXQk9v4vJxxgQAHAHAQQAHBG6qW39j87zdB2QUn/H7jp67mH7CwCAiSGAAIADwjgJVhjeQPoblYauA6KruLvZ2EQTGIBoIIAAgBNyBJAp5Gmzhy+bSeYTn3NoAQEQDQQQAHAE1c+AZBntDwCFRAABACfoPFgIQi6b9Ldcw18AgGgggACAA3I6C5a/HQpeeN9AsmkNIFT2AaBQCCAA4AC6XwUnk0n7WwCAQiCAAIADtAUkbIPQwyqXSdEAAgAFRAABECkud3QKV504vG02uawJIHq1nfsVaAcDEA0EEAAR4kk8XuFvuyVsN+S1qhzPb4ZOLksXLAAoJAIIgEjxYoMrYjvFyXUpzm20+/Vh+C20C5Y9T+dONnx/AwAwEQQQANEyZEE6TJxWlUcbsxKGq2sXIlT8KQBAQRBAAMAJ3P0OCtPwAkBhEUAAwAFhqw5r40FY30BymV5HLzhNMgCigQACAC4I2xgQz5OScn87ZFgJHQAKiwACABg/rSuPUl8OQxU61z8GBABQEAQQAHABN78Dk0l1mX+54ABQKAQQAMDEjFKHD8Mohlymw98CABQCAQQAHODyCu2jMknDG2VNxzD8Fpk+umABQCERQACgwHRpEi+E65N4o7yDhKMFxN8AABQEAQQACqyvKyk9XW3+XniM1toRhhaQXMrfAAAUBAEEAApIWxFOHNgsJw5u9Y+EhxfSMSAZE0DcDErhawUDgIkggABAAWnPq5MHX5Jjezb5R0wFOZ2UXNb1fkKexOL+ZsjopfWo7ANAwRBAAKDA4iWlkiit9PdEqhvnSlllvfNrE3ol9f6Wu/pjRjaT9rdEdBLedKrPhLz8vjvC0IENAC4cAQQAHLPgohtkztIrHKwgj+T8CdoqvbZ2lFc35g8YGkVOHdoiyd6uUQfSAwCmFi+9AOCY2mlNUtXgfgvIYPuCw8w1LCmvlpUb3jbsbLf+/CvS09Fiu8C5g25hAKKBAAIArtHg4Xj4sFMHJwa7jblKQ1w8kZCG2ctkzvyFA1X8WCzhYH3f+cQJAJOCAAIAjgnHkiCeqcSPshKhi/R6mosaT5QPhg7z0b3LHIonHgAuGAEEABzDffBJ5l9QLx7SabsAoMgQQADAMTpoOqwhxN3zzuW7XfUzJ+reuYb1WQeA8SGAAAAmxBtaofe524nIxDpPW0Do5gQAhUYAAQBMiBcr9bfCwYuVkD8AwAEEEABwTShGoWuLwitbQFwWiyf0rP09AEChEEAAwDHhqSKHa8yCF6MLFgC4gAACAJigcFXmY3HtgkUAAYBCI4AAiBi379rb6nEYKsnmFD2t0IeJN+QtT8/f33RHCJ53AJgEBBAAwMTEwlVhzk/DSyUfAAqNAAIgMjzPk1hptb/npnz1mErylIjrrF3+tWUdEAAoGAIIgAjRmZvcrtzri3JohimErL6ss2AxBgQACo8AAgAYN53ONpYo9/cGuZpJNHbEYnF73gCAwiKAAIBD8tXjEFSStTubndZ2OJfP3K7cTgsIABQcAQQAHBKq6nGYKvPmXG0A6b/C5oN7Zx+qZx8AJowAAgAOsVXQsFTsc6/scOX0sJChCxGaE3XvXJ2+egAwaQggAOCQMK3VnV9ZPDzsNLx0wQKAgiOAAIBDwnMP3Bt1IUKXq/d2FqzQxDsAKF4EEABwiL1Bz136KaGByRu6GjoAoCB4JQYAh2ijAlPFTg0vpi02/rU1H9y7yjzvAKKBAAIALgnTOOSwtSbomJUhrUsMQgeAwiCAAIBDPHuT3v074bqifCxe5u+FgZ6vNi/lr20ul7UfAQDBI4AAgEM8O7FUSLrihGysytCubblMSlOIvwcACBIBBAAcEq4qcdjOdvB8c+k+/Te/AwAIFAEEABwSS5SHrmXBCkVrwuB1zWoAce6UQ/i8A8AEEEAAwCGxeGX4qqG5rPk/k9+0/7pq8OyymaTZc+1swxDiAODCEUAAwCE5Cd/gaB3QncvlA4jb4WlIC0gm7W+5hBYQANFAAAFQrEa9nZzLOV5F9hL6j78XFmE53yF/EjkTQJxrcKAFBEA0EEAAFKuU/3EYLz/NlLNipdXmHMMWQMJScR68rplUj/nXnLdTl/qsJ8OcwQCKCgEEQDHSGrFOczScqdjHEqX+jrtCdx88lxsYAxIWdhre8HCxvxgATBgBBECxajclfH1actpC44XszHPihWIWrMFzzGV69d/8jjNGPR89mMxvAkBxIIAAKFZtpoShVjxMvKQshF2wVP5Sh+WCZ9K9dubgEFzpblMIIACKCgEEQDHSenCLKSHtO2+qxaHLIPkTdvu0B88ul2zVf/M7zhj16mmQ1uYaACgaBBAAxeqkKeEamGB4sUR+EqywNCWoXFay2TAMUxi8qJmU1utdM+qTfsYUbQUBgKJBAAFQjLQmd9SUEAYQfwxIiOR0ELq/DojbhrSAONk2NurzftqUrvwmABQHAgiAYqQB5LApoQsgYQsfeeZy25v3o97Bd8jg+eV0VIVzA+dHPZ8TpnTkNwGgOBBAABQjrckdMCV8LSC6TkkYFyK0p+z6eQ+eX0aXAXHOqNfviCku9hcDgAkjgAAoRhpAdpkSuvUTvHipyR9he2nWLlh6yV1rURhp8PyyTnbBGvX6aUuejgMBgKJBAAFQjLQmt9uUVy5G6DjXq/Cj0gEVmXA1NmkyNbEpv+O2g6Z05jcBoDgQQAAUK+1ko3ePQ1Wnz7d+uN6VaRQhO+WQzM+sI1WO5zcBoHgQQAAUlU/d4W/kvWRKqGYQiiVKTWWel+apltJ/3I+mW0yx4z8+OfzvGgBCjXc5AMVl+ADu501hClO8QkiaxV42RVdMNH/WIWwVA4CzIIAAKGbPmOJ8AMll0qZob5tw0jVAshnbphAaOmLFi5m3QLfr9RqgdUV/ACgqBBAAxUwrcPYOsuvys0iFVEhmwEr3dZugNzhYvrPlqKR60yMazZzygilMwQug6BBAABSdIf3l9bb8VlOcbl7Iz8YUkmHRo3K/e1AslpCFl9wqFbXT/CMi+1/+mXSeOeLqkJtDpjTnNwGguBBAABS7x01xeyahXNb8H8JF2we43fqhDTSxeELmrtgg02bN84+KHNv9pCR7OhxqARl2Ig+b0p7fBIDiQgABUHR0wO6n7hyozGlF7lh+Ux+L+1sOMTVkL8xdsLQNR9cCcVnMk/LqBqmsqvMPiJSUVZu/B5feBof9DfzEFBtAhvwtA0BRIIAAKHbaBWu/bmgw8WIJ3XSLCR+5MHfBymUkl3V80XlTt+9vZXK3Oj9wZrqGzROmdNs9ACgyBBAAUbDJ1O2OaV8bF6cz1daDsM0iNZxeU8fv0tvT0wDq/NueJlFttTth9wCgCBFAABStIV1XHjS5Y5upfvq7iJz+3k0uL/KYD8faTPNtU/p0h+5XAIoRAQRAFDxr6nbaFau/kueUXDYruVC3gGj/pnCMYQlBC4iuW/PfptgAAgDFiAACIBLiCXky1de1Rwceu0cr7+GdBct2IXN9DIifO2Ne3Ml2sERJmaSTPX0mH/8oFmfxQQDFjQACIBLqZsrDnWeOPJYodzGAKLraTCm/gcYztXsXr3RJ1QxJ9rR3maD8pZLyEKdRABgDAgiAotbfh/73r/QOnTr44otZB9fb0NmZsmmd+AhTTQOIi+982jWsp+Pk6ctvkwff/vp8XGL8B4BiRQABEAlX3v57cmLfs4e6zhx1blFCnYTX+Wlsz0XHf7i+DojPi+lMaP6OQ1K9XZmO082HPvf+L6Z/+93/5B8FgOJEAAFQ9PRO8u6n7pGWw9vOnD68zQaQ7paDkkn12scLLfz3uXUhwpAMQndxIUoj3dva13psX/ND//l78tjX/4TWDwBFjQACIBLaThyUU0f3HMyk+h6vmb6gd8n6N8j0BRc7UfnXynsuE+ZJj7QFJCQBxHbBKnwIGTloP5fNxJI9Z5LJnlZJ9rb6RwGgOBFAAESCXz3e09fT/m8rN7zty5e95n/n5q26Tm+J5x8pIJ1FKtRdsELUhmMHoXsFXg3f/DFW1c2UOcs32t2S/MQIx0zZrRsAUOwIIAAiIRaPy8LL35Z+51888dydf/yZP1925W1PVtZO8x/FhQlH64ey4aPA3bCyWZHZi9fL1b/wB3LFGz7QNm/1DQ+Zw5815T/sJwBAkSOAAIiETCYjd3zkHpm7YoOcPCjHMyn5lDO9hvREQjzxqu1ClgvHL+CZIGq7YRWQjtevrJsuKze8SV7z63973/u/+MM7XvfbX/kb89DR/GcAQHEjgACIjE8PDuxNmvKIKd83xYEYohV4fzOMzLlnM+GYBcsuROjAQHR9vrMZ2ZNOyQ+O7JJTa69/p/8IABQ/AgiAaBms6J8x5aOmdNs9XJiwDAOJuzEI3fdNU76V3wSA6CCAAIiUT901UFPWW/Y7TPlbU7RFpGDyCxH6O5hSMS/hylS895vyPVPs9GdMuwsgSgggAKJMFwLRVd9eNKVgnaBC3f3KpzN5hYELY0CMLlP+3ZSn7B4ARAwBBEDkjLjbfNIU7YpVsBXSXVyZe9xCsxK6CR9ewd/6/sEUbQGxaP0AEDUEEACR9Mk7/I28H5vyBVPa7V7AdBapcFTfw0+7X3mFDSA/M+XLppyyewAQQQQQAJHkvbLZQbti/cSUwLOAncbW3w6vcNzF9+Il5p2vYF2wjpjyCVN22T2D1g8AUUQAARBZWvkbUgHULlj/bMrjdg/jE5ouWDoIPf/Wp4P/A6TjPnTCgwdNsT+Y8AEgqgggACJvSEXwYVM+Z8puuxcUU3kPcwuIDqIPyyD0obLpvqDOW2e6+q4pf2eKne+M8AEgygggADDcf5mig4Tb7F5AwlwdDeu553KBzH2srR1PmPI+UxjqAwAGAQQAjBF3pL9oivbVD0wRzMQbOrl0Mt98M7U2m/JrpgxMcEDrB4CoI4AAgG/IzFi6OrrOivVxuzfFtBtQ6ANICBczyWZT5t8pPe8XTHmvKXt1R/++Rsy+BgCRRAABAN+ImbF0fZB/M+Vv7B7OSqvwAQ/ovgCDgSOb7jG5acoCyHOmfMiUp+2eb5TZ1wAgcgggADDEiO4xzab8iyk6eHjK2EHc/nZYhWci4cHnN5fSseFTct6bTPnjkh55IL+b/7sifABAHgEEAEYYEUIOmaIBZOpCSAi7L4XX4LXOZHqn4tr/3JSPmfKTVIXdZ8wHAIxAAAGAUYwSQj5jyqdM0dvmk4wAUgjZdPdkX3lt8fgzU3RBS9b6AICzIIAAwFmMqDxqd6xPmvJpU07pgclSDPEjlw3LDLODz2ku1aH/5ncu3A9M+ZhXJvebj4QPADgHAggAnMOISqQGj780RVtD9uiBSVEEXbCmcDD3lMkmTQC58PPuNeUeUz5iymM5v32M8AEAZ0cAAYDz0MrkkOlTe0zRNUL+wpRnTQnL9E9TKjzV7cHAkem+4PaP46bowpU61e5WPaAIHwBwbgQQABgDncFoRMXyS6b8rina3/8Cx4UUQQuI/zFMctprbGItIPpF2gKmK+a/x5QWUyzCBwCcHwEEAMZhRAVTZzx6tynaJavLlInVZkOeP/T0dTHFcBh8/rJpf2N8mUG/6nFTft2Uv9YD/a1jhA8AGBsCCACMk1Y0bclXPLUbjk67+gumbNEDkaQBJGRBKp8/xnXSZ0z5e1NuN+UhDR76dzBK6xgA4BwIIAAwQR/Socd5KVN+ZsqtpujYkKQpYxbGAdyjClkd3LbZjP3S6+xWGjl1sLkGEfnw4PMPABgHAggATNCIu95anz1qinbHutmUH5oyRuEPIJ4XsyVMtAVkDCu47zXlN03RLlcPmTLQ14xWDwCYGAIIAFwArYQOmSFLtWY8ecx8/G1TdHzIE3rwXIZWgZM9HZLL9A9OCI+2lhPS0dIsWcfXA0kne6S3qz2/bco51i85bYqO8bjblP805aApAzOeET4AYOIIIABwgUaOAYjnE8U+U75migaRD5vypCmjyqUHJ9FasPZmqZ+1JHQD08+cbJa9L/xYMqk+cz38g64xJzb/optk7vwFdve6298r1fXT87NhDdK1Xv6fKRoedbyHPm86wYClzzPhAwAuDK+iADAFPvTNYQmi3JSrTXmVKTeZssGUMlMkFhPZv/mn8uKD/y5VDU1y0bVvlxkLL5FYIuFsz6y4ObVTh3bJw1/9A9n11HfsMS9WIpfc/G656V2fkbLK6pGVemckezql5cg2+7F+xlypbpwvsdIKvda7zcPaxephvxwyZQChAwAmD6+oADBFRoSQfteaooPVrzJljSnzU31dcrp5h5RV1ErdzEUSL0k4W4FXowaQeJmsv+035Pq7/lxKHQ4g2joTi+c/ZrPSacp2Ez6eNw9p+PipKTqr2QDtXqctXACAycOrKgBMsbMEkYWmvMmUm039dqmpFDflcjLNDklwvPvVuQLIdSaAuNwCYuhK9sdMOWzKJlN+YMojpgw7Y4IHAEwdXl0BIEBnCSMbTXm9KTeYssiUar+UmuKcEAaQDr+0mvK0KTqlrgaPNlMG0M0KAILBqy0AFICu/fGKdSQ0m3hymfn3tabcaIpuV5pSYoqp9tuPBX/ddjyA6ORWWnRtFl2PRVs6HjXlAVN0rRYNIsMQPAAgWLzqAoADztIyoq0gV5ii40X04zpT5pmiLSP5uJI39LV8yl/XCxxAhl6o/u3+jzp17jZTnjVFu1dp0dnIhqF7FQAUFq/AAOCAswQQpdOlx/2P+prdYMoSU5abstiU+abMMmWmKdNNqTWlyhQ7y9ZUGAwgf2gCyLftsSkehK7rb+jYDV3AQ1chP2mKDhY/YsoBU/aYssMUHduhrR56MfVr9CyGXdj+NVsIIABQOLwCA4BjNIzoOiDnqCNrINHuWFp0e2jpDyr9ZdKVVUp219MPVd//xd+5quXQi7rqe8qcbHbhJbfd+/r3fXFH3fTZqUx6Un+2hoj+MNEfLPRjf3er/i5Xw8JGPz34abpZAYAzeEUGgJA4RytJoLKZlFQ3lMjHb/MqY4nKhmy6x5yYXTrx1B98J5dKJ7Pi6QInBcKYDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAURP5/X8q7zCOU1UkAAAAASUVORK5CYII=" />
  744.  
  745. </h6>
  746. </header><input type='text' id='commsearch' name='commsearchinput'
  747. placeholder='Search your subscriptions (or visted subs)' />
  748. <div id='ltBarSubHeader' class='clickAble'>LemmyTools ${ltVer}</div>
  749. <div style='clear:both;'></div>
  750. </div>
  751. <div id='ltPassiveSearchDiv' class='ltPassiveSearchDiv'><img width=30 height=30 class='targetImg'
  752. src='data:image/webp;base64,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' />${brandingString}
  753. </div><br />`;
  754.  
  755.  
  756. let styleString = `
  757. .ltmenu {
  758. position: fixed;
  759. top: ${settings.commposVertical}%;
  760. ${settings.commposSide}: 0;
  761. font-size: .9rem;
  762. display: block;
  763. height: 100%;
  764. min-height: auto;
  765. z-index: 999;
  766. overflow: scroll;
  767. outline: 1px solid grey !important;
  768. }
  769.  
  770. .ltActiveSearchDiv {
  771. font-size: 0.9rem;
  772. width: 100%;
  773. }
  774.  
  775. .ltActiveSearchDiv img:hover{
  776. margin-top:-5px;
  777. border:10px yellow;
  778. }
  779.  
  780.  
  781. .ltmenu input {
  782. width: 100%;
  783. }
  784.  
  785. .ltPassiveSearchDiv {
  786. display: none;
  787. width: 100%;
  788. }
  789.  
  790. .post-listings .img-expanded {
  791. width: ${settings.expandImagesize}${settings.widthPixels ? "px" : "%"};
  792. max-height: none !important;
  793. }
  794.  
  795. #myDiv li {
  796. list-style-type: none;
  797. }
  798.  
  799. #myDiv hr {
  800. display: block;
  801. }
  802.  
  803. #searchdiv {
  804. ${settings.commposSide}: 0;
  805. position: fixed;
  806. height: 100%;
  807. min-height: auto;
  808. width: 240px;
  809. display: block;
  810. z-index: 999;
  811. overflow: scroll;
  812. transition-timing-function: ease;
  813. transition: ${settings.commposSide} .25s;
  814. transition-delay: 0, 0.25s;
  815. overflow: auto;
  816. -ms-overflow-style: none;
  817. scrollbar-width: none;
  818. }
  819.  
  820. .ltbutton {
  821. background-color: #ccffe5;
  822. }
  823.  
  824. .ltPassiveSearchDiv {
  825. display: none;
  826. }
  827.  
  828. .ltoptions {
  829. position: fixed;
  830. min-width: auto;
  831. min-height: auto;
  832. width: auto;
  833. height: 100%;
  834. top: 0;
  835. display: none;
  836. left: 0;
  837. overflow: scroll;
  838. z-index: 1000;
  839. padding: 0.5%;
  840. margin-top:35px;
  841. }
  842.  
  843. #myDiv::-webkit-scrollbar {
  844. display: none;
  845. }
  846.  
  847. #myDiv {
  848. -ms-overflow-style: none;
  849. scrollbar-width: none;
  850. }
  851.  
  852. #searchdiv::-webkit-scrollbar {
  853. display: none;
  854. }
  855. .userNote {
  856. margin-left: 0.5em;
  857. //padding-left: 0.25em;
  858. //padding-right: 0.25em;
  859. font-size: 0.9em;
  860. }
  861. .userTagger {
  862. border-radius: var(--bs-border-radius);
  863. }
  864. .userTagger::backdrop {
  865. background: rgba(0, 0, 0, 0.7);
  866. }
  867. form#userTag {
  868. display: flex;
  869. flex-direction: column;
  870. gap: 4px;
  871. }
  872. form#userTag label {
  873. width: 60px;
  874. }
  875. `;
  876.  
  877. if (settings.unblurNSFW) {
  878. styleString +=
  879. " .img-blur {filter: none !important; -webkit-filter: none !important; -moz-filter: none !important; -o-filter: none !important; -ms-filter: none !important;} .img-blur-icon {display: none !important;} ";
  880. } else {
  881. styleString +=
  882. " .img-blur {filter: blur !important; -webkit-filter: blur !important; -moz-filter: blur !important; -o-filter: blur !important; -ms-filter: blur !important;} .img-blur-icon {filter: blur !important; -webkit-filter: blur !important; -moz-filter: blur !important; -o-filter: blur !important; -ms-filter: blur !important;} ";
  883. }
  884.  
  885. if (settings.hideSideBar) {
  886. styleString +=
  887. ".container, .container-lg, .container-md, .container-sm, .container-xl { }" +
  888. ".col-md-8 {flex: 0 0 80% !important;max-width: 80%;}";
  889. } else {
  890. styleString +=
  891. ".container, .container-lg, .container-md, .container-sm, .container-xl {}";
  892. }
  893. if (!settings.hoverCheck) {
  894. styleString += `
  895. #myDiv:not(:hover) {
  896. animation: showNavOut 500ms ease-in-out both;
  897. display: none;
  898. height: 0;
  899. transition-timing-function: ease;
  900. transition: height;
  901. transition-duration: 1.0;
  902. transition-delay: 0.5s;
  903. }
  904.  
  905. .ltPassiveSearchDiv {
  906. display: block;
  907. float: ${settings.reverseSide};
  908. padding-${settings.commposSide}: 200px;
  909. }
  910.  
  911. #ltActiveSearchDiv {
  912. display: none;
  913. animation: showNav 500ms ease-in-out both;
  914. }
  915.  
  916. #sidebarSubscribed {
  917. display: none;
  918. }
  919.  
  920. #searchdiv {
  921. ${settings.commposSide}: -200px;
  922. position: fixed;
  923. height: 110px;
  924. min-height: auto;
  925. width: 240px;
  926. display: block;
  927. z-index: 999;
  928. overflow: auto;
  929. display: block;
  930. transition-timing-function: ease;
  931. transition: ${settings.commposSide},
  932. height;
  933. transition-duration: 0.25s, 0.25s;
  934. transition-delay: 0.25s, 0.25s;
  935. /*animation: showNavOut 250ms ease-in-out both;*/ /*Breaks things?*/
  936. }
  937.  
  938. #searchdiv:hover .ltActiveSearchDiv {
  939. display: block;
  940. }
  941.  
  942. #searchdiv:hover .ltPassiveSearchDiv {
  943. display: none;
  944. }
  945.  
  946. #searchdiv:hover {
  947. ${settings.commposSide}: 0;
  948. position: fixed;
  949. height: 100%;
  950. min-height: auto;
  951. width: 240px;
  952. display: block;
  953. z-index: 999;
  954. display: block;
  955. overflow: auto;
  956. }
  957.  
  958. #searchdiv:hover>#myDiv {
  959. ${settings.commposSide}: 0;
  960. word-wrap: break-word;
  961. overflow: auto;
  962. display: block;
  963. height: 100%;
  964. width: 240px;
  965. animation: showNav 500ms ease-in-out both;
  966. }
  967.  
  968. @keyframes showNav {
  969. from {
  970. opacity: 0;
  971. }
  972.  
  973. to {
  974. opacity: 1;
  975. }
  976. }
  977. @keyframes showNavOut { from {opacity: 1;} to {opacity: 0;}}`;
  978. } else {
  979. styleString +=
  980. " myDiv {visibility: visible; height: auto; width: auto; overflow:scroll !important;}";
  981. }
  982.  
  983. //For mobile layouts make the ltbar tab smaller
  984. styleString += `
  985. @media (max-width: 1199.98px) {
  986. #brandingText {
  987. display:none;
  988. }
  989. #searchdiv {
  990. height: 35px;
  991. }
  992. }`;
  993.  
  994.  
  995.  
  996.  
  997. if (settings.commposSide != "top")
  998. {
  999. div.innerHTML = "<div class='commsAreaStatic'></div>";
  1000. document.body.appendChild(idiv);
  1001. idiv.appendChild(div);
  1002. ltLog("here");
  1003. }
  1004. else if (settings.commposSide == "top")
  1005. {
  1006.  
  1007. const topDiv = document.createElement("div");
  1008. topDiv.setAttribute("id", "topDiv");
  1009. topDiv.innerHTML = `
  1010. <div class='topDivRoot card border-secondary'>
  1011.  
  1012. <div class='topDivSearch'>
  1013. <img id="lemmyLogo" width=22 height=22 class='targetImg' alt="${homeInstance}" title="${homeInstance}"
  1014. src='data:image/webp;base64,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' />
  1015. <img id="lemmyOptionsIcon" width=22 height=22 class='targetImg' alt"LemmyTools Options" title="LemmyTools Options"
  1016. src="data:image/png;base64,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AAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAIIAAAAgMAQQAAAAAAEhgACAAAAIDAEEAAAAACBIYAAAAAACAwBBAAAAEBgCCAAAAAAAkMAAQAAABAYAggAAACAwBBAAAAAAASGAAIAAAAgMAQQAAAAAIEhgAAAAAAIDAEEAAAAQGAIIAAAAAACQwABAAAAEBgCCAAAAIDAEEAAAAAABIYAAgAAACAwBBAAAAAAgSGAAAAAAAgMAQQAAABAYAggAAAAAAJDAAEAAAAQGAII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" />
  1017. <input type='text' id='commsearch' name='commsearchinput' placeholder='Search your subscriptions (or visted subs)' />
  1018. <a id='dropDownComms' href="#" alt="Show All Your Communities and Manage" title="Show All Your Communities and Manage" > (Show All) </a>
  1019. </div>
  1020. <div class='topDivBar'>
  1021. <div class='commsAreaStatic'>
  1022. </div>
  1023. </div>
  1024. </div>
  1025. `;
  1026. const topDivCommsBox = document.createElement("div");
  1027. topDivCommsBox.setAttribute("id", "topDivCommsBox");
  1028. topDivCommsBox.style.display = "none";
  1029. topDivCommsBox.innerHTML = `
  1030. <header id='ltBarHeader' class='card-header'>
  1031. <h5><a href=${settings.instance}>Home</a> - <a href='https://lemmyverse.net/communities' target='_new'>Find
  1032. Communities</a>
  1033. </h5>
  1034. </header>
  1035. LemmyTools ${ltVer}
  1036. <div class="commsAreaSearch">
  1037. </div>
  1038. `;
  1039. document.body.prepend(topDivCommsBox);
  1040. document.body.prepend(topDiv);
  1041.  
  1042. document.getElementById("dropDownComms").addEventListener("click", (e) => {
  1043. e.preventDefault();
  1044. dropDownComms = e;
  1045. window.scrollTo(0, 0);
  1046. dropDownComms.target.innerHTML =
  1047. dropDownComms.target.innerHTML == " (Show All) " ? dropDownComms.target.innerHTML = " (Hide All) " : dropDownComms.target.innerHTML = " (Show All) ";
  1048. topDivCommsBox.style.display =
  1049. topDivCommsBox.style.display == "none" ? topDivCommsBox.style.display = "block" : topDivCommsBox.style.display = "none";
  1050. searchComms(searchInput.value, communityArray);
  1051. });
  1052. styleString += `
  1053. #topDiv
  1054. {
  1055. z-index: 99999999 !important;
  1056. }
  1057. #topDiv input
  1058. {
  1059.  
  1060. }
  1061. .topDivSearch
  1062. {
  1063. min-width: 330px;
  1064. overflow:hidden;
  1065. -ms-overflow-style: none;
  1066. scrollbar-width: none;
  1067. z-index: 99999999 !important;
  1068. "mailx" stuck linux
  1069. }
  1070. #topDiv img:hover{
  1071. margin-top:-5px;
  1072. border:10px yellow;
  1073. }
  1074.  
  1075. .topDivBar
  1076. {
  1077. width: 100%;
  1078. overflow:hidden;
  1079. -ms-overflow-style: none;
  1080. scrollbar-width: none;
  1081. }
  1082. .topDivBar br {
  1083. display: none;
  1084. }
  1085. .topDivBar li, a {
  1086. display:inline-block;
  1087. padding-right: 5px;
  1088. margin-top: 4px;
  1089. }
  1090. .topDivBar hr {
  1091. display:none;
  1092. }
  1093. .topDivBar img {
  1094. display:none;
  1095. }
  1096. .topDivRoot
  1097. {
  1098. height:35px;
  1099. position: fixed;
  1100. top: 0;
  1101. left: 0;
  1102. width:100%;
  1103. overflow: hidden;
  1104. white-space: nowrap;
  1105. z-index: 99999999 !important;
  1106. border:2px;
  1107. display: inline-flex;
  1108. flex-direction: row;
  1109. }
  1110.  
  1111. #topDivCommsBox
  1112. {
  1113. float:left;
  1114. width: 100%;
  1115. height: 100%;
  1116. top: 35px;
  1117. left: 0;
  1118. }
  1119.  
  1120. #root
  1121. {
  1122. margin-top: 35px !important;
  1123. }
  1124.  
  1125. `;
  1126.  
  1127. }
  1128. // ADD MAIN CSS
  1129. document.head.appendChild(document.createElement("style")).innerHTML = styleString;
  1130. //add lemmytools elements to page
  1131. document.body.appendChild(odiv); //options
  1132. let commsAreaSearch = document.getElementsByClassName("commsAreaSearch");
  1133. let commsAreaStatic = document.getElementsByClassName("commsAreaStatic");
  1134. let dropDownComms = document.getElementById("dropDownComms");
  1135.  
  1136. const searchInput = document.getElementById("commsearch");
  1137. searchInput.addEventListener("input", (e) => {
  1138. e.preventDefault();
  1139. searchComms(searchInput.value, communityArray);
  1140. });
  1141. document.getElementById("lemmyOptionsIcon").addEventListener("click", (e) => {
  1142. e.preventDefault();
  1143. options(1);
  1144. });
  1145. document.getElementById("LTsaveoptions").addEventListener("click", (e) => {
  1146. e.preventDefault();
  1147. options(3);
  1148. });
  1149. document.getElementById("lemmyLogo").addEventListener("click", (e) => {
  1150. e.preventDefault();
  1151. window.location = homeInstance;
  1152. });
  1153.  
  1154. // document.onreadystatechange = () => {
  1155. // if (document.readyState === "interactive") {
  1156. // // document ready
  1157. // if (
  1158. // showImagesButton.value == "Hide All Images" ||
  1159. // settings.showAllImages
  1160. // ) {
  1161. // allImages(true);
  1162. // }
  1163. // }
  1164. // };
  1165.  
  1166. //Easier Subscribe Buttons ---------------------------
  1167. ltLog("url is " + url);
  1168. let rCommunityArray = [];
  1169. //Browsing remote instance
  1170. setInterval(function () {
  1171. const broken = url.split("/c/");
  1172. const site = broken[0].replace("https://", "");
  1173. let community = broken[1];
  1174. let communityName = community;
  1175. try {
  1176. const broken2 = community.split("?");
  1177. community = broken2[0];
  1178. communityName =
  1179. community.indexOf("@") > -1 ? community : community + "@" + site;
  1180. } catch {}
  1181.  
  1182. const subString =
  1183. `${settings.instance}/search?q=!${communityName}&type=All&listingType=All&page=1`.replace(
  1184. "#",
  1185. ""
  1186. );
  1187.  
  1188. if (notHomeAndInCommunity(url)) {
  1189. ltLog(`On remote instance community - DIRECT - Button to: ${subString}`);
  1190. rCommunityArray = update(community, communityName, subString);
  1191. rCommunityArray = [...new Set(rCommunityArray)];
  1192. rCommunityArray = rCommunityArray.reverse();
  1193. commsAreaStatic[0].innerHTML = rCommunityArray;
  1194. communityArray = rCommunityArray;
  1195. }
  1196. }, 1000);
  1197. tagUsers();
  1198. // Update homeInstance Comms for bar to use
  1199.  
  1200. let communityArray = [];
  1201. if (url.includes(settings.instance)) {
  1202. ltLog("home instance do bar");
  1203. document
  1204. .querySelectorAll('[class="list-inline-item d-inline-block"]')
  1205. .forEach(function (el) {
  1206. communityArray.push("<li>" + el.innerHTML.toLowerCase() + "</li>");
  1207. });
  1208. communityArray = [...new Set(communityArray)];
  1209. if (count === 0 || count == null) {
  1210. count = communityArray.length;
  1211. }
  1212.  
  1213. communityArray = communityArray.join("");
  1214.  
  1215. commsAreaStatic[0].innerHTML += communityArray;
  1216. if ( commsAreaStatic[0].innerHTML.length >= 20) {
  1217. ltLog("Got Results >= 20", LogDebug);
  1218. ltLog("setting localcomms localstore", LogDebug);
  1219. localStorage.setItem("localComms", communityArray);
  1220. localStorage.setItem("commsCount", count.toString()); // todo why store the count? communityArray.length everywhere should be easier
  1221. //force update the page
  1222. searchComms(searchInput.value, communityArray);
  1223. } else {
  1224. ltLog("get localcomms from localstore", LogDebug);
  1225. communityArray = localStorage.getItem("localComms");
  1226.  
  1227. commsAreaStatic[0].innerHTML += communityArray;
  1228. //If previous search display previous results
  1229. try {
  1230. let latestQueryString = localStorage.getItem("prevSearchCommsQueries");
  1231. let latestQueryArray = [];
  1232. latestQueryArray = latestQueryString.split(",");
  1233. if (currentUrl.indexOf(latestQueryArray[latestQueryArray.length - 1]) !== -1) {
  1234. searchComms(latestQueryArray[latestQueryArray.length - 1], communityArray);
  1235. }
  1236. else {
  1237. searchComms(searchInput.value, communityArray);
  1238. }
  1239. }
  1240. catch {
  1241. searchComms(searchInput.value, communityArray);
  1242. }
  1243. }
  1244. }
  1245. else {
  1246. ltLog("On Remote Instance - Bar", LogDebug);
  1247. }
  1248.  
  1249. //Expand Images----------------------------------------------
  1250.  
  1251. setInterval(function () {
  1252. if (settings.expandImages === true) {
  1253. let theImages = document.getElementsByClassName("img-expanded");
  1254. for (let i = 0; i < theImages.length; i++) {
  1255. theImages[i].addEventListener("mousedown", startDrag);
  1256. }
  1257.  
  1258. let posX;
  1259. let node;
  1260.  
  1261. function startDrag(e) {
  1262. e.preventDefault();
  1263.  
  1264. node = e.currentTarget;
  1265. node.style.cursor = "nwse-resize";
  1266. try {
  1267. node.closest("a").removeAttribute("href");
  1268. node.target.closest("a").setAttribute("overflow", "auto;");
  1269. node.preventDefault();
  1270. } catch {}
  1271.  
  1272. posX = e.clientX;
  1273. document.addEventListener("mousemove", resize);
  1274. document.addEventListener("mouseup", stopDrag);
  1275. }
  1276.  
  1277. function resize(e) {
  1278. e.preventDefault();
  1279. const nextPosX = e.pageX;
  1280. node.style.width =
  1281. node.offsetWidth +
  1282. (nextPosX - posX) * settings.expandImageSpeed +
  1283. "px";
  1284. posX = nextPosX;
  1285. }
  1286.  
  1287. function stopDrag(e) {
  1288. e.preventDefault();
  1289. node.style.cursor = "default";
  1290. document.removeEventListener("mousemove", resize);
  1291. document.removeEventListener("mouseup", stopDrag);
  1292. }
  1293. } // if expand images
  1294.  
  1295. //Removes the offset from images.
  1296. try {
  1297. if (settings.expandImages) {
  1298. removeClassByWildcard("offset-*");
  1299. }
  1300. } catch {}
  1301.  
  1302. //sidebar settings do
  1303. if (settings.hideSideBar === true) {
  1304. try {
  1305. const sidebarSubscribed = document.getElementById("sidebarContainer");
  1306. sidebarSubscribed.style.display = "none";
  1307. removeClassByWildcard("site-sideba*");
  1308.  
  1309. const serverInfo = document.getElementById("sidebarInfo");
  1310. serverInfo.style.display = "none";
  1311. } catch {}
  1312. }
  1313.  
  1314. //Show All Images Functionality on button toggle.
  1315. try {
  1316. let addImageButtonArea = document.querySelector(".post-listings");
  1317. let showImage = document.createElement("div");
  1318. showImage.innerHTML =
  1319. "<div class='col-auto'><input type='button' id='showAllImages' class='pointer btn btn-secondary text-bg-primary' value='Show All Images' /> </div>";
  1320. if (
  1321. addImageButtonArea.innerHTML.indexOf("showAllImages") === -1 &&
  1322. !settings.showAllImages &&
  1323. !settings.hideShowAllImagesButton
  1324. ) {
  1325. addImageButtonArea.prepend(showImage);
  1326. const showImagesButton = document.getElementById("showAllImages");
  1327. showImagesButton.addEventListener("click", function () {
  1328. if (showImagesButton.value === "Show All Images") {
  1329. showImagesButton.value = "Hide All Images";
  1330. allImages(true);
  1331. } else {
  1332. showImagesButton.value = "Show All Images";
  1333. allImages(false);
  1334. }
  1335. });
  1336. }
  1337. } catch {}
  1338. //Links Open In New Tab
  1339. if (settings.linksInNewTab == true)
  1340. {
  1341. linksInNewTab();
  1342. }
  1343. //Block Content
  1344. if (settings.blockContent == true)
  1345. {
  1346. blockContent(settings.blockFilters);
  1347. };
  1348. }, 500);
  1349. }
  1350. })();
  1351. function isLemmySite() {
  1352. const meta = document.querySelector('meta[name="Description"]');
  1353. return (
  1354. meta && meta.content === "Lemmy"
  1355. );
  1356. }