Bug 1252509 - Use a sliding panel overlay from the downloads panel to display the available actions. r?jaws draft
authorDrew Willcoxon <adw@mozilla.com>
Fri, 27 May 2016 22:08:09 -0700
changeset 372349 a9dc523d70c318807bffb6c045433aa07a13caed
parent 369823 10a29aed7ab09d1f6e08a791c9ea42560d669cc5
child 522170 6b259f5639d0fcc6b9a11ce713035831274cfc33
push id19515
push userdwillcoxon@mozilla.com
push dateSat, 28 May 2016 05:08:36 +0000
reviewersjaws
bugs1252509
milestone49.0a1
Bug 1252509 - Use a sliding panel overlay from the downloads panel to display the available actions. r?jaws MozReview-Commit-ID: FhRlxcPeWu3
browser/components/downloads/DownloadsViewUI.jsm
browser/components/downloads/content/download.xml
browser/components/downloads/content/downloads.css
browser/components/downloads/content/downloads.js
browser/components/downloads/content/downloadsOverlay.xul
browser/components/downloads/test/browser/browser.ini
browser/components/downloads/test/browser/browser_confirm_unblock_download.js
browser/components/downloads/test/browser/browser_downloads_panel_block.js
browser/components/downloads/test/browser/head.js
browser/themes/linux/downloads/buttons.png
browser/themes/linux/downloads/downloads.css
browser/themes/osx/downloads/buttons.png
browser/themes/osx/downloads/buttons@2x.png
browser/themes/osx/downloads/downloads.css
browser/themes/shared/downloads/download-blocked.svg
browser/themes/shared/downloads/downloads.inc.css
browser/themes/shared/jar.inc.mn
browser/themes/windows/downloads/buttons-XP.png
browser/themes/windows/downloads/buttons.png
browser/themes/windows/downloads/downloads.css
--- a/browser/components/downloads/DownloadsViewUI.jsm
+++ b/browser/components/downloads/DownloadsViewUI.jsm
@@ -230,27 +230,17 @@ this.DownloadsViewUI.DownloadElementShel
           // History downloads may not have a size defined.
           stateLabel = s.sizeUnknown;
         }
       } else if (this.download.canceled) {
         stateLabel = s.stateCanceled;
       } else if (this.download.error.becauseBlockedByParentalControls) {
         stateLabel = s.stateBlockedParentalControls;
       } else if (this.download.error.becauseBlockedByReputationCheck) {
-        switch (this.download.error.reputationCheckVerdict) {
-          case Downloads.Error.BLOCK_VERDICT_UNCOMMON:
-            stateLabel = s.blockedUncommon2;
-            break;
-          case Downloads.Error.BLOCK_VERDICT_POTENTIALLY_UNWANTED:
-            stateLabel = s.blockedPotentiallyUnwanted;
-            break;
-          default: // Assume Downloads.Error.BLOCK_VERDICT_MALWARE
-            stateLabel = s.blockedMalware;
-            break;
-        }
+        stateLabel = this.rawBlockedTitleAndDetails[0];
       } else {
         stateLabel = s.stateFailed;
       }
 
       let referrer = this.download.source.referrer || this.download.source.url;
       let [displayHost, fullHost] = DownloadUtils.getURIHost(referrer);
 
       let date = new Date(this.download.endTime);
@@ -260,16 +250,36 @@ this.DownloadsViewUI.DownloadElementShel
       text = s.statusSeparator(firstPart, displayDate);
       tip = s.statusSeparator(fullHost, fullDate);
     }
 
     return { text, tip: tip || text };
   },
 
   /**
+   * Returns [title, [details1, details2]] for blocked downloads.
+   */
+  get rawBlockedTitleAndDetails() {
+    let s = DownloadsCommon.strings;
+    if (!this.download.error ||
+        !this.download.error.becauseBlockedByReputationCheck) {
+      return [null, null];
+    }
+    switch (this.download.error.reputationCheckVerdict) {
+      case Downloads.Error.BLOCK_VERDICT_UNCOMMON:
+        return [s.blockedUncommon2, [s.unblockTypeUncommon2, s.unblockTip2]];
+      case Downloads.Error.BLOCK_VERDICT_POTENTIALLY_UNWANTED:
+        return [s.blockedPotentiallyUnwanted,
+                [s.unblockTypePotentiallyUnwanted2, s.unblockTip2]];
+    }
+    // Assume Downloads.Error.BLOCK_VERDICT_MALWARE
+    return [s.blockedMalware, [s.unblockTypeMalware, s.unblockTip2]];
+  },
+
+  /**
    * Shows the appropriate unblock dialog based on the verdict, and executes the
    * action selected by the user in the dialog, which may involve unblocking,
    * opening or removing the file.
    *
    * @param window
    *        The window to which the dialog should be anchored.
    * @param dialogType
    *        Can be "unblock", "chooseUnblock", or "chooseOpen".
@@ -303,18 +313,19 @@ this.DownloadsViewUI.DownloadElementShel
       case Ci.nsIDownloadManager.DOWNLOAD_FAILED:
       case Ci.nsIDownloadManager.DOWNLOAD_CANCELED:
         return "downloadsCmd_retry";
       case Ci.nsIDownloadManager.DOWNLOAD_PAUSED:
         return "downloadsCmd_pauseResume";
       case Ci.nsIDownloadManager.DOWNLOAD_FINISHED:
         return "downloadsCmd_open";
       case Ci.nsIDownloadManager.DOWNLOAD_BLOCKED_PARENTAL:
+        return "downloadsCmd_openReferrer";
       case Ci.nsIDownloadManager.DOWNLOAD_DIRTY:
-        return "downloadsCmd_openReferrer";
+        return "downloadsCmd_showBlockedInfo";
     }
     return "";
   },
 
   /**
    * Returns true if the specified command can be invoked on the current item.
    * The commands are implemented as functions on this object or derived ones.
    *
--- a/browser/components/downloads/content/download.xml
+++ b/browser/components/downloads/content/download.xml
@@ -64,16 +64,19 @@
                     tooltiptext="&cmd.removeFile.label;"
                     oncommand="DownloadsView.onDownloadCommand(event, 'downloadsCmd_confirmBlock');"/>
         <xul:button class="downloadButton downloadChooseUnblock downloadIconShow"
                     tooltiptext="&cmd.chooseUnblock.label;"
                     oncommand="DownloadsView.onDownloadCommand(event, 'downloadsCmd_chooseUnblock');"/>
         <xul:button class="downloadButton downloadChooseOpen downloadIconShow"
                     tooltiptext="&cmd.chooseOpen.label;"
                     oncommand="DownloadsView.onDownloadCommand(event, 'downloadsCmd_chooseOpen');"/>
+        <xul:button class="downloadButton downloadShowBlockedInfo"
+                    tooltiptext="&cmd.chooseUnblock.label;"
+                    oncommand="DownloadsView.onDownloadCommand(event, 'downloadsCmd_showBlockedInfo');"/>
       </xul:stack>
     </content>
   </binding>
 
   <binding id="download-toolbarbutton"
            extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton-badged">
     <content>
       <xul:stack class="toolbarbutton-badge-stack">
--- a/browser/components/downloads/content/downloads.css
+++ b/browser/components/downloads/content/downloads.css
@@ -144,13 +144,99 @@ richlistitem.download button {
 .download-state[state="8"].temporary-block:not([verdict="Uncommon"])
                                            .downloadChooseOpen,
 
 .download-state:not(:-moz-any([state="2"], /* Failed             */
                               [state="3"]) /* Canceled           */)
                                            .downloadRetry,
 
 .download-state:not(          [state="1"]  /* Finished           */)
-                                           .downloadShow
+                                           .downloadShow,
 
+/* The "show blocked info" button is shown only in the downloads panel. */
+.downloadShowBlockedInfo
 {
   visibility: hidden;
 }
