Bug 542192 - Restyle Mac menus. r=dao
authorMarkus Stange <mstange@themasta.com>
Thu, 04 Feb 2010 20:30:18 +0100
changeset 37906 9b4420523d0c9b573f58f6c4223044df327f1843
parent 37905 b3d6a8724029f01fe10e6b014730358565d66301
child 37908 46ae6ac7433b5dabccc8cd54fba21a5f2880466c
push id1
push usershaver@mozilla.com
push dateTue, 04 Jan 2011 17:58:04 +0000
reviewersdao
bugs542192
milestone1.9.3a1pre
Bug 542192 - Restyle Mac menus. r=dao
browser/themes/pinstripe/browser/browser.css
browser/themes/pinstripe/browser/preferences/applications.css
browser/themes/pinstripe/browser/searchbar.css
toolkit/themes/pinstripe/global/jar.mn
toolkit/themes/pinstripe/global/menu.css
toolkit/themes/pinstripe/global/menu/menu-arrow-dis-rtl.gif
toolkit/themes/pinstripe/global/menu/menu-arrow-dis.gif
toolkit/themes/pinstripe/global/menu/menu-arrow-hov.gif
toolkit/themes/pinstripe/global/menu/menu-arrow.gif
toolkit/themes/pinstripe/global/menu/menu-arrow.png
toolkit/themes/pinstripe/global/menu/menu-check-dis.png
toolkit/themes/pinstripe/global/menu/menu-check-hov.png
toolkit/themes/pinstripe/global/menu/menu-check.png
toolkit/themes/pinstripe/global/scrollbox.css
toolkit/themes/pinstripe/global/scrollbox/autorepeat-arrow-dn-dis.gif
toolkit/themes/pinstripe/global/scrollbox/autorepeat-arrow-dn.gif
toolkit/themes/pinstripe/global/scrollbox/autorepeat-arrow-up-dis.gif
toolkit/themes/pinstripe/global/scrollbox/autorepeat-arrow-up.gif
--- a/browser/themes/pinstripe/browser/browser.css
+++ b/browser/themes/pinstripe/browser/browser.css
@@ -1752,20 +1752,16 @@ tabbrowser > tabbox {
   -moz-margin-end: 2px;
 }
 
 /* All Tabs Menupopup */
 .alltabs-item > .menu-iconic-left > .menu-iconic-icon {
   list-style-image: url("chrome://global/skin/tree/item.png");
 }
 
