| Index: lib/elemHide.js | 
| =================================================================== | 
| --- a/lib/elemHide.js | 
| +++ b/lib/elemHide.js | 
| @@ -18,16 +18,17 @@ | 
| "use strict"; | 
|  | 
| /** | 
| * @fileOverview Element hiding implementation. | 
| */ | 
|  | 
| const {ElemHideExceptions} = require("./elemHideExceptions"); | 
| const {filterNotifier} = require("./filterNotifier"); | 
| +const {suffixes} = require("./domain"); | 
|  | 
| /** | 
| * The maximum number of selectors in a CSS rule. This is used by | 
| * <code>{@link createStyleSheet}</code> to split up a long list of selectors | 
| * into multiple rules. | 
| * @const {number} | 
| * @default | 
| */ | 
| @@ -164,25 +165,19 @@ | 
| * | 
| * @returns {Array.<string>} The list of selectors. | 
| */ | 
| function getConditionalSelectors(domain, specificOnly) | 
| { | 
| let selectors = []; | 
|  | 
| let excluded = new Set(); | 
| -  let currentDomain = domain; | 
|  | 
| -  // This code is a performance hot-spot, which is why we've made certain | 
| -  // micro-optimisations. Please be careful before making changes. | 
| -  while (true) | 
| +  for (let currentDomain of suffixes(domain, !specificOnly)) | 
| { | 
| -    if (specificOnly && currentDomain == "") | 
| -      break; | 
| - | 
| let filters = filtersByDomain.get(currentDomain); | 
| if (filters) | 
| { | 
| for (let [filter, isIncluded] of filters) | 
| { | 
| if (!isIncluded) | 
| { | 
| excluded.add(filter); | 
| @@ -193,22 +188,16 @@ | 
| if ((excluded.size == 0 || !excluded.has(filter)) && | 
| !ElemHideExceptions.getException(selector, domain)) | 
| { | 
| selectors.push(selector); | 
| } | 
| } | 
| } | 
| } | 
| - | 
| -    if (currentDomain == "") | 
| -      break; | 
| - | 
| -    let nextDot = currentDomain.indexOf("."); | 
| -    currentDomain = nextDot == -1 ? "" : currentDomain.substr(nextDot + 1); | 
| } | 
|  | 
| return selectors; | 
| } | 
|  | 
| /** | 
| * Returns the default style sheet that applies on all domains. | 
| * @returns {string} | 
|  |