+
+/*** Downloads panel ***/
+
+#downloadsPanel[hasdownloads] #emptyDownloads,
+#downloadsPanel:not([hasdownloads]) #downloadsListBox {
+  display: none;
+}
+
+/*** Downloads panel multiview (main view and blocked-downloads subview) ***/
+
+.panel-mainview[panelid=downloadsPanel] {
+  /* Make the main view fill the entire width of the panel. */
+  min-width: 30em;
+}
+
+#downloadsPanel,
+#downloadsPanel .panel-viewstack[viewtype=main]:not([transitioning]) #downloadsPanel-mainView {
+  /* Tiny hack to ensure the panel shrinks back to its original
+     size after closing a subview that is bigger than the main view. */
+  max-height: 0;
+}
+
+/* Hide all the usual buttons. */
+#downloadsPanel-mainView .download-state[state="8"] .downloadCancel,
+#downloadsPanel-mainView .download-state[state="8"] .downloadConfirmBlock,
+#downloadsPanel-mainView .download-state[state="8"] .downloadChooseUnblock,
+#downloadsPanel-mainView .download-state[state="8"] .downloadChooseOpen,
+#downloadsPanel-mainView .download-state[state="8"] .downloadRetry,
+#downloadsPanel-mainView .download-state[state="8"] .downloadShow {
+  visibility: hidden;
+}
+
+/* Show the "show blocked info" button. */
+#downloadsPanel-mainView .download-state[state="8"] .downloadShowBlockedInfo {
+  visibility: visible;
+}
+
+/** When the main view is showing... **/
+
+/* The subview should be off to the right and not visible at all. */
+#downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype=main] > .panel-subviews {
+  transform: translateX(100%);
+  transition: transform var(--panelui-subview-transition-duration);
+}
+
+#downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype=main] > .panel-subviews:-moz-locale-dir(rtl) {
+  transform: translateX(-100%);
+}
+
+/** When the subview is showing... **/
+
+/* Hide the buttons of all downloads except the one that triggered the
+   subview. */
+#downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype="subview"] .download-state:not([showingsubview]) .downloadButton {
+  visibility: hidden;
+}
+#downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype="subview"] .download-state[showingsubview] .downloadButton {
+  visibility: visible;
+}
+
+/* For the download that triggered the subview, move its button farther to the
+   right by removing padding so that a minimum amount of the main view's right
+   edge needs to be shown. */
+#downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype="subview"] .download-state[showingsubview] {
+  padding: 0;
+}
+
+/* The main view should slide to the left and its right edge should remain
+   visible. */
+#downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype=subview] > .panel-mainview {
+  transform: translateX(calc(-100% + 38px));
+  transition: transform var(--panelui-subview-transition-duration);
+}
+
+#downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype=subview] > .panel-mainview:-moz-locale-dir(rtl) {
+  transform: translateX(calc(100% - 38px));
+}
+
+/* The subview should leave the right edge of the main view uncovered. */
+#downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack > .panel-subviews {
+  /* Use a margin instead of a transform like above so that the subview's width
+     isn't wider than the panel. */
+  -moz-margin-start: 38px !important;
+}
--- a/browser/components/downloads/content/downloads.js
+++ b/browser/components/downloads/content/downloads.js
@@ -907,17 +907,26 @@ const DownloadsView = {
     }
     DownloadsView.itemForElement(target).doCommand(aCommand);
   },
 
   onDownloadClick(aEvent) {
     // Handle primary clicks only, and exclude the action button.
     if (aEvent.button == 0 &&
         !aEvent.originalTarget.hasAttribute("oncommand")) {
-      goDoCommand("downloadsCmd_open");
+      let target = aEvent.target;
+      while (target.nodeName != "richlistitem") {
+        target = target.parentNode;
+      }
+      let download = DownloadsView.itemForElement(target).download;
+      if (download.hasBlockedData) {
+        goDoCommand("downloadsCmd_showBlockedInfo");
+      } else {
+        goDoCommand("downloadsCmd_open");
+      }
     }
   },
 
   /**
    * Handles keypress events on a download item.
    */
   onDownloadKeyPress(aEvent) {
     // Pressing the key on buttons should not invoke the action because the
@@ -1065,16 +1074,18 @@ DownloadsViewItem.prototype = {
         let partFile = new FileUtils.File(this.download.target.partFilePath);
         return partFile.exists();
       }
       case "cmd_delete":
       case "downloadsCmd_cancel":
       case "downloadsCmd_copyLocation":
       case "downloadsCmd_doDefault":
         return true;
+      case "downloadsCmd_showBlockedInfo":
+        return this.download.hasBlockedData;
     }
     return DownloadsViewUI.DownloadElementShell.prototype
                           .isCommandEnabled.call(this, aCommand);
   },
 
   doCommand(aCommand) {
     if (this.isCommandEnabled(aCommand)) {
       this[aCommand]();
@@ -1123,16 +1134,21 @@ DownloadsViewItem.prototype = {
     // We explicitly close the panel here to give the user the feedback that
     // their click has been received, and we're handling the action.
     // Otherwise, we'd have to wait for the operating system file manager
     // window to open before the panel closed. This also helps to prevent the
     // user from opening the containing folder several times.
     DownloadsPanel.hidePanel();
   },
 
+  downloadsCmd_showBlockedInfo() {
+    DownloadsBlockedSubview.show(this.element,
+                                 ...this.rawBlockedTitleAndDetails);
+  },
+
   downloadsCmd_openReferrer() {
     openURL(this.download.source.referrer);
   },
 
   downloadsCmd_copyLocation() {
     let clipboard = Cc["@mozilla.org/widget/clipboardhelper;1"]
                     .getService(Ci.nsIClipboardHelper);
     clipboard.copyString(this.download.source.url);
@@ -1476,8 +1492,116 @@ const DownloadsFooter = {
       return null;
     }
     delete this._footerNode;
     return this._footerNode = node;
   }
 };
 
 XPCOMUtils.defineConstant(this, "DownloadsFooter", DownloadsFooter);
+
+
+////////////////////////////////////////////////////////////////////////////////
+//// DownloadsBlockedSubview
+
+/**
+ * Manages the blocked subview that slides in when you click a blocked download.
+ */
+const DownloadsBlockedSubview = {
+
+  get subview() {
+    let subview = document.getElementById("downloadsPanel-blockedSubview");
+    delete this.subview;
+    return this.subview = subview;
+  },
+
+  /**
+   * Elements in the subview.
+   */
+  get elements() {
+    let idSuffixes = [
+      "title",
+      "details1",
+      "details2",
+      "openButton",
+      "deleteButton",
+    ];
+    let elements = idSuffixes.reduce((memo, s) => {
+      memo[s] = document.getElementById("downloadsPanel-blockedSubview-" + s);
+      return memo;
+    }, {});
+    delete this.elements;
+    return this.elements = elements;
+  },
+
+  /**
+   * The multiview that contains both the main view and the subview.
+   */
+  get view() {
+    let view = document.getElementById("downloadsPanel-multiView");
+    delete this.view;
+    return this.view = view;
+  },
+
+  /**
+   * The blocked-download richlistitem element that was clicked to show the
+   * subview.  If the subview is not showing, this is undefined.
+   */
+  element: undefined,
+
+  /**
+   * Slides in the blocked subview.
+   *
+   * @param element
+   *        The blocked-download richlistitem element that was clicked.
+   * @param title
+   *        The title to show in the subview.
+   * @param details
+   *        An array of strings with information about the block.
+   */
+  show(element, title, details) {
+    if (this.view.showingSubView) {
+      return;
+    }
+
+    this.element = element;
+    element.setAttribute("showingsubview", "true");
+
+    let e = this.elements;
+    let s = DownloadsCommon.strings;
+    e.title.textContent = title;
+    e.details1.textContent = details[0];
+    e.details2.textContent = details[1];
+    e.openButton.label = s.unblockButtonOpen;
+    e.deleteButton.label = s.unblockButtonConfirmBlock;
+
+    let verdict = element.getAttribute("verdict");
+    this.subview.setAttribute("verdict", verdict);
+    this.subview.addEventListener("ViewHiding", this);
+
+    this.view.showSubView(this.subview.id);
+  },
+
+  handleEvent(event) {
+    this.subview.removeEventListener(event.type, this);
+
+    this.element.removeAttribute("showingsubview");
+    delete this.element;
+  },
+
+  /**
+   * Slides out the blocked subview and shows the main view.
+   */
+  hide() {
+    this.view.showMainView();
+  },
+
+  /**
+   * Deletes the download and hides the entire panel.
+   */
+  confirmBlock() {
+    goDoCommand("cmd_delete");
+    DownloadsPanel.hidePanel();
+  },
+};
+
+XPCOMUtils.defineConstant(this, "DownloadsBlockedSubview",
+                          DownloadsBlockedSubview);
--- a/browser/components/downloads/content/downloadsOverlay.xul
+++ b/browser/components/downloads/content/downloadsOverlay.xul
@@ -103,51 +103,81 @@
 
         <menuseparator/>
 
         <menuitem command="downloadsCmd_clearList"
                   label="&cmd.clearList.label;"
                   accesskey="&cmd.clearList.accesskey;"/>
       </menupopup>
 
-      <richlistbox id="downloadsListBox"
-                   class="plain"
-                   flex="1"
-                   context="downloadsContextMenu"
-                   onmouseover="DownloadsView.onDownloadMouseOver(event);"
-                   onmouseout="DownloadsView.onDownloadMouseOut(event);"
-                   oncontextmenu="DownloadsView.onDownloadContextMenu(event);"
-                   ondragstart="DownloadsView.onDownloadDragStart(event);"/>
-      <description id="emptyDownloads"
-                   mousethrough="always">
-         &downloadsPanelEmpty.label;
-      </description>
+      <panelmultiview id="downloadsPanel-multiView"
+                      mainViewId="downloadsPanel-mainView"
+                      align="stretch">
 
-      <vbox id="downloadsFooter">
-        <hbox id="downloadsSummary"
-              align="center"
-              orient="horizontal"
-              onkeydown="DownloadsSummary.onKeyDown(event);"
-              onclick="DownloadsSummary.onClick(event);">
-          <image class="downloadTypeIcon" />
-          <vbox>
-            <description id="downloadsSummaryDescription"
-                         style="min-width: &downloadsSummary.minWidth2;"/>
-            <progressmeter id="downloadsSummaryProgress"
-                           class="downloadProgress"
-                           min="0"
-                           max="100"
-                           mode="normal" />
-            <description id="downloadsSummaryDetails"
-                         style="width: &downloadDetails.width;"
-                         crop="end"/>
+        <panelview id="downloadsPanel-mainView"
+                   flex="1"
+                   align="stretch">
+          <richlistbox id="downloadsListBox"
+                       class="plain"
+                       context="downloadsContextMenu"
+                       onmouseover="DownloadsView.onDownloadMouseOver(event);"
+                       onmouseout="DownloadsView.onDownloadMouseOut(event);"
+                       oncontextmenu="DownloadsView.onDownloadContextMenu(event);"
+                       ondragstart="DownloadsView.onDownloadDragStart(event);"/>
+          <description id="emptyDownloads"
+                       mousethrough="always">
+             &downloadsPanelEmpty.label;
+          </description>
+          <spacer flex="1"/>
+          <vbox id="downloadsFooter">
+            <hbox id="downloadsSummary"
+                  align="center"
+                  orient="horizontal"
+                  onkeydown="DownloadsSummary.onKeyDown(event);"
+                  onclick="DownloadsSummary.onClick(event);">
+              <image class="downloadTypeIcon" />
+              <vbox>
+                <description id="downloadsSummaryDescription"
+                             style="min-width: &downloadsSummary.minWidth2;"/>
+                <progressmeter id="downloadsSummaryProgress"
+                               class="downloadProgress"
+                               min="0"
+                               max="100"
+                               mode="normal" />
+                <description id="downloadsSummaryDetails"
+                             style="width: &downloadDetails.width;"
+                             crop="end"/>
+              </vbox>
+            </hbox>
+            <button id="downloadsHistory"
+                    class="plain"
+                    label="&downloadsHistory.label;"
+                    accesskey="&downloadsHistory.accesskey;"
+                    oncommand="DownloadsPanel.showDownloadsHistory();"/>
           </vbox>
-        </hbox>
+        </panelview>
 
-        <button id="downloadsHistory"
-                class="plain"
-                label="&downloadsHistory.label;"
-                accesskey="&downloadsHistory.accesskey;"
-                oncommand="DownloadsPanel.showDownloadsHistory();"/>
-      </vbox>
+        <panelview id="downloadsPanel-blockedSubview"
+                   orient="vertical"
+                   flex="1">
+          <description id="downloadsPanel-blockedSubview-title"/>
+          <description id="downloadsPanel-blockedSubview-details1"/>
+          <description id="downloadsPanel-blockedSubview-details2"/>
+          <spacer flex="1"/>
+          <hbox id="downloadsPanel-blockedSubview-buttons"
+                align="stretch">
+            <button id="downloadsPanel-blockedSubview-openButton"
+                    class="plain"
+                    command="downloadsCmd_chooseOpen"
+                    flex="1"/>
+            <button id="downloadsPanel-blockedSubview-deleteButton"
+                    class="plain"
+                    oncommand="DownloadsBlockedSubview.confirmBlock();"
+                    default="true"
+                    flex="1"/>
+          </hbox>
+        </panelview>
+
+      </panelmultiview>
+
     </panel>
   </popupset>
 </overlay>
--- a/browser/components/downloads/test/browser/browser.ini
+++ b/browser/components/downloads/test/browser/browser.ini
@@ -4,8 +4,9 @@ support-files = head.js
 [browser_basic_functionality.js]
 skip-if = buildapp == "mulet"
 [browser_first_download_panel.js]
 skip-if = os == "linux" # Bug 949434
 [browser_overflow_anchor.js]
 skip-if = os == "linux" # Bug 952422
 [browser_confirm_unblock_download.js]
 [browser_iframe_gone_mid_download.js]
+[browser_downloads_panel_block.js]
--- a/browser/components/downloads/test/browser/browser_confirm_unblock_download.js
+++ b/browser/components/downloads/test/browser/browser_confirm_unblock_download.js
@@ -2,42 +2,18 @@
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Tests the dialog which allows the user to unblock a downloaded file.
 
 registerCleanupFunction(() => {});
 
-function addDialogOpenObserver(buttonAction) {
-  Services.ww.registerNotification(function onOpen(subj, topic, data) {
-    if (topic == "domwindowopened" && subj instanceof Ci.nsIDOMWindow) {
-      // The test listens for the "load" event which guarantees that the alert
-      // class has already been added (it is added when "DOMContentLoaded" is
-      // fired).
-      subj.addEventListener("load", function onLoad() {
-        subj.removeEventListener("load", onLoad);
-        if (subj.document.documentURI ==
-            "chrome://global/content/commonDialog.xul") {
-          Services.ww.unregisterNotification(onOpen);
-
-          let dialog = subj.document.getElementById("commonDialog");
-          ok(dialog.classList.contains("alert-dialog"),
-             "The dialog element should contain an alert class.");
-
-          let doc = subj.document.documentElement;
-          doc.getButton(buttonAction).click();
-        }
-      });
-    }
-  });
-}
-
 function* assertDialogResult({ args, buttonToClick, expectedResult }) {
-  addDialogOpenObserver(buttonToClick);
+  promiseAlertDialogOpen(buttonToClick);
   is(yield DownloadsCommon.confirmUnblockDownload(args), expectedResult);
 }
 
 /**
  * Tests the "unblock" dialog, for each of the possible verdicts.
  */
 add_task(function* test_unblock_dialog_unblock() {
   for (let verdict of [Downloads.Error.BLOCK_VERDICT_MALWARE,
new file mode 100644
--- /dev/null
+++ b/browser/components/downloads/test/browser/browser_downloads_panel_block.js
@@ -0,0 +1,86 @@
+"use strict";
+
+add_task(function* () {
+  let verdicts = [
+    Downloads.Error.BLOCK_VERDICT_UNCOMMON,
+    Downloads.Error.BLOCK_VERDICT_MALWARE,
+    Downloads.Error.BLOCK_VERDICT_POTENTIALLY_UNWANTED,
+  ];
+  yield task_addDownloads(verdicts.map(v => makeDownload(v)));
+
+  // Check that the richlistitem for each download is correct.
+  for (let i = 0; i < verdicts.length; i++) {
+    yield task_openPanel();
+
+    // The current item is always the first one in the listbox since each
+    // iteration of this loop removes the item at the end.
+    let item = DownloadsView.richListBox.firstChild;
+
+    // Open the panel and click the item to show the subview.
+    EventUtils.sendMouseEvent({ type: "click" }, item);
+    yield promiseSubviewShown(true);
+
+    // Items are listed in newest-to-oldest order, so e.g. the first item's
+    // verdict is the last element in the verdicts array.
+    Assert.ok(DownloadsBlockedSubview.subview.getAttribute("verdict"),
+              verdicts[verdicts.count - i - 1]);
+
+    // Click the sliver of the main view that's still showing on the left to go
+    // back to it.
+    EventUtils.synthesizeMouse(DownloadsPanel.panel, 10, 10, {}, window);
+    yield promiseSubviewShown(false);
+
+    // Show the subview again.
+    EventUtils.sendMouseEvent({ type: "click" }, item);
+    yield promiseSubviewShown(true);
+
+    // Click the Open button.  The alert blocked-download dialog should be
+    // shown.
+    let dialogPromise = promiseAlertDialogOpen("cancel");
+    DownloadsBlockedSubview.elements.openButton.click();
+    yield dialogPromise;
+
+    // Reopen the panel and show the subview again.
+    yield task_openPanel();
+    EventUtils.sendMouseEvent({ type: "click" }, item);
+    yield promiseSubviewShown(true);
+
+    // Click the Remove button.  The panel should close and the item should be
+    // removed from it.
+    DownloadsBlockedSubview.elements.deleteButton.click();
+    yield promisePanelHidden();
+    yield task_openPanel();
+    Assert.ok(!item.parentNode);
+    DownloadsPanel.hidePanel();
+    yield promisePanelHidden();
+  }
+});
+
+function makeDownload(verdict) {
+  return {
+    state: nsIDM.DOWNLOAD_DIRTY,
+    hasBlockedData: true,
+    errorObj: {
+      result: Components.results.NS_ERROR_FAILURE,
+      message: "Download blocked.",
+      becauseBlocked: true,
+      becauseBlockedByReputationCheck: true,
+      reputationCheckVerdict:  verdict,
+    },
+  };
+}
+
+function promiseSubviewShown(shown) {
+  return new Promise(resolve => {
+    if (shown == DownloadsBlockedSubview.view.showingSubView) {
+      resolve();
+      return;
+    }
+    let event = shown ? "ViewShowing" : "ViewHiding";
+    let subview = DownloadsBlockedSubview.subview;
+    subview.addEventListener(event, function showing() {
+      subview.removeEventListener(event, showing);
+      resolve();
+    });
+  });
+}
--- a/browser/components/downloads/test/browser/head.js
+++ b/browser/components/downloads/test/browser/head.js
@@ -125,50 +125,109 @@ function promisePanelOpened()
     // Defer to the next tick of the event loop so that we don't continue
     // processing during the DOM event handler itself.
     setTimeout(deferred.resolve, 0);
   };
 
   return deferred.promise;
 }
 
+function promisePanelHidden()
+{
+  let deferred = Promise.defer();
+
+  if (!DownloadsPanel.panel || DownloadsPanel.panel.state == "closed") {
+    return deferred.resolve();
+  }
+
+  // Hook to wait until the panel is hidden.
+  let originalOnPopupHidden = DownloadsPanel.onPopupHidden;
+  DownloadsPanel.onPopupHidden = function () {
+    DownloadsPanel.onPopupHidden = originalOnPopupHidden;
+    originalOnPopupHidden.apply(this, arguments);
+
+    // Defer to the next tick of the event loop so that we don't continue
+    // processing during the DOM event handler itself.
+    setTimeout(deferred.resolve, 0);
+  };
+
+  return deferred.promise;
+}
+
 function task_resetState()
 {
   // Remove all downloads.
   let publicList = yield Downloads.getList(Downloads.PUBLIC);
   let downloads = yield publicList.getAll();
   for (let download of downloads) {
     publicList.remove(download);
     yield download.finalize(true);
   }
 
   DownloadsPanel.hidePanel();
 
   yield promiseFocus();
 }
 
-function task_addDownloads(aItems)
+function* task_addDownloads(aItems)
 {
   let startTimeMs = Date.now();
 
   let publicList = yield Downloads.getList(Downloads.PUBLIC);
   for (let item of aItems) {
-    publicList.add(yield Downloads.createDownload({
-      source: "http://www.example.com/test-download.txt",
-      target: gTestTargetFile,
+    let download = {
+      source: {
+        url: "http://www.example.com/test-download.txt",
+      },
+      target: {
+        path: gTestTargetFile.path,
+      },
       succeeded: item.state == nsIDM.DOWNLOAD_FINISHED,
       canceled: item.state == nsIDM.DOWNLOAD_CANCELED ||
                 item.state == nsIDM.DOWNLOAD_PAUSED,
       error: item.state == nsIDM.DOWNLOAD_FAILED ? new Error("Failed.") : null,
       hasPartialData: item.state == nsIDM.DOWNLOAD_PAUSED,
+      hasBlockedData: item.hasBlockedData || false,
       startTime: new Date(startTimeMs++),
-    }));
+    };
+    // `"errorObj" in download` must be false when there's no error.
+    if (item.errorObj) {
+      download.errorObj = item.errorObj;
+    }
+    publicList.add(yield Downloads.createDownload(download));
   }
 }
 
 function task_openPanel()
 {
   yield promiseFocus();
 
   let promise = promisePanelOpened();
   DownloadsPanel.showPanel();
   yield promise;
 }
+
+function promiseAlertDialogOpen(buttonAction) {
+  return new Promise(resolve => {
+    Services.ww.registerNotification(function onOpen(subj, topic, data) {
+      if (topic == "domwindowopened" && subj instanceof Ci.nsIDOMWindow) {
+        // The test listens for the "load" event which guarantees that the alert
+        // class has already been added (it is added when "DOMContentLoaded" is
+        // fired).
+        subj.addEventListener("load", function onLoad() {
+          subj.removeEventListener("load", onLoad);
+          if (subj.document.documentURI ==
+              "chrome://global/content/commonDialog.xul") {
+            Services.ww.unregisterNotification(onOpen);
+
+            let dialog = subj.document.getElementById("commonDialog");
+            ok(dialog.classList.contains("alert-dialog"),
+               "The dialog element should contain an alert class.");
+
+            let doc = subj.document.documentElement;
+            doc.getButton(buttonAction).click();
+            resolve();
+          }
+        });
+      }
+    });
+  });
+}
index 071f7f7540ff0b4d03436e909c57befc34832625..0c91695aa5c5351fec6011df01bb2c364f28f749
GIT binary patch
literal 12765
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
--- a/browser/themes/linux/downloads/downloads.css
+++ b/browser/themes/linux/downloads/downloads.css
@@ -1,22 +1,24 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 %include ../../shared/downloads/downloads.inc.css
 
 /*** Panel and outer controls ***/
 
-#downloadsFooter {
+#downloadsFooter,
+#downloadsPanel-blockedSubview-buttons {
   border-top: 1px solid ThreeDShadow;
   background-image: linear-gradient(hsla(0,0%,0%,.15), hsla(0,0%,0%,.08) 6px);
 }
 
-#downloadsHistory {
+#downloadsHistory,
+#downloadsPanel-blockedSubview-openButton {
   color: -moz-nativehyperlinktext;
 }
 
 @keyfocus@ #downloadsSummary:focus,
 @keyfocus@ #downloadsHistory:focus > .button-box {
   outline: 1px -moz-dialogtext dotted;
 }
 
@@ -54,26 +56,33 @@
 
 /*** Highlighted list items ***/
 
 @keyfocus@ @itemFocused@ {
   outline: 1px -moz-dialogtext dotted;
   outline-offset: -1px;
 }
 
-@notKeyfocus@ @itemFinished@[exists]:hover {
+@notKeyfocus@ @itemFinished@[exists]:hover,
+@item@[showingsubview] {
   border-radius: 3px;
   border-top: 1px solid hsla(0,0%,100%,.3);
   border-bottom: 1px solid hsla(0,0%,0%,.2);
   background-color: Highlight;
   background-image: linear-gradient(hsla(0,0%,100%,.1), transparent);
   color: HighlightText;
   cursor: pointer;
 }
 
+@notKeyfocus@ @itemFinished@[exists][verdict="Malware"]:hover,
+@item@[showingsubview][verdict="Malware"] {
+  background-color: hsl(4, 82%, 47%);
+  color: white;
+}
+
 /*** Button icons ***/
 
 .downloadButton.downloadIconCancel {
   -moz-image-region: rect(0px, 16px, 16px, 0px);
 }
 @item@:hover .downloadButton.downloadIconCancel {
   -moz-image-region: rect(0px, 32px, 16px, 16px);
 }
@@ -113,8 +122,34 @@
   -moz-image-region: rect(32px, 32px, 48px, 16px);
 }
 @item@:hover .downloadButton.downloadIconRetry:hover {
   -moz-image-region: rect(32px, 48px, 48px, 32px);
 }
 @item@:hover .downloadButton.downloadIconRetry:active {
   -moz-image-region: rect(32px, 64px, 48px, 48px);
 }
