Enhanced Google Bar

Google Bar Returns

  1. // ==UserScript==
  2. // @name Enhanced Google Bar
  3. // @namespace http://jtgii.com/
  4. // @version Beta 1.05.2
  5. // @run-at document-start
  6. // @description Google Bar Returns
  7. // @author James Griffing
  8. // @include /^https?://(?:www|encrypted|ipv[46])\.google\.[^/]
  9. // @include http://*.google.*/webhp*
  10. // @include http://*.google.*/search*
  11. // @include http://*.google.*/ig*
  12. // @include http://*.google.*/*
  13. // @include http://*.google.*/#*
  14. // @include https://*.google.*/webhp*
  15. // @include https://*.google.*/search*
  16. // @include https://*.google.*/ig?*
  17. // @include https://*.google.*/*
  18. // @include https://*.google.*/#*
  19. // @include https://encrypted.google.*/webhp*
  20. // @include https://encrypted.google.*/search*
  21. // @include https://encrypted.google.*/ig*
  22. // @include https://encrypted.google.*/
  23. // @include https://encrypted.google.*/#*
  24. // @include https://www.youtube.*/
  25. // @exclude https://docs.google.com/spreadsheets/*
  26. // @exclude http://docs.google.com/spreadsheets/*
  27. // @exclude https://fonts.google.com/*
  28. // @match https://gf.qytechs.cn/*
  29. // @grant GM_addStyle
  30. // @grant GM_setValue
  31. // @grant GM_getValue
  32. // @grant GM_listValues
  33. // @grant GM_deleteValue
  34. // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
  35. // @license GPL-3.0-or-later
  36. // @copyright 2019, Forgetabyteit (https://openuserjs.org/users/Forgetabyteit) (https://gf.qytechs.cn/en/users/1309-forgetabyteit)
  37.  
  38. // @noframes
  39. // ==/UserScript==
  40.  
  41. //============================required====================
  42. (function() {
  43. 'use strict';
  44. //==============================Default Settings==============================
  45. if (typeof GM_getValue("GB_BGColor") === 'undefined') { //
  46. SetDefaults();
  47. addGoogleFont(GM_getValue("GB_Font"));
  48. }
  49.  
  50. function SetDefaults() {
  51. var AllSettings = GM_listValues();
  52. for (var AllSettingsIndex = 0, key = null; key = AllSettings[AllSettingsIndex]; AllSettingsIndex++) {
  53. GM_deleteValue(key);
  54. }
  55. GM_setValue("GB_Url1", "https://www.google.com/webhp");
  56. GM_setValue("GB_Url1text", "Search");
  57. GM_setValue("GB_Url2", "https://www.google.com/imghp");
  58. GM_setValue("GB_Url2text", "Images");
  59. GM_setValue("GB_Url3", "https://www.youtube.com/");
  60. GM_setValue("GB_Url3text", "YouTube");
  61. GM_setValue("GB_Url4", "https://www.google.com/maps/");
  62. GM_setValue("GB_Url4text", "Maps");
  63. GM_setValue("GB_Url5", "https://play.google.com/store");
  64. GM_setValue("GB_Url5text", "Play");
  65. GM_setValue("GB_Url6", "https://news.google.com/");
  66. GM_setValue("GB_Url6text", "News");
  67. GM_setValue("GB_Url7", "https://mail.google.com/");
  68. GM_setValue("GB_Url7text", "Gmail");
  69. GM_setValue("GB_Url8", "https://drive.google.com/drive/");
  70. GM_setValue("GB_Url8text", "Drive");
  71. GM_setValue("GB_Url9", "https://calendar.google.com");
  72. GM_setValue("GB_Url9text", "Calendar");
  73. GM_setValue("GB_Url10", "https://www.amazon.com");
  74. GM_setValue("GB_Url10text", "Amazon");
  75. GM_setValue("GB_Url11", "https://www.facebook.com");
  76. GM_setValue("GB_Url11text", "Facebook");
  77. GM_setValue("GB_DropDownUrl1", "https://music.google.com");
  78. GM_setValue("GB_DropDownUrl1text", "Music");
  79. GM_setValue("GB_DropDownUrl2", "https://books.google.com/");
  80. GM_setValue("GB_DropDownUrl2text", "Books");
  81. GM_setValue("GB_DropDownUrl3", "https://finance.google.com");
  82. GM_setValue("GB_DropDownUrl3text", "Finance");
  83. GM_setValue("GB_DropDownUrl4", "http://translate.google.com/");
  84. GM_setValue("GB_DropDownUrl4text", "Translate");
  85. GM_setValue("GB_DropDownUrl5", "https://gf.qytechs.cn/en/scripts/29660-enhanced-google-bar");
  86. GM_setValue("GB_DropDownUrl5text", "Script Homepage");
  87. GM_setValue("GB_TotalBarLinks", 10);
  88. GM_setValue("GB_TotalBarMenuLinks", 5);
  89. GM_setValue("GB_Hover", 10);
  90. GM_setValue("GB_BGColor", "#333333");
  91. GM_setValue("GB_LColor", "#FFFFFF");
  92. GM_setValue("GB_BColor", "#dd4b39");
  93. GM_setValue('GB_LColMode', "2");
  94. GM_setValue('GB_BColMode', "3");
  95. GM_setValue('GB_Pos', "fixed");
  96. GM_setValue('GB_MenuDisplay', "1");
  97. GM_setValue('GB_Font', "Ubuntu");
  98. GM_setValue('GB_ColorCycleDuration', 2500);
  99. }
  100. //==============================Getting Variables==============================
  101. var vCurrentWebpage = window.location.href;
  102. var vColCycleDuration = GM_getValue("GB_ColorCycleDuration");
  103. var vGoogleBarFontType = GM_getValue("GB_Font");
  104. var vGoogleBarBackgroundColor = GM_getValue("GB_BGColor");
  105. var vGoogleBarLinkColor = GM_getValue("GB_LColor");
  106. var vGoogleBarBorderColor = GM_getValue("GB_BColor");
  107. var vBarPosition = GM_getValue('GB_Pos');
  108. var vMenuDisplay = GM_getValue('GB_MenuDisplay');
  109. var vTotalBarLinks = GM_getValue('GB_TotalBarLinks');
  110. var vTotalMenuLinks = GM_getValue('GB_TotalBarMenuLinks');
  111. var GoogleColorBorder = "#3CBA54"
  112. var GoogleColorBorderIndex = 0;
  113. var vLinkColorMode = GM_getValue('GB_LColMode');
  114. var vBorderColorMode = GM_getValue('GB_BColMode');
  115.  
  116. //==============================Reusable Functions==============================
  117. function addGoogleFont(FontName) {
  118. $("head").append("<link href='https://fonts.googleapis.com/css?family=" + FontName + "' rel='stylesheet' type='text/css'>");
  119. }
  120. addGoogleFont(GM_getValue("GB_Font"));
  121. $("#GoogleBar a,.GoogleBarDropDownButton").css("font-family", GM_getValue("GB_Font"));
  122. $('[name=GoogleBarFont]').val(GM_getValue("GB_Font"));
  123.  
  124. function GenerateBarLinksFromGetValues() {
  125. var GoogleBarUrls = [];
  126. var LinkIndex;
  127. var vTotalBarLinks = GM_getValue('GB_TotalBarLinks');
  128. for (LinkIndex = 1; LinkIndex <= GM_getValue("GB_TotalBarLinks"); LinkIndex++) {
  129. if (GM_getValue("GB_Url" + LinkIndex + "text") === undefined) {
  130. GM_setValue("GB_Url" + LinkIndex + "text", "Title");
  131. GM_setValue("GB_Url" + LinkIndex, "https://www.example.com");
  132. }
  133. GoogleBarUrls.push({
  134. "title": GM_getValue("GB_Url" + LinkIndex + "text"),
  135. "link": GM_getValue("GB_Url" + LinkIndex)
  136. });
  137. }
  138. $.each(GoogleBarUrls, function(key, val) {
  139. // if (val.LinkIndex.length > 0){
  140. var $li = $("<li class=\"GBLinkBlock\"><a class=\"GBLink\" href='" + val.link + "'>" + val.title + "</a></li>");
  141. $("#GoogleBar ul").append($li);
  142.  
  143. });
  144. }
  145. function GenerateBarMenuLinksFromGetValues() {
  146. var GoogleBarDropDownUrls = [];
  147. var LinkIndex;
  148. for (LinkIndex = 1; LinkIndex <= GM_getValue("GB_TotalBarMenuLinks"); LinkIndex++) {
  149. if (GM_getValue("GB_DropDownUrl" + LinkIndex + "text") === undefined) {
  150. GM_setValue("GB_DropDownUrl" + LinkIndex + "text", "Title");
  151. GM_setValue("GB_DropDownUrl" + LinkIndex, "https://www.example.com");
  152. }
  153. GoogleBarDropDownUrls.push({
  154. "title": GM_getValue("GB_DropDownUrl" + LinkIndex + "text"),
  155. "link": GM_getValue("GB_DropDownUrl" + LinkIndex)
  156. });
  157. }
  158. $.each(GoogleBarDropDownUrls, function(key, val) {
  159. // if (val.link.length > 0){
  160. var $DropDownLink = $("<a href='" + val.link + "'>" + val.title + "</a>");
  161. $(".dropdown-content").append($DropDownLink);
  162. });
  163. if (vMenuDisplay === "0") {
  164. $('[name=GBMenuDisplay]').prop('checked', true);
  165. $(".dropdown").css("display", "none");
  166. } else if (vMenuDisplay === "1") {
  167. $(".dropdown").css("display", "inline-block");
  168. }
  169. }
  170. function GenerateSetBarLinkInput() {
  171. var table = $('<table></table>').addClass('SettingsGoogleBarLinksTable');
  172. for (var i = 1; i <= GM_getValue("GB_TotalBarLinks"); i++) {
  173. var row = $('<tr></tr>').html('<td><input type="text" name="texturl' + i + '"></td><td colspan="2"><input type="text" name="barurl' + i + '"></td>');
  174. table.append(row);
  175. };
  176. $('#tab1').append(table);
  177. $('[name*= "barurl"]').keyup(function() {
  178. var Urlindex = $('[name*= "barurl"]').index(this);
  179. $('.GBLink').eq(Urlindex).attr("href", this.value);
  180. GM_setValue('GB_Url' + parseInt(Urlindex + 1) + '', this.value);
  181. GenerateExportSettings();
  182. });
  183. $('[name*= "texturl"]').keyup(function() {
  184. var Textindex = $('[name*= "texturl"]').index(this);
  185. $('.GBLink').eq(Textindex).html(this.value);
  186. GM_setValue('GB_Url' + parseInt(Textindex + 1) + 'text', this.value);
  187. GenerateExportSettings();
  188. });
  189. for (var i = 1; i <= GM_getValue("GB_TotalBarLinks"); i++) {
  190. $('[name = "barurl' + i + '"]').val(GM_getValue('GB_Url' + i + ''));
  191. $('[name = "texturl' + i + '"]').val(GM_getValue('GB_Url' + i + 'text'));
  192. }
  193. }
  194.  
  195. function DestroyAndCreateBarLinksAndSettingInput() {
  196. $(".SettingsGoogleBarLinksTable").remove();
  197. $(".GBLinkBlock").remove();
  198. GenerateBarLinksFromGetValues();
  199. GenerateSetBarLinkInput();
  200. $('.GBLinkBlock').eq(0).css("margin-left", "30px")
  201. $(".GBLinkBlock,.dropdown-content a,.GoogleBarDropDownButton").hover(function(e) {
  202. $(this).css("background-color", e.type === "mouseenter" ? shadeColor(GM_getValue("GB_BGColor"), parseInt(GM_getValue("GB_Hover"))) : "transparent")
  203. });
  204. }
  205.  
  206. function DestroyAndCreateMoreLinksAndSettingInput() {
  207. var GoogleBarUrls = [];
  208. $(".SettingsGoogleBarMenuTable").remove();
  209. $(".dropdown-content a").remove();
  210. // $("").remove();
  211. GenerateBarMenuLinksFromGetValues();
  212. GenerateSetBarMenuLinkInputBoxes();
  213. }
  214.  
  215. function GenerateSetBarMenuLinkInputBoxes() {
  216. var table = $('<table></table>').addClass('SettingsGoogleBarMenuTable');
  217. for (var i = 1; i <= GM_getValue("GB_TotalBarMenuLinks"); i++) {
  218. var row = $('<tr></tr>').html('<td><input type="text" value="' + GM_getValue('GB_DropDownUrl' + i + 'text') + '" name="DropDownText' + i + '"></td><td colspan="2"><input type="text" value="' + GM_getValue('GB_DropDownUrl' + i + '') + '" name="DropDownURL' + i + '"></td>');
  219. table.append(row);
  220. };
  221. $('#tab2').append(table);
  222. $('[name*= "DropDownURL"]').keyup(function() {
  223. var Urlindex = $('[name*= "DropDownURL"]').index(this);
  224. $('.dropdown-content a').eq(Urlindex).attr("href", this.value);
  225. GM_setValue('GB_DropDownUrl' + parseInt(Urlindex + 1) + '', this.value);
  226. GenerateExportSettings();
  227. });
  228. $('[name*= "DropDownText"]').keyup(function() {
  229. var Textindex = $('[name*= "DropDownText"]').index(this);
  230. $('.dropdown-content a').eq(Textindex).html(this.value);
  231. GM_setValue('GB_DropDownUrl' + parseInt(Textindex + 1) + 'text', this.value);
  232. GenerateExportSettings();
  233. });
  234. }
  235.  
  236. function GenerateExportSettings() {
  237. var ExportSettingsText = "|===============Google Bar===============|";
  238. ExportSettingsText += "\n" + GM_getValue("GB_BGColor");
  239. ExportSettingsText += "|" + GM_getValue("GB_BColor");
  240. ExportSettingsText += "|" + GM_getValue("GB_LColor");
  241. ExportSettingsText += "|" + GM_getValue('GB_Pos');
  242. ExportSettingsText += "|" + GM_getValue('GB_TotalBarLinks');
  243. ExportSettingsText += "|" + GM_getValue('GB_TotalBarMenuLinks');
  244. ExportSettingsText += "|" + GM_getValue('GB_LColMode');
  245. ExportSettingsText += "|" + GM_getValue('GB_RandCol');
  246. ExportSettingsText += "|" + GM_getValue('GB_MenuDisplay');
  247. ExportSettingsText += "|" + GM_getValue('GB_Font');
  248. ExportSettingsText += "|" + GM_getValue('GB_ColorCycleDuration');
  249. ExportSettingsText += "\n|============Google Bar Links============|\n";
  250.  
  251. for (var i = 1; i <= GM_getValue("GB_TotalBarLinks"); i++) {
  252. ExportSettingsText += GM_getValue('GB_Url' + i) + '|' + GM_getValue('GB_Url' + i + 'text') + "\n";
  253. }
  254.  
  255. ExportSettingsText += "|==========Google Bar More Links=========|\n";
  256.  
  257. for (var i = 1; i <= GM_getValue("GB_TotalBarMenuLinks"); i++) {
  258. ExportSettingsText += GM_getValue('GB_DropDownUrl' + i) + '|' + GM_getValue('GB_DropDownUrl' + i + 'text') + "\n";
  259. }
  260. $('#ExportSettings').val(ExportSettingsText);
  261. }
  262.  
  263.  
  264.  
  265. function extractHostname(url) {
  266. var hostname;
  267. //find & remove protocol (http, ftp, etc.) and get the hostname
  268. if (url.indexOf("://") > -1) {
  269. hostname = url.split('/')[2];
  270. } else {
  271. hostname = url.split('/')[0];
  272. }
  273. //find & remove port number
  274. hostname = hostname.split(':')[0];
  275.  
  276. return hostname;
  277. }
  278.  
  279. function getRandomInt(max) {
  280. return Math.floor(Math.random() * Math.floor(max));
  281. }
  282.  
  283.  
  284. function shadeColor(color, percent) {
  285. var R = parseInt(color.substring(1, 3), 16);
  286. var G = parseInt(color.substring(3, 5), 16);
  287. var B = parseInt(color.substring(5, 7), 16);
  288. R = parseInt(R * (100 + percent) / 100);
  289. G = parseInt(G * (100 + percent) / 100);
  290. B = parseInt(B * (100 + percent) / 100);
  291. R = (R < 255) ? R : 255;
  292. G = (G < 255) ? G : 255;
  293. B = (B < 255) ? B : 255;
  294. var RR = ((R.toString(16).length == 1) ? "0" + R.toString(16) : R.toString(16));
  295. var GG = ((G.toString(16).length == 1) ? "0" + G.toString(16) : G.toString(16));
  296. var BB = ((B.toString(16).length == 1) ? "0" + B.toString(16) : B.toString(16));
  297. return "#" + RR + GG + BB;
  298. }
  299.  
  300. function invertColor(hex, bw) {
  301. if (hex.indexOf('#') === 0) {
  302. hex = hex.slice(1);
  303. }
  304. // convert 3-digit hex to 6-digits.
  305. if (hex.length === 3) {
  306. hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
  307. }
  308. if (hex.length !== 6) {
  309. throw new Error('Invalid HEX color.');
  310. }
  311. var r = parseInt(hex.slice(0, 2), 16),
  312. g = parseInt(hex.slice(2, 4), 16),
  313. b = parseInt(hex.slice(4, 6), 16);
  314. if (bw) {
  315. // http://stackoverflow.com/a/3943023/112731
  316. return (r * 0.299 + g * 0.587 + b * 0.114) > 186 ?
  317. '#000000' :
  318. '#FFFFFF';
  319. }
  320. // invert color components
  321. r = (255 - r).toString(16);
  322. g = (255 - g).toString(16);
  323. b = (255 - b).toString(16);
  324. // pad each with zeros and return
  325. return "#" + padZero(r) + padZero(g) + padZero(b);
  326. }
  327.  
  328. function padZero(str, len) {
  329. len = len || 2;
  330. var zeros = new Array(len).join('0');
  331. return (zeros + str).slice(-len);
  332. }
  333.  
  334.  
  335.  
  336.  
  337. function GoogleBarSearch(SearchURL, SearchPath = 0) {
  338. $('[name="q"]').on("input", function() {
  339. var Gsearchterm = encodeURIComponent(this.value);
  340. var Hostname = extractHostname(SearchURL);
  341.  
  342. if (SearchURL.indexOf(SearchPath) > 1) {
  343. Hostname = SearchPath;
  344. }
  345.  
  346. var SearchURLwQ = SearchURL + Gsearchterm;
  347. $('#GoogleBar [href*="' + Hostname + '"]').attr("href", SearchURLwQ).css('text-decoration', 'underline');
  348. });
  349.  
  350. $('[name="GoogleBarSearchTerm"]').on("input", function() {
  351. var Gsearchterm = encodeURIComponent(this.value);
  352. var Hostname = extractHostname(SearchURL);
  353.  
  354. if (SearchURL.indexOf(SearchPath) > 1) {
  355. Hostname = SearchPath;
  356. }
  357.  
  358. var SearchURLwQ = SearchURL + Gsearchterm;
  359. $('#GoogleBar [href*="' + Hostname + '"]').attr("href", SearchURLwQ).css('text-decoration', 'underline');
  360. });
  361. }
  362. //==============================Initially Create Bar Links==============================
  363.  
  364. function CreateGoogleBar() {
  365. // <input type="text" name="GoogleBarSearchTerm">
  366. // <label for="GBColRand">Cycle Color</label>
  367. // <input type="checkbox" name="group-three" id="GBColRand" />
  368. // <input type='number' min="250" max="60000" step="250" value="` + vColCycleDuration + `" name='vColCycleDuration' />
  369. $("html").append(`
  370.  
  371. <div id="GoogleBar">
  372. <ul></ul>
  373.  
  374. </div>
  375. <div id="settings_box">
  376. <div id="close_button">&times;</div>
  377. <div class="tabs">
  378. <ul class="tab-links">
  379. <li class="active"><a href="#tab1">Links</a></li>
  380. <li><a href="#tab2">More</a></li>
  381. <li><a href="#tab3">Search</a></li>
  382. <li><a href="#tab4">Colors</a></li>
  383. <li><a href="#tab5">Misc.</a></li>
  384. <li><a href="#tab6">&#x25B2;&#x25BC;</a></li>
  385. </ul>
  386. <div class="tab-content">
  387. <div id="tab1" class="tab active">
  388. <h2>Google Bar Links<input type="number" name="BarLinkNumberInput" min="1" max="30" maxlength="2" oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" value=` + vTotalBarLinks + `></h2>
  389. </div>
  390. <div id="tab2" class="tab">
  391. <h2>Google Bar Drop Down Menu<input type="number" name="BarMenuNumberInput" min="1" max="30" maxlength="2" oninput="javascript: if (this.value.length > this.maxLength) this.value = this.value.slice(0, this.maxLength);" value=` + GM_getValue("GB_TotalBarMenuLinks") + `></h2>
  392. <div id="MoreDisplaySetting">
  393. <label for="GBMenuDisplay">Disable More</label>
  394. <input type="checkbox" name="GBMenuDisplay" id="GBMenuDisplay" />
  395. </div>
  396. </div>
  397. <div id="tab3" class="tab">
  398. <h2>Google Bar Search</h2>
  399. <div id="MoreDisplaySetting">
  400. <p>Search settings are coming soon.
  401. </div>
  402. </div>
  403. <div id="tab4" class="tab">
  404. <h2>Google Bar Colors</h2>
  405. <label for="GoogleBarBackgroundColor">Bar Color:</label>
  406. <input type="color" value="` + GM_getValue("GB_BGColor") + `" id="GoogleBarBackgroundColor" onchange="BackgroundColorChange();">
  407.  
  408. <br>
  409. <label for="GoogleBarLinkColor">Link Color:</label>
  410. <input type="color" value="` + GM_getValue("GB_LColor") + `" id="GoogleBarLinkColor">
  411. <label for="ICol">Invert</label>
  412. <input title="Link Color is inverted from Bar Color" type="radio" name="group-one" id="ICol" value="1" />
  413. <label for="BWCol">Black/White</label>
  414. <input title="Link Color is Black or White based on Bar Color" type="radio" name="group-one" id="BWCol" value="2" />
  415. <label for="HPcol">Handpick</label>
  416. <input title="No Automatic Link Color Manipulation" type="radio" name="group-one" id="HPcol" value="3" />
  417. <br>
  418. <label for="GoogleBarBorderColor">Border Color:</label>
  419. <input type="color" value="` + GM_getValue("GB_BColor") + `" id="GoogleBarBorderColor">
  420. <label for="IBCol">Invert</label>
  421. <input title="Border Color is inverted from Bar Color" type="radio" name="group-two" id="IBCol" value="1" />
  422. <label for="BWBCol">Black/White</label>
  423. <input title="Border Color is Black or White based on Bar Color" type="radio" name="group-two" id="BWBCol" value="2" />
  424. <label for="HPBcol">Handpick</label>
  425. <input title="No Automatic Border Color Manipulation" type="radio" name="group-two" id="HPBcol" value="3" />
  426. <br>
  427. </div>
  428. <div id="tab5" class="tab">
  429. <h2>Google Bar Placement</h2>
  430. <div id="BarPosRadioButtons">
  431. <label for="GBPosA">Sticky</label>
  432. <input type="checkbox" name="StickyCheckBox" id="GBPosA" value="absolute" />
  433. </div>
  434. <h2>Google Bar Font</h2>
  435. <div id="BarFontOption">
  436. <select name="GoogleBarFont"></select>
  437. </div>
  438. </div>
  439. <div id="tab6" class="tab">
  440. <h2>Import/Export</h2>
  441. <p>Warning: Editing the Imported Code can cause issues.<br> Only paste generated exported code please!</p>
  442. <h4>Import</h4>
  443. <textarea id="ImportSettings" rows="6" cols="50"></textarea>
  444. <h4>Export</h4>
  445. <textarea id="ExportSettings" rows="6" cols="50"></textarea>
  446.  
  447. <button id="CopyButton">Copy</button>
  448. </div>
  449. </div>
  450. <div>
  451. <table id="SettingsFooter">
  452. <tr>
  453. <td><a id="SubmitBug" title="Submit a bug" href="https://gf.qytechs.cn/en/forum/post/discussion?script=29660"><img src="data:image/png;base64,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/GMzLdsAADowaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzExMSA3OS4xNTgzMjUsIDIwMTUvMDkvMTAtMDE6MTA6MjAgICAgICAgICI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgICAgICAgICAgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iCiAgICAgICAgICAgIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1IChXaW5kb3dzKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAxNy0wNS0wOVQxNjoyOTozNS0wNTowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMTctMDUtMDlUMTY6Mjk6MzUtMDU6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDE3LTA1LTA5VDE2OjI5OjM1LTA1OjAwPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+eG1wLmlpZDo0NzIzNjQ4Zi0wZTVmLWQ2NDktYjJjNi02OWNmZGNjZmI0Njk8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPmFkb2JlOmRvY2lkOnBob3Rvc2hvcDo4YjliNGFhYy0zNGZlLTExZTctYjRkMC1lMjlhMmRmYWRjNzE8L3htcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDowYmYyMzM3NS1kY2E3LTdkNGItYTYwNi02ZmU4NDRjZTRhZDU8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkhpc3Rvcnk+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5jcmVhdGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6MGJmMjMzNzUtZGNhNy03ZDRiLWE2MDYtNmZlODQ0Y2U0YWQ1PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE3LTA1LTA5VDE2OjI5OjM1LTA1OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNSAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjQ3MjM2NDhmLTBlNWYtZDY0OS1iMmM2LTY5Y2ZkY2NmYjQ2OTwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNy0wNS0wOVQxNjoyOTozNS0wNTowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwaG90b3Nob3A6Q29sb3JNb2RlPjM8L3Bob3Rvc2hvcDpDb2xvck1vZGU+CiAgICAgICAgIDxwaG90b3Nob3A6SUNDUHJvZmlsZT5zUkdCIElFQzYxOTY2LTIuMTwvcGhvdG9zaG9wOklDQ1Byb2ZpbGU+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpYUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WVJlc29sdXRpb24+NzIwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjIwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjE5PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz5meyu1AAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAARrSURBVHjajJJJbJVVGIafc/7/9t7b/45t6UBbhTLKDCKIUyAhqCSiEqMREyOEKASjMSwMsmDhEBdOEA2DBBOjrIxxYEFwQBSHRJkJRUBbKJTS0tv2Tv94znHhEF0oPst38eT73rxixeu9hAp8lcSSkk2z1jFjzHF6vHGkimffVLFJm6ulS2f7Lp3H2E3tgdu/yWQyjzfXXtJdlyey5fSreJFFjCoxG6wZd61HGYjJiEqU5Rc1n9nyBDkfVJ2siVWObBS62loYqtweesNPp1rzH9e6uePFkUbe6X2OK5UWHGsIjMCSYEcaIi3vU8palk6VV50bHM2ZrYrpQ0cJX2wczE7vWxobsJYaJdHJENWV3+K9OUA3HfTc2YTjjOCW7LctofdLo3dLrQUCugItV/Yn8q0L+vYys/8ghUr2qcqm8tdhTwaTtrFSoAu1dL+c3NN3JbVxfPEEky//QI9pyvuRXO0rq6ccxJAGsIQ5ZgyEgX6pmsiSCjKJjn5vc11eYzkKowQ6kliOoqHNY/Sw+0LcSzSO2DnCQD2PAWWsb0JlYyMkUhjittrq9qm1P6ZvG3jriUXe5Iv7mHxvmbp8iZqBGtI+JBMBZx8tcKolQ3fdjRs64zd7maGRdTIhdiMECBAPvjaAlOD7Maxq9jG3/aNdp+ftFCKeoHHQcGulwHr7KD1dPluKkziRzlPICpTy6DiznFjP3WvLDG+z7QBtQDzwylVcN01r8ynmzv6APd7hI+ddZqVMmjIWvSLFHNWP3z3EIT9Ps+1Ri8bVFZrS4tyShikTjh5eQn9hJtlU9Y8OLQ9vpJWTA87iq8qb5WgHgSZNyFQ5RK+o5QIpJogiDhECTVLWMuRVxnf2xe6P/A4y2RrS6SRSCrBi7uwrA6MuHzmx7DNEhCUVf6IQZAnIEqAQf+VCKCxb03n8jg97u3MDxgzeYhDIULHc9eOHtcXPatR3WwXGGCO5JkaCAd1waqeMR0cKfYVvS6XqwzKI2CCD3I7rbvhkYcv07dsiv17A/xAC2q/DGfv+rrZp+5Y4sdY3RoaHn7WTdjRfJYq63nFJVue1nzc92Ji/PffvRIS06DnXZ1Pmez/HMwkdF1JKrRPJCl2dD6VPHtywS2qJtL1ryoQMEEZz4dDKHZfOrWoIbRuEMNKSEktISpH3RV6kM/Wi/ljVeIj/uFEAnglwZK7T0ZhS8cwBjCQgjRQCQiXaKoG8aUxDedzMvLOqFGg0+l+VCqj4mpubck92tGfHllx/ioiKE+Mxfp9NNbD2JGLh1WKkeqcmJh9ekGn/9EpYITT/7FIg0MYw6JaZUt/41aTWaV/6drYQr7Eu+JWRvU4sREZaIoT5KZX0VwwVc7iVNu4ZNXbZ3ET9ds+EjOgQjcEA5SjA1Yrpqfy7C9uaF12sZimWHUY1OI8g7QORsbGNsUjYwWqjbSquw6AHORGyINm8ZnQs896vqrzmql9dDFgtidr97U5qx7ik87kkoOra+KGDXWMOpuzagwib3wYAYVQcG6Op2HAAAAAASUVORK5CYII="></a></td>
  454. </tr>
  455. </table>
  456. </div>
  457. </div>
  458. `);
  459.  
  460.  
  461. $("#GoogleBar").append('<div class="dropdown"><button class="GoogleBarDropDownButton">More ▾</button><div class="dropdown-content"></div></div>');
  462. $("#GoogleBar").prepend('<div id="ShowGear"></div>');
  463. $("#GoogleBar").prepend('<div id="GearIcon">⚙</div>');
  464.  
  465. GenerateBarLinksFromGetValues();
  466. GenerateBarMenuLinksFromGetValues();
  467. GenerateExportSettings();
  468. GenerateSetBarLinkInput();
  469. GenerateSetBarMenuLinkInputBoxes();
  470.  
  471.  
  472. }
  473.  
  474. CreateGoogleBar();
  475.  
  476. $(document).ready(function() {
  477. // SetDefaults();
  478.  
  479. //================================================test code
  480.  
  481. var fonts = ["Arimo","Comfortaa","Dosis","Inconsolata","Lato","Lora","Merriweather","Montserrat","Mukta","Muli","Noto Sans","Open Sans Condensed","Open Sans","Oswald","Oxygen","PT Sans","Playfair Display","Poppins","Questrial","Quicksand","Raleway","Righteous","Roboto Condensed","Roboto Mono","Roboto Slab","Roboto","Slabo 27px","Source Sans Pro","Titillium Web","Ubuntu"];
  482. var sel = $('[name=GoogleBarFont]');
  483. for(var i = 0; i < fonts.length; i++) {
  484. var opt = document.createElement('option');
  485. opt.innerHTML = fonts[i];
  486. opt.value = fonts[i];
  487. sel.append(opt);
  488. };
  489. //================================================test code
  490.  
  491. $('[name=GBMenuDisplay]').change(function() {
  492. var c = this.checked ? GM_setValue("GB_MenuDisplay", "0") : GM_setValue("GB_MenuDisplay", "1");
  493. if (GM_getValue("GB_MenuDisplay") === "0") {
  494. $(".dropdown").css("display", "none");
  495. } else if (GM_getValue("GB_MenuDisplay") === "1") {
  496. $(".dropdown").css("display", "inline-block");
  497. }
  498. GenerateExportSettings();
  499. });
  500.  
  501.  
  502.  
  503. $('input[type=radio][name=group-one]').change(function() {
  504. if (this.value === "1") {
  505. GM_setValue('GB_LColMode', "1");
  506. GM_setValue('GB_LColor', invertColor(GM_getValue('GB_BGColor'), ""));
  507. $('#GoogleBar a,#GearIcon,.GoogleBarDropDownButton').css("color", invertColor(GM_getValue('GB_BGColor'), ""));
  508. $('#GoogleBar,.dropdown-content').css("background-color", GM_getValue('GB_BGColor'));
  509. } else if (this.value === "2") {
  510.  
  511. GM_setValue('GB_LColMode', "2");
  512. GM_setValue('GB_LColor', invertColor(GM_getValue('GB_BGColor'), "BW"));
  513. $('#GoogleBar a,#GearIcon,.GoogleBarDropDownButton').css("color", invertColor(GM_getValue('GB_BGColor'), "BW"));
  514. $('#GoogleBar,.dropdown-content').css("background-color", GM_getValue('GB_BGColor'));
  515. } else if (this.value === "3") {
  516.  
  517. GM_setValue('GB_LColMode', "3");
  518. }
  519. document.getElementById("GoogleBarLinkColor").value = GM_getValue('GB_LColor');
  520. GenerateExportSettings();
  521. });
  522.  
  523.  
  524.  
  525. $('input[type=radio][name=group-two]').change(function() {
  526. if (this.value === "1") {
  527. GM_setValue('GB_BColMode', "1");
  528. GM_setValue('GB_BColor', invertColor(GM_getValue('GB_BGColor'), ""));
  529. $('.GBLinkActive').css("borderTop", "2px solid " + invertColor(GM_getValue('GB_BGColor'), ""));
  530. $(".GBLinkBlock").hover(function(e) {
  531. $(this).css("borderTop", e.type === "mouseenter" ? "2px solid " + GM_getValue("GB_BColor") : "2px solid transparent")
  532. });
  533. } else if (this.value === "2") {
  534. GM_setValue('GB_BColMode', "2");
  535. GM_setValue("GB_BColor", invertColor(GM_getValue('GB_BGColor'), "BW"));
  536. $('.GBLinkActive').css("borderTop", "2px solid " + invertColor(GM_getValue('GB_BGColor'), "BW"));
  537. $(".GBLinkBlock").hover(function(e) {
  538. $(this).css("borderTop", e.type === "mouseenter" ? "2px solid " + GM_getValue("GB_BColor") : "2px solid transparent")
  539. });
  540. } else if (this.value === "3") {
  541.  
  542. GM_setValue('GB_BColMode', "3");
  543.  
  544. }
  545. GenerateExportSettings();
  546. document.getElementById("GoogleBarBorderColor").value = GM_getValue('GB_BColor');
  547. });
  548.  
  549. $('input[type=number][name=BarLinkNumberInput]').bind('keyup input', function() {
  550. GM_setValue("GB_TotalBarLinks", this.value);
  551. DestroyAndCreateBarLinksAndSettingInput();
  552. GenerateExportSettings();
  553. });
  554.  
  555.  
  556.  
  557. $('input[type=number][name=BarMenuNumberInput]').bind('keyup input', function() {
  558. GM_setValue("GB_TotalBarMenuLinks", this.value);
  559. DestroyAndCreateMoreLinksAndSettingInput();
  560. GenerateExportSettings();
  561. });
  562.  
  563.  
  564. $('[name=StickyCheckBox]').change(function() {
  565. var c = this.checked ? GM_setValue("GB_Pos", "fixed") : GM_setValue("GB_Pos", "absolute");
  566. if (GM_getValue("GB_Pos") === "fixed") {
  567. GM_setValue('GB_Pos', "fixed");
  568. } else {
  569. GM_setValue('GB_Pos', "absolute");
  570.  
  571. }
  572. $('#GoogleBar').css("position", GM_getValue("GB_Pos"));
  573. GenerateExportSettings();
  574. });
  575.  
  576.  
  577. $('[name=GoogleBarFont]').change(function() {
  578. var fontID = $('[name=GoogleBarFont]').find(":selected").text();
  579. GM_setValue("GB_Font", fontID);
  580. addGoogleFont(fontID);
  581. $("#GoogleBar a,.GoogleBarDropDownButton").css("font-family", fontID);
  582. GenerateExportSettings();
  583. });
  584.  
  585.  
  586.  
  587.  
  588. $('#ImportSettings').on('input', function(e) {
  589. var ImportedSettings = $('#ImportSettings').val();
  590. if (ImportedSettings.startsWith("|===============Google Bar===============|")) {
  591. var ImportedRow = ImportedSettings.split(/\r?\n/);
  592. var ImportedBarSettings = ImportedRow[1];
  593. var ImportedBarSettingsCell = ImportedBarSettings.split("|");
  594. GM_setValue("GB_BGColor", ImportedBarSettingsCell[0]);
  595. GM_setValue("GB_BColor", ImportedBarSettingsCell[1]);
  596. GM_setValue("GB_LColor", ImportedBarSettingsCell[2]);
  597. GM_setValue("GB_Pos", ImportedBarSettingsCell[3]);
  598. GM_setValue("GB_TotalBarLinks", ImportedBarSettingsCell[4]);
  599. GM_setValue("GB_TotalBarMenuLinks", ImportedBarSettingsCell[5]);
  600. GM_setValue("GB_LColMode", ImportedBarSettingsCell[6]);
  601. GM_setValue("GB_RandCol", ImportedBarSettingsCell[7]);
  602. GM_setValue("GB_MenuDisplay", ImportedBarSettingsCell[8]);
  603. GM_setValue("GB_Font", ImportedBarSettingsCell[9]);
  604. GM_setValue("GB_ColorCycleDuration", ImportedBarSettingsCell[10]);
  605.  
  606. var ImportedBarSites = ImportedRow[3];
  607. var TotalBarLinks = GM_getValue("GB_TotalBarLinks")
  608. var TotalMenuLinks = GM_getValue("GB_TotalBarMenuLinks")
  609. var i;
  610. var n;
  611. var LinkPart;
  612. for (i = 1; i <= TotalBarLinks; i++) {
  613. n = i + 2;
  614. LinkPart = ImportedRow[n].split("|");
  615. GM_setValue("GB_Url" + i , LinkPart[0]);
  616. //console.log(GM_getValue("GB_Url" + i));
  617. GM_setValue("GB_Url" + i + "text", LinkPart[1]);
  618. //console.log(GM_getValue("GB_Url" + i + "text"));
  619. DestroyAndCreateBarLinksAndSettingInput();
  620. DestroyAndCreateMoreLinksAndSettingInput();
  621. GenerateExportSettings();
  622. }
  623.  
  624. for (i = 1; i <= TotalMenuLinks; i++) {
  625. n = i + 3 + parseInt(TotalBarLinks);
  626. LinkPart = ImportedRow[n].split("|");
  627. GM_setValue("GB_DropDownUrl" + i , LinkPart[0]);
  628. console.log(GM_getValue("GB_DropDownUrl" + i));
  629. GM_setValue("GB_DropDownUrl" + i + "text", LinkPart[1]);
  630. console.log(GM_getValue("GB_DropDownUrl" + i + "text"));
  631. DestroyAndCreateBarLinksAndSettingInput();
  632. DestroyAndCreateMoreLinksAndSettingInput();
  633. GenerateExportSettings();
  634. }
  635.  
  636.  
  637. $('#GoogleBar,.dropdown-content').css("background-color", ImportedBarSettingsCell[0]);
  638. $(".GBLinkBlock,.dropdown-content a,.GoogleBarDropDownButton").hover(function(e) {
  639. $(this).css("background-color", e.type === "mouseenter" ? shadeColor(GM_getValue("GB_BGColor"), parseInt(GM_getValue("GB_Hover"))) : "transparent")
  640. });
  641. $('.GBLinkActive').css("borderTop", "2px solid " + ImportedBarSettingsCell[1]);
  642. $(".GBLinkBlock").hover(function(e) {
  643. $(this).css("borderTop", e.type === "mouseenter" ? "2px solid " + ImportedBarSettingsCell[1] : "2px solid transparent")
  644. });
  645. $('#GoogleBar a,#GearIcon,.GoogleBarDropDownButton').css("color", ImportedBarSettingsCell[2]);
  646. $('#GoogleBar').css("position", ImportedBarSettingsCell[3]);
  647. if (ImportedBarSettingsCell[7] === "1") {} else {
  648. GM_addStyle(`#GoogleBar a,#GearIcon,.GoogleBarDropDownButton{ms-transition:color 400ms linear;
  649. transition:color 400ms linear;
  650. webkit-transition:color 400ms linear;}
  651. #GoogleBar,.dropdown-content{ms-transition:background-color 400ms linear;
  652. transition:background-color 400ms linear;
  653. webkit-transition:background-color 400ms linear;`);
  654. }
  655.  
  656. DestroyAndCreateBarLinksAndSettingInput();
  657. DestroyAndCreateMoreLinksAndSettingInput();
  658. }
  659. GenerateExportSettings();
  660. });
  661.  
  662.  
  663. if (vLinkColorMode === "1") {
  664. $("#ICol").prop("checked", true)
  665. } else if (vLinkColorMode === "2") {
  666. $("#BWCol").prop("checked", true)
  667. } else if (vLinkColorMode === "3") {
  668. $("#HPcol").prop("checked", true)
  669. }
  670.  
  671. if (vBorderColorMode === "1") {
  672. $("#IBCol").prop("checked", true)
  673. } else if (vBorderColorMode === "2") {
  674. $("#BWBCol").prop("checked", true)
  675. } else if (vBorderColorMode === "3") {
  676. $("#HPBcol").prop("checked", true)
  677. }
  678.  
  679.  
  680. if (vBarPosition === "fixed") {
  681. $("#GBPosA").prop("checked", true)
  682. }
  683.  
  684.  
  685. //=========Background color change
  686. $('#GoogleBarBackgroundColor').on('input', function() {
  687. $('#GoogleBar,.dropdown-content').css("background-color", $(this).val());
  688. GM_setValue("GB_BGColor", $(this).val());
  689. if (GM_getValue('GB_LColMode') === "1") {
  690. $('#GoogleBar a,#GearIcon,.GoogleBarDropDownButton').css("color", invertColor(GM_getValue('GB_BGColor'), ""));
  691. $('#GoogleBar,.dropdown-content').css("background-color", GM_getValue('GB_BGColor'));
  692. GM_setValue("GB_LColor", invertColor(GM_getValue('GB_BGColor'), ""));
  693. } else if (GM_getValue('GB_LColMode') === "2") {
  694. $('#GoogleBar a,#GearIcon,.GoogleBarDropDownButton').css("color", invertColor(GM_getValue('GB_BGColor'), "BW"));
  695. $('#GoogleBar,.dropdown-content').css("background-color", GM_getValue('GB_BGColor'));
  696. GM_setValue("GB_LColor", invertColor(GM_getValue('GB_BGColor'), "BW"));
  697. }
  698. document.getElementById("GoogleBarLinkColor").value = GM_getValue('GB_LColor');
  699. if (GM_getValue('GB_BColMode') === "1") {
  700. GM_setValue('GB_BColMode', "1");
  701. GM_setValue('GB_BColor', invertColor(GM_getValue('GB_BGColor'), ""));
  702. $('.GBLinkActive').css("borderTop", "2px solid " + invertColor(GM_getValue('GB_BGColor'), ""));
  703. $(".GBLinkBlock").hover(function(e) {
  704. $(this).css("borderTop", e.type === "mouseenter" ? "2px solid " + GM_getValue("GB_BColor") : "2px solid transparent")
  705. });
  706. } else if (GM_getValue('GB_BColMode') === "2") {
  707. GM_setValue('GB_BColMode', "2");
  708. GM_setValue("GB_BColor", invertColor(GM_getValue('GB_BGColor'), "BW"));
  709. $('.GBLinkActive').css("borderTop", "2px solid " + invertColor(GM_getValue('GB_BGColor'), "BW"));
  710. $(".GBLinkBlock").hover(function(e) {
  711. $(this).css("borderTop", e.type === "mouseenter" ? "2px solid " + GM_getValue("GB_BColor") : "2px solid transparent")
  712. });
  713. }
  714. document.getElementById("GoogleBarBorderColor").value = GM_getValue('GB_BColor');
  715.  
  716. });
  717.  
  718.  
  719.  
  720.  
  721. //=========link color change
  722. $('#GoogleBarLinkColor').on('input', function() {
  723. $('#GoogleBar a,#GearIcon,.GoogleBarDropDownButton').css("color", $(this).val());
  724. GM_setValue("GB_LColor", $(this).val());
  725. $("#HPcol").prop("checked", true)
  726. GM_setValue('GB_LColMode', "3");
  727. });
  728.  
  729. //=========border color change
  730. $('#GoogleBarBorderColor').on('input', function() {
  731.  
  732. $('.GBLinkActive').css("borderTop", "2px solid " + $(this).val());
  733. GM_setValue("GB_BColor", $(this).val());
  734. $(".GBLinkBlock").hover(function(e) {
  735. $(this).css("borderTop", e.type === "mouseenter" ? "2px solid " + GM_getValue("GB_BColor") : "2px solid transparent")
  736. });
  737. GM_setValue('GB_BColMode', "3");
  738. $("#HPBcol").prop("checked", true)
  739. });
  740.  
  741.  
  742.  
  743. $("#CopyButton").click(function() {
  744. var copyText = document.querySelector("#ExportSettings");
  745. copyText.select();
  746. document.execCommand("Copy");
  747. });
  748.  
  749. $("#GearIcon,#close_button").click(function() {
  750. showsettings();
  751. $('.tabs .tab-links a')[0].click();
  752. });
  753.  
  754. var $GearIcon = $('#GearIcon');
  755. var $ShowGear = $('#ShowGear');
  756.  
  757. $ShowGear.on('mouseover', function() {
  758. $('#GearIcon').addClass("show");
  759. });
  760. $('#GearIcon').on('mouseout', function() {
  761. $(this).removeClass("show");
  762. });
  763.  
  764. $('.tabs .tab-links a').on('click', function(e) {
  765. $('#SubmitBug').css("left", getRandomInt(96) + "%")
  766. var currentAttrValue = $(this).attr('href');
  767. GoogleColorBorderIndex++
  768. if (GoogleColorBorderIndex === 4) {
  769. GoogleColorBorderIndex = 0
  770. GoogleColorBorder = "#3CBA54";
  771. } else if (GoogleColorBorderIndex === 1) {
  772. GoogleColorBorder = "#f4c20d";
  773. } else if (GoogleColorBorderIndex === 2) {
  774. GoogleColorBorder = "#db3236";
  775. } else if (GoogleColorBorderIndex === 3) {
  776. GoogleColorBorder = "#4885ed";
  777. }
  778.  
  779.  
  780. // Show/Hide Tabs
  781. $('.tabs ' + currentAttrValue).slideDown(400);
  782. $('.tabs ' + currentAttrValue).siblings().slideUp(300);
  783. // Change/remove current tab to active
  784. $(this).parent('li').addClass('active').css('borderBottom', '2px solid ' + GoogleColorBorder).siblings().removeClass('active').css('borderBottom', '2px solid transparent');
  785.  
  786. e.preventDefault();
  787. });
  788.  
  789. //loop to set value to all inpot boxes
  790.  
  791. });
  792.  
  793.  
  794.  
  795. // $(".gb_Ec").appendTo($("#GoogleBar")).css("float","right");
  796. // $("#gbwa").appendTo($('[name*="GoogleBarSearchTerm"]')).css("float", "right");
  797. // $(".gb_Nc").appendTo($("#GoogleBar")).css("float", "right");
  798. // $("#gbsfw").appendTo($(".gb_Nc"));
  799. //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  800. // $('[name="q"]').on("input", function() {
  801. // var GBsearchterm = this.value;
  802. // $('[name="GoogleBarSearchTerm"]').val(GBsearchterm)
  803. // });
  804.  
  805. // $('[name="GoogleBarSearchTerm"]').on("input", function() {
  806. // var GBsearchterm = this.value;
  807. // $('[name="q"]').val(GBsearchterm);
  808.  
  809.  
  810. //});
  811.  
  812.  
  813. // $('[name="GoogleBarSearchTerm"]').val($('[name="q"]').val());
  814.  
  815.  
  816. GoogleBarSearch("https://www.google.com/webhp#q=", "webhp");
  817. GoogleBarSearch("https://www.google.com/search?site=imghp&tbm=isch&q=", "imghp");
  818. GoogleBarSearch("https://books.google.com/?q=", "");
  819. GoogleBarSearch("https://developers.google.com/s/results/?q=", "");
  820. GoogleBarSearch("https://docs.google.com/document/u/0/?q=", "");
  821. GoogleBarSearch("https://drive.google.com/drive/search?q=", "");
  822. GoogleBarSearch("https://earth.google.com/web/search/", "");
  823. GoogleBarSearch("https://www.google.com/finance?q=", "finance");
  824. GoogleBarSearch("https://groups.google.com/forum/#!search/", "");
  825. GoogleBarSearch("https://mail.google.com/mail/u/0/#search/", "");
  826. GoogleBarSearch("https://inbox.google.com/search/", "");
  827. GoogleBarSearch("https://keep.google.com/#search/text ", "");
  828. GoogleBarSearch("https://maps.google.com/?q=", "");
  829. GoogleBarSearch("https://myactivity.google.com/myactivity?q=", "");
  830. GoogleBarSearch("https://news.google.com/news/section?cf=all&q=", "");
  831. GoogleBarSearch("https://patents.google.com/?q=", "");
  832. GoogleBarSearch("https://photos.google.com/search/", "");
  833. GoogleBarSearch("https://www.google.com/publicdata/directory#!q=", "publicdata");
  834. GoogleBarSearch("https://scholar.google.com/scholar?hl=en&q=", "");
  835. GoogleBarSearch("https://www.google.com/shopping?q=", "shopping");
  836. GoogleBarSearch("https://support.google.com/search?q=", "");
  837. //not gonna work....\/\/\/
  838. //GoogleBarSearch("https://www.google.com/search?tbm=vid&hl=en&source=hp&q=","vid");
  839. //not gonna work..../\/\/\
  840. GoogleBarSearch("https://www.youtube.com/results?search_query=", "");
  841. GoogleBarSearch("https://www.facebook.com/search/top/?q=", "");
  842. GoogleBarSearch("https://www.reddit.com/search?q=", "");
  843. GoogleBarSearch("https://www.amazon.com/s/?tag=forgetabyte0f-20&field-keywords=", "");
  844. GoogleBarSearch("https://en.wikipedia.org/wiki/", "");
  845. GoogleBarSearch("https://search.yahoo.com/search;?p=", "");
  846. GoogleBarSearch("https://twitter.com/search?q=", "");
  847. GoogleBarSearch("https://www.netflix.com/search?q=", "");
  848. GoogleBarSearch("http://www.ntd.tv/?s=", "");
  849. GoogleBarSearch("http://craigslist.org/search/sss?query=", "");
  850. GoogleBarSearch("https://www.pinterest.com/search/pins/?q=", "");
  851. GoogleBarSearch("http://www.espn.com/search/results?q=", "");
  852. GoogleBarSearch("https://www.pornhub.com/video/search?search=", "");
  853. GoogleBarSearch("http://www.cnn.com/search/?text=", "");
  854. GoogleBarSearch("https://www.bing.com/search?q=", "");
  855. GoogleBarSearch("http://www.imdb.com/find?q=", "");
  856. GoogleBarSearch("https://query.nytimes.com/search/sitesearch/?&pgtype=Homepage#/", "");
  857. GoogleBarSearch("http://stackoverflow.com/search?q=", "");
  858. GoogleBarSearch("https://github.com/search?q=", "");
  859. GoogleBarSearch("http://www.xvideos.com/?k=", "");
  860. GoogleBarSearch("https://xhamster.com/search.php?q=", "");
  861. GoogleBarSearch("https://gf.qytechs.cn/en/scripts?&q=", "");
  862. GoogleBarSearch("https://support.google.com/websearch/search?q=", "");
  863.  
  864. //https://research.google.com/bigpicture/music/#s%3Arascal%20flatts
  865. //play store
  866. //alerts
  867.  
  868.  
  869. function showsettings() {
  870. $("#settings_box").fadeToggle(250);
  871. $("#settings_box").css({
  872. "visibility": "visible",
  873. "display": "block"
  874. });
  875. }
  876.  
  877. $('.GBLinkBlock').eq(0).css("margin-left", "30px")
  878. GM_addStyle(`
  879.  
  880.  
  881. #GoogleBar {
  882. height: 29px;
  883. position: ` + GM_getValue("GB_Pos") + `;
  884. top: 0;
  885. left: 0;
  886. width: 100%;
  887. z-index: 2999999998;
  888. }
  889.  
  890. .GBLink,
  891. .GoogleBarDropDownButton {
  892. font-family: ` + vGoogleBarFontType + `;
  893. }
  894.  
  895. #GoogleBar *,
  896. #settings_box * {
  897. font-size: 13px;
  898. text-decoration: none;
  899. }
  900.  
  901. #GoogleBar h2 {
  902. Background-calendar: #ddd!important;
  903. }
  904.  
  905. #GoogleBar ul {
  906. white-space: nowrap;
  907. margin: 0;
  908. padding: 0;
  909. }
  910.  
  911.  
  912. .GBLinkBlock {
  913. display: block;
  914. float: left;
  915. height: 27px;
  916. line-height: 27px!important;
  917. padding-left: 8px;
  918. padding-right: 8px;
  919. text-align: center;
  920. text-align: left;
  921. border-top: 2px solid transparent;
  922. }
  923.  
  924. .GBLinkBlock:hover {
  925. border-top: 2px solid ` + vGoogleBarBorderColor + `;
  926. }
  927.  
  928. .GBLinkActive {
  929. border-top: 2px solid ` + vGoogleBarBorderColor + `;
  930. }
  931.  
  932. #GoogleBar,
  933. .dropdown-content {
  934. background-color: ` + vGoogleBarBackgroundColor + `;
  935. ms-transition: background-color 400ms ease;
  936. transition: background-color 400ms ease;
  937. webkit-transition: background-color 400ms ease;
  938. }
  939.  
  940. #GoogleBar a,
  941. #GearIcon,
  942. .GoogleBarDropDownButton {
  943. color: ` + GM_getValue('GB_LColor') + `;
  944. ms-transition: color 400ms ease;
  945. transition: color 400ms ease;
  946. webkit-transition: color 400ms ease;
  947. }
  948.  
  949. .GoogleBarDropDownButton {
  950. background-color: transparent;
  951.  
  952. line-height: 31px;
  953.  
  954. padding-left: 8px;
  955.  
  956. padding-right: 8px;
  957.  
  958. text-align: center;
  959.  
  960. cursor: pointer;
  961.  
  962. border: solid 0px transparent;
  963.  
  964. height: 29px;
  965. }
  966.  
  967. .dropdown {
  968. position: relative;
  969. }
  970.  
  971. .dropdown-content {
  972. box-shadow: 0px 5px 7px 1px rgba(0, 0, 0, 0.2);
  973. display: none;
  974. min-width: 100px;
  975. position: relative;
  976. top: 0px;
  977. width: auto;
  978. z-index: 2999999998;
  979. }
  980.  
  981. .dropdown-content a {
  982. color: black;
  983. display: block;
  984. padding: 10px 12px;
  985. text-decoration: none;
  986. }
  987.  
  988. .dropdown:hover .dropdown-content {
  989. display: block;
  990. }
  991.  
  992. #GearIcon {
  993. display: block;
  994. float: left;
  995. line-height: 29px!important;
  996. padding-left: 8px;
  997. padding-right: 8px;
  998. text-align: center;
  999. text-align: left;
  1000. font-size: 20px;
  1001. cursor: pointer;
  1002. width: 16px;
  1003. height: 29px;
  1004. position: fixed;
  1005. top: 0;
  1006. left: -30px;
  1007. transition: 300ms;
  1008. }
  1009.  
  1010. #ShowGear {
  1011. width: 6px;
  1012. height: 29px;
  1013. background-color: transparent;
  1014. top: 0;
  1015. left: 0;
  1016. position: fixed;
  1017. }
  1018.  
  1019. #GearIcon.show {
  1020. left: 0;
  1021. }
  1022.  
  1023. #H3Right {
  1024. float: right!important;
  1025. width: 50%!important;
  1026. }
  1027.  
  1028. #H3Left {
  1029. float: left!important;
  1030. width: 50%!important;
  1031. }
  1032.  
  1033. #settings_box {
  1034. background-color: #efefef !important;
  1035. border: 1px solid #ccc !important;
  1036. border-top-color: rgb(204, 204, 204) !important;
  1037. border-right-color: rgb(204, 204, 204) !important;
  1038. border-bottom-color: rgb(204, 204, 204) !important;
  1039. border-left-color: rgb(204, 204, 204) !important;
  1040. border-color: rgba(0, 0, 0, .2) !important;
  1041. color: #000 !important;
  1042. -moz-box-shadow: 0 2px 10px rgba(0, 0, 0, .2) !important;
  1043. box-shadow: 0 2px 10px rgba(0, 0, 0, .2) !important;
  1044. -moz-border-radius: 2px !important;
  1045. border-radius: 2px !important;
  1046. -moz-user-select: text !important;
  1047. display: none;
  1048. position: fixed!important;
  1049. left: 6px!important;
  1050. top: 35px!important;
  1051. visibility: hidden;
  1052. width: 450px!important;
  1053. min-width:400px!important;
  1054. z-index: 11111111111!important;
  1055. font-family: helvetica, sans-serif !important;
  1056. }
  1057.  
  1058. #settings_box #cancel_button {
  1059. background-color: grey;
  1060. border: 1px solid #acacac;
  1061. border: none;
  1062. box-shadow: rgba(0, 0, 0, .2) 0 4px 16px;
  1063. color: white;
  1064. cursor: pointer;
  1065. float: right;
  1066. margin-bottom: 2px!important;
  1067. margin-right: 2px!important;
  1068. margin-top: 2px!important;
  1069. padding: 5px;
  1070. width: 16px;
  1071. }
  1072.  
  1073. #settings_box #info_text {
  1074. background-color: #eee;
  1075. clear: both;
  1076. color: #6E6E6E;
  1077. padding: 10px!important;
  1078. }
  1079.  
  1080. #settings_box h2 {
  1081. display: block;
  1082. font-size: 1.5em;
  1083. font-weight: bold;
  1084. webkit-margin-after: 0.83em;
  1085. webkit-margin-before: 0.83em;
  1086. webkit-margin-end: 0px;
  1087. webkit-margin-start: 0px;
  1088. }
  1089.  
  1090. #settings_box h4 {
  1091. font-size: 1.5em;
  1092. font-weight: bold;
  1093. webkit-margin-after: 0.83em;
  1094. webkit-margin-before: 0.83em;
  1095. webkit-margin-end: 0px;
  1096. webkit-margin-start: 0px;
  1097. width: 100px;
  1098. display: table-cell;
  1099. }
  1100.  
  1101. #settings_box th,
  1102. #settings_box td {
  1103. padding: 0px;
  1104. background-color: transparent;
  1105. }
  1106.  
  1107. #settings_box table{
  1108. width:100%;
  1109. }
  1110.  
  1111. #GoogleBarColorLabels {
  1112. width: 100%;
  1113. }
  1114.  
  1115. #GoogleBarColorLabels td {
  1116. width: 33.333333%;
  1117. }
  1118.  
  1119. #SettingsFooter {
  1120. width: 100%;
  1121. }
  1122.  
  1123. #SubmitBug {
  1124. position: relative;
  1125. transition: 1s;
  1126. left: ` + getRandomInt(96) + `%
  1127. }
  1128.  
  1129. label[for="ICol"] {
  1130. padding-left: 17px!important;
  1131. }
  1132.  
  1133. #settings_box #close_button {
  1134. color: grey;
  1135. cursor: pointer;
  1136. float: right;
  1137. font-size: 22px;
  1138. height: 22px;
  1139. width: 17px;
  1140. line-height: 22px;
  1141. }
  1142.  
  1143. .tabs {
  1144. display: inline;
  1145. width: 100%;
  1146. }
  1147.  
  1148. .tab-links:after {
  1149. clear: both;
  1150. content: '';
  1151. display: block;
  1152. }
  1153.  
  1154. .tab-links {
  1155. margin: 0!important;
  1156. padding: 0!important;
  1157. }
  1158.  
  1159. .tab-links li {
  1160. float: left;
  1161. list-style: none;
  1162. margin: 0px 5px;
  1163. }
  1164.  
  1165. .tab-links a {
  1166. color: #000!important;
  1167. display: inline-block;
  1168. font-size: 16px!important;
  1169. font-weight: 100;
  1170. padding: 3px 5px!important;
  1171. padding-bottom: 12px;
  1172. transition: all linear 0.15s;
  1173. }
  1174.  
  1175. .tab-links a:hover {
  1176. background: #eee;
  1177. text-decoration: none;
  1178. }
  1179.  
  1180. li.active a,
  1181. li.active a:hover {
  1182. color: #262626;
  1183. font-weight: bold;
  1184. padding-bottom: 18px;
  1185. font-size: 20px;
  1186. }
  1187.  
  1188. .tab-content {
  1189. box-shadow: -1px 1px 1px rgba(0, 0, 0, 0.15);
  1190. height: auto;
  1191. max-height: 666px;
  1192. overflow: auto;
  1193. padding: 5px;
  1194. width:96%;
  1195. }
  1196.  
  1197. .tab {
  1198. display: none;
  1199. }
  1200.  
  1201. .tab.active {
  1202. display: block;
  1203. }
  1204.  
  1205. [name="BarLinkNumberInput"],
  1206. [name="BarMenuNumberInput"] {
  1207. margin-left: 5px;
  1208. width: 30px;
  1209. }
  1210.  
  1211. [name=vColCycleDuration] {
  1212. width: 50px;
  1213. }
  1214.  
  1215. #ExportSettings,
  1216. #ImportSettings {
  1217. font-size: 11px!important;
  1218. width: 98%;
  1219. }
  1220.  
  1221. #CopyButton {
  1222. float: right;
  1223. }
  1224.  
  1225. [name*="barurl"],
  1226. [name*="DropDownURL"] {
  1227. color: black!important;
  1228. margin-right: 5px;
  1229. margin-top: 2px;
  1230. width: 275px!important;
  1231. }
  1232.  
  1233. [name*="BarLinkNumberInput"],
  1234. [name*="GoogleBarFont"],
  1235. [name*="vColCycleDuration"],
  1236. [name*="BarMenuNumberInput"],
  1237. [name*="texturl"],
  1238. [name*="barurl"],
  1239. [name*="DropDownText"],
  1240. [name*="DropDownURL"] {
  1241. border-radius: 3px;
  1242. border: 0px;
  1243. -moz-box-shadow: 0 0px 2px 0 rgba(0, 0, 0, 0.4);
  1244. box-shadow: 0 0px 2px 0 rgba(0, 0, 0, 0.4);
  1245. background-color: #efefef;
  1246. color: black!important;
  1247. }
  1248.  
  1249. [name*="BarLinkNumberInput"]:focus,
  1250. [name*="GoogleBarFont"]:focus,
  1251. [name*="vColCycleDuration"]:focus,
  1252. [name*="BarMenuNumberInput"]:focus,
  1253. [name*="texturl"]:focus,
  1254. [name*="barurl"]:focus,
  1255. [name*="DropDownText"]:focus,
  1256. [name*="DropDownURL"]:focus {
  1257. background: #F5F5F5;
  1258. }
  1259.  
  1260. [name*="texturl"],
  1261. [name*="DropDownText"] {
  1262. margin-right: 5px;
  1263. margin-top: 2px;
  1264. width: 100px!important;
  1265. }
  1266.  
  1267. [name*="GoogleBarSearchTerm"] {
  1268. line-height: 16px;
  1269. right: 30px;
  1270. top: 5px;
  1271. position: absolute;
  1272. width: 300px;
  1273. border-radius: 2px;
  1274. border: none;
  1275. box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08);
  1276. }
  1277.  
  1278.  
  1279.  
  1280. /*====reset css====*/
  1281.  
  1282.  
  1283. `);
  1284.  
  1285.  
  1286. $('.GBLinkBlock a').each(function() {
  1287. var $this = $(this);
  1288. // if the current path is like this link, make it active
  1289.  
  1290. if ($this.attr('href') === vCurrentWebpage) {
  1291. $this.parent().addClass('GBLinkActive');
  1292.  
  1293. }
  1294.  
  1295. });
  1296.  
  1297. if (vCurrentWebpage == "https://www.google.com/") {
  1298. GM_addStyle(`
  1299. body{transform: translateY(29px)!important;}
  1300. `);
  1301. $('[name="q"]').on("input", function() {
  1302. var GBsearchterm = this.value;
  1303. $('[name="GoogleBarSearchTerm"]').val(GBsearchterm)
  1304. });
  1305.  
  1306. $('[name="GoogleBarSearchTerm"]').val($('[name="q"]').val());
  1307.  
  1308. $('[name="GoogleBarSearchTerm"]').on("input", function() {
  1309. var GBsearchterm = this.value;
  1310. $('[name="q"]').val(GBsearchterm)
  1311. });
  1312.  
  1313. $('[name="GoogleBarSearchTerm"]').on('keyup', function (e) {
  1314. if (e.keyCode == 13) {
  1315. window.location.href = "https://www.google.com/webhp#q=" + $('[name="GoogleBarSearchTerm"]').val();
  1316. }
  1317. });
  1318.  
  1319. } else if (/google.{2,14}about\/products/.test(vCurrentWebpage) == true ||
  1320. /google.{2,14}policies\//.test(vCurrentWebpage) == true ||
  1321. /google.{2,14}ads\//.test(vCurrentWebpage) == true ||
  1322. /google.{2,14}safetycenter\//.test(vCurrentWebpage) == true ||
  1323. /google.{2,14}about\//.test(vCurrentWebpage) == true ||
  1324. /.greasyfork.{2,6}/.test(vCurrentWebpage) == true ||
  1325. /calendar.google.{2,6}/.test(vCurrentWebpage) == true ||
  1326. /duo.google.{2,6}/.test(vCurrentWebpage) == true ||
  1327. /google.{2,6}#q=/.test(vCurrentWebpage) == true ||
  1328. /google.{2,6}#safe/.test(vCurrentWebpage) == true ||
  1329. /google.{2,6}?ei=/.test(vCurrentWebpage) == true ||
  1330. /google.{2,6}adsense/.test(vCurrentWebpage) == true ||
  1331. /google.{2,6}adwords/.test(vCurrentWebpage) == true ||
  1332. /google.{2,6}alerts/.test(vCurrentWebpage) == true ||
  1333. /google.{2,6}analytics/.test(vCurrentWebpage) == true ||
  1334. /google.{2,6}business/.test(vCurrentWebpage) == true ||
  1335. /google.{2,6}chrome\//.test(vCurrentWebpage) == true ||
  1336. /google.{2,6}earth\//.test(vCurrentWebpage) == true ||
  1337. /google.{2,6}finance/.test(vCurrentWebpage) == true ||
  1338. /google.{2,6}flights/.test(vCurrentWebpage) == true ||
  1339. /google.{2,6}imghp/.test(vCurrentWebpage) == true ||
  1340. /google.{2,6}preferences/.test(vCurrentWebpage) == true ||
  1341. /google.{2,6}settings/.test(vCurrentWebpage) == true ||
  1342. /google.{2,6}search/.test(vCurrentWebpage) == true ||
  1343. /google.{2,6}shopping/.test(vCurrentWebpage) == true ||
  1344. /google.{2,6}videohp/.test(vCurrentWebpage) == true ||
  1345. /google.{2,6}webhp/.test(vCurrentWebpage) == true ||
  1346. /google.{2,6}$/.test(vCurrentWebpage) == true ||
  1347. /adwords.google.{2,6}/.test(vCurrentWebpage) == true ||
  1348. /classroom.google.{2,6}/.test(vCurrentWebpage) == true ||
  1349. /mail.google.{2,6}/.test(vCurrentWebpage) == true ||
  1350. /myaccount.google.{2,6}/.test(vCurrentWebpage) == true ||
  1351. /privacy.google.{2,6}/.test(vCurrentWebpage) == true ||
  1352. /play.google.{2,6}music/.test(vCurrentWebpage) == true ||
  1353. /play.google.{2,6}store/.test(vCurrentWebpage) == true ||
  1354. /support.google.{2,6}/.test(vCurrentWebpage) == true ||
  1355. /translate.google.{2,6}/.test(vCurrentWebpage) == true ||
  1356. /admin.google.{2,6}/.test(vCurrentWebpage) == true ||
  1357. /productforums.google.{2,6}/.test(vCurrentWebpage) == true ||
  1358. /google.{2,14}about\/products/.test(vCurrentWebpage) == true
  1359. ) {
  1360. GM_addStyle(`
  1361. body{transform: translateY(29px)!important;}
  1362. .gb_S .gb_Rc.gb_Rc,.gb_S .gb_Kc .gb_Rc.gb_Rc,.gb_S .gb_Kc .gb_b:hover .gb_Rc,.gb_S .gb_Kc .gb_b:focus .gb_Rc{
  1363. background-color:red!important;
  1364. color:blue!important;
  1365. .gb_9c{display:none!important;}
  1366. }
  1367. `);
  1368.  
  1369. } else if (/google.{2,6}maps/.test(vCurrentWebpage) == true) {
  1370. GM_addStyle(`
  1371. #omnibox-container,
  1372. #gb,
  1373. .widget-pane-toggle-button,
  1374. .widget-settings
  1375. .section-listbox{transform: translateY(29px)!important;}
  1376. `);
  1377. //Need
  1378. //To
  1379. //Fix
  1380. //Scrollbar
  1381. } else if (/news.google.{2,6}/.test(vCurrentWebpage) == true) {
  1382. GM_addStyle(`
  1383. #gb{transform: translateY(29px)!important;}
  1384. `);
  1385. } else if (/express.google.{2,6}/.test(vCurrentWebpage) == true) {
  1386. GM_addStyle(`
  1387. body{transform:translateY(29px)!important;}
  1388. #GoogleBar{position:fixed!important;}
  1389. `);
  1390. } else if (/google.{2,6}forms/.test(vCurrentWebpage) == true ||
  1391. /google.{2,6}slides/.test(vCurrentWebpage) == true ||
  1392. /google.{2,6}sheets/.test(vCurrentWebpage) == true ||
  1393. /google.{2,6}docs/.test(vCurrentWebpage) == true ||
  1394. /google.{2,6}services/.test(vCurrentWebpage) == true ||
  1395. /google.{2,6}cloudprint/.test(vCurrentWebpage) == true
  1396. ) {
  1397. GM_addStyle(`
  1398. body{ transform: translateY(29px)!important;}
  1399. `);
  1400. } else if (/store.google.{2,6}/.test(vCurrentWebpage) == true) {
  1401. GM_addStyle(`
  1402. body{transform: translateY(29px)!important;}
  1403. `);
  1404. } else if (/photos.google.{2,6}/.test(vCurrentWebpage) == true) {
  1405. GM_addStyle(`
  1406. body{transform: translateY(29px)!important;}
  1407. `);
  1408. } else if (/docs.google.{2,6}/.test(vCurrentWebpage) == true) {
  1409. GM_addStyle(`
  1410. body{transform: translateY(29px)!important;}
  1411. `);
  1412. } else if (/drive.google.{2,6}/.test(vCurrentWebpage) == true) {
  1413. GM_addStyle(`
  1414. #drive_main_page{transform: translateY(29px)!important;}
  1415. #GoogleBar{position:fixed!important;}
  1416. `);
  1417. } else if (/keep.google.{2,6}/.test(vCurrentWebpage) == true) {
  1418. GM_addStyle(`
  1419. #gb,.notes-container{transform: translateY(29px)!important;}
  1420. #GoogleBar{position:fixed!important;}
  1421. `);
  1422. } else if (/contacts.google.{2,6}/.test(vCurrentWebpage) == true) {
  1423. GM_addStyle(`
  1424. body{transform: translateY(29px)!important;}
  1425. `);
  1426. } else if (/books.google.{2,6}/.test(vCurrentWebpage) == true) {
  1427. GM_addStyle(`
  1428. #gb{transform:translateY(29px)!important;}
  1429. `);
  1430. } else if (/voice.google.{2,6}/.test(vCurrentWebpage) == true ||
  1431. /.google.{2,6}voice/.test(vCurrentWebpage) == true) {
  1432. GM_addStyle(`
  1433. body{transform:translateY(29px)!important;}
  1434. `);
  1435. } else if (/youtube.{2,6}/.test(vCurrentWebpage) == true) {
  1436. GM_addStyle(`
  1437. ytd-app{transform:translateY(29px)!important;}
  1438. `);
  1439. } else if (/google.{2,20}chromecast/.test(vCurrentWebpage) == true ||
  1440. /allo.google.{2,6}/.test(vCurrentWebpage) == true ||
  1441. /google.{2,20}chromebook/.test(vCurrentWebpage) == true
  1442. ) {
  1443. GM_addStyle(`
  1444. body{transform: translateY(29px)!important;}
  1445. `);
  1446. } else if (/google.{2,10}chrome\/newtab/.test(vCurrentWebpage) == true) {
  1447. GM_addStyle(`
  1448. body{transform: translateY(29px)!important;}
  1449. `);
  1450. }
  1451.  
  1452. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址