-.alltabs-item[selected="true"] {
-  font-weight: bold;
-}
-
 .alltabs-item[busy] > .menu-iconic-left > .menu-iconic-icon {
   list-style-image: url("chrome://global/skin/icons/loading_16.png") !important;
 }
 
 /* Tabstrip close button */
 .tabs-closebutton {
   -moz-padding-end: 4px;
   list-style-image: url("chrome://global/skin/icons/closetab.png");
--- a/browser/themes/pinstripe/browser/preferences/applications.css
+++ b/browser/themes/pinstripe/browser/preferences/applications.css
@@ -41,31 +41,43 @@
  * Also make sure the labels are the same distance away from the icons.
  */
 .actionsMenu {
   -moz-margin-start: -2px;
   margin-top: 0;
   margin-bottom: -1px;
 }
 
-.typeIcon,
-.actionIcon {
+richlistitem label {
   -moz-margin-start: 3px;
-  -moz-margin-end: 3px;
-}
-
-richlistitem label {
-  -moz-margin-start: 1px;
   margin-top: 2px;
 }
 
 richlistitem {
   min-height: 22px;
 }
 
+.typeIcon,
+.actionIcon {
+  -moz-margin-start: 3px;
+}
+
+.typeIcon,
+.actionIcon,
+.actionsMenu .menulist-icon {
+  -moz-margin-end: 2px;
+}
+
+.actionsMenu > menupopup > menuitem > .menu-iconic-left {
+  /* Undo content/browser/preferences/handlers.css - we don't
+   * want icon-less labels to line up with the other labels.
+   */
+  min-width: 0;
+}
+
 richlistitem[appHandlerIcon="ask"],
 menuitem[appHandlerIcon="ask"] {
   list-style-image: url("chrome://browser/skin/preferences/alwaysAsk.png");
 }
 
 richlistitem[appHandlerIcon="save"],
 menuitem[appHandlerIcon="save"] {
   list-style-image: url("chrome://browser/skin/preferences/saveFile.png");
@@ -76,16 +88,18 @@ menuitem[appHandlerIcon="feed"] {
   list-style-image: url("chrome://browser/skin/page-livemarks.png");
 }
 
 richlistitem[appHandlerIcon="plugin"],
 menuitem[appHandlerIcon="plugin"] {
   list-style-image: url("chrome://mozapps/skin/plugins/pluginGeneric-16.png");
 }
 
-.actionsMenu .menulist-icon {
-  -moz-margin-end: 1px;
+/* Repeat what menu.css does for .menuitem-iconic */
+menuitem[appHandlerIcon] {
+  padding-top: 1px;
+  padding-bottom: 3px;
 }
 
-.actionsMenu > menupopup > menuitem > .menu-iconic-left {
-  -moz-padding-start: 3px;
-  -moz-padding-end: 1px;
+menuitem[appHandlerIcon] > .menu-iconic-left > .menu-iconic-icon {
+  -moz-margin-start: 0;
+  width: 16px;
 }
--- a/browser/themes/pinstripe/browser/searchbar.css
+++ b/browser/themes/pinstripe/browser/searchbar.css
@@ -140,12 +140,8 @@
 
 .search-go-button {
   padding: 1px;
   list-style-image: url("chrome://browser/skin/Search.png");
   margin: 0;
   padding: 0;
   -moz-padding-end: 6px;
 }
-
-.searchbar-engine-menuitem[selected="true"] > .menu-iconic-text {
-  font-weight: bold;
-}
--- a/toolkit/themes/pinstripe/global/jar.mn
+++ b/toolkit/themes/pinstripe/global/jar.mn
@@ -126,28 +126,20 @@ toolkit.jar:
 +  skin/classic/global/media/playButton.png                           (media/playButton.png)
 +  skin/classic/global/media/muteButton.png                           (media/muteButton.png)
 +  skin/classic/global/media/unmuteButton.png                         (media/unmuteButton.png)
 +  skin/classic/global/media/scrubberThumb.png                        (media/scrubberThumb.png)
 +  skin/classic/global/media/scrubberThumbWide.png                    (media/scrubberThumbWide.png)
 +  skin/classic/global/media/error.png                                (media/error.png)
 +  skin/classic/global/media/throbber.png                             (media/throbber.png)
 +  skin/classic/global/media/volumeThumb.png                          (media/volumeThumb.png)
-+  skin/classic/global/menu/menu-arrow-dis.gif                        (menu/menu-arrow-dis.gif)
-+  skin/classic/global/menu/menu-arrow-hov.gif                        (menu/menu-arrow-hov.gif)
-+  skin/classic/global/menu/menu-arrow.gif                            (menu/menu-arrow.gif)
-+  skin/classic/global/menu/menu-check-dis.png                        (menu/menu-check-dis.png)
-+  skin/classic/global/menu/menu-check-hov.png                        (menu/menu-check-hov.png)
++  skin/classic/global/menu/menu-arrow.png                            (menu/menu-arrow.png)
 +  skin/classic/global/menu/menu-check.png                            (menu/menu-check.png)
 +  skin/classic/global/scale/scale-tray-horiz.gif                     (scale/scale-tray-horiz.gif)
 +  skin/classic/global/scale/scale-tray-vert.gif                      (scale/scale-tray-vert.gif)
-+  skin/classic/global/scrollbox/autorepeat-arrow-dn.gif              (scrollbox/autorepeat-arrow-dn.gif)
-+  skin/classic/global/scrollbox/autorepeat-arrow-dn-dis.gif          (scrollbox/autorepeat-arrow-dn-dis.gif)
-+  skin/classic/global/scrollbox/autorepeat-arrow-up.gif              (scrollbox/autorepeat-arrow-up.gif)
-+  skin/classic/global/scrollbox/autorepeat-arrow-up-dis.gif          (scrollbox/autorepeat-arrow-up-dis.gif)
 +  skin/classic/global/splitter/dimple.png                            (splitter/dimple.png)
 +  skin/classic/global/splitter/grip-hrz-after.gif                    (splitter/grip-hrz-after.gif)
 +  skin/classic/global/splitter/grip-hrz-before.gif                   (splitter/grip-hrz-before.gif)
 +  skin/classic/global/splitter/grip-vrt-after.gif                    (splitter/grip-vrt-after.gif)
 +  skin/classic/global/splitter/grip-vrt-before.gif                   (splitter/grip-vrt-before.gif)
 +  skin/classic/global/toolbar/dropmark-nav.png                       (toolbar/dropmark-nav.png)
 +  skin/classic/global/toolbar/spring.png                             (toolbar/spring.png)
 +  skin/classic/global/toolbar/toolbar-background.gif                 (toolbar/toolbar-background.gif)
--- a/toolkit/themes/pinstripe/global/menu.css
+++ b/toolkit/themes/pinstripe/global/menu.css
@@ -42,192 +42,199 @@
 menu,
 menuitem {
   -moz-appearance: menuitem;
   -moz-box-align: center;
   color: MenuText;
   font: -moz-pull-down-menu;
   list-style-image: none;
   -moz-image-region: auto;
+  padding: 0 21px 2px;
 }
 
 menu[disabled="true"], menuitem[disabled="true"],
 menu[_moz-menuactive="true"][disabled="true"],
 menuitem[_moz-menuactive="true"][disabled="true"] {
   color: -moz-mac-menutextdisable;
 }
 
 /* ..... internal content .... */
 
 .menu-text,
-.menu-iconic-text {
-  margin: 0px 4px 0px 0px !important;
-  color: inherit;
+.menu-iconic-text,
+.menu-accel,
+.menu-iconic-accel {
+  margin: 0 !important;
 }
 
-.menu-text {
-  margin-left: 18px !important;
+.menu-text,
+.menu-iconic-text {
   font-weight: inherit;
+  color: inherit;
 }
 
 .menu-description {
   font-style: italic;
   color: -moz-mac-menutextdisable;
   -moz-margin-start: 1ex !important;
 }
 
-.menu-accel,
-.menu-iconic-accel {
-  margin: 0px 2px 0px 2px !important;
-  padding-right: 10px;
-  color: inherit;
+.menu-iconic-icon {
+  height: 16px;
+  margin-top: -2px;
+  margin-bottom: -2px;
+  -moz-margin-end: 5px;
+  /* Empty icons shouldn't take up room, so we need to compensate
+   * the 5px margin-end with a negative margin-start.
+   */
+  -moz-margin-start: -5px;
 }
 
-.menu-iconic-left {
-  margin: 2px 4px 1px 18px !important;
-  color: inherit;
+/* menuitems with icons */
+.menuitem-iconic,
+.menu-iconic,
+menuitem[image],
+menuitem[src] {
+  /* 2px higher than those without icons */
+  padding-top: 1px;
+  padding-bottom: 3px;
 }
 
-.menu-iconic-icon {
+.menuitem-iconic > .menu-iconic-left > .menu-iconic-icon,
+.menu-iconic > .menu-iconic-left > .menu-iconic-icon,
+menuitem[image] > .menu-iconic-left > .menu-iconic-icon,
+menuitem[src] > .menu-iconic-left > .menu-iconic-icon {
+  -moz-margin-start: 0;
   width: 16px;
-  height: 16px;
-  list-style-image: inherit;
 }
 
-menuitem[type="checkbox"] > .menu-iconic-left,
-menuitem[type="radio"] > .menu-iconic-left {
-  margin: 0 2px 0 0 !important;
- }
-
 /* ..... menu arrow box ..... */
 
-.menu-right {
-  margin: 0px 8px 0px 6px;
-  width: 8px;
-  list-style-image: url("chrome://global/skin/menu/menu-arrow.gif");
-  -moz-image-region: auto;
+.menu-right,
+.menu-accel-container {
+  -moz-margin-end: -9px;
+  -moz-margin-start: 21px;
+  -moz-box-pack: end;
 }
 
-.menu-right[_moz-menuactive="true"] {
-  list-style-image: url("chrome://global/skin/menu/menu-arrow-hov.gif");
-  -moz-image-region: auto;
+.menu-right {
+  width: 8px;
+  list-style-image: url("chrome://global/skin/menu/menu-arrow.png");
+  -moz-image-region: rect(0, 8px, 10px, 0);
+}
+
+.menu-right[_moz-menuactive="true"]:not([disabled="true"]) {
+  -moz-image-region: rect(0, 16px, 10px, 8px);
 }
 
 .menu-right[disabled="true"] {
-  list-style-image: url("chrome://global/skin/menu/menu-arrow-dis.gif") !important;
-  -moz-image-region: auto;
+  -moz-image-region: rect(0, 24px, 10px, 16px);
+}
+
+.menu-right:-moz-locale-dir(rtl) {
+  -moz-transform: scaleX(-1);
 }
 
 /* ::::: menu/menuitems in menubar ::::: */
 
 menubar > menu {
   -moz-appearance: none !important;
   padding: 2px 5px 2px 7px;
-  margin: 1px 0px 1px 0px;
+  margin: 1px 0;
 }
 
 menubar > menu[_moz-menuactive="true"][open="true"] {
   -moz-appearance: menuitem !important;
   color: -moz-mac-menutextselect !important
 }
 
 /* ..... internal content .... */
 
 .menubar-left {
-  margin: 0px 2px 0px 0px;
+  margin: 0 2px;
   color: inherit;
 }
 
 .menubar-text {
-  margin: 0px 2px 0px 0px !important;
+  margin: 0 1px !important;
   color: inherit;
 }
 
 /* ::::: menu/menuitems in popups ::::: */
 
 menupopup > menu,
 popup > menu,
 menupopup > menuitem,
 popup > menuitem {
-  padding: 0px 3px 2px 3px !important;
   max-width: 42em;
-  min-height: 19px;
 }
 
 menupopup > menu[_moz-menuactive="true"],
 menupopup > menuitem[_moz-menuactive="true"],
 popup > menu[_moz-menuactive="true"],
 popup > menuitem[_moz-menuactive="true"] {
   color: -moz-mac-menutextselect;
   background-color: Highlight;
 }
 
 /* ::::: menu/menuitems in menulist popups ::::: */
 
 .menulist-menupopup > menuitem,
 menulist > menupopup > menuitem,
 .menulist-menupopup > menu,
 menulist > menupopup > menu {
-  padding-right: 25px !important;
   max-width: none;
   font: inherit;
   color: -moz-FieldText;
 }
 
-.menulist-menupopup > menuitem > .menu-iconic-left,
-menulist > menupopup > menuitem > .menu-iconic-left,
-.menulist-menupopup > menu > .menu-iconic-left,
-menulist > menupopup > menu > .menu-iconic-left {
-  margin: 0 2px 0 0 !important;
-}
-
 /* ::::: menuitems in editable menulist popups ::::: */
 
 menulist[editable="true"] > menupopup > menuitem {
   -moz-appearance: none;
 }
 
 menulist[editable="true"] > menupopup > menuitem > .menu-iconic-left {
   display: none;
 }
 
 /* ::::: checked menuitems ::::: */
 
-menuitem[checked="true"], 
-menulist > menupopup > menuitem[selected="true"],
-.menulist-menupopup > menuitem[selected="true"] {
-  list-style-image: url("chrome://global/skin/menu/menu-check.png");
-  -moz-image-region: auto;
+menuitem[checked="true"] > .menu-iconic-left,
+:not(menulist) > menupopup > menuitem[selected="true"] > .menu-iconic-left {
+  -moz-margin-start: -15px;
+  -moz-padding-start: 15px;
+  background: -moz-image-rect("chrome://global/skin/menu/menu-check.png", 0, 10, 11, 0) bottom left no-repeat transparent;
 }
 
-menuitem[checked="true"][disabled="true"] {
-  list-style-image: url("chrome://global/skin/menu/menu-check-dis.png");
-  -moz-image-region: auto;
+menuitem[checked="true"] > .menu-iconic-left:-moz-locale-dir(rtl),
+:not(menulist) > menupopup > menuitem[selected="true"] > .menu-iconic-left:-moz-locale-dir(rtl) {
+  background-position: bottom right;
 }
 
-menuitem[checked="true"][_moz-menuactive="true"]:not([disabled="true"]), 
-menulist > menupopup > menuitem[_moz-menuactive="true"][selected="true"]:not([disabled="true"]),
-.menulist-menupopup > menuitem[_moz-menuactive="true"][selected="true"]:not([disabled="true"]) {
-  list-style-image: url("chrome://global/skin/menu/menu-check-hov.png") !important;
-  -moz-image-region: auto;
+menuitem[checked="true"][_moz-menuactive="true"] > .menu-iconic-left,
+:not(menulist) > menupopup > menuitem[selected="true"][_moz-menuactive="true"] > .menu-iconic-left {
+  background-image: -moz-image-rect("chrome://global/skin/menu/menu-check.png", 0, 20, 11, 10);
+}
+
+menulist:not([editable="true"]) > menupopup > menuitem[selected="true"]::before {
+  content: '\2713'; /* a checkmark */
+  display: block;
+  width: 15px;
+  -moz-margin-start: -15px;
 }
 
 /* ::::: menuseparator ::::: */
 
 menuseparator {
   -moz-appearance: menuseparator;
   margin: 5px 0;
   padding: 1px 0 !important;
 }
 
-/* ::::: menulist popup ::::: */
-menulist > menupopup {
-  margin: 4px 0px 4px 0px;
-}
-
 /* ::::: autocomplete ::::: */
 
 .autocomplete-history-popup > menuitem {
   max-width: none !important;
   font: message-box;
 }
 
 /* ::::: tree column picker ::::: */
deleted file mode 100644
index 855b69d998ac4215b42019d6624a2f9042ead42a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index e8f882a3fdef70d74333aace8bbf97c06985ba4f..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 932918937b440fb7ab4f98ee03be46a00ea7a845..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 6d31ad6e2975b08faad8832a2c65277c355a7381..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9ac1bc976e2f94c4b8a7c385d66b7c6751275fb6
GIT binary patch
literal 258
zc%17D@N?(olHy`uVBq!ia0vp^5<tww!3-p4ZqJJXQceLrA+A6=H#c|Nwr&6a|If+E
z*|lpIgt2?~ZZrm53XLJY&cYaIif~DgUoZn7AD^F}-@JMA)~;Rq;lqc2|Nc$X{K^58
zj`4JH4B@!m+V3gUpuoc-DDJ?z>EHj=lPabb=@q|trL%CEYD87!-srx2j0^Ivx%}PW
zmb05Vt*zK&mDl$PE-dSRFg;UTnd*^bc#_e%XhDb!$1`~Y$*+5Bs@}ah$o|WaOZrl*
RLO;+R22WQ%mvv4FO#qZ3a%KPk
deleted file mode 100644
index f3fd7d6ef78431286e90c39ecf7ccfe346ffb6ad..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index f9f8b1e44c2778e81f64fe3988f21de2e37fc573..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
index a18427658696e5568a814b7d46b5a7d19f6990dd..3679724b5b8ceba19ca8405e71088c7893d57dda
GIT binary patch
literal 298
zc%17D@N?(olHy`uVBq!ia0vp^B0$W|!3-oluE!PvslWiA5LY0bo16Rp|Noqv93Tl{
zXJ==_*+B8X|Nnx>zkh+^KoY`6Bme#T2O;ln^qmDXRJtU{FPMRkPgmF1H#RmWr?$4Y
zckbLZYxeFvd-nbNfB!1XUmgS5?djqe!Xe9gus!jxfdGra1TDYKCq<_I{>#qGkdVVr
z%wF+?Y0p*Oh)L=j!uB?lJ<V8fzqIVMu=}Qnc#G9xeKk@it<!5~hRREv^r$mjopx1z
zi}uN@7v8VhWqo5(PQv<CvLEI${#eO*p^xoFI{SYHA$G={dsO{^7BhId`njxgN@xNA
DMtq3u
--- a/toolkit/themes/pinstripe/global/scrollbox.css
+++ b/toolkit/themes/pinstripe/global/scrollbox.css
@@ -23,46 +23,45 @@
 .autorepeatbutton-down[orient="horizontal"][disabled="true"],
 .scrollbutton-down[orient="horizontal"][disabled="true"] {
   list-style-image: url("chrome://global/skin/arrow/arrow-rit-dis.gif");
   -moz-image-region: auto; /* cut off inheritance */
 }
 
 /* Vertical enabled */
 .autorepeatbutton-up:not([orient="horizontal"]) {
-  list-style-image: url("chrome://global/skin/scrollbox/autorepeat-arrow-up.gif");
-  -moz-image-region: auto; /* cut off inheritance */
   padding-bottom: 5px;
 }
 
 .autorepeatbutton-down:not([orient="horizontal"]) {
-  list-style-image: url("chrome://global/skin/scrollbox/autorepeat-arrow-dn.gif");
-  -moz-image-region: auto; /* cut off inheritance */
   padding-top: 5px;
 }
 
+.autorepeatbutton-up:not([orient="horizontal"]) > .autorepeatbutton-icon {
+  -moz-transform: rotate(-90deg);
+}
+
+.autorepeatbutton-down:not([orient="horizontal"]) > .autorepeatbutton-icon {
+  -moz-transform: rotate(90deg);
+}
+
 .scrollbutton-up {
   list-style-image: url("chrome://global/skin/arrow/arrow-up-sharp.gif");
   -moz-image-region: auto; /* cut off inheritance */
 }
 
 .scrollbutton-down {
   list-style-image: url("chrome://global/skin/arrow/arrow-dn-sharp.gif");
   -moz-image-region: auto; /* cut off inheritance */
 }
 
 /* Vertical disabled */
-.autorepeatbutton-up[disabled="true"] {
-  list-style-image: url("chrome://global/skin/scrollbox/autorepeat-arrow-up-dis.gif");
-  -moz-image-region: auto; /* cut off inheritance */
-}
-
-.autorepeatbutton-down[disabled="true"] {
-  list-style-image: url("chrome://global/skin/scrollbox/autorepeat-arrow-dn-dis.gif");
-  -moz-image-region: auto; /* cut off inheritance */
+.autorepeatbutton-up[disabled="true"]:not([orient="horizontal"]),
+.autorepeatbutton-down[disabled="true"]:not([orient="horizontal"]) {
+  -moz-image-region: rect(0, 24px, 10px, 16px);
 }
 
 .scrollbutton-up[disabled="true"] {
   list-style-image: url("chrome://global/skin/arrow/arrow-up-dis.gif");
   -moz-image-region: auto; /* cut off inheritance */
 }
 
 .scrollbutton-down[disabled="true"] {
@@ -71,12 +70,14 @@
 }
 
 .scrollbutton-up > .toolbarbutton-text,
 .scrollbutton-down > .toolbarbutton-text {
   display: none;
 }
 
 autorepeatbutton {
+  list-style-image: url("chrome://global/skin/menu/menu-arrow.png");
+  -moz-image-region: rect(0, 8px, 10px, 0);
   -moz-box-align: center;
   -moz-box-pack: center;
   padding: 1px;
 }
deleted file mode 100644
index 883611b40a036a5caa32c8fee5a5bd4c8badfb10..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 3625a53caa9b884d68ccd692067d5af50f61b14a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index 49f5763173ddfe69a4dd54900ac90865049dda50..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001
deleted file mode 100644
index b245f55177c2fd964be23291ba104343e578425c..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
GIT binary patch
literal 0
Hc$@<O00001