+
+.downloadButton.downloadShowBlockedInfo {
+  -moz-image-region: rect(48px, 16px, 64px, 0px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo {
+  -moz-image-region: rect(48px, 32px, 64px, 16px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:hover {
+  -moz-image-region: rect(48px, 48px, 64px, 32px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:active {
+  -moz-image-region: rect(48px, 64px, 64px, 48px);
+}
+
+.downloadButton.downloadShowBlockedInfo:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 16px, 80px, 0px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 32px, 80px, 16px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:hover:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 48px, 80px, 32px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:active:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 64px, 80px, 48px);
+}
index 0065783f0e923e72d6a385991e09fa9590f4c1d7..2aad9c7be2a2a56a9690ab1ea26a5a788399a807
GIT binary patch
literal 12153
zc$_tQ2Uru&^Zq3PLXU;sm0pzITaY3hJ_6D^2#C^=4gnOTSLsaw=|x285I~v;1nIpK
z>0Md~zxe$>|9i5R-0t4q&g{&*?_4%YSNka$F&!}g0Ay;aO3!fL2wc%6B*2|VfuMB&
zU;)&W6!d*__JaIUDSOUtOInt88ioVDf`uWZ;amlLVU3EPXcUn(4;8{y;(7^5pAgc8
z+34mR#?d7=3h_mUX*}twrb&04k8@XMb)0UnrlHBmY;avL=#Y0gYYmpYiLk!RI~kOm
zm-M#K@m?^jX>nO7Z$8&+U?W`3S+hgs`Yifov8hcpnpMXzl0U@<9J9X5e^9?k@oc|Z
ziDX_Jy?c8$Wf>xc*vZjG`%oxvkps=u2ZMG(2at=wXiDDi-ajmF*3*O^s5K0f2Z&HS
z6$Ri^Z|b~`McvxHri$8^a#Eo~I&Gj>hyVlpUH=?xSrOO)c4de|LVyPF1qfmB(3Ki7
z1(Ja*&lMh?Q?#PNe>jfGfeTWkGw?TyM5DJSiWrHT<yIQomP^Ny{N#p*dt`T~z40c1
zq)8FcN_ke6N)e|r<vAR3e%KA;9KztH+eVKJVoE@pl#CG>r!}#unPJ4D1Uc-5X!BIr
zo`W(PY<i*@uof}5Ye{yOcW3kj{(EL#S0n+bQNj9<-efYlzl|RrQ#kAnFNogU<2*&~
z4d7dGAeh04C#lxJB=`b?NZrVTA`d{AN=PsxatwF@s>KFVBJF@e>z9VvSC;sPYzPsz
zWW42g>3ugThWMUNE4R|}@?VY@Z@vk06puMcQV<7ybTS!YO^`_jA$F=;7R$JP3e`*n
zw0EyqCEMLzOQKOCTJe2r%sb84u?~#AG6CTK=<4~qRbS;JY6}iYb2wA58+o3ZLc(_}
zq*?66c`9~mE%=X_2iO;k^vmVDB|_vw`rqFg0Q}&_`V@>Sgob4FJ-`42LzZ{7k3)!-
z<p2|DwTh~$M>V)Il45B+1O?QR_lfbqiUtM~BqSucp>X&{PInGC6k(#Tzpig!0K>Jh
zt2GavQl9(E<eg9|TeGvX53jD;lzixDY@9YWG1=Cqc;|;}0?p6$4qbFdbNXhoRdD%$
zHh7??^ZL~u`i+3v^N+q^>7hrFC#^XiNxR3d^O=#1Kt!njbZ}Az`yN!6zdDkLDLfdu
zd=FqiG9@*#?}2Jf%`6}Kl4cQF)i(O*vhm(30CB7SwaWt&fG2wR5wupxZeo0LQVi(N
zh5^Daeo3?y6j&869XKc}D-TyxH<$ARucm9QHJqKD>431#f|tXtE-u4Lh5t$3i!uvX
zh8M0L`HD3zxLDvMs4UBzX9Uvt{OYiWE8VmJ7dQ97fa}YbKiN{$xRX>dBOQ;k3V$vl
z)9Xs$+~?}PS2p;7+nl_&$d4`Yw1C8H<~6IR_rt3zodLmuR$sT2(;&X;W;$S$TWTO6
zL59p%czF$|k}0<GD<<w9(;{|2ji5kMI4EwUP^oDO(2sI%31lpCUuD^2g-GC8edjs{
z5Y?-*kMltpX@wv!^K>us$m$)+=4$>tVF&G=97)fg-sYAMkJ-$phWHZMw&)BD=6aoh
z!^^<!4~7;q;xwe?Dr?t)a+E9zDQr<Bc}Ix?ohx3di71ZvPAin8-*M4CdolZPa<Yws
z*3kMsu8s&`U`PZyg+q5RVyfEj=-U_>C@rkEl!bm8#JlkHjZqJl9)j;lH1>9SlXsp7
z*K=}Mpls~Eb>17(_)6|-s}-neMo-qx%*L0Z%+!$DLX3R$>8O!A1m^g#!PG3_NkA0~
zq>&bR{^*RpEl8}iPaNDx-(=ERiavhhiJ1B7VE8_=2LAjvZ)~LhVJCFxcS6g4^G>mq
zfKeG2F%;3&^~8I3`b$udTs~b)&u@T8iH}O7<6<@DwTZ%%H#Y_G#KF?i@|k~|L2qj(
z3XBtnmiV0zt{WG{Pd<y*A}wBl-XdR__UkrlPk*lVuHeM7NW%*@8PBNulyXF5f{STW
zchHSzdzz+98RW8)S9^=JK_g0!KR}GQ<X{=cbRbQ^4cb#`y8xaaH)X41m7wO#_Njse
zVEE2JL0du8yag(j>GO`EmLE`yUnJX{eM}Cz_;#^t^K%Eh-0)cjD0LNw`r_oG7tyL1
z6{%7ft0zt(cg&isJ_5nhHq_OU8wH;?)YlhH)mV10Q^geH<a{ZDy*k^$Rn`~9c_g#B
zcg{iJ^dWkBdM`#l^_+dw<+@KwkgKxBZ&KgbURK6!n+id)t8I5S&1VZDoJcioOJQ3V
zTiM*Z3GVtAMPdpUTlC!Hk*D81VnI2BZB-+zbUSZ!5B7MTL3Zhx3kXEdf4KluEWB`)
zwW%l_&l%#x!;BMuz!!fU6`(A1>~Hk*c@%-@h^RW~*Zs>#C7%0!#c6f+<k`@$>YeAJ
z={`|N$q~0<#<bQz`#E#ZLsF=rC$IC!NROopEqUJPm`u0+$<IiqXT$uP49j$ok;8e{
zUjpk7$mwiFk2)eS2P|ZC9aWeY$%z$LbHO~0l8&z<ZC6I7$6eWpj6V*PmE;m+$OZW~
zeRk5&lwCsM#gypeFS<}wI?aO2r`QV}2*MT4wkv8}=)s>x9cR%eWww3sd!|N4)8C~~
z-sV5;gswA(=_J;Yk51Gz)N>njGJlKV(PS<E<<@IXPfL}G^T=^mo0^f!8{S=UilZ~K
z<??|HK5hDMD;;&mewx|7^i;!0>}MRY`0UT4dV;*+X<GYcurJ=YGaWpuKy%&uEB6v&
z-eLl<qN|hb$Zo_oY0dbfrd@{TAj`yd0qq}&uuu`ZjKO_y+}>tucmZYd=n0vY8?z&g
zaJp<FE1*}REvj=t{-;^ac<PMKe2P9cYGu4k&+{$I2lb#&PFZ#$*hcrYtE-z}QJiT^
zRhzfiFEo3b{uA}!yu#2j$UFNEVK?e&rsk%iB0^nVJx5P7uETAm>*^f|^<=~M<U5*~
zLd5}2PEliQaOPUORjoAbaA&EXvJ4~fM+Lw63m<eHrlfyrye#JW`;>;~Mkp=esGzI6
zQ<RY}mq4S}vcU-x*`py1SP?ijO|l$g9a-`6vn;s~TdT@G_=lyc3rdS#F?Rw<ml^E>
z&=!DU7Tqm-Vi599SVf{VEe49H;fo8&FFQJb3K*I(-<x_7I+MW)#0o|U67)`kdZ*W$
zo0}tWg`n4n%(k+#(RIZ*SCfO?d}_|i4d>-G#$R7(czSv^H#JGNz1f?6H0mhwNbQ;F
zfeuH?J=<4gYr8eHkGg3cp2T>*eezLrq3hjQWLB2Yzd}O&sM7WI>mk)AUxkNRe6c@8
zgSa&~yz)jtalxjFZ&yBhTaPz5mb#7}rg&TLCJ6iv$C>6ItAV$}qBl<UoQ2d&p}Txn
z+Iro_6MvTAig*w*die7gue)2;c6}jh8_r?peu;GABdY=LBMu(__Fs>`jo1!RAPkK+
zqqO9pYtd&@B(&lwf%sM|@K_zM4^RTNb_2;dM3(J=K!%j}b`TDx*7OY~Vq#(p07oaM
zfiHEGl$2!vYJNUPyJSpVLt_x9mgXe@DLQ3#(jk}c8iu0@=FML2U^p%g^!~DZ{(KV;
zp%_VSk0V63U#2Y$Yb<1;Kr?nbpTyqsh+^R5Cn0$E7S?Uw<C{>y`#>@?jqsi<YDUbB
za)W6;{>-<NPVG$yk{{l7pCuGD>rCv7)c~08Pn{?XDge`*asfscRhNSb9M*_HXnM>J
z$B~nW#PNCuXgM>*hB!~iK6-4$jgJV&4sx^|B0n!{a<E2ruf%12*0QK~{Eq<WO<+Dq
zwYP8TTa&C2{=BU8@QBFv>XGwg<p2OrmzL9K?>Q=8Cyz~~_-3nDn@6A%v9#JOc7<Z4
z&gavsg&@O$2(LPf3QB4r!%j+Ja9|~O{T4ua_h%(D0{dXM=bV?~;e1iEYMumInL<5}
z29FmkY8r-U+0^c(vvK#)QY7?Q+QrJ&JC1&0a2UQgT3bMP<<IT4Pp-JtONNsMA2F(O
zq*MUdY*FXQ^~3a=)gTy)?86q!{S{q%wP(PL8-csqXOKzO7yVOi#M0>L^!r;92VF9R
zVE;kvO2NjwO}!66lfqvN{pc6rEqs(je*L^2{y~4?_-)!nd<vRWXe^amPdlA$tFOGA
z{6C6f287<!S%jC=4L2I26GQcAcJb~lEJUKchHZtDJkm3RZ;%qu?=@=sY>(}c%rkF!
zGc*~0p;6K%4o@yBb8Bp8Ra2(~K6nOE*N>a#oZv@N2Re8@#c+oDhem{l791^sp50o8
z_MXW;T{(a*mjI7}xLfVSt6N~5e9?mfyI-(U!0d?eL5$zNNSv(^r~dv8l0)bx!^ENX
z?DvMp0C}V$2q~g9MyafJtgV_kSS$pnm5g!oMy~=$FY_sTWA#svfVT?x;mty-&z?MA
z5Tb~L0O8eJe7TxABHRZVcDjWh9!f8kC@qdo?f~BEv~a<?=Pl2Z(shKVCtNqhw_W=}
zy69N$MFGI(aBhI6FJg9f)=oh|f&R8gEhU}^cDSCRvv~-^jA3oNAb~-O_MZw0mK*aV
zVK?V%pqI|h<^?l<98s0$1y)9KKKo`nFakK(Z7Jwnl99Y`_4n`J*4>dX{+)#upD$B8
z25U#Y{<t_flplDkR`}WJ7dh-sl#+n^DqG1Xu0diF5`G$4f3KAS1qdV*j=W1A`K_h{
zD~0K$cNHrcb8?A<zE^rkbMd5&xaTNZ+{kxkWZ2DC6CX7}#-ItVVF2=G@Qb{>2w=<L
zq0+vLyj#k|?QcQB3It460tovsbiqZuAj^k+p${XG&_;lbffruhEZuJ_ai5KaV51w7
zLu6IlxP+H=WJ$dI^b>jb>>==)C(3hwGlzdQCt)QADuIr^kcspR-j_aTJ-I4Qw<zy?
zvgJjGyBL<Wx3^E%$q@MH<L&JoHMXU1^Tp`r&RIDQ4oFUSXTDm^eSiHZR<N3j*hhll
z!+>3#?|A8d2e`xoM}t?etE;P{W1qFEXha;XkhnGf#~}#uawaAw7KMi;x?9}Wdf!*?
zB(g>EM*n8b)uy)e91?ZKDTMDz=rn`hNM>aqMz-<Oy+cXF4bi=@6AgrC3}Wi9rz2@1
z8-DWcpP`haRa*3iHXDBm@%|kjd<39s4h3=`VTNrHyOj&-!k}2-lEeaZ2QqUBi|WNv
ztbfx>JOkmu1q9!#Fth$92JWKFK7mA>0;rMSSQNq=4e`RFK;tJPP`3m}44&hKBp=;1
zFR-NihH#sp06;pt1`F8yct0nBE|f&adbWpoVnxuHJLo_bbSphtM%ZJ$pTANkc*@)-
zcmMnvZSiKt-n_h`LW7Qu?#a$n&C+oXwIu^)Gut%_7iky%sgNtWYiDPtFquu^^US3&
zf7|JAc`OD^X^+b(L%-PeQIXM!2-F5$|1~mS=n8UeJ9{(ul=-IOTWhP?-a^YP=b+H{
z*K>JyFbqf}B`@~)N;VRjKDZxNoC3XA=WW*Ty=Ccp#4NzKG<-C*z|e-d_n0pwaa2;y
zdDVvM0fYf9bKKc3>SKoLF=E!ibCP33<^z2AXRD#B@9cs4fZ#h!%NB`gzLfQ;ro<i-
z79?4xL40(srBO8<j`JQs41BPz12K=h1!(hM0<Z4hR<Jw}b|mbFuS1M!Zozdtc_ekb
zW)LCf1Lz}ZMt~sW;u^T9eO+lCdjmHDrH^EbAFTMDYz7IqF1Gg3+KxnH1jS%W5zs&X
zJnFO4?zbt6Im(zGkzriw^cH*GaU0~rkus_yy;pzlD<>)%`p>3VQU+?#c_COh8{Md+
zgv}96z=}@DOU>f3SBJ};p<<DVWK33GK1A+hjo0_d9=X?@N8Ts(l$*FS2pH<C8_OeP
znU=2$1dnMGH})YwLOAJTQZ|M+cFQ0ONZFQ&?!k*s?wipg9S^3+Ve6|PEHM&B_as{3
z6CD8hj~JfykyQpM&GP84#*wThCXW_qWwHJ`8Pa47G)G5Ze_*^~zl20#s%sw@81Ung
z)qpk&(R)#BDFa0=5gzO*YO=VCHVaqsUmE{WRF`inYe#y%<r|Q>Lnx7zoh=;Y8<xo|
zoT*y3$@=s+K0ZFVXFK1({FYlhqB0(wK03r|?fRBA*=i<YlID|Ig!$e0Y9?+@W-|i2
zGwA21-1ui$9lnH%q<;QyxK-rotL;9&!#{`lw7_E8KH=02e|arr$EaA6NjIWuamT_c
zpX~M=E&(Thc1~HKB2E%b4`+AOwt5#u_WC|xJ_REdL9v{SZ8ggot<Pn`=MI4*Uzxr0
zYjf=qJu&h6?v+FmV&eHPMtruz4XdE8mD=Y<Mt}4TL?bN?49ZGNRmmb*vm}|RWZ<?r
zg)Nq0Bz!w3Q#ASl`j?^M?s+M$;ZOk?d&r{%3DtG+t~^p1ICWxkoT-J!6A=sQYyyEb
z5RXFQQAV*Q1M-dg(off3NNV&F&C}{cHn=AdFBJmBCG3otQr5|r@Z9{BKZMItQNJ>U
zUF~DFC@x*6W!sPttG;-~A>3SPMPKUk8yHX)9`Sczj(JMP%68|QzRnPz;^E@q1<t-0
z-J8sg<HQ$H6MOE13=G;6+~z(v-sTG~4Vbg3+jts9I2AoA0*YLE^YTzSbSdxPt<J@j
zdF%?-TAQNup2bXYsDn|9-KUP2bdRs95CEfOCY*S;C;oT;-(DKTExy)jZ2IjT1efEh
z1~Eh^)T%&G8k~iCr)0rUZ$cQV+3^NL`+$^H>9Q}0@)HH&I|@ZAudI~Wv{2y}zuaQF
zB<YY!Eue9k<9^o2p-f?iVKZt{f`H})7bncckwfZ-50^M7Rs5)1S5SZ~E-!}wPd@6}
z3}uO$+J4C(uzO%lMh2b7k(JrCqvgMIC8vKD+ghY^wZF1HjW3Fcj?QsuFa;q#fBx+C
zFU};XDnaWKYkfvqTb}%-%G-F(==-7`>frO=ok6$Vm-c_|Cf@ZLWp#12Zru1Fk(JW5
z*y&a4`)BUPlYk~sK-_V6#6f3?gia^H=r|u=mrQ7A5meXcr|_}^1UE{pAdn0p)@lua
zzwBUEHL514qQL;#)CaA~se4clmdwacRRs^qp`~A(mGhuQf^-U9(EoZf@@e#!z7t>k
zDNLw0wD8*y)gJ%gxxbdfyqr_Bkwfh{Tp@w(whTI(Xi!ODVidm+do_)k+wjQ6N4%b?
zE1uc%dU%JhF|4ydI#cuI?d3=a`E{V21Irz^^Zf<s#@BP-)4ZgHgfe3p;#4eQk=<n4
zC7uGdu_4$?YU{}E(A8C&Z$(8)aVmvZ4*5Y;#CYKN<m7v2m0yRCLoPQAlk|Cdyv@^7
z2G$1yh)1M>9`DdzHq7gQh`=%sej5oTgSJ~GM(o{V3)+cyLhWOUoz8R5REubRImoDB
zw@#b=>bBg)Am95Ui|JA6(_9w*4;;0EL5TAt=eJwrS);rxk62<NYM{E{tSDv>8H71B
z&GxY_EKqS?8Y-gEp>lXYKn68epewyALfQ(-lJHkvr~m>XxEl*7-{WPuG60V#J2>B#
zg6gB2fcj6%z~W9SyW4ENlR2C`Hjkw&x7DgMtQ!#U-X0&j3BFa&A4#7gp&=!haIS9J
zB<)x_c=`IZR;AGwo1G-qr@kU|H~+15hS&A2%`AH~`O5KIskwi#-5xKKjmDXfmX=o8
zQ>Gv<OAQSY9kzRh!PDq;?E&+{;@xB3%T~ljFzrYjNx@Ti@Anss@)nFwxbBVm33<F(
zQ>1qJdA)4RgYOinuB(W>XRM`5mR06s_gNP2H#rpN4+>zhyG4GBDt#|jZwe-QnG$Q;
zNKK5*h__cx5}w`O)jbgBDDSv?HoP7CnwEr$Pl65pAb{4^AodG1HUK7jiu&#-()>7A
zdoWhesLyX$(!|tstirHnkuFX}4+>+7jp(*!ic^`wagx`j?XPCi>>hr3HfU$3E&TP(
zR(}%fY}Y%I^KbR_c5e<Ab7S9jt8(1qovO5Gv!APhzOwmpn8Nn~Z|XEBvptE<L=<D^
z&HMMAS75t*xEmXYibQ^9pcm>G5ya_8Q;J7xMmmdc1$otLsK)~#(v@_4e?*vPUeFdi
z!uYNOTwha5T)%xtlIN-bz9iU1LsfXd0#Ffa8Aws+B2asf5eO0$6}4w^Jc7hf^DmMm
za{EqJ8s~OFeA_G>a4HvG13gS4bZOd1(_R4)6BDPVrBN{@^x?vFk}6)w!ubKNI$HK#
z7OPtAS|218A@DbWl>`MyB|r&7dzbm$1AP&!EcBg`5^^$d8aurU0!|W`m4xk!p)7A4
zb-p}7qa{55jgI5We3tDpksaqb{0T&`+LMqGY=;{GZX!AV|AP@<1?_j-VzmQ(f{EWf
z>5GL5oG`<fkiSA?d;#HGH5zg(?-7t|f^Ss1Fu653`5ecQy>XeTZIB%E*IvRz`^<{+
zpMi4B71h<)BwW+^f=~X+?2jK&DLHkOd}r4r)!t3>n*T9qCfglf!Nb@F%>HBewc&A6
zUTz_uW^ccR>o|J>ZP%@N@?5MR`)MF~j#JS+Oz~&65(_B$e)3$2ej4Qz{J9uu;75y|
zqojpNch3HPVWy@Qw@NjzTN2lf$WaALXX73hM#!=7kIDMgIb(q=5Yb&;coi8{M;?9`
zu<E>qLEIpORshOl4Ikz2MO1gk5okIBv8g>7$&)1^Afp?{MU5XMz|hdpQBC{Rww1H9
z^LBYf_4diQo=&l;iOD`VQwyXQ2mpWP&Pfm6-(`*F;o&g@+?J7{;{gY4Q@_W(B=q!z
zn~t&9&Lasbh38=$iohC-H#iyw5agJ4x!Znw`!(!zW9cmd?c+Y)7g|i+D6o09Z0~<@
z*j>OV^TzA3;}iQ|<sG1v^BsliMP9y*p(7AL+;_~`+1GPEPk1knF42999CgLm9|r>x
zZ*Sd!{Fqj2mOp-!ssNVNH<kvnc>w^2uBbZq?0#uTQD!sZIr9i%p7QH*o8cVE-VGgv
zY}TrmZ^P3B->pJHz{4a}(?GyD?eY?xzx294@xccmQN36MaBDInUkgbe+%Rf%TcLjQ
zPf1;+|1I$|NqX3ov8k!D-ID@*Wte&n`TS*=HViwmzD+!q1K5b<rOmtQu|jM>l}(ai
zX*6^G=bf*X<Fl)fSIysE3MUHVVJPZb8Vb?!eW|YTI0>$OKXO@ewU;OdQbjx4iYJN6
z0q}0*O<0H0AtO~j`>GWAHBKI5C|S!B_~E-B4sf#$zU}-M6977l&Jr3*f#q;n;tQ^v
zi6>(bmxCJ^7<48+P~_1oOa1$I&h=pSo3kMeKmcPh^B+~FHlPi&>V!1Db<IEDo0^iw
z5&z#x4?otJH60^2UE8A|$bU?~)qi)onkgaDA~_VQY6G6~i@M9a+$v;c5`tgFZS}W=
zPEJaR(Z-CQ_8exQ%a!^WALdrF<vxu6(O;;bIP3DVMsae)mBTX-F#?aXBsBR=`@nV*
z;U5rF#s|-;2hUsp2Vry_cyCE)xPQvxA1l%X(+D#m37dQ1vbT~)(jif=`ZEj__Gs(I
zLz)bLVAAB&cdIeLGt(tyCZR(h$CH#!q?8wEz4<%W@@9XYmVnCwx!f7<*{emugyhu_
zf<oJcZIqJO)Qp-uHbRH8%Z@ZOG;-1{Jk;E^i<^8AOv^%zy>4qx+N!`l){uaivB;tF
zP(5Q@+^5{O6Ow^%73M4HUGM-_kcn}#YX~wPKtg~bB8k$waSv7i#|wd!|FD6H{$kh=
zvqO0@x_dPJSB_*3wyC#F{k68GSn8g$+<tPRNI2M$qY#4<1KmlIj}<(yKXOv)>!+rN
zMt`dBfpT$k9~D32evM;zuj5?tV*1NusbR|{eDObjs{1@lLW#eg<)iBuH`db|qhkE=
z3r4~O#9CW@d7DPj7kNE^e7=%$cv{TE6WBDH6D9jr><DxfZc!adDf0J>epF$%A2(r<
zP3kZaBB*Hl7d;8|-5({iFaVWd39dWx)LlymWv|aJ3#9DNd4>62Rj}x4MMM6eMQ>VD
z<+3g?1s+b06k7S3%s1$_2Ko0&J^hjC-*1fh=7E51*2^CtN2&SL%b`}kmRFaaM}XuJ
zh*bU-`+WJjV(ratSi^#F_R2GW)~y$P2@bD30yS<)H;47wwfM*Cv|IqaH~TE#7Vmc8
z#!`g;gezu#h`q*{1NiJD?gGPn<Tq{?4|7}ZPs$kF@HoYh94j=15GU?Fvg>nBS*8S!
z$xH`7X|Fi9>0anXv)a=njjng*_NFDe+I0!ATH2!Rryo!37WWrmBE!KpKX<r{*C3>z
znd_>Hwm>IpkB={c;D51kx$E*)lnD8q=3#I14)dwAY;SY^yIU{Jr%I-Y5R!7p-Z**~
z7>NVWfXsIVJ_n1TB>b(l*~Y-`Dx~##zvWSmr)I`s;j!?D%$Rek?8z_THu;OrQX6{E
z&nQ?erh-iZu@p2FN7AC!C0)AK<#LaM-0S<zl0qQj!xO*-U&}v6x!GcUCJFbXZ!88P
zBM<TN!#4FN32J+x84oWw!_9uEV5JNE5Z`!>)*v*&@B0+UIazOcQ8GxA+g`CYN$+j_
zwd3bwFv0uKsylK+1M4zSm_Xpg;j!niWC_@@gLJ;ux_dHL+DC=P_8A{l%HAPh7)z@c
zIAfpwK|T3xqY;6BkI-RRvBpjZ&VeM*3}yQ2b={D0(vxLsbb#X?J4#;Jg&2N3M$LL*
z7(}qlz(+ZOqdR}UTf(OC*7+c=z$5&<yj#P9MSBijre%B-X&&TG+WYVJ)67Y^nZna+
zASRF>m89wgP+)vmqdaL_+RX&3rDE%65K+J*e8~~I3F(zd0A);wy&<I+`}N11UJ`BT
zK1?Es4j%Rk^Tgt#F%O0>OT-%6H#IrN3=AfO?Tt4B&iD6bD8c{$Ch~7DK%AJUsB(~8
ze)rCq6sX|K7s0FjmV^C;FSbwLdd7Q6RlV(A@%~4knk#S!)}J*|(IQ1*U%;mpIQRW^
zRM7Qbc5o=-+48wGQu6QaOo~y<o4t>&9hV#~yX5LW)_BwTO~1dq@@Z!9-yI5CV38id
zw+nop--#xprSP*$^|yB;4{VkXzg~)7Eo^f_2p(z@^G!C}UAIBfX-5t`zP+BmG${i5
zWwL>|?t~c;Iry8ahd@xzZ8+SwtF~-~AUw@|Q#Fqsu6x|g0*P}!04HTBq=?hn$zo(Z
z7J5d)3RbNX3(lzG7IiRbgmqz4%y#xN_l@_C2oOFeT3~sF0ADYQWVWqNU9Ry#B;?gn
zyKEg!r1#%)B;^3xT?N*BPYe14&T=vt<mS-Qk2w2+%vn15q>Hzn7ISGeN3?u&+s?}%
zY!h!>$bOys8TtowSy;-qD6ZCZH&7p%RZHuOcu?C%K$B7v7uHu`8BVIM0)a)!iXoS8
z;fFM*40Trb-|I-fLUeW*AKE!2pmRLqwJwK~rnOG}c|Pz!P?itD01XzS$-&Bbk4W-f
zRBP$Z)h>>OHGD%&7+MZZR+*lwbEI&musH#m+f&O^-sZ!0LeCy18TCkBZyaw7&RvAK
zI~m@Lil5i4ZYgm~M0gCd3%Fn;w$DuHWOA+enEaE4Z#HvJ2+$I?nsm#)??Jw>BGD_F
znjQ|pM0Y2-IxF(<TlU1C%<unpCp68UuoSt?Cf^DYa*tPpFFF09r=mY=Fc5M2T@=rB
zSb7>Mj{yM!&XbkoN5Bbs<lqj>?PRFI>pj%>@5~0{DyZDSb@vXecBk{fcV9#bA^Fz3
zTNN2(GP{PG&>u%%L}A;X!WB?_Z-|HtQcVRkgT+J5f4pNi4(hi!P<YHH&5W;**ACQu
z_NnP7*|Zh<@2={hKkH7@Y1rEWLMo7i)B6HFG(Nym`{&zJ?ytlYwKMTdPsK{T<V?V`
zr2fyg<+;Ib+pPc~Qq45z2NF$dHFST4#y1kLU^2Y<j!2xHojrN!?95zMRmJ$yXGxt(
z1~?ci(Xr}!OB7UIQ9)994N7=p0RW^l0!ZngtJ9y@o9lo|(}8$gC5@YVSy;*A<K<Qx
z$@6(&vg`y5%zlw>3BP`x6<2u@8CvNnoa7uUSYn-a5W>)8+CT@7FH5kJ&umpX%yGN<
z4o1@K4AamL(_F93H+i;9e-L!+jioKQ4s1UvFaLfv|LN01!vrSTuzzW<)4O-?B;#4s
zl37p+YYx9MMjg7|?p!r5?C<=N?a)XUa_9&S3cAm^_}uu}v(?&TX$JDmH!U^U0xQkJ
z<xF!T@Mkxoi8;$s&?y>!-%t%+1|ymIm}(vmE#x|JMA4Nqu1_jVWr4X!y{c_Ip0xH|
zQ)m~9=e`KaWU=~g2;nSNl(1e!e90N4MN@+p>b85~3eghLDa8iTSv|7debZ|MvfX`$
zW3CO;)eMO-Pyzq#KIV}5dY6Ufs`7Fk@dYov5L`l8KZ>_EOd=o_)P9)|@^%|{EVwkt
z1pHkv=<F&;{>nYhA%_^fFtfclX;7QLI41;`zfD)U{%^IOGAt0c#&5rb7`Cnla#)4;
z76!p~@J-Nt3TZv8V)itSywghAy<5;@RTYrgv;wQP)accT4H!L?eI8Z4(=qPdW;At%
z-fu!P&CyoU!mPAS8(iXAF~@__^DYf*pR--I(MP@vo7a;Uz~s~Gs~xSQVvT&4!^^;*
zyDbORJcrkmCqd4EK*d*dcM!Lxzi{lmhS)P(Fd+}a(<qo#u{3;tW?+?lv#`_8Vqe!z
zfu$kTzxdlPmc$Pu@gaCzj!O3lX@1-2ZFb$S>QL1E1A)mLRuj@JXic4+`7C%(^-Ky)
zo`8Qj{d-wn@w{qw`}}%BEro;Z&s>8msuF(}r?L_q`5Td|i#45bXt+XOtKW$~8Lh|n
z5fSEES$<@W#ZuCbw`5hNhl9T8S)0IyuF*`~cp|j**t}>=RsredO<K2tTa`a5(Z&F6
zZq;$Hq*|!Jv6fp9v1s39>G$c3+1nCPy%P~<6grd>I+sIj#nIc(#yKbyYc(2{AoqHh
zq<^F2D+wFU`qTt!!Hg>)kKm5OOWu1dTQ5lAk!bw&K>X5%^&P&5cl^w>^0AriB%fs>
z;xFy>jHR*n%R3Z78G^RGJuIC44}dB8t3QPgoM}U$f1DU-Z9n7u3ECG&KgCHEQ=I<T
z{Hp3MJ%Cslu5ys_^z5x*H-6bC@AXI5Qfp}ar<+9O#3c4b0<K4YC*;rk$6Wh=BP30@
z$Vh*ufqs%wX+ynDE83dL%sXfWgk?#=h{;d}{x{?A=WWe?oeK7c8->2AWcGwG;L-YA
z)jQzBU(7ix*j|~kbSGwZV3l@8cmes_%aIYVXfPpCC(m~^>P;N1K9^e8-u&9oz~Hj?
z-#kC4I}N5iy4De)8zTDhq6<>mTzxLaEQJr0<Oesme173!FT*qyay<wA8`0gg(xK&x
zu#sqWP>VNX_juD3?a)V6$lmGJa{?V@7<_l?K12nx`Yg!;TX?qa8i+_US$KWifUsz1
zW`oPsAC%E6*kYXg+RsfA5v?3@Rk`bmsN|!@od!xonO=znQM5}BFmGaL=!5e*V67Fw
z%pLuZ_K6$L&eLM)M9ZnsIr8W8o~9<IrovQACw?FgmBD!~UJ)e#S)6WmuW==UzFDwW
zAOwpEdYYB6P6$KK2U;Lf*zb?orT?a4UVaL>@m-I;_lJSzI*^q-!lRtp7txCI!}^GJ
zJiJe}V5zElCcGa4V{#~r0+`k@tk!UBM}cFN{?X-}LT90!E-E@%2BQ<sV&7*TA}0;M
zZ@YWHce=j0xtTnd+S}WEZxw<g8Ja;sLB12^26OcE^eLNBjJBj(UM6CzkV@mWW^<fI
z(x_hJ7{?Jl3Dx-2)KtmP7qEmaN{DvmJq&e$dWRcBBtpnH#1Jfx^<@3dtZw|AP|AqM
zul@qKR!D1VmN_4)XWUzZG%CDbx^xUFO-&L*uq<T51BiZ|x3c^=P_LKQ|EW5tK%RHM
z{C3<A#F-GBU@OhPY?#(6`Um3&ItYJ7$Z2+qi|pEuZ@_yEamHKr>sjtYBFq$-m8||$
zcBN9>XZg`Ex8pMTem7y7Ca8EYe%1i<-o?3f!5W&Mpz0)aehn=zo%#QI4S=%zs2|Y(
ze#Ck#b<%E+VqkgC$0fpZEOp;<Ib&P?9aN&pix}oc3`22W-O}Ss1BXu^!SspegH^u3
zNnH(2dH;i^tJAIffB2Y?zm_^eLPk!v#(1HmG|Tu>kx&6!V3;@UXk3}e%&eRNm(6K@
zO_KdxRVef#q*XGAsE#+o=a7L67Xq0>Ye8h6TQyLEOa)_SK3xCyxb1b(To)n<rj4^-
z9RUQCR8-~v!yZ}xQ$i|A$|l6{3W$`4o7-J8$Jf;UAL5udqnbi<J0Ub>6~uf@`#r^!
z<fn(LMuz~w1VaDiE&0!!_`g_RRz~pU`V!c0trB}743`VyWkRZ6D`X(36)a>=+UDSk
zKkk>y9~3EB0T#eaf@{9GYu=t52-mA1EDVg+5?>g%G%)zzCX|NPb5w#yxYR{}ncUpS
zsPtD}kk5y?y|f)1mUJxEbGPWQ=mY{M3}41s*NR7j@$`wrv9e(yOtnT3oE2njJx6H-
zQ(vZ=166%{m9HMLh<h;D>2BNWxybZuyNcV1h0eGAcSo!sU#lsqe_u<c`sy`4`~sT~
z8F~_OiG;w`7ualiAvEh}{*3=HO}=4n&-Zd8-RIRp^S1?#ySOZifRf_k!;H_8`Nqj*
z>OT;<z@f>WSk!b6RG<{aZheyhsLu;=w9)oPUhm?nagzKYK-ukj+I82iv)b~0&-}!)
z;smPNi=0gbIhIZKZCVi4r#geJ!7A%39fbAln8qDfPM`}d55v>Q!?Y~j?0eGpiV3ZO
zfC9^o;Lg#)r-m(NkL__DW$Lp#Jz9MP!aV~(d{m6QaB08Xba81g^}`%-Zi~Av=J<p(
zh{^$g*{oiVEo(SoGn?i#Dmp}TJs-V+TT<Cuh;C|JVUjyJLV+x-gK|Aa9{N|7fyFYo
zcmwN#vO6T~H@jXSzu;At#W}b%2<2_A@}|vCKeCAuW+io>F!oEU#%-%FpceL}>b;<>
zgHiv=NH{dni(FZg{q(N`cs)4$MwZri$<LvGdqn(tp4|&WPG%V_7fj1|GPgn$Uxs~?
zf|SRszz&?V-hBA%6e*$=pl$^|PR5aRG()zyEBPa{MmIe^Dvf`CQM+~o--K-%x7i2y
zXa@pr%O@jp2@9ShH9qgUtzYA4m23n#?e^E~MchIx({*Rh-EaJp87^^W;>%TJPh)+g
zKi?4u@VK1}&Ed{9<~B+Q<AydR@WSucCh(mPmEBz*6Gt0_M&wzre06ymTCk&2A3SG(
zEKHE2`|W+h*<2mzWgenw1$i~Vz>HKKb<{Wg{%R)VSy`%>%Y37pY{1`BV|?UeIYd&|
zN-cJ7Nv>9$DPc!cG==y2bZc#x6)t%MiXCSdT8>7;KCyQm?oQi~KGyTt_qoH2ETCjj
zkf47{^5^|-nBWEc$vRZhynSd4unf~|eSTNm7O1B5o*p`um%%Zf$B=v+W_8DYF{K^-
z3T8#c<1xYO#B7|Moj04%d2?NoXz@i~+YamQhz}X`BX6M>6^DD>u^8FkflAr(Ay~Oy
znioS?1|u4eFJ0!!tYd|RnXLY|foXt@GDIM?a~e(m(Q|o&zIk;PySRH3OP+?~^}ro+
zD>BC+*{|UqJ14F4Ed3I;c!ATldM{-AOI-Ub!Cl~fmRHE<*+M$`jyH_6Ae^KA73lp;
z^a`$*C*(Im;`r*7X0^$;mjO5&kYFHpkixOYXSm<~oniQAxX2&VP+#wu+XJC-y8cKJ
zj6tikcJPMw>Tcp<%<BYb9cu5O;1~J2JbwX$2#GxNdSS!WT0?l?)!@mYVW<FT333Up
z^hIcKn%r{BAO{NX_dqID_B#_9N1=|)t=kk#%eN32q!)@-fpK&RZloc7#mIGG`}CB7
m%ji_C>=xI)J{CfW>jiSFeA6f8r-=e^hnljsQuPz7u>S+RvrkR{
index 93c95c9af835e3d4fa84c9770593a415b17da088..fba4edbb53abee13b57c2a6b7e39329c5c19ed15
GIT binary patch
literal 34138
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
a|DS(NfXJ8U2R|NT00K`}KbLh*2~7a=v^5z3
--- a/browser/themes/osx/downloads/downloads.css
+++ b/browser/themes/osx/downloads/downloads.css
@@ -5,36 +5,55 @@
 %include ../../shared/downloads/downloads.inc.css
 
 /*** Panel and outer controls ***/
 
 #downloadsPanel {
   margin-top: -1px;
 }
 
-#downloadsFooter {
+#downloadsFooter,
+#downloadsPanel-blockedSubview-buttons {
   background: #e5e5e5;
   border-top: 1px solid hsla(0,0%,0%,.1);
   box-shadow: 0 -1px hsla(0,0%,100%,.5) inset, 0 1px 1px hsla(0,0%,0%,.03) inset;
+}
+
+#downloadsFooter,
+#downloadsPanel-multiView .panel-subviews {
   border-bottom-left-radius: 4px;
   border-bottom-right-radius: 4px;
 }
 
-#downloadsHistory {
+#downloadsHistory,
+#downloadsPanel-blockedSubview-buttons > button {
   color: #808080;
 }
 
 @keyfocus@ #downloadsSummary:focus,
-@keyfocus@ #downloadsHistory:focus {
+@keyfocus@ #downloadsHistory:focus,
+@keyfocus@ #downloadsPanel-blockedSubview-buttons > button:focus {
   outline: 2px -moz-mac-focusring solid;
   outline-offset: -2px;
+}
+
+@keyfocus@ #downloadsSummary:focus,
+@keyfocus@ #downloadsHistory:focus {
   -moz-outline-radius-bottomleft: 4px;
   -moz-outline-radius-bottomright: 4px;
 }
 
+@keyfocus@ #downloadsPanel-blockedSubview-deleteButton:-moz-locale-dir(ltr):focus {
+  -moz-outline-radius-bottomright: 4px;
+}
+
+@keyfocus@ #downloadsPanel-blockedSubview-deleteButton:-moz-locale-dir(rtl):focus {
+  -moz-outline-radius-bottomleft: 4px;
+}
+
 /*** List items and similar elements in the summary ***/
 
 :root {
   --downloads-item-height: 7em;
   --downloads-item-border-top-color: hsla(0,0%,100%,.07);
   --downloads-item-border-bottom-color: hsla(0,0%,0%,.2);
   --downloads-item-font-size-factor: 0.95;
   --downloads-item-target-margin-bottom: 6px;
@@ -53,24 +72,37 @@
 
 @item@[verdict="Uncommon"] .blockedIcon {
   list-style-image: url("chrome://global/skin/icons/information-32.png");
 }
 
 /*** Highlighted list items ***/
 
 @keyfocus@ @itemFocused@,
-@notKeyfocus@ @itemFinished@[exists]:hover {
+@notKeyfocus@ @itemFinished@[exists]:hover,
+@item@[showingsubview] {
   border-radius: 3px;
   border-top: 1px solid hsla(0,0%,100%,.2);
   border-bottom: 1px solid hsla(0,0%,0%,.4);
   background-color: Highlight;
   color: HighlightText;
 }
 
+@item@[showingsubview] {
+  transition: background-color var(--panelui-subview-transition-duration),
+              color var(--panelui-subview-transition-duration);
+}
+
+@keyfocus@ @itemFocused@[verdict="Malware"],
+@notKeyfocus@ @itemFinished@[exists][verdict="Malware"]:hover,
+@item@[showingsubview][verdict="Malware"] {
+  background-color: hsl(4, 82%, 47%);
+  color: white;
+}
+
 @notKeyfocus@ @itemFinished@[exists]:hover {
   cursor: pointer;
 }
 
 /*** Button icons ***/
 
 .downloadButton.downloadIconCancel {
   -moz-image-region: rect(0px, 16px, 16px, 0px);
@@ -148,16 +180,66 @@
 }
 @keyfocus@ @itemFocused@:hover .downloadButton.downloadIconRetry:hover {
   -moz-image-region: rect(32px, 112px, 48px, 96px);
 }
 @keyfocus@ @itemFocused@:hover .downloadButton.downloadIconRetry:active {
   -moz-image-region: rect(32px, 128px, 48px, 112px);
 }
 
+.downloadButton.downloadShowBlockedInfo {
+  -moz-image-region: rect(48px, 16px, 64px, 0px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo {
+  -moz-image-region: rect(48px, 32px, 64px, 16px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:hover {
+  -moz-image-region: rect(48px, 48px, 64px, 32px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:active {
+  -moz-image-region: rect(48px, 64px, 64px, 48px);
+}
+@keyfocus@ @itemFocused@ .downloadButton.downloadShowBlockedInfo {
+  -moz-image-region: rect(48px, 80px, 64px, 64px);
+}
+@keyfocus@ @itemFocused@:hover .downloadButton.downloadShowBlockedInfo {
+  -moz-image-region: rect(48px, 96px, 64px, 80px);
+}
+@keyfocus@ @itemFocused@:hover .downloadButton.downloadShowBlockedInfo:hover {
+  -moz-image-region: rect(48px, 112px, 64px, 96px);
+}
+@keyfocus@ @itemFocused@:hover .downloadButton.downloadShowBlockedInfo:active {
+  -moz-image-region: rect(48px, 128px, 64px, 112px);
+}
+
+.downloadButton.downloadShowBlockedInfo:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 16px, 80px, 0px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 32px, 80px, 16px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:hover:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 48px, 80px, 32px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:active:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 64px, 80px, 48px);
+}
+@keyfocus@ @itemFocused@ .downloadButton.downloadShowBlockedInfo:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 80px, 80px, 64px);
+}
+@keyfocus@ @itemFocused@:hover .downloadButton.downloadShowBlockedInfo:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 96px, 80px, 80px);
+}
+@keyfocus@ @itemFocused@:hover .downloadButton.downloadShowBlockedInfo:hover:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 112px, 80px, 96px);
+}
+@keyfocus@ @itemFocused@:hover .downloadButton.downloadShowBlockedInfo:active:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 128px, 80px, 112px);
+}
+
 @media (min-resolution: 2dppx) {
   .downloadButton {
     list-style-image: url("chrome://browser/skin/downloads/buttons@2x.png");
   }
   .downloadButton > .button-box > .button-icon {
     width: 16px;
     height: 16px;
   }
@@ -237,9 +319,66 @@
     -moz-image-region: rect(64px, 192px, 96px, 160px);
   }
   @keyfocus@ @itemFocused@:hover .downloadButton.downloadIconRetry:hover {
     -moz-image-region: rect(64px, 224px, 96px, 192px);
   }
   @keyfocus@ @itemFocused@:hover .downloadButton.downloadIconRetry:active {
     -moz-image-region: rect(64px, 256px, 96px, 224px);
   }
+
+  .downloadButton.downloadShowBlockedInfo {
+    -moz-image-region: rect(96px, 32px, 128px, 0px);
+  }
+  @item@:hover .downloadButton.downloadShowBlockedInfo {
+    -moz-image-region: rect(96px, 64px, 128px, 32px);
+  }
+  @item@:hover .downloadButton.downloadShowBlockedInfo:hover {
+    -moz-image-region: rect(96px, 96px, 128px, 64px);
+  }
+  @item@:hover .downloadButton.downloadShowBlockedInfo:active {
+    -moz-image-region: rect(96px, 128px, 128px, 96px);
+  }
+  @keyfocus@ @itemFocused@ .downloadButton.downloadShowBlockedInfo {
+    -moz-image-region: rect(96px, 160px, 128px, 128px);
+  }
+  @keyfocus@ @itemFocused@:hover .downloadButton.downloadShowBlockedInfo {
+    -moz-image-region: rect(96px, 192px, 128px, 160px);
+  }
+  @keyfocus@ @itemFocused@:hover .downloadButton.downloadShowBlockedInfo:hover {
+    -moz-image-region: rect(96px, 224px, 128px, 192px);
+  }
+  @keyfocus@ @itemFocused@:hover .downloadButton.downloadShowBlockedInfo:active {
+    -moz-image-region: rect(96px, 256px, 128px, 224px);
+  }
+
+  .downloadButton.downloadShowBlockedInfo:-moz-locale-dir(rtl) {
+    -moz-image-region: rect(128px, 32px, 160px, 0px);
+  }
+  @item@:hover .downloadButton.downloadShowBlockedInfo:-moz-locale-dir(rtl) {
+    -moz-image-region: rect(128px, 64px, 160px, 32px);
+  }
+  @item@:hover .downloadButton.downloadShowBlockedInfo:hover:-moz-locale-dir(rtl) {
+    -moz-image-region: rect(128px, 96px, 160px, 64px);
+  }
+  @item@:hover .downloadButton.downloadShowBlockedInfo:active:-moz-locale-dir(rtl) {
+    -moz-image-region: rect(128px, 128px, 160px, 96px);
+  }
+  @keyfocus@ @itemFocused@ .downloadButton.downloadShowBlockedInfo:-moz-locale-dir(rtl) {
+    -moz-image-region: rect(128px, 160px, 160px, 128px);
+  }
+  @keyfocus@ @itemFocused@:hover .downloadButton.downloadShowBlockedInfo:-moz-locale-dir(rtl) {
+    -moz-image-region: rect(128px, 192px, 160px, 160px);
+  }
+  @keyfocus@ @itemFocused@:hover .downloadButton.downloadShowBlockedInfo:hover:-moz-locale-dir(rtl) {
+    -moz-image-region: rect(128px, 224px, 160px, 192px);
+  }
+  @keyfocus@ @itemFocused@:hover .downloadButton.downloadShowBlockedInfo:active:-moz-locale-dir(rtl) {
+    -moz-image-region: rect(128px, 256px, 160px, 224px);
+  }
+
+  #downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype="subview"] .download-state[showingsubview] .downloadButton {
+    list-style-image: url("chrome://browser/skin/customizableui/subView-arrow-back-inverted@2x.png");
+  }
+  #downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype="subview"] .download-state[showingsubview] .downloadButton:-moz-locale-dir(rtl) {
+    list-style-image: url("chrome://browser/skin/customizableui/subView-arrow-back-inverted-rtl@2x.png");
+  }
 }
new file mode 100644
--- /dev/null
+++ b/browser/themes/shared/downloads/download-blocked.svg
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
+  <style>
+    circle {
+      fill: #D92215;
+    }
+    
+    rect {
+      fill: #fff;
+    }
+  </style>
+
+  <circle cx="8" cy="8" r="8" />
+  <rect x="3" y="6" width="10" height="4" rx=".5" ry=".5" />
+</svg>
\ No newline at end of file
--- a/browser/themes/shared/downloads/downloads.inc.css
+++ b/browser/themes/shared/downloads/downloads.inc.css
@@ -8,37 +8,30 @@
 %define notKeyfocus #downloadsPanel:not([keyfocus])
 %define item richlistitem[type="download"]
 %define itemFinished @item@[state="1"]
 %define itemNotFinished @item@:not([state="1"])
 %define itemFocused #downloadsListBox:focus > @item@[selected]
 
 /*** Panel and outer controls ***/
 
-#downloadsPanel > .panel-arrowcontainer > .panel-arrowcontent {
+#downloadsPanel > .panel-arrowcontainer > .panel-arrowcontent,
+#downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack > .panel-subviews {
   padding: 0;
 }
 
 #downloadsListBox {
   background: transparent;
   padding: 4px;
   color: inherit;
 }
 
-#downloadsPanel:not([hasdownloads]) > #downloadsListBox {
-  display: none;
-}
-
-#downloadsPanel[hasdownloads] > #emptyDownloads {
-  display: none;
-}
-
 #emptyDownloads {
   padding: 10px 20px;
-  max-width: 40ch;
+  text-align: center;
 }
 
 #downloadsSummary {
   padding: 8px 38px 8px 12px;
   cursor: pointer;
   -moz-user-focus: normal;
 }
 
@@ -148,8 +141,79 @@ richlistitem[type="download"]:last-child
   background: transparent;
   padding: 5px;
   list-style-image: url("chrome://browser/skin/downloads/buttons.png");
 }
 
 .downloadButton > .button-box {
   padding: 0;
 }
+
+
+/*** Blocked subview ***/
+
+#downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype=main] > .panel-subviews {
+  /* When the main view is showing, the shadow on the left edge of the subview is
+     barely visible on the right edge of the main view, so set it to none. */
+  box-shadow: none;
+}
+
+/* When the subview is showing, turn the download button into an arrow pointing
+   back to the main view. */
+#downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype="subview"] .download-state[showingsubview] .downloadButton {
+  list-style-image: url("chrome://browser/skin/customizableui/subView-arrow-back-inverted.png");
+}
+
+#downloadsPanel-multiView > .panel-viewcontainer > .panel-viewstack[viewtype="subview"] .download-state[showingsubview] .downloadButton:-moz-locale-dir(rtl) {
+  list-style-image: url("chrome://browser/skin/customizableui/subView-arrow-back-inverted-rtl.png");
+}
+
+#downloadsPanel-blockedSubview {
+  background-image: url("chrome://browser/skin/warning.svg");
+  background-size: 32px 32px;
+  background-position: 16px 16px;
+  background-repeat: no-repeat;
+}
+
+#downloadsPanel-blockedSubview:-moz-locale-dir(rtl) {
+  background-position: calc(100% - 16px) 16px;
+}
+
+#downloadsPanel-blockedSubview[verdict=Malware] {
+  background-image: url("chrome://browser/skin/downloads/download-blocked.svg");
+}
+
+#downloadsPanel-blockedSubview-title {
+  margin-top: 16px;
+  margin-bottom: 16px;
+  font-size: calc(100% / var(--downloads-item-font-size-factor));
+}
+
+#downloadsPanel-blockedSubview-details1,
+#downloadsPanel-blockedSubview-details2 {
+  font-size: calc(100% * var(--downloads-item-font-size-factor));
+  margin-bottom: 16px;
+  opacity: var(--downloads-item-details-opacity);
+}
+
+#downloadsPanel-blockedSubview-title,
+#downloadsPanel-blockedSubview-details1,
+#downloadsPanel-blockedSubview-details2 {
+  -moz-margin-start: 64px;
+  -moz-margin-end: 16px;
+}
+
+#downloadsPanel-blockedSubview-buttons {
+  height: 41px;
+  cursor: pointer;
+}
+
+#downloadsPanel-blockedSubview-buttons > button {
+  -moz-appearance: none;
+  padding: 0;
+  margin: 0;
+  background-color: transparent;
+}
+
+#downloadsPanel-blockedSubview-buttons > button[default] {
+  background-color: Highlight;
+  color: HighlightText;
+}
--- a/browser/themes/shared/jar.inc.mn
+++ b/browser/themes/shared/jar.inc.mn
@@ -47,16 +47,17 @@
   skin/classic/browser/customizableui/panelarrow-customizeTip@2x.png  (../shared/customizableui/panelarrow-customizeTip@2x.png)
   skin/classic/browser/customizableui/subView-arrow-back-inverted.png  (../shared/customizableui/subView-arrow-back-inverted.png)
   skin/classic/browser/customizableui/subView-arrow-back-inverted@2x.png  (../shared/customizableui/subView-arrow-back-inverted@2x.png)
   skin/classic/browser/customizableui/subView-arrow-back-inverted-rtl.png  (../shared/customizableui/subView-arrow-back-inverted-rtl.png)
   skin/classic/browser/customizableui/subView-arrow-back-inverted-rtl@2x.png  (../shared/customizableui/subView-arrow-back-inverted-rtl@2x.png)
   skin/classic/browser/customizableui/whimsy.png               (../shared/customizableui/whimsy.png)
   skin/classic/browser/customizableui/whimsy@2x.png            (../shared/customizableui/whimsy@2x.png)
   skin/classic/browser/downloads/contentAreaDownloadsView.css  (../shared/downloads/contentAreaDownloadsView.css)
+  skin/classic/browser/downloads/download-blocked.svg          (../shared/downloads/download-blocked.svg)
   skin/classic/browser/drm-icon.svg                            (../shared/drm-icon.svg)
   skin/classic/browser/fullscreen/insecure.svg                 (../shared/fullscreen/insecure.svg)
   skin/classic/browser/fullscreen/secure.svg                   (../shared/fullscreen/secure.svg)
   skin/classic/browser/heartbeat-icon.svg                      (../shared/heartbeat-icon.svg)
   skin/classic/browser/heartbeat-star-lit.svg                  (../shared/heartbeat-star-lit.svg)
   skin/classic/browser/heartbeat-star-off.svg                  (../shared/heartbeat-star-off.svg)
   skin/classic/browser/identity-icon.svg                       (../shared/identity-block/identity-icon.svg)
   skin/classic/browser/identity-not-secure.svg                 (../shared/identity-block/identity-not-secure.svg)
index 79a6a5d8ecff88dc27b56245e70f1bdde9334c3b..b8a97d3750ab5220f53134acab45f6fb6c88c911
GIT binary patch
literal 13804
zc$_7g1yoee+sE&+!XmXODj_VO0wO6P0!yQGcY}yh3rP1aNC*<r(w!<Ov2-X6(j_e2
z&C<E-%kTf*bMKvVX70H&&oj@=_w$@HVd|=K<Ro+?0059H$jfTpl&G6WotWt6Jp}kI
z0{|1CAS<QqnYNSe@%8@L%$dadRdgdJfH1LKiH9Kk(W6f$mSIChVV}b2WFv^QwsXQ7
zS5(^CGO}2Ibr$_v*2$57F0VnENBq>vrhc0n<Cy8}k4#IhciEdYNwoIgyA+R}TN56b
zO&6Z4^;q>;jo&*@+q?7fQGQ<iFmgR6JtNiaI4xIDrT!5mHnY^uP#9%}5iE}1FGXMu
zSH-;X;iaX1v%yIWKW={rF10JPOL+?Ui7>D<IH^a+ADSZ1lU0vX|4LI_?l#KVdC!v|
zYtCF}s5R#tS#2Zqd+X5&DW{VUtKCZ&F}3S}$1E2uVcKo_+ec1Of&`hs9ziNJO9FJp
z>_jlwDXdG%Nni@-dgO0&WWr(Wg$nG2sO{pYa3bb5IpY0rg9_gtLd{MRM-TZHB!$NF
z|JHe{#uV77g|udq;{2Pj8zRz0y-MuQxky`i-*P5;cB6MV*2KJ#se1SZQXY=sAWuF@
ztVxkw%Ai0@wj<_lFWTyvRnuD~uazwxiMVVD?Dsipn>u`V!=gX+#bJ2RE|gioWCQac
zF{b5Hb&sdgu@c(KxOO+v?A>~+9yeeyU)ZwmnPHbGZ~h!hOgSK;M+^tjTmYO9DmCEK
zX;7K3Ge~omJ>M@jemGWhO4T1=4jK%itfQQQ5PzsQsDP80X@R~9UamgMoU3M%kbn>E
z9p;lyEKDecS)|D3{z@pY$Pn541(^c+Q(xrDk5mz6qmVfTb|$lph{-3K9g3K8H9uS#
z(iTkPv?}we$^3WV6%5RFAstMd?RJ2B@h&IQdTBS|9iQ{&MYTik(_3cQKv2LX>dwsH
zX2P1_6KQqg1~U3_6`Wv;Ynt>t4Kf2^B$FS{x)U<+fH??jlXA@>ZEP{l8SU<=Sy7t7
zZ#zEba<TSO-1?^M5v|>Pe7?{SCO#u)A@xapFgl*^aj*<XT1w)k<|U6~Eajrb01NE)
zg&&om%3wtvD)34jg3I~COSr(4!b*JR7l#VPG@JQ6F&;+dz`6>Nzf^28!YY46jB?E7
z38>{j4sItMr9KHdaq1KWnKKRYckYW<>TOIqv+&X%&wGF`(+6fNq1H~~(N3<$wWKtV
ze=SLpRfm(Q?!ps4H3(PwE79>T_L!0{njNnxzKvd-a)Egpik;1CpYDxlDY9Fl5#-W6
zsm$Mq{+ocIlv1wIpz(Jpt6_&QA9J3T?~_8%VZWyKM633ggCMVHG4-v@zN>B(x#hJ`
zy_Mj=oEqN0VR3R6Umtu<bY#tt2Yq3ra9&*2&`*3jbfD5k#lE;76w$FrMRzh0X5LcW
zvv(L)p7H8x{)$RIUpWJbxP!QJ9C(j<#by6gwM~F4!^iDTj5R^4fEAyW>RHVS<sEK@
znrGVojL6oDT{<UUd;sryYUMsJ@wYT!p7x4T=?TQl4O&MTJ~6bj`tCIl6p8nnpgT2v
zBT7v!tJC^np0(4wbRS9nBz>t5wnR<{bIw?CnAc^3>O8I?ET;GhzJ<CBxLe3{MWEx;
zu(R&?s&SIAMM=_34hiKYCk7!2y@fB{pZBm~hS95&=yVz}U-k80W^*r}Jy6rvGsU;8
ziV3>0qonSy{ANSC9InS(OjVTDdT1g1a*J&Y<*hGPXayzt5|n{%byKGriFq^6^X=42
z6Y<McsQ^jy4^L@|;)fknpHST{qtNU>I(G$`r#wis()!A{*w&p(Oo$6QBuIPdb?@9u
zN|PNtQVC$s{Rr6KKiWyI;|`*{+sgY~<ui<h@Cw^N_4F@P!}#9n;$FJs2aB(s@GzSc
zV&)+?<}WA8_QG1HYq!~1!txY)f)3u);OtXlzbKUX#)%I6V&@1#zkH&}s;PJ+sc+t!
z{8sU<{7dMy_~^sA&gX_aS%mUd8)=K;w>w)vqYr&KN`NtujxrgYWB;jd>skSOqIitt
z;PV5DLZ;EI*(;kC)57^%X$`|eVoHj%;Mo1Qd=_5|#>yNGu+c7#w9m5|gg$ay*dTqe
zi7|~n$5^@CeQkKQ{q}lV!VF}vAO8NLD_lxumYncoLLveIx-%S96w$uK@dBZLIg|f+
zZNkd|#ewwSN;*GZut+KB(eyX{5*IBT6zKG2T%O)!qHBOubM9Zq;{DX;X$0n&7ctiM
zTi11TfuK3w>N$1e_yLwV(XiMYU%Hej>;_%?tMl#B*#RX-PUd93G-o!2g1<i)<ya|q
zHH4K%a6tThl3npRxy(nuXIT|m3ZoFEG1IsLslU%N5wvY|-_WI(muU;TjW7LBvn`EL
z3#TGPTjciAI`zN46JTEs4jdxIuu7d+oCaY5jE4M*<hY|=Gt!oV$SZ1x&>!W!6`Dn|
zVmi7$Z==04ub41<x=x2F50{(*Zu}E`jh#>1w-Qs5zTBj<^v^6k-qxVMaK7A4G?<vJ
zF3lIrAwvxcm^k+Cg8%I`oDV0ai=xvVXx{0xFw$(CUUI}0kM;~qlx>*%0?e{3(s`Io
zdCuQ~`47WnsqWoh&W~)iK4;YoN$wA&w3gNe5=y1=;{~c^&w4pXt!={wD=K*rSJe2X
zud;k&rDb{2#AYma?R(qM%C@QG4t^}Zn;t0OHM1kk5H4$5w;z4rPlw)?KI2$_>Q+Qy
zC|JU}e%t;@^**Sl%l?}Wfyam`YEwg|)kwp!TF8+{dto2O0m+a%euWmDcuDXz^cg(a
zE1#1vS@wSAXq3s=4~eGT>*!M<bX(8m(ci7HiYGNcY#m3w+wB?64AX_xpG&gFlt0n)
znB?9tNG#7E<-~NL5qWv8gFiJ4(fgo0E~?@37_>55-d~#Aw{YUFDsPu#(6Wm5HodYZ
zAD&pla1H7}W~tj?XCfMre>XAV4?4m%c375bN1}@9mVaMYm!%OA8Zjlj%c$+c3F=j_
z&>l-wign$_8bk#c+iX3_jC`g&$sm5}V`8)WB=fec!b2UFOf?}_6(yvag_J(eU#QXK
zIqGdFfm8SQEuyv1L+ZfqpJa0xJKyXxq?ASy6UvbCB)gf+ZC{1h>}m(gHYT4hFcrc?
z6R&=HA7XNDhm#z>wA%a^F%*C>_!{zS2ECJR%BHRG0VI*)PV!&47SF0_xdfSth1VPf
zYCY|O<{v7s|FZX~Pmb8BjCgy|$IbDx7HKHn_*vk^o?x*Jnr2XDsfqM}onmssw;-lP
zSr)y<YwbAiKAPG<J4TTt+NtQg?BTQOFa?<o@jjFrG^LsjaVGXU+<oOnU*U5}ook!5
zUpa9rDa)44arPOrESL1xQVlt>AK1QBpI(hd@AzBa+{Xk21kkcQKBpx3jTj6o#rlL%
zUL;Qtdr(pTQ-Ipce}_qB<iSRrDeY$#UHdEh<4IAp-v@8LjOm5bbGh5h4@`Z}tNa>7
z!aNtjt>r)SpQKGVT-Al>&YIN)oGXowJWx?L{@PjG8O2P4wYY%+gSMrx(^&Q;@Cf=>
zeqPbjzxmW@${#eu>rciHx4)5kt(NVLtltY%YC`fYG%%s#zoJ$6tQwLcUig}`=0@$a
zK$UrNJYqW5e8?R9YGWQ|+T|2<zmZf+zvSUmrY7L0WuZlQ^7MYSDsr!bV1-L~oJ4o}
ze)9w@a;6VhBXhS<qV!AAvO1R@o+Q5+imE63nu*T3EC**=qSN+7={@hBRTNTQb=9I%
z@iNS9?+KU#M!PH$t_xvxZq5V4i-S=nKBog`=O#+r&8xGo$W^#vnykbQ@JCog93=jm
zG!vyJ@h{d~KsE<~U~jb!f1She0(m{@k%ZsE)t%0H9rvb-R;R-vJJHFB$%+NBvn65H
zm57WOK4lDAfsUv<KIVo0GpoCiEMJ>F8GgjPOti9`yo*6U*9^H6i59ybEw^S+fS5u*
ziIKk(%{Ez8ov~(WBL65kCtt9KpQl+)M(bgLRdxzXnAOy4ILxo-Q}th^_7s&~`QZor
z){&F;)9H)j)LUU~WSc2*#&~-%pNA^31#~w0uVb~pPx3BusaetT6IJHSUYX^Fe2gsm
z;4N4}S6%KpD;HUX(0*t(PlJD_UDh<pF6*bkpqSP`^b_!G&&`Z}W*!QT&Q8hTo2Shp
z7$dvQ=16k(@RLXS>bSjw&F7BAu(qff!DD`Z|I?g;RrJ4`je?6G`C;Jl#(h7~h?^m^
zfV4I~oloWh&yR!nd&ozA>T;XR?_k5?R7D;2pV6vunq2L|_$~>if+a3CWLQ|*B@Qor
zZ>8JL^73VBz2y01HTfi#oopnpw)T7>34gUN2oz@eEyyf13=X)OJm$IAg0`xw-c!_&
zq8Taw)E=jwsKS}y>3MC$V>a^kfu`{JLFj=G`FS#oGmCd1l#4m>ul=mg{mndO1*N}j
zimyM7JNkI8g%_6n9?=!eMftAjqrag?pKAw2Ip1+gJQOCeerkr&qthUA_1VV*rmo^<
zVB<|+2SV3156^rGovdlPb)Khq@bv+Ek|ElwvT{d1vmEAs!$+1{b{$}P5o^hp52B3(
ztH{~2Z7fU<fAHES;#iV6{)r{dENpGR#BqcKslku8CrC(0R8JXN?%SuZ#>g+vyxMC%
zZfvYacLEnj43rtX8#NQszgsp^3WmZ&G)opNA0>Nx9QQz*_39nf$e1()Sf?+)@SF8=
z>>}%6U1|d$*THJ8@7nR6y|W%$;>b0h{SFh_#*4Cfl5v!shNFYWvR3^5^q)duJR?R0
z2Tk9r0A1k<tmVDZt&G6=h)%JI9js_@!OBKT(?e#MKuOZ%2AhulR2fw|Sjk8!ZfI)i
z%6*{RUrJ?!HA|6qUUm7Oe&Q>>WW_2p`r7}zdG>N+w}fZJQBz>pR@M^Xm~^s9H7bAz
zyr&6q^e}j%@UXXBYhQNpbZh+k*+$c*iH)CG`K<Nlw%L<ll0YU_)M$RClwuyD7}k8J
z^^;)!Vqd-g9Cl?fvxBZgq@lao^e`8BdPm+o-(^llov4q66+2h-Y{u?Mm@S2G%UA9r
z@_B>!xMwEqv+gs>UZ>OVb!}60BPeBnpcW#F+$nG7pa+AlVtHE^&Ox3%MW*jsCtf~W
zm&eBQ_cM-HeBX;OXY%~MI{_g8^;VX|b}ujD+%7ZD&9Ch+>IfTEoPw4bt*+*jOUS^Q
zsP05nfaFd5C0NjWPJMVPQE`w96&Z8nBmLM26}HsR%CZlEalX_&4UTV0{>~SN_#B6D
z8yIy=nJd1Y5MY=leR+H3Y$KBI9ao7~Ev2B^V8Ri&|CO-+MeYT8eL!@;ghp<xYWtj{
zBCS(wyz^7d6Tmg-A5YLf5?^y|p58P6x!*Gw5R33nXZc^;vW{jgdc~waps4#lRhkF%
z9>4_hg8Cz&U$%{AoAo6fO(vcRs`Q0oUKFTJ^h)E1=+&DC26Mv&`{pp2dfLV31d4OY
z$*&vo|L*eF<oS<Wl^!)yY!H%3y4_Mrw`_kZ<jg~13|tVjs`n{4uIaP){4nkZk)Yzs
zB{ZXwG-2eLDy9lUpD53Xf3aL%HjBf|Px@Y^6o@5LQ>Z}CaO(zel$AjqnM{XeSP}wr
z{Y&)zc8}M{yL-3W!O9bE<SK9X0nIlCXyyFBN%`>-?uCISv`(vg_n_*U;xmlT9<f2c
zSSReSrX(SH&-O2>{f{%}L8Y$)=+nb)B@PNhog}a`;PvLPP>8j?juwBTT!ua>zFNs9
zlQUl+KmI{79JPxDNbf90)p31p5{JznObSt-`(6YFUSZoD+z9^5Uv1Ja;<bqT({HlZ
ziMBv<AurV19(|k1gVE-CcndA`!FeDd>7V@jRDRikU@UOwjY|DJDE5TGj1B6<1L*`$
zEBY`yy~k68K+ZsvHufqt9r%w3qmT97V0)QQ99wA4@OJ_rz3VGoS`x1Y#Es}B7+M>g
zc&y%}{M-^XK4WqRtqWmE{`fPBwUe>xpKs4um3xV9)$Ov;Q>fY6eTFyq_YKo7QDl-}
z<y-bLJr8-fce9#Z2E<K~cDF-p2(oPGK+Q-^c(UyT^~K}t*lQ~MMTPWfQsJ@CZo-v&
z)05)SA+UvXJC60$X0=$udt5y~QG{sgrQ4y)^sM3N%cgGytt+6W^rdNwr#$9^F7~&u
zmh&F{cn?r$PRGS0AK{qI5d}wQZkpl*m}y1jCL=Yz9$4#q$Kg2L@Z-2pXztXCGx4X6
zuFVu$r`YBqvSo)>uw}rpL1{JgFwIU;dE`;Da;$RxPX<PbpRTi((7aHNB$Kgzu(9v;
zsA`5<{itB&!9e@gC$_tMbdhS-_SS14hl_J4MNxBMT?X~_iK!@bP(X1xfkOZOvu!TZ
zCJ~?Y84dKPyaSR;D(8o8N9u{{zq4I2Q`meu*i=%5Y-au(`IMJhCpBY+94DjxH$XNL
z-`Zjnbv^H}&UpK(ZwMb%=3CB!*iyitsW|449}WWIoByFJju$!B>|H%kjPFN*Fi&an
zbif7^qs@1GJ<cQ1Y_U`~7I|rV@^Vid&8FOcBnn6Ak&Wbdn^7^A&Ac8?{&*Tbw?@VE
zUeShBh3ZlLxMDsTdhh$Y--~LW*kVfnZ`qNcFT)w^zk*?1RD4Pj8L__T-qmENmh9cT
z9CmNNL;gs=8IY~QY^3g+5)hh;2c-P%J^|_$S3nK1p(*Y41Y=D;=~NE0TI!Ad3UWB#
zduE=ZB~<HU9($`klG=*25HjYe_bqq3<Bump`XW!^XPrOD$@>ay3}`2kG!<h$LY^M2
z3L`K6GFw@#KsUv4G%BCqaxtEdYWFuf8EHtJRtEUIfU<k{SD$ZSEsk~#f=a719UUU~
zJFe864*=5*4a2r-Rd_fE=e=}THHW_rdABNd`Jg+#*3D|!>1Juzz*;y~^68Q?Dc@*I
zFoM)H=4Q+fKQ{~9v74@S!=+ZgJG}Wxbjhq-obbb%&nJP0FH1Z!lu805a`Xv!<TXK8
zu(4c5RaWSH0z*;Bwbs3&#U7`5hAA%;K@tSp(`E7TPqneA-7+>ip&iuBgFtQi9S>FT
zTuidnmC6lATXpCNaSo6MN2xxPCU#YknQ(J8>D?Z}xYw23O<4r>zuf2T@qXau%$ThC
zg;5iZVtwW$l0&T~ntr`vH8ae^t;&DrzVtf5?Nd|Acd}lmud5nA>jXa*Fsti}+%Z0~
z8y)<?zb`&t{(a!?7(YJ8NJ8?Q@JTYfML-*wD_S1v4r3zXJL$=U!ENQO@WvGhrFnL!
z@{D|`FAD5dA1=ZOaRC}$+3LHn275E1dF7RYWJyfoZ44UM9=s6coh}d0a1C+)r>Q8T
zxUpxDBGx@#EBolfu}@wl0wchQIXdO&+qv#zQMvOFgZ_!Y*o``icx1m*`ncvopfj_#
za{^V@sT18}l!+v8R#EX_<qmrD=o7(fuS`=5xQe9S@YDm9EZe*j@5##V>4{brqLlLQ
zyURJ1dlf~gltUrv6WbY2VngbpEbOc8eG0i)`hL`|>N_iOX1EpxRj1zU(4$pfA-b-4
zg6}wBOti=1M}CzbX&{Py2Hr1rR8x25vvajnE-}*qZM)KnPF{d4gY;LGKExg7pl#Lg
zcB&7dkRk<Ypq1CdATh;u=b1rbq>Z6lsp+GPvzAKEM-UBQG3;J}Rm>;0S*834C?}?1
zg^5H`;6Z0OLemDu<gQMb#cunC)$+;X%SO253;Q7*+k^F5xMZ0F9$2A`FGBmV?>yD_
z$Y<Muw|EC+{VEoIL|HCc%yl=C^p^Ce0XSjHKdZ?H=*oKKM1-Z`yT)&82LNKozEgMY
zu3DZ57U<)G7y!mFrXi7mPeRF6Dl@0p7jk3~o^cjW3~xGQm?;Ap!o5k=;{+gD00~1n
zR9!~o<3|pFrRdp}PAG)(m|W!!^OqR~M2xjDF|*`fM;@SH-=8y4zT?e@H~XrwBJb%!
zehrTKEG4{uQH8D&Gp#D5=oNROvQ_HtZ#=F<SBdX;a17WRUd^Va-mvtNnZsP9mD`Kq
zgLTXc40?|xLmvL?tWij4$KZIe!1HjnQ(|%&Wx-H$yVAaUlZ(79^+f#F`?1fd@WOFn
zs9-9lSC#eWY;HAl>@lO9D0V1ey+vQ{J)^DcK0R-8e{HKhPT{GOtKLpx@K{O#kHN|Q
zly@(>53GaNd{buJ=-*thp=4Xl`Tc|f?B^OpBNF#=QwqR~LwWIi?=5fi=fd$2Af5FS
zezA)!hQYGTZgg_<{{hpC`&{Pl*6pk2F0cTab)A3nNfLy{i4xv2J=I6LQ-<KP9vswo
z6&EGEauOIA_zmZ8CP_P7Uo+Cd`&awPT`$)aInv$lQ|Q{UZ*z|GSven;*k)iPL}lZy
zcht3=L_fY!3PW^jKT7s>#Z4u6=<b#F45}qW@N7PJ-Q4;8r%CTJkPwu8dFM|uS?r5p
zMGMx)#cwf9au2Jy8u{yxMj_(9E8R>CD_?~__P;k!86{cJ+gR5>0O@7>UZsycA+im|
zQhAz60?1}|5vKqIMk^0dC`qSTvPVfkE-PtmC^=GT)xz=mn9r@hu|){}-#x)RhXwF@
zUMS33lXr`#i`8uIsmIF`awt}!6<o8(d1vnhbnvL%M`JxrY)jEU#_xaBu_5j!WnpoB
zq|W=Pv>xGj$;WLnahveto8dc;3%A5^xZd}3X&D|bJ*FZasZfzhOW|EJ)zr#J4mRzi
z=MOg)&$=xO?NU7P(>DCW7vO%+pIy{lM(TrhT}S3pv~?0tN_oudseXY<iD+}F<QnYg
zoe{r)hSN^JHHy84&fi_N!cn#GmVH;TKww3tCh0GQ2Pm9UJhc=D-JSYKjs1SdH3AR8
zprd{vL>HAQ@~zEa8L^rj2uxJ}*XtdZF9+SjcjkH^j#OWS14T3@j_v&X=VE{Yi&8Y_
zmXyi_E6|)Q=+nQ)=S&LghK90j_6I5NnYKs3#-m{@n?f&M$o;FVN`bMQ(?55oeAx6a
zZWRPL_{?v}5%}X}RYoMG+flR1B5!W3_-T`)%g|x>Gaa%UJlNS7eP}pz9h2{=6~Ja2
z+=s|eS`O#iG3pBVFmI-a_}J$-<$e)uzDnhp(G&0An5|nf-oM-9{2HnZ_kpU1vndO+
z(iRr4y<U=8SyN-r?v7nkfVm;pss)})U=*EZ)55xfwhJ%$KU4|^52^J6^pL`~T=OFF
z3(=Be+>E&-1FFtgK(pr-Q*@@U=fbPC%vq0r^PqD8Q*t6}=IM6bB=efQJJV}u(l670
z;YSp_1p&S8!@XqV;n_1a83}S7KeI^zf<^^Yo@lWz?t2;zpsi9Ml+wKJ%RonT@h$lZ
z+;7Qug(tNWiL1+?AQU^5oXcYT2bA-9prO`$f{*{HqAE<%T4YTHwIN4(YjE`?8>!4@
zcb&w=mE2ze=ufPW+>d|=0w+-T&;TsLo99EpT1^rJ7;8oLcbhHK@Je5L%cvjXYdrz=
ziqFk%{q-(HTm~1SUBAJ=0kuTaPkj5FL<Iq5jP+mOX&1C!X_&AjNQ>KGHUQ#eI~8|u
zAbm;_FgZHvI*?%^YDz%E?{MYf<&~`<O{`h$YO2TI2R_=+`Fr*};Ylo!lEkdEO1g70
zqo~cjk3?@pdYt!x1n`B^jX7<L3bURbgcy$<@O%S5n@bll59ec-1HkgqKv`l+&WIj%
zQP};yehk{U>zZyEVh2M^(n6hRY)vu(oGWW6%7lwd{kYZQk|6q_eExTA)5K?mPwmVN
zI>;-xyuDB>PnVK%t_Zj-_*0b)*>8w^_?KLwvGeb0$m^V6qb5-CMyubk(WwCJ@;EY=
zl~K5~dd)|R8#>Ppyr?TR`)2bgakZfSns3hoPe{X$bY9|dGfB;xdQ;pnno+!ln!|G~
za6%cyjDK*QO>`O+73=IC$jIrr@-`V&oZ+rVeCtZX(ecV6#$z=|q=zuZ<Jr=U2b2@{
z8T?ubw+c6Y6Htnvtq#)nLAQ8MXP(%36wi77)@UMI`e>*aH8=!5FN|S-FACi-&`yAs
zY{C@Q`V(5=YqNQ{KJiiEYazbKXg0j3_Q=9DzA{&WIyi8$h>rQ8j?1B1g66oq0{u_q
zStEasph}m|s(6LPjhzoc4h<KJQl0c})@9%4GGp&ju|p5<0b!+Eat4Wc`L*W*{G|=d
zgwyPU4oa+Ad1N~2Y*fW$b)74qy!fL{4S7Br^~N%dnVGMO6ry?MtyD^#5bVtgP`o(a
zk>bpFYm`8@k;ZF9-^nloa_J3+W_bb_KH6C}Sv%u{4T^SCV*!?~;5g9>?cse89FBV2
zng&^EIv>#>%;I3I?ggW44?kNw4w$|Ef!lH-?Kk6r0wqN3uWEx4+Vpvy&g=E(BXEEz
z6bjR)4C~O^<1(#<&X3!@BfGqwWP=u1_9YOo^LYZtfgHPKSw(H}cdxHP=cYqTV)>Tk
zBpl=xZ-iXzt<3o)NPI@Uz3^d)^Oe8cL@W3$oIwsbB)6r1G*qX0+z3Ze8rH>BAXeV`
z_}fIRCAt48f427)Z80;8=HL-7=J?=+I!X|msA*A{T+BE<0BZZqRNhe~_=)#{0Zr>a
zx^eJu@w(G&2|xcm8RSJn+#DAmmP;i6BsMdobz#JH#v?5LpqaaI@#2XvJ<lv%%L1sw
zHs!US3<vn~IL|Ee?#ZrQk8W=R7~}2*U=p3bQwBC(($PN8W0ZMzS>9(uAVM|S5B{h7
zQdoBc=c{4qG&%@`lHdDY%vU#B&Gk4H0=zn+2hoRaesz;OS&$W$awC>_6(bhvE>lfc
zmGh4Q5%KE$c4AHn3LMr8zV|4<%Ed!vsb;A4BIEc+F$><)(Z(bxrH5y*A1u!v_WCh2
zHIZG$>$eXoH80*T-8C-$V0U{Eq1ht<Wy*isnm7Z{3)u+ZF5(LgkG8aWvU553jz*p@
zWB|bZ!vD?!lzRc}EWLUNX@a#3;b7+bej{F?+DBHK8li93-yZ@up??uhe7ELWG&rJc
zaQHV<hn}@BQj-_g91a}}fB=H<3Jo2+aFNZ#-L=C?Ram}|cuTd0<M?BP&WY@cdz1bk
z9;kV)NEX4$`hEwwKGD_h!{(b$yaiW(d!9$03Xul*Z3*&6y}Ycn^qD^c^^5QPgEcpt
zlxKVX>A1l}?;@8GKOXF~mdi0IPvgbOpFe-hY*P}YrV3)&Z46G>E32b{%BmO98#9G_
zQ|eFGsib-R|1w3vU5T^07*Xo#W7s`TV;MI@oDqh`t?H7((ZM0BGSBtLK;dN&YAG7l
ztI!!G_eGd2zQydi4z*K%!p!ouz)C<+h~Zkn#EhgT<Olh^`17Cwm!Z)|++x3oL6vRV
zDhBkreXS}3V-@IUVU=8(G2V|gn~$+$$R?-9Z^^&|uU^gd2$D5W2M7D)^OPjJ7Bb;g
zMbSH^m3_6dKZ@Ejvr6z=8d@!mo=0ohQ+^6Qva#>vkTBjM;dcaU7rljF(TEvKjP678
zIseub%O-q!9F$O2AVZ#Dc`Y~)mFBXyL^^l9)@%z>899<x89^pz2#Kxc9lkvJ)P2w{
zA$FzFo^>bFI%QT%h9e#w!5Y^cZD^EI=C@MYNlov4Hbl!1u9tz#u{dL1^0@$CE2L0v
ze{(EAHwCNnO1@N6aoqc6x0<Vl{^?<s8_r;!Qdx<HpKOvMJ)3MXiMWp;QJWhh$2a;>
zax(hMMUCNnfs*jtOa8WwkFD2bW5PyEfYoFhRaobPhQp~tH=m||nPxA(7xGYMJP}~r
z@?e?#$)WH;zfdka>el$4@&OhpRQ^uRxHdQr(MIPkhQ3^SpV_>?Ho_vw`}IW7{`HS(
zcG;?(+xNyUl_{1!(k=OX+t(=4ka@VXbUM_c9KA2~<F4uM^6inPXY0hHa7q3id|5VY
zi2ufO@uG!Q3CDW>cNj4jy!NA*`|`<#<=Z2EW0xlrNvAvaIk}&8ftS%GVpYxfrC!En
zL42#NB#8>?M#^4p2hVk_fJu*I&D!}<f|=(kGlLG_48a>vF{81&is~E7{Xii+0tU>-
z^K)NSd!kqlGe3jKM0PikpCLsT*dbTw^Ij^?p9jq>;w@79K%~*NjSoqS%goj8^ubW<
zIiwxjfZNofJ=`x$$F+W31U+cN6_VkY*^FJ(;VmcaP^)!hI{|?2^h9-V;r}j!nruOy
z3(0d*H>iGWm*`Go@Y3#9eLL9Rw7%%$b<sYXdn%-82CECfm1P4p2NHk4l~u*veXz%B
zTd@%9>4Sl3ILfl6?AgpBh~9E-bdLhcYkL)zzUdJPS?7Oodbg?U4l(VgP0|{;<n3oC
zY95{_=XjY-;+wo3RzxF%Th9Y(2+t(pk`@*VLi?cWkMI^XVP5D@y8Day6*z*rR`7J2
z-ZE$!M=<P<YQ*S*c(*o%?^l#&94f!hUT{%(0agE!*?A`OjF`xm!4vi8&lUIp2tM~x
zP8UdQP|pHGDM>D%UErgq6fV2B7zqQS;F3~h%#cNpcdm$jdT_`9%dS6&8~PJ;|KA4=
z1~1fpi(}UjtnQL9ZD|=3obqNiNd~VU?@_J=%R+i3d!43z>$!+Oj(@ukpb-oo<JB&D
z*w$nym}I98>QHkMG9#69{V8IFMq7>3XFxcFl8jcrqvb&JHIzecL|~#dLP%Wl#2;h|
zGymHqMaDRt`M5J$cH+q0ZxY4`4ETc_e1Rm$SH61`W%qpTzK3vgzNh`_tXsPeqV#@$
zGo;Vqi+;k%b{F+`d7w-hq!L>iA3!Nx0y!auM6)*=;ftP_qZhUh_@oOC3%^EP5_)<8
zOT#wr6Eb|a+hXm?E~GLW8nO(f3u2k`mH(l2!s3OVea<Um-jFzwR~24rnEgluMLy!8
z7w1V(<od<AHC+hv$<k^r6%t1oSzY>xghs;To5fiK1YVta&O}Aj1lR_DaDV|!^QX_P
z7MaOP*L$1lSjF}0664t%vf^EPz(CMdpbP6Q8d3GalG)XED}}{k_tW6YAN`A9lwl%H
zYcv%Ns|lU{1u~%xClGD;IDvcWTtX|D<{x;1Lk>%{cE^PtNO~V*P?^~xk(TO?z9)+c
zw|zx#^zAA4v%#Cyr@JyF7sWAiWu=2TuEsm~Xt{jz7-cesWyz5LoS&K4qUQ4Sc@3xY
z6Q#s5mf1~_-oTp{^*2?F7cilc%BQSbR+dwTHqel?e5U>LJ#=wp0raj8j`9&t=F>0t
zWzea&+c44n^Fc1UeQ!eSf)?JQoCNuapu)TeV<9&+xMS4{`xtH-c*uG|ysmrU`vCfd
zOC$dM-s80eGqujFNK@h9liN%}$3TX(&JMeFKuLGcV}_Z%wZQ>7E{@D_XK|B|5{2?(
z9?2c*F9E2k%GY;==5Sp}ncvSFEJm?X=ch9w^*MPpg9wUY6#^$+ZdP@N%f-X-Xgyy~
z8-csH(7C<;!cB;~ezPOZuDTH}i7xXWyLe{1nZmxM(bXmcv7#Aj1^f1{fcTEMQrmmQ
zE!TDpFOE05!#X3_Xsn?xb{0TQD+j>rTN+j*t|&6HK8|cF_qm@U3Z6Lz;}#c!&WCT@
z3$%K=*3aeY3pSxulVfa_C7;W1C6OW{bldLl;h%l(%zdqvb%oao&?&OcyR0}+PSAvH
zVgcHi7V=i*Y2S&~R9z(6245o+a=*XvGUd0Gm{Puvsp6u%mwuu8dYvFg%4{b7^s_R?
z@F5vdRCT`ZBRz2*=-|+&2aHJc$AZMC`7GxV4=0;(Tn=lXXWbe=9#zh}h2g4EA@pFq
z-t9Qnh@PTX>Tt;pf6#2aVsgWo1xNkqL$dAc!<|+PTad^Cs3Df%np9BcCEfjv$4PJZ
zsOMEI?kz8vI;xJJ8{aGuEkGv@b@13Y)vbx1{qz3zO?%keXCG$DV1~^%Sk#MUzE4<f
z>SOTg^8EW5P`kW5(j;mmL!Y8Zd-)~?-RZK@y$UL~^0aa!AwBrSrfEN8ko1l)%LUfL
zVJSzRQ(1%3=ltE#r$ehXGzpjFP8Jb~ZfY0#@%(ds>Khx~EGih2QU7bVe{>q@<;Jm0
zF4SM_Yg-S`3HTPsQg8NEJ=llq5Ot>FQ=#`*pf<iN?SucTm6ii_J0pSXY9VUvAz1N~
zI7nBbQfbX@zd5g`5nsYZj=R}0^m_lo#m;%<@Bo<PbCx%IO}49K^rXM!Scmrct(&ZC
zlF$FII)&I<;=Ugm4|pyk634ACjJa>dqDq%EaNF{*$nLqPjScB>2Fr3f7BH;^R;Fgi
z;hzjUGnH&@)^6;j2){dw+EV{4(nvJ@na;-bLGp5S5nY~;Evu7kqCXMz%Mahyu_Q9#
zwTLB-t<8rR|Kk>_Eg^^5*=v9S#`GRkb9P`?ModIdom^mGW~O(Ui)^@_E;KMpOO%E0
zOFiWg7|*n7>A4o86)%E@<^3)p*QtEXhl9ajl4rOJeX(yqBn=<xLoS3$?a8^*xk!0Z
zw2vpSFt8^$PW^YgkU^O9?}yOkp$Gh4=VmISFRTb2-I!6DMwS-3*^bZXkA#w3(|lbz
zGmhVvs=`xkoRLYql45S%c*>I%u?K<WGw2=m++~)nkW`N8ig?(tol^lxbLrSmh_UAU
zFfd&>;V|7G*1FF^Sx328K|welnq=luHn&&b&fCYcb)ut&T#KY0Up`x`l+8sP9*`cq
z-%3e@bw<(|_G6{|tUt4!y`71o`29F9e)bFq3JjS1!{+NiE8@GY-Vp^;cCpKAO)Wdx
z?|`&?66$+UH?T$lRulgIX{qC$=7c?VIFx*}`W;d97jy!LIErILog%sM>0{W_qh5m1
zTVFg#oGG3yf0m4V6qRRrACbKXzNK!|?tP5>NTB7DJ$q%`A*8VnB4ciQuKA|U%b|9)
z{LcFf=f8s&AqC@@UF5;YaVq*9)Ut|VA7re+dRK`mY`LT(1gA&ebv6iNWU`{EG3wlQ
zw9oy;(vxyCCBpl@({C{^*jv{r8C#r-9<j3sRz;5PIlkNIAs48Yb#~{jSOR|y)2%Z5
zg821=wWIXnR+(RAX5H%B4x(7Jl{u@SOFP8L>hWfuU)pXvu2`yX$4B%%mAd1ua=e;^
z9%QeXVJ7{lrO$wh^eYDB;CZSNUf8@)qvE^a$PtV5$W@WFRjJ{j*G&J6U}Uq`(WKgh
z<J6RL{o}4%oY^-1DkDiWg1sf8F9X$Cp3CpfJa_KFXW$4Zq9A7}r=&GeAD2L@vEAS+
ziuOnDa*0`khh=SGnz7z(W5W5lSjR<ho)?OLBL(6aTIz*j92SIP;rOsKfVTA;Se}}2
zCG`yG;c<Gj14l*CvD@ce!dtwSS3#yrH}&|fCGe4KI|O?GwA0f=dE=+|K_V+4V_{0@
z7aR`K2i~4RKYLG(C5KAFdaU39QL?}E9^|HpPIBmysM`?_2&1kaKDCE0og%GZOiBNp
z46bb@a$Vuu;S-nSowvMVzJG6d%`Fvz?SOQV5`Go2;k@CUnN?83K8S?i#hNO1DEH-6
z<}&C&T}H^`dC|mN^Zj-rd#7s&SUZJhW9SX<bgmB0g{Fwiu3RB0!Wrc8*QJZ#Bla!!
zy$lx}1N;GBg%KRZQSolzwq42z=0B{tp_|fO@l=S@+Mb|_<<U=PqQoS=x8}4nH)i>n
zj0ihl$%jC92foI9tm^~U9OCPKo{j5AwsH_^g&btAf{1c63MV{OD)$~;_zdhXygdLs
za#qhichhgaQWp=d)~E{c@ud%ER*!85&y$@W90Z<J>EW^lx;s@lYh9-d@?G1(o~fwb
z_jAT2TNiWSfR_Dz{q5rt1~b#D|71SPlIqK62!OqGixP3=6;mQDDn+bTsML>$hBAJF
z0K~Vh(%^1zKcA#>%L(yBzXM_RR@bBYRS<AM5cs*^7Oi%{FN^B-)Nfi($aEfGBj-Vq
zZdaw!jbSXRusuGTBnWY~FTvymSJ8dNhZ<itTHn5Mf%G3FsJ*E00#L)TkLDcruG+t7
zv_kHe>Q^;wl+N{ICYxM5MWKV)R4)(Ngc8<MPNbRUCB$KoO^xdxk$?Z4w68HtDGls(
z-E;+FmWwFPl2Z^LtLpo1YL@W)cHV(&1a$u0?OVR|9!L7#NeSvz^@%LK6K;0RfXz38
zy9cEGsWdq`N#-~Fp{LtcUvCCf9s+c>3A@Kdn_`L%AH0A)=yyW@C_aB?+t)mjo%>!l
z@K~8;n-y8KF)xwxnriZ54l<SYOk#(Go1Ob;#$#(c{ATzo$nw?0kkmc@x2YCy9pbsH
zbbSF-Z)x2x<&nzfbKLb(Zp^xb?vJa9d`#0>L#yW`hbat*-)D__C_6AraKjx2RsL+X
ztTWE-H$Eo>r#bz#IO5{4Dzx<Fz<7V*7Y8K$)twgNc|Z0Dyx3Je=sBQy$L*ne>WSJy
z<!YqY;~(+Me&^tZ&iBCL<2nSd<BGD4OFx`=il|}*avsI|M)6%UTF-I6Fe*@FKNW$a
z$koRyM)6x1q=;wRV9%eiOvDuO&;*K%LHGj642(ca;z5`buTz7Kf!*AHjNz__*jen;
zTU-GF9g*8=HVWb@TpHrn_Ht|2!SwqefK`R&)t)KK4O#qj+L!{Lv+*s00pCk30ny3e
zWaHd?JJjfxsMel16btOYTO6I2dnuZDLr>WCJopOv2aIVMT1U-3^NAOwJf2A1Q<TVy
zm~VpsHOEuEAry?78bAMo3Abi%>qd)|bU5ffBU3IF&F4z7j2n;;Xv=2HJeiqH_q7Rm
z2}d1_Ds+#hyR}iV-!KJ@rbeQ8M*8R=g^^-1_TpT~q4d!MC3QpNmaj1h!cs8;_i{W@
zK~||7QFFs8&kZdf_<eROh#=03UQ;zAh0ZS;I2?3<YaVYIyDLh1-|bY9czsODRI!xA
z(M}IzA`iIQ=_AxZ#OOCTn|rPI(5{^_L!K@wbVm?idk)pOi)ZUEMZ2|a?RaS#@Ua}F
z^>N@&^=2r$_>cnPUR}q0uDdtsoOt@M^em2GnoYC5Ir;pv-q19i)zv=>`WNr4``MBj
z%}`1g+G8DF7aw158j{@rM(6F&TQ0-W!Y8C%iKOc3KWCztg*;*%9TPQF<q*&EvuBr6
z>v+w%)Dzt739x#jPDjtRxki((9Xy%=`dt5`{rAU0)BE*mn>Scd;CE`2AY|;<4LH+E
z_%s7@-~Y!E$8J>;d@2><G{n>H`zsUfA=03?Z4f6dyBh=|*Lf04)CxJy&M}LQs?m!&
z0~~A}!mtYmH~v=Wh=l#c{>F(u$hrxLX>H8c`4yz#@B@C~-7oMc8v1p8ph+CoV#U&6
z^C%ny2v(e7RLN={2>y!m^Q8#~VRKVr)<lNPHY1_)1(B)MLUa758&&^7LqBb&o~irL
zq+i3@ejB7~1@d#w`*?uEuH-b$;_GUXfAbzxqTwpVN3`DO#!AuNPh3BqiyPut5JR_?
zUQ?Jae>p)x(Fl)!JS}K`^6A0Ro~u`xgVS^iMUP+KkQ`-n)Amm@lojj9Xc;0^Td2)z
zvr%L-g}h&+{7YO%@W>h`zZVnCoOQFWiRw7SorN*0WPe-H_E`xlWeZ9CX}`~`?5|s8
zIkP?XOHr@esW*e2>2V@k4WO&O8J?C}(+hIE>&$A%LkB#r{6A3W^>^y;GAgaL|FYIF
z$qt?WgzJCE^WDb&AM(|s7~=%xCyDOvr?sAdP}Qr&@004UES2JMk%<5FN$~e@!o#Au
zIb{`uWwjR|G$zRAwUdk6E>ZjWgY^U-2XPv?Q}kz9PG={5A4qRpFl9B@9It)95p>gV
zp<<MZJY28H+?_TVsj=-_bGs1*S3c^&0P-$D>KiTn5(RaV6*?@Fq8;xA!-JfuJmkb>
zg=3odpiWu(za8#<<Np2Szw>g5+!+!-ii^D*;2H9?AyfBy>WAVjXxf&-w6(Mjr}ICr
znXS_?X1UL0{F_osQu*Am<U&58oV@YFZd&7Gq>T|xL2~#_-GqPLw)DgqkUbvx3zs^V
z`Cz6Q;ZXjA+lqDSXT&YEjd?0jVoaNIWsLndrB|npsrAUiOX_zI@f_iieDkT5RCTqn
z3(Na|m`bnRicZ88*3z5u;?@kynlu{!zW!8Ow`-KW(d5fqnMElLW|op?4x*GMwXNeZ
zoABeHTx8DmPA12HfVBt##QFubhjYsyqAX8TI-V7pb=0@qj}O2RbYyj$Kd>cnr}{}O
z$TOG_4_*VyWj6#7*-BdrJ`<O8)9W#SOWp~GSnoza&XC>3u_xFf?{VPfQh22*TPkfH
F_<sZ>Ml%2a
index 8e4c7885f28572f7b3dcdfa1bd6b2ed91519ee13..9611a8f8ca8e3c13cff5d2b92137f8a9fc1a9faf
GIT binary patch
literal 42780
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
--- a/browser/themes/windows/downloads/downloads.css
+++ b/browser/themes/windows/downloads/downloads.css
@@ -1,74 +1,86 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 %include ../../shared/downloads/downloads.inc.css
 
 /*** Panel and outer controls ***/
 
-#downloadsFooter {
+#downloadsFooter,
+#downloadsPanel-blockedSubview-openButton {
   background-color: hsla(210,4%,10%,.04);
   box-shadow: 0 1px 0 hsla(210,4%,10%,.08) inset;
   transition-duration: 150ms;
   transition-property: background-color;
 }
 
-#downloadsFooter:hover {
+#downloadsFooter:hover,
+#downloadsPanel-blockedSubview-openButton:hover {
   background-color: hsla(210,4%,10%,.05);
 }
 
-#downloadsFooter:hover:active {
+#downloadsFooter:hover:active,
+#downloadsPanel-blockedSubview-openButton:hover:active {
   background-color: hsla(210,4%,10%,.1);
   box-shadow: 0 2px 0 0 hsla(210,4%,10%,.1) inset;
 }
 
 @media (-moz-os-version: windows-xp),
        (-moz-os-version: windows-vista),
        (-moz-os-version: windows-win7) {
-  #downloadsHistory {
+  #downloadsHistory,
+  #downloadsPanel-blockedSubview-buttons > button {
     color: -moz-nativehyperlinktext;
   }
 
   @media (-moz-windows-default-theme) {
-    #downloadsFooter {
+    #downloadsFooter,
+    #downloadsPanel-multiView .panel-subviews {
       border-bottom-left-radius: 3px;
       border-bottom-right-radius: 3px;
       transition-duration: 0s;
     }
 
     #downloadsFooter,
     #downloadsFooter:hover,
-    #downloadsFooter:hover:active {
+    #downloadsFooter:hover:active,
+    #downloadsPanel-blockedSubview-openButton,
+    #downloadsPanel-blockedSubview-openButton:hover,
+    #downloadsPanel-blockedSubview-openButton:hover:active {
       background-color: #f1f5fb;
       box-shadow: 0px 1px 2px rgb(204,214,234) inset;
     }
 
     @media (-moz-os-version: windows-xp) {
       #downloadsFooter,
       #downloadsFooter:hover,
-      #downloadsFooter:hover:active {
+      #downloadsFooter:hover:active,
+      #downloadsPanel-blockedSubview-openButton,
+      #downloadsPanel-blockedSubview-openButton:hover,
+      #downloadsPanel-blockedSubview-openButton:hover:active {
         background-color: hsla(216,45%,88%,.98);
       }
     }
   }
 }
 
 @keyfocus@ #downloadsSummary:focus,
 @keyfocus@ #downloadsHistory:focus {
   outline: 1px -moz-dialogtext dotted;
   outline-offset: -1px;
 }
 
 @keyfocus@ #downloadsSummary:focus {
   outline-offset: -5px;
 }
 
-#downloadsHistory > .button-box {
+#downloadsHistory > .button-box,
+#downloadsPanel-blockedSubview-buttons > button > .button-box {
   /* Hide the border so we don't display an inner focus ring. */
   border: none;
 }
 
 /*** List items and similar elements in the summary ***/
 
 :root {
   --downloads-item-height: 7em;
@@ -119,16 +131,30 @@
 }
 
 @notKeyfocus@ @itemFinished@[exists]:hover:active {
   background-color: hsla(210,4%,10%,.15);
   outline: 1px solid hsla(210,4%,10%,.15);
   box-shadow: 0 1px 0 0 hsla(210,4%,10%,.05) inset;
 }
 
+@item@[showingsubview] {
+  background-color: Highlight;
+  color: HighlightText;
+  transition: background-color var(--panelui-subview-transition-duration),
+              color var(--panelui-subview-transition-duration);
+}
+
+@notKeyfocus@ @itemFinished@[exists][verdict="Malware"]:hover,
+@notKeyfocus@ @itemFinished@[exists][verdict="Malware"]:hover:active,
+@item@[showingsubview][verdict="Malware"] {
+  background-color: hsl(4, 82%, 47%);
+  color: white;
+}
+
 @media (-moz-os-version: windows-xp),
        (-moz-os-version: windows-vista),
        (-moz-os-version: windows-win7) {
   @notKeyfocus@ @itemFinished@[exists]:hover {
     border-radius: 3px;
     outline: 0;
     border-top: 1px solid hsla(0,0%,100%,.2);
     border-bottom: 1px solid hsla(0,0%,0%,.2);
@@ -209,8 +235,34 @@
   -moz-image-region: rect(32px, 32px, 48px, 16px);
 }
 @item@:hover .downloadButton.downloadIconRetry:hover {
   -moz-image-region: rect(32px, 48px, 48px, 32px);
 }
 @item@:hover .downloadButton.downloadIconRetry:active {
   -moz-image-region: rect(32px, 64px, 48px, 48px);
 }
+
+.downloadButton.downloadShowBlockedInfo {
+  -moz-image-region: rect(48px, 16px, 64px, 0px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo {
+  -moz-image-region: rect(48px, 32px, 64px, 16px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:hover {
+  -moz-image-region: rect(48px, 48px, 64px, 32px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:active {
+  -moz-image-region: rect(48px, 64px, 64px, 48px);
+}
+
+.downloadButton.downloadShowBlockedInfo:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 16px, 80px, 0px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 32px, 80px, 16px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:hover:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 48px, 80px, 32px);
+}
+@item@:hover .downloadButton.downloadShowBlockedInfo:active:-moz-locale-dir(rtl) {
+  -moz-image-region: rect(64px, 64px, 80px, 48px);
+}